From 5396cce993bdf5287ba80fd0749cdff30c5d69f4 Mon Sep 17 00:00:00 2001 From: batche Date: Mon, 24 Oct 2022 14:15:46 +0200 Subject: [PATCH] =?UTF-8?q?ajout=20du=20mod=C3=A8le=20DTO=20pour=20users,?= =?UTF-8?q?=20et=20d'une=20liste=20blanche=20pour=20emp=C3=AAcher=20les=20?= =?UTF-8?q?payload=20malicieux?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../requirements/nestjs/api_back/dist/main.js | 6 + .../nestjs/api_back/dist/main.js.map | 2 +- .../dist/src/users/dto/update-users.dto.d.ts | 2 + .../dist/src/users/dto/update-users.dto.js | 7 + .../src/users/dto/update-users.dto.js.map | 1 + .../api_back/dist/tsconfig.build.tsbuildinfo | 2 +- .../dist/users/dto/creat-users.dto.d.ts | 5 + .../dist/users/dto/creat-users.dto.js | 7 + .../dist/users/dto/creat-users.dto.js.map | 1 + .../dist/users/dto/create-users.dto.d.ts | 5 + .../dist/users/dto/create-users.dto.js | 29 + .../dist/users/dto/create-users.dto.js.map | 1 + .../dist/users/dto/update-users.dto.d.ts | 5 + .../dist/users/dto/update-users.dto.js | 9 + .../dist/users/dto/update-users.dto.js.map | 1 + .../dist/users/entities/user.entity.d.ts | 1 + .../dist/users/entities/user.entity.js.map | 2 +- .../api_back/dist/users/users.controller.d.ts | 6 +- .../api_back/dist/users/users.controller.js | 14 +- .../dist/users/users.controller.js.map | 2 +- .../api_back/dist/users/users.service.js | 8 +- .../api_back/dist/users/users.service.js.map | 2 +- .../dist/users/users/dto/creat-users.dto.d.ts | 2 + .../dist/users/users/dto/creat-users.dto.js | 7 + .../users/users/dto/creat-users.dto.js.map | 1 + .../users/users/dto/create-users.dto.d.ts | 4 + .../dist/users/users/dto/create-users.dto.js | 7 + .../users/users/dto/create-users.dto.js.map | 1 + .../api_back/node_modules/.package-lock.json | 51 + .../@nestjs/mapped-types/.commitlintrc.json | 28 + .../@nestjs/mapped-types/.eslintignore | 3 + .../@nestjs/mapped-types/.eslintrc.js | 28 + .../@nestjs/mapped-types/.release-it.json | 8 + .../node_modules/@nestjs/mapped-types/LICENSE | 22 + .../@nestjs/mapped-types/README.md | 70 + .../@nestjs/mapped-types/dist/index.d.ts | 6 + .../@nestjs/mapped-types/dist/index.js | 23 + .../dist/intersection-type.helper.d.ts | 9 + .../dist/intersection-type.helper.js | 23 + .../dist/mapped-type.interface.d.ts | 4 + .../dist/mapped-type.interface.js | 2 + .../mapped-types/dist/omit-type.helper.d.ts | 3 + .../mapped-types/dist/omit-type.helper.js | 16 + .../dist/partial-type.helper.d.ts | 3 + .../mapped-types/dist/partial-type.helper.js | 23 + .../mapped-types/dist/pick-type.helper.d.ts | 3 + .../mapped-types/dist/pick-type.helper.js | 16 + .../mapped-types/dist/type-helpers.utils.d.ts | 5 + .../mapped-types/dist/type-helpers.utils.js | 127 + .../@nestjs/mapped-types/index.d.ts | 1 + .../@nestjs/mapped-types/index.js | 6 + .../@nestjs/mapped-types/package.json | 73 + .../node_modules/@types/validator/LICENSE | 21 + .../node_modules/@types/validator/README.md | 16 + .../@types/validator/es/lib/blacklist.d.ts | 2 + .../@types/validator/es/lib/contains.d.ts | 2 + .../@types/validator/es/lib/equals.d.ts | 2 + .../@types/validator/es/lib/escape.d.ts | 2 + .../@types/validator/es/lib/isAfter.d.ts | 2 + .../@types/validator/es/lib/isAlpha.d.ts | 3 + .../validator/es/lib/isAlphanumeric.d.ts | 3 + .../@types/validator/es/lib/isAscii.d.ts | 2 + .../@types/validator/es/lib/isBIC.d.ts | 2 + .../@types/validator/es/lib/isBase32.d.ts | 2 + .../@types/validator/es/lib/isBase58.d.ts | 2 + .../@types/validator/es/lib/isBase64.d.ts | 2 + .../@types/validator/es/lib/isBefore.d.ts | 2 + .../@types/validator/es/lib/isBoolean.d.ts | 3 + .../@types/validator/es/lib/isBtcAddress.d.ts | 2 + .../@types/validator/es/lib/isByteLength.d.ts | 3 + .../@types/validator/es/lib/isCreditCard.d.ts | 2 + .../@types/validator/es/lib/isCurrency.d.ts | 3 + .../@types/validator/es/lib/isDataURI.d.ts | 2 + .../@types/validator/es/lib/isDate.d.ts | 2 + .../@types/validator/es/lib/isDecimal.d.ts | 4 + .../validator/es/lib/isDivisibleBy.d.ts | 2 + .../@types/validator/es/lib/isEAN.d.ts | 2 + .../@types/validator/es/lib/isEmail.d.ts | 3 + .../@types/validator/es/lib/isEmpty.d.ts | 3 + .../validator/es/lib/isEthereumAddress.d.ts | 2 + .../@types/validator/es/lib/isFQDN.d.ts | 3 + .../@types/validator/es/lib/isFloat.d.ts | 4 + .../@types/validator/es/lib/isFullWidth.d.ts | 2 + .../@types/validator/es/lib/isHSL.d.ts | 2 + .../@types/validator/es/lib/isHalfWidth.d.ts | 2 + .../@types/validator/es/lib/isHash.d.ts | 3 + .../@types/validator/es/lib/isHexColor.d.ts | 2 + .../validator/es/lib/isHexadecimal.d.ts | 2 + .../@types/validator/es/lib/isIBAN.d.ts | 3 + .../@types/validator/es/lib/isIP.d.ts | 3 + .../@types/validator/es/lib/isIPRange.d.ts | 3 + .../@types/validator/es/lib/isISBN.d.ts | 3 + .../@types/validator/es/lib/isISIN.d.ts | 2 + .../validator/es/lib/isISO31661Alpha2.d.ts | 3 + .../validator/es/lib/isISO31661Alpha3.d.ts | 2 + .../@types/validator/es/lib/isISO4217.d.ts | 3 + .../@types/validator/es/lib/isISO8601.d.ts | 3 + .../@types/validator/es/lib/isISRC.d.ts | 2 + .../@types/validator/es/lib/isISSN.d.ts | 3 + .../validator/es/lib/isIdentityCard.d.ts | 3 + .../@types/validator/es/lib/isIn.d.ts | 2 + .../@types/validator/es/lib/isInt.d.ts | 3 + .../@types/validator/es/lib/isJSON.d.ts | 2 + .../@types/validator/es/lib/isJWT.d.ts | 2 + .../@types/validator/es/lib/isLatLong.d.ts | 2 + .../@types/validator/es/lib/isLength.d.ts | 3 + .../@types/validator/es/lib/isLocale.d.ts | 2 + .../@types/validator/es/lib/isLowercase.d.ts | 2 + .../@types/validator/es/lib/isMACAddress.d.ts | 3 + .../@types/validator/es/lib/isMD5.d.ts | 2 + .../@types/validator/es/lib/isMagnetURI.d.ts | 2 + .../@types/validator/es/lib/isMimeType.d.ts | 2 + .../validator/es/lib/isMobilePhone.d.ts | 4 + .../@types/validator/es/lib/isMongoId.d.ts | 2 + .../@types/validator/es/lib/isMultibyte.d.ts | 2 + .../@types/validator/es/lib/isNumeric.d.ts | 3 + .../@types/validator/es/lib/isOctal.d.ts | 2 + .../validator/es/lib/isPassportNumber.d.ts | 2 + .../@types/validator/es/lib/isPort.d.ts | 2 + .../@types/validator/es/lib/isPostalCode.d.ts | 3 + .../@types/validator/es/lib/isRFC3339.d.ts | 2 + .../@types/validator/es/lib/isRgbColor.d.ts | 2 + .../@types/validator/es/lib/isSemVer.d.ts | 2 + .../@types/validator/es/lib/isSlug.d.ts | 2 + .../validator/es/lib/isStrongPassword.d.ts | 2 + .../validator/es/lib/isSurrogatePair.d.ts | 2 + .../@types/validator/es/lib/isTaxID.d.ts | 2 + .../@types/validator/es/lib/isURL.d.ts | 3 + .../@types/validator/es/lib/isUUID.d.ts | 3 + .../@types/validator/es/lib/isUppercase.d.ts | 2 + .../@types/validator/es/lib/isVAT.d.ts | 2 + .../validator/es/lib/isVariableWidth.d.ts | 2 + .../validator/es/lib/isWhitelisted.d.ts | 2 + .../@types/validator/es/lib/ltrim.d.ts | 2 + .../@types/validator/es/lib/matches.d.ts | 2 + .../validator/es/lib/normalizeEmail.d.ts | 3 + .../@types/validator/es/lib/rtrim.d.ts | 2 + .../@types/validator/es/lib/stripLow.d.ts | 2 + .../@types/validator/es/lib/toBoolean.d.ts | 2 + .../@types/validator/es/lib/toDate.d.ts | 2 + .../@types/validator/es/lib/toFloat.d.ts | 2 + .../@types/validator/es/lib/toInt.d.ts | 2 + .../@types/validator/es/lib/trim.d.ts | 2 + .../@types/validator/es/lib/unescape.d.ts | 2 + .../@types/validator/es/lib/whitelist.d.ts | 2 + .../node_modules/@types/validator/index.d.ts | 1315 ++ .../@types/validator/lib/blacklist.d.ts | 2 + .../@types/validator/lib/contains.d.ts | 2 + .../@types/validator/lib/equals.d.ts | 2 + .../@types/validator/lib/escape.d.ts | 2 + .../@types/validator/lib/isAfter.d.ts | 2 + .../@types/validator/lib/isAlpha.d.ts | 3 + .../@types/validator/lib/isAlphanumeric.d.ts | 3 + .../@types/validator/lib/isAscii.d.ts | 2 + .../@types/validator/lib/isBIC.d.ts | 2 + .../@types/validator/lib/isBase32.d.ts | 2 + .../@types/validator/lib/isBase58.d.ts | 2 + .../@types/validator/lib/isBase64.d.ts | 2 + .../@types/validator/lib/isBefore.d.ts | 2 + .../@types/validator/lib/isBoolean.d.ts | 14 + .../@types/validator/lib/isBtcAddress.d.ts | 2 + .../@types/validator/lib/isByteLength.d.ts | 3 + .../@types/validator/lib/isCreditCard.d.ts | 2 + .../@types/validator/lib/isCurrency.d.ts | 3 + .../@types/validator/lib/isDataURI.d.ts | 2 + .../@types/validator/lib/isDate.d.ts | 2 + .../@types/validator/lib/isDecimal.d.ts | 4 + .../@types/validator/lib/isDivisibleBy.d.ts | 2 + .../@types/validator/lib/isEAN.d.ts | 2 + .../@types/validator/lib/isEmail.d.ts | 63 + .../@types/validator/lib/isEmpty.d.ts | 3 + .../validator/lib/isEthereumAddress.d.ts | 2 + .../@types/validator/lib/isFQDN.d.ts | 30 + .../@types/validator/lib/isFloat.d.ts | 4 + .../@types/validator/lib/isFullWidth.d.ts | 2 + .../@types/validator/lib/isHSL.d.ts | 2 + .../@types/validator/lib/isHalfWidth.d.ts | 2 + .../@types/validator/lib/isHash.d.ts | 3 + .../@types/validator/lib/isHexColor.d.ts | 2 + .../@types/validator/lib/isHexadecimal.d.ts | 2 + .../@types/validator/lib/isIBAN.d.ts | 84 + .../@types/validator/lib/isIP.d.ts | 3 + .../@types/validator/lib/isIPRange.d.ts | 3 + .../@types/validator/lib/isISBN.d.ts | 3 + .../@types/validator/lib/isISIN.d.ts | 2 + .../validator/lib/isISO31661Alpha2.d.ts | 256 + .../validator/lib/isISO31661Alpha3.d.ts | 2 + .../@types/validator/lib/isISO4217.d.ts | 186 + .../@types/validator/lib/isISO8601.d.ts | 3 + .../@types/validator/lib/isISRC.d.ts | 2 + .../@types/validator/lib/isISSN.d.ts | 3 + .../@types/validator/lib/isIdentityCard.d.ts | 3 + .../@types/validator/lib/isIn.d.ts | 2 + .../@types/validator/lib/isInt.d.ts | 3 + .../@types/validator/lib/isJSON.d.ts | 2 + .../@types/validator/lib/isJWT.d.ts | 2 + .../@types/validator/lib/isLatLong.d.ts | 2 + .../@types/validator/lib/isLength.d.ts | 3 + .../@types/validator/lib/isLocale.d.ts | 2 + .../@types/validator/lib/isLowercase.d.ts | 2 + .../@types/validator/lib/isMACAddress.d.ts | 3 + .../@types/validator/lib/isMD5.d.ts | 2 + .../@types/validator/lib/isMagnetURI.d.ts | 2 + .../@types/validator/lib/isMimeType.d.ts | 2 + .../@types/validator/lib/isMobilePhone.d.ts | 4 + .../@types/validator/lib/isMongoId.d.ts | 2 + .../@types/validator/lib/isMultibyte.d.ts | 2 + .../@types/validator/lib/isNumeric.d.ts | 3 + .../@types/validator/lib/isOctal.d.ts | 2 + .../validator/lib/isPassportNumber.d.ts | 2 + .../@types/validator/lib/isPort.d.ts | 2 + .../@types/validator/lib/isPostalCode.d.ts | 3 + .../@types/validator/lib/isRFC3339.d.ts | 2 + .../@types/validator/lib/isRgbColor.d.ts | 2 + .../@types/validator/lib/isSemVer.d.ts | 2 + .../@types/validator/lib/isSlug.d.ts | 2 + .../validator/lib/isStrongPassword.d.ts | 2 + .../@types/validator/lib/isSurrogatePair.d.ts | 2 + .../@types/validator/lib/isTaxID.d.ts | 9 + .../@types/validator/lib/isURL.d.ts | 66 + .../@types/validator/lib/isUUID.d.ts | 3 + .../@types/validator/lib/isUppercase.d.ts | 2 + .../@types/validator/lib/isVAT.d.ts | 2 + .../@types/validator/lib/isVariableWidth.d.ts | 2 + .../@types/validator/lib/isWhitelisted.d.ts | 2 + .../@types/validator/lib/ltrim.d.ts | 2 + .../@types/validator/lib/matches.d.ts | 2 + .../@types/validator/lib/normalizeEmail.d.ts | 3 + .../@types/validator/lib/rtrim.d.ts | 2 + .../@types/validator/lib/stripLow.d.ts | 2 + .../@types/validator/lib/toBoolean.d.ts | 2 + .../@types/validator/lib/toDate.d.ts | 2 + .../@types/validator/lib/toFloat.d.ts | 2 + .../@types/validator/lib/toInt.d.ts | 2 + .../@types/validator/lib/trim.d.ts | 2 + .../@types/validator/lib/unescape.d.ts | 2 + .../@types/validator/lib/whitelist.d.ts | 2 + .../@types/validator/package.json | 75 + .../node_modules/class-transformer/LICENSE | 21 + .../node_modules/class-transformer/README.md | 901 ++ .../bundles/class-transformer.umd.js | 1056 ++ .../bundles/class-transformer.umd.js.map | 1 + .../bundles/class-transformer.umd.min.js | 2 + .../bundles/class-transformer.umd.min.js.map | 1 + .../class-transformer/cjs/ClassTransformer.js | 69 + .../cjs/ClassTransformer.js.map | 1 + .../class-transformer/cjs/MetadataStorage.js | 211 + .../cjs/MetadataStorage.js.map | 1 + .../cjs/TransformOperationExecutor.js | 480 + .../cjs/TransformOperationExecutor.js.map | 1 + .../cjs/constants/default-options.constant.js | 20 + .../constants/default-options.constant.js.map | 1 + .../cjs/decorators/exclude.decorator.js | 28 + .../cjs/decorators/exclude.decorator.js.map | 1 + .../cjs/decorators/expose.decorator.js | 28 + .../cjs/decorators/expose.decorator.js.map | 1 + .../class-transformer/cjs/decorators/index.js | 20 + .../cjs/decorators/index.js.map | 1 + ...ransform-instance-to-instance.decorator.js | 24 + ...form-instance-to-instance.decorator.js.map | 1 + .../transform-instance-to-plain.decorator.js | 24 + ...ansform-instance-to-plain.decorator.js.map | 1 + .../transform-plain-to-instance.decorator.js | 24 + ...ansform-plain-to-instance.decorator.js.map | 1 + .../cjs/decorators/transform.decorator.js | 21 + .../cjs/decorators/transform.decorator.js.map | 1 + .../cjs/decorators/type.decorator.js | 24 + .../cjs/decorators/type.decorator.js.map | 1 + .../class-transformer/cjs/enums/index.js | 14 + .../class-transformer/cjs/enums/index.js.map | 1 + .../cjs/enums/transformation-type.enum.js | 10 + .../cjs/enums/transformation-type.enum.js.map | 1 + .../class-transformer/cjs/index.js | 82 + .../class-transformer/cjs/index.js.map | 1 + .../cjs/interfaces/class-constructor.type.js | 3 + .../interfaces/class-constructor.type.js.map | 1 + .../class-transformer-options.interface.js | 3 + ...class-transformer-options.interface.js.map | 1 + .../exclude-options.interface.js | 3 + .../exclude-options.interface.js.map | 1 + .../expose-options.interface.js | 3 + .../expose-options.interface.js.map | 1 + .../transform-options.interface.js | 3 + .../transform-options.interface.js.map | 1 + ...type-discriminator-descriptor.interface.js | 3 + ...-discriminator-descriptor.interface.js.map | 1 + .../type-options.interface.js | 3 + .../type-options.interface.js.map | 1 + .../class-transformer/cjs/interfaces/index.js | 27 + .../cjs/interfaces/index.js.map | 1 + .../metadata/exclude-metadata.interface.js | 3 + .../exclude-metadata.interface.js.map | 1 + .../metadata/expose-metadata.interface.js | 3 + .../metadata/expose-metadata.interface.js.map | 1 + .../metadata/transform-fn-params.interface.js | 3 + .../transform-fn-params.interface.js.map | 1 + .../metadata/transform-metadata.interface.js | 3 + .../transform-metadata.interface.js.map | 1 + .../metadata/type-metadata.interface.js | 3 + .../metadata/type-metadata.interface.js.map | 1 + .../cjs/interfaces/target-map.interface.js | 3 + .../interfaces/target-map.interface.js.map | 1 + .../interfaces/type-help-options.interface.js | 3 + .../type-help-options.interface.js.map | 1 + .../class-transformer/cjs/storage.js | 9 + .../class-transformer/cjs/storage.js.map | 1 + .../cjs/utils/get-global.util.js | 33 + .../cjs/utils/get-global.util.js.map | 1 + .../cjs/utils/get-global.util.spect.js | 15 + .../cjs/utils/get-global.util.spect.js.map | 1 + .../class-transformer/cjs/utils/index.js | 15 + .../class-transformer/cjs/utils/index.js.map | 1 + .../cjs/utils/is-promise.util.js | 8 + .../cjs/utils/is-promise.util.js.map | 1 + .../esm2015/ClassTransformer.js | 65 + .../esm2015/ClassTransformer.js.map | 1 + .../esm2015/MetadataStorage.js | 207 + .../esm2015/MetadataStorage.js.map | 1 + .../esm2015/TransformOperationExecutor.js | 476 + .../esm2015/TransformOperationExecutor.js.map | 1 + .../constants/default-options.constant.js | 17 + .../constants/default-options.constant.js.map | 1 + .../esm2015/decorators/exclude.decorator.js | 24 + .../decorators/exclude.decorator.js.map | 1 + .../esm2015/decorators/expose.decorator.js | 24 + .../decorators/expose.decorator.js.map | 1 + .../esm2015/decorators/index.js | 8 + .../esm2015/decorators/index.js.map | 1 + ...ransform-instance-to-instance.decorator.js | 20 + ...form-instance-to-instance.decorator.js.map | 1 + .../transform-instance-to-plain.decorator.js | 20 + ...ansform-instance-to-plain.decorator.js.map | 1 + .../transform-plain-to-instance.decorator.js | 20 + ...ansform-plain-to-instance.decorator.js.map | 1 + .../esm2015/decorators/transform.decorator.js | 17 + .../decorators/transform.decorator.js.map | 1 + .../esm2015/decorators/type.decorator.js | 20 + .../esm2015/decorators/type.decorator.js.map | 1 + .../class-transformer/esm2015/enums/index.js | 2 + .../esm2015/enums/index.js.map | 1 + .../esm2015/enums/transformation-type.enum.js | 7 + .../enums/transformation-type.enum.js.map | 1 + .../class-transformer/esm2015/index.js | 57 + .../class-transformer/esm2015/index.js.map | 1 + .../interfaces/class-constructor.type.js | 2 + .../interfaces/class-constructor.type.js.map | 1 + .../class-transformer-options.interface.js | 2 + ...class-transformer-options.interface.js.map | 1 + .../exclude-options.interface.js | 2 + .../exclude-options.interface.js.map | 1 + .../expose-options.interface.js | 2 + .../expose-options.interface.js.map | 1 + .../transform-options.interface.js | 2 + .../transform-options.interface.js.map | 1 + ...type-discriminator-descriptor.interface.js | 2 + ...-discriminator-descriptor.interface.js.map | 1 + .../type-options.interface.js | 2 + .../type-options.interface.js.map | 1 + .../esm2015/interfaces/index.js | 15 + .../esm2015/interfaces/index.js.map | 1 + .../metadata/exclude-metadata.interface.js | 2 + .../exclude-metadata.interface.js.map | 1 + .../metadata/expose-metadata.interface.js | 2 + .../metadata/expose-metadata.interface.js.map | 1 + .../metadata/transform-fn-params.interface.js | 2 + .../transform-fn-params.interface.js.map | 1 + .../metadata/transform-metadata.interface.js | 2 + .../transform-metadata.interface.js.map | 1 + .../metadata/type-metadata.interface.js | 2 + .../metadata/type-metadata.interface.js.map | 1 + .../interfaces/target-map.interface.js | 2 + .../interfaces/target-map.interface.js.map | 1 + .../interfaces/type-help-options.interface.js | 2 + .../type-help-options.interface.js.map | 1 + .../class-transformer/esm2015/storage.js | 6 + .../class-transformer/esm2015/storage.js.map | 1 + .../esm2015/utils/get-global.util.js | 29 + .../esm2015/utils/get-global.util.js.map | 1 + .../esm2015/utils/get-global.util.spect.js | 13 + .../utils/get-global.util.spect.js.map | 1 + .../class-transformer/esm2015/utils/index.js | 3 + .../esm2015/utils/index.js.map | 1 + .../esm2015/utils/is-promise.util.js | 4 + .../esm2015/utils/is-promise.util.js.map | 1 + .../esm5/ClassTransformer.js | 62 + .../esm5/ClassTransformer.js.map | 1 + .../class-transformer/esm5/MetadataStorage.js | 212 + .../esm5/MetadataStorage.js.map | 1 + .../esm5/TransformOperationExecutor.js | 499 + .../esm5/TransformOperationExecutor.js.map | 1 + .../constants/default-options.constant.js | 17 + .../constants/default-options.constant.js.map | 1 + .../esm5/decorators/exclude.decorator.js | 25 + .../esm5/decorators/exclude.decorator.js.map | 1 + .../esm5/decorators/expose.decorator.js | 25 + .../esm5/decorators/expose.decorator.js.map | 1 + .../esm5/decorators/index.js | 8 + .../esm5/decorators/index.js.map | 1 + ...ransform-instance-to-instance.decorator.js | 24 + ...form-instance-to-instance.decorator.js.map | 1 + .../transform-instance-to-plain.decorator.js | 24 + ...ansform-instance-to-plain.decorator.js.map | 1 + .../transform-plain-to-instance.decorator.js | 24 + ...ansform-plain-to-instance.decorator.js.map | 1 + .../esm5/decorators/transform.decorator.js | 18 + .../decorators/transform.decorator.js.map | 1 + .../esm5/decorators/type.decorator.js | 21 + .../esm5/decorators/type.decorator.js.map | 1 + .../class-transformer/esm5/enums/index.js | 2 + .../class-transformer/esm5/enums/index.js.map | 1 + .../esm5/enums/transformation-type.enum.js | 7 + .../enums/transformation-type.enum.js.map | 1 + .../class-transformer/esm5/index.js | 57 + .../class-transformer/esm5/index.js.map | 1 + .../esm5/interfaces/class-constructor.type.js | 2 + .../interfaces/class-constructor.type.js.map | 1 + .../class-transformer-options.interface.js | 2 + ...class-transformer-options.interface.js.map | 1 + .../exclude-options.interface.js | 2 + .../exclude-options.interface.js.map | 1 + .../expose-options.interface.js | 2 + .../expose-options.interface.js.map | 1 + .../transform-options.interface.js | 2 + .../transform-options.interface.js.map | 1 + ...type-discriminator-descriptor.interface.js | 2 + ...-discriminator-descriptor.interface.js.map | 1 + .../type-options.interface.js | 2 + .../type-options.interface.js.map | 1 + .../esm5/interfaces/index.js | 15 + .../esm5/interfaces/index.js.map | 1 + .../metadata/exclude-metadata.interface.js | 2 + .../exclude-metadata.interface.js.map | 1 + .../metadata/expose-metadata.interface.js | 2 + .../metadata/expose-metadata.interface.js.map | 1 + .../metadata/transform-fn-params.interface.js | 2 + .../transform-fn-params.interface.js.map | 1 + .../metadata/transform-metadata.interface.js | 2 + .../transform-metadata.interface.js.map | 1 + .../metadata/type-metadata.interface.js | 2 + .../metadata/type-metadata.interface.js.map | 1 + .../esm5/interfaces/target-map.interface.js | 2 + .../interfaces/target-map.interface.js.map | 1 + .../interfaces/type-help-options.interface.js | 2 + .../type-help-options.interface.js.map | 1 + .../class-transformer/esm5/storage.js | 6 + .../class-transformer/esm5/storage.js.map | 1 + .../esm5/utils/get-global.util.js | 29 + .../esm5/utils/get-global.util.js.map | 1 + .../esm5/utils/get-global.util.spect.js | 13 + .../esm5/utils/get-global.util.spect.js.map | 1 + .../class-transformer/esm5/utils/index.js | 3 + .../class-transformer/esm5/utils/index.js.map | 1 + .../esm5/utils/is-promise.util.js | 4 + .../esm5/utils/is-promise.util.js.map | 1 + .../class-transformer/package.json | 38 + .../types/ClassTransformer.d.ts | 53 + .../types/MetadataStorage.d.ts | 31 + .../types/TransformOperationExecutor.d.ts | 15 + .../constants/default-options.constant.d.ts | 5 + .../types/decorators/exclude.decorator.d.ts | 9 + .../types/decorators/expose.decorator.d.ts | 9 + .../types/decorators/index.d.ts | 7 + ...nsform-instance-to-instance.decorator.d.ts | 7 + ...transform-instance-to-plain.decorator.d.ts | 7 + ...transform-plain-to-instance.decorator.d.ts | 7 + .../types/decorators/transform.decorator.d.ts | 7 + .../types/decorators/type.decorator.d.ts | 8 + .../class-transformer/types/enums/index.d.ts | 1 + .../types/enums/transformation-type.enum.d.ts | 5 + .../class-transformer/types/index.d.ts | 91 + .../interfaces/class-constructor.type.d.ts | 3 + .../class-transformer-options.interface.d.ts | 68 + .../exclude-options.interface.d.ts | 13 + .../expose-options.interface.d.ts | 46 + .../transform-options.interface.d.ts | 42 + ...pe-discriminator-descriptor.interface.d.ts | 26 + .../type-options.interface.d.ts | 18 + .../types/interfaces/index.d.ts | 14 + .../metadata/exclude-metadata.interface.d.ts | 17 + .../metadata/expose-metadata.interface.d.ts | 17 + .../transform-fn-params.interface.d.ts | 9 + .../transform-metadata.interface.d.ts | 20 + .../metadata/type-metadata.interface.d.ts | 24 + .../interfaces/target-map.interface.d.ts | 16 + .../type-help-options.interface.d.ts | 5 + .../class-transformer/types/storage.d.ts | 5 + .../types/utils/get-global.util.d.ts | 7 + .../types/utils/get-global.util.spect.d.ts | 1 + .../class-transformer/types/utils/index.d.ts | 2 + .../types/utils/is-promise.util.d.ts | 1 + .../node_modules/class-validator/LICENSE | 22 + .../node_modules/class-validator/README.md | 1014 ++ .../bundles/class-validator.umd.js | 10414 ++++++++++++++++ .../bundles/class-validator.umd.js.map | 1 + .../bundles/class-validator.umd.min.js | 2 + .../bundles/class-validator.umd.min.js.map | 1 + .../class-validator/cjs/container.js | 51 + .../class-validator/cjs/container.js.map | 1 + .../cjs/decorator/ValidationOptions.js | 11 + .../cjs/decorator/ValidationOptions.js.map | 1 + .../cjs/decorator/array/ArrayContains.js | 31 + .../cjs/decorator/array/ArrayContains.js.map | 1 + .../cjs/decorator/array/ArrayMaxSize.js | 29 + .../cjs/decorator/array/ArrayMaxSize.js.map | 1 + .../cjs/decorator/array/ArrayMinSize.js | 29 + .../cjs/decorator/array/ArrayMinSize.js.map | 1 + .../cjs/decorator/array/ArrayNotContains.js | 31 + .../decorator/array/ArrayNotContains.js.map | 1 + .../cjs/decorator/array/ArrayNotEmpty.js | 28 + .../cjs/decorator/array/ArrayNotEmpty.js.map | 1 + .../cjs/decorator/array/ArrayUnique.js | 36 + .../cjs/decorator/array/ArrayUnique.js.map | 1 + .../cjs/decorator/common/Allow.js | 22 + .../cjs/decorator/common/Allow.js.map | 1 + .../cjs/decorator/common/Equals.js | 27 + .../cjs/decorator/common/Equals.js.map | 1 + .../cjs/decorator/common/IsDefined.js | 28 + .../cjs/decorator/common/IsDefined.js.map | 1 + .../cjs/decorator/common/IsEmpty.js | 26 + .../cjs/decorator/common/IsEmpty.js.map | 1 + .../cjs/decorator/common/IsIn.js | 27 + .../cjs/decorator/common/IsIn.js.map | 1 + .../cjs/decorator/common/IsLatLong.js | 30 + .../cjs/decorator/common/IsLatLong.js.map | 1 + .../cjs/decorator/common/IsLatitude.js | 27 + .../cjs/decorator/common/IsLatitude.js.map | 1 + .../cjs/decorator/common/IsLongitude.js | 27 + .../cjs/decorator/common/IsLongitude.js.map | 1 + .../cjs/decorator/common/IsNotEmpty.js | 26 + .../cjs/decorator/common/IsNotEmpty.js.map | 1 + .../cjs/decorator/common/IsNotIn.js | 27 + .../cjs/decorator/common/IsNotIn.js.map | 1 + .../cjs/decorator/common/IsOptional.js | 27 + .../cjs/decorator/common/IsOptional.js.map | 1 + .../cjs/decorator/common/NotEquals.js | 27 + .../cjs/decorator/common/NotEquals.js.map | 1 + .../cjs/decorator/common/Validate.js | 42 + .../cjs/decorator/common/Validate.js.map | 1 + .../cjs/decorator/common/ValidateBy.js | 25 + .../cjs/decorator/common/ValidateBy.js.map | 1 + .../cjs/decorator/common/ValidateIf.js | 23 + .../cjs/decorator/common/ValidateIf.js.map | 1 + .../cjs/decorator/common/ValidateNested.js | 25 + .../decorator/common/ValidateNested.js.map | 1 + .../cjs/decorator/common/ValidatePromise.js | 22 + .../decorator/common/ValidatePromise.js.map | 1 + .../cjs/decorator/date/MaxDate.js | 27 + .../cjs/decorator/date/MaxDate.js.map | 1 + .../cjs/decorator/date/MinDate.js | 27 + .../cjs/decorator/date/MinDate.js.map | 1 + .../cjs/decorator/decorators.js | 143 + .../cjs/decorator/decorators.js.map | 1 + .../cjs/decorator/number/IsDivisibleBy.js | 31 + .../cjs/decorator/number/IsDivisibleBy.js.map | 1 + .../cjs/decorator/number/IsNegative.js | 26 + .../cjs/decorator/number/IsNegative.js.map | 1 + .../cjs/decorator/number/IsPositive.js | 26 + .../cjs/decorator/number/IsPositive.js.map | 1 + .../cjs/decorator/number/Max.js | 27 + .../cjs/decorator/number/Max.js.map | 1 + .../cjs/decorator/number/Min.js | 27 + .../cjs/decorator/number/Min.js.map | 1 + .../cjs/decorator/object/IsInstance.js | 34 + .../cjs/decorator/object/IsInstance.js.map | 1 + .../cjs/decorator/object/IsNotEmptyObject.js | 41 + .../decorator/object/IsNotEmptyObject.js.map | 1 + .../cjs/decorator/string/Contains.js | 33 + .../cjs/decorator/string/Contains.js.map | 1 + .../cjs/decorator/string/IsAlpha.js | 33 + .../cjs/decorator/string/IsAlpha.js.map | 1 + .../cjs/decorator/string/IsAlphanumeric.js | 33 + .../decorator/string/IsAlphanumeric.js.map | 1 + .../cjs/decorator/string/IsAscii.js | 32 + .../cjs/decorator/string/IsAscii.js.map | 1 + .../cjs/decorator/string/IsBIC.js | 32 + .../cjs/decorator/string/IsBIC.js.map | 1 + .../cjs/decorator/string/IsBase32.js | 32 + .../cjs/decorator/string/IsBase32.js.map | 1 + .../cjs/decorator/string/IsBase64.js | 32 + .../cjs/decorator/string/IsBase64.js.map | 1 + .../cjs/decorator/string/IsBooleanString.js | 32 + .../decorator/string/IsBooleanString.js.map | 1 + .../cjs/decorator/string/IsBtcAddress.js | 32 + .../cjs/decorator/string/IsBtcAddress.js.map | 1 + .../cjs/decorator/string/IsByteLength.js | 33 + .../cjs/decorator/string/IsByteLength.js.map | 1 + .../cjs/decorator/string/IsCreditCard.js | 32 + .../cjs/decorator/string/IsCreditCard.js.map | 1 + .../cjs/decorator/string/IsCurrency.js | 33 + .../cjs/decorator/string/IsCurrency.js.map | 1 + .../cjs/decorator/string/IsDataURI.js | 32 + .../cjs/decorator/string/IsDataURI.js.map | 1 + .../cjs/decorator/string/IsDateString.js | 28 + .../cjs/decorator/string/IsDateString.js.map | 1 + .../cjs/decorator/string/IsDecimal.js | 33 + .../cjs/decorator/string/IsDecimal.js.map | 1 + .../cjs/decorator/string/IsEAN.js | 32 + .../cjs/decorator/string/IsEAN.js.map | 1 + .../cjs/decorator/string/IsEmail.js | 33 + .../cjs/decorator/string/IsEmail.js.map | 1 + .../cjs/decorator/string/IsEthereumAddress.js | 32 + .../decorator/string/IsEthereumAddress.js.map | 1 + .../cjs/decorator/string/IsFQDN.js | 33 + .../cjs/decorator/string/IsFQDN.js.map | 1 + .../cjs/decorator/string/IsFirebasePushId.js | 29 + .../decorator/string/IsFirebasePushId.js.map | 1 + .../cjs/decorator/string/IsFullWidth.js | 32 + .../cjs/decorator/string/IsFullWidth.js.map | 1 + .../cjs/decorator/string/IsHSL.js | 34 + .../cjs/decorator/string/IsHSL.js.map | 1 + .../cjs/decorator/string/IsHalfWidth.js | 32 + .../cjs/decorator/string/IsHalfWidth.js.map | 1 + .../cjs/decorator/string/IsHash.js | 35 + .../cjs/decorator/string/IsHash.js.map | 1 + .../cjs/decorator/string/IsHexColor.js | 32 + .../cjs/decorator/string/IsHexColor.js.map | 1 + .../cjs/decorator/string/IsHexadecimal.js | 32 + .../cjs/decorator/string/IsHexadecimal.js.map | 1 + .../cjs/decorator/string/IsIBAN.js | 32 + .../cjs/decorator/string/IsIBAN.js.map | 1 + .../cjs/decorator/string/IsIP.js | 35 + .../cjs/decorator/string/IsIP.js.map | 1 + .../cjs/decorator/string/IsISBN.js | 35 + .../cjs/decorator/string/IsISBN.js.map | 1 + .../cjs/decorator/string/IsISIN.js | 32 + .../cjs/decorator/string/IsISIN.js.map | 1 + .../cjs/decorator/string/IsISO31661Alpha2.js | 30 + .../decorator/string/IsISO31661Alpha2.js.map | 1 + .../cjs/decorator/string/IsISO31661Alpha3.js | 30 + .../decorator/string/IsISO31661Alpha3.js.map | 1 + .../cjs/decorator/string/IsISO8601.js | 35 + .../cjs/decorator/string/IsISO8601.js.map | 1 + .../cjs/decorator/string/IsISRC.js | 32 + .../cjs/decorator/string/IsISRC.js.map | 1 + .../cjs/decorator/string/IsISSN.js | 33 + .../cjs/decorator/string/IsISSN.js.map | 1 + .../cjs/decorator/string/IsIdentityCard.js | 37 + .../decorator/string/IsIdentityCard.js.map | 1 + .../cjs/decorator/string/IsJSON.js | 32 + .../cjs/decorator/string/IsJSON.js.map | 1 + .../cjs/decorator/string/IsJWT.js | 32 + .../cjs/decorator/string/IsJWT.js.map | 1 + .../cjs/decorator/string/IsLocale.js | 32 + .../cjs/decorator/string/IsLocale.js.map | 1 + .../cjs/decorator/string/IsLowercase.js | 32 + .../cjs/decorator/string/IsLowercase.js.map | 1 + .../cjs/decorator/string/IsMacAddress.js | 34 + .../cjs/decorator/string/IsMacAddress.js.map | 1 + .../cjs/decorator/string/IsMagnetURI.js | 32 + .../cjs/decorator/string/IsMagnetURI.js.map | 1 + .../cjs/decorator/string/IsMilitaryTime.js | 33 + .../decorator/string/IsMilitaryTime.js.map | 1 + .../cjs/decorator/string/IsMimeType.js | 32 + .../cjs/decorator/string/IsMimeType.js.map | 1 + .../cjs/decorator/string/IsMobilePhone.js | 49 + .../cjs/decorator/string/IsMobilePhone.js.map | 1 + .../cjs/decorator/string/IsMongoId.js | 32 + .../cjs/decorator/string/IsMongoId.js.map | 1 + .../cjs/decorator/string/IsMultibyte.js | 32 + .../cjs/decorator/string/IsMultibyte.js.map | 1 + .../cjs/decorator/string/IsNumberString.js | 33 + .../decorator/string/IsNumberString.js.map | 1 + .../cjs/decorator/string/IsOctal.js | 32 + .../cjs/decorator/string/IsOctal.js.map | 1 + .../cjs/decorator/string/IsPassportNumber.js | 33 + .../decorator/string/IsPassportNumber.js.map | 1 + .../cjs/decorator/string/IsPhoneNumber.js | 45 + .../cjs/decorator/string/IsPhoneNumber.js.map | 1 + .../cjs/decorator/string/IsPort.js | 30 + .../cjs/decorator/string/IsPort.js.map | 1 + .../cjs/decorator/string/IsPostalCode.js | 35 + .../cjs/decorator/string/IsPostalCode.js.map | 1 + .../cjs/decorator/string/IsRFC3339.js | 32 + .../cjs/decorator/string/IsRFC3339.js.map | 1 + .../cjs/decorator/string/IsRgbColor.js | 35 + .../cjs/decorator/string/IsRgbColor.js.map | 1 + .../cjs/decorator/string/IsSemVer.js | 32 + .../cjs/decorator/string/IsSemVer.js.map | 1 + .../cjs/decorator/string/IsSurrogatePair.js | 32 + .../decorator/string/IsSurrogatePair.js.map | 1 + .../cjs/decorator/string/IsUUID.js | 33 + .../cjs/decorator/string/IsUUID.js.map | 1 + .../cjs/decorator/string/IsUppercase.js | 32 + .../cjs/decorator/string/IsUppercase.js.map | 1 + .../cjs/decorator/string/IsUrl.js | 33 + .../cjs/decorator/string/IsUrl.js.map | 1 + .../cjs/decorator/string/IsVariableWidth.js | 32 + .../decorator/string/IsVariableWidth.js.map | 1 + .../cjs/decorator/string/Length.js | 44 + .../cjs/decorator/string/Length.js.map | 1 + .../cjs/decorator/string/Matches.js | 32 + .../cjs/decorator/string/Matches.js.map | 1 + .../cjs/decorator/string/MaxLength.js | 33 + .../cjs/decorator/string/MaxLength.js.map | 1 + .../cjs/decorator/string/MinLength.js | 33 + .../cjs/decorator/string/MinLength.js.map | 1 + .../cjs/decorator/string/NotContains.js | 33 + .../cjs/decorator/string/NotContains.js.map | 1 + .../cjs/decorator/typechecker/IsArray.js | 26 + .../cjs/decorator/typechecker/IsArray.js.map | 1 + .../cjs/decorator/typechecker/IsBoolean.js | 26 + .../decorator/typechecker/IsBoolean.js.map | 1 + .../cjs/decorator/typechecker/IsDate.js | 26 + .../cjs/decorator/typechecker/IsDate.js.map | 1 + .../cjs/decorator/typechecker/IsEnum.js | 28 + .../cjs/decorator/typechecker/IsEnum.js.map | 1 + .../cjs/decorator/typechecker/IsInt.js | 26 + .../cjs/decorator/typechecker/IsInt.js.map | 1 + .../cjs/decorator/typechecker/IsNumber.js | 45 + .../cjs/decorator/typechecker/IsNumber.js.map | 1 + .../cjs/decorator/typechecker/IsObject.js | 28 + .../cjs/decorator/typechecker/IsObject.js.map | 1 + .../cjs/decorator/typechecker/IsString.js | 26 + .../cjs/decorator/typechecker/IsString.js.map | 1 + .../node_modules/class-validator/cjs/index.js | 77 + .../class-validator/cjs/index.js.map | 1 + .../cjs/metadata/ConstraintMetadata.js | 28 + .../cjs/metadata/ConstraintMetadata.js.map | 1 + .../cjs/metadata/MetadataStorage.js | 137 + .../cjs/metadata/MetadataStorage.js.map | 1 + .../cjs/metadata/ValidationMetadata.js | 40 + .../cjs/metadata/ValidationMetadata.js.map | 1 + .../cjs/metadata/ValidationMetadataArgs.js | 3 + .../metadata/ValidationMetadataArgs.js.map | 1 + .../class-validator/cjs/register-decorator.js | 47 + .../cjs/register-decorator.js.map | 1 + .../cjs/utils/convert-to-array.util.js | 14 + .../cjs/utils/convert-to-array.util.js.map | 1 + .../cjs/utils/get-global.util.js | 33 + .../cjs/utils/get-global.util.js.map | 1 + .../class-validator/cjs/utils/index.js | 16 + .../class-validator/cjs/utils/index.js.map | 1 + .../cjs/utils/is-promise.util.js | 9 + .../cjs/utils/is-promise.util.js.map | 1 + .../cjs/validation-schema/ValidationSchema.js | 3 + .../validation-schema/ValidationSchema.js.map | 1 + .../ValidationSchemaToMetadataTransformer.js | 34 + ...lidationSchemaToMetadataTransformer.js.map | 1 + .../cjs/validation/ValidationArguments.js | 3 + .../cjs/validation/ValidationArguments.js.map | 1 + .../cjs/validation/ValidationError.js | 44 + .../cjs/validation/ValidationError.js.map | 1 + .../cjs/validation/ValidationExecutor.js | 322 + .../cjs/validation/ValidationExecutor.js.map | 1 + .../cjs/validation/ValidationTypes.js | 27 + .../cjs/validation/ValidationTypes.js.map | 1 + .../cjs/validation/ValidationUtils.js | 41 + .../cjs/validation/ValidationUtils.js.map | 1 + .../cjs/validation/Validator.js | 56 + .../cjs/validation/Validator.js.map | 1 + .../ValidatorConstraintInterface.js | 3 + .../ValidatorConstraintInterface.js.map | 1 + .../cjs/validation/ValidatorOptions.js | 3 + .../cjs/validation/ValidatorOptions.js.map | 1 + .../class-validator/esm2015/container.js | 46 + .../class-validator/esm2015/container.js.map | 1 + .../esm2015/decorator/ValidationOptions.js | 7 + .../decorator/ValidationOptions.js.map | 1 + .../esm2015/decorator/array/ArrayContains.js | 26 + .../decorator/array/ArrayContains.js.map | 1 + .../esm2015/decorator/array/ArrayMaxSize.js | 24 + .../decorator/array/ArrayMaxSize.js.map | 1 + .../esm2015/decorator/array/ArrayMinSize.js | 24 + .../decorator/array/ArrayMinSize.js.map | 1 + .../decorator/array/ArrayNotContains.js | 26 + .../decorator/array/ArrayNotContains.js.map | 1 + .../esm2015/decorator/array/ArrayNotEmpty.js | 23 + .../decorator/array/ArrayNotEmpty.js.map | 1 + .../esm2015/decorator/array/ArrayUnique.js | 31 + .../decorator/array/ArrayUnique.js.map | 1 + .../esm2015/decorator/common/Allow.js | 18 + .../esm2015/decorator/common/Allow.js.map | 1 + .../esm2015/decorator/common/Equals.js | 22 + .../esm2015/decorator/common/Equals.js.map | 1 + .../esm2015/decorator/common/IsDefined.js | 23 + .../esm2015/decorator/common/IsDefined.js.map | 1 + .../esm2015/decorator/common/IsEmpty.js | 21 + .../esm2015/decorator/common/IsEmpty.js.map | 1 + .../esm2015/decorator/common/IsIn.js | 22 + .../esm2015/decorator/common/IsIn.js.map | 1 + .../esm2015/decorator/common/IsLatLong.js | 22 + .../esm2015/decorator/common/IsLatLong.js.map | 1 + .../esm2015/decorator/common/IsLatitude.js | 22 + .../decorator/common/IsLatitude.js.map | 1 + .../esm2015/decorator/common/IsLongitude.js | 22 + .../decorator/common/IsLongitude.js.map | 1 + .../esm2015/decorator/common/IsNotEmpty.js | 21 + .../decorator/common/IsNotEmpty.js.map | 1 + .../esm2015/decorator/common/IsNotIn.js | 22 + .../esm2015/decorator/common/IsNotIn.js.map | 1 + .../esm2015/decorator/common/IsOptional.js | 23 + .../decorator/common/IsOptional.js.map | 1 + .../esm2015/decorator/common/NotEquals.js | 22 + .../esm2015/decorator/common/NotEquals.js.map | 1 + .../esm2015/decorator/common/Validate.js | 37 + .../esm2015/decorator/common/Validate.js.map | 1 + .../esm2015/decorator/common/ValidateBy.js | 20 + .../decorator/common/ValidateBy.js.map | 1 + .../esm2015/decorator/common/ValidateIf.js | 19 + .../decorator/common/ValidateIf.js.map | 1 + .../decorator/common/ValidateNested.js | 21 + .../decorator/common/ValidateNested.js.map | 1 + .../decorator/common/ValidatePromise.js | 18 + .../decorator/common/ValidatePromise.js.map | 1 + .../esm2015/decorator/date/MaxDate.js | 22 + .../esm2015/decorator/date/MaxDate.js.map | 1 + .../esm2015/decorator/date/MinDate.js | 22 + .../esm2015/decorator/date/MinDate.js.map | 1 + .../esm2015/decorator/decorators.js | 131 + .../esm2015/decorator/decorators.js.map | 1 + .../esm2015/decorator/number/IsDivisibleBy.js | 23 + .../decorator/number/IsDivisibleBy.js.map | 1 + .../esm2015/decorator/number/IsNegative.js | 21 + .../decorator/number/IsNegative.js.map | 1 + .../esm2015/decorator/number/IsPositive.js | 21 + .../decorator/number/IsPositive.js.map | 1 + .../esm2015/decorator/number/Max.js | 22 + .../esm2015/decorator/number/Max.js.map | 1 + .../esm2015/decorator/number/Min.js | 22 + .../esm2015/decorator/number/Min.js.map | 1 + .../esm2015/decorator/object/IsInstance.js | 29 + .../decorator/object/IsInstance.js.map | 1 + .../decorator/object/IsNotEmptyObject.js | 36 + .../decorator/object/IsNotEmptyObject.js.map | 1 + .../esm2015/decorator/string/Contains.js | 25 + .../esm2015/decorator/string/Contains.js.map | 1 + .../esm2015/decorator/string/IsAlpha.js | 25 + .../esm2015/decorator/string/IsAlpha.js.map | 1 + .../decorator/string/IsAlphanumeric.js | 25 + .../decorator/string/IsAlphanumeric.js.map | 1 + .../esm2015/decorator/string/IsAscii.js | 24 + .../esm2015/decorator/string/IsAscii.js.map | 1 + .../esm2015/decorator/string/IsBIC.js | 24 + .../esm2015/decorator/string/IsBIC.js.map | 1 + .../esm2015/decorator/string/IsBase32.js | 24 + .../esm2015/decorator/string/IsBase32.js.map | 1 + .../esm2015/decorator/string/IsBase64.js | 24 + .../esm2015/decorator/string/IsBase64.js.map | 1 + .../decorator/string/IsBooleanString.js | 24 + .../decorator/string/IsBooleanString.js.map | 1 + .../esm2015/decorator/string/IsBtcAddress.js | 24 + .../decorator/string/IsBtcAddress.js.map | 1 + .../esm2015/decorator/string/IsByteLength.js | 25 + .../decorator/string/IsByteLength.js.map | 1 + .../esm2015/decorator/string/IsCreditCard.js | 24 + .../decorator/string/IsCreditCard.js.map | 1 + .../esm2015/decorator/string/IsCurrency.js | 25 + .../decorator/string/IsCurrency.js.map | 1 + .../esm2015/decorator/string/IsDataURI.js | 24 + .../esm2015/decorator/string/IsDataURI.js.map | 1 + .../esm2015/decorator/string/IsDateString.js | 23 + .../decorator/string/IsDateString.js.map | 1 + .../esm2015/decorator/string/IsDecimal.js | 25 + .../esm2015/decorator/string/IsDecimal.js.map | 1 + .../esm2015/decorator/string/IsEAN.js | 24 + .../esm2015/decorator/string/IsEAN.js.map | 1 + .../esm2015/decorator/string/IsEmail.js | 25 + .../esm2015/decorator/string/IsEmail.js.map | 1 + .../decorator/string/IsEthereumAddress.js | 24 + .../decorator/string/IsEthereumAddress.js.map | 1 + .../esm2015/decorator/string/IsFQDN.js | 25 + .../esm2015/decorator/string/IsFQDN.js.map | 1 + .../decorator/string/IsFirebasePushId.js | 24 + .../decorator/string/IsFirebasePushId.js.map | 1 + .../esm2015/decorator/string/IsFullWidth.js | 24 + .../decorator/string/IsFullWidth.js.map | 1 + .../esm2015/decorator/string/IsHSL.js | 26 + .../esm2015/decorator/string/IsHSL.js.map | 1 + .../esm2015/decorator/string/IsHalfWidth.js | 24 + .../decorator/string/IsHalfWidth.js.map | 1 + .../esm2015/decorator/string/IsHash.js | 27 + .../esm2015/decorator/string/IsHash.js.map | 1 + .../esm2015/decorator/string/IsHexColor.js | 24 + .../decorator/string/IsHexColor.js.map | 1 + .../esm2015/decorator/string/IsHexadecimal.js | 24 + .../decorator/string/IsHexadecimal.js.map | 1 + .../esm2015/decorator/string/IsIBAN.js | 24 + .../esm2015/decorator/string/IsIBAN.js.map | 1 + .../esm2015/decorator/string/IsIP.js | 27 + .../esm2015/decorator/string/IsIP.js.map | 1 + .../esm2015/decorator/string/IsISBN.js | 27 + .../esm2015/decorator/string/IsISBN.js.map | 1 + .../esm2015/decorator/string/IsISIN.js | 24 + .../esm2015/decorator/string/IsISIN.js.map | 1 + .../decorator/string/IsISO31661Alpha2.js | 22 + .../decorator/string/IsISO31661Alpha2.js.map | 1 + .../decorator/string/IsISO31661Alpha3.js | 22 + .../decorator/string/IsISO31661Alpha3.js.map | 1 + .../esm2015/decorator/string/IsISO8601.js | 27 + .../esm2015/decorator/string/IsISO8601.js.map | 1 + .../esm2015/decorator/string/IsISRC.js | 24 + .../esm2015/decorator/string/IsISRC.js.map | 1 + .../esm2015/decorator/string/IsISSN.js | 25 + .../esm2015/decorator/string/IsISSN.js.map | 1 + .../decorator/string/IsIdentityCard.js | 29 + .../decorator/string/IsIdentityCard.js.map | 1 + .../esm2015/decorator/string/IsJSON.js | 24 + .../esm2015/decorator/string/IsJSON.js.map | 1 + .../esm2015/decorator/string/IsJWT.js | 24 + .../esm2015/decorator/string/IsJWT.js.map | 1 + .../esm2015/decorator/string/IsLocale.js | 24 + .../esm2015/decorator/string/IsLocale.js.map | 1 + .../esm2015/decorator/string/IsLowercase.js | 24 + .../decorator/string/IsLowercase.js.map | 1 + .../esm2015/decorator/string/IsMacAddress.js | 26 + .../decorator/string/IsMacAddress.js.map | 1 + .../esm2015/decorator/string/IsMagnetURI.js | 24 + .../decorator/string/IsMagnetURI.js.map | 1 + .../decorator/string/IsMilitaryTime.js | 25 + .../decorator/string/IsMilitaryTime.js.map | 1 + .../esm2015/decorator/string/IsMimeType.js | 24 + .../decorator/string/IsMimeType.js.map | 1 + .../esm2015/decorator/string/IsMobilePhone.js | 41 + .../decorator/string/IsMobilePhone.js.map | 1 + .../esm2015/decorator/string/IsMongoId.js | 24 + .../esm2015/decorator/string/IsMongoId.js.map | 1 + .../esm2015/decorator/string/IsMultibyte.js | 24 + .../decorator/string/IsMultibyte.js.map | 1 + .../decorator/string/IsNumberString.js | 25 + .../decorator/string/IsNumberString.js.map | 1 + .../esm2015/decorator/string/IsOctal.js | 24 + .../esm2015/decorator/string/IsOctal.js.map | 1 + .../decorator/string/IsPassportNumber.js | 25 + .../decorator/string/IsPassportNumber.js.map | 1 + .../esm2015/decorator/string/IsPhoneNumber.js | 40 + .../decorator/string/IsPhoneNumber.js.map | 1 + .../esm2015/decorator/string/IsPort.js | 22 + .../esm2015/decorator/string/IsPort.js.map | 1 + .../esm2015/decorator/string/IsPostalCode.js | 27 + .../decorator/string/IsPostalCode.js.map | 1 + .../esm2015/decorator/string/IsRFC3339.js | 24 + .../esm2015/decorator/string/IsRFC3339.js.map | 1 + .../esm2015/decorator/string/IsRgbColor.js | 27 + .../decorator/string/IsRgbColor.js.map | 1 + .../esm2015/decorator/string/IsSemVer.js | 24 + .../esm2015/decorator/string/IsSemVer.js.map | 1 + .../decorator/string/IsSurrogatePair.js | 24 + .../decorator/string/IsSurrogatePair.js.map | 1 + .../esm2015/decorator/string/IsUUID.js | 25 + .../esm2015/decorator/string/IsUUID.js.map | 1 + .../esm2015/decorator/string/IsUppercase.js | 24 + .../decorator/string/IsUppercase.js.map | 1 + .../esm2015/decorator/string/IsUrl.js | 25 + .../esm2015/decorator/string/IsUrl.js.map | 1 + .../decorator/string/IsVariableWidth.js | 24 + .../decorator/string/IsVariableWidth.js.map | 1 + .../esm2015/decorator/string/Length.js | 36 + .../esm2015/decorator/string/Length.js.map | 1 + .../esm2015/decorator/string/Matches.js | 24 + .../esm2015/decorator/string/Matches.js.map | 1 + .../esm2015/decorator/string/MaxLength.js | 25 + .../esm2015/decorator/string/MaxLength.js.map | 1 + .../esm2015/decorator/string/MinLength.js | 25 + .../esm2015/decorator/string/MinLength.js.map | 1 + .../esm2015/decorator/string/NotContains.js | 25 + .../decorator/string/NotContains.js.map | 1 + .../esm2015/decorator/typechecker/IsArray.js | 21 + .../decorator/typechecker/IsArray.js.map | 1 + .../decorator/typechecker/IsBoolean.js | 21 + .../decorator/typechecker/IsBoolean.js.map | 1 + .../esm2015/decorator/typechecker/IsDate.js | 21 + .../decorator/typechecker/IsDate.js.map | 1 + .../esm2015/decorator/typechecker/IsEnum.js | 23 + .../decorator/typechecker/IsEnum.js.map | 1 + .../esm2015/decorator/typechecker/IsInt.js | 21 + .../decorator/typechecker/IsInt.js.map | 1 + .../esm2015/decorator/typechecker/IsNumber.js | 40 + .../decorator/typechecker/IsNumber.js.map | 1 + .../esm2015/decorator/typechecker/IsObject.js | 23 + .../decorator/typechecker/IsObject.js.map | 1 + .../esm2015/decorator/typechecker/IsString.js | 21 + .../decorator/typechecker/IsString.js.map | 1 + .../class-validator/esm2015/index.js | 60 + .../class-validator/esm2015/index.js.map | 1 + .../esm2015/metadata/ConstraintMetadata.js | 24 + .../metadata/ConstraintMetadata.js.map | 1 + .../esm2015/metadata/MetadataStorage.js | 132 + .../esm2015/metadata/MetadataStorage.js.map | 1 + .../esm2015/metadata/ValidationMetadata.js | 36 + .../metadata/ValidationMetadata.js.map | 1 + .../metadata/ValidationMetadataArgs.js | 2 + .../metadata/ValidationMetadataArgs.js.map | 1 + .../esm2015/register-decorator.js | 43 + .../esm2015/register-decorator.js.map | 1 + .../esm2015/utils/convert-to-array.util.js | 10 + .../utils/convert-to-array.util.js.map | 1 + .../esm2015/utils/get-global.util.js | 29 + .../esm2015/utils/get-global.util.js.map | 1 + .../class-validator/esm2015/utils/index.js | 4 + .../esm2015/utils/index.js.map | 1 + .../esm2015/utils/is-promise.util.js | 5 + .../esm2015/utils/is-promise.util.js.map | 1 + .../validation-schema/ValidationSchema.js | 2 + .../validation-schema/ValidationSchema.js.map | 1 + .../ValidationSchemaToMetadataTransformer.js | 30 + ...lidationSchemaToMetadataTransformer.js.map | 1 + .../esm2015/validation/ValidationArguments.js | 2 + .../validation/ValidationArguments.js.map | 1 + .../esm2015/validation/ValidationError.js | 40 + .../esm2015/validation/ValidationError.js.map | 1 + .../esm2015/validation/ValidationExecutor.js | 318 + .../validation/ValidationExecutor.js.map | 1 + .../esm2015/validation/ValidationTypes.js | 23 + .../esm2015/validation/ValidationTypes.js.map | 1 + .../esm2015/validation/ValidationUtils.js | 36 + .../esm2015/validation/ValidationUtils.js.map | 1 + .../esm2015/validation/Validator.js | 52 + .../esm2015/validation/Validator.js.map | 1 + .../ValidatorConstraintInterface.js | 2 + .../ValidatorConstraintInterface.js.map | 1 + .../esm2015/validation/ValidatorOptions.js | 2 + .../validation/ValidatorOptions.js.map | 1 + .../class-validator/esm5/container.js | 47 + .../class-validator/esm5/container.js.map | 1 + .../esm5/decorator/ValidationOptions.js | 7 + .../esm5/decorator/ValidationOptions.js.map | 1 + .../esm5/decorator/array/ArrayContains.js | 26 + .../esm5/decorator/array/ArrayContains.js.map | 1 + .../esm5/decorator/array/ArrayMaxSize.js | 24 + .../esm5/decorator/array/ArrayMaxSize.js.map | 1 + .../esm5/decorator/array/ArrayMinSize.js | 24 + .../esm5/decorator/array/ArrayMinSize.js.map | 1 + .../esm5/decorator/array/ArrayNotContains.js | 26 + .../decorator/array/ArrayNotContains.js.map | 1 + .../esm5/decorator/array/ArrayNotEmpty.js | 23 + .../esm5/decorator/array/ArrayNotEmpty.js.map | 1 + .../esm5/decorator/array/ArrayUnique.js | 31 + .../esm5/decorator/array/ArrayUnique.js.map | 1 + .../esm5/decorator/common/Allow.js | 18 + .../esm5/decorator/common/Allow.js.map | 1 + .../esm5/decorator/common/Equals.js | 22 + .../esm5/decorator/common/Equals.js.map | 1 + .../esm5/decorator/common/IsDefined.js | 23 + .../esm5/decorator/common/IsDefined.js.map | 1 + .../esm5/decorator/common/IsEmpty.js | 21 + .../esm5/decorator/common/IsEmpty.js.map | 1 + .../esm5/decorator/common/IsIn.js | 22 + .../esm5/decorator/common/IsIn.js.map | 1 + .../esm5/decorator/common/IsLatLong.js | 22 + .../esm5/decorator/common/IsLatLong.js.map | 1 + .../esm5/decorator/common/IsLatitude.js | 22 + .../esm5/decorator/common/IsLatitude.js.map | 1 + .../esm5/decorator/common/IsLongitude.js | 22 + .../esm5/decorator/common/IsLongitude.js.map | 1 + .../esm5/decorator/common/IsNotEmpty.js | 21 + .../esm5/decorator/common/IsNotEmpty.js.map | 1 + .../esm5/decorator/common/IsNotIn.js | 22 + .../esm5/decorator/common/IsNotIn.js.map | 1 + .../esm5/decorator/common/IsOptional.js | 23 + .../esm5/decorator/common/IsOptional.js.map | 1 + .../esm5/decorator/common/NotEquals.js | 22 + .../esm5/decorator/common/NotEquals.js.map | 1 + .../esm5/decorator/common/Validate.js | 37 + .../esm5/decorator/common/Validate.js.map | 1 + .../esm5/decorator/common/ValidateBy.js | 20 + .../esm5/decorator/common/ValidateBy.js.map | 1 + .../esm5/decorator/common/ValidateIf.js | 19 + .../esm5/decorator/common/ValidateIf.js.map | 1 + .../esm5/decorator/common/ValidateNested.js | 32 + .../decorator/common/ValidateNested.js.map | 1 + .../esm5/decorator/common/ValidatePromise.js | 18 + .../decorator/common/ValidatePromise.js.map | 1 + .../esm5/decorator/date/MaxDate.js | 22 + .../esm5/decorator/date/MaxDate.js.map | 1 + .../esm5/decorator/date/MinDate.js | 22 + .../esm5/decorator/date/MinDate.js.map | 1 + .../esm5/decorator/decorators.js | 131 + .../esm5/decorator/decorators.js.map | 1 + .../esm5/decorator/number/IsDivisibleBy.js | 23 + .../decorator/number/IsDivisibleBy.js.map | 1 + .../esm5/decorator/number/IsNegative.js | 21 + .../esm5/decorator/number/IsNegative.js.map | 1 + .../esm5/decorator/number/IsPositive.js | 21 + .../esm5/decorator/number/IsPositive.js.map | 1 + .../esm5/decorator/number/Max.js | 22 + .../esm5/decorator/number/Max.js.map | 1 + .../esm5/decorator/number/Min.js | 22 + .../esm5/decorator/number/Min.js.map | 1 + .../esm5/decorator/object/IsInstance.js | 29 + .../esm5/decorator/object/IsInstance.js.map | 1 + .../esm5/decorator/object/IsNotEmptyObject.js | 36 + .../decorator/object/IsNotEmptyObject.js.map | 1 + .../esm5/decorator/string/Contains.js | 25 + .../esm5/decorator/string/Contains.js.map | 1 + .../esm5/decorator/string/IsAlpha.js | 25 + .../esm5/decorator/string/IsAlpha.js.map | 1 + .../esm5/decorator/string/IsAlphanumeric.js | 25 + .../decorator/string/IsAlphanumeric.js.map | 1 + .../esm5/decorator/string/IsAscii.js | 24 + .../esm5/decorator/string/IsAscii.js.map | 1 + .../esm5/decorator/string/IsBIC.js | 24 + .../esm5/decorator/string/IsBIC.js.map | 1 + .../esm5/decorator/string/IsBase32.js | 24 + .../esm5/decorator/string/IsBase32.js.map | 1 + .../esm5/decorator/string/IsBase64.js | 24 + .../esm5/decorator/string/IsBase64.js.map | 1 + .../esm5/decorator/string/IsBooleanString.js | 24 + .../decorator/string/IsBooleanString.js.map | 1 + .../esm5/decorator/string/IsBtcAddress.js | 24 + .../esm5/decorator/string/IsBtcAddress.js.map | 1 + .../esm5/decorator/string/IsByteLength.js | 25 + .../esm5/decorator/string/IsByteLength.js.map | 1 + .../esm5/decorator/string/IsCreditCard.js | 24 + .../esm5/decorator/string/IsCreditCard.js.map | 1 + .../esm5/decorator/string/IsCurrency.js | 25 + .../esm5/decorator/string/IsCurrency.js.map | 1 + .../esm5/decorator/string/IsDataURI.js | 24 + .../esm5/decorator/string/IsDataURI.js.map | 1 + .../esm5/decorator/string/IsDateString.js | 23 + .../esm5/decorator/string/IsDateString.js.map | 1 + .../esm5/decorator/string/IsDecimal.js | 25 + .../esm5/decorator/string/IsDecimal.js.map | 1 + .../esm5/decorator/string/IsEAN.js | 24 + .../esm5/decorator/string/IsEAN.js.map | 1 + .../esm5/decorator/string/IsEmail.js | 25 + .../esm5/decorator/string/IsEmail.js.map | 1 + .../decorator/string/IsEthereumAddress.js | 24 + .../decorator/string/IsEthereumAddress.js.map | 1 + .../esm5/decorator/string/IsFQDN.js | 25 + .../esm5/decorator/string/IsFQDN.js.map | 1 + .../esm5/decorator/string/IsFirebasePushId.js | 24 + .../decorator/string/IsFirebasePushId.js.map | 1 + .../esm5/decorator/string/IsFullWidth.js | 24 + .../esm5/decorator/string/IsFullWidth.js.map | 1 + .../esm5/decorator/string/IsHSL.js | 26 + .../esm5/decorator/string/IsHSL.js.map | 1 + .../esm5/decorator/string/IsHalfWidth.js | 24 + .../esm5/decorator/string/IsHalfWidth.js.map | 1 + .../esm5/decorator/string/IsHash.js | 27 + .../esm5/decorator/string/IsHash.js.map | 1 + .../esm5/decorator/string/IsHexColor.js | 24 + .../esm5/decorator/string/IsHexColor.js.map | 1 + .../esm5/decorator/string/IsHexadecimal.js | 24 + .../decorator/string/IsHexadecimal.js.map | 1 + .../esm5/decorator/string/IsIBAN.js | 24 + .../esm5/decorator/string/IsIBAN.js.map | 1 + .../esm5/decorator/string/IsIP.js | 27 + .../esm5/decorator/string/IsIP.js.map | 1 + .../esm5/decorator/string/IsISBN.js | 27 + .../esm5/decorator/string/IsISBN.js.map | 1 + .../esm5/decorator/string/IsISIN.js | 24 + .../esm5/decorator/string/IsISIN.js.map | 1 + .../esm5/decorator/string/IsISO31661Alpha2.js | 22 + .../decorator/string/IsISO31661Alpha2.js.map | 1 + .../esm5/decorator/string/IsISO31661Alpha3.js | 22 + .../decorator/string/IsISO31661Alpha3.js.map | 1 + .../esm5/decorator/string/IsISO8601.js | 27 + .../esm5/decorator/string/IsISO8601.js.map | 1 + .../esm5/decorator/string/IsISRC.js | 24 + .../esm5/decorator/string/IsISRC.js.map | 1 + .../esm5/decorator/string/IsISSN.js | 25 + .../esm5/decorator/string/IsISSN.js.map | 1 + .../esm5/decorator/string/IsIdentityCard.js | 29 + .../decorator/string/IsIdentityCard.js.map | 1 + .../esm5/decorator/string/IsJSON.js | 24 + .../esm5/decorator/string/IsJSON.js.map | 1 + .../esm5/decorator/string/IsJWT.js | 24 + .../esm5/decorator/string/IsJWT.js.map | 1 + .../esm5/decorator/string/IsLocale.js | 24 + .../esm5/decorator/string/IsLocale.js.map | 1 + .../esm5/decorator/string/IsLowercase.js | 24 + .../esm5/decorator/string/IsLowercase.js.map | 1 + .../esm5/decorator/string/IsMacAddress.js | 26 + .../esm5/decorator/string/IsMacAddress.js.map | 1 + .../esm5/decorator/string/IsMagnetURI.js | 24 + .../esm5/decorator/string/IsMagnetURI.js.map | 1 + .../esm5/decorator/string/IsMilitaryTime.js | 25 + .../decorator/string/IsMilitaryTime.js.map | 1 + .../esm5/decorator/string/IsMimeType.js | 24 + .../esm5/decorator/string/IsMimeType.js.map | 1 + .../esm5/decorator/string/IsMobilePhone.js | 41 + .../decorator/string/IsMobilePhone.js.map | 1 + .../esm5/decorator/string/IsMongoId.js | 24 + .../esm5/decorator/string/IsMongoId.js.map | 1 + .../esm5/decorator/string/IsMultibyte.js | 24 + .../esm5/decorator/string/IsMultibyte.js.map | 1 + .../esm5/decorator/string/IsNumberString.js | 25 + .../decorator/string/IsNumberString.js.map | 1 + .../esm5/decorator/string/IsOctal.js | 24 + .../esm5/decorator/string/IsOctal.js.map | 1 + .../esm5/decorator/string/IsPassportNumber.js | 25 + .../decorator/string/IsPassportNumber.js.map | 1 + .../esm5/decorator/string/IsPhoneNumber.js | 40 + .../decorator/string/IsPhoneNumber.js.map | 1 + .../esm5/decorator/string/IsPort.js | 22 + .../esm5/decorator/string/IsPort.js.map | 1 + .../esm5/decorator/string/IsPostalCode.js | 27 + .../esm5/decorator/string/IsPostalCode.js.map | 1 + .../esm5/decorator/string/IsRFC3339.js | 24 + .../esm5/decorator/string/IsRFC3339.js.map | 1 + .../esm5/decorator/string/IsRgbColor.js | 27 + .../esm5/decorator/string/IsRgbColor.js.map | 1 + .../esm5/decorator/string/IsSemVer.js | 24 + .../esm5/decorator/string/IsSemVer.js.map | 1 + .../esm5/decorator/string/IsSurrogatePair.js | 24 + .../decorator/string/IsSurrogatePair.js.map | 1 + .../esm5/decorator/string/IsUUID.js | 25 + .../esm5/decorator/string/IsUUID.js.map | 1 + .../esm5/decorator/string/IsUppercase.js | 24 + .../esm5/decorator/string/IsUppercase.js.map | 1 + .../esm5/decorator/string/IsUrl.js | 25 + .../esm5/decorator/string/IsUrl.js.map | 1 + .../esm5/decorator/string/IsVariableWidth.js | 24 + .../decorator/string/IsVariableWidth.js.map | 1 + .../esm5/decorator/string/Length.js | 36 + .../esm5/decorator/string/Length.js.map | 1 + .../esm5/decorator/string/Matches.js | 24 + .../esm5/decorator/string/Matches.js.map | 1 + .../esm5/decorator/string/MaxLength.js | 25 + .../esm5/decorator/string/MaxLength.js.map | 1 + .../esm5/decorator/string/MinLength.js | 25 + .../esm5/decorator/string/MinLength.js.map | 1 + .../esm5/decorator/string/NotContains.js | 25 + .../esm5/decorator/string/NotContains.js.map | 1 + .../esm5/decorator/typechecker/IsArray.js | 21 + .../esm5/decorator/typechecker/IsArray.js.map | 1 + .../esm5/decorator/typechecker/IsBoolean.js | 21 + .../decorator/typechecker/IsBoolean.js.map | 1 + .../esm5/decorator/typechecker/IsDate.js | 21 + .../esm5/decorator/typechecker/IsDate.js.map | 1 + .../esm5/decorator/typechecker/IsEnum.js | 23 + .../esm5/decorator/typechecker/IsEnum.js.map | 1 + .../esm5/decorator/typechecker/IsInt.js | 21 + .../esm5/decorator/typechecker/IsInt.js.map | 1 + .../esm5/decorator/typechecker/IsNumber.js | 42 + .../decorator/typechecker/IsNumber.js.map | 1 + .../esm5/decorator/typechecker/IsObject.js | 23 + .../decorator/typechecker/IsObject.js.map | 1 + .../esm5/decorator/typechecker/IsString.js | 21 + .../decorator/typechecker/IsString.js.map | 1 + .../class-validator/esm5/index.js | 60 + .../class-validator/esm5/index.js.map | 1 + .../esm5/metadata/ConstraintMetadata.js | 31 + .../esm5/metadata/ConstraintMetadata.js.map | 1 + .../esm5/metadata/MetadataStorage.js | 139 + .../esm5/metadata/MetadataStorage.js.map | 1 + .../esm5/metadata/ValidationMetadata.js | 38 + .../esm5/metadata/ValidationMetadata.js.map | 1 + .../esm5/metadata/ValidationMetadataArgs.js | 2 + .../metadata/ValidationMetadataArgs.js.map | 1 + .../esm5/register-decorator.js | 46 + .../esm5/register-decorator.js.map | 1 + .../esm5/utils/convert-to-array.util.js | 10 + .../esm5/utils/convert-to-array.util.js.map | 1 + .../esm5/utils/get-global.util.js | 29 + .../esm5/utils/get-global.util.js.map | 1 + .../class-validator/esm5/utils/index.js | 4 + .../class-validator/esm5/utils/index.js.map | 1 + .../esm5/utils/is-promise.util.js | 5 + .../esm5/utils/is-promise.util.js.map | 1 + .../validation-schema/ValidationSchema.js | 2 + .../validation-schema/ValidationSchema.js.map | 1 + .../ValidationSchemaToMetadataTransformer.js | 34 + ...lidationSchemaToMetadataTransformer.js.map | 1 + .../esm5/validation/ValidationArguments.js | 2 + .../validation/ValidationArguments.js.map | 1 + .../esm5/validation/ValidationError.js | 50 + .../esm5/validation/ValidationError.js.map | 1 + .../esm5/validation/ValidationExecutor.js | 334 + .../esm5/validation/ValidationExecutor.js.map | 1 + .../esm5/validation/ValidationTypes.js | 28 + .../esm5/validation/ValidationTypes.js.map | 1 + .../esm5/validation/ValidationUtils.js | 40 + .../esm5/validation/ValidationUtils.js.map | 1 + .../esm5/validation/Validator.js | 102 + .../esm5/validation/Validator.js.map | 1 + .../ValidatorConstraintInterface.js | 2 + .../ValidatorConstraintInterface.js.map | 1 + .../esm5/validation/ValidatorOptions.js | 2 + .../esm5/validation/ValidatorOptions.js.map | 1 + .../node_modules/class-validator/package.json | 26 + .../class-validator/types/container.d.ts | 25 + .../types/decorator/ValidationOptions.d.ts | 25 + .../types/decorator/array/ArrayContains.d.ts | 12 + .../types/decorator/array/ArrayMaxSize.d.ts | 12 + .../types/decorator/array/ArrayMinSize.d.ts | 12 + .../decorator/array/ArrayNotContains.d.ts | 12 + .../types/decorator/array/ArrayNotEmpty.d.ts | 12 + .../types/decorator/array/ArrayUnique.d.ts | 13 + .../types/decorator/common/Allow.d.ts | 5 + .../types/decorator/common/Equals.d.ts | 10 + .../types/decorator/common/IsDefined.d.ts | 10 + .../types/decorator/common/IsEmpty.d.ts | 10 + .../types/decorator/common/IsIn.d.ts | 10 + .../types/decorator/common/IsLatLong.d.ts | 10 + .../types/decorator/common/IsLatitude.d.ts | 10 + .../types/decorator/common/IsLongitude.d.ts | 10 + .../types/decorator/common/IsNotEmpty.d.ts | 10 + .../types/decorator/common/IsNotIn.d.ts | 10 + .../types/decorator/common/IsOptional.d.ts | 5 + .../types/decorator/common/NotEquals.d.ts | 10 + .../types/decorator/common/Validate.d.ts | 14 + .../types/decorator/common/ValidateBy.d.ts | 11 + .../types/decorator/common/ValidateIf.d.ts | 5 + .../decorator/common/ValidateNested.d.ts | 5 + .../decorator/common/ValidatePromise.d.ts | 5 + .../types/decorator/date/MaxDate.d.ts | 10 + .../types/decorator/date/MinDate.d.ts | 10 + .../types/decorator/decorators.d.ts | 106 + .../types/decorator/number/IsDivisibleBy.d.ts | 10 + .../types/decorator/number/IsNegative.d.ts | 10 + .../types/decorator/number/IsPositive.d.ts | 10 + .../types/decorator/number/Max.d.ts | 10 + .../types/decorator/number/Min.d.ts | 10 + .../types/decorator/object/IsInstance.d.ts | 10 + .../decorator/object/IsNotEmptyObject.d.ts | 16 + .../types/decorator/string/Contains.d.ts | 12 + .../types/decorator/string/IsAlpha.d.ts | 13 + .../decorator/string/IsAlphanumeric.d.ts | 13 + .../types/decorator/string/IsAscii.d.ts | 12 + .../types/decorator/string/IsBIC.d.ts | 12 + .../types/decorator/string/IsBase32.d.ts | 12 + .../types/decorator/string/IsBase64.d.ts | 12 + .../decorator/string/IsBooleanString.d.ts | 12 + .../types/decorator/string/IsBtcAddress.d.ts | 12 + .../types/decorator/string/IsByteLength.d.ts | 12 + .../types/decorator/string/IsCreditCard.d.ts | 12 + .../types/decorator/string/IsCurrency.d.ts | 13 + .../types/decorator/string/IsDataURI.d.ts | 12 + .../types/decorator/string/IsDateString.d.ts | 11 + .../types/decorator/string/IsDecimal.d.ts | 13 + .../types/decorator/string/IsEAN.d.ts | 12 + .../types/decorator/string/IsEmail.d.ts | 13 + .../decorator/string/IsEthereumAddress.d.ts | 12 + .../types/decorator/string/IsFQDN.d.ts | 13 + .../decorator/string/IsFirebasePushId.d.ts | 12 + .../types/decorator/string/IsFullWidth.d.ts | 12 + .../types/decorator/string/IsHSL.d.ts | 14 + .../types/decorator/string/IsHalfWidth.d.ts | 12 + .../types/decorator/string/IsHash.d.ts | 15 + .../types/decorator/string/IsHexColor.d.ts | 12 + .../types/decorator/string/IsHexadecimal.d.ts | 12 + .../types/decorator/string/IsIBAN.d.ts | 12 + .../types/decorator/string/IsIP.d.ts | 13 + .../types/decorator/string/IsISBN.d.ts | 13 + .../types/decorator/string/IsISIN.d.ts | 12 + .../decorator/string/IsISO31661Alpha2.d.ts | 10 + .../decorator/string/IsISO31661Alpha3.d.ts | 10 + .../types/decorator/string/IsISO8601.d.ts | 15 + .../types/decorator/string/IsISRC.d.ts | 12 + .../types/decorator/string/IsISSN.d.ts | 13 + .../decorator/string/IsIdentityCard.d.ts | 17 + .../types/decorator/string/IsJSON.d.ts | 12 + .../types/decorator/string/IsJWT.d.ts | 12 + .../types/decorator/string/IsLocale.d.ts | 12 + .../types/decorator/string/IsLowercase.d.ts | 12 + .../types/decorator/string/IsMacAddress.d.ts | 14 + .../types/decorator/string/IsMagnetURI.d.ts | 12 + .../decorator/string/IsMilitaryTime.d.ts | 12 + .../types/decorator/string/IsMimeType.d.ts | 12 + .../types/decorator/string/IsMobilePhone.d.ts | 29 + .../types/decorator/string/IsMongoId.d.ts | 12 + .../types/decorator/string/IsMultibyte.d.ts | 12 + .../decorator/string/IsNumberString.d.ts | 13 + .../types/decorator/string/IsOctal.d.ts | 12 + .../decorator/string/IsPassportNumber.d.ts | 12 + .../types/decorator/string/IsPhoneNumber.d.ts | 20 + .../types/decorator/string/IsPort.d.ts | 10 + .../types/decorator/string/IsPostalCode.d.ts | 15 + .../types/decorator/string/IsRFC3339.d.ts | 12 + .../types/decorator/string/IsRgbColor.d.ts | 14 + .../types/decorator/string/IsSemVer.d.ts | 12 + .../decorator/string/IsSurrogatePair.d.ts | 12 + .../types/decorator/string/IsUUID.d.ts | 13 + .../types/decorator/string/IsUppercase.d.ts | 12 + .../types/decorator/string/IsUrl.d.ts | 13 + .../decorator/string/IsVariableWidth.d.ts | 12 + .../types/decorator/string/Length.d.ts | 12 + .../types/decorator/string/Matches.d.ts | 14 + .../types/decorator/string/MaxLength.d.ts | 12 + .../types/decorator/string/MinLength.d.ts | 12 + .../types/decorator/string/NotContains.d.ts | 12 + .../types/decorator/typechecker/IsArray.d.ts | 10 + .../decorator/typechecker/IsBoolean.d.ts | 10 + .../types/decorator/typechecker/IsDate.d.ts | 10 + .../types/decorator/typechecker/IsEnum.d.ts | 10 + .../types/decorator/typechecker/IsInt.d.ts | 10 + .../types/decorator/typechecker/IsNumber.d.ts | 18 + .../types/decorator/typechecker/IsObject.d.ts | 12 + .../types/decorator/typechecker/IsString.d.ts | 10 + .../class-validator/types/index.d.ts | 47 + .../types/metadata/ConstraintMetadata.d.ts | 23 + .../types/metadata/MetadataStorage.d.ts | 42 + .../types/metadata/ValidationMetadata.d.ts | 49 + .../metadata/ValidationMetadataArgs.d.ts | 34 + .../types/register-decorator.d.ts | 36 + .../types/utils/convert-to-array.util.d.ts | 4 + .../types/utils/get-global.util.d.ts | 7 + .../class-validator/types/utils/index.d.ts | 3 + .../types/utils/is-promise.util.d.ts | 1 + .../validation-schema/ValidationSchema.d.ts | 53 + ...ValidationSchemaToMetadataTransformer.d.ts | 8 + .../types/validation/ValidationArguments.d.ts | 26 + .../types/validation/ValidationError.d.ts | 41 + .../types/validation/ValidationExecutor.d.ts | 28 + .../types/validation/ValidationTypes.d.ts | 15 + .../types/validation/ValidationUtils.d.ts | 8 + .../types/validation/Validator.d.ts | 37 + .../ValidatorConstraintInterface.d.ts | 14 + .../types/validation/ValidatorOptions.d.ts | 70 + .../node_modules/libphonenumber-js/.babelrc | 21 + .../libphonenumber-js/.gitlab-ci.yml | 16 + .../node_modules/libphonenumber-js/.nycrc | 27 + .../node_modules/libphonenumber-js/AUTHORS | 5 + .../libphonenumber-js/CHANGELOG.md | 614 + .../node_modules/libphonenumber-js/LICENSE | 22 + .../libphonenumber-js/LICENSE.Apache | 176 + .../libphonenumber-js/METADATA.md | 145 + .../node_modules/libphonenumber-js/README.md | 1782 +++ .../libphonenumber-js/autoupdate.cmd | 6 + .../libphonenumber-js/autoupdate.sh | 16 + .../libphonenumber-js/build/AsYouType.js | 512 + .../libphonenumber-js/build/AsYouType.js.map | 1 + .../libphonenumber-js/build/AsYouType.test.js | 1253 ++ .../build/AsYouType.test.js.map | 1 + .../AsYouTypeFormatter.PatternMatcher.js | 264 + .../AsYouTypeFormatter.PatternMatcher.js.map | 1 + .../AsYouTypeFormatter.PatternMatcher.test.js | 502 + ...ouTypeFormatter.PatternMatcher.test.js.map | 1 + .../build/AsYouTypeFormatter.PatternParser.js | 241 + .../AsYouTypeFormatter.PatternParser.js.map | 1 + .../AsYouTypeFormatter.PatternParser.test.js | 49 + ...YouTypeFormatter.PatternParser.test.js.map | 1 + .../build/AsYouTypeFormatter.complete.js | 133 + .../build/AsYouTypeFormatter.complete.js.map | 1 + .../build/AsYouTypeFormatter.js | 774 ++ .../build/AsYouTypeFormatter.js.map | 1 + .../build/AsYouTypeFormatter.util.js | 141 + .../build/AsYouTypeFormatter.util.js.map | 1 + .../build/AsYouTypeFormatter.util.test.js | 23 + .../build/AsYouTypeFormatter.util.test.js.map | 1 + .../build/AsYouTypeParser.js | 524 + .../build/AsYouTypeParser.js.map | 1 + .../libphonenumber-js/build/AsYouTypeState.js | 125 + .../build/AsYouTypeState.js.map | 1 + .../libphonenumber-js/build/ParseError.js | 63 + .../libphonenumber-js/build/ParseError.js.map | 1 + .../libphonenumber-js/build/PhoneNumber.js | 153 + .../build/PhoneNumber.js.map | 1 + .../build/PhoneNumber.test.js | 52 + .../build/PhoneNumber.test.js.map | 1 + .../build/PhoneNumberMatcher.js | 388 + .../build/PhoneNumberMatcher.js.map | 1 + .../build/PhoneNumberMatcher.test.js | 79 + .../build/PhoneNumberMatcher.test.js.map | 1 + .../libphonenumber-js/build/constants.js | 39 + .../libphonenumber-js/build/constants.js.map | 1 + .../libphonenumber-js/build/findNumbers.js | 22 + .../build/findNumbers.js.map | 1 + .../build/findNumbers.test.js | 194 + .../build/findNumbers.test.js.map | 1 + .../build/findNumbers/LRUCache.js | 134 + .../build/findNumbers/LRUCache.js.map | 1 + .../build/findNumbers/Leniency.js | 335 + .../build/findNumbers/Leniency.js.map | 1 + .../build/findNumbers/Leniency.test.js | 37 + .../build/findNumbers/Leniency.test.js.map | 1 + .../build/findNumbers/RegExpCache.js | 47 + .../build/findNumbers/RegExpCache.js.map | 1 + .../build/findNumbers/isValidCandidate.js | 80 + .../build/findNumbers/isValidCandidate.js.map | 1 + .../build/findNumbers/isValidPreCandidate.js | 34 + .../findNumbers/isValidPreCandidate.js.map | 1 + .../build/findNumbers/parsePreCandidate.js | 26 + .../findNumbers/parsePreCandidate.js.map | 1 + .../build/findNumbers/utf-8.js | 76 + .../build/findNumbers/utf-8.js.map | 1 + .../build/findNumbers/util.js | 42 + .../build/findNumbers/util.js.map | 1 + .../build/findNumbers/util.test.js | 38 + .../build/findNumbers/util.test.js.map | 1 + .../libphonenumber-js/build/findNumbers_.js | 22 + .../build/findNumbers_.js.map | 1 + .../build/findPhoneNumbers.js | 42 + .../build/findPhoneNumbers.js.map | 1 + .../build/findPhoneNumbers.test.js | 240 + .../build/findPhoneNumbers.test.js.map | 1 + .../build/findPhoneNumbersInText.js | 69 + .../build/findPhoneNumbersInText.js.map | 1 + .../build/findPhoneNumbersInText.test.js | 53 + .../build/findPhoneNumbersInText.test.js.map | 1 + .../build/findPhoneNumbers_.js | 222 + .../build/findPhoneNumbers_.js.map | 1 + .../libphonenumber-js/build/format.js | 128 + .../libphonenumber-js/build/format.js.map | 1 + .../libphonenumber-js/build/format.test.js | 284 + .../build/format.test.js.map | 1 + .../build/formatIncompletePhoneNumber.js | 28 + .../build/formatIncompletePhoneNumber.js.map | 1 + .../build/formatIncompletePhoneNumber.test.js | 22 + .../formatIncompletePhoneNumber.test.js.map | 1 + .../build/formatNumberForMobileDialing.js | 205 + .../build/formatNumberForMobileDialing.js.map | 1 + .../formatNumberForMobileDialing.test.js | 15 + .../formatNumberForMobileDialing.test.js.map | 1 + .../libphonenumber-js/build/format_.js | 203 + .../libphonenumber-js/build/format_.js.map | 1 + .../libphonenumber-js/build/getCountries.js | 15 + .../build/getCountries.js.map | 1 + .../build/getCountries.test.js | 14 + .../build/getCountries.test.js.map | 1 + .../build/getCountryCallingCode.js | 14 + .../build/getCountryCallingCode.js.map | 1 + .../build/getCountryCallingCode.test.js | 19 + .../build/getCountryCallingCode.test.js.map | 1 + .../build/getExampleNumber.js | 17 + .../build/getExampleNumber.js.map | 1 + .../build/getExampleNumber.test.js | 23 + .../build/getExampleNumber.test.js.map | 1 + .../libphonenumber-js/build/getNumberType.js | 128 + .../build/getNumberType.js.map | 1 + .../build/getNumberType.test.js | 81 + .../build/getNumberType.test.js.map | 1 + .../build/helpers/RFC3966.js | 102 + .../build/helpers/RFC3966.js.map | 1 + .../build/helpers/RFC3966.test.js | 41 + .../build/helpers/RFC3966.test.js.map | 1 + .../applyInternationalSeparatorStyle.js | 43 + .../applyInternationalSeparatorStyle.js.map | 1 + .../applyInternationalSeparatorStyle.test.js | 13 + ...plyInternationalSeparatorStyle.test.js.map | 1 + .../build/helpers/checkNumberLength.js | 92 + .../build/helpers/checkNumberLength.js.map | 1 + .../build/helpers/checkNumberLength.test.js | 48 + .../helpers/checkNumberLength.test.js.map | 1 + .../extension/createExtensionPattern.js | 116 + .../extension/createExtensionPattern.js.map | 1 + .../helpers/extension/extractExtension.js | 42 + .../helpers/extension/extractExtension.js.map | 1 + .../helpers/extractCountryCallingCode.js | 114 + .../helpers/extractCountryCallingCode.js.map | 1 + .../helpers/extractCountryCallingCode.test.js | 22 + .../extractCountryCallingCode.test.js.map | 1 + ...eFromInternationalNumberWithoutPlusSign.js | 63 + ...mInternationalNumberWithoutPlusSign.js.map | 1 + .../build/helpers/extractNationalNumber.js | 123 + .../helpers/extractNationalNumber.js.map | 1 + .../helpers/extractNationalNumber.test.js | 23 + .../helpers/extractNationalNumber.test.js.map | 1 + ...ionalNumberFromPossiblyIncompleteNumber.js | 114 + ...lNumberFromPossiblyIncompleteNumber.js.map | 1 + ...NumberFromPossiblyIncompleteNumber.test.js | 22 + ...erFromPossiblyIncompleteNumber.test.js.map | 1 + .../formatNationalNumberUsingFormat.js | 46 + .../formatNationalNumberUsingFormat.js.map | 1 + .../build/helpers/getCountryByCallingCode.js | 71 + .../helpers/getCountryByCallingCode.js.map | 1 + .../build/helpers/getIddPrefix.js | 36 + .../build/helpers/getIddPrefix.js.map | 1 + .../build/helpers/getNumberType.js | 103 + .../build/helpers/getNumberType.js.map | 1 + .../build/helpers/getNumberType.test.js | 21 + .../build/helpers/getNumberType.test.js.map | 1 + .../build/helpers/isViablePhoneNumber.js | 85 + .../build/helpers/isViablePhoneNumber.js.map | 1 + .../build/helpers/matchesEntirely.js | 19 + .../build/helpers/matchesEntirely.js.map | 1 + .../build/helpers/matchesEntirely.test.js | 15 + .../build/helpers/matchesEntirely.test.js.map | 1 + .../build/helpers/mergeArrays.js | 40 + .../build/helpers/mergeArrays.js.map | 1 + .../build/helpers/mergeArrays.test.js | 12 + .../build/helpers/mergeArrays.test.js.map | 1 + .../build/helpers/parseDigits.js | 133 + .../build/helpers/parseDigits.js.map | 1 + .../build/helpers/parseDigits.test.js | 12 + .../build/helpers/parseDigits.test.js.map | 1 + .../build/helpers/stripIddPrefix.js | 46 + .../build/helpers/stripIddPrefix.js.map | 1 + .../build/helpers/stripIddPrefix.test.js | 23 + .../build/helpers/stripIddPrefix.test.js.map | 1 + .../build/isPossibleNumber.js | 36 + .../build/isPossibleNumber.js.map | 1 + .../build/isPossibleNumber.test.js | 83 + .../build/isPossibleNumber.test.js.map | 1 + .../build/isPossibleNumber_.js | 83 + .../build/isPossibleNumber_.js.map | 1 + .../build/isPossiblePhoneNumber.js | 32 + .../build/isPossiblePhoneNumber.js.map | 1 + .../build/isPossiblePhoneNumber.test.js | 40 + .../build/isPossiblePhoneNumber.test.js.map | 1 + .../build/isValidNumberForRegion.js | 42 + .../build/isValidNumberForRegion.js.map | 1 + .../build/isValidNumberForRegion.test.js | 43 + .../build/isValidNumberForRegion.test.js.map | 1 + .../build/isValidNumberForRegion_.js | 23 + .../build/isValidNumberForRegion_.js.map | 1 + .../build/isValidPhoneNumber.js | 32 + .../build/isValidPhoneNumber.js.map | 1 + .../build/isValidPhoneNumber.test.js | 32 + .../build/isValidPhoneNumber.test.js.map | 1 + .../libphonenumber-js/build/metadata.js | 679 + .../libphonenumber-js/build/metadata.js.map | 1 + .../libphonenumber-js/build/metadata.test.js | 194 + .../build/metadata.test.js.map | 1 + .../libphonenumber-js/build/package.json | 5 + .../libphonenumber-js/build/parse.js | 48 + .../libphonenumber-js/build/parse.js.map | 1 + .../libphonenumber-js/build/parse.test.js | 568 + .../libphonenumber-js/build/parse.test.js.map | 1 + .../build/parseIncompletePhoneNumber.js | 75 + .../build/parseIncompletePhoneNumber.js.map | 1 + .../build/parseIncompletePhoneNumber.test.js | 36 + .../parseIncompletePhoneNumber.test.js.map | 1 + .../build/parsePhoneNumber.js | 99 + .../build/parsePhoneNumber.js.map | 1 + .../build/parsePhoneNumber.test.js | 142 + .../build/parsePhoneNumber.test.js.map | 1 + .../build/parsePhoneNumberFromString.js | 22 + .../build/parsePhoneNumberFromString.js.map | 1 + .../build/parsePhoneNumberFromString.test.js | 92 + .../parsePhoneNumberFromString.test.js.map | 1 + .../build/parsePhoneNumberFromString_.js | 41 + .../build/parsePhoneNumberFromString_.js.map | 1 + .../build/parsePhoneNumber_.js | 23 + .../build/parsePhoneNumber_.js.map | 1 + .../libphonenumber-js/build/parse_.js | 371 + .../libphonenumber-js/build/parse_.js.map | 1 + .../libphonenumber-js/build/searchNumbers.js | 43 + .../build/searchNumbers.js.map | 1 + .../build/searchNumbers.test.js | 39 + .../build/searchNumbers.test.js.map | 1 + .../build/searchPhoneNumbersInText.js | 18 + .../build/searchPhoneNumbersInText.js.map | 1 + .../build/searchPhoneNumbersInText.test.js | 35 + .../searchPhoneNumbersInText.test.js.map | 1 + .../build/tools/semver-compare.js | 37 + .../build/tools/semver-compare.js.map | 1 + .../build/tools/semver-compare.test.js | 13 + .../build/tools/semver-compare.test.js.map | 1 + .../libphonenumber-js/build/validate.js | 23 + .../libphonenumber-js/build/validate.js.map | 1 + .../libphonenumber-js/build/validate.test.js | 96 + .../build/validate.test.js.map | 1 + .../build/validatePhoneNumberLength.js | 54 + .../build/validatePhoneNumberLength.js.map | 1 + .../build/validatePhoneNumberLength.test.js | 37 + .../validatePhoneNumberLength.test.js.map | 1 + .../libphonenumber-js/build/validate_.js | 68 + .../libphonenumber-js/build/validate_.js.map | 1 + .../bundle/libphonenumber-js.min.js | 2 + .../bundle/libphonenumber-js.min.js.map | 1 + .../bundle/libphonenumber-max.js | 2 + .../bundle/libphonenumber-max.js.map | 1 + .../bundle/libphonenumber-min.js | 2 + .../bundle/libphonenumber-min.js.map | 1 + .../bundle/libphonenumber-mobile.js | 2 + .../bundle/libphonenumber-mobile.js.map | 1 + .../libphonenumber-js/core/index.cjs | 50 + .../libphonenumber-js/core/index.cjs.js | 55 + .../libphonenumber-js/core/index.d.ts | 115 + .../libphonenumber-js/core/index.js | 34 + .../libphonenumber-js/core/package.json | 15 + .../libphonenumber-js/custom.d.ts | 169 + .../node_modules/libphonenumber-js/custom.js | 79 + .../libphonenumber-js/es6/AsYouType.js | 493 + .../libphonenumber-js/es6/AsYouType.js.map | 1 + .../libphonenumber-js/es6/AsYouType.test.js | 1248 ++ .../es6/AsYouType.test.js.map | 1 + .../es6/AsYouTypeFormatter.PatternMatcher.js | 255 + .../AsYouTypeFormatter.PatternMatcher.js.map | 1 + .../AsYouTypeFormatter.PatternMatcher.test.js | 497 + ...ouTypeFormatter.PatternMatcher.test.js.map | 1 + .../es6/AsYouTypeFormatter.PatternParser.js | 234 + .../AsYouTypeFormatter.PatternParser.js.map | 1 + .../AsYouTypeFormatter.PatternParser.test.js | 44 + ...YouTypeFormatter.PatternParser.test.js.map | 1 + .../es6/AsYouTypeFormatter.complete.js | 119 + .../es6/AsYouTypeFormatter.complete.js.map | 1 + .../es6/AsYouTypeFormatter.js | 747 ++ .../es6/AsYouTypeFormatter.js.map | 1 + .../es6/AsYouTypeFormatter.util.js | 122 + .../es6/AsYouTypeFormatter.util.js.map | 1 + .../es6/AsYouTypeFormatter.util.test.js | 20 + .../es6/AsYouTypeFormatter.util.test.js.map | 1 + .../libphonenumber-js/es6/AsYouTypeParser.js | 508 + .../es6/AsYouTypeParser.js.map | 1 + .../libphonenumber-js/es6/AsYouTypeState.js | 118 + .../es6/AsYouTypeState.js.map | 1 + .../libphonenumber-js/es6/ParseError.js | 56 + .../libphonenumber-js/es6/ParseError.js.map | 1 + .../libphonenumber-js/es6/PhoneNumber.js | 138 + .../libphonenumber-js/es6/PhoneNumber.js.map | 1 + .../libphonenumber-js/es6/PhoneNumber.test.js | 46 + .../es6/PhoneNumber.test.js.map | 1 + .../es6/PhoneNumberMatcher.js | 366 + .../es6/PhoneNumberMatcher.js.map | 1 + .../es6/PhoneNumberMatcher.test.js | 74 + .../es6/PhoneNumberMatcher.test.js.map | 1 + .../libphonenumber-js/es6/constants.js | 25 + .../libphonenumber-js/es6/constants.js.map | 1 + .../libphonenumber-js/es6/findNumbers.js | 11 + .../libphonenumber-js/es6/findNumbers.js.map | 1 + .../libphonenumber-js/es6/findNumbers.test.js | 188 + .../es6/findNumbers.test.js.map | 1 + .../es6/findNumbers/LRUCache.js | 127 + .../es6/findNumbers/LRUCache.js.map | 1 + .../es6/findNumbers/Leniency.js | 322 + .../es6/findNumbers/Leniency.js.map | 1 + .../es6/findNumbers/Leniency.test.js | 36 + .../es6/findNumbers/Leniency.test.js.map | 1 + .../es6/findNumbers/RegExpCache.js | 37 + .../es6/findNumbers/RegExpCache.js.map | 1 + .../es6/findNumbers/isValidCandidate.js | 67 + .../es6/findNumbers/isValidCandidate.js.map | 1 + .../es6/findNumbers/isValidPreCandidate.js | 27 + .../findNumbers/isValidPreCandidate.js.map | 1 + .../es6/findNumbers/parsePreCandidate.js | 17 + .../es6/findNumbers/parsePreCandidate.js.map | 1 + .../es6/findNumbers/utf-8.js | 61 + .../es6/findNumbers/utf-8.js.map | 1 + .../libphonenumber-js/es6/findNumbers/util.js | 29 + .../es6/findNumbers/util.js.map | 1 + .../es6/findNumbers/util.test.js | 35 + .../es6/findNumbers/util.test.js.map | 1 + .../libphonenumber-js/es6/findNumbers_.js | 12 + .../libphonenumber-js/es6/findNumbers_.js.map | 1 + .../libphonenumber-js/es6/findPhoneNumbers.js | 25 + .../es6/findPhoneNumbers.js.map | 1 + .../es6/findPhoneNumbers.test.js | 229 + .../es6/findPhoneNumbers.test.js.map | 1 + .../es6/findPhoneNumbersInText.js | 56 + .../es6/findPhoneNumbersInText.js.map | 1 + .../es6/findPhoneNumbersInText.test.js | 47 + .../es6/findPhoneNumbersInText.test.js.map | 1 + .../es6/findPhoneNumbers_.js | 201 + .../es6/findPhoneNumbers_.js.map | 1 + .../libphonenumber-js/es6/format.js | 116 + .../libphonenumber-js/es6/format.js.map | 1 + .../libphonenumber-js/es6/format.test.js | 279 + .../libphonenumber-js/es6/format.test.js.map | 1 + .../es6/formatIncompletePhoneNumber.js | 19 + .../es6/formatIncompletePhoneNumber.js.map | 1 + .../es6/formatIncompletePhoneNumber.test.js | 16 + .../formatIncompletePhoneNumber.test.js.map | 1 + .../es6/formatNumberForMobileDialing.js | 191 + .../es6/formatNumberForMobileDialing.js.map | 1 + .../es6/formatNumberForMobileDialing.test.js | 14 + .../formatNumberForMobileDialing.test.js.map | 1 + .../libphonenumber-js/es6/format_.js | 187 + .../libphonenumber-js/es6/format_.js.map | 1 + .../libphonenumber-js/es6/getCountries.js | 5 + .../libphonenumber-js/es6/getCountries.js.map | 1 + .../es6/getCountries.test.js | 8 + .../es6/getCountries.test.js.map | 1 + .../es6/getCountryCallingCode.js | 3 + .../es6/getCountryCallingCode.js.map | 1 + .../es6/getCountryCallingCode.test.js | 13 + .../es6/getCountryCallingCode.test.js.map | 1 + .../libphonenumber-js/es6/getExampleNumber.js | 7 + .../es6/getExampleNumber.js.map | 1 + .../es6/getExampleNumber.test.js | 16 + .../es6/getExampleNumber.test.js.map | 1 + .../libphonenumber-js/es6/getNumberType.js | 113 + .../es6/getNumberType.js.map | 1 + .../es6/getNumberType.test.js | 75 + .../es6/getNumberType.test.js.map | 1 + .../libphonenumber-js/es6/helpers/RFC3966.js | 90 + .../es6/helpers/RFC3966.js.map | 1 + .../es6/helpers/RFC3966.test.js | 38 + .../es6/helpers/RFC3966.test.js.map | 1 + .../applyInternationalSeparatorStyle.js | 35 + .../applyInternationalSeparatorStyle.js.map | 1 + .../applyInternationalSeparatorStyle.test.js | 8 + ...plyInternationalSeparatorStyle.test.js.map | 1 + .../es6/helpers/checkNumberLength.js | 80 + .../es6/helpers/checkNumberLength.js.map | 1 + .../es6/helpers/checkNumberLength.test.js | 40 + .../es6/helpers/checkNumberLength.test.js.map | 1 + .../extension/createExtensionPattern.js | 108 + .../extension/createExtensionPattern.js.map | 1 + .../es6/helpers/extension/extractExtension.js | 32 + .../helpers/extension/extractExtension.js.map | 1 + .../es6/helpers/extractCountryCallingCode.js | 102 + .../helpers/extractCountryCallingCode.js.map | 1 + .../helpers/extractCountryCallingCode.test.js | 16 + .../extractCountryCallingCode.test.js.map | 1 + ...eFromInternationalNumberWithoutPlusSign.js | 50 + ...mInternationalNumberWithoutPlusSign.js.map | 1 + .../es6/helpers/extractNationalNumber.js | 111 + .../es6/helpers/extractNationalNumber.js.map | 1 + .../es6/helpers/extractNationalNumber.test.js | 16 + .../helpers/extractNationalNumber.test.js.map | 1 + ...ionalNumberFromPossiblyIncompleteNumber.js | 107 + ...lNumberFromPossiblyIncompleteNumber.js.map | 1 + ...NumberFromPossiblyIncompleteNumber.test.js | 15 + ...erFromPossiblyIncompleteNumber.test.js.map | 1 + .../formatNationalNumberUsingFormat.js | 33 + .../formatNationalNumberUsingFormat.js.map | 1 + .../es6/helpers/getCountryByCallingCode.js | 59 + .../helpers/getCountryByCallingCode.js.map | 1 + .../es6/helpers/getIddPrefix.js | 27 + .../es6/helpers/getIddPrefix.js.map | 1 + .../es6/helpers/getNumberType.js | 90 + .../es6/helpers/getNumberType.js.map | 1 + .../es6/helpers/getNumberType.test.js | 14 + .../es6/helpers/getNumberType.test.js.map | 1 + .../es6/helpers/isViablePhoneNumber.js | 69 + .../es6/helpers/isViablePhoneNumber.js.map | 1 + .../es6/helpers/matchesEntirely.js | 12 + .../es6/helpers/matchesEntirely.js.map | 1 + .../es6/helpers/matchesEntirely.test.js | 10 + .../es6/helpers/matchesEntirely.test.js.map | 1 + .../es6/helpers/mergeArrays.js | 33 + .../es6/helpers/mergeArrays.js.map | 1 + .../es6/helpers/mergeArrays.test.js | 7 + .../es6/helpers/mergeArrays.test.js.map | 1 + .../es6/helpers/parseDigits.js | 121 + .../es6/helpers/parseDigits.js.map | 1 + .../es6/helpers/parseDigits.test.js | 7 + .../es6/helpers/parseDigits.test.js.map | 1 + .../es6/helpers/stripIddPrefix.js | 34 + .../es6/helpers/stripIddPrefix.js.map | 1 + .../es6/helpers/stripIddPrefix.test.js | 17 + .../es6/helpers/stripIddPrefix.test.js.map | 1 + .../libphonenumber-js/es6/isPossibleNumber.js | 26 + .../es6/isPossibleNumber.js.map | 1 + .../es6/isPossibleNumber.test.js | 78 + .../es6/isPossibleNumber.test.js.map | 1 + .../es6/isPossibleNumber_.js | 70 + .../es6/isPossibleNumber_.js.map | 1 + .../es6/isPossiblePhoneNumber.js | 21 + .../es6/isPossiblePhoneNumber.js.map | 1 + .../es6/isPossiblePhoneNumber.test.js | 35 + .../es6/isPossiblePhoneNumber.test.js.map | 1 + .../es6/isValidNumberForRegion.js | 30 + .../es6/isValidNumberForRegion.js.map | 1 + .../es6/isValidNumberForRegion.test.js | 37 + .../es6/isValidNumberForRegion.test.js.map | 1 + .../es6/isValidNumberForRegion_.js | 14 + .../es6/isValidNumberForRegion_.js.map | 1 + .../es6/isValidPhoneNumber.js | 21 + .../es6/isValidPhoneNumber.js.map | 1 + .../es6/isValidPhoneNumber.test.js | 27 + .../es6/isValidPhoneNumber.test.js.map | 1 + .../libphonenumber-js/es6/metadata.js | 662 + .../libphonenumber-js/es6/metadata.js.map | 1 + .../libphonenumber-js/es6/metadata.test.js | 180 + .../es6/metadata.test.js.map | 1 + .../libphonenumber-js/es6/parse.js | 37 + .../libphonenumber-js/es6/parse.js.map | 1 + .../libphonenumber-js/es6/parse.test.js | 562 + .../libphonenumber-js/es6/parse.test.js.map | 1 + .../es6/parseIncompletePhoneNumber.js | 66 + .../es6/parseIncompletePhoneNumber.js.map | 1 + .../es6/parseIncompletePhoneNumber.test.js | 27 + .../parseIncompletePhoneNumber.test.js.map | 1 + .../libphonenumber-js/es6/parsePhoneNumber.js | 86 + .../es6/parsePhoneNumber.js.map | 1 + .../es6/parsePhoneNumber.test.js | 136 + .../es6/parsePhoneNumber.test.js.map | 1 + .../es6/parsePhoneNumberFromString.js | 11 + .../es6/parsePhoneNumberFromString.js.map | 1 + .../es6/parsePhoneNumberFromString.test.js | 87 + .../parsePhoneNumberFromString.test.js.map | 1 + .../es6/parsePhoneNumberFromString_.js | 29 + .../es6/parsePhoneNumberFromString_.js.map | 1 + .../es6/parsePhoneNumber_.js | 13 + .../es6/parsePhoneNumber_.js.map | 1 + .../libphonenumber-js/es6/parse_.js | 339 + .../libphonenumber-js/es6/parse_.js.map | 1 + .../libphonenumber-js/es6/searchNumbers.js | 33 + .../es6/searchNumbers.js.map | 1 + .../es6/searchNumbers.test.js | 33 + .../es6/searchNumbers.test.js.map | 1 + .../es6/searchPhoneNumbersInText.js | 7 + .../es6/searchPhoneNumbersInText.js.map | 1 + .../es6/searchPhoneNumbersInText.test.js | 29 + .../es6/searchPhoneNumbersInText.test.js.map | 1 + .../es6/tools/semver-compare.js | 30 + .../es6/tools/semver-compare.js.map | 1 + .../es6/tools/semver-compare.test.js | 8 + .../es6/tools/semver-compare.test.js.map | 1 + .../libphonenumber-js/es6/validate.js | 12 + .../libphonenumber-js/es6/validate.js.map | 1 + .../libphonenumber-js/es6/validate.test.js | 91 + .../es6/validate.test.js.map | 1 + .../es6/validatePhoneNumberLength.js | 40 + .../es6/validatePhoneNumberLength.js.map | 1 + .../es6/validatePhoneNumberLength.test.js | 32 + .../es6/validatePhoneNumberLength.test.js.map | 1 + .../libphonenumber-js/es6/validate_.js | 57 + .../libphonenumber-js/es6/validate_.js.map | 1 + .../libphonenumber-js/examples.mobile.json | 1 + .../examples.mobile.json.d.ts | 4 + .../libphonenumber-js/examples.mobile.json.js | 4 + .../node_modules/libphonenumber-js/index.cjs | 124 + .../libphonenumber-js/index.cjs.js | 130 + .../node_modules/libphonenumber-js/index.d.ts | 170 + .../index.es6.exports/PhoneNumberSearch.js | 13 + .../index.es6.exports/findPhoneNumbers.js | 7 + .../index.es6.exports/format.js | 7 + .../index.es6.exports/getNumberType.js | 7 + .../index.es6.exports/isPossibleNumber.js | 9 + .../index.es6.exports/isValidNumber.js | 9 + .../isValidNumberForRegion.js | 7 + .../index.es6.exports/parse.js | 7 + .../index.es6.exports/searchPhoneNumbers.js | 7 + .../libphonenumber-js/index.es6.js | 6 + .../node_modules/libphonenumber-js/index.js | 67 + .../max/exports/AsYouType.js | 12 + .../libphonenumber-js/max/exports/Metadata.js | 12 + .../max/exports/PhoneNumberMatcher.js | 11 + .../max/exports/findNumbers.js | 6 + .../max/exports/findPhoneNumbersInText.js | 6 + .../exports/formatIncompletePhoneNumber.js | 6 + .../max/exports/getCountries.js | 6 + .../max/exports/getCountryCallingCode.js | 6 + .../max/exports/getExampleNumber.js | 6 + .../max/exports/getExtPrefix.js | 6 + .../max/exports/isPossiblePhoneNumber.js | 6 + .../max/exports/isSupportedCountry.js | 6 + .../max/exports/isValidPhoneNumber.js | 6 + .../max/exports/parsePhoneNumberFromString.js | 6 + .../max/exports/parsePhoneNumberWithError.js | 6 + .../max/exports/searchNumbers.js | 6 + .../max/exports/searchPhoneNumbersInText.js | 6 + .../max/exports/validatePhoneNumberLength.js | 6 + .../max/exports/withMetadataArgument.js | 9 + .../libphonenumber-js/max/index.cjs | 107 + .../libphonenumber-js/max/index.cjs.js | 112 + .../libphonenumber-js/max/index.js | 40 + .../max/metadata/package.json | 16 + .../libphonenumber-js/max/package.json | 16 + .../libphonenumber-js/metadata.full.json | 1 + .../libphonenumber-js/metadata.full.json.d.ts | 4 + .../libphonenumber-js/metadata.full.json.js | 4 + .../libphonenumber-js/metadata.max.json | 1 + .../libphonenumber-js/metadata.max.json.d.ts | 4 + .../libphonenumber-js/metadata.max.json.js | 4 + .../libphonenumber-js/metadata.min.json | 1 + .../libphonenumber-js/metadata.min.json.d.ts | 4 + .../libphonenumber-js/metadata.min.json.js | 4 + .../libphonenumber-js/metadata.mobile.json | 1 + .../metadata.mobile.json.d.ts | 4 + .../libphonenumber-js/metadata.mobile.json.js | 4 + .../min/exports/AsYouType.js | 12 + .../libphonenumber-js/min/exports/Metadata.js | 12 + .../min/exports/PhoneNumberMatcher.js | 11 + .../min/exports/findNumbers.js | 6 + .../min/exports/findPhoneNumbersInText.js | 6 + .../exports/formatIncompletePhoneNumber.js | 6 + .../min/exports/getCountries.js | 6 + .../min/exports/getCountryCallingCode.js | 6 + .../min/exports/getExampleNumber.js | 6 + .../min/exports/getExtPrefix.js | 6 + .../min/exports/isPossiblePhoneNumber.js | 6 + .../min/exports/isSupportedCountry.js | 6 + .../min/exports/isValidPhoneNumber.js | 6 + .../min/exports/parsePhoneNumberFromString.js | 6 + .../min/exports/parsePhoneNumberWithError.js | 6 + .../min/exports/searchNumbers.js | 6 + .../min/exports/searchPhoneNumbersInText.js | 6 + .../min/exports/validatePhoneNumberLength.js | 6 + .../min/exports/withMetadataArgument.js | 9 + .../libphonenumber-js/min/index.cjs | 113 + .../libphonenumber-js/min/index.cjs.js | 118 + .../libphonenumber-js/min/index.d.ts | 102 + .../libphonenumber-js/min/index.js | 40 + .../min/metadata/package.json | 16 + .../libphonenumber-js/min/package.json | 15 + .../mobile/examples/package.json | 16 + .../mobile/exports/AsYouType.js | 12 + .../mobile/exports/Metadata.js | 12 + .../mobile/exports/PhoneNumberMatcher.js | 11 + .../mobile/exports/findNumbers.js | 6 + .../mobile/exports/findPhoneNumbersInText.js | 6 + .../exports/formatIncompletePhoneNumber.js | 6 + .../mobile/exports/getCountries.js | 6 + .../mobile/exports/getCountryCallingCode.js | 6 + .../mobile/exports/getExampleNumber.js | 6 + .../mobile/exports/getExtPrefix.js | 6 + .../mobile/exports/isPossiblePhoneNumber.js | 6 + .../mobile/exports/isSupportedCountry.js | 6 + .../mobile/exports/isValidPhoneNumber.js | 6 + .../exports/parsePhoneNumberFromString.js | 6 + .../exports/parsePhoneNumberWithError.js | 6 + .../mobile/exports/searchNumbers.js | 6 + .../exports/searchPhoneNumbersInText.js | 6 + .../exports/validatePhoneNumberLength.js | 6 + .../mobile/exports/withMetadataArgument.js | 9 + .../libphonenumber-js/mobile/index.cjs | 107 + .../libphonenumber-js/mobile/index.cjs.js | 112 + .../libphonenumber-js/mobile/index.js | 40 + .../mobile/metadata/package.json | 16 + .../libphonenumber-js/mobile/package.json | 16 + .../libphonenumber-js/package.json | 185 + .../libphonenumber-js/rollup.config.mjs | 57 + .../runnable/create-commonjs-package-json.js | 11 + .../libphonenumber-js/runnable/download.js | 12 + .../runnable/generate-country-codes.js | 13 + .../libphonenumber-js/runnable/generate.js | 81 + .../libphonenumber-js/runnable/json-to-js.js | 14 + .../runnable/metadata-branch.js | 26 + ...tadata-update-and-push-and-pull-request.js | 47 + .../runnable/metadata-update-and-push.js | 30 + .../runnable/metadata-update-and-release.js | 32 + .../runnable/modules/commit.js | 14 + .../runnable/modules/exec.js | 6 + .../runnable/modules/update-metadata.js | 88 + .../libphonenumber-js/source/AsYouType.js | 411 + .../source/AsYouType.test.js | 1370 ++ .../AsYouTypeFormatter.PatternMatcher.d.ts | 66 + .../AsYouTypeFormatter.PatternMatcher.js | 197 + .../AsYouTypeFormatter.PatternMatcher.test.js | 641 + .../AsYouTypeFormatter.PatternParser.d.ts | 58 + .../AsYouTypeFormatter.PatternParser.js | 214 + .../AsYouTypeFormatter.PatternParser.test.js | 67 + .../source/AsYouTypeFormatter.complete.js | 135 + .../source/AsYouTypeFormatter.js | 714 ++ .../source/AsYouTypeFormatter.util.js | 100 + .../source/AsYouTypeFormatter.util.test.js | 22 + .../source/AsYouTypeParser.js | 503 + .../source/AsYouTypeState.js | 88 + .../libphonenumber-js/source/ParseError.js | 14 + .../libphonenumber-js/source/PhoneNumber.js | 95 + .../source/PhoneNumber.test.js | 44 + .../source/PhoneNumberMatcher.js | 394 + .../source/PhoneNumberMatcher.test.js | 74 + .../libphonenumber-js/source/constants.js | 31 + .../libphonenumber-js/source/findNumbers.js | 7 + .../source/findNumbers.test.js | 204 + .../source/findNumbers/LRUCache.js | 107 + .../source/findNumbers/Leniency.js | 396 + .../source/findNumbers/Leniency.test.js | 35 + .../source/findNumbers/RegExpCache.js | 20 + .../source/findNumbers/isValidCandidate.js | 86 + .../source/findNumbers/isValidPreCandidate.js | 29 + .../source/findNumbers/parsePreCandidate.js | 19 + .../source/findNumbers/utf-8.js | 82 + .../source/findNumbers/util.js | 33 + .../source/findNumbers/util.test.js | 39 + .../libphonenumber-js/source/findNumbers_.js | 10 + .../source/findPhoneNumbers.js | 20 + .../source/findPhoneNumbers.test.js | 233 + .../source/findPhoneNumbersInText.js | 45 + .../source/findPhoneNumbersInText.test.js | 48 + .../source/findPhoneNumbers_.js | 191 + .../libphonenumber-js/source/format.js | 113 + .../libphonenumber-js/source/format.test.js | 240 + .../source/formatIncompletePhoneNumber.js | 17 + .../formatIncompletePhoneNumber.test.js | 21 + .../source/formatNumberForMobileDialing.js | 221 + .../formatNumberForMobileDialing.test.js | 16 + .../libphonenumber-js/source/format_.js | 184 + .../libphonenumber-js/source/getCountries.js | 5 + .../source/getCountries.test.js | 9 + .../source/getCountryCallingCode.js | 2 + .../source/getCountryCallingCode.test.js | 13 + .../source/getExampleNumber.js | 7 + .../source/getExampleNumber.test.js | 17 + .../libphonenumber-js/source/getNumberType.js | 112 + .../source/getNumberType.test.js | 65 + .../source/helpers/RFC3966.js | 59 + .../source/helpers/RFC3966.test.js | 33 + .../applyInternationalSeparatorStyle.js | 35 + .../applyInternationalSeparatorStyle.test.js | 8 + .../source/helpers/checkNumberLength.js | 86 + .../source/helpers/checkNumberLength.test.js | 40 + .../extension/createExtensionPattern.js | 112 + .../helpers/extension/extractExtension.js | 29 + .../helpers/extractCountryCallingCode.js | 106 + .../helpers/extractCountryCallingCode.test.js | 18 + ...eFromInternationalNumberWithoutPlusSign.js | 63 + .../source/helpers/extractNationalNumber.js | 106 + .../helpers/extractNationalNumber.test.js | 15 + ...ionalNumberFromPossiblyIncompleteNumber.js | 104 + ...NumberFromPossiblyIncompleteNumber.test.js | 15 + .../formatNationalNumberUsingFormat.js | 46 + .../source/helpers/getCountryByCallingCode.js | 47 + .../source/helpers/getIddPrefix.js | 25 + .../source/helpers/getNumberType.js | 97 + .../source/helpers/getNumberType.test.js | 19 + .../source/helpers/isViablePhoneNumber.js | 108 + .../source/helpers/matchesEntirely.js | 11 + .../source/helpers/matchesEntirely.test.js | 11 + .../source/helpers/mergeArrays.js | 24 + .../source/helpers/mergeArrays.test.js | 7 + .../source/helpers/parseDigits.js | 82 + .../source/helpers/parseDigits.test.js | 7 + .../source/helpers/stripIddPrefix.js | 30 + .../source/helpers/stripIddPrefix.test.js | 21 + .../source/isPossibleNumber.js | 22 + .../source/isPossibleNumber.test.js | 40 + .../source/isPossibleNumber_.js | 65 + .../source/isPossiblePhoneNumber.js | 12 + .../source/isPossiblePhoneNumber.test.js | 27 + .../source/isValidNumberForRegion.js | 24 + .../source/isValidNumberForRegion.test.js | 28 + .../source/isValidNumberForRegion_.js | 13 + .../source/isValidPhoneNumber.js | 12 + .../source/isValidPhoneNumber.test.js | 20 + .../libphonenumber-js/source/metadata.js | 540 + .../libphonenumber-js/source/metadata.test.js | 163 + .../libphonenumber-js/source/parse.js | 34 + .../libphonenumber-js/source/parse.test.js | 524 + .../source/parseIncompletePhoneNumber.js | 55 + .../source/parseIncompletePhoneNumber.test.js | 36 + .../source/parsePhoneNumber.js | 61 + .../source/parsePhoneNumber.test.js | 112 + .../source/parsePhoneNumberFromString.js | 7 + .../source/parsePhoneNumberFromString.test.js | 80 + .../source/parsePhoneNumberFromString_.js | 24 + .../source/parsePhoneNumber_.js | 5 + .../libphonenumber-js/source/parse_.js | 344 + .../libphonenumber-js/source/searchNumbers.js | 30 + .../source/searchNumbers.test.js | 26 + .../source/searchPhoneNumbersInText.js | 7 + .../source/searchPhoneNumbersInText.test.js | 20 + .../source/tools/semver-compare.js | 26 + .../source/tools/semver-compare.test.js | 40 + .../libphonenumber-js/source/validate.js | 9 + .../libphonenumber-js/source/validate.test.js | 86 + .../source/validatePhoneNumberLength.js | 31 + .../source/validatePhoneNumberLength.test.js | 30 + .../libphonenumber-js/source/validate_.js | 62 + .../node_modules/libphonenumber-js/types.d.ts | 115 + .../api_back/node_modules/validator/LICENSE | 20 + .../api_back/node_modules/validator/README.md | 274 + .../node_modules/validator/es/index.js | 198 + .../node_modules/validator/es/lib/alpha.js | 123 + .../validator/es/lib/blacklist.js | 5 + .../node_modules/validator/es/lib/contains.js | 17 + .../node_modules/validator/es/lib/equals.js | 5 + .../node_modules/validator/es/lib/escape.js | 5 + .../node_modules/validator/es/lib/isAfter.js | 9 + .../node_modules/validator/es/lib/isAlpha.js | 26 + .../validator/es/lib/isAlphanumeric.js | 26 + .../node_modules/validator/es/lib/isAscii.js | 10 + .../node_modules/validator/es/lib/isBIC.js | 14 + .../node_modules/validator/es/lib/isBase32.js | 12 + .../node_modules/validator/es/lib/isBase58.js | 12 + .../node_modules/validator/es/lib/isBase64.js | 23 + .../node_modules/validator/es/lib/isBefore.js | 9 + .../validator/es/lib/isBoolean.js | 16 + .../validator/es/lib/isBtcAddress.js | 13 + .../validator/es/lib/isByteLength.js | 22 + .../validator/es/lib/isCreditCard.js | 40 + .../validator/es/lib/isCurrency.js | 77 + .../validator/es/lib/isDataURI.js | 39 + .../node_modules/validator/es/lib/isDate.js | 86 + .../validator/es/lib/isDecimal.js | 26 + .../validator/es/lib/isDivisibleBy.js | 6 + .../node_modules/validator/es/lib/isEAN.js | 72 + .../node_modules/validator/es/lib/isEmail.js | 180 + .../node_modules/validator/es/lib/isEmpty.js | 10 + .../validator/es/lib/isEthereumAddress.js | 6 + .../node_modules/validator/es/lib/isFQDN.js | 74 + .../node_modules/validator/es/lib/isFloat.js | 16 + .../validator/es/lib/isFullWidth.js | 6 + .../node_modules/validator/es/lib/isHSL.js | 14 + .../validator/es/lib/isHalfWidth.js | 6 + .../node_modules/validator/es/lib/isHash.js | 21 + .../validator/es/lib/isHexColor.js | 6 + .../validator/es/lib/isHexadecimal.js | 6 + .../node_modules/validator/es/lib/isIBAN.js | 138 + .../node_modules/validator/es/lib/isIMEI.js | 47 + .../node_modules/validator/es/lib/isIP.js | 62 + .../validator/es/lib/isIPRange.js | 47 + .../node_modules/validator/es/lib/isISBN.js | 51 + .../node_modules/validator/es/lib/isISIN.js | 60 + .../validator/es/lib/isISO31661Alpha2.js | 8 + .../validator/es/lib/isISO31661Alpha3.js | 7 + .../validator/es/lib/isISO4217.js | 8 + .../validator/es/lib/isISO8601.js | 47 + .../node_modules/validator/es/lib/isISRC.js | 7 + .../node_modules/validator/es/lib/isISSN.js | 23 + .../validator/es/lib/isIdentityCard.js | 369 + .../node_modules/validator/es/lib/isIn.js | 28 + .../node_modules/validator/es/lib/isInt.js | 16 + .../node_modules/validator/es/lib/isJSON.js | 26 + .../node_modules/validator/es/lib/isJWT.js | 17 + .../validator/es/lib/isLatLong.js | 22 + .../node_modules/validator/es/lib/isLength.js | 23 + .../validator/es/lib/isLicensePlate.js | 44 + .../node_modules/validator/es/lib/isLocale.js | 11 + .../validator/es/lib/isLowercase.js | 5 + .../validator/es/lib/isMACAddress.js | 16 + .../node_modules/validator/es/lib/isMD5.js | 6 + .../validator/es/lib/isMagnetURI.js | 6 + .../validator/es/lib/isMimeType.js | 39 + .../validator/es/lib/isMobilePhone.js | 187 + .../validator/es/lib/isMongoId.js | 6 + .../validator/es/lib/isMultibyte.js | 10 + .../validator/es/lib/isNumeric.js | 12 + .../node_modules/validator/es/lib/isOctal.js | 6 + .../validator/es/lib/isPassportNumber.js | 126 + .../node_modules/validator/es/lib/isPort.js | 7 + .../validator/es/lib/isPostalCode.js | 96 + .../validator/es/lib/isRFC3339.js | 20 + .../validator/es/lib/isRgbColor.js | 15 + .../node_modules/validator/es/lib/isSemVer.js | 14 + .../node_modules/validator/es/lib/isSlug.js | 6 + .../validator/es/lib/isStrongPassword.js | 101 + .../validator/es/lib/isSurrogatePair.js | 6 + .../node_modules/validator/es/lib/isTaxID.js | 1508 +++ .../node_modules/validator/es/lib/isURL.js | 193 + .../node_modules/validator/es/lib/isUUID.js | 14 + .../validator/es/lib/isUppercase.js | 5 + .../node_modules/validator/es/lib/isVAT.js | 16 + .../validator/es/lib/isVariableWidth.js | 7 + .../validator/es/lib/isWhitelisted.js | 12 + .../node_modules/validator/es/lib/ltrim.js | 7 + .../node_modules/validator/es/lib/matches.js | 10 + .../validator/es/lib/normalizeEmail.js | 138 + .../node_modules/validator/es/lib/rtrim.js | 19 + .../node_modules/validator/es/lib/stripLow.js | 7 + .../validator/es/lib/toBoolean.js | 10 + .../node_modules/validator/es/lib/toDate.js | 6 + .../node_modules/validator/es/lib/toFloat.js | 5 + .../node_modules/validator/es/lib/toInt.js | 5 + .../node_modules/validator/es/lib/trim.js | 5 + .../node_modules/validator/es/lib/unescape.js | 7 + .../validator/es/lib/util/algorithms.js | 88 + .../validator/es/lib/util/assertString.js | 12 + .../validator/es/lib/util/includes.js | 7 + .../validator/es/lib/util/merge.js | 12 + .../validator/es/lib/util/multilineRegex.js | 12 + .../validator/es/lib/util/toString.js | 15 + .../validator/es/lib/util/typeOf.js | 10 + .../validator/es/lib/whitelist.js | 5 + .../api_back/node_modules/validator/index.js | 309 + .../node_modules/validator/lib/alpha.js | 137 + .../node_modules/validator/lib/blacklist.js | 18 + .../node_modules/validator/lib/contains.js | 33 + .../node_modules/validator/lib/equals.js | 18 + .../node_modules/validator/lib/escape.js | 18 + .../node_modules/validator/lib/isAfter.js | 23 + .../node_modules/validator/lib/isAlpha.js | 40 + .../validator/lib/isAlphanumeric.js | 40 + .../node_modules/validator/lib/isAscii.js | 22 + .../node_modules/validator/lib/isBIC.js | 29 + .../node_modules/validator/lib/isBase32.js | 26 + .../node_modules/validator/lib/isBase58.js | 26 + .../node_modules/validator/lib/isBase64.js | 38 + .../node_modules/validator/lib/isBefore.js | 23 + .../node_modules/validator/lib/isBoolean.js | 30 + .../validator/lib/isBtcAddress.js | 27 + .../validator/lib/isByteLength.js | 34 + .../validator/lib/isCreditCard.js | 52 + .../node_modules/validator/lib/isCurrency.js | 91 + .../node_modules/validator/lib/isDataURI.js | 53 + .../node_modules/validator/lib/isDate.js | 99 + .../node_modules/validator/lib/isDecimal.js | 42 + .../validator/lib/isDivisibleBy.js | 20 + .../node_modules/validator/lib/isEAN.js | 85 + .../node_modules/validator/lib/isEmail.js | 197 + .../node_modules/validator/lib/isEmpty.js | 25 + .../validator/lib/isEthereumAddress.js | 20 + .../node_modules/validator/lib/isFQDN.js | 89 + .../node_modules/validator/lib/isFloat.js | 29 + .../node_modules/validator/lib/isFullWidth.js | 19 + .../node_modules/validator/lib/isHSL.js | 28 + .../node_modules/validator/lib/isHalfWidth.js | 19 + .../node_modules/validator/lib/isHash.js | 35 + .../node_modules/validator/lib/isHexColor.js | 20 + .../validator/lib/isHexadecimal.js | 20 + .../node_modules/validator/lib/isIBAN.js | 150 + .../node_modules/validator/lib/isIMEI.js | 61 + .../node_modules/validator/lib/isIP.js | 75 + .../node_modules/validator/lib/isIPRange.js | 62 + .../node_modules/validator/lib/isISBN.js | 65 + .../node_modules/validator/lib/isISIN.js | 73 + .../validator/lib/isISO31661Alpha2.js | 22 + .../validator/lib/isISO31661Alpha3.js | 21 + .../node_modules/validator/lib/isISO4217.js | 22 + .../node_modules/validator/lib/isISO8601.js | 59 + .../node_modules/validator/lib/isISRC.js | 21 + .../node_modules/validator/lib/isISSN.js | 37 + .../validator/lib/isIdentityCard.js | 384 + .../node_modules/validator/lib/isIn.js | 42 + .../node_modules/validator/lib/isInt.js | 30 + .../node_modules/validator/lib/isJSON.js | 41 + .../node_modules/validator/lib/isJWT.js | 31 + .../node_modules/validator/lib/isLatLong.js | 37 + .../node_modules/validator/lib/isLength.js | 35 + .../validator/lib/isLicensePlate.js | 58 + .../node_modules/validator/lib/isLocale.js | 25 + .../node_modules/validator/lib/isLowercase.js | 18 + .../validator/lib/isMACAddress.js | 30 + .../node_modules/validator/lib/isMD5.js | 20 + .../node_modules/validator/lib/isMagnetURI.js | 20 + .../node_modules/validator/lib/isMimeType.js | 51 + .../validator/lib/isMobilePhone.js | 200 + .../node_modules/validator/lib/isMongoId.js | 20 + .../node_modules/validator/lib/isMultibyte.js | 22 + .../node_modules/validator/lib/isNumeric.js | 27 + .../node_modules/validator/lib/isOctal.js | 20 + .../validator/lib/isPassportNumber.js | 138 + .../node_modules/validator/lib/isPort.js | 20 + .../validator/lib/isPostalCode.js | 109 + .../node_modules/validator/lib/isRFC3339.js | 33 + .../node_modules/validator/lib/isRgbColor.js | 29 + .../node_modules/validator/lib/isSemVer.js | 28 + .../node_modules/validator/lib/isSlug.js | 20 + .../validator/lib/isStrongPassword.js | 115 + .../validator/lib/isSurrogatePair.js | 20 + .../node_modules/validator/lib/isTaxID.js | 1528 +++ .../node_modules/validator/lib/isURL.js | 208 + .../node_modules/validator/lib/isUUID.js | 28 + .../node_modules/validator/lib/isUppercase.js | 18 + .../node_modules/validator/lib/isVAT.js | 29 + .../validator/lib/isVariableWidth.js | 22 + .../validator/lib/isWhitelisted.js | 25 + .../node_modules/validator/lib/ltrim.js | 20 + .../node_modules/validator/lib/matches.js | 23 + .../validator/lib/normalizeEmail.js | 151 + .../node_modules/validator/lib/rtrim.js | 32 + .../node_modules/validator/lib/stripLow.js | 21 + .../node_modules/validator/lib/toBoolean.js | 23 + .../node_modules/validator/lib/toDate.js | 19 + .../node_modules/validator/lib/toFloat.js | 18 + .../node_modules/validator/lib/toInt.js | 18 + .../node_modules/validator/lib/trim.js | 19 + .../node_modules/validator/lib/unescape.js | 20 + .../validator/lib/util/algorithms.js | 101 + .../validator/lib/util/assertString.js | 22 + .../validator/lib/util/includes.js | 17 + .../node_modules/validator/lib/util/merge.js | 22 + .../validator/lib/util/multilineRegex.js | 22 + .../validator/lib/util/toString.js | 25 + .../node_modules/validator/lib/util/typeOf.js | 20 + .../node_modules/validator/lib/whitelist.js | 18 + .../node_modules/validator/package.json | 75 + .../node_modules/validator/validator.js | 5094 ++++++++ .../node_modules/validator/validator.min.js | 23 + .../nestjs/api_back/package-lock.json | 90 + .../requirements/nestjs/api_back/package.json | 4 + srcs/requirements/nestjs/api_back/src/main.ts | 13 + .../src/users/dto/create-users.dto.ts | 10 + .../src/users/dto/update-users.dto.ts | 8 + .../src/users/entities/user.entity.ts | 1 + .../api_back/src/users/users.controller.ts | 10 +- .../api_back/src/users/users.service.ts | 8 +- 2334 files changed, 95831 insertions(+), 23 deletions(-) create mode 100644 srcs/requirements/nestjs/api_back/dist/src/users/dto/update-users.dto.d.ts create mode 100644 srcs/requirements/nestjs/api_back/dist/src/users/dto/update-users.dto.js create mode 100644 srcs/requirements/nestjs/api_back/dist/src/users/dto/update-users.dto.js.map create mode 100644 srcs/requirements/nestjs/api_back/dist/users/dto/creat-users.dto.d.ts create mode 100644 srcs/requirements/nestjs/api_back/dist/users/dto/creat-users.dto.js create mode 100644 srcs/requirements/nestjs/api_back/dist/users/dto/creat-users.dto.js.map create mode 100644 srcs/requirements/nestjs/api_back/dist/users/dto/create-users.dto.d.ts create mode 100644 srcs/requirements/nestjs/api_back/dist/users/dto/create-users.dto.js create mode 100644 srcs/requirements/nestjs/api_back/dist/users/dto/create-users.dto.js.map create mode 100644 srcs/requirements/nestjs/api_back/dist/users/dto/update-users.dto.d.ts create mode 100644 srcs/requirements/nestjs/api_back/dist/users/dto/update-users.dto.js create mode 100644 srcs/requirements/nestjs/api_back/dist/users/dto/update-users.dto.js.map create mode 100644 srcs/requirements/nestjs/api_back/dist/users/users/dto/creat-users.dto.d.ts create mode 100644 srcs/requirements/nestjs/api_back/dist/users/users/dto/creat-users.dto.js create mode 100644 srcs/requirements/nestjs/api_back/dist/users/users/dto/creat-users.dto.js.map create mode 100644 srcs/requirements/nestjs/api_back/dist/users/users/dto/create-users.dto.d.ts create mode 100644 srcs/requirements/nestjs/api_back/dist/users/users/dto/create-users.dto.js create mode 100644 srcs/requirements/nestjs/api_back/dist/users/users/dto/create-users.dto.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/.commitlintrc.json create mode 100644 srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/.eslintignore create mode 100644 srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/.eslintrc.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/.release-it.json create mode 100644 srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/LICENSE create mode 100644 srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/README.md create mode 100644 srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/index.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/intersection-type.helper.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/intersection-type.helper.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/mapped-type.interface.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/mapped-type.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/omit-type.helper.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/omit-type.helper.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/partial-type.helper.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/partial-type.helper.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/pick-type.helper.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/pick-type.helper.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/type-helpers.utils.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/type-helpers.utils.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/index.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/package.json create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/LICENSE create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/README.md create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/blacklist.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/contains.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/equals.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/escape.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isAfter.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isAlpha.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isAlphanumeric.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isAscii.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBIC.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBase32.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBase58.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBase64.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBefore.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBoolean.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBtcAddress.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isByteLength.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isCreditCard.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isCurrency.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isDataURI.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isDate.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isDecimal.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isDivisibleBy.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isEAN.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isEmail.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isEmpty.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isEthereumAddress.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isFQDN.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isFloat.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isFullWidth.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isHSL.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isHalfWidth.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isHash.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isHexColor.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isHexadecimal.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isIBAN.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isIP.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isIPRange.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISBN.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISIN.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISO31661Alpha2.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISO31661Alpha3.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISO4217.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISO8601.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISRC.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISSN.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isIdentityCard.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isIn.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isInt.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isJSON.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isJWT.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isLatLong.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isLength.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isLocale.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isLowercase.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMACAddress.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMD5.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMagnetURI.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMimeType.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMobilePhone.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMongoId.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMultibyte.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isNumeric.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isOctal.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isPassportNumber.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isPort.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isPostalCode.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isRFC3339.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isRgbColor.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isSemVer.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isSlug.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isStrongPassword.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isSurrogatePair.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isTaxID.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isURL.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isUUID.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isUppercase.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isVAT.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isVariableWidth.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isWhitelisted.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/ltrim.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/matches.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/normalizeEmail.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/rtrim.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/stripLow.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/toBoolean.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/toDate.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/toFloat.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/toInt.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/trim.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/unescape.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/whitelist.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/index.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/blacklist.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/contains.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/equals.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/escape.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isAfter.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isAlpha.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isAlphanumeric.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isAscii.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBIC.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBase32.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBase58.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBase64.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBefore.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBoolean.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBtcAddress.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isByteLength.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isCreditCard.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isCurrency.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isDataURI.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isDate.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isDecimal.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isDivisibleBy.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isEAN.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isEmail.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isEmpty.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isEthereumAddress.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isFQDN.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isFloat.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isFullWidth.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isHSL.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isHalfWidth.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isHash.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isHexColor.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isHexadecimal.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isIBAN.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isIP.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isIPRange.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISBN.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISIN.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISO31661Alpha2.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISO31661Alpha3.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISO4217.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISO8601.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISRC.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISSN.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isIdentityCard.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isIn.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isInt.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isJSON.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isJWT.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isLatLong.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isLength.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isLocale.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isLowercase.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMACAddress.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMD5.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMagnetURI.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMimeType.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMobilePhone.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMongoId.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMultibyte.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isNumeric.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isOctal.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isPassportNumber.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isPort.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isPostalCode.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isRFC3339.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isRgbColor.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isSemVer.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isSlug.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isStrongPassword.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isSurrogatePair.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isTaxID.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isURL.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isUUID.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isUppercase.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isVAT.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isVariableWidth.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isWhitelisted.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/ltrim.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/matches.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/normalizeEmail.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/rtrim.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/stripLow.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/toBoolean.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/toDate.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/toFloat.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/toInt.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/trim.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/unescape.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/whitelist.d.ts create mode 100755 srcs/requirements/nestjs/api_back/node_modules/@types/validator/package.json create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/LICENSE create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/README.md create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/bundles/class-transformer.umd.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/bundles/class-transformer.umd.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/bundles/class-transformer.umd.min.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/bundles/class-transformer.umd.min.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/ClassTransformer.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/ClassTransformer.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/MetadataStorage.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/MetadataStorage.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/TransformOperationExecutor.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/TransformOperationExecutor.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/constants/default-options.constant.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/constants/default-options.constant.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/exclude.decorator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/exclude.decorator.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/expose.decorator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/expose.decorator.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/index.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform-instance-to-instance.decorator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform-instance-to-instance.decorator.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform-instance-to-plain.decorator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform-instance-to-plain.decorator.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform-plain-to-instance.decorator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform-plain-to-instance.decorator.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform.decorator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform.decorator.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/type.decorator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/type.decorator.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/enums/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/enums/index.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/enums/transformation-type.enum.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/enums/transformation-type.enum.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/index.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/class-constructor.type.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/class-constructor.type.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/class-transformer-options.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/class-transformer-options.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/exclude-options.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/exclude-options.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/expose-options.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/expose-options.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/transform-options.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/transform-options.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/type-discriminator-descriptor.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/type-discriminator-descriptor.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/type-options.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/type-options.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/index.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/exclude-metadata.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/exclude-metadata.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/expose-metadata.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/expose-metadata.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/transform-fn-params.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/transform-fn-params.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/transform-metadata.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/transform-metadata.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/type-metadata.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/type-metadata.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/target-map.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/target-map.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/type-help-options.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/type-help-options.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/storage.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/storage.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/get-global.util.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/get-global.util.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/get-global.util.spect.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/get-global.util.spect.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/index.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/is-promise.util.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/is-promise.util.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/ClassTransformer.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/ClassTransformer.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/MetadataStorage.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/MetadataStorage.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/TransformOperationExecutor.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/TransformOperationExecutor.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/constants/default-options.constant.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/constants/default-options.constant.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/exclude.decorator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/exclude.decorator.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/expose.decorator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/expose.decorator.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/index.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform-instance-to-instance.decorator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform-instance-to-instance.decorator.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform-instance-to-plain.decorator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform-instance-to-plain.decorator.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform-plain-to-instance.decorator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform-plain-to-instance.decorator.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform.decorator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform.decorator.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/type.decorator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/type.decorator.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/enums/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/enums/index.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/enums/transformation-type.enum.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/enums/transformation-type.enum.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/index.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/class-constructor.type.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/class-constructor.type.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/class-transformer-options.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/class-transformer-options.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/exclude-options.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/exclude-options.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/expose-options.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/expose-options.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/transform-options.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/transform-options.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/type-discriminator-descriptor.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/type-discriminator-descriptor.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/type-options.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/type-options.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/index.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/exclude-metadata.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/exclude-metadata.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/expose-metadata.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/expose-metadata.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/transform-fn-params.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/transform-fn-params.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/transform-metadata.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/transform-metadata.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/type-metadata.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/type-metadata.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/target-map.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/target-map.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/type-help-options.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/type-help-options.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/storage.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/storage.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/get-global.util.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/get-global.util.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/get-global.util.spect.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/get-global.util.spect.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/index.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/is-promise.util.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/is-promise.util.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/ClassTransformer.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/ClassTransformer.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/MetadataStorage.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/MetadataStorage.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/TransformOperationExecutor.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/TransformOperationExecutor.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/constants/default-options.constant.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/constants/default-options.constant.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/exclude.decorator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/exclude.decorator.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/expose.decorator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/expose.decorator.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/index.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform-instance-to-instance.decorator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform-instance-to-instance.decorator.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform-instance-to-plain.decorator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform-instance-to-plain.decorator.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform-plain-to-instance.decorator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform-plain-to-instance.decorator.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform.decorator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform.decorator.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/type.decorator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/type.decorator.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/enums/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/enums/index.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/enums/transformation-type.enum.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/enums/transformation-type.enum.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/index.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/class-constructor.type.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/class-constructor.type.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/class-transformer-options.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/class-transformer-options.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/exclude-options.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/exclude-options.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/expose-options.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/expose-options.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/transform-options.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/transform-options.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/type-discriminator-descriptor.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/type-discriminator-descriptor.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/type-options.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/type-options.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/index.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/exclude-metadata.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/exclude-metadata.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/expose-metadata.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/expose-metadata.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/transform-fn-params.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/transform-fn-params.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/transform-metadata.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/transform-metadata.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/type-metadata.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/type-metadata.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/target-map.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/target-map.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/type-help-options.interface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/type-help-options.interface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/storage.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/storage.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/get-global.util.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/get-global.util.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/get-global.util.spect.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/get-global.util.spect.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/index.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/is-promise.util.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/is-promise.util.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/package.json create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/ClassTransformer.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/MetadataStorage.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/TransformOperationExecutor.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/constants/default-options.constant.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/exclude.decorator.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/expose.decorator.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/index.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/transform-instance-to-instance.decorator.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/transform-instance-to-plain.decorator.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/transform-plain-to-instance.decorator.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/transform.decorator.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/type.decorator.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/enums/index.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/enums/transformation-type.enum.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/index.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/class-constructor.type.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/class-transformer-options.interface.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/decorator-options/exclude-options.interface.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/decorator-options/expose-options.interface.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/decorator-options/transform-options.interface.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/decorator-options/type-discriminator-descriptor.interface.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/decorator-options/type-options.interface.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/index.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/metadata/exclude-metadata.interface.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/metadata/expose-metadata.interface.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/metadata/transform-fn-params.interface.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/metadata/transform-metadata.interface.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/metadata/type-metadata.interface.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/target-map.interface.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/type-help-options.interface.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/storage.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/utils/get-global.util.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/utils/get-global.util.spect.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/utils/index.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/utils/is-promise.util.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/LICENSE create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/README.md create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/bundles/class-validator.umd.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/bundles/class-validator.umd.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/bundles/class-validator.umd.min.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/bundles/class-validator.umd.min.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/container.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/container.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/ValidationOptions.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/ValidationOptions.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayContains.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayContains.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayMaxSize.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayMaxSize.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayMinSize.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayMinSize.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayNotContains.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayNotContains.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayNotEmpty.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayNotEmpty.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayUnique.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayUnique.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/Allow.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/Allow.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/Equals.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/Equals.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsDefined.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsDefined.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsEmpty.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsEmpty.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsIn.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsIn.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsLatLong.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsLatLong.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsLatitude.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsLatitude.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsLongitude.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsLongitude.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsNotEmpty.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsNotEmpty.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsNotIn.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsNotIn.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsOptional.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsOptional.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/NotEquals.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/NotEquals.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/Validate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/Validate.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidateBy.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidateBy.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidateIf.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidateIf.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidateNested.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidateNested.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidatePromise.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidatePromise.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/date/MaxDate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/date/MaxDate.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/date/MinDate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/date/MinDate.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/decorators.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/decorators.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/IsDivisibleBy.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/IsDivisibleBy.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/IsNegative.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/IsNegative.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/IsPositive.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/IsPositive.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/Max.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/Max.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/Min.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/Min.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/object/IsInstance.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/object/IsInstance.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/object/IsNotEmptyObject.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/object/IsNotEmptyObject.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/Contains.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/Contains.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsAlpha.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsAlpha.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsAlphanumeric.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsAlphanumeric.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsAscii.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsAscii.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBIC.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBIC.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBase32.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBase32.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBase64.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBase64.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBooleanString.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBooleanString.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBtcAddress.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBtcAddress.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsByteLength.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsByteLength.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsCreditCard.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsCreditCard.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsCurrency.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsCurrency.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsDataURI.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsDataURI.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsDateString.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsDateString.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsDecimal.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsDecimal.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsEAN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsEAN.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsEmail.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsEmail.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsEthereumAddress.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsEthereumAddress.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsFQDN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsFQDN.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsFirebasePushId.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsFirebasePushId.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsFullWidth.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsFullWidth.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHSL.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHSL.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHalfWidth.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHalfWidth.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHash.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHash.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHexColor.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHexColor.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHexadecimal.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHexadecimal.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsIBAN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsIBAN.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsIP.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsIP.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISBN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISBN.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISIN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISIN.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISO31661Alpha2.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISO31661Alpha2.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISO31661Alpha3.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISO31661Alpha3.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISO8601.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISO8601.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISRC.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISRC.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISSN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISSN.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsIdentityCard.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsIdentityCard.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsJSON.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsJSON.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsJWT.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsJWT.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsLocale.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsLocale.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsLowercase.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsLowercase.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMacAddress.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMacAddress.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMagnetURI.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMagnetURI.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMilitaryTime.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMilitaryTime.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMimeType.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMimeType.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMobilePhone.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMobilePhone.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMongoId.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMongoId.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMultibyte.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMultibyte.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsNumberString.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsNumberString.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsOctal.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsOctal.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPassportNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPassportNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPhoneNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPort.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPort.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPostalCode.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPostalCode.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsRFC3339.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsRFC3339.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsRgbColor.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsRgbColor.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsSemVer.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsSemVer.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsSurrogatePair.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsSurrogatePair.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsUUID.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsUUID.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsUppercase.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsUppercase.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsUrl.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsUrl.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsVariableWidth.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsVariableWidth.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/Length.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/Length.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/Matches.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/Matches.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/MaxLength.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/MaxLength.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/MinLength.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/MinLength.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/NotContains.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/NotContains.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsArray.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsArray.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsBoolean.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsBoolean.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsDate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsDate.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsEnum.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsEnum.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsInt.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsInt.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsObject.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsObject.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsString.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsString.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/index.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/ConstraintMetadata.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/ConstraintMetadata.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/MetadataStorage.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/MetadataStorage.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/ValidationMetadata.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/ValidationMetadata.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/ValidationMetadataArgs.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/ValidationMetadataArgs.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/register-decorator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/register-decorator.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/convert-to-array.util.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/convert-to-array.util.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/get-global.util.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/get-global.util.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/index.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/is-promise.util.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/is-promise.util.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation-schema/ValidationSchema.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation-schema/ValidationSchema.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation-schema/ValidationSchemaToMetadataTransformer.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation-schema/ValidationSchemaToMetadataTransformer.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationArguments.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationArguments.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationError.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationError.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationExecutor.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationExecutor.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationTypes.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationTypes.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationUtils.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationUtils.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/Validator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/Validator.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidatorConstraintInterface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidatorConstraintInterface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidatorOptions.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidatorOptions.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/container.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/container.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/ValidationOptions.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/ValidationOptions.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayContains.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayContains.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayMaxSize.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayMaxSize.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayMinSize.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayMinSize.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayNotContains.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayNotContains.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayNotEmpty.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayNotEmpty.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayUnique.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayUnique.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/Allow.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/Allow.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/Equals.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/Equals.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsDefined.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsDefined.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsEmpty.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsEmpty.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsIn.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsIn.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsLatLong.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsLatLong.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsLatitude.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsLatitude.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsLongitude.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsLongitude.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsNotEmpty.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsNotEmpty.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsNotIn.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsNotIn.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsOptional.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsOptional.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/NotEquals.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/NotEquals.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/Validate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/Validate.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidateBy.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidateBy.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidateIf.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidateIf.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidateNested.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidateNested.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidatePromise.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidatePromise.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/date/MaxDate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/date/MaxDate.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/date/MinDate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/date/MinDate.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/decorators.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/decorators.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/IsDivisibleBy.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/IsDivisibleBy.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/IsNegative.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/IsNegative.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/IsPositive.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/IsPositive.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/Max.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/Max.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/Min.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/Min.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/object/IsInstance.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/object/IsInstance.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/object/IsNotEmptyObject.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/object/IsNotEmptyObject.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/Contains.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/Contains.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsAlpha.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsAlpha.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsAlphanumeric.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsAlphanumeric.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsAscii.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsAscii.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBIC.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBIC.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBase32.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBase32.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBase64.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBase64.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBooleanString.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBooleanString.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBtcAddress.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBtcAddress.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsByteLength.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsByteLength.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsCreditCard.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsCreditCard.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsCurrency.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsCurrency.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsDataURI.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsDataURI.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsDateString.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsDateString.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsDecimal.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsDecimal.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsEAN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsEAN.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsEmail.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsEmail.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsEthereumAddress.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsEthereumAddress.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsFQDN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsFQDN.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsFirebasePushId.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsFirebasePushId.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsFullWidth.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsFullWidth.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHSL.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHSL.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHalfWidth.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHalfWidth.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHash.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHash.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHexColor.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHexColor.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHexadecimal.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHexadecimal.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsIBAN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsIBAN.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsIP.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsIP.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISBN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISBN.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISIN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISIN.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISO31661Alpha2.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISO31661Alpha2.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISO31661Alpha3.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISO31661Alpha3.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISO8601.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISO8601.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISRC.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISRC.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISSN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISSN.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsIdentityCard.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsIdentityCard.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsJSON.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsJSON.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsJWT.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsJWT.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsLocale.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsLocale.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsLowercase.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsLowercase.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMacAddress.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMacAddress.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMagnetURI.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMagnetURI.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMilitaryTime.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMilitaryTime.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMimeType.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMimeType.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMobilePhone.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMobilePhone.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMongoId.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMongoId.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMultibyte.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMultibyte.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsNumberString.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsNumberString.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsOctal.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsOctal.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPassportNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPassportNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPhoneNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPort.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPort.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPostalCode.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPostalCode.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsRFC3339.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsRFC3339.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsRgbColor.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsRgbColor.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsSemVer.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsSemVer.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsSurrogatePair.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsSurrogatePair.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsUUID.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsUUID.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsUppercase.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsUppercase.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsUrl.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsUrl.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsVariableWidth.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsVariableWidth.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/Length.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/Length.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/Matches.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/Matches.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/MaxLength.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/MaxLength.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/MinLength.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/MinLength.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/NotContains.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/NotContains.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsArray.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsArray.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsBoolean.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsBoolean.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsDate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsDate.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsEnum.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsEnum.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsInt.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsInt.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsObject.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsObject.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsString.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsString.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/index.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/ConstraintMetadata.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/ConstraintMetadata.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/MetadataStorage.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/MetadataStorage.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/ValidationMetadata.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/ValidationMetadata.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/ValidationMetadataArgs.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/ValidationMetadataArgs.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/register-decorator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/register-decorator.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/convert-to-array.util.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/convert-to-array.util.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/get-global.util.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/get-global.util.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/index.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/is-promise.util.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/is-promise.util.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation-schema/ValidationSchema.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation-schema/ValidationSchema.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation-schema/ValidationSchemaToMetadataTransformer.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation-schema/ValidationSchemaToMetadataTransformer.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationArguments.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationArguments.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationError.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationError.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationExecutor.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationExecutor.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationTypes.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationTypes.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationUtils.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationUtils.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/Validator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/Validator.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidatorConstraintInterface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidatorConstraintInterface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidatorOptions.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidatorOptions.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/container.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/container.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/ValidationOptions.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/ValidationOptions.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayContains.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayContains.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayMaxSize.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayMaxSize.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayMinSize.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayMinSize.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayNotContains.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayNotContains.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayNotEmpty.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayNotEmpty.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayUnique.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayUnique.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/Allow.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/Allow.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/Equals.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/Equals.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsDefined.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsDefined.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsEmpty.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsEmpty.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsIn.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsIn.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsLatLong.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsLatLong.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsLatitude.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsLatitude.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsLongitude.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsLongitude.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsNotEmpty.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsNotEmpty.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsNotIn.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsNotIn.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsOptional.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsOptional.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/NotEquals.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/NotEquals.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/Validate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/Validate.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidateBy.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidateBy.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidateIf.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidateIf.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidateNested.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidateNested.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidatePromise.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidatePromise.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/date/MaxDate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/date/MaxDate.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/date/MinDate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/date/MinDate.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/decorators.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/decorators.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/IsDivisibleBy.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/IsDivisibleBy.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/IsNegative.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/IsNegative.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/IsPositive.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/IsPositive.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/Max.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/Max.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/Min.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/Min.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/object/IsInstance.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/object/IsInstance.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/object/IsNotEmptyObject.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/object/IsNotEmptyObject.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/Contains.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/Contains.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsAlpha.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsAlpha.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsAlphanumeric.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsAlphanumeric.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsAscii.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsAscii.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBIC.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBIC.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBase32.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBase32.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBase64.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBase64.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBooleanString.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBooleanString.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBtcAddress.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBtcAddress.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsByteLength.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsByteLength.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsCreditCard.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsCreditCard.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsCurrency.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsCurrency.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsDataURI.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsDataURI.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsDateString.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsDateString.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsDecimal.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsDecimal.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsEAN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsEAN.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsEmail.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsEmail.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsEthereumAddress.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsEthereumAddress.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsFQDN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsFQDN.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsFirebasePushId.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsFirebasePushId.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsFullWidth.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsFullWidth.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHSL.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHSL.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHalfWidth.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHalfWidth.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHash.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHash.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHexColor.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHexColor.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHexadecimal.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHexadecimal.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsIBAN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsIBAN.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsIP.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsIP.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISBN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISBN.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISIN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISIN.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISO31661Alpha2.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISO31661Alpha2.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISO31661Alpha3.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISO31661Alpha3.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISO8601.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISO8601.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISRC.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISRC.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISSN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISSN.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsIdentityCard.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsIdentityCard.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsJSON.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsJSON.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsJWT.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsJWT.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsLocale.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsLocale.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsLowercase.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsLowercase.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMacAddress.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMacAddress.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMagnetURI.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMagnetURI.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMilitaryTime.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMilitaryTime.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMimeType.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMimeType.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMobilePhone.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMobilePhone.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMongoId.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMongoId.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMultibyte.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMultibyte.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsNumberString.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsNumberString.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsOctal.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsOctal.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPassportNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPassportNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPhoneNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPort.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPort.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPostalCode.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPostalCode.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsRFC3339.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsRFC3339.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsRgbColor.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsRgbColor.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsSemVer.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsSemVer.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsSurrogatePair.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsSurrogatePair.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsUUID.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsUUID.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsUppercase.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsUppercase.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsUrl.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsUrl.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsVariableWidth.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsVariableWidth.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/Length.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/Length.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/Matches.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/Matches.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/MaxLength.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/MaxLength.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/MinLength.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/MinLength.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/NotContains.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/NotContains.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsArray.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsArray.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsBoolean.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsBoolean.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsDate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsDate.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsEnum.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsEnum.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsInt.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsInt.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsObject.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsObject.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsString.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsString.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/index.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/ConstraintMetadata.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/ConstraintMetadata.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/MetadataStorage.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/MetadataStorage.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/ValidationMetadata.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/ValidationMetadata.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/ValidationMetadataArgs.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/ValidationMetadataArgs.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/register-decorator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/register-decorator.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/convert-to-array.util.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/convert-to-array.util.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/get-global.util.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/get-global.util.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/index.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/is-promise.util.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/is-promise.util.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation-schema/ValidationSchema.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation-schema/ValidationSchema.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation-schema/ValidationSchemaToMetadataTransformer.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation-schema/ValidationSchemaToMetadataTransformer.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationArguments.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationArguments.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationError.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationError.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationExecutor.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationExecutor.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationTypes.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationTypes.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationUtils.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationUtils.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/Validator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/Validator.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidatorConstraintInterface.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidatorConstraintInterface.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidatorOptions.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidatorOptions.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/package.json create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/container.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/ValidationOptions.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/array/ArrayContains.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/array/ArrayMaxSize.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/array/ArrayMinSize.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/array/ArrayNotContains.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/array/ArrayNotEmpty.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/array/ArrayUnique.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/Allow.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/Equals.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsDefined.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsEmpty.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsIn.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsLatLong.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsLatitude.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsLongitude.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsNotEmpty.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsNotIn.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsOptional.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/NotEquals.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/Validate.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/ValidateBy.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/ValidateIf.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/ValidateNested.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/ValidatePromise.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/date/MaxDate.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/date/MinDate.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/decorators.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/number/IsDivisibleBy.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/number/IsNegative.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/number/IsPositive.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/number/Max.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/number/Min.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/object/IsInstance.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/object/IsNotEmptyObject.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/Contains.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsAlpha.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsAlphanumeric.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsAscii.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsBIC.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsBase32.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsBase64.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsBooleanString.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsBtcAddress.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsByteLength.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsCreditCard.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsCurrency.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsDataURI.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsDateString.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsDecimal.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsEAN.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsEmail.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsEthereumAddress.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsFQDN.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsFirebasePushId.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsFullWidth.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsHSL.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsHalfWidth.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsHash.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsHexColor.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsHexadecimal.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsIBAN.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsIP.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISBN.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISIN.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISO31661Alpha2.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISO31661Alpha3.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISO8601.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISRC.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISSN.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsIdentityCard.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsJSON.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsJWT.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsLocale.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsLowercase.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMacAddress.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMagnetURI.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMilitaryTime.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMimeType.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMobilePhone.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMongoId.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMultibyte.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsNumberString.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsOctal.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsPassportNumber.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsPhoneNumber.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsPort.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsPostalCode.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsRFC3339.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsRgbColor.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsSemVer.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsSurrogatePair.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsUUID.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsUppercase.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsUrl.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsVariableWidth.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/Length.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/Matches.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/MaxLength.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/MinLength.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/NotContains.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsArray.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsBoolean.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsDate.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsEnum.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsInt.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsNumber.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsObject.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsString.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/index.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/metadata/ConstraintMetadata.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/metadata/MetadataStorage.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/metadata/ValidationMetadata.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/metadata/ValidationMetadataArgs.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/register-decorator.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/utils/convert-to-array.util.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/utils/get-global.util.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/utils/index.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/utils/is-promise.util.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation-schema/ValidationSchema.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation-schema/ValidationSchemaToMetadataTransformer.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidationArguments.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidationError.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidationExecutor.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidationTypes.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidationUtils.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/Validator.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidatorConstraintInterface.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidatorOptions.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/.babelrc create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/.gitlab-ci.yml create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/.nycrc create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/AUTHORS create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/CHANGELOG.md create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/LICENSE create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/LICENSE.Apache create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/METADATA.md create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/README.md create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/autoupdate.cmd create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/autoupdate.sh create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouType.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouType.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouType.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouType.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternMatcher.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternMatcher.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternMatcher.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternMatcher.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternParser.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternParser.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternParser.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternParser.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.complete.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.complete.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.util.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.util.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.util.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.util.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeParser.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeParser.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeState.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeState.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/ParseError.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/ParseError.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumber.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumberMatcher.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumberMatcher.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumberMatcher.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumberMatcher.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/constants.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/constants.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/LRUCache.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/LRUCache.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/Leniency.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/Leniency.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/Leniency.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/Leniency.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/RegExpCache.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/RegExpCache.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/isValidCandidate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/isValidCandidate.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/isValidPreCandidate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/isValidPreCandidate.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/parsePreCandidate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/parsePreCandidate.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/utf-8.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/utf-8.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/util.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/util.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/util.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/util.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers_.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers_.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbers.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbers.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbers.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbers.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbersInText.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbersInText.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbersInText.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbersInText.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbers_.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbers_.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/format.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/format.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/format.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/format.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatIncompletePhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatIncompletePhoneNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatIncompletePhoneNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatIncompletePhoneNumber.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatNumberForMobileDialing.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatNumberForMobileDialing.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatNumberForMobileDialing.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatNumberForMobileDialing.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/format_.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/format_.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountries.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountries.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountries.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountries.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountryCallingCode.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountryCallingCode.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountryCallingCode.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountryCallingCode.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getExampleNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getExampleNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getExampleNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getExampleNumber.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getNumberType.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getNumberType.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getNumberType.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getNumberType.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/RFC3966.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/RFC3966.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/RFC3966.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/RFC3966.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/applyInternationalSeparatorStyle.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/applyInternationalSeparatorStyle.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/applyInternationalSeparatorStyle.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/applyInternationalSeparatorStyle.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/checkNumberLength.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/checkNumberLength.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/checkNumberLength.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/checkNumberLength.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extension/createExtensionPattern.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extension/createExtensionPattern.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extension/extractExtension.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extension/extractExtension.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractCountryCallingCode.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractCountryCallingCode.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractCountryCallingCode.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractCountryCallingCode.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumber.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumberFromPossiblyIncompleteNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumberFromPossiblyIncompleteNumber.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/formatNationalNumberUsingFormat.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/formatNationalNumberUsingFormat.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getCountryByCallingCode.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getCountryByCallingCode.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getIddPrefix.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getIddPrefix.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getNumberType.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getNumberType.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getNumberType.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getNumberType.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/isViablePhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/isViablePhoneNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/matchesEntirely.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/matchesEntirely.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/matchesEntirely.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/matchesEntirely.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/mergeArrays.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/mergeArrays.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/mergeArrays.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/mergeArrays.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/parseDigits.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/parseDigits.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/parseDigits.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/parseDigits.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/stripIddPrefix.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/stripIddPrefix.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/stripIddPrefix.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/stripIddPrefix.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossibleNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossibleNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossibleNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossibleNumber.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossibleNumber_.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossibleNumber_.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossiblePhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossiblePhoneNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossiblePhoneNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossiblePhoneNumber.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidNumberForRegion.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidNumberForRegion.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidNumberForRegion.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidNumberForRegion.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidNumberForRegion_.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidNumberForRegion_.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidPhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidPhoneNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidPhoneNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidPhoneNumber.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/metadata.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/metadata.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/metadata.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/metadata.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/package.json create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parse.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parse.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parse.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parse.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parseIncompletePhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parseIncompletePhoneNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parseIncompletePhoneNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parseIncompletePhoneNumber.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumber.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumberFromString.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumberFromString.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumberFromString.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumberFromString.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumberFromString_.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumberFromString_.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumber_.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumber_.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parse_.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parse_.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchNumbers.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchNumbers.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchNumbers.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchNumbers.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchPhoneNumbersInText.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchPhoneNumbersInText.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchPhoneNumbersInText.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchPhoneNumbersInText.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/tools/semver-compare.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/tools/semver-compare.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/tools/semver-compare.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/tools/semver-compare.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validate.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validate.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validate.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validatePhoneNumberLength.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validatePhoneNumberLength.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validatePhoneNumberLength.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validatePhoneNumberLength.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validate_.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validate_.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-js.min.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-js.min.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-max.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-max.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-min.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-min.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-mobile.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-mobile.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/core/index.cjs create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/core/index.cjs.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/core/index.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/core/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/core/package.json create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/custom.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/custom.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouType.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouType.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouType.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouType.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternMatcher.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternMatcher.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternMatcher.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternMatcher.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternParser.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternParser.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternParser.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternParser.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.complete.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.complete.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.util.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.util.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.util.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.util.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeParser.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeParser.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeState.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeState.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/ParseError.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/ParseError.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumber.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumberMatcher.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumberMatcher.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumberMatcher.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumberMatcher.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/constants.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/constants.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/LRUCache.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/LRUCache.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/Leniency.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/Leniency.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/Leniency.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/Leniency.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/RegExpCache.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/RegExpCache.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/isValidCandidate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/isValidCandidate.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/isValidPreCandidate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/isValidPreCandidate.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/parsePreCandidate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/parsePreCandidate.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/utf-8.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/utf-8.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/util.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/util.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/util.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/util.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers_.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers_.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbers.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbers.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbers.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbers.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbersInText.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbersInText.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbersInText.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbersInText.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbers_.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbers_.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/format.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/format.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/format.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/format.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatIncompletePhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatIncompletePhoneNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatIncompletePhoneNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatIncompletePhoneNumber.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatNumberForMobileDialing.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatNumberForMobileDialing.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatNumberForMobileDialing.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatNumberForMobileDialing.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/format_.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/format_.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountries.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountries.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountries.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountries.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountryCallingCode.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountryCallingCode.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountryCallingCode.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountryCallingCode.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getExampleNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getExampleNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getExampleNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getExampleNumber.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getNumberType.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getNumberType.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getNumberType.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getNumberType.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/RFC3966.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/RFC3966.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/RFC3966.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/RFC3966.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/checkNumberLength.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/checkNumberLength.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/checkNumberLength.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/checkNumberLength.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extension/createExtensionPattern.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extension/createExtensionPattern.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extension/extractExtension.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extension/extractExtension.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/formatNationalNumberUsingFormat.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/formatNationalNumberUsingFormat.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getCountryByCallingCode.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getCountryByCallingCode.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getIddPrefix.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getIddPrefix.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getNumberType.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getNumberType.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getNumberType.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getNumberType.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/isViablePhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/isViablePhoneNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/matchesEntirely.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/matchesEntirely.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/matchesEntirely.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/matchesEntirely.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/mergeArrays.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/mergeArrays.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/mergeArrays.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/mergeArrays.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/parseDigits.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/parseDigits.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/parseDigits.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/parseDigits.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossibleNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossibleNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossibleNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossibleNumber.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossibleNumber_.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossibleNumber_.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossiblePhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossiblePhoneNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossiblePhoneNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossiblePhoneNumber.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidNumberForRegion.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidNumberForRegion.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidNumberForRegion.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidNumberForRegion.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidNumberForRegion_.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidNumberForRegion_.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidPhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidPhoneNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidPhoneNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidPhoneNumber.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/metadata.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/metadata.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/metadata.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/metadata.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parse.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parse.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parse.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parse.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumber.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumber.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumberFromString.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumberFromString.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumberFromString.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumberFromString.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumberFromString_.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumberFromString_.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumber_.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumber_.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parse_.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parse_.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchNumbers.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchNumbers.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchNumbers.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchNumbers.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchPhoneNumbersInText.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchPhoneNumbersInText.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchPhoneNumbersInText.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchPhoneNumbersInText.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/tools/semver-compare.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/tools/semver-compare.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/tools/semver-compare.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/tools/semver-compare.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validate.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validate.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validate.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validatePhoneNumberLength.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validatePhoneNumberLength.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validatePhoneNumberLength.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validatePhoneNumberLength.test.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validate_.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validate_.js.map create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/examples.mobile.json create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/examples.mobile.json.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/examples.mobile.json.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.cjs create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.cjs.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/PhoneNumberSearch.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/findPhoneNumbers.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/format.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/getNumberType.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/isPossibleNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/isValidNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/isValidNumberForRegion.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/parse.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/searchPhoneNumbers.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/AsYouType.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/Metadata.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/PhoneNumberMatcher.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/findNumbers.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/findPhoneNumbersInText.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/formatIncompletePhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/getCountries.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/getCountryCallingCode.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/getExampleNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/getExtPrefix.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/isPossiblePhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/isSupportedCountry.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/isValidPhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/parsePhoneNumberFromString.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/parsePhoneNumberWithError.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/searchNumbers.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/searchPhoneNumbersInText.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/validatePhoneNumberLength.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/withMetadataArgument.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/index.cjs create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/index.cjs.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/metadata/package.json create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/package.json create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.full.json create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.full.json.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.full.json.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.max.json create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.max.json.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.max.json.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.min.json create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.min.json.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.min.json.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.mobile.json create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.mobile.json.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.mobile.json.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/AsYouType.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/Metadata.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/PhoneNumberMatcher.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/findNumbers.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/findPhoneNumbersInText.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/formatIncompletePhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/getCountries.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/getCountryCallingCode.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/getExampleNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/getExtPrefix.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/isPossiblePhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/isSupportedCountry.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/isValidPhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/parsePhoneNumberFromString.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/parsePhoneNumberWithError.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/searchNumbers.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/searchPhoneNumbersInText.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/validatePhoneNumberLength.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/withMetadataArgument.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/index.cjs create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/index.cjs.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/index.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/metadata/package.json create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/package.json create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/examples/package.json create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/AsYouType.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/Metadata.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/PhoneNumberMatcher.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/findNumbers.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/findPhoneNumbersInText.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/formatIncompletePhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/getCountries.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/getCountryCallingCode.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/getExampleNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/getExtPrefix.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/isPossiblePhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/isSupportedCountry.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/isValidPhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/parsePhoneNumberFromString.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/parsePhoneNumberWithError.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/searchNumbers.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/searchPhoneNumbersInText.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/validatePhoneNumberLength.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/withMetadataArgument.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/index.cjs create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/index.cjs.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/metadata/package.json create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/package.json create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/package.json create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/rollup.config.mjs create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/create-commonjs-package-json.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/download.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/generate-country-codes.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/generate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/json-to-js.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/metadata-branch.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/metadata-update-and-push-and-pull-request.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/metadata-update-and-push.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/metadata-update-and-release.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/modules/commit.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/modules/exec.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/modules/update-metadata.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouType.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouType.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternMatcher.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternMatcher.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternMatcher.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternParser.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternParser.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternParser.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.complete.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.util.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.util.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeParser.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeState.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/ParseError.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/PhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/PhoneNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/PhoneNumberMatcher.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/PhoneNumberMatcher.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/constants.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/LRUCache.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/Leniency.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/Leniency.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/RegExpCache.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/isValidCandidate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/isValidPreCandidate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/parsePreCandidate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/utf-8.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/util.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/util.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers_.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findPhoneNumbers.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findPhoneNumbers.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findPhoneNumbersInText.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findPhoneNumbersInText.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findPhoneNumbers_.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/format.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/format.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/formatIncompletePhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/formatIncompletePhoneNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/formatNumberForMobileDialing.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/formatNumberForMobileDialing.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/format_.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getCountries.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getCountries.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getCountryCallingCode.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getCountryCallingCode.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getExampleNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getExampleNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getNumberType.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getNumberType.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/RFC3966.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/RFC3966.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/applyInternationalSeparatorStyle.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/applyInternationalSeparatorStyle.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/checkNumberLength.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/checkNumberLength.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extension/createExtensionPattern.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extension/extractExtension.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractCountryCallingCode.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractCountryCallingCode.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractNationalNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractNationalNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractNationalNumberFromPossiblyIncompleteNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/formatNationalNumberUsingFormat.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/getCountryByCallingCode.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/getIddPrefix.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/getNumberType.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/getNumberType.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/isViablePhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/matchesEntirely.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/matchesEntirely.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/mergeArrays.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/mergeArrays.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/parseDigits.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/parseDigits.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/stripIddPrefix.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/stripIddPrefix.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isPossibleNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isPossibleNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isPossibleNumber_.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isPossiblePhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isPossiblePhoneNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isValidNumberForRegion.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isValidNumberForRegion.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isValidNumberForRegion_.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isValidPhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isValidPhoneNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/metadata.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/metadata.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parse.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parse.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parseIncompletePhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parseIncompletePhoneNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parsePhoneNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parsePhoneNumber.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parsePhoneNumberFromString.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parsePhoneNumberFromString.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parsePhoneNumberFromString_.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parsePhoneNumber_.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parse_.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/searchNumbers.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/searchNumbers.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/searchPhoneNumbersInText.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/searchPhoneNumbersInText.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/tools/semver-compare.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/tools/semver-compare.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/validate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/validate.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/validatePhoneNumberLength.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/validatePhoneNumberLength.test.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/validate_.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/types.d.ts create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/LICENSE create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/README.md create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/alpha.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/blacklist.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/contains.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/equals.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/escape.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isAfter.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isAlpha.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isAlphanumeric.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isAscii.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBIC.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBase32.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBase58.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBase64.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBefore.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBoolean.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBtcAddress.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isByteLength.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isCreditCard.js create mode 100755 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isCurrency.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isDataURI.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isDate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isDecimal.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isDivisibleBy.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isEAN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isEmail.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isEmpty.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isEthereumAddress.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isFQDN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isFloat.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isFullWidth.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isHSL.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isHalfWidth.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isHash.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isHexColor.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isHexadecimal.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isIBAN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isIMEI.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isIP.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isIPRange.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISBN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISIN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISO31661Alpha2.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISO31661Alpha3.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISO4217.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISO8601.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISRC.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISSN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isIdentityCard.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isIn.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isInt.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isJSON.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isJWT.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isLatLong.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isLength.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isLicensePlate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isLocale.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isLowercase.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMACAddress.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMD5.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMagnetURI.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMimeType.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMobilePhone.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMongoId.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMultibyte.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isNumeric.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isOctal.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isPassportNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isPort.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isPostalCode.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isRFC3339.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isRgbColor.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isSemVer.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isSlug.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isStrongPassword.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isSurrogatePair.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isTaxID.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isURL.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isUUID.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isUppercase.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isVAT.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isVariableWidth.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isWhitelisted.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/ltrim.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/matches.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/normalizeEmail.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/rtrim.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/stripLow.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/toBoolean.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/toDate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/toFloat.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/toInt.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/trim.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/unescape.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/algorithms.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/assertString.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/includes.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/merge.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/multilineRegex.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/toString.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/typeOf.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/whitelist.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/index.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/alpha.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/blacklist.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/contains.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/equals.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/escape.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isAfter.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isAlpha.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isAlphanumeric.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isAscii.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBIC.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBase32.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBase58.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBase64.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBefore.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBoolean.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBtcAddress.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isByteLength.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isCreditCard.js create mode 100755 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isCurrency.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isDataURI.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isDate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isDecimal.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isDivisibleBy.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isEAN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isEmail.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isEmpty.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isEthereumAddress.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isFQDN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isFloat.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isFullWidth.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isHSL.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isHalfWidth.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isHash.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isHexColor.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isHexadecimal.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isIBAN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isIMEI.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isIP.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isIPRange.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISBN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISIN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISO31661Alpha2.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISO31661Alpha3.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISO4217.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISO8601.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISRC.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISSN.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isIdentityCard.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isIn.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isInt.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isJSON.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isJWT.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isLatLong.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isLength.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isLicensePlate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isLocale.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isLowercase.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMACAddress.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMD5.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMagnetURI.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMimeType.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMobilePhone.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMongoId.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMultibyte.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isNumeric.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isOctal.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isPassportNumber.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isPort.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isPostalCode.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isRFC3339.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isRgbColor.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isSemVer.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isSlug.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isStrongPassword.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isSurrogatePair.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isTaxID.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isURL.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isUUID.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isUppercase.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isVAT.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isVariableWidth.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/isWhitelisted.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/ltrim.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/matches.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/normalizeEmail.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/rtrim.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/stripLow.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/toBoolean.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/toDate.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/toFloat.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/toInt.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/trim.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/unescape.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/algorithms.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/assertString.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/includes.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/merge.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/multilineRegex.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/toString.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/typeOf.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/lib/whitelist.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/package.json create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/validator.js create mode 100644 srcs/requirements/nestjs/api_back/node_modules/validator/validator.min.js create mode 100644 srcs/requirements/nestjs/api_back/src/users/dto/create-users.dto.ts create mode 100644 srcs/requirements/nestjs/api_back/src/users/dto/update-users.dto.ts diff --git a/srcs/requirements/nestjs/api_back/dist/main.js b/srcs/requirements/nestjs/api_back/dist/main.js index 58cc36a0..42496536 100644 --- a/srcs/requirements/nestjs/api_back/dist/main.js +++ b/srcs/requirements/nestjs/api_back/dist/main.js @@ -1,9 +1,15 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const core_1 = require("@nestjs/core"); +const common_1 = require("@nestjs/common"); const app_module_1 = require("./app.module"); async function bootstrap() { const app = await core_1.NestFactory.create(app_module_1.AppModule); + app.useGlobalPipes(new common_1.ValidationPipe({ + whitelist: true, + forbidNonWhitelisted: true, + transform: true, + })); await app.listen(3000); } bootstrap(); diff --git a/srcs/requirements/nestjs/api_back/dist/main.js.map b/srcs/requirements/nestjs/api_back/dist/main.js.map index 760f9f8f..254b557c 100644 --- a/srcs/requirements/nestjs/api_back/dist/main.js.map +++ b/srcs/requirements/nestjs/api_back/dist/main.js.map @@ -1 +1 @@ -{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;AAAA,uCAA2C;AAC3C,6CAAyC;AAEzC,KAAK,UAAU,SAAS;IAEtB,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,sBAAS,CAAC,CAAC;IAChD,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AACD,SAAS,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;AAAA,uCAA2C;AAC3C,2CAAgD;AAChD,6CAAyC;AAEzC,KAAK,UAAU,SAAS;IAEtB,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,sBAAS,CAAC,CAAC;IAGhD,GAAG,CAAC,cAAc,CACnB,IAAI,uBAAc,CAAC;QAElB,SAAS,EAAE,IAAI;QAEf,oBAAoB,EAAE,IAAI;QAE1B,SAAS,EAAE,IAAI;KACf,CAAC,CACA,CAAC;IACF,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AACD,SAAS,EAAE,CAAC"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/src/users/dto/update-users.dto.d.ts b/srcs/requirements/nestjs/api_back/dist/src/users/dto/update-users.dto.d.ts new file mode 100644 index 00000000..87db7aa1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/src/users/dto/update-users.dto.d.ts @@ -0,0 +1,2 @@ +export declare class UpdateUsersDto { +} diff --git a/srcs/requirements/nestjs/api_back/dist/src/users/dto/update-users.dto.js b/srcs/requirements/nestjs/api_back/dist/src/users/dto/update-users.dto.js new file mode 100644 index 00000000..c70446c7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/src/users/dto/update-users.dto.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.UpdateUsersDto = void 0; +class UpdateUsersDto { +} +exports.UpdateUsersDto = UpdateUsersDto; +//# sourceMappingURL=update-users.dto.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/src/users/dto/update-users.dto.js.map b/srcs/requirements/nestjs/api_back/dist/src/users/dto/update-users.dto.js.map new file mode 100644 index 00000000..4789e17a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/src/users/dto/update-users.dto.js.map @@ -0,0 +1 @@ +{"version":3,"file":"update-users.dto.js","sourceRoot":"","sources":["../../../../src/src/users/dto/update-users.dto.ts"],"names":[],"mappings":";;;AAAA,MAAa,cAAc;CAAG;AAA9B,wCAA8B"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/tsconfig.build.tsbuildinfo b/srcs/requirements/nestjs/api_back/dist/tsconfig.build.tsbuildinfo index f2354df7..60f7e316 100644 --- a/srcs/requirements/nestjs/api_back/dist/tsconfig.build.tsbuildinfo +++ b/srcs/requirements/nestjs/api_back/dist/tsconfig.build.tsbuildinfo @@ -1 +1 @@ -{"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../node_modules/typescript/lib/lib.scripthost.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/typescript/lib/lib.es2017.full.d.ts","../node_modules/reflect-metadata/index.d.ts","../node_modules/@nestjs/common/cache/cache.constants.d.ts","../node_modules/@nestjs/common/interfaces/abstract.interface.d.ts","../node_modules/@nestjs/common/interfaces/controllers/controller-metadata.interface.d.ts","../node_modules/@nestjs/common/interfaces/controllers/controller.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/arguments-host.interface.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/exception-filter.interface.d.ts","../node_modules/rxjs/dist/types/internal/Subscription.d.ts","../node_modules/rxjs/dist/types/internal/Subscriber.d.ts","../node_modules/rxjs/dist/types/internal/Operator.d.ts","../node_modules/rxjs/dist/types/internal/Observable.d.ts","../node_modules/rxjs/dist/types/internal/types.d.ts","../node_modules/rxjs/dist/types/internal/operators/audit.d.ts","../node_modules/rxjs/dist/types/internal/operators/auditTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/buffer.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferCount.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferToggle.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/catchError.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineLatestAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineLatest.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineLatestWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/concat.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatMapTo.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/connect.d.ts","../node_modules/rxjs/dist/types/internal/operators/count.d.ts","../node_modules/rxjs/dist/types/internal/operators/debounce.d.ts","../node_modules/rxjs/dist/types/internal/operators/debounceTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/defaultIfEmpty.d.ts","../node_modules/rxjs/dist/types/internal/operators/delay.d.ts","../node_modules/rxjs/dist/types/internal/operators/delayWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/dematerialize.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinct.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinctUntilChanged.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinctUntilKeyChanged.d.ts","../node_modules/rxjs/dist/types/internal/operators/elementAt.d.ts","../node_modules/rxjs/dist/types/internal/operators/endWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/every.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaustAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaust.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaustMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/expand.d.ts","../node_modules/rxjs/dist/types/internal/operators/filter.d.ts","../node_modules/rxjs/dist/types/internal/operators/finalize.d.ts","../node_modules/rxjs/dist/types/internal/operators/find.d.ts","../node_modules/rxjs/dist/types/internal/operators/findIndex.d.ts","../node_modules/rxjs/dist/types/internal/operators/first.d.ts","../node_modules/rxjs/dist/types/internal/Subject.d.ts","../node_modules/rxjs/dist/types/internal/operators/groupBy.d.ts","../node_modules/rxjs/dist/types/internal/operators/ignoreElements.d.ts","../node_modules/rxjs/dist/types/internal/operators/isEmpty.d.ts","../node_modules/rxjs/dist/types/internal/operators/last.d.ts","../node_modules/rxjs/dist/types/internal/operators/map.d.ts","../node_modules/rxjs/dist/types/internal/operators/mapTo.d.ts","../node_modules/rxjs/dist/types/internal/Notification.d.ts","../node_modules/rxjs/dist/types/internal/operators/materialize.d.ts","../node_modules/rxjs/dist/types/internal/operators/max.d.ts","../node_modules/rxjs/dist/types/internal/operators/merge.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/flatMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeMapTo.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeScan.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/min.d.ts","../node_modules/rxjs/dist/types/internal/observable/ConnectableObservable.d.ts","../node_modules/rxjs/dist/types/internal/operators/multicast.d.ts","../node_modules/rxjs/dist/types/internal/operators/observeOn.d.ts","../node_modules/rxjs/dist/types/internal/operators/onErrorResumeNext.d.ts","../node_modules/rxjs/dist/types/internal/operators/pairwise.d.ts","../node_modules/rxjs/dist/types/internal/operators/partition.d.ts","../node_modules/rxjs/dist/types/internal/operators/pluck.d.ts","../node_modules/rxjs/dist/types/internal/operators/publish.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishBehavior.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishLast.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishReplay.d.ts","../node_modules/rxjs/dist/types/internal/operators/race.d.ts","../node_modules/rxjs/dist/types/internal/operators/raceWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/reduce.d.ts","../node_modules/rxjs/dist/types/internal/operators/repeat.d.ts","../node_modules/rxjs/dist/types/internal/operators/repeatWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/retry.d.ts","../node_modules/rxjs/dist/types/internal/operators/retryWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/refCount.d.ts","../node_modules/rxjs/dist/types/internal/operators/sample.d.ts","../node_modules/rxjs/dist/types/internal/operators/sampleTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/scan.d.ts","../node_modules/rxjs/dist/types/internal/operators/sequenceEqual.d.ts","../node_modules/rxjs/dist/types/internal/operators/share.d.ts","../node_modules/rxjs/dist/types/internal/operators/shareReplay.d.ts","../node_modules/rxjs/dist/types/internal/operators/single.d.ts","../node_modules/rxjs/dist/types/internal/operators/skip.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipLast.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipUntil.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipWhile.d.ts","../node_modules/rxjs/dist/types/internal/operators/startWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/subscribeOn.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchMapTo.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchScan.d.ts","../node_modules/rxjs/dist/types/internal/operators/take.d.ts","../node_modules/rxjs/dist/types/internal/operators/takeLast.d.ts","../node_modules/rxjs/dist/types/internal/operators/takeUntil.d.ts","../node_modules/rxjs/dist/types/internal/operators/takeWhile.d.ts","../node_modules/rxjs/dist/types/internal/operators/tap.d.ts","../node_modules/rxjs/dist/types/internal/operators/throttle.d.ts","../node_modules/rxjs/dist/types/internal/operators/throttleTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/throwIfEmpty.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeInterval.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeout.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeoutWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/timestamp.d.ts","../node_modules/rxjs/dist/types/internal/operators/toArray.d.ts","../node_modules/rxjs/dist/types/internal/operators/window.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowCount.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowToggle.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/withLatestFrom.d.ts","../node_modules/rxjs/dist/types/internal/operators/zip.d.ts","../node_modules/rxjs/dist/types/internal/operators/zipAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/zipWith.d.ts","../node_modules/rxjs/dist/types/operators/index.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/Action.d.ts","../node_modules/rxjs/dist/types/internal/Scheduler.d.ts","../node_modules/rxjs/dist/types/internal/testing/TestMessage.d.ts","../node_modules/rxjs/dist/types/internal/testing/SubscriptionLog.d.ts","../node_modules/rxjs/dist/types/internal/testing/SubscriptionLoggable.d.ts","../node_modules/rxjs/dist/types/internal/testing/ColdObservable.d.ts","../node_modules/rxjs/dist/types/internal/testing/HotObservable.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/AsyncScheduler.d.ts","../node_modules/@types/node/ts4.8/assert.d.ts","../node_modules/@types/node/ts4.8/assert/strict.d.ts","../node_modules/@types/node/ts4.8/globals.d.ts","../node_modules/@types/node/ts4.8/async_hooks.d.ts","../node_modules/@types/node/ts4.8/buffer.d.ts","../node_modules/@types/node/ts4.8/child_process.d.ts","../node_modules/@types/node/ts4.8/cluster.d.ts","../node_modules/@types/node/ts4.8/console.d.ts","../node_modules/@types/node/ts4.8/constants.d.ts","../node_modules/@types/node/ts4.8/crypto.d.ts","../node_modules/@types/node/ts4.8/dgram.d.ts","../node_modules/@types/node/ts4.8/diagnostics_channel.d.ts","../node_modules/@types/node/ts4.8/dns.d.ts","../node_modules/@types/node/ts4.8/dns/promises.d.ts","../node_modules/@types/node/ts4.8/domain.d.ts","../node_modules/@types/node/ts4.8/events.d.ts","../node_modules/@types/node/ts4.8/fs.d.ts","../node_modules/@types/node/ts4.8/fs/promises.d.ts","../node_modules/@types/node/ts4.8/http.d.ts","../node_modules/@types/node/ts4.8/http2.d.ts","../node_modules/@types/node/ts4.8/https.d.ts","../node_modules/@types/node/ts4.8/inspector.d.ts","../node_modules/@types/node/ts4.8/module.d.ts","../node_modules/@types/node/ts4.8/net.d.ts","../node_modules/@types/node/ts4.8/os.d.ts","../node_modules/@types/node/ts4.8/path.d.ts","../node_modules/@types/node/ts4.8/perf_hooks.d.ts","../node_modules/@types/node/ts4.8/process.d.ts","../node_modules/@types/node/ts4.8/punycode.d.ts","../node_modules/@types/node/ts4.8/querystring.d.ts","../node_modules/@types/node/ts4.8/readline.d.ts","../node_modules/@types/node/ts4.8/repl.d.ts","../node_modules/@types/node/ts4.8/stream.d.ts","../node_modules/@types/node/ts4.8/stream/promises.d.ts","../node_modules/@types/node/ts4.8/stream/consumers.d.ts","../node_modules/@types/node/ts4.8/stream/web.d.ts","../node_modules/@types/node/ts4.8/string_decoder.d.ts","../node_modules/@types/node/ts4.8/test.d.ts","../node_modules/@types/node/ts4.8/timers.d.ts","../node_modules/@types/node/ts4.8/timers/promises.d.ts","../node_modules/@types/node/ts4.8/tls.d.ts","../node_modules/@types/node/ts4.8/trace_events.d.ts","../node_modules/@types/node/ts4.8/tty.d.ts","../node_modules/@types/node/ts4.8/url.d.ts","../node_modules/@types/node/ts4.8/util.d.ts","../node_modules/@types/node/ts4.8/v8.d.ts","../node_modules/@types/node/ts4.8/vm.d.ts","../node_modules/@types/node/ts4.8/wasi.d.ts","../node_modules/@types/node/ts4.8/worker_threads.d.ts","../node_modules/@types/node/ts4.8/zlib.d.ts","../node_modules/@types/node/ts4.8/globals.global.d.ts","../node_modules/@types/node/ts4.8/index.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/timerHandle.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/AsyncAction.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/VirtualTimeScheduler.d.ts","../node_modules/rxjs/dist/types/internal/testing/TestScheduler.d.ts","../node_modules/rxjs/dist/types/testing/index.d.ts","../node_modules/rxjs/dist/types/internal/symbol/observable.d.ts","../node_modules/rxjs/dist/types/internal/observable/dom/animationFrames.d.ts","../node_modules/rxjs/dist/types/internal/BehaviorSubject.d.ts","../node_modules/rxjs/dist/types/internal/ReplaySubject.d.ts","../node_modules/rxjs/dist/types/internal/AsyncSubject.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/AsapScheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/asap.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/async.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/QueueScheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/queue.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/AnimationFrameScheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/animationFrame.d.ts","../node_modules/rxjs/dist/types/internal/util/identity.d.ts","../node_modules/rxjs/dist/types/internal/util/pipe.d.ts","../node_modules/rxjs/dist/types/internal/util/noop.d.ts","../node_modules/rxjs/dist/types/internal/util/isObservable.d.ts","../node_modules/rxjs/dist/types/internal/lastValueFrom.d.ts","../node_modules/rxjs/dist/types/internal/firstValueFrom.d.ts","../node_modules/rxjs/dist/types/internal/util/ArgumentOutOfRangeError.d.ts","../node_modules/rxjs/dist/types/internal/util/EmptyError.d.ts","../node_modules/rxjs/dist/types/internal/util/NotFoundError.d.ts","../node_modules/rxjs/dist/types/internal/util/ObjectUnsubscribedError.d.ts","../node_modules/rxjs/dist/types/internal/util/SequenceError.d.ts","../node_modules/rxjs/dist/types/internal/util/UnsubscriptionError.d.ts","../node_modules/rxjs/dist/types/internal/observable/bindCallback.d.ts","../node_modules/rxjs/dist/types/internal/observable/bindNodeCallback.d.ts","../node_modules/rxjs/dist/types/internal/AnyCatcher.d.ts","../node_modules/rxjs/dist/types/internal/observable/combineLatest.d.ts","../node_modules/rxjs/dist/types/internal/observable/concat.d.ts","../node_modules/rxjs/dist/types/internal/observable/connectable.d.ts","../node_modules/rxjs/dist/types/internal/observable/defer.d.ts","../node_modules/rxjs/dist/types/internal/observable/empty.d.ts","../node_modules/rxjs/dist/types/internal/observable/forkJoin.d.ts","../node_modules/rxjs/dist/types/internal/observable/from.d.ts","../node_modules/rxjs/dist/types/internal/observable/fromEvent.d.ts","../node_modules/rxjs/dist/types/internal/observable/fromEventPattern.d.ts","../node_modules/rxjs/dist/types/internal/observable/generate.d.ts","../node_modules/rxjs/dist/types/internal/observable/iif.d.ts","../node_modules/rxjs/dist/types/internal/observable/interval.d.ts","../node_modules/rxjs/dist/types/internal/observable/merge.d.ts","../node_modules/rxjs/dist/types/internal/observable/never.d.ts","../node_modules/rxjs/dist/types/internal/observable/of.d.ts","../node_modules/rxjs/dist/types/internal/observable/onErrorResumeNext.d.ts","../node_modules/rxjs/dist/types/internal/observable/pairs.d.ts","../node_modules/rxjs/dist/types/internal/observable/partition.d.ts","../node_modules/rxjs/dist/types/internal/observable/race.d.ts","../node_modules/rxjs/dist/types/internal/observable/range.d.ts","../node_modules/rxjs/dist/types/internal/observable/throwError.d.ts","../node_modules/rxjs/dist/types/internal/observable/timer.d.ts","../node_modules/rxjs/dist/types/internal/observable/using.d.ts","../node_modules/rxjs/dist/types/internal/observable/zip.d.ts","../node_modules/rxjs/dist/types/internal/scheduled/scheduled.d.ts","../node_modules/rxjs/dist/types/internal/config.d.ts","../node_modules/rxjs/dist/types/index.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/rpc-exception-filter.interface.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/ws-exception-filter.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validation-error.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/execution-context.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/can-activate.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/custom-route-param-factory.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/nest-interceptor.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/paramtype.interface.d.ts","../node_modules/@nestjs/common/interfaces/type.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/pipe-transform.interface.d.ts","../node_modules/@nestjs/common/enums/request-method.enum.d.ts","../node_modules/@nestjs/common/enums/http-status.enum.d.ts","../node_modules/@nestjs/common/enums/shutdown-signal.enum.d.ts","../node_modules/@nestjs/common/enums/version-type.enum.d.ts","../node_modules/@nestjs/common/enums/index.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-configuration.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-consumer.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-config-proxy.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/nest-middleware.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/index.d.ts","../node_modules/@nestjs/common/interfaces/global-prefix-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/before-application-shutdown.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-application-bootstrap.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-application-shutdown.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-destroy.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-init.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/index.d.ts","../node_modules/@nestjs/common/interfaces/external/cors-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/https-options.interface.d.ts","../node_modules/@nestjs/common/services/logger.service.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-context-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/version-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/http-server.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/message-event.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/raw-body-request.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/index.d.ts","../node_modules/@nestjs/common/interfaces/injectable.interface.d.ts","../node_modules/@nestjs/common/interfaces/microservices/nest-hybrid-application-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/forward-reference.interface.d.ts","../node_modules/@nestjs/common/interfaces/scope-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/injection-token.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/optional-factory-dependency.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/provider.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/module-metadata.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/dynamic-module.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/introspection-result.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/nest-module.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/index.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-context.interface.d.ts","../node_modules/@nestjs/common/interfaces/websockets/web-socket-adapter.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-application.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-microservice.interface.d.ts","../node_modules/@nestjs/common/interfaces/index.d.ts","../node_modules/@nestjs/common/module-utils/constants.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-async-options.interface.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-cls.interface.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-host.interface.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/index.d.ts","../node_modules/@nestjs/common/module-utils/configurable-module.builder.d.ts","../node_modules/@nestjs/common/module-utils/index.d.ts","../node_modules/@nestjs/common/cache/interfaces/cache-manager.interface.d.ts","../node_modules/@nestjs/common/cache/interfaces/cache-module.interface.d.ts","../node_modules/@nestjs/common/cache/cache.module-definition.d.ts","../node_modules/@nestjs/common/cache/cache.module.d.ts","../node_modules/@nestjs/common/decorators/core/bind.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/catch.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/controller.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/dependencies.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/exception-filters.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/inject.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/injectable.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/optional.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/set-metadata.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-guards.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-interceptors.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-pipes.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/apply-decorators.d.ts","../node_modules/@nestjs/common/decorators/core/version.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/index.d.ts","../node_modules/@nestjs/common/decorators/modules/global.decorator.d.ts","../node_modules/@nestjs/common/decorators/modules/module.decorator.d.ts","../node_modules/@nestjs/common/decorators/modules/index.d.ts","../node_modules/@nestjs/common/decorators/http/request-mapping.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/route-params.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/http-code.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/create-route-param-metadata.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/render.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/header.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/redirect.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/sse.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/index.d.ts","../node_modules/@nestjs/common/decorators/index.d.ts","../node_modules/@nestjs/common/cache/decorators/cache-key.decorator.d.ts","../node_modules/@nestjs/common/cache/decorators/cache-ttl.decorator.d.ts","../node_modules/@nestjs/common/cache/decorators/index.d.ts","../node_modules/@nestjs/common/cache/interceptors/cache.interceptor.d.ts","../node_modules/@nestjs/common/cache/interceptors/index.d.ts","../node_modules/@nestjs/common/cache/interfaces/index.d.ts","../node_modules/@nestjs/common/cache/index.d.ts","../node_modules/@nestjs/common/exceptions/http.exception.d.ts","../node_modules/@nestjs/common/exceptions/bad-request.exception.d.ts","../node_modules/@nestjs/common/exceptions/unauthorized.exception.d.ts","../node_modules/@nestjs/common/exceptions/method-not-allowed.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-found.exception.d.ts","../node_modules/@nestjs/common/exceptions/forbidden.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-acceptable.exception.d.ts","../node_modules/@nestjs/common/exceptions/request-timeout.exception.d.ts","../node_modules/@nestjs/common/exceptions/conflict.exception.d.ts","../node_modules/@nestjs/common/exceptions/gone.exception.d.ts","../node_modules/@nestjs/common/exceptions/payload-too-large.exception.d.ts","../node_modules/@nestjs/common/exceptions/unsupported-media-type.exception.d.ts","../node_modules/@nestjs/common/exceptions/unprocessable-entity.exception.d.ts","../node_modules/@nestjs/common/exceptions/internal-server-error.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-implemented.exception.d.ts","../node_modules/@nestjs/common/exceptions/http-version-not-supported.exception.d.ts","../node_modules/@nestjs/common/exceptions/bad-gateway.exception.d.ts","../node_modules/@nestjs/common/exceptions/service-unavailable.exception.d.ts","../node_modules/@nestjs/common/exceptions/gateway-timeout.exception.d.ts","../node_modules/@nestjs/common/exceptions/im-a-teapot.exception.d.ts","../node_modules/@nestjs/common/exceptions/precondition-failed.exception.d.ts","../node_modules/@nestjs/common/exceptions/misdirected.exception.d.ts","../node_modules/@nestjs/common/exceptions/index.d.ts","../node_modules/@nestjs/common/file-stream/streamable-options.interface.d.ts","../node_modules/@nestjs/common/file-stream/streamable-file.d.ts","../node_modules/@nestjs/common/file-stream/index.d.ts","../node_modules/@nestjs/common/pipes/default-value.pipe.d.ts","../node_modules/@nestjs/common/interfaces/external/class-transform-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/transformer-package.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validator-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validator-package.interface.d.ts","../node_modules/@nestjs/common/utils/http-error-by-code.util.d.ts","../node_modules/@nestjs/common/pipes/validation.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-array.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-bool.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-int.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-float.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-enum.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-uuid.pipe.d.ts","../node_modules/@nestjs/common/pipes/file/file-validator.interface.d.ts","../node_modules/@nestjs/common/pipes/file/file-type.validator.d.ts","../node_modules/@nestjs/common/pipes/file/max-file-size.validator.d.ts","../node_modules/@nestjs/common/pipes/file/parse-file-options.interface.d.ts","../node_modules/@nestjs/common/pipes/file/parse-file.pipe.d.ts","../node_modules/@nestjs/common/pipes/file/parse-file-pipe.builder.d.ts","../node_modules/@nestjs/common/pipes/file/index.d.ts","../node_modules/@nestjs/common/pipes/index.d.ts","../node_modules/@nestjs/common/serializer/class-serializer.interfaces.d.ts","../node_modules/@nestjs/common/serializer/class-serializer.interceptor.d.ts","../node_modules/@nestjs/common/serializer/decorators/serialize-options.decorator.d.ts","../node_modules/@nestjs/common/serializer/decorators/index.d.ts","../node_modules/@nestjs/common/serializer/index.d.ts","../node_modules/@nestjs/common/services/console-logger.service.d.ts","../node_modules/@nestjs/common/services/index.d.ts","../node_modules/@nestjs/common/utils/forward-ref.util.d.ts","../node_modules/@nestjs/common/utils/index.d.ts","../node_modules/@nestjs/common/index.d.ts","../src/app.service.ts","../src/app.controller.ts","../src/users/entities/user.entity.ts","../src/users/users.service.ts","../src/auth/auth.service.ts","../src/users/users.controller.ts","../src/users/users.module.ts","../src/auth/auth.module.ts","../src/app.module.ts","../node_modules/@nestjs/core/adapters/http-adapter.d.ts","../node_modules/@nestjs/core/adapters/index.d.ts","../node_modules/@nestjs/core/injector/module-token-factory.d.ts","../node_modules/@nestjs/core/injector/compiler.d.ts","../node_modules/@nestjs/core/injector/modules-container.d.ts","../node_modules/@nestjs/core/injector/container.d.ts","../node_modules/@nestjs/core/injector/module-ref.d.ts","../node_modules/@nestjs/core/injector/module.d.ts","../node_modules/@nestjs/core/injector/instance-wrapper.d.ts","../node_modules/@nestjs/core/router/interfaces/exclude-route-metadata.interface.d.ts","../node_modules/@nestjs/core/application-config.d.ts","../node_modules/@nestjs/core/constants.d.ts","../node_modules/@nestjs/core/discovery/discovery-module.d.ts","../node_modules/@nestjs/core/discovery/discovery-service.d.ts","../node_modules/@nestjs/core/discovery/index.d.ts","../node_modules/@nestjs/core/helpers/http-adapter-host.d.ts","../node_modules/@nestjs/core/exceptions/base-exception-filter.d.ts","../node_modules/@nestjs/core/exceptions/index.d.ts","../node_modules/@nestjs/core/helpers/context-id-factory.d.ts","../node_modules/@nestjs/core/helpers/index.d.ts","../node_modules/@nestjs/core/injector/inquirer/inquirer-constants.d.ts","../node_modules/@nestjs/core/injector/inquirer/index.d.ts","../node_modules/@nestjs/core/metadata-scanner.d.ts","../node_modules/@nestjs/core/scanner.d.ts","../node_modules/@nestjs/core/injector/injector.d.ts","../node_modules/@nestjs/core/injector/instance-loader.d.ts","../node_modules/@nestjs/core/injector/lazy-module-loader-options.interface.d.ts","../node_modules/@nestjs/core/injector/lazy-module-loader.d.ts","../node_modules/@nestjs/core/injector/index.d.ts","../node_modules/@nestjs/core/middleware/routes-mapper.d.ts","../node_modules/@nestjs/core/middleware/builder.d.ts","../node_modules/@nestjs/core/middleware/index.d.ts","../node_modules/@nestjs/core/nest-application-context.d.ts","../node_modules/@nestjs/core/nest-application.d.ts","../node_modules/@nestjs/common/interfaces/microservices/nest-microservice-options.interface.d.ts","../node_modules/@nestjs/core/nest-factory.d.ts","../node_modules/@nestjs/core/repl/repl.d.ts","../node_modules/@nestjs/core/repl/index.d.ts","../node_modules/@nestjs/core/router/interfaces/routes.interface.d.ts","../node_modules/@nestjs/core/router/interfaces/index.d.ts","../node_modules/@nestjs/core/router/request/request-constants.d.ts","../node_modules/@nestjs/core/router/request/index.d.ts","../node_modules/@nestjs/core/router/router-module.d.ts","../node_modules/@nestjs/core/router/index.d.ts","../node_modules/@nestjs/core/services/reflector.service.d.ts","../node_modules/@nestjs/core/services/index.d.ts","../node_modules/@nestjs/core/index.d.ts","../src/main.ts","../node_modules/@babel/types/lib/index.d.ts","../node_modules/@types/babel__generator/index.d.ts","../node_modules/@babel/parser/typings/babel-parser.d.ts","../node_modules/@types/babel__template/index.d.ts","../node_modules/@types/babel__traverse/index.d.ts","../node_modules/@types/babel__core/index.d.ts","../node_modules/@types/connect/index.d.ts","../node_modules/@types/body-parser/index.d.ts","../node_modules/@types/cookiejar/index.d.ts","../node_modules/@types/eslint/helpers.d.ts","../node_modules/@types/estree/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/eslint/index.d.ts","../node_modules/@types/eslint-scope/index.d.ts","../node_modules/@types/range-parser/index.d.ts","../node_modules/@types/qs/index.d.ts","../node_modules/@types/express-serve-static-core/index.d.ts","../node_modules/@types/mime/Mime.d.ts","../node_modules/@types/mime/index.d.ts","../node_modules/@types/serve-static/index.d.ts","../node_modules/@types/express/index.d.ts","../node_modules/@types/graceful-fs/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/istanbul-lib-report/index.d.ts","../node_modules/@types/istanbul-reports/index.d.ts","../node_modules/@jest/expect-utils/build/index.d.ts","../node_modules/jest-matcher-utils/node_modules/chalk/index.d.ts","../node_modules/@sinclair/typebox/typebox.d.ts","../node_modules/@jest/schemas/build/index.d.ts","../node_modules/pretty-format/build/index.d.ts","../node_modules/jest-diff/build/index.d.ts","../node_modules/jest-matcher-utils/build/index.d.ts","../node_modules/expect/build/index.d.ts","../node_modules/@types/jest/index.d.ts","../node_modules/@types/parse-json/index.d.ts","../node_modules/@types/passport/index.d.ts","../node_modules/@types/passport-strategy/index.d.ts","../node_modules/@types/passport-local/index.d.ts","../node_modules/@types/prettier/index.d.ts","../node_modules/@types/semver/classes/semver.d.ts","../node_modules/@types/semver/functions/parse.d.ts","../node_modules/@types/semver/functions/valid.d.ts","../node_modules/@types/semver/functions/clean.d.ts","../node_modules/@types/semver/functions/inc.d.ts","../node_modules/@types/semver/functions/diff.d.ts","../node_modules/@types/semver/functions/major.d.ts","../node_modules/@types/semver/functions/minor.d.ts","../node_modules/@types/semver/functions/patch.d.ts","../node_modules/@types/semver/functions/prerelease.d.ts","../node_modules/@types/semver/functions/compare.d.ts","../node_modules/@types/semver/functions/rcompare.d.ts","../node_modules/@types/semver/functions/compare-loose.d.ts","../node_modules/@types/semver/functions/compare-build.d.ts","../node_modules/@types/semver/functions/sort.d.ts","../node_modules/@types/semver/functions/rsort.d.ts","../node_modules/@types/semver/functions/gt.d.ts","../node_modules/@types/semver/functions/lt.d.ts","../node_modules/@types/semver/functions/eq.d.ts","../node_modules/@types/semver/functions/neq.d.ts","../node_modules/@types/semver/functions/gte.d.ts","../node_modules/@types/semver/functions/lte.d.ts","../node_modules/@types/semver/functions/cmp.d.ts","../node_modules/@types/semver/functions/coerce.d.ts","../node_modules/@types/semver/classes/comparator.d.ts","../node_modules/@types/semver/classes/range.d.ts","../node_modules/@types/semver/functions/satisfies.d.ts","../node_modules/@types/semver/ranges/max-satisfying.d.ts","../node_modules/@types/semver/ranges/min-satisfying.d.ts","../node_modules/@types/semver/ranges/to-comparators.d.ts","../node_modules/@types/semver/ranges/min-version.d.ts","../node_modules/@types/semver/ranges/valid.d.ts","../node_modules/@types/semver/ranges/outside.d.ts","../node_modules/@types/semver/ranges/gtr.d.ts","../node_modules/@types/semver/ranges/ltr.d.ts","../node_modules/@types/semver/ranges/intersects.d.ts","../node_modules/@types/semver/ranges/simplify.d.ts","../node_modules/@types/semver/ranges/subset.d.ts","../node_modules/@types/semver/internals/identifiers.d.ts","../node_modules/@types/semver/index.d.ts","../node_modules/@types/stack-utils/index.d.ts","../node_modules/buffer/index.d.ts","../node_modules/@types/superagent/index.d.ts","../node_modules/@types/supertest/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"f20c05dbfe50a208301d2a1da37b9931bce0466eb5a1f4fe240971b4ecc82b67","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"9b087de7268e4efc5f215347a62656663933d63c0b1d7b624913240367b999ea","affectsGlobalScope":true},{"version":"3260e3386d9535b804205bdddb5618a9a27735bd22927f48ad54363abcd23d45","affectsGlobalScope":true},{"version":"7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481","affectsGlobalScope":true},{"version":"097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"55f400eec64d17e888e278f4def2f254b41b89515d3b88ad75d5e05f019daddd","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"775d9c9fd150d5de79e0450f35bc8b8f94ae64e3eb5da12725ff2a649dccc777","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},"d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",{"version":"8d6d51a5118d000ed3bfe6e1dd1335bebfff3fef23cd2af2f84a24d30f90cc90","affectsGlobalScope":true},"3284e33a45d6aa8324691ac5737d08695e35e99b5f69fdc9ef21b3c7e7fd8449","e89535c3ec439608bcd0f68af555d0e5ddf121c54abe69343549718bd7506b9c","622a984b60c294ffb2f9152cf1d4d12e91d2b733d820eec949cf54d63a3c1025","1a25c4d02a013b4690efa24ab48184a2c10b1906a379565ba558b2c3ba679a6d","ba6f9c5491bcf018dbbc813e1dd488beb26f876b825007ba76db485df341a8ee","75b57b109d774acca1e151df21cf5cb54c7a1df33a273f0457b9aee4ebd36fb9","fa3d0cd03fa17459d9ddd98b120b4bb084da39f0391cbdce480a6ef74be0cc7a","e3fd84e6470b7e0679c4073ee5ce971d324182486dde5a49b67cae29168b51d2","dd8331d0a5190a4735ce6c152e420230188c4966067a756673c36dd7ba72b10e","cfdf36cfc0721c29f58651fc12f0f5a349d29da3a63180afc5b3d77b95653f82",{"version":"d57e7ff5243e0dcd04cf2edf9ad9520af40edd6eba31c14c3f405f0c437fa379","affectsGlobalScope":true},"0f882d4ae58f431454030289154feb0132e1b00ca5c3197c6b749bd098aed73a","7ff7f4632a6e7b6872fb1843f3c0df495b49840eae2a23c6fbc943f863da8c29","d267771149e172ade39e3ef96b4063209d5a7e8291702fe03983aa52f2b3d5f6","a78590b0efcef281236e3234520c348d63be1d4561b63b20e6c3b6fc18b37dfb","4d59c6a10b6c79a0927c79efa89b3c9f71d174ec14ec2792076cfd2330d0cf8e","a496f51933422872de22729b7a0233589325a1a1707cccd05cd914098944a202","75b6663bc569724017997481b6b3774065c204b316cb4f5ad7df3b5162d2dce1","06a38095ad4368314366bc08f7cbc0fe274ef7321ec611005d0bdd9c6565e4d5","4599793db9aed9b84677f0ca1cf7ef3c69bb91cda4fe4329cbab778ca4d80a58","ad0028f96921778931fb8419d8de33b10908314fa99699de1702020f69235da1","ccd2a35321c0786bd3808042dc43b960cac13f2cc660ac37a0087e12bc97d2fc","df524ed01de4f19efb44bded628dbba9f840148be4b6cfe096e29d4b01589de3","2e3981b9cee48174ff85ae15019fd72933f7023a4ed05094740f7e6f7775623c","836ebdc3b9e4c006acc4f405b7e558e56d47830e05c40d991b1e27fe8bc91157","2cc6b617c6120ba64b5778ccd4b74c951adc3a3941bb6b39f47d48701c44af39","eca02b99615a8f1652e21399d832618e38bf166c0747c9247349bc901a2f7741","7f7d6d42e5780e86f5b860a6f95179fae06a368b3af28c1c4230397c47021a59","4740a7d11ab3b381be0f269f1903fb3ff226a2fba55a01756b2997e67cd853f2","863dbc4e77f0353e6f9d6bc0e2b4622d5c07ff6f099ff66cafd7924b2ff4dd3f","bf034a18ed7e2a058f9e48c4c2480a124138fbd3586a80c77736a9ec079d12a8","f88758992a0bf13d095520aacd4381fb456ff121fb9aa184e6eb0eecb26cfadc","c249e9ae33bfcad97deec3c73c9ed2656e112fbdf22deace0b39724be6a5dcf0","d8b45924965c0c4fc0b946c0b6d597aa8d5de9cdf5c727e3d39422d17efec438","d07ea953cfea0c4bd11641912846bd955f4fd26ad2b7b8a279d69c7ab9cb3add","feddabf6ab0eb191e721f0126f3db8688db97c77a1234968bde7a2d70c4ae513","dbbda62ea5f4d1f8b40cc2b7e2e2fae424abbb4715a04a3659cb8b317f7b228b","cde0568b836865a24f4ee5859462004a326dfb76d514e6f56c8e78feedebed58","7f5cb3a03588ed46d52a6c2138315d930cd6ffb5c2134247cd07bc23cbea0b5a","7797f4c91491dcb0f21fa318fd8a1014990d5a72f8a32de2af06eb4d4476a3b5","f39fb20b83c3f9853c13d4ac95533760979d3023c0a5affe2c0a62d91ab3afd8","e4fca08aed8afb32bb8643d7469810bc8681115fe398e56a028df9e73b2d867f","2622639d24718ddfccc33a9a6daf5a2dd94d540ca41e3da00fe365d2c3f25db3","078966067552650f44ca96c68eddbb8539f30ee48a9ab3f24abdcf0a4037b535","2cd6250c43dba360377481c98d48db6ab1532a7527339edb0deffddc28ba66b1","7a9d600990fbe263a23daebed9ba1bbc5761e45679a7e2b2774a42756ef077a2","66bc155515fbea8c31a4efccbbac44de7c037b01f3aa00b76312cf7252725d30","5703288ddbfc4f7845cdbf80c6af17c8cde2a228757479796c2378b1662fcd48","0dfd353f0c16dd5107a7e0713dc52d0a2538293b0a0eac6000a017f9c0a60b56","9cd683a4663ef4d9c6486f1b8a34c73bdbc344d69490931bfe2fbcada12ab35b","42f6a409bad5259ece69df25d2b8ace2ff2ade45fe6386ee45203bdd9329f971","d3b1a8b87a5e77d70056325e137a0e04d984b991546fdd3c1034ff4102d603c4","2eb162efd6dba5972b9f8f85141d900d09da4fba23864f287f98f9890a05e95f","3f878fb5be9ebe8bd0ac5c22515d42b8b72d3745ef7617e73e9b2548ccbdf54b","e9ed562b7599c8c8c01595891480a30f9945a93a46456d22ee67ebf346b7538a","e7bf975a98cecefe2e8902fb7da9314675ecdce553aea722aaec97327668e18b","3d36f93648518338c875d9f77a8eab52905365483dbb3afe43ed68f1b712b67c","4fa54df9184d291bd78b36f5063372042cd995460e906cb14014e40d1442a326","b4e32bd5e3b493e4ea6b5ec69a4c02aa1fdaa78e1df9a863bb07604de8f9d123","f6bd1aa152ca2b5064e06282ee3137842ae6825b6b09aa89a2ff063b976a56f3","bce2390bb3a76f8bf2ba4397c66db5277bf3e698ee614347e5eb79d7fc0942c6","fbdc8d7cc7daf4101bf567512c67fb990d8fe300e0ba7f213171192177f44aa0","298e0da6d858e39fc0c1eebfa4f5c8af487868c6f2e98c3ef800537d402fb5c3","3b6457fb3866562d279377f923cf3758c80ed7bfcc19414b72a24d0a98188e0c","4fb5d7efb3520b92c1b767ce18968057c5e70886d7fb3416c487231df9275af9","df2303a61eb57b2717d17123e82bc0f3fd60f6e4673cb5506192dfe23c9480bf","b104960f4c5f807535ab43282356b2fe29c5d14a02035c623ac2012be3d5f76c","a35ca245eb852b70b20300546443abb1fcbac6e5066e4baaa092af4ea614d9b5","55da140feab55f10a538a9879a97c4be3df4934cbd679665c91a7263a86095e1","1a39e51e3362aec7d4edec9b317ff83916fe0471f86ddf2d3ef3af5952e87d9e","4b3f36b96f129a8e125c91d41a05f711e73b3285f80bceb3a1aecb13c97c4502","852779920fc4220bc42ec6d3c9b6164e23ea9371a788531b48b4005fe0cb4392","9a82e1b959524c1abfeeb024ee1a400234130a341f2b90a313ce4e37833b7dd2","515b97cede17d91c9669cc1c7fb7a8a5f0a5f2d8999f925a5f70b4ebea93723e","08e8e57241f874bdbf69ab2b65cb0ee18b4183d5c9452937da49b934fc679c4b","944af466f063d4bd090ab9d988c620b90a014e919d5f78963f6074a136ea225e","644addd4811636da491c9546654bc005ba8599f23df6d731d91eba86f3137fc2","a9249493114b181814728cbfeb7234738193a4169b654ec4705d48d7a4d25222","aad6f20d6eb01192ae02294361faa6e1f320d72447b56f433db853bbe80b15ca","876fbedec2f494eb6f834ce8636b07d581c657d205d81a3ba894eff0facc6b84","58527aa45f11c9b259a6a9d78b397f35020bfbb104f4d3bb177039b5c18146bd","91b8b61d45b5d22f3458a4ac82e03b464a0926bab795a920fe0eca805ec476eb","2744532f8fb960eb78497ac660db719f503a10c801f87131d26fd9cbef75dcef","6884287c54891ac19cfbe056f3ed29cab1732a00dec69bd3b140ce62c11783c6","abc3487041159734b8611d9d6fd85de6892f11ebe8c2583baedfc1f87c53757c","cb46657d3237f80742d5701ebcced8f6e5cf8938442354387d6c77d7048dfae6","76281a3b799bbd17ec8e6de7d2fa45ccf749049fd53f00857daf0dbc449616b8","661f322e45545a554e4ffc38db6c4068a66e1323baf66acb0d8a9fa28195a669","91d70dce48c2a2bb55f0b851cf1bdba4202f107f1e8fdf45f94ff6be4b8e8f99","ce978e20a6f26f606b535f0d6deb384ae6a73f8d0bd0dfca0925f5317cad1f25","f2d3567210ca4d559d8297d6c4402599c93e3bc7485054192d38db5e132fbc0a","887d8058aeeade45984fdb8696147078bc630d3fea15ab2b7baacde0fe281fb7","ad27aa59d346179ac449bd3077d245f213152879e4027356306ccf1722d61d51","ea546a7ed9eaa71ba78d4d392509dadea4bafed283269dd6c4b09e7d8824e986","4ec0f2a141a9ae7d3557b8efe630ac2021bc3a9ac61238b59293f4cf2f196e82","b2db743c71652e03c52d51445af58d0af3316231faa92b66018b29c7ba975f6c","0863a5876c85fbaffbb8ec8aeda8b5042deb6932616139706d2b82cde9d3f7c7","1294b8ecdd212362323f349dd83b5c94ea77bfee4dad24fc290980a3c8af6ce3","ba9c46725e2a0bd9df59d3a1e801cc60f90db3ef7817131c53945dce2b8c0c56","281d373eeabf80c4851f8de991e6abe4d385c30379d80897bbc3df3dcac99cee","624c5dce95672d9dcca40d9d9d82ef855f5f902292f43aa265cc8fd963c6ce84","8a48d9c6184992d1c3ed5daa55f83d708c37582916926a5555a900608f804b60","605dd288c636cf9b5317fe76dec75d3c7fb855fdcd3ee8cb4fea7d7091ca6fb4","95addea67857d4e568a02e429b15458cec203876b2ea5f5ea18ccfeeb91b8ce0","b5a615b0ad865ffa562980a10bda162ac1744fd363b4edc2cfc664222071cbcf","bbccd721363897950a55ce09529503f25a69522e5c91a22679b66e941e5f8654","d3a1e70795c38d7851b6e4f3b441c5ffdae171d6e2576a2204b7d79059aeea66","d7b8d41887c5fccfe19802c4336d34348b752abf0d98839575699d71deff60be","063fe3004728b8516a4d799ee16f9a71801ba24e0443dd98638cef1bd4353a7c","b8a0236f47d9037efdaf93da602415ae425dababe097fc92f83fd47ce9aaa69f","fab7912fc3ff45fce2f5d5febc9494c4d0a85d6c63fff68f21e4669c32eaacb9","f6c3fcb9d75d8aea778236fd9327ceb935b41865dbf3beac698be77e0ae9018d","b20bc124abd8ee572d0d756713ff987b116cdae908a6fcbc40e80d4b999f56b4","a599f3f450ad62c3fdc0c3fd25cddcc9332ffb44327087947d48914a8da81364","645dff895168aa82350c9aa60aa0b3621b84289fef043be842f45a9c6c0ac6e2","f068ff5b7fb3bdc5380e0c677e21de829bd25cdac63a9b083fdc220fcb225280","09d2fdca6ea6c135897a26976ad3c0db724adaf23ef4e38ad852b1d8efef1ae6","15de5b7739bf7e40213a200853bf78455ee5958af08eda786605a54a7f25ade6","f3acb439e08f0c2c78c712a876dc6c2080302c46916f1d63b7dbe509616ce9ae","37862e711637ebd927907a82cbf0143ea30e95eb165df554926c43936b1d77a9","89e253db2c2cc9a510c521f14dd2b1aae4de2556ee5159ad8d118d3587e3a880","3d0a172cee184a0f4111a7bd7fbb8729af3f54b30c06a2677d85c20ea9c811ab","d6a07e5e8dee6dc63c7ecd9c21756babf097e1537fbc91ddfec17328a063f65d","6fdc88b1287c276b55b7f7c4c7b49587813c763eea9751ce0baf0a7e61cd5d89","6a02443704052768bd021f24783aa104b02ae4444e9b735317bf13c6b857a11e","37987b0fe9800cf25473c882ce07bccdab2763c5681c1a2d16816aead46aa8d1","c84c03c721154068e1a60d83e9e85819bd3ef70b824ac2edc498aa31c06e5781","c23a403716784b53cf6ce9ffff9dcdb959b7cacdf115294a3377d96b6df1e161","c96fb6a0c1e879f95634ab0ff439cbb6fff6227b26bbf0153bef9ed0aabba60d","db936079fe6396aad9bf7ad0479ffc9220cec808a26a745baebb5f9e2ef9dbc7","06bc0b9cc7bf0b92534f1517fe5adde1f23f60cc6cc5c59f8e1c65db48a40067","919a753b0cbb12ccc606c62e2d34884d75a48ba19b1dda497c72621b11dac088","2c27e33ee0bf722988da00abd582cc9b806ce3fd9153a864800a339ad13f3fcf","92d7b3a5aa5dc872e54cbad2a7094b3ea4f72c7901de1d07b4c334ff658297f0","7a52922b38e9686d5bdc6e75774929eec6688d26c1dfe4a03ddec77ede468e87","aa5efca2833d89b55248f1889a6433dab1b1f41768e9a75f8ce35f9bf56c5ec4","0d5a2ee1fdfa82740e0103389b9efd6bfe145a20018a2da3c02b89666181f4d9","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"2f6c9750131d5d2fdaba85c164a930dc07d2d7e7e8970b89d32864aa6c72620c","affectsGlobalScope":true},"56d13f223ab40f71840795f5bef2552a397a70666ee60878222407f3893fb8d0",{"version":"4ffef5c4698e94e49dcf150e3270bad2b24a2aeab48b24acbe7c1366edff377d","affectsGlobalScope":true},"95843d5cfafced8f3f8a5ce57d2335f0bcd361b9483587d12a25e4bd403b8216","afc6e96061af46bcff47246158caee7e056f5288783f2d83d6858cd25be1c565",{"version":"34f5bcac12b36d70304b73de5f5aab3bb91bd9919f984be80579ebcad03a624e","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","3a0c45fe95e8f0e2c5247d48acf3a522d2ef29f1ab0effb3c59a9c4fdd5edbcd","f50c975ab7b50e25a69e3d8a3773894125b44e9698924105f23b812bf7488baf","c993aac3b6d4a4620ef9651497069eb84806a131420e4f158ea9396fb8eb9b8c","76650408392bf49a8fbf3e2b6b302712a92d76af77b06e2da1cc8077359c4409","0af3121e68297b2247dd331c0d24dba599e50736a7517a5622d5591aae4a3122","06ccebc2c2db57d6bdbca63b71c4ae5e6ddc42d972fd8f122d4c1a28aa111b25",{"version":"81e8508d1e82278f5d3fee936f267e00c308af36219bfcee2631f9513c9c4017","affectsGlobalScope":true},"413a4be7f94f631235bbc83dad36c4d15e5a2ff02bca1efdbd03636d6454631b","20c468256fd68d3ef1fa53526e76d51d6aa91711e84d72c0343589b99238287e","81290114466b1a05503a1142be27f5b85b033c95eb4291359aaeeb0b8b9bdbfb","8d4c16a26d59e3ce49741a7d4a6e8206b884e226cf308667c7778a0b2c0fee7f","ee3bad055a79f188626b1a7046f04ab151fdd3581e55c51d32face175bd9d06f","d61c7c41eb1960b1285e242fd102c162b65c0522985b839fadda59874308a170",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"1dbccafbca82a60fdfb0fb3c28e2493ff76d06647a512dcf72a086022e8b6f91","d10f4929cd610c26926d6784fc3f9f4120b789c03081b5d65fb2d2670a00fa04","fb0989383c6109f20281b3d31265293daefdd76d0d30551782c1654e93704f48","a4210a84a82b3e7a8cec5b2f3616e46d523f4f10cc1576d8f2fb89d0987b341e",{"version":"8207e7e6db9aa5fc7e61c8f17ba74cf9c115d26f51f91ee93f790815a7ea9dfb","affectsGlobalScope":true},"9f1069b9e2c051737b1f9b4f1baf50e4a63385a6a89c32235549ae87fc3d5492","22d48bfb37261136423ac687f1fa7bd4dda3083f767416d409a8260cf92bc8fc","29c2706fa0cc49a2bd90c83234da33d08bb9554ecec675e91c1f85087f5a5324","0acbf26bf958f9e80c1ffa587b74749d2697b75b484062d36e103c137c562bc3","f142151303f0792b81eff90b554081d2b78b146a83a4bc573228338e70afa420","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","698ab660b477b9c2cd5ccbd99e7e7df8b4a6134c1f5711fa615ed7aab51cb7f7","33eee034727baf564056b4ea719075c23d3b4767d0b5f9c6933b81f3d77774d2","c33a6ea7147af60d8e98f1ac127047f4b0d4e2ce28b8f08ff3de07ca7cc00637","a4471d2bdba495b2a6a30b8765d5e0282fa7009d88345a9528f73c37869d3b93",{"version":"aee7013623e7632fba449d4df1da92925b27d9b816cb05546044dbfe54c88ef4","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","c9d70d3d7191a66a81cb554557f8ed1cf736ea8397c44a864fe52689de18865a","998a3de5237518c0b3ac00a11b3b4417affb008aa20aedee52f3fdae3cb86151","ad41008ffe077206e1811fc873f4d9005b5fd7f6ab52bb6118fef600815a5cb4",{"version":"1aad825534c73852a1f3275e527d729a2c0640f539198fdfdfeb83b839851910","affectsGlobalScope":true},"badae0df9a8016ac36994b0a0e7b82ba6aaa3528e175a8c3cb161e4683eec03e","c3db860bcaaaeb3bbc23f353bbda1f8ab82756c8d5e973bebb3953cb09ea68f2","235a53595bd20b0b0eeb1a29cb2887c67c48375e92f03749b2488fbd46d0b1a0","bc09393cd4cd13f69cf1366d4236fbae5359bb550f0de4e15767e9a91d63dfb1","9c266243b01545e11d2733a55ad02b4c00ecdbda99c561cd1674f96e89cdc958","c71155c05fc76ff948a4759abc1cb9feec036509f500174bc18dad4c7827a60c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"e3685a8957b4e2af64c3f04a58289ee0858a649dbcd963a2b897fe85858ae18a","3da085d344bf625767c5b1fcada31a5d94ebefc4e36bf18a676ca37460bc4e4e","006855ddea8674d084173a768f88519dc154be94eba5e2120262a33709832b9b","17dd843a266f99ca4b3a1257538bd1cc69dc5c7f2f23c3891f0430615b8c9c1c","5430364886c721a30475253356162b6c27871718094cb3e69e2bcea71a17e533","1218398da7c8dc4add10bdb3aa2856aad54b123d847eaf574d1d694ac269bfb5","189014f3213ee7457dbeea04dca10ca5d9ed2062cd39641aca5f3b4c75de9d99","b637cd92688a6cdf4f8f184ff529dc2bc7f15692828e2c0c66a60e6972f400c7","7061e83d6792897077bcac039fccf7325234004769f591c63a8cf8478bf551bb","7ab905865063322f2bba361d0f2ef93520f64a382bac13b127479860ad99f62e","277a358d61376fce7ac3392402909c96cf6a0a613146549fc0165ccff953e012","50614c808e099a1d4413786f3783d9eeaaa74b267f2c87fcf8a893287e91c301","f4cb6530f248e87cefa74ef623206fec805f6252f885f8e14ef3d1a5872cef2d","38c332caadd8391566552395d592076470a5e7423f70964620eabf05c02907cd","eb17b5bf1fc763a644c21d76572c0e41e351c3f6dfcde649428d5d829f7294d2","cb124162c87b29ff5121e3ee5bb29c782f101e0135d6c2644ab1b31d530a435e","406d6f5d3707c488362fb40d1c1f8a7b0a42b70554b427160185d93e430228f5","2e9776410c5bc290d9432a9215c67398a273e514a79b9e15f32ecddfde8a03be","313ff8df074b81d3e4f088ff3a3a06df3d9b0d0c7f55469ccc2ac887ecb6b867","c718475bca06806cc243e77777641cb67ba68f2c57321a4773ebb47760a3bcf2","96e6bf811343caab5112b68880905c5d20d9257054afac6c18e718a4c549ed27","a2793bc73ba63ca7d259cb0f0b61d0023820170d08a1f9715006c8042d060165","d5011b38165771fdf75a9a06d6d379a1fc7edd7eb695ebdc52319fb6e3c6d81f","88417fb19d339304e9616a38ea513251047c9e300c81f9467fc317df8a582e71","3e8e2d132f726dddbda57819f5391504e585cb3beab6b32203064e7e40618583","6e23627cd3f10418b5b2db102fdcf557b75f2837f266d88afac6b18f333bb1bc","866046dcea88f23d766a65487ee7870c4cf8285a4c75407c80a5c26ed250ef8d","019f4f1cbc781cc15c6173f8be5ef907405722194ab297127b3c3426e5368339","41f4413eac08210dfc1b1cdb5891ad08b05c79f5038bdf8c06e4aedaa85b943d","c79f1c8b51d8475dde8d2973f740f43ca34b1f0a95d93649cd76c1ee20abba19","35f0d2bd2c5c05c0cb19095bf5b7c44365b1c88efe6285370855b90417277a64","8264b129f4c4eb4799703f8e5ee2223a184d1cdbfc782158b1f40a88a4435a1f","527ddda6f8be1279f3294714534c49d6e90f238cea325519882ebf88d7ec5bd2","b23877792e8bd00271d0ec5d401b68e4228540a4316de3d9dfb697b955c161a4","35b2eb1de01633db90d41abe93730b29984856fcc840b4c2801bfd3761a2097b","95f0c9127b879c2fc7e31f8e09ff45bb4aae302e60f4b9ceaf4d9ee6bc51ec66","2a6b4655a6edce9e07c7d826848f72533c9991d40bc36e3f85558ad20e87ce2d","6e3d29fdc96ebbb2ac672d2dae710c689c1ea0d0e9469e0847616f3c38fd085f","d505055b8fadd42da235c85947911d8d198ad70c5f5775991e7821d4f89c90f5","8b5a5852099dca7d7e7a7cef6d681dc1586aafacdb963ca180fe5cabbfa3a24b","0d1aa3341d1ad2064adada71c5d01a2f572e4aac09410e5616d90894105a0eb9","52494ca5a884da3bf11b8165ab31429715f0970d9c6383240c5666f4bd713e01","162fafa2291749df2ab4516854aa781fcee1d9fca2ecd85fb48ae794c0700ce2","b4b9b51ee6f6309cda2e539245235a8caeca2b1d6bf12b5e5c162d17333c450f","d2ffe8356f060b88c1c5cf1fa874a4b779fb87fd1977084876e8be9eab6bf485","c76053984b39150d00ade365b096a8bc21a4a7f2ee9e0a926711b00f8e7bf701","956b510767e3d6f362ea5800510635197723737af5d19ae07ee987ea4a90bfa5","cd1a8ff61f5063d7e6e2094e25d35c90b499961b63911f2f4ae0ff5555c2b4d7","1cf09b5945779e9bc75c4dcd805fb149c28fc90da3335186ef620647a3c540e1","9cdc0b9a313090ec45b34ea1eb02fbace433f509e753634b043e9b83038261e6","c93474cff0088351a65d3cad24037874a26a5371a48528563e56efe31cb3d8bb","b4580df8ea7f62d7b06588001952bf69426e6b03cf3d2569f5f608e45f29ba08","de27f7bb9be9d8a2b4557ec6503b8a315f74d598ce9a0ab81b5ed5610e1a8e81","fe3c378dcefa7ed8b21bd6822f5d7838b1119836da75ae1e1fb485d27b8ffb62","7365bf3333d4277b6fe374ed055624e5ec080dbb919e2d78f1cb75a3f1a4b4f6","a5fbf3bc5c16ab5c84465ba7a043a4bee4c2b20bd3633d50d80118a3844edbaf","0923e4ac8c894ad507bd2daee0df66b699de88467201381ece011ba5a080e1ff","e4f6626f827ea509255647e1b6db82145a2eb1a6b46202655e7d9bb19145c33b","26e23972c40f378f0301d8d7025ea895557c2865a1a31c8ea9c3fff0dbc27075","bfddbff94132b423ad1d71bdbefb1d388c21a74ac1a8742df9324e5bf6109058","795a08ae4e193f345073b49f68826ab6a9b280400b440906e4ec5c237ae777e6","8153df63cf65122809db17128e5918f59d6bb43a371b5218f4430c4585f64085","a8150bc382dd12ce58e00764d2366e1d59a590288ee3123af8a4a2cb4ef7f9df","5adfaf2f9f33957264ad199a186456a4676b2724ed700fc313ff945d03372169","d5c41a741cd408c34cb91f84468f70e9bda3dfeabf33251a61039b3cdb8b22d8","6e87c0c1cf06fe7dd6e545d72edefd61d86b4f13d2f9d34140e8168af94a7b7d","cbaf4a4aa8a8c02aa681c5870d5c69127974de29b7e01df570edec391a417959","b8d9df5c49858df86ffa6c497f1840528963c14ca0dea7684e813b008fe797b3","340a45cd77b41d8a6deda248167fa23d3dc67ec798d411bd282f7b3d555b1695","b1f8c85b27619ccfae9064e433b3b32a11d93d54de5a1afdaeca23c8b30e38a5","0ed6417b905cddb85f98281cb3b5b137d393955521993d9ce069d5e2d6b26ee8","f9ceab53f0d273ccaa68ef125974305dc26fe856af9a5be401ca72d0f78659d4","99d99a765426accf8133737843fb024a154dc6545fc0ffbba968a7c0b848959d","c782c5fd5fa5491c827ecade05c3af3351201dd1c7e77e06711c8029b7a9ee4d","883d2104e448bb351c49dd9689a7e8117b480b614b2622732655cef03021bf6d","8e1453c4f07194ab558fa0648cc30356c7536b134a8d7516edf86fd93706c222","eee530aaa93e9ec362e3941ee8355e2d073c7b21d88c2af4713e3d701dab8fef","ebf6ea6f412af15674333149f7f6561c0de9e36a4d4b350daccf6c5acbbf9fa3","1d6cc6dc76a777be3856c8892addb58d60b8957730951f9ab8b721e4f7fdf7e9","7a0e4cd92545ad03910fd019ae9838718643bd4dde39881c745f236914901dfa","c99ebd20316217e349004ee1a0bc74d32d041fb6864093f10f31984c737b8cad","6f622e7f054f5ab86258362ac0a64a2d6a27f1e88732d6f5f052f422e08a70e7","d62d2ef93ceeb41cf9dfab25989a1e5f9ca5160741aac7f1453c69a6c14c69be","1491e80d72873fc586605283f2d9056ee59b166333a769e64378240df130d1c9","c32c073d389cfaa3b3e562423e16c2e6d26b8edebbb7d73ccffff4aa66f2171d","eca72bf229eecadb63e758613c62fab13815879053539a22477d83a48a21cd73","633db46fd1765736409a4767bfc670861468dde60dbb9a501fba4c1b72f8644d","1f9cc8013b709369d82a9f19813cd09cd478481553a0e8262b3b7f28ab52b0b2","a314a39426700ba2b5a76c01bab321bbe79cfef898dae996e930b017fc2b0af9","7f2c10fc5de794bf7ddad2ff13b46e2b7f89ced296c1c372c5fdb94fc759d20d","6ea6e80bf94a93e4841d57878bba521822ca5e2ec7cbb626196a8efc2766eb79","fc4439e09b1562f72a4dcaa193b1ff070e0217ac94d240282871b0642953f049","8a10bdd9317aa91b37ee4b6dbd40529d0cd16353f04cf7c27b29c5604a28e8c3","fdaf3475e11582e137bd84fa19f6bdbf23623f79cecc48a4037e8fa5756ba340","5c4c5b49bbb01828402bb04af1d71673b18852c11b7e95bfd5cf4c3d80d352c8","6b8861483f8d90261908256836f1b8951d1f4ac9a2a965e920fb18603c8d1d0a","72afd0094250e7f765576466170a299d0959a4799dbf28eb56ba70ca4772a8b4","44ec212fbf43580505de3d6054376ced252c534ced872c53698047387213efb9","4880c2a2caa941aff7f91f51948ebfb10f15283ff0b163f8ea2a74499add61aa","19c3760af3cbc9da99d5b7763b9e33aaf8d018bc2ed843287b7ff4343adf4634","9d1e38aeb76084848d2fcd39b458ec88246de028c0f3f448b304b15d764b23d2","b1048a866abac5d678376310d28fd258fd4d663942ac915a5fa90e585cf598f8","c9c6eed8faed23fc697b79d421ac443594a3458ae2a60150083ee1e860171971","9cc2a5c3e3c4be782a2300d356b94286764166acf2a6eedc83c6f7a53c0397f7","9ddf8e9069327faa75d20135cab675779844f66590249769c3d35dd2a38c2ba9","d7c30f0abfe9e197e376b016086cf66b2ffb84015139963f37301ed0da9d3d0d","ff75bba0148f07775bcb54bf4823421ed4ebdb751b3bf79cc003bd22e49d7d73","69196fa55fab9cd52c4eecba6051902bd5adff63ecf65e0546cb484b5a279fb1","35a9867207c488061fb4f6fe4715802fbc164b4400018d2fa0149ad02db9a61c","2d3e2fc347ca7d1241058a82d68c2dd457c96ff024cdad3c380cde3fd072cc4f","b75aa590b103f8491e1c943f9bc4989df55323d7e68fba393d3de11f4aae6bb8","4894a2c13e65af4fea49a2013e9123fe767a26ae51adb156e1a48dffba1e82f7","fc2a131847515b3dff2f0e835633d9a00a9d03ed59e690e27eec85b7b0522f92","90433c678bc26751eb7a5d54a2bb0a14be6f5717f69abb5f7a04afc75dce15a4","55ae9554811525f24818e19bdc8779fa99df434be7c03e5fc47fa441315f0226","7210df9e28cc71105d8938508a8bf99e7bf7df1f18548d774d7c2accbfb3332e","b842238362d1d1879242576ea63d436daa335613559ef0aff586825638d2d47a","e7bde95a05a0564ee1450bc9a53797b0ac7944bf24d87d6f645baca3aa60df48","62e68ce120914431a7d34232d3eca643a7ddd67584387936a5202ae1c4dd9a1b","e6b74c07c5a4e65b27f5a419467e021f61d45255d625bacffe502bd226ffc41d","e1cb8168c7e0bd4857a66558fe7fe6c66d08432a0a943c51bacdac83773d5745","3ce6884df19ea1f29b33f1aa8529eb2b061ce71ed50828e4fd3b065f1d2e93ec","cd0eeda77ab149135d817ac1e1cd1e88f73bf37fe5a652b5c14e124e676201cf","cbc15ecf15b73c132087c185178ba51b7a786ff4a51b6f52a50b01aeb3d48353","8ca60a0840c741e66d4421defe62d44226167a4750fcfa080f760a8f9487fd1d","6d8dedbec739bc79642c1e96e9bfc0b83b25b104a0486aebf016fc7b85b39f48","cd0565ace87a2d7802bf4c20ea23a997c54e598b9eb89f9c75e69478c1f7a0b4","c18f4f72a68275b7602e5968b862cb9b7b76ea4a1ac1b3e622f99e0b672569e8","0fdb1ed509382bd388896d3770655b0cda8c80c36f8c54b3899992f7a3a8665c","d97b96b6ecd4ee03f9f1170722c825ef778430a6a0d7aab03b8929012bf773cd","f55fc3e536ab193aaabb9b6ded5f93181f81294ee65fe3199c9f4415f0f1e53c","ec8053ec564993a885ba2e2c31408369270a190a332a29fac7a825bb7e60b37c","542ecc66e4fcc33f46695ae22b1d14c075054a78c019915d556636be642465af","476b5c25e85b94e15d761bb9503f55fb11e81167df451f187f5080fca825273b","72636f59b635c378dc9ea5246b9b3517b1214e340e468e54cb80126353053b2e","ebb79f267a3bf2de5f8edc1995c5d31777b539935fab8b7d863e8efb06c8e9ea","ada033e6a4c7f4e147e6d76bb881069dc66750619f8cc2472d65beeec1100145","52ff5e1ea35c54428b46c75fd14f87b7a7158a8f4a1ecfc4a9b996a03185c738","605d29d619180fbec287d1701e8b1f51f2d16747ec308d20aba3e9a0dac43a0f","67c19848b442d77c767414084fc571ce118b08301c4ddff904889d318f3a3363","c704ff0e0cb86d1b791767a88af21dadfee259180720a14c12baee668d0eb8fb","195c50e15d5b3ea034e01fbdca6f8ad4b35ad47463805bb0360bdffd6fce3009","da665f00b6877ae4adb39cd548257f487a76e3d99e006a702a4f38b4b39431cb","0d276d377a0bf0f35e8d7a5b871922ebfa6aff1757d1bbe27a7982b15ce78516","9cbb45413acfdf0cc384d884de88c3f951319004450c88a2bcdad62a11bd21d9","d7a4309673b06223537bc9544b1a5fe9425628e1c8ab5605f3c5ebc27ecb8074","ced87f58b05e2b07e314754f0a7ab17e2df9c37ee2d429948024b2c6418d6c9f","3eadfd083d40777b403f4f4eecfa40f93876f2a01779157cc114b2565a7afb51","3ac0b94ba8f884f63d38450ce9e29ecd59ff00805ffdd609193d7532b8605459","a3684ea9719122f9477902acd08cd363a6f3cff6d493df89d4dc12fa58204e27","2828dabf17a6507d39ebcc58fef847e111dcf2d51b8e4ff0d32732c72be032b3","c0c46113b4cd5ec9e7cf56e6dbfb3930ef6cbba914c0883eeced396988ae8320","118ea3f4e7b9c12e92551be0766706f57a411b4f18a1b4762cfde3cd6d4f0a96","473bf3574a48185f71b70fe839fb1a340a176d80ea7f50dee489c2dc8e81613f","2b14b50de7e32a9882511d1b06be4eb036303bc72ce4a10f93a224382731500d","eeb24fa259f000f6b51a1fe89123f55de081eb2a0ef8d8f847afd67af49cfb68","91d8f3c1c3ae5efb8564ec7cb1f8ac8bf5714eb94078fb50a761ab811963e324","e21bb2cfbcdd8ce7eebb72422f3660806724f2b16cd6ce126d527511abb3a379","c04146836a55ea071b435298335e47f569db0e4d3ae420e35c83e448f944192f","31f71fe23daabea143fc8bd21dae0d5908227180fcda38ad3674df70351f9761","68b39aecfe15b3b5b08c7de7c531e1d4c0d06095019ecd9357e67d27e4f681c0","4e1579c45e1a102078b0d24d7d05301657cf7cb2e77e2ade0c05d74e7922188b","0cb819e67e1b9dd575f53cce1a1f7267d22772b37ca60cd2516f24533b04e437","8d907f5e50623adc4e85632f1d233635dadde838208273310a11cbabb653b497","c802e72abaf33b77a58b9581d2f8e611a5fb0c94fdc4ea101ee59a78dd6ca746","8e64d7568722e6f6674e399c9e785ff23be6f970675da012f1c6f9b118b82a16","540e0eda4a2a78372dfd06a35bddca942f7ef6ca111d50be5a03836808270b6d","caafdf3ef4ee8163d9d4dcfe6bcb68a23b6c639480139407f682e13cedb473b6","ab5a144caffaf363fdb9a4ce41b1d70fc9e9efcf666f94ce463d4b239fd108c0","f171acb46af0a675915a5f5b73905d49a7255eecbc7b934878886af243d6783f","fbe89dae6da8f8e1d2c8e88014db73db978099027af2bc57883034af40e5b04a","33a9f0b6918da8adb508a6a052bf19c35d1eab2f77feed5cd1ee05201f498dd8","e80b39c0514911ee7b9130f12f9a48e7fde7e5740b7f2eea329299bd8f4c8a19","dd14d9057877b9a03fbac9e927910de0f44d2d9325e85057e6573f99560e18a1","cd57825cdf7b92345ebdd7b6f6a906731c3be41a86215c68bd83bd730ad2ff55","34916ef889a5d6dff6f613b8884e125ecc59883357126d7f69bdeb793d66fc1d","e66be854335b1fa96aa810524a94d14f324617c2d5f5437933044b0d76fe897f","42cf47eccccdd04432b96fa186c0705b89bff6689e3222c82d444b77ba458b11","641acdfefef7b22bc327a25c3923f93dbeb47ad8d74186f020bcf490978041ca","305da33cf8c29dbc59b8dd392d1c95e478bead6c18842349654a9cdb63f0b59a","3c11addb000e273a744992873f30b1a25eab9f0248f3ea6dadd1716a4ac37228","f5e0f3e2a52ac4c095380a0ec5ef2991a23773b91f42a3f97f32f2b50100713b","b9c89b4a2435c171e0a9a56668f510a376cb7991eaecef08b619e6d484841735","b85baa660305c65d45f97f5b227b1505a8023955f1bf27da178232e7be99cc12","d5dd266b6f5c9c24f6b4001e172615626a51e350b3267b4af3970e4fb2c57fab","89049878a456b5e0870bb50289ea8ece28a2abd0255301a261fa8ab6a3e9a07d","a464510505f31a356e9833963d89ce39f37a098715fc2863e533255af4410525","ebbe6765a836bfa7f03181bc433c8984ca29626270ca1e240c009851222cb8a7","ac10457b51ee4a3173b7165c87c795eadd094e024f1d9f0b6f0c131126e3d903","b2f2311d7085a1feec3f6a85d7cc8bdaf1d976de1874c1f92940ad8ce6a34d39","954523d1f4856180cbf79b35bd754e14d3b2aea06c7efd71b254c745976086e9","4ee1e0fea72cd6a832c65af93b62fbf39b009e3711384bb371b48c9abba66781","d35fb65da678a4971822249d657f564ff6bdb6618428642235c4858ebafb2379","b27a613e49e00740db23e2e267b8e44e51ee85a448e787b7fa7c7a7be7316104","4d54136f3080a92f0b031115719321fa25bd855582c30f7f6b6e78969ffe7ec5","6c7554f14f08d3264e220f6ac82cf00e3b6a3bd15ec676bd97bf0e06da79e18d","a2506732a96c864f9336a4fc0403f7f4f3831cfe1db4a40ddf95866dbe2d28ef","8aa451aa2c6e762f359e6fae74e2903f6e3304b1a5ae19c1da548128ddf25add","2e756f5c2e33e9b28aebe174d147a19b46f2364027050acb8c8c2f83e005b2ec","434ea45c930ac3accf5951ac80af2da02a3e0945d33f1e59dbd3a50498cb519b","dc5f64a739746e51c220dceef9b4de820a1daa2dea3254d63bba9988ddcb500b","ab555ebf13e4f021233b5dbd6876eb2a4514aa651693ba9fa38d1e7e7df3b841","6b3233127e08357fda5142130d43a222ed0dac32861ac6c72f8288c0c79cf749","0d4dab75055c9279cb1dcb693cf8568bd724e4f653fd95a3a82ad2e267c4dda6","5b3a3cb1fddc72107030fb0e13f015deff38eb738e50f3db4dfa5eaa2adeabc2","df6c83e574308f6540c19e3409370482a7d8f448d56c65790b4ac0ab6f6fedd8","32f19b665839b1382b21afc41917cda47a56e744cd3df9986b13a72746d1c522","405fa7000efd4f0317eb31fa76ed40bad16be48ef2efc88b53bbe439fae74aaa","3e5a089877b3647b42c6f8d8284ff26e57fd3d94f1b1736080079796b994a89e","fde8122ba963e8f7ef9da2a35029632dc8637e9740c9d8cc9745d94ca42e6762","5a44788293f9165116c9c183be66cefef0dc5d718782a04847de53bf664f3cc1","afd653ae63ce07075b018ba5ce8f4e977b6055c81cc65998410b904b94003c0a","a33c72cfb6c71ffe8074a297ebd448d8a3b504895fc7b64c13d3aaee48b2a02c","9f96b9fd0362a7bfe6a3aa70baa883c47ae167469c904782c99ccc942f62f0dc","5df9a68835c1e020625127d8c951c90808d319c811fc3a780d24f64053192ea4","71807b208e5f15feffb3ff530bec5b46b1217af0d8cc96dde00d549353bcb864","67f7637f370ee8c18fe060c901e071db2c4368de90a5c58cf1f959d12b0c2f7e",{"version":"e1ff31050a58b42b49a749d4ae725e2ad20c5e59a0d524cc0f6e85468065dd8d","signature":"653711fba8904aa27fd8911b63cf526e7b334e13a292da4cefdbbe179ac3f3f2"},{"version":"260f889b9e2b69f77be1155348eb345166aec664b3efff6720053c6844a41f28","signature":"ef022c91ea9e75ab4082f2e881f9c4db7b346be2da706e876b253bebce5e6140"},{"version":"f6447f6eceaf4dd7dfa64b8de02f4094aa733ad1752c83906606d1fb0f8ef1ec","signature":"90053118f5b7d868ba63d5361cd61bc22afec77153a3f95f1babd0ef138eca7a"},{"version":"469a96ef754d72818b79c1e275367308489759045ef4a1b1716fb27bcd563bdb","signature":"95c3134f0dfcd1289c3258ba63936feb091516568f91bb0c877e2b31f23c2347"},{"version":"fb8a301e76a26bf884b33439c18cfd5d0e1b6592afbdd355e8d34c9e11d87a3c","signature":"bfe706aafb8659b1036a2721b73235a7f0c5cb65365105adec29a0d69b786984"},{"version":"a18c9212df0c7879cf08a7280eb2f03da1a7077b6752dfd2ba734d858a85cb17","signature":"19e927ffa3ff6c22ce5bfcb73671bc635d6e08b1f3564dc0e15cfc43aa2848ce"},{"version":"cf4cd5faca1222b31263acc3463237c4b14f2e43adfe252d9478c471d177bed4","signature":"aa1725e38b5a0b4009f6a74f296f173e7926c119a60454dbd2e523861735df69"},"851d6dd300a7d1fa165c0e61d2d84e694ca2ab2e065a3b035e6d6202c3f919d1",{"version":"c96cfce8ea7289adb3c3b1af4d296f0750c4568d66f4fb13d5afcdcd8d70635f","signature":"b82491e2990291580288c5602d4c017238977749d52b17391f0e45d9a29be644"},"e9cba458ea179833bba7b180c10e7293b4986d2f66a7bd99c13f243d91bab3d4","8b0b6a4c032a56d5651f7dd02ba3f05fbfe4131c4095093633cda3cae0991972","27484cb3aa328bc5d0957fcb34df68a5db1be280af510d9ed3a282b1a0a93b38","6c2b8c78eb1476ad2668898923fda9c3e67b295b9a6dc7a7312ead2582a76883","d8fb0821bcebbcc5ef87655a6442e8909313eb0bd7960f696b10cdb31576fdaa","1053398d8fd9b1a45170b5cca30bd54abe7ec7061ef2929c4da9feaa71737930","c21f2aa4d38c2e9fea29dde79c15aed25f532ed1cb295794879cbeb8372a3ce7","7afedbfdd1a5220d472faacc2943242abb1f3f274b80984b11e804d6a8d8f17f","31a335eb49c1ea1b0d8ded51d2dee99d96b45e67f581638b2bce9cd121a2dcdc","c86ad86cc7a3ec3794deab9b943a823d9aaf09b846bb581a06bf263117e8d6d9","cfe88132f67aa055a3f49d59b01585fa8d890f5a66a0a13bb71973d57573eee7","f23601713615719b1a1394deae884fb9f507de819a086d5a019c63793da9efc6","50fd11b764194f06977c162c37e5a70bcf0d3579bf82dd4de4eee3ac68d0f82f","ad5ad568f2f537a43dcc1588b2379f9dc79539ae36b8821b13a5d03625211eb2","99579aa074ed298e7a3d6a47e68f0cd099e92411212d5081ce88344a5b1b528d","d2d58166965f631fa203f405f3713b0f86f1f8b80755e9daea43057a25311e16","ce7dbf31739cc7bca35ca50e4f0cbd75cd31fd6c05c66841f8748e225dc73aaf","942ab34f62ac3f3d20014615b6442b6dc51815e30a878ebc390dd70e0dec63bf","a861cceeb708d23beebcf7f3235dcdd1a5a7d1655afd6ba49dbc0d45f5370469","0256d60785ede7860b5262f504f139aa68f74db44ba9f03807b752864580772c","396c1e5a39706999ec8cc582916e05fcb4f901631d2c192c1292e95089a494d9","89df75d28f34fc698fe261f9489125b4e5828fbd62d863bbe93373d3ed995056","7cb9b6d5c1e3508fbc81e7bbab314eac54715f9326ac72fd0eb65f17a4393d50","eefa4f00b4a4c150786e5ed866999b44687388e94a99f0b67a78b59c5b2303fd","3bcc2bbb40a70477a56b4d2e817e4b0044d567bae25bbca6be9136607bea2afe","be75c12a8d61aaadb9e33e0d7d0e7b2f3bee9a3ac618d04367e0b7c2aea3f86d","e6223b7263dd7a49f4691bf8df2b1e69f764fb46972937e6f9b28538d050b1ba","c0849999805318805a3932d166a8ae03899ec253c7c9fea35ba6e5a1d04e5572","f8a3096b501a807cd24f83dbd273bd4844a0c49d1d826eb821fafd2b37cf792b","903bb69c5e5ce0cb8f8159a86acca9116275f8c78253db80004fe0d78f436ef4","9daabcf8cac2bd41d4cb83511c0358fc24650fd08f9ae73e888582285a116a3f","82d3e00d56a71fc169f3cf9ec5f5ffcc92f6c0e67d4dfc130dafe9f1886d5515","691e990c527fc0abefa2cd0922b0dcfd83cf98a3f0c11a96a854f34fc85361f5","6b92208e18bfa294582ff012c43a6f35834e611eed63488799f2d74c25c132d2","e3d221660c0b79a9a3ba1111b3dfbb1136c0b52d7609b0054d3ce09ce711a3e6","892adfd3427fa4ed24bede88e8e46e4cb67e53e794365023fd473f3be796981d","4541d8b29bed87d05434bd0af815a6e2293520f0c4ece541c6dabecdbcb2fc95","9fac6ebf3c60ced53dd21def30a679ec225fc3ff4b8d66b86326c285a4eebb5a","992fda06eebba15d37625007500bef5b3fdd1c5e2f5a334064efeb1604c7bce3","07bc8a3551e39e70c38e7293b1a09916867d728043e352b119f951742cb91624","e47adc2176f43c617c0ab47f2d9b2bb1706d9e0669bf349a30c3fe09ddd63261","7fec79dfd7319fec7456b1b53134edb54c411ba493a0aef350eee75a4f223eeb","189c489705bb96a308dcde9b3336011d08bfbca568bcaf5d5d55c05468e9de7a","98f4b1074567341764b580bf14c5aabe82a4390d11553780814f7e932970a6f7","abdc0a8843b28c3cafbefb90079690b17b7b4e2a9c9bbf2cd8762e11a3958034","2e252235037a2cd8feebfbf74aa460f783e5d423895d13f29a934d7655a1f8be","f3e04e6c6db44b9ad05a0b7c89e914b08eee05f2050968b761ed98735d42cd62",{"version":"69fe6a0387f279404db8ffeeaea9275ed6b9c433ecf5a147f1fef4835e7ab597","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"760cb9b76ab53a2f704ee0e731e162bcfc6af609f5e400a668efe2cc7923e4f4","cc957354aa3c94c9961ebf46282cfde1e81d107fc5785a61f62c67f1dd3ac2eb","7ec238b220ea991b6643e24191b1f552a65956d5f6de4c6144e700b9985265d8","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","dae3d1adc67ac3dbd1cd471889301339ec439837b5df565982345be20c8fca9a","5426e62886b7be7806312d31a00e8f7dccd6fe63ba9bbefe99ee2eab29cc48a3","6d829824ead8999f87b6df21200df3c6150391b894b4e80662caa462bd48d073","afc559c1b93df37c25aef6b3dfa2d64325b0e112e887ee18bf7e6f4ec383fc90","8d48b8f8a377ade8dd1f000625bc276eea067f2529cc9cafdf082d17142107d6",{"version":"64d4b35c5456adf258d2cf56c341e203a073253f229ef3208fc0d5020253b241","affectsGlobalScope":true},"a1c79f857f5c7754e14c93949dad8cfefcd7df2ecc0dc9dd79a30fd493e28449","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","5759f4fc8d144161afa3200476981479989923195c96ec8b9844152a1825d041","e050a0afcdbb269720a900c85076d18e0c1ab73e580202a2bf6964978181222a","16d51f964ec125ad2024cf03f0af444b3bc3ec3614d9345cc54d09bab45c9a4c","ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc",{"version":"ae3fe461989bbd951344efc1f1fe932360ce7392e6126bdb225a82a1bbaf15ee","affectsGlobalScope":true},"5b9ecf7da4d71cf3832dbb8336150fa924631811f488ad4690c2dfec2b4fb1d7","951c85f75aac041dddbedfedf565886a7b494e29ec1532e2a9b4a6180560b50e","f47887b61c6cf2f48746980390d6cb5b8013518951d912cfb37fe748071942be","15c88bfd1b8dc7231ff828ae8df5d955bae5ebca4cf2bcb417af5821e52299ae","3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","763e521cf114b80e0dd0e21ca49b9f8ae62e8999555a5e7bade8ce36b33001c2","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","74986224d4bee6bdfe68db653bb46e389101227ad705065a050ea6dbb171897e","ffcc5500e77223169833fc6eb59b3a507944a1f89574e0a1276b0ea7fc22c4a4","22f13de9e2fe5f0f4724797abd3d34a1cdd6e47ef81fc4933fea3b8bf4ad524b","e3ba509d3dce019b3190ceb2f3fc88e2610ab717122dabd91a9efaa37804040d","cda0cb09b995489b7f4c57f168cd31b83dcbaa7aad49612734fb3c9c73f6e4f2","f72f8428f3c1caa22e9c247d046603b85b442c0dae7b77a7a0bc092c18867cb7",{"version":"195f63105abc03e72b6a176e3e34dfb5ac932b55db378fdc7874b1617e24b465","affectsGlobalScope":true},"2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",{"version":"d9aa2c3d6bb462015bb36be4282ec9dfeca33d687aae1b7d726c6c9543165dd1","affectsGlobalScope":true},"29d59e921bc723594bbfc98230d24f38f0d5a669f28fcf989b7468f4f95b7c52","25e05fe63d24c13857e295d74010b5694894f571698e31ae555e0577331a2ce4","93c4fc5b5237c09bc9ed65cb8f0dc1d89034406ab40500b89701341994897142","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","77c1d91a129ba60b8c405f9f539e42df834afb174fe0785f89d92a2c7c16b77a","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","6eef5113135a0f2bbac8259909a5bbb7666bcde022c28f4ab95145623cbe1f72","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","6aee496bf0ecfbf6731aa8cca32f4b6e92cdc0a444911a7d88410408a45ecc5d","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","31c502014e5ba046d5cb060136929b73fd53f0f989aa37b2b0424644cb0d93ef","76232dbb982272b182a76ad8745a9b02724dc9896e2328ce360e2c56c64c9778","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","28288f5e5f8b7b895ed2abe6359c1da3e0d14a64b5aef985071285671f347c01"],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"emitDecoratorMetadata":true,"experimentalDecorators":true,"module":1,"noFallthroughCasesInSwitch":false,"noImplicitAny":false,"outDir":"./","removeComments":true,"skipLibCheck":true,"sourceMap":true,"strictBindCallApply":false,"strictNullChecks":false,"target":4},"fileIdsList":[[227,508],[227],[227,535],[227,354,356],[227,347,356,357],[227,386],[227,297,386],[227,387,388],[47,227,358,389,391,392],[227,293,347],[227,390],[227,347,354,355],[227,355,356],[227,347],[227,326,334],[227,450],[227,359,360,361,362,363,364,365,366,367,368,369,370,371,372],[227,302,334],[227,326],[227,299,347,450],[227,377,378,379,380,381,382,383,384],[227,304],[227,347,450],[227,373,376,385],[227,374,375],[227,338],[227,304,305,306,307],[227,394],[227,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415],[227,418],[215,227,234,417],[46,227,308,347,354,386,393,416,419,440,445,447,449],[51,227],[51,227,293],[227,302,421],[227,296,423],[227,293,297],[51,227,347],[227,301,302],[227,313],[227,315,316,317,318,319],[227,308,321,325,326],[227,327,328,329],[227,234],[48,49,50,51,52,227,294,295,296,297,298,299,300,301,302,303,313,314,320,325,326,330,331,332,334,342,343,344,345,346],[227,324],[227,309,310,311,312],[227,302,309,310],[227,302,308],[227,302,311],[227,302,338],[227,333,335,336,337,338,339,340,341],[48,227,302],[227,334],[48,227,302,333,337,339],[227,310],[227,335],[227,302,334,335,336],[227,323],[227,302,306,323,342],[227,321,322,324],[227,298,300,314,321,326,327,343,344,347],[52,227,298,300,303,343,344],[227,307],[227,293],[227,323,347,348,352],[227,352,353],[227,347,348],[227,347,348,349],[227,349,350],[227,349,350,351],[227,303],[227,433],[227,433,434,435,436,437,438],[227,425,433],[227,434,435,436,437],[227,303,433,436],[227,420,426,427,428,429,430,431,432,439],[227,303,347,426],[227,303,425],[227,303,425,450],[227,296,302,303,421,422,423,424,425],[227,293,347,421,422,441],[227,347,421],[227,443],[227,386,441],[227,441,442,444],[227,323,446],[227,333],[227,308,347],[227,448],[227,321,325,347,450],[227,460],[227,347,450,468,469],[227,464,467,468],[227,472,473],[227,450,461,475],[227,476],[227,468],[227,475,478],[46,227,461,470,471,474,477,479,482,488,491,492,493,495,497,503,505],[227,347,462],[227,302,331,450,462,463,464,467,468,470,506],[227,464,465,466,468,481,487],[50,227,302,331,450,467,468],[227,480],[227,450,465,467,484],[227,347,450,467],[227,450,463,464,466,483,485,486],[227,450,465,467,468],[227,302,450],[227,302,347,465,466,468],[227,467],[227,331],[227,309,313,347,489],[227,490],[227,347,465],[227,302,347,450,465,467,468,484],[227,314,321,325,450,461,465,470,492],[227,324,325,450,460,494],[227,496],[214,227,234,450],[227,499,501,502],[227,498],[227,500],[227,450,464,467,499],[50,227,302,331,347,450,465,467,470,482],[227,504],[227,508,509,510,511,512],[227,508,510],[201,227,234,514],[201,227,234],[227,518,520],[227,517,518,519],[198,201,227,234,522,523],[227,515,523,524,527],[199,227,234],[227,530],[227,531],[227,537,540],[227,526],[227,525],[183,227],[186,227],[187,192,218,227],[188,198,199,206,215,226,227],[188,189,198,206,227],[190,227],[191,192,199,207,227],[192,215,223,227],[193,195,198,206,227],[194,227],[195,196,227],[197,198,227],[198,227],[198,199,200,215,226,227],[198,199,200,215,227],[201,206,215,226,227],[198,199,201,202,206,215,223,226,227],[201,203,215,223,226,227],[183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233],[198,204,227],[205,226,227],[195,198,206,215,227],[207,227],[208,227],[186,209,227],[210,225,227,231],[211,227],[212,227],[198,213,227],[213,214,227,229],[187,198,215,216,217,227],[187,215,217,227],[215,216,227],[218,227],[219,227],[198,221,222,227],[221,222,227],[192,206,223,227],[224,227],[206,225,227],[187,201,212,226,227],[192,227],[215,227,228],[227,229],[227,230],[187,192,198,200,209,215,226,227,229,231],[215,227,232],[227,528,543,544],[227,528,543],[201,227,528],[227,547,586],[227,547,571,586],[227,586],[227,547],[227,547,572,586],[227,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585],[227,572,586],[201,227,234,526],[187,199,201,215,227,234,516],[227,589],[227,591],[227,533,539],[227,537],[227,534,538],[227,536],[53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,69,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,109,110,111,112,113,114,115,116,117,118,120,122,123,124,125,126,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,172,173,174,176,227,237,239,240,241,242,243,244,246,247,249,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292],[98,227],[56,57,227],[53,54,55,57,227],[54,57,227],[57,98,227],[53,57,175,227],[55,56,57,227],[53,57,227],[57,227],[56,227],[53,56,98,227],[54,56,57,227,266],[56,57,227,266],[56,227,274],[54,56,57,227],[66,227],[89,227],[110,227],[56,57,98,227],[57,105,227],[56,57,98,116,227],[56,57,116,227],[57,157,227],[53,57,176,227],[182,227,236],[53,57,175,182,227,235],[175,176,227,236],[182,227],[53,57,182,227,235,236],[227,250],[227,245],[227,248],[54,56,176,177,178,179,227],[98,176,177,178,179,227],[176,178,227],[56,177,178,180,181,227,237],[53,56,227],[57,227,252],[58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,104,106,107,108,109,110,111,112,113,114,115,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,227],[227,238],[227,450,451],[227,450,451,452,457,458],[227,450,455,457],[227,450,454],[227,459,506],[227,450,454,456],[227,293,450,453],[451],[454],[453,454],[453]],"referencedMap":[[510,1],[508,2],[533,2],[536,3],[47,2],[357,4],[358,5],[387,6],[388,7],[389,8],[393,9],[390,10],[391,11],[355,2],[356,12],[392,13],[371,2],[359,2],[360,14],[361,15],[362,2],[363,16],[373,17],[364,2],[365,18],[366,2],[367,2],[368,14],[369,14],[370,14],[372,19],[380,20],[382,2],[379,2],[385,21],[383,2],[381,2],[377,22],[378,23],[384,2],[386,24],[374,2],[376,25],[375,26],[305,2],[308,27],[304,2],[306,2],[307,2],[410,28],[395,28],[402,28],[399,28],[412,28],[403,28],[409,28],[394,2],[413,28],[416,29],[407,28],[397,28],[415,28],[400,28],[398,28],[408,28],[404,28],[414,28],[401,28],[411,28],[396,28],[406,28],[405,28],[419,30],[418,31],[417,2],[450,32],[48,2],[49,2],[50,2],[52,33],[294,34],[295,33],[421,2],[321,2],[322,2],[422,35],[296,2],[423,2],[424,36],[51,2],[298,37],[299,2],[297,38],[300,37],[301,2],[303,39],[314,40],[315,2],[320,41],[316,2],[317,2],[318,2],[319,2],[327,42],[330,43],[328,2],[329,44],[347,45],[331,2],[332,2],[494,46],[313,47],[311,48],[309,49],[310,50],[312,2],[339,51],[333,2],[342,52],[335,53],[340,54],[338,55],[341,56],[336,57],[337,58],[324,59],[343,60],[325,61],[345,62],[346,63],[334,2],[302,2],[326,64],[344,65],[353,66],[348,2],[354,67],[349,68],[350,69],[351,70],[352,71],[420,72],[434,73],[433,2],[439,74],[435,73],[436,75],[438,76],[437,77],[440,78],[427,79],[428,80],[431,81],[430,81],[429,80],[432,80],[426,82],[442,83],[441,84],[444,85],[443,86],[445,87],[446,59],[447,88],[323,2],[448,89],[425,90],[449,91],[460,92],[461,93],[470,94],[471,2],[472,2],[473,95],[474,96],[476,97],[477,98],[478,99],[475,93],[479,100],[506,101],[463,102],[465,103],[488,104],[484,105],[481,106],[480,2],[485,107],[468,108],[486,2],[487,109],[466,110],[462,111],[467,112],[464,113],[482,114],[490,115],[491,116],[489,117],[492,118],[493,119],[495,120],[497,121],[496,122],[503,123],[469,16],[499,124],[498,16],[501,125],[500,2],[502,126],[483,127],[505,128],[504,16],[535,2],[513,129],[509,1],[511,130],[512,1],[515,131],[514,132],[516,2],[521,133],[517,2],[520,134],[518,2],[524,135],[528,136],[529,137],[530,2],[531,138],[532,139],[541,140],[519,2],[525,141],[526,142],[183,143],[184,143],[186,144],[187,145],[188,146],[189,147],[190,148],[191,149],[192,150],[193,151],[194,152],[195,153],[196,153],[197,154],[198,155],[199,156],[200,157],[185,2],[233,2],[201,158],[202,159],[203,160],[234,161],[204,162],[205,163],[206,164],[207,165],[208,166],[209,167],[210,168],[211,169],[212,170],[213,171],[214,172],[215,173],[217,174],[216,175],[218,176],[219,177],[220,2],[221,178],[222,179],[223,180],[224,181],[225,182],[226,183],[227,184],[228,185],[229,186],[230,187],[231,188],[232,189],[542,2],[545,190],[544,191],[543,192],[546,2],[523,2],[522,2],[571,193],[572,194],[547,195],[550,195],[569,193],[570,193],[560,193],[559,196],[557,193],[552,193],[565,193],[563,193],[567,193],[551,193],[564,193],[568,193],[553,193],[554,193],[566,193],[548,193],[555,193],[556,193],[558,193],[562,193],[573,197],[561,193],[549,193],[586,198],[585,2],[580,197],[582,199],[581,197],[574,197],[575,197],[577,197],[579,197],[583,199],[584,199],[576,199],[578,199],[527,200],[587,2],[589,201],[590,202],[591,2],[592,203],[588,2],[540,204],[538,205],[539,206],[534,2],[537,207],[46,2],[293,208],[266,2],[244,209],[242,209],[105,210],[56,211],[55,212],[243,213],[176,214],[98,215],[54,216],[53,217],[292,212],[257,218],[256,218],[116,219],[264,210],[265,210],[267,220],[268,210],[269,217],[270,210],[241,210],[271,210],[272,221],[273,210],[274,218],[275,222],[276,210],[277,210],[278,210],[279,210],[280,218],[281,210],[282,210],[283,210],[284,210],[285,223],[286,210],[287,210],[288,210],[289,210],[290,210],[58,217],[59,217],[60,210],[61,217],[62,217],[63,217],[64,217],[65,210],[67,224],[68,217],[66,217],[69,217],[70,217],[71,217],[72,217],[73,217],[74,217],[75,210],[76,217],[77,217],[78,217],[79,217],[80,217],[81,210],[82,217],[83,210],[84,217],[85,217],[86,217],[87,217],[88,210],[90,225],[89,217],[91,217],[92,217],[93,217],[94,217],[95,223],[96,210],[97,210],[111,226],[99,227],[100,217],[101,217],[102,210],[103,217],[104,217],[106,228],[107,217],[108,217],[109,217],[110,217],[112,217],[113,217],[114,217],[115,217],[117,229],[118,217],[119,217],[120,217],[121,210],[122,217],[123,230],[124,230],[125,230],[126,210],[127,217],[128,217],[129,217],[134,217],[130,217],[131,210],[132,217],[133,210],[135,210],[136,217],[137,217],[138,210],[139,210],[140,217],[141,210],[142,217],[143,217],[144,210],[145,217],[146,217],[147,217],[148,217],[149,217],[150,217],[151,217],[152,217],[153,217],[154,217],[155,217],[156,217],[157,217],[158,231],[159,217],[160,217],[161,217],[162,217],[163,217],[164,217],[165,210],[166,210],[167,210],[168,210],[169,210],[170,217],[171,217],[172,217],[173,217],[291,210],[175,232],[250,233],[245,233],[236,234],[182,235],[248,236],[237,237],[251,238],[246,239],[247,236],[249,240],[235,44],[240,2],[180,241],[181,242],[178,2],[179,243],[177,217],[238,244],[57,245],[258,2],[259,2],[260,2],[261,2],[262,2],[263,2],[252,2],[255,218],[254,2],[253,246],[174,247],[239,248],[8,2],[9,2],[13,2],[12,2],[2,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[3,2],[4,2],[45,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[5,2],[29,2],[30,2],[31,2],[32,2],[6,2],[33,2],[34,2],[35,2],[36,2],[7,2],[37,2],[42,2],[43,2],[38,2],[39,2],[40,2],[41,2],[1,2],[44,2],[11,2],[10,2],[452,249],[459,250],[451,16],[458,251],[455,252],[507,253],[453,2],[456,252],[457,254],[454,255]],"exportedModulesMap":[[510,1],[508,2],[533,2],[536,3],[47,2],[357,4],[358,5],[387,6],[388,7],[389,8],[393,9],[390,10],[391,11],[355,2],[356,12],[392,13],[371,2],[359,2],[360,14],[361,15],[362,2],[363,16],[373,17],[364,2],[365,18],[366,2],[367,2],[368,14],[369,14],[370,14],[372,19],[380,20],[382,2],[379,2],[385,21],[383,2],[381,2],[377,22],[378,23],[384,2],[386,24],[374,2],[376,25],[375,26],[305,2],[308,27],[304,2],[306,2],[307,2],[410,28],[395,28],[402,28],[399,28],[412,28],[403,28],[409,28],[394,2],[413,28],[416,29],[407,28],[397,28],[415,28],[400,28],[398,28],[408,28],[404,28],[414,28],[401,28],[411,28],[396,28],[406,28],[405,28],[419,30],[418,31],[417,2],[450,32],[48,2],[49,2],[50,2],[52,33],[294,34],[295,33],[421,2],[321,2],[322,2],[422,35],[296,2],[423,2],[424,36],[51,2],[298,37],[299,2],[297,38],[300,37],[301,2],[303,39],[314,40],[315,2],[320,41],[316,2],[317,2],[318,2],[319,2],[327,42],[330,43],[328,2],[329,44],[347,45],[331,2],[332,2],[494,46],[313,47],[311,48],[309,49],[310,50],[312,2],[339,51],[333,2],[342,52],[335,53],[340,54],[338,55],[341,56],[336,57],[337,58],[324,59],[343,60],[325,61],[345,62],[346,63],[334,2],[302,2],[326,64],[344,65],[353,66],[348,2],[354,67],[349,68],[350,69],[351,70],[352,71],[420,72],[434,73],[433,2],[439,74],[435,73],[436,75],[438,76],[437,77],[440,78],[427,79],[428,80],[431,81],[430,81],[429,80],[432,80],[426,82],[442,83],[441,84],[444,85],[443,86],[445,87],[446,59],[447,88],[323,2],[448,89],[425,90],[449,91],[460,92],[461,93],[470,94],[471,2],[472,2],[473,95],[474,96],[476,97],[477,98],[478,99],[475,93],[479,100],[506,101],[463,102],[465,103],[488,104],[484,105],[481,106],[480,2],[485,107],[468,108],[486,2],[487,109],[466,110],[462,111],[467,112],[464,113],[482,114],[490,115],[491,116],[489,117],[492,118],[493,119],[495,120],[497,121],[496,122],[503,123],[469,16],[499,124],[498,16],[501,125],[500,2],[502,126],[483,127],[505,128],[504,16],[535,2],[513,129],[509,1],[511,130],[512,1],[515,131],[514,132],[516,2],[521,133],[517,2],[520,134],[518,2],[524,135],[528,136],[529,137],[530,2],[531,138],[532,139],[541,140],[519,2],[525,141],[526,142],[183,143],[184,143],[186,144],[187,145],[188,146],[189,147],[190,148],[191,149],[192,150],[193,151],[194,152],[195,153],[196,153],[197,154],[198,155],[199,156],[200,157],[185,2],[233,2],[201,158],[202,159],[203,160],[234,161],[204,162],[205,163],[206,164],[207,165],[208,166],[209,167],[210,168],[211,169],[212,170],[213,171],[214,172],[215,173],[217,174],[216,175],[218,176],[219,177],[220,2],[221,178],[222,179],[223,180],[224,181],[225,182],[226,183],[227,184],[228,185],[229,186],[230,187],[231,188],[232,189],[542,2],[545,190],[544,191],[543,192],[546,2],[523,2],[522,2],[571,193],[572,194],[547,195],[550,195],[569,193],[570,193],[560,193],[559,196],[557,193],[552,193],[565,193],[563,193],[567,193],[551,193],[564,193],[568,193],[553,193],[554,193],[566,193],[548,193],[555,193],[556,193],[558,193],[562,193],[573,197],[561,193],[549,193],[586,198],[585,2],[580,197],[582,199],[581,197],[574,197],[575,197],[577,197],[579,197],[583,199],[584,199],[576,199],[578,199],[527,200],[587,2],[589,201],[590,202],[591,2],[592,203],[588,2],[540,204],[538,205],[539,206],[534,2],[537,207],[46,2],[293,208],[266,2],[244,209],[242,209],[105,210],[56,211],[55,212],[243,213],[176,214],[98,215],[54,216],[53,217],[292,212],[257,218],[256,218],[116,219],[264,210],[265,210],[267,220],[268,210],[269,217],[270,210],[241,210],[271,210],[272,221],[273,210],[274,218],[275,222],[276,210],[277,210],[278,210],[279,210],[280,218],[281,210],[282,210],[283,210],[284,210],[285,223],[286,210],[287,210],[288,210],[289,210],[290,210],[58,217],[59,217],[60,210],[61,217],[62,217],[63,217],[64,217],[65,210],[67,224],[68,217],[66,217],[69,217],[70,217],[71,217],[72,217],[73,217],[74,217],[75,210],[76,217],[77,217],[78,217],[79,217],[80,217],[81,210],[82,217],[83,210],[84,217],[85,217],[86,217],[87,217],[88,210],[90,225],[89,217],[91,217],[92,217],[93,217],[94,217],[95,223],[96,210],[97,210],[111,226],[99,227],[100,217],[101,217],[102,210],[103,217],[104,217],[106,228],[107,217],[108,217],[109,217],[110,217],[112,217],[113,217],[114,217],[115,217],[117,229],[118,217],[119,217],[120,217],[121,210],[122,217],[123,230],[124,230],[125,230],[126,210],[127,217],[128,217],[129,217],[134,217],[130,217],[131,210],[132,217],[133,210],[135,210],[136,217],[137,217],[138,210],[139,210],[140,217],[141,210],[142,217],[143,217],[144,210],[145,217],[146,217],[147,217],[148,217],[149,217],[150,217],[151,217],[152,217],[153,217],[154,217],[155,217],[156,217],[157,217],[158,231],[159,217],[160,217],[161,217],[162,217],[163,217],[164,217],[165,210],[166,210],[167,210],[168,210],[169,210],[170,217],[171,217],[172,217],[173,217],[291,210],[175,232],[250,233],[245,233],[236,234],[182,235],[248,236],[237,237],[251,238],[246,239],[247,236],[249,240],[235,44],[240,2],[180,241],[181,242],[178,2],[179,243],[177,217],[238,244],[57,245],[258,2],[259,2],[260,2],[261,2],[262,2],[263,2],[252,2],[255,218],[254,2],[253,246],[174,247],[239,248],[8,2],[9,2],[13,2],[12,2],[2,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[3,2],[4,2],[45,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[5,2],[29,2],[30,2],[31,2],[32,2],[6,2],[33,2],[34,2],[35,2],[36,2],[7,2],[37,2],[42,2],[43,2],[38,2],[39,2],[40,2],[41,2],[1,2],[44,2],[11,2],[10,2],[452,256],[458,251],[455,257],[456,258],[454,259]],"semanticDiagnosticsPerFile":[510,508,533,536,47,357,358,387,388,389,393,390,391,355,356,392,371,359,360,361,362,363,373,364,365,366,367,368,369,370,372,380,382,379,385,383,381,377,378,384,386,374,376,375,305,308,304,306,307,410,395,402,399,412,403,409,394,413,416,407,397,415,400,398,408,404,414,401,411,396,406,405,419,418,417,450,48,49,50,52,294,295,421,321,322,422,296,423,424,51,298,299,297,300,301,303,314,315,320,316,317,318,319,327,330,328,329,347,331,332,494,313,311,309,310,312,339,333,342,335,340,338,341,336,337,324,343,325,345,346,334,302,326,344,353,348,354,349,350,351,352,420,434,433,439,435,436,438,437,440,427,428,431,430,429,432,426,442,441,444,443,445,446,447,323,448,425,449,460,461,470,471,472,473,474,476,477,478,475,479,506,463,465,488,484,481,480,485,468,486,487,466,462,467,464,482,490,491,489,492,493,495,497,496,503,469,499,498,501,500,502,483,505,504,535,513,509,511,512,515,514,516,521,517,520,518,524,528,529,530,531,532,541,519,525,526,183,184,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,185,233,201,202,203,234,204,205,206,207,208,209,210,211,212,213,214,215,217,216,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,542,545,544,543,546,523,522,571,572,547,550,569,570,560,559,557,552,565,563,567,551,564,568,553,554,566,548,555,556,558,562,573,561,549,586,585,580,582,581,574,575,577,579,583,584,576,578,527,587,589,590,591,592,588,540,538,539,534,537,46,293,266,244,242,105,56,55,243,176,98,54,53,292,257,256,116,264,265,267,268,269,270,241,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,58,59,60,61,62,63,64,65,67,68,66,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,90,89,91,92,93,94,95,96,97,111,99,100,101,102,103,104,106,107,108,109,110,112,113,114,115,117,118,119,120,121,122,123,124,125,126,127,128,129,134,130,131,132,133,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,291,175,250,245,236,182,248,237,251,246,247,249,235,240,180,181,178,179,177,238,57,258,259,260,261,262,263,252,255,254,253,174,239,8,9,13,12,2,14,15,16,17,18,19,20,21,3,4,45,25,22,23,24,26,27,28,5,29,30,31,32,6,33,34,35,36,7,37,42,43,38,39,40,41,1,44,11,10,452,459,451,458,455,507,453,456,457,454]},"version":"4.8.4"} \ No newline at end of file +{"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../node_modules/typescript/lib/lib.scripthost.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/typescript/lib/lib.es2017.full.d.ts","../node_modules/reflect-metadata/index.d.ts","../node_modules/@nestjs/common/cache/cache.constants.d.ts","../node_modules/@nestjs/common/interfaces/abstract.interface.d.ts","../node_modules/@nestjs/common/interfaces/controllers/controller-metadata.interface.d.ts","../node_modules/@nestjs/common/interfaces/controllers/controller.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/arguments-host.interface.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/exception-filter.interface.d.ts","../node_modules/rxjs/dist/types/internal/Subscription.d.ts","../node_modules/rxjs/dist/types/internal/Subscriber.d.ts","../node_modules/rxjs/dist/types/internal/Operator.d.ts","../node_modules/rxjs/dist/types/internal/Observable.d.ts","../node_modules/rxjs/dist/types/internal/types.d.ts","../node_modules/rxjs/dist/types/internal/operators/audit.d.ts","../node_modules/rxjs/dist/types/internal/operators/auditTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/buffer.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferCount.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferToggle.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/catchError.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineLatestAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineLatest.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineLatestWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/concat.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatMapTo.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/connect.d.ts","../node_modules/rxjs/dist/types/internal/operators/count.d.ts","../node_modules/rxjs/dist/types/internal/operators/debounce.d.ts","../node_modules/rxjs/dist/types/internal/operators/debounceTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/defaultIfEmpty.d.ts","../node_modules/rxjs/dist/types/internal/operators/delay.d.ts","../node_modules/rxjs/dist/types/internal/operators/delayWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/dematerialize.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinct.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinctUntilChanged.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinctUntilKeyChanged.d.ts","../node_modules/rxjs/dist/types/internal/operators/elementAt.d.ts","../node_modules/rxjs/dist/types/internal/operators/endWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/every.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaustAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaust.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaustMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/expand.d.ts","../node_modules/rxjs/dist/types/internal/operators/filter.d.ts","../node_modules/rxjs/dist/types/internal/operators/finalize.d.ts","../node_modules/rxjs/dist/types/internal/operators/find.d.ts","../node_modules/rxjs/dist/types/internal/operators/findIndex.d.ts","../node_modules/rxjs/dist/types/internal/operators/first.d.ts","../node_modules/rxjs/dist/types/internal/Subject.d.ts","../node_modules/rxjs/dist/types/internal/operators/groupBy.d.ts","../node_modules/rxjs/dist/types/internal/operators/ignoreElements.d.ts","../node_modules/rxjs/dist/types/internal/operators/isEmpty.d.ts","../node_modules/rxjs/dist/types/internal/operators/last.d.ts","../node_modules/rxjs/dist/types/internal/operators/map.d.ts","../node_modules/rxjs/dist/types/internal/operators/mapTo.d.ts","../node_modules/rxjs/dist/types/internal/Notification.d.ts","../node_modules/rxjs/dist/types/internal/operators/materialize.d.ts","../node_modules/rxjs/dist/types/internal/operators/max.d.ts","../node_modules/rxjs/dist/types/internal/operators/merge.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/flatMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeMapTo.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeScan.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/min.d.ts","../node_modules/rxjs/dist/types/internal/observable/ConnectableObservable.d.ts","../node_modules/rxjs/dist/types/internal/operators/multicast.d.ts","../node_modules/rxjs/dist/types/internal/operators/observeOn.d.ts","../node_modules/rxjs/dist/types/internal/operators/onErrorResumeNext.d.ts","../node_modules/rxjs/dist/types/internal/operators/pairwise.d.ts","../node_modules/rxjs/dist/types/internal/operators/partition.d.ts","../node_modules/rxjs/dist/types/internal/operators/pluck.d.ts","../node_modules/rxjs/dist/types/internal/operators/publish.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishBehavior.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishLast.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishReplay.d.ts","../node_modules/rxjs/dist/types/internal/operators/race.d.ts","../node_modules/rxjs/dist/types/internal/operators/raceWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/reduce.d.ts","../node_modules/rxjs/dist/types/internal/operators/repeat.d.ts","../node_modules/rxjs/dist/types/internal/operators/repeatWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/retry.d.ts","../node_modules/rxjs/dist/types/internal/operators/retryWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/refCount.d.ts","../node_modules/rxjs/dist/types/internal/operators/sample.d.ts","../node_modules/rxjs/dist/types/internal/operators/sampleTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/scan.d.ts","../node_modules/rxjs/dist/types/internal/operators/sequenceEqual.d.ts","../node_modules/rxjs/dist/types/internal/operators/share.d.ts","../node_modules/rxjs/dist/types/internal/operators/shareReplay.d.ts","../node_modules/rxjs/dist/types/internal/operators/single.d.ts","../node_modules/rxjs/dist/types/internal/operators/skip.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipLast.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipUntil.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipWhile.d.ts","../node_modules/rxjs/dist/types/internal/operators/startWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/subscribeOn.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchMap.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchMapTo.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchScan.d.ts","../node_modules/rxjs/dist/types/internal/operators/take.d.ts","../node_modules/rxjs/dist/types/internal/operators/takeLast.d.ts","../node_modules/rxjs/dist/types/internal/operators/takeUntil.d.ts","../node_modules/rxjs/dist/types/internal/operators/takeWhile.d.ts","../node_modules/rxjs/dist/types/internal/operators/tap.d.ts","../node_modules/rxjs/dist/types/internal/operators/throttle.d.ts","../node_modules/rxjs/dist/types/internal/operators/throttleTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/throwIfEmpty.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeInterval.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeout.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeoutWith.d.ts","../node_modules/rxjs/dist/types/internal/operators/timestamp.d.ts","../node_modules/rxjs/dist/types/internal/operators/toArray.d.ts","../node_modules/rxjs/dist/types/internal/operators/window.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowCount.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowTime.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowToggle.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowWhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/withLatestFrom.d.ts","../node_modules/rxjs/dist/types/internal/operators/zip.d.ts","../node_modules/rxjs/dist/types/internal/operators/zipAll.d.ts","../node_modules/rxjs/dist/types/internal/operators/zipWith.d.ts","../node_modules/rxjs/dist/types/operators/index.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/Action.d.ts","../node_modules/rxjs/dist/types/internal/Scheduler.d.ts","../node_modules/rxjs/dist/types/internal/testing/TestMessage.d.ts","../node_modules/rxjs/dist/types/internal/testing/SubscriptionLog.d.ts","../node_modules/rxjs/dist/types/internal/testing/SubscriptionLoggable.d.ts","../node_modules/rxjs/dist/types/internal/testing/ColdObservable.d.ts","../node_modules/rxjs/dist/types/internal/testing/HotObservable.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/AsyncScheduler.d.ts","../node_modules/@types/node/ts4.8/assert.d.ts","../node_modules/@types/node/ts4.8/assert/strict.d.ts","../node_modules/@types/node/ts4.8/globals.d.ts","../node_modules/@types/node/ts4.8/async_hooks.d.ts","../node_modules/@types/node/ts4.8/buffer.d.ts","../node_modules/@types/node/ts4.8/child_process.d.ts","../node_modules/@types/node/ts4.8/cluster.d.ts","../node_modules/@types/node/ts4.8/console.d.ts","../node_modules/@types/node/ts4.8/constants.d.ts","../node_modules/@types/node/ts4.8/crypto.d.ts","../node_modules/@types/node/ts4.8/dgram.d.ts","../node_modules/@types/node/ts4.8/diagnostics_channel.d.ts","../node_modules/@types/node/ts4.8/dns.d.ts","../node_modules/@types/node/ts4.8/dns/promises.d.ts","../node_modules/@types/node/ts4.8/domain.d.ts","../node_modules/@types/node/ts4.8/events.d.ts","../node_modules/@types/node/ts4.8/fs.d.ts","../node_modules/@types/node/ts4.8/fs/promises.d.ts","../node_modules/@types/node/ts4.8/http.d.ts","../node_modules/@types/node/ts4.8/http2.d.ts","../node_modules/@types/node/ts4.8/https.d.ts","../node_modules/@types/node/ts4.8/inspector.d.ts","../node_modules/@types/node/ts4.8/module.d.ts","../node_modules/@types/node/ts4.8/net.d.ts","../node_modules/@types/node/ts4.8/os.d.ts","../node_modules/@types/node/ts4.8/path.d.ts","../node_modules/@types/node/ts4.8/perf_hooks.d.ts","../node_modules/@types/node/ts4.8/process.d.ts","../node_modules/@types/node/ts4.8/punycode.d.ts","../node_modules/@types/node/ts4.8/querystring.d.ts","../node_modules/@types/node/ts4.8/readline.d.ts","../node_modules/@types/node/ts4.8/repl.d.ts","../node_modules/@types/node/ts4.8/stream.d.ts","../node_modules/@types/node/ts4.8/stream/promises.d.ts","../node_modules/@types/node/ts4.8/stream/consumers.d.ts","../node_modules/@types/node/ts4.8/stream/web.d.ts","../node_modules/@types/node/ts4.8/string_decoder.d.ts","../node_modules/@types/node/ts4.8/test.d.ts","../node_modules/@types/node/ts4.8/timers.d.ts","../node_modules/@types/node/ts4.8/timers/promises.d.ts","../node_modules/@types/node/ts4.8/tls.d.ts","../node_modules/@types/node/ts4.8/trace_events.d.ts","../node_modules/@types/node/ts4.8/tty.d.ts","../node_modules/@types/node/ts4.8/url.d.ts","../node_modules/@types/node/ts4.8/util.d.ts","../node_modules/@types/node/ts4.8/v8.d.ts","../node_modules/@types/node/ts4.8/vm.d.ts","../node_modules/@types/node/ts4.8/wasi.d.ts","../node_modules/@types/node/ts4.8/worker_threads.d.ts","../node_modules/@types/node/ts4.8/zlib.d.ts","../node_modules/@types/node/ts4.8/globals.global.d.ts","../node_modules/@types/node/ts4.8/index.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/timerHandle.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/AsyncAction.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/VirtualTimeScheduler.d.ts","../node_modules/rxjs/dist/types/internal/testing/TestScheduler.d.ts","../node_modules/rxjs/dist/types/testing/index.d.ts","../node_modules/rxjs/dist/types/internal/symbol/observable.d.ts","../node_modules/rxjs/dist/types/internal/observable/dom/animationFrames.d.ts","../node_modules/rxjs/dist/types/internal/BehaviorSubject.d.ts","../node_modules/rxjs/dist/types/internal/ReplaySubject.d.ts","../node_modules/rxjs/dist/types/internal/AsyncSubject.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/AsapScheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/asap.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/async.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/QueueScheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/queue.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/AnimationFrameScheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/animationFrame.d.ts","../node_modules/rxjs/dist/types/internal/util/identity.d.ts","../node_modules/rxjs/dist/types/internal/util/pipe.d.ts","../node_modules/rxjs/dist/types/internal/util/noop.d.ts","../node_modules/rxjs/dist/types/internal/util/isObservable.d.ts","../node_modules/rxjs/dist/types/internal/lastValueFrom.d.ts","../node_modules/rxjs/dist/types/internal/firstValueFrom.d.ts","../node_modules/rxjs/dist/types/internal/util/ArgumentOutOfRangeError.d.ts","../node_modules/rxjs/dist/types/internal/util/EmptyError.d.ts","../node_modules/rxjs/dist/types/internal/util/NotFoundError.d.ts","../node_modules/rxjs/dist/types/internal/util/ObjectUnsubscribedError.d.ts","../node_modules/rxjs/dist/types/internal/util/SequenceError.d.ts","../node_modules/rxjs/dist/types/internal/util/UnsubscriptionError.d.ts","../node_modules/rxjs/dist/types/internal/observable/bindCallback.d.ts","../node_modules/rxjs/dist/types/internal/observable/bindNodeCallback.d.ts","../node_modules/rxjs/dist/types/internal/AnyCatcher.d.ts","../node_modules/rxjs/dist/types/internal/observable/combineLatest.d.ts","../node_modules/rxjs/dist/types/internal/observable/concat.d.ts","../node_modules/rxjs/dist/types/internal/observable/connectable.d.ts","../node_modules/rxjs/dist/types/internal/observable/defer.d.ts","../node_modules/rxjs/dist/types/internal/observable/empty.d.ts","../node_modules/rxjs/dist/types/internal/observable/forkJoin.d.ts","../node_modules/rxjs/dist/types/internal/observable/from.d.ts","../node_modules/rxjs/dist/types/internal/observable/fromEvent.d.ts","../node_modules/rxjs/dist/types/internal/observable/fromEventPattern.d.ts","../node_modules/rxjs/dist/types/internal/observable/generate.d.ts","../node_modules/rxjs/dist/types/internal/observable/iif.d.ts","../node_modules/rxjs/dist/types/internal/observable/interval.d.ts","../node_modules/rxjs/dist/types/internal/observable/merge.d.ts","../node_modules/rxjs/dist/types/internal/observable/never.d.ts","../node_modules/rxjs/dist/types/internal/observable/of.d.ts","../node_modules/rxjs/dist/types/internal/observable/onErrorResumeNext.d.ts","../node_modules/rxjs/dist/types/internal/observable/pairs.d.ts","../node_modules/rxjs/dist/types/internal/observable/partition.d.ts","../node_modules/rxjs/dist/types/internal/observable/race.d.ts","../node_modules/rxjs/dist/types/internal/observable/range.d.ts","../node_modules/rxjs/dist/types/internal/observable/throwError.d.ts","../node_modules/rxjs/dist/types/internal/observable/timer.d.ts","../node_modules/rxjs/dist/types/internal/observable/using.d.ts","../node_modules/rxjs/dist/types/internal/observable/zip.d.ts","../node_modules/rxjs/dist/types/internal/scheduled/scheduled.d.ts","../node_modules/rxjs/dist/types/internal/config.d.ts","../node_modules/rxjs/dist/types/index.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/rpc-exception-filter.interface.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/ws-exception-filter.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validation-error.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/execution-context.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/can-activate.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/custom-route-param-factory.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/nest-interceptor.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/paramtype.interface.d.ts","../node_modules/@nestjs/common/interfaces/type.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/pipe-transform.interface.d.ts","../node_modules/@nestjs/common/enums/request-method.enum.d.ts","../node_modules/@nestjs/common/enums/http-status.enum.d.ts","../node_modules/@nestjs/common/enums/shutdown-signal.enum.d.ts","../node_modules/@nestjs/common/enums/version-type.enum.d.ts","../node_modules/@nestjs/common/enums/index.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-configuration.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-consumer.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-config-proxy.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/nest-middleware.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/index.d.ts","../node_modules/@nestjs/common/interfaces/global-prefix-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/before-application-shutdown.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-application-bootstrap.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-application-shutdown.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-destroy.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-init.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/index.d.ts","../node_modules/@nestjs/common/interfaces/external/cors-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/https-options.interface.d.ts","../node_modules/@nestjs/common/services/logger.service.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-context-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/version-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/http-server.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/message-event.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/raw-body-request.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/index.d.ts","../node_modules/@nestjs/common/interfaces/injectable.interface.d.ts","../node_modules/@nestjs/common/interfaces/microservices/nest-hybrid-application-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/forward-reference.interface.d.ts","../node_modules/@nestjs/common/interfaces/scope-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/injection-token.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/optional-factory-dependency.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/provider.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/module-metadata.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/dynamic-module.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/introspection-result.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/nest-module.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/index.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-context.interface.d.ts","../node_modules/@nestjs/common/interfaces/websockets/web-socket-adapter.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-application.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-microservice.interface.d.ts","../node_modules/@nestjs/common/interfaces/index.d.ts","../node_modules/@nestjs/common/module-utils/constants.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-async-options.interface.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-cls.interface.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-host.interface.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/index.d.ts","../node_modules/@nestjs/common/module-utils/configurable-module.builder.d.ts","../node_modules/@nestjs/common/module-utils/index.d.ts","../node_modules/@nestjs/common/cache/interfaces/cache-manager.interface.d.ts","../node_modules/@nestjs/common/cache/interfaces/cache-module.interface.d.ts","../node_modules/@nestjs/common/cache/cache.module-definition.d.ts","../node_modules/@nestjs/common/cache/cache.module.d.ts","../node_modules/@nestjs/common/decorators/core/bind.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/catch.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/controller.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/dependencies.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/exception-filters.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/inject.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/injectable.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/optional.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/set-metadata.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-guards.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-interceptors.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-pipes.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/apply-decorators.d.ts","../node_modules/@nestjs/common/decorators/core/version.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/index.d.ts","../node_modules/@nestjs/common/decorators/modules/global.decorator.d.ts","../node_modules/@nestjs/common/decorators/modules/module.decorator.d.ts","../node_modules/@nestjs/common/decorators/modules/index.d.ts","../node_modules/@nestjs/common/decorators/http/request-mapping.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/route-params.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/http-code.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/create-route-param-metadata.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/render.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/header.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/redirect.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/sse.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/index.d.ts","../node_modules/@nestjs/common/decorators/index.d.ts","../node_modules/@nestjs/common/cache/decorators/cache-key.decorator.d.ts","../node_modules/@nestjs/common/cache/decorators/cache-ttl.decorator.d.ts","../node_modules/@nestjs/common/cache/decorators/index.d.ts","../node_modules/@nestjs/common/cache/interceptors/cache.interceptor.d.ts","../node_modules/@nestjs/common/cache/interceptors/index.d.ts","../node_modules/@nestjs/common/cache/interfaces/index.d.ts","../node_modules/@nestjs/common/cache/index.d.ts","../node_modules/@nestjs/common/exceptions/http.exception.d.ts","../node_modules/@nestjs/common/exceptions/bad-request.exception.d.ts","../node_modules/@nestjs/common/exceptions/unauthorized.exception.d.ts","../node_modules/@nestjs/common/exceptions/method-not-allowed.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-found.exception.d.ts","../node_modules/@nestjs/common/exceptions/forbidden.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-acceptable.exception.d.ts","../node_modules/@nestjs/common/exceptions/request-timeout.exception.d.ts","../node_modules/@nestjs/common/exceptions/conflict.exception.d.ts","../node_modules/@nestjs/common/exceptions/gone.exception.d.ts","../node_modules/@nestjs/common/exceptions/payload-too-large.exception.d.ts","../node_modules/@nestjs/common/exceptions/unsupported-media-type.exception.d.ts","../node_modules/@nestjs/common/exceptions/unprocessable-entity.exception.d.ts","../node_modules/@nestjs/common/exceptions/internal-server-error.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-implemented.exception.d.ts","../node_modules/@nestjs/common/exceptions/http-version-not-supported.exception.d.ts","../node_modules/@nestjs/common/exceptions/bad-gateway.exception.d.ts","../node_modules/@nestjs/common/exceptions/service-unavailable.exception.d.ts","../node_modules/@nestjs/common/exceptions/gateway-timeout.exception.d.ts","../node_modules/@nestjs/common/exceptions/im-a-teapot.exception.d.ts","../node_modules/@nestjs/common/exceptions/precondition-failed.exception.d.ts","../node_modules/@nestjs/common/exceptions/misdirected.exception.d.ts","../node_modules/@nestjs/common/exceptions/index.d.ts","../node_modules/@nestjs/common/file-stream/streamable-options.interface.d.ts","../node_modules/@nestjs/common/file-stream/streamable-file.d.ts","../node_modules/@nestjs/common/file-stream/index.d.ts","../node_modules/@nestjs/common/pipes/default-value.pipe.d.ts","../node_modules/@nestjs/common/interfaces/external/class-transform-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/transformer-package.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validator-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validator-package.interface.d.ts","../node_modules/@nestjs/common/utils/http-error-by-code.util.d.ts","../node_modules/@nestjs/common/pipes/validation.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-array.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-bool.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-int.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-float.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-enum.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-uuid.pipe.d.ts","../node_modules/@nestjs/common/pipes/file/file-validator.interface.d.ts","../node_modules/@nestjs/common/pipes/file/file-type.validator.d.ts","../node_modules/@nestjs/common/pipes/file/max-file-size.validator.d.ts","../node_modules/@nestjs/common/pipes/file/parse-file-options.interface.d.ts","../node_modules/@nestjs/common/pipes/file/parse-file.pipe.d.ts","../node_modules/@nestjs/common/pipes/file/parse-file-pipe.builder.d.ts","../node_modules/@nestjs/common/pipes/file/index.d.ts","../node_modules/@nestjs/common/pipes/index.d.ts","../node_modules/@nestjs/common/serializer/class-serializer.interfaces.d.ts","../node_modules/@nestjs/common/serializer/class-serializer.interceptor.d.ts","../node_modules/@nestjs/common/serializer/decorators/serialize-options.decorator.d.ts","../node_modules/@nestjs/common/serializer/decorators/index.d.ts","../node_modules/@nestjs/common/serializer/index.d.ts","../node_modules/@nestjs/common/services/console-logger.service.d.ts","../node_modules/@nestjs/common/services/index.d.ts","../node_modules/@nestjs/common/utils/forward-ref.util.d.ts","../node_modules/@nestjs/common/utils/index.d.ts","../node_modules/@nestjs/common/index.d.ts","../src/app.service.ts","../src/app.controller.ts","../src/users/entities/user.entity.ts","../src/users/users.service.ts","../src/auth/auth.service.ts","../node_modules/class-validator/types/validation/ValidationError.d.ts","../node_modules/class-validator/types/validation/ValidatorOptions.d.ts","../node_modules/class-validator/types/validation-schema/ValidationSchema.d.ts","../node_modules/class-validator/types/container.d.ts","../node_modules/class-validator/types/validation/ValidationArguments.d.ts","../node_modules/class-validator/types/decorator/ValidationOptions.d.ts","../node_modules/class-validator/types/decorator/common/Allow.d.ts","../node_modules/class-validator/types/decorator/common/IsDefined.d.ts","../node_modules/class-validator/types/decorator/common/IsOptional.d.ts","../node_modules/class-validator/types/decorator/common/Validate.d.ts","../node_modules/class-validator/types/validation/ValidatorConstraintInterface.d.ts","../node_modules/class-validator/types/decorator/common/ValidateBy.d.ts","../node_modules/class-validator/types/decorator/common/ValidateIf.d.ts","../node_modules/class-validator/types/decorator/common/ValidateNested.d.ts","../node_modules/class-validator/types/decorator/common/ValidatePromise.d.ts","../node_modules/class-validator/types/decorator/common/IsLatLong.d.ts","../node_modules/class-validator/types/decorator/common/IsLatitude.d.ts","../node_modules/class-validator/types/decorator/common/IsLongitude.d.ts","../node_modules/class-validator/types/decorator/common/Equals.d.ts","../node_modules/class-validator/types/decorator/common/NotEquals.d.ts","../node_modules/class-validator/types/decorator/common/IsEmpty.d.ts","../node_modules/class-validator/types/decorator/common/IsNotEmpty.d.ts","../node_modules/class-validator/types/decorator/common/IsIn.d.ts","../node_modules/class-validator/types/decorator/common/IsNotIn.d.ts","../node_modules/class-validator/types/decorator/number/IsDivisibleBy.d.ts","../node_modules/class-validator/types/decorator/number/IsPositive.d.ts","../node_modules/class-validator/types/decorator/number/IsNegative.d.ts","../node_modules/class-validator/types/decorator/number/Max.d.ts","../node_modules/class-validator/types/decorator/number/Min.d.ts","../node_modules/class-validator/types/decorator/date/MinDate.d.ts","../node_modules/class-validator/types/decorator/date/MaxDate.d.ts","../node_modules/class-validator/types/decorator/string/Contains.d.ts","../node_modules/class-validator/types/decorator/string/NotContains.d.ts","../node_modules/@types/validator/lib/isBoolean.d.ts","../node_modules/@types/validator/lib/isEmail.d.ts","../node_modules/@types/validator/lib/isFQDN.d.ts","../node_modules/@types/validator/lib/isIBAN.d.ts","../node_modules/@types/validator/lib/isISO31661Alpha2.d.ts","../node_modules/@types/validator/lib/isISO4217.d.ts","../node_modules/@types/validator/lib/isURL.d.ts","../node_modules/@types/validator/lib/isTaxID.d.ts","../node_modules/@types/validator/index.d.ts","../node_modules/class-validator/types/decorator/string/IsAlpha.d.ts","../node_modules/class-validator/types/decorator/string/IsAlphanumeric.d.ts","../node_modules/class-validator/types/decorator/string/IsDecimal.d.ts","../node_modules/class-validator/types/decorator/string/IsAscii.d.ts","../node_modules/class-validator/types/decorator/string/IsBase64.d.ts","../node_modules/class-validator/types/decorator/string/IsByteLength.d.ts","../node_modules/class-validator/types/decorator/string/IsCreditCard.d.ts","../node_modules/class-validator/types/decorator/string/IsCurrency.d.ts","../node_modules/class-validator/types/decorator/string/IsEmail.d.ts","../node_modules/class-validator/types/decorator/string/IsFQDN.d.ts","../node_modules/class-validator/types/decorator/string/IsFullWidth.d.ts","../node_modules/class-validator/types/decorator/string/IsHalfWidth.d.ts","../node_modules/class-validator/types/decorator/string/IsVariableWidth.d.ts","../node_modules/class-validator/types/decorator/string/IsHexColor.d.ts","../node_modules/class-validator/types/decorator/string/IsHexadecimal.d.ts","../node_modules/class-validator/types/decorator/string/IsMacAddress.d.ts","../node_modules/class-validator/types/decorator/string/IsIP.d.ts","../node_modules/class-validator/types/decorator/string/IsPort.d.ts","../node_modules/class-validator/types/decorator/string/IsISBN.d.ts","../node_modules/class-validator/types/decorator/string/IsISIN.d.ts","../node_modules/class-validator/types/decorator/string/IsISO8601.d.ts","../node_modules/class-validator/types/decorator/string/IsJSON.d.ts","../node_modules/class-validator/types/decorator/string/IsJWT.d.ts","../node_modules/class-validator/types/decorator/string/IsLowercase.d.ts","../node_modules/class-validator/types/decorator/string/IsMobilePhone.d.ts","../node_modules/class-validator/types/decorator/string/IsISO31661Alpha2.d.ts","../node_modules/class-validator/types/decorator/string/IsISO31661Alpha3.d.ts","../node_modules/class-validator/types/decorator/string/IsMongoId.d.ts","../node_modules/class-validator/types/decorator/string/IsMultibyte.d.ts","../node_modules/class-validator/types/decorator/string/IsSurrogatePair.d.ts","../node_modules/class-validator/types/decorator/string/IsUrl.d.ts","../node_modules/class-validator/types/decorator/string/IsUUID.d.ts","../node_modules/class-validator/types/decorator/string/IsFirebasePushId.d.ts","../node_modules/class-validator/types/decorator/string/IsUppercase.d.ts","../node_modules/class-validator/types/decorator/string/Length.d.ts","../node_modules/class-validator/types/decorator/string/MaxLength.d.ts","../node_modules/class-validator/types/decorator/string/MinLength.d.ts","../node_modules/class-validator/types/decorator/string/Matches.d.ts","../node_modules/libphonenumber-js/types.d.ts","../node_modules/libphonenumber-js/index.d.ts","../node_modules/class-validator/types/decorator/string/IsPhoneNumber.d.ts","../node_modules/class-validator/types/decorator/string/IsMilitaryTime.d.ts","../node_modules/class-validator/types/decorator/string/IsHash.d.ts","../node_modules/class-validator/types/decorator/string/IsISSN.d.ts","../node_modules/class-validator/types/decorator/string/IsDateString.d.ts","../node_modules/class-validator/types/decorator/string/IsBooleanString.d.ts","../node_modules/class-validator/types/decorator/string/IsNumberString.d.ts","../node_modules/class-validator/types/decorator/string/IsBase32.d.ts","../node_modules/class-validator/types/decorator/string/IsBIC.d.ts","../node_modules/class-validator/types/decorator/string/IsBtcAddress.d.ts","../node_modules/class-validator/types/decorator/string/IsDataURI.d.ts","../node_modules/class-validator/types/decorator/string/IsEAN.d.ts","../node_modules/class-validator/types/decorator/string/IsEthereumAddress.d.ts","../node_modules/class-validator/types/decorator/string/IsHSL.d.ts","../node_modules/class-validator/types/decorator/string/IsIBAN.d.ts","../node_modules/class-validator/types/decorator/string/IsIdentityCard.d.ts","../node_modules/class-validator/types/decorator/string/IsISRC.d.ts","../node_modules/class-validator/types/decorator/string/IsLocale.d.ts","../node_modules/class-validator/types/decorator/string/IsMagnetURI.d.ts","../node_modules/class-validator/types/decorator/string/IsMimeType.d.ts","../node_modules/class-validator/types/decorator/string/IsOctal.d.ts","../node_modules/class-validator/types/decorator/string/IsPassportNumber.d.ts","../node_modules/class-validator/types/decorator/string/IsPostalCode.d.ts","../node_modules/class-validator/types/decorator/string/IsRFC3339.d.ts","../node_modules/class-validator/types/decorator/string/IsRgbColor.d.ts","../node_modules/class-validator/types/decorator/string/IsSemVer.d.ts","../node_modules/class-validator/types/decorator/typechecker/IsBoolean.d.ts","../node_modules/class-validator/types/decorator/typechecker/IsDate.d.ts","../node_modules/class-validator/types/decorator/typechecker/IsNumber.d.ts","../node_modules/class-validator/types/decorator/typechecker/IsEnum.d.ts","../node_modules/class-validator/types/decorator/typechecker/IsInt.d.ts","../node_modules/class-validator/types/decorator/typechecker/IsString.d.ts","../node_modules/class-validator/types/decorator/typechecker/IsArray.d.ts","../node_modules/class-validator/types/decorator/typechecker/IsObject.d.ts","../node_modules/class-validator/types/decorator/array/ArrayContains.d.ts","../node_modules/class-validator/types/decorator/array/ArrayNotContains.d.ts","../node_modules/class-validator/types/decorator/array/ArrayNotEmpty.d.ts","../node_modules/class-validator/types/decorator/array/ArrayMinSize.d.ts","../node_modules/class-validator/types/decorator/array/ArrayMaxSize.d.ts","../node_modules/class-validator/types/decorator/array/ArrayUnique.d.ts","../node_modules/class-validator/types/decorator/object/IsNotEmptyObject.d.ts","../node_modules/class-validator/types/decorator/object/IsInstance.d.ts","../node_modules/class-validator/types/decorator/decorators.d.ts","../node_modules/class-validator/types/validation/ValidationTypes.d.ts","../node_modules/class-validator/types/validation/Validator.d.ts","../node_modules/class-validator/types/register-decorator.d.ts","../node_modules/class-validator/types/metadata/ValidationMetadataArgs.d.ts","../node_modules/class-validator/types/metadata/ValidationMetadata.d.ts","../node_modules/class-validator/types/metadata/ConstraintMetadata.d.ts","../node_modules/class-validator/types/metadata/MetadataStorage.d.ts","../node_modules/class-validator/types/index.d.ts","../src/users/dto/create-users.dto.ts","../node_modules/@nestjs/mapped-types/dist/mapped-type.interface.d.ts","../node_modules/@nestjs/mapped-types/dist/intersection-type.helper.d.ts","../node_modules/@nestjs/mapped-types/dist/omit-type.helper.d.ts","../node_modules/@nestjs/mapped-types/dist/partial-type.helper.d.ts","../node_modules/@nestjs/mapped-types/dist/pick-type.helper.d.ts","../node_modules/@nestjs/mapped-types/dist/type-helpers.utils.d.ts","../node_modules/@nestjs/mapped-types/dist/index.d.ts","../node_modules/@nestjs/mapped-types/index.d.ts","../src/users/dto/update-users.dto.ts","../src/users/users.controller.ts","../src/users/users.module.ts","../src/auth/auth.module.ts","../src/app.module.ts","../node_modules/@nestjs/core/adapters/http-adapter.d.ts","../node_modules/@nestjs/core/adapters/index.d.ts","../node_modules/@nestjs/core/injector/module-token-factory.d.ts","../node_modules/@nestjs/core/injector/compiler.d.ts","../node_modules/@nestjs/core/injector/modules-container.d.ts","../node_modules/@nestjs/core/injector/container.d.ts","../node_modules/@nestjs/core/injector/module-ref.d.ts","../node_modules/@nestjs/core/injector/module.d.ts","../node_modules/@nestjs/core/injector/instance-wrapper.d.ts","../node_modules/@nestjs/core/router/interfaces/exclude-route-metadata.interface.d.ts","../node_modules/@nestjs/core/application-config.d.ts","../node_modules/@nestjs/core/constants.d.ts","../node_modules/@nestjs/core/discovery/discovery-module.d.ts","../node_modules/@nestjs/core/discovery/discovery-service.d.ts","../node_modules/@nestjs/core/discovery/index.d.ts","../node_modules/@nestjs/core/helpers/http-adapter-host.d.ts","../node_modules/@nestjs/core/exceptions/base-exception-filter.d.ts","../node_modules/@nestjs/core/exceptions/index.d.ts","../node_modules/@nestjs/core/helpers/context-id-factory.d.ts","../node_modules/@nestjs/core/helpers/index.d.ts","../node_modules/@nestjs/core/injector/inquirer/inquirer-constants.d.ts","../node_modules/@nestjs/core/injector/inquirer/index.d.ts","../node_modules/@nestjs/core/metadata-scanner.d.ts","../node_modules/@nestjs/core/scanner.d.ts","../node_modules/@nestjs/core/injector/injector.d.ts","../node_modules/@nestjs/core/injector/instance-loader.d.ts","../node_modules/@nestjs/core/injector/lazy-module-loader-options.interface.d.ts","../node_modules/@nestjs/core/injector/lazy-module-loader.d.ts","../node_modules/@nestjs/core/injector/index.d.ts","../node_modules/@nestjs/core/middleware/routes-mapper.d.ts","../node_modules/@nestjs/core/middleware/builder.d.ts","../node_modules/@nestjs/core/middleware/index.d.ts","../node_modules/@nestjs/core/nest-application-context.d.ts","../node_modules/@nestjs/core/nest-application.d.ts","../node_modules/@nestjs/common/interfaces/microservices/nest-microservice-options.interface.d.ts","../node_modules/@nestjs/core/nest-factory.d.ts","../node_modules/@nestjs/core/repl/repl.d.ts","../node_modules/@nestjs/core/repl/index.d.ts","../node_modules/@nestjs/core/router/interfaces/routes.interface.d.ts","../node_modules/@nestjs/core/router/interfaces/index.d.ts","../node_modules/@nestjs/core/router/request/request-constants.d.ts","../node_modules/@nestjs/core/router/request/index.d.ts","../node_modules/@nestjs/core/router/router-module.d.ts","../node_modules/@nestjs/core/router/index.d.ts","../node_modules/@nestjs/core/services/reflector.service.d.ts","../node_modules/@nestjs/core/services/index.d.ts","../node_modules/@nestjs/core/index.d.ts","../src/main.ts","../node_modules/@babel/types/lib/index.d.ts","../node_modules/@types/babel__generator/index.d.ts","../node_modules/@babel/parser/typings/babel-parser.d.ts","../node_modules/@types/babel__template/index.d.ts","../node_modules/@types/babel__traverse/index.d.ts","../node_modules/@types/babel__core/index.d.ts","../node_modules/@types/connect/index.d.ts","../node_modules/@types/body-parser/index.d.ts","../node_modules/@types/cookiejar/index.d.ts","../node_modules/@types/eslint/helpers.d.ts","../node_modules/@types/estree/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/eslint/index.d.ts","../node_modules/@types/eslint-scope/index.d.ts","../node_modules/@types/range-parser/index.d.ts","../node_modules/@types/qs/index.d.ts","../node_modules/@types/express-serve-static-core/index.d.ts","../node_modules/@types/mime/Mime.d.ts","../node_modules/@types/mime/index.d.ts","../node_modules/@types/serve-static/index.d.ts","../node_modules/@types/express/index.d.ts","../node_modules/@types/graceful-fs/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/istanbul-lib-report/index.d.ts","../node_modules/@types/istanbul-reports/index.d.ts","../node_modules/@jest/expect-utils/build/index.d.ts","../node_modules/jest-matcher-utils/node_modules/chalk/index.d.ts","../node_modules/@sinclair/typebox/typebox.d.ts","../node_modules/@jest/schemas/build/index.d.ts","../node_modules/pretty-format/build/index.d.ts","../node_modules/jest-diff/build/index.d.ts","../node_modules/jest-matcher-utils/build/index.d.ts","../node_modules/expect/build/index.d.ts","../node_modules/@types/jest/index.d.ts","../node_modules/@types/parse-json/index.d.ts","../node_modules/@types/passport/index.d.ts","../node_modules/@types/passport-strategy/index.d.ts","../node_modules/@types/passport-local/index.d.ts","../node_modules/@types/prettier/index.d.ts","../node_modules/@types/semver/classes/semver.d.ts","../node_modules/@types/semver/functions/parse.d.ts","../node_modules/@types/semver/functions/valid.d.ts","../node_modules/@types/semver/functions/clean.d.ts","../node_modules/@types/semver/functions/inc.d.ts","../node_modules/@types/semver/functions/diff.d.ts","../node_modules/@types/semver/functions/major.d.ts","../node_modules/@types/semver/functions/minor.d.ts","../node_modules/@types/semver/functions/patch.d.ts","../node_modules/@types/semver/functions/prerelease.d.ts","../node_modules/@types/semver/functions/compare.d.ts","../node_modules/@types/semver/functions/rcompare.d.ts","../node_modules/@types/semver/functions/compare-loose.d.ts","../node_modules/@types/semver/functions/compare-build.d.ts","../node_modules/@types/semver/functions/sort.d.ts","../node_modules/@types/semver/functions/rsort.d.ts","../node_modules/@types/semver/functions/gt.d.ts","../node_modules/@types/semver/functions/lt.d.ts","../node_modules/@types/semver/functions/eq.d.ts","../node_modules/@types/semver/functions/neq.d.ts","../node_modules/@types/semver/functions/gte.d.ts","../node_modules/@types/semver/functions/lte.d.ts","../node_modules/@types/semver/functions/cmp.d.ts","../node_modules/@types/semver/functions/coerce.d.ts","../node_modules/@types/semver/classes/comparator.d.ts","../node_modules/@types/semver/classes/range.d.ts","../node_modules/@types/semver/functions/satisfies.d.ts","../node_modules/@types/semver/ranges/max-satisfying.d.ts","../node_modules/@types/semver/ranges/min-satisfying.d.ts","../node_modules/@types/semver/ranges/to-comparators.d.ts","../node_modules/@types/semver/ranges/min-version.d.ts","../node_modules/@types/semver/ranges/valid.d.ts","../node_modules/@types/semver/ranges/outside.d.ts","../node_modules/@types/semver/ranges/gtr.d.ts","../node_modules/@types/semver/ranges/ltr.d.ts","../node_modules/@types/semver/ranges/intersects.d.ts","../node_modules/@types/semver/ranges/simplify.d.ts","../node_modules/@types/semver/ranges/subset.d.ts","../node_modules/@types/semver/internals/identifiers.d.ts","../node_modules/@types/semver/index.d.ts","../node_modules/@types/stack-utils/index.d.ts","../node_modules/buffer/index.d.ts","../node_modules/@types/superagent/index.d.ts","../node_modules/@types/supertest/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"f20c05dbfe50a208301d2a1da37b9931bce0466eb5a1f4fe240971b4ecc82b67","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"9b087de7268e4efc5f215347a62656663933d63c0b1d7b624913240367b999ea","affectsGlobalScope":true},{"version":"3260e3386d9535b804205bdddb5618a9a27735bd22927f48ad54363abcd23d45","affectsGlobalScope":true},{"version":"7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481","affectsGlobalScope":true},{"version":"097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"55f400eec64d17e888e278f4def2f254b41b89515d3b88ad75d5e05f019daddd","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"775d9c9fd150d5de79e0450f35bc8b8f94ae64e3eb5da12725ff2a649dccc777","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},"d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",{"version":"8d6d51a5118d000ed3bfe6e1dd1335bebfff3fef23cd2af2f84a24d30f90cc90","affectsGlobalScope":true},"3284e33a45d6aa8324691ac5737d08695e35e99b5f69fdc9ef21b3c7e7fd8449","e89535c3ec439608bcd0f68af555d0e5ddf121c54abe69343549718bd7506b9c","622a984b60c294ffb2f9152cf1d4d12e91d2b733d820eec949cf54d63a3c1025","1a25c4d02a013b4690efa24ab48184a2c10b1906a379565ba558b2c3ba679a6d","ba6f9c5491bcf018dbbc813e1dd488beb26f876b825007ba76db485df341a8ee","75b57b109d774acca1e151df21cf5cb54c7a1df33a273f0457b9aee4ebd36fb9","fa3d0cd03fa17459d9ddd98b120b4bb084da39f0391cbdce480a6ef74be0cc7a","e3fd84e6470b7e0679c4073ee5ce971d324182486dde5a49b67cae29168b51d2","dd8331d0a5190a4735ce6c152e420230188c4966067a756673c36dd7ba72b10e","cfdf36cfc0721c29f58651fc12f0f5a349d29da3a63180afc5b3d77b95653f82",{"version":"d57e7ff5243e0dcd04cf2edf9ad9520af40edd6eba31c14c3f405f0c437fa379","affectsGlobalScope":true},"0f882d4ae58f431454030289154feb0132e1b00ca5c3197c6b749bd098aed73a","7ff7f4632a6e7b6872fb1843f3c0df495b49840eae2a23c6fbc943f863da8c29","d267771149e172ade39e3ef96b4063209d5a7e8291702fe03983aa52f2b3d5f6","a78590b0efcef281236e3234520c348d63be1d4561b63b20e6c3b6fc18b37dfb","4d59c6a10b6c79a0927c79efa89b3c9f71d174ec14ec2792076cfd2330d0cf8e","a496f51933422872de22729b7a0233589325a1a1707cccd05cd914098944a202","75b6663bc569724017997481b6b3774065c204b316cb4f5ad7df3b5162d2dce1","06a38095ad4368314366bc08f7cbc0fe274ef7321ec611005d0bdd9c6565e4d5","4599793db9aed9b84677f0ca1cf7ef3c69bb91cda4fe4329cbab778ca4d80a58","ad0028f96921778931fb8419d8de33b10908314fa99699de1702020f69235da1","ccd2a35321c0786bd3808042dc43b960cac13f2cc660ac37a0087e12bc97d2fc","df524ed01de4f19efb44bded628dbba9f840148be4b6cfe096e29d4b01589de3","2e3981b9cee48174ff85ae15019fd72933f7023a4ed05094740f7e6f7775623c","836ebdc3b9e4c006acc4f405b7e558e56d47830e05c40d991b1e27fe8bc91157","2cc6b617c6120ba64b5778ccd4b74c951adc3a3941bb6b39f47d48701c44af39","eca02b99615a8f1652e21399d832618e38bf166c0747c9247349bc901a2f7741","7f7d6d42e5780e86f5b860a6f95179fae06a368b3af28c1c4230397c47021a59","4740a7d11ab3b381be0f269f1903fb3ff226a2fba55a01756b2997e67cd853f2","863dbc4e77f0353e6f9d6bc0e2b4622d5c07ff6f099ff66cafd7924b2ff4dd3f","bf034a18ed7e2a058f9e48c4c2480a124138fbd3586a80c77736a9ec079d12a8","f88758992a0bf13d095520aacd4381fb456ff121fb9aa184e6eb0eecb26cfadc","c249e9ae33bfcad97deec3c73c9ed2656e112fbdf22deace0b39724be6a5dcf0","d8b45924965c0c4fc0b946c0b6d597aa8d5de9cdf5c727e3d39422d17efec438","d07ea953cfea0c4bd11641912846bd955f4fd26ad2b7b8a279d69c7ab9cb3add","feddabf6ab0eb191e721f0126f3db8688db97c77a1234968bde7a2d70c4ae513","dbbda62ea5f4d1f8b40cc2b7e2e2fae424abbb4715a04a3659cb8b317f7b228b","cde0568b836865a24f4ee5859462004a326dfb76d514e6f56c8e78feedebed58","7f5cb3a03588ed46d52a6c2138315d930cd6ffb5c2134247cd07bc23cbea0b5a","7797f4c91491dcb0f21fa318fd8a1014990d5a72f8a32de2af06eb4d4476a3b5","f39fb20b83c3f9853c13d4ac95533760979d3023c0a5affe2c0a62d91ab3afd8","e4fca08aed8afb32bb8643d7469810bc8681115fe398e56a028df9e73b2d867f","2622639d24718ddfccc33a9a6daf5a2dd94d540ca41e3da00fe365d2c3f25db3","078966067552650f44ca96c68eddbb8539f30ee48a9ab3f24abdcf0a4037b535","2cd6250c43dba360377481c98d48db6ab1532a7527339edb0deffddc28ba66b1","7a9d600990fbe263a23daebed9ba1bbc5761e45679a7e2b2774a42756ef077a2","66bc155515fbea8c31a4efccbbac44de7c037b01f3aa00b76312cf7252725d30","5703288ddbfc4f7845cdbf80c6af17c8cde2a228757479796c2378b1662fcd48","0dfd353f0c16dd5107a7e0713dc52d0a2538293b0a0eac6000a017f9c0a60b56","9cd683a4663ef4d9c6486f1b8a34c73bdbc344d69490931bfe2fbcada12ab35b","42f6a409bad5259ece69df25d2b8ace2ff2ade45fe6386ee45203bdd9329f971","d3b1a8b87a5e77d70056325e137a0e04d984b991546fdd3c1034ff4102d603c4","2eb162efd6dba5972b9f8f85141d900d09da4fba23864f287f98f9890a05e95f","3f878fb5be9ebe8bd0ac5c22515d42b8b72d3745ef7617e73e9b2548ccbdf54b","e9ed562b7599c8c8c01595891480a30f9945a93a46456d22ee67ebf346b7538a","e7bf975a98cecefe2e8902fb7da9314675ecdce553aea722aaec97327668e18b","3d36f93648518338c875d9f77a8eab52905365483dbb3afe43ed68f1b712b67c","4fa54df9184d291bd78b36f5063372042cd995460e906cb14014e40d1442a326","b4e32bd5e3b493e4ea6b5ec69a4c02aa1fdaa78e1df9a863bb07604de8f9d123","f6bd1aa152ca2b5064e06282ee3137842ae6825b6b09aa89a2ff063b976a56f3","bce2390bb3a76f8bf2ba4397c66db5277bf3e698ee614347e5eb79d7fc0942c6","fbdc8d7cc7daf4101bf567512c67fb990d8fe300e0ba7f213171192177f44aa0","298e0da6d858e39fc0c1eebfa4f5c8af487868c6f2e98c3ef800537d402fb5c3","3b6457fb3866562d279377f923cf3758c80ed7bfcc19414b72a24d0a98188e0c","4fb5d7efb3520b92c1b767ce18968057c5e70886d7fb3416c487231df9275af9","df2303a61eb57b2717d17123e82bc0f3fd60f6e4673cb5506192dfe23c9480bf","b104960f4c5f807535ab43282356b2fe29c5d14a02035c623ac2012be3d5f76c","a35ca245eb852b70b20300546443abb1fcbac6e5066e4baaa092af4ea614d9b5","55da140feab55f10a538a9879a97c4be3df4934cbd679665c91a7263a86095e1","1a39e51e3362aec7d4edec9b317ff83916fe0471f86ddf2d3ef3af5952e87d9e","4b3f36b96f129a8e125c91d41a05f711e73b3285f80bceb3a1aecb13c97c4502","852779920fc4220bc42ec6d3c9b6164e23ea9371a788531b48b4005fe0cb4392","9a82e1b959524c1abfeeb024ee1a400234130a341f2b90a313ce4e37833b7dd2","515b97cede17d91c9669cc1c7fb7a8a5f0a5f2d8999f925a5f70b4ebea93723e","08e8e57241f874bdbf69ab2b65cb0ee18b4183d5c9452937da49b934fc679c4b","944af466f063d4bd090ab9d988c620b90a014e919d5f78963f6074a136ea225e","644addd4811636da491c9546654bc005ba8599f23df6d731d91eba86f3137fc2","a9249493114b181814728cbfeb7234738193a4169b654ec4705d48d7a4d25222","aad6f20d6eb01192ae02294361faa6e1f320d72447b56f433db853bbe80b15ca","876fbedec2f494eb6f834ce8636b07d581c657d205d81a3ba894eff0facc6b84","58527aa45f11c9b259a6a9d78b397f35020bfbb104f4d3bb177039b5c18146bd","91b8b61d45b5d22f3458a4ac82e03b464a0926bab795a920fe0eca805ec476eb","2744532f8fb960eb78497ac660db719f503a10c801f87131d26fd9cbef75dcef","6884287c54891ac19cfbe056f3ed29cab1732a00dec69bd3b140ce62c11783c6","abc3487041159734b8611d9d6fd85de6892f11ebe8c2583baedfc1f87c53757c","cb46657d3237f80742d5701ebcced8f6e5cf8938442354387d6c77d7048dfae6","76281a3b799bbd17ec8e6de7d2fa45ccf749049fd53f00857daf0dbc449616b8","661f322e45545a554e4ffc38db6c4068a66e1323baf66acb0d8a9fa28195a669","91d70dce48c2a2bb55f0b851cf1bdba4202f107f1e8fdf45f94ff6be4b8e8f99","ce978e20a6f26f606b535f0d6deb384ae6a73f8d0bd0dfca0925f5317cad1f25","f2d3567210ca4d559d8297d6c4402599c93e3bc7485054192d38db5e132fbc0a","887d8058aeeade45984fdb8696147078bc630d3fea15ab2b7baacde0fe281fb7","ad27aa59d346179ac449bd3077d245f213152879e4027356306ccf1722d61d51","ea546a7ed9eaa71ba78d4d392509dadea4bafed283269dd6c4b09e7d8824e986","4ec0f2a141a9ae7d3557b8efe630ac2021bc3a9ac61238b59293f4cf2f196e82","b2db743c71652e03c52d51445af58d0af3316231faa92b66018b29c7ba975f6c","0863a5876c85fbaffbb8ec8aeda8b5042deb6932616139706d2b82cde9d3f7c7","1294b8ecdd212362323f349dd83b5c94ea77bfee4dad24fc290980a3c8af6ce3","ba9c46725e2a0bd9df59d3a1e801cc60f90db3ef7817131c53945dce2b8c0c56","281d373eeabf80c4851f8de991e6abe4d385c30379d80897bbc3df3dcac99cee","624c5dce95672d9dcca40d9d9d82ef855f5f902292f43aa265cc8fd963c6ce84","8a48d9c6184992d1c3ed5daa55f83d708c37582916926a5555a900608f804b60","605dd288c636cf9b5317fe76dec75d3c7fb855fdcd3ee8cb4fea7d7091ca6fb4","95addea67857d4e568a02e429b15458cec203876b2ea5f5ea18ccfeeb91b8ce0","b5a615b0ad865ffa562980a10bda162ac1744fd363b4edc2cfc664222071cbcf","bbccd721363897950a55ce09529503f25a69522e5c91a22679b66e941e5f8654","d3a1e70795c38d7851b6e4f3b441c5ffdae171d6e2576a2204b7d79059aeea66","d7b8d41887c5fccfe19802c4336d34348b752abf0d98839575699d71deff60be","063fe3004728b8516a4d799ee16f9a71801ba24e0443dd98638cef1bd4353a7c","b8a0236f47d9037efdaf93da602415ae425dababe097fc92f83fd47ce9aaa69f","fab7912fc3ff45fce2f5d5febc9494c4d0a85d6c63fff68f21e4669c32eaacb9","f6c3fcb9d75d8aea778236fd9327ceb935b41865dbf3beac698be77e0ae9018d","b20bc124abd8ee572d0d756713ff987b116cdae908a6fcbc40e80d4b999f56b4","a599f3f450ad62c3fdc0c3fd25cddcc9332ffb44327087947d48914a8da81364","645dff895168aa82350c9aa60aa0b3621b84289fef043be842f45a9c6c0ac6e2","f068ff5b7fb3bdc5380e0c677e21de829bd25cdac63a9b083fdc220fcb225280","09d2fdca6ea6c135897a26976ad3c0db724adaf23ef4e38ad852b1d8efef1ae6","15de5b7739bf7e40213a200853bf78455ee5958af08eda786605a54a7f25ade6","f3acb439e08f0c2c78c712a876dc6c2080302c46916f1d63b7dbe509616ce9ae","37862e711637ebd927907a82cbf0143ea30e95eb165df554926c43936b1d77a9","89e253db2c2cc9a510c521f14dd2b1aae4de2556ee5159ad8d118d3587e3a880","3d0a172cee184a0f4111a7bd7fbb8729af3f54b30c06a2677d85c20ea9c811ab","d6a07e5e8dee6dc63c7ecd9c21756babf097e1537fbc91ddfec17328a063f65d","6fdc88b1287c276b55b7f7c4c7b49587813c763eea9751ce0baf0a7e61cd5d89","6a02443704052768bd021f24783aa104b02ae4444e9b735317bf13c6b857a11e","37987b0fe9800cf25473c882ce07bccdab2763c5681c1a2d16816aead46aa8d1","c84c03c721154068e1a60d83e9e85819bd3ef70b824ac2edc498aa31c06e5781","c23a403716784b53cf6ce9ffff9dcdb959b7cacdf115294a3377d96b6df1e161","c96fb6a0c1e879f95634ab0ff439cbb6fff6227b26bbf0153bef9ed0aabba60d","db936079fe6396aad9bf7ad0479ffc9220cec808a26a745baebb5f9e2ef9dbc7","06bc0b9cc7bf0b92534f1517fe5adde1f23f60cc6cc5c59f8e1c65db48a40067","919a753b0cbb12ccc606c62e2d34884d75a48ba19b1dda497c72621b11dac088","2c27e33ee0bf722988da00abd582cc9b806ce3fd9153a864800a339ad13f3fcf","92d7b3a5aa5dc872e54cbad2a7094b3ea4f72c7901de1d07b4c334ff658297f0","7a52922b38e9686d5bdc6e75774929eec6688d26c1dfe4a03ddec77ede468e87","aa5efca2833d89b55248f1889a6433dab1b1f41768e9a75f8ce35f9bf56c5ec4","0d5a2ee1fdfa82740e0103389b9efd6bfe145a20018a2da3c02b89666181f4d9","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"2f6c9750131d5d2fdaba85c164a930dc07d2d7e7e8970b89d32864aa6c72620c","affectsGlobalScope":true},"56d13f223ab40f71840795f5bef2552a397a70666ee60878222407f3893fb8d0",{"version":"4ffef5c4698e94e49dcf150e3270bad2b24a2aeab48b24acbe7c1366edff377d","affectsGlobalScope":true},"95843d5cfafced8f3f8a5ce57d2335f0bcd361b9483587d12a25e4bd403b8216","afc6e96061af46bcff47246158caee7e056f5288783f2d83d6858cd25be1c565",{"version":"34f5bcac12b36d70304b73de5f5aab3bb91bd9919f984be80579ebcad03a624e","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","3a0c45fe95e8f0e2c5247d48acf3a522d2ef29f1ab0effb3c59a9c4fdd5edbcd","f50c975ab7b50e25a69e3d8a3773894125b44e9698924105f23b812bf7488baf","c993aac3b6d4a4620ef9651497069eb84806a131420e4f158ea9396fb8eb9b8c","76650408392bf49a8fbf3e2b6b302712a92d76af77b06e2da1cc8077359c4409","0af3121e68297b2247dd331c0d24dba599e50736a7517a5622d5591aae4a3122","06ccebc2c2db57d6bdbca63b71c4ae5e6ddc42d972fd8f122d4c1a28aa111b25",{"version":"81e8508d1e82278f5d3fee936f267e00c308af36219bfcee2631f9513c9c4017","affectsGlobalScope":true},"413a4be7f94f631235bbc83dad36c4d15e5a2ff02bca1efdbd03636d6454631b","20c468256fd68d3ef1fa53526e76d51d6aa91711e84d72c0343589b99238287e","81290114466b1a05503a1142be27f5b85b033c95eb4291359aaeeb0b8b9bdbfb","8d4c16a26d59e3ce49741a7d4a6e8206b884e226cf308667c7778a0b2c0fee7f","ee3bad055a79f188626b1a7046f04ab151fdd3581e55c51d32face175bd9d06f","d61c7c41eb1960b1285e242fd102c162b65c0522985b839fadda59874308a170",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"1dbccafbca82a60fdfb0fb3c28e2493ff76d06647a512dcf72a086022e8b6f91","d10f4929cd610c26926d6784fc3f9f4120b789c03081b5d65fb2d2670a00fa04","fb0989383c6109f20281b3d31265293daefdd76d0d30551782c1654e93704f48","a4210a84a82b3e7a8cec5b2f3616e46d523f4f10cc1576d8f2fb89d0987b341e",{"version":"8207e7e6db9aa5fc7e61c8f17ba74cf9c115d26f51f91ee93f790815a7ea9dfb","affectsGlobalScope":true},"9f1069b9e2c051737b1f9b4f1baf50e4a63385a6a89c32235549ae87fc3d5492","22d48bfb37261136423ac687f1fa7bd4dda3083f767416d409a8260cf92bc8fc","29c2706fa0cc49a2bd90c83234da33d08bb9554ecec675e91c1f85087f5a5324","0acbf26bf958f9e80c1ffa587b74749d2697b75b484062d36e103c137c562bc3","f142151303f0792b81eff90b554081d2b78b146a83a4bc573228338e70afa420","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","698ab660b477b9c2cd5ccbd99e7e7df8b4a6134c1f5711fa615ed7aab51cb7f7","33eee034727baf564056b4ea719075c23d3b4767d0b5f9c6933b81f3d77774d2","c33a6ea7147af60d8e98f1ac127047f4b0d4e2ce28b8f08ff3de07ca7cc00637","a4471d2bdba495b2a6a30b8765d5e0282fa7009d88345a9528f73c37869d3b93",{"version":"aee7013623e7632fba449d4df1da92925b27d9b816cb05546044dbfe54c88ef4","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","c9d70d3d7191a66a81cb554557f8ed1cf736ea8397c44a864fe52689de18865a","998a3de5237518c0b3ac00a11b3b4417affb008aa20aedee52f3fdae3cb86151","ad41008ffe077206e1811fc873f4d9005b5fd7f6ab52bb6118fef600815a5cb4",{"version":"1aad825534c73852a1f3275e527d729a2c0640f539198fdfdfeb83b839851910","affectsGlobalScope":true},"badae0df9a8016ac36994b0a0e7b82ba6aaa3528e175a8c3cb161e4683eec03e","c3db860bcaaaeb3bbc23f353bbda1f8ab82756c8d5e973bebb3953cb09ea68f2","235a53595bd20b0b0eeb1a29cb2887c67c48375e92f03749b2488fbd46d0b1a0","bc09393cd4cd13f69cf1366d4236fbae5359bb550f0de4e15767e9a91d63dfb1","9c266243b01545e11d2733a55ad02b4c00ecdbda99c561cd1674f96e89cdc958","c71155c05fc76ff948a4759abc1cb9feec036509f500174bc18dad4c7827a60c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"e3685a8957b4e2af64c3f04a58289ee0858a649dbcd963a2b897fe85858ae18a","3da085d344bf625767c5b1fcada31a5d94ebefc4e36bf18a676ca37460bc4e4e","006855ddea8674d084173a768f88519dc154be94eba5e2120262a33709832b9b","17dd843a266f99ca4b3a1257538bd1cc69dc5c7f2f23c3891f0430615b8c9c1c","5430364886c721a30475253356162b6c27871718094cb3e69e2bcea71a17e533","1218398da7c8dc4add10bdb3aa2856aad54b123d847eaf574d1d694ac269bfb5","189014f3213ee7457dbeea04dca10ca5d9ed2062cd39641aca5f3b4c75de9d99","b637cd92688a6cdf4f8f184ff529dc2bc7f15692828e2c0c66a60e6972f400c7","7061e83d6792897077bcac039fccf7325234004769f591c63a8cf8478bf551bb","7ab905865063322f2bba361d0f2ef93520f64a382bac13b127479860ad99f62e","277a358d61376fce7ac3392402909c96cf6a0a613146549fc0165ccff953e012","50614c808e099a1d4413786f3783d9eeaaa74b267f2c87fcf8a893287e91c301","f4cb6530f248e87cefa74ef623206fec805f6252f885f8e14ef3d1a5872cef2d","38c332caadd8391566552395d592076470a5e7423f70964620eabf05c02907cd","eb17b5bf1fc763a644c21d76572c0e41e351c3f6dfcde649428d5d829f7294d2","cb124162c87b29ff5121e3ee5bb29c782f101e0135d6c2644ab1b31d530a435e","406d6f5d3707c488362fb40d1c1f8a7b0a42b70554b427160185d93e430228f5","2e9776410c5bc290d9432a9215c67398a273e514a79b9e15f32ecddfde8a03be","313ff8df074b81d3e4f088ff3a3a06df3d9b0d0c7f55469ccc2ac887ecb6b867","c718475bca06806cc243e77777641cb67ba68f2c57321a4773ebb47760a3bcf2","96e6bf811343caab5112b68880905c5d20d9257054afac6c18e718a4c549ed27","a2793bc73ba63ca7d259cb0f0b61d0023820170d08a1f9715006c8042d060165","d5011b38165771fdf75a9a06d6d379a1fc7edd7eb695ebdc52319fb6e3c6d81f","88417fb19d339304e9616a38ea513251047c9e300c81f9467fc317df8a582e71","3e8e2d132f726dddbda57819f5391504e585cb3beab6b32203064e7e40618583","6e23627cd3f10418b5b2db102fdcf557b75f2837f266d88afac6b18f333bb1bc","866046dcea88f23d766a65487ee7870c4cf8285a4c75407c80a5c26ed250ef8d","019f4f1cbc781cc15c6173f8be5ef907405722194ab297127b3c3426e5368339","41f4413eac08210dfc1b1cdb5891ad08b05c79f5038bdf8c06e4aedaa85b943d","c79f1c8b51d8475dde8d2973f740f43ca34b1f0a95d93649cd76c1ee20abba19","35f0d2bd2c5c05c0cb19095bf5b7c44365b1c88efe6285370855b90417277a64","8264b129f4c4eb4799703f8e5ee2223a184d1cdbfc782158b1f40a88a4435a1f","527ddda6f8be1279f3294714534c49d6e90f238cea325519882ebf88d7ec5bd2","b23877792e8bd00271d0ec5d401b68e4228540a4316de3d9dfb697b955c161a4","35b2eb1de01633db90d41abe93730b29984856fcc840b4c2801bfd3761a2097b","95f0c9127b879c2fc7e31f8e09ff45bb4aae302e60f4b9ceaf4d9ee6bc51ec66","2a6b4655a6edce9e07c7d826848f72533c9991d40bc36e3f85558ad20e87ce2d","6e3d29fdc96ebbb2ac672d2dae710c689c1ea0d0e9469e0847616f3c38fd085f","d505055b8fadd42da235c85947911d8d198ad70c5f5775991e7821d4f89c90f5","8b5a5852099dca7d7e7a7cef6d681dc1586aafacdb963ca180fe5cabbfa3a24b","0d1aa3341d1ad2064adada71c5d01a2f572e4aac09410e5616d90894105a0eb9","52494ca5a884da3bf11b8165ab31429715f0970d9c6383240c5666f4bd713e01","162fafa2291749df2ab4516854aa781fcee1d9fca2ecd85fb48ae794c0700ce2","b4b9b51ee6f6309cda2e539245235a8caeca2b1d6bf12b5e5c162d17333c450f","d2ffe8356f060b88c1c5cf1fa874a4b779fb87fd1977084876e8be9eab6bf485","c76053984b39150d00ade365b096a8bc21a4a7f2ee9e0a926711b00f8e7bf701","956b510767e3d6f362ea5800510635197723737af5d19ae07ee987ea4a90bfa5","cd1a8ff61f5063d7e6e2094e25d35c90b499961b63911f2f4ae0ff5555c2b4d7","1cf09b5945779e9bc75c4dcd805fb149c28fc90da3335186ef620647a3c540e1","9cdc0b9a313090ec45b34ea1eb02fbace433f509e753634b043e9b83038261e6","c93474cff0088351a65d3cad24037874a26a5371a48528563e56efe31cb3d8bb","b4580df8ea7f62d7b06588001952bf69426e6b03cf3d2569f5f608e45f29ba08","de27f7bb9be9d8a2b4557ec6503b8a315f74d598ce9a0ab81b5ed5610e1a8e81","fe3c378dcefa7ed8b21bd6822f5d7838b1119836da75ae1e1fb485d27b8ffb62","7365bf3333d4277b6fe374ed055624e5ec080dbb919e2d78f1cb75a3f1a4b4f6","a5fbf3bc5c16ab5c84465ba7a043a4bee4c2b20bd3633d50d80118a3844edbaf","0923e4ac8c894ad507bd2daee0df66b699de88467201381ece011ba5a080e1ff","e4f6626f827ea509255647e1b6db82145a2eb1a6b46202655e7d9bb19145c33b","26e23972c40f378f0301d8d7025ea895557c2865a1a31c8ea9c3fff0dbc27075","bfddbff94132b423ad1d71bdbefb1d388c21a74ac1a8742df9324e5bf6109058","795a08ae4e193f345073b49f68826ab6a9b280400b440906e4ec5c237ae777e6","8153df63cf65122809db17128e5918f59d6bb43a371b5218f4430c4585f64085","a8150bc382dd12ce58e00764d2366e1d59a590288ee3123af8a4a2cb4ef7f9df","5adfaf2f9f33957264ad199a186456a4676b2724ed700fc313ff945d03372169","d5c41a741cd408c34cb91f84468f70e9bda3dfeabf33251a61039b3cdb8b22d8","6e87c0c1cf06fe7dd6e545d72edefd61d86b4f13d2f9d34140e8168af94a7b7d","cbaf4a4aa8a8c02aa681c5870d5c69127974de29b7e01df570edec391a417959","b8d9df5c49858df86ffa6c497f1840528963c14ca0dea7684e813b008fe797b3","340a45cd77b41d8a6deda248167fa23d3dc67ec798d411bd282f7b3d555b1695","b1f8c85b27619ccfae9064e433b3b32a11d93d54de5a1afdaeca23c8b30e38a5","0ed6417b905cddb85f98281cb3b5b137d393955521993d9ce069d5e2d6b26ee8","f9ceab53f0d273ccaa68ef125974305dc26fe856af9a5be401ca72d0f78659d4","99d99a765426accf8133737843fb024a154dc6545fc0ffbba968a7c0b848959d","c782c5fd5fa5491c827ecade05c3af3351201dd1c7e77e06711c8029b7a9ee4d","883d2104e448bb351c49dd9689a7e8117b480b614b2622732655cef03021bf6d","8e1453c4f07194ab558fa0648cc30356c7536b134a8d7516edf86fd93706c222","eee530aaa93e9ec362e3941ee8355e2d073c7b21d88c2af4713e3d701dab8fef","ebf6ea6f412af15674333149f7f6561c0de9e36a4d4b350daccf6c5acbbf9fa3","1d6cc6dc76a777be3856c8892addb58d60b8957730951f9ab8b721e4f7fdf7e9","7a0e4cd92545ad03910fd019ae9838718643bd4dde39881c745f236914901dfa","c99ebd20316217e349004ee1a0bc74d32d041fb6864093f10f31984c737b8cad","6f622e7f054f5ab86258362ac0a64a2d6a27f1e88732d6f5f052f422e08a70e7","d62d2ef93ceeb41cf9dfab25989a1e5f9ca5160741aac7f1453c69a6c14c69be","1491e80d72873fc586605283f2d9056ee59b166333a769e64378240df130d1c9","c32c073d389cfaa3b3e562423e16c2e6d26b8edebbb7d73ccffff4aa66f2171d","eca72bf229eecadb63e758613c62fab13815879053539a22477d83a48a21cd73","633db46fd1765736409a4767bfc670861468dde60dbb9a501fba4c1b72f8644d","1f9cc8013b709369d82a9f19813cd09cd478481553a0e8262b3b7f28ab52b0b2","a314a39426700ba2b5a76c01bab321bbe79cfef898dae996e930b017fc2b0af9","7f2c10fc5de794bf7ddad2ff13b46e2b7f89ced296c1c372c5fdb94fc759d20d","6ea6e80bf94a93e4841d57878bba521822ca5e2ec7cbb626196a8efc2766eb79","fc4439e09b1562f72a4dcaa193b1ff070e0217ac94d240282871b0642953f049","8a10bdd9317aa91b37ee4b6dbd40529d0cd16353f04cf7c27b29c5604a28e8c3","fdaf3475e11582e137bd84fa19f6bdbf23623f79cecc48a4037e8fa5756ba340","5c4c5b49bbb01828402bb04af1d71673b18852c11b7e95bfd5cf4c3d80d352c8","6b8861483f8d90261908256836f1b8951d1f4ac9a2a965e920fb18603c8d1d0a","72afd0094250e7f765576466170a299d0959a4799dbf28eb56ba70ca4772a8b4","44ec212fbf43580505de3d6054376ced252c534ced872c53698047387213efb9","4880c2a2caa941aff7f91f51948ebfb10f15283ff0b163f8ea2a74499add61aa","19c3760af3cbc9da99d5b7763b9e33aaf8d018bc2ed843287b7ff4343adf4634","9d1e38aeb76084848d2fcd39b458ec88246de028c0f3f448b304b15d764b23d2","b1048a866abac5d678376310d28fd258fd4d663942ac915a5fa90e585cf598f8","c9c6eed8faed23fc697b79d421ac443594a3458ae2a60150083ee1e860171971","9cc2a5c3e3c4be782a2300d356b94286764166acf2a6eedc83c6f7a53c0397f7","9ddf8e9069327faa75d20135cab675779844f66590249769c3d35dd2a38c2ba9","d7c30f0abfe9e197e376b016086cf66b2ffb84015139963f37301ed0da9d3d0d","ff75bba0148f07775bcb54bf4823421ed4ebdb751b3bf79cc003bd22e49d7d73","69196fa55fab9cd52c4eecba6051902bd5adff63ecf65e0546cb484b5a279fb1","35a9867207c488061fb4f6fe4715802fbc164b4400018d2fa0149ad02db9a61c","2d3e2fc347ca7d1241058a82d68c2dd457c96ff024cdad3c380cde3fd072cc4f","b75aa590b103f8491e1c943f9bc4989df55323d7e68fba393d3de11f4aae6bb8","4894a2c13e65af4fea49a2013e9123fe767a26ae51adb156e1a48dffba1e82f7","fc2a131847515b3dff2f0e835633d9a00a9d03ed59e690e27eec85b7b0522f92","90433c678bc26751eb7a5d54a2bb0a14be6f5717f69abb5f7a04afc75dce15a4","55ae9554811525f24818e19bdc8779fa99df434be7c03e5fc47fa441315f0226","7210df9e28cc71105d8938508a8bf99e7bf7df1f18548d774d7c2accbfb3332e","b842238362d1d1879242576ea63d436daa335613559ef0aff586825638d2d47a","e7bde95a05a0564ee1450bc9a53797b0ac7944bf24d87d6f645baca3aa60df48","62e68ce120914431a7d34232d3eca643a7ddd67584387936a5202ae1c4dd9a1b","e6b74c07c5a4e65b27f5a419467e021f61d45255d625bacffe502bd226ffc41d","e1cb8168c7e0bd4857a66558fe7fe6c66d08432a0a943c51bacdac83773d5745","3ce6884df19ea1f29b33f1aa8529eb2b061ce71ed50828e4fd3b065f1d2e93ec","cd0eeda77ab149135d817ac1e1cd1e88f73bf37fe5a652b5c14e124e676201cf","cbc15ecf15b73c132087c185178ba51b7a786ff4a51b6f52a50b01aeb3d48353","8ca60a0840c741e66d4421defe62d44226167a4750fcfa080f760a8f9487fd1d","6d8dedbec739bc79642c1e96e9bfc0b83b25b104a0486aebf016fc7b85b39f48","cd0565ace87a2d7802bf4c20ea23a997c54e598b9eb89f9c75e69478c1f7a0b4","c18f4f72a68275b7602e5968b862cb9b7b76ea4a1ac1b3e622f99e0b672569e8","0fdb1ed509382bd388896d3770655b0cda8c80c36f8c54b3899992f7a3a8665c","d97b96b6ecd4ee03f9f1170722c825ef778430a6a0d7aab03b8929012bf773cd","f55fc3e536ab193aaabb9b6ded5f93181f81294ee65fe3199c9f4415f0f1e53c","ec8053ec564993a885ba2e2c31408369270a190a332a29fac7a825bb7e60b37c","542ecc66e4fcc33f46695ae22b1d14c075054a78c019915d556636be642465af","476b5c25e85b94e15d761bb9503f55fb11e81167df451f187f5080fca825273b","72636f59b635c378dc9ea5246b9b3517b1214e340e468e54cb80126353053b2e","ebb79f267a3bf2de5f8edc1995c5d31777b539935fab8b7d863e8efb06c8e9ea","ada033e6a4c7f4e147e6d76bb881069dc66750619f8cc2472d65beeec1100145","52ff5e1ea35c54428b46c75fd14f87b7a7158a8f4a1ecfc4a9b996a03185c738","605d29d619180fbec287d1701e8b1f51f2d16747ec308d20aba3e9a0dac43a0f","67c19848b442d77c767414084fc571ce118b08301c4ddff904889d318f3a3363","c704ff0e0cb86d1b791767a88af21dadfee259180720a14c12baee668d0eb8fb","195c50e15d5b3ea034e01fbdca6f8ad4b35ad47463805bb0360bdffd6fce3009","da665f00b6877ae4adb39cd548257f487a76e3d99e006a702a4f38b4b39431cb","0d276d377a0bf0f35e8d7a5b871922ebfa6aff1757d1bbe27a7982b15ce78516","9cbb45413acfdf0cc384d884de88c3f951319004450c88a2bcdad62a11bd21d9","d7a4309673b06223537bc9544b1a5fe9425628e1c8ab5605f3c5ebc27ecb8074","ced87f58b05e2b07e314754f0a7ab17e2df9c37ee2d429948024b2c6418d6c9f","3eadfd083d40777b403f4f4eecfa40f93876f2a01779157cc114b2565a7afb51","3ac0b94ba8f884f63d38450ce9e29ecd59ff00805ffdd609193d7532b8605459","a3684ea9719122f9477902acd08cd363a6f3cff6d493df89d4dc12fa58204e27","2828dabf17a6507d39ebcc58fef847e111dcf2d51b8e4ff0d32732c72be032b3","c0c46113b4cd5ec9e7cf56e6dbfb3930ef6cbba914c0883eeced396988ae8320","118ea3f4e7b9c12e92551be0766706f57a411b4f18a1b4762cfde3cd6d4f0a96","473bf3574a48185f71b70fe839fb1a340a176d80ea7f50dee489c2dc8e81613f","2b14b50de7e32a9882511d1b06be4eb036303bc72ce4a10f93a224382731500d","eeb24fa259f000f6b51a1fe89123f55de081eb2a0ef8d8f847afd67af49cfb68","91d8f3c1c3ae5efb8564ec7cb1f8ac8bf5714eb94078fb50a761ab811963e324","e21bb2cfbcdd8ce7eebb72422f3660806724f2b16cd6ce126d527511abb3a379","c04146836a55ea071b435298335e47f569db0e4d3ae420e35c83e448f944192f","31f71fe23daabea143fc8bd21dae0d5908227180fcda38ad3674df70351f9761","68b39aecfe15b3b5b08c7de7c531e1d4c0d06095019ecd9357e67d27e4f681c0","4e1579c45e1a102078b0d24d7d05301657cf7cb2e77e2ade0c05d74e7922188b","0cb819e67e1b9dd575f53cce1a1f7267d22772b37ca60cd2516f24533b04e437","8d907f5e50623adc4e85632f1d233635dadde838208273310a11cbabb653b497","c802e72abaf33b77a58b9581d2f8e611a5fb0c94fdc4ea101ee59a78dd6ca746","8e64d7568722e6f6674e399c9e785ff23be6f970675da012f1c6f9b118b82a16","540e0eda4a2a78372dfd06a35bddca942f7ef6ca111d50be5a03836808270b6d","caafdf3ef4ee8163d9d4dcfe6bcb68a23b6c639480139407f682e13cedb473b6","ab5a144caffaf363fdb9a4ce41b1d70fc9e9efcf666f94ce463d4b239fd108c0","f171acb46af0a675915a5f5b73905d49a7255eecbc7b934878886af243d6783f","fbe89dae6da8f8e1d2c8e88014db73db978099027af2bc57883034af40e5b04a","33a9f0b6918da8adb508a6a052bf19c35d1eab2f77feed5cd1ee05201f498dd8","e80b39c0514911ee7b9130f12f9a48e7fde7e5740b7f2eea329299bd8f4c8a19","dd14d9057877b9a03fbac9e927910de0f44d2d9325e85057e6573f99560e18a1","cd57825cdf7b92345ebdd7b6f6a906731c3be41a86215c68bd83bd730ad2ff55","34916ef889a5d6dff6f613b8884e125ecc59883357126d7f69bdeb793d66fc1d","e66be854335b1fa96aa810524a94d14f324617c2d5f5437933044b0d76fe897f","42cf47eccccdd04432b96fa186c0705b89bff6689e3222c82d444b77ba458b11","641acdfefef7b22bc327a25c3923f93dbeb47ad8d74186f020bcf490978041ca","305da33cf8c29dbc59b8dd392d1c95e478bead6c18842349654a9cdb63f0b59a","3c11addb000e273a744992873f30b1a25eab9f0248f3ea6dadd1716a4ac37228","f5e0f3e2a52ac4c095380a0ec5ef2991a23773b91f42a3f97f32f2b50100713b","b9c89b4a2435c171e0a9a56668f510a376cb7991eaecef08b619e6d484841735","b85baa660305c65d45f97f5b227b1505a8023955f1bf27da178232e7be99cc12","d5dd266b6f5c9c24f6b4001e172615626a51e350b3267b4af3970e4fb2c57fab","89049878a456b5e0870bb50289ea8ece28a2abd0255301a261fa8ab6a3e9a07d","a464510505f31a356e9833963d89ce39f37a098715fc2863e533255af4410525","ebbe6765a836bfa7f03181bc433c8984ca29626270ca1e240c009851222cb8a7","ac10457b51ee4a3173b7165c87c795eadd094e024f1d9f0b6f0c131126e3d903","b2f2311d7085a1feec3f6a85d7cc8bdaf1d976de1874c1f92940ad8ce6a34d39","954523d1f4856180cbf79b35bd754e14d3b2aea06c7efd71b254c745976086e9","4ee1e0fea72cd6a832c65af93b62fbf39b009e3711384bb371b48c9abba66781","d35fb65da678a4971822249d657f564ff6bdb6618428642235c4858ebafb2379","b27a613e49e00740db23e2e267b8e44e51ee85a448e787b7fa7c7a7be7316104","4d54136f3080a92f0b031115719321fa25bd855582c30f7f6b6e78969ffe7ec5","6c7554f14f08d3264e220f6ac82cf00e3b6a3bd15ec676bd97bf0e06da79e18d","a2506732a96c864f9336a4fc0403f7f4f3831cfe1db4a40ddf95866dbe2d28ef","8aa451aa2c6e762f359e6fae74e2903f6e3304b1a5ae19c1da548128ddf25add","2e756f5c2e33e9b28aebe174d147a19b46f2364027050acb8c8c2f83e005b2ec","434ea45c930ac3accf5951ac80af2da02a3e0945d33f1e59dbd3a50498cb519b","dc5f64a739746e51c220dceef9b4de820a1daa2dea3254d63bba9988ddcb500b","ab555ebf13e4f021233b5dbd6876eb2a4514aa651693ba9fa38d1e7e7df3b841","6b3233127e08357fda5142130d43a222ed0dac32861ac6c72f8288c0c79cf749","0d4dab75055c9279cb1dcb693cf8568bd724e4f653fd95a3a82ad2e267c4dda6","5b3a3cb1fddc72107030fb0e13f015deff38eb738e50f3db4dfa5eaa2adeabc2","df6c83e574308f6540c19e3409370482a7d8f448d56c65790b4ac0ab6f6fedd8","32f19b665839b1382b21afc41917cda47a56e744cd3df9986b13a72746d1c522","405fa7000efd4f0317eb31fa76ed40bad16be48ef2efc88b53bbe439fae74aaa","3e5a089877b3647b42c6f8d8284ff26e57fd3d94f1b1736080079796b994a89e","fde8122ba963e8f7ef9da2a35029632dc8637e9740c9d8cc9745d94ca42e6762","5a44788293f9165116c9c183be66cefef0dc5d718782a04847de53bf664f3cc1","afd653ae63ce07075b018ba5ce8f4e977b6055c81cc65998410b904b94003c0a","a33c72cfb6c71ffe8074a297ebd448d8a3b504895fc7b64c13d3aaee48b2a02c","9f96b9fd0362a7bfe6a3aa70baa883c47ae167469c904782c99ccc942f62f0dc","5df9a68835c1e020625127d8c951c90808d319c811fc3a780d24f64053192ea4","71807b208e5f15feffb3ff530bec5b46b1217af0d8cc96dde00d549353bcb864","67f7637f370ee8c18fe060c901e071db2c4368de90a5c58cf1f959d12b0c2f7e",{"version":"e1ff31050a58b42b49a749d4ae725e2ad20c5e59a0d524cc0f6e85468065dd8d","signature":"653711fba8904aa27fd8911b63cf526e7b334e13a292da4cefdbbe179ac3f3f2"},{"version":"260f889b9e2b69f77be1155348eb345166aec664b3efff6720053c6844a41f28","signature":"ef022c91ea9e75ab4082f2e881f9c4db7b346be2da706e876b253bebce5e6140"},{"version":"316c9a57bb5d7b183ba4a8c753567685746d91cbdf983f4163043f1e21c64c51","signature":"fc69d561fed35a8d1b7e7067a26f9382e2d84b355ebe640b5ec12ca9917e5c79"},{"version":"d1b49bd384e7a696906adefa7786af88aecc07b97ccd60db7db7a7348a61d6b6","signature":"95c3134f0dfcd1289c3258ba63936feb091516568f91bb0c877e2b31f23c2347"},{"version":"fb8a301e76a26bf884b33439c18cfd5d0e1b6592afbdd355e8d34c9e11d87a3c","signature":"bfe706aafb8659b1036a2721b73235a7f0c5cb65365105adec29a0d69b786984"},"e69d0b59db23f59172cb087ee44a71438f809bd214d4f4105abd6090b341cbdc","d5c1d4db425938fb1e0ff528b3edb945d4d851c001ab6e1528c62eb16813d96e","86f89124a90fae1b90421bcce1e0ba58614383ca72403bfc03ff89761b050a4d","5a6fbec8c8e62c37e9685a91a6ef0f6ecaddb1ee90f7b2c2b71b454b40a0d9a6","e7435f2f56c50688250f3b6ef99d8f3a1443f4e3d65b4526dfb31dfd4ba532f8","6fc56a681a637069675b2e11b4aa105efe146f7a88876f23537e9ea139297cf9","33b7f4106cf45ae7ccbb95acd551e9a5cd3c27f598d48216bda84213b8ae0c7e","542c82f0d719084ec6dde3ce4a69be8db0f5fa3ea1e38129f95ee6897b82de78","c5079a23a0200a682ec3db25bc789d6cee4275b676a86ec1a3964d919b977e6a","8bcb884d06860a129dbffa3500d51116d9d1040bb3bf1c9762eb2f1e7fd5c85c","e55c0f31407e1e4eee10994001a4f570e1817897a707655f0bbe4d4a66920e9e","a37c2194c586faa8979f50a5c5ca165b0903d31ee62a9fe65e4494aa099712c0","6602339ddc9cd7e54261bda0e70fb356d9cdc10e3ec7feb5fa28982f8a4d9e34","7ffaa736b8a04b0b8af66092da536f71ef13a5ef0428c7711f32b94b68f7c8c8","7b4930d666bbe5d10a19fcc8f60cfa392d3ad3383b7f61e979881d2c251bc895","46342f04405a2be3fbfb5e38fe3411325769f14482b8cd48077f2d14b64abcfb","8fa675c4f44e6020328cf85fdf25419300f35d591b4f56f56e00f9d52b6fbb3b","ba98f23160cfa6b47ee8072b8f54201f21a1ee9addc2ef461ebadf559fe5c43a","45a4591b53459e21217dc9803367a651e5a1c30358a015f27de0b3e719db816b","9ef22bee37885193b9fae7f4cad9502542c12c7fe16afe61e826cdd822643d84","b0451895b894c102eed19d50bd5fcb3afd116097f77a7d83625624fafcca8939","bce17120b679ff4f1be70f5fe5c56044e07ed45f1e555db6486c6ded8e1da1c8","7590477bfa2e309e677ff7f31cb466f377fcd0e10a72950439c3203175309958","3f9ebd554335d2c4c4e7dc67af342d37dc8f2938afa64605d8a93236022cc8a5","1c077c9f6c0bc02a36207994a6e92a8fbf72d017c4567f640b52bf32984d2392","600b42323925b32902b17563654405968aa12ee39e665f83987b7759224cc317","32c8f85f6b4e145537dfe61b94ddd98b47dbdd1d37dc4b7042a8d969cd63a1aa","0da77bc7e34afccd7d35dcc0d99db05b56235a536c69082c15f2a07ceb7ceae0","f364fb93abf1e50fa93e38b4cb32c99adb43e8c8044482da5b9bf29aa27eaf75","a460b56ced5a21969a819245f9f36b2b55aa2129e87159957d400d3dc0847529","e53e817cec71dc843700a1571356271d3e13abf8cb9d32f33b4a214c6dcdd1e0","252eb4750d0439d1674ad0dc30d2a2a3e4655e08ad9e58a7e236b21e78d1d540","e344b4a389bb2dfa98f144f3f195387a02b6bdb69deed4a96d16cc283c567778","ecb3f7a39c52816137f9a87278225ce7f522c6e493c46bb2fff2c2cc2ba0e2d4","31d26ca7224d3ef8d3d5e1e95aefba1c841dcb94edcdf9aaa23c7de437f0e4a2","c5b3da7e2ecd5968f723282aba49d8d1a2e178d0afe48998dad93f81e2724091","3e4ba3ecd2f4b94e22c38ff57b944e43591cac6fd4d83e3f58157f04524d8da6","4b8e57cbc17c20af9d4824447c89f0749f3aa1ec7267e4b982c95b1e2a01fab7","37d6dd79947b8c3f5eb759bd092d7c9b844d3655e547d16c3f2138d8d637674e","c96700cd147d5926d56ec9b45a66d6c8a86def5e94806157fa17c68831a6337f","f6688a02946a3f7490aa9e26d76d1c97a388e42e77388cbab010b69982c86e9e","e252a2f541e86ee889bcab952a0f9844e7d5a62284b06cd09d67d67063b2519d","d618d077158335a50ae6bb789d93dd29b62f930195a2e909e94f0afadad5680a","ae0eeabdb4b4129356ba04ce086c675af383a9ab2b275950d73067842ccd91e4","54f664311746f12a5b0b93a6a58b12a52660e3ff74f06aa0e9c275f46bd22d0e","506bc8f4d2d639bebb120e18d3752ddeee11321fd1070ad2ce05612753c628d6","4069e28d9ec7bb86c714d2d11b5811ebca88c114c12df3fb56b8fec4423dcf18","1977f62a560f3b0fc824281fd027a97ce06c4b2d47b408f3a439c29f1e9f7e10","627570f2487bd8d899dd4f36ecb20fe0eb2f8c379eff297e24caba0c985a6c43","445bbd11741254b30eb904776cbebc72b9d13b35e6a04a0dda331a7bbafe2428","85c9be6b38726347f80c528c950302900db744b558a95206c4de12e1d99b2dee","735baa325c8211ac962fa5927fa69d3702666d1247ceb16bf94c789ccd7bef26","9e82194af3a7d314ccbc64bb94bfb62f4bfea047db3422a7f6c5caf2d06540a9","c32373a44722e84517acd1f923284ce32514fecf3dd93cc5ae52111dc6aa682a","952a9eab21103b79b7a6cca8ad970c3872883aa71273f540285cad360c35da40","8ba48776335db39e0329018c04486907069f3d7ee06ce8b1a6134b7d745271cc","e6d5809e52ed7ef1860d1c483e005d1f71bab36772ef0fd80d5df6db1da0e815","6ee38318bdaa2852d9309e92842f099a9f40c5d3c5aff3833066c02ffd42dade","12ae46c46c5e2405ad3d7e96e2638f1d183095fa8cf8a876d3b3b4d6ba985f5b","e4b1e912737472765e6d2264b8721995f86a463a1225f5e2a27f783ecc013a7b","da09c0171b55ccdf5329e38c5249c0878e7aec151c2a4390c630a2bc1383e768","c40d552bd2a4644b0617ec2f0f1c58618a25d098d2d4aa7c65fb446f3c305b54","ecb4c715f74eb8b0e289c87483f8a4933dfa566f0745b4c86231a077e2f13fea","424ddba00938bb9ae68138f1d03c669f43556fc3e9448ed676866c864ca3f1d6","a0fe12181346c8404aab9d9a938360133b770a0c08b75a2fce967d77ca4b543f","3cc6eb7935ff45d7628b93bb6aaf1a32e8cb3b24287f9e75694b607484b377b3","51451e948351903941a53ed002977984413a3e6a24f748339dd1ed156a6122bf","efd463021ccc91579ed8ae62584176baab2cd407c555c69214152480531a2072","29647c3b79320cfeecb5862e1f79220e059b26db2be52ea256df9cf9203fb401","e8cdefd2dc293cb4866ee8f04368e7001884650bb0f43357c4fe044cc2e1674f","582a3578ebba9238eb0c5d30b4d231356d3e8116fea497119920208fb48ccf85","185eae4a1e8a54e38f36cd6681cfa54c975a2fc3bc2ba6a39bf8163fac85188d","e6e7ac06b50b2693488813f8de73613934d9aa2eb355cdffd2ef898db60c9af1","5b504f247d6388daa92ffb5bbd3ffc5fc5a1ebd3ff928f90b6285b620455dd04","cee72255e129896f0240ceb58c22e207b83d2cc81d8446190d1b4ef9b507ccd6","3b54670e11a8d3512f87e46645aa9c83ae93afead4a302299a192ac5458aa586","c2fc4d3a130e9dc0e40f7e7d192ef2494a39c37da88b5454c8adf143623e5979","2e693158fc1eedba3a5766e032d3620c0e9c8ad0418e4769be8a0f103fdb52cd","516275ccf3e66dc391533afd4d326c44dd750345b68bb573fc592e4e4b74545f","07c342622568693847f6cb898679402dd19740f815fd43bec996daf24a1e2b85","fcfe042dc3134375bc247267993c55a931237910e5e5f410b804118341c777d4","ffb038772fa32bfb0b6cb74c1fe6f609335d086d715589aae790c33ee698801d","6aacd53b14c96a0cd21435cae68eabe6d9a3d78dc5442ec6edcf391efd7989ef","a4096686f982f6977433ee9759ecbef49da29d7e6a5d8278f0fbc7b9f70fce12","2eb279b2ae63cf59b419eb41c4ccd8f0850a7114c0a6a0da386286799f62c38b","9c9b902ae773d4c1ca6bb8f05e06b1dc6ffe7514463e3ee9b9e28153014836ee","86df53d43eccf5f18b4bc8f876932bd8a4a2a9601eb06bbba13f937f3b2a2377","2147f8d114cf58c05106c3dccea9924d069c69508b5980ed4011d2b648af2ffe","edb8332e0c7c7ec8f8f321c96d29c80d5e90de63efdb1b96ad8299d383d4b6b9","fe61f001bd4bd0a374daa75a2ba6d1bb12c849060a607593a3d9a44e6b1df590","cfe8221c909ad721b3da6080570553dea2f0e729afbdbcf2c141252cf22f39b5","34e89249b6d840032b9acdec61d136877f84f2cd3e3980355b8a18f119809956","6f36ff8f8a898184277e7c6e3bf6126f91c7a8b6a841f5b5e6cb415cfc34820e","4b6378c9b1b3a2521316c96f5c777e32a1b14d05b034ccd223499e26de8a379c","07be5ae9bf5a51f3d98ffcfacf7de2fe4842a7e5016f741e9fad165bb929be93","cb1b37eda1afc730d2909a0f62cac4a256276d5e62fea36db1473981a5a65ab1","195f855b39c8a6e50eb1f37d8f794fbd98e41199dffbc98bf629506b6def73d7","da32b37d9dec18a1e66ce7a540c1a466c0a7499a02819a78c049810f8c80ec8f","108314a60f3cb2454f2d889c1fb8b3826795399e5d92e87b2918f14d70c01e69","d75cc838286d6b1260f0968557cd5f28495d7341c02ac93989fb5096deddfb47","d531dc11bb3a8a577bd9ff83e12638098bfc9e0856b25852b91aac70b0887f2a","19968b998a2ab7dfd39de0c942fc738b2b610895843fec25477bc393687babd8","c0e6319f0839d76beed6e37b45ec4bb80b394d836db308ae9db4dea0fe8a9297","1a7b11be5c442dab3f4af9faf20402798fddf1d3c904f7b310f05d91423ba870","48709e4ac55179f5f6789207691759f44e8e0d2bfbadd1ceecb93d4123a12cef","2c817fa37b3d2aa72f01ce4d3f93413a7fbdecafe1b9fb7bd7baaa1bbd46eb08","682203aed293a0986cc2fccc6321d862742b48d7359118ac8f36b290d28920d2","7406d75a4761b34ce126f099eafe6643b929522e9696e5db5043f4e5c74a9e40","ad74043d72ed605cecf58a589112083c78dfd97452b80cd0a81b31c57976af12","9bc363b91528a169b3d9451fba33f865c339a3397da80a44a754547962f4a210","64efb52cb6cf86c8a05ceec920db05f9ebdaac4dff5980d9a62227eb6d2ebc11","3286cf198cf5f068cd74cb0b6648c8cba440dade2fc55eb819e50e5ea9b3f92e","16a6d4efcce5bb20d42134ce52855a46cd4783668c6d6a67a86397eb670ad0d2","46bd71615bdf9bfa8499b9cfce52da03507f7140c93866805d04155fa19caa1b","334b49c56ad2d1285a113ae3df77733d304853afcf7328367f320934e37559af","a0e74be326371c0d49be38e1ca065441fb587c26ca49772d1c96db7b77a1bb14","bb1e5cf70d99c277c9f1fe7a216b527dd6bd2f26b307a8ab65d24248fb3319f5","817547eacf93922e22570ba411f23e9164544dead83e379c7ae9c1cfc700c2cf","a728478cb11ab09a46e664c0782610d7dd5c9db3f9a249f002c92918ca0308f7","9e91ef9c3e057d6d9df8bcbfbba0207e83ef9ab98aa302cf9223e81e32fdfe8d","66d30ef7f307f95b3f9c4f97e6c1a5e4c462703de03f2f81aca8a1a2f8739dbd","0f562669bc473ed1e1e2804f12d09831e6bf506181d7684fb386f60f22989057","90a4be0e17ba5824558c38c93894e7f480b3adf5edd1fe04877ab56c56111595","fadd55cddab059940934df39ce2689d37110cfe37cc6775f06b0e8decf3092d7","9115cfffd8ea095accd6edf950d4bdfabbd5118e7604be2e13fe07150344bb9d","b4f3b4e20e2193179481ab325b8bd0871b986e1e8a8ed2961ce020c2dba7c02d","41744c67366a0482db029a21f0df4b52cd6f1c85cbc426b981b83b378ccb6e65","c3f3cf7561dd31867635c22f3c47c8491af4cfa3758c53e822a136828fc24e5d","1a3f603fedd85d20c65eb7ca522dd6f0e264dbb6e1bfa9fb4f214f2e61b8bdf8","82a74e031ab992424f8874ceacbb43ad33bdcf69538a0fbddc28145e54980f5a","5515f17f45c6aafe6459afa3318bba040cb466a8d91617041566808a5fd77a44","4df1f0c17953b0450aa988c9930061f8861b114e1649e1a16cfd70c5cbdf8d83","441104b363d80fe57eb79a50d495e0b7e3ebeb45a5f0d1a4067d71ef75e8fbfa",{"version":"58c929d4f037d4886bb6a114d69a191198fd4fa88fa355d68ccabb33e8b41e66","signature":"2e9e4ab2e560515e738a5079f0af97545158107233d504511aff1209b9750df1"},"2bad09c4dc0810666ef5b6150aa910dd711051ce5f2184050c9859c708092a36","90b7749e090b5971669657bbf97c2f1f7bbde63e45ebee576e6d6a80cd274cd8","c938dac97b83703e7bd03862b5bc558425acc9f16ad9e24220771df184d25fcf","8941525aa2f1e097f0352e586bb9c755e2d533e9945508b7518346759b26e1b8","8acfefd1aec7626a3016ce7e82e3ac1a0e5b57248cffd8255b833503c29954c7","3cf73a203d499608e5b91d0c8f6ec729a39dd547cc2651a0d4647cdb420cc1fc","17f1d99666811b576261c5c9399cf2a643220188d6dcd0e6fe605a68a696d2c8","8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f",{"version":"e4d1daa0964e6851de27a99e0da4a996b60120e8797a4d1f8a55100dc059ff58","signature":"a952647879e393357c290e9fb25c9cb8676d8b9aab9a6768459cae0a96931b20"},{"version":"8b8b92e96d4c7769aadc86d7e837d0b01c5349ca4d29e680850d33f9037c54b8","signature":"e161350b52bc7ad19ea8e92ce1489430e9d2a4aa79ffaf5f7f302176417a2550"},{"version":"cf4cd5faca1222b31263acc3463237c4b14f2e43adfe252d9478c471d177bed4","signature":"aa1725e38b5a0b4009f6a74f296f173e7926c119a60454dbd2e523861735df69"},"851d6dd300a7d1fa165c0e61d2d84e694ca2ab2e065a3b035e6d6202c3f919d1","c96cfce8ea7289adb3c3b1af4d296f0750c4568d66f4fb13d5afcdcd8d70635f","e9cba458ea179833bba7b180c10e7293b4986d2f66a7bd99c13f243d91bab3d4","8b0b6a4c032a56d5651f7dd02ba3f05fbfe4131c4095093633cda3cae0991972","27484cb3aa328bc5d0957fcb34df68a5db1be280af510d9ed3a282b1a0a93b38","6c2b8c78eb1476ad2668898923fda9c3e67b295b9a6dc7a7312ead2582a76883","d8fb0821bcebbcc5ef87655a6442e8909313eb0bd7960f696b10cdb31576fdaa","1053398d8fd9b1a45170b5cca30bd54abe7ec7061ef2929c4da9feaa71737930","c21f2aa4d38c2e9fea29dde79c15aed25f532ed1cb295794879cbeb8372a3ce7","7afedbfdd1a5220d472faacc2943242abb1f3f274b80984b11e804d6a8d8f17f","31a335eb49c1ea1b0d8ded51d2dee99d96b45e67f581638b2bce9cd121a2dcdc","c86ad86cc7a3ec3794deab9b943a823d9aaf09b846bb581a06bf263117e8d6d9","cfe88132f67aa055a3f49d59b01585fa8d890f5a66a0a13bb71973d57573eee7","f23601713615719b1a1394deae884fb9f507de819a086d5a019c63793da9efc6","50fd11b764194f06977c162c37e5a70bcf0d3579bf82dd4de4eee3ac68d0f82f","ad5ad568f2f537a43dcc1588b2379f9dc79539ae36b8821b13a5d03625211eb2","99579aa074ed298e7a3d6a47e68f0cd099e92411212d5081ce88344a5b1b528d","d2d58166965f631fa203f405f3713b0f86f1f8b80755e9daea43057a25311e16","ce7dbf31739cc7bca35ca50e4f0cbd75cd31fd6c05c66841f8748e225dc73aaf","942ab34f62ac3f3d20014615b6442b6dc51815e30a878ebc390dd70e0dec63bf","a861cceeb708d23beebcf7f3235dcdd1a5a7d1655afd6ba49dbc0d45f5370469","0256d60785ede7860b5262f504f139aa68f74db44ba9f03807b752864580772c","396c1e5a39706999ec8cc582916e05fcb4f901631d2c192c1292e95089a494d9","89df75d28f34fc698fe261f9489125b4e5828fbd62d863bbe93373d3ed995056","7cb9b6d5c1e3508fbc81e7bbab314eac54715f9326ac72fd0eb65f17a4393d50","eefa4f00b4a4c150786e5ed866999b44687388e94a99f0b67a78b59c5b2303fd","3bcc2bbb40a70477a56b4d2e817e4b0044d567bae25bbca6be9136607bea2afe","be75c12a8d61aaadb9e33e0d7d0e7b2f3bee9a3ac618d04367e0b7c2aea3f86d","e6223b7263dd7a49f4691bf8df2b1e69f764fb46972937e6f9b28538d050b1ba","c0849999805318805a3932d166a8ae03899ec253c7c9fea35ba6e5a1d04e5572","f8a3096b501a807cd24f83dbd273bd4844a0c49d1d826eb821fafd2b37cf792b","903bb69c5e5ce0cb8f8159a86acca9116275f8c78253db80004fe0d78f436ef4","9daabcf8cac2bd41d4cb83511c0358fc24650fd08f9ae73e888582285a116a3f","82d3e00d56a71fc169f3cf9ec5f5ffcc92f6c0e67d4dfc130dafe9f1886d5515","691e990c527fc0abefa2cd0922b0dcfd83cf98a3f0c11a96a854f34fc85361f5","6b92208e18bfa294582ff012c43a6f35834e611eed63488799f2d74c25c132d2","e3d221660c0b79a9a3ba1111b3dfbb1136c0b52d7609b0054d3ce09ce711a3e6","892adfd3427fa4ed24bede88e8e46e4cb67e53e794365023fd473f3be796981d","4541d8b29bed87d05434bd0af815a6e2293520f0c4ece541c6dabecdbcb2fc95","9fac6ebf3c60ced53dd21def30a679ec225fc3ff4b8d66b86326c285a4eebb5a","992fda06eebba15d37625007500bef5b3fdd1c5e2f5a334064efeb1604c7bce3","07bc8a3551e39e70c38e7293b1a09916867d728043e352b119f951742cb91624","e47adc2176f43c617c0ab47f2d9b2bb1706d9e0669bf349a30c3fe09ddd63261","7fec79dfd7319fec7456b1b53134edb54c411ba493a0aef350eee75a4f223eeb","189c489705bb96a308dcde9b3336011d08bfbca568bcaf5d5d55c05468e9de7a","98f4b1074567341764b580bf14c5aabe82a4390d11553780814f7e932970a6f7","abdc0a8843b28c3cafbefb90079690b17b7b4e2a9c9bbf2cd8762e11a3958034","2e252235037a2cd8feebfbf74aa460f783e5d423895d13f29a934d7655a1f8be","f3e04e6c6db44b9ad05a0b7c89e914b08eee05f2050968b761ed98735d42cd62",{"version":"baa601f4a12aeca9fe9c6103f0700f74edb4f0a83c98acb828605c47f5e17bce","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"760cb9b76ab53a2f704ee0e731e162bcfc6af609f5e400a668efe2cc7923e4f4","cc957354aa3c94c9961ebf46282cfde1e81d107fc5785a61f62c67f1dd3ac2eb","7ec238b220ea991b6643e24191b1f552a65956d5f6de4c6144e700b9985265d8","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","dae3d1adc67ac3dbd1cd471889301339ec439837b5df565982345be20c8fca9a","5426e62886b7be7806312d31a00e8f7dccd6fe63ba9bbefe99ee2eab29cc48a3","6d829824ead8999f87b6df21200df3c6150391b894b4e80662caa462bd48d073","afc559c1b93df37c25aef6b3dfa2d64325b0e112e887ee18bf7e6f4ec383fc90","8d48b8f8a377ade8dd1f000625bc276eea067f2529cc9cafdf082d17142107d6",{"version":"64d4b35c5456adf258d2cf56c341e203a073253f229ef3208fc0d5020253b241","affectsGlobalScope":true},"a1c79f857f5c7754e14c93949dad8cfefcd7df2ecc0dc9dd79a30fd493e28449","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","5759f4fc8d144161afa3200476981479989923195c96ec8b9844152a1825d041","e050a0afcdbb269720a900c85076d18e0c1ab73e580202a2bf6964978181222a","16d51f964ec125ad2024cf03f0af444b3bc3ec3614d9345cc54d09bab45c9a4c","ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc",{"version":"ae3fe461989bbd951344efc1f1fe932360ce7392e6126bdb225a82a1bbaf15ee","affectsGlobalScope":true},"5b9ecf7da4d71cf3832dbb8336150fa924631811f488ad4690c2dfec2b4fb1d7","951c85f75aac041dddbedfedf565886a7b494e29ec1532e2a9b4a6180560b50e","f47887b61c6cf2f48746980390d6cb5b8013518951d912cfb37fe748071942be","15c88bfd1b8dc7231ff828ae8df5d955bae5ebca4cf2bcb417af5821e52299ae","3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","763e521cf114b80e0dd0e21ca49b9f8ae62e8999555a5e7bade8ce36b33001c2","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","74986224d4bee6bdfe68db653bb46e389101227ad705065a050ea6dbb171897e","ffcc5500e77223169833fc6eb59b3a507944a1f89574e0a1276b0ea7fc22c4a4","22f13de9e2fe5f0f4724797abd3d34a1cdd6e47ef81fc4933fea3b8bf4ad524b","e3ba509d3dce019b3190ceb2f3fc88e2610ab717122dabd91a9efaa37804040d","cda0cb09b995489b7f4c57f168cd31b83dcbaa7aad49612734fb3c9c73f6e4f2","f72f8428f3c1caa22e9c247d046603b85b442c0dae7b77a7a0bc092c18867cb7",{"version":"195f63105abc03e72b6a176e3e34dfb5ac932b55db378fdc7874b1617e24b465","affectsGlobalScope":true},"2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",{"version":"d9aa2c3d6bb462015bb36be4282ec9dfeca33d687aae1b7d726c6c9543165dd1","affectsGlobalScope":true},"29d59e921bc723594bbfc98230d24f38f0d5a669f28fcf989b7468f4f95b7c52","25e05fe63d24c13857e295d74010b5694894f571698e31ae555e0577331a2ce4","93c4fc5b5237c09bc9ed65cb8f0dc1d89034406ab40500b89701341994897142","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","77c1d91a129ba60b8c405f9f539e42df834afb174fe0785f89d92a2c7c16b77a","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","6eef5113135a0f2bbac8259909a5bbb7666bcde022c28f4ab95145623cbe1f72","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","6aee496bf0ecfbf6731aa8cca32f4b6e92cdc0a444911a7d88410408a45ecc5d","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","31c502014e5ba046d5cb060136929b73fd53f0f989aa37b2b0424644cb0d93ef","76232dbb982272b182a76ad8745a9b02724dc9896e2328ce360e2c56c64c9778","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","28288f5e5f8b7b895ed2abe6359c1da3e0d14a64b5aef985071285671f347c01"],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"emitDecoratorMetadata":true,"experimentalDecorators":true,"module":1,"noFallthroughCasesInSwitch":false,"noImplicitAny":false,"outDir":"./","removeComments":true,"skipLibCheck":true,"sourceMap":true,"strictBindCallApply":false,"strictNullChecks":false,"target":4},"fileIdsList":[[227,651],[227],[227,678],[227,354,356],[227,347,356,357],[227,386],[227,297,386],[227,387,388],[47,227,358,389,391,392],[227,293,347],[227,390],[227,347,354,355],[227,355,356],[227,347],[227,326,334],[227,450],[227,359,360,361,362,363,364,365,366,367,368,369,370,371,372],[227,302,334],[227,326],[227,299,347,450],[227,377,378,379,380,381,382,383,384],[227,304],[227,347,450],[227,373,376,385],[227,374,375],[227,338],[227,304,305,306,307],[227,394],[227,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415],[227,418],[215,227,234,417],[46,227,308,347,354,386,393,416,419,440,445,447,449],[51,227],[51,227,293],[227,302,421],[227,296,423],[227,293,297],[51,227,347],[227,301,302],[227,313],[227,315,316,317,318,319],[227,308,321,325,326],[227,327,328,329],[227,234],[48,49,50,51,52,227,294,295,296,297,298,299,300,301,302,303,313,314,320,325,326,330,331,332,334,342,343,344,345,346],[227,324],[227,309,310,311,312],[227,302,309,310],[227,302,308],[227,302,311],[227,302,338],[227,333,335,336,337,338,339,340,341],[48,227,302],[227,334],[48,227,302,333,337,339],[227,310],[227,335],[227,302,334,335,336],[227,323],[227,302,306,323,342],[227,321,322,324],[227,298,300,314,321,326,327,343,344,347],[52,227,298,300,303,343,344],[227,307],[227,293],[227,323,347,348,352],[227,352,353],[227,347,348],[227,347,348,349],[227,349,350],[227,349,350,351],[227,303],[227,433],[227,433,434,435,436,437,438],[227,425,433],[227,434,435,436,437],[227,303,433,436],[227,420,426,427,428,429,430,431,432,439],[227,303,347,426],[227,303,425],[227,303,425,450],[227,296,302,303,421,422,423,424,425],[227,293,347,421,422,441],[227,347,421],[227,443],[227,386,441],[227,441,442,444],[227,323,446],[227,333],[227,308,347],[227,448],[227,321,325,347,450],[227,603],[227,347,450,611,612],[227,607,610,611],[227,615,616],[227,450,604,618],[227,619],[227,611],[227,618,621],[46,227,604,613,614,617,620,622,625,631,634,635,636,638,640,646,648],[227,347,605],[227,302,331,450,605,606,607,610,611,613,649],[227,607,608,609,611,624,630],[50,227,302,331,450,610,611],[227,623],[227,450,608,610,627],[227,347,450,610],[227,450,606,607,609,626,628,629],[227,450,608,610,611],[227,302,450],[227,302,347,608,609,611],[227,610],[227,331],[227,309,313,347,632],[227,633],[227,347,608],[227,302,347,450,608,610,611,627],[227,314,321,325,450,604,608,613,635],[227,324,325,450,603,637],[227,639],[214,227,234,450],[227,642,644,645],[227,641],[227,643],[227,450,607,610,642],[50,227,302,331,347,450,608,610,613,625],[227,647],[227,590,591,592,593,594,595],[227,450,590],[227,596],[227,651,652,653,654,655],[227,651,653],[201,227,234,657],[201,227,234],[227,661,663],[227,660,661,662],[198,201,227,234,665,666],[227,658,666,667,670],[199,227,234],[227,673],[227,674],[227,680,683],[227,669],[227,668],[183,227],[186,227],[187,192,218,227],[188,198,199,206,215,226,227],[188,189,198,206,227],[190,227],[191,192,199,207,227],[192,215,223,227],[193,195,198,206,227],[194,227],[195,196,227],[197,198,227],[198,227],[198,199,200,215,226,227],[198,199,200,215,227],[201,206,215,226,227],[198,199,201,202,206,215,223,226,227],[201,203,215,223,226,227],[183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233],[198,204,227],[205,226,227],[195,198,206,215,227],[207,227],[208,227],[186,209,227],[210,225,227,231],[211,227],[212,227],[198,213,227],[213,214,227,229],[187,198,215,216,217,227],[187,215,217,227],[215,216,227],[218,227],[219,227],[198,221,222,227],[221,222,227],[192,206,223,227],[224,227],[206,225,227],[187,201,212,226,227],[192,227],[215,227,228],[227,229],[227,230],[187,192,198,200,209,215,226,227,229,231],[215,227,232],[227,671,686,687],[227,671,686],[201,227,671],[227,690,729],[227,690,714,729],[227,729],[227,690],[227,690,715,729],[227,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728],[227,715,729],[201,227,234,669],[187,199,201,215,227,234,659],[227,732],[227,489,490,491,492,493,494,495,496],[227,497],[227,734],[227,460],[227,461],[227,460,461,466],[227,462,463,464,465,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579],[227,461,497],[227,461,537],[227,456,457,458,459,460,461,466,580,581,582,583,587],[227,466],[227,458,585,586],[227,460,584],[227,461,466],[227,456,457],[227,676,682],[227,680],[227,677,681],[227,536],[227,679],[53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,69,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,109,110,111,112,113,114,115,116,117,118,120,122,123,124,125,126,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,172,173,174,176,227,237,239,240,241,242,243,244,246,247,249,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292],[98,227],[56,57,227],[53,54,55,57,227],[54,57,227],[57,98,227],[53,57,175,227],[55,56,57,227],[53,57,227],[57,227],[56,227],[53,56,98,227],[54,56,57,227,266],[56,57,227,266],[56,227,274],[54,56,57,227],[66,227],[89,227],[110,227],[56,57,98,227],[57,105,227],[56,57,98,116,227],[56,57,116,227],[57,157,227],[53,57,176,227],[182,227,236],[53,57,175,182,227,235],[175,176,227,236],[182,227],[53,57,182,227,235,236],[227,250],[227,245],[227,248],[54,56,176,177,178,179,227],[98,176,177,178,179,227],[176,178,227],[56,177,178,180,181,227,237],[53,56,227],[57,227,252],[58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,104,106,107,108,109,110,111,112,113,114,115,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,227],[227,238],[227,450,451],[227,450,451,452,600,601],[227,450,455,600],[227,450,454],[227,450,602,649],[227,588],[227,589,597],[227,450,454,589,598],[227,450,454,599],[227,293,450,453],[451],[454],[589,597],[453,454,589,598],[453]],"referencedMap":[[653,1],[651,2],[676,2],[679,3],[47,2],[357,4],[358,5],[387,6],[388,7],[389,8],[393,9],[390,10],[391,11],[355,2],[356,12],[392,13],[371,2],[359,2],[360,14],[361,15],[362,2],[363,16],[373,17],[364,2],[365,18],[366,2],[367,2],[368,14],[369,14],[370,14],[372,19],[380,20],[382,2],[379,2],[385,21],[383,2],[381,2],[377,22],[378,23],[384,2],[386,24],[374,2],[376,25],[375,26],[305,2],[308,27],[304,2],[306,2],[307,2],[410,28],[395,28],[402,28],[399,28],[412,28],[403,28],[409,28],[394,2],[413,28],[416,29],[407,28],[397,28],[415,28],[400,28],[398,28],[408,28],[404,28],[414,28],[401,28],[411,28],[396,28],[406,28],[405,28],[419,30],[418,31],[417,2],[450,32],[48,2],[49,2],[50,2],[52,33],[294,34],[295,33],[421,2],[321,2],[322,2],[422,35],[296,2],[423,2],[424,36],[51,2],[298,37],[299,2],[297,38],[300,37],[301,2],[303,39],[314,40],[315,2],[320,41],[316,2],[317,2],[318,2],[319,2],[327,42],[330,43],[328,2],[329,44],[347,45],[331,2],[332,2],[637,46],[313,47],[311,48],[309,49],[310,50],[312,2],[339,51],[333,2],[342,52],[335,53],[340,54],[338,55],[341,56],[336,57],[337,58],[324,59],[343,60],[325,61],[345,62],[346,63],[334,2],[302,2],[326,64],[344,65],[353,66],[348,2],[354,67],[349,68],[350,69],[351,70],[352,71],[420,72],[434,73],[433,2],[439,74],[435,73],[436,75],[438,76],[437,77],[440,78],[427,79],[428,80],[431,81],[430,81],[429,80],[432,80],[426,82],[442,83],[441,84],[444,85],[443,86],[445,87],[446,59],[447,88],[323,2],[448,89],[425,90],[449,91],[603,92],[604,93],[613,94],[614,2],[615,2],[616,95],[617,96],[619,97],[620,98],[621,99],[618,93],[622,100],[649,101],[606,102],[608,103],[631,104],[627,105],[624,106],[623,2],[628,107],[611,108],[629,2],[630,109],[609,110],[605,111],[610,112],[607,113],[625,114],[633,115],[634,116],[632,117],[635,118],[636,119],[638,120],[640,121],[639,122],[646,123],[612,16],[642,124],[641,16],[644,125],[643,2],[645,126],[626,127],[648,128],[647,16],[596,129],[591,130],[590,16],[592,130],[593,130],[594,130],[595,16],[597,131],[678,2],[656,132],[652,1],[654,133],[655,1],[658,134],[657,135],[659,2],[664,136],[660,2],[663,137],[661,2],[667,138],[671,139],[672,140],[673,2],[674,141],[675,142],[684,143],[662,2],[668,144],[669,145],[183,146],[184,146],[186,147],[187,148],[188,149],[189,150],[190,151],[191,152],[192,153],[193,154],[194,155],[195,156],[196,156],[197,157],[198,158],[199,159],[200,160],[185,2],[233,2],[201,161],[202,162],[203,163],[234,164],[204,165],[205,166],[206,167],[207,168],[208,169],[209,170],[210,171],[211,172],[212,173],[213,174],[214,175],[215,176],[217,177],[216,178],[218,179],[219,180],[220,2],[221,181],[222,182],[223,183],[224,184],[225,185],[226,186],[227,187],[228,188],[229,189],[230,190],[231,191],[232,192],[685,2],[688,193],[687,194],[686,195],[689,2],[666,2],[665,2],[714,196],[715,197],[690,198],[693,198],[712,196],[713,196],[703,196],[702,199],[700,196],[695,196],[708,196],[706,196],[710,196],[694,196],[707,196],[711,196],[696,196],[697,196],[709,196],[691,196],[698,196],[699,196],[701,196],[705,196],[716,200],[704,196],[692,196],[729,201],[728,2],[723,200],[725,202],[724,200],[717,200],[718,200],[720,200],[722,200],[726,202],[727,202],[719,202],[721,202],[670,203],[730,2],[732,204],[733,205],[497,206],[489,207],[490,2],[491,2],[492,2],[493,2],[494,2],[496,2],[495,2],[734,2],[735,208],[731,2],[459,2],[461,209],[572,210],[576,210],[575,210],[573,210],[574,210],[577,210],[462,210],[474,210],[463,210],[476,210],[478,210],[471,210],[472,210],[473,210],[477,210],[479,210],[464,210],[475,210],[465,210],[467,211],[468,210],[469,210],[470,210],[486,210],[485,210],[580,212],[480,210],[482,210],[481,210],[483,210],[484,210],[579,210],[578,210],[487,210],[498,213],[499,213],[501,210],[546,210],[545,210],[502,210],[543,210],[547,210],[503,210],[504,210],[505,213],[548,210],[542,213],[500,213],[549,210],[506,213],[550,210],[507,213],[530,210],[508,210],[551,210],[509,210],[540,213],[511,210],[512,210],[552,210],[514,210],[516,210],[517,210],[523,210],[524,210],[518,213],[554,210],[541,213],[553,213],[519,210],[520,210],[555,210],[521,210],[513,213],[556,210],[539,210],[557,210],[522,213],[525,210],[526,210],[544,213],[558,210],[559,210],[538,214],[515,210],[560,213],[561,210],[562,210],[563,210],[527,210],[529,210],[531,210],[528,213],[510,210],[532,210],[535,210],[533,210],[534,210],[488,210],[570,210],[564,210],[565,210],[567,210],[568,210],[566,210],[571,210],[569,210],[588,215],[586,216],[587,217],[585,218],[584,210],[583,219],[458,2],[460,2],[456,2],[581,2],[582,220],[466,209],[457,2],[683,221],[681,222],[682,223],[677,2],[537,224],[536,2],[680,225],[46,2],[293,226],[266,2],[244,227],[242,227],[105,228],[56,229],[55,230],[243,231],[176,232],[98,233],[54,234],[53,235],[292,230],[257,236],[256,236],[116,237],[264,228],[265,228],[267,238],[268,228],[269,235],[270,228],[241,228],[271,228],[272,239],[273,228],[274,236],[275,240],[276,228],[277,228],[278,228],[279,228],[280,236],[281,228],[282,228],[283,228],[284,228],[285,241],[286,228],[287,228],[288,228],[289,228],[290,228],[58,235],[59,235],[60,228],[61,235],[62,235],[63,235],[64,235],[65,228],[67,242],[68,235],[66,235],[69,235],[70,235],[71,235],[72,235],[73,235],[74,235],[75,228],[76,235],[77,235],[78,235],[79,235],[80,235],[81,228],[82,235],[83,228],[84,235],[85,235],[86,235],[87,235],[88,228],[90,243],[89,235],[91,235],[92,235],[93,235],[94,235],[95,241],[96,228],[97,228],[111,244],[99,245],[100,235],[101,235],[102,228],[103,235],[104,235],[106,246],[107,235],[108,235],[109,235],[110,235],[112,235],[113,235],[114,235],[115,235],[117,247],[118,235],[119,235],[120,235],[121,228],[122,235],[123,248],[124,248],[125,248],[126,228],[127,235],[128,235],[129,235],[134,235],[130,235],[131,228],[132,235],[133,228],[135,228],[136,235],[137,235],[138,228],[139,228],[140,235],[141,228],[142,235],[143,235],[144,228],[145,235],[146,235],[147,235],[148,235],[149,235],[150,235],[151,235],[152,235],[153,235],[154,235],[155,235],[156,235],[157,235],[158,249],[159,235],[160,235],[161,235],[162,235],[163,235],[164,235],[165,228],[166,228],[167,228],[168,228],[169,228],[170,235],[171,235],[172,235],[173,235],[291,228],[175,250],[250,251],[245,251],[236,252],[182,253],[248,254],[237,255],[251,256],[246,257],[247,254],[249,258],[235,44],[240,2],[180,259],[181,260],[178,2],[179,261],[177,235],[238,262],[57,263],[258,2],[259,2],[260,2],[261,2],[262,2],[263,2],[252,2],[255,236],[254,2],[253,264],[174,265],[239,266],[8,2],[9,2],[13,2],[12,2],[2,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[3,2],[4,2],[45,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[5,2],[29,2],[30,2],[31,2],[32,2],[6,2],[33,2],[34,2],[35,2],[36,2],[7,2],[37,2],[42,2],[43,2],[38,2],[39,2],[40,2],[41,2],[1,2],[44,2],[11,2],[10,2],[452,267],[602,268],[451,16],[601,269],[455,270],[650,271],[589,272],[598,273],[453,2],[599,274],[600,275],[454,276]],"exportedModulesMap":[[653,1],[651,2],[676,2],[679,3],[47,2],[357,4],[358,5],[387,6],[388,7],[389,8],[393,9],[390,10],[391,11],[355,2],[356,12],[392,13],[371,2],[359,2],[360,14],[361,15],[362,2],[363,16],[373,17],[364,2],[365,18],[366,2],[367,2],[368,14],[369,14],[370,14],[372,19],[380,20],[382,2],[379,2],[385,21],[383,2],[381,2],[377,22],[378,23],[384,2],[386,24],[374,2],[376,25],[375,26],[305,2],[308,27],[304,2],[306,2],[307,2],[410,28],[395,28],[402,28],[399,28],[412,28],[403,28],[409,28],[394,2],[413,28],[416,29],[407,28],[397,28],[415,28],[400,28],[398,28],[408,28],[404,28],[414,28],[401,28],[411,28],[396,28],[406,28],[405,28],[419,30],[418,31],[417,2],[450,32],[48,2],[49,2],[50,2],[52,33],[294,34],[295,33],[421,2],[321,2],[322,2],[422,35],[296,2],[423,2],[424,36],[51,2],[298,37],[299,2],[297,38],[300,37],[301,2],[303,39],[314,40],[315,2],[320,41],[316,2],[317,2],[318,2],[319,2],[327,42],[330,43],[328,2],[329,44],[347,45],[331,2],[332,2],[637,46],[313,47],[311,48],[309,49],[310,50],[312,2],[339,51],[333,2],[342,52],[335,53],[340,54],[338,55],[341,56],[336,57],[337,58],[324,59],[343,60],[325,61],[345,62],[346,63],[334,2],[302,2],[326,64],[344,65],[353,66],[348,2],[354,67],[349,68],[350,69],[351,70],[352,71],[420,72],[434,73],[433,2],[439,74],[435,73],[436,75],[438,76],[437,77],[440,78],[427,79],[428,80],[431,81],[430,81],[429,80],[432,80],[426,82],[442,83],[441,84],[444,85],[443,86],[445,87],[446,59],[447,88],[323,2],[448,89],[425,90],[449,91],[603,92],[604,93],[613,94],[614,2],[615,2],[616,95],[617,96],[619,97],[620,98],[621,99],[618,93],[622,100],[649,101],[606,102],[608,103],[631,104],[627,105],[624,106],[623,2],[628,107],[611,108],[629,2],[630,109],[609,110],[605,111],[610,112],[607,113],[625,114],[633,115],[634,116],[632,117],[635,118],[636,119],[638,120],[640,121],[639,122],[646,123],[612,16],[642,124],[641,16],[644,125],[643,2],[645,126],[626,127],[648,128],[647,16],[596,129],[591,130],[590,16],[592,130],[593,130],[594,130],[595,16],[597,131],[678,2],[656,132],[652,1],[654,133],[655,1],[658,134],[657,135],[659,2],[664,136],[660,2],[663,137],[661,2],[667,138],[671,139],[672,140],[673,2],[674,141],[675,142],[684,143],[662,2],[668,144],[669,145],[183,146],[184,146],[186,147],[187,148],[188,149],[189,150],[190,151],[191,152],[192,153],[193,154],[194,155],[195,156],[196,156],[197,157],[198,158],[199,159],[200,160],[185,2],[233,2],[201,161],[202,162],[203,163],[234,164],[204,165],[205,166],[206,167],[207,168],[208,169],[209,170],[210,171],[211,172],[212,173],[213,174],[214,175],[215,176],[217,177],[216,178],[218,179],[219,180],[220,2],[221,181],[222,182],[223,183],[224,184],[225,185],[226,186],[227,187],[228,188],[229,189],[230,190],[231,191],[232,192],[685,2],[688,193],[687,194],[686,195],[689,2],[666,2],[665,2],[714,196],[715,197],[690,198],[693,198],[712,196],[713,196],[703,196],[702,199],[700,196],[695,196],[708,196],[706,196],[710,196],[694,196],[707,196],[711,196],[696,196],[697,196],[709,196],[691,196],[698,196],[699,196],[701,196],[705,196],[716,200],[704,196],[692,196],[729,201],[728,2],[723,200],[725,202],[724,200],[717,200],[718,200],[720,200],[722,200],[726,202],[727,202],[719,202],[721,202],[670,203],[730,2],[732,204],[733,205],[497,206],[489,207],[490,2],[491,2],[492,2],[493,2],[494,2],[496,2],[495,2],[734,2],[735,208],[731,2],[459,2],[461,209],[572,210],[576,210],[575,210],[573,210],[574,210],[577,210],[462,210],[474,210],[463,210],[476,210],[478,210],[471,210],[472,210],[473,210],[477,210],[479,210],[464,210],[475,210],[465,210],[467,211],[468,210],[469,210],[470,210],[486,210],[485,210],[580,212],[480,210],[482,210],[481,210],[483,210],[484,210],[579,210],[578,210],[487,210],[498,213],[499,213],[501,210],[546,210],[545,210],[502,210],[543,210],[547,210],[503,210],[504,210],[505,213],[548,210],[542,213],[500,213],[549,210],[506,213],[550,210],[507,213],[530,210],[508,210],[551,210],[509,210],[540,213],[511,210],[512,210],[552,210],[514,210],[516,210],[517,210],[523,210],[524,210],[518,213],[554,210],[541,213],[553,213],[519,210],[520,210],[555,210],[521,210],[513,213],[556,210],[539,210],[557,210],[522,213],[525,210],[526,210],[544,213],[558,210],[559,210],[538,214],[515,210],[560,213],[561,210],[562,210],[563,210],[527,210],[529,210],[531,210],[528,213],[510,210],[532,210],[535,210],[533,210],[534,210],[488,210],[570,210],[564,210],[565,210],[567,210],[568,210],[566,210],[571,210],[569,210],[588,215],[586,216],[587,217],[585,218],[584,210],[583,219],[458,2],[460,2],[456,2],[581,2],[582,220],[466,209],[457,2],[683,221],[681,222],[682,223],[677,2],[537,224],[536,2],[680,225],[46,2],[293,226],[266,2],[244,227],[242,227],[105,228],[56,229],[55,230],[243,231],[176,232],[98,233],[54,234],[53,235],[292,230],[257,236],[256,236],[116,237],[264,228],[265,228],[267,238],[268,228],[269,235],[270,228],[241,228],[271,228],[272,239],[273,228],[274,236],[275,240],[276,228],[277,228],[278,228],[279,228],[280,236],[281,228],[282,228],[283,228],[284,228],[285,241],[286,228],[287,228],[288,228],[289,228],[290,228],[58,235],[59,235],[60,228],[61,235],[62,235],[63,235],[64,235],[65,228],[67,242],[68,235],[66,235],[69,235],[70,235],[71,235],[72,235],[73,235],[74,235],[75,228],[76,235],[77,235],[78,235],[79,235],[80,235],[81,228],[82,235],[83,228],[84,235],[85,235],[86,235],[87,235],[88,228],[90,243],[89,235],[91,235],[92,235],[93,235],[94,235],[95,241],[96,228],[97,228],[111,244],[99,245],[100,235],[101,235],[102,228],[103,235],[104,235],[106,246],[107,235],[108,235],[109,235],[110,235],[112,235],[113,235],[114,235],[115,235],[117,247],[118,235],[119,235],[120,235],[121,228],[122,235],[123,248],[124,248],[125,248],[126,228],[127,235],[128,235],[129,235],[134,235],[130,235],[131,228],[132,235],[133,228],[135,228],[136,235],[137,235],[138,228],[139,228],[140,235],[141,228],[142,235],[143,235],[144,228],[145,235],[146,235],[147,235],[148,235],[149,235],[150,235],[151,235],[152,235],[153,235],[154,235],[155,235],[156,235],[157,235],[158,249],[159,235],[160,235],[161,235],[162,235],[163,235],[164,235],[165,228],[166,228],[167,228],[168,228],[169,228],[170,235],[171,235],[172,235],[173,235],[291,228],[175,250],[250,251],[245,251],[236,252],[182,253],[248,254],[237,255],[251,256],[246,257],[247,254],[249,258],[235,44],[240,2],[180,259],[181,260],[178,2],[179,261],[177,235],[238,262],[57,263],[258,2],[259,2],[260,2],[261,2],[262,2],[263,2],[252,2],[255,236],[254,2],[253,264],[174,265],[239,266],[8,2],[9,2],[13,2],[12,2],[2,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[3,2],[4,2],[45,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[5,2],[29,2],[30,2],[31,2],[32,2],[6,2],[33,2],[34,2],[35,2],[36,2],[7,2],[37,2],[42,2],[43,2],[38,2],[39,2],[40,2],[41,2],[1,2],[44,2],[11,2],[10,2],[452,277],[602,268],[601,269],[455,278],[598,279],[599,280],[454,281]],"semanticDiagnosticsPerFile":[653,651,676,679,47,357,358,387,388,389,393,390,391,355,356,392,371,359,360,361,362,363,373,364,365,366,367,368,369,370,372,380,382,379,385,383,381,377,378,384,386,374,376,375,305,308,304,306,307,410,395,402,399,412,403,409,394,413,416,407,397,415,400,398,408,404,414,401,411,396,406,405,419,418,417,450,48,49,50,52,294,295,421,321,322,422,296,423,424,51,298,299,297,300,301,303,314,315,320,316,317,318,319,327,330,328,329,347,331,332,637,313,311,309,310,312,339,333,342,335,340,338,341,336,337,324,343,325,345,346,334,302,326,344,353,348,354,349,350,351,352,420,434,433,439,435,436,438,437,440,427,428,431,430,429,432,426,442,441,444,443,445,446,447,323,448,425,449,603,604,613,614,615,616,617,619,620,621,618,622,649,606,608,631,627,624,623,628,611,629,630,609,605,610,607,625,633,634,632,635,636,638,640,639,646,612,642,641,644,643,645,626,648,647,596,591,590,592,593,594,595,597,678,656,652,654,655,658,657,659,664,660,663,661,667,671,672,673,674,675,684,662,668,669,183,184,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,185,233,201,202,203,234,204,205,206,207,208,209,210,211,212,213,214,215,217,216,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,685,688,687,686,689,666,665,714,715,690,693,712,713,703,702,700,695,708,706,710,694,707,711,696,697,709,691,698,699,701,705,716,704,692,729,728,723,725,724,717,718,720,722,726,727,719,721,670,730,732,733,497,489,490,491,492,493,494,496,495,734,735,731,459,461,572,576,575,573,574,577,462,474,463,476,478,471,472,473,477,479,464,475,465,467,468,469,470,486,485,580,480,482,481,483,484,579,578,487,498,499,501,546,545,502,543,547,503,504,505,548,542,500,549,506,550,507,530,508,551,509,540,511,512,552,514,516,517,523,524,518,554,541,553,519,520,555,521,513,556,539,557,522,525,526,544,558,559,538,515,560,561,562,563,527,529,531,528,510,532,535,533,534,488,570,564,565,567,568,566,571,569,588,586,587,585,584,583,458,460,456,581,582,466,457,683,681,682,677,537,536,680,46,293,266,244,242,105,56,55,243,176,98,54,53,292,257,256,116,264,265,267,268,269,270,241,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,58,59,60,61,62,63,64,65,67,68,66,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,90,89,91,92,93,94,95,96,97,111,99,100,101,102,103,104,106,107,108,109,110,112,113,114,115,117,118,119,120,121,122,123,124,125,126,127,128,129,134,130,131,132,133,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,291,175,250,245,236,182,248,237,251,246,247,249,235,240,180,181,178,179,177,238,57,258,259,260,261,262,263,252,255,254,253,174,239,8,9,13,12,2,14,15,16,17,18,19,20,21,3,4,45,25,22,23,24,26,27,28,5,29,30,31,32,6,33,34,35,36,7,37,42,43,38,39,40,41,1,44,11,10,452,602,451,601,455,650,589,598,453,599,600,454]},"version":"4.8.4"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/users/dto/creat-users.dto.d.ts b/srcs/requirements/nestjs/api_back/dist/users/dto/creat-users.dto.d.ts new file mode 100644 index 00000000..f240d46a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/users/dto/creat-users.dto.d.ts @@ -0,0 +1,5 @@ +export declare class CreatUsersDto { + userId: string; + username: string; + password: string; +} diff --git a/srcs/requirements/nestjs/api_back/dist/users/dto/creat-users.dto.js b/srcs/requirements/nestjs/api_back/dist/users/dto/creat-users.dto.js new file mode 100644 index 00000000..ad4c5b0c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/users/dto/creat-users.dto.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CreatUsersDto = void 0; +class CreatUsersDto { +} +exports.CreatUsersDto = CreatUsersDto; +//# sourceMappingURL=creat-users.dto.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/users/dto/creat-users.dto.js.map b/srcs/requirements/nestjs/api_back/dist/users/dto/creat-users.dto.js.map new file mode 100644 index 00000000..5a8019ad --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/users/dto/creat-users.dto.js.map @@ -0,0 +1 @@ +{"version":3,"file":"creat-users.dto.js","sourceRoot":"","sources":["../../../src/users/dto/creat-users.dto.ts"],"names":[],"mappings":";;;AAAA,MAAa,aAAa;CAIzB;AAJD,sCAIC"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/users/dto/create-users.dto.d.ts b/srcs/requirements/nestjs/api_back/dist/users/dto/create-users.dto.d.ts new file mode 100644 index 00000000..5d2f981d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/users/dto/create-users.dto.d.ts @@ -0,0 +1,5 @@ +export declare class CreateUsersDto { + readonly name: string; + readonly username: string; + readonly password: string; +} diff --git a/srcs/requirements/nestjs/api_back/dist/users/dto/create-users.dto.js b/srcs/requirements/nestjs/api_back/dist/users/dto/create-users.dto.js new file mode 100644 index 00000000..f6dfedf4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/users/dto/create-users.dto.js @@ -0,0 +1,29 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CreateUsersDto = void 0; +const class_validator_1 = require("class-validator"); +class CreateUsersDto { +} +__decorate([ + (0, class_validator_1.IsString)(), + __metadata("design:type", String) +], CreateUsersDto.prototype, "name", void 0); +__decorate([ + (0, class_validator_1.IsString)(), + __metadata("design:type", String) +], CreateUsersDto.prototype, "username", void 0); +__decorate([ + (0, class_validator_1.IsString)(), + __metadata("design:type", String) +], CreateUsersDto.prototype, "password", void 0); +exports.CreateUsersDto = CreateUsersDto; +//# sourceMappingURL=create-users.dto.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/users/dto/create-users.dto.js.map b/srcs/requirements/nestjs/api_back/dist/users/dto/create-users.dto.js.map new file mode 100644 index 00000000..aae04550 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/users/dto/create-users.dto.js.map @@ -0,0 +1 @@ +{"version":3,"file":"create-users.dto.js","sourceRoot":"","sources":["../../../src/users/dto/create-users.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAA2C;AAE3C,MAAa,cAAc;CAO1B;AANA;IAAC,IAAA,0BAAQ,GAAE;;4CACW;AACtB;IAAC,IAAA,0BAAQ,GAAE;;gDACe;AAC1B;IAAC,IAAA,0BAAQ,GAAE;;gDACe;AAN3B,wCAOC"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/users/dto/update-users.dto.d.ts b/srcs/requirements/nestjs/api_back/dist/users/dto/update-users.dto.d.ts new file mode 100644 index 00000000..0d295057 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/users/dto/update-users.dto.d.ts @@ -0,0 +1,5 @@ +import { CreateUsersDto } from "./create-users.dto"; +declare const UpdateUsersDto_base: import("@nestjs/mapped-types").MappedType>; +export declare class UpdateUsersDto extends UpdateUsersDto_base { +} +export {}; diff --git a/srcs/requirements/nestjs/api_back/dist/users/dto/update-users.dto.js b/srcs/requirements/nestjs/api_back/dist/users/dto/update-users.dto.js new file mode 100644 index 00000000..fe75bce8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/users/dto/update-users.dto.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.UpdateUsersDto = void 0; +const mapped_types_1 = require("@nestjs/mapped-types"); +const create_users_dto_1 = require("./create-users.dto"); +class UpdateUsersDto extends (0, mapped_types_1.PartialType)(create_users_dto_1.CreateUsersDto) { +} +exports.UpdateUsersDto = UpdateUsersDto; +//# sourceMappingURL=update-users.dto.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/users/dto/update-users.dto.js.map b/srcs/requirements/nestjs/api_back/dist/users/dto/update-users.dto.js.map new file mode 100644 index 00000000..79e94a81 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/users/dto/update-users.dto.js.map @@ -0,0 +1 @@ +{"version":3,"file":"update-users.dto.js","sourceRoot":"","sources":["../../../src/users/dto/update-users.dto.ts"],"names":[],"mappings":";;;AAIA,uDAAmD;AACnD,yDAAoD;AAEpD,MAAa,cAAe,SAAQ,IAAA,0BAAW,EAAC,iCAAc,CAAC;CAAE;AAAjE,wCAAiE"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/users/entities/user.entity.d.ts b/srcs/requirements/nestjs/api_back/dist/users/entities/user.entity.d.ts index 65626925..ca4decf4 100644 --- a/srcs/requirements/nestjs/api_back/dist/users/entities/user.entity.d.ts +++ b/srcs/requirements/nestjs/api_back/dist/users/entities/user.entity.d.ts @@ -1,5 +1,6 @@ export declare class User { userId: string; + name: string; username: string; password: string; } diff --git a/srcs/requirements/nestjs/api_back/dist/users/entities/user.entity.js.map b/srcs/requirements/nestjs/api_back/dist/users/entities/user.entity.js.map index 0c8f64f4..1ff4cddd 100644 --- a/srcs/requirements/nestjs/api_back/dist/users/entities/user.entity.js.map +++ b/srcs/requirements/nestjs/api_back/dist/users/entities/user.entity.js.map @@ -1 +1 @@ -{"version":3,"file":"user.entity.js","sourceRoot":"","sources":["../../../src/users/entities/user.entity.ts"],"names":[],"mappings":";;;AAAA,MAAa,IAAI;CAIhB;AAJD,oBAIC"} \ No newline at end of file +{"version":3,"file":"user.entity.js","sourceRoot":"","sources":["../../../src/users/entities/user.entity.ts"],"names":[],"mappings":";;;AAAA,MAAa,IAAI;CAKhB;AALD,oBAKC"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/users/users.controller.d.ts b/srcs/requirements/nestjs/api_back/dist/users/users.controller.d.ts index 29121a76..78730925 100644 --- a/srcs/requirements/nestjs/api_back/dist/users/users.controller.d.ts +++ b/srcs/requirements/nestjs/api_back/dist/users/users.controller.d.ts @@ -1,10 +1,12 @@ +import { CreateUsersDto } from './dto/create-users.dto'; +import { UpdateUsersDto } from './dto/update-users.dto'; import { UsersService } from './users.service'; export declare class UsersController { private readonly usersService; constructor(usersService: UsersService); findAll(query: any): import("./entities/user.entity").User[]; findOne(id: string): import("./entities/user.entity").User; - create(body: any): string; - update(id: string, body: any): string; + create(createUsersDto: CreateUsersDto): string; + update(id: string, usersUpdateDto: UpdateUsersDto): string; remove(id: string): string; } diff --git a/srcs/requirements/nestjs/api_back/dist/users/users.controller.js b/srcs/requirements/nestjs/api_back/dist/users/users.controller.js index ca46cf79..59085293 100644 --- a/srcs/requirements/nestjs/api_back/dist/users/users.controller.js +++ b/srcs/requirements/nestjs/api_back/dist/users/users.controller.js @@ -14,6 +14,8 @@ var __param = (this && this.__param) || function (paramIndex, decorator) { Object.defineProperty(exports, "__esModule", { value: true }); exports.UsersController = void 0; const common_1 = require("@nestjs/common"); +const create_users_dto_1 = require("./dto/create-users.dto"); +const update_users_dto_1 = require("./dto/update-users.dto"); const users_service_1 = require("./users.service"); let UsersController = class UsersController { constructor(usersService) { @@ -25,11 +27,11 @@ let UsersController = class UsersController { findOne(id) { return this.usersService.findOne(id); } - create(body) { - return this.usersService.create(body); + create(createUsersDto) { + return this.usersService.create(createUsersDto); } - update(id, body) { - return this.usersService.update(id, body); + update(id, usersUpdateDto) { + return this.usersService.update(id, usersUpdateDto); } remove(id) { return this.usersService.remove(id); @@ -54,7 +56,7 @@ __decorate([ (0, common_1.HttpCode)(common_1.HttpStatus.GONE), __param(0, (0, common_1.Body)()), __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), + __metadata("design:paramtypes", [create_users_dto_1.CreateUsersDto]), __metadata("design:returntype", void 0) ], UsersController.prototype, "create", null); __decorate([ @@ -62,7 +64,7 @@ __decorate([ __param(0, (0, common_1.Param)('id')), __param(1, (0, common_1.Body)()), __metadata("design:type", Function), - __metadata("design:paramtypes", [String, Object]), + __metadata("design:paramtypes", [String, update_users_dto_1.UpdateUsersDto]), __metadata("design:returntype", void 0) ], UsersController.prototype, "update", null); __decorate([ diff --git a/srcs/requirements/nestjs/api_back/dist/users/users.controller.js.map b/srcs/requirements/nestjs/api_back/dist/users/users.controller.js.map index c166ce57..f26163e8 100644 --- a/srcs/requirements/nestjs/api_back/dist/users/users.controller.js.map +++ b/srcs/requirements/nestjs/api_back/dist/users/users.controller.js.map @@ -1 +1 @@ -{"version":3,"file":"users.controller.js","sourceRoot":"","sources":["../../src/users/users.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAGwB;AAExB,mDAA+C;AAGxC,IAAM,eAAe,GAArB,MAAM,eAAe;IAC3B,YAA6B,YAA0B;QAA1B,iBAAY,GAAZ,YAAY,CAAc;IAAG,CAAC;IAG3D,OAAO,CAAU,KAAK;QAErB,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;IACpC,CAAC;IAGD,OAAO,CAAc,EAAU;QAC9B,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC;IAID,MAAM,CAAS,IAAI;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAGD,MAAM,CAAc,EAAU,EAAU,IAAI;QAC3C,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAGD,MAAM,CAAc,EAAU;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;CACD,CAAA;AA1BA;IAAC,IAAA,YAAG,GAAE;IACG,WAAA,IAAA,cAAK,GAAE,CAAA;;;;8CAGf;AAED;IAAC,IAAA,YAAG,EAAC,KAAK,CAAC;IACF,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;;;;8CAEnB;AAED;IAAC,IAAA,aAAI,GAAE;IACN,IAAA,iBAAQ,EAAC,mBAAU,CAAC,IAAI,CAAC;IAClB,WAAA,IAAA,aAAI,GAAE,CAAA;;;;6CAEb;AAED;IAAC,IAAA,cAAK,EAAC,KAAK,CAAC;IACL,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;IAAc,WAAA,IAAA,aAAI,GAAE,CAAA;;;;6CAEtC;AAED;IAAC,IAAA,eAAM,EAAC,KAAK,CAAC;IACN,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;;;;6CAElB;AA5BW,eAAe;IAD3B,IAAA,mBAAU,EAAC,OAAO,CAAC;qCAEwB,4BAAY;GAD3C,eAAe,CA6B3B;AA7BY,0CAAe"} \ No newline at end of file +{"version":3,"file":"users.controller.js","sourceRoot":"","sources":["../../src/users/users.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAGwB;AACxB,6DAAwD;AACxD,6DAAwD;AAExD,mDAA+C;AAGxC,IAAM,eAAe,GAArB,MAAM,eAAe;IAC3B,YAA6B,YAA0B;QAA1B,iBAAY,GAAZ,YAAY,CAAc;IAAG,CAAC;IAG3D,OAAO,CAAU,KAAK;QAErB,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;IACpC,CAAC;IAGD,OAAO,CAAc,EAAU;QAC9B,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC;IAID,MAAM,CAAS,cAA+B;QAC7C,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACjD,CAAC;IAGD,MAAM,CAAc,EAAU,EAAU,cAA8B;QACrE,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;IACrD,CAAC;IAGD,MAAM,CAAc,EAAU;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;CACD,CAAA;AA1BA;IAAC,IAAA,YAAG,GAAE;IACG,WAAA,IAAA,cAAK,GAAE,CAAA;;;;8CAGf;AAED;IAAC,IAAA,YAAG,EAAC,KAAK,CAAC;IACF,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;;;;8CAEnB;AAED;IAAC,IAAA,aAAI,GAAE;IACN,IAAA,iBAAQ,EAAC,mBAAU,CAAC,IAAI,CAAC;IAClB,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAkB,iCAAc;;6CAE7C;AAED;IAAC,IAAA,cAAK,EAAC,KAAK,CAAC;IACL,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;IAAc,WAAA,IAAA,aAAI,GAAE,CAAA;;6CAAiB,iCAAc;;6CAErE;AAED;IAAC,IAAA,eAAM,EAAC,KAAK,CAAC;IACN,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;;;;6CAElB;AA5BW,eAAe;IAD3B,IAAA,mBAAU,EAAC,OAAO,CAAC;qCAEwB,4BAAY;GAD3C,eAAe,CA6B3B;AA7BY,0CAAe"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/users/users.service.js b/srcs/requirements/nestjs/api_back/dist/users/users.service.js index 78971c8e..4111bfaf 100644 --- a/srcs/requirements/nestjs/api_back/dist/users/users.service.js +++ b/srcs/requirements/nestjs/api_back/dist/users/users.service.js @@ -13,12 +13,14 @@ let UsersService = class UsersService { this.users = [ { userId: '1', - username: 'john', + name: 'John', + username: 'TheBoss', password: 'changeme', }, { userId: '2', - username: 'maria', + name: 'Jane', + username: 'Jane2000', password: 'guess', }, ]; @@ -38,7 +40,7 @@ let UsersService = class UsersService { const user = this.users.push(createUserDto); if (!user) throw new common_1.HttpException(`The user could not be created.`, common_1.HttpStatus.NOT_FOUND); - return 'User has been created'; + return createUserDto.username + ' has been created'; } update(id, updateUserDto) { const index = this.users.findIndex(user => user.userId === id); diff --git a/srcs/requirements/nestjs/api_back/dist/users/users.service.js.map b/srcs/requirements/nestjs/api_back/dist/users/users.service.js.map index 07af5076..06454f6a 100644 --- a/srcs/requirements/nestjs/api_back/dist/users/users.service.js.map +++ b/srcs/requirements/nestjs/api_back/dist/users/users.service.js.map @@ -1 +1 @@ -{"version":3,"file":"users.service.js","sourceRoot":"","sources":["../../src/users/users.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAsG;AAK/F,IAAM,YAAY,GAAlB,MAAM,YAAY;IAAlB;QACE,UAAK,GAAU;YACtB;gBACC,MAAM,EAAE,GAAG;gBACX,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,UAAU;aACpB;YACD;gBACC,MAAM,EAAE,GAAG;gBACX,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,OAAO;aACjB;SACD,CAAC;IAkCH,CAAC;IAhCA,OAAO,CAAC,EAAU;QACjB,MAAM,IAAI,GAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI;YACR,MAAM,IAAI,0BAAiB,CAAC,+BAA+B,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO;QACN,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;YACrB,MAAM,IAAI,sBAAa,CAAC,iBAAiB,EAAC,mBAAU,CAAC,SAAS,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,aAAkB;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI;YACR,MAAM,IAAI,sBAAa,CAAC,gCAAgC,EAAC,mBAAU,CAAC,SAAS,CAAC,CAAC;QAChF,OAAO,uBAAuB,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,EAAU,EAAE,aAAkB;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC;QAClC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,mBAAmB,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,EAAU;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5B,OAAO,uBAAuB,CAAC;IAChC,CAAC;CAED,CAAA;AA9CY,YAAY;IADxB,IAAA,mBAAU,GAAE;GACA,YAAY,CA8CxB;AA9CY,oCAAY"} \ No newline at end of file +{"version":3,"file":"users.service.js","sourceRoot":"","sources":["../../src/users/users.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAsG;AAK/F,IAAM,YAAY,GAAlB,MAAM,YAAY;IAAlB;QACE,UAAK,GAAU;YACtB;gBACC,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,UAAU;aACpB;YACD;gBACC,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,OAAO;aACjB;SACD,CAAC;IAkCH,CAAC;IAhCA,OAAO,CAAC,EAAU;QACjB,MAAM,IAAI,GAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI;YACR,MAAM,IAAI,0BAAiB,CAAC,+BAA+B,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO;QACN,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;YACrB,MAAM,IAAI,sBAAa,CAAC,iBAAiB,EAAC,mBAAU,CAAC,SAAS,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,aAAkB;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI;YACR,MAAM,IAAI,sBAAa,CAAC,gCAAgC,EAAC,mBAAU,CAAC,SAAS,CAAC,CAAC;QAChF,OAAO,aAAa,CAAC,QAAQ,GAAG,mBAAmB,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,EAAU,EAAE,aAAkB;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC;QAClC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,mBAAmB,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,EAAU;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5B,OAAO,uBAAuB,CAAC;IAChC,CAAC;CAED,CAAA;AAhDY,YAAY;IADxB,IAAA,mBAAU,GAAE;GACA,YAAY,CAgDxB;AAhDY,oCAAY"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/users/users/dto/creat-users.dto.d.ts b/srcs/requirements/nestjs/api_back/dist/users/users/dto/creat-users.dto.d.ts new file mode 100644 index 00000000..15590e89 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/users/users/dto/creat-users.dto.d.ts @@ -0,0 +1,2 @@ +export declare class CreatUsersDto { +} diff --git a/srcs/requirements/nestjs/api_back/dist/users/users/dto/creat-users.dto.js b/srcs/requirements/nestjs/api_back/dist/users/users/dto/creat-users.dto.js new file mode 100644 index 00000000..ad4c5b0c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/users/users/dto/creat-users.dto.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CreatUsersDto = void 0; +class CreatUsersDto { +} +exports.CreatUsersDto = CreatUsersDto; +//# sourceMappingURL=creat-users.dto.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/users/users/dto/creat-users.dto.js.map b/srcs/requirements/nestjs/api_back/dist/users/users/dto/creat-users.dto.js.map new file mode 100644 index 00000000..a70cc2f3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/users/users/dto/creat-users.dto.js.map @@ -0,0 +1 @@ +{"version":3,"file":"creat-users.dto.js","sourceRoot":"","sources":["../../../../src/users/users/dto/creat-users.dto.ts"],"names":[],"mappings":";;;AAAA,MAAa,aAAa;CAAG;AAA7B,sCAA6B"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/users/users/dto/create-users.dto.d.ts b/srcs/requirements/nestjs/api_back/dist/users/users/dto/create-users.dto.d.ts new file mode 100644 index 00000000..6e8253dc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/users/users/dto/create-users.dto.d.ts @@ -0,0 +1,4 @@ +export declare class CreateUsersDto { + readonly username: string; + readonly password: string; +} diff --git a/srcs/requirements/nestjs/api_back/dist/users/users/dto/create-users.dto.js b/srcs/requirements/nestjs/api_back/dist/users/users/dto/create-users.dto.js new file mode 100644 index 00000000..19290fca --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/users/users/dto/create-users.dto.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CreateUsersDto = void 0; +class CreateUsersDto { +} +exports.CreateUsersDto = CreateUsersDto; +//# sourceMappingURL=create-users.dto.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/dist/users/users/dto/create-users.dto.js.map b/srcs/requirements/nestjs/api_back/dist/users/users/dto/create-users.dto.js.map new file mode 100644 index 00000000..7de86c95 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/dist/users/users/dto/create-users.dto.js.map @@ -0,0 +1 @@ +{"version":3,"file":"create-users.dto.js","sourceRoot":"","sources":["../../../../src/users/users/dto/create-users.dto.ts"],"names":[],"mappings":";;;AAAA,MAAa,cAAc;CAG1B;AAHD,wCAGC"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/.package-lock.json b/srcs/requirements/nestjs/api_back/node_modules/.package-lock.json index eea656e6..ad7a4281 100644 --- a/srcs/requirements/nestjs/api_back/node_modules/.package-lock.json +++ b/srcs/requirements/nestjs/api_back/node_modules/.package-lock.json @@ -1505,6 +1505,25 @@ } } }, + "node_modules/@nestjs/mapped-types": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-1.2.0.tgz", + "integrity": "sha512-NTFwPZkQWsArQH8QSyFWGZvJ08gR+R4TofglqZoihn/vU+ktHEJjMqsIsADwb7XD97DhiD+TVv5ac+jG33BHrg==", + "peerDependencies": { + "@nestjs/common": "^7.0.8 || ^8.0.0 || ^9.0.0", + "class-transformer": "^0.2.0 || ^0.3.0 || ^0.4.0 || ^0.5.0", + "class-validator": "^0.11.1 || ^0.12.0 || ^0.13.0", + "reflect-metadata": "^0.1.12" + }, + "peerDependenciesMeta": { + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, "node_modules/@nestjs/passport": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/@nestjs/passport/-/passport-9.0.0.tgz", @@ -2043,6 +2062,11 @@ "@types/superagent": "*" } }, + "node_modules/@types/validator": { + "version": "13.7.9", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.9.tgz", + "integrity": "sha512-y5KJ1PjGXPpU4CZ7lThDu31s+FqvzhqwMOR6Go/x6xaQMFjgzwfzfOvCwABsylr/5n8sB1qFQm1Vi7TaCB8P+A==" + }, "node_modules/@types/yargs": { "version": "17.0.13", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz", @@ -3043,6 +3067,20 @@ "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", "dev": true }, + "node_modules/class-transformer": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", + "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==" + }, + "node_modules/class-validator": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.13.2.tgz", + "integrity": "sha512-yBUcQy07FPlGzUjoLuUfIOXzgynnQPPruyK1Ge2B74k9ROwnle1E+NxLWnUv5OLU8hA/qL5leAE9XnXq3byaBw==", + "dependencies": { + "libphonenumber-js": "^1.9.43", + "validator": "^13.7.0" + } + }, "node_modules/cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -5786,6 +5824,11 @@ "node": ">= 0.8.0" } }, + "node_modules/libphonenumber-js": { + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.14.tgz", + "integrity": "sha512-McGS7GV/WjJ2KjfOGhJU1oJn29RYeo7Q+RpANRbUNMQ9gj5XArpbjurSuyYPTejFwbaUojstQ4XyWCrAzGOUXw==" + }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -8034,6 +8077,14 @@ "node": ">=10.12.0" } }, + "node_modules/validator": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", diff --git a/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/.commitlintrc.json b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/.commitlintrc.json new file mode 100644 index 00000000..5c5e64d4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/.commitlintrc.json @@ -0,0 +1,28 @@ +{ + "extends": ["@commitlint/config-angular"], + "rules": { + "subject-case": [ + 2, + "always", + ["sentence-case", "start-case", "pascal-case", "upper-case", "lower-case"] + ], + "type-enum": [ + 2, + "always", + [ + "build", + "chore", + "ci", + "docs", + "feat", + "fix", + "perf", + "refactor", + "revert", + "style", + "test", + "sample" + ] + ] + } +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/.eslintignore b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/.eslintignore new file mode 100644 index 00000000..6dcc4040 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/.eslintignore @@ -0,0 +1,3 @@ +src/**/*.test.ts +src/**/files/** +test/** \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/.eslintrc.js b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/.eslintrc.js new file mode 100644 index 00000000..1bd7409a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/.eslintrc.js @@ -0,0 +1,28 @@ +module.exports = { + parser: '@typescript-eslint/parser', + parserOptions: { + project: 'tsconfig.json', + sourceType: 'module', + }, + plugins: ['@typescript-eslint/eslint-plugin'], + extends: [ + 'plugin:@typescript-eslint/eslint-recommended', + 'plugin:@typescript-eslint/recommended', + 'prettier', + 'prettier/@typescript-eslint', + ], + root: true, + env: { + node: true, + jest: true, + }, + rules: { + '@typescript-eslint/interface-name-prefix': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-use-before-define': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/ban-types': 'off' + }, +}; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/.release-it.json b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/.release-it.json new file mode 100644 index 00000000..40451bf9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/.release-it.json @@ -0,0 +1,8 @@ +{ + "git": { + "commitMessage": "chore(): release v${version}" + }, + "github": { + "release": true + } +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/LICENSE b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/LICENSE new file mode 100644 index 00000000..f188502b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) Kamil Mysliwiec + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/README.md b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/README.md new file mode 100644 index 00000000..cb4d6f1d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/README.md @@ -0,0 +1,70 @@ +

+ Nest Logo +

+ +[travis-image]: https://api.travis-ci.org/nestjs/nest.svg?branch=master +[travis-url]: https://travis-ci.org/nestjs/nest +[linux-image]: https://img.shields.io/travis/nestjs/nest/master.svg?label=linux +[linux-url]: https://travis-ci.org/nestjs/nest + +

A progressive Node.js framework for building efficient and scalable server-side applications.

+

+NPM Version +Package License +NPM Downloads +Travis +Linux +Coverage +Discord +Backers on Open Collective +Sponsors on Open Collective + + +

+ + +## Description + +Mapped Types module for [Nest](https://github.com/nestjs/nest) used by the `@nestjs/graphql` and `@nestjs/swagger` packages. + +## Installation + +```bash +$ npm i --save @nestjs/mapped-types +``` + +## Quick Start + +As you build out features, it's often useful to construct variants on a base entity type. A good example of such a variant is a **Data Transfer Object** (DTO). A Data Transfer Object is an object that is used to encapsulate data, and send it from one part of your application to another. DTO’s help us define the input and output interfaces of our system. + +Let's imagine a real-world example, where we typically need to build both a **create** and **update** variations for the same entity type. + +The create variant may require all fields, while the update variant may make all fields **optional**. Not to mention, both these types can also be variants of an entity type (to some extent). + +That's a lot of redundant code! + +Thus, [NestJS](https://github.com/nestjs/nest) now provides several utility functions that perform type transformations to help us avoid doing this, and make life a little bit easier. + +Available mapped types: + +- `PartialType` - returns a type (class) with all the properties of the input type set to optional (requirement: at least 1 validation decorator applied to each property) +- `PickType` - constructs a new type (class) by picking a set of properties from an input type +- `OmitType` - constructs a type by picking all properties from an input type and then removing a particular set of keys +- `IntersectionType` - combines two types into one new type (class) + +Read more in [this article](https://trilon.io/blog/introducing-mapped-types-for-nestjs). + +## Support + +Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support). + +## Stay in touch + +- Author - [Kamil Myśliwiec](https://twitter.com/kammysliwiec) +- Website - [https://nestjs.com](https://nestjs.com/) +- Twitter - [@nestframework](https://twitter.com/nestframework) + +## License + +Nest is [MIT licensed](LICENSE). diff --git a/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/index.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/index.d.ts new file mode 100644 index 00000000..ad8cd5de --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/index.d.ts @@ -0,0 +1,6 @@ +export * from './intersection-type.helper'; +export * from './mapped-type.interface'; +export * from './omit-type.helper'; +export * from './partial-type.helper'; +export * from './pick-type.helper'; +export { applyIsOptionalDecorator, inheritPropertyInitializers, inheritTransformationMetadata, inheritValidationMetadata, } from './type-helpers.utils'; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/index.js b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/index.js new file mode 100644 index 00000000..1054f9dd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/index.js @@ -0,0 +1,23 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.inheritValidationMetadata = exports.inheritTransformationMetadata = exports.inheritPropertyInitializers = exports.applyIsOptionalDecorator = void 0; +__exportStar(require("./intersection-type.helper"), exports); +__exportStar(require("./mapped-type.interface"), exports); +__exportStar(require("./omit-type.helper"), exports); +__exportStar(require("./partial-type.helper"), exports); +__exportStar(require("./pick-type.helper"), exports); +var type_helpers_utils_1 = require("./type-helpers.utils"); +Object.defineProperty(exports, "applyIsOptionalDecorator", { enumerable: true, get: function () { return type_helpers_utils_1.applyIsOptionalDecorator; } }); +Object.defineProperty(exports, "inheritPropertyInitializers", { enumerable: true, get: function () { return type_helpers_utils_1.inheritPropertyInitializers; } }); +Object.defineProperty(exports, "inheritTransformationMetadata", { enumerable: true, get: function () { return type_helpers_utils_1.inheritTransformationMetadata; } }); +Object.defineProperty(exports, "inheritValidationMetadata", { enumerable: true, get: function () { return type_helpers_utils_1.inheritValidationMetadata; } }); diff --git a/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/intersection-type.helper.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/intersection-type.helper.d.ts new file mode 100644 index 00000000..b7af3ca0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/intersection-type.helper.d.ts @@ -0,0 +1,9 @@ +import { Type } from '@nestjs/common'; +import { MappedType } from './mapped-type.interface'; +declare type UnionToIntersection = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never; +declare type ClassRefsToConstructors = { + [U in keyof T]: T[U] extends Type ? V : never; +}; +declare type Intersection = MappedType[number]>>; +export declare function IntersectionType(...classRefs: T): Intersection; +export {}; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/intersection-type.helper.js b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/intersection-type.helper.js new file mode 100644 index 00000000..020c10ed --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/intersection-type.helper.js @@ -0,0 +1,23 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IntersectionType = void 0; +const type_helpers_utils_1 = require("./type-helpers.utils"); +function IntersectionType(...classRefs) { + class IntersectionClassType { + constructor() { + classRefs.forEach((classRef) => { + (0, type_helpers_utils_1.inheritPropertyInitializers)(this, classRef); + }); + } + } + classRefs.forEach((classRef) => { + (0, type_helpers_utils_1.inheritValidationMetadata)(classRef, IntersectionClassType); + (0, type_helpers_utils_1.inheritTransformationMetadata)(classRef, IntersectionClassType); + }); + const intersectedNames = classRefs.reduce((prev, ref) => prev + ref.name, ''); + Object.defineProperty(IntersectionClassType, 'name', { + value: `Intersection${intersectedNames}`, + }); + return IntersectionClassType; +} +exports.IntersectionType = IntersectionType; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/mapped-type.interface.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/mapped-type.interface.d.ts new file mode 100644 index 00000000..ff6b1e6d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/mapped-type.interface.d.ts @@ -0,0 +1,4 @@ +import { Type } from '@nestjs/common'; +export interface MappedType extends Type { + new (): T; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/mapped-type.interface.js b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/mapped-type.interface.js new file mode 100644 index 00000000..c8ad2e54 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/mapped-type.interface.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/omit-type.helper.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/omit-type.helper.d.ts new file mode 100644 index 00000000..23605fa6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/omit-type.helper.d.ts @@ -0,0 +1,3 @@ +import { Type } from '@nestjs/common'; +import { MappedType } from './mapped-type.interface'; +export declare function OmitType(classRef: Type, keys: readonly K[]): MappedType>; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/omit-type.helper.js b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/omit-type.helper.js new file mode 100644 index 00000000..dfde9298 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/omit-type.helper.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.OmitType = void 0; +const type_helpers_utils_1 = require("./type-helpers.utils"); +function OmitType(classRef, keys) { + const isInheritedPredicate = (propertyKey) => !keys.includes(propertyKey); + class OmitClassType { + constructor() { + (0, type_helpers_utils_1.inheritPropertyInitializers)(this, classRef, isInheritedPredicate); + } + } + (0, type_helpers_utils_1.inheritValidationMetadata)(classRef, OmitClassType, isInheritedPredicate); + (0, type_helpers_utils_1.inheritTransformationMetadata)(classRef, OmitClassType, isInheritedPredicate); + return OmitClassType; +} +exports.OmitType = OmitType; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/partial-type.helper.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/partial-type.helper.d.ts new file mode 100644 index 00000000..f02c1b8f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/partial-type.helper.d.ts @@ -0,0 +1,3 @@ +import { Type } from '@nestjs/common'; +import { MappedType } from './mapped-type.interface'; +export declare function PartialType(classRef: Type): MappedType>; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/partial-type.helper.js b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/partial-type.helper.js new file mode 100644 index 00000000..e2875858 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/partial-type.helper.js @@ -0,0 +1,23 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PartialType = void 0; +const type_helpers_utils_1 = require("./type-helpers.utils"); +function PartialType(classRef) { + class PartialClassType { + constructor() { + (0, type_helpers_utils_1.inheritPropertyInitializers)(this, classRef); + } + } + const propertyKeys = (0, type_helpers_utils_1.inheritValidationMetadata)(classRef, PartialClassType); + (0, type_helpers_utils_1.inheritTransformationMetadata)(classRef, PartialClassType); + if (propertyKeys) { + propertyKeys.forEach((key) => { + (0, type_helpers_utils_1.applyIsOptionalDecorator)(PartialClassType, key); + }); + } + Object.defineProperty(PartialClassType, 'name', { + value: `Partial${classRef.name}`, + }); + return PartialClassType; +} +exports.PartialType = PartialType; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/pick-type.helper.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/pick-type.helper.d.ts new file mode 100644 index 00000000..7617c73d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/pick-type.helper.d.ts @@ -0,0 +1,3 @@ +import { Type } from '@nestjs/common'; +import { MappedType } from './mapped-type.interface'; +export declare function PickType(classRef: Type, keys: readonly K[]): MappedType>; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/pick-type.helper.js b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/pick-type.helper.js new file mode 100644 index 00000000..85156d6d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/pick-type.helper.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PickType = void 0; +const type_helpers_utils_1 = require("./type-helpers.utils"); +function PickType(classRef, keys) { + const isInheritedPredicate = (propertyKey) => keys.includes(propertyKey); + class PickClassType { + constructor() { + (0, type_helpers_utils_1.inheritPropertyInitializers)(this, classRef, isInheritedPredicate); + } + } + (0, type_helpers_utils_1.inheritValidationMetadata)(classRef, PickClassType, isInheritedPredicate); + (0, type_helpers_utils_1.inheritTransformationMetadata)(classRef, PickClassType, isInheritedPredicate); + return PickClassType; +} +exports.PickType = PickType; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/type-helpers.utils.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/type-helpers.utils.d.ts new file mode 100644 index 00000000..66cde8f0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/type-helpers.utils.d.ts @@ -0,0 +1,5 @@ +import { Type } from '@nestjs/common'; +export declare function applyIsOptionalDecorator(targetClass: Function, propertyKey: string): void; +export declare function inheritValidationMetadata(parentClass: Type, targetClass: Function, isPropertyInherited?: (key: string) => boolean): string[] | undefined; +export declare function inheritTransformationMetadata(parentClass: Type, targetClass: Function, isPropertyInherited?: (key: string) => boolean): void; +export declare function inheritPropertyInitializers(target: Record, sourceClass: Type, isPropertyInherited?: (key: string) => boolean): void; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/type-helpers.utils.js b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/type-helpers.utils.js new file mode 100644 index 00000000..3e9f0325 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/dist/type-helpers.utils.js @@ -0,0 +1,127 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.inheritPropertyInitializers = exports.inheritTransformationMetadata = exports.inheritValidationMetadata = exports.applyIsOptionalDecorator = void 0; +const common_1 = require("@nestjs/common"); +const logger = new common_1.Logger('MappedTypes'); +function applyIsOptionalDecorator(targetClass, propertyKey) { + if (!isClassValidatorAvailable()) { + return; + } + const classValidator = require('class-validator'); + const decoratorFactory = classValidator.IsOptional(); + decoratorFactory(targetClass.prototype, propertyKey); +} +exports.applyIsOptionalDecorator = applyIsOptionalDecorator; +function inheritValidationMetadata(parentClass, targetClass, isPropertyInherited) { + if (!isClassValidatorAvailable()) { + return; + } + try { + const classValidator = require('class-validator'); + const metadataStorage = classValidator.getMetadataStorage + ? classValidator.getMetadataStorage() + : classValidator.getFromContainer(classValidator.MetadataStorage); + const getTargetValidationMetadatasArgs = [parentClass, null, false, false]; + const targetMetadata = metadataStorage.getTargetValidationMetadatas(...getTargetValidationMetadatasArgs); + return targetMetadata + .filter(({ propertyName }) => !isPropertyInherited || isPropertyInherited(propertyName)) + .map((value) => { + const originalType = Reflect.getMetadata('design:type', parentClass.prototype, value.propertyName); + if (originalType) { + Reflect.defineMetadata('design:type', originalType, targetClass.prototype, value.propertyName); + } + metadataStorage.addValidationMetadata(Object.assign(Object.assign({}, value), { target: targetClass })); + return value.propertyName; + }); + } + catch (err) { + logger.error(`Validation ("class-validator") metadata cannot be inherited for "${parentClass.name}" class.`); + logger.error(err); + } +} +exports.inheritValidationMetadata = inheritValidationMetadata; +function inheritTransformationMetadata(parentClass, targetClass, isPropertyInherited) { + if (!isClassTransformerAvailable()) { + return; + } + try { + const transformMetadataKeys = [ + '_excludeMetadatas', + '_exposeMetadatas', + '_transformMetadatas', + '_typeMetadatas', + ]; + transformMetadataKeys.forEach((key) => inheritTransformerMetadata(key, parentClass, targetClass, isPropertyInherited)); + } + catch (err) { + logger.error(`Transformer ("class-transformer") metadata cannot be inherited for "${parentClass.name}" class.`); + logger.error(err); + } +} +exports.inheritTransformationMetadata = inheritTransformationMetadata; +function inheritTransformerMetadata(key, parentClass, targetClass, isPropertyInherited) { + let classTransformer; + try { + classTransformer = require('class-transformer/cjs/storage'); + } + catch (_a) { + classTransformer = require('class-transformer/storage'); + } + const metadataStorage = classTransformer.defaultMetadataStorage; + while (parentClass && parentClass !== Object) { + if (metadataStorage[key].has(parentClass)) { + const metadataMap = metadataStorage[key]; + const parentMetadata = metadataMap.get(parentClass); + const targetMetadataEntries = Array.from(parentMetadata.entries()) + .filter(([key]) => !isPropertyInherited || isPropertyInherited(key)) + .map(([key, metadata]) => { + if (Array.isArray(metadata)) { + const targetMetadata = metadata.map((item) => (Object.assign(Object.assign({}, item), { target: targetClass }))); + return [key, targetMetadata]; + } + return [key, Object.assign(Object.assign({}, metadata), { target: targetClass })]; + }); + if (metadataMap.has(targetClass)) { + const existingRules = metadataMap.get(targetClass).entries(); + metadataMap.set(targetClass, new Map([...existingRules, ...targetMetadataEntries])); + } + else { + metadataMap.set(targetClass, new Map(targetMetadataEntries)); + } + } + parentClass = Object.getPrototypeOf(parentClass); + } +} +function isClassValidatorAvailable() { + try { + require('class-validator'); + return true; + } + catch (_a) { + return false; + } +} +function isClassTransformerAvailable() { + try { + require('class-transformer'); + return true; + } + catch (_a) { + return false; + } +} +function inheritPropertyInitializers(target, sourceClass, isPropertyInherited = (key) => true) { + try { + const tempInstance = new sourceClass(); + const propertyNames = Object.getOwnPropertyNames(tempInstance); + propertyNames + .filter((propertyName) => typeof tempInstance[propertyName] !== 'undefined' && + typeof target[propertyName] === 'undefined') + .filter((propertyName) => isPropertyInherited(propertyName)) + .forEach((propertyName) => { + target[propertyName] = tempInstance[propertyName]; + }); + } + catch (_a) { } +} +exports.inheritPropertyInitializers = inheritPropertyInitializers; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/index.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/index.d.ts new file mode 100644 index 00000000..5703fb5f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/index.d.ts @@ -0,0 +1 @@ +export * from './dist'; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/index.js b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/index.js new file mode 100644 index 00000000..9368dd39 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/index.js @@ -0,0 +1,6 @@ +"use strict"; +function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; +} +exports.__esModule = true; +__export(require("./dist")); diff --git a/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/package.json b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/package.json new file mode 100644 index 00000000..b503ff2f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@nestjs/mapped-types/package.json @@ -0,0 +1,73 @@ +{ + "name": "@nestjs/mapped-types", + "version": "1.2.0", + "description": "Nest - modern, fast, powerful node.js web framework (@mapped-types)", + "author": "Kamil Mysliwiec", + "license": "MIT", + "url": "https://github.com/nestjs/mapped-types#readme", + "scripts": { + "build": "rimraf -rf dist && tsc -p tsconfig.json", + "lint": "eslint 'lib/**/*.ts' --fix", + "format": "prettier \"{lib,tests}/**/*.ts\" --write", + "prepublish:npm": "npm run build", + "publish:npm": "npm publish --access public", + "prepublish:next": "npm run build", + "publish:next": "npm publish --access public --tag next", + "test:e2e": "jest --config ./tests/jest-e2e.json --runInBand", + "test:e2e:dev": "jest --config ./tests/jest-e2e.json --runInBand --watch", + "prerelease": "npm run build", + "release": "release-it" + }, + "devDependencies": { + "@commitlint/cli": "17.1.2", + "@commitlint/config-angular": "17.1.0", + "@nestjs/common": "9.1.2", + "@types/jest": "29.1.0", + "@types/node": "16.11.62", + "@typescript-eslint/eslint-plugin": "5.38.1", + "@typescript-eslint/parser": "5.38.1", + "class-transformer": "0.5.1", + "class-validator": "0.13.2", + "eslint": "8.24.0", + "eslint-config-prettier": "8.5.0", + "eslint-plugin-import": "2.26.0", + "husky": "8.0.1", + "jest": "29.1.1", + "lint-staged": "13.0.3", + "prettier": "2.7.1", + "reflect-metadata": "0.1.13", + "release-it": "15.4.2", + "rimraf": "3.0.2", + "ts-jest": "29.0.3", + "typescript": "4.8.4" + }, + "peerDependencies": { + "@nestjs/common": "^7.0.8 || ^8.0.0 || ^9.0.0", + "class-transformer": "^0.2.0 || ^0.3.0 || ^0.4.0 || ^0.5.0", + "class-validator": "^0.11.1 || ^0.12.0 || ^0.13.0", + "reflect-metadata": "^0.1.12" + }, + "peerDependenciesMeta": { + "class-validator": { + "optional": true + }, + "class-transformer": { + "optional": true + } + }, + "lint-staged": { + "*.ts": [ + "prettier --write" + ] + }, + "husky": { + "hooks": { + "commit-msg": "commitlint -c .commitlintrc.json -E HUSKY_GIT_PARAMS", + "pre-commit": "lint-staged" + } + }, + "repository": { + "type": "git", + "url": "https://github.com/nestjs/mapped-types" + } +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/LICENSE b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/LICENSE new file mode 100755 index 00000000..9e841e7a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/README.md b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/README.md new file mode 100755 index 00000000..4db5ed76 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/README.md @@ -0,0 +1,16 @@ +# Installation +> `npm install --save @types/validator` + +# Summary +This package contains type definitions for validator.js (https://github.com/validatorjs/validator.js). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/validator. + +### Additional Details + * Last updated: Sat, 22 Oct 2022 03:33:10 GMT + * Dependencies: none + * Global values: `validator` + +# Credits +These definitions were written by [tgfjt](https://github.com/tgfjt), [Ilya Mochalov](https://github.com/chrootsu), [Ayman Nedjmeddine](https://github.com/IOAyman), [Louay Alakkad](https://github.com/louy), [Bonggyun Lee](https://github.com/deptno), [Naoto Yokoyama](https://github.com/builtinnya), [Philipp Katz](https://github.com/qqilihq), [Jace Warren](https://github.com/keatz55), [Munif Tanjim](https://github.com/MunifTanjim), [Vlad Poluch](https://github.com/vlapo), and [Piotr Błażejewicz](https://github.com/peterblazejewicz). diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/blacklist.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/blacklist.d.ts new file mode 100755 index 00000000..8bde50e6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/blacklist.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.blacklist; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/contains.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/contains.d.ts new file mode 100755 index 00000000..d73ccbd4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/contains.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.contains; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/equals.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/equals.d.ts new file mode 100755 index 00000000..d3893c57 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/equals.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.equals; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/escape.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/escape.d.ts new file mode 100755 index 00000000..0e884705 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/escape.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.escape; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isAfter.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isAfter.d.ts new file mode 100755 index 00000000..2855482b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isAfter.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isAfter; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isAlpha.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isAlpha.d.ts new file mode 100755 index 00000000..98d6ab28 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isAlpha.d.ts @@ -0,0 +1,3 @@ +import validator from '../../'; +export type AlphaLocale = validator.AlphaLocale; +export default validator.isAlpha; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isAlphanumeric.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isAlphanumeric.d.ts new file mode 100755 index 00000000..00b70278 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isAlphanumeric.d.ts @@ -0,0 +1,3 @@ +import validator from '../../'; +export type AlphanumericLocale = validator.AlphanumericLocale; +export default validator.isAlphanumeric; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isAscii.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isAscii.d.ts new file mode 100755 index 00000000..a37c0957 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isAscii.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isAscii; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBIC.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBIC.d.ts new file mode 100755 index 00000000..07c67d02 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBIC.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isBIC; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBase32.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBase32.d.ts new file mode 100755 index 00000000..bdd9dab1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBase32.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isBase32; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBase58.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBase58.d.ts new file mode 100755 index 00000000..83362dac --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBase58.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isBase58; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBase64.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBase64.d.ts new file mode 100755 index 00000000..f05c5e7f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBase64.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isBase64; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBefore.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBefore.d.ts new file mode 100755 index 00000000..34bfa164 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBefore.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isBefore; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBoolean.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBoolean.d.ts new file mode 100755 index 00000000..83a0b24a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBoolean.d.ts @@ -0,0 +1,3 @@ +import isBoolean, { Options } from '../../lib/isBoolean'; +export default isBoolean; +export { Options }; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBtcAddress.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBtcAddress.d.ts new file mode 100755 index 00000000..37d50dca --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isBtcAddress.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isBtcAddress; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isByteLength.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isByteLength.d.ts new file mode 100755 index 00000000..190a5083 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isByteLength.d.ts @@ -0,0 +1,3 @@ +import validator from '../../'; +export type IsByteLengthOptions = validator.IsByteLengthOptions; +export default validator.isByteLength; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isCreditCard.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isCreditCard.d.ts new file mode 100755 index 00000000..a1a8ca47 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isCreditCard.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isCreditCard; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isCurrency.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isCurrency.d.ts new file mode 100755 index 00000000..dbc0fd74 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isCurrency.d.ts @@ -0,0 +1,3 @@ +import validator from '../../'; +export type IsCurrencyOptions = validator.IsCurrencyOptions; +export default validator.isCurrency; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isDataURI.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isDataURI.d.ts new file mode 100755 index 00000000..21461a33 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isDataURI.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isDataURI; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isDate.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isDate.d.ts new file mode 100755 index 00000000..0b5e396d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isDate.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isDate; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isDecimal.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isDecimal.d.ts new file mode 100755 index 00000000..497062f9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isDecimal.d.ts @@ -0,0 +1,4 @@ +import validator from '../../'; +export type IsDecimalOptions = validator.IsDecimalOptions; +export type DecimalLocale = validator.DecimalLocale; +export default validator.isDecimal; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isDivisibleBy.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isDivisibleBy.d.ts new file mode 100755 index 00000000..93e6b7fe --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isDivisibleBy.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isDivisibleBy; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isEAN.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isEAN.d.ts new file mode 100755 index 00000000..4f071da3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isEAN.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isEAN; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isEmail.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isEmail.d.ts new file mode 100755 index 00000000..67a09161 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isEmail.d.ts @@ -0,0 +1,3 @@ +import isEmail, { IsEmailOptions } from '../../lib/isEmail'; +export default isEmail; +export { IsEmailOptions }; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isEmpty.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isEmpty.d.ts new file mode 100755 index 00000000..948e1357 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isEmpty.d.ts @@ -0,0 +1,3 @@ +import validator from '../../'; +export type IsEmptyOptions = validator.IsEmptyOptions; +export default validator.isEmpty; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isEthereumAddress.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isEthereumAddress.d.ts new file mode 100755 index 00000000..bb9ebdf7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isEthereumAddress.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isEthereumAddress; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isFQDN.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isFQDN.d.ts new file mode 100755 index 00000000..551f3db7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isFQDN.d.ts @@ -0,0 +1,3 @@ +import isFQDN, { IsFQDNOptions } from '../../lib/isFQDN'; +export default isFQDN; +export { IsFQDNOptions }; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isFloat.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isFloat.d.ts new file mode 100755 index 00000000..979e97dd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isFloat.d.ts @@ -0,0 +1,4 @@ +import validator from '../../'; +export type FloatLocale = validator.FloatLocale; +export type IsFloatOptions = validator.IsFloatOptions; +export default validator.isFloat; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isFullWidth.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isFullWidth.d.ts new file mode 100755 index 00000000..19c496c6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isFullWidth.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isFullWidth; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isHSL.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isHSL.d.ts new file mode 100755 index 00000000..9ab97e60 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isHSL.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isHSL; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isHalfWidth.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isHalfWidth.d.ts new file mode 100755 index 00000000..f46548dd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isHalfWidth.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isHalfWidth; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isHash.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isHash.d.ts new file mode 100755 index 00000000..802646a7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isHash.d.ts @@ -0,0 +1,3 @@ +import validator from '../../'; +export type HashAlgorithm = validator.HashAlgorithm; +export default validator.isHash; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isHexColor.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isHexColor.d.ts new file mode 100755 index 00000000..f180236f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isHexColor.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isHexColor; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isHexadecimal.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isHexadecimal.d.ts new file mode 100755 index 00000000..92318b8b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isHexadecimal.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isHexadecimal; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isIBAN.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isIBAN.d.ts new file mode 100755 index 00000000..beb48865 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isIBAN.d.ts @@ -0,0 +1,3 @@ +import isIBAN, { locales } from '../../lib/isIBAN'; +export default isIBAN; +export { locales }; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isIP.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isIP.d.ts new file mode 100755 index 00000000..70c309ff --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isIP.d.ts @@ -0,0 +1,3 @@ +import validator from '../../'; +export type IPVersion = validator.IPVersion; +export default validator.isIP; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isIPRange.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isIPRange.d.ts new file mode 100755 index 00000000..eb12f936 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isIPRange.d.ts @@ -0,0 +1,3 @@ +import validator from '../../'; +export type IPVersion = validator.IPVersion; +export default validator.isIPRange; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISBN.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISBN.d.ts new file mode 100755 index 00000000..6e6154e6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISBN.d.ts @@ -0,0 +1,3 @@ +import validator from '../../'; +export type ISBNVersion = validator.ISBNVersion; +export default validator.isISBN; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISIN.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISIN.d.ts new file mode 100755 index 00000000..84fbe65d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISIN.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isISIN; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISO31661Alpha2.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISO31661Alpha2.d.ts new file mode 100755 index 00000000..4d77d5b6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISO31661Alpha2.d.ts @@ -0,0 +1,3 @@ +import isISO31661Alpha2, { CountryCodes } from '../../lib/isISO31661Alpha2'; +export default isISO31661Alpha2; +export { CountryCodes }; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISO31661Alpha3.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISO31661Alpha3.d.ts new file mode 100755 index 00000000..2e823068 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISO31661Alpha3.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isISO31661Alpha3; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISO4217.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISO4217.d.ts new file mode 100755 index 00000000..e17ebb3b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISO4217.d.ts @@ -0,0 +1,3 @@ +import isISO4217, { CurrencyCodes } from '../../lib/isISO4217'; +export default isISO4217; +export { CurrencyCodes }; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISO8601.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISO8601.d.ts new file mode 100755 index 00000000..b0388abb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISO8601.d.ts @@ -0,0 +1,3 @@ +import validator from '../../'; +export type IsISO8601Options = validator.IsISO8601Options; +export default validator.isISO8601; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISRC.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISRC.d.ts new file mode 100755 index 00000000..8af68148 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISRC.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isISRC; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISSN.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISSN.d.ts new file mode 100755 index 00000000..dcff5102 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isISSN.d.ts @@ -0,0 +1,3 @@ +import validator from '../../'; +export type IsISSNOptions = validator.IsISSNOptions; +export default validator.isISSN; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isIdentityCard.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isIdentityCard.d.ts new file mode 100755 index 00000000..902eb0ef --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isIdentityCard.d.ts @@ -0,0 +1,3 @@ +import validator from '../../'; +export type IdentityCardLocale = validator.IdentityCardLocale; +export default validator.isIdentityCard; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isIn.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isIn.d.ts new file mode 100755 index 00000000..9f0119ed --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isIn.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isIn; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isInt.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isInt.d.ts new file mode 100755 index 00000000..42a77cf4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isInt.d.ts @@ -0,0 +1,3 @@ +import validator from '../../'; +export type IsIntOptions = validator.IsIntOptions; +export default validator.isInt; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isJSON.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isJSON.d.ts new file mode 100755 index 00000000..791d79eb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isJSON.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isJSON; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isJWT.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isJWT.d.ts new file mode 100755 index 00000000..632934d0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isJWT.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isJWT; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isLatLong.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isLatLong.d.ts new file mode 100755 index 00000000..2204dcdd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isLatLong.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isLatLong; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isLength.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isLength.d.ts new file mode 100755 index 00000000..87e051f1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isLength.d.ts @@ -0,0 +1,3 @@ +import validator from '../../'; +export type IsLengthOptions = validator.IsLengthOptions; +export default validator.isLength; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isLocale.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isLocale.d.ts new file mode 100755 index 00000000..d12d4613 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isLocale.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isLocale; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isLowercase.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isLowercase.d.ts new file mode 100755 index 00000000..42927433 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isLowercase.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isLowercase; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMACAddress.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMACAddress.d.ts new file mode 100755 index 00000000..68fd9fa2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMACAddress.d.ts @@ -0,0 +1,3 @@ +import validator from '../../'; +export type IsMACAddressOptions = validator.IsMACAddressOptions; +export default validator.isMACAddress; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMD5.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMD5.d.ts new file mode 100755 index 00000000..6ab4a54e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMD5.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isMD5; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMagnetURI.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMagnetURI.d.ts new file mode 100755 index 00000000..2d38c9f3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMagnetURI.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isMagnetURI; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMimeType.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMimeType.d.ts new file mode 100755 index 00000000..70fa51ce --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMimeType.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isMimeType; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMobilePhone.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMobilePhone.d.ts new file mode 100755 index 00000000..9f9811ab --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMobilePhone.d.ts @@ -0,0 +1,4 @@ +import validator from '../../'; +export type MobilePhoneLocale = validator.MobilePhoneLocale; +export type IsMobilePhoneOptions = validator.IsMobilePhoneOptions; +export default validator.isMobilePhone; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMongoId.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMongoId.d.ts new file mode 100755 index 00000000..0d1e2833 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMongoId.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isMongoId; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMultibyte.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMultibyte.d.ts new file mode 100755 index 00000000..e31bbd1f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isMultibyte.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isMultibyte; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isNumeric.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isNumeric.d.ts new file mode 100755 index 00000000..1c234831 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isNumeric.d.ts @@ -0,0 +1,3 @@ +import validator from '../../'; +export type IsNumericOptions = validator.IsNumericOptions; +export default validator.isNumeric; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isOctal.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isOctal.d.ts new file mode 100755 index 00000000..a8f29689 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isOctal.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isOctal; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isPassportNumber.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isPassportNumber.d.ts new file mode 100755 index 00000000..8cba3b55 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isPassportNumber.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isPassportNumber; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isPort.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isPort.d.ts new file mode 100755 index 00000000..e99bac5a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isPort.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isPort; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isPostalCode.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isPostalCode.d.ts new file mode 100755 index 00000000..aa48d6c4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isPostalCode.d.ts @@ -0,0 +1,3 @@ +import validator from '../../'; +export type PostalCodeLocale = validator.PostalCodeLocale; +export default validator.isPostalCode; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isRFC3339.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isRFC3339.d.ts new file mode 100755 index 00000000..a8aa8577 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isRFC3339.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isRFC3339; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isRgbColor.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isRgbColor.d.ts new file mode 100755 index 00000000..46a3dd4a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isRgbColor.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isRgbColor; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isSemVer.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isSemVer.d.ts new file mode 100755 index 00000000..49b77a8c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isSemVer.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isSemVer; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isSlug.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isSlug.d.ts new file mode 100755 index 00000000..71977ca9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isSlug.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isSlug; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isStrongPassword.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isStrongPassword.d.ts new file mode 100755 index 00000000..eb71ce15 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isStrongPassword.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isStrongPassword; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isSurrogatePair.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isSurrogatePair.d.ts new file mode 100755 index 00000000..f9504ddd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isSurrogatePair.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isSurrogatePair; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isTaxID.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isTaxID.d.ts new file mode 100755 index 00000000..3d16e337 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isTaxID.d.ts @@ -0,0 +1,2 @@ +import validator from '../..'; +export default validator.isTaxID; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isURL.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isURL.d.ts new file mode 100755 index 00000000..6fde1a8b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isURL.d.ts @@ -0,0 +1,3 @@ +import isURL, { IsURLOptions } from '../../lib/isURL'; +export default isURL; +export { IsURLOptions }; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isUUID.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isUUID.d.ts new file mode 100755 index 00000000..c7c0e204 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isUUID.d.ts @@ -0,0 +1,3 @@ +import validator from '../../'; +export type UUIDVersion = validator.UUIDVersion; +export default validator.isUUID; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isUppercase.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isUppercase.d.ts new file mode 100755 index 00000000..cde0b40e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isUppercase.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isUppercase; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isVAT.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isVAT.d.ts new file mode 100755 index 00000000..75769528 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isVAT.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isVAT; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isVariableWidth.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isVariableWidth.d.ts new file mode 100755 index 00000000..cd63c19d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isVariableWidth.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isVariableWidth; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isWhitelisted.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isWhitelisted.d.ts new file mode 100755 index 00000000..830b673d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/isWhitelisted.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.isWhitelisted; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/ltrim.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/ltrim.d.ts new file mode 100755 index 00000000..08c90ed1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/ltrim.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.ltrim; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/matches.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/matches.d.ts new file mode 100755 index 00000000..e1096ed9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/matches.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.matches; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/normalizeEmail.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/normalizeEmail.d.ts new file mode 100755 index 00000000..bd94dab3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/normalizeEmail.d.ts @@ -0,0 +1,3 @@ +import validator from '../../'; +export type NormalizeEmailOptions = validator.NormalizeEmailOptions; +export default validator.normalizeEmail; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/rtrim.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/rtrim.d.ts new file mode 100755 index 00000000..bbcfc39a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/rtrim.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.rtrim; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/stripLow.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/stripLow.d.ts new file mode 100755 index 00000000..52ea7321 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/stripLow.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.stripLow; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/toBoolean.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/toBoolean.d.ts new file mode 100755 index 00000000..e7b6a9f6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/toBoolean.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.toBoolean; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/toDate.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/toDate.d.ts new file mode 100755 index 00000000..37862b76 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/toDate.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.toDate; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/toFloat.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/toFloat.d.ts new file mode 100755 index 00000000..9e141ac4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/toFloat.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.toFloat; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/toInt.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/toInt.d.ts new file mode 100755 index 00000000..330e54fb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/toInt.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.toInt; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/trim.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/trim.d.ts new file mode 100755 index 00000000..87bdb7ad --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/trim.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.trim; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/unescape.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/unescape.d.ts new file mode 100755 index 00000000..d3182e06 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/unescape.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.unescape; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/whitelist.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/whitelist.d.ts new file mode 100755 index 00000000..566dcf29 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/es/lib/whitelist.d.ts @@ -0,0 +1,2 @@ +import validator from '../../'; +export default validator.whitelist; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/index.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/index.d.ts new file mode 100755 index 00000000..2a41afff --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/index.d.ts @@ -0,0 +1,1315 @@ +// Type definitions for validator.js 13.7 +// Project: https://github.com/validatorjs/validator.js +// Definitions by: tgfjt +// Ilya Mochalov +// Ayman Nedjmeddine +// Louay Alakkad +// Bonggyun Lee +// Naoto Yokoyama +// Philipp Katz +// Jace Warren +// Munif Tanjim +// Vlad Poluch +// Piotr Błażejewicz +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +import * as _isBoolean from './lib/isBoolean'; +import * as _isEmail from './lib/isEmail'; +import * as _isFQDN from './lib/isFQDN'; +import * as _isIBAN from './lib/isIBAN'; +import * as _isISO31661Alpha2 from './lib/isISO31661Alpha2'; +import * as _isISO4217 from './lib/isISO4217'; +import * as _isURL from './lib/isURL'; +import * as _isTaxID from './lib/isTaxID'; + +declare namespace validator { + const version: string; + + /****************** + *** Validators *** + ******************/ + + /** + * Check if the string contains the seed. + * + * @param seed - Seed + */ + function contains(str: string, seed: any): boolean; + + /** + * Check if the string matches the comparison. + * + * @param comparison - String to compare + */ + function equals(str: string, comparison: string): boolean; + + /** + * Check if the string is a date that's after the specified date. + * + * @param [date] - Date string (defaults to now) + */ + function isAfter(str: string, date?: string): boolean; + + type AlphaLocale = + | 'en-US' + | 'bg-BG' + | 'cs-CZ' + | 'da-DK' + | 'de-DE' + | 'el-GR' + | 'es-AR' + | 'es-ES' + | 'fr-FR' + | 'it-IT' + | 'nb-NO' + | 'nl-NL' + | 'nn-NO' + | 'hu-HU' + | 'pl-PL' + | 'pt-PT' + | 'ru-RU' + | 'sl-SI' + | 'sk-SK' + | 'sr-RS@latin' + | 'sr-RS' + | 'sv-SE' + | 'tr-TR' + | 'uk-UA' + | 'ku-IQ' + | 'ar' + | 'he' + | 'fa-IR' + | 'en-AU' + | 'en-GB' + | 'en-HK' + | 'en-IN' + | 'en-NZ' + | 'en-ZA' + | 'en-ZM' + | 'ar-AE' + | 'ar-BH' + | 'ar-DZ' + | 'ar-EG' + | 'ar-IQ' + | 'ar-JO' + | 'ar-KW' + | 'ar-LB' + | 'ar-LY' + | 'ar-MA' + | 'ar-QM' + | 'ar-QA' + | 'ar-SA' + | 'ar-SD' + | 'ar-SY' + | 'ar-TN' + | 'ar-YE' + | 'pt-BR' + | 'pl-Pl'; + + const isAlphaLocales: AlphaLocale[]; + + interface IsAlphaOptions { + /** + * @default undefined + */ + ignore?: string | RegExp | undefined; + } + + /** + * Check if the string contains only letters (a-zA-Z). + * + * @param [locale] - AlphaLocale + * @param [options] - IsAlphaOptions + */ + function isAlpha(str: string, locale?: AlphaLocale, options?: IsAlphaOptions): boolean; + + type AlphanumericLocale = + | 'en-US' + | 'bg-BG' + | 'cs-CZ' + | 'da-DK' + | 'de-DE' + | 'el-GR' + | 'es-AR' + | 'es-ES' + | 'fr-FR' + | 'it-IT' + | 'hu-HU' + | 'nb-NO' + | 'nl-NL' + | 'nn-NO' + | 'pl-PL' + | 'pt-PT' + | 'ru-RU' + | 'sl-SI' + | 'sk-SK' + | 'sr-RS@latin' + | 'sr-RS' + | 'sv-SE' + | 'tr-TR' + | 'uk-UA' + | 'ku-IQ' + | 'ar' + | 'he' + | 'fa-IR' + | 'en-AU' + | 'en-GB' + | 'en-HK' + | 'en-IN' + | 'en-NZ' + | 'en-ZA' + | 'en-ZM' + | 'ar-AE' + | 'ar-BH' + | 'ar-DZ' + | 'ar-EG' + | 'ar-IQ' + | 'ar-JO' + | 'ar-KW' + | 'ar-LB' + | 'ar-LY' + | 'ar-MA' + | 'ar-QM' + | 'ar-QA' + | 'ar-SA' + | 'ar-SD' + | 'ar-SY' + | 'ar-TN' + | 'ar-YE' + | 'pt-BR' + | 'pl-Pl'; + + const isAlphanumericLocales: AlphanumericLocale[]; + + interface IsAlphanumericOptions { + /** + * @default undefined + */ + ignore?: string | RegExp | undefined; + } + + /** + * Check if the string contains only letters and numbers. + * + * @param [locale] - AlphanumericLocale + * @param [options] - IsAlphanumericOptions + */ + function isAlphanumeric(str: string, locale?: AlphanumericLocale, options?: IsAlphanumericOptions): boolean; + + /** + * Check if the string contains ASCII chars only. + */ + function isAscii(str: string): boolean; + + /** + * Check if a string is base32 encoded. + */ + function isBase32(str: string): boolean; + /** + * check if a string is base58 encoded + */ + function isBase58(str: string): boolean; + + interface IsBase64Options { + /** + * @default false + */ + urlSafe?: boolean | undefined; + } + + /** + * Check if a string is base64 encoded. + * + * @param [options] - Options + */ + function isBase64(str: string, options?: IsBase64Options): boolean; + + /** + * Check if the string is a date that's before the specified date. + * + * @param [date] - Date string (defaults to now) + */ + function isBefore(str: string, date?: string): boolean; + + const isIBAN: typeof _isIBAN.default; + const ibanLocales: typeof _isIBAN.locales; + + /** + * Check if a string is a BIC (Bank Identification Code) or SWIFT code. + */ + function isBIC(str: string): boolean; + + const isBoolean: typeof _isBoolean.default; + + interface IsByteLengthOptions { + /** + * @default 0 + */ + min?: number | undefined; + /** + * @default undefined + */ + max?: number | undefined; + } + + /** + * Check if the string's length (in UTF-8 bytes) falls in a range. + * + * @param [options] - Options + */ + function isByteLength(str: string, options?: IsByteLengthOptions): boolean; + + /** + * Check if the string is a credit card. + */ + function isCreditCard(str: string): boolean; + + interface IsCurrencyOptions { + /** + * @default '$' + */ + symbol?: string | undefined; + /** + * @default false + */ + require_symbol?: boolean | undefined; + /** + * @default false + */ + allow_space_after_symbol?: boolean | undefined; + /** + * @default false + */ + symbol_after_digits?: boolean | undefined; + /** + * @default true + */ + allow_negatives?: boolean | undefined; + /** + * @default false + */ + parens_for_negatives?: boolean | undefined; + /** + * @default false + */ + negative_sign_before_digits?: boolean | undefined; + /** + * @default false + */ + negative_sign_after_digits?: boolean | undefined; + /** + * @default false + */ + allow_negative_sign_placeholder?: boolean | undefined; + /** + * @default ',' + */ + thousands_separator?: string | undefined; + /** + * @default '.' + */ + decimal_separator?: string | undefined; + /** + * @default true + */ + allow_decimal?: boolean | undefined; + /** + * @default false + */ + require_decimal?: boolean | undefined; + /** + * The array `digits_after_decimal` is filled with the exact number of digits allowed not a range, for example a range `1` to `3` will be given as `[1, 2, 3]`. + * + * @default [2] + */ + digits_after_decimal?: number[] | undefined; + /** + * @default false + */ + allow_space_after_digits?: boolean | undefined; + } + + /** + * Check if the string is a valid currency amount. + * + * @param [options] - Options + */ + function isCurrency(str: string, options?: IsCurrencyOptions): boolean; + + /** + * Check if the string is an [Ethereum](https://ethereum.org/) address using basic regex. Does not validate address checksums. + */ + function isEthereumAddress(str: string): boolean; + + /** + * Check if the string is a valid BTC address. + */ + function isBtcAddress(str: string): boolean; + + /** + * Check if the string is a [data uri format](https://developer.mozilla.org/en-US/docs/Web/HTTP/data_URIs). + */ + function isDataURI(str: string): boolean; + + interface IsDateOptions { + /** + * @default false + */ + format?: string | undefined; + /** + * If strictMode is set to true, + * the validator will reject inputs different from format. + * + * @default false + */ + strictMode?: boolean | undefined; + /** + * `delimiters` is an array of allowed date delimiters + * + * @default ['/', '-'] + */ + delimiters?: string[] | undefined; + } + + /** + * Check if the string is a valid date. + */ + function isDate(str: string, options?: IsDateOptions): boolean; + + type DecimalLocale = FloatLocale; + + interface IsDecimalOptions { + /** + * @default false + */ + force_decimal?: boolean | undefined; + /** + * `decimal_digits` is given as a range like `'1,3'`, + * a specific value like `'3'` or min like `'1,'` + * + * @default '1,' + */ + decimal_digits?: string | undefined; + /** + * DecimalLocale + * + * @default 'en-US' + */ + locale?: DecimalLocale | undefined; + } + + /** + * Check if the string represents a decimal number, + * such as `0.1`, `.3`, `1.1`, `1.00003`, `4.0` etc. + * + * @param [options] - Options + */ + function isDecimal(str: string, options?: IsDecimalOptions): boolean; + + /** + * Check if the string is a number that's divisible by another. + * + * @param number - Divider number + */ + function isDivisibleBy(str: string, number: number): boolean; + + type IsEmailOptions = _isEmail.IsEmailOptions; + const isEmail: typeof _isEmail.default; + + interface IsEmptyOptions { + /** + * @default false + */ + ignore_whitespace?: boolean | undefined; + } + + /** + * Check if the string has a length of zero. + * + * @param [options] - Options + */ + function isEmpty(str: string, options?: IsEmptyOptions): boolean; + + type FloatLocale = + | 'en-US' + | 'ar' + | 'en-AU' + | 'en-GB' + | 'en-HK' + | 'en-IN' + | 'en-NZ' + | 'en-ZA' + | 'en-ZM' + | 'ar-AE' + | 'ar-BH' + | 'ar-DZ' + | 'ar-EG' + | 'ar-IQ' + | 'ar-JO' + | 'ar-KW' + | 'ar-LB' + | 'ar-LY' + | 'ar-MA' + | 'ar-QM' + | 'ar-QA' + | 'ar-SA' + | 'ar-SD' + | 'ar-SY' + | 'ar-TN' + | 'ar-YE' + | 'bg-BG' + | 'cs-CZ' + | 'da-DK' + | 'de-DE' + | 'el-GR' + | 'es-ES' + | 'fr-FR' + | 'it-IT' + | 'ku-IQ' + | 'hu-HU' + | 'nb-NO' + | 'nn-NO' + | 'nl-NL' + | 'pl-PL' + | 'pt-PT' + | 'ru-RU' + | 'sl-SI' + | 'sr-RS@latin' + | 'sr-RS' + | 'sv-SE' + | 'tr-TR' + | 'uk-UA' + | 'pt-BR' + | 'pl-Pl'; + + const isFloatLocales: FloatLocale[]; + + interface IsFloatOptions { + /** + * less or equal + */ + min?: number | undefined; + /** + * greater or equal + */ + max?: number | undefined; + /** + * greater than + */ + gt?: number | undefined; + /** + * less than + */ + lt?: number | undefined; + /** + * FloatLocale + */ + locale?: FloatLocale | undefined; + } + + /** + * Check if the string is a float. + * + * @param [options] - Options + */ + function isFloat(str: string, options?: IsFloatOptions): boolean; + + type IsFQDNOptions = _isFQDN.IsFQDNOptions; + const isFQDN: typeof _isFQDN.default; + + /** + * Check if the string contains any full-width chars. + */ + function isFullWidth(str: string): boolean; + + /** + * Check if the string contains any half-width chars. + */ + function isHalfWidth(str: string): boolean; + + type HashAlgorithm = + | 'md4' + | 'md5' + | 'sha1' + | 'sha256' + | 'sha384' + | 'sha512' + | 'ripemd128' + | 'ripemd160' + | 'tiger128' + | 'tiger160' + | 'tiger192' + | 'crc32' + | 'crc32b'; + + /** + * Check if the string is a hash of type algorithm. + * + * @param algorithm - HashAlgorithm + */ + function isHash(str: string, algorithm: HashAlgorithm): boolean; + + /** + * Check if the string is a hexadecimal number. + */ + function isHexadecimal(str: string): boolean; + + /** + * Check if the string is a hexadecimal color. + */ + function isHexColor(str: string): boolean; + + /** + * Check if the string is an HSL (hue, saturation, lightness, optional alpha) color based on CSS Colors Level 4 specification. + * Comma-separated format supported. Space-separated format supported with the exception of a few edge cases (ex: hsl(200grad+.1%62%/1)). + */ + function isHSL(str: string): boolean; + + /** + * Check if the string is a rgb or rgba color. + * + * @param [includePercentValues=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. (defaults to true) + */ + function isRgbColor(str: string, includePercentValues?: boolean): boolean; + + type IdentityCardLocale = 'ES' | 'he-IL' | 'zh-TW' | 'zh-CN'; + + /** + * Check if the string is a valid identity card code. + * + * @param [locale="any"] - IdentityCardLocale + */ + function isIdentityCard(str: string, locale?: 'any' | IdentityCardLocale): boolean; + + /** + * Check if the string is in a array of allowed values. + * + * @param values - Allowed values. + */ + function isIn(str: string, values: any[]): boolean; + + interface IsIntOptions { + /** + * to check the integer min boundary + */ + min?: number | undefined; + /** + * to check the integer max boundary + */ + max?: number | undefined; + /** + * if `false`, will disallow integer values with leading zeroes + * @default true + */ + allow_leading_zeroes?: boolean | undefined; + /** + * enforce integers being greater than the value provided + */ + lt?: number | undefined; + /** + * enforce integers being less than the value provided + */ + gt?: number | undefined; + } + + /** + * Check if the string is an integer. + * + * @param [options] - Options + */ + function isInt(str: string, options?: IsIntOptions): boolean; + + type IPVersion = '4' | '6' | 4 | 6; + + /** + * Check if the string is an IP (version 4 or 6). + * + * @param [version] - IP Version + */ + function isIP(str: string, version?: IPVersion): boolean; + + /** + * Check if the string is an IP Range (version 4 or 6). + */ + function isIPRange(str: string, version?: IPVersion): boolean; + + type ISBNVersion = '10' | '13' | 10 | 13; + + /** + * Check if the string is an ISBN (version 10 or 13). + * + * @param [version] - ISBN Version + */ + function isISBN(str: string, version?: ISBNVersion): boolean; + + /** + * Check if the string is an EAN (European Article Number). + */ + function isEAN(str: string): boolean; + + /** + * Check if the string is an [ISIN](https://en.wikipedia.org/wiki/International_Securities_Identification_Number) (stock/security identifier). + */ + function isISIN(str: string): boolean; + + const isISO31661Alpha2: typeof _isISO31661Alpha2.default; + + /** + * 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. + */ + function isISO31661Alpha3(str: string): boolean; + + interface IsISO8601Options { + /** + * If `strict` is `true`, performs additional checks for valid dates, + * e.g. invalidates dates like `2009-02-29`. + * + * @default false + */ + strict?: boolean | undefined; + /** + * If `strictSeparator` is true, date strings with date and time separated + * by anything other than a T will be invalid + * + */ + strictSeparator?: boolean | undefined; + } + + /** + * Check if the string is a valid [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date. + * + * @param [options] - Options + */ + function isISO8601(str: string, options?: IsISO8601Options): boolean; + + interface IsISSNOptions { + /** + * If `case_sensitive` is `true`, ISSNs with a lowercase `x` as the check digit are rejected. + * + * @default false + */ + case_sensitive?: boolean | undefined; + /** + * @default false + */ + require_hyphen?: boolean | undefined; + } + + /** + * Check if the string is an [ISSN](https://en.wikipedia.org/wiki/International_Standard_Serial_Number). + * + * @param [options] - Options + */ + function isISSN(str: string, options?: IsISSNOptions): boolean; + + const isISO4217: typeof _isISO4217.default; + + /** + * Check if the string is a [ISRC](https://en.wikipedia.org/wiki/International_Standard_Recording_Code). + */ + function isISRC(str: string): boolean; + + /** + * Check if the string is a valid [RFC 3339](https://tools.ietf.org/html/rfc3339) date. + */ + function isRFC3339(str: string): boolean; + + /** + * Check if the string is valid JSON (note: uses `JSON.parse`). + */ + function isJSON(str: string): boolean; + + /** + * Check if the string is valid JWT token. + */ + function isJWT(str: string): boolean; + + /** + * Check if the string is a valid latitude-longitude coordinate in the format: + * + * `lat,long` or `lat, long`. + */ + function isLatLong(str: string): boolean; + + interface IsLengthOptions { + /** + * @default 0 + */ + min?: number | undefined; + /** + * @default undefined + */ + max?: number | undefined; + } + + /** + * Check if the string's length falls in a range. + * + * Note: this function takes into account surrogate pairs. + * + * @param [options] - Options + */ + function isLength(str: string, options?: IsLengthOptions): boolean; + + /** + * Check if the string is a locale. + */ + function isLocale(str: string): boolean; + + /** + * Check if the string is lowercase. + */ + function isLowercase(str: string): boolean; + + interface IsMACAddressOptions { + /** + * If `no_colons` is `true`, the validator will allow MAC addresses without the colons. + * Also, it allows the use of hyphens or spaces. + * + * e.g. `01 02 03 04 05 ab` or `01-02-03-04-05-ab`. + * + * @default false + */ + no_colons?: boolean | undefined; + } + + /** + * Check if the string is a MAC address. + * + * @param [options] - Options + */ + function isMACAddress(str: string, options?: IsMACAddressOptions): boolean; + + /** + * Check if the string is a [magnet uri format](https://en.wikipedia.org/wiki/Magnet_URI_scheme). + */ + function isMagnetURI(str: string): boolean; + + /** + * Check if the string is a MD5 hash. + */ + function isMD5(str: string): boolean; + + /** + * Check if the string matches to a valid [MIME type](https://en.wikipedia.org/wiki/Media_type) format. + */ + function isMimeType(str: string): boolean; + + type MobilePhoneLocale = PhoneLocale | PhoneLocaleAlias; + type PhoneLocale = + | 'am-AM' + | 'ar-AE' + | 'ar-BH' + | 'ar-DZ' + | 'ar-LB' + | 'ar-EG' + | 'ar-IQ' + | 'ar-JO' + | 'ar-KW' + | 'ar-LY' + | 'ar-MA' + | 'ar-OM' + | 'ar-SA' + | 'ar-SY' + | 'ar-TN' + | 'az-AZ' + | 'bs-BA' + | 'be-BY' + | 'bg-BG' + | 'bn-BD' + | 'ca-AD' + | 'cs-CZ' + | 'da-DK' + | 'de-DE' + | 'de-AT' + | 'de-CH' + | 'de-LU' + | 'el-GR' + | 'en-AU' + | 'en-GB' + | 'en-GG' + | 'en-GH' + | 'en-HK' + | 'en-MO' + | 'en-IE' + | 'en-IN' + | 'en-KE' + | 'en-MT' + | 'en-MU' + | 'en-NG' + | 'en-NZ' + | 'en-PK' + | 'en-PH' + | 'en-RW' + | 'en-SG' + | 'en-SL' + | 'en-TZ' + | 'en-UG' + | 'en-US' + | 'en-ZA' + | 'en-ZM' + | 'en-ZW' + | 'es-AR' + | 'es-BO' + | 'es-CO' + | 'es-CL' + | 'es-CR' + | 'es-DO' + | 'es-HN' + | 'es-EC' + | 'es-ES' + | 'es-PE' + | 'es-MX' + | 'es-PA' + | 'es-PY' + | 'es-UY' + | 'es-VE' + | 'et-EE' + | 'fa-IR' + | 'fi-FI' + | 'fj-FJ' + | 'fo-FO' + | 'fr-FR' + | 'fr-GF' + | 'fr-GP' + | 'fr-MQ' + | 'fr-RE' + | 'he-IL' + | 'hu-HU' + | 'id-ID' + | 'it-IT' + | 'it-SM' + | 'ja-JP' + | 'ka-GE' + | 'kk-KZ' + | 'kl-GL' + | 'ko-KR' + | 'lt-LT' + | 'lv-LV' + | 'ms-MY' + | 'mz-MZ' + | 'nb-NO' + | 'ne-NP' + | 'nl-BE' + | 'nl-NL' + | 'nn-NO' + | 'pl-PL' + | 'pt-BR' + | 'pt-PT' + | 'pt-AO' + | 'ro-RO' + | 'ru-RU' + | 'si-LK' + | 'sl-SI' + | 'sk-SK' + | 'sq-AL' + | 'sr-RS' + | 'sv-SE' + | 'th-TH' + | 'tr-TR' + | 'uk-UA' + | 'uz-UZ' + | 'vi-VN' + | 'zh-CN' + | 'zh-TW'; + type PhoneLocaleAlias = 'en-CA' | 'fr-CA' | 'fr-BE' | 'zh-HK' | 'zh-MO' | 'ga-IE' | 'fr-CH' | 'it-CH'; + + const isMobilePhoneLocales: MobilePhoneLocale[]; + + interface IsMobilePhoneOptions { + /** + * If this is set to `true`, the mobile phone number must be supplied with the country code and therefore must start with `+`. + * + * @default false + */ + strictMode?: boolean | undefined; + } + + /** + * Check if the string is a mobile phone number. + * + * @param [locale] - MobilePhoneLocale(s) + * @param [options] - Options + */ + function isMobilePhone( + str: string, + locale?: 'any' | MobilePhoneLocale | MobilePhoneLocale[], + options?: IsMobilePhoneOptions, + ): boolean; + + /** + * Check if the string is a valid hex-encoded representation of a [MongoDB ObjectId](http://docs.mongodb.org/manual/reference/object-id/). + */ + function isMongoId(str: string): boolean; + + /** + * Check if the string contains one or more multibyte chars. + */ + function isMultibyte(str: string): boolean; + + interface IsNumericOptions { + /** + * If `no_symbols` is true, the validator will reject numeric strings that feature a symbol (e.g. `+`, `-`, or `.`). + * + * @default false + */ + no_symbols?: boolean | undefined; + locale?: AlphaLocale | undefined; + } + + /** + * Check if the string contains only numbers. + * + * @param [options] - Options + */ + function isNumeric(str: string, options?: IsNumericOptions): boolean; + + /** + * Check if the string is a valid octal number. + */ + function isOctal(str: string): boolean; + + /** + * Check if the string is a valid passport number relative to a specific country code. + * + * @param [countryCode] - Country code + */ + function isPassportNumber(str: string, countryCode?: string): boolean; + + /** + * Check if the string is a valid port number. + */ + function isPort(str: string): boolean; + + type PostalCodeLocale = + | 'AD' + | 'AT' + | 'AU' + | 'BE' + | 'BG' + | 'BR' + | 'CA' + | 'CH' + | 'CN' + | 'CZ' + | 'DE' + | 'DK' + | 'DZ' + | 'EE' + | 'ES' + | 'FI' + | 'FR' + | 'GB' + | 'GR' + | 'HR' + | 'HU' + | 'ID' + | 'IE' + | 'IL' + | 'IN' + | 'IS' + | 'IT' + | 'JP' + | 'KE' + | 'LI' + | 'LT' + | 'LU' + | 'LV' + | 'MX' + | 'MT' + | 'NL' + | 'NO' + | 'NZ' + | 'PL' + | 'PR' + | 'PT' + | 'RO' + | 'RU' + | 'SA' + | 'SE' + | 'SI' + | 'SK' + | 'TN' + | 'TW' + | 'UA' + | 'US' + | 'ZA' + | 'ZM'; + + const isPostalCodeLocales: PostalCodeLocale[]; + + /** + * Check if the string is a postal code + * + * @param locale - PostalCodeLocale + */ + function isPostalCode(str: string, locale: 'any' | PostalCodeLocale): boolean; + + /** + * Check if the string is a Semantic Versioning Specification (SemVer). + */ + function isSemVer(str: string): boolean; + + /** + * Check if string is considered a strong password. Allows options to be added + */ + + interface StrongPasswordOptions { + minLength?: number | undefined; + minLowercase?: number | undefined; + minUppercase?: number | undefined; + minNumbers?: number | undefined; + minSymbols?: number | undefined; + returnScore?: boolean | undefined; + pointsPerUnique?: number | undefined; + pointsPerRepeat?: number | undefined; + pointsForContainingLower?: number | undefined; + pointsForContainingUpper?: number | undefined; + pointsForContainingNumber?: number | undefined; + pointsForContainingSymbol?: number | undefined; + } + + function isStrongPassword( + str: string, + options?: StrongPasswordOptions & { returnScore?: false | undefined }, + ): boolean; + function isStrongPassword(str: string, options: StrongPasswordOptions & { returnScore: true }): number; + + /** + * Check if the string contains any surrogate pairs chars. + */ + function isSurrogatePair(str: string): boolean; + + const isURL: typeof _isURL.default; + type IsURLOptions = _isURL.IsURLOptions; + + const isTaxID: typeof _isTaxID.default; + + /** + * Check if the string is uppercase. + */ + function isUppercase(str: string): boolean; + + type UUIDVersion = 3 | 4 | 5 | '3' | '4' | '5' | 'all'; + /** + * Check if the string is a UUID (version 3, 4 or 5). + * + * @param [version="all"] - UUID version + */ + function isUUID(str: string, version?: UUIDVersion): boolean; + + /** + * Check if the string contains a mixture of full and half-width chars. + */ + function isVariableWidth(str: string): boolean; + + /** + * Checks that the string is a [valid VAT number + */ + function isVAT(str: string, countryCode: string): boolean; + + /** + * Checks characters if they appear in the whitelist. + * + * @param chars - whitelist + */ + function isWhitelisted(str: string, chars: string | string[]): boolean; + + /** + * Check if string matches the pattern. + * + * @param pattern - `/foo/i` + */ + function matches(str: string, pattern: RegExp): boolean; + /** + * Check if string matches the pattern. + * + * @param pattern - `'foo'` + * @param [modifiers] - `'i'` + */ + function matches(str: string, pattern: string, modifiers?: string): boolean; + + /** + * Check if the string is of type slug. + */ + function isSlug(str: string): boolean; + + /****************** + *** Sanitizers *** + ******************/ + + /** + * Remove characters that appear in the blacklist. + * + * @param chars - The characters are used in a `RegExp` and so you will need to escape some chars, e.g. `blacklist(input, '\\[\\]')`. + */ + function blacklist(input: string, chars: string): string; + + /** + * Replace `<`, `>`, `&`, `'`, `"` and `/` with HTML entities. + */ + function escape(input: string): string; + + /** + * Replaces HTML encoded entities with `<`, `>`, `&`, `'`, `"` and `/`. + */ + function unescape(input: string): string; + + /** + * Trim characters from the left-side of the input. + * + * @param [chars] - characters (defaults to whitespace) + */ + function ltrim(input: string, chars?: string): string; + + interface NormalizeEmailOptions { + /** + * Transforms the local part (before the @ symbol) of all email addresses to lowercase. + * Please note that this may violate RFC 5321, which gives providers the possibility + * to treat the local part of email addresses in a case sensitive way + * (although in practice most - yet not all - providers don't). + * The domain part of the email address is always lowercased, as it's case insensitive per RFC 1035. + * + * @default true + */ + all_lowercase?: boolean | undefined; + /** + * GMail addresses are known to be case-insensitive, so this switch allows lowercasing them even when `all_lowercase` is set to `false`. + * Please note that when `all_lowercase` is `true`, GMail addresses are lowercased regardless of the value of this setting. + * + * @default true + */ + gmail_lowercase?: boolean | undefined; + /** + * Removes dots from the local part of the email address, as GMail ignores them + * (e.g. `"john.doe"` and `"johndoe"` are considered equal). + * + * @default true + */ + gmail_remove_dots?: boolean | undefined; + /** + * Normalizes addresses by removing "sub-addresses", which is the part following a `"+"` sign + * (e.g. `"foo+bar@gmail.com"` becomes `"foo@gmail.com"`). + * + * @default true + */ + gmail_remove_subaddress?: boolean | undefined; + /** + * Converts addresses with domain `@googlemail.com` to `@gmail.com`, as they're equivalent. + * + * @default true + */ + gmail_convert_googlemaildotcom?: boolean | undefined; + /** + * Outlook.com addresses (including Windows Live and Hotmail) are known to be case-insensitive, so this switch allows lowercasing them even when `all_lowercase` is set to `false`. + * Please note that when `all_lowercase` is `true`, Outlook.com addresses are lowercased regardless of the value of this setting. + * + * @default true + */ + outlookdotcom_lowercase?: boolean | undefined; + /** + * Normalizes addresses by removing "sub-addresses", which is the part following a `"+"` sign + * (e.g. `"foo+bar@outlook.com"` becomes `"foo@outlook.com"`). + * + * @default true + */ + outlookdotcom_remove_subaddress?: boolean | undefined; + /** + * Yahoo Mail addresses are known to be case-insensitive, so this switch allows lowercasing them even when `all_lowercase` is set to `false`. + * Please note that when `all_lowercase` is `true`, Yahoo Mail addresses are lowercased regardless of the value of this setting. + * + * @default true + */ + yahoo_lowercase?: boolean | undefined; + /** + * Normalizes addresses by removing "sub-addresses", which is the part following a `"-"` sign + * (e.g. `"foo-bar@yahoo.com"` becomes `"foo@yahoo.com"`). + * + * @default true + */ + yahoo_remove_subaddress?: boolean | undefined; + /** + * iCloud addresses (including MobileMe) are known to be case-insensitive, so this switch allows lowercasing them even when `all_lowercase` is set to `false`. + * Please note that when `all_lowercase` is `true`, iCloud addresses are lowercased regardless of the value of this setting. + * + * @default true + */ + icloud_lowercase?: boolean | undefined; + /** + * Normalizes addresses by removing "sub-addresses", which is the part following a `"+"` sign + * (e.g. `"foo+bar@icloud.com"` becomes `"foo@icloud.com"`). + * + * @default true + */ + icloud_remove_subaddress?: boolean | undefined; + } + + /** + * Canonicalizes an email address. (This doesn't validate that the input is an email, if you want to validate the email use `isEmail` beforehand) + * + * @param [options] - Options + */ + function normalizeEmail(email: string, options?: NormalizeEmailOptions): string | false; + + /** + * Trim characters from the right-side of the input. + * + * @param [chars] - characters (defaults to whitespace) + */ + function rtrim(input: string, chars?: string): string; + + /** + * Remove characters with a numerical value < `32` and `127`, mostly control characters. + * Unicode-safe in JavaScript. + * + * @param [keep_new_lines=false] - if `true`, newline characters are preserved (`\n` and `\r`, hex `0xA` and `0xD`). + */ + function stripLow(input: string, keep_new_lines?: boolean): string; + + /** + * Convert the input string to a boolean. + * Everything except for `'0'`, `'false'` and `''` returns `true`. + * + * @param [strict=false] - in `strict` mode, only `'1'` and `'true'` return `true`. + */ + function toBoolean(input: string, strict?: boolean): boolean; + + /** + * Convert the input string to a `Date`, or `null` if the input is not a date. + */ + function toDate(input: string): Date | null; + + /** + * Convert the input string to a float, or `NaN` if the input is not a float. + */ + function toFloat(input: string): number; + + /** + * Convert the input string to an integer, or `NaN` if the input is not an integer. + * + * @param [radix=10] - radix or base (defaults to 10) + */ + function toInt(input: string, radix?: number): number; + + /** + * Trim characters from both sides of the input. + * + * @param [chars] - characters (defaults to whitespace) + */ + function trim(input: string, chars?: string): string; + + /** + * Remove characters that do not appear in the whitelist. + * + * @param chars - The characters are used in a `RegExp` and so you will need to escape some chars, e.g. `whitelist(input, '\\[\\]')`. + */ + function whitelist(input: string, chars: string): string; + + /** + * Converts to string. + */ + function toString(input: any): string; +} +export default validator; + +export as namespace validator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/blacklist.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/blacklist.d.ts new file mode 100755 index 00000000..8982c773 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/blacklist.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.blacklist; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/contains.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/contains.d.ts new file mode 100755 index 00000000..715f3a45 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/contains.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.contains; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/equals.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/equals.d.ts new file mode 100755 index 00000000..5b584363 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/equals.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.equals; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/escape.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/escape.d.ts new file mode 100755 index 00000000..75b6ff0d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/escape.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.escape; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isAfter.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isAfter.d.ts new file mode 100755 index 00000000..cd191ef7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isAfter.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isAfter; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isAlpha.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isAlpha.d.ts new file mode 100755 index 00000000..862c88a3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isAlpha.d.ts @@ -0,0 +1,3 @@ +import validator from '../'; +export type AlphaLocale = validator.AlphaLocale; +export default validator.isAlpha; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isAlphanumeric.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isAlphanumeric.d.ts new file mode 100755 index 00000000..99376234 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isAlphanumeric.d.ts @@ -0,0 +1,3 @@ +import validator from '../'; +export type AlphanumericLocale = validator.AlphanumericLocale; +export default validator.isAlphanumeric; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isAscii.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isAscii.d.ts new file mode 100755 index 00000000..6592daac --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isAscii.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isAscii; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBIC.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBIC.d.ts new file mode 100755 index 00000000..f2c70466 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBIC.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isBIC; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBase32.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBase32.d.ts new file mode 100755 index 00000000..385c4648 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBase32.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isBase32; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBase58.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBase58.d.ts new file mode 100755 index 00000000..7f4015ce --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBase58.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isBase58; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBase64.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBase64.d.ts new file mode 100755 index 00000000..3fd30dad --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBase64.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isBase64; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBefore.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBefore.d.ts new file mode 100755 index 00000000..662555b1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBefore.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isBefore; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBoolean.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBoolean.d.ts new file mode 100755 index 00000000..67c44553 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBoolean.d.ts @@ -0,0 +1,14 @@ +import validator from '../'; +/** + * check if a string is a boolean. + */ +export default function isBoolean(str: string, options?: Options): boolean; + +export interface Options { + /** + * If loose is is set to false, the validator will strictly match ['true', 'false', '0', '1']. + * If loose is set to true, the validator will also match 'yes', 'no', and will match a valid boolean string of any case. (eg: ['true', 'True', 'TRUE']). + * @default false + */ + loose?: boolean | undefined; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBtcAddress.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBtcAddress.d.ts new file mode 100755 index 00000000..63c83d3f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isBtcAddress.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isBtcAddress; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isByteLength.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isByteLength.d.ts new file mode 100755 index 00000000..54eef7c5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isByteLength.d.ts @@ -0,0 +1,3 @@ +import validator from '../'; +export type IsByteLengthOptions = validator.IsByteLengthOptions; +export default validator.isByteLength; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isCreditCard.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isCreditCard.d.ts new file mode 100755 index 00000000..4a766298 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isCreditCard.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isCreditCard; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isCurrency.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isCurrency.d.ts new file mode 100755 index 00000000..e72fd203 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isCurrency.d.ts @@ -0,0 +1,3 @@ +import validator from '../'; +export type IsCurrencyOptions = validator.IsCurrencyOptions; +export default validator.isCurrency; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isDataURI.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isDataURI.d.ts new file mode 100755 index 00000000..52df10fa --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isDataURI.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isDataURI; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isDate.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isDate.d.ts new file mode 100755 index 00000000..8678fc2e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isDate.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isDate; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isDecimal.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isDecimal.d.ts new file mode 100755 index 00000000..7bfec256 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isDecimal.d.ts @@ -0,0 +1,4 @@ +import validator from '../'; +export type IsDecimalOptions = validator.IsDecimalOptions; +export type DecimalLocale = validator.DecimalLocale; +export default validator.isDecimal; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isDivisibleBy.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isDivisibleBy.d.ts new file mode 100755 index 00000000..fa1d1179 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isDivisibleBy.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isDivisibleBy; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isEAN.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isEAN.d.ts new file mode 100755 index 00000000..e25c3f6e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isEAN.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isEAN; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isEmail.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isEmail.d.ts new file mode 100755 index 00000000..604fa754 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isEmail.d.ts @@ -0,0 +1,63 @@ +export interface IsEmailOptions { + /** + * If `allow_display_name` is set to `true`, the validator will also match `Display Name `. + * + * @default false + */ + allow_display_name?: boolean | undefined; + /** + * If `require_display_name` is set to `true`, the validator will reject strings without the format `Display Name `. + * + * @default false + */ + require_display_name?: boolean | undefined; + /** + * If `allow_utf8_local_part` is set to `false`, the validator will not allow any non-English UTF8 character in email address' local part. + * + * @default true + */ + allow_utf8_local_part?: boolean | undefined; + /** + * If `require_tld` is set to `false`, e-mail addresses without having TLD in their domain will also be matched. + * + * @default true + */ + require_tld?: boolean | undefined; + /** + * If `ignore_max_length` is set to `true`, the validator will not check for the standard max length of an email. + * + * @default false + */ + ignore_max_length?: boolean | undefined; + /** + * If `allow_ip_domain` is set to `true`, the validator will allow IP addresses in the host part. + * + * @default false + */ + allow_ip_domain?: boolean | undefined; + /** + * If `domain_specific_validation` is `true`, some additional validation will be enabled, + * e.g. disallowing certain syntactically valid email addresses that are rejected by GMail. + * + * @default false + */ + domain_specific_validation?: boolean | undefined; + /** + * If host_blacklist is set to an array of strings + * and the part of the email after the @ symbol matches one of the strings defined in it, + * the validation fails. + */ + host_blacklist?: string[] | undefined; + /** + * If blacklisted_chars receives a string, then the validator will reject emails that include + * any of the characters in the string, in the name part. + */ + blacklisted_chars?: string | undefined; +} + +/** + * Check if the string is an email. + * + * @param [options] - Options + */ +export default function isEmail(str: string, options?: IsEmailOptions): boolean; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isEmpty.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isEmpty.d.ts new file mode 100755 index 00000000..026b44eb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isEmpty.d.ts @@ -0,0 +1,3 @@ +import validator from '../'; +export type IsEmptyOptions = validator.IsEmptyOptions; +export default validator.isEmpty; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isEthereumAddress.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isEthereumAddress.d.ts new file mode 100755 index 00000000..0bd80ca3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isEthereumAddress.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isEthereumAddress; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isFQDN.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isFQDN.d.ts new file mode 100755 index 00000000..131dac01 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isFQDN.d.ts @@ -0,0 +1,30 @@ +export interface IsFQDNOptions { + /** + * @default true + */ + require_tld?: boolean | undefined; + /** + * @default false + */ + allow_underscores?: boolean | undefined; + /** + * @default false + */ + allow_trailing_dot?: boolean | undefined; + /** + * @default false + */ + allow_numeric_tld?: boolean | undefined; + /** + * If `allow_wildcard` is set to true, the validator will allow domain starting with `*.` (e.g. `*.example.com` or `*.shop.example.com`). + * @default false + */ + allow_wildcard?: boolean | undefined; +} + +/** + * Check if the string is a fully qualified domain name (e.g. `domain.com`). + * + * @param [options] - Options + */ +export default function isFQDN(str: string, options?: IsFQDNOptions): boolean; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isFloat.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isFloat.d.ts new file mode 100755 index 00000000..7c97a288 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isFloat.d.ts @@ -0,0 +1,4 @@ +import validator from '../'; +export type FloatLocale = validator.FloatLocale; +export type IsFloatOptions = validator.IsFloatOptions; +export default validator.isFloat; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isFullWidth.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isFullWidth.d.ts new file mode 100755 index 00000000..95ea92f0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isFullWidth.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isFullWidth; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isHSL.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isHSL.d.ts new file mode 100755 index 00000000..57ee3de0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isHSL.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isHSL; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isHalfWidth.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isHalfWidth.d.ts new file mode 100755 index 00000000..c18c8994 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isHalfWidth.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isHalfWidth; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isHash.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isHash.d.ts new file mode 100755 index 00000000..c632ba0d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isHash.d.ts @@ -0,0 +1,3 @@ +import validator from '../'; +export type HashAlgorithm = validator.HashAlgorithm; +export default validator.isHash; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isHexColor.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isHexColor.d.ts new file mode 100755 index 00000000..8ade96b6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isHexColor.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isHexColor; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isHexadecimal.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isHexadecimal.d.ts new file mode 100755 index 00000000..d2e785c9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isHexadecimal.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isHexadecimal; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isIBAN.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isIBAN.d.ts new file mode 100755 index 00000000..5e9686c8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isIBAN.d.ts @@ -0,0 +1,84 @@ +/** + * Check if a string is a IBAN (International Bank Account Number). + */ +export default function isIBAN(str: string): boolean; +export const locales: Array< + | 'AD' + | 'AE' + | 'AL' + | 'AT' + | 'AZ' + | 'BA' + | 'BE' + | 'BG' + | 'BH' + | 'BR' + | 'BY' + | 'CH' + | 'CR' + | 'CY' + | 'CZ' + | 'DE' + | 'DK' + | 'DO' + | 'EE' + | 'EG' + | 'ES' + | 'FI' + | 'FO' + | 'FR' + | 'GB' + | 'GE' + | 'GI' + | 'GL' + | 'GR' + | 'GT' + | 'HR' + | 'HU' + | 'IE' + | 'IL' + | 'IQ' + | 'IR' + | 'IS' + | 'IT' + | 'JO' + | 'KW' + | 'KZ' + | 'LB' + | 'LC' + | 'LI' + | 'LT' + | 'LU' + | 'LV' + | 'MC' + | 'MD' + | 'ME' + | 'MK' + | 'MR' + | 'MT' + | 'MU' + | 'MZ' + | 'NL' + | 'NO' + | 'PK' + | 'PL' + | 'PS' + | 'PT' + | 'QA' + | 'RO' + | 'RS' + | 'SA' + | 'SC' + | 'SE' + | 'SI' + | 'SK' + | 'SM' + | 'SV' + | 'TL' + | 'TN' + | 'TR' + | 'UA' + | 'VA' + | 'VG' + | 'XK' +>; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isIP.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isIP.d.ts new file mode 100755 index 00000000..6e11d7a1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isIP.d.ts @@ -0,0 +1,3 @@ +import validator from '../'; +export type IPVersion = validator.IPVersion; +export default validator.isIP; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isIPRange.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isIPRange.d.ts new file mode 100755 index 00000000..906085ef --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isIPRange.d.ts @@ -0,0 +1,3 @@ +import validator from '../'; +export type IPVersion = validator.IPVersion; +export default validator.isIPRange; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISBN.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISBN.d.ts new file mode 100755 index 00000000..d6364e9f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISBN.d.ts @@ -0,0 +1,3 @@ +import validator from '../'; +export type ISBNVersion = validator.ISBNVersion; +export default validator.isISBN; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISIN.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISIN.d.ts new file mode 100755 index 00000000..162bf28f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISIN.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isISIN; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISO31661Alpha2.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISO31661Alpha2.d.ts new file mode 100755 index 00000000..7993d207 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISO31661Alpha2.d.ts @@ -0,0 +1,256 @@ +/** + * 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. + */ +export default function isISO31661Alpha2(str: string): boolean; + +export const CountryCodes: Set< + | 'AD' + | 'AE' + | 'AF' + | 'AG' + | 'AI' + | 'AL' + | 'AM' + | 'AO' + | 'AQ' + | 'AR' + | 'AS' + | 'AT' + | 'AU' + | 'AW' + | 'AX' + | 'AZ' + | 'BA' + | 'BB' + | 'BD' + | 'BE' + | 'BF' + | 'BG' + | 'BH' + | 'BI' + | 'BJ' + | 'BL' + | 'BM' + | 'BN' + | 'BO' + | 'BQ' + | 'BR' + | 'BS' + | 'BT' + | 'BV' + | 'BW' + | 'BY' + | 'BZ' + | 'CA' + | 'CC' + | 'CD' + | 'CF' + | 'CG' + | 'CH' + | 'CI' + | 'CK' + | 'CL' + | 'CM' + | 'CN' + | 'CO' + | 'CR' + | 'CU' + | 'CV' + | 'CW' + | 'CX' + | 'CY' + | 'CZ' + | 'DE' + | 'DJ' + | 'DK' + | 'DM' + | 'DO' + | 'DZ' + | 'EC' + | 'EE' + | 'EG' + | 'EH' + | 'ER' + | 'ES' + | 'ET' + | 'FI' + | 'FJ' + | 'FK' + | 'FM' + | 'FO' + | 'FR' + | 'GA' + | 'GB' + | 'GD' + | 'GE' + | 'GF' + | 'GG' + | 'GH' + | 'GI' + | 'GL' + | 'GM' + | 'GN' + | 'GP' + | 'GQ' + | 'GR' + | 'GS' + | 'GT' + | 'GU' + | 'GW' + | 'GY' + | 'HK' + | 'HM' + | 'HN' + | 'HR' + | 'HT' + | 'HU' + | 'ID' + | 'IE' + | 'IL' + | 'IM' + | 'IN' + | 'IO' + | 'IQ' + | 'IR' + | 'IS' + | 'IT' + | 'JE' + | 'JM' + | 'JO' + | 'JP' + | 'KE' + | 'KG' + | 'KH' + | 'KI' + | 'KM' + | 'KN' + | 'KP' + | 'KR' + | 'KW' + | 'KY' + | 'KZ' + | 'LA' + | 'LB' + | 'LC' + | 'LI' + | 'LK' + | 'LR' + | 'LS' + | 'LT' + | 'LU' + | 'LV' + | 'LY' + | 'MA' + | 'MC' + | 'MD' + | 'ME' + | 'MF' + | 'MG' + | 'MH' + | 'MK' + | 'ML' + | 'MM' + | 'MN' + | 'MO' + | 'MP' + | 'MQ' + | 'MR' + | 'MS' + | 'MT' + | 'MU' + | 'MV' + | 'MW' + | 'MX' + | 'MY' + | 'MZ' + | 'NA' + | 'NC' + | 'NE' + | 'NF' + | 'NG' + | 'NI' + | 'NL' + | 'NO' + | 'NP' + | 'NR' + | 'NU' + | 'NZ' + | 'OM' + | 'PA' + | 'PE' + | 'PF' + | 'PG' + | 'PH' + | 'PK' + | 'PL' + | 'PM' + | 'PN' + | 'PR' + | 'PS' + | 'PT' + | 'PW' + | 'PY' + | 'QA' + | 'RE' + | 'RO' + | 'RS' + | 'RU' + | 'RW' + | 'SA' + | 'SB' + | 'SC' + | 'SD' + | 'SE' + | 'SG' + | 'SH' + | 'SI' + | 'SJ' + | 'SK' + | 'SL' + | 'SM' + | 'SN' + | 'SO' + | 'SR' + | 'SS' + | 'ST' + | 'SV' + | 'SX' + | 'SY' + | 'SZ' + | 'TC' + | 'TD' + | 'TF' + | 'TG' + | 'TH' + | 'TJ' + | 'TK' + | 'TL' + | 'TM' + | 'TN' + | 'TO' + | 'TR' + | 'TT' + | 'TV' + | 'TW' + | 'TZ' + | 'UA' + | 'UG' + | 'UM' + | 'US' + | 'UY' + | 'UZ' + | 'VA' + | 'VC' + | 'VE' + | 'VG' + | 'VI' + | 'VN' + | 'VU' + | 'WF' + | 'WS' + | 'YE' + | 'YT' + | 'ZA' + | 'ZM' + | 'ZW' +>; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISO31661Alpha3.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISO31661Alpha3.d.ts new file mode 100755 index 00000000..f3d01fef --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISO31661Alpha3.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isISO31661Alpha3; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISO4217.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISO4217.d.ts new file mode 100755 index 00000000..ea3fef80 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISO4217.d.ts @@ -0,0 +1,186 @@ +/** + * Check if the string is a valid [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) officially assigned currency code. + */ +export default function isISO4217(str: string): boolean; + +export const CurrencyCodes: Set< + | 'AED' + | 'AFN' + | 'ALL' + | 'AMD' + | 'ANG' + | 'AOA' + | 'ARS' + | 'AUD' + | 'AWG' + | 'AZN' + | 'BAM' + | 'BBD' + | 'BDT' + | 'BGN' + | 'BHD' + | 'BIF' + | 'BMD' + | 'BND' + | 'BOB' + | 'BOV' + | 'BRL' + | 'BSD' + | 'BTN' + | 'BWP' + | 'BYN' + | 'BZD' + | 'CAD' + | 'CDF' + | 'CHE' + | 'CHF' + | 'CHW' + | 'CLF' + | 'CLP' + | 'CNY' + | 'COP' + | 'COU' + | 'CRC' + | 'CUC' + | 'CUP' + | 'CVE' + | 'CZK' + | 'DJF' + | 'DKK' + | 'DOP' + | 'DZD' + | 'EGP' + | 'ERN' + | 'ETB' + | 'EUR' + | 'FJD' + | 'FKP' + | 'GBP' + | 'GEL' + | 'GHS' + | 'GIP' + | 'GMD' + | 'GNF' + | 'GTQ' + | 'GYD' + | 'HKD' + | 'HNL' + | 'HRK' + | 'HTG' + | 'HUF' + | 'IDR' + | 'ILS' + | 'INR' + | 'IQD' + | 'IRR' + | 'ISK' + | 'JMD' + | 'JOD' + | 'JPY' + | 'KES' + | 'KGS' + | 'KHR' + | 'KMF' + | 'KPW' + | 'KRW' + | 'KWD' + | 'KYD' + | 'KZT' + | 'LAK' + | 'LBP' + | 'LKR' + | 'LRD' + | 'LSL' + | 'LYD' + | 'MAD' + | 'MDL' + | 'MGA' + | 'MKD' + | 'MMK' + | 'MNT' + | 'MOP' + | 'MRU' + | 'MUR' + | 'MVR' + | 'MWK' + | 'MXN' + | 'MXV' + | 'MYR' + | 'MZN' + | 'NAD' + | 'NGN' + | 'NIO' + | 'NOK' + | 'NPR' + | 'NZD' + | 'OMR' + | 'PAB' + | 'PEN' + | 'PGK' + | 'PHP' + | 'PKR' + | 'PLN' + | 'PYG' + | 'QAR' + | 'RON' + | 'RSD' + | 'RUB' + | 'RWF' + | 'SAR' + | 'SBD' + | 'SCR' + | 'SDG' + | 'SEK' + | 'SGD' + | 'SHP' + | 'SLL' + | 'SOS' + | 'SRD' + | 'SSP' + | 'STN' + | 'SVC' + | 'SYP' + | 'SZL' + | 'THB' + | 'TJS' + | 'TMT' + | 'TND' + | 'TOP' + | 'TRY' + | 'TTD' + | 'TWD' + | 'TZS' + | 'UAH' + | 'UGX' + | 'USD' + | 'USN' + | 'UYI' + | 'UYU' + | 'UYW' + | 'UZS' + | 'VES' + | 'VND' + | 'VUV' + | 'WST' + | 'XAF' + | 'XAG' + | 'XAU' + | 'XBA' + | 'XBB' + | 'XBC' + | 'XBD' + | 'XCD' + | 'XDR' + | 'XOF' + | 'XPD' + | 'XPF' + | 'XPT' + | 'XSU' + | 'XTS' + | 'XUA' + | 'XXX' + | 'YER' + | 'ZAR' + | 'ZMW' + | 'ZWL' +>; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISO8601.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISO8601.d.ts new file mode 100755 index 00000000..208059e7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISO8601.d.ts @@ -0,0 +1,3 @@ +import validator from '../'; +export type IsISO8601Options = validator.IsISO8601Options; +export default validator.isISO8601; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISRC.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISRC.d.ts new file mode 100755 index 00000000..64854032 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISRC.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isISRC; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISSN.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISSN.d.ts new file mode 100755 index 00000000..10c90cfe --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isISSN.d.ts @@ -0,0 +1,3 @@ +import validator from '../'; +export type IsISSNOptions = validator.IsISSNOptions; +export default validator.isISSN; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isIdentityCard.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isIdentityCard.d.ts new file mode 100755 index 00000000..7fd22d89 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isIdentityCard.d.ts @@ -0,0 +1,3 @@ +import validator from '../'; +export type IdentityCardLocale = validator.IdentityCardLocale; +export default validator.isIdentityCard; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isIn.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isIn.d.ts new file mode 100755 index 00000000..d28c3499 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isIn.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isIn; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isInt.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isInt.d.ts new file mode 100755 index 00000000..0d0d4c24 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isInt.d.ts @@ -0,0 +1,3 @@ +import validator from '../'; +export type IsIntOptions = validator.IsIntOptions; +export default validator.isInt; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isJSON.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isJSON.d.ts new file mode 100755 index 00000000..92c2e9d8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isJSON.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isJSON; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isJWT.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isJWT.d.ts new file mode 100755 index 00000000..776c32e8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isJWT.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isJWT; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isLatLong.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isLatLong.d.ts new file mode 100755 index 00000000..b0db1b39 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isLatLong.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isLatLong; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isLength.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isLength.d.ts new file mode 100755 index 00000000..89bda6fb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isLength.d.ts @@ -0,0 +1,3 @@ +import validator from '../'; +export type IsLengthOptions = validator.IsLengthOptions; +export default validator.isLength; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isLocale.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isLocale.d.ts new file mode 100755 index 00000000..bf393d3a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isLocale.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isLocale; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isLowercase.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isLowercase.d.ts new file mode 100755 index 00000000..24821af9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isLowercase.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isLowercase; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMACAddress.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMACAddress.d.ts new file mode 100755 index 00000000..13819cf5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMACAddress.d.ts @@ -0,0 +1,3 @@ +import validator from '../'; +export type IsMACAddressOptions = validator.IsMACAddressOptions; +export default validator.isMACAddress; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMD5.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMD5.d.ts new file mode 100755 index 00000000..6066d331 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMD5.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isMD5; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMagnetURI.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMagnetURI.d.ts new file mode 100755 index 00000000..5d3b9561 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMagnetURI.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isMagnetURI; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMimeType.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMimeType.d.ts new file mode 100755 index 00000000..dc31e5ec --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMimeType.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isMimeType; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMobilePhone.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMobilePhone.d.ts new file mode 100755 index 00000000..c9afa5ad --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMobilePhone.d.ts @@ -0,0 +1,4 @@ +import validator from '../'; +export type MobilePhoneLocale = validator.MobilePhoneLocale; +export type IsMobilePhoneOptions = validator.IsMobilePhoneOptions; +export default validator.isMobilePhone; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMongoId.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMongoId.d.ts new file mode 100755 index 00000000..314174a2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMongoId.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isMongoId; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMultibyte.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMultibyte.d.ts new file mode 100755 index 00000000..b993add2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isMultibyte.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isMultibyte; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isNumeric.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isNumeric.d.ts new file mode 100755 index 00000000..be0e7e23 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isNumeric.d.ts @@ -0,0 +1,3 @@ +import validator from '../'; +export type IsNumericOptions = validator.IsNumericOptions; +export default validator.isNumeric; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isOctal.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isOctal.d.ts new file mode 100755 index 00000000..3959bf8e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isOctal.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isOctal; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isPassportNumber.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isPassportNumber.d.ts new file mode 100755 index 00000000..bb531380 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isPassportNumber.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isPassportNumber; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isPort.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isPort.d.ts new file mode 100755 index 00000000..048de6b6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isPort.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isPort; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isPostalCode.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isPostalCode.d.ts new file mode 100755 index 00000000..345a65aa --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isPostalCode.d.ts @@ -0,0 +1,3 @@ +import validator from '../'; +export type PostalCodeLocale = validator.PostalCodeLocale; +export default validator.isPostalCode; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isRFC3339.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isRFC3339.d.ts new file mode 100755 index 00000000..a8fe1634 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isRFC3339.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isRFC3339; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isRgbColor.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isRgbColor.d.ts new file mode 100755 index 00000000..5fe82448 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isRgbColor.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isRgbColor; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isSemVer.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isSemVer.d.ts new file mode 100755 index 00000000..bdfb4709 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isSemVer.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isSemVer; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isSlug.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isSlug.d.ts new file mode 100755 index 00000000..81ad6263 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isSlug.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isSlug; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isStrongPassword.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isStrongPassword.d.ts new file mode 100755 index 00000000..86c7d905 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isStrongPassword.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isStrongPassword; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isSurrogatePair.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isSurrogatePair.d.ts new file mode 100755 index 00000000..7ea2fbe0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isSurrogatePair.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isSurrogatePair; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isTaxID.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isTaxID.d.ts new file mode 100755 index 00000000..3069e7d9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isTaxID.d.ts @@ -0,0 +1,9 @@ +/** + * Validator function + * Return true if the passed string is a valid tax identification number + * for the specified locale. + * Throw an error exception if the locale is not supported. + * @param str + * @param [locale=en-US] + */ +export default function isTaxID(str: string, locale?: string): boolean; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isURL.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isURL.d.ts new file mode 100755 index 00000000..b7890101 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isURL.d.ts @@ -0,0 +1,66 @@ +/** + * Check if the string is an URL. + * + * @param [options] - Options + */ +export default function isURL(str: string, options?: IsURLOptions): boolean; + +export interface IsURLOptions { + /** + * @default ['http','https','ftp'] + */ + protocols?: string[] | undefined; + /** + * @default true + */ + require_tld?: boolean | undefined; + /** + * @default false + */ + require_protocol?: boolean | undefined; + /** + * @default true + */ + require_host?: boolean | undefined; + /** + * if set as true isURL will check if port is present in the URL + * @default false + */ + require_port?: boolean | undefined; + /** + * @default true + */ + require_valid_protocol?: boolean | undefined; + /** + * @default false + */ + allow_underscores?: boolean | undefined; + /** + * @default false + */ + host_whitelist?: Array | undefined; + /** + * @default false + */ + host_blacklist?: Array | undefined; + /** + * @default false + */ + allow_trailing_dot?: boolean | undefined; + /** + * @default false + */ + allow_protocol_relative_urls?: boolean | undefined; + /** + * @default false + */ + disallow_auth?: boolean | undefined; + /** + * @default true + */ + allow_fragments?: boolean | undefined; + /** + * @default true + */ + allow_query_components?: boolean | undefined; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isUUID.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isUUID.d.ts new file mode 100755 index 00000000..e26b515f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isUUID.d.ts @@ -0,0 +1,3 @@ +import validator from '../'; +export type UUIDVersion = validator.UUIDVersion; +export default validator.isUUID; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isUppercase.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isUppercase.d.ts new file mode 100755 index 00000000..0ec2b066 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isUppercase.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isUppercase; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isVAT.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isVAT.d.ts new file mode 100755 index 00000000..6b32beb9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isVAT.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isVAT; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isVariableWidth.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isVariableWidth.d.ts new file mode 100755 index 00000000..3e3e17c7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isVariableWidth.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isVariableWidth; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isWhitelisted.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isWhitelisted.d.ts new file mode 100755 index 00000000..023ca6c0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/isWhitelisted.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.isWhitelisted; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/ltrim.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/ltrim.d.ts new file mode 100755 index 00000000..c1c07ca5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/ltrim.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.ltrim; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/matches.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/matches.d.ts new file mode 100755 index 00000000..b1c072a9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/matches.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.matches; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/normalizeEmail.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/normalizeEmail.d.ts new file mode 100755 index 00000000..9c30fd20 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/normalizeEmail.d.ts @@ -0,0 +1,3 @@ +import validator from '../'; +export type NormalizeEmailOptions = validator.NormalizeEmailOptions; +export default validator.normalizeEmail; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/rtrim.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/rtrim.d.ts new file mode 100755 index 00000000..0f115006 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/rtrim.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.rtrim; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/stripLow.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/stripLow.d.ts new file mode 100755 index 00000000..07a781e5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/stripLow.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.stripLow; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/toBoolean.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/toBoolean.d.ts new file mode 100755 index 00000000..66303286 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/toBoolean.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.toBoolean; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/toDate.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/toDate.d.ts new file mode 100755 index 00000000..e882d588 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/toDate.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.toDate; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/toFloat.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/toFloat.d.ts new file mode 100755 index 00000000..f089c1ce --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/toFloat.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.toFloat; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/toInt.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/toInt.d.ts new file mode 100755 index 00000000..50702812 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/toInt.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.toInt; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/trim.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/trim.d.ts new file mode 100755 index 00000000..af71bde0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/trim.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.trim; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/unescape.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/unescape.d.ts new file mode 100755 index 00000000..152dacc5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/unescape.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.unescape; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/whitelist.d.ts b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/whitelist.d.ts new file mode 100755 index 00000000..f8dc3f32 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/lib/whitelist.d.ts @@ -0,0 +1,2 @@ +import validator from '../'; +export default validator.whitelist; diff --git a/srcs/requirements/nestjs/api_back/node_modules/@types/validator/package.json b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/package.json new file mode 100755 index 00000000..ad055ee5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/@types/validator/package.json @@ -0,0 +1,75 @@ +{ + "name": "@types/validator", + "version": "13.7.9", + "description": "TypeScript definitions for validator.js", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/validator", + "license": "MIT", + "contributors": [ + { + "name": "tgfjt", + "url": "https://github.com/tgfjt", + "githubUsername": "tgfjt" + }, + { + "name": "Ilya Mochalov", + "url": "https://github.com/chrootsu", + "githubUsername": "chrootsu" + }, + { + "name": "Ayman Nedjmeddine", + "url": "https://github.com/IOAyman", + "githubUsername": "IOAyman" + }, + { + "name": "Louay Alakkad", + "url": "https://github.com/louy", + "githubUsername": "louy" + }, + { + "name": "Bonggyun Lee", + "url": "https://github.com/deptno", + "githubUsername": "deptno" + }, + { + "name": "Naoto Yokoyama", + "url": "https://github.com/builtinnya", + "githubUsername": "builtinnya" + }, + { + "name": "Philipp Katz", + "url": "https://github.com/qqilihq", + "githubUsername": "qqilihq" + }, + { + "name": "Jace Warren", + "url": "https://github.com/keatz55", + "githubUsername": "keatz55" + }, + { + "name": "Munif Tanjim", + "url": "https://github.com/MunifTanjim", + "githubUsername": "MunifTanjim" + }, + { + "name": "Vlad Poluch", + "url": "https://github.com/vlapo", + "githubUsername": "vlapo" + }, + { + "name": "Piotr Błażejewicz", + "url": "https://github.com/peterblazejewicz", + "githubUsername": "peterblazejewicz" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/validator" + }, + "scripts": {}, + "dependencies": {}, + "typesPublisherContentHash": "46d6bf51fa8b4d6fff133d5a1dad7b78bdac47a1e119fcc8d43bccc8973a8ac0", + "typeScriptVersion": "4.1" +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/LICENSE b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/LICENSE new file mode 100644 index 00000000..462148e9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/LICENSE @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) 2015-2020 TypeStack + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/README.md b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/README.md new file mode 100644 index 00000000..e48c2ac8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/README.md @@ -0,0 +1,901 @@ +# class-transformer + +![Build Status](https://github.com/typestack/class-transformer/workflows/CI/badge.svg) +[![codecov](https://codecov.io/gh/typestack/class-transformer/branch/develop/graph/badge.svg)](https://codecov.io/gh/typestack/class-transformer) +[![npm version](https://badge.fury.io/js/class-transformer.svg)](https://badge.fury.io/js/class-transformer) + +Its ES6 and Typescript era. Nowadays you are working with classes and constructor objects more than ever. +Class-transformer allows you to transform plain object to some instance of class and versa. +Also it allows to serialize / deserialize object based on criteria. +This tool is super useful on both frontend and backend. + +Example how to use with angular 2 in [plunker](http://plnkr.co/edit/Mja1ZYAjVySWASMHVB9R). +Source code is available [here](https://github.com/pleerock/class-transformer-demo). + +## Table of contents + +- [What is class-transformer](#what-is-class-transformer) +- [Installation](#installation) + - [Node.js](#nodejs) + - [Browser](#browser) +- [Methods](#methods) + - [plainToClass](#plaintoclass) + - [plainToClassFromExist](#plaintoclassfromexist) + - [classToPlain](#classtoplain) + - [classToClass](#classtoclass) + - [serialize](#serialize) + - [deserialize and deserializeArray](#deserialize-and-deserializearray) +- [Enforcing type-safe instance](#enforcing-type-safe-instance) +- [Working with nested objects](#working-with-nested-objects) + - [Providing more than one type option](#providing-more-than-one-type-option) +- [Exposing getters and method return values](#exposing-getters-and-method-return-values) +- [Exposing properties with different names](#exposing-properties-with-different-names) +- [Skipping specific properties](#skipping-specific-properties) +- [Skipping depend of operation](#skipping-depend-of-operation) +- [Skipping all properties of the class](#skipping-all-properties-of-the-class) +- [Skipping private properties, or some prefixed properties](#skipping-private-properties-or-some-prefixed-properties) +- [Using groups to control excluded properties](#using-groups-to-control-excluded-properties) +- [Using versioning to control exposed and excluded properties](#using-versioning-to-control-exposed-and-excluded-properties) +- [Сonverting date strings into Date objects](#сonverting-date-strings-into-date-objects) +- [Working with arrays](#working-with-arrays) +- [Additional data transformation](#additional-data-transformation) + - [Basic usage](#basic-usage) + - [Advanced usage](#advanced-usage) +- [Other decorators](#other-decorators) +- [Working with generics](#working-with-generics) +- [Implicit type conversion](#implicit-type-conversion) +- [How does it handle circular references?](#how-does-it-handle-circular-references) +- [Example with Angular2](#example-with-angular2) +- [Samples](#samples) +- [Release notes](#release-notes) + +## What is class-transformer[⬆](#table-of-contents) + +In JavaScript there are two types of objects: + +- plain (literal) objects +- class (constructor) objects + +Plain objects are objects that are instances of `Object` class. +Sometimes they are called **literal** objects, when created via `{}` notation. +Class objects are instances of classes with own defined constructor, properties and methods. +Usually you define them via `class` notation. + +So, what is the problem? + +Sometimes you want to transform plain javascript object to the ES6 **classes** you have. +For example, if you are loading a json from your backend, some api or from a json file, +and after you `JSON.parse` it you have a plain javascript object, not instance of class you have. + +For example you have a list of users in your `users.json` that you are loading: + +```json +[ + { + "id": 1, + "firstName": "Johny", + "lastName": "Cage", + "age": 27 + }, + { + "id": 2, + "firstName": "Ismoil", + "lastName": "Somoni", + "age": 50 + }, + { + "id": 3, + "firstName": "Luke", + "lastName": "Dacascos", + "age": 12 + } +] +``` + +And you have a `User` class: + +```typescript +export class User { + id: number; + firstName: string; + lastName: string; + age: number; + + getName() { + return this.firstName + ' ' + this.lastName; + } + + isAdult() { + return this.age > 36 && this.age < 60; + } +} +``` + +You are assuming that you are downloading users of type `User` from `users.json` file and may want to write +following code: + +```typescript +fetch('users.json').then((users: User[]) => { + // you can use users here, and type hinting also will be available to you, + // but users are not actually instances of User class + // this means that you can't use methods of User class +}); +``` + +In this code you can use `users[0].id`, you can also use `users[0].firstName` and `users[0].lastName`. +However you cannot use `users[0].getName()` or `users[0].isAdult()` because "users" actually is +array of plain javascript objects, not instances of User object. +You actually lied to compiler when you said that its `users: User[]`. + +So what to do? How to make a `users` array of instances of `User` objects instead of plain javascript objects? +Solution is to create new instances of User object and manually copy all properties to new objects. +But things may go wrong very fast once you have a more complex object hierarchy. + +Alternatives? Yes, you can use class-transformer. Purpose of this library is to help you to map your plain javascript +objects to the instances of classes you have. + +This library also great for models exposed in your APIs, +because it provides a great tooling to control what your models are exposing in your API. +Here is an example how it will look like: + +```typescript +fetch('users.json').then((users: Object[]) => { + const realUsers = plainToClass(User, users); + // now each user in realUsers is an instance of User class +}); +``` + +Now you can use `users[0].getName()` and `users[0].isAdult()` methods. + +## Installation[⬆](#table-of-contents) + +### Node.js[⬆](#table-of-contents) + +1. Install module: + + `npm install class-transformer --save` + +2. `reflect-metadata` shim is required, install it too: + + `npm install reflect-metadata --save` + + and make sure to import it in a global place, like app.ts: + + ```typescript + import 'reflect-metadata'; + ``` + +3. ES6 features are used, if you are using old version of node.js you may need to install es6-shim: + + `npm install es6-shim --save` + + and import it in a global place like app.ts: + + ```typescript + import 'es6-shim'; + ``` + +### Browser[⬆](#table-of-contents) + +1. Install module: + + `npm install class-transformer --save` + +2. `reflect-metadata` shim is required, install it too: + + `npm install reflect-metadata --save` + + add ` + + + + ``` + + If you are using angular 2 you should already have this shim installed. + +3. If you are using system.js you may want to add this into `map` and `package` config: + + ```json + { + "map": { + "class-transformer": "node_modules/class-transformer" + }, + "packages": { + "class-transformer": { "main": "index.js", "defaultExtension": "js" } + } + } + ``` + +## Methods[⬆](#table-of-contents) + +### plainToClass[⬆](#table-of-contents) + +This method transforms a plain javascript object to instance of specific class. + +```typescript +import { plainToClass } from 'class-transformer'; + +let users = plainToClass(User, userJson); // to convert user plain object a single user. also supports arrays +``` + +### plainToClassFromExist[⬆](#table-of-contents) + +This method transforms a plain object into an instance using an already filled Object which is an instance of the target class. + +```typescript +const defaultUser = new User(); +defaultUser.role = 'user'; + +let mixedUser = plainToClassFromExist(defaultUser, user); // mixed user should have the value role = user when no value is set otherwise. +``` + +### classToPlain[⬆](#table-of-contents) + +This method transforms your class object back to plain javascript object, that can be `JSON.stringify` later. + +```typescript +import { classToPlain } from 'class-transformer'; +let photo = classToPlain(photo); +``` + +### classToClass[⬆](#table-of-contents) + +This method transforms your class object into a new instance of the class object. +This may be treated as deep clone of your objects. + +```typescript +import { classToClass } from 'class-transformer'; +let photo = classToClass(photo); +``` + +You can also use an `ignoreDecorators` option in transformation options to ignore all decorators you classes is using. + +### serialize[⬆](#table-of-contents) + +You can serialize your model right to json using `serialize` method: + +```typescript +import { serialize } from 'class-transformer'; +let photo = serialize(photo); +``` + +`serialize` works with both arrays and non-arrays. + +### deserialize and deserializeArray[⬆](#table-of-contents) + +You can deserialize your model from json using the `deserialize` method: + +```typescript +import { deserialize } from 'class-transformer'; +let photo = deserialize(Photo, photo); +``` + +To make deserialization work with arrays, use the `deserializeArray` method: + +```typescript +import { deserializeArray } from 'class-transformer'; +let photos = deserializeArray(Photo, photos); +``` + +## Enforcing type-safe instance[⬆](#table-of-contents) + +The default behaviour of the `plainToClass` method is to set _all_ properties from the plain object, +even those which are not specified in the class. + +```typescript +import { plainToClass } from 'class-transformer'; + +class User { + id: number; + firstName: string; + lastName: string; +} + +const fromPlainUser = { + unkownProp: 'hello there', + firstName: 'Umed', + lastName: 'Khudoiberdiev', +}; + +console.log(plainToClass(User, fromPlainUser)); + +// User { +// unkownProp: 'hello there', +// firstName: 'Umed', +// lastName: 'Khudoiberdiev', +// } +``` + +If this behaviour does not suit your needs, you can use the `excludeExtraneousValues` option +in the `plainToClass` method while _exposing all your class properties_ as a requirement. + +```typescript +import { Expose, plainToClass } from 'class-transformer'; + +class User { + @Expose() id: number; + @Expose() firstName: string; + @Expose() lastName: string; +} + +const fromPlainUser = { + unkownProp: 'hello there', + firstName: 'Umed', + lastName: 'Khudoiberdiev', +}; + +console.log(plainToClass(User, fromPlainUser, { excludeExtraneousValues: true })); + +// User { +// id: undefined, +// firstName: 'Umed', +// lastName: 'Khudoiberdiev' +// } +``` + +## Working with nested objects[⬆](#table-of-contents) + +When you are trying to transform objects that have nested objects, +it's required to known what type of object you are trying to transform. +Since Typescript does not have good reflection abilities yet, +we should implicitly specify what type of object each property contain. +This is done using `@Type` decorator. + +Lets say we have an album with photos. +And we are trying to convert album plain object to class object: + +```typescript +import { Type, plainToClass } from 'class-transformer'; + +export class Album { + id: number; + + name: string; + + @Type(() => Photo) + photos: Photo[]; +} + +export class Photo { + id: number; + filename: string; +} + +let album = plainToClass(Album, albumJson); +// now album is Album object with Photo objects inside +``` + +### Providing more than one type option[⬆](#table-of-contents) + +In case the nested object can be of different types, you can provide an additional options object, +that specifies a discriminator. The discriminator option must define a `property` that holds the subtype +name for the object and the possible `subTypes` that the nested object can converted to. A sub type +has a `value`, that holds the constructor of the Type and the `name`, that can match with the `property` +of the discriminator. + +Lets say we have an album that has a top photo. But this photo can be of certain different types. +And we are trying to convert album plain object to class object. The plain object input has to define +the additional property `__type`. This property is removed during transformation by default: + +**JSON input**: + +```json +{ + "id": 1, + "name": "foo", + "topPhoto": { + "id": 9, + "filename": "cool_wale.jpg", + "depth": 1245, + "__type": "underwater" + } +} +``` + +```typescript +import { Type, plainToClass } from 'class-transformer'; + +export abstract class Photo { + id: number; + filename: string; +} + +export class Landscape extends Photo { + panorama: boolean; +} + +export class Portrait extends Photo { + person: Person; +} + +export class UnderWater extends Photo { + depth: number; +} + +export class Album { + id: number; + name: string; + + @Type(() => Photo, { + discriminator: { + property: '__type', + subTypes: [ + { value: Landscape, name: 'landscape' }, + { value: Portrait, name: 'portrait' }, + { value: UnderWater, name: 'underwater' }, + ], + }, + }) + topPhoto: Landscape | Portrait | UnderWater; +} + +let album = plainToClass(Album, albumJson); +// now album is Album object with a UnderWater object without `__type` property. +``` + +Hint: The same applies for arrays with different sub types. Moreover you can specify `keepDiscriminatorProperty: true` +in the options to keep the discriminator property also inside your resulting class. + +## Exposing getters and method return values[⬆](#table-of-contents) + +You can expose what your getter or method return by setting an `@Expose()` decorator to those getters or methods: + +```typescript +import { Expose } from 'class-transformer'; + +export class User { + id: number; + firstName: string; + lastName: string; + password: string; + + @Expose() + get name() { + return this.firstName + ' ' + this.lastName; + } + + @Expose() + getFullName() { + return this.firstName + ' ' + this.lastName; + } +} +``` + +## Exposing properties with different names[⬆](#table-of-contents) + +If you want to expose some of the properties with a different name, +you can do that by specifying a `name` option to `@Expose` decorator: + +```typescript +import { Expose } from 'class-transformer'; + +export class User { + @Expose({ name: 'uid' }) + id: number; + + firstName: string; + + lastName: string; + + @Expose({ name: 'secretKey' }) + password: string; + + @Expose({ name: 'fullName' }) + getFullName() { + return this.firstName + ' ' + this.lastName; + } +} +``` + +## Skipping specific properties[⬆](#table-of-contents) + +Sometimes you want to skip some properties during transformation. +This can be done using `@Exclude` decorator: + +```typescript +import { Exclude } from 'class-transformer'; + +export class User { + id: number; + + email: string; + + @Exclude() + password: string; +} +``` + +Now when you transform a User, the `password` property will be skipped and not be included in the transformed result. + +## Skipping depend of operation[⬆](#table-of-contents) + +You can control on what operation you will exclude a property. Use `toClassOnly` or `toPlainOnly` options: + +```typescript +import { Exclude } from 'class-transformer'; + +export class User { + id: number; + + email: string; + + @Exclude({ toPlainOnly: true }) + password: string; +} +``` + +Now `password` property will be excluded only during `classToPlain` operation. Vice versa, use the `toClassOnly` option. + +## Skipping all properties of the class[⬆](#table-of-contents) + +You can skip all properties of the class, and expose only those are needed explicitly: + +```typescript +import { Exclude, Expose } from 'class-transformer'; + +@Exclude() +export class User { + @Expose() + id: number; + + @Expose() + email: string; + + password: string; +} +``` + +Now `id` and `email` will be exposed, and password will be excluded during transformation. +Alternatively, you can set exclusion strategy during transformation: + +```typescript +import { classToPlain } from 'class-transformer'; +let photo = classToPlain(photo, { strategy: 'excludeAll' }); +``` + +In this case you don't need to `@Exclude()` a whole class. + +## Skipping private properties, or some prefixed properties[⬆](#table-of-contents) + +If you name your private properties with a prefix, lets say with `_`, +then you can exclude such properties from transformation too: + +```typescript +import { classToPlain } from 'class-transformer'; +let photo = classToPlain(photo, { excludePrefixes: ['_'] }); +``` + +This will skip all properties that start with `_` prefix. +You can pass any number of prefixes and all properties that begin with these prefixes will be ignored. +For example: + +```typescript +import { Expose, classToPlain } from 'class-transformer'; + +export class User { + id: number; + private _firstName: string; + private _lastName: string; + _password: string; + + setName(firstName: string, lastName: string) { + this._firstName = firstName; + this._lastName = lastName; + } + + @Expose() + get name() { + return this._firstName + ' ' + this._lastName; + } +} + +const user = new User(); +user.id = 1; +user.setName('Johny', 'Cage'); +user._password = '123'; + +const plainUser = classToPlain(user, { excludePrefixes: ['_'] }); +// here plainUser will be equal to +// { id: 1, name: "Johny Cage" } +``` + +## Using groups to control excluded properties[⬆](#table-of-contents) + +You can use groups to control what data will be exposed and what will not be: + +```typescript +import { Exclude, Expose, classToPlain } from 'class-transformer'; + +export class User { + id: number; + + name: string; + + @Expose({ groups: ['user', 'admin'] }) // this means that this data will be exposed only to users and admins + email: string; + + @Expose({ groups: ['user'] }) // this means that this data will be exposed only to users + password: string; +} + +let user1 = classToPlain(user, { groups: ['user'] }); // will contain id, name, email and password +let user2 = classToPlain(user, { groups: ['admin'] }); // will contain id, name and email +``` + +## Using versioning to control exposed and excluded properties[⬆](#table-of-contents) + +If you are building an API that has different versions, class-transformer has extremely useful tools for that. +You can control which properties of your model should be exposed or excluded in what version. Example: + +```typescript +import { Exclude, Expose, classToPlain } from 'class-transformer'; + +export class User { + id: number; + + name: string; + + @Expose({ since: 0.7, until: 1 }) // this means that this property will be exposed for version starting from 0.7 until 1 + email: string; + + @Expose({ since: 2.1 }) // this means that this property will be exposed for version starting from 2.1 + password: string; +} + +let user1 = classToPlain(user, { version: 0.5 }); // will contain id and name +let user2 = classToPlain(user, { version: 0.7 }); // will contain id, name and email +let user3 = classToPlain(user, { version: 1 }); // will contain id and name +let user4 = classToPlain(user, { version: 2 }); // will contain id and name +let user5 = classToPlain(user, { version: 2.1 }); // will contain id, name and password +``` + +## Сonverting date strings into Date objects[⬆](#table-of-contents) + +Sometimes you have a Date in your plain javascript object received in a string format. +And you want to create a real javascript Date object from it. +You can do it simply by passing a Date object to the `@Type` decorator: + +```typescript +import { Type } from 'class-transformer'; + +export class User { + id: number; + + email: string; + + password: string; + + @Type(() => Date) + registrationDate: Date; +} +``` + +Same technique can be used with `Number`, `String`, `Boolean` +primitive types when you want to convert your values into these types. + +## Working with arrays[⬆](#table-of-contents) + +When you are using arrays you must provide a type of the object that array contains. +This type, you specify in a `@Type()` decorator: + +```typescript +import { Type } from 'class-transformer'; + +export class Photo { + id: number; + + name: string; + + @Type(() => Album) + albums: Album[]; +} +``` + +You can also use custom array types: + +```typescript +import { Type } from 'class-transformer'; + +export class AlbumCollection extends Array { + // custom array functions ... +} + +export class Photo { + id: number; + + name: string; + + @Type(() => Album) + albums: AlbumCollection; +} +``` + +Library will handle proper transformation automatically. + +ES6 collections `Set` and `Map` also require the `@Type` decorator: + +```typescript +export class Skill { + name: string; +} + +export class Weapon { + name: string; + range: number; +} + +export class Player { + name: string; + + @Type(() => Skill) + skills: Set; + + @Type(() => Weapon) + weapons: Map; +} +``` + +## Additional data transformation[⬆](#table-of-contents) + +### Basic usage[⬆](#table-of-contents) + +You can perform additional data transformation using `@Transform` decorator. +For example, you want to make your `Date` object to be a `moment` object when you are +transforming object from plain to class: + +```typescript +import { Transform } from 'class-transformer'; +import * as moment from 'moment'; +import { Moment } from 'moment'; + +export class Photo { + id: number; + + @Type(() => Date) + @Transform(({ value }) => moment(value), { toClassOnly: true }) + date: Moment; +} +``` + +Now when you call `plainToClass` and send a plain representation of the Photo object, +it will convert a date value in your photo object to moment date. +`@Transform` decorator also supports groups and versioning. + +### Advanced usage[⬆](#table-of-contents) + +The `@Transform` decorator is given more arguments to let you configure how you want the transformation to be done. + +```ts +@Transform(({ value, key, obj, type }) => value) +``` + +| Argument | Description | +| --------- | ------------------------------------------------------- | +| `value` | The property value before the transformation. | +| `key` | The name of the transformed property. | +| `obj` | The transformation source object. | +| `type` | The transformation type. | +| `options` | The options object passed to the transformation method. | + +## Other decorators[⬆](#table-of-contents) + +| Signature | Example | Description | +| ------------------------ | ---------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `@TransformClassToPlain` | `@TransformClassToPlain({ groups: ["user"] })` | Transform the method return with classToPlain and expose the properties on the class. | +| `@TransformClassToClass` | `@TransformClassToClass({ groups: ["user"] })` | Transform the method return with classToClass and expose the properties on the class. | +| `@TransformPlainToClass` | `@TransformPlainToClass(User, { groups: ["user"] })` | Transform the method return with plainToClass and expose the properties on the class. | + +The above decorators accept one optional argument: +ClassTransformOptions - The transform options like groups, version, name + +An example: + +```typescript +@Exclude() +class User { + id: number; + + @Expose() + firstName: string; + + @Expose() + lastName: string; + + @Expose({ groups: ['user.email'] }) + email: string; + + password: string; +} + +class UserController { + @TransformClassToPlain({ groups: ['user.email'] }) + getUser() { + const user = new User(); + user.firstName = 'Snir'; + user.lastName = 'Segal'; + user.password = 'imnosuperman'; + + return user; + } +} + +const controller = new UserController(); +const user = controller.getUser(); +``` + +the `user` variable will contain only firstName,lastName, email properties because they are +the exposed variables. email property is also exposed because we metioned the group "user.email". + +## Working with generics[⬆](#table-of-contents) + +Generics are not supported because TypeScript does not have good reflection abilities yet. +Once TypeScript team provide us better runtime type reflection tools, generics will be implemented. +There are some tweaks however you can use, that maybe can solve your problem. +[Checkout this example.](https://github.com/pleerock/class-transformer/tree/master/sample/sample4-generics) + +## Implicit type conversion[⬆](#table-of-contents) + +> **NOTE** If you use class-validator together with class-transformer you propably DON'T want to enable this function. + +Enables automatic conversion between built-in types based on type information provided by Typescript. Disabled by default. + +```ts +import { IsString } from 'class-validator'; + +class MyPayload { + @IsString() + prop: string; +} + +const result1 = plainToClass(MyPayload, { prop: 1234 }, { enableImplicitConversion: true }); +const result2 = plainToClass(MyPayload, { prop: 1234 }, { enableImplicitConversion: false }); + +/** + * result1 will be `{ prop: "1234" }` - notice how the prop value has been converted to string. + * result2 will be `{ prop: 1234 }` - default behaviour + */ +``` + +## How does it handle circular references?[⬆](#table-of-contents) + +Circular references are ignored. +For example, if you are transforming class `User` that contains property `photos` with type of `Photo`, +and `Photo` contains link `user` to its parent `User`, then `user` will be ignored during transformation. +Circular references are not ignored only during `classToClass` operation. + +## Example with Angular2[⬆](#table-of-contents) + +Lets say you want to download users and want them automatically to be mapped to the instances of `User` class. + +```typescript +import { plainToClass } from 'class-transformer'; + +this.http + .get('users.json') + .map(res => res.json()) + .map(res => plainToClass(User, res as Object[])) + .subscribe(users => { + // now "users" is type of User[] and each user has getName() and isAdult() methods available + console.log(users); + }); +``` + +You can also inject a class `ClassTransformer` as a service in `providers`, and use its methods. + +Example how to use with angular 2 in [plunker](http://plnkr.co/edit/Mja1ZYAjVySWASMHVB9R). +Source code is [here](https://github.com/pleerock/class-transformer-demo). + +## Samples[⬆](#table-of-contents) + +Take a look on samples in [./sample](https://github.com/pleerock/class-transformer/tree/master/sample) for more examples of +usages. + +## Release notes[⬆](#table-of-contents) + +See information about breaking changes and release notes [here](https://github.com/typestack/class-transformer/blob/master/CHANGELOG.md). diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/bundles/class-transformer.umd.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/bundles/class-transformer.umd.js new file mode 100644 index 00000000..bf101657 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/bundles/class-transformer.umd.js @@ -0,0 +1,1056 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ClassTransformer = {})); +})(this, (function (exports) { 'use strict'; + + exports.TransformationType = void 0; + (function (TransformationType) { + TransformationType[TransformationType["PLAIN_TO_CLASS"] = 0] = "PLAIN_TO_CLASS"; + TransformationType[TransformationType["CLASS_TO_PLAIN"] = 1] = "CLASS_TO_PLAIN"; + TransformationType[TransformationType["CLASS_TO_CLASS"] = 2] = "CLASS_TO_CLASS"; + })(exports.TransformationType || (exports.TransformationType = {})); + + /** + * Storage all library metadata. + */ + var MetadataStorage = /** @class */ (function () { + function MetadataStorage() { + // ------------------------------------------------------------------------- + // Properties + // ------------------------------------------------------------------------- + this._typeMetadatas = new Map(); + this._transformMetadatas = new Map(); + this._exposeMetadatas = new Map(); + this._excludeMetadatas = new Map(); + this._ancestorsMap = new Map(); + } + // ------------------------------------------------------------------------- + // Adder Methods + // ------------------------------------------------------------------------- + MetadataStorage.prototype.addTypeMetadata = function (metadata) { + if (!this._typeMetadatas.has(metadata.target)) { + this._typeMetadatas.set(metadata.target, new Map()); + } + this._typeMetadatas.get(metadata.target).set(metadata.propertyName, metadata); + }; + MetadataStorage.prototype.addTransformMetadata = function (metadata) { + if (!this._transformMetadatas.has(metadata.target)) { + this._transformMetadatas.set(metadata.target, new Map()); + } + if (!this._transformMetadatas.get(metadata.target).has(metadata.propertyName)) { + this._transformMetadatas.get(metadata.target).set(metadata.propertyName, []); + } + this._transformMetadatas.get(metadata.target).get(metadata.propertyName).push(metadata); + }; + MetadataStorage.prototype.addExposeMetadata = function (metadata) { + if (!this._exposeMetadatas.has(metadata.target)) { + this._exposeMetadatas.set(metadata.target, new Map()); + } + this._exposeMetadatas.get(metadata.target).set(metadata.propertyName, metadata); + }; + MetadataStorage.prototype.addExcludeMetadata = function (metadata) { + if (!this._excludeMetadatas.has(metadata.target)) { + this._excludeMetadatas.set(metadata.target, new Map()); + } + this._excludeMetadatas.get(metadata.target).set(metadata.propertyName, metadata); + }; + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + MetadataStorage.prototype.findTransformMetadatas = function (target, propertyName, transformationType) { + return this.findMetadatas(this._transformMetadatas, target, propertyName).filter(function (metadata) { + if (!metadata.options) + return true; + if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true) + return true; + if (metadata.options.toClassOnly === true) { + return (transformationType === exports.TransformationType.CLASS_TO_CLASS || + transformationType === exports.TransformationType.PLAIN_TO_CLASS); + } + if (metadata.options.toPlainOnly === true) { + return transformationType === exports.TransformationType.CLASS_TO_PLAIN; + } + return true; + }); + }; + MetadataStorage.prototype.findExcludeMetadata = function (target, propertyName) { + return this.findMetadata(this._excludeMetadatas, target, propertyName); + }; + MetadataStorage.prototype.findExposeMetadata = function (target, propertyName) { + return this.findMetadata(this._exposeMetadatas, target, propertyName); + }; + MetadataStorage.prototype.findExposeMetadataByCustomName = function (target, name) { + return this.getExposedMetadatas(target).find(function (metadata) { + return metadata.options && metadata.options.name === name; + }); + }; + MetadataStorage.prototype.findTypeMetadata = function (target, propertyName) { + return this.findMetadata(this._typeMetadatas, target, propertyName); + }; + MetadataStorage.prototype.getStrategy = function (target) { + var excludeMap = this._excludeMetadatas.get(target); + var exclude = excludeMap && excludeMap.get(undefined); + var exposeMap = this._exposeMetadatas.get(target); + var expose = exposeMap && exposeMap.get(undefined); + if ((exclude && expose) || (!exclude && !expose)) + return 'none'; + return exclude ? 'excludeAll' : 'exposeAll'; + }; + MetadataStorage.prototype.getExposedMetadatas = function (target) { + return this.getMetadata(this._exposeMetadatas, target); + }; + MetadataStorage.prototype.getExcludedMetadatas = function (target) { + return this.getMetadata(this._excludeMetadatas, target); + }; + MetadataStorage.prototype.getExposedProperties = function (target, transformationType) { + return this.getExposedMetadatas(target) + .filter(function (metadata) { + if (!metadata.options) + return true; + if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true) + return true; + if (metadata.options.toClassOnly === true) { + return (transformationType === exports.TransformationType.CLASS_TO_CLASS || + transformationType === exports.TransformationType.PLAIN_TO_CLASS); + } + if (metadata.options.toPlainOnly === true) { + return transformationType === exports.TransformationType.CLASS_TO_PLAIN; + } + return true; + }) + .map(function (metadata) { return metadata.propertyName; }); + }; + MetadataStorage.prototype.getExcludedProperties = function (target, transformationType) { + return this.getExcludedMetadatas(target) + .filter(function (metadata) { + if (!metadata.options) + return true; + if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true) + return true; + if (metadata.options.toClassOnly === true) { + return (transformationType === exports.TransformationType.CLASS_TO_CLASS || + transformationType === exports.TransformationType.PLAIN_TO_CLASS); + } + if (metadata.options.toPlainOnly === true) { + return transformationType === exports.TransformationType.CLASS_TO_PLAIN; + } + return true; + }) + .map(function (metadata) { return metadata.propertyName; }); + }; + MetadataStorage.prototype.clear = function () { + this._typeMetadatas.clear(); + this._exposeMetadatas.clear(); + this._excludeMetadatas.clear(); + this._ancestorsMap.clear(); + }; + // ------------------------------------------------------------------------- + // Private Methods + // ------------------------------------------------------------------------- + MetadataStorage.prototype.getMetadata = function (metadatas, target) { + var metadataFromTargetMap = metadatas.get(target); + var metadataFromTarget; + if (metadataFromTargetMap) { + metadataFromTarget = Array.from(metadataFromTargetMap.values()).filter(function (meta) { return meta.propertyName !== undefined; }); + } + var metadataFromAncestors = []; + for (var _i = 0, _a = this.getAncestors(target); _i < _a.length; _i++) { + var ancestor = _a[_i]; + var ancestorMetadataMap = metadatas.get(ancestor); + if (ancestorMetadataMap) { + var metadataFromAncestor = Array.from(ancestorMetadataMap.values()).filter(function (meta) { return meta.propertyName !== undefined; }); + metadataFromAncestors.push.apply(metadataFromAncestors, metadataFromAncestor); + } + } + return metadataFromAncestors.concat(metadataFromTarget || []); + }; + MetadataStorage.prototype.findMetadata = function (metadatas, target, propertyName) { + var metadataFromTargetMap = metadatas.get(target); + if (metadataFromTargetMap) { + var metadataFromTarget = metadataFromTargetMap.get(propertyName); + if (metadataFromTarget) { + return metadataFromTarget; + } + } + for (var _i = 0, _a = this.getAncestors(target); _i < _a.length; _i++) { + var ancestor = _a[_i]; + var ancestorMetadataMap = metadatas.get(ancestor); + if (ancestorMetadataMap) { + var ancestorResult = ancestorMetadataMap.get(propertyName); + if (ancestorResult) { + return ancestorResult; + } + } + } + return undefined; + }; + MetadataStorage.prototype.findMetadatas = function (metadatas, target, propertyName) { + var metadataFromTargetMap = metadatas.get(target); + var metadataFromTarget; + if (metadataFromTargetMap) { + metadataFromTarget = metadataFromTargetMap.get(propertyName); + } + var metadataFromAncestorsTarget = []; + for (var _i = 0, _a = this.getAncestors(target); _i < _a.length; _i++) { + var ancestor = _a[_i]; + var ancestorMetadataMap = metadatas.get(ancestor); + if (ancestorMetadataMap) { + if (ancestorMetadataMap.has(propertyName)) { + metadataFromAncestorsTarget.push.apply(metadataFromAncestorsTarget, ancestorMetadataMap.get(propertyName)); + } + } + } + return metadataFromAncestorsTarget + .slice() + .reverse() + .concat((metadataFromTarget || []).slice().reverse()); + }; + MetadataStorage.prototype.getAncestors = function (target) { + if (!target) + return []; + if (!this._ancestorsMap.has(target)) { + var ancestors = []; + for (var baseClass = Object.getPrototypeOf(target.prototype.constructor); typeof baseClass.prototype !== 'undefined'; baseClass = Object.getPrototypeOf(baseClass.prototype.constructor)) { + ancestors.push(baseClass); + } + this._ancestorsMap.set(target, ancestors); + } + return this._ancestorsMap.get(target); + }; + return MetadataStorage; + }()); + + /** + * Default metadata storage is used as singleton and can be used to storage all metadatas. + */ + var defaultMetadataStorage = new MetadataStorage(); + + /** + * This function returns the global object across Node and browsers. + * + * Note: `globalThis` is the standardized approach however it has been added to + * Node.js in version 12. We need to include this snippet until Node 12 EOL. + */ + function getGlobal() { + if (typeof globalThis !== 'undefined') { + return globalThis; + } + if (typeof global !== 'undefined') { + return global; + } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'window'. + if (typeof window !== 'undefined') { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'window'. + return window; + } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'self'. + if (typeof self !== 'undefined') { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'self'. + return self; + } + } + + function isPromise(p) { + return p !== null && typeof p === 'object' && typeof p.then === 'function'; + } + + var __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); + }; + function instantiateArrayType(arrayType) { + var array = new arrayType(); + if (!(array instanceof Set) && !('push' in array)) { + return []; + } + return array; + } + var TransformOperationExecutor = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function TransformOperationExecutor(transformationType, options) { + this.transformationType = transformationType; + this.options = options; + // ------------------------------------------------------------------------- + // Private Properties + // ------------------------------------------------------------------------- + this.recursionStack = new Set(); + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + TransformOperationExecutor.prototype.transform = function (source, value, targetType, arrayType, isMap, level) { + var _this = this; + if (level === void 0) { level = 0; } + if (Array.isArray(value) || value instanceof Set) { + var newValue_1 = arrayType && this.transformationType === exports.TransformationType.PLAIN_TO_CLASS + ? instantiateArrayType(arrayType) + : []; + value.forEach(function (subValue, index) { + var subSource = source ? source[index] : undefined; + if (!_this.options.enableCircularCheck || !_this.isCircular(subValue)) { + var realTargetType = void 0; + if (typeof targetType !== 'function' && + targetType && + targetType.options && + targetType.options.discriminator && + targetType.options.discriminator.property && + targetType.options.discriminator.subTypes) { + if (_this.transformationType === exports.TransformationType.PLAIN_TO_CLASS) { + realTargetType = targetType.options.discriminator.subTypes.find(function (subType) { + return subType.name === subValue[targetType.options.discriminator.property]; + }); + var options = { newObject: newValue_1, object: subValue, property: undefined }; + var newType = targetType.typeFunction(options); + realTargetType === undefined ? (realTargetType = newType) : (realTargetType = realTargetType.value); + if (!targetType.options.keepDiscriminatorProperty) + delete subValue[targetType.options.discriminator.property]; + } + if (_this.transformationType === exports.TransformationType.CLASS_TO_CLASS) { + realTargetType = subValue.constructor; + } + if (_this.transformationType === exports.TransformationType.CLASS_TO_PLAIN) { + subValue[targetType.options.discriminator.property] = targetType.options.discriminator.subTypes.find(function (subType) { return subType.value === subValue.constructor; }).name; + } + } + else { + realTargetType = targetType; + } + var value_1 = _this.transform(subSource, subValue, realTargetType, undefined, subValue instanceof Map, level + 1); + if (newValue_1 instanceof Set) { + newValue_1.add(value_1); + } + else { + newValue_1.push(value_1); + } + } + else if (_this.transformationType === exports.TransformationType.CLASS_TO_CLASS) { + if (newValue_1 instanceof Set) { + newValue_1.add(subValue); + } + else { + newValue_1.push(subValue); + } + } + }); + return newValue_1; + } + else if (targetType === String && !isMap) { + if (value === null || value === undefined) + return value; + return String(value); + } + else if (targetType === Number && !isMap) { + if (value === null || value === undefined) + return value; + return Number(value); + } + else if (targetType === Boolean && !isMap) { + if (value === null || value === undefined) + return value; + return Boolean(value); + } + else if ((targetType === Date || value instanceof Date) && !isMap) { + if (value instanceof Date) { + return new Date(value.valueOf()); + } + if (value === null || value === undefined) + return value; + return new Date(value); + } + else if (!!getGlobal().Buffer && (targetType === Buffer || value instanceof Buffer) && !isMap) { + if (value === null || value === undefined) + return value; + return Buffer.from(value); + } + else if (isPromise(value) && !isMap) { + return new Promise(function (resolve, reject) { + value.then(function (data) { return resolve(_this.transform(undefined, data, targetType, undefined, undefined, level + 1)); }, reject); + }); + } + else if (!isMap && value !== null && typeof value === 'object' && typeof value.then === 'function') { + // Note: We should not enter this, as promise has been handled above + // This option simply returns the Promise preventing a JS error from happening and should be an inaccessible path. + return value; // skip promise transformation + } + else if (typeof value === 'object' && value !== null) { + // try to guess the type + if (!targetType && value.constructor !== Object /* && TransformationType === TransformationType.CLASS_TO_PLAIN*/) + if (!Array.isArray(value) && value.constructor === Array) ; + else { + // We are good we can use the built-in constructor + targetType = value.constructor; + } + if (!targetType && source) + targetType = source.constructor; + if (this.options.enableCircularCheck) { + // add transformed type to prevent circular references + this.recursionStack.add(value); + } + var keys = this.getKeys(targetType, value, isMap); + var newValue = source ? source : {}; + if (!source && + (this.transformationType === exports.TransformationType.PLAIN_TO_CLASS || + this.transformationType === exports.TransformationType.CLASS_TO_CLASS)) { + if (isMap) { + newValue = new Map(); + } + else if (targetType) { + newValue = new targetType(); + } + else { + newValue = {}; + } + } + var _loop_1 = function (key) { + if (key === '__proto__' || key === 'constructor') { + return "continue"; + } + var valueKey = key; + var newValueKey = key, propertyName = key; + if (!this_1.options.ignoreDecorators && targetType) { + if (this_1.transformationType === exports.TransformationType.PLAIN_TO_CLASS) { + var exposeMetadata = defaultMetadataStorage.findExposeMetadataByCustomName(targetType, key); + if (exposeMetadata) { + propertyName = exposeMetadata.propertyName; + newValueKey = exposeMetadata.propertyName; + } + } + else if (this_1.transformationType === exports.TransformationType.CLASS_TO_PLAIN || + this_1.transformationType === exports.TransformationType.CLASS_TO_CLASS) { + var exposeMetadata = defaultMetadataStorage.findExposeMetadata(targetType, key); + if (exposeMetadata && exposeMetadata.options && exposeMetadata.options.name) { + newValueKey = exposeMetadata.options.name; + } + } + } + // get a subvalue + var subValue = undefined; + if (this_1.transformationType === exports.TransformationType.PLAIN_TO_CLASS) { + /** + * This section is added for the following report: + * https://github.com/typestack/class-transformer/issues/596 + * + * We should not call functions or constructors when transforming to class. + */ + subValue = value[valueKey]; + } + else { + if (value instanceof Map) { + subValue = value.get(valueKey); + } + else if (value[valueKey] instanceof Function) { + subValue = value[valueKey](); + } + else { + subValue = value[valueKey]; + } + } + // determine a type + var type = undefined, isSubValueMap = subValue instanceof Map; + if (targetType && isMap) { + type = targetType; + } + else if (targetType) { + var metadata_1 = defaultMetadataStorage.findTypeMetadata(targetType, propertyName); + if (metadata_1) { + var options = { newObject: newValue, object: value, property: propertyName }; + var newType = metadata_1.typeFunction ? metadata_1.typeFunction(options) : metadata_1.reflectedType; + if (metadata_1.options && + metadata_1.options.discriminator && + metadata_1.options.discriminator.property && + metadata_1.options.discriminator.subTypes) { + if (!(value[valueKey] instanceof Array)) { + if (this_1.transformationType === exports.TransformationType.PLAIN_TO_CLASS) { + type = metadata_1.options.discriminator.subTypes.find(function (subType) { + if (subValue && subValue instanceof Object && metadata_1.options.discriminator.property in subValue) { + return subType.name === subValue[metadata_1.options.discriminator.property]; + } + }); + type === undefined ? (type = newType) : (type = type.value); + if (!metadata_1.options.keepDiscriminatorProperty) { + if (subValue && subValue instanceof Object && metadata_1.options.discriminator.property in subValue) { + delete subValue[metadata_1.options.discriminator.property]; + } + } + } + if (this_1.transformationType === exports.TransformationType.CLASS_TO_CLASS) { + type = subValue.constructor; + } + if (this_1.transformationType === exports.TransformationType.CLASS_TO_PLAIN) { + if (subValue) { + subValue[metadata_1.options.discriminator.property] = metadata_1.options.discriminator.subTypes.find(function (subType) { return subType.value === subValue.constructor; }).name; + } + } + } + else { + type = metadata_1; + } + } + else { + type = newType; + } + isSubValueMap = isSubValueMap || metadata_1.reflectedType === Map; + } + else if (this_1.options.targetMaps) { + // try to find a type in target maps + this_1.options.targetMaps + .filter(function (map) { return map.target === targetType && !!map.properties[propertyName]; }) + .forEach(function (map) { return (type = map.properties[propertyName]); }); + } + else if (this_1.options.enableImplicitConversion && + this_1.transformationType === exports.TransformationType.PLAIN_TO_CLASS) { + // if we have no registererd type via the @Type() decorator then we check if we have any + // type declarations in reflect-metadata (type declaration is emited only if some decorator is added to the property.) + var reflectedType = Reflect.getMetadata('design:type', targetType.prototype, propertyName); + if (reflectedType) { + type = reflectedType; + } + } + } + // if value is an array try to get its custom array type + var arrayType_1 = Array.isArray(value[valueKey]) + ? this_1.getReflectedType(targetType, propertyName) + : undefined; + // const subValueKey = TransformationType === TransformationType.PLAIN_TO_CLASS && newKeyName ? newKeyName : key; + var subSource = source ? source[valueKey] : undefined; + // if its deserialization then type if required + // if we uncomment this types like string[] will not work + // if (this.transformationType === TransformationType.PLAIN_TO_CLASS && !type && subValue instanceof Object && !(subValue instanceof Date)) + // throw new Error(`Cannot determine type for ${(targetType as any).name }.${propertyName}, did you forget to specify a @Type?`); + // if newValue is a source object that has method that match newKeyName then skip it + if (newValue.constructor.prototype) { + var descriptor = Object.getOwnPropertyDescriptor(newValue.constructor.prototype, newValueKey); + if ((this_1.transformationType === exports.TransformationType.PLAIN_TO_CLASS || + this_1.transformationType === exports.TransformationType.CLASS_TO_CLASS) && + // eslint-disable-next-line @typescript-eslint/unbound-method + ((descriptor && !descriptor.set) || newValue[newValueKey] instanceof Function)) + return "continue"; + } + if (!this_1.options.enableCircularCheck || !this_1.isCircular(subValue)) { + var transformKey = this_1.transformationType === exports.TransformationType.PLAIN_TO_CLASS ? newValueKey : key; + var finalValue = void 0; + if (this_1.transformationType === exports.TransformationType.CLASS_TO_PLAIN) { + // Get original value + finalValue = value[transformKey]; + // Apply custom transformation + finalValue = this_1.applyCustomTransformations(finalValue, targetType, transformKey, value, this_1.transformationType); + // If nothing change, it means no custom transformation was applied, so use the subValue. + finalValue = value[transformKey] === finalValue ? subValue : finalValue; + // Apply the default transformation + finalValue = this_1.transform(subSource, finalValue, type, arrayType_1, isSubValueMap, level + 1); + } + else { + if (subValue === undefined && this_1.options.exposeDefaultValues) { + // Set default value if nothing provided + finalValue = newValue[newValueKey]; + } + else { + finalValue = this_1.transform(subSource, subValue, type, arrayType_1, isSubValueMap, level + 1); + finalValue = this_1.applyCustomTransformations(finalValue, targetType, transformKey, value, this_1.transformationType); + } + } + if (finalValue !== undefined || this_1.options.exposeUnsetFields) { + if (newValue instanceof Map) { + newValue.set(newValueKey, finalValue); + } + else { + newValue[newValueKey] = finalValue; + } + } + } + else if (this_1.transformationType === exports.TransformationType.CLASS_TO_CLASS) { + var finalValue = subValue; + finalValue = this_1.applyCustomTransformations(finalValue, targetType, key, value, this_1.transformationType); + if (finalValue !== undefined || this_1.options.exposeUnsetFields) { + if (newValue instanceof Map) { + newValue.set(newValueKey, finalValue); + } + else { + newValue[newValueKey] = finalValue; + } + } + } + }; + var this_1 = this; + // traverse over keys + for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) { + var key = keys_1[_i]; + _loop_1(key); + } + if (this.options.enableCircularCheck) { + this.recursionStack.delete(value); + } + return newValue; + } + else { + return value; + } + }; + TransformOperationExecutor.prototype.applyCustomTransformations = function (value, target, key, obj, transformationType) { + var _this = this; + var metadatas = defaultMetadataStorage.findTransformMetadatas(target, key, this.transformationType); + // apply versioning options + if (this.options.version !== undefined) { + metadatas = metadatas.filter(function (metadata) { + if (!metadata.options) + return true; + return _this.checkVersion(metadata.options.since, metadata.options.until); + }); + } + // apply grouping options + if (this.options.groups && this.options.groups.length) { + metadatas = metadatas.filter(function (metadata) { + if (!metadata.options) + return true; + return _this.checkGroups(metadata.options.groups); + }); + } + else { + metadatas = metadatas.filter(function (metadata) { + return !metadata.options || !metadata.options.groups || !metadata.options.groups.length; + }); + } + metadatas.forEach(function (metadata) { + value = metadata.transformFn({ value: value, key: key, obj: obj, type: transformationType, options: _this.options }); + }); + return value; + }; + // preventing circular references + TransformOperationExecutor.prototype.isCircular = function (object) { + return this.recursionStack.has(object); + }; + TransformOperationExecutor.prototype.getReflectedType = function (target, propertyName) { + if (!target) + return undefined; + var meta = defaultMetadataStorage.findTypeMetadata(target, propertyName); + return meta ? meta.reflectedType : undefined; + }; + TransformOperationExecutor.prototype.getKeys = function (target, object, isMap) { + var _this = this; + // determine exclusion strategy + var strategy = defaultMetadataStorage.getStrategy(target); + if (strategy === 'none') + strategy = this.options.strategy || 'exposeAll'; // exposeAll is default strategy + // get all keys that need to expose + var keys = []; + if (strategy === 'exposeAll' || isMap) { + if (object instanceof Map) { + keys = Array.from(object.keys()); + } + else { + keys = Object.keys(object); + } + } + if (isMap) { + // expose & exclude do not apply for map keys only to fields + return keys; + } + /** + * If decorators are ignored but we don't want the extraneous values, then we use the + * metadata to decide which property is needed, but doesn't apply the decorator effect. + */ + if (this.options.ignoreDecorators && this.options.excludeExtraneousValues && target) { + var exposedProperties = defaultMetadataStorage.getExposedProperties(target, this.transformationType); + var excludedProperties = defaultMetadataStorage.getExcludedProperties(target, this.transformationType); + keys = __spreadArray(__spreadArray([], exposedProperties, true), excludedProperties, true); + } + if (!this.options.ignoreDecorators && target) { + // add all exposed to list of keys + var exposedProperties = defaultMetadataStorage.getExposedProperties(target, this.transformationType); + if (this.transformationType === exports.TransformationType.PLAIN_TO_CLASS) { + exposedProperties = exposedProperties.map(function (key) { + var exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key); + if (exposeMetadata && exposeMetadata.options && exposeMetadata.options.name) { + return exposeMetadata.options.name; + } + return key; + }); + } + if (this.options.excludeExtraneousValues) { + keys = exposedProperties; + } + else { + keys = keys.concat(exposedProperties); + } + // exclude excluded properties + var excludedProperties_1 = defaultMetadataStorage.getExcludedProperties(target, this.transformationType); + if (excludedProperties_1.length > 0) { + keys = keys.filter(function (key) { + return !excludedProperties_1.includes(key); + }); + } + // apply versioning options + if (this.options.version !== undefined) { + keys = keys.filter(function (key) { + var exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key); + if (!exposeMetadata || !exposeMetadata.options) + return true; + return _this.checkVersion(exposeMetadata.options.since, exposeMetadata.options.until); + }); + } + // apply grouping options + if (this.options.groups && this.options.groups.length) { + keys = keys.filter(function (key) { + var exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key); + if (!exposeMetadata || !exposeMetadata.options) + return true; + return _this.checkGroups(exposeMetadata.options.groups); + }); + } + else { + keys = keys.filter(function (key) { + var exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key); + return (!exposeMetadata || + !exposeMetadata.options || + !exposeMetadata.options.groups || + !exposeMetadata.options.groups.length); + }); + } + } + // exclude prefixed properties + if (this.options.excludePrefixes && this.options.excludePrefixes.length) { + keys = keys.filter(function (key) { + return _this.options.excludePrefixes.every(function (prefix) { + return key.substr(0, prefix.length) !== prefix; + }); + }); + } + // make sure we have unique keys + keys = keys.filter(function (key, index, self) { + return self.indexOf(key) === index; + }); + return keys; + }; + TransformOperationExecutor.prototype.checkVersion = function (since, until) { + var decision = true; + if (decision && since) + decision = this.options.version >= since; + if (decision && until) + decision = this.options.version < until; + return decision; + }; + TransformOperationExecutor.prototype.checkGroups = function (groups) { + if (!groups) + return true; + return this.options.groups.some(function (optionGroup) { return groups.includes(optionGroup); }); + }; + return TransformOperationExecutor; + }()); + + /** + * These are the default options used by any transformation operation. + */ + var defaultOptions = { + enableCircularCheck: false, + enableImplicitConversion: false, + excludeExtraneousValues: false, + excludePrefixes: undefined, + exposeDefaultValues: false, + exposeUnsetFields: true, + groups: undefined, + ignoreDecorators: false, + strategy: undefined, + targetMaps: undefined, + version: undefined, + }; + + var __assign = (undefined && undefined.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + var ClassTransformer = /** @class */ (function () { + function ClassTransformer() { + } + ClassTransformer.prototype.instanceToPlain = function (object, options) { + var executor = new TransformOperationExecutor(exports.TransformationType.CLASS_TO_PLAIN, __assign(__assign({}, defaultOptions), options)); + return executor.transform(undefined, object, undefined, undefined, undefined, undefined); + }; + ClassTransformer.prototype.classToPlainFromExist = function (object, plainObject, options) { + var executor = new TransformOperationExecutor(exports.TransformationType.CLASS_TO_PLAIN, __assign(__assign({}, defaultOptions), options)); + return executor.transform(plainObject, object, undefined, undefined, undefined, undefined); + }; + ClassTransformer.prototype.plainToInstance = function (cls, plain, options) { + var executor = new TransformOperationExecutor(exports.TransformationType.PLAIN_TO_CLASS, __assign(__assign({}, defaultOptions), options)); + return executor.transform(undefined, plain, cls, undefined, undefined, undefined); + }; + ClassTransformer.prototype.plainToClassFromExist = function (clsObject, plain, options) { + var executor = new TransformOperationExecutor(exports.TransformationType.PLAIN_TO_CLASS, __assign(__assign({}, defaultOptions), options)); + return executor.transform(clsObject, plain, undefined, undefined, undefined, undefined); + }; + ClassTransformer.prototype.instanceToInstance = function (object, options) { + var executor = new TransformOperationExecutor(exports.TransformationType.CLASS_TO_CLASS, __assign(__assign({}, defaultOptions), options)); + return executor.transform(undefined, object, undefined, undefined, undefined, undefined); + }; + ClassTransformer.prototype.classToClassFromExist = function (object, fromObject, options) { + var executor = new TransformOperationExecutor(exports.TransformationType.CLASS_TO_CLASS, __assign(__assign({}, defaultOptions), options)); + return executor.transform(fromObject, object, undefined, undefined, undefined, undefined); + }; + ClassTransformer.prototype.serialize = function (object, options) { + return JSON.stringify(this.instanceToPlain(object, options)); + }; + /** + * Deserializes given JSON string to a object of the given class. + */ + ClassTransformer.prototype.deserialize = function (cls, json, options) { + var jsonObject = JSON.parse(json); + return this.plainToInstance(cls, jsonObject, options); + }; + /** + * Deserializes given JSON string to an array of objects of the given class. + */ + ClassTransformer.prototype.deserializeArray = function (cls, json, options) { + var jsonObject = JSON.parse(json); + return this.plainToInstance(cls, jsonObject, options); + }; + return ClassTransformer; + }()); + + /** + * Marks the given class or property as excluded. By default the property is excluded in both + * constructorToPlain and plainToConstructor transformations. It can be limited to only one direction + * via using the `toPlainOnly` or `toClassOnly` option. + * + * Can be applied to class definitions and properties. + */ + function Exclude(options) { + if (options === void 0) { options = {}; } + /** + * NOTE: The `propertyName` property must be marked as optional because + * this decorator used both as a class and a property decorator and the + * Typescript compiler will freak out if we make it mandatory as a class + * decorator only receives one parameter. + */ + return function (object, propertyName) { + defaultMetadataStorage.addExcludeMetadata({ + target: object instanceof Function ? object : object.constructor, + propertyName: propertyName, + options: options, + }); + }; + } + + /** + * Marks the given class or property as included. By default the property is included in both + * constructorToPlain and plainToConstructor transformations. It can be limited to only one direction + * via using the `toPlainOnly` or `toClassOnly` option. + * + * Can be applied to class definitions and properties. + */ + function Expose(options) { + if (options === void 0) { options = {}; } + /** + * NOTE: The `propertyName` property must be marked as optional because + * this decorator used both as a class and a property decorator and the + * Typescript compiler will freak out if we make it mandatory as a class + * decorator only receives one parameter. + */ + return function (object, propertyName) { + defaultMetadataStorage.addExposeMetadata({ + target: object instanceof Function ? object : object.constructor, + propertyName: propertyName, + options: options, + }); + }; + } + + /** + * Return the class instance only with the exposed properties. + * + * Can be applied to functions and getters/setters only. + */ + function TransformInstanceToInstance(params) { + return function (target, propertyKey, descriptor) { + var classTransformer = new ClassTransformer(); + var originalMethod = descriptor.value; + descriptor.value = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var result = originalMethod.apply(this, args); + var isPromise = !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function'; + return isPromise + ? result.then(function (data) { return classTransformer.instanceToInstance(data, params); }) + : classTransformer.instanceToInstance(result, params); + }; + }; + } + + /** + * Transform the object from class to plain object and return only with the exposed properties. + * + * Can be applied to functions and getters/setters only. + */ + function TransformInstanceToPlain(params) { + return function (target, propertyKey, descriptor) { + var classTransformer = new ClassTransformer(); + var originalMethod = descriptor.value; + descriptor.value = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var result = originalMethod.apply(this, args); + var isPromise = !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function'; + return isPromise + ? result.then(function (data) { return classTransformer.instanceToPlain(data, params); }) + : classTransformer.instanceToPlain(result, params); + }; + }; + } + + /** + * Return the class instance only with the exposed properties. + * + * Can be applied to functions and getters/setters only. + */ + function TransformPlainToInstance(classType, params) { + return function (target, propertyKey, descriptor) { + var classTransformer = new ClassTransformer(); + var originalMethod = descriptor.value; + descriptor.value = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var result = originalMethod.apply(this, args); + var isPromise = !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function'; + return isPromise + ? result.then(function (data) { return classTransformer.plainToInstance(classType, data, params); }) + : classTransformer.plainToInstance(classType, result, params); + }; + }; + } + + /** + * Defines a custom logic for value transformation. + * + * Can be applied to properties only. + */ + function Transform(transformFn, options) { + if (options === void 0) { options = {}; } + return function (target, propertyName) { + defaultMetadataStorage.addTransformMetadata({ + target: target.constructor, + propertyName: propertyName, + transformFn: transformFn, + options: options, + }); + }; + } + + /** + * Specifies a type of the property. + * The given TypeFunction can return a constructor. A discriminator can be given in the options. + * + * Can be applied to properties only. + */ + function Type(typeFunction, options) { + if (options === void 0) { options = {}; } + return function (target, propertyName) { + var reflectedType = Reflect.getMetadata('design:type', target, propertyName); + defaultMetadataStorage.addTypeMetadata({ + target: target.constructor, + propertyName: propertyName, + reflectedType: reflectedType, + typeFunction: typeFunction, + options: options, + }); + }; + } + + var classTransformer = new ClassTransformer(); + function classToPlain(object, options) { + return classTransformer.instanceToPlain(object, options); + } + function instanceToPlain(object, options) { + return classTransformer.instanceToPlain(object, options); + } + function classToPlainFromExist(object, plainObject, options) { + return classTransformer.classToPlainFromExist(object, plainObject, options); + } + function plainToClass(cls, plain, options) { + return classTransformer.plainToInstance(cls, plain, options); + } + function plainToInstance(cls, plain, options) { + return classTransformer.plainToInstance(cls, plain, options); + } + function plainToClassFromExist(clsObject, plain, options) { + return classTransformer.plainToClassFromExist(clsObject, plain, options); + } + function instanceToInstance(object, options) { + return classTransformer.instanceToInstance(object, options); + } + function classToClassFromExist(object, fromObject, options) { + return classTransformer.classToClassFromExist(object, fromObject, options); + } + function serialize(object, options) { + return classTransformer.serialize(object, options); + } + /** + * Deserializes given JSON string to a object of the given class. + * + * @deprecated This function is being removed. Please use the following instead: + * ``` + * instanceToClass(cls, JSON.parse(json), options) + * ``` + */ + function deserialize(cls, json, options) { + return classTransformer.deserialize(cls, json, options); + } + /** + * Deserializes given JSON string to an array of objects of the given class. + * + * @deprecated This function is being removed. Please use the following instead: + * ``` + * JSON.parse(json).map(value => instanceToClass(cls, value, options)) + * ``` + * + */ + function deserializeArray(cls, json, options) { + return classTransformer.deserializeArray(cls, json, options); + } + + exports.ClassTransformer = ClassTransformer; + exports.Exclude = Exclude; + exports.Expose = Expose; + exports.Transform = Transform; + exports.TransformInstanceToInstance = TransformInstanceToInstance; + exports.TransformInstanceToPlain = TransformInstanceToPlain; + exports.TransformPlainToInstance = TransformPlainToInstance; + exports.Type = Type; + exports.classToClassFromExist = classToClassFromExist; + exports.classToPlain = classToPlain; + exports.classToPlainFromExist = classToPlainFromExist; + exports.deserialize = deserialize; + exports.deserializeArray = deserializeArray; + exports.instanceToInstance = instanceToInstance; + exports.instanceToPlain = instanceToPlain; + exports.plainToClass = plainToClass; + exports.plainToClassFromExist = plainToClassFromExist; + exports.plainToInstance = plainToInstance; + exports.serialize = serialize; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); +//# sourceMappingURL=class-transformer.umd.js.map diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/bundles/class-transformer.umd.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/bundles/class-transformer.umd.js.map new file mode 100644 index 00000000..271c8df4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/bundles/class-transformer.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"class-transformer.umd.js","sources":["../esm5/enums/transformation-type.enum.js","../esm5/MetadataStorage.js","../esm5/storage.js","../esm5/utils/get-global.util.js","../esm5/utils/is-promise.util.js","../esm5/TransformOperationExecutor.js","../esm5/constants/default-options.constant.js","../esm5/ClassTransformer.js","../esm5/decorators/exclude.decorator.js","../esm5/decorators/expose.decorator.js","../esm5/decorators/transform-instance-to-instance.decorator.js","../esm5/decorators/transform-instance-to-plain.decorator.js","../esm5/decorators/transform-plain-to-instance.decorator.js","../esm5/decorators/transform.decorator.js","../esm5/decorators/type.decorator.js","../esm5/index.js"],"sourcesContent":["export var TransformationType;\n(function (TransformationType) {\n TransformationType[TransformationType[\"PLAIN_TO_CLASS\"] = 0] = \"PLAIN_TO_CLASS\";\n TransformationType[TransformationType[\"CLASS_TO_PLAIN\"] = 1] = \"CLASS_TO_PLAIN\";\n TransformationType[TransformationType[\"CLASS_TO_CLASS\"] = 2] = \"CLASS_TO_CLASS\";\n})(TransformationType || (TransformationType = {}));\n//# sourceMappingURL=transformation-type.enum.js.map","import { TransformationType } from './enums';\n/**\n * Storage all library metadata.\n */\nvar MetadataStorage = /** @class */ (function () {\n function MetadataStorage() {\n // -------------------------------------------------------------------------\n // Properties\n // -------------------------------------------------------------------------\n this._typeMetadatas = new Map();\n this._transformMetadatas = new Map();\n this._exposeMetadatas = new Map();\n this._excludeMetadatas = new Map();\n this._ancestorsMap = new Map();\n }\n // -------------------------------------------------------------------------\n // Adder Methods\n // -------------------------------------------------------------------------\n MetadataStorage.prototype.addTypeMetadata = function (metadata) {\n if (!this._typeMetadatas.has(metadata.target)) {\n this._typeMetadatas.set(metadata.target, new Map());\n }\n this._typeMetadatas.get(metadata.target).set(metadata.propertyName, metadata);\n };\n MetadataStorage.prototype.addTransformMetadata = function (metadata) {\n if (!this._transformMetadatas.has(metadata.target)) {\n this._transformMetadatas.set(metadata.target, new Map());\n }\n if (!this._transformMetadatas.get(metadata.target).has(metadata.propertyName)) {\n this._transformMetadatas.get(metadata.target).set(metadata.propertyName, []);\n }\n this._transformMetadatas.get(metadata.target).get(metadata.propertyName).push(metadata);\n };\n MetadataStorage.prototype.addExposeMetadata = function (metadata) {\n if (!this._exposeMetadatas.has(metadata.target)) {\n this._exposeMetadatas.set(metadata.target, new Map());\n }\n this._exposeMetadatas.get(metadata.target).set(metadata.propertyName, metadata);\n };\n MetadataStorage.prototype.addExcludeMetadata = function (metadata) {\n if (!this._excludeMetadatas.has(metadata.target)) {\n this._excludeMetadatas.set(metadata.target, new Map());\n }\n this._excludeMetadatas.get(metadata.target).set(metadata.propertyName, metadata);\n };\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n MetadataStorage.prototype.findTransformMetadatas = function (target, propertyName, transformationType) {\n return this.findMetadatas(this._transformMetadatas, target, propertyName).filter(function (metadata) {\n if (!metadata.options)\n return true;\n if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true)\n return true;\n if (metadata.options.toClassOnly === true) {\n return (transformationType === TransformationType.CLASS_TO_CLASS ||\n transformationType === TransformationType.PLAIN_TO_CLASS);\n }\n if (metadata.options.toPlainOnly === true) {\n return transformationType === TransformationType.CLASS_TO_PLAIN;\n }\n return true;\n });\n };\n MetadataStorage.prototype.findExcludeMetadata = function (target, propertyName) {\n return this.findMetadata(this._excludeMetadatas, target, propertyName);\n };\n MetadataStorage.prototype.findExposeMetadata = function (target, propertyName) {\n return this.findMetadata(this._exposeMetadatas, target, propertyName);\n };\n MetadataStorage.prototype.findExposeMetadataByCustomName = function (target, name) {\n return this.getExposedMetadatas(target).find(function (metadata) {\n return metadata.options && metadata.options.name === name;\n });\n };\n MetadataStorage.prototype.findTypeMetadata = function (target, propertyName) {\n return this.findMetadata(this._typeMetadatas, target, propertyName);\n };\n MetadataStorage.prototype.getStrategy = function (target) {\n var excludeMap = this._excludeMetadatas.get(target);\n var exclude = excludeMap && excludeMap.get(undefined);\n var exposeMap = this._exposeMetadatas.get(target);\n var expose = exposeMap && exposeMap.get(undefined);\n if ((exclude && expose) || (!exclude && !expose))\n return 'none';\n return exclude ? 'excludeAll' : 'exposeAll';\n };\n MetadataStorage.prototype.getExposedMetadatas = function (target) {\n return this.getMetadata(this._exposeMetadatas, target);\n };\n MetadataStorage.prototype.getExcludedMetadatas = function (target) {\n return this.getMetadata(this._excludeMetadatas, target);\n };\n MetadataStorage.prototype.getExposedProperties = function (target, transformationType) {\n return this.getExposedMetadatas(target)\n .filter(function (metadata) {\n if (!metadata.options)\n return true;\n if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true)\n return true;\n if (metadata.options.toClassOnly === true) {\n return (transformationType === TransformationType.CLASS_TO_CLASS ||\n transformationType === TransformationType.PLAIN_TO_CLASS);\n }\n if (metadata.options.toPlainOnly === true) {\n return transformationType === TransformationType.CLASS_TO_PLAIN;\n }\n return true;\n })\n .map(function (metadata) { return metadata.propertyName; });\n };\n MetadataStorage.prototype.getExcludedProperties = function (target, transformationType) {\n return this.getExcludedMetadatas(target)\n .filter(function (metadata) {\n if (!metadata.options)\n return true;\n if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true)\n return true;\n if (metadata.options.toClassOnly === true) {\n return (transformationType === TransformationType.CLASS_TO_CLASS ||\n transformationType === TransformationType.PLAIN_TO_CLASS);\n }\n if (metadata.options.toPlainOnly === true) {\n return transformationType === TransformationType.CLASS_TO_PLAIN;\n }\n return true;\n })\n .map(function (metadata) { return metadata.propertyName; });\n };\n MetadataStorage.prototype.clear = function () {\n this._typeMetadatas.clear();\n this._exposeMetadatas.clear();\n this._excludeMetadatas.clear();\n this._ancestorsMap.clear();\n };\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n MetadataStorage.prototype.getMetadata = function (metadatas, target) {\n var metadataFromTargetMap = metadatas.get(target);\n var metadataFromTarget;\n if (metadataFromTargetMap) {\n metadataFromTarget = Array.from(metadataFromTargetMap.values()).filter(function (meta) { return meta.propertyName !== undefined; });\n }\n var metadataFromAncestors = [];\n for (var _i = 0, _a = this.getAncestors(target); _i < _a.length; _i++) {\n var ancestor = _a[_i];\n var ancestorMetadataMap = metadatas.get(ancestor);\n if (ancestorMetadataMap) {\n var metadataFromAncestor = Array.from(ancestorMetadataMap.values()).filter(function (meta) { return meta.propertyName !== undefined; });\n metadataFromAncestors.push.apply(metadataFromAncestors, metadataFromAncestor);\n }\n }\n return metadataFromAncestors.concat(metadataFromTarget || []);\n };\n MetadataStorage.prototype.findMetadata = function (metadatas, target, propertyName) {\n var metadataFromTargetMap = metadatas.get(target);\n if (metadataFromTargetMap) {\n var metadataFromTarget = metadataFromTargetMap.get(propertyName);\n if (metadataFromTarget) {\n return metadataFromTarget;\n }\n }\n for (var _i = 0, _a = this.getAncestors(target); _i < _a.length; _i++) {\n var ancestor = _a[_i];\n var ancestorMetadataMap = metadatas.get(ancestor);\n if (ancestorMetadataMap) {\n var ancestorResult = ancestorMetadataMap.get(propertyName);\n if (ancestorResult) {\n return ancestorResult;\n }\n }\n }\n return undefined;\n };\n MetadataStorage.prototype.findMetadatas = function (metadatas, target, propertyName) {\n var metadataFromTargetMap = metadatas.get(target);\n var metadataFromTarget;\n if (metadataFromTargetMap) {\n metadataFromTarget = metadataFromTargetMap.get(propertyName);\n }\n var metadataFromAncestorsTarget = [];\n for (var _i = 0, _a = this.getAncestors(target); _i < _a.length; _i++) {\n var ancestor = _a[_i];\n var ancestorMetadataMap = metadatas.get(ancestor);\n if (ancestorMetadataMap) {\n if (ancestorMetadataMap.has(propertyName)) {\n metadataFromAncestorsTarget.push.apply(metadataFromAncestorsTarget, ancestorMetadataMap.get(propertyName));\n }\n }\n }\n return metadataFromAncestorsTarget\n .slice()\n .reverse()\n .concat((metadataFromTarget || []).slice().reverse());\n };\n MetadataStorage.prototype.getAncestors = function (target) {\n if (!target)\n return [];\n if (!this._ancestorsMap.has(target)) {\n var ancestors = [];\n for (var baseClass = Object.getPrototypeOf(target.prototype.constructor); typeof baseClass.prototype !== 'undefined'; baseClass = Object.getPrototypeOf(baseClass.prototype.constructor)) {\n ancestors.push(baseClass);\n }\n this._ancestorsMap.set(target, ancestors);\n }\n return this._ancestorsMap.get(target);\n };\n return MetadataStorage;\n}());\nexport { MetadataStorage };\n//# sourceMappingURL=MetadataStorage.js.map","import { MetadataStorage } from './MetadataStorage';\n/**\n * Default metadata storage is used as singleton and can be used to storage all metadatas.\n */\nexport var defaultMetadataStorage = new MetadataStorage();\n//# sourceMappingURL=storage.js.map","/**\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 if (typeof global !== 'undefined') {\n return global;\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 // 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//# sourceMappingURL=get-global.util.js.map","export function isPromise(p) {\n return p !== null && typeof p === 'object' && typeof p.then === 'function';\n}\n//# sourceMappingURL=is-promise.util.js.map","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { defaultMetadataStorage } from './storage';\nimport { TransformationType } from './enums';\nimport { getGlobal, isPromise } from './utils';\nfunction instantiateArrayType(arrayType) {\n var array = new arrayType();\n if (!(array instanceof Set) && !('push' in array)) {\n return [];\n }\n return array;\n}\nvar TransformOperationExecutor = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function TransformOperationExecutor(transformationType, options) {\n this.transformationType = transformationType;\n this.options = options;\n // -------------------------------------------------------------------------\n // Private Properties\n // -------------------------------------------------------------------------\n this.recursionStack = new Set();\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n TransformOperationExecutor.prototype.transform = function (source, value, targetType, arrayType, isMap, level) {\n var _this = this;\n if (level === void 0) { level = 0; }\n if (Array.isArray(value) || value instanceof Set) {\n var newValue_1 = arrayType && this.transformationType === TransformationType.PLAIN_TO_CLASS\n ? instantiateArrayType(arrayType)\n : [];\n value.forEach(function (subValue, index) {\n var subSource = source ? source[index] : undefined;\n if (!_this.options.enableCircularCheck || !_this.isCircular(subValue)) {\n var realTargetType = void 0;\n if (typeof targetType !== 'function' &&\n targetType &&\n targetType.options &&\n targetType.options.discriminator &&\n targetType.options.discriminator.property &&\n targetType.options.discriminator.subTypes) {\n if (_this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n realTargetType = targetType.options.discriminator.subTypes.find(function (subType) {\n return subType.name === subValue[targetType.options.discriminator.property];\n });\n var options = { newObject: newValue_1, object: subValue, property: undefined };\n var newType = targetType.typeFunction(options);\n realTargetType === undefined ? (realTargetType = newType) : (realTargetType = realTargetType.value);\n if (!targetType.options.keepDiscriminatorProperty)\n delete subValue[targetType.options.discriminator.property];\n }\n if (_this.transformationType === TransformationType.CLASS_TO_CLASS) {\n realTargetType = subValue.constructor;\n }\n if (_this.transformationType === TransformationType.CLASS_TO_PLAIN) {\n subValue[targetType.options.discriminator.property] = targetType.options.discriminator.subTypes.find(function (subType) { return subType.value === subValue.constructor; }).name;\n }\n }\n else {\n realTargetType = targetType;\n }\n var value_1 = _this.transform(subSource, subValue, realTargetType, undefined, subValue instanceof Map, level + 1);\n if (newValue_1 instanceof Set) {\n newValue_1.add(value_1);\n }\n else {\n newValue_1.push(value_1);\n }\n }\n else if (_this.transformationType === TransformationType.CLASS_TO_CLASS) {\n if (newValue_1 instanceof Set) {\n newValue_1.add(subValue);\n }\n else {\n newValue_1.push(subValue);\n }\n }\n });\n return newValue_1;\n }\n else if (targetType === String && !isMap) {\n if (value === null || value === undefined)\n return value;\n return String(value);\n }\n else if (targetType === Number && !isMap) {\n if (value === null || value === undefined)\n return value;\n return Number(value);\n }\n else if (targetType === Boolean && !isMap) {\n if (value === null || value === undefined)\n return value;\n return Boolean(value);\n }\n else if ((targetType === Date || value instanceof Date) && !isMap) {\n if (value instanceof Date) {\n return new Date(value.valueOf());\n }\n if (value === null || value === undefined)\n return value;\n return new Date(value);\n }\n else if (!!getGlobal().Buffer && (targetType === Buffer || value instanceof Buffer) && !isMap) {\n if (value === null || value === undefined)\n return value;\n return Buffer.from(value);\n }\n else if (isPromise(value) && !isMap) {\n return new Promise(function (resolve, reject) {\n value.then(function (data) { return resolve(_this.transform(undefined, data, targetType, undefined, undefined, level + 1)); }, reject);\n });\n }\n else if (!isMap && value !== null && typeof value === 'object' && typeof value.then === 'function') {\n // Note: We should not enter this, as promise has been handled above\n // This option simply returns the Promise preventing a JS error from happening and should be an inaccessible path.\n return value; // skip promise transformation\n }\n else if (typeof value === 'object' && value !== null) {\n // try to guess the type\n if (!targetType && value.constructor !== Object /* && TransformationType === TransformationType.CLASS_TO_PLAIN*/)\n if (!Array.isArray(value) && value.constructor === Array) {\n // Somebody attempts to convert special Array like object to Array, eg:\n // const evilObject = { '100000000': '100000000', __proto__: [] };\n // This could be used to cause Denial-of-service attack so we don't allow it.\n // See prevent-array-bomb.spec.ts for more details.\n }\n else {\n // We are good we can use the built-in constructor\n targetType = value.constructor;\n }\n if (!targetType && source)\n targetType = source.constructor;\n if (this.options.enableCircularCheck) {\n // add transformed type to prevent circular references\n this.recursionStack.add(value);\n }\n var keys = this.getKeys(targetType, value, isMap);\n var newValue = source ? source : {};\n if (!source &&\n (this.transformationType === TransformationType.PLAIN_TO_CLASS ||\n this.transformationType === TransformationType.CLASS_TO_CLASS)) {\n if (isMap) {\n newValue = new Map();\n }\n else if (targetType) {\n newValue = new targetType();\n }\n else {\n newValue = {};\n }\n }\n var _loop_1 = function (key) {\n if (key === '__proto__' || key === 'constructor') {\n return \"continue\";\n }\n var valueKey = key;\n var newValueKey = key, propertyName = key;\n if (!this_1.options.ignoreDecorators && targetType) {\n if (this_1.transformationType === TransformationType.PLAIN_TO_CLASS) {\n var exposeMetadata = defaultMetadataStorage.findExposeMetadataByCustomName(targetType, key);\n if (exposeMetadata) {\n propertyName = exposeMetadata.propertyName;\n newValueKey = exposeMetadata.propertyName;\n }\n }\n else if (this_1.transformationType === TransformationType.CLASS_TO_PLAIN ||\n this_1.transformationType === TransformationType.CLASS_TO_CLASS) {\n var exposeMetadata = defaultMetadataStorage.findExposeMetadata(targetType, key);\n if (exposeMetadata && exposeMetadata.options && exposeMetadata.options.name) {\n newValueKey = exposeMetadata.options.name;\n }\n }\n }\n // get a subvalue\n var subValue = undefined;\n if (this_1.transformationType === TransformationType.PLAIN_TO_CLASS) {\n /**\n * This section is added for the following report:\n * https://github.com/typestack/class-transformer/issues/596\n *\n * We should not call functions or constructors when transforming to class.\n */\n subValue = value[valueKey];\n }\n else {\n if (value instanceof Map) {\n subValue = value.get(valueKey);\n }\n else if (value[valueKey] instanceof Function) {\n subValue = value[valueKey]();\n }\n else {\n subValue = value[valueKey];\n }\n }\n // determine a type\n var type = undefined, isSubValueMap = subValue instanceof Map;\n if (targetType && isMap) {\n type = targetType;\n }\n else if (targetType) {\n var metadata_1 = defaultMetadataStorage.findTypeMetadata(targetType, propertyName);\n if (metadata_1) {\n var options = { newObject: newValue, object: value, property: propertyName };\n var newType = metadata_1.typeFunction ? metadata_1.typeFunction(options) : metadata_1.reflectedType;\n if (metadata_1.options &&\n metadata_1.options.discriminator &&\n metadata_1.options.discriminator.property &&\n metadata_1.options.discriminator.subTypes) {\n if (!(value[valueKey] instanceof Array)) {\n if (this_1.transformationType === TransformationType.PLAIN_TO_CLASS) {\n type = metadata_1.options.discriminator.subTypes.find(function (subType) {\n if (subValue && subValue instanceof Object && metadata_1.options.discriminator.property in subValue) {\n return subType.name === subValue[metadata_1.options.discriminator.property];\n }\n });\n type === undefined ? (type = newType) : (type = type.value);\n if (!metadata_1.options.keepDiscriminatorProperty) {\n if (subValue && subValue instanceof Object && metadata_1.options.discriminator.property in subValue) {\n delete subValue[metadata_1.options.discriminator.property];\n }\n }\n }\n if (this_1.transformationType === TransformationType.CLASS_TO_CLASS) {\n type = subValue.constructor;\n }\n if (this_1.transformationType === TransformationType.CLASS_TO_PLAIN) {\n if (subValue) {\n subValue[metadata_1.options.discriminator.property] = metadata_1.options.discriminator.subTypes.find(function (subType) { return subType.value === subValue.constructor; }).name;\n }\n }\n }\n else {\n type = metadata_1;\n }\n }\n else {\n type = newType;\n }\n isSubValueMap = isSubValueMap || metadata_1.reflectedType === Map;\n }\n else if (this_1.options.targetMaps) {\n // try to find a type in target maps\n this_1.options.targetMaps\n .filter(function (map) { return map.target === targetType && !!map.properties[propertyName]; })\n .forEach(function (map) { return (type = map.properties[propertyName]); });\n }\n else if (this_1.options.enableImplicitConversion &&\n this_1.transformationType === TransformationType.PLAIN_TO_CLASS) {\n // if we have no registererd type via the @Type() decorator then we check if we have any\n // type declarations in reflect-metadata (type declaration is emited only if some decorator is added to the property.)\n var reflectedType = Reflect.getMetadata('design:type', targetType.prototype, propertyName);\n if (reflectedType) {\n type = reflectedType;\n }\n }\n }\n // if value is an array try to get its custom array type\n var arrayType_1 = Array.isArray(value[valueKey])\n ? this_1.getReflectedType(targetType, propertyName)\n : undefined;\n // const subValueKey = TransformationType === TransformationType.PLAIN_TO_CLASS && newKeyName ? newKeyName : key;\n var subSource = source ? source[valueKey] : undefined;\n // if its deserialization then type if required\n // if we uncomment this types like string[] will not work\n // if (this.transformationType === TransformationType.PLAIN_TO_CLASS && !type && subValue instanceof Object && !(subValue instanceof Date))\n // throw new Error(`Cannot determine type for ${(targetType as any).name }.${propertyName}, did you forget to specify a @Type?`);\n // if newValue is a source object that has method that match newKeyName then skip it\n if (newValue.constructor.prototype) {\n var descriptor = Object.getOwnPropertyDescriptor(newValue.constructor.prototype, newValueKey);\n if ((this_1.transformationType === TransformationType.PLAIN_TO_CLASS ||\n this_1.transformationType === TransformationType.CLASS_TO_CLASS) &&\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ((descriptor && !descriptor.set) || newValue[newValueKey] instanceof Function))\n return \"continue\";\n }\n if (!this_1.options.enableCircularCheck || !this_1.isCircular(subValue)) {\n var transformKey = this_1.transformationType === TransformationType.PLAIN_TO_CLASS ? newValueKey : key;\n var finalValue = void 0;\n if (this_1.transformationType === TransformationType.CLASS_TO_PLAIN) {\n // Get original value\n finalValue = value[transformKey];\n // Apply custom transformation\n finalValue = this_1.applyCustomTransformations(finalValue, targetType, transformKey, value, this_1.transformationType);\n // If nothing change, it means no custom transformation was applied, so use the subValue.\n finalValue = value[transformKey] === finalValue ? subValue : finalValue;\n // Apply the default transformation\n finalValue = this_1.transform(subSource, finalValue, type, arrayType_1, isSubValueMap, level + 1);\n }\n else {\n if (subValue === undefined && this_1.options.exposeDefaultValues) {\n // Set default value if nothing provided\n finalValue = newValue[newValueKey];\n }\n else {\n finalValue = this_1.transform(subSource, subValue, type, arrayType_1, isSubValueMap, level + 1);\n finalValue = this_1.applyCustomTransformations(finalValue, targetType, transformKey, value, this_1.transformationType);\n }\n }\n if (finalValue !== undefined || this_1.options.exposeUnsetFields) {\n if (newValue instanceof Map) {\n newValue.set(newValueKey, finalValue);\n }\n else {\n newValue[newValueKey] = finalValue;\n }\n }\n }\n else if (this_1.transformationType === TransformationType.CLASS_TO_CLASS) {\n var finalValue = subValue;\n finalValue = this_1.applyCustomTransformations(finalValue, targetType, key, value, this_1.transformationType);\n if (finalValue !== undefined || this_1.options.exposeUnsetFields) {\n if (newValue instanceof Map) {\n newValue.set(newValueKey, finalValue);\n }\n else {\n newValue[newValueKey] = finalValue;\n }\n }\n }\n };\n var this_1 = this;\n // traverse over keys\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n _loop_1(key);\n }\n if (this.options.enableCircularCheck) {\n this.recursionStack.delete(value);\n }\n return newValue;\n }\n else {\n return value;\n }\n };\n TransformOperationExecutor.prototype.applyCustomTransformations = function (value, target, key, obj, transformationType) {\n var _this = this;\n var metadatas = defaultMetadataStorage.findTransformMetadatas(target, key, this.transformationType);\n // apply versioning options\n if (this.options.version !== undefined) {\n metadatas = metadatas.filter(function (metadata) {\n if (!metadata.options)\n return true;\n return _this.checkVersion(metadata.options.since, metadata.options.until);\n });\n }\n // apply grouping options\n if (this.options.groups && this.options.groups.length) {\n metadatas = metadatas.filter(function (metadata) {\n if (!metadata.options)\n return true;\n return _this.checkGroups(metadata.options.groups);\n });\n }\n else {\n metadatas = metadatas.filter(function (metadata) {\n return !metadata.options || !metadata.options.groups || !metadata.options.groups.length;\n });\n }\n metadatas.forEach(function (metadata) {\n value = metadata.transformFn({ value: value, key: key, obj: obj, type: transformationType, options: _this.options });\n });\n return value;\n };\n // preventing circular references\n TransformOperationExecutor.prototype.isCircular = function (object) {\n return this.recursionStack.has(object);\n };\n TransformOperationExecutor.prototype.getReflectedType = function (target, propertyName) {\n if (!target)\n return undefined;\n var meta = defaultMetadataStorage.findTypeMetadata(target, propertyName);\n return meta ? meta.reflectedType : undefined;\n };\n TransformOperationExecutor.prototype.getKeys = function (target, object, isMap) {\n var _this = this;\n // determine exclusion strategy\n var strategy = defaultMetadataStorage.getStrategy(target);\n if (strategy === 'none')\n strategy = this.options.strategy || 'exposeAll'; // exposeAll is default strategy\n // get all keys that need to expose\n var keys = [];\n if (strategy === 'exposeAll' || isMap) {\n if (object instanceof Map) {\n keys = Array.from(object.keys());\n }\n else {\n keys = Object.keys(object);\n }\n }\n if (isMap) {\n // expose & exclude do not apply for map keys only to fields\n return keys;\n }\n /**\n * If decorators are ignored but we don't want the extraneous values, then we use the\n * metadata to decide which property is needed, but doesn't apply the decorator effect.\n */\n if (this.options.ignoreDecorators && this.options.excludeExtraneousValues && target) {\n var exposedProperties = defaultMetadataStorage.getExposedProperties(target, this.transformationType);\n var excludedProperties = defaultMetadataStorage.getExcludedProperties(target, this.transformationType);\n keys = __spreadArray(__spreadArray([], exposedProperties, true), excludedProperties, true);\n }\n if (!this.options.ignoreDecorators && target) {\n // add all exposed to list of keys\n var exposedProperties = defaultMetadataStorage.getExposedProperties(target, this.transformationType);\n if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n exposedProperties = exposedProperties.map(function (key) {\n var exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n if (exposeMetadata && exposeMetadata.options && exposeMetadata.options.name) {\n return exposeMetadata.options.name;\n }\n return key;\n });\n }\n if (this.options.excludeExtraneousValues) {\n keys = exposedProperties;\n }\n else {\n keys = keys.concat(exposedProperties);\n }\n // exclude excluded properties\n var excludedProperties_1 = defaultMetadataStorage.getExcludedProperties(target, this.transformationType);\n if (excludedProperties_1.length > 0) {\n keys = keys.filter(function (key) {\n return !excludedProperties_1.includes(key);\n });\n }\n // apply versioning options\n if (this.options.version !== undefined) {\n keys = keys.filter(function (key) {\n var exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n if (!exposeMetadata || !exposeMetadata.options)\n return true;\n return _this.checkVersion(exposeMetadata.options.since, exposeMetadata.options.until);\n });\n }\n // apply grouping options\n if (this.options.groups && this.options.groups.length) {\n keys = keys.filter(function (key) {\n var exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n if (!exposeMetadata || !exposeMetadata.options)\n return true;\n return _this.checkGroups(exposeMetadata.options.groups);\n });\n }\n else {\n keys = keys.filter(function (key) {\n var exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n return (!exposeMetadata ||\n !exposeMetadata.options ||\n !exposeMetadata.options.groups ||\n !exposeMetadata.options.groups.length);\n });\n }\n }\n // exclude prefixed properties\n if (this.options.excludePrefixes && this.options.excludePrefixes.length) {\n keys = keys.filter(function (key) {\n return _this.options.excludePrefixes.every(function (prefix) {\n return key.substr(0, prefix.length) !== prefix;\n });\n });\n }\n // make sure we have unique keys\n keys = keys.filter(function (key, index, self) {\n return self.indexOf(key) === index;\n });\n return keys;\n };\n TransformOperationExecutor.prototype.checkVersion = function (since, until) {\n var decision = true;\n if (decision && since)\n decision = this.options.version >= since;\n if (decision && until)\n decision = this.options.version < until;\n return decision;\n };\n TransformOperationExecutor.prototype.checkGroups = function (groups) {\n if (!groups)\n return true;\n return this.options.groups.some(function (optionGroup) { return groups.includes(optionGroup); });\n };\n return TransformOperationExecutor;\n}());\nexport { TransformOperationExecutor };\n//# sourceMappingURL=TransformOperationExecutor.js.map","/**\n * These are the default options used by any transformation operation.\n */\nexport var defaultOptions = {\n enableCircularCheck: false,\n enableImplicitConversion: false,\n excludeExtraneousValues: false,\n excludePrefixes: undefined,\n exposeDefaultValues: false,\n exposeUnsetFields: true,\n groups: undefined,\n ignoreDecorators: false,\n strategy: undefined,\n targetMaps: undefined,\n version: undefined,\n};\n//# sourceMappingURL=default-options.constant.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { TransformOperationExecutor } from './TransformOperationExecutor';\nimport { TransformationType } from './enums';\nimport { defaultOptions } from './constants/default-options.constant';\nvar ClassTransformer = /** @class */ (function () {\n function ClassTransformer() {\n }\n ClassTransformer.prototype.instanceToPlain = function (object, options) {\n var executor = new TransformOperationExecutor(TransformationType.CLASS_TO_PLAIN, __assign(__assign({}, defaultOptions), options));\n return executor.transform(undefined, object, undefined, undefined, undefined, undefined);\n };\n ClassTransformer.prototype.classToPlainFromExist = function (object, plainObject, options) {\n var executor = new TransformOperationExecutor(TransformationType.CLASS_TO_PLAIN, __assign(__assign({}, defaultOptions), options));\n return executor.transform(plainObject, object, undefined, undefined, undefined, undefined);\n };\n ClassTransformer.prototype.plainToInstance = function (cls, plain, options) {\n var executor = new TransformOperationExecutor(TransformationType.PLAIN_TO_CLASS, __assign(__assign({}, defaultOptions), options));\n return executor.transform(undefined, plain, cls, undefined, undefined, undefined);\n };\n ClassTransformer.prototype.plainToClassFromExist = function (clsObject, plain, options) {\n var executor = new TransformOperationExecutor(TransformationType.PLAIN_TO_CLASS, __assign(__assign({}, defaultOptions), options));\n return executor.transform(clsObject, plain, undefined, undefined, undefined, undefined);\n };\n ClassTransformer.prototype.instanceToInstance = function (object, options) {\n var executor = new TransformOperationExecutor(TransformationType.CLASS_TO_CLASS, __assign(__assign({}, defaultOptions), options));\n return executor.transform(undefined, object, undefined, undefined, undefined, undefined);\n };\n ClassTransformer.prototype.classToClassFromExist = function (object, fromObject, options) {\n var executor = new TransformOperationExecutor(TransformationType.CLASS_TO_CLASS, __assign(__assign({}, defaultOptions), options));\n return executor.transform(fromObject, object, undefined, undefined, undefined, undefined);\n };\n ClassTransformer.prototype.serialize = function (object, options) {\n return JSON.stringify(this.instanceToPlain(object, options));\n };\n /**\n * Deserializes given JSON string to a object of the given class.\n */\n ClassTransformer.prototype.deserialize = function (cls, json, options) {\n var jsonObject = JSON.parse(json);\n return this.plainToInstance(cls, jsonObject, options);\n };\n /**\n * Deserializes given JSON string to an array of objects of the given class.\n */\n ClassTransformer.prototype.deserializeArray = function (cls, json, options) {\n var jsonObject = JSON.parse(json);\n return this.plainToInstance(cls, jsonObject, options);\n };\n return ClassTransformer;\n}());\nexport { ClassTransformer };\n//# sourceMappingURL=ClassTransformer.js.map","import { defaultMetadataStorage } from '../storage';\n/**\n * Marks the given class or property as excluded. By default the property is excluded in both\n * constructorToPlain and plainToConstructor transformations. It can be limited to only one direction\n * via using the `toPlainOnly` or `toClassOnly` option.\n *\n * Can be applied to class definitions and properties.\n */\nexport function Exclude(options) {\n if (options === void 0) { options = {}; }\n /**\n * NOTE: The `propertyName` property must be marked as optional because\n * this decorator used both as a class and a property decorator and the\n * Typescript compiler will freak out if we make it mandatory as a class\n * decorator only receives one parameter.\n */\n return function (object, propertyName) {\n defaultMetadataStorage.addExcludeMetadata({\n target: object instanceof Function ? object : object.constructor,\n propertyName: propertyName,\n options: options,\n });\n };\n}\n//# sourceMappingURL=exclude.decorator.js.map","import { defaultMetadataStorage } from '../storage';\n/**\n * Marks the given class or property as included. By default the property is included in both\n * constructorToPlain and plainToConstructor transformations. It can be limited to only one direction\n * via using the `toPlainOnly` or `toClassOnly` option.\n *\n * Can be applied to class definitions and properties.\n */\nexport function Expose(options) {\n if (options === void 0) { options = {}; }\n /**\n * NOTE: The `propertyName` property must be marked as optional because\n * this decorator used both as a class and a property decorator and the\n * Typescript compiler will freak out if we make it mandatory as a class\n * decorator only receives one parameter.\n */\n return function (object, propertyName) {\n defaultMetadataStorage.addExposeMetadata({\n target: object instanceof Function ? object : object.constructor,\n propertyName: propertyName,\n options: options,\n });\n };\n}\n//# sourceMappingURL=expose.decorator.js.map","import { ClassTransformer } from '../ClassTransformer';\n/**\n * Return the class instance only with the exposed properties.\n *\n * Can be applied to functions and getters/setters only.\n */\nexport function TransformInstanceToInstance(params) {\n return function (target, propertyKey, descriptor) {\n var classTransformer = new ClassTransformer();\n var originalMethod = descriptor.value;\n descriptor.value = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = originalMethod.apply(this, args);\n var isPromise = !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function';\n return isPromise\n ? result.then(function (data) { return classTransformer.instanceToInstance(data, params); })\n : classTransformer.instanceToInstance(result, params);\n };\n };\n}\n//# sourceMappingURL=transform-instance-to-instance.decorator.js.map","import { ClassTransformer } from '../ClassTransformer';\n/**\n * Transform the object from class to plain object and return only with the exposed properties.\n *\n * Can be applied to functions and getters/setters only.\n */\nexport function TransformInstanceToPlain(params) {\n return function (target, propertyKey, descriptor) {\n var classTransformer = new ClassTransformer();\n var originalMethod = descriptor.value;\n descriptor.value = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = originalMethod.apply(this, args);\n var isPromise = !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function';\n return isPromise\n ? result.then(function (data) { return classTransformer.instanceToPlain(data, params); })\n : classTransformer.instanceToPlain(result, params);\n };\n };\n}\n//# sourceMappingURL=transform-instance-to-plain.decorator.js.map","import { ClassTransformer } from '../ClassTransformer';\n/**\n * Return the class instance only with the exposed properties.\n *\n * Can be applied to functions and getters/setters only.\n */\nexport function TransformPlainToInstance(classType, params) {\n return function (target, propertyKey, descriptor) {\n var classTransformer = new ClassTransformer();\n var originalMethod = descriptor.value;\n descriptor.value = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = originalMethod.apply(this, args);\n var isPromise = !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function';\n return isPromise\n ? result.then(function (data) { return classTransformer.plainToInstance(classType, data, params); })\n : classTransformer.plainToInstance(classType, result, params);\n };\n };\n}\n//# sourceMappingURL=transform-plain-to-instance.decorator.js.map","import { defaultMetadataStorage } from '../storage';\n/**\n * Defines a custom logic for value transformation.\n *\n * Can be applied to properties only.\n */\nexport function Transform(transformFn, options) {\n if (options === void 0) { options = {}; }\n return function (target, propertyName) {\n defaultMetadataStorage.addTransformMetadata({\n target: target.constructor,\n propertyName: propertyName,\n transformFn: transformFn,\n options: options,\n });\n };\n}\n//# sourceMappingURL=transform.decorator.js.map","import { defaultMetadataStorage } from '../storage';\n/**\n * Specifies a type of the property.\n * The given TypeFunction can return a constructor. A discriminator can be given in the options.\n *\n * Can be applied to properties only.\n */\nexport function Type(typeFunction, options) {\n if (options === void 0) { options = {}; }\n return function (target, propertyName) {\n var reflectedType = Reflect.getMetadata('design:type', target, propertyName);\n defaultMetadataStorage.addTypeMetadata({\n target: target.constructor,\n propertyName: propertyName,\n reflectedType: reflectedType,\n typeFunction: typeFunction,\n options: options,\n });\n };\n}\n//# sourceMappingURL=type.decorator.js.map","import { ClassTransformer } from './ClassTransformer';\nexport { ClassTransformer } from './ClassTransformer';\nexport * from './decorators';\nexport * from './interfaces';\nexport * from './enums';\nvar classTransformer = new ClassTransformer();\nexport function classToPlain(object, options) {\n return classTransformer.instanceToPlain(object, options);\n}\nexport function instanceToPlain(object, options) {\n return classTransformer.instanceToPlain(object, options);\n}\nexport function classToPlainFromExist(object, plainObject, options) {\n return classTransformer.classToPlainFromExist(object, plainObject, options);\n}\nexport function plainToClass(cls, plain, options) {\n return classTransformer.plainToInstance(cls, plain, options);\n}\nexport function plainToInstance(cls, plain, options) {\n return classTransformer.plainToInstance(cls, plain, options);\n}\nexport function plainToClassFromExist(clsObject, plain, options) {\n return classTransformer.plainToClassFromExist(clsObject, plain, options);\n}\nexport function instanceToInstance(object, options) {\n return classTransformer.instanceToInstance(object, options);\n}\nexport function classToClassFromExist(object, fromObject, options) {\n return classTransformer.classToClassFromExist(object, fromObject, options);\n}\nexport function serialize(object, options) {\n return classTransformer.serialize(object, options);\n}\n/**\n * Deserializes given JSON string to a object of the given class.\n *\n * @deprecated This function is being removed. Please use the following instead:\n * ```\n * instanceToClass(cls, JSON.parse(json), options)\n * ```\n */\nexport function deserialize(cls, json, options) {\n return classTransformer.deserialize(cls, json, options);\n}\n/**\n * Deserializes given JSON string to an array of objects of the given class.\n *\n * @deprecated This function is being removed. Please use the following instead:\n * ```\n * JSON.parse(json).map(value => instanceToClass(cls, value, options))\n * ```\n *\n */\nexport function deserializeArray(cls, json, options) {\n return classTransformer.deserializeArray(cls, json, options);\n}\n//# sourceMappingURL=index.js.map"],"names":["TransformationType","this"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/bundles/class-transformer.umd.min.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/bundles/class-transformer.umd.min.js new file mode 100644 index 00000000..6688b575 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/bundles/class-transformer.umd.min.js @@ -0,0 +1,2 @@ +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).ClassTransformer={})}(this,(function(t){"use strict";var n;t.TransformationType=void 0,(n=t.TransformationType||(t.TransformationType={}))[n.PLAIN_TO_CLASS=0]="PLAIN_TO_CLASS",n[n.CLASS_TO_PLAIN=1]="CLASS_TO_PLAIN",n[n.CLASS_TO_CLASS=2]="CLASS_TO_CLASS";var o=new(function(){function n(){this._typeMetadatas=new Map,this._transformMetadatas=new Map,this._exposeMetadatas=new Map,this._excludeMetadatas=new Map,this._ancestorsMap=new Map}return n.prototype.addTypeMetadata=function(t){this._typeMetadatas.has(t.target)||this._typeMetadatas.set(t.target,new Map),this._typeMetadatas.get(t.target).set(t.propertyName,t)},n.prototype.addTransformMetadata=function(t){this._transformMetadatas.has(t.target)||this._transformMetadatas.set(t.target,new Map),this._transformMetadatas.get(t.target).has(t.propertyName)||this._transformMetadatas.get(t.target).set(t.propertyName,[]),this._transformMetadatas.get(t.target).get(t.propertyName).push(t)},n.prototype.addExposeMetadata=function(t){this._exposeMetadatas.has(t.target)||this._exposeMetadatas.set(t.target,new Map),this._exposeMetadatas.get(t.target).set(t.propertyName,t)},n.prototype.addExcludeMetadata=function(t){this._excludeMetadatas.has(t.target)||this._excludeMetadatas.set(t.target,new Map),this._excludeMetadatas.get(t.target).set(t.propertyName,t)},n.prototype.findTransformMetadatas=function(n,o,e){return this.findMetadatas(this._transformMetadatas,n,o).filter((function(n){return!n.options||(!0===n.options.toClassOnly&&!0===n.options.toPlainOnly||(!0===n.options.toClassOnly?e===t.TransformationType.CLASS_TO_CLASS||e===t.TransformationType.PLAIN_TO_CLASS:!0!==n.options.toPlainOnly||e===t.TransformationType.CLASS_TO_PLAIN))}))},n.prototype.findExcludeMetadata=function(t,n){return this.findMetadata(this._excludeMetadatas,t,n)},n.prototype.findExposeMetadata=function(t,n){return this.findMetadata(this._exposeMetadatas,t,n)},n.prototype.findExposeMetadataByCustomName=function(t,n){return this.getExposedMetadatas(t).find((function(t){return t.options&&t.options.name===n}))},n.prototype.findTypeMetadata=function(t,n){return this.findMetadata(this._typeMetadatas,t,n)},n.prototype.getStrategy=function(t){var n=this._excludeMetadatas.get(t),o=n&&n.get(void 0),e=this._exposeMetadatas.get(t),r=e&&e.get(void 0);return o&&r||!o&&!r?"none":o?"excludeAll":"exposeAll"},n.prototype.getExposedMetadatas=function(t){return this.getMetadata(this._exposeMetadatas,t)},n.prototype.getExcludedMetadatas=function(t){return this.getMetadata(this._excludeMetadatas,t)},n.prototype.getExposedProperties=function(n,o){return this.getExposedMetadatas(n).filter((function(n){return!n.options||(!0===n.options.toClassOnly&&!0===n.options.toPlainOnly||(!0===n.options.toClassOnly?o===t.TransformationType.CLASS_TO_CLASS||o===t.TransformationType.PLAIN_TO_CLASS:!0!==n.options.toPlainOnly||o===t.TransformationType.CLASS_TO_PLAIN))})).map((function(t){return t.propertyName}))},n.prototype.getExcludedProperties=function(n,o){return this.getExcludedMetadatas(n).filter((function(n){return!n.options||(!0===n.options.toClassOnly&&!0===n.options.toPlainOnly||(!0===n.options.toClassOnly?o===t.TransformationType.CLASS_TO_CLASS||o===t.TransformationType.PLAIN_TO_CLASS:!0!==n.options.toPlainOnly||o===t.TransformationType.CLASS_TO_PLAIN))})).map((function(t){return t.propertyName}))},n.prototype.clear=function(){this._typeMetadatas.clear(),this._exposeMetadatas.clear(),this._excludeMetadatas.clear(),this._ancestorsMap.clear()},n.prototype.getMetadata=function(t,n){var o,e=t.get(n);e&&(o=Array.from(e.values()).filter((function(t){return void 0!==t.propertyName})));for(var r=[],a=0,i=this.getAncestors(n);a0&&(p=p.filter((function(t){return!c.includes(t)}))),void 0!==this.options.version&&(p=p.filter((function(t){var e=o.findExposeMetadata(n,t);return!e||!e.options||i.checkVersion(e.options.since,e.options.until)}))),p=this.options.groups&&this.options.groups.length?p.filter((function(t){var e=o.findExposeMetadata(n,t);return!e||!e.options||i.checkGroups(e.options.groups)})):p.filter((function(t){var e=o.findExposeMetadata(n,t);return!(e&&e.options&&e.options.groups&&e.options.groups.length)}))}return this.options.excludePrefixes&&this.options.excludePrefixes.length&&(p=p.filter((function(t){return i.options.excludePrefixes.every((function(n){return t.substr(0,n.length)!==n}))}))),p=p.filter((function(t,n,o){return o.indexOf(t)===n}))},n.prototype.checkVersion=function(t,n){var o=!0;return o&&t&&(o=this.options.version>=t),o&&n&&(o=this.options.version 0) {\n keys = keys.filter(function (key) {\n return !excludedProperties_1.includes(key);\n });\n }\n // apply versioning options\n if (this.options.version !== undefined) {\n keys = keys.filter(function (key) {\n var exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n if (!exposeMetadata || !exposeMetadata.options)\n return true;\n return _this.checkVersion(exposeMetadata.options.since, exposeMetadata.options.until);\n });\n }\n // apply grouping options\n if (this.options.groups && this.options.groups.length) {\n keys = keys.filter(function (key) {\n var exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n if (!exposeMetadata || !exposeMetadata.options)\n return true;\n return _this.checkGroups(exposeMetadata.options.groups);\n });\n }\n else {\n keys = keys.filter(function (key) {\n var exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n return (!exposeMetadata ||\n !exposeMetadata.options ||\n !exposeMetadata.options.groups ||\n !exposeMetadata.options.groups.length);\n });\n }\n }\n // exclude prefixed properties\n if (this.options.excludePrefixes && this.options.excludePrefixes.length) {\n keys = keys.filter(function (key) {\n return _this.options.excludePrefixes.every(function (prefix) {\n return key.substr(0, prefix.length) !== prefix;\n });\n });\n }\n // make sure we have unique keys\n keys = keys.filter(function (key, index, self) {\n return self.indexOf(key) === index;\n });\n return keys;\n };\n TransformOperationExecutor.prototype.checkVersion = function (since, until) {\n var decision = true;\n if (decision && since)\n decision = this.options.version >= since;\n if (decision && until)\n decision = this.options.version < until;\n return decision;\n };\n TransformOperationExecutor.prototype.checkGroups = function (groups) {\n if (!groups)\n return true;\n return this.options.groups.some(function (optionGroup) { return groups.includes(optionGroup); });\n };\n return TransformOperationExecutor;\n}());\nexport { TransformOperationExecutor };\n//# sourceMappingURL=TransformOperationExecutor.js.map","export function isPromise(p) {\n return p !== null && typeof p === 'object' && typeof p.then === 'function';\n}\n//# sourceMappingURL=is-promise.util.js.map","/**\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 if (typeof global !== 'undefined') {\n return global;\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 // 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//# sourceMappingURL=get-global.util.js.map","/**\n * These are the default options used by any transformation operation.\n */\nexport var defaultOptions = {\n enableCircularCheck: false,\n enableImplicitConversion: false,\n excludeExtraneousValues: false,\n excludePrefixes: undefined,\n exposeDefaultValues: false,\n exposeUnsetFields: true,\n groups: undefined,\n ignoreDecorators: false,\n strategy: undefined,\n targetMaps: undefined,\n version: undefined,\n};\n//# sourceMappingURL=default-options.constant.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { TransformOperationExecutor } from './TransformOperationExecutor';\nimport { TransformationType } from './enums';\nimport { defaultOptions } from './constants/default-options.constant';\nvar ClassTransformer = /** @class */ (function () {\n function ClassTransformer() {\n }\n ClassTransformer.prototype.instanceToPlain = function (object, options) {\n var executor = new TransformOperationExecutor(TransformationType.CLASS_TO_PLAIN, __assign(__assign({}, defaultOptions), options));\n return executor.transform(undefined, object, undefined, undefined, undefined, undefined);\n };\n ClassTransformer.prototype.classToPlainFromExist = function (object, plainObject, options) {\n var executor = new TransformOperationExecutor(TransformationType.CLASS_TO_PLAIN, __assign(__assign({}, defaultOptions), options));\n return executor.transform(plainObject, object, undefined, undefined, undefined, undefined);\n };\n ClassTransformer.prototype.plainToInstance = function (cls, plain, options) {\n var executor = new TransformOperationExecutor(TransformationType.PLAIN_TO_CLASS, __assign(__assign({}, defaultOptions), options));\n return executor.transform(undefined, plain, cls, undefined, undefined, undefined);\n };\n ClassTransformer.prototype.plainToClassFromExist = function (clsObject, plain, options) {\n var executor = new TransformOperationExecutor(TransformationType.PLAIN_TO_CLASS, __assign(__assign({}, defaultOptions), options));\n return executor.transform(clsObject, plain, undefined, undefined, undefined, undefined);\n };\n ClassTransformer.prototype.instanceToInstance = function (object, options) {\n var executor = new TransformOperationExecutor(TransformationType.CLASS_TO_CLASS, __assign(__assign({}, defaultOptions), options));\n return executor.transform(undefined, object, undefined, undefined, undefined, undefined);\n };\n ClassTransformer.prototype.classToClassFromExist = function (object, fromObject, options) {\n var executor = new TransformOperationExecutor(TransformationType.CLASS_TO_CLASS, __assign(__assign({}, defaultOptions), options));\n return executor.transform(fromObject, object, undefined, undefined, undefined, undefined);\n };\n ClassTransformer.prototype.serialize = function (object, options) {\n return JSON.stringify(this.instanceToPlain(object, options));\n };\n /**\n * Deserializes given JSON string to a object of the given class.\n */\n ClassTransformer.prototype.deserialize = function (cls, json, options) {\n var jsonObject = JSON.parse(json);\n return this.plainToInstance(cls, jsonObject, options);\n };\n /**\n * Deserializes given JSON string to an array of objects of the given class.\n */\n ClassTransformer.prototype.deserializeArray = function (cls, json, options) {\n var jsonObject = JSON.parse(json);\n return this.plainToInstance(cls, jsonObject, options);\n };\n return ClassTransformer;\n}());\nexport { ClassTransformer };\n//# sourceMappingURL=ClassTransformer.js.map","import { ClassTransformer } from './ClassTransformer';\nexport { ClassTransformer } from './ClassTransformer';\nexport * from './decorators';\nexport * from './interfaces';\nexport * from './enums';\nvar classTransformer = new ClassTransformer();\nexport function classToPlain(object, options) {\n return classTransformer.instanceToPlain(object, options);\n}\nexport function instanceToPlain(object, options) {\n return classTransformer.instanceToPlain(object, options);\n}\nexport function classToPlainFromExist(object, plainObject, options) {\n return classTransformer.classToPlainFromExist(object, plainObject, options);\n}\nexport function plainToClass(cls, plain, options) {\n return classTransformer.plainToInstance(cls, plain, options);\n}\nexport function plainToInstance(cls, plain, options) {\n return classTransformer.plainToInstance(cls, plain, options);\n}\nexport function plainToClassFromExist(clsObject, plain, options) {\n return classTransformer.plainToClassFromExist(clsObject, plain, options);\n}\nexport function instanceToInstance(object, options) {\n return classTransformer.instanceToInstance(object, options);\n}\nexport function classToClassFromExist(object, fromObject, options) {\n return classTransformer.classToClassFromExist(object, fromObject, options);\n}\nexport function serialize(object, options) {\n return classTransformer.serialize(object, options);\n}\n/**\n * Deserializes given JSON string to a object of the given class.\n *\n * @deprecated This function is being removed. Please use the following instead:\n * ```\n * instanceToClass(cls, JSON.parse(json), options)\n * ```\n */\nexport function deserialize(cls, json, options) {\n return classTransformer.deserialize(cls, json, options);\n}\n/**\n * Deserializes given JSON string to an array of objects of the given class.\n *\n * @deprecated This function is being removed. Please use the following instead:\n * ```\n * JSON.parse(json).map(value => instanceToClass(cls, value, options))\n * ```\n *\n */\nexport function deserializeArray(cls, json, options) {\n return classTransformer.deserializeArray(cls, json, options);\n}\n//# sourceMappingURL=index.js.map","import { defaultMetadataStorage } from '../storage';\n/**\n * Marks the given class or property as excluded. By default the property is excluded in both\n * constructorToPlain and plainToConstructor transformations. It can be limited to only one direction\n * via using the `toPlainOnly` or `toClassOnly` option.\n *\n * Can be applied to class definitions and properties.\n */\nexport function Exclude(options) {\n if (options === void 0) { options = {}; }\n /**\n * NOTE: The `propertyName` property must be marked as optional because\n * this decorator used both as a class and a property decorator and the\n * Typescript compiler will freak out if we make it mandatory as a class\n * decorator only receives one parameter.\n */\n return function (object, propertyName) {\n defaultMetadataStorage.addExcludeMetadata({\n target: object instanceof Function ? object : object.constructor,\n propertyName: propertyName,\n options: options,\n });\n };\n}\n//# sourceMappingURL=exclude.decorator.js.map","import { defaultMetadataStorage } from '../storage';\n/**\n * Marks the given class or property as included. By default the property is included in both\n * constructorToPlain and plainToConstructor transformations. It can be limited to only one direction\n * via using the `toPlainOnly` or `toClassOnly` option.\n *\n * Can be applied to class definitions and properties.\n */\nexport function Expose(options) {\n if (options === void 0) { options = {}; }\n /**\n * NOTE: The `propertyName` property must be marked as optional because\n * this decorator used both as a class and a property decorator and the\n * Typescript compiler will freak out if we make it mandatory as a class\n * decorator only receives one parameter.\n */\n return function (object, propertyName) {\n defaultMetadataStorage.addExposeMetadata({\n target: object instanceof Function ? object : object.constructor,\n propertyName: propertyName,\n options: options,\n });\n };\n}\n//# sourceMappingURL=expose.decorator.js.map","import { defaultMetadataStorage } from '../storage';\n/**\n * Defines a custom logic for value transformation.\n *\n * Can be applied to properties only.\n */\nexport function Transform(transformFn, options) {\n if (options === void 0) { options = {}; }\n return function (target, propertyName) {\n defaultMetadataStorage.addTransformMetadata({\n target: target.constructor,\n propertyName: propertyName,\n transformFn: transformFn,\n options: options,\n });\n };\n}\n//# sourceMappingURL=transform.decorator.js.map","import { ClassTransformer } from '../ClassTransformer';\n/**\n * Return the class instance only with the exposed properties.\n *\n * Can be applied to functions and getters/setters only.\n */\nexport function TransformInstanceToInstance(params) {\n return function (target, propertyKey, descriptor) {\n var classTransformer = new ClassTransformer();\n var originalMethod = descriptor.value;\n descriptor.value = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = originalMethod.apply(this, args);\n var isPromise = !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function';\n return isPromise\n ? result.then(function (data) { return classTransformer.instanceToInstance(data, params); })\n : classTransformer.instanceToInstance(result, params);\n };\n };\n}\n//# sourceMappingURL=transform-instance-to-instance.decorator.js.map","import { ClassTransformer } from '../ClassTransformer';\n/**\n * Transform the object from class to plain object and return only with the exposed properties.\n *\n * Can be applied to functions and getters/setters only.\n */\nexport function TransformInstanceToPlain(params) {\n return function (target, propertyKey, descriptor) {\n var classTransformer = new ClassTransformer();\n var originalMethod = descriptor.value;\n descriptor.value = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = originalMethod.apply(this, args);\n var isPromise = !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function';\n return isPromise\n ? result.then(function (data) { return classTransformer.instanceToPlain(data, params); })\n : classTransformer.instanceToPlain(result, params);\n };\n };\n}\n//# sourceMappingURL=transform-instance-to-plain.decorator.js.map","import { ClassTransformer } from '../ClassTransformer';\n/**\n * Return the class instance only with the exposed properties.\n *\n * Can be applied to functions and getters/setters only.\n */\nexport function TransformPlainToInstance(classType, params) {\n return function (target, propertyKey, descriptor) {\n var classTransformer = new ClassTransformer();\n var originalMethod = descriptor.value;\n descriptor.value = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = originalMethod.apply(this, args);\n var isPromise = !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function';\n return isPromise\n ? result.then(function (data) { return classTransformer.plainToInstance(classType, data, params); })\n : classTransformer.plainToInstance(classType, result, params);\n };\n };\n}\n//# sourceMappingURL=transform-plain-to-instance.decorator.js.map","import { defaultMetadataStorage } from '../storage';\n/**\n * Specifies a type of the property.\n * The given TypeFunction can return a constructor. A discriminator can be given in the options.\n *\n * Can be applied to properties only.\n */\nexport function Type(typeFunction, options) {\n if (options === void 0) { options = {}; }\n return function (target, propertyName) {\n var reflectedType = Reflect.getMetadata('design:type', target, propertyName);\n defaultMetadataStorage.addTypeMetadata({\n target: target.constructor,\n propertyName: propertyName,\n reflectedType: reflectedType,\n typeFunction: typeFunction,\n options: options,\n });\n };\n}\n//# sourceMappingURL=type.decorator.js.map"],"names":["TransformationType","defaultMetadataStorage","MetadataStorage","this","_typeMetadatas","Map","_transformMetadatas","_exposeMetadatas","_excludeMetadatas","_ancestorsMap","prototype","addTypeMetadata","metadata","has","target","set","get","propertyName","addTransformMetadata","push","addExposeMetadata","addExcludeMetadata","findTransformMetadatas","transformationType","findMetadatas","filter","options","toClassOnly","toPlainOnly","CLASS_TO_CLASS","PLAIN_TO_CLASS","CLASS_TO_PLAIN","findExcludeMetadata","findMetadata","findExposeMetadata","findExposeMetadataByCustomName","name","getExposedMetadatas","find","findTypeMetadata","getStrategy","excludeMap","exclude","undefined","exposeMap","expose","getMetadata","getExcludedMetadatas","getExposedProperties","map","getExcludedProperties","clear","metadatas","metadataFromTarget","metadataFromTargetMap","Array","from","values","meta","metadataFromAncestors","_i","_a","getAncestors","length","ancestor","ancestorMetadataMap","metadataFromAncestor","apply","concat","ancestorResult","metadataFromAncestorsTarget","slice","reverse","ancestors","baseClass","Object","getPrototypeOf","constructor","__spreadArray","to","pack","arguments","ar","i","l","call","TransformOperationExecutor","recursionStack","Set","transform","source","value","targetType","arrayType","isMap","level","p","_this","isArray","newValue_1","array","instantiateArrayType","forEach","subValue","index","subSource","enableCircularCheck","isCircular","add","realTargetType","discriminator","property","subTypes","subType","newObject","object","newType","typeFunction","keepDiscriminatorProperty","value_1","String","Number","Boolean","Date","valueOf","globalThis","global","window","self","Buffer","then","keys","getKeys","newValue","_loop_1","key","valueKey","newValueKey","this_1","ignoreDecorators","exposeMetadata","Function","type","isSubValueMap","metadata_1","reflectedType","targetMaps","properties","enableImplicitConversion","Reflect","arrayType_1","getReflectedType","descriptor","getOwnPropertyDescriptor","finalValue","applyCustomTransformations","exposeUnsetFields","transformKey","exposeDefaultValues","keys_1","delete","Promise","resolve","reject","data","obj","version","checkVersion","since","until","groups","checkGroups","transformFn","strategy","excludeExtraneousValues","exposedProperties","excludedProperties","excludedProperties_1","includes","excludePrefixes","every","prefix","substr","indexOf","decision","some","optionGroup","defaultOptions","__assign","assign","t","s","n","hasOwnProperty","ClassTransformer","instanceToPlain","classToPlainFromExist","plainObject","plainToInstance","cls","plain","plainToClassFromExist","clsObject","instanceToInstance","classToClassFromExist","fromObject","serialize","JSON","stringify","deserialize","json","jsonObject","parse","deserializeArray","classTransformer","params","propertyKey","originalMethod","args","result","isPromise","classType"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/ClassTransformer.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/ClassTransformer.js new file mode 100644 index 00000000..6c359cea --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/ClassTransformer.js @@ -0,0 +1,69 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ClassTransformer = void 0; +const TransformOperationExecutor_1 = require("./TransformOperationExecutor"); +const enums_1 = require("./enums"); +const default_options_constant_1 = require("./constants/default-options.constant"); +class ClassTransformer { + instanceToPlain(object, options) { + const executor = new TransformOperationExecutor_1.TransformOperationExecutor(enums_1.TransformationType.CLASS_TO_PLAIN, { + ...default_options_constant_1.defaultOptions, + ...options, + }); + return executor.transform(undefined, object, undefined, undefined, undefined, undefined); + } + classToPlainFromExist(object, plainObject, options) { + const executor = new TransformOperationExecutor_1.TransformOperationExecutor(enums_1.TransformationType.CLASS_TO_PLAIN, { + ...default_options_constant_1.defaultOptions, + ...options, + }); + return executor.transform(plainObject, object, undefined, undefined, undefined, undefined); + } + plainToInstance(cls, plain, options) { + const executor = new TransformOperationExecutor_1.TransformOperationExecutor(enums_1.TransformationType.PLAIN_TO_CLASS, { + ...default_options_constant_1.defaultOptions, + ...options, + }); + return executor.transform(undefined, plain, cls, undefined, undefined, undefined); + } + plainToClassFromExist(clsObject, plain, options) { + const executor = new TransformOperationExecutor_1.TransformOperationExecutor(enums_1.TransformationType.PLAIN_TO_CLASS, { + ...default_options_constant_1.defaultOptions, + ...options, + }); + return executor.transform(clsObject, plain, undefined, undefined, undefined, undefined); + } + instanceToInstance(object, options) { + const executor = new TransformOperationExecutor_1.TransformOperationExecutor(enums_1.TransformationType.CLASS_TO_CLASS, { + ...default_options_constant_1.defaultOptions, + ...options, + }); + return executor.transform(undefined, object, undefined, undefined, undefined, undefined); + } + classToClassFromExist(object, fromObject, options) { + const executor = new TransformOperationExecutor_1.TransformOperationExecutor(enums_1.TransformationType.CLASS_TO_CLASS, { + ...default_options_constant_1.defaultOptions, + ...options, + }); + return executor.transform(fromObject, object, undefined, undefined, undefined, undefined); + } + serialize(object, options) { + return JSON.stringify(this.instanceToPlain(object, options)); + } + /** + * Deserializes given JSON string to a object of the given class. + */ + deserialize(cls, json, options) { + const jsonObject = JSON.parse(json); + return this.plainToInstance(cls, jsonObject, options); + } + /** + * Deserializes given JSON string to an array of objects of the given class. + */ + deserializeArray(cls, json, options) { + const jsonObject = JSON.parse(json); + return this.plainToInstance(cls, jsonObject, options); + } +} +exports.ClassTransformer = ClassTransformer; +//# sourceMappingURL=ClassTransformer.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/ClassTransformer.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/ClassTransformer.js.map new file mode 100644 index 00000000..11b5b453 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/ClassTransformer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ClassTransformer.js","sourceRoot":"","sources":["../../src/ClassTransformer.ts"],"names":[],"mappings":"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","sourcesContent":["import { ClassTransformOptions } from './interfaces';\nimport { TransformOperationExecutor } from './TransformOperationExecutor';\nimport { TransformationType } from './enums';\nimport { ClassConstructor } from './interfaces';\nimport { defaultOptions } from './constants/default-options.constant';\n\nexport class ClassTransformer {\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Converts class (constructor) object to plain (literal) object. Also works with arrays.\n */\n instanceToPlain>(object: T, options?: ClassTransformOptions): Record;\n instanceToPlain>(object: T[], options?: ClassTransformOptions): Record[];\n instanceToPlain>(\n object: T | T[],\n options?: ClassTransformOptions\n ): Record | Record[] {\n const executor = new TransformOperationExecutor(TransformationType.CLASS_TO_PLAIN, {\n ...defaultOptions,\n ...options,\n });\n return executor.transform(undefined, object, undefined, undefined, undefined, undefined);\n }\n\n /**\n * Converts class (constructor) object to plain (literal) object.\n * Uses given plain object as source object (it means fills given plain object with data from class object).\n * Also works with arrays.\n */\n classToPlainFromExist, P>(\n object: T,\n plainObject: P,\n options?: ClassTransformOptions\n ): T;\n classToPlainFromExist, P>(\n object: T,\n plainObjects: P[],\n options?: ClassTransformOptions\n ): T[];\n classToPlainFromExist, P>(\n object: T,\n plainObject: P | P[],\n options?: ClassTransformOptions\n ): T | T[] {\n const executor = new TransformOperationExecutor(TransformationType.CLASS_TO_PLAIN, {\n ...defaultOptions,\n ...options,\n });\n return executor.transform(plainObject, object, undefined, undefined, undefined, undefined);\n }\n\n /**\n * Converts plain (literal) object to class (constructor) object. Also works with arrays.\n */\n plainToInstance, V extends Array>(\n cls: ClassConstructor,\n plain: V,\n options?: ClassTransformOptions\n ): T[];\n plainToInstance, V>(\n cls: ClassConstructor,\n plain: V,\n options?: ClassTransformOptions\n ): T;\n plainToInstance, V>(\n cls: ClassConstructor,\n plain: V | V[],\n options?: ClassTransformOptions\n ): T | T[] {\n const executor = new TransformOperationExecutor(TransformationType.PLAIN_TO_CLASS, {\n ...defaultOptions,\n ...options,\n });\n return executor.transform(undefined, plain, cls, undefined, undefined, undefined);\n }\n\n /**\n * Converts plain (literal) object to class (constructor) object.\n * Uses given object as source object (it means fills given object with data from plain object).\n * Also works with arrays.\n */\n plainToClassFromExist, V extends Array>(\n clsObject: T,\n plain: V,\n options?: ClassTransformOptions\n ): T;\n plainToClassFromExist, V>(clsObject: T, plain: V, options?: ClassTransformOptions): T[];\n plainToClassFromExist, V>(\n clsObject: T,\n plain: V | V[],\n options?: ClassTransformOptions\n ): T | T[] {\n const executor = new TransformOperationExecutor(TransformationType.PLAIN_TO_CLASS, {\n ...defaultOptions,\n ...options,\n });\n return executor.transform(clsObject, plain, undefined, undefined, undefined, undefined);\n }\n\n /**\n * Converts class (constructor) object to new class (constructor) object. Also works with arrays.\n */\n instanceToInstance(object: T, options?: ClassTransformOptions): T;\n instanceToInstance(object: T[], options?: ClassTransformOptions): T[];\n instanceToInstance(object: T | T[], options?: ClassTransformOptions): T | T[] {\n const executor = new TransformOperationExecutor(TransformationType.CLASS_TO_CLASS, {\n ...defaultOptions,\n ...options,\n });\n return executor.transform(undefined, object, undefined, undefined, undefined, undefined);\n }\n\n /**\n * Converts class (constructor) object to plain (literal) object.\n * Uses given plain object as source object (it means fills given plain object with data from class object).\n * Also works with arrays.\n */\n classToClassFromExist(object: T, fromObject: T, options?: ClassTransformOptions): T;\n classToClassFromExist(object: T, fromObjects: T[], options?: ClassTransformOptions): T[];\n classToClassFromExist(object: T, fromObject: T | T[], options?: ClassTransformOptions): T | T[] {\n const executor = new TransformOperationExecutor(TransformationType.CLASS_TO_CLASS, {\n ...defaultOptions,\n ...options,\n });\n return executor.transform(fromObject, object, undefined, undefined, undefined, undefined);\n }\n\n /**\n * Serializes given object to a JSON string.\n */\n serialize(object: T, options?: ClassTransformOptions): string;\n serialize(object: T[], options?: ClassTransformOptions): string;\n serialize(object: T | T[], options?: ClassTransformOptions): string {\n return JSON.stringify(this.instanceToPlain(object, options));\n }\n\n /**\n * Deserializes given JSON string to a object of the given class.\n */\n deserialize(cls: ClassConstructor, json: string, options?: ClassTransformOptions): T {\n const jsonObject: T = JSON.parse(json);\n return this.plainToInstance(cls, jsonObject, options);\n }\n\n /**\n * Deserializes given JSON string to an array of objects of the given class.\n */\n deserializeArray(cls: ClassConstructor, json: string, options?: ClassTransformOptions): T[] {\n const jsonObject: any[] = JSON.parse(json);\n return this.plainToInstance(cls, jsonObject, options);\n }\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/MetadataStorage.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/MetadataStorage.js new file mode 100644 index 00000000..c428cd14 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/MetadataStorage.js @@ -0,0 +1,211 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MetadataStorage = void 0; +const enums_1 = require("./enums"); +/** + * Storage all library metadata. + */ +class MetadataStorage { + constructor() { + // ------------------------------------------------------------------------- + // Properties + // ------------------------------------------------------------------------- + this._typeMetadatas = new Map(); + this._transformMetadatas = new Map(); + this._exposeMetadatas = new Map(); + this._excludeMetadatas = new Map(); + this._ancestorsMap = new Map(); + } + // ------------------------------------------------------------------------- + // Adder Methods + // ------------------------------------------------------------------------- + addTypeMetadata(metadata) { + if (!this._typeMetadatas.has(metadata.target)) { + this._typeMetadatas.set(metadata.target, new Map()); + } + this._typeMetadatas.get(metadata.target).set(metadata.propertyName, metadata); + } + addTransformMetadata(metadata) { + if (!this._transformMetadatas.has(metadata.target)) { + this._transformMetadatas.set(metadata.target, new Map()); + } + if (!this._transformMetadatas.get(metadata.target).has(metadata.propertyName)) { + this._transformMetadatas.get(metadata.target).set(metadata.propertyName, []); + } + this._transformMetadatas.get(metadata.target).get(metadata.propertyName).push(metadata); + } + addExposeMetadata(metadata) { + if (!this._exposeMetadatas.has(metadata.target)) { + this._exposeMetadatas.set(metadata.target, new Map()); + } + this._exposeMetadatas.get(metadata.target).set(metadata.propertyName, metadata); + } + addExcludeMetadata(metadata) { + if (!this._excludeMetadatas.has(metadata.target)) { + this._excludeMetadatas.set(metadata.target, new Map()); + } + this._excludeMetadatas.get(metadata.target).set(metadata.propertyName, metadata); + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + findTransformMetadatas(target, propertyName, transformationType) { + return this.findMetadatas(this._transformMetadatas, target, propertyName).filter(metadata => { + if (!metadata.options) + return true; + if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true) + return true; + if (metadata.options.toClassOnly === true) { + return (transformationType === enums_1.TransformationType.CLASS_TO_CLASS || + transformationType === enums_1.TransformationType.PLAIN_TO_CLASS); + } + if (metadata.options.toPlainOnly === true) { + return transformationType === enums_1.TransformationType.CLASS_TO_PLAIN; + } + return true; + }); + } + findExcludeMetadata(target, propertyName) { + return this.findMetadata(this._excludeMetadatas, target, propertyName); + } + findExposeMetadata(target, propertyName) { + return this.findMetadata(this._exposeMetadatas, target, propertyName); + } + findExposeMetadataByCustomName(target, name) { + return this.getExposedMetadatas(target).find(metadata => { + return metadata.options && metadata.options.name === name; + }); + } + findTypeMetadata(target, propertyName) { + return this.findMetadata(this._typeMetadatas, target, propertyName); + } + getStrategy(target) { + const excludeMap = this._excludeMetadatas.get(target); + const exclude = excludeMap && excludeMap.get(undefined); + const exposeMap = this._exposeMetadatas.get(target); + const expose = exposeMap && exposeMap.get(undefined); + if ((exclude && expose) || (!exclude && !expose)) + return 'none'; + return exclude ? 'excludeAll' : 'exposeAll'; + } + getExposedMetadatas(target) { + return this.getMetadata(this._exposeMetadatas, target); + } + getExcludedMetadatas(target) { + return this.getMetadata(this._excludeMetadatas, target); + } + getExposedProperties(target, transformationType) { + return this.getExposedMetadatas(target) + .filter(metadata => { + if (!metadata.options) + return true; + if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true) + return true; + if (metadata.options.toClassOnly === true) { + return (transformationType === enums_1.TransformationType.CLASS_TO_CLASS || + transformationType === enums_1.TransformationType.PLAIN_TO_CLASS); + } + if (metadata.options.toPlainOnly === true) { + return transformationType === enums_1.TransformationType.CLASS_TO_PLAIN; + } + return true; + }) + .map(metadata => metadata.propertyName); + } + getExcludedProperties(target, transformationType) { + return this.getExcludedMetadatas(target) + .filter(metadata => { + if (!metadata.options) + return true; + if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true) + return true; + if (metadata.options.toClassOnly === true) { + return (transformationType === enums_1.TransformationType.CLASS_TO_CLASS || + transformationType === enums_1.TransformationType.PLAIN_TO_CLASS); + } + if (metadata.options.toPlainOnly === true) { + return transformationType === enums_1.TransformationType.CLASS_TO_PLAIN; + } + return true; + }) + .map(metadata => metadata.propertyName); + } + clear() { + this._typeMetadatas.clear(); + this._exposeMetadatas.clear(); + this._excludeMetadatas.clear(); + this._ancestorsMap.clear(); + } + // ------------------------------------------------------------------------- + // Private Methods + // ------------------------------------------------------------------------- + getMetadata(metadatas, target) { + const metadataFromTargetMap = metadatas.get(target); + let metadataFromTarget; + if (metadataFromTargetMap) { + metadataFromTarget = Array.from(metadataFromTargetMap.values()).filter(meta => meta.propertyName !== undefined); + } + const metadataFromAncestors = []; + for (const ancestor of this.getAncestors(target)) { + const ancestorMetadataMap = metadatas.get(ancestor); + if (ancestorMetadataMap) { + const metadataFromAncestor = Array.from(ancestorMetadataMap.values()).filter(meta => meta.propertyName !== undefined); + metadataFromAncestors.push(...metadataFromAncestor); + } + } + return metadataFromAncestors.concat(metadataFromTarget || []); + } + findMetadata(metadatas, target, propertyName) { + const metadataFromTargetMap = metadatas.get(target); + if (metadataFromTargetMap) { + const metadataFromTarget = metadataFromTargetMap.get(propertyName); + if (metadataFromTarget) { + return metadataFromTarget; + } + } + for (const ancestor of this.getAncestors(target)) { + const ancestorMetadataMap = metadatas.get(ancestor); + if (ancestorMetadataMap) { + const ancestorResult = ancestorMetadataMap.get(propertyName); + if (ancestorResult) { + return ancestorResult; + } + } + } + return undefined; + } + findMetadatas(metadatas, target, propertyName) { + const metadataFromTargetMap = metadatas.get(target); + let metadataFromTarget; + if (metadataFromTargetMap) { + metadataFromTarget = metadataFromTargetMap.get(propertyName); + } + const metadataFromAncestorsTarget = []; + for (const ancestor of this.getAncestors(target)) { + const ancestorMetadataMap = metadatas.get(ancestor); + if (ancestorMetadataMap) { + if (ancestorMetadataMap.has(propertyName)) { + metadataFromAncestorsTarget.push(...ancestorMetadataMap.get(propertyName)); + } + } + } + return metadataFromAncestorsTarget + .slice() + .reverse() + .concat((metadataFromTarget || []).slice().reverse()); + } + getAncestors(target) { + if (!target) + return []; + if (!this._ancestorsMap.has(target)) { + const ancestors = []; + for (let baseClass = Object.getPrototypeOf(target.prototype.constructor); typeof baseClass.prototype !== 'undefined'; baseClass = Object.getPrototypeOf(baseClass.prototype.constructor)) { + ancestors.push(baseClass); + } + this._ancestorsMap.set(target, ancestors); + } + return this._ancestorsMap.get(target); + } +} +exports.MetadataStorage = MetadataStorage; +//# sourceMappingURL=MetadataStorage.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/MetadataStorage.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/MetadataStorage.js.map new file mode 100644 index 00000000..33ca3743 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/MetadataStorage.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MetadataStorage.js","sourceRoot":"","sources":["../../src/MetadataStorage.ts"],"names":[],"mappings":"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","sourcesContent":["import { TypeMetadata, ExposeMetadata, ExcludeMetadata, TransformMetadata } from './interfaces';\nimport { TransformationType } from './enums';\n\n/**\n * Storage all library metadata.\n */\nexport class MetadataStorage {\n // -------------------------------------------------------------------------\n // Properties\n // -------------------------------------------------------------------------\n\n private _typeMetadatas = new Map>();\n private _transformMetadatas = new Map>();\n private _exposeMetadatas = new Map>();\n private _excludeMetadatas = new Map>();\n private _ancestorsMap = new Map();\n\n // -------------------------------------------------------------------------\n // Adder Methods\n // -------------------------------------------------------------------------\n\n addTypeMetadata(metadata: TypeMetadata): void {\n if (!this._typeMetadatas.has(metadata.target)) {\n this._typeMetadatas.set(metadata.target, new Map());\n }\n this._typeMetadatas.get(metadata.target).set(metadata.propertyName, metadata);\n }\n\n addTransformMetadata(metadata: TransformMetadata): void {\n if (!this._transformMetadatas.has(metadata.target)) {\n this._transformMetadatas.set(metadata.target, new Map());\n }\n if (!this._transformMetadatas.get(metadata.target).has(metadata.propertyName)) {\n this._transformMetadatas.get(metadata.target).set(metadata.propertyName, []);\n }\n this._transformMetadatas.get(metadata.target).get(metadata.propertyName).push(metadata);\n }\n\n addExposeMetadata(metadata: ExposeMetadata): void {\n if (!this._exposeMetadatas.has(metadata.target)) {\n this._exposeMetadatas.set(metadata.target, new Map());\n }\n this._exposeMetadatas.get(metadata.target).set(metadata.propertyName, metadata);\n }\n\n addExcludeMetadata(metadata: ExcludeMetadata): void {\n if (!this._excludeMetadatas.has(metadata.target)) {\n this._excludeMetadatas.set(metadata.target, new Map());\n }\n this._excludeMetadatas.get(metadata.target).set(metadata.propertyName, metadata);\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n findTransformMetadatas(\n target: Function,\n propertyName: string,\n transformationType: TransformationType\n ): TransformMetadata[] {\n return this.findMetadatas(this._transformMetadatas, target, propertyName).filter(metadata => {\n if (!metadata.options) return true;\n if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true) return true;\n\n if (metadata.options.toClassOnly === true) {\n return (\n transformationType === TransformationType.CLASS_TO_CLASS ||\n transformationType === TransformationType.PLAIN_TO_CLASS\n );\n }\n if (metadata.options.toPlainOnly === true) {\n return transformationType === TransformationType.CLASS_TO_PLAIN;\n }\n\n return true;\n });\n }\n\n findExcludeMetadata(target: Function, propertyName: string): ExcludeMetadata {\n return this.findMetadata(this._excludeMetadatas, target, propertyName);\n }\n\n findExposeMetadata(target: Function, propertyName: string): ExposeMetadata {\n return this.findMetadata(this._exposeMetadatas, target, propertyName);\n }\n\n findExposeMetadataByCustomName(target: Function, name: string): ExposeMetadata {\n return this.getExposedMetadatas(target).find(metadata => {\n return metadata.options && metadata.options.name === name;\n });\n }\n\n findTypeMetadata(target: Function, propertyName: string): TypeMetadata {\n return this.findMetadata(this._typeMetadatas, target, propertyName);\n }\n\n getStrategy(target: Function): 'excludeAll' | 'exposeAll' | 'none' {\n const excludeMap = this._excludeMetadatas.get(target);\n const exclude = excludeMap && excludeMap.get(undefined);\n const exposeMap = this._exposeMetadatas.get(target);\n const expose = exposeMap && exposeMap.get(undefined);\n if ((exclude && expose) || (!exclude && !expose)) return 'none';\n return exclude ? 'excludeAll' : 'exposeAll';\n }\n\n getExposedMetadatas(target: Function): ExposeMetadata[] {\n return this.getMetadata(this._exposeMetadatas, target);\n }\n\n getExcludedMetadatas(target: Function): ExcludeMetadata[] {\n return this.getMetadata(this._excludeMetadatas, target);\n }\n\n getExposedProperties(target: Function, transformationType: TransformationType): string[] {\n return this.getExposedMetadatas(target)\n .filter(metadata => {\n if (!metadata.options) return true;\n if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true) return true;\n\n if (metadata.options.toClassOnly === true) {\n return (\n transformationType === TransformationType.CLASS_TO_CLASS ||\n transformationType === TransformationType.PLAIN_TO_CLASS\n );\n }\n if (metadata.options.toPlainOnly === true) {\n return transformationType === TransformationType.CLASS_TO_PLAIN;\n }\n\n return true;\n })\n .map(metadata => metadata.propertyName);\n }\n\n getExcludedProperties(target: Function, transformationType: TransformationType): string[] {\n return this.getExcludedMetadatas(target)\n .filter(metadata => {\n if (!metadata.options) return true;\n if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true) return true;\n\n if (metadata.options.toClassOnly === true) {\n return (\n transformationType === TransformationType.CLASS_TO_CLASS ||\n transformationType === TransformationType.PLAIN_TO_CLASS\n );\n }\n if (metadata.options.toPlainOnly === true) {\n return transformationType === TransformationType.CLASS_TO_PLAIN;\n }\n\n return true;\n })\n .map(metadata => metadata.propertyName);\n }\n\n clear(): void {\n this._typeMetadatas.clear();\n this._exposeMetadatas.clear();\n this._excludeMetadatas.clear();\n this._ancestorsMap.clear();\n }\n\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n\n private getMetadata(\n metadatas: Map>,\n target: Function\n ): T[] {\n const metadataFromTargetMap = metadatas.get(target);\n let metadataFromTarget: T[];\n if (metadataFromTargetMap) {\n metadataFromTarget = Array.from(metadataFromTargetMap.values()).filter(meta => meta.propertyName !== undefined);\n }\n const metadataFromAncestors: T[] = [];\n for (const ancestor of this.getAncestors(target)) {\n const ancestorMetadataMap = metadatas.get(ancestor);\n if (ancestorMetadataMap) {\n const metadataFromAncestor = Array.from(ancestorMetadataMap.values()).filter(\n meta => meta.propertyName !== undefined\n );\n metadataFromAncestors.push(...metadataFromAncestor);\n }\n }\n return metadataFromAncestors.concat(metadataFromTarget || []);\n }\n\n private findMetadata(\n metadatas: Map>,\n target: Function,\n propertyName: string\n ): T {\n const metadataFromTargetMap = metadatas.get(target);\n if (metadataFromTargetMap) {\n const metadataFromTarget = metadataFromTargetMap.get(propertyName);\n if (metadataFromTarget) {\n return metadataFromTarget;\n }\n }\n for (const ancestor of this.getAncestors(target)) {\n const ancestorMetadataMap = metadatas.get(ancestor);\n if (ancestorMetadataMap) {\n const ancestorResult = ancestorMetadataMap.get(propertyName);\n if (ancestorResult) {\n return ancestorResult;\n }\n }\n }\n return undefined;\n }\n\n private findMetadatas(\n metadatas: Map>,\n target: Function,\n propertyName: string\n ): T[] {\n const metadataFromTargetMap = metadatas.get(target);\n let metadataFromTarget: T[];\n if (metadataFromTargetMap) {\n metadataFromTarget = metadataFromTargetMap.get(propertyName);\n }\n const metadataFromAncestorsTarget: T[] = [];\n for (const ancestor of this.getAncestors(target)) {\n const ancestorMetadataMap = metadatas.get(ancestor);\n if (ancestorMetadataMap) {\n if (ancestorMetadataMap.has(propertyName)) {\n metadataFromAncestorsTarget.push(...ancestorMetadataMap.get(propertyName));\n }\n }\n }\n return metadataFromAncestorsTarget\n .slice()\n .reverse()\n .concat((metadataFromTarget || []).slice().reverse());\n }\n\n private getAncestors(target: Function): Function[] {\n if (!target) return [];\n if (!this._ancestorsMap.has(target)) {\n const ancestors: Function[] = [];\n for (\n let baseClass = Object.getPrototypeOf(target.prototype.constructor);\n typeof baseClass.prototype !== 'undefined';\n baseClass = Object.getPrototypeOf(baseClass.prototype.constructor)\n ) {\n ancestors.push(baseClass);\n }\n this._ancestorsMap.set(target, ancestors);\n }\n return this._ancestorsMap.get(target);\n }\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/TransformOperationExecutor.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/TransformOperationExecutor.js new file mode 100644 index 00000000..2e40fb4f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/TransformOperationExecutor.js @@ -0,0 +1,480 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.TransformOperationExecutor = void 0; +const storage_1 = require("./storage"); +const enums_1 = require("./enums"); +const utils_1 = require("./utils"); +function instantiateArrayType(arrayType) { + const array = new arrayType(); + if (!(array instanceof Set) && !('push' in array)) { + return []; + } + return array; +} +class TransformOperationExecutor { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + constructor(transformationType, options) { + this.transformationType = transformationType; + this.options = options; + // ------------------------------------------------------------------------- + // Private Properties + // ------------------------------------------------------------------------- + this.recursionStack = new Set(); + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + transform(source, value, targetType, arrayType, isMap, level = 0) { + if (Array.isArray(value) || value instanceof Set) { + const newValue = arrayType && this.transformationType === enums_1.TransformationType.PLAIN_TO_CLASS + ? instantiateArrayType(arrayType) + : []; + value.forEach((subValue, index) => { + const subSource = source ? source[index] : undefined; + if (!this.options.enableCircularCheck || !this.isCircular(subValue)) { + let realTargetType; + if (typeof targetType !== 'function' && + targetType && + targetType.options && + targetType.options.discriminator && + targetType.options.discriminator.property && + targetType.options.discriminator.subTypes) { + if (this.transformationType === enums_1.TransformationType.PLAIN_TO_CLASS) { + realTargetType = targetType.options.discriminator.subTypes.find(subType => subType.name === subValue[targetType.options.discriminator.property]); + const options = { newObject: newValue, object: subValue, property: undefined }; + const newType = targetType.typeFunction(options); + realTargetType === undefined ? (realTargetType = newType) : (realTargetType = realTargetType.value); + if (!targetType.options.keepDiscriminatorProperty) + delete subValue[targetType.options.discriminator.property]; + } + if (this.transformationType === enums_1.TransformationType.CLASS_TO_CLASS) { + realTargetType = subValue.constructor; + } + if (this.transformationType === enums_1.TransformationType.CLASS_TO_PLAIN) { + subValue[targetType.options.discriminator.property] = targetType.options.discriminator.subTypes.find(subType => subType.value === subValue.constructor).name; + } + } + else { + realTargetType = targetType; + } + const value = this.transform(subSource, subValue, realTargetType, undefined, subValue instanceof Map, level + 1); + if (newValue instanceof Set) { + newValue.add(value); + } + else { + newValue.push(value); + } + } + else if (this.transformationType === enums_1.TransformationType.CLASS_TO_CLASS) { + if (newValue instanceof Set) { + newValue.add(subValue); + } + else { + newValue.push(subValue); + } + } + }); + return newValue; + } + else if (targetType === String && !isMap) { + if (value === null || value === undefined) + return value; + return String(value); + } + else if (targetType === Number && !isMap) { + if (value === null || value === undefined) + return value; + return Number(value); + } + else if (targetType === Boolean && !isMap) { + if (value === null || value === undefined) + return value; + return Boolean(value); + } + else if ((targetType === Date || value instanceof Date) && !isMap) { + if (value instanceof Date) { + return new Date(value.valueOf()); + } + if (value === null || value === undefined) + return value; + return new Date(value); + } + else if (!!(0, utils_1.getGlobal)().Buffer && (targetType === Buffer || value instanceof Buffer) && !isMap) { + if (value === null || value === undefined) + return value; + return Buffer.from(value); + } + else if ((0, utils_1.isPromise)(value) && !isMap) { + return new Promise((resolve, reject) => { + value.then((data) => resolve(this.transform(undefined, data, targetType, undefined, undefined, level + 1)), reject); + }); + } + else if (!isMap && value !== null && typeof value === 'object' && typeof value.then === 'function') { + // Note: We should not enter this, as promise has been handled above + // This option simply returns the Promise preventing a JS error from happening and should be an inaccessible path. + return value; // skip promise transformation + } + else if (typeof value === 'object' && value !== null) { + // try to guess the type + if (!targetType && value.constructor !== Object /* && TransformationType === TransformationType.CLASS_TO_PLAIN*/) + if (!Array.isArray(value) && value.constructor === Array) { + // Somebody attempts to convert special Array like object to Array, eg: + // const evilObject = { '100000000': '100000000', __proto__: [] }; + // This could be used to cause Denial-of-service attack so we don't allow it. + // See prevent-array-bomb.spec.ts for more details. + } + else { + // We are good we can use the built-in constructor + targetType = value.constructor; + } + if (!targetType && source) + targetType = source.constructor; + if (this.options.enableCircularCheck) { + // add transformed type to prevent circular references + this.recursionStack.add(value); + } + const keys = this.getKeys(targetType, value, isMap); + let newValue = source ? source : {}; + if (!source && + (this.transformationType === enums_1.TransformationType.PLAIN_TO_CLASS || + this.transformationType === enums_1.TransformationType.CLASS_TO_CLASS)) { + if (isMap) { + newValue = new Map(); + } + else if (targetType) { + newValue = new targetType(); + } + else { + newValue = {}; + } + } + // traverse over keys + for (const key of keys) { + if (key === '__proto__' || key === 'constructor') { + continue; + } + const valueKey = key; + let newValueKey = key, propertyName = key; + if (!this.options.ignoreDecorators && targetType) { + if (this.transformationType === enums_1.TransformationType.PLAIN_TO_CLASS) { + const exposeMetadata = storage_1.defaultMetadataStorage.findExposeMetadataByCustomName(targetType, key); + if (exposeMetadata) { + propertyName = exposeMetadata.propertyName; + newValueKey = exposeMetadata.propertyName; + } + } + else if (this.transformationType === enums_1.TransformationType.CLASS_TO_PLAIN || + this.transformationType === enums_1.TransformationType.CLASS_TO_CLASS) { + const exposeMetadata = storage_1.defaultMetadataStorage.findExposeMetadata(targetType, key); + if (exposeMetadata && exposeMetadata.options && exposeMetadata.options.name) { + newValueKey = exposeMetadata.options.name; + } + } + } + // get a subvalue + let subValue = undefined; + if (this.transformationType === enums_1.TransformationType.PLAIN_TO_CLASS) { + /** + * This section is added for the following report: + * https://github.com/typestack/class-transformer/issues/596 + * + * We should not call functions or constructors when transforming to class. + */ + subValue = value[valueKey]; + } + else { + if (value instanceof Map) { + subValue = value.get(valueKey); + } + else if (value[valueKey] instanceof Function) { + subValue = value[valueKey](); + } + else { + subValue = value[valueKey]; + } + } + // determine a type + let type = undefined, isSubValueMap = subValue instanceof Map; + if (targetType && isMap) { + type = targetType; + } + else if (targetType) { + const metadata = storage_1.defaultMetadataStorage.findTypeMetadata(targetType, propertyName); + if (metadata) { + const options = { newObject: newValue, object: value, property: propertyName }; + const newType = metadata.typeFunction ? metadata.typeFunction(options) : metadata.reflectedType; + if (metadata.options && + metadata.options.discriminator && + metadata.options.discriminator.property && + metadata.options.discriminator.subTypes) { + if (!(value[valueKey] instanceof Array)) { + if (this.transformationType === enums_1.TransformationType.PLAIN_TO_CLASS) { + type = metadata.options.discriminator.subTypes.find(subType => { + if (subValue && subValue instanceof Object && metadata.options.discriminator.property in subValue) { + return subType.name === subValue[metadata.options.discriminator.property]; + } + }); + type === undefined ? (type = newType) : (type = type.value); + if (!metadata.options.keepDiscriminatorProperty) { + if (subValue && subValue instanceof Object && metadata.options.discriminator.property in subValue) { + delete subValue[metadata.options.discriminator.property]; + } + } + } + if (this.transformationType === enums_1.TransformationType.CLASS_TO_CLASS) { + type = subValue.constructor; + } + if (this.transformationType === enums_1.TransformationType.CLASS_TO_PLAIN) { + if (subValue) { + subValue[metadata.options.discriminator.property] = metadata.options.discriminator.subTypes.find(subType => subType.value === subValue.constructor).name; + } + } + } + else { + type = metadata; + } + } + else { + type = newType; + } + isSubValueMap = isSubValueMap || metadata.reflectedType === Map; + } + else if (this.options.targetMaps) { + // try to find a type in target maps + this.options.targetMaps + .filter(map => map.target === targetType && !!map.properties[propertyName]) + .forEach(map => (type = map.properties[propertyName])); + } + else if (this.options.enableImplicitConversion && + this.transformationType === enums_1.TransformationType.PLAIN_TO_CLASS) { + // if we have no registererd type via the @Type() decorator then we check if we have any + // type declarations in reflect-metadata (type declaration is emited only if some decorator is added to the property.) + const reflectedType = Reflect.getMetadata('design:type', targetType.prototype, propertyName); + if (reflectedType) { + type = reflectedType; + } + } + } + // if value is an array try to get its custom array type + const arrayType = Array.isArray(value[valueKey]) + ? this.getReflectedType(targetType, propertyName) + : undefined; + // const subValueKey = TransformationType === TransformationType.PLAIN_TO_CLASS && newKeyName ? newKeyName : key; + const subSource = source ? source[valueKey] : undefined; + // if its deserialization then type if required + // if we uncomment this types like string[] will not work + // if (this.transformationType === TransformationType.PLAIN_TO_CLASS && !type && subValue instanceof Object && !(subValue instanceof Date)) + // throw new Error(`Cannot determine type for ${(targetType as any).name }.${propertyName}, did you forget to specify a @Type?`); + // if newValue is a source object that has method that match newKeyName then skip it + if (newValue.constructor.prototype) { + const descriptor = Object.getOwnPropertyDescriptor(newValue.constructor.prototype, newValueKey); + if ((this.transformationType === enums_1.TransformationType.PLAIN_TO_CLASS || + this.transformationType === enums_1.TransformationType.CLASS_TO_CLASS) && + // eslint-disable-next-line @typescript-eslint/unbound-method + ((descriptor && !descriptor.set) || newValue[newValueKey] instanceof Function)) + // || TransformationType === TransformationType.CLASS_TO_CLASS + continue; + } + if (!this.options.enableCircularCheck || !this.isCircular(subValue)) { + const transformKey = this.transformationType === enums_1.TransformationType.PLAIN_TO_CLASS ? newValueKey : key; + let finalValue; + if (this.transformationType === enums_1.TransformationType.CLASS_TO_PLAIN) { + // Get original value + finalValue = value[transformKey]; + // Apply custom transformation + finalValue = this.applyCustomTransformations(finalValue, targetType, transformKey, value, this.transformationType); + // If nothing change, it means no custom transformation was applied, so use the subValue. + finalValue = value[transformKey] === finalValue ? subValue : finalValue; + // Apply the default transformation + finalValue = this.transform(subSource, finalValue, type, arrayType, isSubValueMap, level + 1); + } + else { + if (subValue === undefined && this.options.exposeDefaultValues) { + // Set default value if nothing provided + finalValue = newValue[newValueKey]; + } + else { + finalValue = this.transform(subSource, subValue, type, arrayType, isSubValueMap, level + 1); + finalValue = this.applyCustomTransformations(finalValue, targetType, transformKey, value, this.transformationType); + } + } + if (finalValue !== undefined || this.options.exposeUnsetFields) { + if (newValue instanceof Map) { + newValue.set(newValueKey, finalValue); + } + else { + newValue[newValueKey] = finalValue; + } + } + } + else if (this.transformationType === enums_1.TransformationType.CLASS_TO_CLASS) { + let finalValue = subValue; + finalValue = this.applyCustomTransformations(finalValue, targetType, key, value, this.transformationType); + if (finalValue !== undefined || this.options.exposeUnsetFields) { + if (newValue instanceof Map) { + newValue.set(newValueKey, finalValue); + } + else { + newValue[newValueKey] = finalValue; + } + } + } + } + if (this.options.enableCircularCheck) { + this.recursionStack.delete(value); + } + return newValue; + } + else { + return value; + } + } + applyCustomTransformations(value, target, key, obj, transformationType) { + let metadatas = storage_1.defaultMetadataStorage.findTransformMetadatas(target, key, this.transformationType); + // apply versioning options + if (this.options.version !== undefined) { + metadatas = metadatas.filter(metadata => { + if (!metadata.options) + return true; + return this.checkVersion(metadata.options.since, metadata.options.until); + }); + } + // apply grouping options + if (this.options.groups && this.options.groups.length) { + metadatas = metadatas.filter(metadata => { + if (!metadata.options) + return true; + return this.checkGroups(metadata.options.groups); + }); + } + else { + metadatas = metadatas.filter(metadata => { + return !metadata.options || !metadata.options.groups || !metadata.options.groups.length; + }); + } + metadatas.forEach(metadata => { + value = metadata.transformFn({ value, key, obj, type: transformationType, options: this.options }); + }); + return value; + } + // preventing circular references + isCircular(object) { + return this.recursionStack.has(object); + } + getReflectedType(target, propertyName) { + if (!target) + return undefined; + const meta = storage_1.defaultMetadataStorage.findTypeMetadata(target, propertyName); + return meta ? meta.reflectedType : undefined; + } + getKeys(target, object, isMap) { + // determine exclusion strategy + let strategy = storage_1.defaultMetadataStorage.getStrategy(target); + if (strategy === 'none') + strategy = this.options.strategy || 'exposeAll'; // exposeAll is default strategy + // get all keys that need to expose + let keys = []; + if (strategy === 'exposeAll' || isMap) { + if (object instanceof Map) { + keys = Array.from(object.keys()); + } + else { + keys = Object.keys(object); + } + } + if (isMap) { + // expose & exclude do not apply for map keys only to fields + return keys; + } + /** + * If decorators are ignored but we don't want the extraneous values, then we use the + * metadata to decide which property is needed, but doesn't apply the decorator effect. + */ + if (this.options.ignoreDecorators && this.options.excludeExtraneousValues && target) { + const exposedProperties = storage_1.defaultMetadataStorage.getExposedProperties(target, this.transformationType); + const excludedProperties = storage_1.defaultMetadataStorage.getExcludedProperties(target, this.transformationType); + keys = [...exposedProperties, ...excludedProperties]; + } + if (!this.options.ignoreDecorators && target) { + // add all exposed to list of keys + let exposedProperties = storage_1.defaultMetadataStorage.getExposedProperties(target, this.transformationType); + if (this.transformationType === enums_1.TransformationType.PLAIN_TO_CLASS) { + exposedProperties = exposedProperties.map(key => { + const exposeMetadata = storage_1.defaultMetadataStorage.findExposeMetadata(target, key); + if (exposeMetadata && exposeMetadata.options && exposeMetadata.options.name) { + return exposeMetadata.options.name; + } + return key; + }); + } + if (this.options.excludeExtraneousValues) { + keys = exposedProperties; + } + else { + keys = keys.concat(exposedProperties); + } + // exclude excluded properties + const excludedProperties = storage_1.defaultMetadataStorage.getExcludedProperties(target, this.transformationType); + if (excludedProperties.length > 0) { + keys = keys.filter(key => { + return !excludedProperties.includes(key); + }); + } + // apply versioning options + if (this.options.version !== undefined) { + keys = keys.filter(key => { + const exposeMetadata = storage_1.defaultMetadataStorage.findExposeMetadata(target, key); + if (!exposeMetadata || !exposeMetadata.options) + return true; + return this.checkVersion(exposeMetadata.options.since, exposeMetadata.options.until); + }); + } + // apply grouping options + if (this.options.groups && this.options.groups.length) { + keys = keys.filter(key => { + const exposeMetadata = storage_1.defaultMetadataStorage.findExposeMetadata(target, key); + if (!exposeMetadata || !exposeMetadata.options) + return true; + return this.checkGroups(exposeMetadata.options.groups); + }); + } + else { + keys = keys.filter(key => { + const exposeMetadata = storage_1.defaultMetadataStorage.findExposeMetadata(target, key); + return (!exposeMetadata || + !exposeMetadata.options || + !exposeMetadata.options.groups || + !exposeMetadata.options.groups.length); + }); + } + } + // exclude prefixed properties + if (this.options.excludePrefixes && this.options.excludePrefixes.length) { + keys = keys.filter(key => this.options.excludePrefixes.every(prefix => { + return key.substr(0, prefix.length) !== prefix; + })); + } + // make sure we have unique keys + keys = keys.filter((key, index, self) => { + return self.indexOf(key) === index; + }); + return keys; + } + checkVersion(since, until) { + let decision = true; + if (decision && since) + decision = this.options.version >= since; + if (decision && until) + decision = this.options.version < until; + return decision; + } + checkGroups(groups) { + if (!groups) + return true; + return this.options.groups.some(optionGroup => groups.includes(optionGroup)); + } +} +exports.TransformOperationExecutor = TransformOperationExecutor; +//# sourceMappingURL=TransformOperationExecutor.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/TransformOperationExecutor.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/TransformOperationExecutor.js.map new file mode 100644 index 00000000..e2b2b119 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/TransformOperationExecutor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"TransformOperationExecutor.js","sourceRoot":"","sources":["../../src/TransformOperationExecutor.ts"],"names":[],"mappings":"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","sourcesContent":["import { defaultMetadataStorage } from './storage';\nimport { ClassTransformOptions, TypeHelpOptions, TypeMetadata, TypeOptions } from './interfaces';\nimport { TransformationType } from './enums';\nimport { getGlobal, isPromise } from './utils';\n\nfunction instantiateArrayType(arrayType: Function): Array | Set {\n const array = new (arrayType as any)();\n if (!(array instanceof Set) && !('push' in array)) {\n return [];\n }\n return array;\n}\n\nexport class TransformOperationExecutor {\n // -------------------------------------------------------------------------\n // Private Properties\n // -------------------------------------------------------------------------\n\n private recursionStack = new Set>();\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private transformationType: TransformationType, private options: ClassTransformOptions) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n transform(\n source: Record | Record[] | any,\n value: Record | Record[] | any,\n targetType: Function | TypeMetadata,\n arrayType: Function,\n isMap: boolean,\n level: number = 0\n ): any {\n if (Array.isArray(value) || value instanceof Set) {\n const newValue =\n arrayType && this.transformationType === TransformationType.PLAIN_TO_CLASS\n ? instantiateArrayType(arrayType)\n : [];\n (value as any[]).forEach((subValue, index) => {\n const subSource = source ? source[index] : undefined;\n if (!this.options.enableCircularCheck || !this.isCircular(subValue)) {\n let realTargetType;\n if (\n typeof targetType !== 'function' &&\n targetType &&\n targetType.options &&\n targetType.options.discriminator &&\n targetType.options.discriminator.property &&\n targetType.options.discriminator.subTypes\n ) {\n if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n realTargetType = targetType.options.discriminator.subTypes.find(\n subType =>\n subType.name === subValue[(targetType as { options: TypeOptions }).options.discriminator.property]\n );\n const options: TypeHelpOptions = { newObject: newValue, object: subValue, property: undefined };\n const newType = targetType.typeFunction(options);\n realTargetType === undefined ? (realTargetType = newType) : (realTargetType = realTargetType.value);\n if (!targetType.options.keepDiscriminatorProperty)\n delete subValue[targetType.options.discriminator.property];\n }\n\n if (this.transformationType === TransformationType.CLASS_TO_CLASS) {\n realTargetType = subValue.constructor;\n }\n if (this.transformationType === TransformationType.CLASS_TO_PLAIN) {\n subValue[targetType.options.discriminator.property] = targetType.options.discriminator.subTypes.find(\n subType => subType.value === subValue.constructor\n ).name;\n }\n } else {\n realTargetType = targetType;\n }\n const value = this.transform(\n subSource,\n subValue,\n realTargetType,\n undefined,\n subValue instanceof Map,\n level + 1\n );\n\n if (newValue instanceof Set) {\n newValue.add(value);\n } else {\n newValue.push(value);\n }\n } else if (this.transformationType === TransformationType.CLASS_TO_CLASS) {\n if (newValue instanceof Set) {\n newValue.add(subValue);\n } else {\n newValue.push(subValue);\n }\n }\n });\n return newValue;\n } else if (targetType === String && !isMap) {\n if (value === null || value === undefined) return value;\n return String(value);\n } else if (targetType === Number && !isMap) {\n if (value === null || value === undefined) return value;\n return Number(value);\n } else if (targetType === Boolean && !isMap) {\n if (value === null || value === undefined) return value;\n return Boolean(value);\n } else if ((targetType === Date || value instanceof Date) && !isMap) {\n if (value instanceof Date) {\n return new Date(value.valueOf());\n }\n if (value === null || value === undefined) return value;\n return new Date(value);\n } else if (!!getGlobal().Buffer && (targetType === Buffer || value instanceof Buffer) && !isMap) {\n if (value === null || value === undefined) return value;\n return Buffer.from(value);\n } else if (isPromise(value) && !isMap) {\n return new Promise((resolve, reject) => {\n value.then(\n (data: any) => resolve(this.transform(undefined, data, targetType, undefined, undefined, level + 1)),\n reject\n );\n });\n } else if (!isMap && value !== null && typeof value === 'object' && typeof value.then === 'function') {\n // Note: We should not enter this, as promise has been handled above\n // This option simply returns the Promise preventing a JS error from happening and should be an inaccessible path.\n return value; // skip promise transformation\n } else if (typeof value === 'object' && value !== null) {\n // try to guess the type\n if (!targetType && value.constructor !== Object /* && TransformationType === TransformationType.CLASS_TO_PLAIN*/)\n if (!Array.isArray(value) && value.constructor === Array) {\n // Somebody attempts to convert special Array like object to Array, eg:\n // const evilObject = { '100000000': '100000000', __proto__: [] };\n // This could be used to cause Denial-of-service attack so we don't allow it.\n // See prevent-array-bomb.spec.ts for more details.\n } else {\n // We are good we can use the built-in constructor\n targetType = value.constructor;\n }\n if (!targetType && source) targetType = source.constructor;\n\n if (this.options.enableCircularCheck) {\n // add transformed type to prevent circular references\n this.recursionStack.add(value);\n }\n\n const keys = this.getKeys(targetType as Function, value, isMap);\n let newValue: any = source ? source : {};\n if (\n !source &&\n (this.transformationType === TransformationType.PLAIN_TO_CLASS ||\n this.transformationType === TransformationType.CLASS_TO_CLASS)\n ) {\n if (isMap) {\n newValue = new Map();\n } else if (targetType) {\n newValue = new (targetType as any)();\n } else {\n newValue = {};\n }\n }\n\n // traverse over keys\n for (const key of keys) {\n if (key === '__proto__' || key === 'constructor') {\n continue;\n }\n\n const valueKey = key;\n let newValueKey = key,\n propertyName = key;\n if (!this.options.ignoreDecorators && targetType) {\n if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadataByCustomName(targetType as Function, key);\n if (exposeMetadata) {\n propertyName = exposeMetadata.propertyName;\n newValueKey = exposeMetadata.propertyName;\n }\n } else if (\n this.transformationType === TransformationType.CLASS_TO_PLAIN ||\n this.transformationType === TransformationType.CLASS_TO_CLASS\n ) {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadata(targetType as Function, key);\n if (exposeMetadata && exposeMetadata.options && exposeMetadata.options.name) {\n newValueKey = exposeMetadata.options.name;\n }\n }\n }\n\n // get a subvalue\n let subValue: any = undefined;\n if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n /**\n * This section is added for the following report:\n * https://github.com/typestack/class-transformer/issues/596\n *\n * We should not call functions or constructors when transforming to class.\n */\n subValue = value[valueKey];\n } else {\n if (value instanceof Map) {\n subValue = value.get(valueKey);\n } else if (value[valueKey] instanceof Function) {\n subValue = value[valueKey]();\n } else {\n subValue = value[valueKey];\n }\n }\n\n // determine a type\n let type: any = undefined,\n isSubValueMap = subValue instanceof Map;\n if (targetType && isMap) {\n type = targetType;\n } else if (targetType) {\n const metadata = defaultMetadataStorage.findTypeMetadata(targetType as Function, propertyName);\n if (metadata) {\n const options: TypeHelpOptions = { newObject: newValue, object: value, property: propertyName };\n const newType = metadata.typeFunction ? metadata.typeFunction(options) : metadata.reflectedType;\n if (\n metadata.options &&\n metadata.options.discriminator &&\n metadata.options.discriminator.property &&\n metadata.options.discriminator.subTypes\n ) {\n if (!(value[valueKey] instanceof Array)) {\n if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n type = metadata.options.discriminator.subTypes.find(subType => {\n if (subValue && subValue instanceof Object && metadata.options.discriminator.property in subValue) {\n return subType.name === subValue[metadata.options.discriminator.property];\n }\n });\n type === undefined ? (type = newType) : (type = type.value);\n if (!metadata.options.keepDiscriminatorProperty) {\n if (subValue && subValue instanceof Object && metadata.options.discriminator.property in subValue) {\n delete subValue[metadata.options.discriminator.property];\n }\n }\n }\n if (this.transformationType === TransformationType.CLASS_TO_CLASS) {\n type = subValue.constructor;\n }\n if (this.transformationType === TransformationType.CLASS_TO_PLAIN) {\n if (subValue) {\n subValue[metadata.options.discriminator.property] = metadata.options.discriminator.subTypes.find(\n subType => subType.value === subValue.constructor\n ).name;\n }\n }\n } else {\n type = metadata;\n }\n } else {\n type = newType;\n }\n isSubValueMap = isSubValueMap || metadata.reflectedType === Map;\n } else if (this.options.targetMaps) {\n // try to find a type in target maps\n this.options.targetMaps\n .filter(map => map.target === targetType && !!map.properties[propertyName])\n .forEach(map => (type = map.properties[propertyName]));\n } else if (\n this.options.enableImplicitConversion &&\n this.transformationType === TransformationType.PLAIN_TO_CLASS\n ) {\n // if we have no registererd type via the @Type() decorator then we check if we have any\n // type declarations in reflect-metadata (type declaration is emited only if some decorator is added to the property.)\n const reflectedType = (Reflect as any).getMetadata(\n 'design:type',\n (targetType as Function).prototype,\n propertyName\n );\n\n if (reflectedType) {\n type = reflectedType;\n }\n }\n }\n\n // if value is an array try to get its custom array type\n const arrayType = Array.isArray(value[valueKey])\n ? this.getReflectedType(targetType as Function, propertyName)\n : undefined;\n\n // const subValueKey = TransformationType === TransformationType.PLAIN_TO_CLASS && newKeyName ? newKeyName : key;\n const subSource = source ? source[valueKey] : undefined;\n\n // if its deserialization then type if required\n // if we uncomment this types like string[] will not work\n // if (this.transformationType === TransformationType.PLAIN_TO_CLASS && !type && subValue instanceof Object && !(subValue instanceof Date))\n // throw new Error(`Cannot determine type for ${(targetType as any).name }.${propertyName}, did you forget to specify a @Type?`);\n\n // if newValue is a source object that has method that match newKeyName then skip it\n if (newValue.constructor.prototype) {\n const descriptor = Object.getOwnPropertyDescriptor(newValue.constructor.prototype, newValueKey);\n if (\n (this.transformationType === TransformationType.PLAIN_TO_CLASS ||\n this.transformationType === TransformationType.CLASS_TO_CLASS) &&\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ((descriptor && !descriptor.set) || newValue[newValueKey] instanceof Function)\n )\n // || TransformationType === TransformationType.CLASS_TO_CLASS\n continue;\n }\n\n if (!this.options.enableCircularCheck || !this.isCircular(subValue)) {\n const transformKey = this.transformationType === TransformationType.PLAIN_TO_CLASS ? newValueKey : key;\n let finalValue;\n\n if (this.transformationType === TransformationType.CLASS_TO_PLAIN) {\n // Get original value\n finalValue = value[transformKey];\n // Apply custom transformation\n finalValue = this.applyCustomTransformations(\n finalValue,\n targetType as Function,\n transformKey,\n value,\n this.transformationType\n );\n // If nothing change, it means no custom transformation was applied, so use the subValue.\n finalValue = value[transformKey] === finalValue ? subValue : finalValue;\n // Apply the default transformation\n finalValue = this.transform(subSource, finalValue, type, arrayType, isSubValueMap, level + 1);\n } else {\n if (subValue === undefined && this.options.exposeDefaultValues) {\n // Set default value if nothing provided\n finalValue = newValue[newValueKey];\n } else {\n finalValue = this.transform(subSource, subValue, type, arrayType, isSubValueMap, level + 1);\n finalValue = this.applyCustomTransformations(\n finalValue,\n targetType as Function,\n transformKey,\n value,\n this.transformationType\n );\n }\n }\n\n if (finalValue !== undefined || this.options.exposeUnsetFields) {\n if (newValue instanceof Map) {\n newValue.set(newValueKey, finalValue);\n } else {\n newValue[newValueKey] = finalValue;\n }\n }\n } else if (this.transformationType === TransformationType.CLASS_TO_CLASS) {\n let finalValue = subValue;\n finalValue = this.applyCustomTransformations(\n finalValue,\n targetType as Function,\n key,\n value,\n this.transformationType\n );\n if (finalValue !== undefined || this.options.exposeUnsetFields) {\n if (newValue instanceof Map) {\n newValue.set(newValueKey, finalValue);\n } else {\n newValue[newValueKey] = finalValue;\n }\n }\n }\n }\n\n if (this.options.enableCircularCheck) {\n this.recursionStack.delete(value);\n }\n\n return newValue;\n } else {\n return value;\n }\n }\n\n private applyCustomTransformations(\n value: any,\n target: Function,\n key: string,\n obj: any,\n transformationType: TransformationType\n ): boolean {\n let metadatas = defaultMetadataStorage.findTransformMetadatas(target, key, this.transformationType);\n\n // apply versioning options\n if (this.options.version !== undefined) {\n metadatas = metadatas.filter(metadata => {\n if (!metadata.options) return true;\n\n return this.checkVersion(metadata.options.since, metadata.options.until);\n });\n }\n\n // apply grouping options\n if (this.options.groups && this.options.groups.length) {\n metadatas = metadatas.filter(metadata => {\n if (!metadata.options) return true;\n\n return this.checkGroups(metadata.options.groups);\n });\n } else {\n metadatas = metadatas.filter(metadata => {\n return !metadata.options || !metadata.options.groups || !metadata.options.groups.length;\n });\n }\n\n metadatas.forEach(metadata => {\n value = metadata.transformFn({ value, key, obj, type: transformationType, options: this.options });\n });\n\n return value;\n }\n\n // preventing circular references\n private isCircular(object: Record): boolean {\n return this.recursionStack.has(object);\n }\n\n private getReflectedType(target: Function, propertyName: string): Function | undefined {\n if (!target) return undefined;\n const meta = defaultMetadataStorage.findTypeMetadata(target, propertyName);\n return meta ? meta.reflectedType : undefined;\n }\n\n private getKeys(target: Function, object: Record, isMap: boolean): string[] {\n // determine exclusion strategy\n let strategy = defaultMetadataStorage.getStrategy(target);\n if (strategy === 'none') strategy = this.options.strategy || 'exposeAll'; // exposeAll is default strategy\n\n // get all keys that need to expose\n let keys: any[] = [];\n if (strategy === 'exposeAll' || isMap) {\n if (object instanceof Map) {\n keys = Array.from(object.keys());\n } else {\n keys = Object.keys(object);\n }\n }\n\n if (isMap) {\n // expose & exclude do not apply for map keys only to fields\n return keys;\n }\n\n /**\n * If decorators are ignored but we don't want the extraneous values, then we use the\n * metadata to decide which property is needed, but doesn't apply the decorator effect.\n */\n if (this.options.ignoreDecorators && this.options.excludeExtraneousValues && target) {\n const exposedProperties = defaultMetadataStorage.getExposedProperties(target, this.transformationType);\n const excludedProperties = defaultMetadataStorage.getExcludedProperties(target, this.transformationType);\n keys = [...exposedProperties, ...excludedProperties];\n }\n\n if (!this.options.ignoreDecorators && target) {\n // add all exposed to list of keys\n let exposedProperties = defaultMetadataStorage.getExposedProperties(target, this.transformationType);\n if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n exposedProperties = exposedProperties.map(key => {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n if (exposeMetadata && exposeMetadata.options && exposeMetadata.options.name) {\n return exposeMetadata.options.name;\n }\n\n return key;\n });\n }\n if (this.options.excludeExtraneousValues) {\n keys = exposedProperties;\n } else {\n keys = keys.concat(exposedProperties);\n }\n\n // exclude excluded properties\n const excludedProperties = defaultMetadataStorage.getExcludedProperties(target, this.transformationType);\n if (excludedProperties.length > 0) {\n keys = keys.filter(key => {\n return !excludedProperties.includes(key);\n });\n }\n\n // apply versioning options\n if (this.options.version !== undefined) {\n keys = keys.filter(key => {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n if (!exposeMetadata || !exposeMetadata.options) return true;\n\n return this.checkVersion(exposeMetadata.options.since, exposeMetadata.options.until);\n });\n }\n\n // apply grouping options\n if (this.options.groups && this.options.groups.length) {\n keys = keys.filter(key => {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n if (!exposeMetadata || !exposeMetadata.options) return true;\n\n return this.checkGroups(exposeMetadata.options.groups);\n });\n } else {\n keys = keys.filter(key => {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n return (\n !exposeMetadata ||\n !exposeMetadata.options ||\n !exposeMetadata.options.groups ||\n !exposeMetadata.options.groups.length\n );\n });\n }\n }\n\n // exclude prefixed properties\n if (this.options.excludePrefixes && this.options.excludePrefixes.length) {\n keys = keys.filter(key =>\n this.options.excludePrefixes.every(prefix => {\n return key.substr(0, prefix.length) !== prefix;\n })\n );\n }\n\n // make sure we have unique keys\n keys = keys.filter((key, index, self) => {\n return self.indexOf(key) === index;\n });\n\n return keys;\n }\n\n private checkVersion(since: number, until: number): boolean {\n let decision = true;\n if (decision && since) decision = this.options.version >= since;\n if (decision && until) decision = this.options.version < until;\n\n return decision;\n }\n\n private checkGroups(groups: string[]): boolean {\n if (!groups) return true;\n\n return this.options.groups.some(optionGroup => groups.includes(optionGroup));\n }\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/constants/default-options.constant.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/constants/default-options.constant.js new file mode 100644 index 00000000..a25f3a61 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/constants/default-options.constant.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.defaultOptions = void 0; +/** + * These are the default options used by any transformation operation. + */ +exports.defaultOptions = { + enableCircularCheck: false, + enableImplicitConversion: false, + excludeExtraneousValues: false, + excludePrefixes: undefined, + exposeDefaultValues: false, + exposeUnsetFields: true, + groups: undefined, + ignoreDecorators: false, + strategy: undefined, + targetMaps: undefined, + version: undefined, +}; +//# sourceMappingURL=default-options.constant.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/constants/default-options.constant.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/constants/default-options.constant.js.map new file mode 100644 index 00000000..62ef2604 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/constants/default-options.constant.js.map @@ -0,0 +1 @@ +{"version":3,"file":"default-options.constant.js","sourceRoot":"","sources":["../../../src/constants/default-options.constant.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACU,QAAA,cAAc,GAAmC;IAC5D,mBAAmB,EAAE,KAAK;IAC1B,wBAAwB,EAAE,KAAK;IAC/B,uBAAuB,EAAE,KAAK;IAC9B,eAAe,EAAE,SAAS;IAC1B,mBAAmB,EAAE,KAAK;IAC1B,iBAAiB,EAAE,IAAI;IACvB,MAAM,EAAE,SAAS;IACjB,gBAAgB,EAAE,KAAK;IACvB,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,SAAS;IACrB,OAAO,EAAE,SAAS;CACnB,CAAC","sourcesContent":["import { ClassTransformOptions } from '../interfaces/class-transformer-options.interface';\n\n/**\n * These are the default options used by any transformation operation.\n */\nexport const defaultOptions: Partial = {\n enableCircularCheck: false,\n enableImplicitConversion: false,\n excludeExtraneousValues: false,\n excludePrefixes: undefined,\n exposeDefaultValues: false,\n exposeUnsetFields: true,\n groups: undefined,\n ignoreDecorators: false,\n strategy: undefined,\n targetMaps: undefined,\n version: undefined,\n};\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/exclude.decorator.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/exclude.decorator.js new file mode 100644 index 00000000..043a5ef2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/exclude.decorator.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Exclude = void 0; +const storage_1 = require("../storage"); +/** + * Marks the given class or property as excluded. By default the property is excluded in both + * constructorToPlain and plainToConstructor transformations. It can be limited to only one direction + * via using the `toPlainOnly` or `toClassOnly` option. + * + * Can be applied to class definitions and properties. + */ +function Exclude(options = {}) { + /** + * NOTE: The `propertyName` property must be marked as optional because + * this decorator used both as a class and a property decorator and the + * Typescript compiler will freak out if we make it mandatory as a class + * decorator only receives one parameter. + */ + return function (object, propertyName) { + storage_1.defaultMetadataStorage.addExcludeMetadata({ + target: object instanceof Function ? object : object.constructor, + propertyName: propertyName, + options, + }); + }; +} +exports.Exclude = Exclude; +//# sourceMappingURL=exclude.decorator.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/exclude.decorator.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/exclude.decorator.js.map new file mode 100644 index 00000000..304efd06 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/exclude.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"exclude.decorator.js","sourceRoot":"","sources":["../../../src/decorators/exclude.decorator.ts"],"names":[],"mappings":";;;AAAA,wCAAoD;AAGpD;;;;;;GAMG;AACH,SAAgB,OAAO,CAAC,UAA0B,EAAE;IAClD;;;;;OAKG;IACH,OAAO,UAAU,MAAW,EAAE,YAA8B;QAC1D,gCAAsB,CAAC,kBAAkB,CAAC;YACxC,MAAM,EAAE,MAAM,YAAY,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW;YAChE,YAAY,EAAE,YAAsB;YACpC,OAAO;SACR,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAdD,0BAcC","sourcesContent":["import { defaultMetadataStorage } from '../storage';\nimport { ExcludeOptions } from '../interfaces';\n\n/**\n * Marks the given class or property as excluded. By default the property is excluded in both\n * constructorToPlain and plainToConstructor transformations. It can be limited to only one direction\n * via using the `toPlainOnly` or `toClassOnly` option.\n *\n * Can be applied to class definitions and properties.\n */\nexport function Exclude(options: ExcludeOptions = {}): PropertyDecorator & ClassDecorator {\n /**\n * NOTE: The `propertyName` property must be marked as optional because\n * this decorator used both as a class and a property decorator and the\n * Typescript compiler will freak out if we make it mandatory as a class\n * decorator only receives one parameter.\n */\n return function (object: any, propertyName?: string | Symbol): void {\n defaultMetadataStorage.addExcludeMetadata({\n target: object instanceof Function ? object : object.constructor,\n propertyName: propertyName as string,\n options,\n });\n };\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/expose.decorator.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/expose.decorator.js new file mode 100644 index 00000000..76508735 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/expose.decorator.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Expose = void 0; +const storage_1 = require("../storage"); +/** + * Marks the given class or property as included. By default the property is included in both + * constructorToPlain and plainToConstructor transformations. It can be limited to only one direction + * via using the `toPlainOnly` or `toClassOnly` option. + * + * Can be applied to class definitions and properties. + */ +function Expose(options = {}) { + /** + * NOTE: The `propertyName` property must be marked as optional because + * this decorator used both as a class and a property decorator and the + * Typescript compiler will freak out if we make it mandatory as a class + * decorator only receives one parameter. + */ + return function (object, propertyName) { + storage_1.defaultMetadataStorage.addExposeMetadata({ + target: object instanceof Function ? object : object.constructor, + propertyName: propertyName, + options, + }); + }; +} +exports.Expose = Expose; +//# sourceMappingURL=expose.decorator.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/expose.decorator.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/expose.decorator.js.map new file mode 100644 index 00000000..65b70466 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/expose.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"expose.decorator.js","sourceRoot":"","sources":["../../../src/decorators/expose.decorator.ts"],"names":[],"mappings":";;;AAAA,wCAAoD;AAGpD;;;;;;GAMG;AACH,SAAgB,MAAM,CAAC,UAAyB,EAAE;IAChD;;;;;OAKG;IACH,OAAO,UAAU,MAAW,EAAE,YAA8B;QAC1D,gCAAsB,CAAC,iBAAiB,CAAC;YACvC,MAAM,EAAE,MAAM,YAAY,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW;YAChE,YAAY,EAAE,YAAsB;YACpC,OAAO;SACR,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAdD,wBAcC","sourcesContent":["import { defaultMetadataStorage } from '../storage';\nimport { ExposeOptions } from '../interfaces';\n\n/**\n * Marks the given class or property as included. By default the property is included in both\n * constructorToPlain and plainToConstructor transformations. It can be limited to only one direction\n * via using the `toPlainOnly` or `toClassOnly` option.\n *\n * Can be applied to class definitions and properties.\n */\nexport function Expose(options: ExposeOptions = {}): PropertyDecorator & ClassDecorator {\n /**\n * NOTE: The `propertyName` property must be marked as optional because\n * this decorator used both as a class and a property decorator and the\n * Typescript compiler will freak out if we make it mandatory as a class\n * decorator only receives one parameter.\n */\n return function (object: any, propertyName?: string | Symbol): void {\n defaultMetadataStorage.addExposeMetadata({\n target: object instanceof Function ? object : object.constructor,\n propertyName: propertyName as string,\n options,\n });\n };\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/index.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/index.js new file mode 100644 index 00000000..1302cb62 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/index.js @@ -0,0 +1,20 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./exclude.decorator"), exports); +__exportStar(require("./expose.decorator"), exports); +__exportStar(require("./transform-instance-to-instance.decorator"), exports); +__exportStar(require("./transform-instance-to-plain.decorator"), exports); +__exportStar(require("./transform-plain-to-instance.decorator"), exports); +__exportStar(require("./transform.decorator"), exports); +__exportStar(require("./type.decorator"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/index.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/index.js.map new file mode 100644 index 00000000..70c7bb8f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decorators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sDAAoC;AACpC,qDAAmC;AACnC,6EAA2D;AAC3D,0EAAwD;AACxD,0EAAwD;AACxD,wDAAsC;AACtC,mDAAiC","sourcesContent":["export * from './exclude.decorator';\nexport * from './expose.decorator';\nexport * from './transform-instance-to-instance.decorator';\nexport * from './transform-instance-to-plain.decorator';\nexport * from './transform-plain-to-instance.decorator';\nexport * from './transform.decorator';\nexport * from './type.decorator';\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform-instance-to-instance.decorator.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform-instance-to-instance.decorator.js new file mode 100644 index 00000000..ffd10b87 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform-instance-to-instance.decorator.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.TransformInstanceToInstance = void 0; +const ClassTransformer_1 = require("../ClassTransformer"); +/** + * Return the class instance only with the exposed properties. + * + * Can be applied to functions and getters/setters only. + */ +function TransformInstanceToInstance(params) { + return function (target, propertyKey, descriptor) { + const classTransformer = new ClassTransformer_1.ClassTransformer(); + const originalMethod = descriptor.value; + descriptor.value = function (...args) { + const result = originalMethod.apply(this, args); + const isPromise = !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function'; + return isPromise + ? result.then((data) => classTransformer.instanceToInstance(data, params)) + : classTransformer.instanceToInstance(result, params); + }; + }; +} +exports.TransformInstanceToInstance = TransformInstanceToInstance; +//# sourceMappingURL=transform-instance-to-instance.decorator.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform-instance-to-instance.decorator.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform-instance-to-instance.decorator.js.map new file mode 100644 index 00000000..8b5309c3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform-instance-to-instance.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transform-instance-to-instance.decorator.js","sourceRoot":"","sources":["../../../src/decorators/transform-instance-to-instance.decorator.ts"],"names":[],"mappings":";;;AAAA,0DAAuD;AAGvD;;;;GAIG;AACH,SAAgB,2BAA2B,CAAC,MAA8B;IACxE,OAAO,UAAU,MAA2B,EAAE,WAA4B,EAAE,UAA8B;QACxG,MAAM,gBAAgB,GAAqB,IAAI,mCAAgB,EAAE,CAAC;QAClE,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;QAExC,UAAU,CAAC,KAAK,GAAG,UAAU,GAAG,IAAW;YACzC,MAAM,MAAM,GAAQ,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACrD,MAAM,SAAS,GACb,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,UAAU,CAAC,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC;YAChH,OAAO,SAAS;gBACd,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC/E,CAAC,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1D,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAdD,kEAcC","sourcesContent":["import { ClassTransformer } from '../ClassTransformer';\nimport { ClassTransformOptions } from '../interfaces';\n\n/**\n * Return the class instance only with the exposed properties.\n *\n * Can be applied to functions and getters/setters only.\n */\nexport function TransformInstanceToInstance(params?: ClassTransformOptions): MethodDecorator {\n return function (target: Record, propertyKey: string | Symbol, descriptor: PropertyDescriptor): void {\n const classTransformer: ClassTransformer = new ClassTransformer();\n const originalMethod = descriptor.value;\n\n descriptor.value = function (...args: any[]): Record {\n const result: any = originalMethod.apply(this, args);\n const isPromise =\n !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function';\n return isPromise\n ? result.then((data: any) => classTransformer.instanceToInstance(data, params))\n : classTransformer.instanceToInstance(result, params);\n };\n };\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform-instance-to-plain.decorator.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform-instance-to-plain.decorator.js new file mode 100644 index 00000000..c4e35fb1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform-instance-to-plain.decorator.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.TransformInstanceToPlain = void 0; +const ClassTransformer_1 = require("../ClassTransformer"); +/** + * Transform the object from class to plain object and return only with the exposed properties. + * + * Can be applied to functions and getters/setters only. + */ +function TransformInstanceToPlain(params) { + return function (target, propertyKey, descriptor) { + const classTransformer = new ClassTransformer_1.ClassTransformer(); + const originalMethod = descriptor.value; + descriptor.value = function (...args) { + const result = originalMethod.apply(this, args); + const isPromise = !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function'; + return isPromise + ? result.then((data) => classTransformer.instanceToPlain(data, params)) + : classTransformer.instanceToPlain(result, params); + }; + }; +} +exports.TransformInstanceToPlain = TransformInstanceToPlain; +//# sourceMappingURL=transform-instance-to-plain.decorator.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform-instance-to-plain.decorator.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform-instance-to-plain.decorator.js.map new file mode 100644 index 00000000..89d40481 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform-instance-to-plain.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transform-instance-to-plain.decorator.js","sourceRoot":"","sources":["../../../src/decorators/transform-instance-to-plain.decorator.ts"],"names":[],"mappings":";;;AAAA,0DAAuD;AAGvD;;;;GAIG;AACH,SAAgB,wBAAwB,CAAC,MAA8B;IACrE,OAAO,UAAU,MAA2B,EAAE,WAA4B,EAAE,UAA8B;QACxG,MAAM,gBAAgB,GAAqB,IAAI,mCAAgB,EAAE,CAAC;QAClE,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;QAExC,UAAU,CAAC,KAAK,GAAG,UAAU,GAAG,IAAW;YACzC,MAAM,MAAM,GAAQ,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACrD,MAAM,SAAS,GACb,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,UAAU,CAAC,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC;YAChH,OAAO,SAAS;gBACd,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC5E,CAAC,CAAC,gBAAgB,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACvD,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAdD,4DAcC","sourcesContent":["import { ClassTransformer } from '../ClassTransformer';\nimport { ClassTransformOptions } from '../interfaces';\n\n/**\n * Transform the object from class to plain object and return only with the exposed properties.\n *\n * Can be applied to functions and getters/setters only.\n */\nexport function TransformInstanceToPlain(params?: ClassTransformOptions): MethodDecorator {\n return function (target: Record, propertyKey: string | Symbol, descriptor: PropertyDescriptor): void {\n const classTransformer: ClassTransformer = new ClassTransformer();\n const originalMethod = descriptor.value;\n\n descriptor.value = function (...args: any[]): Record {\n const result: any = originalMethod.apply(this, args);\n const isPromise =\n !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function';\n return isPromise\n ? result.then((data: any) => classTransformer.instanceToPlain(data, params))\n : classTransformer.instanceToPlain(result, params);\n };\n };\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform-plain-to-instance.decorator.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform-plain-to-instance.decorator.js new file mode 100644 index 00000000..f358dbca --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform-plain-to-instance.decorator.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.TransformPlainToInstance = void 0; +const ClassTransformer_1 = require("../ClassTransformer"); +/** + * Return the class instance only with the exposed properties. + * + * Can be applied to functions and getters/setters only. + */ +function TransformPlainToInstance(classType, params) { + return function (target, propertyKey, descriptor) { + const classTransformer = new ClassTransformer_1.ClassTransformer(); + const originalMethod = descriptor.value; + descriptor.value = function (...args) { + const result = originalMethod.apply(this, args); + const isPromise = !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function'; + return isPromise + ? result.then((data) => classTransformer.plainToInstance(classType, data, params)) + : classTransformer.plainToInstance(classType, result, params); + }; + }; +} +exports.TransformPlainToInstance = TransformPlainToInstance; +//# sourceMappingURL=transform-plain-to-instance.decorator.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform-plain-to-instance.decorator.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform-plain-to-instance.decorator.js.map new file mode 100644 index 00000000..f93c7889 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform-plain-to-instance.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transform-plain-to-instance.decorator.js","sourceRoot":"","sources":["../../../src/decorators/transform-plain-to-instance.decorator.ts"],"names":[],"mappings":";;;AAAA,0DAAuD;AAGvD;;;;GAIG;AACH,SAAgB,wBAAwB,CACtC,SAAgC,EAChC,MAA8B;IAE9B,OAAO,UAAU,MAA2B,EAAE,WAA4B,EAAE,UAA8B;QACxG,MAAM,gBAAgB,GAAqB,IAAI,mCAAgB,EAAE,CAAC;QAClE,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;QAExC,UAAU,CAAC,KAAK,GAAG,UAAU,GAAG,IAAW;YACzC,MAAM,MAAM,GAAQ,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACrD,MAAM,SAAS,GACb,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,UAAU,CAAC,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC;YAChH,OAAO,SAAS;gBACd,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gBACvF,CAAC,CAAC,gBAAgB,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAClE,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAjBD,4DAiBC","sourcesContent":["import { ClassTransformer } from '../ClassTransformer';\nimport { ClassTransformOptions, ClassConstructor } from '../interfaces';\n\n/**\n * Return the class instance only with the exposed properties.\n *\n * Can be applied to functions and getters/setters only.\n */\nexport function TransformPlainToInstance(\n classType: ClassConstructor,\n params?: ClassTransformOptions\n): MethodDecorator {\n return function (target: Record, propertyKey: string | Symbol, descriptor: PropertyDescriptor): void {\n const classTransformer: ClassTransformer = new ClassTransformer();\n const originalMethod = descriptor.value;\n\n descriptor.value = function (...args: any[]): Record {\n const result: any = originalMethod.apply(this, args);\n const isPromise =\n !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function';\n return isPromise\n ? result.then((data: any) => classTransformer.plainToInstance(classType, data, params))\n : classTransformer.plainToInstance(classType, result, params);\n };\n };\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform.decorator.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform.decorator.js new file mode 100644 index 00000000..9611551a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform.decorator.js @@ -0,0 +1,21 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Transform = void 0; +const storage_1 = require("../storage"); +/** + * Defines a custom logic for value transformation. + * + * Can be applied to properties only. + */ +function Transform(transformFn, options = {}) { + return function (target, propertyName) { + storage_1.defaultMetadataStorage.addTransformMetadata({ + target: target.constructor, + propertyName: propertyName, + transformFn, + options, + }); + }; +} +exports.Transform = Transform; +//# sourceMappingURL=transform.decorator.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform.decorator.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform.decorator.js.map new file mode 100644 index 00000000..74e754b8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/transform.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transform.decorator.js","sourceRoot":"","sources":["../../../src/decorators/transform.decorator.ts"],"names":[],"mappings":";;;AAAA,wCAAoD;AAGpD;;;;GAIG;AACH,SAAgB,SAAS,CACvB,WAA+C,EAC/C,UAA4B,EAAE;IAE9B,OAAO,UAAU,MAAW,EAAE,YAA6B;QACzD,gCAAsB,CAAC,oBAAoB,CAAC;YAC1C,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAsB;YACpC,WAAW;YACX,OAAO;SACR,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAZD,8BAYC","sourcesContent":["import { defaultMetadataStorage } from '../storage';\nimport { TransformFnParams, TransformOptions } from '../interfaces';\n\n/**\n * Defines a custom logic for value transformation.\n *\n * Can be applied to properties only.\n */\nexport function Transform(\n transformFn: (params: TransformFnParams) => any,\n options: TransformOptions = {}\n): PropertyDecorator {\n return function (target: any, propertyName: string | Symbol): void {\n defaultMetadataStorage.addTransformMetadata({\n target: target.constructor,\n propertyName: propertyName as string,\n transformFn,\n options,\n });\n };\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/type.decorator.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/type.decorator.js new file mode 100644 index 00000000..a3822b39 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/type.decorator.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Type = void 0; +const storage_1 = require("../storage"); +/** + * Specifies a type of the property. + * The given TypeFunction can return a constructor. A discriminator can be given in the options. + * + * Can be applied to properties only. + */ +function Type(typeFunction, options = {}) { + return function (target, propertyName) { + const reflectedType = Reflect.getMetadata('design:type', target, propertyName); + storage_1.defaultMetadataStorage.addTypeMetadata({ + target: target.constructor, + propertyName: propertyName, + reflectedType, + typeFunction, + options, + }); + }; +} +exports.Type = Type; +//# sourceMappingURL=type.decorator.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/type.decorator.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/type.decorator.js.map new file mode 100644 index 00000000..9e52197e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/decorators/type.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"type.decorator.js","sourceRoot":"","sources":["../../../src/decorators/type.decorator.ts"],"names":[],"mappings":";;;AAAA,wCAAoD;AAGpD;;;;;GAKG;AACH,SAAgB,IAAI,CAClB,YAAmD,EACnD,UAAuB,EAAE;IAEzB,OAAO,UAAU,MAAW,EAAE,YAA6B;QACzD,MAAM,aAAa,GAAI,OAAe,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QACxF,gCAAsB,CAAC,eAAe,CAAC;YACrC,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAsB;YACpC,aAAa;YACb,YAAY;YACZ,OAAO;SACR,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAdD,oBAcC","sourcesContent":["import { defaultMetadataStorage } from '../storage';\nimport { TypeHelpOptions, TypeOptions } from '../interfaces';\n\n/**\n * Specifies a type of the property.\n * The given TypeFunction can return a constructor. A discriminator can be given in the options.\n *\n * Can be applied to properties only.\n */\nexport function Type(\n typeFunction?: (type?: TypeHelpOptions) => Function,\n options: TypeOptions = {}\n): PropertyDecorator {\n return function (target: any, propertyName: string | Symbol): void {\n const reflectedType = (Reflect as any).getMetadata('design:type', target, propertyName);\n defaultMetadataStorage.addTypeMetadata({\n target: target.constructor,\n propertyName: propertyName as string,\n reflectedType,\n typeFunction,\n options,\n });\n };\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/enums/index.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/enums/index.js new file mode 100644 index 00000000..285beb12 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/enums/index.js @@ -0,0 +1,14 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./transformation-type.enum"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/enums/index.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/enums/index.js.map new file mode 100644 index 00000000..e5af2335 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/enums/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/enums/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6DAA2C","sourcesContent":["export * from './transformation-type.enum';\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/enums/transformation-type.enum.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/enums/transformation-type.enum.js new file mode 100644 index 00000000..2d2645e1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/enums/transformation-type.enum.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.TransformationType = void 0; +var TransformationType; +(function (TransformationType) { + TransformationType[TransformationType["PLAIN_TO_CLASS"] = 0] = "PLAIN_TO_CLASS"; + TransformationType[TransformationType["CLASS_TO_PLAIN"] = 1] = "CLASS_TO_PLAIN"; + TransformationType[TransformationType["CLASS_TO_CLASS"] = 2] = "CLASS_TO_CLASS"; +})(TransformationType = exports.TransformationType || (exports.TransformationType = {})); +//# sourceMappingURL=transformation-type.enum.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/enums/transformation-type.enum.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/enums/transformation-type.enum.js.map new file mode 100644 index 00000000..766c4471 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/enums/transformation-type.enum.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transformation-type.enum.js","sourceRoot":"","sources":["../../../src/enums/transformation-type.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC5B,+EAAc,CAAA;IACd,+EAAc,CAAA;IACd,+EAAc,CAAA;AAChB,CAAC,EAJW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAI7B","sourcesContent":["export enum TransformationType {\n PLAIN_TO_CLASS,\n CLASS_TO_PLAIN,\n CLASS_TO_CLASS,\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/index.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/index.js new file mode 100644 index 00000000..9bc700d9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/index.js @@ -0,0 +1,82 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deserializeArray = exports.deserialize = exports.serialize = exports.classToClassFromExist = exports.instanceToInstance = exports.plainToClassFromExist = exports.plainToInstance = exports.plainToClass = exports.classToPlainFromExist = exports.instanceToPlain = exports.classToPlain = exports.ClassTransformer = void 0; +const ClassTransformer_1 = require("./ClassTransformer"); +var ClassTransformer_2 = require("./ClassTransformer"); +Object.defineProperty(exports, "ClassTransformer", { enumerable: true, get: function () { return ClassTransformer_2.ClassTransformer; } }); +__exportStar(require("./decorators"), exports); +__exportStar(require("./interfaces"), exports); +__exportStar(require("./enums"), exports); +const classTransformer = new ClassTransformer_1.ClassTransformer(); +function classToPlain(object, options) { + return classTransformer.instanceToPlain(object, options); +} +exports.classToPlain = classToPlain; +function instanceToPlain(object, options) { + return classTransformer.instanceToPlain(object, options); +} +exports.instanceToPlain = instanceToPlain; +function classToPlainFromExist(object, plainObject, options) { + return classTransformer.classToPlainFromExist(object, plainObject, options); +} +exports.classToPlainFromExist = classToPlainFromExist; +function plainToClass(cls, plain, options) { + return classTransformer.plainToInstance(cls, plain, options); +} +exports.plainToClass = plainToClass; +function plainToInstance(cls, plain, options) { + return classTransformer.plainToInstance(cls, plain, options); +} +exports.plainToInstance = plainToInstance; +function plainToClassFromExist(clsObject, plain, options) { + return classTransformer.plainToClassFromExist(clsObject, plain, options); +} +exports.plainToClassFromExist = plainToClassFromExist; +function instanceToInstance(object, options) { + return classTransformer.instanceToInstance(object, options); +} +exports.instanceToInstance = instanceToInstance; +function classToClassFromExist(object, fromObject, options) { + return classTransformer.classToClassFromExist(object, fromObject, options); +} +exports.classToClassFromExist = classToClassFromExist; +function serialize(object, options) { + return classTransformer.serialize(object, options); +} +exports.serialize = serialize; +/** + * Deserializes given JSON string to a object of the given class. + * + * @deprecated This function is being removed. Please use the following instead: + * ``` + * instanceToClass(cls, JSON.parse(json), options) + * ``` + */ +function deserialize(cls, json, options) { + return classTransformer.deserialize(cls, json, options); +} +exports.deserialize = deserialize; +/** + * Deserializes given JSON string to an array of objects of the given class. + * + * @deprecated This function is being removed. Please use the following instead: + * ``` + * JSON.parse(json).map(value => instanceToClass(cls, value, options)) + * ``` + * + */ +function deserializeArray(cls, json, options) { + return classTransformer.deserializeArray(cls, json, options); +} +exports.deserializeArray = deserializeArray; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/index.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/index.js.map new file mode 100644 index 00000000..81af6d6b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,yDAAsD;AAItD,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,+CAA6B;AAC7B,+CAA6B;AAC7B,0CAAwB;AAExB,MAAM,gBAAgB,GAAG,IAAI,mCAAgB,EAAE,CAAC;AAShD,SAAgB,YAAY,CAC1B,MAAe,EACf,OAA+B;IAE/B,OAAO,gBAAgB,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC;AALD,oCAKC;AAOD,SAAgB,eAAe,CAC7B,MAAe,EACf,OAA+B;IAE/B,OAAO,gBAAgB,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC;AALD,0CAKC;AAmBD,SAAgB,qBAAqB,CACnC,MAAS,EACT,WAAwD,EACxD,OAA+B;IAE/B,OAAO,gBAAgB,CAAC,qBAAqB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AAC9E,CAAC;AAND,sDAMC;AASD,SAAgB,YAAY,CAAO,GAAwB,EAAE,KAAc,EAAE,OAA+B;IAC1G,OAAO,gBAAgB,CAAC,eAAe,CAAC,GAAG,EAAE,KAAY,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAFD,oCAEC;AAOD,SAAgB,eAAe,CAC7B,GAAwB,EACxB,KAAc,EACd,OAA+B;IAE/B,OAAO,gBAAgB,CAAC,eAAe,CAAC,GAAG,EAAE,KAAY,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAND,0CAMC;AAWD,SAAgB,qBAAqB,CAAO,SAAY,EAAE,KAAc,EAAE,OAA+B;IACvG,OAAO,gBAAgB,CAAC,qBAAqB,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAC3E,CAAC;AAFD,sDAEC;AAOD,SAAgB,kBAAkB,CAAI,MAAe,EAAE,OAA+B;IACpF,OAAO,gBAAgB,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AAFD,gDAEC;AAWD,SAAgB,qBAAqB,CAAI,MAAS,EAAE,UAAmB,EAAE,OAA+B;IACtG,OAAO,gBAAgB,CAAC,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAC7E,CAAC;AAFD,sDAEC;AAYD,SAAgB,SAAS,CAAI,MAAe,EAAE,OAA+B;IAC3E,OAAO,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC;AAFD,8BAEC;AAED;;;;;;;GAOG;AACH,SAAgB,WAAW,CAAI,GAAwB,EAAE,IAAY,EAAE,OAA+B;IACpG,OAAO,gBAAgB,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC1D,CAAC;AAFD,kCAEC;AAED;;;;;;;;GAQG;AACH,SAAgB,gBAAgB,CAAI,GAAwB,EAAE,IAAY,EAAE,OAA+B;IACzG,OAAO,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/D,CAAC;AAFD,4CAEC","sourcesContent":["import { ClassTransformer } from './ClassTransformer';\nimport { ClassTransformOptions } from './interfaces';\nimport { ClassConstructor } from './interfaces';\n\nexport { ClassTransformer } from './ClassTransformer';\nexport * from './decorators';\nexport * from './interfaces';\nexport * from './enums';\n\nconst classTransformer = new ClassTransformer();\n\n/**\n * Converts class (constructor) object to plain (literal) object. Also works with arrays.\n *\n * @deprecated Function name changed, use the `instanceToPlain` method instead.\n */\nexport function classToPlain(object: T, options?: ClassTransformOptions): Record;\nexport function classToPlain(object: T[], options?: ClassTransformOptions): Record[];\nexport function classToPlain(\n object: T | T[],\n options?: ClassTransformOptions\n): Record | Record[] {\n return classTransformer.instanceToPlain(object, options);\n}\n\n/**\n * Converts class (constructor) object to plain (literal) object. Also works with arrays.\n */\nexport function instanceToPlain(object: T, options?: ClassTransformOptions): Record;\nexport function instanceToPlain(object: T[], options?: ClassTransformOptions): Record[];\nexport function instanceToPlain(\n object: T | T[],\n options?: ClassTransformOptions\n): Record | Record[] {\n return classTransformer.instanceToPlain(object, options);\n}\n\n/**\n * Converts class (constructor) object to plain (literal) object.\n * Uses given plain object as source object (it means fills given plain object with data from class object).\n * Also works with arrays.\n *\n * @deprecated This function is being removed.\n */\nexport function classToPlainFromExist(\n object: T,\n plainObject: Record,\n options?: ClassTransformOptions\n): Record;\nexport function classToPlainFromExist(\n object: T,\n plainObjects: Record[],\n options?: ClassTransformOptions\n): Record[];\nexport function classToPlainFromExist(\n object: T,\n plainObject: Record | Record[],\n options?: ClassTransformOptions\n): Record | Record[] {\n return classTransformer.classToPlainFromExist(object, plainObject, options);\n}\n\n/**\n * Converts plain (literal) object to class (constructor) object. Also works with arrays.\n *\n * @deprecated Function name changed, use the `plainToInstance` method instead.\n */\nexport function plainToClass(cls: ClassConstructor, plain: V[], options?: ClassTransformOptions): T[];\nexport function plainToClass(cls: ClassConstructor, plain: V, options?: ClassTransformOptions): T;\nexport function plainToClass(cls: ClassConstructor, plain: V | V[], options?: ClassTransformOptions): T | T[] {\n return classTransformer.plainToInstance(cls, plain as any, options);\n}\n\n/**\n * Converts plain (literal) object to class (constructor) object. Also works with arrays.\n */\nexport function plainToInstance(cls: ClassConstructor, plain: V[], options?: ClassTransformOptions): T[];\nexport function plainToInstance(cls: ClassConstructor, plain: V, options?: ClassTransformOptions): T;\nexport function plainToInstance(\n cls: ClassConstructor,\n plain: V | V[],\n options?: ClassTransformOptions\n): T | T[] {\n return classTransformer.plainToInstance(cls, plain as any, options);\n}\n\n/**\n * Converts plain (literal) object to class (constructor) object.\n * Uses given object as source object (it means fills given object with data from plain object).\n * Also works with arrays.\n *\n * @deprecated This function is being removed. The current implementation is incorrect as it modifies the source object.\n */\nexport function plainToClassFromExist(clsObject: T[], plain: V[], options?: ClassTransformOptions): T[];\nexport function plainToClassFromExist(clsObject: T, plain: V, options?: ClassTransformOptions): T;\nexport function plainToClassFromExist(clsObject: T, plain: V | V[], options?: ClassTransformOptions): T | T[] {\n return classTransformer.plainToClassFromExist(clsObject, plain, options);\n}\n\n/**\n * Converts class (constructor) object to new class (constructor) object. Also works with arrays.\n */\nexport function instanceToInstance(object: T, options?: ClassTransformOptions): T;\nexport function instanceToInstance(object: T[], options?: ClassTransformOptions): T[];\nexport function instanceToInstance(object: T | T[], options?: ClassTransformOptions): T | T[] {\n return classTransformer.instanceToInstance(object, options);\n}\n\n/**\n * Converts class (constructor) object to plain (literal) object.\n * Uses given plain object as source object (it means fills given plain object with data from class object).\n * Also works with arrays.\n *\n * @deprecated This function is being removed. The current implementation is incorrect as it modifies the source object.\n */\nexport function classToClassFromExist(object: T, fromObject: T, options?: ClassTransformOptions): T;\nexport function classToClassFromExist(object: T, fromObjects: T[], options?: ClassTransformOptions): T[];\nexport function classToClassFromExist(object: T, fromObject: T | T[], options?: ClassTransformOptions): T | T[] {\n return classTransformer.classToClassFromExist(object, fromObject, options);\n}\n\n/**\n * Serializes given object to a JSON string.\n *\n * @deprecated This function is being removed. Please use\n * ```\n * JSON.stringify(instanceToPlain(object, options))\n * ```\n */\nexport function serialize(object: T, options?: ClassTransformOptions): string;\nexport function serialize(object: T[], options?: ClassTransformOptions): string;\nexport function serialize(object: T | T[], options?: ClassTransformOptions): string {\n return classTransformer.serialize(object, options);\n}\n\n/**\n * Deserializes given JSON string to a object of the given class.\n *\n * @deprecated This function is being removed. Please use the following instead:\n * ```\n * instanceToClass(cls, JSON.parse(json), options)\n * ```\n */\nexport function deserialize(cls: ClassConstructor, json: string, options?: ClassTransformOptions): T {\n return classTransformer.deserialize(cls, json, options);\n}\n\n/**\n * Deserializes given JSON string to an array of objects of the given class.\n *\n * @deprecated This function is being removed. Please use the following instead:\n * ```\n * JSON.parse(json).map(value => instanceToClass(cls, value, options))\n * ```\n *\n */\nexport function deserializeArray(cls: ClassConstructor, json: string, options?: ClassTransformOptions): T[] {\n return classTransformer.deserializeArray(cls, json, options);\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/class-constructor.type.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/class-constructor.type.js new file mode 100644 index 00000000..d8a19044 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/class-constructor.type.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=class-constructor.type.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/class-constructor.type.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/class-constructor.type.js.map new file mode 100644 index 00000000..e4b420a2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/class-constructor.type.js.map @@ -0,0 +1 @@ +{"version":3,"file":"class-constructor.type.js","sourceRoot":"","sources":["../../../src/interfaces/class-constructor.type.ts"],"names":[],"mappings":"","sourcesContent":["export type ClassConstructor = {\n new (...args: any[]): T;\n};\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/class-transformer-options.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/class-transformer-options.interface.js new file mode 100644 index 00000000..ed304264 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/class-transformer-options.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=class-transformer-options.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/class-transformer-options.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/class-transformer-options.interface.js.map new file mode 100644 index 00000000..3947fe94 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/class-transformer-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"class-transformer-options.interface.js","sourceRoot":"","sources":["../../../src/interfaces/class-transformer-options.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { TargetMap } from './target-map.interface';\n\n/**\n * Options to be passed during transformation.\n */\nexport interface ClassTransformOptions {\n /**\n * Exclusion strategy. By default exposeAll is used, which means that it will expose all properties are transformed\n * by default.\n */\n strategy?: 'excludeAll' | 'exposeAll';\n\n /**\n * Indicates if extraneous properties should be excluded from the value when converting a plain value to a class.\n *\n * This option requires that each property on the target class has at least one `@Expose` or `@Exclude` decorator\n * assigned from this library.\n */\n excludeExtraneousValues?: boolean;\n\n /**\n * Only properties with given groups gonna be transformed.\n */\n groups?: string[];\n\n /**\n * Only properties with \"since\" > version < \"until\" gonna be transformed.\n */\n version?: number;\n\n /**\n * Excludes properties with the given prefixes. For example, if you mark your private properties with \"_\" and \"__\"\n * you can set this option's value to [\"_\", \"__\"] and all private properties will be skipped.\n * This works only for \"exposeAll\" strategy.\n */\n excludePrefixes?: string[];\n\n /**\n * If set to true then class transformer will ignore the effect of all @Expose and @Exclude decorators.\n * This option is useful if you want to kinda clone your object but do not apply decorators affects.\n *\n * __NOTE:__ You may still have to add the decorators to make other options work.\n */\n ignoreDecorators?: boolean;\n\n /**\n * Target maps allows to set a Types of the transforming object without using @Type decorator.\n * This is useful when you are transforming external classes, or if you already have type metadata for\n * objects and you don't want to set it up again.\n */\n targetMaps?: TargetMap[];\n\n /**\n * If set to true then class transformer will perform a circular check. (circular check is turned off by default)\n * This option is useful when you know for sure that your types might have a circular dependency.\n */\n enableCircularCheck?: boolean;\n\n /**\n * If set to true then class transformer will try to convert properties implicitly to their target type based on their typing information.\n *\n * DEFAULT: `false`\n */\n enableImplicitConversion?: boolean;\n\n /**\n * If set to true then class transformer will take default values for unprovided fields.\n * This is useful when you convert a plain object to a class and have an optional field with a default value.\n */\n exposeDefaultValues?: boolean;\n\n /**\n * When set to true, fields with `undefined` as value will be included in class to plain transformation. Otherwise\n * those fields will be omitted from the result.\n *\n * DEFAULT: `true`\n */\n exposeUnsetFields?: boolean;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/exclude-options.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/exclude-options.interface.js new file mode 100644 index 00000000..22130fbe --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/exclude-options.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=exclude-options.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/exclude-options.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/exclude-options.interface.js.map new file mode 100644 index 00000000..3ccc700b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/exclude-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"exclude-options.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/decorator-options/exclude-options.interface.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Possible transformation options for the @Exclude decorator.\n */\nexport interface ExcludeOptions {\n /**\n * Expose this property only when transforming from plain to class instance.\n */\n toClassOnly?: boolean;\n\n /**\n * Expose this property only when transforming from class instance to plain object.\n */\n toPlainOnly?: boolean;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/expose-options.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/expose-options.interface.js new file mode 100644 index 00000000..40f7367a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/expose-options.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=expose-options.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/expose-options.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/expose-options.interface.js.map new file mode 100644 index 00000000..c473874b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/expose-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"expose-options.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/decorator-options/expose-options.interface.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Possible transformation options for the @Expose decorator.\n */\nexport interface ExposeOptions {\n /**\n * Name of property on the target object to expose the value of this property.\n */\n name?: string;\n\n /**\n * First version where this property should be exposed.\n *\n * Example:\n * ```ts\n * instanceToPlain(payload, { version: 1.0 });\n * ```\n */\n since?: number;\n\n /**\n * Last version where this property should be exposed.\n *\n * Example:\n * ```ts\n * instanceToPlain(payload, { version: 1.0 });\n * ```\n */\n until?: number;\n\n /**\n * List of transformation groups this property belongs to. When set,\n * the property will be exposed only when transform is called with\n * one of the groups specified.\n *\n * Example:\n * ```ts\n * instanceToPlain(payload, { groups: ['user'] });\n * ```\n */\n groups?: string[];\n\n /**\n * Expose this property only when transforming from plain to class instance.\n */\n toClassOnly?: boolean;\n\n /**\n * Expose this property only when transforming from class instance to plain object.\n */\n toPlainOnly?: boolean;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/transform-options.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/transform-options.interface.js new file mode 100644 index 00000000..7b601792 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/transform-options.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=transform-options.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/transform-options.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/transform-options.interface.js.map new file mode 100644 index 00000000..5630001f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/transform-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transform-options.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/decorator-options/transform-options.interface.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Possible transformation options for the @Transform decorator.\n */\nexport interface TransformOptions {\n /**\n * First version where this property should be exposed.\n *\n * Example:\n * ```ts\n * instanceToPlain(payload, { version: 1.0 });\n * ```\n */\n since?: number;\n\n /**\n * Last version where this property should be exposed.\n *\n * Example:\n * ```ts\n * instanceToPlain(payload, { version: 1.0 });\n * ```\n */\n until?: number;\n\n /**\n * List of transformation groups this property belongs to. When set,\n * the property will be exposed only when transform is called with\n * one of the groups specified.\n *\n * Example:\n * ```ts\n * instanceToPlain(payload, { groups: ['user'] });\n * ```\n */\n groups?: string[];\n\n /**\n * Expose this property only when transforming from plain to class instance.\n */\n toClassOnly?: boolean;\n\n /**\n * Expose this property only when transforming from class instance to plain object.\n */\n toPlainOnly?: boolean;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/type-discriminator-descriptor.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/type-discriminator-descriptor.interface.js new file mode 100644 index 00000000..c739db41 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/type-discriminator-descriptor.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=type-discriminator-descriptor.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/type-discriminator-descriptor.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/type-discriminator-descriptor.interface.js.map new file mode 100644 index 00000000..f6d533ef --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/type-discriminator-descriptor.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"type-discriminator-descriptor.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/decorator-options/type-discriminator-descriptor.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { ClassConstructor } from '..';\n\n/**\n * Discriminator object containing the type information to select a proper type\n * during transformation when a discriminator property is provided.\n */\nexport interface DiscriminatorDescriptor {\n /**\n * The name of the property which holds the type information in the received object.\n */\n property: string;\n /**\n * List of the available types. The transformer will try to lookup the object\n * with the same key as the value received in the defined discriminator property\n * and create an instance of the defined class.\n */\n subTypes: {\n /**\n * Name of the type.\n */\n name: string;\n\n /**\n * A class constructor which can be used to create the object.\n */\n value: ClassConstructor;\n }[];\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/type-options.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/type-options.interface.js new file mode 100644 index 00000000..2a518a7b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/type-options.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=type-options.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/type-options.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/type-options.interface.js.map new file mode 100644 index 00000000..d3cf0462 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/decorator-options/type-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"type-options.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/decorator-options/type-options.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { DiscriminatorDescriptor } from './type-discriminator-descriptor.interface';\n\n/**\n * Possible transformation options for the @Type decorator.\n */\nexport interface TypeOptions {\n /**\n * Optional discriminator object, when provided the property value will be\n * initialized according to the specified object.\n */\n discriminator?: DiscriminatorDescriptor;\n\n /**\n * Indicates whether to keep the discriminator property on the\n * transformed object or not. Disabled by default.\n *\n * @default false\n */\n keepDiscriminatorProperty?: boolean;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/index.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/index.js new file mode 100644 index 00000000..e5ef537c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/index.js @@ -0,0 +1,27 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./decorator-options/expose-options.interface"), exports); +__exportStar(require("./decorator-options/exclude-options.interface"), exports); +__exportStar(require("./decorator-options/transform-options.interface"), exports); +__exportStar(require("./decorator-options/type-discriminator-descriptor.interface"), exports); +__exportStar(require("./decorator-options/type-options.interface"), exports); +__exportStar(require("./metadata/exclude-metadata.interface"), exports); +__exportStar(require("./metadata/expose-metadata.interface"), exports); +__exportStar(require("./metadata/transform-metadata.interface"), exports); +__exportStar(require("./metadata/transform-fn-params.interface"), exports); +__exportStar(require("./metadata/type-metadata.interface"), exports); +__exportStar(require("./class-constructor.type"), exports); +__exportStar(require("./class-transformer-options.interface"), exports); +__exportStar(require("./target-map.interface"), exports); +__exportStar(require("./type-help-options.interface"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/index.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/index.js.map new file mode 100644 index 00000000..c01fd935 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+EAA6D;AAC7D,gFAA8D;AAC9D,kFAAgE;AAChE,8FAA4E;AAC5E,6EAA2D;AAC3D,wEAAsD;AACtD,uEAAqD;AACrD,0EAAwD;AACxD,2EAAyD;AACzD,qEAAmD;AACnD,2DAAyC;AACzC,wEAAsD;AACtD,yDAAuC;AACvC,gEAA8C","sourcesContent":["export * from './decorator-options/expose-options.interface';\nexport * from './decorator-options/exclude-options.interface';\nexport * from './decorator-options/transform-options.interface';\nexport * from './decorator-options/type-discriminator-descriptor.interface';\nexport * from './decorator-options/type-options.interface';\nexport * from './metadata/exclude-metadata.interface';\nexport * from './metadata/expose-metadata.interface';\nexport * from './metadata/transform-metadata.interface';\nexport * from './metadata/transform-fn-params.interface';\nexport * from './metadata/type-metadata.interface';\nexport * from './class-constructor.type';\nexport * from './class-transformer-options.interface';\nexport * from './target-map.interface';\nexport * from './type-help-options.interface';\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/exclude-metadata.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/exclude-metadata.interface.js new file mode 100644 index 00000000..9f719e4d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/exclude-metadata.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=exclude-metadata.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/exclude-metadata.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/exclude-metadata.interface.js.map new file mode 100644 index 00000000..ca4dad11 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/exclude-metadata.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"exclude-metadata.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/metadata/exclude-metadata.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { ExcludeOptions } from '..';\n\n/**\n * This object represents metadata assigned to a property via the @Exclude decorator.\n */\nexport interface ExcludeMetadata {\n target: Function;\n\n /**\n * The property name this metadata belongs to on the target (class or property).\n *\n * Note: If the decorator is applied to a class the propertyName will be undefined.\n */\n propertyName: string | undefined;\n\n /**\n * Options passed to the @Exclude operator for this property.\n */\n options: ExcludeOptions;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/expose-metadata.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/expose-metadata.interface.js new file mode 100644 index 00000000..ef6d9a65 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/expose-metadata.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=expose-metadata.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/expose-metadata.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/expose-metadata.interface.js.map new file mode 100644 index 00000000..49029199 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/expose-metadata.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"expose-metadata.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/metadata/expose-metadata.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { ExposeOptions } from '..';\n\n/**\n * This object represents metadata assigned to a property via the @Expose decorator.\n */\nexport interface ExposeMetadata {\n target: Function;\n\n /**\n * The property name this metadata belongs to on the target (class or property).\n *\n * Note: If the decorator is applied to a class the propertyName will be undefined.\n */\n propertyName: string | undefined;\n\n /**\n * Options passed to the @Expose operator for this property.\n */\n options: ExposeOptions;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/transform-fn-params.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/transform-fn-params.interface.js new file mode 100644 index 00000000..4ae04887 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/transform-fn-params.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=transform-fn-params.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/transform-fn-params.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/transform-fn-params.interface.js.map new file mode 100644 index 00000000..e849e4f4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/transform-fn-params.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transform-fn-params.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/metadata/transform-fn-params.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { TransformationType } from '../../enums';\nimport { ClassTransformOptions } from '../class-transformer-options.interface';\n\nexport interface TransformFnParams {\n value: any;\n key: string;\n obj: any;\n type: TransformationType;\n options: ClassTransformOptions;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/transform-metadata.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/transform-metadata.interface.js new file mode 100644 index 00000000..61beacb2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/transform-metadata.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=transform-metadata.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/transform-metadata.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/transform-metadata.interface.js.map new file mode 100644 index 00000000..668c8cec --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/transform-metadata.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transform-metadata.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/metadata/transform-metadata.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { TransformOptions } from '..';\nimport { TransformFnParams } from './transform-fn-params.interface';\n\n/**\n * This object represents metadata assigned to a property via the @Transform decorator.\n */\nexport interface TransformMetadata {\n target: Function;\n\n /**\n * The property name this metadata belongs to on the target (property only).\n */\n propertyName: string;\n\n /**\n * The custom transformation function provided by the user in the @Transform decorator.\n */\n transformFn: (params: TransformFnParams) => any;\n\n /**\n * Options passed to the @Transform operator for this property.\n */\n options: TransformOptions;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/type-metadata.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/type-metadata.interface.js new file mode 100644 index 00000000..62dcc4ba --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/type-metadata.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=type-metadata.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/type-metadata.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/type-metadata.interface.js.map new file mode 100644 index 00000000..4c6206d7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/metadata/type-metadata.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"type-metadata.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/metadata/type-metadata.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { TypeHelpOptions, TypeOptions } from '..';\n\n/**\n * This object represents metadata assigned to a property via the @Type decorator.\n */\nexport interface TypeMetadata {\n target: Function;\n\n /**\n * The property name this metadata belongs to on the target (property only).\n */\n propertyName: string;\n\n /**\n * The type guessed from assigned Reflect metadata ('design:type')\n */\n reflectedType: any;\n\n /**\n * The custom function provided by the user in the @Type decorator which\n * returns the target type for the transformation.\n */\n typeFunction: (options?: TypeHelpOptions) => Function;\n\n /**\n * Options passed to the @Type operator for this property.\n */\n options: TypeOptions;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/target-map.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/target-map.interface.js new file mode 100644 index 00000000..39fe2bf5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/target-map.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=target-map.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/target-map.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/target-map.interface.js.map new file mode 100644 index 00000000..710733f3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/target-map.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"target-map.interface.js","sourceRoot":"","sources":["../../../src/interfaces/target-map.interface.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Allows to specify a map of Types in the object without using @Type decorator.\n * This is useful when you have external classes.\n */\nexport interface TargetMap {\n /**\n * Target which Types are being specified.\n */\n target: Function;\n\n /**\n * List of properties and their Types.\n */\n properties: { [key: string]: Function };\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/type-help-options.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/type-help-options.interface.js new file mode 100644 index 00000000..49caf8fe --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/type-help-options.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=type-help-options.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/type-help-options.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/type-help-options.interface.js.map new file mode 100644 index 00000000..8050a8f3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/interfaces/type-help-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"type-help-options.interface.js","sourceRoot":"","sources":["../../../src/interfaces/type-help-options.interface.ts"],"names":[],"mappings":"","sourcesContent":["// TODO: Document this interface. What does each property means?\nexport interface TypeHelpOptions {\n newObject: any;\n object: Record;\n property: string;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/storage.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/storage.js new file mode 100644 index 00000000..dc7d0733 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/storage.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.defaultMetadataStorage = void 0; +const MetadataStorage_1 = require("./MetadataStorage"); +/** + * Default metadata storage is used as singleton and can be used to storage all metadatas. + */ +exports.defaultMetadataStorage = new MetadataStorage_1.MetadataStorage(); +//# sourceMappingURL=storage.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/storage.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/storage.js.map new file mode 100644 index 00000000..60d872c8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/storage.js.map @@ -0,0 +1 @@ +{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":";;;AAAA,uDAAoD;AAEpD;;GAEG;AACU,QAAA,sBAAsB,GAAG,IAAI,iCAAe,EAAE,CAAC","sourcesContent":["import { MetadataStorage } from './MetadataStorage';\n\n/**\n * Default metadata storage is used as singleton and can be used to storage all metadatas.\n */\nexport const defaultMetadataStorage = new MetadataStorage();\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/get-global.util.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/get-global.util.js new file mode 100644 index 00000000..63c6eebc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/get-global.util.js @@ -0,0 +1,33 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getGlobal = void 0; +/** + * This function returns the global object across Node and browsers. + * + * Note: `globalThis` is the standardized approach however it has been added to + * Node.js in version 12. We need to include this snippet until Node 12 EOL. + */ +function getGlobal() { + if (typeof globalThis !== 'undefined') { + return globalThis; + } + if (typeof global !== 'undefined') { + return global; + } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'window'. + if (typeof window !== 'undefined') { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'window'. + return window; + } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'self'. + if (typeof self !== 'undefined') { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'self'. + return self; + } +} +exports.getGlobal = getGlobal; +//# sourceMappingURL=get-global.util.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/get-global.util.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/get-global.util.js.map new file mode 100644 index 00000000..c74ab152 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/get-global.util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"get-global.util.js","sourceRoot":"","sources":["../../../src/utils/get-global.util.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,SAAgB,SAAS;IACvB,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;QACrC,OAAO,UAAU,CAAC;KACnB;IAED,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,OAAO,MAAM,CAAC;KACf;IAED,6DAA6D;IAC7D,yCAAyC;IACzC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,6DAA6D;QAC7D,yCAAyC;QACzC,OAAO,MAAM,CAAC;KACf;IAED,6DAA6D;IAC7D,uCAAuC;IACvC,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;QAC/B,6DAA6D;QAC7D,uCAAuC;QACvC,OAAO,IAAI,CAAC;KACb;AACH,CAAC;AAxBD,8BAwBC","sourcesContent":["/**\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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/get-global.util.spect.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/get-global.util.spect.js new file mode 100644 index 00000000..dcedf780 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/get-global.util.spect.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const _1 = require("."); +describe('getGlobal()', () => { + it('should return true if Buffer is present in globalThis', () => { + expect((0, _1.getGlobal)().Buffer).toBe(true); + }); + it('should return false if Buffer is not present in globalThis', () => { + const bufferImp = global.Buffer; + delete global.Buffer; + expect((0, _1.getGlobal)().Buffer).toBe(false); + global.Buffer = bufferImp; + }); +}); +//# sourceMappingURL=get-global.util.spect.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/get-global.util.spect.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/get-global.util.spect.js.map new file mode 100644 index 00000000..a863629f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/get-global.util.spect.js.map @@ -0,0 +1 @@ +{"version":3,"file":"get-global.util.spect.js","sourceRoot":"","sources":["../../../src/utils/get-global.util.spect.ts"],"names":[],"mappings":";;AAAA,wBAA8B;AAE9B,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,IAAA,YAAS,GAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;QAChC,OAAO,MAAM,CAAC,MAAM,CAAC;QAErB,MAAM,CAAC,IAAA,YAAS,GAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { getGlobal } from '.';\n\ndescribe('getGlobal()', () => {\n it('should return true if Buffer is present in globalThis', () => {\n expect(getGlobal().Buffer).toBe(true);\n });\n\n it('should return false if Buffer is not present in globalThis', () => {\n const bufferImp = global.Buffer;\n delete global.Buffer;\n\n expect(getGlobal().Buffer).toBe(false);\n\n global.Buffer = bufferImp;\n });\n});\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/index.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/index.js new file mode 100644 index 00000000..d41068eb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/index.js @@ -0,0 +1,15 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./get-global.util"), exports); +__exportStar(require("./is-promise.util"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/index.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/index.js.map new file mode 100644 index 00000000..fd2b884b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAkC;AAClC,oDAAkC","sourcesContent":["export * from './get-global.util';\nexport * from './is-promise.util';\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/is-promise.util.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/is-promise.util.js new file mode 100644 index 00000000..923ac8fe --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/is-promise.util.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isPromise = void 0; +function isPromise(p) { + return p !== null && typeof p === 'object' && typeof p.then === 'function'; +} +exports.isPromise = isPromise; +//# sourceMappingURL=is-promise.util.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/is-promise.util.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/is-promise.util.js.map new file mode 100644 index 00000000..9ed4f072 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/cjs/utils/is-promise.util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"is-promise.util.js","sourceRoot":"","sources":["../../../src/utils/is-promise.util.ts"],"names":[],"mappings":";;;AAAA,SAAgB,SAAS,CAAI,CAAM;IACjC,OAAO,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;AAC7E,CAAC;AAFD,8BAEC","sourcesContent":["export function isPromise(p: any): p is Promise {\n return p !== null && typeof p === 'object' && typeof p.then === 'function';\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/ClassTransformer.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/ClassTransformer.js new file mode 100644 index 00000000..2397feab --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/ClassTransformer.js @@ -0,0 +1,65 @@ +import { TransformOperationExecutor } from './TransformOperationExecutor'; +import { TransformationType } from './enums'; +import { defaultOptions } from './constants/default-options.constant'; +export class ClassTransformer { + instanceToPlain(object, options) { + const executor = new TransformOperationExecutor(TransformationType.CLASS_TO_PLAIN, { + ...defaultOptions, + ...options, + }); + return executor.transform(undefined, object, undefined, undefined, undefined, undefined); + } + classToPlainFromExist(object, plainObject, options) { + const executor = new TransformOperationExecutor(TransformationType.CLASS_TO_PLAIN, { + ...defaultOptions, + ...options, + }); + return executor.transform(plainObject, object, undefined, undefined, undefined, undefined); + } + plainToInstance(cls, plain, options) { + const executor = new TransformOperationExecutor(TransformationType.PLAIN_TO_CLASS, { + ...defaultOptions, + ...options, + }); + return executor.transform(undefined, plain, cls, undefined, undefined, undefined); + } + plainToClassFromExist(clsObject, plain, options) { + const executor = new TransformOperationExecutor(TransformationType.PLAIN_TO_CLASS, { + ...defaultOptions, + ...options, + }); + return executor.transform(clsObject, plain, undefined, undefined, undefined, undefined); + } + instanceToInstance(object, options) { + const executor = new TransformOperationExecutor(TransformationType.CLASS_TO_CLASS, { + ...defaultOptions, + ...options, + }); + return executor.transform(undefined, object, undefined, undefined, undefined, undefined); + } + classToClassFromExist(object, fromObject, options) { + const executor = new TransformOperationExecutor(TransformationType.CLASS_TO_CLASS, { + ...defaultOptions, + ...options, + }); + return executor.transform(fromObject, object, undefined, undefined, undefined, undefined); + } + serialize(object, options) { + return JSON.stringify(this.instanceToPlain(object, options)); + } + /** + * Deserializes given JSON string to a object of the given class. + */ + deserialize(cls, json, options) { + const jsonObject = JSON.parse(json); + return this.plainToInstance(cls, jsonObject, options); + } + /** + * Deserializes given JSON string to an array of objects of the given class. + */ + deserializeArray(cls, json, options) { + const jsonObject = JSON.parse(json); + return this.plainToInstance(cls, jsonObject, options); + } +} +//# sourceMappingURL=ClassTransformer.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/ClassTransformer.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/ClassTransformer.js.map new file mode 100644 index 00000000..92c01112 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/ClassTransformer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ClassTransformer.js","sourceRoot":"","sources":["../../src/ClassTransformer.ts"],"names":[],"mappings":"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","sourcesContent":["import { ClassTransformOptions } from './interfaces';\nimport { TransformOperationExecutor } from './TransformOperationExecutor';\nimport { TransformationType } from './enums';\nimport { ClassConstructor } from './interfaces';\nimport { defaultOptions } from './constants/default-options.constant';\n\nexport class ClassTransformer {\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Converts class (constructor) object to plain (literal) object. Also works with arrays.\n */\n instanceToPlain>(object: T, options?: ClassTransformOptions): Record;\n instanceToPlain>(object: T[], options?: ClassTransformOptions): Record[];\n instanceToPlain>(\n object: T | T[],\n options?: ClassTransformOptions\n ): Record | Record[] {\n const executor = new TransformOperationExecutor(TransformationType.CLASS_TO_PLAIN, {\n ...defaultOptions,\n ...options,\n });\n return executor.transform(undefined, object, undefined, undefined, undefined, undefined);\n }\n\n /**\n * Converts class (constructor) object to plain (literal) object.\n * Uses given plain object as source object (it means fills given plain object with data from class object).\n * Also works with arrays.\n */\n classToPlainFromExist, P>(\n object: T,\n plainObject: P,\n options?: ClassTransformOptions\n ): T;\n classToPlainFromExist, P>(\n object: T,\n plainObjects: P[],\n options?: ClassTransformOptions\n ): T[];\n classToPlainFromExist, P>(\n object: T,\n plainObject: P | P[],\n options?: ClassTransformOptions\n ): T | T[] {\n const executor = new TransformOperationExecutor(TransformationType.CLASS_TO_PLAIN, {\n ...defaultOptions,\n ...options,\n });\n return executor.transform(plainObject, object, undefined, undefined, undefined, undefined);\n }\n\n /**\n * Converts plain (literal) object to class (constructor) object. Also works with arrays.\n */\n plainToInstance, V extends Array>(\n cls: ClassConstructor,\n plain: V,\n options?: ClassTransformOptions\n ): T[];\n plainToInstance, V>(\n cls: ClassConstructor,\n plain: V,\n options?: ClassTransformOptions\n ): T;\n plainToInstance, V>(\n cls: ClassConstructor,\n plain: V | V[],\n options?: ClassTransformOptions\n ): T | T[] {\n const executor = new TransformOperationExecutor(TransformationType.PLAIN_TO_CLASS, {\n ...defaultOptions,\n ...options,\n });\n return executor.transform(undefined, plain, cls, undefined, undefined, undefined);\n }\n\n /**\n * Converts plain (literal) object to class (constructor) object.\n * Uses given object as source object (it means fills given object with data from plain object).\n * Also works with arrays.\n */\n plainToClassFromExist, V extends Array>(\n clsObject: T,\n plain: V,\n options?: ClassTransformOptions\n ): T;\n plainToClassFromExist, V>(clsObject: T, plain: V, options?: ClassTransformOptions): T[];\n plainToClassFromExist, V>(\n clsObject: T,\n plain: V | V[],\n options?: ClassTransformOptions\n ): T | T[] {\n const executor = new TransformOperationExecutor(TransformationType.PLAIN_TO_CLASS, {\n ...defaultOptions,\n ...options,\n });\n return executor.transform(clsObject, plain, undefined, undefined, undefined, undefined);\n }\n\n /**\n * Converts class (constructor) object to new class (constructor) object. Also works with arrays.\n */\n instanceToInstance(object: T, options?: ClassTransformOptions): T;\n instanceToInstance(object: T[], options?: ClassTransformOptions): T[];\n instanceToInstance(object: T | T[], options?: ClassTransformOptions): T | T[] {\n const executor = new TransformOperationExecutor(TransformationType.CLASS_TO_CLASS, {\n ...defaultOptions,\n ...options,\n });\n return executor.transform(undefined, object, undefined, undefined, undefined, undefined);\n }\n\n /**\n * Converts class (constructor) object to plain (literal) object.\n * Uses given plain object as source object (it means fills given plain object with data from class object).\n * Also works with arrays.\n */\n classToClassFromExist(object: T, fromObject: T, options?: ClassTransformOptions): T;\n classToClassFromExist(object: T, fromObjects: T[], options?: ClassTransformOptions): T[];\n classToClassFromExist(object: T, fromObject: T | T[], options?: ClassTransformOptions): T | T[] {\n const executor = new TransformOperationExecutor(TransformationType.CLASS_TO_CLASS, {\n ...defaultOptions,\n ...options,\n });\n return executor.transform(fromObject, object, undefined, undefined, undefined, undefined);\n }\n\n /**\n * Serializes given object to a JSON string.\n */\n serialize(object: T, options?: ClassTransformOptions): string;\n serialize(object: T[], options?: ClassTransformOptions): string;\n serialize(object: T | T[], options?: ClassTransformOptions): string {\n return JSON.stringify(this.instanceToPlain(object, options));\n }\n\n /**\n * Deserializes given JSON string to a object of the given class.\n */\n deserialize(cls: ClassConstructor, json: string, options?: ClassTransformOptions): T {\n const jsonObject: T = JSON.parse(json);\n return this.plainToInstance(cls, jsonObject, options);\n }\n\n /**\n * Deserializes given JSON string to an array of objects of the given class.\n */\n deserializeArray(cls: ClassConstructor, json: string, options?: ClassTransformOptions): T[] {\n const jsonObject: any[] = JSON.parse(json);\n return this.plainToInstance(cls, jsonObject, options);\n }\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/MetadataStorage.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/MetadataStorage.js new file mode 100644 index 00000000..417202d9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/MetadataStorage.js @@ -0,0 +1,207 @@ +import { TransformationType } from './enums'; +/** + * Storage all library metadata. + */ +export class MetadataStorage { + constructor() { + // ------------------------------------------------------------------------- + // Properties + // ------------------------------------------------------------------------- + this._typeMetadatas = new Map(); + this._transformMetadatas = new Map(); + this._exposeMetadatas = new Map(); + this._excludeMetadatas = new Map(); + this._ancestorsMap = new Map(); + } + // ------------------------------------------------------------------------- + // Adder Methods + // ------------------------------------------------------------------------- + addTypeMetadata(metadata) { + if (!this._typeMetadatas.has(metadata.target)) { + this._typeMetadatas.set(metadata.target, new Map()); + } + this._typeMetadatas.get(metadata.target).set(metadata.propertyName, metadata); + } + addTransformMetadata(metadata) { + if (!this._transformMetadatas.has(metadata.target)) { + this._transformMetadatas.set(metadata.target, new Map()); + } + if (!this._transformMetadatas.get(metadata.target).has(metadata.propertyName)) { + this._transformMetadatas.get(metadata.target).set(metadata.propertyName, []); + } + this._transformMetadatas.get(metadata.target).get(metadata.propertyName).push(metadata); + } + addExposeMetadata(metadata) { + if (!this._exposeMetadatas.has(metadata.target)) { + this._exposeMetadatas.set(metadata.target, new Map()); + } + this._exposeMetadatas.get(metadata.target).set(metadata.propertyName, metadata); + } + addExcludeMetadata(metadata) { + if (!this._excludeMetadatas.has(metadata.target)) { + this._excludeMetadatas.set(metadata.target, new Map()); + } + this._excludeMetadatas.get(metadata.target).set(metadata.propertyName, metadata); + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + findTransformMetadatas(target, propertyName, transformationType) { + return this.findMetadatas(this._transformMetadatas, target, propertyName).filter(metadata => { + if (!metadata.options) + return true; + if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true) + return true; + if (metadata.options.toClassOnly === true) { + return (transformationType === TransformationType.CLASS_TO_CLASS || + transformationType === TransformationType.PLAIN_TO_CLASS); + } + if (metadata.options.toPlainOnly === true) { + return transformationType === TransformationType.CLASS_TO_PLAIN; + } + return true; + }); + } + findExcludeMetadata(target, propertyName) { + return this.findMetadata(this._excludeMetadatas, target, propertyName); + } + findExposeMetadata(target, propertyName) { + return this.findMetadata(this._exposeMetadatas, target, propertyName); + } + findExposeMetadataByCustomName(target, name) { + return this.getExposedMetadatas(target).find(metadata => { + return metadata.options && metadata.options.name === name; + }); + } + findTypeMetadata(target, propertyName) { + return this.findMetadata(this._typeMetadatas, target, propertyName); + } + getStrategy(target) { + const excludeMap = this._excludeMetadatas.get(target); + const exclude = excludeMap && excludeMap.get(undefined); + const exposeMap = this._exposeMetadatas.get(target); + const expose = exposeMap && exposeMap.get(undefined); + if ((exclude && expose) || (!exclude && !expose)) + return 'none'; + return exclude ? 'excludeAll' : 'exposeAll'; + } + getExposedMetadatas(target) { + return this.getMetadata(this._exposeMetadatas, target); + } + getExcludedMetadatas(target) { + return this.getMetadata(this._excludeMetadatas, target); + } + getExposedProperties(target, transformationType) { + return this.getExposedMetadatas(target) + .filter(metadata => { + if (!metadata.options) + return true; + if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true) + return true; + if (metadata.options.toClassOnly === true) { + return (transformationType === TransformationType.CLASS_TO_CLASS || + transformationType === TransformationType.PLAIN_TO_CLASS); + } + if (metadata.options.toPlainOnly === true) { + return transformationType === TransformationType.CLASS_TO_PLAIN; + } + return true; + }) + .map(metadata => metadata.propertyName); + } + getExcludedProperties(target, transformationType) { + return this.getExcludedMetadatas(target) + .filter(metadata => { + if (!metadata.options) + return true; + if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true) + return true; + if (metadata.options.toClassOnly === true) { + return (transformationType === TransformationType.CLASS_TO_CLASS || + transformationType === TransformationType.PLAIN_TO_CLASS); + } + if (metadata.options.toPlainOnly === true) { + return transformationType === TransformationType.CLASS_TO_PLAIN; + } + return true; + }) + .map(metadata => metadata.propertyName); + } + clear() { + this._typeMetadatas.clear(); + this._exposeMetadatas.clear(); + this._excludeMetadatas.clear(); + this._ancestorsMap.clear(); + } + // ------------------------------------------------------------------------- + // Private Methods + // ------------------------------------------------------------------------- + getMetadata(metadatas, target) { + const metadataFromTargetMap = metadatas.get(target); + let metadataFromTarget; + if (metadataFromTargetMap) { + metadataFromTarget = Array.from(metadataFromTargetMap.values()).filter(meta => meta.propertyName !== undefined); + } + const metadataFromAncestors = []; + for (const ancestor of this.getAncestors(target)) { + const ancestorMetadataMap = metadatas.get(ancestor); + if (ancestorMetadataMap) { + const metadataFromAncestor = Array.from(ancestorMetadataMap.values()).filter(meta => meta.propertyName !== undefined); + metadataFromAncestors.push(...metadataFromAncestor); + } + } + return metadataFromAncestors.concat(metadataFromTarget || []); + } + findMetadata(metadatas, target, propertyName) { + const metadataFromTargetMap = metadatas.get(target); + if (metadataFromTargetMap) { + const metadataFromTarget = metadataFromTargetMap.get(propertyName); + if (metadataFromTarget) { + return metadataFromTarget; + } + } + for (const ancestor of this.getAncestors(target)) { + const ancestorMetadataMap = metadatas.get(ancestor); + if (ancestorMetadataMap) { + const ancestorResult = ancestorMetadataMap.get(propertyName); + if (ancestorResult) { + return ancestorResult; + } + } + } + return undefined; + } + findMetadatas(metadatas, target, propertyName) { + const metadataFromTargetMap = metadatas.get(target); + let metadataFromTarget; + if (metadataFromTargetMap) { + metadataFromTarget = metadataFromTargetMap.get(propertyName); + } + const metadataFromAncestorsTarget = []; + for (const ancestor of this.getAncestors(target)) { + const ancestorMetadataMap = metadatas.get(ancestor); + if (ancestorMetadataMap) { + if (ancestorMetadataMap.has(propertyName)) { + metadataFromAncestorsTarget.push(...ancestorMetadataMap.get(propertyName)); + } + } + } + return metadataFromAncestorsTarget + .slice() + .reverse() + .concat((metadataFromTarget || []).slice().reverse()); + } + getAncestors(target) { + if (!target) + return []; + if (!this._ancestorsMap.has(target)) { + const ancestors = []; + for (let baseClass = Object.getPrototypeOf(target.prototype.constructor); typeof baseClass.prototype !== 'undefined'; baseClass = Object.getPrototypeOf(baseClass.prototype.constructor)) { + ancestors.push(baseClass); + } + this._ancestorsMap.set(target, ancestors); + } + return this._ancestorsMap.get(target); + } +} +//# sourceMappingURL=MetadataStorage.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/MetadataStorage.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/MetadataStorage.js.map new file mode 100644 index 00000000..4ca6d46f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/MetadataStorage.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MetadataStorage.js","sourceRoot":"","sources":["../../src/MetadataStorage.ts"],"names":[],"mappings":"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","sourcesContent":["import { TypeMetadata, ExposeMetadata, ExcludeMetadata, TransformMetadata } from './interfaces';\nimport { TransformationType } from './enums';\n\n/**\n * Storage all library metadata.\n */\nexport class MetadataStorage {\n // -------------------------------------------------------------------------\n // Properties\n // -------------------------------------------------------------------------\n\n private _typeMetadatas = new Map>();\n private _transformMetadatas = new Map>();\n private _exposeMetadatas = new Map>();\n private _excludeMetadatas = new Map>();\n private _ancestorsMap = new Map();\n\n // -------------------------------------------------------------------------\n // Adder Methods\n // -------------------------------------------------------------------------\n\n addTypeMetadata(metadata: TypeMetadata): void {\n if (!this._typeMetadatas.has(metadata.target)) {\n this._typeMetadatas.set(metadata.target, new Map());\n }\n this._typeMetadatas.get(metadata.target).set(metadata.propertyName, metadata);\n }\n\n addTransformMetadata(metadata: TransformMetadata): void {\n if (!this._transformMetadatas.has(metadata.target)) {\n this._transformMetadatas.set(metadata.target, new Map());\n }\n if (!this._transformMetadatas.get(metadata.target).has(metadata.propertyName)) {\n this._transformMetadatas.get(metadata.target).set(metadata.propertyName, []);\n }\n this._transformMetadatas.get(metadata.target).get(metadata.propertyName).push(metadata);\n }\n\n addExposeMetadata(metadata: ExposeMetadata): void {\n if (!this._exposeMetadatas.has(metadata.target)) {\n this._exposeMetadatas.set(metadata.target, new Map());\n }\n this._exposeMetadatas.get(metadata.target).set(metadata.propertyName, metadata);\n }\n\n addExcludeMetadata(metadata: ExcludeMetadata): void {\n if (!this._excludeMetadatas.has(metadata.target)) {\n this._excludeMetadatas.set(metadata.target, new Map());\n }\n this._excludeMetadatas.get(metadata.target).set(metadata.propertyName, metadata);\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n findTransformMetadatas(\n target: Function,\n propertyName: string,\n transformationType: TransformationType\n ): TransformMetadata[] {\n return this.findMetadatas(this._transformMetadatas, target, propertyName).filter(metadata => {\n if (!metadata.options) return true;\n if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true) return true;\n\n if (metadata.options.toClassOnly === true) {\n return (\n transformationType === TransformationType.CLASS_TO_CLASS ||\n transformationType === TransformationType.PLAIN_TO_CLASS\n );\n }\n if (metadata.options.toPlainOnly === true) {\n return transformationType === TransformationType.CLASS_TO_PLAIN;\n }\n\n return true;\n });\n }\n\n findExcludeMetadata(target: Function, propertyName: string): ExcludeMetadata {\n return this.findMetadata(this._excludeMetadatas, target, propertyName);\n }\n\n findExposeMetadata(target: Function, propertyName: string): ExposeMetadata {\n return this.findMetadata(this._exposeMetadatas, target, propertyName);\n }\n\n findExposeMetadataByCustomName(target: Function, name: string): ExposeMetadata {\n return this.getExposedMetadatas(target).find(metadata => {\n return metadata.options && metadata.options.name === name;\n });\n }\n\n findTypeMetadata(target: Function, propertyName: string): TypeMetadata {\n return this.findMetadata(this._typeMetadatas, target, propertyName);\n }\n\n getStrategy(target: Function): 'excludeAll' | 'exposeAll' | 'none' {\n const excludeMap = this._excludeMetadatas.get(target);\n const exclude = excludeMap && excludeMap.get(undefined);\n const exposeMap = this._exposeMetadatas.get(target);\n const expose = exposeMap && exposeMap.get(undefined);\n if ((exclude && expose) || (!exclude && !expose)) return 'none';\n return exclude ? 'excludeAll' : 'exposeAll';\n }\n\n getExposedMetadatas(target: Function): ExposeMetadata[] {\n return this.getMetadata(this._exposeMetadatas, target);\n }\n\n getExcludedMetadatas(target: Function): ExcludeMetadata[] {\n return this.getMetadata(this._excludeMetadatas, target);\n }\n\n getExposedProperties(target: Function, transformationType: TransformationType): string[] {\n return this.getExposedMetadatas(target)\n .filter(metadata => {\n if (!metadata.options) return true;\n if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true) return true;\n\n if (metadata.options.toClassOnly === true) {\n return (\n transformationType === TransformationType.CLASS_TO_CLASS ||\n transformationType === TransformationType.PLAIN_TO_CLASS\n );\n }\n if (metadata.options.toPlainOnly === true) {\n return transformationType === TransformationType.CLASS_TO_PLAIN;\n }\n\n return true;\n })\n .map(metadata => metadata.propertyName);\n }\n\n getExcludedProperties(target: Function, transformationType: TransformationType): string[] {\n return this.getExcludedMetadatas(target)\n .filter(metadata => {\n if (!metadata.options) return true;\n if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true) return true;\n\n if (metadata.options.toClassOnly === true) {\n return (\n transformationType === TransformationType.CLASS_TO_CLASS ||\n transformationType === TransformationType.PLAIN_TO_CLASS\n );\n }\n if (metadata.options.toPlainOnly === true) {\n return transformationType === TransformationType.CLASS_TO_PLAIN;\n }\n\n return true;\n })\n .map(metadata => metadata.propertyName);\n }\n\n clear(): void {\n this._typeMetadatas.clear();\n this._exposeMetadatas.clear();\n this._excludeMetadatas.clear();\n this._ancestorsMap.clear();\n }\n\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n\n private getMetadata(\n metadatas: Map>,\n target: Function\n ): T[] {\n const metadataFromTargetMap = metadatas.get(target);\n let metadataFromTarget: T[];\n if (metadataFromTargetMap) {\n metadataFromTarget = Array.from(metadataFromTargetMap.values()).filter(meta => meta.propertyName !== undefined);\n }\n const metadataFromAncestors: T[] = [];\n for (const ancestor of this.getAncestors(target)) {\n const ancestorMetadataMap = metadatas.get(ancestor);\n if (ancestorMetadataMap) {\n const metadataFromAncestor = Array.from(ancestorMetadataMap.values()).filter(\n meta => meta.propertyName !== undefined\n );\n metadataFromAncestors.push(...metadataFromAncestor);\n }\n }\n return metadataFromAncestors.concat(metadataFromTarget || []);\n }\n\n private findMetadata(\n metadatas: Map>,\n target: Function,\n propertyName: string\n ): T {\n const metadataFromTargetMap = metadatas.get(target);\n if (metadataFromTargetMap) {\n const metadataFromTarget = metadataFromTargetMap.get(propertyName);\n if (metadataFromTarget) {\n return metadataFromTarget;\n }\n }\n for (const ancestor of this.getAncestors(target)) {\n const ancestorMetadataMap = metadatas.get(ancestor);\n if (ancestorMetadataMap) {\n const ancestorResult = ancestorMetadataMap.get(propertyName);\n if (ancestorResult) {\n return ancestorResult;\n }\n }\n }\n return undefined;\n }\n\n private findMetadatas(\n metadatas: Map>,\n target: Function,\n propertyName: string\n ): T[] {\n const metadataFromTargetMap = metadatas.get(target);\n let metadataFromTarget: T[];\n if (metadataFromTargetMap) {\n metadataFromTarget = metadataFromTargetMap.get(propertyName);\n }\n const metadataFromAncestorsTarget: T[] = [];\n for (const ancestor of this.getAncestors(target)) {\n const ancestorMetadataMap = metadatas.get(ancestor);\n if (ancestorMetadataMap) {\n if (ancestorMetadataMap.has(propertyName)) {\n metadataFromAncestorsTarget.push(...ancestorMetadataMap.get(propertyName));\n }\n }\n }\n return metadataFromAncestorsTarget\n .slice()\n .reverse()\n .concat((metadataFromTarget || []).slice().reverse());\n }\n\n private getAncestors(target: Function): Function[] {\n if (!target) return [];\n if (!this._ancestorsMap.has(target)) {\n const ancestors: Function[] = [];\n for (\n let baseClass = Object.getPrototypeOf(target.prototype.constructor);\n typeof baseClass.prototype !== 'undefined';\n baseClass = Object.getPrototypeOf(baseClass.prototype.constructor)\n ) {\n ancestors.push(baseClass);\n }\n this._ancestorsMap.set(target, ancestors);\n }\n return this._ancestorsMap.get(target);\n }\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/TransformOperationExecutor.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/TransformOperationExecutor.js new file mode 100644 index 00000000..d3897161 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/TransformOperationExecutor.js @@ -0,0 +1,476 @@ +import { defaultMetadataStorage } from './storage'; +import { TransformationType } from './enums'; +import { getGlobal, isPromise } from './utils'; +function instantiateArrayType(arrayType) { + const array = new arrayType(); + if (!(array instanceof Set) && !('push' in array)) { + return []; + } + return array; +} +export class TransformOperationExecutor { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + constructor(transformationType, options) { + this.transformationType = transformationType; + this.options = options; + // ------------------------------------------------------------------------- + // Private Properties + // ------------------------------------------------------------------------- + this.recursionStack = new Set(); + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + transform(source, value, targetType, arrayType, isMap, level = 0) { + if (Array.isArray(value) || value instanceof Set) { + const newValue = arrayType && this.transformationType === TransformationType.PLAIN_TO_CLASS + ? instantiateArrayType(arrayType) + : []; + value.forEach((subValue, index) => { + const subSource = source ? source[index] : undefined; + if (!this.options.enableCircularCheck || !this.isCircular(subValue)) { + let realTargetType; + if (typeof targetType !== 'function' && + targetType && + targetType.options && + targetType.options.discriminator && + targetType.options.discriminator.property && + targetType.options.discriminator.subTypes) { + if (this.transformationType === TransformationType.PLAIN_TO_CLASS) { + realTargetType = targetType.options.discriminator.subTypes.find(subType => subType.name === subValue[targetType.options.discriminator.property]); + const options = { newObject: newValue, object: subValue, property: undefined }; + const newType = targetType.typeFunction(options); + realTargetType === undefined ? (realTargetType = newType) : (realTargetType = realTargetType.value); + if (!targetType.options.keepDiscriminatorProperty) + delete subValue[targetType.options.discriminator.property]; + } + if (this.transformationType === TransformationType.CLASS_TO_CLASS) { + realTargetType = subValue.constructor; + } + if (this.transformationType === TransformationType.CLASS_TO_PLAIN) { + subValue[targetType.options.discriminator.property] = targetType.options.discriminator.subTypes.find(subType => subType.value === subValue.constructor).name; + } + } + else { + realTargetType = targetType; + } + const value = this.transform(subSource, subValue, realTargetType, undefined, subValue instanceof Map, level + 1); + if (newValue instanceof Set) { + newValue.add(value); + } + else { + newValue.push(value); + } + } + else if (this.transformationType === TransformationType.CLASS_TO_CLASS) { + if (newValue instanceof Set) { + newValue.add(subValue); + } + else { + newValue.push(subValue); + } + } + }); + return newValue; + } + else if (targetType === String && !isMap) { + if (value === null || value === undefined) + return value; + return String(value); + } + else if (targetType === Number && !isMap) { + if (value === null || value === undefined) + return value; + return Number(value); + } + else if (targetType === Boolean && !isMap) { + if (value === null || value === undefined) + return value; + return Boolean(value); + } + else if ((targetType === Date || value instanceof Date) && !isMap) { + if (value instanceof Date) { + return new Date(value.valueOf()); + } + if (value === null || value === undefined) + return value; + return new Date(value); + } + else if (!!getGlobal().Buffer && (targetType === Buffer || value instanceof Buffer) && !isMap) { + if (value === null || value === undefined) + return value; + return Buffer.from(value); + } + else if (isPromise(value) && !isMap) { + return new Promise((resolve, reject) => { + value.then((data) => resolve(this.transform(undefined, data, targetType, undefined, undefined, level + 1)), reject); + }); + } + else if (!isMap && value !== null && typeof value === 'object' && typeof value.then === 'function') { + // Note: We should not enter this, as promise has been handled above + // This option simply returns the Promise preventing a JS error from happening and should be an inaccessible path. + return value; // skip promise transformation + } + else if (typeof value === 'object' && value !== null) { + // try to guess the type + if (!targetType && value.constructor !== Object /* && TransformationType === TransformationType.CLASS_TO_PLAIN*/) + if (!Array.isArray(value) && value.constructor === Array) { + // Somebody attempts to convert special Array like object to Array, eg: + // const evilObject = { '100000000': '100000000', __proto__: [] }; + // This could be used to cause Denial-of-service attack so we don't allow it. + // See prevent-array-bomb.spec.ts for more details. + } + else { + // We are good we can use the built-in constructor + targetType = value.constructor; + } + if (!targetType && source) + targetType = source.constructor; + if (this.options.enableCircularCheck) { + // add transformed type to prevent circular references + this.recursionStack.add(value); + } + const keys = this.getKeys(targetType, value, isMap); + let newValue = source ? source : {}; + if (!source && + (this.transformationType === TransformationType.PLAIN_TO_CLASS || + this.transformationType === TransformationType.CLASS_TO_CLASS)) { + if (isMap) { + newValue = new Map(); + } + else if (targetType) { + newValue = new targetType(); + } + else { + newValue = {}; + } + } + // traverse over keys + for (const key of keys) { + if (key === '__proto__' || key === 'constructor') { + continue; + } + const valueKey = key; + let newValueKey = key, propertyName = key; + if (!this.options.ignoreDecorators && targetType) { + if (this.transformationType === TransformationType.PLAIN_TO_CLASS) { + const exposeMetadata = defaultMetadataStorage.findExposeMetadataByCustomName(targetType, key); + if (exposeMetadata) { + propertyName = exposeMetadata.propertyName; + newValueKey = exposeMetadata.propertyName; + } + } + else if (this.transformationType === TransformationType.CLASS_TO_PLAIN || + this.transformationType === TransformationType.CLASS_TO_CLASS) { + const exposeMetadata = defaultMetadataStorage.findExposeMetadata(targetType, key); + if (exposeMetadata && exposeMetadata.options && exposeMetadata.options.name) { + newValueKey = exposeMetadata.options.name; + } + } + } + // get a subvalue + let subValue = undefined; + if (this.transformationType === TransformationType.PLAIN_TO_CLASS) { + /** + * This section is added for the following report: + * https://github.com/typestack/class-transformer/issues/596 + * + * We should not call functions or constructors when transforming to class. + */ + subValue = value[valueKey]; + } + else { + if (value instanceof Map) { + subValue = value.get(valueKey); + } + else if (value[valueKey] instanceof Function) { + subValue = value[valueKey](); + } + else { + subValue = value[valueKey]; + } + } + // determine a type + let type = undefined, isSubValueMap = subValue instanceof Map; + if (targetType && isMap) { + type = targetType; + } + else if (targetType) { + const metadata = defaultMetadataStorage.findTypeMetadata(targetType, propertyName); + if (metadata) { + const options = { newObject: newValue, object: value, property: propertyName }; + const newType = metadata.typeFunction ? metadata.typeFunction(options) : metadata.reflectedType; + if (metadata.options && + metadata.options.discriminator && + metadata.options.discriminator.property && + metadata.options.discriminator.subTypes) { + if (!(value[valueKey] instanceof Array)) { + if (this.transformationType === TransformationType.PLAIN_TO_CLASS) { + type = metadata.options.discriminator.subTypes.find(subType => { + if (subValue && subValue instanceof Object && metadata.options.discriminator.property in subValue) { + return subType.name === subValue[metadata.options.discriminator.property]; + } + }); + type === undefined ? (type = newType) : (type = type.value); + if (!metadata.options.keepDiscriminatorProperty) { + if (subValue && subValue instanceof Object && metadata.options.discriminator.property in subValue) { + delete subValue[metadata.options.discriminator.property]; + } + } + } + if (this.transformationType === TransformationType.CLASS_TO_CLASS) { + type = subValue.constructor; + } + if (this.transformationType === TransformationType.CLASS_TO_PLAIN) { + if (subValue) { + subValue[metadata.options.discriminator.property] = metadata.options.discriminator.subTypes.find(subType => subType.value === subValue.constructor).name; + } + } + } + else { + type = metadata; + } + } + else { + type = newType; + } + isSubValueMap = isSubValueMap || metadata.reflectedType === Map; + } + else if (this.options.targetMaps) { + // try to find a type in target maps + this.options.targetMaps + .filter(map => map.target === targetType && !!map.properties[propertyName]) + .forEach(map => (type = map.properties[propertyName])); + } + else if (this.options.enableImplicitConversion && + this.transformationType === TransformationType.PLAIN_TO_CLASS) { + // if we have no registererd type via the @Type() decorator then we check if we have any + // type declarations in reflect-metadata (type declaration is emited only if some decorator is added to the property.) + const reflectedType = Reflect.getMetadata('design:type', targetType.prototype, propertyName); + if (reflectedType) { + type = reflectedType; + } + } + } + // if value is an array try to get its custom array type + const arrayType = Array.isArray(value[valueKey]) + ? this.getReflectedType(targetType, propertyName) + : undefined; + // const subValueKey = TransformationType === TransformationType.PLAIN_TO_CLASS && newKeyName ? newKeyName : key; + const subSource = source ? source[valueKey] : undefined; + // if its deserialization then type if required + // if we uncomment this types like string[] will not work + // if (this.transformationType === TransformationType.PLAIN_TO_CLASS && !type && subValue instanceof Object && !(subValue instanceof Date)) + // throw new Error(`Cannot determine type for ${(targetType as any).name }.${propertyName}, did you forget to specify a @Type?`); + // if newValue is a source object that has method that match newKeyName then skip it + if (newValue.constructor.prototype) { + const descriptor = Object.getOwnPropertyDescriptor(newValue.constructor.prototype, newValueKey); + if ((this.transformationType === TransformationType.PLAIN_TO_CLASS || + this.transformationType === TransformationType.CLASS_TO_CLASS) && + // eslint-disable-next-line @typescript-eslint/unbound-method + ((descriptor && !descriptor.set) || newValue[newValueKey] instanceof Function)) + // || TransformationType === TransformationType.CLASS_TO_CLASS + continue; + } + if (!this.options.enableCircularCheck || !this.isCircular(subValue)) { + const transformKey = this.transformationType === TransformationType.PLAIN_TO_CLASS ? newValueKey : key; + let finalValue; + if (this.transformationType === TransformationType.CLASS_TO_PLAIN) { + // Get original value + finalValue = value[transformKey]; + // Apply custom transformation + finalValue = this.applyCustomTransformations(finalValue, targetType, transformKey, value, this.transformationType); + // If nothing change, it means no custom transformation was applied, so use the subValue. + finalValue = value[transformKey] === finalValue ? subValue : finalValue; + // Apply the default transformation + finalValue = this.transform(subSource, finalValue, type, arrayType, isSubValueMap, level + 1); + } + else { + if (subValue === undefined && this.options.exposeDefaultValues) { + // Set default value if nothing provided + finalValue = newValue[newValueKey]; + } + else { + finalValue = this.transform(subSource, subValue, type, arrayType, isSubValueMap, level + 1); + finalValue = this.applyCustomTransformations(finalValue, targetType, transformKey, value, this.transformationType); + } + } + if (finalValue !== undefined || this.options.exposeUnsetFields) { + if (newValue instanceof Map) { + newValue.set(newValueKey, finalValue); + } + else { + newValue[newValueKey] = finalValue; + } + } + } + else if (this.transformationType === TransformationType.CLASS_TO_CLASS) { + let finalValue = subValue; + finalValue = this.applyCustomTransformations(finalValue, targetType, key, value, this.transformationType); + if (finalValue !== undefined || this.options.exposeUnsetFields) { + if (newValue instanceof Map) { + newValue.set(newValueKey, finalValue); + } + else { + newValue[newValueKey] = finalValue; + } + } + } + } + if (this.options.enableCircularCheck) { + this.recursionStack.delete(value); + } + return newValue; + } + else { + return value; + } + } + applyCustomTransformations(value, target, key, obj, transformationType) { + let metadatas = defaultMetadataStorage.findTransformMetadatas(target, key, this.transformationType); + // apply versioning options + if (this.options.version !== undefined) { + metadatas = metadatas.filter(metadata => { + if (!metadata.options) + return true; + return this.checkVersion(metadata.options.since, metadata.options.until); + }); + } + // apply grouping options + if (this.options.groups && this.options.groups.length) { + metadatas = metadatas.filter(metadata => { + if (!metadata.options) + return true; + return this.checkGroups(metadata.options.groups); + }); + } + else { + metadatas = metadatas.filter(metadata => { + return !metadata.options || !metadata.options.groups || !metadata.options.groups.length; + }); + } + metadatas.forEach(metadata => { + value = metadata.transformFn({ value, key, obj, type: transformationType, options: this.options }); + }); + return value; + } + // preventing circular references + isCircular(object) { + return this.recursionStack.has(object); + } + getReflectedType(target, propertyName) { + if (!target) + return undefined; + const meta = defaultMetadataStorage.findTypeMetadata(target, propertyName); + return meta ? meta.reflectedType : undefined; + } + getKeys(target, object, isMap) { + // determine exclusion strategy + let strategy = defaultMetadataStorage.getStrategy(target); + if (strategy === 'none') + strategy = this.options.strategy || 'exposeAll'; // exposeAll is default strategy + // get all keys that need to expose + let keys = []; + if (strategy === 'exposeAll' || isMap) { + if (object instanceof Map) { + keys = Array.from(object.keys()); + } + else { + keys = Object.keys(object); + } + } + if (isMap) { + // expose & exclude do not apply for map keys only to fields + return keys; + } + /** + * If decorators are ignored but we don't want the extraneous values, then we use the + * metadata to decide which property is needed, but doesn't apply the decorator effect. + */ + if (this.options.ignoreDecorators && this.options.excludeExtraneousValues && target) { + const exposedProperties = defaultMetadataStorage.getExposedProperties(target, this.transformationType); + const excludedProperties = defaultMetadataStorage.getExcludedProperties(target, this.transformationType); + keys = [...exposedProperties, ...excludedProperties]; + } + if (!this.options.ignoreDecorators && target) { + // add all exposed to list of keys + let exposedProperties = defaultMetadataStorage.getExposedProperties(target, this.transformationType); + if (this.transformationType === TransformationType.PLAIN_TO_CLASS) { + exposedProperties = exposedProperties.map(key => { + const exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key); + if (exposeMetadata && exposeMetadata.options && exposeMetadata.options.name) { + return exposeMetadata.options.name; + } + return key; + }); + } + if (this.options.excludeExtraneousValues) { + keys = exposedProperties; + } + else { + keys = keys.concat(exposedProperties); + } + // exclude excluded properties + const excludedProperties = defaultMetadataStorage.getExcludedProperties(target, this.transformationType); + if (excludedProperties.length > 0) { + keys = keys.filter(key => { + return !excludedProperties.includes(key); + }); + } + // apply versioning options + if (this.options.version !== undefined) { + keys = keys.filter(key => { + const exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key); + if (!exposeMetadata || !exposeMetadata.options) + return true; + return this.checkVersion(exposeMetadata.options.since, exposeMetadata.options.until); + }); + } + // apply grouping options + if (this.options.groups && this.options.groups.length) { + keys = keys.filter(key => { + const exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key); + if (!exposeMetadata || !exposeMetadata.options) + return true; + return this.checkGroups(exposeMetadata.options.groups); + }); + } + else { + keys = keys.filter(key => { + const exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key); + return (!exposeMetadata || + !exposeMetadata.options || + !exposeMetadata.options.groups || + !exposeMetadata.options.groups.length); + }); + } + } + // exclude prefixed properties + if (this.options.excludePrefixes && this.options.excludePrefixes.length) { + keys = keys.filter(key => this.options.excludePrefixes.every(prefix => { + return key.substr(0, prefix.length) !== prefix; + })); + } + // make sure we have unique keys + keys = keys.filter((key, index, self) => { + return self.indexOf(key) === index; + }); + return keys; + } + checkVersion(since, until) { + let decision = true; + if (decision && since) + decision = this.options.version >= since; + if (decision && until) + decision = this.options.version < until; + return decision; + } + checkGroups(groups) { + if (!groups) + return true; + return this.options.groups.some(optionGroup => groups.includes(optionGroup)); + } +} +//# sourceMappingURL=TransformOperationExecutor.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/TransformOperationExecutor.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/TransformOperationExecutor.js.map new file mode 100644 index 00000000..488455e0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/TransformOperationExecutor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"TransformOperationExecutor.js","sourceRoot":"","sources":["../../src/TransformOperationExecutor.ts"],"names":[],"mappings":"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","sourcesContent":["import { defaultMetadataStorage } from './storage';\nimport { ClassTransformOptions, TypeHelpOptions, TypeMetadata, TypeOptions } from './interfaces';\nimport { TransformationType } from './enums';\nimport { getGlobal, isPromise } from './utils';\n\nfunction instantiateArrayType(arrayType: Function): Array | Set {\n const array = new (arrayType as any)();\n if (!(array instanceof Set) && !('push' in array)) {\n return [];\n }\n return array;\n}\n\nexport class TransformOperationExecutor {\n // -------------------------------------------------------------------------\n // Private Properties\n // -------------------------------------------------------------------------\n\n private recursionStack = new Set>();\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private transformationType: TransformationType, private options: ClassTransformOptions) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n transform(\n source: Record | Record[] | any,\n value: Record | Record[] | any,\n targetType: Function | TypeMetadata,\n arrayType: Function,\n isMap: boolean,\n level: number = 0\n ): any {\n if (Array.isArray(value) || value instanceof Set) {\n const newValue =\n arrayType && this.transformationType === TransformationType.PLAIN_TO_CLASS\n ? instantiateArrayType(arrayType)\n : [];\n (value as any[]).forEach((subValue, index) => {\n const subSource = source ? source[index] : undefined;\n if (!this.options.enableCircularCheck || !this.isCircular(subValue)) {\n let realTargetType;\n if (\n typeof targetType !== 'function' &&\n targetType &&\n targetType.options &&\n targetType.options.discriminator &&\n targetType.options.discriminator.property &&\n targetType.options.discriminator.subTypes\n ) {\n if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n realTargetType = targetType.options.discriminator.subTypes.find(\n subType =>\n subType.name === subValue[(targetType as { options: TypeOptions }).options.discriminator.property]\n );\n const options: TypeHelpOptions = { newObject: newValue, object: subValue, property: undefined };\n const newType = targetType.typeFunction(options);\n realTargetType === undefined ? (realTargetType = newType) : (realTargetType = realTargetType.value);\n if (!targetType.options.keepDiscriminatorProperty)\n delete subValue[targetType.options.discriminator.property];\n }\n\n if (this.transformationType === TransformationType.CLASS_TO_CLASS) {\n realTargetType = subValue.constructor;\n }\n if (this.transformationType === TransformationType.CLASS_TO_PLAIN) {\n subValue[targetType.options.discriminator.property] = targetType.options.discriminator.subTypes.find(\n subType => subType.value === subValue.constructor\n ).name;\n }\n } else {\n realTargetType = targetType;\n }\n const value = this.transform(\n subSource,\n subValue,\n realTargetType,\n undefined,\n subValue instanceof Map,\n level + 1\n );\n\n if (newValue instanceof Set) {\n newValue.add(value);\n } else {\n newValue.push(value);\n }\n } else if (this.transformationType === TransformationType.CLASS_TO_CLASS) {\n if (newValue instanceof Set) {\n newValue.add(subValue);\n } else {\n newValue.push(subValue);\n }\n }\n });\n return newValue;\n } else if (targetType === String && !isMap) {\n if (value === null || value === undefined) return value;\n return String(value);\n } else if (targetType === Number && !isMap) {\n if (value === null || value === undefined) return value;\n return Number(value);\n } else if (targetType === Boolean && !isMap) {\n if (value === null || value === undefined) return value;\n return Boolean(value);\n } else if ((targetType === Date || value instanceof Date) && !isMap) {\n if (value instanceof Date) {\n return new Date(value.valueOf());\n }\n if (value === null || value === undefined) return value;\n return new Date(value);\n } else if (!!getGlobal().Buffer && (targetType === Buffer || value instanceof Buffer) && !isMap) {\n if (value === null || value === undefined) return value;\n return Buffer.from(value);\n } else if (isPromise(value) && !isMap) {\n return new Promise((resolve, reject) => {\n value.then(\n (data: any) => resolve(this.transform(undefined, data, targetType, undefined, undefined, level + 1)),\n reject\n );\n });\n } else if (!isMap && value !== null && typeof value === 'object' && typeof value.then === 'function') {\n // Note: We should not enter this, as promise has been handled above\n // This option simply returns the Promise preventing a JS error from happening and should be an inaccessible path.\n return value; // skip promise transformation\n } else if (typeof value === 'object' && value !== null) {\n // try to guess the type\n if (!targetType && value.constructor !== Object /* && TransformationType === TransformationType.CLASS_TO_PLAIN*/)\n if (!Array.isArray(value) && value.constructor === Array) {\n // Somebody attempts to convert special Array like object to Array, eg:\n // const evilObject = { '100000000': '100000000', __proto__: [] };\n // This could be used to cause Denial-of-service attack so we don't allow it.\n // See prevent-array-bomb.spec.ts for more details.\n } else {\n // We are good we can use the built-in constructor\n targetType = value.constructor;\n }\n if (!targetType && source) targetType = source.constructor;\n\n if (this.options.enableCircularCheck) {\n // add transformed type to prevent circular references\n this.recursionStack.add(value);\n }\n\n const keys = this.getKeys(targetType as Function, value, isMap);\n let newValue: any = source ? source : {};\n if (\n !source &&\n (this.transformationType === TransformationType.PLAIN_TO_CLASS ||\n this.transformationType === TransformationType.CLASS_TO_CLASS)\n ) {\n if (isMap) {\n newValue = new Map();\n } else if (targetType) {\n newValue = new (targetType as any)();\n } else {\n newValue = {};\n }\n }\n\n // traverse over keys\n for (const key of keys) {\n if (key === '__proto__' || key === 'constructor') {\n continue;\n }\n\n const valueKey = key;\n let newValueKey = key,\n propertyName = key;\n if (!this.options.ignoreDecorators && targetType) {\n if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadataByCustomName(targetType as Function, key);\n if (exposeMetadata) {\n propertyName = exposeMetadata.propertyName;\n newValueKey = exposeMetadata.propertyName;\n }\n } else if (\n this.transformationType === TransformationType.CLASS_TO_PLAIN ||\n this.transformationType === TransformationType.CLASS_TO_CLASS\n ) {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadata(targetType as Function, key);\n if (exposeMetadata && exposeMetadata.options && exposeMetadata.options.name) {\n newValueKey = exposeMetadata.options.name;\n }\n }\n }\n\n // get a subvalue\n let subValue: any = undefined;\n if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n /**\n * This section is added for the following report:\n * https://github.com/typestack/class-transformer/issues/596\n *\n * We should not call functions or constructors when transforming to class.\n */\n subValue = value[valueKey];\n } else {\n if (value instanceof Map) {\n subValue = value.get(valueKey);\n } else if (value[valueKey] instanceof Function) {\n subValue = value[valueKey]();\n } else {\n subValue = value[valueKey];\n }\n }\n\n // determine a type\n let type: any = undefined,\n isSubValueMap = subValue instanceof Map;\n if (targetType && isMap) {\n type = targetType;\n } else if (targetType) {\n const metadata = defaultMetadataStorage.findTypeMetadata(targetType as Function, propertyName);\n if (metadata) {\n const options: TypeHelpOptions = { newObject: newValue, object: value, property: propertyName };\n const newType = metadata.typeFunction ? metadata.typeFunction(options) : metadata.reflectedType;\n if (\n metadata.options &&\n metadata.options.discriminator &&\n metadata.options.discriminator.property &&\n metadata.options.discriminator.subTypes\n ) {\n if (!(value[valueKey] instanceof Array)) {\n if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n type = metadata.options.discriminator.subTypes.find(subType => {\n if (subValue && subValue instanceof Object && metadata.options.discriminator.property in subValue) {\n return subType.name === subValue[metadata.options.discriminator.property];\n }\n });\n type === undefined ? (type = newType) : (type = type.value);\n if (!metadata.options.keepDiscriminatorProperty) {\n if (subValue && subValue instanceof Object && metadata.options.discriminator.property in subValue) {\n delete subValue[metadata.options.discriminator.property];\n }\n }\n }\n if (this.transformationType === TransformationType.CLASS_TO_CLASS) {\n type = subValue.constructor;\n }\n if (this.transformationType === TransformationType.CLASS_TO_PLAIN) {\n if (subValue) {\n subValue[metadata.options.discriminator.property] = metadata.options.discriminator.subTypes.find(\n subType => subType.value === subValue.constructor\n ).name;\n }\n }\n } else {\n type = metadata;\n }\n } else {\n type = newType;\n }\n isSubValueMap = isSubValueMap || metadata.reflectedType === Map;\n } else if (this.options.targetMaps) {\n // try to find a type in target maps\n this.options.targetMaps\n .filter(map => map.target === targetType && !!map.properties[propertyName])\n .forEach(map => (type = map.properties[propertyName]));\n } else if (\n this.options.enableImplicitConversion &&\n this.transformationType === TransformationType.PLAIN_TO_CLASS\n ) {\n // if we have no registererd type via the @Type() decorator then we check if we have any\n // type declarations in reflect-metadata (type declaration is emited only if some decorator is added to the property.)\n const reflectedType = (Reflect as any).getMetadata(\n 'design:type',\n (targetType as Function).prototype,\n propertyName\n );\n\n if (reflectedType) {\n type = reflectedType;\n }\n }\n }\n\n // if value is an array try to get its custom array type\n const arrayType = Array.isArray(value[valueKey])\n ? this.getReflectedType(targetType as Function, propertyName)\n : undefined;\n\n // const subValueKey = TransformationType === TransformationType.PLAIN_TO_CLASS && newKeyName ? newKeyName : key;\n const subSource = source ? source[valueKey] : undefined;\n\n // if its deserialization then type if required\n // if we uncomment this types like string[] will not work\n // if (this.transformationType === TransformationType.PLAIN_TO_CLASS && !type && subValue instanceof Object && !(subValue instanceof Date))\n // throw new Error(`Cannot determine type for ${(targetType as any).name }.${propertyName}, did you forget to specify a @Type?`);\n\n // if newValue is a source object that has method that match newKeyName then skip it\n if (newValue.constructor.prototype) {\n const descriptor = Object.getOwnPropertyDescriptor(newValue.constructor.prototype, newValueKey);\n if (\n (this.transformationType === TransformationType.PLAIN_TO_CLASS ||\n this.transformationType === TransformationType.CLASS_TO_CLASS) &&\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ((descriptor && !descriptor.set) || newValue[newValueKey] instanceof Function)\n )\n // || TransformationType === TransformationType.CLASS_TO_CLASS\n continue;\n }\n\n if (!this.options.enableCircularCheck || !this.isCircular(subValue)) {\n const transformKey = this.transformationType === TransformationType.PLAIN_TO_CLASS ? newValueKey : key;\n let finalValue;\n\n if (this.transformationType === TransformationType.CLASS_TO_PLAIN) {\n // Get original value\n finalValue = value[transformKey];\n // Apply custom transformation\n finalValue = this.applyCustomTransformations(\n finalValue,\n targetType as Function,\n transformKey,\n value,\n this.transformationType\n );\n // If nothing change, it means no custom transformation was applied, so use the subValue.\n finalValue = value[transformKey] === finalValue ? subValue : finalValue;\n // Apply the default transformation\n finalValue = this.transform(subSource, finalValue, type, arrayType, isSubValueMap, level + 1);\n } else {\n if (subValue === undefined && this.options.exposeDefaultValues) {\n // Set default value if nothing provided\n finalValue = newValue[newValueKey];\n } else {\n finalValue = this.transform(subSource, subValue, type, arrayType, isSubValueMap, level + 1);\n finalValue = this.applyCustomTransformations(\n finalValue,\n targetType as Function,\n transformKey,\n value,\n this.transformationType\n );\n }\n }\n\n if (finalValue !== undefined || this.options.exposeUnsetFields) {\n if (newValue instanceof Map) {\n newValue.set(newValueKey, finalValue);\n } else {\n newValue[newValueKey] = finalValue;\n }\n }\n } else if (this.transformationType === TransformationType.CLASS_TO_CLASS) {\n let finalValue = subValue;\n finalValue = this.applyCustomTransformations(\n finalValue,\n targetType as Function,\n key,\n value,\n this.transformationType\n );\n if (finalValue !== undefined || this.options.exposeUnsetFields) {\n if (newValue instanceof Map) {\n newValue.set(newValueKey, finalValue);\n } else {\n newValue[newValueKey] = finalValue;\n }\n }\n }\n }\n\n if (this.options.enableCircularCheck) {\n this.recursionStack.delete(value);\n }\n\n return newValue;\n } else {\n return value;\n }\n }\n\n private applyCustomTransformations(\n value: any,\n target: Function,\n key: string,\n obj: any,\n transformationType: TransformationType\n ): boolean {\n let metadatas = defaultMetadataStorage.findTransformMetadatas(target, key, this.transformationType);\n\n // apply versioning options\n if (this.options.version !== undefined) {\n metadatas = metadatas.filter(metadata => {\n if (!metadata.options) return true;\n\n return this.checkVersion(metadata.options.since, metadata.options.until);\n });\n }\n\n // apply grouping options\n if (this.options.groups && this.options.groups.length) {\n metadatas = metadatas.filter(metadata => {\n if (!metadata.options) return true;\n\n return this.checkGroups(metadata.options.groups);\n });\n } else {\n metadatas = metadatas.filter(metadata => {\n return !metadata.options || !metadata.options.groups || !metadata.options.groups.length;\n });\n }\n\n metadatas.forEach(metadata => {\n value = metadata.transformFn({ value, key, obj, type: transformationType, options: this.options });\n });\n\n return value;\n }\n\n // preventing circular references\n private isCircular(object: Record): boolean {\n return this.recursionStack.has(object);\n }\n\n private getReflectedType(target: Function, propertyName: string): Function | undefined {\n if (!target) return undefined;\n const meta = defaultMetadataStorage.findTypeMetadata(target, propertyName);\n return meta ? meta.reflectedType : undefined;\n }\n\n private getKeys(target: Function, object: Record, isMap: boolean): string[] {\n // determine exclusion strategy\n let strategy = defaultMetadataStorage.getStrategy(target);\n if (strategy === 'none') strategy = this.options.strategy || 'exposeAll'; // exposeAll is default strategy\n\n // get all keys that need to expose\n let keys: any[] = [];\n if (strategy === 'exposeAll' || isMap) {\n if (object instanceof Map) {\n keys = Array.from(object.keys());\n } else {\n keys = Object.keys(object);\n }\n }\n\n if (isMap) {\n // expose & exclude do not apply for map keys only to fields\n return keys;\n }\n\n /**\n * If decorators are ignored but we don't want the extraneous values, then we use the\n * metadata to decide which property is needed, but doesn't apply the decorator effect.\n */\n if (this.options.ignoreDecorators && this.options.excludeExtraneousValues && target) {\n const exposedProperties = defaultMetadataStorage.getExposedProperties(target, this.transformationType);\n const excludedProperties = defaultMetadataStorage.getExcludedProperties(target, this.transformationType);\n keys = [...exposedProperties, ...excludedProperties];\n }\n\n if (!this.options.ignoreDecorators && target) {\n // add all exposed to list of keys\n let exposedProperties = defaultMetadataStorage.getExposedProperties(target, this.transformationType);\n if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n exposedProperties = exposedProperties.map(key => {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n if (exposeMetadata && exposeMetadata.options && exposeMetadata.options.name) {\n return exposeMetadata.options.name;\n }\n\n return key;\n });\n }\n if (this.options.excludeExtraneousValues) {\n keys = exposedProperties;\n } else {\n keys = keys.concat(exposedProperties);\n }\n\n // exclude excluded properties\n const excludedProperties = defaultMetadataStorage.getExcludedProperties(target, this.transformationType);\n if (excludedProperties.length > 0) {\n keys = keys.filter(key => {\n return !excludedProperties.includes(key);\n });\n }\n\n // apply versioning options\n if (this.options.version !== undefined) {\n keys = keys.filter(key => {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n if (!exposeMetadata || !exposeMetadata.options) return true;\n\n return this.checkVersion(exposeMetadata.options.since, exposeMetadata.options.until);\n });\n }\n\n // apply grouping options\n if (this.options.groups && this.options.groups.length) {\n keys = keys.filter(key => {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n if (!exposeMetadata || !exposeMetadata.options) return true;\n\n return this.checkGroups(exposeMetadata.options.groups);\n });\n } else {\n keys = keys.filter(key => {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n return (\n !exposeMetadata ||\n !exposeMetadata.options ||\n !exposeMetadata.options.groups ||\n !exposeMetadata.options.groups.length\n );\n });\n }\n }\n\n // exclude prefixed properties\n if (this.options.excludePrefixes && this.options.excludePrefixes.length) {\n keys = keys.filter(key =>\n this.options.excludePrefixes.every(prefix => {\n return key.substr(0, prefix.length) !== prefix;\n })\n );\n }\n\n // make sure we have unique keys\n keys = keys.filter((key, index, self) => {\n return self.indexOf(key) === index;\n });\n\n return keys;\n }\n\n private checkVersion(since: number, until: number): boolean {\n let decision = true;\n if (decision && since) decision = this.options.version >= since;\n if (decision && until) decision = this.options.version < until;\n\n return decision;\n }\n\n private checkGroups(groups: string[]): boolean {\n if (!groups) return true;\n\n return this.options.groups.some(optionGroup => groups.includes(optionGroup));\n }\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/constants/default-options.constant.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/constants/default-options.constant.js new file mode 100644 index 00000000..419c9d77 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/constants/default-options.constant.js @@ -0,0 +1,17 @@ +/** + * These are the default options used by any transformation operation. + */ +export const defaultOptions = { + enableCircularCheck: false, + enableImplicitConversion: false, + excludeExtraneousValues: false, + excludePrefixes: undefined, + exposeDefaultValues: false, + exposeUnsetFields: true, + groups: undefined, + ignoreDecorators: false, + strategy: undefined, + targetMaps: undefined, + version: undefined, +}; +//# sourceMappingURL=default-options.constant.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/constants/default-options.constant.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/constants/default-options.constant.js.map new file mode 100644 index 00000000..dba3c7f2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/constants/default-options.constant.js.map @@ -0,0 +1 @@ +{"version":3,"file":"default-options.constant.js","sourceRoot":"","sources":["../../../src/constants/default-options.constant.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAmC;IAC5D,mBAAmB,EAAE,KAAK;IAC1B,wBAAwB,EAAE,KAAK;IAC/B,uBAAuB,EAAE,KAAK;IAC9B,eAAe,EAAE,SAAS;IAC1B,mBAAmB,EAAE,KAAK;IAC1B,iBAAiB,EAAE,IAAI;IACvB,MAAM,EAAE,SAAS;IACjB,gBAAgB,EAAE,KAAK;IACvB,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,SAAS;IACrB,OAAO,EAAE,SAAS;CACnB,CAAC","sourcesContent":["import { ClassTransformOptions } from '../interfaces/class-transformer-options.interface';\n\n/**\n * These are the default options used by any transformation operation.\n */\nexport const defaultOptions: Partial = {\n enableCircularCheck: false,\n enableImplicitConversion: false,\n excludeExtraneousValues: false,\n excludePrefixes: undefined,\n exposeDefaultValues: false,\n exposeUnsetFields: true,\n groups: undefined,\n ignoreDecorators: false,\n strategy: undefined,\n targetMaps: undefined,\n version: undefined,\n};\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/exclude.decorator.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/exclude.decorator.js new file mode 100644 index 00000000..9175de37 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/exclude.decorator.js @@ -0,0 +1,24 @@ +import { defaultMetadataStorage } from '../storage'; +/** + * Marks the given class or property as excluded. By default the property is excluded in both + * constructorToPlain and plainToConstructor transformations. It can be limited to only one direction + * via using the `toPlainOnly` or `toClassOnly` option. + * + * Can be applied to class definitions and properties. + */ +export function Exclude(options = {}) { + /** + * NOTE: The `propertyName` property must be marked as optional because + * this decorator used both as a class and a property decorator and the + * Typescript compiler will freak out if we make it mandatory as a class + * decorator only receives one parameter. + */ + return function (object, propertyName) { + defaultMetadataStorage.addExcludeMetadata({ + target: object instanceof Function ? object : object.constructor, + propertyName: propertyName, + options, + }); + }; +} +//# sourceMappingURL=exclude.decorator.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/exclude.decorator.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/exclude.decorator.js.map new file mode 100644 index 00000000..f6d5d459 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/exclude.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"exclude.decorator.js","sourceRoot":"","sources":["../../../src/decorators/exclude.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGpD;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAAC,UAA0B,EAAE;IAClD;;;;;OAKG;IACH,OAAO,UAAU,MAAW,EAAE,YAA8B;QAC1D,sBAAsB,CAAC,kBAAkB,CAAC;YACxC,MAAM,EAAE,MAAM,YAAY,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW;YAChE,YAAY,EAAE,YAAsB;YACpC,OAAO;SACR,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { defaultMetadataStorage } from '../storage';\nimport { ExcludeOptions } from '../interfaces';\n\n/**\n * Marks the given class or property as excluded. By default the property is excluded in both\n * constructorToPlain and plainToConstructor transformations. It can be limited to only one direction\n * via using the `toPlainOnly` or `toClassOnly` option.\n *\n * Can be applied to class definitions and properties.\n */\nexport function Exclude(options: ExcludeOptions = {}): PropertyDecorator & ClassDecorator {\n /**\n * NOTE: The `propertyName` property must be marked as optional because\n * this decorator used both as a class and a property decorator and the\n * Typescript compiler will freak out if we make it mandatory as a class\n * decorator only receives one parameter.\n */\n return function (object: any, propertyName?: string | Symbol): void {\n defaultMetadataStorage.addExcludeMetadata({\n target: object instanceof Function ? object : object.constructor,\n propertyName: propertyName as string,\n options,\n });\n };\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/expose.decorator.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/expose.decorator.js new file mode 100644 index 00000000..4b7e0ea5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/expose.decorator.js @@ -0,0 +1,24 @@ +import { defaultMetadataStorage } from '../storage'; +/** + * Marks the given class or property as included. By default the property is included in both + * constructorToPlain and plainToConstructor transformations. It can be limited to only one direction + * via using the `toPlainOnly` or `toClassOnly` option. + * + * Can be applied to class definitions and properties. + */ +export function Expose(options = {}) { + /** + * NOTE: The `propertyName` property must be marked as optional because + * this decorator used both as a class and a property decorator and the + * Typescript compiler will freak out if we make it mandatory as a class + * decorator only receives one parameter. + */ + return function (object, propertyName) { + defaultMetadataStorage.addExposeMetadata({ + target: object instanceof Function ? object : object.constructor, + propertyName: propertyName, + options, + }); + }; +} +//# sourceMappingURL=expose.decorator.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/expose.decorator.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/expose.decorator.js.map new file mode 100644 index 00000000..3d58be55 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/expose.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"expose.decorator.js","sourceRoot":"","sources":["../../../src/decorators/expose.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGpD;;;;;;GAMG;AACH,MAAM,UAAU,MAAM,CAAC,UAAyB,EAAE;IAChD;;;;;OAKG;IACH,OAAO,UAAU,MAAW,EAAE,YAA8B;QAC1D,sBAAsB,CAAC,iBAAiB,CAAC;YACvC,MAAM,EAAE,MAAM,YAAY,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW;YAChE,YAAY,EAAE,YAAsB;YACpC,OAAO;SACR,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { defaultMetadataStorage } from '../storage';\nimport { ExposeOptions } from '../interfaces';\n\n/**\n * Marks the given class or property as included. By default the property is included in both\n * constructorToPlain and plainToConstructor transformations. It can be limited to only one direction\n * via using the `toPlainOnly` or `toClassOnly` option.\n *\n * Can be applied to class definitions and properties.\n */\nexport function Expose(options: ExposeOptions = {}): PropertyDecorator & ClassDecorator {\n /**\n * NOTE: The `propertyName` property must be marked as optional because\n * this decorator used both as a class and a property decorator and the\n * Typescript compiler will freak out if we make it mandatory as a class\n * decorator only receives one parameter.\n */\n return function (object: any, propertyName?: string | Symbol): void {\n defaultMetadataStorage.addExposeMetadata({\n target: object instanceof Function ? object : object.constructor,\n propertyName: propertyName as string,\n options,\n });\n };\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/index.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/index.js new file mode 100644 index 00000000..300a364e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/index.js @@ -0,0 +1,8 @@ +export * from './exclude.decorator'; +export * from './expose.decorator'; +export * from './transform-instance-to-instance.decorator'; +export * from './transform-instance-to-plain.decorator'; +export * from './transform-plain-to-instance.decorator'; +export * from './transform.decorator'; +export * from './type.decorator'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/index.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/index.js.map new file mode 100644 index 00000000..16c9a115 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decorators/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4CAA4C,CAAC;AAC3D,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC","sourcesContent":["export * from './exclude.decorator';\nexport * from './expose.decorator';\nexport * from './transform-instance-to-instance.decorator';\nexport * from './transform-instance-to-plain.decorator';\nexport * from './transform-plain-to-instance.decorator';\nexport * from './transform.decorator';\nexport * from './type.decorator';\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform-instance-to-instance.decorator.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform-instance-to-instance.decorator.js new file mode 100644 index 00000000..fd92f3e5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform-instance-to-instance.decorator.js @@ -0,0 +1,20 @@ +import { ClassTransformer } from '../ClassTransformer'; +/** + * Return the class instance only with the exposed properties. + * + * Can be applied to functions and getters/setters only. + */ +export function TransformInstanceToInstance(params) { + return function (target, propertyKey, descriptor) { + const classTransformer = new ClassTransformer(); + const originalMethod = descriptor.value; + descriptor.value = function (...args) { + const result = originalMethod.apply(this, args); + const isPromise = !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function'; + return isPromise + ? result.then((data) => classTransformer.instanceToInstance(data, params)) + : classTransformer.instanceToInstance(result, params); + }; + }; +} +//# sourceMappingURL=transform-instance-to-instance.decorator.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform-instance-to-instance.decorator.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform-instance-to-instance.decorator.js.map new file mode 100644 index 00000000..f1f79a1e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform-instance-to-instance.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transform-instance-to-instance.decorator.js","sourceRoot":"","sources":["../../../src/decorators/transform-instance-to-instance.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAA8B;IACxE,OAAO,UAAU,MAA2B,EAAE,WAA4B,EAAE,UAA8B;QACxG,MAAM,gBAAgB,GAAqB,IAAI,gBAAgB,EAAE,CAAC;QAClE,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;QAExC,UAAU,CAAC,KAAK,GAAG,UAAU,GAAG,IAAW;YACzC,MAAM,MAAM,GAAQ,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACrD,MAAM,SAAS,GACb,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,UAAU,CAAC,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC;YAChH,OAAO,SAAS;gBACd,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC/E,CAAC,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1D,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { ClassTransformer } from '../ClassTransformer';\nimport { ClassTransformOptions } from '../interfaces';\n\n/**\n * Return the class instance only with the exposed properties.\n *\n * Can be applied to functions and getters/setters only.\n */\nexport function TransformInstanceToInstance(params?: ClassTransformOptions): MethodDecorator {\n return function (target: Record, propertyKey: string | Symbol, descriptor: PropertyDescriptor): void {\n const classTransformer: ClassTransformer = new ClassTransformer();\n const originalMethod = descriptor.value;\n\n descriptor.value = function (...args: any[]): Record {\n const result: any = originalMethod.apply(this, args);\n const isPromise =\n !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function';\n return isPromise\n ? result.then((data: any) => classTransformer.instanceToInstance(data, params))\n : classTransformer.instanceToInstance(result, params);\n };\n };\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform-instance-to-plain.decorator.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform-instance-to-plain.decorator.js new file mode 100644 index 00000000..f1bd00e4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform-instance-to-plain.decorator.js @@ -0,0 +1,20 @@ +import { ClassTransformer } from '../ClassTransformer'; +/** + * Transform the object from class to plain object and return only with the exposed properties. + * + * Can be applied to functions and getters/setters only. + */ +export function TransformInstanceToPlain(params) { + return function (target, propertyKey, descriptor) { + const classTransformer = new ClassTransformer(); + const originalMethod = descriptor.value; + descriptor.value = function (...args) { + const result = originalMethod.apply(this, args); + const isPromise = !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function'; + return isPromise + ? result.then((data) => classTransformer.instanceToPlain(data, params)) + : classTransformer.instanceToPlain(result, params); + }; + }; +} +//# sourceMappingURL=transform-instance-to-plain.decorator.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform-instance-to-plain.decorator.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform-instance-to-plain.decorator.js.map new file mode 100644 index 00000000..7ccaa146 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform-instance-to-plain.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transform-instance-to-plain.decorator.js","sourceRoot":"","sources":["../../../src/decorators/transform-instance-to-plain.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAA8B;IACrE,OAAO,UAAU,MAA2B,EAAE,WAA4B,EAAE,UAA8B;QACxG,MAAM,gBAAgB,GAAqB,IAAI,gBAAgB,EAAE,CAAC;QAClE,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;QAExC,UAAU,CAAC,KAAK,GAAG,UAAU,GAAG,IAAW;YACzC,MAAM,MAAM,GAAQ,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACrD,MAAM,SAAS,GACb,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,UAAU,CAAC,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC;YAChH,OAAO,SAAS;gBACd,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC5E,CAAC,CAAC,gBAAgB,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACvD,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { ClassTransformer } from '../ClassTransformer';\nimport { ClassTransformOptions } from '../interfaces';\n\n/**\n * Transform the object from class to plain object and return only with the exposed properties.\n *\n * Can be applied to functions and getters/setters only.\n */\nexport function TransformInstanceToPlain(params?: ClassTransformOptions): MethodDecorator {\n return function (target: Record, propertyKey: string | Symbol, descriptor: PropertyDescriptor): void {\n const classTransformer: ClassTransformer = new ClassTransformer();\n const originalMethod = descriptor.value;\n\n descriptor.value = function (...args: any[]): Record {\n const result: any = originalMethod.apply(this, args);\n const isPromise =\n !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function';\n return isPromise\n ? result.then((data: any) => classTransformer.instanceToPlain(data, params))\n : classTransformer.instanceToPlain(result, params);\n };\n };\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform-plain-to-instance.decorator.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform-plain-to-instance.decorator.js new file mode 100644 index 00000000..ca080483 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform-plain-to-instance.decorator.js @@ -0,0 +1,20 @@ +import { ClassTransformer } from '../ClassTransformer'; +/** + * Return the class instance only with the exposed properties. + * + * Can be applied to functions and getters/setters only. + */ +export function TransformPlainToInstance(classType, params) { + return function (target, propertyKey, descriptor) { + const classTransformer = new ClassTransformer(); + const originalMethod = descriptor.value; + descriptor.value = function (...args) { + const result = originalMethod.apply(this, args); + const isPromise = !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function'; + return isPromise + ? result.then((data) => classTransformer.plainToInstance(classType, data, params)) + : classTransformer.plainToInstance(classType, result, params); + }; + }; +} +//# sourceMappingURL=transform-plain-to-instance.decorator.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform-plain-to-instance.decorator.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform-plain-to-instance.decorator.js.map new file mode 100644 index 00000000..6a59dd38 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform-plain-to-instance.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transform-plain-to-instance.decorator.js","sourceRoot":"","sources":["../../../src/decorators/transform-plain-to-instance.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CACtC,SAAgC,EAChC,MAA8B;IAE9B,OAAO,UAAU,MAA2B,EAAE,WAA4B,EAAE,UAA8B;QACxG,MAAM,gBAAgB,GAAqB,IAAI,gBAAgB,EAAE,CAAC;QAClE,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;QAExC,UAAU,CAAC,KAAK,GAAG,UAAU,GAAG,IAAW;YACzC,MAAM,MAAM,GAAQ,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACrD,MAAM,SAAS,GACb,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,UAAU,CAAC,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC;YAChH,OAAO,SAAS;gBACd,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gBACvF,CAAC,CAAC,gBAAgB,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAClE,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { ClassTransformer } from '../ClassTransformer';\nimport { ClassTransformOptions, ClassConstructor } from '../interfaces';\n\n/**\n * Return the class instance only with the exposed properties.\n *\n * Can be applied to functions and getters/setters only.\n */\nexport function TransformPlainToInstance(\n classType: ClassConstructor,\n params?: ClassTransformOptions\n): MethodDecorator {\n return function (target: Record, propertyKey: string | Symbol, descriptor: PropertyDescriptor): void {\n const classTransformer: ClassTransformer = new ClassTransformer();\n const originalMethod = descriptor.value;\n\n descriptor.value = function (...args: any[]): Record {\n const result: any = originalMethod.apply(this, args);\n const isPromise =\n !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function';\n return isPromise\n ? result.then((data: any) => classTransformer.plainToInstance(classType, data, params))\n : classTransformer.plainToInstance(classType, result, params);\n };\n };\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform.decorator.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform.decorator.js new file mode 100644 index 00000000..411c8913 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform.decorator.js @@ -0,0 +1,17 @@ +import { defaultMetadataStorage } from '../storage'; +/** + * Defines a custom logic for value transformation. + * + * Can be applied to properties only. + */ +export function Transform(transformFn, options = {}) { + return function (target, propertyName) { + defaultMetadataStorage.addTransformMetadata({ + target: target.constructor, + propertyName: propertyName, + transformFn, + options, + }); + }; +} +//# sourceMappingURL=transform.decorator.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform.decorator.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform.decorator.js.map new file mode 100644 index 00000000..19cfa4b8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/transform.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transform.decorator.js","sourceRoot":"","sources":["../../../src/decorators/transform.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGpD;;;;GAIG;AACH,MAAM,UAAU,SAAS,CACvB,WAA+C,EAC/C,UAA4B,EAAE;IAE9B,OAAO,UAAU,MAAW,EAAE,YAA6B;QACzD,sBAAsB,CAAC,oBAAoB,CAAC;YAC1C,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAsB;YACpC,WAAW;YACX,OAAO;SACR,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { defaultMetadataStorage } from '../storage';\nimport { TransformFnParams, TransformOptions } from '../interfaces';\n\n/**\n * Defines a custom logic for value transformation.\n *\n * Can be applied to properties only.\n */\nexport function Transform(\n transformFn: (params: TransformFnParams) => any,\n options: TransformOptions = {}\n): PropertyDecorator {\n return function (target: any, propertyName: string | Symbol): void {\n defaultMetadataStorage.addTransformMetadata({\n target: target.constructor,\n propertyName: propertyName as string,\n transformFn,\n options,\n });\n };\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/type.decorator.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/type.decorator.js new file mode 100644 index 00000000..339f6dee --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/type.decorator.js @@ -0,0 +1,20 @@ +import { defaultMetadataStorage } from '../storage'; +/** + * Specifies a type of the property. + * The given TypeFunction can return a constructor. A discriminator can be given in the options. + * + * Can be applied to properties only. + */ +export function Type(typeFunction, options = {}) { + return function (target, propertyName) { + const reflectedType = Reflect.getMetadata('design:type', target, propertyName); + defaultMetadataStorage.addTypeMetadata({ + target: target.constructor, + propertyName: propertyName, + reflectedType, + typeFunction, + options, + }); + }; +} +//# sourceMappingURL=type.decorator.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/type.decorator.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/type.decorator.js.map new file mode 100644 index 00000000..ed12342c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/decorators/type.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"type.decorator.js","sourceRoot":"","sources":["../../../src/decorators/type.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGpD;;;;;GAKG;AACH,MAAM,UAAU,IAAI,CAClB,YAAmD,EACnD,UAAuB,EAAE;IAEzB,OAAO,UAAU,MAAW,EAAE,YAA6B;QACzD,MAAM,aAAa,GAAI,OAAe,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QACxF,sBAAsB,CAAC,eAAe,CAAC;YACrC,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAsB;YACpC,aAAa;YACb,YAAY;YACZ,OAAO;SACR,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { defaultMetadataStorage } from '../storage';\nimport { TypeHelpOptions, TypeOptions } from '../interfaces';\n\n/**\n * Specifies a type of the property.\n * The given TypeFunction can return a constructor. A discriminator can be given in the options.\n *\n * Can be applied to properties only.\n */\nexport function Type(\n typeFunction?: (type?: TypeHelpOptions) => Function,\n options: TypeOptions = {}\n): PropertyDecorator {\n return function (target: any, propertyName: string | Symbol): void {\n const reflectedType = (Reflect as any).getMetadata('design:type', target, propertyName);\n defaultMetadataStorage.addTypeMetadata({\n target: target.constructor,\n propertyName: propertyName as string,\n reflectedType,\n typeFunction,\n options,\n });\n };\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/enums/index.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/enums/index.js new file mode 100644 index 00000000..281d8c91 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/enums/index.js @@ -0,0 +1,2 @@ +export * from './transformation-type.enum'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/enums/index.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/enums/index.js.map new file mode 100644 index 00000000..19bdc25b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/enums/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/enums/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC","sourcesContent":["export * from './transformation-type.enum';\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/enums/transformation-type.enum.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/enums/transformation-type.enum.js new file mode 100644 index 00000000..fdef8bff --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/enums/transformation-type.enum.js @@ -0,0 +1,7 @@ +export var TransformationType; +(function (TransformationType) { + TransformationType[TransformationType["PLAIN_TO_CLASS"] = 0] = "PLAIN_TO_CLASS"; + TransformationType[TransformationType["CLASS_TO_PLAIN"] = 1] = "CLASS_TO_PLAIN"; + TransformationType[TransformationType["CLASS_TO_CLASS"] = 2] = "CLASS_TO_CLASS"; +})(TransformationType || (TransformationType = {})); +//# sourceMappingURL=transformation-type.enum.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/enums/transformation-type.enum.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/enums/transformation-type.enum.js.map new file mode 100644 index 00000000..d4da5bd8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/enums/transformation-type.enum.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transformation-type.enum.js","sourceRoot":"","sources":["../../../src/enums/transformation-type.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC5B,+EAAc,CAAA;IACd,+EAAc,CAAA;IACd,+EAAc,CAAA;AAChB,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,QAI7B","sourcesContent":["export enum TransformationType {\n PLAIN_TO_CLASS,\n CLASS_TO_PLAIN,\n CLASS_TO_CLASS,\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/index.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/index.js new file mode 100644 index 00000000..515bf973 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/index.js @@ -0,0 +1,57 @@ +import { ClassTransformer } from './ClassTransformer'; +export { ClassTransformer } from './ClassTransformer'; +export * from './decorators'; +export * from './interfaces'; +export * from './enums'; +const classTransformer = new ClassTransformer(); +export function classToPlain(object, options) { + return classTransformer.instanceToPlain(object, options); +} +export function instanceToPlain(object, options) { + return classTransformer.instanceToPlain(object, options); +} +export function classToPlainFromExist(object, plainObject, options) { + return classTransformer.classToPlainFromExist(object, plainObject, options); +} +export function plainToClass(cls, plain, options) { + return classTransformer.plainToInstance(cls, plain, options); +} +export function plainToInstance(cls, plain, options) { + return classTransformer.plainToInstance(cls, plain, options); +} +export function plainToClassFromExist(clsObject, plain, options) { + return classTransformer.plainToClassFromExist(clsObject, plain, options); +} +export function instanceToInstance(object, options) { + return classTransformer.instanceToInstance(object, options); +} +export function classToClassFromExist(object, fromObject, options) { + return classTransformer.classToClassFromExist(object, fromObject, options); +} +export function serialize(object, options) { + return classTransformer.serialize(object, options); +} +/** + * Deserializes given JSON string to a object of the given class. + * + * @deprecated This function is being removed. Please use the following instead: + * ``` + * instanceToClass(cls, JSON.parse(json), options) + * ``` + */ +export function deserialize(cls, json, options) { + return classTransformer.deserialize(cls, json, options); +} +/** + * Deserializes given JSON string to an array of objects of the given class. + * + * @deprecated This function is being removed. Please use the following instead: + * ``` + * JSON.parse(json).map(value => instanceToClass(cls, value, options)) + * ``` + * + */ +export function deserializeArray(cls, json, options) { + return classTransformer.deserializeArray(cls, json, options); +} +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/index.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/index.js.map new file mode 100644 index 00000000..6d8719e2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAItD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AAExB,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;AAShD,MAAM,UAAU,YAAY,CAC1B,MAAe,EACf,OAA+B;IAE/B,OAAO,gBAAgB,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC;AAOD,MAAM,UAAU,eAAe,CAC7B,MAAe,EACf,OAA+B;IAE/B,OAAO,gBAAgB,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC;AAmBD,MAAM,UAAU,qBAAqB,CACnC,MAAS,EACT,WAAwD,EACxD,OAA+B;IAE/B,OAAO,gBAAgB,CAAC,qBAAqB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AAC9E,CAAC;AASD,MAAM,UAAU,YAAY,CAAO,GAAwB,EAAE,KAAc,EAAE,OAA+B;IAC1G,OAAO,gBAAgB,CAAC,eAAe,CAAC,GAAG,EAAE,KAAY,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAOD,MAAM,UAAU,eAAe,CAC7B,GAAwB,EACxB,KAAc,EACd,OAA+B;IAE/B,OAAO,gBAAgB,CAAC,eAAe,CAAC,GAAG,EAAE,KAAY,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAWD,MAAM,UAAU,qBAAqB,CAAO,SAAY,EAAE,KAAc,EAAE,OAA+B;IACvG,OAAO,gBAAgB,CAAC,qBAAqB,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAC3E,CAAC;AAOD,MAAM,UAAU,kBAAkB,CAAI,MAAe,EAAE,OAA+B;IACpF,OAAO,gBAAgB,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AAWD,MAAM,UAAU,qBAAqB,CAAI,MAAS,EAAE,UAAmB,EAAE,OAA+B;IACtG,OAAO,gBAAgB,CAAC,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAC7E,CAAC;AAYD,MAAM,UAAU,SAAS,CAAI,MAAe,EAAE,OAA+B;IAC3E,OAAO,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAI,GAAwB,EAAE,IAAY,EAAE,OAA+B;IACpG,OAAO,gBAAgB,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAI,GAAwB,EAAE,IAAY,EAAE,OAA+B;IACzG,OAAO,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/D,CAAC","sourcesContent":["import { ClassTransformer } from './ClassTransformer';\nimport { ClassTransformOptions } from './interfaces';\nimport { ClassConstructor } from './interfaces';\n\nexport { ClassTransformer } from './ClassTransformer';\nexport * from './decorators';\nexport * from './interfaces';\nexport * from './enums';\n\nconst classTransformer = new ClassTransformer();\n\n/**\n * Converts class (constructor) object to plain (literal) object. Also works with arrays.\n *\n * @deprecated Function name changed, use the `instanceToPlain` method instead.\n */\nexport function classToPlain(object: T, options?: ClassTransformOptions): Record;\nexport function classToPlain(object: T[], options?: ClassTransformOptions): Record[];\nexport function classToPlain(\n object: T | T[],\n options?: ClassTransformOptions\n): Record | Record[] {\n return classTransformer.instanceToPlain(object, options);\n}\n\n/**\n * Converts class (constructor) object to plain (literal) object. Also works with arrays.\n */\nexport function instanceToPlain(object: T, options?: ClassTransformOptions): Record;\nexport function instanceToPlain(object: T[], options?: ClassTransformOptions): Record[];\nexport function instanceToPlain(\n object: T | T[],\n options?: ClassTransformOptions\n): Record | Record[] {\n return classTransformer.instanceToPlain(object, options);\n}\n\n/**\n * Converts class (constructor) object to plain (literal) object.\n * Uses given plain object as source object (it means fills given plain object with data from class object).\n * Also works with arrays.\n *\n * @deprecated This function is being removed.\n */\nexport function classToPlainFromExist(\n object: T,\n plainObject: Record,\n options?: ClassTransformOptions\n): Record;\nexport function classToPlainFromExist(\n object: T,\n plainObjects: Record[],\n options?: ClassTransformOptions\n): Record[];\nexport function classToPlainFromExist(\n object: T,\n plainObject: Record | Record[],\n options?: ClassTransformOptions\n): Record | Record[] {\n return classTransformer.classToPlainFromExist(object, plainObject, options);\n}\n\n/**\n * Converts plain (literal) object to class (constructor) object. Also works with arrays.\n *\n * @deprecated Function name changed, use the `plainToInstance` method instead.\n */\nexport function plainToClass(cls: ClassConstructor, plain: V[], options?: ClassTransformOptions): T[];\nexport function plainToClass(cls: ClassConstructor, plain: V, options?: ClassTransformOptions): T;\nexport function plainToClass(cls: ClassConstructor, plain: V | V[], options?: ClassTransformOptions): T | T[] {\n return classTransformer.plainToInstance(cls, plain as any, options);\n}\n\n/**\n * Converts plain (literal) object to class (constructor) object. Also works with arrays.\n */\nexport function plainToInstance(cls: ClassConstructor, plain: V[], options?: ClassTransformOptions): T[];\nexport function plainToInstance(cls: ClassConstructor, plain: V, options?: ClassTransformOptions): T;\nexport function plainToInstance(\n cls: ClassConstructor,\n plain: V | V[],\n options?: ClassTransformOptions\n): T | T[] {\n return classTransformer.plainToInstance(cls, plain as any, options);\n}\n\n/**\n * Converts plain (literal) object to class (constructor) object.\n * Uses given object as source object (it means fills given object with data from plain object).\n * Also works with arrays.\n *\n * @deprecated This function is being removed. The current implementation is incorrect as it modifies the source object.\n */\nexport function plainToClassFromExist(clsObject: T[], plain: V[], options?: ClassTransformOptions): T[];\nexport function plainToClassFromExist(clsObject: T, plain: V, options?: ClassTransformOptions): T;\nexport function plainToClassFromExist(clsObject: T, plain: V | V[], options?: ClassTransformOptions): T | T[] {\n return classTransformer.plainToClassFromExist(clsObject, plain, options);\n}\n\n/**\n * Converts class (constructor) object to new class (constructor) object. Also works with arrays.\n */\nexport function instanceToInstance(object: T, options?: ClassTransformOptions): T;\nexport function instanceToInstance(object: T[], options?: ClassTransformOptions): T[];\nexport function instanceToInstance(object: T | T[], options?: ClassTransformOptions): T | T[] {\n return classTransformer.instanceToInstance(object, options);\n}\n\n/**\n * Converts class (constructor) object to plain (literal) object.\n * Uses given plain object as source object (it means fills given plain object with data from class object).\n * Also works with arrays.\n *\n * @deprecated This function is being removed. The current implementation is incorrect as it modifies the source object.\n */\nexport function classToClassFromExist(object: T, fromObject: T, options?: ClassTransformOptions): T;\nexport function classToClassFromExist(object: T, fromObjects: T[], options?: ClassTransformOptions): T[];\nexport function classToClassFromExist(object: T, fromObject: T | T[], options?: ClassTransformOptions): T | T[] {\n return classTransformer.classToClassFromExist(object, fromObject, options);\n}\n\n/**\n * Serializes given object to a JSON string.\n *\n * @deprecated This function is being removed. Please use\n * ```\n * JSON.stringify(instanceToPlain(object, options))\n * ```\n */\nexport function serialize(object: T, options?: ClassTransformOptions): string;\nexport function serialize(object: T[], options?: ClassTransformOptions): string;\nexport function serialize(object: T | T[], options?: ClassTransformOptions): string {\n return classTransformer.serialize(object, options);\n}\n\n/**\n * Deserializes given JSON string to a object of the given class.\n *\n * @deprecated This function is being removed. Please use the following instead:\n * ```\n * instanceToClass(cls, JSON.parse(json), options)\n * ```\n */\nexport function deserialize(cls: ClassConstructor, json: string, options?: ClassTransformOptions): T {\n return classTransformer.deserialize(cls, json, options);\n}\n\n/**\n * Deserializes given JSON string to an array of objects of the given class.\n *\n * @deprecated This function is being removed. Please use the following instead:\n * ```\n * JSON.parse(json).map(value => instanceToClass(cls, value, options))\n * ```\n *\n */\nexport function deserializeArray(cls: ClassConstructor, json: string, options?: ClassTransformOptions): T[] {\n return classTransformer.deserializeArray(cls, json, options);\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/class-constructor.type.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/class-constructor.type.js new file mode 100644 index 00000000..33f02322 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/class-constructor.type.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=class-constructor.type.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/class-constructor.type.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/class-constructor.type.js.map new file mode 100644 index 00000000..e4b420a2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/class-constructor.type.js.map @@ -0,0 +1 @@ +{"version":3,"file":"class-constructor.type.js","sourceRoot":"","sources":["../../../src/interfaces/class-constructor.type.ts"],"names":[],"mappings":"","sourcesContent":["export type ClassConstructor = {\n new (...args: any[]): T;\n};\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/class-transformer-options.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/class-transformer-options.interface.js new file mode 100644 index 00000000..0aac215f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/class-transformer-options.interface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=class-transformer-options.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/class-transformer-options.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/class-transformer-options.interface.js.map new file mode 100644 index 00000000..3947fe94 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/class-transformer-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"class-transformer-options.interface.js","sourceRoot":"","sources":["../../../src/interfaces/class-transformer-options.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { TargetMap } from './target-map.interface';\n\n/**\n * Options to be passed during transformation.\n */\nexport interface ClassTransformOptions {\n /**\n * Exclusion strategy. By default exposeAll is used, which means that it will expose all properties are transformed\n * by default.\n */\n strategy?: 'excludeAll' | 'exposeAll';\n\n /**\n * Indicates if extraneous properties should be excluded from the value when converting a plain value to a class.\n *\n * This option requires that each property on the target class has at least one `@Expose` or `@Exclude` decorator\n * assigned from this library.\n */\n excludeExtraneousValues?: boolean;\n\n /**\n * Only properties with given groups gonna be transformed.\n */\n groups?: string[];\n\n /**\n * Only properties with \"since\" > version < \"until\" gonna be transformed.\n */\n version?: number;\n\n /**\n * Excludes properties with the given prefixes. For example, if you mark your private properties with \"_\" and \"__\"\n * you can set this option's value to [\"_\", \"__\"] and all private properties will be skipped.\n * This works only for \"exposeAll\" strategy.\n */\n excludePrefixes?: string[];\n\n /**\n * If set to true then class transformer will ignore the effect of all @Expose and @Exclude decorators.\n * This option is useful if you want to kinda clone your object but do not apply decorators affects.\n *\n * __NOTE:__ You may still have to add the decorators to make other options work.\n */\n ignoreDecorators?: boolean;\n\n /**\n * Target maps allows to set a Types of the transforming object without using @Type decorator.\n * This is useful when you are transforming external classes, or if you already have type metadata for\n * objects and you don't want to set it up again.\n */\n targetMaps?: TargetMap[];\n\n /**\n * If set to true then class transformer will perform a circular check. (circular check is turned off by default)\n * This option is useful when you know for sure that your types might have a circular dependency.\n */\n enableCircularCheck?: boolean;\n\n /**\n * If set to true then class transformer will try to convert properties implicitly to their target type based on their typing information.\n *\n * DEFAULT: `false`\n */\n enableImplicitConversion?: boolean;\n\n /**\n * If set to true then class transformer will take default values for unprovided fields.\n * This is useful when you convert a plain object to a class and have an optional field with a default value.\n */\n exposeDefaultValues?: boolean;\n\n /**\n * When set to true, fields with `undefined` as value will be included in class to plain transformation. Otherwise\n * those fields will be omitted from the result.\n *\n * DEFAULT: `true`\n */\n exposeUnsetFields?: boolean;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/exclude-options.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/exclude-options.interface.js new file mode 100644 index 00000000..05900a14 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/exclude-options.interface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=exclude-options.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/exclude-options.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/exclude-options.interface.js.map new file mode 100644 index 00000000..3ccc700b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/exclude-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"exclude-options.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/decorator-options/exclude-options.interface.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Possible transformation options for the @Exclude decorator.\n */\nexport interface ExcludeOptions {\n /**\n * Expose this property only when transforming from plain to class instance.\n */\n toClassOnly?: boolean;\n\n /**\n * Expose this property only when transforming from class instance to plain object.\n */\n toPlainOnly?: boolean;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/expose-options.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/expose-options.interface.js new file mode 100644 index 00000000..af2140ec --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/expose-options.interface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=expose-options.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/expose-options.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/expose-options.interface.js.map new file mode 100644 index 00000000..c473874b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/expose-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"expose-options.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/decorator-options/expose-options.interface.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Possible transformation options for the @Expose decorator.\n */\nexport interface ExposeOptions {\n /**\n * Name of property on the target object to expose the value of this property.\n */\n name?: string;\n\n /**\n * First version where this property should be exposed.\n *\n * Example:\n * ```ts\n * instanceToPlain(payload, { version: 1.0 });\n * ```\n */\n since?: number;\n\n /**\n * Last version where this property should be exposed.\n *\n * Example:\n * ```ts\n * instanceToPlain(payload, { version: 1.0 });\n * ```\n */\n until?: number;\n\n /**\n * List of transformation groups this property belongs to. When set,\n * the property will be exposed only when transform is called with\n * one of the groups specified.\n *\n * Example:\n * ```ts\n * instanceToPlain(payload, { groups: ['user'] });\n * ```\n */\n groups?: string[];\n\n /**\n * Expose this property only when transforming from plain to class instance.\n */\n toClassOnly?: boolean;\n\n /**\n * Expose this property only when transforming from class instance to plain object.\n */\n toPlainOnly?: boolean;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/transform-options.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/transform-options.interface.js new file mode 100644 index 00000000..fd269638 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/transform-options.interface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=transform-options.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/transform-options.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/transform-options.interface.js.map new file mode 100644 index 00000000..5630001f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/transform-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transform-options.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/decorator-options/transform-options.interface.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Possible transformation options for the @Transform decorator.\n */\nexport interface TransformOptions {\n /**\n * First version where this property should be exposed.\n *\n * Example:\n * ```ts\n * instanceToPlain(payload, { version: 1.0 });\n * ```\n */\n since?: number;\n\n /**\n * Last version where this property should be exposed.\n *\n * Example:\n * ```ts\n * instanceToPlain(payload, { version: 1.0 });\n * ```\n */\n until?: number;\n\n /**\n * List of transformation groups this property belongs to. When set,\n * the property will be exposed only when transform is called with\n * one of the groups specified.\n *\n * Example:\n * ```ts\n * instanceToPlain(payload, { groups: ['user'] });\n * ```\n */\n groups?: string[];\n\n /**\n * Expose this property only when transforming from plain to class instance.\n */\n toClassOnly?: boolean;\n\n /**\n * Expose this property only when transforming from class instance to plain object.\n */\n toPlainOnly?: boolean;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/type-discriminator-descriptor.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/type-discriminator-descriptor.interface.js new file mode 100644 index 00000000..a01309f6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/type-discriminator-descriptor.interface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=type-discriminator-descriptor.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/type-discriminator-descriptor.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/type-discriminator-descriptor.interface.js.map new file mode 100644 index 00000000..f6d533ef --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/type-discriminator-descriptor.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"type-discriminator-descriptor.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/decorator-options/type-discriminator-descriptor.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { ClassConstructor } from '..';\n\n/**\n * Discriminator object containing the type information to select a proper type\n * during transformation when a discriminator property is provided.\n */\nexport interface DiscriminatorDescriptor {\n /**\n * The name of the property which holds the type information in the received object.\n */\n property: string;\n /**\n * List of the available types. The transformer will try to lookup the object\n * with the same key as the value received in the defined discriminator property\n * and create an instance of the defined class.\n */\n subTypes: {\n /**\n * Name of the type.\n */\n name: string;\n\n /**\n * A class constructor which can be used to create the object.\n */\n value: ClassConstructor;\n }[];\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/type-options.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/type-options.interface.js new file mode 100644 index 00000000..63094a24 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/type-options.interface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=type-options.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/type-options.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/type-options.interface.js.map new file mode 100644 index 00000000..d3cf0462 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/decorator-options/type-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"type-options.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/decorator-options/type-options.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { DiscriminatorDescriptor } from './type-discriminator-descriptor.interface';\n\n/**\n * Possible transformation options for the @Type decorator.\n */\nexport interface TypeOptions {\n /**\n * Optional discriminator object, when provided the property value will be\n * initialized according to the specified object.\n */\n discriminator?: DiscriminatorDescriptor;\n\n /**\n * Indicates whether to keep the discriminator property on the\n * transformed object or not. Disabled by default.\n *\n * @default false\n */\n keepDiscriminatorProperty?: boolean;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/index.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/index.js new file mode 100644 index 00000000..00933fe1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/index.js @@ -0,0 +1,15 @@ +export * from './decorator-options/expose-options.interface'; +export * from './decorator-options/exclude-options.interface'; +export * from './decorator-options/transform-options.interface'; +export * from './decorator-options/type-discriminator-descriptor.interface'; +export * from './decorator-options/type-options.interface'; +export * from './metadata/exclude-metadata.interface'; +export * from './metadata/expose-metadata.interface'; +export * from './metadata/transform-metadata.interface'; +export * from './metadata/transform-fn-params.interface'; +export * from './metadata/type-metadata.interface'; +export * from './class-constructor.type'; +export * from './class-transformer-options.interface'; +export * from './target-map.interface'; +export * from './type-help-options.interface'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/index.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/index.js.map new file mode 100644 index 00000000..0cf79ca8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,8CAA8C,CAAC;AAC7D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,iDAAiD,CAAC;AAChE,cAAc,6DAA6D,CAAC;AAC5E,cAAc,4CAA4C,CAAC;AAC3D,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,yCAAyC,CAAC;AACxD,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,0BAA0B,CAAC;AACzC,cAAc,uCAAuC,CAAC;AACtD,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC","sourcesContent":["export * from './decorator-options/expose-options.interface';\nexport * from './decorator-options/exclude-options.interface';\nexport * from './decorator-options/transform-options.interface';\nexport * from './decorator-options/type-discriminator-descriptor.interface';\nexport * from './decorator-options/type-options.interface';\nexport * from './metadata/exclude-metadata.interface';\nexport * from './metadata/expose-metadata.interface';\nexport * from './metadata/transform-metadata.interface';\nexport * from './metadata/transform-fn-params.interface';\nexport * from './metadata/type-metadata.interface';\nexport * from './class-constructor.type';\nexport * from './class-transformer-options.interface';\nexport * from './target-map.interface';\nexport * from './type-help-options.interface';\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/exclude-metadata.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/exclude-metadata.interface.js new file mode 100644 index 00000000..2f9ec8f9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/exclude-metadata.interface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=exclude-metadata.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/exclude-metadata.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/exclude-metadata.interface.js.map new file mode 100644 index 00000000..ca4dad11 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/exclude-metadata.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"exclude-metadata.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/metadata/exclude-metadata.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { ExcludeOptions } from '..';\n\n/**\n * This object represents metadata assigned to a property via the @Exclude decorator.\n */\nexport interface ExcludeMetadata {\n target: Function;\n\n /**\n * The property name this metadata belongs to on the target (class or property).\n *\n * Note: If the decorator is applied to a class the propertyName will be undefined.\n */\n propertyName: string | undefined;\n\n /**\n * Options passed to the @Exclude operator for this property.\n */\n options: ExcludeOptions;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/expose-metadata.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/expose-metadata.interface.js new file mode 100644 index 00000000..2e6ed47d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/expose-metadata.interface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=expose-metadata.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/expose-metadata.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/expose-metadata.interface.js.map new file mode 100644 index 00000000..49029199 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/expose-metadata.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"expose-metadata.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/metadata/expose-metadata.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { ExposeOptions } from '..';\n\n/**\n * This object represents metadata assigned to a property via the @Expose decorator.\n */\nexport interface ExposeMetadata {\n target: Function;\n\n /**\n * The property name this metadata belongs to on the target (class or property).\n *\n * Note: If the decorator is applied to a class the propertyName will be undefined.\n */\n propertyName: string | undefined;\n\n /**\n * Options passed to the @Expose operator for this property.\n */\n options: ExposeOptions;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/transform-fn-params.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/transform-fn-params.interface.js new file mode 100644 index 00000000..4d47f5b3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/transform-fn-params.interface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=transform-fn-params.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/transform-fn-params.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/transform-fn-params.interface.js.map new file mode 100644 index 00000000..e849e4f4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/transform-fn-params.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transform-fn-params.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/metadata/transform-fn-params.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { TransformationType } from '../../enums';\nimport { ClassTransformOptions } from '../class-transformer-options.interface';\n\nexport interface TransformFnParams {\n value: any;\n key: string;\n obj: any;\n type: TransformationType;\n options: ClassTransformOptions;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/transform-metadata.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/transform-metadata.interface.js new file mode 100644 index 00000000..7e1f3803 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/transform-metadata.interface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=transform-metadata.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/transform-metadata.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/transform-metadata.interface.js.map new file mode 100644 index 00000000..668c8cec --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/transform-metadata.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transform-metadata.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/metadata/transform-metadata.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { TransformOptions } from '..';\nimport { TransformFnParams } from './transform-fn-params.interface';\n\n/**\n * This object represents metadata assigned to a property via the @Transform decorator.\n */\nexport interface TransformMetadata {\n target: Function;\n\n /**\n * The property name this metadata belongs to on the target (property only).\n */\n propertyName: string;\n\n /**\n * The custom transformation function provided by the user in the @Transform decorator.\n */\n transformFn: (params: TransformFnParams) => any;\n\n /**\n * Options passed to the @Transform operator for this property.\n */\n options: TransformOptions;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/type-metadata.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/type-metadata.interface.js new file mode 100644 index 00000000..1464571f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/type-metadata.interface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=type-metadata.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/type-metadata.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/type-metadata.interface.js.map new file mode 100644 index 00000000..4c6206d7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/metadata/type-metadata.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"type-metadata.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/metadata/type-metadata.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { TypeHelpOptions, TypeOptions } from '..';\n\n/**\n * This object represents metadata assigned to a property via the @Type decorator.\n */\nexport interface TypeMetadata {\n target: Function;\n\n /**\n * The property name this metadata belongs to on the target (property only).\n */\n propertyName: string;\n\n /**\n * The type guessed from assigned Reflect metadata ('design:type')\n */\n reflectedType: any;\n\n /**\n * The custom function provided by the user in the @Type decorator which\n * returns the target type for the transformation.\n */\n typeFunction: (options?: TypeHelpOptions) => Function;\n\n /**\n * Options passed to the @Type operator for this property.\n */\n options: TypeOptions;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/target-map.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/target-map.interface.js new file mode 100644 index 00000000..39ea86f4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/target-map.interface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=target-map.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/target-map.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/target-map.interface.js.map new file mode 100644 index 00000000..710733f3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/target-map.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"target-map.interface.js","sourceRoot":"","sources":["../../../src/interfaces/target-map.interface.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Allows to specify a map of Types in the object without using @Type decorator.\n * This is useful when you have external classes.\n */\nexport interface TargetMap {\n /**\n * Target which Types are being specified.\n */\n target: Function;\n\n /**\n * List of properties and their Types.\n */\n properties: { [key: string]: Function };\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/type-help-options.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/type-help-options.interface.js new file mode 100644 index 00000000..cafc9487 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/type-help-options.interface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=type-help-options.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/type-help-options.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/type-help-options.interface.js.map new file mode 100644 index 00000000..8050a8f3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/interfaces/type-help-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"type-help-options.interface.js","sourceRoot":"","sources":["../../../src/interfaces/type-help-options.interface.ts"],"names":[],"mappings":"","sourcesContent":["// TODO: Document this interface. What does each property means?\nexport interface TypeHelpOptions {\n newObject: any;\n object: Record;\n property: string;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/storage.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/storage.js new file mode 100644 index 00000000..2203e977 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/storage.js @@ -0,0 +1,6 @@ +import { MetadataStorage } from './MetadataStorage'; +/** + * Default metadata storage is used as singleton and can be used to storage all metadatas. + */ +export const defaultMetadataStorage = new MetadataStorage(); +//# sourceMappingURL=storage.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/storage.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/storage.js.map new file mode 100644 index 00000000..97fa2e28 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/storage.js.map @@ -0,0 +1 @@ +{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,eAAe,EAAE,CAAC","sourcesContent":["import { MetadataStorage } from './MetadataStorage';\n\n/**\n * Default metadata storage is used as singleton and can be used to storage all metadatas.\n */\nexport const defaultMetadataStorage = new MetadataStorage();\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/get-global.util.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/get-global.util.js new file mode 100644 index 00000000..a8b64cc4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/get-global.util.js @@ -0,0 +1,29 @@ +/** + * This function returns the global object across Node and browsers. + * + * Note: `globalThis` is the standardized approach however it has been added to + * Node.js in version 12. We need to include this snippet until Node 12 EOL. + */ +export function getGlobal() { + if (typeof globalThis !== 'undefined') { + return globalThis; + } + if (typeof global !== 'undefined') { + return global; + } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'window'. + if (typeof window !== 'undefined') { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'window'. + return window; + } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'self'. + if (typeof self !== 'undefined') { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'self'. + return self; + } +} +//# sourceMappingURL=get-global.util.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/get-global.util.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/get-global.util.js.map new file mode 100644 index 00000000..83b6cf4a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/get-global.util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"get-global.util.js","sourceRoot":"","sources":["../../../src/utils/get-global.util.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,SAAS;IACvB,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;QACrC,OAAO,UAAU,CAAC;KACnB;IAED,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,OAAO,MAAM,CAAC;KACf;IAED,6DAA6D;IAC7D,yCAAyC;IACzC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,6DAA6D;QAC7D,yCAAyC;QACzC,OAAO,MAAM,CAAC;KACf;IAED,6DAA6D;IAC7D,uCAAuC;IACvC,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;QAC/B,6DAA6D;QAC7D,uCAAuC;QACvC,OAAO,IAAI,CAAC;KACb;AACH,CAAC","sourcesContent":["/**\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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/get-global.util.spect.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/get-global.util.spect.js new file mode 100644 index 00000000..9b5bb33f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/get-global.util.spect.js @@ -0,0 +1,13 @@ +import { getGlobal } from '.'; +describe('getGlobal()', () => { + it('should return true if Buffer is present in globalThis', () => { + expect(getGlobal().Buffer).toBe(true); + }); + it('should return false if Buffer is not present in globalThis', () => { + const bufferImp = global.Buffer; + delete global.Buffer; + expect(getGlobal().Buffer).toBe(false); + global.Buffer = bufferImp; + }); +}); +//# sourceMappingURL=get-global.util.spect.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/get-global.util.spect.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/get-global.util.spect.js.map new file mode 100644 index 00000000..0384181d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/get-global.util.spect.js.map @@ -0,0 +1 @@ +{"version":3,"file":"get-global.util.spect.js","sourceRoot":"","sources":["../../../src/utils/get-global.util.spect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC;AAE9B,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;QAChC,OAAO,MAAM,CAAC,MAAM,CAAC;QAErB,MAAM,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { getGlobal } from '.';\n\ndescribe('getGlobal()', () => {\n it('should return true if Buffer is present in globalThis', () => {\n expect(getGlobal().Buffer).toBe(true);\n });\n\n it('should return false if Buffer is not present in globalThis', () => {\n const bufferImp = global.Buffer;\n delete global.Buffer;\n\n expect(getGlobal().Buffer).toBe(false);\n\n global.Buffer = bufferImp;\n });\n});\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/index.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/index.js new file mode 100644 index 00000000..7b623210 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/index.js @@ -0,0 +1,3 @@ +export * from './get-global.util'; +export * from './is-promise.util'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/index.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/index.js.map new file mode 100644 index 00000000..132a5fd7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC","sourcesContent":["export * from './get-global.util';\nexport * from './is-promise.util';\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/is-promise.util.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/is-promise.util.js new file mode 100644 index 00000000..170e190a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/is-promise.util.js @@ -0,0 +1,4 @@ +export function isPromise(p) { + return p !== null && typeof p === 'object' && typeof p.then === 'function'; +} +//# sourceMappingURL=is-promise.util.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/is-promise.util.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/is-promise.util.js.map new file mode 100644 index 00000000..9813aa9f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm2015/utils/is-promise.util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"is-promise.util.js","sourceRoot":"","sources":["../../../src/utils/is-promise.util.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAI,CAAM;IACjC,OAAO,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;AAC7E,CAAC","sourcesContent":["export function isPromise(p: any): p is Promise {\n return p !== null && typeof p === 'object' && typeof p.then === 'function';\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/ClassTransformer.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/ClassTransformer.js new file mode 100644 index 00000000..c196b985 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/ClassTransformer.js @@ -0,0 +1,62 @@ +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +import { TransformOperationExecutor } from './TransformOperationExecutor'; +import { TransformationType } from './enums'; +import { defaultOptions } from './constants/default-options.constant'; +var ClassTransformer = /** @class */ (function () { + function ClassTransformer() { + } + ClassTransformer.prototype.instanceToPlain = function (object, options) { + var executor = new TransformOperationExecutor(TransformationType.CLASS_TO_PLAIN, __assign(__assign({}, defaultOptions), options)); + return executor.transform(undefined, object, undefined, undefined, undefined, undefined); + }; + ClassTransformer.prototype.classToPlainFromExist = function (object, plainObject, options) { + var executor = new TransformOperationExecutor(TransformationType.CLASS_TO_PLAIN, __assign(__assign({}, defaultOptions), options)); + return executor.transform(plainObject, object, undefined, undefined, undefined, undefined); + }; + ClassTransformer.prototype.plainToInstance = function (cls, plain, options) { + var executor = new TransformOperationExecutor(TransformationType.PLAIN_TO_CLASS, __assign(__assign({}, defaultOptions), options)); + return executor.transform(undefined, plain, cls, undefined, undefined, undefined); + }; + ClassTransformer.prototype.plainToClassFromExist = function (clsObject, plain, options) { + var executor = new TransformOperationExecutor(TransformationType.PLAIN_TO_CLASS, __assign(__assign({}, defaultOptions), options)); + return executor.transform(clsObject, plain, undefined, undefined, undefined, undefined); + }; + ClassTransformer.prototype.instanceToInstance = function (object, options) { + var executor = new TransformOperationExecutor(TransformationType.CLASS_TO_CLASS, __assign(__assign({}, defaultOptions), options)); + return executor.transform(undefined, object, undefined, undefined, undefined, undefined); + }; + ClassTransformer.prototype.classToClassFromExist = function (object, fromObject, options) { + var executor = new TransformOperationExecutor(TransformationType.CLASS_TO_CLASS, __assign(__assign({}, defaultOptions), options)); + return executor.transform(fromObject, object, undefined, undefined, undefined, undefined); + }; + ClassTransformer.prototype.serialize = function (object, options) { + return JSON.stringify(this.instanceToPlain(object, options)); + }; + /** + * Deserializes given JSON string to a object of the given class. + */ + ClassTransformer.prototype.deserialize = function (cls, json, options) { + var jsonObject = JSON.parse(json); + return this.plainToInstance(cls, jsonObject, options); + }; + /** + * Deserializes given JSON string to an array of objects of the given class. + */ + ClassTransformer.prototype.deserializeArray = function (cls, json, options) { + var jsonObject = JSON.parse(json); + return this.plainToInstance(cls, jsonObject, options); + }; + return ClassTransformer; +}()); +export { ClassTransformer }; +//# sourceMappingURL=ClassTransformer.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/ClassTransformer.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/ClassTransformer.js.map new file mode 100644 index 00000000..cd09073a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/ClassTransformer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ClassTransformer.js","sourceRoot":"","sources":["../../src/ClassTransformer.ts"],"names":[],"mappings":";;;;;;;;;;;AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEtE;IAAA;IAoJA,CAAC;IA1IC,0CAAe,GAAf,UACE,MAAe,EACf,OAA+B;QAE/B,IAAM,QAAQ,GAAG,IAAI,0BAA0B,CAAC,kBAAkB,CAAC,cAAc,wBAC5E,cAAc,GACd,OAAO,EACV,CAAC;QACH,OAAO,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAC3F,CAAC;IAiBD,gDAAqB,GAArB,UACE,MAAS,EACT,WAAoB,EACpB,OAA+B;QAE/B,IAAM,QAAQ,GAAG,IAAI,0BAA0B,CAAC,kBAAkB,CAAC,cAAc,wBAC5E,cAAc,GACd,OAAO,EACV,CAAC;QACH,OAAO,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAC7F,CAAC;IAeD,0CAAe,GAAf,UACE,GAAwB,EACxB,KAAc,EACd,OAA+B;QAE/B,IAAM,QAAQ,GAAG,IAAI,0BAA0B,CAAC,kBAAkB,CAAC,cAAc,wBAC5E,cAAc,GACd,OAAO,EACV,CAAC;QACH,OAAO,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACpF,CAAC;IAaD,gDAAqB,GAArB,UACE,SAAY,EACZ,KAAc,EACd,OAA+B;QAE/B,IAAM,QAAQ,GAAG,IAAI,0BAA0B,CAAC,kBAAkB,CAAC,cAAc,wBAC5E,cAAc,GACd,OAAO,EACV,CAAC;QACH,OAAO,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAC1F,CAAC;IAOD,6CAAkB,GAAlB,UAAsB,MAAe,EAAE,OAA+B;QACpE,IAAM,QAAQ,GAAG,IAAI,0BAA0B,CAAC,kBAAkB,CAAC,cAAc,wBAC5E,cAAc,GACd,OAAO,EACV,CAAC;QACH,OAAO,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAC3F,CAAC;IASD,gDAAqB,GAArB,UAAyB,MAAS,EAAE,UAAmB,EAAE,OAA+B;QACtF,IAAM,QAAQ,GAAG,IAAI,0BAA0B,CAAC,kBAAkB,CAAC,cAAc,wBAC5E,cAAc,GACd,OAAO,EACV,CAAC;QACH,OAAO,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAC5F,CAAC;IAOD,oCAAS,GAAT,UAAa,MAAe,EAAE,OAA+B;QAC3D,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,sCAAW,GAAX,UAAe,GAAwB,EAAE,IAAY,EAAE,OAA+B;QACpF,IAAM,UAAU,GAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,2CAAgB,GAAhB,UAAoB,GAAwB,EAAE,IAAY,EAAE,OAA+B;QACzF,IAAM,UAAU,GAAU,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IACH,uBAAC;AAAD,CAAC,AApJD,IAoJC","sourcesContent":["import { ClassTransformOptions } from './interfaces';\nimport { TransformOperationExecutor } from './TransformOperationExecutor';\nimport { TransformationType } from './enums';\nimport { ClassConstructor } from './interfaces';\nimport { defaultOptions } from './constants/default-options.constant';\n\nexport class ClassTransformer {\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Converts class (constructor) object to plain (literal) object. Also works with arrays.\n */\n instanceToPlain>(object: T, options?: ClassTransformOptions): Record;\n instanceToPlain>(object: T[], options?: ClassTransformOptions): Record[];\n instanceToPlain>(\n object: T | T[],\n options?: ClassTransformOptions\n ): Record | Record[] {\n const executor = new TransformOperationExecutor(TransformationType.CLASS_TO_PLAIN, {\n ...defaultOptions,\n ...options,\n });\n return executor.transform(undefined, object, undefined, undefined, undefined, undefined);\n }\n\n /**\n * Converts class (constructor) object to plain (literal) object.\n * Uses given plain object as source object (it means fills given plain object with data from class object).\n * Also works with arrays.\n */\n classToPlainFromExist, P>(\n object: T,\n plainObject: P,\n options?: ClassTransformOptions\n ): T;\n classToPlainFromExist, P>(\n object: T,\n plainObjects: P[],\n options?: ClassTransformOptions\n ): T[];\n classToPlainFromExist, P>(\n object: T,\n plainObject: P | P[],\n options?: ClassTransformOptions\n ): T | T[] {\n const executor = new TransformOperationExecutor(TransformationType.CLASS_TO_PLAIN, {\n ...defaultOptions,\n ...options,\n });\n return executor.transform(plainObject, object, undefined, undefined, undefined, undefined);\n }\n\n /**\n * Converts plain (literal) object to class (constructor) object. Also works with arrays.\n */\n plainToInstance, V extends Array>(\n cls: ClassConstructor,\n plain: V,\n options?: ClassTransformOptions\n ): T[];\n plainToInstance, V>(\n cls: ClassConstructor,\n plain: V,\n options?: ClassTransformOptions\n ): T;\n plainToInstance, V>(\n cls: ClassConstructor,\n plain: V | V[],\n options?: ClassTransformOptions\n ): T | T[] {\n const executor = new TransformOperationExecutor(TransformationType.PLAIN_TO_CLASS, {\n ...defaultOptions,\n ...options,\n });\n return executor.transform(undefined, plain, cls, undefined, undefined, undefined);\n }\n\n /**\n * Converts plain (literal) object to class (constructor) object.\n * Uses given object as source object (it means fills given object with data from plain object).\n * Also works with arrays.\n */\n plainToClassFromExist, V extends Array>(\n clsObject: T,\n plain: V,\n options?: ClassTransformOptions\n ): T;\n plainToClassFromExist, V>(clsObject: T, plain: V, options?: ClassTransformOptions): T[];\n plainToClassFromExist, V>(\n clsObject: T,\n plain: V | V[],\n options?: ClassTransformOptions\n ): T | T[] {\n const executor = new TransformOperationExecutor(TransformationType.PLAIN_TO_CLASS, {\n ...defaultOptions,\n ...options,\n });\n return executor.transform(clsObject, plain, undefined, undefined, undefined, undefined);\n }\n\n /**\n * Converts class (constructor) object to new class (constructor) object. Also works with arrays.\n */\n instanceToInstance(object: T, options?: ClassTransformOptions): T;\n instanceToInstance(object: T[], options?: ClassTransformOptions): T[];\n instanceToInstance(object: T | T[], options?: ClassTransformOptions): T | T[] {\n const executor = new TransformOperationExecutor(TransformationType.CLASS_TO_CLASS, {\n ...defaultOptions,\n ...options,\n });\n return executor.transform(undefined, object, undefined, undefined, undefined, undefined);\n }\n\n /**\n * Converts class (constructor) object to plain (literal) object.\n * Uses given plain object as source object (it means fills given plain object with data from class object).\n * Also works with arrays.\n */\n classToClassFromExist(object: T, fromObject: T, options?: ClassTransformOptions): T;\n classToClassFromExist(object: T, fromObjects: T[], options?: ClassTransformOptions): T[];\n classToClassFromExist(object: T, fromObject: T | T[], options?: ClassTransformOptions): T | T[] {\n const executor = new TransformOperationExecutor(TransformationType.CLASS_TO_CLASS, {\n ...defaultOptions,\n ...options,\n });\n return executor.transform(fromObject, object, undefined, undefined, undefined, undefined);\n }\n\n /**\n * Serializes given object to a JSON string.\n */\n serialize(object: T, options?: ClassTransformOptions): string;\n serialize(object: T[], options?: ClassTransformOptions): string;\n serialize(object: T | T[], options?: ClassTransformOptions): string {\n return JSON.stringify(this.instanceToPlain(object, options));\n }\n\n /**\n * Deserializes given JSON string to a object of the given class.\n */\n deserialize(cls: ClassConstructor, json: string, options?: ClassTransformOptions): T {\n const jsonObject: T = JSON.parse(json);\n return this.plainToInstance(cls, jsonObject, options);\n }\n\n /**\n * Deserializes given JSON string to an array of objects of the given class.\n */\n deserializeArray(cls: ClassConstructor, json: string, options?: ClassTransformOptions): T[] {\n const jsonObject: any[] = JSON.parse(json);\n return this.plainToInstance(cls, jsonObject, options);\n }\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/MetadataStorage.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/MetadataStorage.js new file mode 100644 index 00000000..a93affce --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/MetadataStorage.js @@ -0,0 +1,212 @@ +import { TransformationType } from './enums'; +/** + * Storage all library metadata. + */ +var MetadataStorage = /** @class */ (function () { + function MetadataStorage() { + // ------------------------------------------------------------------------- + // Properties + // ------------------------------------------------------------------------- + this._typeMetadatas = new Map(); + this._transformMetadatas = new Map(); + this._exposeMetadatas = new Map(); + this._excludeMetadatas = new Map(); + this._ancestorsMap = new Map(); + } + // ------------------------------------------------------------------------- + // Adder Methods + // ------------------------------------------------------------------------- + MetadataStorage.prototype.addTypeMetadata = function (metadata) { + if (!this._typeMetadatas.has(metadata.target)) { + this._typeMetadatas.set(metadata.target, new Map()); + } + this._typeMetadatas.get(metadata.target).set(metadata.propertyName, metadata); + }; + MetadataStorage.prototype.addTransformMetadata = function (metadata) { + if (!this._transformMetadatas.has(metadata.target)) { + this._transformMetadatas.set(metadata.target, new Map()); + } + if (!this._transformMetadatas.get(metadata.target).has(metadata.propertyName)) { + this._transformMetadatas.get(metadata.target).set(metadata.propertyName, []); + } + this._transformMetadatas.get(metadata.target).get(metadata.propertyName).push(metadata); + }; + MetadataStorage.prototype.addExposeMetadata = function (metadata) { + if (!this._exposeMetadatas.has(metadata.target)) { + this._exposeMetadatas.set(metadata.target, new Map()); + } + this._exposeMetadatas.get(metadata.target).set(metadata.propertyName, metadata); + }; + MetadataStorage.prototype.addExcludeMetadata = function (metadata) { + if (!this._excludeMetadatas.has(metadata.target)) { + this._excludeMetadatas.set(metadata.target, new Map()); + } + this._excludeMetadatas.get(metadata.target).set(metadata.propertyName, metadata); + }; + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + MetadataStorage.prototype.findTransformMetadatas = function (target, propertyName, transformationType) { + return this.findMetadatas(this._transformMetadatas, target, propertyName).filter(function (metadata) { + if (!metadata.options) + return true; + if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true) + return true; + if (metadata.options.toClassOnly === true) { + return (transformationType === TransformationType.CLASS_TO_CLASS || + transformationType === TransformationType.PLAIN_TO_CLASS); + } + if (metadata.options.toPlainOnly === true) { + return transformationType === TransformationType.CLASS_TO_PLAIN; + } + return true; + }); + }; + MetadataStorage.prototype.findExcludeMetadata = function (target, propertyName) { + return this.findMetadata(this._excludeMetadatas, target, propertyName); + }; + MetadataStorage.prototype.findExposeMetadata = function (target, propertyName) { + return this.findMetadata(this._exposeMetadatas, target, propertyName); + }; + MetadataStorage.prototype.findExposeMetadataByCustomName = function (target, name) { + return this.getExposedMetadatas(target).find(function (metadata) { + return metadata.options && metadata.options.name === name; + }); + }; + MetadataStorage.prototype.findTypeMetadata = function (target, propertyName) { + return this.findMetadata(this._typeMetadatas, target, propertyName); + }; + MetadataStorage.prototype.getStrategy = function (target) { + var excludeMap = this._excludeMetadatas.get(target); + var exclude = excludeMap && excludeMap.get(undefined); + var exposeMap = this._exposeMetadatas.get(target); + var expose = exposeMap && exposeMap.get(undefined); + if ((exclude && expose) || (!exclude && !expose)) + return 'none'; + return exclude ? 'excludeAll' : 'exposeAll'; + }; + MetadataStorage.prototype.getExposedMetadatas = function (target) { + return this.getMetadata(this._exposeMetadatas, target); + }; + MetadataStorage.prototype.getExcludedMetadatas = function (target) { + return this.getMetadata(this._excludeMetadatas, target); + }; + MetadataStorage.prototype.getExposedProperties = function (target, transformationType) { + return this.getExposedMetadatas(target) + .filter(function (metadata) { + if (!metadata.options) + return true; + if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true) + return true; + if (metadata.options.toClassOnly === true) { + return (transformationType === TransformationType.CLASS_TO_CLASS || + transformationType === TransformationType.PLAIN_TO_CLASS); + } + if (metadata.options.toPlainOnly === true) { + return transformationType === TransformationType.CLASS_TO_PLAIN; + } + return true; + }) + .map(function (metadata) { return metadata.propertyName; }); + }; + MetadataStorage.prototype.getExcludedProperties = function (target, transformationType) { + return this.getExcludedMetadatas(target) + .filter(function (metadata) { + if (!metadata.options) + return true; + if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true) + return true; + if (metadata.options.toClassOnly === true) { + return (transformationType === TransformationType.CLASS_TO_CLASS || + transformationType === TransformationType.PLAIN_TO_CLASS); + } + if (metadata.options.toPlainOnly === true) { + return transformationType === TransformationType.CLASS_TO_PLAIN; + } + return true; + }) + .map(function (metadata) { return metadata.propertyName; }); + }; + MetadataStorage.prototype.clear = function () { + this._typeMetadatas.clear(); + this._exposeMetadatas.clear(); + this._excludeMetadatas.clear(); + this._ancestorsMap.clear(); + }; + // ------------------------------------------------------------------------- + // Private Methods + // ------------------------------------------------------------------------- + MetadataStorage.prototype.getMetadata = function (metadatas, target) { + var metadataFromTargetMap = metadatas.get(target); + var metadataFromTarget; + if (metadataFromTargetMap) { + metadataFromTarget = Array.from(metadataFromTargetMap.values()).filter(function (meta) { return meta.propertyName !== undefined; }); + } + var metadataFromAncestors = []; + for (var _i = 0, _a = this.getAncestors(target); _i < _a.length; _i++) { + var ancestor = _a[_i]; + var ancestorMetadataMap = metadatas.get(ancestor); + if (ancestorMetadataMap) { + var metadataFromAncestor = Array.from(ancestorMetadataMap.values()).filter(function (meta) { return meta.propertyName !== undefined; }); + metadataFromAncestors.push.apply(metadataFromAncestors, metadataFromAncestor); + } + } + return metadataFromAncestors.concat(metadataFromTarget || []); + }; + MetadataStorage.prototype.findMetadata = function (metadatas, target, propertyName) { + var metadataFromTargetMap = metadatas.get(target); + if (metadataFromTargetMap) { + var metadataFromTarget = metadataFromTargetMap.get(propertyName); + if (metadataFromTarget) { + return metadataFromTarget; + } + } + for (var _i = 0, _a = this.getAncestors(target); _i < _a.length; _i++) { + var ancestor = _a[_i]; + var ancestorMetadataMap = metadatas.get(ancestor); + if (ancestorMetadataMap) { + var ancestorResult = ancestorMetadataMap.get(propertyName); + if (ancestorResult) { + return ancestorResult; + } + } + } + return undefined; + }; + MetadataStorage.prototype.findMetadatas = function (metadatas, target, propertyName) { + var metadataFromTargetMap = metadatas.get(target); + var metadataFromTarget; + if (metadataFromTargetMap) { + metadataFromTarget = metadataFromTargetMap.get(propertyName); + } + var metadataFromAncestorsTarget = []; + for (var _i = 0, _a = this.getAncestors(target); _i < _a.length; _i++) { + var ancestor = _a[_i]; + var ancestorMetadataMap = metadatas.get(ancestor); + if (ancestorMetadataMap) { + if (ancestorMetadataMap.has(propertyName)) { + metadataFromAncestorsTarget.push.apply(metadataFromAncestorsTarget, ancestorMetadataMap.get(propertyName)); + } + } + } + return metadataFromAncestorsTarget + .slice() + .reverse() + .concat((metadataFromTarget || []).slice().reverse()); + }; + MetadataStorage.prototype.getAncestors = function (target) { + if (!target) + return []; + if (!this._ancestorsMap.has(target)) { + var ancestors = []; + for (var baseClass = Object.getPrototypeOf(target.prototype.constructor); typeof baseClass.prototype !== 'undefined'; baseClass = Object.getPrototypeOf(baseClass.prototype.constructor)) { + ancestors.push(baseClass); + } + this._ancestorsMap.set(target, ancestors); + } + return this._ancestorsMap.get(target); + }; + return MetadataStorage; +}()); +export { MetadataStorage }; +//# sourceMappingURL=MetadataStorage.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/MetadataStorage.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/MetadataStorage.js.map new file mode 100644 index 00000000..b5869231 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/MetadataStorage.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MetadataStorage.js","sourceRoot":"","sources":["../../src/MetadataStorage.ts"],"names":[],"mappings":"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","sourcesContent":["import { TypeMetadata, ExposeMetadata, ExcludeMetadata, TransformMetadata } from './interfaces';\nimport { TransformationType } from './enums';\n\n/**\n * Storage all library metadata.\n */\nexport class MetadataStorage {\n // -------------------------------------------------------------------------\n // Properties\n // -------------------------------------------------------------------------\n\n private _typeMetadatas = new Map>();\n private _transformMetadatas = new Map>();\n private _exposeMetadatas = new Map>();\n private _excludeMetadatas = new Map>();\n private _ancestorsMap = new Map();\n\n // -------------------------------------------------------------------------\n // Adder Methods\n // -------------------------------------------------------------------------\n\n addTypeMetadata(metadata: TypeMetadata): void {\n if (!this._typeMetadatas.has(metadata.target)) {\n this._typeMetadatas.set(metadata.target, new Map());\n }\n this._typeMetadatas.get(metadata.target).set(metadata.propertyName, metadata);\n }\n\n addTransformMetadata(metadata: TransformMetadata): void {\n if (!this._transformMetadatas.has(metadata.target)) {\n this._transformMetadatas.set(metadata.target, new Map());\n }\n if (!this._transformMetadatas.get(metadata.target).has(metadata.propertyName)) {\n this._transformMetadatas.get(metadata.target).set(metadata.propertyName, []);\n }\n this._transformMetadatas.get(metadata.target).get(metadata.propertyName).push(metadata);\n }\n\n addExposeMetadata(metadata: ExposeMetadata): void {\n if (!this._exposeMetadatas.has(metadata.target)) {\n this._exposeMetadatas.set(metadata.target, new Map());\n }\n this._exposeMetadatas.get(metadata.target).set(metadata.propertyName, metadata);\n }\n\n addExcludeMetadata(metadata: ExcludeMetadata): void {\n if (!this._excludeMetadatas.has(metadata.target)) {\n this._excludeMetadatas.set(metadata.target, new Map());\n }\n this._excludeMetadatas.get(metadata.target).set(metadata.propertyName, metadata);\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n findTransformMetadatas(\n target: Function,\n propertyName: string,\n transformationType: TransformationType\n ): TransformMetadata[] {\n return this.findMetadatas(this._transformMetadatas, target, propertyName).filter(metadata => {\n if (!metadata.options) return true;\n if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true) return true;\n\n if (metadata.options.toClassOnly === true) {\n return (\n transformationType === TransformationType.CLASS_TO_CLASS ||\n transformationType === TransformationType.PLAIN_TO_CLASS\n );\n }\n if (metadata.options.toPlainOnly === true) {\n return transformationType === TransformationType.CLASS_TO_PLAIN;\n }\n\n return true;\n });\n }\n\n findExcludeMetadata(target: Function, propertyName: string): ExcludeMetadata {\n return this.findMetadata(this._excludeMetadatas, target, propertyName);\n }\n\n findExposeMetadata(target: Function, propertyName: string): ExposeMetadata {\n return this.findMetadata(this._exposeMetadatas, target, propertyName);\n }\n\n findExposeMetadataByCustomName(target: Function, name: string): ExposeMetadata {\n return this.getExposedMetadatas(target).find(metadata => {\n return metadata.options && metadata.options.name === name;\n });\n }\n\n findTypeMetadata(target: Function, propertyName: string): TypeMetadata {\n return this.findMetadata(this._typeMetadatas, target, propertyName);\n }\n\n getStrategy(target: Function): 'excludeAll' | 'exposeAll' | 'none' {\n const excludeMap = this._excludeMetadatas.get(target);\n const exclude = excludeMap && excludeMap.get(undefined);\n const exposeMap = this._exposeMetadatas.get(target);\n const expose = exposeMap && exposeMap.get(undefined);\n if ((exclude && expose) || (!exclude && !expose)) return 'none';\n return exclude ? 'excludeAll' : 'exposeAll';\n }\n\n getExposedMetadatas(target: Function): ExposeMetadata[] {\n return this.getMetadata(this._exposeMetadatas, target);\n }\n\n getExcludedMetadatas(target: Function): ExcludeMetadata[] {\n return this.getMetadata(this._excludeMetadatas, target);\n }\n\n getExposedProperties(target: Function, transformationType: TransformationType): string[] {\n return this.getExposedMetadatas(target)\n .filter(metadata => {\n if (!metadata.options) return true;\n if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true) return true;\n\n if (metadata.options.toClassOnly === true) {\n return (\n transformationType === TransformationType.CLASS_TO_CLASS ||\n transformationType === TransformationType.PLAIN_TO_CLASS\n );\n }\n if (metadata.options.toPlainOnly === true) {\n return transformationType === TransformationType.CLASS_TO_PLAIN;\n }\n\n return true;\n })\n .map(metadata => metadata.propertyName);\n }\n\n getExcludedProperties(target: Function, transformationType: TransformationType): string[] {\n return this.getExcludedMetadatas(target)\n .filter(metadata => {\n if (!metadata.options) return true;\n if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true) return true;\n\n if (metadata.options.toClassOnly === true) {\n return (\n transformationType === TransformationType.CLASS_TO_CLASS ||\n transformationType === TransformationType.PLAIN_TO_CLASS\n );\n }\n if (metadata.options.toPlainOnly === true) {\n return transformationType === TransformationType.CLASS_TO_PLAIN;\n }\n\n return true;\n })\n .map(metadata => metadata.propertyName);\n }\n\n clear(): void {\n this._typeMetadatas.clear();\n this._exposeMetadatas.clear();\n this._excludeMetadatas.clear();\n this._ancestorsMap.clear();\n }\n\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n\n private getMetadata(\n metadatas: Map>,\n target: Function\n ): T[] {\n const metadataFromTargetMap = metadatas.get(target);\n let metadataFromTarget: T[];\n if (metadataFromTargetMap) {\n metadataFromTarget = Array.from(metadataFromTargetMap.values()).filter(meta => meta.propertyName !== undefined);\n }\n const metadataFromAncestors: T[] = [];\n for (const ancestor of this.getAncestors(target)) {\n const ancestorMetadataMap = metadatas.get(ancestor);\n if (ancestorMetadataMap) {\n const metadataFromAncestor = Array.from(ancestorMetadataMap.values()).filter(\n meta => meta.propertyName !== undefined\n );\n metadataFromAncestors.push(...metadataFromAncestor);\n }\n }\n return metadataFromAncestors.concat(metadataFromTarget || []);\n }\n\n private findMetadata(\n metadatas: Map>,\n target: Function,\n propertyName: string\n ): T {\n const metadataFromTargetMap = metadatas.get(target);\n if (metadataFromTargetMap) {\n const metadataFromTarget = metadataFromTargetMap.get(propertyName);\n if (metadataFromTarget) {\n return metadataFromTarget;\n }\n }\n for (const ancestor of this.getAncestors(target)) {\n const ancestorMetadataMap = metadatas.get(ancestor);\n if (ancestorMetadataMap) {\n const ancestorResult = ancestorMetadataMap.get(propertyName);\n if (ancestorResult) {\n return ancestorResult;\n }\n }\n }\n return undefined;\n }\n\n private findMetadatas(\n metadatas: Map>,\n target: Function,\n propertyName: string\n ): T[] {\n const metadataFromTargetMap = metadatas.get(target);\n let metadataFromTarget: T[];\n if (metadataFromTargetMap) {\n metadataFromTarget = metadataFromTargetMap.get(propertyName);\n }\n const metadataFromAncestorsTarget: T[] = [];\n for (const ancestor of this.getAncestors(target)) {\n const ancestorMetadataMap = metadatas.get(ancestor);\n if (ancestorMetadataMap) {\n if (ancestorMetadataMap.has(propertyName)) {\n metadataFromAncestorsTarget.push(...ancestorMetadataMap.get(propertyName));\n }\n }\n }\n return metadataFromAncestorsTarget\n .slice()\n .reverse()\n .concat((metadataFromTarget || []).slice().reverse());\n }\n\n private getAncestors(target: Function): Function[] {\n if (!target) return [];\n if (!this._ancestorsMap.has(target)) {\n const ancestors: Function[] = [];\n for (\n let baseClass = Object.getPrototypeOf(target.prototype.constructor);\n typeof baseClass.prototype !== 'undefined';\n baseClass = Object.getPrototypeOf(baseClass.prototype.constructor)\n ) {\n ancestors.push(baseClass);\n }\n this._ancestorsMap.set(target, ancestors);\n }\n return this._ancestorsMap.get(target);\n }\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/TransformOperationExecutor.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/TransformOperationExecutor.js new file mode 100644 index 00000000..4ccb83f5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/TransformOperationExecutor.js @@ -0,0 +1,499 @@ +var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +}; +import { defaultMetadataStorage } from './storage'; +import { TransformationType } from './enums'; +import { getGlobal, isPromise } from './utils'; +function instantiateArrayType(arrayType) { + var array = new arrayType(); + if (!(array instanceof Set) && !('push' in array)) { + return []; + } + return array; +} +var TransformOperationExecutor = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function TransformOperationExecutor(transformationType, options) { + this.transformationType = transformationType; + this.options = options; + // ------------------------------------------------------------------------- + // Private Properties + // ------------------------------------------------------------------------- + this.recursionStack = new Set(); + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + TransformOperationExecutor.prototype.transform = function (source, value, targetType, arrayType, isMap, level) { + var _this = this; + if (level === void 0) { level = 0; } + if (Array.isArray(value) || value instanceof Set) { + var newValue_1 = arrayType && this.transformationType === TransformationType.PLAIN_TO_CLASS + ? instantiateArrayType(arrayType) + : []; + value.forEach(function (subValue, index) { + var subSource = source ? source[index] : undefined; + if (!_this.options.enableCircularCheck || !_this.isCircular(subValue)) { + var realTargetType = void 0; + if (typeof targetType !== 'function' && + targetType && + targetType.options && + targetType.options.discriminator && + targetType.options.discriminator.property && + targetType.options.discriminator.subTypes) { + if (_this.transformationType === TransformationType.PLAIN_TO_CLASS) { + realTargetType = targetType.options.discriminator.subTypes.find(function (subType) { + return subType.name === subValue[targetType.options.discriminator.property]; + }); + var options = { newObject: newValue_1, object: subValue, property: undefined }; + var newType = targetType.typeFunction(options); + realTargetType === undefined ? (realTargetType = newType) : (realTargetType = realTargetType.value); + if (!targetType.options.keepDiscriminatorProperty) + delete subValue[targetType.options.discriminator.property]; + } + if (_this.transformationType === TransformationType.CLASS_TO_CLASS) { + realTargetType = subValue.constructor; + } + if (_this.transformationType === TransformationType.CLASS_TO_PLAIN) { + subValue[targetType.options.discriminator.property] = targetType.options.discriminator.subTypes.find(function (subType) { return subType.value === subValue.constructor; }).name; + } + } + else { + realTargetType = targetType; + } + var value_1 = _this.transform(subSource, subValue, realTargetType, undefined, subValue instanceof Map, level + 1); + if (newValue_1 instanceof Set) { + newValue_1.add(value_1); + } + else { + newValue_1.push(value_1); + } + } + else if (_this.transformationType === TransformationType.CLASS_TO_CLASS) { + if (newValue_1 instanceof Set) { + newValue_1.add(subValue); + } + else { + newValue_1.push(subValue); + } + } + }); + return newValue_1; + } + else if (targetType === String && !isMap) { + if (value === null || value === undefined) + return value; + return String(value); + } + else if (targetType === Number && !isMap) { + if (value === null || value === undefined) + return value; + return Number(value); + } + else if (targetType === Boolean && !isMap) { + if (value === null || value === undefined) + return value; + return Boolean(value); + } + else if ((targetType === Date || value instanceof Date) && !isMap) { + if (value instanceof Date) { + return new Date(value.valueOf()); + } + if (value === null || value === undefined) + return value; + return new Date(value); + } + else if (!!getGlobal().Buffer && (targetType === Buffer || value instanceof Buffer) && !isMap) { + if (value === null || value === undefined) + return value; + return Buffer.from(value); + } + else if (isPromise(value) && !isMap) { + return new Promise(function (resolve, reject) { + value.then(function (data) { return resolve(_this.transform(undefined, data, targetType, undefined, undefined, level + 1)); }, reject); + }); + } + else if (!isMap && value !== null && typeof value === 'object' && typeof value.then === 'function') { + // Note: We should not enter this, as promise has been handled above + // This option simply returns the Promise preventing a JS error from happening and should be an inaccessible path. + return value; // skip promise transformation + } + else if (typeof value === 'object' && value !== null) { + // try to guess the type + if (!targetType && value.constructor !== Object /* && TransformationType === TransformationType.CLASS_TO_PLAIN*/) + if (!Array.isArray(value) && value.constructor === Array) { + // Somebody attempts to convert special Array like object to Array, eg: + // const evilObject = { '100000000': '100000000', __proto__: [] }; + // This could be used to cause Denial-of-service attack so we don't allow it. + // See prevent-array-bomb.spec.ts for more details. + } + else { + // We are good we can use the built-in constructor + targetType = value.constructor; + } + if (!targetType && source) + targetType = source.constructor; + if (this.options.enableCircularCheck) { + // add transformed type to prevent circular references + this.recursionStack.add(value); + } + var keys = this.getKeys(targetType, value, isMap); + var newValue = source ? source : {}; + if (!source && + (this.transformationType === TransformationType.PLAIN_TO_CLASS || + this.transformationType === TransformationType.CLASS_TO_CLASS)) { + if (isMap) { + newValue = new Map(); + } + else if (targetType) { + newValue = new targetType(); + } + else { + newValue = {}; + } + } + var _loop_1 = function (key) { + if (key === '__proto__' || key === 'constructor') { + return "continue"; + } + var valueKey = key; + var newValueKey = key, propertyName = key; + if (!this_1.options.ignoreDecorators && targetType) { + if (this_1.transformationType === TransformationType.PLAIN_TO_CLASS) { + var exposeMetadata = defaultMetadataStorage.findExposeMetadataByCustomName(targetType, key); + if (exposeMetadata) { + propertyName = exposeMetadata.propertyName; + newValueKey = exposeMetadata.propertyName; + } + } + else if (this_1.transformationType === TransformationType.CLASS_TO_PLAIN || + this_1.transformationType === TransformationType.CLASS_TO_CLASS) { + var exposeMetadata = defaultMetadataStorage.findExposeMetadata(targetType, key); + if (exposeMetadata && exposeMetadata.options && exposeMetadata.options.name) { + newValueKey = exposeMetadata.options.name; + } + } + } + // get a subvalue + var subValue = undefined; + if (this_1.transformationType === TransformationType.PLAIN_TO_CLASS) { + /** + * This section is added for the following report: + * https://github.com/typestack/class-transformer/issues/596 + * + * We should not call functions or constructors when transforming to class. + */ + subValue = value[valueKey]; + } + else { + if (value instanceof Map) { + subValue = value.get(valueKey); + } + else if (value[valueKey] instanceof Function) { + subValue = value[valueKey](); + } + else { + subValue = value[valueKey]; + } + } + // determine a type + var type = undefined, isSubValueMap = subValue instanceof Map; + if (targetType && isMap) { + type = targetType; + } + else if (targetType) { + var metadata_1 = defaultMetadataStorage.findTypeMetadata(targetType, propertyName); + if (metadata_1) { + var options = { newObject: newValue, object: value, property: propertyName }; + var newType = metadata_1.typeFunction ? metadata_1.typeFunction(options) : metadata_1.reflectedType; + if (metadata_1.options && + metadata_1.options.discriminator && + metadata_1.options.discriminator.property && + metadata_1.options.discriminator.subTypes) { + if (!(value[valueKey] instanceof Array)) { + if (this_1.transformationType === TransformationType.PLAIN_TO_CLASS) { + type = metadata_1.options.discriminator.subTypes.find(function (subType) { + if (subValue && subValue instanceof Object && metadata_1.options.discriminator.property in subValue) { + return subType.name === subValue[metadata_1.options.discriminator.property]; + } + }); + type === undefined ? (type = newType) : (type = type.value); + if (!metadata_1.options.keepDiscriminatorProperty) { + if (subValue && subValue instanceof Object && metadata_1.options.discriminator.property in subValue) { + delete subValue[metadata_1.options.discriminator.property]; + } + } + } + if (this_1.transformationType === TransformationType.CLASS_TO_CLASS) { + type = subValue.constructor; + } + if (this_1.transformationType === TransformationType.CLASS_TO_PLAIN) { + if (subValue) { + subValue[metadata_1.options.discriminator.property] = metadata_1.options.discriminator.subTypes.find(function (subType) { return subType.value === subValue.constructor; }).name; + } + } + } + else { + type = metadata_1; + } + } + else { + type = newType; + } + isSubValueMap = isSubValueMap || metadata_1.reflectedType === Map; + } + else if (this_1.options.targetMaps) { + // try to find a type in target maps + this_1.options.targetMaps + .filter(function (map) { return map.target === targetType && !!map.properties[propertyName]; }) + .forEach(function (map) { return (type = map.properties[propertyName]); }); + } + else if (this_1.options.enableImplicitConversion && + this_1.transformationType === TransformationType.PLAIN_TO_CLASS) { + // if we have no registererd type via the @Type() decorator then we check if we have any + // type declarations in reflect-metadata (type declaration is emited only if some decorator is added to the property.) + var reflectedType = Reflect.getMetadata('design:type', targetType.prototype, propertyName); + if (reflectedType) { + type = reflectedType; + } + } + } + // if value is an array try to get its custom array type + var arrayType_1 = Array.isArray(value[valueKey]) + ? this_1.getReflectedType(targetType, propertyName) + : undefined; + // const subValueKey = TransformationType === TransformationType.PLAIN_TO_CLASS && newKeyName ? newKeyName : key; + var subSource = source ? source[valueKey] : undefined; + // if its deserialization then type if required + // if we uncomment this types like string[] will not work + // if (this.transformationType === TransformationType.PLAIN_TO_CLASS && !type && subValue instanceof Object && !(subValue instanceof Date)) + // throw new Error(`Cannot determine type for ${(targetType as any).name }.${propertyName}, did you forget to specify a @Type?`); + // if newValue is a source object that has method that match newKeyName then skip it + if (newValue.constructor.prototype) { + var descriptor = Object.getOwnPropertyDescriptor(newValue.constructor.prototype, newValueKey); + if ((this_1.transformationType === TransformationType.PLAIN_TO_CLASS || + this_1.transformationType === TransformationType.CLASS_TO_CLASS) && + // eslint-disable-next-line @typescript-eslint/unbound-method + ((descriptor && !descriptor.set) || newValue[newValueKey] instanceof Function)) + return "continue"; + } + if (!this_1.options.enableCircularCheck || !this_1.isCircular(subValue)) { + var transformKey = this_1.transformationType === TransformationType.PLAIN_TO_CLASS ? newValueKey : key; + var finalValue = void 0; + if (this_1.transformationType === TransformationType.CLASS_TO_PLAIN) { + // Get original value + finalValue = value[transformKey]; + // Apply custom transformation + finalValue = this_1.applyCustomTransformations(finalValue, targetType, transformKey, value, this_1.transformationType); + // If nothing change, it means no custom transformation was applied, so use the subValue. + finalValue = value[transformKey] === finalValue ? subValue : finalValue; + // Apply the default transformation + finalValue = this_1.transform(subSource, finalValue, type, arrayType_1, isSubValueMap, level + 1); + } + else { + if (subValue === undefined && this_1.options.exposeDefaultValues) { + // Set default value if nothing provided + finalValue = newValue[newValueKey]; + } + else { + finalValue = this_1.transform(subSource, subValue, type, arrayType_1, isSubValueMap, level + 1); + finalValue = this_1.applyCustomTransformations(finalValue, targetType, transformKey, value, this_1.transformationType); + } + } + if (finalValue !== undefined || this_1.options.exposeUnsetFields) { + if (newValue instanceof Map) { + newValue.set(newValueKey, finalValue); + } + else { + newValue[newValueKey] = finalValue; + } + } + } + else if (this_1.transformationType === TransformationType.CLASS_TO_CLASS) { + var finalValue = subValue; + finalValue = this_1.applyCustomTransformations(finalValue, targetType, key, value, this_1.transformationType); + if (finalValue !== undefined || this_1.options.exposeUnsetFields) { + if (newValue instanceof Map) { + newValue.set(newValueKey, finalValue); + } + else { + newValue[newValueKey] = finalValue; + } + } + } + }; + var this_1 = this; + // traverse over keys + for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) { + var key = keys_1[_i]; + _loop_1(key); + } + if (this.options.enableCircularCheck) { + this.recursionStack.delete(value); + } + return newValue; + } + else { + return value; + } + }; + TransformOperationExecutor.prototype.applyCustomTransformations = function (value, target, key, obj, transformationType) { + var _this = this; + var metadatas = defaultMetadataStorage.findTransformMetadatas(target, key, this.transformationType); + // apply versioning options + if (this.options.version !== undefined) { + metadatas = metadatas.filter(function (metadata) { + if (!metadata.options) + return true; + return _this.checkVersion(metadata.options.since, metadata.options.until); + }); + } + // apply grouping options + if (this.options.groups && this.options.groups.length) { + metadatas = metadatas.filter(function (metadata) { + if (!metadata.options) + return true; + return _this.checkGroups(metadata.options.groups); + }); + } + else { + metadatas = metadatas.filter(function (metadata) { + return !metadata.options || !metadata.options.groups || !metadata.options.groups.length; + }); + } + metadatas.forEach(function (metadata) { + value = metadata.transformFn({ value: value, key: key, obj: obj, type: transformationType, options: _this.options }); + }); + return value; + }; + // preventing circular references + TransformOperationExecutor.prototype.isCircular = function (object) { + return this.recursionStack.has(object); + }; + TransformOperationExecutor.prototype.getReflectedType = function (target, propertyName) { + if (!target) + return undefined; + var meta = defaultMetadataStorage.findTypeMetadata(target, propertyName); + return meta ? meta.reflectedType : undefined; + }; + TransformOperationExecutor.prototype.getKeys = function (target, object, isMap) { + var _this = this; + // determine exclusion strategy + var strategy = defaultMetadataStorage.getStrategy(target); + if (strategy === 'none') + strategy = this.options.strategy || 'exposeAll'; // exposeAll is default strategy + // get all keys that need to expose + var keys = []; + if (strategy === 'exposeAll' || isMap) { + if (object instanceof Map) { + keys = Array.from(object.keys()); + } + else { + keys = Object.keys(object); + } + } + if (isMap) { + // expose & exclude do not apply for map keys only to fields + return keys; + } + /** + * If decorators are ignored but we don't want the extraneous values, then we use the + * metadata to decide which property is needed, but doesn't apply the decorator effect. + */ + if (this.options.ignoreDecorators && this.options.excludeExtraneousValues && target) { + var exposedProperties = defaultMetadataStorage.getExposedProperties(target, this.transformationType); + var excludedProperties = defaultMetadataStorage.getExcludedProperties(target, this.transformationType); + keys = __spreadArray(__spreadArray([], exposedProperties, true), excludedProperties, true); + } + if (!this.options.ignoreDecorators && target) { + // add all exposed to list of keys + var exposedProperties = defaultMetadataStorage.getExposedProperties(target, this.transformationType); + if (this.transformationType === TransformationType.PLAIN_TO_CLASS) { + exposedProperties = exposedProperties.map(function (key) { + var exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key); + if (exposeMetadata && exposeMetadata.options && exposeMetadata.options.name) { + return exposeMetadata.options.name; + } + return key; + }); + } + if (this.options.excludeExtraneousValues) { + keys = exposedProperties; + } + else { + keys = keys.concat(exposedProperties); + } + // exclude excluded properties + var excludedProperties_1 = defaultMetadataStorage.getExcludedProperties(target, this.transformationType); + if (excludedProperties_1.length > 0) { + keys = keys.filter(function (key) { + return !excludedProperties_1.includes(key); + }); + } + // apply versioning options + if (this.options.version !== undefined) { + keys = keys.filter(function (key) { + var exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key); + if (!exposeMetadata || !exposeMetadata.options) + return true; + return _this.checkVersion(exposeMetadata.options.since, exposeMetadata.options.until); + }); + } + // apply grouping options + if (this.options.groups && this.options.groups.length) { + keys = keys.filter(function (key) { + var exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key); + if (!exposeMetadata || !exposeMetadata.options) + return true; + return _this.checkGroups(exposeMetadata.options.groups); + }); + } + else { + keys = keys.filter(function (key) { + var exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key); + return (!exposeMetadata || + !exposeMetadata.options || + !exposeMetadata.options.groups || + !exposeMetadata.options.groups.length); + }); + } + } + // exclude prefixed properties + if (this.options.excludePrefixes && this.options.excludePrefixes.length) { + keys = keys.filter(function (key) { + return _this.options.excludePrefixes.every(function (prefix) { + return key.substr(0, prefix.length) !== prefix; + }); + }); + } + // make sure we have unique keys + keys = keys.filter(function (key, index, self) { + return self.indexOf(key) === index; + }); + return keys; + }; + TransformOperationExecutor.prototype.checkVersion = function (since, until) { + var decision = true; + if (decision && since) + decision = this.options.version >= since; + if (decision && until) + decision = this.options.version < until; + return decision; + }; + TransformOperationExecutor.prototype.checkGroups = function (groups) { + if (!groups) + return true; + return this.options.groups.some(function (optionGroup) { return groups.includes(optionGroup); }); + }; + return TransformOperationExecutor; +}()); +export { TransformOperationExecutor }; +//# sourceMappingURL=TransformOperationExecutor.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/TransformOperationExecutor.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/TransformOperationExecutor.js.map new file mode 100644 index 00000000..cd817d99 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/TransformOperationExecutor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"TransformOperationExecutor.js","sourceRoot":"","sources":["../../src/TransformOperationExecutor.ts"],"names":[],"mappings":"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","sourcesContent":["import { defaultMetadataStorage } from './storage';\nimport { ClassTransformOptions, TypeHelpOptions, TypeMetadata, TypeOptions } from './interfaces';\nimport { TransformationType } from './enums';\nimport { getGlobal, isPromise } from './utils';\n\nfunction instantiateArrayType(arrayType: Function): Array | Set {\n const array = new (arrayType as any)();\n if (!(array instanceof Set) && !('push' in array)) {\n return [];\n }\n return array;\n}\n\nexport class TransformOperationExecutor {\n // -------------------------------------------------------------------------\n // Private Properties\n // -------------------------------------------------------------------------\n\n private recursionStack = new Set>();\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private transformationType: TransformationType, private options: ClassTransformOptions) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n transform(\n source: Record | Record[] | any,\n value: Record | Record[] | any,\n targetType: Function | TypeMetadata,\n arrayType: Function,\n isMap: boolean,\n level: number = 0\n ): any {\n if (Array.isArray(value) || value instanceof Set) {\n const newValue =\n arrayType && this.transformationType === TransformationType.PLAIN_TO_CLASS\n ? instantiateArrayType(arrayType)\n : [];\n (value as any[]).forEach((subValue, index) => {\n const subSource = source ? source[index] : undefined;\n if (!this.options.enableCircularCheck || !this.isCircular(subValue)) {\n let realTargetType;\n if (\n typeof targetType !== 'function' &&\n targetType &&\n targetType.options &&\n targetType.options.discriminator &&\n targetType.options.discriminator.property &&\n targetType.options.discriminator.subTypes\n ) {\n if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n realTargetType = targetType.options.discriminator.subTypes.find(\n subType =>\n subType.name === subValue[(targetType as { options: TypeOptions }).options.discriminator.property]\n );\n const options: TypeHelpOptions = { newObject: newValue, object: subValue, property: undefined };\n const newType = targetType.typeFunction(options);\n realTargetType === undefined ? (realTargetType = newType) : (realTargetType = realTargetType.value);\n if (!targetType.options.keepDiscriminatorProperty)\n delete subValue[targetType.options.discriminator.property];\n }\n\n if (this.transformationType === TransformationType.CLASS_TO_CLASS) {\n realTargetType = subValue.constructor;\n }\n if (this.transformationType === TransformationType.CLASS_TO_PLAIN) {\n subValue[targetType.options.discriminator.property] = targetType.options.discriminator.subTypes.find(\n subType => subType.value === subValue.constructor\n ).name;\n }\n } else {\n realTargetType = targetType;\n }\n const value = this.transform(\n subSource,\n subValue,\n realTargetType,\n undefined,\n subValue instanceof Map,\n level + 1\n );\n\n if (newValue instanceof Set) {\n newValue.add(value);\n } else {\n newValue.push(value);\n }\n } else if (this.transformationType === TransformationType.CLASS_TO_CLASS) {\n if (newValue instanceof Set) {\n newValue.add(subValue);\n } else {\n newValue.push(subValue);\n }\n }\n });\n return newValue;\n } else if (targetType === String && !isMap) {\n if (value === null || value === undefined) return value;\n return String(value);\n } else if (targetType === Number && !isMap) {\n if (value === null || value === undefined) return value;\n return Number(value);\n } else if (targetType === Boolean && !isMap) {\n if (value === null || value === undefined) return value;\n return Boolean(value);\n } else if ((targetType === Date || value instanceof Date) && !isMap) {\n if (value instanceof Date) {\n return new Date(value.valueOf());\n }\n if (value === null || value === undefined) return value;\n return new Date(value);\n } else if (!!getGlobal().Buffer && (targetType === Buffer || value instanceof Buffer) && !isMap) {\n if (value === null || value === undefined) return value;\n return Buffer.from(value);\n } else if (isPromise(value) && !isMap) {\n return new Promise((resolve, reject) => {\n value.then(\n (data: any) => resolve(this.transform(undefined, data, targetType, undefined, undefined, level + 1)),\n reject\n );\n });\n } else if (!isMap && value !== null && typeof value === 'object' && typeof value.then === 'function') {\n // Note: We should not enter this, as promise has been handled above\n // This option simply returns the Promise preventing a JS error from happening and should be an inaccessible path.\n return value; // skip promise transformation\n } else if (typeof value === 'object' && value !== null) {\n // try to guess the type\n if (!targetType && value.constructor !== Object /* && TransformationType === TransformationType.CLASS_TO_PLAIN*/)\n if (!Array.isArray(value) && value.constructor === Array) {\n // Somebody attempts to convert special Array like object to Array, eg:\n // const evilObject = { '100000000': '100000000', __proto__: [] };\n // This could be used to cause Denial-of-service attack so we don't allow it.\n // See prevent-array-bomb.spec.ts for more details.\n } else {\n // We are good we can use the built-in constructor\n targetType = value.constructor;\n }\n if (!targetType && source) targetType = source.constructor;\n\n if (this.options.enableCircularCheck) {\n // add transformed type to prevent circular references\n this.recursionStack.add(value);\n }\n\n const keys = this.getKeys(targetType as Function, value, isMap);\n let newValue: any = source ? source : {};\n if (\n !source &&\n (this.transformationType === TransformationType.PLAIN_TO_CLASS ||\n this.transformationType === TransformationType.CLASS_TO_CLASS)\n ) {\n if (isMap) {\n newValue = new Map();\n } else if (targetType) {\n newValue = new (targetType as any)();\n } else {\n newValue = {};\n }\n }\n\n // traverse over keys\n for (const key of keys) {\n if (key === '__proto__' || key === 'constructor') {\n continue;\n }\n\n const valueKey = key;\n let newValueKey = key,\n propertyName = key;\n if (!this.options.ignoreDecorators && targetType) {\n if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadataByCustomName(targetType as Function, key);\n if (exposeMetadata) {\n propertyName = exposeMetadata.propertyName;\n newValueKey = exposeMetadata.propertyName;\n }\n } else if (\n this.transformationType === TransformationType.CLASS_TO_PLAIN ||\n this.transformationType === TransformationType.CLASS_TO_CLASS\n ) {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadata(targetType as Function, key);\n if (exposeMetadata && exposeMetadata.options && exposeMetadata.options.name) {\n newValueKey = exposeMetadata.options.name;\n }\n }\n }\n\n // get a subvalue\n let subValue: any = undefined;\n if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n /**\n * This section is added for the following report:\n * https://github.com/typestack/class-transformer/issues/596\n *\n * We should not call functions or constructors when transforming to class.\n */\n subValue = value[valueKey];\n } else {\n if (value instanceof Map) {\n subValue = value.get(valueKey);\n } else if (value[valueKey] instanceof Function) {\n subValue = value[valueKey]();\n } else {\n subValue = value[valueKey];\n }\n }\n\n // determine a type\n let type: any = undefined,\n isSubValueMap = subValue instanceof Map;\n if (targetType && isMap) {\n type = targetType;\n } else if (targetType) {\n const metadata = defaultMetadataStorage.findTypeMetadata(targetType as Function, propertyName);\n if (metadata) {\n const options: TypeHelpOptions = { newObject: newValue, object: value, property: propertyName };\n const newType = metadata.typeFunction ? metadata.typeFunction(options) : metadata.reflectedType;\n if (\n metadata.options &&\n metadata.options.discriminator &&\n metadata.options.discriminator.property &&\n metadata.options.discriminator.subTypes\n ) {\n if (!(value[valueKey] instanceof Array)) {\n if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n type = metadata.options.discriminator.subTypes.find(subType => {\n if (subValue && subValue instanceof Object && metadata.options.discriminator.property in subValue) {\n return subType.name === subValue[metadata.options.discriminator.property];\n }\n });\n type === undefined ? (type = newType) : (type = type.value);\n if (!metadata.options.keepDiscriminatorProperty) {\n if (subValue && subValue instanceof Object && metadata.options.discriminator.property in subValue) {\n delete subValue[metadata.options.discriminator.property];\n }\n }\n }\n if (this.transformationType === TransformationType.CLASS_TO_CLASS) {\n type = subValue.constructor;\n }\n if (this.transformationType === TransformationType.CLASS_TO_PLAIN) {\n if (subValue) {\n subValue[metadata.options.discriminator.property] = metadata.options.discriminator.subTypes.find(\n subType => subType.value === subValue.constructor\n ).name;\n }\n }\n } else {\n type = metadata;\n }\n } else {\n type = newType;\n }\n isSubValueMap = isSubValueMap || metadata.reflectedType === Map;\n } else if (this.options.targetMaps) {\n // try to find a type in target maps\n this.options.targetMaps\n .filter(map => map.target === targetType && !!map.properties[propertyName])\n .forEach(map => (type = map.properties[propertyName]));\n } else if (\n this.options.enableImplicitConversion &&\n this.transformationType === TransformationType.PLAIN_TO_CLASS\n ) {\n // if we have no registererd type via the @Type() decorator then we check if we have any\n // type declarations in reflect-metadata (type declaration is emited only if some decorator is added to the property.)\n const reflectedType = (Reflect as any).getMetadata(\n 'design:type',\n (targetType as Function).prototype,\n propertyName\n );\n\n if (reflectedType) {\n type = reflectedType;\n }\n }\n }\n\n // if value is an array try to get its custom array type\n const arrayType = Array.isArray(value[valueKey])\n ? this.getReflectedType(targetType as Function, propertyName)\n : undefined;\n\n // const subValueKey = TransformationType === TransformationType.PLAIN_TO_CLASS && newKeyName ? newKeyName : key;\n const subSource = source ? source[valueKey] : undefined;\n\n // if its deserialization then type if required\n // if we uncomment this types like string[] will not work\n // if (this.transformationType === TransformationType.PLAIN_TO_CLASS && !type && subValue instanceof Object && !(subValue instanceof Date))\n // throw new Error(`Cannot determine type for ${(targetType as any).name }.${propertyName}, did you forget to specify a @Type?`);\n\n // if newValue is a source object that has method that match newKeyName then skip it\n if (newValue.constructor.prototype) {\n const descriptor = Object.getOwnPropertyDescriptor(newValue.constructor.prototype, newValueKey);\n if (\n (this.transformationType === TransformationType.PLAIN_TO_CLASS ||\n this.transformationType === TransformationType.CLASS_TO_CLASS) &&\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ((descriptor && !descriptor.set) || newValue[newValueKey] instanceof Function)\n )\n // || TransformationType === TransformationType.CLASS_TO_CLASS\n continue;\n }\n\n if (!this.options.enableCircularCheck || !this.isCircular(subValue)) {\n const transformKey = this.transformationType === TransformationType.PLAIN_TO_CLASS ? newValueKey : key;\n let finalValue;\n\n if (this.transformationType === TransformationType.CLASS_TO_PLAIN) {\n // Get original value\n finalValue = value[transformKey];\n // Apply custom transformation\n finalValue = this.applyCustomTransformations(\n finalValue,\n targetType as Function,\n transformKey,\n value,\n this.transformationType\n );\n // If nothing change, it means no custom transformation was applied, so use the subValue.\n finalValue = value[transformKey] === finalValue ? subValue : finalValue;\n // Apply the default transformation\n finalValue = this.transform(subSource, finalValue, type, arrayType, isSubValueMap, level + 1);\n } else {\n if (subValue === undefined && this.options.exposeDefaultValues) {\n // Set default value if nothing provided\n finalValue = newValue[newValueKey];\n } else {\n finalValue = this.transform(subSource, subValue, type, arrayType, isSubValueMap, level + 1);\n finalValue = this.applyCustomTransformations(\n finalValue,\n targetType as Function,\n transformKey,\n value,\n this.transformationType\n );\n }\n }\n\n if (finalValue !== undefined || this.options.exposeUnsetFields) {\n if (newValue instanceof Map) {\n newValue.set(newValueKey, finalValue);\n } else {\n newValue[newValueKey] = finalValue;\n }\n }\n } else if (this.transformationType === TransformationType.CLASS_TO_CLASS) {\n let finalValue = subValue;\n finalValue = this.applyCustomTransformations(\n finalValue,\n targetType as Function,\n key,\n value,\n this.transformationType\n );\n if (finalValue !== undefined || this.options.exposeUnsetFields) {\n if (newValue instanceof Map) {\n newValue.set(newValueKey, finalValue);\n } else {\n newValue[newValueKey] = finalValue;\n }\n }\n }\n }\n\n if (this.options.enableCircularCheck) {\n this.recursionStack.delete(value);\n }\n\n return newValue;\n } else {\n return value;\n }\n }\n\n private applyCustomTransformations(\n value: any,\n target: Function,\n key: string,\n obj: any,\n transformationType: TransformationType\n ): boolean {\n let metadatas = defaultMetadataStorage.findTransformMetadatas(target, key, this.transformationType);\n\n // apply versioning options\n if (this.options.version !== undefined) {\n metadatas = metadatas.filter(metadata => {\n if (!metadata.options) return true;\n\n return this.checkVersion(metadata.options.since, metadata.options.until);\n });\n }\n\n // apply grouping options\n if (this.options.groups && this.options.groups.length) {\n metadatas = metadatas.filter(metadata => {\n if (!metadata.options) return true;\n\n return this.checkGroups(metadata.options.groups);\n });\n } else {\n metadatas = metadatas.filter(metadata => {\n return !metadata.options || !metadata.options.groups || !metadata.options.groups.length;\n });\n }\n\n metadatas.forEach(metadata => {\n value = metadata.transformFn({ value, key, obj, type: transformationType, options: this.options });\n });\n\n return value;\n }\n\n // preventing circular references\n private isCircular(object: Record): boolean {\n return this.recursionStack.has(object);\n }\n\n private getReflectedType(target: Function, propertyName: string): Function | undefined {\n if (!target) return undefined;\n const meta = defaultMetadataStorage.findTypeMetadata(target, propertyName);\n return meta ? meta.reflectedType : undefined;\n }\n\n private getKeys(target: Function, object: Record, isMap: boolean): string[] {\n // determine exclusion strategy\n let strategy = defaultMetadataStorage.getStrategy(target);\n if (strategy === 'none') strategy = this.options.strategy || 'exposeAll'; // exposeAll is default strategy\n\n // get all keys that need to expose\n let keys: any[] = [];\n if (strategy === 'exposeAll' || isMap) {\n if (object instanceof Map) {\n keys = Array.from(object.keys());\n } else {\n keys = Object.keys(object);\n }\n }\n\n if (isMap) {\n // expose & exclude do not apply for map keys only to fields\n return keys;\n }\n\n /**\n * If decorators are ignored but we don't want the extraneous values, then we use the\n * metadata to decide which property is needed, but doesn't apply the decorator effect.\n */\n if (this.options.ignoreDecorators && this.options.excludeExtraneousValues && target) {\n const exposedProperties = defaultMetadataStorage.getExposedProperties(target, this.transformationType);\n const excludedProperties = defaultMetadataStorage.getExcludedProperties(target, this.transformationType);\n keys = [...exposedProperties, ...excludedProperties];\n }\n\n if (!this.options.ignoreDecorators && target) {\n // add all exposed to list of keys\n let exposedProperties = defaultMetadataStorage.getExposedProperties(target, this.transformationType);\n if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n exposedProperties = exposedProperties.map(key => {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n if (exposeMetadata && exposeMetadata.options && exposeMetadata.options.name) {\n return exposeMetadata.options.name;\n }\n\n return key;\n });\n }\n if (this.options.excludeExtraneousValues) {\n keys = exposedProperties;\n } else {\n keys = keys.concat(exposedProperties);\n }\n\n // exclude excluded properties\n const excludedProperties = defaultMetadataStorage.getExcludedProperties(target, this.transformationType);\n if (excludedProperties.length > 0) {\n keys = keys.filter(key => {\n return !excludedProperties.includes(key);\n });\n }\n\n // apply versioning options\n if (this.options.version !== undefined) {\n keys = keys.filter(key => {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n if (!exposeMetadata || !exposeMetadata.options) return true;\n\n return this.checkVersion(exposeMetadata.options.since, exposeMetadata.options.until);\n });\n }\n\n // apply grouping options\n if (this.options.groups && this.options.groups.length) {\n keys = keys.filter(key => {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n if (!exposeMetadata || !exposeMetadata.options) return true;\n\n return this.checkGroups(exposeMetadata.options.groups);\n });\n } else {\n keys = keys.filter(key => {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n return (\n !exposeMetadata ||\n !exposeMetadata.options ||\n !exposeMetadata.options.groups ||\n !exposeMetadata.options.groups.length\n );\n });\n }\n }\n\n // exclude prefixed properties\n if (this.options.excludePrefixes && this.options.excludePrefixes.length) {\n keys = keys.filter(key =>\n this.options.excludePrefixes.every(prefix => {\n return key.substr(0, prefix.length) !== prefix;\n })\n );\n }\n\n // make sure we have unique keys\n keys = keys.filter((key, index, self) => {\n return self.indexOf(key) === index;\n });\n\n return keys;\n }\n\n private checkVersion(since: number, until: number): boolean {\n let decision = true;\n if (decision && since) decision = this.options.version >= since;\n if (decision && until) decision = this.options.version < until;\n\n return decision;\n }\n\n private checkGroups(groups: string[]): boolean {\n if (!groups) return true;\n\n return this.options.groups.some(optionGroup => groups.includes(optionGroup));\n }\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/constants/default-options.constant.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/constants/default-options.constant.js new file mode 100644 index 00000000..7db66e44 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/constants/default-options.constant.js @@ -0,0 +1,17 @@ +/** + * These are the default options used by any transformation operation. + */ +export var defaultOptions = { + enableCircularCheck: false, + enableImplicitConversion: false, + excludeExtraneousValues: false, + excludePrefixes: undefined, + exposeDefaultValues: false, + exposeUnsetFields: true, + groups: undefined, + ignoreDecorators: false, + strategy: undefined, + targetMaps: undefined, + version: undefined, +}; +//# sourceMappingURL=default-options.constant.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/constants/default-options.constant.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/constants/default-options.constant.js.map new file mode 100644 index 00000000..25210914 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/constants/default-options.constant.js.map @@ -0,0 +1 @@ +{"version":3,"file":"default-options.constant.js","sourceRoot":"","sources":["../../../src/constants/default-options.constant.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,IAAM,cAAc,GAAmC;IAC5D,mBAAmB,EAAE,KAAK;IAC1B,wBAAwB,EAAE,KAAK;IAC/B,uBAAuB,EAAE,KAAK;IAC9B,eAAe,EAAE,SAAS;IAC1B,mBAAmB,EAAE,KAAK;IAC1B,iBAAiB,EAAE,IAAI;IACvB,MAAM,EAAE,SAAS;IACjB,gBAAgB,EAAE,KAAK;IACvB,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,SAAS;IACrB,OAAO,EAAE,SAAS;CACnB,CAAC","sourcesContent":["import { ClassTransformOptions } from '../interfaces/class-transformer-options.interface';\n\n/**\n * These are the default options used by any transformation operation.\n */\nexport const defaultOptions: Partial = {\n enableCircularCheck: false,\n enableImplicitConversion: false,\n excludeExtraneousValues: false,\n excludePrefixes: undefined,\n exposeDefaultValues: false,\n exposeUnsetFields: true,\n groups: undefined,\n ignoreDecorators: false,\n strategy: undefined,\n targetMaps: undefined,\n version: undefined,\n};\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/exclude.decorator.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/exclude.decorator.js new file mode 100644 index 00000000..33928c9d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/exclude.decorator.js @@ -0,0 +1,25 @@ +import { defaultMetadataStorage } from '../storage'; +/** + * Marks the given class or property as excluded. By default the property is excluded in both + * constructorToPlain and plainToConstructor transformations. It can be limited to only one direction + * via using the `toPlainOnly` or `toClassOnly` option. + * + * Can be applied to class definitions and properties. + */ +export function Exclude(options) { + if (options === void 0) { options = {}; } + /** + * NOTE: The `propertyName` property must be marked as optional because + * this decorator used both as a class and a property decorator and the + * Typescript compiler will freak out if we make it mandatory as a class + * decorator only receives one parameter. + */ + return function (object, propertyName) { + defaultMetadataStorage.addExcludeMetadata({ + target: object instanceof Function ? object : object.constructor, + propertyName: propertyName, + options: options, + }); + }; +} +//# sourceMappingURL=exclude.decorator.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/exclude.decorator.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/exclude.decorator.js.map new file mode 100644 index 00000000..43501f40 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/exclude.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"exclude.decorator.js","sourceRoot":"","sources":["../../../src/decorators/exclude.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGpD;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAAC,OAA4B;IAA5B,wBAAA,EAAA,YAA4B;IAClD;;;;;OAKG;IACH,OAAO,UAAU,MAAW,EAAE,YAA8B;QAC1D,sBAAsB,CAAC,kBAAkB,CAAC;YACxC,MAAM,EAAE,MAAM,YAAY,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW;YAChE,YAAY,EAAE,YAAsB;YACpC,OAAO,SAAA;SACR,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { defaultMetadataStorage } from '../storage';\nimport { ExcludeOptions } from '../interfaces';\n\n/**\n * Marks the given class or property as excluded. By default the property is excluded in both\n * constructorToPlain and plainToConstructor transformations. It can be limited to only one direction\n * via using the `toPlainOnly` or `toClassOnly` option.\n *\n * Can be applied to class definitions and properties.\n */\nexport function Exclude(options: ExcludeOptions = {}): PropertyDecorator & ClassDecorator {\n /**\n * NOTE: The `propertyName` property must be marked as optional because\n * this decorator used both as a class and a property decorator and the\n * Typescript compiler will freak out if we make it mandatory as a class\n * decorator only receives one parameter.\n */\n return function (object: any, propertyName?: string | Symbol): void {\n defaultMetadataStorage.addExcludeMetadata({\n target: object instanceof Function ? object : object.constructor,\n propertyName: propertyName as string,\n options,\n });\n };\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/expose.decorator.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/expose.decorator.js new file mode 100644 index 00000000..78f26da3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/expose.decorator.js @@ -0,0 +1,25 @@ +import { defaultMetadataStorage } from '../storage'; +/** + * Marks the given class or property as included. By default the property is included in both + * constructorToPlain and plainToConstructor transformations. It can be limited to only one direction + * via using the `toPlainOnly` or `toClassOnly` option. + * + * Can be applied to class definitions and properties. + */ +export function Expose(options) { + if (options === void 0) { options = {}; } + /** + * NOTE: The `propertyName` property must be marked as optional because + * this decorator used both as a class and a property decorator and the + * Typescript compiler will freak out if we make it mandatory as a class + * decorator only receives one parameter. + */ + return function (object, propertyName) { + defaultMetadataStorage.addExposeMetadata({ + target: object instanceof Function ? object : object.constructor, + propertyName: propertyName, + options: options, + }); + }; +} +//# sourceMappingURL=expose.decorator.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/expose.decorator.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/expose.decorator.js.map new file mode 100644 index 00000000..ddbb0254 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/expose.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"expose.decorator.js","sourceRoot":"","sources":["../../../src/decorators/expose.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGpD;;;;;;GAMG;AACH,MAAM,UAAU,MAAM,CAAC,OAA2B;IAA3B,wBAAA,EAAA,YAA2B;IAChD;;;;;OAKG;IACH,OAAO,UAAU,MAAW,EAAE,YAA8B;QAC1D,sBAAsB,CAAC,iBAAiB,CAAC;YACvC,MAAM,EAAE,MAAM,YAAY,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW;YAChE,YAAY,EAAE,YAAsB;YACpC,OAAO,SAAA;SACR,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { defaultMetadataStorage } from '../storage';\nimport { ExposeOptions } from '../interfaces';\n\n/**\n * Marks the given class or property as included. By default the property is included in both\n * constructorToPlain and plainToConstructor transformations. It can be limited to only one direction\n * via using the `toPlainOnly` or `toClassOnly` option.\n *\n * Can be applied to class definitions and properties.\n */\nexport function Expose(options: ExposeOptions = {}): PropertyDecorator & ClassDecorator {\n /**\n * NOTE: The `propertyName` property must be marked as optional because\n * this decorator used both as a class and a property decorator and the\n * Typescript compiler will freak out if we make it mandatory as a class\n * decorator only receives one parameter.\n */\n return function (object: any, propertyName?: string | Symbol): void {\n defaultMetadataStorage.addExposeMetadata({\n target: object instanceof Function ? object : object.constructor,\n propertyName: propertyName as string,\n options,\n });\n };\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/index.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/index.js new file mode 100644 index 00000000..300a364e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/index.js @@ -0,0 +1,8 @@ +export * from './exclude.decorator'; +export * from './expose.decorator'; +export * from './transform-instance-to-instance.decorator'; +export * from './transform-instance-to-plain.decorator'; +export * from './transform-plain-to-instance.decorator'; +export * from './transform.decorator'; +export * from './type.decorator'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/index.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/index.js.map new file mode 100644 index 00000000..16c9a115 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decorators/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4CAA4C,CAAC;AAC3D,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC","sourcesContent":["export * from './exclude.decorator';\nexport * from './expose.decorator';\nexport * from './transform-instance-to-instance.decorator';\nexport * from './transform-instance-to-plain.decorator';\nexport * from './transform-plain-to-instance.decorator';\nexport * from './transform.decorator';\nexport * from './type.decorator';\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform-instance-to-instance.decorator.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform-instance-to-instance.decorator.js new file mode 100644 index 00000000..99b1700b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform-instance-to-instance.decorator.js @@ -0,0 +1,24 @@ +import { ClassTransformer } from '../ClassTransformer'; +/** + * Return the class instance only with the exposed properties. + * + * Can be applied to functions and getters/setters only. + */ +export function TransformInstanceToInstance(params) { + return function (target, propertyKey, descriptor) { + var classTransformer = new ClassTransformer(); + var originalMethod = descriptor.value; + descriptor.value = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var result = originalMethod.apply(this, args); + var isPromise = !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function'; + return isPromise + ? result.then(function (data) { return classTransformer.instanceToInstance(data, params); }) + : classTransformer.instanceToInstance(result, params); + }; + }; +} +//# sourceMappingURL=transform-instance-to-instance.decorator.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform-instance-to-instance.decorator.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform-instance-to-instance.decorator.js.map new file mode 100644 index 00000000..5ddee6d7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform-instance-to-instance.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transform-instance-to-instance.decorator.js","sourceRoot":"","sources":["../../../src/decorators/transform-instance-to-instance.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAA8B;IACxE,OAAO,UAAU,MAA2B,EAAE,WAA4B,EAAE,UAA8B;QACxG,IAAM,gBAAgB,GAAqB,IAAI,gBAAgB,EAAE,CAAC;QAClE,IAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;QAExC,UAAU,CAAC,KAAK,GAAG;YAAU,cAAc;iBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;gBAAd,yBAAc;;YACzC,IAAM,MAAM,GAAQ,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACrD,IAAM,SAAS,GACb,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,UAAU,CAAC,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC;YAChH,OAAO,SAAS;gBACd,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAC,IAAS,IAAK,OAAA,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,EAAjD,CAAiD,CAAC;gBAC/E,CAAC,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1D,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { ClassTransformer } from '../ClassTransformer';\nimport { ClassTransformOptions } from '../interfaces';\n\n/**\n * Return the class instance only with the exposed properties.\n *\n * Can be applied to functions and getters/setters only.\n */\nexport function TransformInstanceToInstance(params?: ClassTransformOptions): MethodDecorator {\n return function (target: Record, propertyKey: string | Symbol, descriptor: PropertyDescriptor): void {\n const classTransformer: ClassTransformer = new ClassTransformer();\n const originalMethod = descriptor.value;\n\n descriptor.value = function (...args: any[]): Record {\n const result: any = originalMethod.apply(this, args);\n const isPromise =\n !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function';\n return isPromise\n ? result.then((data: any) => classTransformer.instanceToInstance(data, params))\n : classTransformer.instanceToInstance(result, params);\n };\n };\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform-instance-to-plain.decorator.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform-instance-to-plain.decorator.js new file mode 100644 index 00000000..fd465d8a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform-instance-to-plain.decorator.js @@ -0,0 +1,24 @@ +import { ClassTransformer } from '../ClassTransformer'; +/** + * Transform the object from class to plain object and return only with the exposed properties. + * + * Can be applied to functions and getters/setters only. + */ +export function TransformInstanceToPlain(params) { + return function (target, propertyKey, descriptor) { + var classTransformer = new ClassTransformer(); + var originalMethod = descriptor.value; + descriptor.value = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var result = originalMethod.apply(this, args); + var isPromise = !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function'; + return isPromise + ? result.then(function (data) { return classTransformer.instanceToPlain(data, params); }) + : classTransformer.instanceToPlain(result, params); + }; + }; +} +//# sourceMappingURL=transform-instance-to-plain.decorator.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform-instance-to-plain.decorator.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform-instance-to-plain.decorator.js.map new file mode 100644 index 00000000..5442507c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform-instance-to-plain.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transform-instance-to-plain.decorator.js","sourceRoot":"","sources":["../../../src/decorators/transform-instance-to-plain.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAA8B;IACrE,OAAO,UAAU,MAA2B,EAAE,WAA4B,EAAE,UAA8B;QACxG,IAAM,gBAAgB,GAAqB,IAAI,gBAAgB,EAAE,CAAC;QAClE,IAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;QAExC,UAAU,CAAC,KAAK,GAAG;YAAU,cAAc;iBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;gBAAd,yBAAc;;YACzC,IAAM,MAAM,GAAQ,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACrD,IAAM,SAAS,GACb,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,UAAU,CAAC,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC;YAChH,OAAO,SAAS;gBACd,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAC,IAAS,IAAK,OAAA,gBAAgB,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,EAA9C,CAA8C,CAAC;gBAC5E,CAAC,CAAC,gBAAgB,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACvD,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { ClassTransformer } from '../ClassTransformer';\nimport { ClassTransformOptions } from '../interfaces';\n\n/**\n * Transform the object from class to plain object and return only with the exposed properties.\n *\n * Can be applied to functions and getters/setters only.\n */\nexport function TransformInstanceToPlain(params?: ClassTransformOptions): MethodDecorator {\n return function (target: Record, propertyKey: string | Symbol, descriptor: PropertyDescriptor): void {\n const classTransformer: ClassTransformer = new ClassTransformer();\n const originalMethod = descriptor.value;\n\n descriptor.value = function (...args: any[]): Record {\n const result: any = originalMethod.apply(this, args);\n const isPromise =\n !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function';\n return isPromise\n ? result.then((data: any) => classTransformer.instanceToPlain(data, params))\n : classTransformer.instanceToPlain(result, params);\n };\n };\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform-plain-to-instance.decorator.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform-plain-to-instance.decorator.js new file mode 100644 index 00000000..aae11828 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform-plain-to-instance.decorator.js @@ -0,0 +1,24 @@ +import { ClassTransformer } from '../ClassTransformer'; +/** + * Return the class instance only with the exposed properties. + * + * Can be applied to functions and getters/setters only. + */ +export function TransformPlainToInstance(classType, params) { + return function (target, propertyKey, descriptor) { + var classTransformer = new ClassTransformer(); + var originalMethod = descriptor.value; + descriptor.value = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var result = originalMethod.apply(this, args); + var isPromise = !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function'; + return isPromise + ? result.then(function (data) { return classTransformer.plainToInstance(classType, data, params); }) + : classTransformer.plainToInstance(classType, result, params); + }; + }; +} +//# sourceMappingURL=transform-plain-to-instance.decorator.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform-plain-to-instance.decorator.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform-plain-to-instance.decorator.js.map new file mode 100644 index 00000000..6d4bf8e2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform-plain-to-instance.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transform-plain-to-instance.decorator.js","sourceRoot":"","sources":["../../../src/decorators/transform-plain-to-instance.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CACtC,SAAgC,EAChC,MAA8B;IAE9B,OAAO,UAAU,MAA2B,EAAE,WAA4B,EAAE,UAA8B;QACxG,IAAM,gBAAgB,GAAqB,IAAI,gBAAgB,EAAE,CAAC;QAClE,IAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;QAExC,UAAU,CAAC,KAAK,GAAG;YAAU,cAAc;iBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;gBAAd,yBAAc;;YACzC,IAAM,MAAM,GAAQ,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACrD,IAAM,SAAS,GACb,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,UAAU,CAAC,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC;YAChH,OAAO,SAAS;gBACd,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAC,IAAS,IAAK,OAAA,gBAAgB,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,EAAzD,CAAyD,CAAC;gBACvF,CAAC,CAAC,gBAAgB,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAClE,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { ClassTransformer } from '../ClassTransformer';\nimport { ClassTransformOptions, ClassConstructor } from '../interfaces';\n\n/**\n * Return the class instance only with the exposed properties.\n *\n * Can be applied to functions and getters/setters only.\n */\nexport function TransformPlainToInstance(\n classType: ClassConstructor,\n params?: ClassTransformOptions\n): MethodDecorator {\n return function (target: Record, propertyKey: string | Symbol, descriptor: PropertyDescriptor): void {\n const classTransformer: ClassTransformer = new ClassTransformer();\n const originalMethod = descriptor.value;\n\n descriptor.value = function (...args: any[]): Record {\n const result: any = originalMethod.apply(this, args);\n const isPromise =\n !!result && (typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function';\n return isPromise\n ? result.then((data: any) => classTransformer.plainToInstance(classType, data, params))\n : classTransformer.plainToInstance(classType, result, params);\n };\n };\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform.decorator.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform.decorator.js new file mode 100644 index 00000000..a93de376 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform.decorator.js @@ -0,0 +1,18 @@ +import { defaultMetadataStorage } from '../storage'; +/** + * Defines a custom logic for value transformation. + * + * Can be applied to properties only. + */ +export function Transform(transformFn, options) { + if (options === void 0) { options = {}; } + return function (target, propertyName) { + defaultMetadataStorage.addTransformMetadata({ + target: target.constructor, + propertyName: propertyName, + transformFn: transformFn, + options: options, + }); + }; +} +//# sourceMappingURL=transform.decorator.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform.decorator.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform.decorator.js.map new file mode 100644 index 00000000..0abbd8e6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/transform.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transform.decorator.js","sourceRoot":"","sources":["../../../src/decorators/transform.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGpD;;;;GAIG;AACH,MAAM,UAAU,SAAS,CACvB,WAA+C,EAC/C,OAA8B;IAA9B,wBAAA,EAAA,YAA8B;IAE9B,OAAO,UAAU,MAAW,EAAE,YAA6B;QACzD,sBAAsB,CAAC,oBAAoB,CAAC;YAC1C,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAsB;YACpC,WAAW,aAAA;YACX,OAAO,SAAA;SACR,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { defaultMetadataStorage } from '../storage';\nimport { TransformFnParams, TransformOptions } from '../interfaces';\n\n/**\n * Defines a custom logic for value transformation.\n *\n * Can be applied to properties only.\n */\nexport function Transform(\n transformFn: (params: TransformFnParams) => any,\n options: TransformOptions = {}\n): PropertyDecorator {\n return function (target: any, propertyName: string | Symbol): void {\n defaultMetadataStorage.addTransformMetadata({\n target: target.constructor,\n propertyName: propertyName as string,\n transformFn,\n options,\n });\n };\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/type.decorator.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/type.decorator.js new file mode 100644 index 00000000..f4aca2f4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/type.decorator.js @@ -0,0 +1,21 @@ +import { defaultMetadataStorage } from '../storage'; +/** + * Specifies a type of the property. + * The given TypeFunction can return a constructor. A discriminator can be given in the options. + * + * Can be applied to properties only. + */ +export function Type(typeFunction, options) { + if (options === void 0) { options = {}; } + return function (target, propertyName) { + var reflectedType = Reflect.getMetadata('design:type', target, propertyName); + defaultMetadataStorage.addTypeMetadata({ + target: target.constructor, + propertyName: propertyName, + reflectedType: reflectedType, + typeFunction: typeFunction, + options: options, + }); + }; +} +//# sourceMappingURL=type.decorator.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/type.decorator.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/type.decorator.js.map new file mode 100644 index 00000000..a84f6e6e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/decorators/type.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"type.decorator.js","sourceRoot":"","sources":["../../../src/decorators/type.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGpD;;;;;GAKG;AACH,MAAM,UAAU,IAAI,CAClB,YAAmD,EACnD,OAAyB;IAAzB,wBAAA,EAAA,YAAyB;IAEzB,OAAO,UAAU,MAAW,EAAE,YAA6B;QACzD,IAAM,aAAa,GAAI,OAAe,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QACxF,sBAAsB,CAAC,eAAe,CAAC;YACrC,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAsB;YACpC,aAAa,eAAA;YACb,YAAY,cAAA;YACZ,OAAO,SAAA;SACR,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { defaultMetadataStorage } from '../storage';\nimport { TypeHelpOptions, TypeOptions } from '../interfaces';\n\n/**\n * Specifies a type of the property.\n * The given TypeFunction can return a constructor. A discriminator can be given in the options.\n *\n * Can be applied to properties only.\n */\nexport function Type(\n typeFunction?: (type?: TypeHelpOptions) => Function,\n options: TypeOptions = {}\n): PropertyDecorator {\n return function (target: any, propertyName: string | Symbol): void {\n const reflectedType = (Reflect as any).getMetadata('design:type', target, propertyName);\n defaultMetadataStorage.addTypeMetadata({\n target: target.constructor,\n propertyName: propertyName as string,\n reflectedType,\n typeFunction,\n options,\n });\n };\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/enums/index.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/enums/index.js new file mode 100644 index 00000000..281d8c91 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/enums/index.js @@ -0,0 +1,2 @@ +export * from './transformation-type.enum'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/enums/index.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/enums/index.js.map new file mode 100644 index 00000000..19bdc25b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/enums/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/enums/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC","sourcesContent":["export * from './transformation-type.enum';\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/enums/transformation-type.enum.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/enums/transformation-type.enum.js new file mode 100644 index 00000000..fdef8bff --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/enums/transformation-type.enum.js @@ -0,0 +1,7 @@ +export var TransformationType; +(function (TransformationType) { + TransformationType[TransformationType["PLAIN_TO_CLASS"] = 0] = "PLAIN_TO_CLASS"; + TransformationType[TransformationType["CLASS_TO_PLAIN"] = 1] = "CLASS_TO_PLAIN"; + TransformationType[TransformationType["CLASS_TO_CLASS"] = 2] = "CLASS_TO_CLASS"; +})(TransformationType || (TransformationType = {})); +//# sourceMappingURL=transformation-type.enum.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/enums/transformation-type.enum.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/enums/transformation-type.enum.js.map new file mode 100644 index 00000000..d4da5bd8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/enums/transformation-type.enum.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transformation-type.enum.js","sourceRoot":"","sources":["../../../src/enums/transformation-type.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC5B,+EAAc,CAAA;IACd,+EAAc,CAAA;IACd,+EAAc,CAAA;AAChB,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,QAI7B","sourcesContent":["export enum TransformationType {\n PLAIN_TO_CLASS,\n CLASS_TO_PLAIN,\n CLASS_TO_CLASS,\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/index.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/index.js new file mode 100644 index 00000000..b3948969 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/index.js @@ -0,0 +1,57 @@ +import { ClassTransformer } from './ClassTransformer'; +export { ClassTransformer } from './ClassTransformer'; +export * from './decorators'; +export * from './interfaces'; +export * from './enums'; +var classTransformer = new ClassTransformer(); +export function classToPlain(object, options) { + return classTransformer.instanceToPlain(object, options); +} +export function instanceToPlain(object, options) { + return classTransformer.instanceToPlain(object, options); +} +export function classToPlainFromExist(object, plainObject, options) { + return classTransformer.classToPlainFromExist(object, plainObject, options); +} +export function plainToClass(cls, plain, options) { + return classTransformer.plainToInstance(cls, plain, options); +} +export function plainToInstance(cls, plain, options) { + return classTransformer.plainToInstance(cls, plain, options); +} +export function plainToClassFromExist(clsObject, plain, options) { + return classTransformer.plainToClassFromExist(clsObject, plain, options); +} +export function instanceToInstance(object, options) { + return classTransformer.instanceToInstance(object, options); +} +export function classToClassFromExist(object, fromObject, options) { + return classTransformer.classToClassFromExist(object, fromObject, options); +} +export function serialize(object, options) { + return classTransformer.serialize(object, options); +} +/** + * Deserializes given JSON string to a object of the given class. + * + * @deprecated This function is being removed. Please use the following instead: + * ``` + * instanceToClass(cls, JSON.parse(json), options) + * ``` + */ +export function deserialize(cls, json, options) { + return classTransformer.deserialize(cls, json, options); +} +/** + * Deserializes given JSON string to an array of objects of the given class. + * + * @deprecated This function is being removed. Please use the following instead: + * ``` + * JSON.parse(json).map(value => instanceToClass(cls, value, options)) + * ``` + * + */ +export function deserializeArray(cls, json, options) { + return classTransformer.deserializeArray(cls, json, options); +} +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/index.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/index.js.map new file mode 100644 index 00000000..3b1626fc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAItD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AAExB,IAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;AAShD,MAAM,UAAU,YAAY,CAC1B,MAAe,EACf,OAA+B;IAE/B,OAAO,gBAAgB,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC;AAOD,MAAM,UAAU,eAAe,CAC7B,MAAe,EACf,OAA+B;IAE/B,OAAO,gBAAgB,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC;AAmBD,MAAM,UAAU,qBAAqB,CACnC,MAAS,EACT,WAAwD,EACxD,OAA+B;IAE/B,OAAO,gBAAgB,CAAC,qBAAqB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AAC9E,CAAC;AASD,MAAM,UAAU,YAAY,CAAO,GAAwB,EAAE,KAAc,EAAE,OAA+B;IAC1G,OAAO,gBAAgB,CAAC,eAAe,CAAC,GAAG,EAAE,KAAY,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAOD,MAAM,UAAU,eAAe,CAC7B,GAAwB,EACxB,KAAc,EACd,OAA+B;IAE/B,OAAO,gBAAgB,CAAC,eAAe,CAAC,GAAG,EAAE,KAAY,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAWD,MAAM,UAAU,qBAAqB,CAAO,SAAY,EAAE,KAAc,EAAE,OAA+B;IACvG,OAAO,gBAAgB,CAAC,qBAAqB,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAC3E,CAAC;AAOD,MAAM,UAAU,kBAAkB,CAAI,MAAe,EAAE,OAA+B;IACpF,OAAO,gBAAgB,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AAWD,MAAM,UAAU,qBAAqB,CAAI,MAAS,EAAE,UAAmB,EAAE,OAA+B;IACtG,OAAO,gBAAgB,CAAC,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAC7E,CAAC;AAYD,MAAM,UAAU,SAAS,CAAI,MAAe,EAAE,OAA+B;IAC3E,OAAO,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAI,GAAwB,EAAE,IAAY,EAAE,OAA+B;IACpG,OAAO,gBAAgB,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAI,GAAwB,EAAE,IAAY,EAAE,OAA+B;IACzG,OAAO,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/D,CAAC","sourcesContent":["import { ClassTransformer } from './ClassTransformer';\nimport { ClassTransformOptions } from './interfaces';\nimport { ClassConstructor } from './interfaces';\n\nexport { ClassTransformer } from './ClassTransformer';\nexport * from './decorators';\nexport * from './interfaces';\nexport * from './enums';\n\nconst classTransformer = new ClassTransformer();\n\n/**\n * Converts class (constructor) object to plain (literal) object. Also works with arrays.\n *\n * @deprecated Function name changed, use the `instanceToPlain` method instead.\n */\nexport function classToPlain(object: T, options?: ClassTransformOptions): Record;\nexport function classToPlain(object: T[], options?: ClassTransformOptions): Record[];\nexport function classToPlain(\n object: T | T[],\n options?: ClassTransformOptions\n): Record | Record[] {\n return classTransformer.instanceToPlain(object, options);\n}\n\n/**\n * Converts class (constructor) object to plain (literal) object. Also works with arrays.\n */\nexport function instanceToPlain(object: T, options?: ClassTransformOptions): Record;\nexport function instanceToPlain(object: T[], options?: ClassTransformOptions): Record[];\nexport function instanceToPlain(\n object: T | T[],\n options?: ClassTransformOptions\n): Record | Record[] {\n return classTransformer.instanceToPlain(object, options);\n}\n\n/**\n * Converts class (constructor) object to plain (literal) object.\n * Uses given plain object as source object (it means fills given plain object with data from class object).\n * Also works with arrays.\n *\n * @deprecated This function is being removed.\n */\nexport function classToPlainFromExist(\n object: T,\n plainObject: Record,\n options?: ClassTransformOptions\n): Record;\nexport function classToPlainFromExist(\n object: T,\n plainObjects: Record[],\n options?: ClassTransformOptions\n): Record[];\nexport function classToPlainFromExist(\n object: T,\n plainObject: Record | Record[],\n options?: ClassTransformOptions\n): Record | Record[] {\n return classTransformer.classToPlainFromExist(object, plainObject, options);\n}\n\n/**\n * Converts plain (literal) object to class (constructor) object. Also works with arrays.\n *\n * @deprecated Function name changed, use the `plainToInstance` method instead.\n */\nexport function plainToClass(cls: ClassConstructor, plain: V[], options?: ClassTransformOptions): T[];\nexport function plainToClass(cls: ClassConstructor, plain: V, options?: ClassTransformOptions): T;\nexport function plainToClass(cls: ClassConstructor, plain: V | V[], options?: ClassTransformOptions): T | T[] {\n return classTransformer.plainToInstance(cls, plain as any, options);\n}\n\n/**\n * Converts plain (literal) object to class (constructor) object. Also works with arrays.\n */\nexport function plainToInstance(cls: ClassConstructor, plain: V[], options?: ClassTransformOptions): T[];\nexport function plainToInstance(cls: ClassConstructor, plain: V, options?: ClassTransformOptions): T;\nexport function plainToInstance(\n cls: ClassConstructor,\n plain: V | V[],\n options?: ClassTransformOptions\n): T | T[] {\n return classTransformer.plainToInstance(cls, plain as any, options);\n}\n\n/**\n * Converts plain (literal) object to class (constructor) object.\n * Uses given object as source object (it means fills given object with data from plain object).\n * Also works with arrays.\n *\n * @deprecated This function is being removed. The current implementation is incorrect as it modifies the source object.\n */\nexport function plainToClassFromExist(clsObject: T[], plain: V[], options?: ClassTransformOptions): T[];\nexport function plainToClassFromExist(clsObject: T, plain: V, options?: ClassTransformOptions): T;\nexport function plainToClassFromExist(clsObject: T, plain: V | V[], options?: ClassTransformOptions): T | T[] {\n return classTransformer.plainToClassFromExist(clsObject, plain, options);\n}\n\n/**\n * Converts class (constructor) object to new class (constructor) object. Also works with arrays.\n */\nexport function instanceToInstance(object: T, options?: ClassTransformOptions): T;\nexport function instanceToInstance(object: T[], options?: ClassTransformOptions): T[];\nexport function instanceToInstance(object: T | T[], options?: ClassTransformOptions): T | T[] {\n return classTransformer.instanceToInstance(object, options);\n}\n\n/**\n * Converts class (constructor) object to plain (literal) object.\n * Uses given plain object as source object (it means fills given plain object with data from class object).\n * Also works with arrays.\n *\n * @deprecated This function is being removed. The current implementation is incorrect as it modifies the source object.\n */\nexport function classToClassFromExist(object: T, fromObject: T, options?: ClassTransformOptions): T;\nexport function classToClassFromExist(object: T, fromObjects: T[], options?: ClassTransformOptions): T[];\nexport function classToClassFromExist(object: T, fromObject: T | T[], options?: ClassTransformOptions): T | T[] {\n return classTransformer.classToClassFromExist(object, fromObject, options);\n}\n\n/**\n * Serializes given object to a JSON string.\n *\n * @deprecated This function is being removed. Please use\n * ```\n * JSON.stringify(instanceToPlain(object, options))\n * ```\n */\nexport function serialize(object: T, options?: ClassTransformOptions): string;\nexport function serialize(object: T[], options?: ClassTransformOptions): string;\nexport function serialize(object: T | T[], options?: ClassTransformOptions): string {\n return classTransformer.serialize(object, options);\n}\n\n/**\n * Deserializes given JSON string to a object of the given class.\n *\n * @deprecated This function is being removed. Please use the following instead:\n * ```\n * instanceToClass(cls, JSON.parse(json), options)\n * ```\n */\nexport function deserialize(cls: ClassConstructor, json: string, options?: ClassTransformOptions): T {\n return classTransformer.deserialize(cls, json, options);\n}\n\n/**\n * Deserializes given JSON string to an array of objects of the given class.\n *\n * @deprecated This function is being removed. Please use the following instead:\n * ```\n * JSON.parse(json).map(value => instanceToClass(cls, value, options))\n * ```\n *\n */\nexport function deserializeArray(cls: ClassConstructor, json: string, options?: ClassTransformOptions): T[] {\n return classTransformer.deserializeArray(cls, json, options);\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/class-constructor.type.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/class-constructor.type.js new file mode 100644 index 00000000..33f02322 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/class-constructor.type.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=class-constructor.type.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/class-constructor.type.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/class-constructor.type.js.map new file mode 100644 index 00000000..e4b420a2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/class-constructor.type.js.map @@ -0,0 +1 @@ +{"version":3,"file":"class-constructor.type.js","sourceRoot":"","sources":["../../../src/interfaces/class-constructor.type.ts"],"names":[],"mappings":"","sourcesContent":["export type ClassConstructor = {\n new (...args: any[]): T;\n};\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/class-transformer-options.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/class-transformer-options.interface.js new file mode 100644 index 00000000..0aac215f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/class-transformer-options.interface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=class-transformer-options.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/class-transformer-options.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/class-transformer-options.interface.js.map new file mode 100644 index 00000000..3947fe94 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/class-transformer-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"class-transformer-options.interface.js","sourceRoot":"","sources":["../../../src/interfaces/class-transformer-options.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { TargetMap } from './target-map.interface';\n\n/**\n * Options to be passed during transformation.\n */\nexport interface ClassTransformOptions {\n /**\n * Exclusion strategy. By default exposeAll is used, which means that it will expose all properties are transformed\n * by default.\n */\n strategy?: 'excludeAll' | 'exposeAll';\n\n /**\n * Indicates if extraneous properties should be excluded from the value when converting a plain value to a class.\n *\n * This option requires that each property on the target class has at least one `@Expose` or `@Exclude` decorator\n * assigned from this library.\n */\n excludeExtraneousValues?: boolean;\n\n /**\n * Only properties with given groups gonna be transformed.\n */\n groups?: string[];\n\n /**\n * Only properties with \"since\" > version < \"until\" gonna be transformed.\n */\n version?: number;\n\n /**\n * Excludes properties with the given prefixes. For example, if you mark your private properties with \"_\" and \"__\"\n * you can set this option's value to [\"_\", \"__\"] and all private properties will be skipped.\n * This works only for \"exposeAll\" strategy.\n */\n excludePrefixes?: string[];\n\n /**\n * If set to true then class transformer will ignore the effect of all @Expose and @Exclude decorators.\n * This option is useful if you want to kinda clone your object but do not apply decorators affects.\n *\n * __NOTE:__ You may still have to add the decorators to make other options work.\n */\n ignoreDecorators?: boolean;\n\n /**\n * Target maps allows to set a Types of the transforming object without using @Type decorator.\n * This is useful when you are transforming external classes, or if you already have type metadata for\n * objects and you don't want to set it up again.\n */\n targetMaps?: TargetMap[];\n\n /**\n * If set to true then class transformer will perform a circular check. (circular check is turned off by default)\n * This option is useful when you know for sure that your types might have a circular dependency.\n */\n enableCircularCheck?: boolean;\n\n /**\n * If set to true then class transformer will try to convert properties implicitly to their target type based on their typing information.\n *\n * DEFAULT: `false`\n */\n enableImplicitConversion?: boolean;\n\n /**\n * If set to true then class transformer will take default values for unprovided fields.\n * This is useful when you convert a plain object to a class and have an optional field with a default value.\n */\n exposeDefaultValues?: boolean;\n\n /**\n * When set to true, fields with `undefined` as value will be included in class to plain transformation. Otherwise\n * those fields will be omitted from the result.\n *\n * DEFAULT: `true`\n */\n exposeUnsetFields?: boolean;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/exclude-options.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/exclude-options.interface.js new file mode 100644 index 00000000..05900a14 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/exclude-options.interface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=exclude-options.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/exclude-options.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/exclude-options.interface.js.map new file mode 100644 index 00000000..3ccc700b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/exclude-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"exclude-options.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/decorator-options/exclude-options.interface.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Possible transformation options for the @Exclude decorator.\n */\nexport interface ExcludeOptions {\n /**\n * Expose this property only when transforming from plain to class instance.\n */\n toClassOnly?: boolean;\n\n /**\n * Expose this property only when transforming from class instance to plain object.\n */\n toPlainOnly?: boolean;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/expose-options.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/expose-options.interface.js new file mode 100644 index 00000000..af2140ec --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/expose-options.interface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=expose-options.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/expose-options.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/expose-options.interface.js.map new file mode 100644 index 00000000..c473874b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/expose-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"expose-options.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/decorator-options/expose-options.interface.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Possible transformation options for the @Expose decorator.\n */\nexport interface ExposeOptions {\n /**\n * Name of property on the target object to expose the value of this property.\n */\n name?: string;\n\n /**\n * First version where this property should be exposed.\n *\n * Example:\n * ```ts\n * instanceToPlain(payload, { version: 1.0 });\n * ```\n */\n since?: number;\n\n /**\n * Last version where this property should be exposed.\n *\n * Example:\n * ```ts\n * instanceToPlain(payload, { version: 1.0 });\n * ```\n */\n until?: number;\n\n /**\n * List of transformation groups this property belongs to. When set,\n * the property will be exposed only when transform is called with\n * one of the groups specified.\n *\n * Example:\n * ```ts\n * instanceToPlain(payload, { groups: ['user'] });\n * ```\n */\n groups?: string[];\n\n /**\n * Expose this property only when transforming from plain to class instance.\n */\n toClassOnly?: boolean;\n\n /**\n * Expose this property only when transforming from class instance to plain object.\n */\n toPlainOnly?: boolean;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/transform-options.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/transform-options.interface.js new file mode 100644 index 00000000..fd269638 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/transform-options.interface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=transform-options.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/transform-options.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/transform-options.interface.js.map new file mode 100644 index 00000000..5630001f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/transform-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transform-options.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/decorator-options/transform-options.interface.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Possible transformation options for the @Transform decorator.\n */\nexport interface TransformOptions {\n /**\n * First version where this property should be exposed.\n *\n * Example:\n * ```ts\n * instanceToPlain(payload, { version: 1.0 });\n * ```\n */\n since?: number;\n\n /**\n * Last version where this property should be exposed.\n *\n * Example:\n * ```ts\n * instanceToPlain(payload, { version: 1.0 });\n * ```\n */\n until?: number;\n\n /**\n * List of transformation groups this property belongs to. When set,\n * the property will be exposed only when transform is called with\n * one of the groups specified.\n *\n * Example:\n * ```ts\n * instanceToPlain(payload, { groups: ['user'] });\n * ```\n */\n groups?: string[];\n\n /**\n * Expose this property only when transforming from plain to class instance.\n */\n toClassOnly?: boolean;\n\n /**\n * Expose this property only when transforming from class instance to plain object.\n */\n toPlainOnly?: boolean;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/type-discriminator-descriptor.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/type-discriminator-descriptor.interface.js new file mode 100644 index 00000000..a01309f6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/type-discriminator-descriptor.interface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=type-discriminator-descriptor.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/type-discriminator-descriptor.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/type-discriminator-descriptor.interface.js.map new file mode 100644 index 00000000..f6d533ef --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/type-discriminator-descriptor.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"type-discriminator-descriptor.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/decorator-options/type-discriminator-descriptor.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { ClassConstructor } from '..';\n\n/**\n * Discriminator object containing the type information to select a proper type\n * during transformation when a discriminator property is provided.\n */\nexport interface DiscriminatorDescriptor {\n /**\n * The name of the property which holds the type information in the received object.\n */\n property: string;\n /**\n * List of the available types. The transformer will try to lookup the object\n * with the same key as the value received in the defined discriminator property\n * and create an instance of the defined class.\n */\n subTypes: {\n /**\n * Name of the type.\n */\n name: string;\n\n /**\n * A class constructor which can be used to create the object.\n */\n value: ClassConstructor;\n }[];\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/type-options.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/type-options.interface.js new file mode 100644 index 00000000..63094a24 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/type-options.interface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=type-options.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/type-options.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/type-options.interface.js.map new file mode 100644 index 00000000..d3cf0462 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/decorator-options/type-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"type-options.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/decorator-options/type-options.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { DiscriminatorDescriptor } from './type-discriminator-descriptor.interface';\n\n/**\n * Possible transformation options for the @Type decorator.\n */\nexport interface TypeOptions {\n /**\n * Optional discriminator object, when provided the property value will be\n * initialized according to the specified object.\n */\n discriminator?: DiscriminatorDescriptor;\n\n /**\n * Indicates whether to keep the discriminator property on the\n * transformed object or not. Disabled by default.\n *\n * @default false\n */\n keepDiscriminatorProperty?: boolean;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/index.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/index.js new file mode 100644 index 00000000..00933fe1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/index.js @@ -0,0 +1,15 @@ +export * from './decorator-options/expose-options.interface'; +export * from './decorator-options/exclude-options.interface'; +export * from './decorator-options/transform-options.interface'; +export * from './decorator-options/type-discriminator-descriptor.interface'; +export * from './decorator-options/type-options.interface'; +export * from './metadata/exclude-metadata.interface'; +export * from './metadata/expose-metadata.interface'; +export * from './metadata/transform-metadata.interface'; +export * from './metadata/transform-fn-params.interface'; +export * from './metadata/type-metadata.interface'; +export * from './class-constructor.type'; +export * from './class-transformer-options.interface'; +export * from './target-map.interface'; +export * from './type-help-options.interface'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/index.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/index.js.map new file mode 100644 index 00000000..0cf79ca8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,8CAA8C,CAAC;AAC7D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,iDAAiD,CAAC;AAChE,cAAc,6DAA6D,CAAC;AAC5E,cAAc,4CAA4C,CAAC;AAC3D,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,yCAAyC,CAAC;AACxD,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,0BAA0B,CAAC;AACzC,cAAc,uCAAuC,CAAC;AACtD,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC","sourcesContent":["export * from './decorator-options/expose-options.interface';\nexport * from './decorator-options/exclude-options.interface';\nexport * from './decorator-options/transform-options.interface';\nexport * from './decorator-options/type-discriminator-descriptor.interface';\nexport * from './decorator-options/type-options.interface';\nexport * from './metadata/exclude-metadata.interface';\nexport * from './metadata/expose-metadata.interface';\nexport * from './metadata/transform-metadata.interface';\nexport * from './metadata/transform-fn-params.interface';\nexport * from './metadata/type-metadata.interface';\nexport * from './class-constructor.type';\nexport * from './class-transformer-options.interface';\nexport * from './target-map.interface';\nexport * from './type-help-options.interface';\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/exclude-metadata.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/exclude-metadata.interface.js new file mode 100644 index 00000000..2f9ec8f9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/exclude-metadata.interface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=exclude-metadata.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/exclude-metadata.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/exclude-metadata.interface.js.map new file mode 100644 index 00000000..ca4dad11 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/exclude-metadata.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"exclude-metadata.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/metadata/exclude-metadata.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { ExcludeOptions } from '..';\n\n/**\n * This object represents metadata assigned to a property via the @Exclude decorator.\n */\nexport interface ExcludeMetadata {\n target: Function;\n\n /**\n * The property name this metadata belongs to on the target (class or property).\n *\n * Note: If the decorator is applied to a class the propertyName will be undefined.\n */\n propertyName: string | undefined;\n\n /**\n * Options passed to the @Exclude operator for this property.\n */\n options: ExcludeOptions;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/expose-metadata.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/expose-metadata.interface.js new file mode 100644 index 00000000..2e6ed47d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/expose-metadata.interface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=expose-metadata.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/expose-metadata.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/expose-metadata.interface.js.map new file mode 100644 index 00000000..49029199 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/expose-metadata.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"expose-metadata.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/metadata/expose-metadata.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { ExposeOptions } from '..';\n\n/**\n * This object represents metadata assigned to a property via the @Expose decorator.\n */\nexport interface ExposeMetadata {\n target: Function;\n\n /**\n * The property name this metadata belongs to on the target (class or property).\n *\n * Note: If the decorator is applied to a class the propertyName will be undefined.\n */\n propertyName: string | undefined;\n\n /**\n * Options passed to the @Expose operator for this property.\n */\n options: ExposeOptions;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/transform-fn-params.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/transform-fn-params.interface.js new file mode 100644 index 00000000..4d47f5b3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/transform-fn-params.interface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=transform-fn-params.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/transform-fn-params.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/transform-fn-params.interface.js.map new file mode 100644 index 00000000..e849e4f4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/transform-fn-params.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transform-fn-params.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/metadata/transform-fn-params.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { TransformationType } from '../../enums';\nimport { ClassTransformOptions } from '../class-transformer-options.interface';\n\nexport interface TransformFnParams {\n value: any;\n key: string;\n obj: any;\n type: TransformationType;\n options: ClassTransformOptions;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/transform-metadata.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/transform-metadata.interface.js new file mode 100644 index 00000000..7e1f3803 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/transform-metadata.interface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=transform-metadata.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/transform-metadata.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/transform-metadata.interface.js.map new file mode 100644 index 00000000..668c8cec --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/transform-metadata.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transform-metadata.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/metadata/transform-metadata.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { TransformOptions } from '..';\nimport { TransformFnParams } from './transform-fn-params.interface';\n\n/**\n * This object represents metadata assigned to a property via the @Transform decorator.\n */\nexport interface TransformMetadata {\n target: Function;\n\n /**\n * The property name this metadata belongs to on the target (property only).\n */\n propertyName: string;\n\n /**\n * The custom transformation function provided by the user in the @Transform decorator.\n */\n transformFn: (params: TransformFnParams) => any;\n\n /**\n * Options passed to the @Transform operator for this property.\n */\n options: TransformOptions;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/type-metadata.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/type-metadata.interface.js new file mode 100644 index 00000000..1464571f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/type-metadata.interface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=type-metadata.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/type-metadata.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/type-metadata.interface.js.map new file mode 100644 index 00000000..4c6206d7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/metadata/type-metadata.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"type-metadata.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/metadata/type-metadata.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { TypeHelpOptions, TypeOptions } from '..';\n\n/**\n * This object represents metadata assigned to a property via the @Type decorator.\n */\nexport interface TypeMetadata {\n target: Function;\n\n /**\n * The property name this metadata belongs to on the target (property only).\n */\n propertyName: string;\n\n /**\n * The type guessed from assigned Reflect metadata ('design:type')\n */\n reflectedType: any;\n\n /**\n * The custom function provided by the user in the @Type decorator which\n * returns the target type for the transformation.\n */\n typeFunction: (options?: TypeHelpOptions) => Function;\n\n /**\n * Options passed to the @Type operator for this property.\n */\n options: TypeOptions;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/target-map.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/target-map.interface.js new file mode 100644 index 00000000..39ea86f4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/target-map.interface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=target-map.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/target-map.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/target-map.interface.js.map new file mode 100644 index 00000000..710733f3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/target-map.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"target-map.interface.js","sourceRoot":"","sources":["../../../src/interfaces/target-map.interface.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Allows to specify a map of Types in the object without using @Type decorator.\n * This is useful when you have external classes.\n */\nexport interface TargetMap {\n /**\n * Target which Types are being specified.\n */\n target: Function;\n\n /**\n * List of properties and their Types.\n */\n properties: { [key: string]: Function };\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/type-help-options.interface.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/type-help-options.interface.js new file mode 100644 index 00000000..cafc9487 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/type-help-options.interface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=type-help-options.interface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/type-help-options.interface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/type-help-options.interface.js.map new file mode 100644 index 00000000..8050a8f3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/interfaces/type-help-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"type-help-options.interface.js","sourceRoot":"","sources":["../../../src/interfaces/type-help-options.interface.ts"],"names":[],"mappings":"","sourcesContent":["// TODO: Document this interface. What does each property means?\nexport interface TypeHelpOptions {\n newObject: any;\n object: Record;\n property: string;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/storage.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/storage.js new file mode 100644 index 00000000..67e122cd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/storage.js @@ -0,0 +1,6 @@ +import { MetadataStorage } from './MetadataStorage'; +/** + * Default metadata storage is used as singleton and can be used to storage all metadatas. + */ +export var defaultMetadataStorage = new MetadataStorage(); +//# sourceMappingURL=storage.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/storage.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/storage.js.map new file mode 100644 index 00000000..ae4c4c1c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/storage.js.map @@ -0,0 +1 @@ +{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;GAEG;AACH,MAAM,CAAC,IAAM,sBAAsB,GAAG,IAAI,eAAe,EAAE,CAAC","sourcesContent":["import { MetadataStorage } from './MetadataStorage';\n\n/**\n * Default metadata storage is used as singleton and can be used to storage all metadatas.\n */\nexport const defaultMetadataStorage = new MetadataStorage();\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/get-global.util.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/get-global.util.js new file mode 100644 index 00000000..a8b64cc4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/get-global.util.js @@ -0,0 +1,29 @@ +/** + * This function returns the global object across Node and browsers. + * + * Note: `globalThis` is the standardized approach however it has been added to + * Node.js in version 12. We need to include this snippet until Node 12 EOL. + */ +export function getGlobal() { + if (typeof globalThis !== 'undefined') { + return globalThis; + } + if (typeof global !== 'undefined') { + return global; + } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'window'. + if (typeof window !== 'undefined') { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'window'. + return window; + } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'self'. + if (typeof self !== 'undefined') { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'self'. + return self; + } +} +//# sourceMappingURL=get-global.util.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/get-global.util.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/get-global.util.js.map new file mode 100644 index 00000000..83b6cf4a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/get-global.util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"get-global.util.js","sourceRoot":"","sources":["../../../src/utils/get-global.util.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,SAAS;IACvB,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;QACrC,OAAO,UAAU,CAAC;KACnB;IAED,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,OAAO,MAAM,CAAC;KACf;IAED,6DAA6D;IAC7D,yCAAyC;IACzC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,6DAA6D;QAC7D,yCAAyC;QACzC,OAAO,MAAM,CAAC;KACf;IAED,6DAA6D;IAC7D,uCAAuC;IACvC,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;QAC/B,6DAA6D;QAC7D,uCAAuC;QACvC,OAAO,IAAI,CAAC;KACb;AACH,CAAC","sourcesContent":["/**\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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/get-global.util.spect.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/get-global.util.spect.js new file mode 100644 index 00000000..5237df15 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/get-global.util.spect.js @@ -0,0 +1,13 @@ +import { getGlobal } from '.'; +describe('getGlobal()', function () { + it('should return true if Buffer is present in globalThis', function () { + expect(getGlobal().Buffer).toBe(true); + }); + it('should return false if Buffer is not present in globalThis', function () { + var bufferImp = global.Buffer; + delete global.Buffer; + expect(getGlobal().Buffer).toBe(false); + global.Buffer = bufferImp; + }); +}); +//# sourceMappingURL=get-global.util.spect.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/get-global.util.spect.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/get-global.util.spect.js.map new file mode 100644 index 00000000..6e4ca00a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/get-global.util.spect.js.map @@ -0,0 +1 @@ +{"version":3,"file":"get-global.util.spect.js","sourceRoot":"","sources":["../../../src/utils/get-global.util.spect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC;AAE9B,QAAQ,CAAC,aAAa,EAAE;IACtB,EAAE,CAAC,uDAAuD,EAAE;QAC1D,MAAM,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE;QAC/D,IAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;QAChC,OAAO,MAAM,CAAC,MAAM,CAAC;QAErB,MAAM,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { getGlobal } from '.';\n\ndescribe('getGlobal()', () => {\n it('should return true if Buffer is present in globalThis', () => {\n expect(getGlobal().Buffer).toBe(true);\n });\n\n it('should return false if Buffer is not present in globalThis', () => {\n const bufferImp = global.Buffer;\n delete global.Buffer;\n\n expect(getGlobal().Buffer).toBe(false);\n\n global.Buffer = bufferImp;\n });\n});\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/index.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/index.js new file mode 100644 index 00000000..7b623210 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/index.js @@ -0,0 +1,3 @@ +export * from './get-global.util'; +export * from './is-promise.util'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/index.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/index.js.map new file mode 100644 index 00000000..132a5fd7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC","sourcesContent":["export * from './get-global.util';\nexport * from './is-promise.util';\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/is-promise.util.js b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/is-promise.util.js new file mode 100644 index 00000000..170e190a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/is-promise.util.js @@ -0,0 +1,4 @@ +export function isPromise(p) { + return p !== null && typeof p === 'object' && typeof p.then === 'function'; +} +//# sourceMappingURL=is-promise.util.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/is-promise.util.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/is-promise.util.js.map new file mode 100644 index 00000000..9813aa9f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/esm5/utils/is-promise.util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"is-promise.util.js","sourceRoot":"","sources":["../../../src/utils/is-promise.util.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAI,CAAM;IACjC,OAAO,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;AAC7E,CAAC","sourcesContent":["export function isPromise(p: any): p is Promise {\n return p !== null && typeof p === 'object' && typeof p.then === 'function';\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/package.json b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/package.json new file mode 100644 index 00000000..c3ba78bb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/package.json @@ -0,0 +1,38 @@ +{ + "name": "class-transformer", + "version": "0.5.1", + "description": "Proper decorator-based transformation / serialization / deserialization of plain javascript objects to class constructors", + "author": "TypeStack contributors", + "license": "MIT", + "readmeFilename": "README.md", + "sideEffects": false, + "main": "./cjs/index.js", + "module": "./esm5/index.js", + "es2015": "./esm2015/index.js", + "typings": "./types/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/typestack/class-transformer.git" + }, + "tags": [ + "serialization", + "deserialization", + "serializer", + "typescript", + "object-to-class", + "typescript-serializer" + ], + "husky": { + "hooks": { + "pre-commit": "lint-staged" + } + }, + "lint-staged": { + "*.md": [ + "npm run prettier:fix" + ], + "*.ts": [ + "npm run prettier:fix" + ] + } +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/ClassTransformer.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/ClassTransformer.d.ts new file mode 100644 index 00000000..27b75429 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/ClassTransformer.d.ts @@ -0,0 +1,53 @@ +import { ClassTransformOptions } from './interfaces'; +import { ClassConstructor } from './interfaces'; +export declare class ClassTransformer { + /** + * Converts class (constructor) object to plain (literal) object. Also works with arrays. + */ + instanceToPlain>(object: T, options?: ClassTransformOptions): Record; + instanceToPlain>(object: T[], options?: ClassTransformOptions): Record[]; + /** + * Converts class (constructor) object to plain (literal) object. + * Uses given plain object as source object (it means fills given plain object with data from class object). + * Also works with arrays. + */ + classToPlainFromExist, P>(object: T, plainObject: P, options?: ClassTransformOptions): T; + classToPlainFromExist, P>(object: T, plainObjects: P[], options?: ClassTransformOptions): T[]; + /** + * Converts plain (literal) object to class (constructor) object. Also works with arrays. + */ + plainToInstance, V extends Array>(cls: ClassConstructor, plain: V, options?: ClassTransformOptions): T[]; + plainToInstance, V>(cls: ClassConstructor, plain: V, options?: ClassTransformOptions): T; + /** + * Converts plain (literal) object to class (constructor) object. + * Uses given object as source object (it means fills given object with data from plain object). + * Also works with arrays. + */ + plainToClassFromExist, V extends Array>(clsObject: T, plain: V, options?: ClassTransformOptions): T; + plainToClassFromExist, V>(clsObject: T, plain: V, options?: ClassTransformOptions): T[]; + /** + * Converts class (constructor) object to new class (constructor) object. Also works with arrays. + */ + instanceToInstance(object: T, options?: ClassTransformOptions): T; + instanceToInstance(object: T[], options?: ClassTransformOptions): T[]; + /** + * Converts class (constructor) object to plain (literal) object. + * Uses given plain object as source object (it means fills given plain object with data from class object). + * Also works with arrays. + */ + classToClassFromExist(object: T, fromObject: T, options?: ClassTransformOptions): T; + classToClassFromExist(object: T, fromObjects: T[], options?: ClassTransformOptions): T[]; + /** + * Serializes given object to a JSON string. + */ + serialize(object: T, options?: ClassTransformOptions): string; + serialize(object: T[], options?: ClassTransformOptions): string; + /** + * Deserializes given JSON string to a object of the given class. + */ + deserialize(cls: ClassConstructor, json: string, options?: ClassTransformOptions): T; + /** + * Deserializes given JSON string to an array of objects of the given class. + */ + deserializeArray(cls: ClassConstructor, json: string, options?: ClassTransformOptions): T[]; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/MetadataStorage.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/MetadataStorage.d.ts new file mode 100644 index 00000000..0a7a67c6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/MetadataStorage.d.ts @@ -0,0 +1,31 @@ +import { TypeMetadata, ExposeMetadata, ExcludeMetadata, TransformMetadata } from './interfaces'; +import { TransformationType } from './enums'; +/** + * Storage all library metadata. + */ +export declare class MetadataStorage { + private _typeMetadatas; + private _transformMetadatas; + private _exposeMetadatas; + private _excludeMetadatas; + private _ancestorsMap; + addTypeMetadata(metadata: TypeMetadata): void; + addTransformMetadata(metadata: TransformMetadata): void; + addExposeMetadata(metadata: ExposeMetadata): void; + addExcludeMetadata(metadata: ExcludeMetadata): void; + findTransformMetadatas(target: Function, propertyName: string, transformationType: TransformationType): TransformMetadata[]; + findExcludeMetadata(target: Function, propertyName: string): ExcludeMetadata; + findExposeMetadata(target: Function, propertyName: string): ExposeMetadata; + findExposeMetadataByCustomName(target: Function, name: string): ExposeMetadata; + findTypeMetadata(target: Function, propertyName: string): TypeMetadata; + getStrategy(target: Function): 'excludeAll' | 'exposeAll' | 'none'; + getExposedMetadatas(target: Function): ExposeMetadata[]; + getExcludedMetadatas(target: Function): ExcludeMetadata[]; + getExposedProperties(target: Function, transformationType: TransformationType): string[]; + getExcludedProperties(target: Function, transformationType: TransformationType): string[]; + clear(): void; + private getMetadata; + private findMetadata; + private findMetadatas; + private getAncestors; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/TransformOperationExecutor.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/TransformOperationExecutor.d.ts new file mode 100644 index 00000000..68bf377f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/TransformOperationExecutor.d.ts @@ -0,0 +1,15 @@ +import { ClassTransformOptions, TypeMetadata } from './interfaces'; +import { TransformationType } from './enums'; +export declare class TransformOperationExecutor { + private transformationType; + private options; + private recursionStack; + constructor(transformationType: TransformationType, options: ClassTransformOptions); + transform(source: Record | Record[] | any, value: Record | Record[] | any, targetType: Function | TypeMetadata, arrayType: Function, isMap: boolean, level?: number): any; + private applyCustomTransformations; + private isCircular; + private getReflectedType; + private getKeys; + private checkVersion; + private checkGroups; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/constants/default-options.constant.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/constants/default-options.constant.d.ts new file mode 100644 index 00000000..13aa5cb2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/constants/default-options.constant.d.ts @@ -0,0 +1,5 @@ +import { ClassTransformOptions } from '../interfaces/class-transformer-options.interface'; +/** + * These are the default options used by any transformation operation. + */ +export declare const defaultOptions: Partial; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/exclude.decorator.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/exclude.decorator.d.ts new file mode 100644 index 00000000..80d51451 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/exclude.decorator.d.ts @@ -0,0 +1,9 @@ +import { ExcludeOptions } from '../interfaces'; +/** + * Marks the given class or property as excluded. By default the property is excluded in both + * constructorToPlain and plainToConstructor transformations. It can be limited to only one direction + * via using the `toPlainOnly` or `toClassOnly` option. + * + * Can be applied to class definitions and properties. + */ +export declare function Exclude(options?: ExcludeOptions): PropertyDecorator & ClassDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/expose.decorator.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/expose.decorator.d.ts new file mode 100644 index 00000000..fdee9818 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/expose.decorator.d.ts @@ -0,0 +1,9 @@ +import { ExposeOptions } from '../interfaces'; +/** + * Marks the given class or property as included. By default the property is included in both + * constructorToPlain and plainToConstructor transformations. It can be limited to only one direction + * via using the `toPlainOnly` or `toClassOnly` option. + * + * Can be applied to class definitions and properties. + */ +export declare function Expose(options?: ExposeOptions): PropertyDecorator & ClassDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/index.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/index.d.ts new file mode 100644 index 00000000..bd2475c9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/index.d.ts @@ -0,0 +1,7 @@ +export * from './exclude.decorator'; +export * from './expose.decorator'; +export * from './transform-instance-to-instance.decorator'; +export * from './transform-instance-to-plain.decorator'; +export * from './transform-plain-to-instance.decorator'; +export * from './transform.decorator'; +export * from './type.decorator'; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/transform-instance-to-instance.decorator.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/transform-instance-to-instance.decorator.d.ts new file mode 100644 index 00000000..8665daec --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/transform-instance-to-instance.decorator.d.ts @@ -0,0 +1,7 @@ +import { ClassTransformOptions } from '../interfaces'; +/** + * Return the class instance only with the exposed properties. + * + * Can be applied to functions and getters/setters only. + */ +export declare function TransformInstanceToInstance(params?: ClassTransformOptions): MethodDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/transform-instance-to-plain.decorator.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/transform-instance-to-plain.decorator.d.ts new file mode 100644 index 00000000..18e9091b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/transform-instance-to-plain.decorator.d.ts @@ -0,0 +1,7 @@ +import { ClassTransformOptions } from '../interfaces'; +/** + * Transform the object from class to plain object and return only with the exposed properties. + * + * Can be applied to functions and getters/setters only. + */ +export declare function TransformInstanceToPlain(params?: ClassTransformOptions): MethodDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/transform-plain-to-instance.decorator.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/transform-plain-to-instance.decorator.d.ts new file mode 100644 index 00000000..9bbaf762 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/transform-plain-to-instance.decorator.d.ts @@ -0,0 +1,7 @@ +import { ClassTransformOptions, ClassConstructor } from '../interfaces'; +/** + * Return the class instance only with the exposed properties. + * + * Can be applied to functions and getters/setters only. + */ +export declare function TransformPlainToInstance(classType: ClassConstructor, params?: ClassTransformOptions): MethodDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/transform.decorator.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/transform.decorator.d.ts new file mode 100644 index 00000000..539ac0e8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/transform.decorator.d.ts @@ -0,0 +1,7 @@ +import { TransformFnParams, TransformOptions } from '../interfaces'; +/** + * Defines a custom logic for value transformation. + * + * Can be applied to properties only. + */ +export declare function Transform(transformFn: (params: TransformFnParams) => any, options?: TransformOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/type.decorator.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/type.decorator.d.ts new file mode 100644 index 00000000..ed2d7fba --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/decorators/type.decorator.d.ts @@ -0,0 +1,8 @@ +import { TypeHelpOptions, TypeOptions } from '../interfaces'; +/** + * Specifies a type of the property. + * The given TypeFunction can return a constructor. A discriminator can be given in the options. + * + * Can be applied to properties only. + */ +export declare function Type(typeFunction?: (type?: TypeHelpOptions) => Function, options?: TypeOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/enums/index.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/enums/index.d.ts new file mode 100644 index 00000000..7d356eb5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/enums/index.d.ts @@ -0,0 +1 @@ +export * from './transformation-type.enum'; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/enums/transformation-type.enum.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/enums/transformation-type.enum.d.ts new file mode 100644 index 00000000..0c48827f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/enums/transformation-type.enum.d.ts @@ -0,0 +1,5 @@ +export declare enum TransformationType { + PLAIN_TO_CLASS = 0, + CLASS_TO_PLAIN = 1, + CLASS_TO_CLASS = 2 +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/index.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/index.d.ts new file mode 100644 index 00000000..184ba1cf --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/index.d.ts @@ -0,0 +1,91 @@ +import { ClassTransformOptions } from './interfaces'; +import { ClassConstructor } from './interfaces'; +export { ClassTransformer } from './ClassTransformer'; +export * from './decorators'; +export * from './interfaces'; +export * from './enums'; +/** + * Converts class (constructor) object to plain (literal) object. Also works with arrays. + * + * @deprecated Function name changed, use the `instanceToPlain` method instead. + */ +export declare function classToPlain(object: T, options?: ClassTransformOptions): Record; +export declare function classToPlain(object: T[], options?: ClassTransformOptions): Record[]; +/** + * Converts class (constructor) object to plain (literal) object. Also works with arrays. + */ +export declare function instanceToPlain(object: T, options?: ClassTransformOptions): Record; +export declare function instanceToPlain(object: T[], options?: ClassTransformOptions): Record[]; +/** + * Converts class (constructor) object to plain (literal) object. + * Uses given plain object as source object (it means fills given plain object with data from class object). + * Also works with arrays. + * + * @deprecated This function is being removed. + */ +export declare function classToPlainFromExist(object: T, plainObject: Record, options?: ClassTransformOptions): Record; +export declare function classToPlainFromExist(object: T, plainObjects: Record[], options?: ClassTransformOptions): Record[]; +/** + * Converts plain (literal) object to class (constructor) object. Also works with arrays. + * + * @deprecated Function name changed, use the `plainToInstance` method instead. + */ +export declare function plainToClass(cls: ClassConstructor, plain: V[], options?: ClassTransformOptions): T[]; +export declare function plainToClass(cls: ClassConstructor, plain: V, options?: ClassTransformOptions): T; +/** + * Converts plain (literal) object to class (constructor) object. Also works with arrays. + */ +export declare function plainToInstance(cls: ClassConstructor, plain: V[], options?: ClassTransformOptions): T[]; +export declare function plainToInstance(cls: ClassConstructor, plain: V, options?: ClassTransformOptions): T; +/** + * Converts plain (literal) object to class (constructor) object. + * Uses given object as source object (it means fills given object with data from plain object). + * Also works with arrays. + * + * @deprecated This function is being removed. The current implementation is incorrect as it modifies the source object. + */ +export declare function plainToClassFromExist(clsObject: T[], plain: V[], options?: ClassTransformOptions): T[]; +export declare function plainToClassFromExist(clsObject: T, plain: V, options?: ClassTransformOptions): T; +/** + * Converts class (constructor) object to new class (constructor) object. Also works with arrays. + */ +export declare function instanceToInstance(object: T, options?: ClassTransformOptions): T; +export declare function instanceToInstance(object: T[], options?: ClassTransformOptions): T[]; +/** + * Converts class (constructor) object to plain (literal) object. + * Uses given plain object as source object (it means fills given plain object with data from class object). + * Also works with arrays. + * + * @deprecated This function is being removed. The current implementation is incorrect as it modifies the source object. + */ +export declare function classToClassFromExist(object: T, fromObject: T, options?: ClassTransformOptions): T; +export declare function classToClassFromExist(object: T, fromObjects: T[], options?: ClassTransformOptions): T[]; +/** + * Serializes given object to a JSON string. + * + * @deprecated This function is being removed. Please use + * ``` + * JSON.stringify(instanceToPlain(object, options)) + * ``` + */ +export declare function serialize(object: T, options?: ClassTransformOptions): string; +export declare function serialize(object: T[], options?: ClassTransformOptions): string; +/** + * Deserializes given JSON string to a object of the given class. + * + * @deprecated This function is being removed. Please use the following instead: + * ``` + * instanceToClass(cls, JSON.parse(json), options) + * ``` + */ +export declare function deserialize(cls: ClassConstructor, json: string, options?: ClassTransformOptions): T; +/** + * Deserializes given JSON string to an array of objects of the given class. + * + * @deprecated This function is being removed. Please use the following instead: + * ``` + * JSON.parse(json).map(value => instanceToClass(cls, value, options)) + * ``` + * + */ +export declare function deserializeArray(cls: ClassConstructor, json: string, options?: ClassTransformOptions): T[]; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/class-constructor.type.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/class-constructor.type.d.ts new file mode 100644 index 00000000..b1f956f5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/class-constructor.type.d.ts @@ -0,0 +1,3 @@ +export declare type ClassConstructor = { + new (...args: any[]): T; +}; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/class-transformer-options.interface.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/class-transformer-options.interface.d.ts new file mode 100644 index 00000000..a778cbfc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/class-transformer-options.interface.d.ts @@ -0,0 +1,68 @@ +import { TargetMap } from './target-map.interface'; +/** + * Options to be passed during transformation. + */ +export interface ClassTransformOptions { + /** + * Exclusion strategy. By default exposeAll is used, which means that it will expose all properties are transformed + * by default. + */ + strategy?: 'excludeAll' | 'exposeAll'; + /** + * Indicates if extraneous properties should be excluded from the value when converting a plain value to a class. + * + * This option requires that each property on the target class has at least one `@Expose` or `@Exclude` decorator + * assigned from this library. + */ + excludeExtraneousValues?: boolean; + /** + * Only properties with given groups gonna be transformed. + */ + groups?: string[]; + /** + * Only properties with "since" > version < "until" gonna be transformed. + */ + version?: number; + /** + * Excludes properties with the given prefixes. For example, if you mark your private properties with "_" and "__" + * you can set this option's value to ["_", "__"] and all private properties will be skipped. + * This works only for "exposeAll" strategy. + */ + excludePrefixes?: string[]; + /** + * If set to true then class transformer will ignore the effect of all @Expose and @Exclude decorators. + * This option is useful if you want to kinda clone your object but do not apply decorators affects. + * + * __NOTE:__ You may still have to add the decorators to make other options work. + */ + ignoreDecorators?: boolean; + /** + * Target maps allows to set a Types of the transforming object without using @Type decorator. + * This is useful when you are transforming external classes, or if you already have type metadata for + * objects and you don't want to set it up again. + */ + targetMaps?: TargetMap[]; + /** + * If set to true then class transformer will perform a circular check. (circular check is turned off by default) + * This option is useful when you know for sure that your types might have a circular dependency. + */ + enableCircularCheck?: boolean; + /** + * If set to true then class transformer will try to convert properties implicitly to their target type based on their typing information. + * + * DEFAULT: `false` + */ + enableImplicitConversion?: boolean; + /** + * If set to true then class transformer will take default values for unprovided fields. + * This is useful when you convert a plain object to a class and have an optional field with a default value. + */ + exposeDefaultValues?: boolean; + /** + * When set to true, fields with `undefined` as value will be included in class to plain transformation. Otherwise + * those fields will be omitted from the result. + * + * DEFAULT: `true` + */ + exposeUnsetFields?: boolean; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/decorator-options/exclude-options.interface.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/decorator-options/exclude-options.interface.d.ts new file mode 100644 index 00000000..57bc22e8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/decorator-options/exclude-options.interface.d.ts @@ -0,0 +1,13 @@ +/** + * Possible transformation options for the @Exclude decorator. + */ +export interface ExcludeOptions { + /** + * Expose this property only when transforming from plain to class instance. + */ + toClassOnly?: boolean; + /** + * Expose this property only when transforming from class instance to plain object. + */ + toPlainOnly?: boolean; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/decorator-options/expose-options.interface.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/decorator-options/expose-options.interface.d.ts new file mode 100644 index 00000000..e009174d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/decorator-options/expose-options.interface.d.ts @@ -0,0 +1,46 @@ +/** + * Possible transformation options for the @Expose decorator. + */ +export interface ExposeOptions { + /** + * Name of property on the target object to expose the value of this property. + */ + name?: string; + /** + * First version where this property should be exposed. + * + * Example: + * ```ts + * instanceToPlain(payload, { version: 1.0 }); + * ``` + */ + since?: number; + /** + * Last version where this property should be exposed. + * + * Example: + * ```ts + * instanceToPlain(payload, { version: 1.0 }); + * ``` + */ + until?: number; + /** + * List of transformation groups this property belongs to. When set, + * the property will be exposed only when transform is called with + * one of the groups specified. + * + * Example: + * ```ts + * instanceToPlain(payload, { groups: ['user'] }); + * ``` + */ + groups?: string[]; + /** + * Expose this property only when transforming from plain to class instance. + */ + toClassOnly?: boolean; + /** + * Expose this property only when transforming from class instance to plain object. + */ + toPlainOnly?: boolean; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/decorator-options/transform-options.interface.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/decorator-options/transform-options.interface.d.ts new file mode 100644 index 00000000..3de04b34 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/decorator-options/transform-options.interface.d.ts @@ -0,0 +1,42 @@ +/** + * Possible transformation options for the @Transform decorator. + */ +export interface TransformOptions { + /** + * First version where this property should be exposed. + * + * Example: + * ```ts + * instanceToPlain(payload, { version: 1.0 }); + * ``` + */ + since?: number; + /** + * Last version where this property should be exposed. + * + * Example: + * ```ts + * instanceToPlain(payload, { version: 1.0 }); + * ``` + */ + until?: number; + /** + * List of transformation groups this property belongs to. When set, + * the property will be exposed only when transform is called with + * one of the groups specified. + * + * Example: + * ```ts + * instanceToPlain(payload, { groups: ['user'] }); + * ``` + */ + groups?: string[]; + /** + * Expose this property only when transforming from plain to class instance. + */ + toClassOnly?: boolean; + /** + * Expose this property only when transforming from class instance to plain object. + */ + toPlainOnly?: boolean; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/decorator-options/type-discriminator-descriptor.interface.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/decorator-options/type-discriminator-descriptor.interface.d.ts new file mode 100644 index 00000000..10151ca6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/decorator-options/type-discriminator-descriptor.interface.d.ts @@ -0,0 +1,26 @@ +import { ClassConstructor } from '..'; +/** + * Discriminator object containing the type information to select a proper type + * during transformation when a discriminator property is provided. + */ +export interface DiscriminatorDescriptor { + /** + * The name of the property which holds the type information in the received object. + */ + property: string; + /** + * List of the available types. The transformer will try to lookup the object + * with the same key as the value received in the defined discriminator property + * and create an instance of the defined class. + */ + subTypes: { + /** + * Name of the type. + */ + name: string; + /** + * A class constructor which can be used to create the object. + */ + value: ClassConstructor; + }[]; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/decorator-options/type-options.interface.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/decorator-options/type-options.interface.d.ts new file mode 100644 index 00000000..51f0ad76 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/decorator-options/type-options.interface.d.ts @@ -0,0 +1,18 @@ +import { DiscriminatorDescriptor } from './type-discriminator-descriptor.interface'; +/** + * Possible transformation options for the @Type decorator. + */ +export interface TypeOptions { + /** + * Optional discriminator object, when provided the property value will be + * initialized according to the specified object. + */ + discriminator?: DiscriminatorDescriptor; + /** + * Indicates whether to keep the discriminator property on the + * transformed object or not. Disabled by default. + * + * @default false + */ + keepDiscriminatorProperty?: boolean; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/index.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/index.d.ts new file mode 100644 index 00000000..4a1d1aa5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/index.d.ts @@ -0,0 +1,14 @@ +export * from './decorator-options/expose-options.interface'; +export * from './decorator-options/exclude-options.interface'; +export * from './decorator-options/transform-options.interface'; +export * from './decorator-options/type-discriminator-descriptor.interface'; +export * from './decorator-options/type-options.interface'; +export * from './metadata/exclude-metadata.interface'; +export * from './metadata/expose-metadata.interface'; +export * from './metadata/transform-metadata.interface'; +export * from './metadata/transform-fn-params.interface'; +export * from './metadata/type-metadata.interface'; +export * from './class-constructor.type'; +export * from './class-transformer-options.interface'; +export * from './target-map.interface'; +export * from './type-help-options.interface'; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/metadata/exclude-metadata.interface.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/metadata/exclude-metadata.interface.d.ts new file mode 100644 index 00000000..ec2c35fe --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/metadata/exclude-metadata.interface.d.ts @@ -0,0 +1,17 @@ +import { ExcludeOptions } from '..'; +/** + * This object represents metadata assigned to a property via the @Exclude decorator. + */ +export interface ExcludeMetadata { + target: Function; + /** + * The property name this metadata belongs to on the target (class or property). + * + * Note: If the decorator is applied to a class the propertyName will be undefined. + */ + propertyName: string | undefined; + /** + * Options passed to the @Exclude operator for this property. + */ + options: ExcludeOptions; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/metadata/expose-metadata.interface.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/metadata/expose-metadata.interface.d.ts new file mode 100644 index 00000000..a3a194f4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/metadata/expose-metadata.interface.d.ts @@ -0,0 +1,17 @@ +import { ExposeOptions } from '..'; +/** + * This object represents metadata assigned to a property via the @Expose decorator. + */ +export interface ExposeMetadata { + target: Function; + /** + * The property name this metadata belongs to on the target (class or property). + * + * Note: If the decorator is applied to a class the propertyName will be undefined. + */ + propertyName: string | undefined; + /** + * Options passed to the @Expose operator for this property. + */ + options: ExposeOptions; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/metadata/transform-fn-params.interface.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/metadata/transform-fn-params.interface.d.ts new file mode 100644 index 00000000..be201fa1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/metadata/transform-fn-params.interface.d.ts @@ -0,0 +1,9 @@ +import { TransformationType } from '../../enums'; +import { ClassTransformOptions } from '../class-transformer-options.interface'; +export interface TransformFnParams { + value: any; + key: string; + obj: any; + type: TransformationType; + options: ClassTransformOptions; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/metadata/transform-metadata.interface.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/metadata/transform-metadata.interface.d.ts new file mode 100644 index 00000000..919f63f0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/metadata/transform-metadata.interface.d.ts @@ -0,0 +1,20 @@ +import { TransformOptions } from '..'; +import { TransformFnParams } from './transform-fn-params.interface'; +/** + * This object represents metadata assigned to a property via the @Transform decorator. + */ +export interface TransformMetadata { + target: Function; + /** + * The property name this metadata belongs to on the target (property only). + */ + propertyName: string; + /** + * The custom transformation function provided by the user in the @Transform decorator. + */ + transformFn: (params: TransformFnParams) => any; + /** + * Options passed to the @Transform operator for this property. + */ + options: TransformOptions; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/metadata/type-metadata.interface.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/metadata/type-metadata.interface.d.ts new file mode 100644 index 00000000..7eff21b4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/metadata/type-metadata.interface.d.ts @@ -0,0 +1,24 @@ +import { TypeHelpOptions, TypeOptions } from '..'; +/** + * This object represents metadata assigned to a property via the @Type decorator. + */ +export interface TypeMetadata { + target: Function; + /** + * The property name this metadata belongs to on the target (property only). + */ + propertyName: string; + /** + * The type guessed from assigned Reflect metadata ('design:type') + */ + reflectedType: any; + /** + * The custom function provided by the user in the @Type decorator which + * returns the target type for the transformation. + */ + typeFunction: (options?: TypeHelpOptions) => Function; + /** + * Options passed to the @Type operator for this property. + */ + options: TypeOptions; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/target-map.interface.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/target-map.interface.d.ts new file mode 100644 index 00000000..c279b2f6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/target-map.interface.d.ts @@ -0,0 +1,16 @@ +/** + * Allows to specify a map of Types in the object without using @Type decorator. + * This is useful when you have external classes. + */ +export interface TargetMap { + /** + * Target which Types are being specified. + */ + target: Function; + /** + * List of properties and their Types. + */ + properties: { + [key: string]: Function; + }; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/type-help-options.interface.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/type-help-options.interface.d.ts new file mode 100644 index 00000000..9da0a980 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/interfaces/type-help-options.interface.d.ts @@ -0,0 +1,5 @@ +export interface TypeHelpOptions { + newObject: any; + object: Record; + property: string; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/storage.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/storage.d.ts new file mode 100644 index 00000000..a4f3df07 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/storage.d.ts @@ -0,0 +1,5 @@ +import { MetadataStorage } from './MetadataStorage'; +/** + * Default metadata storage is used as singleton and can be used to storage all metadatas. + */ +export declare const defaultMetadataStorage: MetadataStorage; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/utils/get-global.util.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/utils/get-global.util.d.ts new file mode 100644 index 00000000..c7d02b82 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/utils/get-global.util.d.ts @@ -0,0 +1,7 @@ +/** + * This function returns the global object across Node and browsers. + * + * Note: `globalThis` is the standardized approach however it has been added to + * Node.js in version 12. We need to include this snippet until Node 12 EOL. + */ +export declare function getGlobal(): any; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/utils/get-global.util.spect.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/utils/get-global.util.spect.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/utils/get-global.util.spect.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/utils/index.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/utils/index.d.ts new file mode 100644 index 00000000..382ad2d7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/utils/index.d.ts @@ -0,0 +1,2 @@ +export * from './get-global.util'; +export * from './is-promise.util'; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/utils/is-promise.util.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/utils/is-promise.util.d.ts new file mode 100644 index 00000000..ba82d712 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-transformer/types/utils/is-promise.util.d.ts @@ -0,0 +1 @@ +export declare function isPromise(p: any): p is Promise; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/LICENSE b/srcs/requirements/nestjs/api_back/node_modules/class-validator/LICENSE new file mode 100644 index 00000000..abdf4ab6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/LICENSE @@ -0,0 +1,22 @@ + +The MIT License + +Copyright (c) 2015-2020 TypeStack + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/README.md b/srcs/requirements/nestjs/api_back/node_modules/class-validator/README.md new file mode 100644 index 00000000..6e265dde --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/README.md @@ -0,0 +1,1014 @@ +# class-validator + +![Build Status](https://github.com/typestack/class-validator/workflows/CI/badge.svg) +[![codecov](https://codecov.io/gh/typestack/class-validator/branch/develop/graph/badge.svg)](https://codecov.io/gh/typestack/class-validator) +[![npm version](https://badge.fury.io/js/class-validator.svg)](https://badge.fury.io/js/class-validator) +[![install size](https://packagephobia.now.sh/badge?p=class-validator)](https://packagephobia.now.sh/result?p=class-validator) + +Allows use of decorator and non-decorator based validation. +Internally uses [validator.js][1] to perform validation. +Class-validator works on both browser and node.js platforms. + +## Table of Contents + +- [class-validator](#class-validator) + - [Table of Contents](#table-of-contents) + - [Installation](#installation) + - [Usage](#usage) + - [Passing options](#passing-options) + - [Validation errors](#validation-errors) + - [Validation messages](#validation-messages) + - [Validating arrays](#validating-arrays) + - [Validating sets](#validating-sets) + - [Validating maps](#validating-maps) + - [Validating nested objects](#validating-nested-objects) + - [Validating promises](#validating-promises) + - [Inheriting Validation decorators](#inheriting-validation-decorators) + - [Conditional validation](#conditional-validation) + - [Whitelisting](#whitelisting) + - [Passing context to decorators](#passing-context-to-decorators) + - [Skipping missing properties](#skipping-missing-properties) + - [Validation groups](#validation-groups) + - [Custom validation classes](#custom-validation-classes) + - [Custom validation decorators](#custom-validation-decorators) + - [Using service container](#using-service-container) + - [Synchronous validation](#synchronous-validation) + - [Manual validation](#manual-validation) + - [Validation decorators](#validation-decorators) + - [Defining validation schema without decorators](#defining-validation-schema-without-decorators) + - [Validating plain objects](#validating-plain-objects) + - [Samples](#samples) + - [Extensions](#extensions) + - [Release notes](#release-notes) + +## Installation + +``` +npm install class-validator --save +``` + +> Note: Please use at least npm@6 when using class-validator. From npm@6 the dependency tree is flattened, which is required by `class-validator` to function properly. + +## Usage + +Create your class and put some validation decorators on the properties you want to validate: + +```typescript +import { + validate, + validateOrReject, + Contains, + IsInt, + Length, + IsEmail, + IsFQDN, + IsDate, + Min, + Max, +} from 'class-validator'; + +export class Post { + @Length(10, 20) + title: string; + + @Contains('hello') + text: string; + + @IsInt() + @Min(0) + @Max(10) + rating: number; + + @IsEmail() + email: string; + + @IsFQDN() + site: string; + + @IsDate() + createDate: Date; +} + +let post = new Post(); +post.title = 'Hello'; // should not pass +post.text = 'this is a great post about hell world'; // should not pass +post.rating = 11; // should not pass +post.email = 'google.com'; // should not pass +post.site = 'googlecom'; // should not pass + +validate(post).then(errors => { + // errors is an array of validation errors + if (errors.length > 0) { + console.log('validation failed. errors: ', errors); + } else { + console.log('validation succeed'); + } +}); + +validateOrReject(post).catch(errors => { + console.log('Promise rejected (validation failed). Errors: ', errors); +}); +// or +async function validateOrRejectExample(input) { + try { + await validateOrReject(input); + } catch (errors) { + console.log('Caught promise rejection (validation failed). Errors: ', errors); + } +} +``` + +### Passing options + +The `validate` function optionally expects a `ValidatorOptions` object as a second parameter: + +```ts +export interface ValidatorOptions { + skipMissingProperties?: boolean; + whitelist?: boolean; + forbidNonWhitelisted?: boolean; + groups?: string[]; + dismissDefaultMessages?: boolean; + validationError?: { + target?: boolean; + value?: boolean; + }; + + forbidUnknownValues?: boolean; + stopAtFirstError?: boolean; +} +``` + +> It's highly advised to set `forbidUnknownValues: true` as it will prevent unknown objects from passing validation. + +## Validation errors + +The `validate` method returns an array of `ValidationError` objects. Each `ValidationError` is: + +```typescript +{ + target: Object; // Object that was validated. + property: string; // Object's property that haven't pass validation. + value: any; // Value that haven't pass a validation. + constraints?: { // Constraints that failed validation with error messages. + [type: string]: string; + }; + children?: ValidationError[]; // Contains all nested validation errors of the property +} +``` + +In our case, when we validated a Post object, we have such an array of `ValidationError` objects: + +```typescript +[{ + target: /* post object */, + property: "title", + value: "Hello", + constraints: { + length: "$property must be longer than or equal to 10 characters" + } +}, { + target: /* post object */, + property: "text", + value: "this is a great post about hell world", + constraints: { + contains: "text must contain a hello string" + } +}, +// and other errors +] +``` + +If you don't want a `target` to be exposed in validation errors, there is a special option when you use validator: + +```typescript +validator.validate(post, { validationError: { target: false } }); +``` + +This is especially useful when you send errors back over http, and you most probably don't want to expose +the whole target object. + +## Validation messages + +You can specify validation message in the decorator options and that message will be returned in the `ValidationError` +returned by the `validate` method (in the case that validation for this field fails). + +```typescript +import { MinLength, MaxLength } from 'class-validator'; + +export class Post { + @MinLength(10, { + message: 'Title is too short', + }) + @MaxLength(50, { + message: 'Title is too long', + }) + title: string; +} +``` + +There are few special tokens you can use in your messages: + +- `$value` - the value that is being validated +- `$property` - name of the object's property being validated +- `$target` - name of the object's class being validated +- `$constraint1`, `$constraint2`, ... `$constraintN` - constraints defined by specific validation type + +Example of usage: + +```typescript +import { MinLength, MaxLength } from 'class-validator'; + +export class Post { + @MinLength(10, { + // here, $constraint1 will be replaced with "10", and $value with actual supplied value + message: 'Title is too short. Minimal length is $constraint1 characters, but actual is $value', + }) + @MaxLength(50, { + // here, $constraint1 will be replaced with "50", and $value with actual supplied value + message: 'Title is too long. Maximal length is $constraint1 characters, but actual is $value', + }) + title: string; +} +``` + +Also you can provide a function, that returns a message. This allows you to create more granular messages: + +```typescript +import { MinLength, MaxLength, ValidationArguments } from 'class-validator'; + +export class Post { + @MinLength(10, { + message: (args: ValidationArguments) => { + if (args.value.length === 1) { + return 'Too short, minimum length is 1 character'; + } else { + return 'Too short, minimum length is ' + args.constraints[0] + ' characters'; + } + }, + }) + title: string; +} +``` + +Message function accepts `ValidationArguments` which contains the following information: + +- `value` - the value that is being validated +- `constraints` - array of constraints defined by specific validation type +- `targetName` - name of the object's class being validated +- `object` - object that is being validated +- `property` - name of the object's property being validated + +## Validating arrays + +If your field is an array and you want to perform validation of each item in the array you must specify a +special `each: true` decorator option: + +```typescript +import { MinLength, MaxLength } from 'class-validator'; + +export class Post { + @MaxLength(20, { + each: true, + }) + tags: string[]; +} +``` + +This will validate each item in `post.tags` array. + +## Validating sets + +If your field is a set and you want to perform validation of each item in the set you must specify a +special `each: true` decorator option: + +```typescript +import { MinLength, MaxLength } from 'class-validator'; + +export class Post { + @MaxLength(20, { + each: true, + }) + tags: Set; +} +``` + +This will validate each item in `post.tags` set. + +## Validating maps + +If your field is a map and you want to perform validation of each item in the map you must specify a +special `each: true` decorator option: + +```typescript +import { MinLength, MaxLength } from 'class-validator'; + +export class Post { + @MaxLength(20, { + each: true, + }) + tags: Map; +} +``` + +This will validate each item in `post.tags` map. + +## Validating nested objects + +If your object contains nested objects and you want the validator to perform their validation too, then you need to +use the `@ValidateNested()` decorator: + +```typescript +import { ValidateNested } from 'class-validator'; + +export class Post { + @ValidateNested() + user: User; +} +``` + +Please note that nested object _must_ be an instance of a class, otherwise `@ValidateNested` won't know what class is target of validation. Check also [Validating plain objects](#validating-plain-objects). + +It also works with multi-dimensional array, like : + +```typescript +import { ValidateNested } from 'class-validator'; + +export class Plan2D { + @ValidateNested() + matrix: Point[][]; +} +``` + +## Validating promises + +If your object contains property with `Promise`-returned value that should be validated, then you need to use the `@ValidatePromise()` decorator: + +```typescript +import { ValidatePromise, Min } from 'class-validator'; + +export class Post { + @Min(0) + @ValidatePromise() + userId: Promise; +} +``` + +It also works great with `@ValidateNested` decorator: + +```typescript +import { ValidateNested, ValidatePromise } from 'class-validator'; + +export class Post { + @ValidateNested() + @ValidatePromise() + user: Promise; +} +``` + +## Inheriting Validation decorators + +When you define a subclass which extends from another one, the subclass will automatically inherit the parent's decorators. If a property is redefined in the descendant class decorators will be applied on it both from that and the base class. + +```typescript +import { validate } from 'class-validator'; + +class BaseContent { + @IsEmail() + email: string; + + @IsString() + password: string; +} + +class User extends BaseContent { + @MinLength(10) + @MaxLength(20) + name: string; + + @Contains('hello') + welcome: string; + + @MinLength(20) + password: string; +} + +let user = new User(); + +user.email = 'invalid email'; // inherited property +user.password = 'too short'; // password wil be validated not only against IsString, but against MinLength as well +user.name = 'not valid'; +user.welcome = 'helo'; + +validate(user).then(errors => { + // ... +}); // it will return errors for email, title and text properties +``` + +## Conditional validation + +The conditional validation decorator (`@ValidateIf`) can be used to ignore the validators on a property when the provided condition function returns false. The condition function takes the object being validated and must return a `boolean`. + +```typescript +import { ValidateIf, IsNotEmpty } from 'class-validator'; + +export class Post { + otherProperty: string; + + @ValidateIf(o => o.otherProperty === 'value') + @IsNotEmpty() + example: string; +} +``` + +In the example above, the validation rules applied to `example` won't be run unless the object's `otherProperty` is `"value"`. + +Note that when the condition is false all validation decorators are ignored, including `isDefined`. + +## Whitelisting + +Even if your object is an instance of a validation class it can contain additional properties that are not defined. +If you do not want to have such properties on your object, pass special flag to `validate` method: + +```typescript +import { validate } from 'class-validator'; +// ... +validate(post, { whitelist: true }); +``` + +This will strip all properties that don't have any decorators. If no other decorator is suitable for your property, +you can use @Allow decorator: + +```typescript +import {validate, Allow, Min} from "class-validator"; + +export class Post { + + @Allow() + title: string; + + @Min(0) + views: number; + + nonWhitelistedProperty: number; +} + +let post = new Post(); +post.title = 'Hello world!'; +post.views = 420; + +post.nonWhitelistedProperty = 69; +(post as any).anotherNonWhitelistedProperty = "something"; + +validate(post).then(errors => { + // post.nonWhitelistedProperty is not defined + // (post as any).anotherNonWhitelistedProperty is not defined + ... +}); +``` + +If you would rather to have an error thrown when any non-whitelisted properties are present, pass another flag to +`validate` method: + +```typescript +import { validate } from 'class-validator'; +// ... +validate(post, { whitelist: true, forbidNonWhitelisted: true }); +``` + +## Passing context to decorators + +It's possible to pass a custom object to decorators which will be accessible on the `ValidationError` instance of the property if validation failed. + +```ts +import { validate } from 'class-validator'; + +class MyClass { + @MinLength(32, { + message: 'EIC code must be at least 32 characters', + context: { + errorCode: 1003, + developerNote: 'The validated string must contain 32 or more characters.', + }, + }) + eicCode: string; +} + +const model = new MyClass(); + +validate(model).then(errors => { + //errors[0].contexts['minLength'].errorCode === 1003 +}); +``` + +## Skipping missing properties + +Sometimes you may want to skip validation of the properties that do not exist in the validating object. This is +usually desirable when you want to update some parts of the object, and want to validate only updated parts, +but skip everything else, e.g. skip missing properties. +In such situations you will need to pass a special flag to `validate` method: + +```typescript +import { validate } from 'class-validator'; +// ... +validate(post, { skipMissingProperties: true }); +``` + +When skipping missing properties, sometimes you want not to skip all missing properties, some of them maybe required +for you, even if skipMissingProperties is set to true. For such cases you should use `@IsDefined()` decorator. +`@IsDefined()` is the only decorator that ignores `skipMissingProperties` option. + +## Validation groups + +In different situations you may want to use different validation schemas of the same object. +In such cases you can use validation groups. + +```typescript +import { validate, Min, Length } from 'class-validator'; + +export class User { + @Min(12, { + groups: ['registration'], + }) + age: number; + + @Length(2, 20, { + groups: ['registration', 'admin'], + }) + name: string; +} + +let user = new User(); +user.age = 10; +user.name = 'Alex'; + +validate(user, { + groups: ['registration'], +}); // this will not pass validation + +validate(user, { + groups: ['admin'], +}); // this will pass validation + +validate(user, { + groups: ['registration', 'admin'], +}); // this will not pass validation + +validate(user, { + groups: undefined, // the default +}); // this will not pass validation since all properties get validated regardless of their groups + +validate(user, { + groups: [], +}); // this will not pass validation, (equivalent to 'groups: undefined', see above) +``` + +There is also a special flag `always: true` in validation options that you can use. This flag says that this validation +must be applied always no matter which group is used. + +## Custom validation classes + +If you have custom validation logic you can create a _Constraint class_: + +1. First create a file, lets say `CustomTextLength.ts`, and define a new class: + + ```typescript + import { ValidatorConstraint, ValidatorConstraintInterface, ValidationArguments } from 'class-validator'; + + @ValidatorConstraint({ name: 'customText', async: false }) + export class CustomTextLength implements ValidatorConstraintInterface { + validate(text: string, args: ValidationArguments) { + return text.length > 1 && text.length < 10; // for async validations you must return a Promise here + } + + defaultMessage(args: ValidationArguments) { + // here you can provide default error message if validation failed + return 'Text ($value) is too short or too long!'; + } + } + ``` + + We marked our class with `@ValidatorConstraint` decorator. + You can also supply a validation constraint name - this name will be used as "error type" in ValidationError. + If you will not supply a constraint name - it will be auto-generated. + + Our class must implement `ValidatorConstraintInterface` interface and its `validate` method, + which defines validation logic. If validation succeeds, method returns true, otherwise false. + Custom validator can be asynchronous, if you want to perform validation after some asynchronous + operations, simply return a promise with boolean inside in `validate` method. + + Also we defined optional method `defaultMessage` which defines a default error message, + in the case that the decorator's implementation doesn't set an error message. + +2) Then you can use your new validation constraint in your class: + + ```typescript + import { Validate } from 'class-validator'; + import { CustomTextLength } from './CustomTextLength'; + + export class Post { + @Validate(CustomTextLength, { + message: 'Title is too short or long!', + }) + title: string; + } + ``` + + Here we set our newly created `CustomTextLength` validation constraint for `Post.title`. + +3) And use validator as usual: + + ```typescript + import { validate } from 'class-validator'; + + validate(post).then(errors => { + // ... + }); + ``` + +You can also pass constraints to your validator, like this: + +```typescript +import { Validate } from 'class-validator'; +import { CustomTextLength } from './CustomTextLength'; + +export class Post { + @Validate(CustomTextLength, [3, 20], { + message: 'Wrong post title', + }) + title: string; +} +``` + +And use them from `validationArguments` object: + +```typescript +import { ValidationArguments, ValidatorConstraint, ValidatorConstraintInterface } from 'class-validator'; + +@ValidatorConstraint() +export class CustomTextLength implements ValidatorConstraintInterface { + validate(text: string, validationArguments: ValidationArguments) { + return text.length > validationArguments.constraints[0] && text.length < validationArguments.constraints[1]; + } +} +``` + +## Custom validation decorators + +You can also create a custom decorators. Its the most elegant way of using a custom validations. +Lets create a decorator called `@IsLongerThan`: + +1. Create a decorator itself: + + ```typescript + import { registerDecorator, ValidationOptions, ValidationArguments } from 'class-validator'; + + export function IsLongerThan(property: string, validationOptions?: ValidationOptions) { + return function (object: Object, propertyName: string) { + registerDecorator({ + name: 'isLongerThan', + target: object.constructor, + propertyName: propertyName, + constraints: [property], + options: validationOptions, + validator: { + validate(value: any, args: ValidationArguments) { + const [relatedPropertyName] = args.constraints; + const relatedValue = (args.object as any)[relatedPropertyName]; + return typeof value === 'string' && typeof relatedValue === 'string' && value.length > relatedValue.length; // you can return a Promise here as well, if you want to make async validation + }, + }, + }); + }; + } + ``` + +2. Put it to use: + + ```typescript + import { IsLongerThan } from './IsLongerThan'; + + export class Post { + title: string; + + @IsLongerThan('title', { + /* you can also use additional validation options, like "groups" in your custom validation decorators. "each" is not supported */ + message: 'Text must be longer than the title', + }) + text: string; + } + ``` + +In your custom decorators you can also use `ValidationConstraint`. +Lets create another custom validation decorator called `IsUserAlreadyExist`: + +1. Create a ValidationConstraint and decorator: + + ```typescript + import { + registerDecorator, + ValidationOptions, + ValidatorConstraint, + ValidatorConstraintInterface, + ValidationArguments, + } from 'class-validator'; + + @ValidatorConstraint({ async: true }) + export class IsUserAlreadyExistConstraint implements ValidatorConstraintInterface { + validate(userName: any, args: ValidationArguments) { + return UserRepository.findOneByName(userName).then(user => { + if (user) return false; + return true; + }); + } + } + + export function IsUserAlreadyExist(validationOptions?: ValidationOptions) { + return function (object: Object, propertyName: string) { + registerDecorator({ + target: object.constructor, + propertyName: propertyName, + options: validationOptions, + constraints: [], + validator: IsUserAlreadyExistConstraint, + }); + }; + } + ``` + + note that we marked our constraint that it will by async by adding `{ async: true }` in validation options. + +2. And put it to use: + + ```typescript + import { IsUserAlreadyExist } from './IsUserAlreadyExist'; + + export class User { + @IsUserAlreadyExist({ + message: 'User $value already exists. Choose another name.', + }) + name: string; + } + ``` + +## Using service container + +Validator supports service container in the case if want to inject dependencies into your custom validator constraint +classes. Here is example how to integrate it with [typedi][2]: + +```typescript +import { Container } from 'typedi'; +import { useContainer, Validator } from 'class-validator'; + +// do this somewhere in the global application level: +useContainer(Container); +let validator = Container.get(Validator); + +// now everywhere you can inject Validator class which will go from the container +// also you can inject classes using constructor injection into your custom ValidatorConstraint-s +``` + +## Synchronous validation + +If you want to perform a simple non async validation you can use `validateSync` method instead of regular `validate` +method. It has the same arguments as `validate` method. But note, this method **ignores** all async validations +you have. + +## Manual validation + +There are several method exist in the Validator that allows to perform non-decorator based validation: + +```typescript +import { isEmpty, isBoolean } from 'class-validator'; + +isEmpty(value); +isBoolean(value); +``` + +## Validation decorators + + + +| Decorator | Description | +| ------------------------------------------------| ----------- | +| **Common validation decorators** | | +| `@IsDefined(value: any)` | Checks if value is defined (!== undefined, !== null). This is the only decorator that ignores skipMissingProperties option. | +| `@IsOptional()` | Checks if given value is empty (=== null, === undefined) and if so, ignores all the validators on the property. | +| `@Equals(comparison: any)` | Checks if value equals ("===") comparison. | +| `@NotEquals(comparison: any)` | Checks if value not equal ("!==") comparison. | +| `@IsEmpty()` | Checks if given value is empty (=== '', === null, === undefined). | +| `@IsNotEmpty()` | Checks if given value is not empty (!== '', !== null, !== undefined). | +| `@IsIn(values: any[])` | Checks if value is in a array of allowed values. | +| `@IsNotIn(values: any[])` | Checks if value is not in a array of disallowed values. | +| **Type validation decorators** | | +| `@IsBoolean()` | Checks if a value is a boolean. | +| `@IsDate()` | Checks if the value is a date. | +| `@IsString()` | Checks if the string is a string. | +| `@IsNumber(options: IsNumberOptions)` | Checks if the value is a number. | +| `@IsInt()` | Checks if the value is an integer number. | +| `@IsArray()` | Checks if the value is an array | +| `@IsEnum(entity: object)` | Checks if the value is an valid enum | +| **Number validation decorators** | +| `@IsDivisibleBy(num: number)` | Checks if the value is a number that's divisible by another. | +| `@IsPositive()` | Checks if the value is a positive number greater than zero. | +| `@IsNegative()` | Checks if the value is a negative number smaller than zero. | +| `@Min(min: number)` | Checks if the given number is greater than or equal to given number. | +| `@Max(max: number)` | Checks if the given number is less than or equal to given number. | +| **Date validation decorators** | +| `@MinDate(date: Date)` | Checks if the value is a date that's after the specified date. | +| `@MaxDate(date: Date)` | Checks if the value is a date that's before the specified date. | +| **String-type validation decorators** | | +| `@IsBooleanString()` | Checks if a string is a boolean (e.g. is "true" or "false"). | +| `@IsDateString()` | Alias for `@IsISO8601()`. | +| `@IsNumberString(options?: IsNumericOptions)` | Checks if a string is a number. | +| **String validation decorators** | | +| `@Contains(seed: string)` | Checks if the string contains the seed. | +| `@NotContains(seed: string)` | Checks if the string not contains the seed. | +| `@IsAlpha()` | Checks if the string contains only letters (a-zA-Z). | +| `@IsAlphanumeric()` | Checks if the string contains only letters and numbers. | +| `@IsDecimal(options?: IsDecimalOptions)` | Checks if the string is a valid decimal value. Default IsDecimalOptions are `force_decimal=False`, `decimal_digits: '1,'`, `locale: 'en-US'` | +| `@IsAscii()` | Checks if the string contains ASCII chars only. | +| `@IsBase32()` | Checks if a string is base32 encoded. | +| `@IsBase64()` | Checks if a string is base64 encoded. | +| `@IsIBAN()` | Checks if a string is a IBAN (International Bank Account Number). | +| `@IsBIC()` | Checks if a string is a BIC (Bank Identification Code) or SWIFT code. | +| `@IsByteLength(min: number, max?: number)` | Checks if the string's length (in bytes) falls in a range. | +| `@IsCreditCard()` | Checks if the string is a credit card. | +| `@IsCurrency(options?: IsCurrencyOptions)` | Checks if the string is a valid currency amount. | +| `@IsEthereumAddress()` | Checks if the string is an Ethereum address using basic regex. Does not validate address checksums. | +| `@IsBtcAddress()` | Checks if the string is a valid BTC address. | +| `@IsDataURI()` | Checks if the string is a data uri format. | +| `@IsEmail(options?: IsEmailOptions)` | Checks if the string is an email.| +| `@IsFQDN(options?: IsFQDNOptions)` | Checks if the string is a fully qualified domain name (e.g. domain.com). | +| `@IsFullWidth()` | Checks if the string contains any full-width chars. | +| `@IsHalfWidth()` | Checks if the string contains any half-width chars. | +| `@IsVariableWidth()` | Checks if the string contains a mixture of full and half-width chars. | +| `@IsHexColor()` | Checks if the string is a hexadecimal color. | +| `@IsHSLColor()` | Checks if the string is an HSL color based on [CSS Colors Level 4 specification](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value). | +| `@IsRgbColor(options?: IsRgbOptions)` | Checks if the string is a rgb or rgba color. | +| `@IsIdentityCard(locale?: string)` | Checks if the string is a valid identity card code. | +| `@IsPassportNumber(countryCode?: string)` | Checks if the string is a valid passport number relative to a specific country code. | +| `@IsPostalCode(locale?: string)` | Checks if the string is a postal code. | +| `@IsHexadecimal()` | Checks if the string is a hexadecimal number. | +| `@IsOctal()` | Checks if the string is a octal number. | +| `@IsMACAddress(options?: IsMACAddressOptions)` | Checks if the string is a MAC Address. | +| `@IsIP(version?: "4"\|"6")` | Checks if the string is an IP (version 4 or 6). | +| `@IsPort()` | Checks if the string is a valid port number. | +| `@IsISBN(version?: "10"\|"13")` | Checks if the string is an ISBN (version 10 or 13). | +| `@IsEAN()` | Checks if the string is an if the string is an EAN (European Article Number). | +| `@IsISIN()` | Checks if the string is an ISIN (stock/security identifier). | +| `@IsISO8601(options?: IsISO8601Options)` | Checks if the string is a valid ISO 8601 date format. Use the option strict = true for additional checks for a valid date. | +| `@IsJSON()` | Checks if the string is valid JSON. | +| `@IsJWT()` | Checks if the string is valid JWT. | +| `@IsObject()` | Checks if the object is valid Object (null, functions, arrays will return false). | +| `@IsNotEmptyObject()` | Checks if the object is not empty. | +| `@IsLowercase()` | Checks if the string is lowercase. | +| `@IsLatLong()` | Checks if the string is a valid latitude-longitude coordinate in the format lat, long. | +| `@IsLatitude()` | Checks if the string or number is a valid latitude coordinate. | +| `@IsLongitude()` | Checks if the string or number is a valid longitude coordinate. | +| `@IsMobilePhone(locale: string)` | Checks if the string is a mobile phone number. | +| `@IsISO31661Alpha2()` | Checks if the string is a valid ISO 3166-1 alpha-2 officially assigned country code. | +| `@IsISO31661Alpha3()` | Checks if the string is a valid ISO 3166-1 alpha-3 officially assigned country code. | +| `@IsLocale()` | Checks if the string is a locale. | +| `@IsPhoneNumber(region: string)` | Checks if the string is a valid phone numberusing libphonenumber-js. | +| `@IsMongoId()` | Checks if the string is a valid hex-encoded representation of a MongoDB ObjectId. | +| `@IsMultibyte()` | Checks if the string contains one or more multibyte chars. | +| `@IsNumberString(options?: IsNumericOptions)` | Checks if the string is numeric. | +| `@IsSurrogatePair()` | Checks if the string contains any surrogate pairs chars. | +| `@IsUrl(options?: IsURLOptions)` | Checks if the string is an url. | +| `@IsMagnetURI()` | Checks if the string is a [magnet uri format](https://en.wikipedia.org/wiki/Magnet_URI_scheme). | +| `@IsUUID(version?: "3"\|"4"\|"5"\|"all")` | Checks if the string is a UUID (version 3, 4, 5 or all ). | +| `@IsFirebasePushId()` | Checks if the string is a [Firebase Push ID](https://firebase.googleblog.com/2015/02/the-2120-ways-to-ensure-unique_68.html) | +| `@IsUppercase()` | Checks if the string is uppercase. | +| `@Length(min: number, max?: number)` | Checks if the string's length falls in a range. | +| `@MinLength(min: number)` | Checks if the string's length is not less than given number. | +| `@MaxLength(max: number)` | Checks if the string's length is not more than given number. | +| `@Matches(pattern: RegExp, modifiers?: string)` | Checks if string matches the pattern. Either matches('foo', /foo/i) or matches('foo', 'foo', 'i'). | +| `@IsMilitaryTime()` | Checks if the string is a valid representation of military time in the format HH:MM. | +| `@IsHash(algorithm: string)` | Checks if the string is a hash The following types are supported:`md4`, `md5`, `sha1`, `sha256`, `sha384`, `sha512`, `ripemd128`, `ripemd160`, `tiger128`, `tiger160`, `tiger192`, `crc32`, `crc32b`. | +| `@IsMimeType()` | Checks if the string matches to a valid [MIME type](https://en.wikipedia.org/wiki/Media_type) format | +| `@IsSemVer()` | Checks if the string is a Semantic Versioning Specification (SemVer). | +| `@IsISSN(options?: IsISSNOptions)` | Checks if the string is a ISSN. | +| `@IsISRC()` | Checks if the string is a [ISRC](https://en.wikipedia.org/wiki/International_Standard_Recording_Code). | +| `@IsRFC3339()` | Checks if the string is a valid [RFC 3339](https://tools.ietf.org/html/rfc3339) date. | +| **Array validation decorators** | | +| `@ArrayContains(values: any[])` | Checks if array contains all values from the given array of values. | +| `@ArrayNotContains(values: any[])` | Checks if array does not contain any of the given values. | +| `@ArrayNotEmpty()` | Checks if given array is not empty. | +| `@ArrayMinSize(min: number)` | Checks if the array's length is greater than or equal to the specified number. | +| `@ArrayMaxSize(max: number)` | Checks if the array's length is less or equal to the specified number. | +| `@ArrayUnique(identifier?: (o) => any)` | Checks if all array's values are unique. Comparison for objects is reference-based. Optional function can be speciefied which return value will be used for the comparsion. | +| **Object validation decorators** | +| `@IsInstance(value: any)` | Checks if the property is an instance of the passed value. | +| **Other decorators** | | +| `@Allow()` | Prevent stripping off the property when no other constraint is specified for it. | + +## Defining validation schema without decorators + +You can define your validation schemas without decorators: + +- you can define it in the separate object +- you can define it in the `.json` file + +This feature maybe useful in the cases if: + +- are using es5/es6 and don't have decorators available +- you don't have a classes, and instead using interfaces +- you don't want to use model at all +- you want to have a validation schema separate of your model +- you want beautiful json-schema based validation models +- you simply hate decorators + +Here is an example of using it: + +1. Create a schema object: + + ```typescript + import { ValidationSchema } from 'class-validator'; + export let UserValidationSchema: ValidationSchema = { + // using interface here is not required, its just for type-safety + name: 'myUserSchema', // this is required, and must be unique + properties: { + firstName: [ + { + type: 'minLength', // validation type. All validation types are listed in ValidationTypes class. + constraints: [2], + }, + { + type: 'maxLength', + constraints: [20], + }, + ], + lastName: [ + { + type: 'minLength', + constraints: [2], + }, + { + type: 'maxLength', + constraints: [20], + }, + ], + email: [ + { + type: 'isEmail', + }, + ], + }, + }; + ``` + + Same schema can be provided in `.json` file, depend on your wish. + +2. Register your schema: + + ```typescript + import { registerSchema } from 'class-validator'; + import { UserValidationSchema } from './UserValidationSchema'; + registerSchema(UserValidationSchema); // if schema is in .json file, then you can simply do registerSchema(require("path-to-schema.json")); + ``` + + Better to put this code in a global place, maybe when you bootstrap your application, for example in `app.ts`. + +3. Validate your object using validation schema: + + ```typescript + import { validate } from 'class-validator'; + const user = { firstName: 'Johny', secondName: 'Cage', email: 'johny@cage.com' }; + validate('myUserSchema', user).then(errors => { + if (errors.length > 0) { + console.log('Validation failed: ', errors); + } else { + console.log('Validation succeed.'); + } + }); + ``` + + That's it. Here `"myUserSchema"` is the name of our validation schema. + `validate` method will perform validation based on this schema + +## Validating plain objects + +Due to nature of the decorators, the validated object has to be instantiated using `new Class()` syntax. If you have your class defined using class-validator decorators and you want to validate plain JS object (literal object or returned by JSON.parse), you need to transform it to the class instance via using [class-transformer](https://github.com/pleerock/class-transformer)). + +## Samples + +Take a look on samples in [./sample](https://github.com/pleerock/class-validator/tree/master/sample) for more examples of +usages. + +## Extensions + +There are several extensions that simplify class-validator integration with other modules: + +- [class-validator integration](https://github.com/19majkel94/class-transformer-validator) with [class-transformer](https://github.com/pleerock/class-transformer) +- [class-validator-rule](https://github.com/yantrab/class-validator-rule) +- [ngx-dynamic-form-builder](https://github.com/EndyKaufman/ngx-dynamic-form-builder) +- [abarghoud/ngx-reactive-form-class-validator](https://github.com/abarghoud/ngx-reactive-form-class-validator) + +## Release notes + +See information about breaking changes and release notes [here][3]. + +[1]: https://github.com/chriso/validator.js +[2]: https://github.com/pleerock/typedi +[3]: CHANGELOG.md diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/bundles/class-validator.umd.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/bundles/class-validator.umd.js new file mode 100644 index 00000000..79ce36af --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/bundles/class-validator.umd.js @@ -0,0 +1,10414 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ClassValidator = {})); +})(this, (function (exports) { 'use strict'; + + /** + * This metadata contains validation rules. + */ + var ValidationMetadata = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function ValidationMetadata(args) { + /** + * Validation groups used for this validation. + */ + this.groups = []; + /** + * Specifies if validated value is an array and each of its item must be validated. + */ + this.each = false; + /* + * A transient set of data passed through to the validation result for response mapping + */ + this.context = undefined; + this.type = args.type; + this.target = args.target; + this.propertyName = args.propertyName; + this.constraints = args.constraints; + this.constraintCls = args.constraintCls; + this.validationTypeOptions = args.validationTypeOptions; + if (args.validationOptions) { + this.message = args.validationOptions.message; + this.groups = args.validationOptions.groups; + this.always = args.validationOptions.always; + this.each = args.validationOptions.each; + this.context = args.validationOptions.context; + } + } + return ValidationMetadata; + }()); + + /** + * Used to transform validation schemas to validation metadatas. + */ + var ValidationSchemaToMetadataTransformer = /** @class */ (function () { + function ValidationSchemaToMetadataTransformer() { + } + ValidationSchemaToMetadataTransformer.prototype.transform = function (schema) { + var metadatas = []; + Object.keys(schema.properties).forEach(function (property) { + schema.properties[property].forEach(function (validation) { + var validationOptions = { + message: validation.message, + groups: validation.groups, + always: validation.always, + each: validation.each, + }; + var args = { + type: validation.type, + target: schema.name, + propertyName: property, + constraints: validation.constraints, + validationTypeOptions: validation.options, + validationOptions: validationOptions, + }; + metadatas.push(new ValidationMetadata(args)); + }); + }); + return metadatas; + }; + return ValidationSchemaToMetadataTransformer; + }()); + + /** + * Convert Map, Set to Array + */ + function convertToArray(val) { + if (val instanceof Map) { + return Array.from(val.values()); + } + return Array.isArray(val) ? val : Array.from(val); + } + + /** + * This function returns the global object across Node and browsers. + * + * Note: `globalThis` is the standardized approach however it has been added to + * Node.js in version 12. We need to include this snippet until Node 12 EOL. + */ + function getGlobal() { + if (typeof globalThis !== 'undefined') { + return globalThis; + } + if (typeof global !== 'undefined') { + return global; + } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'window'. + if (typeof window !== 'undefined') { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'window'. + return window; + } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'self'. + if (typeof self !== 'undefined') { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'self'. + return self; + } + } + + // https://github.com/TylorS/typed-is-promise/blob/abf1514e1b6961adfc75765476b0debb96b2c3ae/src/index.ts + function isPromise(p) { + return p !== null && typeof p === 'object' && typeof p.then === 'function'; + } + + /** + * Storage all metadatas. + */ + var MetadataStorage = /** @class */ (function () { + function MetadataStorage() { + // ------------------------------------------------------------------------- + // Private properties + // ------------------------------------------------------------------------- + this.validationMetadatas = []; + this.constraintMetadatas = []; + } + Object.defineProperty(MetadataStorage.prototype, "hasValidationMetaData", { + get: function () { + return !!this.validationMetadatas.length; + }, + enumerable: false, + configurable: true + }); + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Adds a new validation metadata. + */ + MetadataStorage.prototype.addValidationSchema = function (schema) { + var _this = this; + var validationMetadatas = new ValidationSchemaToMetadataTransformer().transform(schema); + validationMetadatas.forEach(function (validationMetadata) { return _this.addValidationMetadata(validationMetadata); }); + }; + /** + * Adds a new validation metadata. + */ + MetadataStorage.prototype.addValidationMetadata = function (metadata) { + this.validationMetadatas.push(metadata); + }; + /** + * Adds a new constraint metadata. + */ + MetadataStorage.prototype.addConstraintMetadata = function (metadata) { + this.constraintMetadatas.push(metadata); + }; + /** + * Groups metadata by their property names. + */ + MetadataStorage.prototype.groupByPropertyName = function (metadata) { + var grouped = {}; + metadata.forEach(function (metadata) { + if (!grouped[metadata.propertyName]) + grouped[metadata.propertyName] = []; + grouped[metadata.propertyName].push(metadata); + }); + return grouped; + }; + /** + * Gets all validation metadatas for the given object with the given groups. + */ + MetadataStorage.prototype.getTargetValidationMetadatas = function (targetConstructor, targetSchema, always, strictGroups, groups) { + var includeMetadataBecauseOfAlwaysOption = function (metadata) { + // `metadata.always` overrides global default. + if (typeof metadata.always !== 'undefined') + return metadata.always; + // `metadata.groups` overrides global default. + if (metadata.groups && metadata.groups.length) + return false; + // Use global default. + return always; + }; + var excludeMetadataBecauseOfStrictGroupsOption = function (metadata) { + if (strictGroups) { + // Validation is not using groups. + if (!groups || !groups.length) { + // `metadata.groups` has at least one group. + if (metadata.groups && metadata.groups.length) + return true; + } + } + return false; + }; + // get directly related to a target metadatas + var originalMetadatas = this.validationMetadatas.filter(function (metadata) { + if (metadata.target !== targetConstructor && metadata.target !== targetSchema) + return false; + if (includeMetadataBecauseOfAlwaysOption(metadata)) + return true; + if (excludeMetadataBecauseOfStrictGroupsOption(metadata)) + return false; + if (groups && groups.length > 0) + return metadata.groups && !!metadata.groups.find(function (group) { return groups.indexOf(group) !== -1; }); + return true; + }); + // get metadatas for inherited classes + var inheritedMetadatas = this.validationMetadatas.filter(function (metadata) { + // if target is a string it's means we validate against a schema, and there is no inheritance support for schemas + if (typeof metadata.target === 'string') + return false; + if (metadata.target === targetConstructor) + return false; + if (metadata.target instanceof Function && !(targetConstructor.prototype instanceof metadata.target)) + return false; + if (includeMetadataBecauseOfAlwaysOption(metadata)) + return true; + if (excludeMetadataBecauseOfStrictGroupsOption(metadata)) + return false; + if (groups && groups.length > 0) + return metadata.groups && !!metadata.groups.find(function (group) { return groups.indexOf(group) !== -1; }); + return true; + }); + // filter out duplicate metadatas, prefer original metadatas instead of inherited metadatas + var uniqueInheritedMetadatas = inheritedMetadatas.filter(function (inheritedMetadata) { + return !originalMetadatas.find(function (originalMetadata) { + return (originalMetadata.propertyName === inheritedMetadata.propertyName && + originalMetadata.type === inheritedMetadata.type); + }); + }); + return originalMetadatas.concat(uniqueInheritedMetadatas); + }; + /** + * Gets all validator constraints for the given object. + */ + MetadataStorage.prototype.getTargetValidatorConstraints = function (target) { + return this.constraintMetadatas.filter(function (metadata) { return metadata.target === target; }); + }; + return MetadataStorage; + }()); + /** + * Gets metadata storage. + * Metadata storage follows the best practices and stores metadata in a global variable. + */ + function getMetadataStorage() { + var global = getGlobal(); + if (!global.classValidatorMetadataStorage) { + global.classValidatorMetadataStorage = new MetadataStorage(); + } + return global.classValidatorMetadataStorage; + } + + /** + * Validation error description. + */ + var ValidationError = /** @class */ (function () { + function ValidationError() { + } + /** + * + * @param shouldDecorate decorate the message with ANSI formatter escape codes for better readability + * @param hasParent true when the error is a child of an another one + * @param parentPath path as string to the parent of this property + */ + ValidationError.prototype.toString = function (shouldDecorate, hasParent, parentPath) { + var _this = this; + if (shouldDecorate === void 0) { shouldDecorate = false; } + if (hasParent === void 0) { hasParent = false; } + if (parentPath === void 0) { parentPath = ""; } + var boldStart = shouldDecorate ? "\u001B[1m" : ""; + var boldEnd = shouldDecorate ? "\u001B[22m" : ""; + var propConstraintFailed = function (propertyName) { + return " - property ".concat(boldStart).concat(parentPath).concat(propertyName).concat(boldEnd, " has failed the following constraints: ").concat(boldStart).concat(Object.keys(_this.constraints).join(", ")).concat(boldEnd, " \n"); + }; + if (!hasParent) { + return ("An instance of ".concat(boldStart).concat(this.target ? this.target.constructor.name : 'an object').concat(boldEnd, " has failed the validation:\n") + + (this.constraints ? propConstraintFailed(this.property) : "") + + (this.children + ? this.children.map(function (childError) { return childError.toString(shouldDecorate, true, _this.property); }).join("") + : "")); + } + else { + // we format numbers as array indexes for better readability. + var formattedProperty_1 = Number.isInteger(+this.property) + ? "[".concat(this.property, "]") + : "".concat(parentPath ? "." : "").concat(this.property); + if (this.constraints) { + return propConstraintFailed(formattedProperty_1); + } + else { + return this.children + ? this.children + .map(function (childError) { return childError.toString(shouldDecorate, true, "".concat(parentPath).concat(formattedProperty_1)); }) + .join("") + : ""; + } + } + }; + return ValidationError; + }()); + + /** + * Validation types. + */ + var ValidationTypes = /** @class */ (function () { + function ValidationTypes() { + } + /** + * Checks if validation type is valid. + */ + ValidationTypes.isValid = function (type) { + var _this = this; + return (type !== 'isValid' && + type !== 'getMessage' && + Object.keys(this) + .map(function (key) { return _this[key]; }) + .indexOf(type) !== -1); + }; + /* system */ + ValidationTypes.CUSTOM_VALIDATION = 'customValidation'; // done + ValidationTypes.NESTED_VALIDATION = 'nestedValidation'; // done + ValidationTypes.PROMISE_VALIDATION = 'promiseValidation'; // done + ValidationTypes.CONDITIONAL_VALIDATION = 'conditionalValidation'; // done + ValidationTypes.WHITELIST = 'whitelistValidation'; // done + ValidationTypes.IS_DEFINED = 'isDefined'; // done + return ValidationTypes; + }()); + + /** + * Convert the constraint to a string to be shown in an error + */ + function constraintToString(constraint) { + if (Array.isArray(constraint)) { + return constraint.join(', '); + } + return "".concat(constraint); + } + var ValidationUtils = /** @class */ (function () { + function ValidationUtils() { + } + ValidationUtils.replaceMessageSpecialTokens = function (message, validationArguments) { + var messageString; + if (message instanceof Function) { + messageString = message(validationArguments); + } + else if (typeof message === 'string') { + messageString = message; + } + if (messageString && Array.isArray(validationArguments.constraints)) { + validationArguments.constraints.forEach(function (constraint, index) { + messageString = messageString.replace(new RegExp("\\$constraint".concat(index + 1), 'g'), constraintToString(constraint)); + }); + } + if (messageString && + validationArguments.value !== undefined && + validationArguments.value !== null && + typeof validationArguments.value === 'string') + messageString = messageString.replace(/\$value/g, validationArguments.value); + if (messageString) + messageString = messageString.replace(/\$property/g, validationArguments.property); + if (messageString) + messageString = messageString.replace(/\$target/g, validationArguments.targetName); + return messageString; + }; + return ValidationUtils; + }()); + + /** + * Executes validation over given object. + */ + var ValidationExecutor = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function ValidationExecutor(validator, validatorOptions) { + this.validator = validator; + this.validatorOptions = validatorOptions; + // ------------------------------------------------------------------------- + // Properties + // ------------------------------------------------------------------------- + this.awaitingPromises = []; + this.ignoreAsyncValidations = false; + // ------------------------------------------------------------------------- + // Private Properties + // ------------------------------------------------------------------------- + this.metadataStorage = getMetadataStorage(); + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + ValidationExecutor.prototype.execute = function (object, targetSchema, validationErrors) { + var _this = this; + var _a; + /** + * If there is no metadata registered it means possibly the dependencies are not flatterned and + * more than one instance is used. + * + * TODO: This needs proper handling, forcing to use the same container or some other proper solution. + */ + if (!this.metadataStorage.hasValidationMetaData && ((_a = this.validatorOptions) === null || _a === void 0 ? void 0 : _a.enableDebugMessages) === true) { + console.warn("No metadata found. There is more than once class-validator version installed probably. You need to flatten your dependencies."); + } + var groups = this.validatorOptions ? this.validatorOptions.groups : undefined; + var strictGroups = (this.validatorOptions && this.validatorOptions.strictGroups) || false; + var always = (this.validatorOptions && this.validatorOptions.always) || false; + var targetMetadatas = this.metadataStorage.getTargetValidationMetadatas(object.constructor, targetSchema, always, strictGroups, groups); + var groupedMetadatas = this.metadataStorage.groupByPropertyName(targetMetadatas); + if (this.validatorOptions && this.validatorOptions.forbidUnknownValues && !targetMetadatas.length) { + var validationError = new ValidationError(); + if (!this.validatorOptions || + !this.validatorOptions.validationError || + this.validatorOptions.validationError.target === undefined || + this.validatorOptions.validationError.target === true) + validationError.target = object; + validationError.value = undefined; + validationError.property = undefined; + validationError.children = []; + validationError.constraints = { unknownValue: 'an unknown value was passed to the validate function' }; + validationErrors.push(validationError); + return; + } + if (this.validatorOptions && this.validatorOptions.whitelist) + this.whitelist(object, groupedMetadatas, validationErrors); + // General validation + Object.keys(groupedMetadatas).forEach(function (propertyName) { + var value = object[propertyName]; + var definedMetadatas = groupedMetadatas[propertyName].filter(function (metadata) { return metadata.type === ValidationTypes.IS_DEFINED; }); + var metadatas = groupedMetadatas[propertyName].filter(function (metadata) { return metadata.type !== ValidationTypes.IS_DEFINED && metadata.type !== ValidationTypes.WHITELIST; }); + if (value instanceof Promise && + metadatas.find(function (metadata) { return metadata.type === ValidationTypes.PROMISE_VALIDATION; })) { + _this.awaitingPromises.push(value.then(function (resolvedValue) { + _this.performValidations(object, resolvedValue, propertyName, definedMetadatas, metadatas, validationErrors); + })); + } + else { + _this.performValidations(object, value, propertyName, definedMetadatas, metadatas, validationErrors); + } + }); + }; + ValidationExecutor.prototype.whitelist = function (object, groupedMetadatas, validationErrors) { + var _this = this; + var notAllowedProperties = []; + Object.keys(object).forEach(function (propertyName) { + // does this property have no metadata? + if (!groupedMetadatas[propertyName] || groupedMetadatas[propertyName].length === 0) + notAllowedProperties.push(propertyName); + }); + if (notAllowedProperties.length > 0) { + if (this.validatorOptions && this.validatorOptions.forbidNonWhitelisted) { + // throw errors + notAllowedProperties.forEach(function (property) { + var _a; + var validationError = _this.generateValidationError(object, object[property], property); + validationError.constraints = (_a = {}, _a[ValidationTypes.WHITELIST] = "property ".concat(property, " should not exist"), _a); + validationError.children = undefined; + validationErrors.push(validationError); + }); + } + else { + // strip non allowed properties + notAllowedProperties.forEach(function (property) { return delete object[property]; }); + } + } + }; + ValidationExecutor.prototype.stripEmptyErrors = function (errors) { + var _this = this; + return errors.filter(function (error) { + if (error.children) { + error.children = _this.stripEmptyErrors(error.children); + } + if (Object.keys(error.constraints).length === 0) { + if (error.children.length === 0) { + return false; + } + else { + delete error.constraints; + } + } + return true; + }); + }; + // ------------------------------------------------------------------------- + // Private Methods + // ------------------------------------------------------------------------- + ValidationExecutor.prototype.performValidations = function (object, value, propertyName, definedMetadatas, metadatas, validationErrors) { + var customValidationMetadatas = metadatas.filter(function (metadata) { return metadata.type === ValidationTypes.CUSTOM_VALIDATION; }); + var nestedValidationMetadatas = metadatas.filter(function (metadata) { return metadata.type === ValidationTypes.NESTED_VALIDATION; }); + var conditionalValidationMetadatas = metadatas.filter(function (metadata) { return metadata.type === ValidationTypes.CONDITIONAL_VALIDATION; }); + var validationError = this.generateValidationError(object, value, propertyName); + validationErrors.push(validationError); + var canValidate = this.conditionalValidations(object, value, conditionalValidationMetadatas); + if (!canValidate) { + return; + } + // handle IS_DEFINED validation type the special way - it should work no matter skipUndefinedProperties/skipMissingProperties is set or not + this.customValidations(object, value, definedMetadatas, validationError); + this.mapContexts(object, value, definedMetadatas, validationError); + if (value === undefined && this.validatorOptions && this.validatorOptions.skipUndefinedProperties === true) { + return; + } + if (value === null && this.validatorOptions && this.validatorOptions.skipNullProperties === true) { + return; + } + if ((value === null || value === undefined) && + this.validatorOptions && + this.validatorOptions.skipMissingProperties === true) { + return; + } + this.customValidations(object, value, customValidationMetadatas, validationError); + this.nestedValidations(value, nestedValidationMetadatas, validationError.children); + this.mapContexts(object, value, metadatas, validationError); + this.mapContexts(object, value, customValidationMetadatas, validationError); + }; + ValidationExecutor.prototype.generateValidationError = function (object, value, propertyName) { + var validationError = new ValidationError(); + if (!this.validatorOptions || + !this.validatorOptions.validationError || + this.validatorOptions.validationError.target === undefined || + this.validatorOptions.validationError.target === true) + validationError.target = object; + if (!this.validatorOptions || + !this.validatorOptions.validationError || + this.validatorOptions.validationError.value === undefined || + this.validatorOptions.validationError.value === true) + validationError.value = value; + validationError.property = propertyName; + validationError.children = []; + validationError.constraints = {}; + return validationError; + }; + ValidationExecutor.prototype.conditionalValidations = function (object, value, metadatas) { + return metadatas + .map(function (metadata) { return metadata.constraints[0](object, value); }) + .reduce(function (resultA, resultB) { return resultA && resultB; }, true); + }; + ValidationExecutor.prototype.customValidations = function (object, value, metadatas, error) { + var _this = this; + metadatas.forEach(function (metadata) { + _this.metadataStorage.getTargetValidatorConstraints(metadata.constraintCls).forEach(function (customConstraintMetadata) { + if (customConstraintMetadata.async && _this.ignoreAsyncValidations) + return; + if (_this.validatorOptions && + _this.validatorOptions.stopAtFirstError && + Object.keys(error.constraints || {}).length > 0) + return; + var validationArguments = { + targetName: object.constructor ? object.constructor.name : undefined, + property: metadata.propertyName, + object: object, + value: value, + constraints: metadata.constraints, + }; + if (!metadata.each || !(Array.isArray(value) || value instanceof Set || value instanceof Map)) { + var validatedValue = customConstraintMetadata.instance.validate(value, validationArguments); + if (isPromise(validatedValue)) { + var promise = validatedValue.then(function (isValid) { + if (!isValid) { + var _a = _this.createValidationError(object, value, metadata, customConstraintMetadata), type = _a[0], message = _a[1]; + error.constraints[type] = message; + if (metadata.context) { + if (!error.contexts) { + error.contexts = {}; + } + error.contexts[type] = Object.assign(error.contexts[type] || {}, metadata.context); + } + } + }); + _this.awaitingPromises.push(promise); + } + else { + if (!validatedValue) { + var _a = _this.createValidationError(object, value, metadata, customConstraintMetadata), type = _a[0], message = _a[1]; + error.constraints[type] = message; + } + } + return; + } + // convert set and map into array + var arrayValue = convertToArray(value); + // Validation needs to be applied to each array item + var validatedSubValues = arrayValue.map(function (subValue) { + return customConstraintMetadata.instance.validate(subValue, validationArguments); + }); + var validationIsAsync = validatedSubValues.some(function (validatedSubValue) { + return isPromise(validatedSubValue); + }); + if (validationIsAsync) { + // Wrap plain values (if any) in promises, so that all are async + var asyncValidatedSubValues = validatedSubValues.map(function (validatedSubValue) { + return isPromise(validatedSubValue) ? validatedSubValue : Promise.resolve(validatedSubValue); + }); + var asyncValidationIsFinishedPromise = Promise.all(asyncValidatedSubValues).then(function (flatValidatedValues) { + var validationResult = flatValidatedValues.every(function (isValid) { return isValid; }); + if (!validationResult) { + var _a = _this.createValidationError(object, value, metadata, customConstraintMetadata), type = _a[0], message = _a[1]; + error.constraints[type] = message; + if (metadata.context) { + if (!error.contexts) { + error.contexts = {}; + } + error.contexts[type] = Object.assign(error.contexts[type] || {}, metadata.context); + } + } + }); + _this.awaitingPromises.push(asyncValidationIsFinishedPromise); + return; + } + var validationResult = validatedSubValues.every(function (isValid) { return isValid; }); + if (!validationResult) { + var _b = _this.createValidationError(object, value, metadata, customConstraintMetadata), type = _b[0], message = _b[1]; + error.constraints[type] = message; + } + }); + }); + }; + ValidationExecutor.prototype.nestedValidations = function (value, metadatas, errors) { + var _this = this; + if (value === void 0) { + return; + } + metadatas.forEach(function (metadata) { + var _a; + if (metadata.type !== ValidationTypes.NESTED_VALIDATION && metadata.type !== ValidationTypes.PROMISE_VALIDATION) { + return; + } + if (Array.isArray(value) || value instanceof Set || value instanceof Map) { + // Treats Set as an array - as index of Set value is value itself and it is common case to have Object as value + var arrayLikeValue = value instanceof Set ? Array.from(value) : value; + arrayLikeValue.forEach(function (subValue, index) { + _this.performValidations(value, subValue, index.toString(), [], metadatas, errors); + }); + } + else if (value instanceof Object) { + var targetSchema = typeof metadata.target === 'string' ? metadata.target : metadata.target.name; + _this.execute(value, targetSchema, errors); + } + else { + var error = new ValidationError(); + error.value = value; + error.property = metadata.propertyName; + error.target = metadata.target; + var _b = _this.createValidationError(metadata.target, value, metadata), type = _b[0], message = _b[1]; + error.constraints = (_a = {}, + _a[type] = message, + _a); + errors.push(error); + } + }); + }; + ValidationExecutor.prototype.mapContexts = function (object, value, metadatas, error) { + var _this = this; + return metadatas.forEach(function (metadata) { + if (metadata.context) { + var customConstraint = void 0; + if (metadata.type === ValidationTypes.CUSTOM_VALIDATION) { + var customConstraints = _this.metadataStorage.getTargetValidatorConstraints(metadata.constraintCls); + customConstraint = customConstraints[0]; + } + var type = _this.getConstraintType(metadata, customConstraint); + if (error.constraints[type]) { + if (!error.contexts) { + error.contexts = {}; + } + error.contexts[type] = Object.assign(error.contexts[type] || {}, metadata.context); + } + } + }); + }; + ValidationExecutor.prototype.createValidationError = function (object, value, metadata, customValidatorMetadata) { + var targetName = object.constructor ? object.constructor.name : undefined; + var type = this.getConstraintType(metadata, customValidatorMetadata); + var validationArguments = { + targetName: targetName, + property: metadata.propertyName, + object: object, + value: value, + constraints: metadata.constraints, + }; + var message = metadata.message || ''; + if (!metadata.message && + (!this.validatorOptions || (this.validatorOptions && !this.validatorOptions.dismissDefaultMessages))) { + if (customValidatorMetadata && customValidatorMetadata.instance.defaultMessage instanceof Function) { + message = customValidatorMetadata.instance.defaultMessage(validationArguments); + } + } + var messageString = ValidationUtils.replaceMessageSpecialTokens(message, validationArguments); + return [type, messageString]; + }; + ValidationExecutor.prototype.getConstraintType = function (metadata, customValidatorMetadata) { + var type = customValidatorMetadata && customValidatorMetadata.name ? customValidatorMetadata.name : metadata.type; + return type; + }; + return ValidationExecutor; + }()); + + var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + var __generator = (undefined && undefined.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } + }; + /** + * Validator performs validation of the given object based on its metadata. + */ + var Validator = /** @class */ (function () { + function Validator() { + } + /** + * Performs validation of the given object based on decorators or validation schema. + */ + Validator.prototype.validate = function (objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions) { + return this.coreValidate(objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions); + }; + /** + * Performs validation of the given object based on decorators or validation schema and reject on error. + */ + Validator.prototype.validateOrReject = function (objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions) { + return __awaiter(this, void 0, void 0, function () { + var errors; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.coreValidate(objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions)]; + case 1: + errors = _a.sent(); + if (errors.length) + return [2 /*return*/, Promise.reject(errors)]; + return [2 /*return*/]; + } + }); + }); + }; + /** + * Performs validation of the given object based on decorators or validation schema. + */ + Validator.prototype.validateSync = function (objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions) { + var object = typeof objectOrSchemaName === 'string' ? objectOrValidationOptions : objectOrSchemaName; + var options = typeof objectOrSchemaName === 'string' ? maybeValidatorOptions : objectOrValidationOptions; + var schema = typeof objectOrSchemaName === 'string' ? objectOrSchemaName : undefined; + var executor = new ValidationExecutor(this, options); + executor.ignoreAsyncValidations = true; + var validationErrors = []; + executor.execute(object, schema, validationErrors); + return executor.stripEmptyErrors(validationErrors); + }; + // ------------------------------------------------------------------------- + // Private Properties + // ------------------------------------------------------------------------- + /** + * Performs validation of the given object based on decorators or validation schema. + * Common method for `validateOrReject` and `validate` methods. + */ + Validator.prototype.coreValidate = function (objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions) { + var object = typeof objectOrSchemaName === 'string' ? objectOrValidationOptions : objectOrSchemaName; + var options = typeof objectOrSchemaName === 'string' ? maybeValidatorOptions : objectOrValidationOptions; + var schema = typeof objectOrSchemaName === 'string' ? objectOrSchemaName : undefined; + var executor = new ValidationExecutor(this, options); + var validationErrors = []; + executor.execute(object, schema, validationErrors); + return Promise.all(executor.awaitingPromises).then(function () { + return executor.stripEmptyErrors(validationErrors); + }); + }; + return Validator; + }()); + + /** + * Container to be used by this library for inversion control. If container was not implicitly set then by default + * container simply creates a new instance of the given class. + */ + var defaultContainer = new (/** @class */ (function () { + function class_1() { + this.instances = []; + } + class_1.prototype.get = function (someClass) { + var instance = this.instances.find(function (instance) { return instance.type === someClass; }); + if (!instance) { + instance = { type: someClass, object: new someClass() }; + this.instances.push(instance); + } + return instance.object; + }; + return class_1; + }()))(); + var userContainer; + var userContainerOptions; + /** + * Sets container to be used by this library. + */ + function useContainer(iocContainer, options) { + userContainer = iocContainer; + userContainerOptions = options; + } + /** + * Gets the IOC container used by this library. + */ + function getFromContainer(someClass) { + if (userContainer) { + try { + var instance = userContainer.get(someClass); + if (instance) + return instance; + if (!userContainerOptions || !userContainerOptions.fallback) + return instance; + } + catch (error) { + if (!userContainerOptions || !userContainerOptions.fallbackOnErrors) + throw error; + } + } + return defaultContainer.get(someClass); + } + + /** + * If object has both allowed and not allowed properties a validation error will be thrown. + */ + function Allow(validationOptions) { + return function (object, propertyName) { + var args = { + type: ValidationTypes.WHITELIST, + target: object.constructor, + propertyName: propertyName, + validationOptions: validationOptions, + }; + getMetadataStorage().addValidationMetadata(new ValidationMetadata(args)); + }; + } + + /** + * This metadata interface contains information for custom validators. + */ + var ConstraintMetadata = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function ConstraintMetadata(target, name, async) { + if (async === void 0) { async = false; } + this.target = target; + this.name = name; + this.async = async; + } + Object.defineProperty(ConstraintMetadata.prototype, "instance", { + // ------------------------------------------------------------------------- + // Accessors + // ------------------------------------------------------------------------- + /** + * Instance of the target custom validation class which performs validation. + */ + get: function () { + return getFromContainer(this.target); + }, + enumerable: false, + configurable: true + }); + return ConstraintMetadata; + }()); + + /** + * Registers a custom validation decorator. + */ + function registerDecorator(options) { + var constraintCls; + if (options.validator instanceof Function) { + constraintCls = options.validator; + var constraintClasses = getFromContainer(MetadataStorage).getTargetValidatorConstraints(options.validator); + if (constraintClasses.length > 1) { + throw "More than one implementation of ValidatorConstraintInterface found for validator on: ".concat(options.target.name, ":").concat(options.propertyName); + } + } + else { + var validator_1 = options.validator; + constraintCls = /** @class */ (function () { + function CustomConstraint() { + } + CustomConstraint.prototype.validate = function (value, validationArguments) { + return validator_1.validate(value, validationArguments); + }; + CustomConstraint.prototype.defaultMessage = function (validationArguments) { + if (validator_1.defaultMessage) { + return validator_1.defaultMessage(validationArguments); + } + return ''; + }; + return CustomConstraint; + }()); + getMetadataStorage().addConstraintMetadata(new ConstraintMetadata(constraintCls, options.name, options.async)); + } + var validationMetadataArgs = { + type: options.name && ValidationTypes.isValid(options.name) ? options.name : ValidationTypes.CUSTOM_VALIDATION, + target: options.target, + propertyName: options.propertyName, + validationOptions: options.options, + constraintCls: constraintCls, + constraints: options.constraints, + }; + getMetadataStorage().addValidationMetadata(new ValidationMetadata(validationMetadataArgs)); + } + + function buildMessage(impl, validationOptions) { + return function (validationArguments) { + var eachPrefix = validationOptions && validationOptions.each ? 'each value in ' : ''; + return impl(eachPrefix, validationArguments); + }; + } + function ValidateBy(options, validationOptions) { + return function (object, propertyName) { + registerDecorator({ + name: options.name, + target: object.constructor, + propertyName: propertyName, + options: validationOptions, + constraints: options.constraints, + validator: options.validator, + }); + }; + } + + // isDefined is (yet) a special case + var IS_DEFINED = ValidationTypes.IS_DEFINED; + /** + * Checks if value is defined (!== undefined, !== null). + */ + function isDefined(value) { + return value !== undefined && value !== null; + } + /** + * Checks if value is defined (!== undefined, !== null). + */ + function IsDefined(validationOptions) { + return ValidateBy({ + name: IS_DEFINED, + validator: { + validate: function (value) { return isDefined(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not be null or undefined'; }, validationOptions), + }, + }, validationOptions); + } + + /** + * Checks if value is missing and if so, ignores all validators. + */ + function IsOptional(validationOptions) { + return function (object, propertyName) { + var args = { + type: ValidationTypes.CONDITIONAL_VALIDATION, + target: object.constructor, + propertyName: propertyName, + constraints: [ + function (object, value) { + return object[propertyName] !== null && object[propertyName] !== undefined; + }, + ], + validationOptions: validationOptions, + }; + getMetadataStorage().addValidationMetadata(new ValidationMetadata(args)); + }; + } + + /** + * Registers custom validator class. + */ + function ValidatorConstraint(options) { + return function (target) { + var isAsync = options && options.async; + var name = options && options.name ? options.name : ''; + if (!name) { + name = target.name; + if (!name) + // generate name if it was not given + name = name.replace(/\.?([A-Z]+)/g, function (x, y) { return '_' + y.toLowerCase(); }).replace(/^_/, ''); + } + var metadata = new ConstraintMetadata(target, name, isAsync); + getMetadataStorage().addConstraintMetadata(metadata); + }; + } + function Validate(constraintClass, constraintsOrValidationOptions, maybeValidationOptions) { + return function (object, propertyName) { + var args = { + type: ValidationTypes.CUSTOM_VALIDATION, + target: object.constructor, + propertyName: propertyName, + constraintCls: constraintClass, + constraints: Array.isArray(constraintsOrValidationOptions) ? constraintsOrValidationOptions : undefined, + validationOptions: !Array.isArray(constraintsOrValidationOptions) + ? constraintsOrValidationOptions + : maybeValidationOptions, + }; + getMetadataStorage().addValidationMetadata(new ValidationMetadata(args)); + }; + } + + /** + * Ignores the other validators on a property when the provided condition function returns false. + */ + function ValidateIf(condition, validationOptions) { + return function (object, propertyName) { + var args = { + type: ValidationTypes.CONDITIONAL_VALIDATION, + target: object.constructor, + propertyName: propertyName, + constraints: [condition], + validationOptions: validationOptions, + }; + getMetadataStorage().addValidationMetadata(new ValidationMetadata(args)); + }; + } + + var __assign = (undefined && undefined.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + /** + * Objects / object arrays marked with this decorator will also be validated. + */ + function ValidateNested(validationOptions) { + var opts = __assign({}, validationOptions); + var eachPrefix = opts.each ? 'each value in ' : ''; + opts.message = opts.message || eachPrefix + 'nested property $property must be either object or array'; + return function (object, propertyName) { + var args = { + type: ValidationTypes.NESTED_VALIDATION, + target: object.constructor, + propertyName: propertyName, + validationOptions: opts, + }; + getMetadataStorage().addValidationMetadata(new ValidationMetadata(args)); + }; + } + + /** + * Resolve promise before validation + */ + function ValidatePromise(validationOptions) { + return function (object, propertyName) { + var args = { + type: ValidationTypes.PROMISE_VALIDATION, + target: object.constructor, + propertyName: propertyName, + validationOptions: validationOptions, + }; + getMetadataStorage().addValidationMetadata(new ValidationMetadata(args)); + }; + } + + function getDefaultExportFromCjs (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; + } + + var isLatLong$1 = {exports: {}}; + + var assertString = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = assertString; + + function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + + function assertString(input) { + var isString = typeof input === 'string' || input instanceof String; + + if (!isString) { + var invalidType = _typeof(input); + + if (input === null) invalidType = 'null';else if (invalidType === 'object') invalidType = input.constructor.name; + throw new TypeError("Expected a string but received a ".concat(invalidType)); + } + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(assertString, assertString.exports)); + + var merge = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = merge; + + function merge() { + var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var defaults = arguments.length > 1 ? arguments[1] : undefined; + + for (var key in defaults) { + if (typeof obj[key] === 'undefined') { + obj[key] = defaults[key]; + } + } + + return obj; + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(merge, merge.exports)); + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isLatLong; + + var _assertString = _interopRequireDefault(assertString.exports); + + var _merge = _interopRequireDefault(merge.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var lat = /^\(?[+-]?(90(\.0+)?|[1-8]?\d(\.\d+)?)$/; + var long = /^\s?[+-]?(180(\.0+)?|1[0-7]\d(\.\d+)?|\d{1,2}(\.\d+)?)\)?$/; + var latDMS = /^(([1-8]?\d)\D+([1-5]?\d|60)\D+([1-5]?\d|60)(\.\d+)?|90\D+0\D+0)\D+[NSns]?$/i; + var longDMS = /^\s*([1-7]?\d{1,2}\D+([1-5]?\d|60)\D+([1-5]?\d|60)(\.\d+)?|180\D+0\D+0)\D+[EWew]?$/i; + var defaultLatLongOptions = { + checkDMS: false + }; + + function isLatLong(str, options) { + (0, _assertString.default)(str); + options = (0, _merge.default)(options, defaultLatLongOptions); + if (!str.includes(',')) return false; + var pair = str.split(','); + if (pair[0].startsWith('(') && !pair[1].endsWith(')') || pair[1].endsWith(')') && !pair[0].startsWith('(')) return false; + + if (options.checkDMS) { + return latDMS.test(pair[0]) && longDMS.test(pair[1]); + } + + return lat.test(pair[0]) && long.test(pair[1]); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isLatLong$1, isLatLong$1.exports)); + + var isLatLongValidator = /*@__PURE__*/getDefaultExportFromCjs(isLatLong$1.exports); + + var IS_LATLONG = 'isLatLong'; + /** + * Checks if a value is string in format a "latitude,longitude". + */ + function isLatLong(value) { + return typeof value === 'string' && isLatLongValidator(value); + } + /** + * Checks if a value is string in format a "latitude,longitude". + */ + function IsLatLong(validationOptions) { + return ValidateBy({ + name: IS_LATLONG, + validator: { + validate: function (value, args) { return isLatLong(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a latitude,longitude string'; }, validationOptions), + }, + }, validationOptions); + } + + var IS_LATITUDE = 'isLatitude'; + /** + * Checks if a given value is a latitude. + */ + function isLatitude(value) { + return (typeof value === 'number' || typeof value === 'string') && isLatLong("".concat(value, ",0")); + } + /** + * Checks if a given value is a latitude. + */ + function IsLatitude(validationOptions) { + return ValidateBy({ + name: IS_LATITUDE, + validator: { + validate: function (value, args) { return isLatitude(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a latitude string or number'; }, validationOptions), + }, + }, validationOptions); + } + + var IS_LONGITUDE = 'isLongitude'; + /** + * Checks if a given value is a longitude. + */ + function isLongitude(value) { + return (typeof value === 'number' || typeof value === 'string') && isLatLong("0,".concat(value)); + } + /** + * Checks if a given value is a longitude. + */ + function IsLongitude(validationOptions) { + return ValidateBy({ + name: IS_LONGITUDE, + validator: { + validate: function (value, args) { return isLongitude(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a longitude string or number'; }, validationOptions), + }, + }, validationOptions); + } + + var EQUALS = 'equals'; + /** + * Checks if value matches ("===") the comparison. + */ + function equals(value, comparison) { + return value === comparison; + } + /** + * Checks if value matches ("===") the comparison. + */ + function Equals(comparison, validationOptions) { + return ValidateBy({ + name: EQUALS, + constraints: [comparison], + validator: { + validate: function (value, args) { return equals(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be equal to $constraint1'; }, validationOptions), + }, + }, validationOptions); + } + + var NOT_EQUALS = 'notEquals'; + /** + * Checks if value does not match ("!==") the comparison. + */ + function notEquals(value, comparison) { + return value !== comparison; + } + /** + * Checks if value does not match ("!==") the comparison. + */ + function NotEquals(comparison, validationOptions) { + return ValidateBy({ + name: NOT_EQUALS, + constraints: [comparison], + validator: { + validate: function (value, args) { return notEquals(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not be equal to $constraint1'; }, validationOptions), + }, + }, validationOptions); + } + + var IS_EMPTY = 'isEmpty'; + /** + * Checks if given value is empty (=== '', === null, === undefined). + */ + function isEmpty(value) { + return value === '' || value === null || value === undefined; + } + /** + * Checks if given value is empty (=== '', === null, === undefined). + */ + function IsEmpty(validationOptions) { + return ValidateBy({ + name: IS_EMPTY, + validator: { + validate: function (value, args) { return isEmpty(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be empty'; }, validationOptions), + }, + }, validationOptions); + } + + var IS_NOT_EMPTY = 'isNotEmpty'; + /** + * Checks if given value is not empty (!== '', !== null, !== undefined). + */ + function isNotEmpty(value) { + return value !== '' && value !== null && value !== undefined; + } + /** + * Checks if given value is not empty (!== '', !== null, !== undefined). + */ + function IsNotEmpty(validationOptions) { + return ValidateBy({ + name: IS_NOT_EMPTY, + validator: { + validate: function (value, args) { return isNotEmpty(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not be empty'; }, validationOptions), + }, + }, validationOptions); + } + + var IS_IN = 'isIn'; + /** + * Checks if given value is in a array of allowed values. + */ + function isIn(value, possibleValues) { + return !Array.isArray(possibleValues) || possibleValues.some(function (possibleValue) { return possibleValue === value; }); + } + /** + * Checks if given value is in a array of allowed values. + */ + function IsIn(values, validationOptions) { + return ValidateBy({ + name: IS_IN, + constraints: [values], + validator: { + validate: function (value, args) { return isIn(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be one of the following values: $constraint1'; }, validationOptions), + }, + }, validationOptions); + } + + var IS_NOT_IN = 'isNotIn'; + /** + * Checks if given value not in a array of allowed values. + */ + function isNotIn(value, possibleValues) { + return !Array.isArray(possibleValues) || !possibleValues.some(function (possibleValue) { return possibleValue === value; }); + } + /** + * Checks if given value not in a array of allowed values. + */ + function IsNotIn(values, validationOptions) { + return ValidateBy({ + name: IS_NOT_IN, + constraints: [values], + validator: { + validate: function (value, args) { return isNotIn(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not be one of the following values: $constraint1'; }, validationOptions), + }, + }, validationOptions); + } + + var isDivisibleBy$1 = {exports: {}}; + + var toFloat = {exports: {}}; + + var isFloat$1 = {}; + + var alpha$1 = {}; + + Object.defineProperty(alpha$1, "__esModule", { + value: true + }); + alpha$1.commaDecimal = alpha$1.dotDecimal = alpha$1.farsiLocales = alpha$1.arabicLocales = alpha$1.englishLocales = alpha$1.decimal = alpha$1.alphanumeric = alpha$1.alpha = void 0; + var alpha = { + 'en-US': /^[A-Z]+$/i, + 'az-AZ': /^[A-VXYZÇƏĞİıÖŞÜ]+$/i, + 'bg-BG': /^[А-Я]+$/i, + 'cs-CZ': /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i, + 'da-DK': /^[A-ZÆØÅ]+$/i, + 'de-DE': /^[A-ZÄÖÜß]+$/i, + 'el-GR': /^[Α-ώ]+$/i, + 'es-ES': /^[A-ZÁÉÍÑÓÚÜ]+$/i, + 'fa-IR': /^[ابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهی]+$/i, + 'fi-FI': /^[A-ZÅÄÖ]+$/i, + 'fr-FR': /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i, + 'it-IT': /^[A-ZÀÉÈÌÎÓÒÙ]+$/i, + 'nb-NO': /^[A-ZÆØÅ]+$/i, + 'nl-NL': /^[A-ZÁÉËÏÓÖÜÚ]+$/i, + 'nn-NO': /^[A-ZÆØÅ]+$/i, + 'hu-HU': /^[A-ZÁÉÍÓÖŐÚÜŰ]+$/i, + 'pl-PL': /^[A-ZĄĆĘŚŁŃÓŻŹ]+$/i, + 'pt-PT': /^[A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i, + 'ru-RU': /^[А-ЯЁ]+$/i, + 'sl-SI': /^[A-ZČĆĐŠŽ]+$/i, + 'sk-SK': /^[A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i, + 'sr-RS@latin': /^[A-ZČĆŽŠĐ]+$/i, + 'sr-RS': /^[А-ЯЂЈЉЊЋЏ]+$/i, + 'sv-SE': /^[A-ZÅÄÖ]+$/i, + 'th-TH': /^[ก-๐\s]+$/i, + 'tr-TR': /^[A-ZÇĞİıÖŞÜ]+$/i, + 'uk-UA': /^[А-ЩЬЮЯЄIЇҐі]+$/i, + 'vi-VN': /^[A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i, + 'ku-IQ': /^[ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i, + ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/, + he: /^[א-ת]+$/, + fa: /^['آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی']+$/i, + 'hi-IN': /^[\u0900-\u0961]+[\u0972-\u097F]*$/i + }; + alpha$1.alpha = alpha; + var alphanumeric = { + 'en-US': /^[0-9A-Z]+$/i, + 'az-AZ': /^[0-9A-VXYZÇƏĞİıÖŞÜ]+$/i, + 'bg-BG': /^[0-9А-Я]+$/i, + 'cs-CZ': /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i, + 'da-DK': /^[0-9A-ZÆØÅ]+$/i, + 'de-DE': /^[0-9A-ZÄÖÜß]+$/i, + 'el-GR': /^[0-9Α-ω]+$/i, + 'es-ES': /^[0-9A-ZÁÉÍÑÓÚÜ]+$/i, + 'fi-FI': /^[0-9A-ZÅÄÖ]+$/i, + 'fr-FR': /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i, + 'it-IT': /^[0-9A-ZÀÉÈÌÎÓÒÙ]+$/i, + 'hu-HU': /^[0-9A-ZÁÉÍÓÖŐÚÜŰ]+$/i, + 'nb-NO': /^[0-9A-ZÆØÅ]+$/i, + 'nl-NL': /^[0-9A-ZÁÉËÏÓÖÜÚ]+$/i, + 'nn-NO': /^[0-9A-ZÆØÅ]+$/i, + 'pl-PL': /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]+$/i, + 'pt-PT': /^[0-9A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i, + 'ru-RU': /^[0-9А-ЯЁ]+$/i, + 'sl-SI': /^[0-9A-ZČĆĐŠŽ]+$/i, + 'sk-SK': /^[0-9A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i, + 'sr-RS@latin': /^[0-9A-ZČĆŽŠĐ]+$/i, + 'sr-RS': /^[0-9А-ЯЂЈЉЊЋЏ]+$/i, + 'sv-SE': /^[0-9A-ZÅÄÖ]+$/i, + 'th-TH': /^[ก-๙\s]+$/i, + 'tr-TR': /^[0-9A-ZÇĞİıÖŞÜ]+$/i, + 'uk-UA': /^[0-9А-ЩЬЮЯЄIЇҐі]+$/i, + 'ku-IQ': /^[٠١٢٣٤٥٦٧٨٩0-9ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i, + 'vi-VN': /^[0-9A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i, + ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/, + he: /^[0-9א-ת]+$/, + fa: /^['0-9آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی۱۲۳۴۵۶۷۸۹۰']+$/i, + 'hi-IN': /^[\u0900-\u0963]+[\u0966-\u097F]*$/i + }; + alpha$1.alphanumeric = alphanumeric; + var decimal = { + 'en-US': '.', + ar: '٫' + }; + alpha$1.decimal = decimal; + var englishLocales = ['AU', 'GB', 'HK', 'IN', 'NZ', 'ZA', 'ZM']; + alpha$1.englishLocales = englishLocales; + + for (var locale, i = 0; i < englishLocales.length; i++) { + locale = "en-".concat(englishLocales[i]); + alpha[locale] = alpha['en-US']; + alphanumeric[locale] = alphanumeric['en-US']; + decimal[locale] = decimal['en-US']; + } // Source: http://www.localeplanet.com/java/ + + + var arabicLocales = ['AE', 'BH', 'DZ', 'EG', 'IQ', 'JO', 'KW', 'LB', 'LY', 'MA', 'QM', 'QA', 'SA', 'SD', 'SY', 'TN', 'YE']; + alpha$1.arabicLocales = arabicLocales; + + for (var _locale, _i = 0; _i < arabicLocales.length; _i++) { + _locale = "ar-".concat(arabicLocales[_i]); + alpha[_locale] = alpha.ar; + alphanumeric[_locale] = alphanumeric.ar; + decimal[_locale] = decimal.ar; + } + + var farsiLocales = ['IR', 'AF']; + alpha$1.farsiLocales = farsiLocales; + + for (var _locale2, _i2 = 0; _i2 < farsiLocales.length; _i2++) { + _locale2 = "fa-".concat(farsiLocales[_i2]); + alphanumeric[_locale2] = alphanumeric.fa; + decimal[_locale2] = decimal.ar; + } // Source: https://en.wikipedia.org/wiki/Decimal_mark + + + var dotDecimal = ['ar-EG', 'ar-LB', 'ar-LY']; + alpha$1.dotDecimal = dotDecimal; + var commaDecimal = ['bg-BG', 'cs-CZ', 'da-DK', 'de-DE', 'el-GR', 'en-ZM', 'es-ES', 'fr-CA', 'fr-FR', 'id-ID', 'it-IT', 'ku-IQ', 'hi-IN', 'hu-HU', 'nb-NO', 'nn-NO', 'nl-NL', 'pl-PL', 'pt-PT', 'ru-RU', 'sl-SI', 'sr-RS@latin', 'sr-RS', 'sv-SE', 'tr-TR', 'uk-UA', 'vi-VN']; + alpha$1.commaDecimal = commaDecimal; + + for (var _i3 = 0; _i3 < dotDecimal.length; _i3++) { + decimal[dotDecimal[_i3]] = decimal['en-US']; + } + + for (var _i4 = 0; _i4 < commaDecimal.length; _i4++) { + decimal[commaDecimal[_i4]] = ','; + } + + alpha['fr-CA'] = alpha['fr-FR']; + alphanumeric['fr-CA'] = alphanumeric['fr-FR']; + alpha['pt-BR'] = alpha['pt-PT']; + alphanumeric['pt-BR'] = alphanumeric['pt-PT']; + decimal['pt-BR'] = decimal['pt-PT']; // see #862 + + alpha['pl-Pl'] = alpha['pl-PL']; + alphanumeric['pl-Pl'] = alphanumeric['pl-PL']; + decimal['pl-Pl'] = decimal['pl-PL']; // see #1455 + + alpha['fa-AF'] = alpha.fa; + + Object.defineProperty(isFloat$1, "__esModule", { + value: true + }); + isFloat$1.default = isFloat; + isFloat$1.locales = void 0; + + var _assertString$8 = _interopRequireDefault$8(assertString.exports); + + var _alpha$2 = alpha$1; + + function _interopRequireDefault$8(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function isFloat(str, options) { + (0, _assertString$8.default)(str); + options = options || {}; + var float = new RegExp("^(?:[-+])?(?:[0-9]+)?(?:\\".concat(options.locale ? _alpha$2.decimal[options.locale] : '.', "[0-9]*)?(?:[eE][\\+\\-]?(?:[0-9]+))?$")); + + if (str === '' || str === '.' || str === '-' || str === '+') { + return false; + } + + var value = parseFloat(str.replace(',', '.')); + return float.test(str) && (!options.hasOwnProperty('min') || value >= options.min) && (!options.hasOwnProperty('max') || value <= options.max) && (!options.hasOwnProperty('lt') || value < options.lt) && (!options.hasOwnProperty('gt') || value > options.gt); + } + + var locales$5 = Object.keys(_alpha$2.decimal); + isFloat$1.locales = locales$5; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = toFloat; + + var _isFloat = _interopRequireDefault(isFloat$1); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function toFloat(str) { + if (!(0, _isFloat.default)(str)) return NaN; + return parseFloat(str); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(toFloat, toFloat.exports)); + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isDivisibleBy; + + var _assertString = _interopRequireDefault(assertString.exports); + + var _toFloat = _interopRequireDefault(toFloat.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function isDivisibleBy(str, num) { + (0, _assertString.default)(str); + return (0, _toFloat.default)(str) % parseInt(num, 10) === 0; + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isDivisibleBy$1, isDivisibleBy$1.exports)); + + var isDivisibleByValidator = /*@__PURE__*/getDefaultExportFromCjs(isDivisibleBy$1.exports); + + var IS_DIVISIBLE_BY = 'isDivisibleBy'; + /** + * Checks if value is a number that's divisible by another. + */ + function isDivisibleBy(value, num) { + return typeof value === 'number' && typeof num === 'number' && isDivisibleByValidator(String(value), num); + } + /** + * Checks if value is a number that's divisible by another. + */ + function IsDivisibleBy(num, validationOptions) { + return ValidateBy({ + name: IS_DIVISIBLE_BY, + constraints: [num], + validator: { + validate: function (value, args) { return isDivisibleBy(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be divisible by $constraint1'; }, validationOptions), + }, + }, validationOptions); + } + + var IS_POSITIVE = 'isPositive'; + /** + * Checks if the value is a positive number greater than zero. + */ + function isPositive(value) { + return typeof value === 'number' && value > 0; + } + /** + * Checks if the value is a positive number greater than zero. + */ + function IsPositive(validationOptions) { + return ValidateBy({ + name: IS_POSITIVE, + validator: { + validate: function (value, args) { return isPositive(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a positive number'; }, validationOptions), + }, + }, validationOptions); + } + + var IS_NEGATIVE = 'isNegative'; + /** + * Checks if the value is a negative number smaller than zero. + */ + function isNegative(value) { + return typeof value === 'number' && value < 0; + } + /** + * Checks if the value is a negative number smaller than zero. + */ + function IsNegative(validationOptions) { + return ValidateBy({ + name: IS_NEGATIVE, + validator: { + validate: function (value, args) { return isNegative(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a negative number'; }, validationOptions), + }, + }, validationOptions); + } + + var MAX = 'max'; + /** + * Checks if the first number is less than or equal to the second. + */ + function max(num, max) { + return typeof num === 'number' && typeof max === 'number' && num <= max; + } + /** + * Checks if the first number is less than or equal to the second. + */ + function Max(maxValue, validationOptions) { + return ValidateBy({ + name: MAX, + constraints: [maxValue], + validator: { + validate: function (value, args) { return max(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must not be greater than $constraint1'; }, validationOptions), + }, + }, validationOptions); + } + + var MIN = 'min'; + /** + * Checks if the first number is greater than or equal to the second. + */ + function min(num, min) { + return typeof num === 'number' && typeof min === 'number' && num >= min; + } + /** + * Checks if the first number is greater than or equal to the second. + */ + function Min(minValue, validationOptions) { + return ValidateBy({ + name: MIN, + constraints: [minValue], + validator: { + validate: function (value, args) { return min(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must not be less than $constraint1'; }, validationOptions), + }, + }, validationOptions); + } + + var MIN_DATE = 'minDate'; + /** + * Checks if the value is a date that's after the specified date. + */ + function minDate(date, minDate) { + return date instanceof Date && date.getTime() >= minDate.getTime(); + } + /** + * Checks if the value is a date that's after the specified date. + */ + function MinDate(date, validationOptions) { + return ValidateBy({ + name: MIN_DATE, + constraints: [date], + validator: { + validate: function (value, args) { return minDate(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return 'minimal allowed date for ' + eachPrefix + '$property is $constraint1'; }, validationOptions), + }, + }, validationOptions); + } + + var MAX_DATE = 'maxDate'; + /** + * Checks if the value is a date that's before the specified date. + */ + function maxDate(date, maxDate) { + return date instanceof Date && date.getTime() <= maxDate.getTime(); + } + /** + * Checks if the value is a date that's after the specified date. + */ + function MaxDate(date, validationOptions) { + return ValidateBy({ + name: MAX_DATE, + constraints: [date], + validator: { + validate: function (value, args) { return maxDate(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return 'maximal allowed date for ' + eachPrefix + '$property is $constraint1'; }, validationOptions), + }, + }, validationOptions); + } + + var contains$1 = {exports: {}}; + + var toString = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = toString; + + function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + + function toString(input) { + if (_typeof(input) === 'object' && input !== null) { + if (typeof input.toString === 'function') { + input = input.toString(); + } else { + input = '[object Object]'; + } + } else if (input === null || typeof input === 'undefined' || isNaN(input) && !input.length) { + input = ''; + } + + return String(input); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(toString, toString.exports)); + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = contains; + + var _assertString = _interopRequireDefault(assertString.exports); + + var _toString = _interopRequireDefault(toString.exports); + + var _merge = _interopRequireDefault(merge.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var defaulContainsOptions = { + ignoreCase: false, + minOccurrences: 1 + }; + + function contains(str, elem, options) { + (0, _assertString.default)(str); + options = (0, _merge.default)(options, defaulContainsOptions); + + if (options.ignoreCase) { + return str.toLowerCase().split((0, _toString.default)(elem).toLowerCase()).length > options.minOccurrences; + } + + return str.split((0, _toString.default)(elem)).length > options.minOccurrences; + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(contains$1, contains$1.exports)); + + var containsValidator = /*@__PURE__*/getDefaultExportFromCjs(contains$1.exports); + + var CONTAINS = 'contains'; + /** + * Checks if the string contains the seed. + * If given value is not a string, then it returns false. + */ + function contains(value, seed) { + return typeof value === 'string' && containsValidator(value, seed); + } + /** + * Checks if the string contains the seed. + * If given value is not a string, then it returns false. + */ + function Contains(seed, validationOptions) { + return ValidateBy({ + name: CONTAINS, + constraints: [seed], + validator: { + validate: function (value, args) { return contains(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain a $constraint1 string'; }, validationOptions), + }, + }, validationOptions); + } + + var NOT_CONTAINS = 'notContains'; + /** + * Checks if the string does not contain the seed. + * If given value is not a string, then it returns false. + */ + function notContains(value, seed) { + return typeof value === 'string' && !containsValidator(value, seed); + } + /** + * Checks if the string does not contain the seed. + * If given value is not a string, then it returns false. + */ + function NotContains(seed, validationOptions) { + return ValidateBy({ + name: NOT_CONTAINS, + constraints: [seed], + validator: { + validate: function (value, args) { return notContains(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not contain a $constraint1 string'; }, validationOptions), + }, + }, validationOptions); + } + + var isAlpha$2 = {}; + + Object.defineProperty(isAlpha$2, "__esModule", { + value: true + }); + var _default$7 = isAlpha$2.default = isAlpha$1; + isAlpha$2.locales = void 0; + + var _assertString$7 = _interopRequireDefault$7(assertString.exports); + + var _alpha$1 = alpha$1; + + function _interopRequireDefault$7(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function isAlpha$1(_str) { + var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US'; + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + (0, _assertString$7.default)(_str); + var str = _str; + var ignore = options.ignore; + + if (ignore) { + if (ignore instanceof RegExp) { + str = str.replace(ignore, ''); + } else if (typeof ignore === 'string') { + str = str.replace(new RegExp("[".concat(ignore.replace(/[-[\]{}()*+?.,\\^$|#\\s]/g, '\\$&'), "]"), 'g'), ''); // escape regex for ignore + } else { + throw new Error('ignore should be instance of a String or RegExp'); + } + } + + if (locale in _alpha$1.alpha) { + return _alpha$1.alpha[locale].test(str); + } + + throw new Error("Invalid locale '".concat(locale, "'")); + } + + var locales$4 = Object.keys(_alpha$1.alpha); + isAlpha$2.locales = locales$4; + + var IS_ALPHA = 'isAlpha'; + /** + * Checks if the string contains only letters (a-zA-Z). + * If given value is not a string, then it returns false. + */ + function isAlpha(value, locale) { + return typeof value === 'string' && _default$7(value, locale); + } + /** + * Checks if the string contains only letters (a-zA-Z). + * If given value is not a string, then it returns false. + */ + function IsAlpha(locale, validationOptions) { + return ValidateBy({ + name: IS_ALPHA, + constraints: [locale], + validator: { + validate: function (value, args) { return isAlpha(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain only letters (a-zA-Z)'; }, validationOptions), + }, + }, validationOptions); + } + + var isAlphanumeric$2 = {}; + + Object.defineProperty(isAlphanumeric$2, "__esModule", { + value: true + }); + var _default$6 = isAlphanumeric$2.default = isAlphanumeric$1; + isAlphanumeric$2.locales = void 0; + + var _assertString$6 = _interopRequireDefault$6(assertString.exports); + + var _alpha = alpha$1; + + function _interopRequireDefault$6(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function isAlphanumeric$1(_str) { + var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US'; + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + (0, _assertString$6.default)(_str); + var str = _str; + var ignore = options.ignore; + + if (ignore) { + if (ignore instanceof RegExp) { + str = str.replace(ignore, ''); + } else if (typeof ignore === 'string') { + str = str.replace(new RegExp("[".concat(ignore.replace(/[-[\]{}()*+?.,\\^$|#\\s]/g, '\\$&'), "]"), 'g'), ''); // escape regex for ignore + } else { + throw new Error('ignore should be instance of a String or RegExp'); + } + } + + if (locale in _alpha.alphanumeric) { + return _alpha.alphanumeric[locale].test(str); + } + + throw new Error("Invalid locale '".concat(locale, "'")); + } + + var locales$3 = Object.keys(_alpha.alphanumeric); + isAlphanumeric$2.locales = locales$3; + + var IS_ALPHANUMERIC = 'isAlphanumeric'; + /** + * Checks if the string contains only letters and numbers. + * If given value is not a string, then it returns false. + */ + function isAlphanumeric(value, locale) { + return typeof value === 'string' && _default$6(value, locale); + } + /** + * Checks if the string contains only letters and numbers. + * If given value is not a string, then it returns false. + */ + function IsAlphanumeric(locale, validationOptions) { + return ValidateBy({ + name: IS_ALPHANUMERIC, + constraints: [locale], + validator: { + validate: function (value, args) { return isAlphanumeric(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain only letters and numbers'; }, validationOptions), + }, + }, validationOptions); + } + + var isDecimal$1 = {exports: {}}; + + var includes = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + + var includes = function includes(arr, val) { + return arr.some(function (arrVal) { + return val === arrVal; + }); + }; + + var _default = includes; + exports.default = _default; + module.exports = exports.default; + module.exports.default = exports.default; + }(includes, includes.exports)); + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isDecimal; + + var _merge = _interopRequireDefault(merge.exports); + + var _assertString = _interopRequireDefault(assertString.exports); + + var _includes = _interopRequireDefault(includes.exports); + + var _alpha = alpha$1; + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function decimalRegExp(options) { + var regExp = new RegExp("^[-+]?([0-9]+)?(\\".concat(_alpha.decimal[options.locale], "[0-9]{").concat(options.decimal_digits, "})").concat(options.force_decimal ? '' : '?', "$")); + return regExp; + } + + var default_decimal_options = { + force_decimal: false, + decimal_digits: '1,', + locale: 'en-US' + }; + var blacklist = ['', '-', '+']; + + function isDecimal(str, options) { + (0, _assertString.default)(str); + options = (0, _merge.default)(options, default_decimal_options); + + if (options.locale in _alpha.decimal) { + return !(0, _includes.default)(blacklist, str.replace(/ /g, '')) && decimalRegExp(options).test(str); + } + + throw new Error("Invalid locale '".concat(options.locale, "'")); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isDecimal$1, isDecimal$1.exports)); + + var isDecimalValidator = /*@__PURE__*/getDefaultExportFromCjs(isDecimal$1.exports); + + var IS_DECIMAL = 'isDecimal'; + /** + * Checks if the string is a valid decimal. + * If given value is not a string, then it returns false. + */ + function isDecimal(value, options) { + return typeof value === 'string' && isDecimalValidator(value, options); + } + /** + * Checks if the string contains only letters and numbers. + * If given value is not a string, then it returns false. + */ + function IsDecimal(options, validationOptions) { + return ValidateBy({ + name: IS_DECIMAL, + constraints: [options], + validator: { + validate: function (value, args) { return isDecimal(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property is not a valid decimal number.'; }, validationOptions), + }, + }, validationOptions); + } + + var isAscii$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isAscii; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + /* eslint-disable no-control-regex */ + var ascii = /^[\x00-\x7F]+$/; + /* eslint-enable no-control-regex */ + + function isAscii(str) { + (0, _assertString.default)(str); + return ascii.test(str); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isAscii$1, isAscii$1.exports)); + + var isAsciiValidator = /*@__PURE__*/getDefaultExportFromCjs(isAscii$1.exports); + + var IS_ASCII = 'isAscii'; + /** + * Checks if the string contains ASCII chars only. + * If given value is not a string, then it returns false. + */ + function isAscii(value) { + return typeof value === 'string' && isAsciiValidator(value); + } + /** + * Checks if the string contains ASCII chars only. + * If given value is not a string, then it returns false. + */ + function IsAscii(validationOptions) { + return ValidateBy({ + name: IS_ASCII, + validator: { + validate: function (value, args) { return isAscii(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain only ASCII characters'; }, validationOptions), + }, + }, validationOptions); + } + + var isBase64$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isBase64; + + var _assertString = _interopRequireDefault(assertString.exports); + + var _merge = _interopRequireDefault(merge.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var notBase64 = /[^A-Z0-9+\/=]/i; + var urlSafeBase64 = /^[A-Z0-9_\-]*$/i; + var defaultBase64Options = { + urlSafe: false + }; + + function isBase64(str, options) { + (0, _assertString.default)(str); + options = (0, _merge.default)(options, defaultBase64Options); + var len = str.length; + + if (options.urlSafe) { + return urlSafeBase64.test(str); + } + + if (len % 4 !== 0 || notBase64.test(str)) { + return false; + } + + var firstPaddingChar = str.indexOf('='); + return firstPaddingChar === -1 || firstPaddingChar === len - 1 || firstPaddingChar === len - 2 && str[len - 1] === '='; + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isBase64$1, isBase64$1.exports)); + + var isBase64Validator = /*@__PURE__*/getDefaultExportFromCjs(isBase64$1.exports); + + var IS_BASE64 = 'isBase64'; + /** + * Checks if a string is base64 encoded. + * If given value is not a string, then it returns false. + */ + function isBase64(value) { + return typeof value === 'string' && isBase64Validator(value); + } + /** + * Checks if a string is base64 encoded. + * If given value is not a string, then it returns false. + */ + function IsBase64(validationOptions) { + return ValidateBy({ + name: IS_BASE64, + validator: { + validate: function (value, args) { return isBase64(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be base64 encoded'; }, validationOptions), + }, + }, validationOptions); + } + + var isByteLength$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isByteLength; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + + /* eslint-disable prefer-rest-params */ + function isByteLength(str, options) { + (0, _assertString.default)(str); + var min; + var max; + + if (_typeof(options) === 'object') { + min = options.min || 0; + max = options.max; + } else { + // backwards compatibility: isByteLength(str, min [, max]) + min = arguments[1]; + max = arguments[2]; + } + + var len = encodeURI(str).split(/%..|./).length - 1; + return len >= min && (typeof max === 'undefined' || len <= max); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isByteLength$1, isByteLength$1.exports)); + + var isByteLengthValidator = /*@__PURE__*/getDefaultExportFromCjs(isByteLength$1.exports); + + var IS_BYTE_LENGTH = 'isByteLength'; + /** + * Checks if the string's length (in bytes) falls in a range. + * If given value is not a string, then it returns false. + */ + function isByteLength(value, min, max) { + return typeof value === 'string' && isByteLengthValidator(value, { min: min, max: max }); + } + /** + * Checks if the string's length (in bytes) falls in a range. + * If given value is not a string, then it returns false. + */ + function IsByteLength(min, max, validationOptions) { + return ValidateBy({ + name: IS_BYTE_LENGTH, + constraints: [min, max], + validator: { + validate: function (value, args) { return isByteLength(value, args.constraints[0], args.constraints[1]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + "$property's byte length must fall into ($constraint1, $constraint2) range"; }, validationOptions), + }, + }, validationOptions); + } + + var isCreditCard$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isCreditCard; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + /* eslint-disable max-len */ + var creditCard = /^(?:4[0-9]{12}(?:[0-9]{3,6})?|5[1-5][0-9]{14}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12,15}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11}|6[27][0-9]{14}|^(81[0-9]{14,17}))$/; + /* eslint-enable max-len */ + + function isCreditCard(str) { + (0, _assertString.default)(str); + var sanitized = str.replace(/[- ]+/g, ''); + + if (!creditCard.test(sanitized)) { + return false; + } + + var sum = 0; + var digit; + var tmpNum; + var shouldDouble; + + for (var i = sanitized.length - 1; i >= 0; i--) { + digit = sanitized.substring(i, i + 1); + tmpNum = parseInt(digit, 10); + + if (shouldDouble) { + tmpNum *= 2; + + if (tmpNum >= 10) { + sum += tmpNum % 10 + 1; + } else { + sum += tmpNum; + } + } else { + sum += tmpNum; + } + + shouldDouble = !shouldDouble; + } + + return !!(sum % 10 === 0 ? sanitized : false); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isCreditCard$1, isCreditCard$1.exports)); + + var isCreditCardValidator = /*@__PURE__*/getDefaultExportFromCjs(isCreditCard$1.exports); + + var IS_CREDIT_CARD = 'isCreditCard'; + /** + * Checks if the string is a credit card. + * If given value is not a string, then it returns false. + */ + function isCreditCard(value) { + return typeof value === 'string' && isCreditCardValidator(value); + } + /** + * Checks if the string is a credit card. + * If given value is not a string, then it returns false. + */ + function IsCreditCard(validationOptions) { + return ValidateBy({ + name: IS_CREDIT_CARD, + validator: { + validate: function (value, args) { return isCreditCard(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a credit card'; }, validationOptions), + }, + }, validationOptions); + } + + var isCurrency$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isCurrency; + + var _merge = _interopRequireDefault(merge.exports); + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function currencyRegex(options) { + var decimal_digits = "\\d{".concat(options.digits_after_decimal[0], "}"); + options.digits_after_decimal.forEach(function (digit, index) { + if (index !== 0) decimal_digits = "".concat(decimal_digits, "|\\d{").concat(digit, "}"); + }); + var symbol = "(".concat(options.symbol.replace(/\W/, function (m) { + return "\\".concat(m); + }), ")").concat(options.require_symbol ? '' : '?'), + negative = '-?', + whole_dollar_amount_without_sep = '[1-9]\\d*', + whole_dollar_amount_with_sep = "[1-9]\\d{0,2}(\\".concat(options.thousands_separator, "\\d{3})*"), + valid_whole_dollar_amounts = ['0', whole_dollar_amount_without_sep, whole_dollar_amount_with_sep], + whole_dollar_amount = "(".concat(valid_whole_dollar_amounts.join('|'), ")?"), + decimal_amount = "(\\".concat(options.decimal_separator, "(").concat(decimal_digits, "))").concat(options.require_decimal ? '' : '?'); + var pattern = whole_dollar_amount + (options.allow_decimal || options.require_decimal ? decimal_amount : ''); // default is negative sign before symbol, but there are two other options (besides parens) + + if (options.allow_negatives && !options.parens_for_negatives) { + if (options.negative_sign_after_digits) { + pattern += negative; + } else if (options.negative_sign_before_digits) { + pattern = negative + pattern; + } + } // South African Rand, for example, uses R 123 (space) and R-123 (no space) + + + if (options.allow_negative_sign_placeholder) { + pattern = "( (?!\\-))?".concat(pattern); + } else if (options.allow_space_after_symbol) { + pattern = " ?".concat(pattern); + } else if (options.allow_space_after_digits) { + pattern += '( (?!$))?'; + } + + if (options.symbol_after_digits) { + pattern += symbol; + } else { + pattern = symbol + pattern; + } + + if (options.allow_negatives) { + if (options.parens_for_negatives) { + pattern = "(\\(".concat(pattern, "\\)|").concat(pattern, ")"); + } else if (!(options.negative_sign_before_digits || options.negative_sign_after_digits)) { + pattern = negative + pattern; + } + } // ensure there's a dollar and/or decimal amount, and that + // it doesn't start with a space or a negative sign followed by a space + + + return new RegExp("^(?!-? )(?=.*\\d)".concat(pattern, "$")); + } + + var default_currency_options = { + symbol: '$', + require_symbol: false, + allow_space_after_symbol: false, + symbol_after_digits: false, + allow_negatives: true, + parens_for_negatives: false, + negative_sign_before_digits: false, + negative_sign_after_digits: false, + allow_negative_sign_placeholder: false, + thousands_separator: ',', + decimal_separator: '.', + allow_decimal: true, + require_decimal: false, + digits_after_decimal: [2], + allow_space_after_digits: false + }; + + function isCurrency(str, options) { + (0, _assertString.default)(str); + options = (0, _merge.default)(options, default_currency_options); + return currencyRegex(options).test(str); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isCurrency$1, isCurrency$1.exports)); + + var isCurrencyValidator = /*@__PURE__*/getDefaultExportFromCjs(isCurrency$1.exports); + + var IS_CURRENCY = 'isCurrency'; + /** + * Checks if the string is a valid currency amount. + * If given value is not a string, then it returns false. + */ + function isCurrency(value, options) { + return typeof value === 'string' && isCurrencyValidator(value, options); + } + /** + * Checks if the string is a valid currency amount. + * If given value is not a string, then it returns false. + */ + function IsCurrency(options, validationOptions) { + return ValidateBy({ + name: IS_CURRENCY, + constraints: [options], + validator: { + validate: function (value, args) { return isCurrency(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a currency'; }, validationOptions), + }, + }, validationOptions); + } + + var isEmail$1 = {exports: {}}; + + var isFQDN$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isFQDN; + + var _assertString = _interopRequireDefault(assertString.exports); + + var _merge = _interopRequireDefault(merge.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var default_fqdn_options = { + require_tld: true, + allow_underscores: false, + allow_trailing_dot: false, + allow_numeric_tld: false, + allow_wildcard: false + }; + + function isFQDN(str, options) { + (0, _assertString.default)(str); + options = (0, _merge.default)(options, default_fqdn_options); + /* Remove the optional trailing dot before checking validity */ + + if (options.allow_trailing_dot && str[str.length - 1] === '.') { + str = str.substring(0, str.length - 1); + } + /* Remove the optional wildcard before checking validity */ + + + if (options.allow_wildcard === true && str.indexOf('*.') === 0) { + str = str.substring(2); + } + + var parts = str.split('.'); + var tld = parts[parts.length - 1]; + + if (options.require_tld) { + // disallow fqdns without tld + if (parts.length < 2) { + return false; + } + + if (!/^([a-z\u00A1-\u00A8\u00AA-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}|xn[a-z0-9-]{2,})$/i.test(tld)) { + return false; + } // disallow spaces + + + if (/\s/.test(tld)) { + return false; + } + } // reject numeric TLDs + + + if (!options.allow_numeric_tld && /^\d+$/.test(tld)) { + return false; + } + + return parts.every(function (part) { + if (part.length > 63) { + return false; + } + + if (!/^[a-z_\u00a1-\uffff0-9-]+$/i.test(part)) { + return false; + } // disallow full-width chars + + + if (/[\uff01-\uff5e]/.test(part)) { + return false; + } // disallow parts starting or ending with hyphen + + + if (/^-|-$/.test(part)) { + return false; + } + + if (!options.allow_underscores && /_/.test(part)) { + return false; + } + + return true; + }); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isFQDN$1, isFQDN$1.exports)); + + var isFqdnValidator = /*@__PURE__*/getDefaultExportFromCjs(isFQDN$1.exports); + + var isIP$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isIP; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + /** + 11.3. Examples + + The following addresses + + fe80::1234 (on the 1st link of the node) + ff02::5678 (on the 5th link of the node) + ff08::9abc (on the 10th organization of the node) + + would be represented as follows: + + fe80::1234%1 + ff02::5678%5 + ff08::9abc%10 + + (Here we assume a natural translation from a zone index to the + part, where the Nth zone of any scope is translated into + "N".) + + If we use interface names as , those addresses could also be + represented as follows: + + fe80::1234%ne0 + ff02::5678%pvc1.3 + ff08::9abc%interface10 + + where the interface "ne0" belongs to the 1st link, "pvc1.3" belongs + to the 5th link, and "interface10" belongs to the 10th organization. + * * */ + var IPv4SegmentFormat = '(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'; + var IPv4AddressFormat = "(".concat(IPv4SegmentFormat, "[.]){3}").concat(IPv4SegmentFormat); + var IPv4AddressRegExp = new RegExp("^".concat(IPv4AddressFormat, "$")); + var IPv6SegmentFormat = '(?:[0-9a-fA-F]{1,4})'; + var IPv6AddressRegExp = new RegExp('^(' + "(?:".concat(IPv6SegmentFormat, ":){7}(?:").concat(IPv6SegmentFormat, "|:)|") + "(?:".concat(IPv6SegmentFormat, ":){6}(?:").concat(IPv4AddressFormat, "|:").concat(IPv6SegmentFormat, "|:)|") + "(?:".concat(IPv6SegmentFormat, ":){5}(?::").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,2}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){4}(?:(:").concat(IPv6SegmentFormat, "){0,1}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,3}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){3}(?:(:").concat(IPv6SegmentFormat, "){0,2}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,4}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){2}(?:(:").concat(IPv6SegmentFormat, "){0,3}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,5}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){1}(?:(:").concat(IPv6SegmentFormat, "){0,4}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,6}|:)|") + "(?::((?::".concat(IPv6SegmentFormat, "){0,5}:").concat(IPv4AddressFormat, "|(?::").concat(IPv6SegmentFormat, "){1,7}|:))") + ')(%[0-9a-zA-Z-.:]{1,})?$'); + + function isIP(str) { + var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + (0, _assertString.default)(str); + version = String(version); + + if (!version) { + return isIP(str, 4) || isIP(str, 6); + } + + if (version === '4') { + if (!IPv4AddressRegExp.test(str)) { + return false; + } + + var parts = str.split('.').sort(function (a, b) { + return a - b; + }); + return parts[3] <= 255; + } + + if (version === '6') { + return !!IPv6AddressRegExp.test(str); + } + + return false; + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isIP$1, isIP$1.exports)); + + var isIPValidator = /*@__PURE__*/getDefaultExportFromCjs(isIP$1.exports); + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isEmail; + + var _assertString = _interopRequireDefault(assertString.exports); + + var _merge = _interopRequireDefault(merge.exports); + + var _isByteLength = _interopRequireDefault(isByteLength$1.exports); + + var _isFQDN = _interopRequireDefault(isFQDN$1.exports); + + var _isIP = _interopRequireDefault(isIP$1.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var default_email_options = { + allow_display_name: false, + require_display_name: false, + allow_utf8_local_part: true, + require_tld: true, + blacklisted_chars: '', + ignore_max_length: false, + host_blacklist: [] + }; + /* eslint-disable max-len */ + + /* eslint-disable no-control-regex */ + + var splitNameAddress = /^([^\x00-\x1F\x7F-\x9F\cX]+)]/.test(display_name_without_quotes); + + if (contains_illegal) { + // if contains illegal characters, + // must to be enclosed in double-quotes, otherwise it's not a valid display name + if (display_name_without_quotes === display_name) { + return false; + } // the quotes in display name must start with character symbol \ + + + var all_start_with_back_slash = display_name_without_quotes.split('"').length === display_name_without_quotes.split('\\"').length; + + if (!all_start_with_back_slash) { + return false; + } + } + + return true; + } + + function isEmail(str, options) { + (0, _assertString.default)(str); + options = (0, _merge.default)(options, default_email_options); + + if (options.require_display_name || options.allow_display_name) { + var display_email = str.match(splitNameAddress); + + if (display_email) { + var display_name = display_email[1]; // Remove display name and angle brackets to get email address + // Can be done in the regex but will introduce a ReDOS (See #1597 for more info) + + str = str.replace(display_name, '').replace(/(^<|>$)/g, ''); // sometimes need to trim the last space to get the display name + // because there may be a space between display name and email address + // eg. myname + // the display name is `myname` instead of `myname `, so need to trim the last space + + if (display_name.endsWith(' ')) { + display_name = display_name.substr(0, display_name.length - 1); + } + + if (!validateDisplayName(display_name)) { + return false; + } + } else if (options.require_display_name) { + return false; + } + } + + if (!options.ignore_max_length && str.length > defaultMaxEmailLength) { + return false; + } + + var parts = str.split('@'); + var domain = parts.pop(); + var lower_domain = domain.toLowerCase(); + + if (options.host_blacklist.includes(lower_domain)) { + return false; + } + + var user = parts.join('@'); + + if (options.domain_specific_validation && (lower_domain === 'gmail.com' || lower_domain === 'googlemail.com')) { + /* + Previously we removed dots for gmail addresses before validating. + This was removed because it allows `multiple..dots@gmail.com` + to be reported as valid, but it is not. + Gmail only normalizes single dots, removing them from here is pointless, + should be done in normalizeEmail + */ + user = user.toLowerCase(); // Removing sub-address from username before gmail validation + + var username = user.split('+')[0]; // Dots are not included in gmail length restriction + + if (!(0, _isByteLength.default)(username.replace(/\./g, ''), { + min: 6, + max: 30 + })) { + return false; + } + + var _user_parts = username.split('.'); + + for (var i = 0; i < _user_parts.length; i++) { + if (!gmailUserPart.test(_user_parts[i])) { + return false; + } + } + } + + if (options.ignore_max_length === false && (!(0, _isByteLength.default)(user, { + max: 64 + }) || !(0, _isByteLength.default)(domain, { + max: 254 + }))) { + return false; + } + + if (!(0, _isFQDN.default)(domain, { + require_tld: options.require_tld + })) { + if (!options.allow_ip_domain) { + return false; + } + + if (!(0, _isIP.default)(domain)) { + if (!domain.startsWith('[') || !domain.endsWith(']')) { + return false; + } + + var noBracketdomain = domain.substr(1, domain.length - 2); + + if (noBracketdomain.length === 0 || !(0, _isIP.default)(noBracketdomain)) { + return false; + } + } + } + + if (user[0] === '"') { + user = user.slice(1, user.length - 1); + return options.allow_utf8_local_part ? quotedEmailUserUtf8.test(user) : quotedEmailUser.test(user); + } + + var pattern = options.allow_utf8_local_part ? emailUserUtf8Part : emailUserPart; + var user_parts = user.split('.'); + + for (var _i = 0; _i < user_parts.length; _i++) { + if (!pattern.test(user_parts[_i])) { + return false; + } + } + + if (options.blacklisted_chars) { + if (user.search(new RegExp("[".concat(options.blacklisted_chars, "]+"), 'g')) !== -1) return false; + } + + return true; + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isEmail$1, isEmail$1.exports)); + + var isEmailValidator = /*@__PURE__*/getDefaultExportFromCjs(isEmail$1.exports); + + var IS_EMAIL = 'isEmail'; + /** + * Checks if the string is an email. + * If given value is not a string, then it returns false. + */ + function isEmail(value, options) { + return typeof value === 'string' && isEmailValidator(value, options); + } + /** + * Checks if the string is an email. + * If given value is not a string, then it returns false. + */ + function IsEmail(options, validationOptions) { + return ValidateBy({ + name: IS_EMAIL, + constraints: [options], + validator: { + validate: function (value, args) { return isEmail(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an email'; }, validationOptions), + }, + }, validationOptions); + } + + var IS_FQDN = 'isFqdn'; + /** + * Checks if the string is a fully qualified domain name (e.g. domain.com). + * If given value is not a string, then it returns false. + */ + function isFQDN(value, options) { + return typeof value === 'string' && isFqdnValidator(value, options); + } + /** + * Checks if the string is a fully qualified domain name (e.g. domain.com). + * If given value is not a string, then it returns false. + */ + function IsFQDN(options, validationOptions) { + return ValidateBy({ + name: IS_FQDN, + constraints: [options], + validator: { + validate: function (value, args) { return isFQDN(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid domain name'; }, validationOptions), + }, + }, validationOptions); + } + + var isFullWidth$2 = {}; + + Object.defineProperty(isFullWidth$2, "__esModule", { + value: true + }); + var _default$5 = isFullWidth$2.default = isFullWidth$1; + isFullWidth$2.fullWidth = void 0; + + var _assertString$5 = _interopRequireDefault$5(assertString.exports); + + function _interopRequireDefault$5(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var fullWidth = /[^\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/; + isFullWidth$2.fullWidth = fullWidth; + + function isFullWidth$1(str) { + (0, _assertString$5.default)(str); + return fullWidth.test(str); + } + + var IS_FULL_WIDTH = 'isFullWidth'; + /** + * Checks if the string contains any full-width chars. + * If given value is not a string, then it returns false. + */ + function isFullWidth(value) { + return typeof value === 'string' && _default$5(value); + } + /** + * Checks if the string contains any full-width chars. + * If given value is not a string, then it returns false. + */ + function IsFullWidth(validationOptions) { + return ValidateBy({ + name: IS_FULL_WIDTH, + validator: { + validate: function (value, args) { return isFullWidth(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain a full-width characters'; }, validationOptions), + }, + }, validationOptions); + } + + var isHalfWidth$2 = {}; + + Object.defineProperty(isHalfWidth$2, "__esModule", { + value: true + }); + var _default$4 = isHalfWidth$2.default = isHalfWidth$1; + isHalfWidth$2.halfWidth = void 0; + + var _assertString$4 = _interopRequireDefault$4(assertString.exports); + + function _interopRequireDefault$4(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var halfWidth = /[\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/; + isHalfWidth$2.halfWidth = halfWidth; + + function isHalfWidth$1(str) { + (0, _assertString$4.default)(str); + return halfWidth.test(str); + } + + var IS_HALF_WIDTH = 'isHalfWidth'; + /** + * Checks if the string contains any half-width chars. + * If given value is not a string, then it returns false. + */ + function isHalfWidth(value) { + return typeof value === 'string' && _default$4(value); + } + /** + * Checks if the string contains any full-width chars. + * If given value is not a string, then it returns false. + */ + function IsHalfWidth(validationOptions) { + return ValidateBy({ + name: IS_HALF_WIDTH, + validator: { + validate: function (value, args) { return isHalfWidth(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain a half-width characters'; }, validationOptions), + }, + }, validationOptions); + } + + var isVariableWidth$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isVariableWidth; + + var _assertString = _interopRequireDefault(assertString.exports); + + var _isFullWidth = isFullWidth$2; + + var _isHalfWidth = isHalfWidth$2; + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function isVariableWidth(str) { + (0, _assertString.default)(str); + return _isFullWidth.fullWidth.test(str) && _isHalfWidth.halfWidth.test(str); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isVariableWidth$1, isVariableWidth$1.exports)); + + var isVariableWidthValidator = /*@__PURE__*/getDefaultExportFromCjs(isVariableWidth$1.exports); + + var IS_VARIABLE_WIDTH = 'isVariableWidth'; + /** + * Checks if the string contains variable-width chars. + * If given value is not a string, then it returns false. + */ + function isVariableWidth(value) { + return typeof value === 'string' && isVariableWidthValidator(value); + } + /** + * Checks if the string contains variable-width chars. + * If given value is not a string, then it returns false. + */ + function IsVariableWidth(validationOptions) { + return ValidateBy({ + name: IS_VARIABLE_WIDTH, + validator: { + validate: function (value, args) { return isVariableWidth(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain a full-width and half-width characters'; }, validationOptions), + }, + }, validationOptions); + } + + var isHexColor$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isHexColor; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var hexcolor = /^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$/i; + + function isHexColor(str) { + (0, _assertString.default)(str); + return hexcolor.test(str); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isHexColor$1, isHexColor$1.exports)); + + var isHexColorValidator = /*@__PURE__*/getDefaultExportFromCjs(isHexColor$1.exports); + + var IS_HEX_COLOR = 'isHexColor'; + /** + * Checks if the string is a hexadecimal color. + * If given value is not a string, then it returns false. + */ + function isHexColor(value) { + return typeof value === 'string' && isHexColorValidator(value); + } + /** + * Checks if the string is a hexadecimal color. + * If given value is not a string, then it returns false. + */ + function IsHexColor(validationOptions) { + return ValidateBy({ + name: IS_HEX_COLOR, + validator: { + validate: function (value, args) { return isHexColor(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a hexadecimal color'; }, validationOptions), + }, + }, validationOptions); + } + + var isHexadecimal$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isHexadecimal; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var hexadecimal = /^(0x|0h)?[0-9A-F]+$/i; + + function isHexadecimal(str) { + (0, _assertString.default)(str); + return hexadecimal.test(str); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isHexadecimal$1, isHexadecimal$1.exports)); + + var isHexadecimalValidator = /*@__PURE__*/getDefaultExportFromCjs(isHexadecimal$1.exports); + + var IS_HEXADECIMAL = 'isHexadecimal'; + /** + * Checks if the string is a hexadecimal number. + * If given value is not a string, then it returns false. + */ + function isHexadecimal(value) { + return typeof value === 'string' && isHexadecimalValidator(value); + } + /** + * Checks if the string is a hexadecimal number. + * If given value is not a string, then it returns false. + */ + function IsHexadecimal(validationOptions) { + return ValidateBy({ + name: IS_HEXADECIMAL, + validator: { + validate: function (value, args) { return isHexadecimal(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a hexadecimal number'; }, validationOptions), + }, + }, validationOptions); + } + + function isValidationOptions(val) { + if (!val) { + return false; + } + return 'each' in val || 'message' in val || 'groups' in val || 'always' in val || 'context' in val; + } + + var isMACAddress$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isMACAddress; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var macAddress = /^(?:[0-9a-fA-F]{2}([-:\s]))([0-9a-fA-F]{2}\1){4}([0-9a-fA-F]{2})$/; + var macAddressNoSeparators = /^([0-9a-fA-F]){12}$/; + var macAddressWithDots = /^([0-9a-fA-F]{4}\.){2}([0-9a-fA-F]{4})$/; + + function isMACAddress(str, options) { + (0, _assertString.default)(str); + /** + * @deprecated `no_colons` TODO: remove it in the next major + */ + + if (options && (options.no_colons || options.no_separators)) { + return macAddressNoSeparators.test(str); + } + + return macAddress.test(str) || macAddressWithDots.test(str); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isMACAddress$1, isMACAddress$1.exports)); + + var isMacAddressValidator = /*@__PURE__*/getDefaultExportFromCjs(isMACAddress$1.exports); + + var IS_MAC_ADDRESS = 'isMacAddress'; + /** + * Check if the string is a MAC address. + * If given value is not a string, then it returns false. + */ + function isMACAddress(value, options) { + return typeof value === 'string' && isMacAddressValidator(value, options); + } + function IsMACAddress(optionsOrValidationOptionsArg, validationOptionsArg) { + var options = !isValidationOptions(optionsOrValidationOptionsArg) ? optionsOrValidationOptionsArg : undefined; + var validationOptions = isValidationOptions(optionsOrValidationOptionsArg) + ? optionsOrValidationOptionsArg + : validationOptionsArg; + return ValidateBy({ + name: IS_MAC_ADDRESS, + constraints: [options], + validator: { + validate: function (value, args) { return isMACAddress(value, options); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a MAC Address'; }, validationOptions), + }, + }, validationOptions); + } + + var IS_IP = 'isIp'; + /** + * Checks if the string is an IP (version 4 or 6). + * If given value is not a string, then it returns false. + */ + function isIP(value, version) { + /* eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion */ + var versionStr = version ? "".concat(version) : undefined; + return typeof value === 'string' && isIPValidator(value, versionStr); + } + /** + * Checks if the string is an IP (version 4 or 6). + * If given value is not a string, then it returns false. + */ + function IsIP(version, validationOptions) { + return ValidateBy({ + name: IS_IP, + constraints: [version], + validator: { + validate: function (value, args) { return isIP(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an ip address'; }, validationOptions), + }, + }, validationOptions); + } + + var isPort$1 = {exports: {}}; + + var isInt$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isInt; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var int = /^(?:[-+]?(?:0|[1-9][0-9]*))$/; + var intLeadingZeroes = /^[-+]?[0-9]+$/; + + function isInt(str, options) { + (0, _assertString.default)(str); + options = options || {}; // Get the regex to use for testing, based on whether + // leading zeroes are allowed or not. + + var regex = options.hasOwnProperty('allow_leading_zeroes') && !options.allow_leading_zeroes ? int : intLeadingZeroes; // Check min/max/lt/gt + + var minCheckPassed = !options.hasOwnProperty('min') || str >= options.min; + var maxCheckPassed = !options.hasOwnProperty('max') || str <= options.max; + var ltCheckPassed = !options.hasOwnProperty('lt') || str < options.lt; + var gtCheckPassed = !options.hasOwnProperty('gt') || str > options.gt; + return regex.test(str) && minCheckPassed && maxCheckPassed && ltCheckPassed && gtCheckPassed; + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isInt$1, isInt$1.exports)); + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isPort; + + var _isInt = _interopRequireDefault(isInt$1.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function isPort(str) { + return (0, _isInt.default)(str, { + min: 0, + max: 65535 + }); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isPort$1, isPort$1.exports)); + + var isPortValidator = /*@__PURE__*/getDefaultExportFromCjs(isPort$1.exports); + + var IS_PORT = 'isPort'; + /** + * Check if the string is a valid port number. + */ + function isPort(value) { + return typeof value === 'string' && isPortValidator(value); + } + /** + * Check if the string is a valid port number. + */ + function IsPort(validationOptions) { + return ValidateBy({ + name: IS_PORT, + validator: { + validate: function (value, args) { return isPort(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a port'; }, validationOptions), + }, + }, validationOptions); + } + + var isISBN$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isISBN; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var isbn10Maybe = /^(?:[0-9]{9}X|[0-9]{10})$/; + var isbn13Maybe = /^(?:[0-9]{13})$/; + var factor = [1, 3]; + + function isISBN(str) { + var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + (0, _assertString.default)(str); + version = String(version); + + if (!version) { + return isISBN(str, 10) || isISBN(str, 13); + } + + var sanitized = str.replace(/[\s-]+/g, ''); + var checksum = 0; + var i; + + if (version === '10') { + if (!isbn10Maybe.test(sanitized)) { + return false; + } + + for (i = 0; i < 9; i++) { + checksum += (i + 1) * sanitized.charAt(i); + } + + if (sanitized.charAt(9) === 'X') { + checksum += 10 * 10; + } else { + checksum += 10 * sanitized.charAt(9); + } + + if (checksum % 11 === 0) { + return !!sanitized; + } + } else if (version === '13') { + if (!isbn13Maybe.test(sanitized)) { + return false; + } + + for (i = 0; i < 12; i++) { + checksum += factor[i % 2] * sanitized.charAt(i); + } + + if (sanitized.charAt(12) - (10 - checksum % 10) % 10 === 0) { + return !!sanitized; + } + } + + return false; + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isISBN$1, isISBN$1.exports)); + + var isIsbnValidator = /*@__PURE__*/getDefaultExportFromCjs(isISBN$1.exports); + + var IS_ISBN = 'isIsbn'; + /** + * Checks if the string is an ISBN (version 10 or 13). + * If given value is not a string, then it returns false. + */ + function isISBN(value, version) { + /* eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion */ + var versionStr = version ? "".concat(version) : undefined; + return typeof value === 'string' && isIsbnValidator(value, versionStr); + } + /** + * Checks if the string is an ISBN (version 10 or 13). + * If given value is not a string, then it returns false. + */ + function IsISBN(version, validationOptions) { + return ValidateBy({ + name: IS_ISBN, + constraints: [version], + validator: { + validate: function (value, args) { return isISBN(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an ISBN'; }, validationOptions), + }, + }, validationOptions); + } + + var isISIN$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isISIN; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var isin = /^[A-Z]{2}[0-9A-Z]{9}[0-9]$/; // this link details how the check digit is calculated: + // https://www.isin.org/isin-format/. it is a little bit + // odd in that it works with digits, not numbers. in order + // to make only one pass through the ISIN characters, the + // each alpha character is handled as 2 characters within + // the loop. + + function isISIN(str) { + (0, _assertString.default)(str); + + if (!isin.test(str)) { + return false; + } + + var double = true; + var sum = 0; // convert values + + for (var i = str.length - 2; i >= 0; i--) { + if (str[i] >= 'A' && str[i] <= 'Z') { + var value = str[i].charCodeAt(0) - 55; + var lo = value % 10; + var hi = Math.trunc(value / 10); // letters have two digits, so handle the low order + // and high order digits separately. + + for (var _i = 0, _arr = [lo, hi]; _i < _arr.length; _i++) { + var digit = _arr[_i]; + + if (double) { + if (digit >= 5) { + sum += 1 + (digit - 5) * 2; + } else { + sum += digit * 2; + } + } else { + sum += digit; + } + + double = !double; + } + } else { + var _digit = str[i].charCodeAt(0) - '0'.charCodeAt(0); + + if (double) { + if (_digit >= 5) { + sum += 1 + (_digit - 5) * 2; + } else { + sum += _digit * 2; + } + } else { + sum += _digit; + } + + double = !double; + } + } + + var check = Math.trunc((sum + 9) / 10) * 10 - sum; + return +str[str.length - 1] === check; + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isISIN$1, isISIN$1.exports)); + + var isIsinValidator = /*@__PURE__*/getDefaultExportFromCjs(isISIN$1.exports); + + var IS_ISIN = 'isIsin'; + /** + * Checks if the string is an ISIN (stock/security identifier). + * If given value is not a string, then it returns false. + */ + function isISIN(value) { + return typeof value === 'string' && isIsinValidator(value); + } + /** + * Checks if the string is an ISIN (stock/security identifier). + * If given value is not a string, then it returns false. + */ + function IsISIN(validationOptions) { + return ValidateBy({ + name: IS_ISIN, + validator: { + validate: function (value, args) { return isISIN(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an ISIN (stock/security identifier)'; }, validationOptions), + }, + }, validationOptions); + } + + var isISO8601$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isISO8601; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + /* eslint-disable max-len */ + // from http://goo.gl/0ejHHW + var iso8601 = /^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/; // same as above, except with a strict 'T' separator between date and time + + var iso8601StrictSeparator = /^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T]((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/; + /* eslint-enable max-len */ + + var isValidDate = function isValidDate(str) { + // str must have passed the ISO8601 check + // this check is meant to catch invalid dates + // like 2009-02-31 + // first check for ordinal dates + var ordinalMatch = str.match(/^(\d{4})-?(\d{3})([ T]{1}\.*|$)/); + + if (ordinalMatch) { + var oYear = Number(ordinalMatch[1]); + var oDay = Number(ordinalMatch[2]); // if is leap year + + if (oYear % 4 === 0 && oYear % 100 !== 0 || oYear % 400 === 0) return oDay <= 366; + return oDay <= 365; + } + + var match = str.match(/(\d{4})-?(\d{0,2})-?(\d*)/).map(Number); + var year = match[1]; + var month = match[2]; + var day = match[3]; + var monthString = month ? "0".concat(month).slice(-2) : month; + var dayString = day ? "0".concat(day).slice(-2) : day; // create a date object and compare + + var d = new Date("".concat(year, "-").concat(monthString || '01', "-").concat(dayString || '01')); + + if (month && day) { + return d.getUTCFullYear() === year && d.getUTCMonth() + 1 === month && d.getUTCDate() === day; + } + + return true; + }; + + function isISO8601(str) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + (0, _assertString.default)(str); + var check = options.strictSeparator ? iso8601StrictSeparator.test(str) : iso8601.test(str); + if (check && options.strict) return isValidDate(str); + return check; + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isISO8601$1, isISO8601$1.exports)); + + var isIso8601Validator = /*@__PURE__*/getDefaultExportFromCjs(isISO8601$1.exports); + + var IS_ISO8601 = 'isIso8601'; + /** + * Checks if the string is a valid ISO 8601 date. + * If given value is not a string, then it returns false. + * Use the option strict = true for additional checks for a valid date, e.g. invalidates dates like 2019-02-29. + */ + function isISO8601(value, options) { + return typeof value === 'string' && isIso8601Validator(value, options); + } + /** + * Checks if the string is a valid ISO 8601 date. + * If given value is not a string, then it returns false. + * Use the option strict = true for additional checks for a valid date, e.g. invalidates dates like 2019-02-29. + */ + function IsISO8601(options, validationOptions) { + return ValidateBy({ + name: IS_ISO8601, + constraints: [options], + validator: { + validate: function (value, args) { return isISO8601(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid ISO 8601 date string'; }, validationOptions), + }, + }, validationOptions); + } + + var isJSON$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isJSON; + + var _assertString = _interopRequireDefault(assertString.exports); + + var _merge = _interopRequireDefault(merge.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + + var default_json_options = { + allow_primitives: false + }; + + function isJSON(str, options) { + (0, _assertString.default)(str); + + try { + options = (0, _merge.default)(options, default_json_options); + var primitives = []; + + if (options.allow_primitives) { + primitives = [null, false, true]; + } + + var obj = JSON.parse(str); + return primitives.includes(obj) || !!obj && _typeof(obj) === 'object'; + } catch (e) { + /* ignore */ + } + + return false; + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isJSON$1, isJSON$1.exports)); + + var isJSONValidator = /*@__PURE__*/getDefaultExportFromCjs(isJSON$1.exports); + + var IS_JSON = 'isJson'; + /** + * Checks if the string is valid JSON (note: uses JSON.parse). + * If given value is not a string, then it returns false. + */ + function isJSON(value) { + return typeof value === 'string' && isJSONValidator(value); + } + /** + * Checks if the string is valid JSON (note: uses JSON.parse). + * If given value is not a string, then it returns false. + */ + function IsJSON(validationOptions) { + return ValidateBy({ + name: IS_JSON, + validator: { + validate: function (value, args) { return isJSON(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a json string'; }, validationOptions), + }, + }, validationOptions); + } + + var isJWT$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isJWT; + + var _assertString = _interopRequireDefault(assertString.exports); + + var _isBase = _interopRequireDefault(isBase64$1.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function isJWT(str) { + (0, _assertString.default)(str); + var dotSplit = str.split('.'); + var len = dotSplit.length; + + if (len > 3 || len < 2) { + return false; + } + + return dotSplit.reduce(function (acc, currElem) { + return acc && (0, _isBase.default)(currElem, { + urlSafe: true + }); + }, true); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isJWT$1, isJWT$1.exports)); + + var isJwtValidator = /*@__PURE__*/getDefaultExportFromCjs(isJWT$1.exports); + + var IS_JWT = 'isJwt'; + /** + * Checks if the string is valid JWT token. + * If given value is not a string, then it returns false. + */ + function isJWT(value) { + return typeof value === 'string' && isJwtValidator(value); + } + /** + * Checks if the string is valid JWT token. + * If given value is not a string, then it returns false. + */ + function IsJWT(validationOptions) { + return ValidateBy({ + name: IS_JWT, + validator: { + validate: function (value, args) { return isJWT(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a jwt string'; }, validationOptions), + }, + }, validationOptions); + } + + var isLowercase$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isLowercase; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function isLowercase(str) { + (0, _assertString.default)(str); + return str === str.toLowerCase(); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isLowercase$1, isLowercase$1.exports)); + + var isLowercaseValidator = /*@__PURE__*/getDefaultExportFromCjs(isLowercase$1.exports); + + var IS_LOWERCASE = 'isLowercase'; + /** + * Checks if the string is lowercase. + * If given value is not a string, then it returns false. + */ + function isLowercase(value) { + return typeof value === 'string' && isLowercaseValidator(value); + } + /** + * Checks if the string is lowercase. + * If given value is not a string, then it returns false. + */ + function IsLowercase(validationOptions) { + return ValidateBy({ + name: IS_LOWERCASE, + validator: { + validate: function (value, args) { return isLowercase(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a lowercase string'; }, validationOptions), + }, + }, validationOptions); + } + + var isMobilePhone$2 = {}; + + Object.defineProperty(isMobilePhone$2, "__esModule", { + value: true + }); + var _default$3 = isMobilePhone$2.default = isMobilePhone$1; + isMobilePhone$2.locales = void 0; + + var _assertString$3 = _interopRequireDefault$3(assertString.exports); + + function _interopRequireDefault$3(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + /* eslint-disable max-len */ + var phones = { + 'am-AM': /^(\+?374|0)((10|[9|7][0-9])\d{6}$|[2-4]\d{7}$)/, + 'ar-AE': /^((\+?971)|0)?5[024568]\d{7}$/, + 'ar-BH': /^(\+?973)?(3|6)\d{7}$/, + 'ar-DZ': /^(\+?213|0)(5|6|7)\d{8}$/, + 'ar-LB': /^(\+?961)?((3|81)\d{6}|7\d{7})$/, + 'ar-EG': /^((\+?20)|0)?1[0125]\d{8}$/, + 'ar-IQ': /^(\+?964|0)?7[0-9]\d{8}$/, + 'ar-JO': /^(\+?962|0)?7[789]\d{7}$/, + 'ar-KW': /^(\+?965)[569]\d{7}$/, + 'ar-LY': /^((\+?218)|0)?(9[1-6]\d{7}|[1-8]\d{7,9})$/, + 'ar-MA': /^(?:(?:\+|00)212|0)[5-7]\d{8}$/, + 'ar-OM': /^((\+|00)968)?(9[1-9])\d{6}$/, + 'ar-PS': /^(\+?970|0)5[6|9](\d{7})$/, + 'ar-SA': /^(!?(\+?966)|0)?5\d{8}$/, + 'ar-SY': /^(!?(\+?963)|0)?9\d{8}$/, + 'ar-TN': /^(\+?216)?[2459]\d{7}$/, + 'az-AZ': /^(\+994|0)(5[015]|7[07]|99)\d{7}$/, + 'bs-BA': /^((((\+|00)3876)|06))((([0-3]|[5-6])\d{6})|(4\d{7}))$/, + 'be-BY': /^(\+?375)?(24|25|29|33|44)\d{7}$/, + 'bg-BG': /^(\+?359|0)?8[789]\d{7}$/, + 'bn-BD': /^(\+?880|0)1[13456789][0-9]{8}$/, + 'ca-AD': /^(\+376)?[346]\d{5}$/, + 'cs-CZ': /^(\+?420)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/, + 'da-DK': /^(\+?45)?\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{2}$/, + 'de-DE': /^((\+49|0)[1|3])([0|5][0-45-9]\d|6([23]|0\d?)|7([0-57-9]|6\d))\d{7,9}$/, + 'de-AT': /^(\+43|0)\d{1,4}\d{3,12}$/, + 'de-CH': /^(\+41|0)([1-9])\d{1,9}$/, + 'de-LU': /^(\+352)?((6\d1)\d{6})$/, + 'dv-MV': /^(\+?960)?(7[2-9]|91|9[3-9])\d{7}$/, + 'el-GR': /^(\+?30|0)?(69\d{8})$/, + 'en-AU': /^(\+?61|0)4\d{8}$/, + 'en-BM': /^(\+?1)?441(((3|7)\d{6}$)|(5[0-3][0-9]\d{4}$)|(59\d{5}))/, + 'en-GB': /^(\+?44|0)7\d{9}$/, + 'en-GG': /^(\+?44|0)1481\d{6}$/, + 'en-GH': /^(\+233|0)(20|50|24|54|27|57|26|56|23|28|55|59)\d{7}$/, + 'en-GY': /^(\+592|0)6\d{6}$/, + 'en-HK': /^(\+?852[-\s]?)?[456789]\d{3}[-\s]?\d{4}$/, + 'en-MO': /^(\+?853[-\s]?)?[6]\d{3}[-\s]?\d{4}$/, + 'en-IE': /^(\+?353|0)8[356789]\d{7}$/, + 'en-IN': /^(\+?91|0)?[6789]\d{9}$/, + 'en-KE': /^(\+?254|0)(7|1)\d{8}$/, + 'en-KI': /^((\+686|686)?)?( )?((6|7)(2|3|8)[0-9]{6})$/, + 'en-MT': /^(\+?356|0)?(99|79|77|21|27|22|25)[0-9]{6}$/, + 'en-MU': /^(\+?230|0)?\d{8}$/, + 'en-NA': /^(\+?264|0)(6|8)\d{7}$/, + 'en-NG': /^(\+?234|0)?[789]\d{9}$/, + 'en-NZ': /^(\+?64|0)[28]\d{7,9}$/, + 'en-PK': /^((00|\+)?92|0)3[0-6]\d{8}$/, + 'en-PH': /^(09|\+639)\d{9}$/, + 'en-RW': /^(\+?250|0)?[7]\d{8}$/, + 'en-SG': /^(\+65)?[3689]\d{7}$/, + 'en-SL': /^(\+?232|0)\d{8}$/, + 'en-TZ': /^(\+?255|0)?[67]\d{8}$/, + 'en-UG': /^(\+?256|0)?[7]\d{8}$/, + 'en-US': /^((\+1|1)?( |-)?)?(\([2-9][0-9]{2}\)|[2-9][0-9]{2})( |-)?([2-9][0-9]{2}( |-)?[0-9]{4})$/, + 'en-ZA': /^(\+?27|0)\d{9}$/, + 'en-ZM': /^(\+?26)?09[567]\d{7}$/, + 'en-ZW': /^(\+263)[0-9]{9}$/, + 'en-BW': /^(\+?267)?(7[1-8]{1})\d{6}$/, + 'es-AR': /^\+?549(11|[2368]\d)\d{8}$/, + 'es-BO': /^(\+?591)?(6|7)\d{7}$/, + 'es-CO': /^(\+?57)?3(0(0|1|2|4|5)|1\d|2[0-4]|5(0|1))\d{7}$/, + 'es-CL': /^(\+?56|0)[2-9]\d{1}\d{7}$/, + 'es-CR': /^(\+506)?[2-8]\d{7}$/, + 'es-CU': /^(\+53|0053)?5\d{7}/, + 'es-DO': /^(\+?1)?8[024]9\d{7}$/, + 'es-HN': /^(\+?504)?[9|8]\d{7}$/, + 'es-EC': /^(\+?593|0)([2-7]|9[2-9])\d{7}$/, + 'es-ES': /^(\+?34)?[6|7]\d{8}$/, + 'es-PE': /^(\+?51)?9\d{8}$/, + 'es-MX': /^(\+?52)?(1|01)?\d{10,11}$/, + 'es-PA': /^(\+?507)\d{7,8}$/, + 'es-PY': /^(\+?595|0)9[9876]\d{7}$/, + 'es-SV': /^(\+?503)?[67]\d{7}$/, + 'es-UY': /^(\+598|0)9[1-9][\d]{6}$/, + 'es-VE': /^(\+?58)?(2|4)\d{9}$/, + 'et-EE': /^(\+?372)?\s?(5|8[1-4])\s?([0-9]\s?){6,7}$/, + 'fa-IR': /^(\+?98[\-\s]?|0)9[0-39]\d[\-\s]?\d{3}[\-\s]?\d{4}$/, + 'fi-FI': /^(\+?358|0)\s?(4(0|1|2|4|5|6)?|50)\s?(\d\s?){4,8}\d$/, + 'fj-FJ': /^(\+?679)?\s?\d{3}\s?\d{4}$/, + 'fo-FO': /^(\+?298)?\s?\d{2}\s?\d{2}\s?\d{2}$/, + 'fr-BF': /^(\+226|0)[67]\d{7}$/, + 'fr-CM': /^(\+?237)6[0-9]{8}$/, + 'fr-FR': /^(\+?33|0)[67]\d{8}$/, + 'fr-GF': /^(\+?594|0|00594)[67]\d{8}$/, + 'fr-GP': /^(\+?590|0|00590)[67]\d{8}$/, + 'fr-MQ': /^(\+?596|0|00596)[67]\d{8}$/, + 'fr-PF': /^(\+?689)?8[789]\d{6}$/, + 'fr-RE': /^(\+?262|0|00262)[67]\d{8}$/, + 'he-IL': /^(\+972|0)([23489]|5[012345689]|77)[1-9]\d{6}$/, + 'hu-HU': /^(\+?36|06)(20|30|31|50|70)\d{7}$/, + 'id-ID': /^(\+?62|0)8(1[123456789]|2[1238]|3[1238]|5[12356789]|7[78]|9[56789]|8[123456789])([\s?|\d]{5,11})$/, + 'it-IT': /^(\+?39)?\s?3\d{2} ?\d{6,7}$/, + 'it-SM': /^((\+378)|(0549)|(\+390549)|(\+3780549))?6\d{5,9}$/, + 'ja-JP': /^(\+81[ \-]?(\(0\))?|0)[6789]0[ \-]?\d{4}[ \-]?\d{4}$/, + 'ka-GE': /^(\+?995)?(5|79)\d{7}$/, + 'kk-KZ': /^(\+?7|8)?7\d{9}$/, + 'kl-GL': /^(\+?299)?\s?\d{2}\s?\d{2}\s?\d{2}$/, + 'ko-KR': /^((\+?82)[ \-]?)?0?1([0|1|6|7|8|9]{1})[ \-]?\d{3,4}[ \-]?\d{4}$/, + 'lt-LT': /^(\+370|8)\d{8}$/, + 'lv-LV': /^(\+?371)2\d{7}$/, + 'ms-MY': /^(\+?6?01){1}(([0145]{1}(\-|\s)?\d{7,8})|([236789]{1}(\s|\-)?\d{7}))$/, + 'mz-MZ': /^(\+?258)?8[234567]\d{7}$/, + 'nb-NO': /^(\+?47)?[49]\d{7}$/, + 'ne-NP': /^(\+?977)?9[78]\d{8}$/, + 'nl-BE': /^(\+?32|0)4\d{8}$/, + 'nl-NL': /^(((\+|00)?31\(0\))|((\+|00)?31)|0)6{1}\d{8}$/, + 'nn-NO': /^(\+?47)?[49]\d{7}$/, + 'pl-PL': /^(\+?48)? ?[5-8]\d ?\d{3} ?\d{2} ?\d{2}$/, + 'pt-BR': /^((\+?55\ ?[1-9]{2}\ ?)|(\+?55\ ?\([1-9]{2}\)\ ?)|(0[1-9]{2}\ ?)|(\([1-9]{2}\)\ ?)|([1-9]{2}\ ?))((\d{4}\-?\d{4})|(9[2-9]{1}\d{3}\-?\d{4}))$/, + 'pt-PT': /^(\+?351)?9[1236]\d{7}$/, + 'pt-AO': /^(\+244)\d{9}$/, + 'ro-RO': /^(\+?4?0)\s?7\d{2}(\/|\s|\.|\-)?\d{3}(\s|\.|\-)?\d{3}$/, + 'ru-RU': /^(\+?7|8)?9\d{9}$/, + 'si-LK': /^(?:0|94|\+94)?(7(0|1|2|4|5|6|7|8)( |-)?)\d{7}$/, + 'sl-SI': /^(\+386\s?|0)(\d{1}\s?\d{3}\s?\d{2}\s?\d{2}|\d{2}\s?\d{3}\s?\d{3})$/, + 'sk-SK': /^(\+?421)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/, + 'sq-AL': /^(\+355|0)6[789]\d{6}$/, + 'sr-RS': /^(\+3816|06)[- \d]{5,9}$/, + 'sv-SE': /^(\+?46|0)[\s\-]?7[\s\-]?[02369]([\s\-]?\d){7}$/, + 'tg-TJ': /^(\+?992)?[5][5]\d{7}$/, + 'th-TH': /^(\+66|66|0)\d{9}$/, + 'tr-TR': /^(\+?90|0)?5\d{9}$/, + 'tk-TM': /^(\+993|993|8)\d{8}$/, + 'uk-UA': /^(\+?38|8)?0\d{9}$/, + 'uz-UZ': /^(\+?998)?(6[125-79]|7[1-69]|88|9\d)\d{7}$/, + 'vi-VN': /^((\+?84)|0)((3([2-9]))|(5([25689]))|(7([0|6-9]))|(8([1-9]))|(9([0-9])))([0-9]{7})$/, + 'zh-CN': /^((\+|00)86)?(1[3-9]|9[28])\d{9}$/, + 'zh-TW': /^(\+?886\-?|0)?9\d{8}$/, + 'dz-BT': /^(\+?975|0)?(17|16|77|02)\d{6}$/ + }; + /* eslint-enable max-len */ + // aliases + + phones['en-CA'] = phones['en-US']; + phones['fr-CA'] = phones['en-CA']; + phones['fr-BE'] = phones['nl-BE']; + phones['zh-HK'] = phones['en-HK']; + phones['zh-MO'] = phones['en-MO']; + phones['ga-IE'] = phones['en-IE']; + phones['fr-CH'] = phones['de-CH']; + phones['it-CH'] = phones['fr-CH']; + + function isMobilePhone$1(str, locale, options) { + (0, _assertString$3.default)(str); + + if (options && options.strictMode && !str.startsWith('+')) { + return false; + } + + if (Array.isArray(locale)) { + return locale.some(function (key) { + // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes + // istanbul ignore else + if (phones.hasOwnProperty(key)) { + var phone = phones[key]; + + if (phone.test(str)) { + return true; + } + } + + return false; + }); + } else if (locale in phones) { + return phones[locale].test(str); // alias falsey locale as 'any' + } else if (!locale || locale === 'any') { + for (var key in phones) { + // istanbul ignore else + if (phones.hasOwnProperty(key)) { + var phone = phones[key]; + + if (phone.test(str)) { + return true; + } + } + } + + return false; + } + + throw new Error("Invalid locale '".concat(locale, "'")); + } + + var locales$2 = Object.keys(phones); + isMobilePhone$2.locales = locales$2; + + var IS_MOBILE_PHONE = 'isMobilePhone'; + /** + * Checks if the string is a mobile phone number (locale is either an array of locales (e.g ['sk-SK', 'sr-RS']) + * 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', + * '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', + * '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', + * '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', + * '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', + * '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', + * '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', + * 'zh-HK', 'zh-MO', 'zh-TW'] + * If given value is not a string, then it returns false. + */ + function isMobilePhone(value, locale, options) { + return typeof value === 'string' && _default$3(value, locale, options); + } + /** + * Checks if the string is a mobile phone number (locale is either an array of locales (e.g ['sk-SK', 'sr-RS']) + * 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', + * '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', + * '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', + * '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', + * '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', + * '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', + * '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', + * 'zh-HK', 'zh-MO', 'zh-TW'] + * If given value is not a string, then it returns false. + */ + function IsMobilePhone(locale, options, validationOptions) { + return ValidateBy({ + name: IS_MOBILE_PHONE, + constraints: [locale, options], + validator: { + validate: function (value, args) { return isMobilePhone(value, args.constraints[0], args.constraints[1]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a phone number'; }, validationOptions), + }, + }, validationOptions); + } + + var isISO31661Alpha2$2 = {}; + + Object.defineProperty(isISO31661Alpha2$2, "__esModule", { + value: true + }); + var _default$2 = isISO31661Alpha2$2.default = isISO31661Alpha2$1; + isISO31661Alpha2$2.CountryCodes = void 0; + + var _assertString$2 = _interopRequireDefault$2(assertString.exports); + + function _interopRequireDefault$2(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + // from https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 + var validISO31661Alpha2CountriesCodes = new Set(['AD', 'AE', 'AF', 'AG', 'AI', 'AL', 'AM', 'AO', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AW', 'AX', 'AZ', 'BA', 'BB', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BL', 'BM', 'BN', 'BO', 'BQ', 'BR', 'BS', 'BT', 'BV', 'BW', 'BY', 'BZ', 'CA', 'CC', 'CD', 'CF', 'CG', 'CH', 'CI', 'CK', 'CL', 'CM', 'CN', 'CO', 'CR', 'CU', 'CV', 'CW', 'CX', 'CY', 'CZ', 'DE', 'DJ', 'DK', 'DM', 'DO', 'DZ', 'EC', 'EE', 'EG', 'EH', 'ER', 'ES', 'ET', 'FI', 'FJ', 'FK', 'FM', 'FO', 'FR', 'GA', 'GB', 'GD', 'GE', 'GF', 'GG', 'GH', 'GI', 'GL', 'GM', 'GN', 'GP', 'GQ', 'GR', 'GS', 'GT', 'GU', 'GW', 'GY', 'HK', 'HM', 'HN', 'HR', 'HT', 'HU', 'ID', 'IE', 'IL', 'IM', 'IN', 'IO', 'IQ', 'IR', 'IS', 'IT', 'JE', 'JM', 'JO', 'JP', 'KE', 'KG', 'KH', 'KI', 'KM', 'KN', 'KP', 'KR', 'KW', 'KY', 'KZ', 'LA', 'LB', 'LC', 'LI', 'LK', 'LR', 'LS', 'LT', 'LU', 'LV', 'LY', 'MA', 'MC', 'MD', 'ME', 'MF', 'MG', 'MH', 'MK', 'ML', 'MM', 'MN', 'MO', 'MP', 'MQ', 'MR', 'MS', 'MT', 'MU', 'MV', 'MW', 'MX', 'MY', 'MZ', 'NA', 'NC', 'NE', 'NF', 'NG', 'NI', 'NL', 'NO', 'NP', 'NR', 'NU', 'NZ', 'OM', 'PA', 'PE', 'PF', 'PG', 'PH', 'PK', 'PL', 'PM', 'PN', 'PR', 'PS', 'PT', 'PW', 'PY', 'QA', 'RE', 'RO', 'RS', 'RU', 'RW', 'SA', 'SB', 'SC', 'SD', 'SE', 'SG', 'SH', 'SI', 'SJ', 'SK', 'SL', 'SM', 'SN', 'SO', 'SR', 'SS', 'ST', 'SV', 'SX', 'SY', 'SZ', 'TC', 'TD', 'TF', 'TG', 'TH', 'TJ', 'TK', 'TL', 'TM', 'TN', 'TO', 'TR', 'TT', 'TV', 'TW', 'TZ', 'UA', 'UG', 'UM', 'US', 'UY', 'UZ', 'VA', 'VC', 'VE', 'VG', 'VI', 'VN', 'VU', 'WF', 'WS', 'YE', 'YT', 'ZA', 'ZM', 'ZW']); + + function isISO31661Alpha2$1(str) { + (0, _assertString$2.default)(str); + return validISO31661Alpha2CountriesCodes.has(str.toUpperCase()); + } + + var CountryCodes = validISO31661Alpha2CountriesCodes; + isISO31661Alpha2$2.CountryCodes = CountryCodes; + + var IS_ISO31661_ALPHA_2 = 'isISO31661Alpha2'; + /** + * 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. + */ + function isISO31661Alpha2(value) { + return typeof value === 'string' && _default$2(value); + } + /** + * 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. + */ + function IsISO31661Alpha2(validationOptions) { + return ValidateBy({ + name: IS_ISO31661_ALPHA_2, + validator: { + validate: function (value, args) { return isISO31661Alpha2(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid ISO31661 Alpha2 code'; }, validationOptions), + }, + }, validationOptions); + } + + var isISO31661Alpha3$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isISO31661Alpha3; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + // from https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3 + var validISO31661Alpha3CountriesCodes = new Set(['AFG', 'ALA', 'ALB', 'DZA', 'ASM', 'AND', 'AGO', 'AIA', 'ATA', 'ATG', 'ARG', 'ARM', 'ABW', 'AUS', 'AUT', 'AZE', 'BHS', 'BHR', 'BGD', 'BRB', 'BLR', 'BEL', 'BLZ', 'BEN', 'BMU', 'BTN', 'BOL', 'BES', 'BIH', 'BWA', 'BVT', 'BRA', 'IOT', 'BRN', 'BGR', 'BFA', 'BDI', 'KHM', 'CMR', 'CAN', 'CPV', 'CYM', 'CAF', 'TCD', 'CHL', 'CHN', 'CXR', 'CCK', 'COL', 'COM', 'COG', 'COD', 'COK', 'CRI', 'CIV', 'HRV', 'CUB', 'CUW', 'CYP', 'CZE', 'DNK', 'DJI', 'DMA', 'DOM', 'ECU', 'EGY', 'SLV', 'GNQ', 'ERI', 'EST', 'ETH', 'FLK', 'FRO', 'FJI', 'FIN', 'FRA', 'GUF', 'PYF', 'ATF', 'GAB', 'GMB', 'GEO', 'DEU', 'GHA', 'GIB', 'GRC', 'GRL', 'GRD', 'GLP', 'GUM', 'GTM', 'GGY', 'GIN', 'GNB', 'GUY', 'HTI', 'HMD', 'VAT', 'HND', 'HKG', 'HUN', 'ISL', 'IND', 'IDN', 'IRN', 'IRQ', 'IRL', 'IMN', 'ISR', 'ITA', 'JAM', 'JPN', 'JEY', 'JOR', 'KAZ', 'KEN', 'KIR', 'PRK', 'KOR', 'KWT', 'KGZ', 'LAO', 'LVA', 'LBN', 'LSO', 'LBR', 'LBY', 'LIE', 'LTU', 'LUX', 'MAC', 'MKD', 'MDG', 'MWI', 'MYS', 'MDV', 'MLI', 'MLT', 'MHL', 'MTQ', 'MRT', 'MUS', 'MYT', 'MEX', 'FSM', 'MDA', 'MCO', 'MNG', 'MNE', 'MSR', 'MAR', 'MOZ', 'MMR', 'NAM', 'NRU', 'NPL', 'NLD', 'NCL', 'NZL', 'NIC', 'NER', 'NGA', 'NIU', 'NFK', 'MNP', 'NOR', 'OMN', 'PAK', 'PLW', 'PSE', 'PAN', 'PNG', 'PRY', 'PER', 'PHL', 'PCN', 'POL', 'PRT', 'PRI', 'QAT', 'REU', 'ROU', 'RUS', 'RWA', 'BLM', 'SHN', 'KNA', 'LCA', 'MAF', 'SPM', 'VCT', 'WSM', 'SMR', 'STP', 'SAU', 'SEN', 'SRB', 'SYC', 'SLE', 'SGP', 'SXM', 'SVK', 'SVN', 'SLB', 'SOM', 'ZAF', 'SGS', 'SSD', 'ESP', 'LKA', 'SDN', 'SUR', 'SJM', 'SWZ', 'SWE', 'CHE', 'SYR', 'TWN', 'TJK', 'TZA', 'THA', 'TLS', 'TGO', 'TKL', 'TON', 'TTO', 'TUN', 'TUR', 'TKM', 'TCA', 'TUV', 'UGA', 'UKR', 'ARE', 'GBR', 'USA', 'UMI', 'URY', 'UZB', 'VUT', 'VEN', 'VNM', 'VGB', 'VIR', 'WLF', 'ESH', 'YEM', 'ZMB', 'ZWE']); + + function isISO31661Alpha3(str) { + (0, _assertString.default)(str); + return validISO31661Alpha3CountriesCodes.has(str.toUpperCase()); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isISO31661Alpha3$1, isISO31661Alpha3$1.exports)); + + var isISO31661Alpha3Validator = /*@__PURE__*/getDefaultExportFromCjs(isISO31661Alpha3$1.exports); + + var IS_ISO31661_ALPHA_3 = 'isISO31661Alpha3'; + /** + * 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. + */ + function isISO31661Alpha3(value) { + return typeof value === 'string' && isISO31661Alpha3Validator(value); + } + /** + * 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. + */ + function IsISO31661Alpha3(validationOptions) { + return ValidateBy({ + name: IS_ISO31661_ALPHA_3, + validator: { + validate: function (value, args) { return isISO31661Alpha3(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid ISO31661 Alpha3 code'; }, validationOptions), + }, + }, validationOptions); + } + + var isMongoId$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isMongoId; + + var _assertString = _interopRequireDefault(assertString.exports); + + var _isHexadecimal = _interopRequireDefault(isHexadecimal$1.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function isMongoId(str) { + (0, _assertString.default)(str); + return (0, _isHexadecimal.default)(str) && str.length === 24; + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isMongoId$1, isMongoId$1.exports)); + + var isMongoIdValidator = /*@__PURE__*/getDefaultExportFromCjs(isMongoId$1.exports); + + var IS_MONGO_ID = 'isMongoId'; + /** + * Checks if the string is a valid hex-encoded representation of a MongoDB ObjectId. + * If given value is not a string, then it returns false. + */ + function isMongoId(value) { + return typeof value === 'string' && isMongoIdValidator(value); + } + /** + * Checks if the string is a valid hex-encoded representation of a MongoDB ObjectId. + * If given value is not a string, then it returns false. + */ + function IsMongoId(validationOptions) { + return ValidateBy({ + name: IS_MONGO_ID, + validator: { + validate: function (value, args) { return isMongoId(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a mongodb id'; }, validationOptions), + }, + }, validationOptions); + } + + var isMultibyte$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isMultibyte; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + /* eslint-disable no-control-regex */ + var multibyte = /[^\x00-\x7F]/; + /* eslint-enable no-control-regex */ + + function isMultibyte(str) { + (0, _assertString.default)(str); + return multibyte.test(str); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isMultibyte$1, isMultibyte$1.exports)); + + var isMultibyteValidator = /*@__PURE__*/getDefaultExportFromCjs(isMultibyte$1.exports); + + var IS_MULTIBYTE = 'isMultibyte'; + /** + * Checks if the string contains one or more multibyte chars. + * If given value is not a string, then it returns false. + */ + function isMultibyte(value) { + return typeof value === 'string' && isMultibyteValidator(value); + } + /** + * Checks if the string contains one or more multibyte chars. + * If given value is not a string, then it returns false. + */ + function IsMultibyte(validationOptions) { + return ValidateBy({ + name: IS_MULTIBYTE, + validator: { + validate: function (value, args) { return isMultibyte(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain one or more multibyte chars'; }, validationOptions), + }, + }, validationOptions); + } + + var isSurrogatePair$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isSurrogatePair; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var surrogatePair = /[\uD800-\uDBFF][\uDC00-\uDFFF]/; + + function isSurrogatePair(str) { + (0, _assertString.default)(str); + return surrogatePair.test(str); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isSurrogatePair$1, isSurrogatePair$1.exports)); + + var isSurrogatePairValidator = /*@__PURE__*/getDefaultExportFromCjs(isSurrogatePair$1.exports); + + var IS_SURROGATE_PAIR = 'isSurrogatePair'; + /** + * Checks if the string contains any surrogate pairs chars. + * If given value is not a string, then it returns false. + */ + function isSurrogatePair(value) { + return typeof value === 'string' && isSurrogatePairValidator(value); + } + /** + * Checks if the string contains any surrogate pairs chars. + * If given value is not a string, then it returns false. + */ + function IsSurrogatePair(validationOptions) { + return ValidateBy({ + name: IS_SURROGATE_PAIR, + validator: { + validate: function (value, args) { return isSurrogatePair(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain any surrogate pairs chars'; }, validationOptions), + }, + }, validationOptions); + } + + var isURL$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isURL; + + var _assertString = _interopRequireDefault(assertString.exports); + + var _isFQDN = _interopRequireDefault(isFQDN$1.exports); + + var _isIP = _interopRequireDefault(isIP$1.exports); + + var _merge = _interopRequireDefault(merge.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + + function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + + function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + + function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + + function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + + function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + + /* + options for isURL method + + require_protocol - if set as true isURL will return false if protocol is not present in the URL + require_valid_protocol - isURL will check if the URL's protocol is present in the protocols option + protocols - valid protocols can be modified with this option + require_host - if set as false isURL will not check if host is present in the URL + require_port - if set as true isURL will check if port is present in the URL + allow_protocol_relative_urls - if set as true protocol relative URLs will be allowed + validate_length - if set as false isURL will skip string length validation (IE maximum is 2083) + + */ + var default_url_options = { + protocols: ['http', 'https', 'ftp'], + require_tld: true, + require_protocol: false, + require_host: true, + require_port: false, + require_valid_protocol: true, + allow_underscores: false, + allow_trailing_dot: false, + allow_protocol_relative_urls: false, + allow_fragments: true, + allow_query_components: true, + validate_length: true + }; + var wrapped_ipv6 = /^\[([^\]]+)\](?::([0-9]+))?$/; + + function isRegExp(obj) { + return Object.prototype.toString.call(obj) === '[object RegExp]'; + } + + function checkHost(host, matches) { + for (var i = 0; i < matches.length; i++) { + var match = matches[i]; + + if (host === match || isRegExp(match) && match.test(host)) { + return true; + } + } + + return false; + } + + function isURL(url, options) { + (0, _assertString.default)(url); + + if (!url || /[\s<>]/.test(url)) { + return false; + } + + if (url.indexOf('mailto:') === 0) { + return false; + } + + options = (0, _merge.default)(options, default_url_options); + + if (options.validate_length && url.length >= 2083) { + return false; + } + + if (!options.allow_fragments && url.includes('#')) { + return false; + } + + if (!options.allow_query_components && (url.includes('?') || url.includes('&'))) { + return false; + } + + var protocol, auth, host, hostname, port, port_str, split, ipv6; + split = url.split('#'); + url = split.shift(); + split = url.split('?'); + url = split.shift(); + split = url.split('://'); + + if (split.length > 1) { + protocol = split.shift().toLowerCase(); + + if (options.require_valid_protocol && options.protocols.indexOf(protocol) === -1) { + return false; + } + } else if (options.require_protocol) { + return false; + } else if (url.substr(0, 2) === '//') { + if (!options.allow_protocol_relative_urls) { + return false; + } + + split[0] = url.substr(2); + } + + url = split.join('://'); + + if (url === '') { + return false; + } + + split = url.split('/'); + url = split.shift(); + + if (url === '' && !options.require_host) { + return true; + } + + split = url.split('@'); + + if (split.length > 1) { + if (options.disallow_auth) { + return false; + } + + if (split[0] === '') { + return false; + } + + auth = split.shift(); + + if (auth.indexOf(':') >= 0 && auth.split(':').length > 2) { + return false; + } + + var _auth$split = auth.split(':'), + _auth$split2 = _slicedToArray(_auth$split, 2), + user = _auth$split2[0], + password = _auth$split2[1]; + + if (user === '' && password === '') { + return false; + } + } + + hostname = split.join('@'); + port_str = null; + ipv6 = null; + var ipv6_match = hostname.match(wrapped_ipv6); + + if (ipv6_match) { + host = ''; + ipv6 = ipv6_match[1]; + port_str = ipv6_match[2] || null; + } else { + split = hostname.split(':'); + host = split.shift(); + + if (split.length) { + port_str = split.join(':'); + } + } + + if (port_str !== null && port_str.length > 0) { + port = parseInt(port_str, 10); + + if (!/^[0-9]+$/.test(port_str) || port <= 0 || port > 65535) { + return false; + } + } else if (options.require_port) { + return false; + } + + if (options.host_whitelist) { + return checkHost(host, options.host_whitelist); + } + + if (!(0, _isIP.default)(host) && !(0, _isFQDN.default)(host, options) && (!ipv6 || !(0, _isIP.default)(ipv6, 6))) { + return false; + } + + host = host || ipv6; + + if (options.host_blacklist && checkHost(host, options.host_blacklist)) { + return false; + } + + return true; + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isURL$1, isURL$1.exports)); + + var isUrlValidator = /*@__PURE__*/getDefaultExportFromCjs(isURL$1.exports); + + var IS_URL = 'isUrl'; + /** + * Checks if the string is an url. + * If given value is not a string, then it returns false. + */ + function isURL(value, options) { + return typeof value === 'string' && isUrlValidator(value, options); + } + /** + * Checks if the string is an url. + * If given value is not a string, then it returns false. + */ + function IsUrl(options, validationOptions) { + return ValidateBy({ + name: IS_URL, + constraints: [options], + validator: { + validate: function (value, args) { return isURL(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an URL address'; }, validationOptions), + }, + }, validationOptions); + } + + var isUUID$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isUUID; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var uuid = { + 1: /^[0-9A-F]{8}-[0-9A-F]{4}-1[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i, + 2: /^[0-9A-F]{8}-[0-9A-F]{4}-2[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i, + 3: /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i, + 4: /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i, + 5: /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i, + all: /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i + }; + + function isUUID(str, version) { + (0, _assertString.default)(str); + var pattern = uuid[![undefined, null].includes(version) ? version : 'all']; + return !!pattern && pattern.test(str); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isUUID$1, isUUID$1.exports)); + + var isUuidValidator = /*@__PURE__*/getDefaultExportFromCjs(isUUID$1.exports); + + var IS_UUID = 'isUuid'; + /** + * Checks if the string is a UUID (version 3, 4 or 5). + * If given value is not a string, then it returns false. + */ + function isUUID(value, version) { + return typeof value === 'string' && isUuidValidator(value, version); + } + /** + * Checks if the string is a UUID (version 3, 4 or 5). + * If given value is not a string, then it returns false. + */ + function IsUUID(version, validationOptions) { + return ValidateBy({ + name: IS_UUID, + constraints: [version], + validator: { + validate: function (value, args) { return isUUID(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a UUID'; }, validationOptions), + }, + }, validationOptions); + } + + var IS_FIREBASE_PUSH_ID = 'IsFirebasePushId'; + /** + * Checks if the string is a Firebase Push Id + * If given value is not a Firebase Push Id, it returns false + */ + function isFirebasePushId(value) { + var webSafeRegex = /^[a-zA-Z0-9_-]*$/; + return typeof value === 'string' && value.length === 20 && webSafeRegex.test(value); + } + /** + * Checks if the string is a Firebase Push Id + * If given value is not a Firebase Push Id, it returns false + */ + function IsFirebasePushId(validationOptions) { + return ValidateBy({ + name: IS_FIREBASE_PUSH_ID, + validator: { + validate: function (value, args) { return isFirebasePushId(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a Firebase Push Id'; }, validationOptions), + }, + }, validationOptions); + } + + var isUppercase$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isUppercase; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function isUppercase(str) { + (0, _assertString.default)(str); + return str === str.toUpperCase(); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isUppercase$1, isUppercase$1.exports)); + + var isUppercaseValidator = /*@__PURE__*/getDefaultExportFromCjs(isUppercase$1.exports); + + var IS_UPPERCASE = 'isUppercase'; + /** + * Checks if the string is uppercase. + * If given value is not a string, then it returns false. + */ + function isUppercase(value) { + return typeof value === 'string' && isUppercaseValidator(value); + } + /** + * Checks if the string is uppercase. + * If given value is not a string, then it returns false. + */ + function IsUppercase(validationOptions) { + return ValidateBy({ + name: IS_UPPERCASE, + validator: { + validate: function (value, args) { return isUppercase(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be uppercase'; }, validationOptions), + }, + }, validationOptions); + } + + var isLength = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isLength; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + + /* eslint-disable prefer-rest-params */ + function isLength(str, options) { + (0, _assertString.default)(str); + var min; + var max; + + if (_typeof(options) === 'object') { + min = options.min || 0; + max = options.max; + } else { + // backwards compatibility: isLength(str, min [, max]) + min = arguments[1] || 0; + max = arguments[2]; + } + + var surrogatePairs = str.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g) || []; + var len = str.length - surrogatePairs.length; + return len >= min && (typeof max === 'undefined' || len <= max); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isLength, isLength.exports)); + + var isLengthValidator = /*@__PURE__*/getDefaultExportFromCjs(isLength.exports); + + var IS_LENGTH = 'isLength'; + /** + * Checks if the string's length falls in a range. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ + function length(value, min, max) { + return typeof value === 'string' && isLengthValidator(value, { min: min, max: max }); + } + /** + * Checks if the string's length falls in a range. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ + function Length(min, max, validationOptions) { + return ValidateBy({ + name: IS_LENGTH, + constraints: [min, max], + validator: { + validate: function (value, args) { return length(value, args.constraints[0], args.constraints[1]); }, + defaultMessage: buildMessage(function (eachPrefix, args) { + var isMinLength = args.constraints[0] !== null && args.constraints[0] !== undefined; + var isMaxLength = args.constraints[1] !== null && args.constraints[1] !== undefined; + if (isMinLength && (!args.value || args.value.length < args.constraints[0])) { + return eachPrefix + '$property must be longer than or equal to $constraint1 characters'; + } + else if (isMaxLength && args.value.length > args.constraints[1]) { + return eachPrefix + '$property must be shorter than or equal to $constraint2 characters'; + } + return (eachPrefix + + '$property must be longer than or equal to $constraint1 and shorter than or equal to $constraint2 characters'); + }, validationOptions), + }, + }, validationOptions); + } + + var MAX_LENGTH = 'maxLength'; + /** + * Checks if the string's length is not more than given number. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ + function maxLength(value, max) { + return typeof value === 'string' && isLengthValidator(value, { min: 0, max: max }); + } + /** + * Checks if the string's length is not more than given number. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ + function MaxLength(max, validationOptions) { + return ValidateBy({ + name: MAX_LENGTH, + constraints: [max], + validator: { + validate: function (value, args) { return maxLength(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be shorter than or equal to $constraint1 characters'; }, validationOptions), + }, + }, validationOptions); + } + + var MIN_LENGTH = 'minLength'; + /** + * Checks if the string's length is not less than given number. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ + function minLength(value, min) { + return typeof value === 'string' && isLengthValidator(value, { min: min }); + } + /** + * Checks if the string's length is not less than given number. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ + function MinLength(min, validationOptions) { + return ValidateBy({ + name: MIN_LENGTH, + constraints: [min], + validator: { + validate: function (value, args) { return minLength(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be longer than or equal to $constraint1 characters'; }, validationOptions), + }, + }, validationOptions); + } + + var matches$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = matches; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function matches(str, pattern, modifiers) { + (0, _assertString.default)(str); + + if (Object.prototype.toString.call(pattern) !== '[object RegExp]') { + pattern = new RegExp(pattern, modifiers); + } + + return pattern.test(str); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(matches$1, matches$1.exports)); + + var matchesValidator = /*@__PURE__*/getDefaultExportFromCjs(matches$1.exports); + + var MATCHES = 'matches'; + function matches(value, pattern, modifiers) { + return typeof value === 'string' && matchesValidator(value, pattern, modifiers); + } + function Matches(pattern, modifiersOrAnnotationOptions, validationOptions) { + var modifiers; + if (modifiersOrAnnotationOptions && modifiersOrAnnotationOptions instanceof Object && !validationOptions) { + validationOptions = modifiersOrAnnotationOptions; + } + else { + modifiers = modifiersOrAnnotationOptions; + } + return ValidateBy({ + name: MATCHES, + constraints: [pattern, modifiers], + validator: { + validate: function (value, args) { return matches(value, args.constraints[0], args.constraints[1]); }, + defaultMessage: buildMessage(function (eachPrefix, args) { return eachPrefix + '$property must match $constraint1 regular expression'; }, validationOptions), + }, + }, validationOptions); + } + + // This file is a workaround for a bug in web browsers' "native" + // ES6 importing system which is uncapable of importing "*.json" files. + // https://github.com/catamphetamine/libphonenumber-js/issues/239 + var metadata = {"version":4,"country_calling_codes":{"1":["US","AG","AI","AS","BB","BM","BS","CA","DM","DO","GD","GU","JM","KN","KY","LC","MP","MS","PR","SX","TC","TT","VC","VG","VI"],"7":["RU","KZ"],"20":["EG"],"27":["ZA"],"30":["GR"],"31":["NL"],"32":["BE"],"33":["FR"],"34":["ES"],"36":["HU"],"39":["IT","VA"],"40":["RO"],"41":["CH"],"43":["AT"],"44":["GB","GG","IM","JE"],"45":["DK"],"46":["SE"],"47":["NO","SJ"],"48":["PL"],"49":["DE"],"51":["PE"],"52":["MX"],"53":["CU"],"54":["AR"],"55":["BR"],"56":["CL"],"57":["CO"],"58":["VE"],"60":["MY"],"61":["AU","CC","CX"],"62":["ID"],"63":["PH"],"64":["NZ"],"65":["SG"],"66":["TH"],"81":["JP"],"82":["KR"],"84":["VN"],"86":["CN"],"90":["TR"],"91":["IN"],"92":["PK"],"93":["AF"],"94":["LK"],"95":["MM"],"98":["IR"],"211":["SS"],"212":["MA","EH"],"213":["DZ"],"216":["TN"],"218":["LY"],"220":["GM"],"221":["SN"],"222":["MR"],"223":["ML"],"224":["GN"],"225":["CI"],"226":["BF"],"227":["NE"],"228":["TG"],"229":["BJ"],"230":["MU"],"231":["LR"],"232":["SL"],"233":["GH"],"234":["NG"],"235":["TD"],"236":["CF"],"237":["CM"],"238":["CV"],"239":["ST"],"240":["GQ"],"241":["GA"],"242":["CG"],"243":["CD"],"244":["AO"],"245":["GW"],"246":["IO"],"247":["AC"],"248":["SC"],"249":["SD"],"250":["RW"],"251":["ET"],"252":["SO"],"253":["DJ"],"254":["KE"],"255":["TZ"],"256":["UG"],"257":["BI"],"258":["MZ"],"260":["ZM"],"261":["MG"],"262":["RE","YT"],"263":["ZW"],"264":["NA"],"265":["MW"],"266":["LS"],"267":["BW"],"268":["SZ"],"269":["KM"],"290":["SH","TA"],"291":["ER"],"297":["AW"],"298":["FO"],"299":["GL"],"350":["GI"],"351":["PT"],"352":["LU"],"353":["IE"],"354":["IS"],"355":["AL"],"356":["MT"],"357":["CY"],"358":["FI","AX"],"359":["BG"],"370":["LT"],"371":["LV"],"372":["EE"],"373":["MD"],"374":["AM"],"375":["BY"],"376":["AD"],"377":["MC"],"378":["SM"],"380":["UA"],"381":["RS"],"382":["ME"],"383":["XK"],"385":["HR"],"386":["SI"],"387":["BA"],"389":["MK"],"420":["CZ"],"421":["SK"],"423":["LI"],"500":["FK"],"501":["BZ"],"502":["GT"],"503":["SV"],"504":["HN"],"505":["NI"],"506":["CR"],"507":["PA"],"508":["PM"],"509":["HT"],"590":["GP","BL","MF"],"591":["BO"],"592":["GY"],"593":["EC"],"594":["GF"],"595":["PY"],"596":["MQ"],"597":["SR"],"598":["UY"],"599":["CW","BQ"],"670":["TL"],"672":["NF"],"673":["BN"],"674":["NR"],"675":["PG"],"676":["TO"],"677":["SB"],"678":["VU"],"679":["FJ"],"680":["PW"],"681":["WF"],"682":["CK"],"683":["NU"],"685":["WS"],"686":["KI"],"687":["NC"],"688":["TV"],"689":["PF"],"690":["TK"],"691":["FM"],"692":["MH"],"850":["KP"],"852":["HK"],"853":["MO"],"855":["KH"],"856":["LA"],"880":["BD"],"886":["TW"],"960":["MV"],"961":["LB"],"962":["JO"],"963":["SY"],"964":["IQ"],"965":["KW"],"966":["SA"],"967":["YE"],"968":["OM"],"970":["PS"],"971":["AE"],"972":["IL"],"973":["BH"],"974":["QA"],"975":["BT"],"976":["MN"],"977":["NP"],"992":["TJ"],"993":["TM"],"994":["AZ"],"995":["GE"],"996":["KG"],"998":["UZ"]},"countries":{"AC":["247","00","(?:[01589]\\d|[46])\\d{4}",[5,6]],"AD":["376","00","(?:1|6\\d)\\d{7}|[135-9]\\d{5}",[6,8,9],[["(\\d{3})(\\d{3})","$1 $2",["[135-9]"]],["(\\d{4})(\\d{4})","$1 $2",["1"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]]],"AE":["971","00","(?:[4-7]\\d|9[0-689])\\d{7}|800\\d{2,9}|[2-4679]\\d{7}",[5,6,7,8,9,10,11,12],[["(\\d{3})(\\d{2,9})","$1 $2",["60|8"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[236]|[479][2-8]"],"0$1"],["(\\d{3})(\\d)(\\d{5})","$1 $2 $3",["[479]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"]],"0"],"AF":["93","00","[2-7]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"]],"0"],"AG":["1","011","(?:268|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([457]\\d{6})$","268$1",0,"268"],"AI":["1","011","(?:264|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2457]\\d{6})$","264$1",0,"264"],"AL":["355","00","(?:700\\d\\d|900)\\d{3}|8\\d{5,7}|(?:[2-5]|6\\d)\\d{7}",[6,7,8,9],[["(\\d{3})(\\d{3,4})","$1 $2",["80|9"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["4[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2358][2-5]|4"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["[23578]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["6"],"0$1"]],"0"],"AM":["374","00","(?:[1-489]\\d|55|60|77)\\d{6}",[8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[89]0"],"0 $1"],["(\\d{3})(\\d{5})","$1 $2",["2|3[12]"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["1|47"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[3-9]"],"0$1"]],"0"],"AO":["244","00","[29]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[29]"]]]],"AR":["54","00","(?:11|[89]\\d\\d)\\d{8}|[2368]\\d{9}",[10,11],[["(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])","2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["1"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2-$3",["[23]"],"0$1",1],["(\\d)(\\d{4})(\\d{2})(\\d{4})","$2 15-$3-$4",["9(?:2[2-469]|3[3-578])","9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))","9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",0,"$1 $2 $3-$4"],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 15-$3-$4",["91"],"0$1",0,"$1 $2 $3-$4"],["(\\d{3})(\\d{3})(\\d{5})","$1-$2-$3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 15-$3-$4",["9"],"0$1",0,"$1 $2 $3-$4"]],"0",0,"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?","9$1"],"AS":["1","011","(?:[58]\\d\\d|684|900)\\d{7}",[10],0,"1",0,"1|([267]\\d{6})$","684$1",0,"684"],"AT":["43","00","1\\d{3,12}|2\\d{6,12}|43(?:(?:0\\d|5[02-9])\\d{3,9}|2\\d{4,5}|[3467]\\d{4}|8\\d{4,6}|9\\d{4,7})|5\\d{4,12}|8\\d{7,12}|9\\d{8,12}|(?:[367]\\d|4[0-24-9])\\d{4,11}",[4,5,6,7,8,9,10,11,12,13],[["(\\d)(\\d{3,12})","$1 $2",["1(?:11|[2-9])"],"0$1"],["(\\d{3})(\\d{2})","$1 $2",["517"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["5[079]"],"0$1"],["(\\d{3})(\\d{3,10})","$1 $2",["(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]"],"0$1"],["(\\d{4})(\\d{3,9})","$1 $2",["[2-467]|5[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["5"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,7})","$1 $2 $3",["5"],"0$1"]],"0"],"AU":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{7}(?:\\d(?:\\d{2})?)?|8[0-24-9]\\d{7})|[2-478]\\d{8}|1\\d{4,7}",[5,6,7,8,9,10,12],[["(\\d{2})(\\d{3,4})","$1 $2",["16"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,4})","$1 $2 $3",["16"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["14|4"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[2378]"],"(0$1)"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:30|[89])"]]],"0",0,"0|(183[12])",0,0,0,[["(?:(?:2(?:[0-26-9]\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\d|2[0-8]))\\d{3}|8(?:51(?:0(?:0[03-9]|[12479]\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\d|7[89]|9[0-4]))|(?:6[0-8]|[78]\\d)\\d{3}|9(?:[02-9]\\d{3}|1(?:(?:[0-58]\\d|6[0135-9])\\d|7(?:0[0-24-9]|[1-9]\\d)|9(?:[0-46-9]\\d|5[0-79])))))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,["163\\d{2,6}",[5,6,7,8,9]],["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],"AW":["297","00","(?:[25-79]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[25-9]"]]]],"AX":["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","2\\d{4,9}|35\\d{4,5}|(?:60\\d\\d|800)\\d{4,6}|7\\d{5,11}|(?:[14]\\d|3[0-46-9]|50)\\d{4,8}",[5,6,7,8,9,10,11,12],0,"0",0,0,0,0,"18",0,"00"],"AZ":["994","00","365\\d{6}|(?:[124579]\\d|60|88)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[28]|2|365|46","1[28]|2|365[45]|46","1[28]|2|365(?:4|5[02])|46"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[13-9]"],"0$1"]],"0"],"BA":["387","00","6\\d{8}|(?:[35689]\\d|49|70)\\d{6}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["6[1-3]|[7-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2-$3",["[3-5]|6[56]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["6"],"0$1"]],"0"],"BB":["1","011","(?:246|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","246$1",0,"246"],"BD":["880","00","[1-469]\\d{9}|8[0-79]\\d{7,8}|[2-79]\\d{8}|[2-9]\\d{7}|[3-9]\\d{6}|[57-9]\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{4,6})","$1-$2",["31[5-8]|[459]1"],"0$1"],["(\\d{3})(\\d{3,7})","$1-$2",["3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:28|4[14]|5)|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]"],"0$1"],["(\\d{4})(\\d{3,6})","$1-$2",["[13-9]|22"],"0$1"],["(\\d)(\\d{7,8})","$1-$2",["2"],"0$1"]],"0"],"BE":["32","00","4\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:80|9)0"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[239]|4[23]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[15-8]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4"],"0$1"]],"0"],"BF":["226","00","[025-7]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[025-7]"]]]],"BG":["359","00","[2-7]\\d{6,7}|[89]\\d{6,8}|2\\d{5}",[6,7,8,9],[["(\\d)(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["43[1-6]|70[1-9]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:70|8)0"],"0$1"],["(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3",["43[1-7]|7"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[48]|9[08]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"]],"0"],"BH":["973","00","[136-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[13679]|8[047]"]]]],"BI":["257","00","(?:[267]\\d|31)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2367]"]]]],"BJ":["229","00","[25689]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[25689]"]]]],"BL":["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[["590(?:2[7-9]|5[12]|87)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],"BM":["1","011","(?:441|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","441$1",0,"441"],"BN":["673","00","[2-578]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-578]"]]]],"BO":["591","00(?:1\\d)?","(?:[2-467]\\d\\d|8001)\\d{5}",[8,9],[["(\\d)(\\d{7})","$1 $2",["[23]|4[46]"]],["(\\d{8})","$1",["[67]"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["8"]]],"0",0,"0(1\\d)?"],"BQ":["599","00","(?:[34]1|7\\d)\\d{5}",[7],0,0,0,0,0,0,"[347]"],"BR":["55","00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)","(?:[1-46-9]\\d\\d|5(?:[0-46-9]\\d|5[0-24679]))\\d{8}|[1-9]\\d{9}|[3589]\\d{8}|[34]\\d{7}",[8,9,10,11],[["(\\d{4})(\\d{4})","$1-$2",["300|4(?:0[02]|37)","4(?:02|37)0|[34]00"]],["(\\d{3})(\\d{2,3})(\\d{4})","$1 $2 $3",["(?:[358]|90)0"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]"],"($1)"],["(\\d{2})(\\d{5})(\\d{4})","$1 $2-$3",["[16][1-9]|[2-57-9]"],"($1)"]],"0",0,"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\d{10,11}))?","$2"],"BS":["1","011","(?:242|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([3-8]\\d{6})$","242$1",0,"242"],"BT":["975","00","[17]\\d{7}|[2-8]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[2-68]|7[246]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[67]|7"]]]],"BW":["267","00","(?:0800|(?:[37]|800)\\d)\\d{6}|(?:[2-6]\\d|90)\\d{5}",[7,8,10],[["(\\d{2})(\\d{5})","$1 $2",["90"]],["(\\d{3})(\\d{4})","$1 $2",["[24-6]|3[15-79]"]],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37]"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["8"]]]],"BY":["375","810","(?:[12]\\d|33|44|902)\\d{7}|8(?:0[0-79]\\d{5,7}|[1-7]\\d{9})|8(?:1[0-489]|[5-79]\\d)\\d{7}|8[1-79]\\d{6,7}|8[0-79]\\d{5}|8\\d{5}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3})","$1 $2",["800"],"8 $1"],["(\\d{3})(\\d{2})(\\d{2,4})","$1 $2 $3",["800"],"8 $1"],["(\\d{4})(\\d{2})(\\d{3})","$1 $2-$3",["1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])","1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])"],"8 0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["1(?:[56]|7[467])|2[1-3]"],"8 0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-4]"],"8 0$1"],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["[89]"],"8 $1"]],"8",0,"0|80?",0,0,0,0,"8~10"],"BZ":["501","00","(?:0800\\d|[2-8])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1-$2",["[2-8]"]],["(\\d)(\\d{3})(\\d{4})(\\d{3})","$1-$2-$3-$4",["0"]]]],"CA":["1","011","(?:[2-8]\\d|90)\\d{8}",[10],0,"1",0,0,0,0,0,[["(?:2(?:04|[23]6|[48]9|50)|3(?:06|43|6[578])|4(?:03|1[68]|3[178]|50|74)|5(?:06|1[49]|48|79|8[17])|6(?:04|13|39|47|72)|7(?:0[59]|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\d{6}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|(?:5(?:00|2[12]|33|44|66|77|88)|622)[2-9]\\d{6}"],0,0,0,["600[2-9]\\d{6}"]]],"CC":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[["8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\d|70[23]|959))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,0,["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],"CD":["243","00","[189]\\d{8}|[1-68]\\d{6}",[7,9],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[1-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]"],"0$1"]],"0"],"CF":["236","00","(?:[27]\\d{3}|8776)\\d{4}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[278]"]]]],"CG":["242","00","(?:0\\d\\d|222|800)\\d{6}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["8"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[02]"]]]],"CH":["41","00","8\\d{11}|[2-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8[047]|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-79]|81"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["8"],"0$1"]],"0"],"CI":["225","00","[02]\\d{9}",[10],[["(\\d{2})(\\d{2})(\\d)(\\d{5})","$1 $2 $3 $4",["2"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3 $4",["0"]]]],"CK":["682","00","[2-578]\\d{4}",[5],[["(\\d{2})(\\d{3})","$1 $2",["[2-578]"]]]],"CL":["56","(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0","12300\\d{6}|6\\d{9,10}|[2-9]\\d{8}",[9,10,11],[["(\\d{5})(\\d{4})","$1 $2",["219","2196"],"($1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["44"]],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2[1-3]"],"($1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["9[2-9]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])"],"($1)"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["60|8"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{3})(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3 $4",["60"]]]],"CM":["237","00","[26]\\d{8}|88\\d{6,7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["88"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[26]|88"]]]],"CN":["86","00|1(?:[12]\\d|79)\\d\\d00","1[127]\\d{8,9}|2\\d{9}(?:\\d{2})?|[12]\\d{6,7}|86\\d{6}|(?:1[03-689]\\d|6)\\d{7,9}|(?:[3-579]\\d|8[0-57-9])\\d{6,9}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5,6})","$1 $2",["(?:10|2[0-57-9])[19]","(?:10|2[0-57-9])(?:10|9[56])","(?:10|2[0-57-9])(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{5,6})","$1 $2",["3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]","(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))[19]","85[23](?:10|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:10|9[56])","85[23](?:100|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["(?:4|80)0"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["10|2(?:[02-57-9]|1[1-9])","10|2(?:[02-57-9]|1[1-9])","10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]"],"0$1",1],["(\\d{3})(\\d{7,8})","$1 $2",["9"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["80"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[3-578]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["1[3-9]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3 $4",["[12]"],"0$1",1]],"0",0,"0|(1(?:[12]\\d|79)\\d\\d)",0,0,0,0,"00"],"CO":["57","00(?:4(?:[14]4|56)|[579])","(?:(?:1\\d|[36])\\d{3}|9101)\\d{6}|[124-8]\\d{7}",[8,10,11],[["(\\d)(\\d{7})","$1 $2",["[146][2-9]|[2578]"],"($1)"],["(\\d{3})(\\d{7})","$1 $2",["6"],"($1)"],["(\\d{3})(\\d{7})","$1 $2",["[39]"]],["(\\d)(\\d{3})(\\d{7})","$1-$2-$3",["1"],"0$1",0,"$1 $2 $3"]],"0",0,"0([3579]|4(?:[14]4|56))?"],"CR":["506","00","(?:8\\d|90)\\d{8}|(?:[24-8]\\d{3}|3005)\\d{4}",[8,10],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[3-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[89]"]]],0,0,"(19(?:0[0-2468]|1[09]|20|66|77|99))"],"CU":["53","119","[27]\\d{6,7}|[34]\\d{5,7}|(?:5|8\\d\\d)\\d{7}",[6,7,8,10],[["(\\d{2})(\\d{4,6})","$1 $2",["2[1-4]|[34]"],"(0$1)"],["(\\d)(\\d{6,7})","$1 $2",["7"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["5"],"0$1"],["(\\d{3})(\\d{7})","$1 $2",["8"],"0$1"]],"0"],"CV":["238","0","(?:[2-59]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[2-589]"]]]],"CW":["599","00","(?:[34]1|60|(?:7|9\\d)\\d)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[3467]"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["9[4-8]"]]],0,0,0,0,0,"[69]"],"CX":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[["8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\d|7(?:0[01]|1[0-2])|958))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,0,["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],"CY":["357","00","(?:[279]\\d|[58]0)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[257-9]"]]]],"CZ":["420","00","(?:[2-578]\\d|60)\\d{7}|9\\d{8,11}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]|9[015-7]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3 $4",["96"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]]],"DE":["49","00","[2579]\\d{5,14}|49(?:[34]0|69|8\\d)\\d\\d?|49(?:37|49|60|7[089]|9\\d)\\d{1,3}|49(?:1\\d|2[02-9]|3[2-689]|7[1-7])\\d{1,8}|(?:1|[368]\\d|4[0-8])\\d{3,13}|49(?:[05]\\d|[23]1|[46][1-8])\\d{1,9}",[4,5,6,7,8,9,10,11,12,13,14,15],[["(\\d{2})(\\d{3,13})","$1 $2",["3[02]|40|[68]9"],"0$1"],["(\\d{3})(\\d{3,12})","$1 $2",["2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1","2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1"],"0$1"],["(\\d{4})(\\d{2,11})","$1 $2",["[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]","[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["138"],"0$1"],["(\\d{5})(\\d{2,10})","$1 $2",["3"],"0$1"],["(\\d{3})(\\d{5,11})","$1 $2",["181"],"0$1"],["(\\d{3})(\\d)(\\d{4,10})","$1 $2 $3",["1(?:3|80)|9"],"0$1"],["(\\d{3})(\\d{7,8})","$1 $2",["1[67]"],"0$1"],["(\\d{3})(\\d{7,12})","$1 $2",["8"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["185","1850","18500"],"0$1"],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["18[68]"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["15[0568]"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["15[1279]"],"0$1"],["(\\d{3})(\\d{8})","$1 $2",["18"],"0$1"],["(\\d{3})(\\d{2})(\\d{7,8})","$1 $2 $3",["1(?:6[023]|7)"],"0$1"],["(\\d{4})(\\d{2})(\\d{7})","$1 $2 $3",["15[279]"],"0$1"],["(\\d{3})(\\d{2})(\\d{8})","$1 $2 $3",["15"],"0$1"]],"0"],"DJ":["253","00","(?:2\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[27]"]]]],"DK":["45","00","[2-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-9]"]]]],"DM":["1","011","(?:[58]\\d\\d|767|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","767$1",0,"767"],"DO":["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,0,0,0,"8001|8[024]9"],"DZ":["213","00","(?:[1-4]|[5-79]\\d|80)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["9"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-8]"],"0$1"]],"0"],"EC":["593","00","1\\d{9,10}|(?:[2-7]|9\\d)\\d{7}",[8,9,10,11],[["(\\d)(\\d{3})(\\d{4})","$1 $2-$3",["[2-7]"],"(0$1)",0,"$1-$2-$3"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{3})(\\d{3,4})","$1 $2 $3",["1"]]],"0"],"EE":["372","00","8\\d{9}|[4578]\\d{7}|(?:[3-8]\\d|90)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88","[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88"]],["(\\d{4})(\\d{3,4})","$1 $2",["[45]|8(?:00|[1-49])","[45]|8(?:00[1-9]|[1-49])"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]]],"EG":["20","00","[189]\\d{8,9}|[24-6]\\d{8}|[135]\\d{7}",[8,9,10],[["(\\d)(\\d{7,8})","$1 $2",["[23]"],"0$1"],["(\\d{2})(\\d{6,7})","$1 $2",["1[35]|[4-6]|8[2468]|9[235-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[189]"],"0$1"]],"0"],"EH":["212","00","[5-8]\\d{8}",[9],0,"0",0,0,0,0,"528[89]"],"ER":["291","00","[178]\\d{6}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[178]"],"0$1"]],"0"],"ES":["34","00","[5-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]00"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-9]"]]]],"ET":["251","00","(?:11|[2-59]\\d)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-59]"],"0$1"]],"0"],"FI":["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","[1-35689]\\d{4}|7\\d{10,11}|(?:[124-7]\\d|3[0-46-9])\\d{8}|[1-9]\\d{5,8}",[5,6,7,8,9,10,11,12],[["(\\d)(\\d{4,9})","$1 $2",["[2568][1-8]|3(?:0[1-9]|[1-9])|9"],"0$1"],["(\\d{3})(\\d{3,7})","$1 $2",["[12]00|[368]|70[07-9]"],"0$1"],["(\\d{2})(\\d{4,8})","$1 $2",["[1245]|7[135]"],"0$1"],["(\\d{2})(\\d{6,10})","$1 $2",["7"],"0$1"]],"0",0,0,0,0,"1[03-79]|[2-9]",0,"00"],"FJ":["679","0(?:0|52)","45\\d{5}|(?:0800\\d|[235-9])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1 $2",["[235-9]|45"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]]],0,0,0,0,0,0,0,"00"],"FK":["500","00","[2-7]\\d{4}",[5]],"FM":["691","00","(?:[39]\\d\\d|820)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[389]"]]]],"FO":["298","00","[2-9]\\d{5}",[6],[["(\\d{6})","$1",["[2-9]"]]],0,0,"(10(?:01|[12]0|88))"],"FR":["33","00","[1-9]\\d{8}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0 $1"],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[1-79]"],"0$1"]],"0"],"GA":["241","00","(?:[067]\\d|11)\\d{6}|[2-7]\\d{6}",[7,8],[["(\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-7]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["11|[67]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]]],0,0,"0(11\\d{6}|60\\d{6}|61\\d{6}|6[256]\\d{6}|7[47]\\d{6}|76\\d{6})","$1"],"GB":["44","00","[1-357-9]\\d{9}|[18]\\d{8}|8\\d{6}",[7,9,10],[["(\\d{3})(\\d{4})","$1 $2",["800","8001","80011","800111","8001111"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["845","8454","84546","845464"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["800"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["1(?:38|5[23]|69|76|94)","1(?:(?:38|69)7|5(?:24|39)|768|946)","1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["1(?:[2-69][02-9]|[78])"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[25]|7(?:0|6[02-9])","[25]|7(?:0|6(?:[03-9]|2[356]))"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[1389]"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:1(?:3(?:[0-58]\\d\\d|73[0235])|4(?:[0-5]\\d\\d|69[7-9]|70[0359])|(?:5[0-26-9]|[78][0-49])\\d\\d|6(?:[0-4]\\d\\d|50[0-24-69]))|2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\d)\\d\\d|1(?:[0-7]\\d\\d|8(?:[02]\\d|1[0-278])))|(?:3(?:0\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\d\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\d{3})\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\d)|76\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\d|7[4-79])|295[5-7]|35[34]\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\d{3}",[9,10]],["7(?:457[0-57-9]|700[01]|911[028])\\d{5}|7(?:[1-3]\\d\\d|4(?:[0-46-9]\\d|5[0-689])|5(?:0[0-8]|[13-9]\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\d|8[02-9]|9[0-689])|8(?:[014-9]\\d|[23][0-8])|9(?:[024-9]\\d|1[02-9]|3[0-689]))\\d{6}",[10]],["80[08]\\d{7}|800\\d{6}|8001111"],["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[2-49]))\\d{7}|845464\\d",[7,10]],["70\\d{8}",[10]],0,["(?:3[0347]|55)\\d{8}",[10]],["76(?:464|652)\\d{5}|76(?:0[0-2]|2[356]|34|4[01347]|5[49]|6[0-369]|77|81|9[139])\\d{6}",[10]],["56\\d{8}",[10]]],0," x"],"GD":["1","011","(?:473|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","473$1",0,"473"],"GE":["995","00","(?:[3-57]\\d\\d|800)\\d{6}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["32"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[57]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[348]"],"0$1"]],"0"],"GF":["594","00","(?:[56]94|80\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0"],"GG":["44","00","(?:1481|[357-9]\\d{3})\\d{6}|8\\d{6}(?:\\d{2})?",[7,9,10],0,"0",0,"0|([25-9]\\d{5})$","1481$1",0,0,[["1481[25-9]\\d{5}",[10]],["7(?:(?:781|839)\\d|911[17])\\d{5}",[10]],["80[08]\\d{7}|800\\d{6}|8001111"],["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[0-3]))\\d{7}|845464\\d",[7,10]],["70\\d{8}",[10]],0,["(?:3[0347]|55)\\d{8}",[10]],["76(?:464|652)\\d{5}|76(?:0[0-2]|2[356]|34|4[01347]|5[49]|6[0-369]|77|81|9[139])\\d{6}",[10]],["56\\d{8}",[10]]]],"GH":["233","00","(?:[235]\\d{3}|800)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[235]"],"0$1"]],"0"],"GI":["350","00","(?:[25]\\d\\d|606)\\d{5}",[8],[["(\\d{3})(\\d{5})","$1 $2",["2"]]]],"GL":["299","00","(?:19|[2-689]\\d|70)\\d{4}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["19|[2-9]"]]]],"GM":["220","00","[2-9]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]]],"GN":["224","00","722\\d{6}|(?:3|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["3"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[67]"]]]],"GP":["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["590(?:0[1-68]|1[0-2]|2[0-68]|3[1289]|4[0-24-9]|5[3-579]|6[0189]|7[08]|8[0-689]|9\\d)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],"GQ":["240","00","222\\d{6}|(?:3\\d|55|[89]0)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235]"]],["(\\d{3})(\\d{6})","$1 $2",["[89]"]]]],"GR":["30","00","5005000\\d{3}|8\\d{9,11}|(?:[269]\\d|70)\\d{8}",[10,11,12],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["21|7"]],["(\\d{4})(\\d{6})","$1 $2",["2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2689]"]],["(\\d{3})(\\d{3,4})(\\d{5})","$1 $2 $3",["8"]]]],"GT":["502","00","(?:1\\d{3}|[2-7])\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]]],"GU":["1","011","(?:[58]\\d\\d|671|900)\\d{7}",[10],0,"1",0,"1|([3-9]\\d{6})$","671$1",0,"671"],"GW":["245","00","[49]\\d{8}|4\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["40"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"]]]],"GY":["592","001","(?:862\\d|9008)\\d{3}|(?:[2-46]\\d|77)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-46-9]"]]]],"HK":["852","00(?:30|5[09]|[126-9]?)","8[0-46-9]\\d{6,7}|9\\d{4}(?:\\d(?:\\d(?:\\d{4})?)?)?|(?:[235-79]\\d|46)\\d{6}",[5,6,7,8,9,11],[["(\\d{3})(\\d{2,5})","$1 $2",["900","9003"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[1-4]|9(?:0[1-9]|[1-8])"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]],["(\\d{3})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]],0,0,0,0,0,0,0,"00"],"HN":["504","00","8\\d{10}|[237-9]\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1-$2",["[237-9]"]]]],"HR":["385","00","(?:[24-69]\\d|3[0-79])\\d{7}|80\\d{5,7}|[1-79]\\d{7}|6\\d{5,6}",[6,7,8,9],[["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["6[01]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{4})(\\d{3})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-5]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"]],"0"],"HT":["509","00","[2-489]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[2-489]"]]]],"HU":["36","00","[235-7]\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"06 $1"]],"06"],"ID":["62","00[89]","(?:(?:00[1-9]|8\\d)\\d{4}|[1-36])\\d{6}|00\\d{10}|[1-9]\\d{8,10}|[2-9]\\d{7}",[7,8,9,10,11,12,13],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["15"]],["(\\d{2})(\\d{5,9})","$1 $2",["2[124]|[36]1"],"(0$1)"],["(\\d{3})(\\d{5,7})","$1 $2",["800"],"0$1"],["(\\d{3})(\\d{5,8})","$1 $2",["[2-79]"],"(0$1)"],["(\\d{3})(\\d{3,4})(\\d{3})","$1-$2-$3",["8[1-35-9]"],"0$1"],["(\\d{3})(\\d{6,8})","$1 $2",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["804"],"0$1"],["(\\d{3})(\\d)(\\d{3})(\\d{3})","$1 $2 $3 $4",["80"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1-$2-$3",["8"],"0$1"]],"0"],"IE":["353","00","(?:1\\d|[2569])\\d{6,8}|4\\d{6,9}|7\\d{8}|8\\d{8,9}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["2[24-9]|47|58|6[237-9]|9[35-9]"],"(0$1)"],["(\\d{3})(\\d{5})","$1 $2",["[45]0"],"(0$1)"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["1"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2569]|4[1-69]|7[14]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["81"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[78]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["4"],"(0$1)"],["(\\d{2})(\\d)(\\d{3})(\\d{4})","$1 $2 $3 $4",["8"],"0$1"]],"0"],"IL":["972","0(?:0|1[2-9])","1\\d{6}(?:\\d{3,5})?|[57]\\d{8}|[1-489]\\d{7}",[7,8,9,10,11,12],[["(\\d{4})(\\d{3})","$1-$2",["125"]],["(\\d{4})(\\d{2})(\\d{2})","$1-$2-$3",["121"]],["(\\d)(\\d{3})(\\d{4})","$1-$2-$3",["[2-489]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1-$2-$3",["12"]],["(\\d{4})(\\d{6})","$1-$2",["159"]],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3-$4",["1[7-9]"]],["(\\d{3})(\\d{1,2})(\\d{3})(\\d{4})","$1-$2 $3-$4",["15"]]],"0"],"IM":["44","00","1624\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([25-8]\\d{5})$","1624$1",0,"74576|(?:16|7[56])24"],"IN":["91","00","(?:000800|[2-9]\\d\\d)\\d{7}|1\\d{7,12}",[8,9,10,11,12,13],[["(\\d{8})","$1",["5(?:0|2[23]|3[03]|[67]1|88)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)"],0,1],["(\\d{4})(\\d{4,5})","$1 $2",["180","1800"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["140"],0,1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["11|2[02]|33|4[04]|79[1-7]|80[2-46]","11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])","11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]"],"0$1",1],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807","1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]","1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\d|7(?:1(?:[013-8]\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\d|5[0-367])|70[13-7]))[2-7]"],"0$1",1],["(\\d{5})(\\d{5})","$1 $2",["[6-9]"],"0$1",1],["(\\d{4})(\\d{2,4})(\\d{4})","$1 $2 $3",["1(?:6|8[06])","1(?:6|8[06]0)"],0,1],["(\\d{4})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["18"],0,1]],"0"],"IO":["246","00","3\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["3"]]]],"IQ":["964","00","(?:1|7\\d\\d)\\d{7}|[2-6]\\d{7,8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-6]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0"],"IR":["98","00","[1-9]\\d{9}|(?:[1-8]\\d\\d|9)\\d{3,4}",[4,5,6,7,10],[["(\\d{4,5})","$1",["96"],"0$1"],["(\\d{2})(\\d{4,5})","$1 $2",["(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[1-8]"],"0$1"]],"0"],"IS":["354","00|1(?:0(?:01|[12]0)|100)","(?:38\\d|[4-9])\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["[4-9]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["3"]]],0,0,0,0,0,0,0,"00"],"IT":["39","00","0\\d{5,10}|1\\d{8,10}|3(?:[0-8]\\d{7,10}|9\\d{7,8})|55\\d{8}|8\\d{5}(?:\\d{2,4})?",[6,7,8,9,10,11],[["(\\d{2})(\\d{4,6})","$1 $2",["0[26]"]],["(\\d{3})(\\d{3,6})","$1 $2",["0[13-57-9][0159]|8(?:03|4[17]|9[2-5])","0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))"]],["(\\d{4})(\\d{2,6})","$1 $2",["0(?:[13-579][2-46-8]|8[236-8])"]],["(\\d{4})(\\d{4})","$1 $2",["894"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[26]|5"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["1(?:44|[679])|[38]"]],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[13-57-9][0159]|14"]],["(\\d{2})(\\d{4})(\\d{5})","$1 $2 $3",["0[26]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["3"]]],0,0,0,0,0,0,[["0669[0-79]\\d{1,6}|0(?:1(?:[0159]\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\d\\d|3(?:[0159]\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\d|6[0-8])|7(?:[0159]\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\d{2,7}"],["3[1-9]\\d{8}|3[2-9]\\d{7}",[9,10]],["80(?:0\\d{3}|3)\\d{3}",[6,9]],["(?:0878\\d{3}|89(?:2\\d|3[04]|4(?:[0-4]|[5-9]\\d\\d)|5[0-4]))\\d\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\d{6}",[6,8,9,10]],["1(?:78\\d|99)\\d{6}",[9,10]],0,0,0,["55\\d{8}",[10]],["84(?:[08]\\d{3}|[17])\\d{3}",[6,9]]]],"JE":["44","00","1534\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([0-24-8]\\d{5})$","1534$1",0,0,[["1534[0-24-8]\\d{5}"],["7(?:(?:(?:50|82)9|937)\\d|7(?:00[378]|97[7-9]))\\d{5}"],["80(?:07(?:35|81)|8901)\\d{4}"],["(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\d{4}"],["701511\\d{4}"],0,["(?:3(?:0(?:07(?:35|81)|8901)|3\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\d{4})\\d{4}"],["76(?:464|652)\\d{5}|76(?:0[0-2]|2[356]|34|4[01347]|5[49]|6[0-369]|77|81|9[139])\\d{6}"],["56\\d{8}"]]],"JM":["1","011","(?:[58]\\d\\d|658|900)\\d{7}",[10],0,"1",0,0,0,0,"658|876"],"JO":["962","00","(?:(?:[2689]|7\\d)\\d|32|53)\\d{6}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2356]|87"],"(0$1)"],["(\\d{3})(\\d{5,6})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["70"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0"],"JP":["81","010","00[1-9]\\d{6,14}|[257-9]\\d{9}|(?:00|[1-9]\\d\\d)\\d{6}",[8,9,10,11,12,13,14,15,16,17],[["(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3",["(?:12|57|99)0"],"0$1"],["(\\d{4})(\\d)(\\d{4})","$1-$2-$3",["1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:49|80|9[16])","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2-$3",["[36]|4(?:2[09]|7[01])","[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]"],"0$1"],["(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3",["[14]|[289][2-9]|5[3-9]|7[2-4679]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["800"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[257-9]"],"0$1"]],"0"],"KE":["254","000","(?:[17]\\d\\d|900)\\d{6}|(?:2|80)0\\d{6,7}|[4-6]\\d{6,8}",[7,8,9,10],[["(\\d{2})(\\d{5,7})","$1 $2",["[24-6]"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[17]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0"],"KG":["996","00","8\\d{9}|(?:[235-8]\\d|99)\\d{7}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["3(?:1[346]|[24-79])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235-79]|88"],"0$1"],["(\\d{3})(\\d{3})(\\d)(\\d{2,3})","$1 $2 $3 $4",["8"],"0$1"]],"0"],"KH":["855","00[14-9]","1\\d{9}|[1-9]\\d{7,8}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0"],"KI":["686","00","(?:[37]\\d|6[0-79])\\d{6}|(?:[2-48]\\d|50)\\d{3}",[5,8],0,"0"],"KM":["269","00","[3478]\\d{6}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[3478]"]]]],"KN":["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","869$1",0,"869"],"KP":["850","00|99","85\\d{6}|(?:19\\d|[2-7])\\d{7}",[8,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"]],"0"],"KR":["82","00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))","00[1-9]\\d{8,11}|(?:[12]|5\\d{3})\\d{7}|[13-6]\\d{9}|(?:[1-6]\\d|80)\\d{7}|[3-6]\\d{4,5}|(?:00|7)0\\d{8}",[5,6,8,9,10,11,12,13,14],[["(\\d{2})(\\d{3,4})","$1-$2",["(?:3[1-3]|[46][1-4]|5[1-5])1"],"0$1"],["(\\d{4})(\\d{4})","$1-$2",["1"]],["(\\d)(\\d{3,4})(\\d{4})","$1-$2-$3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60|8"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1-$2-$3",["[1346]|5[1-5]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{2})(\\d{5})(\\d{4})","$1-$2-$3",["5"],"0$1"]],"0",0,"0(8(?:[1-46-8]|5\\d\\d))?"],"KW":["965","00","18\\d{5}|(?:[2569]\\d|41)\\d{6}",[7,8],[["(\\d{4})(\\d{3,4})","$1 $2",["[169]|2(?:[235]|4[1-35-9])|52"]],["(\\d{3})(\\d{5})","$1 $2",["[245]"]]]],"KY":["1","011","(?:345|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","345$1",0,"345"],"KZ":["7","810","(?:33622|8\\d{8})\\d{5}|[78]\\d{9}",[10,14],0,"8",0,0,0,0,"33|7",0,"8~10"],"LA":["856","00","[23]\\d{9}|3\\d{8}|(?:[235-8]\\d|41)\\d{6}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2[13]|3[14]|[4-8]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["30[013-9]"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[23]"],"0$1"]],"0"],"LB":["961","00","[27-9]\\d{7}|[13-9]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27-9]"]]],"0"],"LC":["1","011","(?:[58]\\d\\d|758|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","758$1",0,"758"],"LI":["423","00","90\\d{5}|(?:[2378]|6\\d\\d)\\d{6}",[7,9],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[237-9]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["69"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]],"0",0,"0|(1001)"],"LK":["94","00","[1-9]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[1-689]"],"0$1"]],"0"],"LR":["231","00","(?:2|33|5\\d|77|88)\\d{7}|[4-6]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[4-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3578]"],"0$1"]],"0"],"LS":["266","00","(?:[256]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2568]"]]]],"LT":["370","00","(?:[3469]\\d|52|[78]0)\\d{6}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["52[0-7]"],"(8-$1)",1],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[7-9]"],"8 $1",1],["(\\d{2})(\\d{6})","$1 $2",["37|4(?:[15]|6[1-8])"],"(8-$1)",1],["(\\d{3})(\\d{5})","$1 $2",["[3-6]"],"(8-$1)",1]],"8",0,"[08]"],"LU":["352","00","35[013-9]\\d{4,8}|6\\d{8}|35\\d{2,4}|(?:[2457-9]\\d|3[0-46-9])\\d{2,9}",[4,5,6,7,8,9,10,11],[["(\\d{2})(\\d{3})","$1 $2",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["20[2-689]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4",["2(?:[0367]|4[3-8])"]],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["80[01]|90[015]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["20"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4 $5",["2(?:[0367]|4[3-8])"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,5})","$1 $2 $3 $4",["[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]"]]],0,0,"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\d)"],"LV":["371","00","(?:[268]\\d|90)\\d{6}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[269]|8[01]"]]]],"LY":["218","00","[2-9]\\d{8}",[9],[["(\\d{2})(\\d{7})","$1-$2",["[2-9]"],"0$1"]],"0"],"MA":["212","00","[5-8]\\d{8}",[9],[["(\\d{5})(\\d{4})","$1-$2",["5(?:29|38)","5(?:29|38)[89]","5(?:29|38)[89]0"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5[45]"],"0$1"],["(\\d{4})(\\d{5})","$1-$2",["5(?:2[2-489]|3[5-9]|9)|892","5(?:2(?:[2-49]|8[235-9])|3[5-9]|9)|892"],"0$1"],["(\\d{2})(\\d{7})","$1-$2",["8"],"0$1"],["(\\d{3})(\\d{6})","$1-$2",["[5-7]"],"0$1"]],"0",0,0,0,0,0,[["5(?:29(?:[189][05]|2[29]|3[01])|38[89][05])\\d{4}|5(?:2(?:[0-25-7]\\d|3[1-578]|4[02-46-8]|8[0235-7]|90)|3(?:[0-47]\\d|5[02-9]|6[02-8]|80|9[3-9])|(?:4[067]|5[03])\\d)\\d{5}"],["(?:6(?:[0-79]\\d|8[0-247-9])|7(?:0\\d|1[0-5]|6[1267]|7[0-57]))\\d{6}"],["80\\d{7}"],["89\\d{7}"],0,0,0,0,["592(?:4[0-2]|93)\\d{4}"]]],"MC":["377","00","(?:[3489]|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["4"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[389]"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["6"],"0$1"]],"0"],"MD":["373","00","(?:[235-7]\\d|[89]0)\\d{6}",[8],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["22|3"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[25-7]"],"0$1"]],"0"],"ME":["382","00","(?:20|[3-79]\\d)\\d{6}|80\\d{6,7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"0$1"]],"0"],"MF":["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[["590(?:0[079]|[14]3|[27][79]|30|5[0-268]|87)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],"MG":["261","00","[23]\\d{8}",[9],[["(\\d{2})(\\d{2})(\\d{3})(\\d{2})","$1 $2 $3 $4",["[23]"],"0$1"]],"0",0,"0|([24-9]\\d{6})$","20$1"],"MH":["692","011","329\\d{4}|(?:[256]\\d|45)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1-$2",["[2-6]"]]],"1"],"MK":["389","00","[2-578]\\d{7}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[347]"],"0$1"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["[58]"],"0$1"]],"0"],"ML":["223","00","[24-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24-9]"]]]],"MM":["95","00","1\\d{5,7}|95\\d{6}|(?:[4-7]|9[0-46-9])\\d{6,8}|(?:2|8\\d)\\d{5,8}",[6,7,8,9,10],[["(\\d)(\\d{2})(\\d{3})","$1 $2 $3",["16|2"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[4-7]|8[1-35]"],"0$1"],["(\\d)(\\d{3})(\\d{4,6})","$1 $2 $3",["9(?:2[0-4]|[35-9]|4[137-9])"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["92"],"0$1"],["(\\d)(\\d{5})(\\d{4})","$1 $2 $3",["9"],"0$1"]],"0"],"MN":["976","001","[12]\\d{7,9}|[57-9]\\d{7}",[8,9,10],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[12]1"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[57-9]"]],["(\\d{3})(\\d{5,6})","$1 $2",["[12]2[1-3]"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["[12](?:27|3[2-8]|4[2-68]|5[1-4689])","[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["[12]"],"0$1"]],"0"],"MO":["853","00","0800\\d{3}|(?:28|[68]\\d)\\d{6}",[7,8],[["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{4})(\\d{4})","$1 $2",["[268]"]]]],"MP":["1","011","[58]\\d{9}|(?:67|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","670$1",0,"670"],"MQ":["596","00","(?:69|80)\\d{7}|(?:59|97)6\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0"],"MR":["222","00","(?:[2-4]\\d\\d|800)\\d{5}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-48]"]]]],"MS":["1","011","(?:[58]\\d\\d|664|900)\\d{7}",[10],0,"1",0,"1|([34]\\d{6})$","664$1",0,"664"],"MT":["356","00","3550\\d{4}|(?:[2579]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2357-9]"]]]],"MU":["230","0(?:0|[24-7]0|3[03])","(?:5|8\\d\\d)\\d{7}|[2-468]\\d{6}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[2-46]|8[013]"]],["(\\d{4})(\\d{4})","$1 $2",["5"]],["(\\d{5})(\\d{5})","$1 $2",["8"]]],0,0,0,0,0,0,0,"020"],"MV":["960","0(?:0|19)","(?:800|9[0-57-9]\\d)\\d{7}|[34679]\\d{6}",[7,10],[["(\\d{3})(\\d{4})","$1-$2",["[3467]|9[13-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"]]],0,0,0,0,0,0,0,"00"],"MW":["265","00","(?:[19]\\d|[23]1|77|88)\\d{7}|1\\d{6}",[7,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["1[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[137-9]"],"0$1"]],"0"],"MX":["52","0[09]","1(?:(?:44|99)[1-9]|65[0-689])\\d{7}|(?:1(?:[017]\\d|[235][1-9]|4[0-35-9]|6[0-46-9]|8[1-79]|9[1-8])|[2-9]\\d)\\d{8}",[10,11],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["33|5[56]|81"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2-9]"],0,1],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 $3 $4",["1(?:33|5[56]|81)"],0,1],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 $3 $4",["1"],0,1]],"01",0,"0(?:[12]|4[45])|1",0,0,0,0,"00"],"MY":["60","00","1\\d{8,9}|(?:3\\d|[4-9])\\d{7}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1-$2 $3",["[4-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1-$2 $3",["1(?:[02469]|[378][1-9])|8"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2 $3",["3"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3-$4",["1[36-8]"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2 $3",["15"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2 $3",["1"],"0$1"]],"0"],"MZ":["258","00","(?:2|8\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2|8[2-79]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]]],"NA":["264","00","[68]\\d{7,8}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["87"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0"],"NC":["687","00","[2-57-9]\\d{5}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1.$2.$3",["[2-57-9]"]]]],"NE":["227","00","[027-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["08"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[089]|2[013]|7[04]"]]]],"NF":["672","00","[13]\\d{5}",[6],[["(\\d{2})(\\d{4})","$1 $2",["1[0-3]"]],["(\\d)(\\d{5})","$1 $2",["[13]"]]],0,0,"([0-258]\\d{4})$","3$1"],"NG":["234","009","(?:[124-7]|9\\d{3})\\d{6}|[1-9]\\d{7}|[78]\\d{9,13}",[7,8,10,11,12,13,14],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["78"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]|9(?:0[3-9]|[1-9])"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[3-7]|8[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["[78]"],"0$1"],["(\\d{3})(\\d{5})(\\d{5,6})","$1 $2 $3",["[78]"],"0$1"]],"0"],"NI":["505","00","(?:1800|[25-8]\\d{3})\\d{4}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[125-8]"]]]],"NL":["31","00","(?:[124-7]\\d\\d|3(?:[02-9]\\d|1[0-8]))\\d{6}|[89]\\d{6,9}|1\\d{4,5}",[5,6,7,8,9,10],[["(\\d{3})(\\d{4,7})","$1 $2",["[89]0"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["66"],"0$1"],["(\\d)(\\d{8})","$1 $2",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["1[16-8]|2[259]|3[124]|4[17-9]|5[124679]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-57-9]"],"0$1"]],"0"],"NO":["47","00","(?:0|[2-9]\\d{3})\\d{4}",[5,8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[489]|59"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[235-7]"]]],0,0,0,0,0,"[02-689]|7[0-8]"],"NP":["977","00","(?:1\\d|9)\\d{9}|[1-9]\\d{7}",[8,10,11],[["(\\d)(\\d{7})","$1-$2",["1[2-6]"],"0$1"],["(\\d{2})(\\d{6})","$1-$2",["1[01]|[2-8]|9(?:[1-579]|6[2-6])"],"0$1"],["(\\d{3})(\\d{7})","$1-$2",["9"]]],"0"],"NR":["674","00","(?:444|(?:55|8\\d)\\d|666)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[4-68]"]]]],"NU":["683","00","(?:[47]|888\\d)\\d{3}",[4,7],[["(\\d{3})(\\d{4})","$1 $2",["8"]]]],"NZ":["64","0(?:0|161)","[29]\\d{7,9}|50\\d{5}(?:\\d{2,3})?|6[0-35-9]\\d{6}|7\\d{7,8}|8\\d{4,9}|(?:11\\d|[34])\\d{7}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,8})","$1 $2",["8[1-579]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["50[036-8]|[89]0","50(?:[0367]|88)|[89]0"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1-$2 $3",["24|[346]|7[2-57-9]|9[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:10|74)|[59]|80"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1|2[028]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,5})","$1 $2 $3",["2(?:[169]|7[0-35-9])|7|86"],"0$1"]],"0",0,0,0,0,0,0,"00"],"OM":["968","00","(?:1505|[279]\\d{3}|500)\\d{4}|800\\d{5,6}",[7,8,9],[["(\\d{3})(\\d{4,6})","$1 $2",["[58]"]],["(\\d{2})(\\d{6})","$1 $2",["2"]],["(\\d{4})(\\d{4})","$1 $2",["[179]"]]]],"PA":["507","00","(?:00800|8\\d{3})\\d{6}|[68]\\d{7}|[1-57-9]\\d{6}",[7,8,10,11],[["(\\d{3})(\\d{4})","$1-$2",["[1-57-9]"]],["(\\d{4})(\\d{4})","$1-$2",["[68]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]]],"PE":["51","19(?:1[124]|77|90)00","(?:[14-8]|9\\d)\\d{7}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["80"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["1"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[4-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"]]],"0",0,0,0,0,0,0,0," Anexo "],"PF":["689","00","4\\d{5}(?:\\d{2})?|8\\d{7,8}",[6,8,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["44"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4|8[7-9]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]]],"PG":["675","00|140[1-3]","(?:180|[78]\\d{3})\\d{4}|(?:[2-589]\\d|64)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["18|[2-69]|85"]],["(\\d{4})(\\d{4})","$1 $2",["[78]"]]],0,0,0,0,0,0,0,"00"],"PH":["63","00","(?:[2-7]|9\\d)\\d{8}|2\\d{5}|(?:1800|8)\\d{7,9}",[6,8,9,10,11,12,13],[["(\\d)(\\d{5})","$1 $2",["2"],"(0$1)"],["(\\d{4})(\\d{4,6})","$1 $2",["3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2","3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))"],"(0$1)"],["(\\d{5})(\\d{4})","$1 $2",["346|4(?:27|9[35])|883","3469|4(?:279|9(?:30|56))|8834"],"(0$1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3-7]|8[2-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{4})(\\d{1,2})(\\d{3})(\\d{4})","$1 $2 $3 $4",["1"]]],"0"],"PK":["92","00","122\\d{6}|[24-8]\\d{10,11}|9(?:[013-9]\\d{8,10}|2(?:[01]\\d\\d|2(?:[06-8]\\d|1[01]))\\d{7})|(?:[2-8]\\d{3}|92(?:[0-7]\\d|8[1-9]))\\d{6}|[24-9]\\d{8}|[89]\\d{7}",[8,9,10,11,12],[["(\\d{3})(\\d{3})(\\d{2,7})","$1 $2 $3",["[89]0"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["1"]],["(\\d{3})(\\d{6,7})","$1 $2",["2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])","9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]"],"(0$1)"],["(\\d{2})(\\d{7,8})","$1 $2",["(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]"],"(0$1)"],["(\\d{5})(\\d{5})","$1 $2",["58"],"(0$1)"],["(\\d{3})(\\d{7})","$1 $2",["3"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[24-9]"],"(0$1)"]],"0"],"PL":["48","00","6\\d{5}(?:\\d{2})?|8\\d{9}|[1-9]\\d{6}(?:\\d{2})?",[6,7,8,9,10],[["(\\d{5})","$1",["19"]],["(\\d{3})(\\d{3})","$1 $2",["11|64"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1","(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19"]],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["64"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[2-8]|[2-7]|8[1-79]|9[145]"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["8"]]]],"PM":["508","00","(?:[45]|80\\d\\d)\\d{5}",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[45]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0"],"PR":["1","011","(?:[589]\\d\\d|787)\\d{7}",[10],0,"1",0,0,0,0,"787|939"],"PS":["970","00","[2489]2\\d{6}|(?:1\\d|5)\\d{8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2489]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["5"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0"],"PT":["351","00","1693\\d{5}|(?:[26-9]\\d|30)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["2[12]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["16|[236-9]"]]]],"PW":["680","01[12]","(?:[24-8]\\d\\d|345|900)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]]],"PY":["595","00","59\\d{4,6}|9\\d{5,10}|(?:[2-46-8]\\d|5[0-8])\\d{4,7}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3,6})","$1 $2",["[2-9]0"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]"],"(0$1)"],["(\\d{3})(\\d{4,5})","$1 $2",["2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["87"]],["(\\d{3})(\\d{6})","$1 $2",["9(?:[5-79]|8[1-6])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["9"]]],"0"],"QA":["974","00","[2-7]\\d{7}|800\\d{4}(?:\\d{2})?|2\\d{6}",[7,8,9],[["(\\d{3})(\\d{4})","$1 $2",["2[126]|8"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]]]],"RE":["262","00","9769\\d{5}|(?:26|[68]\\d)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2689]"],"0$1"]],"0",0,0,0,0,"26[23]|69|[89]"],"RO":["40","00","(?:[2378]\\d|90)\\d{7}|[23]\\d{5}",[6,9],[["(\\d{3})(\\d{3})","$1 $2",["2[3-6]","2[3-6]\\d9"],"0$1"],["(\\d{2})(\\d{4})","$1 $2",["219|31"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[23]1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[237-9]"],"0$1"]],"0",0,0,0,0,0,0,0," int "],"RS":["381","00","38[02-9]\\d{6,9}|6\\d{7,9}|90\\d{4,8}|38\\d{5,6}|(?:7\\d\\d|800)\\d{3,9}|(?:[12]\\d|3[0-79])\\d{5,10}",[6,7,8,9,10,11,12],[["(\\d{3})(\\d{3,9})","$1 $2",["(?:2[389]|39)0|[7-9]"],"0$1"],["(\\d{2})(\\d{5,10})","$1 $2",["[1-36]"],"0$1"]],"0"],"RU":["7","810","8\\d{13}|[347-9]\\d{9}",[10,14],[["(\\d{4})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-8]|2[1-9])","7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))","7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2"],"8 ($1)",1],["(\\d{5})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-68]|2[1-9])","7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))","7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[349]|8(?:[02-7]|1[1-8])"],"8 ($1)",1],["(\\d{4})(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3 $4",["8"],"8 ($1)"]],"8",0,0,0,0,"3[04-689]|[489]",0,"8~10"],"RW":["250","00","(?:06|[27]\\d\\d|[89]00)\\d{6}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"]]],"0"],"SA":["966","00","92\\d{7}|(?:[15]|8\\d)\\d{8}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["9"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["81"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]],"0"],"SB":["677","0[01]","(?:[1-6]|[7-9]\\d\\d)\\d{4}",[5,7],[["(\\d{2})(\\d{5})","$1 $2",["7|8[4-9]|9(?:[1-8]|9[0-8])"]]]],"SC":["248","010|0[0-2]","8000\\d{3}|(?:[249]\\d|64)\\d{5}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[246]|9[57]"]]],0,0,0,0,0,0,0,"00"],"SD":["249","00","[19]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[19]"],"0$1"]],"0"],"SE":["46","00","(?:[26]\\d\\d|9)\\d{9}|[1-9]\\d{8}|[1-689]\\d{7}|[1-4689]\\d{6}|2\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{2,3})(\\d{2})","$1-$2 $3",["20"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{4})","$1-$2",["9(?:00|39|44)"],"0$1",0,"$1 $2"],["(\\d{2})(\\d{3})(\\d{2})","$1-$2 $3",["[12][136]|3[356]|4[0246]|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3"],["(\\d)(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2,3})(\\d{2})","$1-$2 $3",["1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{2,3})(\\d{3})","$1-$2 $3",["9(?:00|39|44)"],"0$1",0,"$1 $2 $3"],["(\\d{2})(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3 $4"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["10|7"],"0$1",0,"$1 $2 $3 $4"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1-$2 $3 $4",["[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{3})","$1-$2 $3 $4",["9"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4 $5",["[26]"],"0$1",0,"$1 $2 $3 $4 $5"]],"0"],"SG":["65","0[0-3]\\d","(?:(?:1\\d|8)\\d\\d|7000)\\d{7}|[3689]\\d{7}",[8,10,11],[["(\\d{4})(\\d{4})","$1 $2",["[369]|8(?:0[1-4]|[1-9])"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]],["(\\d{4})(\\d{4})(\\d{3})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]]],"SH":["290","00","(?:[256]\\d|8)\\d{3}",[4,5],0,0,0,0,0,0,"[256]"],"SI":["386","00|10(?:22|66|88|99)","[1-7]\\d{7}|8\\d{4,7}|90\\d{4,6}",[5,6,7,8],[["(\\d{2})(\\d{3,6})","$1 $2",["8[09]|9"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["59|8"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37][01]|4[0139]|51|6"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-57]"],"(0$1)"]],"0",0,0,0,0,0,0,"00"],"SJ":["47","00","0\\d{4}|(?:[489]\\d|[57]9)\\d{6}",[5,8],0,0,0,0,0,0,"79"],"SK":["421","00","[2-689]\\d{8}|[2-59]\\d{6}|[2-5]\\d{5}",[6,7,9],[["(\\d)(\\d{2})(\\d{3,4})","$1 $2 $3",["21"],"0$1"],["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["[3-5][1-8]1","[3-5][1-8]1[67]"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1/$2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[689]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1/$2 $3 $4",["[3-5]"],"0$1"]],"0"],"SL":["232","00","(?:[237-9]\\d|66)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[236-9]"],"(0$1)"]],"0"],"SM":["378","00","(?:0549|[5-7]\\d)\\d{6}",[8,10],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-7]"]],["(\\d{4})(\\d{6})","$1 $2",["0"]]],0,0,"([89]\\d{5})$","0549$1"],"SN":["221","00","(?:[378]\\d|93)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[379]"]]]],"SO":["252","00","[346-9]\\d{8}|[12679]\\d{7}|[1-5]\\d{6}|[1348]\\d{5}",[6,7,8,9],[["(\\d{2})(\\d{4})","$1 $2",["8[125]"]],["(\\d{6})","$1",["[134]"]],["(\\d)(\\d{6})","$1 $2",["[15]|2[0-79]|3[0-46-8]|4[0-7]"]],["(\\d)(\\d{7})","$1 $2",["24|[67]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3478]|64|90"]],["(\\d{2})(\\d{5,7})","$1 $2",["1|28|6(?:0[5-7]|[1-35-9])|9[2-9]"]]],"0"],"SR":["597","00","(?:[2-5]|68|[78]\\d)\\d{5}",[6,7],[["(\\d{2})(\\d{2})(\\d{2})","$1-$2-$3",["56"]],["(\\d{3})(\\d{3})","$1-$2",["[2-5]"]],["(\\d{3})(\\d{4})","$1-$2",["[6-8]"]]]],"SS":["211","00","[19]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[19]"],"0$1"]],"0"],"ST":["239","00","(?:22|9\\d)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[29]"]]]],"SV":["503","00","[267]\\d{7}|[89]00\\d{4}(?:\\d{4})?",[7,8,11],[["(\\d{3})(\\d{4})","$1 $2",["[89]"]],["(\\d{4})(\\d{4})","$1 $2",["[267]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[89]"]]]],"SX":["1","011","7215\\d{6}|(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|(5\\d{6})$","721$1",0,"721"],"SY":["963","00","[1-39]\\d{8}|[1-5]\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-5]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1",1]],"0"],"SZ":["268","00","0800\\d{4}|(?:[237]\\d|900)\\d{6}",[8,9],[["(\\d{4})(\\d{4})","$1 $2",["[0237]"]],["(\\d{5})(\\d{4})","$1 $2",["9"]]]],"TA":["290","00","8\\d{3}",[4],0,0,0,0,0,0,"8"],"TC":["1","011","(?:[58]\\d\\d|649|900)\\d{7}",[10],0,"1",0,"1|([2-479]\\d{6})$","649$1",0,"649"],"TD":["235","00|16","(?:22|[69]\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2679]"]]],0,0,0,0,0,0,0,"00"],"TG":["228","00","[279]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[279]"]]]],"TH":["66","00[1-9]","(?:001800|[2-57]|[689]\\d)\\d{7}|1\\d{7,9}",[8,9,10,13],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[13-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0"],"TJ":["992","810","(?:00|[1-57-9]\\d)\\d{7}",[9],[["(\\d{6})(\\d)(\\d{2})","$1 $2 $3",["331","3317"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[34]7|91[78]"]],["(\\d{4})(\\d)(\\d{4})","$1 $2 $3",["3[1-5]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[0-57-9]"]]],0,0,0,0,0,0,0,"8~10"],"TK":["690","00","[2-47]\\d{3,6}",[4,5,6,7]],"TL":["670","00","7\\d{7}|(?:[2-47]\\d|[89]0)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[2-489]|70"]],["(\\d{4})(\\d{4})","$1 $2",["7"]]]],"TM":["993","810","[1-6]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["12"],"(8 $1)"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-5]"],"(8 $1)"],["(\\d{2})(\\d{6})","$1 $2",["6"],"8 $1"]],"8",0,0,0,0,0,0,"8~10"],"TN":["216","00","[2-57-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-57-9]"]]]],"TO":["676","00","(?:0800|(?:[5-8]\\d\\d|999)\\d)\\d{3}|[2-8]\\d{4}",[5,7],[["(\\d{2})(\\d{3})","$1-$2",["[2-4]|50|6[09]|7[0-24-69]|8[05]"]],["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{3})(\\d{4})","$1 $2",["[5-9]"]]]],"TR":["90","00","4\\d{6}|8\\d{11,12}|(?:[2-58]\\d\\d|900)\\d{7}",[7,10,12,13],[["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["512|8[01589]|90"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5(?:[0-59]|61)","5(?:[0-59]|616)","5(?:[0-59]|6161)"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24][1-8]|3[1-9]"],"(0$1)",1],["(\\d{3})(\\d{3})(\\d{6,7})","$1 $2 $3",["80"],"0$1",1]],"0"],"TT":["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-46-8]\\d{6})$","868$1",0,"868"],"TV":["688","00","(?:2|7\\d\\d|90)\\d{4}",[5,6,7],[["(\\d{2})(\\d{3})","$1 $2",["2"]],["(\\d{2})(\\d{4})","$1 $2",["90"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]]],"TW":["886","0(?:0[25-79]|19)","[2-689]\\d{8}|7\\d{9,10}|[2-8]\\d{7}|2\\d{6}",[7,8,9,10,11],[["(\\d{2})(\\d)(\\d{4})","$1 $2 $3",["202"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[258]0"],"0$1"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]","[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,5})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,0,0,"#"],"TZ":["255","00[056]","(?:[26-8]\\d|41|90)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[24]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[67]"],"0$1"]],"0"],"UA":["380","00","[89]\\d{9}|[3-9]\\d{8}",[9,10],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]","6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["4[45][0-5]|5(?:0|6[37])|6(?:[12][018]|[36-8])|7|89|9[1-9]|(?:48|57)[0137-9]","4[45][0-5]|5(?:0|6(?:3[14-7]|7))|6(?:[12][018]|[36-8])|7|89|9[1-9]|(?:48|57)[0137-9]"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["[3-6]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,0,"0~0"],"UG":["256","00[057]","800\\d{6}|(?:[29]0|[347]\\d)\\d{7}",[9],[["(\\d{4})(\\d{5})","$1 $2",["202","2024"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[27-9]|4(?:6[45]|[7-9])"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[34]"],"0$1"]],"0"],"US":["1","011","[2-9]\\d{9}",[10],[["(\\d{3})(\\d{3})(\\d{4})","($1) $2-$3",["[2-9]"],0,1,"$1-$2-$3"]],"1",0,0,0,0,0,[["5(?:05(?:[2-57-9]\\d\\d|6(?:[0-35-9]\\d|44))|82(?:2(?:0[0-3]|[268]2)|3(?:0[02]|33)|4(?:00|4[24]|65|82)|5(?:00|29|83)|6(?:00|66|82)|777|8(?:00|88)|9(?:00|9[89])))\\d{4}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[39]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[0-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[0179]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[08]|3[0-289]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01579]|5[12469]|7[0-389]|8[04-69]))[2-9]\\d{6}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\d{6}"]]],"UY":["598","0(?:0|1[3-9]\\d)","4\\d{9}|[1249]\\d{7}|(?:[49]\\d|80)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["405|8|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[124]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["4"],"0$1"]],"0",0,0,0,0,0,0,"00"," int. "],"UZ":["998","810","(?:33|55|[679]\\d|88)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[35-9]"],"8 $1"]],"8",0,0,0,0,0,0,"8~10"],"VA":["39","00","0\\d{5,10}|3[0-8]\\d{7,10}|55\\d{8}|8\\d{5}(?:\\d{2,4})?|(?:1\\d|39)\\d{7,8}",[6,7,8,9,10,11],0,0,0,0,0,0,"06698"],"VC":["1","011","(?:[58]\\d\\d|784|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","784$1",0,"784"],"VE":["58","00","[68]00\\d{7}|(?:[24]\\d|[59]0)\\d{8}",[10],[["(\\d{3})(\\d{7})","$1-$2",["[24-689]"],"0$1"]],"0"],"VG":["1","011","(?:284|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-578]\\d{6})$","284$1",0,"284"],"VI":["1","011","[58]\\d{9}|(?:34|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","340$1",0,"340"],"VN":["84","00","[12]\\d{9}|[135-9]\\d{8}|[16]\\d{7}|[16-8]\\d{6}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["80"],"0$1",1],["(\\d{4})(\\d{4,6})","$1 $2",["1"],0,1],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[69]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3578]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["2[48]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["2"],"0$1",1]],"0"],"VU":["678","00","[57-9]\\d{6}|(?:[238]\\d|48)\\d{3}",[5,7],[["(\\d{3})(\\d{4})","$1 $2",["[57-9]"]]]],"WF":["681","00","(?:40|72)\\d{4}|8\\d{5}(?:\\d{3})?",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[478]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]]],"WS":["685","0","(?:[2-6]|8\\d{5})\\d{4}|[78]\\d{6}|[68]\\d{5}",[5,6,7,10],[["(\\d{5})","$1",["[2-5]|6[1-9]"]],["(\\d{3})(\\d{3,7})","$1 $2",["[68]"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]]],"XK":["383","00","[23]\\d{7,8}|(?:4\\d\\d|[89]00)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[23]"],"0$1"]],"0"],"YE":["967","00","(?:1|7\\d)\\d{7}|[1-7]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-6]|7[24-68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["7"],"0$1"]],"0"],"YT":["262","00","80\\d{7}|(?:26|63)9\\d{6}",[9],0,"0",0,0,0,0,"269|63"],"ZA":["27","00","[1-79]\\d{8}|8\\d{4,9}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,4})","$1 $2",["8[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["8[1-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["860"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0"],"ZM":["260","00","(?:63|80)0\\d{6}|(?:21|[79]\\d)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[28]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[79]"],"0$1"]],"0"],"ZW":["263","00","2(?:[0-57-9]\\d{6,8}|6[0-24-9]\\d{6,7})|[38]\\d{9}|[35-8]\\d{8}|[3-6]\\d{7}|[1-689]\\d{6}|[1-3569]\\d{5}|[1356]\\d{4}",[5,6,7,8,9,10],[["(\\d{3})(\\d{3,5})","$1 $2",["2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]"],"0$1"],["(\\d)(\\d{3})(\\d{2,4})","$1 $2 $3",["[49]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["80"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2","2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)","2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["29[013-9]|39|54"],"0$1"],["(\\d{4})(\\d{3,5})","$1 $2",["(?:25|54)8","258|5483"],"0$1"]],"0"]},"nonGeographic":{"800":["800",0,"(?:005|[1-9]\\d\\d)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["\\d"]]],0,0,0,0,0,0,[0,0,["(?:005|[1-9]\\d\\d)\\d{5}"]]],"808":["808",0,"[1-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[1-9]"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,["[1-9]\\d{7}"]]],"870":["870",0,"7\\d{11}|[35-7]\\d{8}",[9,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[35-7]"]]],0,0,0,0,0,0,[0,["(?:[356]|774[45])\\d{8}|7[6-8]\\d{7}"]]],"878":["878",0,"10\\d{10}",[12],[["(\\d{2})(\\d{5})(\\d{5})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["10\\d{10}"]]],"881":["881",0,"[0-36-9]\\d{8}",[9],[["(\\d)(\\d{3})(\\d{5})","$1 $2 $3",["[0-36-9]"]]],0,0,0,0,0,0,[0,["[0-36-9]\\d{8}"]]],"882":["882",0,"[13]\\d{6}(?:\\d{2,5})?|285\\d{9}|(?:[19]\\d|49)\\d{6}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5})","$1 $2",["16|342"]],["(\\d{2})(\\d{6})","$1 $2",["4"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[19]"]],["(\\d{2})(\\d{4})(\\d{3})","$1 $2 $3",["3[23]"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["34[57]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["34"]],["(\\d{2})(\\d{4,5})(\\d{5})","$1 $2 $3",["[1-3]"]]],0,0,0,0,0,0,[0,["342\\d{4}|(?:337|49)\\d{6}|3(?:2|47|7\\d{3})\\d{7}",[7,8,9,10,12]],0,0,0,0,0,0,["1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\d{4}|6\\d{5,10})|(?:(?:285\\d\\d|3(?:45|[69]\\d{3}))\\d|9[89])\\d{6}"]]],"883":["883",0,"210\\d{7}|51\\d{7}(?:\\d{3})?",[9,10,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["510"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["2"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["510"]],["(\\d{4})(\\d{4})(\\d{4})","$1 $2 $3",["5"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["(?:210|51[013]0\\d)\\d{7}|5100\\d{5}"]]],"888":["888",0,"\\d{11}",[11],[["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3"]],0,0,0,0,0,0,[0,0,0,0,0,0,["\\d{11}"]]],"979":["979",0,"[1359]\\d{8}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[1359]"]]],0,0,0,0,0,0,[0,0,0,["[1359]\\d{8}"]]]}}; + + // Importing from `.json.js` a workaround for a bug in web browsers' "native" + + function withMetadata(func, _arguments) { + var args = Array.prototype.slice.call(_arguments); + args.push(metadata); + return func.apply(this, args) + } + + function _classCallCheck$2(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + // https://stackoverflow.com/a/46971044/970769 + var ParseError = function ParseError(code) { + _classCallCheck$2(this, ParseError); + + this.name = this.constructor.name; + this.message = code; + this.stack = new Error(code).stack; + }; + ParseError.prototype = Object.create(Error.prototype); + ParseError.prototype.constructor = ParseError; + + // The minimum length of the national significant number. + var MIN_LENGTH_FOR_NSN = 2; // The ITU says the maximum length should be 15, + // but one can find longer numbers in Germany. + + var MAX_LENGTH_FOR_NSN = 17; // The maximum length of the country calling code. + + var MAX_LENGTH_COUNTRY_CODE = 3; // Digits accepted in phone numbers + // (ascii, fullwidth, arabic-indic, and eastern arabic digits). + + var VALID_DIGITS = "0-9\uFF10-\uFF19\u0660-\u0669\u06F0-\u06F9"; // `DASHES` will be right after the opening square bracket of the "character class" + + var DASHES = "-\u2010-\u2015\u2212\u30FC\uFF0D"; + var SLASHES = "\uFF0F/"; + var DOTS = "\uFF0E."; + var WHITESPACE = " \xA0\xAD\u200B\u2060\u3000"; + var BRACKETS = "()\uFF08\uFF09\uFF3B\uFF3D\\[\\]"; // export const OPENING_BRACKETS = '(\uFF08\uFF3B\\\[' + + var TILDES = "~\u2053\u223C\uFF5E"; // Regular expression of acceptable punctuation found in phone numbers. This + // excludes punctuation found as a leading character only. This consists of dash + // characters, white space characters, full stops, slashes, square brackets, + // parentheses and tildes. Full-width variants are also present. + + var VALID_PUNCTUATION = "".concat(DASHES).concat(SLASHES).concat(DOTS).concat(WHITESPACE).concat(BRACKETS).concat(TILDES); + var PLUS_CHARS = "+\uFF0B"; // const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+') + + // Copy-pasted from: + // https://github.com/substack/semver-compare/blob/master/index.js + // + // Inlining this function because some users reported issues with + // importing from `semver-compare` in a browser with ES6 "native" modules. + // + // Fixes `semver-compare` not being able to compare versions with alpha/beta/etc "tags". + // https://github.com/catamphetamine/libphonenumber-js/issues/381 + function compare (a, b) { + a = a.split('-'); + b = b.split('-'); + var pa = a[0].split('.'); + var pb = b[0].split('.'); + + for (var i = 0; i < 3; i++) { + var na = Number(pa[i]); + var nb = Number(pb[i]); + if (na > nb) return 1; + if (nb > na) return -1; + if (!isNaN(na) && isNaN(nb)) return 1; + if (isNaN(na) && !isNaN(nb)) return -1; + } + + if (a[1] && b[1]) { + return a[1] > b[1] ? 1 : a[1] < b[1] ? -1 : 0; + } + + return !a[1] && b[1] ? 1 : a[1] && !b[1] ? -1 : 0; + } + + function _typeof$1(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof$1(obj); } + + function _classCallCheck$1(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + function _defineProperties$1(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + + function _createClass$1(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties$1(Constructor.prototype, protoProps); if (staticProps) _defineProperties$1(Constructor, staticProps); return Constructor; } + + var V3 = '1.2.0'; // Moved `001` country code to "nonGeographic" section of metadata. + + var V4 = '1.7.35'; + var DEFAULT_EXT_PREFIX = ' ext. '; + var CALLING_CODE_REG_EXP = /^\d+$/; + /** + * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md + */ + + var Metadata = + /*#__PURE__*/ + function () { + function Metadata(metadata) { + _classCallCheck$1(this, Metadata); + + validateMetadata(metadata); + this.metadata = metadata; + setVersion.call(this, metadata); + } + + _createClass$1(Metadata, [{ + key: "getCountries", + value: function getCountries() { + return Object.keys(this.metadata.countries).filter(function (_) { + return _ !== '001'; + }); + } + }, { + key: "getCountryMetadata", + value: function getCountryMetadata(countryCode) { + return this.metadata.countries[countryCode]; + } + }, { + key: "nonGeographic", + value: function nonGeographic() { + if (this.v1 || this.v2 || this.v3) return; // `nonGeographical` was a typo. + // It's present in metadata generated from `1.7.35` to `1.7.37`. + + return this.metadata.nonGeographic || this.metadata.nonGeographical; + } + }, { + key: "hasCountry", + value: function hasCountry(country) { + return this.getCountryMetadata(country) !== undefined; + } + }, { + key: "hasCallingCode", + value: function hasCallingCode(callingCode) { + if (this.getCountryCodesForCallingCode(callingCode)) { + return true; + } + + if (this.nonGeographic()) { + if (this.nonGeographic()[callingCode]) { + return true; + } + } else { + // A hacky workaround for old custom metadata (generated before V4). + var countryCodes = this.countryCallingCodes()[callingCode]; + + if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') { + return true; + } + } + } + }, { + key: "isNonGeographicCallingCode", + value: function isNonGeographicCallingCode(callingCode) { + if (this.nonGeographic()) { + return this.nonGeographic()[callingCode] ? true : false; + } else { + return this.getCountryCodesForCallingCode(callingCode) ? false : true; + } + } // Deprecated. + + }, { + key: "country", + value: function country(countryCode) { + return this.selectNumberingPlan(countryCode); + } + }, { + key: "selectNumberingPlan", + value: function selectNumberingPlan(countryCode, callingCode) { + // Supports just passing `callingCode` as the first argument. + if (countryCode && CALLING_CODE_REG_EXP.test(countryCode)) { + callingCode = countryCode; + countryCode = null; + } + + if (countryCode && countryCode !== '001') { + if (!this.hasCountry(countryCode)) { + throw new Error("Unknown country: ".concat(countryCode)); + } + + this.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this); + } else if (callingCode) { + if (!this.hasCallingCode(callingCode)) { + throw new Error("Unknown calling code: ".concat(callingCode)); + } + + this.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this); + } else { + this.numberingPlan = undefined; + } + + return this; + } + }, { + key: "getCountryCodesForCallingCode", + value: function getCountryCodesForCallingCode(callingCode) { + var countryCodes = this.countryCallingCodes()[callingCode]; + + if (countryCodes) { + // Metadata before V4 included "non-geographic entity" calling codes + // inside `country_calling_codes` (for example, `"881":["001"]`). + // Now the semantics of `country_calling_codes` has changed: + // it's specifically for "countries" now. + // Older versions of custom metadata will simply skip parsing + // "non-geographic entity" phone numbers with new versions + // of this library: it's not considered a bug, + // because such numbers are extremely rare, + // and developers extremely rarely use custom metadata. + if (countryCodes.length === 1 && countryCodes[0].length === 3) { + return; + } + + return countryCodes; + } + } + }, { + key: "getCountryCodeForCallingCode", + value: function getCountryCodeForCallingCode(callingCode) { + var countryCodes = this.getCountryCodesForCallingCode(callingCode); + + if (countryCodes) { + return countryCodes[0]; + } + } + }, { + key: "getNumberingPlanMetadata", + value: function getNumberingPlanMetadata(callingCode) { + var countryCode = this.getCountryCodeForCallingCode(callingCode); + + if (countryCode) { + return this.getCountryMetadata(countryCode); + } + + if (this.nonGeographic()) { + var metadata = this.nonGeographic()[callingCode]; + + if (metadata) { + return metadata; + } + } else { + // A hacky workaround for old custom metadata (generated before V4). + var countryCodes = this.countryCallingCodes()[callingCode]; + + if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') { + return this.metadata.countries['001']; + } + } + } // Deprecated. + + }, { + key: "countryCallingCode", + value: function countryCallingCode() { + return this.numberingPlan.callingCode(); + } // Deprecated. + + }, { + key: "IDDPrefix", + value: function IDDPrefix() { + return this.numberingPlan.IDDPrefix(); + } // Deprecated. + + }, { + key: "defaultIDDPrefix", + value: function defaultIDDPrefix() { + return this.numberingPlan.defaultIDDPrefix(); + } // Deprecated. + + }, { + key: "nationalNumberPattern", + value: function nationalNumberPattern() { + return this.numberingPlan.nationalNumberPattern(); + } // Deprecated. + + }, { + key: "possibleLengths", + value: function possibleLengths() { + return this.numberingPlan.possibleLengths(); + } // Deprecated. + + }, { + key: "formats", + value: function formats() { + return this.numberingPlan.formats(); + } // Deprecated. + + }, { + key: "nationalPrefixForParsing", + value: function nationalPrefixForParsing() { + return this.numberingPlan.nationalPrefixForParsing(); + } // Deprecated. + + }, { + key: "nationalPrefixTransformRule", + value: function nationalPrefixTransformRule() { + return this.numberingPlan.nationalPrefixTransformRule(); + } // Deprecated. + + }, { + key: "leadingDigits", + value: function leadingDigits() { + return this.numberingPlan.leadingDigits(); + } // Deprecated. + + }, { + key: "hasTypes", + value: function hasTypes() { + return this.numberingPlan.hasTypes(); + } // Deprecated. + + }, { + key: "type", + value: function type(_type) { + return this.numberingPlan.type(_type); + } // Deprecated. + + }, { + key: "ext", + value: function ext() { + return this.numberingPlan.ext(); + } + }, { + key: "countryCallingCodes", + value: function countryCallingCodes() { + if (this.v1) return this.metadata.country_phone_code_to_countries; + return this.metadata.country_calling_codes; + } // Deprecated. + + }, { + key: "chooseCountryByCountryCallingCode", + value: function chooseCountryByCountryCallingCode(callingCode) { + return this.selectNumberingPlan(callingCode); + } + }, { + key: "hasSelectedNumberingPlan", + value: function hasSelectedNumberingPlan() { + return this.numberingPlan !== undefined; + } + }]); + + return Metadata; + }(); + + var NumberingPlan = + /*#__PURE__*/ + function () { + function NumberingPlan(metadata, globalMetadataObject) { + _classCallCheck$1(this, NumberingPlan); + + this.globalMetadataObject = globalMetadataObject; + this.metadata = metadata; + setVersion.call(this, globalMetadataObject.metadata); + } + + _createClass$1(NumberingPlan, [{ + key: "callingCode", + value: function callingCode() { + return this.metadata[0]; + } // Formatting information for regions which share + // a country calling code is contained by only one region + // for performance reasons. For example, for NANPA region + // ("North American Numbering Plan Administration", + // which includes USA, Canada, Cayman Islands, Bahamas, etc) + // it will be contained in the metadata for `US`. + + }, { + key: "getDefaultCountryMetadataForRegion", + value: function getDefaultCountryMetadataForRegion() { + return this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode()); + } // Is always present. + + }, { + key: "IDDPrefix", + value: function IDDPrefix() { + if (this.v1 || this.v2) return; + return this.metadata[1]; + } // Is only present when a country supports multiple IDD prefixes. + + }, { + key: "defaultIDDPrefix", + value: function defaultIDDPrefix() { + if (this.v1 || this.v2) return; + return this.metadata[12]; + } + }, { + key: "nationalNumberPattern", + value: function nationalNumberPattern() { + if (this.v1 || this.v2) return this.metadata[1]; + return this.metadata[2]; + } // Is always present. + + }, { + key: "possibleLengths", + value: function possibleLengths() { + if (this.v1) return; + return this.metadata[this.v2 ? 2 : 3]; + } + }, { + key: "_getFormats", + value: function _getFormats(metadata) { + return metadata[this.v1 ? 2 : this.v2 ? 3 : 4]; + } // For countries of the same region (e.g. NANPA) + // formats are all stored in the "main" country for that region. + // E.g. "RU" and "KZ", "US" and "CA". + + }, { + key: "formats", + value: function formats() { + var _this = this; + + var formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || []; + return formats.map(function (_) { + return new Format(_, _this); + }); + } + }, { + key: "nationalPrefix", + value: function nationalPrefix() { + return this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5]; + } + }, { + key: "_getNationalPrefixFormattingRule", + value: function _getNationalPrefixFormattingRule(metadata) { + return metadata[this.v1 ? 4 : this.v2 ? 5 : 6]; + } // For countries of the same region (e.g. NANPA) + // national prefix formatting rule is stored in the "main" country for that region. + // E.g. "RU" and "KZ", "US" and "CA". + + }, { + key: "nationalPrefixFormattingRule", + value: function nationalPrefixFormattingRule() { + return this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion()); + } + }, { + key: "_nationalPrefixForParsing", + value: function _nationalPrefixForParsing() { + return this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7]; + } + }, { + key: "nationalPrefixForParsing", + value: function nationalPrefixForParsing() { + // If `national_prefix_for_parsing` is not set explicitly, + // then infer it from `national_prefix` (if any) + return this._nationalPrefixForParsing() || this.nationalPrefix(); + } + }, { + key: "nationalPrefixTransformRule", + value: function nationalPrefixTransformRule() { + return this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8]; + } + }, { + key: "_getNationalPrefixIsOptionalWhenFormatting", + value: function _getNationalPrefixIsOptionalWhenFormatting() { + return !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9]; + } // For countries of the same region (e.g. NANPA) + // "national prefix is optional when formatting" flag is + // stored in the "main" country for that region. + // E.g. "RU" and "KZ", "US" and "CA". + + }, { + key: "nationalPrefixIsOptionalWhenFormattingInNationalFormat", + value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() { + return this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) || this._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion()); + } + }, { + key: "leadingDigits", + value: function leadingDigits() { + return this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10]; + } + }, { + key: "types", + value: function types() { + return this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11]; + } + }, { + key: "hasTypes", + value: function hasTypes() { + // Versions 1.2.0 - 1.2.4: can be `[]`. + + /* istanbul ignore next */ + if (this.types() && this.types().length === 0) { + return false; + } // Versions <= 1.2.4: can be `undefined`. + // Version >= 1.2.5: can be `0`. + + + return !!this.types(); + } + }, { + key: "type", + value: function type(_type2) { + if (this.hasTypes() && getType(this.types(), _type2)) { + return new Type(getType(this.types(), _type2), this); + } + } + }, { + key: "ext", + value: function ext() { + if (this.v1 || this.v2) return DEFAULT_EXT_PREFIX; + return this.metadata[13] || DEFAULT_EXT_PREFIX; + } + }]); + + return NumberingPlan; + }(); + + var Format = + /*#__PURE__*/ + function () { + function Format(format, metadata) { + _classCallCheck$1(this, Format); + + this._format = format; + this.metadata = metadata; + } + + _createClass$1(Format, [{ + key: "pattern", + value: function pattern() { + return this._format[0]; + } + }, { + key: "format", + value: function format() { + return this._format[1]; + } + }, { + key: "leadingDigitsPatterns", + value: function leadingDigitsPatterns() { + return this._format[2] || []; + } + }, { + key: "nationalPrefixFormattingRule", + value: function nationalPrefixFormattingRule() { + return this._format[3] || this.metadata.nationalPrefixFormattingRule(); + } + }, { + key: "nationalPrefixIsOptionalWhenFormattingInNationalFormat", + value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() { + return !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat(); + } + }, { + key: "nationalPrefixIsMandatoryWhenFormattingInNationalFormat", + value: function nationalPrefixIsMandatoryWhenFormattingInNationalFormat() { + // National prefix is omitted if there's no national prefix formatting rule + // set for this country, or when the national prefix formatting rule + // contains no national prefix itself, or when this rule is set but + // national prefix is optional for this phone number format + // (and it is not enforced explicitly) + return this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat(); + } // Checks whether national prefix formatting rule contains national prefix. + + }, { + key: "usesNationalPrefix", + value: function usesNationalPrefix() { + return this.nationalPrefixFormattingRule() && // Check that national prefix formatting rule is not a "dummy" one. + !FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule()) // In compressed metadata, `this.nationalPrefixFormattingRule()` is `0` + // when `national_prefix_formatting_rule` is not present. + // So, `true` or `false` are returned explicitly here, so that + // `0` number isn't returned. + ? true : false; + } + }, { + key: "internationalFormat", + value: function internationalFormat() { + return this._format[5] || this.format(); + } + }]); + + return Format; + }(); + /** + * A pattern that is used to determine if the national prefix formatting rule + * has the first group only, i.e., does not start with the national prefix. + * Note that the pattern explicitly allows for unbalanced parentheses. + */ + + + var FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\(?\$1\)?$/; + + var Type = + /*#__PURE__*/ + function () { + function Type(type, metadata) { + _classCallCheck$1(this, Type); + + this.type = type; + this.metadata = metadata; + } + + _createClass$1(Type, [{ + key: "pattern", + value: function pattern() { + if (this.metadata.v1) return this.type; + return this.type[0]; + } + }, { + key: "possibleLengths", + value: function possibleLengths() { + if (this.metadata.v1) return; + return this.type[1] || this.metadata.possibleLengths(); + } + }]); + + return Type; + }(); + + function getType(types, type) { + switch (type) { + case 'FIXED_LINE': + return types[0]; + + case 'MOBILE': + return types[1]; + + case 'TOLL_FREE': + return types[2]; + + case 'PREMIUM_RATE': + return types[3]; + + case 'PERSONAL_NUMBER': + return types[4]; + + case 'VOICEMAIL': + return types[5]; + + case 'UAN': + return types[6]; + + case 'PAGER': + return types[7]; + + case 'VOIP': + return types[8]; + + case 'SHARED_COST': + return types[9]; + } + } + + function validateMetadata(metadata) { + if (!metadata) { + throw new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.'); + } // `country_phone_code_to_countries` was renamed to + // `country_calling_codes` in `1.0.18`. + + + if (!is_object(metadata) || !is_object(metadata.countries)) { + throw new Error("[libphonenumber-js] `metadata` argument was passed but it's not a valid metadata. Must be an object having `.countries` child object property. Got ".concat(is_object(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + type_of(metadata) + ': ' + metadata, ".")); + } + } // Babel transforms `typeof` into some "branches" + // so istanbul will show this as "branch not covered". + + /* istanbul ignore next */ + + var is_object = function is_object(_) { + return _typeof$1(_) === 'object'; + }; // Babel transforms `typeof` into some "branches" + // so istanbul will show this as "branch not covered". + + /* istanbul ignore next */ + + + var type_of = function type_of(_) { + return _typeof$1(_); + }; + /** + * Returns "country calling code" for a country. + * Throws an error if the country doesn't exist or isn't supported by this library. + * @param {string} country + * @param {object} metadata + * @return {string} + * @example + * // Returns "44" + * getCountryCallingCode("GB") + */ + + function getCountryCallingCode(country, metadata) { + metadata = new Metadata(metadata); + + if (metadata.hasCountry(country)) { + return metadata.country(country).countryCallingCode(); + } + + throw new Error("Unknown country: ".concat(country)); + } + function isSupportedCountry(country, metadata) { + // metadata = new Metadata(metadata) + // return metadata.hasCountry(country) + return metadata.countries[country] !== undefined; + } + + function setVersion(metadata) { + var version = metadata.version; + + if (typeof version === 'number') { + this.v1 = version === 1; + this.v2 = version === 2; + this.v3 = version === 3; + this.v4 = version === 4; + } else { + if (!version) { + this.v1 = true; + } else if (compare(version, V3) === -1) { + this.v2 = true; + } else if (compare(version, V4) === -1) { + this.v3 = true; + } else { + this.v4 = true; + } + } + } // const ISO_COUNTRY_CODE = /^[A-Z]{2}$/ + // function isCountryCode(countryCode) { + // return ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode) + // } + + var RFC3966_EXTN_PREFIX = ';ext='; + /** + * Helper method for constructing regular expressions for parsing. Creates + * an expression that captures up to max_length digits. + * @return {string} RegEx pattern to capture extension digits. + */ + + var getExtensionDigitsPattern = function getExtensionDigitsPattern(maxLength) { + return "([".concat(VALID_DIGITS, "]{1,").concat(maxLength, "})"); + }; + /** + * Helper initialiser method to create the regular-expression pattern to match + * extensions. + * Copy-pasted from Google's `libphonenumber`: + * https://github.com/google/libphonenumber/blob/55b2646ec9393f4d3d6661b9c82ef9e258e8b829/javascript/i18n/phonenumbers/phonenumberutil.js#L759-L766 + * @return {string} RegEx pattern to capture extensions. + */ + + + function createExtensionPattern(purpose) { + // We cap the maximum length of an extension based on the ambiguity of the way + // the extension is prefixed. As per ITU, the officially allowed length for + // extensions is actually 40, but we don't support this since we haven't seen real + // examples and this introduces many false interpretations as the extension labels + // are not standardized. + + /** @type {string} */ + var extLimitAfterExplicitLabel = '20'; + /** @type {string} */ + + var extLimitAfterLikelyLabel = '15'; + /** @type {string} */ + + var extLimitAfterAmbiguousChar = '9'; + /** @type {string} */ + + var extLimitWhenNotSure = '6'; + /** @type {string} */ + + var possibleSeparatorsBetweenNumberAndExtLabel = "[ \xA0\\t,]*"; // Optional full stop (.) or colon, followed by zero or more spaces/tabs/commas. + + /** @type {string} */ + + var possibleCharsAfterExtLabel = "[:\\.\uFF0E]?[ \xA0\\t,-]*"; + /** @type {string} */ + + var optionalExtnSuffix = "#?"; // Here the extension is called out in more explicit way, i.e mentioning it obvious + // patterns like "ext.". + + /** @type {string} */ + + var explicitExtLabels = "(?:e?xt(?:ensi(?:o\u0301?|\xF3))?n?|\uFF45?\uFF58\uFF54\uFF4E?|\u0434\u043E\u0431|anexo)"; // One-character symbols that can be used to indicate an extension, and less + // commonly used or more ambiguous extension labels. + + /** @type {string} */ + + var ambiguousExtLabels = "(?:[x\uFF58#\uFF03~\uFF5E]|int|\uFF49\uFF4E\uFF54)"; // When extension is not separated clearly. + + /** @type {string} */ + + var ambiguousSeparator = "[- ]+"; // This is the same as possibleSeparatorsBetweenNumberAndExtLabel, but not matching + // comma as extension label may have it. + + /** @type {string} */ + + var possibleSeparatorsNumberExtLabelNoComma = "[ \xA0\\t]*"; // ",," is commonly used for auto dialling the extension when connected. First + // comma is matched through possibleSeparatorsBetweenNumberAndExtLabel, so we do + // not repeat it here. Semi-colon works in Iphone and Android also to pop up a + // button with the extension number following. + + /** @type {string} */ + + var autoDiallingAndExtLabelsFound = "(?:,{2}|;)"; + /** @type {string} */ + + var rfcExtn = RFC3966_EXTN_PREFIX + getExtensionDigitsPattern(extLimitAfterExplicitLabel); + /** @type {string} */ + + var explicitExtn = possibleSeparatorsBetweenNumberAndExtLabel + explicitExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterExplicitLabel) + optionalExtnSuffix; + /** @type {string} */ + + var ambiguousExtn = possibleSeparatorsBetweenNumberAndExtLabel + ambiguousExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix; + /** @type {string} */ + + var americanStyleExtnWithSuffix = ambiguousSeparator + getExtensionDigitsPattern(extLimitWhenNotSure) + "#"; + /** @type {string} */ + + var autoDiallingExtn = possibleSeparatorsNumberExtLabelNoComma + autoDiallingAndExtLabelsFound + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterLikelyLabel) + optionalExtnSuffix; + /** @type {string} */ + + var onlyCommasExtn = possibleSeparatorsNumberExtLabelNoComma + "(?:,)+" + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix; // The first regular expression covers RFC 3966 format, where the extension is added + // using ";ext=". The second more generic where extension is mentioned with explicit + // labels like "ext:". In both the above cases we allow more numbers in extension than + // any other extension labels. The third one captures when single character extension + // labels or less commonly used labels are used. In such cases we capture fewer + // extension digits in order to reduce the chance of falsely interpreting two + // numbers beside each other as a number + extension. The fourth one covers the + // special case of American numbers where the extension is written with a hash + // at the end, such as "- 503#". The fifth one is exclusively for extension + // autodialling formats which are used when dialling and in this case we accept longer + // extensions. The last one is more liberal on the number of commas that acts as + // extension labels, so we have a strict cap on the number of digits in such extensions. + + return rfcExtn + "|" + explicitExtn + "|" + ambiguousExtn + "|" + americanStyleExtnWithSuffix + "|" + autoDiallingExtn + "|" + onlyCommasExtn; + } + + // Checks we have at least three leading digits, and only valid punctuation, + // alpha characters and digits in the phone number. Does not include extension + // data. The symbol 'x' is allowed here as valid punctuation since it is often + // used as a placeholder for carrier codes, for example in Brazilian phone + // numbers. We also allow multiple '+' characters at the start. + // + // Corresponds to the following: + // [digits]{minLengthNsn}| + // plus_sign* + // (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])* + // + // The first reg-ex is to allow short numbers (two digits long) to be parsed if + // they are entered as "15" etc, but only if there is no punctuation in them. + // The second expression restricts the number of digits to three or more, but + // then allows them to be in international form, and to have alpha-characters + // and punctuation. We split up the two reg-exes here and combine them when + // creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it + // with ^ and append $ to each branch. + // + // "Note VALID_PUNCTUATION starts with a -, + // so must be the first in the range" (c) Google devs. + // (wtf did they mean by saying that; probably nothing) + // + + var MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + VALID_DIGITS + ']{' + MIN_LENGTH_FOR_NSN + '}'; // + // And this is the second reg-exp: + // (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp) + // + + var VALID_PHONE_NUMBER = '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){3,}' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*'; // This regular expression isn't present in Google's `libphonenumber` + // and is only used to determine whether the phone number being input + // is too short for it to even consider it a "valid" number. + // This is just a way to differentiate between a really invalid phone + // number like "abcde" and a valid phone number that a user has just + // started inputting, like "+1" or "1": both these cases would be + // considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this + // library can provide a more detailed error message — whether it's + // really "not a number", or is it just a start of a valid phone number. + + var VALID_PHONE_NUMBER_START_REG_EXP = new RegExp('^' + '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){1,2}' + '$', 'i'); + var VALID_PHONE_NUMBER_WITH_EXTENSION = VALID_PHONE_NUMBER + // Phone number extensions + '(?:' + createExtensionPattern() + ')?'; // The combined regular expression for valid phone numbers: + // + + var VALID_PHONE_NUMBER_PATTERN = new RegExp( // Either a short two-digit-only phone number + '^' + MIN_LENGTH_PHONE_NUMBER_PATTERN + '$' + '|' + // Or a longer fully parsed phone number (min 3 characters) + '^' + VALID_PHONE_NUMBER_WITH_EXTENSION + '$', 'i'); // Checks to see if the string of characters could possibly be a phone number at + // all. At the moment, checks to see that the string begins with at least 2 + // digits, ignoring any punctuation commonly found in phone numbers. This method + // does not require the number to be normalized in advance - but does assume + // that leading non-number symbols have been removed, such as by the method + // `extract_possible_number`. + // + + function isViablePhoneNumber(number) { + return number.length >= MIN_LENGTH_FOR_NSN && VALID_PHONE_NUMBER_PATTERN.test(number); + } // This is just a way to differentiate between a really invalid phone + // number like "abcde" and a valid phone number that a user has just + // started inputting, like "+1" or "1": both these cases would be + // considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this + // library can provide a more detailed error message — whether it's + // really "not a number", or is it just a start of a valid phone number. + + function isViablePhoneNumberStart(number) { + return VALID_PHONE_NUMBER_START_REG_EXP.test(number); + } + + // 1 or more valid digits, for use when parsing. + + var EXTN_PATTERN = new RegExp('(?:' + createExtensionPattern() + ')$', 'i'); // Strips any extension (as in, the part of the number dialled after the call is + // connected, usually indicated with extn, ext, x or similar) from the end of + // the number, and returns it. + + function extractExtension(number) { + var start = number.search(EXTN_PATTERN); + + if (start < 0) { + return {}; + } // If we find a potential extension, and the number preceding this is a viable + // number, we assume it is an extension. + + + var numberWithoutExtension = number.slice(0, start); + var matches = number.match(EXTN_PATTERN); + var i = 1; + + while (i < matches.length) { + if (matches[i]) { + return { + number: numberWithoutExtension, + ext: matches[i] + }; + } + + i++; + } + } + + // These mappings map a character (key) to a specific digit that should + // replace it for normalization purposes. Non-European digits that + // may be used in phone numbers are mapped to a European equivalent. + // + // E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`. + // + var DIGITS = { + '0': '0', + '1': '1', + '2': '2', + '3': '3', + '4': '4', + '5': '5', + '6': '6', + '7': '7', + '8': '8', + '9': '9', + "\uFF10": '0', + // Fullwidth digit 0 + "\uFF11": '1', + // Fullwidth digit 1 + "\uFF12": '2', + // Fullwidth digit 2 + "\uFF13": '3', + // Fullwidth digit 3 + "\uFF14": '4', + // Fullwidth digit 4 + "\uFF15": '5', + // Fullwidth digit 5 + "\uFF16": '6', + // Fullwidth digit 6 + "\uFF17": '7', + // Fullwidth digit 7 + "\uFF18": '8', + // Fullwidth digit 8 + "\uFF19": '9', + // Fullwidth digit 9 + "\u0660": '0', + // Arabic-indic digit 0 + "\u0661": '1', + // Arabic-indic digit 1 + "\u0662": '2', + // Arabic-indic digit 2 + "\u0663": '3', + // Arabic-indic digit 3 + "\u0664": '4', + // Arabic-indic digit 4 + "\u0665": '5', + // Arabic-indic digit 5 + "\u0666": '6', + // Arabic-indic digit 6 + "\u0667": '7', + // Arabic-indic digit 7 + "\u0668": '8', + // Arabic-indic digit 8 + "\u0669": '9', + // Arabic-indic digit 9 + "\u06F0": '0', + // Eastern-Arabic digit 0 + "\u06F1": '1', + // Eastern-Arabic digit 1 + "\u06F2": '2', + // Eastern-Arabic digit 2 + "\u06F3": '3', + // Eastern-Arabic digit 3 + "\u06F4": '4', + // Eastern-Arabic digit 4 + "\u06F5": '5', + // Eastern-Arabic digit 5 + "\u06F6": '6', + // Eastern-Arabic digit 6 + "\u06F7": '7', + // Eastern-Arabic digit 7 + "\u06F8": '8', + // Eastern-Arabic digit 8 + "\u06F9": '9' // Eastern-Arabic digit 9 + + }; + function parseDigit(character) { + return DIGITS[character]; + } + + /** + * Parses phone number characters from a string. + * Drops all punctuation leaving only digits and the leading `+` sign (if any). + * Also converts wide-ascii and arabic-indic numerals to conventional numerals. + * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`. + * @param {string} string + * @return {string} + * @example + * ```js + * // Outputs '8800555'. + * parseIncompletePhoneNumber('8 (800) 555') + * // Outputs '+7800555'. + * parseIncompletePhoneNumber('+7 800 555') + * ``` + */ + + function parseIncompletePhoneNumber(string) { + var result = ''; // Using `.split('')` here instead of normal `for ... of` + // because the importing application doesn't neccessarily include an ES6 polyfill. + // The `.split('')` approach discards "exotic" UTF-8 characters + // (the ones consisting of four bytes) but digits + // (including non-European ones) don't fall into that range + // so such "exotic" characters would be discarded anyway. + + for (var _iterator = string.split(''), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + var character = _ref; + result += parsePhoneNumberCharacter(character, result) || ''; + } + + return result; + } + /** + * Parses next character while parsing phone number digits (including a `+`) + * from text: discards everything except `+` and digits, and `+` is only allowed + * at the start of a phone number. + * For example, is used in `react-phone-number-input` where it uses + * [`input-format`](https://gitlab.com/catamphetamine/input-format). + * @param {string} character - Yet another character from raw input string. + * @param {string?} prevParsedCharacters - Previous parsed characters. + * @param {object} meta - Optional custom use-case-specific metadata. + * @return {string?} The parsed character. + */ + + function parsePhoneNumberCharacter(character, prevParsedCharacters) { + // Only allow a leading `+`. + if (character === '+') { + // If this `+` is not the first parsed character + // then discard it. + if (prevParsedCharacters) { + return; + } + + return '+'; + } // Allow digits. + + + return parseDigit(character); + } + + /** + * Merges two arrays. + * @param {*} a + * @param {*} b + * @return {*} + */ + function mergeArrays(a, b) { + var merged = a.slice(); + + for (var _iterator = b, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + var element = _ref; + + if (a.indexOf(element) < 0) { + merged.push(element); + } + } + + return merged.sort(function (a, b) { + return a - b; + }); // ES6 version, requires Set polyfill. + // let merged = new Set(a) + // for (const element of b) { + // merged.add(i) + // } + // return Array.from(merged).sort((a, b) => a - b) + } + + function checkNumberLength(nationalNumber, metadata) { + return checkNumberLengthForType(nationalNumber, undefined, metadata); + } // Checks whether a number is possible for the country based on its length. + // Should only be called for the "new" metadata which has "possible lengths". + + function checkNumberLengthForType(nationalNumber, type, metadata) { + var type_info = metadata.type(type); // There should always be "" set for every type element. + // This is declared in the XML schema. + // For size efficiency, where a sub-description (e.g. fixed-line) + // has the same "" as the "general description", this is missing, + // so we fall back to the "general description". Where no numbers of the type + // exist at all, there is one possible length (-1) which is guaranteed + // not to match the length of any real phone number. + + var possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths(); // let local_lengths = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal() + // Metadata before version `1.0.18` didn't contain `possible_lengths`. + + if (!possible_lengths) { + return 'IS_POSSIBLE'; + } + + if (type === 'FIXED_LINE_OR_MOBILE') { + // No such country in metadata. + + /* istanbul ignore next */ + if (!metadata.type('FIXED_LINE')) { + // The rare case has been encountered where no fixedLine data is available + // (true for some non-geographic entities), so we just check mobile. + return checkNumberLengthForType(nationalNumber, 'MOBILE', metadata); + } + + var mobile_type = metadata.type('MOBILE'); + + if (mobile_type) { + // Merge the mobile data in if there was any. "Concat" creates a new + // array, it doesn't edit possible_lengths in place, so we don't need a copy. + // Note that when adding the possible lengths from mobile, we have + // to again check they aren't empty since if they are this indicates + // they are the same as the general desc and should be obtained from there. + possible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths()); // The current list is sorted; we need to merge in the new list and + // re-sort (duplicates are okay). Sorting isn't so expensive because + // the lists are very small. + // if (local_lengths) { + // local_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal()) + // } else { + // local_lengths = mobile_type.possibleLengthsLocal() + // } + } + } // If the type doesn't exist then return 'INVALID_LENGTH'. + else if (type && !type_info) { + return 'INVALID_LENGTH'; + } + + var actual_length = nationalNumber.length; // In `libphonenumber-js` all "local-only" formats are dropped for simplicity. + // // This is safe because there is never an overlap beween the possible lengths + // // and the local-only lengths; this is checked at build time. + // if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0) + // { + // return 'IS_POSSIBLE_LOCAL_ONLY' + // } + + var minimum_length = possible_lengths[0]; + + if (minimum_length === actual_length) { + return 'IS_POSSIBLE'; + } + + if (minimum_length > actual_length) { + return 'TOO_SHORT'; + } + + if (possible_lengths[possible_lengths.length - 1] < actual_length) { + return 'TOO_LONG'; + } // We skip the first element since we've already checked it. + + + return possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH'; + } + + function isPossiblePhoneNumber(input, options, metadata) { + /* istanbul ignore if */ + if (options === undefined) { + options = {}; + } + + metadata = new Metadata(metadata); + + if (options.v2) { + if (!input.countryCallingCode) { + throw new Error('Invalid phone number object passed'); + } + + metadata.selectNumberingPlan(input.countryCallingCode); + } else { + if (!input.phone) { + return false; + } + + if (input.country) { + if (!metadata.hasCountry(input.country)) { + throw new Error("Unknown country: ".concat(input.country)); + } + + metadata.country(input.country); + } else { + if (!input.countryCallingCode) { + throw new Error('Invalid phone number object passed'); + } + + metadata.selectNumberingPlan(input.countryCallingCode); + } + } + + if (metadata.possibleLengths()) { + return isPossibleNumber(input.phone || input.nationalNumber, metadata); + } else { + // There was a bug between `1.7.35` and `1.7.37` where "possible_lengths" + // were missing for "non-geographical" numbering plans. + // Just assume the number is possible in such cases: + // it's unlikely that anyone generated their custom metadata + // in that short period of time (one day). + // This code can be removed in some future major version update. + if (input.countryCallingCode && metadata.isNonGeographicCallingCode(input.countryCallingCode)) { + // "Non-geographic entities" did't have `possibleLengths` + // due to a bug in metadata generation process. + return true; + } else { + throw new Error('Missing "possibleLengths" in metadata. Perhaps the metadata has been generated before v1.0.18.'); + } + } + } + function isPossibleNumber(nationalNumber, metadata) { + //, isInternational) { + switch (checkNumberLength(nationalNumber, metadata)) { + case 'IS_POSSIBLE': + return true; + // This library ignores "local-only" phone numbers (for simplicity). + // See the readme for more info on what are "local-only" phone numbers. + // case 'IS_POSSIBLE_LOCAL_ONLY': + // return !isInternational + + default: + return false; + } + } + + function _slicedToArray$1(arr, i) { return _arrayWithHoles$1(arr) || _iterableToArrayLimit$1(arr, i) || _nonIterableRest$1(); } + + function _nonIterableRest$1() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } + + function _iterableToArrayLimit$1(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + + function _arrayWithHoles$1(arr) { if (Array.isArray(arr)) return arr; } + + /** + * @param {string} text - Phone URI (RFC 3966). + * @return {object} `{ ?number, ?ext }`. + */ + + function parseRFC3966(text) { + var number; + var ext; // Replace "tel:" with "tel=" for parsing convenience. + + text = text.replace(/^tel:/, 'tel='); + + for (var _iterator = text.split(';'), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + var part = _ref; + + var _part$split = part.split('='), + _part$split2 = _slicedToArray$1(_part$split, 2), + name = _part$split2[0], + value = _part$split2[1]; + + switch (name) { + case 'tel': + number = value; + break; + + case 'ext': + ext = value; + break; + + case 'phone-context': + // Only "country contexts" are supported. + // "Domain contexts" are ignored. + if (value[0] === '+') { + number = value + number; + } + + break; + } + } // If the phone number is not viable, then abort. + + + if (!isViablePhoneNumber(number)) { + return {}; + } + + var result = { + number: number + }; + + if (ext) { + result.ext = ext; + } + + return result; + } + /** + * @param {object} - `{ ?number, ?extension }`. + * @return {string} Phone URI (RFC 3966). + */ + + function formatRFC3966(_ref2) { + var number = _ref2.number, + ext = _ref2.ext; + + if (!number) { + return ''; + } + + if (number[0] !== '+') { + throw new Error("\"formatRFC3966()\" expects \"number\" to be in E.164 format."); + } + + return "tel:".concat(number).concat(ext ? ';ext=' + ext : ''); + } + + /** + * Checks whether the entire input sequence can be matched + * against the regular expression. + * @return {boolean} + */ + function matchesEntirely(text, regular_expression) { + // If assigning the `''` default value is moved to the arguments above, + // code coverage would decrease for some weird reason. + text = text || ''; + return new RegExp('^(?:' + regular_expression + ')$').test(text); + } + + var NON_FIXED_LINE_PHONE_TYPES = ['MOBILE', 'PREMIUM_RATE', 'TOLL_FREE', 'SHARED_COST', 'VOIP', 'PERSONAL_NUMBER', 'PAGER', 'UAN', 'VOICEMAIL']; // Finds out national phone number type (fixed line, mobile, etc) + + function getNumberType(input, options, metadata) { + // If assigning the `{}` default value is moved to the arguments above, + // code coverage would decrease for some weird reason. + options = options || {}; // When `parse()` returned `{}` + // meaning that the phone number is not a valid one. + + if (!input.country) { + return; + } + + metadata = new Metadata(metadata); + metadata.selectNumberingPlan(input.country, input.countryCallingCode); + var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // The following is copy-pasted from the original function: + // https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835 + // Is this national number even valid for this country + + if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) { + return; + } // Is it fixed line number + + + if (isNumberTypeEqualTo(nationalNumber, 'FIXED_LINE', metadata)) { + // Because duplicate regular expressions are removed + // to reduce metadata size, if "mobile" pattern is "" + // then it means it was removed due to being a duplicate of the fixed-line pattern. + // + if (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') { + return 'FIXED_LINE_OR_MOBILE'; + } // v1 metadata. + // Legacy. + // Deprecated. + + + if (!metadata.type('MOBILE')) { + return 'FIXED_LINE_OR_MOBILE'; + } // Check if the number happens to qualify as both fixed line and mobile. + // (no such country in the minimal metadata set) + + /* istanbul ignore if */ + + + if (isNumberTypeEqualTo(nationalNumber, 'MOBILE', metadata)) { + return 'FIXED_LINE_OR_MOBILE'; + } + + return 'FIXED_LINE'; + } + + for (var _i = 0, _NON_FIXED_LINE_PHONE = NON_FIXED_LINE_PHONE_TYPES; _i < _NON_FIXED_LINE_PHONE.length; _i++) { + var type = _NON_FIXED_LINE_PHONE[_i]; + + if (isNumberTypeEqualTo(nationalNumber, type, metadata)) { + return type; + } + } + } + function isNumberTypeEqualTo(nationalNumber, type, metadata) { + type = metadata.type(type); + + if (!type || !type.pattern()) { + return false; + } // Check if any possible number lengths are present; + // if so, we use them to avoid checking + // the validation pattern if they don't match. + // If they are absent, this means they match + // the general description, which we have + // already checked before a specific number type. + + + if (type.possibleLengths() && type.possibleLengths().indexOf(nationalNumber.length) < 0) { + return false; + } + + return matchesEntirely(nationalNumber, type.pattern()); + } + + /** + * Checks if a given phone number is valid. + * + * If the `number` is a string, it will be parsed to an object, + * but only if it contains only valid phone number characters (including punctuation). + * If the `number` is an object, it is used as is. + * + * The optional `defaultCountry` argument is the default country. + * I.e. it does not restrict to just that country, + * e.g. in those cases where several countries share + * the same phone numbering rules (NANPA, Britain, etc). + * For example, even though the number `07624 369230` + * belongs to the Isle of Man ("IM" country code) + * calling `isValidNumber('07624369230', 'GB', metadata)` + * still returns `true` because the country is not restricted to `GB`, + * it's just that `GB` is the default one for the phone numbering rules. + * For restricting the country see `isValidNumberForRegion()` + * though restricting a country might not be a good idea. + * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion + * + * Examples: + * + * ```js + * isValidNumber('+78005553535', metadata) + * isValidNumber('8005553535', 'RU', metadata) + * isValidNumber('88005553535', 'RU', metadata) + * isValidNumber({ phone: '8005553535', country: 'RU' }, metadata) + * ``` + */ + + function isValidNumber(input, options, metadata) { + // If assigning the `{}` default value is moved to the arguments above, + // code coverage would decrease for some weird reason. + options = options || {}; + metadata = new Metadata(metadata); // This is just to support `isValidNumber({})` + // for cases when `parseNumber()` returns `{}`. + + if (!input.country) { + return false; + } + + metadata.selectNumberingPlan(input.country, input.countryCallingCode); // By default, countries only have type regexps when it's required for + // distinguishing different countries having the same `countryCallingCode`. + + if (metadata.hasTypes()) { + return getNumberType(input, options, metadata.metadata) !== undefined; + } // If there are no type regexps for this country in metadata then use + // `nationalNumberPattern` as a "better than nothing" replacement. + + + var national_number = options.v2 ? input.nationalNumber : input.phone; + return matchesEntirely(national_number, metadata.nationalNumberPattern()); + } + + // + // E.g. "(999) 111-22-33" -> "999 111 22 33" + // + // For some reason Google's metadata contains ``s with brackets and dashes. + // Meanwhile, there's no single opinion about using punctuation in international phone numbers. + // + // For example, Google's `` for USA is `+1 213-373-4253`. + // And here's a quote from WikiPedia's "North American Numbering Plan" page: + // https://en.wikipedia.org/wiki/North_American_Numbering_Plan + // + // "The country calling code for all countries participating in the NANP is 1. + // In international format, an NANP number should be listed as +1 301 555 01 00, + // where 301 is an area code (Maryland)." + // + // I personally prefer the international format without any punctuation. + // For example, brackets are remnants of the old age, meaning that the + // phone number part in brackets (so called "area code") can be omitted + // if dialing within the same "area". + // And hyphens were clearly introduced for splitting local numbers into memorizable groups. + // For example, remembering "5553535" is difficult but "555-35-35" is much simpler. + // Imagine a man taking a bus from home to work and seeing an ad with a phone number. + // He has a couple of seconds to memorize that number until it passes by. + // If it were spaces instead of hyphens the man wouldn't necessarily get it, + // but with hyphens instead of spaces the grouping is more explicit. + // I personally think that hyphens introduce visual clutter, + // so I prefer replacing them with spaces in international numbers. + // In the modern age all output is done on displays where spaces are clearly distinguishable + // so hyphens can be safely replaced with spaces without losing any legibility. + // + + function applyInternationalSeparatorStyle(formattedNumber) { + return formattedNumber.replace(new RegExp("[".concat(VALID_PUNCTUATION, "]+"), 'g'), ' ').trim(); + } + + // first group is not used in the national pattern (e.g. Argentina) so the $1 + // group does not match correctly. Therefore, we use `\d`, so that the first + // group actually used in the pattern will be matched. + + var FIRST_GROUP_PATTERN = /(\$\d)/; + function formatNationalNumberUsingFormat(number, format, _ref) { + var useInternationalFormat = _ref.useInternationalFormat, + withNationalPrefix = _ref.withNationalPrefix; + _ref.carrierCode; + _ref.metadata; + var formattedNumber = number.replace(new RegExp(format.pattern()), useInternationalFormat ? format.internationalFormat() : // This library doesn't use `domestic_carrier_code_formatting_rule`, + // because that one is only used when formatting phone numbers + // for dialing from a mobile phone, and this is not a dialing library. + // carrierCode && format.domesticCarrierCodeFormattingRule() + // // First, replace the $CC in the formatting rule with the desired carrier code. + // // Then, replace the $FG in the formatting rule with the first group + // // and the carrier code combined in the appropriate way. + // ? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode)) + // : ( + // withNationalPrefix && format.nationalPrefixFormattingRule() + // ? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()) + // : format.format() + // ) + withNationalPrefix && format.nationalPrefixFormattingRule() ? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()) : format.format()); + + if (useInternationalFormat) { + return applyInternationalSeparatorStyle(formattedNumber); + } + + return formattedNumber; + } + + /** + * Pattern that makes it easy to distinguish whether a region has a single + * international dialing prefix or not. If a region has a single international + * prefix (e.g. 011 in USA), it will be represented as a string that contains + * a sequence of ASCII digits, and possibly a tilde, which signals waiting for + * the tone. If there are multiple available international prefixes in a + * region, they will be represented as a regex string that always contains one + * or more characters that are not ASCII digits or a tilde. + */ + + var SINGLE_IDD_PREFIX_REG_EXP = /^[\d]+(?:[~\u2053\u223C\uFF5E][\d]+)?$/; // For regions that have multiple IDD prefixes + // a preferred IDD prefix is returned. + + function getIddPrefix(country, callingCode, metadata) { + var countryMetadata = new Metadata(metadata); + countryMetadata.selectNumberingPlan(country, callingCode); + + if (countryMetadata.defaultIDDPrefix()) { + return countryMetadata.defaultIDDPrefix(); + } + + if (SINGLE_IDD_PREFIX_REG_EXP.test(countryMetadata.IDDPrefix())) { + return countryMetadata.IDDPrefix(); + } + } + + function _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$4(target, key, source[key]); }); } return target; } + + function _defineProperty$4(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + var DEFAULT_OPTIONS = { + formatExtension: function formatExtension(formattedNumber, extension, metadata) { + return "".concat(formattedNumber).concat(metadata.ext()).concat(extension); + } // Formats a phone number + // + // Example use cases: + // + // ```js + // formatNumber('8005553535', 'RU', 'INTERNATIONAL') + // formatNumber('8005553535', 'RU', 'INTERNATIONAL', metadata) + // formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL') + // formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL', metadata) + // formatNumber('+78005553535', 'NATIONAL') + // formatNumber('+78005553535', 'NATIONAL', metadata) + // ``` + // + + }; + function formatNumber(input, format, options, metadata) { + // Apply default options. + if (options) { + options = _objectSpread$4({}, DEFAULT_OPTIONS, options); + } else { + options = DEFAULT_OPTIONS; + } + + metadata = new Metadata(metadata); + + if (input.country && input.country !== '001') { + // Validate `input.country`. + if (!metadata.hasCountry(input.country)) { + throw new Error("Unknown country: ".concat(input.country)); + } + + metadata.country(input.country); + } else if (input.countryCallingCode) { + metadata.selectNumberingPlan(input.countryCallingCode); + } else return input.phone || ''; + + var countryCallingCode = metadata.countryCallingCode(); + var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // This variable should have been declared inside `case`s + // but Babel has a bug and it says "duplicate variable declaration". + + var number; + + switch (format) { + case 'NATIONAL': + // Legacy argument support. + // (`{ country: ..., phone: '' }`) + if (!nationalNumber) { + return ''; + } + + number = formatNationalNumber(nationalNumber, input.carrierCode, 'NATIONAL', metadata, options); + return addExtension(number, input.ext, metadata, options.formatExtension); + + case 'INTERNATIONAL': + // Legacy argument support. + // (`{ country: ..., phone: '' }`) + if (!nationalNumber) { + return "+".concat(countryCallingCode); + } + + number = formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata, options); + number = "+".concat(countryCallingCode, " ").concat(number); + return addExtension(number, input.ext, metadata, options.formatExtension); + + case 'E.164': + // `E.164` doesn't define "phone number extensions". + return "+".concat(countryCallingCode).concat(nationalNumber); + + case 'RFC3966': + return formatRFC3966({ + number: "+".concat(countryCallingCode).concat(nationalNumber), + ext: input.ext + }); + // For reference, here's Google's IDD formatter: + // https://github.com/google/libphonenumber/blob/32719cf74e68796788d1ca45abc85dcdc63ba5b9/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L1546 + // Not saying that this IDD formatter replicates it 1:1, but it seems to work. + // Who would even need to format phone numbers in IDD format anyway? + + case 'IDD': + if (!options.fromCountry) { + return; // throw new Error('`fromCountry` option not passed for IDD-prefixed formatting.') + } + + var formattedNumber = formatIDD(nationalNumber, input.carrierCode, countryCallingCode, options.fromCountry, metadata); + return addExtension(formattedNumber, input.ext, metadata, options.formatExtension); + + default: + throw new Error("Unknown \"format\" argument passed to \"formatNumber()\": \"".concat(format, "\"")); + } + } + + function formatNationalNumber(number, carrierCode, formatAs, metadata, options) { + var format = chooseFormatForNumber(metadata.formats(), number); + + if (!format) { + return number; + } + + return formatNationalNumberUsingFormat(number, format, { + useInternationalFormat: formatAs === 'INTERNATIONAL', + withNationalPrefix: format.nationalPrefixIsOptionalWhenFormattingInNationalFormat() && options && options.nationalPrefix === false ? false : true, + carrierCode: carrierCode, + metadata: metadata + }); + } + + function chooseFormatForNumber(availableFormats, nationalNnumber) { + for (var _iterator = availableFormats, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + var format = _ref; + + // Validate leading digits + if (format.leadingDigitsPatterns().length > 0) { + // The last leading_digits_pattern is used here, as it is the most detailed + var lastLeadingDigitsPattern = format.leadingDigitsPatterns()[format.leadingDigitsPatterns().length - 1]; // If leading digits don't match then move on to the next phone number format + + if (nationalNnumber.search(lastLeadingDigitsPattern) !== 0) { + continue; + } + } // Check that the national number matches the phone number format regular expression + + + if (matchesEntirely(nationalNnumber, format.pattern())) { + return format; + } + } + } + + function addExtension(formattedNumber, ext, metadata, formatExtension) { + return ext ? formatExtension(formattedNumber, ext, metadata) : formattedNumber; + } + + function formatIDD(nationalNumber, carrierCode, countryCallingCode, fromCountry, metadata) { + var fromCountryCallingCode = getCountryCallingCode(fromCountry, metadata.metadata); // When calling within the same country calling code. + + if (fromCountryCallingCode === countryCallingCode) { + var formattedNumber = formatNationalNumber(nationalNumber, carrierCode, 'NATIONAL', metadata); // For NANPA regions, return the national format for these regions + // but prefix it with the country calling code. + + if (countryCallingCode === '1') { + return countryCallingCode + ' ' + formattedNumber; + } // If regions share a country calling code, the country calling code need + // not be dialled. This also applies when dialling within a region, so this + // if clause covers both these cases. Technically this is the case for + // dialling from La Reunion to other overseas departments of France (French + // Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover + // this edge case for now and for those cases return the version including + // country calling code. Details here: + // http://www.petitfute.com/voyage/225-info-pratiques-reunion + // + + + return formattedNumber; + } + + var iddPrefix = getIddPrefix(fromCountry, undefined, metadata.metadata); + + if (iddPrefix) { + return "".concat(iddPrefix, " ").concat(countryCallingCode, " ").concat(formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata)); + } + } + + function _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$3(target, key, source[key]); }); } return target; } + + function _defineProperty$3(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + + function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + + var PhoneNumber = + /*#__PURE__*/ + function () { + function PhoneNumber(countryCallingCode, nationalNumber, metadata) { + _classCallCheck(this, PhoneNumber); + + if (!countryCallingCode) { + throw new TypeError('`country` or `countryCallingCode` not passed'); + } + + if (!nationalNumber) { + throw new TypeError('`nationalNumber` not passed'); + } + + if (!metadata) { + throw new TypeError('`metadata` not passed'); + } + + var _metadata = new Metadata(metadata); // If country code is passed then derive `countryCallingCode` from it. + // Also store the country code as `.country`. + + + if (isCountryCode(countryCallingCode)) { + this.country = countryCallingCode; + + _metadata.country(countryCallingCode); + + countryCallingCode = _metadata.countryCallingCode(); + } + + this.countryCallingCode = countryCallingCode; + this.nationalNumber = nationalNumber; + this.number = '+' + this.countryCallingCode + this.nationalNumber; + this.metadata = metadata; + } + + _createClass(PhoneNumber, [{ + key: "setExt", + value: function setExt(ext) { + this.ext = ext; + } + }, { + key: "isPossible", + value: function isPossible() { + return isPossiblePhoneNumber(this, { + v2: true + }, this.metadata); + } + }, { + key: "isValid", + value: function isValid() { + return isValidNumber(this, { + v2: true + }, this.metadata); + } + }, { + key: "isNonGeographic", + value: function isNonGeographic() { + var metadata = new Metadata(this.metadata); + return metadata.isNonGeographicCallingCode(this.countryCallingCode); + } + }, { + key: "isEqual", + value: function isEqual(phoneNumber) { + return this.number === phoneNumber.number && this.ext === phoneNumber.ext; + } // // Is just an alias for `this.isValid() && this.country === country`. + // // https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion + // isValidForRegion(country) { + // return isValidNumberForRegion(this, country, { v2: true }, this.metadata) + // } + + }, { + key: "getType", + value: function getType() { + return getNumberType(this, { + v2: true + }, this.metadata); + } + }, { + key: "format", + value: function format(_format, options) { + return formatNumber(this, _format, options ? _objectSpread$3({}, options, { + v2: true + }) : { + v2: true + }, this.metadata); + } + }, { + key: "formatNational", + value: function formatNational(options) { + return this.format('NATIONAL', options); + } + }, { + key: "formatInternational", + value: function formatInternational(options) { + return this.format('INTERNATIONAL', options); + } + }, { + key: "getURI", + value: function getURI(options) { + return this.format('RFC3966', options); + } + }]); + + return PhoneNumber; + }(); + + var isCountryCode = function isCountryCode(value) { + return /^[A-Z]{2}$/.test(value); + }; + + var CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])'); + function stripIddPrefix(number, country, callingCode, metadata) { + if (!country) { + return; + } // Check if the number is IDD-prefixed. + + + var countryMetadata = new Metadata(metadata); + countryMetadata.selectNumberingPlan(country, callingCode); + var IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix()); + + if (number.search(IDDPrefixPattern) !== 0) { + return; + } // Strip IDD prefix. + + + number = number.slice(number.match(IDDPrefixPattern)[0].length); // If there're any digits after an IDD prefix, + // then those digits are a country calling code. + // Since no country code starts with a `0`, + // the code below validates that the next digit (if present) is not `0`. + + var matchedGroups = number.match(CAPTURING_DIGIT_PATTERN); + + if (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) { + if (matchedGroups[1] === '0') { + return; + } + } + + return number; + } + + /** + * Strips any national prefix (such as 0, 1) present in a + * (possibly incomplete) number provided. + * "Carrier codes" are only used in Colombia and Brazil, + * and only when dialing within those countries from a mobile phone to a fixed line number. + * Sometimes it won't actually strip national prefix + * and will instead prepend some digits to the `number`: + * for example, when number `2345678` is passed with `VI` country selected, + * it will return `{ number: "3402345678" }`, because `340` area code is prepended. + * @param {string} number — National number digits. + * @param {object} metadata — Metadata with country selected. + * @return {object} `{ nationalNumber: string, nationalPrefix: string? carrierCode: string? }`. + */ + function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) { + if (number && metadata.numberingPlan.nationalPrefixForParsing()) { + // See METADATA.md for the description of + // `national_prefix_for_parsing` and `national_prefix_transform_rule`. + // Attempt to parse the first digits as a national prefix. + var prefixPattern = new RegExp('^(?:' + metadata.numberingPlan.nationalPrefixForParsing() + ')'); + var prefixMatch = prefixPattern.exec(number); + + if (prefixMatch) { + var nationalNumber; + var carrierCode; // https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule + // If a `national_prefix_for_parsing` has any "capturing groups" + // then it means that the national (significant) number is equal to + // those "capturing groups" transformed via `national_prefix_transform_rule`, + // and nothing could be said about the actual national prefix: + // what is it and was it even there. + // If a `national_prefix_for_parsing` doesn't have any "capturing groups", + // then everything it matches is a national prefix. + // To determine whether `national_prefix_for_parsing` matched any + // "capturing groups", the value of the result of calling `.exec()` + // is looked at, and if it has non-undefined values where there're + // "capturing groups" in the regular expression, then it means + // that "capturing groups" have been matched. + // It's not possible to tell whether there'll be any "capturing gropus" + // before the matching process, because a `national_prefix_for_parsing` + // could exhibit both behaviors. + + var capturedGroupsCount = prefixMatch.length - 1; + var hasCapturedGroups = capturedGroupsCount > 0 && prefixMatch[capturedGroupsCount]; + + if (metadata.nationalPrefixTransformRule() && hasCapturedGroups) { + nationalNumber = number.replace(prefixPattern, metadata.nationalPrefixTransformRule()); // If there's more than one captured group, + // then carrier code is the second one. + + if (capturedGroupsCount > 1) { + carrierCode = prefixMatch[1]; + } + } // If there're no "capturing groups", + // or if there're "capturing groups" but no + // `national_prefix_transform_rule`, + // then just strip the national prefix from the number, + // and possibly a carrier code. + // Seems like there could be more. + else { + // `prefixBeforeNationalNumber` is the whole substring matched by + // the `national_prefix_for_parsing` regular expression. + // There seem to be no guarantees that it's just a national prefix. + // For example, if there's a carrier code, it's gonna be a + // part of `prefixBeforeNationalNumber` too. + var prefixBeforeNationalNumber = prefixMatch[0]; + nationalNumber = number.slice(prefixBeforeNationalNumber.length); // If there's at least one captured group, + // then carrier code is the first one. + + if (hasCapturedGroups) { + carrierCode = prefixMatch[1]; + } + } // Tries to guess whether a national prefix was present in the input. + // This is not something copy-pasted from Google's library: + // they don't seem to have an equivalent for that. + // So this isn't an "officially approved" way of doing something like that. + // But since there seems no other existing method, this library uses it. + + + var nationalPrefix; + + if (hasCapturedGroups) { + var possiblePositionOfTheFirstCapturedGroup = number.indexOf(prefixMatch[1]); + var possibleNationalPrefix = number.slice(0, possiblePositionOfTheFirstCapturedGroup); // Example: an Argentinian (AR) phone number `0111523456789`. + // `prefixMatch[0]` is `01115`, and `$1` is `11`, + // and the rest of the phone number is `23456789`. + // The national number is transformed via `9$1` to `91123456789`. + // National prefix `0` is detected being present at the start. + // if (possibleNationalPrefix.indexOf(metadata.numberingPlan.nationalPrefix()) === 0) { + + if (possibleNationalPrefix === metadata.numberingPlan.nationalPrefix()) { + nationalPrefix = metadata.numberingPlan.nationalPrefix(); + } + } else { + nationalPrefix = prefixMatch[0]; + } + + return { + nationalNumber: nationalNumber, + nationalPrefix: nationalPrefix, + carrierCode: carrierCode + }; + } + } + + return { + nationalNumber: number + }; + } + + /** + * Strips national prefix and carrier code from a complete phone number. + * The difference from the non-"FromCompleteNumber" function is that + * it won't extract national prefix if the resultant number is too short + * to be a complete number for the selected phone numbering plan. + * @param {string} number — Complete phone number digits. + * @param {Metadata} metadata — Metadata with a phone numbering plan selected. + * @return {object} `{ nationalNumber: string, carrierCode: string? }`. + */ + + function extractNationalNumber(number, metadata) { + // Parsing national prefixes and carrier codes + // is only required for local phone numbers + // but some people don't understand that + // and sometimes write international phone numbers + // with national prefixes (or maybe even carrier codes). + // http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html + // Google's original library forgives such mistakes + // and so does this library, because it has been requested: + // https://github.com/catamphetamine/libphonenumber-js/issues/127 + var _extractNationalNumbe = extractNationalNumberFromPossiblyIncompleteNumber(number, metadata), + nationalNumber = _extractNationalNumbe.nationalNumber, + carrierCode = _extractNationalNumbe.carrierCode; + + if (!shouldExtractNationalPrefix(number, nationalNumber, metadata)) { + // Don't strip the national prefix. + return { + nationalNumber: number + }; + } // If a national prefix has been extracted, check to see + // if the resultant number isn't too short. + // Same code in Google's `libphonenumber`: + // https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3291-L3302 + // For some reason, they do this check right after the `national_number_pattern` check + // this library does in `shouldExtractNationalPrefix()` function. + // Why is there a second "resultant" number validity check? + // They don't provide an explanation. + // This library just copies the behavior. + + + if (number.length !== nationalNumber.length + (carrierCode ? carrierCode.length : 0)) { + // If not using legacy generated metadata (before version `1.0.18`) + // then it has "possible lengths", so use those to validate the number length. + if (metadata.possibleLengths()) { + // "We require that the NSN remaining after stripping the national prefix and + // carrier code be long enough to be a possible length for the region. + // Otherwise, we don't do the stripping, since the original number could be + // a valid short number." + // https://github.com/google/libphonenumber/blob/876268eb1ad6cdc1b7b5bef17fc5e43052702d57/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3236-L3250 + switch (checkNumberLength(nationalNumber, metadata)) { + case 'TOO_SHORT': + case 'INVALID_LENGTH': + // case 'IS_POSSIBLE_LOCAL_ONLY': + // Don't strip the national prefix. + return { + nationalNumber: number + }; + } + } + } + + return { + nationalNumber: nationalNumber, + carrierCode: carrierCode + }; + } // In some countries, the same digit could be a national prefix + // or a leading digit of a valid phone number. + // For example, in Russia, national prefix is `8`, + // and also `800 555 35 35` is a valid number + // in which `8` is not a national prefix, but the first digit + // of a national (significant) number. + // Same's with Belarus: + // `82004910060` is a valid national (significant) number, + // but `2004910060` is not. + // To support such cases (to prevent the code from always stripping + // national prefix), a condition is imposed: a national prefix + // is not extracted when the original number is "viable" and the + // resultant number is not, a "viable" national number being the one + // that matches `national_number_pattern`. + + function shouldExtractNationalPrefix(number, nationalSignificantNumber, metadata) { + // The equivalent in Google's code is: + // https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L2969-L3004 + if (matchesEntirely(number, metadata.nationalNumberPattern()) && !matchesEntirely(nationalSignificantNumber, metadata.nationalNumberPattern())) { + return false; + } // Just "possible" number check would be more relaxed, so it's not used. + // if (isPossibleNumber(number, metadata) && + // !isPossibleNumber(numberWithNationalPrefixExtracted, metadata)) { + // return false + // } + + + return true; + } + + /** + * Sometimes some people incorrectly input international phone numbers + * without the leading `+`. This function corrects such input. + * @param {string} number — Phone number digits. + * @param {string?} country + * @param {string?} callingCode + * @param {object} metadata + * @return {object} `{ countryCallingCode: string?, number: string }`. + */ + + function extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, callingCode, metadata) { + var countryCallingCode = country ? getCountryCallingCode(country, metadata) : callingCode; + + if (number.indexOf(countryCallingCode) === 0) { + metadata = new Metadata(metadata); + metadata.selectNumberingPlan(country, callingCode); + var possibleShorterNumber = number.slice(countryCallingCode.length); + + var _extractNationalNumbe = extractNationalNumber(possibleShorterNumber, metadata), + possibleShorterNationalNumber = _extractNationalNumbe.nationalNumber; + + var _extractNationalNumbe2 = extractNationalNumber(number, metadata), + nationalNumber = _extractNationalNumbe2.nationalNumber; // If the number was not valid before but is valid now, + // or if it was too long before, we consider the number + // with the country calling code stripped to be a better result + // and keep that instead. + // For example, in Germany (+49), `49` is a valid area code, + // so if a number starts with `49`, it could be both a valid + // national German number or an international number without + // a leading `+`. + + + if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) && matchesEntirely(possibleShorterNationalNumber, metadata.nationalNumberPattern()) || checkNumberLength(nationalNumber, metadata) === 'TOO_LONG') { + return { + countryCallingCode: countryCallingCode, + number: possibleShorterNumber + }; + } + } + + return { + number: number + }; + } + + /** + * Converts a phone number digits (possibly with a `+`) + * into a calling code and the rest phone number digits. + * The "rest phone number digits" could include + * a national prefix, carrier code, and national + * (significant) number. + * @param {string} number — Phone number digits (possibly with a `+`). + * @param {string} [country] — Default country. + * @param {string} [callingCode] — Default calling code (some phone numbering plans are non-geographic). + * @param {object} metadata + * @return {object} `{ countryCallingCode: string?, number: string }` + * @example + * // Returns `{ countryCallingCode: "1", number: "2133734253" }`. + * extractCountryCallingCode('2133734253', 'US', null, metadata) + * extractCountryCallingCode('2133734253', null, '1', metadata) + * extractCountryCallingCode('+12133734253', null, null, metadata) + * extractCountryCallingCode('+12133734253', 'RU', null, metadata) + */ + + function extractCountryCallingCode(number, country, callingCode, metadata) { + if (!number) { + return {}; + } // If this is not an international phone number, + // then either extract an "IDD" prefix, or extract a + // country calling code from a number by autocorrecting it + // by prepending a leading `+` in cases when it starts + // with the country calling code. + // https://wikitravel.org/en/International_dialling_prefix + // https://github.com/catamphetamine/libphonenumber-js/issues/376 + + + if (number[0] !== '+') { + // Convert an "out-of-country" dialing phone number + // to a proper international phone number. + var numberWithoutIDD = stripIddPrefix(number, country, callingCode, metadata); // If an IDD prefix was stripped then + // convert the number to international one + // for subsequent parsing. + + if (numberWithoutIDD && numberWithoutIDD !== number) { + number = '+' + numberWithoutIDD; + } else { + // Check to see if the number starts with the country calling code + // for the default country. If so, we remove the country calling code, + // and do some checks on the validity of the number before and after. + // https://github.com/catamphetamine/libphonenumber-js/issues/376 + if (country || callingCode) { + var _extractCountryCallin = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, callingCode, metadata), + countryCallingCode = _extractCountryCallin.countryCallingCode, + shorterNumber = _extractCountryCallin.number; + + if (countryCallingCode) { + return { + countryCallingCode: countryCallingCode, + number: shorterNumber + }; + } + } + + return { + number: number + }; + } + } // Fast abortion: country codes do not begin with a '0' + + + if (number[1] === '0') { + return {}; + } + + metadata = new Metadata(metadata); // The thing with country phone codes + // is that they are orthogonal to each other + // i.e. there's no such country phone code A + // for which country phone code B exists + // where B starts with A. + // Therefore, while scanning digits, + // if a valid country code is found, + // that means that it is the country code. + // + + var i = 2; + + while (i - 1 <= MAX_LENGTH_COUNTRY_CODE && i <= number.length) { + var _countryCallingCode = number.slice(1, i); + + if (metadata.hasCallingCode(_countryCallingCode)) { + metadata.selectNumberingPlan(_countryCallingCode); + return { + countryCallingCode: _countryCallingCode, + number: number.slice(i) + }; + } + + i++; + } + + return {}; + } + + var USE_NON_GEOGRAPHIC_COUNTRY_CODE = false; + function getCountryByCallingCode(callingCode, nationalPhoneNumber, metadata) { + /* istanbul ignore if */ + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + if (metadata.isNonGeographicCallingCode(callingCode)) { + return '001'; + } + } // Is always non-empty, because `callingCode` is always valid + + + var possibleCountries = metadata.getCountryCodesForCallingCode(callingCode); + + if (!possibleCountries) { + return; + } // If there's just one country corresponding to the country code, + // then just return it, without further phone number digits validation. + + + if (possibleCountries.length === 1) { + return possibleCountries[0]; + } + + return selectCountryFromList(possibleCountries, nationalPhoneNumber, metadata.metadata); + } + + function selectCountryFromList(possibleCountries, nationalPhoneNumber, metadata) { + // Re-create `metadata` because it will be selecting a `country`. + metadata = new Metadata(metadata); + + for (var _iterator = possibleCountries, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + var country = _ref; + metadata.country(country); // Leading digits check would be the simplest and fastest one. + // Leading digits patterns are only defined for about 20% of all countries. + // https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits + // Matching "leading digits" is a sufficient but not necessary condition. + + if (metadata.leadingDigits()) { + if (nationalPhoneNumber && nationalPhoneNumber.search(metadata.leadingDigits()) === 0) { + return country; + } + } // Else perform full validation with all of those + // fixed-line/mobile/etc regular expressions. + else if (getNumberType({ + phone: nationalPhoneNumber, + country: country + }, undefined, metadata.metadata)) { + return country; + } + } + } + + // This is a port of Google Android `libphonenumber`'s + // This prevents malicious input from consuming CPU. + + var MAX_INPUT_STRING_LENGTH = 250; // This consists of the plus symbol, digits, and arabic-indic digits. + + var PHONE_NUMBER_START_PATTERN = new RegExp('[' + PLUS_CHARS + VALID_DIGITS + ']'); // Regular expression of trailing characters that we want to remove. + // A trailing `#` is sometimes used when writing phone numbers with extensions in US. + // Example: "+1 (645) 123 1234-910#" number has extension "910". + + var AFTER_PHONE_NUMBER_END_PATTERN = new RegExp('[^' + VALID_DIGITS + '#' + ']+$'); + // + // ```js + // parse('8 (800) 555-35-35', 'RU') + // parse('8 (800) 555-35-35', 'RU', metadata) + // parse('8 (800) 555-35-35', { country: { default: 'RU' } }) + // parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata) + // parse('+7 800 555 35 35') + // parse('+7 800 555 35 35', metadata) + // ``` + // + + function parse(text, options, metadata) { + // If assigning the `{}` default value is moved to the arguments above, + // code coverage would decrease for some weird reason. + options = options || {}; + metadata = new Metadata(metadata); // Validate `defaultCountry`. + + if (options.defaultCountry && !metadata.hasCountry(options.defaultCountry)) { + if (options.v2) { + throw new ParseError('INVALID_COUNTRY'); + } + + throw new Error("Unknown country: ".concat(options.defaultCountry)); + } // Parse the phone number. + + + var _parseInput = parseInput(text, options.v2, options.extract), + formattedPhoneNumber = _parseInput.number, + ext = _parseInput.ext, + error = _parseInput.error; // If the phone number is not viable then return nothing. + + + if (!formattedPhoneNumber) { + if (options.v2) { + if (error === 'TOO_SHORT') { + throw new ParseError('TOO_SHORT'); + } + + throw new ParseError('NOT_A_NUMBER'); + } + + return {}; + } + + var _parsePhoneNumber = parsePhoneNumber$1(formattedPhoneNumber, options.defaultCountry, options.defaultCallingCode, metadata), + country = _parsePhoneNumber.country, + nationalNumber = _parsePhoneNumber.nationalNumber, + countryCallingCode = _parsePhoneNumber.countryCallingCode, + carrierCode = _parsePhoneNumber.carrierCode; + + if (!metadata.hasSelectedNumberingPlan()) { + if (options.v2) { + throw new ParseError('INVALID_COUNTRY'); + } + + return {}; + } // Validate national (significant) number length. + + + if (!nationalNumber || nationalNumber.length < MIN_LENGTH_FOR_NSN) { + // Won't throw here because the regexp already demands length > 1. + + /* istanbul ignore if */ + if (options.v2) { + throw new ParseError('TOO_SHORT'); + } // Google's demo just throws an error in this case. + + + return {}; + } // Validate national (significant) number length. + // + // A sidenote: + // + // They say that sometimes national (significant) numbers + // can be longer than `MAX_LENGTH_FOR_NSN` (e.g. in Germany). + // https://github.com/googlei18n/libphonenumber/blob/7e1748645552da39c4e1ba731e47969d97bdb539/resources/phonenumber.proto#L36 + // Such numbers will just be discarded. + // + + + if (nationalNumber.length > MAX_LENGTH_FOR_NSN) { + if (options.v2) { + throw new ParseError('TOO_LONG'); + } // Google's demo just throws an error in this case. + + + return {}; + } + + if (options.v2) { + var phoneNumber = new PhoneNumber(countryCallingCode, nationalNumber, metadata.metadata); + + if (country) { + phoneNumber.country = country; + } + + if (carrierCode) { + phoneNumber.carrierCode = carrierCode; + } + + if (ext) { + phoneNumber.ext = ext; + } + + return phoneNumber; + } // Check if national phone number pattern matches the number. + // National number pattern is different for each country, + // even for those ones which are part of the "NANPA" group. + + + var valid = (options.extended ? metadata.hasSelectedNumberingPlan() : country) ? matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) : false; + + if (!options.extended) { + return valid ? result(country, nationalNumber, ext) : {}; + } // isInternational: countryCallingCode !== undefined + + + return { + country: country, + countryCallingCode: countryCallingCode, + carrierCode: carrierCode, + valid: valid, + possible: valid ? true : options.extended === true && metadata.possibleLengths() && isPossibleNumber(nationalNumber, metadata) ? true : false, + phone: nationalNumber, + ext: ext + }; + } + /** + * Extracts a formatted phone number from text. + * Doesn't guarantee that the extracted phone number + * is a valid phone number (for example, doesn't validate its length). + * @param {string} text + * @param {boolean} [extract] — If `false`, then will parse the entire `text` as a phone number. + * @param {boolean} [throwOnError] — By default, it won't throw if the text is too long. + * @return {string} + * @example + * // Returns "(213) 373-4253". + * extractFormattedPhoneNumber("Call (213) 373-4253 for assistance.") + */ + + function extractFormattedPhoneNumber(text, extract, throwOnError) { + if (!text) { + return; + } + + if (text.length > MAX_INPUT_STRING_LENGTH) { + if (throwOnError) { + throw new ParseError('TOO_LONG'); + } + + return; + } + + if (extract === false) { + return text; + } // Attempt to extract a possible number from the string passed in + + + var startsAt = text.search(PHONE_NUMBER_START_PATTERN); + + if (startsAt < 0) { + return; + } + + return text // Trim everything to the left of the phone number + .slice(startsAt) // Remove trailing non-numerical characters + .replace(AFTER_PHONE_NUMBER_END_PATTERN, ''); + } + /** + * @param {string} text - Input. + * @param {boolean} v2 - Legacy API functions don't pass `v2: true` flag. + * @param {boolean} [extract] - Whether to extract a phone number from `text`, or attempt to parse the entire text as a phone number. + * @return {object} `{ ?number, ?ext }`. + */ + + + function parseInput(text, v2, extract) { + // Parse RFC 3966 phone number URI. + if (text && text.indexOf('tel:') === 0) { + return parseRFC3966(text); + } + + var number = extractFormattedPhoneNumber(text, extract, v2); // If the phone number is not viable, then abort. + + if (!number) { + return {}; + } + + if (!isViablePhoneNumber(number)) { + if (isViablePhoneNumberStart(number)) { + return { + error: 'TOO_SHORT' + }; + } + + return {}; + } // Attempt to parse extension first, since it doesn't require region-specific + // data and we want to have the non-normalised number here. + + + var withExtensionStripped = extractExtension(number); + + if (withExtensionStripped.ext) { + return withExtensionStripped; + } + + return { + number: number + }; + } + /** + * Creates `parse()` result object. + */ + + + function result(country, nationalNumber, ext) { + var result = { + country: country, + phone: nationalNumber + }; + + if (ext) { + result.ext = ext; + } + + return result; + } + /** + * Parses a viable phone number. + * @param {string} formattedPhoneNumber — Example: "(213) 373-4253". + * @param {string} [defaultCountry] + * @param {string} [defaultCallingCode] + * @param {Metadata} metadata + * @return {object} Returns `{ country: string?, countryCallingCode: string?, nationalNumber: string? }`. + */ + + + function parsePhoneNumber$1(formattedPhoneNumber, defaultCountry, defaultCallingCode, metadata) { + // Extract calling code from phone number. + var _extractCountryCallin = extractCountryCallingCode(parseIncompletePhoneNumber(formattedPhoneNumber), defaultCountry, defaultCallingCode, metadata.metadata), + countryCallingCode = _extractCountryCallin.countryCallingCode, + number = _extractCountryCallin.number; // Choose a country by `countryCallingCode`. + + + var country; + + if (countryCallingCode) { + metadata.selectNumberingPlan(countryCallingCode); + } // If `formattedPhoneNumber` is in "national" format + // then `number` is defined and `countryCallingCode` isn't. + else if (number && (defaultCountry || defaultCallingCode)) { + metadata.selectNumberingPlan(defaultCountry, defaultCallingCode); + + if (defaultCountry) { + country = defaultCountry; + } + + countryCallingCode = defaultCallingCode || getCountryCallingCode(defaultCountry, metadata.metadata); + } else return {}; + + if (!number) { + return { + countryCallingCode: countryCallingCode + }; + } + + var _extractNationalNumbe = extractNationalNumber(parseIncompletePhoneNumber(number), metadata), + nationalNumber = _extractNationalNumbe.nationalNumber, + carrierCode = _extractNationalNumbe.carrierCode; // Sometimes there are several countries + // corresponding to the same country phone code + // (e.g. NANPA countries all having `1` country phone code). + // Therefore, to reliably determine the exact country, + // national (significant) number should have been parsed first. + // + // When `metadata.json` is generated, all "ambiguous" country phone codes + // get their countries populated with the full set of + // "phone number type" regular expressions. + // + + + var exactCountry = getCountryByCallingCode(countryCallingCode, nationalNumber, metadata); + + if (exactCountry) { + country = exactCountry; + /* istanbul ignore if */ + + if (exactCountry === '001') ; else { + metadata.country(country); + } + } + + return { + country: country, + countryCallingCode: countryCallingCode, + nationalNumber: nationalNumber, + carrierCode: carrierCode + }; + } + + function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$2(target, key, source[key]); }); } return target; } + + function _defineProperty$2(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + function parsePhoneNumber(text, options, metadata) { + return parse(text, _objectSpread$2({}, options, { + v2: true + }), metadata); + } + + function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + + function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$1(target, key, source[key]); }); } return target; } + + function _defineProperty$1(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + + function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } + + function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } + + function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + + function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + function normalizeArguments(args) { + var _Array$prototype$slic = Array.prototype.slice.call(args), + _Array$prototype$slic2 = _slicedToArray(_Array$prototype$slic, 4), + arg_1 = _Array$prototype$slic2[0], + arg_2 = _Array$prototype$slic2[1], + arg_3 = _Array$prototype$slic2[2], + arg_4 = _Array$prototype$slic2[3]; + + var text; + var options; + var metadata; // If the phone number is passed as a string. + // `parsePhoneNumber('88005553535', ...)`. + + if (typeof arg_1 === 'string') { + text = arg_1; + } else throw new TypeError('A text for parsing must be a string.'); // If "default country" argument is being passed then move it to `options`. + // `parsePhoneNumber('88005553535', 'RU', [options], metadata)`. + + + if (!arg_2 || typeof arg_2 === 'string') { + if (arg_4) { + options = arg_3; + metadata = arg_4; + } else { + options = undefined; + metadata = arg_3; + } + + if (arg_2) { + options = _objectSpread$1({ + defaultCountry: arg_2 + }, options); + } + } // `defaultCountry` is not passed. + // Example: `parsePhoneNumber('+78005553535', [options], metadata)`. + else if (isObject$1(arg_2)) { + if (arg_3) { + options = arg_2; + metadata = arg_3; + } else { + metadata = arg_2; + } + } else throw new Error("Invalid second argument: ".concat(arg_2)); + + return { + text: text, + options: options, + metadata: metadata + }; + } // Otherwise istanbul would show this as "branch not covered". + + /* istanbul ignore next */ + + var isObject$1 = function isObject(_) { + return _typeof(_) === 'object'; + }; + + function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } + + function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + function parsePhoneNumberFromString$2(text, options, metadata) { + // Validate `defaultCountry`. + if (options && options.defaultCountry && !isSupportedCountry(options.defaultCountry, metadata)) { + options = _objectSpread({}, options, { + defaultCountry: undefined + }); + } // Parse phone number. + + + try { + return parsePhoneNumber(text, options, metadata); + } catch (error) { + /* istanbul ignore else */ + if (error instanceof ParseError) ; else { + throw error; + } + } + } + + function parsePhoneNumberFromString$1() { + var _normalizeArguments = normalizeArguments(arguments), + text = _normalizeArguments.text, + options = _normalizeArguments.options, + metadata = _normalizeArguments.metadata; + + return parsePhoneNumberFromString$2(text, options, metadata); + } + + function parsePhoneNumberFromString() { + return withMetadata(parsePhoneNumberFromString$1, arguments) + } + + var IS_PHONE_NUMBER = 'isPhoneNumber'; + /** + * Checks if the string is a valid phone number. To successfully validate any phone number the text must include + * the intl. calling code, if the calling code wont be provided then the region must be set. + * + * @param value the potential phone number string to test + * @param region 2 characters uppercase country code (e.g. DE, US, CH) for country specific validation. + * If text doesn't start with the international calling code (e.g. +41), then you must set this parameter. + */ + function isPhoneNumber(value, region) { + try { + var phoneNum = parsePhoneNumberFromString(value, region); + var result = phoneNum === null || phoneNum === void 0 ? void 0 : phoneNum.isValid(); + return !!result; + } + catch (error) { + // logging? + return false; + } + } + /** + * Checks if the string is a valid phone number. To successfully validate any phone number the text must include + * the intl. calling code, if the calling code wont be provided then the region must be set. + * + * @param region 2 characters uppercase country code (e.g. DE, US, CH) for country specific validation. + * If text doesn't start with the international calling code (e.g. +41), then you must set this parameter. + */ + function IsPhoneNumber(region, validationOptions) { + return ValidateBy({ + name: IS_PHONE_NUMBER, + constraints: [region], + validator: { + validate: function (value, args) { return isPhoneNumber(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid phone number'; }, validationOptions), + }, + }, validationOptions); + } + + var IS_MILITARY_TIME = 'isMilitaryTime'; + /** + * Checks if the string represents a time without a given timezone in the format HH:MM (military) + * If the given value does not match the pattern HH:MM, then it returns false. + */ + function isMilitaryTime(value) { + var militaryTimeRegex = /^([01]\d|2[0-3]):?([0-5]\d)$/; + return typeof value === 'string' && matchesValidator(value, militaryTimeRegex); + } + /** + * Checks if the string represents a time without a given timezone in the format HH:MM (military) + * If the given value does not match the pattern HH:MM, then it returns false. + */ + function IsMilitaryTime(validationOptions) { + return ValidateBy({ + name: IS_MILITARY_TIME, + validator: { + validate: function (value, args) { return isMilitaryTime(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid representation of military time in the format HH:MM'; }, validationOptions), + }, + }, validationOptions); + } + + var isHash$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isHash; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var lengths = { + md5: 32, + md4: 32, + sha1: 40, + sha256: 64, + sha384: 96, + sha512: 128, + ripemd128: 32, + ripemd160: 40, + tiger128: 32, + tiger160: 40, + tiger192: 48, + crc32: 8, + crc32b: 8 + }; + + function isHash(str, algorithm) { + (0, _assertString.default)(str); + var hash = new RegExp("^[a-fA-F0-9]{".concat(lengths[algorithm], "}$")); + return hash.test(str); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isHash$1, isHash$1.exports)); + + var isHashValidator = /*@__PURE__*/getDefaultExportFromCjs(isHash$1.exports); + + var IS_HASH = 'isHash'; + /** + * Check if the string is a hash of type algorithm. + * Algorithm is one of ['md4', 'md5', 'sha1', 'sha256', 'sha384', 'sha512', 'ripemd128', 'ripemd160', 'tiger128', + * 'tiger160', 'tiger192', 'crc32', 'crc32b'] + */ + function isHash(value, algorithm) { + return typeof value === 'string' && isHashValidator(value, algorithm); + } + /** + * Check if the string is a hash of type algorithm. + * Algorithm is one of ['md4', 'md5', 'sha1', 'sha256', 'sha384', 'sha512', 'ripemd128', 'ripemd160', 'tiger128', + * 'tiger160', 'tiger192', 'crc32', 'crc32b'] + */ + function IsHash(algorithm, validationOptions) { + return ValidateBy({ + name: IS_HASH, + constraints: [algorithm], + validator: { + validate: function (value, args) { return isHash(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a hash of type $constraint1'; }, validationOptions), + }, + }, validationOptions); + } + + var isISSN$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isISSN; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var issn = '^\\d{4}-?\\d{3}[\\dX]$'; + + function isISSN(str) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + (0, _assertString.default)(str); + var testIssn = issn; + testIssn = options.require_hyphen ? testIssn.replace('?', '') : testIssn; + testIssn = options.case_sensitive ? new RegExp(testIssn) : new RegExp(testIssn, 'i'); + + if (!testIssn.test(str)) { + return false; + } + + var digits = str.replace('-', '').toUpperCase(); + var checksum = 0; + + for (var i = 0; i < digits.length; i++) { + var digit = digits[i]; + checksum += (digit === 'X' ? 10 : +digit) * (8 - i); + } + + return checksum % 11 === 0; + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isISSN$1, isISSN$1.exports)); + + var isISSNValidator = /*@__PURE__*/getDefaultExportFromCjs(isISSN$1.exports); + + var IS_ISSN = 'isISSN'; + /** + * Checks if the string is a ISSN. + * If given value is not a string, then it returns false. + */ + function isISSN(value, options) { + return typeof value === 'string' && isISSNValidator(value, options); + } + /** + * Checks if the string is a ISSN. + * If given value is not a string, then it returns false. + */ + function IsISSN(options, validationOptions) { + return ValidateBy({ + name: IS_ISSN, + constraints: [options], + validator: { + validate: function (value, args) { return isISSN(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a ISSN'; }, validationOptions), + }, + }, validationOptions); + } + + var IS_DATE_STRING = 'isDateString'; + /** + * Alias for IsISO8601 validator + */ + function isDateString(value, options) { + return isISO8601(value, options); + } + /** + * Alias for IsISO8601 validator + */ + function IsDateString(options, validationOptions) { + return ValidateBy({ + name: IS_DATE_STRING, + constraints: [options], + validator: { + validate: function (value, args) { return isDateString(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid ISO 8601 date string'; }, validationOptions), + }, + }, validationOptions); + } + + var isBoolean$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isBoolean; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var defaultOptions = { + loose: false + }; + var strictBooleans = ['true', 'false', '1', '0']; + var looseBooleans = [].concat(strictBooleans, ['yes', 'no']); + + function isBoolean(str) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultOptions; + (0, _assertString.default)(str); + + if (options.loose) { + return looseBooleans.includes(str.toLowerCase()); + } + + return strictBooleans.includes(str); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isBoolean$1, isBoolean$1.exports)); + + var isBooleanValidator = /*@__PURE__*/getDefaultExportFromCjs(isBoolean$1.exports); + + var IS_BOOLEAN_STRING = 'isBooleanString'; + /** + * Checks if a string is a boolean. + * If given value is not a string, then it returns false. + */ + function isBooleanString(value) { + return typeof value === 'string' && isBooleanValidator(value); + } + /** + * Checks if a string is a boolean. + * If given value is not a string, then it returns false. + */ + function IsBooleanString(validationOptions) { + return ValidateBy({ + name: IS_BOOLEAN_STRING, + validator: { + validate: function (value, args) { return isBooleanString(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a boolean string'; }, validationOptions), + }, + }, validationOptions); + } + + var isNumeric = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isNumeric; + + var _assertString = _interopRequireDefault(assertString.exports); + + var _alpha = alpha$1; + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var numericNoSymbols = /^[0-9]+$/; + + function isNumeric(str, options) { + (0, _assertString.default)(str); + + if (options && options.no_symbols) { + return numericNoSymbols.test(str); + } + + return new RegExp("^[+-]?([0-9]*[".concat((options || {}).locale ? _alpha.decimal[options.locale] : '.', "])?[0-9]+$")).test(str); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isNumeric, isNumeric.exports)); + + var isNumericValidator = /*@__PURE__*/getDefaultExportFromCjs(isNumeric.exports); + + var IS_NUMBER_STRING = 'isNumberString'; + /** + * Checks if the string is numeric. + * If given value is not a string, then it returns false. + */ + function isNumberString(value, options) { + return typeof value === 'string' && isNumericValidator(value, options); + } + /** + * Checks if the string is numeric. + * If given value is not a string, then it returns false. + */ + function IsNumberString(options, validationOptions) { + return ValidateBy({ + name: IS_NUMBER_STRING, + constraints: [options], + validator: { + validate: function (value, args) { return isNumberString(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a number string'; }, validationOptions), + }, + }, validationOptions); + } + + var isBase32$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isBase32; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var base32 = /^[A-Z2-7]+=*$/; + + function isBase32(str) { + (0, _assertString.default)(str); + var len = str.length; + + if (len % 8 === 0 && base32.test(str)) { + return true; + } + + return false; + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isBase32$1, isBase32$1.exports)); + + var isBase32Validator = /*@__PURE__*/getDefaultExportFromCjs(isBase32$1.exports); + + var IS_BASE32 = 'isBase32'; + /** + * Checks if a string is base32 encoded. + * If given value is not a string, then it returns false. + */ + function isBase32(value) { + return typeof value === 'string' && isBase32Validator(value); + } + /** + * Check if a string is base32 encoded. + * If given value is not a string, then it returns false. + */ + function IsBase32(validationOptions) { + return ValidateBy({ + name: IS_BASE32, + validator: { + validate: function (value, args) { return isBase32(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be base32 encoded'; }, validationOptions), + }, + }, validationOptions); + } + + var isBIC$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isBIC; + + var _assertString = _interopRequireDefault(assertString.exports); + + var _isISO31661Alpha = isISO31661Alpha2$2; + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + // https://en.wikipedia.org/wiki/ISO_9362 + var isBICReg = /^[A-Za-z]{6}[A-Za-z0-9]{2}([A-Za-z0-9]{3})?$/; + + function isBIC(str) { + (0, _assertString.default)(str); // toUpperCase() should be removed when a new major version goes out that changes + // the regex to [A-Z] (per the spec). + + if (!_isISO31661Alpha.CountryCodes.has(str.slice(4, 6).toUpperCase())) { + return false; + } + + return isBICReg.test(str); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isBIC$1, isBIC$1.exports)); + + var isBICValidator = /*@__PURE__*/getDefaultExportFromCjs(isBIC$1.exports); + + var IS_BIC = 'isBIC'; + /** + * Check if a string is a BIC (Bank Identification Code) or SWIFT code. + * If given value is not a string, then it returns false. + */ + function isBIC(value) { + return typeof value === 'string' && isBICValidator(value); + } + /** + * Check if a string is a BIC (Bank Identification Code) or SWIFT code. + * If given value is not a string, then it returns false. + */ + function IsBIC(validationOptions) { + return ValidateBy({ + name: IS_BIC, + validator: { + validate: function (value, args) { return isBIC(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a BIC or SWIFT code'; }, validationOptions), + }, + }, validationOptions); + } + + var isBtcAddress$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isBtcAddress; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + // supports Bech32 addresses + var bech32 = /^(bc1)[a-z0-9]{25,39}$/; + var base58 = /^(1|3)[A-HJ-NP-Za-km-z1-9]{25,39}$/; + + function isBtcAddress(str) { + (0, _assertString.default)(str); // check for bech32 + + if (str.startsWith('bc1')) { + return bech32.test(str); + } + + return base58.test(str); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isBtcAddress$1, isBtcAddress$1.exports)); + + var isBtcAddressValidator = /*@__PURE__*/getDefaultExportFromCjs(isBtcAddress$1.exports); + + var IS_BTC_ADDRESS = 'isBtcAddress'; + /** + * Check if the string is a valid BTC address. + * If given value is not a string, then it returns false. + */ + function isBtcAddress(value) { + return typeof value === 'string' && isBtcAddressValidator(value); + } + /** + * Check if the string is a valid BTC address. + * If given value is not a string, then it returns false. + */ + function IsBtcAddress(validationOptions) { + return ValidateBy({ + name: IS_BTC_ADDRESS, + validator: { + validate: function (value, args) { return isBtcAddress(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a BTC address'; }, validationOptions), + }, + }, validationOptions); + } + + var isDataURI$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isDataURI; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var validMediaType = /^[a-z]+\/[a-z0-9\-\+]+$/i; + var validAttribute = /^[a-z\-]+=[a-z0-9\-]+$/i; + var validData = /^[a-z0-9!\$&'\(\)\*\+,;=\-\._~:@\/\?%\s]*$/i; + + function isDataURI(str) { + (0, _assertString.default)(str); + var data = str.split(','); + + if (data.length < 2) { + return false; + } + + var attributes = data.shift().trim().split(';'); + var schemeAndMediaType = attributes.shift(); + + if (schemeAndMediaType.substr(0, 5) !== 'data:') { + return false; + } + + var mediaType = schemeAndMediaType.substr(5); + + if (mediaType !== '' && !validMediaType.test(mediaType)) { + return false; + } + + for (var i = 0; i < attributes.length; i++) { + if (!(i === attributes.length - 1 && attributes[i].toLowerCase() === 'base64') && !validAttribute.test(attributes[i])) { + return false; + } + } + + for (var _i = 0; _i < data.length; _i++) { + if (!validData.test(data[_i])) { + return false; + } + } + + return true; + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isDataURI$1, isDataURI$1.exports)); + + var isDataURIValidator = /*@__PURE__*/getDefaultExportFromCjs(isDataURI$1.exports); + + var IS_DATA_URI = 'isDataURI'; + /** + * Check if the string is a data uri format. + * If given value is not a string, then it returns false. + */ + function isDataURI(value) { + return typeof value === 'string' && isDataURIValidator(value); + } + /** + * Check if the string is a data uri format. + * If given value is not a string, then it returns false. + */ + function IsDataURI(validationOptions) { + return ValidateBy({ + name: IS_DATA_URI, + validator: { + validate: function (value, args) { return isDataURI(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a data uri format'; }, validationOptions), + }, + }, validationOptions); + } + + var isEAN$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isEAN; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + /** + * The most commonly used EAN standard is + * the thirteen-digit EAN-13, while the + * less commonly used 8-digit EAN-8 barcode was + * introduced for use on small packages. + * Also EAN/UCC-14 is used for Grouping of individual + * trade items above unit level(Intermediate, Carton or Pallet). + * For more info about EAN-14 checkout: https://www.gtin.info/itf-14-barcodes/ + * EAN consists of: + * GS1 prefix, manufacturer code, product code and check digit + * Reference: https://en.wikipedia.org/wiki/International_Article_Number + * Reference: https://www.gtin.info/ + */ + + /** + * Define EAN Lenghts; 8 for EAN-8; 13 for EAN-13; 14 for EAN-14 + * and Regular Expression for valid EANs (EAN-8, EAN-13, EAN-14), + * with exact numberic matching of 8 or 13 or 14 digits [0-9] + */ + var LENGTH_EAN_8 = 8; + var LENGTH_EAN_14 = 14; + var validEanRegex = /^(\d{8}|\d{13}|\d{14})$/; + /** + * Get position weight given: + * EAN length and digit index/position + * + * @param {number} length + * @param {number} index + * @return {number} + */ + + function getPositionWeightThroughLengthAndIndex(length, index) { + if (length === LENGTH_EAN_8 || length === LENGTH_EAN_14) { + return index % 2 === 0 ? 3 : 1; + } + + return index % 2 === 0 ? 1 : 3; + } + /** + * Calculate EAN Check Digit + * Reference: https://en.wikipedia.org/wiki/International_Article_Number#Calculation_of_checksum_digit + * + * @param {string} ean + * @return {number} + */ + + + function calculateCheckDigit(ean) { + var checksum = ean.slice(0, -1).split('').map(function (char, index) { + return Number(char) * getPositionWeightThroughLengthAndIndex(ean.length, index); + }).reduce(function (acc, partialSum) { + return acc + partialSum; + }, 0); + var remainder = 10 - checksum % 10; + return remainder < 10 ? remainder : 0; + } + /** + * Check if string is valid EAN: + * Matches EAN-8/EAN-13/EAN-14 regex + * Has valid check digit. + * + * @param {string} str + * @return {boolean} + */ + + + function isEAN(str) { + (0, _assertString.default)(str); + var actualCheckDigit = Number(str.slice(-1)); + return validEanRegex.test(str) && actualCheckDigit === calculateCheckDigit(str); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isEAN$1, isEAN$1.exports)); + + var isEANValidator = /*@__PURE__*/getDefaultExportFromCjs(isEAN$1.exports); + + var IS_EAN = 'isEAN'; + /** + * Check if the string is an EAN (European Article Number). + * If given value is not a string, then it returns false. + */ + function isEAN(value) { + return typeof value === 'string' && isEANValidator(value); + } + /** + * Check if the string is an EAN (European Article Number). + * If given value is not a string, then it returns false. + */ + function IsEAN(validationOptions) { + return ValidateBy({ + name: IS_EAN, + validator: { + validate: function (value, args) { return isEAN(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an EAN (European Article Number)'; }, validationOptions), + }, + }, validationOptions); + } + + var isEthereumAddress$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isEthereumAddress; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var eth = /^(0x)[0-9a-f]{40}$/i; + + function isEthereumAddress(str) { + (0, _assertString.default)(str); + return eth.test(str); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isEthereumAddress$1, isEthereumAddress$1.exports)); + + var isEthereumAddressValidator = /*@__PURE__*/getDefaultExportFromCjs(isEthereumAddress$1.exports); + + var IS_ETHEREUM_ADDRESS = 'isEthereumAddress'; + /** + * Check if the string is an Ethereum address using basic regex. Does not validate address checksums. + * If given value is not a string, then it returns false. + */ + function isEthereumAddress(value) { + return typeof value === 'string' && isEthereumAddressValidator(value); + } + /** + * Check if the string is an Ethereum address using basic regex. Does not validate address checksums. + * If given value is not a string, then it returns false. + */ + function IsEthereumAddress(validationOptions) { + return ValidateBy({ + name: IS_ETHEREUM_ADDRESS, + validator: { + validate: function (value, args) { return isEthereumAddress(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an Ethereum address'; }, validationOptions), + }, + }, validationOptions); + } + + var isHSL$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isHSL; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var hslComma = /^hsla?\(((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn)?(,(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}(,((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?))?\)$/i; + var hslSpace = /^hsla?\(((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn)?(\s(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}\s?(\/\s((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?)\s?)?\)$/i; + + function isHSL(str) { + (0, _assertString.default)(str); // Strip duplicate spaces before calling the validation regex (See #1598 for more info) + + var strippedStr = str.replace(/\s+/g, ' ').replace(/\s?(hsla?\(|\)|,)\s?/ig, '$1'); + + if (strippedStr.indexOf(',') !== -1) { + return hslComma.test(strippedStr); + } + + return hslSpace.test(strippedStr); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isHSL$1, isHSL$1.exports)); + + var isHSLValidator = /*@__PURE__*/getDefaultExportFromCjs(isHSL$1.exports); + + var IS_HSL = 'isHSL'; + /** + * Check if the string is an HSL (hue, saturation, lightness, optional alpha) color based on CSS Colors Level 4 specification. + * Comma-separated format supported. Space-separated format supported with the exception of a few edge cases (ex: hsl(200grad+.1%62%/1)). + * If given value is not a string, then it returns false. + */ + function isHSL(value) { + return typeof value === 'string' && isHSLValidator(value); + } + /** + * Check if the string is an HSL (hue, saturation, lightness, optional alpha) color based on CSS Colors Level 4 specification. + * Comma-separated format supported. Space-separated format supported with the exception of a few edge cases (ex: hsl(200grad+.1%62%/1)). + * If given value is not a string, then it returns false. + */ + function IsHSL(validationOptions) { + return ValidateBy({ + name: IS_HSL, + validator: { + validate: function (value, args) { return isHSL(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a HSL color'; }, validationOptions), + }, + }, validationOptions); + } + + var isIBAN$2 = {}; + + Object.defineProperty(isIBAN$2, "__esModule", { + value: true + }); + var _default$1 = isIBAN$2.default = isIBAN$1; + isIBAN$2.locales = void 0; + + var _assertString$1 = _interopRequireDefault$1(assertString.exports); + + function _interopRequireDefault$1(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + /** + * List of country codes with + * corresponding IBAN regular expression + * Reference: https://en.wikipedia.org/wiki/International_Bank_Account_Number + */ + var ibanRegexThroughCountryCode = { + AD: /^(AD[0-9]{2})\d{8}[A-Z0-9]{12}$/, + AE: /^(AE[0-9]{2})\d{3}\d{16}$/, + AL: /^(AL[0-9]{2})\d{8}[A-Z0-9]{16}$/, + AT: /^(AT[0-9]{2})\d{16}$/, + AZ: /^(AZ[0-9]{2})[A-Z0-9]{4}\d{20}$/, + BA: /^(BA[0-9]{2})\d{16}$/, + BE: /^(BE[0-9]{2})\d{12}$/, + BG: /^(BG[0-9]{2})[A-Z]{4}\d{6}[A-Z0-9]{8}$/, + BH: /^(BH[0-9]{2})[A-Z]{4}[A-Z0-9]{14}$/, + BR: /^(BR[0-9]{2})\d{23}[A-Z]{1}[A-Z0-9]{1}$/, + BY: /^(BY[0-9]{2})[A-Z0-9]{4}\d{20}$/, + CH: /^(CH[0-9]{2})\d{5}[A-Z0-9]{12}$/, + CR: /^(CR[0-9]{2})\d{18}$/, + CY: /^(CY[0-9]{2})\d{8}[A-Z0-9]{16}$/, + CZ: /^(CZ[0-9]{2})\d{20}$/, + DE: /^(DE[0-9]{2})\d{18}$/, + DK: /^(DK[0-9]{2})\d{14}$/, + DO: /^(DO[0-9]{2})[A-Z]{4}\d{20}$/, + EE: /^(EE[0-9]{2})\d{16}$/, + EG: /^(EG[0-9]{2})\d{25}$/, + ES: /^(ES[0-9]{2})\d{20}$/, + FI: /^(FI[0-9]{2})\d{14}$/, + FO: /^(FO[0-9]{2})\d{14}$/, + FR: /^(FR[0-9]{2})\d{10}[A-Z0-9]{11}\d{2}$/, + GB: /^(GB[0-9]{2})[A-Z]{4}\d{14}$/, + GE: /^(GE[0-9]{2})[A-Z0-9]{2}\d{16}$/, + GI: /^(GI[0-9]{2})[A-Z]{4}[A-Z0-9]{15}$/, + GL: /^(GL[0-9]{2})\d{14}$/, + GR: /^(GR[0-9]{2})\d{7}[A-Z0-9]{16}$/, + GT: /^(GT[0-9]{2})[A-Z0-9]{4}[A-Z0-9]{20}$/, + HR: /^(HR[0-9]{2})\d{17}$/, + HU: /^(HU[0-9]{2})\d{24}$/, + IE: /^(IE[0-9]{2})[A-Z0-9]{4}\d{14}$/, + IL: /^(IL[0-9]{2})\d{19}$/, + IQ: /^(IQ[0-9]{2})[A-Z]{4}\d{15}$/, + IR: /^(IR[0-9]{2})0\d{2}0\d{18}$/, + IS: /^(IS[0-9]{2})\d{22}$/, + IT: /^(IT[0-9]{2})[A-Z]{1}\d{10}[A-Z0-9]{12}$/, + JO: /^(JO[0-9]{2})[A-Z]{4}\d{22}$/, + KW: /^(KW[0-9]{2})[A-Z]{4}[A-Z0-9]{22}$/, + KZ: /^(KZ[0-9]{2})\d{3}[A-Z0-9]{13}$/, + LB: /^(LB[0-9]{2})\d{4}[A-Z0-9]{20}$/, + LC: /^(LC[0-9]{2})[A-Z]{4}[A-Z0-9]{24}$/, + LI: /^(LI[0-9]{2})\d{5}[A-Z0-9]{12}$/, + LT: /^(LT[0-9]{2})\d{16}$/, + LU: /^(LU[0-9]{2})\d{3}[A-Z0-9]{13}$/, + LV: /^(LV[0-9]{2})[A-Z]{4}[A-Z0-9]{13}$/, + MC: /^(MC[0-9]{2})\d{10}[A-Z0-9]{11}\d{2}$/, + MD: /^(MD[0-9]{2})[A-Z0-9]{20}$/, + ME: /^(ME[0-9]{2})\d{18}$/, + MK: /^(MK[0-9]{2})\d{3}[A-Z0-9]{10}\d{2}$/, + MR: /^(MR[0-9]{2})\d{23}$/, + MT: /^(MT[0-9]{2})[A-Z]{4}\d{5}[A-Z0-9]{18}$/, + MU: /^(MU[0-9]{2})[A-Z]{4}\d{19}[A-Z]{3}$/, + MZ: /^(MZ[0-9]{2})\d{21}$/, + NL: /^(NL[0-9]{2})[A-Z]{4}\d{10}$/, + NO: /^(NO[0-9]{2})\d{11}$/, + PK: /^(PK[0-9]{2})[A-Z0-9]{4}\d{16}$/, + PL: /^(PL[0-9]{2})\d{24}$/, + PS: /^(PS[0-9]{2})[A-Z0-9]{4}\d{21}$/, + PT: /^(PT[0-9]{2})\d{21}$/, + QA: /^(QA[0-9]{2})[A-Z]{4}[A-Z0-9]{21}$/, + RO: /^(RO[0-9]{2})[A-Z]{4}[A-Z0-9]{16}$/, + RS: /^(RS[0-9]{2})\d{18}$/, + SA: /^(SA[0-9]{2})\d{2}[A-Z0-9]{18}$/, + SC: /^(SC[0-9]{2})[A-Z]{4}\d{20}[A-Z]{3}$/, + SE: /^(SE[0-9]{2})\d{20}$/, + SI: /^(SI[0-9]{2})\d{15}$/, + SK: /^(SK[0-9]{2})\d{20}$/, + SM: /^(SM[0-9]{2})[A-Z]{1}\d{10}[A-Z0-9]{12}$/, + SV: /^(SV[0-9]{2})[A-Z0-9]{4}\d{20}$/, + TL: /^(TL[0-9]{2})\d{19}$/, + TN: /^(TN[0-9]{2})\d{20}$/, + TR: /^(TR[0-9]{2})\d{5}[A-Z0-9]{17}$/, + UA: /^(UA[0-9]{2})\d{6}[A-Z0-9]{19}$/, + VA: /^(VA[0-9]{2})\d{18}$/, + VG: /^(VG[0-9]{2})[A-Z0-9]{4}\d{16}$/, + XK: /^(XK[0-9]{2})\d{16}$/ + }; + /** + * Check whether string has correct universal IBAN format + * The IBAN consists of up to 34 alphanumeric characters, as follows: + * Country Code using ISO 3166-1 alpha-2, two letters + * check digits, two digits and + * Basic Bank Account Number (BBAN), up to 30 alphanumeric characters. + * NOTE: Permitted IBAN characters are: digits [0-9] and the 26 latin alphabetic [A-Z] + * + * @param {string} str - string under validation + * @return {boolean} + */ + + function hasValidIbanFormat(str) { + // Strip white spaces and hyphens + var strippedStr = str.replace(/[\s\-]+/gi, '').toUpperCase(); + var isoCountryCode = strippedStr.slice(0, 2).toUpperCase(); + return isoCountryCode in ibanRegexThroughCountryCode && ibanRegexThroughCountryCode[isoCountryCode].test(strippedStr); + } + /** + * Check whether string has valid IBAN Checksum + * by performing basic mod-97 operation and + * the remainder should equal 1 + * -- Start by rearranging the IBAN by moving the four initial characters to the end of the string + * -- Replace each letter in the string with two digits, A -> 10, B = 11, Z = 35 + * -- Interpret the string as a decimal integer and + * -- compute the remainder on division by 97 (mod 97) + * Reference: https://en.wikipedia.org/wiki/International_Bank_Account_Number + * + * @param {string} str + * @return {boolean} + */ + + + function hasValidIbanChecksum(str) { + var strippedStr = str.replace(/[^A-Z0-9]+/gi, '').toUpperCase(); // Keep only digits and A-Z latin alphabetic + + var rearranged = strippedStr.slice(4) + strippedStr.slice(0, 4); + var alphaCapsReplacedWithDigits = rearranged.replace(/[A-Z]/g, function (char) { + return char.charCodeAt(0) - 55; + }); + var remainder = alphaCapsReplacedWithDigits.match(/\d{1,7}/g).reduce(function (acc, value) { + return Number(acc + value) % 97; + }, ''); + return remainder === 1; + } + + function isIBAN$1(str) { + (0, _assertString$1.default)(str); + return hasValidIbanFormat(str) && hasValidIbanChecksum(str); + } + + var locales$1 = Object.keys(ibanRegexThroughCountryCode); + isIBAN$2.locales = locales$1; + + var IS_IBAN = 'isIBAN'; + /** + * Check if a string is a IBAN (International Bank Account Number). + * If given value is not a string, then it returns false. + */ + function isIBAN(value) { + return typeof value === 'string' && _default$1(value); + } + /** + * Check if a string is a IBAN (International Bank Account Number). + * If given value is not a string, then it returns false. + */ + function IsIBAN(validationOptions) { + return ValidateBy({ + name: IS_IBAN, + validator: { + validate: function (value, args) { return isIBAN(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an IBAN'; }, validationOptions), + }, + }, validationOptions); + } + + var isIdentityCard$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isIdentityCard; + + var _assertString = _interopRequireDefault(assertString.exports); + + var _isInt = _interopRequireDefault(isInt$1.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var validators = { + PL: function PL(str) { + (0, _assertString.default)(str); + var weightOfDigits = { + 1: 1, + 2: 3, + 3: 7, + 4: 9, + 5: 1, + 6: 3, + 7: 7, + 8: 9, + 9: 1, + 10: 3, + 11: 0 + }; + + if (str != null && str.length === 11 && (0, _isInt.default)(str, { + allow_leading_zeroes: true + })) { + var digits = str.split('').slice(0, -1); + var sum = digits.reduce(function (acc, digit, index) { + return acc + Number(digit) * weightOfDigits[index + 1]; + }, 0); + var modulo = sum % 10; + var lastDigit = Number(str.charAt(str.length - 1)); + + if (modulo === 0 && lastDigit === 0 || lastDigit === 10 - modulo) { + return true; + } + } + + return false; + }, + ES: function ES(str) { + (0, _assertString.default)(str); + var DNI = /^[0-9X-Z][0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKE]$/; + var charsValue = { + X: 0, + Y: 1, + Z: 2 + }; + var controlDigits = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E']; // sanitize user input + + var sanitized = str.trim().toUpperCase(); // validate the data structure + + if (!DNI.test(sanitized)) { + return false; + } // validate the control digit + + + var number = sanitized.slice(0, -1).replace(/[X,Y,Z]/g, function (char) { + return charsValue[char]; + }); + return sanitized.endsWith(controlDigits[number % 23]); + }, + FI: function FI(str) { + // https://dvv.fi/en/personal-identity-code#:~:text=control%20character%20for%20a-,personal,-identity%20code%20calculated + (0, _assertString.default)(str); + + if (str.length !== 11) { + return false; + } + + if (!str.match(/^\d{6}[\-A\+]\d{3}[0-9ABCDEFHJKLMNPRSTUVWXY]{1}$/)) { + return false; + } + + var checkDigits = '0123456789ABCDEFHJKLMNPRSTUVWXY'; + var idAsNumber = parseInt(str.slice(0, 6), 10) * 1000 + parseInt(str.slice(7, 10), 10); + var remainder = idAsNumber % 31; + var checkDigit = checkDigits[remainder]; + return checkDigit === str.slice(10, 11); + }, + IN: function IN(str) { + var DNI = /^[1-9]\d{3}\s?\d{4}\s?\d{4}$/; // multiplication table + + var d = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 0, 6, 7, 8, 9, 5], [2, 3, 4, 0, 1, 7, 8, 9, 5, 6], [3, 4, 0, 1, 2, 8, 9, 5, 6, 7], [4, 0, 1, 2, 3, 9, 5, 6, 7, 8], [5, 9, 8, 7, 6, 0, 4, 3, 2, 1], [6, 5, 9, 8, 7, 1, 0, 4, 3, 2], [7, 6, 5, 9, 8, 2, 1, 0, 4, 3], [8, 7, 6, 5, 9, 3, 2, 1, 0, 4], [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]]; // permutation table + + var p = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 5, 7, 6, 2, 8, 3, 0, 9, 4], [5, 8, 0, 3, 7, 9, 6, 1, 4, 2], [8, 9, 1, 6, 0, 4, 3, 5, 2, 7], [9, 4, 5, 3, 1, 2, 6, 8, 7, 0], [4, 2, 8, 6, 5, 7, 3, 9, 0, 1], [2, 7, 9, 3, 8, 0, 6, 4, 1, 5], [7, 0, 4, 6, 9, 1, 3, 2, 5, 8]]; // sanitize user input + + var sanitized = str.trim(); // validate the data structure + + if (!DNI.test(sanitized)) { + return false; + } + + var c = 0; + var invertedArray = sanitized.replace(/\s/g, '').split('').map(Number).reverse(); + invertedArray.forEach(function (val, i) { + c = d[c][p[i % 8][val]]; + }); + return c === 0; + }, + IR: function IR(str) { + if (!str.match(/^\d{10}$/)) return false; + str = "0000".concat(str).substr(str.length - 6); + if (parseInt(str.substr(3, 6), 10) === 0) return false; + var lastNumber = parseInt(str.substr(9, 1), 10); + var sum = 0; + + for (var i = 0; i < 9; i++) { + sum += parseInt(str.substr(i, 1), 10) * (10 - i); + } + + sum %= 11; + return sum < 2 && lastNumber === sum || sum >= 2 && lastNumber === 11 - sum; + }, + IT: function IT(str) { + if (str.length !== 9) return false; + if (str === 'CA00000AA') return false; // https://it.wikipedia.org/wiki/Carta_d%27identit%C3%A0_elettronica_italiana + + return str.search(/C[A-Z][0-9]{5}[A-Z]{2}/i) > -1; + }, + NO: function NO(str) { + var sanitized = str.trim(); + if (isNaN(Number(sanitized))) return false; + if (sanitized.length !== 11) return false; + if (sanitized === '00000000000') return false; // https://no.wikipedia.org/wiki/F%C3%B8dselsnummer + + var f = sanitized.split('').map(Number); + var k1 = (11 - (3 * f[0] + 7 * f[1] + 6 * f[2] + 1 * f[3] + 8 * f[4] + 9 * f[5] + 4 * f[6] + 5 * f[7] + 2 * f[8]) % 11) % 11; + var k2 = (11 - (5 * f[0] + 4 * f[1] + 3 * f[2] + 2 * f[3] + 7 * f[4] + 6 * f[5] + 5 * f[6] + 4 * f[7] + 3 * f[8] + 2 * k1) % 11) % 11; + if (k1 !== f[9] || k2 !== f[10]) return false; + return true; + }, + TH: function TH(str) { + if (!str.match(/^[1-8]\d{12}$/)) return false; // validate check digit + + var sum = 0; + + for (var i = 0; i < 12; i++) { + sum += parseInt(str[i], 10) * (13 - i); + } + + return str[12] === ((11 - sum % 11) % 10).toString(); + }, + LK: function LK(str) { + var old_nic = /^[1-9]\d{8}[vx]$/i; + var new_nic = /^[1-9]\d{11}$/i; + if (str.length === 10 && old_nic.test(str)) return true;else if (str.length === 12 && new_nic.test(str)) return true; + return false; + }, + 'he-IL': function heIL(str) { + var DNI = /^\d{9}$/; // sanitize user input + + var sanitized = str.trim(); // validate the data structure + + if (!DNI.test(sanitized)) { + return false; + } + + var id = sanitized; + var sum = 0, + incNum; + + for (var i = 0; i < id.length; i++) { + incNum = Number(id[i]) * (i % 2 + 1); // Multiply number by 1 or 2 + + sum += incNum > 9 ? incNum - 9 : incNum; // Sum the digits up and add to total + } + + return sum % 10 === 0; + }, + 'ar-LY': function arLY(str) { + // Libya National Identity Number NIN is 12 digits, the first digit is either 1 or 2 + var NIN = /^(1|2)\d{11}$/; // sanitize user input + + var sanitized = str.trim(); // validate the data structure + + if (!NIN.test(sanitized)) { + return false; + } + + return true; + }, + 'ar-TN': function arTN(str) { + var DNI = /^\d{8}$/; // sanitize user input + + var sanitized = str.trim(); // validate the data structure + + if (!DNI.test(sanitized)) { + return false; + } + + return true; + }, + 'zh-CN': function zhCN(str) { + var provincesAndCities = ['11', // 北京 + '12', // 天津 + '13', // 河北 + '14', // 山西 + '15', // 内蒙古 + '21', // 辽宁 + '22', // 吉林 + '23', // 黑龙江 + '31', // 上海 + '32', // 江苏 + '33', // 浙江 + '34', // 安徽 + '35', // 福建 + '36', // 江西 + '37', // 山东 + '41', // 河南 + '42', // 湖北 + '43', // 湖南 + '44', // 广东 + '45', // 广西 + '46', // 海南 + '50', // 重庆 + '51', // 四川 + '52', // 贵州 + '53', // 云南 + '54', // 西藏 + '61', // 陕西 + '62', // 甘肃 + '63', // 青海 + '64', // 宁夏 + '65', // 新疆 + '71', // 台湾 + '81', // 香港 + '82', // 澳门 + '91' // 国外 + ]; + var powers = ['7', '9', '10', '5', '8', '4', '2', '1', '6', '3', '7', '9', '10', '5', '8', '4', '2']; + var parityBit = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']; + + var checkAddressCode = function checkAddressCode(addressCode) { + return provincesAndCities.includes(addressCode); + }; + + var checkBirthDayCode = function checkBirthDayCode(birDayCode) { + var yyyy = parseInt(birDayCode.substring(0, 4), 10); + var mm = parseInt(birDayCode.substring(4, 6), 10); + var dd = parseInt(birDayCode.substring(6), 10); + var xdata = new Date(yyyy, mm - 1, dd); + + if (xdata > new Date()) { + return false; // eslint-disable-next-line max-len + } else if (xdata.getFullYear() === yyyy && xdata.getMonth() === mm - 1 && xdata.getDate() === dd) { + return true; + } + + return false; + }; + + var getParityBit = function getParityBit(idCardNo) { + var id17 = idCardNo.substring(0, 17); + var power = 0; + + for (var i = 0; i < 17; i++) { + power += parseInt(id17.charAt(i), 10) * parseInt(powers[i], 10); + } + + var mod = power % 11; + return parityBit[mod]; + }; + + var checkParityBit = function checkParityBit(idCardNo) { + return getParityBit(idCardNo) === idCardNo.charAt(17).toUpperCase(); + }; + + var check15IdCardNo = function check15IdCardNo(idCardNo) { + var check = /^[1-9]\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}$/.test(idCardNo); + if (!check) return false; + var addressCode = idCardNo.substring(0, 2); + check = checkAddressCode(addressCode); + if (!check) return false; + var birDayCode = "19".concat(idCardNo.substring(6, 12)); + check = checkBirthDayCode(birDayCode); + if (!check) return false; + return true; + }; + + var check18IdCardNo = function check18IdCardNo(idCardNo) { + var check = /^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}(\d|x|X)$/.test(idCardNo); + if (!check) return false; + var addressCode = idCardNo.substring(0, 2); + check = checkAddressCode(addressCode); + if (!check) return false; + var birDayCode = idCardNo.substring(6, 14); + check = checkBirthDayCode(birDayCode); + if (!check) return false; + return checkParityBit(idCardNo); + }; + + var checkIdCardNo = function checkIdCardNo(idCardNo) { + var check = /^\d{15}|(\d{17}(\d|x|X))$/.test(idCardNo); + if (!check) return false; + + if (idCardNo.length === 15) { + return check15IdCardNo(idCardNo); + } + + return check18IdCardNo(idCardNo); + }; + + return checkIdCardNo(str); + }, + 'zh-TW': function zhTW(str) { + var ALPHABET_CODES = { + A: 10, + B: 11, + C: 12, + D: 13, + E: 14, + F: 15, + G: 16, + H: 17, + I: 34, + J: 18, + K: 19, + L: 20, + M: 21, + N: 22, + O: 35, + P: 23, + Q: 24, + R: 25, + S: 26, + T: 27, + U: 28, + V: 29, + W: 32, + X: 30, + Y: 31, + Z: 33 + }; + var sanitized = str.trim().toUpperCase(); + if (!/^[A-Z][0-9]{9}$/.test(sanitized)) return false; + return Array.from(sanitized).reduce(function (sum, number, index) { + if (index === 0) { + var code = ALPHABET_CODES[number]; + return code % 10 * 9 + Math.floor(code / 10); + } + + if (index === 9) { + return (10 - sum % 10 - Number(number)) % 10 === 0; + } + + return sum + Number(number) * (9 - index); + }, 0); + } + }; + + function isIdentityCard(str, locale) { + (0, _assertString.default)(str); + + if (locale in validators) { + return validators[locale](str); + } else if (locale === 'any') { + for (var key in validators) { + // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes + // istanbul ignore else + if (validators.hasOwnProperty(key)) { + var validator = validators[key]; + + if (validator(str)) { + return true; + } + } + } + + return false; + } + + throw new Error("Invalid locale '".concat(locale, "'")); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isIdentityCard$1, isIdentityCard$1.exports)); + + var isIdentityCardValidator = /*@__PURE__*/getDefaultExportFromCjs(isIdentityCard$1.exports); + + var IS_IDENTITY_CARD = 'isIdentityCard'; + /** + * Check if the string is a valid identity card code. + * 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. + * Defaults to 'any'. + * If given value is not a string, then it returns false. + */ + function isIdentityCard(value, locale) { + return typeof value === 'string' && isIdentityCardValidator(value, locale); + } + /** + * Check if the string is a valid identity card code. + * 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. + * Defaults to 'any'. + * If given value is not a string, then it returns false. + */ + function IsIdentityCard(locale, validationOptions) { + return ValidateBy({ + name: IS_IDENTITY_CARD, + constraints: [locale], + validator: { + validate: function (value, args) { return isIdentityCard(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a identity card number'; }, validationOptions), + }, + }, validationOptions); + } + + var isISRC$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isISRC; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + // see http://isrc.ifpi.org/en/isrc-standard/code-syntax + var isrc = /^[A-Z]{2}[0-9A-Z]{3}\d{2}\d{5}$/; + + function isISRC(str) { + (0, _assertString.default)(str); + return isrc.test(str); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isISRC$1, isISRC$1.exports)); + + var isISRCValidator = /*@__PURE__*/getDefaultExportFromCjs(isISRC$1.exports); + + var IS_ISRC = 'isISRC'; + /** + * Check if the string is a ISRC. + * If given value is not a string, then it returns false. + */ + function isISRC(value) { + return typeof value === 'string' && isISRCValidator(value); + } + /** + * Check if the string is a ISRC. + * If given value is not a string, then it returns false. + */ + function IsISRC(validationOptions) { + return ValidateBy({ + name: IS_ISRC, + validator: { + validate: function (value, args) { return isISRC(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an ISRC'; }, validationOptions), + }, + }, validationOptions); + } + + var isLocale$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isLocale; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var localeReg = /^[A-Za-z]{2,4}([_-]([A-Za-z]{4}|[\d]{3}))?([_-]([A-Za-z]{2}|[\d]{3}))?$/; + + function isLocale(str) { + (0, _assertString.default)(str); + + if (str === 'en_US_POSIX' || str === 'ca_ES_VALENCIA') { + return true; + } + + return localeReg.test(str); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isLocale$1, isLocale$1.exports)); + + var isLocaleValidator = /*@__PURE__*/getDefaultExportFromCjs(isLocale$1.exports); + + var IS_LOCALE = 'isLocale'; + /** + * Check if the string is a locale. + * If given value is not a string, then it returns false. + */ + function isLocale(value) { + return typeof value === 'string' && isLocaleValidator(value); + } + /** + * Check if the string is a locale. + * If given value is not a string, then it returns false. + */ + function IsLocale(validationOptions) { + return ValidateBy({ + name: IS_LOCALE, + validator: { + validate: function (value, args) { return isLocale(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be locale'; }, validationOptions), + }, + }, validationOptions); + } + + var isMagnetURI$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isMagnetURI; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var magnetURI = /^magnet:\?xt(?:\.1)?=urn:(?:aich|bitprint|btih|ed2k|ed2khash|kzhash|md5|sha1|tree:tiger):[a-z0-9]{32}(?:[a-z0-9]{8})?($|&)/i; + + function isMagnetURI(url) { + (0, _assertString.default)(url); + return magnetURI.test(url.trim()); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isMagnetURI$1, isMagnetURI$1.exports)); + + var isMagnetURIValidator = /*@__PURE__*/getDefaultExportFromCjs(isMagnetURI$1.exports); + + var IS_MAGNET_URI = 'isMagnetURI'; + /** + * Check if the string is a magnet uri format. + * If given value is not a string, then it returns false. + */ + function isMagnetURI(value) { + return typeof value === 'string' && isMagnetURIValidator(value); + } + /** + * Check if the string is a magnet uri format. + * If given value is not a string, then it returns false. + */ + function IsMagnetURI(validationOptions) { + return ValidateBy({ + name: IS_MAGNET_URI, + validator: { + validate: function (value, args) { return isMagnetURI(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be magnet uri format'; }, validationOptions), + }, + }, validationOptions); + } + + var isMimeType$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isMimeType; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + /* + Checks if the provided string matches to a correct Media type format (MIME type) + + This function only checks is the string format follows the + etablished rules by the according RFC specifications. + This function supports 'charset' in textual media types + (https://tools.ietf.org/html/rfc6657). + + This function does not check against all the media types listed + by the IANA (https://www.iana.org/assignments/media-types/media-types.xhtml) + because of lightness purposes : it would require to include + all these MIME types in this librairy, which would weigh it + significantly. This kind of effort maybe is not worth for the use that + this function has in this entire librairy. + + More informations in the RFC specifications : + - https://tools.ietf.org/html/rfc2045 + - https://tools.ietf.org/html/rfc2046 + - https://tools.ietf.org/html/rfc7231#section-3.1.1.1 + - https://tools.ietf.org/html/rfc7231#section-3.1.1.5 + */ + // Match simple MIME types + // NB : + // Subtype length must not exceed 100 characters. + // This rule does not comply to the RFC specs (what is the max length ?). + var mimeTypeSimple = /^(application|audio|font|image|message|model|multipart|text|video)\/[a-zA-Z0-9\.\-\+]{1,100}$/i; // eslint-disable-line max-len + // Handle "charset" in "text/*" + + var mimeTypeText = /^text\/[a-zA-Z0-9\.\-\+]{1,100};\s?charset=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?$/i; // eslint-disable-line max-len + // Handle "boundary" in "multipart/*" + + var mimeTypeMultipart = /^multipart\/[a-zA-Z0-9\.\-\+]{1,100}(;\s?(boundary|charset)=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?){0,2}$/i; // eslint-disable-line max-len + + function isMimeType(str) { + (0, _assertString.default)(str); + return mimeTypeSimple.test(str) || mimeTypeText.test(str) || mimeTypeMultipart.test(str); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isMimeType$1, isMimeType$1.exports)); + + var isMimeTypeValidator = /*@__PURE__*/getDefaultExportFromCjs(isMimeType$1.exports); + + var IS_MIME_TYPE = 'isMimeType'; + /** + * Check if the string matches to a valid MIME type format + * If given value is not a string, then it returns false. + */ + function isMimeType(value) { + return typeof value === 'string' && isMimeTypeValidator(value); + } + /** + * Check if the string matches to a valid MIME type format + * If given value is not a string, then it returns false. + */ + function IsMimeType(validationOptions) { + return ValidateBy({ + name: IS_MIME_TYPE, + validator: { + validate: function (value, args) { return isMimeType(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be MIME type format'; }, validationOptions), + }, + }, validationOptions); + } + + var isOctal$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isOctal; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var octal = /^(0o)?[0-7]+$/i; + + function isOctal(str) { + (0, _assertString.default)(str); + return octal.test(str); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isOctal$1, isOctal$1.exports)); + + var isOctalValidator = /*@__PURE__*/getDefaultExportFromCjs(isOctal$1.exports); + + var IS_OCTAL = 'isOctal'; + /** + * Check if the string is a valid octal number. + * If given value is not a string, then it returns false. + */ + function isOctal(value) { + return typeof value === 'string' && isOctalValidator(value); + } + /** + * Check if the string is a valid octal number. + * If given value is not a string, then it returns false. + */ + function IsOctal(validationOptions) { + return ValidateBy({ + name: IS_OCTAL, + validator: { + validate: function (value, args) { return isOctal(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be valid octal number'; }, validationOptions), + }, + }, validationOptions); + } + + var isPassportNumber$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isPassportNumber; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + /** + * Reference: + * https://en.wikipedia.org/ -- Wikipedia + * https://docs.microsoft.com/en-us/microsoft-365/compliance/eu-passport-number -- EU Passport Number + * https://countrycode.org/ -- Country Codes + */ + var passportRegexByCountryCode = { + AM: /^[A-Z]{2}\d{7}$/, + // ARMENIA + AR: /^[A-Z]{3}\d{6}$/, + // ARGENTINA + AT: /^[A-Z]\d{7}$/, + // AUSTRIA + AU: /^[A-Z]\d{7}$/, + // AUSTRALIA + BE: /^[A-Z]{2}\d{6}$/, + // BELGIUM + BG: /^\d{9}$/, + // BULGARIA + BR: /^[A-Z]{2}\d{6}$/, + // BRAZIL + BY: /^[A-Z]{2}\d{7}$/, + // BELARUS + CA: /^[A-Z]{2}\d{6}$/, + // CANADA + CH: /^[A-Z]\d{7}$/, + // SWITZERLAND + CN: /^G\d{8}$|^E(?![IO])[A-Z0-9]\d{7}$/, + // CHINA [G=Ordinary, E=Electronic] followed by 8-digits, or E followed by any UPPERCASE letter (except I and O) followed by 7 digits + CY: /^[A-Z](\d{6}|\d{8})$/, + // CYPRUS + CZ: /^\d{8}$/, + // CZECH REPUBLIC + DE: /^[CFGHJKLMNPRTVWXYZ0-9]{9}$/, + // GERMANY + DK: /^\d{9}$/, + // DENMARK + DZ: /^\d{9}$/, + // ALGERIA + EE: /^([A-Z]\d{7}|[A-Z]{2}\d{7})$/, + // ESTONIA (K followed by 7-digits), e-passports have 2 UPPERCASE followed by 7 digits + ES: /^[A-Z0-9]{2}([A-Z0-9]?)\d{6}$/, + // SPAIN + FI: /^[A-Z]{2}\d{7}$/, + // FINLAND + FR: /^\d{2}[A-Z]{2}\d{5}$/, + // FRANCE + GB: /^\d{9}$/, + // UNITED KINGDOM + GR: /^[A-Z]{2}\d{7}$/, + // GREECE + HR: /^\d{9}$/, + // CROATIA + HU: /^[A-Z]{2}(\d{6}|\d{7})$/, + // HUNGARY + IE: /^[A-Z0-9]{2}\d{7}$/, + // IRELAND + IN: /^[A-Z]{1}-?\d{7}$/, + // INDIA + ID: /^[A-C]\d{7}$/, + // INDONESIA + IR: /^[A-Z]\d{8}$/, + // IRAN + IS: /^(A)\d{7}$/, + // ICELAND + IT: /^[A-Z0-9]{2}\d{7}$/, + // ITALY + JP: /^[A-Z]{2}\d{7}$/, + // JAPAN + KR: /^[MS]\d{8}$/, + // SOUTH KOREA, REPUBLIC OF KOREA, [S=PS Passports, M=PM Passports] + LT: /^[A-Z0-9]{8}$/, + // LITHUANIA + LU: /^[A-Z0-9]{8}$/, + // LUXEMBURG + LV: /^[A-Z0-9]{2}\d{7}$/, + // LATVIA + LY: /^[A-Z0-9]{8}$/, + // LIBYA + MT: /^\d{7}$/, + // MALTA + MZ: /^([A-Z]{2}\d{7})|(\d{2}[A-Z]{2}\d{5})$/, + // MOZAMBIQUE + MY: /^[AHK]\d{8}$/, + // MALAYSIA + NL: /^[A-Z]{2}[A-Z0-9]{6}\d$/, + // NETHERLANDS + PL: /^[A-Z]{2}\d{7}$/, + // POLAND + PT: /^[A-Z]\d{6}$/, + // PORTUGAL + RO: /^\d{8,9}$/, + // ROMANIA + RU: /^\d{9}$/, + // RUSSIAN FEDERATION + SE: /^\d{8}$/, + // SWEDEN + SL: /^(P)[A-Z]\d{7}$/, + // SLOVANIA + SK: /^[0-9A-Z]\d{7}$/, + // SLOVAKIA + TR: /^[A-Z]\d{8}$/, + // TURKEY + UA: /^[A-Z]{2}\d{6}$/, + // UKRAINE + US: /^\d{9}$/ // UNITED STATES + + }; + /** + * Check if str is a valid passport number + * relative to provided ISO Country Code. + * + * @param {string} str + * @param {string} countryCode + * @return {boolean} + */ + + function isPassportNumber(str, countryCode) { + (0, _assertString.default)(str); + /** Remove All Whitespaces, Convert to UPPERCASE */ + + var normalizedStr = str.replace(/\s/g, '').toUpperCase(); + return countryCode.toUpperCase() in passportRegexByCountryCode && passportRegexByCountryCode[countryCode].test(normalizedStr); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isPassportNumber$1, isPassportNumber$1.exports)); + + var isPassportNumberValidator = /*@__PURE__*/getDefaultExportFromCjs(isPassportNumber$1.exports); + + var IS_PASSPORT_NUMBER = 'isPassportNumber'; + /** + * Check if the string is a valid passport number relative to a specific country code. + * If given value is not a string, then it returns false. + */ + function isPassportNumber(value, countryCode) { + return typeof value === 'string' && isPassportNumberValidator(value, countryCode); + } + /** + * Check if the string is a valid passport number relative to a specific country code. + * If given value is not a string, then it returns false. + */ + function IsPassportNumber(countryCode, validationOptions) { + return ValidateBy({ + name: IS_PASSPORT_NUMBER, + constraints: [countryCode], + validator: { + validate: function (value, args) { return isPassportNumber(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be valid passport number'; }, validationOptions), + }, + }, validationOptions); + } + + var isPostalCode$2 = {}; + + Object.defineProperty(isPostalCode$2, "__esModule", { + value: true + }); + var _default = isPostalCode$2.default = isPostalCode$1; + isPostalCode$2.locales = void 0; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + // common patterns + var threeDigit = /^\d{3}$/; + var fourDigit = /^\d{4}$/; + var fiveDigit = /^\d{5}$/; + var sixDigit = /^\d{6}$/; + var patterns = { + AD: /^AD\d{3}$/, + AT: fourDigit, + AU: fourDigit, + AZ: /^AZ\d{4}$/, + BE: fourDigit, + BG: fourDigit, + BR: /^\d{5}-\d{3}$/, + BY: /2[1-4]{1}\d{4}$/, + CA: /^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJ-NPRSTV-Z][\s\-]?\d[ABCEGHJ-NPRSTV-Z]\d$/i, + CH: fourDigit, + CN: /^(0[1-7]|1[012356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[1-5]|8[1345]|9[09])\d{4}$/, + CZ: /^\d{3}\s?\d{2}$/, + DE: fiveDigit, + DK: fourDigit, + DO: fiveDigit, + DZ: fiveDigit, + EE: fiveDigit, + ES: /^(5[0-2]{1}|[0-4]{1}\d{1})\d{3}$/, + FI: fiveDigit, + FR: /^\d{2}\s?\d{3}$/, + GB: /^(gir\s?0aa|[a-z]{1,2}\d[\da-z]?\s?(\d[a-z]{2})?)$/i, + GR: /^\d{3}\s?\d{2}$/, + HR: /^([1-5]\d{4}$)/, + HT: /^HT\d{4}$/, + HU: fourDigit, + ID: fiveDigit, + IE: /^(?!.*(?:o))[A-Za-z]\d[\dw]\s\w{4}$/i, + IL: /^(\d{5}|\d{7})$/, + IN: /^((?!10|29|35|54|55|65|66|86|87|88|89)[1-9][0-9]{5})$/, + IR: /\b(?!(\d)\1{3})[13-9]{4}[1346-9][013-9]{5}\b/, + IS: threeDigit, + IT: fiveDigit, + JP: /^\d{3}\-\d{4}$/, + KE: fiveDigit, + KR: /^(\d{5}|\d{6})$/, + LI: /^(948[5-9]|949[0-7])$/, + LT: /^LT\-\d{5}$/, + LU: fourDigit, + LV: /^LV\-\d{4}$/, + LK: fiveDigit, + MX: fiveDigit, + MT: /^[A-Za-z]{3}\s{0,1}\d{4}$/, + MY: fiveDigit, + NL: /^\d{4}\s?[a-z]{2}$/i, + NO: fourDigit, + NP: /^(10|21|22|32|33|34|44|45|56|57)\d{3}$|^(977)$/i, + NZ: fourDigit, + PL: /^\d{2}\-\d{3}$/, + PR: /^00[679]\d{2}([ -]\d{4})?$/, + PT: /^\d{4}\-\d{3}?$/, + RO: sixDigit, + RU: sixDigit, + SA: fiveDigit, + SE: /^[1-9]\d{2}\s?\d{2}$/, + SG: sixDigit, + SI: fourDigit, + SK: /^\d{3}\s?\d{2}$/, + TH: fiveDigit, + TN: fourDigit, + TW: /^\d{3}(\d{2})?$/, + UA: fiveDigit, + US: /^\d{5}(-\d{4})?$/, + ZA: fourDigit, + ZM: fiveDigit + }; + var locales = Object.keys(patterns); + isPostalCode$2.locales = locales; + + function isPostalCode$1(str, locale) { + (0, _assertString.default)(str); + + if (locale in patterns) { + return patterns[locale].test(str); + } else if (locale === 'any') { + for (var key in patterns) { + // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes + // istanbul ignore else + if (patterns.hasOwnProperty(key)) { + var pattern = patterns[key]; + + if (pattern.test(str)) { + return true; + } + } + } + + return false; + } + + throw new Error("Invalid locale '".concat(locale, "'")); + } + + var IS_POSTAL_CODE = 'isPostalCode'; + /** + * Check if the string is a postal code, + * (locale is one of [ 'AD', 'AT', 'AU', 'BE', 'BG', 'BR', 'CA', 'CH', 'CZ', 'DE', 'DK', 'DZ', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'ID', 'IE' 'IL', 'IN', 'IR', 'IS', 'IT', 'JP', 'KE', 'LI', 'LT', 'LU', 'LV', 'MT', 'MX', 'NL', 'NO', 'NZ', 'PL', 'PR', 'PT', 'RO', 'RU', 'SA', 'SE', 'SI', 'TN', 'TW', 'UA', 'US', 'ZA', 'ZM' ] OR 'any'. If 'any' is used, function will check if any of the locals match. Locale list is validator.isPostalCodeLocales.). + * If given value is not a string, then it returns false. + */ + function isPostalCode(value, locale) { + return typeof value === 'string' && _default(value, locale); + } + /** + * Check if the string is a postal code, + * (locale is one of [ 'AD', 'AT', 'AU', 'BE', 'BG', 'BR', 'CA', 'CH', 'CZ', 'DE', 'DK', 'DZ', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'ID', 'IE' 'IL', 'IN', 'IR', 'IS', 'IT', 'JP', 'KE', 'LI', 'LT', 'LU', 'LV', 'MT', 'MX', 'NL', 'NO', 'NZ', 'PL', 'PR', 'PT', 'RO', 'RU', 'SA', 'SE', 'SI', 'TN', 'TW', 'UA', 'US', 'ZA', 'ZM' ] OR 'any'. If 'any' is used, function will check if any of the locals match. Locale list is validator.isPostalCodeLocales.). + * If given value is not a string, then it returns false. + */ + function IsPostalCode(locale, validationOptions) { + return ValidateBy({ + name: IS_POSTAL_CODE, + constraints: [locale], + validator: { + validate: function (value, args) { return isPostalCode(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a postal code'; }, validationOptions), + }, + }, validationOptions); + } + + var isRFC3339$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isRFC3339; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + /* Based on https://tools.ietf.org/html/rfc3339#section-5.6 */ + var dateFullYear = /[0-9]{4}/; + var dateMonth = /(0[1-9]|1[0-2])/; + var dateMDay = /([12]\d|0[1-9]|3[01])/; + var timeHour = /([01][0-9]|2[0-3])/; + var timeMinute = /[0-5][0-9]/; + var timeSecond = /([0-5][0-9]|60)/; + var timeSecFrac = /(\.[0-9]+)?/; + var timeNumOffset = new RegExp("[-+]".concat(timeHour.source, ":").concat(timeMinute.source)); + var timeOffset = new RegExp("([zZ]|".concat(timeNumOffset.source, ")")); + var partialTime = new RegExp("".concat(timeHour.source, ":").concat(timeMinute.source, ":").concat(timeSecond.source).concat(timeSecFrac.source)); + var fullDate = new RegExp("".concat(dateFullYear.source, "-").concat(dateMonth.source, "-").concat(dateMDay.source)); + var fullTime = new RegExp("".concat(partialTime.source).concat(timeOffset.source)); + var rfc3339 = new RegExp("^".concat(fullDate.source, "[ tT]").concat(fullTime.source, "$")); + + function isRFC3339(str) { + (0, _assertString.default)(str); + return rfc3339.test(str); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isRFC3339$1, isRFC3339$1.exports)); + + var isRFC3339Validator = /*@__PURE__*/getDefaultExportFromCjs(isRFC3339$1.exports); + + var IS_RFC_3339 = 'isRFC3339'; + /** + * Check if the string is a valid RFC 3339 date. + * If given value is not a string, then it returns false. + */ + function isRFC3339(value) { + return typeof value === 'string' && isRFC3339Validator(value); + } + /** + * Check if the string is a valid RFC 3339 date. + * If given value is not a string, then it returns false. + */ + function IsRFC3339(validationOptions) { + return ValidateBy({ + name: IS_RFC_3339, + validator: { + validate: function (value, args) { return isRFC3339(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be RFC 3339 date'; }, validationOptions), + }, + }, validationOptions); + } + + var isRgbColor$1 = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isRgbColor; + + var _assertString = _interopRequireDefault(assertString.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var rgbColor = /^rgb\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){2}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\)$/; + var rgbaColor = /^rgba\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){3}(0?\.\d|1(\.0)?|0(\.0)?)\)$/; + var rgbColorPercent = /^rgb\((([0-9]%|[1-9][0-9]%|100%),){2}([0-9]%|[1-9][0-9]%|100%)\)/; + var rgbaColorPercent = /^rgba\((([0-9]%|[1-9][0-9]%|100%),){3}(0?\.\d|1(\.0)?|0(\.0)?)\)/; + + function isRgbColor(str) { + var includePercentValues = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + (0, _assertString.default)(str); + + if (!includePercentValues) { + return rgbColor.test(str) || rgbaColor.test(str); + } + + return rgbColor.test(str) || rgbaColor.test(str) || rgbColorPercent.test(str) || rgbaColorPercent.test(str); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isRgbColor$1, isRgbColor$1.exports)); + + var isRgbColorValidator = /*@__PURE__*/getDefaultExportFromCjs(isRgbColor$1.exports); + + var IS_RGB_COLOR = 'isRgbColor'; + /** + * Check if the string is a rgb or rgba color. + * `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. + * If given value is not a string, then it returns false. + */ + function isRgbColor(value, includePercentValues) { + return typeof value === 'string' && isRgbColorValidator(value, includePercentValues); + } + /** + * Check if the string is a rgb or rgba color. + * `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. + * If given value is not a string, then it returns false. + */ + function IsRgbColor(includePercentValues, validationOptions) { + return ValidateBy({ + name: IS_RGB_COLOR, + constraints: [includePercentValues], + validator: { + validate: function (value, args) { return isRgbColor(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be RGB color'; }, validationOptions), + }, + }, validationOptions); + } + + var isSemVer$1 = {exports: {}}; + + var multilineRegex = {exports: {}}; + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = multilineRegexp; + + /** + * Build RegExp object from an array + * of multiple/multi-line regexp parts + * + * @param {string[]} parts + * @param {string} flags + * @return {object} - RegExp object + */ + function multilineRegexp(parts, flags) { + var regexpAsStringLiteral = parts.join(''); + return new RegExp(regexpAsStringLiteral, flags); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(multilineRegex, multilineRegex.exports)); + + (function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = isSemVer; + + var _assertString = _interopRequireDefault(assertString.exports); + + var _multilineRegex = _interopRequireDefault(multilineRegex.exports); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + /** + * Regular Expression to match + * semantic versioning (SemVer) + * built from multi-line, multi-parts regexp + * Reference: https://semver.org/ + */ + var semanticVersioningRegex = (0, _multilineRegex.default)(['^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)', '(?:-((?:0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*))*))', '?(?:\\+([0-9a-z-]+(?:\\.[0-9a-z-]+)*))?$'], 'i'); + + function isSemVer(str) { + (0, _assertString.default)(str); + return semanticVersioningRegex.test(str); + } + + module.exports = exports.default; + module.exports.default = exports.default; + }(isSemVer$1, isSemVer$1.exports)); + + var isSemVerValidator = /*@__PURE__*/getDefaultExportFromCjs(isSemVer$1.exports); + + var IS_SEM_VER = 'isSemVer'; + /** + * Check if the string is a Semantic Versioning Specification (SemVer). + * If given value is not a string, then it returns false. + */ + function isSemVer(value) { + return typeof value === 'string' && isSemVerValidator(value); + } + /** + * Check if the string is a Semantic Versioning Specification (SemVer). + * If given value is not a string, then it returns false. + */ + function IsSemVer(validationOptions) { + return ValidateBy({ + name: IS_SEM_VER, + validator: { + validate: function (value, args) { return isSemVer(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a Semantic Versioning Specification'; }, validationOptions), + }, + }, validationOptions); + } + + var IS_BOOLEAN = 'isBoolean'; + /** + * Checks if a given value is a boolean. + */ + function isBoolean(value) { + return value instanceof Boolean || typeof value === 'boolean'; + } + /** + * Checks if a value is a boolean. + */ + function IsBoolean(validationOptions) { + return ValidateBy({ + name: IS_BOOLEAN, + validator: { + validate: function (value, args) { return isBoolean(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a boolean value'; }, validationOptions), + }, + }, validationOptions); + } + + var IS_DATE = 'isDate'; + /** + * Checks if a given value is a date. + */ + function isDate(value) { + return value instanceof Date && !isNaN(value.getTime()); + } + /** + * Checks if a value is a date. + */ + function IsDate(validationOptions) { + return ValidateBy({ + name: IS_DATE, + validator: { + validate: function (value, args) { return isDate(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a Date instance'; }, validationOptions), + }, + }, validationOptions); + } + + var IS_NUMBER = 'isNumber'; + /** + * Checks if a given value is a number. + */ + function isNumber(value, options) { + if (options === void 0) { options = {}; } + if (typeof value !== 'number') { + return false; + } + if (value === Infinity || value === -Infinity) { + return options.allowInfinity; + } + if (Number.isNaN(value)) { + return options.allowNaN; + } + if (options.maxDecimalPlaces !== undefined) { + var decimalPlaces = 0; + if (value % 1 !== 0) { + decimalPlaces = value.toString().split('.')[1].length; + } + if (decimalPlaces > options.maxDecimalPlaces) { + return false; + } + } + return Number.isFinite(value); + } + /** + * Checks if a value is a number. + */ + function IsNumber(options, validationOptions) { + if (options === void 0) { options = {}; } + return ValidateBy({ + name: IS_NUMBER, + constraints: [options], + validator: { + validate: function (value, args) { return isNumber(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a number conforming to the specified constraints'; }, validationOptions), + }, + }, validationOptions); + } + + var IS_ENUM = 'isEnum'; + /** + * Checks if a given value is an enum + */ + function isEnum(value, entity) { + var enumValues = Object.keys(entity).map(function (k) { return entity[k]; }); + return enumValues.indexOf(value) >= 0; + } + /** + * Checks if a given value is an enum + */ + function IsEnum(entity, validationOptions) { + return ValidateBy({ + name: IS_ENUM, + constraints: [entity], + validator: { + validate: function (value, args) { return isEnum(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid enum value'; }, validationOptions), + }, + }, validationOptions); + } + + var IS_INT = 'isInt'; + /** + * Checks if value is an integer. + */ + function isInt(val) { + return typeof val === 'number' && Number.isInteger(val); + } + /** + * Checks if value is an integer. + */ + function IsInt(validationOptions) { + return ValidateBy({ + name: IS_INT, + validator: { + validate: function (value, args) { return isInt(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an integer number'; }, validationOptions), + }, + }, validationOptions); + } + + var IS_STRING = 'isString'; + /** + * Checks if a given value is a real string. + */ + function isString(value) { + return value instanceof String || typeof value === 'string'; + } + /** + * Checks if a given value is a real string. + */ + function IsString(validationOptions) { + return ValidateBy({ + name: IS_STRING, + validator: { + validate: function (value, args) { return isString(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a string'; }, validationOptions), + }, + }, validationOptions); + } + + var IS_ARRAY = 'isArray'; + /** + * Checks if a given value is an array + */ + function isArray(value) { + return Array.isArray(value); + } + /** + * Checks if a given value is an array + */ + function IsArray(validationOptions) { + return ValidateBy({ + name: IS_ARRAY, + validator: { + validate: function (value, args) { return isArray(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an array'; }, validationOptions), + }, + }, validationOptions); + } + + var IS_OBJECT = 'isObject'; + /** + * Checks if the value is valid Object. + * Returns false if the value is not an object. + */ + function isObject(value) { + return value != null && (typeof value === 'object' || typeof value === 'function') && !Array.isArray(value); + } + /** + * Checks if the value is valid Object. + * Returns false if the value is not an object. + */ + function IsObject(validationOptions) { + return ValidateBy({ + name: IS_OBJECT, + validator: { + validate: function (value, args) { return isObject(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an object'; }, validationOptions), + }, + }, validationOptions); + } + + var ARRAY_CONTAINS = 'arrayContains'; + /** + * Checks if array contains all values from the given array of values. + * If null or undefined is given then this function returns false. + */ + function arrayContains(array, values) { + if (!Array.isArray(array)) + return false; + return values.every(function (value) { return array.indexOf(value) !== -1; }); + } + /** + * Checks if array contains all values from the given array of values. + * If null or undefined is given then this function returns false. + */ + function ArrayContains(values, validationOptions) { + return ValidateBy({ + name: ARRAY_CONTAINS, + constraints: [values], + validator: { + validate: function (value, args) { return arrayContains(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain $constraint1 values'; }, validationOptions), + }, + }, validationOptions); + } + + var ARRAY_NOT_CONTAINS = 'arrayNotContains'; + /** + * Checks if array does not contain any of the given values. + * If null or undefined is given then this function returns false. + */ + function arrayNotContains(array, values) { + if (!Array.isArray(array)) + return false; + return values.every(function (value) { return array.indexOf(value) === -1; }); + } + /** + * Checks if array does not contain any of the given values. + * If null or undefined is given then this function returns false. + */ + function ArrayNotContains(values, validationOptions) { + return ValidateBy({ + name: ARRAY_NOT_CONTAINS, + constraints: [values], + validator: { + validate: function (value, args) { return arrayNotContains(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not contain $constraint1 values'; }, validationOptions), + }, + }, validationOptions); + } + + var ARRAY_NOT_EMPTY = 'arrayNotEmpty'; + /** + * Checks if given array is not empty. + * If null or undefined is given then this function returns false. + */ + function arrayNotEmpty(array) { + return Array.isArray(array) && array.length > 0; + } + /** + * Checks if given array is not empty. + * If null or undefined is given then this function returns false. + */ + function ArrayNotEmpty(validationOptions) { + return ValidateBy({ + name: ARRAY_NOT_EMPTY, + validator: { + validate: function (value, args) { return arrayNotEmpty(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not be empty'; }, validationOptions), + }, + }, validationOptions); + } + + var ARRAY_MIN_SIZE = 'arrayMinSize'; + /** + * Checks if the array's length is greater than or equal to the specified number. + * If null or undefined is given then this function returns false. + */ + function arrayMinSize(array, min) { + return Array.isArray(array) && array.length >= min; + } + /** + * Checks if the array's length is greater than or equal to the specified number. + * If null or undefined is given then this function returns false. + */ + function ArrayMinSize(min, validationOptions) { + return ValidateBy({ + name: ARRAY_MIN_SIZE, + constraints: [min], + validator: { + validate: function (value, args) { return arrayMinSize(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain at least $constraint1 elements'; }, validationOptions), + }, + }, validationOptions); + } + + var ARRAY_MAX_SIZE = 'arrayMaxSize'; + /** + * Checks if the array's length is less or equal to the specified number. + * If null or undefined is given then this function returns false. + */ + function arrayMaxSize(array, max) { + return Array.isArray(array) && array.length <= max; + } + /** + * Checks if the array's length is less or equal to the specified number. + * If null or undefined is given then this function returns false. + */ + function ArrayMaxSize(max, validationOptions) { + return ValidateBy({ + name: ARRAY_MAX_SIZE, + constraints: [max], + validator: { + validate: function (value, args) { return arrayMaxSize(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain not more than $constraint1 elements'; }, validationOptions), + }, + }, validationOptions); + } + + var ARRAY_UNIQUE = 'arrayUnique'; + /** + * Checks if all array's values are unique. Comparison for objects is reference-based. + * If null or undefined is given then this function returns false. + */ + function arrayUnique(array, identifier) { + if (!Array.isArray(array)) + return false; + if (identifier) { + array = array.map(function (o) { return (o != null ? identifier(o) : o); }); + } + var uniqueItems = array.filter(function (a, b, c) { return c.indexOf(a) === b; }); + return array.length === uniqueItems.length; + } + /** + * Checks if all array's values are unique. Comparison for objects is reference-based. + * If null or undefined is given then this function returns false. + */ + function ArrayUnique(identifierOrOptions, validationOptions) { + var identifier = typeof identifierOrOptions === 'function' ? identifierOrOptions : undefined; + var options = typeof identifierOrOptions !== 'function' ? identifierOrOptions : validationOptions; + return ValidateBy({ + name: ARRAY_UNIQUE, + validator: { + validate: function (value, args) { return arrayUnique(value, identifier); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + "All $property's elements must be unique"; }, options), + }, + }, options); + } + + var IS_NOT_EMPTY_OBJECT = 'isNotEmptyObject'; + /** + * Checks if the value is valid Object & not empty. + * Returns false if the value is not an object or an empty valid object. + */ + function isNotEmptyObject(value, options) { + if (!isObject(value)) { + return false; + } + if ((options === null || options === void 0 ? void 0 : options.nullable) === true) { + return !Object.values(value).every(function (propertyValue) { return propertyValue === null || propertyValue === undefined; }); + } + for (var key in value) { + if (value.hasOwnProperty(key)) { + return true; + } + } + return false; + } + /** + * Checks if the value is valid Object & not empty. + * Returns false if the value is not an object or an empty valid object. + */ + function IsNotEmptyObject(options, validationOptions) { + return ValidateBy({ + name: IS_NOT_EMPTY_OBJECT, + constraints: [options], + validator: { + validate: function (value, args) { return isNotEmptyObject(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a non-empty object'; }, validationOptions), + }, + }, validationOptions); + } + + var IS_INSTANCE = 'isInstance'; + /** + * Checks if the value is an instance of the specified object. + */ + function isInstance(object, targetTypeConstructor) { + return (targetTypeConstructor && typeof targetTypeConstructor === 'function' && object instanceof targetTypeConstructor); + } + /** + * Checks if the value is an instance of the specified object. + */ + function IsInstance(targetType, validationOptions) { + return ValidateBy({ + name: IS_INSTANCE, + constraints: [targetType], + validator: { + validate: function (value, args) { return isInstance(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix, args) { + if (args.constraints[0]) { + return eachPrefix + "$property must be an instance of ".concat(args.constraints[0].name); + } + else { + return eachPrefix + "".concat(IS_INSTANCE, " decorator expects and object as value, but got falsy value."); + } + }, validationOptions), + }, + }, validationOptions); + } + + /** + * Validates given object by object's decorators or given validation schema. + */ + function validate(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions) { + if (typeof schemaNameOrObject === 'string') { + return getFromContainer(Validator).validate(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions); + } + else { + return getFromContainer(Validator).validate(schemaNameOrObject, objectOrValidationOptions); + } + } + /** + * Validates given object by object's decorators or given validation schema and reject on error. + */ + function validateOrReject(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions) { + if (typeof schemaNameOrObject === 'string') { + return getFromContainer(Validator).validateOrReject(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions); + } + else { + return getFromContainer(Validator).validateOrReject(schemaNameOrObject, objectOrValidationOptions); + } + } + /** + * Validates given object by object's decorators or given validation schema. + * Note that this method completely ignores async validations. + * If you want to properly perform validation you need to call validate method instead. + */ + function validateSync(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions) { + if (typeof schemaNameOrObject === 'string') { + return getFromContainer(Validator).validateSync(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions); + } + else { + return getFromContainer(Validator).validateSync(schemaNameOrObject, objectOrValidationOptions); + } + } + /** + * Registers a new validation schema. + */ + function registerSchema(schema) { + getMetadataStorage().addValidationSchema(schema); + } + + exports.ARRAY_CONTAINS = ARRAY_CONTAINS; + exports.ARRAY_MAX_SIZE = ARRAY_MAX_SIZE; + exports.ARRAY_MIN_SIZE = ARRAY_MIN_SIZE; + exports.ARRAY_NOT_CONTAINS = ARRAY_NOT_CONTAINS; + exports.ARRAY_NOT_EMPTY = ARRAY_NOT_EMPTY; + exports.ARRAY_UNIQUE = ARRAY_UNIQUE; + exports.Allow = Allow; + exports.ArrayContains = ArrayContains; + exports.ArrayMaxSize = ArrayMaxSize; + exports.ArrayMinSize = ArrayMinSize; + exports.ArrayNotContains = ArrayNotContains; + exports.ArrayNotEmpty = ArrayNotEmpty; + exports.ArrayUnique = ArrayUnique; + exports.CONTAINS = CONTAINS; + exports.Contains = Contains; + exports.EQUALS = EQUALS; + exports.Equals = Equals; + exports.IS_ALPHA = IS_ALPHA; + exports.IS_ALPHANUMERIC = IS_ALPHANUMERIC; + exports.IS_ARRAY = IS_ARRAY; + exports.IS_ASCII = IS_ASCII; + exports.IS_BASE32 = IS_BASE32; + exports.IS_BASE64 = IS_BASE64; + exports.IS_BIC = IS_BIC; + exports.IS_BOOLEAN = IS_BOOLEAN; + exports.IS_BOOLEAN_STRING = IS_BOOLEAN_STRING; + exports.IS_BTC_ADDRESS = IS_BTC_ADDRESS; + exports.IS_BYTE_LENGTH = IS_BYTE_LENGTH; + exports.IS_CREDIT_CARD = IS_CREDIT_CARD; + exports.IS_CURRENCY = IS_CURRENCY; + exports.IS_DATA_URI = IS_DATA_URI; + exports.IS_DATE = IS_DATE; + exports.IS_DATE_STRING = IS_DATE_STRING; + exports.IS_DECIMAL = IS_DECIMAL; + exports.IS_DEFINED = IS_DEFINED; + exports.IS_DIVISIBLE_BY = IS_DIVISIBLE_BY; + exports.IS_EAN = IS_EAN; + exports.IS_EMAIL = IS_EMAIL; + exports.IS_EMPTY = IS_EMPTY; + exports.IS_ENUM = IS_ENUM; + exports.IS_ETHEREUM_ADDRESS = IS_ETHEREUM_ADDRESS; + exports.IS_FIREBASE_PUSH_ID = IS_FIREBASE_PUSH_ID; + exports.IS_FQDN = IS_FQDN; + exports.IS_FULL_WIDTH = IS_FULL_WIDTH; + exports.IS_HALF_WIDTH = IS_HALF_WIDTH; + exports.IS_HASH = IS_HASH; + exports.IS_HEXADECIMAL = IS_HEXADECIMAL; + exports.IS_HEX_COLOR = IS_HEX_COLOR; + exports.IS_HSL = IS_HSL; + exports.IS_IBAN = IS_IBAN; + exports.IS_IDENTITY_CARD = IS_IDENTITY_CARD; + exports.IS_IN = IS_IN; + exports.IS_INSTANCE = IS_INSTANCE; + exports.IS_INT = IS_INT; + exports.IS_IP = IS_IP; + exports.IS_ISBN = IS_ISBN; + exports.IS_ISIN = IS_ISIN; + exports.IS_ISO31661_ALPHA_2 = IS_ISO31661_ALPHA_2; + exports.IS_ISO31661_ALPHA_3 = IS_ISO31661_ALPHA_3; + exports.IS_ISO8601 = IS_ISO8601; + exports.IS_ISRC = IS_ISRC; + exports.IS_ISSN = IS_ISSN; + exports.IS_JSON = IS_JSON; + exports.IS_JWT = IS_JWT; + exports.IS_LATITUDE = IS_LATITUDE; + exports.IS_LATLONG = IS_LATLONG; + exports.IS_LENGTH = IS_LENGTH; + exports.IS_LOCALE = IS_LOCALE; + exports.IS_LONGITUDE = IS_LONGITUDE; + exports.IS_LOWERCASE = IS_LOWERCASE; + exports.IS_MAC_ADDRESS = IS_MAC_ADDRESS; + exports.IS_MAGNET_URI = IS_MAGNET_URI; + exports.IS_MILITARY_TIME = IS_MILITARY_TIME; + exports.IS_MIME_TYPE = IS_MIME_TYPE; + exports.IS_MOBILE_PHONE = IS_MOBILE_PHONE; + exports.IS_MONGO_ID = IS_MONGO_ID; + exports.IS_MULTIBYTE = IS_MULTIBYTE; + exports.IS_NEGATIVE = IS_NEGATIVE; + exports.IS_NOT_EMPTY = IS_NOT_EMPTY; + exports.IS_NOT_EMPTY_OBJECT = IS_NOT_EMPTY_OBJECT; + exports.IS_NOT_IN = IS_NOT_IN; + exports.IS_NUMBER = IS_NUMBER; + exports.IS_NUMBER_STRING = IS_NUMBER_STRING; + exports.IS_OBJECT = IS_OBJECT; + exports.IS_OCTAL = IS_OCTAL; + exports.IS_PASSPORT_NUMBER = IS_PASSPORT_NUMBER; + exports.IS_PHONE_NUMBER = IS_PHONE_NUMBER; + exports.IS_PORT = IS_PORT; + exports.IS_POSITIVE = IS_POSITIVE; + exports.IS_POSTAL_CODE = IS_POSTAL_CODE; + exports.IS_RFC_3339 = IS_RFC_3339; + exports.IS_RGB_COLOR = IS_RGB_COLOR; + exports.IS_SEM_VER = IS_SEM_VER; + exports.IS_STRING = IS_STRING; + exports.IS_SURROGATE_PAIR = IS_SURROGATE_PAIR; + exports.IS_UPPERCASE = IS_UPPERCASE; + exports.IS_URL = IS_URL; + exports.IS_UUID = IS_UUID; + exports.IS_VARIABLE_WIDTH = IS_VARIABLE_WIDTH; + exports.IsAlpha = IsAlpha; + exports.IsAlphanumeric = IsAlphanumeric; + exports.IsArray = IsArray; + exports.IsAscii = IsAscii; + exports.IsBIC = IsBIC; + exports.IsBase32 = IsBase32; + exports.IsBase64 = IsBase64; + exports.IsBoolean = IsBoolean; + exports.IsBooleanString = IsBooleanString; + exports.IsBtcAddress = IsBtcAddress; + exports.IsByteLength = IsByteLength; + exports.IsCreditCard = IsCreditCard; + exports.IsCurrency = IsCurrency; + exports.IsDataURI = IsDataURI; + exports.IsDate = IsDate; + exports.IsDateString = IsDateString; + exports.IsDecimal = IsDecimal; + exports.IsDefined = IsDefined; + exports.IsDivisibleBy = IsDivisibleBy; + exports.IsEAN = IsEAN; + exports.IsEmail = IsEmail; + exports.IsEmpty = IsEmpty; + exports.IsEnum = IsEnum; + exports.IsEthereumAddress = IsEthereumAddress; + exports.IsFQDN = IsFQDN; + exports.IsFirebasePushId = IsFirebasePushId; + exports.IsFullWidth = IsFullWidth; + exports.IsHSL = IsHSL; + exports.IsHalfWidth = IsHalfWidth; + exports.IsHash = IsHash; + exports.IsHexColor = IsHexColor; + exports.IsHexadecimal = IsHexadecimal; + exports.IsIBAN = IsIBAN; + exports.IsIP = IsIP; + exports.IsISBN = IsISBN; + exports.IsISIN = IsISIN; + exports.IsISO31661Alpha2 = IsISO31661Alpha2; + exports.IsISO31661Alpha3 = IsISO31661Alpha3; + exports.IsISO8601 = IsISO8601; + exports.IsISRC = IsISRC; + exports.IsISSN = IsISSN; + exports.IsIdentityCard = IsIdentityCard; + exports.IsIn = IsIn; + exports.IsInstance = IsInstance; + exports.IsInt = IsInt; + exports.IsJSON = IsJSON; + exports.IsJWT = IsJWT; + exports.IsLatLong = IsLatLong; + exports.IsLatitude = IsLatitude; + exports.IsLocale = IsLocale; + exports.IsLongitude = IsLongitude; + exports.IsLowercase = IsLowercase; + exports.IsMACAddress = IsMACAddress; + exports.IsMagnetURI = IsMagnetURI; + exports.IsMilitaryTime = IsMilitaryTime; + exports.IsMimeType = IsMimeType; + exports.IsMobilePhone = IsMobilePhone; + exports.IsMongoId = IsMongoId; + exports.IsMultibyte = IsMultibyte; + exports.IsNegative = IsNegative; + exports.IsNotEmpty = IsNotEmpty; + exports.IsNotEmptyObject = IsNotEmptyObject; + exports.IsNotIn = IsNotIn; + exports.IsNumber = IsNumber; + exports.IsNumberString = IsNumberString; + exports.IsObject = IsObject; + exports.IsOctal = IsOctal; + exports.IsOptional = IsOptional; + exports.IsPassportNumber = IsPassportNumber; + exports.IsPhoneNumber = IsPhoneNumber; + exports.IsPort = IsPort; + exports.IsPositive = IsPositive; + exports.IsPostalCode = IsPostalCode; + exports.IsRFC3339 = IsRFC3339; + exports.IsRgbColor = IsRgbColor; + exports.IsSemVer = IsSemVer; + exports.IsString = IsString; + exports.IsSurrogatePair = IsSurrogatePair; + exports.IsUUID = IsUUID; + exports.IsUppercase = IsUppercase; + exports.IsUrl = IsUrl; + exports.IsVariableWidth = IsVariableWidth; + exports.Length = Length; + exports.MATCHES = MATCHES; + exports.MAX = MAX; + exports.MAX_DATE = MAX_DATE; + exports.MAX_LENGTH = MAX_LENGTH; + exports.MIN = MIN; + exports.MIN_DATE = MIN_DATE; + exports.MIN_LENGTH = MIN_LENGTH; + exports.Matches = Matches; + exports.Max = Max; + exports.MaxDate = MaxDate; + exports.MaxLength = MaxLength; + exports.MetadataStorage = MetadataStorage; + exports.Min = Min; + exports.MinDate = MinDate; + exports.MinLength = MinLength; + exports.NOT_CONTAINS = NOT_CONTAINS; + exports.NOT_EQUALS = NOT_EQUALS; + exports.NotContains = NotContains; + exports.NotEquals = NotEquals; + exports.Validate = Validate; + exports.ValidateBy = ValidateBy; + exports.ValidateIf = ValidateIf; + exports.ValidateNested = ValidateNested; + exports.ValidatePromise = ValidatePromise; + exports.ValidationError = ValidationError; + exports.ValidationTypes = ValidationTypes; + exports.Validator = Validator; + exports.ValidatorConstraint = ValidatorConstraint; + exports.arrayContains = arrayContains; + exports.arrayMaxSize = arrayMaxSize; + exports.arrayMinSize = arrayMinSize; + exports.arrayNotContains = arrayNotContains; + exports.arrayNotEmpty = arrayNotEmpty; + exports.arrayUnique = arrayUnique; + exports.buildMessage = buildMessage; + exports.contains = contains; + exports.equals = equals; + exports.getFromContainer = getFromContainer; + exports.getMetadataStorage = getMetadataStorage; + exports.isAlpha = isAlpha; + exports.isAlphanumeric = isAlphanumeric; + exports.isArray = isArray; + exports.isAscii = isAscii; + exports.isBIC = isBIC; + exports.isBase32 = isBase32; + exports.isBase64 = isBase64; + exports.isBoolean = isBoolean; + exports.isBooleanString = isBooleanString; + exports.isBtcAddress = isBtcAddress; + exports.isByteLength = isByteLength; + exports.isCreditCard = isCreditCard; + exports.isCurrency = isCurrency; + exports.isDataURI = isDataURI; + exports.isDate = isDate; + exports.isDateString = isDateString; + exports.isDecimal = isDecimal; + exports.isDefined = isDefined; + exports.isDivisibleBy = isDivisibleBy; + exports.isEAN = isEAN; + exports.isEmail = isEmail; + exports.isEmpty = isEmpty; + exports.isEnum = isEnum; + exports.isEthereumAddress = isEthereumAddress; + exports.isFQDN = isFQDN; + exports.isFirebasePushId = isFirebasePushId; + exports.isFullWidth = isFullWidth; + exports.isHSL = isHSL; + exports.isHalfWidth = isHalfWidth; + exports.isHash = isHash; + exports.isHexColor = isHexColor; + exports.isHexadecimal = isHexadecimal; + exports.isIBAN = isIBAN; + exports.isIP = isIP; + exports.isISBN = isISBN; + exports.isISIN = isISIN; + exports.isISO31661Alpha2 = isISO31661Alpha2; + exports.isISO31661Alpha3 = isISO31661Alpha3; + exports.isISO8601 = isISO8601; + exports.isISRC = isISRC; + exports.isISSN = isISSN; + exports.isIdentityCard = isIdentityCard; + exports.isIn = isIn; + exports.isInstance = isInstance; + exports.isInt = isInt; + exports.isJSON = isJSON; + exports.isJWT = isJWT; + exports.isLatLong = isLatLong; + exports.isLatitude = isLatitude; + exports.isLocale = isLocale; + exports.isLongitude = isLongitude; + exports.isLowercase = isLowercase; + exports.isMACAddress = isMACAddress; + exports.isMagnetURI = isMagnetURI; + exports.isMilitaryTime = isMilitaryTime; + exports.isMimeType = isMimeType; + exports.isMobilePhone = isMobilePhone; + exports.isMongoId = isMongoId; + exports.isMultibyte = isMultibyte; + exports.isNegative = isNegative; + exports.isNotEmpty = isNotEmpty; + exports.isNotEmptyObject = isNotEmptyObject; + exports.isNotIn = isNotIn; + exports.isNumber = isNumber; + exports.isNumberString = isNumberString; + exports.isObject = isObject; + exports.isOctal = isOctal; + exports.isPassportNumber = isPassportNumber; + exports.isPhoneNumber = isPhoneNumber; + exports.isPort = isPort; + exports.isPositive = isPositive; + exports.isPostalCode = isPostalCode; + exports.isRFC3339 = isRFC3339; + exports.isRgbColor = isRgbColor; + exports.isSemVer = isSemVer; + exports.isString = isString; + exports.isSurrogatePair = isSurrogatePair; + exports.isURL = isURL; + exports.isUUID = isUUID; + exports.isUppercase = isUppercase; + exports.isValidationOptions = isValidationOptions; + exports.isVariableWidth = isVariableWidth; + exports.length = length; + exports.matches = matches; + exports.max = max; + exports.maxDate = maxDate; + exports.maxLength = maxLength; + exports.min = min; + exports.minDate = minDate; + exports.minLength = minLength; + exports.notContains = notContains; + exports.notEquals = notEquals; + exports.registerDecorator = registerDecorator; + exports.registerSchema = registerSchema; + exports.useContainer = useContainer; + exports.validate = validate; + exports.validateOrReject = validateOrReject; + exports.validateSync = validateSync; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); +//# sourceMappingURL=class-validator.umd.js.map diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/bundles/class-validator.umd.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/bundles/class-validator.umd.js.map new file mode 100644 index 00000000..df1ba74d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/bundles/class-validator.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"class-validator.umd.js","sources":["../esm5/metadata/ValidationMetadata.js","../esm5/validation-schema/ValidationSchemaToMetadataTransformer.js","../esm5/utils/convert-to-array.util.js","../esm5/utils/get-global.util.js","../esm5/utils/is-promise.util.js","../esm5/metadata/MetadataStorage.js","../esm5/validation/ValidationError.js","../esm5/validation/ValidationTypes.js","../esm5/validation/ValidationUtils.js","../esm5/validation/ValidationExecutor.js","../esm5/validation/Validator.js","../esm5/container.js","../esm5/decorator/common/Allow.js","../esm5/metadata/ConstraintMetadata.js","../esm5/register-decorator.js","../esm5/decorator/common/ValidateBy.js","../esm5/decorator/common/IsDefined.js","../esm5/decorator/common/IsOptional.js","../esm5/decorator/common/Validate.js","../esm5/decorator/common/ValidateIf.js","../esm5/decorator/common/ValidateNested.js","../esm5/decorator/common/ValidatePromise.js","../../node_modules/validator/lib/util/assertString.js","../../node_modules/validator/lib/util/merge.js","../../node_modules/validator/lib/isLatLong.js","../esm5/decorator/common/IsLatLong.js","../esm5/decorator/common/IsLatitude.js","../esm5/decorator/common/IsLongitude.js","../esm5/decorator/common/Equals.js","../esm5/decorator/common/NotEquals.js","../esm5/decorator/common/IsEmpty.js","../esm5/decorator/common/IsNotEmpty.js","../esm5/decorator/common/IsIn.js","../esm5/decorator/common/IsNotIn.js","../../node_modules/validator/lib/alpha.js","../../node_modules/validator/lib/isFloat.js","../../node_modules/validator/lib/toFloat.js","../../node_modules/validator/lib/isDivisibleBy.js","../esm5/decorator/number/IsDivisibleBy.js","../esm5/decorator/number/IsPositive.js","../esm5/decorator/number/IsNegative.js","../esm5/decorator/number/Max.js","../esm5/decorator/number/Min.js","../esm5/decorator/date/MinDate.js","../esm5/decorator/date/MaxDate.js","../../node_modules/validator/lib/util/toString.js","../../node_modules/validator/lib/contains.js","../esm5/decorator/string/Contains.js","../esm5/decorator/string/NotContains.js","../../node_modules/validator/lib/isAlpha.js","../esm5/decorator/string/IsAlpha.js","../../node_modules/validator/lib/isAlphanumeric.js","../esm5/decorator/string/IsAlphanumeric.js","../../node_modules/validator/lib/util/includes.js","../../node_modules/validator/lib/isDecimal.js","../esm5/decorator/string/IsDecimal.js","../../node_modules/validator/lib/isAscii.js","../esm5/decorator/string/IsAscii.js","../../node_modules/validator/lib/isBase64.js","../esm5/decorator/string/IsBase64.js","../../node_modules/validator/lib/isByteLength.js","../esm5/decorator/string/IsByteLength.js","../../node_modules/validator/lib/isCreditCard.js","../esm5/decorator/string/IsCreditCard.js","../../node_modules/validator/lib/isCurrency.js","../esm5/decorator/string/IsCurrency.js","../../node_modules/validator/lib/isFQDN.js","../../node_modules/validator/lib/isIP.js","../../node_modules/validator/lib/isEmail.js","../esm5/decorator/string/IsEmail.js","../esm5/decorator/string/IsFQDN.js","../../node_modules/validator/lib/isFullWidth.js","../esm5/decorator/string/IsFullWidth.js","../../node_modules/validator/lib/isHalfWidth.js","../esm5/decorator/string/IsHalfWidth.js","../../node_modules/validator/lib/isVariableWidth.js","../esm5/decorator/string/IsVariableWidth.js","../../node_modules/validator/lib/isHexColor.js","../esm5/decorator/string/IsHexColor.js","../../node_modules/validator/lib/isHexadecimal.js","../esm5/decorator/string/IsHexadecimal.js","../esm5/decorator/ValidationOptions.js","../../node_modules/validator/lib/isMACAddress.js","../esm5/decorator/string/IsMacAddress.js","../esm5/decorator/string/IsIP.js","../../node_modules/validator/lib/isInt.js","../../node_modules/validator/lib/isPort.js","../esm5/decorator/string/IsPort.js","../../node_modules/validator/lib/isISBN.js","../esm5/decorator/string/IsISBN.js","../../node_modules/validator/lib/isISIN.js","../esm5/decorator/string/IsISIN.js","../../node_modules/validator/lib/isISO8601.js","../esm5/decorator/string/IsISO8601.js","../../node_modules/validator/lib/isJSON.js","../esm5/decorator/string/IsJSON.js","../../node_modules/validator/lib/isJWT.js","../esm5/decorator/string/IsJWT.js","../../node_modules/validator/lib/isLowercase.js","../esm5/decorator/string/IsLowercase.js","../../node_modules/validator/lib/isMobilePhone.js","../esm5/decorator/string/IsMobilePhone.js","../../node_modules/validator/lib/isISO31661Alpha2.js","../esm5/decorator/string/IsISO31661Alpha2.js","../../node_modules/validator/lib/isISO31661Alpha3.js","../esm5/decorator/string/IsISO31661Alpha3.js","../../node_modules/validator/lib/isMongoId.js","../esm5/decorator/string/IsMongoId.js","../../node_modules/validator/lib/isMultibyte.js","../esm5/decorator/string/IsMultibyte.js","../../node_modules/validator/lib/isSurrogatePair.js","../esm5/decorator/string/IsSurrogatePair.js","../../node_modules/validator/lib/isURL.js","../esm5/decorator/string/IsUrl.js","../../node_modules/validator/lib/isUUID.js","../esm5/decorator/string/IsUUID.js","../esm5/decorator/string/IsFirebasePushId.js","../../node_modules/validator/lib/isUppercase.js","../esm5/decorator/string/IsUppercase.js","../../node_modules/validator/lib/isLength.js","../esm5/decorator/string/Length.js","../esm5/decorator/string/MaxLength.js","../esm5/decorator/string/MinLength.js","../../node_modules/validator/lib/matches.js","../esm5/decorator/string/Matches.js","../../node_modules/libphonenumber-js/metadata.min.json.js","../../node_modules/libphonenumber-js/min/metadata.js","../../node_modules/libphonenumber-js/es6/ParseError.js","../../node_modules/libphonenumber-js/es6/constants.js","../../node_modules/libphonenumber-js/es6/tools/semver-compare.js","../../node_modules/libphonenumber-js/es6/metadata.js","../../node_modules/libphonenumber-js/es6/helpers/extension/createExtensionPattern.js","../../node_modules/libphonenumber-js/es6/helpers/isViablePhoneNumber.js","../../node_modules/libphonenumber-js/es6/helpers/extension/extractExtension.js","../../node_modules/libphonenumber-js/es6/helpers/parseDigits.js","../../node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.js","../../node_modules/libphonenumber-js/es6/helpers/mergeArrays.js","../../node_modules/libphonenumber-js/es6/helpers/checkNumberLength.js","../../node_modules/libphonenumber-js/es6/isPossibleNumber_.js","../../node_modules/libphonenumber-js/es6/helpers/RFC3966.js","../../node_modules/libphonenumber-js/es6/helpers/matchesEntirely.js","../../node_modules/libphonenumber-js/es6/helpers/getNumberType.js","../../node_modules/libphonenumber-js/es6/validate_.js","../../node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.js","../../node_modules/libphonenumber-js/es6/helpers/formatNationalNumberUsingFormat.js","../../node_modules/libphonenumber-js/es6/helpers/getIddPrefix.js","../../node_modules/libphonenumber-js/es6/format_.js","../../node_modules/libphonenumber-js/es6/PhoneNumber.js","../../node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.js","../../node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js","../../node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.js","../../node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js","../../node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.js","../../node_modules/libphonenumber-js/es6/helpers/getCountryByCallingCode.js","../../node_modules/libphonenumber-js/es6/parse_.js","../../node_modules/libphonenumber-js/es6/parsePhoneNumber_.js","../../node_modules/libphonenumber-js/es6/parsePhoneNumber.js","../../node_modules/libphonenumber-js/es6/parsePhoneNumberFromString_.js","../../node_modules/libphonenumber-js/es6/parsePhoneNumberFromString.js","../../node_modules/libphonenumber-js/min/exports/parsePhoneNumberFromString.js","../esm5/decorator/string/IsPhoneNumber.js","../esm5/decorator/string/IsMilitaryTime.js","../../node_modules/validator/lib/isHash.js","../esm5/decorator/string/IsHash.js","../../node_modules/validator/lib/isISSN.js","../esm5/decorator/string/IsISSN.js","../esm5/decorator/string/IsDateString.js","../../node_modules/validator/lib/isBoolean.js","../esm5/decorator/string/IsBooleanString.js","../../node_modules/validator/lib/isNumeric.js","../esm5/decorator/string/IsNumberString.js","../../node_modules/validator/lib/isBase32.js","../esm5/decorator/string/IsBase32.js","../../node_modules/validator/lib/isBIC.js","../esm5/decorator/string/IsBIC.js","../../node_modules/validator/lib/isBtcAddress.js","../esm5/decorator/string/IsBtcAddress.js","../../node_modules/validator/lib/isDataURI.js","../esm5/decorator/string/IsDataURI.js","../../node_modules/validator/lib/isEAN.js","../esm5/decorator/string/IsEAN.js","../../node_modules/validator/lib/isEthereumAddress.js","../esm5/decorator/string/IsEthereumAddress.js","../../node_modules/validator/lib/isHSL.js","../esm5/decorator/string/IsHSL.js","../../node_modules/validator/lib/isIBAN.js","../esm5/decorator/string/IsIBAN.js","../../node_modules/validator/lib/isIdentityCard.js","../esm5/decorator/string/IsIdentityCard.js","../../node_modules/validator/lib/isISRC.js","../esm5/decorator/string/IsISRC.js","../../node_modules/validator/lib/isLocale.js","../esm5/decorator/string/IsLocale.js","../../node_modules/validator/lib/isMagnetURI.js","../esm5/decorator/string/IsMagnetURI.js","../../node_modules/validator/lib/isMimeType.js","../esm5/decorator/string/IsMimeType.js","../../node_modules/validator/lib/isOctal.js","../esm5/decorator/string/IsOctal.js","../../node_modules/validator/lib/isPassportNumber.js","../esm5/decorator/string/IsPassportNumber.js","../../node_modules/validator/lib/isPostalCode.js","../esm5/decorator/string/IsPostalCode.js","../../node_modules/validator/lib/isRFC3339.js","../esm5/decorator/string/IsRFC3339.js","../../node_modules/validator/lib/isRgbColor.js","../esm5/decorator/string/IsRgbColor.js","../../node_modules/validator/lib/util/multilineRegex.js","../../node_modules/validator/lib/isSemVer.js","../esm5/decorator/string/IsSemVer.js","../esm5/decorator/typechecker/IsBoolean.js","../esm5/decorator/typechecker/IsDate.js","../esm5/decorator/typechecker/IsNumber.js","../esm5/decorator/typechecker/IsEnum.js","../esm5/decorator/typechecker/IsInt.js","../esm5/decorator/typechecker/IsString.js","../esm5/decorator/typechecker/IsArray.js","../esm5/decorator/typechecker/IsObject.js","../esm5/decorator/array/ArrayContains.js","../esm5/decorator/array/ArrayNotContains.js","../esm5/decorator/array/ArrayNotEmpty.js","../esm5/decorator/array/ArrayMinSize.js","../esm5/decorator/array/ArrayMaxSize.js","../esm5/decorator/array/ArrayUnique.js","../esm5/decorator/object/IsNotEmptyObject.js","../esm5/decorator/object/IsInstance.js","../esm5/index.js"],"sourcesContent":["/**\n * This metadata contains validation rules.\n */\nvar ValidationMetadata = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function ValidationMetadata(args) {\n /**\n * Validation groups used for this validation.\n */\n this.groups = [];\n /**\n * Specifies if validated value is an array and each of its item must be validated.\n */\n this.each = false;\n /*\n * A transient set of data passed through to the validation result for response mapping\n */\n this.context = undefined;\n this.type = args.type;\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 return ValidationMetadata;\n}());\nexport { ValidationMetadata };\n//# sourceMappingURL=ValidationMetadata.js.map","import { ValidationMetadata } from '../metadata/ValidationMetadata';\n/**\n * Used to transform validation schemas to validation metadatas.\n */\nvar ValidationSchemaToMetadataTransformer = /** @class */ (function () {\n function ValidationSchemaToMetadataTransformer() {\n }\n ValidationSchemaToMetadataTransformer.prototype.transform = function (schema) {\n var metadatas = [];\n Object.keys(schema.properties).forEach(function (property) {\n schema.properties[property].forEach(function (validation) {\n var validationOptions = {\n message: validation.message,\n groups: validation.groups,\n always: validation.always,\n each: validation.each,\n };\n var args = {\n type: validation.type,\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 return ValidationSchemaToMetadataTransformer;\n}());\nexport { ValidationSchemaToMetadataTransformer };\n//# sourceMappingURL=ValidationSchemaToMetadataTransformer.js.map","/**\n * Convert Map, Set to Array\n */\nexport function convertToArray(val) {\n if (val instanceof Map) {\n return Array.from(val.values());\n }\n return Array.isArray(val) ? val : Array.from(val);\n}\n//# sourceMappingURL=convert-to-array.util.js.map","/**\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 if (typeof global !== 'undefined') {\n return global;\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 // 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//# sourceMappingURL=get-global.util.js.map","// https://github.com/TylorS/typed-is-promise/blob/abf1514e1b6961adfc75765476b0debb96b2c3ae/src/index.ts\nexport function isPromise(p) {\n return p !== null && typeof p === 'object' && typeof p.then === 'function';\n}\n//# sourceMappingURL=is-promise.util.js.map","import { ValidationSchemaToMetadataTransformer } from '../validation-schema/ValidationSchemaToMetadataTransformer';\nimport { getGlobal } from '../utils';\n/**\n * Storage all metadatas.\n */\nvar MetadataStorage = /** @class */ (function () {\n function MetadataStorage() {\n // -------------------------------------------------------------------------\n // Private properties\n // -------------------------------------------------------------------------\n this.validationMetadatas = [];\n this.constraintMetadatas = [];\n }\n Object.defineProperty(MetadataStorage.prototype, \"hasValidationMetaData\", {\n get: function () {\n return !!this.validationMetadatas.length;\n },\n enumerable: false,\n configurable: true\n });\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Adds a new validation metadata.\n */\n MetadataStorage.prototype.addValidationSchema = function (schema) {\n var _this = this;\n var validationMetadatas = new ValidationSchemaToMetadataTransformer().transform(schema);\n validationMetadatas.forEach(function (validationMetadata) { return _this.addValidationMetadata(validationMetadata); });\n };\n /**\n * Adds a new validation metadata.\n */\n MetadataStorage.prototype.addValidationMetadata = function (metadata) {\n this.validationMetadatas.push(metadata);\n };\n /**\n * Adds a new constraint metadata.\n */\n MetadataStorage.prototype.addConstraintMetadata = function (metadata) {\n this.constraintMetadatas.push(metadata);\n };\n /**\n * Groups metadata by their property names.\n */\n MetadataStorage.prototype.groupByPropertyName = function (metadata) {\n var grouped = {};\n metadata.forEach(function (metadata) {\n if (!grouped[metadata.propertyName])\n grouped[metadata.propertyName] = [];\n grouped[metadata.propertyName].push(metadata);\n });\n return grouped;\n };\n /**\n * Gets all validation metadatas for the given object with the given groups.\n */\n MetadataStorage.prototype.getTargetValidationMetadatas = function (targetConstructor, targetSchema, always, strictGroups, groups) {\n var includeMetadataBecauseOfAlwaysOption = function (metadata) {\n // `metadata.always` overrides global default.\n if (typeof metadata.always !== 'undefined')\n return metadata.always;\n // `metadata.groups` overrides global default.\n if (metadata.groups && metadata.groups.length)\n return false;\n // Use global default.\n return always;\n };\n var excludeMetadataBecauseOfStrictGroupsOption = function (metadata) {\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)\n return true;\n }\n }\n return false;\n };\n // get directly related to a target metadatas\n var originalMetadatas = this.validationMetadatas.filter(function (metadata) {\n if (metadata.target !== targetConstructor && metadata.target !== targetSchema)\n return false;\n if (includeMetadataBecauseOfAlwaysOption(metadata))\n return true;\n if (excludeMetadataBecauseOfStrictGroupsOption(metadata))\n return false;\n if (groups && groups.length > 0)\n return metadata.groups && !!metadata.groups.find(function (group) { return groups.indexOf(group) !== -1; });\n return true;\n });\n // get metadatas for inherited classes\n var inheritedMetadatas = this.validationMetadatas.filter(function (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')\n return false;\n if (metadata.target === targetConstructor)\n return false;\n if (metadata.target instanceof Function && !(targetConstructor.prototype instanceof metadata.target))\n return false;\n if (includeMetadataBecauseOfAlwaysOption(metadata))\n return true;\n if (excludeMetadataBecauseOfStrictGroupsOption(metadata))\n return false;\n if (groups && groups.length > 0)\n return metadata.groups && !!metadata.groups.find(function (group) { return groups.indexOf(group) !== -1; });\n return true;\n });\n // filter out duplicate metadatas, prefer original metadatas instead of inherited metadatas\n var uniqueInheritedMetadatas = inheritedMetadatas.filter(function (inheritedMetadata) {\n return !originalMetadatas.find(function (originalMetadata) {\n return (originalMetadata.propertyName === inheritedMetadata.propertyName &&\n originalMetadata.type === inheritedMetadata.type);\n });\n });\n return originalMetadatas.concat(uniqueInheritedMetadatas);\n };\n /**\n * Gets all validator constraints for the given object.\n */\n MetadataStorage.prototype.getTargetValidatorConstraints = function (target) {\n return this.constraintMetadatas.filter(function (metadata) { return metadata.target === target; });\n };\n return MetadataStorage;\n}());\nexport { MetadataStorage };\n/**\n * Gets metadata storage.\n * Metadata storage follows the best practices and stores metadata in a global variable.\n */\nexport function getMetadataStorage() {\n var global = getGlobal();\n if (!global.classValidatorMetadataStorage) {\n global.classValidatorMetadataStorage = new MetadataStorage();\n }\n return global.classValidatorMetadataStorage;\n}\n//# sourceMappingURL=MetadataStorage.js.map","/**\n * Validation error description.\n */\nvar ValidationError = /** @class */ (function () {\n function ValidationError() {\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 */\n ValidationError.prototype.toString = function (shouldDecorate, hasParent, parentPath) {\n var _this = this;\n if (shouldDecorate === void 0) { shouldDecorate = false; }\n if (hasParent === void 0) { hasParent = false; }\n if (parentPath === void 0) { parentPath = \"\"; }\n var boldStart = shouldDecorate ? \"\\u001B[1m\" : \"\";\n var boldEnd = shouldDecorate ? \"\\u001B[22m\" : \"\";\n var propConstraintFailed = function (propertyName) {\n return \" - property \".concat(boldStart).concat(parentPath).concat(propertyName).concat(boldEnd, \" has failed the following constraints: \").concat(boldStart).concat(Object.keys(_this.constraints).join(\", \")).concat(boldEnd, \" \\n\");\n };\n if (!hasParent) {\n return (\"An instance of \".concat(boldStart).concat(this.target ? this.target.constructor.name : 'an object').concat(boldEnd, \" has failed the validation:\\n\") +\n (this.constraints ? propConstraintFailed(this.property) : \"\") +\n (this.children\n ? this.children.map(function (childError) { return childError.toString(shouldDecorate, true, _this.property); }).join(\"\")\n : \"\"));\n }\n else {\n // we format numbers as array indexes for better readability.\n var formattedProperty_1 = Number.isInteger(+this.property)\n ? \"[\".concat(this.property, \"]\")\n : \"\".concat(parentPath ? \".\" : \"\").concat(this.property);\n if (this.constraints) {\n return propConstraintFailed(formattedProperty_1);\n }\n else {\n return this.children\n ? this.children\n .map(function (childError) { return childError.toString(shouldDecorate, true, \"\".concat(parentPath).concat(formattedProperty_1)); })\n .join(\"\")\n : \"\";\n }\n }\n };\n return ValidationError;\n}());\nexport { ValidationError };\n//# sourceMappingURL=ValidationError.js.map","/**\n * Validation types.\n */\nvar ValidationTypes = /** @class */ (function () {\n function ValidationTypes() {\n }\n /**\n * Checks if validation type is valid.\n */\n ValidationTypes.isValid = function (type) {\n var _this = this;\n return (type !== 'isValid' &&\n type !== 'getMessage' &&\n Object.keys(this)\n .map(function (key) { return _this[key]; })\n .indexOf(type) !== -1);\n };\n /* system */\n ValidationTypes.CUSTOM_VALIDATION = 'customValidation'; // done\n ValidationTypes.NESTED_VALIDATION = 'nestedValidation'; // done\n ValidationTypes.PROMISE_VALIDATION = 'promiseValidation'; // done\n ValidationTypes.CONDITIONAL_VALIDATION = 'conditionalValidation'; // done\n ValidationTypes.WHITELIST = 'whitelistValidation'; // done\n ValidationTypes.IS_DEFINED = 'isDefined'; // done\n return ValidationTypes;\n}());\nexport { ValidationTypes };\n//# sourceMappingURL=ValidationTypes.js.map","/**\n * Convert the constraint to a string to be shown in an error\n */\nexport function constraintToString(constraint) {\n if (Array.isArray(constraint)) {\n return constraint.join(', ');\n }\n return \"\".concat(constraint);\n}\nvar ValidationUtils = /** @class */ (function () {\n function ValidationUtils() {\n }\n ValidationUtils.replaceMessageSpecialTokens = function (message, validationArguments) {\n var messageString;\n if (message instanceof Function) {\n messageString = message(validationArguments);\n }\n else if (typeof message === 'string') {\n messageString = message;\n }\n if (messageString && Array.isArray(validationArguments.constraints)) {\n validationArguments.constraints.forEach(function (constraint, index) {\n messageString = messageString.replace(new RegExp(\"\\\\$constraint\".concat(index + 1), 'g'), constraintToString(constraint));\n });\n }\n if (messageString &&\n validationArguments.value !== undefined &&\n validationArguments.value !== null &&\n typeof validationArguments.value === 'string')\n messageString = messageString.replace(/\\$value/g, validationArguments.value);\n if (messageString)\n messageString = messageString.replace(/\\$property/g, validationArguments.property);\n if (messageString)\n messageString = messageString.replace(/\\$target/g, validationArguments.targetName);\n return messageString;\n };\n return ValidationUtils;\n}());\nexport { ValidationUtils };\n//# sourceMappingURL=ValidationUtils.js.map","import { ValidationError } from './ValidationError';\nimport { ValidationTypes } from './ValidationTypes';\nimport { ValidationUtils } from './ValidationUtils';\nimport { isPromise, convertToArray } from '../utils';\nimport { getMetadataStorage } from '../metadata/MetadataStorage';\n/**\n * Executes validation over given object.\n */\nvar ValidationExecutor = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function ValidationExecutor(validator, validatorOptions) {\n this.validator = validator;\n this.validatorOptions = validatorOptions;\n // -------------------------------------------------------------------------\n // Properties\n // -------------------------------------------------------------------------\n this.awaitingPromises = [];\n this.ignoreAsyncValidations = false;\n // -------------------------------------------------------------------------\n // Private Properties\n // -------------------------------------------------------------------------\n this.metadataStorage = getMetadataStorage();\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n ValidationExecutor.prototype.execute = function (object, targetSchema, validationErrors) {\n var _this = this;\n var _a;\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 && ((_a = this.validatorOptions) === null || _a === void 0 ? void 0 : _a.enableDebugMessages) === true) {\n console.warn(\"No metadata found. There is more than once class-validator version installed probably. You need to flatten your dependencies.\");\n }\n var groups = this.validatorOptions ? this.validatorOptions.groups : undefined;\n var strictGroups = (this.validatorOptions && this.validatorOptions.strictGroups) || false;\n var always = (this.validatorOptions && this.validatorOptions.always) || false;\n var targetMetadatas = this.metadataStorage.getTargetValidationMetadatas(object.constructor, targetSchema, always, strictGroups, groups);\n var groupedMetadatas = this.metadataStorage.groupByPropertyName(targetMetadatas);\n if (this.validatorOptions && this.validatorOptions.forbidUnknownValues && !targetMetadatas.length) {\n var validationError = new ValidationError();\n if (!this.validatorOptions ||\n !this.validatorOptions.validationError ||\n this.validatorOptions.validationError.target === undefined ||\n this.validatorOptions.validationError.target === true)\n validationError.target = object;\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 validationErrors.push(validationError);\n return;\n }\n if (this.validatorOptions && this.validatorOptions.whitelist)\n this.whitelist(object, groupedMetadatas, validationErrors);\n // General validation\n Object.keys(groupedMetadatas).forEach(function (propertyName) {\n var value = object[propertyName];\n var definedMetadatas = groupedMetadatas[propertyName].filter(function (metadata) { return metadata.type === ValidationTypes.IS_DEFINED; });\n var metadatas = groupedMetadatas[propertyName].filter(function (metadata) { return metadata.type !== ValidationTypes.IS_DEFINED && metadata.type !== ValidationTypes.WHITELIST; });\n if (value instanceof Promise &&\n metadatas.find(function (metadata) { return metadata.type === ValidationTypes.PROMISE_VALIDATION; })) {\n _this.awaitingPromises.push(value.then(function (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 ValidationExecutor.prototype.whitelist = function (object, groupedMetadatas, validationErrors) {\n var _this = this;\n var notAllowedProperties = [];\n Object.keys(object).forEach(function (propertyName) {\n // does this property have no metadata?\n if (!groupedMetadatas[propertyName] || groupedMetadatas[propertyName].length === 0)\n notAllowedProperties.push(propertyName);\n });\n if (notAllowedProperties.length > 0) {\n if (this.validatorOptions && this.validatorOptions.forbidNonWhitelisted) {\n // throw errors\n notAllowedProperties.forEach(function (property) {\n var _a;\n var validationError = _this.generateValidationError(object, object[property], property);\n validationError.constraints = (_a = {}, _a[ValidationTypes.WHITELIST] = \"property \".concat(property, \" should not exist\"), _a);\n validationError.children = undefined;\n validationErrors.push(validationError);\n });\n }\n else {\n // strip non allowed properties\n notAllowedProperties.forEach(function (property) { return delete object[property]; });\n }\n }\n };\n ValidationExecutor.prototype.stripEmptyErrors = function (errors) {\n var _this = this;\n return errors.filter(function (error) {\n if (error.children) {\n error.children = _this.stripEmptyErrors(error.children);\n }\n if (Object.keys(error.constraints).length === 0) {\n if (error.children.length === 0) {\n return false;\n }\n else {\n delete error.constraints;\n }\n }\n return true;\n });\n };\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n ValidationExecutor.prototype.performValidations = function (object, value, propertyName, definedMetadatas, metadatas, validationErrors) {\n var customValidationMetadatas = metadatas.filter(function (metadata) { return metadata.type === ValidationTypes.CUSTOM_VALIDATION; });\n var nestedValidationMetadatas = metadatas.filter(function (metadata) { return metadata.type === ValidationTypes.NESTED_VALIDATION; });\n var conditionalValidationMetadatas = metadatas.filter(function (metadata) { return metadata.type === ValidationTypes.CONDITIONAL_VALIDATION; });\n var validationError = this.generateValidationError(object, value, propertyName);\n validationErrors.push(validationError);\n var canValidate = this.conditionalValidations(object, value, conditionalValidationMetadatas);\n if (!canValidate) {\n return;\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 if (value === undefined && this.validatorOptions && this.validatorOptions.skipUndefinedProperties === true) {\n return;\n }\n if (value === null && this.validatorOptions && this.validatorOptions.skipNullProperties === true) {\n return;\n }\n if ((value === null || value === undefined) &&\n this.validatorOptions &&\n this.validatorOptions.skipMissingProperties === true) {\n return;\n }\n this.customValidations(object, value, customValidationMetadatas, validationError);\n this.nestedValidations(value, nestedValidationMetadatas, validationError.children);\n this.mapContexts(object, value, metadatas, validationError);\n this.mapContexts(object, value, customValidationMetadatas, validationError);\n };\n ValidationExecutor.prototype.generateValidationError = function (object, value, propertyName) {\n var validationError = new ValidationError();\n if (!this.validatorOptions ||\n !this.validatorOptions.validationError ||\n this.validatorOptions.validationError.target === undefined ||\n this.validatorOptions.validationError.target === true)\n validationError.target = object;\n if (!this.validatorOptions ||\n !this.validatorOptions.validationError ||\n this.validatorOptions.validationError.value === undefined ||\n this.validatorOptions.validationError.value === true)\n validationError.value = value;\n validationError.property = propertyName;\n validationError.children = [];\n validationError.constraints = {};\n return validationError;\n };\n ValidationExecutor.prototype.conditionalValidations = function (object, value, metadatas) {\n return metadatas\n .map(function (metadata) { return metadata.constraints[0](object, value); })\n .reduce(function (resultA, resultB) { return resultA && resultB; }, true);\n };\n ValidationExecutor.prototype.customValidations = function (object, value, metadatas, error) {\n var _this = this;\n metadatas.forEach(function (metadata) {\n _this.metadataStorage.getTargetValidatorConstraints(metadata.constraintCls).forEach(function (customConstraintMetadata) {\n if (customConstraintMetadata.async && _this.ignoreAsyncValidations)\n return;\n if (_this.validatorOptions &&\n _this.validatorOptions.stopAtFirstError &&\n Object.keys(error.constraints || {}).length > 0)\n return;\n var validationArguments = {\n targetName: object.constructor ? object.constructor.name : undefined,\n property: metadata.propertyName,\n object: object,\n value: value,\n constraints: metadata.constraints,\n };\n if (!metadata.each || !(Array.isArray(value) || value instanceof Set || value instanceof Map)) {\n var validatedValue = customConstraintMetadata.instance.validate(value, validationArguments);\n if (isPromise(validatedValue)) {\n var promise = validatedValue.then(function (isValid) {\n if (!isValid) {\n var _a = _this.createValidationError(object, value, metadata, customConstraintMetadata), type = _a[0], message = _a[1];\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 }\n else {\n if (!validatedValue) {\n var _a = _this.createValidationError(object, value, metadata, customConstraintMetadata), type = _a[0], message = _a[1];\n error.constraints[type] = message;\n }\n }\n return;\n }\n // convert set and map into array\n var arrayValue = convertToArray(value);\n // Validation needs to be applied to each array item\n var validatedSubValues = arrayValue.map(function (subValue) {\n return customConstraintMetadata.instance.validate(subValue, validationArguments);\n });\n var validationIsAsync = validatedSubValues.some(function (validatedSubValue) {\n return isPromise(validatedSubValue);\n });\n if (validationIsAsync) {\n // Wrap plain values (if any) in promises, so that all are async\n var asyncValidatedSubValues = validatedSubValues.map(function (validatedSubValue) {\n return isPromise(validatedSubValue) ? validatedSubValue : Promise.resolve(validatedSubValue);\n });\n var asyncValidationIsFinishedPromise = Promise.all(asyncValidatedSubValues).then(function (flatValidatedValues) {\n var validationResult = flatValidatedValues.every(function (isValid) { return isValid; });\n if (!validationResult) {\n var _a = _this.createValidationError(object, value, metadata, customConstraintMetadata), type = _a[0], message = _a[1];\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(asyncValidationIsFinishedPromise);\n return;\n }\n var validationResult = validatedSubValues.every(function (isValid) { return isValid; });\n if (!validationResult) {\n var _b = _this.createValidationError(object, value, metadata, customConstraintMetadata), type = _b[0], message = _b[1];\n error.constraints[type] = message;\n }\n });\n });\n };\n ValidationExecutor.prototype.nestedValidations = function (value, metadatas, errors) {\n var _this = this;\n if (value === void 0) {\n return;\n }\n metadatas.forEach(function (metadata) {\n var _a;\n if (metadata.type !== ValidationTypes.NESTED_VALIDATION && metadata.type !== ValidationTypes.PROMISE_VALIDATION) {\n return;\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 var arrayLikeValue = value instanceof Set ? Array.from(value) : value;\n arrayLikeValue.forEach(function (subValue, index) {\n _this.performValidations(value, subValue, index.toString(), [], metadatas, errors);\n });\n }\n else if (value instanceof Object) {\n var targetSchema = typeof metadata.target === 'string' ? metadata.target : metadata.target.name;\n _this.execute(value, targetSchema, errors);\n }\n else {\n var error = new ValidationError();\n error.value = value;\n error.property = metadata.propertyName;\n error.target = metadata.target;\n var _b = _this.createValidationError(metadata.target, value, metadata), type = _b[0], message = _b[1];\n error.constraints = (_a = {},\n _a[type] = message,\n _a);\n errors.push(error);\n }\n });\n };\n ValidationExecutor.prototype.mapContexts = function (object, value, metadatas, error) {\n var _this = this;\n return metadatas.forEach(function (metadata) {\n if (metadata.context) {\n var customConstraint = void 0;\n if (metadata.type === ValidationTypes.CUSTOM_VALIDATION) {\n var customConstraints = _this.metadataStorage.getTargetValidatorConstraints(metadata.constraintCls);\n customConstraint = customConstraints[0];\n }\n var type = _this.getConstraintType(metadata, customConstraint);\n if (error.constraints[type]) {\n if (!error.contexts) {\n error.contexts = {};\n }\n error.contexts[type] = Object.assign(error.contexts[type] || {}, metadata.context);\n }\n }\n });\n };\n ValidationExecutor.prototype.createValidationError = function (object, value, metadata, customValidatorMetadata) {\n var targetName = object.constructor ? object.constructor.name : undefined;\n var type = this.getConstraintType(metadata, customValidatorMetadata);\n var validationArguments = {\n targetName: targetName,\n property: metadata.propertyName,\n object: object,\n value: value,\n constraints: metadata.constraints,\n };\n var message = metadata.message || '';\n if (!metadata.message &&\n (!this.validatorOptions || (this.validatorOptions && !this.validatorOptions.dismissDefaultMessages))) {\n if (customValidatorMetadata && customValidatorMetadata.instance.defaultMessage instanceof Function) {\n message = customValidatorMetadata.instance.defaultMessage(validationArguments);\n }\n }\n var messageString = ValidationUtils.replaceMessageSpecialTokens(message, validationArguments);\n return [type, messageString];\n };\n ValidationExecutor.prototype.getConstraintType = function (metadata, customValidatorMetadata) {\n var type = customValidatorMetadata && customValidatorMetadata.name ? customValidatorMetadata.name : metadata.type;\n return type;\n };\n return ValidationExecutor;\n}());\nexport { ValidationExecutor };\n//# sourceMappingURL=ValidationExecutor.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { ValidationExecutor } from './ValidationExecutor';\n/**\n * Validator performs validation of the given object based on its metadata.\n */\nvar Validator = /** @class */ (function () {\n function Validator() {\n }\n /**\n * Performs validation of the given object based on decorators or validation schema.\n */\n Validator.prototype.validate = function (objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions) {\n return this.coreValidate(objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions);\n };\n /**\n * Performs validation of the given object based on decorators or validation schema and reject on error.\n */\n Validator.prototype.validateOrReject = function (objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions) {\n return __awaiter(this, void 0, void 0, function () {\n var errors;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.coreValidate(objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions)];\n case 1:\n errors = _a.sent();\n if (errors.length)\n return [2 /*return*/, Promise.reject(errors)];\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Performs validation of the given object based on decorators or validation schema.\n */\n Validator.prototype.validateSync = function (objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions) {\n var object = typeof objectOrSchemaName === 'string' ? objectOrValidationOptions : objectOrSchemaName;\n var options = typeof objectOrSchemaName === 'string' ? maybeValidatorOptions : objectOrValidationOptions;\n var schema = typeof objectOrSchemaName === 'string' ? objectOrSchemaName : undefined;\n var executor = new ValidationExecutor(this, options);\n executor.ignoreAsyncValidations = true;\n var validationErrors = [];\n executor.execute(object, schema, validationErrors);\n return executor.stripEmptyErrors(validationErrors);\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 Validator.prototype.coreValidate = function (objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions) {\n var object = typeof objectOrSchemaName === 'string' ? objectOrValidationOptions : objectOrSchemaName;\n var options = typeof objectOrSchemaName === 'string' ? maybeValidatorOptions : objectOrValidationOptions;\n var schema = typeof objectOrSchemaName === 'string' ? objectOrSchemaName : undefined;\n var executor = new ValidationExecutor(this, options);\n var validationErrors = [];\n executor.execute(object, schema, validationErrors);\n return Promise.all(executor.awaitingPromises).then(function () {\n return executor.stripEmptyErrors(validationErrors);\n });\n };\n return Validator;\n}());\nexport { Validator };\n//# sourceMappingURL=Validator.js.map","/**\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 */\nvar defaultContainer = new (/** @class */ (function () {\n function class_1() {\n this.instances = [];\n }\n class_1.prototype.get = function (someClass) {\n var instance = this.instances.find(function (instance) { return instance.type === someClass; });\n if (!instance) {\n instance = { type: someClass, object: new someClass() };\n this.instances.push(instance);\n }\n return instance.object;\n };\n return class_1;\n}()))();\nvar userContainer;\nvar userContainerOptions;\n/**\n * Sets container to be used by this library.\n */\nexport function useContainer(iocContainer, options) {\n userContainer = iocContainer;\n userContainerOptions = options;\n}\n/**\n * Gets the IOC container used by this library.\n */\nexport function getFromContainer(someClass) {\n if (userContainer) {\n try {\n var instance = userContainer.get(someClass);\n if (instance)\n return instance;\n if (!userContainerOptions || !userContainerOptions.fallback)\n return instance;\n }\n catch (error) {\n if (!userContainerOptions || !userContainerOptions.fallbackOnErrors)\n throw error;\n }\n }\n return defaultContainer.get(someClass);\n}\n//# sourceMappingURL=container.js.map","import { ValidationTypes } from '../../validation/ValidationTypes';\nimport { ValidationMetadata } from '../../metadata/ValidationMetadata';\nimport { getMetadataStorage } from '../../metadata/MetadataStorage';\n/**\n * If object has both allowed and not allowed properties a validation error will be thrown.\n */\nexport function Allow(validationOptions) {\n return function (object, propertyName) {\n var args = {\n type: ValidationTypes.WHITELIST,\n target: object.constructor,\n propertyName: propertyName,\n validationOptions: validationOptions,\n };\n getMetadataStorage().addValidationMetadata(new ValidationMetadata(args));\n };\n}\n//# sourceMappingURL=Allow.js.map","import { getFromContainer } from '../container';\n/**\n * This metadata interface contains information for custom validators.\n */\nvar ConstraintMetadata = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function ConstraintMetadata(target, name, async) {\n if (async === void 0) { async = false; }\n this.target = target;\n this.name = name;\n this.async = async;\n }\n Object.defineProperty(ConstraintMetadata.prototype, \"instance\", {\n // -------------------------------------------------------------------------\n // Accessors\n // -------------------------------------------------------------------------\n /**\n * Instance of the target custom validation class which performs validation.\n */\n get: function () {\n return getFromContainer(this.target);\n },\n enumerable: false,\n configurable: true\n });\n return ConstraintMetadata;\n}());\nexport { ConstraintMetadata };\n//# sourceMappingURL=ConstraintMetadata.js.map","import { ConstraintMetadata } from './metadata/ConstraintMetadata';\nimport { ValidationMetadata } from './metadata/ValidationMetadata';\nimport { ValidationTypes } from './validation/ValidationTypes';\nimport { getFromContainer } from './container';\nimport { MetadataStorage, getMetadataStorage } from './metadata/MetadataStorage';\n/**\n * Registers a custom validation decorator.\n */\nexport function registerDecorator(options) {\n var constraintCls;\n if (options.validator instanceof Function) {\n constraintCls = options.validator;\n var constraintClasses = getFromContainer(MetadataStorage).getTargetValidatorConstraints(options.validator);\n if (constraintClasses.length > 1) {\n throw \"More than one implementation of ValidatorConstraintInterface found for validator on: \".concat(options.target.name, \":\").concat(options.propertyName);\n }\n }\n else {\n var validator_1 = options.validator;\n constraintCls = /** @class */ (function () {\n function CustomConstraint() {\n }\n CustomConstraint.prototype.validate = function (value, validationArguments) {\n return validator_1.validate(value, validationArguments);\n };\n CustomConstraint.prototype.defaultMessage = function (validationArguments) {\n if (validator_1.defaultMessage) {\n return validator_1.defaultMessage(validationArguments);\n }\n return '';\n };\n return CustomConstraint;\n }());\n getMetadataStorage().addConstraintMetadata(new ConstraintMetadata(constraintCls, options.name, options.async));\n }\n var validationMetadataArgs = {\n type: options.name && ValidationTypes.isValid(options.name) ? options.name : ValidationTypes.CUSTOM_VALIDATION,\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//# sourceMappingURL=register-decorator.js.map","import { registerDecorator } from '../../register-decorator';\nexport function buildMessage(impl, validationOptions) {\n return function (validationArguments) {\n var eachPrefix = validationOptions && validationOptions.each ? 'each value in ' : '';\n return impl(eachPrefix, validationArguments);\n };\n}\nexport function ValidateBy(options, validationOptions) {\n return function (object, propertyName) {\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//# sourceMappingURL=ValidateBy.js.map","import { buildMessage, ValidateBy } from './ValidateBy';\nimport { ValidationTypes } from '../../validation/ValidationTypes';\n// isDefined is (yet) a special case\nexport var IS_DEFINED = ValidationTypes.IS_DEFINED;\n/**\n * Checks if value is defined (!== undefined, !== null).\n */\nexport function isDefined(value) {\n return value !== undefined && value !== null;\n}\n/**\n * Checks if value is defined (!== undefined, !== null).\n */\nexport function IsDefined(validationOptions) {\n return ValidateBy({\n name: IS_DEFINED,\n validator: {\n validate: function (value) { return isDefined(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not be null or undefined'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsDefined.js.map","import { ValidationTypes } from '../../validation/ValidationTypes';\nimport { ValidationMetadata } from '../../metadata/ValidationMetadata';\nimport { getMetadataStorage } from '../../metadata/MetadataStorage';\n/**\n * Checks if value is missing and if so, ignores all validators.\n */\nexport function IsOptional(validationOptions) {\n return function (object, propertyName) {\n var args = {\n type: ValidationTypes.CONDITIONAL_VALIDATION,\n target: object.constructor,\n propertyName: propertyName,\n constraints: [\n function (object, value) {\n return object[propertyName] !== null && object[propertyName] !== undefined;\n },\n ],\n validationOptions: validationOptions,\n };\n getMetadataStorage().addValidationMetadata(new ValidationMetadata(args));\n };\n}\n//# sourceMappingURL=IsOptional.js.map","import { ValidationMetadata } from '../../metadata/ValidationMetadata';\nimport { getMetadataStorage } from '../../metadata/MetadataStorage';\nimport { ValidationTypes } from '../../validation/ValidationTypes';\nimport { ConstraintMetadata } from '../../metadata/ConstraintMetadata';\n/**\n * Registers custom validator class.\n */\nexport function ValidatorConstraint(options) {\n return function (target) {\n var isAsync = options && options.async;\n var name = options && options.name ? options.name : '';\n if (!name) {\n name = target.name;\n if (!name)\n // generate name if it was not given\n name = name.replace(/\\.?([A-Z]+)/g, function (x, y) { return '_' + y.toLowerCase(); }).replace(/^_/, '');\n }\n var metadata = new ConstraintMetadata(target, name, isAsync);\n getMetadataStorage().addConstraintMetadata(metadata);\n };\n}\nexport function Validate(constraintClass, constraintsOrValidationOptions, maybeValidationOptions) {\n return function (object, propertyName) {\n var args = {\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//# sourceMappingURL=Validate.js.map","import { ValidationTypes } from '../../validation/ValidationTypes';\nimport { ValidationMetadata } from '../../metadata/ValidationMetadata';\nimport { getMetadataStorage } from '../../metadata/MetadataStorage';\n/**\n * Ignores the other validators on a property when the provided condition function returns false.\n */\nexport function ValidateIf(condition, validationOptions) {\n return function (object, propertyName) {\n var args = {\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//# sourceMappingURL=ValidateIf.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { ValidationTypes } from '../../validation/ValidationTypes';\nimport { ValidationMetadata } from '../../metadata/ValidationMetadata';\nimport { getMetadataStorage } from '../../metadata/MetadataStorage';\n/**\n * Objects / object arrays marked with this decorator will also be validated.\n */\nexport function ValidateNested(validationOptions) {\n var opts = __assign({}, validationOptions);\n var eachPrefix = opts.each ? 'each value in ' : '';\n opts.message = opts.message || eachPrefix + 'nested property $property must be either object or array';\n return function (object, propertyName) {\n var args = {\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//# sourceMappingURL=ValidateNested.js.map","import { ValidationTypes } from '../../validation/ValidationTypes';\nimport { ValidationMetadata } from '../../metadata/ValidationMetadata';\nimport { getMetadataStorage } from '../../metadata/MetadataStorage';\n/**\n * Resolve promise before validation\n */\nexport function ValidatePromise(validationOptions) {\n return function (object, propertyName) {\n var args = {\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//# sourceMappingURL=ValidatePromise.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = assertString;\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction assertString(input) {\n var isString = typeof input === 'string' || input instanceof String;\n\n if (!isString) {\n var invalidType = _typeof(input);\n\n if (input === null) invalidType = 'null';else if (invalidType === 'object') invalidType = input.constructor.name;\n throw new TypeError(\"Expected a string but received a \".concat(invalidType));\n }\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = merge;\n\nfunction merge() {\n var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var defaults = arguments.length > 1 ? arguments[1] : undefined;\n\n for (var key in defaults) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = defaults[key];\n }\n }\n\n return obj;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isLatLong;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar lat = /^\\(?[+-]?(90(\\.0+)?|[1-8]?\\d(\\.\\d+)?)$/;\nvar long = /^\\s?[+-]?(180(\\.0+)?|1[0-7]\\d(\\.\\d+)?|\\d{1,2}(\\.\\d+)?)\\)?$/;\nvar latDMS = /^(([1-8]?\\d)\\D+([1-5]?\\d|60)\\D+([1-5]?\\d|60)(\\.\\d+)?|90\\D+0\\D+0)\\D+[NSns]?$/i;\nvar longDMS = /^\\s*([1-7]?\\d{1,2}\\D+([1-5]?\\d|60)\\D+([1-5]?\\d|60)(\\.\\d+)?|180\\D+0\\D+0)\\D+[EWew]?$/i;\nvar defaultLatLongOptions = {\n checkDMS: false\n};\n\nfunction isLatLong(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, defaultLatLongOptions);\n if (!str.includes(',')) return false;\n var pair = str.split(',');\n if (pair[0].startsWith('(') && !pair[1].endsWith(')') || pair[1].endsWith(')') && !pair[0].startsWith('(')) return false;\n\n if (options.checkDMS) {\n return latDMS.test(pair[0]) && longDMS.test(pair[1]);\n }\n\n return lat.test(pair[0]) && long.test(pair[1]);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from './ValidateBy';\nimport isLatLongValidator from 'validator/lib/isLatLong';\nexport var IS_LATLONG = 'isLatLong';\n/**\n * Checks if a value is string in format a \"latitude,longitude\".\n */\nexport function isLatLong(value) {\n return typeof value === 'string' && isLatLongValidator(value);\n}\n/**\n * Checks if a value is string in format a \"latitude,longitude\".\n */\nexport function IsLatLong(validationOptions) {\n return ValidateBy({\n name: IS_LATLONG,\n validator: {\n validate: function (value, args) { return isLatLong(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a latitude,longitude string'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsLatLong.js.map","import { buildMessage, ValidateBy } from './ValidateBy';\nimport { isLatLong } from './IsLatLong';\nexport var IS_LATITUDE = 'isLatitude';\n/**\n * Checks if a given value is a latitude.\n */\nexport function isLatitude(value) {\n return (typeof value === 'number' || typeof value === 'string') && isLatLong(\"\".concat(value, \",0\"));\n}\n/**\n * Checks if a given value is a latitude.\n */\nexport function IsLatitude(validationOptions) {\n return ValidateBy({\n name: IS_LATITUDE,\n validator: {\n validate: function (value, args) { return isLatitude(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a latitude string or number'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsLatitude.js.map","import { buildMessage, ValidateBy } from './ValidateBy';\nimport { isLatLong } from './IsLatLong';\nexport var IS_LONGITUDE = 'isLongitude';\n/**\n * Checks if a given value is a longitude.\n */\nexport function isLongitude(value) {\n return (typeof value === 'number' || typeof value === 'string') && isLatLong(\"0,\".concat(value));\n}\n/**\n * Checks if a given value is a longitude.\n */\nexport function IsLongitude(validationOptions) {\n return ValidateBy({\n name: IS_LONGITUDE,\n validator: {\n validate: function (value, args) { return isLongitude(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a longitude string or number'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsLongitude.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var EQUALS = 'equals';\n/**\n * Checks if value matches (\"===\") the comparison.\n */\nexport function equals(value, comparison) {\n return value === comparison;\n}\n/**\n * Checks if value matches (\"===\") the comparison.\n */\nexport function Equals(comparison, validationOptions) {\n return ValidateBy({\n name: EQUALS,\n constraints: [comparison],\n validator: {\n validate: function (value, args) { return equals(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be equal to $constraint1'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=Equals.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var NOT_EQUALS = 'notEquals';\n/**\n * Checks if value does not match (\"!==\") the comparison.\n */\nexport function notEquals(value, comparison) {\n return value !== comparison;\n}\n/**\n * Checks if value does not match (\"!==\") the comparison.\n */\nexport function NotEquals(comparison, validationOptions) {\n return ValidateBy({\n name: NOT_EQUALS,\n constraints: [comparison],\n validator: {\n validate: function (value, args) { return notEquals(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not be equal to $constraint1'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=NotEquals.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_EMPTY = 'isEmpty';\n/**\n * Checks if given value is empty (=== '', === null, === undefined).\n */\nexport function isEmpty(value) {\n return value === '' || value === null || value === undefined;\n}\n/**\n * Checks if given value is empty (=== '', === null, === undefined).\n */\nexport function IsEmpty(validationOptions) {\n return ValidateBy({\n name: IS_EMPTY,\n validator: {\n validate: function (value, args) { return isEmpty(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be empty'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsEmpty.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_NOT_EMPTY = 'isNotEmpty';\n/**\n * Checks if given value is not empty (!== '', !== null, !== undefined).\n */\nexport function isNotEmpty(value) {\n return value !== '' && value !== null && value !== undefined;\n}\n/**\n * Checks if given value is not empty (!== '', !== null, !== undefined).\n */\nexport function IsNotEmpty(validationOptions) {\n return ValidateBy({\n name: IS_NOT_EMPTY,\n validator: {\n validate: function (value, args) { return isNotEmpty(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not be empty'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsNotEmpty.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_IN = 'isIn';\n/**\n * Checks if given value is in a array of allowed values.\n */\nexport function isIn(value, possibleValues) {\n return !Array.isArray(possibleValues) || possibleValues.some(function (possibleValue) { return possibleValue === value; });\n}\n/**\n * Checks if given value is in a array of allowed values.\n */\nexport function IsIn(values, validationOptions) {\n return ValidateBy({\n name: IS_IN,\n constraints: [values],\n validator: {\n validate: function (value, args) { return isIn(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be one of the following values: $constraint1'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsIn.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_NOT_IN = 'isNotIn';\n/**\n * Checks if given value not in a array of allowed values.\n */\nexport function isNotIn(value, possibleValues) {\n return !Array.isArray(possibleValues) || !possibleValues.some(function (possibleValue) { return possibleValue === value; });\n}\n/**\n * Checks if given value not in a array of allowed values.\n */\nexport function IsNotIn(values, validationOptions) {\n return ValidateBy({\n name: IS_NOT_IN,\n constraints: [values],\n validator: {\n validate: function (value, args) { return isNotIn(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not be one of the following values: $constraint1'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsNotIn.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.commaDecimal = exports.dotDecimal = exports.farsiLocales = exports.arabicLocales = exports.englishLocales = exports.decimal = exports.alphanumeric = exports.alpha = void 0;\nvar alpha = {\n 'en-US': /^[A-Z]+$/i,\n 'az-AZ': /^[A-VXYZÇƏĞİıÖŞÜ]+$/i,\n 'bg-BG': /^[А-Я]+$/i,\n 'cs-CZ': /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i,\n 'da-DK': /^[A-ZÆØÅ]+$/i,\n 'de-DE': /^[A-ZÄÖÜß]+$/i,\n 'el-GR': /^[Α-ώ]+$/i,\n 'es-ES': /^[A-ZÁÉÍÑÓÚÜ]+$/i,\n 'fa-IR': /^[ابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهی]+$/i,\n 'fi-FI': /^[A-ZÅÄÖ]+$/i,\n 'fr-FR': /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i,\n 'it-IT': /^[A-ZÀÉÈÌÎÓÒÙ]+$/i,\n 'nb-NO': /^[A-ZÆØÅ]+$/i,\n 'nl-NL': /^[A-ZÁÉËÏÓÖÜÚ]+$/i,\n 'nn-NO': /^[A-ZÆØÅ]+$/i,\n 'hu-HU': /^[A-ZÁÉÍÓÖŐÚÜŰ]+$/i,\n 'pl-PL': /^[A-ZĄĆĘŚŁŃÓŻŹ]+$/i,\n 'pt-PT': /^[A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i,\n 'ru-RU': /^[А-ЯЁ]+$/i,\n 'sl-SI': /^[A-ZČĆĐŠŽ]+$/i,\n 'sk-SK': /^[A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i,\n 'sr-RS@latin': /^[A-ZČĆŽŠĐ]+$/i,\n 'sr-RS': /^[А-ЯЂЈЉЊЋЏ]+$/i,\n 'sv-SE': /^[A-ZÅÄÖ]+$/i,\n 'th-TH': /^[ก-๐\\s]+$/i,\n 'tr-TR': /^[A-ZÇĞİıÖŞÜ]+$/i,\n 'uk-UA': /^[А-ЩЬЮЯЄIЇҐі]+$/i,\n 'vi-VN': /^[A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i,\n 'ku-IQ': /^[ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i,\n ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/,\n he: /^[א-ת]+$/,\n fa: /^['آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی']+$/i,\n 'hi-IN': /^[\\u0900-\\u0961]+[\\u0972-\\u097F]*$/i\n};\nexports.alpha = alpha;\nvar alphanumeric = {\n 'en-US': /^[0-9A-Z]+$/i,\n 'az-AZ': /^[0-9A-VXYZÇƏĞİıÖŞÜ]+$/i,\n 'bg-BG': /^[0-9А-Я]+$/i,\n 'cs-CZ': /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i,\n 'da-DK': /^[0-9A-ZÆØÅ]+$/i,\n 'de-DE': /^[0-9A-ZÄÖÜß]+$/i,\n 'el-GR': /^[0-9Α-ω]+$/i,\n 'es-ES': /^[0-9A-ZÁÉÍÑÓÚÜ]+$/i,\n 'fi-FI': /^[0-9A-ZÅÄÖ]+$/i,\n 'fr-FR': /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i,\n 'it-IT': /^[0-9A-ZÀÉÈÌÎÓÒÙ]+$/i,\n 'hu-HU': /^[0-9A-ZÁÉÍÓÖŐÚÜŰ]+$/i,\n 'nb-NO': /^[0-9A-ZÆØÅ]+$/i,\n 'nl-NL': /^[0-9A-ZÁÉËÏÓÖÜÚ]+$/i,\n 'nn-NO': /^[0-9A-ZÆØÅ]+$/i,\n 'pl-PL': /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]+$/i,\n 'pt-PT': /^[0-9A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i,\n 'ru-RU': /^[0-9А-ЯЁ]+$/i,\n 'sl-SI': /^[0-9A-ZČĆĐŠŽ]+$/i,\n 'sk-SK': /^[0-9A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i,\n 'sr-RS@latin': /^[0-9A-ZČĆŽŠĐ]+$/i,\n 'sr-RS': /^[0-9А-ЯЂЈЉЊЋЏ]+$/i,\n 'sv-SE': /^[0-9A-ZÅÄÖ]+$/i,\n 'th-TH': /^[ก-๙\\s]+$/i,\n 'tr-TR': /^[0-9A-ZÇĞİıÖŞÜ]+$/i,\n 'uk-UA': /^[0-9А-ЩЬЮЯЄIЇҐі]+$/i,\n 'ku-IQ': /^[٠١٢٣٤٥٦٧٨٩0-9ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i,\n 'vi-VN': /^[0-9A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i,\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/,\n he: /^[0-9א-ת]+$/,\n fa: /^['0-9آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی۱۲۳۴۵۶۷۸۹۰']+$/i,\n 'hi-IN': /^[\\u0900-\\u0963]+[\\u0966-\\u097F]*$/i\n};\nexports.alphanumeric = alphanumeric;\nvar decimal = {\n 'en-US': '.',\n ar: '٫'\n};\nexports.decimal = decimal;\nvar englishLocales = ['AU', 'GB', 'HK', 'IN', 'NZ', 'ZA', 'ZM'];\nexports.englishLocales = englishLocales;\n\nfor (var locale, i = 0; i < englishLocales.length; i++) {\n locale = \"en-\".concat(englishLocales[i]);\n alpha[locale] = alpha['en-US'];\n alphanumeric[locale] = alphanumeric['en-US'];\n decimal[locale] = decimal['en-US'];\n} // Source: http://www.localeplanet.com/java/\n\n\nvar arabicLocales = ['AE', 'BH', 'DZ', 'EG', 'IQ', 'JO', 'KW', 'LB', 'LY', 'MA', 'QM', 'QA', 'SA', 'SD', 'SY', 'TN', 'YE'];\nexports.arabicLocales = arabicLocales;\n\nfor (var _locale, _i = 0; _i < arabicLocales.length; _i++) {\n _locale = \"ar-\".concat(arabicLocales[_i]);\n alpha[_locale] = alpha.ar;\n alphanumeric[_locale] = alphanumeric.ar;\n decimal[_locale] = decimal.ar;\n}\n\nvar farsiLocales = ['IR', 'AF'];\nexports.farsiLocales = farsiLocales;\n\nfor (var _locale2, _i2 = 0; _i2 < farsiLocales.length; _i2++) {\n _locale2 = \"fa-\".concat(farsiLocales[_i2]);\n alphanumeric[_locale2] = alphanumeric.fa;\n decimal[_locale2] = decimal.ar;\n} // Source: https://en.wikipedia.org/wiki/Decimal_mark\n\n\nvar dotDecimal = ['ar-EG', 'ar-LB', 'ar-LY'];\nexports.dotDecimal = dotDecimal;\nvar commaDecimal = ['bg-BG', 'cs-CZ', 'da-DK', 'de-DE', 'el-GR', 'en-ZM', 'es-ES', 'fr-CA', 'fr-FR', 'id-ID', 'it-IT', 'ku-IQ', 'hi-IN', 'hu-HU', 'nb-NO', 'nn-NO', 'nl-NL', 'pl-PL', 'pt-PT', 'ru-RU', 'sl-SI', 'sr-RS@latin', 'sr-RS', 'sv-SE', 'tr-TR', 'uk-UA', 'vi-VN'];\nexports.commaDecimal = commaDecimal;\n\nfor (var _i3 = 0; _i3 < dotDecimal.length; _i3++) {\n decimal[dotDecimal[_i3]] = decimal['en-US'];\n}\n\nfor (var _i4 = 0; _i4 < commaDecimal.length; _i4++) {\n decimal[commaDecimal[_i4]] = ',';\n}\n\nalpha['fr-CA'] = alpha['fr-FR'];\nalphanumeric['fr-CA'] = alphanumeric['fr-FR'];\nalpha['pt-BR'] = alpha['pt-PT'];\nalphanumeric['pt-BR'] = alphanumeric['pt-PT'];\ndecimal['pt-BR'] = decimal['pt-PT']; // see #862\n\nalpha['pl-Pl'] = alpha['pl-PL'];\nalphanumeric['pl-Pl'] = alphanumeric['pl-PL'];\ndecimal['pl-Pl'] = decimal['pl-PL']; // see #1455\n\nalpha['fa-AF'] = alpha.fa;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isFloat;\nexports.locales = void 0;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _alpha = require(\"./alpha\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isFloat(str, options) {\n (0, _assertString.default)(str);\n options = options || {};\n var float = new RegExp(\"^(?:[-+])?(?:[0-9]+)?(?:\\\\\".concat(options.locale ? _alpha.decimal[options.locale] : '.', \"[0-9]*)?(?:[eE][\\\\+\\\\-]?(?:[0-9]+))?$\"));\n\n if (str === '' || str === '.' || str === '-' || str === '+') {\n return false;\n }\n\n var value = parseFloat(str.replace(',', '.'));\n return float.test(str) && (!options.hasOwnProperty('min') || value >= options.min) && (!options.hasOwnProperty('max') || value <= options.max) && (!options.hasOwnProperty('lt') || value < options.lt) && (!options.hasOwnProperty('gt') || value > options.gt);\n}\n\nvar locales = Object.keys(_alpha.decimal);\nexports.locales = locales;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toFloat;\n\nvar _isFloat = _interopRequireDefault(require(\"./isFloat\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction toFloat(str) {\n if (!(0, _isFloat.default)(str)) return NaN;\n return parseFloat(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isDivisibleBy;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _toFloat = _interopRequireDefault(require(\"./toFloat\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isDivisibleBy(str, num) {\n (0, _assertString.default)(str);\n return (0, _toFloat.default)(str) % parseInt(num, 10) === 0;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isDivisibleByValidator from 'validator/lib/isDivisibleBy';\nexport var IS_DIVISIBLE_BY = 'isDivisibleBy';\n/**\n * Checks if value is a number that's divisible by another.\n */\nexport function isDivisibleBy(value, num) {\n return typeof value === 'number' && typeof num === 'number' && isDivisibleByValidator(String(value), num);\n}\n/**\n * Checks if value is a number that's divisible by another.\n */\nexport function IsDivisibleBy(num, validationOptions) {\n return ValidateBy({\n name: IS_DIVISIBLE_BY,\n constraints: [num],\n validator: {\n validate: function (value, args) { return isDivisibleBy(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be divisible by $constraint1'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsDivisibleBy.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_POSITIVE = 'isPositive';\n/**\n * Checks if the value is a positive number greater than zero.\n */\nexport function isPositive(value) {\n return typeof value === 'number' && value > 0;\n}\n/**\n * Checks if the value is a positive number greater than zero.\n */\nexport function IsPositive(validationOptions) {\n return ValidateBy({\n name: IS_POSITIVE,\n validator: {\n validate: function (value, args) { return isPositive(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a positive number'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsPositive.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_NEGATIVE = 'isNegative';\n/**\n * Checks if the value is a negative number smaller than zero.\n */\nexport function isNegative(value) {\n return typeof value === 'number' && value < 0;\n}\n/**\n * Checks if the value is a negative number smaller than zero.\n */\nexport function IsNegative(validationOptions) {\n return ValidateBy({\n name: IS_NEGATIVE,\n validator: {\n validate: function (value, args) { return isNegative(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a negative number'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsNegative.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var MAX = 'max';\n/**\n * Checks if the first number is less than or equal to the second.\n */\nexport function max(num, max) {\n return typeof num === 'number' && typeof max === 'number' && num <= max;\n}\n/**\n * Checks if the first number is less than or equal to the second.\n */\nexport function Max(maxValue, validationOptions) {\n return ValidateBy({\n name: MAX,\n constraints: [maxValue],\n validator: {\n validate: function (value, args) { return max(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must not be greater than $constraint1'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=Max.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var MIN = 'min';\n/**\n * Checks if the first number is greater than or equal to the second.\n */\nexport function min(num, min) {\n return typeof num === 'number' && typeof min === 'number' && num >= min;\n}\n/**\n * Checks if the first number is greater than or equal to the second.\n */\nexport function Min(minValue, validationOptions) {\n return ValidateBy({\n name: MIN,\n constraints: [minValue],\n validator: {\n validate: function (value, args) { return min(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must not be less than $constraint1'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=Min.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var MIN_DATE = 'minDate';\n/**\n * Checks if the value is a date that's after the specified date.\n */\nexport function minDate(date, minDate) {\n return date instanceof Date && date.getTime() >= minDate.getTime();\n}\n/**\n * Checks if the value is a date that's after the specified date.\n */\nexport function MinDate(date, validationOptions) {\n return ValidateBy({\n name: MIN_DATE,\n constraints: [date],\n validator: {\n validate: function (value, args) { return minDate(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return 'minimal allowed date for ' + eachPrefix + '$property is $constraint1'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=MinDate.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var MAX_DATE = 'maxDate';\n/**\n * Checks if the value is a date that's before the specified date.\n */\nexport function maxDate(date, maxDate) {\n return date instanceof Date && date.getTime() <= maxDate.getTime();\n}\n/**\n * Checks if the value is a date that's after the specified date.\n */\nexport function MaxDate(date, validationOptions) {\n return ValidateBy({\n name: MAX_DATE,\n constraints: [date],\n validator: {\n validate: function (value, args) { return maxDate(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return 'maximal allowed date for ' + eachPrefix + '$property is $constraint1'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=MaxDate.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toString;\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction toString(input) {\n if (_typeof(input) === 'object' && input !== null) {\n if (typeof input.toString === 'function') {\n input = input.toString();\n } else {\n input = '[object Object]';\n }\n } else if (input === null || typeof input === 'undefined' || isNaN(input) && !input.length) {\n input = '';\n }\n\n return String(input);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = contains;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _toString = _interopRequireDefault(require(\"./util/toString\"));\n\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar defaulContainsOptions = {\n ignoreCase: false,\n minOccurrences: 1\n};\n\nfunction contains(str, elem, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, defaulContainsOptions);\n\n if (options.ignoreCase) {\n return str.toLowerCase().split((0, _toString.default)(elem).toLowerCase()).length > options.minOccurrences;\n }\n\n return str.split((0, _toString.default)(elem)).length > options.minOccurrences;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport containsValidator from 'validator/lib/contains';\nexport var CONTAINS = 'contains';\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, seed) {\n return typeof value === 'string' && containsValidator(value, seed);\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, validationOptions) {\n return ValidateBy({\n name: CONTAINS,\n constraints: [seed],\n validator: {\n validate: function (value, args) { return contains(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain a $constraint1 string'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=Contains.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport containsValidator from 'validator/lib/contains';\nexport var NOT_CONTAINS = 'notContains';\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, seed) {\n return typeof value === 'string' && !containsValidator(value, seed);\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, validationOptions) {\n return ValidateBy({\n name: NOT_CONTAINS,\n constraints: [seed],\n validator: {\n validate: function (value, args) { return notContains(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not contain a $constraint1 string'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=NotContains.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isAlpha;\nexports.locales = void 0;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _alpha = require(\"./alpha\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isAlpha(_str) {\n var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US';\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n (0, _assertString.default)(_str);\n var str = _str;\n var ignore = options.ignore;\n\n if (ignore) {\n if (ignore instanceof RegExp) {\n str = str.replace(ignore, '');\n } else if (typeof ignore === 'string') {\n str = str.replace(new RegExp(\"[\".concat(ignore.replace(/[-[\\]{}()*+?.,\\\\^$|#\\\\s]/g, '\\\\$&'), \"]\"), 'g'), ''); // escape regex for ignore\n } else {\n throw new Error('ignore should be instance of a String or RegExp');\n }\n }\n\n if (locale in _alpha.alpha) {\n return _alpha.alpha[locale].test(str);\n }\n\n throw new Error(\"Invalid locale '\".concat(locale, \"'\"));\n}\n\nvar locales = Object.keys(_alpha.alpha);\nexports.locales = locales;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isAlphaValidator from 'validator/lib/isAlpha';\nexport var IS_ALPHA = 'isAlpha';\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, locale) {\n return typeof value === 'string' && isAlphaValidator(value, locale);\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, validationOptions) {\n return ValidateBy({\n name: IS_ALPHA,\n constraints: [locale],\n validator: {\n validate: function (value, args) { return isAlpha(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain only letters (a-zA-Z)'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsAlpha.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isAlphanumeric;\nexports.locales = void 0;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _alpha = require(\"./alpha\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isAlphanumeric(_str) {\n var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US';\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n (0, _assertString.default)(_str);\n var str = _str;\n var ignore = options.ignore;\n\n if (ignore) {\n if (ignore instanceof RegExp) {\n str = str.replace(ignore, '');\n } else if (typeof ignore === 'string') {\n str = str.replace(new RegExp(\"[\".concat(ignore.replace(/[-[\\]{}()*+?.,\\\\^$|#\\\\s]/g, '\\\\$&'), \"]\"), 'g'), ''); // escape regex for ignore\n } else {\n throw new Error('ignore should be instance of a String or RegExp');\n }\n }\n\n if (locale in _alpha.alphanumeric) {\n return _alpha.alphanumeric[locale].test(str);\n }\n\n throw new Error(\"Invalid locale '\".concat(locale, \"'\"));\n}\n\nvar locales = Object.keys(_alpha.alphanumeric);\nexports.locales = locales;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isAlphanumericValidator from 'validator/lib/isAlphanumeric';\nexport var IS_ALPHANUMERIC = 'isAlphanumeric';\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, locale) {\n return typeof value === 'string' && isAlphanumericValidator(value, locale);\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(locale, validationOptions) {\n return ValidateBy({\n name: IS_ALPHANUMERIC,\n constraints: [locale],\n validator: {\n validate: function (value, args) { return isAlphanumeric(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain only letters and numbers'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsAlphanumeric.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar includes = function includes(arr, val) {\n return arr.some(function (arrVal) {\n return val === arrVal;\n });\n};\n\nvar _default = includes;\nexports.default = _default;\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isDecimal;\n\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _includes = _interopRequireDefault(require(\"./util/includes\"));\n\nvar _alpha = require(\"./alpha\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction decimalRegExp(options) {\n var regExp = new RegExp(\"^[-+]?([0-9]+)?(\\\\\".concat(_alpha.decimal[options.locale], \"[0-9]{\").concat(options.decimal_digits, \"})\").concat(options.force_decimal ? '' : '?', \"$\"));\n return regExp;\n}\n\nvar default_decimal_options = {\n force_decimal: false,\n decimal_digits: '1,',\n locale: 'en-US'\n};\nvar blacklist = ['', '-', '+'];\n\nfunction isDecimal(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_decimal_options);\n\n if (options.locale in _alpha.decimal) {\n return !(0, _includes.default)(blacklist, str.replace(/ /g, '')) && decimalRegExp(options).test(str);\n }\n\n throw new Error(\"Invalid locale '\".concat(options.locale, \"'\"));\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isDecimalValidator from 'validator/lib/isDecimal';\nexport var IS_DECIMAL = 'isDecimal';\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, options) {\n return typeof value === 'string' && isDecimalValidator(value, options);\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 IsDecimal(options, validationOptions) {\n return ValidateBy({\n name: IS_DECIMAL,\n constraints: [options],\n validator: {\n validate: function (value, args) { return isDecimal(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property is not a valid decimal number.'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsDecimal.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isAscii;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint-disable no-control-regex */\nvar ascii = /^[\\x00-\\x7F]+$/;\n/* eslint-enable no-control-regex */\n\nfunction isAscii(str) {\n (0, _assertString.default)(str);\n return ascii.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isAsciiValidator from 'validator/lib/isAscii';\nexport var IS_ASCII = 'isAscii';\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) {\n return typeof value === 'string' && isAsciiValidator(value);\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) {\n return ValidateBy({\n name: IS_ASCII,\n validator: {\n validate: function (value, args) { return isAscii(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain only ASCII characters'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsAscii.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBase64;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar notBase64 = /[^A-Z0-9+\\/=]/i;\nvar urlSafeBase64 = /^[A-Z0-9_\\-]*$/i;\nvar defaultBase64Options = {\n urlSafe: false\n};\n\nfunction isBase64(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, defaultBase64Options);\n var len = str.length;\n\n if (options.urlSafe) {\n return urlSafeBase64.test(str);\n }\n\n if (len % 4 !== 0 || notBase64.test(str)) {\n return false;\n }\n\n var firstPaddingChar = str.indexOf('=');\n return firstPaddingChar === -1 || firstPaddingChar === len - 1 || firstPaddingChar === len - 2 && str[len - 1] === '=';\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isBase64Validator from 'validator/lib/isBase64';\nexport var IS_BASE64 = 'isBase64';\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(value) {\n return typeof value === 'string' && isBase64Validator(value);\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(validationOptions) {\n return ValidateBy({\n name: IS_BASE64,\n validator: {\n validate: function (value, args) { return isBase64(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be base64 encoded'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsBase64.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isByteLength;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-disable prefer-rest-params */\nfunction isByteLength(str, options) {\n (0, _assertString.default)(str);\n var min;\n var max;\n\n if (_typeof(options) === 'object') {\n min = options.min || 0;\n max = options.max;\n } else {\n // backwards compatibility: isByteLength(str, min [, max])\n min = arguments[1];\n max = arguments[2];\n }\n\n var len = encodeURI(str).split(/%..|./).length - 1;\n return len >= min && (typeof max === 'undefined' || len <= max);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isByteLengthValidator from 'validator/lib/isByteLength';\nexport var IS_BYTE_LENGTH = 'isByteLength';\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, min, max) {\n return typeof value === 'string' && isByteLengthValidator(value, { min: min, max: max });\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, max, validationOptions) {\n return ValidateBy({\n name: IS_BYTE_LENGTH,\n constraints: [min, max],\n validator: {\n validate: function (value, args) { return isByteLength(value, args.constraints[0], args.constraints[1]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + \"$property's byte length must fall into ($constraint1, $constraint2) range\"; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsByteLength.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isCreditCard;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint-disable max-len */\nvar creditCard = /^(?:4[0-9]{12}(?:[0-9]{3,6})?|5[1-5][0-9]{14}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12,15}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11}|6[27][0-9]{14}|^(81[0-9]{14,17}))$/;\n/* eslint-enable max-len */\n\nfunction isCreditCard(str) {\n (0, _assertString.default)(str);\n var sanitized = str.replace(/[- ]+/g, '');\n\n if (!creditCard.test(sanitized)) {\n return false;\n }\n\n var sum = 0;\n var digit;\n var tmpNum;\n var shouldDouble;\n\n for (var i = sanitized.length - 1; i >= 0; i--) {\n digit = sanitized.substring(i, i + 1);\n tmpNum = parseInt(digit, 10);\n\n if (shouldDouble) {\n tmpNum *= 2;\n\n if (tmpNum >= 10) {\n sum += tmpNum % 10 + 1;\n } else {\n sum += tmpNum;\n }\n } else {\n sum += tmpNum;\n }\n\n shouldDouble = !shouldDouble;\n }\n\n return !!(sum % 10 === 0 ? sanitized : false);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isCreditCardValidator from 'validator/lib/isCreditCard';\nexport var IS_CREDIT_CARD = 'isCreditCard';\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) {\n return typeof value === 'string' && isCreditCardValidator(value);\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) {\n return ValidateBy({\n name: IS_CREDIT_CARD,\n validator: {\n validate: function (value, args) { return isCreditCard(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a credit card'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsCreditCard.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isCurrency;\n\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction currencyRegex(options) {\n var decimal_digits = \"\\\\d{\".concat(options.digits_after_decimal[0], \"}\");\n options.digits_after_decimal.forEach(function (digit, index) {\n if (index !== 0) decimal_digits = \"\".concat(decimal_digits, \"|\\\\d{\").concat(digit, \"}\");\n });\n var symbol = \"(\".concat(options.symbol.replace(/\\W/, function (m) {\n return \"\\\\\".concat(m);\n }), \")\").concat(options.require_symbol ? '' : '?'),\n negative = '-?',\n whole_dollar_amount_without_sep = '[1-9]\\\\d*',\n whole_dollar_amount_with_sep = \"[1-9]\\\\d{0,2}(\\\\\".concat(options.thousands_separator, \"\\\\d{3})*\"),\n valid_whole_dollar_amounts = ['0', whole_dollar_amount_without_sep, whole_dollar_amount_with_sep],\n whole_dollar_amount = \"(\".concat(valid_whole_dollar_amounts.join('|'), \")?\"),\n decimal_amount = \"(\\\\\".concat(options.decimal_separator, \"(\").concat(decimal_digits, \"))\").concat(options.require_decimal ? '' : '?');\n var pattern = whole_dollar_amount + (options.allow_decimal || options.require_decimal ? decimal_amount : ''); // default is negative sign before symbol, but there are two other options (besides parens)\n\n if (options.allow_negatives && !options.parens_for_negatives) {\n if (options.negative_sign_after_digits) {\n pattern += negative;\n } else if (options.negative_sign_before_digits) {\n pattern = negative + pattern;\n }\n } // South African Rand, for example, uses R 123 (space) and R-123 (no space)\n\n\n if (options.allow_negative_sign_placeholder) {\n pattern = \"( (?!\\\\-))?\".concat(pattern);\n } else if (options.allow_space_after_symbol) {\n pattern = \" ?\".concat(pattern);\n } else if (options.allow_space_after_digits) {\n pattern += '( (?!$))?';\n }\n\n if (options.symbol_after_digits) {\n pattern += symbol;\n } else {\n pattern = symbol + pattern;\n }\n\n if (options.allow_negatives) {\n if (options.parens_for_negatives) {\n pattern = \"(\\\\(\".concat(pattern, \"\\\\)|\").concat(pattern, \")\");\n } else if (!(options.negative_sign_before_digits || options.negative_sign_after_digits)) {\n pattern = negative + pattern;\n }\n } // ensure there's a dollar and/or decimal amount, and that\n // it doesn't start with a space or a negative sign followed by a space\n\n\n return new RegExp(\"^(?!-? )(?=.*\\\\d)\".concat(pattern, \"$\"));\n}\n\nvar default_currency_options = {\n symbol: '$',\n require_symbol: false,\n allow_space_after_symbol: false,\n symbol_after_digits: false,\n allow_negatives: true,\n parens_for_negatives: false,\n negative_sign_before_digits: false,\n negative_sign_after_digits: false,\n allow_negative_sign_placeholder: false,\n thousands_separator: ',',\n decimal_separator: '.',\n allow_decimal: true,\n require_decimal: false,\n digits_after_decimal: [2],\n allow_space_after_digits: false\n};\n\nfunction isCurrency(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_currency_options);\n return currencyRegex(options).test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isCurrencyValidator from 'validator/lib/isCurrency';\nexport var IS_CURRENCY = 'isCurrency';\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, options) {\n return typeof value === 'string' && isCurrencyValidator(value, options);\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(options, validationOptions) {\n return ValidateBy({\n name: IS_CURRENCY,\n constraints: [options],\n validator: {\n validate: function (value, args) { return isCurrency(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a currency'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsCurrency.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isFQDN;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar default_fqdn_options = {\n require_tld: true,\n allow_underscores: false,\n allow_trailing_dot: false,\n allow_numeric_tld: false,\n allow_wildcard: false\n};\n\nfunction isFQDN(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_fqdn_options);\n /* Remove the optional trailing dot before checking validity */\n\n if (options.allow_trailing_dot && str[str.length - 1] === '.') {\n str = str.substring(0, str.length - 1);\n }\n /* Remove the optional wildcard before checking validity */\n\n\n if (options.allow_wildcard === true && str.indexOf('*.') === 0) {\n str = str.substring(2);\n }\n\n var parts = str.split('.');\n var tld = parts[parts.length - 1];\n\n if (options.require_tld) {\n // disallow fqdns without tld\n if (parts.length < 2) {\n return false;\n }\n\n if (!/^([a-z\\u00A1-\\u00A8\\u00AA-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{2,}|xn[a-z0-9-]{2,})$/i.test(tld)) {\n return false;\n } // disallow spaces\n\n\n if (/\\s/.test(tld)) {\n return false;\n }\n } // reject numeric TLDs\n\n\n if (!options.allow_numeric_tld && /^\\d+$/.test(tld)) {\n return false;\n }\n\n return parts.every(function (part) {\n if (part.length > 63) {\n return false;\n }\n\n if (!/^[a-z_\\u00a1-\\uffff0-9-]+$/i.test(part)) {\n return false;\n } // disallow full-width chars\n\n\n if (/[\\uff01-\\uff5e]/.test(part)) {\n return false;\n } // disallow parts starting or ending with hyphen\n\n\n if (/^-|-$/.test(part)) {\n return false;\n }\n\n if (!options.allow_underscores && /_/.test(part)) {\n return false;\n }\n\n return true;\n });\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isIP;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n11.3. Examples\n\n The following addresses\n\n fe80::1234 (on the 1st link of the node)\n ff02::5678 (on the 5th link of the node)\n ff08::9abc (on the 10th organization of the node)\n\n would be represented as follows:\n\n fe80::1234%1\n ff02::5678%5\n ff08::9abc%10\n\n (Here we assume a natural translation from a zone index to the\n part, where the Nth zone of any scope is translated into\n \"N\".)\n\n If we use interface names as , those addresses could also be\n represented as follows:\n\n fe80::1234%ne0\n ff02::5678%pvc1.3\n ff08::9abc%interface10\n\n where the interface \"ne0\" belongs to the 1st link, \"pvc1.3\" belongs\n to the 5th link, and \"interface10\" belongs to the 10th organization.\n * * */\nvar IPv4SegmentFormat = '(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';\nvar IPv4AddressFormat = \"(\".concat(IPv4SegmentFormat, \"[.]){3}\").concat(IPv4SegmentFormat);\nvar IPv4AddressRegExp = new RegExp(\"^\".concat(IPv4AddressFormat, \"$\"));\nvar IPv6SegmentFormat = '(?:[0-9a-fA-F]{1,4})';\nvar IPv6AddressRegExp = new RegExp('^(' + \"(?:\".concat(IPv6SegmentFormat, \":){7}(?:\").concat(IPv6SegmentFormat, \"|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){6}(?:\").concat(IPv4AddressFormat, \"|:\").concat(IPv6SegmentFormat, \"|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){5}(?::\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,2}|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){4}(?:(:\").concat(IPv6SegmentFormat, \"){0,1}:\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,3}|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){3}(?:(:\").concat(IPv6SegmentFormat, \"){0,2}:\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,4}|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){2}(?:(:\").concat(IPv6SegmentFormat, \"){0,3}:\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,5}|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){1}(?:(:\").concat(IPv6SegmentFormat, \"){0,4}:\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,6}|:)|\") + \"(?::((?::\".concat(IPv6SegmentFormat, \"){0,5}:\").concat(IPv4AddressFormat, \"|(?::\").concat(IPv6SegmentFormat, \"){1,7}|:))\") + ')(%[0-9a-zA-Z-.:]{1,})?$');\n\nfunction isIP(str) {\n var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n (0, _assertString.default)(str);\n version = String(version);\n\n if (!version) {\n return isIP(str, 4) || isIP(str, 6);\n }\n\n if (version === '4') {\n if (!IPv4AddressRegExp.test(str)) {\n return false;\n }\n\n var parts = str.split('.').sort(function (a, b) {\n return a - b;\n });\n return parts[3] <= 255;\n }\n\n if (version === '6') {\n return !!IPv6AddressRegExp.test(str);\n }\n\n return false;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isEmail;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\n\nvar _isByteLength = _interopRequireDefault(require(\"./isByteLength\"));\n\nvar _isFQDN = _interopRequireDefault(require(\"./isFQDN\"));\n\nvar _isIP = _interopRequireDefault(require(\"./isIP\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar default_email_options = {\n allow_display_name: false,\n require_display_name: false,\n allow_utf8_local_part: true,\n require_tld: true,\n blacklisted_chars: '',\n ignore_max_length: false,\n host_blacklist: []\n};\n/* eslint-disable max-len */\n\n/* eslint-disable no-control-regex */\n\nvar splitNameAddress = /^([^\\x00-\\x1F\\x7F-\\x9F\\cX]+)]/.test(display_name_without_quotes);\n\n if (contains_illegal) {\n // if contains illegal characters,\n // must to be enclosed in double-quotes, otherwise it's not a valid display name\n if (display_name_without_quotes === display_name) {\n return false;\n } // the quotes in display name must start with character symbol \\\n\n\n var all_start_with_back_slash = display_name_without_quotes.split('\"').length === display_name_without_quotes.split('\\\\\"').length;\n\n if (!all_start_with_back_slash) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isEmail(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_email_options);\n\n if (options.require_display_name || options.allow_display_name) {\n var display_email = str.match(splitNameAddress);\n\n if (display_email) {\n var display_name = display_email[1]; // Remove display name and angle brackets to get email address\n // Can be done in the regex but will introduce a ReDOS (See #1597 for more info)\n\n str = str.replace(display_name, '').replace(/(^<|>$)/g, ''); // sometimes need to trim the last space to get the display name\n // because there may be a space between display name and email address\n // eg. myname \n // the display name is `myname` instead of `myname `, so need to trim the last space\n\n if (display_name.endsWith(' ')) {\n display_name = display_name.substr(0, display_name.length - 1);\n }\n\n if (!validateDisplayName(display_name)) {\n return false;\n }\n } else if (options.require_display_name) {\n return false;\n }\n }\n\n if (!options.ignore_max_length && str.length > defaultMaxEmailLength) {\n return false;\n }\n\n var parts = str.split('@');\n var domain = parts.pop();\n var lower_domain = domain.toLowerCase();\n\n if (options.host_blacklist.includes(lower_domain)) {\n return false;\n }\n\n var user = parts.join('@');\n\n if (options.domain_specific_validation && (lower_domain === 'gmail.com' || lower_domain === 'googlemail.com')) {\n /*\n Previously we removed dots for gmail addresses before validating.\n This was removed because it allows `multiple..dots@gmail.com`\n to be reported as valid, but it is not.\n Gmail only normalizes single dots, removing them from here is pointless,\n should be done in normalizeEmail\n */\n user = user.toLowerCase(); // Removing sub-address from username before gmail validation\n\n var username = user.split('+')[0]; // Dots are not included in gmail length restriction\n\n if (!(0, _isByteLength.default)(username.replace(/\\./g, ''), {\n min: 6,\n max: 30\n })) {\n return false;\n }\n\n var _user_parts = username.split('.');\n\n for (var i = 0; i < _user_parts.length; i++) {\n if (!gmailUserPart.test(_user_parts[i])) {\n return false;\n }\n }\n }\n\n if (options.ignore_max_length === false && (!(0, _isByteLength.default)(user, {\n max: 64\n }) || !(0, _isByteLength.default)(domain, {\n max: 254\n }))) {\n return false;\n }\n\n if (!(0, _isFQDN.default)(domain, {\n require_tld: options.require_tld\n })) {\n if (!options.allow_ip_domain) {\n return false;\n }\n\n if (!(0, _isIP.default)(domain)) {\n if (!domain.startsWith('[') || !domain.endsWith(']')) {\n return false;\n }\n\n var noBracketdomain = domain.substr(1, domain.length - 2);\n\n if (noBracketdomain.length === 0 || !(0, _isIP.default)(noBracketdomain)) {\n return false;\n }\n }\n }\n\n if (user[0] === '\"') {\n user = user.slice(1, user.length - 1);\n return options.allow_utf8_local_part ? quotedEmailUserUtf8.test(user) : quotedEmailUser.test(user);\n }\n\n var pattern = options.allow_utf8_local_part ? emailUserUtf8Part : emailUserPart;\n var user_parts = user.split('.');\n\n for (var _i = 0; _i < user_parts.length; _i++) {\n if (!pattern.test(user_parts[_i])) {\n return false;\n }\n }\n\n if (options.blacklisted_chars) {\n if (user.search(new RegExp(\"[\".concat(options.blacklisted_chars, \"]+\"), 'g')) !== -1) return false;\n }\n\n return true;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isEmailValidator from 'validator/lib/isEmail';\nexport var IS_EMAIL = 'isEmail';\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(value, options) {\n return typeof value === 'string' && isEmailValidator(value, options);\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(options, validationOptions) {\n return ValidateBy({\n name: IS_EMAIL,\n constraints: [options],\n validator: {\n validate: function (value, args) { return isEmail(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an email'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsEmail.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isFqdnValidator from 'validator/lib/isFQDN';\nexport var IS_FQDN = 'isFqdn';\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, options) {\n return typeof value === 'string' && isFqdnValidator(value, options);\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, validationOptions) {\n return ValidateBy({\n name: IS_FQDN,\n constraints: [options],\n validator: {\n validate: function (value, args) { return isFQDN(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid domain name'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsFQDN.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isFullWidth;\nexports.fullWidth = void 0;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar fullWidth = /[^\\u0020-\\u007E\\uFF61-\\uFF9F\\uFFA0-\\uFFDC\\uFFE8-\\uFFEE0-9a-zA-Z]/;\nexports.fullWidth = fullWidth;\n\nfunction isFullWidth(str) {\n (0, _assertString.default)(str);\n return fullWidth.test(str);\n}","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isFullWidthValidator from 'validator/lib/isFullWidth';\nexport var IS_FULL_WIDTH = 'isFullWidth';\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) {\n return typeof value === 'string' && isFullWidthValidator(value);\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) {\n return ValidateBy({\n name: IS_FULL_WIDTH,\n validator: {\n validate: function (value, args) { return isFullWidth(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain a full-width characters'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsFullWidth.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isHalfWidth;\nexports.halfWidth = void 0;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar halfWidth = /[\\u0020-\\u007E\\uFF61-\\uFF9F\\uFFA0-\\uFFDC\\uFFE8-\\uFFEE0-9a-zA-Z]/;\nexports.halfWidth = halfWidth;\n\nfunction isHalfWidth(str) {\n (0, _assertString.default)(str);\n return halfWidth.test(str);\n}","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isHalfWidthValidator from 'validator/lib/isHalfWidth';\nexport var IS_HALF_WIDTH = 'isHalfWidth';\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) {\n return typeof value === 'string' && isHalfWidthValidator(value);\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 IsHalfWidth(validationOptions) {\n return ValidateBy({\n name: IS_HALF_WIDTH,\n validator: {\n validate: function (value, args) { return isHalfWidth(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain a half-width characters'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsHalfWidth.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isVariableWidth;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _isFullWidth = require(\"./isFullWidth\");\n\nvar _isHalfWidth = require(\"./isHalfWidth\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isVariableWidth(str) {\n (0, _assertString.default)(str);\n return _isFullWidth.fullWidth.test(str) && _isHalfWidth.halfWidth.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isVariableWidthValidator from 'validator/lib/isVariableWidth';\nexport var IS_VARIABLE_WIDTH = 'isVariableWidth';\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) {\n return typeof value === 'string' && isVariableWidthValidator(value);\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) {\n return ValidateBy({\n name: IS_VARIABLE_WIDTH,\n validator: {\n validate: function (value, args) { return isVariableWidth(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain a full-width and half-width characters'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsVariableWidth.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isHexColor;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar hexcolor = /^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$/i;\n\nfunction isHexColor(str) {\n (0, _assertString.default)(str);\n return hexcolor.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isHexColorValidator from 'validator/lib/isHexColor';\nexport var IS_HEX_COLOR = 'isHexColor';\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) {\n return typeof value === 'string' && isHexColorValidator(value);\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) {\n return ValidateBy({\n name: IS_HEX_COLOR,\n validator: {\n validate: function (value, args) { return isHexColor(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a hexadecimal color'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsHexColor.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isHexadecimal;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar hexadecimal = /^(0x|0h)?[0-9A-F]+$/i;\n\nfunction isHexadecimal(str) {\n (0, _assertString.default)(str);\n return hexadecimal.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isHexadecimalValidator from 'validator/lib/isHexadecimal';\nexport var IS_HEXADECIMAL = 'isHexadecimal';\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) {\n return typeof value === 'string' && isHexadecimalValidator(value);\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) {\n return ValidateBy({\n name: IS_HEXADECIMAL,\n validator: {\n validate: function (value, args) { return isHexadecimal(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a hexadecimal number'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsHexadecimal.js.map","export function isValidationOptions(val) {\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//# sourceMappingURL=ValidationOptions.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMACAddress;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar macAddress = /^(?:[0-9a-fA-F]{2}([-:\\s]))([0-9a-fA-F]{2}\\1){4}([0-9a-fA-F]{2})$/;\nvar macAddressNoSeparators = /^([0-9a-fA-F]){12}$/;\nvar macAddressWithDots = /^([0-9a-fA-F]{4}\\.){2}([0-9a-fA-F]{4})$/;\n\nfunction isMACAddress(str, options) {\n (0, _assertString.default)(str);\n /**\n * @deprecated `no_colons` TODO: remove it in the next major\n */\n\n if (options && (options.no_colons || options.no_separators)) {\n return macAddressNoSeparators.test(str);\n }\n\n return macAddress.test(str) || macAddressWithDots.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { isValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isMacAddressValidator from 'validator/lib/isMACAddress';\nexport var IS_MAC_ADDRESS = 'isMacAddress';\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, options) {\n return typeof value === 'string' && isMacAddressValidator(value, options);\n}\nexport function IsMACAddress(optionsOrValidationOptionsArg, validationOptionsArg) {\n var options = !isValidationOptions(optionsOrValidationOptionsArg) ? optionsOrValidationOptionsArg : undefined;\n var validationOptions = isValidationOptions(optionsOrValidationOptionsArg)\n ? optionsOrValidationOptionsArg\n : validationOptionsArg;\n return ValidateBy({\n name: IS_MAC_ADDRESS,\n constraints: [options],\n validator: {\n validate: function (value, args) { return isMACAddress(value, options); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a MAC Address'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsMacAddress.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isIPValidator from 'validator/lib/isIP';\nexport var IS_IP = 'isIp';\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, version) {\n /* eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion */\n var versionStr = version ? \"\".concat(version) : undefined;\n return typeof value === 'string' && isIPValidator(value, versionStr);\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, validationOptions) {\n return ValidateBy({\n name: IS_IP,\n constraints: [version],\n validator: {\n validate: function (value, args) { return isIP(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an ip address'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsIP.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isInt;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar int = /^(?:[-+]?(?:0|[1-9][0-9]*))$/;\nvar intLeadingZeroes = /^[-+]?[0-9]+$/;\n\nfunction isInt(str, options) {\n (0, _assertString.default)(str);\n options = options || {}; // Get the regex to use for testing, based on whether\n // leading zeroes are allowed or not.\n\n var regex = options.hasOwnProperty('allow_leading_zeroes') && !options.allow_leading_zeroes ? int : intLeadingZeroes; // Check min/max/lt/gt\n\n var minCheckPassed = !options.hasOwnProperty('min') || str >= options.min;\n var maxCheckPassed = !options.hasOwnProperty('max') || str <= options.max;\n var ltCheckPassed = !options.hasOwnProperty('lt') || str < options.lt;\n var gtCheckPassed = !options.hasOwnProperty('gt') || str > options.gt;\n return regex.test(str) && minCheckPassed && maxCheckPassed && ltCheckPassed && gtCheckPassed;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isPort;\n\nvar _isInt = _interopRequireDefault(require(\"./isInt\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isPort(str) {\n return (0, _isInt.default)(str, {\n min: 0,\n max: 65535\n });\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isPortValidator from 'validator/lib/isPort';\nexport var IS_PORT = 'isPort';\n/**\n * Check if the string is a valid port number.\n */\nexport function isPort(value) {\n return typeof value === 'string' && isPortValidator(value);\n}\n/**\n * Check if the string is a valid port number.\n */\nexport function IsPort(validationOptions) {\n return ValidateBy({\n name: IS_PORT,\n validator: {\n validate: function (value, args) { return isPort(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a port'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsPort.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISBN;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar isbn10Maybe = /^(?:[0-9]{9}X|[0-9]{10})$/;\nvar isbn13Maybe = /^(?:[0-9]{13})$/;\nvar factor = [1, 3];\n\nfunction isISBN(str) {\n var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n (0, _assertString.default)(str);\n version = String(version);\n\n if (!version) {\n return isISBN(str, 10) || isISBN(str, 13);\n }\n\n var sanitized = str.replace(/[\\s-]+/g, '');\n var checksum = 0;\n var i;\n\n if (version === '10') {\n if (!isbn10Maybe.test(sanitized)) {\n return false;\n }\n\n for (i = 0; i < 9; i++) {\n checksum += (i + 1) * sanitized.charAt(i);\n }\n\n if (sanitized.charAt(9) === 'X') {\n checksum += 10 * 10;\n } else {\n checksum += 10 * sanitized.charAt(9);\n }\n\n if (checksum % 11 === 0) {\n return !!sanitized;\n }\n } else if (version === '13') {\n if (!isbn13Maybe.test(sanitized)) {\n return false;\n }\n\n for (i = 0; i < 12; i++) {\n checksum += factor[i % 2] * sanitized.charAt(i);\n }\n\n if (sanitized.charAt(12) - (10 - checksum % 10) % 10 === 0) {\n return !!sanitized;\n }\n }\n\n return false;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isIsbnValidator from 'validator/lib/isISBN';\nexport var IS_ISBN = 'isIsbn';\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, version) {\n /* eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion */\n var versionStr = version ? \"\".concat(version) : undefined;\n return typeof value === 'string' && isIsbnValidator(value, versionStr);\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, validationOptions) {\n return ValidateBy({\n name: IS_ISBN,\n constraints: [version],\n validator: {\n validate: function (value, args) { return isISBN(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an ISBN'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsISBN.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISIN;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar isin = /^[A-Z]{2}[0-9A-Z]{9}[0-9]$/; // this link details how the check digit is calculated:\n// https://www.isin.org/isin-format/. it is a little bit\n// odd in that it works with digits, not numbers. in order\n// to make only one pass through the ISIN characters, the\n// each alpha character is handled as 2 characters within\n// the loop.\n\nfunction isISIN(str) {\n (0, _assertString.default)(str);\n\n if (!isin.test(str)) {\n return false;\n }\n\n var double = true;\n var sum = 0; // convert values\n\n for (var i = str.length - 2; i >= 0; i--) {\n if (str[i] >= 'A' && str[i] <= 'Z') {\n var value = str[i].charCodeAt(0) - 55;\n var lo = value % 10;\n var hi = Math.trunc(value / 10); // letters have two digits, so handle the low order\n // and high order digits separately.\n\n for (var _i = 0, _arr = [lo, hi]; _i < _arr.length; _i++) {\n var digit = _arr[_i];\n\n if (double) {\n if (digit >= 5) {\n sum += 1 + (digit - 5) * 2;\n } else {\n sum += digit * 2;\n }\n } else {\n sum += digit;\n }\n\n double = !double;\n }\n } else {\n var _digit = str[i].charCodeAt(0) - '0'.charCodeAt(0);\n\n if (double) {\n if (_digit >= 5) {\n sum += 1 + (_digit - 5) * 2;\n } else {\n sum += _digit * 2;\n }\n } else {\n sum += _digit;\n }\n\n double = !double;\n }\n }\n\n var check = Math.trunc((sum + 9) / 10) * 10 - sum;\n return +str[str.length - 1] === check;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isIsinValidator from 'validator/lib/isISIN';\nexport var IS_ISIN = 'isIsin';\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) {\n return typeof value === 'string' && isIsinValidator(value);\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) {\n return ValidateBy({\n name: IS_ISIN,\n validator: {\n validate: function (value, args) { return isISIN(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an ISIN (stock/security identifier)'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsISIN.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISO8601;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint-disable max-len */\n// from http://goo.gl/0ejHHW\nvar iso8601 = /^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$/; // same as above, except with a strict 'T' separator between date and time\n\nvar iso8601StrictSeparator = /^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$/;\n/* eslint-enable max-len */\n\nvar isValidDate = function isValidDate(str) {\n // str must have passed the ISO8601 check\n // this check is meant to catch invalid dates\n // like 2009-02-31\n // first check for ordinal dates\n var ordinalMatch = str.match(/^(\\d{4})-?(\\d{3})([ T]{1}\\.*|$)/);\n\n if (ordinalMatch) {\n var oYear = Number(ordinalMatch[1]);\n var oDay = Number(ordinalMatch[2]); // if is leap year\n\n if (oYear % 4 === 0 && oYear % 100 !== 0 || oYear % 400 === 0) return oDay <= 366;\n return oDay <= 365;\n }\n\n var match = str.match(/(\\d{4})-?(\\d{0,2})-?(\\d*)/).map(Number);\n var year = match[1];\n var month = match[2];\n var day = match[3];\n var monthString = month ? \"0\".concat(month).slice(-2) : month;\n var dayString = day ? \"0\".concat(day).slice(-2) : day; // create a date object and compare\n\n var d = new Date(\"\".concat(year, \"-\").concat(monthString || '01', \"-\").concat(dayString || '01'));\n\n if (month && day) {\n return d.getUTCFullYear() === year && d.getUTCMonth() + 1 === month && d.getUTCDate() === day;\n }\n\n return true;\n};\n\nfunction isISO8601(str) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, _assertString.default)(str);\n var check = options.strictSeparator ? iso8601StrictSeparator.test(str) : iso8601.test(str);\n if (check && options.strict) return isValidDate(str);\n return check;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isIso8601Validator from 'validator/lib/isISO8601';\nexport var IS_ISO8601 = 'isIso8601';\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, options) {\n return typeof value === 'string' && isIso8601Validator(value, options);\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(options, validationOptions) {\n return ValidateBy({\n name: IS_ISO8601,\n constraints: [options],\n validator: {\n validate: function (value, args) { return isISO8601(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid ISO 8601 date string'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsISO8601.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isJSON;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar default_json_options = {\n allow_primitives: false\n};\n\nfunction isJSON(str, options) {\n (0, _assertString.default)(str);\n\n try {\n options = (0, _merge.default)(options, default_json_options);\n var primitives = [];\n\n if (options.allow_primitives) {\n primitives = [null, false, true];\n }\n\n var obj = JSON.parse(str);\n return primitives.includes(obj) || !!obj && _typeof(obj) === 'object';\n } catch (e) {\n /* ignore */\n }\n\n return false;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isJSONValidator from 'validator/lib/isJSON';\nexport var IS_JSON = 'isJson';\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) {\n return typeof value === 'string' && isJSONValidator(value);\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) {\n return ValidateBy({\n name: IS_JSON,\n validator: {\n validate: function (value, args) { return isJSON(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a json string'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsJSON.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isJWT;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _isBase = _interopRequireDefault(require(\"./isBase64\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isJWT(str) {\n (0, _assertString.default)(str);\n var dotSplit = str.split('.');\n var len = dotSplit.length;\n\n if (len > 3 || len < 2) {\n return false;\n }\n\n return dotSplit.reduce(function (acc, currElem) {\n return acc && (0, _isBase.default)(currElem, {\n urlSafe: true\n });\n }, true);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isJwtValidator from 'validator/lib/isJWT';\nexport var IS_JWT = 'isJwt';\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) {\n return typeof value === 'string' && isJwtValidator(value);\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) {\n return ValidateBy({\n name: IS_JWT,\n validator: {\n validate: function (value, args) { return isJWT(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a jwt string'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsJWT.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isLowercase;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isLowercase(str) {\n (0, _assertString.default)(str);\n return str === str.toLowerCase();\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isLowercaseValidator from 'validator/lib/isLowercase';\nexport var IS_LOWERCASE = 'isLowercase';\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) {\n return typeof value === 'string' && isLowercaseValidator(value);\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) {\n return ValidateBy({\n name: IS_LOWERCASE,\n validator: {\n validate: function (value, args) { return isLowercase(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a lowercase string'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsLowercase.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMobilePhone;\nexports.locales = void 0;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint-disable max-len */\nvar phones = {\n 'am-AM': /^(\\+?374|0)((10|[9|7][0-9])\\d{6}$|[2-4]\\d{7}$)/,\n 'ar-AE': /^((\\+?971)|0)?5[024568]\\d{7}$/,\n 'ar-BH': /^(\\+?973)?(3|6)\\d{7}$/,\n 'ar-DZ': /^(\\+?213|0)(5|6|7)\\d{8}$/,\n 'ar-LB': /^(\\+?961)?((3|81)\\d{6}|7\\d{7})$/,\n 'ar-EG': /^((\\+?20)|0)?1[0125]\\d{8}$/,\n 'ar-IQ': /^(\\+?964|0)?7[0-9]\\d{8}$/,\n 'ar-JO': /^(\\+?962|0)?7[789]\\d{7}$/,\n 'ar-KW': /^(\\+?965)[569]\\d{7}$/,\n 'ar-LY': /^((\\+?218)|0)?(9[1-6]\\d{7}|[1-8]\\d{7,9})$/,\n 'ar-MA': /^(?:(?:\\+|00)212|0)[5-7]\\d{8}$/,\n 'ar-OM': /^((\\+|00)968)?(9[1-9])\\d{6}$/,\n 'ar-PS': /^(\\+?970|0)5[6|9](\\d{7})$/,\n 'ar-SA': /^(!?(\\+?966)|0)?5\\d{8}$/,\n 'ar-SY': /^(!?(\\+?963)|0)?9\\d{8}$/,\n 'ar-TN': /^(\\+?216)?[2459]\\d{7}$/,\n 'az-AZ': /^(\\+994|0)(5[015]|7[07]|99)\\d{7}$/,\n 'bs-BA': /^((((\\+|00)3876)|06))((([0-3]|[5-6])\\d{6})|(4\\d{7}))$/,\n 'be-BY': /^(\\+?375)?(24|25|29|33|44)\\d{7}$/,\n 'bg-BG': /^(\\+?359|0)?8[789]\\d{7}$/,\n 'bn-BD': /^(\\+?880|0)1[13456789][0-9]{8}$/,\n 'ca-AD': /^(\\+376)?[346]\\d{5}$/,\n 'cs-CZ': /^(\\+?420)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/,\n 'da-DK': /^(\\+?45)?\\s?\\d{2}\\s?\\d{2}\\s?\\d{2}\\s?\\d{2}$/,\n 'de-DE': /^((\\+49|0)[1|3])([0|5][0-45-9]\\d|6([23]|0\\d?)|7([0-57-9]|6\\d))\\d{7,9}$/,\n 'de-AT': /^(\\+43|0)\\d{1,4}\\d{3,12}$/,\n 'de-CH': /^(\\+41|0)([1-9])\\d{1,9}$/,\n 'de-LU': /^(\\+352)?((6\\d1)\\d{6})$/,\n 'dv-MV': /^(\\+?960)?(7[2-9]|91|9[3-9])\\d{7}$/,\n 'el-GR': /^(\\+?30|0)?(69\\d{8})$/,\n 'en-AU': /^(\\+?61|0)4\\d{8}$/,\n 'en-BM': /^(\\+?1)?441(((3|7)\\d{6}$)|(5[0-3][0-9]\\d{4}$)|(59\\d{5}))/,\n 'en-GB': /^(\\+?44|0)7\\d{9}$/,\n 'en-GG': /^(\\+?44|0)1481\\d{6}$/,\n 'en-GH': /^(\\+233|0)(20|50|24|54|27|57|26|56|23|28|55|59)\\d{7}$/,\n 'en-GY': /^(\\+592|0)6\\d{6}$/,\n 'en-HK': /^(\\+?852[-\\s]?)?[456789]\\d{3}[-\\s]?\\d{4}$/,\n 'en-MO': /^(\\+?853[-\\s]?)?[6]\\d{3}[-\\s]?\\d{4}$/,\n 'en-IE': /^(\\+?353|0)8[356789]\\d{7}$/,\n 'en-IN': /^(\\+?91|0)?[6789]\\d{9}$/,\n 'en-KE': /^(\\+?254|0)(7|1)\\d{8}$/,\n 'en-KI': /^((\\+686|686)?)?( )?((6|7)(2|3|8)[0-9]{6})$/,\n 'en-MT': /^(\\+?356|0)?(99|79|77|21|27|22|25)[0-9]{6}$/,\n 'en-MU': /^(\\+?230|0)?\\d{8}$/,\n 'en-NA': /^(\\+?264|0)(6|8)\\d{7}$/,\n 'en-NG': /^(\\+?234|0)?[789]\\d{9}$/,\n 'en-NZ': /^(\\+?64|0)[28]\\d{7,9}$/,\n 'en-PK': /^((00|\\+)?92|0)3[0-6]\\d{8}$/,\n 'en-PH': /^(09|\\+639)\\d{9}$/,\n 'en-RW': /^(\\+?250|0)?[7]\\d{8}$/,\n 'en-SG': /^(\\+65)?[3689]\\d{7}$/,\n 'en-SL': /^(\\+?232|0)\\d{8}$/,\n 'en-TZ': /^(\\+?255|0)?[67]\\d{8}$/,\n 'en-UG': /^(\\+?256|0)?[7]\\d{8}$/,\n 'en-US': /^((\\+1|1)?( |-)?)?(\\([2-9][0-9]{2}\\)|[2-9][0-9]{2})( |-)?([2-9][0-9]{2}( |-)?[0-9]{4})$/,\n 'en-ZA': /^(\\+?27|0)\\d{9}$/,\n 'en-ZM': /^(\\+?26)?09[567]\\d{7}$/,\n 'en-ZW': /^(\\+263)[0-9]{9}$/,\n 'en-BW': /^(\\+?267)?(7[1-8]{1})\\d{6}$/,\n 'es-AR': /^\\+?549(11|[2368]\\d)\\d{8}$/,\n 'es-BO': /^(\\+?591)?(6|7)\\d{7}$/,\n 'es-CO': /^(\\+?57)?3(0(0|1|2|4|5)|1\\d|2[0-4]|5(0|1))\\d{7}$/,\n 'es-CL': /^(\\+?56|0)[2-9]\\d{1}\\d{7}$/,\n 'es-CR': /^(\\+506)?[2-8]\\d{7}$/,\n 'es-CU': /^(\\+53|0053)?5\\d{7}/,\n 'es-DO': /^(\\+?1)?8[024]9\\d{7}$/,\n 'es-HN': /^(\\+?504)?[9|8]\\d{7}$/,\n 'es-EC': /^(\\+?593|0)([2-7]|9[2-9])\\d{7}$/,\n 'es-ES': /^(\\+?34)?[6|7]\\d{8}$/,\n 'es-PE': /^(\\+?51)?9\\d{8}$/,\n 'es-MX': /^(\\+?52)?(1|01)?\\d{10,11}$/,\n 'es-PA': /^(\\+?507)\\d{7,8}$/,\n 'es-PY': /^(\\+?595|0)9[9876]\\d{7}$/,\n 'es-SV': /^(\\+?503)?[67]\\d{7}$/,\n 'es-UY': /^(\\+598|0)9[1-9][\\d]{6}$/,\n 'es-VE': /^(\\+?58)?(2|4)\\d{9}$/,\n 'et-EE': /^(\\+?372)?\\s?(5|8[1-4])\\s?([0-9]\\s?){6,7}$/,\n 'fa-IR': /^(\\+?98[\\-\\s]?|0)9[0-39]\\d[\\-\\s]?\\d{3}[\\-\\s]?\\d{4}$/,\n 'fi-FI': /^(\\+?358|0)\\s?(4(0|1|2|4|5|6)?|50)\\s?(\\d\\s?){4,8}\\d$/,\n 'fj-FJ': /^(\\+?679)?\\s?\\d{3}\\s?\\d{4}$/,\n 'fo-FO': /^(\\+?298)?\\s?\\d{2}\\s?\\d{2}\\s?\\d{2}$/,\n 'fr-BF': /^(\\+226|0)[67]\\d{7}$/,\n 'fr-CM': /^(\\+?237)6[0-9]{8}$/,\n 'fr-FR': /^(\\+?33|0)[67]\\d{8}$/,\n 'fr-GF': /^(\\+?594|0|00594)[67]\\d{8}$/,\n 'fr-GP': /^(\\+?590|0|00590)[67]\\d{8}$/,\n 'fr-MQ': /^(\\+?596|0|00596)[67]\\d{8}$/,\n 'fr-PF': /^(\\+?689)?8[789]\\d{6}$/,\n 'fr-RE': /^(\\+?262|0|00262)[67]\\d{8}$/,\n 'he-IL': /^(\\+972|0)([23489]|5[012345689]|77)[1-9]\\d{6}$/,\n 'hu-HU': /^(\\+?36|06)(20|30|31|50|70)\\d{7}$/,\n 'id-ID': /^(\\+?62|0)8(1[123456789]|2[1238]|3[1238]|5[12356789]|7[78]|9[56789]|8[123456789])([\\s?|\\d]{5,11})$/,\n 'it-IT': /^(\\+?39)?\\s?3\\d{2} ?\\d{6,7}$/,\n 'it-SM': /^((\\+378)|(0549)|(\\+390549)|(\\+3780549))?6\\d{5,9}$/,\n 'ja-JP': /^(\\+81[ \\-]?(\\(0\\))?|0)[6789]0[ \\-]?\\d{4}[ \\-]?\\d{4}$/,\n 'ka-GE': /^(\\+?995)?(5|79)\\d{7}$/,\n 'kk-KZ': /^(\\+?7|8)?7\\d{9}$/,\n 'kl-GL': /^(\\+?299)?\\s?\\d{2}\\s?\\d{2}\\s?\\d{2}$/,\n 'ko-KR': /^((\\+?82)[ \\-]?)?0?1([0|1|6|7|8|9]{1})[ \\-]?\\d{3,4}[ \\-]?\\d{4}$/,\n 'lt-LT': /^(\\+370|8)\\d{8}$/,\n 'lv-LV': /^(\\+?371)2\\d{7}$/,\n 'ms-MY': /^(\\+?6?01){1}(([0145]{1}(\\-|\\s)?\\d{7,8})|([236789]{1}(\\s|\\-)?\\d{7}))$/,\n 'mz-MZ': /^(\\+?258)?8[234567]\\d{7}$/,\n 'nb-NO': /^(\\+?47)?[49]\\d{7}$/,\n 'ne-NP': /^(\\+?977)?9[78]\\d{8}$/,\n 'nl-BE': /^(\\+?32|0)4\\d{8}$/,\n 'nl-NL': /^(((\\+|00)?31\\(0\\))|((\\+|00)?31)|0)6{1}\\d{8}$/,\n 'nn-NO': /^(\\+?47)?[49]\\d{7}$/,\n 'pl-PL': /^(\\+?48)? ?[5-8]\\d ?\\d{3} ?\\d{2} ?\\d{2}$/,\n 'pt-BR': /^((\\+?55\\ ?[1-9]{2}\\ ?)|(\\+?55\\ ?\\([1-9]{2}\\)\\ ?)|(0[1-9]{2}\\ ?)|(\\([1-9]{2}\\)\\ ?)|([1-9]{2}\\ ?))((\\d{4}\\-?\\d{4})|(9[2-9]{1}\\d{3}\\-?\\d{4}))$/,\n 'pt-PT': /^(\\+?351)?9[1236]\\d{7}$/,\n 'pt-AO': /^(\\+244)\\d{9}$/,\n 'ro-RO': /^(\\+?4?0)\\s?7\\d{2}(\\/|\\s|\\.|\\-)?\\d{3}(\\s|\\.|\\-)?\\d{3}$/,\n 'ru-RU': /^(\\+?7|8)?9\\d{9}$/,\n 'si-LK': /^(?:0|94|\\+94)?(7(0|1|2|4|5|6|7|8)( |-)?)\\d{7}$/,\n 'sl-SI': /^(\\+386\\s?|0)(\\d{1}\\s?\\d{3}\\s?\\d{2}\\s?\\d{2}|\\d{2}\\s?\\d{3}\\s?\\d{3})$/,\n 'sk-SK': /^(\\+?421)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/,\n 'sq-AL': /^(\\+355|0)6[789]\\d{6}$/,\n 'sr-RS': /^(\\+3816|06)[- \\d]{5,9}$/,\n 'sv-SE': /^(\\+?46|0)[\\s\\-]?7[\\s\\-]?[02369]([\\s\\-]?\\d){7}$/,\n 'tg-TJ': /^(\\+?992)?[5][5]\\d{7}$/,\n 'th-TH': /^(\\+66|66|0)\\d{9}$/,\n 'tr-TR': /^(\\+?90|0)?5\\d{9}$/,\n 'tk-TM': /^(\\+993|993|8)\\d{8}$/,\n 'uk-UA': /^(\\+?38|8)?0\\d{9}$/,\n 'uz-UZ': /^(\\+?998)?(6[125-79]|7[1-69]|88|9\\d)\\d{7}$/,\n 'vi-VN': /^((\\+?84)|0)((3([2-9]))|(5([25689]))|(7([0|6-9]))|(8([1-9]))|(9([0-9])))([0-9]{7})$/,\n 'zh-CN': /^((\\+|00)86)?(1[3-9]|9[28])\\d{9}$/,\n 'zh-TW': /^(\\+?886\\-?|0)?9\\d{8}$/,\n 'dz-BT': /^(\\+?975|0)?(17|16|77|02)\\d{6}$/\n};\n/* eslint-enable max-len */\n// aliases\n\nphones['en-CA'] = phones['en-US'];\nphones['fr-CA'] = phones['en-CA'];\nphones['fr-BE'] = phones['nl-BE'];\nphones['zh-HK'] = phones['en-HK'];\nphones['zh-MO'] = phones['en-MO'];\nphones['ga-IE'] = phones['en-IE'];\nphones['fr-CH'] = phones['de-CH'];\nphones['it-CH'] = phones['fr-CH'];\n\nfunction isMobilePhone(str, locale, options) {\n (0, _assertString.default)(str);\n\n if (options && options.strictMode && !str.startsWith('+')) {\n return false;\n }\n\n if (Array.isArray(locale)) {\n return locale.some(function (key) {\n // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes\n // istanbul ignore else\n if (phones.hasOwnProperty(key)) {\n var phone = phones[key];\n\n if (phone.test(str)) {\n return true;\n }\n }\n\n return false;\n });\n } else if (locale in phones) {\n return phones[locale].test(str); // alias falsey locale as 'any'\n } else if (!locale || locale === 'any') {\n for (var key in phones) {\n // istanbul ignore else\n if (phones.hasOwnProperty(key)) {\n var phone = phones[key];\n\n if (phone.test(str)) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n throw new Error(\"Invalid locale '\".concat(locale, \"'\"));\n}\n\nvar locales = Object.keys(phones);\nexports.locales = locales;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isMobilePhoneValidator from 'validator/lib/isMobilePhone';\nexport var IS_MOBILE_PHONE = 'isMobilePhone';\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(value, locale, options) {\n return typeof value === 'string' && isMobilePhoneValidator(value, locale, options);\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(locale, options, validationOptions) {\n return ValidateBy({\n name: IS_MOBILE_PHONE,\n constraints: [locale, options],\n validator: {\n validate: function (value, args) { return isMobilePhone(value, args.constraints[0], args.constraints[1]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a phone number'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsMobilePhone.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISO31661Alpha2;\nexports.CountryCodes = void 0;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// from https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\nvar validISO31661Alpha2CountriesCodes = new Set(['AD', 'AE', 'AF', 'AG', 'AI', 'AL', 'AM', 'AO', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AW', 'AX', 'AZ', 'BA', 'BB', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BL', 'BM', 'BN', 'BO', 'BQ', 'BR', 'BS', 'BT', 'BV', 'BW', 'BY', 'BZ', 'CA', 'CC', 'CD', 'CF', 'CG', 'CH', 'CI', 'CK', 'CL', 'CM', 'CN', 'CO', 'CR', 'CU', 'CV', 'CW', 'CX', 'CY', 'CZ', 'DE', 'DJ', 'DK', 'DM', 'DO', 'DZ', 'EC', 'EE', 'EG', 'EH', 'ER', 'ES', 'ET', 'FI', 'FJ', 'FK', 'FM', 'FO', 'FR', 'GA', 'GB', 'GD', 'GE', 'GF', 'GG', 'GH', 'GI', 'GL', 'GM', 'GN', 'GP', 'GQ', 'GR', 'GS', 'GT', 'GU', 'GW', 'GY', 'HK', 'HM', 'HN', 'HR', 'HT', 'HU', 'ID', 'IE', 'IL', 'IM', 'IN', 'IO', 'IQ', 'IR', 'IS', 'IT', 'JE', 'JM', 'JO', 'JP', 'KE', 'KG', 'KH', 'KI', 'KM', 'KN', 'KP', 'KR', 'KW', 'KY', 'KZ', 'LA', 'LB', 'LC', 'LI', 'LK', 'LR', 'LS', 'LT', 'LU', 'LV', 'LY', 'MA', 'MC', 'MD', 'ME', 'MF', 'MG', 'MH', 'MK', 'ML', 'MM', 'MN', 'MO', 'MP', 'MQ', 'MR', 'MS', 'MT', 'MU', 'MV', 'MW', 'MX', 'MY', 'MZ', 'NA', 'NC', 'NE', 'NF', 'NG', 'NI', 'NL', 'NO', 'NP', 'NR', 'NU', 'NZ', 'OM', 'PA', 'PE', 'PF', 'PG', 'PH', 'PK', 'PL', 'PM', 'PN', 'PR', 'PS', 'PT', 'PW', 'PY', 'QA', 'RE', 'RO', 'RS', 'RU', 'RW', 'SA', 'SB', 'SC', 'SD', 'SE', 'SG', 'SH', 'SI', 'SJ', 'SK', 'SL', 'SM', 'SN', 'SO', 'SR', 'SS', 'ST', 'SV', 'SX', 'SY', 'SZ', 'TC', 'TD', 'TF', 'TG', 'TH', 'TJ', 'TK', 'TL', 'TM', 'TN', 'TO', 'TR', 'TT', 'TV', 'TW', 'TZ', 'UA', 'UG', 'UM', 'US', 'UY', 'UZ', 'VA', 'VC', 'VE', 'VG', 'VI', 'VN', 'VU', 'WF', 'WS', 'YE', 'YT', 'ZA', 'ZM', 'ZW']);\n\nfunction isISO31661Alpha2(str) {\n (0, _assertString.default)(str);\n return validISO31661Alpha2CountriesCodes.has(str.toUpperCase());\n}\n\nvar CountryCodes = validISO31661Alpha2CountriesCodes;\nexports.CountryCodes = CountryCodes;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isISO31661Alpha2Validator from 'validator/lib/isISO31661Alpha2';\nexport var IS_ISO31661_ALPHA_2 = 'isISO31661Alpha2';\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) {\n return typeof value === 'string' && isISO31661Alpha2Validator(value);\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) {\n return ValidateBy({\n name: IS_ISO31661_ALPHA_2,\n validator: {\n validate: function (value, args) { return isISO31661Alpha2(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid ISO31661 Alpha2 code'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsISO31661Alpha2.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISO31661Alpha3;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// from https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3\nvar validISO31661Alpha3CountriesCodes = new Set(['AFG', 'ALA', 'ALB', 'DZA', 'ASM', 'AND', 'AGO', 'AIA', 'ATA', 'ATG', 'ARG', 'ARM', 'ABW', 'AUS', 'AUT', 'AZE', 'BHS', 'BHR', 'BGD', 'BRB', 'BLR', 'BEL', 'BLZ', 'BEN', 'BMU', 'BTN', 'BOL', 'BES', 'BIH', 'BWA', 'BVT', 'BRA', 'IOT', 'BRN', 'BGR', 'BFA', 'BDI', 'KHM', 'CMR', 'CAN', 'CPV', 'CYM', 'CAF', 'TCD', 'CHL', 'CHN', 'CXR', 'CCK', 'COL', 'COM', 'COG', 'COD', 'COK', 'CRI', 'CIV', 'HRV', 'CUB', 'CUW', 'CYP', 'CZE', 'DNK', 'DJI', 'DMA', 'DOM', 'ECU', 'EGY', 'SLV', 'GNQ', 'ERI', 'EST', 'ETH', 'FLK', 'FRO', 'FJI', 'FIN', 'FRA', 'GUF', 'PYF', 'ATF', 'GAB', 'GMB', 'GEO', 'DEU', 'GHA', 'GIB', 'GRC', 'GRL', 'GRD', 'GLP', 'GUM', 'GTM', 'GGY', 'GIN', 'GNB', 'GUY', 'HTI', 'HMD', 'VAT', 'HND', 'HKG', 'HUN', 'ISL', 'IND', 'IDN', 'IRN', 'IRQ', 'IRL', 'IMN', 'ISR', 'ITA', 'JAM', 'JPN', 'JEY', 'JOR', 'KAZ', 'KEN', 'KIR', 'PRK', 'KOR', 'KWT', 'KGZ', 'LAO', 'LVA', 'LBN', 'LSO', 'LBR', 'LBY', 'LIE', 'LTU', 'LUX', 'MAC', 'MKD', 'MDG', 'MWI', 'MYS', 'MDV', 'MLI', 'MLT', 'MHL', 'MTQ', 'MRT', 'MUS', 'MYT', 'MEX', 'FSM', 'MDA', 'MCO', 'MNG', 'MNE', 'MSR', 'MAR', 'MOZ', 'MMR', 'NAM', 'NRU', 'NPL', 'NLD', 'NCL', 'NZL', 'NIC', 'NER', 'NGA', 'NIU', 'NFK', 'MNP', 'NOR', 'OMN', 'PAK', 'PLW', 'PSE', 'PAN', 'PNG', 'PRY', 'PER', 'PHL', 'PCN', 'POL', 'PRT', 'PRI', 'QAT', 'REU', 'ROU', 'RUS', 'RWA', 'BLM', 'SHN', 'KNA', 'LCA', 'MAF', 'SPM', 'VCT', 'WSM', 'SMR', 'STP', 'SAU', 'SEN', 'SRB', 'SYC', 'SLE', 'SGP', 'SXM', 'SVK', 'SVN', 'SLB', 'SOM', 'ZAF', 'SGS', 'SSD', 'ESP', 'LKA', 'SDN', 'SUR', 'SJM', 'SWZ', 'SWE', 'CHE', 'SYR', 'TWN', 'TJK', 'TZA', 'THA', 'TLS', 'TGO', 'TKL', 'TON', 'TTO', 'TUN', 'TUR', 'TKM', 'TCA', 'TUV', 'UGA', 'UKR', 'ARE', 'GBR', 'USA', 'UMI', 'URY', 'UZB', 'VUT', 'VEN', 'VNM', 'VGB', 'VIR', 'WLF', 'ESH', 'YEM', 'ZMB', 'ZWE']);\n\nfunction isISO31661Alpha3(str) {\n (0, _assertString.default)(str);\n return validISO31661Alpha3CountriesCodes.has(str.toUpperCase());\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isISO31661Alpha3Validator from 'validator/lib/isISO31661Alpha3';\nexport var IS_ISO31661_ALPHA_3 = 'isISO31661Alpha3';\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) {\n return typeof value === 'string' && isISO31661Alpha3Validator(value);\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) {\n return ValidateBy({\n name: IS_ISO31661_ALPHA_3,\n validator: {\n validate: function (value, args) { return isISO31661Alpha3(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid ISO31661 Alpha3 code'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsISO31661Alpha3.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMongoId;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _isHexadecimal = _interopRequireDefault(require(\"./isHexadecimal\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isMongoId(str) {\n (0, _assertString.default)(str);\n return (0, _isHexadecimal.default)(str) && str.length === 24;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isMongoIdValidator from 'validator/lib/isMongoId';\nexport var IS_MONGO_ID = 'isMongoId';\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) {\n return typeof value === 'string' && isMongoIdValidator(value);\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) {\n return ValidateBy({\n name: IS_MONGO_ID,\n validator: {\n validate: function (value, args) { return isMongoId(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a mongodb id'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsMongoId.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMultibyte;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint-disable no-control-regex */\nvar multibyte = /[^\\x00-\\x7F]/;\n/* eslint-enable no-control-regex */\n\nfunction isMultibyte(str) {\n (0, _assertString.default)(str);\n return multibyte.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isMultibyteValidator from 'validator/lib/isMultibyte';\nexport var IS_MULTIBYTE = 'isMultibyte';\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) {\n return typeof value === 'string' && isMultibyteValidator(value);\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) {\n return ValidateBy({\n name: IS_MULTIBYTE,\n validator: {\n validate: function (value, args) { return isMultibyte(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain one or more multibyte chars'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsMultibyte.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isSurrogatePair;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar surrogatePair = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/;\n\nfunction isSurrogatePair(str) {\n (0, _assertString.default)(str);\n return surrogatePair.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isSurrogatePairValidator from 'validator/lib/isSurrogatePair';\nexport var IS_SURROGATE_PAIR = 'isSurrogatePair';\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) {\n return typeof value === 'string' && isSurrogatePairValidator(value);\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) {\n return ValidateBy({\n name: IS_SURROGATE_PAIR,\n validator: {\n validate: function (value, args) { return isSurrogatePair(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain any surrogate pairs chars'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsSurrogatePair.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isURL;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _isFQDN = _interopRequireDefault(require(\"./isFQDN\"));\n\nvar _isIP = _interopRequireDefault(require(\"./isIP\"));\n\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n/*\noptions for isURL method\n\nrequire_protocol - if set as true isURL will return false if protocol is not present in the URL\nrequire_valid_protocol - isURL will check if the URL's protocol is present in the protocols option\nprotocols - valid protocols can be modified with this option\nrequire_host - if set as false isURL will not check if host is present in the URL\nrequire_port - if set as true isURL will check if port is present in the URL\nallow_protocol_relative_urls - if set as true protocol relative URLs will be allowed\nvalidate_length - if set as false isURL will skip string length validation (IE maximum is 2083)\n\n*/\nvar default_url_options = {\n protocols: ['http', 'https', 'ftp'],\n require_tld: true,\n require_protocol: false,\n require_host: true,\n require_port: false,\n require_valid_protocol: true,\n allow_underscores: false,\n allow_trailing_dot: false,\n allow_protocol_relative_urls: false,\n allow_fragments: true,\n allow_query_components: true,\n validate_length: true\n};\nvar wrapped_ipv6 = /^\\[([^\\]]+)\\](?::([0-9]+))?$/;\n\nfunction isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n}\n\nfunction checkHost(host, matches) {\n for (var i = 0; i < matches.length; i++) {\n var match = matches[i];\n\n if (host === match || isRegExp(match) && match.test(host)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isURL(url, options) {\n (0, _assertString.default)(url);\n\n if (!url || /[\\s<>]/.test(url)) {\n return false;\n }\n\n if (url.indexOf('mailto:') === 0) {\n return false;\n }\n\n options = (0, _merge.default)(options, default_url_options);\n\n if (options.validate_length && url.length >= 2083) {\n return false;\n }\n\n if (!options.allow_fragments && url.includes('#')) {\n return false;\n }\n\n if (!options.allow_query_components && (url.includes('?') || url.includes('&'))) {\n return false;\n }\n\n var protocol, auth, host, hostname, port, port_str, split, ipv6;\n split = url.split('#');\n url = split.shift();\n split = url.split('?');\n url = split.shift();\n split = url.split('://');\n\n if (split.length > 1) {\n protocol = split.shift().toLowerCase();\n\n if (options.require_valid_protocol && options.protocols.indexOf(protocol) === -1) {\n return false;\n }\n } else if (options.require_protocol) {\n return false;\n } else if (url.substr(0, 2) === '//') {\n if (!options.allow_protocol_relative_urls) {\n return false;\n }\n\n split[0] = url.substr(2);\n }\n\n url = split.join('://');\n\n if (url === '') {\n return false;\n }\n\n split = url.split('/');\n url = split.shift();\n\n if (url === '' && !options.require_host) {\n return true;\n }\n\n split = url.split('@');\n\n if (split.length > 1) {\n if (options.disallow_auth) {\n return false;\n }\n\n if (split[0] === '') {\n return false;\n }\n\n auth = split.shift();\n\n if (auth.indexOf(':') >= 0 && auth.split(':').length > 2) {\n return false;\n }\n\n var _auth$split = auth.split(':'),\n _auth$split2 = _slicedToArray(_auth$split, 2),\n user = _auth$split2[0],\n password = _auth$split2[1];\n\n if (user === '' && password === '') {\n return false;\n }\n }\n\n hostname = split.join('@');\n port_str = null;\n ipv6 = null;\n var ipv6_match = hostname.match(wrapped_ipv6);\n\n if (ipv6_match) {\n host = '';\n ipv6 = ipv6_match[1];\n port_str = ipv6_match[2] || null;\n } else {\n split = hostname.split(':');\n host = split.shift();\n\n if (split.length) {\n port_str = split.join(':');\n }\n }\n\n if (port_str !== null && port_str.length > 0) {\n port = parseInt(port_str, 10);\n\n if (!/^[0-9]+$/.test(port_str) || port <= 0 || port > 65535) {\n return false;\n }\n } else if (options.require_port) {\n return false;\n }\n\n if (options.host_whitelist) {\n return checkHost(host, options.host_whitelist);\n }\n\n if (!(0, _isIP.default)(host) && !(0, _isFQDN.default)(host, options) && (!ipv6 || !(0, _isIP.default)(ipv6, 6))) {\n return false;\n }\n\n host = host || ipv6;\n\n if (options.host_blacklist && checkHost(host, options.host_blacklist)) {\n return false;\n }\n\n return true;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isUrlValidator from 'validator/lib/isURL';\nexport var IS_URL = 'isUrl';\n/**\n * Checks if the string is an url.\n * If given value is not a string, then it returns false.\n */\nexport function isURL(value, options) {\n return typeof value === 'string' && isUrlValidator(value, options);\n}\n/**\n * Checks if the string is an url.\n * If given value is not a string, then it returns false.\n */\nexport function IsUrl(options, validationOptions) {\n return ValidateBy({\n name: IS_URL,\n constraints: [options],\n validator: {\n validate: function (value, args) { return isURL(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an URL address'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsUrl.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isUUID;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar uuid = {\n 1: /^[0-9A-F]{8}-[0-9A-F]{4}-1[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,\n 2: /^[0-9A-F]{8}-[0-9A-F]{4}-2[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,\n 3: /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,\n 4: /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,\n 5: /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,\n all: /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i\n};\n\nfunction isUUID(str, version) {\n (0, _assertString.default)(str);\n var pattern = uuid[![undefined, null].includes(version) ? version : 'all'];\n return !!pattern && pattern.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isUuidValidator from 'validator/lib/isUUID';\nexport var IS_UUID = 'isUuid';\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, version) {\n return typeof value === 'string' && isUuidValidator(value, version);\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(version, validationOptions) {\n return ValidateBy({\n name: IS_UUID,\n constraints: [version],\n validator: {\n validate: function (value, args) { return isUUID(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a UUID'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsUUID.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_FIREBASE_PUSH_ID = 'IsFirebasePushId';\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) {\n var webSafeRegex = /^[a-zA-Z0-9_-]*$/;\n return typeof value === 'string' && value.length === 20 && webSafeRegex.test(value);\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) {\n return ValidateBy({\n name: IS_FIREBASE_PUSH_ID,\n validator: {\n validate: function (value, args) { return isFirebasePushId(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a Firebase Push Id'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsFirebasePushId.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isUppercase;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isUppercase(str) {\n (0, _assertString.default)(str);\n return str === str.toUpperCase();\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isUppercaseValidator from 'validator/lib/isUppercase';\nexport var IS_UPPERCASE = 'isUppercase';\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) {\n return typeof value === 'string' && isUppercaseValidator(value);\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) {\n return ValidateBy({\n name: IS_UPPERCASE,\n validator: {\n validate: function (value, args) { return isUppercase(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be uppercase'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsUppercase.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isLength;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-disable prefer-rest-params */\nfunction isLength(str, options) {\n (0, _assertString.default)(str);\n var min;\n var max;\n\n if (_typeof(options) === 'object') {\n min = options.min || 0;\n max = options.max;\n } else {\n // backwards compatibility: isLength(str, min [, max])\n min = arguments[1] || 0;\n max = arguments[2];\n }\n\n var surrogatePairs = str.match(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g) || [];\n var len = str.length - surrogatePairs.length;\n return len >= min && (typeof max === 'undefined' || len <= max);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isLengthValidator from 'validator/lib/isLength';\nexport var IS_LENGTH = 'isLength';\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, min, max) {\n return typeof value === 'string' && isLengthValidator(value, { min: min, max: max });\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, max, validationOptions) {\n return ValidateBy({\n name: IS_LENGTH,\n constraints: [min, max],\n validator: {\n validate: function (value, args) { return length(value, args.constraints[0], args.constraints[1]); },\n defaultMessage: buildMessage(function (eachPrefix, args) {\n var isMinLength = args.constraints[0] !== null && args.constraints[0] !== undefined;\n var isMaxLength = args.constraints[1] !== null && args.constraints[1] !== undefined;\n if (isMinLength && (!args.value || args.value.length < args.constraints[0])) {\n return eachPrefix + '$property must be longer than or equal to $constraint1 characters';\n }\n else if (isMaxLength && args.value.length > args.constraints[1]) {\n return eachPrefix + '$property must be shorter than or equal to $constraint2 characters';\n }\n return (eachPrefix +\n '$property must be longer than or equal to $constraint1 and shorter than or equal to $constraint2 characters');\n }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=Length.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isLengthValidator from 'validator/lib/isLength';\nexport var MAX_LENGTH = 'maxLength';\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, max) {\n return typeof value === 'string' && isLengthValidator(value, { min: 0, max: max });\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, validationOptions) {\n return ValidateBy({\n name: MAX_LENGTH,\n constraints: [max],\n validator: {\n validate: function (value, args) { return maxLength(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be shorter than or equal to $constraint1 characters'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=MaxLength.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isLengthValidator from 'validator/lib/isLength';\nexport var MIN_LENGTH = 'minLength';\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, min) {\n return typeof value === 'string' && isLengthValidator(value, { min: min });\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, validationOptions) {\n return ValidateBy({\n name: MIN_LENGTH,\n constraints: [min],\n validator: {\n validate: function (value, args) { return minLength(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be longer than or equal to $constraint1 characters'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=MinLength.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = matches;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction matches(str, pattern, modifiers) {\n (0, _assertString.default)(str);\n\n if (Object.prototype.toString.call(pattern) !== '[object RegExp]') {\n pattern = new RegExp(pattern, modifiers);\n }\n\n return pattern.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport matchesValidator from 'validator/lib/matches';\nexport var MATCHES = 'matches';\nexport function matches(value, pattern, modifiers) {\n return typeof value === 'string' && matchesValidator(value, pattern, modifiers);\n}\nexport function Matches(pattern, modifiersOrAnnotationOptions, validationOptions) {\n var modifiers;\n if (modifiersOrAnnotationOptions && modifiersOrAnnotationOptions instanceof Object && !validationOptions) {\n validationOptions = modifiersOrAnnotationOptions;\n }\n else {\n modifiers = modifiersOrAnnotationOptions;\n }\n return ValidateBy({\n name: MATCHES,\n constraints: [pattern, modifiers],\n validator: {\n validate: function (value, args) { return matches(value, args.constraints[0], args.constraints[1]); },\n defaultMessage: buildMessage(function (eachPrefix, args) { return eachPrefix + '$property must match $constraint1 regular expression'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=Matches.js.map","// This file is a workaround for a bug in web browsers' \"native\"\n// ES6 importing system which is uncapable of importing \"*.json\" files.\n// https://github.com/catamphetamine/libphonenumber-js/issues/239\nexport default {\"version\":4,\"country_calling_codes\":{\"1\":[\"US\",\"AG\",\"AI\",\"AS\",\"BB\",\"BM\",\"BS\",\"CA\",\"DM\",\"DO\",\"GD\",\"GU\",\"JM\",\"KN\",\"KY\",\"LC\",\"MP\",\"MS\",\"PR\",\"SX\",\"TC\",\"TT\",\"VC\",\"VG\",\"VI\"],\"7\":[\"RU\",\"KZ\"],\"20\":[\"EG\"],\"27\":[\"ZA\"],\"30\":[\"GR\"],\"31\":[\"NL\"],\"32\":[\"BE\"],\"33\":[\"FR\"],\"34\":[\"ES\"],\"36\":[\"HU\"],\"39\":[\"IT\",\"VA\"],\"40\":[\"RO\"],\"41\":[\"CH\"],\"43\":[\"AT\"],\"44\":[\"GB\",\"GG\",\"IM\",\"JE\"],\"45\":[\"DK\"],\"46\":[\"SE\"],\"47\":[\"NO\",\"SJ\"],\"48\":[\"PL\"],\"49\":[\"DE\"],\"51\":[\"PE\"],\"52\":[\"MX\"],\"53\":[\"CU\"],\"54\":[\"AR\"],\"55\":[\"BR\"],\"56\":[\"CL\"],\"57\":[\"CO\"],\"58\":[\"VE\"],\"60\":[\"MY\"],\"61\":[\"AU\",\"CC\",\"CX\"],\"62\":[\"ID\"],\"63\":[\"PH\"],\"64\":[\"NZ\"],\"65\":[\"SG\"],\"66\":[\"TH\"],\"81\":[\"JP\"],\"82\":[\"KR\"],\"84\":[\"VN\"],\"86\":[\"CN\"],\"90\":[\"TR\"],\"91\":[\"IN\"],\"92\":[\"PK\"],\"93\":[\"AF\"],\"94\":[\"LK\"],\"95\":[\"MM\"],\"98\":[\"IR\"],\"211\":[\"SS\"],\"212\":[\"MA\",\"EH\"],\"213\":[\"DZ\"],\"216\":[\"TN\"],\"218\":[\"LY\"],\"220\":[\"GM\"],\"221\":[\"SN\"],\"222\":[\"MR\"],\"223\":[\"ML\"],\"224\":[\"GN\"],\"225\":[\"CI\"],\"226\":[\"BF\"],\"227\":[\"NE\"],\"228\":[\"TG\"],\"229\":[\"BJ\"],\"230\":[\"MU\"],\"231\":[\"LR\"],\"232\":[\"SL\"],\"233\":[\"GH\"],\"234\":[\"NG\"],\"235\":[\"TD\"],\"236\":[\"CF\"],\"237\":[\"CM\"],\"238\":[\"CV\"],\"239\":[\"ST\"],\"240\":[\"GQ\"],\"241\":[\"GA\"],\"242\":[\"CG\"],\"243\":[\"CD\"],\"244\":[\"AO\"],\"245\":[\"GW\"],\"246\":[\"IO\"],\"247\":[\"AC\"],\"248\":[\"SC\"],\"249\":[\"SD\"],\"250\":[\"RW\"],\"251\":[\"ET\"],\"252\":[\"SO\"],\"253\":[\"DJ\"],\"254\":[\"KE\"],\"255\":[\"TZ\"],\"256\":[\"UG\"],\"257\":[\"BI\"],\"258\":[\"MZ\"],\"260\":[\"ZM\"],\"261\":[\"MG\"],\"262\":[\"RE\",\"YT\"],\"263\":[\"ZW\"],\"264\":[\"NA\"],\"265\":[\"MW\"],\"266\":[\"LS\"],\"267\":[\"BW\"],\"268\":[\"SZ\"],\"269\":[\"KM\"],\"290\":[\"SH\",\"TA\"],\"291\":[\"ER\"],\"297\":[\"AW\"],\"298\":[\"FO\"],\"299\":[\"GL\"],\"350\":[\"GI\"],\"351\":[\"PT\"],\"352\":[\"LU\"],\"353\":[\"IE\"],\"354\":[\"IS\"],\"355\":[\"AL\"],\"356\":[\"MT\"],\"357\":[\"CY\"],\"358\":[\"FI\",\"AX\"],\"359\":[\"BG\"],\"370\":[\"LT\"],\"371\":[\"LV\"],\"372\":[\"EE\"],\"373\":[\"MD\"],\"374\":[\"AM\"],\"375\":[\"BY\"],\"376\":[\"AD\"],\"377\":[\"MC\"],\"378\":[\"SM\"],\"380\":[\"UA\"],\"381\":[\"RS\"],\"382\":[\"ME\"],\"383\":[\"XK\"],\"385\":[\"HR\"],\"386\":[\"SI\"],\"387\":[\"BA\"],\"389\":[\"MK\"],\"420\":[\"CZ\"],\"421\":[\"SK\"],\"423\":[\"LI\"],\"500\":[\"FK\"],\"501\":[\"BZ\"],\"502\":[\"GT\"],\"503\":[\"SV\"],\"504\":[\"HN\"],\"505\":[\"NI\"],\"506\":[\"CR\"],\"507\":[\"PA\"],\"508\":[\"PM\"],\"509\":[\"HT\"],\"590\":[\"GP\",\"BL\",\"MF\"],\"591\":[\"BO\"],\"592\":[\"GY\"],\"593\":[\"EC\"],\"594\":[\"GF\"],\"595\":[\"PY\"],\"596\":[\"MQ\"],\"597\":[\"SR\"],\"598\":[\"UY\"],\"599\":[\"CW\",\"BQ\"],\"670\":[\"TL\"],\"672\":[\"NF\"],\"673\":[\"BN\"],\"674\":[\"NR\"],\"675\":[\"PG\"],\"676\":[\"TO\"],\"677\":[\"SB\"],\"678\":[\"VU\"],\"679\":[\"FJ\"],\"680\":[\"PW\"],\"681\":[\"WF\"],\"682\":[\"CK\"],\"683\":[\"NU\"],\"685\":[\"WS\"],\"686\":[\"KI\"],\"687\":[\"NC\"],\"688\":[\"TV\"],\"689\":[\"PF\"],\"690\":[\"TK\"],\"691\":[\"FM\"],\"692\":[\"MH\"],\"850\":[\"KP\"],\"852\":[\"HK\"],\"853\":[\"MO\"],\"855\":[\"KH\"],\"856\":[\"LA\"],\"880\":[\"BD\"],\"886\":[\"TW\"],\"960\":[\"MV\"],\"961\":[\"LB\"],\"962\":[\"JO\"],\"963\":[\"SY\"],\"964\":[\"IQ\"],\"965\":[\"KW\"],\"966\":[\"SA\"],\"967\":[\"YE\"],\"968\":[\"OM\"],\"970\":[\"PS\"],\"971\":[\"AE\"],\"972\":[\"IL\"],\"973\":[\"BH\"],\"974\":[\"QA\"],\"975\":[\"BT\"],\"976\":[\"MN\"],\"977\":[\"NP\"],\"992\":[\"TJ\"],\"993\":[\"TM\"],\"994\":[\"AZ\"],\"995\":[\"GE\"],\"996\":[\"KG\"],\"998\":[\"UZ\"]},\"countries\":{\"AC\":[\"247\",\"00\",\"(?:[01589]\\\\d|[46])\\\\d{4}\",[5,6]],\"AD\":[\"376\",\"00\",\"(?:1|6\\\\d)\\\\d{7}|[135-9]\\\\d{5}\",[6,8,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[135-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]]],\"AE\":[\"971\",\"00\",\"(?:[4-7]\\\\d|9[0-689])\\\\d{7}|800\\\\d{2,9}|[2-4679]\\\\d{7}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{2,9})\",\"$1 $2\",[\"60|8\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[236]|[479][2-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{5})\",\"$1 $2 $3\",[\"[479]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],\"AF\":[\"93\",\"00\",\"[2-7]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"]],\"0\"],\"AG\":[\"1\",\"011\",\"(?:268|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([457]\\\\d{6})$\",\"268$1\",0,\"268\"],\"AI\":[\"1\",\"011\",\"(?:264|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2457]\\\\d{6})$\",\"264$1\",0,\"264\"],\"AL\":[\"355\",\"00\",\"(?:700\\\\d\\\\d|900)\\\\d{3}|8\\\\d{5,7}|(?:[2-5]|6\\\\d)\\\\d{7}\",[6,7,8,9],[[\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"80|9\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2358][2-5]|4\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[23578]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"]],\"0\"],\"AM\":[\"374\",\"00\",\"(?:[1-489]\\\\d|55|60|77)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]0\"],\"0 $1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2|3[12]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"1|47\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[3-9]\"],\"0$1\"]],\"0\"],\"AO\":[\"244\",\"00\",\"[29]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[29]\"]]]],\"AR\":[\"54\",\"00\",\"(?:11|[89]\\\\d\\\\d)\\\\d{8}|[2368]\\\\d{9}\",[10,11],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2-$3\",[\"2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])\",\"2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"1\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[68]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[23]\"],\"0$1\",1],[\"(\\\\d)(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9(?:2[2-469]|3[3-578])\",\"9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))\",\"9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 15-$3-$4\",[\"91\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9\"],\"0$1\",0,\"$1 $2 $3-$4\"]],\"0\",0,\"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?\",\"9$1\"],\"AS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|684|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([267]\\\\d{6})$\",\"684$1\",0,\"684\"],\"AT\":[\"43\",\"00\",\"1\\\\d{3,12}|2\\\\d{6,12}|43(?:(?:0\\\\d|5[02-9])\\\\d{3,9}|2\\\\d{4,5}|[3467]\\\\d{4}|8\\\\d{4,6}|9\\\\d{4,7})|5\\\\d{4,12}|8\\\\d{7,12}|9\\\\d{8,12}|(?:[367]\\\\d|4[0-24-9])\\\\d{4,11}\",[4,5,6,7,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{3,12})\",\"$1 $2\",[\"1(?:11|[2-9])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})\",\"$1 $2\",[\"517\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"5[079]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,10})\",\"$1 $2\",[\"(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,9})\",\"$1 $2\",[\"[2-467]|5[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,7})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],\"AU\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{7}(?:\\\\d(?:\\\\d{2})?)?|8[0-24-9]\\\\d{7})|[2-478]\\\\d{8}|1\\\\d{4,7}\",[5,6,7,8,9,10,12],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"16\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"16\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"14|4\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[2378]\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:30|[89])\"]]],\"0\",0,\"0|(183[12])\",0,0,0,[[\"(?:(?:2(?:[0-26-9]\\\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\\\d|2[0-8]))\\\\d{3}|8(?:51(?:0(?:0[03-9]|[12479]\\\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\\\d|7[89]|9[0-4]))|(?:6[0-8]|[78]\\\\d)\\\\d{3}|9(?:[02-9]\\\\d{3}|1(?:(?:[0-58]\\\\d|6[0135-9])\\\\d|7(?:0[0-24-9]|[1-9]\\\\d)|9(?:[0-46-9]\\\\d|5[0-79])))))\\\\d{3}\",[9]],[\"4(?:83[0-38]|93[0-6])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,[\"163\\\\d{2,6}\",[5,6,7,8,9]],[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"AW\":[\"297\",\"00\",\"(?:[25-79]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[25-9]\"]]]],\"AX\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"2\\\\d{4,9}|35\\\\d{4,5}|(?:60\\\\d\\\\d|800)\\\\d{4,6}|7\\\\d{5,11}|(?:[14]\\\\d|3[0-46-9]|50)\\\\d{4,8}\",[5,6,7,8,9,10,11,12],0,\"0\",0,0,0,0,\"18\",0,\"00\"],\"AZ\":[\"994\",\"00\",\"365\\\\d{6}|(?:[124579]\\\\d|60|88)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[28]|2|365|46\",\"1[28]|2|365[45]|46\",\"1[28]|2|365(?:4|5[02])|46\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[13-9]\"],\"0$1\"]],\"0\"],\"BA\":[\"387\",\"00\",\"6\\\\d{8}|(?:[35689]\\\\d|49|70)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[1-3]|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2-$3\",[\"[3-5]|6[56]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\"]],\"0\"],\"BB\":[\"1\",\"011\",\"(?:246|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"246$1\",0,\"246\"],\"BD\":[\"880\",\"00\",\"[1-469]\\\\d{9}|8[0-79]\\\\d{7,8}|[2-79]\\\\d{8}|[2-9]\\\\d{7}|[3-9]\\\\d{6}|[57-9]\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1-$2\",[\"31[5-8]|[459]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1-$2\",[\"3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:28|4[14]|5)|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,6})\",\"$1-$2\",[\"[13-9]|22\"],\"0$1\"],[\"(\\\\d)(\\\\d{7,8})\",\"$1-$2\",[\"2\"],\"0$1\"]],\"0\"],\"BE\":[\"32\",\"00\",\"4\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:80|9)0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[239]|4[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[15-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4\"],\"0$1\"]],\"0\"],\"BF\":[\"226\",\"00\",\"[025-7]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[025-7]\"]]]],\"BG\":[\"359\",\"00\",\"[2-7]\\\\d{6,7}|[89]\\\\d{6,8}|2\\\\d{5}\",[6,7,8,9],[[\"(\\\\d)(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"43[1-6]|70[1-9]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:70|8)0\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"43[1-7]|7\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[48]|9[08]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"BH\":[\"973\",\"00\",\"[136-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[13679]|8[047]\"]]]],\"BI\":[\"257\",\"00\",\"(?:[267]\\\\d|31)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2367]\"]]]],\"BJ\":[\"229\",\"00\",\"[25689]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[25689]\"]]]],\"BL\":[\"590\",\"00\",\"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:2[7-9]|5[12]|87)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"976[01]\\\\d{5}\"]]],\"BM\":[\"1\",\"011\",\"(?:441|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-8]\\\\d{6})$\",\"441$1\",0,\"441\"],\"BN\":[\"673\",\"00\",\"[2-578]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-578]\"]]]],\"BO\":[\"591\",\"00(?:1\\\\d)?\",\"(?:[2-467]\\\\d\\\\d|8001)\\\\d{5}\",[8,9],[[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[23]|4[46]\"]],[\"(\\\\d{8})\",\"$1\",[\"[67]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\",0,\"0(1\\\\d)?\"],\"BQ\":[\"599\",\"00\",\"(?:[34]1|7\\\\d)\\\\d{5}\",[7],0,0,0,0,0,0,\"[347]\"],\"BR\":[\"55\",\"00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)\",\"(?:[1-46-9]\\\\d\\\\d|5(?:[0-46-9]\\\\d|5[0-24679]))\\\\d{8}|[1-9]\\\\d{9}|[3589]\\\\d{8}|[34]\\\\d{7}\",[8,9,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"300|4(?:0[02]|37)\",\"4(?:02|37)0|[34]00\"]],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:[358]|90)0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1 $2-$3\",[\"[16][1-9]|[2-57-9]\"],\"($1)\"]],\"0\",0,\"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\\\d{10,11}))?\",\"$2\"],\"BS\":[\"1\",\"011\",\"(?:242|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([3-8]\\\\d{6})$\",\"242$1\",0,\"242\"],\"BT\":[\"975\",\"00\",\"[17]\\\\d{7}|[2-8]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-68]|7[246]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[67]|7\"]]]],\"BW\":[\"267\",\"00\",\"(?:0800|(?:[37]|800)\\\\d)\\\\d{6}|(?:[2-6]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[24-6]|3[15-79]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"BY\":[\"375\",\"810\",\"(?:[12]\\\\d|33|44|902)\\\\d{7}|8(?:0[0-79]\\\\d{5,7}|[1-7]\\\\d{9})|8(?:1[0-489]|[5-79]\\\\d)\\\\d{7}|8[1-79]\\\\d{6,7}|8[0-79]\\\\d{5}|8\\\\d{5}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"800\"],\"8 $1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,4})\",\"$1 $2 $3\",[\"800\"],\"8 $1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{3})\",\"$1 $2-$3\",[\"1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])\",\"1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"1(?:[56]|7[467])|2[1-3]\"],\"8 0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-4]\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"8 $1\"]],\"8\",0,\"0|80?\",0,0,0,0,\"8~10\"],\"BZ\":[\"501\",\"00\",\"(?:0800\\\\d|[2-8])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-8]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"0\"]]]],\"CA\":[\"1\",\"011\",\"(?:[2-8]\\\\d|90)\\\\d{8}\",[10],0,\"1\",0,0,0,0,0,[[\"(?:2(?:04|[23]6|[48]9|50)|3(?:06|43|6[578])|4(?:03|1[68]|3[178]|50|74)|5(?:06|1[49]|48|79|8[17])|6(?:04|13|39|47|72)|7(?:0[59]|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\\\d{6}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|(?:5(?:00|2[12]|33|44|66|77|88)|622)[2-9]\\\\d{6}\"],0,0,0,[\"600[2-9]\\\\d{6}\"]]],\"CC\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"0|([59]\\\\d{7})$\",\"8$1\",0,0,[[\"8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\\\d|70[23]|959))\\\\d{3}\",[9]],[\"4(?:83[0-38]|93[0-6])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"CD\":[\"243\",\"00\",\"[189]\\\\d{8}|[1-68]\\\\d{6}\",[7,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[1-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\"],\"CF\":[\"236\",\"00\",\"(?:[27]\\\\d{3}|8776)\\\\d{4}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[278]\"]]]],\"CG\":[\"242\",\"00\",\"(?:0\\\\d\\\\d|222|800)\\\\d{6}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[02]\"]]]],\"CH\":[\"41\",\"00\",\"8\\\\d{11}|[2-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8[047]|90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]|81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"8\"],\"0$1\"]],\"0\"],\"CI\":[\"225\",\"00\",\"[02]\\\\d{9}\",[10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d)(\\\\d{5})\",\"$1 $2 $3 $4\",[\"2\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"0\"]]]],\"CK\":[\"682\",\"00\",\"[2-578]\\\\d{4}\",[5],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"[2-578]\"]]]],\"CL\":[\"56\",\"(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0\",\"12300\\\\d{6}|6\\\\d{9,10}|[2-9]\\\\d{8}\",[9,10,11],[[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"219\",\"2196\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[1-3]\"],\"($1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9[2-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"60|8\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"60\"]]]],\"CM\":[\"237\",\"00\",\"[26]\\\\d{8}|88\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"88\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[26]|88\"]]]],\"CN\":[\"86\",\"00|1(?:[12]\\\\d|79)\\\\d\\\\d00\",\"1[127]\\\\d{8,9}|2\\\\d{9}(?:\\\\d{2})?|[12]\\\\d{6,7}|86\\\\d{6}|(?:1[03-689]\\\\d|6)\\\\d{7,9}|(?:[3-579]\\\\d|8[0-57-9])\\\\d{6,9}\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5,6})\",\"$1 $2\",[\"(?:10|2[0-57-9])[19]\",\"(?:10|2[0-57-9])(?:10|9[56])\",\"(?:10|2[0-57-9])(?:100|9[56])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]\",\"(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))[19]\",\"85[23](?:10|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:10|9[56])\",\"85[23](?:100|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100|9[56])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:4|80)0\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|2(?:[02-57-9]|1[1-9])\",\"10|2(?:[02-57-9]|1[1-9])\",\"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-578]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"1[3-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"[12]\"],\"0$1\",1]],\"0\",0,\"0|(1(?:[12]\\\\d|79)\\\\d\\\\d)\",0,0,0,0,\"00\"],\"CO\":[\"57\",\"00(?:4(?:[14]4|56)|[579])\",\"(?:(?:1\\\\d|[36])\\\\d{3}|9101)\\\\d{6}|[124-8]\\\\d{7}\",[8,10,11],[[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[146][2-9]|[2578]\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"6\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"[39]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{7})\",\"$1-$2-$3\",[\"1\"],\"0$1\",0,\"$1 $2 $3\"]],\"0\",0,\"0([3579]|4(?:[14]4|56))?\"],\"CR\":[\"506\",\"00\",\"(?:8\\\\d|90)\\\\d{8}|(?:[24-8]\\\\d{3}|3005)\\\\d{4}\",[8,10],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[3-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[89]\"]]],0,0,\"(19(?:0[0-2468]|1[09]|20|66|77|99))\"],\"CU\":[\"53\",\"119\",\"[27]\\\\d{6,7}|[34]\\\\d{5,7}|(?:5|8\\\\d\\\\d)\\\\d{7}\",[6,7,8,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"2[1-4]|[34]\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{6,7})\",\"$1 $2\",[\"7\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"5\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"8\"],\"0$1\"]],\"0\"],\"CV\":[\"238\",\"0\",\"(?:[2-59]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2-589]\"]]]],\"CW\":[\"599\",\"00\",\"(?:[34]1|60|(?:7|9\\\\d)\\\\d)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[3467]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9[4-8]\"]]],0,0,0,0,0,\"[69]\"],\"CX\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"0|([59]\\\\d{7})$\",\"8$1\",0,0,[[\"8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\\\d|7(?:0[01]|1[0-2])|958))\\\\d{3}\",[9]],[\"4(?:83[0-38]|93[0-6])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"CY\":[\"357\",\"00\",\"(?:[279]\\\\d|[58]0)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[257-9]\"]]]],\"CZ\":[\"420\",\"00\",\"(?:[2-578]\\\\d|60)\\\\d{7}|9\\\\d{8,11}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]|9[015-7]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"96\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]]],\"DE\":[\"49\",\"00\",\"[2579]\\\\d{5,14}|49(?:[34]0|69|8\\\\d)\\\\d\\\\d?|49(?:37|49|60|7[089]|9\\\\d)\\\\d{1,3}|49(?:1\\\\d|2[02-9]|3[2-689]|7[1-7])\\\\d{1,8}|(?:1|[368]\\\\d|4[0-8])\\\\d{3,13}|49(?:[05]\\\\d|[23]1|[46][1-8])\\\\d{1,9}\",[4,5,6,7,8,9,10,11,12,13,14,15],[[\"(\\\\d{2})(\\\\d{3,13})\",\"$1 $2\",[\"3[02]|40|[68]9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,12})\",\"$1 $2\",[\"2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\",\"2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2,11})\",\"$1 $2\",[\"[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]\",\"[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"138\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{2,10})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,11})\",\"$1 $2\",[\"181\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{4,10})\",\"$1 $2 $3\",[\"1(?:3|80)|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"1[67]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,12})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"185\",\"1850\",\"18500\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"18[68]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"15[0568]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"15[1279]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{8})\",\"$1 $2\",[\"18\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{7,8})\",\"$1 $2 $3\",[\"1(?:6[023]|7)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{7})\",\"$1 $2 $3\",[\"15[279]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{8})\",\"$1 $2 $3\",[\"15\"],\"0$1\"]],\"0\"],\"DJ\":[\"253\",\"00\",\"(?:2\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[27]\"]]]],\"DK\":[\"45\",\"00\",\"[2-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-9]\"]]]],\"DM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|767|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-7]\\\\d{6})$\",\"767$1\",0,\"767\"],\"DO\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"8001|8[024]9\"],\"DZ\":[\"213\",\"00\",\"(?:[1-4]|[5-79]\\\\d|80)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-8]\"],\"0$1\"]],\"0\"],\"EC\":[\"593\",\"00\",\"1\\\\d{9,10}|(?:[2-7]|9\\\\d)\\\\d{7}\",[8,9,10,11],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[2-7]\"],\"(0$1)\",0,\"$1-$2-$3\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"EE\":[\"372\",\"00\",\"8\\\\d{9}|[4578]\\\\d{7}|(?:[3-8]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88\",\"[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88\"]],[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[45]|8(?:00|[1-49])\",\"[45]|8(?:00[1-9]|[1-49])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"EG\":[\"20\",\"00\",\"[189]\\\\d{8,9}|[24-6]\\\\d{8}|[135]\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{7,8})\",\"$1 $2\",[\"[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,7})\",\"$1 $2\",[\"1[35]|[4-6]|8[2468]|9[235-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[189]\"],\"0$1\"]],\"0\"],\"EH\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],0,\"0\",0,0,0,0,\"528[89]\"],\"ER\":[\"291\",\"00\",\"[178]\\\\d{6}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[178]\"],\"0$1\"]],\"0\"],\"ES\":[\"34\",\"00\",\"[5-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]00\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-9]\"]]]],\"ET\":[\"251\",\"00\",\"(?:11|[2-59]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-59]\"],\"0$1\"]],\"0\"],\"FI\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"[1-35689]\\\\d{4}|7\\\\d{10,11}|(?:[124-7]\\\\d|3[0-46-9])\\\\d{8}|[1-9]\\\\d{5,8}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d)(\\\\d{4,9})\",\"$1 $2\",[\"[2568][1-8]|3(?:0[1-9]|[1-9])|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[12]00|[368]|70[07-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,8})\",\"$1 $2\",[\"[1245]|7[135]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,10})\",\"$1 $2\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,\"1[03-79]|[2-9]\",0,\"00\"],\"FJ\":[\"679\",\"0(?:0|52)\",\"45\\\\d{5}|(?:0800\\\\d|[235-9])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[235-9]|45\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]]],0,0,0,0,0,0,0,\"00\"],\"FK\":[\"500\",\"00\",\"[2-7]\\\\d{4}\",[5]],\"FM\":[\"691\",\"00\",\"(?:[39]\\\\d\\\\d|820)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[389]\"]]]],\"FO\":[\"298\",\"00\",\"[2-9]\\\\d{5}\",[6],[[\"(\\\\d{6})\",\"$1\",[\"[2-9]\"]]],0,0,\"(10(?:01|[12]0|88))\"],\"FR\":[\"33\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0 $1\"],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[1-79]\"],\"0$1\"]],\"0\"],\"GA\":[\"241\",\"00\",\"(?:[067]\\\\d|11)\\\\d{6}|[2-7]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"11|[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]]],0,0,\"0(11\\\\d{6}|60\\\\d{6}|61\\\\d{6}|6[256]\\\\d{6}|7[47]\\\\d{6}|76\\\\d{6})\",\"$1\"],\"GB\":[\"44\",\"00\",\"[1-357-9]\\\\d{9}|[18]\\\\d{8}|8\\\\d{6}\",[7,9,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"800\",\"8001\",\"80011\",\"800111\",\"8001111\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"845\",\"8454\",\"84546\",\"845464\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"1(?:38|5[23]|69|76|94)\",\"1(?:(?:38|69)7|5(?:24|39)|768|946)\",\"1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"1(?:[2-69][02-9]|[78])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[25]|7(?:0|6[02-9])\",\"[25]|7(?:0|6(?:[03-9]|2[356]))\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1389]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:1(?:1(?:3(?:[0-58]\\\\d\\\\d|73[0235])|4(?:[0-5]\\\\d\\\\d|69[7-9]|70[0359])|(?:5[0-26-9]|[78][0-49])\\\\d\\\\d|6(?:[0-4]\\\\d\\\\d|50[0-24-69]))|2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\\\d)\\\\d\\\\d|1(?:[0-7]\\\\d\\\\d|8(?:[02]\\\\d|1[0-278])))|(?:3(?:0\\\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\\\d\\\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\\\d{3})\\\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\\\d)|76\\\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\\\d|7[4-79])|295[5-7]|35[34]\\\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\\\d{3}\",[9,10]],[\"7(?:457[0-57-9]|700[01]|911[028])\\\\d{5}|7(?:[1-3]\\\\d\\\\d|4(?:[0-46-9]\\\\d|5[0-689])|5(?:0[0-8]|[13-9]\\\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\\\d|8[02-9]|9[0-689])|8(?:[014-9]\\\\d|[23][0-8])|9(?:[024-9]\\\\d|1[02-9]|3[0-689]))\\\\d{6}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[2-49]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-2]|2[356]|34|4[01347]|5[49]|6[0-369]|77|81|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]],0,\" x\"],\"GD\":[\"1\",\"011\",\"(?:473|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"473$1\",0,\"473\"],\"GE\":[\"995\",\"00\",\"(?:[3-57]\\\\d\\\\d|800)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"32\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[57]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[348]\"],\"0$1\"]],\"0\"],\"GF\":[\"594\",\"00\",\"(?:[56]94|80\\\\d|976)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"GG\":[\"44\",\"00\",\"(?:1481|[357-9]\\\\d{3})\\\\d{6}|8\\\\d{6}(?:\\\\d{2})?\",[7,9,10],0,\"0\",0,\"0|([25-9]\\\\d{5})$\",\"1481$1\",0,0,[[\"1481[25-9]\\\\d{5}\",[10]],[\"7(?:(?:781|839)\\\\d|911[17])\\\\d{5}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[0-3]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-2]|2[356]|34|4[01347]|5[49]|6[0-369]|77|81|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]]],\"GH\":[\"233\",\"00\",\"(?:[235]\\\\d{3}|800)\\\\d{5}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[235]\"],\"0$1\"]],\"0\"],\"GI\":[\"350\",\"00\",\"(?:[25]\\\\d\\\\d|606)\\\\d{5}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2\"]]]],\"GL\":[\"299\",\"00\",\"(?:19|[2-689]\\\\d|70)\\\\d{4}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"19|[2-9]\"]]]],\"GM\":[\"220\",\"00\",\"[2-9]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"GN\":[\"224\",\"00\",\"722\\\\d{6}|(?:3|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"3\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[67]\"]]]],\"GP\":[\"590\",\"00\",\"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"590(?:0[1-68]|1[0-2]|2[0-68]|3[1289]|4[0-24-9]|5[3-579]|6[0189]|7[08]|8[0-689]|9\\\\d)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"976[01]\\\\d{5}\"]]],\"GQ\":[\"240\",\"00\",\"222\\\\d{6}|(?:3\\\\d|55|[89]0)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235]\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[89]\"]]]],\"GR\":[\"30\",\"00\",\"5005000\\\\d{3}|8\\\\d{9,11}|(?:[269]\\\\d|70)\\\\d{8}\",[10,11,12],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"21|7\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2689]\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{5})\",\"$1 $2 $3\",[\"8\"]]]],\"GT\":[\"502\",\"00\",\"(?:1\\\\d{3}|[2-7])\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],\"GU\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|671|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([3-9]\\\\d{6})$\",\"671$1\",0,\"671\"],\"GW\":[\"245\",\"00\",\"[49]\\\\d{8}|4\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"40\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"]]]],\"GY\":[\"592\",\"001\",\"(?:862\\\\d|9008)\\\\d{3}|(?:[2-46]\\\\d|77)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46-9]\"]]]],\"HK\":[\"852\",\"00(?:30|5[09]|[126-9]?)\",\"8[0-46-9]\\\\d{6,7}|9\\\\d{4}(?:\\\\d(?:\\\\d(?:\\\\d{4})?)?)?|(?:[235-79]\\\\d|46)\\\\d{6}\",[5,6,7,8,9,11],[[\"(\\\\d{3})(\\\\d{2,5})\",\"$1 $2\",[\"900\",\"9003\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[1-4]|9(?:0[1-9]|[1-8])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]],0,0,0,0,0,0,0,\"00\"],\"HN\":[\"504\",\"00\",\"8\\\\d{10}|[237-9]\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[237-9]\"]]]],\"HR\":[\"385\",\"00\",\"(?:[24-69]\\\\d|3[0-79])\\\\d{7}|80\\\\d{5,7}|[1-79]\\\\d{7}|6\\\\d{5,6}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"6[01]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-5]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"HT\":[\"509\",\"00\",\"[2-489]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-489]\"]]]],\"HU\":[\"36\",\"00\",\"[235-7]\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"06 $1\"]],\"06\"],\"ID\":[\"62\",\"00[89]\",\"(?:(?:00[1-9]|8\\\\d)\\\\d{4}|[1-36])\\\\d{6}|00\\\\d{10}|[1-9]\\\\d{8,10}|[2-9]\\\\d{7}\",[7,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"15\"]],[\"(\\\\d{2})(\\\\d{5,9})\",\"$1 $2\",[\"2[124]|[36]1\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,7})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,8})\",\"$1 $2\",[\"[2-79]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{3})\",\"$1-$2-$3\",[\"8[1-35-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6,8})\",\"$1 $2\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"804\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"80\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"]],\"0\"],\"IE\":[\"353\",\"00\",\"(?:1\\\\d|[2569])\\\\d{6,8}|4\\\\d{6,9}|7\\\\d{8}|8\\\\d{8,9}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"2[24-9]|47|58|6[237-9]|9[35-9]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[45]0\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2569]|4[1-69]|7[14]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"81\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"4\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"IL\":[\"972\",\"0(?:0|1[2-9])\",\"1\\\\d{6}(?:\\\\d{3,5})?|[57]\\\\d{8}|[1-489]\\\\d{7}\",[7,8,9,10,11,12],[[\"(\\\\d{4})(\\\\d{3})\",\"$1-$2\",[\"125\"]],[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"121\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-489]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"12\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1-$2\",[\"159\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"1[7-9]\"]],[\"(\\\\d{3})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3-$4\",[\"15\"]]],\"0\"],\"IM\":[\"44\",\"00\",\"1624\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"0|([25-8]\\\\d{5})$\",\"1624$1\",0,\"74576|(?:16|7[56])24\"],\"IN\":[\"91\",\"00\",\"(?:000800|[2-9]\\\\d\\\\d)\\\\d{7}|1\\\\d{7,12}\",[8,9,10,11,12,13],[[\"(\\\\d{8})\",\"$1\",[\"5(?:0|2[23]|3[03]|[67]1|88)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)\"],0,1],[\"(\\\\d{4})(\\\\d{4,5})\",\"$1 $2\",[\"180\",\"1800\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"140\"],0,1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"11|2[02]|33|4[04]|79[1-7]|80[2-46]\",\"11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])\",\"11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807\",\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]\",\"1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\\\d|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]))[2-7]\"],\"0$1\",1],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"[6-9]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{2,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:6|8[06])\",\"1(?:6|8[06]0)\"],0,1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"18\"],0,1]],\"0\"],\"IO\":[\"246\",\"00\",\"3\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"3\"]]]],\"IQ\":[\"964\",\"00\",\"(?:1|7\\\\d\\\\d)\\\\d{7}|[2-6]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"IR\":[\"98\",\"00\",\"[1-9]\\\\d{9}|(?:[1-8]\\\\d\\\\d|9)\\\\d{3,4}\",[4,5,6,7,10],[[\"(\\\\d{4,5})\",\"$1\",[\"96\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,5})\",\"$1 $2\",[\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-8]\"],\"0$1\"]],\"0\"],\"IS\":[\"354\",\"00|1(?:0(?:01|[12]0)|100)\",\"(?:38\\\\d|[4-9])\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,0,\"00\"],\"IT\":[\"39\",\"00\",\"0\\\\d{5,10}|1\\\\d{8,10}|3(?:[0-8]\\\\d{7,10}|9\\\\d{7,8})|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?\",[6,7,8,9,10,11],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"0[26]\"]],[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"0[13-57-9][0159]|8(?:03|4[17]|9[2-5])\",\"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))\"]],[\"(\\\\d{4})(\\\\d{2,6})\",\"$1 $2\",[\"0(?:[13-579][2-46-8]|8[236-8])\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"894\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[26]|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1(?:44|[679])|[38]\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[13-57-9][0159]|14\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{5})\",\"$1 $2 $3\",[\"0[26]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,[[\"0669[0-79]\\\\d{1,6}|0(?:1(?:[0159]\\\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\\\d\\\\d|3(?:[0159]\\\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\\\d|6[0-8])|7(?:[0159]\\\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\\\d{2,7}\"],[\"3[1-9]\\\\d{8}|3[2-9]\\\\d{7}\",[9,10]],[\"80(?:0\\\\d{3}|3)\\\\d{3}\",[6,9]],[\"(?:0878\\\\d{3}|89(?:2\\\\d|3[04]|4(?:[0-4]|[5-9]\\\\d\\\\d)|5[0-4]))\\\\d\\\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\\\d{6}\",[6,8,9,10]],[\"1(?:78\\\\d|99)\\\\d{6}\",[9,10]],0,0,0,[\"55\\\\d{8}\",[10]],[\"84(?:[08]\\\\d{3}|[17])\\\\d{3}\",[6,9]]]],\"JE\":[\"44\",\"00\",\"1534\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"0|([0-24-8]\\\\d{5})$\",\"1534$1\",0,0,[[\"1534[0-24-8]\\\\d{5}\"],[\"7(?:(?:(?:50|82)9|937)\\\\d|7(?:00[378]|97[7-9]))\\\\d{5}\"],[\"80(?:07(?:35|81)|8901)\\\\d{4}\"],[\"(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\\\d{4}\"],[\"701511\\\\d{4}\"],0,[\"(?:3(?:0(?:07(?:35|81)|8901)|3\\\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\\\d{4})\\\\d{4}\"],[\"76(?:464|652)\\\\d{5}|76(?:0[0-2]|2[356]|34|4[01347]|5[49]|6[0-369]|77|81|9[139])\\\\d{6}\"],[\"56\\\\d{8}\"]]],\"JM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|658|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"658|876\"],\"JO\":[\"962\",\"00\",\"(?:(?:[2689]|7\\\\d)\\\\d|32|53)\\\\d{6}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2356]|87\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"70\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"JP\":[\"81\",\"010\",\"00[1-9]\\\\d{6,14}|[257-9]\\\\d{9}|(?:00|[1-9]\\\\d\\\\d)\\\\d{6}\",[8,9,10,11,12,13,14,15,16,17],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"(?:12|57|99)0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:49|80|9[16])\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[36]|4(?:2[09]|7[01])\",\"[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"[14]|[289][2-9]|5[3-9]|7[2-4679]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"800\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[257-9]\"],\"0$1\"]],\"0\"],\"KE\":[\"254\",\"000\",\"(?:[17]\\\\d\\\\d|900)\\\\d{6}|(?:2|80)0\\\\d{6,7}|[4-6]\\\\d{6,8}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"[24-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[17]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\"],\"KG\":[\"996\",\"00\",\"8\\\\d{9}|(?:[235-8]\\\\d|99)\\\\d{7}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3(?:1[346]|[24-79])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235-79]|88\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d)(\\\\d{2,3})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"KH\":[\"855\",\"00[14-9]\",\"1\\\\d{9}|[1-9]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"KI\":[\"686\",\"00\",\"(?:[37]\\\\d|6[0-79])\\\\d{6}|(?:[2-48]\\\\d|50)\\\\d{3}\",[5,8],0,\"0\"],\"KM\":[\"269\",\"00\",\"[3478]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[3478]\"]]]],\"KN\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-7]\\\\d{6})$\",\"869$1\",0,\"869\"],\"KP\":[\"850\",\"00|99\",\"85\\\\d{6}|(?:19\\\\d|[2-7])\\\\d{7}\",[8,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"]],\"0\"],\"KR\":[\"82\",\"00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))\",\"00[1-9]\\\\d{8,11}|(?:[12]|5\\\\d{3})\\\\d{7}|[13-6]\\\\d{9}|(?:[1-6]\\\\d|80)\\\\d{7}|[3-6]\\\\d{4,5}|(?:00|7)0\\\\d{8}\",[5,6,8,9,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1-$2\",[\"(?:3[1-3]|[46][1-4]|5[1-5])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"1\"]],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"[1346]|5[1-5]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1-$2-$3\",[\"5\"],\"0$1\"]],\"0\",0,\"0(8(?:[1-46-8]|5\\\\d\\\\d))?\"],\"KW\":[\"965\",\"00\",\"18\\\\d{5}|(?:[2569]\\\\d|41)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[169]|2(?:[235]|4[1-35-9])|52\"]],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[245]\"]]]],\"KY\":[\"1\",\"011\",\"(?:345|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"345$1\",0,\"345\"],\"KZ\":[\"7\",\"810\",\"(?:33622|8\\\\d{8})\\\\d{5}|[78]\\\\d{9}\",[10,14],0,\"8\",0,0,0,0,\"33|7\",0,\"8~10\"],\"LA\":[\"856\",\"00\",\"[23]\\\\d{9}|3\\\\d{8}|(?:[235-8]\\\\d|41)\\\\d{6}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2[13]|3[14]|[4-8]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"30[013-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\"],\"LB\":[\"961\",\"00\",\"[27-9]\\\\d{7}|[13-9]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27-9]\"]]],\"0\"],\"LC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|758|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-8]\\\\d{6})$\",\"758$1\",0,\"758\"],\"LI\":[\"423\",\"00\",\"90\\\\d{5}|(?:[2378]|6\\\\d\\\\d)\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[237-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"69\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]],\"0\",0,\"0|(1001)\"],\"LK\":[\"94\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[1-689]\"],\"0$1\"]],\"0\"],\"LR\":[\"231\",\"00\",\"(?:2|33|5\\\\d|77|88)\\\\d{7}|[4-6]\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[4-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3578]\"],\"0$1\"]],\"0\"],\"LS\":[\"266\",\"00\",\"(?:[256]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2568]\"]]]],\"LT\":[\"370\",\"00\",\"(?:[3469]\\\\d|52|[78]0)\\\\d{6}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"52[0-7]\"],\"(8-$1)\",1],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"8 $1\",1],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"37|4(?:[15]|6[1-8])\"],\"(8-$1)\",1],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[3-6]\"],\"(8-$1)\",1]],\"8\",0,\"[08]\"],\"LU\":[\"352\",\"00\",\"35[013-9]\\\\d{4,8}|6\\\\d{8}|35\\\\d{2,4}|(?:[2457-9]\\\\d|3[0-46-9])\\\\d{2,9}\",[4,5,6,7,8,9,10,11],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"20[2-689]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4\",[\"2(?:[0367]|4[3-8])\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"80[01]|90[015]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"20\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4 $5\",[\"2(?:[0367]|4[3-8])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,5})\",\"$1 $2 $3 $4\",[\"[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]\"]]],0,0,\"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\\\d)\"],\"LV\":[\"371\",\"00\",\"(?:[268]\\\\d|90)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[269]|8[01]\"]]]],\"LY\":[\"218\",\"00\",\"[2-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"[2-9]\"],\"0$1\"]],\"0\"],\"MA\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],[[\"(\\\\d{5})(\\\\d{4})\",\"$1-$2\",[\"5(?:29|38)\",\"5(?:29|38)[89]\",\"5(?:29|38)[89]0\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5[45]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1-$2\",[\"5(?:2[2-489]|3[5-9]|9)|892\",\"5(?:2(?:[2-49]|8[235-9])|3[5-9]|9)|892\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"8\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1-$2\",[\"[5-7]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"5(?:29(?:[189][05]|2[29]|3[01])|38[89][05])\\\\d{4}|5(?:2(?:[0-25-7]\\\\d|3[1-578]|4[02-46-8]|8[0235-7]|90)|3(?:[0-47]\\\\d|5[02-9]|6[02-8]|80|9[3-9])|(?:4[067]|5[03])\\\\d)\\\\d{5}\"],[\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:0\\\\d|1[0-5]|6[1267]|7[0-57]))\\\\d{6}\"],[\"80\\\\d{7}\"],[\"89\\\\d{7}\"],0,0,0,0,[\"592(?:4[0-2]|93)\\\\d{4}\"]]],\"MC\":[\"377\",\"00\",\"(?:[3489]|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[389]\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"6\"],\"0$1\"]],\"0\"],\"MD\":[\"373\",\"00\",\"(?:[235-7]\\\\d|[89]0)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"22|3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[25-7]\"],\"0$1\"]],\"0\"],\"ME\":[\"382\",\"00\",\"(?:20|[3-79]\\\\d)\\\\d{6}|80\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"0$1\"]],\"0\"],\"MF\":[\"590\",\"00\",\"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:0[079]|[14]3|[27][79]|30|5[0-268]|87)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"976[01]\\\\d{5}\"]]],\"MG\":[\"261\",\"00\",\"[23]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\",0,\"0|([24-9]\\\\d{6})$\",\"20$1\"],\"MH\":[\"692\",\"011\",\"329\\\\d{4}|(?:[256]\\\\d|45)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-6]\"]]],\"1\"],\"MK\":[\"389\",\"00\",\"[2-578]\\\\d{7}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[347]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[58]\"],\"0$1\"]],\"0\"],\"ML\":[\"223\",\"00\",\"[24-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-9]\"]]]],\"MM\":[\"95\",\"00\",\"1\\\\d{5,7}|95\\\\d{6}|(?:[4-7]|9[0-46-9])\\\\d{6,8}|(?:2|8\\\\d)\\\\d{5,8}\",[6,7,8,9,10],[[\"(\\\\d)(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"16|2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[4-7]|8[1-35]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4,6})\",\"$1 $2 $3\",[\"9(?:2[0-4]|[35-9]|4[137-9])\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"92\"],\"0$1\"],[\"(\\\\d)(\\\\d{5})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"MN\":[\"976\",\"001\",\"[12]\\\\d{7,9}|[57-9]\\\\d{7}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[12]1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"]],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[12]2[1-3]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])\",\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"[12]\"],\"0$1\"]],\"0\"],\"MO\":[\"853\",\"00\",\"0800\\\\d{3}|(?:28|[68]\\\\d)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[268]\"]]]],\"MP\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:67|90)0\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"670$1\",0,\"670\"],\"MQ\":[\"596\",\"00\",\"(?:69|80)\\\\d{7}|(?:59|97)6\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"MR\":[\"222\",\"00\",\"(?:[2-4]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-48]\"]]]],\"MS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|664|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([34]\\\\d{6})$\",\"664$1\",0,\"664\"],\"MT\":[\"356\",\"00\",\"3550\\\\d{4}|(?:[2579]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2357-9]\"]]]],\"MU\":[\"230\",\"0(?:0|[24-7]0|3[03])\",\"(?:5|8\\\\d\\\\d)\\\\d{7}|[2-468]\\\\d{6}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46]|8[013]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"5\"]],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"8\"]]],0,0,0,0,0,0,0,\"020\"],\"MV\":[\"960\",\"0(?:0|19)\",\"(?:800|9[0-57-9]\\\\d)\\\\d{7}|[34679]\\\\d{6}\",[7,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[3467]|9[13-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],0,0,0,0,0,0,0,\"00\"],\"MW\":[\"265\",\"00\",\"(?:[19]\\\\d|[23]1|77|88)\\\\d{7}|1\\\\d{6}\",[7,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[137-9]\"],\"0$1\"]],\"0\"],\"MX\":[\"52\",\"0[09]\",\"1(?:(?:44|99)[1-9]|65[0-689])\\\\d{7}|(?:1(?:[017]\\\\d|[235][1-9]|4[0-35-9]|6[0-46-9]|8[1-79]|9[1-8])|[2-9]\\\\d)\\\\d{8}\",[10,11],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"33|5[56]|81\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-9]\"],0,1],[\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 $3 $4\",[\"1(?:33|5[56]|81)\"],0,1],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 $3 $4\",[\"1\"],0,1]],\"01\",0,\"0(?:[12]|4[45])|1\",0,0,0,0,\"00\"],\"MY\":[\"60\",\"00\",\"1\\\\d{8,9}|(?:3\\\\d|[4-9])\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"[4-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1-$2 $3\",[\"1(?:[02469]|[378][1-9])|8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"3\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3-$4\",[\"1[36-8]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"15\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"1\"],\"0$1\"]],\"0\"],\"MZ\":[\"258\",\"00\",\"(?:2|8\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2|8[2-79]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"NA\":[\"264\",\"00\",\"[68]\\\\d{7,8}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"87\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"NC\":[\"687\",\"00\",\"[2-57-9]\\\\d{5}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1.$2.$3\",[\"[2-57-9]\"]]]],\"NE\":[\"227\",\"00\",\"[027-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"08\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[089]|2[013]|7[04]\"]]]],\"NF\":[\"672\",\"00\",\"[13]\\\\d{5}\",[6],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"1[0-3]\"]],[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"[13]\"]]],0,0,\"([0-258]\\\\d{4})$\",\"3$1\"],\"NG\":[\"234\",\"009\",\"(?:[124-7]|9\\\\d{3})\\\\d{6}|[1-9]\\\\d{7}|[78]\\\\d{9,13}\",[7,8,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"78\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]|9(?:0[3-9]|[1-9])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-7]|8[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})(\\\\d{5,6})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"]],\"0\"],\"NI\":[\"505\",\"00\",\"(?:1800|[25-8]\\\\d{3})\\\\d{4}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[125-8]\"]]]],\"NL\":[\"31\",\"00\",\"(?:[124-7]\\\\d\\\\d|3(?:[02-9]\\\\d|1[0-8]))\\\\d{6}|[89]\\\\d{6,9}|1\\\\d{4,5}\",[5,6,7,8,9,10],[[\"(\\\\d{3})(\\\\d{4,7})\",\"$1 $2\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"66\"],\"0$1\"],[\"(\\\\d)(\\\\d{8})\",\"$1 $2\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-57-9]\"],\"0$1\"]],\"0\"],\"NO\":[\"47\",\"00\",\"(?:0|[2-9]\\\\d{3})\\\\d{4}\",[5,8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[489]|59\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[235-7]\"]]],0,0,0,0,0,\"[02-689]|7[0-8]\"],\"NP\":[\"977\",\"00\",\"(?:1\\\\d|9)\\\\d{9}|[1-9]\\\\d{7}\",[8,10,11],[[\"(\\\\d)(\\\\d{7})\",\"$1-$2\",[\"1[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1-$2\",[\"1[01]|[2-8]|9(?:[1-579]|6[2-6])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"9\"]]],\"0\"],\"NR\":[\"674\",\"00\",\"(?:444|(?:55|8\\\\d)\\\\d|666)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-68]\"]]]],\"NU\":[\"683\",\"00\",\"(?:[47]|888\\\\d)\\\\d{3}\",[4,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"8\"]]]],\"NZ\":[\"64\",\"0(?:0|161)\",\"[29]\\\\d{7,9}|50\\\\d{5}(?:\\\\d{2,3})?|6[0-35-9]\\\\d{6}|7\\\\d{7,8}|8\\\\d{4,9}|(?:11\\\\d|[34])\\\\d{7}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,8})\",\"$1 $2\",[\"8[1-579]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"50[036-8]|[89]0\",\"50(?:[0367]|88)|[89]0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"24|[346]|7[2-57-9]|9[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:10|74)|[59]|80\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1|2[028]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,5})\",\"$1 $2 $3\",[\"2(?:[169]|7[0-35-9])|7|86\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"00\"],\"OM\":[\"968\",\"00\",\"(?:1505|[279]\\\\d{3}|500)\\\\d{4}|800\\\\d{5,6}\",[7,8,9],[[\"(\\\\d{3})(\\\\d{4,6})\",\"$1 $2\",[\"[58]\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[179]\"]]]],\"PA\":[\"507\",\"00\",\"(?:00800|8\\\\d{3})\\\\d{6}|[68]\\\\d{7}|[1-57-9]\\\\d{6}\",[7,8,10,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[1-57-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[68]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]]],\"PE\":[\"51\",\"19(?:1[124]|77|90)00\",\"(?:[14-8]|9\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[4-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"]]],\"0\",0,0,0,0,0,0,0,\" Anexo \"],\"PF\":[\"689\",\"00\",\"4\\\\d{5}(?:\\\\d{2})?|8\\\\d{7,8}\",[6,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4|8[7-9]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]]],\"PG\":[\"675\",\"00|140[1-3]\",\"(?:180|[78]\\\\d{3})\\\\d{4}|(?:[2-589]\\\\d|64)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"18|[2-69]|85\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[78]\"]]],0,0,0,0,0,0,0,\"00\"],\"PH\":[\"63\",\"00\",\"(?:[2-7]|9\\\\d)\\\\d{8}|2\\\\d{5}|(?:1800|8)\\\\d{7,9}\",[6,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"2\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2\",\"3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"346|4(?:27|9[35])|883\",\"3469|4(?:279|9(?:30|56))|8834\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|8[2-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{4})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"1\"]]],\"0\"],\"PK\":[\"92\",\"00\",\"122\\\\d{6}|[24-8]\\\\d{10,11}|9(?:[013-9]\\\\d{8,10}|2(?:[01]\\\\d\\\\d|2(?:[06-8]\\\\d|1[01]))\\\\d{7})|(?:[2-8]\\\\d{3}|92(?:[0-7]\\\\d|8[1-9]))\\\\d{6}|[24-9]\\\\d{8}|[89]\\\\d{7}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,7})\",\"$1 $2 $3\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{6,7})\",\"$1 $2\",[\"2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])\",\"9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{7,8})\",\"$1 $2\",[\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"58\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[24-9]\"],\"(0$1)\"]],\"0\"],\"PL\":[\"48\",\"00\",\"6\\\\d{5}(?:\\\\d{2})?|8\\\\d{9}|[1-9]\\\\d{6}(?:\\\\d{2})?\",[6,7,8,9,10],[[\"(\\\\d{5})\",\"$1\",[\"19\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"11|64\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1\",\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"64\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[2-8]|[2-7]|8[1-79]|9[145]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"8\"]]]],\"PM\":[\"508\",\"00\",\"(?:[45]|80\\\\d\\\\d)\\\\d{5}\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[45]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"PR\":[\"1\",\"011\",\"(?:[589]\\\\d\\\\d|787)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"787|939\"],\"PS\":[\"970\",\"00\",\"[2489]2\\\\d{6}|(?:1\\\\d|5)\\\\d{8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2489]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"PT\":[\"351\",\"00\",\"1693\\\\d{5}|(?:[26-9]\\\\d|30)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2[12]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"16|[236-9]\"]]]],\"PW\":[\"680\",\"01[12]\",\"(?:[24-8]\\\\d\\\\d|345|900)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"PY\":[\"595\",\"00\",\"59\\\\d{4,6}|9\\\\d{5,10}|(?:[2-46-8]\\\\d|5[0-8])\\\\d{4,7}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"[2-9]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{4,5})\",\"$1 $2\",[\"2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"87\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"9(?:[5-79]|8[1-6])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"]]],\"0\"],\"QA\":[\"974\",\"00\",\"[2-7]\\\\d{7}|800\\\\d{4}(?:\\\\d{2})?|2\\\\d{6}\",[7,8,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"2[126]|8\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]\"]]]],\"RE\":[\"262\",\"00\",\"9769\\\\d{5}|(?:26|[68]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2689]\"],\"0$1\"]],\"0\",0,0,0,0,\"26[23]|69|[89]\"],\"RO\":[\"40\",\"00\",\"(?:[2378]\\\\d|90)\\\\d{7}|[23]\\\\d{5}\",[6,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"2[3-6]\",\"2[3-6]\\\\d9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"219|31\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[23]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[237-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\" int \"],\"RS\":[\"381\",\"00\",\"38[02-9]\\\\d{6,9}|6\\\\d{7,9}|90\\\\d{4,8}|38\\\\d{5,6}|(?:7\\\\d\\\\d|800)\\\\d{3,9}|(?:[12]\\\\d|3[0-79])\\\\d{5,10}\",[6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3,9})\",\"$1 $2\",[\"(?:2[389]|39)0|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5,10})\",\"$1 $2\",[\"[1-36]\"],\"0$1\"]],\"0\"],\"RU\":[\"7\",\"810\",\"8\\\\d{13}|[347-9]\\\\d{9}\",[10,14],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-8]|2[1-9])\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2\"],\"8 ($1)\",1],[\"(\\\\d{5})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-68]|2[1-9])\",\"7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))\",\"7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[349]|8(?:[02-7]|1[1-8])\"],\"8 ($1)\",1],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"8\"],\"8 ($1)\"]],\"8\",0,0,0,0,\"3[04-689]|[489]\",0,\"8~10\"],\"RW\":[\"250\",\"00\",\"(?:06|[27]\\\\d\\\\d|[89]00)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"]]],\"0\"],\"SA\":[\"966\",\"00\",\"92\\\\d{7}|(?:[15]|8\\\\d)\\\\d{8}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\"],\"SB\":[\"677\",\"0[01]\",\"(?:[1-6]|[7-9]\\\\d\\\\d)\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7|8[4-9]|9(?:[1-8]|9[0-8])\"]]]],\"SC\":[\"248\",\"010|0[0-2]\",\"8000\\\\d{3}|(?:[249]\\\\d|64)\\\\d{5}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[246]|9[57]\"]]],0,0,0,0,0,0,0,\"00\"],\"SD\":[\"249\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],\"SE\":[\"46\",\"00\",\"(?:[26]\\\\d\\\\d|9)\\\\d{9}|[1-9]\\\\d{8}|[1-689]\\\\d{7}|[1-4689]\\\\d{6}|2\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"20\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"9(?:00|39|44)\"],\"0$1\",0,\"$1 $2\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3\",[\"[12][136]|3[356]|4[0246]|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{3})\",\"$1-$2 $3\",[\"9(?:00|39|44)\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"10|7\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1-$2 $3 $4\",[\"9\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4 $5\",[\"[26]\"],\"0$1\",0,\"$1 $2 $3 $4 $5\"]],\"0\"],\"SG\":[\"65\",\"0[0-3]\\\\d\",\"(?:(?:1\\\\d|8)\\\\d\\\\d|7000)\\\\d{7}|[3689]\\\\d{7}\",[8,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[369]|8(?:0[1-4]|[1-9])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],\"SH\":[\"290\",\"00\",\"(?:[256]\\\\d|8)\\\\d{3}\",[4,5],0,0,0,0,0,0,\"[256]\"],\"SI\":[\"386\",\"00|10(?:22|66|88|99)\",\"[1-7]\\\\d{7}|8\\\\d{4,7}|90\\\\d{4,6}\",[5,6,7,8],[[\"(\\\\d{2})(\\\\d{3,6})\",\"$1 $2\",[\"8[09]|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"59|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37][01]|4[0139]|51|6\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-57]\"],\"(0$1)\"]],\"0\",0,0,0,0,0,0,\"00\"],\"SJ\":[\"47\",\"00\",\"0\\\\d{4}|(?:[489]\\\\d|[57]9)\\\\d{6}\",[5,8],0,0,0,0,0,0,\"79\"],\"SK\":[\"421\",\"00\",\"[2-689]\\\\d{8}|[2-59]\\\\d{6}|[2-5]\\\\d{5}\",[6,7,9],[[\"(\\\\d)(\\\\d{2})(\\\\d{3,4})\",\"$1 $2 $3\",[\"21\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-5][1-8]1\",\"[3-5][1-8]1[67]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[689]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"[3-5]\"],\"0$1\"]],\"0\"],\"SL\":[\"232\",\"00\",\"(?:[237-9]\\\\d|66)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[236-9]\"],\"(0$1)\"]],\"0\"],\"SM\":[\"378\",\"00\",\"(?:0549|[5-7]\\\\d)\\\\d{6}\",[8,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"0\"]]],0,0,\"([89]\\\\d{5})$\",\"0549$1\"],\"SN\":[\"221\",\"00\",\"(?:[378]\\\\d|93)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[379]\"]]]],\"SO\":[\"252\",\"00\",\"[346-9]\\\\d{8}|[12679]\\\\d{7}|[1-5]\\\\d{6}|[1348]\\\\d{5}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"8[125]\"]],[\"(\\\\d{6})\",\"$1\",[\"[134]\"]],[\"(\\\\d)(\\\\d{6})\",\"$1 $2\",[\"[15]|2[0-79]|3[0-46-8]|4[0-7]\"]],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"24|[67]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[3478]|64|90\"]],[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"1|28|6(?:0[5-7]|[1-35-9])|9[2-9]\"]]],\"0\"],\"SR\":[\"597\",\"00\",\"(?:[2-5]|68|[78]\\\\d)\\\\d{5}\",[6,7],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"56\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1-$2\",[\"[2-5]\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[6-8]\"]]]],\"SS\":[\"211\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],\"ST\":[\"239\",\"00\",\"(?:22|9\\\\d)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[29]\"]]]],\"SV\":[\"503\",\"00\",\"[267]\\\\d{7}|[89]00\\\\d{4}(?:\\\\d{4})?\",[7,8,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[89]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[267]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]]],\"SX\":[\"1\",\"011\",\"7215\\\\d{6}|(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|(5\\\\d{6})$\",\"721$1\",0,\"721\"],\"SY\":[\"963\",\"00\",\"[1-39]\\\\d{8}|[1-5]\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-5]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\",1]],\"0\"],\"SZ\":[\"268\",\"00\",\"0800\\\\d{4}|(?:[237]\\\\d|900)\\\\d{6}\",[8,9],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[0237]\"]],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"9\"]]]],\"TA\":[\"290\",\"00\",\"8\\\\d{3}\",[4],0,0,0,0,0,0,\"8\"],\"TC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|649|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-479]\\\\d{6})$\",\"649$1\",0,\"649\"],\"TD\":[\"235\",\"00|16\",\"(?:22|[69]\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2679]\"]]],0,0,0,0,0,0,0,\"00\"],\"TG\":[\"228\",\"00\",\"[279]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[279]\"]]]],\"TH\":[\"66\",\"00[1-9]\",\"(?:001800|[2-57]|[689]\\\\d)\\\\d{7}|1\\\\d{7,9}\",[8,9,10,13],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[13-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"TJ\":[\"992\",\"810\",\"(?:00|[1-57-9]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{6})(\\\\d)(\\\\d{2})\",\"$1 $2 $3\",[\"331\",\"3317\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[34]7|91[78]\"]],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"3[1-5]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[0-57-9]\"]]],0,0,0,0,0,0,0,\"8~10\"],\"TK\":[\"690\",\"00\",\"[2-47]\\\\d{3,6}\",[4,5,6,7]],\"TL\":[\"670\",\"00\",\"7\\\\d{7}|(?:[2-47]\\\\d|[89]0)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-489]|70\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"7\"]]]],\"TM\":[\"993\",\"810\",\"[1-6]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"12\"],\"(8 $1)\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-5]\"],\"(8 $1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"6\"],\"8 $1\"]],\"8\",0,0,0,0,0,0,\"8~10\"],\"TN\":[\"216\",\"00\",\"[2-57-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-57-9]\"]]]],\"TO\":[\"676\",\"00\",\"(?:0800|(?:[5-8]\\\\d\\\\d|999)\\\\d)\\\\d{3}|[2-8]\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1-$2\",[\"[2-4]|50|6[09]|7[0-24-69]|8[05]\"]],[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]]]],\"TR\":[\"90\",\"00\",\"4\\\\d{6}|8\\\\d{11,12}|(?:[2-58]\\\\d\\\\d|900)\\\\d{7}\",[7,10,12,13],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"512|8[01589]|90\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5(?:[0-59]|61)\",\"5(?:[0-59]|616)\",\"5(?:[0-59]|6161)\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24][1-8]|3[1-9]\"],\"(0$1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{6,7})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1]],\"0\"],\"TT\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-46-8]\\\\d{6})$\",\"868$1\",0,\"868\"],\"TV\":[\"688\",\"00\",\"(?:2|7\\\\d\\\\d|90)\\\\d{4}\",[5,6,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]]],\"TW\":[\"886\",\"0(?:0[25-79]|19)\",\"[2-689]\\\\d{8}|7\\\\d{9,10}|[2-8]\\\\d{7}|2\\\\d{6}\",[7,8,9,10,11],[[\"(\\\\d{2})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"202\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[258]0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]\",\"[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\"#\"],\"TZ\":[\"255\",\"00[056]\",\"(?:[26-8]\\\\d|41|90)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[24]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"]],\"0\"],\"UA\":[\"380\",\"00\",\"[89]\\\\d{9}|[3-9]\\\\d{8}\",[9,10],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]\",\"6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[45][0-5]|5(?:0|6[37])|6(?:[12][018]|[36-8])|7|89|9[1-9]|(?:48|57)[0137-9]\",\"4[45][0-5]|5(?:0|6(?:3[14-7]|7))|6(?:[12][018]|[36-8])|7|89|9[1-9]|(?:48|57)[0137-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"[3-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"0~0\"],\"UG\":[\"256\",\"00[057]\",\"800\\\\d{6}|(?:[29]0|[347]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"202\",\"2024\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[27-9]|4(?:6[45]|[7-9])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[34]\"],\"0$1\"]],\"0\"],\"US\":[\"1\",\"011\",\"[2-9]\\\\d{9}\",[10],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"($1) $2-$3\",[\"[2-9]\"],0,1,\"$1-$2-$3\"]],\"1\",0,0,0,0,0,[[\"5(?:05(?:[2-57-9]\\\\d\\\\d|6(?:[0-35-9]\\\\d|44))|82(?:2(?:0[0-3]|[268]2)|3(?:0[02]|33)|4(?:00|4[24]|65|82)|5(?:00|29|83)|6(?:00|66|82)|777|8(?:00|88)|9(?:00|9[89])))\\\\d{4}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[39]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[0-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[0179]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[08]|3[0-289]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01579]|5[12469]|7[0-389]|8[04-69]))[2-9]\\\\d{6}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\"]]],\"UY\":[\"598\",\"0(?:0|1[3-9]\\\\d)\",\"4\\\\d{9}|[1249]\\\\d{7}|(?:[49]\\\\d|80)\\\\d{5}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"405|8|90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[124]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"00\",\" int. \"],\"UZ\":[\"998\",\"810\",\"(?:33|55|[679]\\\\d|88)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[35-9]\"],\"8 $1\"]],\"8\",0,0,0,0,0,0,\"8~10\"],\"VA\":[\"39\",\"00\",\"0\\\\d{5,10}|3[0-8]\\\\d{7,10}|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?|(?:1\\\\d|39)\\\\d{7,8}\",[6,7,8,9,10,11],0,0,0,0,0,0,\"06698\"],\"VC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|784|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-7]\\\\d{6})$\",\"784$1\",0,\"784\"],\"VE\":[\"58\",\"00\",\"[68]00\\\\d{7}|(?:[24]\\\\d|[59]0)\\\\d{8}\",[10],[[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"[24-689]\"],\"0$1\"]],\"0\"],\"VG\":[\"1\",\"011\",\"(?:284|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-578]\\\\d{6})$\",\"284$1\",0,\"284\"],\"VI\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:34|90)0\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"340$1\",0,\"340\"],\"VN\":[\"84\",\"00\",\"[12]\\\\d{9}|[135-9]\\\\d{8}|[16]\\\\d{7}|[16-8]\\\\d{6}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"1\"],0,1],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[69]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[3578]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[48]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\",1]],\"0\"],\"VU\":[\"678\",\"00\",\"[57-9]\\\\d{6}|(?:[238]\\\\d|48)\\\\d{3}\",[5,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"]]]],\"WF\":[\"681\",\"00\",\"(?:40|72)\\\\d{4}|8\\\\d{5}(?:\\\\d{3})?\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[478]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]]],\"WS\":[\"685\",\"0\",\"(?:[2-6]|8\\\\d{5})\\\\d{4}|[78]\\\\d{6}|[68]\\\\d{5}\",[5,6,7,10],[[\"(\\\\d{5})\",\"$1\",[\"[2-5]|6[1-9]\"]],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[68]\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]]],\"XK\":[\"383\",\"00\",\"[23]\\\\d{7,8}|(?:4\\\\d\\\\d|[89]00)\\\\d{5}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[23]\"],\"0$1\"]],\"0\"],\"YE\":[\"967\",\"00\",\"(?:1|7\\\\d)\\\\d{7}|[1-7]\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-6]|7[24-68]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"YT\":[\"262\",\"00\",\"80\\\\d{7}|(?:26|63)9\\\\d{6}\",[9],0,\"0\",0,0,0,0,\"269|63\"],\"ZA\":[\"27\",\"00\",\"[1-79]\\\\d{8}|8\\\\d{4,9}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"860\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"ZM\":[\"260\",\"00\",\"(?:63|80)0\\\\d{6}|(?:21|[79]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[28]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[79]\"],\"0$1\"]],\"0\"],\"ZW\":[\"263\",\"00\",\"2(?:[0-57-9]\\\\d{6,8}|6[0-24-9]\\\\d{6,7})|[38]\\\\d{9}|[35-8]\\\\d{8}|[3-6]\\\\d{7}|[1-689]\\\\d{6}|[1-3569]\\\\d{5}|[1356]\\\\d{4}\",[5,6,7,8,9,10],[[\"(\\\\d{3})(\\\\d{3,5})\",\"$1 $2\",[\"2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"80\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2\",\"2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)\",\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"29[013-9]|39|54\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,5})\",\"$1 $2\",[\"(?:25|54)8\",\"258|5483\"],\"0$1\"]],\"0\"]},\"nonGeographic\":{\"800\":[\"800\",0,\"(?:005|[1-9]\\\\d\\\\d)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"\\\\d\"]]],0,0,0,0,0,0,[0,0,[\"(?:005|[1-9]\\\\d\\\\d)\\\\d{5}\"]]],\"808\":[\"808\",0,\"[1-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,[\"[1-9]\\\\d{7}\"]]],\"870\":[\"870\",0,\"7\\\\d{11}|[35-7]\\\\d{8}\",[9,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[35-7]\"]]],0,0,0,0,0,0,[0,[\"(?:[356]|774[45])\\\\d{8}|7[6-8]\\\\d{7}\"]]],\"878\":[\"878\",0,\"10\\\\d{10}\",[12],[[\"(\\\\d{2})(\\\\d{5})(\\\\d{5})\",\"$1 $2 $3\",[\"1\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"10\\\\d{10}\"]]],\"881\":[\"881\",0,\"[0-36-9]\\\\d{8}\",[9],[[\"(\\\\d)(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"[0-36-9]\"]]],0,0,0,0,0,0,[0,[\"[0-36-9]\\\\d{8}\"]]],\"882\":[\"882\",0,\"[13]\\\\d{6}(?:\\\\d{2,5})?|285\\\\d{9}|(?:[19]\\\\d|49)\\\\d{6}\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"16|342\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"4\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"3[23]\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"34[57]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"34\"]],[\"(\\\\d{2})(\\\\d{4,5})(\\\\d{5})\",\"$1 $2 $3\",[\"[1-3]\"]]],0,0,0,0,0,0,[0,[\"342\\\\d{4}|(?:337|49)\\\\d{6}|3(?:2|47|7\\\\d{3})\\\\d{7}\",[7,8,9,10,12]],0,0,0,0,0,0,[\"1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\\\d{4}|6\\\\d{5,10})|(?:(?:285\\\\d\\\\d|3(?:45|[69]\\\\d{3}))\\\\d|9[89])\\\\d{6}\"]]],\"883\":[\"883\",0,\"210\\\\d{7}|51\\\\d{7}(?:\\\\d{3})?\",[9,10,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"510\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"510\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"(?:210|51[013]0\\\\d)\\\\d{7}|5100\\\\d{5}\"]]],\"888\":[\"888\",0,\"\\\\d{11}\",[11],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\"]],0,0,0,0,0,0,[0,0,0,0,0,0,[\"\\\\d{11}\"]]],\"979\":[\"979\",0,\"[1359]\\\\d{8}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1359]\"]]],0,0,0,0,0,0,[0,0,0,[\"[1359]\\\\d{8}\"]]]}}","// Importing from `.json.js` a workaround for a bug in web browsers' \"native\"\r\n// ES6 importing system which is uncapable of importing \"*.json\" files.\r\n// https://github.com/catamphetamine/libphonenumber-js/issues/239\r\nimport metadata from '../metadata.min.json.js'\r\nexport default metadata\r\n\r\nexport function withMetadata(func, _arguments) {\r\n\tvar args = Array.prototype.slice.call(_arguments)\r\n\targs.push(metadata)\r\n\treturn func.apply(this, args)\r\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// https://stackoverflow.com/a/46971044/970769\nvar ParseError = function ParseError(code) {\n _classCallCheck(this, ParseError);\n\n this.name = this.constructor.name;\n this.message = code;\n this.stack = new Error(code).stack;\n};\n\nexport { ParseError as default };\nParseError.prototype = Object.create(Error.prototype);\nParseError.prototype.constructor = ParseError;\n//# sourceMappingURL=ParseError.js.map","// The minimum length of the national significant number.\nexport var MIN_LENGTH_FOR_NSN = 2; // The ITU says the maximum length should be 15,\n// but one can find longer numbers in Germany.\n\nexport var MAX_LENGTH_FOR_NSN = 17; // The maximum length of the country calling code.\n\nexport var MAX_LENGTH_COUNTRY_CODE = 3; // Digits accepted in phone numbers\n// (ascii, fullwidth, arabic-indic, and eastern arabic digits).\n\nexport var VALID_DIGITS = \"0-9\\uFF10-\\uFF19\\u0660-\\u0669\\u06F0-\\u06F9\"; // `DASHES` will be right after the opening square bracket of the \"character class\"\n\nvar DASHES = \"-\\u2010-\\u2015\\u2212\\u30FC\\uFF0D\";\nvar SLASHES = \"\\uFF0F/\";\nvar DOTS = \"\\uFF0E.\";\nexport var WHITESPACE = \" \\xA0\\xAD\\u200B\\u2060\\u3000\";\nvar BRACKETS = \"()\\uFF08\\uFF09\\uFF3B\\uFF3D\\\\[\\\\]\"; // export const OPENING_BRACKETS = '(\\uFF08\\uFF3B\\\\\\['\n\nvar TILDES = \"~\\u2053\\u223C\\uFF5E\"; // Regular expression of acceptable punctuation found in phone numbers. This\n// excludes punctuation found as a leading character only. This consists of dash\n// characters, white space characters, full stops, slashes, square brackets,\n// parentheses and tildes. Full-width variants are also present.\n\nexport var VALID_PUNCTUATION = \"\".concat(DASHES).concat(SLASHES).concat(DOTS).concat(WHITESPACE).concat(BRACKETS).concat(TILDES);\nexport var PLUS_CHARS = \"+\\uFF0B\"; // const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+')\n//# sourceMappingURL=constants.js.map","// Copy-pasted from:\n// https://github.com/substack/semver-compare/blob/master/index.js\n//\n// Inlining this function because some users reported issues with\n// importing from `semver-compare` in a browser with ES6 \"native\" modules.\n//\n// Fixes `semver-compare` not being able to compare versions with alpha/beta/etc \"tags\".\n// https://github.com/catamphetamine/libphonenumber-js/issues/381\nexport default function (a, b) {\n a = a.split('-');\n b = b.split('-');\n var pa = a[0].split('.');\n var pb = b[0].split('.');\n\n for (var i = 0; i < 3; i++) {\n var na = Number(pa[i]);\n var nb = Number(pb[i]);\n if (na > nb) return 1;\n if (nb > na) return -1;\n if (!isNaN(na) && isNaN(nb)) return 1;\n if (isNaN(na) && !isNaN(nb)) return -1;\n }\n\n if (a[1] && b[1]) {\n return a[1] > b[1] ? 1 : a[1] < b[1] ? -1 : 0;\n }\n\n return !a[1] && b[1] ? 1 : a[1] && !b[1] ? -1 : 0;\n}\n//# sourceMappingURL=semver-compare.js.map","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport compare from './tools/semver-compare'; // Added \"possibleLengths\" and renamed\n// \"country_phone_code_to_countries\" to \"country_calling_codes\".\n\nvar V2 = '1.0.18'; // Added \"idd_prefix\" and \"default_idd_prefix\".\n\nvar V3 = '1.2.0'; // Moved `001` country code to \"nonGeographic\" section of metadata.\n\nvar V4 = '1.7.35';\nvar DEFAULT_EXT_PREFIX = ' ext. ';\nvar CALLING_CODE_REG_EXP = /^\\d+$/;\n/**\r\n * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md\r\n */\n\nvar Metadata =\n/*#__PURE__*/\nfunction () {\n function Metadata(metadata) {\n _classCallCheck(this, Metadata);\n\n validateMetadata(metadata);\n this.metadata = metadata;\n setVersion.call(this, metadata);\n }\n\n _createClass(Metadata, [{\n key: \"getCountries\",\n value: function getCountries() {\n return Object.keys(this.metadata.countries).filter(function (_) {\n return _ !== '001';\n });\n }\n }, {\n key: \"getCountryMetadata\",\n value: function getCountryMetadata(countryCode) {\n return this.metadata.countries[countryCode];\n }\n }, {\n key: \"nonGeographic\",\n value: function nonGeographic() {\n if (this.v1 || this.v2 || this.v3) return; // `nonGeographical` was a typo.\n // It's present in metadata generated from `1.7.35` to `1.7.37`.\n\n return this.metadata.nonGeographic || this.metadata.nonGeographical;\n }\n }, {\n key: \"hasCountry\",\n value: function hasCountry(country) {\n return this.getCountryMetadata(country) !== undefined;\n }\n }, {\n key: \"hasCallingCode\",\n value: function hasCallingCode(callingCode) {\n if (this.getCountryCodesForCallingCode(callingCode)) {\n return true;\n }\n\n if (this.nonGeographic()) {\n if (this.nonGeographic()[callingCode]) {\n return true;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return true;\n }\n }\n }\n }, {\n key: \"isNonGeographicCallingCode\",\n value: function isNonGeographicCallingCode(callingCode) {\n if (this.nonGeographic()) {\n return this.nonGeographic()[callingCode] ? true : false;\n } else {\n return this.getCountryCodesForCallingCode(callingCode) ? false : true;\n }\n } // Deprecated.\n\n }, {\n key: \"country\",\n value: function country(countryCode) {\n return this.selectNumberingPlan(countryCode);\n }\n }, {\n key: \"selectNumberingPlan\",\n value: function selectNumberingPlan(countryCode, callingCode) {\n // Supports just passing `callingCode` as the first argument.\n if (countryCode && CALLING_CODE_REG_EXP.test(countryCode)) {\n callingCode = countryCode;\n countryCode = null;\n }\n\n if (countryCode && countryCode !== '001') {\n if (!this.hasCountry(countryCode)) {\n throw new Error(\"Unknown country: \".concat(countryCode));\n }\n\n this.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this);\n } else if (callingCode) {\n if (!this.hasCallingCode(callingCode)) {\n throw new Error(\"Unknown calling code: \".concat(callingCode));\n }\n\n this.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this);\n } else {\n this.numberingPlan = undefined;\n }\n\n return this;\n }\n }, {\n key: \"getCountryCodesForCallingCode\",\n value: function getCountryCodesForCallingCode(callingCode) {\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes) {\n // Metadata before V4 included \"non-geographic entity\" calling codes\n // inside `country_calling_codes` (for example, `\"881\":[\"001\"]`).\n // Now the semantics of `country_calling_codes` has changed:\n // it's specifically for \"countries\" now.\n // Older versions of custom metadata will simply skip parsing\n // \"non-geographic entity\" phone numbers with new versions\n // of this library: it's not considered a bug,\n // because such numbers are extremely rare,\n // and developers extremely rarely use custom metadata.\n if (countryCodes.length === 1 && countryCodes[0].length === 3) {\n return;\n }\n\n return countryCodes;\n }\n }\n }, {\n key: \"getCountryCodeForCallingCode\",\n value: function getCountryCodeForCallingCode(callingCode) {\n var countryCodes = this.getCountryCodesForCallingCode(callingCode);\n\n if (countryCodes) {\n return countryCodes[0];\n }\n }\n }, {\n key: \"getNumberingPlanMetadata\",\n value: function getNumberingPlanMetadata(callingCode) {\n var countryCode = this.getCountryCodeForCallingCode(callingCode);\n\n if (countryCode) {\n return this.getCountryMetadata(countryCode);\n }\n\n if (this.nonGeographic()) {\n var metadata = this.nonGeographic()[callingCode];\n\n if (metadata) {\n return metadata;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return this.metadata.countries['001'];\n }\n }\n } // Deprecated.\n\n }, {\n key: \"countryCallingCode\",\n value: function countryCallingCode() {\n return this.numberingPlan.callingCode();\n } // Deprecated.\n\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n return this.numberingPlan.IDDPrefix();\n } // Deprecated.\n\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n return this.numberingPlan.defaultIDDPrefix();\n } // Deprecated.\n\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n return this.numberingPlan.nationalNumberPattern();\n } // Deprecated.\n\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n return this.numberingPlan.possibleLengths();\n } // Deprecated.\n\n }, {\n key: \"formats\",\n value: function formats() {\n return this.numberingPlan.formats();\n } // Deprecated.\n\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n return this.numberingPlan.nationalPrefixForParsing();\n } // Deprecated.\n\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.numberingPlan.nationalPrefixTransformRule();\n } // Deprecated.\n\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.numberingPlan.leadingDigits();\n } // Deprecated.\n\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n return this.numberingPlan.hasTypes();\n } // Deprecated.\n\n }, {\n key: \"type\",\n value: function type(_type) {\n return this.numberingPlan.type(_type);\n } // Deprecated.\n\n }, {\n key: \"ext\",\n value: function ext() {\n return this.numberingPlan.ext();\n }\n }, {\n key: \"countryCallingCodes\",\n value: function countryCallingCodes() {\n if (this.v1) return this.metadata.country_phone_code_to_countries;\n return this.metadata.country_calling_codes;\n } // Deprecated.\n\n }, {\n key: \"chooseCountryByCountryCallingCode\",\n value: function chooseCountryByCountryCallingCode(callingCode) {\n return this.selectNumberingPlan(callingCode);\n }\n }, {\n key: \"hasSelectedNumberingPlan\",\n value: function hasSelectedNumberingPlan() {\n return this.numberingPlan !== undefined;\n }\n }]);\n\n return Metadata;\n}();\n\nexport { Metadata as default };\n\nvar NumberingPlan =\n/*#__PURE__*/\nfunction () {\n function NumberingPlan(metadata, globalMetadataObject) {\n _classCallCheck(this, NumberingPlan);\n\n this.globalMetadataObject = globalMetadataObject;\n this.metadata = metadata;\n setVersion.call(this, globalMetadataObject.metadata);\n }\n\n _createClass(NumberingPlan, [{\n key: \"callingCode\",\n value: function callingCode() {\n return this.metadata[0];\n } // Formatting information for regions which share\n // a country calling code is contained by only one region\n // for performance reasons. For example, for NANPA region\n // (\"North American Numbering Plan Administration\",\n // which includes USA, Canada, Cayman Islands, Bahamas, etc)\n // it will be contained in the metadata for `US`.\n\n }, {\n key: \"getDefaultCountryMetadataForRegion\",\n value: function getDefaultCountryMetadataForRegion() {\n return this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode());\n } // Is always present.\n\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[1];\n } // Is only present when a country supports multiple IDD prefixes.\n\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[12];\n }\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n if (this.v1 || this.v2) return this.metadata[1];\n return this.metadata[2];\n } // Is always present.\n\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.v1) return;\n return this.metadata[this.v2 ? 2 : 3];\n }\n }, {\n key: \"_getFormats\",\n value: function _getFormats(metadata) {\n return metadata[this.v1 ? 2 : this.v2 ? 3 : 4];\n } // For countries of the same region (e.g. NANPA)\n // formats are all stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"formats\",\n value: function formats() {\n var _this = this;\n\n var formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || [];\n return formats.map(function (_) {\n return new Format(_, _this);\n });\n }\n }, {\n key: \"nationalPrefix\",\n value: function nationalPrefix() {\n return this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5];\n }\n }, {\n key: \"_getNationalPrefixFormattingRule\",\n value: function _getNationalPrefixFormattingRule(metadata) {\n return metadata[this.v1 ? 4 : this.v2 ? 5 : 6];\n } // For countries of the same region (e.g. NANPA)\n // national prefix formatting rule is stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"_nationalPrefixForParsing\",\n value: function _nationalPrefixForParsing() {\n return this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7];\n }\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n // If `national_prefix_for_parsing` is not set explicitly,\n // then infer it from `national_prefix` (if any)\n return this._nationalPrefixForParsing() || this.nationalPrefix();\n }\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8];\n }\n }, {\n key: \"_getNationalPrefixIsOptionalWhenFormatting\",\n value: function _getNationalPrefixIsOptionalWhenFormatting() {\n return !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9];\n } // For countries of the same region (e.g. NANPA)\n // \"national prefix is optional when formatting\" flag is\n // stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) || this._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10];\n }\n }, {\n key: \"types\",\n value: function types() {\n return this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11];\n }\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n // Versions 1.2.0 - 1.2.4: can be `[]`.\n\n /* istanbul ignore next */\n if (this.types() && this.types().length === 0) {\n return false;\n } // Versions <= 1.2.4: can be `undefined`.\n // Version >= 1.2.5: can be `0`.\n\n\n return !!this.types();\n }\n }, {\n key: \"type\",\n value: function type(_type2) {\n if (this.hasTypes() && getType(this.types(), _type2)) {\n return new Type(getType(this.types(), _type2), this);\n }\n }\n }, {\n key: \"ext\",\n value: function ext() {\n if (this.v1 || this.v2) return DEFAULT_EXT_PREFIX;\n return this.metadata[13] || DEFAULT_EXT_PREFIX;\n }\n }]);\n\n return NumberingPlan;\n}();\n\nvar Format =\n/*#__PURE__*/\nfunction () {\n function Format(format, metadata) {\n _classCallCheck(this, Format);\n\n this._format = format;\n this.metadata = metadata;\n }\n\n _createClass(Format, [{\n key: \"pattern\",\n value: function pattern() {\n return this._format[0];\n }\n }, {\n key: \"format\",\n value: function format() {\n return this._format[1];\n }\n }, {\n key: \"leadingDigitsPatterns\",\n value: function leadingDigitsPatterns() {\n return this._format[2] || [];\n }\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._format[3] || this.metadata.nationalPrefixFormattingRule();\n }\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n }\n }, {\n key: \"nationalPrefixIsMandatoryWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsMandatoryWhenFormattingInNationalFormat() {\n // National prefix is omitted if there's no national prefix formatting rule\n // set for this country, or when the national prefix formatting rule\n // contains no national prefix itself, or when this rule is set but\n // national prefix is optional for this phone number format\n // (and it is not enforced explicitly)\n return this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n } // Checks whether national prefix formatting rule contains national prefix.\n\n }, {\n key: \"usesNationalPrefix\",\n value: function usesNationalPrefix() {\n return this.nationalPrefixFormattingRule() && // Check that national prefix formatting rule is not a \"dummy\" one.\n !FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule()) // In compressed metadata, `this.nationalPrefixFormattingRule()` is `0`\n // when `national_prefix_formatting_rule` is not present.\n // So, `true` or `false` are returned explicitly here, so that\n // `0` number isn't returned.\n ? true : false;\n }\n }, {\n key: \"internationalFormat\",\n value: function internationalFormat() {\n return this._format[5] || this.format();\n }\n }]);\n\n return Format;\n}();\n/**\r\n * A pattern that is used to determine if the national prefix formatting rule\r\n * has the first group only, i.e., does not start with the national prefix.\r\n * Note that the pattern explicitly allows for unbalanced parentheses.\r\n */\n\n\nvar FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\\(?\\$1\\)?$/;\n\nvar Type =\n/*#__PURE__*/\nfunction () {\n function Type(type, metadata) {\n _classCallCheck(this, Type);\n\n this.type = type;\n this.metadata = metadata;\n }\n\n _createClass(Type, [{\n key: \"pattern\",\n value: function pattern() {\n if (this.metadata.v1) return this.type;\n return this.type[0];\n }\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.metadata.v1) return;\n return this.type[1] || this.metadata.possibleLengths();\n }\n }]);\n\n return Type;\n}();\n\nfunction getType(types, type) {\n switch (type) {\n case 'FIXED_LINE':\n return types[0];\n\n case 'MOBILE':\n return types[1];\n\n case 'TOLL_FREE':\n return types[2];\n\n case 'PREMIUM_RATE':\n return types[3];\n\n case 'PERSONAL_NUMBER':\n return types[4];\n\n case 'VOICEMAIL':\n return types[5];\n\n case 'UAN':\n return types[6];\n\n case 'PAGER':\n return types[7];\n\n case 'VOIP':\n return types[8];\n\n case 'SHARED_COST':\n return types[9];\n }\n}\n\nexport function validateMetadata(metadata) {\n if (!metadata) {\n throw new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.');\n } // `country_phone_code_to_countries` was renamed to\n // `country_calling_codes` in `1.0.18`.\n\n\n if (!is_object(metadata) || !is_object(metadata.countries)) {\n throw new Error(\"[libphonenumber-js] `metadata` argument was passed but it's not a valid metadata. Must be an object having `.countries` child object property. Got \".concat(is_object(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + type_of(metadata) + ': ' + metadata, \".\"));\n }\n} // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\nvar is_object = function is_object(_) {\n return _typeof(_) === 'object';\n}; // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\n\nvar type_of = function type_of(_) {\n return _typeof(_);\n};\n/**\r\n * Returns extension prefix for a country.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string?}\r\n * @example\r\n * // Returns \" ext. \"\r\n * getExtPrefix(\"US\")\r\n */\n\n\nexport function getExtPrefix(country, metadata) {\n metadata = new Metadata(metadata);\n\n if (metadata.hasCountry(country)) {\n return metadata.country(country).ext();\n }\n\n return DEFAULT_EXT_PREFIX;\n}\n/**\r\n * Returns \"country calling code\" for a country.\r\n * Throws an error if the country doesn't exist or isn't supported by this library.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string}\r\n * @example\r\n * // Returns \"44\"\r\n * getCountryCallingCode(\"GB\")\r\n */\n\nexport function getCountryCallingCode(country, metadata) {\n metadata = new Metadata(metadata);\n\n if (metadata.hasCountry(country)) {\n return metadata.country(country).countryCallingCode();\n }\n\n throw new Error(\"Unknown country: \".concat(country));\n}\nexport function isSupportedCountry(country, metadata) {\n // metadata = new Metadata(metadata)\n // return metadata.hasCountry(country)\n return metadata.countries[country] !== undefined;\n}\n\nfunction setVersion(metadata) {\n var version = metadata.version;\n\n if (typeof version === 'number') {\n this.v1 = version === 1;\n this.v2 = version === 2;\n this.v3 = version === 3;\n this.v4 = version === 4;\n } else {\n if (!version) {\n this.v1 = true;\n } else if (compare(version, V3) === -1) {\n this.v2 = true;\n } else if (compare(version, V4) === -1) {\n this.v3 = true;\n } else {\n this.v4 = true;\n }\n }\n} // const ISO_COUNTRY_CODE = /^[A-Z]{2}$/\n// function isCountryCode(countryCode) {\n// \treturn ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode)\n// }\n//# sourceMappingURL=metadata.js.map","import { VALID_DIGITS } from '../../constants'; // The RFC 3966 format for extensions.\n\nvar RFC3966_EXTN_PREFIX = ';ext=';\n/**\r\n * Helper method for constructing regular expressions for parsing. Creates\r\n * an expression that captures up to max_length digits.\r\n * @return {string} RegEx pattern to capture extension digits.\r\n */\n\nvar getExtensionDigitsPattern = function getExtensionDigitsPattern(maxLength) {\n return \"([\".concat(VALID_DIGITS, \"]{1,\").concat(maxLength, \"})\");\n};\n/**\r\n * Helper initialiser method to create the regular-expression pattern to match\r\n * extensions.\r\n * Copy-pasted from Google's `libphonenumber`:\r\n * https://github.com/google/libphonenumber/blob/55b2646ec9393f4d3d6661b9c82ef9e258e8b829/javascript/i18n/phonenumbers/phonenumberutil.js#L759-L766\r\n * @return {string} RegEx pattern to capture extensions.\r\n */\n\n\nexport default function createExtensionPattern(purpose) {\n // We cap the maximum length of an extension based on the ambiguity of the way\n // the extension is prefixed. As per ITU, the officially allowed length for\n // extensions is actually 40, but we don't support this since we haven't seen real\n // examples and this introduces many false interpretations as the extension labels\n // are not standardized.\n\n /** @type {string} */\n var extLimitAfterExplicitLabel = '20';\n /** @type {string} */\n\n var extLimitAfterLikelyLabel = '15';\n /** @type {string} */\n\n var extLimitAfterAmbiguousChar = '9';\n /** @type {string} */\n\n var extLimitWhenNotSure = '6';\n /** @type {string} */\n\n var possibleSeparatorsBetweenNumberAndExtLabel = \"[ \\xA0\\\\t,]*\"; // Optional full stop (.) or colon, followed by zero or more spaces/tabs/commas.\n\n /** @type {string} */\n\n var possibleCharsAfterExtLabel = \"[:\\\\.\\uFF0E]?[ \\xA0\\\\t,-]*\";\n /** @type {string} */\n\n var optionalExtnSuffix = \"#?\"; // Here the extension is called out in more explicit way, i.e mentioning it obvious\n // patterns like \"ext.\".\n\n /** @type {string} */\n\n var explicitExtLabels = \"(?:e?xt(?:ensi(?:o\\u0301?|\\xF3))?n?|\\uFF45?\\uFF58\\uFF54\\uFF4E?|\\u0434\\u043E\\u0431|anexo)\"; // One-character symbols that can be used to indicate an extension, and less\n // commonly used or more ambiguous extension labels.\n\n /** @type {string} */\n\n var ambiguousExtLabels = \"(?:[x\\uFF58#\\uFF03~\\uFF5E]|int|\\uFF49\\uFF4E\\uFF54)\"; // When extension is not separated clearly.\n\n /** @type {string} */\n\n var ambiguousSeparator = \"[- ]+\"; // This is the same as possibleSeparatorsBetweenNumberAndExtLabel, but not matching\n // comma as extension label may have it.\n\n /** @type {string} */\n\n var possibleSeparatorsNumberExtLabelNoComma = \"[ \\xA0\\\\t]*\"; // \",,\" is commonly used for auto dialling the extension when connected. First\n // comma is matched through possibleSeparatorsBetweenNumberAndExtLabel, so we do\n // not repeat it here. Semi-colon works in Iphone and Android also to pop up a\n // button with the extension number following.\n\n /** @type {string} */\n\n var autoDiallingAndExtLabelsFound = \"(?:,{2}|;)\";\n /** @type {string} */\n\n var rfcExtn = RFC3966_EXTN_PREFIX + getExtensionDigitsPattern(extLimitAfterExplicitLabel);\n /** @type {string} */\n\n var explicitExtn = possibleSeparatorsBetweenNumberAndExtLabel + explicitExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterExplicitLabel) + optionalExtnSuffix;\n /** @type {string} */\n\n var ambiguousExtn = possibleSeparatorsBetweenNumberAndExtLabel + ambiguousExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix;\n /** @type {string} */\n\n var americanStyleExtnWithSuffix = ambiguousSeparator + getExtensionDigitsPattern(extLimitWhenNotSure) + \"#\";\n /** @type {string} */\n\n var autoDiallingExtn = possibleSeparatorsNumberExtLabelNoComma + autoDiallingAndExtLabelsFound + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterLikelyLabel) + optionalExtnSuffix;\n /** @type {string} */\n\n var onlyCommasExtn = possibleSeparatorsNumberExtLabelNoComma + \"(?:,)+\" + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix; // The first regular expression covers RFC 3966 format, where the extension is added\n // using \";ext=\". The second more generic where extension is mentioned with explicit\n // labels like \"ext:\". In both the above cases we allow more numbers in extension than\n // any other extension labels. The third one captures when single character extension\n // labels or less commonly used labels are used. In such cases we capture fewer\n // extension digits in order to reduce the chance of falsely interpreting two\n // numbers beside each other as a number + extension. The fourth one covers the\n // special case of American numbers where the extension is written with a hash\n // at the end, such as \"- 503#\". The fifth one is exclusively for extension\n // autodialling formats which are used when dialling and in this case we accept longer\n // extensions. The last one is more liberal on the number of commas that acts as\n // extension labels, so we have a strict cap on the number of digits in such extensions.\n\n return rfcExtn + \"|\" + explicitExtn + \"|\" + ambiguousExtn + \"|\" + americanStyleExtnWithSuffix + \"|\" + autoDiallingExtn + \"|\" + onlyCommasExtn;\n}\n//# sourceMappingURL=createExtensionPattern.js.map","import { MIN_LENGTH_FOR_NSN, VALID_DIGITS, VALID_PUNCTUATION, PLUS_CHARS } from '../constants';\nimport createExtensionPattern from './extension/createExtensionPattern'; // Regular expression of viable phone numbers. This is location independent.\n// Checks we have at least three leading digits, and only valid punctuation,\n// alpha characters and digits in the phone number. Does not include extension\n// data. The symbol 'x' is allowed here as valid punctuation since it is often\n// used as a placeholder for carrier codes, for example in Brazilian phone\n// numbers. We also allow multiple '+' characters at the start.\n//\n// Corresponds to the following:\n// [digits]{minLengthNsn}|\n// plus_sign*\n// (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])*\n//\n// The first reg-ex is to allow short numbers (two digits long) to be parsed if\n// they are entered as \"15\" etc, but only if there is no punctuation in them.\n// The second expression restricts the number of digits to three or more, but\n// then allows them to be in international form, and to have alpha-characters\n// and punctuation. We split up the two reg-exes here and combine them when\n// creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it\n// with ^ and append $ to each branch.\n//\n// \"Note VALID_PUNCTUATION starts with a -,\n// so must be the first in the range\" (c) Google devs.\n// (wtf did they mean by saying that; probably nothing)\n//\n\nvar MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + VALID_DIGITS + ']{' + MIN_LENGTH_FOR_NSN + '}'; //\n// And this is the second reg-exp:\n// (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp)\n//\n\nexport var VALID_PHONE_NUMBER = '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){3,}' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*'; // This regular expression isn't present in Google's `libphonenumber`\n// and is only used to determine whether the phone number being input\n// is too short for it to even consider it a \"valid\" number.\n// This is just a way to differentiate between a really invalid phone\n// number like \"abcde\" and a valid phone number that a user has just\n// started inputting, like \"+1\" or \"1\": both these cases would be\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\n// library can provide a more detailed error message — whether it's\n// really \"not a number\", or is it just a start of a valid phone number.\n\nvar VALID_PHONE_NUMBER_START_REG_EXP = new RegExp('^' + '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){1,2}' + '$', 'i');\nexport var VALID_PHONE_NUMBER_WITH_EXTENSION = VALID_PHONE_NUMBER + // Phone number extensions\n'(?:' + createExtensionPattern() + ')?'; // The combined regular expression for valid phone numbers:\n//\n\nvar VALID_PHONE_NUMBER_PATTERN = new RegExp( // Either a short two-digit-only phone number\n'^' + MIN_LENGTH_PHONE_NUMBER_PATTERN + '$' + '|' + // Or a longer fully parsed phone number (min 3 characters)\n'^' + VALID_PHONE_NUMBER_WITH_EXTENSION + '$', 'i'); // Checks to see if the string of characters could possibly be a phone number at\n// all. At the moment, checks to see that the string begins with at least 2\n// digits, ignoring any punctuation commonly found in phone numbers. This method\n// does not require the number to be normalized in advance - but does assume\n// that leading non-number symbols have been removed, such as by the method\n// `extract_possible_number`.\n//\n\nexport default function isViablePhoneNumber(number) {\n return number.length >= MIN_LENGTH_FOR_NSN && VALID_PHONE_NUMBER_PATTERN.test(number);\n} // This is just a way to differentiate between a really invalid phone\n// number like \"abcde\" and a valid phone number that a user has just\n// started inputting, like \"+1\" or \"1\": both these cases would be\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\n// library can provide a more detailed error message — whether it's\n// really \"not a number\", or is it just a start of a valid phone number.\n\nexport function isViablePhoneNumberStart(number) {\n return VALID_PHONE_NUMBER_START_REG_EXP.test(number);\n}\n//# sourceMappingURL=isViablePhoneNumber.js.map","import createExtensionPattern from './createExtensionPattern'; // Regexp of all known extension prefixes used by different regions followed by\n// 1 or more valid digits, for use when parsing.\n\nvar EXTN_PATTERN = new RegExp('(?:' + createExtensionPattern() + ')$', 'i'); // Strips any extension (as in, the part of the number dialled after the call is\n// connected, usually indicated with extn, ext, x or similar) from the end of\n// the number, and returns it.\n\nexport default function extractExtension(number) {\n var start = number.search(EXTN_PATTERN);\n\n if (start < 0) {\n return {};\n } // If we find a potential extension, and the number preceding this is a viable\n // number, we assume it is an extension.\n\n\n var numberWithoutExtension = number.slice(0, start);\n var matches = number.match(EXTN_PATTERN);\n var i = 1;\n\n while (i < matches.length) {\n if (matches[i]) {\n return {\n number: numberWithoutExtension,\n ext: matches[i]\n };\n }\n\n i++;\n }\n}\n//# sourceMappingURL=extractExtension.js.map","// These mappings map a character (key) to a specific digit that should\n// replace it for normalization purposes. Non-European digits that\n// may be used in phone numbers are mapped to a European equivalent.\n//\n// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\n//\nexport var DIGITS = {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n \"\\uFF10\": '0',\n // Fullwidth digit 0\n \"\\uFF11\": '1',\n // Fullwidth digit 1\n \"\\uFF12\": '2',\n // Fullwidth digit 2\n \"\\uFF13\": '3',\n // Fullwidth digit 3\n \"\\uFF14\": '4',\n // Fullwidth digit 4\n \"\\uFF15\": '5',\n // Fullwidth digit 5\n \"\\uFF16\": '6',\n // Fullwidth digit 6\n \"\\uFF17\": '7',\n // Fullwidth digit 7\n \"\\uFF18\": '8',\n // Fullwidth digit 8\n \"\\uFF19\": '9',\n // Fullwidth digit 9\n \"\\u0660\": '0',\n // Arabic-indic digit 0\n \"\\u0661\": '1',\n // Arabic-indic digit 1\n \"\\u0662\": '2',\n // Arabic-indic digit 2\n \"\\u0663\": '3',\n // Arabic-indic digit 3\n \"\\u0664\": '4',\n // Arabic-indic digit 4\n \"\\u0665\": '5',\n // Arabic-indic digit 5\n \"\\u0666\": '6',\n // Arabic-indic digit 6\n \"\\u0667\": '7',\n // Arabic-indic digit 7\n \"\\u0668\": '8',\n // Arabic-indic digit 8\n \"\\u0669\": '9',\n // Arabic-indic digit 9\n \"\\u06F0\": '0',\n // Eastern-Arabic digit 0\n \"\\u06F1\": '1',\n // Eastern-Arabic digit 1\n \"\\u06F2\": '2',\n // Eastern-Arabic digit 2\n \"\\u06F3\": '3',\n // Eastern-Arabic digit 3\n \"\\u06F4\": '4',\n // Eastern-Arabic digit 4\n \"\\u06F5\": '5',\n // Eastern-Arabic digit 5\n \"\\u06F6\": '6',\n // Eastern-Arabic digit 6\n \"\\u06F7\": '7',\n // Eastern-Arabic digit 7\n \"\\u06F8\": '8',\n // Eastern-Arabic digit 8\n \"\\u06F9\": '9' // Eastern-Arabic digit 9\n\n};\nexport function parseDigit(character) {\n return DIGITS[character];\n}\n/**\r\n * Parses phone number digits from a string.\r\n * Drops all punctuation leaving only digits.\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * parseDigits('8 (800) 555')\r\n * // Outputs '8800555'.\r\n * ```\r\n */\n\nexport default function parseDigits(string) {\n var result = ''; // Using `.split('')` here instead of normal `for ... of`\n // because the importing application doesn't neccessarily include an ES6 polyfill.\n // The `.split('')` approach discards \"exotic\" UTF-8 characters\n // (the ones consisting of four bytes) but digits\n // (including non-European ones) don't fall into that range\n // so such \"exotic\" characters would be discarded anyway.\n\n for (var _iterator = string.split(''), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var character = _ref;\n var digit = parseDigit(character);\n\n if (digit) {\n result += digit;\n }\n }\n\n return result;\n}\n//# sourceMappingURL=parseDigits.js.map","import { parseDigit } from './helpers/parseDigits';\n/**\r\n * Parses phone number characters from a string.\r\n * Drops all punctuation leaving only digits and the leading `+` sign (if any).\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * // Outputs '8800555'.\r\n * parseIncompletePhoneNumber('8 (800) 555')\r\n * // Outputs '+7800555'.\r\n * parseIncompletePhoneNumber('+7 800 555')\r\n * ```\r\n */\n\nexport default function parseIncompletePhoneNumber(string) {\n var result = ''; // Using `.split('')` here instead of normal `for ... of`\n // because the importing application doesn't neccessarily include an ES6 polyfill.\n // The `.split('')` approach discards \"exotic\" UTF-8 characters\n // (the ones consisting of four bytes) but digits\n // (including non-European ones) don't fall into that range\n // so such \"exotic\" characters would be discarded anyway.\n\n for (var _iterator = string.split(''), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var character = _ref;\n result += parsePhoneNumberCharacter(character, result) || '';\n }\n\n return result;\n}\n/**\r\n * Parses next character while parsing phone number digits (including a `+`)\r\n * from text: discards everything except `+` and digits, and `+` is only allowed\r\n * at the start of a phone number.\r\n * For example, is used in `react-phone-number-input` where it uses\r\n * [`input-format`](https://gitlab.com/catamphetamine/input-format).\r\n * @param {string} character - Yet another character from raw input string.\r\n * @param {string?} prevParsedCharacters - Previous parsed characters.\r\n * @param {object} meta - Optional custom use-case-specific metadata.\r\n * @return {string?} The parsed character.\r\n */\n\nexport function parsePhoneNumberCharacter(character, prevParsedCharacters) {\n // Only allow a leading `+`.\n if (character === '+') {\n // If this `+` is not the first parsed character\n // then discard it.\n if (prevParsedCharacters) {\n return;\n }\n\n return '+';\n } // Allow digits.\n\n\n return parseDigit(character);\n}\n//# sourceMappingURL=parseIncompletePhoneNumber.js.map","/**\r\n * Merges two arrays.\r\n * @param {*} a\r\n * @param {*} b\r\n * @return {*}\r\n */\nexport default function mergeArrays(a, b) {\n var merged = a.slice();\n\n for (var _iterator = b, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var element = _ref;\n\n if (a.indexOf(element) < 0) {\n merged.push(element);\n }\n }\n\n return merged.sort(function (a, b) {\n return a - b;\n }); // ES6 version, requires Set polyfill.\n // let merged = new Set(a)\n // for (const element of b) {\n // \tmerged.add(i)\n // }\n // return Array.from(merged).sort((a, b) => a - b)\n}\n//# sourceMappingURL=mergeArrays.js.map","import mergeArrays from './mergeArrays';\nexport default function checkNumberLength(nationalNumber, metadata) {\n return checkNumberLengthForType(nationalNumber, undefined, metadata);\n} // Checks whether a number is possible for the country based on its length.\n// Should only be called for the \"new\" metadata which has \"possible lengths\".\n\nexport function checkNumberLengthForType(nationalNumber, type, metadata) {\n var type_info = metadata.type(type); // There should always be \"\" set for every type element.\n // This is declared in the XML schema.\n // For size efficiency, where a sub-description (e.g. fixed-line)\n // has the same \"\" as the \"general description\", this is missing,\n // so we fall back to the \"general description\". Where no numbers of the type\n // exist at all, there is one possible length (-1) which is guaranteed\n // not to match the length of any real phone number.\n\n var possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths(); // let local_lengths = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal()\n // Metadata before version `1.0.18` didn't contain `possible_lengths`.\n\n if (!possible_lengths) {\n return 'IS_POSSIBLE';\n }\n\n if (type === 'FIXED_LINE_OR_MOBILE') {\n // No such country in metadata.\n\n /* istanbul ignore next */\n if (!metadata.type('FIXED_LINE')) {\n // The rare case has been encountered where no fixedLine data is available\n // (true for some non-geographic entities), so we just check mobile.\n return checkNumberLengthForType(nationalNumber, 'MOBILE', metadata);\n }\n\n var mobile_type = metadata.type('MOBILE');\n\n if (mobile_type) {\n // Merge the mobile data in if there was any. \"Concat\" creates a new\n // array, it doesn't edit possible_lengths in place, so we don't need a copy.\n // Note that when adding the possible lengths from mobile, we have\n // to again check they aren't empty since if they are this indicates\n // they are the same as the general desc and should be obtained from there.\n possible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths()); // The current list is sorted; we need to merge in the new list and\n // re-sort (duplicates are okay). Sorting isn't so expensive because\n // the lists are very small.\n // if (local_lengths) {\n // \tlocal_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal())\n // } else {\n // \tlocal_lengths = mobile_type.possibleLengthsLocal()\n // }\n }\n } // If the type doesn't exist then return 'INVALID_LENGTH'.\n else if (type && !type_info) {\n return 'INVALID_LENGTH';\n }\n\n var actual_length = nationalNumber.length; // In `libphonenumber-js` all \"local-only\" formats are dropped for simplicity.\n // // This is safe because there is never an overlap beween the possible lengths\n // // and the local-only lengths; this is checked at build time.\n // if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0)\n // {\n // \treturn 'IS_POSSIBLE_LOCAL_ONLY'\n // }\n\n var minimum_length = possible_lengths[0];\n\n if (minimum_length === actual_length) {\n return 'IS_POSSIBLE';\n }\n\n if (minimum_length > actual_length) {\n return 'TOO_SHORT';\n }\n\n if (possible_lengths[possible_lengths.length - 1] < actual_length) {\n return 'TOO_LONG';\n } // We skip the first element since we've already checked it.\n\n\n return possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH';\n}\n//# sourceMappingURL=checkNumberLength.js.map","import Metadata from './metadata';\nimport checkNumberLength from './helpers/checkNumberLength';\nexport default function isPossiblePhoneNumber(input, options, metadata) {\n /* istanbul ignore if */\n if (options === undefined) {\n options = {};\n }\n\n metadata = new Metadata(metadata);\n\n if (options.v2) {\n if (!input.countryCallingCode) {\n throw new Error('Invalid phone number object passed');\n }\n\n metadata.selectNumberingPlan(input.countryCallingCode);\n } else {\n if (!input.phone) {\n return false;\n }\n\n if (input.country) {\n if (!metadata.hasCountry(input.country)) {\n throw new Error(\"Unknown country: \".concat(input.country));\n }\n\n metadata.country(input.country);\n } else {\n if (!input.countryCallingCode) {\n throw new Error('Invalid phone number object passed');\n }\n\n metadata.selectNumberingPlan(input.countryCallingCode);\n }\n }\n\n if (metadata.possibleLengths()) {\n return isPossibleNumber(input.phone || input.nationalNumber, metadata);\n } else {\n // There was a bug between `1.7.35` and `1.7.37` where \"possible_lengths\"\n // were missing for \"non-geographical\" numbering plans.\n // Just assume the number is possible in such cases:\n // it's unlikely that anyone generated their custom metadata\n // in that short period of time (one day).\n // This code can be removed in some future major version update.\n if (input.countryCallingCode && metadata.isNonGeographicCallingCode(input.countryCallingCode)) {\n // \"Non-geographic entities\" did't have `possibleLengths`\n // due to a bug in metadata generation process.\n return true;\n } else {\n throw new Error('Missing \"possibleLengths\" in metadata. Perhaps the metadata has been generated before v1.0.18.');\n }\n }\n}\nexport function isPossibleNumber(nationalNumber, metadata) {\n //, isInternational) {\n switch (checkNumberLength(nationalNumber, metadata)) {\n case 'IS_POSSIBLE':\n return true;\n // This library ignores \"local-only\" phone numbers (for simplicity).\n // See the readme for more info on what are \"local-only\" phone numbers.\n // case 'IS_POSSIBLE_LOCAL_ONLY':\n // \treturn !isInternational\n\n default:\n return false;\n }\n}\n//# sourceMappingURL=isPossibleNumber_.js.map","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport isViablePhoneNumber from './isViablePhoneNumber'; // https://www.ietf.org/rfc/rfc3966.txt\n\n/**\r\n * @param {string} text - Phone URI (RFC 3966).\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\n\nexport function parseRFC3966(text) {\n var number;\n var ext; // Replace \"tel:\" with \"tel=\" for parsing convenience.\n\n text = text.replace(/^tel:/, 'tel=');\n\n for (var _iterator = text.split(';'), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var part = _ref;\n\n var _part$split = part.split('='),\n _part$split2 = _slicedToArray(_part$split, 2),\n name = _part$split2[0],\n value = _part$split2[1];\n\n switch (name) {\n case 'tel':\n number = value;\n break;\n\n case 'ext':\n ext = value;\n break;\n\n case 'phone-context':\n // Only \"country contexts\" are supported.\n // \"Domain contexts\" are ignored.\n if (value[0] === '+') {\n number = value + number;\n }\n\n break;\n }\n } // If the phone number is not viable, then abort.\n\n\n if (!isViablePhoneNumber(number)) {\n return {};\n }\n\n var result = {\n number: number\n };\n\n if (ext) {\n result.ext = ext;\n }\n\n return result;\n}\n/**\r\n * @param {object} - `{ ?number, ?extension }`.\r\n * @return {string} Phone URI (RFC 3966).\r\n */\n\nexport function formatRFC3966(_ref2) {\n var number = _ref2.number,\n ext = _ref2.ext;\n\n if (!number) {\n return '';\n }\n\n if (number[0] !== '+') {\n throw new Error(\"\\\"formatRFC3966()\\\" expects \\\"number\\\" to be in E.164 format.\");\n }\n\n return \"tel:\".concat(number).concat(ext ? ';ext=' + ext : '');\n}\n//# sourceMappingURL=RFC3966.js.map","/**\r\n * Checks whether the entire input sequence can be matched\r\n * against the regular expression.\r\n * @return {boolean}\r\n */\nexport default function matchesEntirely(text, regular_expression) {\n // If assigning the `''` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n text = text || '';\n return new RegExp('^(?:' + regular_expression + ')$').test(text);\n}\n//# sourceMappingURL=matchesEntirely.js.map","import Metadata from '../metadata';\nimport matchesEntirely from './matchesEntirely';\nvar NON_FIXED_LINE_PHONE_TYPES = ['MOBILE', 'PREMIUM_RATE', 'TOLL_FREE', 'SHARED_COST', 'VOIP', 'PERSONAL_NUMBER', 'PAGER', 'UAN', 'VOICEMAIL']; // Finds out national phone number type (fixed line, mobile, etc)\n\nexport default function getNumberType(input, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {}; // When `parse()` returned `{}`\n // meaning that the phone number is not a valid one.\n\n if (!input.country) {\n return;\n }\n\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(input.country, input.countryCallingCode);\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // The following is copy-pasted from the original function:\n // https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835\n // Is this national number even valid for this country\n\n if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) {\n return;\n } // Is it fixed line number\n\n\n if (isNumberTypeEqualTo(nationalNumber, 'FIXED_LINE', metadata)) {\n // Because duplicate regular expressions are removed\n // to reduce metadata size, if \"mobile\" pattern is \"\"\n // then it means it was removed due to being a duplicate of the fixed-line pattern.\n //\n if (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') {\n return 'FIXED_LINE_OR_MOBILE';\n } // v1 metadata.\n // Legacy.\n // Deprecated.\n\n\n if (!metadata.type('MOBILE')) {\n return 'FIXED_LINE_OR_MOBILE';\n } // Check if the number happens to qualify as both fixed line and mobile.\n // (no such country in the minimal metadata set)\n\n /* istanbul ignore if */\n\n\n if (isNumberTypeEqualTo(nationalNumber, 'MOBILE', metadata)) {\n return 'FIXED_LINE_OR_MOBILE';\n }\n\n return 'FIXED_LINE';\n }\n\n for (var _i = 0, _NON_FIXED_LINE_PHONE = NON_FIXED_LINE_PHONE_TYPES; _i < _NON_FIXED_LINE_PHONE.length; _i++) {\n var type = _NON_FIXED_LINE_PHONE[_i];\n\n if (isNumberTypeEqualTo(nationalNumber, type, metadata)) {\n return type;\n }\n }\n}\nexport function isNumberTypeEqualTo(nationalNumber, type, metadata) {\n type = metadata.type(type);\n\n if (!type || !type.pattern()) {\n return false;\n } // Check if any possible number lengths are present;\n // if so, we use them to avoid checking\n // the validation pattern if they don't match.\n // If they are absent, this means they match\n // the general description, which we have\n // already checked before a specific number type.\n\n\n if (type.possibleLengths() && type.possibleLengths().indexOf(nationalNumber.length) < 0) {\n return false;\n }\n\n return matchesEntirely(nationalNumber, type.pattern());\n}\n//# sourceMappingURL=getNumberType.js.map","import Metadata from './metadata';\nimport matchesEntirely from './helpers/matchesEntirely';\nimport getNumberType from './helpers/getNumberType';\n/**\r\n * Checks if a given phone number is valid.\r\n *\r\n * If the `number` is a string, it will be parsed to an object,\r\n * but only if it contains only valid phone number characters (including punctuation).\r\n * If the `number` is an object, it is used as is.\r\n *\r\n * The optional `defaultCountry` argument is the default country.\r\n * I.e. it does not restrict to just that country,\r\n * e.g. in those cases where several countries share\r\n * the same phone numbering rules (NANPA, Britain, etc).\r\n * For example, even though the number `07624 369230`\r\n * belongs to the Isle of Man (\"IM\" country code)\r\n * calling `isValidNumber('07624369230', 'GB', metadata)`\r\n * still returns `true` because the country is not restricted to `GB`,\r\n * it's just that `GB` is the default one for the phone numbering rules.\r\n * For restricting the country see `isValidNumberForRegion()`\r\n * though restricting a country might not be a good idea.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n *\r\n * Examples:\r\n *\r\n * ```js\r\n * isValidNumber('+78005553535', metadata)\r\n * isValidNumber('8005553535', 'RU', metadata)\r\n * isValidNumber('88005553535', 'RU', metadata)\r\n * isValidNumber({ phone: '8005553535', country: 'RU' }, metadata)\r\n * ```\r\n */\n\nexport default function isValidNumber(input, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {};\n metadata = new Metadata(metadata); // This is just to support `isValidNumber({})`\n // for cases when `parseNumber()` returns `{}`.\n\n if (!input.country) {\n return false;\n }\n\n metadata.selectNumberingPlan(input.country, input.countryCallingCode); // By default, countries only have type regexps when it's required for\n // distinguishing different countries having the same `countryCallingCode`.\n\n if (metadata.hasTypes()) {\n return getNumberType(input, options, metadata.metadata) !== undefined;\n } // If there are no type regexps for this country in metadata then use\n // `nationalNumberPattern` as a \"better than nothing\" replacement.\n\n\n var national_number = options.v2 ? input.nationalNumber : input.phone;\n return matchesEntirely(national_number, metadata.nationalNumberPattern());\n}\n//# sourceMappingURL=validate_.js.map","import { VALID_PUNCTUATION } from '../constants'; // Removes brackets and replaces dashes with spaces.\n//\n// E.g. \"(999) 111-22-33\" -> \"999 111 22 33\"\n//\n// For some reason Google's metadata contains ``s with brackets and dashes.\n// Meanwhile, there's no single opinion about using punctuation in international phone numbers.\n//\n// For example, Google's `` for USA is `+1 213-373-4253`.\n// And here's a quote from WikiPedia's \"North American Numbering Plan\" page:\n// https://en.wikipedia.org/wiki/North_American_Numbering_Plan\n//\n// \"The country calling code for all countries participating in the NANP is 1.\n// In international format, an NANP number should be listed as +1 301 555 01 00,\n// where 301 is an area code (Maryland).\"\n//\n// I personally prefer the international format without any punctuation.\n// For example, brackets are remnants of the old age, meaning that the\n// phone number part in brackets (so called \"area code\") can be omitted\n// if dialing within the same \"area\".\n// And hyphens were clearly introduced for splitting local numbers into memorizable groups.\n// For example, remembering \"5553535\" is difficult but \"555-35-35\" is much simpler.\n// Imagine a man taking a bus from home to work and seeing an ad with a phone number.\n// He has a couple of seconds to memorize that number until it passes by.\n// If it were spaces instead of hyphens the man wouldn't necessarily get it,\n// but with hyphens instead of spaces the grouping is more explicit.\n// I personally think that hyphens introduce visual clutter,\n// so I prefer replacing them with spaces in international numbers.\n// In the modern age all output is done on displays where spaces are clearly distinguishable\n// so hyphens can be safely replaced with spaces without losing any legibility.\n//\n\nexport default function applyInternationalSeparatorStyle(formattedNumber) {\n return formattedNumber.replace(new RegExp(\"[\".concat(VALID_PUNCTUATION, \"]+\"), 'g'), ' ').trim();\n}\n//# sourceMappingURL=applyInternationalSeparatorStyle.js.map","import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle'; // This was originally set to $1 but there are some countries for which the\n// first group is not used in the national pattern (e.g. Argentina) so the $1\n// group does not match correctly. Therefore, we use `\\d`, so that the first\n// group actually used in the pattern will be matched.\n\nexport var FIRST_GROUP_PATTERN = /(\\$\\d)/;\nexport default function formatNationalNumberUsingFormat(number, format, _ref) {\n var useInternationalFormat = _ref.useInternationalFormat,\n withNationalPrefix = _ref.withNationalPrefix,\n carrierCode = _ref.carrierCode,\n metadata = _ref.metadata;\n var formattedNumber = number.replace(new RegExp(format.pattern()), useInternationalFormat ? format.internationalFormat() : // This library doesn't use `domestic_carrier_code_formatting_rule`,\n // because that one is only used when formatting phone numbers\n // for dialing from a mobile phone, and this is not a dialing library.\n // carrierCode && format.domesticCarrierCodeFormattingRule()\n // \t// First, replace the $CC in the formatting rule with the desired carrier code.\n // \t// Then, replace the $FG in the formatting rule with the first group\n // \t// and the carrier code combined in the appropriate way.\n // \t? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode))\n // \t: (\n // \t\twithNationalPrefix && format.nationalPrefixFormattingRule()\n // \t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\n // \t\t\t: format.format()\n // \t)\n withNationalPrefix && format.nationalPrefixFormattingRule() ? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()) : format.format());\n\n if (useInternationalFormat) {\n return applyInternationalSeparatorStyle(formattedNumber);\n }\n\n return formattedNumber;\n}\n//# sourceMappingURL=formatNationalNumberUsingFormat.js.map","import Metadata from '../metadata';\n/**\r\n * Pattern that makes it easy to distinguish whether a region has a single\r\n * international dialing prefix or not. If a region has a single international\r\n * prefix (e.g. 011 in USA), it will be represented as a string that contains\r\n * a sequence of ASCII digits, and possibly a tilde, which signals waiting for\r\n * the tone. If there are multiple available international prefixes in a\r\n * region, they will be represented as a regex string that always contains one\r\n * or more characters that are not ASCII digits or a tilde.\r\n */\n\nvar SINGLE_IDD_PREFIX_REG_EXP = /^[\\d]+(?:[~\\u2053\\u223C\\uFF5E][\\d]+)?$/; // For regions that have multiple IDD prefixes\n// a preferred IDD prefix is returned.\n\nexport default function getIddPrefix(country, callingCode, metadata) {\n var countryMetadata = new Metadata(metadata);\n countryMetadata.selectNumberingPlan(country, callingCode);\n\n if (countryMetadata.defaultIDDPrefix()) {\n return countryMetadata.defaultIDDPrefix();\n }\n\n if (SINGLE_IDD_PREFIX_REG_EXP.test(countryMetadata.IDDPrefix())) {\n return countryMetadata.IDDPrefix();\n }\n}\n//# sourceMappingURL=getIddPrefix.js.map","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\nimport matchesEntirely from './helpers/matchesEntirely';\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat';\nimport Metadata, { getCountryCallingCode } from './metadata';\nimport getIddPrefix from './helpers/getIddPrefix';\nimport { formatRFC3966 } from './helpers/RFC3966';\nvar DEFAULT_OPTIONS = {\n formatExtension: function formatExtension(formattedNumber, extension, metadata) {\n return \"\".concat(formattedNumber).concat(metadata.ext()).concat(extension);\n } // Formats a phone number\n //\n // Example use cases:\n //\n // ```js\n // formatNumber('8005553535', 'RU', 'INTERNATIONAL')\n // formatNumber('8005553535', 'RU', 'INTERNATIONAL', metadata)\n // formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL')\n // formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL', metadata)\n // formatNumber('+78005553535', 'NATIONAL')\n // formatNumber('+78005553535', 'NATIONAL', metadata)\n // ```\n //\n\n};\nexport default function formatNumber(input, format, options, metadata) {\n // Apply default options.\n if (options) {\n options = _objectSpread({}, DEFAULT_OPTIONS, options);\n } else {\n options = DEFAULT_OPTIONS;\n }\n\n metadata = new Metadata(metadata);\n\n if (input.country && input.country !== '001') {\n // Validate `input.country`.\n if (!metadata.hasCountry(input.country)) {\n throw new Error(\"Unknown country: \".concat(input.country));\n }\n\n metadata.country(input.country);\n } else if (input.countryCallingCode) {\n metadata.selectNumberingPlan(input.countryCallingCode);\n } else return input.phone || '';\n\n var countryCallingCode = metadata.countryCallingCode();\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // This variable should have been declared inside `case`s\n // but Babel has a bug and it says \"duplicate variable declaration\".\n\n var number;\n\n switch (format) {\n case 'NATIONAL':\n // Legacy argument support.\n // (`{ country: ..., phone: '' }`)\n if (!nationalNumber) {\n return '';\n }\n\n number = formatNationalNumber(nationalNumber, input.carrierCode, 'NATIONAL', metadata, options);\n return addExtension(number, input.ext, metadata, options.formatExtension);\n\n case 'INTERNATIONAL':\n // Legacy argument support.\n // (`{ country: ..., phone: '' }`)\n if (!nationalNumber) {\n return \"+\".concat(countryCallingCode);\n }\n\n number = formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata, options);\n number = \"+\".concat(countryCallingCode, \" \").concat(number);\n return addExtension(number, input.ext, metadata, options.formatExtension);\n\n case 'E.164':\n // `E.164` doesn't define \"phone number extensions\".\n return \"+\".concat(countryCallingCode).concat(nationalNumber);\n\n case 'RFC3966':\n return formatRFC3966({\n number: \"+\".concat(countryCallingCode).concat(nationalNumber),\n ext: input.ext\n });\n // For reference, here's Google's IDD formatter:\n // https://github.com/google/libphonenumber/blob/32719cf74e68796788d1ca45abc85dcdc63ba5b9/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L1546\n // Not saying that this IDD formatter replicates it 1:1, but it seems to work.\n // Who would even need to format phone numbers in IDD format anyway?\n\n case 'IDD':\n if (!options.fromCountry) {\n return; // throw new Error('`fromCountry` option not passed for IDD-prefixed formatting.')\n }\n\n var formattedNumber = formatIDD(nationalNumber, input.carrierCode, countryCallingCode, options.fromCountry, metadata);\n return addExtension(formattedNumber, input.ext, metadata, options.formatExtension);\n\n default:\n throw new Error(\"Unknown \\\"format\\\" argument passed to \\\"formatNumber()\\\": \\\"\".concat(format, \"\\\"\"));\n }\n}\n\nfunction formatNationalNumber(number, carrierCode, formatAs, metadata, options) {\n var format = chooseFormatForNumber(metadata.formats(), number);\n\n if (!format) {\n return number;\n }\n\n return formatNationalNumberUsingFormat(number, format, {\n useInternationalFormat: formatAs === 'INTERNATIONAL',\n withNationalPrefix: format.nationalPrefixIsOptionalWhenFormattingInNationalFormat() && options && options.nationalPrefix === false ? false : true,\n carrierCode: carrierCode,\n metadata: metadata\n });\n}\n\nfunction chooseFormatForNumber(availableFormats, nationalNnumber) {\n for (var _iterator = availableFormats, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var format = _ref;\n\n // Validate leading digits\n if (format.leadingDigitsPatterns().length > 0) {\n // The last leading_digits_pattern is used here, as it is the most detailed\n var lastLeadingDigitsPattern = format.leadingDigitsPatterns()[format.leadingDigitsPatterns().length - 1]; // If leading digits don't match then move on to the next phone number format\n\n if (nationalNnumber.search(lastLeadingDigitsPattern) !== 0) {\n continue;\n }\n } // Check that the national number matches the phone number format regular expression\n\n\n if (matchesEntirely(nationalNnumber, format.pattern())) {\n return format;\n }\n }\n}\n\nfunction addExtension(formattedNumber, ext, metadata, formatExtension) {\n return ext ? formatExtension(formattedNumber, ext, metadata) : formattedNumber;\n}\n\nfunction formatIDD(nationalNumber, carrierCode, countryCallingCode, fromCountry, metadata) {\n var fromCountryCallingCode = getCountryCallingCode(fromCountry, metadata.metadata); // When calling within the same country calling code.\n\n if (fromCountryCallingCode === countryCallingCode) {\n var formattedNumber = formatNationalNumber(nationalNumber, carrierCode, 'NATIONAL', metadata); // For NANPA regions, return the national format for these regions\n // but prefix it with the country calling code.\n\n if (countryCallingCode === '1') {\n return countryCallingCode + ' ' + formattedNumber;\n } // If regions share a country calling code, the country calling code need\n // not be dialled. This also applies when dialling within a region, so this\n // if clause covers both these cases. Technically this is the case for\n // dialling from La Reunion to other overseas departments of France (French\n // Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover\n // this edge case for now and for those cases return the version including\n // country calling code. Details here:\n // http://www.petitfute.com/voyage/225-info-pratiques-reunion\n //\n\n\n return formattedNumber;\n }\n\n var iddPrefix = getIddPrefix(fromCountry, undefined, metadata.metadata);\n\n if (iddPrefix) {\n return \"\".concat(iddPrefix, \" \").concat(countryCallingCode, \" \").concat(formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata));\n }\n}\n//# sourceMappingURL=format_.js.map","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport Metadata from './metadata';\nimport isPossibleNumber from './isPossibleNumber_';\nimport isValidNumber from './validate_';\nimport isValidNumberForRegion from './isValidNumberForRegion_';\nimport getNumberType from './helpers/getNumberType';\nimport formatNumber from './format_';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\n\nvar PhoneNumber =\n/*#__PURE__*/\nfunction () {\n function PhoneNumber(countryCallingCode, nationalNumber, metadata) {\n _classCallCheck(this, PhoneNumber);\n\n if (!countryCallingCode) {\n throw new TypeError('`country` or `countryCallingCode` not passed');\n }\n\n if (!nationalNumber) {\n throw new TypeError('`nationalNumber` not passed');\n }\n\n if (!metadata) {\n throw new TypeError('`metadata` not passed');\n }\n\n var _metadata = new Metadata(metadata); // If country code is passed then derive `countryCallingCode` from it.\n // Also store the country code as `.country`.\n\n\n if (isCountryCode(countryCallingCode)) {\n this.country = countryCallingCode;\n\n _metadata.country(countryCallingCode);\n\n countryCallingCode = _metadata.countryCallingCode();\n } else {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (_metadata.isNonGeographicCallingCode(countryCallingCode)) {\n this.country = '001';\n }\n }\n }\n\n this.countryCallingCode = countryCallingCode;\n this.nationalNumber = nationalNumber;\n this.number = '+' + this.countryCallingCode + this.nationalNumber;\n this.metadata = metadata;\n }\n\n _createClass(PhoneNumber, [{\n key: \"setExt\",\n value: function setExt(ext) {\n this.ext = ext;\n }\n }, {\n key: \"isPossible\",\n value: function isPossible() {\n return isPossibleNumber(this, {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"isValid\",\n value: function isValid() {\n return isValidNumber(this, {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"isNonGeographic\",\n value: function isNonGeographic() {\n var metadata = new Metadata(this.metadata);\n return metadata.isNonGeographicCallingCode(this.countryCallingCode);\n }\n }, {\n key: \"isEqual\",\n value: function isEqual(phoneNumber) {\n return this.number === phoneNumber.number && this.ext === phoneNumber.ext;\n } // // Is just an alias for `this.isValid() && this.country === country`.\n // // https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\n // isValidForRegion(country) {\n // \treturn isValidNumberForRegion(this, country, { v2: true }, this.metadata)\n // }\n\n }, {\n key: \"getType\",\n value: function getType() {\n return getNumberType(this, {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"format\",\n value: function format(_format, options) {\n return formatNumber(this, _format, options ? _objectSpread({}, options, {\n v2: true\n }) : {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"formatNational\",\n value: function formatNational(options) {\n return this.format('NATIONAL', options);\n }\n }, {\n key: \"formatInternational\",\n value: function formatInternational(options) {\n return this.format('INTERNATIONAL', options);\n }\n }, {\n key: \"getURI\",\n value: function getURI(options) {\n return this.format('RFC3966', options);\n }\n }]);\n\n return PhoneNumber;\n}();\n\nexport { PhoneNumber as default };\n\nvar isCountryCode = function isCountryCode(value) {\n return /^[A-Z]{2}$/.test(value);\n};\n//# sourceMappingURL=PhoneNumber.js.map","import Metadata from '../metadata';\nimport { VALID_DIGITS } from '../constants';\nvar CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])');\nexport default function stripIddPrefix(number, country, callingCode, metadata) {\n if (!country) {\n return;\n } // Check if the number is IDD-prefixed.\n\n\n var countryMetadata = new Metadata(metadata);\n countryMetadata.selectNumberingPlan(country, callingCode);\n var IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix());\n\n if (number.search(IDDPrefixPattern) !== 0) {\n return;\n } // Strip IDD prefix.\n\n\n number = number.slice(number.match(IDDPrefixPattern)[0].length); // If there're any digits after an IDD prefix,\n // then those digits are a country calling code.\n // Since no country code starts with a `0`,\n // the code below validates that the next digit (if present) is not `0`.\n\n var matchedGroups = number.match(CAPTURING_DIGIT_PATTERN);\n\n if (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) {\n if (matchedGroups[1] === '0') {\n return;\n }\n }\n\n return number;\n}\n//# sourceMappingURL=stripIddPrefix.js.map","/**\r\n * Strips any national prefix (such as 0, 1) present in a\r\n * (possibly incomplete) number provided.\r\n * \"Carrier codes\" are only used in Colombia and Brazil,\r\n * and only when dialing within those countries from a mobile phone to a fixed line number.\r\n * Sometimes it won't actually strip national prefix\r\n * and will instead prepend some digits to the `number`:\r\n * for example, when number `2345678` is passed with `VI` country selected,\r\n * it will return `{ number: \"3402345678\" }`, because `340` area code is prepended.\r\n * @param {string} number — National number digits.\r\n * @param {object} metadata — Metadata with country selected.\r\n * @return {object} `{ nationalNumber: string, nationalPrefix: string? carrierCode: string? }`.\r\n */\nexport default function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) {\n if (number && metadata.numberingPlan.nationalPrefixForParsing()) {\n // See METADATA.md for the description of\n // `national_prefix_for_parsing` and `national_prefix_transform_rule`.\n // Attempt to parse the first digits as a national prefix.\n var prefixPattern = new RegExp('^(?:' + metadata.numberingPlan.nationalPrefixForParsing() + ')');\n var prefixMatch = prefixPattern.exec(number);\n\n if (prefixMatch) {\n var nationalNumber;\n var carrierCode; // https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\n // If a `national_prefix_for_parsing` has any \"capturing groups\"\n // then it means that the national (significant) number is equal to\n // those \"capturing groups\" transformed via `national_prefix_transform_rule`,\n // and nothing could be said about the actual national prefix:\n // what is it and was it even there.\n // If a `national_prefix_for_parsing` doesn't have any \"capturing groups\",\n // then everything it matches is a national prefix.\n // To determine whether `national_prefix_for_parsing` matched any\n // \"capturing groups\", the value of the result of calling `.exec()`\n // is looked at, and if it has non-undefined values where there're\n // \"capturing groups\" in the regular expression, then it means\n // that \"capturing groups\" have been matched.\n // It's not possible to tell whether there'll be any \"capturing gropus\"\n // before the matching process, because a `national_prefix_for_parsing`\n // could exhibit both behaviors.\n\n var capturedGroupsCount = prefixMatch.length - 1;\n var hasCapturedGroups = capturedGroupsCount > 0 && prefixMatch[capturedGroupsCount];\n\n if (metadata.nationalPrefixTransformRule() && hasCapturedGroups) {\n nationalNumber = number.replace(prefixPattern, metadata.nationalPrefixTransformRule()); // If there's more than one captured group,\n // then carrier code is the second one.\n\n if (capturedGroupsCount > 1) {\n carrierCode = prefixMatch[1];\n }\n } // If there're no \"capturing groups\",\n // or if there're \"capturing groups\" but no\n // `national_prefix_transform_rule`,\n // then just strip the national prefix from the number,\n // and possibly a carrier code.\n // Seems like there could be more.\n else {\n // `prefixBeforeNationalNumber` is the whole substring matched by\n // the `national_prefix_for_parsing` regular expression.\n // There seem to be no guarantees that it's just a national prefix.\n // For example, if there's a carrier code, it's gonna be a\n // part of `prefixBeforeNationalNumber` too.\n var prefixBeforeNationalNumber = prefixMatch[0];\n nationalNumber = number.slice(prefixBeforeNationalNumber.length); // If there's at least one captured group,\n // then carrier code is the first one.\n\n if (hasCapturedGroups) {\n carrierCode = prefixMatch[1];\n }\n } // Tries to guess whether a national prefix was present in the input.\n // This is not something copy-pasted from Google's library:\n // they don't seem to have an equivalent for that.\n // So this isn't an \"officially approved\" way of doing something like that.\n // But since there seems no other existing method, this library uses it.\n\n\n var nationalPrefix;\n\n if (hasCapturedGroups) {\n var possiblePositionOfTheFirstCapturedGroup = number.indexOf(prefixMatch[1]);\n var possibleNationalPrefix = number.slice(0, possiblePositionOfTheFirstCapturedGroup); // Example: an Argentinian (AR) phone number `0111523456789`.\n // `prefixMatch[0]` is `01115`, and `$1` is `11`,\n // and the rest of the phone number is `23456789`.\n // The national number is transformed via `9$1` to `91123456789`.\n // National prefix `0` is detected being present at the start.\n // if (possibleNationalPrefix.indexOf(metadata.numberingPlan.nationalPrefix()) === 0) {\n\n if (possibleNationalPrefix === metadata.numberingPlan.nationalPrefix()) {\n nationalPrefix = metadata.numberingPlan.nationalPrefix();\n }\n } else {\n nationalPrefix = prefixMatch[0];\n }\n\n return {\n nationalNumber: nationalNumber,\n nationalPrefix: nationalPrefix,\n carrierCode: carrierCode\n };\n }\n }\n\n return {\n nationalNumber: number\n };\n}\n//# sourceMappingURL=extractNationalNumberFromPossiblyIncompleteNumber.js.map","import extractNationalNumberFromPossiblyIncompleteNumber from './extractNationalNumberFromPossiblyIncompleteNumber';\nimport matchesEntirely from './matchesEntirely';\nimport checkNumberLength from './checkNumberLength';\n/**\r\n * Strips national prefix and carrier code from a complete phone number.\r\n * The difference from the non-\"FromCompleteNumber\" function is that\r\n * it won't extract national prefix if the resultant number is too short\r\n * to be a complete number for the selected phone numbering plan.\r\n * @param {string} number — Complete phone number digits.\r\n * @param {Metadata} metadata — Metadata with a phone numbering plan selected.\r\n * @return {object} `{ nationalNumber: string, carrierCode: string? }`.\r\n */\n\nexport default function extractNationalNumber(number, metadata) {\n // Parsing national prefixes and carrier codes\n // is only required for local phone numbers\n // but some people don't understand that\n // and sometimes write international phone numbers\n // with national prefixes (or maybe even carrier codes).\n // http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html\n // Google's original library forgives such mistakes\n // and so does this library, because it has been requested:\n // https://github.com/catamphetamine/libphonenumber-js/issues/127\n var _extractNationalNumbe = extractNationalNumberFromPossiblyIncompleteNumber(number, metadata),\n nationalNumber = _extractNationalNumbe.nationalNumber,\n carrierCode = _extractNationalNumbe.carrierCode;\n\n if (!shouldExtractNationalPrefix(number, nationalNumber, metadata)) {\n // Don't strip the national prefix.\n return {\n nationalNumber: number\n };\n } // If a national prefix has been extracted, check to see\n // if the resultant number isn't too short.\n // Same code in Google's `libphonenumber`:\n // https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3291-L3302\n // For some reason, they do this check right after the `national_number_pattern` check\n // this library does in `shouldExtractNationalPrefix()` function.\n // Why is there a second \"resultant\" number validity check?\n // They don't provide an explanation.\n // This library just copies the behavior.\n\n\n if (number.length !== nationalNumber.length + (carrierCode ? carrierCode.length : 0)) {\n // If not using legacy generated metadata (before version `1.0.18`)\n // then it has \"possible lengths\", so use those to validate the number length.\n if (metadata.possibleLengths()) {\n // \"We require that the NSN remaining after stripping the national prefix and\n // carrier code be long enough to be a possible length for the region.\n // Otherwise, we don't do the stripping, since the original number could be\n // a valid short number.\"\n // https://github.com/google/libphonenumber/blob/876268eb1ad6cdc1b7b5bef17fc5e43052702d57/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3236-L3250\n switch (checkNumberLength(nationalNumber, metadata)) {\n case 'TOO_SHORT':\n case 'INVALID_LENGTH':\n // case 'IS_POSSIBLE_LOCAL_ONLY':\n // Don't strip the national prefix.\n return {\n nationalNumber: number\n };\n }\n }\n }\n\n return {\n nationalNumber: nationalNumber,\n carrierCode: carrierCode\n };\n} // In some countries, the same digit could be a national prefix\n// or a leading digit of a valid phone number.\n// For example, in Russia, national prefix is `8`,\n// and also `800 555 35 35` is a valid number\n// in which `8` is not a national prefix, but the first digit\n// of a national (significant) number.\n// Same's with Belarus:\n// `82004910060` is a valid national (significant) number,\n// but `2004910060` is not.\n// To support such cases (to prevent the code from always stripping\n// national prefix), a condition is imposed: a national prefix\n// is not extracted when the original number is \"viable\" and the\n// resultant number is not, a \"viable\" national number being the one\n// that matches `national_number_pattern`.\n\nfunction shouldExtractNationalPrefix(number, nationalSignificantNumber, metadata) {\n // The equivalent in Google's code is:\n // https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L2969-L3004\n if (matchesEntirely(number, metadata.nationalNumberPattern()) && !matchesEntirely(nationalSignificantNumber, metadata.nationalNumberPattern())) {\n return false;\n } // Just \"possible\" number check would be more relaxed, so it's not used.\n // if (isPossibleNumber(number, metadata) &&\n // \t!isPossibleNumber(numberWithNationalPrefixExtracted, metadata)) {\n // \treturn false\n // }\n\n\n return true;\n}\n//# sourceMappingURL=extractNationalNumber.js.map","import Metadata from '../metadata';\nimport matchesEntirely from './matchesEntirely';\nimport extractNationalNumber from './extractNationalNumber';\nimport checkNumberLength from './checkNumberLength';\nimport getCountryCallingCode from '../getCountryCallingCode';\n/**\r\n * Sometimes some people incorrectly input international phone numbers\r\n * without the leading `+`. This function corrects such input.\r\n * @param {string} number — Phone number digits.\r\n * @param {string?} country\r\n * @param {string?} callingCode\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`.\r\n */\n\nexport default function extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, callingCode, metadata) {\n var countryCallingCode = country ? getCountryCallingCode(country, metadata) : callingCode;\n\n if (number.indexOf(countryCallingCode) === 0) {\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(country, callingCode);\n var possibleShorterNumber = number.slice(countryCallingCode.length);\n\n var _extractNationalNumbe = extractNationalNumber(possibleShorterNumber, metadata),\n possibleShorterNationalNumber = _extractNationalNumbe.nationalNumber;\n\n var _extractNationalNumbe2 = extractNationalNumber(number, metadata),\n nationalNumber = _extractNationalNumbe2.nationalNumber; // If the number was not valid before but is valid now,\n // or if it was too long before, we consider the number\n // with the country calling code stripped to be a better result\n // and keep that instead.\n // For example, in Germany (+49), `49` is a valid area code,\n // so if a number starts with `49`, it could be both a valid\n // national German number or an international number without\n // a leading `+`.\n\n\n if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) && matchesEntirely(possibleShorterNationalNumber, metadata.nationalNumberPattern()) || checkNumberLength(nationalNumber, metadata) === 'TOO_LONG') {\n return {\n countryCallingCode: countryCallingCode,\n number: possibleShorterNumber\n };\n }\n }\n\n return {\n number: number\n };\n}\n//# sourceMappingURL=extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js.map","import stripIddPrefix from './stripIddPrefix';\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './extractCountryCallingCodeFromInternationalNumberWithoutPlusSign';\nimport Metadata from '../metadata';\nimport { MAX_LENGTH_COUNTRY_CODE } from '../constants';\n/**\r\n * Converts a phone number digits (possibly with a `+`)\r\n * into a calling code and the rest phone number digits.\r\n * The \"rest phone number digits\" could include\r\n * a national prefix, carrier code, and national\r\n * (significant) number.\r\n * @param {string} number — Phone number digits (possibly with a `+`).\r\n * @param {string} [country] — Default country.\r\n * @param {string} [callingCode] — Default calling code (some phone numbering plans are non-geographic).\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`\r\n * @example\r\n * // Returns `{ countryCallingCode: \"1\", number: \"2133734253\" }`.\r\n * extractCountryCallingCode('2133734253', 'US', null, metadata)\r\n * extractCountryCallingCode('2133734253', null, '1', metadata)\r\n * extractCountryCallingCode('+12133734253', null, null, metadata)\r\n * extractCountryCallingCode('+12133734253', 'RU', null, metadata)\r\n */\n\nexport default function extractCountryCallingCode(number, country, callingCode, metadata) {\n if (!number) {\n return {};\n } // If this is not an international phone number,\n // then either extract an \"IDD\" prefix, or extract a\n // country calling code from a number by autocorrecting it\n // by prepending a leading `+` in cases when it starts\n // with the country calling code.\n // https://wikitravel.org/en/International_dialling_prefix\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n\n\n if (number[0] !== '+') {\n // Convert an \"out-of-country\" dialing phone number\n // to a proper international phone number.\n var numberWithoutIDD = stripIddPrefix(number, country, callingCode, metadata); // If an IDD prefix was stripped then\n // convert the number to international one\n // for subsequent parsing.\n\n if (numberWithoutIDD && numberWithoutIDD !== number) {\n number = '+' + numberWithoutIDD;\n } else {\n // Check to see if the number starts with the country calling code\n // for the default country. If so, we remove the country calling code,\n // and do some checks on the validity of the number before and after.\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n if (country || callingCode) {\n var _extractCountryCallin = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, callingCode, metadata),\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n shorterNumber = _extractCountryCallin.number;\n\n if (countryCallingCode) {\n return {\n countryCallingCode: countryCallingCode,\n number: shorterNumber\n };\n }\n }\n\n return {\n number: number\n };\n }\n } // Fast abortion: country codes do not begin with a '0'\n\n\n if (number[1] === '0') {\n return {};\n }\n\n metadata = new Metadata(metadata); // The thing with country phone codes\n // is that they are orthogonal to each other\n // i.e. there's no such country phone code A\n // for which country phone code B exists\n // where B starts with A.\n // Therefore, while scanning digits,\n // if a valid country code is found,\n // that means that it is the country code.\n //\n\n var i = 2;\n\n while (i - 1 <= MAX_LENGTH_COUNTRY_CODE && i <= number.length) {\n var _countryCallingCode = number.slice(1, i);\n\n if (metadata.hasCallingCode(_countryCallingCode)) {\n metadata.selectNumberingPlan(_countryCallingCode);\n return {\n countryCallingCode: _countryCallingCode,\n number: number.slice(i)\n };\n }\n\n i++;\n }\n\n return {};\n}\n//# sourceMappingURL=extractCountryCallingCode.js.map","import Metadata from '../metadata';\nimport getNumberType from './getNumberType';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\nexport default function getCountryByCallingCode(callingCode, nationalPhoneNumber, metadata) {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(callingCode)) {\n return '001';\n }\n } // Is always non-empty, because `callingCode` is always valid\n\n\n var possibleCountries = metadata.getCountryCodesForCallingCode(callingCode);\n\n if (!possibleCountries) {\n return;\n } // If there's just one country corresponding to the country code,\n // then just return it, without further phone number digits validation.\n\n\n if (possibleCountries.length === 1) {\n return possibleCountries[0];\n }\n\n return selectCountryFromList(possibleCountries, nationalPhoneNumber, metadata.metadata);\n}\n\nfunction selectCountryFromList(possibleCountries, nationalPhoneNumber, metadata) {\n // Re-create `metadata` because it will be selecting a `country`.\n metadata = new Metadata(metadata);\n\n for (var _iterator = possibleCountries, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var country = _ref;\n metadata.country(country); // Leading digits check would be the simplest and fastest one.\n // Leading digits patterns are only defined for about 20% of all countries.\n // https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits\n // Matching \"leading digits\" is a sufficient but not necessary condition.\n\n if (metadata.leadingDigits()) {\n if (nationalPhoneNumber && nationalPhoneNumber.search(metadata.leadingDigits()) === 0) {\n return country;\n }\n } // Else perform full validation with all of those\n // fixed-line/mobile/etc regular expressions.\n else if (getNumberType({\n phone: nationalPhoneNumber,\n country: country\n }, undefined, metadata.metadata)) {\n return country;\n }\n }\n}\n//# sourceMappingURL=getCountryByCallingCode.js.map","// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\nimport { VALID_DIGITS, PLUS_CHARS, MIN_LENGTH_FOR_NSN, MAX_LENGTH_FOR_NSN } from './constants';\nimport ParseError from './ParseError';\nimport Metadata from './metadata';\nimport isViablePhoneNumber, { isViablePhoneNumberStart } from './helpers/isViablePhoneNumber';\nimport extractExtension from './helpers/extension/extractExtension';\nimport parseIncompletePhoneNumber from './parseIncompletePhoneNumber';\nimport getCountryCallingCode from './getCountryCallingCode';\nimport { isPossibleNumber } from './isPossibleNumber_';\nimport { parseRFC3966 } from './helpers/RFC3966';\nimport PhoneNumber from './PhoneNumber';\nimport matchesEntirely from './helpers/matchesEntirely';\nimport extractCountryCallingCode from './helpers/extractCountryCallingCode';\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign';\nimport extractNationalNumber from './helpers/extractNationalNumber';\nimport stripIddPrefix from './helpers/stripIddPrefix';\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode'; // We don't allow input strings for parsing to be longer than 250 chars.\n// This prevents malicious input from consuming CPU.\n\nvar MAX_INPUT_STRING_LENGTH = 250; // This consists of the plus symbol, digits, and arabic-indic digits.\n\nvar PHONE_NUMBER_START_PATTERN = new RegExp('[' + PLUS_CHARS + VALID_DIGITS + ']'); // Regular expression of trailing characters that we want to remove.\n// A trailing `#` is sometimes used when writing phone numbers with extensions in US.\n// Example: \"+1 (645) 123 1234-910#\" number has extension \"910\".\n\nvar AFTER_PHONE_NUMBER_END_PATTERN = new RegExp('[^' + VALID_DIGITS + '#' + ']+$');\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false; // Examples:\n//\n// ```js\n// parse('8 (800) 555-35-35', 'RU')\n// parse('8 (800) 555-35-35', 'RU', metadata)\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } })\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata)\n// parse('+7 800 555 35 35')\n// parse('+7 800 555 35 35', metadata)\n// ```\n//\n\nexport default function parse(text, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {};\n metadata = new Metadata(metadata); // Validate `defaultCountry`.\n\n if (options.defaultCountry && !metadata.hasCountry(options.defaultCountry)) {\n if (options.v2) {\n throw new ParseError('INVALID_COUNTRY');\n }\n\n throw new Error(\"Unknown country: \".concat(options.defaultCountry));\n } // Parse the phone number.\n\n\n var _parseInput = parseInput(text, options.v2, options.extract),\n formattedPhoneNumber = _parseInput.number,\n ext = _parseInput.ext,\n error = _parseInput.error; // If the phone number is not viable then return nothing.\n\n\n if (!formattedPhoneNumber) {\n if (options.v2) {\n if (error === 'TOO_SHORT') {\n throw new ParseError('TOO_SHORT');\n }\n\n throw new ParseError('NOT_A_NUMBER');\n }\n\n return {};\n }\n\n var _parsePhoneNumber = parsePhoneNumber(formattedPhoneNumber, options.defaultCountry, options.defaultCallingCode, metadata),\n country = _parsePhoneNumber.country,\n nationalNumber = _parsePhoneNumber.nationalNumber,\n countryCallingCode = _parsePhoneNumber.countryCallingCode,\n carrierCode = _parsePhoneNumber.carrierCode;\n\n if (!metadata.hasSelectedNumberingPlan()) {\n if (options.v2) {\n throw new ParseError('INVALID_COUNTRY');\n }\n\n return {};\n } // Validate national (significant) number length.\n\n\n if (!nationalNumber || nationalNumber.length < MIN_LENGTH_FOR_NSN) {\n // Won't throw here because the regexp already demands length > 1.\n\n /* istanbul ignore if */\n if (options.v2) {\n throw new ParseError('TOO_SHORT');\n } // Google's demo just throws an error in this case.\n\n\n return {};\n } // Validate national (significant) number length.\n //\n // A sidenote:\n //\n // They say that sometimes national (significant) numbers\n // can be longer than `MAX_LENGTH_FOR_NSN` (e.g. in Germany).\n // https://github.com/googlei18n/libphonenumber/blob/7e1748645552da39c4e1ba731e47969d97bdb539/resources/phonenumber.proto#L36\n // Such numbers will just be discarded.\n //\n\n\n if (nationalNumber.length > MAX_LENGTH_FOR_NSN) {\n if (options.v2) {\n throw new ParseError('TOO_LONG');\n } // Google's demo just throws an error in this case.\n\n\n return {};\n }\n\n if (options.v2) {\n var phoneNumber = new PhoneNumber(countryCallingCode, nationalNumber, metadata.metadata);\n\n if (country) {\n phoneNumber.country = country;\n }\n\n if (carrierCode) {\n phoneNumber.carrierCode = carrierCode;\n }\n\n if (ext) {\n phoneNumber.ext = ext;\n }\n\n return phoneNumber;\n } // Check if national phone number pattern matches the number.\n // National number pattern is different for each country,\n // even for those ones which are part of the \"NANPA\" group.\n\n\n var valid = (options.extended ? metadata.hasSelectedNumberingPlan() : country) ? matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) : false;\n\n if (!options.extended) {\n return valid ? result(country, nationalNumber, ext) : {};\n } // isInternational: countryCallingCode !== undefined\n\n\n return {\n country: country,\n countryCallingCode: countryCallingCode,\n carrierCode: carrierCode,\n valid: valid,\n possible: valid ? true : options.extended === true && metadata.possibleLengths() && isPossibleNumber(nationalNumber, metadata) ? true : false,\n phone: nationalNumber,\n ext: ext\n };\n}\n/**\r\n * Extracts a formatted phone number from text.\r\n * Doesn't guarantee that the extracted phone number\r\n * is a valid phone number (for example, doesn't validate its length).\r\n * @param {string} text\r\n * @param {boolean} [extract] — If `false`, then will parse the entire `text` as a phone number.\r\n * @param {boolean} [throwOnError] — By default, it won't throw if the text is too long.\r\n * @return {string}\r\n * @example\r\n * // Returns \"(213) 373-4253\".\r\n * extractFormattedPhoneNumber(\"Call (213) 373-4253 for assistance.\")\r\n */\n\nfunction extractFormattedPhoneNumber(text, extract, throwOnError) {\n if (!text) {\n return;\n }\n\n if (text.length > MAX_INPUT_STRING_LENGTH) {\n if (throwOnError) {\n throw new ParseError('TOO_LONG');\n }\n\n return;\n }\n\n if (extract === false) {\n return text;\n } // Attempt to extract a possible number from the string passed in\n\n\n var startsAt = text.search(PHONE_NUMBER_START_PATTERN);\n\n if (startsAt < 0) {\n return;\n }\n\n return text // Trim everything to the left of the phone number\n .slice(startsAt) // Remove trailing non-numerical characters\n .replace(AFTER_PHONE_NUMBER_END_PATTERN, '');\n}\n/**\r\n * @param {string} text - Input.\r\n * @param {boolean} v2 - Legacy API functions don't pass `v2: true` flag.\r\n * @param {boolean} [extract] - Whether to extract a phone number from `text`, or attempt to parse the entire text as a phone number.\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\n\n\nfunction parseInput(text, v2, extract) {\n // Parse RFC 3966 phone number URI.\n if (text && text.indexOf('tel:') === 0) {\n return parseRFC3966(text);\n }\n\n var number = extractFormattedPhoneNumber(text, extract, v2); // If the phone number is not viable, then abort.\n\n if (!number) {\n return {};\n }\n\n if (!isViablePhoneNumber(number)) {\n if (isViablePhoneNumberStart(number)) {\n return {\n error: 'TOO_SHORT'\n };\n }\n\n return {};\n } // Attempt to parse extension first, since it doesn't require region-specific\n // data and we want to have the non-normalised number here.\n\n\n var withExtensionStripped = extractExtension(number);\n\n if (withExtensionStripped.ext) {\n return withExtensionStripped;\n }\n\n return {\n number: number\n };\n}\n/**\r\n * Creates `parse()` result object.\r\n */\n\n\nfunction result(country, nationalNumber, ext) {\n var result = {\n country: country,\n phone: nationalNumber\n };\n\n if (ext) {\n result.ext = ext;\n }\n\n return result;\n}\n/**\r\n * Parses a viable phone number.\r\n * @param {string} formattedPhoneNumber — Example: \"(213) 373-4253\".\r\n * @param {string} [defaultCountry]\r\n * @param {string} [defaultCallingCode]\r\n * @param {Metadata} metadata\r\n * @return {object} Returns `{ country: string?, countryCallingCode: string?, nationalNumber: string? }`.\r\n */\n\n\nfunction parsePhoneNumber(formattedPhoneNumber, defaultCountry, defaultCallingCode, metadata) {\n // Extract calling code from phone number.\n var _extractCountryCallin = extractCountryCallingCode(parseIncompletePhoneNumber(formattedPhoneNumber), defaultCountry, defaultCallingCode, metadata.metadata),\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n number = _extractCountryCallin.number; // Choose a country by `countryCallingCode`.\n\n\n var country;\n\n if (countryCallingCode) {\n metadata.selectNumberingPlan(countryCallingCode);\n } // If `formattedPhoneNumber` is in \"national\" format\n // then `number` is defined and `countryCallingCode` isn't.\n else if (number && (defaultCountry || defaultCallingCode)) {\n metadata.selectNumberingPlan(defaultCountry, defaultCallingCode);\n\n if (defaultCountry) {\n country = defaultCountry;\n } else {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(defaultCallingCode)) {\n country = '001';\n }\n }\n }\n\n countryCallingCode = defaultCallingCode || getCountryCallingCode(defaultCountry, metadata.metadata);\n } else return {};\n\n if (!number) {\n return {\n countryCallingCode: countryCallingCode\n };\n }\n\n var _extractNationalNumbe = extractNationalNumber(parseIncompletePhoneNumber(number), metadata),\n nationalNumber = _extractNationalNumbe.nationalNumber,\n carrierCode = _extractNationalNumbe.carrierCode; // Sometimes there are several countries\n // corresponding to the same country phone code\n // (e.g. NANPA countries all having `1` country phone code).\n // Therefore, to reliably determine the exact country,\n // national (significant) number should have been parsed first.\n //\n // When `metadata.json` is generated, all \"ambiguous\" country phone codes\n // get their countries populated with the full set of\n // \"phone number type\" regular expressions.\n //\n\n\n var exactCountry = getCountryByCallingCode(countryCallingCode, nationalNumber, metadata);\n\n if (exactCountry) {\n country = exactCountry;\n /* istanbul ignore if */\n\n if (exactCountry === '001') {// Can't happen with `USE_NON_GEOGRAPHIC_COUNTRY_CODE` being `false`.\n // If `USE_NON_GEOGRAPHIC_COUNTRY_CODE` is set to `true` for some reason,\n // then remove the \"istanbul ignore if\".\n } else {\n metadata.country(country);\n }\n }\n\n return {\n country: country,\n countryCallingCode: countryCallingCode,\n nationalNumber: nationalNumber,\n carrierCode: carrierCode\n };\n}\n//# sourceMappingURL=parse_.js.map","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport parseNumber from './parse_';\nexport default function parsePhoneNumber(text, options, metadata) {\n return parseNumber(text, _objectSpread({}, options, {\n v2: true\n }), metadata);\n}\n//# sourceMappingURL=parsePhoneNumber_.js.map","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport parsePhoneNumber_ from './parsePhoneNumber_';\nexport default function parsePhoneNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return parsePhoneNumber_(text, options, metadata);\n}\nexport function normalizeArguments(args) {\n var _Array$prototype$slic = Array.prototype.slice.call(args),\n _Array$prototype$slic2 = _slicedToArray(_Array$prototype$slic, 4),\n arg_1 = _Array$prototype$slic2[0],\n arg_2 = _Array$prototype$slic2[1],\n arg_3 = _Array$prototype$slic2[2],\n arg_4 = _Array$prototype$slic2[3];\n\n var text;\n var options;\n var metadata; // If the phone number is passed as a string.\n // `parsePhoneNumber('88005553535', ...)`.\n\n if (typeof arg_1 === 'string') {\n text = arg_1;\n } else throw new TypeError('A text for parsing must be a string.'); // If \"default country\" argument is being passed then move it to `options`.\n // `parsePhoneNumber('88005553535', 'RU', [options], metadata)`.\n\n\n if (!arg_2 || typeof arg_2 === 'string') {\n if (arg_4) {\n options = arg_3;\n metadata = arg_4;\n } else {\n options = undefined;\n metadata = arg_3;\n }\n\n if (arg_2) {\n options = _objectSpread({\n defaultCountry: arg_2\n }, options);\n }\n } // `defaultCountry` is not passed.\n // Example: `parsePhoneNumber('+78005553535', [options], metadata)`.\n else if (isObject(arg_2)) {\n if (arg_3) {\n options = arg_2;\n metadata = arg_3;\n } else {\n metadata = arg_2;\n }\n } else throw new Error(\"Invalid second argument: \".concat(arg_2));\n\n return {\n text: text,\n options: options,\n metadata: metadata\n };\n} // Otherwise istanbul would show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\nvar isObject = function isObject(_) {\n return _typeof(_) === 'object';\n};\n//# sourceMappingURL=parsePhoneNumber.js.map","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport parsePhoneNumber from './parsePhoneNumber_';\nimport ParseError from './ParseError';\nimport { isSupportedCountry } from './metadata';\nexport default function parsePhoneNumberFromString(text, options, metadata) {\n // Validate `defaultCountry`.\n if (options && options.defaultCountry && !isSupportedCountry(options.defaultCountry, metadata)) {\n options = _objectSpread({}, options, {\n defaultCountry: undefined\n });\n } // Parse phone number.\n\n\n try {\n return parsePhoneNumber(text, options, metadata);\n } catch (error) {\n /* istanbul ignore else */\n if (error instanceof ParseError) {//\n } else {\n throw error;\n }\n }\n}\n//# sourceMappingURL=parsePhoneNumberFromString_.js.map","import { normalizeArguments } from './parsePhoneNumber';\nimport parsePhoneNumberFromString_ from './parsePhoneNumberFromString_';\nexport default function parsePhoneNumberFromString() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return parsePhoneNumberFromString_(text, options, metadata);\n}\n//# sourceMappingURL=parsePhoneNumberFromString.js.map","import { withMetadata } from '../metadata'\r\nimport { parsePhoneNumberFromString as _parsePhoneNumberFromString } from '../../core/index'\r\n\r\nexport function parsePhoneNumberFromString() {\r\n\treturn withMetadata(_parsePhoneNumberFromString, arguments)\r\n}","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport { parsePhoneNumberFromString } from 'libphonenumber-js';\nexport var IS_PHONE_NUMBER = 'isPhoneNumber';\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, region) {\n try {\n var phoneNum = parsePhoneNumberFromString(value, region);\n var result = phoneNum === null || phoneNum === void 0 ? void 0 : phoneNum.isValid();\n return !!result;\n }\n catch (error) {\n // logging?\n return false;\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(region, validationOptions) {\n return ValidateBy({\n name: IS_PHONE_NUMBER,\n constraints: [region],\n validator: {\n validate: function (value, args) { return isPhoneNumber(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid phone number'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsPhoneNumber.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport matchesValidator from 'validator/lib/matches';\nexport var IS_MILITARY_TIME = 'isMilitaryTime';\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) {\n var militaryTimeRegex = /^([01]\\d|2[0-3]):?([0-5]\\d)$/;\n return typeof value === 'string' && matchesValidator(value, militaryTimeRegex);\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) {\n return ValidateBy({\n name: IS_MILITARY_TIME,\n validator: {\n validate: function (value, args) { return isMilitaryTime(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid representation of military time in the format HH:MM'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsMilitaryTime.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isHash;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar lengths = {\n md5: 32,\n md4: 32,\n sha1: 40,\n sha256: 64,\n sha384: 96,\n sha512: 128,\n ripemd128: 32,\n ripemd160: 40,\n tiger128: 32,\n tiger160: 40,\n tiger192: 48,\n crc32: 8,\n crc32b: 8\n};\n\nfunction isHash(str, algorithm) {\n (0, _assertString.default)(str);\n var hash = new RegExp(\"^[a-fA-F0-9]{\".concat(lengths[algorithm], \"}$\"));\n return hash.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isHashValidator from 'validator/lib/isHash';\nexport var IS_HASH = 'isHash';\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, algorithm) {\n return typeof value === 'string' && isHashValidator(value, algorithm);\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, validationOptions) {\n return ValidateBy({\n name: IS_HASH,\n constraints: [algorithm],\n validator: {\n validate: function (value, args) { return isHash(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a hash of type $constraint1'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsHash.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISSN;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar issn = '^\\\\d{4}-?\\\\d{3}[\\\\dX]$';\n\nfunction isISSN(str) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, _assertString.default)(str);\n var testIssn = issn;\n testIssn = options.require_hyphen ? testIssn.replace('?', '') : testIssn;\n testIssn = options.case_sensitive ? new RegExp(testIssn) : new RegExp(testIssn, 'i');\n\n if (!testIssn.test(str)) {\n return false;\n }\n\n var digits = str.replace('-', '').toUpperCase();\n var checksum = 0;\n\n for (var i = 0; i < digits.length; i++) {\n var digit = digits[i];\n checksum += (digit === 'X' ? 10 : +digit) * (8 - i);\n }\n\n return checksum % 11 === 0;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isISSNValidator from 'validator/lib/isISSN';\nexport var IS_ISSN = 'isISSN';\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, options) {\n return typeof value === 'string' && isISSNValidator(value, options);\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, validationOptions) {\n return ValidateBy({\n name: IS_ISSN,\n constraints: [options],\n validator: {\n validate: function (value, args) { return isISSN(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a ISSN'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsISSN.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport { isISO8601 } from './IsISO8601';\nexport var IS_DATE_STRING = 'isDateString';\n/**\n * Alias for IsISO8601 validator\n */\nexport function isDateString(value, options) {\n return isISO8601(value, options);\n}\n/**\n * Alias for IsISO8601 validator\n */\nexport function IsDateString(options, validationOptions) {\n return ValidateBy({\n name: IS_DATE_STRING,\n constraints: [options],\n validator: {\n validate: function (value, args) { return isDateString(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid ISO 8601 date string'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsDateString.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBoolean;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar defaultOptions = {\n loose: false\n};\nvar strictBooleans = ['true', 'false', '1', '0'];\nvar looseBooleans = [].concat(strictBooleans, ['yes', 'no']);\n\nfunction isBoolean(str) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultOptions;\n (0, _assertString.default)(str);\n\n if (options.loose) {\n return looseBooleans.includes(str.toLowerCase());\n }\n\n return strictBooleans.includes(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isBooleanValidator from 'validator/lib/isBoolean';\nexport var IS_BOOLEAN_STRING = 'isBooleanString';\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) {\n return typeof value === 'string' && isBooleanValidator(value);\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) {\n return ValidateBy({\n name: IS_BOOLEAN_STRING,\n validator: {\n validate: function (value, args) { return isBooleanString(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a boolean string'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsBooleanString.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isNumeric;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _alpha = require(\"./alpha\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar numericNoSymbols = /^[0-9]+$/;\n\nfunction isNumeric(str, options) {\n (0, _assertString.default)(str);\n\n if (options && options.no_symbols) {\n return numericNoSymbols.test(str);\n }\n\n return new RegExp(\"^[+-]?([0-9]*[\".concat((options || {}).locale ? _alpha.decimal[options.locale] : '.', \"])?[0-9]+$\")).test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isNumericValidator from 'validator/lib/isNumeric';\nexport var IS_NUMBER_STRING = 'isNumberString';\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, options) {\n return typeof value === 'string' && isNumericValidator(value, options);\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(options, validationOptions) {\n return ValidateBy({\n name: IS_NUMBER_STRING,\n constraints: [options],\n validator: {\n validate: function (value, args) { return isNumberString(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a number string'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsNumberString.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBase32;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar base32 = /^[A-Z2-7]+=*$/;\n\nfunction isBase32(str) {\n (0, _assertString.default)(str);\n var len = str.length;\n\n if (len % 8 === 0 && base32.test(str)) {\n return true;\n }\n\n return false;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isBase32Validator from 'validator/lib/isBase32';\nexport var IS_BASE32 = 'isBase32';\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) {\n return typeof value === 'string' && isBase32Validator(value);\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) {\n return ValidateBy({\n name: IS_BASE32,\n validator: {\n validate: function (value, args) { return isBase32(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be base32 encoded'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsBase32.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBIC;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _isISO31661Alpha = require(\"./isISO31661Alpha2\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// https://en.wikipedia.org/wiki/ISO_9362\nvar isBICReg = /^[A-Za-z]{6}[A-Za-z0-9]{2}([A-Za-z0-9]{3})?$/;\n\nfunction isBIC(str) {\n (0, _assertString.default)(str); // toUpperCase() should be removed when a new major version goes out that changes\n // the regex to [A-Z] (per the spec).\n\n if (!_isISO31661Alpha.CountryCodes.has(str.slice(4, 6).toUpperCase())) {\n return false;\n }\n\n return isBICReg.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isBICValidator from 'validator/lib/isBIC';\nexport var IS_BIC = 'isBIC';\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) {\n return typeof value === 'string' && isBICValidator(value);\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) {\n return ValidateBy({\n name: IS_BIC,\n validator: {\n validate: function (value, args) { return isBIC(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a BIC or SWIFT code'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsBIC.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBtcAddress;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// supports Bech32 addresses\nvar bech32 = /^(bc1)[a-z0-9]{25,39}$/;\nvar base58 = /^(1|3)[A-HJ-NP-Za-km-z1-9]{25,39}$/;\n\nfunction isBtcAddress(str) {\n (0, _assertString.default)(str); // check for bech32\n\n if (str.startsWith('bc1')) {\n return bech32.test(str);\n }\n\n return base58.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isBtcAddressValidator from 'validator/lib/isBtcAddress';\nexport var IS_BTC_ADDRESS = 'isBtcAddress';\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) {\n return typeof value === 'string' && isBtcAddressValidator(value);\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) {\n return ValidateBy({\n name: IS_BTC_ADDRESS,\n validator: {\n validate: function (value, args) { return isBtcAddress(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a BTC address'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsBtcAddress.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isDataURI;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar validMediaType = /^[a-z]+\\/[a-z0-9\\-\\+]+$/i;\nvar validAttribute = /^[a-z\\-]+=[a-z0-9\\-]+$/i;\nvar validData = /^[a-z0-9!\\$&'\\(\\)\\*\\+,;=\\-\\._~:@\\/\\?%\\s]*$/i;\n\nfunction isDataURI(str) {\n (0, _assertString.default)(str);\n var data = str.split(',');\n\n if (data.length < 2) {\n return false;\n }\n\n var attributes = data.shift().trim().split(';');\n var schemeAndMediaType = attributes.shift();\n\n if (schemeAndMediaType.substr(0, 5) !== 'data:') {\n return false;\n }\n\n var mediaType = schemeAndMediaType.substr(5);\n\n if (mediaType !== '' && !validMediaType.test(mediaType)) {\n return false;\n }\n\n for (var i = 0; i < attributes.length; i++) {\n if (!(i === attributes.length - 1 && attributes[i].toLowerCase() === 'base64') && !validAttribute.test(attributes[i])) {\n return false;\n }\n }\n\n for (var _i = 0; _i < data.length; _i++) {\n if (!validData.test(data[_i])) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isDataURIValidator from 'validator/lib/isDataURI';\nexport var IS_DATA_URI = 'isDataURI';\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) {\n return typeof value === 'string' && isDataURIValidator(value);\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) {\n return ValidateBy({\n name: IS_DATA_URI,\n validator: {\n validate: function (value, args) { return isDataURI(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a data uri format'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsDataURI.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isEAN;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The most commonly used EAN standard is\n * the thirteen-digit EAN-13, while the\n * less commonly used 8-digit EAN-8 barcode was\n * introduced for use on small packages.\n * Also EAN/UCC-14 is used for Grouping of individual\n * trade items above unit level(Intermediate, Carton or Pallet).\n * For more info about EAN-14 checkout: https://www.gtin.info/itf-14-barcodes/\n * EAN consists of:\n * GS1 prefix, manufacturer code, product code and check digit\n * Reference: https://en.wikipedia.org/wiki/International_Article_Number\n * Reference: https://www.gtin.info/\n */\n\n/**\n * Define EAN Lenghts; 8 for EAN-8; 13 for EAN-13; 14 for EAN-14\n * and Regular Expression for valid EANs (EAN-8, EAN-13, EAN-14),\n * with exact numberic matching of 8 or 13 or 14 digits [0-9]\n */\nvar LENGTH_EAN_8 = 8;\nvar LENGTH_EAN_14 = 14;\nvar validEanRegex = /^(\\d{8}|\\d{13}|\\d{14})$/;\n/**\n * Get position weight given:\n * EAN length and digit index/position\n *\n * @param {number} length\n * @param {number} index\n * @return {number}\n */\n\nfunction getPositionWeightThroughLengthAndIndex(length, index) {\n if (length === LENGTH_EAN_8 || length === LENGTH_EAN_14) {\n return index % 2 === 0 ? 3 : 1;\n }\n\n return index % 2 === 0 ? 1 : 3;\n}\n/**\n * Calculate EAN Check Digit\n * Reference: https://en.wikipedia.org/wiki/International_Article_Number#Calculation_of_checksum_digit\n *\n * @param {string} ean\n * @return {number}\n */\n\n\nfunction calculateCheckDigit(ean) {\n var checksum = ean.slice(0, -1).split('').map(function (char, index) {\n return Number(char) * getPositionWeightThroughLengthAndIndex(ean.length, index);\n }).reduce(function (acc, partialSum) {\n return acc + partialSum;\n }, 0);\n var remainder = 10 - checksum % 10;\n return remainder < 10 ? remainder : 0;\n}\n/**\n * Check if string is valid EAN:\n * Matches EAN-8/EAN-13/EAN-14 regex\n * Has valid check digit.\n *\n * @param {string} str\n * @return {boolean}\n */\n\n\nfunction isEAN(str) {\n (0, _assertString.default)(str);\n var actualCheckDigit = Number(str.slice(-1));\n return validEanRegex.test(str) && actualCheckDigit === calculateCheckDigit(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isEANValidator from 'validator/lib/isEAN';\nexport var IS_EAN = 'isEAN';\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) {\n return typeof value === 'string' && isEANValidator(value);\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) {\n return ValidateBy({\n name: IS_EAN,\n validator: {\n validate: function (value, args) { return isEAN(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an EAN (European Article Number)'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsEAN.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isEthereumAddress;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar eth = /^(0x)[0-9a-f]{40}$/i;\n\nfunction isEthereumAddress(str) {\n (0, _assertString.default)(str);\n return eth.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isEthereumAddressValidator from 'validator/lib/isEthereumAddress';\nexport var IS_ETHEREUM_ADDRESS = 'isEthereumAddress';\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) {\n return typeof value === 'string' && isEthereumAddressValidator(value);\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) {\n return ValidateBy({\n name: IS_ETHEREUM_ADDRESS,\n validator: {\n validate: function (value, args) { return isEthereumAddress(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an Ethereum address'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsEthereumAddress.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isHSL;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar hslComma = /^hsla?\\(((\\+|\\-)?([0-9]+(\\.[0-9]+)?(e(\\+|\\-)?[0-9]+)?|\\.[0-9]+(e(\\+|\\-)?[0-9]+)?))(deg|grad|rad|turn)?(,(\\+|\\-)?([0-9]+(\\.[0-9]+)?(e(\\+|\\-)?[0-9]+)?|\\.[0-9]+(e(\\+|\\-)?[0-9]+)?)%){2}(,((\\+|\\-)?([0-9]+(\\.[0-9]+)?(e(\\+|\\-)?[0-9]+)?|\\.[0-9]+(e(\\+|\\-)?[0-9]+)?)%?))?\\)$/i;\nvar hslSpace = /^hsla?\\(((\\+|\\-)?([0-9]+(\\.[0-9]+)?(e(\\+|\\-)?[0-9]+)?|\\.[0-9]+(e(\\+|\\-)?[0-9]+)?))(deg|grad|rad|turn)?(\\s(\\+|\\-)?([0-9]+(\\.[0-9]+)?(e(\\+|\\-)?[0-9]+)?|\\.[0-9]+(e(\\+|\\-)?[0-9]+)?)%){2}\\s?(\\/\\s((\\+|\\-)?([0-9]+(\\.[0-9]+)?(e(\\+|\\-)?[0-9]+)?|\\.[0-9]+(e(\\+|\\-)?[0-9]+)?)%?)\\s?)?\\)$/i;\n\nfunction isHSL(str) {\n (0, _assertString.default)(str); // Strip duplicate spaces before calling the validation regex (See #1598 for more info)\n\n var strippedStr = str.replace(/\\s+/g, ' ').replace(/\\s?(hsla?\\(|\\)|,)\\s?/ig, '$1');\n\n if (strippedStr.indexOf(',') !== -1) {\n return hslComma.test(strippedStr);\n }\n\n return hslSpace.test(strippedStr);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isHSLValidator from 'validator/lib/isHSL';\nexport var IS_HSL = 'isHSL';\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) {\n return typeof value === 'string' && isHSLValidator(value);\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) {\n return ValidateBy({\n name: IS_HSL,\n validator: {\n validate: function (value, args) { return isHSL(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a HSL color'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsHSL.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isIBAN;\nexports.locales = void 0;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * List of country codes with\n * corresponding IBAN regular expression\n * Reference: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n */\nvar ibanRegexThroughCountryCode = {\n AD: /^(AD[0-9]{2})\\d{8}[A-Z0-9]{12}$/,\n AE: /^(AE[0-9]{2})\\d{3}\\d{16}$/,\n AL: /^(AL[0-9]{2})\\d{8}[A-Z0-9]{16}$/,\n AT: /^(AT[0-9]{2})\\d{16}$/,\n AZ: /^(AZ[0-9]{2})[A-Z0-9]{4}\\d{20}$/,\n BA: /^(BA[0-9]{2})\\d{16}$/,\n BE: /^(BE[0-9]{2})\\d{12}$/,\n BG: /^(BG[0-9]{2})[A-Z]{4}\\d{6}[A-Z0-9]{8}$/,\n BH: /^(BH[0-9]{2})[A-Z]{4}[A-Z0-9]{14}$/,\n BR: /^(BR[0-9]{2})\\d{23}[A-Z]{1}[A-Z0-9]{1}$/,\n BY: /^(BY[0-9]{2})[A-Z0-9]{4}\\d{20}$/,\n CH: /^(CH[0-9]{2})\\d{5}[A-Z0-9]{12}$/,\n CR: /^(CR[0-9]{2})\\d{18}$/,\n CY: /^(CY[0-9]{2})\\d{8}[A-Z0-9]{16}$/,\n CZ: /^(CZ[0-9]{2})\\d{20}$/,\n DE: /^(DE[0-9]{2})\\d{18}$/,\n DK: /^(DK[0-9]{2})\\d{14}$/,\n DO: /^(DO[0-9]{2})[A-Z]{4}\\d{20}$/,\n EE: /^(EE[0-9]{2})\\d{16}$/,\n EG: /^(EG[0-9]{2})\\d{25}$/,\n ES: /^(ES[0-9]{2})\\d{20}$/,\n FI: /^(FI[0-9]{2})\\d{14}$/,\n FO: /^(FO[0-9]{2})\\d{14}$/,\n FR: /^(FR[0-9]{2})\\d{10}[A-Z0-9]{11}\\d{2}$/,\n GB: /^(GB[0-9]{2})[A-Z]{4}\\d{14}$/,\n GE: /^(GE[0-9]{2})[A-Z0-9]{2}\\d{16}$/,\n GI: /^(GI[0-9]{2})[A-Z]{4}[A-Z0-9]{15}$/,\n GL: /^(GL[0-9]{2})\\d{14}$/,\n GR: /^(GR[0-9]{2})\\d{7}[A-Z0-9]{16}$/,\n GT: /^(GT[0-9]{2})[A-Z0-9]{4}[A-Z0-9]{20}$/,\n HR: /^(HR[0-9]{2})\\d{17}$/,\n HU: /^(HU[0-9]{2})\\d{24}$/,\n IE: /^(IE[0-9]{2})[A-Z0-9]{4}\\d{14}$/,\n IL: /^(IL[0-9]{2})\\d{19}$/,\n IQ: /^(IQ[0-9]{2})[A-Z]{4}\\d{15}$/,\n IR: /^(IR[0-9]{2})0\\d{2}0\\d{18}$/,\n IS: /^(IS[0-9]{2})\\d{22}$/,\n IT: /^(IT[0-9]{2})[A-Z]{1}\\d{10}[A-Z0-9]{12}$/,\n JO: /^(JO[0-9]{2})[A-Z]{4}\\d{22}$/,\n KW: /^(KW[0-9]{2})[A-Z]{4}[A-Z0-9]{22}$/,\n KZ: /^(KZ[0-9]{2})\\d{3}[A-Z0-9]{13}$/,\n LB: /^(LB[0-9]{2})\\d{4}[A-Z0-9]{20}$/,\n LC: /^(LC[0-9]{2})[A-Z]{4}[A-Z0-9]{24}$/,\n LI: /^(LI[0-9]{2})\\d{5}[A-Z0-9]{12}$/,\n LT: /^(LT[0-9]{2})\\d{16}$/,\n LU: /^(LU[0-9]{2})\\d{3}[A-Z0-9]{13}$/,\n LV: /^(LV[0-9]{2})[A-Z]{4}[A-Z0-9]{13}$/,\n MC: /^(MC[0-9]{2})\\d{10}[A-Z0-9]{11}\\d{2}$/,\n MD: /^(MD[0-9]{2})[A-Z0-9]{20}$/,\n ME: /^(ME[0-9]{2})\\d{18}$/,\n MK: /^(MK[0-9]{2})\\d{3}[A-Z0-9]{10}\\d{2}$/,\n MR: /^(MR[0-9]{2})\\d{23}$/,\n MT: /^(MT[0-9]{2})[A-Z]{4}\\d{5}[A-Z0-9]{18}$/,\n MU: /^(MU[0-9]{2})[A-Z]{4}\\d{19}[A-Z]{3}$/,\n MZ: /^(MZ[0-9]{2})\\d{21}$/,\n NL: /^(NL[0-9]{2})[A-Z]{4}\\d{10}$/,\n NO: /^(NO[0-9]{2})\\d{11}$/,\n PK: /^(PK[0-9]{2})[A-Z0-9]{4}\\d{16}$/,\n PL: /^(PL[0-9]{2})\\d{24}$/,\n PS: /^(PS[0-9]{2})[A-Z0-9]{4}\\d{21}$/,\n PT: /^(PT[0-9]{2})\\d{21}$/,\n QA: /^(QA[0-9]{2})[A-Z]{4}[A-Z0-9]{21}$/,\n RO: /^(RO[0-9]{2})[A-Z]{4}[A-Z0-9]{16}$/,\n RS: /^(RS[0-9]{2})\\d{18}$/,\n SA: /^(SA[0-9]{2})\\d{2}[A-Z0-9]{18}$/,\n SC: /^(SC[0-9]{2})[A-Z]{4}\\d{20}[A-Z]{3}$/,\n SE: /^(SE[0-9]{2})\\d{20}$/,\n SI: /^(SI[0-9]{2})\\d{15}$/,\n SK: /^(SK[0-9]{2})\\d{20}$/,\n SM: /^(SM[0-9]{2})[A-Z]{1}\\d{10}[A-Z0-9]{12}$/,\n SV: /^(SV[0-9]{2})[A-Z0-9]{4}\\d{20}$/,\n TL: /^(TL[0-9]{2})\\d{19}$/,\n TN: /^(TN[0-9]{2})\\d{20}$/,\n TR: /^(TR[0-9]{2})\\d{5}[A-Z0-9]{17}$/,\n UA: /^(UA[0-9]{2})\\d{6}[A-Z0-9]{19}$/,\n VA: /^(VA[0-9]{2})\\d{18}$/,\n VG: /^(VG[0-9]{2})[A-Z0-9]{4}\\d{16}$/,\n XK: /^(XK[0-9]{2})\\d{16}$/\n};\n/**\n * Check whether string has correct universal IBAN format\n * The IBAN consists of up to 34 alphanumeric characters, as follows:\n * Country Code using ISO 3166-1 alpha-2, two letters\n * check digits, two digits and\n * Basic Bank Account Number (BBAN), up to 30 alphanumeric characters.\n * NOTE: Permitted IBAN characters are: digits [0-9] and the 26 latin alphabetic [A-Z]\n *\n * @param {string} str - string under validation\n * @return {boolean}\n */\n\nfunction hasValidIbanFormat(str) {\n // Strip white spaces and hyphens\n var strippedStr = str.replace(/[\\s\\-]+/gi, '').toUpperCase();\n var isoCountryCode = strippedStr.slice(0, 2).toUpperCase();\n return isoCountryCode in ibanRegexThroughCountryCode && ibanRegexThroughCountryCode[isoCountryCode].test(strippedStr);\n}\n/**\n * Check whether string has valid IBAN Checksum\n * by performing basic mod-97 operation and\n * the remainder should equal 1\n * -- Start by rearranging the IBAN by moving the four initial characters to the end of the string\n * -- Replace each letter in the string with two digits, A -> 10, B = 11, Z = 35\n * -- Interpret the string as a decimal integer and\n * -- compute the remainder on division by 97 (mod 97)\n * Reference: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n *\n * @param {string} str\n * @return {boolean}\n */\n\n\nfunction hasValidIbanChecksum(str) {\n var strippedStr = str.replace(/[^A-Z0-9]+/gi, '').toUpperCase(); // Keep only digits and A-Z latin alphabetic\n\n var rearranged = strippedStr.slice(4) + strippedStr.slice(0, 4);\n var alphaCapsReplacedWithDigits = rearranged.replace(/[A-Z]/g, function (char) {\n return char.charCodeAt(0) - 55;\n });\n var remainder = alphaCapsReplacedWithDigits.match(/\\d{1,7}/g).reduce(function (acc, value) {\n return Number(acc + value) % 97;\n }, '');\n return remainder === 1;\n}\n\nfunction isIBAN(str) {\n (0, _assertString.default)(str);\n return hasValidIbanFormat(str) && hasValidIbanChecksum(str);\n}\n\nvar locales = Object.keys(ibanRegexThroughCountryCode);\nexports.locales = locales;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isIBANValidator from 'validator/lib/isIBAN';\nexport var IS_IBAN = 'isIBAN';\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) {\n return typeof value === 'string' && isIBANValidator(value);\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) {\n return ValidateBy({\n name: IS_IBAN,\n validator: {\n validate: function (value, args) { return isIBAN(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an IBAN'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsIBAN.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isIdentityCard;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _isInt = _interopRequireDefault(require(\"./isInt\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar validators = {\n PL: function PL(str) {\n (0, _assertString.default)(str);\n var weightOfDigits = {\n 1: 1,\n 2: 3,\n 3: 7,\n 4: 9,\n 5: 1,\n 6: 3,\n 7: 7,\n 8: 9,\n 9: 1,\n 10: 3,\n 11: 0\n };\n\n if (str != null && str.length === 11 && (0, _isInt.default)(str, {\n allow_leading_zeroes: true\n })) {\n var digits = str.split('').slice(0, -1);\n var sum = digits.reduce(function (acc, digit, index) {\n return acc + Number(digit) * weightOfDigits[index + 1];\n }, 0);\n var modulo = sum % 10;\n var lastDigit = Number(str.charAt(str.length - 1));\n\n if (modulo === 0 && lastDigit === 0 || lastDigit === 10 - modulo) {\n return true;\n }\n }\n\n return false;\n },\n ES: function ES(str) {\n (0, _assertString.default)(str);\n var DNI = /^[0-9X-Z][0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKE]$/;\n var charsValue = {\n X: 0,\n Y: 1,\n Z: 2\n };\n var controlDigits = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E']; // sanitize user input\n\n var sanitized = str.trim().toUpperCase(); // validate the data structure\n\n if (!DNI.test(sanitized)) {\n return false;\n } // validate the control digit\n\n\n var number = sanitized.slice(0, -1).replace(/[X,Y,Z]/g, function (char) {\n return charsValue[char];\n });\n return sanitized.endsWith(controlDigits[number % 23]);\n },\n FI: function FI(str) {\n // https://dvv.fi/en/personal-identity-code#:~:text=control%20character%20for%20a-,personal,-identity%20code%20calculated\n (0, _assertString.default)(str);\n\n if (str.length !== 11) {\n return false;\n }\n\n if (!str.match(/^\\d{6}[\\-A\\+]\\d{3}[0-9ABCDEFHJKLMNPRSTUVWXY]{1}$/)) {\n return false;\n }\n\n var checkDigits = '0123456789ABCDEFHJKLMNPRSTUVWXY';\n var idAsNumber = parseInt(str.slice(0, 6), 10) * 1000 + parseInt(str.slice(7, 10), 10);\n var remainder = idAsNumber % 31;\n var checkDigit = checkDigits[remainder];\n return checkDigit === str.slice(10, 11);\n },\n IN: function IN(str) {\n var DNI = /^[1-9]\\d{3}\\s?\\d{4}\\s?\\d{4}$/; // multiplication table\n\n var d = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 0, 6, 7, 8, 9, 5], [2, 3, 4, 0, 1, 7, 8, 9, 5, 6], [3, 4, 0, 1, 2, 8, 9, 5, 6, 7], [4, 0, 1, 2, 3, 9, 5, 6, 7, 8], [5, 9, 8, 7, 6, 0, 4, 3, 2, 1], [6, 5, 9, 8, 7, 1, 0, 4, 3, 2], [7, 6, 5, 9, 8, 2, 1, 0, 4, 3], [8, 7, 6, 5, 9, 3, 2, 1, 0, 4], [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]]; // permutation table\n\n var p = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 5, 7, 6, 2, 8, 3, 0, 9, 4], [5, 8, 0, 3, 7, 9, 6, 1, 4, 2], [8, 9, 1, 6, 0, 4, 3, 5, 2, 7], [9, 4, 5, 3, 1, 2, 6, 8, 7, 0], [4, 2, 8, 6, 5, 7, 3, 9, 0, 1], [2, 7, 9, 3, 8, 0, 6, 4, 1, 5], [7, 0, 4, 6, 9, 1, 3, 2, 5, 8]]; // sanitize user input\n\n var sanitized = str.trim(); // validate the data structure\n\n if (!DNI.test(sanitized)) {\n return false;\n }\n\n var c = 0;\n var invertedArray = sanitized.replace(/\\s/g, '').split('').map(Number).reverse();\n invertedArray.forEach(function (val, i) {\n c = d[c][p[i % 8][val]];\n });\n return c === 0;\n },\n IR: function IR(str) {\n if (!str.match(/^\\d{10}$/)) return false;\n str = \"0000\".concat(str).substr(str.length - 6);\n if (parseInt(str.substr(3, 6), 10) === 0) return false;\n var lastNumber = parseInt(str.substr(9, 1), 10);\n var sum = 0;\n\n for (var i = 0; i < 9; i++) {\n sum += parseInt(str.substr(i, 1), 10) * (10 - i);\n }\n\n sum %= 11;\n return sum < 2 && lastNumber === sum || sum >= 2 && lastNumber === 11 - sum;\n },\n IT: function IT(str) {\n if (str.length !== 9) return false;\n if (str === 'CA00000AA') return false; // https://it.wikipedia.org/wiki/Carta_d%27identit%C3%A0_elettronica_italiana\n\n return str.search(/C[A-Z][0-9]{5}[A-Z]{2}/i) > -1;\n },\n NO: function NO(str) {\n var sanitized = str.trim();\n if (isNaN(Number(sanitized))) return false;\n if (sanitized.length !== 11) return false;\n if (sanitized === '00000000000') return false; // https://no.wikipedia.org/wiki/F%C3%B8dselsnummer\n\n var f = sanitized.split('').map(Number);\n var k1 = (11 - (3 * f[0] + 7 * f[1] + 6 * f[2] + 1 * f[3] + 8 * f[4] + 9 * f[5] + 4 * f[6] + 5 * f[7] + 2 * f[8]) % 11) % 11;\n var k2 = (11 - (5 * f[0] + 4 * f[1] + 3 * f[2] + 2 * f[3] + 7 * f[4] + 6 * f[5] + 5 * f[6] + 4 * f[7] + 3 * f[8] + 2 * k1) % 11) % 11;\n if (k1 !== f[9] || k2 !== f[10]) return false;\n return true;\n },\n TH: function TH(str) {\n if (!str.match(/^[1-8]\\d{12}$/)) return false; // validate check digit\n\n var sum = 0;\n\n for (var i = 0; i < 12; i++) {\n sum += parseInt(str[i], 10) * (13 - i);\n }\n\n return str[12] === ((11 - sum % 11) % 10).toString();\n },\n LK: function LK(str) {\n var old_nic = /^[1-9]\\d{8}[vx]$/i;\n var new_nic = /^[1-9]\\d{11}$/i;\n if (str.length === 10 && old_nic.test(str)) return true;else if (str.length === 12 && new_nic.test(str)) return true;\n return false;\n },\n 'he-IL': function heIL(str) {\n var DNI = /^\\d{9}$/; // sanitize user input\n\n var sanitized = str.trim(); // validate the data structure\n\n if (!DNI.test(sanitized)) {\n return false;\n }\n\n var id = sanitized;\n var sum = 0,\n incNum;\n\n for (var i = 0; i < id.length; i++) {\n incNum = Number(id[i]) * (i % 2 + 1); // Multiply number by 1 or 2\n\n sum += incNum > 9 ? incNum - 9 : incNum; // Sum the digits up and add to total\n }\n\n return sum % 10 === 0;\n },\n 'ar-LY': function arLY(str) {\n // Libya National Identity Number NIN is 12 digits, the first digit is either 1 or 2\n var NIN = /^(1|2)\\d{11}$/; // sanitize user input\n\n var sanitized = str.trim(); // validate the data structure\n\n if (!NIN.test(sanitized)) {\n return false;\n }\n\n return true;\n },\n 'ar-TN': function arTN(str) {\n var DNI = /^\\d{8}$/; // sanitize user input\n\n var sanitized = str.trim(); // validate the data structure\n\n if (!DNI.test(sanitized)) {\n return false;\n }\n\n return true;\n },\n 'zh-CN': function zhCN(str) {\n var provincesAndCities = ['11', // 北京\n '12', // 天津\n '13', // 河北\n '14', // 山西\n '15', // 内蒙古\n '21', // 辽宁\n '22', // 吉林\n '23', // 黑龙江\n '31', // 上海\n '32', // 江苏\n '33', // 浙江\n '34', // 安徽\n '35', // 福建\n '36', // 江西\n '37', // 山东\n '41', // 河南\n '42', // 湖北\n '43', // 湖南\n '44', // 广东\n '45', // 广西\n '46', // 海南\n '50', // 重庆\n '51', // 四川\n '52', // 贵州\n '53', // 云南\n '54', // 西藏\n '61', // 陕西\n '62', // 甘肃\n '63', // 青海\n '64', // 宁夏\n '65', // 新疆\n '71', // 台湾\n '81', // 香港\n '82', // 澳门\n '91' // 国外\n ];\n var powers = ['7', '9', '10', '5', '8', '4', '2', '1', '6', '3', '7', '9', '10', '5', '8', '4', '2'];\n var parityBit = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];\n\n var checkAddressCode = function checkAddressCode(addressCode) {\n return provincesAndCities.includes(addressCode);\n };\n\n var checkBirthDayCode = function checkBirthDayCode(birDayCode) {\n var yyyy = parseInt(birDayCode.substring(0, 4), 10);\n var mm = parseInt(birDayCode.substring(4, 6), 10);\n var dd = parseInt(birDayCode.substring(6), 10);\n var xdata = new Date(yyyy, mm - 1, dd);\n\n if (xdata > new Date()) {\n return false; // eslint-disable-next-line max-len\n } else if (xdata.getFullYear() === yyyy && xdata.getMonth() === mm - 1 && xdata.getDate() === dd) {\n return true;\n }\n\n return false;\n };\n\n var getParityBit = function getParityBit(idCardNo) {\n var id17 = idCardNo.substring(0, 17);\n var power = 0;\n\n for (var i = 0; i < 17; i++) {\n power += parseInt(id17.charAt(i), 10) * parseInt(powers[i], 10);\n }\n\n var mod = power % 11;\n return parityBit[mod];\n };\n\n var checkParityBit = function checkParityBit(idCardNo) {\n return getParityBit(idCardNo) === idCardNo.charAt(17).toUpperCase();\n };\n\n var check15IdCardNo = function check15IdCardNo(idCardNo) {\n var check = /^[1-9]\\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\\d{3}$/.test(idCardNo);\n if (!check) return false;\n var addressCode = idCardNo.substring(0, 2);\n check = checkAddressCode(addressCode);\n if (!check) return false;\n var birDayCode = \"19\".concat(idCardNo.substring(6, 12));\n check = checkBirthDayCode(birDayCode);\n if (!check) return false;\n return true;\n };\n\n var check18IdCardNo = function check18IdCardNo(idCardNo) {\n var check = /^[1-9]\\d{5}[1-9]\\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\\d{3}(\\d|x|X)$/.test(idCardNo);\n if (!check) return false;\n var addressCode = idCardNo.substring(0, 2);\n check = checkAddressCode(addressCode);\n if (!check) return false;\n var birDayCode = idCardNo.substring(6, 14);\n check = checkBirthDayCode(birDayCode);\n if (!check) return false;\n return checkParityBit(idCardNo);\n };\n\n var checkIdCardNo = function checkIdCardNo(idCardNo) {\n var check = /^\\d{15}|(\\d{17}(\\d|x|X))$/.test(idCardNo);\n if (!check) return false;\n\n if (idCardNo.length === 15) {\n return check15IdCardNo(idCardNo);\n }\n\n return check18IdCardNo(idCardNo);\n };\n\n return checkIdCardNo(str);\n },\n 'zh-TW': function zhTW(str) {\n var ALPHABET_CODES = {\n A: 10,\n B: 11,\n C: 12,\n D: 13,\n E: 14,\n F: 15,\n G: 16,\n H: 17,\n I: 34,\n J: 18,\n K: 19,\n L: 20,\n M: 21,\n N: 22,\n O: 35,\n P: 23,\n Q: 24,\n R: 25,\n S: 26,\n T: 27,\n U: 28,\n V: 29,\n W: 32,\n X: 30,\n Y: 31,\n Z: 33\n };\n var sanitized = str.trim().toUpperCase();\n if (!/^[A-Z][0-9]{9}$/.test(sanitized)) return false;\n return Array.from(sanitized).reduce(function (sum, number, index) {\n if (index === 0) {\n var code = ALPHABET_CODES[number];\n return code % 10 * 9 + Math.floor(code / 10);\n }\n\n if (index === 9) {\n return (10 - sum % 10 - Number(number)) % 10 === 0;\n }\n\n return sum + Number(number) * (9 - index);\n }, 0);\n }\n};\n\nfunction isIdentityCard(str, locale) {\n (0, _assertString.default)(str);\n\n if (locale in validators) {\n return validators[locale](str);\n } else if (locale === 'any') {\n for (var key in validators) {\n // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes\n // istanbul ignore else\n if (validators.hasOwnProperty(key)) {\n var validator = validators[key];\n\n if (validator(str)) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n throw new Error(\"Invalid locale '\".concat(locale, \"'\"));\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isIdentityCardValidator from 'validator/lib/isIdentityCard';\nexport var IS_IDENTITY_CARD = 'isIdentityCard';\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, locale) {\n return typeof value === 'string' && isIdentityCardValidator(value, locale);\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(locale, validationOptions) {\n return ValidateBy({\n name: IS_IDENTITY_CARD,\n constraints: [locale],\n validator: {\n validate: function (value, args) { return isIdentityCard(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a identity card number'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsIdentityCard.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISRC;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// see http://isrc.ifpi.org/en/isrc-standard/code-syntax\nvar isrc = /^[A-Z]{2}[0-9A-Z]{3}\\d{2}\\d{5}$/;\n\nfunction isISRC(str) {\n (0, _assertString.default)(str);\n return isrc.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isISRCValidator from 'validator/lib/isISRC';\nexport var IS_ISRC = 'isISRC';\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) {\n return typeof value === 'string' && isISRCValidator(value);\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) {\n return ValidateBy({\n name: IS_ISRC,\n validator: {\n validate: function (value, args) { return isISRC(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an ISRC'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsISRC.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isLocale;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar localeReg = /^[A-Za-z]{2,4}([_-]([A-Za-z]{4}|[\\d]{3}))?([_-]([A-Za-z]{2}|[\\d]{3}))?$/;\n\nfunction isLocale(str) {\n (0, _assertString.default)(str);\n\n if (str === 'en_US_POSIX' || str === 'ca_ES_VALENCIA') {\n return true;\n }\n\n return localeReg.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isLocaleValidator from 'validator/lib/isLocale';\nexport var IS_LOCALE = 'isLocale';\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) {\n return typeof value === 'string' && isLocaleValidator(value);\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) {\n return ValidateBy({\n name: IS_LOCALE,\n validator: {\n validate: function (value, args) { return isLocale(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be locale'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsLocale.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMagnetURI;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar magnetURI = /^magnet:\\?xt(?:\\.1)?=urn:(?:aich|bitprint|btih|ed2k|ed2khash|kzhash|md5|sha1|tree:tiger):[a-z0-9]{32}(?:[a-z0-9]{8})?($|&)/i;\n\nfunction isMagnetURI(url) {\n (0, _assertString.default)(url);\n return magnetURI.test(url.trim());\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isMagnetURIValidator from 'validator/lib/isMagnetURI';\nexport var IS_MAGNET_URI = 'isMagnetURI';\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) {\n return typeof value === 'string' && isMagnetURIValidator(value);\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) {\n return ValidateBy({\n name: IS_MAGNET_URI,\n validator: {\n validate: function (value, args) { return isMagnetURI(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be magnet uri format'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsMagnetURI.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMimeType;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n Checks if the provided string matches to a correct Media type format (MIME type)\n\n This function only checks is the string format follows the\n etablished rules by the according RFC specifications.\n This function supports 'charset' in textual media types\n (https://tools.ietf.org/html/rfc6657).\n\n This function does not check against all the media types listed\n by the IANA (https://www.iana.org/assignments/media-types/media-types.xhtml)\n because of lightness purposes : it would require to include\n all these MIME types in this librairy, which would weigh it\n significantly. This kind of effort maybe is not worth for the use that\n this function has in this entire librairy.\n\n More informations in the RFC specifications :\n - https://tools.ietf.org/html/rfc2045\n - https://tools.ietf.org/html/rfc2046\n - https://tools.ietf.org/html/rfc7231#section-3.1.1.1\n - https://tools.ietf.org/html/rfc7231#section-3.1.1.5\n*/\n// Match simple MIME types\n// NB :\n// Subtype length must not exceed 100 characters.\n// This rule does not comply to the RFC specs (what is the max length ?).\nvar mimeTypeSimple = /^(application|audio|font|image|message|model|multipart|text|video)\\/[a-zA-Z0-9\\.\\-\\+]{1,100}$/i; // eslint-disable-line max-len\n// Handle \"charset\" in \"text/*\"\n\nvar mimeTypeText = /^text\\/[a-zA-Z0-9\\.\\-\\+]{1,100};\\s?charset=(\"[a-zA-Z0-9\\.\\-\\+\\s]{0,70}\"|[a-zA-Z0-9\\.\\-\\+]{0,70})(\\s?\\([a-zA-Z0-9\\.\\-\\+\\s]{1,20}\\))?$/i; // eslint-disable-line max-len\n// Handle \"boundary\" in \"multipart/*\"\n\nvar mimeTypeMultipart = /^multipart\\/[a-zA-Z0-9\\.\\-\\+]{1,100}(;\\s?(boundary|charset)=(\"[a-zA-Z0-9\\.\\-\\+\\s]{0,70}\"|[a-zA-Z0-9\\.\\-\\+]{0,70})(\\s?\\([a-zA-Z0-9\\.\\-\\+\\s]{1,20}\\))?){0,2}$/i; // eslint-disable-line max-len\n\nfunction isMimeType(str) {\n (0, _assertString.default)(str);\n return mimeTypeSimple.test(str) || mimeTypeText.test(str) || mimeTypeMultipart.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isMimeTypeValidator from 'validator/lib/isMimeType';\nexport var IS_MIME_TYPE = 'isMimeType';\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) {\n return typeof value === 'string' && isMimeTypeValidator(value);\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) {\n return ValidateBy({\n name: IS_MIME_TYPE,\n validator: {\n validate: function (value, args) { return isMimeType(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be MIME type format'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsMimeType.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isOctal;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar octal = /^(0o)?[0-7]+$/i;\n\nfunction isOctal(str) {\n (0, _assertString.default)(str);\n return octal.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isOctalValidator from 'validator/lib/isOctal';\nexport var IS_OCTAL = 'isOctal';\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) {\n return typeof value === 'string' && isOctalValidator(value);\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) {\n return ValidateBy({\n name: IS_OCTAL,\n validator: {\n validate: function (value, args) { return isOctal(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be valid octal number'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsOctal.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isPassportNumber;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Reference:\n * https://en.wikipedia.org/ -- Wikipedia\n * https://docs.microsoft.com/en-us/microsoft-365/compliance/eu-passport-number -- EU Passport Number\n * https://countrycode.org/ -- Country Codes\n */\nvar passportRegexByCountryCode = {\n AM: /^[A-Z]{2}\\d{7}$/,\n // ARMENIA\n AR: /^[A-Z]{3}\\d{6}$/,\n // ARGENTINA\n AT: /^[A-Z]\\d{7}$/,\n // AUSTRIA\n AU: /^[A-Z]\\d{7}$/,\n // AUSTRALIA\n BE: /^[A-Z]{2}\\d{6}$/,\n // BELGIUM\n BG: /^\\d{9}$/,\n // BULGARIA\n BR: /^[A-Z]{2}\\d{6}$/,\n // BRAZIL\n BY: /^[A-Z]{2}\\d{7}$/,\n // BELARUS\n CA: /^[A-Z]{2}\\d{6}$/,\n // CANADA\n CH: /^[A-Z]\\d{7}$/,\n // SWITZERLAND\n CN: /^G\\d{8}$|^E(?![IO])[A-Z0-9]\\d{7}$/,\n // CHINA [G=Ordinary, E=Electronic] followed by 8-digits, or E followed by any UPPERCASE letter (except I and O) followed by 7 digits\n CY: /^[A-Z](\\d{6}|\\d{8})$/,\n // CYPRUS\n CZ: /^\\d{8}$/,\n // CZECH REPUBLIC\n DE: /^[CFGHJKLMNPRTVWXYZ0-9]{9}$/,\n // GERMANY\n DK: /^\\d{9}$/,\n // DENMARK\n DZ: /^\\d{9}$/,\n // ALGERIA\n EE: /^([A-Z]\\d{7}|[A-Z]{2}\\d{7})$/,\n // ESTONIA (K followed by 7-digits), e-passports have 2 UPPERCASE followed by 7 digits\n ES: /^[A-Z0-9]{2}([A-Z0-9]?)\\d{6}$/,\n // SPAIN\n FI: /^[A-Z]{2}\\d{7}$/,\n // FINLAND\n FR: /^\\d{2}[A-Z]{2}\\d{5}$/,\n // FRANCE\n GB: /^\\d{9}$/,\n // UNITED KINGDOM\n GR: /^[A-Z]{2}\\d{7}$/,\n // GREECE\n HR: /^\\d{9}$/,\n // CROATIA\n HU: /^[A-Z]{2}(\\d{6}|\\d{7})$/,\n // HUNGARY\n IE: /^[A-Z0-9]{2}\\d{7}$/,\n // IRELAND\n IN: /^[A-Z]{1}-?\\d{7}$/,\n // INDIA\n ID: /^[A-C]\\d{7}$/,\n // INDONESIA\n IR: /^[A-Z]\\d{8}$/,\n // IRAN\n IS: /^(A)\\d{7}$/,\n // ICELAND\n IT: /^[A-Z0-9]{2}\\d{7}$/,\n // ITALY\n JP: /^[A-Z]{2}\\d{7}$/,\n // JAPAN\n KR: /^[MS]\\d{8}$/,\n // SOUTH KOREA, REPUBLIC OF KOREA, [S=PS Passports, M=PM Passports]\n LT: /^[A-Z0-9]{8}$/,\n // LITHUANIA\n LU: /^[A-Z0-9]{8}$/,\n // LUXEMBURG\n LV: /^[A-Z0-9]{2}\\d{7}$/,\n // LATVIA\n LY: /^[A-Z0-9]{8}$/,\n // LIBYA\n MT: /^\\d{7}$/,\n // MALTA\n MZ: /^([A-Z]{2}\\d{7})|(\\d{2}[A-Z]{2}\\d{5})$/,\n // MOZAMBIQUE\n MY: /^[AHK]\\d{8}$/,\n // MALAYSIA\n NL: /^[A-Z]{2}[A-Z0-9]{6}\\d$/,\n // NETHERLANDS\n PL: /^[A-Z]{2}\\d{7}$/,\n // POLAND\n PT: /^[A-Z]\\d{6}$/,\n // PORTUGAL\n RO: /^\\d{8,9}$/,\n // ROMANIA\n RU: /^\\d{9}$/,\n // RUSSIAN FEDERATION\n SE: /^\\d{8}$/,\n // SWEDEN\n SL: /^(P)[A-Z]\\d{7}$/,\n // SLOVANIA\n SK: /^[0-9A-Z]\\d{7}$/,\n // SLOVAKIA\n TR: /^[A-Z]\\d{8}$/,\n // TURKEY\n UA: /^[A-Z]{2}\\d{6}$/,\n // UKRAINE\n US: /^\\d{9}$/ // UNITED STATES\n\n};\n/**\n * Check if str is a valid passport number\n * relative to provided ISO Country Code.\n *\n * @param {string} str\n * @param {string} countryCode\n * @return {boolean}\n */\n\nfunction isPassportNumber(str, countryCode) {\n (0, _assertString.default)(str);\n /** Remove All Whitespaces, Convert to UPPERCASE */\n\n var normalizedStr = str.replace(/\\s/g, '').toUpperCase();\n return countryCode.toUpperCase() in passportRegexByCountryCode && passportRegexByCountryCode[countryCode].test(normalizedStr);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isPassportNumberValidator from 'validator/lib/isPassportNumber';\nexport var IS_PASSPORT_NUMBER = 'isPassportNumber';\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, countryCode) {\n return typeof value === 'string' && isPassportNumberValidator(value, countryCode);\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, validationOptions) {\n return ValidateBy({\n name: IS_PASSPORT_NUMBER,\n constraints: [countryCode],\n validator: {\n validate: function (value, args) { return isPassportNumber(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be valid passport number'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsPassportNumber.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isPostalCode;\nexports.locales = void 0;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// common patterns\nvar threeDigit = /^\\d{3}$/;\nvar fourDigit = /^\\d{4}$/;\nvar fiveDigit = /^\\d{5}$/;\nvar sixDigit = /^\\d{6}$/;\nvar patterns = {\n AD: /^AD\\d{3}$/,\n AT: fourDigit,\n AU: fourDigit,\n AZ: /^AZ\\d{4}$/,\n BE: fourDigit,\n BG: fourDigit,\n BR: /^\\d{5}-\\d{3}$/,\n BY: /2[1-4]{1}\\d{4}$/,\n CA: /^[ABCEGHJKLMNPRSTVXY]\\d[ABCEGHJ-NPRSTV-Z][\\s\\-]?\\d[ABCEGHJ-NPRSTV-Z]\\d$/i,\n CH: fourDigit,\n CN: /^(0[1-7]|1[012356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[1-5]|8[1345]|9[09])\\d{4}$/,\n CZ: /^\\d{3}\\s?\\d{2}$/,\n DE: fiveDigit,\n DK: fourDigit,\n DO: fiveDigit,\n DZ: fiveDigit,\n EE: fiveDigit,\n ES: /^(5[0-2]{1}|[0-4]{1}\\d{1})\\d{3}$/,\n FI: fiveDigit,\n FR: /^\\d{2}\\s?\\d{3}$/,\n GB: /^(gir\\s?0aa|[a-z]{1,2}\\d[\\da-z]?\\s?(\\d[a-z]{2})?)$/i,\n GR: /^\\d{3}\\s?\\d{2}$/,\n HR: /^([1-5]\\d{4}$)/,\n HT: /^HT\\d{4}$/,\n HU: fourDigit,\n ID: fiveDigit,\n IE: /^(?!.*(?:o))[A-Za-z]\\d[\\dw]\\s\\w{4}$/i,\n IL: /^(\\d{5}|\\d{7})$/,\n IN: /^((?!10|29|35|54|55|65|66|86|87|88|89)[1-9][0-9]{5})$/,\n IR: /\\b(?!(\\d)\\1{3})[13-9]{4}[1346-9][013-9]{5}\\b/,\n IS: threeDigit,\n IT: fiveDigit,\n JP: /^\\d{3}\\-\\d{4}$/,\n KE: fiveDigit,\n KR: /^(\\d{5}|\\d{6})$/,\n LI: /^(948[5-9]|949[0-7])$/,\n LT: /^LT\\-\\d{5}$/,\n LU: fourDigit,\n LV: /^LV\\-\\d{4}$/,\n LK: fiveDigit,\n MX: fiveDigit,\n MT: /^[A-Za-z]{3}\\s{0,1}\\d{4}$/,\n MY: fiveDigit,\n NL: /^\\d{4}\\s?[a-z]{2}$/i,\n NO: fourDigit,\n NP: /^(10|21|22|32|33|34|44|45|56|57)\\d{3}$|^(977)$/i,\n NZ: fourDigit,\n PL: /^\\d{2}\\-\\d{3}$/,\n PR: /^00[679]\\d{2}([ -]\\d{4})?$/,\n PT: /^\\d{4}\\-\\d{3}?$/,\n RO: sixDigit,\n RU: sixDigit,\n SA: fiveDigit,\n SE: /^[1-9]\\d{2}\\s?\\d{2}$/,\n SG: sixDigit,\n SI: fourDigit,\n SK: /^\\d{3}\\s?\\d{2}$/,\n TH: fiveDigit,\n TN: fourDigit,\n TW: /^\\d{3}(\\d{2})?$/,\n UA: fiveDigit,\n US: /^\\d{5}(-\\d{4})?$/,\n ZA: fourDigit,\n ZM: fiveDigit\n};\nvar locales = Object.keys(patterns);\nexports.locales = locales;\n\nfunction isPostalCode(str, locale) {\n (0, _assertString.default)(str);\n\n if (locale in patterns) {\n return patterns[locale].test(str);\n } else if (locale === 'any') {\n for (var key in patterns) {\n // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes\n // istanbul ignore else\n if (patterns.hasOwnProperty(key)) {\n var pattern = patterns[key];\n\n if (pattern.test(str)) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n throw new Error(\"Invalid locale '\".concat(locale, \"'\"));\n}","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isPostalCodeValidator from 'validator/lib/isPostalCode';\nexport var IS_POSTAL_CODE = 'isPostalCode';\n/**\n * Check if the string is a postal code,\n * (locale is one of [ 'AD', 'AT', 'AU', 'BE', 'BG', 'BR', 'CA', 'CH', 'CZ', 'DE', 'DK', 'DZ', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'ID', 'IE' 'IL', 'IN', 'IR', 'IS', 'IT', 'JP', 'KE', 'LI', 'LT', 'LU', 'LV', 'MT', 'MX', 'NL', 'NO', 'NZ', 'PL', 'PR', 'PT', 'RO', 'RU', 'SA', 'SE', 'SI', 'TN', 'TW', 'UA', 'US', 'ZA', 'ZM' ] OR 'any'. If 'any' is used, function will check if any of the locals match. Locale list is validator.isPostalCodeLocales.).\n * If given value is not a string, then it returns false.\n */\nexport function isPostalCode(value, locale) {\n return typeof value === 'string' && isPostalCodeValidator(value, locale);\n}\n/**\n * Check if the string is a postal code,\n * (locale is one of [ 'AD', 'AT', 'AU', 'BE', 'BG', 'BR', 'CA', 'CH', 'CZ', 'DE', 'DK', 'DZ', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'ID', 'IE' 'IL', 'IN', 'IR', 'IS', 'IT', 'JP', 'KE', 'LI', 'LT', 'LU', 'LV', 'MT', 'MX', 'NL', 'NO', 'NZ', 'PL', 'PR', 'PT', 'RO', 'RU', 'SA', 'SE', 'SI', 'TN', 'TW', 'UA', 'US', 'ZA', 'ZM' ] OR 'any'. If 'any' is used, function will check if any of the locals match. Locale list is validator.isPostalCodeLocales.).\n * If given value is not a string, then it returns false.\n */\nexport function IsPostalCode(locale, validationOptions) {\n return ValidateBy({\n name: IS_POSTAL_CODE,\n constraints: [locale],\n validator: {\n validate: function (value, args) { return isPostalCode(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a postal code'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsPostalCode.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isRFC3339;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* Based on https://tools.ietf.org/html/rfc3339#section-5.6 */\nvar dateFullYear = /[0-9]{4}/;\nvar dateMonth = /(0[1-9]|1[0-2])/;\nvar dateMDay = /([12]\\d|0[1-9]|3[01])/;\nvar timeHour = /([01][0-9]|2[0-3])/;\nvar timeMinute = /[0-5][0-9]/;\nvar timeSecond = /([0-5][0-9]|60)/;\nvar timeSecFrac = /(\\.[0-9]+)?/;\nvar timeNumOffset = new RegExp(\"[-+]\".concat(timeHour.source, \":\").concat(timeMinute.source));\nvar timeOffset = new RegExp(\"([zZ]|\".concat(timeNumOffset.source, \")\"));\nvar partialTime = new RegExp(\"\".concat(timeHour.source, \":\").concat(timeMinute.source, \":\").concat(timeSecond.source).concat(timeSecFrac.source));\nvar fullDate = new RegExp(\"\".concat(dateFullYear.source, \"-\").concat(dateMonth.source, \"-\").concat(dateMDay.source));\nvar fullTime = new RegExp(\"\".concat(partialTime.source).concat(timeOffset.source));\nvar rfc3339 = new RegExp(\"^\".concat(fullDate.source, \"[ tT]\").concat(fullTime.source, \"$\"));\n\nfunction isRFC3339(str) {\n (0, _assertString.default)(str);\n return rfc3339.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isRFC3339Validator from 'validator/lib/isRFC3339';\nexport var IS_RFC_3339 = 'isRFC3339';\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) {\n return typeof value === 'string' && isRFC3339Validator(value);\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) {\n return ValidateBy({\n name: IS_RFC_3339,\n validator: {\n validate: function (value, args) { return isRFC3339(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be RFC 3339 date'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsRFC3339.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isRgbColor;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar rgbColor = /^rgb\\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){2}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\)$/;\nvar rgbaColor = /^rgba\\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){3}(0?\\.\\d|1(\\.0)?|0(\\.0)?)\\)$/;\nvar rgbColorPercent = /^rgb\\((([0-9]%|[1-9][0-9]%|100%),){2}([0-9]%|[1-9][0-9]%|100%)\\)/;\nvar rgbaColorPercent = /^rgba\\((([0-9]%|[1-9][0-9]%|100%),){3}(0?\\.\\d|1(\\.0)?|0(\\.0)?)\\)/;\n\nfunction isRgbColor(str) {\n var includePercentValues = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n (0, _assertString.default)(str);\n\n if (!includePercentValues) {\n return rgbColor.test(str) || rgbaColor.test(str);\n }\n\n return rgbColor.test(str) || rgbaColor.test(str) || rgbColorPercent.test(str) || rgbaColorPercent.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isRgbColorValidator from 'validator/lib/isRgbColor';\nexport var IS_RGB_COLOR = 'isRgbColor';\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, includePercentValues) {\n return typeof value === 'string' && isRgbColorValidator(value, includePercentValues);\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, validationOptions) {\n return ValidateBy({\n name: IS_RGB_COLOR,\n constraints: [includePercentValues],\n validator: {\n validate: function (value, args) { return isRgbColor(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be RGB color'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsRgbColor.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = multilineRegexp;\n\n/**\n * Build RegExp object from an array\n * of multiple/multi-line regexp parts\n *\n * @param {string[]} parts\n * @param {string} flags\n * @return {object} - RegExp object\n */\nfunction multilineRegexp(parts, flags) {\n var regexpAsStringLiteral = parts.join('');\n return new RegExp(regexpAsStringLiteral, flags);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isSemVer;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _multilineRegex = _interopRequireDefault(require(\"./util/multilineRegex\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Regular Expression to match\n * semantic versioning (SemVer)\n * built from multi-line, multi-parts regexp\n * Reference: https://semver.org/\n */\nvar semanticVersioningRegex = (0, _multilineRegex.default)(['^(0|[1-9]\\\\d*)\\\\.(0|[1-9]\\\\d*)\\\\.(0|[1-9]\\\\d*)', '(?:-((?:0|[1-9]\\\\d*|\\\\d*[a-z-][0-9a-z-]*)(?:\\\\.(?:0|[1-9]\\\\d*|\\\\d*[a-z-][0-9a-z-]*))*))', '?(?:\\\\+([0-9a-z-]+(?:\\\\.[0-9a-z-]+)*))?$'], 'i');\n\nfunction isSemVer(str) {\n (0, _assertString.default)(str);\n return semanticVersioningRegex.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isSemVerValidator from 'validator/lib/isSemVer';\nexport var IS_SEM_VER = 'isSemVer';\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) {\n return typeof value === 'string' && isSemVerValidator(value);\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) {\n return ValidateBy({\n name: IS_SEM_VER,\n validator: {\n validate: function (value, args) { return isSemVer(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a Semantic Versioning Specification'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsSemVer.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_BOOLEAN = 'isBoolean';\n/**\n * Checks if a given value is a boolean.\n */\nexport function isBoolean(value) {\n return value instanceof Boolean || typeof value === 'boolean';\n}\n/**\n * Checks if a value is a boolean.\n */\nexport function IsBoolean(validationOptions) {\n return ValidateBy({\n name: IS_BOOLEAN,\n validator: {\n validate: function (value, args) { return isBoolean(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a boolean value'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsBoolean.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_DATE = 'isDate';\n/**\n * Checks if a given value is a date.\n */\nexport function isDate(value) {\n return value instanceof Date && !isNaN(value.getTime());\n}\n/**\n * Checks if a value is a date.\n */\nexport function IsDate(validationOptions) {\n return ValidateBy({\n name: IS_DATE,\n validator: {\n validate: function (value, args) { return isDate(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a Date instance'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsDate.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_NUMBER = 'isNumber';\n/**\n * Checks if a given value is a number.\n */\nexport function isNumber(value, options) {\n if (options === void 0) { options = {}; }\n if (typeof value !== 'number') {\n return false;\n }\n if (value === Infinity || value === -Infinity) {\n return options.allowInfinity;\n }\n if (Number.isNaN(value)) {\n return options.allowNaN;\n }\n if (options.maxDecimalPlaces !== undefined) {\n var decimalPlaces = 0;\n if (value % 1 !== 0) {\n decimalPlaces = value.toString().split('.')[1].length;\n }\n if (decimalPlaces > options.maxDecimalPlaces) {\n return false;\n }\n }\n return Number.isFinite(value);\n}\n/**\n * Checks if a value is a number.\n */\nexport function IsNumber(options, validationOptions) {\n if (options === void 0) { options = {}; }\n return ValidateBy({\n name: IS_NUMBER,\n constraints: [options],\n validator: {\n validate: function (value, args) { return isNumber(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a number conforming to the specified constraints'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsNumber.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_ENUM = 'isEnum';\n/**\n * Checks if a given value is an enum\n */\nexport function isEnum(value, entity) {\n var enumValues = Object.keys(entity).map(function (k) { return entity[k]; });\n return enumValues.indexOf(value) >= 0;\n}\n/**\n * Checks if a given value is an enum\n */\nexport function IsEnum(entity, validationOptions) {\n return ValidateBy({\n name: IS_ENUM,\n constraints: [entity],\n validator: {\n validate: function (value, args) { return isEnum(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid enum value'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsEnum.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_INT = 'isInt';\n/**\n * Checks if value is an integer.\n */\nexport function isInt(val) {\n return typeof val === 'number' && Number.isInteger(val);\n}\n/**\n * Checks if value is an integer.\n */\nexport function IsInt(validationOptions) {\n return ValidateBy({\n name: IS_INT,\n validator: {\n validate: function (value, args) { return isInt(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an integer number'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsInt.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_STRING = 'isString';\n/**\n * Checks if a given value is a real string.\n */\nexport function isString(value) {\n return value instanceof String || typeof value === 'string';\n}\n/**\n * Checks if a given value is a real string.\n */\nexport function IsString(validationOptions) {\n return ValidateBy({\n name: IS_STRING,\n validator: {\n validate: function (value, args) { return isString(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a string'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsString.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_ARRAY = 'isArray';\n/**\n * Checks if a given value is an array\n */\nexport function isArray(value) {\n return Array.isArray(value);\n}\n/**\n * Checks if a given value is an array\n */\nexport function IsArray(validationOptions) {\n return ValidateBy({\n name: IS_ARRAY,\n validator: {\n validate: function (value, args) { return isArray(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an array'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsArray.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_OBJECT = 'isObject';\n/**\n * Checks if the value is valid Object.\n * Returns false if the value is not an object.\n */\nexport function isObject(value) {\n return value != null && (typeof value === 'object' || typeof value === 'function') && !Array.isArray(value);\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) {\n return ValidateBy({\n name: IS_OBJECT,\n validator: {\n validate: function (value, args) { return isObject(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an object'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsObject.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var ARRAY_CONTAINS = 'arrayContains';\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, values) {\n if (!Array.isArray(array))\n return false;\n return values.every(function (value) { return array.indexOf(value) !== -1; });\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, validationOptions) {\n return ValidateBy({\n name: ARRAY_CONTAINS,\n constraints: [values],\n validator: {\n validate: function (value, args) { return arrayContains(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain $constraint1 values'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=ArrayContains.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var ARRAY_NOT_CONTAINS = 'arrayNotContains';\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, values) {\n if (!Array.isArray(array))\n return false;\n return values.every(function (value) { return array.indexOf(value) === -1; });\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, validationOptions) {\n return ValidateBy({\n name: ARRAY_NOT_CONTAINS,\n constraints: [values],\n validator: {\n validate: function (value, args) { return arrayNotContains(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not contain $constraint1 values'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=ArrayNotContains.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var ARRAY_NOT_EMPTY = 'arrayNotEmpty';\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) {\n return Array.isArray(array) && array.length > 0;\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) {\n return ValidateBy({\n name: ARRAY_NOT_EMPTY,\n validator: {\n validate: function (value, args) { return arrayNotEmpty(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not be empty'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=ArrayNotEmpty.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var ARRAY_MIN_SIZE = 'arrayMinSize';\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, min) {\n return Array.isArray(array) && array.length >= min;\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, validationOptions) {\n return ValidateBy({\n name: ARRAY_MIN_SIZE,\n constraints: [min],\n validator: {\n validate: function (value, args) { return arrayMinSize(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain at least $constraint1 elements'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=ArrayMinSize.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var ARRAY_MAX_SIZE = 'arrayMaxSize';\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, max) {\n return Array.isArray(array) && array.length <= max;\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, validationOptions) {\n return ValidateBy({\n name: ARRAY_MAX_SIZE,\n constraints: [max],\n validator: {\n validate: function (value, args) { return arrayMaxSize(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain not more than $constraint1 elements'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=ArrayMaxSize.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var ARRAY_UNIQUE = 'arrayUnique';\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, identifier) {\n if (!Array.isArray(array))\n return false;\n if (identifier) {\n array = array.map(function (o) { return (o != null ? identifier(o) : o); });\n }\n var uniqueItems = array.filter(function (a, b, c) { return c.indexOf(a) === b; });\n return array.length === uniqueItems.length;\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(identifierOrOptions, validationOptions) {\n var identifier = typeof identifierOrOptions === 'function' ? identifierOrOptions : undefined;\n var options = typeof identifierOrOptions !== 'function' ? identifierOrOptions : validationOptions;\n return ValidateBy({\n name: ARRAY_UNIQUE,\n validator: {\n validate: function (value, args) { return arrayUnique(value, identifier); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + \"All $property's elements must be unique\"; }, options),\n },\n }, options);\n}\n//# sourceMappingURL=ArrayUnique.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport { isObject } from '../typechecker/IsObject';\nexport var IS_NOT_EMPTY_OBJECT = 'isNotEmptyObject';\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, options) {\n if (!isObject(value)) {\n return false;\n }\n if ((options === null || options === void 0 ? void 0 : options.nullable) === true) {\n return !Object.values(value).every(function (propertyValue) { return propertyValue === null || propertyValue === undefined; });\n }\n for (var key in value) {\n if (value.hasOwnProperty(key)) {\n return true;\n }\n }\n return false;\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(options, validationOptions) {\n return ValidateBy({\n name: IS_NOT_EMPTY_OBJECT,\n constraints: [options],\n validator: {\n validate: function (value, args) { return isNotEmptyObject(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a non-empty object'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsNotEmptyObject.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_INSTANCE = 'isInstance';\n/**\n * Checks if the value is an instance of the specified object.\n */\nexport function isInstance(object, targetTypeConstructor) {\n return (targetTypeConstructor && typeof targetTypeConstructor === 'function' && object instanceof targetTypeConstructor);\n}\n/**\n * Checks if the value is an instance of the specified object.\n */\nexport function IsInstance(targetType, validationOptions) {\n return ValidateBy({\n name: IS_INSTANCE,\n constraints: [targetType],\n validator: {\n validate: function (value, args) { return isInstance(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix, args) {\n if (args.constraints[0]) {\n return eachPrefix + \"$property must be an instance of \".concat(args.constraints[0].name);\n }\n else {\n return eachPrefix + \"\".concat(IS_INSTANCE, \" decorator expects and object as value, but got falsy value.\");\n }\n }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsInstance.js.map","import { getMetadataStorage } from './metadata/MetadataStorage';\nimport { Validator } from './validation/Validator';\nimport { getFromContainer } from './container';\n// -------------------------------------------------------------------------\n// Export everything api users needs\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';\n/**\n * Validates given object by object's decorators or given validation schema.\n */\nexport function validate(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions) {\n if (typeof schemaNameOrObject === 'string') {\n return getFromContainer(Validator).validate(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions);\n }\n else {\n return getFromContainer(Validator).validate(schemaNameOrObject, objectOrValidationOptions);\n }\n}\n/**\n * Validates given object by object's decorators or given validation schema and reject on error.\n */\nexport function validateOrReject(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions) {\n if (typeof schemaNameOrObject === 'string') {\n return getFromContainer(Validator).validateOrReject(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions);\n }\n else {\n return getFromContainer(Validator).validateOrReject(schemaNameOrObject, objectOrValidationOptions);\n }\n}\n/**\n * Validates given object by object's decorators or given validation schema.\n * Note that this method completely ignores async validations.\n * If you want to properly perform validation you need to call validate method instead.\n */\nexport function validateSync(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions) {\n if (typeof schemaNameOrObject === 'string') {\n return getFromContainer(Validator).validateSync(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions);\n }\n else {\n return getFromContainer(Validator).validateSync(schemaNameOrObject, objectOrValidationOptions);\n }\n}\n/**\n * Registers a new validation schema.\n */\nexport function registerSchema(schema) {\n getMetadataStorage().addValidationSchema(schema);\n}\n//# sourceMappingURL=index.js.map"],"names":["this","require$$0","require$$1","alpha_1","isFloat_1","_assertString","_interopRequireDefault","_alpha","locales","require$$2","isAlpha_1","isAlpha","isAlphaValidator","isAlphanumeric_1","isAlphanumeric","isAlphanumericValidator","require$$3","require$$4","isFullWidth_1","isFullWidth","isFullWidthValidator","isHalfWidth_1","isHalfWidth","isHalfWidthValidator","isMobilePhone_1","isMobilePhone","isMobilePhoneValidator","isISO31661Alpha2_1","isISO31661Alpha2","isISO31661Alpha2Validator","_classCallCheck","_typeof","_defineProperties","_createClass","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_objectSpread","_defineProperty","isPossibleNumber","parsePhoneNumber","parseNumber","isObject","parsePhoneNumberFromString","parsePhoneNumberFromString_","_parsePhoneNumberFromString","isIBAN_1","isIBAN","isIBANValidator","isPostalCode_1","isPostalCode","isPostalCodeValidator"],"mappings":"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EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,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,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE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C,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAA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AC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7U;IACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,C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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/bundles/class-validator.umd.min.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/bundles/class-validator.umd.min.js new file mode 100644 index 00000000..8afca119 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/bundles/class-validator.umd.min.js @@ -0,0 +1,2 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).ClassValidator={})}(this,(function(t){"use strict";var e=function(t){this.groups=[],this.each=!1,this.context=void 0,this.type=t.type,this.target=t.target,this.propertyName=t.propertyName,this.constraints=t.constraints,this.constraintCls=t.constraintCls,this.validationTypeOptions=t.validationTypeOptions,t.validationOptions&&(this.message=t.validationOptions.message,this.groups=t.validationOptions.groups,this.always=t.validationOptions.always,this.each=t.validationOptions.each,this.context=t.validationOptions.context)},r=function(){function t(){}return t.prototype.transform=function(t){var r=[];return Object.keys(t.properties).forEach((function(n){t.properties[n].forEach((function(d){var a={message:d.message,groups:d.groups,always:d.always,each:d.each},o={type:d.type,target:t.name,propertyName:n,constraints:d.constraints,validationTypeOptions:d.options,validationOptions:a};r.push(new e(o))}))})),r},t}();function n(){return"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:void 0}function d(t){return null!==t&&"object"==typeof t&&"function"==typeof t.then}var a=function(){function t(){this.validationMetadatas=[],this.constraintMetadatas=[]}return Object.defineProperty(t.prototype,"hasValidationMetaData",{get:function(){return!!this.validationMetadatas.length},enumerable:!1,configurable:!0}),t.prototype.addValidationSchema=function(t){var e=this;(new r).transform(t).forEach((function(t){return e.addValidationMetadata(t)}))},t.prototype.addValidationMetadata=function(t){this.validationMetadatas.push(t)},t.prototype.addConstraintMetadata=function(t){this.constraintMetadatas.push(t)},t.prototype.groupByPropertyName=function(t){var e={};return t.forEach((function(t){e[t.propertyName]||(e[t.propertyName]=[]),e[t.propertyName].push(t)})),e},t.prototype.getTargetValidationMetadatas=function(t,e,r,n,d){var a=function(t){return void 0!==t.always?t.always:(!t.groups||!t.groups.length)&&r},o=function(t){return!(!n||d&&d.length||!t.groups||!t.groups.length)},i=this.validationMetadatas.filter((function(r){return(r.target===t||r.target===e)&&(!!a(r)||!o(r)&&(!(d&&d.length>0)||r.groups&&!!r.groups.find((function(t){return-1!==d.indexOf(t)}))))})),u=this.validationMetadatas.filter((function(e){return"string"!=typeof e.target&&(e.target!==t&&((!(e.target instanceof Function)||t.prototype instanceof e.target)&&(!!a(e)||!o(e)&&(!(d&&d.length>0)||e.groups&&!!e.groups.find((function(t){return-1!==d.indexOf(t)}))))))})),s=u.filter((function(t){return!i.find((function(e){return e.propertyName===t.propertyName&&e.type===t.type}))}));return i.concat(s)},t.prototype.getTargetValidatorConstraints=function(t){return this.constraintMetadatas.filter((function(e){return e.target===t}))},t}();function o(){var t=n();return t.classValidatorMetadataStorage||(t.classValidatorMetadataStorage=new a),t.classValidatorMetadataStorage}var i=function(){function t(){}return t.prototype.toString=function(t,e,r){var n=this;void 0===t&&(t=!1),void 0===e&&(e=!1),void 0===r&&(r="");var d=t?"":"",a=t?"":"",o=function(t){return" - property ".concat(d).concat(r).concat(t).concat(a," has failed the following constraints: ").concat(d).concat(Object.keys(n.constraints).join(", ")).concat(a," \n")};if(e){var i=Number.isInteger(+this.property)?"[".concat(this.property,"]"):"".concat(r?".":"").concat(this.property);return this.constraints?o(i):this.children?this.children.map((function(e){return e.toString(t,!0,"".concat(r).concat(i))})).join(""):""}return"An instance of ".concat(d).concat(this.target?this.target.constructor.name:"an object").concat(a," has failed the validation:\n")+(this.constraints?o(this.property):"")+(this.children?this.children.map((function(e){return e.toString(t,!0,n.property)})).join(""):"")},t}(),u=function(){function t(){}return t.isValid=function(t){var e=this;return"isValid"!==t&&"getMessage"!==t&&-1!==Object.keys(this).map((function(t){return e[t]})).indexOf(t)},t.CUSTOM_VALIDATION="customValidation",t.NESTED_VALIDATION="nestedValidation",t.PROMISE_VALIDATION="promiseValidation",t.CONDITIONAL_VALIDATION="conditionalValidation",t.WHITELIST="whitelistValidation",t.IS_DEFINED="isDefined",t}();var s,$,l=function(){function t(){}return t.replaceMessageSpecialTokens=function(t,e){var r;return t instanceof Function?r=t(e):"string"==typeof t&&(r=t),r&&Array.isArray(e.constraints)&&e.constraints.forEach((function(t,e){r=r.replace(new RegExp("\\$constraint".concat(e+1),"g"),function(t){return Array.isArray(t)?t.join(", "):"".concat(t)}(t))})),r&&void 0!==e.value&&null!==e.value&&"string"==typeof e.value&&(r=r.replace(/\$value/g,e.value)),r&&(r=r.replace(/\$property/g,e.property)),r&&(r=r.replace(/\$target/g,e.targetName)),r},t}(),f=function(){function t(t,e){this.validator=t,this.validatorOptions=e,this.awaitingPromises=[],this.ignoreAsyncValidations=!1,this.metadataStorage=o()}return t.prototype.execute=function(t,e,r){var n,d=this;this.metadataStorage.hasValidationMetaData||!0!==(null===(n=this.validatorOptions)||void 0===n?void 0:n.enableDebugMessages)||console.warn("No metadata found. There is more than once class-validator version installed probably. You need to flatten your dependencies.");var a=this.validatorOptions?this.validatorOptions.groups:void 0,o=this.validatorOptions&&this.validatorOptions.strictGroups||!1,s=this.validatorOptions&&this.validatorOptions.always||!1,$=this.metadataStorage.getTargetValidationMetadatas(t.constructor,e,s,o,a),l=this.metadataStorage.groupByPropertyName($);if(this.validatorOptions&&this.validatorOptions.forbidUnknownValues&&!$.length){var f=new i;return this.validatorOptions&&this.validatorOptions.validationError&&void 0!==this.validatorOptions.validationError.target&&!0!==this.validatorOptions.validationError.target||(f.target=t),f.value=void 0,f.property=void 0,f.children=[],f.constraints={unknownValue:"an unknown value was passed to the validate function"},void r.push(f)}this.validatorOptions&&this.validatorOptions.whitelist&&this.whitelist(t,l,r),Object.keys(l).forEach((function(e){var n=t[e],a=l[e].filter((function(t){return t.type===u.IS_DEFINED})),o=l[e].filter((function(t){return t.type!==u.IS_DEFINED&&t.type!==u.WHITELIST}));n instanceof Promise&&o.find((function(t){return t.type===u.PROMISE_VALIDATION}))?d.awaitingPromises.push(n.then((function(n){d.performValidations(t,n,e,a,o,r)}))):d.performValidations(t,n,e,a,o,r)}))},t.prototype.whitelist=function(t,e,r){var n=this,d=[];Object.keys(t).forEach((function(t){e[t]&&0!==e[t].length||d.push(t)})),d.length>0&&(this.validatorOptions&&this.validatorOptions.forbidNonWhitelisted?d.forEach((function(e){var d,a=n.generateValidationError(t,t[e],e);a.constraints=((d={})[u.WHITELIST]="property ".concat(e," should not exist"),d),a.children=void 0,r.push(a)})):d.forEach((function(e){return delete t[e]})))},t.prototype.stripEmptyErrors=function(t){var e=this;return t.filter((function(t){if(t.children&&(t.children=e.stripEmptyErrors(t.children)),0===Object.keys(t.constraints).length){if(0===t.children.length)return!1;delete t.constraints}return!0}))},t.prototype.performValidations=function(t,e,r,n,d,a){var o=d.filter((function(t){return t.type===u.CUSTOM_VALIDATION})),i=d.filter((function(t){return t.type===u.NESTED_VALIDATION})),s=d.filter((function(t){return t.type===u.CONDITIONAL_VALIDATION})),$=this.generateValidationError(t,e,r);a.push($),this.conditionalValidations(t,e,s)&&(this.customValidations(t,e,n,$),this.mapContexts(t,e,n,$),void 0===e&&this.validatorOptions&&!0===this.validatorOptions.skipUndefinedProperties||null===e&&this.validatorOptions&&!0===this.validatorOptions.skipNullProperties||null==e&&this.validatorOptions&&!0===this.validatorOptions.skipMissingProperties||(this.customValidations(t,e,o,$),this.nestedValidations(e,i,$.children),this.mapContexts(t,e,d,$),this.mapContexts(t,e,o,$)))},t.prototype.generateValidationError=function(t,e,r){var n=new i;return this.validatorOptions&&this.validatorOptions.validationError&&void 0!==this.validatorOptions.validationError.target&&!0!==this.validatorOptions.validationError.target||(n.target=t),this.validatorOptions&&this.validatorOptions.validationError&&void 0!==this.validatorOptions.validationError.value&&!0!==this.validatorOptions.validationError.value||(n.value=e),n.property=r,n.children=[],n.constraints={},n},t.prototype.conditionalValidations=function(t,e,r){return r.map((function(r){return r.constraints[0](t,e)})).reduce((function(t,e){return t&&e}),!0)},t.prototype.customValidations=function(t,e,r,n){var a=this;r.forEach((function(r){a.metadataStorage.getTargetValidatorConstraints(r.constraintCls).forEach((function(o){if(!(o.async&&a.ignoreAsyncValidations||a.validatorOptions&&a.validatorOptions.stopAtFirstError&&Object.keys(n.constraints||{}).length>0)){var i={targetName:t.constructor?t.constructor.name:void 0,property:r.propertyName,object:t,value:e,constraints:r.constraints};if(r.each&&(Array.isArray(e)||e instanceof Set||e instanceof Map)){var u,s=((u=e)instanceof Map?Array.from(u.values()):Array.isArray(u)?u:Array.from(u)).map((function(t){return o.instance.validate(t,i)}));if(s.some((function(t){return d(t)}))){var $=s.map((function(t){return d(t)?t:Promise.resolve(t)})),l=Promise.all($).then((function(d){if(!d.every((function(t){return t}))){var i=a.createValidationError(t,e,r,o),u=i[0],s=i[1];n.constraints[u]=s,r.context&&(n.contexts||(n.contexts={}),n.contexts[u]=Object.assign(n.contexts[u]||{},r.context))}}));a.awaitingPromises.push(l)}else{if(!s.every((function(t){return t}))){var f=a.createValidationError(t,e,r,o);y=f[0],g=f[1];n.constraints[y]=g}}}else{var c=o.instance.validate(e,i);if(d(c)){var p=c.then((function(d){if(!d){var i=a.createValidationError(t,e,r,o),u=i[0],s=i[1];n.constraints[u]=s,r.context&&(n.contexts||(n.contexts={}),n.contexts[u]=Object.assign(n.contexts[u]||{},r.context))}}));a.awaitingPromises.push(p)}else if(!c){var v=a.createValidationError(t,e,r,o),y=v[0],g=v[1];n.constraints[y]=g}}}}))}))},t.prototype.nestedValidations=function(t,e,r){var n=this;void 0!==t&&e.forEach((function(d){var a;if(d.type===u.NESTED_VALIDATION||d.type===u.PROMISE_VALIDATION)if(Array.isArray(t)||t instanceof Set||t instanceof Map)(t instanceof Set?Array.from(t):t).forEach((function(d,a){n.performValidations(t,d,a.toString(),[],e,r)}));else if(t instanceof Object){var o="string"==typeof d.target?d.target:d.target.name;n.execute(t,o,r)}else{var s=new i;s.value=t,s.property=d.propertyName,s.target=d.target;var $=n.createValidationError(d.target,t,d),l=$[0],f=$[1];s.constraints=((a={})[l]=f,a),r.push(s)}}))},t.prototype.mapContexts=function(t,e,r,n){var d=this;return r.forEach((function(t){if(t.context){var e=void 0;if(t.type===u.CUSTOM_VALIDATION)e=d.metadataStorage.getTargetValidatorConstraints(t.constraintCls)[0];var r=d.getConstraintType(t,e);n.constraints[r]&&(n.contexts||(n.contexts={}),n.contexts[r]=Object.assign(n.contexts[r]||{},t.context))}}))},t.prototype.createValidationError=function(t,e,r,n){var d=t.constructor?t.constructor.name:void 0,a=this.getConstraintType(r,n),o={targetName:d,property:r.propertyName,object:t,value:e,constraints:r.constraints},i=r.message||"";return r.message||this.validatorOptions&&(!this.validatorOptions||this.validatorOptions.dismissDefaultMessages)||n&&n.instance.defaultMessage instanceof Function&&(i=n.instance.defaultMessage(o)),[a,l.replaceMessageSpecialTokens(i,o)]},t.prototype.getConstraintType=function(t,e){return e&&e.name?e.name:t.type},t}(),c=function(t,e,r,n){return new(r||(r=Promise))((function(d,a){function o(t){try{u(n.next(t))}catch(t){a(t)}}function i(t){try{u(n.throw(t))}catch(t){a(t)}}function u(t){var e;t.done?d(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(o,i)}u((n=n.apply(t,e||[])).next())}))},p=function(t,e){var r,n,d,a,o={label:0,sent:function(){if(1&d[0])throw d[1];return d[1]},trys:[],ops:[]};return a={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function i(a){return function(i){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(d=2&a[0]?n.return:a[0]?n.throw||((d=n.return)&&d.call(n),0):n.next)&&!(d=d.call(n,a[1])).done)return d;switch(n=0,d&&(a=[2&a[0],d.value]),a[0]){case 0:case 1:d=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(d=o.trys,(d=d.length>0&&d[d.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!d||a[1]>d[0]&&a[1]1)throw"More than one implementation of ValidatorConstraintInterface found for validator on: ".concat(t.target.name,":").concat(t.propertyName)}else{var n=t.validator;r=function(){function t(){}return t.prototype.validate=function(t,e){return n.validate(t,e)},t.prototype.defaultMessage=function(t){return n.defaultMessage?n.defaultMessage(t):""},t}(),o().addConstraintMetadata(new h(r,t.name,t.async))}var d={type:t.name&&u.isValid(t.name)?t.name:u.CUSTOM_VALIDATION,target:t.target,propertyName:t.propertyName,validationOptions:t.options,constraintCls:r,constraints:t.constraints};o().addValidationMetadata(new e(d))}function A(t,e){return function(r){var n=e&&e.each?"each value in ":"";return t(n,r)}}function b(t,e){return function(r,n){m({name:t.name,target:r.constructor,propertyName:n,options:e,constraints:t.constraints,validator:t.validator})}}var _=u.IS_DEFINED;function x(t){return null!=t}var I=function(){return I=Object.assign||function(t){for(var e,r=1,n=arguments.length;r0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0;for(var r in e)void 0===t[r]&&(t[r]=e[r]);return t},t.exports=e.default,t.exports.default=e.default}(N,N.exports),function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){if((0,r.default)(t),e=(0,n.default)(e,s),!t.includes(","))return!1;var d=t.split(",");if(d[0].startsWith("(")&&!d[1].endsWith(")")||d[1].endsWith(")")&&!d[0].startsWith("("))return!1;if(e.checkDMS)return i.test(d[0])&&u.test(d[1]);return a.test(d[0])&&o.test(d[1])};var r=d(O.exports),n=d(N.exports);function d(t){return t&&t.__esModule?t:{default:t}}var a=/^\(?[+-]?(90(\.0+)?|[1-8]?\d(\.\d+)?)$/,o=/^\s?[+-]?(180(\.0+)?|1[0-7]\d(\.\d+)?|\d{1,2}(\.\d+)?)\)?$/,i=/^(([1-8]?\d)\D+([1-5]?\d|60)\D+([1-5]?\d|60)(\.\d+)?|90\D+0\D+0)\D+[NSns]?$/i,u=/^\s*([1-7]?\d{1,2}\D+([1-5]?\d|60)\D+([1-5]?\d|60)(\.\d+)?|180\D+0\D+0)\D+[EWew]?$/i,s={checkDMS:!1};t.exports=e.default,t.exports.default=e.default}(S,S.exports);var E=M(S.exports),C="isLatLong";function P(t){return"string"==typeof t&&E(t)}var T="isLatitude";function R(t){return("number"==typeof t||"string"==typeof t)&&P("".concat(t,",0"))}var L="isLongitude";function w(t){return("number"==typeof t||"string"==typeof t)&&P("0,".concat(t))}var F="equals";function D(t,e){return t===e}var Z="notEquals";function B(t,e){return t!==e}var G="isEmpty";function U(t){return""===t||null==t}var V="isNotEmpty";function j(t){return""!==t&&null!=t}var H="isIn";function k(t,e){return!Array.isArray(e)||e.some((function(e){return e===t}))}var K="isNotIn";function W(t,e){return!Array.isArray(e)||!e.some((function(e){return e===t}))}var Y={exports:{}},z={exports:{}},J={},X={};Object.defineProperty(X,"__esModule",{value:!0}),X.commaDecimal=X.dotDecimal=X.farsiLocales=X.arabicLocales=X.englishLocales=X.decimal=X.alphanumeric=X.alpha=void 0;var q={"en-US":/^[A-Z]+$/i,"az-AZ":/^[A-VXYZÇƏĞİıÖŞÜ]+$/i,"bg-BG":/^[А-Я]+$/i,"cs-CZ":/^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i,"da-DK":/^[A-ZÆØÅ]+$/i,"de-DE":/^[A-ZÄÖÜß]+$/i,"el-GR":/^[Α-ώ]+$/i,"es-ES":/^[A-ZÁÉÍÑÓÚÜ]+$/i,"fa-IR":/^[ابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهی]+$/i,"fi-FI":/^[A-ZÅÄÖ]+$/i,"fr-FR":/^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i,"it-IT":/^[A-ZÀÉÈÌÎÓÒÙ]+$/i,"nb-NO":/^[A-ZÆØÅ]+$/i,"nl-NL":/^[A-ZÁÉËÏÓÖÜÚ]+$/i,"nn-NO":/^[A-ZÆØÅ]+$/i,"hu-HU":/^[A-ZÁÉÍÓÖŐÚÜŰ]+$/i,"pl-PL":/^[A-ZĄĆĘŚŁŃÓŻŹ]+$/i,"pt-PT":/^[A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i,"ru-RU":/^[А-ЯЁ]+$/i,"sl-SI":/^[A-ZČĆĐŠŽ]+$/i,"sk-SK":/^[A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i,"sr-RS@latin":/^[A-ZČĆŽŠĐ]+$/i,"sr-RS":/^[А-ЯЂЈЉЊЋЏ]+$/i,"sv-SE":/^[A-ZÅÄÖ]+$/i,"th-TH":/^[ก-๐\s]+$/i,"tr-TR":/^[A-ZÇĞİıÖŞÜ]+$/i,"uk-UA":/^[А-ЩЬЮЯЄIЇҐі]+$/i,"vi-VN":/^[A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i,"ku-IQ":/^[ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i,ar:/^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/,he:/^[א-ת]+$/,fa:/^['آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی']+$/i,"hi-IN":/^[\u0900-\u0961]+[\u0972-\u097F]*$/i};X.alpha=q;var Q={"en-US":/^[0-9A-Z]+$/i,"az-AZ":/^[0-9A-VXYZÇƏĞİıÖŞÜ]+$/i,"bg-BG":/^[0-9А-Я]+$/i,"cs-CZ":/^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i,"da-DK":/^[0-9A-ZÆØÅ]+$/i,"de-DE":/^[0-9A-ZÄÖÜß]+$/i,"el-GR":/^[0-9Α-ω]+$/i,"es-ES":/^[0-9A-ZÁÉÍÑÓÚÜ]+$/i,"fi-FI":/^[0-9A-ZÅÄÖ]+$/i,"fr-FR":/^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i,"it-IT":/^[0-9A-ZÀÉÈÌÎÓÒÙ]+$/i,"hu-HU":/^[0-9A-ZÁÉÍÓÖŐÚÜŰ]+$/i,"nb-NO":/^[0-9A-ZÆØÅ]+$/i,"nl-NL":/^[0-9A-ZÁÉËÏÓÖÜÚ]+$/i,"nn-NO":/^[0-9A-ZÆØÅ]+$/i,"pl-PL":/^[0-9A-ZĄĆĘŚŁŃÓŻŹ]+$/i,"pt-PT":/^[0-9A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i,"ru-RU":/^[0-9А-ЯЁ]+$/i,"sl-SI":/^[0-9A-ZČĆĐŠŽ]+$/i,"sk-SK":/^[0-9A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i,"sr-RS@latin":/^[0-9A-ZČĆŽŠĐ]+$/i,"sr-RS":/^[0-9А-ЯЂЈЉЊЋЏ]+$/i,"sv-SE":/^[0-9A-ZÅÄÖ]+$/i,"th-TH":/^[ก-๙\s]+$/i,"tr-TR":/^[0-9A-ZÇĞİıÖŞÜ]+$/i,"uk-UA":/^[0-9А-ЩЬЮЯЄIЇҐі]+$/i,"ku-IQ":/^[٠١٢٣٤٥٦٧٨٩0-9ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i,"vi-VN":/^[0-9A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i,ar:/^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/,he:/^[0-9א-ת]+$/,fa:/^['0-9آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی۱۲۳۴۵۶۷۸۹۰']+$/i,"hi-IN":/^[\u0900-\u0963]+[\u0966-\u097F]*$/i};X.alphanumeric=Q;var tt={"en-US":".",ar:"٫"};X.decimal=tt;var et=["AU","GB","HK","IN","NZ","ZA","ZM"];X.englishLocales=et;for(var rt,nt=0;nt=e.min)&&(!e.hasOwnProperty("max")||n<=e.max)&&(!e.hasOwnProperty("lt")||ne.gt)},J.locales=void 0;var pt,vt=(pt=O.exports)&&pt.__esModule?pt:{default:pt},yt=X;var gt=Object.keys(yt.decimal);J.locales=gt,function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return(0,r.default)(t)?parseFloat(t):NaN};var r=function(t){return t&&t.__esModule?t:{default:t}}(J);t.exports=e.default,t.exports.default=e.default}(z,z.exports),function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(0,r.default)(t),(0,n.default)(t)%parseInt(e,10)==0};var r=d(O.exports),n=d(z.exports);function d(t){return t&&t.__esModule?t:{default:t}}t.exports=e.default,t.exports.default=e.default}(Y,Y.exports);var ht=M(Y.exports),mt="isDivisibleBy";function At(t,e){return"number"==typeof t&&"number"==typeof e&&ht(String(t),e)}var bt="isPositive";function _t(t){return"number"==typeof t&&t>0}var xt="isNegative";function It(t){return"number"==typeof t&&t<0}function Mt(t,e){return"number"==typeof t&&"number"==typeof e&&t<=e}function St(t,e){return"number"==typeof t&&"number"==typeof e&&t>=e}var Ot="minDate";function Nt(t,e){return t instanceof Date&&t.getTime()>=e.getTime()}var Et="maxDate";function Ct(t,e){return t instanceof Date&&t.getTime()<=e.getTime()}var Pt={exports:{}},Tt={exports:{}};!function(t,e){function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){"object"===r(t)&&null!==t?t="function"==typeof t.toString?t.toString():"[object Object]":(null==t||isNaN(t)&&!t.length)&&(t="");return String(t)},t.exports=e.default,t.exports.default=e.default}(Tt,Tt.exports),function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e,a){if((0,r.default)(t),(a=(0,d.default)(a,o)).ignoreCase)return t.toLowerCase().split((0,n.default)(e).toLowerCase()).length>a.minOccurrences;return t.split((0,n.default)(e)).length>a.minOccurrences};var r=a(O.exports),n=a(Tt.exports),d=a(N.exports);function a(t){return t&&t.__esModule?t:{default:t}}var o={ignoreCase:!1,minOccurrences:1};t.exports=e.default,t.exports.default=e.default}(Pt,Pt.exports);var Rt=M(Pt.exports),Lt="contains";function wt(t,e){return"string"==typeof t&&Rt(t,e)}var Ft="notContains";function Dt(t,e){return"string"==typeof t&&!Rt(t,e)}var Zt={};Object.defineProperty(Zt,"__esModule",{value:!0});var Bt=Zt.default=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en-US",r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};(0,Gt.default)(t);var n=t,d=r.ignore;if(d)if(d instanceof RegExp)n=n.replace(d,"");else{if("string"!=typeof d)throw new Error("ignore should be instance of a String or RegExp");n=n.replace(new RegExp("[".concat(d.replace(/[-[\]{}()*+?.,\\^$|#\\s]/g,"\\$&"),"]"),"g"),"")}if(e in Ut.alpha)return Ut.alpha[e].test(n);throw new Error("Invalid locale '".concat(e,"'"))};Zt.locales=void 0;var Gt=function(t){return t&&t.__esModule?t:{default:t}}(O.exports),Ut=X;var Vt=Object.keys(Ut.alpha);Zt.locales=Vt;var jt="isAlpha";function Ht(t,e){return"string"==typeof t&&Bt(t,e)}var kt={};Object.defineProperty(kt,"__esModule",{value:!0});var Kt=kt.default=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en-US",r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};(0,Wt.default)(t);var n=t,d=r.ignore;if(d)if(d instanceof RegExp)n=n.replace(d,"");else{if("string"!=typeof d)throw new Error("ignore should be instance of a String or RegExp");n=n.replace(new RegExp("[".concat(d.replace(/[-[\]{}()*+?.,\\^$|#\\s]/g,"\\$&"),"]"),"g"),"")}if(e in Yt.alphanumeric)return Yt.alphanumeric[e].test(n);throw new Error("Invalid locale '".concat(e,"'"))};kt.locales=void 0;var Wt=function(t){return t&&t.__esModule?t:{default:t}}(O.exports),Yt=X;var zt=Object.keys(Yt.alphanumeric);kt.locales=zt;var Jt="isAlphanumeric";function Xt(t,e){return"string"==typeof t&&Kt(t,e)}var qt={exports:{}},Qt={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r=function(t,e){return t.some((function(t){return e===t}))};e.default=r,t.exports=e.default,t.exports.default=e.default}(Qt,Qt.exports),function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){if((0,n.default)(t),(e=(0,r.default)(e,i)).locale in a.decimal)return!(0,d.default)(u,t.replace(/ /g,""))&&function(t){return new RegExp("^[-+]?([0-9]+)?(\\".concat(a.decimal[t.locale],"[0-9]{").concat(t.decimal_digits,"})").concat(t.force_decimal?"":"?","$"))}(e).test(t);throw new Error("Invalid locale '".concat(e.locale,"'"))};var r=o(N.exports),n=o(O.exports),d=o(Qt.exports),a=X;function o(t){return t&&t.__esModule?t:{default:t}}var i={force_decimal:!1,decimal_digits:"1,",locale:"en-US"},u=["","-","+"];t.exports=e.default,t.exports.default=e.default}(qt,qt.exports);var te=M(qt.exports),ee="isDecimal";function re(t,e){return"string"==typeof t&&te(t,e)}var ne={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return(0,r.default)(t),n.test(t)};var r=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);var n=/^[\x00-\x7F]+$/;t.exports=e.default,t.exports.default=e.default}(ne,ne.exports);var de=M(ne.exports),ae="isAscii";function oe(t){return"string"==typeof t&&de(t)}var ie={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){(0,r.default)(t),e=(0,n.default)(e,i);var d=t.length;if(e.urlSafe)return o.test(t);if(d%4!=0||a.test(t))return!1;var u=t.indexOf("=");return-1===u||u===d-1||u===d-2&&"="===t[d-1]};var r=d(O.exports),n=d(N.exports);function d(t){return t&&t.__esModule?t:{default:t}}var a=/[^A-Z0-9+\/=]/i,o=/^[A-Z0-9_\-]*$/i,i={urlSafe:!1};t.exports=e.default,t.exports.default=e.default}(ie,ie.exports);var ue=M(ie.exports),se="isBase64";function $e(t){return"string"==typeof t&&ue(t)}var le={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){var d,a;(0,r.default)(t),"object"===n(e)?(d=e.min||0,a=e.max):(d=arguments[1],a=arguments[2]);var o=encodeURI(t).split(/%..|./).length-1;return o>=d&&(void 0===a||o<=a)};var r=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}t.exports=e.default,t.exports.default=e.default}(le,le.exports);var fe=M(le.exports),ce="isByteLength";function pe(t,e,r){return"string"==typeof t&&fe(t,{min:e,max:r})}var ve={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){(0,r.default)(t);var e=t.replace(/[- ]+/g,"");if(!n.test(e))return!1;for(var d,a,o,i=0,u=e.length-1;u>=0;u--)d=e.substring(u,u+1),a=parseInt(d,10),i+=o&&(a*=2)>=10?a%10+1:a,o=!o;return!(i%10!=0||!e)};var r=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);var n=/^(?:4[0-9]{12}(?:[0-9]{3,6})?|5[1-5][0-9]{14}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12,15}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11}|6[27][0-9]{14}|^(81[0-9]{14,17}))$/;t.exports=e.default,t.exports.default=e.default}(ve,ve.exports);var ye=M(ve.exports),ge="isCreditCard";function he(t){return"string"==typeof t&&ye(t)}var me={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(0,n.default)(t),function(t){var e="\\d{".concat(t.digits_after_decimal[0],"}");t.digits_after_decimal.forEach((function(t,r){0!==r&&(e="".concat(e,"|\\d{").concat(t,"}"))}));var r="(".concat(t.symbol.replace(/\W/,(function(t){return"\\".concat(t)})),")").concat(t.require_symbol?"":"?"),n="-?",d="[1-9]\\d{0,2}(\\".concat(t.thousands_separator,"\\d{3})*"),a="(".concat(["0","[1-9]\\d*",d].join("|"),")?"),o="(\\".concat(t.decimal_separator,"(").concat(e,"))").concat(t.require_decimal?"":"?"),i=a+(t.allow_decimal||t.require_decimal?o:"");t.allow_negatives&&!t.parens_for_negatives&&(t.negative_sign_after_digits?i+=n:t.negative_sign_before_digits&&(i=n+i));t.allow_negative_sign_placeholder?i="( (?!\\-))?".concat(i):t.allow_space_after_symbol?i=" ?".concat(i):t.allow_space_after_digits&&(i+="( (?!$))?");t.symbol_after_digits?i+=r:i=r+i;t.allow_negatives&&(t.parens_for_negatives?i="(\\(".concat(i,"\\)|").concat(i,")"):t.negative_sign_before_digits||t.negative_sign_after_digits||(i=n+i));return new RegExp("^(?!-? )(?=.*\\d)".concat(i,"$"))}(e=(0,r.default)(e,a)).test(t)};var r=d(N.exports),n=d(O.exports);function d(t){return t&&t.__esModule?t:{default:t}}var a={symbol:"$",require_symbol:!1,allow_space_after_symbol:!1,symbol_after_digits:!1,allow_negatives:!0,parens_for_negatives:!1,negative_sign_before_digits:!1,negative_sign_after_digits:!1,allow_negative_sign_placeholder:!1,thousands_separator:",",decimal_separator:".",allow_decimal:!0,require_decimal:!1,digits_after_decimal:[2],allow_space_after_digits:!1};t.exports=e.default,t.exports.default=e.default}(me,me.exports);var Ae=M(me.exports),be="isCurrency";function _e(t,e){return"string"==typeof t&&Ae(t,e)}var xe={exports:{}},Ie={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){(0,r.default)(t),(e=(0,n.default)(e,a)).allow_trailing_dot&&"."===t[t.length-1]&&(t=t.substring(0,t.length-1));!0===e.allow_wildcard&&0===t.indexOf("*.")&&(t=t.substring(2));var d=t.split("."),o=d[d.length-1];if(e.require_tld){if(d.length<2)return!1;if(!/^([a-z\u00A1-\u00A8\u00AA-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}|xn[a-z0-9-]{2,})$/i.test(o))return!1;if(/\s/.test(o))return!1}if(!e.allow_numeric_tld&&/^\d+$/.test(o))return!1;return d.every((function(t){return!(t.length>63)&&(!!/^[a-z_\u00a1-\uffff0-9-]+$/i.test(t)&&(!/[\uff01-\uff5e]/.test(t)&&(!/^-|-$/.test(t)&&!(!e.allow_underscores&&/_/.test(t)))))}))};var r=d(O.exports),n=d(N.exports);function d(t){return t&&t.__esModule?t:{default:t}}var a={require_tld:!0,allow_underscores:!1,allow_trailing_dot:!1,allow_numeric_tld:!1,allow_wildcard:!1};t.exports=e.default,t.exports.default=e.default}(Ie,Ie.exports);var Me=M(Ie.exports),Se={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if((0,r.default)(e),!(n=String(n)))return t(e,4)||t(e,6);if("4"===n){if(!a.test(e))return!1;var d=e.split(".").sort((function(t,e){return t-e}));return d[3]<=255}if("6"===n)return!!i.test(e);return!1};var r=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);var n="(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])",d="(".concat(n,"[.]){3}").concat(n),a=new RegExp("^".concat(d,"$")),o="(?:[0-9a-fA-F]{1,4})",i=new RegExp("^("+"(?:".concat(o,":){7}(?:").concat(o,"|:)|")+"(?:".concat(o,":){6}(?:").concat(d,"|:").concat(o,"|:)|")+"(?:".concat(o,":){5}(?::").concat(d,"|(:").concat(o,"){1,2}|:)|")+"(?:".concat(o,":){4}(?:(:").concat(o,"){0,1}:").concat(d,"|(:").concat(o,"){1,3}|:)|")+"(?:".concat(o,":){3}(?:(:").concat(o,"){0,2}:").concat(d,"|(:").concat(o,"){1,4}|:)|")+"(?:".concat(o,":){2}(?:(:").concat(o,"){0,3}:").concat(d,"|(:").concat(o,"){1,5}|:)|")+"(?:".concat(o,":){1}(?:(:").concat(o,"){0,4}:").concat(d,"|(:").concat(o,"){1,6}|:)|")+"(?::((?::".concat(o,"){0,5}:").concat(d,"|(?::").concat(o,"){1,7}|:))")+")(%[0-9a-zA-Z-.:]{1,})?$");t.exports=e.default,t.exports.default=e.default}(Se,Se.exports);var Oe=M(Se.exports);!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){if((0,r.default)(t),(e=(0,n.default)(e,u)).require_display_name||e.allow_display_name){var i=t.match(s);if(i){var v=i[1];if(t=t.replace(v,"").replace(/(^<|>$)/g,""),v.endsWith(" ")&&(v=v.substr(0,v.length-1)),!function(t){var e=t.replace(/^"(.+)"$/,"$1");if(!e.trim())return!1;if(/[\.";<>]/.test(e)){if(e===t)return!1;if(!(e.split('"').length===e.split('\\"').length))return!1}return!0}(v))return!1}else if(e.require_display_name)return!1}if(!e.ignore_max_length&&t.length>254)return!1;var y=t.split("@"),g=y.pop(),h=g.toLowerCase();if(e.host_blacklist.includes(h))return!1;var m=y.join("@");if(e.domain_specific_validation&&("gmail.com"===h||"googlemail.com"===h)){var A=(m=m.toLowerCase()).split("+")[0];if(!(0,d.default)(A.replace(/\./g,""),{min:6,max:30}))return!1;for(var b=A.split("."),_=0;_=e.min,i=!e.hasOwnProperty("max")||t<=e.max,u=!e.hasOwnProperty("lt")||te.gt;return a.test(t)&&o&&i&&u&&s};var r=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);var n=/^(?:[-+]?(?:0|[1-9][0-9]*))$/,d=/^[-+]?[0-9]+$/;t.exports=e.default,t.exports.default=e.default}(lr,lr.exports),function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return(0,r.default)(t,{min:0,max:65535})};var r=function(t){return t&&t.__esModule?t:{default:t}}(lr.exports);t.exports=e.default,t.exports.default=e.default}($r,$r.exports);var fr=M($r.exports),cr="isPort";function pr(t){return"string"==typeof t&&fr(t)}var vr={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function t(e){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if((0,r.default)(e),!(o=String(o)))return t(e,10)||t(e,13);var i,u=e.replace(/[\s-]+/g,""),s=0;if("10"===o){if(!n.test(u))return!1;for(i=0;i<9;i++)s+=(i+1)*u.charAt(i);if("X"===u.charAt(9)?s+=100:s+=10*u.charAt(9),s%11==0)return!!u}else if("13"===o){if(!d.test(u))return!1;for(i=0;i<12;i++)s+=a[i%2]*u.charAt(i);if(u.charAt(12)-(10-s%10)%10==0)return!!u}return!1};var r=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);var n=/^(?:[0-9]{9}X|[0-9]{10})$/,d=/^(?:[0-9]{13})$/,a=[1,3];t.exports=e.default,t.exports.default=e.default}(vr,vr.exports);var yr=M(vr.exports),gr="isIsbn";function hr(t,e){var r=e?"".concat(e):void 0;return"string"==typeof t&&yr(t,r)}var mr={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){if((0,r.default)(t),!n.test(t))return!1;for(var e=!0,d=0,a=t.length-2;a>=0;a--)if(t[a]>="A"&&t[a]<="Z")for(var o=t[a].charCodeAt(0)-55,i=o%10,u=Math.trunc(o/10),s=0,$=[i,u];s<$.length;s++){var l=$[s];d+=e?l>=5?1+2*(l-5):2*l:l,e=!e}else{var f=t[a].charCodeAt(0)-"0".charCodeAt(0);d+=e?f>=5?1+2*(f-5):2*f:f,e=!e}var c=10*Math.trunc((d+9)/10)-d;return+t[t.length-1]===c};var r=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);var n=/^[A-Z]{2}[0-9A-Z]{9}[0-9]$/;t.exports=e.default,t.exports.default=e.default}(mr,mr.exports);var Ar=M(mr.exports),br="isIsin";function _r(t){return"string"==typeof t&&Ar(t)}var xr={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,r.default)(t);var o=e.strictSeparator?d.test(t):n.test(t);return o&&e.strict?a(t):o};var r=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);var n=/^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/,d=/^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T]((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/,a=function(t){var e=t.match(/^(\d{4})-?(\d{3})([ T]{1}\.*|$)/);if(e){var r=Number(e[1]),n=Number(e[2]);return r%4==0&&r%100!=0||r%400==0?n<=366:n<=365}var d=t.match(/(\d{4})-?(\d{0,2})-?(\d*)/).map(Number),a=d[1],o=d[2],i=d[3],u=o?"0".concat(o).slice(-2):o,s=i?"0".concat(i).slice(-2):i,$=new Date("".concat(a,"-").concat(u||"01","-").concat(s||"01"));return!o||!i||$.getUTCFullYear()===a&&$.getUTCMonth()+1===o&&$.getUTCDate()===i};t.exports=e.default,t.exports.default=e.default}(xr,xr.exports);var Ir=M(xr.exports),Mr="isIso8601";function Sr(t,e){return"string"==typeof t&&Ir(t,e)}var Or={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){(0,r.default)(t);try{e=(0,n.default)(e,o);var d=[];e.allow_primitives&&(d=[null,!1,!0]);var i=JSON.parse(t);return d.includes(i)||!!i&&"object"===a(i)}catch(t){}return!1};var r=d(O.exports),n=d(N.exports);function d(t){return t&&t.__esModule?t:{default:t}}function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}var o={allow_primitives:!1};t.exports=e.default,t.exports.default=e.default}(Or,Or.exports);var Nr=M(Or.exports),Er="isJson";function Cr(t){return"string"==typeof t&&Nr(t)}var Pr={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){(0,r.default)(t);var e=t.split("."),d=e.length;if(d>3||d<2)return!1;return e.reduce((function(t,e){return t&&(0,n.default)(e,{urlSafe:!0})}),!0)};var r=d(O.exports),n=d(ie.exports);function d(t){return t&&t.__esModule?t:{default:t}}t.exports=e.default,t.exports.default=e.default}(Pr,Pr.exports);var Tr=M(Pr.exports),Rr="isJwt";function Lr(t){return"string"==typeof t&&Tr(t)}var wr={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return(0,r.default)(t),t===t.toLowerCase()};var r=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);t.exports=e.default,t.exports.default=e.default}(wr,wr.exports);var Fr=M(wr.exports),Dr="isLowercase";function Zr(t){return"string"==typeof t&&Fr(t)}var Br={};Object.defineProperty(Br,"__esModule",{value:!0});var Gr=Br.default=function(t,e,r){if((0,Ur.default)(t),r&&r.strictMode&&!t.startsWith("+"))return!1;if(Array.isArray(e))return e.some((function(e){if(Vr.hasOwnProperty(e)&&Vr[e].test(t))return!0;return!1}));if(e in Vr)return Vr[e].test(t);if(!e||"any"===e){for(var n in Vr){if(Vr.hasOwnProperty(n))if(Vr[n].test(t))return!0}return!1}throw new Error("Invalid locale '".concat(e,"'"))};Br.locales=void 0;var Ur=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);var Vr={"am-AM":/^(\+?374|0)((10|[9|7][0-9])\d{6}$|[2-4]\d{7}$)/,"ar-AE":/^((\+?971)|0)?5[024568]\d{7}$/,"ar-BH":/^(\+?973)?(3|6)\d{7}$/,"ar-DZ":/^(\+?213|0)(5|6|7)\d{8}$/,"ar-LB":/^(\+?961)?((3|81)\d{6}|7\d{7})$/,"ar-EG":/^((\+?20)|0)?1[0125]\d{8}$/,"ar-IQ":/^(\+?964|0)?7[0-9]\d{8}$/,"ar-JO":/^(\+?962|0)?7[789]\d{7}$/,"ar-KW":/^(\+?965)[569]\d{7}$/,"ar-LY":/^((\+?218)|0)?(9[1-6]\d{7}|[1-8]\d{7,9})$/,"ar-MA":/^(?:(?:\+|00)212|0)[5-7]\d{8}$/,"ar-OM":/^((\+|00)968)?(9[1-9])\d{6}$/,"ar-PS":/^(\+?970|0)5[6|9](\d{7})$/,"ar-SA":/^(!?(\+?966)|0)?5\d{8}$/,"ar-SY":/^(!?(\+?963)|0)?9\d{8}$/,"ar-TN":/^(\+?216)?[2459]\d{7}$/,"az-AZ":/^(\+994|0)(5[015]|7[07]|99)\d{7}$/,"bs-BA":/^((((\+|00)3876)|06))((([0-3]|[5-6])\d{6})|(4\d{7}))$/,"be-BY":/^(\+?375)?(24|25|29|33|44)\d{7}$/,"bg-BG":/^(\+?359|0)?8[789]\d{7}$/,"bn-BD":/^(\+?880|0)1[13456789][0-9]{8}$/,"ca-AD":/^(\+376)?[346]\d{5}$/,"cs-CZ":/^(\+?420)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/,"da-DK":/^(\+?45)?\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{2}$/,"de-DE":/^((\+49|0)[1|3])([0|5][0-45-9]\d|6([23]|0\d?)|7([0-57-9]|6\d))\d{7,9}$/,"de-AT":/^(\+43|0)\d{1,4}\d{3,12}$/,"de-CH":/^(\+41|0)([1-9])\d{1,9}$/,"de-LU":/^(\+352)?((6\d1)\d{6})$/,"dv-MV":/^(\+?960)?(7[2-9]|91|9[3-9])\d{7}$/,"el-GR":/^(\+?30|0)?(69\d{8})$/,"en-AU":/^(\+?61|0)4\d{8}$/,"en-BM":/^(\+?1)?441(((3|7)\d{6}$)|(5[0-3][0-9]\d{4}$)|(59\d{5}))/,"en-GB":/^(\+?44|0)7\d{9}$/,"en-GG":/^(\+?44|0)1481\d{6}$/,"en-GH":/^(\+233|0)(20|50|24|54|27|57|26|56|23|28|55|59)\d{7}$/,"en-GY":/^(\+592|0)6\d{6}$/,"en-HK":/^(\+?852[-\s]?)?[456789]\d{3}[-\s]?\d{4}$/,"en-MO":/^(\+?853[-\s]?)?[6]\d{3}[-\s]?\d{4}$/,"en-IE":/^(\+?353|0)8[356789]\d{7}$/,"en-IN":/^(\+?91|0)?[6789]\d{9}$/,"en-KE":/^(\+?254|0)(7|1)\d{8}$/,"en-KI":/^((\+686|686)?)?( )?((6|7)(2|3|8)[0-9]{6})$/,"en-MT":/^(\+?356|0)?(99|79|77|21|27|22|25)[0-9]{6}$/,"en-MU":/^(\+?230|0)?\d{8}$/,"en-NA":/^(\+?264|0)(6|8)\d{7}$/,"en-NG":/^(\+?234|0)?[789]\d{9}$/,"en-NZ":/^(\+?64|0)[28]\d{7,9}$/,"en-PK":/^((00|\+)?92|0)3[0-6]\d{8}$/,"en-PH":/^(09|\+639)\d{9}$/,"en-RW":/^(\+?250|0)?[7]\d{8}$/,"en-SG":/^(\+65)?[3689]\d{7}$/,"en-SL":/^(\+?232|0)\d{8}$/,"en-TZ":/^(\+?255|0)?[67]\d{8}$/,"en-UG":/^(\+?256|0)?[7]\d{8}$/,"en-US":/^((\+1|1)?( |-)?)?(\([2-9][0-9]{2}\)|[2-9][0-9]{2})( |-)?([2-9][0-9]{2}( |-)?[0-9]{4})$/,"en-ZA":/^(\+?27|0)\d{9}$/,"en-ZM":/^(\+?26)?09[567]\d{7}$/,"en-ZW":/^(\+263)[0-9]{9}$/,"en-BW":/^(\+?267)?(7[1-8]{1})\d{6}$/,"es-AR":/^\+?549(11|[2368]\d)\d{8}$/,"es-BO":/^(\+?591)?(6|7)\d{7}$/,"es-CO":/^(\+?57)?3(0(0|1|2|4|5)|1\d|2[0-4]|5(0|1))\d{7}$/,"es-CL":/^(\+?56|0)[2-9]\d{1}\d{7}$/,"es-CR":/^(\+506)?[2-8]\d{7}$/,"es-CU":/^(\+53|0053)?5\d{7}/,"es-DO":/^(\+?1)?8[024]9\d{7}$/,"es-HN":/^(\+?504)?[9|8]\d{7}$/,"es-EC":/^(\+?593|0)([2-7]|9[2-9])\d{7}$/,"es-ES":/^(\+?34)?[6|7]\d{8}$/,"es-PE":/^(\+?51)?9\d{8}$/,"es-MX":/^(\+?52)?(1|01)?\d{10,11}$/,"es-PA":/^(\+?507)\d{7,8}$/,"es-PY":/^(\+?595|0)9[9876]\d{7}$/,"es-SV":/^(\+?503)?[67]\d{7}$/,"es-UY":/^(\+598|0)9[1-9][\d]{6}$/,"es-VE":/^(\+?58)?(2|4)\d{9}$/,"et-EE":/^(\+?372)?\s?(5|8[1-4])\s?([0-9]\s?){6,7}$/,"fa-IR":/^(\+?98[\-\s]?|0)9[0-39]\d[\-\s]?\d{3}[\-\s]?\d{4}$/,"fi-FI":/^(\+?358|0)\s?(4(0|1|2|4|5|6)?|50)\s?(\d\s?){4,8}\d$/,"fj-FJ":/^(\+?679)?\s?\d{3}\s?\d{4}$/,"fo-FO":/^(\+?298)?\s?\d{2}\s?\d{2}\s?\d{2}$/,"fr-BF":/^(\+226|0)[67]\d{7}$/,"fr-CM":/^(\+?237)6[0-9]{8}$/,"fr-FR":/^(\+?33|0)[67]\d{8}$/,"fr-GF":/^(\+?594|0|00594)[67]\d{8}$/,"fr-GP":/^(\+?590|0|00590)[67]\d{8}$/,"fr-MQ":/^(\+?596|0|00596)[67]\d{8}$/,"fr-PF":/^(\+?689)?8[789]\d{6}$/,"fr-RE":/^(\+?262|0|00262)[67]\d{8}$/,"he-IL":/^(\+972|0)([23489]|5[012345689]|77)[1-9]\d{6}$/,"hu-HU":/^(\+?36|06)(20|30|31|50|70)\d{7}$/,"id-ID":/^(\+?62|0)8(1[123456789]|2[1238]|3[1238]|5[12356789]|7[78]|9[56789]|8[123456789])([\s?|\d]{5,11})$/,"it-IT":/^(\+?39)?\s?3\d{2} ?\d{6,7}$/,"it-SM":/^((\+378)|(0549)|(\+390549)|(\+3780549))?6\d{5,9}$/,"ja-JP":/^(\+81[ \-]?(\(0\))?|0)[6789]0[ \-]?\d{4}[ \-]?\d{4}$/,"ka-GE":/^(\+?995)?(5|79)\d{7}$/,"kk-KZ":/^(\+?7|8)?7\d{9}$/,"kl-GL":/^(\+?299)?\s?\d{2}\s?\d{2}\s?\d{2}$/,"ko-KR":/^((\+?82)[ \-]?)?0?1([0|1|6|7|8|9]{1})[ \-]?\d{3,4}[ \-]?\d{4}$/,"lt-LT":/^(\+370|8)\d{8}$/,"lv-LV":/^(\+?371)2\d{7}$/,"ms-MY":/^(\+?6?01){1}(([0145]{1}(\-|\s)?\d{7,8})|([236789]{1}(\s|\-)?\d{7}))$/,"mz-MZ":/^(\+?258)?8[234567]\d{7}$/,"nb-NO":/^(\+?47)?[49]\d{7}$/,"ne-NP":/^(\+?977)?9[78]\d{8}$/,"nl-BE":/^(\+?32|0)4\d{8}$/,"nl-NL":/^(((\+|00)?31\(0\))|((\+|00)?31)|0)6{1}\d{8}$/,"nn-NO":/^(\+?47)?[49]\d{7}$/,"pl-PL":/^(\+?48)? ?[5-8]\d ?\d{3} ?\d{2} ?\d{2}$/,"pt-BR":/^((\+?55\ ?[1-9]{2}\ ?)|(\+?55\ ?\([1-9]{2}\)\ ?)|(0[1-9]{2}\ ?)|(\([1-9]{2}\)\ ?)|([1-9]{2}\ ?))((\d{4}\-?\d{4})|(9[2-9]{1}\d{3}\-?\d{4}))$/,"pt-PT":/^(\+?351)?9[1236]\d{7}$/,"pt-AO":/^(\+244)\d{9}$/,"ro-RO":/^(\+?4?0)\s?7\d{2}(\/|\s|\.|\-)?\d{3}(\s|\.|\-)?\d{3}$/,"ru-RU":/^(\+?7|8)?9\d{9}$/,"si-LK":/^(?:0|94|\+94)?(7(0|1|2|4|5|6|7|8)( |-)?)\d{7}$/,"sl-SI":/^(\+386\s?|0)(\d{1}\s?\d{3}\s?\d{2}\s?\d{2}|\d{2}\s?\d{3}\s?\d{3})$/,"sk-SK":/^(\+?421)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/,"sq-AL":/^(\+355|0)6[789]\d{6}$/,"sr-RS":/^(\+3816|06)[- \d]{5,9}$/,"sv-SE":/^(\+?46|0)[\s\-]?7[\s\-]?[02369]([\s\-]?\d){7}$/,"tg-TJ":/^(\+?992)?[5][5]\d{7}$/,"th-TH":/^(\+66|66|0)\d{9}$/,"tr-TR":/^(\+?90|0)?5\d{9}$/,"tk-TM":/^(\+993|993|8)\d{8}$/,"uk-UA":/^(\+?38|8)?0\d{9}$/,"uz-UZ":/^(\+?998)?(6[125-79]|7[1-69]|88|9\d)\d{7}$/,"vi-VN":/^((\+?84)|0)((3([2-9]))|(5([25689]))|(7([0|6-9]))|(8([1-9]))|(9([0-9])))([0-9]{7})$/,"zh-CN":/^((\+|00)86)?(1[3-9]|9[28])\d{9}$/,"zh-TW":/^(\+?886\-?|0)?9\d{8}$/,"dz-BT":/^(\+?975|0)?(17|16|77|02)\d{6}$/};Vr["en-CA"]=Vr["en-US"],Vr["fr-CA"]=Vr["en-CA"],Vr["fr-BE"]=Vr["nl-BE"],Vr["zh-HK"]=Vr["en-HK"],Vr["zh-MO"]=Vr["en-MO"],Vr["ga-IE"]=Vr["en-IE"],Vr["fr-CH"]=Vr["de-CH"],Vr["it-CH"]=Vr["fr-CH"];var jr=Object.keys(Vr);Br.locales=jr;var Hr="isMobilePhone";function kr(t,e,r){return"string"==typeof t&&Gr(t,e,r)}var Kr={};Object.defineProperty(Kr,"__esModule",{value:!0});var Wr=Kr.default=function(t){return(0,Yr.default)(t),zr.has(t.toUpperCase())};Kr.CountryCodes=void 0;var Yr=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);var zr=new Set(["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW"]);var Jr=zr;Kr.CountryCodes=Jr;var Xr="isISO31661Alpha2";function qr(t){return"string"==typeof t&&Wr(t)}var Qr={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return(0,r.default)(t),n.has(t.toUpperCase())};var r=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);var n=new Set(["AFG","ALA","ALB","DZA","ASM","AND","AGO","AIA","ATA","ATG","ARG","ARM","ABW","AUS","AUT","AZE","BHS","BHR","BGD","BRB","BLR","BEL","BLZ","BEN","BMU","BTN","BOL","BES","BIH","BWA","BVT","BRA","IOT","BRN","BGR","BFA","BDI","KHM","CMR","CAN","CPV","CYM","CAF","TCD","CHL","CHN","CXR","CCK","COL","COM","COG","COD","COK","CRI","CIV","HRV","CUB","CUW","CYP","CZE","DNK","DJI","DMA","DOM","ECU","EGY","SLV","GNQ","ERI","EST","ETH","FLK","FRO","FJI","FIN","FRA","GUF","PYF","ATF","GAB","GMB","GEO","DEU","GHA","GIB","GRC","GRL","GRD","GLP","GUM","GTM","GGY","GIN","GNB","GUY","HTI","HMD","VAT","HND","HKG","HUN","ISL","IND","IDN","IRN","IRQ","IRL","IMN","ISR","ITA","JAM","JPN","JEY","JOR","KAZ","KEN","KIR","PRK","KOR","KWT","KGZ","LAO","LVA","LBN","LSO","LBR","LBY","LIE","LTU","LUX","MAC","MKD","MDG","MWI","MYS","MDV","MLI","MLT","MHL","MTQ","MRT","MUS","MYT","MEX","FSM","MDA","MCO","MNG","MNE","MSR","MAR","MOZ","MMR","NAM","NRU","NPL","NLD","NCL","NZL","NIC","NER","NGA","NIU","NFK","MNP","NOR","OMN","PAK","PLW","PSE","PAN","PNG","PRY","PER","PHL","PCN","POL","PRT","PRI","QAT","REU","ROU","RUS","RWA","BLM","SHN","KNA","LCA","MAF","SPM","VCT","WSM","SMR","STP","SAU","SEN","SRB","SYC","SLE","SGP","SXM","SVK","SVN","SLB","SOM","ZAF","SGS","SSD","ESP","LKA","SDN","SUR","SJM","SWZ","SWE","CHE","SYR","TWN","TJK","TZA","THA","TLS","TGO","TKL","TON","TTO","TUN","TUR","TKM","TCA","TUV","UGA","UKR","ARE","GBR","USA","UMI","URY","UZB","VUT","VEN","VNM","VGB","VIR","WLF","ESH","YEM","ZMB","ZWE"]);t.exports=e.default,t.exports.default=e.default}(Qr,Qr.exports);var tn=M(Qr.exports),en="isISO31661Alpha3";function rn(t){return"string"==typeof t&&tn(t)}var nn={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return(0,r.default)(t),(0,n.default)(t)&&24===t.length};var r=d(O.exports),n=d(Qe.exports);function d(t){return t&&t.__esModule?t:{default:t}}t.exports=e.default,t.exports.default=e.default}(nn,nn.exports);var dn=M(nn.exports),an="isMongoId";function on(t){return"string"==typeof t&&dn(t)}var un={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return(0,r.default)(t),n.test(t)};var r=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);var n=/[^\x00-\x7F]/;t.exports=e.default,t.exports.default=e.default}(un,un.exports);var sn=M(un.exports),$n="isMultibyte";function ln(t){return"string"==typeof t&&sn(t)}var fn={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return(0,r.default)(t),n.test(t)};var r=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);var n=/[\uD800-\uDBFF][\uDC00-\uDFFF]/;t.exports=e.default,t.exports.default=e.default}(fn,fn.exports);var cn=M(fn.exports),pn="isSurrogatePair";function vn(t){return"string"==typeof t&&cn(t)}var yn={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){if((0,r.default)(t),!t||/[\s<>]/.test(t))return!1;if(0===t.indexOf("mailto:"))return!1;if((e=(0,a.default)(e,u)).validate_length&&t.length>=2083)return!1;if(!e.allow_fragments&&t.includes("#"))return!1;if(!e.allow_query_components&&(t.includes("?")||t.includes("&")))return!1;var o,$,f,c,p,v,y,g;if(y=t.split("#"),t=y.shift(),y=t.split("?"),t=y.shift(),(y=t.split("://")).length>1){if(o=y.shift().toLowerCase(),e.require_valid_protocol&&-1===e.protocols.indexOf(o))return!1}else{if(e.require_protocol)return!1;if("//"===t.substr(0,2)){if(!e.allow_protocol_relative_urls)return!1;y[0]=t.substr(2)}}if(""===(t=y.join("://")))return!1;if(y=t.split("/"),""===(t=y.shift())&&!e.require_host)return!0;if((y=t.split("@")).length>1){if(e.disallow_auth)return!1;if(""===y[0])return!1;if(($=y.shift()).indexOf(":")>=0&&$.split(":").length>2)return!1;var h=function(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(t)))return;var r=[],n=!0,d=!1,a=void 0;try{for(var o,i=t[Symbol.iterator]();!(n=(o=i.next()).done)&&(r.push(o.value),!e||r.length!==e);n=!0);}catch(t){d=!0,a=t}finally{try{n||null==i.return||i.return()}finally{if(d)throw a}}return r}(t,e)||function(t,e){if(!t)return;if("string"==typeof t)return i(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return i(t,e)}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}($.split(":"),2),m=h[0],A=h[1];if(""===m&&""===A)return!1}c=y.join("@"),v=null,g=null;var b=c.match(s);b?(f="",g=b[1],v=b[2]||null):(y=c.split(":"),f=y.shift(),y.length&&(v=y.join(":")));if(null!==v&&v.length>0){if(p=parseInt(v,10),!/^[0-9]+$/.test(v)||p<=0||p>65535)return!1}else if(e.require_port)return!1;if(e.host_whitelist)return l(f,e.host_whitelist);if(!((0,d.default)(f)||(0,n.default)(f,e)||g&&(0,d.default)(g,6)))return!1;if(f=f||g,e.host_blacklist&&l(f,e.host_blacklist))return!1;return!0};var r=o(O.exports),n=o(Ie.exports),d=o(Se.exports),a=o(N.exports);function o(t){return t&&t.__esModule?t:{default:t}}function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=d&&(void 0===a||i<=a)};var r=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}t.exports=e.default,t.exports.default=e.default}(Cn,Cn.exports);var Pn=M(Cn.exports),Tn="isLength";function Rn(t,e,r){return"string"==typeof t&&Pn(t,{min:e,max:r})}var Ln="maxLength";function wn(t,e){return"string"==typeof t&&Pn(t,{min:0,max:e})}var Fn="minLength";function Dn(t,e){return"string"==typeof t&&Pn(t,{min:e})}var Zn={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e,n){(0,r.default)(t),"[object RegExp]"!==Object.prototype.toString.call(e)&&(e=new RegExp(e,n));return e.test(t)};var r=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);t.exports=e.default,t.exports.default=e.default}(Zn,Zn.exports);var Bn=M(Zn.exports),Gn="matches";function Un(t,e,r){return"string"==typeof t&&Bn(t,e,r)}var Vn={version:4,country_calling_codes:{1:["US","AG","AI","AS","BB","BM","BS","CA","DM","DO","GD","GU","JM","KN","KY","LC","MP","MS","PR","SX","TC","TT","VC","VG","VI"],7:["RU","KZ"],20:["EG"],27:["ZA"],30:["GR"],31:["NL"],32:["BE"],33:["FR"],34:["ES"],36:["HU"],39:["IT","VA"],40:["RO"],41:["CH"],43:["AT"],44:["GB","GG","IM","JE"],45:["DK"],46:["SE"],47:["NO","SJ"],48:["PL"],49:["DE"],51:["PE"],52:["MX"],53:["CU"],54:["AR"],55:["BR"],56:["CL"],57:["CO"],58:["VE"],60:["MY"],61:["AU","CC","CX"],62:["ID"],63:["PH"],64:["NZ"],65:["SG"],66:["TH"],81:["JP"],82:["KR"],84:["VN"],86:["CN"],90:["TR"],91:["IN"],92:["PK"],93:["AF"],94:["LK"],95:["MM"],98:["IR"],211:["SS"],212:["MA","EH"],213:["DZ"],216:["TN"],218:["LY"],220:["GM"],221:["SN"],222:["MR"],223:["ML"],224:["GN"],225:["CI"],226:["BF"],227:["NE"],228:["TG"],229:["BJ"],230:["MU"],231:["LR"],232:["SL"],233:["GH"],234:["NG"],235:["TD"],236:["CF"],237:["CM"],238:["CV"],239:["ST"],240:["GQ"],241:["GA"],242:["CG"],243:["CD"],244:["AO"],245:["GW"],246:["IO"],247:["AC"],248:["SC"],249:["SD"],250:["RW"],251:["ET"],252:["SO"],253:["DJ"],254:["KE"],255:["TZ"],256:["UG"],257:["BI"],258:["MZ"],260:["ZM"],261:["MG"],262:["RE","YT"],263:["ZW"],264:["NA"],265:["MW"],266:["LS"],267:["BW"],268:["SZ"],269:["KM"],290:["SH","TA"],291:["ER"],297:["AW"],298:["FO"],299:["GL"],350:["GI"],351:["PT"],352:["LU"],353:["IE"],354:["IS"],355:["AL"],356:["MT"],357:["CY"],358:["FI","AX"],359:["BG"],370:["LT"],371:["LV"],372:["EE"],373:["MD"],374:["AM"],375:["BY"],376:["AD"],377:["MC"],378:["SM"],380:["UA"],381:["RS"],382:["ME"],383:["XK"],385:["HR"],386:["SI"],387:["BA"],389:["MK"],420:["CZ"],421:["SK"],423:["LI"],500:["FK"],501:["BZ"],502:["GT"],503:["SV"],504:["HN"],505:["NI"],506:["CR"],507:["PA"],508:["PM"],509:["HT"],590:["GP","BL","MF"],591:["BO"],592:["GY"],593:["EC"],594:["GF"],595:["PY"],596:["MQ"],597:["SR"],598:["UY"],599:["CW","BQ"],670:["TL"],672:["NF"],673:["BN"],674:["NR"],675:["PG"],676:["TO"],677:["SB"],678:["VU"],679:["FJ"],680:["PW"],681:["WF"],682:["CK"],683:["NU"],685:["WS"],686:["KI"],687:["NC"],688:["TV"],689:["PF"],690:["TK"],691:["FM"],692:["MH"],850:["KP"],852:["HK"],853:["MO"],855:["KH"],856:["LA"],880:["BD"],886:["TW"],960:["MV"],961:["LB"],962:["JO"],963:["SY"],964:["IQ"],965:["KW"],966:["SA"],967:["YE"],968:["OM"],970:["PS"],971:["AE"],972:["IL"],973:["BH"],974:["QA"],975:["BT"],976:["MN"],977:["NP"],992:["TJ"],993:["TM"],994:["AZ"],995:["GE"],996:["KG"],998:["UZ"]},countries:{AC:["247","00","(?:[01589]\\d|[46])\\d{4}",[5,6]],AD:["376","00","(?:1|6\\d)\\d{7}|[135-9]\\d{5}",[6,8,9],[["(\\d{3})(\\d{3})","$1 $2",["[135-9]"]],["(\\d{4})(\\d{4})","$1 $2",["1"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]]],AE:["971","00","(?:[4-7]\\d|9[0-689])\\d{7}|800\\d{2,9}|[2-4679]\\d{7}",[5,6,7,8,9,10,11,12],[["(\\d{3})(\\d{2,9})","$1 $2",["60|8"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[236]|[479][2-8]"],"0$1"],["(\\d{3})(\\d)(\\d{5})","$1 $2 $3",["[479]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"]],"0"],AF:["93","00","[2-7]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"]],"0"],AG:["1","011","(?:268|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([457]\\d{6})$","268$1",0,"268"],AI:["1","011","(?:264|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2457]\\d{6})$","264$1",0,"264"],AL:["355","00","(?:700\\d\\d|900)\\d{3}|8\\d{5,7}|(?:[2-5]|6\\d)\\d{7}",[6,7,8,9],[["(\\d{3})(\\d{3,4})","$1 $2",["80|9"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["4[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2358][2-5]|4"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["[23578]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["6"],"0$1"]],"0"],AM:["374","00","(?:[1-489]\\d|55|60|77)\\d{6}",[8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[89]0"],"0 $1"],["(\\d{3})(\\d{5})","$1 $2",["2|3[12]"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["1|47"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[3-9]"],"0$1"]],"0"],AO:["244","00","[29]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[29]"]]]],AR:["54","00","(?:11|[89]\\d\\d)\\d{8}|[2368]\\d{9}",[10,11],[["(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])","2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["1"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2-$3",["[23]"],"0$1",1],["(\\d)(\\d{4})(\\d{2})(\\d{4})","$2 15-$3-$4",["9(?:2[2-469]|3[3-578])","9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))","9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",0,"$1 $2 $3-$4"],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 15-$3-$4",["91"],"0$1",0,"$1 $2 $3-$4"],["(\\d{3})(\\d{3})(\\d{5})","$1-$2-$3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 15-$3-$4",["9"],"0$1",0,"$1 $2 $3-$4"]],"0",0,"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?","9$1"],AS:["1","011","(?:[58]\\d\\d|684|900)\\d{7}",[10],0,"1",0,"1|([267]\\d{6})$","684$1",0,"684"],AT:["43","00","1\\d{3,12}|2\\d{6,12}|43(?:(?:0\\d|5[02-9])\\d{3,9}|2\\d{4,5}|[3467]\\d{4}|8\\d{4,6}|9\\d{4,7})|5\\d{4,12}|8\\d{7,12}|9\\d{8,12}|(?:[367]\\d|4[0-24-9])\\d{4,11}",[4,5,6,7,8,9,10,11,12,13],[["(\\d)(\\d{3,12})","$1 $2",["1(?:11|[2-9])"],"0$1"],["(\\d{3})(\\d{2})","$1 $2",["517"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["5[079]"],"0$1"],["(\\d{3})(\\d{3,10})","$1 $2",["(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]"],"0$1"],["(\\d{4})(\\d{3,9})","$1 $2",["[2-467]|5[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["5"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,7})","$1 $2 $3",["5"],"0$1"]],"0"],AU:["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{7}(?:\\d(?:\\d{2})?)?|8[0-24-9]\\d{7})|[2-478]\\d{8}|1\\d{4,7}",[5,6,7,8,9,10,12],[["(\\d{2})(\\d{3,4})","$1 $2",["16"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,4})","$1 $2 $3",["16"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["14|4"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[2378]"],"(0$1)"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:30|[89])"]]],"0",0,"0|(183[12])",0,0,0,[["(?:(?:2(?:[0-26-9]\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\d|2[0-8]))\\d{3}|8(?:51(?:0(?:0[03-9]|[12479]\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\d|7[89]|9[0-4]))|(?:6[0-8]|[78]\\d)\\d{3}|9(?:[02-9]\\d{3}|1(?:(?:[0-58]\\d|6[0135-9])\\d|7(?:0[0-24-9]|[1-9]\\d)|9(?:[0-46-9]\\d|5[0-79])))))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,["163\\d{2,6}",[5,6,7,8,9]],["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],AW:["297","00","(?:[25-79]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[25-9]"]]]],AX:["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","2\\d{4,9}|35\\d{4,5}|(?:60\\d\\d|800)\\d{4,6}|7\\d{5,11}|(?:[14]\\d|3[0-46-9]|50)\\d{4,8}",[5,6,7,8,9,10,11,12],0,"0",0,0,0,0,"18",0,"00"],AZ:["994","00","365\\d{6}|(?:[124579]\\d|60|88)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[28]|2|365|46","1[28]|2|365[45]|46","1[28]|2|365(?:4|5[02])|46"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[13-9]"],"0$1"]],"0"],BA:["387","00","6\\d{8}|(?:[35689]\\d|49|70)\\d{6}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["6[1-3]|[7-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2-$3",["[3-5]|6[56]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["6"],"0$1"]],"0"],BB:["1","011","(?:246|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","246$1",0,"246"],BD:["880","00","[1-469]\\d{9}|8[0-79]\\d{7,8}|[2-79]\\d{8}|[2-9]\\d{7}|[3-9]\\d{6}|[57-9]\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{4,6})","$1-$2",["31[5-8]|[459]1"],"0$1"],["(\\d{3})(\\d{3,7})","$1-$2",["3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:28|4[14]|5)|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]"],"0$1"],["(\\d{4})(\\d{3,6})","$1-$2",["[13-9]|22"],"0$1"],["(\\d)(\\d{7,8})","$1-$2",["2"],"0$1"]],"0"],BE:["32","00","4\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:80|9)0"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[239]|4[23]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[15-8]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4"],"0$1"]],"0"],BF:["226","00","[025-7]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[025-7]"]]]],BG:["359","00","[2-7]\\d{6,7}|[89]\\d{6,8}|2\\d{5}",[6,7,8,9],[["(\\d)(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["43[1-6]|70[1-9]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:70|8)0"],"0$1"],["(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3",["43[1-7]|7"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[48]|9[08]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"]],"0"],BH:["973","00","[136-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[13679]|8[047]"]]]],BI:["257","00","(?:[267]\\d|31)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2367]"]]]],BJ:["229","00","[25689]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[25689]"]]]],BL:["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[["590(?:2[7-9]|5[12]|87)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],BM:["1","011","(?:441|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","441$1",0,"441"],BN:["673","00","[2-578]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-578]"]]]],BO:["591","00(?:1\\d)?","(?:[2-467]\\d\\d|8001)\\d{5}",[8,9],[["(\\d)(\\d{7})","$1 $2",["[23]|4[46]"]],["(\\d{8})","$1",["[67]"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["8"]]],"0",0,"0(1\\d)?"],BQ:["599","00","(?:[34]1|7\\d)\\d{5}",[7],0,0,0,0,0,0,"[347]"],BR:["55","00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)","(?:[1-46-9]\\d\\d|5(?:[0-46-9]\\d|5[0-24679]))\\d{8}|[1-9]\\d{9}|[3589]\\d{8}|[34]\\d{7}",[8,9,10,11],[["(\\d{4})(\\d{4})","$1-$2",["300|4(?:0[02]|37)","4(?:02|37)0|[34]00"]],["(\\d{3})(\\d{2,3})(\\d{4})","$1 $2 $3",["(?:[358]|90)0"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]"],"($1)"],["(\\d{2})(\\d{5})(\\d{4})","$1 $2-$3",["[16][1-9]|[2-57-9]"],"($1)"]],"0",0,"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\d{10,11}))?","$2"],BS:["1","011","(?:242|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([3-8]\\d{6})$","242$1",0,"242"],BT:["975","00","[17]\\d{7}|[2-8]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[2-68]|7[246]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[67]|7"]]]],BW:["267","00","(?:0800|(?:[37]|800)\\d)\\d{6}|(?:[2-6]\\d|90)\\d{5}",[7,8,10],[["(\\d{2})(\\d{5})","$1 $2",["90"]],["(\\d{3})(\\d{4})","$1 $2",["[24-6]|3[15-79]"]],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37]"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["8"]]]],BY:["375","810","(?:[12]\\d|33|44|902)\\d{7}|8(?:0[0-79]\\d{5,7}|[1-7]\\d{9})|8(?:1[0-489]|[5-79]\\d)\\d{7}|8[1-79]\\d{6,7}|8[0-79]\\d{5}|8\\d{5}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3})","$1 $2",["800"],"8 $1"],["(\\d{3})(\\d{2})(\\d{2,4})","$1 $2 $3",["800"],"8 $1"],["(\\d{4})(\\d{2})(\\d{3})","$1 $2-$3",["1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])","1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])"],"8 0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["1(?:[56]|7[467])|2[1-3]"],"8 0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-4]"],"8 0$1"],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["[89]"],"8 $1"]],"8",0,"0|80?",0,0,0,0,"8~10"],BZ:["501","00","(?:0800\\d|[2-8])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1-$2",["[2-8]"]],["(\\d)(\\d{3})(\\d{4})(\\d{3})","$1-$2-$3-$4",["0"]]]],CA:["1","011","(?:[2-8]\\d|90)\\d{8}",[10],0,"1",0,0,0,0,0,[["(?:2(?:04|[23]6|[48]9|50)|3(?:06|43|6[578])|4(?:03|1[68]|3[178]|50|74)|5(?:06|1[49]|48|79|8[17])|6(?:04|13|39|47|72)|7(?:0[59]|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\d{6}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|(?:5(?:00|2[12]|33|44|66|77|88)|622)[2-9]\\d{6}"],0,0,0,["600[2-9]\\d{6}"]]],CC:["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[["8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\d|70[23]|959))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,0,["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],CD:["243","00","[189]\\d{8}|[1-68]\\d{6}",[7,9],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[1-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]"],"0$1"]],"0"],CF:["236","00","(?:[27]\\d{3}|8776)\\d{4}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[278]"]]]],CG:["242","00","(?:0\\d\\d|222|800)\\d{6}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["8"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[02]"]]]],CH:["41","00","8\\d{11}|[2-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8[047]|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-79]|81"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["8"],"0$1"]],"0"],CI:["225","00","[02]\\d{9}",[10],[["(\\d{2})(\\d{2})(\\d)(\\d{5})","$1 $2 $3 $4",["2"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3 $4",["0"]]]],CK:["682","00","[2-578]\\d{4}",[5],[["(\\d{2})(\\d{3})","$1 $2",["[2-578]"]]]],CL:["56","(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0","12300\\d{6}|6\\d{9,10}|[2-9]\\d{8}",[9,10,11],[["(\\d{5})(\\d{4})","$1 $2",["219","2196"],"($1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["44"]],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2[1-3]"],"($1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["9[2-9]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])"],"($1)"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["60|8"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{3})(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3 $4",["60"]]]],CM:["237","00","[26]\\d{8}|88\\d{6,7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["88"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[26]|88"]]]],CN:["86","00|1(?:[12]\\d|79)\\d\\d00","1[127]\\d{8,9}|2\\d{9}(?:\\d{2})?|[12]\\d{6,7}|86\\d{6}|(?:1[03-689]\\d|6)\\d{7,9}|(?:[3-579]\\d|8[0-57-9])\\d{6,9}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5,6})","$1 $2",["(?:10|2[0-57-9])[19]","(?:10|2[0-57-9])(?:10|9[56])","(?:10|2[0-57-9])(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{5,6})","$1 $2",["3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]","(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))[19]","85[23](?:10|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:10|9[56])","85[23](?:100|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["(?:4|80)0"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["10|2(?:[02-57-9]|1[1-9])","10|2(?:[02-57-9]|1[1-9])","10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]"],"0$1",1],["(\\d{3})(\\d{7,8})","$1 $2",["9"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["80"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[3-578]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["1[3-9]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3 $4",["[12]"],"0$1",1]],"0",0,"0|(1(?:[12]\\d|79)\\d\\d)",0,0,0,0,"00"],CO:["57","00(?:4(?:[14]4|56)|[579])","(?:(?:1\\d|[36])\\d{3}|9101)\\d{6}|[124-8]\\d{7}",[8,10,11],[["(\\d)(\\d{7})","$1 $2",["[146][2-9]|[2578]"],"($1)"],["(\\d{3})(\\d{7})","$1 $2",["6"],"($1)"],["(\\d{3})(\\d{7})","$1 $2",["[39]"]],["(\\d)(\\d{3})(\\d{7})","$1-$2-$3",["1"],"0$1",0,"$1 $2 $3"]],"0",0,"0([3579]|4(?:[14]4|56))?"],CR:["506","00","(?:8\\d|90)\\d{8}|(?:[24-8]\\d{3}|3005)\\d{4}",[8,10],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[3-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[89]"]]],0,0,"(19(?:0[0-2468]|1[09]|20|66|77|99))"],CU:["53","119","[27]\\d{6,7}|[34]\\d{5,7}|(?:5|8\\d\\d)\\d{7}",[6,7,8,10],[["(\\d{2})(\\d{4,6})","$1 $2",["2[1-4]|[34]"],"(0$1)"],["(\\d)(\\d{6,7})","$1 $2",["7"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["5"],"0$1"],["(\\d{3})(\\d{7})","$1 $2",["8"],"0$1"]],"0"],CV:["238","0","(?:[2-59]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[2-589]"]]]],CW:["599","00","(?:[34]1|60|(?:7|9\\d)\\d)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[3467]"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["9[4-8]"]]],0,0,0,0,0,"[69]"],CX:["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[["8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\d|7(?:0[01]|1[0-2])|958))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,0,["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],CY:["357","00","(?:[279]\\d|[58]0)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[257-9]"]]]],CZ:["420","00","(?:[2-578]\\d|60)\\d{7}|9\\d{8,11}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]|9[015-7]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3 $4",["96"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]]],DE:["49","00","[2579]\\d{5,14}|49(?:[34]0|69|8\\d)\\d\\d?|49(?:37|49|60|7[089]|9\\d)\\d{1,3}|49(?:1\\d|2[02-9]|3[2-689]|7[1-7])\\d{1,8}|(?:1|[368]\\d|4[0-8])\\d{3,13}|49(?:[05]\\d|[23]1|[46][1-8])\\d{1,9}",[4,5,6,7,8,9,10,11,12,13,14,15],[["(\\d{2})(\\d{3,13})","$1 $2",["3[02]|40|[68]9"],"0$1"],["(\\d{3})(\\d{3,12})","$1 $2",["2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1","2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1"],"0$1"],["(\\d{4})(\\d{2,11})","$1 $2",["[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]","[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["138"],"0$1"],["(\\d{5})(\\d{2,10})","$1 $2",["3"],"0$1"],["(\\d{3})(\\d{5,11})","$1 $2",["181"],"0$1"],["(\\d{3})(\\d)(\\d{4,10})","$1 $2 $3",["1(?:3|80)|9"],"0$1"],["(\\d{3})(\\d{7,8})","$1 $2",["1[67]"],"0$1"],["(\\d{3})(\\d{7,12})","$1 $2",["8"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["185","1850","18500"],"0$1"],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["18[68]"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["15[0568]"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["15[1279]"],"0$1"],["(\\d{3})(\\d{8})","$1 $2",["18"],"0$1"],["(\\d{3})(\\d{2})(\\d{7,8})","$1 $2 $3",["1(?:6[023]|7)"],"0$1"],["(\\d{4})(\\d{2})(\\d{7})","$1 $2 $3",["15[279]"],"0$1"],["(\\d{3})(\\d{2})(\\d{8})","$1 $2 $3",["15"],"0$1"]],"0"],DJ:["253","00","(?:2\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[27]"]]]],DK:["45","00","[2-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-9]"]]]],DM:["1","011","(?:[58]\\d\\d|767|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","767$1",0,"767"],DO:["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,0,0,0,"8001|8[024]9"],DZ:["213","00","(?:[1-4]|[5-79]\\d|80)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["9"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-8]"],"0$1"]],"0"],EC:["593","00","1\\d{9,10}|(?:[2-7]|9\\d)\\d{7}",[8,9,10,11],[["(\\d)(\\d{3})(\\d{4})","$1 $2-$3",["[2-7]"],"(0$1)",0,"$1-$2-$3"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{3})(\\d{3,4})","$1 $2 $3",["1"]]],"0"],EE:["372","00","8\\d{9}|[4578]\\d{7}|(?:[3-8]\\d|90)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88","[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88"]],["(\\d{4})(\\d{3,4})","$1 $2",["[45]|8(?:00|[1-49])","[45]|8(?:00[1-9]|[1-49])"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]]],EG:["20","00","[189]\\d{8,9}|[24-6]\\d{8}|[135]\\d{7}",[8,9,10],[["(\\d)(\\d{7,8})","$1 $2",["[23]"],"0$1"],["(\\d{2})(\\d{6,7})","$1 $2",["1[35]|[4-6]|8[2468]|9[235-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[189]"],"0$1"]],"0"],EH:["212","00","[5-8]\\d{8}",[9],0,"0",0,0,0,0,"528[89]"],ER:["291","00","[178]\\d{6}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[178]"],"0$1"]],"0"],ES:["34","00","[5-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]00"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-9]"]]]],ET:["251","00","(?:11|[2-59]\\d)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-59]"],"0$1"]],"0"],FI:["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","[1-35689]\\d{4}|7\\d{10,11}|(?:[124-7]\\d|3[0-46-9])\\d{8}|[1-9]\\d{5,8}",[5,6,7,8,9,10,11,12],[["(\\d)(\\d{4,9})","$1 $2",["[2568][1-8]|3(?:0[1-9]|[1-9])|9"],"0$1"],["(\\d{3})(\\d{3,7})","$1 $2",["[12]00|[368]|70[07-9]"],"0$1"],["(\\d{2})(\\d{4,8})","$1 $2",["[1245]|7[135]"],"0$1"],["(\\d{2})(\\d{6,10})","$1 $2",["7"],"0$1"]],"0",0,0,0,0,"1[03-79]|[2-9]",0,"00"],FJ:["679","0(?:0|52)","45\\d{5}|(?:0800\\d|[235-9])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1 $2",["[235-9]|45"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]]],0,0,0,0,0,0,0,"00"],FK:["500","00","[2-7]\\d{4}",[5]],FM:["691","00","(?:[39]\\d\\d|820)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[389]"]]]],FO:["298","00","[2-9]\\d{5}",[6],[["(\\d{6})","$1",["[2-9]"]]],0,0,"(10(?:01|[12]0|88))"],FR:["33","00","[1-9]\\d{8}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0 $1"],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[1-79]"],"0$1"]],"0"],GA:["241","00","(?:[067]\\d|11)\\d{6}|[2-7]\\d{6}",[7,8],[["(\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-7]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["11|[67]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]]],0,0,"0(11\\d{6}|60\\d{6}|61\\d{6}|6[256]\\d{6}|7[47]\\d{6}|76\\d{6})","$1"],GB:["44","00","[1-357-9]\\d{9}|[18]\\d{8}|8\\d{6}",[7,9,10],[["(\\d{3})(\\d{4})","$1 $2",["800","8001","80011","800111","8001111"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["845","8454","84546","845464"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["800"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["1(?:38|5[23]|69|76|94)","1(?:(?:38|69)7|5(?:24|39)|768|946)","1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["1(?:[2-69][02-9]|[78])"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[25]|7(?:0|6[02-9])","[25]|7(?:0|6(?:[03-9]|2[356]))"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[1389]"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:1(?:3(?:[0-58]\\d\\d|73[0235])|4(?:[0-5]\\d\\d|69[7-9]|70[0359])|(?:5[0-26-9]|[78][0-49])\\d\\d|6(?:[0-4]\\d\\d|50[0-24-69]))|2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\d)\\d\\d|1(?:[0-7]\\d\\d|8(?:[02]\\d|1[0-278])))|(?:3(?:0\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\d\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\d{3})\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\d)|76\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\d|7[4-79])|295[5-7]|35[34]\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\d{3}",[9,10]],["7(?:457[0-57-9]|700[01]|911[028])\\d{5}|7(?:[1-3]\\d\\d|4(?:[0-46-9]\\d|5[0-689])|5(?:0[0-8]|[13-9]\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\d|8[02-9]|9[0-689])|8(?:[014-9]\\d|[23][0-8])|9(?:[024-9]\\d|1[02-9]|3[0-689]))\\d{6}",[10]],["80[08]\\d{7}|800\\d{6}|8001111"],["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[2-49]))\\d{7}|845464\\d",[7,10]],["70\\d{8}",[10]],0,["(?:3[0347]|55)\\d{8}",[10]],["76(?:464|652)\\d{5}|76(?:0[0-2]|2[356]|34|4[01347]|5[49]|6[0-369]|77|81|9[139])\\d{6}",[10]],["56\\d{8}",[10]]],0," x"],GD:["1","011","(?:473|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","473$1",0,"473"],GE:["995","00","(?:[3-57]\\d\\d|800)\\d{6}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["32"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[57]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[348]"],"0$1"]],"0"],GF:["594","00","(?:[56]94|80\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0"],GG:["44","00","(?:1481|[357-9]\\d{3})\\d{6}|8\\d{6}(?:\\d{2})?",[7,9,10],0,"0",0,"0|([25-9]\\d{5})$","1481$1",0,0,[["1481[25-9]\\d{5}",[10]],["7(?:(?:781|839)\\d|911[17])\\d{5}",[10]],["80[08]\\d{7}|800\\d{6}|8001111"],["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[0-3]))\\d{7}|845464\\d",[7,10]],["70\\d{8}",[10]],0,["(?:3[0347]|55)\\d{8}",[10]],["76(?:464|652)\\d{5}|76(?:0[0-2]|2[356]|34|4[01347]|5[49]|6[0-369]|77|81|9[139])\\d{6}",[10]],["56\\d{8}",[10]]]],GH:["233","00","(?:[235]\\d{3}|800)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[235]"],"0$1"]],"0"],GI:["350","00","(?:[25]\\d\\d|606)\\d{5}",[8],[["(\\d{3})(\\d{5})","$1 $2",["2"]]]],GL:["299","00","(?:19|[2-689]\\d|70)\\d{4}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["19|[2-9]"]]]],GM:["220","00","[2-9]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]]],GN:["224","00","722\\d{6}|(?:3|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["3"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[67]"]]]],GP:["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["590(?:0[1-68]|1[0-2]|2[0-68]|3[1289]|4[0-24-9]|5[3-579]|6[0189]|7[08]|8[0-689]|9\\d)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],GQ:["240","00","222\\d{6}|(?:3\\d|55|[89]0)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235]"]],["(\\d{3})(\\d{6})","$1 $2",["[89]"]]]],GR:["30","00","5005000\\d{3}|8\\d{9,11}|(?:[269]\\d|70)\\d{8}",[10,11,12],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["21|7"]],["(\\d{4})(\\d{6})","$1 $2",["2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2689]"]],["(\\d{3})(\\d{3,4})(\\d{5})","$1 $2 $3",["8"]]]],GT:["502","00","(?:1\\d{3}|[2-7])\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]]],GU:["1","011","(?:[58]\\d\\d|671|900)\\d{7}",[10],0,"1",0,"1|([3-9]\\d{6})$","671$1",0,"671"],GW:["245","00","[49]\\d{8}|4\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["40"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"]]]],GY:["592","001","(?:862\\d|9008)\\d{3}|(?:[2-46]\\d|77)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-46-9]"]]]],HK:["852","00(?:30|5[09]|[126-9]?)","8[0-46-9]\\d{6,7}|9\\d{4}(?:\\d(?:\\d(?:\\d{4})?)?)?|(?:[235-79]\\d|46)\\d{6}",[5,6,7,8,9,11],[["(\\d{3})(\\d{2,5})","$1 $2",["900","9003"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[1-4]|9(?:0[1-9]|[1-8])"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]],["(\\d{3})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]],0,0,0,0,0,0,0,"00"],HN:["504","00","8\\d{10}|[237-9]\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1-$2",["[237-9]"]]]],HR:["385","00","(?:[24-69]\\d|3[0-79])\\d{7}|80\\d{5,7}|[1-79]\\d{7}|6\\d{5,6}",[6,7,8,9],[["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["6[01]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{4})(\\d{3})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-5]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"]],"0"],HT:["509","00","[2-489]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[2-489]"]]]],HU:["36","00","[235-7]\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"06 $1"]],"06"],ID:["62","00[89]","(?:(?:00[1-9]|8\\d)\\d{4}|[1-36])\\d{6}|00\\d{10}|[1-9]\\d{8,10}|[2-9]\\d{7}",[7,8,9,10,11,12,13],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["15"]],["(\\d{2})(\\d{5,9})","$1 $2",["2[124]|[36]1"],"(0$1)"],["(\\d{3})(\\d{5,7})","$1 $2",["800"],"0$1"],["(\\d{3})(\\d{5,8})","$1 $2",["[2-79]"],"(0$1)"],["(\\d{3})(\\d{3,4})(\\d{3})","$1-$2-$3",["8[1-35-9]"],"0$1"],["(\\d{3})(\\d{6,8})","$1 $2",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["804"],"0$1"],["(\\d{3})(\\d)(\\d{3})(\\d{3})","$1 $2 $3 $4",["80"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1-$2-$3",["8"],"0$1"]],"0"],IE:["353","00","(?:1\\d|[2569])\\d{6,8}|4\\d{6,9}|7\\d{8}|8\\d{8,9}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["2[24-9]|47|58|6[237-9]|9[35-9]"],"(0$1)"],["(\\d{3})(\\d{5})","$1 $2",["[45]0"],"(0$1)"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["1"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2569]|4[1-69]|7[14]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["81"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[78]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["4"],"(0$1)"],["(\\d{2})(\\d)(\\d{3})(\\d{4})","$1 $2 $3 $4",["8"],"0$1"]],"0"],IL:["972","0(?:0|1[2-9])","1\\d{6}(?:\\d{3,5})?|[57]\\d{8}|[1-489]\\d{7}",[7,8,9,10,11,12],[["(\\d{4})(\\d{3})","$1-$2",["125"]],["(\\d{4})(\\d{2})(\\d{2})","$1-$2-$3",["121"]],["(\\d)(\\d{3})(\\d{4})","$1-$2-$3",["[2-489]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1-$2-$3",["12"]],["(\\d{4})(\\d{6})","$1-$2",["159"]],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3-$4",["1[7-9]"]],["(\\d{3})(\\d{1,2})(\\d{3})(\\d{4})","$1-$2 $3-$4",["15"]]],"0"],IM:["44","00","1624\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([25-8]\\d{5})$","1624$1",0,"74576|(?:16|7[56])24"],IN:["91","00","(?:000800|[2-9]\\d\\d)\\d{7}|1\\d{7,12}",[8,9,10,11,12,13],[["(\\d{8})","$1",["5(?:0|2[23]|3[03]|[67]1|88)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)"],0,1],["(\\d{4})(\\d{4,5})","$1 $2",["180","1800"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["140"],0,1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["11|2[02]|33|4[04]|79[1-7]|80[2-46]","11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])","11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]"],"0$1",1],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807","1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]","1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\d|7(?:1(?:[013-8]\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\d|5[0-367])|70[13-7]))[2-7]"],"0$1",1],["(\\d{5})(\\d{5})","$1 $2",["[6-9]"],"0$1",1],["(\\d{4})(\\d{2,4})(\\d{4})","$1 $2 $3",["1(?:6|8[06])","1(?:6|8[06]0)"],0,1],["(\\d{4})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["18"],0,1]],"0"],IO:["246","00","3\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["3"]]]],IQ:["964","00","(?:1|7\\d\\d)\\d{7}|[2-6]\\d{7,8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-6]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0"],IR:["98","00","[1-9]\\d{9}|(?:[1-8]\\d\\d|9)\\d{3,4}",[4,5,6,7,10],[["(\\d{4,5})","$1",["96"],"0$1"],["(\\d{2})(\\d{4,5})","$1 $2",["(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[1-8]"],"0$1"]],"0"],IS:["354","00|1(?:0(?:01|[12]0)|100)","(?:38\\d|[4-9])\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["[4-9]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["3"]]],0,0,0,0,0,0,0,"00"],IT:["39","00","0\\d{5,10}|1\\d{8,10}|3(?:[0-8]\\d{7,10}|9\\d{7,8})|55\\d{8}|8\\d{5}(?:\\d{2,4})?",[6,7,8,9,10,11],[["(\\d{2})(\\d{4,6})","$1 $2",["0[26]"]],["(\\d{3})(\\d{3,6})","$1 $2",["0[13-57-9][0159]|8(?:03|4[17]|9[2-5])","0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))"]],["(\\d{4})(\\d{2,6})","$1 $2",["0(?:[13-579][2-46-8]|8[236-8])"]],["(\\d{4})(\\d{4})","$1 $2",["894"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[26]|5"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["1(?:44|[679])|[38]"]],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[13-57-9][0159]|14"]],["(\\d{2})(\\d{4})(\\d{5})","$1 $2 $3",["0[26]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["3"]]],0,0,0,0,0,0,[["0669[0-79]\\d{1,6}|0(?:1(?:[0159]\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\d\\d|3(?:[0159]\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\d|6[0-8])|7(?:[0159]\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\d{2,7}"],["3[1-9]\\d{8}|3[2-9]\\d{7}",[9,10]],["80(?:0\\d{3}|3)\\d{3}",[6,9]],["(?:0878\\d{3}|89(?:2\\d|3[04]|4(?:[0-4]|[5-9]\\d\\d)|5[0-4]))\\d\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\d{6}",[6,8,9,10]],["1(?:78\\d|99)\\d{6}",[9,10]],0,0,0,["55\\d{8}",[10]],["84(?:[08]\\d{3}|[17])\\d{3}",[6,9]]]],JE:["44","00","1534\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([0-24-8]\\d{5})$","1534$1",0,0,[["1534[0-24-8]\\d{5}"],["7(?:(?:(?:50|82)9|937)\\d|7(?:00[378]|97[7-9]))\\d{5}"],["80(?:07(?:35|81)|8901)\\d{4}"],["(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\d{4}"],["701511\\d{4}"],0,["(?:3(?:0(?:07(?:35|81)|8901)|3\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\d{4})\\d{4}"],["76(?:464|652)\\d{5}|76(?:0[0-2]|2[356]|34|4[01347]|5[49]|6[0-369]|77|81|9[139])\\d{6}"],["56\\d{8}"]]],JM:["1","011","(?:[58]\\d\\d|658|900)\\d{7}",[10],0,"1",0,0,0,0,"658|876"],JO:["962","00","(?:(?:[2689]|7\\d)\\d|32|53)\\d{6}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2356]|87"],"(0$1)"],["(\\d{3})(\\d{5,6})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["70"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0"],JP:["81","010","00[1-9]\\d{6,14}|[257-9]\\d{9}|(?:00|[1-9]\\d\\d)\\d{6}",[8,9,10,11,12,13,14,15,16,17],[["(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3",["(?:12|57|99)0"],"0$1"],["(\\d{4})(\\d)(\\d{4})","$1-$2-$3",["1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:49|80|9[16])","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2-$3",["[36]|4(?:2[09]|7[01])","[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]"],"0$1"],["(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3",["[14]|[289][2-9]|5[3-9]|7[2-4679]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["800"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[257-9]"],"0$1"]],"0"],KE:["254","000","(?:[17]\\d\\d|900)\\d{6}|(?:2|80)0\\d{6,7}|[4-6]\\d{6,8}",[7,8,9,10],[["(\\d{2})(\\d{5,7})","$1 $2",["[24-6]"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[17]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0"],KG:["996","00","8\\d{9}|(?:[235-8]\\d|99)\\d{7}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["3(?:1[346]|[24-79])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235-79]|88"],"0$1"],["(\\d{3})(\\d{3})(\\d)(\\d{2,3})","$1 $2 $3 $4",["8"],"0$1"]],"0"],KH:["855","00[14-9]","1\\d{9}|[1-9]\\d{7,8}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0"],KI:["686","00","(?:[37]\\d|6[0-79])\\d{6}|(?:[2-48]\\d|50)\\d{3}",[5,8],0,"0"],KM:["269","00","[3478]\\d{6}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[3478]"]]]],KN:["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","869$1",0,"869"],KP:["850","00|99","85\\d{6}|(?:19\\d|[2-7])\\d{7}",[8,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"]],"0"],KR:["82","00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))","00[1-9]\\d{8,11}|(?:[12]|5\\d{3})\\d{7}|[13-6]\\d{9}|(?:[1-6]\\d|80)\\d{7}|[3-6]\\d{4,5}|(?:00|7)0\\d{8}",[5,6,8,9,10,11,12,13,14],[["(\\d{2})(\\d{3,4})","$1-$2",["(?:3[1-3]|[46][1-4]|5[1-5])1"],"0$1"],["(\\d{4})(\\d{4})","$1-$2",["1"]],["(\\d)(\\d{3,4})(\\d{4})","$1-$2-$3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60|8"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1-$2-$3",["[1346]|5[1-5]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{2})(\\d{5})(\\d{4})","$1-$2-$3",["5"],"0$1"]],"0",0,"0(8(?:[1-46-8]|5\\d\\d))?"],KW:["965","00","18\\d{5}|(?:[2569]\\d|41)\\d{6}",[7,8],[["(\\d{4})(\\d{3,4})","$1 $2",["[169]|2(?:[235]|4[1-35-9])|52"]],["(\\d{3})(\\d{5})","$1 $2",["[245]"]]]],KY:["1","011","(?:345|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","345$1",0,"345"],KZ:["7","810","(?:33622|8\\d{8})\\d{5}|[78]\\d{9}",[10,14],0,"8",0,0,0,0,"33|7",0,"8~10"],LA:["856","00","[23]\\d{9}|3\\d{8}|(?:[235-8]\\d|41)\\d{6}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2[13]|3[14]|[4-8]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["30[013-9]"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[23]"],"0$1"]],"0"],LB:["961","00","[27-9]\\d{7}|[13-9]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27-9]"]]],"0"],LC:["1","011","(?:[58]\\d\\d|758|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","758$1",0,"758"],LI:["423","00","90\\d{5}|(?:[2378]|6\\d\\d)\\d{6}",[7,9],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[237-9]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["69"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]],"0",0,"0|(1001)"],LK:["94","00","[1-9]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[1-689]"],"0$1"]],"0"],LR:["231","00","(?:2|33|5\\d|77|88)\\d{7}|[4-6]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[4-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3578]"],"0$1"]],"0"],LS:["266","00","(?:[256]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2568]"]]]],LT:["370","00","(?:[3469]\\d|52|[78]0)\\d{6}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["52[0-7]"],"(8-$1)",1],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[7-9]"],"8 $1",1],["(\\d{2})(\\d{6})","$1 $2",["37|4(?:[15]|6[1-8])"],"(8-$1)",1],["(\\d{3})(\\d{5})","$1 $2",["[3-6]"],"(8-$1)",1]],"8",0,"[08]"],LU:["352","00","35[013-9]\\d{4,8}|6\\d{8}|35\\d{2,4}|(?:[2457-9]\\d|3[0-46-9])\\d{2,9}",[4,5,6,7,8,9,10,11],[["(\\d{2})(\\d{3})","$1 $2",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["20[2-689]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4",["2(?:[0367]|4[3-8])"]],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["80[01]|90[015]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["20"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4 $5",["2(?:[0367]|4[3-8])"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,5})","$1 $2 $3 $4",["[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]"]]],0,0,"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\d)"],LV:["371","00","(?:[268]\\d|90)\\d{6}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[269]|8[01]"]]]],LY:["218","00","[2-9]\\d{8}",[9],[["(\\d{2})(\\d{7})","$1-$2",["[2-9]"],"0$1"]],"0"],MA:["212","00","[5-8]\\d{8}",[9],[["(\\d{5})(\\d{4})","$1-$2",["5(?:29|38)","5(?:29|38)[89]","5(?:29|38)[89]0"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5[45]"],"0$1"],["(\\d{4})(\\d{5})","$1-$2",["5(?:2[2-489]|3[5-9]|9)|892","5(?:2(?:[2-49]|8[235-9])|3[5-9]|9)|892"],"0$1"],["(\\d{2})(\\d{7})","$1-$2",["8"],"0$1"],["(\\d{3})(\\d{6})","$1-$2",["[5-7]"],"0$1"]],"0",0,0,0,0,0,[["5(?:29(?:[189][05]|2[29]|3[01])|38[89][05])\\d{4}|5(?:2(?:[0-25-7]\\d|3[1-578]|4[02-46-8]|8[0235-7]|90)|3(?:[0-47]\\d|5[02-9]|6[02-8]|80|9[3-9])|(?:4[067]|5[03])\\d)\\d{5}"],["(?:6(?:[0-79]\\d|8[0-247-9])|7(?:0\\d|1[0-5]|6[1267]|7[0-57]))\\d{6}"],["80\\d{7}"],["89\\d{7}"],0,0,0,0,["592(?:4[0-2]|93)\\d{4}"]]],MC:["377","00","(?:[3489]|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["4"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[389]"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["6"],"0$1"]],"0"],MD:["373","00","(?:[235-7]\\d|[89]0)\\d{6}",[8],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["22|3"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[25-7]"],"0$1"]],"0"],ME:["382","00","(?:20|[3-79]\\d)\\d{6}|80\\d{6,7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"0$1"]],"0"],MF:["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[["590(?:0[079]|[14]3|[27][79]|30|5[0-268]|87)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],MG:["261","00","[23]\\d{8}",[9],[["(\\d{2})(\\d{2})(\\d{3})(\\d{2})","$1 $2 $3 $4",["[23]"],"0$1"]],"0",0,"0|([24-9]\\d{6})$","20$1"],MH:["692","011","329\\d{4}|(?:[256]\\d|45)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1-$2",["[2-6]"]]],"1"],MK:["389","00","[2-578]\\d{7}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[347]"],"0$1"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["[58]"],"0$1"]],"0"],ML:["223","00","[24-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24-9]"]]]],MM:["95","00","1\\d{5,7}|95\\d{6}|(?:[4-7]|9[0-46-9])\\d{6,8}|(?:2|8\\d)\\d{5,8}",[6,7,8,9,10],[["(\\d)(\\d{2})(\\d{3})","$1 $2 $3",["16|2"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[4-7]|8[1-35]"],"0$1"],["(\\d)(\\d{3})(\\d{4,6})","$1 $2 $3",["9(?:2[0-4]|[35-9]|4[137-9])"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["92"],"0$1"],["(\\d)(\\d{5})(\\d{4})","$1 $2 $3",["9"],"0$1"]],"0"],MN:["976","001","[12]\\d{7,9}|[57-9]\\d{7}",[8,9,10],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[12]1"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[57-9]"]],["(\\d{3})(\\d{5,6})","$1 $2",["[12]2[1-3]"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["[12](?:27|3[2-8]|4[2-68]|5[1-4689])","[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["[12]"],"0$1"]],"0"],MO:["853","00","0800\\d{3}|(?:28|[68]\\d)\\d{6}",[7,8],[["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{4})(\\d{4})","$1 $2",["[268]"]]]],MP:["1","011","[58]\\d{9}|(?:67|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","670$1",0,"670"],MQ:["596","00","(?:69|80)\\d{7}|(?:59|97)6\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0"],MR:["222","00","(?:[2-4]\\d\\d|800)\\d{5}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-48]"]]]],MS:["1","011","(?:[58]\\d\\d|664|900)\\d{7}",[10],0,"1",0,"1|([34]\\d{6})$","664$1",0,"664"],MT:["356","00","3550\\d{4}|(?:[2579]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2357-9]"]]]],MU:["230","0(?:0|[24-7]0|3[03])","(?:5|8\\d\\d)\\d{7}|[2-468]\\d{6}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[2-46]|8[013]"]],["(\\d{4})(\\d{4})","$1 $2",["5"]],["(\\d{5})(\\d{5})","$1 $2",["8"]]],0,0,0,0,0,0,0,"020"],MV:["960","0(?:0|19)","(?:800|9[0-57-9]\\d)\\d{7}|[34679]\\d{6}",[7,10],[["(\\d{3})(\\d{4})","$1-$2",["[3467]|9[13-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"]]],0,0,0,0,0,0,0,"00"],MW:["265","00","(?:[19]\\d|[23]1|77|88)\\d{7}|1\\d{6}",[7,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["1[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[137-9]"],"0$1"]],"0"],MX:["52","0[09]","1(?:(?:44|99)[1-9]|65[0-689])\\d{7}|(?:1(?:[017]\\d|[235][1-9]|4[0-35-9]|6[0-46-9]|8[1-79]|9[1-8])|[2-9]\\d)\\d{8}",[10,11],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["33|5[56]|81"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2-9]"],0,1],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 $3 $4",["1(?:33|5[56]|81)"],0,1],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 $3 $4",["1"],0,1]],"01",0,"0(?:[12]|4[45])|1",0,0,0,0,"00"],MY:["60","00","1\\d{8,9}|(?:3\\d|[4-9])\\d{7}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1-$2 $3",["[4-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1-$2 $3",["1(?:[02469]|[378][1-9])|8"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2 $3",["3"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3-$4",["1[36-8]"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2 $3",["15"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2 $3",["1"],"0$1"]],"0"],MZ:["258","00","(?:2|8\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2|8[2-79]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]]],NA:["264","00","[68]\\d{7,8}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["87"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0"],NC:["687","00","[2-57-9]\\d{5}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1.$2.$3",["[2-57-9]"]]]],NE:["227","00","[027-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["08"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[089]|2[013]|7[04]"]]]],NF:["672","00","[13]\\d{5}",[6],[["(\\d{2})(\\d{4})","$1 $2",["1[0-3]"]],["(\\d)(\\d{5})","$1 $2",["[13]"]]],0,0,"([0-258]\\d{4})$","3$1"],NG:["234","009","(?:[124-7]|9\\d{3})\\d{6}|[1-9]\\d{7}|[78]\\d{9,13}",[7,8,10,11,12,13,14],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["78"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]|9(?:0[3-9]|[1-9])"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[3-7]|8[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["[78]"],"0$1"],["(\\d{3})(\\d{5})(\\d{5,6})","$1 $2 $3",["[78]"],"0$1"]],"0"],NI:["505","00","(?:1800|[25-8]\\d{3})\\d{4}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[125-8]"]]]],NL:["31","00","(?:[124-7]\\d\\d|3(?:[02-9]\\d|1[0-8]))\\d{6}|[89]\\d{6,9}|1\\d{4,5}",[5,6,7,8,9,10],[["(\\d{3})(\\d{4,7})","$1 $2",["[89]0"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["66"],"0$1"],["(\\d)(\\d{8})","$1 $2",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["1[16-8]|2[259]|3[124]|4[17-9]|5[124679]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-57-9]"],"0$1"]],"0"],NO:["47","00","(?:0|[2-9]\\d{3})\\d{4}",[5,8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[489]|59"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[235-7]"]]],0,0,0,0,0,"[02-689]|7[0-8]"],NP:["977","00","(?:1\\d|9)\\d{9}|[1-9]\\d{7}",[8,10,11],[["(\\d)(\\d{7})","$1-$2",["1[2-6]"],"0$1"],["(\\d{2})(\\d{6})","$1-$2",["1[01]|[2-8]|9(?:[1-579]|6[2-6])"],"0$1"],["(\\d{3})(\\d{7})","$1-$2",["9"]]],"0"],NR:["674","00","(?:444|(?:55|8\\d)\\d|666)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[4-68]"]]]],NU:["683","00","(?:[47]|888\\d)\\d{3}",[4,7],[["(\\d{3})(\\d{4})","$1 $2",["8"]]]],NZ:["64","0(?:0|161)","[29]\\d{7,9}|50\\d{5}(?:\\d{2,3})?|6[0-35-9]\\d{6}|7\\d{7,8}|8\\d{4,9}|(?:11\\d|[34])\\d{7}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,8})","$1 $2",["8[1-579]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["50[036-8]|[89]0","50(?:[0367]|88)|[89]0"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1-$2 $3",["24|[346]|7[2-57-9]|9[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:10|74)|[59]|80"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1|2[028]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,5})","$1 $2 $3",["2(?:[169]|7[0-35-9])|7|86"],"0$1"]],"0",0,0,0,0,0,0,"00"],OM:["968","00","(?:1505|[279]\\d{3}|500)\\d{4}|800\\d{5,6}",[7,8,9],[["(\\d{3})(\\d{4,6})","$1 $2",["[58]"]],["(\\d{2})(\\d{6})","$1 $2",["2"]],["(\\d{4})(\\d{4})","$1 $2",["[179]"]]]],PA:["507","00","(?:00800|8\\d{3})\\d{6}|[68]\\d{7}|[1-57-9]\\d{6}",[7,8,10,11],[["(\\d{3})(\\d{4})","$1-$2",["[1-57-9]"]],["(\\d{4})(\\d{4})","$1-$2",["[68]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]]],PE:["51","19(?:1[124]|77|90)00","(?:[14-8]|9\\d)\\d{7}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["80"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["1"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[4-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"]]],"0",0,0,0,0,0,0,0," Anexo "],PF:["689","00","4\\d{5}(?:\\d{2})?|8\\d{7,8}",[6,8,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["44"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4|8[7-9]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]]],PG:["675","00|140[1-3]","(?:180|[78]\\d{3})\\d{4}|(?:[2-589]\\d|64)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["18|[2-69]|85"]],["(\\d{4})(\\d{4})","$1 $2",["[78]"]]],0,0,0,0,0,0,0,"00"],PH:["63","00","(?:[2-7]|9\\d)\\d{8}|2\\d{5}|(?:1800|8)\\d{7,9}",[6,8,9,10,11,12,13],[["(\\d)(\\d{5})","$1 $2",["2"],"(0$1)"],["(\\d{4})(\\d{4,6})","$1 $2",["3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2","3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))"],"(0$1)"],["(\\d{5})(\\d{4})","$1 $2",["346|4(?:27|9[35])|883","3469|4(?:279|9(?:30|56))|8834"],"(0$1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3-7]|8[2-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{4})(\\d{1,2})(\\d{3})(\\d{4})","$1 $2 $3 $4",["1"]]],"0"],PK:["92","00","122\\d{6}|[24-8]\\d{10,11}|9(?:[013-9]\\d{8,10}|2(?:[01]\\d\\d|2(?:[06-8]\\d|1[01]))\\d{7})|(?:[2-8]\\d{3}|92(?:[0-7]\\d|8[1-9]))\\d{6}|[24-9]\\d{8}|[89]\\d{7}",[8,9,10,11,12],[["(\\d{3})(\\d{3})(\\d{2,7})","$1 $2 $3",["[89]0"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["1"]],["(\\d{3})(\\d{6,7})","$1 $2",["2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])","9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]"],"(0$1)"],["(\\d{2})(\\d{7,8})","$1 $2",["(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]"],"(0$1)"],["(\\d{5})(\\d{5})","$1 $2",["58"],"(0$1)"],["(\\d{3})(\\d{7})","$1 $2",["3"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[24-9]"],"(0$1)"]],"0"],PL:["48","00","6\\d{5}(?:\\d{2})?|8\\d{9}|[1-9]\\d{6}(?:\\d{2})?",[6,7,8,9,10],[["(\\d{5})","$1",["19"]],["(\\d{3})(\\d{3})","$1 $2",["11|64"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1","(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19"]],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["64"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[2-8]|[2-7]|8[1-79]|9[145]"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["8"]]]],PM:["508","00","(?:[45]|80\\d\\d)\\d{5}",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[45]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0"],PR:["1","011","(?:[589]\\d\\d|787)\\d{7}",[10],0,"1",0,0,0,0,"787|939"],PS:["970","00","[2489]2\\d{6}|(?:1\\d|5)\\d{8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2489]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["5"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0"],PT:["351","00","1693\\d{5}|(?:[26-9]\\d|30)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["2[12]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["16|[236-9]"]]]],PW:["680","01[12]","(?:[24-8]\\d\\d|345|900)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]]],PY:["595","00","59\\d{4,6}|9\\d{5,10}|(?:[2-46-8]\\d|5[0-8])\\d{4,7}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3,6})","$1 $2",["[2-9]0"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]"],"(0$1)"],["(\\d{3})(\\d{4,5})","$1 $2",["2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["87"]],["(\\d{3})(\\d{6})","$1 $2",["9(?:[5-79]|8[1-6])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["9"]]],"0"],QA:["974","00","[2-7]\\d{7}|800\\d{4}(?:\\d{2})?|2\\d{6}",[7,8,9],[["(\\d{3})(\\d{4})","$1 $2",["2[126]|8"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]]]],RE:["262","00","9769\\d{5}|(?:26|[68]\\d)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2689]"],"0$1"]],"0",0,0,0,0,"26[23]|69|[89]"],RO:["40","00","(?:[2378]\\d|90)\\d{7}|[23]\\d{5}",[6,9],[["(\\d{3})(\\d{3})","$1 $2",["2[3-6]","2[3-6]\\d9"],"0$1"],["(\\d{2})(\\d{4})","$1 $2",["219|31"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[23]1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[237-9]"],"0$1"]],"0",0,0,0,0,0,0,0," int "],RS:["381","00","38[02-9]\\d{6,9}|6\\d{7,9}|90\\d{4,8}|38\\d{5,6}|(?:7\\d\\d|800)\\d{3,9}|(?:[12]\\d|3[0-79])\\d{5,10}",[6,7,8,9,10,11,12],[["(\\d{3})(\\d{3,9})","$1 $2",["(?:2[389]|39)0|[7-9]"],"0$1"],["(\\d{2})(\\d{5,10})","$1 $2",["[1-36]"],"0$1"]],"0"],RU:["7","810","8\\d{13}|[347-9]\\d{9}",[10,14],[["(\\d{4})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-8]|2[1-9])","7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))","7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2"],"8 ($1)",1],["(\\d{5})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-68]|2[1-9])","7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))","7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[349]|8(?:[02-7]|1[1-8])"],"8 ($1)",1],["(\\d{4})(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3 $4",["8"],"8 ($1)"]],"8",0,0,0,0,"3[04-689]|[489]",0,"8~10"],RW:["250","00","(?:06|[27]\\d\\d|[89]00)\\d{6}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"]]],"0"],SA:["966","00","92\\d{7}|(?:[15]|8\\d)\\d{8}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["9"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["81"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]],"0"],SB:["677","0[01]","(?:[1-6]|[7-9]\\d\\d)\\d{4}",[5,7],[["(\\d{2})(\\d{5})","$1 $2",["7|8[4-9]|9(?:[1-8]|9[0-8])"]]]],SC:["248","010|0[0-2]","8000\\d{3}|(?:[249]\\d|64)\\d{5}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[246]|9[57]"]]],0,0,0,0,0,0,0,"00"],SD:["249","00","[19]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[19]"],"0$1"]],"0"],SE:["46","00","(?:[26]\\d\\d|9)\\d{9}|[1-9]\\d{8}|[1-689]\\d{7}|[1-4689]\\d{6}|2\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{2,3})(\\d{2})","$1-$2 $3",["20"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{4})","$1-$2",["9(?:00|39|44)"],"0$1",0,"$1 $2"],["(\\d{2})(\\d{3})(\\d{2})","$1-$2 $3",["[12][136]|3[356]|4[0246]|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3"],["(\\d)(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2,3})(\\d{2})","$1-$2 $3",["1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{2,3})(\\d{3})","$1-$2 $3",["9(?:00|39|44)"],"0$1",0,"$1 $2 $3"],["(\\d{2})(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3 $4"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["10|7"],"0$1",0,"$1 $2 $3 $4"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1-$2 $3 $4",["[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{3})","$1-$2 $3 $4",["9"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4 $5",["[26]"],"0$1",0,"$1 $2 $3 $4 $5"]],"0"],SG:["65","0[0-3]\\d","(?:(?:1\\d|8)\\d\\d|7000)\\d{7}|[3689]\\d{7}",[8,10,11],[["(\\d{4})(\\d{4})","$1 $2",["[369]|8(?:0[1-4]|[1-9])"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]],["(\\d{4})(\\d{4})(\\d{3})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]]],SH:["290","00","(?:[256]\\d|8)\\d{3}",[4,5],0,0,0,0,0,0,"[256]"],SI:["386","00|10(?:22|66|88|99)","[1-7]\\d{7}|8\\d{4,7}|90\\d{4,6}",[5,6,7,8],[["(\\d{2})(\\d{3,6})","$1 $2",["8[09]|9"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["59|8"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37][01]|4[0139]|51|6"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-57]"],"(0$1)"]],"0",0,0,0,0,0,0,"00"],SJ:["47","00","0\\d{4}|(?:[489]\\d|[57]9)\\d{6}",[5,8],0,0,0,0,0,0,"79"],SK:["421","00","[2-689]\\d{8}|[2-59]\\d{6}|[2-5]\\d{5}",[6,7,9],[["(\\d)(\\d{2})(\\d{3,4})","$1 $2 $3",["21"],"0$1"],["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["[3-5][1-8]1","[3-5][1-8]1[67]"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1/$2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[689]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1/$2 $3 $4",["[3-5]"],"0$1"]],"0"],SL:["232","00","(?:[237-9]\\d|66)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[236-9]"],"(0$1)"]],"0"],SM:["378","00","(?:0549|[5-7]\\d)\\d{6}",[8,10],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-7]"]],["(\\d{4})(\\d{6})","$1 $2",["0"]]],0,0,"([89]\\d{5})$","0549$1"],SN:["221","00","(?:[378]\\d|93)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[379]"]]]],SO:["252","00","[346-9]\\d{8}|[12679]\\d{7}|[1-5]\\d{6}|[1348]\\d{5}",[6,7,8,9],[["(\\d{2})(\\d{4})","$1 $2",["8[125]"]],["(\\d{6})","$1",["[134]"]],["(\\d)(\\d{6})","$1 $2",["[15]|2[0-79]|3[0-46-8]|4[0-7]"]],["(\\d)(\\d{7})","$1 $2",["24|[67]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3478]|64|90"]],["(\\d{2})(\\d{5,7})","$1 $2",["1|28|6(?:0[5-7]|[1-35-9])|9[2-9]"]]],"0"],SR:["597","00","(?:[2-5]|68|[78]\\d)\\d{5}",[6,7],[["(\\d{2})(\\d{2})(\\d{2})","$1-$2-$3",["56"]],["(\\d{3})(\\d{3})","$1-$2",["[2-5]"]],["(\\d{3})(\\d{4})","$1-$2",["[6-8]"]]]],SS:["211","00","[19]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[19]"],"0$1"]],"0"],ST:["239","00","(?:22|9\\d)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[29]"]]]],SV:["503","00","[267]\\d{7}|[89]00\\d{4}(?:\\d{4})?",[7,8,11],[["(\\d{3})(\\d{4})","$1 $2",["[89]"]],["(\\d{4})(\\d{4})","$1 $2",["[267]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[89]"]]]],SX:["1","011","7215\\d{6}|(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|(5\\d{6})$","721$1",0,"721"],SY:["963","00","[1-39]\\d{8}|[1-5]\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-5]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1",1]],"0"],SZ:["268","00","0800\\d{4}|(?:[237]\\d|900)\\d{6}",[8,9],[["(\\d{4})(\\d{4})","$1 $2",["[0237]"]],["(\\d{5})(\\d{4})","$1 $2",["9"]]]],TA:["290","00","8\\d{3}",[4],0,0,0,0,0,0,"8"],TC:["1","011","(?:[58]\\d\\d|649|900)\\d{7}",[10],0,"1",0,"1|([2-479]\\d{6})$","649$1",0,"649"],TD:["235","00|16","(?:22|[69]\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2679]"]]],0,0,0,0,0,0,0,"00"],TG:["228","00","[279]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[279]"]]]],TH:["66","00[1-9]","(?:001800|[2-57]|[689]\\d)\\d{7}|1\\d{7,9}",[8,9,10,13],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[13-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0"],TJ:["992","810","(?:00|[1-57-9]\\d)\\d{7}",[9],[["(\\d{6})(\\d)(\\d{2})","$1 $2 $3",["331","3317"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[34]7|91[78]"]],["(\\d{4})(\\d)(\\d{4})","$1 $2 $3",["3[1-5]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[0-57-9]"]]],0,0,0,0,0,0,0,"8~10"],TK:["690","00","[2-47]\\d{3,6}",[4,5,6,7]],TL:["670","00","7\\d{7}|(?:[2-47]\\d|[89]0)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[2-489]|70"]],["(\\d{4})(\\d{4})","$1 $2",["7"]]]],TM:["993","810","[1-6]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["12"],"(8 $1)"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-5]"],"(8 $1)"],["(\\d{2})(\\d{6})","$1 $2",["6"],"8 $1"]],"8",0,0,0,0,0,0,"8~10"],TN:["216","00","[2-57-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-57-9]"]]]],TO:["676","00","(?:0800|(?:[5-8]\\d\\d|999)\\d)\\d{3}|[2-8]\\d{4}",[5,7],[["(\\d{2})(\\d{3})","$1-$2",["[2-4]|50|6[09]|7[0-24-69]|8[05]"]],["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{3})(\\d{4})","$1 $2",["[5-9]"]]]],TR:["90","00","4\\d{6}|8\\d{11,12}|(?:[2-58]\\d\\d|900)\\d{7}",[7,10,12,13],[["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["512|8[01589]|90"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5(?:[0-59]|61)","5(?:[0-59]|616)","5(?:[0-59]|6161)"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24][1-8]|3[1-9]"],"(0$1)",1],["(\\d{3})(\\d{3})(\\d{6,7})","$1 $2 $3",["80"],"0$1",1]],"0"],TT:["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-46-8]\\d{6})$","868$1",0,"868"],TV:["688","00","(?:2|7\\d\\d|90)\\d{4}",[5,6,7],[["(\\d{2})(\\d{3})","$1 $2",["2"]],["(\\d{2})(\\d{4})","$1 $2",["90"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]]],TW:["886","0(?:0[25-79]|19)","[2-689]\\d{8}|7\\d{9,10}|[2-8]\\d{7}|2\\d{6}",[7,8,9,10,11],[["(\\d{2})(\\d)(\\d{4})","$1 $2 $3",["202"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[258]0"],"0$1"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]","[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,5})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,0,0,"#"],TZ:["255","00[056]","(?:[26-8]\\d|41|90)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[24]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[67]"],"0$1"]],"0"],UA:["380","00","[89]\\d{9}|[3-9]\\d{8}",[9,10],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]","6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["4[45][0-5]|5(?:0|6[37])|6(?:[12][018]|[36-8])|7|89|9[1-9]|(?:48|57)[0137-9]","4[45][0-5]|5(?:0|6(?:3[14-7]|7))|6(?:[12][018]|[36-8])|7|89|9[1-9]|(?:48|57)[0137-9]"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["[3-6]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,0,"0~0"],UG:["256","00[057]","800\\d{6}|(?:[29]0|[347]\\d)\\d{7}",[9],[["(\\d{4})(\\d{5})","$1 $2",["202","2024"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[27-9]|4(?:6[45]|[7-9])"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[34]"],"0$1"]],"0"],US:["1","011","[2-9]\\d{9}",[10],[["(\\d{3})(\\d{3})(\\d{4})","($1) $2-$3",["[2-9]"],0,1,"$1-$2-$3"]],"1",0,0,0,0,0,[["5(?:05(?:[2-57-9]\\d\\d|6(?:[0-35-9]\\d|44))|82(?:2(?:0[0-3]|[268]2)|3(?:0[02]|33)|4(?:00|4[24]|65|82)|5(?:00|29|83)|6(?:00|66|82)|777|8(?:00|88)|9(?:00|9[89])))\\d{4}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[39]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[0-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[0179]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[08]|3[0-289]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01579]|5[12469]|7[0-389]|8[04-69]))[2-9]\\d{6}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\d{6}"]]],UY:["598","0(?:0|1[3-9]\\d)","4\\d{9}|[1249]\\d{7}|(?:[49]\\d|80)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["405|8|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[124]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["4"],"0$1"]],"0",0,0,0,0,0,0,"00"," int. "],UZ:["998","810","(?:33|55|[679]\\d|88)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[35-9]"],"8 $1"]],"8",0,0,0,0,0,0,"8~10"],VA:["39","00","0\\d{5,10}|3[0-8]\\d{7,10}|55\\d{8}|8\\d{5}(?:\\d{2,4})?|(?:1\\d|39)\\d{7,8}",[6,7,8,9,10,11],0,0,0,0,0,0,"06698"],VC:["1","011","(?:[58]\\d\\d|784|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","784$1",0,"784"],VE:["58","00","[68]00\\d{7}|(?:[24]\\d|[59]0)\\d{8}",[10],[["(\\d{3})(\\d{7})","$1-$2",["[24-689]"],"0$1"]],"0"],VG:["1","011","(?:284|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-578]\\d{6})$","284$1",0,"284"],VI:["1","011","[58]\\d{9}|(?:34|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","340$1",0,"340"],VN:["84","00","[12]\\d{9}|[135-9]\\d{8}|[16]\\d{7}|[16-8]\\d{6}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["80"],"0$1",1],["(\\d{4})(\\d{4,6})","$1 $2",["1"],0,1],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[69]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3578]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["2[48]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["2"],"0$1",1]],"0"],VU:["678","00","[57-9]\\d{6}|(?:[238]\\d|48)\\d{3}",[5,7],[["(\\d{3})(\\d{4})","$1 $2",["[57-9]"]]]],WF:["681","00","(?:40|72)\\d{4}|8\\d{5}(?:\\d{3})?",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[478]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]]],WS:["685","0","(?:[2-6]|8\\d{5})\\d{4}|[78]\\d{6}|[68]\\d{5}",[5,6,7,10],[["(\\d{5})","$1",["[2-5]|6[1-9]"]],["(\\d{3})(\\d{3,7})","$1 $2",["[68]"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]]],XK:["383","00","[23]\\d{7,8}|(?:4\\d\\d|[89]00)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[23]"],"0$1"]],"0"],YE:["967","00","(?:1|7\\d)\\d{7}|[1-7]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-6]|7[24-68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["7"],"0$1"]],"0"],YT:["262","00","80\\d{7}|(?:26|63)9\\d{6}",[9],0,"0",0,0,0,0,"269|63"],ZA:["27","00","[1-79]\\d{8}|8\\d{4,9}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,4})","$1 $2",["8[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["8[1-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["860"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0"],ZM:["260","00","(?:63|80)0\\d{6}|(?:21|[79]\\d)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[28]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[79]"],"0$1"]],"0"],ZW:["263","00","2(?:[0-57-9]\\d{6,8}|6[0-24-9]\\d{6,7})|[38]\\d{9}|[35-8]\\d{8}|[3-6]\\d{7}|[1-689]\\d{6}|[1-3569]\\d{5}|[1356]\\d{4}",[5,6,7,8,9,10],[["(\\d{3})(\\d{3,5})","$1 $2",["2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]"],"0$1"],["(\\d)(\\d{3})(\\d{2,4})","$1 $2 $3",["[49]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["80"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2","2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)","2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["29[013-9]|39|54"],"0$1"],["(\\d{4})(\\d{3,5})","$1 $2",["(?:25|54)8","258|5483"],"0$1"]],"0"]},nonGeographic:{800:["800",0,"(?:005|[1-9]\\d\\d)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["\\d"]]],0,0,0,0,0,0,[0,0,["(?:005|[1-9]\\d\\d)\\d{5}"]]],808:["808",0,"[1-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[1-9]"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,["[1-9]\\d{7}"]]],870:["870",0,"7\\d{11}|[35-7]\\d{8}",[9,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[35-7]"]]],0,0,0,0,0,0,[0,["(?:[356]|774[45])\\d{8}|7[6-8]\\d{7}"]]],878:["878",0,"10\\d{10}",[12],[["(\\d{2})(\\d{5})(\\d{5})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["10\\d{10}"]]],881:["881",0,"[0-36-9]\\d{8}",[9],[["(\\d)(\\d{3})(\\d{5})","$1 $2 $3",["[0-36-9]"]]],0,0,0,0,0,0,[0,["[0-36-9]\\d{8}"]]],882:["882",0,"[13]\\d{6}(?:\\d{2,5})?|285\\d{9}|(?:[19]\\d|49)\\d{6}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5})","$1 $2",["16|342"]],["(\\d{2})(\\d{6})","$1 $2",["4"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[19]"]],["(\\d{2})(\\d{4})(\\d{3})","$1 $2 $3",["3[23]"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["34[57]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["34"]],["(\\d{2})(\\d{4,5})(\\d{5})","$1 $2 $3",["[1-3]"]]],0,0,0,0,0,0,[0,["342\\d{4}|(?:337|49)\\d{6}|3(?:2|47|7\\d{3})\\d{7}",[7,8,9,10,12]],0,0,0,0,0,0,["1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\d{4}|6\\d{5,10})|(?:(?:285\\d\\d|3(?:45|[69]\\d{3}))\\d|9[89])\\d{6}"]]],883:["883",0,"210\\d{7}|51\\d{7}(?:\\d{3})?",[9,10,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["510"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["2"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["510"]],["(\\d{4})(\\d{4})(\\d{4})","$1 $2 $3",["5"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["(?:210|51[013]0\\d)\\d{7}|5100\\d{5}"]]],888:["888",0,"\\d{11}",[11],[["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3"]],0,0,0,0,0,0,[0,0,0,0,0,0,["\\d{11}"]]],979:["979",0,"[1359]\\d{8}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[1359]"]]],0,0,0,0,0,0,[0,0,0,["[1359]\\d{8}"]]]}};function jn(t,e){var r=Array.prototype.slice.call(e);return r.push(Vn),t.apply(this,r)}var Hn=function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.name=this.constructor.name,this.message=e,this.stack=new Error(e).stack};(Hn.prototype=Object.create(Error.prototype)).constructor=Hn;var kn="0-90-9٠-٩۰-۹",Kn="".concat("-‐-―−ー-").concat("//").concat("..").concat("  ­​⁠ ").concat("()()[]\\[\\]").concat("~⁓∼~");function Wn(t,e){t=t.split("-"),e=e.split("-");for(var r=t[0].split("."),n=e[0].split("."),d=0;d<3;d++){var a=Number(r[d]),o=Number(n[d]);if(a>o)return 1;if(o>a)return-1;if(!isNaN(a)&&isNaN(o))return 1;if(isNaN(a)&&!isNaN(o))return-1}return t[1]&&e[1]?t[1]>e[1]?1:t[1]=2&&vd.test(t)}var gd=new RegExp("(?:"+ld()+")$","i");var hd={0:"0",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9","0":"0","1":"1","2":"2","3":"3","4":"4","5":"5","6":"6","7":"7","8":"8","9":"9","٠":"0","١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","۰":"0","۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9"};function md(t){var e="",r=t.split(""),n=Array.isArray(r),d=0;for(r=n?r:r[Symbol.iterator]();;){var a;if(n){if(d>=r.length)break;a=r[d++]}else{if((d=r.next()).done)break;a=d.value}e+=Ad(a,e)||""}return e}function Ad(t,e){if("+"===t){if(e)return;return"+"}return function(t){return hd[t]}(t)}function bd(t,e){return _d(t,void 0,e)}function _d(t,e,r){var n=r.type(e),d=n&&n.possibleLengths()||r.possibleLengths();if(!d)return"IS_POSSIBLE";if("FIXED_LINE_OR_MOBILE"===e){if(!r.type("FIXED_LINE"))return _d(t,"MOBILE",r);var a=r.type("MOBILE");a&&(d=function(t,e){var r=t.slice(),n=e,d=Array.isArray(n),a=0;for(n=d?n:n[Symbol.iterator]();;){var o;if(d){if(a>=n.length)break;o=n[a++]}else{if((a=n.next()).done)break;o=a.value}var i=o;t.indexOf(i)<0&&r.push(i)}return r.sort((function(t,e){return t-e}))}(d,a.possibleLengths()))}else if(e&&!n)return"INVALID_LENGTH";var o=t.length,i=d[0];return i===o?"IS_POSSIBLE":i>o?"TOO_SHORT":d[d.length-1]=0?"IS_POSSIBLE":"INVALID_LENGTH"}function xd(t,e){return"IS_POSSIBLE"===bd(t,e)}function Id(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=[],n=!0,d=!1,a=void 0;try{for(var o,i=t[Symbol.iterator]();!(n=(o=i.next()).done)&&(r.push(o.value),!e||r.length!==e);n=!0);}catch(t){d=!0,a=t}finally{try{n||null==i.return||i.return()}finally{if(d)throw a}}return r}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function Md(t,e){return t=t||"",new RegExp("^(?:"+e+")$").test(t)}var Sd=["MOBILE","PREMIUM_RATE","TOLL_FREE","SHARED_COST","VOIP","PERSONAL_NUMBER","PAGER","UAN","VOICEMAIL"];function Od(t,e,r){if(e=e||{},t.country){(r=new td(r)).selectNumberingPlan(t.country,t.countryCallingCode);var n=e.v2?t.nationalNumber:t.phone;if(Md(n,r.nationalNumberPattern())){if(Nd(n,"FIXED_LINE",r))return r.type("MOBILE")&&""===r.type("MOBILE").pattern()?"FIXED_LINE_OR_MOBILE":r.type("MOBILE")?Nd(n,"MOBILE",r)?"FIXED_LINE_OR_MOBILE":"FIXED_LINE":"FIXED_LINE_OR_MOBILE";for(var d=0,a=Sd;d=r.length)break;a=r[d++]}else{if((d=r.next()).done)break;a=d.value}var o=a;if(o.leadingDigitsPatterns().length>0){var i=o.leadingDigitsPatterns()[o.leadingDigitsPatterns().length-1];if(0!==e.search(i))continue}if(Md(e,o.pattern()))return o}}(n.formats(),t);return a?Cd(t,a,{useInternationalFormat:"INTERNATIONAL"===r,withNationalPrefix:!a.nationalPrefixIsOptionalWhenFormattingInNationalFormat()||!d||!1!==d.nationalPrefix,carrierCode:e,metadata:n}):t}function Fd(t,e,r,n){return e?n(t,e,r):t}function Dd(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Zd(t,e){for(var r=0;r0&&n[i];if(e.nationalPrefixTransformRule()&&u)d=t.replace(r,e.nationalPrefixTransformRule()),i>1&&(a=n[1]);else{var s=n[0];d=t.slice(s.length),u&&(a=n[1])}if(u){var $=t.indexOf(n[1]);t.slice(0,$)===e.numberingPlan.nationalPrefix()&&(o=e.numberingPlan.nationalPrefix())}else o=n[0];return{nationalNumber:d,nationalPrefix:o,carrierCode:a}}}return{nationalNumber:t}}(t,e),n=r.nationalNumber,d=r.carrierCode;if(!function(t,e,r){if(Md(t,r.nationalNumberPattern())&&!Md(e,r.nationalNumberPattern()))return!1;return!0}(t,n,e))return{nationalNumber:t};if(t.length!==n.length+(d?d.length:0)&&e.possibleLengths())switch(bd(n,e)){case"TOO_SHORT":case"INVALID_LENGTH":return{nationalNumber:t}}return{nationalNumber:n,carrierCode:d}}function jd(t,e,r,n){if(!t)return{};if("+"!==t[0]){var d=function(t,e,r,n){if(e){var d=new td(n);d.selectNumberingPlan(e,r);var a=new RegExp(d.IDDPrefix());if(0===t.search(a)){var o=(t=t.slice(t.match(a)[0].length)).match(Ud);if(!(o&&null!=o[1]&&o[1].length>0&&"0"===o[1]))return t}}}(t,e,r,n);if(!d||d===t){if(e||r){var a=function(t,e,r,n){var d=e?ud(e,n):r;if(0===t.indexOf(d)){(n=new td(n)).selectNumberingPlan(e,r);var a=t.slice(d.length),o=Vd(a,n).nationalNumber,i=Vd(t,n).nationalNumber;if(!Md(i,n.nationalNumberPattern())&&Md(o,n.nationalNumberPattern())||"TOO_LONG"===bd(i,n))return{countryCallingCode:d,number:a}}return{number:t}}(t,e,r,n),o=a.countryCallingCode,i=a.number;if(o)return{countryCallingCode:o,number:i}}return{number:t}}t="+"+d}if("0"===t[1])return{};n=new td(n);for(var u=2;u-1<=3&&u<=t.length;){var s=t.slice(1,u);if(n.hasCallingCode(s))return n.selectNumberingPlan(s),{countryCallingCode:s,number:t.slice(u)};u++}return{}}function Hd(t,e,r){var n=r.getCountryCodesForCallingCode(t);if(n)return 1===n.length?n[0]:function(t,e,r){r=new td(r);var n=t,d=Array.isArray(n),a=0;for(n=d?n:n[Symbol.iterator]();;){var o;if(d){if(a>=n.length)break;o=n[a++]}else{if((a=n.next()).done)break;o=a.value}var i=o;if(r.country(i),r.leadingDigits()){if(e&&0===e.search(r.leadingDigits()))return i}else if(Od({phone:e,country:i},void 0,r.metadata))return i}}(n,e,r.metadata)}var kd=new RegExp("[++0-90-9٠-٩۰-۹]"),Kd=new RegExp("[^0-90-9٠-٩۰-۹#]+$");function Wd(t,e,r){if(e=e||{},r=new td(r),e.defaultCountry&&!r.hasCountry(e.defaultCountry)){if(e.v2)throw new Hn("INVALID_COUNTRY");throw new Error("Unknown country: ".concat(e.defaultCountry))}var n=function(t,e,r){if(t&&0===t.indexOf("tel:"))return function(t){var e,r,n=(t=t.replace(/^tel:/,"tel=")).split(";"),d=Array.isArray(n),a=0;for(n=d?n:n[Symbol.iterator]();;){var o;if(d){if(a>=n.length)break;o=n[a++]}else{if((a=n.next()).done)break;o=a.value}var i=Id(o.split("="),2),u=i[0],s=i[1];switch(u){case"tel":e=s;break;case"ext":r=s;break;case"phone-context":"+"===s[0]&&(e=s+e)}}if(!yd(e))return{};var $={number:e};return r&&($.ext=r),$}(t);var n=function(t,e,r){if(!t)return;if(t.length>250){if(r)throw new Hn("TOO_LONG");return}if(!1===e)return t;var n=t.search(kd);if(n<0)return;return t.slice(n).replace(Kd,"")}(t,r,e);if(!n)return{};if(!yd(n))return function(t){return cd.test(t)}(n)?{error:"TOO_SHORT"}:{};var d=function(t){var e=t.search(gd);if(e<0)return{};for(var r=t.slice(0,e),n=t.match(gd),d=1;d17){if(e.v2)throw new Hn("TOO_LONG");return{}}if(e.v2){var f=new Bd($,s,r.metadata);return u&&(f.country=u),l&&(f.carrierCode=l),a&&(f.ext=a),f}var c=!!(e.extended?r.hasSelectedNumberingPlan():u)&&Md(s,r.nationalNumberPattern());return e.extended?{country:u,countryCallingCode:$,carrierCode:l,valid:c,possible:!!c||!(!0!==e.extended||!r.possibleLengths()||!xd(s,r)),phone:s,ext:a}:c?function(t,e,r){var n={country:t,phone:e};r&&(n.ext=r);return n}(u,s,a):{}}function Yd(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function zd(t,e,r){return Wd(t,function(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{};(0,r.default)(t);var d=n;if(d=e.require_hyphen?d.replace("?",""):d,!(d=e.case_sensitive?new RegExp(d):new RegExp(d,"i")).test(t))return!1;for(var a=t.replace("-","").toUpperCase(),o=0,i=0;i1&&void 0!==arguments[1]?arguments[1]:n;if((0,r.default)(t),e.loose)return a.includes(t.toLowerCase());return d.includes(t)};var r=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);var n={loose:!1},d=["true","false","1","0"],a=[].concat(d,["yes","no"]);t.exports=e.default,t.exports.default=e.default}(ha,ha.exports);var ma=M(ha.exports),Aa="isBooleanString";function ba(t){return"string"==typeof t&&ma(t)}var _a={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){if((0,r.default)(t),e&&e.no_symbols)return d.test(t);return new RegExp("^[+-]?([0-9]*[".concat((e||{}).locale?n.decimal[e.locale]:".","])?[0-9]+$")).test(t)};var r=function(t){return t&&t.__esModule?t:{default:t}}(O.exports),n=X;var d=/^[0-9]+$/;t.exports=e.default,t.exports.default=e.default}(_a,_a.exports);var xa=M(_a.exports),Ia="isNumberString";function Ma(t,e){return"string"==typeof t&&xa(t,e)}var Sa={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){if((0,r.default)(t),t.length%8==0&&n.test(t))return!0;return!1};var r=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);var n=/^[A-Z2-7]+=*$/;t.exports=e.default,t.exports.default=e.default}(Sa,Sa.exports);var Oa=M(Sa.exports),Na="isBase32";function Ea(t){return"string"==typeof t&&Oa(t)}var Ca={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){if((0,r.default)(t),!n.CountryCodes.has(t.slice(4,6).toUpperCase()))return!1;return d.test(t)};var r=function(t){return t&&t.__esModule?t:{default:t}}(O.exports),n=Kr;var d=/^[A-Za-z]{6}[A-Za-z0-9]{2}([A-Za-z0-9]{3})?$/;t.exports=e.default,t.exports.default=e.default}(Ca,Ca.exports);var Pa=M(Ca.exports),Ta="isBIC";function Ra(t){return"string"==typeof t&&Pa(t)}var La={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){if((0,r.default)(t),t.startsWith("bc1"))return n.test(t);return d.test(t)};var r=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);var n=/^(bc1)[a-z0-9]{25,39}$/,d=/^(1|3)[A-HJ-NP-Za-km-z1-9]{25,39}$/;t.exports=e.default,t.exports.default=e.default}(La,La.exports);var wa=M(La.exports),Fa="isBtcAddress";function Da(t){return"string"==typeof t&&wa(t)}var Za={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){(0,r.default)(t);var e=t.split(",");if(e.length<2)return!1;var o=e.shift().trim().split(";"),i=o.shift();if("data:"!==i.substr(0,5))return!1;var u=i.substr(5);if(""!==u&&!n.test(u))return!1;for(var s=0;s=2&&e===11-r},IT:function(t){return 9===t.length&&("CA00000AA"!==t&&t.search(/C[A-Z][0-9]{5}[A-Z]{2}/i)>-1)},NO:function(t){var e=t.trim();if(isNaN(Number(e)))return!1;if(11!==e.length)return!1;if("00000000000"===e)return!1;var r=e.split("").map(Number),n=(11-(3*r[0]+7*r[1]+6*r[2]+1*r[3]+8*r[4]+9*r[5]+4*r[6]+5*r[7]+2*r[8])%11)%11,d=(11-(5*r[0]+4*r[1]+3*r[2]+2*r[3]+7*r[4]+6*r[5]+5*r[6]+4*r[7]+3*r[8]+2*n)%11)%11;return n===r[9]&&d===r[10]},TH:function(t){if(!t.match(/^[1-8]\d{12}$/))return!1;for(var e=0,r=0;r<12;r++)e+=parseInt(t[r],10)*(13-r);return t[12]===((11-e%11)%10).toString()},LK:function(t){return!(10!==t.length||!/^[1-9]\d{8}[vx]$/i.test(t))||!(12!==t.length||!/^[1-9]\d{11}$/i.test(t))},"he-IL":function(t){var e=t.trim();if(!/^\d{9}$/.test(e))return!1;for(var r,n=e,d=0,a=0;a9?r-9:r;return d%10==0},"ar-LY":function(t){var e=t.trim();return!!/^(1|2)\d{11}$/.test(e)},"ar-TN":function(t){var e=t.trim();return!!/^\d{8}$/.test(e)},"zh-CN":function(t){var e,r=["11","12","13","14","15","21","22","23","31","32","33","34","35","36","37","41","42","43","44","45","46","50","51","52","53","54","61","62","63","64","65","71","81","82","91"],n=["7","9","10","5","8","4","2","1","6","3","7","9","10","5","8","4","2"],d=["1","0","X","9","8","7","6","5","4","3","2"],a=function(t){return r.includes(t)},o=function(t){var e=parseInt(t.substring(0,4),10),r=parseInt(t.substring(4,6),10),n=parseInt(t.substring(6),10),d=new Date(e,r-1,n);return!(d>new Date)&&(d.getFullYear()===e&&d.getMonth()===r-1&&d.getDate()===n)},i=function(t){return function(t){for(var e=t.substring(0,17),r=0,a=0;a<17;a++)r+=parseInt(e.charAt(a),10)*parseInt(n[a],10);return d[r%11]}(t)===t.charAt(17).toUpperCase()};return!!/^\d{15}|(\d{17}(\d|x|X))$/.test(e=t)&&(15===e.length?function(t){var e=/^[1-9]\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}$/.test(t);if(!e)return!1;var r=t.substring(0,2);if(!(e=a(r)))return!1;var n="19".concat(t.substring(6,12));return!!(e=o(n))}(e):function(t){var e=/^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}(\d|x|X)$/.test(t);if(!e)return!1;var r=t.substring(0,2);if(!(e=a(r)))return!1;var n=t.substring(6,14);return!!(e=o(n))&&i(t)}(e))},"zh-TW":function(t){var e={A:10,B:11,C:12,D:13,E:14,F:15,G:16,H:17,I:34,J:18,K:19,L:20,M:21,N:22,O:35,P:23,Q:24,R:25,S:26,T:27,U:28,V:29,W:32,X:30,Y:31,Z:33},r=t.trim().toUpperCase();return!!/^[A-Z][0-9]{9}$/.test(r)&&Array.from(r).reduce((function(t,r,n){if(0===n){var d=e[r];return d%10*9+Math.floor(d/10)}return 9===n?(10-t%10-Number(r))%10==0:t+Number(r)*(9-n)}),0)}};t.exports=e.default,t.exports.default=e.default}(uo,uo.exports);var so=M(uo.exports),$o="isIdentityCard";function lo(t,e){return"string"==typeof t&&so(t,e)}var fo={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return(0,r.default)(t),n.test(t)};var r=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);var n=/^[A-Z]{2}[0-9A-Z]{3}\d{2}\d{5}$/;t.exports=e.default,t.exports.default=e.default}(fo,fo.exports);var co=M(fo.exports),po="isISRC";function vo(t){return"string"==typeof t&&co(t)}var yo={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){if((0,r.default)(t),"en_US_POSIX"===t||"ca_ES_VALENCIA"===t)return!0;return n.test(t)};var r=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);var n=/^[A-Za-z]{2,4}([_-]([A-Za-z]{4}|[\d]{3}))?([_-]([A-Za-z]{2}|[\d]{3}))?$/;t.exports=e.default,t.exports.default=e.default}(yo,yo.exports);var go=M(yo.exports),ho="isLocale";function mo(t){return"string"==typeof t&&go(t)}var Ao={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return(0,r.default)(t),n.test(t.trim())};var r=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);var n=/^magnet:\?xt(?:\.1)?=urn:(?:aich|bitprint|btih|ed2k|ed2khash|kzhash|md5|sha1|tree:tiger):[a-z0-9]{32}(?:[a-z0-9]{8})?($|&)/i;t.exports=e.default,t.exports.default=e.default}(Ao,Ao.exports);var bo=M(Ao.exports),_o="isMagnetURI";function xo(t){return"string"==typeof t&&bo(t)}var Io={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return(0,r.default)(t),n.test(t)||d.test(t)||a.test(t)};var r=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);var n=/^(application|audio|font|image|message|model|multipart|text|video)\/[a-zA-Z0-9\.\-\+]{1,100}$/i,d=/^text\/[a-zA-Z0-9\.\-\+]{1,100};\s?charset=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?$/i,a=/^multipart\/[a-zA-Z0-9\.\-\+]{1,100}(;\s?(boundary|charset)=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?){0,2}$/i;t.exports=e.default,t.exports.default=e.default}(Io,Io.exports);var Mo=M(Io.exports),So="isMimeType";function Oo(t){return"string"==typeof t&&Mo(t)}var No={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return(0,r.default)(t),n.test(t)};var r=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);var n=/^(0o)?[0-7]+$/i;t.exports=e.default,t.exports.default=e.default}(No,No.exports);var Eo=M(No.exports),Co="isOctal";function Po(t){return"string"==typeof t&&Eo(t)}var To={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){(0,r.default)(t);var d=t.replace(/\s/g,"").toUpperCase();return e.toUpperCase()in n&&n[e].test(d)};var r=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);var n={AM:/^[A-Z]{2}\d{7}$/,AR:/^[A-Z]{3}\d{6}$/,AT:/^[A-Z]\d{7}$/,AU:/^[A-Z]\d{7}$/,BE:/^[A-Z]{2}\d{6}$/,BG:/^\d{9}$/,BR:/^[A-Z]{2}\d{6}$/,BY:/^[A-Z]{2}\d{7}$/,CA:/^[A-Z]{2}\d{6}$/,CH:/^[A-Z]\d{7}$/,CN:/^G\d{8}$|^E(?![IO])[A-Z0-9]\d{7}$/,CY:/^[A-Z](\d{6}|\d{8})$/,CZ:/^\d{8}$/,DE:/^[CFGHJKLMNPRTVWXYZ0-9]{9}$/,DK:/^\d{9}$/,DZ:/^\d{9}$/,EE:/^([A-Z]\d{7}|[A-Z]{2}\d{7})$/,ES:/^[A-Z0-9]{2}([A-Z0-9]?)\d{6}$/,FI:/^[A-Z]{2}\d{7}$/,FR:/^\d{2}[A-Z]{2}\d{5}$/,GB:/^\d{9}$/,GR:/^[A-Z]{2}\d{7}$/,HR:/^\d{9}$/,HU:/^[A-Z]{2}(\d{6}|\d{7})$/,IE:/^[A-Z0-9]{2}\d{7}$/,IN:/^[A-Z]{1}-?\d{7}$/,ID:/^[A-C]\d{7}$/,IR:/^[A-Z]\d{8}$/,IS:/^(A)\d{7}$/,IT:/^[A-Z0-9]{2}\d{7}$/,JP:/^[A-Z]{2}\d{7}$/,KR:/^[MS]\d{8}$/,LT:/^[A-Z0-9]{8}$/,LU:/^[A-Z0-9]{8}$/,LV:/^[A-Z0-9]{2}\d{7}$/,LY:/^[A-Z0-9]{8}$/,MT:/^\d{7}$/,MZ:/^([A-Z]{2}\d{7})|(\d{2}[A-Z]{2}\d{5})$/,MY:/^[AHK]\d{8}$/,NL:/^[A-Z]{2}[A-Z0-9]{6}\d$/,PL:/^[A-Z]{2}\d{7}$/,PT:/^[A-Z]\d{6}$/,RO:/^\d{8,9}$/,RU:/^\d{9}$/,SE:/^\d{8}$/,SL:/^(P)[A-Z]\d{7}$/,SK:/^[0-9A-Z]\d{7}$/,TR:/^[A-Z]\d{8}$/,UA:/^[A-Z]{2}\d{6}$/,US:/^\d{9}$/};t.exports=e.default,t.exports.default=e.default}(To,To.exports);var Ro=M(To.exports),Lo="isPassportNumber";function wo(t,e){return"string"==typeof t&&Ro(t,e)}var Fo={};Object.defineProperty(Fo,"__esModule",{value:!0});var Do=Fo.default=function(t,e){if((0,Zo.default)(t),e in Vo)return Vo[e].test(t);if("any"===e){for(var r in Vo){if(Vo.hasOwnProperty(r))if(Vo[r].test(t))return!0}return!1}throw new Error("Invalid locale '".concat(e,"'"))};Fo.locales=void 0;var Zo=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);var Bo=/^\d{4}$/,Go=/^\d{5}$/,Uo=/^\d{6}$/,Vo={AD:/^AD\d{3}$/,AT:Bo,AU:Bo,AZ:/^AZ\d{4}$/,BE:Bo,BG:Bo,BR:/^\d{5}-\d{3}$/,BY:/2[1-4]{1}\d{4}$/,CA:/^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJ-NPRSTV-Z][\s\-]?\d[ABCEGHJ-NPRSTV-Z]\d$/i,CH:Bo,CN:/^(0[1-7]|1[012356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[1-5]|8[1345]|9[09])\d{4}$/,CZ:/^\d{3}\s?\d{2}$/,DE:Go,DK:Bo,DO:Go,DZ:Go,EE:Go,ES:/^(5[0-2]{1}|[0-4]{1}\d{1})\d{3}$/,FI:Go,FR:/^\d{2}\s?\d{3}$/,GB:/^(gir\s?0aa|[a-z]{1,2}\d[\da-z]?\s?(\d[a-z]{2})?)$/i,GR:/^\d{3}\s?\d{2}$/,HR:/^([1-5]\d{4}$)/,HT:/^HT\d{4}$/,HU:Bo,ID:Go,IE:/^(?!.*(?:o))[A-Za-z]\d[\dw]\s\w{4}$/i,IL:/^(\d{5}|\d{7})$/,IN:/^((?!10|29|35|54|55|65|66|86|87|88|89)[1-9][0-9]{5})$/,IR:/\b(?!(\d)\1{3})[13-9]{4}[1346-9][013-9]{5}\b/,IS:/^\d{3}$/,IT:Go,JP:/^\d{3}\-\d{4}$/,KE:Go,KR:/^(\d{5}|\d{6})$/,LI:/^(948[5-9]|949[0-7])$/,LT:/^LT\-\d{5}$/,LU:Bo,LV:/^LV\-\d{4}$/,LK:Go,MX:Go,MT:/^[A-Za-z]{3}\s{0,1}\d{4}$/,MY:Go,NL:/^\d{4}\s?[a-z]{2}$/i,NO:Bo,NP:/^(10|21|22|32|33|34|44|45|56|57)\d{3}$|^(977)$/i,NZ:Bo,PL:/^\d{2}\-\d{3}$/,PR:/^00[679]\d{2}([ -]\d{4})?$/,PT:/^\d{4}\-\d{3}?$/,RO:Uo,RU:Uo,SA:Go,SE:/^[1-9]\d{2}\s?\d{2}$/,SG:Uo,SI:Bo,SK:/^\d{3}\s?\d{2}$/,TH:Go,TN:Bo,TW:/^\d{3}(\d{2})?$/,UA:Go,US:/^\d{5}(-\d{4})?$/,ZA:Bo,ZM:Go},jo=Object.keys(Vo);Fo.locales=jo;var Ho="isPostalCode";function ko(t,e){return"string"==typeof t&&Do(t,e)}var Ko={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return(0,r.default)(t),$.test(t)};var r=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);var n=/([01][0-9]|2[0-3])/,d=/[0-5][0-9]/,a=new RegExp("[-+]".concat(n.source,":").concat(d.source)),o=new RegExp("([zZ]|".concat(a.source,")")),i=new RegExp("".concat(n.source,":").concat(d.source,":").concat(/([0-5][0-9]|60)/.source).concat(/(\.[0-9]+)?/.source)),u=new RegExp("".concat(/[0-9]{4}/.source,"-").concat(/(0[1-9]|1[0-2])/.source,"-").concat(/([12]\d|0[1-9]|3[01])/.source)),s=new RegExp("".concat(i.source).concat(o.source)),$=new RegExp("^".concat(u.source,"[ tT]").concat(s.source,"$"));t.exports=e.default,t.exports.default=e.default}(Ko,Ko.exports);var Wo=M(Ko.exports),Yo="isRFC3339";function zo(t){return"string"==typeof t&&Wo(t)}var Jo={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if((0,r.default)(t),!e)return n.test(t)||d.test(t);return n.test(t)||d.test(t)||a.test(t)||o.test(t)};var r=function(t){return t&&t.__esModule?t:{default:t}}(O.exports);var n=/^rgb\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){2}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\)$/,d=/^rgba\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){3}(0?\.\d|1(\.0)?|0(\.0)?)\)$/,a=/^rgb\((([0-9]%|[1-9][0-9]%|100%),){2}([0-9]%|[1-9][0-9]%|100%)\)/,o=/^rgba\((([0-9]%|[1-9][0-9]%|100%),){3}(0?\.\d|1(\.0)?|0(\.0)?)\)/;t.exports=e.default,t.exports.default=e.default}(Jo,Jo.exports);var Xo=M(Jo.exports),qo="isRgbColor";function Qo(t,e){return"string"==typeof t&&Xo(t,e)}var ti={exports:{}},ei={exports:{}};!function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){var r=t.join("");return new RegExp(r,e)},t.exports=e.default,t.exports.default=e.default}(ei,ei.exports),function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return(0,r.default)(t),d.test(t)};var r=n(O.exports);function n(t){return t&&t.__esModule?t:{default:t}}var d=(0,n(ei.exports).default)(["^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)","(?:-((?:0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*))*))","?(?:\\+([0-9a-z-]+(?:\\.[0-9a-z-]+)*))?$"],"i");t.exports=e.default,t.exports.default=e.default}(ti,ti.exports);var ri=M(ti.exports),ni="isSemVer";function di(t){return"string"==typeof t&&ri(t)}var ai="isBoolean";function oi(t){return t instanceof Boolean||"boolean"==typeof t}var ii="isDate";function ui(t){return t instanceof Date&&!isNaN(t.getTime())}var si="isNumber";function $i(t,e){if(void 0===e&&(e={}),"number"!=typeof t)return!1;if(t===1/0||t===-1/0)return e.allowInfinity;if(Number.isNaN(t))return e.allowNaN;if(void 0!==e.maxDecimalPlaces){var r=0;if(t%1!=0&&(r=t.toString().split(".")[1].length),r>e.maxDecimalPlaces)return!1}return Number.isFinite(t)}var li="isEnum";function fi(t,e){return Object.keys(e).map((function(t){return e[t]})).indexOf(t)>=0}var ci="isInt";function pi(t){return"number"==typeof t&&Number.isInteger(t)}var vi="isString";function yi(t){return t instanceof String||"string"==typeof t}var gi="isArray";function hi(t){return Array.isArray(t)}var mi="isObject";function Ai(t){return null!=t&&("object"==typeof t||"function"==typeof t)&&!Array.isArray(t)}var bi="arrayContains";function _i(t,e){return!!Array.isArray(t)&&e.every((function(e){return-1!==t.indexOf(e)}))}var xi="arrayNotContains";function Ii(t,e){return!!Array.isArray(t)&&e.every((function(e){return-1===t.indexOf(e)}))}var Mi="arrayNotEmpty";function Si(t){return Array.isArray(t)&&t.length>0}var Oi="arrayMinSize";function Ni(t,e){return Array.isArray(t)&&t.length>=e}var Ei="arrayMaxSize";function Ci(t,e){return Array.isArray(t)&&t.length<=e}var Pi="arrayUnique";function Ti(t,e){if(!Array.isArray(t))return!1;e&&(t=t.map((function(t){return null!=t?e(t):t})));var r=t.filter((function(t,e,r){return r.indexOf(t)===e}));return t.length===r.length}var Ri="isNotEmptyObject";function Li(t,e){if(!Ai(t))return!1;if(!0===(null==e?void 0:e.nullable))return!Object.values(t).every((function(t){return null==t}));for(var r in t)if(t.hasOwnProperty(r))return!0;return!1}var wi="isInstance";function Fi(t,e){return e&&"function"==typeof e&&t instanceof e}t.ARRAY_CONTAINS=bi,t.ARRAY_MAX_SIZE=Ei,t.ARRAY_MIN_SIZE=Oi,t.ARRAY_NOT_CONTAINS=xi,t.ARRAY_NOT_EMPTY=Mi,t.ARRAY_UNIQUE=Pi,t.Allow=function(t){return function(r,n){var d={type:u.WHITELIST,target:r.constructor,propertyName:n,validationOptions:t};o().addValidationMetadata(new e(d))}},t.ArrayContains=function(t,e){return b({name:bi,constraints:[t],validator:{validate:function(t,e){return _i(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must contain $constraint1 values"}),e)}},e)},t.ArrayMaxSize=function(t,e){return b({name:Ei,constraints:[t],validator:{validate:function(t,e){return Ci(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must contain not more than $constraint1 elements"}),e)}},e)},t.ArrayMinSize=function(t,e){return b({name:Oi,constraints:[t],validator:{validate:function(t,e){return Ni(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must contain at least $constraint1 elements"}),e)}},e)},t.ArrayNotContains=function(t,e){return b({name:xi,constraints:[t],validator:{validate:function(t,e){return Ii(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property should not contain $constraint1 values"}),e)}},e)},t.ArrayNotEmpty=function(t){return b({name:Mi,validator:{validate:function(t,e){return Si(t)},defaultMessage:A((function(t){return t+"$property should not be empty"}),t)}},t)},t.ArrayUnique=function(t,e){var r="function"==typeof t?t:void 0,n="function"!=typeof t?t:e;return b({name:Pi,validator:{validate:function(t,e){return Ti(t,r)},defaultMessage:A((function(t){return t+"All $property's elements must be unique"}),n)}},n)},t.CONTAINS=Lt,t.Contains=function(t,e){return b({name:Lt,constraints:[t],validator:{validate:function(t,e){return wt(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must contain a $constraint1 string"}),e)}},e)},t.EQUALS=F,t.Equals=function(t,e){return b({name:F,constraints:[t],validator:{validate:function(t,e){return D(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must be equal to $constraint1"}),e)}},e)},t.IS_ALPHA=jt,t.IS_ALPHANUMERIC=Jt,t.IS_ARRAY=gi,t.IS_ASCII=ae,t.IS_BASE32=Na,t.IS_BASE64=se,t.IS_BIC=Ta,t.IS_BOOLEAN=ai,t.IS_BOOLEAN_STRING=Aa,t.IS_BTC_ADDRESS=Fa,t.IS_BYTE_LENGTH=ce,t.IS_CREDIT_CARD=ge,t.IS_CURRENCY=be,t.IS_DATA_URI=Ga,t.IS_DATE=ii,t.IS_DATE_STRING=ya,t.IS_DECIMAL=ee,t.IS_DEFINED=_,t.IS_DIVISIBLE_BY=mt,t.IS_EAN=Ha,t.IS_EMAIL=Ee,t.IS_EMPTY=G,t.IS_ENUM=li,t.IS_ETHEREUM_ADDRESS=Ya,t.IS_FIREBASE_PUSH_ID=In,t.IS_FQDN=Pe,t.IS_FULL_WIDTH=De,t.IS_HALF_WIDTH=je,t.IS_HASH=$a,t.IS_HEXADECIMAL=er,t.IS_HEX_COLOR=Xe,t.IS_HSL=qa,t.IS_IBAN=oo,t.IS_IDENTITY_CARD=$o,t.IS_IN=H,t.IS_INSTANCE=wi,t.IS_INT=ci,t.IS_IP=ur,t.IS_ISBN=gr,t.IS_ISIN=br,t.IS_ISO31661_ALPHA_2=Xr,t.IS_ISO31661_ALPHA_3=en,t.IS_ISO8601=Mr,t.IS_ISRC=po,t.IS_ISSN=pa,t.IS_JSON=Er,t.IS_JWT=Rr,t.IS_LATITUDE=T,t.IS_LATLONG=C,t.IS_LENGTH=Tn,t.IS_LOCALE=ho,t.IS_LONGITUDE=L,t.IS_LOWERCASE=Dr,t.IS_MAC_ADDRESS=or,t.IS_MAGNET_URI=_o,t.IS_MILITARY_TIME=oa,t.IS_MIME_TYPE=So,t.IS_MOBILE_PHONE=Hr,t.IS_MONGO_ID=an,t.IS_MULTIBYTE=$n,t.IS_NEGATIVE=xt,t.IS_NOT_EMPTY=V,t.IS_NOT_EMPTY_OBJECT=Ri,t.IS_NOT_IN=K,t.IS_NUMBER=si,t.IS_NUMBER_STRING=Ia,t.IS_OBJECT=mi,t.IS_OCTAL=Co,t.IS_PASSPORT_NUMBER=Lo,t.IS_PHONE_NUMBER=da,t.IS_PORT=cr,t.IS_POSITIVE=bt,t.IS_POSTAL_CODE=Ho,t.IS_RFC_3339=Yo,t.IS_RGB_COLOR=qo,t.IS_SEM_VER=ni,t.IS_STRING=vi,t.IS_SURROGATE_PAIR=pn,t.IS_UPPERCASE=Nn,t.IS_URL=hn,t.IS_UUID=_n,t.IS_VARIABLE_WIDTH=We,t.IsAlpha=function(t,e){return b({name:jt,constraints:[t],validator:{validate:function(t,e){return Ht(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must contain only letters (a-zA-Z)"}),e)}},e)},t.IsAlphanumeric=function(t,e){return b({name:Jt,constraints:[t],validator:{validate:function(t,e){return Xt(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must contain only letters and numbers"}),e)}},e)},t.IsArray=function(t){return b({name:gi,validator:{validate:function(t,e){return hi(t)},defaultMessage:A((function(t){return t+"$property must be an array"}),t)}},t)},t.IsAscii=function(t){return b({name:ae,validator:{validate:function(t,e){return oe(t)},defaultMessage:A((function(t){return t+"$property must contain only ASCII characters"}),t)}},t)},t.IsBIC=function(t){return b({name:Ta,validator:{validate:function(t,e){return Ra(t)},defaultMessage:A((function(t){return t+"$property must be a BIC or SWIFT code"}),t)}},t)},t.IsBase32=function(t){return b({name:Na,validator:{validate:function(t,e){return Ea(t)},defaultMessage:A((function(t){return t+"$property must be base32 encoded"}),t)}},t)},t.IsBase64=function(t){return b({name:se,validator:{validate:function(t,e){return $e(t)},defaultMessage:A((function(t){return t+"$property must be base64 encoded"}),t)}},t)},t.IsBoolean=function(t){return b({name:ai,validator:{validate:function(t,e){return oi(t)},defaultMessage:A((function(t){return t+"$property must be a boolean value"}),t)}},t)},t.IsBooleanString=function(t){return b({name:Aa,validator:{validate:function(t,e){return ba(t)},defaultMessage:A((function(t){return t+"$property must be a boolean string"}),t)}},t)},t.IsBtcAddress=function(t){return b({name:Fa,validator:{validate:function(t,e){return Da(t)},defaultMessage:A((function(t){return t+"$property must be a BTC address"}),t)}},t)},t.IsByteLength=function(t,e,r){return b({name:ce,constraints:[t,e],validator:{validate:function(t,e){return pe(t,e.constraints[0],e.constraints[1])},defaultMessage:A((function(t){return t+"$property's byte length must fall into ($constraint1, $constraint2) range"}),r)}},r)},t.IsCreditCard=function(t){return b({name:ge,validator:{validate:function(t,e){return he(t)},defaultMessage:A((function(t){return t+"$property must be a credit card"}),t)}},t)},t.IsCurrency=function(t,e){return b({name:be,constraints:[t],validator:{validate:function(t,e){return _e(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must be a currency"}),e)}},e)},t.IsDataURI=function(t){return b({name:Ga,validator:{validate:function(t,e){return Ua(t)},defaultMessage:A((function(t){return t+"$property must be a data uri format"}),t)}},t)},t.IsDate=function(t){return b({name:ii,validator:{validate:function(t,e){return ui(t)},defaultMessage:A((function(t){return t+"$property must be a Date instance"}),t)}},t)},t.IsDateString=function(t,e){return b({name:ya,constraints:[t],validator:{validate:function(t,e){return ga(t)},defaultMessage:A((function(t){return t+"$property must be a valid ISO 8601 date string"}),e)}},e)},t.IsDecimal=function(t,e){return b({name:ee,constraints:[t],validator:{validate:function(t,e){return re(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property is not a valid decimal number."}),e)}},e)},t.IsDefined=function(t){return b({name:_,validator:{validate:function(t){return x(t)},defaultMessage:A((function(t){return t+"$property should not be null or undefined"}),t)}},t)},t.IsDivisibleBy=function(t,e){return b({name:mt,constraints:[t],validator:{validate:function(t,e){return At(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must be divisible by $constraint1"}),e)}},e)},t.IsEAN=function(t){return b({name:Ha,validator:{validate:function(t,e){return ka(t)},defaultMessage:A((function(t){return t+"$property must be an EAN (European Article Number)"}),t)}},t)},t.IsEmail=function(t,e){return b({name:Ee,constraints:[t],validator:{validate:function(t,e){return Ce(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must be an email"}),e)}},e)},t.IsEmpty=function(t){return b({name:G,validator:{validate:function(t,e){return U(t)},defaultMessage:A((function(t){return t+"$property must be empty"}),t)}},t)},t.IsEnum=function(t,e){return b({name:li,constraints:[t],validator:{validate:function(t,e){return fi(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must be a valid enum value"}),e)}},e)},t.IsEthereumAddress=function(t){return b({name:Ya,validator:{validate:function(t,e){return za(t)},defaultMessage:A((function(t){return t+"$property must be an Ethereum address"}),t)}},t)},t.IsFQDN=function(t,e){return b({name:Pe,constraints:[t],validator:{validate:function(t,e){return Te(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must be a valid domain name"}),e)}},e)},t.IsFirebasePushId=function(t){return b({name:In,validator:{validate:function(t,e){return Mn(t)},defaultMessage:A((function(t){return t+"$property must be a Firebase Push Id"}),t)}},t)},t.IsFullWidth=function(t){return b({name:De,validator:{validate:function(t,e){return Ze(t)},defaultMessage:A((function(t){return t+"$property must contain a full-width characters"}),t)}},t)},t.IsHSL=function(t){return b({name:qa,validator:{validate:function(t,e){return Qa(t)},defaultMessage:A((function(t){return t+"$property must be a HSL color"}),t)}},t)},t.IsHalfWidth=function(t){return b({name:je,validator:{validate:function(t,e){return He(t)},defaultMessage:A((function(t){return t+"$property must contain a half-width characters"}),t)}},t)},t.IsHash=function(t,e){return b({name:$a,constraints:[t],validator:{validate:function(t,e){return la(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must be a hash of type $constraint1"}),e)}},e)},t.IsHexColor=function(t){return b({name:Xe,validator:{validate:function(t,e){return qe(t)},defaultMessage:A((function(t){return t+"$property must be a hexadecimal color"}),t)}},t)},t.IsHexadecimal=function(t){return b({name:er,validator:{validate:function(t,e){return rr(t)},defaultMessage:A((function(t){return t+"$property must be a hexadecimal number"}),t)}},t)},t.IsIBAN=function(t){return b({name:oo,validator:{validate:function(t,e){return io(t)},defaultMessage:A((function(t){return t+"$property must be an IBAN"}),t)}},t)},t.IsIP=function(t,e){return b({name:ur,constraints:[t],validator:{validate:function(t,e){return sr(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must be an ip address"}),e)}},e)},t.IsISBN=function(t,e){return b({name:gr,constraints:[t],validator:{validate:function(t,e){return hr(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must be an ISBN"}),e)}},e)},t.IsISIN=function(t){return b({name:br,validator:{validate:function(t,e){return _r(t)},defaultMessage:A((function(t){return t+"$property must be an ISIN (stock/security identifier)"}),t)}},t)},t.IsISO31661Alpha2=function(t){return b({name:Xr,validator:{validate:function(t,e){return qr(t)},defaultMessage:A((function(t){return t+"$property must be a valid ISO31661 Alpha2 code"}),t)}},t)},t.IsISO31661Alpha3=function(t){return b({name:en,validator:{validate:function(t,e){return rn(t)},defaultMessage:A((function(t){return t+"$property must be a valid ISO31661 Alpha3 code"}),t)}},t)},t.IsISO8601=function(t,e){return b({name:Mr,constraints:[t],validator:{validate:function(t,e){return Sr(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must be a valid ISO 8601 date string"}),e)}},e)},t.IsISRC=function(t){return b({name:po,validator:{validate:function(t,e){return vo(t)},defaultMessage:A((function(t){return t+"$property must be an ISRC"}),t)}},t)},t.IsISSN=function(t,e){return b({name:pa,constraints:[t],validator:{validate:function(t,e){return va(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must be a ISSN"}),e)}},e)},t.IsIdentityCard=function(t,e){return b({name:$o,constraints:[t],validator:{validate:function(t,e){return lo(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must be a identity card number"}),e)}},e)},t.IsIn=function(t,e){return b({name:H,constraints:[t],validator:{validate:function(t,e){return k(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must be one of the following values: $constraint1"}),e)}},e)},t.IsInstance=function(t,e){return b({name:wi,constraints:[t],validator:{validate:function(t,e){return Fi(t,e.constraints[0])},defaultMessage:A((function(t,e){return e.constraints[0]?t+"$property must be an instance of ".concat(e.constraints[0].name):t+"".concat(wi," decorator expects and object as value, but got falsy value.")}),e)}},e)},t.IsInt=function(t){return b({name:ci,validator:{validate:function(t,e){return pi(t)},defaultMessage:A((function(t){return t+"$property must be an integer number"}),t)}},t)},t.IsJSON=function(t){return b({name:Er,validator:{validate:function(t,e){return Cr(t)},defaultMessage:A((function(t){return t+"$property must be a json string"}),t)}},t)},t.IsJWT=function(t){return b({name:Rr,validator:{validate:function(t,e){return Lr(t)},defaultMessage:A((function(t){return t+"$property must be a jwt string"}),t)}},t)},t.IsLatLong=function(t){return b({name:C,validator:{validate:function(t,e){return P(t)},defaultMessage:A((function(t){return t+"$property must be a latitude,longitude string"}),t)}},t)},t.IsLatitude=function(t){return b({name:T,validator:{validate:function(t,e){return R(t)},defaultMessage:A((function(t){return t+"$property must be a latitude string or number"}),t)}},t)},t.IsLocale=function(t){return b({name:ho,validator:{validate:function(t,e){return mo(t)},defaultMessage:A((function(t){return t+"$property must be locale"}),t)}},t)},t.IsLongitude=function(t){return b({name:L,validator:{validate:function(t,e){return w(t)},defaultMessage:A((function(t){return t+"$property must be a longitude string or number"}),t)}},t)},t.IsLowercase=function(t){return b({name:Dr,validator:{validate:function(t,e){return Zr(t)},defaultMessage:A((function(t){return t+"$property must be a lowercase string"}),t)}},t)},t.IsMACAddress=function(t,e){var r=nr(t)?void 0:t,n=nr(t)?t:e;return b({name:or,constraints:[r],validator:{validate:function(t,e){return ir(t,r)},defaultMessage:A((function(t){return t+"$property must be a MAC Address"}),n)}},n)},t.IsMagnetURI=function(t){return b({name:_o,validator:{validate:function(t,e){return xo(t)},defaultMessage:A((function(t){return t+"$property must be magnet uri format"}),t)}},t)},t.IsMilitaryTime=function(t){return b({name:oa,validator:{validate:function(t,e){return ia(t)},defaultMessage:A((function(t){return t+"$property must be a valid representation of military time in the format HH:MM"}),t)}},t)},t.IsMimeType=function(t){return b({name:So,validator:{validate:function(t,e){return Oo(t)},defaultMessage:A((function(t){return t+"$property must be MIME type format"}),t)}},t)},t.IsMobilePhone=function(t,e,r){return b({name:Hr,constraints:[t,e],validator:{validate:function(t,e){return kr(t,e.constraints[0],e.constraints[1])},defaultMessage:A((function(t){return t+"$property must be a phone number"}),r)}},r)},t.IsMongoId=function(t){return b({name:an,validator:{validate:function(t,e){return on(t)},defaultMessage:A((function(t){return t+"$property must be a mongodb id"}),t)}},t)},t.IsMultibyte=function(t){return b({name:$n,validator:{validate:function(t,e){return ln(t)},defaultMessage:A((function(t){return t+"$property must contain one or more multibyte chars"}),t)}},t)},t.IsNegative=function(t){return b({name:xt,validator:{validate:function(t,e){return It(t)},defaultMessage:A((function(t){return t+"$property must be a negative number"}),t)}},t)},t.IsNotEmpty=function(t){return b({name:V,validator:{validate:function(t,e){return j(t)},defaultMessage:A((function(t){return t+"$property should not be empty"}),t)}},t)},t.IsNotEmptyObject=function(t,e){return b({name:Ri,constraints:[t],validator:{validate:function(t,e){return Li(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must be a non-empty object"}),e)}},e)},t.IsNotIn=function(t,e){return b({name:K,constraints:[t],validator:{validate:function(t,e){return W(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property should not be one of the following values: $constraint1"}),e)}},e)},t.IsNumber=function(t,e){return void 0===t&&(t={}),b({name:si,constraints:[t],validator:{validate:function(t,e){return $i(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must be a number conforming to the specified constraints"}),e)}},e)},t.IsNumberString=function(t,e){return b({name:Ia,constraints:[t],validator:{validate:function(t,e){return Ma(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must be a number string"}),e)}},e)},t.IsObject=function(t){return b({name:mi,validator:{validate:function(t,e){return Ai(t)},defaultMessage:A((function(t){return t+"$property must be an object"}),t)}},t)},t.IsOctal=function(t){return b({name:Co,validator:{validate:function(t,e){return Po(t)},defaultMessage:A((function(t){return t+"$property must be valid octal number"}),t)}},t)},t.IsOptional=function(t){return function(r,n){var d={type:u.CONDITIONAL_VALIDATION,target:r.constructor,propertyName:n,constraints:[function(t,e){return null!==t[n]&&void 0!==t[n]}],validationOptions:t};o().addValidationMetadata(new e(d))}},t.IsPassportNumber=function(t,e){return b({name:Lo,constraints:[t],validator:{validate:function(t,e){return wo(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must be valid passport number"}),e)}},e)},t.IsPhoneNumber=function(t,e){return b({name:da,constraints:[t],validator:{validate:function(t,e){return aa(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must be a valid phone number"}),e)}},e)},t.IsPort=function(t){return b({name:cr,validator:{validate:function(t,e){return pr(t)},defaultMessage:A((function(t){return t+"$property must be a port"}),t)}},t)},t.IsPositive=function(t){return b({name:bt,validator:{validate:function(t,e){return _t(t)},defaultMessage:A((function(t){return t+"$property must be a positive number"}),t)}},t)},t.IsPostalCode=function(t,e){return b({name:Ho,constraints:[t],validator:{validate:function(t,e){return ko(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must be a postal code"}),e)}},e)},t.IsRFC3339=function(t){return b({name:Yo,validator:{validate:function(t,e){return zo(t)},defaultMessage:A((function(t){return t+"$property must be RFC 3339 date"}),t)}},t)},t.IsRgbColor=function(t,e){return b({name:qo,constraints:[t],validator:{validate:function(t,e){return Qo(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must be RGB color"}),e)}},e)},t.IsSemVer=function(t){return b({name:ni,validator:{validate:function(t,e){return di(t)},defaultMessage:A((function(t){return t+"$property must be a Semantic Versioning Specification"}),t)}},t)},t.IsString=function(t){return b({name:vi,validator:{validate:function(t,e){return yi(t)},defaultMessage:A((function(t){return t+"$property must be a string"}),t)}},t)},t.IsSurrogatePair=function(t){return b({name:pn,validator:{validate:function(t,e){return vn(t)},defaultMessage:A((function(t){return t+"$property must contain any surrogate pairs chars"}),t)}},t)},t.IsUUID=function(t,e){return b({name:_n,constraints:[t],validator:{validate:function(t,e){return xn(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must be a UUID"}),e)}},e)},t.IsUppercase=function(t){return b({name:Nn,validator:{validate:function(t,e){return En(t)},defaultMessage:A((function(t){return t+"$property must be uppercase"}),t)}},t)},t.IsUrl=function(t,e){return b({name:hn,constraints:[t],validator:{validate:function(t,e){return mn(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must be an URL address"}),e)}},e)},t.IsVariableWidth=function(t){return b({name:We,validator:{validate:function(t,e){return Ye(t)},defaultMessage:A((function(t){return t+"$property must contain a full-width and half-width characters"}),t)}},t)},t.Length=function(t,e,r){return b({name:Tn,constraints:[t,e],validator:{validate:function(t,e){return Rn(t,e.constraints[0],e.constraints[1])},defaultMessage:A((function(t,e){var r=null!==e.constraints[0]&&void 0!==e.constraints[0],n=null!==e.constraints[1]&&void 0!==e.constraints[1];return r&&(!e.value||e.value.lengthe.constraints[1]?t+"$property must be shorter than or equal to $constraint2 characters":t+"$property must be longer than or equal to $constraint1 and shorter than or equal to $constraint2 characters"}),r)}},r)},t.MATCHES=Gn,t.MAX="max",t.MAX_DATE=Et,t.MAX_LENGTH=Ln,t.MIN="min",t.MIN_DATE=Ot,t.MIN_LENGTH=Fn,t.Matches=function(t,e,r){var n;return e&&e instanceof Object&&!r?r=e:n=e,b({name:Gn,constraints:[t,n],validator:{validate:function(t,e){return Un(t,e.constraints[0],e.constraints[1])},defaultMessage:A((function(t,e){return t+"$property must match $constraint1 regular expression"}),r)}},r)},t.Max=function(t,e){return b({name:"max",constraints:[t],validator:{validate:function(t,e){return Mt(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must not be greater than $constraint1"}),e)}},e)},t.MaxDate=function(t,e){return b({name:Et,constraints:[t],validator:{validate:function(t,e){return Ct(t,e.constraints[0])},defaultMessage:A((function(t){return"maximal allowed date for "+t+"$property is $constraint1"}),e)}},e)},t.MaxLength=function(t,e){return b({name:Ln,constraints:[t],validator:{validate:function(t,e){return wn(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must be shorter than or equal to $constraint1 characters"}),e)}},e)},t.MetadataStorage=a,t.Min=function(t,e){return b({name:"min",constraints:[t],validator:{validate:function(t,e){return St(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must not be less than $constraint1"}),e)}},e)},t.MinDate=function(t,e){return b({name:Ot,constraints:[t],validator:{validate:function(t,e){return Nt(t,e.constraints[0])},defaultMessage:A((function(t){return"minimal allowed date for "+t+"$property is $constraint1"}),e)}},e)},t.MinLength=function(t,e){return b({name:Fn,constraints:[t],validator:{validate:function(t,e){return Dn(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property must be longer than or equal to $constraint1 characters"}),e)}},e)},t.NOT_CONTAINS=Ft,t.NOT_EQUALS=Z,t.NotContains=function(t,e){return b({name:Ft,constraints:[t],validator:{validate:function(t,e){return Dt(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property should not contain a $constraint1 string"}),e)}},e)},t.NotEquals=function(t,e){return b({name:Z,constraints:[t],validator:{validate:function(t,e){return B(t,e.constraints[0])},defaultMessage:A((function(t){return t+"$property should not be equal to $constraint1"}),e)}},e)},t.Validate=function(t,r,n){return function(d,a){var i={type:u.CUSTOM_VALIDATION,target:d.constructor,propertyName:a,constraintCls:t,constraints:Array.isArray(r)?r:void 0,validationOptions:Array.isArray(r)?n:r};o().addValidationMetadata(new e(i))}},t.ValidateBy=b,t.ValidateIf=function(t,r){return function(n,d){var a={type:u.CONDITIONAL_VALIDATION,target:n.constructor,propertyName:d,constraints:[t],validationOptions:r};o().addValidationMetadata(new e(a))}},t.ValidateNested=function(t){var r=I({},t),n=r.each?"each value in ":"";return r.message=r.message||n+"nested property $property must be either object or array",function(t,n){var d={type:u.NESTED_VALIDATION,target:t.constructor,propertyName:n,validationOptions:r};o().addValidationMetadata(new e(d))}},t.ValidatePromise=function(t){return function(r,n){var d={type:u.PROMISE_VALIDATION,target:r.constructor,propertyName:n,validationOptions:t};o().addValidationMetadata(new e(d))}},t.ValidationError=i,t.ValidationTypes=u,t.Validator=v,t.ValidatorConstraint=function(t){return function(e){var r=t&&t.async,n=t&&t.name?t.name:"";n||(n=e.name)||(n=n.replace(/\.?([A-Z]+)/g,(function(t,e){return"_"+e.toLowerCase()})).replace(/^_/,""));var d=new h(e,n,r);o().addConstraintMetadata(d)}},t.arrayContains=_i,t.arrayMaxSize=Ci,t.arrayMinSize=Ni,t.arrayNotContains=Ii,t.arrayNotEmpty=Si,t.arrayUnique=Ti,t.buildMessage=A,t.contains=wt,t.equals=D,t.getFromContainer=g,t.getMetadataStorage=o,t.isAlpha=Ht,t.isAlphanumeric=Xt,t.isArray=hi,t.isAscii=oe,t.isBIC=Ra,t.isBase32=Ea,t.isBase64=$e,t.isBoolean=oi,t.isBooleanString=ba,t.isBtcAddress=Da,t.isByteLength=pe,t.isCreditCard=he,t.isCurrency=_e,t.isDataURI=Ua,t.isDate=ui,t.isDateString=ga,t.isDecimal=re,t.isDefined=x,t.isDivisibleBy=At,t.isEAN=ka,t.isEmail=Ce,t.isEmpty=U,t.isEnum=fi,t.isEthereumAddress=za,t.isFQDN=Te,t.isFirebasePushId=Mn,t.isFullWidth=Ze,t.isHSL=Qa,t.isHalfWidth=He,t.isHash=la,t.isHexColor=qe,t.isHexadecimal=rr,t.isIBAN=io,t.isIP=sr,t.isISBN=hr,t.isISIN=_r,t.isISO31661Alpha2=qr,t.isISO31661Alpha3=rn,t.isISO8601=Sr,t.isISRC=vo,t.isISSN=va,t.isIdentityCard=lo,t.isIn=k,t.isInstance=Fi,t.isInt=pi,t.isJSON=Cr,t.isJWT=Lr,t.isLatLong=P,t.isLatitude=R,t.isLocale=mo,t.isLongitude=w,t.isLowercase=Zr,t.isMACAddress=ir,t.isMagnetURI=xo,t.isMilitaryTime=ia,t.isMimeType=Oo,t.isMobilePhone=kr,t.isMongoId=on,t.isMultibyte=ln,t.isNegative=It,t.isNotEmpty=j,t.isNotEmptyObject=Li,t.isNotIn=W,t.isNumber=$i,t.isNumberString=Ma,t.isObject=Ai,t.isOctal=Po,t.isPassportNumber=wo,t.isPhoneNumber=aa,t.isPort=pr,t.isPositive=_t,t.isPostalCode=ko,t.isRFC3339=zo,t.isRgbColor=Qo,t.isSemVer=di,t.isString=yi,t.isSurrogatePair=vn,t.isURL=mn,t.isUUID=xn,t.isUppercase=En,t.isValidationOptions=nr,t.isVariableWidth=Ye,t.length=Rn,t.matches=Un,t.max=Mt,t.maxDate=Ct,t.maxLength=wn,t.min=St,t.minDate=Nt,t.minLength=Dn,t.notContains=Dt,t.notEquals=B,t.registerDecorator=m,t.registerSchema=function(t){o().addValidationSchema(t)},t.useContainer=function(t,e){s=t,$=e},t.validate=function(t,e,r){return"string"==typeof t?g(v).validate(t,e,r):g(v).validate(t,e)},t.validateOrReject=function(t,e,r){return"string"==typeof t?g(v).validateOrReject(t,e,r):g(v).validateOrReject(t,e)},t.validateSync=function(t,e,r){return"string"==typeof t?g(v).validateSync(t,e,r):g(v).validateSync(t,e)},Object.defineProperty(t,"__esModule",{value:!0})})); +//# sourceMappingURL=class-validator.umd.min.js.map diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/bundles/class-validator.umd.min.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/bundles/class-validator.umd.min.js.map new file mode 100644 index 00000000..92d20505 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/bundles/class-validator.umd.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"class-validator.umd.min.js","sources":["../esm5/metadata/ValidationMetadata.js","../esm5/validation-schema/ValidationSchemaToMetadataTransformer.js","../esm5/utils/get-global.util.js","../esm5/utils/is-promise.util.js","../esm5/metadata/MetadataStorage.js","../esm5/validation/ValidationError.js","../esm5/validation/ValidationTypes.js","../esm5/validation/ValidationUtils.js","../esm5/container.js","../esm5/validation/ValidationExecutor.js","../esm5/utils/convert-to-array.util.js","../esm5/validation/Validator.js","../esm5/metadata/ConstraintMetadata.js","../esm5/register-decorator.js","../esm5/decorator/common/ValidateBy.js","../esm5/decorator/common/IsDefined.js","../esm5/decorator/common/ValidateNested.js","../../node_modules/validator/lib/util/assertString.js","../../node_modules/validator/lib/util/merge.js","../../node_modules/validator/lib/isLatLong.js","../esm5/decorator/common/IsLatLong.js","../esm5/decorator/common/IsLatitude.js","../esm5/decorator/common/IsLongitude.js","../esm5/decorator/common/Equals.js","../esm5/decorator/common/NotEquals.js","../esm5/decorator/common/IsEmpty.js","../esm5/decorator/common/IsNotEmpty.js","../esm5/decorator/common/IsIn.js","../esm5/decorator/common/IsNotIn.js","../../node_modules/validator/lib/alpha.js","../../node_modules/validator/lib/isFloat.js","../../node_modules/validator/lib/toFloat.js","../../node_modules/validator/lib/isDivisibleBy.js","../esm5/decorator/number/IsDivisibleBy.js","../esm5/decorator/number/IsPositive.js","../esm5/decorator/number/IsNegative.js","../esm5/decorator/number/Max.js","../esm5/decorator/number/Min.js","../esm5/decorator/date/MinDate.js","../esm5/decorator/date/MaxDate.js","../../node_modules/validator/lib/util/toString.js","../../node_modules/validator/lib/contains.js","../esm5/decorator/string/Contains.js","../esm5/decorator/string/NotContains.js","../../node_modules/validator/lib/isAlpha.js","../esm5/decorator/string/IsAlpha.js","../../node_modules/validator/lib/isAlphanumeric.js","../esm5/decorator/string/IsAlphanumeric.js","../../node_modules/validator/lib/util/includes.js","../../node_modules/validator/lib/isDecimal.js","../esm5/decorator/string/IsDecimal.js","../../node_modules/validator/lib/isAscii.js","../esm5/decorator/string/IsAscii.js","../../node_modules/validator/lib/isBase64.js","../esm5/decorator/string/IsBase64.js","../../node_modules/validator/lib/isByteLength.js","../esm5/decorator/string/IsByteLength.js","../../node_modules/validator/lib/isCreditCard.js","../esm5/decorator/string/IsCreditCard.js","../../node_modules/validator/lib/isCurrency.js","../esm5/decorator/string/IsCurrency.js","../../node_modules/validator/lib/isFQDN.js","../../node_modules/validator/lib/isIP.js","../../node_modules/validator/lib/isEmail.js","../esm5/decorator/string/IsEmail.js","../esm5/decorator/string/IsFQDN.js","../../node_modules/validator/lib/isFullWidth.js","../esm5/decorator/string/IsFullWidth.js","../../node_modules/validator/lib/isHalfWidth.js","../esm5/decorator/string/IsHalfWidth.js","../../node_modules/validator/lib/isVariableWidth.js","../esm5/decorator/string/IsVariableWidth.js","../../node_modules/validator/lib/isHexColor.js","../esm5/decorator/string/IsHexColor.js","../../node_modules/validator/lib/isHexadecimal.js","../esm5/decorator/string/IsHexadecimal.js","../esm5/decorator/ValidationOptions.js","../../node_modules/validator/lib/isMACAddress.js","../esm5/decorator/string/IsMacAddress.js","../esm5/decorator/string/IsIP.js","../../node_modules/validator/lib/isInt.js","../../node_modules/validator/lib/isPort.js","../esm5/decorator/string/IsPort.js","../../node_modules/validator/lib/isISBN.js","../esm5/decorator/string/IsISBN.js","../../node_modules/validator/lib/isISIN.js","../esm5/decorator/string/IsISIN.js","../../node_modules/validator/lib/isISO8601.js","../esm5/decorator/string/IsISO8601.js","../../node_modules/validator/lib/isJSON.js","../esm5/decorator/string/IsJSON.js","../../node_modules/validator/lib/isJWT.js","../esm5/decorator/string/IsJWT.js","../../node_modules/validator/lib/isLowercase.js","../esm5/decorator/string/IsLowercase.js","../../node_modules/validator/lib/isMobilePhone.js","../esm5/decorator/string/IsMobilePhone.js","../../node_modules/validator/lib/isISO31661Alpha2.js","../esm5/decorator/string/IsISO31661Alpha2.js","../../node_modules/validator/lib/isISO31661Alpha3.js","../esm5/decorator/string/IsISO31661Alpha3.js","../../node_modules/validator/lib/isMongoId.js","../esm5/decorator/string/IsMongoId.js","../../node_modules/validator/lib/isMultibyte.js","../esm5/decorator/string/IsMultibyte.js","../../node_modules/validator/lib/isSurrogatePair.js","../esm5/decorator/string/IsSurrogatePair.js","../../node_modules/validator/lib/isURL.js","../esm5/decorator/string/IsUrl.js","../../node_modules/validator/lib/isUUID.js","../esm5/decorator/string/IsUUID.js","../esm5/decorator/string/IsFirebasePushId.js","../../node_modules/validator/lib/isUppercase.js","../esm5/decorator/string/IsUppercase.js","../../node_modules/validator/lib/isLength.js","../esm5/decorator/string/Length.js","../esm5/decorator/string/MaxLength.js","../esm5/decorator/string/MinLength.js","../../node_modules/validator/lib/matches.js","../esm5/decorator/string/Matches.js","../../node_modules/libphonenumber-js/metadata.min.json.js","../../node_modules/libphonenumber-js/min/metadata.js","../../node_modules/libphonenumber-js/es6/ParseError.js","../../node_modules/libphonenumber-js/es6/constants.js","../../node_modules/libphonenumber-js/es6/tools/semver-compare.js","../../node_modules/libphonenumber-js/es6/metadata.js","../../node_modules/libphonenumber-js/es6/helpers/extension/createExtensionPattern.js","../../node_modules/libphonenumber-js/es6/helpers/isViablePhoneNumber.js","../../node_modules/libphonenumber-js/es6/helpers/extension/extractExtension.js","../../node_modules/libphonenumber-js/es6/helpers/parseDigits.js","../../node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.js","../../node_modules/libphonenumber-js/es6/helpers/checkNumberLength.js","../../node_modules/libphonenumber-js/es6/helpers/mergeArrays.js","../../node_modules/libphonenumber-js/es6/isPossibleNumber_.js","../../node_modules/libphonenumber-js/es6/helpers/RFC3966.js","../../node_modules/libphonenumber-js/es6/helpers/matchesEntirely.js","../../node_modules/libphonenumber-js/es6/helpers/getNumberType.js","../../node_modules/libphonenumber-js/es6/helpers/formatNationalNumberUsingFormat.js","../../node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.js","../../node_modules/libphonenumber-js/es6/helpers/getIddPrefix.js","../../node_modules/libphonenumber-js/es6/format_.js","../../node_modules/libphonenumber-js/es6/PhoneNumber.js","../../node_modules/libphonenumber-js/es6/validate_.js","../../node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.js","../../node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.js","../../node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js","../../node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.js","../../node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js","../../node_modules/libphonenumber-js/es6/helpers/getCountryByCallingCode.js","../../node_modules/libphonenumber-js/es6/parse_.js","../../node_modules/libphonenumber-js/es6/parsePhoneNumber_.js","../../node_modules/libphonenumber-js/es6/parsePhoneNumber.js","../../node_modules/libphonenumber-js/es6/parsePhoneNumberFromString_.js","../../node_modules/libphonenumber-js/es6/parsePhoneNumberFromString.js","../esm5/decorator/string/IsPhoneNumber.js","../../node_modules/libphonenumber-js/min/exports/parsePhoneNumberFromString.js","../esm5/decorator/string/IsMilitaryTime.js","../../node_modules/validator/lib/isHash.js","../esm5/decorator/string/IsHash.js","../../node_modules/validator/lib/isISSN.js","../esm5/decorator/string/IsISSN.js","../esm5/decorator/string/IsDateString.js","../../node_modules/validator/lib/isBoolean.js","../esm5/decorator/string/IsBooleanString.js","../../node_modules/validator/lib/isNumeric.js","../esm5/decorator/string/IsNumberString.js","../../node_modules/validator/lib/isBase32.js","../esm5/decorator/string/IsBase32.js","../../node_modules/validator/lib/isBIC.js","../esm5/decorator/string/IsBIC.js","../../node_modules/validator/lib/isBtcAddress.js","../esm5/decorator/string/IsBtcAddress.js","../../node_modules/validator/lib/isDataURI.js","../esm5/decorator/string/IsDataURI.js","../../node_modules/validator/lib/isEAN.js","../esm5/decorator/string/IsEAN.js","../../node_modules/validator/lib/isEthereumAddress.js","../esm5/decorator/string/IsEthereumAddress.js","../../node_modules/validator/lib/isHSL.js","../esm5/decorator/string/IsHSL.js","../../node_modules/validator/lib/isIBAN.js","../esm5/decorator/string/IsIBAN.js","../../node_modules/validator/lib/isIdentityCard.js","../esm5/decorator/string/IsIdentityCard.js","../../node_modules/validator/lib/isISRC.js","../esm5/decorator/string/IsISRC.js","../../node_modules/validator/lib/isLocale.js","../esm5/decorator/string/IsLocale.js","../../node_modules/validator/lib/isMagnetURI.js","../esm5/decorator/string/IsMagnetURI.js","../../node_modules/validator/lib/isMimeType.js","../esm5/decorator/string/IsMimeType.js","../../node_modules/validator/lib/isOctal.js","../esm5/decorator/string/IsOctal.js","../../node_modules/validator/lib/isPassportNumber.js","../esm5/decorator/string/IsPassportNumber.js","../../node_modules/validator/lib/isPostalCode.js","../esm5/decorator/string/IsPostalCode.js","../../node_modules/validator/lib/isRFC3339.js","../esm5/decorator/string/IsRFC3339.js","../../node_modules/validator/lib/isRgbColor.js","../esm5/decorator/string/IsRgbColor.js","../../node_modules/validator/lib/util/multilineRegex.js","../../node_modules/validator/lib/isSemVer.js","../esm5/decorator/string/IsSemVer.js","../esm5/decorator/typechecker/IsBoolean.js","../esm5/decorator/typechecker/IsDate.js","../esm5/decorator/typechecker/IsNumber.js","../esm5/decorator/typechecker/IsEnum.js","../esm5/decorator/typechecker/IsInt.js","../esm5/decorator/typechecker/IsString.js","../esm5/decorator/typechecker/IsArray.js","../esm5/decorator/typechecker/IsObject.js","../esm5/decorator/array/ArrayContains.js","../esm5/decorator/array/ArrayNotContains.js","../esm5/decorator/array/ArrayNotEmpty.js","../esm5/decorator/array/ArrayMinSize.js","../esm5/decorator/array/ArrayMaxSize.js","../esm5/decorator/array/ArrayUnique.js","../esm5/decorator/object/IsNotEmptyObject.js","../esm5/decorator/object/IsInstance.js","../esm5/decorator/common/Allow.js","../esm5/decorator/common/IsOptional.js","../esm5/decorator/common/Validate.js","../esm5/decorator/common/ValidateIf.js","../esm5/decorator/common/ValidatePromise.js","../esm5/index.js"],"sourcesContent":["/**\n * This metadata contains validation rules.\n */\nvar ValidationMetadata = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function ValidationMetadata(args) {\n /**\n * Validation groups used for this validation.\n */\n this.groups = [];\n /**\n * Specifies if validated value is an array and each of its item must be validated.\n */\n this.each = false;\n /*\n * A transient set of data passed through to the validation result for response mapping\n */\n this.context = undefined;\n this.type = args.type;\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 return ValidationMetadata;\n}());\nexport { ValidationMetadata };\n//# sourceMappingURL=ValidationMetadata.js.map","import { ValidationMetadata } from '../metadata/ValidationMetadata';\n/**\n * Used to transform validation schemas to validation metadatas.\n */\nvar ValidationSchemaToMetadataTransformer = /** @class */ (function () {\n function ValidationSchemaToMetadataTransformer() {\n }\n ValidationSchemaToMetadataTransformer.prototype.transform = function (schema) {\n var metadatas = [];\n Object.keys(schema.properties).forEach(function (property) {\n schema.properties[property].forEach(function (validation) {\n var validationOptions = {\n message: validation.message,\n groups: validation.groups,\n always: validation.always,\n each: validation.each,\n };\n var args = {\n type: validation.type,\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 return ValidationSchemaToMetadataTransformer;\n}());\nexport { ValidationSchemaToMetadataTransformer };\n//# sourceMappingURL=ValidationSchemaToMetadataTransformer.js.map","/**\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 if (typeof global !== 'undefined') {\n return global;\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 // 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//# sourceMappingURL=get-global.util.js.map","// https://github.com/TylorS/typed-is-promise/blob/abf1514e1b6961adfc75765476b0debb96b2c3ae/src/index.ts\nexport function isPromise(p) {\n return p !== null && typeof p === 'object' && typeof p.then === 'function';\n}\n//# sourceMappingURL=is-promise.util.js.map","import { ValidationSchemaToMetadataTransformer } from '../validation-schema/ValidationSchemaToMetadataTransformer';\nimport { getGlobal } from '../utils';\n/**\n * Storage all metadatas.\n */\nvar MetadataStorage = /** @class */ (function () {\n function MetadataStorage() {\n // -------------------------------------------------------------------------\n // Private properties\n // -------------------------------------------------------------------------\n this.validationMetadatas = [];\n this.constraintMetadatas = [];\n }\n Object.defineProperty(MetadataStorage.prototype, \"hasValidationMetaData\", {\n get: function () {\n return !!this.validationMetadatas.length;\n },\n enumerable: false,\n configurable: true\n });\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Adds a new validation metadata.\n */\n MetadataStorage.prototype.addValidationSchema = function (schema) {\n var _this = this;\n var validationMetadatas = new ValidationSchemaToMetadataTransformer().transform(schema);\n validationMetadatas.forEach(function (validationMetadata) { return _this.addValidationMetadata(validationMetadata); });\n };\n /**\n * Adds a new validation metadata.\n */\n MetadataStorage.prototype.addValidationMetadata = function (metadata) {\n this.validationMetadatas.push(metadata);\n };\n /**\n * Adds a new constraint metadata.\n */\n MetadataStorage.prototype.addConstraintMetadata = function (metadata) {\n this.constraintMetadatas.push(metadata);\n };\n /**\n * Groups metadata by their property names.\n */\n MetadataStorage.prototype.groupByPropertyName = function (metadata) {\n var grouped = {};\n metadata.forEach(function (metadata) {\n if (!grouped[metadata.propertyName])\n grouped[metadata.propertyName] = [];\n grouped[metadata.propertyName].push(metadata);\n });\n return grouped;\n };\n /**\n * Gets all validation metadatas for the given object with the given groups.\n */\n MetadataStorage.prototype.getTargetValidationMetadatas = function (targetConstructor, targetSchema, always, strictGroups, groups) {\n var includeMetadataBecauseOfAlwaysOption = function (metadata) {\n // `metadata.always` overrides global default.\n if (typeof metadata.always !== 'undefined')\n return metadata.always;\n // `metadata.groups` overrides global default.\n if (metadata.groups && metadata.groups.length)\n return false;\n // Use global default.\n return always;\n };\n var excludeMetadataBecauseOfStrictGroupsOption = function (metadata) {\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)\n return true;\n }\n }\n return false;\n };\n // get directly related to a target metadatas\n var originalMetadatas = this.validationMetadatas.filter(function (metadata) {\n if (metadata.target !== targetConstructor && metadata.target !== targetSchema)\n return false;\n if (includeMetadataBecauseOfAlwaysOption(metadata))\n return true;\n if (excludeMetadataBecauseOfStrictGroupsOption(metadata))\n return false;\n if (groups && groups.length > 0)\n return metadata.groups && !!metadata.groups.find(function (group) { return groups.indexOf(group) !== -1; });\n return true;\n });\n // get metadatas for inherited classes\n var inheritedMetadatas = this.validationMetadatas.filter(function (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')\n return false;\n if (metadata.target === targetConstructor)\n return false;\n if (metadata.target instanceof Function && !(targetConstructor.prototype instanceof metadata.target))\n return false;\n if (includeMetadataBecauseOfAlwaysOption(metadata))\n return true;\n if (excludeMetadataBecauseOfStrictGroupsOption(metadata))\n return false;\n if (groups && groups.length > 0)\n return metadata.groups && !!metadata.groups.find(function (group) { return groups.indexOf(group) !== -1; });\n return true;\n });\n // filter out duplicate metadatas, prefer original metadatas instead of inherited metadatas\n var uniqueInheritedMetadatas = inheritedMetadatas.filter(function (inheritedMetadata) {\n return !originalMetadatas.find(function (originalMetadata) {\n return (originalMetadata.propertyName === inheritedMetadata.propertyName &&\n originalMetadata.type === inheritedMetadata.type);\n });\n });\n return originalMetadatas.concat(uniqueInheritedMetadatas);\n };\n /**\n * Gets all validator constraints for the given object.\n */\n MetadataStorage.prototype.getTargetValidatorConstraints = function (target) {\n return this.constraintMetadatas.filter(function (metadata) { return metadata.target === target; });\n };\n return MetadataStorage;\n}());\nexport { MetadataStorage };\n/**\n * Gets metadata storage.\n * Metadata storage follows the best practices and stores metadata in a global variable.\n */\nexport function getMetadataStorage() {\n var global = getGlobal();\n if (!global.classValidatorMetadataStorage) {\n global.classValidatorMetadataStorage = new MetadataStorage();\n }\n return global.classValidatorMetadataStorage;\n}\n//# sourceMappingURL=MetadataStorage.js.map","/**\n * Validation error description.\n */\nvar ValidationError = /** @class */ (function () {\n function ValidationError() {\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 */\n ValidationError.prototype.toString = function (shouldDecorate, hasParent, parentPath) {\n var _this = this;\n if (shouldDecorate === void 0) { shouldDecorate = false; }\n if (hasParent === void 0) { hasParent = false; }\n if (parentPath === void 0) { parentPath = \"\"; }\n var boldStart = shouldDecorate ? \"\\u001B[1m\" : \"\";\n var boldEnd = shouldDecorate ? \"\\u001B[22m\" : \"\";\n var propConstraintFailed = function (propertyName) {\n return \" - property \".concat(boldStart).concat(parentPath).concat(propertyName).concat(boldEnd, \" has failed the following constraints: \").concat(boldStart).concat(Object.keys(_this.constraints).join(\", \")).concat(boldEnd, \" \\n\");\n };\n if (!hasParent) {\n return (\"An instance of \".concat(boldStart).concat(this.target ? this.target.constructor.name : 'an object').concat(boldEnd, \" has failed the validation:\\n\") +\n (this.constraints ? propConstraintFailed(this.property) : \"\") +\n (this.children\n ? this.children.map(function (childError) { return childError.toString(shouldDecorate, true, _this.property); }).join(\"\")\n : \"\"));\n }\n else {\n // we format numbers as array indexes for better readability.\n var formattedProperty_1 = Number.isInteger(+this.property)\n ? \"[\".concat(this.property, \"]\")\n : \"\".concat(parentPath ? \".\" : \"\").concat(this.property);\n if (this.constraints) {\n return propConstraintFailed(formattedProperty_1);\n }\n else {\n return this.children\n ? this.children\n .map(function (childError) { return childError.toString(shouldDecorate, true, \"\".concat(parentPath).concat(formattedProperty_1)); })\n .join(\"\")\n : \"\";\n }\n }\n };\n return ValidationError;\n}());\nexport { ValidationError };\n//# sourceMappingURL=ValidationError.js.map","/**\n * Validation types.\n */\nvar ValidationTypes = /** @class */ (function () {\n function ValidationTypes() {\n }\n /**\n * Checks if validation type is valid.\n */\n ValidationTypes.isValid = function (type) {\n var _this = this;\n return (type !== 'isValid' &&\n type !== 'getMessage' &&\n Object.keys(this)\n .map(function (key) { return _this[key]; })\n .indexOf(type) !== -1);\n };\n /* system */\n ValidationTypes.CUSTOM_VALIDATION = 'customValidation'; // done\n ValidationTypes.NESTED_VALIDATION = 'nestedValidation'; // done\n ValidationTypes.PROMISE_VALIDATION = 'promiseValidation'; // done\n ValidationTypes.CONDITIONAL_VALIDATION = 'conditionalValidation'; // done\n ValidationTypes.WHITELIST = 'whitelistValidation'; // done\n ValidationTypes.IS_DEFINED = 'isDefined'; // done\n return ValidationTypes;\n}());\nexport { ValidationTypes };\n//# sourceMappingURL=ValidationTypes.js.map","/**\n * Convert the constraint to a string to be shown in an error\n */\nexport function constraintToString(constraint) {\n if (Array.isArray(constraint)) {\n return constraint.join(', ');\n }\n return \"\".concat(constraint);\n}\nvar ValidationUtils = /** @class */ (function () {\n function ValidationUtils() {\n }\n ValidationUtils.replaceMessageSpecialTokens = function (message, validationArguments) {\n var messageString;\n if (message instanceof Function) {\n messageString = message(validationArguments);\n }\n else if (typeof message === 'string') {\n messageString = message;\n }\n if (messageString && Array.isArray(validationArguments.constraints)) {\n validationArguments.constraints.forEach(function (constraint, index) {\n messageString = messageString.replace(new RegExp(\"\\\\$constraint\".concat(index + 1), 'g'), constraintToString(constraint));\n });\n }\n if (messageString &&\n validationArguments.value !== undefined &&\n validationArguments.value !== null &&\n typeof validationArguments.value === 'string')\n messageString = messageString.replace(/\\$value/g, validationArguments.value);\n if (messageString)\n messageString = messageString.replace(/\\$property/g, validationArguments.property);\n if (messageString)\n messageString = messageString.replace(/\\$target/g, validationArguments.targetName);\n return messageString;\n };\n return ValidationUtils;\n}());\nexport { ValidationUtils };\n//# sourceMappingURL=ValidationUtils.js.map","/**\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 */\nvar defaultContainer = new (/** @class */ (function () {\n function class_1() {\n this.instances = [];\n }\n class_1.prototype.get = function (someClass) {\n var instance = this.instances.find(function (instance) { return instance.type === someClass; });\n if (!instance) {\n instance = { type: someClass, object: new someClass() };\n this.instances.push(instance);\n }\n return instance.object;\n };\n return class_1;\n}()))();\nvar userContainer;\nvar userContainerOptions;\n/**\n * Sets container to be used by this library.\n */\nexport function useContainer(iocContainer, options) {\n userContainer = iocContainer;\n userContainerOptions = options;\n}\n/**\n * Gets the IOC container used by this library.\n */\nexport function getFromContainer(someClass) {\n if (userContainer) {\n try {\n var instance = userContainer.get(someClass);\n if (instance)\n return instance;\n if (!userContainerOptions || !userContainerOptions.fallback)\n return instance;\n }\n catch (error) {\n if (!userContainerOptions || !userContainerOptions.fallbackOnErrors)\n throw error;\n }\n }\n return defaultContainer.get(someClass);\n}\n//# sourceMappingURL=container.js.map","import { ValidationError } from './ValidationError';\nimport { ValidationTypes } from './ValidationTypes';\nimport { ValidationUtils } from './ValidationUtils';\nimport { isPromise, convertToArray } from '../utils';\nimport { getMetadataStorage } from '../metadata/MetadataStorage';\n/**\n * Executes validation over given object.\n */\nvar ValidationExecutor = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function ValidationExecutor(validator, validatorOptions) {\n this.validator = validator;\n this.validatorOptions = validatorOptions;\n // -------------------------------------------------------------------------\n // Properties\n // -------------------------------------------------------------------------\n this.awaitingPromises = [];\n this.ignoreAsyncValidations = false;\n // -------------------------------------------------------------------------\n // Private Properties\n // -------------------------------------------------------------------------\n this.metadataStorage = getMetadataStorage();\n }\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n ValidationExecutor.prototype.execute = function (object, targetSchema, validationErrors) {\n var _this = this;\n var _a;\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 && ((_a = this.validatorOptions) === null || _a === void 0 ? void 0 : _a.enableDebugMessages) === true) {\n console.warn(\"No metadata found. There is more than once class-validator version installed probably. You need to flatten your dependencies.\");\n }\n var groups = this.validatorOptions ? this.validatorOptions.groups : undefined;\n var strictGroups = (this.validatorOptions && this.validatorOptions.strictGroups) || false;\n var always = (this.validatorOptions && this.validatorOptions.always) || false;\n var targetMetadatas = this.metadataStorage.getTargetValidationMetadatas(object.constructor, targetSchema, always, strictGroups, groups);\n var groupedMetadatas = this.metadataStorage.groupByPropertyName(targetMetadatas);\n if (this.validatorOptions && this.validatorOptions.forbidUnknownValues && !targetMetadatas.length) {\n var validationError = new ValidationError();\n if (!this.validatorOptions ||\n !this.validatorOptions.validationError ||\n this.validatorOptions.validationError.target === undefined ||\n this.validatorOptions.validationError.target === true)\n validationError.target = object;\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 validationErrors.push(validationError);\n return;\n }\n if (this.validatorOptions && this.validatorOptions.whitelist)\n this.whitelist(object, groupedMetadatas, validationErrors);\n // General validation\n Object.keys(groupedMetadatas).forEach(function (propertyName) {\n var value = object[propertyName];\n var definedMetadatas = groupedMetadatas[propertyName].filter(function (metadata) { return metadata.type === ValidationTypes.IS_DEFINED; });\n var metadatas = groupedMetadatas[propertyName].filter(function (metadata) { return metadata.type !== ValidationTypes.IS_DEFINED && metadata.type !== ValidationTypes.WHITELIST; });\n if (value instanceof Promise &&\n metadatas.find(function (metadata) { return metadata.type === ValidationTypes.PROMISE_VALIDATION; })) {\n _this.awaitingPromises.push(value.then(function (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 ValidationExecutor.prototype.whitelist = function (object, groupedMetadatas, validationErrors) {\n var _this = this;\n var notAllowedProperties = [];\n Object.keys(object).forEach(function (propertyName) {\n // does this property have no metadata?\n if (!groupedMetadatas[propertyName] || groupedMetadatas[propertyName].length === 0)\n notAllowedProperties.push(propertyName);\n });\n if (notAllowedProperties.length > 0) {\n if (this.validatorOptions && this.validatorOptions.forbidNonWhitelisted) {\n // throw errors\n notAllowedProperties.forEach(function (property) {\n var _a;\n var validationError = _this.generateValidationError(object, object[property], property);\n validationError.constraints = (_a = {}, _a[ValidationTypes.WHITELIST] = \"property \".concat(property, \" should not exist\"), _a);\n validationError.children = undefined;\n validationErrors.push(validationError);\n });\n }\n else {\n // strip non allowed properties\n notAllowedProperties.forEach(function (property) { return delete object[property]; });\n }\n }\n };\n ValidationExecutor.prototype.stripEmptyErrors = function (errors) {\n var _this = this;\n return errors.filter(function (error) {\n if (error.children) {\n error.children = _this.stripEmptyErrors(error.children);\n }\n if (Object.keys(error.constraints).length === 0) {\n if (error.children.length === 0) {\n return false;\n }\n else {\n delete error.constraints;\n }\n }\n return true;\n });\n };\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n ValidationExecutor.prototype.performValidations = function (object, value, propertyName, definedMetadatas, metadatas, validationErrors) {\n var customValidationMetadatas = metadatas.filter(function (metadata) { return metadata.type === ValidationTypes.CUSTOM_VALIDATION; });\n var nestedValidationMetadatas = metadatas.filter(function (metadata) { return metadata.type === ValidationTypes.NESTED_VALIDATION; });\n var conditionalValidationMetadatas = metadatas.filter(function (metadata) { return metadata.type === ValidationTypes.CONDITIONAL_VALIDATION; });\n var validationError = this.generateValidationError(object, value, propertyName);\n validationErrors.push(validationError);\n var canValidate = this.conditionalValidations(object, value, conditionalValidationMetadatas);\n if (!canValidate) {\n return;\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 if (value === undefined && this.validatorOptions && this.validatorOptions.skipUndefinedProperties === true) {\n return;\n }\n if (value === null && this.validatorOptions && this.validatorOptions.skipNullProperties === true) {\n return;\n }\n if ((value === null || value === undefined) &&\n this.validatorOptions &&\n this.validatorOptions.skipMissingProperties === true) {\n return;\n }\n this.customValidations(object, value, customValidationMetadatas, validationError);\n this.nestedValidations(value, nestedValidationMetadatas, validationError.children);\n this.mapContexts(object, value, metadatas, validationError);\n this.mapContexts(object, value, customValidationMetadatas, validationError);\n };\n ValidationExecutor.prototype.generateValidationError = function (object, value, propertyName) {\n var validationError = new ValidationError();\n if (!this.validatorOptions ||\n !this.validatorOptions.validationError ||\n this.validatorOptions.validationError.target === undefined ||\n this.validatorOptions.validationError.target === true)\n validationError.target = object;\n if (!this.validatorOptions ||\n !this.validatorOptions.validationError ||\n this.validatorOptions.validationError.value === undefined ||\n this.validatorOptions.validationError.value === true)\n validationError.value = value;\n validationError.property = propertyName;\n validationError.children = [];\n validationError.constraints = {};\n return validationError;\n };\n ValidationExecutor.prototype.conditionalValidations = function (object, value, metadatas) {\n return metadatas\n .map(function (metadata) { return metadata.constraints[0](object, value); })\n .reduce(function (resultA, resultB) { return resultA && resultB; }, true);\n };\n ValidationExecutor.prototype.customValidations = function (object, value, metadatas, error) {\n var _this = this;\n metadatas.forEach(function (metadata) {\n _this.metadataStorage.getTargetValidatorConstraints(metadata.constraintCls).forEach(function (customConstraintMetadata) {\n if (customConstraintMetadata.async && _this.ignoreAsyncValidations)\n return;\n if (_this.validatorOptions &&\n _this.validatorOptions.stopAtFirstError &&\n Object.keys(error.constraints || {}).length > 0)\n return;\n var validationArguments = {\n targetName: object.constructor ? object.constructor.name : undefined,\n property: metadata.propertyName,\n object: object,\n value: value,\n constraints: metadata.constraints,\n };\n if (!metadata.each || !(Array.isArray(value) || value instanceof Set || value instanceof Map)) {\n var validatedValue = customConstraintMetadata.instance.validate(value, validationArguments);\n if (isPromise(validatedValue)) {\n var promise = validatedValue.then(function (isValid) {\n if (!isValid) {\n var _a = _this.createValidationError(object, value, metadata, customConstraintMetadata), type = _a[0], message = _a[1];\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 }\n else {\n if (!validatedValue) {\n var _a = _this.createValidationError(object, value, metadata, customConstraintMetadata), type = _a[0], message = _a[1];\n error.constraints[type] = message;\n }\n }\n return;\n }\n // convert set and map into array\n var arrayValue = convertToArray(value);\n // Validation needs to be applied to each array item\n var validatedSubValues = arrayValue.map(function (subValue) {\n return customConstraintMetadata.instance.validate(subValue, validationArguments);\n });\n var validationIsAsync = validatedSubValues.some(function (validatedSubValue) {\n return isPromise(validatedSubValue);\n });\n if (validationIsAsync) {\n // Wrap plain values (if any) in promises, so that all are async\n var asyncValidatedSubValues = validatedSubValues.map(function (validatedSubValue) {\n return isPromise(validatedSubValue) ? validatedSubValue : Promise.resolve(validatedSubValue);\n });\n var asyncValidationIsFinishedPromise = Promise.all(asyncValidatedSubValues).then(function (flatValidatedValues) {\n var validationResult = flatValidatedValues.every(function (isValid) { return isValid; });\n if (!validationResult) {\n var _a = _this.createValidationError(object, value, metadata, customConstraintMetadata), type = _a[0], message = _a[1];\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(asyncValidationIsFinishedPromise);\n return;\n }\n var validationResult = validatedSubValues.every(function (isValid) { return isValid; });\n if (!validationResult) {\n var _b = _this.createValidationError(object, value, metadata, customConstraintMetadata), type = _b[0], message = _b[1];\n error.constraints[type] = message;\n }\n });\n });\n };\n ValidationExecutor.prototype.nestedValidations = function (value, metadatas, errors) {\n var _this = this;\n if (value === void 0) {\n return;\n }\n metadatas.forEach(function (metadata) {\n var _a;\n if (metadata.type !== ValidationTypes.NESTED_VALIDATION && metadata.type !== ValidationTypes.PROMISE_VALIDATION) {\n return;\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 var arrayLikeValue = value instanceof Set ? Array.from(value) : value;\n arrayLikeValue.forEach(function (subValue, index) {\n _this.performValidations(value, subValue, index.toString(), [], metadatas, errors);\n });\n }\n else if (value instanceof Object) {\n var targetSchema = typeof metadata.target === 'string' ? metadata.target : metadata.target.name;\n _this.execute(value, targetSchema, errors);\n }\n else {\n var error = new ValidationError();\n error.value = value;\n error.property = metadata.propertyName;\n error.target = metadata.target;\n var _b = _this.createValidationError(metadata.target, value, metadata), type = _b[0], message = _b[1];\n error.constraints = (_a = {},\n _a[type] = message,\n _a);\n errors.push(error);\n }\n });\n };\n ValidationExecutor.prototype.mapContexts = function (object, value, metadatas, error) {\n var _this = this;\n return metadatas.forEach(function (metadata) {\n if (metadata.context) {\n var customConstraint = void 0;\n if (metadata.type === ValidationTypes.CUSTOM_VALIDATION) {\n var customConstraints = _this.metadataStorage.getTargetValidatorConstraints(metadata.constraintCls);\n customConstraint = customConstraints[0];\n }\n var type = _this.getConstraintType(metadata, customConstraint);\n if (error.constraints[type]) {\n if (!error.contexts) {\n error.contexts = {};\n }\n error.contexts[type] = Object.assign(error.contexts[type] || {}, metadata.context);\n }\n }\n });\n };\n ValidationExecutor.prototype.createValidationError = function (object, value, metadata, customValidatorMetadata) {\n var targetName = object.constructor ? object.constructor.name : undefined;\n var type = this.getConstraintType(metadata, customValidatorMetadata);\n var validationArguments = {\n targetName: targetName,\n property: metadata.propertyName,\n object: object,\n value: value,\n constraints: metadata.constraints,\n };\n var message = metadata.message || '';\n if (!metadata.message &&\n (!this.validatorOptions || (this.validatorOptions && !this.validatorOptions.dismissDefaultMessages))) {\n if (customValidatorMetadata && customValidatorMetadata.instance.defaultMessage instanceof Function) {\n message = customValidatorMetadata.instance.defaultMessage(validationArguments);\n }\n }\n var messageString = ValidationUtils.replaceMessageSpecialTokens(message, validationArguments);\n return [type, messageString];\n };\n ValidationExecutor.prototype.getConstraintType = function (metadata, customValidatorMetadata) {\n var type = customValidatorMetadata && customValidatorMetadata.name ? customValidatorMetadata.name : metadata.type;\n return type;\n };\n return ValidationExecutor;\n}());\nexport { ValidationExecutor };\n//# sourceMappingURL=ValidationExecutor.js.map","/**\n * Convert Map, Set to Array\n */\nexport function convertToArray(val) {\n if (val instanceof Map) {\n return Array.from(val.values());\n }\n return Array.isArray(val) ? val : Array.from(val);\n}\n//# sourceMappingURL=convert-to-array.util.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { ValidationExecutor } from './ValidationExecutor';\n/**\n * Validator performs validation of the given object based on its metadata.\n */\nvar Validator = /** @class */ (function () {\n function Validator() {\n }\n /**\n * Performs validation of the given object based on decorators or validation schema.\n */\n Validator.prototype.validate = function (objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions) {\n return this.coreValidate(objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions);\n };\n /**\n * Performs validation of the given object based on decorators or validation schema and reject on error.\n */\n Validator.prototype.validateOrReject = function (objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions) {\n return __awaiter(this, void 0, void 0, function () {\n var errors;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.coreValidate(objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions)];\n case 1:\n errors = _a.sent();\n if (errors.length)\n return [2 /*return*/, Promise.reject(errors)];\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Performs validation of the given object based on decorators or validation schema.\n */\n Validator.prototype.validateSync = function (objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions) {\n var object = typeof objectOrSchemaName === 'string' ? objectOrValidationOptions : objectOrSchemaName;\n var options = typeof objectOrSchemaName === 'string' ? maybeValidatorOptions : objectOrValidationOptions;\n var schema = typeof objectOrSchemaName === 'string' ? objectOrSchemaName : undefined;\n var executor = new ValidationExecutor(this, options);\n executor.ignoreAsyncValidations = true;\n var validationErrors = [];\n executor.execute(object, schema, validationErrors);\n return executor.stripEmptyErrors(validationErrors);\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 Validator.prototype.coreValidate = function (objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions) {\n var object = typeof objectOrSchemaName === 'string' ? objectOrValidationOptions : objectOrSchemaName;\n var options = typeof objectOrSchemaName === 'string' ? maybeValidatorOptions : objectOrValidationOptions;\n var schema = typeof objectOrSchemaName === 'string' ? objectOrSchemaName : undefined;\n var executor = new ValidationExecutor(this, options);\n var validationErrors = [];\n executor.execute(object, schema, validationErrors);\n return Promise.all(executor.awaitingPromises).then(function () {\n return executor.stripEmptyErrors(validationErrors);\n });\n };\n return Validator;\n}());\nexport { Validator };\n//# sourceMappingURL=Validator.js.map","import { getFromContainer } from '../container';\n/**\n * This metadata interface contains information for custom validators.\n */\nvar ConstraintMetadata = /** @class */ (function () {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n function ConstraintMetadata(target, name, async) {\n if (async === void 0) { async = false; }\n this.target = target;\n this.name = name;\n this.async = async;\n }\n Object.defineProperty(ConstraintMetadata.prototype, \"instance\", {\n // -------------------------------------------------------------------------\n // Accessors\n // -------------------------------------------------------------------------\n /**\n * Instance of the target custom validation class which performs validation.\n */\n get: function () {\n return getFromContainer(this.target);\n },\n enumerable: false,\n configurable: true\n });\n return ConstraintMetadata;\n}());\nexport { ConstraintMetadata };\n//# sourceMappingURL=ConstraintMetadata.js.map","import { ConstraintMetadata } from './metadata/ConstraintMetadata';\nimport { ValidationMetadata } from './metadata/ValidationMetadata';\nimport { ValidationTypes } from './validation/ValidationTypes';\nimport { getFromContainer } from './container';\nimport { MetadataStorage, getMetadataStorage } from './metadata/MetadataStorage';\n/**\n * Registers a custom validation decorator.\n */\nexport function registerDecorator(options) {\n var constraintCls;\n if (options.validator instanceof Function) {\n constraintCls = options.validator;\n var constraintClasses = getFromContainer(MetadataStorage).getTargetValidatorConstraints(options.validator);\n if (constraintClasses.length > 1) {\n throw \"More than one implementation of ValidatorConstraintInterface found for validator on: \".concat(options.target.name, \":\").concat(options.propertyName);\n }\n }\n else {\n var validator_1 = options.validator;\n constraintCls = /** @class */ (function () {\n function CustomConstraint() {\n }\n CustomConstraint.prototype.validate = function (value, validationArguments) {\n return validator_1.validate(value, validationArguments);\n };\n CustomConstraint.prototype.defaultMessage = function (validationArguments) {\n if (validator_1.defaultMessage) {\n return validator_1.defaultMessage(validationArguments);\n }\n return '';\n };\n return CustomConstraint;\n }());\n getMetadataStorage().addConstraintMetadata(new ConstraintMetadata(constraintCls, options.name, options.async));\n }\n var validationMetadataArgs = {\n type: options.name && ValidationTypes.isValid(options.name) ? options.name : ValidationTypes.CUSTOM_VALIDATION,\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//# sourceMappingURL=register-decorator.js.map","import { registerDecorator } from '../../register-decorator';\nexport function buildMessage(impl, validationOptions) {\n return function (validationArguments) {\n var eachPrefix = validationOptions && validationOptions.each ? 'each value in ' : '';\n return impl(eachPrefix, validationArguments);\n };\n}\nexport function ValidateBy(options, validationOptions) {\n return function (object, propertyName) {\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//# sourceMappingURL=ValidateBy.js.map","import { buildMessage, ValidateBy } from './ValidateBy';\nimport { ValidationTypes } from '../../validation/ValidationTypes';\n// isDefined is (yet) a special case\nexport var IS_DEFINED = ValidationTypes.IS_DEFINED;\n/**\n * Checks if value is defined (!== undefined, !== null).\n */\nexport function isDefined(value) {\n return value !== undefined && value !== null;\n}\n/**\n * Checks if value is defined (!== undefined, !== null).\n */\nexport function IsDefined(validationOptions) {\n return ValidateBy({\n name: IS_DEFINED,\n validator: {\n validate: function (value) { return isDefined(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not be null or undefined'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsDefined.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { ValidationTypes } from '../../validation/ValidationTypes';\nimport { ValidationMetadata } from '../../metadata/ValidationMetadata';\nimport { getMetadataStorage } from '../../metadata/MetadataStorage';\n/**\n * Objects / object arrays marked with this decorator will also be validated.\n */\nexport function ValidateNested(validationOptions) {\n var opts = __assign({}, validationOptions);\n var eachPrefix = opts.each ? 'each value in ' : '';\n opts.message = opts.message || eachPrefix + 'nested property $property must be either object or array';\n return function (object, propertyName) {\n var args = {\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//# sourceMappingURL=ValidateNested.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = assertString;\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction assertString(input) {\n var isString = typeof input === 'string' || input instanceof String;\n\n if (!isString) {\n var invalidType = _typeof(input);\n\n if (input === null) invalidType = 'null';else if (invalidType === 'object') invalidType = input.constructor.name;\n throw new TypeError(\"Expected a string but received a \".concat(invalidType));\n }\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = merge;\n\nfunction merge() {\n var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var defaults = arguments.length > 1 ? arguments[1] : undefined;\n\n for (var key in defaults) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = defaults[key];\n }\n }\n\n return obj;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isLatLong;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar lat = /^\\(?[+-]?(90(\\.0+)?|[1-8]?\\d(\\.\\d+)?)$/;\nvar long = /^\\s?[+-]?(180(\\.0+)?|1[0-7]\\d(\\.\\d+)?|\\d{1,2}(\\.\\d+)?)\\)?$/;\nvar latDMS = /^(([1-8]?\\d)\\D+([1-5]?\\d|60)\\D+([1-5]?\\d|60)(\\.\\d+)?|90\\D+0\\D+0)\\D+[NSns]?$/i;\nvar longDMS = /^\\s*([1-7]?\\d{1,2}\\D+([1-5]?\\d|60)\\D+([1-5]?\\d|60)(\\.\\d+)?|180\\D+0\\D+0)\\D+[EWew]?$/i;\nvar defaultLatLongOptions = {\n checkDMS: false\n};\n\nfunction isLatLong(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, defaultLatLongOptions);\n if (!str.includes(',')) return false;\n var pair = str.split(',');\n if (pair[0].startsWith('(') && !pair[1].endsWith(')') || pair[1].endsWith(')') && !pair[0].startsWith('(')) return false;\n\n if (options.checkDMS) {\n return latDMS.test(pair[0]) && longDMS.test(pair[1]);\n }\n\n return lat.test(pair[0]) && long.test(pair[1]);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from './ValidateBy';\nimport isLatLongValidator from 'validator/lib/isLatLong';\nexport var IS_LATLONG = 'isLatLong';\n/**\n * Checks if a value is string in format a \"latitude,longitude\".\n */\nexport function isLatLong(value) {\n return typeof value === 'string' && isLatLongValidator(value);\n}\n/**\n * Checks if a value is string in format a \"latitude,longitude\".\n */\nexport function IsLatLong(validationOptions) {\n return ValidateBy({\n name: IS_LATLONG,\n validator: {\n validate: function (value, args) { return isLatLong(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a latitude,longitude string'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsLatLong.js.map","import { buildMessage, ValidateBy } from './ValidateBy';\nimport { isLatLong } from './IsLatLong';\nexport var IS_LATITUDE = 'isLatitude';\n/**\n * Checks if a given value is a latitude.\n */\nexport function isLatitude(value) {\n return (typeof value === 'number' || typeof value === 'string') && isLatLong(\"\".concat(value, \",0\"));\n}\n/**\n * Checks if a given value is a latitude.\n */\nexport function IsLatitude(validationOptions) {\n return ValidateBy({\n name: IS_LATITUDE,\n validator: {\n validate: function (value, args) { return isLatitude(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a latitude string or number'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsLatitude.js.map","import { buildMessage, ValidateBy } from './ValidateBy';\nimport { isLatLong } from './IsLatLong';\nexport var IS_LONGITUDE = 'isLongitude';\n/**\n * Checks if a given value is a longitude.\n */\nexport function isLongitude(value) {\n return (typeof value === 'number' || typeof value === 'string') && isLatLong(\"0,\".concat(value));\n}\n/**\n * Checks if a given value is a longitude.\n */\nexport function IsLongitude(validationOptions) {\n return ValidateBy({\n name: IS_LONGITUDE,\n validator: {\n validate: function (value, args) { return isLongitude(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a longitude string or number'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsLongitude.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var EQUALS = 'equals';\n/**\n * Checks if value matches (\"===\") the comparison.\n */\nexport function equals(value, comparison) {\n return value === comparison;\n}\n/**\n * Checks if value matches (\"===\") the comparison.\n */\nexport function Equals(comparison, validationOptions) {\n return ValidateBy({\n name: EQUALS,\n constraints: [comparison],\n validator: {\n validate: function (value, args) { return equals(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be equal to $constraint1'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=Equals.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var NOT_EQUALS = 'notEquals';\n/**\n * Checks if value does not match (\"!==\") the comparison.\n */\nexport function notEquals(value, comparison) {\n return value !== comparison;\n}\n/**\n * Checks if value does not match (\"!==\") the comparison.\n */\nexport function NotEquals(comparison, validationOptions) {\n return ValidateBy({\n name: NOT_EQUALS,\n constraints: [comparison],\n validator: {\n validate: function (value, args) { return notEquals(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not be equal to $constraint1'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=NotEquals.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_EMPTY = 'isEmpty';\n/**\n * Checks if given value is empty (=== '', === null, === undefined).\n */\nexport function isEmpty(value) {\n return value === '' || value === null || value === undefined;\n}\n/**\n * Checks if given value is empty (=== '', === null, === undefined).\n */\nexport function IsEmpty(validationOptions) {\n return ValidateBy({\n name: IS_EMPTY,\n validator: {\n validate: function (value, args) { return isEmpty(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be empty'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsEmpty.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_NOT_EMPTY = 'isNotEmpty';\n/**\n * Checks if given value is not empty (!== '', !== null, !== undefined).\n */\nexport function isNotEmpty(value) {\n return value !== '' && value !== null && value !== undefined;\n}\n/**\n * Checks if given value is not empty (!== '', !== null, !== undefined).\n */\nexport function IsNotEmpty(validationOptions) {\n return ValidateBy({\n name: IS_NOT_EMPTY,\n validator: {\n validate: function (value, args) { return isNotEmpty(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not be empty'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsNotEmpty.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_IN = 'isIn';\n/**\n * Checks if given value is in a array of allowed values.\n */\nexport function isIn(value, possibleValues) {\n return !Array.isArray(possibleValues) || possibleValues.some(function (possibleValue) { return possibleValue === value; });\n}\n/**\n * Checks if given value is in a array of allowed values.\n */\nexport function IsIn(values, validationOptions) {\n return ValidateBy({\n name: IS_IN,\n constraints: [values],\n validator: {\n validate: function (value, args) { return isIn(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be one of the following values: $constraint1'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsIn.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_NOT_IN = 'isNotIn';\n/**\n * Checks if given value not in a array of allowed values.\n */\nexport function isNotIn(value, possibleValues) {\n return !Array.isArray(possibleValues) || !possibleValues.some(function (possibleValue) { return possibleValue === value; });\n}\n/**\n * Checks if given value not in a array of allowed values.\n */\nexport function IsNotIn(values, validationOptions) {\n return ValidateBy({\n name: IS_NOT_IN,\n constraints: [values],\n validator: {\n validate: function (value, args) { return isNotIn(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not be one of the following values: $constraint1'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsNotIn.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.commaDecimal = exports.dotDecimal = exports.farsiLocales = exports.arabicLocales = exports.englishLocales = exports.decimal = exports.alphanumeric = exports.alpha = void 0;\nvar alpha = {\n 'en-US': /^[A-Z]+$/i,\n 'az-AZ': /^[A-VXYZÇƏĞİıÖŞÜ]+$/i,\n 'bg-BG': /^[А-Я]+$/i,\n 'cs-CZ': /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i,\n 'da-DK': /^[A-ZÆØÅ]+$/i,\n 'de-DE': /^[A-ZÄÖÜß]+$/i,\n 'el-GR': /^[Α-ώ]+$/i,\n 'es-ES': /^[A-ZÁÉÍÑÓÚÜ]+$/i,\n 'fa-IR': /^[ابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهی]+$/i,\n 'fi-FI': /^[A-ZÅÄÖ]+$/i,\n 'fr-FR': /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i,\n 'it-IT': /^[A-ZÀÉÈÌÎÓÒÙ]+$/i,\n 'nb-NO': /^[A-ZÆØÅ]+$/i,\n 'nl-NL': /^[A-ZÁÉËÏÓÖÜÚ]+$/i,\n 'nn-NO': /^[A-ZÆØÅ]+$/i,\n 'hu-HU': /^[A-ZÁÉÍÓÖŐÚÜŰ]+$/i,\n 'pl-PL': /^[A-ZĄĆĘŚŁŃÓŻŹ]+$/i,\n 'pt-PT': /^[A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i,\n 'ru-RU': /^[А-ЯЁ]+$/i,\n 'sl-SI': /^[A-ZČĆĐŠŽ]+$/i,\n 'sk-SK': /^[A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i,\n 'sr-RS@latin': /^[A-ZČĆŽŠĐ]+$/i,\n 'sr-RS': /^[А-ЯЂЈЉЊЋЏ]+$/i,\n 'sv-SE': /^[A-ZÅÄÖ]+$/i,\n 'th-TH': /^[ก-๐\\s]+$/i,\n 'tr-TR': /^[A-ZÇĞİıÖŞÜ]+$/i,\n 'uk-UA': /^[А-ЩЬЮЯЄIЇҐі]+$/i,\n 'vi-VN': /^[A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i,\n 'ku-IQ': /^[ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i,\n ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/,\n he: /^[א-ת]+$/,\n fa: /^['آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی']+$/i,\n 'hi-IN': /^[\\u0900-\\u0961]+[\\u0972-\\u097F]*$/i\n};\nexports.alpha = alpha;\nvar alphanumeric = {\n 'en-US': /^[0-9A-Z]+$/i,\n 'az-AZ': /^[0-9A-VXYZÇƏĞİıÖŞÜ]+$/i,\n 'bg-BG': /^[0-9А-Я]+$/i,\n 'cs-CZ': /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i,\n 'da-DK': /^[0-9A-ZÆØÅ]+$/i,\n 'de-DE': /^[0-9A-ZÄÖÜß]+$/i,\n 'el-GR': /^[0-9Α-ω]+$/i,\n 'es-ES': /^[0-9A-ZÁÉÍÑÓÚÜ]+$/i,\n 'fi-FI': /^[0-9A-ZÅÄÖ]+$/i,\n 'fr-FR': /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i,\n 'it-IT': /^[0-9A-ZÀÉÈÌÎÓÒÙ]+$/i,\n 'hu-HU': /^[0-9A-ZÁÉÍÓÖŐÚÜŰ]+$/i,\n 'nb-NO': /^[0-9A-ZÆØÅ]+$/i,\n 'nl-NL': /^[0-9A-ZÁÉËÏÓÖÜÚ]+$/i,\n 'nn-NO': /^[0-9A-ZÆØÅ]+$/i,\n 'pl-PL': /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]+$/i,\n 'pt-PT': /^[0-9A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i,\n 'ru-RU': /^[0-9А-ЯЁ]+$/i,\n 'sl-SI': /^[0-9A-ZČĆĐŠŽ]+$/i,\n 'sk-SK': /^[0-9A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i,\n 'sr-RS@latin': /^[0-9A-ZČĆŽŠĐ]+$/i,\n 'sr-RS': /^[0-9А-ЯЂЈЉЊЋЏ]+$/i,\n 'sv-SE': /^[0-9A-ZÅÄÖ]+$/i,\n 'th-TH': /^[ก-๙\\s]+$/i,\n 'tr-TR': /^[0-9A-ZÇĞİıÖŞÜ]+$/i,\n 'uk-UA': /^[0-9А-ЩЬЮЯЄIЇҐі]+$/i,\n 'ku-IQ': /^[٠١٢٣٤٥٦٧٨٩0-9ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i,\n 'vi-VN': /^[0-9A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i,\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/,\n he: /^[0-9א-ת]+$/,\n fa: /^['0-9آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی۱۲۳۴۵۶۷۸۹۰']+$/i,\n 'hi-IN': /^[\\u0900-\\u0963]+[\\u0966-\\u097F]*$/i\n};\nexports.alphanumeric = alphanumeric;\nvar decimal = {\n 'en-US': '.',\n ar: '٫'\n};\nexports.decimal = decimal;\nvar englishLocales = ['AU', 'GB', 'HK', 'IN', 'NZ', 'ZA', 'ZM'];\nexports.englishLocales = englishLocales;\n\nfor (var locale, i = 0; i < englishLocales.length; i++) {\n locale = \"en-\".concat(englishLocales[i]);\n alpha[locale] = alpha['en-US'];\n alphanumeric[locale] = alphanumeric['en-US'];\n decimal[locale] = decimal['en-US'];\n} // Source: http://www.localeplanet.com/java/\n\n\nvar arabicLocales = ['AE', 'BH', 'DZ', 'EG', 'IQ', 'JO', 'KW', 'LB', 'LY', 'MA', 'QM', 'QA', 'SA', 'SD', 'SY', 'TN', 'YE'];\nexports.arabicLocales = arabicLocales;\n\nfor (var _locale, _i = 0; _i < arabicLocales.length; _i++) {\n _locale = \"ar-\".concat(arabicLocales[_i]);\n alpha[_locale] = alpha.ar;\n alphanumeric[_locale] = alphanumeric.ar;\n decimal[_locale] = decimal.ar;\n}\n\nvar farsiLocales = ['IR', 'AF'];\nexports.farsiLocales = farsiLocales;\n\nfor (var _locale2, _i2 = 0; _i2 < farsiLocales.length; _i2++) {\n _locale2 = \"fa-\".concat(farsiLocales[_i2]);\n alphanumeric[_locale2] = alphanumeric.fa;\n decimal[_locale2] = decimal.ar;\n} // Source: https://en.wikipedia.org/wiki/Decimal_mark\n\n\nvar dotDecimal = ['ar-EG', 'ar-LB', 'ar-LY'];\nexports.dotDecimal = dotDecimal;\nvar commaDecimal = ['bg-BG', 'cs-CZ', 'da-DK', 'de-DE', 'el-GR', 'en-ZM', 'es-ES', 'fr-CA', 'fr-FR', 'id-ID', 'it-IT', 'ku-IQ', 'hi-IN', 'hu-HU', 'nb-NO', 'nn-NO', 'nl-NL', 'pl-PL', 'pt-PT', 'ru-RU', 'sl-SI', 'sr-RS@latin', 'sr-RS', 'sv-SE', 'tr-TR', 'uk-UA', 'vi-VN'];\nexports.commaDecimal = commaDecimal;\n\nfor (var _i3 = 0; _i3 < dotDecimal.length; _i3++) {\n decimal[dotDecimal[_i3]] = decimal['en-US'];\n}\n\nfor (var _i4 = 0; _i4 < commaDecimal.length; _i4++) {\n decimal[commaDecimal[_i4]] = ',';\n}\n\nalpha['fr-CA'] = alpha['fr-FR'];\nalphanumeric['fr-CA'] = alphanumeric['fr-FR'];\nalpha['pt-BR'] = alpha['pt-PT'];\nalphanumeric['pt-BR'] = alphanumeric['pt-PT'];\ndecimal['pt-BR'] = decimal['pt-PT']; // see #862\n\nalpha['pl-Pl'] = alpha['pl-PL'];\nalphanumeric['pl-Pl'] = alphanumeric['pl-PL'];\ndecimal['pl-Pl'] = decimal['pl-PL']; // see #1455\n\nalpha['fa-AF'] = alpha.fa;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isFloat;\nexports.locales = void 0;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _alpha = require(\"./alpha\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isFloat(str, options) {\n (0, _assertString.default)(str);\n options = options || {};\n var float = new RegExp(\"^(?:[-+])?(?:[0-9]+)?(?:\\\\\".concat(options.locale ? _alpha.decimal[options.locale] : '.', \"[0-9]*)?(?:[eE][\\\\+\\\\-]?(?:[0-9]+))?$\"));\n\n if (str === '' || str === '.' || str === '-' || str === '+') {\n return false;\n }\n\n var value = parseFloat(str.replace(',', '.'));\n return float.test(str) && (!options.hasOwnProperty('min') || value >= options.min) && (!options.hasOwnProperty('max') || value <= options.max) && (!options.hasOwnProperty('lt') || value < options.lt) && (!options.hasOwnProperty('gt') || value > options.gt);\n}\n\nvar locales = Object.keys(_alpha.decimal);\nexports.locales = locales;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toFloat;\n\nvar _isFloat = _interopRequireDefault(require(\"./isFloat\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction toFloat(str) {\n if (!(0, _isFloat.default)(str)) return NaN;\n return parseFloat(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isDivisibleBy;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _toFloat = _interopRequireDefault(require(\"./toFloat\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isDivisibleBy(str, num) {\n (0, _assertString.default)(str);\n return (0, _toFloat.default)(str) % parseInt(num, 10) === 0;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isDivisibleByValidator from 'validator/lib/isDivisibleBy';\nexport var IS_DIVISIBLE_BY = 'isDivisibleBy';\n/**\n * Checks if value is a number that's divisible by another.\n */\nexport function isDivisibleBy(value, num) {\n return typeof value === 'number' && typeof num === 'number' && isDivisibleByValidator(String(value), num);\n}\n/**\n * Checks if value is a number that's divisible by another.\n */\nexport function IsDivisibleBy(num, validationOptions) {\n return ValidateBy({\n name: IS_DIVISIBLE_BY,\n constraints: [num],\n validator: {\n validate: function (value, args) { return isDivisibleBy(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be divisible by $constraint1'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsDivisibleBy.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_POSITIVE = 'isPositive';\n/**\n * Checks if the value is a positive number greater than zero.\n */\nexport function isPositive(value) {\n return typeof value === 'number' && value > 0;\n}\n/**\n * Checks if the value is a positive number greater than zero.\n */\nexport function IsPositive(validationOptions) {\n return ValidateBy({\n name: IS_POSITIVE,\n validator: {\n validate: function (value, args) { return isPositive(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a positive number'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsPositive.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_NEGATIVE = 'isNegative';\n/**\n * Checks if the value is a negative number smaller than zero.\n */\nexport function isNegative(value) {\n return typeof value === 'number' && value < 0;\n}\n/**\n * Checks if the value is a negative number smaller than zero.\n */\nexport function IsNegative(validationOptions) {\n return ValidateBy({\n name: IS_NEGATIVE,\n validator: {\n validate: function (value, args) { return isNegative(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a negative number'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsNegative.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var MAX = 'max';\n/**\n * Checks if the first number is less than or equal to the second.\n */\nexport function max(num, max) {\n return typeof num === 'number' && typeof max === 'number' && num <= max;\n}\n/**\n * Checks if the first number is less than or equal to the second.\n */\nexport function Max(maxValue, validationOptions) {\n return ValidateBy({\n name: MAX,\n constraints: [maxValue],\n validator: {\n validate: function (value, args) { return max(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must not be greater than $constraint1'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=Max.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var MIN = 'min';\n/**\n * Checks if the first number is greater than or equal to the second.\n */\nexport function min(num, min) {\n return typeof num === 'number' && typeof min === 'number' && num >= min;\n}\n/**\n * Checks if the first number is greater than or equal to the second.\n */\nexport function Min(minValue, validationOptions) {\n return ValidateBy({\n name: MIN,\n constraints: [minValue],\n validator: {\n validate: function (value, args) { return min(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must not be less than $constraint1'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=Min.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var MIN_DATE = 'minDate';\n/**\n * Checks if the value is a date that's after the specified date.\n */\nexport function minDate(date, minDate) {\n return date instanceof Date && date.getTime() >= minDate.getTime();\n}\n/**\n * Checks if the value is a date that's after the specified date.\n */\nexport function MinDate(date, validationOptions) {\n return ValidateBy({\n name: MIN_DATE,\n constraints: [date],\n validator: {\n validate: function (value, args) { return minDate(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return 'minimal allowed date for ' + eachPrefix + '$property is $constraint1'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=MinDate.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var MAX_DATE = 'maxDate';\n/**\n * Checks if the value is a date that's before the specified date.\n */\nexport function maxDate(date, maxDate) {\n return date instanceof Date && date.getTime() <= maxDate.getTime();\n}\n/**\n * Checks if the value is a date that's after the specified date.\n */\nexport function MaxDate(date, validationOptions) {\n return ValidateBy({\n name: MAX_DATE,\n constraints: [date],\n validator: {\n validate: function (value, args) { return maxDate(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return 'maximal allowed date for ' + eachPrefix + '$property is $constraint1'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=MaxDate.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toString;\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction toString(input) {\n if (_typeof(input) === 'object' && input !== null) {\n if (typeof input.toString === 'function') {\n input = input.toString();\n } else {\n input = '[object Object]';\n }\n } else if (input === null || typeof input === 'undefined' || isNaN(input) && !input.length) {\n input = '';\n }\n\n return String(input);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = contains;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _toString = _interopRequireDefault(require(\"./util/toString\"));\n\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar defaulContainsOptions = {\n ignoreCase: false,\n minOccurrences: 1\n};\n\nfunction contains(str, elem, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, defaulContainsOptions);\n\n if (options.ignoreCase) {\n return str.toLowerCase().split((0, _toString.default)(elem).toLowerCase()).length > options.minOccurrences;\n }\n\n return str.split((0, _toString.default)(elem)).length > options.minOccurrences;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport containsValidator from 'validator/lib/contains';\nexport var CONTAINS = 'contains';\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, seed) {\n return typeof value === 'string' && containsValidator(value, seed);\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, validationOptions) {\n return ValidateBy({\n name: CONTAINS,\n constraints: [seed],\n validator: {\n validate: function (value, args) { return contains(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain a $constraint1 string'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=Contains.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport containsValidator from 'validator/lib/contains';\nexport var NOT_CONTAINS = 'notContains';\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, seed) {\n return typeof value === 'string' && !containsValidator(value, seed);\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, validationOptions) {\n return ValidateBy({\n name: NOT_CONTAINS,\n constraints: [seed],\n validator: {\n validate: function (value, args) { return notContains(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not contain a $constraint1 string'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=NotContains.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isAlpha;\nexports.locales = void 0;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _alpha = require(\"./alpha\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isAlpha(_str) {\n var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US';\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n (0, _assertString.default)(_str);\n var str = _str;\n var ignore = options.ignore;\n\n if (ignore) {\n if (ignore instanceof RegExp) {\n str = str.replace(ignore, '');\n } else if (typeof ignore === 'string') {\n str = str.replace(new RegExp(\"[\".concat(ignore.replace(/[-[\\]{}()*+?.,\\\\^$|#\\\\s]/g, '\\\\$&'), \"]\"), 'g'), ''); // escape regex for ignore\n } else {\n throw new Error('ignore should be instance of a String or RegExp');\n }\n }\n\n if (locale in _alpha.alpha) {\n return _alpha.alpha[locale].test(str);\n }\n\n throw new Error(\"Invalid locale '\".concat(locale, \"'\"));\n}\n\nvar locales = Object.keys(_alpha.alpha);\nexports.locales = locales;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isAlphaValidator from 'validator/lib/isAlpha';\nexport var IS_ALPHA = 'isAlpha';\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, locale) {\n return typeof value === 'string' && isAlphaValidator(value, locale);\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, validationOptions) {\n return ValidateBy({\n name: IS_ALPHA,\n constraints: [locale],\n validator: {\n validate: function (value, args) { return isAlpha(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain only letters (a-zA-Z)'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsAlpha.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isAlphanumeric;\nexports.locales = void 0;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _alpha = require(\"./alpha\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isAlphanumeric(_str) {\n var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US';\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n (0, _assertString.default)(_str);\n var str = _str;\n var ignore = options.ignore;\n\n if (ignore) {\n if (ignore instanceof RegExp) {\n str = str.replace(ignore, '');\n } else if (typeof ignore === 'string') {\n str = str.replace(new RegExp(\"[\".concat(ignore.replace(/[-[\\]{}()*+?.,\\\\^$|#\\\\s]/g, '\\\\$&'), \"]\"), 'g'), ''); // escape regex for ignore\n } else {\n throw new Error('ignore should be instance of a String or RegExp');\n }\n }\n\n if (locale in _alpha.alphanumeric) {\n return _alpha.alphanumeric[locale].test(str);\n }\n\n throw new Error(\"Invalid locale '\".concat(locale, \"'\"));\n}\n\nvar locales = Object.keys(_alpha.alphanumeric);\nexports.locales = locales;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isAlphanumericValidator from 'validator/lib/isAlphanumeric';\nexport var IS_ALPHANUMERIC = 'isAlphanumeric';\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, locale) {\n return typeof value === 'string' && isAlphanumericValidator(value, locale);\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(locale, validationOptions) {\n return ValidateBy({\n name: IS_ALPHANUMERIC,\n constraints: [locale],\n validator: {\n validate: function (value, args) { return isAlphanumeric(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain only letters and numbers'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsAlphanumeric.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar includes = function includes(arr, val) {\n return arr.some(function (arrVal) {\n return val === arrVal;\n });\n};\n\nvar _default = includes;\nexports.default = _default;\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isDecimal;\n\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _includes = _interopRequireDefault(require(\"./util/includes\"));\n\nvar _alpha = require(\"./alpha\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction decimalRegExp(options) {\n var regExp = new RegExp(\"^[-+]?([0-9]+)?(\\\\\".concat(_alpha.decimal[options.locale], \"[0-9]{\").concat(options.decimal_digits, \"})\").concat(options.force_decimal ? '' : '?', \"$\"));\n return regExp;\n}\n\nvar default_decimal_options = {\n force_decimal: false,\n decimal_digits: '1,',\n locale: 'en-US'\n};\nvar blacklist = ['', '-', '+'];\n\nfunction isDecimal(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_decimal_options);\n\n if (options.locale in _alpha.decimal) {\n return !(0, _includes.default)(blacklist, str.replace(/ /g, '')) && decimalRegExp(options).test(str);\n }\n\n throw new Error(\"Invalid locale '\".concat(options.locale, \"'\"));\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isDecimalValidator from 'validator/lib/isDecimal';\nexport var IS_DECIMAL = 'isDecimal';\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, options) {\n return typeof value === 'string' && isDecimalValidator(value, options);\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 IsDecimal(options, validationOptions) {\n return ValidateBy({\n name: IS_DECIMAL,\n constraints: [options],\n validator: {\n validate: function (value, args) { return isDecimal(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property is not a valid decimal number.'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsDecimal.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isAscii;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint-disable no-control-regex */\nvar ascii = /^[\\x00-\\x7F]+$/;\n/* eslint-enable no-control-regex */\n\nfunction isAscii(str) {\n (0, _assertString.default)(str);\n return ascii.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isAsciiValidator from 'validator/lib/isAscii';\nexport var IS_ASCII = 'isAscii';\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) {\n return typeof value === 'string' && isAsciiValidator(value);\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) {\n return ValidateBy({\n name: IS_ASCII,\n validator: {\n validate: function (value, args) { return isAscii(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain only ASCII characters'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsAscii.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBase64;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar notBase64 = /[^A-Z0-9+\\/=]/i;\nvar urlSafeBase64 = /^[A-Z0-9_\\-]*$/i;\nvar defaultBase64Options = {\n urlSafe: false\n};\n\nfunction isBase64(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, defaultBase64Options);\n var len = str.length;\n\n if (options.urlSafe) {\n return urlSafeBase64.test(str);\n }\n\n if (len % 4 !== 0 || notBase64.test(str)) {\n return false;\n }\n\n var firstPaddingChar = str.indexOf('=');\n return firstPaddingChar === -1 || firstPaddingChar === len - 1 || firstPaddingChar === len - 2 && str[len - 1] === '=';\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isBase64Validator from 'validator/lib/isBase64';\nexport var IS_BASE64 = 'isBase64';\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(value) {\n return typeof value === 'string' && isBase64Validator(value);\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(validationOptions) {\n return ValidateBy({\n name: IS_BASE64,\n validator: {\n validate: function (value, args) { return isBase64(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be base64 encoded'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsBase64.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isByteLength;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-disable prefer-rest-params */\nfunction isByteLength(str, options) {\n (0, _assertString.default)(str);\n var min;\n var max;\n\n if (_typeof(options) === 'object') {\n min = options.min || 0;\n max = options.max;\n } else {\n // backwards compatibility: isByteLength(str, min [, max])\n min = arguments[1];\n max = arguments[2];\n }\n\n var len = encodeURI(str).split(/%..|./).length - 1;\n return len >= min && (typeof max === 'undefined' || len <= max);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isByteLengthValidator from 'validator/lib/isByteLength';\nexport var IS_BYTE_LENGTH = 'isByteLength';\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, min, max) {\n return typeof value === 'string' && isByteLengthValidator(value, { min: min, max: max });\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, max, validationOptions) {\n return ValidateBy({\n name: IS_BYTE_LENGTH,\n constraints: [min, max],\n validator: {\n validate: function (value, args) { return isByteLength(value, args.constraints[0], args.constraints[1]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + \"$property's byte length must fall into ($constraint1, $constraint2) range\"; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsByteLength.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isCreditCard;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint-disable max-len */\nvar creditCard = /^(?:4[0-9]{12}(?:[0-9]{3,6})?|5[1-5][0-9]{14}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12,15}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11}|6[27][0-9]{14}|^(81[0-9]{14,17}))$/;\n/* eslint-enable max-len */\n\nfunction isCreditCard(str) {\n (0, _assertString.default)(str);\n var sanitized = str.replace(/[- ]+/g, '');\n\n if (!creditCard.test(sanitized)) {\n return false;\n }\n\n var sum = 0;\n var digit;\n var tmpNum;\n var shouldDouble;\n\n for (var i = sanitized.length - 1; i >= 0; i--) {\n digit = sanitized.substring(i, i + 1);\n tmpNum = parseInt(digit, 10);\n\n if (shouldDouble) {\n tmpNum *= 2;\n\n if (tmpNum >= 10) {\n sum += tmpNum % 10 + 1;\n } else {\n sum += tmpNum;\n }\n } else {\n sum += tmpNum;\n }\n\n shouldDouble = !shouldDouble;\n }\n\n return !!(sum % 10 === 0 ? sanitized : false);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isCreditCardValidator from 'validator/lib/isCreditCard';\nexport var IS_CREDIT_CARD = 'isCreditCard';\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) {\n return typeof value === 'string' && isCreditCardValidator(value);\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) {\n return ValidateBy({\n name: IS_CREDIT_CARD,\n validator: {\n validate: function (value, args) { return isCreditCard(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a credit card'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsCreditCard.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isCurrency;\n\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction currencyRegex(options) {\n var decimal_digits = \"\\\\d{\".concat(options.digits_after_decimal[0], \"}\");\n options.digits_after_decimal.forEach(function (digit, index) {\n if (index !== 0) decimal_digits = \"\".concat(decimal_digits, \"|\\\\d{\").concat(digit, \"}\");\n });\n var symbol = \"(\".concat(options.symbol.replace(/\\W/, function (m) {\n return \"\\\\\".concat(m);\n }), \")\").concat(options.require_symbol ? '' : '?'),\n negative = '-?',\n whole_dollar_amount_without_sep = '[1-9]\\\\d*',\n whole_dollar_amount_with_sep = \"[1-9]\\\\d{0,2}(\\\\\".concat(options.thousands_separator, \"\\\\d{3})*\"),\n valid_whole_dollar_amounts = ['0', whole_dollar_amount_without_sep, whole_dollar_amount_with_sep],\n whole_dollar_amount = \"(\".concat(valid_whole_dollar_amounts.join('|'), \")?\"),\n decimal_amount = \"(\\\\\".concat(options.decimal_separator, \"(\").concat(decimal_digits, \"))\").concat(options.require_decimal ? '' : '?');\n var pattern = whole_dollar_amount + (options.allow_decimal || options.require_decimal ? decimal_amount : ''); // default is negative sign before symbol, but there are two other options (besides parens)\n\n if (options.allow_negatives && !options.parens_for_negatives) {\n if (options.negative_sign_after_digits) {\n pattern += negative;\n } else if (options.negative_sign_before_digits) {\n pattern = negative + pattern;\n }\n } // South African Rand, for example, uses R 123 (space) and R-123 (no space)\n\n\n if (options.allow_negative_sign_placeholder) {\n pattern = \"( (?!\\\\-))?\".concat(pattern);\n } else if (options.allow_space_after_symbol) {\n pattern = \" ?\".concat(pattern);\n } else if (options.allow_space_after_digits) {\n pattern += '( (?!$))?';\n }\n\n if (options.symbol_after_digits) {\n pattern += symbol;\n } else {\n pattern = symbol + pattern;\n }\n\n if (options.allow_negatives) {\n if (options.parens_for_negatives) {\n pattern = \"(\\\\(\".concat(pattern, \"\\\\)|\").concat(pattern, \")\");\n } else if (!(options.negative_sign_before_digits || options.negative_sign_after_digits)) {\n pattern = negative + pattern;\n }\n } // ensure there's a dollar and/or decimal amount, and that\n // it doesn't start with a space or a negative sign followed by a space\n\n\n return new RegExp(\"^(?!-? )(?=.*\\\\d)\".concat(pattern, \"$\"));\n}\n\nvar default_currency_options = {\n symbol: '$',\n require_symbol: false,\n allow_space_after_symbol: false,\n symbol_after_digits: false,\n allow_negatives: true,\n parens_for_negatives: false,\n negative_sign_before_digits: false,\n negative_sign_after_digits: false,\n allow_negative_sign_placeholder: false,\n thousands_separator: ',',\n decimal_separator: '.',\n allow_decimal: true,\n require_decimal: false,\n digits_after_decimal: [2],\n allow_space_after_digits: false\n};\n\nfunction isCurrency(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_currency_options);\n return currencyRegex(options).test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isCurrencyValidator from 'validator/lib/isCurrency';\nexport var IS_CURRENCY = 'isCurrency';\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, options) {\n return typeof value === 'string' && isCurrencyValidator(value, options);\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(options, validationOptions) {\n return ValidateBy({\n name: IS_CURRENCY,\n constraints: [options],\n validator: {\n validate: function (value, args) { return isCurrency(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a currency'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsCurrency.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isFQDN;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar default_fqdn_options = {\n require_tld: true,\n allow_underscores: false,\n allow_trailing_dot: false,\n allow_numeric_tld: false,\n allow_wildcard: false\n};\n\nfunction isFQDN(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_fqdn_options);\n /* Remove the optional trailing dot before checking validity */\n\n if (options.allow_trailing_dot && str[str.length - 1] === '.') {\n str = str.substring(0, str.length - 1);\n }\n /* Remove the optional wildcard before checking validity */\n\n\n if (options.allow_wildcard === true && str.indexOf('*.') === 0) {\n str = str.substring(2);\n }\n\n var parts = str.split('.');\n var tld = parts[parts.length - 1];\n\n if (options.require_tld) {\n // disallow fqdns without tld\n if (parts.length < 2) {\n return false;\n }\n\n if (!/^([a-z\\u00A1-\\u00A8\\u00AA-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{2,}|xn[a-z0-9-]{2,})$/i.test(tld)) {\n return false;\n } // disallow spaces\n\n\n if (/\\s/.test(tld)) {\n return false;\n }\n } // reject numeric TLDs\n\n\n if (!options.allow_numeric_tld && /^\\d+$/.test(tld)) {\n return false;\n }\n\n return parts.every(function (part) {\n if (part.length > 63) {\n return false;\n }\n\n if (!/^[a-z_\\u00a1-\\uffff0-9-]+$/i.test(part)) {\n return false;\n } // disallow full-width chars\n\n\n if (/[\\uff01-\\uff5e]/.test(part)) {\n return false;\n } // disallow parts starting or ending with hyphen\n\n\n if (/^-|-$/.test(part)) {\n return false;\n }\n\n if (!options.allow_underscores && /_/.test(part)) {\n return false;\n }\n\n return true;\n });\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isIP;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n11.3. Examples\n\n The following addresses\n\n fe80::1234 (on the 1st link of the node)\n ff02::5678 (on the 5th link of the node)\n ff08::9abc (on the 10th organization of the node)\n\n would be represented as follows:\n\n fe80::1234%1\n ff02::5678%5\n ff08::9abc%10\n\n (Here we assume a natural translation from a zone index to the\n part, where the Nth zone of any scope is translated into\n \"N\".)\n\n If we use interface names as , those addresses could also be\n represented as follows:\n\n fe80::1234%ne0\n ff02::5678%pvc1.3\n ff08::9abc%interface10\n\n where the interface \"ne0\" belongs to the 1st link, \"pvc1.3\" belongs\n to the 5th link, and \"interface10\" belongs to the 10th organization.\n * * */\nvar IPv4SegmentFormat = '(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';\nvar IPv4AddressFormat = \"(\".concat(IPv4SegmentFormat, \"[.]){3}\").concat(IPv4SegmentFormat);\nvar IPv4AddressRegExp = new RegExp(\"^\".concat(IPv4AddressFormat, \"$\"));\nvar IPv6SegmentFormat = '(?:[0-9a-fA-F]{1,4})';\nvar IPv6AddressRegExp = new RegExp('^(' + \"(?:\".concat(IPv6SegmentFormat, \":){7}(?:\").concat(IPv6SegmentFormat, \"|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){6}(?:\").concat(IPv4AddressFormat, \"|:\").concat(IPv6SegmentFormat, \"|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){5}(?::\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,2}|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){4}(?:(:\").concat(IPv6SegmentFormat, \"){0,1}:\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,3}|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){3}(?:(:\").concat(IPv6SegmentFormat, \"){0,2}:\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,4}|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){2}(?:(:\").concat(IPv6SegmentFormat, \"){0,3}:\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,5}|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){1}(?:(:\").concat(IPv6SegmentFormat, \"){0,4}:\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,6}|:)|\") + \"(?::((?::\".concat(IPv6SegmentFormat, \"){0,5}:\").concat(IPv4AddressFormat, \"|(?::\").concat(IPv6SegmentFormat, \"){1,7}|:))\") + ')(%[0-9a-zA-Z-.:]{1,})?$');\n\nfunction isIP(str) {\n var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n (0, _assertString.default)(str);\n version = String(version);\n\n if (!version) {\n return isIP(str, 4) || isIP(str, 6);\n }\n\n if (version === '4') {\n if (!IPv4AddressRegExp.test(str)) {\n return false;\n }\n\n var parts = str.split('.').sort(function (a, b) {\n return a - b;\n });\n return parts[3] <= 255;\n }\n\n if (version === '6') {\n return !!IPv6AddressRegExp.test(str);\n }\n\n return false;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isEmail;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\n\nvar _isByteLength = _interopRequireDefault(require(\"./isByteLength\"));\n\nvar _isFQDN = _interopRequireDefault(require(\"./isFQDN\"));\n\nvar _isIP = _interopRequireDefault(require(\"./isIP\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar default_email_options = {\n allow_display_name: false,\n require_display_name: false,\n allow_utf8_local_part: true,\n require_tld: true,\n blacklisted_chars: '',\n ignore_max_length: false,\n host_blacklist: []\n};\n/* eslint-disable max-len */\n\n/* eslint-disable no-control-regex */\n\nvar splitNameAddress = /^([^\\x00-\\x1F\\x7F-\\x9F\\cX]+)]/.test(display_name_without_quotes);\n\n if (contains_illegal) {\n // if contains illegal characters,\n // must to be enclosed in double-quotes, otherwise it's not a valid display name\n if (display_name_without_quotes === display_name) {\n return false;\n } // the quotes in display name must start with character symbol \\\n\n\n var all_start_with_back_slash = display_name_without_quotes.split('\"').length === display_name_without_quotes.split('\\\\\"').length;\n\n if (!all_start_with_back_slash) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isEmail(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_email_options);\n\n if (options.require_display_name || options.allow_display_name) {\n var display_email = str.match(splitNameAddress);\n\n if (display_email) {\n var display_name = display_email[1]; // Remove display name and angle brackets to get email address\n // Can be done in the regex but will introduce a ReDOS (See #1597 for more info)\n\n str = str.replace(display_name, '').replace(/(^<|>$)/g, ''); // sometimes need to trim the last space to get the display name\n // because there may be a space between display name and email address\n // eg. myname \n // the display name is `myname` instead of `myname `, so need to trim the last space\n\n if (display_name.endsWith(' ')) {\n display_name = display_name.substr(0, display_name.length - 1);\n }\n\n if (!validateDisplayName(display_name)) {\n return false;\n }\n } else if (options.require_display_name) {\n return false;\n }\n }\n\n if (!options.ignore_max_length && str.length > defaultMaxEmailLength) {\n return false;\n }\n\n var parts = str.split('@');\n var domain = parts.pop();\n var lower_domain = domain.toLowerCase();\n\n if (options.host_blacklist.includes(lower_domain)) {\n return false;\n }\n\n var user = parts.join('@');\n\n if (options.domain_specific_validation && (lower_domain === 'gmail.com' || lower_domain === 'googlemail.com')) {\n /*\n Previously we removed dots for gmail addresses before validating.\n This was removed because it allows `multiple..dots@gmail.com`\n to be reported as valid, but it is not.\n Gmail only normalizes single dots, removing them from here is pointless,\n should be done in normalizeEmail\n */\n user = user.toLowerCase(); // Removing sub-address from username before gmail validation\n\n var username = user.split('+')[0]; // Dots are not included in gmail length restriction\n\n if (!(0, _isByteLength.default)(username.replace(/\\./g, ''), {\n min: 6,\n max: 30\n })) {\n return false;\n }\n\n var _user_parts = username.split('.');\n\n for (var i = 0; i < _user_parts.length; i++) {\n if (!gmailUserPart.test(_user_parts[i])) {\n return false;\n }\n }\n }\n\n if (options.ignore_max_length === false && (!(0, _isByteLength.default)(user, {\n max: 64\n }) || !(0, _isByteLength.default)(domain, {\n max: 254\n }))) {\n return false;\n }\n\n if (!(0, _isFQDN.default)(domain, {\n require_tld: options.require_tld\n })) {\n if (!options.allow_ip_domain) {\n return false;\n }\n\n if (!(0, _isIP.default)(domain)) {\n if (!domain.startsWith('[') || !domain.endsWith(']')) {\n return false;\n }\n\n var noBracketdomain = domain.substr(1, domain.length - 2);\n\n if (noBracketdomain.length === 0 || !(0, _isIP.default)(noBracketdomain)) {\n return false;\n }\n }\n }\n\n if (user[0] === '\"') {\n user = user.slice(1, user.length - 1);\n return options.allow_utf8_local_part ? quotedEmailUserUtf8.test(user) : quotedEmailUser.test(user);\n }\n\n var pattern = options.allow_utf8_local_part ? emailUserUtf8Part : emailUserPart;\n var user_parts = user.split('.');\n\n for (var _i = 0; _i < user_parts.length; _i++) {\n if (!pattern.test(user_parts[_i])) {\n return false;\n }\n }\n\n if (options.blacklisted_chars) {\n if (user.search(new RegExp(\"[\".concat(options.blacklisted_chars, \"]+\"), 'g')) !== -1) return false;\n }\n\n return true;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isEmailValidator from 'validator/lib/isEmail';\nexport var IS_EMAIL = 'isEmail';\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(value, options) {\n return typeof value === 'string' && isEmailValidator(value, options);\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(options, validationOptions) {\n return ValidateBy({\n name: IS_EMAIL,\n constraints: [options],\n validator: {\n validate: function (value, args) { return isEmail(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an email'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsEmail.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isFqdnValidator from 'validator/lib/isFQDN';\nexport var IS_FQDN = 'isFqdn';\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, options) {\n return typeof value === 'string' && isFqdnValidator(value, options);\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, validationOptions) {\n return ValidateBy({\n name: IS_FQDN,\n constraints: [options],\n validator: {\n validate: function (value, args) { return isFQDN(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid domain name'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsFQDN.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isFullWidth;\nexports.fullWidth = void 0;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar fullWidth = /[^\\u0020-\\u007E\\uFF61-\\uFF9F\\uFFA0-\\uFFDC\\uFFE8-\\uFFEE0-9a-zA-Z]/;\nexports.fullWidth = fullWidth;\n\nfunction isFullWidth(str) {\n (0, _assertString.default)(str);\n return fullWidth.test(str);\n}","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isFullWidthValidator from 'validator/lib/isFullWidth';\nexport var IS_FULL_WIDTH = 'isFullWidth';\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) {\n return typeof value === 'string' && isFullWidthValidator(value);\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) {\n return ValidateBy({\n name: IS_FULL_WIDTH,\n validator: {\n validate: function (value, args) { return isFullWidth(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain a full-width characters'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsFullWidth.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isHalfWidth;\nexports.halfWidth = void 0;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar halfWidth = /[\\u0020-\\u007E\\uFF61-\\uFF9F\\uFFA0-\\uFFDC\\uFFE8-\\uFFEE0-9a-zA-Z]/;\nexports.halfWidth = halfWidth;\n\nfunction isHalfWidth(str) {\n (0, _assertString.default)(str);\n return halfWidth.test(str);\n}","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isHalfWidthValidator from 'validator/lib/isHalfWidth';\nexport var IS_HALF_WIDTH = 'isHalfWidth';\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) {\n return typeof value === 'string' && isHalfWidthValidator(value);\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 IsHalfWidth(validationOptions) {\n return ValidateBy({\n name: IS_HALF_WIDTH,\n validator: {\n validate: function (value, args) { return isHalfWidth(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain a half-width characters'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsHalfWidth.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isVariableWidth;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _isFullWidth = require(\"./isFullWidth\");\n\nvar _isHalfWidth = require(\"./isHalfWidth\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isVariableWidth(str) {\n (0, _assertString.default)(str);\n return _isFullWidth.fullWidth.test(str) && _isHalfWidth.halfWidth.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isVariableWidthValidator from 'validator/lib/isVariableWidth';\nexport var IS_VARIABLE_WIDTH = 'isVariableWidth';\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) {\n return typeof value === 'string' && isVariableWidthValidator(value);\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) {\n return ValidateBy({\n name: IS_VARIABLE_WIDTH,\n validator: {\n validate: function (value, args) { return isVariableWidth(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain a full-width and half-width characters'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsVariableWidth.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isHexColor;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar hexcolor = /^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$/i;\n\nfunction isHexColor(str) {\n (0, _assertString.default)(str);\n return hexcolor.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isHexColorValidator from 'validator/lib/isHexColor';\nexport var IS_HEX_COLOR = 'isHexColor';\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) {\n return typeof value === 'string' && isHexColorValidator(value);\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) {\n return ValidateBy({\n name: IS_HEX_COLOR,\n validator: {\n validate: function (value, args) { return isHexColor(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a hexadecimal color'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsHexColor.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isHexadecimal;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar hexadecimal = /^(0x|0h)?[0-9A-F]+$/i;\n\nfunction isHexadecimal(str) {\n (0, _assertString.default)(str);\n return hexadecimal.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isHexadecimalValidator from 'validator/lib/isHexadecimal';\nexport var IS_HEXADECIMAL = 'isHexadecimal';\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) {\n return typeof value === 'string' && isHexadecimalValidator(value);\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) {\n return ValidateBy({\n name: IS_HEXADECIMAL,\n validator: {\n validate: function (value, args) { return isHexadecimal(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a hexadecimal number'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsHexadecimal.js.map","export function isValidationOptions(val) {\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//# sourceMappingURL=ValidationOptions.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMACAddress;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar macAddress = /^(?:[0-9a-fA-F]{2}([-:\\s]))([0-9a-fA-F]{2}\\1){4}([0-9a-fA-F]{2})$/;\nvar macAddressNoSeparators = /^([0-9a-fA-F]){12}$/;\nvar macAddressWithDots = /^([0-9a-fA-F]{4}\\.){2}([0-9a-fA-F]{4})$/;\n\nfunction isMACAddress(str, options) {\n (0, _assertString.default)(str);\n /**\n * @deprecated `no_colons` TODO: remove it in the next major\n */\n\n if (options && (options.no_colons || options.no_separators)) {\n return macAddressNoSeparators.test(str);\n }\n\n return macAddress.test(str) || macAddressWithDots.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { isValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isMacAddressValidator from 'validator/lib/isMACAddress';\nexport var IS_MAC_ADDRESS = 'isMacAddress';\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, options) {\n return typeof value === 'string' && isMacAddressValidator(value, options);\n}\nexport function IsMACAddress(optionsOrValidationOptionsArg, validationOptionsArg) {\n var options = !isValidationOptions(optionsOrValidationOptionsArg) ? optionsOrValidationOptionsArg : undefined;\n var validationOptions = isValidationOptions(optionsOrValidationOptionsArg)\n ? optionsOrValidationOptionsArg\n : validationOptionsArg;\n return ValidateBy({\n name: IS_MAC_ADDRESS,\n constraints: [options],\n validator: {\n validate: function (value, args) { return isMACAddress(value, options); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a MAC Address'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsMacAddress.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isIPValidator from 'validator/lib/isIP';\nexport var IS_IP = 'isIp';\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, version) {\n /* eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion */\n var versionStr = version ? \"\".concat(version) : undefined;\n return typeof value === 'string' && isIPValidator(value, versionStr);\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, validationOptions) {\n return ValidateBy({\n name: IS_IP,\n constraints: [version],\n validator: {\n validate: function (value, args) { return isIP(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an ip address'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsIP.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isInt;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar int = /^(?:[-+]?(?:0|[1-9][0-9]*))$/;\nvar intLeadingZeroes = /^[-+]?[0-9]+$/;\n\nfunction isInt(str, options) {\n (0, _assertString.default)(str);\n options = options || {}; // Get the regex to use for testing, based on whether\n // leading zeroes are allowed or not.\n\n var regex = options.hasOwnProperty('allow_leading_zeroes') && !options.allow_leading_zeroes ? int : intLeadingZeroes; // Check min/max/lt/gt\n\n var minCheckPassed = !options.hasOwnProperty('min') || str >= options.min;\n var maxCheckPassed = !options.hasOwnProperty('max') || str <= options.max;\n var ltCheckPassed = !options.hasOwnProperty('lt') || str < options.lt;\n var gtCheckPassed = !options.hasOwnProperty('gt') || str > options.gt;\n return regex.test(str) && minCheckPassed && maxCheckPassed && ltCheckPassed && gtCheckPassed;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isPort;\n\nvar _isInt = _interopRequireDefault(require(\"./isInt\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isPort(str) {\n return (0, _isInt.default)(str, {\n min: 0,\n max: 65535\n });\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isPortValidator from 'validator/lib/isPort';\nexport var IS_PORT = 'isPort';\n/**\n * Check if the string is a valid port number.\n */\nexport function isPort(value) {\n return typeof value === 'string' && isPortValidator(value);\n}\n/**\n * Check if the string is a valid port number.\n */\nexport function IsPort(validationOptions) {\n return ValidateBy({\n name: IS_PORT,\n validator: {\n validate: function (value, args) { return isPort(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a port'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsPort.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISBN;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar isbn10Maybe = /^(?:[0-9]{9}X|[0-9]{10})$/;\nvar isbn13Maybe = /^(?:[0-9]{13})$/;\nvar factor = [1, 3];\n\nfunction isISBN(str) {\n var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n (0, _assertString.default)(str);\n version = String(version);\n\n if (!version) {\n return isISBN(str, 10) || isISBN(str, 13);\n }\n\n var sanitized = str.replace(/[\\s-]+/g, '');\n var checksum = 0;\n var i;\n\n if (version === '10') {\n if (!isbn10Maybe.test(sanitized)) {\n return false;\n }\n\n for (i = 0; i < 9; i++) {\n checksum += (i + 1) * sanitized.charAt(i);\n }\n\n if (sanitized.charAt(9) === 'X') {\n checksum += 10 * 10;\n } else {\n checksum += 10 * sanitized.charAt(9);\n }\n\n if (checksum % 11 === 0) {\n return !!sanitized;\n }\n } else if (version === '13') {\n if (!isbn13Maybe.test(sanitized)) {\n return false;\n }\n\n for (i = 0; i < 12; i++) {\n checksum += factor[i % 2] * sanitized.charAt(i);\n }\n\n if (sanitized.charAt(12) - (10 - checksum % 10) % 10 === 0) {\n return !!sanitized;\n }\n }\n\n return false;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isIsbnValidator from 'validator/lib/isISBN';\nexport var IS_ISBN = 'isIsbn';\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, version) {\n /* eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion */\n var versionStr = version ? \"\".concat(version) : undefined;\n return typeof value === 'string' && isIsbnValidator(value, versionStr);\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, validationOptions) {\n return ValidateBy({\n name: IS_ISBN,\n constraints: [version],\n validator: {\n validate: function (value, args) { return isISBN(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an ISBN'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsISBN.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISIN;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar isin = /^[A-Z]{2}[0-9A-Z]{9}[0-9]$/; // this link details how the check digit is calculated:\n// https://www.isin.org/isin-format/. it is a little bit\n// odd in that it works with digits, not numbers. in order\n// to make only one pass through the ISIN characters, the\n// each alpha character is handled as 2 characters within\n// the loop.\n\nfunction isISIN(str) {\n (0, _assertString.default)(str);\n\n if (!isin.test(str)) {\n return false;\n }\n\n var double = true;\n var sum = 0; // convert values\n\n for (var i = str.length - 2; i >= 0; i--) {\n if (str[i] >= 'A' && str[i] <= 'Z') {\n var value = str[i].charCodeAt(0) - 55;\n var lo = value % 10;\n var hi = Math.trunc(value / 10); // letters have two digits, so handle the low order\n // and high order digits separately.\n\n for (var _i = 0, _arr = [lo, hi]; _i < _arr.length; _i++) {\n var digit = _arr[_i];\n\n if (double) {\n if (digit >= 5) {\n sum += 1 + (digit - 5) * 2;\n } else {\n sum += digit * 2;\n }\n } else {\n sum += digit;\n }\n\n double = !double;\n }\n } else {\n var _digit = str[i].charCodeAt(0) - '0'.charCodeAt(0);\n\n if (double) {\n if (_digit >= 5) {\n sum += 1 + (_digit - 5) * 2;\n } else {\n sum += _digit * 2;\n }\n } else {\n sum += _digit;\n }\n\n double = !double;\n }\n }\n\n var check = Math.trunc((sum + 9) / 10) * 10 - sum;\n return +str[str.length - 1] === check;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isIsinValidator from 'validator/lib/isISIN';\nexport var IS_ISIN = 'isIsin';\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) {\n return typeof value === 'string' && isIsinValidator(value);\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) {\n return ValidateBy({\n name: IS_ISIN,\n validator: {\n validate: function (value, args) { return isISIN(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an ISIN (stock/security identifier)'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsISIN.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISO8601;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint-disable max-len */\n// from http://goo.gl/0ejHHW\nvar iso8601 = /^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$/; // same as above, except with a strict 'T' separator between date and time\n\nvar iso8601StrictSeparator = /^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$/;\n/* eslint-enable max-len */\n\nvar isValidDate = function isValidDate(str) {\n // str must have passed the ISO8601 check\n // this check is meant to catch invalid dates\n // like 2009-02-31\n // first check for ordinal dates\n var ordinalMatch = str.match(/^(\\d{4})-?(\\d{3})([ T]{1}\\.*|$)/);\n\n if (ordinalMatch) {\n var oYear = Number(ordinalMatch[1]);\n var oDay = Number(ordinalMatch[2]); // if is leap year\n\n if (oYear % 4 === 0 && oYear % 100 !== 0 || oYear % 400 === 0) return oDay <= 366;\n return oDay <= 365;\n }\n\n var match = str.match(/(\\d{4})-?(\\d{0,2})-?(\\d*)/).map(Number);\n var year = match[1];\n var month = match[2];\n var day = match[3];\n var monthString = month ? \"0\".concat(month).slice(-2) : month;\n var dayString = day ? \"0\".concat(day).slice(-2) : day; // create a date object and compare\n\n var d = new Date(\"\".concat(year, \"-\").concat(monthString || '01', \"-\").concat(dayString || '01'));\n\n if (month && day) {\n return d.getUTCFullYear() === year && d.getUTCMonth() + 1 === month && d.getUTCDate() === day;\n }\n\n return true;\n};\n\nfunction isISO8601(str) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, _assertString.default)(str);\n var check = options.strictSeparator ? iso8601StrictSeparator.test(str) : iso8601.test(str);\n if (check && options.strict) return isValidDate(str);\n return check;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isIso8601Validator from 'validator/lib/isISO8601';\nexport var IS_ISO8601 = 'isIso8601';\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, options) {\n return typeof value === 'string' && isIso8601Validator(value, options);\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(options, validationOptions) {\n return ValidateBy({\n name: IS_ISO8601,\n constraints: [options],\n validator: {\n validate: function (value, args) { return isISO8601(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid ISO 8601 date string'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsISO8601.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isJSON;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar default_json_options = {\n allow_primitives: false\n};\n\nfunction isJSON(str, options) {\n (0, _assertString.default)(str);\n\n try {\n options = (0, _merge.default)(options, default_json_options);\n var primitives = [];\n\n if (options.allow_primitives) {\n primitives = [null, false, true];\n }\n\n var obj = JSON.parse(str);\n return primitives.includes(obj) || !!obj && _typeof(obj) === 'object';\n } catch (e) {\n /* ignore */\n }\n\n return false;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isJSONValidator from 'validator/lib/isJSON';\nexport var IS_JSON = 'isJson';\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) {\n return typeof value === 'string' && isJSONValidator(value);\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) {\n return ValidateBy({\n name: IS_JSON,\n validator: {\n validate: function (value, args) { return isJSON(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a json string'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsJSON.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isJWT;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _isBase = _interopRequireDefault(require(\"./isBase64\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isJWT(str) {\n (0, _assertString.default)(str);\n var dotSplit = str.split('.');\n var len = dotSplit.length;\n\n if (len > 3 || len < 2) {\n return false;\n }\n\n return dotSplit.reduce(function (acc, currElem) {\n return acc && (0, _isBase.default)(currElem, {\n urlSafe: true\n });\n }, true);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isJwtValidator from 'validator/lib/isJWT';\nexport var IS_JWT = 'isJwt';\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) {\n return typeof value === 'string' && isJwtValidator(value);\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) {\n return ValidateBy({\n name: IS_JWT,\n validator: {\n validate: function (value, args) { return isJWT(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a jwt string'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsJWT.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isLowercase;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isLowercase(str) {\n (0, _assertString.default)(str);\n return str === str.toLowerCase();\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isLowercaseValidator from 'validator/lib/isLowercase';\nexport var IS_LOWERCASE = 'isLowercase';\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) {\n return typeof value === 'string' && isLowercaseValidator(value);\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) {\n return ValidateBy({\n name: IS_LOWERCASE,\n validator: {\n validate: function (value, args) { return isLowercase(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a lowercase string'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsLowercase.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMobilePhone;\nexports.locales = void 0;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint-disable max-len */\nvar phones = {\n 'am-AM': /^(\\+?374|0)((10|[9|7][0-9])\\d{6}$|[2-4]\\d{7}$)/,\n 'ar-AE': /^((\\+?971)|0)?5[024568]\\d{7}$/,\n 'ar-BH': /^(\\+?973)?(3|6)\\d{7}$/,\n 'ar-DZ': /^(\\+?213|0)(5|6|7)\\d{8}$/,\n 'ar-LB': /^(\\+?961)?((3|81)\\d{6}|7\\d{7})$/,\n 'ar-EG': /^((\\+?20)|0)?1[0125]\\d{8}$/,\n 'ar-IQ': /^(\\+?964|0)?7[0-9]\\d{8}$/,\n 'ar-JO': /^(\\+?962|0)?7[789]\\d{7}$/,\n 'ar-KW': /^(\\+?965)[569]\\d{7}$/,\n 'ar-LY': /^((\\+?218)|0)?(9[1-6]\\d{7}|[1-8]\\d{7,9})$/,\n 'ar-MA': /^(?:(?:\\+|00)212|0)[5-7]\\d{8}$/,\n 'ar-OM': /^((\\+|00)968)?(9[1-9])\\d{6}$/,\n 'ar-PS': /^(\\+?970|0)5[6|9](\\d{7})$/,\n 'ar-SA': /^(!?(\\+?966)|0)?5\\d{8}$/,\n 'ar-SY': /^(!?(\\+?963)|0)?9\\d{8}$/,\n 'ar-TN': /^(\\+?216)?[2459]\\d{7}$/,\n 'az-AZ': /^(\\+994|0)(5[015]|7[07]|99)\\d{7}$/,\n 'bs-BA': /^((((\\+|00)3876)|06))((([0-3]|[5-6])\\d{6})|(4\\d{7}))$/,\n 'be-BY': /^(\\+?375)?(24|25|29|33|44)\\d{7}$/,\n 'bg-BG': /^(\\+?359|0)?8[789]\\d{7}$/,\n 'bn-BD': /^(\\+?880|0)1[13456789][0-9]{8}$/,\n 'ca-AD': /^(\\+376)?[346]\\d{5}$/,\n 'cs-CZ': /^(\\+?420)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/,\n 'da-DK': /^(\\+?45)?\\s?\\d{2}\\s?\\d{2}\\s?\\d{2}\\s?\\d{2}$/,\n 'de-DE': /^((\\+49|0)[1|3])([0|5][0-45-9]\\d|6([23]|0\\d?)|7([0-57-9]|6\\d))\\d{7,9}$/,\n 'de-AT': /^(\\+43|0)\\d{1,4}\\d{3,12}$/,\n 'de-CH': /^(\\+41|0)([1-9])\\d{1,9}$/,\n 'de-LU': /^(\\+352)?((6\\d1)\\d{6})$/,\n 'dv-MV': /^(\\+?960)?(7[2-9]|91|9[3-9])\\d{7}$/,\n 'el-GR': /^(\\+?30|0)?(69\\d{8})$/,\n 'en-AU': /^(\\+?61|0)4\\d{8}$/,\n 'en-BM': /^(\\+?1)?441(((3|7)\\d{6}$)|(5[0-3][0-9]\\d{4}$)|(59\\d{5}))/,\n 'en-GB': /^(\\+?44|0)7\\d{9}$/,\n 'en-GG': /^(\\+?44|0)1481\\d{6}$/,\n 'en-GH': /^(\\+233|0)(20|50|24|54|27|57|26|56|23|28|55|59)\\d{7}$/,\n 'en-GY': /^(\\+592|0)6\\d{6}$/,\n 'en-HK': /^(\\+?852[-\\s]?)?[456789]\\d{3}[-\\s]?\\d{4}$/,\n 'en-MO': /^(\\+?853[-\\s]?)?[6]\\d{3}[-\\s]?\\d{4}$/,\n 'en-IE': /^(\\+?353|0)8[356789]\\d{7}$/,\n 'en-IN': /^(\\+?91|0)?[6789]\\d{9}$/,\n 'en-KE': /^(\\+?254|0)(7|1)\\d{8}$/,\n 'en-KI': /^((\\+686|686)?)?( )?((6|7)(2|3|8)[0-9]{6})$/,\n 'en-MT': /^(\\+?356|0)?(99|79|77|21|27|22|25)[0-9]{6}$/,\n 'en-MU': /^(\\+?230|0)?\\d{8}$/,\n 'en-NA': /^(\\+?264|0)(6|8)\\d{7}$/,\n 'en-NG': /^(\\+?234|0)?[789]\\d{9}$/,\n 'en-NZ': /^(\\+?64|0)[28]\\d{7,9}$/,\n 'en-PK': /^((00|\\+)?92|0)3[0-6]\\d{8}$/,\n 'en-PH': /^(09|\\+639)\\d{9}$/,\n 'en-RW': /^(\\+?250|0)?[7]\\d{8}$/,\n 'en-SG': /^(\\+65)?[3689]\\d{7}$/,\n 'en-SL': /^(\\+?232|0)\\d{8}$/,\n 'en-TZ': /^(\\+?255|0)?[67]\\d{8}$/,\n 'en-UG': /^(\\+?256|0)?[7]\\d{8}$/,\n 'en-US': /^((\\+1|1)?( |-)?)?(\\([2-9][0-9]{2}\\)|[2-9][0-9]{2})( |-)?([2-9][0-9]{2}( |-)?[0-9]{4})$/,\n 'en-ZA': /^(\\+?27|0)\\d{9}$/,\n 'en-ZM': /^(\\+?26)?09[567]\\d{7}$/,\n 'en-ZW': /^(\\+263)[0-9]{9}$/,\n 'en-BW': /^(\\+?267)?(7[1-8]{1})\\d{6}$/,\n 'es-AR': /^\\+?549(11|[2368]\\d)\\d{8}$/,\n 'es-BO': /^(\\+?591)?(6|7)\\d{7}$/,\n 'es-CO': /^(\\+?57)?3(0(0|1|2|4|5)|1\\d|2[0-4]|5(0|1))\\d{7}$/,\n 'es-CL': /^(\\+?56|0)[2-9]\\d{1}\\d{7}$/,\n 'es-CR': /^(\\+506)?[2-8]\\d{7}$/,\n 'es-CU': /^(\\+53|0053)?5\\d{7}/,\n 'es-DO': /^(\\+?1)?8[024]9\\d{7}$/,\n 'es-HN': /^(\\+?504)?[9|8]\\d{7}$/,\n 'es-EC': /^(\\+?593|0)([2-7]|9[2-9])\\d{7}$/,\n 'es-ES': /^(\\+?34)?[6|7]\\d{8}$/,\n 'es-PE': /^(\\+?51)?9\\d{8}$/,\n 'es-MX': /^(\\+?52)?(1|01)?\\d{10,11}$/,\n 'es-PA': /^(\\+?507)\\d{7,8}$/,\n 'es-PY': /^(\\+?595|0)9[9876]\\d{7}$/,\n 'es-SV': /^(\\+?503)?[67]\\d{7}$/,\n 'es-UY': /^(\\+598|0)9[1-9][\\d]{6}$/,\n 'es-VE': /^(\\+?58)?(2|4)\\d{9}$/,\n 'et-EE': /^(\\+?372)?\\s?(5|8[1-4])\\s?([0-9]\\s?){6,7}$/,\n 'fa-IR': /^(\\+?98[\\-\\s]?|0)9[0-39]\\d[\\-\\s]?\\d{3}[\\-\\s]?\\d{4}$/,\n 'fi-FI': /^(\\+?358|0)\\s?(4(0|1|2|4|5|6)?|50)\\s?(\\d\\s?){4,8}\\d$/,\n 'fj-FJ': /^(\\+?679)?\\s?\\d{3}\\s?\\d{4}$/,\n 'fo-FO': /^(\\+?298)?\\s?\\d{2}\\s?\\d{2}\\s?\\d{2}$/,\n 'fr-BF': /^(\\+226|0)[67]\\d{7}$/,\n 'fr-CM': /^(\\+?237)6[0-9]{8}$/,\n 'fr-FR': /^(\\+?33|0)[67]\\d{8}$/,\n 'fr-GF': /^(\\+?594|0|00594)[67]\\d{8}$/,\n 'fr-GP': /^(\\+?590|0|00590)[67]\\d{8}$/,\n 'fr-MQ': /^(\\+?596|0|00596)[67]\\d{8}$/,\n 'fr-PF': /^(\\+?689)?8[789]\\d{6}$/,\n 'fr-RE': /^(\\+?262|0|00262)[67]\\d{8}$/,\n 'he-IL': /^(\\+972|0)([23489]|5[012345689]|77)[1-9]\\d{6}$/,\n 'hu-HU': /^(\\+?36|06)(20|30|31|50|70)\\d{7}$/,\n 'id-ID': /^(\\+?62|0)8(1[123456789]|2[1238]|3[1238]|5[12356789]|7[78]|9[56789]|8[123456789])([\\s?|\\d]{5,11})$/,\n 'it-IT': /^(\\+?39)?\\s?3\\d{2} ?\\d{6,7}$/,\n 'it-SM': /^((\\+378)|(0549)|(\\+390549)|(\\+3780549))?6\\d{5,9}$/,\n 'ja-JP': /^(\\+81[ \\-]?(\\(0\\))?|0)[6789]0[ \\-]?\\d{4}[ \\-]?\\d{4}$/,\n 'ka-GE': /^(\\+?995)?(5|79)\\d{7}$/,\n 'kk-KZ': /^(\\+?7|8)?7\\d{9}$/,\n 'kl-GL': /^(\\+?299)?\\s?\\d{2}\\s?\\d{2}\\s?\\d{2}$/,\n 'ko-KR': /^((\\+?82)[ \\-]?)?0?1([0|1|6|7|8|9]{1})[ \\-]?\\d{3,4}[ \\-]?\\d{4}$/,\n 'lt-LT': /^(\\+370|8)\\d{8}$/,\n 'lv-LV': /^(\\+?371)2\\d{7}$/,\n 'ms-MY': /^(\\+?6?01){1}(([0145]{1}(\\-|\\s)?\\d{7,8})|([236789]{1}(\\s|\\-)?\\d{7}))$/,\n 'mz-MZ': /^(\\+?258)?8[234567]\\d{7}$/,\n 'nb-NO': /^(\\+?47)?[49]\\d{7}$/,\n 'ne-NP': /^(\\+?977)?9[78]\\d{8}$/,\n 'nl-BE': /^(\\+?32|0)4\\d{8}$/,\n 'nl-NL': /^(((\\+|00)?31\\(0\\))|((\\+|00)?31)|0)6{1}\\d{8}$/,\n 'nn-NO': /^(\\+?47)?[49]\\d{7}$/,\n 'pl-PL': /^(\\+?48)? ?[5-8]\\d ?\\d{3} ?\\d{2} ?\\d{2}$/,\n 'pt-BR': /^((\\+?55\\ ?[1-9]{2}\\ ?)|(\\+?55\\ ?\\([1-9]{2}\\)\\ ?)|(0[1-9]{2}\\ ?)|(\\([1-9]{2}\\)\\ ?)|([1-9]{2}\\ ?))((\\d{4}\\-?\\d{4})|(9[2-9]{1}\\d{3}\\-?\\d{4}))$/,\n 'pt-PT': /^(\\+?351)?9[1236]\\d{7}$/,\n 'pt-AO': /^(\\+244)\\d{9}$/,\n 'ro-RO': /^(\\+?4?0)\\s?7\\d{2}(\\/|\\s|\\.|\\-)?\\d{3}(\\s|\\.|\\-)?\\d{3}$/,\n 'ru-RU': /^(\\+?7|8)?9\\d{9}$/,\n 'si-LK': /^(?:0|94|\\+94)?(7(0|1|2|4|5|6|7|8)( |-)?)\\d{7}$/,\n 'sl-SI': /^(\\+386\\s?|0)(\\d{1}\\s?\\d{3}\\s?\\d{2}\\s?\\d{2}|\\d{2}\\s?\\d{3}\\s?\\d{3})$/,\n 'sk-SK': /^(\\+?421)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/,\n 'sq-AL': /^(\\+355|0)6[789]\\d{6}$/,\n 'sr-RS': /^(\\+3816|06)[- \\d]{5,9}$/,\n 'sv-SE': /^(\\+?46|0)[\\s\\-]?7[\\s\\-]?[02369]([\\s\\-]?\\d){7}$/,\n 'tg-TJ': /^(\\+?992)?[5][5]\\d{7}$/,\n 'th-TH': /^(\\+66|66|0)\\d{9}$/,\n 'tr-TR': /^(\\+?90|0)?5\\d{9}$/,\n 'tk-TM': /^(\\+993|993|8)\\d{8}$/,\n 'uk-UA': /^(\\+?38|8)?0\\d{9}$/,\n 'uz-UZ': /^(\\+?998)?(6[125-79]|7[1-69]|88|9\\d)\\d{7}$/,\n 'vi-VN': /^((\\+?84)|0)((3([2-9]))|(5([25689]))|(7([0|6-9]))|(8([1-9]))|(9([0-9])))([0-9]{7})$/,\n 'zh-CN': /^((\\+|00)86)?(1[3-9]|9[28])\\d{9}$/,\n 'zh-TW': /^(\\+?886\\-?|0)?9\\d{8}$/,\n 'dz-BT': /^(\\+?975|0)?(17|16|77|02)\\d{6}$/\n};\n/* eslint-enable max-len */\n// aliases\n\nphones['en-CA'] = phones['en-US'];\nphones['fr-CA'] = phones['en-CA'];\nphones['fr-BE'] = phones['nl-BE'];\nphones['zh-HK'] = phones['en-HK'];\nphones['zh-MO'] = phones['en-MO'];\nphones['ga-IE'] = phones['en-IE'];\nphones['fr-CH'] = phones['de-CH'];\nphones['it-CH'] = phones['fr-CH'];\n\nfunction isMobilePhone(str, locale, options) {\n (0, _assertString.default)(str);\n\n if (options && options.strictMode && !str.startsWith('+')) {\n return false;\n }\n\n if (Array.isArray(locale)) {\n return locale.some(function (key) {\n // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes\n // istanbul ignore else\n if (phones.hasOwnProperty(key)) {\n var phone = phones[key];\n\n if (phone.test(str)) {\n return true;\n }\n }\n\n return false;\n });\n } else if (locale in phones) {\n return phones[locale].test(str); // alias falsey locale as 'any'\n } else if (!locale || locale === 'any') {\n for (var key in phones) {\n // istanbul ignore else\n if (phones.hasOwnProperty(key)) {\n var phone = phones[key];\n\n if (phone.test(str)) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n throw new Error(\"Invalid locale '\".concat(locale, \"'\"));\n}\n\nvar locales = Object.keys(phones);\nexports.locales = locales;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isMobilePhoneValidator from 'validator/lib/isMobilePhone';\nexport var IS_MOBILE_PHONE = 'isMobilePhone';\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(value, locale, options) {\n return typeof value === 'string' && isMobilePhoneValidator(value, locale, options);\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(locale, options, validationOptions) {\n return ValidateBy({\n name: IS_MOBILE_PHONE,\n constraints: [locale, options],\n validator: {\n validate: function (value, args) { return isMobilePhone(value, args.constraints[0], args.constraints[1]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a phone number'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsMobilePhone.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISO31661Alpha2;\nexports.CountryCodes = void 0;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// from https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\nvar validISO31661Alpha2CountriesCodes = new Set(['AD', 'AE', 'AF', 'AG', 'AI', 'AL', 'AM', 'AO', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AW', 'AX', 'AZ', 'BA', 'BB', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BL', 'BM', 'BN', 'BO', 'BQ', 'BR', 'BS', 'BT', 'BV', 'BW', 'BY', 'BZ', 'CA', 'CC', 'CD', 'CF', 'CG', 'CH', 'CI', 'CK', 'CL', 'CM', 'CN', 'CO', 'CR', 'CU', 'CV', 'CW', 'CX', 'CY', 'CZ', 'DE', 'DJ', 'DK', 'DM', 'DO', 'DZ', 'EC', 'EE', 'EG', 'EH', 'ER', 'ES', 'ET', 'FI', 'FJ', 'FK', 'FM', 'FO', 'FR', 'GA', 'GB', 'GD', 'GE', 'GF', 'GG', 'GH', 'GI', 'GL', 'GM', 'GN', 'GP', 'GQ', 'GR', 'GS', 'GT', 'GU', 'GW', 'GY', 'HK', 'HM', 'HN', 'HR', 'HT', 'HU', 'ID', 'IE', 'IL', 'IM', 'IN', 'IO', 'IQ', 'IR', 'IS', 'IT', 'JE', 'JM', 'JO', 'JP', 'KE', 'KG', 'KH', 'KI', 'KM', 'KN', 'KP', 'KR', 'KW', 'KY', 'KZ', 'LA', 'LB', 'LC', 'LI', 'LK', 'LR', 'LS', 'LT', 'LU', 'LV', 'LY', 'MA', 'MC', 'MD', 'ME', 'MF', 'MG', 'MH', 'MK', 'ML', 'MM', 'MN', 'MO', 'MP', 'MQ', 'MR', 'MS', 'MT', 'MU', 'MV', 'MW', 'MX', 'MY', 'MZ', 'NA', 'NC', 'NE', 'NF', 'NG', 'NI', 'NL', 'NO', 'NP', 'NR', 'NU', 'NZ', 'OM', 'PA', 'PE', 'PF', 'PG', 'PH', 'PK', 'PL', 'PM', 'PN', 'PR', 'PS', 'PT', 'PW', 'PY', 'QA', 'RE', 'RO', 'RS', 'RU', 'RW', 'SA', 'SB', 'SC', 'SD', 'SE', 'SG', 'SH', 'SI', 'SJ', 'SK', 'SL', 'SM', 'SN', 'SO', 'SR', 'SS', 'ST', 'SV', 'SX', 'SY', 'SZ', 'TC', 'TD', 'TF', 'TG', 'TH', 'TJ', 'TK', 'TL', 'TM', 'TN', 'TO', 'TR', 'TT', 'TV', 'TW', 'TZ', 'UA', 'UG', 'UM', 'US', 'UY', 'UZ', 'VA', 'VC', 'VE', 'VG', 'VI', 'VN', 'VU', 'WF', 'WS', 'YE', 'YT', 'ZA', 'ZM', 'ZW']);\n\nfunction isISO31661Alpha2(str) {\n (0, _assertString.default)(str);\n return validISO31661Alpha2CountriesCodes.has(str.toUpperCase());\n}\n\nvar CountryCodes = validISO31661Alpha2CountriesCodes;\nexports.CountryCodes = CountryCodes;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isISO31661Alpha2Validator from 'validator/lib/isISO31661Alpha2';\nexport var IS_ISO31661_ALPHA_2 = 'isISO31661Alpha2';\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) {\n return typeof value === 'string' && isISO31661Alpha2Validator(value);\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) {\n return ValidateBy({\n name: IS_ISO31661_ALPHA_2,\n validator: {\n validate: function (value, args) { return isISO31661Alpha2(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid ISO31661 Alpha2 code'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsISO31661Alpha2.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISO31661Alpha3;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// from https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3\nvar validISO31661Alpha3CountriesCodes = new Set(['AFG', 'ALA', 'ALB', 'DZA', 'ASM', 'AND', 'AGO', 'AIA', 'ATA', 'ATG', 'ARG', 'ARM', 'ABW', 'AUS', 'AUT', 'AZE', 'BHS', 'BHR', 'BGD', 'BRB', 'BLR', 'BEL', 'BLZ', 'BEN', 'BMU', 'BTN', 'BOL', 'BES', 'BIH', 'BWA', 'BVT', 'BRA', 'IOT', 'BRN', 'BGR', 'BFA', 'BDI', 'KHM', 'CMR', 'CAN', 'CPV', 'CYM', 'CAF', 'TCD', 'CHL', 'CHN', 'CXR', 'CCK', 'COL', 'COM', 'COG', 'COD', 'COK', 'CRI', 'CIV', 'HRV', 'CUB', 'CUW', 'CYP', 'CZE', 'DNK', 'DJI', 'DMA', 'DOM', 'ECU', 'EGY', 'SLV', 'GNQ', 'ERI', 'EST', 'ETH', 'FLK', 'FRO', 'FJI', 'FIN', 'FRA', 'GUF', 'PYF', 'ATF', 'GAB', 'GMB', 'GEO', 'DEU', 'GHA', 'GIB', 'GRC', 'GRL', 'GRD', 'GLP', 'GUM', 'GTM', 'GGY', 'GIN', 'GNB', 'GUY', 'HTI', 'HMD', 'VAT', 'HND', 'HKG', 'HUN', 'ISL', 'IND', 'IDN', 'IRN', 'IRQ', 'IRL', 'IMN', 'ISR', 'ITA', 'JAM', 'JPN', 'JEY', 'JOR', 'KAZ', 'KEN', 'KIR', 'PRK', 'KOR', 'KWT', 'KGZ', 'LAO', 'LVA', 'LBN', 'LSO', 'LBR', 'LBY', 'LIE', 'LTU', 'LUX', 'MAC', 'MKD', 'MDG', 'MWI', 'MYS', 'MDV', 'MLI', 'MLT', 'MHL', 'MTQ', 'MRT', 'MUS', 'MYT', 'MEX', 'FSM', 'MDA', 'MCO', 'MNG', 'MNE', 'MSR', 'MAR', 'MOZ', 'MMR', 'NAM', 'NRU', 'NPL', 'NLD', 'NCL', 'NZL', 'NIC', 'NER', 'NGA', 'NIU', 'NFK', 'MNP', 'NOR', 'OMN', 'PAK', 'PLW', 'PSE', 'PAN', 'PNG', 'PRY', 'PER', 'PHL', 'PCN', 'POL', 'PRT', 'PRI', 'QAT', 'REU', 'ROU', 'RUS', 'RWA', 'BLM', 'SHN', 'KNA', 'LCA', 'MAF', 'SPM', 'VCT', 'WSM', 'SMR', 'STP', 'SAU', 'SEN', 'SRB', 'SYC', 'SLE', 'SGP', 'SXM', 'SVK', 'SVN', 'SLB', 'SOM', 'ZAF', 'SGS', 'SSD', 'ESP', 'LKA', 'SDN', 'SUR', 'SJM', 'SWZ', 'SWE', 'CHE', 'SYR', 'TWN', 'TJK', 'TZA', 'THA', 'TLS', 'TGO', 'TKL', 'TON', 'TTO', 'TUN', 'TUR', 'TKM', 'TCA', 'TUV', 'UGA', 'UKR', 'ARE', 'GBR', 'USA', 'UMI', 'URY', 'UZB', 'VUT', 'VEN', 'VNM', 'VGB', 'VIR', 'WLF', 'ESH', 'YEM', 'ZMB', 'ZWE']);\n\nfunction isISO31661Alpha3(str) {\n (0, _assertString.default)(str);\n return validISO31661Alpha3CountriesCodes.has(str.toUpperCase());\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isISO31661Alpha3Validator from 'validator/lib/isISO31661Alpha3';\nexport var IS_ISO31661_ALPHA_3 = 'isISO31661Alpha3';\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) {\n return typeof value === 'string' && isISO31661Alpha3Validator(value);\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) {\n return ValidateBy({\n name: IS_ISO31661_ALPHA_3,\n validator: {\n validate: function (value, args) { return isISO31661Alpha3(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid ISO31661 Alpha3 code'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsISO31661Alpha3.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMongoId;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _isHexadecimal = _interopRequireDefault(require(\"./isHexadecimal\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isMongoId(str) {\n (0, _assertString.default)(str);\n return (0, _isHexadecimal.default)(str) && str.length === 24;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isMongoIdValidator from 'validator/lib/isMongoId';\nexport var IS_MONGO_ID = 'isMongoId';\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) {\n return typeof value === 'string' && isMongoIdValidator(value);\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) {\n return ValidateBy({\n name: IS_MONGO_ID,\n validator: {\n validate: function (value, args) { return isMongoId(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a mongodb id'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsMongoId.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMultibyte;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint-disable no-control-regex */\nvar multibyte = /[^\\x00-\\x7F]/;\n/* eslint-enable no-control-regex */\n\nfunction isMultibyte(str) {\n (0, _assertString.default)(str);\n return multibyte.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isMultibyteValidator from 'validator/lib/isMultibyte';\nexport var IS_MULTIBYTE = 'isMultibyte';\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) {\n return typeof value === 'string' && isMultibyteValidator(value);\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) {\n return ValidateBy({\n name: IS_MULTIBYTE,\n validator: {\n validate: function (value, args) { return isMultibyte(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain one or more multibyte chars'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsMultibyte.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isSurrogatePair;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar surrogatePair = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/;\n\nfunction isSurrogatePair(str) {\n (0, _assertString.default)(str);\n return surrogatePair.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isSurrogatePairValidator from 'validator/lib/isSurrogatePair';\nexport var IS_SURROGATE_PAIR = 'isSurrogatePair';\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) {\n return typeof value === 'string' && isSurrogatePairValidator(value);\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) {\n return ValidateBy({\n name: IS_SURROGATE_PAIR,\n validator: {\n validate: function (value, args) { return isSurrogatePair(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain any surrogate pairs chars'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsSurrogatePair.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isURL;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _isFQDN = _interopRequireDefault(require(\"./isFQDN\"));\n\nvar _isIP = _interopRequireDefault(require(\"./isIP\"));\n\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n/*\noptions for isURL method\n\nrequire_protocol - if set as true isURL will return false if protocol is not present in the URL\nrequire_valid_protocol - isURL will check if the URL's protocol is present in the protocols option\nprotocols - valid protocols can be modified with this option\nrequire_host - if set as false isURL will not check if host is present in the URL\nrequire_port - if set as true isURL will check if port is present in the URL\nallow_protocol_relative_urls - if set as true protocol relative URLs will be allowed\nvalidate_length - if set as false isURL will skip string length validation (IE maximum is 2083)\n\n*/\nvar default_url_options = {\n protocols: ['http', 'https', 'ftp'],\n require_tld: true,\n require_protocol: false,\n require_host: true,\n require_port: false,\n require_valid_protocol: true,\n allow_underscores: false,\n allow_trailing_dot: false,\n allow_protocol_relative_urls: false,\n allow_fragments: true,\n allow_query_components: true,\n validate_length: true\n};\nvar wrapped_ipv6 = /^\\[([^\\]]+)\\](?::([0-9]+))?$/;\n\nfunction isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n}\n\nfunction checkHost(host, matches) {\n for (var i = 0; i < matches.length; i++) {\n var match = matches[i];\n\n if (host === match || isRegExp(match) && match.test(host)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isURL(url, options) {\n (0, _assertString.default)(url);\n\n if (!url || /[\\s<>]/.test(url)) {\n return false;\n }\n\n if (url.indexOf('mailto:') === 0) {\n return false;\n }\n\n options = (0, _merge.default)(options, default_url_options);\n\n if (options.validate_length && url.length >= 2083) {\n return false;\n }\n\n if (!options.allow_fragments && url.includes('#')) {\n return false;\n }\n\n if (!options.allow_query_components && (url.includes('?') || url.includes('&'))) {\n return false;\n }\n\n var protocol, auth, host, hostname, port, port_str, split, ipv6;\n split = url.split('#');\n url = split.shift();\n split = url.split('?');\n url = split.shift();\n split = url.split('://');\n\n if (split.length > 1) {\n protocol = split.shift().toLowerCase();\n\n if (options.require_valid_protocol && options.protocols.indexOf(protocol) === -1) {\n return false;\n }\n } else if (options.require_protocol) {\n return false;\n } else if (url.substr(0, 2) === '//') {\n if (!options.allow_protocol_relative_urls) {\n return false;\n }\n\n split[0] = url.substr(2);\n }\n\n url = split.join('://');\n\n if (url === '') {\n return false;\n }\n\n split = url.split('/');\n url = split.shift();\n\n if (url === '' && !options.require_host) {\n return true;\n }\n\n split = url.split('@');\n\n if (split.length > 1) {\n if (options.disallow_auth) {\n return false;\n }\n\n if (split[0] === '') {\n return false;\n }\n\n auth = split.shift();\n\n if (auth.indexOf(':') >= 0 && auth.split(':').length > 2) {\n return false;\n }\n\n var _auth$split = auth.split(':'),\n _auth$split2 = _slicedToArray(_auth$split, 2),\n user = _auth$split2[0],\n password = _auth$split2[1];\n\n if (user === '' && password === '') {\n return false;\n }\n }\n\n hostname = split.join('@');\n port_str = null;\n ipv6 = null;\n var ipv6_match = hostname.match(wrapped_ipv6);\n\n if (ipv6_match) {\n host = '';\n ipv6 = ipv6_match[1];\n port_str = ipv6_match[2] || null;\n } else {\n split = hostname.split(':');\n host = split.shift();\n\n if (split.length) {\n port_str = split.join(':');\n }\n }\n\n if (port_str !== null && port_str.length > 0) {\n port = parseInt(port_str, 10);\n\n if (!/^[0-9]+$/.test(port_str) || port <= 0 || port > 65535) {\n return false;\n }\n } else if (options.require_port) {\n return false;\n }\n\n if (options.host_whitelist) {\n return checkHost(host, options.host_whitelist);\n }\n\n if (!(0, _isIP.default)(host) && !(0, _isFQDN.default)(host, options) && (!ipv6 || !(0, _isIP.default)(ipv6, 6))) {\n return false;\n }\n\n host = host || ipv6;\n\n if (options.host_blacklist && checkHost(host, options.host_blacklist)) {\n return false;\n }\n\n return true;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isUrlValidator from 'validator/lib/isURL';\nexport var IS_URL = 'isUrl';\n/**\n * Checks if the string is an url.\n * If given value is not a string, then it returns false.\n */\nexport function isURL(value, options) {\n return typeof value === 'string' && isUrlValidator(value, options);\n}\n/**\n * Checks if the string is an url.\n * If given value is not a string, then it returns false.\n */\nexport function IsUrl(options, validationOptions) {\n return ValidateBy({\n name: IS_URL,\n constraints: [options],\n validator: {\n validate: function (value, args) { return isURL(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an URL address'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsUrl.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isUUID;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar uuid = {\n 1: /^[0-9A-F]{8}-[0-9A-F]{4}-1[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,\n 2: /^[0-9A-F]{8}-[0-9A-F]{4}-2[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,\n 3: /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,\n 4: /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,\n 5: /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,\n all: /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i\n};\n\nfunction isUUID(str, version) {\n (0, _assertString.default)(str);\n var pattern = uuid[![undefined, null].includes(version) ? version : 'all'];\n return !!pattern && pattern.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isUuidValidator from 'validator/lib/isUUID';\nexport var IS_UUID = 'isUuid';\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, version) {\n return typeof value === 'string' && isUuidValidator(value, version);\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(version, validationOptions) {\n return ValidateBy({\n name: IS_UUID,\n constraints: [version],\n validator: {\n validate: function (value, args) { return isUUID(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a UUID'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsUUID.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_FIREBASE_PUSH_ID = 'IsFirebasePushId';\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) {\n var webSafeRegex = /^[a-zA-Z0-9_-]*$/;\n return typeof value === 'string' && value.length === 20 && webSafeRegex.test(value);\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) {\n return ValidateBy({\n name: IS_FIREBASE_PUSH_ID,\n validator: {\n validate: function (value, args) { return isFirebasePushId(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a Firebase Push Id'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsFirebasePushId.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isUppercase;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isUppercase(str) {\n (0, _assertString.default)(str);\n return str === str.toUpperCase();\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isUppercaseValidator from 'validator/lib/isUppercase';\nexport var IS_UPPERCASE = 'isUppercase';\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) {\n return typeof value === 'string' && isUppercaseValidator(value);\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) {\n return ValidateBy({\n name: IS_UPPERCASE,\n validator: {\n validate: function (value, args) { return isUppercase(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be uppercase'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsUppercase.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isLength;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-disable prefer-rest-params */\nfunction isLength(str, options) {\n (0, _assertString.default)(str);\n var min;\n var max;\n\n if (_typeof(options) === 'object') {\n min = options.min || 0;\n max = options.max;\n } else {\n // backwards compatibility: isLength(str, min [, max])\n min = arguments[1] || 0;\n max = arguments[2];\n }\n\n var surrogatePairs = str.match(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g) || [];\n var len = str.length - surrogatePairs.length;\n return len >= min && (typeof max === 'undefined' || len <= max);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isLengthValidator from 'validator/lib/isLength';\nexport var IS_LENGTH = 'isLength';\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, min, max) {\n return typeof value === 'string' && isLengthValidator(value, { min: min, max: max });\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, max, validationOptions) {\n return ValidateBy({\n name: IS_LENGTH,\n constraints: [min, max],\n validator: {\n validate: function (value, args) { return length(value, args.constraints[0], args.constraints[1]); },\n defaultMessage: buildMessage(function (eachPrefix, args) {\n var isMinLength = args.constraints[0] !== null && args.constraints[0] !== undefined;\n var isMaxLength = args.constraints[1] !== null && args.constraints[1] !== undefined;\n if (isMinLength && (!args.value || args.value.length < args.constraints[0])) {\n return eachPrefix + '$property must be longer than or equal to $constraint1 characters';\n }\n else if (isMaxLength && args.value.length > args.constraints[1]) {\n return eachPrefix + '$property must be shorter than or equal to $constraint2 characters';\n }\n return (eachPrefix +\n '$property must be longer than or equal to $constraint1 and shorter than or equal to $constraint2 characters');\n }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=Length.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isLengthValidator from 'validator/lib/isLength';\nexport var MAX_LENGTH = 'maxLength';\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, max) {\n return typeof value === 'string' && isLengthValidator(value, { min: 0, max: max });\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, validationOptions) {\n return ValidateBy({\n name: MAX_LENGTH,\n constraints: [max],\n validator: {\n validate: function (value, args) { return maxLength(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be shorter than or equal to $constraint1 characters'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=MaxLength.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isLengthValidator from 'validator/lib/isLength';\nexport var MIN_LENGTH = 'minLength';\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, min) {\n return typeof value === 'string' && isLengthValidator(value, { min: min });\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, validationOptions) {\n return ValidateBy({\n name: MIN_LENGTH,\n constraints: [min],\n validator: {\n validate: function (value, args) { return minLength(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be longer than or equal to $constraint1 characters'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=MinLength.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = matches;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction matches(str, pattern, modifiers) {\n (0, _assertString.default)(str);\n\n if (Object.prototype.toString.call(pattern) !== '[object RegExp]') {\n pattern = new RegExp(pattern, modifiers);\n }\n\n return pattern.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport matchesValidator from 'validator/lib/matches';\nexport var MATCHES = 'matches';\nexport function matches(value, pattern, modifiers) {\n return typeof value === 'string' && matchesValidator(value, pattern, modifiers);\n}\nexport function Matches(pattern, modifiersOrAnnotationOptions, validationOptions) {\n var modifiers;\n if (modifiersOrAnnotationOptions && modifiersOrAnnotationOptions instanceof Object && !validationOptions) {\n validationOptions = modifiersOrAnnotationOptions;\n }\n else {\n modifiers = modifiersOrAnnotationOptions;\n }\n return ValidateBy({\n name: MATCHES,\n constraints: [pattern, modifiers],\n validator: {\n validate: function (value, args) { return matches(value, args.constraints[0], args.constraints[1]); },\n defaultMessage: buildMessage(function (eachPrefix, args) { return eachPrefix + '$property must match $constraint1 regular expression'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=Matches.js.map","// This file is a workaround for a bug in web browsers' \"native\"\n// ES6 importing system which is uncapable of importing \"*.json\" files.\n// https://github.com/catamphetamine/libphonenumber-js/issues/239\nexport default {\"version\":4,\"country_calling_codes\":{\"1\":[\"US\",\"AG\",\"AI\",\"AS\",\"BB\",\"BM\",\"BS\",\"CA\",\"DM\",\"DO\",\"GD\",\"GU\",\"JM\",\"KN\",\"KY\",\"LC\",\"MP\",\"MS\",\"PR\",\"SX\",\"TC\",\"TT\",\"VC\",\"VG\",\"VI\"],\"7\":[\"RU\",\"KZ\"],\"20\":[\"EG\"],\"27\":[\"ZA\"],\"30\":[\"GR\"],\"31\":[\"NL\"],\"32\":[\"BE\"],\"33\":[\"FR\"],\"34\":[\"ES\"],\"36\":[\"HU\"],\"39\":[\"IT\",\"VA\"],\"40\":[\"RO\"],\"41\":[\"CH\"],\"43\":[\"AT\"],\"44\":[\"GB\",\"GG\",\"IM\",\"JE\"],\"45\":[\"DK\"],\"46\":[\"SE\"],\"47\":[\"NO\",\"SJ\"],\"48\":[\"PL\"],\"49\":[\"DE\"],\"51\":[\"PE\"],\"52\":[\"MX\"],\"53\":[\"CU\"],\"54\":[\"AR\"],\"55\":[\"BR\"],\"56\":[\"CL\"],\"57\":[\"CO\"],\"58\":[\"VE\"],\"60\":[\"MY\"],\"61\":[\"AU\",\"CC\",\"CX\"],\"62\":[\"ID\"],\"63\":[\"PH\"],\"64\":[\"NZ\"],\"65\":[\"SG\"],\"66\":[\"TH\"],\"81\":[\"JP\"],\"82\":[\"KR\"],\"84\":[\"VN\"],\"86\":[\"CN\"],\"90\":[\"TR\"],\"91\":[\"IN\"],\"92\":[\"PK\"],\"93\":[\"AF\"],\"94\":[\"LK\"],\"95\":[\"MM\"],\"98\":[\"IR\"],\"211\":[\"SS\"],\"212\":[\"MA\",\"EH\"],\"213\":[\"DZ\"],\"216\":[\"TN\"],\"218\":[\"LY\"],\"220\":[\"GM\"],\"221\":[\"SN\"],\"222\":[\"MR\"],\"223\":[\"ML\"],\"224\":[\"GN\"],\"225\":[\"CI\"],\"226\":[\"BF\"],\"227\":[\"NE\"],\"228\":[\"TG\"],\"229\":[\"BJ\"],\"230\":[\"MU\"],\"231\":[\"LR\"],\"232\":[\"SL\"],\"233\":[\"GH\"],\"234\":[\"NG\"],\"235\":[\"TD\"],\"236\":[\"CF\"],\"237\":[\"CM\"],\"238\":[\"CV\"],\"239\":[\"ST\"],\"240\":[\"GQ\"],\"241\":[\"GA\"],\"242\":[\"CG\"],\"243\":[\"CD\"],\"244\":[\"AO\"],\"245\":[\"GW\"],\"246\":[\"IO\"],\"247\":[\"AC\"],\"248\":[\"SC\"],\"249\":[\"SD\"],\"250\":[\"RW\"],\"251\":[\"ET\"],\"252\":[\"SO\"],\"253\":[\"DJ\"],\"254\":[\"KE\"],\"255\":[\"TZ\"],\"256\":[\"UG\"],\"257\":[\"BI\"],\"258\":[\"MZ\"],\"260\":[\"ZM\"],\"261\":[\"MG\"],\"262\":[\"RE\",\"YT\"],\"263\":[\"ZW\"],\"264\":[\"NA\"],\"265\":[\"MW\"],\"266\":[\"LS\"],\"267\":[\"BW\"],\"268\":[\"SZ\"],\"269\":[\"KM\"],\"290\":[\"SH\",\"TA\"],\"291\":[\"ER\"],\"297\":[\"AW\"],\"298\":[\"FO\"],\"299\":[\"GL\"],\"350\":[\"GI\"],\"351\":[\"PT\"],\"352\":[\"LU\"],\"353\":[\"IE\"],\"354\":[\"IS\"],\"355\":[\"AL\"],\"356\":[\"MT\"],\"357\":[\"CY\"],\"358\":[\"FI\",\"AX\"],\"359\":[\"BG\"],\"370\":[\"LT\"],\"371\":[\"LV\"],\"372\":[\"EE\"],\"373\":[\"MD\"],\"374\":[\"AM\"],\"375\":[\"BY\"],\"376\":[\"AD\"],\"377\":[\"MC\"],\"378\":[\"SM\"],\"380\":[\"UA\"],\"381\":[\"RS\"],\"382\":[\"ME\"],\"383\":[\"XK\"],\"385\":[\"HR\"],\"386\":[\"SI\"],\"387\":[\"BA\"],\"389\":[\"MK\"],\"420\":[\"CZ\"],\"421\":[\"SK\"],\"423\":[\"LI\"],\"500\":[\"FK\"],\"501\":[\"BZ\"],\"502\":[\"GT\"],\"503\":[\"SV\"],\"504\":[\"HN\"],\"505\":[\"NI\"],\"506\":[\"CR\"],\"507\":[\"PA\"],\"508\":[\"PM\"],\"509\":[\"HT\"],\"590\":[\"GP\",\"BL\",\"MF\"],\"591\":[\"BO\"],\"592\":[\"GY\"],\"593\":[\"EC\"],\"594\":[\"GF\"],\"595\":[\"PY\"],\"596\":[\"MQ\"],\"597\":[\"SR\"],\"598\":[\"UY\"],\"599\":[\"CW\",\"BQ\"],\"670\":[\"TL\"],\"672\":[\"NF\"],\"673\":[\"BN\"],\"674\":[\"NR\"],\"675\":[\"PG\"],\"676\":[\"TO\"],\"677\":[\"SB\"],\"678\":[\"VU\"],\"679\":[\"FJ\"],\"680\":[\"PW\"],\"681\":[\"WF\"],\"682\":[\"CK\"],\"683\":[\"NU\"],\"685\":[\"WS\"],\"686\":[\"KI\"],\"687\":[\"NC\"],\"688\":[\"TV\"],\"689\":[\"PF\"],\"690\":[\"TK\"],\"691\":[\"FM\"],\"692\":[\"MH\"],\"850\":[\"KP\"],\"852\":[\"HK\"],\"853\":[\"MO\"],\"855\":[\"KH\"],\"856\":[\"LA\"],\"880\":[\"BD\"],\"886\":[\"TW\"],\"960\":[\"MV\"],\"961\":[\"LB\"],\"962\":[\"JO\"],\"963\":[\"SY\"],\"964\":[\"IQ\"],\"965\":[\"KW\"],\"966\":[\"SA\"],\"967\":[\"YE\"],\"968\":[\"OM\"],\"970\":[\"PS\"],\"971\":[\"AE\"],\"972\":[\"IL\"],\"973\":[\"BH\"],\"974\":[\"QA\"],\"975\":[\"BT\"],\"976\":[\"MN\"],\"977\":[\"NP\"],\"992\":[\"TJ\"],\"993\":[\"TM\"],\"994\":[\"AZ\"],\"995\":[\"GE\"],\"996\":[\"KG\"],\"998\":[\"UZ\"]},\"countries\":{\"AC\":[\"247\",\"00\",\"(?:[01589]\\\\d|[46])\\\\d{4}\",[5,6]],\"AD\":[\"376\",\"00\",\"(?:1|6\\\\d)\\\\d{7}|[135-9]\\\\d{5}\",[6,8,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[135-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]]],\"AE\":[\"971\",\"00\",\"(?:[4-7]\\\\d|9[0-689])\\\\d{7}|800\\\\d{2,9}|[2-4679]\\\\d{7}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{2,9})\",\"$1 $2\",[\"60|8\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[236]|[479][2-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{5})\",\"$1 $2 $3\",[\"[479]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],\"AF\":[\"93\",\"00\",\"[2-7]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"]],\"0\"],\"AG\":[\"1\",\"011\",\"(?:268|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([457]\\\\d{6})$\",\"268$1\",0,\"268\"],\"AI\":[\"1\",\"011\",\"(?:264|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2457]\\\\d{6})$\",\"264$1\",0,\"264\"],\"AL\":[\"355\",\"00\",\"(?:700\\\\d\\\\d|900)\\\\d{3}|8\\\\d{5,7}|(?:[2-5]|6\\\\d)\\\\d{7}\",[6,7,8,9],[[\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"80|9\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2358][2-5]|4\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[23578]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"]],\"0\"],\"AM\":[\"374\",\"00\",\"(?:[1-489]\\\\d|55|60|77)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]0\"],\"0 $1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2|3[12]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"1|47\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[3-9]\"],\"0$1\"]],\"0\"],\"AO\":[\"244\",\"00\",\"[29]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[29]\"]]]],\"AR\":[\"54\",\"00\",\"(?:11|[89]\\\\d\\\\d)\\\\d{8}|[2368]\\\\d{9}\",[10,11],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2-$3\",[\"2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])\",\"2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"1\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[68]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[23]\"],\"0$1\",1],[\"(\\\\d)(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9(?:2[2-469]|3[3-578])\",\"9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))\",\"9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 15-$3-$4\",[\"91\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9\"],\"0$1\",0,\"$1 $2 $3-$4\"]],\"0\",0,\"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?\",\"9$1\"],\"AS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|684|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([267]\\\\d{6})$\",\"684$1\",0,\"684\"],\"AT\":[\"43\",\"00\",\"1\\\\d{3,12}|2\\\\d{6,12}|43(?:(?:0\\\\d|5[02-9])\\\\d{3,9}|2\\\\d{4,5}|[3467]\\\\d{4}|8\\\\d{4,6}|9\\\\d{4,7})|5\\\\d{4,12}|8\\\\d{7,12}|9\\\\d{8,12}|(?:[367]\\\\d|4[0-24-9])\\\\d{4,11}\",[4,5,6,7,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{3,12})\",\"$1 $2\",[\"1(?:11|[2-9])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})\",\"$1 $2\",[\"517\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"5[079]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,10})\",\"$1 $2\",[\"(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,9})\",\"$1 $2\",[\"[2-467]|5[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,7})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],\"AU\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{7}(?:\\\\d(?:\\\\d{2})?)?|8[0-24-9]\\\\d{7})|[2-478]\\\\d{8}|1\\\\d{4,7}\",[5,6,7,8,9,10,12],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"16\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"16\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"14|4\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[2378]\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:30|[89])\"]]],\"0\",0,\"0|(183[12])\",0,0,0,[[\"(?:(?:2(?:[0-26-9]\\\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\\\d|2[0-8]))\\\\d{3}|8(?:51(?:0(?:0[03-9]|[12479]\\\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\\\d|7[89]|9[0-4]))|(?:6[0-8]|[78]\\\\d)\\\\d{3}|9(?:[02-9]\\\\d{3}|1(?:(?:[0-58]\\\\d|6[0135-9])\\\\d|7(?:0[0-24-9]|[1-9]\\\\d)|9(?:[0-46-9]\\\\d|5[0-79])))))\\\\d{3}\",[9]],[\"4(?:83[0-38]|93[0-6])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,[\"163\\\\d{2,6}\",[5,6,7,8,9]],[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"AW\":[\"297\",\"00\",\"(?:[25-79]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[25-9]\"]]]],\"AX\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"2\\\\d{4,9}|35\\\\d{4,5}|(?:60\\\\d\\\\d|800)\\\\d{4,6}|7\\\\d{5,11}|(?:[14]\\\\d|3[0-46-9]|50)\\\\d{4,8}\",[5,6,7,8,9,10,11,12],0,\"0\",0,0,0,0,\"18\",0,\"00\"],\"AZ\":[\"994\",\"00\",\"365\\\\d{6}|(?:[124579]\\\\d|60|88)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[28]|2|365|46\",\"1[28]|2|365[45]|46\",\"1[28]|2|365(?:4|5[02])|46\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[13-9]\"],\"0$1\"]],\"0\"],\"BA\":[\"387\",\"00\",\"6\\\\d{8}|(?:[35689]\\\\d|49|70)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[1-3]|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2-$3\",[\"[3-5]|6[56]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\"]],\"0\"],\"BB\":[\"1\",\"011\",\"(?:246|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"246$1\",0,\"246\"],\"BD\":[\"880\",\"00\",\"[1-469]\\\\d{9}|8[0-79]\\\\d{7,8}|[2-79]\\\\d{8}|[2-9]\\\\d{7}|[3-9]\\\\d{6}|[57-9]\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1-$2\",[\"31[5-8]|[459]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1-$2\",[\"3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:28|4[14]|5)|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,6})\",\"$1-$2\",[\"[13-9]|22\"],\"0$1\"],[\"(\\\\d)(\\\\d{7,8})\",\"$1-$2\",[\"2\"],\"0$1\"]],\"0\"],\"BE\":[\"32\",\"00\",\"4\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:80|9)0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[239]|4[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[15-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4\"],\"0$1\"]],\"0\"],\"BF\":[\"226\",\"00\",\"[025-7]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[025-7]\"]]]],\"BG\":[\"359\",\"00\",\"[2-7]\\\\d{6,7}|[89]\\\\d{6,8}|2\\\\d{5}\",[6,7,8,9],[[\"(\\\\d)(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"43[1-6]|70[1-9]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:70|8)0\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"43[1-7]|7\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[48]|9[08]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"BH\":[\"973\",\"00\",\"[136-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[13679]|8[047]\"]]]],\"BI\":[\"257\",\"00\",\"(?:[267]\\\\d|31)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2367]\"]]]],\"BJ\":[\"229\",\"00\",\"[25689]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[25689]\"]]]],\"BL\":[\"590\",\"00\",\"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:2[7-9]|5[12]|87)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"976[01]\\\\d{5}\"]]],\"BM\":[\"1\",\"011\",\"(?:441|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-8]\\\\d{6})$\",\"441$1\",0,\"441\"],\"BN\":[\"673\",\"00\",\"[2-578]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-578]\"]]]],\"BO\":[\"591\",\"00(?:1\\\\d)?\",\"(?:[2-467]\\\\d\\\\d|8001)\\\\d{5}\",[8,9],[[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[23]|4[46]\"]],[\"(\\\\d{8})\",\"$1\",[\"[67]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\",0,\"0(1\\\\d)?\"],\"BQ\":[\"599\",\"00\",\"(?:[34]1|7\\\\d)\\\\d{5}\",[7],0,0,0,0,0,0,\"[347]\"],\"BR\":[\"55\",\"00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)\",\"(?:[1-46-9]\\\\d\\\\d|5(?:[0-46-9]\\\\d|5[0-24679]))\\\\d{8}|[1-9]\\\\d{9}|[3589]\\\\d{8}|[34]\\\\d{7}\",[8,9,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"300|4(?:0[02]|37)\",\"4(?:02|37)0|[34]00\"]],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:[358]|90)0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1 $2-$3\",[\"[16][1-9]|[2-57-9]\"],\"($1)\"]],\"0\",0,\"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\\\d{10,11}))?\",\"$2\"],\"BS\":[\"1\",\"011\",\"(?:242|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([3-8]\\\\d{6})$\",\"242$1\",0,\"242\"],\"BT\":[\"975\",\"00\",\"[17]\\\\d{7}|[2-8]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-68]|7[246]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[67]|7\"]]]],\"BW\":[\"267\",\"00\",\"(?:0800|(?:[37]|800)\\\\d)\\\\d{6}|(?:[2-6]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[24-6]|3[15-79]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"BY\":[\"375\",\"810\",\"(?:[12]\\\\d|33|44|902)\\\\d{7}|8(?:0[0-79]\\\\d{5,7}|[1-7]\\\\d{9})|8(?:1[0-489]|[5-79]\\\\d)\\\\d{7}|8[1-79]\\\\d{6,7}|8[0-79]\\\\d{5}|8\\\\d{5}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"800\"],\"8 $1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,4})\",\"$1 $2 $3\",[\"800\"],\"8 $1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{3})\",\"$1 $2-$3\",[\"1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])\",\"1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"1(?:[56]|7[467])|2[1-3]\"],\"8 0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-4]\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"8 $1\"]],\"8\",0,\"0|80?\",0,0,0,0,\"8~10\"],\"BZ\":[\"501\",\"00\",\"(?:0800\\\\d|[2-8])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-8]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"0\"]]]],\"CA\":[\"1\",\"011\",\"(?:[2-8]\\\\d|90)\\\\d{8}\",[10],0,\"1\",0,0,0,0,0,[[\"(?:2(?:04|[23]6|[48]9|50)|3(?:06|43|6[578])|4(?:03|1[68]|3[178]|50|74)|5(?:06|1[49]|48|79|8[17])|6(?:04|13|39|47|72)|7(?:0[59]|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\\\d{6}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|(?:5(?:00|2[12]|33|44|66|77|88)|622)[2-9]\\\\d{6}\"],0,0,0,[\"600[2-9]\\\\d{6}\"]]],\"CC\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"0|([59]\\\\d{7})$\",\"8$1\",0,0,[[\"8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\\\d|70[23]|959))\\\\d{3}\",[9]],[\"4(?:83[0-38]|93[0-6])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"CD\":[\"243\",\"00\",\"[189]\\\\d{8}|[1-68]\\\\d{6}\",[7,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[1-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\"],\"CF\":[\"236\",\"00\",\"(?:[27]\\\\d{3}|8776)\\\\d{4}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[278]\"]]]],\"CG\":[\"242\",\"00\",\"(?:0\\\\d\\\\d|222|800)\\\\d{6}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[02]\"]]]],\"CH\":[\"41\",\"00\",\"8\\\\d{11}|[2-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8[047]|90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]|81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"8\"],\"0$1\"]],\"0\"],\"CI\":[\"225\",\"00\",\"[02]\\\\d{9}\",[10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d)(\\\\d{5})\",\"$1 $2 $3 $4\",[\"2\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"0\"]]]],\"CK\":[\"682\",\"00\",\"[2-578]\\\\d{4}\",[5],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"[2-578]\"]]]],\"CL\":[\"56\",\"(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0\",\"12300\\\\d{6}|6\\\\d{9,10}|[2-9]\\\\d{8}\",[9,10,11],[[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"219\",\"2196\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[1-3]\"],\"($1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9[2-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"60|8\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"60\"]]]],\"CM\":[\"237\",\"00\",\"[26]\\\\d{8}|88\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"88\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[26]|88\"]]]],\"CN\":[\"86\",\"00|1(?:[12]\\\\d|79)\\\\d\\\\d00\",\"1[127]\\\\d{8,9}|2\\\\d{9}(?:\\\\d{2})?|[12]\\\\d{6,7}|86\\\\d{6}|(?:1[03-689]\\\\d|6)\\\\d{7,9}|(?:[3-579]\\\\d|8[0-57-9])\\\\d{6,9}\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5,6})\",\"$1 $2\",[\"(?:10|2[0-57-9])[19]\",\"(?:10|2[0-57-9])(?:10|9[56])\",\"(?:10|2[0-57-9])(?:100|9[56])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]\",\"(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))[19]\",\"85[23](?:10|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:10|9[56])\",\"85[23](?:100|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100|9[56])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:4|80)0\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|2(?:[02-57-9]|1[1-9])\",\"10|2(?:[02-57-9]|1[1-9])\",\"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-578]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"1[3-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"[12]\"],\"0$1\",1]],\"0\",0,\"0|(1(?:[12]\\\\d|79)\\\\d\\\\d)\",0,0,0,0,\"00\"],\"CO\":[\"57\",\"00(?:4(?:[14]4|56)|[579])\",\"(?:(?:1\\\\d|[36])\\\\d{3}|9101)\\\\d{6}|[124-8]\\\\d{7}\",[8,10,11],[[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[146][2-9]|[2578]\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"6\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"[39]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{7})\",\"$1-$2-$3\",[\"1\"],\"0$1\",0,\"$1 $2 $3\"]],\"0\",0,\"0([3579]|4(?:[14]4|56))?\"],\"CR\":[\"506\",\"00\",\"(?:8\\\\d|90)\\\\d{8}|(?:[24-8]\\\\d{3}|3005)\\\\d{4}\",[8,10],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[3-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[89]\"]]],0,0,\"(19(?:0[0-2468]|1[09]|20|66|77|99))\"],\"CU\":[\"53\",\"119\",\"[27]\\\\d{6,7}|[34]\\\\d{5,7}|(?:5|8\\\\d\\\\d)\\\\d{7}\",[6,7,8,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"2[1-4]|[34]\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{6,7})\",\"$1 $2\",[\"7\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"5\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"8\"],\"0$1\"]],\"0\"],\"CV\":[\"238\",\"0\",\"(?:[2-59]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2-589]\"]]]],\"CW\":[\"599\",\"00\",\"(?:[34]1|60|(?:7|9\\\\d)\\\\d)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[3467]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9[4-8]\"]]],0,0,0,0,0,\"[69]\"],\"CX\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"0|([59]\\\\d{7})$\",\"8$1\",0,0,[[\"8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\\\d|7(?:0[01]|1[0-2])|958))\\\\d{3}\",[9]],[\"4(?:83[0-38]|93[0-6])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"CY\":[\"357\",\"00\",\"(?:[279]\\\\d|[58]0)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[257-9]\"]]]],\"CZ\":[\"420\",\"00\",\"(?:[2-578]\\\\d|60)\\\\d{7}|9\\\\d{8,11}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]|9[015-7]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"96\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]]],\"DE\":[\"49\",\"00\",\"[2579]\\\\d{5,14}|49(?:[34]0|69|8\\\\d)\\\\d\\\\d?|49(?:37|49|60|7[089]|9\\\\d)\\\\d{1,3}|49(?:1\\\\d|2[02-9]|3[2-689]|7[1-7])\\\\d{1,8}|(?:1|[368]\\\\d|4[0-8])\\\\d{3,13}|49(?:[05]\\\\d|[23]1|[46][1-8])\\\\d{1,9}\",[4,5,6,7,8,9,10,11,12,13,14,15],[[\"(\\\\d{2})(\\\\d{3,13})\",\"$1 $2\",[\"3[02]|40|[68]9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,12})\",\"$1 $2\",[\"2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\",\"2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2,11})\",\"$1 $2\",[\"[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]\",\"[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"138\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{2,10})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,11})\",\"$1 $2\",[\"181\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{4,10})\",\"$1 $2 $3\",[\"1(?:3|80)|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"1[67]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,12})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"185\",\"1850\",\"18500\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"18[68]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"15[0568]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"15[1279]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{8})\",\"$1 $2\",[\"18\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{7,8})\",\"$1 $2 $3\",[\"1(?:6[023]|7)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{7})\",\"$1 $2 $3\",[\"15[279]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{8})\",\"$1 $2 $3\",[\"15\"],\"0$1\"]],\"0\"],\"DJ\":[\"253\",\"00\",\"(?:2\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[27]\"]]]],\"DK\":[\"45\",\"00\",\"[2-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-9]\"]]]],\"DM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|767|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-7]\\\\d{6})$\",\"767$1\",0,\"767\"],\"DO\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"8001|8[024]9\"],\"DZ\":[\"213\",\"00\",\"(?:[1-4]|[5-79]\\\\d|80)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-8]\"],\"0$1\"]],\"0\"],\"EC\":[\"593\",\"00\",\"1\\\\d{9,10}|(?:[2-7]|9\\\\d)\\\\d{7}\",[8,9,10,11],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[2-7]\"],\"(0$1)\",0,\"$1-$2-$3\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"EE\":[\"372\",\"00\",\"8\\\\d{9}|[4578]\\\\d{7}|(?:[3-8]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88\",\"[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88\"]],[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[45]|8(?:00|[1-49])\",\"[45]|8(?:00[1-9]|[1-49])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"EG\":[\"20\",\"00\",\"[189]\\\\d{8,9}|[24-6]\\\\d{8}|[135]\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{7,8})\",\"$1 $2\",[\"[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,7})\",\"$1 $2\",[\"1[35]|[4-6]|8[2468]|9[235-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[189]\"],\"0$1\"]],\"0\"],\"EH\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],0,\"0\",0,0,0,0,\"528[89]\"],\"ER\":[\"291\",\"00\",\"[178]\\\\d{6}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[178]\"],\"0$1\"]],\"0\"],\"ES\":[\"34\",\"00\",\"[5-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]00\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-9]\"]]]],\"ET\":[\"251\",\"00\",\"(?:11|[2-59]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-59]\"],\"0$1\"]],\"0\"],\"FI\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"[1-35689]\\\\d{4}|7\\\\d{10,11}|(?:[124-7]\\\\d|3[0-46-9])\\\\d{8}|[1-9]\\\\d{5,8}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d)(\\\\d{4,9})\",\"$1 $2\",[\"[2568][1-8]|3(?:0[1-9]|[1-9])|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[12]00|[368]|70[07-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,8})\",\"$1 $2\",[\"[1245]|7[135]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,10})\",\"$1 $2\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,\"1[03-79]|[2-9]\",0,\"00\"],\"FJ\":[\"679\",\"0(?:0|52)\",\"45\\\\d{5}|(?:0800\\\\d|[235-9])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[235-9]|45\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]]],0,0,0,0,0,0,0,\"00\"],\"FK\":[\"500\",\"00\",\"[2-7]\\\\d{4}\",[5]],\"FM\":[\"691\",\"00\",\"(?:[39]\\\\d\\\\d|820)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[389]\"]]]],\"FO\":[\"298\",\"00\",\"[2-9]\\\\d{5}\",[6],[[\"(\\\\d{6})\",\"$1\",[\"[2-9]\"]]],0,0,\"(10(?:01|[12]0|88))\"],\"FR\":[\"33\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0 $1\"],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[1-79]\"],\"0$1\"]],\"0\"],\"GA\":[\"241\",\"00\",\"(?:[067]\\\\d|11)\\\\d{6}|[2-7]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"11|[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]]],0,0,\"0(11\\\\d{6}|60\\\\d{6}|61\\\\d{6}|6[256]\\\\d{6}|7[47]\\\\d{6}|76\\\\d{6})\",\"$1\"],\"GB\":[\"44\",\"00\",\"[1-357-9]\\\\d{9}|[18]\\\\d{8}|8\\\\d{6}\",[7,9,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"800\",\"8001\",\"80011\",\"800111\",\"8001111\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"845\",\"8454\",\"84546\",\"845464\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"1(?:38|5[23]|69|76|94)\",\"1(?:(?:38|69)7|5(?:24|39)|768|946)\",\"1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"1(?:[2-69][02-9]|[78])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[25]|7(?:0|6[02-9])\",\"[25]|7(?:0|6(?:[03-9]|2[356]))\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1389]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:1(?:1(?:3(?:[0-58]\\\\d\\\\d|73[0235])|4(?:[0-5]\\\\d\\\\d|69[7-9]|70[0359])|(?:5[0-26-9]|[78][0-49])\\\\d\\\\d|6(?:[0-4]\\\\d\\\\d|50[0-24-69]))|2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\\\d)\\\\d\\\\d|1(?:[0-7]\\\\d\\\\d|8(?:[02]\\\\d|1[0-278])))|(?:3(?:0\\\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\\\d\\\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\\\d{3})\\\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\\\d)|76\\\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\\\d|7[4-79])|295[5-7]|35[34]\\\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\\\d{3}\",[9,10]],[\"7(?:457[0-57-9]|700[01]|911[028])\\\\d{5}|7(?:[1-3]\\\\d\\\\d|4(?:[0-46-9]\\\\d|5[0-689])|5(?:0[0-8]|[13-9]\\\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\\\d|8[02-9]|9[0-689])|8(?:[014-9]\\\\d|[23][0-8])|9(?:[024-9]\\\\d|1[02-9]|3[0-689]))\\\\d{6}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[2-49]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-2]|2[356]|34|4[01347]|5[49]|6[0-369]|77|81|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]],0,\" x\"],\"GD\":[\"1\",\"011\",\"(?:473|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"473$1\",0,\"473\"],\"GE\":[\"995\",\"00\",\"(?:[3-57]\\\\d\\\\d|800)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"32\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[57]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[348]\"],\"0$1\"]],\"0\"],\"GF\":[\"594\",\"00\",\"(?:[56]94|80\\\\d|976)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"GG\":[\"44\",\"00\",\"(?:1481|[357-9]\\\\d{3})\\\\d{6}|8\\\\d{6}(?:\\\\d{2})?\",[7,9,10],0,\"0\",0,\"0|([25-9]\\\\d{5})$\",\"1481$1\",0,0,[[\"1481[25-9]\\\\d{5}\",[10]],[\"7(?:(?:781|839)\\\\d|911[17])\\\\d{5}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[0-3]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-2]|2[356]|34|4[01347]|5[49]|6[0-369]|77|81|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]]],\"GH\":[\"233\",\"00\",\"(?:[235]\\\\d{3}|800)\\\\d{5}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[235]\"],\"0$1\"]],\"0\"],\"GI\":[\"350\",\"00\",\"(?:[25]\\\\d\\\\d|606)\\\\d{5}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2\"]]]],\"GL\":[\"299\",\"00\",\"(?:19|[2-689]\\\\d|70)\\\\d{4}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"19|[2-9]\"]]]],\"GM\":[\"220\",\"00\",\"[2-9]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"GN\":[\"224\",\"00\",\"722\\\\d{6}|(?:3|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"3\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[67]\"]]]],\"GP\":[\"590\",\"00\",\"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"590(?:0[1-68]|1[0-2]|2[0-68]|3[1289]|4[0-24-9]|5[3-579]|6[0189]|7[08]|8[0-689]|9\\\\d)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"976[01]\\\\d{5}\"]]],\"GQ\":[\"240\",\"00\",\"222\\\\d{6}|(?:3\\\\d|55|[89]0)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235]\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[89]\"]]]],\"GR\":[\"30\",\"00\",\"5005000\\\\d{3}|8\\\\d{9,11}|(?:[269]\\\\d|70)\\\\d{8}\",[10,11,12],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"21|7\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2689]\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{5})\",\"$1 $2 $3\",[\"8\"]]]],\"GT\":[\"502\",\"00\",\"(?:1\\\\d{3}|[2-7])\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],\"GU\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|671|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([3-9]\\\\d{6})$\",\"671$1\",0,\"671\"],\"GW\":[\"245\",\"00\",\"[49]\\\\d{8}|4\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"40\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"]]]],\"GY\":[\"592\",\"001\",\"(?:862\\\\d|9008)\\\\d{3}|(?:[2-46]\\\\d|77)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46-9]\"]]]],\"HK\":[\"852\",\"00(?:30|5[09]|[126-9]?)\",\"8[0-46-9]\\\\d{6,7}|9\\\\d{4}(?:\\\\d(?:\\\\d(?:\\\\d{4})?)?)?|(?:[235-79]\\\\d|46)\\\\d{6}\",[5,6,7,8,9,11],[[\"(\\\\d{3})(\\\\d{2,5})\",\"$1 $2\",[\"900\",\"9003\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[1-4]|9(?:0[1-9]|[1-8])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]],0,0,0,0,0,0,0,\"00\"],\"HN\":[\"504\",\"00\",\"8\\\\d{10}|[237-9]\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[237-9]\"]]]],\"HR\":[\"385\",\"00\",\"(?:[24-69]\\\\d|3[0-79])\\\\d{7}|80\\\\d{5,7}|[1-79]\\\\d{7}|6\\\\d{5,6}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"6[01]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-5]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"HT\":[\"509\",\"00\",\"[2-489]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-489]\"]]]],\"HU\":[\"36\",\"00\",\"[235-7]\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"06 $1\"]],\"06\"],\"ID\":[\"62\",\"00[89]\",\"(?:(?:00[1-9]|8\\\\d)\\\\d{4}|[1-36])\\\\d{6}|00\\\\d{10}|[1-9]\\\\d{8,10}|[2-9]\\\\d{7}\",[7,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"15\"]],[\"(\\\\d{2})(\\\\d{5,9})\",\"$1 $2\",[\"2[124]|[36]1\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,7})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,8})\",\"$1 $2\",[\"[2-79]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{3})\",\"$1-$2-$3\",[\"8[1-35-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6,8})\",\"$1 $2\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"804\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"80\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"]],\"0\"],\"IE\":[\"353\",\"00\",\"(?:1\\\\d|[2569])\\\\d{6,8}|4\\\\d{6,9}|7\\\\d{8}|8\\\\d{8,9}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"2[24-9]|47|58|6[237-9]|9[35-9]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[45]0\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2569]|4[1-69]|7[14]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"81\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"4\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"IL\":[\"972\",\"0(?:0|1[2-9])\",\"1\\\\d{6}(?:\\\\d{3,5})?|[57]\\\\d{8}|[1-489]\\\\d{7}\",[7,8,9,10,11,12],[[\"(\\\\d{4})(\\\\d{3})\",\"$1-$2\",[\"125\"]],[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"121\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-489]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"12\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1-$2\",[\"159\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"1[7-9]\"]],[\"(\\\\d{3})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3-$4\",[\"15\"]]],\"0\"],\"IM\":[\"44\",\"00\",\"1624\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"0|([25-8]\\\\d{5})$\",\"1624$1\",0,\"74576|(?:16|7[56])24\"],\"IN\":[\"91\",\"00\",\"(?:000800|[2-9]\\\\d\\\\d)\\\\d{7}|1\\\\d{7,12}\",[8,9,10,11,12,13],[[\"(\\\\d{8})\",\"$1\",[\"5(?:0|2[23]|3[03]|[67]1|88)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)\"],0,1],[\"(\\\\d{4})(\\\\d{4,5})\",\"$1 $2\",[\"180\",\"1800\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"140\"],0,1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"11|2[02]|33|4[04]|79[1-7]|80[2-46]\",\"11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])\",\"11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807\",\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]\",\"1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\\\d|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]))[2-7]\"],\"0$1\",1],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"[6-9]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{2,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:6|8[06])\",\"1(?:6|8[06]0)\"],0,1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"18\"],0,1]],\"0\"],\"IO\":[\"246\",\"00\",\"3\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"3\"]]]],\"IQ\":[\"964\",\"00\",\"(?:1|7\\\\d\\\\d)\\\\d{7}|[2-6]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"IR\":[\"98\",\"00\",\"[1-9]\\\\d{9}|(?:[1-8]\\\\d\\\\d|9)\\\\d{3,4}\",[4,5,6,7,10],[[\"(\\\\d{4,5})\",\"$1\",[\"96\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,5})\",\"$1 $2\",[\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-8]\"],\"0$1\"]],\"0\"],\"IS\":[\"354\",\"00|1(?:0(?:01|[12]0)|100)\",\"(?:38\\\\d|[4-9])\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,0,\"00\"],\"IT\":[\"39\",\"00\",\"0\\\\d{5,10}|1\\\\d{8,10}|3(?:[0-8]\\\\d{7,10}|9\\\\d{7,8})|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?\",[6,7,8,9,10,11],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"0[26]\"]],[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"0[13-57-9][0159]|8(?:03|4[17]|9[2-5])\",\"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))\"]],[\"(\\\\d{4})(\\\\d{2,6})\",\"$1 $2\",[\"0(?:[13-579][2-46-8]|8[236-8])\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"894\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[26]|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1(?:44|[679])|[38]\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[13-57-9][0159]|14\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{5})\",\"$1 $2 $3\",[\"0[26]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,[[\"0669[0-79]\\\\d{1,6}|0(?:1(?:[0159]\\\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\\\d\\\\d|3(?:[0159]\\\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\\\d|6[0-8])|7(?:[0159]\\\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\\\d{2,7}\"],[\"3[1-9]\\\\d{8}|3[2-9]\\\\d{7}\",[9,10]],[\"80(?:0\\\\d{3}|3)\\\\d{3}\",[6,9]],[\"(?:0878\\\\d{3}|89(?:2\\\\d|3[04]|4(?:[0-4]|[5-9]\\\\d\\\\d)|5[0-4]))\\\\d\\\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\\\d{6}\",[6,8,9,10]],[\"1(?:78\\\\d|99)\\\\d{6}\",[9,10]],0,0,0,[\"55\\\\d{8}\",[10]],[\"84(?:[08]\\\\d{3}|[17])\\\\d{3}\",[6,9]]]],\"JE\":[\"44\",\"00\",\"1534\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"0|([0-24-8]\\\\d{5})$\",\"1534$1\",0,0,[[\"1534[0-24-8]\\\\d{5}\"],[\"7(?:(?:(?:50|82)9|937)\\\\d|7(?:00[378]|97[7-9]))\\\\d{5}\"],[\"80(?:07(?:35|81)|8901)\\\\d{4}\"],[\"(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\\\d{4}\"],[\"701511\\\\d{4}\"],0,[\"(?:3(?:0(?:07(?:35|81)|8901)|3\\\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\\\d{4})\\\\d{4}\"],[\"76(?:464|652)\\\\d{5}|76(?:0[0-2]|2[356]|34|4[01347]|5[49]|6[0-369]|77|81|9[139])\\\\d{6}\"],[\"56\\\\d{8}\"]]],\"JM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|658|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"658|876\"],\"JO\":[\"962\",\"00\",\"(?:(?:[2689]|7\\\\d)\\\\d|32|53)\\\\d{6}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2356]|87\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"70\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"JP\":[\"81\",\"010\",\"00[1-9]\\\\d{6,14}|[257-9]\\\\d{9}|(?:00|[1-9]\\\\d\\\\d)\\\\d{6}\",[8,9,10,11,12,13,14,15,16,17],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"(?:12|57|99)0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:49|80|9[16])\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[36]|4(?:2[09]|7[01])\",\"[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"[14]|[289][2-9]|5[3-9]|7[2-4679]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"800\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[257-9]\"],\"0$1\"]],\"0\"],\"KE\":[\"254\",\"000\",\"(?:[17]\\\\d\\\\d|900)\\\\d{6}|(?:2|80)0\\\\d{6,7}|[4-6]\\\\d{6,8}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"[24-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[17]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\"],\"KG\":[\"996\",\"00\",\"8\\\\d{9}|(?:[235-8]\\\\d|99)\\\\d{7}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3(?:1[346]|[24-79])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235-79]|88\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d)(\\\\d{2,3})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"KH\":[\"855\",\"00[14-9]\",\"1\\\\d{9}|[1-9]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"KI\":[\"686\",\"00\",\"(?:[37]\\\\d|6[0-79])\\\\d{6}|(?:[2-48]\\\\d|50)\\\\d{3}\",[5,8],0,\"0\"],\"KM\":[\"269\",\"00\",\"[3478]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[3478]\"]]]],\"KN\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-7]\\\\d{6})$\",\"869$1\",0,\"869\"],\"KP\":[\"850\",\"00|99\",\"85\\\\d{6}|(?:19\\\\d|[2-7])\\\\d{7}\",[8,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"]],\"0\"],\"KR\":[\"82\",\"00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))\",\"00[1-9]\\\\d{8,11}|(?:[12]|5\\\\d{3})\\\\d{7}|[13-6]\\\\d{9}|(?:[1-6]\\\\d|80)\\\\d{7}|[3-6]\\\\d{4,5}|(?:00|7)0\\\\d{8}\",[5,6,8,9,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1-$2\",[\"(?:3[1-3]|[46][1-4]|5[1-5])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"1\"]],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"[1346]|5[1-5]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1-$2-$3\",[\"5\"],\"0$1\"]],\"0\",0,\"0(8(?:[1-46-8]|5\\\\d\\\\d))?\"],\"KW\":[\"965\",\"00\",\"18\\\\d{5}|(?:[2569]\\\\d|41)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[169]|2(?:[235]|4[1-35-9])|52\"]],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[245]\"]]]],\"KY\":[\"1\",\"011\",\"(?:345|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"345$1\",0,\"345\"],\"KZ\":[\"7\",\"810\",\"(?:33622|8\\\\d{8})\\\\d{5}|[78]\\\\d{9}\",[10,14],0,\"8\",0,0,0,0,\"33|7\",0,\"8~10\"],\"LA\":[\"856\",\"00\",\"[23]\\\\d{9}|3\\\\d{8}|(?:[235-8]\\\\d|41)\\\\d{6}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2[13]|3[14]|[4-8]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"30[013-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\"],\"LB\":[\"961\",\"00\",\"[27-9]\\\\d{7}|[13-9]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27-9]\"]]],\"0\"],\"LC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|758|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-8]\\\\d{6})$\",\"758$1\",0,\"758\"],\"LI\":[\"423\",\"00\",\"90\\\\d{5}|(?:[2378]|6\\\\d\\\\d)\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[237-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"69\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]],\"0\",0,\"0|(1001)\"],\"LK\":[\"94\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[1-689]\"],\"0$1\"]],\"0\"],\"LR\":[\"231\",\"00\",\"(?:2|33|5\\\\d|77|88)\\\\d{7}|[4-6]\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[4-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3578]\"],\"0$1\"]],\"0\"],\"LS\":[\"266\",\"00\",\"(?:[256]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2568]\"]]]],\"LT\":[\"370\",\"00\",\"(?:[3469]\\\\d|52|[78]0)\\\\d{6}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"52[0-7]\"],\"(8-$1)\",1],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"8 $1\",1],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"37|4(?:[15]|6[1-8])\"],\"(8-$1)\",1],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[3-6]\"],\"(8-$1)\",1]],\"8\",0,\"[08]\"],\"LU\":[\"352\",\"00\",\"35[013-9]\\\\d{4,8}|6\\\\d{8}|35\\\\d{2,4}|(?:[2457-9]\\\\d|3[0-46-9])\\\\d{2,9}\",[4,5,6,7,8,9,10,11],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"20[2-689]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4\",[\"2(?:[0367]|4[3-8])\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"80[01]|90[015]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"20\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4 $5\",[\"2(?:[0367]|4[3-8])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,5})\",\"$1 $2 $3 $4\",[\"[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]\"]]],0,0,\"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\\\d)\"],\"LV\":[\"371\",\"00\",\"(?:[268]\\\\d|90)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[269]|8[01]\"]]]],\"LY\":[\"218\",\"00\",\"[2-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"[2-9]\"],\"0$1\"]],\"0\"],\"MA\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],[[\"(\\\\d{5})(\\\\d{4})\",\"$1-$2\",[\"5(?:29|38)\",\"5(?:29|38)[89]\",\"5(?:29|38)[89]0\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5[45]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1-$2\",[\"5(?:2[2-489]|3[5-9]|9)|892\",\"5(?:2(?:[2-49]|8[235-9])|3[5-9]|9)|892\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"8\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1-$2\",[\"[5-7]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"5(?:29(?:[189][05]|2[29]|3[01])|38[89][05])\\\\d{4}|5(?:2(?:[0-25-7]\\\\d|3[1-578]|4[02-46-8]|8[0235-7]|90)|3(?:[0-47]\\\\d|5[02-9]|6[02-8]|80|9[3-9])|(?:4[067]|5[03])\\\\d)\\\\d{5}\"],[\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:0\\\\d|1[0-5]|6[1267]|7[0-57]))\\\\d{6}\"],[\"80\\\\d{7}\"],[\"89\\\\d{7}\"],0,0,0,0,[\"592(?:4[0-2]|93)\\\\d{4}\"]]],\"MC\":[\"377\",\"00\",\"(?:[3489]|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[389]\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"6\"],\"0$1\"]],\"0\"],\"MD\":[\"373\",\"00\",\"(?:[235-7]\\\\d|[89]0)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"22|3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[25-7]\"],\"0$1\"]],\"0\"],\"ME\":[\"382\",\"00\",\"(?:20|[3-79]\\\\d)\\\\d{6}|80\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"0$1\"]],\"0\"],\"MF\":[\"590\",\"00\",\"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:0[079]|[14]3|[27][79]|30|5[0-268]|87)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"976[01]\\\\d{5}\"]]],\"MG\":[\"261\",\"00\",\"[23]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\",0,\"0|([24-9]\\\\d{6})$\",\"20$1\"],\"MH\":[\"692\",\"011\",\"329\\\\d{4}|(?:[256]\\\\d|45)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-6]\"]]],\"1\"],\"MK\":[\"389\",\"00\",\"[2-578]\\\\d{7}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[347]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[58]\"],\"0$1\"]],\"0\"],\"ML\":[\"223\",\"00\",\"[24-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-9]\"]]]],\"MM\":[\"95\",\"00\",\"1\\\\d{5,7}|95\\\\d{6}|(?:[4-7]|9[0-46-9])\\\\d{6,8}|(?:2|8\\\\d)\\\\d{5,8}\",[6,7,8,9,10],[[\"(\\\\d)(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"16|2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[4-7]|8[1-35]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4,6})\",\"$1 $2 $3\",[\"9(?:2[0-4]|[35-9]|4[137-9])\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"92\"],\"0$1\"],[\"(\\\\d)(\\\\d{5})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"MN\":[\"976\",\"001\",\"[12]\\\\d{7,9}|[57-9]\\\\d{7}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[12]1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"]],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[12]2[1-3]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])\",\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"[12]\"],\"0$1\"]],\"0\"],\"MO\":[\"853\",\"00\",\"0800\\\\d{3}|(?:28|[68]\\\\d)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[268]\"]]]],\"MP\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:67|90)0\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"670$1\",0,\"670\"],\"MQ\":[\"596\",\"00\",\"(?:69|80)\\\\d{7}|(?:59|97)6\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"MR\":[\"222\",\"00\",\"(?:[2-4]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-48]\"]]]],\"MS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|664|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([34]\\\\d{6})$\",\"664$1\",0,\"664\"],\"MT\":[\"356\",\"00\",\"3550\\\\d{4}|(?:[2579]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2357-9]\"]]]],\"MU\":[\"230\",\"0(?:0|[24-7]0|3[03])\",\"(?:5|8\\\\d\\\\d)\\\\d{7}|[2-468]\\\\d{6}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46]|8[013]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"5\"]],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"8\"]]],0,0,0,0,0,0,0,\"020\"],\"MV\":[\"960\",\"0(?:0|19)\",\"(?:800|9[0-57-9]\\\\d)\\\\d{7}|[34679]\\\\d{6}\",[7,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[3467]|9[13-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],0,0,0,0,0,0,0,\"00\"],\"MW\":[\"265\",\"00\",\"(?:[19]\\\\d|[23]1|77|88)\\\\d{7}|1\\\\d{6}\",[7,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[137-9]\"],\"0$1\"]],\"0\"],\"MX\":[\"52\",\"0[09]\",\"1(?:(?:44|99)[1-9]|65[0-689])\\\\d{7}|(?:1(?:[017]\\\\d|[235][1-9]|4[0-35-9]|6[0-46-9]|8[1-79]|9[1-8])|[2-9]\\\\d)\\\\d{8}\",[10,11],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"33|5[56]|81\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-9]\"],0,1],[\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 $3 $4\",[\"1(?:33|5[56]|81)\"],0,1],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 $3 $4\",[\"1\"],0,1]],\"01\",0,\"0(?:[12]|4[45])|1\",0,0,0,0,\"00\"],\"MY\":[\"60\",\"00\",\"1\\\\d{8,9}|(?:3\\\\d|[4-9])\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"[4-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1-$2 $3\",[\"1(?:[02469]|[378][1-9])|8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"3\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3-$4\",[\"1[36-8]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"15\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"1\"],\"0$1\"]],\"0\"],\"MZ\":[\"258\",\"00\",\"(?:2|8\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2|8[2-79]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"NA\":[\"264\",\"00\",\"[68]\\\\d{7,8}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"87\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"NC\":[\"687\",\"00\",\"[2-57-9]\\\\d{5}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1.$2.$3\",[\"[2-57-9]\"]]]],\"NE\":[\"227\",\"00\",\"[027-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"08\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[089]|2[013]|7[04]\"]]]],\"NF\":[\"672\",\"00\",\"[13]\\\\d{5}\",[6],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"1[0-3]\"]],[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"[13]\"]]],0,0,\"([0-258]\\\\d{4})$\",\"3$1\"],\"NG\":[\"234\",\"009\",\"(?:[124-7]|9\\\\d{3})\\\\d{6}|[1-9]\\\\d{7}|[78]\\\\d{9,13}\",[7,8,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"78\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]|9(?:0[3-9]|[1-9])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-7]|8[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})(\\\\d{5,6})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"]],\"0\"],\"NI\":[\"505\",\"00\",\"(?:1800|[25-8]\\\\d{3})\\\\d{4}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[125-8]\"]]]],\"NL\":[\"31\",\"00\",\"(?:[124-7]\\\\d\\\\d|3(?:[02-9]\\\\d|1[0-8]))\\\\d{6}|[89]\\\\d{6,9}|1\\\\d{4,5}\",[5,6,7,8,9,10],[[\"(\\\\d{3})(\\\\d{4,7})\",\"$1 $2\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"66\"],\"0$1\"],[\"(\\\\d)(\\\\d{8})\",\"$1 $2\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-57-9]\"],\"0$1\"]],\"0\"],\"NO\":[\"47\",\"00\",\"(?:0|[2-9]\\\\d{3})\\\\d{4}\",[5,8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[489]|59\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[235-7]\"]]],0,0,0,0,0,\"[02-689]|7[0-8]\"],\"NP\":[\"977\",\"00\",\"(?:1\\\\d|9)\\\\d{9}|[1-9]\\\\d{7}\",[8,10,11],[[\"(\\\\d)(\\\\d{7})\",\"$1-$2\",[\"1[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1-$2\",[\"1[01]|[2-8]|9(?:[1-579]|6[2-6])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"9\"]]],\"0\"],\"NR\":[\"674\",\"00\",\"(?:444|(?:55|8\\\\d)\\\\d|666)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-68]\"]]]],\"NU\":[\"683\",\"00\",\"(?:[47]|888\\\\d)\\\\d{3}\",[4,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"8\"]]]],\"NZ\":[\"64\",\"0(?:0|161)\",\"[29]\\\\d{7,9}|50\\\\d{5}(?:\\\\d{2,3})?|6[0-35-9]\\\\d{6}|7\\\\d{7,8}|8\\\\d{4,9}|(?:11\\\\d|[34])\\\\d{7}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,8})\",\"$1 $2\",[\"8[1-579]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"50[036-8]|[89]0\",\"50(?:[0367]|88)|[89]0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"24|[346]|7[2-57-9]|9[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:10|74)|[59]|80\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1|2[028]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,5})\",\"$1 $2 $3\",[\"2(?:[169]|7[0-35-9])|7|86\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"00\"],\"OM\":[\"968\",\"00\",\"(?:1505|[279]\\\\d{3}|500)\\\\d{4}|800\\\\d{5,6}\",[7,8,9],[[\"(\\\\d{3})(\\\\d{4,6})\",\"$1 $2\",[\"[58]\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[179]\"]]]],\"PA\":[\"507\",\"00\",\"(?:00800|8\\\\d{3})\\\\d{6}|[68]\\\\d{7}|[1-57-9]\\\\d{6}\",[7,8,10,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[1-57-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[68]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]]],\"PE\":[\"51\",\"19(?:1[124]|77|90)00\",\"(?:[14-8]|9\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[4-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"]]],\"0\",0,0,0,0,0,0,0,\" Anexo \"],\"PF\":[\"689\",\"00\",\"4\\\\d{5}(?:\\\\d{2})?|8\\\\d{7,8}\",[6,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4|8[7-9]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]]],\"PG\":[\"675\",\"00|140[1-3]\",\"(?:180|[78]\\\\d{3})\\\\d{4}|(?:[2-589]\\\\d|64)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"18|[2-69]|85\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[78]\"]]],0,0,0,0,0,0,0,\"00\"],\"PH\":[\"63\",\"00\",\"(?:[2-7]|9\\\\d)\\\\d{8}|2\\\\d{5}|(?:1800|8)\\\\d{7,9}\",[6,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"2\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2\",\"3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"346|4(?:27|9[35])|883\",\"3469|4(?:279|9(?:30|56))|8834\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|8[2-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{4})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"1\"]]],\"0\"],\"PK\":[\"92\",\"00\",\"122\\\\d{6}|[24-8]\\\\d{10,11}|9(?:[013-9]\\\\d{8,10}|2(?:[01]\\\\d\\\\d|2(?:[06-8]\\\\d|1[01]))\\\\d{7})|(?:[2-8]\\\\d{3}|92(?:[0-7]\\\\d|8[1-9]))\\\\d{6}|[24-9]\\\\d{8}|[89]\\\\d{7}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,7})\",\"$1 $2 $3\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{6,7})\",\"$1 $2\",[\"2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])\",\"9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{7,8})\",\"$1 $2\",[\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"58\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[24-9]\"],\"(0$1)\"]],\"0\"],\"PL\":[\"48\",\"00\",\"6\\\\d{5}(?:\\\\d{2})?|8\\\\d{9}|[1-9]\\\\d{6}(?:\\\\d{2})?\",[6,7,8,9,10],[[\"(\\\\d{5})\",\"$1\",[\"19\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"11|64\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1\",\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"64\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[2-8]|[2-7]|8[1-79]|9[145]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"8\"]]]],\"PM\":[\"508\",\"00\",\"(?:[45]|80\\\\d\\\\d)\\\\d{5}\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[45]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"PR\":[\"1\",\"011\",\"(?:[589]\\\\d\\\\d|787)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"787|939\"],\"PS\":[\"970\",\"00\",\"[2489]2\\\\d{6}|(?:1\\\\d|5)\\\\d{8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2489]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"PT\":[\"351\",\"00\",\"1693\\\\d{5}|(?:[26-9]\\\\d|30)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2[12]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"16|[236-9]\"]]]],\"PW\":[\"680\",\"01[12]\",\"(?:[24-8]\\\\d\\\\d|345|900)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"PY\":[\"595\",\"00\",\"59\\\\d{4,6}|9\\\\d{5,10}|(?:[2-46-8]\\\\d|5[0-8])\\\\d{4,7}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"[2-9]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{4,5})\",\"$1 $2\",[\"2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"87\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"9(?:[5-79]|8[1-6])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"]]],\"0\"],\"QA\":[\"974\",\"00\",\"[2-7]\\\\d{7}|800\\\\d{4}(?:\\\\d{2})?|2\\\\d{6}\",[7,8,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"2[126]|8\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]\"]]]],\"RE\":[\"262\",\"00\",\"9769\\\\d{5}|(?:26|[68]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2689]\"],\"0$1\"]],\"0\",0,0,0,0,\"26[23]|69|[89]\"],\"RO\":[\"40\",\"00\",\"(?:[2378]\\\\d|90)\\\\d{7}|[23]\\\\d{5}\",[6,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"2[3-6]\",\"2[3-6]\\\\d9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"219|31\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[23]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[237-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\" int \"],\"RS\":[\"381\",\"00\",\"38[02-9]\\\\d{6,9}|6\\\\d{7,9}|90\\\\d{4,8}|38\\\\d{5,6}|(?:7\\\\d\\\\d|800)\\\\d{3,9}|(?:[12]\\\\d|3[0-79])\\\\d{5,10}\",[6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3,9})\",\"$1 $2\",[\"(?:2[389]|39)0|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5,10})\",\"$1 $2\",[\"[1-36]\"],\"0$1\"]],\"0\"],\"RU\":[\"7\",\"810\",\"8\\\\d{13}|[347-9]\\\\d{9}\",[10,14],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-8]|2[1-9])\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2\"],\"8 ($1)\",1],[\"(\\\\d{5})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-68]|2[1-9])\",\"7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))\",\"7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[349]|8(?:[02-7]|1[1-8])\"],\"8 ($1)\",1],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"8\"],\"8 ($1)\"]],\"8\",0,0,0,0,\"3[04-689]|[489]\",0,\"8~10\"],\"RW\":[\"250\",\"00\",\"(?:06|[27]\\\\d\\\\d|[89]00)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"]]],\"0\"],\"SA\":[\"966\",\"00\",\"92\\\\d{7}|(?:[15]|8\\\\d)\\\\d{8}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\"],\"SB\":[\"677\",\"0[01]\",\"(?:[1-6]|[7-9]\\\\d\\\\d)\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7|8[4-9]|9(?:[1-8]|9[0-8])\"]]]],\"SC\":[\"248\",\"010|0[0-2]\",\"8000\\\\d{3}|(?:[249]\\\\d|64)\\\\d{5}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[246]|9[57]\"]]],0,0,0,0,0,0,0,\"00\"],\"SD\":[\"249\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],\"SE\":[\"46\",\"00\",\"(?:[26]\\\\d\\\\d|9)\\\\d{9}|[1-9]\\\\d{8}|[1-689]\\\\d{7}|[1-4689]\\\\d{6}|2\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"20\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"9(?:00|39|44)\"],\"0$1\",0,\"$1 $2\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3\",[\"[12][136]|3[356]|4[0246]|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{3})\",\"$1-$2 $3\",[\"9(?:00|39|44)\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"10|7\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1-$2 $3 $4\",[\"9\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4 $5\",[\"[26]\"],\"0$1\",0,\"$1 $2 $3 $4 $5\"]],\"0\"],\"SG\":[\"65\",\"0[0-3]\\\\d\",\"(?:(?:1\\\\d|8)\\\\d\\\\d|7000)\\\\d{7}|[3689]\\\\d{7}\",[8,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[369]|8(?:0[1-4]|[1-9])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],\"SH\":[\"290\",\"00\",\"(?:[256]\\\\d|8)\\\\d{3}\",[4,5],0,0,0,0,0,0,\"[256]\"],\"SI\":[\"386\",\"00|10(?:22|66|88|99)\",\"[1-7]\\\\d{7}|8\\\\d{4,7}|90\\\\d{4,6}\",[5,6,7,8],[[\"(\\\\d{2})(\\\\d{3,6})\",\"$1 $2\",[\"8[09]|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"59|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37][01]|4[0139]|51|6\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-57]\"],\"(0$1)\"]],\"0\",0,0,0,0,0,0,\"00\"],\"SJ\":[\"47\",\"00\",\"0\\\\d{4}|(?:[489]\\\\d|[57]9)\\\\d{6}\",[5,8],0,0,0,0,0,0,\"79\"],\"SK\":[\"421\",\"00\",\"[2-689]\\\\d{8}|[2-59]\\\\d{6}|[2-5]\\\\d{5}\",[6,7,9],[[\"(\\\\d)(\\\\d{2})(\\\\d{3,4})\",\"$1 $2 $3\",[\"21\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-5][1-8]1\",\"[3-5][1-8]1[67]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[689]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"[3-5]\"],\"0$1\"]],\"0\"],\"SL\":[\"232\",\"00\",\"(?:[237-9]\\\\d|66)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[236-9]\"],\"(0$1)\"]],\"0\"],\"SM\":[\"378\",\"00\",\"(?:0549|[5-7]\\\\d)\\\\d{6}\",[8,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"0\"]]],0,0,\"([89]\\\\d{5})$\",\"0549$1\"],\"SN\":[\"221\",\"00\",\"(?:[378]\\\\d|93)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[379]\"]]]],\"SO\":[\"252\",\"00\",\"[346-9]\\\\d{8}|[12679]\\\\d{7}|[1-5]\\\\d{6}|[1348]\\\\d{5}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"8[125]\"]],[\"(\\\\d{6})\",\"$1\",[\"[134]\"]],[\"(\\\\d)(\\\\d{6})\",\"$1 $2\",[\"[15]|2[0-79]|3[0-46-8]|4[0-7]\"]],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"24|[67]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[3478]|64|90\"]],[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"1|28|6(?:0[5-7]|[1-35-9])|9[2-9]\"]]],\"0\"],\"SR\":[\"597\",\"00\",\"(?:[2-5]|68|[78]\\\\d)\\\\d{5}\",[6,7],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"56\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1-$2\",[\"[2-5]\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[6-8]\"]]]],\"SS\":[\"211\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],\"ST\":[\"239\",\"00\",\"(?:22|9\\\\d)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[29]\"]]]],\"SV\":[\"503\",\"00\",\"[267]\\\\d{7}|[89]00\\\\d{4}(?:\\\\d{4})?\",[7,8,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[89]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[267]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]]],\"SX\":[\"1\",\"011\",\"7215\\\\d{6}|(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|(5\\\\d{6})$\",\"721$1\",0,\"721\"],\"SY\":[\"963\",\"00\",\"[1-39]\\\\d{8}|[1-5]\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-5]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\",1]],\"0\"],\"SZ\":[\"268\",\"00\",\"0800\\\\d{4}|(?:[237]\\\\d|900)\\\\d{6}\",[8,9],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[0237]\"]],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"9\"]]]],\"TA\":[\"290\",\"00\",\"8\\\\d{3}\",[4],0,0,0,0,0,0,\"8\"],\"TC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|649|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-479]\\\\d{6})$\",\"649$1\",0,\"649\"],\"TD\":[\"235\",\"00|16\",\"(?:22|[69]\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2679]\"]]],0,0,0,0,0,0,0,\"00\"],\"TG\":[\"228\",\"00\",\"[279]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[279]\"]]]],\"TH\":[\"66\",\"00[1-9]\",\"(?:001800|[2-57]|[689]\\\\d)\\\\d{7}|1\\\\d{7,9}\",[8,9,10,13],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[13-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"TJ\":[\"992\",\"810\",\"(?:00|[1-57-9]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{6})(\\\\d)(\\\\d{2})\",\"$1 $2 $3\",[\"331\",\"3317\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[34]7|91[78]\"]],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"3[1-5]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[0-57-9]\"]]],0,0,0,0,0,0,0,\"8~10\"],\"TK\":[\"690\",\"00\",\"[2-47]\\\\d{3,6}\",[4,5,6,7]],\"TL\":[\"670\",\"00\",\"7\\\\d{7}|(?:[2-47]\\\\d|[89]0)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-489]|70\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"7\"]]]],\"TM\":[\"993\",\"810\",\"[1-6]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"12\"],\"(8 $1)\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-5]\"],\"(8 $1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"6\"],\"8 $1\"]],\"8\",0,0,0,0,0,0,\"8~10\"],\"TN\":[\"216\",\"00\",\"[2-57-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-57-9]\"]]]],\"TO\":[\"676\",\"00\",\"(?:0800|(?:[5-8]\\\\d\\\\d|999)\\\\d)\\\\d{3}|[2-8]\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1-$2\",[\"[2-4]|50|6[09]|7[0-24-69]|8[05]\"]],[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]]]],\"TR\":[\"90\",\"00\",\"4\\\\d{6}|8\\\\d{11,12}|(?:[2-58]\\\\d\\\\d|900)\\\\d{7}\",[7,10,12,13],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"512|8[01589]|90\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5(?:[0-59]|61)\",\"5(?:[0-59]|616)\",\"5(?:[0-59]|6161)\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24][1-8]|3[1-9]\"],\"(0$1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{6,7})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1]],\"0\"],\"TT\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-46-8]\\\\d{6})$\",\"868$1\",0,\"868\"],\"TV\":[\"688\",\"00\",\"(?:2|7\\\\d\\\\d|90)\\\\d{4}\",[5,6,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]]],\"TW\":[\"886\",\"0(?:0[25-79]|19)\",\"[2-689]\\\\d{8}|7\\\\d{9,10}|[2-8]\\\\d{7}|2\\\\d{6}\",[7,8,9,10,11],[[\"(\\\\d{2})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"202\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[258]0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]\",\"[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\"#\"],\"TZ\":[\"255\",\"00[056]\",\"(?:[26-8]\\\\d|41|90)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[24]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"]],\"0\"],\"UA\":[\"380\",\"00\",\"[89]\\\\d{9}|[3-9]\\\\d{8}\",[9,10],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]\",\"6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[45][0-5]|5(?:0|6[37])|6(?:[12][018]|[36-8])|7|89|9[1-9]|(?:48|57)[0137-9]\",\"4[45][0-5]|5(?:0|6(?:3[14-7]|7))|6(?:[12][018]|[36-8])|7|89|9[1-9]|(?:48|57)[0137-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"[3-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"0~0\"],\"UG\":[\"256\",\"00[057]\",\"800\\\\d{6}|(?:[29]0|[347]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"202\",\"2024\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[27-9]|4(?:6[45]|[7-9])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[34]\"],\"0$1\"]],\"0\"],\"US\":[\"1\",\"011\",\"[2-9]\\\\d{9}\",[10],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"($1) $2-$3\",[\"[2-9]\"],0,1,\"$1-$2-$3\"]],\"1\",0,0,0,0,0,[[\"5(?:05(?:[2-57-9]\\\\d\\\\d|6(?:[0-35-9]\\\\d|44))|82(?:2(?:0[0-3]|[268]2)|3(?:0[02]|33)|4(?:00|4[24]|65|82)|5(?:00|29|83)|6(?:00|66|82)|777|8(?:00|88)|9(?:00|9[89])))\\\\d{4}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[39]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[0-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[0179]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[08]|3[0-289]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01579]|5[12469]|7[0-389]|8[04-69]))[2-9]\\\\d{6}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\"]]],\"UY\":[\"598\",\"0(?:0|1[3-9]\\\\d)\",\"4\\\\d{9}|[1249]\\\\d{7}|(?:[49]\\\\d|80)\\\\d{5}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"405|8|90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[124]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"00\",\" int. \"],\"UZ\":[\"998\",\"810\",\"(?:33|55|[679]\\\\d|88)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[35-9]\"],\"8 $1\"]],\"8\",0,0,0,0,0,0,\"8~10\"],\"VA\":[\"39\",\"00\",\"0\\\\d{5,10}|3[0-8]\\\\d{7,10}|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?|(?:1\\\\d|39)\\\\d{7,8}\",[6,7,8,9,10,11],0,0,0,0,0,0,\"06698\"],\"VC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|784|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-7]\\\\d{6})$\",\"784$1\",0,\"784\"],\"VE\":[\"58\",\"00\",\"[68]00\\\\d{7}|(?:[24]\\\\d|[59]0)\\\\d{8}\",[10],[[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"[24-689]\"],\"0$1\"]],\"0\"],\"VG\":[\"1\",\"011\",\"(?:284|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-578]\\\\d{6})$\",\"284$1\",0,\"284\"],\"VI\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:34|90)0\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"340$1\",0,\"340\"],\"VN\":[\"84\",\"00\",\"[12]\\\\d{9}|[135-9]\\\\d{8}|[16]\\\\d{7}|[16-8]\\\\d{6}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"1\"],0,1],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[69]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[3578]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[48]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\",1]],\"0\"],\"VU\":[\"678\",\"00\",\"[57-9]\\\\d{6}|(?:[238]\\\\d|48)\\\\d{3}\",[5,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"]]]],\"WF\":[\"681\",\"00\",\"(?:40|72)\\\\d{4}|8\\\\d{5}(?:\\\\d{3})?\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[478]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]]],\"WS\":[\"685\",\"0\",\"(?:[2-6]|8\\\\d{5})\\\\d{4}|[78]\\\\d{6}|[68]\\\\d{5}\",[5,6,7,10],[[\"(\\\\d{5})\",\"$1\",[\"[2-5]|6[1-9]\"]],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[68]\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]]],\"XK\":[\"383\",\"00\",\"[23]\\\\d{7,8}|(?:4\\\\d\\\\d|[89]00)\\\\d{5}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[23]\"],\"0$1\"]],\"0\"],\"YE\":[\"967\",\"00\",\"(?:1|7\\\\d)\\\\d{7}|[1-7]\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-6]|7[24-68]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"YT\":[\"262\",\"00\",\"80\\\\d{7}|(?:26|63)9\\\\d{6}\",[9],0,\"0\",0,0,0,0,\"269|63\"],\"ZA\":[\"27\",\"00\",\"[1-79]\\\\d{8}|8\\\\d{4,9}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"860\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"ZM\":[\"260\",\"00\",\"(?:63|80)0\\\\d{6}|(?:21|[79]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[28]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[79]\"],\"0$1\"]],\"0\"],\"ZW\":[\"263\",\"00\",\"2(?:[0-57-9]\\\\d{6,8}|6[0-24-9]\\\\d{6,7})|[38]\\\\d{9}|[35-8]\\\\d{8}|[3-6]\\\\d{7}|[1-689]\\\\d{6}|[1-3569]\\\\d{5}|[1356]\\\\d{4}\",[5,6,7,8,9,10],[[\"(\\\\d{3})(\\\\d{3,5})\",\"$1 $2\",[\"2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"80\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2\",\"2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)\",\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"29[013-9]|39|54\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,5})\",\"$1 $2\",[\"(?:25|54)8\",\"258|5483\"],\"0$1\"]],\"0\"]},\"nonGeographic\":{\"800\":[\"800\",0,\"(?:005|[1-9]\\\\d\\\\d)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"\\\\d\"]]],0,0,0,0,0,0,[0,0,[\"(?:005|[1-9]\\\\d\\\\d)\\\\d{5}\"]]],\"808\":[\"808\",0,\"[1-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,[\"[1-9]\\\\d{7}\"]]],\"870\":[\"870\",0,\"7\\\\d{11}|[35-7]\\\\d{8}\",[9,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[35-7]\"]]],0,0,0,0,0,0,[0,[\"(?:[356]|774[45])\\\\d{8}|7[6-8]\\\\d{7}\"]]],\"878\":[\"878\",0,\"10\\\\d{10}\",[12],[[\"(\\\\d{2})(\\\\d{5})(\\\\d{5})\",\"$1 $2 $3\",[\"1\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"10\\\\d{10}\"]]],\"881\":[\"881\",0,\"[0-36-9]\\\\d{8}\",[9],[[\"(\\\\d)(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"[0-36-9]\"]]],0,0,0,0,0,0,[0,[\"[0-36-9]\\\\d{8}\"]]],\"882\":[\"882\",0,\"[13]\\\\d{6}(?:\\\\d{2,5})?|285\\\\d{9}|(?:[19]\\\\d|49)\\\\d{6}\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"16|342\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"4\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"3[23]\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"34[57]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"34\"]],[\"(\\\\d{2})(\\\\d{4,5})(\\\\d{5})\",\"$1 $2 $3\",[\"[1-3]\"]]],0,0,0,0,0,0,[0,[\"342\\\\d{4}|(?:337|49)\\\\d{6}|3(?:2|47|7\\\\d{3})\\\\d{7}\",[7,8,9,10,12]],0,0,0,0,0,0,[\"1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\\\d{4}|6\\\\d{5,10})|(?:(?:285\\\\d\\\\d|3(?:45|[69]\\\\d{3}))\\\\d|9[89])\\\\d{6}\"]]],\"883\":[\"883\",0,\"210\\\\d{7}|51\\\\d{7}(?:\\\\d{3})?\",[9,10,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"510\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"510\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"(?:210|51[013]0\\\\d)\\\\d{7}|5100\\\\d{5}\"]]],\"888\":[\"888\",0,\"\\\\d{11}\",[11],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\"]],0,0,0,0,0,0,[0,0,0,0,0,0,[\"\\\\d{11}\"]]],\"979\":[\"979\",0,\"[1359]\\\\d{8}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1359]\"]]],0,0,0,0,0,0,[0,0,0,[\"[1359]\\\\d{8}\"]]]}}","// Importing from `.json.js` a workaround for a bug in web browsers' \"native\"\r\n// ES6 importing system which is uncapable of importing \"*.json\" files.\r\n// https://github.com/catamphetamine/libphonenumber-js/issues/239\r\nimport metadata from '../metadata.min.json.js'\r\nexport default metadata\r\n\r\nexport function withMetadata(func, _arguments) {\r\n\tvar args = Array.prototype.slice.call(_arguments)\r\n\targs.push(metadata)\r\n\treturn func.apply(this, args)\r\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// https://stackoverflow.com/a/46971044/970769\nvar ParseError = function ParseError(code) {\n _classCallCheck(this, ParseError);\n\n this.name = this.constructor.name;\n this.message = code;\n this.stack = new Error(code).stack;\n};\n\nexport { ParseError as default };\nParseError.prototype = Object.create(Error.prototype);\nParseError.prototype.constructor = ParseError;\n//# sourceMappingURL=ParseError.js.map","// The minimum length of the national significant number.\nexport var MIN_LENGTH_FOR_NSN = 2; // The ITU says the maximum length should be 15,\n// but one can find longer numbers in Germany.\n\nexport var MAX_LENGTH_FOR_NSN = 17; // The maximum length of the country calling code.\n\nexport var MAX_LENGTH_COUNTRY_CODE = 3; // Digits accepted in phone numbers\n// (ascii, fullwidth, arabic-indic, and eastern arabic digits).\n\nexport var VALID_DIGITS = \"0-9\\uFF10-\\uFF19\\u0660-\\u0669\\u06F0-\\u06F9\"; // `DASHES` will be right after the opening square bracket of the \"character class\"\n\nvar DASHES = \"-\\u2010-\\u2015\\u2212\\u30FC\\uFF0D\";\nvar SLASHES = \"\\uFF0F/\";\nvar DOTS = \"\\uFF0E.\";\nexport var WHITESPACE = \" \\xA0\\xAD\\u200B\\u2060\\u3000\";\nvar BRACKETS = \"()\\uFF08\\uFF09\\uFF3B\\uFF3D\\\\[\\\\]\"; // export const OPENING_BRACKETS = '(\\uFF08\\uFF3B\\\\\\['\n\nvar TILDES = \"~\\u2053\\u223C\\uFF5E\"; // Regular expression of acceptable punctuation found in phone numbers. This\n// excludes punctuation found as a leading character only. This consists of dash\n// characters, white space characters, full stops, slashes, square brackets,\n// parentheses and tildes. Full-width variants are also present.\n\nexport var VALID_PUNCTUATION = \"\".concat(DASHES).concat(SLASHES).concat(DOTS).concat(WHITESPACE).concat(BRACKETS).concat(TILDES);\nexport var PLUS_CHARS = \"+\\uFF0B\"; // const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+')\n//# sourceMappingURL=constants.js.map","// Copy-pasted from:\n// https://github.com/substack/semver-compare/blob/master/index.js\n//\n// Inlining this function because some users reported issues with\n// importing from `semver-compare` in a browser with ES6 \"native\" modules.\n//\n// Fixes `semver-compare` not being able to compare versions with alpha/beta/etc \"tags\".\n// https://github.com/catamphetamine/libphonenumber-js/issues/381\nexport default function (a, b) {\n a = a.split('-');\n b = b.split('-');\n var pa = a[0].split('.');\n var pb = b[0].split('.');\n\n for (var i = 0; i < 3; i++) {\n var na = Number(pa[i]);\n var nb = Number(pb[i]);\n if (na > nb) return 1;\n if (nb > na) return -1;\n if (!isNaN(na) && isNaN(nb)) return 1;\n if (isNaN(na) && !isNaN(nb)) return -1;\n }\n\n if (a[1] && b[1]) {\n return a[1] > b[1] ? 1 : a[1] < b[1] ? -1 : 0;\n }\n\n return !a[1] && b[1] ? 1 : a[1] && !b[1] ? -1 : 0;\n}\n//# sourceMappingURL=semver-compare.js.map","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport compare from './tools/semver-compare'; // Added \"possibleLengths\" and renamed\n// \"country_phone_code_to_countries\" to \"country_calling_codes\".\n\nvar V2 = '1.0.18'; // Added \"idd_prefix\" and \"default_idd_prefix\".\n\nvar V3 = '1.2.0'; // Moved `001` country code to \"nonGeographic\" section of metadata.\n\nvar V4 = '1.7.35';\nvar DEFAULT_EXT_PREFIX = ' ext. ';\nvar CALLING_CODE_REG_EXP = /^\\d+$/;\n/**\r\n * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md\r\n */\n\nvar Metadata =\n/*#__PURE__*/\nfunction () {\n function Metadata(metadata) {\n _classCallCheck(this, Metadata);\n\n validateMetadata(metadata);\n this.metadata = metadata;\n setVersion.call(this, metadata);\n }\n\n _createClass(Metadata, [{\n key: \"getCountries\",\n value: function getCountries() {\n return Object.keys(this.metadata.countries).filter(function (_) {\n return _ !== '001';\n });\n }\n }, {\n key: \"getCountryMetadata\",\n value: function getCountryMetadata(countryCode) {\n return this.metadata.countries[countryCode];\n }\n }, {\n key: \"nonGeographic\",\n value: function nonGeographic() {\n if (this.v1 || this.v2 || this.v3) return; // `nonGeographical` was a typo.\n // It's present in metadata generated from `1.7.35` to `1.7.37`.\n\n return this.metadata.nonGeographic || this.metadata.nonGeographical;\n }\n }, {\n key: \"hasCountry\",\n value: function hasCountry(country) {\n return this.getCountryMetadata(country) !== undefined;\n }\n }, {\n key: \"hasCallingCode\",\n value: function hasCallingCode(callingCode) {\n if (this.getCountryCodesForCallingCode(callingCode)) {\n return true;\n }\n\n if (this.nonGeographic()) {\n if (this.nonGeographic()[callingCode]) {\n return true;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return true;\n }\n }\n }\n }, {\n key: \"isNonGeographicCallingCode\",\n value: function isNonGeographicCallingCode(callingCode) {\n if (this.nonGeographic()) {\n return this.nonGeographic()[callingCode] ? true : false;\n } else {\n return this.getCountryCodesForCallingCode(callingCode) ? false : true;\n }\n } // Deprecated.\n\n }, {\n key: \"country\",\n value: function country(countryCode) {\n return this.selectNumberingPlan(countryCode);\n }\n }, {\n key: \"selectNumberingPlan\",\n value: function selectNumberingPlan(countryCode, callingCode) {\n // Supports just passing `callingCode` as the first argument.\n if (countryCode && CALLING_CODE_REG_EXP.test(countryCode)) {\n callingCode = countryCode;\n countryCode = null;\n }\n\n if (countryCode && countryCode !== '001') {\n if (!this.hasCountry(countryCode)) {\n throw new Error(\"Unknown country: \".concat(countryCode));\n }\n\n this.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this);\n } else if (callingCode) {\n if (!this.hasCallingCode(callingCode)) {\n throw new Error(\"Unknown calling code: \".concat(callingCode));\n }\n\n this.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this);\n } else {\n this.numberingPlan = undefined;\n }\n\n return this;\n }\n }, {\n key: \"getCountryCodesForCallingCode\",\n value: function getCountryCodesForCallingCode(callingCode) {\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes) {\n // Metadata before V4 included \"non-geographic entity\" calling codes\n // inside `country_calling_codes` (for example, `\"881\":[\"001\"]`).\n // Now the semantics of `country_calling_codes` has changed:\n // it's specifically for \"countries\" now.\n // Older versions of custom metadata will simply skip parsing\n // \"non-geographic entity\" phone numbers with new versions\n // of this library: it's not considered a bug,\n // because such numbers are extremely rare,\n // and developers extremely rarely use custom metadata.\n if (countryCodes.length === 1 && countryCodes[0].length === 3) {\n return;\n }\n\n return countryCodes;\n }\n }\n }, {\n key: \"getCountryCodeForCallingCode\",\n value: function getCountryCodeForCallingCode(callingCode) {\n var countryCodes = this.getCountryCodesForCallingCode(callingCode);\n\n if (countryCodes) {\n return countryCodes[0];\n }\n }\n }, {\n key: \"getNumberingPlanMetadata\",\n value: function getNumberingPlanMetadata(callingCode) {\n var countryCode = this.getCountryCodeForCallingCode(callingCode);\n\n if (countryCode) {\n return this.getCountryMetadata(countryCode);\n }\n\n if (this.nonGeographic()) {\n var metadata = this.nonGeographic()[callingCode];\n\n if (metadata) {\n return metadata;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return this.metadata.countries['001'];\n }\n }\n } // Deprecated.\n\n }, {\n key: \"countryCallingCode\",\n value: function countryCallingCode() {\n return this.numberingPlan.callingCode();\n } // Deprecated.\n\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n return this.numberingPlan.IDDPrefix();\n } // Deprecated.\n\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n return this.numberingPlan.defaultIDDPrefix();\n } // Deprecated.\n\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n return this.numberingPlan.nationalNumberPattern();\n } // Deprecated.\n\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n return this.numberingPlan.possibleLengths();\n } // Deprecated.\n\n }, {\n key: \"formats\",\n value: function formats() {\n return this.numberingPlan.formats();\n } // Deprecated.\n\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n return this.numberingPlan.nationalPrefixForParsing();\n } // Deprecated.\n\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.numberingPlan.nationalPrefixTransformRule();\n } // Deprecated.\n\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.numberingPlan.leadingDigits();\n } // Deprecated.\n\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n return this.numberingPlan.hasTypes();\n } // Deprecated.\n\n }, {\n key: \"type\",\n value: function type(_type) {\n return this.numberingPlan.type(_type);\n } // Deprecated.\n\n }, {\n key: \"ext\",\n value: function ext() {\n return this.numberingPlan.ext();\n }\n }, {\n key: \"countryCallingCodes\",\n value: function countryCallingCodes() {\n if (this.v1) return this.metadata.country_phone_code_to_countries;\n return this.metadata.country_calling_codes;\n } // Deprecated.\n\n }, {\n key: \"chooseCountryByCountryCallingCode\",\n value: function chooseCountryByCountryCallingCode(callingCode) {\n return this.selectNumberingPlan(callingCode);\n }\n }, {\n key: \"hasSelectedNumberingPlan\",\n value: function hasSelectedNumberingPlan() {\n return this.numberingPlan !== undefined;\n }\n }]);\n\n return Metadata;\n}();\n\nexport { Metadata as default };\n\nvar NumberingPlan =\n/*#__PURE__*/\nfunction () {\n function NumberingPlan(metadata, globalMetadataObject) {\n _classCallCheck(this, NumberingPlan);\n\n this.globalMetadataObject = globalMetadataObject;\n this.metadata = metadata;\n setVersion.call(this, globalMetadataObject.metadata);\n }\n\n _createClass(NumberingPlan, [{\n key: \"callingCode\",\n value: function callingCode() {\n return this.metadata[0];\n } // Formatting information for regions which share\n // a country calling code is contained by only one region\n // for performance reasons. For example, for NANPA region\n // (\"North American Numbering Plan Administration\",\n // which includes USA, Canada, Cayman Islands, Bahamas, etc)\n // it will be contained in the metadata for `US`.\n\n }, {\n key: \"getDefaultCountryMetadataForRegion\",\n value: function getDefaultCountryMetadataForRegion() {\n return this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode());\n } // Is always present.\n\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[1];\n } // Is only present when a country supports multiple IDD prefixes.\n\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[12];\n }\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n if (this.v1 || this.v2) return this.metadata[1];\n return this.metadata[2];\n } // Is always present.\n\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.v1) return;\n return this.metadata[this.v2 ? 2 : 3];\n }\n }, {\n key: \"_getFormats\",\n value: function _getFormats(metadata) {\n return metadata[this.v1 ? 2 : this.v2 ? 3 : 4];\n } // For countries of the same region (e.g. NANPA)\n // formats are all stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"formats\",\n value: function formats() {\n var _this = this;\n\n var formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || [];\n return formats.map(function (_) {\n return new Format(_, _this);\n });\n }\n }, {\n key: \"nationalPrefix\",\n value: function nationalPrefix() {\n return this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5];\n }\n }, {\n key: \"_getNationalPrefixFormattingRule\",\n value: function _getNationalPrefixFormattingRule(metadata) {\n return metadata[this.v1 ? 4 : this.v2 ? 5 : 6];\n } // For countries of the same region (e.g. NANPA)\n // national prefix formatting rule is stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"_nationalPrefixForParsing\",\n value: function _nationalPrefixForParsing() {\n return this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7];\n }\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n // If `national_prefix_for_parsing` is not set explicitly,\n // then infer it from `national_prefix` (if any)\n return this._nationalPrefixForParsing() || this.nationalPrefix();\n }\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8];\n }\n }, {\n key: \"_getNationalPrefixIsOptionalWhenFormatting\",\n value: function _getNationalPrefixIsOptionalWhenFormatting() {\n return !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9];\n } // For countries of the same region (e.g. NANPA)\n // \"national prefix is optional when formatting\" flag is\n // stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) || this._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10];\n }\n }, {\n key: \"types\",\n value: function types() {\n return this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11];\n }\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n // Versions 1.2.0 - 1.2.4: can be `[]`.\n\n /* istanbul ignore next */\n if (this.types() && this.types().length === 0) {\n return false;\n } // Versions <= 1.2.4: can be `undefined`.\n // Version >= 1.2.5: can be `0`.\n\n\n return !!this.types();\n }\n }, {\n key: \"type\",\n value: function type(_type2) {\n if (this.hasTypes() && getType(this.types(), _type2)) {\n return new Type(getType(this.types(), _type2), this);\n }\n }\n }, {\n key: \"ext\",\n value: function ext() {\n if (this.v1 || this.v2) return DEFAULT_EXT_PREFIX;\n return this.metadata[13] || DEFAULT_EXT_PREFIX;\n }\n }]);\n\n return NumberingPlan;\n}();\n\nvar Format =\n/*#__PURE__*/\nfunction () {\n function Format(format, metadata) {\n _classCallCheck(this, Format);\n\n this._format = format;\n this.metadata = metadata;\n }\n\n _createClass(Format, [{\n key: \"pattern\",\n value: function pattern() {\n return this._format[0];\n }\n }, {\n key: \"format\",\n value: function format() {\n return this._format[1];\n }\n }, {\n key: \"leadingDigitsPatterns\",\n value: function leadingDigitsPatterns() {\n return this._format[2] || [];\n }\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._format[3] || this.metadata.nationalPrefixFormattingRule();\n }\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n }\n }, {\n key: \"nationalPrefixIsMandatoryWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsMandatoryWhenFormattingInNationalFormat() {\n // National prefix is omitted if there's no national prefix formatting rule\n // set for this country, or when the national prefix formatting rule\n // contains no national prefix itself, or when this rule is set but\n // national prefix is optional for this phone number format\n // (and it is not enforced explicitly)\n return this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n } // Checks whether national prefix formatting rule contains national prefix.\n\n }, {\n key: \"usesNationalPrefix\",\n value: function usesNationalPrefix() {\n return this.nationalPrefixFormattingRule() && // Check that national prefix formatting rule is not a \"dummy\" one.\n !FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule()) // In compressed metadata, `this.nationalPrefixFormattingRule()` is `0`\n // when `national_prefix_formatting_rule` is not present.\n // So, `true` or `false` are returned explicitly here, so that\n // `0` number isn't returned.\n ? true : false;\n }\n }, {\n key: \"internationalFormat\",\n value: function internationalFormat() {\n return this._format[5] || this.format();\n }\n }]);\n\n return Format;\n}();\n/**\r\n * A pattern that is used to determine if the national prefix formatting rule\r\n * has the first group only, i.e., does not start with the national prefix.\r\n * Note that the pattern explicitly allows for unbalanced parentheses.\r\n */\n\n\nvar FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\\(?\\$1\\)?$/;\n\nvar Type =\n/*#__PURE__*/\nfunction () {\n function Type(type, metadata) {\n _classCallCheck(this, Type);\n\n this.type = type;\n this.metadata = metadata;\n }\n\n _createClass(Type, [{\n key: \"pattern\",\n value: function pattern() {\n if (this.metadata.v1) return this.type;\n return this.type[0];\n }\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.metadata.v1) return;\n return this.type[1] || this.metadata.possibleLengths();\n }\n }]);\n\n return Type;\n}();\n\nfunction getType(types, type) {\n switch (type) {\n case 'FIXED_LINE':\n return types[0];\n\n case 'MOBILE':\n return types[1];\n\n case 'TOLL_FREE':\n return types[2];\n\n case 'PREMIUM_RATE':\n return types[3];\n\n case 'PERSONAL_NUMBER':\n return types[4];\n\n case 'VOICEMAIL':\n return types[5];\n\n case 'UAN':\n return types[6];\n\n case 'PAGER':\n return types[7];\n\n case 'VOIP':\n return types[8];\n\n case 'SHARED_COST':\n return types[9];\n }\n}\n\nexport function validateMetadata(metadata) {\n if (!metadata) {\n throw new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.');\n } // `country_phone_code_to_countries` was renamed to\n // `country_calling_codes` in `1.0.18`.\n\n\n if (!is_object(metadata) || !is_object(metadata.countries)) {\n throw new Error(\"[libphonenumber-js] `metadata` argument was passed but it's not a valid metadata. Must be an object having `.countries` child object property. Got \".concat(is_object(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + type_of(metadata) + ': ' + metadata, \".\"));\n }\n} // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\nvar is_object = function is_object(_) {\n return _typeof(_) === 'object';\n}; // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\n\nvar type_of = function type_of(_) {\n return _typeof(_);\n};\n/**\r\n * Returns extension prefix for a country.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string?}\r\n * @example\r\n * // Returns \" ext. \"\r\n * getExtPrefix(\"US\")\r\n */\n\n\nexport function getExtPrefix(country, metadata) {\n metadata = new Metadata(metadata);\n\n if (metadata.hasCountry(country)) {\n return metadata.country(country).ext();\n }\n\n return DEFAULT_EXT_PREFIX;\n}\n/**\r\n * Returns \"country calling code\" for a country.\r\n * Throws an error if the country doesn't exist or isn't supported by this library.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string}\r\n * @example\r\n * // Returns \"44\"\r\n * getCountryCallingCode(\"GB\")\r\n */\n\nexport function getCountryCallingCode(country, metadata) {\n metadata = new Metadata(metadata);\n\n if (metadata.hasCountry(country)) {\n return metadata.country(country).countryCallingCode();\n }\n\n throw new Error(\"Unknown country: \".concat(country));\n}\nexport function isSupportedCountry(country, metadata) {\n // metadata = new Metadata(metadata)\n // return metadata.hasCountry(country)\n return metadata.countries[country] !== undefined;\n}\n\nfunction setVersion(metadata) {\n var version = metadata.version;\n\n if (typeof version === 'number') {\n this.v1 = version === 1;\n this.v2 = version === 2;\n this.v3 = version === 3;\n this.v4 = version === 4;\n } else {\n if (!version) {\n this.v1 = true;\n } else if (compare(version, V3) === -1) {\n this.v2 = true;\n } else if (compare(version, V4) === -1) {\n this.v3 = true;\n } else {\n this.v4 = true;\n }\n }\n} // const ISO_COUNTRY_CODE = /^[A-Z]{2}$/\n// function isCountryCode(countryCode) {\n// \treturn ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode)\n// }\n//# sourceMappingURL=metadata.js.map","import { VALID_DIGITS } from '../../constants'; // The RFC 3966 format for extensions.\n\nvar RFC3966_EXTN_PREFIX = ';ext=';\n/**\r\n * Helper method for constructing regular expressions for parsing. Creates\r\n * an expression that captures up to max_length digits.\r\n * @return {string} RegEx pattern to capture extension digits.\r\n */\n\nvar getExtensionDigitsPattern = function getExtensionDigitsPattern(maxLength) {\n return \"([\".concat(VALID_DIGITS, \"]{1,\").concat(maxLength, \"})\");\n};\n/**\r\n * Helper initialiser method to create the regular-expression pattern to match\r\n * extensions.\r\n * Copy-pasted from Google's `libphonenumber`:\r\n * https://github.com/google/libphonenumber/blob/55b2646ec9393f4d3d6661b9c82ef9e258e8b829/javascript/i18n/phonenumbers/phonenumberutil.js#L759-L766\r\n * @return {string} RegEx pattern to capture extensions.\r\n */\n\n\nexport default function createExtensionPattern(purpose) {\n // We cap the maximum length of an extension based on the ambiguity of the way\n // the extension is prefixed. As per ITU, the officially allowed length for\n // extensions is actually 40, but we don't support this since we haven't seen real\n // examples and this introduces many false interpretations as the extension labels\n // are not standardized.\n\n /** @type {string} */\n var extLimitAfterExplicitLabel = '20';\n /** @type {string} */\n\n var extLimitAfterLikelyLabel = '15';\n /** @type {string} */\n\n var extLimitAfterAmbiguousChar = '9';\n /** @type {string} */\n\n var extLimitWhenNotSure = '6';\n /** @type {string} */\n\n var possibleSeparatorsBetweenNumberAndExtLabel = \"[ \\xA0\\\\t,]*\"; // Optional full stop (.) or colon, followed by zero or more spaces/tabs/commas.\n\n /** @type {string} */\n\n var possibleCharsAfterExtLabel = \"[:\\\\.\\uFF0E]?[ \\xA0\\\\t,-]*\";\n /** @type {string} */\n\n var optionalExtnSuffix = \"#?\"; // Here the extension is called out in more explicit way, i.e mentioning it obvious\n // patterns like \"ext.\".\n\n /** @type {string} */\n\n var explicitExtLabels = \"(?:e?xt(?:ensi(?:o\\u0301?|\\xF3))?n?|\\uFF45?\\uFF58\\uFF54\\uFF4E?|\\u0434\\u043E\\u0431|anexo)\"; // One-character symbols that can be used to indicate an extension, and less\n // commonly used or more ambiguous extension labels.\n\n /** @type {string} */\n\n var ambiguousExtLabels = \"(?:[x\\uFF58#\\uFF03~\\uFF5E]|int|\\uFF49\\uFF4E\\uFF54)\"; // When extension is not separated clearly.\n\n /** @type {string} */\n\n var ambiguousSeparator = \"[- ]+\"; // This is the same as possibleSeparatorsBetweenNumberAndExtLabel, but not matching\n // comma as extension label may have it.\n\n /** @type {string} */\n\n var possibleSeparatorsNumberExtLabelNoComma = \"[ \\xA0\\\\t]*\"; // \",,\" is commonly used for auto dialling the extension when connected. First\n // comma is matched through possibleSeparatorsBetweenNumberAndExtLabel, so we do\n // not repeat it here. Semi-colon works in Iphone and Android also to pop up a\n // button with the extension number following.\n\n /** @type {string} */\n\n var autoDiallingAndExtLabelsFound = \"(?:,{2}|;)\";\n /** @type {string} */\n\n var rfcExtn = RFC3966_EXTN_PREFIX + getExtensionDigitsPattern(extLimitAfterExplicitLabel);\n /** @type {string} */\n\n var explicitExtn = possibleSeparatorsBetweenNumberAndExtLabel + explicitExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterExplicitLabel) + optionalExtnSuffix;\n /** @type {string} */\n\n var ambiguousExtn = possibleSeparatorsBetweenNumberAndExtLabel + ambiguousExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix;\n /** @type {string} */\n\n var americanStyleExtnWithSuffix = ambiguousSeparator + getExtensionDigitsPattern(extLimitWhenNotSure) + \"#\";\n /** @type {string} */\n\n var autoDiallingExtn = possibleSeparatorsNumberExtLabelNoComma + autoDiallingAndExtLabelsFound + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterLikelyLabel) + optionalExtnSuffix;\n /** @type {string} */\n\n var onlyCommasExtn = possibleSeparatorsNumberExtLabelNoComma + \"(?:,)+\" + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix; // The first regular expression covers RFC 3966 format, where the extension is added\n // using \";ext=\". The second more generic where extension is mentioned with explicit\n // labels like \"ext:\". In both the above cases we allow more numbers in extension than\n // any other extension labels. The third one captures when single character extension\n // labels or less commonly used labels are used. In such cases we capture fewer\n // extension digits in order to reduce the chance of falsely interpreting two\n // numbers beside each other as a number + extension. The fourth one covers the\n // special case of American numbers where the extension is written with a hash\n // at the end, such as \"- 503#\". The fifth one is exclusively for extension\n // autodialling formats which are used when dialling and in this case we accept longer\n // extensions. The last one is more liberal on the number of commas that acts as\n // extension labels, so we have a strict cap on the number of digits in such extensions.\n\n return rfcExtn + \"|\" + explicitExtn + \"|\" + ambiguousExtn + \"|\" + americanStyleExtnWithSuffix + \"|\" + autoDiallingExtn + \"|\" + onlyCommasExtn;\n}\n//# sourceMappingURL=createExtensionPattern.js.map","import { MIN_LENGTH_FOR_NSN, VALID_DIGITS, VALID_PUNCTUATION, PLUS_CHARS } from '../constants';\nimport createExtensionPattern from './extension/createExtensionPattern'; // Regular expression of viable phone numbers. This is location independent.\n// Checks we have at least three leading digits, and only valid punctuation,\n// alpha characters and digits in the phone number. Does not include extension\n// data. The symbol 'x' is allowed here as valid punctuation since it is often\n// used as a placeholder for carrier codes, for example in Brazilian phone\n// numbers. We also allow multiple '+' characters at the start.\n//\n// Corresponds to the following:\n// [digits]{minLengthNsn}|\n// plus_sign*\n// (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])*\n//\n// The first reg-ex is to allow short numbers (two digits long) to be parsed if\n// they are entered as \"15\" etc, but only if there is no punctuation in them.\n// The second expression restricts the number of digits to three or more, but\n// then allows them to be in international form, and to have alpha-characters\n// and punctuation. We split up the two reg-exes here and combine them when\n// creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it\n// with ^ and append $ to each branch.\n//\n// \"Note VALID_PUNCTUATION starts with a -,\n// so must be the first in the range\" (c) Google devs.\n// (wtf did they mean by saying that; probably nothing)\n//\n\nvar MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + VALID_DIGITS + ']{' + MIN_LENGTH_FOR_NSN + '}'; //\n// And this is the second reg-exp:\n// (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp)\n//\n\nexport var VALID_PHONE_NUMBER = '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){3,}' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*'; // This regular expression isn't present in Google's `libphonenumber`\n// and is only used to determine whether the phone number being input\n// is too short for it to even consider it a \"valid\" number.\n// This is just a way to differentiate between a really invalid phone\n// number like \"abcde\" and a valid phone number that a user has just\n// started inputting, like \"+1\" or \"1\": both these cases would be\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\n// library can provide a more detailed error message — whether it's\n// really \"not a number\", or is it just a start of a valid phone number.\n\nvar VALID_PHONE_NUMBER_START_REG_EXP = new RegExp('^' + '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){1,2}' + '$', 'i');\nexport var VALID_PHONE_NUMBER_WITH_EXTENSION = VALID_PHONE_NUMBER + // Phone number extensions\n'(?:' + createExtensionPattern() + ')?'; // The combined regular expression for valid phone numbers:\n//\n\nvar VALID_PHONE_NUMBER_PATTERN = new RegExp( // Either a short two-digit-only phone number\n'^' + MIN_LENGTH_PHONE_NUMBER_PATTERN + '$' + '|' + // Or a longer fully parsed phone number (min 3 characters)\n'^' + VALID_PHONE_NUMBER_WITH_EXTENSION + '$', 'i'); // Checks to see if the string of characters could possibly be a phone number at\n// all. At the moment, checks to see that the string begins with at least 2\n// digits, ignoring any punctuation commonly found in phone numbers. This method\n// does not require the number to be normalized in advance - but does assume\n// that leading non-number symbols have been removed, such as by the method\n// `extract_possible_number`.\n//\n\nexport default function isViablePhoneNumber(number) {\n return number.length >= MIN_LENGTH_FOR_NSN && VALID_PHONE_NUMBER_PATTERN.test(number);\n} // This is just a way to differentiate between a really invalid phone\n// number like \"abcde\" and a valid phone number that a user has just\n// started inputting, like \"+1\" or \"1\": both these cases would be\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\n// library can provide a more detailed error message — whether it's\n// really \"not a number\", or is it just a start of a valid phone number.\n\nexport function isViablePhoneNumberStart(number) {\n return VALID_PHONE_NUMBER_START_REG_EXP.test(number);\n}\n//# sourceMappingURL=isViablePhoneNumber.js.map","import createExtensionPattern from './createExtensionPattern'; // Regexp of all known extension prefixes used by different regions followed by\n// 1 or more valid digits, for use when parsing.\n\nvar EXTN_PATTERN = new RegExp('(?:' + createExtensionPattern() + ')$', 'i'); // Strips any extension (as in, the part of the number dialled after the call is\n// connected, usually indicated with extn, ext, x or similar) from the end of\n// the number, and returns it.\n\nexport default function extractExtension(number) {\n var start = number.search(EXTN_PATTERN);\n\n if (start < 0) {\n return {};\n } // If we find a potential extension, and the number preceding this is a viable\n // number, we assume it is an extension.\n\n\n var numberWithoutExtension = number.slice(0, start);\n var matches = number.match(EXTN_PATTERN);\n var i = 1;\n\n while (i < matches.length) {\n if (matches[i]) {\n return {\n number: numberWithoutExtension,\n ext: matches[i]\n };\n }\n\n i++;\n }\n}\n//# sourceMappingURL=extractExtension.js.map","// These mappings map a character (key) to a specific digit that should\n// replace it for normalization purposes. Non-European digits that\n// may be used in phone numbers are mapped to a European equivalent.\n//\n// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\n//\nexport var DIGITS = {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n \"\\uFF10\": '0',\n // Fullwidth digit 0\n \"\\uFF11\": '1',\n // Fullwidth digit 1\n \"\\uFF12\": '2',\n // Fullwidth digit 2\n \"\\uFF13\": '3',\n // Fullwidth digit 3\n \"\\uFF14\": '4',\n // Fullwidth digit 4\n \"\\uFF15\": '5',\n // Fullwidth digit 5\n \"\\uFF16\": '6',\n // Fullwidth digit 6\n \"\\uFF17\": '7',\n // Fullwidth digit 7\n \"\\uFF18\": '8',\n // Fullwidth digit 8\n \"\\uFF19\": '9',\n // Fullwidth digit 9\n \"\\u0660\": '0',\n // Arabic-indic digit 0\n \"\\u0661\": '1',\n // Arabic-indic digit 1\n \"\\u0662\": '2',\n // Arabic-indic digit 2\n \"\\u0663\": '3',\n // Arabic-indic digit 3\n \"\\u0664\": '4',\n // Arabic-indic digit 4\n \"\\u0665\": '5',\n // Arabic-indic digit 5\n \"\\u0666\": '6',\n // Arabic-indic digit 6\n \"\\u0667\": '7',\n // Arabic-indic digit 7\n \"\\u0668\": '8',\n // Arabic-indic digit 8\n \"\\u0669\": '9',\n // Arabic-indic digit 9\n \"\\u06F0\": '0',\n // Eastern-Arabic digit 0\n \"\\u06F1\": '1',\n // Eastern-Arabic digit 1\n \"\\u06F2\": '2',\n // Eastern-Arabic digit 2\n \"\\u06F3\": '3',\n // Eastern-Arabic digit 3\n \"\\u06F4\": '4',\n // Eastern-Arabic digit 4\n \"\\u06F5\": '5',\n // Eastern-Arabic digit 5\n \"\\u06F6\": '6',\n // Eastern-Arabic digit 6\n \"\\u06F7\": '7',\n // Eastern-Arabic digit 7\n \"\\u06F8\": '8',\n // Eastern-Arabic digit 8\n \"\\u06F9\": '9' // Eastern-Arabic digit 9\n\n};\nexport function parseDigit(character) {\n return DIGITS[character];\n}\n/**\r\n * Parses phone number digits from a string.\r\n * Drops all punctuation leaving only digits.\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * parseDigits('8 (800) 555')\r\n * // Outputs '8800555'.\r\n * ```\r\n */\n\nexport default function parseDigits(string) {\n var result = ''; // Using `.split('')` here instead of normal `for ... of`\n // because the importing application doesn't neccessarily include an ES6 polyfill.\n // The `.split('')` approach discards \"exotic\" UTF-8 characters\n // (the ones consisting of four bytes) but digits\n // (including non-European ones) don't fall into that range\n // so such \"exotic\" characters would be discarded anyway.\n\n for (var _iterator = string.split(''), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var character = _ref;\n var digit = parseDigit(character);\n\n if (digit) {\n result += digit;\n }\n }\n\n return result;\n}\n//# sourceMappingURL=parseDigits.js.map","import { parseDigit } from './helpers/parseDigits';\n/**\r\n * Parses phone number characters from a string.\r\n * Drops all punctuation leaving only digits and the leading `+` sign (if any).\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * // Outputs '8800555'.\r\n * parseIncompletePhoneNumber('8 (800) 555')\r\n * // Outputs '+7800555'.\r\n * parseIncompletePhoneNumber('+7 800 555')\r\n * ```\r\n */\n\nexport default function parseIncompletePhoneNumber(string) {\n var result = ''; // Using `.split('')` here instead of normal `for ... of`\n // because the importing application doesn't neccessarily include an ES6 polyfill.\n // The `.split('')` approach discards \"exotic\" UTF-8 characters\n // (the ones consisting of four bytes) but digits\n // (including non-European ones) don't fall into that range\n // so such \"exotic\" characters would be discarded anyway.\n\n for (var _iterator = string.split(''), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var character = _ref;\n result += parsePhoneNumberCharacter(character, result) || '';\n }\n\n return result;\n}\n/**\r\n * Parses next character while parsing phone number digits (including a `+`)\r\n * from text: discards everything except `+` and digits, and `+` is only allowed\r\n * at the start of a phone number.\r\n * For example, is used in `react-phone-number-input` where it uses\r\n * [`input-format`](https://gitlab.com/catamphetamine/input-format).\r\n * @param {string} character - Yet another character from raw input string.\r\n * @param {string?} prevParsedCharacters - Previous parsed characters.\r\n * @param {object} meta - Optional custom use-case-specific metadata.\r\n * @return {string?} The parsed character.\r\n */\n\nexport function parsePhoneNumberCharacter(character, prevParsedCharacters) {\n // Only allow a leading `+`.\n if (character === '+') {\n // If this `+` is not the first parsed character\n // then discard it.\n if (prevParsedCharacters) {\n return;\n }\n\n return '+';\n } // Allow digits.\n\n\n return parseDigit(character);\n}\n//# sourceMappingURL=parseIncompletePhoneNumber.js.map","import mergeArrays from './mergeArrays';\nexport default function checkNumberLength(nationalNumber, metadata) {\n return checkNumberLengthForType(nationalNumber, undefined, metadata);\n} // Checks whether a number is possible for the country based on its length.\n// Should only be called for the \"new\" metadata which has \"possible lengths\".\n\nexport function checkNumberLengthForType(nationalNumber, type, metadata) {\n var type_info = metadata.type(type); // There should always be \"\" set for every type element.\n // This is declared in the XML schema.\n // For size efficiency, where a sub-description (e.g. fixed-line)\n // has the same \"\" as the \"general description\", this is missing,\n // so we fall back to the \"general description\". Where no numbers of the type\n // exist at all, there is one possible length (-1) which is guaranteed\n // not to match the length of any real phone number.\n\n var possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths(); // let local_lengths = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal()\n // Metadata before version `1.0.18` didn't contain `possible_lengths`.\n\n if (!possible_lengths) {\n return 'IS_POSSIBLE';\n }\n\n if (type === 'FIXED_LINE_OR_MOBILE') {\n // No such country in metadata.\n\n /* istanbul ignore next */\n if (!metadata.type('FIXED_LINE')) {\n // The rare case has been encountered where no fixedLine data is available\n // (true for some non-geographic entities), so we just check mobile.\n return checkNumberLengthForType(nationalNumber, 'MOBILE', metadata);\n }\n\n var mobile_type = metadata.type('MOBILE');\n\n if (mobile_type) {\n // Merge the mobile data in if there was any. \"Concat\" creates a new\n // array, it doesn't edit possible_lengths in place, so we don't need a copy.\n // Note that when adding the possible lengths from mobile, we have\n // to again check they aren't empty since if they are this indicates\n // they are the same as the general desc and should be obtained from there.\n possible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths()); // The current list is sorted; we need to merge in the new list and\n // re-sort (duplicates are okay). Sorting isn't so expensive because\n // the lists are very small.\n // if (local_lengths) {\n // \tlocal_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal())\n // } else {\n // \tlocal_lengths = mobile_type.possibleLengthsLocal()\n // }\n }\n } // If the type doesn't exist then return 'INVALID_LENGTH'.\n else if (type && !type_info) {\n return 'INVALID_LENGTH';\n }\n\n var actual_length = nationalNumber.length; // In `libphonenumber-js` all \"local-only\" formats are dropped for simplicity.\n // // This is safe because there is never an overlap beween the possible lengths\n // // and the local-only lengths; this is checked at build time.\n // if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0)\n // {\n // \treturn 'IS_POSSIBLE_LOCAL_ONLY'\n // }\n\n var minimum_length = possible_lengths[0];\n\n if (minimum_length === actual_length) {\n return 'IS_POSSIBLE';\n }\n\n if (minimum_length > actual_length) {\n return 'TOO_SHORT';\n }\n\n if (possible_lengths[possible_lengths.length - 1] < actual_length) {\n return 'TOO_LONG';\n } // We skip the first element since we've already checked it.\n\n\n return possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH';\n}\n//# sourceMappingURL=checkNumberLength.js.map","/**\r\n * Merges two arrays.\r\n * @param {*} a\r\n * @param {*} b\r\n * @return {*}\r\n */\nexport default function mergeArrays(a, b) {\n var merged = a.slice();\n\n for (var _iterator = b, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var element = _ref;\n\n if (a.indexOf(element) < 0) {\n merged.push(element);\n }\n }\n\n return merged.sort(function (a, b) {\n return a - b;\n }); // ES6 version, requires Set polyfill.\n // let merged = new Set(a)\n // for (const element of b) {\n // \tmerged.add(i)\n // }\n // return Array.from(merged).sort((a, b) => a - b)\n}\n//# sourceMappingURL=mergeArrays.js.map","import Metadata from './metadata';\nimport checkNumberLength from './helpers/checkNumberLength';\nexport default function isPossiblePhoneNumber(input, options, metadata) {\n /* istanbul ignore if */\n if (options === undefined) {\n options = {};\n }\n\n metadata = new Metadata(metadata);\n\n if (options.v2) {\n if (!input.countryCallingCode) {\n throw new Error('Invalid phone number object passed');\n }\n\n metadata.selectNumberingPlan(input.countryCallingCode);\n } else {\n if (!input.phone) {\n return false;\n }\n\n if (input.country) {\n if (!metadata.hasCountry(input.country)) {\n throw new Error(\"Unknown country: \".concat(input.country));\n }\n\n metadata.country(input.country);\n } else {\n if (!input.countryCallingCode) {\n throw new Error('Invalid phone number object passed');\n }\n\n metadata.selectNumberingPlan(input.countryCallingCode);\n }\n }\n\n if (metadata.possibleLengths()) {\n return isPossibleNumber(input.phone || input.nationalNumber, metadata);\n } else {\n // There was a bug between `1.7.35` and `1.7.37` where \"possible_lengths\"\n // were missing for \"non-geographical\" numbering plans.\n // Just assume the number is possible in such cases:\n // it's unlikely that anyone generated their custom metadata\n // in that short period of time (one day).\n // This code can be removed in some future major version update.\n if (input.countryCallingCode && metadata.isNonGeographicCallingCode(input.countryCallingCode)) {\n // \"Non-geographic entities\" did't have `possibleLengths`\n // due to a bug in metadata generation process.\n return true;\n } else {\n throw new Error('Missing \"possibleLengths\" in metadata. Perhaps the metadata has been generated before v1.0.18.');\n }\n }\n}\nexport function isPossibleNumber(nationalNumber, metadata) {\n //, isInternational) {\n switch (checkNumberLength(nationalNumber, metadata)) {\n case 'IS_POSSIBLE':\n return true;\n // This library ignores \"local-only\" phone numbers (for simplicity).\n // See the readme for more info on what are \"local-only\" phone numbers.\n // case 'IS_POSSIBLE_LOCAL_ONLY':\n // \treturn !isInternational\n\n default:\n return false;\n }\n}\n//# sourceMappingURL=isPossibleNumber_.js.map","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport isViablePhoneNumber from './isViablePhoneNumber'; // https://www.ietf.org/rfc/rfc3966.txt\n\n/**\r\n * @param {string} text - Phone URI (RFC 3966).\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\n\nexport function parseRFC3966(text) {\n var number;\n var ext; // Replace \"tel:\" with \"tel=\" for parsing convenience.\n\n text = text.replace(/^tel:/, 'tel=');\n\n for (var _iterator = text.split(';'), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var part = _ref;\n\n var _part$split = part.split('='),\n _part$split2 = _slicedToArray(_part$split, 2),\n name = _part$split2[0],\n value = _part$split2[1];\n\n switch (name) {\n case 'tel':\n number = value;\n break;\n\n case 'ext':\n ext = value;\n break;\n\n case 'phone-context':\n // Only \"country contexts\" are supported.\n // \"Domain contexts\" are ignored.\n if (value[0] === '+') {\n number = value + number;\n }\n\n break;\n }\n } // If the phone number is not viable, then abort.\n\n\n if (!isViablePhoneNumber(number)) {\n return {};\n }\n\n var result = {\n number: number\n };\n\n if (ext) {\n result.ext = ext;\n }\n\n return result;\n}\n/**\r\n * @param {object} - `{ ?number, ?extension }`.\r\n * @return {string} Phone URI (RFC 3966).\r\n */\n\nexport function formatRFC3966(_ref2) {\n var number = _ref2.number,\n ext = _ref2.ext;\n\n if (!number) {\n return '';\n }\n\n if (number[0] !== '+') {\n throw new Error(\"\\\"formatRFC3966()\\\" expects \\\"number\\\" to be in E.164 format.\");\n }\n\n return \"tel:\".concat(number).concat(ext ? ';ext=' + ext : '');\n}\n//# sourceMappingURL=RFC3966.js.map","/**\r\n * Checks whether the entire input sequence can be matched\r\n * against the regular expression.\r\n * @return {boolean}\r\n */\nexport default function matchesEntirely(text, regular_expression) {\n // If assigning the `''` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n text = text || '';\n return new RegExp('^(?:' + regular_expression + ')$').test(text);\n}\n//# sourceMappingURL=matchesEntirely.js.map","import Metadata from '../metadata';\nimport matchesEntirely from './matchesEntirely';\nvar NON_FIXED_LINE_PHONE_TYPES = ['MOBILE', 'PREMIUM_RATE', 'TOLL_FREE', 'SHARED_COST', 'VOIP', 'PERSONAL_NUMBER', 'PAGER', 'UAN', 'VOICEMAIL']; // Finds out national phone number type (fixed line, mobile, etc)\n\nexport default function getNumberType(input, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {}; // When `parse()` returned `{}`\n // meaning that the phone number is not a valid one.\n\n if (!input.country) {\n return;\n }\n\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(input.country, input.countryCallingCode);\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // The following is copy-pasted from the original function:\n // https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835\n // Is this national number even valid for this country\n\n if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) {\n return;\n } // Is it fixed line number\n\n\n if (isNumberTypeEqualTo(nationalNumber, 'FIXED_LINE', metadata)) {\n // Because duplicate regular expressions are removed\n // to reduce metadata size, if \"mobile\" pattern is \"\"\n // then it means it was removed due to being a duplicate of the fixed-line pattern.\n //\n if (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') {\n return 'FIXED_LINE_OR_MOBILE';\n } // v1 metadata.\n // Legacy.\n // Deprecated.\n\n\n if (!metadata.type('MOBILE')) {\n return 'FIXED_LINE_OR_MOBILE';\n } // Check if the number happens to qualify as both fixed line and mobile.\n // (no such country in the minimal metadata set)\n\n /* istanbul ignore if */\n\n\n if (isNumberTypeEqualTo(nationalNumber, 'MOBILE', metadata)) {\n return 'FIXED_LINE_OR_MOBILE';\n }\n\n return 'FIXED_LINE';\n }\n\n for (var _i = 0, _NON_FIXED_LINE_PHONE = NON_FIXED_LINE_PHONE_TYPES; _i < _NON_FIXED_LINE_PHONE.length; _i++) {\n var type = _NON_FIXED_LINE_PHONE[_i];\n\n if (isNumberTypeEqualTo(nationalNumber, type, metadata)) {\n return type;\n }\n }\n}\nexport function isNumberTypeEqualTo(nationalNumber, type, metadata) {\n type = metadata.type(type);\n\n if (!type || !type.pattern()) {\n return false;\n } // Check if any possible number lengths are present;\n // if so, we use them to avoid checking\n // the validation pattern if they don't match.\n // If they are absent, this means they match\n // the general description, which we have\n // already checked before a specific number type.\n\n\n if (type.possibleLengths() && type.possibleLengths().indexOf(nationalNumber.length) < 0) {\n return false;\n }\n\n return matchesEntirely(nationalNumber, type.pattern());\n}\n//# sourceMappingURL=getNumberType.js.map","import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle'; // This was originally set to $1 but there are some countries for which the\n// first group is not used in the national pattern (e.g. Argentina) so the $1\n// group does not match correctly. Therefore, we use `\\d`, so that the first\n// group actually used in the pattern will be matched.\n\nexport var FIRST_GROUP_PATTERN = /(\\$\\d)/;\nexport default function formatNationalNumberUsingFormat(number, format, _ref) {\n var useInternationalFormat = _ref.useInternationalFormat,\n withNationalPrefix = _ref.withNationalPrefix,\n carrierCode = _ref.carrierCode,\n metadata = _ref.metadata;\n var formattedNumber = number.replace(new RegExp(format.pattern()), useInternationalFormat ? format.internationalFormat() : // This library doesn't use `domestic_carrier_code_formatting_rule`,\n // because that one is only used when formatting phone numbers\n // for dialing from a mobile phone, and this is not a dialing library.\n // carrierCode && format.domesticCarrierCodeFormattingRule()\n // \t// First, replace the $CC in the formatting rule with the desired carrier code.\n // \t// Then, replace the $FG in the formatting rule with the first group\n // \t// and the carrier code combined in the appropriate way.\n // \t? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode))\n // \t: (\n // \t\twithNationalPrefix && format.nationalPrefixFormattingRule()\n // \t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\n // \t\t\t: format.format()\n // \t)\n withNationalPrefix && format.nationalPrefixFormattingRule() ? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()) : format.format());\n\n if (useInternationalFormat) {\n return applyInternationalSeparatorStyle(formattedNumber);\n }\n\n return formattedNumber;\n}\n//# sourceMappingURL=formatNationalNumberUsingFormat.js.map","import { VALID_PUNCTUATION } from '../constants'; // Removes brackets and replaces dashes with spaces.\n//\n// E.g. \"(999) 111-22-33\" -> \"999 111 22 33\"\n//\n// For some reason Google's metadata contains ``s with brackets and dashes.\n// Meanwhile, there's no single opinion about using punctuation in international phone numbers.\n//\n// For example, Google's `` for USA is `+1 213-373-4253`.\n// And here's a quote from WikiPedia's \"North American Numbering Plan\" page:\n// https://en.wikipedia.org/wiki/North_American_Numbering_Plan\n//\n// \"The country calling code for all countries participating in the NANP is 1.\n// In international format, an NANP number should be listed as +1 301 555 01 00,\n// where 301 is an area code (Maryland).\"\n//\n// I personally prefer the international format without any punctuation.\n// For example, brackets are remnants of the old age, meaning that the\n// phone number part in brackets (so called \"area code\") can be omitted\n// if dialing within the same \"area\".\n// And hyphens were clearly introduced for splitting local numbers into memorizable groups.\n// For example, remembering \"5553535\" is difficult but \"555-35-35\" is much simpler.\n// Imagine a man taking a bus from home to work and seeing an ad with a phone number.\n// He has a couple of seconds to memorize that number until it passes by.\n// If it were spaces instead of hyphens the man wouldn't necessarily get it,\n// but with hyphens instead of spaces the grouping is more explicit.\n// I personally think that hyphens introduce visual clutter,\n// so I prefer replacing them with spaces in international numbers.\n// In the modern age all output is done on displays where spaces are clearly distinguishable\n// so hyphens can be safely replaced with spaces without losing any legibility.\n//\n\nexport default function applyInternationalSeparatorStyle(formattedNumber) {\n return formattedNumber.replace(new RegExp(\"[\".concat(VALID_PUNCTUATION, \"]+\"), 'g'), ' ').trim();\n}\n//# sourceMappingURL=applyInternationalSeparatorStyle.js.map","import Metadata from '../metadata';\n/**\r\n * Pattern that makes it easy to distinguish whether a region has a single\r\n * international dialing prefix or not. If a region has a single international\r\n * prefix (e.g. 011 in USA), it will be represented as a string that contains\r\n * a sequence of ASCII digits, and possibly a tilde, which signals waiting for\r\n * the tone. If there are multiple available international prefixes in a\r\n * region, they will be represented as a regex string that always contains one\r\n * or more characters that are not ASCII digits or a tilde.\r\n */\n\nvar SINGLE_IDD_PREFIX_REG_EXP = /^[\\d]+(?:[~\\u2053\\u223C\\uFF5E][\\d]+)?$/; // For regions that have multiple IDD prefixes\n// a preferred IDD prefix is returned.\n\nexport default function getIddPrefix(country, callingCode, metadata) {\n var countryMetadata = new Metadata(metadata);\n countryMetadata.selectNumberingPlan(country, callingCode);\n\n if (countryMetadata.defaultIDDPrefix()) {\n return countryMetadata.defaultIDDPrefix();\n }\n\n if (SINGLE_IDD_PREFIX_REG_EXP.test(countryMetadata.IDDPrefix())) {\n return countryMetadata.IDDPrefix();\n }\n}\n//# sourceMappingURL=getIddPrefix.js.map","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\nimport matchesEntirely from './helpers/matchesEntirely';\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat';\nimport Metadata, { getCountryCallingCode } from './metadata';\nimport getIddPrefix from './helpers/getIddPrefix';\nimport { formatRFC3966 } from './helpers/RFC3966';\nvar DEFAULT_OPTIONS = {\n formatExtension: function formatExtension(formattedNumber, extension, metadata) {\n return \"\".concat(formattedNumber).concat(metadata.ext()).concat(extension);\n } // Formats a phone number\n //\n // Example use cases:\n //\n // ```js\n // formatNumber('8005553535', 'RU', 'INTERNATIONAL')\n // formatNumber('8005553535', 'RU', 'INTERNATIONAL', metadata)\n // formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL')\n // formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL', metadata)\n // formatNumber('+78005553535', 'NATIONAL')\n // formatNumber('+78005553535', 'NATIONAL', metadata)\n // ```\n //\n\n};\nexport default function formatNumber(input, format, options, metadata) {\n // Apply default options.\n if (options) {\n options = _objectSpread({}, DEFAULT_OPTIONS, options);\n } else {\n options = DEFAULT_OPTIONS;\n }\n\n metadata = new Metadata(metadata);\n\n if (input.country && input.country !== '001') {\n // Validate `input.country`.\n if (!metadata.hasCountry(input.country)) {\n throw new Error(\"Unknown country: \".concat(input.country));\n }\n\n metadata.country(input.country);\n } else if (input.countryCallingCode) {\n metadata.selectNumberingPlan(input.countryCallingCode);\n } else return input.phone || '';\n\n var countryCallingCode = metadata.countryCallingCode();\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // This variable should have been declared inside `case`s\n // but Babel has a bug and it says \"duplicate variable declaration\".\n\n var number;\n\n switch (format) {\n case 'NATIONAL':\n // Legacy argument support.\n // (`{ country: ..., phone: '' }`)\n if (!nationalNumber) {\n return '';\n }\n\n number = formatNationalNumber(nationalNumber, input.carrierCode, 'NATIONAL', metadata, options);\n return addExtension(number, input.ext, metadata, options.formatExtension);\n\n case 'INTERNATIONAL':\n // Legacy argument support.\n // (`{ country: ..., phone: '' }`)\n if (!nationalNumber) {\n return \"+\".concat(countryCallingCode);\n }\n\n number = formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata, options);\n number = \"+\".concat(countryCallingCode, \" \").concat(number);\n return addExtension(number, input.ext, metadata, options.formatExtension);\n\n case 'E.164':\n // `E.164` doesn't define \"phone number extensions\".\n return \"+\".concat(countryCallingCode).concat(nationalNumber);\n\n case 'RFC3966':\n return formatRFC3966({\n number: \"+\".concat(countryCallingCode).concat(nationalNumber),\n ext: input.ext\n });\n // For reference, here's Google's IDD formatter:\n // https://github.com/google/libphonenumber/blob/32719cf74e68796788d1ca45abc85dcdc63ba5b9/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L1546\n // Not saying that this IDD formatter replicates it 1:1, but it seems to work.\n // Who would even need to format phone numbers in IDD format anyway?\n\n case 'IDD':\n if (!options.fromCountry) {\n return; // throw new Error('`fromCountry` option not passed for IDD-prefixed formatting.')\n }\n\n var formattedNumber = formatIDD(nationalNumber, input.carrierCode, countryCallingCode, options.fromCountry, metadata);\n return addExtension(formattedNumber, input.ext, metadata, options.formatExtension);\n\n default:\n throw new Error(\"Unknown \\\"format\\\" argument passed to \\\"formatNumber()\\\": \\\"\".concat(format, \"\\\"\"));\n }\n}\n\nfunction formatNationalNumber(number, carrierCode, formatAs, metadata, options) {\n var format = chooseFormatForNumber(metadata.formats(), number);\n\n if (!format) {\n return number;\n }\n\n return formatNationalNumberUsingFormat(number, format, {\n useInternationalFormat: formatAs === 'INTERNATIONAL',\n withNationalPrefix: format.nationalPrefixIsOptionalWhenFormattingInNationalFormat() && options && options.nationalPrefix === false ? false : true,\n carrierCode: carrierCode,\n metadata: metadata\n });\n}\n\nfunction chooseFormatForNumber(availableFormats, nationalNnumber) {\n for (var _iterator = availableFormats, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var format = _ref;\n\n // Validate leading digits\n if (format.leadingDigitsPatterns().length > 0) {\n // The last leading_digits_pattern is used here, as it is the most detailed\n var lastLeadingDigitsPattern = format.leadingDigitsPatterns()[format.leadingDigitsPatterns().length - 1]; // If leading digits don't match then move on to the next phone number format\n\n if (nationalNnumber.search(lastLeadingDigitsPattern) !== 0) {\n continue;\n }\n } // Check that the national number matches the phone number format regular expression\n\n\n if (matchesEntirely(nationalNnumber, format.pattern())) {\n return format;\n }\n }\n}\n\nfunction addExtension(formattedNumber, ext, metadata, formatExtension) {\n return ext ? formatExtension(formattedNumber, ext, metadata) : formattedNumber;\n}\n\nfunction formatIDD(nationalNumber, carrierCode, countryCallingCode, fromCountry, metadata) {\n var fromCountryCallingCode = getCountryCallingCode(fromCountry, metadata.metadata); // When calling within the same country calling code.\n\n if (fromCountryCallingCode === countryCallingCode) {\n var formattedNumber = formatNationalNumber(nationalNumber, carrierCode, 'NATIONAL', metadata); // For NANPA regions, return the national format for these regions\n // but prefix it with the country calling code.\n\n if (countryCallingCode === '1') {\n return countryCallingCode + ' ' + formattedNumber;\n } // If regions share a country calling code, the country calling code need\n // not be dialled. This also applies when dialling within a region, so this\n // if clause covers both these cases. Technically this is the case for\n // dialling from La Reunion to other overseas departments of France (French\n // Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover\n // this edge case for now and for those cases return the version including\n // country calling code. Details here:\n // http://www.petitfute.com/voyage/225-info-pratiques-reunion\n //\n\n\n return formattedNumber;\n }\n\n var iddPrefix = getIddPrefix(fromCountry, undefined, metadata.metadata);\n\n if (iddPrefix) {\n return \"\".concat(iddPrefix, \" \").concat(countryCallingCode, \" \").concat(formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata));\n }\n}\n//# sourceMappingURL=format_.js.map","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport Metadata from './metadata';\nimport isPossibleNumber from './isPossibleNumber_';\nimport isValidNumber from './validate_';\nimport isValidNumberForRegion from './isValidNumberForRegion_';\nimport getNumberType from './helpers/getNumberType';\nimport formatNumber from './format_';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\n\nvar PhoneNumber =\n/*#__PURE__*/\nfunction () {\n function PhoneNumber(countryCallingCode, nationalNumber, metadata) {\n _classCallCheck(this, PhoneNumber);\n\n if (!countryCallingCode) {\n throw new TypeError('`country` or `countryCallingCode` not passed');\n }\n\n if (!nationalNumber) {\n throw new TypeError('`nationalNumber` not passed');\n }\n\n if (!metadata) {\n throw new TypeError('`metadata` not passed');\n }\n\n var _metadata = new Metadata(metadata); // If country code is passed then derive `countryCallingCode` from it.\n // Also store the country code as `.country`.\n\n\n if (isCountryCode(countryCallingCode)) {\n this.country = countryCallingCode;\n\n _metadata.country(countryCallingCode);\n\n countryCallingCode = _metadata.countryCallingCode();\n } else {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (_metadata.isNonGeographicCallingCode(countryCallingCode)) {\n this.country = '001';\n }\n }\n }\n\n this.countryCallingCode = countryCallingCode;\n this.nationalNumber = nationalNumber;\n this.number = '+' + this.countryCallingCode + this.nationalNumber;\n this.metadata = metadata;\n }\n\n _createClass(PhoneNumber, [{\n key: \"setExt\",\n value: function setExt(ext) {\n this.ext = ext;\n }\n }, {\n key: \"isPossible\",\n value: function isPossible() {\n return isPossibleNumber(this, {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"isValid\",\n value: function isValid() {\n return isValidNumber(this, {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"isNonGeographic\",\n value: function isNonGeographic() {\n var metadata = new Metadata(this.metadata);\n return metadata.isNonGeographicCallingCode(this.countryCallingCode);\n }\n }, {\n key: \"isEqual\",\n value: function isEqual(phoneNumber) {\n return this.number === phoneNumber.number && this.ext === phoneNumber.ext;\n } // // Is just an alias for `this.isValid() && this.country === country`.\n // // https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\n // isValidForRegion(country) {\n // \treturn isValidNumberForRegion(this, country, { v2: true }, this.metadata)\n // }\n\n }, {\n key: \"getType\",\n value: function getType() {\n return getNumberType(this, {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"format\",\n value: function format(_format, options) {\n return formatNumber(this, _format, options ? _objectSpread({}, options, {\n v2: true\n }) : {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"formatNational\",\n value: function formatNational(options) {\n return this.format('NATIONAL', options);\n }\n }, {\n key: \"formatInternational\",\n value: function formatInternational(options) {\n return this.format('INTERNATIONAL', options);\n }\n }, {\n key: \"getURI\",\n value: function getURI(options) {\n return this.format('RFC3966', options);\n }\n }]);\n\n return PhoneNumber;\n}();\n\nexport { PhoneNumber as default };\n\nvar isCountryCode = function isCountryCode(value) {\n return /^[A-Z]{2}$/.test(value);\n};\n//# sourceMappingURL=PhoneNumber.js.map","import Metadata from './metadata';\nimport matchesEntirely from './helpers/matchesEntirely';\nimport getNumberType from './helpers/getNumberType';\n/**\r\n * Checks if a given phone number is valid.\r\n *\r\n * If the `number` is a string, it will be parsed to an object,\r\n * but only if it contains only valid phone number characters (including punctuation).\r\n * If the `number` is an object, it is used as is.\r\n *\r\n * The optional `defaultCountry` argument is the default country.\r\n * I.e. it does not restrict to just that country,\r\n * e.g. in those cases where several countries share\r\n * the same phone numbering rules (NANPA, Britain, etc).\r\n * For example, even though the number `07624 369230`\r\n * belongs to the Isle of Man (\"IM\" country code)\r\n * calling `isValidNumber('07624369230', 'GB', metadata)`\r\n * still returns `true` because the country is not restricted to `GB`,\r\n * it's just that `GB` is the default one for the phone numbering rules.\r\n * For restricting the country see `isValidNumberForRegion()`\r\n * though restricting a country might not be a good idea.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n *\r\n * Examples:\r\n *\r\n * ```js\r\n * isValidNumber('+78005553535', metadata)\r\n * isValidNumber('8005553535', 'RU', metadata)\r\n * isValidNumber('88005553535', 'RU', metadata)\r\n * isValidNumber({ phone: '8005553535', country: 'RU' }, metadata)\r\n * ```\r\n */\n\nexport default function isValidNumber(input, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {};\n metadata = new Metadata(metadata); // This is just to support `isValidNumber({})`\n // for cases when `parseNumber()` returns `{}`.\n\n if (!input.country) {\n return false;\n }\n\n metadata.selectNumberingPlan(input.country, input.countryCallingCode); // By default, countries only have type regexps when it's required for\n // distinguishing different countries having the same `countryCallingCode`.\n\n if (metadata.hasTypes()) {\n return getNumberType(input, options, metadata.metadata) !== undefined;\n } // If there are no type regexps for this country in metadata then use\n // `nationalNumberPattern` as a \"better than nothing\" replacement.\n\n\n var national_number = options.v2 ? input.nationalNumber : input.phone;\n return matchesEntirely(national_number, metadata.nationalNumberPattern());\n}\n//# sourceMappingURL=validate_.js.map","import Metadata from '../metadata';\nimport { VALID_DIGITS } from '../constants';\nvar CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])');\nexport default function stripIddPrefix(number, country, callingCode, metadata) {\n if (!country) {\n return;\n } // Check if the number is IDD-prefixed.\n\n\n var countryMetadata = new Metadata(metadata);\n countryMetadata.selectNumberingPlan(country, callingCode);\n var IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix());\n\n if (number.search(IDDPrefixPattern) !== 0) {\n return;\n } // Strip IDD prefix.\n\n\n number = number.slice(number.match(IDDPrefixPattern)[0].length); // If there're any digits after an IDD prefix,\n // then those digits are a country calling code.\n // Since no country code starts with a `0`,\n // the code below validates that the next digit (if present) is not `0`.\n\n var matchedGroups = number.match(CAPTURING_DIGIT_PATTERN);\n\n if (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) {\n if (matchedGroups[1] === '0') {\n return;\n }\n }\n\n return number;\n}\n//# sourceMappingURL=stripIddPrefix.js.map","import extractNationalNumberFromPossiblyIncompleteNumber from './extractNationalNumberFromPossiblyIncompleteNumber';\nimport matchesEntirely from './matchesEntirely';\nimport checkNumberLength from './checkNumberLength';\n/**\r\n * Strips national prefix and carrier code from a complete phone number.\r\n * The difference from the non-\"FromCompleteNumber\" function is that\r\n * it won't extract national prefix if the resultant number is too short\r\n * to be a complete number for the selected phone numbering plan.\r\n * @param {string} number — Complete phone number digits.\r\n * @param {Metadata} metadata — Metadata with a phone numbering plan selected.\r\n * @return {object} `{ nationalNumber: string, carrierCode: string? }`.\r\n */\n\nexport default function extractNationalNumber(number, metadata) {\n // Parsing national prefixes and carrier codes\n // is only required for local phone numbers\n // but some people don't understand that\n // and sometimes write international phone numbers\n // with national prefixes (or maybe even carrier codes).\n // http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html\n // Google's original library forgives such mistakes\n // and so does this library, because it has been requested:\n // https://github.com/catamphetamine/libphonenumber-js/issues/127\n var _extractNationalNumbe = extractNationalNumberFromPossiblyIncompleteNumber(number, metadata),\n nationalNumber = _extractNationalNumbe.nationalNumber,\n carrierCode = _extractNationalNumbe.carrierCode;\n\n if (!shouldExtractNationalPrefix(number, nationalNumber, metadata)) {\n // Don't strip the national prefix.\n return {\n nationalNumber: number\n };\n } // If a national prefix has been extracted, check to see\n // if the resultant number isn't too short.\n // Same code in Google's `libphonenumber`:\n // https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3291-L3302\n // For some reason, they do this check right after the `national_number_pattern` check\n // this library does in `shouldExtractNationalPrefix()` function.\n // Why is there a second \"resultant\" number validity check?\n // They don't provide an explanation.\n // This library just copies the behavior.\n\n\n if (number.length !== nationalNumber.length + (carrierCode ? carrierCode.length : 0)) {\n // If not using legacy generated metadata (before version `1.0.18`)\n // then it has \"possible lengths\", so use those to validate the number length.\n if (metadata.possibleLengths()) {\n // \"We require that the NSN remaining after stripping the national prefix and\n // carrier code be long enough to be a possible length for the region.\n // Otherwise, we don't do the stripping, since the original number could be\n // a valid short number.\"\n // https://github.com/google/libphonenumber/blob/876268eb1ad6cdc1b7b5bef17fc5e43052702d57/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3236-L3250\n switch (checkNumberLength(nationalNumber, metadata)) {\n case 'TOO_SHORT':\n case 'INVALID_LENGTH':\n // case 'IS_POSSIBLE_LOCAL_ONLY':\n // Don't strip the national prefix.\n return {\n nationalNumber: number\n };\n }\n }\n }\n\n return {\n nationalNumber: nationalNumber,\n carrierCode: carrierCode\n };\n} // In some countries, the same digit could be a national prefix\n// or a leading digit of a valid phone number.\n// For example, in Russia, national prefix is `8`,\n// and also `800 555 35 35` is a valid number\n// in which `8` is not a national prefix, but the first digit\n// of a national (significant) number.\n// Same's with Belarus:\n// `82004910060` is a valid national (significant) number,\n// but `2004910060` is not.\n// To support such cases (to prevent the code from always stripping\n// national prefix), a condition is imposed: a national prefix\n// is not extracted when the original number is \"viable\" and the\n// resultant number is not, a \"viable\" national number being the one\n// that matches `national_number_pattern`.\n\nfunction shouldExtractNationalPrefix(number, nationalSignificantNumber, metadata) {\n // The equivalent in Google's code is:\n // https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L2969-L3004\n if (matchesEntirely(number, metadata.nationalNumberPattern()) && !matchesEntirely(nationalSignificantNumber, metadata.nationalNumberPattern())) {\n return false;\n } // Just \"possible\" number check would be more relaxed, so it's not used.\n // if (isPossibleNumber(number, metadata) &&\n // \t!isPossibleNumber(numberWithNationalPrefixExtracted, metadata)) {\n // \treturn false\n // }\n\n\n return true;\n}\n//# sourceMappingURL=extractNationalNumber.js.map","/**\r\n * Strips any national prefix (such as 0, 1) present in a\r\n * (possibly incomplete) number provided.\r\n * \"Carrier codes\" are only used in Colombia and Brazil,\r\n * and only when dialing within those countries from a mobile phone to a fixed line number.\r\n * Sometimes it won't actually strip national prefix\r\n * and will instead prepend some digits to the `number`:\r\n * for example, when number `2345678` is passed with `VI` country selected,\r\n * it will return `{ number: \"3402345678\" }`, because `340` area code is prepended.\r\n * @param {string} number — National number digits.\r\n * @param {object} metadata — Metadata with country selected.\r\n * @return {object} `{ nationalNumber: string, nationalPrefix: string? carrierCode: string? }`.\r\n */\nexport default function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) {\n if (number && metadata.numberingPlan.nationalPrefixForParsing()) {\n // See METADATA.md for the description of\n // `national_prefix_for_parsing` and `national_prefix_transform_rule`.\n // Attempt to parse the first digits as a national prefix.\n var prefixPattern = new RegExp('^(?:' + metadata.numberingPlan.nationalPrefixForParsing() + ')');\n var prefixMatch = prefixPattern.exec(number);\n\n if (prefixMatch) {\n var nationalNumber;\n var carrierCode; // https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\n // If a `national_prefix_for_parsing` has any \"capturing groups\"\n // then it means that the national (significant) number is equal to\n // those \"capturing groups\" transformed via `national_prefix_transform_rule`,\n // and nothing could be said about the actual national prefix:\n // what is it and was it even there.\n // If a `national_prefix_for_parsing` doesn't have any \"capturing groups\",\n // then everything it matches is a national prefix.\n // To determine whether `national_prefix_for_parsing` matched any\n // \"capturing groups\", the value of the result of calling `.exec()`\n // is looked at, and if it has non-undefined values where there're\n // \"capturing groups\" in the regular expression, then it means\n // that \"capturing groups\" have been matched.\n // It's not possible to tell whether there'll be any \"capturing gropus\"\n // before the matching process, because a `national_prefix_for_parsing`\n // could exhibit both behaviors.\n\n var capturedGroupsCount = prefixMatch.length - 1;\n var hasCapturedGroups = capturedGroupsCount > 0 && prefixMatch[capturedGroupsCount];\n\n if (metadata.nationalPrefixTransformRule() && hasCapturedGroups) {\n nationalNumber = number.replace(prefixPattern, metadata.nationalPrefixTransformRule()); // If there's more than one captured group,\n // then carrier code is the second one.\n\n if (capturedGroupsCount > 1) {\n carrierCode = prefixMatch[1];\n }\n } // If there're no \"capturing groups\",\n // or if there're \"capturing groups\" but no\n // `national_prefix_transform_rule`,\n // then just strip the national prefix from the number,\n // and possibly a carrier code.\n // Seems like there could be more.\n else {\n // `prefixBeforeNationalNumber` is the whole substring matched by\n // the `national_prefix_for_parsing` regular expression.\n // There seem to be no guarantees that it's just a national prefix.\n // For example, if there's a carrier code, it's gonna be a\n // part of `prefixBeforeNationalNumber` too.\n var prefixBeforeNationalNumber = prefixMatch[0];\n nationalNumber = number.slice(prefixBeforeNationalNumber.length); // If there's at least one captured group,\n // then carrier code is the first one.\n\n if (hasCapturedGroups) {\n carrierCode = prefixMatch[1];\n }\n } // Tries to guess whether a national prefix was present in the input.\n // This is not something copy-pasted from Google's library:\n // they don't seem to have an equivalent for that.\n // So this isn't an \"officially approved\" way of doing something like that.\n // But since there seems no other existing method, this library uses it.\n\n\n var nationalPrefix;\n\n if (hasCapturedGroups) {\n var possiblePositionOfTheFirstCapturedGroup = number.indexOf(prefixMatch[1]);\n var possibleNationalPrefix = number.slice(0, possiblePositionOfTheFirstCapturedGroup); // Example: an Argentinian (AR) phone number `0111523456789`.\n // `prefixMatch[0]` is `01115`, and `$1` is `11`,\n // and the rest of the phone number is `23456789`.\n // The national number is transformed via `9$1` to `91123456789`.\n // National prefix `0` is detected being present at the start.\n // if (possibleNationalPrefix.indexOf(metadata.numberingPlan.nationalPrefix()) === 0) {\n\n if (possibleNationalPrefix === metadata.numberingPlan.nationalPrefix()) {\n nationalPrefix = metadata.numberingPlan.nationalPrefix();\n }\n } else {\n nationalPrefix = prefixMatch[0];\n }\n\n return {\n nationalNumber: nationalNumber,\n nationalPrefix: nationalPrefix,\n carrierCode: carrierCode\n };\n }\n }\n\n return {\n nationalNumber: number\n };\n}\n//# sourceMappingURL=extractNationalNumberFromPossiblyIncompleteNumber.js.map","import stripIddPrefix from './stripIddPrefix';\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './extractCountryCallingCodeFromInternationalNumberWithoutPlusSign';\nimport Metadata from '../metadata';\nimport { MAX_LENGTH_COUNTRY_CODE } from '../constants';\n/**\r\n * Converts a phone number digits (possibly with a `+`)\r\n * into a calling code and the rest phone number digits.\r\n * The \"rest phone number digits\" could include\r\n * a national prefix, carrier code, and national\r\n * (significant) number.\r\n * @param {string} number — Phone number digits (possibly with a `+`).\r\n * @param {string} [country] — Default country.\r\n * @param {string} [callingCode] — Default calling code (some phone numbering plans are non-geographic).\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`\r\n * @example\r\n * // Returns `{ countryCallingCode: \"1\", number: \"2133734253\" }`.\r\n * extractCountryCallingCode('2133734253', 'US', null, metadata)\r\n * extractCountryCallingCode('2133734253', null, '1', metadata)\r\n * extractCountryCallingCode('+12133734253', null, null, metadata)\r\n * extractCountryCallingCode('+12133734253', 'RU', null, metadata)\r\n */\n\nexport default function extractCountryCallingCode(number, country, callingCode, metadata) {\n if (!number) {\n return {};\n } // If this is not an international phone number,\n // then either extract an \"IDD\" prefix, or extract a\n // country calling code from a number by autocorrecting it\n // by prepending a leading `+` in cases when it starts\n // with the country calling code.\n // https://wikitravel.org/en/International_dialling_prefix\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n\n\n if (number[0] !== '+') {\n // Convert an \"out-of-country\" dialing phone number\n // to a proper international phone number.\n var numberWithoutIDD = stripIddPrefix(number, country, callingCode, metadata); // If an IDD prefix was stripped then\n // convert the number to international one\n // for subsequent parsing.\n\n if (numberWithoutIDD && numberWithoutIDD !== number) {\n number = '+' + numberWithoutIDD;\n } else {\n // Check to see if the number starts with the country calling code\n // for the default country. If so, we remove the country calling code,\n // and do some checks on the validity of the number before and after.\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n if (country || callingCode) {\n var _extractCountryCallin = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, callingCode, metadata),\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n shorterNumber = _extractCountryCallin.number;\n\n if (countryCallingCode) {\n return {\n countryCallingCode: countryCallingCode,\n number: shorterNumber\n };\n }\n }\n\n return {\n number: number\n };\n }\n } // Fast abortion: country codes do not begin with a '0'\n\n\n if (number[1] === '0') {\n return {};\n }\n\n metadata = new Metadata(metadata); // The thing with country phone codes\n // is that they are orthogonal to each other\n // i.e. there's no such country phone code A\n // for which country phone code B exists\n // where B starts with A.\n // Therefore, while scanning digits,\n // if a valid country code is found,\n // that means that it is the country code.\n //\n\n var i = 2;\n\n while (i - 1 <= MAX_LENGTH_COUNTRY_CODE && i <= number.length) {\n var _countryCallingCode = number.slice(1, i);\n\n if (metadata.hasCallingCode(_countryCallingCode)) {\n metadata.selectNumberingPlan(_countryCallingCode);\n return {\n countryCallingCode: _countryCallingCode,\n number: number.slice(i)\n };\n }\n\n i++;\n }\n\n return {};\n}\n//# sourceMappingURL=extractCountryCallingCode.js.map","import Metadata from '../metadata';\nimport matchesEntirely from './matchesEntirely';\nimport extractNationalNumber from './extractNationalNumber';\nimport checkNumberLength from './checkNumberLength';\nimport getCountryCallingCode from '../getCountryCallingCode';\n/**\r\n * Sometimes some people incorrectly input international phone numbers\r\n * without the leading `+`. This function corrects such input.\r\n * @param {string} number — Phone number digits.\r\n * @param {string?} country\r\n * @param {string?} callingCode\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`.\r\n */\n\nexport default function extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, callingCode, metadata) {\n var countryCallingCode = country ? getCountryCallingCode(country, metadata) : callingCode;\n\n if (number.indexOf(countryCallingCode) === 0) {\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(country, callingCode);\n var possibleShorterNumber = number.slice(countryCallingCode.length);\n\n var _extractNationalNumbe = extractNationalNumber(possibleShorterNumber, metadata),\n possibleShorterNationalNumber = _extractNationalNumbe.nationalNumber;\n\n var _extractNationalNumbe2 = extractNationalNumber(number, metadata),\n nationalNumber = _extractNationalNumbe2.nationalNumber; // If the number was not valid before but is valid now,\n // or if it was too long before, we consider the number\n // with the country calling code stripped to be a better result\n // and keep that instead.\n // For example, in Germany (+49), `49` is a valid area code,\n // so if a number starts with `49`, it could be both a valid\n // national German number or an international number without\n // a leading `+`.\n\n\n if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) && matchesEntirely(possibleShorterNationalNumber, metadata.nationalNumberPattern()) || checkNumberLength(nationalNumber, metadata) === 'TOO_LONG') {\n return {\n countryCallingCode: countryCallingCode,\n number: possibleShorterNumber\n };\n }\n }\n\n return {\n number: number\n };\n}\n//# sourceMappingURL=extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js.map","import Metadata from '../metadata';\nimport getNumberType from './getNumberType';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\nexport default function getCountryByCallingCode(callingCode, nationalPhoneNumber, metadata) {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(callingCode)) {\n return '001';\n }\n } // Is always non-empty, because `callingCode` is always valid\n\n\n var possibleCountries = metadata.getCountryCodesForCallingCode(callingCode);\n\n if (!possibleCountries) {\n return;\n } // If there's just one country corresponding to the country code,\n // then just return it, without further phone number digits validation.\n\n\n if (possibleCountries.length === 1) {\n return possibleCountries[0];\n }\n\n return selectCountryFromList(possibleCountries, nationalPhoneNumber, metadata.metadata);\n}\n\nfunction selectCountryFromList(possibleCountries, nationalPhoneNumber, metadata) {\n // Re-create `metadata` because it will be selecting a `country`.\n metadata = new Metadata(metadata);\n\n for (var _iterator = possibleCountries, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var country = _ref;\n metadata.country(country); // Leading digits check would be the simplest and fastest one.\n // Leading digits patterns are only defined for about 20% of all countries.\n // https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits\n // Matching \"leading digits\" is a sufficient but not necessary condition.\n\n if (metadata.leadingDigits()) {\n if (nationalPhoneNumber && nationalPhoneNumber.search(metadata.leadingDigits()) === 0) {\n return country;\n }\n } // Else perform full validation with all of those\n // fixed-line/mobile/etc regular expressions.\n else if (getNumberType({\n phone: nationalPhoneNumber,\n country: country\n }, undefined, metadata.metadata)) {\n return country;\n }\n }\n}\n//# sourceMappingURL=getCountryByCallingCode.js.map","// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\nimport { VALID_DIGITS, PLUS_CHARS, MIN_LENGTH_FOR_NSN, MAX_LENGTH_FOR_NSN } from './constants';\nimport ParseError from './ParseError';\nimport Metadata from './metadata';\nimport isViablePhoneNumber, { isViablePhoneNumberStart } from './helpers/isViablePhoneNumber';\nimport extractExtension from './helpers/extension/extractExtension';\nimport parseIncompletePhoneNumber from './parseIncompletePhoneNumber';\nimport getCountryCallingCode from './getCountryCallingCode';\nimport { isPossibleNumber } from './isPossibleNumber_';\nimport { parseRFC3966 } from './helpers/RFC3966';\nimport PhoneNumber from './PhoneNumber';\nimport matchesEntirely from './helpers/matchesEntirely';\nimport extractCountryCallingCode from './helpers/extractCountryCallingCode';\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign';\nimport extractNationalNumber from './helpers/extractNationalNumber';\nimport stripIddPrefix from './helpers/stripIddPrefix';\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode'; // We don't allow input strings for parsing to be longer than 250 chars.\n// This prevents malicious input from consuming CPU.\n\nvar MAX_INPUT_STRING_LENGTH = 250; // This consists of the plus symbol, digits, and arabic-indic digits.\n\nvar PHONE_NUMBER_START_PATTERN = new RegExp('[' + PLUS_CHARS + VALID_DIGITS + ']'); // Regular expression of trailing characters that we want to remove.\n// A trailing `#` is sometimes used when writing phone numbers with extensions in US.\n// Example: \"+1 (645) 123 1234-910#\" number has extension \"910\".\n\nvar AFTER_PHONE_NUMBER_END_PATTERN = new RegExp('[^' + VALID_DIGITS + '#' + ']+$');\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false; // Examples:\n//\n// ```js\n// parse('8 (800) 555-35-35', 'RU')\n// parse('8 (800) 555-35-35', 'RU', metadata)\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } })\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata)\n// parse('+7 800 555 35 35')\n// parse('+7 800 555 35 35', metadata)\n// ```\n//\n\nexport default function parse(text, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {};\n metadata = new Metadata(metadata); // Validate `defaultCountry`.\n\n if (options.defaultCountry && !metadata.hasCountry(options.defaultCountry)) {\n if (options.v2) {\n throw new ParseError('INVALID_COUNTRY');\n }\n\n throw new Error(\"Unknown country: \".concat(options.defaultCountry));\n } // Parse the phone number.\n\n\n var _parseInput = parseInput(text, options.v2, options.extract),\n formattedPhoneNumber = _parseInput.number,\n ext = _parseInput.ext,\n error = _parseInput.error; // If the phone number is not viable then return nothing.\n\n\n if (!formattedPhoneNumber) {\n if (options.v2) {\n if (error === 'TOO_SHORT') {\n throw new ParseError('TOO_SHORT');\n }\n\n throw new ParseError('NOT_A_NUMBER');\n }\n\n return {};\n }\n\n var _parsePhoneNumber = parsePhoneNumber(formattedPhoneNumber, options.defaultCountry, options.defaultCallingCode, metadata),\n country = _parsePhoneNumber.country,\n nationalNumber = _parsePhoneNumber.nationalNumber,\n countryCallingCode = _parsePhoneNumber.countryCallingCode,\n carrierCode = _parsePhoneNumber.carrierCode;\n\n if (!metadata.hasSelectedNumberingPlan()) {\n if (options.v2) {\n throw new ParseError('INVALID_COUNTRY');\n }\n\n return {};\n } // Validate national (significant) number length.\n\n\n if (!nationalNumber || nationalNumber.length < MIN_LENGTH_FOR_NSN) {\n // Won't throw here because the regexp already demands length > 1.\n\n /* istanbul ignore if */\n if (options.v2) {\n throw new ParseError('TOO_SHORT');\n } // Google's demo just throws an error in this case.\n\n\n return {};\n } // Validate national (significant) number length.\n //\n // A sidenote:\n //\n // They say that sometimes national (significant) numbers\n // can be longer than `MAX_LENGTH_FOR_NSN` (e.g. in Germany).\n // https://github.com/googlei18n/libphonenumber/blob/7e1748645552da39c4e1ba731e47969d97bdb539/resources/phonenumber.proto#L36\n // Such numbers will just be discarded.\n //\n\n\n if (nationalNumber.length > MAX_LENGTH_FOR_NSN) {\n if (options.v2) {\n throw new ParseError('TOO_LONG');\n } // Google's demo just throws an error in this case.\n\n\n return {};\n }\n\n if (options.v2) {\n var phoneNumber = new PhoneNumber(countryCallingCode, nationalNumber, metadata.metadata);\n\n if (country) {\n phoneNumber.country = country;\n }\n\n if (carrierCode) {\n phoneNumber.carrierCode = carrierCode;\n }\n\n if (ext) {\n phoneNumber.ext = ext;\n }\n\n return phoneNumber;\n } // Check if national phone number pattern matches the number.\n // National number pattern is different for each country,\n // even for those ones which are part of the \"NANPA\" group.\n\n\n var valid = (options.extended ? metadata.hasSelectedNumberingPlan() : country) ? matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) : false;\n\n if (!options.extended) {\n return valid ? result(country, nationalNumber, ext) : {};\n } // isInternational: countryCallingCode !== undefined\n\n\n return {\n country: country,\n countryCallingCode: countryCallingCode,\n carrierCode: carrierCode,\n valid: valid,\n possible: valid ? true : options.extended === true && metadata.possibleLengths() && isPossibleNumber(nationalNumber, metadata) ? true : false,\n phone: nationalNumber,\n ext: ext\n };\n}\n/**\r\n * Extracts a formatted phone number from text.\r\n * Doesn't guarantee that the extracted phone number\r\n * is a valid phone number (for example, doesn't validate its length).\r\n * @param {string} text\r\n * @param {boolean} [extract] — If `false`, then will parse the entire `text` as a phone number.\r\n * @param {boolean} [throwOnError] — By default, it won't throw if the text is too long.\r\n * @return {string}\r\n * @example\r\n * // Returns \"(213) 373-4253\".\r\n * extractFormattedPhoneNumber(\"Call (213) 373-4253 for assistance.\")\r\n */\n\nfunction extractFormattedPhoneNumber(text, extract, throwOnError) {\n if (!text) {\n return;\n }\n\n if (text.length > MAX_INPUT_STRING_LENGTH) {\n if (throwOnError) {\n throw new ParseError('TOO_LONG');\n }\n\n return;\n }\n\n if (extract === false) {\n return text;\n } // Attempt to extract a possible number from the string passed in\n\n\n var startsAt = text.search(PHONE_NUMBER_START_PATTERN);\n\n if (startsAt < 0) {\n return;\n }\n\n return text // Trim everything to the left of the phone number\n .slice(startsAt) // Remove trailing non-numerical characters\n .replace(AFTER_PHONE_NUMBER_END_PATTERN, '');\n}\n/**\r\n * @param {string} text - Input.\r\n * @param {boolean} v2 - Legacy API functions don't pass `v2: true` flag.\r\n * @param {boolean} [extract] - Whether to extract a phone number from `text`, or attempt to parse the entire text as a phone number.\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\n\n\nfunction parseInput(text, v2, extract) {\n // Parse RFC 3966 phone number URI.\n if (text && text.indexOf('tel:') === 0) {\n return parseRFC3966(text);\n }\n\n var number = extractFormattedPhoneNumber(text, extract, v2); // If the phone number is not viable, then abort.\n\n if (!number) {\n return {};\n }\n\n if (!isViablePhoneNumber(number)) {\n if (isViablePhoneNumberStart(number)) {\n return {\n error: 'TOO_SHORT'\n };\n }\n\n return {};\n } // Attempt to parse extension first, since it doesn't require region-specific\n // data and we want to have the non-normalised number here.\n\n\n var withExtensionStripped = extractExtension(number);\n\n if (withExtensionStripped.ext) {\n return withExtensionStripped;\n }\n\n return {\n number: number\n };\n}\n/**\r\n * Creates `parse()` result object.\r\n */\n\n\nfunction result(country, nationalNumber, ext) {\n var result = {\n country: country,\n phone: nationalNumber\n };\n\n if (ext) {\n result.ext = ext;\n }\n\n return result;\n}\n/**\r\n * Parses a viable phone number.\r\n * @param {string} formattedPhoneNumber — Example: \"(213) 373-4253\".\r\n * @param {string} [defaultCountry]\r\n * @param {string} [defaultCallingCode]\r\n * @param {Metadata} metadata\r\n * @return {object} Returns `{ country: string?, countryCallingCode: string?, nationalNumber: string? }`.\r\n */\n\n\nfunction parsePhoneNumber(formattedPhoneNumber, defaultCountry, defaultCallingCode, metadata) {\n // Extract calling code from phone number.\n var _extractCountryCallin = extractCountryCallingCode(parseIncompletePhoneNumber(formattedPhoneNumber), defaultCountry, defaultCallingCode, metadata.metadata),\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n number = _extractCountryCallin.number; // Choose a country by `countryCallingCode`.\n\n\n var country;\n\n if (countryCallingCode) {\n metadata.selectNumberingPlan(countryCallingCode);\n } // If `formattedPhoneNumber` is in \"national\" format\n // then `number` is defined and `countryCallingCode` isn't.\n else if (number && (defaultCountry || defaultCallingCode)) {\n metadata.selectNumberingPlan(defaultCountry, defaultCallingCode);\n\n if (defaultCountry) {\n country = defaultCountry;\n } else {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(defaultCallingCode)) {\n country = '001';\n }\n }\n }\n\n countryCallingCode = defaultCallingCode || getCountryCallingCode(defaultCountry, metadata.metadata);\n } else return {};\n\n if (!number) {\n return {\n countryCallingCode: countryCallingCode\n };\n }\n\n var _extractNationalNumbe = extractNationalNumber(parseIncompletePhoneNumber(number), metadata),\n nationalNumber = _extractNationalNumbe.nationalNumber,\n carrierCode = _extractNationalNumbe.carrierCode; // Sometimes there are several countries\n // corresponding to the same country phone code\n // (e.g. NANPA countries all having `1` country phone code).\n // Therefore, to reliably determine the exact country,\n // national (significant) number should have been parsed first.\n //\n // When `metadata.json` is generated, all \"ambiguous\" country phone codes\n // get their countries populated with the full set of\n // \"phone number type\" regular expressions.\n //\n\n\n var exactCountry = getCountryByCallingCode(countryCallingCode, nationalNumber, metadata);\n\n if (exactCountry) {\n country = exactCountry;\n /* istanbul ignore if */\n\n if (exactCountry === '001') {// Can't happen with `USE_NON_GEOGRAPHIC_COUNTRY_CODE` being `false`.\n // If `USE_NON_GEOGRAPHIC_COUNTRY_CODE` is set to `true` for some reason,\n // then remove the \"istanbul ignore if\".\n } else {\n metadata.country(country);\n }\n }\n\n return {\n country: country,\n countryCallingCode: countryCallingCode,\n nationalNumber: nationalNumber,\n carrierCode: carrierCode\n };\n}\n//# sourceMappingURL=parse_.js.map","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport parseNumber from './parse_';\nexport default function parsePhoneNumber(text, options, metadata) {\n return parseNumber(text, _objectSpread({}, options, {\n v2: true\n }), metadata);\n}\n//# sourceMappingURL=parsePhoneNumber_.js.map","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport parsePhoneNumber_ from './parsePhoneNumber_';\nexport default function parsePhoneNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return parsePhoneNumber_(text, options, metadata);\n}\nexport function normalizeArguments(args) {\n var _Array$prototype$slic = Array.prototype.slice.call(args),\n _Array$prototype$slic2 = _slicedToArray(_Array$prototype$slic, 4),\n arg_1 = _Array$prototype$slic2[0],\n arg_2 = _Array$prototype$slic2[1],\n arg_3 = _Array$prototype$slic2[2],\n arg_4 = _Array$prototype$slic2[3];\n\n var text;\n var options;\n var metadata; // If the phone number is passed as a string.\n // `parsePhoneNumber('88005553535', ...)`.\n\n if (typeof arg_1 === 'string') {\n text = arg_1;\n } else throw new TypeError('A text for parsing must be a string.'); // If \"default country\" argument is being passed then move it to `options`.\n // `parsePhoneNumber('88005553535', 'RU', [options], metadata)`.\n\n\n if (!arg_2 || typeof arg_2 === 'string') {\n if (arg_4) {\n options = arg_3;\n metadata = arg_4;\n } else {\n options = undefined;\n metadata = arg_3;\n }\n\n if (arg_2) {\n options = _objectSpread({\n defaultCountry: arg_2\n }, options);\n }\n } // `defaultCountry` is not passed.\n // Example: `parsePhoneNumber('+78005553535', [options], metadata)`.\n else if (isObject(arg_2)) {\n if (arg_3) {\n options = arg_2;\n metadata = arg_3;\n } else {\n metadata = arg_2;\n }\n } else throw new Error(\"Invalid second argument: \".concat(arg_2));\n\n return {\n text: text,\n options: options,\n metadata: metadata\n };\n} // Otherwise istanbul would show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\nvar isObject = function isObject(_) {\n return _typeof(_) === 'object';\n};\n//# sourceMappingURL=parsePhoneNumber.js.map","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport parsePhoneNumber from './parsePhoneNumber_';\nimport ParseError from './ParseError';\nimport { isSupportedCountry } from './metadata';\nexport default function parsePhoneNumberFromString(text, options, metadata) {\n // Validate `defaultCountry`.\n if (options && options.defaultCountry && !isSupportedCountry(options.defaultCountry, metadata)) {\n options = _objectSpread({}, options, {\n defaultCountry: undefined\n });\n } // Parse phone number.\n\n\n try {\n return parsePhoneNumber(text, options, metadata);\n } catch (error) {\n /* istanbul ignore else */\n if (error instanceof ParseError) {//\n } else {\n throw error;\n }\n }\n}\n//# sourceMappingURL=parsePhoneNumberFromString_.js.map","import { normalizeArguments } from './parsePhoneNumber';\nimport parsePhoneNumberFromString_ from './parsePhoneNumberFromString_';\nexport default function parsePhoneNumberFromString() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return parsePhoneNumberFromString_(text, options, metadata);\n}\n//# sourceMappingURL=parsePhoneNumberFromString.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport { parsePhoneNumberFromString } from 'libphonenumber-js';\nexport var IS_PHONE_NUMBER = 'isPhoneNumber';\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, region) {\n try {\n var phoneNum = parsePhoneNumberFromString(value, region);\n var result = phoneNum === null || phoneNum === void 0 ? void 0 : phoneNum.isValid();\n return !!result;\n }\n catch (error) {\n // logging?\n return false;\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(region, validationOptions) {\n return ValidateBy({\n name: IS_PHONE_NUMBER,\n constraints: [region],\n validator: {\n validate: function (value, args) { return isPhoneNumber(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid phone number'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsPhoneNumber.js.map","import { withMetadata } from '../metadata'\r\nimport { parsePhoneNumberFromString as _parsePhoneNumberFromString } from '../../core/index'\r\n\r\nexport function parsePhoneNumberFromString() {\r\n\treturn withMetadata(_parsePhoneNumberFromString, arguments)\r\n}","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport matchesValidator from 'validator/lib/matches';\nexport var IS_MILITARY_TIME = 'isMilitaryTime';\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) {\n var militaryTimeRegex = /^([01]\\d|2[0-3]):?([0-5]\\d)$/;\n return typeof value === 'string' && matchesValidator(value, militaryTimeRegex);\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) {\n return ValidateBy({\n name: IS_MILITARY_TIME,\n validator: {\n validate: function (value, args) { return isMilitaryTime(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid representation of military time in the format HH:MM'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsMilitaryTime.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isHash;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar lengths = {\n md5: 32,\n md4: 32,\n sha1: 40,\n sha256: 64,\n sha384: 96,\n sha512: 128,\n ripemd128: 32,\n ripemd160: 40,\n tiger128: 32,\n tiger160: 40,\n tiger192: 48,\n crc32: 8,\n crc32b: 8\n};\n\nfunction isHash(str, algorithm) {\n (0, _assertString.default)(str);\n var hash = new RegExp(\"^[a-fA-F0-9]{\".concat(lengths[algorithm], \"}$\"));\n return hash.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isHashValidator from 'validator/lib/isHash';\nexport var IS_HASH = 'isHash';\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, algorithm) {\n return typeof value === 'string' && isHashValidator(value, algorithm);\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, validationOptions) {\n return ValidateBy({\n name: IS_HASH,\n constraints: [algorithm],\n validator: {\n validate: function (value, args) { return isHash(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a hash of type $constraint1'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsHash.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISSN;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar issn = '^\\\\d{4}-?\\\\d{3}[\\\\dX]$';\n\nfunction isISSN(str) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, _assertString.default)(str);\n var testIssn = issn;\n testIssn = options.require_hyphen ? testIssn.replace('?', '') : testIssn;\n testIssn = options.case_sensitive ? new RegExp(testIssn) : new RegExp(testIssn, 'i');\n\n if (!testIssn.test(str)) {\n return false;\n }\n\n var digits = str.replace('-', '').toUpperCase();\n var checksum = 0;\n\n for (var i = 0; i < digits.length; i++) {\n var digit = digits[i];\n checksum += (digit === 'X' ? 10 : +digit) * (8 - i);\n }\n\n return checksum % 11 === 0;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isISSNValidator from 'validator/lib/isISSN';\nexport var IS_ISSN = 'isISSN';\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, options) {\n return typeof value === 'string' && isISSNValidator(value, options);\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, validationOptions) {\n return ValidateBy({\n name: IS_ISSN,\n constraints: [options],\n validator: {\n validate: function (value, args) { return isISSN(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a ISSN'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsISSN.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport { isISO8601 } from './IsISO8601';\nexport var IS_DATE_STRING = 'isDateString';\n/**\n * Alias for IsISO8601 validator\n */\nexport function isDateString(value, options) {\n return isISO8601(value, options);\n}\n/**\n * Alias for IsISO8601 validator\n */\nexport function IsDateString(options, validationOptions) {\n return ValidateBy({\n name: IS_DATE_STRING,\n constraints: [options],\n validator: {\n validate: function (value, args) { return isDateString(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid ISO 8601 date string'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsDateString.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBoolean;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar defaultOptions = {\n loose: false\n};\nvar strictBooleans = ['true', 'false', '1', '0'];\nvar looseBooleans = [].concat(strictBooleans, ['yes', 'no']);\n\nfunction isBoolean(str) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultOptions;\n (0, _assertString.default)(str);\n\n if (options.loose) {\n return looseBooleans.includes(str.toLowerCase());\n }\n\n return strictBooleans.includes(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isBooleanValidator from 'validator/lib/isBoolean';\nexport var IS_BOOLEAN_STRING = 'isBooleanString';\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) {\n return typeof value === 'string' && isBooleanValidator(value);\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) {\n return ValidateBy({\n name: IS_BOOLEAN_STRING,\n validator: {\n validate: function (value, args) { return isBooleanString(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a boolean string'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsBooleanString.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isNumeric;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _alpha = require(\"./alpha\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar numericNoSymbols = /^[0-9]+$/;\n\nfunction isNumeric(str, options) {\n (0, _assertString.default)(str);\n\n if (options && options.no_symbols) {\n return numericNoSymbols.test(str);\n }\n\n return new RegExp(\"^[+-]?([0-9]*[\".concat((options || {}).locale ? _alpha.decimal[options.locale] : '.', \"])?[0-9]+$\")).test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isNumericValidator from 'validator/lib/isNumeric';\nexport var IS_NUMBER_STRING = 'isNumberString';\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, options) {\n return typeof value === 'string' && isNumericValidator(value, options);\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(options, validationOptions) {\n return ValidateBy({\n name: IS_NUMBER_STRING,\n constraints: [options],\n validator: {\n validate: function (value, args) { return isNumberString(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a number string'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsNumberString.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBase32;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar base32 = /^[A-Z2-7]+=*$/;\n\nfunction isBase32(str) {\n (0, _assertString.default)(str);\n var len = str.length;\n\n if (len % 8 === 0 && base32.test(str)) {\n return true;\n }\n\n return false;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isBase32Validator from 'validator/lib/isBase32';\nexport var IS_BASE32 = 'isBase32';\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) {\n return typeof value === 'string' && isBase32Validator(value);\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) {\n return ValidateBy({\n name: IS_BASE32,\n validator: {\n validate: function (value, args) { return isBase32(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be base32 encoded'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsBase32.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBIC;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _isISO31661Alpha = require(\"./isISO31661Alpha2\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// https://en.wikipedia.org/wiki/ISO_9362\nvar isBICReg = /^[A-Za-z]{6}[A-Za-z0-9]{2}([A-Za-z0-9]{3})?$/;\n\nfunction isBIC(str) {\n (0, _assertString.default)(str); // toUpperCase() should be removed when a new major version goes out that changes\n // the regex to [A-Z] (per the spec).\n\n if (!_isISO31661Alpha.CountryCodes.has(str.slice(4, 6).toUpperCase())) {\n return false;\n }\n\n return isBICReg.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isBICValidator from 'validator/lib/isBIC';\nexport var IS_BIC = 'isBIC';\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) {\n return typeof value === 'string' && isBICValidator(value);\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) {\n return ValidateBy({\n name: IS_BIC,\n validator: {\n validate: function (value, args) { return isBIC(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a BIC or SWIFT code'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsBIC.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBtcAddress;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// supports Bech32 addresses\nvar bech32 = /^(bc1)[a-z0-9]{25,39}$/;\nvar base58 = /^(1|3)[A-HJ-NP-Za-km-z1-9]{25,39}$/;\n\nfunction isBtcAddress(str) {\n (0, _assertString.default)(str); // check for bech32\n\n if (str.startsWith('bc1')) {\n return bech32.test(str);\n }\n\n return base58.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isBtcAddressValidator from 'validator/lib/isBtcAddress';\nexport var IS_BTC_ADDRESS = 'isBtcAddress';\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) {\n return typeof value === 'string' && isBtcAddressValidator(value);\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) {\n return ValidateBy({\n name: IS_BTC_ADDRESS,\n validator: {\n validate: function (value, args) { return isBtcAddress(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a BTC address'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsBtcAddress.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isDataURI;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar validMediaType = /^[a-z]+\\/[a-z0-9\\-\\+]+$/i;\nvar validAttribute = /^[a-z\\-]+=[a-z0-9\\-]+$/i;\nvar validData = /^[a-z0-9!\\$&'\\(\\)\\*\\+,;=\\-\\._~:@\\/\\?%\\s]*$/i;\n\nfunction isDataURI(str) {\n (0, _assertString.default)(str);\n var data = str.split(',');\n\n if (data.length < 2) {\n return false;\n }\n\n var attributes = data.shift().trim().split(';');\n var schemeAndMediaType = attributes.shift();\n\n if (schemeAndMediaType.substr(0, 5) !== 'data:') {\n return false;\n }\n\n var mediaType = schemeAndMediaType.substr(5);\n\n if (mediaType !== '' && !validMediaType.test(mediaType)) {\n return false;\n }\n\n for (var i = 0; i < attributes.length; i++) {\n if (!(i === attributes.length - 1 && attributes[i].toLowerCase() === 'base64') && !validAttribute.test(attributes[i])) {\n return false;\n }\n }\n\n for (var _i = 0; _i < data.length; _i++) {\n if (!validData.test(data[_i])) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isDataURIValidator from 'validator/lib/isDataURI';\nexport var IS_DATA_URI = 'isDataURI';\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) {\n return typeof value === 'string' && isDataURIValidator(value);\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) {\n return ValidateBy({\n name: IS_DATA_URI,\n validator: {\n validate: function (value, args) { return isDataURI(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a data uri format'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsDataURI.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isEAN;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The most commonly used EAN standard is\n * the thirteen-digit EAN-13, while the\n * less commonly used 8-digit EAN-8 barcode was\n * introduced for use on small packages.\n * Also EAN/UCC-14 is used for Grouping of individual\n * trade items above unit level(Intermediate, Carton or Pallet).\n * For more info about EAN-14 checkout: https://www.gtin.info/itf-14-barcodes/\n * EAN consists of:\n * GS1 prefix, manufacturer code, product code and check digit\n * Reference: https://en.wikipedia.org/wiki/International_Article_Number\n * Reference: https://www.gtin.info/\n */\n\n/**\n * Define EAN Lenghts; 8 for EAN-8; 13 for EAN-13; 14 for EAN-14\n * and Regular Expression for valid EANs (EAN-8, EAN-13, EAN-14),\n * with exact numberic matching of 8 or 13 or 14 digits [0-9]\n */\nvar LENGTH_EAN_8 = 8;\nvar LENGTH_EAN_14 = 14;\nvar validEanRegex = /^(\\d{8}|\\d{13}|\\d{14})$/;\n/**\n * Get position weight given:\n * EAN length and digit index/position\n *\n * @param {number} length\n * @param {number} index\n * @return {number}\n */\n\nfunction getPositionWeightThroughLengthAndIndex(length, index) {\n if (length === LENGTH_EAN_8 || length === LENGTH_EAN_14) {\n return index % 2 === 0 ? 3 : 1;\n }\n\n return index % 2 === 0 ? 1 : 3;\n}\n/**\n * Calculate EAN Check Digit\n * Reference: https://en.wikipedia.org/wiki/International_Article_Number#Calculation_of_checksum_digit\n *\n * @param {string} ean\n * @return {number}\n */\n\n\nfunction calculateCheckDigit(ean) {\n var checksum = ean.slice(0, -1).split('').map(function (char, index) {\n return Number(char) * getPositionWeightThroughLengthAndIndex(ean.length, index);\n }).reduce(function (acc, partialSum) {\n return acc + partialSum;\n }, 0);\n var remainder = 10 - checksum % 10;\n return remainder < 10 ? remainder : 0;\n}\n/**\n * Check if string is valid EAN:\n * Matches EAN-8/EAN-13/EAN-14 regex\n * Has valid check digit.\n *\n * @param {string} str\n * @return {boolean}\n */\n\n\nfunction isEAN(str) {\n (0, _assertString.default)(str);\n var actualCheckDigit = Number(str.slice(-1));\n return validEanRegex.test(str) && actualCheckDigit === calculateCheckDigit(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isEANValidator from 'validator/lib/isEAN';\nexport var IS_EAN = 'isEAN';\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) {\n return typeof value === 'string' && isEANValidator(value);\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) {\n return ValidateBy({\n name: IS_EAN,\n validator: {\n validate: function (value, args) { return isEAN(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an EAN (European Article Number)'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsEAN.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isEthereumAddress;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar eth = /^(0x)[0-9a-f]{40}$/i;\n\nfunction isEthereumAddress(str) {\n (0, _assertString.default)(str);\n return eth.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isEthereumAddressValidator from 'validator/lib/isEthereumAddress';\nexport var IS_ETHEREUM_ADDRESS = 'isEthereumAddress';\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) {\n return typeof value === 'string' && isEthereumAddressValidator(value);\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) {\n return ValidateBy({\n name: IS_ETHEREUM_ADDRESS,\n validator: {\n validate: function (value, args) { return isEthereumAddress(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an Ethereum address'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsEthereumAddress.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isHSL;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar hslComma = /^hsla?\\(((\\+|\\-)?([0-9]+(\\.[0-9]+)?(e(\\+|\\-)?[0-9]+)?|\\.[0-9]+(e(\\+|\\-)?[0-9]+)?))(deg|grad|rad|turn)?(,(\\+|\\-)?([0-9]+(\\.[0-9]+)?(e(\\+|\\-)?[0-9]+)?|\\.[0-9]+(e(\\+|\\-)?[0-9]+)?)%){2}(,((\\+|\\-)?([0-9]+(\\.[0-9]+)?(e(\\+|\\-)?[0-9]+)?|\\.[0-9]+(e(\\+|\\-)?[0-9]+)?)%?))?\\)$/i;\nvar hslSpace = /^hsla?\\(((\\+|\\-)?([0-9]+(\\.[0-9]+)?(e(\\+|\\-)?[0-9]+)?|\\.[0-9]+(e(\\+|\\-)?[0-9]+)?))(deg|grad|rad|turn)?(\\s(\\+|\\-)?([0-9]+(\\.[0-9]+)?(e(\\+|\\-)?[0-9]+)?|\\.[0-9]+(e(\\+|\\-)?[0-9]+)?)%){2}\\s?(\\/\\s((\\+|\\-)?([0-9]+(\\.[0-9]+)?(e(\\+|\\-)?[0-9]+)?|\\.[0-9]+(e(\\+|\\-)?[0-9]+)?)%?)\\s?)?\\)$/i;\n\nfunction isHSL(str) {\n (0, _assertString.default)(str); // Strip duplicate spaces before calling the validation regex (See #1598 for more info)\n\n var strippedStr = str.replace(/\\s+/g, ' ').replace(/\\s?(hsla?\\(|\\)|,)\\s?/ig, '$1');\n\n if (strippedStr.indexOf(',') !== -1) {\n return hslComma.test(strippedStr);\n }\n\n return hslSpace.test(strippedStr);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isHSLValidator from 'validator/lib/isHSL';\nexport var IS_HSL = 'isHSL';\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) {\n return typeof value === 'string' && isHSLValidator(value);\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) {\n return ValidateBy({\n name: IS_HSL,\n validator: {\n validate: function (value, args) { return isHSL(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a HSL color'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsHSL.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isIBAN;\nexports.locales = void 0;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * List of country codes with\n * corresponding IBAN regular expression\n * Reference: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n */\nvar ibanRegexThroughCountryCode = {\n AD: /^(AD[0-9]{2})\\d{8}[A-Z0-9]{12}$/,\n AE: /^(AE[0-9]{2})\\d{3}\\d{16}$/,\n AL: /^(AL[0-9]{2})\\d{8}[A-Z0-9]{16}$/,\n AT: /^(AT[0-9]{2})\\d{16}$/,\n AZ: /^(AZ[0-9]{2})[A-Z0-9]{4}\\d{20}$/,\n BA: /^(BA[0-9]{2})\\d{16}$/,\n BE: /^(BE[0-9]{2})\\d{12}$/,\n BG: /^(BG[0-9]{2})[A-Z]{4}\\d{6}[A-Z0-9]{8}$/,\n BH: /^(BH[0-9]{2})[A-Z]{4}[A-Z0-9]{14}$/,\n BR: /^(BR[0-9]{2})\\d{23}[A-Z]{1}[A-Z0-9]{1}$/,\n BY: /^(BY[0-9]{2})[A-Z0-9]{4}\\d{20}$/,\n CH: /^(CH[0-9]{2})\\d{5}[A-Z0-9]{12}$/,\n CR: /^(CR[0-9]{2})\\d{18}$/,\n CY: /^(CY[0-9]{2})\\d{8}[A-Z0-9]{16}$/,\n CZ: /^(CZ[0-9]{2})\\d{20}$/,\n DE: /^(DE[0-9]{2})\\d{18}$/,\n DK: /^(DK[0-9]{2})\\d{14}$/,\n DO: /^(DO[0-9]{2})[A-Z]{4}\\d{20}$/,\n EE: /^(EE[0-9]{2})\\d{16}$/,\n EG: /^(EG[0-9]{2})\\d{25}$/,\n ES: /^(ES[0-9]{2})\\d{20}$/,\n FI: /^(FI[0-9]{2})\\d{14}$/,\n FO: /^(FO[0-9]{2})\\d{14}$/,\n FR: /^(FR[0-9]{2})\\d{10}[A-Z0-9]{11}\\d{2}$/,\n GB: /^(GB[0-9]{2})[A-Z]{4}\\d{14}$/,\n GE: /^(GE[0-9]{2})[A-Z0-9]{2}\\d{16}$/,\n GI: /^(GI[0-9]{2})[A-Z]{4}[A-Z0-9]{15}$/,\n GL: /^(GL[0-9]{2})\\d{14}$/,\n GR: /^(GR[0-9]{2})\\d{7}[A-Z0-9]{16}$/,\n GT: /^(GT[0-9]{2})[A-Z0-9]{4}[A-Z0-9]{20}$/,\n HR: /^(HR[0-9]{2})\\d{17}$/,\n HU: /^(HU[0-9]{2})\\d{24}$/,\n IE: /^(IE[0-9]{2})[A-Z0-9]{4}\\d{14}$/,\n IL: /^(IL[0-9]{2})\\d{19}$/,\n IQ: /^(IQ[0-9]{2})[A-Z]{4}\\d{15}$/,\n IR: /^(IR[0-9]{2})0\\d{2}0\\d{18}$/,\n IS: /^(IS[0-9]{2})\\d{22}$/,\n IT: /^(IT[0-9]{2})[A-Z]{1}\\d{10}[A-Z0-9]{12}$/,\n JO: /^(JO[0-9]{2})[A-Z]{4}\\d{22}$/,\n KW: /^(KW[0-9]{2})[A-Z]{4}[A-Z0-9]{22}$/,\n KZ: /^(KZ[0-9]{2})\\d{3}[A-Z0-9]{13}$/,\n LB: /^(LB[0-9]{2})\\d{4}[A-Z0-9]{20}$/,\n LC: /^(LC[0-9]{2})[A-Z]{4}[A-Z0-9]{24}$/,\n LI: /^(LI[0-9]{2})\\d{5}[A-Z0-9]{12}$/,\n LT: /^(LT[0-9]{2})\\d{16}$/,\n LU: /^(LU[0-9]{2})\\d{3}[A-Z0-9]{13}$/,\n LV: /^(LV[0-9]{2})[A-Z]{4}[A-Z0-9]{13}$/,\n MC: /^(MC[0-9]{2})\\d{10}[A-Z0-9]{11}\\d{2}$/,\n MD: /^(MD[0-9]{2})[A-Z0-9]{20}$/,\n ME: /^(ME[0-9]{2})\\d{18}$/,\n MK: /^(MK[0-9]{2})\\d{3}[A-Z0-9]{10}\\d{2}$/,\n MR: /^(MR[0-9]{2})\\d{23}$/,\n MT: /^(MT[0-9]{2})[A-Z]{4}\\d{5}[A-Z0-9]{18}$/,\n MU: /^(MU[0-9]{2})[A-Z]{4}\\d{19}[A-Z]{3}$/,\n MZ: /^(MZ[0-9]{2})\\d{21}$/,\n NL: /^(NL[0-9]{2})[A-Z]{4}\\d{10}$/,\n NO: /^(NO[0-9]{2})\\d{11}$/,\n PK: /^(PK[0-9]{2})[A-Z0-9]{4}\\d{16}$/,\n PL: /^(PL[0-9]{2})\\d{24}$/,\n PS: /^(PS[0-9]{2})[A-Z0-9]{4}\\d{21}$/,\n PT: /^(PT[0-9]{2})\\d{21}$/,\n QA: /^(QA[0-9]{2})[A-Z]{4}[A-Z0-9]{21}$/,\n RO: /^(RO[0-9]{2})[A-Z]{4}[A-Z0-9]{16}$/,\n RS: /^(RS[0-9]{2})\\d{18}$/,\n SA: /^(SA[0-9]{2})\\d{2}[A-Z0-9]{18}$/,\n SC: /^(SC[0-9]{2})[A-Z]{4}\\d{20}[A-Z]{3}$/,\n SE: /^(SE[0-9]{2})\\d{20}$/,\n SI: /^(SI[0-9]{2})\\d{15}$/,\n SK: /^(SK[0-9]{2})\\d{20}$/,\n SM: /^(SM[0-9]{2})[A-Z]{1}\\d{10}[A-Z0-9]{12}$/,\n SV: /^(SV[0-9]{2})[A-Z0-9]{4}\\d{20}$/,\n TL: /^(TL[0-9]{2})\\d{19}$/,\n TN: /^(TN[0-9]{2})\\d{20}$/,\n TR: /^(TR[0-9]{2})\\d{5}[A-Z0-9]{17}$/,\n UA: /^(UA[0-9]{2})\\d{6}[A-Z0-9]{19}$/,\n VA: /^(VA[0-9]{2})\\d{18}$/,\n VG: /^(VG[0-9]{2})[A-Z0-9]{4}\\d{16}$/,\n XK: /^(XK[0-9]{2})\\d{16}$/\n};\n/**\n * Check whether string has correct universal IBAN format\n * The IBAN consists of up to 34 alphanumeric characters, as follows:\n * Country Code using ISO 3166-1 alpha-2, two letters\n * check digits, two digits and\n * Basic Bank Account Number (BBAN), up to 30 alphanumeric characters.\n * NOTE: Permitted IBAN characters are: digits [0-9] and the 26 latin alphabetic [A-Z]\n *\n * @param {string} str - string under validation\n * @return {boolean}\n */\n\nfunction hasValidIbanFormat(str) {\n // Strip white spaces and hyphens\n var strippedStr = str.replace(/[\\s\\-]+/gi, '').toUpperCase();\n var isoCountryCode = strippedStr.slice(0, 2).toUpperCase();\n return isoCountryCode in ibanRegexThroughCountryCode && ibanRegexThroughCountryCode[isoCountryCode].test(strippedStr);\n}\n/**\n * Check whether string has valid IBAN Checksum\n * by performing basic mod-97 operation and\n * the remainder should equal 1\n * -- Start by rearranging the IBAN by moving the four initial characters to the end of the string\n * -- Replace each letter in the string with two digits, A -> 10, B = 11, Z = 35\n * -- Interpret the string as a decimal integer and\n * -- compute the remainder on division by 97 (mod 97)\n * Reference: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n *\n * @param {string} str\n * @return {boolean}\n */\n\n\nfunction hasValidIbanChecksum(str) {\n var strippedStr = str.replace(/[^A-Z0-9]+/gi, '').toUpperCase(); // Keep only digits and A-Z latin alphabetic\n\n var rearranged = strippedStr.slice(4) + strippedStr.slice(0, 4);\n var alphaCapsReplacedWithDigits = rearranged.replace(/[A-Z]/g, function (char) {\n return char.charCodeAt(0) - 55;\n });\n var remainder = alphaCapsReplacedWithDigits.match(/\\d{1,7}/g).reduce(function (acc, value) {\n return Number(acc + value) % 97;\n }, '');\n return remainder === 1;\n}\n\nfunction isIBAN(str) {\n (0, _assertString.default)(str);\n return hasValidIbanFormat(str) && hasValidIbanChecksum(str);\n}\n\nvar locales = Object.keys(ibanRegexThroughCountryCode);\nexports.locales = locales;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isIBANValidator from 'validator/lib/isIBAN';\nexport var IS_IBAN = 'isIBAN';\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) {\n return typeof value === 'string' && isIBANValidator(value);\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) {\n return ValidateBy({\n name: IS_IBAN,\n validator: {\n validate: function (value, args) { return isIBAN(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an IBAN'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsIBAN.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isIdentityCard;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _isInt = _interopRequireDefault(require(\"./isInt\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar validators = {\n PL: function PL(str) {\n (0, _assertString.default)(str);\n var weightOfDigits = {\n 1: 1,\n 2: 3,\n 3: 7,\n 4: 9,\n 5: 1,\n 6: 3,\n 7: 7,\n 8: 9,\n 9: 1,\n 10: 3,\n 11: 0\n };\n\n if (str != null && str.length === 11 && (0, _isInt.default)(str, {\n allow_leading_zeroes: true\n })) {\n var digits = str.split('').slice(0, -1);\n var sum = digits.reduce(function (acc, digit, index) {\n return acc + Number(digit) * weightOfDigits[index + 1];\n }, 0);\n var modulo = sum % 10;\n var lastDigit = Number(str.charAt(str.length - 1));\n\n if (modulo === 0 && lastDigit === 0 || lastDigit === 10 - modulo) {\n return true;\n }\n }\n\n return false;\n },\n ES: function ES(str) {\n (0, _assertString.default)(str);\n var DNI = /^[0-9X-Z][0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKE]$/;\n var charsValue = {\n X: 0,\n Y: 1,\n Z: 2\n };\n var controlDigits = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E']; // sanitize user input\n\n var sanitized = str.trim().toUpperCase(); // validate the data structure\n\n if (!DNI.test(sanitized)) {\n return false;\n } // validate the control digit\n\n\n var number = sanitized.slice(0, -1).replace(/[X,Y,Z]/g, function (char) {\n return charsValue[char];\n });\n return sanitized.endsWith(controlDigits[number % 23]);\n },\n FI: function FI(str) {\n // https://dvv.fi/en/personal-identity-code#:~:text=control%20character%20for%20a-,personal,-identity%20code%20calculated\n (0, _assertString.default)(str);\n\n if (str.length !== 11) {\n return false;\n }\n\n if (!str.match(/^\\d{6}[\\-A\\+]\\d{3}[0-9ABCDEFHJKLMNPRSTUVWXY]{1}$/)) {\n return false;\n }\n\n var checkDigits = '0123456789ABCDEFHJKLMNPRSTUVWXY';\n var idAsNumber = parseInt(str.slice(0, 6), 10) * 1000 + parseInt(str.slice(7, 10), 10);\n var remainder = idAsNumber % 31;\n var checkDigit = checkDigits[remainder];\n return checkDigit === str.slice(10, 11);\n },\n IN: function IN(str) {\n var DNI = /^[1-9]\\d{3}\\s?\\d{4}\\s?\\d{4}$/; // multiplication table\n\n var d = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 0, 6, 7, 8, 9, 5], [2, 3, 4, 0, 1, 7, 8, 9, 5, 6], [3, 4, 0, 1, 2, 8, 9, 5, 6, 7], [4, 0, 1, 2, 3, 9, 5, 6, 7, 8], [5, 9, 8, 7, 6, 0, 4, 3, 2, 1], [6, 5, 9, 8, 7, 1, 0, 4, 3, 2], [7, 6, 5, 9, 8, 2, 1, 0, 4, 3], [8, 7, 6, 5, 9, 3, 2, 1, 0, 4], [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]]; // permutation table\n\n var p = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 5, 7, 6, 2, 8, 3, 0, 9, 4], [5, 8, 0, 3, 7, 9, 6, 1, 4, 2], [8, 9, 1, 6, 0, 4, 3, 5, 2, 7], [9, 4, 5, 3, 1, 2, 6, 8, 7, 0], [4, 2, 8, 6, 5, 7, 3, 9, 0, 1], [2, 7, 9, 3, 8, 0, 6, 4, 1, 5], [7, 0, 4, 6, 9, 1, 3, 2, 5, 8]]; // sanitize user input\n\n var sanitized = str.trim(); // validate the data structure\n\n if (!DNI.test(sanitized)) {\n return false;\n }\n\n var c = 0;\n var invertedArray = sanitized.replace(/\\s/g, '').split('').map(Number).reverse();\n invertedArray.forEach(function (val, i) {\n c = d[c][p[i % 8][val]];\n });\n return c === 0;\n },\n IR: function IR(str) {\n if (!str.match(/^\\d{10}$/)) return false;\n str = \"0000\".concat(str).substr(str.length - 6);\n if (parseInt(str.substr(3, 6), 10) === 0) return false;\n var lastNumber = parseInt(str.substr(9, 1), 10);\n var sum = 0;\n\n for (var i = 0; i < 9; i++) {\n sum += parseInt(str.substr(i, 1), 10) * (10 - i);\n }\n\n sum %= 11;\n return sum < 2 && lastNumber === sum || sum >= 2 && lastNumber === 11 - sum;\n },\n IT: function IT(str) {\n if (str.length !== 9) return false;\n if (str === 'CA00000AA') return false; // https://it.wikipedia.org/wiki/Carta_d%27identit%C3%A0_elettronica_italiana\n\n return str.search(/C[A-Z][0-9]{5}[A-Z]{2}/i) > -1;\n },\n NO: function NO(str) {\n var sanitized = str.trim();\n if (isNaN(Number(sanitized))) return false;\n if (sanitized.length !== 11) return false;\n if (sanitized === '00000000000') return false; // https://no.wikipedia.org/wiki/F%C3%B8dselsnummer\n\n var f = sanitized.split('').map(Number);\n var k1 = (11 - (3 * f[0] + 7 * f[1] + 6 * f[2] + 1 * f[3] + 8 * f[4] + 9 * f[5] + 4 * f[6] + 5 * f[7] + 2 * f[8]) % 11) % 11;\n var k2 = (11 - (5 * f[0] + 4 * f[1] + 3 * f[2] + 2 * f[3] + 7 * f[4] + 6 * f[5] + 5 * f[6] + 4 * f[7] + 3 * f[8] + 2 * k1) % 11) % 11;\n if (k1 !== f[9] || k2 !== f[10]) return false;\n return true;\n },\n TH: function TH(str) {\n if (!str.match(/^[1-8]\\d{12}$/)) return false; // validate check digit\n\n var sum = 0;\n\n for (var i = 0; i < 12; i++) {\n sum += parseInt(str[i], 10) * (13 - i);\n }\n\n return str[12] === ((11 - sum % 11) % 10).toString();\n },\n LK: function LK(str) {\n var old_nic = /^[1-9]\\d{8}[vx]$/i;\n var new_nic = /^[1-9]\\d{11}$/i;\n if (str.length === 10 && old_nic.test(str)) return true;else if (str.length === 12 && new_nic.test(str)) return true;\n return false;\n },\n 'he-IL': function heIL(str) {\n var DNI = /^\\d{9}$/; // sanitize user input\n\n var sanitized = str.trim(); // validate the data structure\n\n if (!DNI.test(sanitized)) {\n return false;\n }\n\n var id = sanitized;\n var sum = 0,\n incNum;\n\n for (var i = 0; i < id.length; i++) {\n incNum = Number(id[i]) * (i % 2 + 1); // Multiply number by 1 or 2\n\n sum += incNum > 9 ? incNum - 9 : incNum; // Sum the digits up and add to total\n }\n\n return sum % 10 === 0;\n },\n 'ar-LY': function arLY(str) {\n // Libya National Identity Number NIN is 12 digits, the first digit is either 1 or 2\n var NIN = /^(1|2)\\d{11}$/; // sanitize user input\n\n var sanitized = str.trim(); // validate the data structure\n\n if (!NIN.test(sanitized)) {\n return false;\n }\n\n return true;\n },\n 'ar-TN': function arTN(str) {\n var DNI = /^\\d{8}$/; // sanitize user input\n\n var sanitized = str.trim(); // validate the data structure\n\n if (!DNI.test(sanitized)) {\n return false;\n }\n\n return true;\n },\n 'zh-CN': function zhCN(str) {\n var provincesAndCities = ['11', // 北京\n '12', // 天津\n '13', // 河北\n '14', // 山西\n '15', // 内蒙古\n '21', // 辽宁\n '22', // 吉林\n '23', // 黑龙江\n '31', // 上海\n '32', // 江苏\n '33', // 浙江\n '34', // 安徽\n '35', // 福建\n '36', // 江西\n '37', // 山东\n '41', // 河南\n '42', // 湖北\n '43', // 湖南\n '44', // 广东\n '45', // 广西\n '46', // 海南\n '50', // 重庆\n '51', // 四川\n '52', // 贵州\n '53', // 云南\n '54', // 西藏\n '61', // 陕西\n '62', // 甘肃\n '63', // 青海\n '64', // 宁夏\n '65', // 新疆\n '71', // 台湾\n '81', // 香港\n '82', // 澳门\n '91' // 国外\n ];\n var powers = ['7', '9', '10', '5', '8', '4', '2', '1', '6', '3', '7', '9', '10', '5', '8', '4', '2'];\n var parityBit = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];\n\n var checkAddressCode = function checkAddressCode(addressCode) {\n return provincesAndCities.includes(addressCode);\n };\n\n var checkBirthDayCode = function checkBirthDayCode(birDayCode) {\n var yyyy = parseInt(birDayCode.substring(0, 4), 10);\n var mm = parseInt(birDayCode.substring(4, 6), 10);\n var dd = parseInt(birDayCode.substring(6), 10);\n var xdata = new Date(yyyy, mm - 1, dd);\n\n if (xdata > new Date()) {\n return false; // eslint-disable-next-line max-len\n } else if (xdata.getFullYear() === yyyy && xdata.getMonth() === mm - 1 && xdata.getDate() === dd) {\n return true;\n }\n\n return false;\n };\n\n var getParityBit = function getParityBit(idCardNo) {\n var id17 = idCardNo.substring(0, 17);\n var power = 0;\n\n for (var i = 0; i < 17; i++) {\n power += parseInt(id17.charAt(i), 10) * parseInt(powers[i], 10);\n }\n\n var mod = power % 11;\n return parityBit[mod];\n };\n\n var checkParityBit = function checkParityBit(idCardNo) {\n return getParityBit(idCardNo) === idCardNo.charAt(17).toUpperCase();\n };\n\n var check15IdCardNo = function check15IdCardNo(idCardNo) {\n var check = /^[1-9]\\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\\d{3}$/.test(idCardNo);\n if (!check) return false;\n var addressCode = idCardNo.substring(0, 2);\n check = checkAddressCode(addressCode);\n if (!check) return false;\n var birDayCode = \"19\".concat(idCardNo.substring(6, 12));\n check = checkBirthDayCode(birDayCode);\n if (!check) return false;\n return true;\n };\n\n var check18IdCardNo = function check18IdCardNo(idCardNo) {\n var check = /^[1-9]\\d{5}[1-9]\\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\\d{3}(\\d|x|X)$/.test(idCardNo);\n if (!check) return false;\n var addressCode = idCardNo.substring(0, 2);\n check = checkAddressCode(addressCode);\n if (!check) return false;\n var birDayCode = idCardNo.substring(6, 14);\n check = checkBirthDayCode(birDayCode);\n if (!check) return false;\n return checkParityBit(idCardNo);\n };\n\n var checkIdCardNo = function checkIdCardNo(idCardNo) {\n var check = /^\\d{15}|(\\d{17}(\\d|x|X))$/.test(idCardNo);\n if (!check) return false;\n\n if (idCardNo.length === 15) {\n return check15IdCardNo(idCardNo);\n }\n\n return check18IdCardNo(idCardNo);\n };\n\n return checkIdCardNo(str);\n },\n 'zh-TW': function zhTW(str) {\n var ALPHABET_CODES = {\n A: 10,\n B: 11,\n C: 12,\n D: 13,\n E: 14,\n F: 15,\n G: 16,\n H: 17,\n I: 34,\n J: 18,\n K: 19,\n L: 20,\n M: 21,\n N: 22,\n O: 35,\n P: 23,\n Q: 24,\n R: 25,\n S: 26,\n T: 27,\n U: 28,\n V: 29,\n W: 32,\n X: 30,\n Y: 31,\n Z: 33\n };\n var sanitized = str.trim().toUpperCase();\n if (!/^[A-Z][0-9]{9}$/.test(sanitized)) return false;\n return Array.from(sanitized).reduce(function (sum, number, index) {\n if (index === 0) {\n var code = ALPHABET_CODES[number];\n return code % 10 * 9 + Math.floor(code / 10);\n }\n\n if (index === 9) {\n return (10 - sum % 10 - Number(number)) % 10 === 0;\n }\n\n return sum + Number(number) * (9 - index);\n }, 0);\n }\n};\n\nfunction isIdentityCard(str, locale) {\n (0, _assertString.default)(str);\n\n if (locale in validators) {\n return validators[locale](str);\n } else if (locale === 'any') {\n for (var key in validators) {\n // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes\n // istanbul ignore else\n if (validators.hasOwnProperty(key)) {\n var validator = validators[key];\n\n if (validator(str)) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n throw new Error(\"Invalid locale '\".concat(locale, \"'\"));\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isIdentityCardValidator from 'validator/lib/isIdentityCard';\nexport var IS_IDENTITY_CARD = 'isIdentityCard';\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, locale) {\n return typeof value === 'string' && isIdentityCardValidator(value, locale);\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(locale, validationOptions) {\n return ValidateBy({\n name: IS_IDENTITY_CARD,\n constraints: [locale],\n validator: {\n validate: function (value, args) { return isIdentityCard(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a identity card number'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsIdentityCard.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isISRC;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// see http://isrc.ifpi.org/en/isrc-standard/code-syntax\nvar isrc = /^[A-Z]{2}[0-9A-Z]{3}\\d{2}\\d{5}$/;\n\nfunction isISRC(str) {\n (0, _assertString.default)(str);\n return isrc.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isISRCValidator from 'validator/lib/isISRC';\nexport var IS_ISRC = 'isISRC';\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) {\n return typeof value === 'string' && isISRCValidator(value);\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) {\n return ValidateBy({\n name: IS_ISRC,\n validator: {\n validate: function (value, args) { return isISRC(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an ISRC'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsISRC.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isLocale;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar localeReg = /^[A-Za-z]{2,4}([_-]([A-Za-z]{4}|[\\d]{3}))?([_-]([A-Za-z]{2}|[\\d]{3}))?$/;\n\nfunction isLocale(str) {\n (0, _assertString.default)(str);\n\n if (str === 'en_US_POSIX' || str === 'ca_ES_VALENCIA') {\n return true;\n }\n\n return localeReg.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isLocaleValidator from 'validator/lib/isLocale';\nexport var IS_LOCALE = 'isLocale';\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) {\n return typeof value === 'string' && isLocaleValidator(value);\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) {\n return ValidateBy({\n name: IS_LOCALE,\n validator: {\n validate: function (value, args) { return isLocale(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be locale'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsLocale.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMagnetURI;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar magnetURI = /^magnet:\\?xt(?:\\.1)?=urn:(?:aich|bitprint|btih|ed2k|ed2khash|kzhash|md5|sha1|tree:tiger):[a-z0-9]{32}(?:[a-z0-9]{8})?($|&)/i;\n\nfunction isMagnetURI(url) {\n (0, _assertString.default)(url);\n return magnetURI.test(url.trim());\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isMagnetURIValidator from 'validator/lib/isMagnetURI';\nexport var IS_MAGNET_URI = 'isMagnetURI';\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) {\n return typeof value === 'string' && isMagnetURIValidator(value);\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) {\n return ValidateBy({\n name: IS_MAGNET_URI,\n validator: {\n validate: function (value, args) { return isMagnetURI(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be magnet uri format'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsMagnetURI.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isMimeType;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n Checks if the provided string matches to a correct Media type format (MIME type)\n\n This function only checks is the string format follows the\n etablished rules by the according RFC specifications.\n This function supports 'charset' in textual media types\n (https://tools.ietf.org/html/rfc6657).\n\n This function does not check against all the media types listed\n by the IANA (https://www.iana.org/assignments/media-types/media-types.xhtml)\n because of lightness purposes : it would require to include\n all these MIME types in this librairy, which would weigh it\n significantly. This kind of effort maybe is not worth for the use that\n this function has in this entire librairy.\n\n More informations in the RFC specifications :\n - https://tools.ietf.org/html/rfc2045\n - https://tools.ietf.org/html/rfc2046\n - https://tools.ietf.org/html/rfc7231#section-3.1.1.1\n - https://tools.ietf.org/html/rfc7231#section-3.1.1.5\n*/\n// Match simple MIME types\n// NB :\n// Subtype length must not exceed 100 characters.\n// This rule does not comply to the RFC specs (what is the max length ?).\nvar mimeTypeSimple = /^(application|audio|font|image|message|model|multipart|text|video)\\/[a-zA-Z0-9\\.\\-\\+]{1,100}$/i; // eslint-disable-line max-len\n// Handle \"charset\" in \"text/*\"\n\nvar mimeTypeText = /^text\\/[a-zA-Z0-9\\.\\-\\+]{1,100};\\s?charset=(\"[a-zA-Z0-9\\.\\-\\+\\s]{0,70}\"|[a-zA-Z0-9\\.\\-\\+]{0,70})(\\s?\\([a-zA-Z0-9\\.\\-\\+\\s]{1,20}\\))?$/i; // eslint-disable-line max-len\n// Handle \"boundary\" in \"multipart/*\"\n\nvar mimeTypeMultipart = /^multipart\\/[a-zA-Z0-9\\.\\-\\+]{1,100}(;\\s?(boundary|charset)=(\"[a-zA-Z0-9\\.\\-\\+\\s]{0,70}\"|[a-zA-Z0-9\\.\\-\\+]{0,70})(\\s?\\([a-zA-Z0-9\\.\\-\\+\\s]{1,20}\\))?){0,2}$/i; // eslint-disable-line max-len\n\nfunction isMimeType(str) {\n (0, _assertString.default)(str);\n return mimeTypeSimple.test(str) || mimeTypeText.test(str) || mimeTypeMultipart.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isMimeTypeValidator from 'validator/lib/isMimeType';\nexport var IS_MIME_TYPE = 'isMimeType';\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) {\n return typeof value === 'string' && isMimeTypeValidator(value);\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) {\n return ValidateBy({\n name: IS_MIME_TYPE,\n validator: {\n validate: function (value, args) { return isMimeType(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be MIME type format'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsMimeType.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isOctal;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar octal = /^(0o)?[0-7]+$/i;\n\nfunction isOctal(str) {\n (0, _assertString.default)(str);\n return octal.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isOctalValidator from 'validator/lib/isOctal';\nexport var IS_OCTAL = 'isOctal';\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) {\n return typeof value === 'string' && isOctalValidator(value);\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) {\n return ValidateBy({\n name: IS_OCTAL,\n validator: {\n validate: function (value, args) { return isOctal(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be valid octal number'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsOctal.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isPassportNumber;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Reference:\n * https://en.wikipedia.org/ -- Wikipedia\n * https://docs.microsoft.com/en-us/microsoft-365/compliance/eu-passport-number -- EU Passport Number\n * https://countrycode.org/ -- Country Codes\n */\nvar passportRegexByCountryCode = {\n AM: /^[A-Z]{2}\\d{7}$/,\n // ARMENIA\n AR: /^[A-Z]{3}\\d{6}$/,\n // ARGENTINA\n AT: /^[A-Z]\\d{7}$/,\n // AUSTRIA\n AU: /^[A-Z]\\d{7}$/,\n // AUSTRALIA\n BE: /^[A-Z]{2}\\d{6}$/,\n // BELGIUM\n BG: /^\\d{9}$/,\n // BULGARIA\n BR: /^[A-Z]{2}\\d{6}$/,\n // BRAZIL\n BY: /^[A-Z]{2}\\d{7}$/,\n // BELARUS\n CA: /^[A-Z]{2}\\d{6}$/,\n // CANADA\n CH: /^[A-Z]\\d{7}$/,\n // SWITZERLAND\n CN: /^G\\d{8}$|^E(?![IO])[A-Z0-9]\\d{7}$/,\n // CHINA [G=Ordinary, E=Electronic] followed by 8-digits, or E followed by any UPPERCASE letter (except I and O) followed by 7 digits\n CY: /^[A-Z](\\d{6}|\\d{8})$/,\n // CYPRUS\n CZ: /^\\d{8}$/,\n // CZECH REPUBLIC\n DE: /^[CFGHJKLMNPRTVWXYZ0-9]{9}$/,\n // GERMANY\n DK: /^\\d{9}$/,\n // DENMARK\n DZ: /^\\d{9}$/,\n // ALGERIA\n EE: /^([A-Z]\\d{7}|[A-Z]{2}\\d{7})$/,\n // ESTONIA (K followed by 7-digits), e-passports have 2 UPPERCASE followed by 7 digits\n ES: /^[A-Z0-9]{2}([A-Z0-9]?)\\d{6}$/,\n // SPAIN\n FI: /^[A-Z]{2}\\d{7}$/,\n // FINLAND\n FR: /^\\d{2}[A-Z]{2}\\d{5}$/,\n // FRANCE\n GB: /^\\d{9}$/,\n // UNITED KINGDOM\n GR: /^[A-Z]{2}\\d{7}$/,\n // GREECE\n HR: /^\\d{9}$/,\n // CROATIA\n HU: /^[A-Z]{2}(\\d{6}|\\d{7})$/,\n // HUNGARY\n IE: /^[A-Z0-9]{2}\\d{7}$/,\n // IRELAND\n IN: /^[A-Z]{1}-?\\d{7}$/,\n // INDIA\n ID: /^[A-C]\\d{7}$/,\n // INDONESIA\n IR: /^[A-Z]\\d{8}$/,\n // IRAN\n IS: /^(A)\\d{7}$/,\n // ICELAND\n IT: /^[A-Z0-9]{2}\\d{7}$/,\n // ITALY\n JP: /^[A-Z]{2}\\d{7}$/,\n // JAPAN\n KR: /^[MS]\\d{8}$/,\n // SOUTH KOREA, REPUBLIC OF KOREA, [S=PS Passports, M=PM Passports]\n LT: /^[A-Z0-9]{8}$/,\n // LITHUANIA\n LU: /^[A-Z0-9]{8}$/,\n // LUXEMBURG\n LV: /^[A-Z0-9]{2}\\d{7}$/,\n // LATVIA\n LY: /^[A-Z0-9]{8}$/,\n // LIBYA\n MT: /^\\d{7}$/,\n // MALTA\n MZ: /^([A-Z]{2}\\d{7})|(\\d{2}[A-Z]{2}\\d{5})$/,\n // MOZAMBIQUE\n MY: /^[AHK]\\d{8}$/,\n // MALAYSIA\n NL: /^[A-Z]{2}[A-Z0-9]{6}\\d$/,\n // NETHERLANDS\n PL: /^[A-Z]{2}\\d{7}$/,\n // POLAND\n PT: /^[A-Z]\\d{6}$/,\n // PORTUGAL\n RO: /^\\d{8,9}$/,\n // ROMANIA\n RU: /^\\d{9}$/,\n // RUSSIAN FEDERATION\n SE: /^\\d{8}$/,\n // SWEDEN\n SL: /^(P)[A-Z]\\d{7}$/,\n // SLOVANIA\n SK: /^[0-9A-Z]\\d{7}$/,\n // SLOVAKIA\n TR: /^[A-Z]\\d{8}$/,\n // TURKEY\n UA: /^[A-Z]{2}\\d{6}$/,\n // UKRAINE\n US: /^\\d{9}$/ // UNITED STATES\n\n};\n/**\n * Check if str is a valid passport number\n * relative to provided ISO Country Code.\n *\n * @param {string} str\n * @param {string} countryCode\n * @return {boolean}\n */\n\nfunction isPassportNumber(str, countryCode) {\n (0, _assertString.default)(str);\n /** Remove All Whitespaces, Convert to UPPERCASE */\n\n var normalizedStr = str.replace(/\\s/g, '').toUpperCase();\n return countryCode.toUpperCase() in passportRegexByCountryCode && passportRegexByCountryCode[countryCode].test(normalizedStr);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isPassportNumberValidator from 'validator/lib/isPassportNumber';\nexport var IS_PASSPORT_NUMBER = 'isPassportNumber';\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, countryCode) {\n return typeof value === 'string' && isPassportNumberValidator(value, countryCode);\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, validationOptions) {\n return ValidateBy({\n name: IS_PASSPORT_NUMBER,\n constraints: [countryCode],\n validator: {\n validate: function (value, args) { return isPassportNumber(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be valid passport number'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsPassportNumber.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isPostalCode;\nexports.locales = void 0;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// common patterns\nvar threeDigit = /^\\d{3}$/;\nvar fourDigit = /^\\d{4}$/;\nvar fiveDigit = /^\\d{5}$/;\nvar sixDigit = /^\\d{6}$/;\nvar patterns = {\n AD: /^AD\\d{3}$/,\n AT: fourDigit,\n AU: fourDigit,\n AZ: /^AZ\\d{4}$/,\n BE: fourDigit,\n BG: fourDigit,\n BR: /^\\d{5}-\\d{3}$/,\n BY: /2[1-4]{1}\\d{4}$/,\n CA: /^[ABCEGHJKLMNPRSTVXY]\\d[ABCEGHJ-NPRSTV-Z][\\s\\-]?\\d[ABCEGHJ-NPRSTV-Z]\\d$/i,\n CH: fourDigit,\n CN: /^(0[1-7]|1[012356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[1-5]|8[1345]|9[09])\\d{4}$/,\n CZ: /^\\d{3}\\s?\\d{2}$/,\n DE: fiveDigit,\n DK: fourDigit,\n DO: fiveDigit,\n DZ: fiveDigit,\n EE: fiveDigit,\n ES: /^(5[0-2]{1}|[0-4]{1}\\d{1})\\d{3}$/,\n FI: fiveDigit,\n FR: /^\\d{2}\\s?\\d{3}$/,\n GB: /^(gir\\s?0aa|[a-z]{1,2}\\d[\\da-z]?\\s?(\\d[a-z]{2})?)$/i,\n GR: /^\\d{3}\\s?\\d{2}$/,\n HR: /^([1-5]\\d{4}$)/,\n HT: /^HT\\d{4}$/,\n HU: fourDigit,\n ID: fiveDigit,\n IE: /^(?!.*(?:o))[A-Za-z]\\d[\\dw]\\s\\w{4}$/i,\n IL: /^(\\d{5}|\\d{7})$/,\n IN: /^((?!10|29|35|54|55|65|66|86|87|88|89)[1-9][0-9]{5})$/,\n IR: /\\b(?!(\\d)\\1{3})[13-9]{4}[1346-9][013-9]{5}\\b/,\n IS: threeDigit,\n IT: fiveDigit,\n JP: /^\\d{3}\\-\\d{4}$/,\n KE: fiveDigit,\n KR: /^(\\d{5}|\\d{6})$/,\n LI: /^(948[5-9]|949[0-7])$/,\n LT: /^LT\\-\\d{5}$/,\n LU: fourDigit,\n LV: /^LV\\-\\d{4}$/,\n LK: fiveDigit,\n MX: fiveDigit,\n MT: /^[A-Za-z]{3}\\s{0,1}\\d{4}$/,\n MY: fiveDigit,\n NL: /^\\d{4}\\s?[a-z]{2}$/i,\n NO: fourDigit,\n NP: /^(10|21|22|32|33|34|44|45|56|57)\\d{3}$|^(977)$/i,\n NZ: fourDigit,\n PL: /^\\d{2}\\-\\d{3}$/,\n PR: /^00[679]\\d{2}([ -]\\d{4})?$/,\n PT: /^\\d{4}\\-\\d{3}?$/,\n RO: sixDigit,\n RU: sixDigit,\n SA: fiveDigit,\n SE: /^[1-9]\\d{2}\\s?\\d{2}$/,\n SG: sixDigit,\n SI: fourDigit,\n SK: /^\\d{3}\\s?\\d{2}$/,\n TH: fiveDigit,\n TN: fourDigit,\n TW: /^\\d{3}(\\d{2})?$/,\n UA: fiveDigit,\n US: /^\\d{5}(-\\d{4})?$/,\n ZA: fourDigit,\n ZM: fiveDigit\n};\nvar locales = Object.keys(patterns);\nexports.locales = locales;\n\nfunction isPostalCode(str, locale) {\n (0, _assertString.default)(str);\n\n if (locale in patterns) {\n return patterns[locale].test(str);\n } else if (locale === 'any') {\n for (var key in patterns) {\n // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes\n // istanbul ignore else\n if (patterns.hasOwnProperty(key)) {\n var pattern = patterns[key];\n\n if (pattern.test(str)) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n throw new Error(\"Invalid locale '\".concat(locale, \"'\"));\n}","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isPostalCodeValidator from 'validator/lib/isPostalCode';\nexport var IS_POSTAL_CODE = 'isPostalCode';\n/**\n * Check if the string is a postal code,\n * (locale is one of [ 'AD', 'AT', 'AU', 'BE', 'BG', 'BR', 'CA', 'CH', 'CZ', 'DE', 'DK', 'DZ', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'ID', 'IE' 'IL', 'IN', 'IR', 'IS', 'IT', 'JP', 'KE', 'LI', 'LT', 'LU', 'LV', 'MT', 'MX', 'NL', 'NO', 'NZ', 'PL', 'PR', 'PT', 'RO', 'RU', 'SA', 'SE', 'SI', 'TN', 'TW', 'UA', 'US', 'ZA', 'ZM' ] OR 'any'. If 'any' is used, function will check if any of the locals match. Locale list is validator.isPostalCodeLocales.).\n * If given value is not a string, then it returns false.\n */\nexport function isPostalCode(value, locale) {\n return typeof value === 'string' && isPostalCodeValidator(value, locale);\n}\n/**\n * Check if the string is a postal code,\n * (locale is one of [ 'AD', 'AT', 'AU', 'BE', 'BG', 'BR', 'CA', 'CH', 'CZ', 'DE', 'DK', 'DZ', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'ID', 'IE' 'IL', 'IN', 'IR', 'IS', 'IT', 'JP', 'KE', 'LI', 'LT', 'LU', 'LV', 'MT', 'MX', 'NL', 'NO', 'NZ', 'PL', 'PR', 'PT', 'RO', 'RU', 'SA', 'SE', 'SI', 'TN', 'TW', 'UA', 'US', 'ZA', 'ZM' ] OR 'any'. If 'any' is used, function will check if any of the locals match. Locale list is validator.isPostalCodeLocales.).\n * If given value is not a string, then it returns false.\n */\nexport function IsPostalCode(locale, validationOptions) {\n return ValidateBy({\n name: IS_POSTAL_CODE,\n constraints: [locale],\n validator: {\n validate: function (value, args) { return isPostalCode(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a postal code'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsPostalCode.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isRFC3339;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* Based on https://tools.ietf.org/html/rfc3339#section-5.6 */\nvar dateFullYear = /[0-9]{4}/;\nvar dateMonth = /(0[1-9]|1[0-2])/;\nvar dateMDay = /([12]\\d|0[1-9]|3[01])/;\nvar timeHour = /([01][0-9]|2[0-3])/;\nvar timeMinute = /[0-5][0-9]/;\nvar timeSecond = /([0-5][0-9]|60)/;\nvar timeSecFrac = /(\\.[0-9]+)?/;\nvar timeNumOffset = new RegExp(\"[-+]\".concat(timeHour.source, \":\").concat(timeMinute.source));\nvar timeOffset = new RegExp(\"([zZ]|\".concat(timeNumOffset.source, \")\"));\nvar partialTime = new RegExp(\"\".concat(timeHour.source, \":\").concat(timeMinute.source, \":\").concat(timeSecond.source).concat(timeSecFrac.source));\nvar fullDate = new RegExp(\"\".concat(dateFullYear.source, \"-\").concat(dateMonth.source, \"-\").concat(dateMDay.source));\nvar fullTime = new RegExp(\"\".concat(partialTime.source).concat(timeOffset.source));\nvar rfc3339 = new RegExp(\"^\".concat(fullDate.source, \"[ tT]\").concat(fullTime.source, \"$\"));\n\nfunction isRFC3339(str) {\n (0, _assertString.default)(str);\n return rfc3339.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isRFC3339Validator from 'validator/lib/isRFC3339';\nexport var IS_RFC_3339 = 'isRFC3339';\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) {\n return typeof value === 'string' && isRFC3339Validator(value);\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) {\n return ValidateBy({\n name: IS_RFC_3339,\n validator: {\n validate: function (value, args) { return isRFC3339(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be RFC 3339 date'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsRFC3339.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isRgbColor;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar rgbColor = /^rgb\\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){2}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\)$/;\nvar rgbaColor = /^rgba\\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){3}(0?\\.\\d|1(\\.0)?|0(\\.0)?)\\)$/;\nvar rgbColorPercent = /^rgb\\((([0-9]%|[1-9][0-9]%|100%),){2}([0-9]%|[1-9][0-9]%|100%)\\)/;\nvar rgbaColorPercent = /^rgba\\((([0-9]%|[1-9][0-9]%|100%),){3}(0?\\.\\d|1(\\.0)?|0(\\.0)?)\\)/;\n\nfunction isRgbColor(str) {\n var includePercentValues = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n (0, _assertString.default)(str);\n\n if (!includePercentValues) {\n return rgbColor.test(str) || rgbaColor.test(str);\n }\n\n return rgbColor.test(str) || rgbaColor.test(str) || rgbColorPercent.test(str) || rgbaColorPercent.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isRgbColorValidator from 'validator/lib/isRgbColor';\nexport var IS_RGB_COLOR = 'isRgbColor';\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, includePercentValues) {\n return typeof value === 'string' && isRgbColorValidator(value, includePercentValues);\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, validationOptions) {\n return ValidateBy({\n name: IS_RGB_COLOR,\n constraints: [includePercentValues],\n validator: {\n validate: function (value, args) { return isRgbColor(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be RGB color'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsRgbColor.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = multilineRegexp;\n\n/**\n * Build RegExp object from an array\n * of multiple/multi-line regexp parts\n *\n * @param {string[]} parts\n * @param {string} flags\n * @return {object} - RegExp object\n */\nfunction multilineRegexp(parts, flags) {\n var regexpAsStringLiteral = parts.join('');\n return new RegExp(regexpAsStringLiteral, flags);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isSemVer;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _multilineRegex = _interopRequireDefault(require(\"./util/multilineRegex\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Regular Expression to match\n * semantic versioning (SemVer)\n * built from multi-line, multi-parts regexp\n * Reference: https://semver.org/\n */\nvar semanticVersioningRegex = (0, _multilineRegex.default)(['^(0|[1-9]\\\\d*)\\\\.(0|[1-9]\\\\d*)\\\\.(0|[1-9]\\\\d*)', '(?:-((?:0|[1-9]\\\\d*|\\\\d*[a-z-][0-9a-z-]*)(?:\\\\.(?:0|[1-9]\\\\d*|\\\\d*[a-z-][0-9a-z-]*))*))', '?(?:\\\\+([0-9a-z-]+(?:\\\\.[0-9a-z-]+)*))?$'], 'i');\n\nfunction isSemVer(str) {\n (0, _assertString.default)(str);\n return semanticVersioningRegex.test(str);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isSemVerValidator from 'validator/lib/isSemVer';\nexport var IS_SEM_VER = 'isSemVer';\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) {\n return typeof value === 'string' && isSemVerValidator(value);\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) {\n return ValidateBy({\n name: IS_SEM_VER,\n validator: {\n validate: function (value, args) { return isSemVer(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a Semantic Versioning Specification'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsSemVer.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_BOOLEAN = 'isBoolean';\n/**\n * Checks if a given value is a boolean.\n */\nexport function isBoolean(value) {\n return value instanceof Boolean || typeof value === 'boolean';\n}\n/**\n * Checks if a value is a boolean.\n */\nexport function IsBoolean(validationOptions) {\n return ValidateBy({\n name: IS_BOOLEAN,\n validator: {\n validate: function (value, args) { return isBoolean(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a boolean value'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsBoolean.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_DATE = 'isDate';\n/**\n * Checks if a given value is a date.\n */\nexport function isDate(value) {\n return value instanceof Date && !isNaN(value.getTime());\n}\n/**\n * Checks if a value is a date.\n */\nexport function IsDate(validationOptions) {\n return ValidateBy({\n name: IS_DATE,\n validator: {\n validate: function (value, args) { return isDate(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a Date instance'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsDate.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_NUMBER = 'isNumber';\n/**\n * Checks if a given value is a number.\n */\nexport function isNumber(value, options) {\n if (options === void 0) { options = {}; }\n if (typeof value !== 'number') {\n return false;\n }\n if (value === Infinity || value === -Infinity) {\n return options.allowInfinity;\n }\n if (Number.isNaN(value)) {\n return options.allowNaN;\n }\n if (options.maxDecimalPlaces !== undefined) {\n var decimalPlaces = 0;\n if (value % 1 !== 0) {\n decimalPlaces = value.toString().split('.')[1].length;\n }\n if (decimalPlaces > options.maxDecimalPlaces) {\n return false;\n }\n }\n return Number.isFinite(value);\n}\n/**\n * Checks if a value is a number.\n */\nexport function IsNumber(options, validationOptions) {\n if (options === void 0) { options = {}; }\n return ValidateBy({\n name: IS_NUMBER,\n constraints: [options],\n validator: {\n validate: function (value, args) { return isNumber(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a number conforming to the specified constraints'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsNumber.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_ENUM = 'isEnum';\n/**\n * Checks if a given value is an enum\n */\nexport function isEnum(value, entity) {\n var enumValues = Object.keys(entity).map(function (k) { return entity[k]; });\n return enumValues.indexOf(value) >= 0;\n}\n/**\n * Checks if a given value is an enum\n */\nexport function IsEnum(entity, validationOptions) {\n return ValidateBy({\n name: IS_ENUM,\n constraints: [entity],\n validator: {\n validate: function (value, args) { return isEnum(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid enum value'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsEnum.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_INT = 'isInt';\n/**\n * Checks if value is an integer.\n */\nexport function isInt(val) {\n return typeof val === 'number' && Number.isInteger(val);\n}\n/**\n * Checks if value is an integer.\n */\nexport function IsInt(validationOptions) {\n return ValidateBy({\n name: IS_INT,\n validator: {\n validate: function (value, args) { return isInt(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an integer number'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsInt.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_STRING = 'isString';\n/**\n * Checks if a given value is a real string.\n */\nexport function isString(value) {\n return value instanceof String || typeof value === 'string';\n}\n/**\n * Checks if a given value is a real string.\n */\nexport function IsString(validationOptions) {\n return ValidateBy({\n name: IS_STRING,\n validator: {\n validate: function (value, args) { return isString(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a string'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsString.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_ARRAY = 'isArray';\n/**\n * Checks if a given value is an array\n */\nexport function isArray(value) {\n return Array.isArray(value);\n}\n/**\n * Checks if a given value is an array\n */\nexport function IsArray(validationOptions) {\n return ValidateBy({\n name: IS_ARRAY,\n validator: {\n validate: function (value, args) { return isArray(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an array'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsArray.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_OBJECT = 'isObject';\n/**\n * Checks if the value is valid Object.\n * Returns false if the value is not an object.\n */\nexport function isObject(value) {\n return value != null && (typeof value === 'object' || typeof value === 'function') && !Array.isArray(value);\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) {\n return ValidateBy({\n name: IS_OBJECT,\n validator: {\n validate: function (value, args) { return isObject(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an object'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsObject.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var ARRAY_CONTAINS = 'arrayContains';\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, values) {\n if (!Array.isArray(array))\n return false;\n return values.every(function (value) { return array.indexOf(value) !== -1; });\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, validationOptions) {\n return ValidateBy({\n name: ARRAY_CONTAINS,\n constraints: [values],\n validator: {\n validate: function (value, args) { return arrayContains(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain $constraint1 values'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=ArrayContains.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var ARRAY_NOT_CONTAINS = 'arrayNotContains';\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, values) {\n if (!Array.isArray(array))\n return false;\n return values.every(function (value) { return array.indexOf(value) === -1; });\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, validationOptions) {\n return ValidateBy({\n name: ARRAY_NOT_CONTAINS,\n constraints: [values],\n validator: {\n validate: function (value, args) { return arrayNotContains(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not contain $constraint1 values'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=ArrayNotContains.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var ARRAY_NOT_EMPTY = 'arrayNotEmpty';\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) {\n return Array.isArray(array) && array.length > 0;\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) {\n return ValidateBy({\n name: ARRAY_NOT_EMPTY,\n validator: {\n validate: function (value, args) { return arrayNotEmpty(value); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not be empty'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=ArrayNotEmpty.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var ARRAY_MIN_SIZE = 'arrayMinSize';\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, min) {\n return Array.isArray(array) && array.length >= min;\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, validationOptions) {\n return ValidateBy({\n name: ARRAY_MIN_SIZE,\n constraints: [min],\n validator: {\n validate: function (value, args) { return arrayMinSize(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain at least $constraint1 elements'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=ArrayMinSize.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var ARRAY_MAX_SIZE = 'arrayMaxSize';\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, max) {\n return Array.isArray(array) && array.length <= max;\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, validationOptions) {\n return ValidateBy({\n name: ARRAY_MAX_SIZE,\n constraints: [max],\n validator: {\n validate: function (value, args) { return arrayMaxSize(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain not more than $constraint1 elements'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=ArrayMaxSize.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var ARRAY_UNIQUE = 'arrayUnique';\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, identifier) {\n if (!Array.isArray(array))\n return false;\n if (identifier) {\n array = array.map(function (o) { return (o != null ? identifier(o) : o); });\n }\n var uniqueItems = array.filter(function (a, b, c) { return c.indexOf(a) === b; });\n return array.length === uniqueItems.length;\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(identifierOrOptions, validationOptions) {\n var identifier = typeof identifierOrOptions === 'function' ? identifierOrOptions : undefined;\n var options = typeof identifierOrOptions !== 'function' ? identifierOrOptions : validationOptions;\n return ValidateBy({\n name: ARRAY_UNIQUE,\n validator: {\n validate: function (value, args) { return arrayUnique(value, identifier); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + \"All $property's elements must be unique\"; }, options),\n },\n }, options);\n}\n//# sourceMappingURL=ArrayUnique.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport { isObject } from '../typechecker/IsObject';\nexport var IS_NOT_EMPTY_OBJECT = 'isNotEmptyObject';\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, options) {\n if (!isObject(value)) {\n return false;\n }\n if ((options === null || options === void 0 ? void 0 : options.nullable) === true) {\n return !Object.values(value).every(function (propertyValue) { return propertyValue === null || propertyValue === undefined; });\n }\n for (var key in value) {\n if (value.hasOwnProperty(key)) {\n return true;\n }\n }\n return false;\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(options, validationOptions) {\n return ValidateBy({\n name: IS_NOT_EMPTY_OBJECT,\n constraints: [options],\n validator: {\n validate: function (value, args) { return isNotEmptyObject(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a non-empty object'; }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsNotEmptyObject.js.map","import { buildMessage, ValidateBy } from '../common/ValidateBy';\nexport var IS_INSTANCE = 'isInstance';\n/**\n * Checks if the value is an instance of the specified object.\n */\nexport function isInstance(object, targetTypeConstructor) {\n return (targetTypeConstructor && typeof targetTypeConstructor === 'function' && object instanceof targetTypeConstructor);\n}\n/**\n * Checks if the value is an instance of the specified object.\n */\nexport function IsInstance(targetType, validationOptions) {\n return ValidateBy({\n name: IS_INSTANCE,\n constraints: [targetType],\n validator: {\n validate: function (value, args) { return isInstance(value, args.constraints[0]); },\n defaultMessage: buildMessage(function (eachPrefix, args) {\n if (args.constraints[0]) {\n return eachPrefix + \"$property must be an instance of \".concat(args.constraints[0].name);\n }\n else {\n return eachPrefix + \"\".concat(IS_INSTANCE, \" decorator expects and object as value, but got falsy value.\");\n }\n }, validationOptions),\n },\n }, validationOptions);\n}\n//# sourceMappingURL=IsInstance.js.map","import { ValidationTypes } from '../../validation/ValidationTypes';\nimport { ValidationMetadata } from '../../metadata/ValidationMetadata';\nimport { getMetadataStorage } from '../../metadata/MetadataStorage';\n/**\n * If object has both allowed and not allowed properties a validation error will be thrown.\n */\nexport function Allow(validationOptions) {\n return function (object, propertyName) {\n var args = {\n type: ValidationTypes.WHITELIST,\n target: object.constructor,\n propertyName: propertyName,\n validationOptions: validationOptions,\n };\n getMetadataStorage().addValidationMetadata(new ValidationMetadata(args));\n };\n}\n//# sourceMappingURL=Allow.js.map","import { ValidationTypes } from '../../validation/ValidationTypes';\nimport { ValidationMetadata } from '../../metadata/ValidationMetadata';\nimport { getMetadataStorage } from '../../metadata/MetadataStorage';\n/**\n * Checks if value is missing and if so, ignores all validators.\n */\nexport function IsOptional(validationOptions) {\n return function (object, propertyName) {\n var args = {\n type: ValidationTypes.CONDITIONAL_VALIDATION,\n target: object.constructor,\n propertyName: propertyName,\n constraints: [\n function (object, value) {\n return object[propertyName] !== null && object[propertyName] !== undefined;\n },\n ],\n validationOptions: validationOptions,\n };\n getMetadataStorage().addValidationMetadata(new ValidationMetadata(args));\n };\n}\n//# sourceMappingURL=IsOptional.js.map","import { ValidationMetadata } from '../../metadata/ValidationMetadata';\nimport { getMetadataStorage } from '../../metadata/MetadataStorage';\nimport { ValidationTypes } from '../../validation/ValidationTypes';\nimport { ConstraintMetadata } from '../../metadata/ConstraintMetadata';\n/**\n * Registers custom validator class.\n */\nexport function ValidatorConstraint(options) {\n return function (target) {\n var isAsync = options && options.async;\n var name = options && options.name ? options.name : '';\n if (!name) {\n name = target.name;\n if (!name)\n // generate name if it was not given\n name = name.replace(/\\.?([A-Z]+)/g, function (x, y) { return '_' + y.toLowerCase(); }).replace(/^_/, '');\n }\n var metadata = new ConstraintMetadata(target, name, isAsync);\n getMetadataStorage().addConstraintMetadata(metadata);\n };\n}\nexport function Validate(constraintClass, constraintsOrValidationOptions, maybeValidationOptions) {\n return function (object, propertyName) {\n var args = {\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//# sourceMappingURL=Validate.js.map","import { ValidationTypes } from '../../validation/ValidationTypes';\nimport { ValidationMetadata } from '../../metadata/ValidationMetadata';\nimport { getMetadataStorage } from '../../metadata/MetadataStorage';\n/**\n * Ignores the other validators on a property when the provided condition function returns false.\n */\nexport function ValidateIf(condition, validationOptions) {\n return function (object, propertyName) {\n var args = {\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//# sourceMappingURL=ValidateIf.js.map","import { ValidationTypes } from '../../validation/ValidationTypes';\nimport { ValidationMetadata } from '../../metadata/ValidationMetadata';\nimport { getMetadataStorage } from '../../metadata/MetadataStorage';\n/**\n * Resolve promise before validation\n */\nexport function ValidatePromise(validationOptions) {\n return function (object, propertyName) {\n var args = {\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//# sourceMappingURL=ValidatePromise.js.map","import { getMetadataStorage } from './metadata/MetadataStorage';\nimport { Validator } from './validation/Validator';\nimport { getFromContainer } from './container';\n// -------------------------------------------------------------------------\n// Export everything api users needs\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';\n/**\n * Validates given object by object's decorators or given validation schema.\n */\nexport function validate(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions) {\n if (typeof schemaNameOrObject === 'string') {\n return getFromContainer(Validator).validate(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions);\n }\n else {\n return getFromContainer(Validator).validate(schemaNameOrObject, objectOrValidationOptions);\n }\n}\n/**\n * Validates given object by object's decorators or given validation schema and reject on error.\n */\nexport function validateOrReject(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions) {\n if (typeof schemaNameOrObject === 'string') {\n return getFromContainer(Validator).validateOrReject(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions);\n }\n else {\n return getFromContainer(Validator).validateOrReject(schemaNameOrObject, objectOrValidationOptions);\n }\n}\n/**\n * Validates given object by object's decorators or given validation schema.\n * Note that this method completely ignores async validations.\n * If you want to properly perform validation you need to call validate method instead.\n */\nexport function validateSync(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions) {\n if (typeof schemaNameOrObject === 'string') {\n return getFromContainer(Validator).validateSync(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions);\n }\n else {\n return getFromContainer(Validator).validateSync(schemaNameOrObject, objectOrValidationOptions);\n }\n}\n/**\n * Registers a new validation schema.\n */\nexport function registerSchema(schema) {\n getMetadataStorage().addValidationSchema(schema);\n}\n//# sourceMappingURL=index.js.map"],"names":["ValidationMetadata","args","this","groups","each","context","undefined","type","target","propertyName","constraints","constraintCls","validationTypeOptions","validationOptions","message","always","ValidationSchemaToMetadataTransformer","prototype","transform","schema","metadatas","Object","keys","properties","forEach","property","validation","name","options","push","getGlobal","globalThis","global","window","self","isPromise","p","then","MetadataStorage","validationMetadatas","constraintMetadatas","defineProperty","get","length","enumerable","configurable","addValidationSchema","_this","validationMetadata","addValidationMetadata","metadata","addConstraintMetadata","groupByPropertyName","grouped","getTargetValidationMetadatas","targetConstructor","targetSchema","strictGroups","includeMetadataBecauseOfAlwaysOption","excludeMetadataBecauseOfStrictGroupsOption","originalMetadatas","filter","find","group","indexOf","inheritedMetadatas","Function","uniqueInheritedMetadatas","inheritedMetadata","originalMetadata","concat","getTargetValidatorConstraints","getMetadataStorage","classValidatorMetadataStorage","ValidationError","toString","shouldDecorate","hasParent","parentPath","boldStart","boldEnd","propConstraintFailed","join","formattedProperty_1","Number","isInteger","children","map","childError","constructor","ValidationTypes","isValid","key","CUSTOM_VALIDATION","NESTED_VALIDATION","PROMISE_VALIDATION","CONDITIONAL_VALIDATION","WHITELIST","IS_DEFINED","userContainer","userContainerOptions","ValidationUtils","replaceMessageSpecialTokens","validationArguments","messageString","Array","isArray","constraint","index","replace","RegExp","constraintToString","value","targetName","ValidationExecutor","validator","validatorOptions","awaitingPromises","ignoreAsyncValidations","metadataStorage","execute","object","validationErrors","_a","hasValidationMetaData","enableDebugMessages","console","warn","targetMetadatas","groupedMetadatas","forbidUnknownValues","validationError","unknownValue","whitelist","definedMetadatas","Promise","resolvedValue","performValidations","notAllowedProperties","forbidNonWhitelisted","generateValidationError","stripEmptyErrors","errors","error","customValidationMetadatas","nestedValidationMetadatas","conditionalValidationMetadatas","conditionalValidations","customValidations","mapContexts","skipUndefinedProperties","skipNullProperties","skipMissingProperties","nestedValidations","reduce","resultA","resultB","customConstraintMetadata","async","stopAtFirstError","Set","Map","val","validatedSubValues","from","values","subValue","instance","validate","some","validatedSubValue","asyncValidatedSubValues","resolve","asyncValidationIsFinishedPromise","all","flatValidatedValues","every","createValidationError","contexts","assign","_b","validatedValue","promise","customConstraint","getConstraintType","customValidatorMetadata","dismissDefaultMessages","defaultMessage","__awaiter","thisArg","_arguments","P","generator","reject","fulfilled","step","next","e","rejected","result","done","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","TypeError","call","pop","Validator","objectOrSchemaName","objectOrValidationOptions","maybeValidatorOptions","coreValidate","validateOrReject","validateSync","executor","defaultContainer","class_1","instances","someClass","getFromContainer","fallback","fallbackOnErrors","ConstraintMetadata","registerDecorator","validator_1","CustomConstraint","validationMetadataArgs","buildMessage","impl","eachPrefix","ValidateBy","isDefined","__assign","s","i","arguments","hasOwnProperty","_typeof","obj","exports","input","String","invalidType","module","default","defaults","str","_assertString","_merge","defaultLatLongOptions","includes","pair","split","startsWith","endsWith","checkDMS","latDMS","test","longDMS","lat","long","_interopRequireDefault","require$$0","require$$1","__esModule","IS_LATLONG","isLatLong","isLatLongValidator","IS_LATITUDE","isLatitude","IS_LONGITUDE","isLongitude","EQUALS","equals","comparison","NOT_EQUALS","notEquals","IS_EMPTY","isEmpty","IS_NOT_EMPTY","isNotEmpty","IS_IN","isIn","possibleValues","possibleValue","IS_NOT_IN","isNotIn","alpha_1","alpha","ar","he","fa","alphanumeric","decimal","englishLocales","locale","arabicLocales","_locale","_i","farsiLocales","_locale2","_i2","dotDecimal","commaDecimal","_i3","_i4","isFloat_1","float","_alpha","parseFloat","min","max","lt","gt","locales","_isFloat","NaN","num","_toFloat","parseInt","IS_DIVISIBLE_BY","isDivisibleBy","isDivisibleByValidator","IS_POSITIVE","isPositive","IS_NEGATIVE","isNegative","MIN_DATE","minDate","date","Date","getTime","MAX_DATE","maxDate","isNaN","elem","defaulContainsOptions","ignoreCase","toLowerCase","_toString","minOccurrences","require$$2","CONTAINS","contains","seed","containsValidator","NOT_CONTAINS","notContains","isAlpha_1","_str","ignore","Error","IS_ALPHA","isAlpha","isAlphaValidator","isAlphanumeric_1","IS_ALPHANUMERIC","isAlphanumeric","isAlphanumericValidator","_default","arr","arrVal","default_decimal_options","_includes","blacklist","decimal_digits","force_decimal","decimalRegExp","require$$3","IS_DECIMAL","isDecimal","isDecimalValidator","ascii","IS_ASCII","isAscii","isAsciiValidator","defaultBase64Options","len","urlSafe","urlSafeBase64","notBase64","firstPaddingChar","IS_BASE64","isBase64","isBase64Validator","encodeURI","IS_BYTE_LENGTH","isByteLength","isByteLengthValidator","sanitized","creditCard","digit","tmpNum","shouldDouble","sum","substring","IS_CREDIT_CARD","isCreditCard","isCreditCardValidator","digits_after_decimal","symbol","m","require_symbol","negative","whole_dollar_amount_with_sep","thousands_separator","whole_dollar_amount","decimal_amount","decimal_separator","require_decimal","pattern","allow_decimal","allow_negatives","parens_for_negatives","negative_sign_after_digits","negative_sign_before_digits","allow_negative_sign_placeholder","allow_space_after_symbol","allow_space_after_digits","symbol_after_digits","currencyRegex","default_currency_options","IS_CURRENCY","isCurrency","isCurrencyValidator","default_fqdn_options","allow_trailing_dot","allow_wildcard","parts","tld","require_tld","allow_numeric_tld","part","allow_underscores","isIP","version","IPv4AddressRegExp","sort","a","b","IPv6AddressRegExp","IPv4SegmentFormat","IPv4AddressFormat","IPv6SegmentFormat","default_email_options","require_display_name","allow_display_name","display_email","match","splitNameAddress","display_name","substr","display_name_without_quotes","trim","validateDisplayName","ignore_max_length","domain","lower_domain","host_blacklist","user","domain_specific_validation","username","_isByteLength","_user_parts","gmailUserPart","_isFQDN","allow_ip_domain","_isIP","noBracketdomain","slice","allow_utf8_local_part","quotedEmailUserUtf8","quotedEmailUser","emailUserUtf8Part","emailUserPart","user_parts","blacklisted_chars","search","require$$4","IS_EMAIL","isEmail","isEmailValidator","IS_FQDN","isFQDN","isFqdnValidator","isFullWidth_1","fullWidth","IS_FULL_WIDTH","isFullWidth","isFullWidthValidator","isHalfWidth_1","halfWidth","IS_HALF_WIDTH","isHalfWidth","isHalfWidthValidator","_isFullWidth","_isHalfWidth","IS_VARIABLE_WIDTH","isVariableWidth","isVariableWidthValidator","hexcolor","IS_HEX_COLOR","isHexColor","isHexColorValidator","hexadecimal","IS_HEXADECIMAL","isHexadecimal","isHexadecimalValidator","isValidationOptions","no_colons","no_separators","macAddressNoSeparators","macAddress","macAddressWithDots","IS_MAC_ADDRESS","isMACAddress","isMacAddressValidator","IS_IP","versionStr","isIPValidator","regex","allow_leading_zeroes","int","intLeadingZeroes","minCheckPassed","maxCheckPassed","ltCheckPassed","gtCheckPassed","_isInt","IS_PORT","isPort","isPortValidator","isISBN","checksum","isbn10Maybe","charAt","isbn13Maybe","factor","IS_ISBN","isIsbnValidator","isin","double","charCodeAt","lo","hi","Math","trunc","_arr","_digit","check","IS_ISIN","isISIN","isIsinValidator","strictSeparator","iso8601StrictSeparator","iso8601","strict","isValidDate","ordinalMatch","oYear","oDay","year","month","day","monthString","dayString","d","getUTCFullYear","getUTCMonth","getUTCDate","IS_ISO8601","isISO8601","isIso8601Validator","default_json_options","primitives","allow_primitives","JSON","parse","IS_JSON","isJSON","isJSONValidator","dotSplit","acc","currElem","_isBase","IS_JWT","isJWT","isJwtValidator","IS_LOWERCASE","isLowercase","isLowercaseValidator","isMobilePhone_1","strictMode","phones","IS_MOBILE_PHONE","isMobilePhone","isMobilePhoneValidator","isISO31661Alpha2_1","validISO31661Alpha2CountriesCodes","has","toUpperCase","CountryCodes","IS_ISO31661_ALPHA_2","isISO31661Alpha2","isISO31661Alpha2Validator","validISO31661Alpha3CountriesCodes","IS_ISO31661_ALPHA_3","isISO31661Alpha3","isISO31661Alpha3Validator","_isHexadecimal","IS_MONGO_ID","isMongoId","isMongoIdValidator","multibyte","IS_MULTIBYTE","isMultibyte","isMultibyteValidator","surrogatePair","IS_SURROGATE_PAIR","isSurrogatePair","isSurrogatePairValidator","url","default_url_options","validate_length","allow_fragments","allow_query_components","protocol","auth","host","hostname","port","port_str","ipv6","shift","require_valid_protocol","protocols","require_protocol","allow_protocol_relative_urls","require_host","disallow_auth","_auth$split2","_arrayWithHoles","_n","_d","_e","_s","err","_iterableToArrayLimit","o","minLen","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","_slicedToArray","password","ipv6_match","wrapped_ipv6","require_port","host_whitelist","checkHost","arr2","isRegExp","matches","IS_URL","isURL","isUrlValidator","uuid","IS_UUID","isUUID","isUuidValidator","IS_FIREBASE_PUSH_ID","isFirebasePushId","IS_UPPERCASE","isUppercase","isUppercaseValidator","surrogatePairs","IS_LENGTH","isLengthValidator","MAX_LENGTH","maxLength","MIN_LENGTH","minLength","modifiers","MATCHES","matchesValidator","country_calling_codes","countries","AC","AD","AE","AF","AG","AI","AL","AM","AO","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GT","GU","GW","GY","HK","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TA","TC","TD","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","YE","YT","ZA","ZM","ZW","nonGeographic","withMetadata","func","ParseError","code","Constructor","_classCallCheck","stack","create","VALID_DIGITS","VALID_PUNCTUATION","pa","pb","na","nb","_defineProperties","props","descriptor","writable","_createClass","protoProps","staticProps","DEFAULT_EXT_PREFIX","CALLING_CODE_REG_EXP","Metadata","is_object","type_of","validateMetadata","setVersion","countryCode","v1","v2","v3","nonGeographical","country","getCountryMetadata","callingCode","getCountryCodesForCallingCode","countryCodes","countryCallingCodes","selectNumberingPlan","hasCountry","numberingPlan","NumberingPlan","hasCallingCode","getNumberingPlanMetadata","getCountryCodeForCallingCode","IDDPrefix","defaultIDDPrefix","nationalNumberPattern","possibleLengths","formats","nationalPrefixForParsing","nationalPrefixTransformRule","leadingDigits","hasTypes","_type","ext","country_phone_code_to_countries","globalMetadataObject","_getFormats","getDefaultCountryMetadataForRegion","Format","_getNationalPrefixFormattingRule","_nationalPrefixForParsing","nationalPrefix","_getNationalPrefixIsOptionalWhenFormatting","types","_type2","getType","Type","format","_format","nationalPrefixFormattingRule","nationalPrefixIsOptionalWhenFormattingInNationalFormat","usesNationalPrefix","FIRST_GROUP_ONLY_PREFIX_PATTERN","getCountryCallingCode","countryCallingCode","v4","compare","getExtensionDigitsPattern","createExtensionPattern","purpose","optionalExtnSuffix","possibleSeparatorsBetweenNumberAndExtLabel","possibleSeparatorsNumberExtLabelNoComma","VALID_PHONE_NUMBER","VALID_PHONE_NUMBER_START_REG_EXP","VALID_PHONE_NUMBER_WITH_EXTENSION","VALID_PHONE_NUMBER_PATTERN","isViablePhoneNumber","number","EXTN_PATTERN","DIGITS","parseIncompletePhoneNumber","string","_iterator","_isArray","_ref","parsePhoneNumberCharacter","character","prevParsedCharacters","parseDigit","checkNumberLength","nationalNumber","checkNumberLengthForType","type_info","possible_lengths","mobile_type","merged","element","mergeArrays","actual_length","minimum_length","isPossibleNumber","matchesEntirely","text","regular_expression","NON_FIXED_LINE_PHONE_TYPES","getNumberType","phone","isNumberTypeEqualTo","_NON_FIXED_LINE_PHONE","FIRST_GROUP_PATTERN","formatNationalNumberUsingFormat","useInternationalFormat","withNationalPrefix","carrierCode","formattedNumber","internationalFormat","applyInternationalSeparatorStyle","SINGLE_IDD_PREFIX_REG_EXP","_defineProperty","DEFAULT_OPTIONS","formatExtension","extension","formatNumber","source","ownKeys","getOwnPropertySymbols","sym","getOwnPropertyDescriptor","_objectSpread","addExtension","formatNationalNumber","_ref2","formatRFC3966","fromCountry","iddPrefix","countryMetadata","getIddPrefix","formatIDD","formatAs","availableFormats","nationalNnumber","leadingDigitsPatterns","lastLeadingDigitsPattern","chooseFormatForNumber","PhoneNumber","_metadata","isCountryCode","isNonGeographicCallingCode","isValidNumber","phoneNumber","CAPTURING_DIGIT_PATTERN","extractNationalNumber","_extractNationalNumbe","prefixPattern","prefixMatch","exec","capturedGroupsCount","hasCapturedGroups","prefixBeforeNationalNumber","possiblePositionOfTheFirstCapturedGroup","extractNationalNumberFromPossiblyIncompleteNumber","nationalSignificantNumber","shouldExtractNationalPrefix","extractCountryCallingCode","numberWithoutIDD","IDDPrefixPattern","matchedGroups","stripIddPrefix","_extractCountryCallin","possibleShorterNumber","possibleShorterNationalNumber","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","shorterNumber","_countryCallingCode","getCountryByCallingCode","nationalPhoneNumber","possibleCountries","selectCountryFromList","PHONE_NUMBER_START_PATTERN","AFTER_PHONE_NUMBER_END_PATTERN","defaultCountry","_parseInput","extract","_part$split2","parseRFC3966","throwOnError","startsAt","extractFormattedPhoneNumber","isViablePhoneNumberStart","withExtensionStripped","start","numberWithoutExtension","extractExtension","parseInput","formattedPhoneNumber","_parsePhoneNumber","defaultCallingCode","exactCountry","parsePhoneNumber","hasSelectedNumberingPlan","valid","extended","possible","parseNumber","normalizeArguments","_Array$prototype$slic2","arg_1","arg_2","arg_3","arg_4","isObject","parsePhoneNumberFromString","isSupportedCountry","_normalizeArguments","parsePhoneNumberFromString_","IS_PHONE_NUMBER","isPhoneNumber","region","phoneNum","_parsePhoneNumberFromString","IS_MILITARY_TIME","isMilitaryTime","algorithm","lengths","md5","md4","sha1","sha256","sha384","sha512","ripemd128","ripemd160","tiger128","tiger160","tiger192","crc32","crc32b","IS_HASH","isHash","isHashValidator","testIssn","issn","require_hyphen","case_sensitive","digits","IS_ISSN","isISSN","isISSNValidator","IS_DATE_STRING","isDateString","defaultOptions","loose","looseBooleans","strictBooleans","IS_BOOLEAN_STRING","isBooleanString","isBooleanValidator","no_symbols","numericNoSymbols","IS_NUMBER_STRING","isNumberString","isNumericValidator","base32","IS_BASE32","isBase32","isBase32Validator","_isISO31661Alpha","isBICReg","IS_BIC","isBIC","isBICValidator","bech32","base58","IS_BTC_ADDRESS","isBtcAddress","isBtcAddressValidator","data","attributes","schemeAndMediaType","mediaType","validMediaType","validAttribute","validData","IS_DATA_URI","isDataURI","isDataURIValidator","actualCheckDigit","validEanRegex","ean","remainder","char","getPositionWeightThroughLengthAndIndex","partialSum","IS_EAN","isEAN","isEANValidator","eth","IS_ETHEREUM_ADDRESS","isEthereumAddress","isEthereumAddressValidator","strippedStr","hslComma","hslSpace","IS_HSL","isHSL","isHSLValidator","isIBAN_1","isoCountryCode","ibanRegexThroughCountryCode","hasValidIbanFormat","hasValidIbanChecksum","IS_IBAN","isIBAN","isIBANValidator","validators","weightOfDigits","modulo","lastDigit","charsValue","X","Y","Z","c","reverse","lastNumber","k1","k2","incNum","id","idCardNo","provincesAndCities","powers","parityBit","checkAddressCode","addressCode","checkBirthDayCode","birDayCode","yyyy","mm","dd","xdata","getFullYear","getMonth","getDate","checkParityBit","id17","power","getParityBit","check15IdCardNo","check18IdCardNo","ALPHABET_CODES","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","Q","R","S","T","U","V","W","floor","IS_IDENTITY_CARD","isIdentityCard","isIdentityCardValidator","isrc","IS_ISRC","isISRC","isISRCValidator","localeReg","IS_LOCALE","isLocale","isLocaleValidator","magnetURI","IS_MAGNET_URI","isMagnetURI","isMagnetURIValidator","mimeTypeSimple","mimeTypeText","mimeTypeMultipart","IS_MIME_TYPE","isMimeType","isMimeTypeValidator","octal","IS_OCTAL","isOctal","isOctalValidator","normalizedStr","passportRegexByCountryCode","IS_PASSPORT_NUMBER","isPassportNumber","isPassportNumberValidator","isPostalCode_1","patterns","fourDigit","fiveDigit","sixDigit","IS_POSTAL_CODE","isPostalCode","isPostalCodeValidator","rfc3339","timeHour","timeMinute","timeNumOffset","timeOffset","partialTime","fullDate","fullTime","IS_RFC_3339","isRFC3339","isRFC3339Validator","includePercentValues","rgbColor","rgbaColor","rgbColorPercent","rgbaColorPercent","IS_RGB_COLOR","isRgbColor","isRgbColorValidator","flags","regexpAsStringLiteral","semanticVersioningRegex","IS_SEM_VER","isSemVer","isSemVerValidator","IS_BOOLEAN","isBoolean","Boolean","IS_DATE","isDate","IS_NUMBER","isNumber","Infinity","allowInfinity","allowNaN","maxDecimalPlaces","decimalPlaces","isFinite","IS_ENUM","isEnum","entity","k","IS_INT","isInt","IS_STRING","isString","IS_ARRAY","IS_OBJECT","ARRAY_CONTAINS","arrayContains","array","ARRAY_NOT_CONTAINS","arrayNotContains","ARRAY_NOT_EMPTY","arrayNotEmpty","ARRAY_MIN_SIZE","arrayMinSize","ARRAY_MAX_SIZE","arrayMaxSize","ARRAY_UNIQUE","arrayUnique","identifier","uniqueItems","IS_NOT_EMPTY_OBJECT","isNotEmptyObject","nullable","propertyValue","IS_INSTANCE","isInstance","targetTypeConstructor","identifierOrOptions","targetType","optionsOrValidationOptionsArg","validationOptionsArg","isMinLength","isMaxLength","modifiersOrAnnotationOptions","maxValue","minValue","constraintClass","constraintsOrValidationOptions","maybeValidationOptions","condition","opts","isAsync","x","iocContainer","schemaNameOrObject"],"mappings":"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GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,KAAK,KAAK,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,KAAK,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,OAAOC,UAAY,CAACC,GAAK,CAAC,MAAM,KAAK,4BAA4B,CAAC,EAAE,IAAIC,GAAK,CAAC,MAAM,KAAK,iCAAiC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,YAAY,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,2BAA2B,WAAW,CAAC,QAAQC,GAAK,CAAC,MAAM,KAAK,yDAAyD,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,SAAS,CAAC,wBAAwB,WAAW,CAAC,oBAAoB,OAAO,CAAC,wBAAwB,WAAW,CAAC,UAAU,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,KAAKC,GAAK,CAAC,KAAK,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,QAAQ,KAAKC,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAOC,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,oBAAoB,QAAQ,EAAE,OAAOC,GAAK,CAAC,MAAM,KAAK,yDAAyD,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,qBAAqB,QAAQ,CAAC,QAAQ,OAAO,CAAC,wBAAwB,WAAW,CAAC,UAAU,OAAO,CAAC,2BAA2B,WAAW,CAAC,iBAAiB,OAAO,CAAC,mBAAmB,QAAQ,CAAC,WAAW,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,gCAAgC,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,QAAQ,CAAC,mBAAmB,QAAQ,CAAC,WAAW,SAAS,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,SAAS,CAAC,mBAAmB,QAAQ,CAAC,SAAS,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,aAAa,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAAWC,GAAK,CAAC,KAAK,KAAK,uCAAuC,CAAC,GAAG,IAAI,CAAC,CAAC,2BAA2B,WAAW,CAAC,uFAAuF,kNAAkN,kSAAkS,+WAA+W,MAAM,GAAG,CAAC,2BAA2B,WAAW,CAAC,KAAK,MAAM,GAAG,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,2BAA2B,WAAW,CAAC,QAAQ,MAAM,GAAG,CAAC,gCAAgC,cAAc,CAAC,yBAAyB,4FAA4F,wNAAwN,4SAA4S,wXAAwX,MAAM,EAAE,eAAe,CAAC,gCAAgC,cAAc,CAAC,MAAM,MAAM,EAAE,eAAe,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,gCAAgC,cAAc,CAAC,KAAK,MAAM,EAAE,gBAAgB,IAAI,EAAE,0jBAA0jB,OAAOC,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAOC,GAAK,CAAC,KAAK,KAAK,mKAAmK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,iBAAiB,OAAO,CAAC,mBAAmB,QAAQ,CAAC,OAAO,OAAO,CAAC,qBAAqB,QAAQ,CAAC,UAAU,OAAO,CAAC,sBAAsB,QAAQ,CAAC,uDAAuD,OAAO,CAAC,qBAAqB,QAAQ,CAAC,kBAAkB,OAAO,CAAC,6BAA6B,WAAW,CAAC,KAAK,OAAO,CAAC,6BAA6B,WAAW,CAAC,KAAK,QAAQ,KAAKC,GAAK,CAAC,KAAK,sDAAsD,+EAA+E,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,MAAM,OAAO,CAAC,6BAA6B,WAAW,CAAC,MAAM,OAAO,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,wBAAwB,WAAW,CAAC,UAAU,SAAS,CAAC,2BAA2B,WAAW,CAAC,kBAAkB,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC,8aAA8a,CAAC,IAAI,CAAC,yGAAyG,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,2CAA2C,CAAC,IAAI,CAAC,mDAAmD,CAAC,EAAE,EAAE,GAAG,MAAM,QAAQC,GAAK,CAAC,MAAM,KAAK,8BAA8B,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,aAAaC,GAAK,CAAC,MAAM,sDAAsD,4FAA4F,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAMC,GAAK,CAAC,MAAM,KAAK,wCAAwC,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,OAAO,CAAC,mCAAmC,cAAc,CAAC,iBAAiB,qBAAqB,6BAA6B,SAAS,CAAC,mCAAmC,cAAc,CAAC,UAAU,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,qCAAqC,CAAC,EAAE,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,gBAAgB,OAAO,CAAC,2BAA2B,WAAW,CAAC,eAAe,OAAO,CAAC,mCAAmC,cAAc,CAAC,KAAK,QAAQ,KAAKC,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAOC,GAAK,CAAC,MAAM,KAAK,kFAAkF,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,kBAAkB,OAAO,CAAC,qBAAqB,QAAQ,CAAC,qLAAqL,OAAO,CAAC,qBAAqB,QAAQ,CAAC,aAAa,OAAO,CAAC,kBAAkB,QAAQ,CAAC,KAAK,QAAQ,KAAKC,GAAK,CAAC,KAAK,KAAK,sBAAsB,CAAC,EAAE,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,aAAa,OAAO,CAAC,gCAAgC,cAAc,CAAC,eAAe,OAAO,CAAC,mCAAmC,cAAc,CAAC,UAAU,OAAO,CAAC,mCAAmC,cAAc,CAAC,KAAK,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,gBAAgB,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,cAAcC,GAAK,CAAC,MAAM,KAAK,qCAAqC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,6BAA6B,cAAc,CAAC,KAAK,OAAO,CAAC,mBAAmB,QAAQ,CAAC,mBAAmB,OAAO,CAAC,0BAA0B,WAAW,CAAC,KAAK,OAAO,CAAC,6BAA6B,WAAW,CAAC,uCAAuC,OAAO,CAAC,2BAA2B,WAAW,CAAC,aAAa,OAAO,CAAC,2BAA2B,WAAW,CAAC,aAAa,OAAO,CAAC,6BAA6B,WAAW,CAAC,cAAc,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,gBAAgB,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,qBAAqBC,GAAK,CAAC,MAAM,KAAK,wBAAwB,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,aAAaC,GAAK,CAAC,MAAM,KAAK,gBAAgB,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,cAAcC,GAAK,CAAC,MAAM,KAAK,iCAAiC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,gCAAgC,CAAC,0CAA0C,CAAC,iBAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,mBAAmBC,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAOC,GAAK,CAAC,MAAM,KAAK,gBAAgB,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,cAAcC,GAAK,CAAC,MAAM,cAAc,+BAA+B,CAAC,EAAE,GAAG,CAAC,CAAC,gBAAgB,QAAQ,CAAC,eAAe,CAAC,WAAW,KAAK,CAAC,SAAS,CAAC,2BAA2B,WAAW,CAAC,OAAO,IAAI,EAAE,YAAYC,GAAK,CAAC,MAAM,KAAK,uBAAuB,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,SAASC,GAAK,CAAC,KAAK,yCAAyC,2FAA2F,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,oBAAoB,uBAAuB,CAAC,6BAA6B,WAAW,CAAC,iBAAiB,OAAO,CAAC,2BAA2B,WAAW,CAAC,8DAA8D,QAAQ,CAAC,2BAA2B,WAAW,CAAC,sBAAsB,SAAS,IAAI,EAAE,8DAA8D,MAAMC,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAOC,GAAK,CAAC,MAAM,KAAK,yBAAyB,CAAC,EAAE,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,kBAAkB,CAAC,mCAAmC,cAAc,CAAC,cAAcC,GAAK,CAAC,MAAM,KAAK,uDAAuD,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,mBAAmB,QAAQ,CAAC,oBAAoB,CAAC,2BAA2B,WAAW,CAAC,SAAS,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,2BAA2B,WAAW,CAAC,QAAQC,GAAK,CAAC,MAAM,MAAM,mIAAmI,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,QAAQ,CAAC,6BAA6B,WAAW,CAAC,OAAO,QAAQ,CAAC,2BAA2B,WAAW,CAAC,oDAAoD,yFAAyF,SAAS,CAAC,mCAAmC,cAAc,CAAC,2BAA2B,SAAS,CAAC,mCAAmC,cAAc,CAAC,SAAS,SAAS,CAAC,6BAA6B,WAAW,CAAC,QAAQ,SAAS,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,QAAQC,GAAK,CAAC,MAAM,KAAK,0BAA0B,CAAC,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,gCAAgC,cAAc,CAAC,QAAQC,GAAK,CAAC,IAAI,MAAM,wBAAwB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,mLAAmL,CAAC,IAAI,CAAC,wCAAwC,CAAC,kBAAkB,CAAC,gPAAgP,EAAE,EAAE,EAAE,CAAC,oBAAoBC,GAAK,CAAC,KAAK,sDAAsD,qEAAqE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,kBAAkB,MAAM,EAAE,EAAE,CAAC,CAAC,0IAA0I,CAAC,IAAI,CAAC,yGAAyG,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,2CAA2C,CAAC,IAAI,CAAC,mDAAmD,CAAC,EAAE,EAAE,GAAG,MAAM,QAAQC,GAAK,CAAC,MAAM,KAAK,2BAA2B,CAAC,EAAE,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,CAAC,mBAAmB,QAAQ,CAAC,SAAS,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,QAAQ,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,4BAA4B,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,YAAYC,GAAK,CAAC,MAAM,KAAK,4BAA4B,CAAC,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,MAAM,CAAC,2BAA2B,WAAW,CAAC,WAAWC,GAAK,CAAC,KAAK,KAAK,uBAAuB,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,aAAa,OAAO,CAAC,mCAAmC,cAAc,CAAC,aAAa,OAAO,CAAC,2CAA2C,iBAAiB,CAAC,KAAK,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,aAAa,CAAC,IAAI,CAAC,CAAC,gCAAgC,cAAc,CAAC,MAAM,CAAC,mCAAmC,cAAc,CAAC,QAAQC,GAAK,CAAC,MAAM,KAAK,gBAAgB,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,cAAcC,GAAK,CAAC,KAAK,yDAAyD,qCAAqC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,QAAQ,QAAQ,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,wBAAwB,WAAW,CAAC,UAAU,QAAQ,CAAC,wBAAwB,WAAW,CAAC,WAAW,CAAC,2BAA2B,WAAW,CAAC,oDAAoD,QAAQ,CAAC,6BAA6B,WAAW,CAAC,SAAS,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,mCAAmC,cAAc,CAAC,SAASC,GAAK,CAAC,MAAM,KAAK,wBAAwB,CAAC,EAAE,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,OAAO,CAAC,wCAAwC,iBAAiB,CAAC,cAAcC,GAAK,CAAC,KAAK,6BAA6B,sHAAsH,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,uBAAuB,+BAA+B,iCAAiC,OAAO,CAAC,qBAAqB,QAAQ,CAAC,+QAA+Q,4SAA4S,qUAAqU,wUAAwU,OAAO,CAAC,2BAA2B,WAAW,CAAC,cAAc,CAAC,2BAA2B,WAAW,CAAC,2BAA2B,2BAA2B,8DAA8D,MAAM,GAAG,CAAC,2BAA2B,WAAW,CAAC,iMAAiM,MAAM,GAAG,CAAC,qBAAqB,QAAQ,CAAC,MAAM,CAAC,2BAA2B,WAAW,CAAC,MAAM,MAAM,GAAG,CAAC,2BAA2B,WAAW,CAAC,WAAW,MAAM,GAAG,CAAC,2BAA2B,WAAW,CAAC,WAAW,CAAC,mCAAmC,cAAc,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,4BAA4B,EAAE,EAAE,EAAE,EAAE,MAAMC,GAAK,CAAC,KAAK,4BAA4B,mDAAmD,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,gBAAgB,QAAQ,CAAC,qBAAqB,QAAQ,CAAC,mBAAmB,QAAQ,CAAC,KAAK,QAAQ,CAAC,mBAAmB,QAAQ,CAAC,SAAS,CAAC,wBAAwB,WAAW,CAAC,KAAK,MAAM,EAAE,aAAa,IAAI,EAAE,4BAA4BC,GAAK,CAAC,MAAM,KAAK,gDAAgD,CAAC,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,iBAAiB,CAAC,2BAA2B,WAAW,CAAC,UAAU,EAAE,EAAE,uCAAuCC,GAAK,CAAC,KAAK,MAAM,gDAAgD,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,eAAe,SAAS,CAAC,kBAAkB,QAAQ,CAAC,KAAK,SAAS,CAAC,gBAAgB,QAAQ,CAAC,KAAK,OAAO,CAAC,mBAAmB,QAAQ,CAAC,KAAK,QAAQ,KAAKC,GAAK,CAAC,MAAM,IAAI,6BAA6B,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,cAAcC,GAAK,CAAC,MAAM,KAAK,mCAAmC,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,CAAC,wBAAwB,WAAW,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQC,GAAK,CAAC,KAAK,sDAAsD,qEAAqE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,kBAAkB,MAAM,EAAE,EAAE,CAAC,CAAC,4JAA4J,CAAC,IAAI,CAAC,yGAAyG,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,2CAA2C,CAAC,IAAI,CAAC,mDAAmD,CAAC,EAAE,EAAE,GAAG,MAAM,QAAQC,GAAK,CAAC,MAAM,KAAK,2BAA2B,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,cAAcC,GAAK,CAAC,MAAM,KAAK,qCAAqC,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,mBAAmB,CAAC,mCAAmC,cAAc,CAAC,OAAO,CAAC,mCAAmC,cAAc,CAAC,MAAM,CAAC,mCAAmC,cAAc,CAAC,QAAQC,GAAK,CAAC,KAAK,KAAK,gMAAgM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,sBAAsB,QAAQ,CAAC,kBAAkB,OAAO,CAAC,sBAAsB,QAAQ,CAAC,sGAAsG,gHAAgH,OAAO,CAAC,sBAAsB,QAAQ,CAAC,uGAAuG,4bAA4b,OAAO,CAAC,mBAAmB,QAAQ,CAAC,OAAO,OAAO,CAAC,sBAAsB,QAAQ,CAAC,KAAK,OAAO,CAAC,sBAAsB,QAAQ,CAAC,OAAO,OAAO,CAAC,2BAA2B,WAAW,CAAC,eAAe,OAAO,CAAC,qBAAqB,QAAQ,CAAC,SAAS,OAAO,CAAC,sBAAsB,QAAQ,CAAC,KAAK,OAAO,CAAC,mBAAmB,QAAQ,CAAC,MAAM,OAAO,SAAS,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,mBAAmB,QAAQ,CAAC,UAAU,OAAO,CAAC,mBAAmB,QAAQ,CAAC,YAAY,OAAO,CAAC,mBAAmB,QAAQ,CAAC,YAAY,OAAO,CAAC,mBAAmB,QAAQ,CAAC,MAAM,OAAO,CAAC,6BAA6B,WAAW,CAAC,iBAAiB,OAAO,CAAC,2BAA2B,WAAW,CAAC,WAAW,OAAO,CAAC,2BAA2B,WAAW,CAAC,MAAM,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,oBAAoB,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,WAAWC,GAAK,CAAC,KAAK,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,YAAYC,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAOC,GAAK,CAAC,IAAI,MAAM,2BAA2B,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,gBAAgBC,GAAK,CAAC,MAAM,KAAK,+BAA+B,CAAC,EAAE,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,SAAS,OAAO,CAAC,mCAAmC,cAAc,CAAC,KAAK,OAAO,CAAC,mCAAmC,cAAc,CAAC,SAAS,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,kCAAkC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,wBAAwB,WAAW,CAAC,SAAS,QAAQ,EAAE,YAAY,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,6BAA6B,WAAW,CAAC,OAAO,KAAKC,GAAK,CAAC,MAAM,KAAK,6CAA6C,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,mDAAmD,iFAAiF,CAAC,qBAAqB,QAAQ,CAAC,sBAAsB,6BAA6B,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,2BAA2B,WAAW,CAAC,QAAQC,GAAK,CAAC,KAAK,KAAK,yCAAyC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,kBAAkB,QAAQ,CAAC,QAAQ,OAAO,CAAC,qBAAqB,QAAQ,CAAC,gCAAgC,OAAO,CAAC,2BAA2B,WAAW,CAAC,SAAS,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,WAAWC,GAAK,CAAC,MAAM,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,SAAS,QAAQ,KAAKC,GAAK,CAAC,KAAK,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAAW,CAAC,mCAAmC,cAAc,CAAC,YAAYC,GAAK,CAAC,MAAM,KAAK,yBAAyB,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,QAAQ,KAAKC,GAAK,CAAC,MAAM,sDAAsD,2EAA2E,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,kBAAkB,QAAQ,CAAC,mCAAmC,OAAO,CAAC,qBAAqB,QAAQ,CAAC,yBAAyB,OAAO,CAAC,qBAAqB,QAAQ,CAAC,iBAAiB,OAAO,CAAC,sBAAsB,QAAQ,CAAC,KAAK,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAMC,GAAK,CAAC,MAAM,YAAY,qCAAqC,CAAC,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,eAAe,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAMC,GAAK,CAAC,MAAM,KAAK,cAAc,CAAC,IAAIC,GAAK,CAAC,MAAM,KAAK,2BAA2B,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,YAAYC,GAAK,CAAC,MAAM,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC,WAAW,KAAK,CAAC,WAAW,EAAE,EAAE,uBAAuBC,GAAK,CAAC,KAAK,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,KAAK,QAAQ,CAAC,wCAAwC,iBAAiB,CAAC,UAAU,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,oCAAoC,CAAC,EAAE,GAAG,CAAC,CAAC,gCAAgC,cAAc,CAAC,SAAS,OAAO,CAAC,mCAAmC,cAAc,CAAC,WAAW,OAAO,CAAC,mCAAmC,cAAc,CAAC,OAAO,EAAE,EAAE,kEAAkE,MAAMC,GAAK,CAAC,KAAK,KAAK,qCAAqC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,OAAO,QAAQ,SAAS,WAAW,OAAO,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,QAAQ,UAAU,OAAO,CAAC,mBAAmB,QAAQ,CAAC,OAAO,OAAO,CAAC,qBAAqB,QAAQ,CAAC,yBAAyB,qCAAqC,oDAAoD,OAAO,CAAC,qBAAqB,QAAQ,CAAC,0BAA0B,OAAO,CAAC,2BAA2B,WAAW,CAAC,sBAAsB,kCAAkC,OAAO,CAAC,mBAAmB,QAAQ,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,UAAU,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,q9CAAq9C,CAAC,EAAE,KAAK,CAAC,4NAA4N,CAAC,KAAK,CAAC,kCAAkC,CAAC,8DAA8D,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC,wFAAwF,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,MAAMC,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAOC,GAAK,CAAC,MAAM,KAAK,6BAA6B,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,CAAC,mCAAmC,cAAc,CAAC,MAAM,OAAO,CAAC,mCAAmC,cAAc,CAAC,SAAS,CAAC,mCAAmC,cAAc,CAAC,SAAS,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,6BAA6B,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,SAAS,OAAO,CAAC,mCAAmC,cAAc,CAAC,KAAK,QAAQ,KAAKC,GAAK,CAAC,KAAK,KAAK,kDAAkD,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,oBAAoB,SAAS,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,oCAAoC,CAAC,KAAK,CAAC,kCAAkC,CAAC,6DAA6D,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC,wFAAwF,CAAC,KAAK,CAAC,WAAW,CAAC,OAAOC,GAAK,CAAC,MAAM,KAAK,4BAA4B,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,SAAS,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,2BAA2B,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQC,GAAK,CAAC,MAAM,KAAK,6BAA6B,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,eAAeC,GAAK,CAAC,MAAM,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,YAAYC,GAAK,CAAC,MAAM,KAAK,6BAA6B,CAAC,EAAE,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,CAAC,mCAAmC,cAAc,CAAC,WAAWC,GAAK,CAAC,MAAM,KAAK,iCAAiC,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,SAAS,OAAO,CAAC,mCAAmC,cAAc,CAAC,KAAK,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,8FAA8F,CAAC,0CAA0C,CAAC,iBAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,mBAAmBC,GAAK,CAAC,MAAM,KAAK,oCAAoC,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,mBAAmB,QAAQ,CAAC,WAAWC,GAAK,CAAC,KAAK,KAAK,iDAAiD,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,CAAC,mBAAmB,QAAQ,CAAC,+DAA+D,CAAC,2BAA2B,WAAW,CAAC,WAAW,CAAC,6BAA6B,WAAW,CAAC,QAAQC,GAAK,CAAC,MAAM,KAAK,0BAA0B,CAAC,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,2BAA2B,WAAW,CAAC,QAAQC,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAOC,GAAK,CAAC,MAAM,KAAK,qBAAqB,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,2BAA2B,WAAW,CAAC,WAAWC,GAAK,CAAC,MAAM,MAAM,+CAA+C,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,eAAeC,GAAK,CAAC,MAAM,0BAA0B,gFAAgF,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,MAAM,SAAS,CAAC,mBAAmB,QAAQ,CAAC,mCAAmC,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,mCAAmC,cAAc,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAMC,GAAK,CAAC,MAAM,KAAK,yBAAyB,CAAC,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,cAAcC,GAAK,CAAC,MAAM,KAAK,iEAAiE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,6BAA6B,WAAW,CAAC,SAAS,OAAO,CAAC,6BAA6B,WAAW,CAAC,KAAK,OAAO,CAAC,wBAAwB,WAAW,CAAC,KAAK,OAAO,CAAC,6BAA6B,WAAW,CAAC,QAAQ,OAAO,CAAC,6BAA6B,WAAW,CAAC,KAAK,OAAO,CAAC,6BAA6B,WAAW,CAAC,SAAS,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,gBAAgB,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,cAAcC,GAAK,CAAC,KAAK,KAAK,4BAA4B,CAAC,EAAE,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,KAAK,WAAW,CAAC,2BAA2B,WAAW,CAAC,wDAAwD,WAAW,CAAC,6BAA6B,WAAW,CAAC,SAAS,UAAU,MAAMC,GAAK,CAAC,KAAK,SAAS,+EAA+E,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,wBAAwB,WAAW,CAAC,OAAO,CAAC,qBAAqB,QAAQ,CAAC,gBAAgB,SAAS,CAAC,qBAAqB,QAAQ,CAAC,OAAO,OAAO,CAAC,qBAAqB,QAAQ,CAAC,UAAU,SAAS,CAAC,6BAA6B,WAAW,CAAC,aAAa,OAAO,CAAC,qBAAqB,QAAQ,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,OAAO,OAAO,CAAC,gCAAgC,cAAc,CAAC,MAAM,OAAO,CAAC,6BAA6B,WAAW,CAAC,KAAK,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,sDAAsD,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,kCAAkC,SAAS,CAAC,mBAAmB,QAAQ,CAAC,SAAS,SAAS,CAAC,0BAA0B,WAAW,CAAC,KAAK,SAAS,CAAC,6BAA6B,WAAW,CAAC,wBAAwB,SAAS,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,CAAC,2BAA2B,WAAW,CAAC,MAAM,SAAS,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,2BAA2B,WAAW,CAAC,KAAK,SAAS,CAAC,gCAAgC,cAAc,CAAC,KAAK,QAAQ,KAAKC,GAAK,CAAC,MAAM,gBAAgB,gDAAgD,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,CAAC,2BAA2B,WAAW,CAAC,QAAQ,CAAC,wBAAwB,WAAW,CAAC,WAAW,OAAO,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,CAAC,gCAAgC,cAAc,CAAC,WAAW,CAAC,qCAAqC,cAAc,CAAC,QAAQ,KAAKC,GAAK,CAAC,KAAK,KAAK,oCAAoC,CAAC,IAAI,EAAE,IAAI,EAAE,oBAAoB,SAAS,EAAE,wBAAwBC,GAAK,CAAC,KAAK,KAAK,0CAA0C,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,8BAA8B,4CAA4C,8CAA8C,EAAE,GAAG,CAAC,qBAAqB,QAAQ,CAAC,MAAM,QAAQ,EAAE,GAAG,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,2BAA2B,WAAW,CAAC,qCAAqC,2DAA2D,4FAA4F,MAAM,GAAG,CAAC,2BAA2B,WAAW,CAAC,sYAAsY,meAAme,ykBAAykB,MAAM,GAAG,CAAC,2BAA2B,WAAW,CAAC,iKAAiK,wSAAwS,mWAAmW,MAAM,GAAG,CAAC,mBAAmB,QAAQ,CAAC,SAAS,MAAM,GAAG,CAAC,6BAA6B,WAAW,CAAC,eAAe,iBAAiB,EAAE,GAAG,CAAC,mCAAmC,cAAc,CAAC,MAAM,EAAE,IAAI,KAAKC,GAAK,CAAC,MAAM,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQC,GAAK,CAAC,MAAM,KAAK,oCAAoC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,wBAAwB,WAAW,CAAC,KAAK,OAAO,CAAC,6BAA6B,WAAW,CAAC,SAAS,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,KAAKC,GAAK,CAAC,KAAK,KAAK,wCAAwC,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,aAAa,KAAK,CAAC,MAAM,OAAO,CAAC,qBAAqB,QAAQ,CAAC,4EAA4E,OAAO,CAAC,6BAA6B,WAAW,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,SAAS,QAAQ,KAAKC,GAAK,CAAC,MAAM,4BAA4B,wBAAwB,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAMC,GAAK,CAAC,KAAK,KAAK,oFAAoF,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,UAAU,CAAC,qBAAqB,QAAQ,CAAC,wCAAwC,0DAA0D,CAAC,qBAAqB,QAAQ,CAAC,mCAAmC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,CAAC,6BAA6B,WAAW,CAAC,YAAY,CAAC,6BAA6B,WAAW,CAAC,uBAAuB,CAAC,6BAA6B,WAAW,CAAC,wBAAwB,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,6BAA6B,WAAW,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,+aAA+a,CAAC,4BAA4B,CAAC,EAAE,KAAK,CAAC,wBAAwB,CAAC,EAAE,IAAI,CAAC,iHAAiH,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,sBAAsB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,8BAA8B,CAAC,EAAE,MAAMC,GAAK,CAAC,KAAK,KAAK,oCAAoC,CAAC,IAAI,EAAE,IAAI,EAAE,sBAAsB,SAAS,EAAE,EAAE,CAAC,CAAC,sBAAsB,CAAC,yDAAyD,CAAC,gCAAgC,CAAC,yGAAyG,CAAC,gBAAgB,EAAE,CAAC,iHAAiH,CAAC,yFAAyF,CAAC,cAAcC,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,WAAWC,GAAK,CAAC,MAAM,KAAK,qCAAqC,CAAC,EAAE,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,aAAa,SAAS,CAAC,qBAAqB,QAAQ,CAAC,QAAQ,OAAO,CAAC,mBAAmB,QAAQ,CAAC,MAAM,OAAO,CAAC,wBAAwB,WAAW,CAAC,KAAK,QAAQ,KAAKC,GAAK,CAAC,KAAK,MAAM,0DAA0D,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,2BAA2B,WAAW,CAAC,iBAAiB,OAAO,CAAC,wBAAwB,WAAW,CAAC,6FAA6F,gLAAgL,uMAAuM,OAAO,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,CAAC,wBAAwB,WAAW,CAAC,wBAAwB,2CAA2C,OAAO,CAAC,2BAA2B,WAAW,CAAC,qVAAqV,gnBAAgnB,gsBAAgsB,iuBAAiuB,OAAO,CAAC,2BAA2B,WAAW,CAAC,oCAAoC,OAAO,CAAC,2BAA2B,WAAW,CAAC,OAAO,OAAO,CAAC,2BAA2B,WAAW,CAAC,WAAW,QAAQ,KAAKC,GAAK,CAAC,MAAM,MAAM,2DAA2D,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,UAAU,OAAO,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,OAAO,CAAC,6BAA6B,WAAW,CAAC,QAAQ,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,kCAAkC,CAAC,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,uBAAuB,OAAO,CAAC,2BAA2B,WAAW,CAAC,eAAe,OAAO,CAAC,kCAAkC,cAAc,CAAC,KAAK,QAAQ,KAAKC,GAAK,CAAC,MAAM,WAAW,wBAAwB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,6BAA6B,WAAW,CAAC,SAAS,OAAO,CAAC,2BAA2B,WAAW,CAAC,OAAO,KAAKC,GAAK,CAAC,MAAM,KAAK,mDAAmD,CAAC,EAAE,GAAG,EAAE,KAAKC,GAAK,CAAC,MAAM,KAAK,eAAe,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,aAAaC,GAAK,CAAC,IAAI,MAAM,2BAA2B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAOC,GAAK,CAAC,MAAM,QAAQ,iCAAiC,CAAC,EAAE,IAAI,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,wBAAwB,WAAW,CAAC,SAAS,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,KAAKC,GAAK,CAAC,KAAK,sDAAsD,2GAA2G,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,gCAAgC,OAAO,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,0BAA0B,WAAW,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,6BAA6B,WAAW,CAAC,iBAAiB,OAAO,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,IAAI,EAAE,6BAA6BC,GAAK,CAAC,MAAM,KAAK,kCAAkC,CAAC,EAAE,GAAG,CAAC,CAAC,qBAAqB,QAAQ,CAAC,kCAAkC,CAAC,mBAAmB,QAAQ,CAAC,YAAYC,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAOC,GAAK,CAAC,IAAI,MAAM,qCAAqC,CAAC,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQC,GAAK,CAAC,MAAM,KAAK,6CAA6C,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,2BAA2B,WAAW,CAAC,qBAAqB,OAAO,CAAC,mCAAmC,cAAc,CAAC,aAAa,OAAO,CAAC,mCAAmC,cAAc,CAAC,QAAQ,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,4BAA4B,CAAC,EAAE,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,iDAAiD,OAAO,CAAC,2BAA2B,WAAW,CAAC,YAAY,KAAKC,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAOC,GAAK,CAAC,MAAM,KAAK,oCAAoC,CAAC,EAAE,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,YAAY,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,2BAA2B,WAAW,CAAC,OAAO,IAAI,EAAE,YAAYC,GAAK,CAAC,KAAK,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,WAAW,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,wCAAwC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,SAAS,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,UAAU,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,4BAA4B,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,aAAaC,GAAK,CAAC,MAAM,KAAK,+BAA+B,CAAC,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,WAAW,SAAS,GAAG,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,GAAG,CAAC,mBAAmB,QAAQ,CAAC,uBAAuB,SAAS,GAAG,CAAC,mBAAmB,QAAQ,CAAC,SAAS,SAAS,IAAI,IAAI,EAAE,QAAQC,GAAK,CAAC,MAAM,KAAK,yEAAyE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,qEAAqE,CAAC,2BAA2B,WAAW,CAAC,qEAAqE,CAAC,2BAA2B,WAAW,CAAC,cAAc,CAAC,qCAAqC,cAAc,CAAC,uBAAuB,CAAC,2BAA2B,WAAW,CAAC,mBAAmB,CAAC,mCAAmC,cAAc,CAAC,OAAO,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,6CAA6C,iBAAiB,CAAC,uBAAuB,CAAC,qCAAqC,cAAc,CAAC,qDAAqD,EAAE,EAAE,qDAAqDC,GAAK,CAAC,MAAM,KAAK,wBAAwB,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,kBAAkBC,GAAK,CAAC,MAAM,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,aAAa,iBAAiB,mBAAmB,OAAO,CAAC,mCAAmC,cAAc,CAAC,SAAS,OAAO,CAAC,mBAAmB,QAAQ,CAAC,6BAA6B,0CAA0C,OAAO,CAAC,mBAAmB,QAAQ,CAAC,KAAK,OAAO,CAAC,mBAAmB,QAAQ,CAAC,SAAS,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,+KAA+K,CAAC,wEAAwE,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,4BAA4BC,GAAK,CAAC,MAAM,KAAK,wBAAwB,CAAC,EAAE,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,mCAAmC,cAAc,CAAC,UAAU,CAAC,wCAAwC,iBAAiB,CAAC,KAAK,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,6BAA6B,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,OAAO,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,2BAA2B,WAAW,CAAC,UAAU,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,oCAAoC,CAAC,EAAE,GAAG,CAAC,CAAC,6BAA6B,WAAW,CAAC,SAAS,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,iCAAiC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,qDAAqD,CAAC,0CAA0C,CAAC,iBAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,mBAAmBC,GAAK,CAAC,MAAM,KAAK,aAAa,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,QAAQ,QAAQ,IAAI,EAAE,oBAAoB,QAAQC,GAAK,CAAC,MAAM,MAAM,kCAAkC,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,KAAKC,GAAK,CAAC,MAAM,KAAK,gBAAgB,CAAC,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,CAAC,gCAAgC,cAAc,CAAC,QAAQ,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,eAAe,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,aAAaC,GAAK,CAAC,KAAK,KAAK,oEAAoE,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,wBAAwB,WAAW,CAAC,QAAQ,OAAO,CAAC,2BAA2B,WAAW,CAAC,6DAA6D,OAAO,CAAC,0BAA0B,WAAW,CAAC,QAAQ,OAAO,CAAC,6BAA6B,WAAW,CAAC,iBAAiB,OAAO,CAAC,0BAA0B,WAAW,CAAC,+BAA+B,OAAO,CAAC,wBAAwB,WAAW,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,gCAAgC,cAAc,CAAC,MAAM,OAAO,CAAC,wBAAwB,WAAW,CAAC,KAAK,QAAQ,KAAKC,GAAK,CAAC,MAAM,MAAM,4BAA4B,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,CAAC,mBAAmB,QAAQ,CAAC,WAAW,CAAC,qBAAqB,QAAQ,CAAC,cAAc,OAAO,CAAC,qBAAqB,QAAQ,CAAC,sCAAsC,4CAA4C,OAAO,CAAC,qBAAqB,QAAQ,CAAC,QAAQ,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,kCAAkC,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,mBAAmB,QAAQ,CAAC,YAAYC,GAAK,CAAC,IAAI,MAAM,8BAA8B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAOC,GAAK,CAAC,MAAM,KAAK,mCAAmC,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,SAAS,OAAO,CAAC,mCAAmC,cAAc,CAAC,KAAK,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,4BAA4B,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,aAAaC,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,kBAAkB,QAAQ,EAAE,OAAOC,GAAK,CAAC,MAAM,KAAK,wCAAwC,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,eAAeC,GAAK,CAAC,MAAM,uBAAuB,oCAAoC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,kBAAkB,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,mBAAmB,QAAQ,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAOC,GAAK,CAAC,MAAM,YAAY,2CAA2C,CAAC,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,mBAAmB,CAAC,2BAA2B,WAAW,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAMC,GAAK,CAAC,MAAM,KAAK,wCAAwC,CAAC,EAAE,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,UAAU,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,mCAAmC,cAAc,CAAC,WAAW,QAAQ,KAAKC,GAAK,CAAC,KAAK,QAAQ,qHAAqH,CAAC,GAAG,IAAI,CAAC,CAAC,2BAA2B,WAAW,CAAC,eAAe,EAAE,GAAG,CAAC,2BAA2B,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,gCAAgC,WAAW,CAAC,oBAAoB,EAAE,GAAG,CAAC,gCAAgC,WAAW,CAAC,KAAK,EAAE,IAAI,KAAK,EAAE,oBAAoB,EAAE,EAAE,EAAE,EAAE,MAAMC,GAAK,CAAC,KAAK,KAAK,iCAAiC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,wBAAwB,WAAW,CAAC,UAAU,OAAO,CAAC,6BAA6B,WAAW,CAAC,6BAA6B,OAAO,CAAC,wBAAwB,WAAW,CAAC,KAAK,OAAO,CAAC,gCAAgC,cAAc,CAAC,YAAY,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,mBAAmB,CAAC,EAAE,GAAG,CAAC,CAAC,6BAA6B,WAAW,CAAC,cAAc,CAAC,2BAA2B,WAAW,CAAC,QAAQC,GAAK,CAAC,MAAM,KAAK,eAAe,CAAC,EAAE,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,CAAC,6BAA6B,WAAW,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,iBAAiB,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,eAAeC,GAAK,CAAC,MAAM,KAAK,gBAAgB,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,mCAAmC,cAAc,CAAC,yBAAyBC,GAAK,CAAC,MAAM,KAAK,aAAa,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,CAAC,gBAAgB,QAAQ,CAAC,UAAU,EAAE,EAAE,mBAAmB,OAAOC,GAAK,CAAC,MAAM,MAAM,sDAAsD,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,CAAC,0BAA0B,WAAW,CAAC,0BAA0B,OAAO,CAAC,6BAA6B,WAAW,CAAC,gBAAgB,OAAO,CAAC,6BAA6B,WAAW,CAAC,SAAS,OAAO,CAAC,6BAA6B,WAAW,CAAC,QAAQ,OAAO,CAAC,6BAA6B,WAAW,CAAC,QAAQ,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,8BAA8B,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,cAAcC,GAAK,CAAC,KAAK,KAAK,uEAAuE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,SAAS,OAAO,CAAC,mBAAmB,QAAQ,CAAC,MAAM,OAAO,CAAC,gBAAgB,QAAQ,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,2CAA2C,OAAO,CAAC,2BAA2B,WAAW,CAAC,YAAY,QAAQ,KAAKC,GAAK,CAAC,KAAK,KAAK,0BAA0B,CAAC,EAAE,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,aAAa,CAAC,mCAAmC,cAAc,CAAC,aAAa,EAAE,EAAE,EAAE,EAAE,EAAE,mBAAmBC,GAAK,CAAC,MAAM,KAAK,+BAA+B,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,gBAAgB,QAAQ,CAAC,UAAU,OAAO,CAAC,mBAAmB,QAAQ,CAAC,mCAAmC,OAAO,CAAC,mBAAmB,QAAQ,CAAC,OAAO,KAAKC,GAAK,CAAC,MAAM,KAAK,mCAAmC,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,aAAaC,GAAK,CAAC,MAAM,KAAK,wBAAwB,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQC,GAAK,CAAC,KAAK,aAAa,8FAA8F,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,YAAY,OAAO,CAAC,6BAA6B,WAAW,CAAC,kBAAkB,yBAAyB,OAAO,CAAC,wBAAwB,WAAW,CAAC,6BAA6B,OAAO,CAAC,6BAA6B,WAAW,CAAC,sBAAsB,OAAO,CAAC,6BAA6B,WAAW,CAAC,YAAY,OAAO,CAAC,6BAA6B,WAAW,CAAC,6BAA6B,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAMC,GAAK,CAAC,MAAM,KAAK,6CAA6C,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,qBAAqB,QAAQ,CAAC,SAAS,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,mBAAmB,QAAQ,CAAC,YAAYC,GAAK,CAAC,MAAM,KAAK,oDAAoD,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,aAAa,CAAC,mBAAmB,QAAQ,CAAC,SAAS,CAAC,2BAA2B,WAAW,CAAC,QAAQC,GAAK,CAAC,KAAK,uBAAuB,wBAAwB,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,SAAS,CAAC,gBAAgB,QAAQ,CAAC,KAAK,SAAS,CAAC,mBAAmB,QAAQ,CAAC,SAAS,SAAS,CAAC,2BAA2B,WAAW,CAAC,OAAO,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,WAAWC,GAAK,CAAC,MAAM,KAAK,+BAA+B,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,mCAAmC,cAAc,CAAC,aAAa,CAAC,mCAAmC,cAAc,CAAC,QAAQC,GAAK,CAAC,MAAM,cAAc,mDAAmD,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,iBAAiB,CAAC,mBAAmB,QAAQ,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAMC,GAAK,CAAC,KAAK,KAAK,kDAAkD,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,gBAAgB,QAAQ,CAAC,KAAK,SAAS,CAAC,qBAAqB,QAAQ,CAAC,qEAAqE,uHAAuH,SAAS,CAAC,mBAAmB,QAAQ,CAAC,wBAAwB,iCAAiC,SAAS,CAAC,wBAAwB,WAAW,CAAC,KAAK,SAAS,CAAC,2BAA2B,WAAW,CAAC,gBAAgB,SAAS,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,qCAAqC,cAAc,CAAC,OAAO,KAAKC,GAAK,CAAC,KAAK,KAAK,kKAAkK,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,6BAA6B,WAAW,CAAC,SAAS,OAAO,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,qBAAqB,QAAQ,CAAC,kJAAkJ,uKAAuK,SAAS,CAAC,qBAAqB,QAAQ,CAAC,8DAA8D,SAAS,CAAC,mBAAmB,QAAQ,CAAC,MAAM,SAAS,CAAC,mBAAmB,QAAQ,CAAC,KAAK,OAAO,CAAC,mCAAmC,cAAc,CAAC,qDAAqD,SAAS,CAAC,mCAAmC,cAAc,CAAC,UAAU,UAAU,KAAKC,GAAK,CAAC,KAAK,KAAK,oDAAoD,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,OAAO,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,2BAA2B,WAAW,CAAC,iFAAiF,oFAAoF,CAAC,6BAA6B,WAAW,CAAC,OAAO,CAAC,2BAA2B,WAAW,CAAC,mDAAmD,CAAC,mCAAmC,cAAc,CAAC,gCAAgC,CAAC,6BAA6B,WAAW,CAAC,QAAQC,GAAK,CAAC,MAAM,KAAK,0BAA0B,CAAC,EAAE,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,mCAAmC,cAAc,CAAC,KAAK,QAAQ,KAAKC,GAAK,CAAC,IAAI,MAAM,4BAA4B,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,WAAWC,GAAK,CAAC,MAAM,KAAK,iCAAiC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,wBAAwB,WAAW,CAAC,UAAU,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,OAAO,KAAKC,GAAK,CAAC,MAAM,KAAK,oCAAoC,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,2BAA2B,WAAW,CAAC,iBAAiBC,GAAK,CAAC,MAAM,SAAS,iCAAiC,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,YAAYC,GAAK,CAAC,MAAM,KAAK,uDAAuD,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,UAAU,OAAO,CAAC,mBAAmB,QAAQ,CAAC,yCAAyC,SAAS,CAAC,qBAAqB,QAAQ,CAAC,0DAA0D,SAAS,CAAC,6BAA6B,WAAW,CAAC,wDAAwD,SAAS,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,mBAAmB,QAAQ,CAAC,sBAAsB,OAAO,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,CAAC,2BAA2B,WAAW,CAAC,OAAO,KAAKC,GAAK,CAAC,MAAM,KAAK,2CAA2C,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,aAAa,CAAC,mBAAmB,QAAQ,CAAC,YAAYC,GAAK,CAAC,MAAM,KAAK,kCAAkC,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,UAAU,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,kBAAkBC,GAAK,CAAC,KAAK,KAAK,oCAAoC,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,cAAc,OAAO,CAAC,mBAAmB,QAAQ,CAAC,UAAU,OAAO,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,CAAC,2BAA2B,WAAW,CAAC,WAAW,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,SAASC,GAAK,CAAC,MAAM,KAAK,wGAAwG,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,wBAAwB,OAAO,CAAC,sBAAsB,QAAQ,CAAC,UAAU,QAAQ,KAAKC,GAAK,CAAC,IAAI,MAAM,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,mCAAmC,cAAc,CAAC,qBAAqB,6CAA6C,iEAAiE,SAAS,GAAG,CAAC,gCAAgC,cAAc,CAAC,sBAAsB,2EAA2E,8LAA8L,SAAS,GAAG,CAAC,2BAA2B,WAAW,CAAC,KAAK,SAAS,GAAG,CAAC,mCAAmC,cAAc,CAAC,4BAA4B,SAAS,GAAG,CAAC,mCAAmC,cAAc,CAAC,KAAK,WAAW,IAAI,EAAE,EAAE,EAAE,EAAE,kBAAkB,EAAE,QAAQC,GAAK,CAAC,MAAM,KAAK,iCAAiC,CAAC,EAAE,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,CAAC,2BAA2B,WAAW,CAAC,OAAO,KAAKC,GAAK,CAAC,MAAM,KAAK,+BAA+B,CAAC,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,6BAA6B,WAAW,CAAC,MAAM,OAAO,CAAC,2BAA2B,WAAW,CAAC,OAAO,KAAKC,GAAK,CAAC,MAAM,QAAQ,8BAA8B,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,iCAAiCC,GAAK,CAAC,MAAM,aAAa,mCAAmC,CAAC,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,iBAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAMC,GAAK,CAAC,MAAM,KAAK,aAAa,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,QAAQ,KAAKC,GAAK,CAAC,KAAK,KAAK,0EAA0E,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,6BAA6B,WAAW,CAAC,MAAM,MAAM,EAAE,YAAY,CAAC,mBAAmB,QAAQ,CAAC,iBAAiB,MAAM,EAAE,SAAS,CAAC,2BAA2B,WAAW,CAAC,0CAA0C,MAAM,EAAE,YAAY,CAAC,kCAAkC,cAAc,CAAC,KAAK,MAAM,EAAE,eAAe,CAAC,6BAA6B,WAAW,CAAC,wHAAwH,MAAM,EAAE,YAAY,CAAC,6BAA6B,WAAW,CAAC,iBAAiB,MAAM,EAAE,YAAY,CAAC,qCAAqC,cAAc,CAAC,qDAAqD,MAAM,EAAE,eAAe,CAAC,mCAAmC,cAAc,CAAC,QAAQ,MAAM,EAAE,eAAe,CAAC,gCAAgC,cAAc,CAAC,KAAK,MAAM,EAAE,eAAe,CAAC,mCAAmC,cAAc,CAAC,iFAAiF,MAAM,EAAE,eAAe,CAAC,mCAAmC,cAAc,CAAC,KAAK,MAAM,EAAE,eAAe,CAAC,2CAA2C,iBAAiB,CAAC,QAAQ,MAAM,EAAE,mBAAmB,KAAKC,GAAK,CAAC,KAAK,YAAY,+CAA+C,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,4BAA4B,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,2BAA2B,WAAW,CAAC,QAAQC,GAAK,CAAC,MAAM,KAAK,uBAAuB,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,SAASC,GAAK,CAAC,MAAM,uBAAuB,mCAAmC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,qBAAqB,QAAQ,CAAC,WAAW,OAAO,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,OAAO,CAAC,2BAA2B,WAAW,CAAC,yBAAyB,OAAO,CAAC,gCAAgC,cAAc,CAAC,UAAU,UAAU,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAMC,GAAK,CAAC,KAAK,KAAK,mCAAmC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAMC,GAAK,CAAC,MAAM,KAAK,yCAAyC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,0BAA0B,WAAW,CAAC,MAAM,OAAO,CAAC,6BAA6B,WAAW,CAAC,cAAc,mBAAmB,OAAO,CAAC,gCAAgC,cAAc,CAAC,KAAK,OAAO,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,CAAC,mCAAmC,cAAc,CAAC,SAAS,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,0BAA0B,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,UAAU,KAAKC,GAAK,CAAC,MAAM,KAAK,0BAA0B,CAAC,EAAE,IAAI,CAAC,CAAC,mCAAmC,cAAc,CAAC,UAAU,CAAC,mBAAmB,QAAQ,CAAC,OAAO,EAAE,EAAE,gBAAgB,UAAUC,GAAK,CAAC,MAAM,KAAK,wBAAwB,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,CAAC,mCAAmC,cAAc,CAAC,YAAYC,GAAK,CAAC,MAAM,KAAK,uDAAuD,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,CAAC,WAAW,KAAK,CAAC,UAAU,CAAC,gBAAgB,QAAQ,CAAC,kCAAkC,CAAC,gBAAgB,QAAQ,CAAC,YAAY,CAAC,2BAA2B,WAAW,CAAC,iBAAiB,CAAC,qBAAqB,QAAQ,CAAC,sCAAsC,KAAKC,GAAK,CAAC,MAAM,KAAK,6BAA6B,CAAC,EAAE,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,mBAAmB,QAAQ,CAAC,YAAYC,GAAK,CAAC,MAAM,KAAK,aAAa,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,oBAAoB,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAWC,GAAK,CAAC,MAAM,KAAK,sCAAsC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,2BAA2B,WAAW,CAAC,WAAWC,GAAK,CAAC,IAAI,MAAM,sCAAsC,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,QAAQ,EAAE,OAAOC,GAAK,CAAC,MAAM,KAAK,2BAA2B,CAAC,EAAE,GAAG,CAAC,CAAC,6BAA6B,WAAW,CAAC,SAAS,MAAM,GAAG,CAAC,2BAA2B,WAAW,CAAC,KAAK,MAAM,IAAI,KAAKC,GAAK,CAAC,MAAM,KAAK,oCAAoC,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,CAAC,mBAAmB,QAAQ,CAAC,QAAQC,GAAK,CAAC,MAAM,KAAK,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAKC,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,qBAAqB,QAAQ,EAAE,OAAOC,GAAK,CAAC,MAAM,QAAQ,0BAA0B,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAMC,GAAK,CAAC,MAAM,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,YAAYC,GAAK,CAAC,KAAK,UAAU,6CAA6C,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,wBAAwB,WAAW,CAAC,KAAK,OAAO,CAAC,6BAA6B,WAAW,CAAC,UAAU,OAAO,CAAC,2BAA2B,WAAW,CAAC,OAAO,KAAKC,GAAK,CAAC,MAAM,MAAM,2BAA2B,CAAC,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,MAAM,SAAS,CAAC,2BAA2B,WAAW,CAAC,iBAAiB,CAAC,wBAAwB,WAAW,CAAC,WAAW,CAAC,2BAA2B,WAAW,CAAC,cAAc,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQC,GAAK,CAAC,MAAM,KAAK,iBAAiB,CAAC,EAAE,EAAE,EAAE,IAAIC,GAAK,CAAC,MAAM,KAAK,oCAAoC,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,eAAe,CAAC,mBAAmB,QAAQ,CAAC,QAAQC,GAAK,CAAC,MAAM,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,UAAU,CAAC,gCAAgC,cAAc,CAAC,SAAS,UAAU,CAAC,mBAAmB,QAAQ,CAAC,KAAK,SAAS,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQC,GAAK,CAAC,MAAM,KAAK,iBAAiB,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,eAAeC,GAAK,CAAC,MAAM,KAAK,oDAAoD,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,oCAAoC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,mBAAmB,QAAQ,CAAC,YAAYC,GAAK,CAAC,KAAK,KAAK,iDAAiD,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,2BAA2B,WAAW,CAAC,mBAAmB,MAAM,GAAG,CAAC,mCAAmC,cAAc,CAAC,iBAAiB,kBAAkB,oBAAoB,MAAM,GAAG,CAAC,mCAAmC,cAAc,CAAC,oBAAoB,QAAQ,GAAG,CAAC,6BAA6B,WAAW,CAAC,MAAM,MAAM,IAAI,KAAKC,GAAK,CAAC,IAAI,MAAM,2BAA2B,CAAC,IAAI,EAAE,IAAI,EAAE,sBAAsB,QAAQ,EAAE,OAAOC,GAAK,CAAC,MAAM,KAAK,yBAAyB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,mBAAmB,QAAQ,CAAC,QAAQC,GAAK,CAAC,MAAM,mBAAmB,+CAA+C,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,wBAAwB,WAAW,CAAC,OAAO,OAAO,CAAC,6BAA6B,WAAW,CAAC,UAAU,OAAO,CAAC,0BAA0B,WAAW,CAAC,wCAAwC,gDAAgD,OAAO,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,6BAA6B,WAAW,CAAC,KAAK,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAKC,GAAK,CAAC,MAAM,UAAU,4BAA4B,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,2BAA2B,WAAW,CAAC,QAAQ,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,yBAAyB,CAAC,EAAE,IAAI,CAAC,CAAC,2BAA2B,WAAW,CAAC,8DAA8D,mFAAmF,OAAO,CAAC,2BAA2B,WAAW,CAAC,8EAA8E,wFAAwF,OAAO,CAAC,mBAAmB,QAAQ,CAAC,SAAS,OAAO,CAAC,6BAA6B,WAAW,CAAC,QAAQ,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAOC,GAAK,CAAC,MAAM,UAAU,qCAAqC,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,QAAQ,OAAO,CAAC,mBAAmB,QAAQ,CAAC,2BAA2B,OAAO,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,QAAQ,KAAKC,GAAK,CAAC,IAAI,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC,2BAA2B,aAAa,CAAC,SAAS,EAAE,EAAE,aAAa,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,8vBAA8vB,CAAC,IAAI,CAAC,wCAAwC,CAAC,kBAAkB,CAAC,0OAA0OC,GAAK,CAAC,MAAM,mBAAmB,4CAA4C,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,YAAY,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,UAAUC,GAAK,CAAC,MAAM,MAAM,8BAA8B,CAAC,GAAG,CAAC,CAAC,mCAAmC,cAAc,CAAC,UAAU,SAAS,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQC,GAAK,CAAC,KAAK,KAAK,+EAA+E,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,SAASC,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAOC,GAAK,CAAC,KAAK,KAAK,uCAAuC,CAAC,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,YAAY,QAAQ,KAAKC,GAAK,CAAC,IAAI,MAAM,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,qBAAqB,QAAQ,EAAE,OAAOC,GAAK,CAAC,IAAI,MAAM,8BAA8B,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,QAAQ,EAAE,OAAOC,GAAK,CAAC,KAAK,KAAK,mDAAmD,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,MAAM,GAAG,CAAC,qBAAqB,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,mCAAmC,cAAc,CAAC,QAAQ,MAAM,GAAG,CAAC,2BAA2B,WAAW,CAAC,UAAU,MAAM,GAAG,CAAC,2BAA2B,WAAW,CAAC,SAAS,MAAM,GAAG,CAAC,2BAA2B,WAAW,CAAC,KAAK,MAAM,IAAI,KAAKC,GAAK,CAAC,MAAM,KAAK,qCAAqC,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,aAAaC,GAAK,CAAC,MAAM,KAAK,qCAAqC,CAAC,EAAE,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,mCAAmC,cAAc,CAAC,QAAQC,GAAK,CAAC,MAAM,IAAI,gDAAgD,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,iBAAiB,CAAC,qBAAqB,QAAQ,CAAC,SAAS,CAAC,mBAAmB,QAAQ,CAAC,QAAQC,GAAK,CAAC,MAAM,KAAK,wCAAwC,CAAC,EAAE,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,OAAO,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,CAAC,2BAA2B,WAAW,CAAC,QAAQ,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,+BAA+B,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,0BAA0B,WAAW,CAAC,kBAAkB,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,4BAA4B,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,UAAUC,GAAK,CAAC,KAAK,KAAK,yBAAyB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,UAAU,OAAO,CAAC,6BAA6B,WAAW,CAAC,UAAU,OAAO,CAAC,2BAA2B,WAAW,CAAC,OAAO,OAAO,CAAC,2BAA2B,WAAW,CAAC,SAAS,OAAO,CAAC,2BAA2B,WAAW,CAAC,KAAK,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,wCAAwC,CAAC,GAAG,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,OAAO,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,QAAQ,KAAKC,GAAK,CAAC,MAAM,KAAK,wHAAwH,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,0FAA0F,OAAO,CAAC,0BAA0B,WAAW,CAAC,QAAQ,OAAO,CAAC,mBAAmB,QAAQ,CAAC,MAAM,OAAO,CAAC,mBAAmB,QAAQ,CAAC,6CAA6C,8EAA8E,SAAS,CAAC,2BAA2B,WAAW,CAAC,KAAK,OAAO,CAAC,6BAA6B,WAAW,CAAC,+CAA+C,iDAAiD,OAAO,CAAC,mBAAmB,QAAQ,CAAC,KAAK,OAAO,CAAC,qBAAqB,QAAQ,CAAC,6IAA6I,OAAO,CAAC,6BAA6B,WAAW,CAAC,mBAAmB,OAAO,CAAC,qBAAqB,QAAQ,CAAC,aAAa,YAAY,QAAQ,MAAMC,cAAgB,CAAC,IAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,+BAA+B,IAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,iBAAiB,IAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,EAAE,IAAI,CAAC,CAAC,2BAA2B,WAAW,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,0CAA0C,IAAM,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,eAAe,IAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,cAAc,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,oBAAoB,IAAM,CAAC,MAAM,EAAE,yDAAyD,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,WAAW,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,2BAA2B,WAAW,CAAC,SAAS,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,6BAA6B,WAAW,CAAC,MAAM,CAAC,2BAA2B,WAAW,CAAC,WAAW,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,6BAA6B,WAAW,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,qDAAqD,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,sJAAsJ,IAAM,CAAC,MAAM,EAAE,gCAAgC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,mCAAmC,cAAc,CAAC,QAAQ,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,0CAA0C,IAAM,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,2BAA2B,aAAa,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,aAAa,IAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,wBAAwB,WAAW,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,oBCG3m/E,SAASC,GAAaC,EAAMzvB,GAClC,IAAI7L,EAAOwG,MAAMxF,UAAUqd,MAAMxQ,KAAKhC,GAEtC,OADA7L,EAAK4B,KAAKqB,IACHq4B,EAAK9uB,MAAMvM,KAAMD,GCNzB,IAAIu7B,GAAa,SAASA,EAAWC,IAHrC,SAAyBlxB,EAAUmxB,GAAe,KAAMnxB,aAAoBmxB,GAAgB,MAAM,IAAI7tB,UAAU,qCAI9G8tB,CAAgBz7B,KAAMs7B,GAEtBt7B,KAAKyB,KAAOzB,KAAKuF,YAAY9D,KAC7BzB,KAAKY,QAAU26B,EACfv7B,KAAK07B,MAAQ,IAAI5kB,MAAMykB,GAAMG,QAI/BJ,GAAWv6B,UAAYI,OAAOw6B,OAAO7kB,MAAM/V,YACtBwE,YAAc+1B,GCZ5B,IAQIM,GAAe,eAafC,GAAoB,GAAGz3B,OAXrB,WAWoCA,OAVnC,MAUmDA,OATtD,MASmEA,OARtD,UAQyEA,OAPlF,gBAOmGA,OALrG,QCTE,YAAUiY,EAAGC,GAC1BD,EAAIA,EAAE1L,MAAM,KACZ2L,EAAIA,EAAE3L,MAAM,KAIZ,IAHA,IAAImrB,EAAKzf,EAAE,GAAG1L,MAAM,KAChBorB,EAAKzf,EAAE,GAAG3L,MAAM,KAEXlB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAIusB,EAAK92B,OAAO42B,EAAGrsB,IACfwsB,EAAK/2B,OAAO62B,EAAGtsB,IACnB,GAAIusB,EAAKC,EAAI,OAAO,EACpB,GAAIA,EAAKD,EAAI,OAAQ,EACrB,IAAKnmB,MAAMmmB,IAAOnmB,MAAMomB,GAAK,OAAO,EACpC,GAAIpmB,MAAMmmB,KAAQnmB,MAAMomB,GAAK,OAAQ,EAGvC,OAAI5f,EAAE,IAAMC,EAAE,GACLD,EAAE,GAAKC,EAAE,GAAK,EAAID,EAAE,GAAKC,EAAE,IAAM,EAAI,GAGtCD,EAAE,IAAMC,EAAE,GAAK,EAAID,EAAE,KAAOC,EAAE,IAAM,EAAI,EC3BlD,SAAS1M,GAAQC,GAAwT,OAAtOD,GAArD,mBAAXtC,QAAoD,iBAApBA,OAAOC,SAAmC,SAAiBsC,GAAO,cAAcA,GAA2B,SAAiBA,GAAO,OAAOA,GAAyB,mBAAXvC,QAAyBuC,EAAItK,cAAgB+H,QAAUuC,IAAQvC,OAAOvM,UAAY,gBAAkB8O,GAAiBD,GAAQC,GAExV,SAAS4rB,GAAgBpxB,EAAUmxB,GAAe,KAAMnxB,aAAoBmxB,GAAgB,MAAM,IAAI7tB,UAAU,qCAEhH,SAASuuB,GAAkB57B,EAAQ67B,GAAS,IAAK,IAAI1sB,EAAI,EAAGA,EAAI0sB,EAAM15B,OAAQgN,IAAK,CAAE,IAAI2sB,EAAaD,EAAM1sB,GAAI2sB,EAAW15B,WAAa05B,EAAW15B,aAAc,EAAO05B,EAAWz5B,cAAe,EAAU,UAAWy5B,IAAYA,EAAWC,UAAW,GAAMl7B,OAAOoB,eAAejC,EAAQ87B,EAAW12B,IAAK02B,IAE7S,SAASE,GAAad,EAAae,EAAYC,GAAmJ,OAAhID,GAAYL,GAAkBV,EAAYz6B,UAAWw7B,GAAiBC,GAAaN,GAAkBV,EAAagB,GAAqBhB,EAOzM,IAGIiB,GAAqB,SACrBC,GAAuB,QAKvBC,GAEJ,WACE,SAASA,EAAS35B,GAChBy4B,GAAgBz7B,KAAM28B,GA+hBnB,SAA0B35B,GAC/B,IAAKA,EACH,MAAM,IAAI8T,MAAM,6EAKlB,IAAK8lB,GAAU55B,KAAc45B,GAAU55B,EAAS6oB,WAC9C,MAAM,IAAI/U,MAAM,sJAAsJ1S,OAAOw4B,GAAU55B,GAAY,yBAA2B7B,OAAOC,KAAK4B,GAAUgC,KAAK,MAAQ,KAAO,KAAO63B,GAAQ75B,GAAY,KAAOA,EAAU,MAriBpT85B,CAAiB95B,GACjBhD,KAAKgD,SAAWA,EAChB+5B,GAAWnvB,KAAK5N,KAAMgD,GA4OxB,OAzOAs5B,GAAaK,EAAU,CAAC,CACtBj3B,IAAK,eACLoB,MAAO,WACL,OAAO3F,OAAOC,KAAKpB,KAAKgD,SAAS6oB,WAAWloB,QAAO,SAAUmJ,GAC3D,MAAa,QAANA,OAGV,CACDpH,IAAK,qBACLoB,MAAO,SAA4Bk2B,GACjC,OAAOh9B,KAAKgD,SAAS6oB,UAAUmR,KAEhC,CACDt3B,IAAK,gBACLoB,MAAO,WACL,KAAI9G,KAAKi9B,IAAMj9B,KAAKk9B,IAAMl9B,KAAKm9B,IAG/B,OAAOn9B,KAAKgD,SAASm4B,eAAiBn7B,KAAKgD,SAASo6B,kBAErD,CACD13B,IAAK,aACLoB,MAAO,SAAoBu2B,GACzB,YAA4Cj9B,IAArCJ,KAAKs9B,mBAAmBD,KAEhC,CACD33B,IAAK,iBACLoB,MAAO,SAAwBy2B,GAC7B,GAAIv9B,KAAKw9B,8BAA8BD,GACrC,OAAO,EAGT,GAAIv9B,KAAKm7B,iBACP,GAAIn7B,KAAKm7B,gBAAgBoC,GACvB,OAAO,MAEJ,CAEL,IAAIE,EAAez9B,KAAK09B,sBAAsBH,GAE9C,GAAIE,GAAwC,IAAxBA,EAAah7B,QAAoC,QAApBg7B,EAAa,GAC5D,OAAO,KAIZ,CACD/3B,IAAK,6BACLoB,MAAO,SAAoCy2B,GACzC,OAAIv9B,KAAKm7B,kBACAn7B,KAAKm7B,gBAAgBoC,IAErBv9B,KAAKw9B,8BAA8BD,KAI7C,CACD73B,IAAK,UACLoB,MAAO,SAAiBk2B,GACtB,OAAOh9B,KAAK29B,oBAAoBX,KAEjC,CACDt3B,IAAK,sBACLoB,MAAO,SAA6Bk2B,EAAaO,GAO/C,GALIP,GAAeN,GAAqB1rB,KAAKgsB,KAC3CO,EAAcP,EACdA,EAAc,MAGZA,GAA+B,QAAhBA,EAAuB,CACxC,IAAKh9B,KAAK49B,WAAWZ,GACnB,MAAM,IAAIlmB,MAAM,oBAAoB1S,OAAO44B,IAG7Ch9B,KAAK69B,cAAgB,IAAIC,GAAc99B,KAAKs9B,mBAAmBN,GAAch9B,WACxE,GAAIu9B,EAAa,CACtB,IAAKv9B,KAAK+9B,eAAeR,GACvB,MAAM,IAAIzmB,MAAM,yBAAyB1S,OAAOm5B,IAGlDv9B,KAAK69B,cAAgB,IAAIC,GAAc99B,KAAKg+B,yBAAyBT,GAAcv9B,WAEnFA,KAAK69B,mBAAgBz9B,EAGvB,OAAOJ,OAER,CACD0F,IAAK,gCACLoB,MAAO,SAAuCy2B,GAC5C,IAAIE,EAAez9B,KAAK09B,sBAAsBH,GAE9C,GAAIE,EAAc,CAUhB,GAA4B,IAAxBA,EAAah7B,QAA2C,IAA3Bg7B,EAAa,GAAGh7B,OAC/C,OAGF,OAAOg7B,KAGV,CACD/3B,IAAK,+BACLoB,MAAO,SAAsCy2B,GAC3C,IAAIE,EAAez9B,KAAKw9B,8BAA8BD,GAEtD,GAAIE,EACF,OAAOA,EAAa,KAGvB,CACD/3B,IAAK,2BACLoB,MAAO,SAAkCy2B,GACvC,IAAIP,EAAch9B,KAAKi+B,6BAA6BV,GAEpD,GAAIP,EACF,OAAOh9B,KAAKs9B,mBAAmBN,GAGjC,GAAIh9B,KAAKm7B,gBAAiB,CACxB,IAAIn4B,EAAWhD,KAAKm7B,gBAAgBoC,GAEpC,GAAIv6B,EACF,OAAOA,MAEJ,CAEL,IAAIy6B,EAAez9B,KAAK09B,sBAAsBH,GAE9C,GAAIE,GAAwC,IAAxBA,EAAah7B,QAAoC,QAApBg7B,EAAa,GAC5D,OAAOz9B,KAAKgD,SAAS6oB,UAAU,UAKpC,CACDnmB,IAAK,qBACLoB,MAAO,WACL,OAAO9G,KAAK69B,cAAcN,gBAG3B,CACD73B,IAAK,YACLoB,MAAO,WACL,OAAO9G,KAAK69B,cAAcK,cAG3B,CACDx4B,IAAK,mBACLoB,MAAO,WACL,OAAO9G,KAAK69B,cAAcM,qBAG3B,CACDz4B,IAAK,wBACLoB,MAAO,WACL,OAAO9G,KAAK69B,cAAcO,0BAG3B,CACD14B,IAAK,kBACLoB,MAAO,WACL,OAAO9G,KAAK69B,cAAcQ,oBAG3B,CACD34B,IAAK,UACLoB,MAAO,WACL,OAAO9G,KAAK69B,cAAcS,YAG3B,CACD54B,IAAK,2BACLoB,MAAO,WACL,OAAO9G,KAAK69B,cAAcU,6BAG3B,CACD74B,IAAK,8BACLoB,MAAO,WACL,OAAO9G,KAAK69B,cAAcW,gCAG3B,CACD94B,IAAK,gBACLoB,MAAO,WACL,OAAO9G,KAAK69B,cAAcY,kBAG3B,CACD/4B,IAAK,WACLoB,MAAO,WACL,OAAO9G,KAAK69B,cAAca,aAG3B,CACDh5B,IAAK,OACLoB,MAAO,SAAc63B,GACnB,OAAO3+B,KAAK69B,cAAcx9B,KAAKs+B,KAGhC,CACDj5B,IAAK,MACLoB,MAAO,WACL,OAAO9G,KAAK69B,cAAce,QAE3B,CACDl5B,IAAK,sBACLoB,MAAO,WACL,OAAI9G,KAAKi9B,GAAWj9B,KAAKgD,SAAS67B,gCAC3B7+B,KAAKgD,SAAS4oB,wBAGtB,CACDlmB,IAAK,oCACLoB,MAAO,SAA2Cy2B,GAChD,OAAOv9B,KAAK29B,oBAAoBJ,KAEjC,CACD73B,IAAK,2BACLoB,MAAO,WACL,YAA8B1G,IAAvBJ,KAAK69B,kBAITlB,EAlPT,GAuPImB,GAEJ,WACE,SAASA,EAAc96B,EAAU87B,GAC/BrD,GAAgBz7B,KAAM89B,GAEtB99B,KAAK8+B,qBAAuBA,EAC5B9+B,KAAKgD,SAAWA,EAChB+5B,GAAWnvB,KAAK5N,KAAM8+B,EAAqB97B,UAwJ7C,OArJAs5B,GAAawB,EAAe,CAAC,CAC3Bp4B,IAAK,cACLoB,MAAO,WACL,OAAO9G,KAAKgD,SAAS,KAQtB,CACD0C,IAAK,qCACLoB,MAAO,WACL,OAAO9G,KAAK8+B,qBAAqBd,yBAAyBh+B,KAAKu9B,iBAGhE,CACD73B,IAAK,YACLoB,MAAO,WACL,IAAI9G,KAAKi9B,KAAMj9B,KAAKk9B,GACpB,OAAOl9B,KAAKgD,SAAS,KAGtB,CACD0C,IAAK,mBACLoB,MAAO,WACL,IAAI9G,KAAKi9B,KAAMj9B,KAAKk9B,GACpB,OAAOl9B,KAAKgD,SAAS,MAEtB,CACD0C,IAAK,wBACLoB,MAAO,WACL,OAAI9G,KAAKi9B,IAAMj9B,KAAKk9B,GAAWl9B,KAAKgD,SAAS,GACtChD,KAAKgD,SAAS,KAGtB,CACD0C,IAAK,kBACLoB,MAAO,WACL,IAAI9G,KAAKi9B,GACT,OAAOj9B,KAAKgD,SAAShD,KAAKk9B,GAAK,EAAI,KAEpC,CACDx3B,IAAK,cACLoB,MAAO,SAAqB9D,GAC1B,OAAOA,EAAShD,KAAKi9B,GAAK,EAAIj9B,KAAKk9B,GAAK,EAAI,KAK7C,CACDx3B,IAAK,UACLoB,MAAO,WACL,IAAIjE,EAAQ7C,KAERs+B,EAAUt+B,KAAK++B,YAAY/+B,KAAKgD,WAAahD,KAAK++B,YAAY/+B,KAAKg/B,uCAAyC,GAChH,OAAOV,EAAQj5B,KAAI,SAAUyH,GAC3B,OAAO,IAAImyB,GAAOnyB,EAAGjK,QAGxB,CACD6C,IAAK,iBACLoB,MAAO,WACL,OAAO9G,KAAKgD,SAAShD,KAAKi9B,GAAK,EAAIj9B,KAAKk9B,GAAK,EAAI,KAElD,CACDx3B,IAAK,mCACLoB,MAAO,SAA0C9D,GAC/C,OAAOA,EAAShD,KAAKi9B,GAAK,EAAIj9B,KAAKk9B,GAAK,EAAI,KAK7C,CACDx3B,IAAK,+BACLoB,MAAO,WACL,OAAO9G,KAAKk/B,iCAAiCl/B,KAAKgD,WAAahD,KAAKk/B,iCAAiCl/B,KAAKg/B,wCAE3G,CACDt5B,IAAK,4BACLoB,MAAO,WACL,OAAO9G,KAAKgD,SAAShD,KAAKi9B,GAAK,EAAIj9B,KAAKk9B,GAAK,EAAI,KAElD,CACDx3B,IAAK,2BACLoB,MAAO,WAGL,OAAO9G,KAAKm/B,6BAA+Bn/B,KAAKo/B,mBAEjD,CACD15B,IAAK,8BACLoB,MAAO,WACL,OAAO9G,KAAKgD,SAAShD,KAAKi9B,GAAK,EAAIj9B,KAAKk9B,GAAK,EAAI,KAElD,CACDx3B,IAAK,6CACLoB,MAAO,WACL,QAAS9G,KAAKgD,SAAShD,KAAKi9B,GAAK,EAAIj9B,KAAKk9B,GAAK,EAAI,KAMpD,CACDx3B,IAAK,yDACLoB,MAAO,WACL,OAAO9G,KAAKq/B,2CAA2Cr/B,KAAKgD,WAAahD,KAAKq/B,2CAA2Cr/B,KAAKg/B,wCAE/H,CACDt5B,IAAK,gBACLoB,MAAO,WACL,OAAO9G,KAAKgD,SAAShD,KAAKi9B,GAAK,EAAIj9B,KAAKk9B,GAAK,EAAI,MAElD,CACDx3B,IAAK,QACLoB,MAAO,WACL,OAAO9G,KAAKgD,SAAShD,KAAKi9B,GAAK,EAAIj9B,KAAKk9B,GAAK,GAAK,MAEnD,CACDx3B,IAAK,WACLoB,MAAO,WAIL,QAAI9G,KAAKs/B,SAAmC,IAAxBt/B,KAAKs/B,QAAQ78B,WAMxBzC,KAAKs/B,UAEf,CACD55B,IAAK,OACLoB,MAAO,SAAcy4B,GACnB,GAAIv/B,KAAK0+B,YAAcc,GAAQx/B,KAAKs/B,QAASC,GAC3C,OAAO,IAAIE,GAAKD,GAAQx/B,KAAKs/B,QAASC,GAASv/B,QAGlD,CACD0F,IAAK,MACLoB,MAAO,WACL,OAAI9G,KAAKi9B,IAAMj9B,KAAKk9B,GAAWT,GACxBz8B,KAAKgD,SAAS,KAAOy5B,OAIzBqB,EA9JT,GAiKImB,GAEJ,WACE,SAASA,EAAOS,EAAQ18B,GACtBy4B,GAAgBz7B,KAAMi/B,GAEtBj/B,KAAK2/B,QAAUD,EACf1/B,KAAKgD,SAAWA,EAwDlB,OArDAs5B,GAAa2C,EAAQ,CAAC,CACpBv5B,IAAK,UACLoB,MAAO,WACL,OAAO9G,KAAK2/B,QAAQ,KAErB,CACDj6B,IAAK,SACLoB,MAAO,WACL,OAAO9G,KAAK2/B,QAAQ,KAErB,CACDj6B,IAAK,wBACLoB,MAAO,WACL,OAAO9G,KAAK2/B,QAAQ,IAAM,KAE3B,CACDj6B,IAAK,+BACLoB,MAAO,WACL,OAAO9G,KAAK2/B,QAAQ,IAAM3/B,KAAKgD,SAAS48B,iCAEzC,CACDl6B,IAAK,yDACLoB,MAAO,WACL,QAAS9G,KAAK2/B,QAAQ,IAAM3/B,KAAKgD,SAAS68B,2DAE3C,CACDn6B,IAAK,0DACLoB,MAAO,WAML,OAAO9G,KAAK8/B,uBAAyB9/B,KAAK6/B,2DAG3C,CACDn6B,IAAK,qBACLoB,MAAO,WACL,SAAO9G,KAAK4/B,gCACXG,GAAgC/uB,KAAKhR,KAAK4/B,mCAM5C,CACDl6B,IAAK,sBACLoB,MAAO,WACL,OAAO9G,KAAK2/B,QAAQ,IAAM3/B,KAAK0/B,aAI5BT,EA7DT,GAsEIc,GAAkC,cAElCN,GAEJ,WACE,SAASA,EAAKp/B,EAAM2C,GAClBy4B,GAAgBz7B,KAAMy/B,GAEtBz/B,KAAKK,KAAOA,EACZL,KAAKgD,SAAWA,EAiBlB,OAdAs5B,GAAamD,EAAM,CAAC,CAClB/5B,IAAK,UACLoB,MAAO,WACL,OAAI9G,KAAKgD,SAASi6B,GAAWj9B,KAAKK,KAC3BL,KAAKK,KAAK,KAElB,CACDqF,IAAK,kBACLoB,MAAO,WACL,IAAI9G,KAAKgD,SAASi6B,GAClB,OAAOj9B,KAAKK,KAAK,IAAML,KAAKgD,SAASq7B,sBAIlCoB,EAtBT,GAyBA,SAASD,GAAQF,EAAOj/B,GACtB,OAAQA,GACN,IAAK,aACH,OAAOi/B,EAAM,GAEf,IAAK,SACH,OAAOA,EAAM,GAEf,IAAK,YACH,OAAOA,EAAM,GAEf,IAAK,eACH,OAAOA,EAAM,GAEf,IAAK,kBACH,OAAOA,EAAM,GAEf,IAAK,YACH,OAAOA,EAAM,GAEf,IAAK,MACH,OAAOA,EAAM,GAEf,IAAK,QACH,OAAOA,EAAM,GAEf,IAAK,OACH,OAAOA,EAAM,GAEf,IAAK,cACH,OAAOA,EAAM,IAmBnB,IAAI1C,GAAY,SAAmB9vB,GACjC,MAAsB,WAAf8C,GAAQ9C,IAOb+vB,GAAU,SAAiB/vB,GAC7B,OAAO8C,GAAQ9C,IAiCV,SAASkzB,GAAsB3C,EAASr6B,GAG7C,IAFAA,EAAW,IAAI25B,GAAS35B,IAEX46B,WAAWP,GACtB,OAAOr6B,EAASq6B,QAAQA,GAAS4C,qBAGnC,MAAM,IAAInpB,MAAM,oBAAoB1S,OAAOi5B,IAQ7C,SAASN,GAAW/5B,GAClB,IAAIkZ,EAAUlZ,EAASkZ,QAEA,iBAAZA,GACTlc,KAAKi9B,GAAiB,IAAZ/gB,EACVlc,KAAKk9B,GAAiB,IAAZhhB,EACVlc,KAAKm9B,GAAiB,IAAZjhB,EACVlc,KAAKkgC,GAAiB,IAAZhkB,GAELA,GAEgC,IAA1BikB,GAAQjkB,EA/nBd,SAgoBHlc,KAAKk9B,IAAK,GACyB,IAA1BiD,GAAQjkB,EA/nBd,UAgoBHlc,KAAKm9B,IAAK,EAEVn9B,KAAKkgC,IAAK,EANVlgC,KAAKi9B,IAAK,ECzoBhB,IAOImD,GAA4B,SAAmC9U,GACjE,MAAO,KAAKlnB,OAAOw3B,GAAc,QAAQx3B,OAAOknB,EAAW,OAW9C,SAAS+U,GAAuBC,GAQ7C,IAmBIC,EAAqB,KAyDzB,MAvGwB,QA2EYH,GAhDH,MA4EhB,KAzBEI,2EAA8FJ,GAnDhF,MAmDwIG,GAyBnI,KAtBlBC,kDAA+FJ,GAhDlF,KAgD0IG,GAsB/G,KA3CnC,QAwB8BH,GAhD7B,KAgD8E,KAmBR,KAhBzEK,uCAAuGL,GAzD/F,MAyDqJG,GAgB3D,KAbpGE,mCAAkFL,GAzDtE,KAyD8HG,GClEjK,IAKWG,GAAqB,gBAA4C7E,GAA5C,MAAA,sBAAkHA,GAAlH,iBAU5B8E,GAAmC,IAAI/5B,OAAO,iBAAkDi1B,GAAlD,MAAA,uBAAwH,KAC/J+E,GAAoCF,GAC/C,MAAQL,KAA2B,KAG/BQ,GAA6B,IAAIj6B,OACrC,wBACMg6B,GAAoC,IAAK,KAQhC,SAASE,GAAoBC,GAC1C,OAAOA,EAAOt+B,QJxDgB,GIwDgBo+B,GAA2B7vB,KAAK+vB,GCtDhF,IAAIC,GAAe,IAAIp6B,OAAO,MAAQy5B,KAA2B,KAAM,KCGhE,IAAIY,GAAS,CAClB,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,IAAU,IAEV,IAAU,IAEV,IAAU,IAEV,IAAU,IAEV,IAAU,IAEV,IAAU,IAEV,IAAU,IAEV,IAAU,IAEV,IAAU,IAEV,IAAU,IAEV,IAAU,IAEV,IAAU,IAEV,IAAU,IAEV,IAAU,IAEV,IAAU,IAEV,IAAU,IAEV,IAAU,IAEV,IAAU,IAEV,IAAU,IAEV,IAAU,IAEV,IAAU,IAEV,IAAU,IAEV,IAAU,IAEV,IAAU,IAEV,IAAU,IAEV,IAAU,IAEV,IAAU,IAEV,IAAU,IAEV,IAAU,IAEV,IAAU,KC1DG,SAASC,GAA2BC,GACjD,IAAI90B,EAAS,GAOJ+0B,EAAYD,EAAOxwB,MAAM,IAAK0wB,EAAW96B,MAAMC,QAAQ46B,GAAY3tB,EAAK,EAAjF,IAAoF2tB,EAAYC,EAAWD,EAAYA,EAAU9zB,OAAOC,cAAe,CACrJ,IAAI+zB,EAEJ,GAAID,EAAU,CACZ,GAAI5tB,GAAM2tB,EAAU3+B,OAAQ,MAC5B6+B,EAAOF,EAAU3tB,SACZ,CAEL,IADAA,EAAK2tB,EAAUl1B,QACRI,KAAM,MACbg1B,EAAO7tB,EAAG3M,MAIZuF,GAAUk1B,GADMD,EAC+Bj1B,IAAW,GAG5D,OAAOA,EAcF,SAASk1B,GAA0BC,EAAWC,GAEnD,GAAkB,MAAdD,EAAmB,CAGrB,GAAIC,EACF,OAGF,MAAO,IAIT,ODUK,SAAoBD,GACzB,OAAOP,GAAOO,GCXPE,CAAWF,GCnEL,SAASG,GAAkBC,EAAgB5+B,GACxD,OAAO6+B,GAAyBD,OAAgBxhC,EAAW4C,GAItD,SAAS6+B,GAAyBD,EAAgBvhC,EAAM2C,GAC7D,IAAI8+B,EAAY9+B,EAAS3C,KAAKA,GAQ1B0hC,EAAmBD,GAAaA,EAAUzD,mBAAqBr7B,EAASq7B,kBAG5E,IAAK0D,EACH,MAAO,cAGT,GAAa,yBAAT1hC,EAAiC,CAInC,IAAK2C,EAAS3C,KAAK,cAGjB,OAAOwhC,GAAyBD,EAAgB,SAAU5+B,GAG5D,IAAIg/B,EAAch/B,EAAS3C,KAAK,UAE5B2hC,IAMFD,EClCS,SAAqB1lB,EAAGC,GACrC,IAAI2lB,EAAS5lB,EAAE+B,QAENgjB,EAAY9kB,EAAG+kB,EAAW96B,MAAMC,QAAQ46B,GAAY3tB,EAAK,EAAlE,IAAqE2tB,EAAYC,EAAWD,EAAYA,EAAU9zB,OAAOC,cAAe,CACtI,IAAI+zB,EAEJ,GAAID,EAAU,CACZ,GAAI5tB,GAAM2tB,EAAU3+B,OAAQ,MAC5B6+B,EAAOF,EAAU3tB,SACZ,CAEL,IADAA,EAAK2tB,EAAUl1B,QACRI,KAAM,MACbg1B,EAAO7tB,EAAG3M,MAGZ,IAAIo7B,EAAUZ,EAEVjlB,EAAEvY,QAAQo+B,GAAW,GACvBD,EAAOtgC,KAAKugC,GAIhB,OAAOD,EAAO7lB,MAAK,SAAUC,EAAGC,GAC9B,OAAOD,EAAIC,KDWU6lB,CAAYJ,EAAkBC,EAAY3D,yBAU5D,GAAIh+B,IAASyhC,EACd,MAAO,iBAGX,IAAIM,EAAgBR,EAAen/B,OAQ/B4/B,EAAiBN,EAAiB,GAEtC,OAAIM,IAAmBD,EACd,cAGLC,EAAiBD,EACZ,YAGLL,EAAiBA,EAAiBt/B,OAAS,GAAK2/B,EAC3C,WAIFL,EAAiBj+B,QAAQs+B,EAAe,IAAM,EAAI,cAAgB,iBEvBpE,SAASE,GAAiBV,EAAgB5+B,GAE/C,MACO,gBADC2+B,GAAkBC,EAAgB5+B,GCxD5C,SAAS4mB,GAAerS,EAAK9H,GAAK,OAMlC,SAAyB8H,GAAO,GAAIhR,MAAMC,QAAQ+Q,GAAM,OAAOA,EANtByR,CAAgBzR,IAIzD,SAA+BA,EAAK9H,GAAK,IAAIyT,EAAO,GAAQ+F,GAAK,EAAUC,GAAK,EAAWC,OAAK/oB,EAAW,IAAM,IAAK,IAAiCgpB,EAA7B3V,EAAK8D,EAAIjK,OAAOC,cAAmB0b,GAAMG,EAAK3V,EAAGvH,QAAQI,QAAoB4W,EAAKvhB,KAAKynB,EAAGtiB,QAAY2I,GAAKyT,EAAKzgB,SAAWgN,GAA3DwZ,GAAK,IAAoE,MAAOI,GAAOH,GAAK,EAAMC,EAAKE,UAAiB,IAAWJ,GAAsB,MAAhBxV,EAAW,QAAWA,EAAW,iBAAiB,GAAIyV,EAAI,MAAMC,GAAQ,OAAOjG,EAJjVoG,CAAsB/R,EAAK9H,IAE5F,WAA8B,MAAM,IAAI9B,UAAU,wDAFgDgc,GCKnF,SAAS4Y,GAAgBC,EAAMC,GAI5C,OADAD,EAAOA,GAAQ,GACR,IAAI57B,OAAO,OAAS67B,EAAqB,MAAMzxB,KAAKwxB,GCP7D,IAAIE,GAA6B,CAAC,SAAU,eAAgB,YAAa,cAAe,OAAQ,kBAAmB,QAAS,MAAO,aAEpH,SAASC,GAAc5yB,EAAOrO,EAASsB,GAMpD,GAHAtB,EAAUA,GAAW,GAGhBqO,EAAMstB,QAAX,EAIAr6B,EAAW,IAAI25B,GAAS35B,IACf26B,oBAAoB5tB,EAAMstB,QAASttB,EAAMkwB,oBAClD,IAAI2B,EAAiBlgC,EAAQw7B,GAAKntB,EAAM6xB,eAAiB7xB,EAAM6yB,MAI/D,GAAKL,GAAgBX,EAAgB5+B,EAASo7B,yBAA9C,CAKA,GAAIyE,GAAoBjB,EAAgB,aAAc5+B,GAKpD,OAAIA,EAAS3C,KAAK,WAAmD,KAAtC2C,EAAS3C,KAAK,UAAUoa,UAC9C,uBAMJzX,EAAS3C,KAAK,UAQfwiC,GAAoBjB,EAAgB,SAAU5+B,GACzC,uBAGF,aAXE,uBAcX,IAAK,IAAIyQ,EAAK,EAAGqvB,EAAwBJ,GAA4BjvB,EAAKqvB,EAAsBrgC,OAAQgR,IAAM,CAC5G,IAAIpT,EAAOyiC,EAAsBrvB,GAEjC,GAAIovB,GAAoBjB,EAAgBvhC,EAAM2C,GAC5C,OAAO3C,KAIN,SAASwiC,GAAoBjB,EAAgBvhC,EAAM2C,GAGxD,UAFA3C,EAAO2C,EAAS3C,KAAKA,MAEPA,EAAKoa,eAUfpa,EAAKg+B,mBAAqBh+B,EAAKg+B,kBAAkBv6B,QAAQ89B,EAAen/B,QAAU,IAI/E8/B,GAAgBX,EAAgBvhC,EAAKoa,YCxEvC,IAAIsoB,GAAsB,SAClB,SAASC,GAAgCjC,EAAQrB,EAAQ4B,GACnE,IAAC2B,EAAyB3B,EAAK2B,uBAC9BC,EAAqB5B,EAAK4B,mBACZ5B,EAAK6B,YACR7B,EAAKt+B,SACpB,IAAIogC,EAAkBrC,EAAOp6B,QAAQ,IAAIC,OAAO84B,EAAOjlB,WAAYwoB,EAAyBvD,EAAO2D,sBAanGH,GAAsBxD,EAAOE,+BAAiCF,EAAOA,SAAS/4B,QAAQo8B,GAAqBrD,EAAOE,gCAAkCF,EAAOA,UAE3J,OAAIuD,ECKS,SAA0CG,GACvD,OAAOA,EAAgBz8B,QAAQ,IAAIC,OAAO,IAAIxC,OAAOy3B,GAAmB,MAAO,KAAM,KAAKze,ODLjFkmB,CAAiCF,GAGnCA,EEnBT,IAAIG,GAA4B,yCCThC,SAASC,GAAgB3zB,EAAKnK,EAAKoB,GAAiK,OAApJpB,KAAOmK,EAAO1O,OAAOoB,eAAesN,EAAKnK,EAAK,CAAEoB,MAAOA,EAAOpE,YAAY,EAAMC,cAAc,EAAM05B,UAAU,IAAkBxsB,EAAInK,GAAOoB,EAAgB+I,EAW3M,IAAI4zB,GAAkB,CACpBC,gBAAiB,SAAyBN,EAAiBO,EAAW3gC,GACpE,MAAO,GAAGoB,OAAOg/B,GAAiBh/B,OAAOpB,EAAS47B,OAAOx6B,OAAOu/B,KAgBrD,SAASC,GAAa7zB,EAAO2vB,EAAQh+B,EAASsB,GAU3D,GAPEtB,EADEA,EAjCN,SAAuBpB,GAAU,IAAK,IAAImP,EAAI,EAAGA,EAAIC,UAAUjN,OAAQgN,IAAK,CAAE,IAAIo0B,EAAyB,MAAhBn0B,UAAUD,GAAaC,UAAUD,GAAK,GAAQq0B,EAAU3iC,OAAOC,KAAKyiC,GAAqD,mBAAjC1iC,OAAO4iC,wBAAwCD,EAAUA,EAAQ1/B,OAAOjD,OAAO4iC,sBAAsBF,GAAQlgC,QAAO,SAAUqgC,GAAO,OAAO7iC,OAAO8iC,yBAAyBJ,EAAQG,GAAKthC,gBAAmBohC,EAAQxiC,SAAQ,SAAUoE,GAAO89B,GAAgBljC,EAAQoF,EAAKm+B,EAAOn+B,OAAa,OAAOpF,EAkC1c4jC,CAAc,GAAIT,GAAiB/hC,GAEnC+hC,GAGZzgC,EAAW,IAAI25B,GAAS35B,GAEpB+M,EAAMstB,SAA6B,QAAlBttB,EAAMstB,QAAmB,CAE5C,IAAKr6B,EAAS46B,WAAW7tB,EAAMstB,SAC7B,MAAM,IAAIvmB,MAAM,oBAAoB1S,OAAO2L,EAAMstB,UAGnDr6B,EAASq6B,QAAQttB,EAAMstB,aAClB,CAAA,IAAIttB,EAAMkwB,mBAEV,OAAOlwB,EAAM6yB,OAAS,GAD3B5/B,EAAS26B,oBAAoB5tB,EAAMkwB,oBAGrC,IAIIc,EAJAd,EAAqBj9B,EAASi9B,qBAC9B2B,EAAiBlgC,EAAQw7B,GAAKntB,EAAM6xB,eAAiB7xB,EAAM6yB,MAK/D,OAAQlD,GACN,IAAK,WAGH,OAAKkC,EAKEuC,GADPpD,EAASqD,GAAqBxC,EAAgB7xB,EAAMozB,YAAa,WAAYngC,EAAUtB,GAC3DqO,EAAM6uB,IAAK57B,EAAUtB,EAAQgiC,iBAJhD,GAMX,IAAK,gBAGH,OAAK9B,GAILb,EAASqD,GAAqBxC,EAAgB,KAAM,gBAAiB5+B,EAAUtB,GAExEyiC,GADPpD,EAAS,IAAI38B,OAAO67B,EAAoB,KAAK77B,OAAO28B,GACxBhxB,EAAM6uB,IAAK57B,EAAUtB,EAAQgiC,kBALhD,IAAIt/B,OAAO67B,GAOtB,IAAK,QAEH,MAAO,IAAI77B,OAAO67B,GAAoB77B,OAAOw9B,GAE/C,IAAK,UACH,ONLC,SAAuByC,GAC5B,IAAItD,EAASsD,EAAMtD,OACfnC,EAAMyF,EAAMzF,IAEhB,IAAKmC,EACH,MAAO,GAGT,GAAkB,MAAdA,EAAO,GACT,MAAM,IAAIjqB,MAAM,6DAGlB,MAAO,OAAO1S,OAAO28B,GAAQ38B,OAAOw6B,EAAM,QAAUA,EAAM,IMP/C0F,CAAc,CACnBvD,OAAQ,IAAI38B,OAAO67B,GAAoB77B,OAAOw9B,GAC9ChD,IAAK7uB,EAAM6uB,MAOf,IAAK,MACH,IAAKl9B,EAAQ6iC,YACX,OAGF,IAAInB,EA2DV,SAAmBxB,EAAgBuB,EAAalD,EAAoBsE,EAAavhC,GAG/E,GAF6Bg9B,GAAsBuE,EAAavhC,EAASA,YAE1Ci9B,EAAoB,CACjD,IAAImD,EAAkBgB,GAAqBxC,EAAgBuB,EAAa,WAAYngC,GAGpF,MAA2B,MAAvBi9B,EACKA,EAAqB,IAAMmD,EAY7BA,EAGT,IAAIoB,EDvKS,SAAsBnH,EAASE,EAAav6B,GACzD,IAAIyhC,EAAkB,IAAI9H,GAAS35B,GAGnC,OAFAyhC,EAAgB9G,oBAAoBN,EAASE,GAEzCkH,EAAgBtG,mBACXsG,EAAgBtG,mBAGrBoF,GAA0BvyB,KAAKyzB,EAAgBvG,aAC1CuG,EAAgBvG,iBADzB,EC+JgBwG,CAAaH,OAAankC,EAAW4C,EAASA,UAE9D,GAAIwhC,EACF,MAAO,GAAGpgC,OAAOogC,EAAW,KAAKpgC,OAAO67B,EAAoB,KAAK77B,OAAOggC,GAAqBxC,EAAgB,KAAM,gBAAiB5+B,IArF5G2hC,CAAU/C,EAAgB7xB,EAAMozB,YAAalD,EAAoBv+B,EAAQ6iC,YAAavhC,GAC5G,OAAOmhC,GAAaf,EAAiBrzB,EAAM6uB,IAAK57B,EAAUtB,EAAQgiC,iBAEpE,QACE,MAAM,IAAI5sB,MAAM,0DAA+D1S,OAAOs7B,EAAQ,OAIpG,SAAS0E,GAAqBrD,EAAQoC,EAAayB,EAAU5hC,EAAUtB,GACrE,IAAIg+B,EAcN,SAA+BmF,EAAkBC,GAC1C,IAAI1D,EAAYyD,EAAkBxD,EAAW96B,MAAMC,QAAQ46B,GAAY3tB,EAAK,EAAjF,IAAoF2tB,EAAYC,EAAWD,EAAYA,EAAU9zB,OAAOC,cAAe,CACrJ,IAAI+zB,EAEJ,GAAID,EAAU,CACZ,GAAI5tB,GAAM2tB,EAAU3+B,OAAQ,MAC5B6+B,EAAOF,EAAU3tB,SACZ,CAEL,IADAA,EAAK2tB,EAAUl1B,QACRI,KAAM,MACbg1B,EAAO7tB,EAAG3M,MAGZ,IAAI44B,EAAS4B,EAGb,GAAI5B,EAAOqF,wBAAwBtiC,OAAS,EAAG,CAE7C,IAAIuiC,EAA2BtF,EAAOqF,wBAAwBrF,EAAOqF,wBAAwBtiC,OAAS,GAEtG,GAAyD,IAArDqiC,EAAgBlmB,OAAOomB,GACzB,SAKJ,GAAIzC,GAAgBuC,EAAiBpF,EAAOjlB,WAC1C,OAAOilB,GAzCEuF,CAAsBjiC,EAASs7B,UAAWyC,GAEvD,OAAKrB,EAIEsD,GAAgCjC,EAAQrB,EAAQ,CACrDuD,uBAAqC,kBAAb2B,EACxB1B,oBAAoBxD,EAAOG,2DAA4Dn+B,IAAsC,IAA3BA,EAAQ09B,eAC1G+D,YAAaA,EACbngC,SAAUA,IAPH+9B,EA2CX,SAASoD,GAAaf,EAAiBxE,EAAK57B,EAAU0gC,GACpD,OAAO9E,EAAM8E,EAAgBN,EAAiBxE,EAAK57B,GAAYogC,ECzJjE,SAASI,GAAgB3zB,EAAKnK,EAAKoB,GAAiK,OAApJpB,KAAOmK,EAAO1O,OAAOoB,eAAesN,EAAKnK,EAAK,CAAEoB,MAAOA,EAAOpE,YAAY,EAAMC,cAAc,EAAM05B,UAAU,IAAkBxsB,EAAInK,GAAOoB,EAAgB+I,EAI3M,SAASqsB,GAAkB57B,EAAQ67B,GAAS,IAAK,IAAI1sB,EAAI,EAAGA,EAAI0sB,EAAM15B,OAAQgN,IAAK,CAAE,IAAI2sB,EAAaD,EAAM1sB,GAAI2sB,EAAW15B,WAAa05B,EAAW15B,aAAc,EAAO05B,EAAWz5B,cAAe,EAAU,UAAWy5B,IAAYA,EAAWC,UAAW,GAAMl7B,OAAOoB,eAAejC,EAAQ87B,EAAW12B,IAAK02B,IAY7S,IAAI8I,GAEJ,WACE,SAASA,EAAYjF,EAAoB2B,EAAgB5+B,GAGvD,GApBJ,SAAyBqH,EAAUmxB,GAAe,KAAMnxB,aAAoBmxB,GAAgB,MAAM,IAAI7tB,UAAU,qCAkB5G8tB,CAAgBz7B,KAAMklC,IAEjBjF,EACH,MAAM,IAAItyB,UAAU,gDAGtB,IAAKi0B,EACH,MAAM,IAAIj0B,UAAU,+BAGtB,IAAK3K,EACH,MAAM,IAAI2K,UAAU,yBAGtB,IAAIw3B,EAAY,IAAIxI,GAAS35B,GAIzBoiC,GAAcnF,KAChBjgC,KAAKq9B,QAAU4C,EAEfkF,EAAU9H,QAAQ4C,GAElBA,EAAqBkF,EAAUlF,sBAUjCjgC,KAAKigC,mBAAqBA,EAC1BjgC,KAAK4hC,eAAiBA,EACtB5hC,KAAK+gC,OAAS,IAAM/gC,KAAKigC,mBAAqBjgC,KAAK4hC,eACnD5hC,KAAKgD,SAAWA,EAlDpB,IAAsBw4B,EAAae,EAAYC,EAyH7C,OAzHoBhB,EAqDP0J,EArDoB3I,EAqDP,CAAC,CACzB72B,IAAK,SACLoB,MAAO,SAAgB83B,GACrB5+B,KAAK4+B,IAAMA,IAEZ,CACDl5B,IAAK,aACLoB,MAAO,WACL,ORnES,SAA+BiJ,EAAOrO,EAASsB,GAQ5D,QANgB5C,IAAZsB,IACFA,EAAU,IAGZsB,EAAW,IAAI25B,GAAS35B,GAEpBtB,EAAQw7B,GAAI,CACd,IAAKntB,EAAMkwB,mBACT,MAAM,IAAInpB,MAAM,sCAGlB9T,EAAS26B,oBAAoB5tB,EAAMkwB,wBAC9B,CACL,IAAKlwB,EAAM6yB,MACT,OAAO,EAGT,GAAI7yB,EAAMstB,QAAS,CACjB,IAAKr6B,EAAS46B,WAAW7tB,EAAMstB,SAC7B,MAAM,IAAIvmB,MAAM,oBAAoB1S,OAAO2L,EAAMstB,UAGnDr6B,EAASq6B,QAAQttB,EAAMstB,aAClB,CACL,IAAKttB,EAAMkwB,mBACT,MAAM,IAAInpB,MAAM,sCAGlB9T,EAAS26B,oBAAoB5tB,EAAMkwB,qBAIvC,GAAIj9B,EAASq7B,kBACX,OAAOiE,GAAiBvyB,EAAM6yB,OAAS7yB,EAAM6xB,eAAgB5+B,GAQ7D,GAAI+M,EAAMkwB,oBAAsBj9B,EAASqiC,2BAA2Bt1B,EAAMkwB,oBAGxE,OAAO,EAEP,MAAM,IAAInpB,MAAM,kGQmBTwrB,CAAiBtiC,KAAM,CAC5Bk9B,IAAI,GACHl9B,KAAKgD,YAET,CACD0C,IAAK,UACLoB,MAAO,WACL,OC3CS,SAAuBiJ,EAAOrO,EAASsB,GAOpD,OAJAtB,EAAUA,GAAW,GACrBsB,EAAW,IAAI25B,GAAS35B,KAGnB+M,EAAMstB,UAIXr6B,EAAS26B,oBAAoB5tB,EAAMstB,QAASttB,EAAMkwB,oBAG9Cj9B,EAAS07B,gBACiDt+B,IAArDuiC,GAAc5yB,EAAOrO,EAASsB,EAASA,UAMzCu/B,GADe7gC,EAAQw7B,GAAKntB,EAAM6xB,eAAiB7xB,EAAM6yB,MACxB5/B,EAASo7B,0BDsBtCkH,CAActlC,KAAM,CACzBk9B,IAAI,GACHl9B,KAAKgD,YAET,CACD0C,IAAK,kBACLoB,MAAO,WAEL,OADe,IAAI61B,GAAS38B,KAAKgD,UACjBqiC,2BAA2BrlC,KAAKigC,sBAEjD,CACDv6B,IAAK,UACLoB,MAAO,SAAiBy+B,GACtB,OAAOvlC,KAAK+gC,SAAWwE,EAAYxE,QAAU/gC,KAAK4+B,MAAQ2G,EAAY3G,MAOvE,CACDl5B,IAAK,UACLoB,MAAO,WACL,OAAO67B,GAAc3iC,KAAM,CACzBk9B,IAAI,GACHl9B,KAAKgD,YAET,CACD0C,IAAK,SACLoB,MAAO,SAAgB64B,EAASj+B,GAC9B,OAAOkiC,GAAa5jC,KAAM2/B,EAASj+B,EA1GzC,SAAuBpB,GAAU,IAAK,IAAImP,EAAI,EAAGA,EAAIC,UAAUjN,OAAQgN,IAAK,CAAE,IAAIo0B,EAAyB,MAAhBn0B,UAAUD,GAAaC,UAAUD,GAAK,GAAQq0B,EAAU3iC,OAAOC,KAAKyiC,GAAqD,mBAAjC1iC,OAAO4iC,wBAAwCD,EAAUA,EAAQ1/B,OAAOjD,OAAO4iC,sBAAsBF,GAAQlgC,QAAO,SAAUqgC,GAAO,OAAO7iC,OAAO8iC,yBAAyBJ,EAAQG,GAAKthC,gBAAmBohC,EAAQxiC,SAAQ,SAAUoE,GAAO89B,GAAgBljC,EAAQoF,EAAKm+B,EAAOn+B,OAAa,OAAOpF,EA0Gra4jC,CAAc,GAAIxiC,EAAS,CACtEw7B,IAAI,IACD,CACHA,IAAI,GACHl9B,KAAKgD,YAET,CACD0C,IAAK,iBACLoB,MAAO,SAAwBpF,GAC7B,OAAO1B,KAAK0/B,OAAO,WAAYh+B,KAEhC,CACDgE,IAAK,sBACLoB,MAAO,SAA6BpF,GAClC,OAAO1B,KAAK0/B,OAAO,gBAAiBh+B,KAErC,CACDgE,IAAK,SACLoB,MAAO,SAAgBpF,GACrB,OAAO1B,KAAK0/B,OAAO,UAAWh+B,MArH8B66B,GAAYL,GAAkBV,EAAYz6B,UAAWw7B,GAAiBC,GAAaN,GAAkBV,EAAagB,GAyH3K0I,EA7GT,GAkHIE,GAAgB,SAAuBt+B,GACzC,MAAO,aAAakK,KAAKlK,IErIvB0+B,GAA0B,IAAI5+B,OAAO,oBCW1B,SAAS6+B,GAAsB1E,EAAQ/9B,GAUpD,IAAI0iC,ECVS,SAA2D3E,EAAQ/9B,GAChF,GAAI+9B,GAAU/9B,EAAS66B,cAAcU,2BAA4B,CAI/D,IAAIoH,EAAgB,IAAI/+B,OAAO,OAAS5D,EAAS66B,cAAcU,2BAA6B,KACxFqH,EAAcD,EAAcE,KAAK9E,GAErC,GAAI6E,EAAa,CACf,IAAIhE,EACAuB,EAqDA/D,EApCA0G,EAAsBF,EAAYnjC,OAAS,EAC3CsjC,EAAoBD,EAAsB,GAAKF,EAAYE,GAE/D,GAAI9iC,EAASw7B,+BAAiCuH,EAC5CnE,EAAiBb,EAAOp6B,QAAQg/B,EAAe3iC,EAASw7B,+BAGpDsH,EAAsB,IACxB3C,EAAcyC,EAAY,QAQzB,CAMD,IAAII,EAA6BJ,EAAY,GAC7ChE,EAAiBb,EAAO3iB,MAAM4nB,EAA2BvjC,QAGrDsjC,IACF5C,EAAcyC,EAAY,IAWhC,GAAIG,EAAmB,CACrB,IAAIE,EAA0ClF,EAAOj9B,QAAQ8hC,EAAY,IAC5C7E,EAAO3iB,MAAM,EAAG6nB,KAOdjjC,EAAS66B,cAAcuB,mBACpDA,EAAiBp8B,EAAS66B,cAAcuB,uBAG1CA,EAAiBwG,EAAY,GAG/B,MAAO,CACLhE,eAAgBA,EAChBxC,eAAgBA,EAChB+D,YAAaA,IAKnB,MAAO,CACLvB,eAAgBb,GDhFUmF,CAAkDnF,EAAQ/9B,GAClF4+B,EAAiB8D,EAAsB9D,eACvCuB,EAAcuC,EAAsBvC,YAExC,IAwDF,SAAqCpC,EAAQoF,EAA2BnjC,GAGtE,GAAIu/B,GAAgBxB,EAAQ/9B,EAASo7B,2BAA6BmE,GAAgB4D,EAA2BnjC,EAASo7B,yBACpH,OAAO,EAQT,OAAO,EApEFgI,CAA4BrF,EAAQa,EAAgB5+B,GAEvD,MAAO,CACL4+B,eAAgBb,GAapB,GAAIA,EAAOt+B,SAAWm/B,EAAen/B,QAAU0gC,EAAcA,EAAY1gC,OAAS,IAG5EO,EAASq7B,kBAMX,OAAQsD,GAAkBC,EAAgB5+B,IACxC,IAAK,YACL,IAAK,iBAGH,MAAO,CACL4+B,eAAgBb,GAM1B,MAAO,CACLa,eAAgBA,EAChBuB,YAAaA,GE3CF,SAASkD,GAA0BtF,EAAQ1D,EAASE,EAAav6B,GAC9E,IAAK+9B,EACH,MAAO,GAUT,GAAkB,MAAdA,EAAO,GAAY,CAGrB,IAAIuF,EHnCO,SAAwBvF,EAAQ1D,EAASE,EAAav6B,GACnE,GAAKq6B,EAAL,CAKA,IAAIoH,EAAkB,IAAI9H,GAAS35B,GACnCyhC,EAAgB9G,oBAAoBN,EAASE,GAC7C,IAAIgJ,EAAmB,IAAI3/B,OAAO69B,EAAgBvG,aAElD,GAAwC,IAApC6C,EAAOniB,OAAO2nB,GAAlB,CAUA,IAAIC,GALJzF,EAASA,EAAO3iB,MAAM2iB,EAAOhkB,MAAMwpB,GAAkB,GAAG9jC,SAK7Bsa,MAAMyoB,IAEjC,KAAIgB,GAAqC,MAApBA,EAAc,IAAcA,EAAc,GAAG/jC,OAAS,GAChD,MAArB+jC,EAAc,IAKpB,OAAOzF,IGOkB0F,CAAe1F,EAAQ1D,EAASE,EAAav6B,GAIpE,IAAIsjC,GAAoBA,IAAqBvF,EAEtC,CAKL,GAAI1D,GAAWE,EAAa,CAC1B,IAAImJ,ECnCG,SAAyE3F,EAAQ1D,EAASE,EAAav6B,GACpH,IAAIi9B,EAAqB5C,EAAU2C,GAAsB3C,EAASr6B,GAAYu6B,EAE9E,GAA2C,IAAvCwD,EAAOj9B,QAAQm8B,GAA2B,EAC5Cj9B,EAAW,IAAI25B,GAAS35B,IACf26B,oBAAoBN,EAASE,GACtC,IAAIoJ,EAAwB5F,EAAO3iB,MAAM6hB,EAAmBx9B,QAGxDmkC,EADwBnB,GAAsBkB,EAAuB3jC,GACf4+B,eAGtDA,EADyB6D,GAAsB1E,EAAQ/9B,GACf4+B,eAU5C,IAAKW,GAAgBX,EAAgB5+B,EAASo7B,0BAA4BmE,GAAgBqE,EAA+B5jC,EAASo7B,0BAA4E,aAAhDuD,GAAkBC,EAAgB5+B,GAC9L,MAAO,CACLi9B,mBAAoBA,EACpBc,OAAQ4F,GAKd,MAAO,CACL5F,OAAQA,GDIwB8F,CAAgE9F,EAAQ1D,EAASE,EAAav6B,GACtHi9B,EAAqByG,EAAsBzG,mBAC3C6G,EAAgBJ,EAAsB3F,OAE1C,GAAId,EACF,MAAO,CACLA,mBAAoBA,EACpBc,OAAQ+F,GAKd,MAAO,CACL/F,OAAQA,GApBVA,EAAS,IAAMuF,EA0BnB,GAAkB,MAAdvF,EAAO,GACT,MAAO,GAGT/9B,EAAW,IAAI25B,GAAS35B,GAYxB,IAFA,IAAIyM,EAAI,EAEDA,EAAI,GvB/EwB,GuB+EQA,GAAKsxB,EAAOt+B,QAAQ,CAC7D,IAAIskC,EAAsBhG,EAAO3iB,MAAM,EAAG3O,GAE1C,GAAIzM,EAAS+6B,eAAegJ,GAE1B,OADA/jC,EAAS26B,oBAAoBoJ,GACtB,CACL9G,mBAAoB8G,EACpBhG,OAAQA,EAAO3iB,MAAM3O,IAIzBA,IAGF,MAAO,GEhGM,SAASu3B,GAAwBzJ,EAAa0J,EAAqBjkC,GAShF,IAAIkkC,EAAoBlkC,EAASw6B,8BAA8BD,GAE/D,GAAK2J,EAML,OAAiC,IAA7BA,EAAkBzkC,OACbykC,EAAkB,GAM7B,SAA+BA,EAAmBD,EAAqBjkC,GAErEA,EAAW,IAAI25B,GAAS35B,GAEnB,IAAIo+B,EAAY8F,EAAmB7F,EAAW96B,MAAMC,QAAQ46B,GAAY3tB,EAAK,EAAlF,IAAqF2tB,EAAYC,EAAWD,EAAYA,EAAU9zB,OAAOC,cAAe,CACtJ,IAAI+zB,EAEJ,GAAID,EAAU,CACZ,GAAI5tB,GAAM2tB,EAAU3+B,OAAQ,MAC5B6+B,EAAOF,EAAU3tB,SACZ,CAEL,IADAA,EAAK2tB,EAAUl1B,QACRI,KAAM,MACbg1B,EAAO7tB,EAAG3M,MAGZ,IAAIu2B,EAAUiE,EAMd,GALAt+B,EAASq6B,QAAQA,GAKbr6B,EAASy7B,iBACX,GAAIwI,GAAgF,IAAzDA,EAAoBroB,OAAO5b,EAASy7B,iBAC7D,OAAOpB,OAIN,GAAIsF,GAAc,CACnBC,MAAOqE,EACP5J,QAASA,QACRj9B,EAAW4C,EAASA,UACrB,OAAOq6B,GAnCN8J,CAAsBD,EAAmBD,EAAqBjkC,EAASA,UCFhF,IAEIokC,GAA6B,IAAIxgC,OAAO,oBAIxCygC,GAAiC,IAAIzgC,OAAO,sBAajC,SAASoe,GAAMwd,EAAM9gC,EAASsB,GAM3C,GAHAtB,EAAUA,GAAW,GACrBsB,EAAW,IAAI25B,GAAS35B,GAEpBtB,EAAQ4lC,iBAAmBtkC,EAAS46B,WAAWl8B,EAAQ4lC,gBAAiB,CAC1E,GAAI5lC,EAAQw7B,GACV,MAAM,IAAI5B,GAAW,mBAGvB,MAAM,IAAIxkB,MAAM,oBAAoB1S,OAAO1C,EAAQ4lC,iBAIrD,IAAIC,EAsJN,SAAoB/E,EAAMtF,EAAIsK,GAE5B,GAAIhF,GAAiC,IAAzBA,EAAK1+B,QAAQ,QACvB,OflMG,SAAsB0+B,GAC3B,IAAIzB,EACAnC,EAIKwC,GAFToB,EAAOA,EAAK77B,QAAQ,QAAS,SAEHgK,MAAM,KAAM0wB,EAAW96B,MAAMC,QAAQ46B,GAAY3tB,EAAK,EAAhF,IAAmF2tB,EAAYC,EAAWD,EAAYA,EAAU9zB,OAAOC,cAAe,CACpJ,IAAI+zB,EAEJ,GAAID,EAAU,CACZ,GAAI5tB,GAAM2tB,EAAU3+B,OAAQ,MAC5B6+B,EAAOF,EAAU3tB,SACZ,CAEL,IADAA,EAAK2tB,EAAUl1B,QACRI,KAAM,MACbg1B,EAAO7tB,EAAG3M,MAGZ,IAGI2gC,EAAe7d,GAHR0X,EAEY3wB,MAAM,KACkB,GAC3ClP,EAAOgmC,EAAa,GACpB3gC,EAAQ2gC,EAAa,GAEzB,OAAQhmC,GACN,IAAK,MACHs/B,EAASj6B,EACT,MAEF,IAAK,MACH83B,EAAM93B,EACN,MAEF,IAAK,gBAGc,MAAbA,EAAM,KACRi6B,EAASj6B,EAAQi6B,IAQzB,IAAKD,GAAoBC,GACvB,MAAO,GAGT,IAAI10B,EAAS,CACX00B,OAAQA,GAOV,OAJInC,IACFvyB,EAAOuyB,IAAMA,GAGRvyB,EewIEq7B,CAAalF,GAGtB,IAAIzB,EA1CN,SAAqCyB,EAAMgF,EAASG,GAClD,IAAKnF,EACH,OAGF,GAAIA,EAAK//B,OAzJmB,IAyJe,CACzC,GAAIklC,EACF,MAAM,IAAIrM,GAAW,YAGvB,OAGF,IAAgB,IAAZkM,EACF,OAAOhF,EAIT,IAAIoF,EAAWpF,EAAK5jB,OAAOwoB,IAE3B,GAAIQ,EAAW,EACb,OAGF,OAAOpF,EACNpkB,MAAMwpB,GACNjhC,QAAQ0gC,GAAgC,IAgB5BQ,CAA4BrF,EAAMgF,EAAStK,GAExD,IAAK6D,EACH,MAAO,GAGT,IAAKD,GAAoBC,GACvB,OtB1JG,SAAkCA,GACvC,OAAOJ,GAAiC3vB,KAAK+vB,GsByJvC+G,CAAyB/G,GACpB,CACLl4B,MAAO,aAIJ,GAKT,IAAIk/B,ErB/NS,SAA0BhH,GACvC,IAAIiH,EAAQjH,EAAOniB,OAAOoiB,IAE1B,GAAIgH,EAAQ,EACV,MAAO,GAST,IAJA,IAAIC,EAAyBlH,EAAO3iB,MAAM,EAAG4pB,GACzC3d,EAAU0W,EAAOhkB,MAAMikB,IACvBvxB,EAAI,EAEDA,EAAI4a,EAAQ5nB,QAAQ,CACzB,GAAI4nB,EAAQ5a,GACV,MAAO,CACLsxB,OAAQkH,EACRrJ,IAAKvU,EAAQ5a,IAIjBA,KqB0M0By4B,CAAiBnH,GAE7C,GAAIgH,EAAsBnJ,IACxB,OAAOmJ,EAGT,MAAO,CACLhH,OAAQA,GArLQoH,CAAW3F,EAAM9gC,EAAQw7B,GAAIx7B,EAAQ8lC,SACnDY,EAAuBb,EAAYxG,OACnCnC,EAAM2I,EAAY3I,IAClB/1B,EAAQ0+B,EAAY1+B,MAGxB,IAAKu/B,EAAsB,CACzB,GAAI1mC,EAAQw7B,GAAI,CACd,GAAc,cAAVr0B,EACF,MAAM,IAAIyyB,GAAW,aAGvB,MAAM,IAAIA,GAAW,gBAGvB,MAAO,GAGT,IAAI+M,EAiMN,SAA0BD,EAAsBd,EAAgBgB,EAAoBtlC,GAElF,IAKIq6B,EALAqJ,EAAwBL,GAA0BnF,GAA2BkH,GAAuBd,EAAgBgB,EAAoBtlC,EAASA,UACjJi9B,EAAqByG,EAAsBzG,mBAC3Cc,EAAS2F,EAAsB3F,OAKnC,GAAId,EACFj9B,EAAS26B,oBAAoBsC,OAG1B,CAAA,IAAIc,IAAWuG,IAAkBgB,EAe7B,MAAO,GAdZtlC,EAAS26B,oBAAoB2J,EAAgBgB,GAEzChB,IACFjK,EAAUiK,GAUZrH,EAAqBqI,GAAsBtI,GAAsBsH,EAAgBtkC,EAASA,UAG9F,IAAK+9B,EACH,MAAO,CACLd,mBAAoBA,GAIxB,IAAIyF,EAAwBD,GAAsBvE,GAA2BH,GAAS/9B,GAClF4+B,EAAiB8D,EAAsB9D,eACvCuB,EAAcuC,EAAsBvC,YAYpCoF,EAAevB,GAAwB/G,EAAoB2B,EAAgB5+B,GAE3EulC,IACFlL,EAAUkL,EAGW,QAAjBA,GAIFvlC,EAASq6B,QAAQA,IAIrB,MAAO,CACLA,QAASA,EACT4C,mBAAoBA,EACpB2B,eAAgBA,EAChBuB,YAAaA,GArQSqF,CAAiBJ,EAAsB1mC,EAAQ4lC,eAAgB5lC,EAAQ4mC,mBAAoBtlC,GAC/Gq6B,EAAUgL,EAAkBhL,QAC5BuE,EAAiByG,EAAkBzG,eACnC3B,EAAqBoI,EAAkBpI,mBACvCkD,EAAckF,EAAkBlF,YAEpC,IAAKngC,EAASylC,2BAA4B,CACxC,GAAI/mC,EAAQw7B,GACV,MAAM,IAAI5B,GAAW,mBAGvB,MAAO,GAIT,IAAKsG,GAAkBA,EAAen/B,O1BxFR,E0BwFqC,CAIjE,GAAIf,EAAQw7B,GACV,MAAM,IAAI5B,GAAW,aAIvB,MAAO,GAYT,GAAIsG,EAAen/B,O1B1GW,G0B0GkB,CAC9C,GAAIf,EAAQw7B,GACV,MAAM,IAAI5B,GAAW,YAIvB,MAAO,GAGT,GAAI55B,EAAQw7B,GAAI,CACd,IAAIqI,EAAc,IAAIL,GAAYjF,EAAoB2B,EAAgB5+B,EAASA,UAc/E,OAZIq6B,IACFkI,EAAYlI,QAAUA,GAGpB8F,IACFoC,EAAYpC,YAAcA,GAGxBvE,IACF2G,EAAY3G,IAAMA,GAGb2G,EAMT,IAAImD,KAAShnC,EAAQinC,SAAW3lC,EAASylC,2BAA6BpL,IAAWkF,GAAgBX,EAAgB5+B,EAASo7B,yBAE1H,OAAK18B,EAAQinC,SAKN,CACLtL,QAASA,EACT4C,mBAAoBA,EACpBkD,YAAaA,EACbuF,MAAOA,EACPE,WAAUF,MAAoC,IAArBhnC,EAAQinC,WAAqB3lC,EAASq7B,oBAAqBiE,GAAiBV,EAAgB5+B,IACrH4/B,MAAOhB,EACPhD,IAAKA,GAXE8J,EAsGX,SAAgBrL,EAASuE,EAAgBhD,GACvC,IAAIvyB,EAAS,CACXgxB,QAASA,EACTuF,MAAOhB,GAGLhD,IACFvyB,EAAOuyB,IAAMA,GAGf,OAAOvyB,EAhHUA,CAAOgxB,EAASuE,EAAgBhD,GAAO,GC7I1D,SAAS4E,GAAgB3zB,EAAKnK,EAAKoB,GAAiK,OAApJpB,KAAOmK,EAAO1O,OAAOoB,eAAesN,EAAKnK,EAAK,CAAEoB,MAAOA,EAAOpE,YAAY,EAAMC,cAAc,EAAM05B,UAAU,IAAkBxsB,EAAInK,GAAOoB,EAAgB+I,EAG5L,SAAS24B,GAAiBhG,EAAM9gC,EAASsB,GACtD,OAAO6lC,GAAYrG,EANrB,SAAuBliC,GAAU,IAAK,IAAImP,EAAI,EAAGA,EAAIC,UAAUjN,OAAQgN,IAAK,CAAE,IAAIo0B,EAAyB,MAAhBn0B,UAAUD,GAAaC,UAAUD,GAAK,GAAQq0B,EAAU3iC,OAAOC,KAAKyiC,GAAqD,mBAAjC1iC,OAAO4iC,wBAAwCD,EAAUA,EAAQ1/B,OAAOjD,OAAO4iC,sBAAsBF,GAAQlgC,QAAO,SAAUqgC,GAAO,OAAO7iC,OAAO8iC,yBAAyBJ,EAAQG,GAAKthC,gBAAmBohC,EAAQxiC,SAAQ,SAAUoE,GAAO89B,GAAgBljC,EAAQoF,EAAKm+B,EAAOn+B,OAAa,OAAOpF,EAM7b4jC,CAAc,GAAIxiC,EAAS,CAClDw7B,IAAI,IACFl6B,GCRN,SAAS4M,GAAQC,GAAwT,OAAtOD,GAArD,mBAAXtC,QAAoD,iBAApBA,OAAOC,SAAmC,SAAiBsC,GAAO,cAAcA,GAA2B,SAAiBA,GAAO,OAAOA,GAAyB,mBAAXvC,QAAyBuC,EAAItK,cAAgB+H,QAAUuC,IAAQvC,OAAOvM,UAAY,gBAAkB8O,GAAiBD,GAAQC,GAIxV,SAAS2zB,GAAgB3zB,EAAKnK,EAAKoB,GAAiK,OAApJpB,KAAOmK,EAAO1O,OAAOoB,eAAesN,EAAKnK,EAAK,CAAEoB,MAAOA,EAAOpE,YAAY,EAAMC,cAAc,EAAM05B,UAAU,IAAkBxsB,EAAInK,GAAOoB,EAAgB+I,EAE3M,SAAS+Z,GAAerS,EAAK9H,GAAK,OAMlC,SAAyB8H,GAAO,GAAIhR,MAAMC,QAAQ+Q,GAAM,OAAOA,EANtByR,CAAgBzR,IAIzD,SAA+BA,EAAK9H,GAAK,IAAIyT,EAAO,GAAQ+F,GAAK,EAAUC,GAAK,EAAWC,OAAK/oB,EAAW,IAAM,IAAK,IAAiCgpB,EAA7B3V,EAAK8D,EAAIjK,OAAOC,cAAmB0b,GAAMG,EAAK3V,EAAGvH,QAAQI,QAAoB4W,EAAKvhB,KAAKynB,EAAGtiB,QAAY2I,GAAKyT,EAAKzgB,SAAWgN,GAA3DwZ,GAAK,IAAoE,MAAOI,GAAOH,GAAK,EAAMC,EAAKE,UAAiB,IAAWJ,GAAsB,MAAhBxV,EAAW,QAAWA,EAAW,iBAAiB,GAAIyV,EAAI,MAAMC,GAAQ,OAAOjG,EAJjVoG,CAAsB/R,EAAK9H,IAE5F,WAA8B,MAAM,IAAI9B,UAAU,wDAFgDgc,GAiB3F,SAASmf,GAAmB/oC,GACjC,IAOIyiC,EACA9gC,EACAsB,EARA+lC,EAAyBnf,GADDrjB,MAAMxF,UAAUqd,MAAMxQ,KAAK7N,GACY,GAC/DipC,EAAQD,EAAuB,GAC/BE,EAAQF,EAAuB,GAC/BG,EAAQH,EAAuB,GAC/BI,EAAQJ,EAAuB,GAOnC,GAAqB,iBAAVC,EAEJ,MAAM,IAAIr7B,UAAU,wCAI3B,GALE60B,EAAOwG,EAKJC,GAA0B,iBAAVA,EAgBhB,CAAA,IAAIG,GAASH,GAOT,MAAM,IAAInyB,MAAM,4BAA4B1S,OAAO6kC,IANpDC,GACFxnC,EAAUunC,EACVjmC,EAAWkmC,GAEXlmC,EAAWimC,OApBXE,GACFznC,EAAUwnC,EACVlmC,EAAWmmC,IAEXznC,OAAUtB,EACV4C,EAAWkmC,GAGTD,IACFvnC,EAlDN,SAAuBpB,GAAU,IAAK,IAAImP,EAAI,EAAGA,EAAIC,UAAUjN,OAAQgN,IAAK,CAAE,IAAIo0B,EAAyB,MAAhBn0B,UAAUD,GAAaC,UAAUD,GAAK,GAAQq0B,EAAU3iC,OAAOC,KAAKyiC,GAAqD,mBAAjC1iC,OAAO4iC,wBAAwCD,EAAUA,EAAQ1/B,OAAOjD,OAAO4iC,sBAAsBF,GAAQlgC,QAAO,SAAUqgC,GAAO,OAAO7iC,OAAO8iC,yBAAyBJ,EAAQG,GAAKthC,gBAAmBohC,EAAQxiC,SAAQ,SAAUoE,GAAO89B,GAAgBljC,EAAQoF,EAAKm+B,EAAOn+B,OAAa,OAAOpF,EAkDxc4jC,CAAc,CACtBoD,eAAgB2B,GACfvnC,IAaP,MAAO,CACL8gC,KAAMA,EACN9gC,QAASA,EACTsB,SAAUA,GAMd,IAAIomC,GAAW,SAAkBt8B,GAC/B,MAAsB,WAAf8C,GAAQ9C,IC3EjB,SAAS02B,GAAgB3zB,EAAKnK,EAAKoB,GAAiK,OAApJpB,KAAOmK,EAAO1O,OAAOoB,eAAesN,EAAKnK,EAAK,CAAEoB,MAAOA,EAAOpE,YAAY,EAAMC,cAAc,EAAM05B,UAAU,IAAkBxsB,EAAInK,GAAOoB,EAAgB+I,EAK5L,SAASw5B,GAA2B7G,EAAM9gC,EAASsB,GAE5DtB,GAAWA,EAAQ4lC,iB3BknBlB,SAA4BjK,EAASr6B,GAG1C,YAAuC5C,IAAhC4C,EAAS6oB,UAAUwR,G2BrnBgBiM,CAAmB5nC,EAAQ4lC,eAAgBtkC,KACnFtB,EAVJ,SAAuBpB,GAAU,IAAK,IAAImP,EAAI,EAAGA,EAAIC,UAAUjN,OAAQgN,IAAK,CAAE,IAAIo0B,EAAyB,MAAhBn0B,UAAUD,GAAaC,UAAUD,GAAK,GAAQq0B,EAAU3iC,OAAOC,KAAKyiC,GAAqD,mBAAjC1iC,OAAO4iC,wBAAwCD,EAAUA,EAAQ1/B,OAAOjD,OAAO4iC,sBAAsBF,GAAQlgC,QAAO,SAAUqgC,GAAO,OAAO7iC,OAAO8iC,yBAAyBJ,EAAQG,GAAKthC,gBAAmBohC,EAAQxiC,SAAQ,SAAUoE,GAAO89B,GAAgBljC,EAAQoF,EAAKm+B,EAAOn+B,OAAa,OAAOpF,EAU1c4jC,CAAc,GAAIxiC,EAAS,CACnC4lC,oBAAgBlnC,KAKpB,IACE,OAAOooC,GAAiBhG,EAAM9gC,EAASsB,GACvC,MAAO6F,GAEP,KAAIA,aAAiByyB,IAEnB,MAAMzyB,GCpBG,SAASwgC,KACtB,IAAIE,EAAsBT,GAAmBp5B,WACzC8yB,EAAO+G,EAAoB/G,KAC3B9gC,EAAU6nC,EAAoB7nC,QAC9BsB,EAAWumC,EAAoBvmC,SAEnC,OAAOwmC,GAA4BhH,EAAM9gC,EAASsB,OCNzCymC,GAAkB,gBAStB,SAASC,GAAc5iC,EAAO6iC,GACjC,IACI,IAAIC,ECVL,WACN,OAAOxO,GAAayO,GAA6Bn6B,WDS3B25B,CAA2BviC,EAAO6iC,GAEjD,SADaC,MAAAA,OAA2C,EAASA,EAASnkC,WAG9E,MAAOoD,GAEH,OAAO,OEjBJihC,GAAmB,iBAKvB,SAASC,GAAejjC,GAE3B,MAAwB,iBAAVA,GAAsB6kB,GAAiB7kB,EAD7B,mECN5B3F,OAAOoB,iBAAwB,aAAc,CAC3CuE,OAAO,IAETgJ,UAsBA,SAAgBO,EAAK25B,GAGnB,OAFA,EAAI15B,EAAcH,SAASE,GAChB,IAAIzJ,OAAO,gBAAgBxC,OAAO6lC,EAAQD,GAAY,OACrDh5B,KAAKX,IAvBnB,IAAIC,EAEJ,SAAgCT,GAAO,OAAOA,GAAOA,EAAI0B,WAAa1B,EAAM,CAAEM,QAASN,GAFnEuB,CAAuBC,WAI3C,IAAI44B,EAAU,CACZC,IAAK,GACLC,IAAK,GACLC,KAAM,GACNC,OAAQ,GACRC,OAAQ,GACRC,OAAQ,IACRC,UAAW,GACXC,UAAW,GACXC,SAAU,GACVC,SAAU,GACVC,SAAU,GACVC,MAAO,EACPC,OAAQ,GASV56B,UAAiBJ,EAAQK,QACzBD,kBAAyBJ,EAAQK,6CChCtB46B,GAAU,SAMd,SAASC,GAAOlkC,EAAOkjC,GAC1B,MAAwB,iBAAVljC,GAAsBmkC,GAAgBnkC,EAAOkjC,sCCP/D7oC,OAAOoB,iBAAwB,aAAc,CAC3CuE,OAAO,IAETgJ,UAQA,SAAgBO,GACd,IAAI3O,EAAUgO,UAAUjN,OAAS,QAAsBrC,IAAjBsP,UAAU,GAAmBA,UAAU,GAAK,IAClF,EAAIY,EAAcH,SAASE,GAC3B,IAAI66B,EAAWC,EAIf,GAHAD,EAAWxpC,EAAQ0pC,eAAiBF,EAASvkC,QAAQ,IAAK,IAAMukC,IAChEA,EAAWxpC,EAAQ2pC,eAAiB,IAAIzkC,OAAOskC,GAAY,IAAItkC,OAAOskC,EAAU,MAElEl6B,KAAKX,GACjB,OAAO,EAMT,IAHA,IAAIi7B,EAASj7B,EAAI1J,QAAQ,IAAK,IAAI4f,cAC9BnE,EAAW,EAEN3S,EAAI,EAAGA,EAAI67B,EAAO7oC,OAAQgN,IAAK,CACtC,IAAI6J,EAAQgyB,EAAO77B,GACnB2S,IAAuB,MAAV9I,EAAgB,IAAMA,IAAU,EAAI7J,GAGnD,OAAO2S,EAAW,IAAO,GAzB3B,IAAI9R,EAEJ,SAAgCT,GAAO,OAAOA,GAAOA,EAAI0B,WAAa1B,EAAM,CAAEM,QAASN,GAFnEuB,CAAuBC,WAI3C,IAAI85B,EAAO,yBAwBXj7B,UAAiBJ,EAAQK,QACzBD,kBAAyBJ,EAAQK,6CClCtBo7B,GAAU,SAKd,SAASC,GAAO1kC,EAAOpF,GAC1B,MAAwB,iBAAVoF,GAAsB2kC,GAAgB3kC,EAAOpF,OCNpDgqC,GAAiB,eAIrB,SAASC,GAAa7kC,EAAOpF,GAChC,OAAOgjB,GAAU5d,EAAOpF,sCCL5BP,OAAOoB,iBAAwB,aAAc,CAC3CuE,OAAO,IAETgJ,UAYA,SAAmBO,GACjB,IAAI3O,EAAUgO,UAAUjN,OAAS,QAAsBrC,IAAjBsP,UAAU,GAAmBA,UAAU,GAAKk8B,EAGlF,IAFA,EAAIt7B,EAAcH,SAASE,GAEvB3O,EAAQmqC,MACV,OAAOC,EAAcr7B,SAASJ,EAAI4F,eAGpC,OAAO81B,EAAet7B,SAASJ,IAlBjC,IAAIC,EAEJ,SAAgCT,GAAO,OAAOA,GAAOA,EAAI0B,WAAa1B,EAAM,CAAEM,QAASN,GAFnEuB,CAAuBC,WAI3C,IAAIu6B,EAAiB,CACnBC,OAAO,GAELE,EAAiB,CAAC,OAAQ,QAAS,IAAK,KACxCD,EAAgB,GAAG1nC,OAAO2nC,EAAgB,CAAC,MAAO,OAatD77B,UAAiBJ,EAAQK,QACzBD,kBAAyBJ,EAAQK,6CC3BtB67B,GAAoB,kBAKxB,SAASC,GAAgBnlC,GAC5B,MAAwB,iBAAVA,GAAsBolC,GAAmBplC,sCCN3D3F,OAAOoB,iBAAwB,aAAc,CAC3CuE,OAAO,IAETgJ,UAUA,SAAmBO,EAAK3O,GAGtB,IAFA,EAAI4O,EAAcH,SAASE,GAEvB3O,GAAWA,EAAQyqC,WACrB,OAAOC,EAAiBp7B,KAAKX,GAG/B,OAAO,IAAIzJ,OAAO,iBAAiBxC,QAAQ1C,GAAW,IAAI4R,OAASa,EAAOf,QAAQ1R,EAAQ4R,QAAU,IAAK,eAAetC,KAAKX,IAf/H,IAAIC,EAIJ,SAAgCT,GAAO,OAAOA,GAAOA,EAAI0B,WAAa1B,EAAM,CAAEM,QAASN,GAJnEuB,CAAuBC,WAEvC8C,EAAS7C,EAIb,IAAI86B,EAAmB,WAYvBl8B,UAAiBJ,EAAQK,QACzBD,kBAAyBJ,EAAQK,6CCxBtBk8B,GAAmB,iBAKvB,SAASC,GAAexlC,EAAOpF,GAClC,MAAwB,iBAAVoF,GAAsBylC,GAAmBzlC,EAAOpF,sCCNlEP,OAAOoB,iBAAwB,aAAc,CAC3CuE,OAAO,IAETgJ,UAQA,SAAkBO,GAIhB,IAHA,EAAIC,EAAcH,SAASE,GACjBA,EAAI5N,OAEJ,GAAM,GAAK+pC,EAAOx7B,KAAKX,GAC/B,OAAO,EAGT,OAAO,GAdT,IAAIC,EAEJ,SAAgCT,GAAO,OAAOA,GAAOA,EAAI0B,WAAa1B,EAAM,CAAEM,QAASN,GAFnEuB,CAAuBC,WAI3C,IAAIm7B,EAAS,gBAabt8B,UAAiBJ,EAAQK,QACzBD,kBAAyBJ,EAAQK,6CCvBtBs8B,GAAY,WAKhB,SAASC,GAAS5lC,GACrB,MAAwB,iBAAVA,GAAsB6lC,GAAkB7lC,sCCN1D3F,OAAOoB,iBAAwB,aAAc,CAC3CuE,OAAO,IAETgJ,UAWA,SAAeO,GAIb,IAHA,EAAIC,EAAcH,SAASE,IAGtBu8B,EAAiBpmB,aAAaF,IAAIjW,EAAI+N,MAAM,EAAG,GAAGmI,eACrD,OAAO,EAGT,OAAOsmB,EAAS77B,KAAKX,IAjBvB,IAAIC,EAIJ,SAAgCT,GAAO,OAAOA,GAAOA,EAAI0B,WAAa1B,EAAM,CAAEM,QAASN,GAJnEuB,CAAuBC,WAEvCu7B,EAAmBt7B,GAKvB,IAAIu7B,EAAW,+CAaf38B,UAAiBJ,EAAQK,QACzBD,kBAAyBJ,EAAQK,6CC1BtB28B,GAAS,QAKb,SAASC,GAAMjmC,GAClB,MAAwB,iBAAVA,GAAsBkmC,GAAelmC,sCCNvD3F,OAAOoB,iBAAwB,aAAc,CAC3CuE,OAAO,IAETgJ,UAUA,SAAsBO,GAGpB,IAFA,EAAIC,EAAcH,SAASE,GAEvBA,EAAIO,WAAW,OACjB,OAAOq8B,EAAOj8B,KAAKX,GAGrB,OAAO68B,EAAOl8B,KAAKX,IAfrB,IAAIC,EAEJ,SAAgCT,GAAO,OAAOA,GAAOA,EAAI0B,WAAa1B,EAAM,CAAEM,QAASN,GAFnEuB,CAAuBC,WAK3C,IAAI47B,EAAS,yBACTC,EAAS,qCAYbh9B,UAAiBJ,EAAQK,QACzBD,kBAAyBJ,EAAQK,6CCxBtBg9B,GAAiB,eAKrB,SAASC,GAAatmC,GACzB,MAAwB,iBAAVA,GAAsBumC,GAAsBvmC,sCCN9D3F,OAAOoB,iBAAwB,aAAc,CAC3CuE,OAAO,IAETgJ,UAUA,SAAmBO,IACjB,EAAIC,EAAcH,SAASE,GAC3B,IAAIi9B,EAAOj9B,EAAIM,MAAM,KAErB,GAAI28B,EAAK7qC,OAAS,EAChB,OAAO,EAGT,IAAI8qC,EAAaD,EAAK9kB,QAAQpL,OAAOzM,MAAM,KACvC68B,EAAqBD,EAAW/kB,QAEpC,GAAwC,UAApCglB,EAAmBtwB,OAAO,EAAG,GAC/B,OAAO,EAGT,IAAIuwB,EAAYD,EAAmBtwB,OAAO,GAE1C,GAAkB,KAAduwB,IAAqBC,EAAe18B,KAAKy8B,GAC3C,OAAO,EAGT,IAAK,IAAIh+B,EAAI,EAAGA,EAAI89B,EAAW9qC,OAAQgN,IACrC,IAAMA,IAAM89B,EAAW9qC,OAAS,GAAqC,WAAhC8qC,EAAW99B,GAAGwG,iBAAgC03B,EAAe38B,KAAKu8B,EAAW99B,IAChH,OAAO,EAIX,IAAK,IAAIgE,EAAK,EAAGA,EAAK65B,EAAK7qC,OAAQgR,IACjC,IAAKm6B,EAAU58B,KAAKs8B,EAAK75B,IACvB,OAAO,EAIX,OAAO,GAzCT,IAAInD,EAEJ,SAAgCT,GAAO,OAAOA,GAAOA,EAAI0B,WAAa1B,EAAM,CAAEM,QAASN,GAFnEuB,CAAuBC,WAI3C,IAAIq8B,EAAiB,2BACjBC,EAAiB,0BACjBC,EAAY,8CAsChB19B,UAAiBJ,EAAQK,QACzBD,kBAAyBJ,EAAQK,6CClDtB09B,GAAc,YAKlB,SAASC,GAAUhnC,GACtB,MAAwB,iBAAVA,GAAsBinC,GAAmBjnC,sCCN3D3F,OAAOoB,iBAAwB,aAAc,CAC3CuE,OAAO,IAETgJ,UAwEA,SAAeO,IACb,EAAIC,EAAcH,SAASE,GAC3B,IAAI29B,EAAmB9oC,OAAOmL,EAAI+N,OAAO,IACzC,OAAO6vB,EAAcj9B,KAAKX,IAAQ29B,KAtBPE,EAsBgD79B,EAhBvE89B,EAAY,GALDD,EAAI9vB,MAAM,GAAI,GAAGzN,MAAM,IAAItL,KAAI,SAAU+oC,EAAM1nC,GAC5D,OAAOxB,OAAOkpC,GAlBlB,SAAgD3rC,EAAQiE,GACtD,OAbiB,IAabjE,GAZc,KAYaA,EACtBiE,EAAQ,GAAM,EAAI,EAAI,EAGxBA,EAAQ,GAAM,EAAI,EAAI,EAaL2nC,CAAuCH,EAAIzrC,OAAQiE,MACxE8C,QAAO,SAAU6b,EAAKipB,GACvB,OAAOjpB,EAAMipB,IACZ,GAC6B,GACzBH,EAAY,GAAKA,EAAY,GAPtC,IAA6BD,EAMvBC,GAzDN,IAAI79B,EAEJ,SAAgCT,GAAO,OAAOA,GAAOA,EAAI0B,WAAa1B,EAAM,CAAEM,QAASN,GAFnEuB,CAAuBC,WAuB3C,IAEI48B,EAAgB,0BAmDpB/9B,UAAiBJ,EAAQK,QACzBD,kBAAyBJ,EAAQK,6CClFtBo+B,GAAS,QAKb,SAASC,GAAM1nC,GAClB,MAAwB,iBAAVA,GAAsB2nC,GAAe3nC,sCCNvD3F,OAAOoB,iBAAwB,aAAc,CAC3CuE,OAAO,IAETgJ,UAQA,SAA2BO,GAEzB,OADA,EAAIC,EAAcH,SAASE,GACpBq+B,EAAI19B,KAAKX,IARlB,IAAIC,EAEJ,SAAgCT,GAAO,OAAOA,GAAOA,EAAI0B,WAAa1B,EAAM,CAAEM,QAASN,GAFnEuB,CAAuBC,WAI3C,IAAIq9B,EAAM,sBAOVx+B,UAAiBJ,EAAQK,QACzBD,kBAAyBJ,EAAQK,6CCjBtBw+B,GAAsB,oBAK1B,SAASC,GAAkB9nC,GAC9B,MAAwB,iBAAVA,GAAsB+nC,GAA2B/nC,sCCNnE3F,OAAOoB,iBAAwB,aAAc,CAC3CuE,OAAO,IAETgJ,UASA,SAAeO,IACb,EAAIC,EAAcH,SAASE,GAE3B,IAAIy+B,EAAcz+B,EAAI1J,QAAQ,OAAQ,KAAKA,QAAQ,yBAA0B,MAE7E,IAAkC,IAA9BmoC,EAAYhrC,QAAQ,KACtB,OAAOirC,EAAS/9B,KAAK89B,GAGvB,OAAOE,EAASh+B,KAAK89B,IAhBvB,IAAIx+B,EAEJ,SAAgCT,GAAO,OAAOA,GAAOA,EAAI0B,WAAa1B,EAAM,CAAEM,QAASN,GAFnEuB,CAAuBC,WAI3C,IAAI09B,EAAW,4QACXC,EAAW,sRAcf9+B,UAAiBJ,EAAQK,QACzBD,kBAAyBJ,EAAQK,6CCzBtB8+B,GAAS,QAMb,SAASC,GAAMpoC,GAClB,MAAwB,iBAAVA,GAAsBqoC,GAAeroC,aCPvD3F,OAAOoB,eAAe6sC,GAAS,aAAc,CAC3CtoC,OAAO,IAET,kBA0IA,SAAgBuJ,GAEd,OADA,EAAIC,GAAcH,SAASE,GAnC7B,SAA4BA,GAE1B,IAAIy+B,EAAcz+B,EAAI1J,QAAQ,YAAa,IAAI4f,cAC3C8oB,EAAiBP,EAAY1wB,MAAM,EAAG,GAAGmI,cAC7C,OAAO8oB,KAAkBC,IAA+BA,GAA4BD,GAAgBr+B,KAAK89B,GAgClGS,CAAmBl/B,IAf5B,SAA8BA,GAC5B,IAAIy+B,EAAcz+B,EAAI1J,QAAQ,eAAgB,IAAI4f,cASlD,OAAqB,KAPJuoB,EAAY1wB,MAAM,GAAK0wB,EAAY1wB,MAAM,EAAG,IAChBzX,QAAQ,UAAU,SAAUynC,GACvE,OAAOA,EAAKvrB,WAAW,GAAK,MAEc9F,MAAM,YAAYvT,QAAO,SAAU6b,EAAKve,GAClF,OAAO5B,OAAOmgB,EAAMve,GAAS,KAC5B,IAM+B0oC,CAAqBn/B,oBA3IvC,EAElB,IAAIC,GAEJ,SAAgCT,GAAO,OAAOA,GAAOA,EAAI0B,WAAa1B,EAAM,CAAEM,QAASN,GAFnEuB,CAAuBC,WAS3C,IAAIi+B,GAA8B,CAChCvjB,GAAI,kCACJC,GAAI,4BACJI,GAAI,kCACJK,GAAI,uBACJI,GAAI,kCACJC,GAAI,uBACJG,GAAI,uBACJE,GAAI,yCACJC,GAAI,qCACJQ,GAAI,0CACJI,GAAI,kCACJO,GAAI,kCACJO,GAAI,uBACJK,GAAI,kCACJC,GAAI,uBACJC,GAAI,uBACJE,GAAI,uBACJE,GAAI,+BACJG,GAAI,uBACJC,GAAI,uBACJG,GAAI,uBACJE,GAAI,uBACJI,GAAI,uBACJC,GAAI,wCACJE,GAAI,+BACJE,GAAI,kCACJI,GAAI,qCACJC,GAAI,uBACJK,GAAI,kCACJC,GAAI,wCACJM,GAAI,uBACJE,GAAI,uBACJE,GAAI,kCACJC,GAAI,uBACJI,GAAI,+BACJC,GAAI,8BACJC,GAAI,uBACJC,GAAI,2CACJG,GAAI,+BACJU,GAAI,qCACJE,GAAI,kCACJE,GAAI,kCACJC,GAAI,qCACJC,GAAI,kCACJI,GAAI,uBACJC,GAAI,kCACJC,GAAI,qCACJG,GAAI,wCACJC,GAAI,6BACJC,GAAI,uBACJI,GAAI,uCACJO,GAAI,uBACJE,GAAI,0CACJC,GAAI,uCACJK,GAAI,uBACJO,GAAI,+BACJC,GAAI,uBACJW,GAAI,kCACJC,GAAI,uBACJG,GAAI,kCACJC,GAAI,uBACJG,GAAI,qCACJE,GAAI,qCACJC,GAAI,uBACJG,GAAI,kCACJE,GAAI,uCACJE,GAAI,uBACJG,GAAI,uBACJE,GAAI,uBACJE,GAAI,2CACJM,GAAI,kCACJW,GAAI,uBACJE,GAAI,uBACJE,GAAI,kCACJK,GAAI,kCACJK,GAAI,uBACJG,GAAI,kCACJM,GAAI,wBAqDN,IAAIpmB,GAAUtT,OAAOC,KAAKkuC,eACR76B,OCnJPg7B,GAAU,SAKd,SAASC,GAAO5oC,GACnB,MAAwB,iBAAVA,GAAsB6oC,GAAgB7oC,sCCNxD3F,OAAOoB,iBAAwB,aAAc,CAC3CuE,OAAO,IAETgJ,UAiWA,SAAwBO,EAAKiD,GAG3B,IAFA,EAAIhD,EAAcH,SAASE,GAEvBiD,KAAUs8B,EACZ,OAAOA,EAAWt8B,GAAQjD,GACrB,GAAe,QAAXiD,EAAkB,CAC3B,IAAK,IAAI5N,KAAOkqC,EAAY,CAG1B,GAAIA,EAAWjgC,eAAejK,GAG5B,IAAIuB,EAFY2oC,EAAWlqC,IAEb2K,GACZ,OAAO,EAKb,OAAO,EAGT,MAAM,IAAIyG,MAAM,mBAAmB1S,OAAOkP,EAAQ,OApXpD,IAAIhD,EAAgBc,EAAuBC,WAEvC0Q,EAAS3Q,EAAuBE,YAEpC,SAASF,EAAuBvB,GAAO,OAAOA,GAAOA,EAAI0B,WAAa1B,EAAM,CAAEM,QAASN,GAEvF,IAAI+/B,EAAa,CACf/Y,GAAI,SAAYxmB,IACd,EAAIC,EAAcH,SAASE,GAC3B,IAAIw/B,EAAiB,CACnB,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,GAAI,EACJ,GAAI,GAGN,GAAW,MAAPx/B,GAA8B,KAAfA,EAAI5N,SAAiB,EAAIsf,EAAO5R,SAASE,EAAK,CAC/DmR,sBAAsB,IACpB,CACF,IAIIsuB,EAJSz/B,EAAIM,MAAM,IAAIyN,MAAM,GAAI,GACpB5U,QAAO,SAAU6b,EAAK/L,EAAO5S,GAC5C,OAAO2e,EAAMngB,OAAOoU,GAASu2B,EAAenpC,EAAQ,KACnD,GACgB,GACfqpC,EAAY7qC,OAAOmL,EAAIiS,OAAOjS,EAAI5N,OAAS,IAE/C,GAAe,IAAXqtC,GAA8B,IAAdC,GAAmBA,IAAc,GAAKD,EACxD,OAAO,EAIX,OAAO,GAET9f,GAAI,SAAY3f,IACd,EAAIC,EAAcH,SAASE,GAC3B,IACI2/B,EAAa,CACfC,EAAG,EACHC,EAAG,EACHC,EAAG,GAID/2B,EAAY/I,EAAI+M,OAAOmJ,cAE3B,IAVU,8CAUDvV,KAAKoI,GACZ,OAAO,EAIT,IAAI2nB,EAAS3nB,EAAUgF,MAAM,GAAI,GAAGzX,QAAQ,YAAY,SAAUynC,GAChE,OAAO4B,EAAW5B,MAEpB,OAAOh1B,EAAUvI,SAZG,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAY3FkwB,EAAS,MAEnD7Q,GAAI,SAAY7f,GAId,IAFA,EAAIC,EAAcH,SAASE,GAER,KAAfA,EAAI5N,OACN,OAAO,EAGT,IAAK4N,EAAI0M,MAAM,oDACb,OAAO,EAOT,MAJkB,mCAC+B,IAAhCjI,SAASzE,EAAI+N,MAAM,EAAG,GAAI,IAAatJ,SAASzE,EAAI+N,MAAM,EAAG,IAAK,KACtD,MAEP/N,EAAI+N,MAAM,GAAI,KAEtC+T,GAAI,SAAY9hB,GACd,IAEIgU,EAAI,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAEjUniB,EAAI,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAEjQkX,EAAY/I,EAAI+M,OAEpB,IARU,+BAQDpM,KAAKoI,GACZ,OAAO,EAGT,IAAIg3B,EAAI,EAKR,OAJoBh3B,EAAUzS,QAAQ,MAAO,IAAIgK,MAAM,IAAItL,IAAIH,QAAQmrC,UACzD/uC,SAAQ,SAAU0I,EAAKyF,GACnC2gC,EAAI/rB,EAAE+rB,GAAGluC,EAAEuN,EAAI,GAAGzF,OAEP,IAANomC,GAET9d,GAAI,SAAYjiB,GACd,IAAKA,EAAI0M,MAAM,YAAa,OAAO,EAEnC,GADA1M,EAAM,OAAOjM,OAAOiM,GAAK6M,OAAO7M,EAAI5N,OAAS,GACN,IAAnCqS,SAASzE,EAAI6M,OAAO,EAAG,GAAI,IAAW,OAAO,EAIjD,IAHA,IAAIozB,EAAax7B,SAASzE,EAAI6M,OAAO,EAAG,GAAI,IACxCzD,EAAM,EAEDhK,EAAI,EAAGA,EAAI,EAAGA,IACrBgK,GAAO3E,SAASzE,EAAI6M,OAAOzN,EAAG,GAAI,KAAO,GAAKA,GAIhD,OADAgK,GAAO,IACM,GAAK62B,IAAe72B,GAAOA,GAAO,GAAK62B,IAAe,GAAK72B,GAE1E+Y,GAAI,SAAYniB,GACd,OAAmB,IAAfA,EAAI5N,SACI,cAAR4N,GAEGA,EAAIuO,OAAO,4BAA8B,IAElDqX,GAAI,SAAY5lB,GACd,IAAI+I,EAAY/I,EAAI+M,OACpB,GAAIvH,MAAM3Q,OAAOkU,IAAa,OAAO,EACrC,GAAyB,KAArBA,EAAU3W,OAAe,OAAO,EACpC,GAAkB,gBAAd2W,EAA6B,OAAO,EAExC,IAAI1M,EAAI0M,EAAUzI,MAAM,IAAItL,IAAIH,QAC5BqrC,GAAM,IAAM,EAAI7jC,EAAE,GAAK,EAAIA,EAAE,GAAK,EAAIA,EAAE,GAAK,EAAIA,EAAE,GAAK,EAAIA,EAAE,GAAK,EAAIA,EAAE,GAAK,EAAIA,EAAE,GAAK,EAAIA,EAAE,GAAK,EAAIA,EAAE,IAAM,IAAM,GACtH8jC,GAAM,IAAM,EAAI9jC,EAAE,GAAK,EAAIA,EAAE,GAAK,EAAIA,EAAE,GAAK,EAAIA,EAAE,GAAK,EAAIA,EAAE,GAAK,EAAIA,EAAE,GAAK,EAAIA,EAAE,GAAK,EAAIA,EAAE,GAAK,EAAIA,EAAE,GAAK,EAAI6jC,GAAM,IAAM,GACnI,OAAIA,IAAO7jC,EAAE,IAAM8jC,IAAO9jC,EAAE,KAG9BysB,GAAI,SAAY9oB,GACd,IAAKA,EAAI0M,MAAM,iBAAkB,OAAO,EAIxC,IAFA,IAAItD,EAAM,EAEDhK,EAAI,EAAGA,EAAI,GAAIA,IACtBgK,GAAO3E,SAASzE,EAAIZ,GAAI,KAAO,GAAKA,GAGtC,OAAOY,EAAI,QAAU,GAAKoJ,EAAM,IAAM,IAAIhV,YAE5CmvB,GAAI,SAAYvjB,GAGd,QAAmB,KAAfA,EAAI5N,SAFM,oBAEmBuO,KAAKX,OAA0C,KAAfA,EAAI5N,SADvD,iBACgFuO,KAAKX,KAGrG,QAAS,SAAcA,GACrB,IAEI+I,EAAY/I,EAAI+M,OAEpB,IAJU,UAIDpM,KAAKoI,GACZ,OAAO,EAOT,IAJA,IAEIq3B,EAFAC,EAAKt3B,EACLK,EAAM,EAGDhK,EAAI,EAAGA,EAAIihC,EAAGjuC,OAAQgN,IAG7BgK,IAFAg3B,EAASvrC,OAAOwrC,EAAGjhC,KAAOA,EAAI,EAAI,IAElB,EAAIghC,EAAS,EAAIA,EAGnC,OAAOh3B,EAAM,IAAO,GAEtB,QAAS,SAAcpJ,GAErB,IAEI+I,EAAY/I,EAAI+M,OAEpB,QAJU,gBAIDpM,KAAKoI,IAMhB,QAAS,SAAc/I,GACrB,IAEI+I,EAAY/I,EAAI+M,OAEpB,QAJU,UAIDpM,KAAKoI,IAMhB,QAAS,SAAc/I,GACrB,IAkG2CsgC,EAlGvCC,EAAqB,CAAC,KAC1B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEIC,EAAS,CAAC,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,KAC5FC,EAAY,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAE/DC,EAAmB,SAA0BC,GAC/C,OAAOJ,EAAmBngC,SAASugC,IAGjCC,EAAoB,SAA2BC,GACjD,IAAIC,EAAOr8B,SAASo8B,EAAWx3B,UAAU,EAAG,GAAI,IAC5C03B,EAAKt8B,SAASo8B,EAAWx3B,UAAU,EAAG,GAAI,IAC1C23B,EAAKv8B,SAASo8B,EAAWx3B,UAAU,GAAI,IACvC43B,EAAQ,IAAI77B,KAAK07B,EAAMC,EAAK,EAAGC,GAEnC,QAAIC,EAAQ,IAAI77B,QAEL67B,EAAMC,gBAAkBJ,GAAQG,EAAME,aAAeJ,EAAK,GAAKE,EAAMG,YAAcJ,IAmB5FK,EAAiB,SAAwBf,GAC3C,OAbiB,SAAsBA,GAIvC,IAHA,IAAIgB,EAAOhB,EAASj3B,UAAU,EAAG,IAC7Bk4B,EAAQ,EAEHniC,EAAI,EAAGA,EAAI,GAAIA,IACtBmiC,GAAS98B,SAAS68B,EAAKrvB,OAAO7S,GAAI,IAAMqF,SAAS+7B,EAAOphC,GAAI,IAI9D,OAAOqhC,EADGc,EAAQ,IAKXC,CAAalB,KAAcA,EAASruB,OAAO,IAAIiE,eAsCxD,QAVc,4BAA4BvV,KADC2/B,EAWtBtgC,KAPK,KAApBsgC,EAASluC,OA5BO,SAAyBkuC,GAC7C,IAAIvtB,EAAQ,uEAAuEpS,KAAK2/B,GACxF,IAAKvtB,EAAO,OAAO,EACnB,IAAI4tB,EAAcL,EAASj3B,UAAU,EAAG,GAExC,KADA0J,EAAQ2tB,EAAiBC,IACb,OAAO,EACnB,IAAIE,EAAa,KAAK9sC,OAAOusC,EAASj3B,UAAU,EAAG,KAEnD,SADA0J,EAAQ6tB,EAAkBC,IAsBjBY,CAAgBnB,GAjBL,SAAyBA,GAC7C,IAAIvtB,EAAQ,yFAAyFpS,KAAK2/B,GAC1G,IAAKvtB,EAAO,OAAO,EACnB,IAAI4tB,EAAcL,EAASj3B,UAAU,EAAG,GAExC,KADA0J,EAAQ2tB,EAAiBC,IACb,OAAO,EACnB,IAAIE,EAAaP,EAASj3B,UAAU,EAAG,IAEvC,SADA0J,EAAQ6tB,EAAkBC,KAEnBQ,EAAef,GAWfoB,CAAgBpB,KAK3B,QAAS,SAActgC,GACrB,IAAI2hC,EAAiB,CACnBC,EAAG,GACHC,EAAG,GACHC,EAAG,GACHC,EAAG,GACHC,EAAG,GACHC,EAAG,GACHC,EAAG,GACHC,EAAG,GACHC,EAAG,GACHC,EAAG,GACHC,EAAG,GACHC,EAAG,GACHC,EAAG,GACHC,EAAG,GACHC,EAAG,GACHlnC,EAAG,GACHmnC,EAAG,GACHC,EAAG,GACHC,EAAG,GACHC,EAAG,GACHC,EAAG,GACHC,EAAG,GACHC,EAAG,GACHrD,EAAG,GACHC,EAAG,GACHC,EAAG,IAED/2B,EAAY/I,EAAI+M,OAAOmJ,cAC3B,QAAK,kBAAkBvV,KAAKoI,IACrB7S,MAAM2D,KAAKkP,GAAW5P,QAAO,SAAUiQ,EAAKsnB,EAAQr6B,GACzD,GAAc,IAAVA,EAAa,CACf,IAAI60B,EAAOyW,EAAejR,GAC1B,OAAOxF,EAAO,GAAK,EAAIvY,KAAKuwB,MAAMhY,EAAO,IAG3C,OAAc,IAAV70B,GACM,GAAK+S,EAAM,GAAKvU,OAAO67B,IAAW,IAAO,EAG5CtnB,EAAMvU,OAAO67B,IAAW,EAAIr6B,KAClC,KA4BPwJ,UAAiBJ,EAAQK,QACzBD,kBAAyBJ,EAAQK,6CC7XtBqjC,GAAmB,iBAOvB,SAASC,GAAe3sC,EAAOwM,GAClC,MAAwB,iBAAVxM,GAAsB4sC,GAAwB5sC,EAAOwM,sCCRvEnS,OAAOoB,iBAAwB,aAAc,CAC3CuE,OAAO,IAETgJ,UASA,SAAgBO,GAEd,OADA,EAAIC,EAAcH,SAASE,GACpBsjC,EAAK3iC,KAAKX,IATnB,IAAIC,EAEJ,SAAgCT,GAAO,OAAOA,GAAOA,EAAI0B,WAAa1B,EAAM,CAAEM,QAASN,GAFnEuB,CAAuBC,WAK3C,IAAIsiC,EAAO,kCAOXzjC,UAAiBJ,EAAQK,QACzBD,kBAAyBJ,EAAQK,6CClBtByjC,GAAU,SAKd,SAASC,GAAO/sC,GACnB,MAAwB,iBAAVA,GAAsBgtC,GAAgBhtC,sCCNxD3F,OAAOoB,iBAAwB,aAAc,CAC3CuE,OAAO,IAETgJ,UAQA,SAAkBO,GAGhB,IAFA,EAAIC,EAAcH,SAASE,GAEf,gBAARA,GAAiC,mBAARA,EAC3B,OAAO,EAGT,OAAO0jC,EAAU/iC,KAAKX,IAbxB,IAAIC,EAEJ,SAAgCT,GAAO,OAAOA,GAAOA,EAAI0B,WAAa1B,EAAM,CAAEM,QAASN,GAFnEuB,CAAuBC,WAI3C,IAAI0iC,EAAY,0EAYhB7jC,UAAiBJ,EAAQK,QACzBD,kBAAyBJ,EAAQK,6CCtBtB6jC,GAAY,WAKhB,SAASC,GAASntC,GACrB,MAAwB,iBAAVA,GAAsBotC,GAAkBptC,sCCN1D3F,OAAOoB,iBAAwB,aAAc,CAC3CuE,OAAO,IAETgJ,UAQA,SAAqB8X,GAEnB,OADA,EAAItX,EAAcH,SAASyX,GACpBusB,EAAUnjC,KAAK4W,EAAIxK,SAR5B,IAAI9M,EAEJ,SAAgCT,GAAO,OAAOA,GAAOA,EAAI0B,WAAa1B,EAAM,CAAEM,QAASN,GAFnEuB,CAAuBC,WAI3C,IAAI8iC,EAAY,8HAOhBjkC,UAAiBJ,EAAQK,QACzBD,kBAAyBJ,EAAQK,6CCjBtBikC,GAAgB,cAKpB,SAASC,GAAYvtC,GACxB,MAAwB,iBAAVA,GAAsBwtC,GAAqBxtC,sCCN7D3F,OAAOoB,iBAAwB,aAAc,CAC3CuE,OAAO,IAETgJ,UAuCA,SAAoBO,GAElB,OADA,EAAIC,EAAcH,SAASE,GACpBkkC,EAAevjC,KAAKX,IAAQmkC,EAAaxjC,KAAKX,IAAQokC,EAAkBzjC,KAAKX,IAvCtF,IAAIC,EAEJ,SAAgCT,GAAO,OAAOA,GAAOA,EAAI0B,WAAa1B,EAAM,CAAEM,QAASN,GAFnEuB,CAAuBC,WA6B3C,IAAIkjC,EAAiB,iGAGjBC,EAAe,wIAGfC,EAAoB,+JAOxBvkC,UAAiBJ,EAAQK,QACzBD,kBAAyBJ,EAAQK,6CChDtBukC,GAAe,aAKnB,SAASC,GAAW7tC,GACvB,MAAwB,iBAAVA,GAAsB8tC,GAAoB9tC,sCCN5D3F,OAAOoB,iBAAwB,aAAc,CAC3CuE,OAAO,IAETgJ,UAQA,SAAiBO,GAEf,OADA,EAAIC,EAAcH,SAASE,GACpBwkC,EAAM7jC,KAAKX,IARpB,IAAIC,EAEJ,SAAgCT,GAAO,OAAOA,GAAOA,EAAI0B,WAAa1B,EAAM,CAAEM,QAASN,GAFnEuB,CAAuBC,WAI3C,IAAIwjC,EAAQ,iBAOZ3kC,UAAiBJ,EAAQK,QACzBD,kBAAyBJ,EAAQK,6CCjBtB2kC,GAAW,UAKf,SAASC,GAAQjuC,GACpB,MAAwB,iBAAVA,GAAsBkuC,GAAiBluC,sCCNzD3F,OAAOoB,iBAAwB,aAAc,CAC3CuE,OAAO,IAETgJ,UA2HA,SAA0BO,EAAK2sB,IAC7B,EAAI1sB,EAAcH,SAASE,GAG3B,IAAI4kC,EAAgB5kC,EAAI1J,QAAQ,MAAO,IAAI4f,cAC3C,OAAOyW,EAAYzW,gBAAiB2uB,GAA8BA,EAA2BlY,GAAahsB,KAAKikC,IA9HjH,IAAI3kC,EAEJ,SAAgCT,GAAO,OAAOA,GAAOA,EAAI0B,WAAa1B,EAAM,CAAEM,QAASN,GAFnEuB,CAAuBC,WAU3C,IAAI6jC,EAA6B,CAC/B7oB,GAAI,kBAEJE,GAAI,kBAEJE,GAAI,eAEJC,GAAI,eAEJO,GAAI,kBAEJE,GAAI,UAEJS,GAAI,kBAEJI,GAAI,kBAEJE,GAAI,kBAEJK,GAAI,eAEJK,GAAI,oCAEJO,GAAI,uBAEJC,GAAI,UAEJC,GAAI,8BAEJE,GAAI,UAEJG,GAAI,UAEJE,GAAI,+BAEJI,GAAI,gCAEJE,GAAI,kBAEJK,GAAI,uBAEJE,GAAI,UAEJY,GAAI,kBAEJO,GAAI,UAEJE,GAAI,0BAEJE,GAAI,qBAEJG,GAAI,oBAEJJ,GAAI,eAEJO,GAAI,eAEJC,GAAI,aAEJC,GAAI,qBAEJI,GAAI,kBAEJQ,GAAI,cAEJW,GAAI,gBAEJC,GAAI,gBAEJC,GAAI,qBAEJC,GAAI,gBAEJiB,GAAI,UAEJM,GAAI,yCAEJD,GAAI,eAEJQ,GAAI,0BAEJa,GAAI,kBAEJI,GAAI,eAEJK,GAAI,YAEJE,GAAI,UAEJM,GAAI,UAEJM,GAAI,kBAEJD,GAAI,kBAEJuB,GAAI,eAEJK,GAAI,kBAEJE,GAAI,WAoBN/pB,UAAiBJ,EAAQK,QACzBD,kBAAyBJ,EAAQK,6CCvItBglC,GAAqB,mBAKzB,SAASC,GAAiBtuC,EAAOk2B,GACpC,MAAwB,iBAAVl2B,GAAsBuuC,GAA0BvuC,EAAOk2B,aCNzE77B,OAAOoB,eAAe+yC,GAAS,aAAc,CAC3CxuC,OAAO,IAET,kBAiFA,SAAsBuJ,EAAKiD,GAGzB,IAFA,EAAIhD,GAAcH,SAASE,GAEvBiD,KAAUiiC,GACZ,OAAOA,GAASjiC,GAAQtC,KAAKX,GACxB,GAAe,QAAXiD,EAAkB,CAC3B,IAAK,IAAI5N,KAAO6vC,GAAU,CAGxB,GAAIA,GAAS5lC,eAAejK,GAG1B,GAFc6vC,GAAS7vC,GAEXsL,KAAKX,GACf,OAAO,EAKb,OAAO,EAGT,MAAM,IAAIyG,MAAM,mBAAmB1S,OAAOkP,EAAQ,uBArGlC,EAElB,IAAIhD,GAEJ,SAAgCT,GAAO,OAAOA,GAAOA,EAAI0B,WAAa1B,EAAM,CAAEM,QAASN,GAFnEuB,CAAuBC,WAK3C,IACImkC,GAAY,UACZC,GAAY,UACZC,GAAW,UACXH,GAAW,CACbxpB,GAAI,YACJU,GAAI+oB,GACJ9oB,GAAI8oB,GACJ3oB,GAAI,YACJI,GAAIuoB,GACJroB,GAAIqoB,GACJ5nB,GAAI,gBACJI,GAAI,kBACJE,GAAI,2EACJK,GAAIinB,GACJ5mB,GAAI,oFACJQ,GAAI,kBACJC,GAAIomB,GACJlmB,GAAIimB,GACJ/lB,GAAIgmB,GACJ/lB,GAAI+lB,GACJ7lB,GAAI6lB,GACJzlB,GAAI,mCACJE,GAAIulB,GACJllB,GAAI,kBACJE,GAAI,sDACJY,GAAI,kBACJO,GAAI,iBACJC,GAAI,YACJC,GAAI0jB,GACJzjB,GAAI0jB,GACJzjB,GAAI,uCACJC,GAAI,kBACJE,GAAI,wDACJG,GAAI,+CACJC,GAnCe,UAoCfC,GAAIijB,GACJ7iB,GAAI,iBACJC,GAAI4iB,GACJriB,GAAI,kBACJO,GAAI,wBACJI,GAAI,cACJC,GAAIwhB,GACJvhB,GAAI,cACJL,GAAI6hB,GACJlgB,GAAIkgB,GACJtgB,GAAI,4BACJK,GAAIigB,GACJzf,GAAI,sBACJC,GAAIuf,GACJtf,GAAI,kDACJG,GAAImf,GACJ3e,GAAI,iBACJE,GAAI,6BACJE,GAAI,kBACJK,GAAIoe,GACJle,GAAIke,GACJhe,GAAI+d,GACJ3d,GAAI,uBACJC,GAAI2d,GACJzd,GAAIud,GACJrd,GAAI,kBACJgB,GAAIsc,GACJjc,GAAIgc,GACJ3b,GAAI,kBACJE,GAAI0b,GACJxb,GAAI,mBACJe,GAAIwa,GACJva,GAAIwa,IAEFhhC,GAAUtT,OAAOC,KAAKm0C,eACR9gC,OClFPkhC,GAAiB,eAMrB,SAASC,GAAa9uC,EAAOwM,GAChC,MAAwB,iBAAVxM,GAAsB+uC,GAAsB/uC,EAAOwM,sCCPrEnS,OAAOoB,iBAAwB,aAAc,CAC3CuE,OAAO,IAETgJ,UAqBA,SAAmBO,GAEjB,OADA,EAAIC,EAAcH,SAASE,GACpBylC,EAAQ9kC,KAAKX,IArBtB,IAAIC,EAEJ,SAAgCT,GAAO,OAAOA,GAAOA,EAAI0B,WAAa1B,EAAM,CAAEM,QAASN,GAFnEuB,CAAuBC,WAK3C,IAGI0kC,EAAW,qBACXC,EAAa,aAGbC,EAAgB,IAAIrvC,OAAO,OAAOxC,OAAO2xC,EAASlS,OAAQ,KAAKz/B,OAAO4xC,EAAWnS,SACjFqS,EAAa,IAAItvC,OAAO,SAASxC,OAAO6xC,EAAcpS,OAAQ,MAC9DsS,EAAc,IAAIvvC,OAAO,GAAGxC,OAAO2xC,EAASlS,OAAQ,KAAKz/B,OAAO4xC,EAAWnS,OAAQ,KAAKz/B,OAJ3E,kBAI6Fy/B,QAAQz/B,OAHpG,cAGuHy/B,SACrIuS,EAAW,IAAIxvC,OAAO,GAAGxC,OAVV,WAU8By/B,OAAQ,KAAKz/B,OAT9C,kBAS+Dy/B,OAAQ,KAAKz/B,OAR7E,wBAQ6Fy/B,SACxGwS,EAAW,IAAIzvC,OAAO,GAAGxC,OAAO+xC,EAAYtS,QAAQz/B,OAAO8xC,EAAWrS,SACtEiS,EAAU,IAAIlvC,OAAO,IAAIxC,OAAOgyC,EAASvS,OAAQ,SAASz/B,OAAOiyC,EAASxS,OAAQ,MAOtF3zB,UAAiBJ,EAAQK,QACzBD,kBAAyBJ,EAAQK,6CC9BtBmmC,GAAc,YAKlB,SAASC,GAAUzvC,GACtB,MAAwB,iBAAVA,GAAsB0vC,GAAmB1vC,sCCN3D3F,OAAOoB,iBAAwB,aAAc,CAC3CuE,OAAO,IAETgJ,UAWA,SAAoBO,GAClB,IAAIomC,IAAuB/mC,UAAUjN,OAAS,QAAsBrC,IAAjBsP,UAAU,KAAmBA,UAAU,GAG1F,IAFA,EAAIY,EAAcH,SAASE,IAEtBomC,EACH,OAAOC,EAAS1lC,KAAKX,IAAQsmC,EAAU3lC,KAAKX,GAG9C,OAAOqmC,EAAS1lC,KAAKX,IAAQsmC,EAAU3lC,KAAKX,IAAQumC,EAAgB5lC,KAAKX,IAAQwmC,EAAiB7lC,KAAKX,IAjBzG,IAAIC,EAEJ,SAAgCT,GAAO,OAAOA,GAAOA,EAAI0B,WAAa1B,EAAM,CAAEM,QAASN,GAFnEuB,CAAuBC,WAI3C,IAAIqlC,EAAW,sHACXC,EAAY,6FACZC,EAAkB,mEAClBC,EAAmB,mEAavB3mC,UAAiBJ,EAAQK,QACzBD,kBAAyBJ,EAAQK,6CC1BtB2mC,GAAe,aAMnB,SAASC,GAAWjwC,EAAO2vC,GAC9B,MAAwB,iBAAV3vC,GAAsBkwC,GAAoBlwC,EAAO2vC,sDCPnEt1C,OAAOoB,iBAAwB,aAAc,CAC3CuE,OAAO,IAETgJ,UAUA,SAAyB6L,EAAOs7B,GAC9B,IAAIC,EAAwBv7B,EAAM3W,KAAK,IACvC,OAAO,IAAI4B,OAAOswC,EAAuBD,IAG3C/mC,UAAiBJ,EAAQK,QACzBD,kBAAyBJ,EAAQK,sCCnBjChP,OAAOoB,iBAAwB,aAAc,CAC3CuE,OAAO,IAETgJ,UAgBA,SAAkBO,GAEhB,OADA,EAAIC,EAAcH,SAASE,GACpB8mC,EAAwBnmC,KAAKX,IAhBtC,IAAIC,EAAgBc,EAAuBC,WAI3C,SAASD,EAAuBvB,GAAO,OAAOA,GAAOA,EAAI0B,WAAa1B,EAAM,CAAEM,QAASN,GAQvF,IAAIsnC,GAA0B,EAVR/lC,EAAuBE,YAUKnB,SAAS,CAAC,iDAAkD,0FAA2F,4CAA6C,KAOtPD,UAAiBJ,EAAQK,QACzBD,kBAAyBJ,EAAQK,6CCzBtBinC,GAAa,WAKjB,SAASC,GAASvwC,GACrB,MAAwB,iBAAVA,GAAsBwwC,GAAkBxwC,OCP/CywC,GAAa,YAIjB,SAASC,GAAU1wC,GACtB,OAAOA,aAAiB2wC,SAA4B,kBAAV3wC,MCLnC4wC,GAAU,SAId,SAASC,GAAO7wC,GACnB,OAAOA,aAAiB2O,OAASI,MAAM/O,EAAM4O,eCLtCkiC,GAAY,WAIhB,SAASC,GAAS/wC,EAAOpF,GAE5B,QADgB,IAAZA,IAAsBA,EAAU,IACf,iBAAVoF,EACP,OAAO,EAEX,GAAIA,IAAUgxC,EAAAA,GAAYhxC,KAAWgxC,EAAAA,EACjC,OAAOp2C,EAAQq2C,cAEnB,GAAI7yC,OAAO2Q,MAAM/O,GACb,OAAOpF,EAAQs2C,SAEnB,QAAiC53C,IAA7BsB,EAAQu2C,iBAAgC,CACxC,IAAIC,EAAgB,EAIpB,GAHIpxC,EAAQ,GAAM,IACdoxC,EAAgBpxC,EAAMrC,WAAWkM,MAAM,KAAK,GAAGlO,QAE/Cy1C,EAAgBx2C,EAAQu2C,iBACxB,OAAO,EAGf,OAAO/yC,OAAOizC,SAASrxC,OCxBhBsxC,GAAU,SAId,SAASC,GAAOvxC,EAAOwxC,GAE1B,OADiBn3C,OAAOC,KAAKk3C,GAAQjzC,KAAI,SAAUkzC,GAAK,OAAOD,EAAOC,MACpDz0C,QAAQgD,IAAU,MCN7B0xC,GAAS,QAIb,SAASC,GAAMzuC,GAClB,MAAsB,iBAARA,GAAoB9E,OAAOC,UAAU6E,OCL5C0uC,GAAY,WAIhB,SAASC,GAAS7xC,GACrB,OAAOA,aAAiBkJ,QAA2B,iBAAVlJ,MCLlC8xC,GAAW,UAIf,SAASpyC,GAAQM,GACpB,OAAOP,MAAMC,QAAQM,OCLd+xC,GAAY,WAKhB,SAASzP,GAAStiC,GACrB,OAAgB,MAATA,IAAmC,iBAAVA,GAAuC,mBAAVA,KAA0BP,MAAMC,QAAQM,OCN9FgyC,GAAiB,gBAKrB,SAASC,GAAcC,EAAO7uC,GACjC,QAAK5D,MAAMC,QAAQwyC,IAEZ7uC,EAAOW,OAAM,SAAUhE,GAAS,OAAiC,IAA1BkyC,EAAMl1C,QAAQgD,UCRrDmyC,GAAqB,mBAKzB,SAASC,GAAiBF,EAAO7uC,GACpC,QAAK5D,MAAMC,QAAQwyC,IAEZ7uC,EAAOW,OAAM,SAAUhE,GAAS,OAAiC,IAA1BkyC,EAAMl1C,QAAQgD,UCRrDqyC,GAAkB,gBAKtB,SAASC,GAAcJ,GAC1B,OAAOzyC,MAAMC,QAAQwyC,IAAUA,EAAMv2C,OAAS,MCNvC42C,GAAiB,eAKrB,SAASC,GAAaN,EAAO3kC,GAChC,OAAO9N,MAAMC,QAAQwyC,IAAUA,EAAMv2C,QAAU4R,MCNxCklC,GAAiB,eAKrB,SAASC,GAAaR,EAAO1kC,GAChC,OAAO/N,MAAMC,QAAQwyC,IAAUA,EAAMv2C,QAAU6R,MCNxCmlC,GAAe,cAKnB,SAASC,GAAYV,EAAOW,GAC/B,IAAKpzC,MAAMC,QAAQwyC,GACf,OAAO,EACPW,IACAX,EAAQA,EAAM3zC,KAAI,SAAUkkB,GAAK,OAAa,MAALA,EAAYowB,EAAWpwB,GAAKA,MAEzE,IAAIqwB,EAAcZ,EAAMr1C,QAAO,SAAU0Y,EAAGC,EAAG8zB,GAAK,OAAOA,EAAEtsC,QAAQuY,KAAOC,KAC5E,OAAO08B,EAAMv2C,SAAWm3C,EAAYn3C,WCX7Bo3C,GAAsB,mBAK1B,SAASC,GAAiBhzC,EAAOpF,GACpC,IAAK0nC,GAAStiC,GACV,OAAO,EAEX,IAA6E,KAAxEpF,MAAAA,OAAyC,EAASA,EAAQq4C,UAC3D,OAAQ54C,OAAOgJ,OAAOrD,GAAOgE,OAAM,SAAUkvC,GAAiB,OAAOA,MAAAA,KAEzE,IAAK,IAAIt0C,KAAOoB,EACZ,GAAIA,EAAM6I,eAAejK,GACrB,OAAO,EAGf,OAAO,MClBAu0C,GAAc,aAIlB,SAASC,GAAW3yC,EAAQ4yC,GAC/B,OAAQA,GAA0D,mBAA1BA,GAAwC5yC,aAAkB4yC,qICA/F,SAAex5C,GAClB,OAAO,SAAU4G,EAAQhH,GACrB,IAAIR,EAAO,CACPM,KAAMmF,EAAgBO,UACtBzF,OAAQiH,EAAOhC,YACfhF,aAAcA,EACdI,kBAAmBA,GAEvB2D,IAAqBvB,sBAAsB,IAAIjD,EAAmBC,sBRCnE,SAAuBoK,EAAQxJ,GAClC,OAAO0O,EAAW,CACd5N,KAAMq3C,GACNt4C,YAAa,CAAC2J,GACdlD,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOg5C,GAAcjyC,EAAO/G,EAAKS,YAAY,KAChFiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,+CAAiDzO,KAE/HA,mBIVA,SAAsB2T,EAAK3T,GAC9B,OAAO0O,EAAW,CACd5N,KAAM83C,GACN/4C,YAAa,CAAC8T,GACdrN,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOy5C,GAAa1yC,EAAO/G,EAAKS,YAAY,KAC/EiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,+DAAiEzO,KAE/IA,mBDRA,SAAsB0T,EAAK1T,GAC9B,OAAO0O,EAAW,CACd5N,KAAM43C,GACN74C,YAAa,CAAC6T,GACdpN,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOu5C,GAAaxyC,EAAO/G,EAAKS,YAAY,KAC/EiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,0DAA4DzO,KAE1IA,uBFNA,SAA0BwJ,EAAQxJ,GACrC,OAAO0O,EAAW,CACd5N,KAAMw3C,GACNz4C,YAAa,CAAC2J,GACdlD,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOm5C,GAAiBpyC,EAAO/G,EAAKS,YAAY,KACnFiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,qDAAuDzO,KAErIA,oBCVA,SAAuBA,GAC1B,OAAO0O,EAAW,CACd5N,KAAM03C,GACNlyC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOq5C,GAActyC,IACxD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,kCAAoCzO,KAElHA,kBGDA,SAAqBy5C,EAAqBz5C,GAC7C,IAAIg5C,EAA4C,mBAAxBS,EAAqCA,OAAsBh6C,EAC/EsB,EAAyC,mBAAxB04C,EAAqCA,EAAsBz5C,EAChF,OAAO0O,EAAW,CACd5N,KAAMg4C,GACNxyC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO25C,GAAY5yC,EAAO6yC,IAC7DluC,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,4CAA8C1N,KAE5HA,6BhLdA,SAAkB6U,EAAM5V,GAC3B,OAAO0O,EAAW,CACd5N,KAAM4U,GACN7V,YAAa,CAAC+V,GACdtP,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOuW,GAASxP,EAAO/G,EAAKS,YAAY,KAC3EiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,iDAAmDzO,KAEjIA,wBnBXA,SAAgBsR,EAAYtR,GAC/B,OAAO0O,EAAW,CACd5N,KAAMsQ,EACNvR,YAAa,CAACyR,GACdhL,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOiS,EAAOlL,EAAO/G,EAAKS,YAAY,KACzEiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,4CAA8CzO,KAE5HA,y3CsBLA,SAAiB2S,EAAQ3S,GAC5B,OAAO0O,EAAW,CACd5N,KAAMsV,GACNvW,YAAa,CAAC8S,GACdrM,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOiX,GAAQlQ,EAAO/G,EAAKS,YAAY,KAC1EiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,iDAAmDzO,KAEjIA,qBERA,SAAwB2S,EAAQ3S,GACnC,OAAO0O,EAAW,CACd5N,KAAM0V,GACN3W,YAAa,CAAC8S,GACdrM,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOqX,GAAetQ,EAAO/G,EAAKS,YAAY,KACjFiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,oDAAsDzO,KAEpIA,coKXA,SAAiBA,GACpB,OAAO0O,EAAW,CACd5N,KAAMm3C,GACN3xC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOyG,GAAQM,IAClD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,+BAAiCzO,KAE/GA,c/JJA,SAAiBA,GACpB,OAAO0O,EAAW,CACd5N,KAAM2W,GACNnR,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOsY,GAAQvR,IAClD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,iDAAmDzO,KAEjIA,YqHPA,SAAeA,GAClB,OAAO0O,EAAW,CACd5N,KAAMqrC,GACN7lC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOgtC,GAAMjmC,IAChD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,0CAA4CzO,KAE1HA,eFPA,SAAkBA,GACrB,OAAO0O,EAAW,CACd5N,KAAMgrC,GACNxlC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO2sC,GAAS5lC,IACnD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,qCAAuCzO,KAErHA,ejHPA,SAAkBA,GACrB,OAAO0O,EAAW,CACd5N,KAAMoX,GACN5R,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO+Y,GAAShS,IACnD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,qCAAuCzO,KAErHA,gBuJVA,SAAmBA,GACtB,OAAO0O,EAAW,CACd5N,KAAM81C,GACNtwC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOy3C,GAAU1wC,IACpD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,sCAAwCzO,KAEtHA,sB1CJA,SAAyBA,GAC5B,OAAO0O,EAAW,CACd5N,KAAMuqC,GACN/kC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOksC,GAAgBnlC,IAC1D2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,uCAAyCzO,KAEvHA,mBQPA,SAAsBA,GACzB,OAAO0O,EAAW,CACd5N,KAAM0rC,GACNlmC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOqtC,GAAatmC,IACvD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,oCAAsCzO,KAEpHA,mBnHPA,SAAsB0T,EAAKC,EAAK3T,GACnC,OAAO0O,EAAW,CACd5N,KAAMwX,GACNzY,YAAa,CAAC6T,EAAKC,GACnBrN,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOmZ,GAAapS,EAAO/G,EAAKS,YAAY,GAAIT,EAAKS,YAAY,KACpGiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,8EAAgFzO,KAE9JA,mBERA,SAAsBA,GACzB,OAAO0O,EAAW,CACd5N,KAAMkY,GACN1S,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO6Z,GAAa9S,IACvD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,oCAAsCzO,KAEpHA,iBEPA,SAAoBe,EAASf,GAChC,OAAO0O,EAAW,CACd5N,KAAM4Z,GACN7a,YAAa,CAACkB,GACduF,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOub,GAAWxU,EAAO/G,EAAKS,YAAY,KAC7EiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,iCAAmCzO,KAEjHA,gBiHRA,SAAmBA,GACtB,OAAO0O,EAAW,CACd5N,KAAMosC,GACN5mC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO+tC,GAAUhnC,IACpD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,wCAA0CzO,KAExHA,aiCVA,SAAgBA,GACnB,OAAO0O,EAAW,CACd5N,KAAMi2C,GACNzwC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO43C,GAAO7wC,IACjD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,sCAAwCzO,KAEtHA,mB7CNA,SAAsBe,EAASf,GAClC,OAAO0O,EAAW,CACd5N,KAAMiqC,GACNlrC,YAAa,CAACkB,GACduF,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO4rC,GAAa7kC,IACvD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,mDAAqDzO,KAEnIA,gB/GNA,SAAmBe,EAASf,GAC/B,OAAO0O,EAAW,CACd5N,KAAMuW,GACNxX,YAAa,CAACkB,GACduF,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOkY,GAAUnR,EAAO/G,EAAKS,YAAY,KAC5EiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,6CAA+CzO,KAE7HA,gBnCTA,SAAmBA,GACtB,OAAO0O,EAAW,CACd5N,KAAMuE,EACNiB,UAAW,CACPqD,SAAU,SAAUxD,GAAS,OAAOwI,EAAUxI,IAC9C2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,8CAAgDzO,KAE9HA,oBkBRA,SAAuBiU,EAAKjU,GAC/B,OAAO0O,EAAW,CACd5N,KAAMsT,GACNvU,YAAa,CAACoU,GACd3N,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOiV,GAAclO,EAAO/G,EAAKS,YAAY,KAChFiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,gDAAkDzO,KAEhIA,Y8INA,SAAeA,GAClB,OAAO0O,EAAW,CACd5N,KAAM8sC,GACNtnC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOyuC,GAAM1nC,IAChD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,uDAAyDzO,KAEvIA,c/GPA,SAAiBe,EAASf,GAC7B,OAAO0O,EAAW,CACd5N,KAAMqd,GACNte,YAAa,CAACkB,GACduF,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOgf,GAAQjY,EAAO/G,EAAKS,YAAY,KAC1EiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,+BAAiCzO,KAE/GA,cvCXA,SAAiBA,GACpB,OAAO0O,EAAW,CACd5N,KAAM2Q,EACNnL,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOsS,EAAQvL,IAClD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,4BAA8BzO,KAE5GA,auLNA,SAAgB23C,EAAQ33C,GAC3B,OAAO0O,EAAW,CACd5N,KAAM22C,GACN53C,YAAa,CAAC83C,GACdrxC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOs4C,GAAOvxC,EAAO/G,EAAKS,YAAY,KACzEiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,yCAA2CzO,KAEzHA,wB/BNA,SAA2BA,GAC9B,OAAO0O,EAAW,CACd5N,KAAMktC,GACN1nC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO6uC,GAAkB9nC,IAC5D2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,0CAA4CzO,KAE1HA,ahHPA,SAAgBe,EAASf,GAC5B,OAAO0O,EAAW,CACd5N,KAAMwd,GACNze,YAAa,CAACkB,GACduF,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOmf,GAAOpY,EAAO/G,EAAKS,YAAY,KACzEiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,0CAA4CzO,KAE1HA,uB8CRA,SAA0BA,GAC7B,OAAO0O,EAAW,CACd5N,KAAMopB,GACN5jB,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO+qB,GAAiBhkB,IAC3D2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,yCAA2CzO,KAEzHA,kB5CPA,SAAqBA,GACxB,OAAO0O,EAAW,CACd5N,KAAM6d,GACNrY,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOwf,GAAYzY,IACtD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,mDAAqDzO,KAEnIA,YgHLA,SAAeA,GAClB,OAAO0O,EAAW,CACd5N,KAAMwtC,GACNhoC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOmvC,GAAMpoC,IAChD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,kCAAoCzO,KAElHA,kB9GTA,SAAqBA,GACxB,OAAO0O,EAAW,CACd5N,KAAMke,GACN1Y,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO6f,GAAY9Y,IACtD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,mDAAqDzO,KAEnIA,ayFLA,SAAgBqpC,EAAWrpC,GAC9B,OAAO0O,EAAW,CACd5N,KAAMspC,GACNvqC,YAAa,CAACwpC,GACd/iC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOirC,GAAOlkC,EAAO/G,EAAKS,YAAY,KACzEiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,kDAAoDzO,KAElIA,iBrFVA,SAAoBA,GACvB,OAAO0O,EAAW,CACd5N,KAAM2e,GACNnZ,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOsgB,GAAWvZ,IACrD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,0CAA4CzO,KAE1HA,oBEPA,SAAuBA,GAC1B,OAAO0O,EAAW,CACd5N,KAAM+e,GACNvZ,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO0gB,GAAc3Z,IACxD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,2CAA6CzO,KAE3HA,a0GPA,SAAgBA,GACnB,OAAO0O,EAAW,CACd5N,KAAMguC,GACNxoC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO2vC,GAAO5oC,IACjD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,8BAAgCzO,KAE9GA,WtGLA,SAAcub,EAASvb,GAC1B,OAAO0O,EAAW,CACd5N,KAAM2f,GACN5gB,YAAa,CAAC0b,GACdjV,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOkc,GAAKnV,EAAO/G,EAAKS,YAAY,KACvEiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,oCAAsCzO,KAEpHA,aKRA,SAAgBub,EAASvb,GAC5B,OAAO0O,EAAW,CACd5N,KAAMghB,GACNjiB,YAAa,CAAC0b,GACdjV,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOoiB,GAAOrb,EAAO/G,EAAKS,YAAY,KACzEiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,8BAAgCzO,KAE9GA,aEVA,SAAgBA,GACnB,OAAO0O,EAAW,CACd5N,KAAM4hB,GACNpc,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOujB,GAAOxc,IACjD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,0DAA4DzO,KAE1IA,uBYTA,SAA0BA,GAC7B,OAAO0O,EAAW,CACd5N,KAAMglB,GACNxf,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO2mB,GAAiB5f,IAC3D2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,mDAAqDzO,KAEnIA,uBEPA,SAA0BA,GAC7B,OAAO0O,EAAW,CACd5N,KAAMolB,GACN5f,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO+mB,GAAiBhgB,IAC3D2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,mDAAqDzO,KAEnIA,gBZHA,SAAmBe,EAASf,GAC/B,OAAO0O,EAAW,CACd5N,KAAMgjB,GACNjkB,YAAa,CAACkB,GACduF,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO2kB,GAAU5d,EAAO/G,EAAKS,YAAY,KAC5EiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,mDAAqDzO,KAEnIA,aiGVA,SAAgBA,GACnB,OAAO0O,EAAW,CACd5N,KAAMmyC,GACN3sC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO8zC,GAAO/sC,IACjD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,8BAAgCzO,KAE9GA,azBPA,SAAgBe,EAASf,GAC5B,OAAO0O,EAAW,CACd5N,KAAM8pC,GACN/qC,YAAa,CAACkB,GACduF,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOyrC,GAAO1kC,EAAO/G,EAAKS,YAAY,KACzEiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,6BAA+BzO,KAE7GA,qBuBJA,SAAwB2S,EAAQ3S,GACnC,OAAO0O,EAAW,CACd5N,KAAM+xC,GACNhzC,YAAa,CAAC8S,GACdrM,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO0zC,GAAe3sC,EAAO/G,EAAKS,YAAY,KACjFiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,6CAA+CzO,KAE7HA,W5JfA,SAAcwJ,EAAQxJ,GACzB,OAAO0O,EAAW,CACd5N,KAAM+Q,EACNhS,YAAa,CAAC2J,GACdlD,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO0S,EAAK3L,EAAO/G,EAAKS,YAAY,KACvEiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,gEAAkEzO,KAEhJA,iBiMRA,SAAoB05C,EAAY15C,GACnC,OAAO0O,EAAW,CACd5N,KAAMw4C,GACNz5C,YAAa,CAAC65C,GACdpzC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOm6C,GAAWpzC,EAAO/G,EAAKS,YAAY,KAC7EiL,eAAgByD,GAAa,SAAUE,EAAYrP,GAC/C,OAAIA,EAAKS,YAAY,GACV4O,EAAa,oCAAoChL,OAAOrE,EAAKS,YAAY,GAAGiB,MAG5E2N,EAAa,GAAGhL,OAAO61C,GAAa,kEAEhDt5C,KAERA,YXfA,SAAeA,GAClB,OAAO0O,EAAW,CACd5N,KAAM+2C,GACNvxC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO04C,GAAM3xC,IAChD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,wCAA0CzO,KAExHA,avHJA,SAAgBA,GACnB,OAAO0O,EAAW,CACd5N,KAAMwjB,GACNhe,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOmlB,GAAOpe,IACjD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,oCAAsCzO,KAEpHA,YEPA,SAAeA,GAClB,OAAO0O,EAAW,CACd5N,KAAM+jB,GACNve,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO0lB,GAAM3e,IAChD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,mCAAqCzO,KAEnHA,gBxETA,SAAmBA,GACtB,OAAO0O,EAAW,CACd5N,KAAM+P,EACNvK,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO0R,EAAU3K,IACpD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,kDAAoDzO,KAElIA,iBCPA,SAAoBA,GACvB,OAAO0O,EAAW,CACd5N,KAAMkQ,EACN1K,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO6R,EAAW9K,IACrD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,kDAAoDzO,KAElIA,esKLA,SAAkBA,GACrB,OAAO0O,EAAW,CACd5N,KAAMuyC,GACN/sC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOk0C,GAASntC,IACnD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,6BAA+BzO,KAE7GA,kBrKTA,SAAqBA,GACxB,OAAO0O,EAAW,CACd5N,KAAMoQ,EACN5K,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO+R,EAAYhL,IACtD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,mDAAqDzO,KAEnIA,kBwELA,SAAqBA,GACxB,OAAO0O,EAAW,CACd5N,KAAMkkB,GACN1e,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO6lB,GAAY9e,IACtD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,yCAA2CzO,KAEzHA,mBhBVA,SAAsB25C,EAA+BC,GACxD,IAAI74C,EAAWif,GAAoB25B,QAAiEl6C,EAAhCk6C,EAChE35C,EAAoBggB,GAAoB25B,GACtCA,EACAC,EACN,OAAOlrC,EAAW,CACd5N,KAAMwf,GACNzgB,YAAa,CAACkB,GACduF,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOmhB,GAAapa,EAAOpF,IAC9D+J,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,oCAAsCzO,KAEpHA,kB+GTA,SAAqBA,GACxB,OAAO0O,EAAW,CACd5N,KAAM2yC,GACNntC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOs0C,GAAYvtC,IACtD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,wCAA0CzO,KAExHA,qBjCNA,SAAwBA,GAC3B,OAAO0O,EAAW,CACd5N,KAAMqoC,GACN7iC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOgqC,GAAejjC,IACzD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,kFAAoFzO,KAElKA,iBmCRA,SAAoBA,GACvB,OAAO0O,EAAW,CACd5N,KAAMizC,GACNztC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO40C,GAAW7tC,IACrD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,uCAAyCzO,KAEvHA,oB/FSA,SAAuB2S,EAAQ5R,EAASf,GAC3C,OAAO0O,EAAW,CACd5N,KAAMwkB,GACNzlB,YAAa,CAAC8S,EAAQ5R,GACtBuF,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOmmB,GAAcpf,EAAO/G,EAAKS,YAAY,GAAIT,EAAKS,YAAY,KACrGiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,qCAAuCzO,KAErHA,gBMxBA,SAAmBA,GACtB,OAAO0O,EAAW,CACd5N,KAAMwlB,GACNhgB,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOmnB,GAAUpgB,IACpD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,mCAAqCzO,KAEnHA,kBEPA,SAAqBA,GACxB,OAAO0O,EAAW,CACd5N,KAAM4lB,GACNpgB,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOunB,GAAYxgB,IACtD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,uDAAyDzO,KAEvIA,iBrEVA,SAAoBA,GACvB,OAAO0O,EAAW,CACd5N,KAAM2T,GACNnO,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOsV,GAAWvO,IACrD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,wCAA0CzO,KAExHA,iBTPA,SAAoBA,GACvB,OAAO0O,EAAW,CACd5N,KAAM6Q,EACNrL,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOwS,EAAWzL,IACrD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,kCAAoCzO,KAElHA,uBiMOA,SAA0Be,EAASf,GACtC,OAAO0O,EAAW,CACd5N,KAAMo4C,GACNr5C,YAAa,CAACkB,GACduF,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO+5C,GAAiBhzC,EAAO/G,EAAKS,YAAY,KACnFiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,yCAA2CzO,KAEzHA,c/LtBA,SAAiBwJ,EAAQxJ,GAC5B,OAAO0O,EAAW,CACd5N,KAAMmR,EACNpS,YAAa,CAAC2J,GACdlD,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO8S,EAAQ/L,EAAO/G,EAAKS,YAAY,KAC1EiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,sEAAwEzO,KAEtJA,emLWA,SAAkBe,EAASf,GAE9B,YADgB,IAAZe,IAAsBA,EAAU,IAC7B2N,EAAW,CACd5N,KAAMm2C,GACNp3C,YAAa,CAACkB,GACduF,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO83C,GAAS/wC,EAAO/G,EAAKS,YAAY,KAC3EiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,uEAAyEzO,KAEvJA,qB1CzBA,SAAwBe,EAASf,GACpC,OAAO0O,EAAW,CACd5N,KAAM4qC,GACN7rC,YAAa,CAACkB,GACduF,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOusC,GAAexlC,EAAO/G,EAAKS,YAAY,KACjFiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,sCAAwCzO,KAEtHA,e+CTA,SAAkBA,GACrB,OAAO0O,EAAW,CACd5N,KAAMo3C,GACN5xC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOqpC,GAAStiC,IACnD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,gCAAkCzO,KAEhHA,cnBNA,SAAiBA,GACpB,OAAO0O,EAAW,CACd5N,KAAMqzC,GACN7tC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOg1C,GAAQjuC,IAClD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,yCAA2CzO,KAEzHA,iB6BfA,SAAoBA,GACvB,OAAO,SAAU4G,EAAQhH,GACrB,IAAIR,EAAO,CACPM,KAAMmF,EAAgBM,uBACtBxF,OAAQiH,EAAOhC,YACfhF,aAAcA,EACdC,YAAa,CACT,SAAU+G,EAAQT,GACd,OAAgC,OAAzBS,EAAOhH,SAAmDH,IAAzBmH,EAAOhH,KAGvDI,kBAAmBA,GAEvB2D,IAAqBvB,sBAAsB,IAAIjD,EAAmBC,yB3BLnE,SAA0Bi9B,EAAar8B,GAC1C,OAAO0O,EAAW,CACd5N,KAAM0zC,GACN30C,YAAa,CAACw8B,GACd/1B,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOq1C,GAAiBtuC,EAAO/G,EAAKS,YAAY,KACnFiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,4CAA8CzO,KAE5HA,oBzCOA,SAAuBgpC,EAAQhpC,GAClC,OAAO0O,EAAW,CACd5N,KAAMgoC,GACNjpC,YAAa,CAACmpC,GACd1iC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO2pC,GAAc5iC,EAAO/G,EAAKS,YAAY,KAChFiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,2CAA6CzO,KAE3HA,axEzBA,SAAgBA,GACnB,OAAO0O,EAAW,CACd5N,KAAMugB,GACN/a,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOkiB,GAAOnb,IACjD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,6BAA+BzO,KAE7GA,iBhDRA,SAAoBA,GACvB,OAAO0O,EAAW,CACd5N,KAAMyT,GACNjO,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOoV,GAAWrO,IACrD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,wCAA0CzO,KAExHA,mBmKFA,SAAsB2S,EAAQ3S,GACjC,OAAO0O,EAAW,CACd5N,KAAMk0C,GACNn1C,YAAa,CAAC8S,GACdrM,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO61C,GAAa9uC,EAAO/G,EAAKS,YAAY,KAC/EiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,oCAAsCzO,KAEpHA,gBEVA,SAAmBA,GACtB,OAAO0O,EAAW,CACd5N,KAAM60C,GACNrvC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOw2C,GAAUzvC,IACpD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,oCAAsCzO,KAEpHA,iBELA,SAAoB81C,EAAsB91C,GAC7C,OAAO0O,EAAW,CACd5N,KAAMq1C,GACNt2C,YAAa,CAACi2C,GACdxvC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOg3C,GAAWjwC,EAAO/G,EAAKS,YAAY,KAC7EiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,gCAAkCzO,KAEhHA,eGVA,SAAkBA,GACrB,OAAO0O,EAAW,CACd5N,KAAM21C,GACNnwC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOs3C,GAASvwC,IACnD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,0DAA4DzO,KAE1IA,eMVA,SAAkBA,GACrB,OAAO0O,EAAW,CACd5N,KAAMi3C,GACNzxC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO44C,GAAS7xC,IACnD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,+BAAiCzO,KAE/GA,sBxGJA,SAAyBA,GAC5B,OAAO0O,EAAW,CACd5N,KAAMgmB,GACNxgB,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO2nB,GAAgB5gB,IAC1D2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,qDAAuDzO,KAErIA,aIPA,SAAgBub,EAASvb,GAC5B,OAAO0O,EAAW,CACd5N,KAAMipB,GACNlqB,YAAa,CAAC0b,GACdjV,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO4qB,GAAO7jB,EAAO/G,EAAKS,YAAY,KACzEiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,6BAA+BzO,KAE7GA,kBGRA,SAAqBA,GACxB,OAAO0O,EAAW,CACd5N,KAAMspB,GACN9jB,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOirB,GAAYlkB,IACtD2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,gCAAkCzO,KAEhHA,YLPA,SAAee,EAASf,GAC3B,OAAO0O,EAAW,CACd5N,KAAM6oB,GACN9pB,YAAa,CAACkB,GACduF,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOwqB,GAAMzjB,EAAO/G,EAAKS,YAAY,KACxEiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,qCAAuCzO,KAErHA,sBrCRA,SAAyBA,GAC5B,OAAO0O,EAAW,CACd5N,KAAMue,GACN/Y,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOkgB,GAAgBnZ,IAC1D2E,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,kEAAoEzO,KAElJA,a4CPA,SAAgB0T,EAAKC,EAAK3T,GAC7B,OAAO0O,EAAW,CACd5N,KAAM0pB,GACN3qB,YAAa,CAAC6T,EAAKC,GACnBrN,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO0C,GAAOqE,EAAO/G,EAAKS,YAAY,GAAIT,EAAKS,YAAY,KAC9FiL,eAAgByD,GAAa,SAAUE,EAAYrP,GAC/C,IAAIy6C,EAAsC,OAAxBz6C,EAAKS,YAAY,SAAuCJ,IAAxBL,EAAKS,YAAY,GAC/Di6C,EAAsC,OAAxB16C,EAAKS,YAAY,SAAuCJ,IAAxBL,EAAKS,YAAY,GACnE,OAAIg6C,KAAiBz6C,EAAK+G,OAAS/G,EAAK+G,MAAMrE,OAAS1C,EAAKS,YAAY,IAC7D4O,EAAa,oEAEfqrC,GAAe16C,EAAK+G,MAAMrE,OAAS1C,EAAKS,YAAY,GAClD4O,EAAa,qEAEhBA,EACJ,gHACLzO,KAERA,uB/EhCU,0CCAA,8CkFKV,SAAiB8Z,EAASigC,EAA8B/5C,GAC3D,IAAI8qB,EAOJ,OANIivB,GAAgCA,aAAwCv5C,SAAWR,EACnFA,EAAoB+5C,EAGpBjvB,EAAYivB,EAETrrC,EAAW,CACd5N,KAAMiqB,GACNlrB,YAAa,CAACia,EAASgR,GACvBxkB,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOsqB,GAAQvjB,EAAO/G,EAAKS,YAAY,GAAIT,EAAKS,YAAY,KAC/FiL,eAAgByD,GAAa,SAAUE,EAAYrP,GAAQ,OAAOqP,EAAa,yDAA2DzO,KAE/IA,UnFVA,SAAag6C,EAAUh6C,GAC1B,OAAO0O,EAAW,CACd5N,KAZS,MAaTjB,YAAa,CAACm6C,GACd1zC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOuU,GAAIxN,EAAO/G,EAAKS,YAAY,KACtEiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,oDAAsDzO,KAEpIA,cGRA,SAAiB6U,EAAM7U,GAC1B,OAAO0O,EAAW,CACd5N,KAAMkU,GACNnV,YAAa,CAACgV,GACdvO,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO6V,GAAQ9O,EAAO/G,EAAKS,YAAY,KAC1EiL,eAAgByD,GAAa,SAAUE,GAAc,MAAO,4BAA8BA,EAAa,8BAAgCzO,KAE5IA,gB6ELA,SAAmB2T,EAAK3T,GAC3B,OAAO0O,EAAW,CACd5N,KAAM4pB,GACN7qB,YAAa,CAAC8T,GACdrN,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOurB,GAAUxkB,EAAO/G,EAAKS,YAAY,KAC5EiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,uEAAyEzO,KAEvJA,8B/EXA,SAAai6C,EAAUj6C,GAC1B,OAAO0O,EAAW,CACd5N,KAZS,MAaTjB,YAAa,CAACo6C,GACd3zC,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOsU,GAAIvN,EAAO/G,EAAKS,YAAY,KACtEiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,iDAAmDzO,KAEjIA,cCRA,SAAiB6U,EAAM7U,GAC1B,OAAO0O,EAAW,CACd5N,KAAM6T,GACN9U,YAAa,CAACgV,GACdvO,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOwV,GAAQzO,EAAO/G,EAAKS,YAAY,KAC1EiL,eAAgByD,GAAa,SAAUE,GAAc,MAAO,4BAA8BA,EAAa,8BAAgCzO,KAE5IA,gB+ELA,SAAmB0T,EAAK1T,GAC3B,OAAO0O,EAAW,CACd5N,KAAM8pB,GACN/qB,YAAa,CAAC6T,GACdpN,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOyrB,GAAU1kB,EAAO/G,EAAKS,YAAY,KAC5EiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,sEAAwEzO,KAEtJA,mD1ERA,SAAqB4V,EAAM5V,GAC9B,OAAO0O,EAAW,CACd5N,KAAMgV,GACNjW,YAAa,CAAC+V,GACdtP,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAO2W,GAAY5P,EAAO/G,EAAKS,YAAY,KAC9EiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,uDAAyDzO,KAEvIA,gBnBXA,SAAmBsR,EAAYtR,GAClC,OAAO0O,EAAW,CACd5N,KAAMyQ,EACN1R,YAAa,CAACyR,GACdhL,UAAW,CACPqD,SAAU,SAAUxD,EAAO/G,GAAQ,OAAOoS,EAAUrL,EAAO/G,EAAKS,YAAY,KAC5EiL,eAAgByD,GAAa,SAAUE,GAAc,OAAOA,EAAa,kDAAoDzO,KAElIA,euMEA,SAAkBk6C,EAAiBC,EAAgCC,GACtE,OAAO,SAAUxzC,EAAQhH,GACrB,IAAIR,EAAO,CACPM,KAAMmF,EAAgBG,kBACtBrF,OAAQiH,EAAOhC,YACfhF,aAAcA,EACdE,cAAeo6C,EACfr6C,YAAa+F,MAAMC,QAAQs0C,GAAkCA,OAAiC16C,EAC9FO,kBAAoB4F,MAAMC,QAAQs0C,GAE5BC,EADAD,GAGVx2C,IAAqBvB,sBAAsB,IAAIjD,EAAmBC,kCC3BnE,SAAoBi7C,EAAWr6C,GAClC,OAAO,SAAU4G,EAAQhH,GACrB,IAAIR,EAAO,CACPM,KAAMmF,EAAgBM,uBACtBxF,OAAQiH,EAAOhC,YACfhF,aAAcA,EACdC,YAAa,CAACw6C,GACdr6C,kBAAmBA,GAEvB2D,IAAqBvB,sBAAsB,IAAIjD,EAAmBC,uBhNEnE,SAAwBY,GAC3B,IAAIs6C,EAAO1rC,EAAS,GAAI5O,GACpByO,EAAa6rC,EAAK/6C,KAAO,iBAAmB,GAEhD,OADA+6C,EAAKr6C,QAAUq6C,EAAKr6C,SAAWwO,EAAa,2DACrC,SAAU7H,EAAQhH,GACrB,IAAIR,EAAO,CACPM,KAAMmF,EAAgBI,kBACtBtF,OAAQiH,EAAOhC,YACfhF,aAAcA,EACdI,kBAAmBs6C,GAEvB32C,IAAqBvB,sBAAsB,IAAIjD,EAAmBC,wBiNtBnE,SAAyBY,GAC5B,OAAO,SAAU4G,EAAQhH,GACrB,IAAIR,EAAO,CACPM,KAAMmF,EAAgBK,mBACtBvF,OAAQiH,EAAOhC,YACfhF,aAAcA,EACdI,kBAAmBA,GAEvB2D,IAAqBvB,sBAAsB,IAAIjD,EAAmBC,kFFPnE,SAA6B2B,GAChC,OAAO,SAAUpB,GACb,IAAI46C,EAAUx5C,GAAWA,EAAQkI,MAC7BnI,EAAOC,GAAWA,EAAQD,KAAOC,EAAQD,KAAO,GAC/CA,IACDA,EAAOnB,EAAOmB,QAGVA,EAAOA,EAAKkF,QAAQ,gBAAgB,SAAUw0C,EAAGxuC,GAAK,MAAO,IAAMA,EAAEsJ,iBAAkBtP,QAAQ,KAAM,KAE7G,IAAI3D,EAAW,IAAI6L,EAAmBvO,EAAQmB,EAAMy5C,GACpD52C,IAAqBrB,sBAAsBD,onDGsC5C,SAAwB/B,GAC3BqD,IAAqB1B,oBAAoB3B,mB1NlCtC,SAAsBm6C,EAAc15C,GACvCuE,EAAgBm1C,EAChBl1C,EAAuBxE,c0NJpB,SAAkB25C,EAAoBrtC,EAA2BC,GACpE,MAAkC,iBAAvBotC,EACA3sC,EAAiBZ,GAAWxD,SAAS+wC,EAAoBrtC,EAA2BC,GAGpFS,EAAiBZ,GAAWxD,SAAS+wC,EAAoBrtC,uBAMjE,SAA0BqtC,EAAoBrtC,EAA2BC,GAC5E,MAAkC,iBAAvBotC,EACA3sC,EAAiBZ,GAAWK,iBAAiBktC,EAAoBrtC,EAA2BC,GAG5FS,EAAiBZ,GAAWK,iBAAiBktC,EAAoBrtC,mBAQzE,SAAsBqtC,EAAoBrtC,EAA2BC,GACxE,MAAkC,iBAAvBotC,EACA3sC,EAAiBZ,GAAWM,aAAaitC,EAAoBrtC,EAA2BC,GAGxFS,EAAiBZ,GAAWM,aAAaitC,EAAoBrtC"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/container.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/container.js new file mode 100644 index 00000000..fc13c99e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/container.js @@ -0,0 +1,51 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getFromContainer = exports.useContainer = void 0; +/** + * Container to be used by this library for inversion control. If container was not implicitly set then by default + * container simply creates a new instance of the given class. + */ +const defaultContainer = new (class { + constructor() { + this.instances = []; + } + get(someClass) { + let instance = this.instances.find(instance => instance.type === someClass); + if (!instance) { + instance = { type: someClass, object: new someClass() }; + this.instances.push(instance); + } + return instance.object; + } +})(); +let userContainer; +let userContainerOptions; +/** + * Sets container to be used by this library. + */ +function useContainer(iocContainer, options) { + userContainer = iocContainer; + userContainerOptions = options; +} +exports.useContainer = useContainer; +/** + * Gets the IOC container used by this library. + */ +function getFromContainer(someClass) { + if (userContainer) { + try { + const instance = userContainer.get(someClass); + if (instance) + return instance; + if (!userContainerOptions || !userContainerOptions.fallback) + return instance; + } + catch (error) { + if (!userContainerOptions || !userContainerOptions.fallbackOnErrors) + throw error; + } + } + return defaultContainer.get(someClass); +} +exports.getFromContainer = getFromContainer; +//# sourceMappingURL=container.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/container.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/container.js.map new file mode 100644 index 00000000..6101cd02 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/container.js.map @@ -0,0 +1 @@ +{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/container.ts"],"names":[],"mappings":";;;AAeA;;;GAGG;AACH,MAAM,gBAAgB,GAAqE,IAAI,CAAC;IAAA;QACtF,cAAS,GAAsC,EAAE,CAAC;IAU5D,CAAC;IATC,GAAG,CAAI,SAAsC;QAC3C,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QAC5E,IAAI,CAAC,QAAQ,EAAE;YACb,QAAQ,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,SAAS,EAAE,EAAE,CAAC;YACxD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC/B;QAED,OAAO,QAAQ,CAAC,MAAM,CAAC;IACzB,CAAC;CACF,CAAC,EAAE,CAAC;AAEL,IAAI,aAA+E,CAAC;AACpF,IAAI,oBAAyC,CAAC;AAE9C;;GAEG;AACH,SAAgB,YAAY,CAAC,YAA0C,EAAE,OAA6B;IACpG,aAAa,GAAG,YAAY,CAAC;IAC7B,oBAAoB,GAAG,OAAO,CAAC;AACjC,CAAC;AAHD,oCAGC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAI,SAAiD;IACnF,IAAI,aAAa,EAAE;QACjB,IAAI;YACF,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,QAAQ;gBAAE,OAAO,QAAQ,CAAC;YAE9B,IAAI,CAAC,oBAAoB,IAAI,CAAC,oBAAoB,CAAC,QAAQ;gBAAE,OAAO,QAAQ,CAAC;SAC9E;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,oBAAoB,IAAI,CAAC,oBAAoB,CAAC,gBAAgB;gBAAE,MAAM,KAAK,CAAC;SAClF;KACF;IACD,OAAO,gBAAgB,CAAC,GAAG,CAAI,SAAS,CAAC,CAAC;AAC5C,CAAC;AAZD,4CAYC","sourcesContent":["/**\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(someClass: { new (...args: any[]): T } | Function): T } = new (class {\n private instances: { type: Function; object: any }[] = [];\n get(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(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(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(someClass);\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/ValidationOptions.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/ValidationOptions.js new file mode 100644 index 00000000..18058ff0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/ValidationOptions.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isValidationOptions = void 0; +function isValidationOptions(val) { + if (!val) { + return false; + } + return 'each' in val || 'message' in val || 'groups' in val || 'always' in val || 'context' in val; +} +exports.isValidationOptions = isValidationOptions; +//# sourceMappingURL=ValidationOptions.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/ValidationOptions.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/ValidationOptions.js.map new file mode 100644 index 00000000..fc71ecf3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/ValidationOptions.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationOptions.js","sourceRoot":"","sources":["../../../src/decorator/ValidationOptions.ts"],"names":[],"mappings":";;;AAiCA,SAAgB,mBAAmB,CAAC,GAAQ;IAC1C,IAAI,CAAC,GAAG,EAAE;QACR,OAAO,KAAK,CAAC;KACd;IACD,OAAO,MAAM,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,CAAC;AACrG,CAAC;AALD,kDAKC","sourcesContent":["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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayContains.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayContains.js new file mode 100644 index 00000000..7c341217 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayContains.js @@ -0,0 +1,31 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ArrayContains = exports.arrayContains = exports.ARRAY_CONTAINS = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.ARRAY_CONTAINS = 'arrayContains'; +/** + * Checks if array contains all values from the given array of values. + * If null or undefined is given then this function returns false. + */ +function arrayContains(array, values) { + if (!Array.isArray(array)) + return false; + return values.every(value => array.indexOf(value) !== -1); +} +exports.arrayContains = arrayContains; +/** + * Checks if array contains all values from the given array of values. + * If null or undefined is given then this function returns false. + */ +function ArrayContains(values, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.ARRAY_CONTAINS, + constraints: [values], + validator: { + validate: (value, args) => arrayContains(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must contain $constraint1 values', validationOptions), + }, + }, validationOptions); +} +exports.ArrayContains = ArrayContains; +//# sourceMappingURL=ArrayContains.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayContains.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayContains.js.map new file mode 100644 index 00000000..4c86eacd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayContains.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ArrayContains.js","sourceRoot":"","sources":["../../../../src/decorator/array/ArrayContains.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,cAAc,GAAG,eAAe,CAAC;AAE9C;;;GAGG;AACH,SAAgB,aAAa,CAAC,KAAc,EAAE,MAAa;IACzD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAExC,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAJD,sCAIC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAC,MAAa,EAAE,iBAAqC;IAChF,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,sBAAc;QACpB,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC7E,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,4CAA4C,EACvE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,sCAeC","sourcesContent":["import { 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 + '$property must contain $constraint1 values',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayMaxSize.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayMaxSize.js new file mode 100644 index 00000000..983c6855 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayMaxSize.js @@ -0,0 +1,29 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ArrayMaxSize = exports.arrayMaxSize = exports.ARRAY_MAX_SIZE = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.ARRAY_MAX_SIZE = 'arrayMaxSize'; +/** + * Checks if the array's length is less or equal to the specified number. + * If null or undefined is given then this function returns false. + */ +function arrayMaxSize(array, max) { + return Array.isArray(array) && array.length <= max; +} +exports.arrayMaxSize = arrayMaxSize; +/** + * Checks if the array's length is less or equal to the specified number. + * If null or undefined is given then this function returns false. + */ +function ArrayMaxSize(max, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.ARRAY_MAX_SIZE, + constraints: [max], + validator: { + validate: (value, args) => arrayMaxSize(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must contain not more than $constraint1 elements', validationOptions), + }, + }, validationOptions); +} +exports.ArrayMaxSize = ArrayMaxSize; +//# sourceMappingURL=ArrayMaxSize.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayMaxSize.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayMaxSize.js.map new file mode 100644 index 00000000..a881110d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayMaxSize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ArrayMaxSize.js","sourceRoot":"","sources":["../../../../src/decorator/array/ArrayMaxSize.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,cAAc,GAAG,cAAc,CAAC;AAE7C;;;GAGG;AACH,SAAgB,YAAY,CAAC,KAAc,EAAE,GAAW;IACtD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;AACrD,CAAC;AAFD,oCAEC;AAED;;;GAGG;AACH,SAAgB,YAAY,CAAC,GAAW,EAAE,iBAAqC;IAC7E,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,sBAAc;QACpB,WAAW,EAAE,CAAC,GAAG,CAAC;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC5E,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,4DAA4D,EACvF,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,oCAeC","sourcesContent":["import { 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 + '$property must contain not more than $constraint1 elements',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayMinSize.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayMinSize.js new file mode 100644 index 00000000..f865fd92 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayMinSize.js @@ -0,0 +1,29 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ArrayMinSize = exports.arrayMinSize = exports.ARRAY_MIN_SIZE = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.ARRAY_MIN_SIZE = 'arrayMinSize'; +/** + * Checks if the array's length is greater than or equal to the specified number. + * If null or undefined is given then this function returns false. + */ +function arrayMinSize(array, min) { + return Array.isArray(array) && array.length >= min; +} +exports.arrayMinSize = arrayMinSize; +/** + * Checks if the array's length is greater than or equal to the specified number. + * If null or undefined is given then this function returns false. + */ +function ArrayMinSize(min, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.ARRAY_MIN_SIZE, + constraints: [min], + validator: { + validate: (value, args) => arrayMinSize(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must contain at least $constraint1 elements', validationOptions), + }, + }, validationOptions); +} +exports.ArrayMinSize = ArrayMinSize; +//# sourceMappingURL=ArrayMinSize.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayMinSize.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayMinSize.js.map new file mode 100644 index 00000000..61960f5d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayMinSize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ArrayMinSize.js","sourceRoot":"","sources":["../../../../src/decorator/array/ArrayMinSize.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,cAAc,GAAG,cAAc,CAAC;AAE7C;;;GAGG;AACH,SAAgB,YAAY,CAAC,KAAc,EAAE,GAAW;IACtD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;AACrD,CAAC;AAFD,oCAEC;AAED;;;GAGG;AACH,SAAgB,YAAY,CAAC,GAAW,EAAE,iBAAqC;IAC7E,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,sBAAc;QACpB,WAAW,EAAE,CAAC,GAAG,CAAC;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC5E,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,uDAAuD,EAClF,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,oCAeC","sourcesContent":["import { 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 + '$property must contain at least $constraint1 elements',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayNotContains.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayNotContains.js new file mode 100644 index 00000000..ca0ed386 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayNotContains.js @@ -0,0 +1,31 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ArrayNotContains = exports.arrayNotContains = exports.ARRAY_NOT_CONTAINS = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.ARRAY_NOT_CONTAINS = 'arrayNotContains'; +/** + * Checks if array does not contain any of the given values. + * If null or undefined is given then this function returns false. + */ +function arrayNotContains(array, values) { + if (!Array.isArray(array)) + return false; + return values.every(value => array.indexOf(value) === -1); +} +exports.arrayNotContains = arrayNotContains; +/** + * Checks if array does not contain any of the given values. + * If null or undefined is given then this function returns false. + */ +function ArrayNotContains(values, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.ARRAY_NOT_CONTAINS, + constraints: [values], + validator: { + validate: (value, args) => arrayNotContains(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property should not contain $constraint1 values', validationOptions), + }, + }, validationOptions); +} +exports.ArrayNotContains = ArrayNotContains; +//# sourceMappingURL=ArrayNotContains.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayNotContains.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayNotContains.js.map new file mode 100644 index 00000000..bdb2889b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayNotContains.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ArrayNotContains.js","sourceRoot":"","sources":["../../../../src/decorator/array/ArrayNotContains.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,kBAAkB,GAAG,kBAAkB,CAAC;AAErD;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,KAAc,EAAE,MAAa;IAC5D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAExC,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAJD,4CAIC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,MAAa,EAAE,iBAAqC;IACnF,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,0BAAkB;QACxB,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAChF,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,kDAAkD,EAC7E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,4CAeC","sourcesContent":["import { 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 + '$property should not contain $constraint1 values',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayNotEmpty.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayNotEmpty.js new file mode 100644 index 00000000..175a5ec0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayNotEmpty.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ArrayNotEmpty = exports.arrayNotEmpty = exports.ARRAY_NOT_EMPTY = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.ARRAY_NOT_EMPTY = 'arrayNotEmpty'; +/** + * Checks if given array is not empty. + * If null or undefined is given then this function returns false. + */ +function arrayNotEmpty(array) { + return Array.isArray(array) && array.length > 0; +} +exports.arrayNotEmpty = arrayNotEmpty; +/** + * Checks if given array is not empty. + * If null or undefined is given then this function returns false. + */ +function ArrayNotEmpty(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.ARRAY_NOT_EMPTY, + validator: { + validate: (value, args) => arrayNotEmpty(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property should not be empty', validationOptions), + }, + }, validationOptions); +} +exports.ArrayNotEmpty = ArrayNotEmpty; +//# sourceMappingURL=ArrayNotEmpty.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayNotEmpty.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayNotEmpty.js.map new file mode 100644 index 00000000..2ff0208d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayNotEmpty.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ArrayNotEmpty.js","sourceRoot":"","sources":["../../../../src/decorator/array/ArrayNotEmpty.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,eAAe,GAAG,eAAe,CAAC;AAE/C;;;GAGG;AACH,SAAgB,aAAa,CAAC,KAAc;IAC1C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAClD,CAAC;AAFD,sCAEC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAC,iBAAqC;IACjE,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,uBAAe;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC;YACxD,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,+BAA+B,EAAE,iBAAiB,CAAC;SAC5G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAXD,sCAWC","sourcesContent":["import { 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 + '$property should not be empty', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayUnique.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayUnique.js new file mode 100644 index 00000000..8ff0de79 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayUnique.js @@ -0,0 +1,36 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ArrayUnique = exports.arrayUnique = exports.ARRAY_UNIQUE = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.ARRAY_UNIQUE = 'arrayUnique'; +/** + * Checks if all array's values are unique. Comparison for objects is reference-based. + * If null or undefined is given then this function returns false. + */ +function arrayUnique(array, identifier) { + if (!Array.isArray(array)) + return false; + if (identifier) { + array = array.map(o => (o != null ? identifier(o) : o)); + } + const uniqueItems = array.filter((a, b, c) => c.indexOf(a) === b); + return array.length === uniqueItems.length; +} +exports.arrayUnique = arrayUnique; +/** + * Checks if all array's values are unique. Comparison for objects is reference-based. + * If null or undefined is given then this function returns false. + */ +function ArrayUnique(identifierOrOptions, validationOptions) { + const identifier = typeof identifierOrOptions === 'function' ? identifierOrOptions : undefined; + const options = typeof identifierOrOptions !== 'function' ? identifierOrOptions : validationOptions; + return (0, ValidateBy_1.ValidateBy)({ + name: exports.ARRAY_UNIQUE, + validator: { + validate: (value, args) => arrayUnique(value, identifier), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + "All $property's elements must be unique", options), + }, + }, options); +} +exports.ArrayUnique = ArrayUnique; +//# sourceMappingURL=ArrayUnique.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayUnique.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayUnique.js.map new file mode 100644 index 00000000..2f790302 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/array/ArrayUnique.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ArrayUnique.js","sourceRoot":"","sources":["../../../../src/decorator/array/ArrayUnique.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,YAAY,GAAG,aAAa,CAAC;AAG1C;;;GAGG;AACH,SAAgB,WAAW,CAAC,KAAgB,EAAE,UAAkC;IAC9E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAExC,IAAI,UAAU,EAAE;QACd,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACzD;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAClE,OAAO,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC;AAC7C,CAAC;AATD,kCASC;AAED;;;GAGG;AACH,SAAgB,WAAW,CACzB,mBAAkE,EAClE,iBAAqC;IAErC,MAAM,UAAU,GAAG,OAAO,mBAAmB,KAAK,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/F,MAAM,OAAO,GAAG,OAAO,mBAAmB,KAAK,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAEpG,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,oBAAY;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC;YAClE,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,yCAAyC,EAAE,OAAO,CAAC;SAC5G;KACF,EACD,OAAO,CACR,CAAC;AACJ,CAAC;AAjBD,kCAiBC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const ARRAY_UNIQUE = 'arrayUnique';\nexport type ArrayUniqueIdentifier = (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(\n identifierOrOptions?: ArrayUniqueIdentifier | 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 + \"All $property's elements must be unique\", options),\n },\n },\n options\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/Allow.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/Allow.js new file mode 100644 index 00000000..b4f4c6f1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/Allow.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Allow = void 0; +const ValidationTypes_1 = require("../../validation/ValidationTypes"); +const ValidationMetadata_1 = require("../../metadata/ValidationMetadata"); +const MetadataStorage_1 = require("../../metadata/MetadataStorage"); +/** + * If object has both allowed and not allowed properties a validation error will be thrown. + */ +function Allow(validationOptions) { + return function (object, propertyName) { + const args = { + type: ValidationTypes_1.ValidationTypes.WHITELIST, + target: object.constructor, + propertyName: propertyName, + validationOptions: validationOptions, + }; + (0, MetadataStorage_1.getMetadataStorage)().addValidationMetadata(new ValidationMetadata_1.ValidationMetadata(args)); + }; +} +exports.Allow = Allow; +//# sourceMappingURL=Allow.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/Allow.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/Allow.js.map new file mode 100644 index 00000000..abee5121 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/Allow.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Allow.js","sourceRoot":"","sources":["../../../../src/decorator/common/Allow.ts"],"names":[],"mappings":";;;AAEA,sEAAmE;AACnE,0EAAuE;AACvE,oEAAoE;AAEpE;;GAEG;AACH,SAAgB,KAAK,CAAC,iBAAqC;IACzD,OAAO,UAAU,MAAc,EAAE,YAAoB;QACnD,MAAM,IAAI,GAA2B;YACnC,IAAI,EAAE,iCAAe,CAAC,SAAS;YAC/B,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,iBAAiB,EAAE,iBAAiB;SACrC,CAAC;QACF,IAAA,oCAAkB,GAAE,CAAC,qBAAqB,CAAC,IAAI,uCAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;AACJ,CAAC;AAVD,sBAUC","sourcesContent":["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 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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/Equals.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/Equals.js new file mode 100644 index 00000000..2ba24224 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/Equals.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Equals = exports.equals = exports.EQUALS = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.EQUALS = 'equals'; +/** + * Checks if value matches ("===") the comparison. + */ +function equals(value, comparison) { + return value === comparison; +} +exports.equals = equals; +/** + * Checks if value matches ("===") the comparison. + */ +function Equals(comparison, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.EQUALS, + constraints: [comparison], + validator: { + validate: (value, args) => equals(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be equal to $constraint1', validationOptions), + }, + }, validationOptions); +} +exports.Equals = Equals; +//# sourceMappingURL=Equals.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/Equals.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/Equals.js.map new file mode 100644 index 00000000..f7d64d97 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/Equals.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Equals.js","sourceRoot":"","sources":["../../../../src/decorator/common/Equals.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,MAAM,GAAG,QAAQ,CAAC;AAE/B;;GAEG;AACH,SAAgB,MAAM,CAAC,KAAc,EAAE,UAAmB;IACxD,OAAO,KAAK,KAAK,UAAU,CAAC;AAC9B,CAAC;AAFD,wBAEC;AAED;;GAEG;AACH,SAAgB,MAAM,CAAC,UAAe,EAAE,iBAAqC;IAC3E,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,cAAM;QACZ,WAAW,EAAE,CAAC,UAAU,CAAC;QACzB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtE,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,yCAAyC,EACpE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,wBAeC","sourcesContent":["import { 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 + '$property must be equal to $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsDefined.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsDefined.js new file mode 100644 index 00000000..a19410ff --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsDefined.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsDefined = exports.isDefined = exports.IS_DEFINED = void 0; +const ValidateBy_1 = require("./ValidateBy"); +const ValidationTypes_1 = require("../../validation/ValidationTypes"); +// isDefined is (yet) a special case +exports.IS_DEFINED = ValidationTypes_1.ValidationTypes.IS_DEFINED; +/** + * Checks if value is defined (!== undefined, !== null). + */ +function isDefined(value) { + return value !== undefined && value !== null; +} +exports.isDefined = isDefined; +/** + * Checks if value is defined (!== undefined, !== null). + */ +function IsDefined(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_DEFINED, + validator: { + validate: (value) => isDefined(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property should not be null or undefined', validationOptions), + }, + }, validationOptions); +} +exports.IsDefined = IsDefined; +//# sourceMappingURL=IsDefined.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsDefined.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsDefined.js.map new file mode 100644 index 00000000..fdf5914b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsDefined.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsDefined.js","sourceRoot":"","sources":["../../../../src/decorator/common/IsDefined.ts"],"names":[],"mappings":";;;AACA,6CAAwD;AACxD,sEAAmE;AAEnE,oCAAoC;AACvB,QAAA,UAAU,GAAG,iCAAe,CAAC,UAAU,CAAC;AAErD;;GAEG;AACH,SAAgB,SAAS,CAAC,KAAU;IAClC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AAC/C,CAAC;AAFD,8BAEC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,iBAAqC;IAC7D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,kBAAU;QAChB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAW,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;YAC9C,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,2CAA2C,EACtE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,8BAcC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from './ValidateBy';\nimport { ValidationTypes } from '../../validation/ValidationTypes';\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 + '$property should not be null or undefined',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsEmpty.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsEmpty.js new file mode 100644 index 00000000..833f3146 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsEmpty.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsEmpty = exports.isEmpty = exports.IS_EMPTY = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.IS_EMPTY = 'isEmpty'; +/** + * Checks if given value is empty (=== '', === null, === undefined). + */ +function isEmpty(value) { + return value === '' || value === null || value === undefined; +} +exports.isEmpty = isEmpty; +/** + * Checks if given value is empty (=== '', === null, === undefined). + */ +function IsEmpty(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_EMPTY, + validator: { + validate: (value, args) => isEmpty(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be empty', validationOptions), + }, + }, validationOptions); +} +exports.IsEmpty = IsEmpty; +//# sourceMappingURL=IsEmpty.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsEmpty.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsEmpty.js.map new file mode 100644 index 00000000..acf18120 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsEmpty.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsEmpty.js","sourceRoot":"","sources":["../../../../src/decorator/common/IsEmpty.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,QAAQ,GAAG,SAAS,CAAC;AAElC;;GAEG;AACH,SAAgB,OAAO,CAAC,KAAc;IACpC,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;AAC/D,CAAC;AAFD,0BAEC;AAED;;GAEG;AACH,SAAgB,OAAO,CAAC,iBAAqC;IAC3D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,gBAAQ;QACd,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;YAClD,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,yBAAyB,EAAE,iBAAiB,CAAC;SACtG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAXD,0BAWC","sourcesContent":["import { 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 + '$property must be empty', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsIn.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsIn.js new file mode 100644 index 00000000..01710650 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsIn.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsIn = exports.isIn = exports.IS_IN = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.IS_IN = 'isIn'; +/** + * Checks if given value is in a array of allowed values. + */ +function isIn(value, possibleValues) { + return !Array.isArray(possibleValues) || possibleValues.some(possibleValue => possibleValue === value); +} +exports.isIn = isIn; +/** + * Checks if given value is in a array of allowed values. + */ +function IsIn(values, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_IN, + constraints: [values], + validator: { + validate: (value, args) => isIn(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be one of the following values: $constraint1', validationOptions), + }, + }, validationOptions); +} +exports.IsIn = IsIn; +//# sourceMappingURL=IsIn.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsIn.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsIn.js.map new file mode 100644 index 00000000..cdd03950 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsIn.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsIn.js","sourceRoot":"","sources":["../../../../src/decorator/common/IsIn.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,KAAK,GAAG,MAAM,CAAC;AAE5B;;GAEG;AACH,SAAgB,IAAI,CAAC,KAAc,EAAE,cAAkC;IACrE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,aAAa,KAAK,KAAK,CAAC,CAAC;AACzG,CAAC;AAFD,oBAEC;AAED;;GAEG;AACH,SAAgB,IAAI,CAAC,MAAsB,EAAE,iBAAqC;IAChF,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,aAAK;QACX,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACpE,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,6DAA6D,EACxF,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,oBAeC","sourcesContent":["import { 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 + '$property must be one of the following values: $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsLatLong.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsLatLong.js new file mode 100644 index 00000000..2e734b25 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsLatLong.js @@ -0,0 +1,30 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsLatLong = exports.isLatLong = exports.IS_LATLONG = void 0; +const ValidateBy_1 = require("./ValidateBy"); +const isLatLong_1 = __importDefault(require("validator/lib/isLatLong")); +exports.IS_LATLONG = 'isLatLong'; +/** + * Checks if a value is string in format a "latitude,longitude". + */ +function isLatLong(value) { + return typeof value === 'string' && (0, isLatLong_1.default)(value); +} +exports.isLatLong = isLatLong; +/** + * Checks if a value is string in format a "latitude,longitude". + */ +function IsLatLong(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_LATLONG, + validator: { + validate: (value, args) => isLatLong(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a latitude,longitude string', validationOptions), + }, + }, validationOptions); +} +exports.IsLatLong = IsLatLong; +//# sourceMappingURL=IsLatLong.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsLatLong.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsLatLong.js.map new file mode 100644 index 00000000..940e7eb7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsLatLong.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsLatLong.js","sourceRoot":"","sources":["../../../../src/decorator/common/IsLatLong.ts"],"names":[],"mappings":";;;;;;AACA,6CAAwD;AACxD,wEAAyD;AAE5C,QAAA,UAAU,GAAG,WAAW,CAAC;AAEtC;;GAEG;AACH,SAAgB,SAAS,CAAC,KAAa;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,mBAAkB,EAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAFD,8BAEC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,iBAAqC;IAC7D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,kBAAU;QAChB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;YACpD,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,+CAA+C,EAC1E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,8BAcC","sourcesContent":["import { 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 + '$property must be a latitude,longitude string',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsLatitude.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsLatitude.js new file mode 100644 index 00000000..c562e1a5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsLatitude.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsLatitude = exports.isLatitude = exports.IS_LATITUDE = void 0; +const ValidateBy_1 = require("./ValidateBy"); +const IsLatLong_1 = require("./IsLatLong"); +exports.IS_LATITUDE = 'isLatitude'; +/** + * Checks if a given value is a latitude. + */ +function isLatitude(value) { + return (typeof value === 'number' || typeof value === 'string') && (0, IsLatLong_1.isLatLong)(`${value},0`); +} +exports.isLatitude = isLatitude; +/** + * Checks if a given value is a latitude. + */ +function IsLatitude(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_LATITUDE, + validator: { + validate: (value, args) => isLatitude(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a latitude string or number', validationOptions), + }, + }, validationOptions); +} +exports.IsLatitude = IsLatitude; +//# sourceMappingURL=IsLatitude.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsLatitude.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsLatitude.js.map new file mode 100644 index 00000000..02770e6b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsLatitude.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsLatitude.js","sourceRoot":"","sources":["../../../../src/decorator/common/IsLatitude.ts"],"names":[],"mappings":";;;AACA,6CAAwD;AACxD,2CAAwC;AAE3B,QAAA,WAAW,GAAG,YAAY,CAAC;AAExC;;GAEG;AACH,SAAgB,UAAU,CAAC,KAAa;IACtC,OAAO,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,IAAI,IAAA,qBAAS,EAAC,GAAG,KAAK,IAAI,CAAC,CAAC;AAC7F,CAAC;AAFD,gCAEC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,iBAAqC;IAC9D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,mBAAW;QACjB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;YACrD,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,+CAA+C,EAC1E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,gCAcC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from './ValidateBy';\nimport { isLatLong } from './IsLatLong';\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 + '$property must be a latitude string or number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsLongitude.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsLongitude.js new file mode 100644 index 00000000..39c55013 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsLongitude.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsLongitude = exports.isLongitude = exports.IS_LONGITUDE = void 0; +const ValidateBy_1 = require("./ValidateBy"); +const IsLatLong_1 = require("./IsLatLong"); +exports.IS_LONGITUDE = 'isLongitude'; +/** + * Checks if a given value is a longitude. + */ +function isLongitude(value) { + return (typeof value === 'number' || typeof value === 'string') && (0, IsLatLong_1.isLatLong)(`0,${value}`); +} +exports.isLongitude = isLongitude; +/** + * Checks if a given value is a longitude. + */ +function IsLongitude(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_LONGITUDE, + validator: { + validate: (value, args) => isLongitude(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a longitude string or number', validationOptions), + }, + }, validationOptions); +} +exports.IsLongitude = IsLongitude; +//# sourceMappingURL=IsLongitude.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsLongitude.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsLongitude.js.map new file mode 100644 index 00000000..c0a303cd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsLongitude.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsLongitude.js","sourceRoot":"","sources":["../../../../src/decorator/common/IsLongitude.ts"],"names":[],"mappings":";;;AACA,6CAAwD;AACxD,2CAAwC;AAE3B,QAAA,YAAY,GAAG,aAAa,CAAC;AAE1C;;GAEG;AACH,SAAgB,WAAW,CAAC,KAAa;IACvC,OAAO,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,IAAI,IAAA,qBAAS,EAAC,KAAK,KAAK,EAAE,CAAC,CAAC;AAC7F,CAAC;AAFD,kCAEC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,iBAAqC;IAC/D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,oBAAY;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;YACtD,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,gDAAgD,EAC3E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,kCAcC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from './ValidateBy';\nimport { isLatLong } from './IsLatLong';\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 + '$property must be a longitude string or number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsNotEmpty.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsNotEmpty.js new file mode 100644 index 00000000..c8310d3b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsNotEmpty.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsNotEmpty = exports.isNotEmpty = exports.IS_NOT_EMPTY = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.IS_NOT_EMPTY = 'isNotEmpty'; +/** + * Checks if given value is not empty (!== '', !== null, !== undefined). + */ +function isNotEmpty(value) { + return value !== '' && value !== null && value !== undefined; +} +exports.isNotEmpty = isNotEmpty; +/** + * Checks if given value is not empty (!== '', !== null, !== undefined). + */ +function IsNotEmpty(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_NOT_EMPTY, + validator: { + validate: (value, args) => isNotEmpty(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property should not be empty', validationOptions), + }, + }, validationOptions); +} +exports.IsNotEmpty = IsNotEmpty; +//# sourceMappingURL=IsNotEmpty.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsNotEmpty.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsNotEmpty.js.map new file mode 100644 index 00000000..9690513e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsNotEmpty.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsNotEmpty.js","sourceRoot":"","sources":["../../../../src/decorator/common/IsNotEmpty.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,YAAY,GAAG,YAAY,CAAC;AAEzC;;GAEG;AACH,SAAgB,UAAU,CAAC,KAAc;IACvC,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;AAC/D,CAAC;AAFD,gCAEC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,iBAAqC;IAC9D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,oBAAY;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;YACrD,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,+BAA+B,EAAE,iBAAiB,CAAC;SAC5G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAXD,gCAWC","sourcesContent":["import { 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 + '$property should not be empty', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsNotIn.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsNotIn.js new file mode 100644 index 00000000..cf8f0401 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsNotIn.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsNotIn = exports.isNotIn = exports.IS_NOT_IN = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.IS_NOT_IN = 'isNotIn'; +/** + * Checks if given value not in a array of allowed values. + */ +function isNotIn(value, possibleValues) { + return !Array.isArray(possibleValues) || !possibleValues.some(possibleValue => possibleValue === value); +} +exports.isNotIn = isNotIn; +/** + * Checks if given value not in a array of allowed values. + */ +function IsNotIn(values, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_NOT_IN, + constraints: [values], + validator: { + validate: (value, args) => isNotIn(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property should not be one of the following values: $constraint1', validationOptions), + }, + }, validationOptions); +} +exports.IsNotIn = IsNotIn; +//# sourceMappingURL=IsNotIn.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsNotIn.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsNotIn.js.map new file mode 100644 index 00000000..df82c40e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsNotIn.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsNotIn.js","sourceRoot":"","sources":["../../../../src/decorator/common/IsNotIn.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,SAAS,GAAG,SAAS,CAAC;AAEnC;;GAEG;AACH,SAAgB,OAAO,CAAC,KAAc,EAAE,cAAkC;IACxE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,aAAa,KAAK,KAAK,CAAC,CAAC;AAC1G,CAAC;AAFD,0BAEC;AAED;;GAEG;AACH,SAAgB,OAAO,CAAC,MAAsB,EAAE,iBAAqC;IACnF,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,iBAAS;QACf,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACvE,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,mEAAmE,EAC9F,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,0BAeC","sourcesContent":["import { 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 + '$property should not be one of the following values: $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsOptional.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsOptional.js new file mode 100644 index 00000000..bb95c0cc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsOptional.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsOptional = void 0; +const ValidationTypes_1 = require("../../validation/ValidationTypes"); +const ValidationMetadata_1 = require("../../metadata/ValidationMetadata"); +const MetadataStorage_1 = require("../../metadata/MetadataStorage"); +/** + * Checks if value is missing and if so, ignores all validators. + */ +function IsOptional(validationOptions) { + return function (object, propertyName) { + const args = { + type: ValidationTypes_1.ValidationTypes.CONDITIONAL_VALIDATION, + target: object.constructor, + propertyName: propertyName, + constraints: [ + (object, value) => { + return object[propertyName] !== null && object[propertyName] !== undefined; + }, + ], + validationOptions: validationOptions, + }; + (0, MetadataStorage_1.getMetadataStorage)().addValidationMetadata(new ValidationMetadata_1.ValidationMetadata(args)); + }; +} +exports.IsOptional = IsOptional; +//# sourceMappingURL=IsOptional.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsOptional.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsOptional.js.map new file mode 100644 index 00000000..783183fd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/IsOptional.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsOptional.js","sourceRoot":"","sources":["../../../../src/decorator/common/IsOptional.ts"],"names":[],"mappings":";;;AAEA,sEAAmE;AACnE,0EAAuE;AACvE,oEAAoE;AAEpE;;GAEG;AACH,SAAgB,UAAU,CAAC,iBAAqC;IAC9D,OAAO,UAAU,MAAc,EAAE,YAAoB;QACnD,MAAM,IAAI,GAA2B;YACnC,IAAI,EAAE,iCAAe,CAAC,sBAAsB;YAC5C,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,WAAW,EAAE;gBACX,CAAC,MAAW,EAAE,KAAU,EAAW,EAAE;oBACnC,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,SAAS,CAAC;gBAC7E,CAAC;aACF;YACD,iBAAiB,EAAE,iBAAiB;SACrC,CAAC;QACF,IAAA,oCAAkB,GAAE,CAAC,qBAAqB,CAAC,IAAI,uCAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;AACJ,CAAC;AAfD,gCAeC","sourcesContent":["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 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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/NotEquals.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/NotEquals.js new file mode 100644 index 00000000..af9ae0e4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/NotEquals.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.NotEquals = exports.notEquals = exports.NOT_EQUALS = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.NOT_EQUALS = 'notEquals'; +/** + * Checks if value does not match ("!==") the comparison. + */ +function notEquals(value, comparison) { + return value !== comparison; +} +exports.notEquals = notEquals; +/** + * Checks if value does not match ("!==") the comparison. + */ +function NotEquals(comparison, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.NOT_EQUALS, + constraints: [comparison], + validator: { + validate: (value, args) => notEquals(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property should not be equal to $constraint1', validationOptions), + }, + }, validationOptions); +} +exports.NotEquals = NotEquals; +//# sourceMappingURL=NotEquals.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/NotEquals.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/NotEquals.js.map new file mode 100644 index 00000000..89a27de1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/NotEquals.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NotEquals.js","sourceRoot":"","sources":["../../../../src/decorator/common/NotEquals.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,UAAU,GAAG,WAAW,CAAC;AAEtC;;GAEG;AACH,SAAgB,SAAS,CAAC,KAAc,EAAE,UAAmB;IAC3D,OAAO,KAAK,KAAK,UAAU,CAAC;AAC9B,CAAC;AAFD,8BAEC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,UAAe,EAAE,iBAAqC;IAC9E,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,kBAAU;QAChB,WAAW,EAAE,CAAC,UAAU,CAAC;QACzB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACzE,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,+CAA+C,EAC1E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,8BAeC","sourcesContent":["import { 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 + '$property should not be equal to $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/Validate.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/Validate.js new file mode 100644 index 00000000..18f5820b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/Validate.js @@ -0,0 +1,42 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Validate = exports.ValidatorConstraint = void 0; +const ValidationMetadata_1 = require("../../metadata/ValidationMetadata"); +const MetadataStorage_1 = require("../../metadata/MetadataStorage"); +const ValidationTypes_1 = require("../../validation/ValidationTypes"); +const ConstraintMetadata_1 = require("../../metadata/ConstraintMetadata"); +/** + * Registers custom validator class. + */ +function ValidatorConstraint(options) { + return function (target) { + const isAsync = options && options.async; + let name = options && options.name ? options.name : ''; + if (!name) { + name = target.name; + if (!name) + // generate name if it was not given + name = name.replace(/\.?([A-Z]+)/g, (x, y) => '_' + y.toLowerCase()).replace(/^_/, ''); + } + const metadata = new ConstraintMetadata_1.ConstraintMetadata(target, name, isAsync); + (0, MetadataStorage_1.getMetadataStorage)().addConstraintMetadata(metadata); + }; +} +exports.ValidatorConstraint = ValidatorConstraint; +function Validate(constraintClass, constraintsOrValidationOptions, maybeValidationOptions) { + return function (object, propertyName) { + const args = { + type: ValidationTypes_1.ValidationTypes.CUSTOM_VALIDATION, + target: object.constructor, + propertyName: propertyName, + constraintCls: constraintClass, + constraints: Array.isArray(constraintsOrValidationOptions) ? constraintsOrValidationOptions : undefined, + validationOptions: !Array.isArray(constraintsOrValidationOptions) + ? constraintsOrValidationOptions + : maybeValidationOptions, + }; + (0, MetadataStorage_1.getMetadataStorage)().addValidationMetadata(new ValidationMetadata_1.ValidationMetadata(args)); + }; +} +exports.Validate = Validate; +//# sourceMappingURL=Validate.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/Validate.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/Validate.js.map new file mode 100644 index 00000000..50ab3ecc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/Validate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Validate.js","sourceRoot":"","sources":["../../../../src/decorator/common/Validate.ts"],"names":[],"mappings":";;;AAEA,0EAAuE;AACvE,oEAAoE;AACpE,sEAAmE;AACnE,0EAAuE;AAEvE;;GAEG;AACH,SAAgB,mBAAmB,CAAC,OAA4C;IAC9E,OAAO,UAAU,MAAgB;QAC/B,MAAM,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;QACzC,IAAI,IAAI,GAAG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,GAAI,MAAc,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,IAAI;gBACP,oCAAoC;gBACpC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAI,CAAY,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SACtG;QACD,MAAM,QAAQ,GAAG,IAAI,uCAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/D,IAAA,oCAAkB,GAAE,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC,CAAC;AACJ,CAAC;AAbD,kDAaC;AAYD,SAAgB,QAAQ,CACtB,eAAyB,EACzB,8BAA0D,EAC1D,sBAA0C;IAE1C,OAAO,UAAU,MAAc,EAAE,YAAoB;QACnD,MAAM,IAAI,GAA2B;YACnC,IAAI,EAAE,iCAAe,CAAC,iBAAiB;YACvC,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,aAAa,EAAE,eAAe;YAC9B,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,SAAS;YACvG,iBAAiB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,8BAA8B,CAAC;gBAC/D,CAAC,CAAC,8BAA8B;gBAChC,CAAC,CAAC,sBAAsB;SAC3B,CAAC;QACF,IAAA,oCAAkB,GAAE,CAAC,qBAAqB,CAAC,IAAI,uCAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;AACJ,CAAC;AAlBD,4BAkBC","sourcesContent":["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 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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidateBy.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidateBy.js new file mode 100644 index 00000000..337bfdc3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidateBy.js @@ -0,0 +1,25 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ValidateBy = exports.buildMessage = void 0; +const register_decorator_1 = require("../../register-decorator"); +function buildMessage(impl, validationOptions) { + return (validationArguments) => { + const eachPrefix = validationOptions && validationOptions.each ? 'each value in ' : ''; + return impl(eachPrefix, validationArguments); + }; +} +exports.buildMessage = buildMessage; +function ValidateBy(options, validationOptions) { + return function (object, propertyName) { + (0, register_decorator_1.registerDecorator)({ + name: options.name, + target: object.constructor, + propertyName: propertyName, + options: validationOptions, + constraints: options.constraints, + validator: options.validator, + }); + }; +} +exports.ValidateBy = ValidateBy; +//# sourceMappingURL=ValidateBy.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidateBy.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidateBy.js.map new file mode 100644 index 00000000..07e45460 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidateBy.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidateBy.js","sourceRoot":"","sources":["../../../../src/decorator/common/ValidateBy.ts"],"names":[],"mappings":";;;AACA,iEAA6D;AAW7D,SAAgB,YAAY,CAC1B,IAAgE,EAChE,iBAAqC;IAErC,OAAO,CAAC,mBAAyC,EAAU,EAAE;QAC3D,MAAM,UAAU,GAAG,iBAAiB,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QACvF,OAAO,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IAC/C,CAAC,CAAC;AACJ,CAAC;AARD,oCAQC;AAED,SAAgB,UAAU,CAAC,OAA0B,EAAE,iBAAqC;IAC1F,OAAO,UAAU,MAAc,EAAE,YAAoB;QACnD,IAAA,sCAAiB,EAAC;YAChB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,OAAO,EAAE,iBAAiB;YAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAXD,gCAWC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { registerDecorator } from '../../register-decorator';\nimport { ValidationArguments } from '../../validation/ValidationArguments';\nimport { ValidatorConstraintInterface } from '../../validation/ValidatorConstraintInterface';\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 ? 'each value in ' : '';\n return impl(eachPrefix, validationArguments);\n };\n}\n\nexport function ValidateBy(options: ValidateByOptions, validationOptions?: ValidationOptions): PropertyDecorator {\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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidateIf.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidateIf.js new file mode 100644 index 00000000..6a904687 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidateIf.js @@ -0,0 +1,23 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ValidateIf = void 0; +const ValidationTypes_1 = require("../../validation/ValidationTypes"); +const ValidationMetadata_1 = require("../../metadata/ValidationMetadata"); +const MetadataStorage_1 = require("../../metadata/MetadataStorage"); +/** + * Ignores the other validators on a property when the provided condition function returns false. + */ +function ValidateIf(condition, validationOptions) { + return function (object, propertyName) { + const args = { + type: ValidationTypes_1.ValidationTypes.CONDITIONAL_VALIDATION, + target: object.constructor, + propertyName: propertyName, + constraints: [condition], + validationOptions: validationOptions, + }; + (0, MetadataStorage_1.getMetadataStorage)().addValidationMetadata(new ValidationMetadata_1.ValidationMetadata(args)); + }; +} +exports.ValidateIf = ValidateIf; +//# sourceMappingURL=ValidateIf.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidateIf.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidateIf.js.map new file mode 100644 index 00000000..735b5ca1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidateIf.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidateIf.js","sourceRoot":"","sources":["../../../../src/decorator/common/ValidateIf.ts"],"names":[],"mappings":";;;AAEA,sEAAmE;AACnE,0EAAuE;AACvE,oEAAoE;AAEpE;;GAEG;AACH,SAAgB,UAAU,CACxB,SAA+C,EAC/C,iBAAqC;IAErC,OAAO,UAAU,MAAc,EAAE,YAAoB;QACnD,MAAM,IAAI,GAA2B;YACnC,IAAI,EAAE,iCAAe,CAAC,sBAAsB;YAC5C,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,WAAW,EAAE,CAAC,SAAS,CAAC;YACxB,iBAAiB,EAAE,iBAAiB;SACrC,CAAC;QACF,IAAA,oCAAkB,GAAE,CAAC,qBAAqB,CAAC,IAAI,uCAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;AACJ,CAAC;AAdD,gCAcC","sourcesContent":["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 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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidateNested.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidateNested.js new file mode 100644 index 00000000..8c67facc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidateNested.js @@ -0,0 +1,25 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ValidateNested = void 0; +const ValidationTypes_1 = require("../../validation/ValidationTypes"); +const ValidationMetadata_1 = require("../../metadata/ValidationMetadata"); +const MetadataStorage_1 = require("../../metadata/MetadataStorage"); +/** + * Objects / object arrays marked with this decorator will also be validated. + */ +function ValidateNested(validationOptions) { + const opts = { ...validationOptions }; + const eachPrefix = opts.each ? 'each value in ' : ''; + opts.message = opts.message || eachPrefix + 'nested property $property must be either object or array'; + return function (object, propertyName) { + const args = { + type: ValidationTypes_1.ValidationTypes.NESTED_VALIDATION, + target: object.constructor, + propertyName: propertyName, + validationOptions: opts, + }; + (0, MetadataStorage_1.getMetadataStorage)().addValidationMetadata(new ValidationMetadata_1.ValidationMetadata(args)); + }; +} +exports.ValidateNested = ValidateNested; +//# sourceMappingURL=ValidateNested.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidateNested.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidateNested.js.map new file mode 100644 index 00000000..3eb2f6aa --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidateNested.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidateNested.js","sourceRoot":"","sources":["../../../../src/decorator/common/ValidateNested.ts"],"names":[],"mappings":";;;AAEA,sEAAmE;AACnE,0EAAuE;AACvE,oEAAoE;AAEpE;;GAEG;AACH,SAAgB,cAAc,CAAC,iBAAqC;IAClE,MAAM,IAAI,GAAsB,EAAE,GAAG,iBAAiB,EAAE,CAAC;IACzD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,UAAU,GAAG,0DAA0D,CAAC;IAEvG,OAAO,UAAU,MAAc,EAAE,YAAoB;QACnD,MAAM,IAAI,GAA2B;YACnC,IAAI,EAAE,iCAAe,CAAC,iBAAiB;YACvC,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,iBAAiB,EAAE,IAAI;SACxB,CAAC;QACF,IAAA,oCAAkB,GAAE,CAAC,qBAAqB,CAAC,IAAI,uCAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;AACJ,CAAC;AAdD,wCAcC","sourcesContent":["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 * 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 ? 'each value in ' : '';\n opts.message = opts.message || eachPrefix + 'nested property $property must be either object or array';\n\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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidatePromise.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidatePromise.js new file mode 100644 index 00000000..b87fdd66 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidatePromise.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ValidatePromise = void 0; +const ValidationTypes_1 = require("../../validation/ValidationTypes"); +const ValidationMetadata_1 = require("../../metadata/ValidationMetadata"); +const MetadataStorage_1 = require("../../metadata/MetadataStorage"); +/** + * Resolve promise before validation + */ +function ValidatePromise(validationOptions) { + return function (object, propertyName) { + const args = { + type: ValidationTypes_1.ValidationTypes.PROMISE_VALIDATION, + target: object.constructor, + propertyName: propertyName, + validationOptions: validationOptions, + }; + (0, MetadataStorage_1.getMetadataStorage)().addValidationMetadata(new ValidationMetadata_1.ValidationMetadata(args)); + }; +} +exports.ValidatePromise = ValidatePromise; +//# sourceMappingURL=ValidatePromise.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidatePromise.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidatePromise.js.map new file mode 100644 index 00000000..e6a3077d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/common/ValidatePromise.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidatePromise.js","sourceRoot":"","sources":["../../../../src/decorator/common/ValidatePromise.ts"],"names":[],"mappings":";;;AAEA,sEAAmE;AACnE,0EAAuE;AACvE,oEAAoE;AAEpE;;GAEG;AACH,SAAgB,eAAe,CAAC,iBAAqC;IACnE,OAAO,UAAU,MAAc,EAAE,YAAoB;QACnD,MAAM,IAAI,GAA2B;YACnC,IAAI,EAAE,iCAAe,CAAC,kBAAkB;YACxC,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,iBAAiB,EAAE,iBAAiB;SACrC,CAAC;QACF,IAAA,oCAAkB,GAAE,CAAC,qBAAqB,CAAC,IAAI,uCAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;AACJ,CAAC;AAVD,0CAUC","sourcesContent":["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 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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/date/MaxDate.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/date/MaxDate.js new file mode 100644 index 00000000..34308336 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/date/MaxDate.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MaxDate = exports.maxDate = exports.MAX_DATE = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.MAX_DATE = 'maxDate'; +/** + * Checks if the value is a date that's before the specified date. + */ +function maxDate(date, maxDate) { + return date instanceof Date && date.getTime() <= maxDate.getTime(); +} +exports.maxDate = maxDate; +/** + * Checks if the value is a date that's after the specified date. + */ +function MaxDate(date, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.MAX_DATE, + constraints: [date], + validator: { + validate: (value, args) => maxDate(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => 'maximal allowed date for ' + eachPrefix + '$property is $constraint1', validationOptions), + }, + }, validationOptions); +} +exports.MaxDate = MaxDate; +//# sourceMappingURL=MaxDate.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/date/MaxDate.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/date/MaxDate.js.map new file mode 100644 index 00000000..ebc4d955 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/date/MaxDate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MaxDate.js","sourceRoot":"","sources":["../../../../src/decorator/date/MaxDate.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,QAAQ,GAAG,SAAS,CAAC;AAElC;;GAEG;AACH,SAAgB,OAAO,CAAC,IAAa,EAAE,OAAa;IAClD,OAAO,IAAI,YAAY,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;AACrE,CAAC;AAFD,0BAEC;AAED;;GAEG;AACH,SAAgB,OAAO,CAAC,IAAU,EAAE,iBAAqC;IACvE,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,gBAAQ;QACd,WAAW,EAAE,CAAC,IAAI,CAAC;QACnB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACvE,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,2BAA2B,GAAG,UAAU,GAAG,2BAA2B,EACpF,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,0BAeC","sourcesContent":["import { 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): boolean {\n return date instanceof Date && date.getTime() <= 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, 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 => 'maximal allowed date for ' + eachPrefix + '$property is $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/date/MinDate.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/date/MinDate.js new file mode 100644 index 00000000..8d5e54f8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/date/MinDate.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MinDate = exports.minDate = exports.MIN_DATE = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.MIN_DATE = 'minDate'; +/** + * Checks if the value is a date that's after the specified date. + */ +function minDate(date, minDate) { + return date instanceof Date && date.getTime() >= minDate.getTime(); +} +exports.minDate = minDate; +/** + * Checks if the value is a date that's after the specified date. + */ +function MinDate(date, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.MIN_DATE, + constraints: [date], + validator: { + validate: (value, args) => minDate(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => 'minimal allowed date for ' + eachPrefix + '$property is $constraint1', validationOptions), + }, + }, validationOptions); +} +exports.MinDate = MinDate; +//# sourceMappingURL=MinDate.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/date/MinDate.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/date/MinDate.js.map new file mode 100644 index 00000000..a85faa58 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/date/MinDate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MinDate.js","sourceRoot":"","sources":["../../../../src/decorator/date/MinDate.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,QAAQ,GAAG,SAAS,CAAC;AAElC;;GAEG;AACH,SAAgB,OAAO,CAAC,IAAa,EAAE,OAAa;IAClD,OAAO,IAAI,YAAY,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;AACrE,CAAC;AAFD,0BAEC;AAED;;GAEG;AACH,SAAgB,OAAO,CAAC,IAAU,EAAE,iBAAqC;IACvE,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,gBAAQ;QACd,WAAW,EAAE,CAAC,IAAI,CAAC;QACnB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACvE,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,2BAA2B,GAAG,UAAU,GAAG,2BAA2B,EACpF,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,0BAeC","sourcesContent":["import { 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): boolean {\n return date instanceof Date && date.getTime() >= 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, 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 => 'minimal allowed date for ' + eachPrefix + '$property is $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/decorators.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/decorators.js new file mode 100644 index 00000000..019193a3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/decorators.js @@ -0,0 +1,143 @@ +"use strict"; +// ------------------------------------------------------------------------- +// System +// ------------------------------------------------------------------------- +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +// ------------------------------------------------------------------------- +// Common checkers +// ------------------------------------------------------------------------- +__exportStar(require("./common/Allow"), exports); +__exportStar(require("./common/IsDefined"), exports); +__exportStar(require("./common/IsOptional"), exports); +__exportStar(require("./common/Validate"), exports); +__exportStar(require("./common/ValidateBy"), exports); +__exportStar(require("./common/ValidateIf"), exports); +__exportStar(require("./common/ValidateNested"), exports); +__exportStar(require("./common/ValidatePromise"), exports); +__exportStar(require("./common/IsLatLong"), exports); +__exportStar(require("./common/IsLatitude"), exports); +__exportStar(require("./common/IsLongitude"), exports); +__exportStar(require("./common/Equals"), exports); +__exportStar(require("./common/NotEquals"), exports); +__exportStar(require("./common/IsEmpty"), exports); +__exportStar(require("./common/IsNotEmpty"), exports); +__exportStar(require("./common/IsIn"), exports); +__exportStar(require("./common/IsNotIn"), exports); +// ------------------------------------------------------------------------- +// Number checkers +// ------------------------------------------------------------------------- +__exportStar(require("./number/IsDivisibleBy"), exports); +__exportStar(require("./number/IsPositive"), exports); +__exportStar(require("./number/IsNegative"), exports); +__exportStar(require("./number/Max"), exports); +__exportStar(require("./number/Min"), exports); +// ------------------------------------------------------------------------- +// Date checkers +// ------------------------------------------------------------------------- +__exportStar(require("./date/MinDate"), exports); +__exportStar(require("./date/MaxDate"), exports); +// ------------------------------------------------------------------------- +// String checkers +// ------------------------------------------------------------------------- +__exportStar(require("./string/Contains"), exports); +__exportStar(require("./string/NotContains"), exports); +__exportStar(require("./string/IsAlpha"), exports); +__exportStar(require("./string/IsAlphanumeric"), exports); +__exportStar(require("./string/IsDecimal"), exports); +__exportStar(require("./string/IsAscii"), exports); +__exportStar(require("./string/IsBase64"), exports); +__exportStar(require("./string/IsByteLength"), exports); +__exportStar(require("./string/IsCreditCard"), exports); +__exportStar(require("./string/IsCurrency"), exports); +__exportStar(require("./string/IsEmail"), exports); +__exportStar(require("./string/IsFQDN"), exports); +__exportStar(require("./string/IsFullWidth"), exports); +__exportStar(require("./string/IsHalfWidth"), exports); +__exportStar(require("./string/IsVariableWidth"), exports); +__exportStar(require("./string/IsHexColor"), exports); +__exportStar(require("./string/IsHexadecimal"), exports); +__exportStar(require("./string/IsMacAddress"), exports); +__exportStar(require("./string/IsIP"), exports); +__exportStar(require("./string/IsPort"), exports); +__exportStar(require("./string/IsISBN"), exports); +__exportStar(require("./string/IsISIN"), exports); +__exportStar(require("./string/IsISO8601"), exports); +__exportStar(require("./string/IsJSON"), exports); +__exportStar(require("./string/IsJWT"), exports); +__exportStar(require("./string/IsLowercase"), exports); +__exportStar(require("./string/IsMobilePhone"), exports); +__exportStar(require("./string/IsISO31661Alpha2"), exports); +__exportStar(require("./string/IsISO31661Alpha3"), exports); +__exportStar(require("./string/IsMongoId"), exports); +__exportStar(require("./string/IsMultibyte"), exports); +__exportStar(require("./string/IsSurrogatePair"), exports); +__exportStar(require("./string/IsUrl"), exports); +__exportStar(require("./string/IsUUID"), exports); +__exportStar(require("./string/IsFirebasePushId"), exports); +__exportStar(require("./string/IsUppercase"), exports); +__exportStar(require("./string/Length"), exports); +__exportStar(require("./string/MaxLength"), exports); +__exportStar(require("./string/MinLength"), exports); +__exportStar(require("./string/Matches"), exports); +__exportStar(require("./string/IsPhoneNumber"), exports); +__exportStar(require("./string/IsMilitaryTime"), exports); +__exportStar(require("./string/IsHash"), exports); +__exportStar(require("./string/IsISSN"), exports); +__exportStar(require("./string/IsDateString"), exports); +__exportStar(require("./string/IsBooleanString"), exports); +__exportStar(require("./string/IsNumberString"), exports); +__exportStar(require("./string/IsBase32"), exports); +__exportStar(require("./string/IsBIC"), exports); +__exportStar(require("./string/IsBtcAddress"), exports); +__exportStar(require("./string/IsDataURI"), exports); +__exportStar(require("./string/IsEAN"), exports); +__exportStar(require("./string/IsEthereumAddress"), exports); +__exportStar(require("./string/IsHSL"), exports); +__exportStar(require("./string/IsIBAN"), exports); +__exportStar(require("./string/IsIdentityCard"), exports); +__exportStar(require("./string/IsISRC"), exports); +__exportStar(require("./string/IsLocale"), exports); +__exportStar(require("./string/IsMagnetURI"), exports); +__exportStar(require("./string/IsMimeType"), exports); +__exportStar(require("./string/IsOctal"), exports); +__exportStar(require("./string/IsPassportNumber"), exports); +__exportStar(require("./string/IsPostalCode"), exports); +__exportStar(require("./string/IsRFC3339"), exports); +__exportStar(require("./string/IsRgbColor"), exports); +__exportStar(require("./string/IsSemVer"), exports); +// ------------------------------------------------------------------------- +// Type checkers +// ------------------------------------------------------------------------- +__exportStar(require("./typechecker/IsBoolean"), exports); +__exportStar(require("./typechecker/IsDate"), exports); +__exportStar(require("./typechecker/IsNumber"), exports); +__exportStar(require("./typechecker/IsEnum"), exports); +__exportStar(require("./typechecker/IsInt"), exports); +__exportStar(require("./typechecker/IsString"), exports); +__exportStar(require("./typechecker/IsArray"), exports); +__exportStar(require("./typechecker/IsObject"), exports); +// ------------------------------------------------------------------------- +// Array checkers +// ------------------------------------------------------------------------- +__exportStar(require("./array/ArrayContains"), exports); +__exportStar(require("./array/ArrayNotContains"), exports); +__exportStar(require("./array/ArrayNotEmpty"), exports); +__exportStar(require("./array/ArrayMinSize"), exports); +__exportStar(require("./array/ArrayMaxSize"), exports); +__exportStar(require("./array/ArrayUnique"), exports); +// ------------------------------------------------------------------------- +// Object checkers +// ------------------------------------------------------------------------- +__exportStar(require("./object/IsNotEmptyObject"), exports); +__exportStar(require("./object/IsInstance"), exports); +//# sourceMappingURL=decorators.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/decorators.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/decorators.js.map new file mode 100644 index 00000000..c0171ea3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/decorators.js.map @@ -0,0 +1 @@ +{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../src/decorator/decorators.ts"],"names":[],"mappings":";AAAA,4EAA4E;AAC5E,SAAS;AACT,4EAA4E;;;;;;;;;;;;AAE5E,4EAA4E;AAC5E,kBAAkB;AAClB,4EAA4E;AAE5E,iDAA+B;AAC/B,qDAAmC;AACnC,sDAAoC;AACpC,oDAAkC;AAClC,sDAAoC;AACpC,sDAAoC;AACpC,0DAAwC;AACxC,2DAAyC;AACzC,qDAAmC;AACnC,sDAAoC;AACpC,uDAAqC;AACrC,kDAAgC;AAChC,qDAAmC;AACnC,mDAAiC;AACjC,sDAAoC;AACpC,gDAA8B;AAC9B,mDAAiC;AAEjC,4EAA4E;AAC5E,kBAAkB;AAClB,4EAA4E;AAE5E,yDAAuC;AACvC,sDAAoC;AACpC,sDAAoC;AACpC,+CAA6B;AAC7B,+CAA6B;AAE7B,4EAA4E;AAC5E,gBAAgB;AAChB,4EAA4E;AAE5E,iDAA+B;AAC/B,iDAA+B;AAE/B,4EAA4E;AAC5E,kBAAkB;AAClB,4EAA4E;AAE5E,oDAAkC;AAClC,uDAAqC;AACrC,mDAAiC;AACjC,0DAAwC;AACxC,qDAAmC;AACnC,mDAAiC;AACjC,oDAAkC;AAClC,wDAAsC;AACtC,wDAAsC;AACtC,sDAAoC;AACpC,mDAAiC;AACjC,kDAAgC;AAChC,uDAAqC;AACrC,uDAAqC;AACrC,2DAAyC;AACzC,sDAAoC;AACpC,yDAAuC;AACvC,wDAAsC;AACtC,gDAA8B;AAC9B,kDAAgC;AAChC,kDAAgC;AAChC,kDAAgC;AAChC,qDAAmC;AACnC,kDAAgC;AAChC,iDAA+B;AAC/B,uDAAqC;AACrC,yDAAuC;AACvC,4DAA0C;AAC1C,4DAA0C;AAC1C,qDAAmC;AACnC,uDAAqC;AACrC,2DAAyC;AACzC,iDAA+B;AAC/B,kDAAgC;AAChC,4DAA0C;AAC1C,uDAAqC;AACrC,kDAAgC;AAChC,qDAAmC;AACnC,qDAAmC;AACnC,mDAAiC;AACjC,yDAAuC;AACvC,0DAAwC;AACxC,kDAAgC;AAChC,kDAAgC;AAChC,wDAAsC;AACtC,2DAAyC;AACzC,0DAAwC;AACxC,oDAAkC;AAClC,iDAA+B;AAC/B,wDAAsC;AACtC,qDAAmC;AACnC,iDAA+B;AAC/B,6DAA2C;AAC3C,iDAA+B;AAC/B,kDAAgC;AAChC,0DAAwC;AACxC,kDAAgC;AAChC,oDAAkC;AAClC,uDAAqC;AACrC,sDAAoC;AACpC,mDAAiC;AACjC,4DAA0C;AAC1C,wDAAsC;AACtC,qDAAmC;AACnC,sDAAoC;AACpC,oDAAkC;AAElC,4EAA4E;AAC5E,gBAAgB;AAChB,4EAA4E;AAE5E,0DAAwC;AACxC,uDAAqC;AACrC,yDAAuC;AACvC,uDAAqC;AACrC,sDAAoC;AACpC,yDAAuC;AACvC,wDAAsC;AACtC,yDAAuC;AAEvC,4EAA4E;AAC5E,iBAAiB;AACjB,4EAA4E;AAE5E,wDAAsC;AACtC,2DAAyC;AACzC,wDAAsC;AACtC,uDAAqC;AACrC,uDAAqC;AACrC,sDAAoC;AAEpC,4EAA4E;AAC5E,kBAAkB;AAClB,4EAA4E;AAE5E,4DAA0C;AAC1C,sDAAoC","sourcesContent":["// -------------------------------------------------------------------------\n// System\n// -------------------------------------------------------------------------\n\n// -------------------------------------------------------------------------\n// Common checkers\n// -------------------------------------------------------------------------\n\nexport * from './common/Allow';\nexport * from './common/IsDefined';\nexport * from './common/IsOptional';\nexport * from './common/Validate';\nexport * from './common/ValidateBy';\nexport * from './common/ValidateIf';\nexport * from './common/ValidateNested';\nexport * from './common/ValidatePromise';\nexport * from './common/IsLatLong';\nexport * from './common/IsLatitude';\nexport * from './common/IsLongitude';\nexport * from './common/Equals';\nexport * from './common/NotEquals';\nexport * from './common/IsEmpty';\nexport * from './common/IsNotEmpty';\nexport * from './common/IsIn';\nexport * from './common/IsNotIn';\n\n// -------------------------------------------------------------------------\n// Number checkers\n// -------------------------------------------------------------------------\n\nexport * from './number/IsDivisibleBy';\nexport * from './number/IsPositive';\nexport * from './number/IsNegative';\nexport * from './number/Max';\nexport * from './number/Min';\n\n// -------------------------------------------------------------------------\n// Date checkers\n// -------------------------------------------------------------------------\n\nexport * from './date/MinDate';\nexport * from './date/MaxDate';\n\n// -------------------------------------------------------------------------\n// String checkers\n// -------------------------------------------------------------------------\n\nexport * from './string/Contains';\nexport * from './string/NotContains';\nexport * from './string/IsAlpha';\nexport * from './string/IsAlphanumeric';\nexport * from './string/IsDecimal';\nexport * from './string/IsAscii';\nexport * from './string/IsBase64';\nexport * from './string/IsByteLength';\nexport * from './string/IsCreditCard';\nexport * from './string/IsCurrency';\nexport * from './string/IsEmail';\nexport * from './string/IsFQDN';\nexport * from './string/IsFullWidth';\nexport * from './string/IsHalfWidth';\nexport * from './string/IsVariableWidth';\nexport * from './string/IsHexColor';\nexport * from './string/IsHexadecimal';\nexport * from './string/IsMacAddress';\nexport * from './string/IsIP';\nexport * from './string/IsPort';\nexport * from './string/IsISBN';\nexport * from './string/IsISIN';\nexport * from './string/IsISO8601';\nexport * from './string/IsJSON';\nexport * from './string/IsJWT';\nexport * from './string/IsLowercase';\nexport * from './string/IsMobilePhone';\nexport * from './string/IsISO31661Alpha2';\nexport * from './string/IsISO31661Alpha3';\nexport * from './string/IsMongoId';\nexport * from './string/IsMultibyte';\nexport * from './string/IsSurrogatePair';\nexport * from './string/IsUrl';\nexport * from './string/IsUUID';\nexport * from './string/IsFirebasePushId';\nexport * from './string/IsUppercase';\nexport * from './string/Length';\nexport * from './string/MaxLength';\nexport * from './string/MinLength';\nexport * from './string/Matches';\nexport * from './string/IsPhoneNumber';\nexport * from './string/IsMilitaryTime';\nexport * from './string/IsHash';\nexport * from './string/IsISSN';\nexport * from './string/IsDateString';\nexport * from './string/IsBooleanString';\nexport * from './string/IsNumberString';\nexport * from './string/IsBase32';\nexport * from './string/IsBIC';\nexport * from './string/IsBtcAddress';\nexport * from './string/IsDataURI';\nexport * from './string/IsEAN';\nexport * from './string/IsEthereumAddress';\nexport * from './string/IsHSL';\nexport * from './string/IsIBAN';\nexport * from './string/IsIdentityCard';\nexport * from './string/IsISRC';\nexport * from './string/IsLocale';\nexport * from './string/IsMagnetURI';\nexport * from './string/IsMimeType';\nexport * from './string/IsOctal';\nexport * from './string/IsPassportNumber';\nexport * from './string/IsPostalCode';\nexport * from './string/IsRFC3339';\nexport * from './string/IsRgbColor';\nexport * from './string/IsSemVer';\n\n// -------------------------------------------------------------------------\n// Type checkers\n// -------------------------------------------------------------------------\n\nexport * from './typechecker/IsBoolean';\nexport * from './typechecker/IsDate';\nexport * from './typechecker/IsNumber';\nexport * from './typechecker/IsEnum';\nexport * from './typechecker/IsInt';\nexport * from './typechecker/IsString';\nexport * from './typechecker/IsArray';\nexport * from './typechecker/IsObject';\n\n// -------------------------------------------------------------------------\n// Array checkers\n// -------------------------------------------------------------------------\n\nexport * from './array/ArrayContains';\nexport * from './array/ArrayNotContains';\nexport * from './array/ArrayNotEmpty';\nexport * from './array/ArrayMinSize';\nexport * from './array/ArrayMaxSize';\nexport * from './array/ArrayUnique';\n\n// -------------------------------------------------------------------------\n// Object checkers\n// -------------------------------------------------------------------------\n\nexport * from './object/IsNotEmptyObject';\nexport * from './object/IsInstance';\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/IsDivisibleBy.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/IsDivisibleBy.js new file mode 100644 index 00000000..3c2188c6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/IsDivisibleBy.js @@ -0,0 +1,31 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsDivisibleBy = exports.isDivisibleBy = exports.IS_DIVISIBLE_BY = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isDivisibleBy_1 = __importDefault(require("validator/lib/isDivisibleBy")); +exports.IS_DIVISIBLE_BY = 'isDivisibleBy'; +/** + * Checks if value is a number that's divisible by another. + */ +function isDivisibleBy(value, num) { + return typeof value === 'number' && typeof num === 'number' && (0, isDivisibleBy_1.default)(String(value), num); +} +exports.isDivisibleBy = isDivisibleBy; +/** + * Checks if value is a number that's divisible by another. + */ +function IsDivisibleBy(num, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_DIVISIBLE_BY, + constraints: [num], + validator: { + validate: (value, args) => isDivisibleBy(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be divisible by $constraint1', validationOptions), + }, + }, validationOptions); +} +exports.IsDivisibleBy = IsDivisibleBy; +//# sourceMappingURL=IsDivisibleBy.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/IsDivisibleBy.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/IsDivisibleBy.js.map new file mode 100644 index 00000000..25e00385 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/IsDivisibleBy.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsDivisibleBy.js","sourceRoot":"","sources":["../../../../src/decorator/number/IsDivisibleBy.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,gFAAiE;AAEpD,QAAA,eAAe,GAAG,eAAe,CAAC;AAE/C;;GAEG;AACH,SAAgB,aAAa,CAAC,KAAc,EAAE,GAAW;IACvD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,IAAA,uBAAsB,EAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;AAC5G,CAAC;AAFD,sCAEC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,GAAW,EAAE,iBAAqC;IAC9E,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,uBAAe;QACrB,WAAW,EAAE,CAAC,GAAG,CAAC;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC7E,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,6CAA6C,EACxE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,sCAeC","sourcesContent":["import { 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 + '$property must be divisible by $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/IsNegative.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/IsNegative.js new file mode 100644 index 00000000..b0080b05 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/IsNegative.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsNegative = exports.isNegative = exports.IS_NEGATIVE = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.IS_NEGATIVE = 'isNegative'; +/** + * Checks if the value is a negative number smaller than zero. + */ +function isNegative(value) { + return typeof value === 'number' && value < 0; +} +exports.isNegative = isNegative; +/** + * Checks if the value is a negative number smaller than zero. + */ +function IsNegative(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_NEGATIVE, + validator: { + validate: (value, args) => isNegative(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a negative number', validationOptions), + }, + }, validationOptions); +} +exports.IsNegative = IsNegative; +//# sourceMappingURL=IsNegative.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/IsNegative.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/IsNegative.js.map new file mode 100644 index 00000000..6d788b24 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/IsNegative.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsNegative.js","sourceRoot":"","sources":["../../../../src/decorator/number/IsNegative.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,WAAW,GAAG,YAAY,CAAC;AAExC;;GAEG;AACH,SAAgB,UAAU,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC;AAChD,CAAC;AAFD,gCAEC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,iBAAqC;IAC9D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,mBAAW;QACjB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;YACrD,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,qCAAqC,EAChE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,gCAcC","sourcesContent":["import { 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 + '$property must be a negative number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/IsPositive.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/IsPositive.js new file mode 100644 index 00000000..7007b550 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/IsPositive.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsPositive = exports.isPositive = exports.IS_POSITIVE = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.IS_POSITIVE = 'isPositive'; +/** + * Checks if the value is a positive number greater than zero. + */ +function isPositive(value) { + return typeof value === 'number' && value > 0; +} +exports.isPositive = isPositive; +/** + * Checks if the value is a positive number greater than zero. + */ +function IsPositive(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_POSITIVE, + validator: { + validate: (value, args) => isPositive(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a positive number', validationOptions), + }, + }, validationOptions); +} +exports.IsPositive = IsPositive; +//# sourceMappingURL=IsPositive.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/IsPositive.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/IsPositive.js.map new file mode 100644 index 00000000..471d718c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/IsPositive.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsPositive.js","sourceRoot":"","sources":["../../../../src/decorator/number/IsPositive.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,WAAW,GAAG,YAAY,CAAC;AAExC;;GAEG;AACH,SAAgB,UAAU,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC;AAChD,CAAC;AAFD,gCAEC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,iBAAqC;IAC9D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,mBAAW;QACjB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;YACrD,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,qCAAqC,EAChE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,gCAcC","sourcesContent":["import { 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 + '$property must be a positive number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/Max.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/Max.js new file mode 100644 index 00000000..12f9ccd2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/Max.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Max = exports.max = exports.MAX = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.MAX = 'max'; +/** + * Checks if the first number is less than or equal to the second. + */ +function max(num, max) { + return typeof num === 'number' && typeof max === 'number' && num <= max; +} +exports.max = max; +/** + * Checks if the first number is less than or equal to the second. + */ +function Max(maxValue, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.MAX, + constraints: [maxValue], + validator: { + validate: (value, args) => max(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must not be greater than $constraint1', validationOptions), + }, + }, validationOptions); +} +exports.Max = Max; +//# sourceMappingURL=Max.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/Max.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/Max.js.map new file mode 100644 index 00000000..e7b6d9f2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/Max.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Max.js","sourceRoot":"","sources":["../../../../src/decorator/number/Max.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,GAAG,GAAG,KAAK,CAAC;AAEzB;;GAEG;AACH,SAAgB,GAAG,CAAC,GAAY,EAAE,GAAW;IAC3C,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,GAAG,CAAC;AAC1E,CAAC;AAFD,kBAEC;AAED;;GAEG;AACH,SAAgB,GAAG,CAAC,QAAgB,EAAE,iBAAqC;IACzE,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,WAAG;QACT,WAAW,EAAE,CAAC,QAAQ,CAAC;QACvB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACnE,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,iDAAiD,EAC5E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,kBAeC","sourcesContent":["import { 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 first number is less than or equal to the second.\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 + '$property must not be greater than $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/Min.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/Min.js new file mode 100644 index 00000000..c7e39898 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/Min.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Min = exports.min = exports.MIN = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.MIN = 'min'; +/** + * Checks if the first number is greater than or equal to the second. + */ +function min(num, min) { + return typeof num === 'number' && typeof min === 'number' && num >= min; +} +exports.min = min; +/** + * Checks if the first number is greater than or equal to the second. + */ +function Min(minValue, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.MIN, + constraints: [minValue], + validator: { + validate: (value, args) => min(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must not be less than $constraint1', validationOptions), + }, + }, validationOptions); +} +exports.Min = Min; +//# sourceMappingURL=Min.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/Min.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/Min.js.map new file mode 100644 index 00000000..d34c8f00 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/number/Min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Min.js","sourceRoot":"","sources":["../../../../src/decorator/number/Min.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,GAAG,GAAG,KAAK,CAAC;AAEzB;;GAEG;AACH,SAAgB,GAAG,CAAC,GAAY,EAAE,GAAW;IAC3C,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,GAAG,CAAC;AAC1E,CAAC;AAFD,kBAEC;AAED;;GAEG;AACH,SAAgB,GAAG,CAAC,QAAgB,EAAE,iBAAqC;IACzE,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,WAAG;QACT,WAAW,EAAE,CAAC,QAAQ,CAAC;QACvB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACnE,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,8CAA8C,EACzE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,kBAeC","sourcesContent":["import { 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 first number is greater than or equal to the second.\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 + '$property must not be less than $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/object/IsInstance.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/object/IsInstance.js new file mode 100644 index 00000000..f387c21e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/object/IsInstance.js @@ -0,0 +1,34 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsInstance = exports.isInstance = exports.IS_INSTANCE = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.IS_INSTANCE = 'isInstance'; +/** + * Checks if the value is an instance of the specified object. + */ +function isInstance(object, targetTypeConstructor) { + return (targetTypeConstructor && typeof targetTypeConstructor === 'function' && object instanceof targetTypeConstructor); +} +exports.isInstance = isInstance; +/** + * Checks if the value is an instance of the specified object. + */ +function IsInstance(targetType, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_INSTANCE, + constraints: [targetType], + validator: { + validate: (value, args) => isInstance(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)((eachPrefix, args) => { + if (args.constraints[0]) { + return eachPrefix + `$property must be an instance of ${args.constraints[0].name}`; + } + else { + return eachPrefix + `${exports.IS_INSTANCE} decorator expects and object as value, but got falsy value.`; + } + }, validationOptions), + }, + }, validationOptions); +} +exports.IsInstance = IsInstance; +//# sourceMappingURL=IsInstance.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/object/IsInstance.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/object/IsInstance.js.map new file mode 100644 index 00000000..05c00593 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/object/IsInstance.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsInstance.js","sourceRoot":"","sources":["../../../../src/decorator/object/IsInstance.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,WAAW,GAAG,YAAY,CAAC;AAExC;;GAEG;AACH,SAAgB,UAAU,CAAC,MAAe,EAAE,qBAAkD;IAC5F,OAAO,CACL,qBAAqB,IAAI,OAAO,qBAAqB,KAAK,UAAU,IAAI,MAAM,YAAY,qBAAqB,CAChH,CAAC;AACJ,CAAC;AAJD,gCAIC;AAED;;GAEG;AACH,SAAgB,UAAU,CACxB,UAAuC,EACvC,iBAAqC;IAErC,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,mBAAW;QACjB,WAAW,EAAE,CAAC,UAAU,CAAC;QACzB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC1E,cAAc,EAAE,IAAA,yBAAY,EAAC,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE;gBAChD,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;oBACvB,OAAO,UAAU,GAAG,oCAAoC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAc,EAAE,CAAC;iBAC9F;qBAAM;oBACL,OAAO,UAAU,GAAG,GAAG,mBAAW,8DAA8D,CAAC;iBAClG;YACH,CAAC,EAAE,iBAAiB,CAAC;SACtB;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AArBD,gCAqBC","sourcesContent":["import { 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 + `$property must be an instance of ${args.constraints[0].name as string}`;\n } else {\n return eachPrefix + `${IS_INSTANCE} decorator expects and object as value, but got falsy value.`;\n }\n }, validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/object/IsNotEmptyObject.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/object/IsNotEmptyObject.js new file mode 100644 index 00000000..82f7a885 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/object/IsNotEmptyObject.js @@ -0,0 +1,41 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsNotEmptyObject = exports.isNotEmptyObject = exports.IS_NOT_EMPTY_OBJECT = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const IsObject_1 = require("../typechecker/IsObject"); +exports.IS_NOT_EMPTY_OBJECT = 'isNotEmptyObject'; +/** + * Checks if the value is valid Object & not empty. + * Returns false if the value is not an object or an empty valid object. + */ +function isNotEmptyObject(value, options) { + if (!(0, IsObject_1.isObject)(value)) { + return false; + } + if ((options === null || options === void 0 ? void 0 : options.nullable) === true) { + return !Object.values(value).every(propertyValue => propertyValue === null || propertyValue === undefined); + } + for (const key in value) { + if (value.hasOwnProperty(key)) { + return true; + } + } + return false; +} +exports.isNotEmptyObject = isNotEmptyObject; +/** + * Checks if the value is valid Object & not empty. + * Returns false if the value is not an object or an empty valid object. + */ +function IsNotEmptyObject(options, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_NOT_EMPTY_OBJECT, + constraints: [options], + validator: { + validate: (value, args) => isNotEmptyObject(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a non-empty object', validationOptions), + }, + }, validationOptions); +} +exports.IsNotEmptyObject = IsNotEmptyObject; +//# sourceMappingURL=IsNotEmptyObject.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/object/IsNotEmptyObject.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/object/IsNotEmptyObject.js.map new file mode 100644 index 00000000..f317d586 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/object/IsNotEmptyObject.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsNotEmptyObject.js","sourceRoot":"","sources":["../../../../src/decorator/object/IsNotEmptyObject.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAChE,sDAAmD;AAEtC,QAAA,mBAAmB,GAAG,kBAAkB,CAAC;AAEtD;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,KAAc,EAAE,OAAgC;IAC/E,IAAI,CAAC,IAAA,mBAAQ,EAAC,KAAK,CAAC,EAAE;QACpB,OAAO,KAAK,CAAC;KACd;IAED,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,MAAK,IAAI,EAAE;QAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,SAAS,CAAC,CAAC;KAC5G;IAED,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;QACvB,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YAC7B,OAAO,IAAI,CAAC;SACb;KACF;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAhBD,4CAgBC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAC9B,OAAgC,EAChC,iBAAqC;IAErC,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,2BAAmB;QACzB,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAChF,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,sCAAsC,EACjE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAlBD,4CAkBC","sourcesContent":["import { 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 === true) {\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 + '$property must be a non-empty object',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/Contains.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/Contains.js new file mode 100644 index 00000000..dffe6ce1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/Contains.js @@ -0,0 +1,33 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Contains = exports.contains = exports.CONTAINS = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const contains_1 = __importDefault(require("validator/lib/contains")); +exports.CONTAINS = 'contains'; +/** + * Checks if the string contains the seed. + * If given value is not a string, then it returns false. + */ +function contains(value, seed) { + return typeof value === 'string' && (0, contains_1.default)(value, seed); +} +exports.contains = contains; +/** + * Checks if the string contains the seed. + * If given value is not a string, then it returns false. + */ +function Contains(seed, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.CONTAINS, + constraints: [seed], + validator: { + validate: (value, args) => contains(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must contain a $constraint1 string', validationOptions), + }, + }, validationOptions); +} +exports.Contains = Contains; +//# sourceMappingURL=Contains.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/Contains.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/Contains.js.map new file mode 100644 index 00000000..07297bef --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/Contains.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Contains.js","sourceRoot":"","sources":["../../../../src/decorator/string/Contains.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,sEAAuD;AAE1C,QAAA,QAAQ,GAAG,UAAU,CAAC;AAEnC;;;GAGG;AACH,SAAgB,QAAQ,CAAC,KAAc,EAAE,IAAY;IACnD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,kBAAiB,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACrE,CAAC;AAFD,4BAEC;AAED;;;GAGG;AACH,SAAgB,QAAQ,CAAC,IAAY,EAAE,iBAAqC;IAC1E,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,gBAAQ;QACd,WAAW,EAAE,CAAC,IAAI,CAAC;QACnB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACxE,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,8CAA8C,EACzE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,4BAeC","sourcesContent":["import { 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 + '$property must contain a $constraint1 string',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsAlpha.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsAlpha.js new file mode 100644 index 00000000..39477378 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsAlpha.js @@ -0,0 +1,33 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsAlpha = exports.isAlpha = exports.IS_ALPHA = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isAlpha_1 = __importDefault(require("validator/lib/isAlpha")); +exports.IS_ALPHA = 'isAlpha'; +/** + * Checks if the string contains only letters (a-zA-Z). + * If given value is not a string, then it returns false. + */ +function isAlpha(value, locale) { + return typeof value === 'string' && (0, isAlpha_1.default)(value, locale); +} +exports.isAlpha = isAlpha; +/** + * Checks if the string contains only letters (a-zA-Z). + * If given value is not a string, then it returns false. + */ +function IsAlpha(locale, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_ALPHA, + constraints: [locale], + validator: { + validate: (value, args) => isAlpha(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must contain only letters (a-zA-Z)', validationOptions), + }, + }, validationOptions); +} +exports.IsAlpha = IsAlpha; +//# sourceMappingURL=IsAlpha.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsAlpha.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsAlpha.js.map new file mode 100644 index 00000000..af2b1656 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsAlpha.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsAlpha.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsAlpha.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,oEAAqD;AAGxC,QAAA,QAAQ,GAAG,SAAS,CAAC;AAElC;;;GAGG;AACH,SAAgB,OAAO,CAAC,KAAc,EAAE,MAAgC;IACtE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,iBAAgB,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACtE,CAAC;AAFD,0BAEC;AAED;;;GAGG;AACH,SAAgB,OAAO,CAAC,MAAe,EAAE,iBAAqC;IAC5E,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,gBAAQ;QACd,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACvE,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,8CAA8C,EACzE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,0BAeC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isAlphaValidator from 'validator/lib/isAlpha';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.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?: string, 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 + '$property must contain only letters (a-zA-Z)',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsAlphanumeric.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsAlphanumeric.js new file mode 100644 index 00000000..f87edec2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsAlphanumeric.js @@ -0,0 +1,33 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsAlphanumeric = exports.isAlphanumeric = exports.IS_ALPHANUMERIC = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isAlphanumeric_1 = __importDefault(require("validator/lib/isAlphanumeric")); +exports.IS_ALPHANUMERIC = 'isAlphanumeric'; +/** + * Checks if the string contains only letters and numbers. + * If given value is not a string, then it returns false. + */ +function isAlphanumeric(value, locale) { + return typeof value === 'string' && (0, isAlphanumeric_1.default)(value, locale); +} +exports.isAlphanumeric = isAlphanumeric; +/** + * Checks if the string contains only letters and numbers. + * If given value is not a string, then it returns false. + */ +function IsAlphanumeric(locale, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_ALPHANUMERIC, + constraints: [locale], + validator: { + validate: (value, args) => isAlphanumeric(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must contain only letters and numbers', validationOptions), + }, + }, validationOptions); +} +exports.IsAlphanumeric = IsAlphanumeric; +//# sourceMappingURL=IsAlphanumeric.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsAlphanumeric.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsAlphanumeric.js.map new file mode 100644 index 00000000..4f508099 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsAlphanumeric.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsAlphanumeric.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsAlphanumeric.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,kFAAmE;AAGtD,QAAA,eAAe,GAAG,gBAAgB,CAAC;AAEhD;;;GAGG;AACH,SAAgB,cAAc,CAAC,KAAc,EAAE,MAAuC;IACpF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,wBAAuB,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC7E,CAAC;AAFD,wCAEC;AAED;;;GAGG;AACH,SAAgB,cAAc,CAAC,MAAe,EAAE,iBAAqC;IACnF,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,uBAAe;QACrB,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC9E,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,iDAAiD,EAC5E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,wCAeC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isAlphanumericValidator from 'validator/lib/isAlphanumeric';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.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(locale?: string, validationOptions?: ValidationOptions): 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 + '$property must contain only letters and numbers',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsAscii.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsAscii.js new file mode 100644 index 00000000..b1f229a9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsAscii.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsAscii = exports.isAscii = exports.IS_ASCII = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isAscii_1 = __importDefault(require("validator/lib/isAscii")); +exports.IS_ASCII = 'isAscii'; +/** + * Checks if the string contains ASCII chars only. + * If given value is not a string, then it returns false. + */ +function isAscii(value) { + return typeof value === 'string' && (0, isAscii_1.default)(value); +} +exports.isAscii = isAscii; +/** + * Checks if the string contains ASCII chars only. + * If given value is not a string, then it returns false. + */ +function IsAscii(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_ASCII, + validator: { + validate: (value, args) => isAscii(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must contain only ASCII characters', validationOptions), + }, + }, validationOptions); +} +exports.IsAscii = IsAscii; +//# sourceMappingURL=IsAscii.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsAscii.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsAscii.js.map new file mode 100644 index 00000000..9b6ecadb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsAscii.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsAscii.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsAscii.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,oEAAqD;AAExC,QAAA,QAAQ,GAAG,SAAS,CAAC;AAElC;;;GAGG;AACH,SAAgB,OAAO,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,iBAAgB,EAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAFD,0BAEC;AAED;;;GAGG;AACH,SAAgB,OAAO,CAAC,iBAAqC;IAC3D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,gBAAQ;QACd,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;YAClD,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,8CAA8C,EACzE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,0BAcC","sourcesContent":["import { 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 + '$property must contain only ASCII characters',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBIC.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBIC.js new file mode 100644 index 00000000..799c910b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBIC.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsBIC = exports.isBIC = exports.IS_BIC = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isBIC_1 = __importDefault(require("validator/lib/isBIC")); +exports.IS_BIC = 'isBIC'; +/** + * Check if a string is a BIC (Bank Identification Code) or SWIFT code. + * If given value is not a string, then it returns false. + */ +function isBIC(value) { + return typeof value === 'string' && (0, isBIC_1.default)(value); +} +exports.isBIC = isBIC; +/** + * Check if a string is a BIC (Bank Identification Code) or SWIFT code. + * If given value is not a string, then it returns false. + */ +function IsBIC(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_BIC, + validator: { + validate: (value, args) => isBIC(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a BIC or SWIFT code', validationOptions), + }, + }, validationOptions); +} +exports.IsBIC = IsBIC; +//# sourceMappingURL=IsBIC.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBIC.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBIC.js.map new file mode 100644 index 00000000..eaee93fa --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBIC.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsBIC.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsBIC.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,gEAAiD;AAEpC,QAAA,MAAM,GAAG,OAAO,CAAC;AAE9B;;;GAGG;AACH,SAAgB,KAAK,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,eAAc,EAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAFD,sBAEC;AAED;;;GAGG;AACH,SAAgB,KAAK,CAAC,iBAAqC;IACzD,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,cAAM;QACZ,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;YAChD,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,uCAAuC,EAClE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,sBAcC","sourcesContent":["import { 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 + '$property must be a BIC or SWIFT code',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBase32.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBase32.js new file mode 100644 index 00000000..fed343b1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBase32.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsBase32 = exports.isBase32 = exports.IS_BASE32 = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isBase32_1 = __importDefault(require("validator/lib/isBase32")); +exports.IS_BASE32 = 'isBase32'; +/** + * Checks if a string is base32 encoded. + * If given value is not a string, then it returns false. + */ +function isBase32(value) { + return typeof value === 'string' && (0, isBase32_1.default)(value); +} +exports.isBase32 = isBase32; +/** + * Check if a string is base32 encoded. + * If given value is not a string, then it returns false. + */ +function IsBase32(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_BASE32, + validator: { + validate: (value, args) => isBase32(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be base32 encoded', validationOptions), + }, + }, validationOptions); +} +exports.IsBase32 = IsBase32; +//# sourceMappingURL=IsBase32.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBase32.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBase32.js.map new file mode 100644 index 00000000..e964c0bf --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBase32.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsBase32.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsBase32.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,sEAAuD;AAE1C,QAAA,SAAS,GAAG,UAAU,CAAC;AAEpC;;;GAGG;AACH,SAAgB,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,kBAAiB,EAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAFD,4BAEC;AAED;;;GAGG;AACH,SAAgB,QAAQ,CAAC,iBAAqC;IAC5D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,iBAAS;QACf,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;YACnD,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,kCAAkC,EAAE,iBAAiB,CAAC;SAC/G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAXD,4BAWC","sourcesContent":["import { 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 + '$property must be base32 encoded', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBase64.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBase64.js new file mode 100644 index 00000000..f6c3116f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBase64.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsBase64 = exports.isBase64 = exports.IS_BASE64 = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isBase64_1 = __importDefault(require("validator/lib/isBase64")); +exports.IS_BASE64 = 'isBase64'; +/** + * Checks if a string is base64 encoded. + * If given value is not a string, then it returns false. + */ +function isBase64(value) { + return typeof value === 'string' && (0, isBase64_1.default)(value); +} +exports.isBase64 = isBase64; +/** + * Checks if a string is base64 encoded. + * If given value is not a string, then it returns false. + */ +function IsBase64(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_BASE64, + validator: { + validate: (value, args) => isBase64(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be base64 encoded', validationOptions), + }, + }, validationOptions); +} +exports.IsBase64 = IsBase64; +//# sourceMappingURL=IsBase64.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBase64.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBase64.js.map new file mode 100644 index 00000000..b1b9fca5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBase64.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsBase64.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsBase64.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,sEAAuD;AAE1C,QAAA,SAAS,GAAG,UAAU,CAAC;AAEpC;;;GAGG;AACH,SAAgB,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,kBAAiB,EAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAFD,4BAEC;AAED;;;GAGG;AACH,SAAgB,QAAQ,CAAC,iBAAqC;IAC5D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,iBAAS;QACf,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;YACnD,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,kCAAkC,EAAE,iBAAiB,CAAC;SAC/G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAXD,4BAWC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isBase64Validator from 'validator/lib/isBase64';\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 isBase64(value: unknown): boolean {\n return typeof value === 'string' && isBase64Validator(value);\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(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_BASE64,\n validator: {\n validate: (value, args): boolean => isBase64(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be base64 encoded', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBooleanString.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBooleanString.js new file mode 100644 index 00000000..ad936ed1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBooleanString.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsBooleanString = exports.isBooleanString = exports.IS_BOOLEAN_STRING = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isBoolean_1 = __importDefault(require("validator/lib/isBoolean")); +exports.IS_BOOLEAN_STRING = 'isBooleanString'; +/** + * Checks if a string is a boolean. + * If given value is not a string, then it returns false. + */ +function isBooleanString(value) { + return typeof value === 'string' && (0, isBoolean_1.default)(value); +} +exports.isBooleanString = isBooleanString; +/** + * Checks if a string is a boolean. + * If given value is not a string, then it returns false. + */ +function IsBooleanString(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_BOOLEAN_STRING, + validator: { + validate: (value, args) => isBooleanString(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a boolean string', validationOptions), + }, + }, validationOptions); +} +exports.IsBooleanString = IsBooleanString; +//# sourceMappingURL=IsBooleanString.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBooleanString.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBooleanString.js.map new file mode 100644 index 00000000..ba360c2d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBooleanString.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsBooleanString.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsBooleanString.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,wEAAyD;AAE5C,QAAA,iBAAiB,GAAG,iBAAiB,CAAC;AAEnD;;;GAGG;AACH,SAAgB,eAAe,CAAC,KAAc;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,mBAAkB,EAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAFD,0CAEC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAAC,iBAAqC;IACnE,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,yBAAiB;QACvB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;YAC1D,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,oCAAoC,EAC/D,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,0CAcC","sourcesContent":["import { 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 + '$property must be a boolean string',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBtcAddress.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBtcAddress.js new file mode 100644 index 00000000..e6f35bd4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBtcAddress.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsBtcAddress = exports.isBtcAddress = exports.IS_BTC_ADDRESS = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isBtcAddress_1 = __importDefault(require("validator/lib/isBtcAddress")); +exports.IS_BTC_ADDRESS = 'isBtcAddress'; +/** + * Check if the string is a valid BTC address. + * If given value is not a string, then it returns false. + */ +function isBtcAddress(value) { + return typeof value === 'string' && (0, isBtcAddress_1.default)(value); +} +exports.isBtcAddress = isBtcAddress; +/** + * Check if the string is a valid BTC address. + * If given value is not a string, then it returns false. + */ +function IsBtcAddress(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_BTC_ADDRESS, + validator: { + validate: (value, args) => isBtcAddress(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a BTC address', validationOptions), + }, + }, validationOptions); +} +exports.IsBtcAddress = IsBtcAddress; +//# sourceMappingURL=IsBtcAddress.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBtcAddress.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBtcAddress.js.map new file mode 100644 index 00000000..85141e84 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsBtcAddress.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsBtcAddress.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsBtcAddress.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,8EAA+D;AAElD,QAAA,cAAc,GAAG,cAAc,CAAC;AAE7C;;;GAGG;AACH,SAAgB,YAAY,CAAC,KAAc;IACzC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,sBAAqB,EAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAFD,oCAEC;AAED;;;GAGG;AACH,SAAgB,YAAY,CAAC,iBAAqC;IAChE,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,sBAAc;QACpB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC;YACvD,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,iCAAiC,EAAE,iBAAiB,CAAC;SAC9G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAXD,oCAWC","sourcesContent":["import { 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 + '$property must be a BTC address', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsByteLength.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsByteLength.js new file mode 100644 index 00000000..249b30b3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsByteLength.js @@ -0,0 +1,33 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsByteLength = exports.isByteLength = exports.IS_BYTE_LENGTH = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isByteLength_1 = __importDefault(require("validator/lib/isByteLength")); +exports.IS_BYTE_LENGTH = 'isByteLength'; +/** + * Checks if the string's length (in bytes) falls in a range. + * If given value is not a string, then it returns false. + */ +function isByteLength(value, min, max) { + return typeof value === 'string' && (0, isByteLength_1.default)(value, { min, max }); +} +exports.isByteLength = isByteLength; +/** + * Checks if the string's length (in bytes) falls in a range. + * If given value is not a string, then it returns false. + */ +function IsByteLength(min, max, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_BYTE_LENGTH, + constraints: [min, max], + validator: { + validate: (value, args) => isByteLength(value, args.constraints[0], args.constraints[1]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + "$property's byte length must fall into ($constraint1, $constraint2) range", validationOptions), + }, + }, validationOptions); +} +exports.IsByteLength = IsByteLength; +//# sourceMappingURL=IsByteLength.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsByteLength.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsByteLength.js.map new file mode 100644 index 00000000..3449dcb1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsByteLength.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsByteLength.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsByteLength.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,8EAA+D;AAElD,QAAA,cAAc,GAAG,cAAc,CAAC;AAE7C;;;GAGG;AACH,SAAgB,YAAY,CAAC,KAAc,EAAE,GAAW,EAAE,GAAY;IACpE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,sBAAqB,EAAC,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AACjF,CAAC;AAFD,oCAEC;AAED;;;GAGG;AACH,SAAgB,YAAY,CAAC,GAAW,EAAE,GAAY,EAAE,iBAAqC;IAC3F,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,sBAAc;QACpB,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;QACvB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACjG,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,2EAA2E,EACtG,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,oCAeC","sourcesContent":["import { 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 + \"$property's byte length must fall into ($constraint1, $constraint2) range\",\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsCreditCard.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsCreditCard.js new file mode 100644 index 00000000..76196dbc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsCreditCard.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsCreditCard = exports.isCreditCard = exports.IS_CREDIT_CARD = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isCreditCard_1 = __importDefault(require("validator/lib/isCreditCard")); +exports.IS_CREDIT_CARD = 'isCreditCard'; +/** + * Checks if the string is a credit card. + * If given value is not a string, then it returns false. + */ +function isCreditCard(value) { + return typeof value === 'string' && (0, isCreditCard_1.default)(value); +} +exports.isCreditCard = isCreditCard; +/** + * Checks if the string is a credit card. + * If given value is not a string, then it returns false. + */ +function IsCreditCard(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_CREDIT_CARD, + validator: { + validate: (value, args) => isCreditCard(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a credit card', validationOptions), + }, + }, validationOptions); +} +exports.IsCreditCard = IsCreditCard; +//# sourceMappingURL=IsCreditCard.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsCreditCard.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsCreditCard.js.map new file mode 100644 index 00000000..6e24506a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsCreditCard.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsCreditCard.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsCreditCard.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,8EAA+D;AAElD,QAAA,cAAc,GAAG,cAAc,CAAC;AAE7C;;;GAGG;AACH,SAAgB,YAAY,CAAC,KAAc;IACzC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,sBAAqB,EAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAFD,oCAEC;AAED;;;GAGG;AACH,SAAgB,YAAY,CAAC,iBAAqC;IAChE,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,sBAAc;QACpB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC;YACvD,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,iCAAiC,EAAE,iBAAiB,CAAC;SAC9G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAXD,oCAWC","sourcesContent":["import { 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 + '$property must be a credit card', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsCurrency.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsCurrency.js new file mode 100644 index 00000000..492fca18 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsCurrency.js @@ -0,0 +1,33 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsCurrency = exports.isCurrency = exports.IS_CURRENCY = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isCurrency_1 = __importDefault(require("validator/lib/isCurrency")); +exports.IS_CURRENCY = 'isCurrency'; +/** + * Checks if the string is a valid currency amount. + * If given value is not a string, then it returns false. + */ +function isCurrency(value, options) { + return typeof value === 'string' && (0, isCurrency_1.default)(value, options); +} +exports.isCurrency = isCurrency; +/** + * Checks if the string is a valid currency amount. + * If given value is not a string, then it returns false. + */ +function IsCurrency(options, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_CURRENCY, + constraints: [options], + validator: { + validate: (value, args) => isCurrency(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a currency', validationOptions), + }, + }, validationOptions); +} +exports.IsCurrency = IsCurrency; +//# sourceMappingURL=IsCurrency.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsCurrency.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsCurrency.js.map new file mode 100644 index 00000000..2e8ab240 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsCurrency.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsCurrency.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsCurrency.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,0EAA2D;AAG9C,QAAA,WAAW,GAAG,YAAY,CAAC;AAExC;;;GAGG;AACH,SAAgB,UAAU,CAAC,KAAc,EAAE,OAAuC;IAChF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,oBAAmB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC1E,CAAC;AAFD,gCAEC;AAED;;;GAGG;AACH,SAAgB,UAAU,CACxB,OAAuC,EACvC,iBAAqC;IAErC,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,mBAAW;QACjB,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC1E,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,8BAA8B,EAAE,iBAAiB,CAAC;SAC3G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,gCAeC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isCurrencyValidator from 'validator/lib/isCurrency';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.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?: ValidatorJS.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 + '$property must be a currency', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsDataURI.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsDataURI.js new file mode 100644 index 00000000..6d8f49d9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsDataURI.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsDataURI = exports.isDataURI = exports.IS_DATA_URI = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isDataURI_1 = __importDefault(require("validator/lib/isDataURI")); +exports.IS_DATA_URI = 'isDataURI'; +/** + * Check if the string is a data uri format. + * If given value is not a string, then it returns false. + */ +function isDataURI(value) { + return typeof value === 'string' && (0, isDataURI_1.default)(value); +} +exports.isDataURI = isDataURI; +/** + * Check if the string is a data uri format. + * If given value is not a string, then it returns false. + */ +function IsDataURI(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_DATA_URI, + validator: { + validate: (value, args) => isDataURI(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a data uri format', validationOptions), + }, + }, validationOptions); +} +exports.IsDataURI = IsDataURI; +//# sourceMappingURL=IsDataURI.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsDataURI.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsDataURI.js.map new file mode 100644 index 00000000..911f65dd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsDataURI.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsDataURI.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsDataURI.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,wEAAyD;AAE5C,QAAA,WAAW,GAAG,WAAW,CAAC;AAEvC;;;GAGG;AACH,SAAgB,SAAS,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,mBAAkB,EAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAFD,8BAEC;AAED;;;GAGG;AACH,SAAgB,SAAS,CAAC,iBAAqC;IAC7D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,mBAAW;QACjB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;YACpD,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,qCAAqC,EAChE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,8BAcC","sourcesContent":["import { 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 + '$property must be a data uri format',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsDateString.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsDateString.js new file mode 100644 index 00000000..38fc1b3a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsDateString.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsDateString = exports.isDateString = exports.IS_DATE_STRING = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const IsISO8601_1 = require("./IsISO8601"); +exports.IS_DATE_STRING = 'isDateString'; +/** + * Alias for IsISO8601 validator + */ +function isDateString(value, options) { + return (0, IsISO8601_1.isISO8601)(value, options); +} +exports.isDateString = isDateString; +/** + * Alias for IsISO8601 validator + */ +function IsDateString(options, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_DATE_STRING, + constraints: [options], + validator: { + validate: (value, args) => isDateString(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a valid ISO 8601 date string', validationOptions), + }, + }, validationOptions); +} +exports.IsDateString = IsDateString; +//# sourceMappingURL=IsDateString.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsDateString.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsDateString.js.map new file mode 100644 index 00000000..c994b3f9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsDateString.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsDateString.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsDateString.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEhE,2CAAwC;AAE3B,QAAA,cAAc,GAAG,cAAc,CAAC;AAE7C;;GAEG;AACH,SAAgB,YAAY,CAAC,KAAc,EAAE,OAAsC;IACjF,OAAO,IAAA,qBAAS,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC;AAFD,oCAEC;AAED;;GAEG;AACH,SAAgB,YAAY,CAC1B,OAAsC,EACtC,iBAAqC;IAErC,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,sBAAc;QACpB,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC;YACvD,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,gDAAgD,EAC3E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAlBD,oCAkBC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport ValidatorJS from 'validator';\nimport { isISO8601 } from './IsISO8601';\n\nexport const IS_DATE_STRING = 'isDateString';\n\n/**\n * Alias for IsISO8601 validator\n */\nexport function isDateString(value: unknown, options?: ValidatorJS.IsISO8601Options): boolean {\n return isISO8601(value, options);\n}\n\n/**\n * Alias for IsISO8601 validator\n */\nexport function IsDateString(\n options?: ValidatorJS.IsISO8601Options,\n validationOptions?: ValidationOptions\n): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_DATE_STRING,\n constraints: [options],\n validator: {\n validate: (value, args): boolean => isDateString(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + '$property must be a valid ISO 8601 date string',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsDecimal.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsDecimal.js new file mode 100644 index 00000000..cbdbdae9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsDecimal.js @@ -0,0 +1,33 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsDecimal = exports.isDecimal = exports.IS_DECIMAL = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isDecimal_1 = __importDefault(require("validator/lib/isDecimal")); +exports.IS_DECIMAL = 'isDecimal'; +/** + * Checks if the string is a valid decimal. + * If given value is not a string, then it returns false. + */ +function isDecimal(value, options) { + return typeof value === 'string' && (0, isDecimal_1.default)(value, options); +} +exports.isDecimal = isDecimal; +/** + * Checks if the string contains only letters and numbers. + * If given value is not a string, then it returns false. + */ +function IsDecimal(options, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_DECIMAL, + constraints: [options], + validator: { + validate: (value, args) => isDecimal(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property is not a valid decimal number.', validationOptions), + }, + }, validationOptions); +} +exports.IsDecimal = IsDecimal; +//# sourceMappingURL=IsDecimal.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsDecimal.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsDecimal.js.map new file mode 100644 index 00000000..e82e4d6f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsDecimal.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsDecimal.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsDecimal.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,wEAAyD;AAG5C,QAAA,UAAU,GAAG,WAAW,CAAC;AAEtC;;;GAGG;AACH,SAAgB,SAAS,CAAC,KAAc,EAAE,OAAsC;IAC9E,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,mBAAkB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC;AAFD,8BAEC;AAED;;;GAGG;AACH,SAAgB,SAAS,CACvB,OAAsC,EACtC,iBAAqC;IAErC,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,kBAAU;QAChB,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACzE,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,0CAA0C,EACrE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAlBD,8BAkBC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isDecimalValidator from 'validator/lib/isDecimal';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.IsDecimalOptions): boolean {\n return typeof value === 'string' && isDecimalValidator(value, options);\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 IsDecimal(\n options?: ValidatorJS.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 + '$property is not a valid decimal number.',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsEAN.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsEAN.js new file mode 100644 index 00000000..b2863732 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsEAN.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsEAN = exports.isEAN = exports.IS_EAN = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isEAN_1 = __importDefault(require("validator/lib/isEAN")); +exports.IS_EAN = 'isEAN'; +/** + * Check if the string is an EAN (European Article Number). + * If given value is not a string, then it returns false. + */ +function isEAN(value) { + return typeof value === 'string' && (0, isEAN_1.default)(value); +} +exports.isEAN = isEAN; +/** + * Check if the string is an EAN (European Article Number). + * If given value is not a string, then it returns false. + */ +function IsEAN(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_EAN, + validator: { + validate: (value, args) => isEAN(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be an EAN (European Article Number)', validationOptions), + }, + }, validationOptions); +} +exports.IsEAN = IsEAN; +//# sourceMappingURL=IsEAN.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsEAN.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsEAN.js.map new file mode 100644 index 00000000..bf6f976c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsEAN.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsEAN.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsEAN.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,gEAAiD;AAEpC,QAAA,MAAM,GAAG,OAAO,CAAC;AAE9B;;;GAGG;AACH,SAAgB,KAAK,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,eAAc,EAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAFD,sBAEC;AAED;;;GAGG;AACH,SAAgB,KAAK,CAAC,iBAAqC;IACzD,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,cAAM;QACZ,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;YAChD,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,oDAAoD,EAC/E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,sBAcC","sourcesContent":["import { 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 + '$property must be an EAN (European Article Number)',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsEmail.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsEmail.js new file mode 100644 index 00000000..8e87a615 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsEmail.js @@ -0,0 +1,33 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsEmail = exports.isEmail = exports.IS_EMAIL = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isEmail_1 = __importDefault(require("validator/lib/isEmail")); +exports.IS_EMAIL = 'isEmail'; +/** + * Checks if the string is an email. + * If given value is not a string, then it returns false. + */ +function isEmail(value, options) { + return typeof value === 'string' && (0, isEmail_1.default)(value, options); +} +exports.isEmail = isEmail; +/** + * Checks if the string is an email. + * If given value is not a string, then it returns false. + */ +function IsEmail(options, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_EMAIL, + constraints: [options], + validator: { + validate: (value, args) => isEmail(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be an email', validationOptions), + }, + }, validationOptions); +} +exports.IsEmail = IsEmail; +//# sourceMappingURL=IsEmail.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsEmail.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsEmail.js.map new file mode 100644 index 00000000..b0579604 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsEmail.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsEmail.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsEmail.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,oEAAqD;AAGxC,QAAA,QAAQ,GAAG,SAAS,CAAC;AAElC;;;GAGG;AACH,SAAgB,OAAO,CAAC,KAAc,EAAE,OAAoC;IAC1E,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,iBAAgB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACvE,CAAC;AAFD,0BAEC;AAED;;;GAGG;AACH,SAAgB,OAAO,CACrB,OAAoC,EACpC,iBAAqC;IAErC,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,gBAAQ;QACd,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACvE,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,4BAA4B,EAAE,iBAAiB,CAAC;SACzG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,0BAeC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isEmailValidator from 'validator/lib/isEmail';\nimport ValidatorJS from 'validator';\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 isEmail(value: unknown, options?: ValidatorJS.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?: ValidatorJS.IsEmailOptions,\n validationOptions?: ValidationOptions\n): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_EMAIL,\n constraints: [options],\n validator: {\n validate: (value, args): boolean => isEmail(value, args.constraints[0]),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be an email', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsEthereumAddress.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsEthereumAddress.js new file mode 100644 index 00000000..f404fb46 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsEthereumAddress.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsEthereumAddress = exports.isEthereumAddress = exports.IS_ETHEREUM_ADDRESS = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isEthereumAddress_1 = __importDefault(require("validator/lib/isEthereumAddress")); +exports.IS_ETHEREUM_ADDRESS = 'isEthereumAddress'; +/** + * Check if the string is an Ethereum address using basic regex. Does not validate address checksums. + * If given value is not a string, then it returns false. + */ +function isEthereumAddress(value) { + return typeof value === 'string' && (0, isEthereumAddress_1.default)(value); +} +exports.isEthereumAddress = isEthereumAddress; +/** + * Check if the string is an Ethereum address using basic regex. Does not validate address checksums. + * If given value is not a string, then it returns false. + */ +function IsEthereumAddress(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_ETHEREUM_ADDRESS, + validator: { + validate: (value, args) => isEthereumAddress(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be an Ethereum address', validationOptions), + }, + }, validationOptions); +} +exports.IsEthereumAddress = IsEthereumAddress; +//# sourceMappingURL=IsEthereumAddress.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsEthereumAddress.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsEthereumAddress.js.map new file mode 100644 index 00000000..c7c9a66f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsEthereumAddress.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsEthereumAddress.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsEthereumAddress.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,wFAAyE;AAE5D,QAAA,mBAAmB,GAAG,mBAAmB,CAAC;AAEvD;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,KAAc;IAC9C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,2BAA0B,EAAC,KAAK,CAAC,CAAC;AACxE,CAAC;AAFD,8CAEC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,iBAAqC;IACrE,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,2BAAmB;QACzB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC;YAC5D,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,uCAAuC,EAClE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,8CAcC","sourcesContent":["import { 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 + '$property must be an Ethereum address',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsFQDN.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsFQDN.js new file mode 100644 index 00000000..fd40df2c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsFQDN.js @@ -0,0 +1,33 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsFQDN = exports.isFQDN = exports.IS_FQDN = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isFQDN_1 = __importDefault(require("validator/lib/isFQDN")); +exports.IS_FQDN = 'isFqdn'; +/** + * Checks if the string is a fully qualified domain name (e.g. domain.com). + * If given value is not a string, then it returns false. + */ +function isFQDN(value, options) { + return typeof value === 'string' && (0, isFQDN_1.default)(value, options); +} +exports.isFQDN = isFQDN; +/** + * Checks if the string is a fully qualified domain name (e.g. domain.com). + * If given value is not a string, then it returns false. + */ +function IsFQDN(options, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_FQDN, + constraints: [options], + validator: { + validate: (value, args) => isFQDN(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a valid domain name', validationOptions), + }, + }, validationOptions); +} +exports.IsFQDN = IsFQDN; +//# sourceMappingURL=IsFQDN.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsFQDN.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsFQDN.js.map new file mode 100644 index 00000000..947b2756 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsFQDN.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsFQDN.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsFQDN.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,kEAAmD;AAGtC,QAAA,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;GAGG;AACH,SAAgB,MAAM,CAAC,KAAc,EAAE,OAAmC;IACxE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,gBAAe,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAFD,wBAEC;AAED;;;GAGG;AACH,SAAgB,MAAM,CAAC,OAAmC,EAAE,iBAAqC;IAC/F,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,eAAO;QACb,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtE,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,uCAAuC,EAClE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,wBAeC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isFqdnValidator from 'validator/lib/isFQDN';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.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?: ValidatorJS.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 + '$property must be a valid domain name',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsFirebasePushId.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsFirebasePushId.js new file mode 100644 index 00000000..b80191ed --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsFirebasePushId.js @@ -0,0 +1,29 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsFirebasePushId = exports.isFirebasePushId = exports.IS_FIREBASE_PUSH_ID = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.IS_FIREBASE_PUSH_ID = 'IsFirebasePushId'; +/** + * Checks if the string is a Firebase Push Id + * If given value is not a Firebase Push Id, it returns false + */ +function isFirebasePushId(value) { + const webSafeRegex = /^[a-zA-Z0-9_-]*$/; + return typeof value === 'string' && value.length === 20 && webSafeRegex.test(value); +} +exports.isFirebasePushId = isFirebasePushId; +/** + * Checks if the string is a Firebase Push Id + * If given value is not a Firebase Push Id, it returns false + */ +function IsFirebasePushId(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_FIREBASE_PUSH_ID, + validator: { + validate: (value, args) => isFirebasePushId(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a Firebase Push Id', validationOptions), + }, + }, validationOptions); +} +exports.IsFirebasePushId = IsFirebasePushId; +//# sourceMappingURL=IsFirebasePushId.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsFirebasePushId.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsFirebasePushId.js.map new file mode 100644 index 00000000..600c10da --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsFirebasePushId.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsFirebasePushId.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsFirebasePushId.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,mBAAmB,GAAG,kBAAkB,CAAC;AAEtD;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,KAAc;IAC7C,MAAM,YAAY,GAAG,kBAAkB,CAAC;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtF,CAAC;AAHD,4CAGC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,iBAAqC;IACpE,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,2BAAmB;QACzB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAC3D,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,sCAAsC,EACjE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,4CAcC","sourcesContent":["import { 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 + '$property must be a Firebase Push Id',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsFullWidth.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsFullWidth.js new file mode 100644 index 00000000..525d9bde --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsFullWidth.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsFullWidth = exports.isFullWidth = exports.IS_FULL_WIDTH = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isFullWidth_1 = __importDefault(require("validator/lib/isFullWidth")); +exports.IS_FULL_WIDTH = 'isFullWidth'; +/** + * Checks if the string contains any full-width chars. + * If given value is not a string, then it returns false. + */ +function isFullWidth(value) { + return typeof value === 'string' && (0, isFullWidth_1.default)(value); +} +exports.isFullWidth = isFullWidth; +/** + * Checks if the string contains any full-width chars. + * If given value is not a string, then it returns false. + */ +function IsFullWidth(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_FULL_WIDTH, + validator: { + validate: (value, args) => isFullWidth(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must contain a full-width characters', validationOptions), + }, + }, validationOptions); +} +exports.IsFullWidth = IsFullWidth; +//# sourceMappingURL=IsFullWidth.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsFullWidth.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsFullWidth.js.map new file mode 100644 index 00000000..e85d5ca9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsFullWidth.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsFullWidth.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsFullWidth.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,4EAA6D;AAEhD,QAAA,aAAa,GAAG,aAAa,CAAC;AAE3C;;;GAGG;AACH,SAAgB,WAAW,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,qBAAoB,EAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAFD,kCAEC;AAED;;;GAGG;AACH,SAAgB,WAAW,CAAC,iBAAqC;IAC/D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,qBAAa;QACnB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;YACtD,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,gDAAgD,EAC3E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,kCAcC","sourcesContent":["import { 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 + '$property must contain a full-width characters',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHSL.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHSL.js new file mode 100644 index 00000000..84bd2cca --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHSL.js @@ -0,0 +1,34 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsHSL = exports.isHSL = exports.IS_HSL = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isHSL_1 = __importDefault(require("validator/lib/isHSL")); +exports.IS_HSL = 'isHSL'; +/** + * Check if the string is an HSL (hue, saturation, lightness, optional alpha) color based on CSS Colors Level 4 specification. + * Comma-separated format supported. Space-separated format supported with the exception of a few edge cases (ex: hsl(200grad+.1%62%/1)). + * If given value is not a string, then it returns false. + */ +function isHSL(value) { + return typeof value === 'string' && (0, isHSL_1.default)(value); +} +exports.isHSL = isHSL; +/** + * Check if the string is an HSL (hue, saturation, lightness, optional alpha) color based on CSS Colors Level 4 specification. + * Comma-separated format supported. Space-separated format supported with the exception of a few edge cases (ex: hsl(200grad+.1%62%/1)). + * If given value is not a string, then it returns false. + */ +function IsHSL(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_HSL, + validator: { + validate: (value, args) => isHSL(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a HSL color', validationOptions), + }, + }, validationOptions); +} +exports.IsHSL = IsHSL; +//# sourceMappingURL=IsHSL.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHSL.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHSL.js.map new file mode 100644 index 00000000..96b18ffc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHSL.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsHSL.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsHSL.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,gEAAiD;AAEpC,QAAA,MAAM,GAAG,OAAO,CAAC;AAE9B;;;;GAIG;AACH,SAAgB,KAAK,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,eAAc,EAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAFD,sBAEC;AAED;;;;GAIG;AACH,SAAgB,KAAK,CAAC,iBAAqC;IACzD,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,cAAM;QACZ,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;YAChD,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,+BAA+B,EAAE,iBAAiB,CAAC;SAC5G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAXD,sBAWC","sourcesContent":["import { 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 + '$property must be a HSL color', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHalfWidth.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHalfWidth.js new file mode 100644 index 00000000..33fae46d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHalfWidth.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsHalfWidth = exports.isHalfWidth = exports.IS_HALF_WIDTH = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isHalfWidth_1 = __importDefault(require("validator/lib/isHalfWidth")); +exports.IS_HALF_WIDTH = 'isHalfWidth'; +/** + * Checks if the string contains any half-width chars. + * If given value is not a string, then it returns false. + */ +function isHalfWidth(value) { + return typeof value === 'string' && (0, isHalfWidth_1.default)(value); +} +exports.isHalfWidth = isHalfWidth; +/** + * Checks if the string contains any full-width chars. + * If given value is not a string, then it returns false. + */ +function IsHalfWidth(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_HALF_WIDTH, + validator: { + validate: (value, args) => isHalfWidth(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must contain a half-width characters', validationOptions), + }, + }, validationOptions); +} +exports.IsHalfWidth = IsHalfWidth; +//# sourceMappingURL=IsHalfWidth.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHalfWidth.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHalfWidth.js.map new file mode 100644 index 00000000..b01cc376 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHalfWidth.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsHalfWidth.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsHalfWidth.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,4EAA6D;AAEhD,QAAA,aAAa,GAAG,aAAa,CAAC;AAE3C;;;GAGG;AACH,SAAgB,WAAW,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,qBAAoB,EAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAFD,kCAEC;AAED;;;GAGG;AACH,SAAgB,WAAW,CAAC,iBAAqC;IAC/D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,qBAAa;QACnB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;YACtD,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,gDAAgD,EAC3E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,kCAcC","sourcesContent":["import { 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 full-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 + '$property must contain a half-width characters',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHash.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHash.js new file mode 100644 index 00000000..f1832872 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHash.js @@ -0,0 +1,35 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsHash = exports.isHash = exports.IS_HASH = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isHash_1 = __importDefault(require("validator/lib/isHash")); +exports.IS_HASH = 'isHash'; +/** + * Check if the string is a hash of type algorithm. + * Algorithm is one of ['md4', 'md5', 'sha1', 'sha256', 'sha384', 'sha512', 'ripemd128', 'ripemd160', 'tiger128', + * 'tiger160', 'tiger192', 'crc32', 'crc32b'] + */ +function isHash(value, algorithm) { + return typeof value === 'string' && (0, isHash_1.default)(value, algorithm); +} +exports.isHash = isHash; +/** + * Check if the string is a hash of type algorithm. + * Algorithm is one of ['md4', 'md5', 'sha1', 'sha256', 'sha384', 'sha512', 'ripemd128', 'ripemd160', 'tiger128', + * 'tiger160', 'tiger192', 'crc32', 'crc32b'] + */ +function IsHash(algorithm, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_HASH, + constraints: [algorithm], + validator: { + validate: (value, args) => isHash(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a hash of type $constraint1', validationOptions), + }, + }, validationOptions); +} +exports.IsHash = IsHash; +//# sourceMappingURL=IsHash.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHash.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHash.js.map new file mode 100644 index 00000000..037be178 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHash.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsHash.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsHash.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,kEAAmD;AAGtC,QAAA,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;;GAIG;AACH,SAAgB,MAAM,CAAC,KAAc,EAAE,SAAoC;IACzE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,gBAAe,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACxE,CAAC;AAFD,wBAEC;AAED;;;;GAIG;AACH,SAAgB,MAAM,CAAC,SAAiB,EAAE,iBAAqC;IAC7E,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,eAAO;QACb,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtE,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,+CAA+C,EAC1E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,wBAeC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isHashValidator from 'validator/lib/isHash';\nimport ValidatorJS from 'validator';\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: ValidatorJS.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 + '$property must be a hash of type $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHexColor.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHexColor.js new file mode 100644 index 00000000..6c42f1b6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHexColor.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsHexColor = exports.isHexColor = exports.IS_HEX_COLOR = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isHexColor_1 = __importDefault(require("validator/lib/isHexColor")); +exports.IS_HEX_COLOR = 'isHexColor'; +/** + * Checks if the string is a hexadecimal color. + * If given value is not a string, then it returns false. + */ +function isHexColor(value) { + return typeof value === 'string' && (0, isHexColor_1.default)(value); +} +exports.isHexColor = isHexColor; +/** + * Checks if the string is a hexadecimal color. + * If given value is not a string, then it returns false. + */ +function IsHexColor(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_HEX_COLOR, + validator: { + validate: (value, args) => isHexColor(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a hexadecimal color', validationOptions), + }, + }, validationOptions); +} +exports.IsHexColor = IsHexColor; +//# sourceMappingURL=IsHexColor.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHexColor.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHexColor.js.map new file mode 100644 index 00000000..0596e079 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHexColor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsHexColor.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsHexColor.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,0EAA2D;AAE9C,QAAA,YAAY,GAAG,YAAY,CAAC;AAEzC;;;GAGG;AACH,SAAgB,UAAU,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,oBAAmB,EAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAFD,gCAEC;AAED;;;GAGG;AACH,SAAgB,UAAU,CAAC,iBAAqC;IAC9D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,oBAAY;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;YACrD,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,uCAAuC,EAClE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,gCAcC","sourcesContent":["import { 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 + '$property must be a hexadecimal color',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHexadecimal.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHexadecimal.js new file mode 100644 index 00000000..fa331301 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHexadecimal.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsHexadecimal = exports.isHexadecimal = exports.IS_HEXADECIMAL = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isHexadecimal_1 = __importDefault(require("validator/lib/isHexadecimal")); +exports.IS_HEXADECIMAL = 'isHexadecimal'; +/** + * Checks if the string is a hexadecimal number. + * If given value is not a string, then it returns false. + */ +function isHexadecimal(value) { + return typeof value === 'string' && (0, isHexadecimal_1.default)(value); +} +exports.isHexadecimal = isHexadecimal; +/** + * Checks if the string is a hexadecimal number. + * If given value is not a string, then it returns false. + */ +function IsHexadecimal(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_HEXADECIMAL, + validator: { + validate: (value, args) => isHexadecimal(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a hexadecimal number', validationOptions), + }, + }, validationOptions); +} +exports.IsHexadecimal = IsHexadecimal; +//# sourceMappingURL=IsHexadecimal.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHexadecimal.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHexadecimal.js.map new file mode 100644 index 00000000..b9ba3c82 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsHexadecimal.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsHexadecimal.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsHexadecimal.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,gFAAiE;AAEpD,QAAA,cAAc,GAAG,eAAe,CAAC;AAE9C;;;GAGG;AACH,SAAgB,aAAa,CAAC,KAAc;IAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,uBAAsB,EAAC,KAAK,CAAC,CAAC;AACpE,CAAC;AAFD,sCAEC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAC,iBAAqC;IACjE,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,sBAAc;QACpB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC;YACxD,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,wCAAwC,EACnE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,sCAcC","sourcesContent":["import { 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 + '$property must be a hexadecimal number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsIBAN.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsIBAN.js new file mode 100644 index 00000000..e8bf768e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsIBAN.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsIBAN = exports.isIBAN = exports.IS_IBAN = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isIBAN_1 = __importDefault(require("validator/lib/isIBAN")); +exports.IS_IBAN = 'isIBAN'; +/** + * Check if a string is a IBAN (International Bank Account Number). + * If given value is not a string, then it returns false. + */ +function isIBAN(value) { + return typeof value === 'string' && (0, isIBAN_1.default)(value); +} +exports.isIBAN = isIBAN; +/** + * Check if a string is a IBAN (International Bank Account Number). + * If given value is not a string, then it returns false. + */ +function IsIBAN(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_IBAN, + validator: { + validate: (value, args) => isIBAN(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be an IBAN', validationOptions), + }, + }, validationOptions); +} +exports.IsIBAN = IsIBAN; +//# sourceMappingURL=IsIBAN.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsIBAN.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsIBAN.js.map new file mode 100644 index 00000000..b893616c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsIBAN.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsIBAN.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsIBAN.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,kEAAmD;AAEtC,QAAA,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;GAGG;AACH,SAAgB,MAAM,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,gBAAe,EAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAFD,wBAEC;AAED;;;GAGG;AACH,SAAgB,MAAM,CAAC,iBAAqC;IAC1D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,eAAO;QACb,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;YACjD,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,2BAA2B,EAAE,iBAAiB,CAAC;SACxG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAXD,wBAWC","sourcesContent":["import { 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 + '$property must be an IBAN', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsIP.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsIP.js new file mode 100644 index 00000000..3bbe224e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsIP.js @@ -0,0 +1,35 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsIP = exports.isIP = exports.IS_IP = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isIP_1 = __importDefault(require("validator/lib/isIP")); +exports.IS_IP = 'isIp'; +/** + * Checks if the string is an IP (version 4 or 6). + * If given value is not a string, then it returns false. + */ +function isIP(value, version) { + /* eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion */ + const versionStr = version ? `${version}` : undefined; + return typeof value === 'string' && (0, isIP_1.default)(value, versionStr); +} +exports.isIP = isIP; +/** + * Checks if the string is an IP (version 4 or 6). + * If given value is not a string, then it returns false. + */ +function IsIP(version, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_IP, + constraints: [version], + validator: { + validate: (value, args) => isIP(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be an ip address', validationOptions), + }, + }, validationOptions); +} +exports.IsIP = IsIP; +//# sourceMappingURL=IsIP.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsIP.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsIP.js.map new file mode 100644 index 00000000..cb0e6e0c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsIP.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsIP.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsIP.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,8DAA+C;AAIlC,QAAA,KAAK,GAAG,MAAM,CAAC;AAE5B;;;GAGG;AACH,SAAgB,IAAI,CAAC,KAAc,EAAE,OAAqB;IACxD,+EAA+E;IAC/E,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAE,GAAG,OAAO,EAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,cAAa,EAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AACvE,CAAC;AAJD,oBAIC;AAED;;;GAGG;AACH,SAAgB,IAAI,CAAC,OAAqB,EAAE,iBAAqC;IAC/E,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,aAAK;QACX,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACpE,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,iCAAiC,EAAE,iBAAiB,CAAC;SAC9G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAZD,oBAYC","sourcesContent":["import { 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 + '$property must be an ip address', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISBN.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISBN.js new file mode 100644 index 00000000..41d442ae --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISBN.js @@ -0,0 +1,35 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsISBN = exports.isISBN = exports.IS_ISBN = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isISBN_1 = __importDefault(require("validator/lib/isISBN")); +exports.IS_ISBN = 'isIsbn'; +/** + * Checks if the string is an ISBN (version 10 or 13). + * If given value is not a string, then it returns false. + */ +function isISBN(value, version) { + /* eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion */ + const versionStr = version ? `${version}` : undefined; + return typeof value === 'string' && (0, isISBN_1.default)(value, versionStr); +} +exports.isISBN = isISBN; +/** + * Checks if the string is an ISBN (version 10 or 13). + * If given value is not a string, then it returns false. + */ +function IsISBN(version, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_ISBN, + constraints: [version], + validator: { + validate: (value, args) => isISBN(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be an ISBN', validationOptions), + }, + }, validationOptions); +} +exports.IsISBN = IsISBN; +//# sourceMappingURL=IsISBN.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISBN.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISBN.js.map new file mode 100644 index 00000000..92faa5cc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISBN.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsISBN.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsISBN.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,kEAAmD;AAItC,QAAA,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;GAGG;AACH,SAAgB,MAAM,CAAC,KAAc,EAAE,OAAuB;IAC5D,+EAA+E;IAC/E,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAE,GAAG,OAAO,EAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,gBAAe,EAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AACzE,CAAC;AAJD,wBAIC;AAED;;;GAGG;AACH,SAAgB,MAAM,CAAC,OAAuB,EAAE,iBAAqC;IACnF,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,eAAO;QACb,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtE,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,2BAA2B,EAAE,iBAAiB,CAAC;SACxG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAZD,wBAYC","sourcesContent":["import { 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 + '$property must be an ISBN', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISIN.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISIN.js new file mode 100644 index 00000000..fea7b266 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISIN.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsISIN = exports.isISIN = exports.IS_ISIN = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isISIN_1 = __importDefault(require("validator/lib/isISIN")); +exports.IS_ISIN = 'isIsin'; +/** + * Checks if the string is an ISIN (stock/security identifier). + * If given value is not a string, then it returns false. + */ +function isISIN(value) { + return typeof value === 'string' && (0, isISIN_1.default)(value); +} +exports.isISIN = isISIN; +/** + * Checks if the string is an ISIN (stock/security identifier). + * If given value is not a string, then it returns false. + */ +function IsISIN(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_ISIN, + validator: { + validate: (value, args) => isISIN(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be an ISIN (stock/security identifier)', validationOptions), + }, + }, validationOptions); +} +exports.IsISIN = IsISIN; +//# sourceMappingURL=IsISIN.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISIN.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISIN.js.map new file mode 100644 index 00000000..1cda95f8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISIN.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsISIN.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsISIN.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,kEAAmD;AAEtC,QAAA,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;GAGG;AACH,SAAgB,MAAM,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,gBAAe,EAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAFD,wBAEC;AAED;;;GAGG;AACH,SAAgB,MAAM,CAAC,iBAAqC;IAC1D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,eAAO;QACb,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;YACjD,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,uDAAuD,EAClF,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,wBAcC","sourcesContent":["import { 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 + '$property must be an ISIN (stock/security identifier)',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISO31661Alpha2.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISO31661Alpha2.js new file mode 100644 index 00000000..5160c490 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISO31661Alpha2.js @@ -0,0 +1,30 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsISO31661Alpha2 = exports.isISO31661Alpha2 = exports.IS_ISO31661_ALPHA_2 = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isISO31661Alpha2_1 = __importDefault(require("validator/lib/isISO31661Alpha2")); +exports.IS_ISO31661_ALPHA_2 = 'isISO31661Alpha2'; +/** + * 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. + */ +function isISO31661Alpha2(value) { + return typeof value === 'string' && (0, isISO31661Alpha2_1.default)(value); +} +exports.isISO31661Alpha2 = isISO31661Alpha2; +/** + * 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. + */ +function IsISO31661Alpha2(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_ISO31661_ALPHA_2, + validator: { + validate: (value, args) => isISO31661Alpha2(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a valid ISO31661 Alpha2 code', validationOptions), + }, + }, validationOptions); +} +exports.IsISO31661Alpha2 = IsISO31661Alpha2; +//# sourceMappingURL=IsISO31661Alpha2.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISO31661Alpha2.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISO31661Alpha2.js.map new file mode 100644 index 00000000..7d92c8b0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISO31661Alpha2.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsISO31661Alpha2.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsISO31661Alpha2.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,sFAAuE;AAE1D,QAAA,mBAAmB,GAAG,kBAAkB,CAAC;AAEtD;;GAEG;AACH,SAAgB,gBAAgB,CAAC,KAAc;IAC7C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,0BAAyB,EAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AAFD,4CAEC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,iBAAqC;IACpE,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,2BAAmB;QACzB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAC3D,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,gDAAgD,EAC3E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,4CAcC","sourcesContent":["import { 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 + '$property must be a valid ISO31661 Alpha2 code',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISO31661Alpha3.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISO31661Alpha3.js new file mode 100644 index 00000000..01568805 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISO31661Alpha3.js @@ -0,0 +1,30 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsISO31661Alpha3 = exports.isISO31661Alpha3 = exports.IS_ISO31661_ALPHA_3 = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isISO31661Alpha3_1 = __importDefault(require("validator/lib/isISO31661Alpha3")); +exports.IS_ISO31661_ALPHA_3 = 'isISO31661Alpha3'; +/** + * 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. + */ +function isISO31661Alpha3(value) { + return typeof value === 'string' && (0, isISO31661Alpha3_1.default)(value); +} +exports.isISO31661Alpha3 = isISO31661Alpha3; +/** + * 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. + */ +function IsISO31661Alpha3(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_ISO31661_ALPHA_3, + validator: { + validate: (value, args) => isISO31661Alpha3(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a valid ISO31661 Alpha3 code', validationOptions), + }, + }, validationOptions); +} +exports.IsISO31661Alpha3 = IsISO31661Alpha3; +//# sourceMappingURL=IsISO31661Alpha3.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISO31661Alpha3.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISO31661Alpha3.js.map new file mode 100644 index 00000000..993d44d8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISO31661Alpha3.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsISO31661Alpha3.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsISO31661Alpha3.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,sFAAuE;AAE1D,QAAA,mBAAmB,GAAG,kBAAkB,CAAC;AAEtD;;GAEG;AACH,SAAgB,gBAAgB,CAAC,KAAc;IAC7C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,0BAAyB,EAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AAFD,4CAEC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,iBAAqC;IACpE,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,2BAAmB;QACzB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAC3D,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,gDAAgD,EAC3E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,4CAcC","sourcesContent":["import { 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 + '$property must be a valid ISO31661 Alpha3 code',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISO8601.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISO8601.js new file mode 100644 index 00000000..e077a1b3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISO8601.js @@ -0,0 +1,35 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsISO8601 = exports.isISO8601 = exports.IS_ISO8601 = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isISO8601_1 = __importDefault(require("validator/lib/isISO8601")); +exports.IS_ISO8601 = 'isIso8601'; +/** + * Checks if the string is a valid ISO 8601 date. + * If given value is not a string, then it returns false. + * Use the option strict = true for additional checks for a valid date, e.g. invalidates dates like 2019-02-29. + */ +function isISO8601(value, options) { + return typeof value === 'string' && (0, isISO8601_1.default)(value, options); +} +exports.isISO8601 = isISO8601; +/** + * Checks if the string is a valid ISO 8601 date. + * If given value is not a string, then it returns false. + * Use the option strict = true for additional checks for a valid date, e.g. invalidates dates like 2019-02-29. + */ +function IsISO8601(options, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_ISO8601, + constraints: [options], + validator: { + validate: (value, args) => isISO8601(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a valid ISO 8601 date string', validationOptions), + }, + }, validationOptions); +} +exports.IsISO8601 = IsISO8601; +//# sourceMappingURL=IsISO8601.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISO8601.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISO8601.js.map new file mode 100644 index 00000000..bc7f0522 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISO8601.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsISO8601.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsISO8601.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,wEAAyD;AAG5C,QAAA,UAAU,GAAG,WAAW,CAAC;AAEtC;;;;GAIG;AACH,SAAgB,SAAS,CAAC,KAAc,EAAE,OAAsC;IAC9E,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,mBAAkB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC;AAFD,8BAEC;AAED;;;;GAIG;AACH,SAAgB,SAAS,CACvB,OAAsC,EACtC,iBAAqC;IAErC,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,kBAAU;QAChB,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACzE,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,gDAAgD,EAC3E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAlBD,8BAkBC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isIso8601Validator from 'validator/lib/isISO8601';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.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?: ValidatorJS.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 + '$property must be a valid ISO 8601 date string',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISRC.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISRC.js new file mode 100644 index 00000000..dd046052 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISRC.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsISRC = exports.isISRC = exports.IS_ISRC = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isISRC_1 = __importDefault(require("validator/lib/isISRC")); +exports.IS_ISRC = 'isISRC'; +/** + * Check if the string is a ISRC. + * If given value is not a string, then it returns false. + */ +function isISRC(value) { + return typeof value === 'string' && (0, isISRC_1.default)(value); +} +exports.isISRC = isISRC; +/** + * Check if the string is a ISRC. + * If given value is not a string, then it returns false. + */ +function IsISRC(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_ISRC, + validator: { + validate: (value, args) => isISRC(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be an ISRC', validationOptions), + }, + }, validationOptions); +} +exports.IsISRC = IsISRC; +//# sourceMappingURL=IsISRC.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISRC.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISRC.js.map new file mode 100644 index 00000000..b15de9f4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISRC.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsISRC.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsISRC.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,kEAAmD;AAEtC,QAAA,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;GAGG;AACH,SAAgB,MAAM,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,gBAAe,EAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAFD,wBAEC;AAED;;;GAGG;AACH,SAAgB,MAAM,CAAC,iBAAqC;IAC1D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,eAAO;QACb,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;YACjD,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,2BAA2B,EAAE,iBAAiB,CAAC;SACxG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAXD,wBAWC","sourcesContent":["import { 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 + '$property must be an ISRC', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISSN.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISSN.js new file mode 100644 index 00000000..1fe2e020 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISSN.js @@ -0,0 +1,33 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsISSN = exports.isISSN = exports.IS_ISSN = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isISSN_1 = __importDefault(require("validator/lib/isISSN")); +exports.IS_ISSN = 'isISSN'; +/** + * Checks if the string is a ISSN. + * If given value is not a string, then it returns false. + */ +function isISSN(value, options) { + return typeof value === 'string' && (0, isISSN_1.default)(value, options); +} +exports.isISSN = isISSN; +/** + * Checks if the string is a ISSN. + * If given value is not a string, then it returns false. + */ +function IsISSN(options, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_ISSN, + constraints: [options], + validator: { + validate: (value, args) => isISSN(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a ISSN', validationOptions), + }, + }, validationOptions); +} +exports.IsISSN = IsISSN; +//# sourceMappingURL=IsISSN.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISSN.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISSN.js.map new file mode 100644 index 00000000..09f6ff2e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsISSN.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsISSN.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsISSN.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,kEAAmD;AAGtC,QAAA,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;GAGG;AACH,SAAgB,MAAM,CAAC,KAAc,EAAE,OAAmC;IACxE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,gBAAe,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAFD,wBAEC;AAED;;;GAGG;AACH,SAAgB,MAAM,CAAC,OAAmC,EAAE,iBAAqC;IAC/F,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,eAAO;QACb,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtE,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,0BAA0B,EAAE,iBAAiB,CAAC;SACvG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAZD,wBAYC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isISSNValidator from 'validator/lib/isISSN';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.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?: ValidatorJS.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 + '$property must be a ISSN', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsIdentityCard.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsIdentityCard.js new file mode 100644 index 00000000..8560fcaa --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsIdentityCard.js @@ -0,0 +1,37 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsIdentityCard = exports.isIdentityCard = exports.IS_IDENTITY_CARD = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isIdentityCard_1 = __importDefault(require("validator/lib/isIdentityCard")); +exports.IS_IDENTITY_CARD = 'isIdentityCard'; +/** + * Check if the string is a valid identity card code. + * 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. + * Defaults to 'any'. + * If given value is not a string, then it returns false. + */ +function isIdentityCard(value, locale) { + return typeof value === 'string' && (0, isIdentityCard_1.default)(value, locale); +} +exports.isIdentityCard = isIdentityCard; +/** + * Check if the string is a valid identity card code. + * 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. + * Defaults to 'any'. + * If given value is not a string, then it returns false. + */ +function IsIdentityCard(locale, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_IDENTITY_CARD, + constraints: [locale], + validator: { + validate: (value, args) => isIdentityCard(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a identity card number', validationOptions), + }, + }, validationOptions); +} +exports.IsIdentityCard = IsIdentityCard; +//# sourceMappingURL=IsIdentityCard.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsIdentityCard.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsIdentityCard.js.map new file mode 100644 index 00000000..4f26eeec --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsIdentityCard.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsIdentityCard.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsIdentityCard.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,kFAAmE;AAGtD,QAAA,gBAAgB,GAAG,gBAAgB,CAAC;AAEjD;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,KAAc,EAAE,MAAsC;IACnF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,wBAAuB,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC7E,CAAC;AAFD,wCAEC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAC5B,MAAuC,EACvC,iBAAqC;IAErC,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,wBAAgB;QACtB,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC9E,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,0CAA0C,EACrE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAlBD,wCAkBC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isIdentityCardValidator from 'validator/lib/isIdentityCard';\nimport ValidatorJS from 'validator';\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: ValidatorJS.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?: ValidatorJS.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 + '$property must be a identity card number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsJSON.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsJSON.js new file mode 100644 index 00000000..764f010d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsJSON.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsJSON = exports.isJSON = exports.IS_JSON = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isJSON_1 = __importDefault(require("validator/lib/isJSON")); +exports.IS_JSON = 'isJson'; +/** + * Checks if the string is valid JSON (note: uses JSON.parse). + * If given value is not a string, then it returns false. + */ +function isJSON(value) { + return typeof value === 'string' && (0, isJSON_1.default)(value); +} +exports.isJSON = isJSON; +/** + * Checks if the string is valid JSON (note: uses JSON.parse). + * If given value is not a string, then it returns false. + */ +function IsJSON(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_JSON, + validator: { + validate: (value, args) => isJSON(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a json string', validationOptions), + }, + }, validationOptions); +} +exports.IsJSON = IsJSON; +//# sourceMappingURL=IsJSON.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsJSON.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsJSON.js.map new file mode 100644 index 00000000..3688e259 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsJSON.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsJSON.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsJSON.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,kEAAmD;AAEtC,QAAA,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;GAGG;AACH,SAAgB,MAAM,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,gBAAe,EAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAFD,wBAEC;AAED;;;GAGG;AACH,SAAgB,MAAM,CAAC,iBAAqC;IAC1D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,eAAO;QACb,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;YACjD,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,iCAAiC,EAAE,iBAAiB,CAAC;SAC9G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAXD,wBAWC","sourcesContent":["import { 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 + '$property must be a json string', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsJWT.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsJWT.js new file mode 100644 index 00000000..8d93df90 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsJWT.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsJWT = exports.isJWT = exports.IS_JWT = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isJWT_1 = __importDefault(require("validator/lib/isJWT")); +exports.IS_JWT = 'isJwt'; +/** + * Checks if the string is valid JWT token. + * If given value is not a string, then it returns false. + */ +function isJWT(value) { + return typeof value === 'string' && (0, isJWT_1.default)(value); +} +exports.isJWT = isJWT; +/** + * Checks if the string is valid JWT token. + * If given value is not a string, then it returns false. + */ +function IsJWT(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_JWT, + validator: { + validate: (value, args) => isJWT(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a jwt string', validationOptions), + }, + }, validationOptions); +} +exports.IsJWT = IsJWT; +//# sourceMappingURL=IsJWT.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsJWT.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsJWT.js.map new file mode 100644 index 00000000..d62ff0c6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsJWT.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsJWT.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsJWT.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,gEAAiD;AAEpC,QAAA,MAAM,GAAG,OAAO,CAAC;AAE9B;;;GAGG;AACH,SAAgB,KAAK,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,eAAc,EAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAFD,sBAEC;AAED;;;GAGG;AACH,SAAgB,KAAK,CAAC,iBAAqC;IACzD,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,cAAM;QACZ,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;YAChD,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,gCAAgC,EAAE,iBAAiB,CAAC;SAC7G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAXD,sBAWC","sourcesContent":["import { 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 + '$property must be a jwt string', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsLocale.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsLocale.js new file mode 100644 index 00000000..6135cb81 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsLocale.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsLocale = exports.isLocale = exports.IS_LOCALE = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isLocale_1 = __importDefault(require("validator/lib/isLocale")); +exports.IS_LOCALE = 'isLocale'; +/** + * Check if the string is a locale. + * If given value is not a string, then it returns false. + */ +function isLocale(value) { + return typeof value === 'string' && (0, isLocale_1.default)(value); +} +exports.isLocale = isLocale; +/** + * Check if the string is a locale. + * If given value is not a string, then it returns false. + */ +function IsLocale(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_LOCALE, + validator: { + validate: (value, args) => isLocale(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be locale', validationOptions), + }, + }, validationOptions); +} +exports.IsLocale = IsLocale; +//# sourceMappingURL=IsLocale.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsLocale.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsLocale.js.map new file mode 100644 index 00000000..05815304 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsLocale.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsLocale.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsLocale.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,sEAAuD;AAE1C,QAAA,SAAS,GAAG,UAAU,CAAC;AAEpC;;;GAGG;AACH,SAAgB,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,kBAAiB,EAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAFD,4BAEC;AAED;;;GAGG;AACH,SAAgB,QAAQ,CAAC,iBAAqC;IAC5D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,iBAAS;QACf,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;YACnD,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,0BAA0B,EAAE,iBAAiB,CAAC;SACvG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAXD,4BAWC","sourcesContent":["import { 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 + '$property must be locale', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsLowercase.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsLowercase.js new file mode 100644 index 00000000..018cb667 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsLowercase.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsLowercase = exports.isLowercase = exports.IS_LOWERCASE = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isLowercase_1 = __importDefault(require("validator/lib/isLowercase")); +exports.IS_LOWERCASE = 'isLowercase'; +/** + * Checks if the string is lowercase. + * If given value is not a string, then it returns false. + */ +function isLowercase(value) { + return typeof value === 'string' && (0, isLowercase_1.default)(value); +} +exports.isLowercase = isLowercase; +/** + * Checks if the string is lowercase. + * If given value is not a string, then it returns false. + */ +function IsLowercase(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_LOWERCASE, + validator: { + validate: (value, args) => isLowercase(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a lowercase string', validationOptions), + }, + }, validationOptions); +} +exports.IsLowercase = IsLowercase; +//# sourceMappingURL=IsLowercase.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsLowercase.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsLowercase.js.map new file mode 100644 index 00000000..8e14f356 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsLowercase.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsLowercase.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsLowercase.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,4EAA6D;AAEhD,QAAA,YAAY,GAAG,aAAa,CAAC;AAE1C;;;GAGG;AACH,SAAgB,WAAW,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,qBAAoB,EAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAFD,kCAEC;AAED;;;GAGG;AACH,SAAgB,WAAW,CAAC,iBAAqC;IAC/D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,oBAAY;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;YACtD,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,sCAAsC,EACjE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,kCAcC","sourcesContent":["import { 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 + '$property must be a lowercase string',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMacAddress.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMacAddress.js new file mode 100644 index 00000000..17ae0fc1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMacAddress.js @@ -0,0 +1,34 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsMACAddress = exports.isMACAddress = exports.IS_MAC_ADDRESS = void 0; +const ValidationOptions_1 = require("../ValidationOptions"); +const ValidateBy_1 = require("../common/ValidateBy"); +const isMACAddress_1 = __importDefault(require("validator/lib/isMACAddress")); +exports.IS_MAC_ADDRESS = 'isMacAddress'; +/** + * Check if the string is a MAC address. + * If given value is not a string, then it returns false. + */ +function isMACAddress(value, options) { + return typeof value === 'string' && (0, isMACAddress_1.default)(value, options); +} +exports.isMACAddress = isMACAddress; +function IsMACAddress(optionsOrValidationOptionsArg, validationOptionsArg) { + const options = !(0, ValidationOptions_1.isValidationOptions)(optionsOrValidationOptionsArg) ? optionsOrValidationOptionsArg : undefined; + const validationOptions = (0, ValidationOptions_1.isValidationOptions)(optionsOrValidationOptionsArg) + ? optionsOrValidationOptionsArg + : validationOptionsArg; + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_MAC_ADDRESS, + constraints: [options], + validator: { + validate: (value, args) => isMACAddress(value, options), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a MAC Address', validationOptions), + }, + }, validationOptions); +} +exports.IsMACAddress = IsMACAddress; +//# sourceMappingURL=IsMacAddress.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMacAddress.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMacAddress.js.map new file mode 100644 index 00000000..bdb0884d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMacAddress.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsMacAddress.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsMacAddress.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA8E;AAC9E,qDAAgE;AAChE,8EAA+D;AAGlD,QAAA,cAAc,GAAG,cAAc,CAAC;AAE7C;;;GAGG;AACH,SAAgB,YAAY,CAAC,KAAc,EAAE,OAAyC;IACpF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,sBAAqB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC5E,CAAC;AAFD,oCAEC;AAWD,SAAgB,YAAY,CAC1B,6BAAmF,EACnF,oBAAwC;IAExC,MAAM,OAAO,GAAG,CAAC,IAAA,uCAAmB,EAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,SAAS,CAAC;IAChH,MAAM,iBAAiB,GAAG,IAAA,uCAAmB,EAAC,6BAA6B,CAAC;QAC1E,CAAC,CAAC,6BAA6B;QAC/B,CAAC,CAAC,oBAAoB,CAAC;IAEzB,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,sBAAc;QACpB,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC;YAChE,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,iCAAiC,EAAE,iBAAiB,CAAC;SAC9G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AApBD,oCAoBC","sourcesContent":["import { ValidationOptions, isValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isMacAddressValidator from 'validator/lib/isMACAddress';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.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?: ValidatorJS.IsMACAddressOptions,\n validationOptionsArg?: ValidationOptions\n): PropertyDecorator;\nexport function IsMACAddress(validationOptionsArg?: ValidationOptions): PropertyDecorator;\nexport function IsMACAddress(\n optionsOrValidationOptionsArg?: ValidatorJS.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 + '$property must be a MAC Address', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMagnetURI.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMagnetURI.js new file mode 100644 index 00000000..a3376889 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMagnetURI.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsMagnetURI = exports.isMagnetURI = exports.IS_MAGNET_URI = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isMagnetURI_1 = __importDefault(require("validator/lib/isMagnetURI")); +exports.IS_MAGNET_URI = 'isMagnetURI'; +/** + * Check if the string is a magnet uri format. + * If given value is not a string, then it returns false. + */ +function isMagnetURI(value) { + return typeof value === 'string' && (0, isMagnetURI_1.default)(value); +} +exports.isMagnetURI = isMagnetURI; +/** + * Check if the string is a magnet uri format. + * If given value is not a string, then it returns false. + */ +function IsMagnetURI(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_MAGNET_URI, + validator: { + validate: (value, args) => isMagnetURI(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be magnet uri format', validationOptions), + }, + }, validationOptions); +} +exports.IsMagnetURI = IsMagnetURI; +//# sourceMappingURL=IsMagnetURI.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMagnetURI.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMagnetURI.js.map new file mode 100644 index 00000000..42d78893 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMagnetURI.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsMagnetURI.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsMagnetURI.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,4EAA6D;AAEhD,QAAA,aAAa,GAAG,aAAa,CAAC;AAE3C;;;GAGG;AACH,SAAgB,WAAW,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,qBAAoB,EAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAFD,kCAEC;AAED;;;GAGG;AACH,SAAgB,WAAW,CAAC,iBAAqC;IAC/D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,qBAAa;QACnB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;YACtD,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,qCAAqC,EAChE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,kCAcC","sourcesContent":["import { 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 + '$property must be magnet uri format',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMilitaryTime.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMilitaryTime.js new file mode 100644 index 00000000..3d75a0c7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMilitaryTime.js @@ -0,0 +1,33 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsMilitaryTime = exports.isMilitaryTime = exports.IS_MILITARY_TIME = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const matches_1 = __importDefault(require("validator/lib/matches")); +exports.IS_MILITARY_TIME = 'isMilitaryTime'; +/** + * Checks if the string represents a time without a given timezone in the format HH:MM (military) + * If the given value does not match the pattern HH:MM, then it returns false. + */ +function isMilitaryTime(value) { + const militaryTimeRegex = /^([01]\d|2[0-3]):?([0-5]\d)$/; + return typeof value === 'string' && (0, matches_1.default)(value, militaryTimeRegex); +} +exports.isMilitaryTime = isMilitaryTime; +/** + * Checks if the string represents a time without a given timezone in the format HH:MM (military) + * If the given value does not match the pattern HH:MM, then it returns false. + */ +function IsMilitaryTime(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_MILITARY_TIME, + validator: { + validate: (value, args) => isMilitaryTime(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a valid representation of military time in the format HH:MM', validationOptions), + }, + }, validationOptions); +} +exports.IsMilitaryTime = IsMilitaryTime; +//# sourceMappingURL=IsMilitaryTime.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMilitaryTime.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMilitaryTime.js.map new file mode 100644 index 00000000..f4796047 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMilitaryTime.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsMilitaryTime.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsMilitaryTime.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,oEAAqD;AAExC,QAAA,gBAAgB,GAAG,gBAAgB,CAAC;AAEjD;;;GAGG;AACH,SAAgB,cAAc,CAAC,KAAc;IAC3C,MAAM,iBAAiB,GAAG,8BAA8B,CAAC;IACzD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,iBAAgB,EAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;AACjF,CAAC;AAHD,wCAGC;AAED;;;GAGG;AACH,SAAgB,cAAc,CAAC,iBAAqC;IAClE,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,wBAAgB;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC;YACzD,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,+EAA+E,EAC1G,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,wCAcC","sourcesContent":["import { 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 + '$property must be a valid representation of military time in the format HH:MM',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMimeType.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMimeType.js new file mode 100644 index 00000000..a045b802 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMimeType.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsMimeType = exports.isMimeType = exports.IS_MIME_TYPE = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isMimeType_1 = __importDefault(require("validator/lib/isMimeType")); +exports.IS_MIME_TYPE = 'isMimeType'; +/** + * Check if the string matches to a valid MIME type format + * If given value is not a string, then it returns false. + */ +function isMimeType(value) { + return typeof value === 'string' && (0, isMimeType_1.default)(value); +} +exports.isMimeType = isMimeType; +/** + * Check if the string matches to a valid MIME type format + * If given value is not a string, then it returns false. + */ +function IsMimeType(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_MIME_TYPE, + validator: { + validate: (value, args) => isMimeType(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be MIME type format', validationOptions), + }, + }, validationOptions); +} +exports.IsMimeType = IsMimeType; +//# sourceMappingURL=IsMimeType.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMimeType.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMimeType.js.map new file mode 100644 index 00000000..965cb535 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMimeType.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsMimeType.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsMimeType.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,0EAA2D;AAE9C,QAAA,YAAY,GAAG,YAAY,CAAC;AAEzC;;;GAGG;AACH,SAAgB,UAAU,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,oBAAmB,EAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAFD,gCAEC;AAED;;;GAGG;AACH,SAAgB,UAAU,CAAC,iBAAqC;IAC9D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,oBAAY;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;YACrD,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,oCAAoC,EAC/D,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,gCAcC","sourcesContent":["import { 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 + '$property must be MIME type format',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMobilePhone.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMobilePhone.js new file mode 100644 index 00000000..005b4ad5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMobilePhone.js @@ -0,0 +1,49 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsMobilePhone = exports.isMobilePhone = exports.IS_MOBILE_PHONE = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isMobilePhone_1 = __importDefault(require("validator/lib/isMobilePhone")); +exports.IS_MOBILE_PHONE = 'isMobilePhone'; +/** + * Checks if the string is a mobile phone number (locale is either an array of locales (e.g ['sk-SK', 'sr-RS']) + * 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', + * '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', + * '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', + * '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', + * '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', + * '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', + * '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', + * 'zh-HK', 'zh-MO', 'zh-TW'] + * If given value is not a string, then it returns false. + */ +function isMobilePhone(value, locale, options) { + return typeof value === 'string' && (0, isMobilePhone_1.default)(value, locale, options); +} +exports.isMobilePhone = isMobilePhone; +/** + * Checks if the string is a mobile phone number (locale is either an array of locales (e.g ['sk-SK', 'sr-RS']) + * 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', + * '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', + * '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', + * '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', + * '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', + * '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', + * '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', + * 'zh-HK', 'zh-MO', 'zh-TW'] + * If given value is not a string, then it returns false. + */ +function IsMobilePhone(locale, options, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_MOBILE_PHONE, + constraints: [locale, options], + validator: { + validate: (value, args) => isMobilePhone(value, args.constraints[0], args.constraints[1]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a phone number', validationOptions), + }, + }, validationOptions); +} +exports.IsMobilePhone = IsMobilePhone; +//# sourceMappingURL=IsMobilePhone.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMobilePhone.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMobilePhone.js.map new file mode 100644 index 00000000..01a074c2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMobilePhone.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsMobilePhone.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsMobilePhone.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,gFAAiE;AAGpD,QAAA,eAAe,GAAG,eAAe,CAAC;AAE/C;;;;;;;;;;;GAWG;AACH,SAAgB,aAAa,CAC3B,KAAc,EACd,MAAsC,EACtC,OAA0C;IAE1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,uBAAsB,EAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACrF,CAAC;AAND,sCAMC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,aAAa,CAC3B,MAAsC,EACtC,OAA0C,EAC1C,iBAAqC;IAErC,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,uBAAe;QACrB,WAAW,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;QAC9B,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAClG,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,kCAAkC,EAAE,iBAAiB,CAAC;SAC/G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAhBD,sCAgBC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isMobilePhoneValidator from 'validator/lib/isMobilePhone';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.MobilePhoneLocale,\n options?: ValidatorJS.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?: ValidatorJS.MobilePhoneLocale,\n options?: ValidatorJS.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 + '$property must be a phone number', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMongoId.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMongoId.js new file mode 100644 index 00000000..eefad643 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMongoId.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsMongoId = exports.isMongoId = exports.IS_MONGO_ID = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isMongoId_1 = __importDefault(require("validator/lib/isMongoId")); +exports.IS_MONGO_ID = 'isMongoId'; +/** + * Checks if the string is a valid hex-encoded representation of a MongoDB ObjectId. + * If given value is not a string, then it returns false. + */ +function isMongoId(value) { + return typeof value === 'string' && (0, isMongoId_1.default)(value); +} +exports.isMongoId = isMongoId; +/** + * Checks if the string is a valid hex-encoded representation of a MongoDB ObjectId. + * If given value is not a string, then it returns false. + */ +function IsMongoId(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_MONGO_ID, + validator: { + validate: (value, args) => isMongoId(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a mongodb id', validationOptions), + }, + }, validationOptions); +} +exports.IsMongoId = IsMongoId; +//# sourceMappingURL=IsMongoId.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMongoId.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMongoId.js.map new file mode 100644 index 00000000..f4b686cf --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMongoId.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsMongoId.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsMongoId.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,wEAAyD;AAE5C,QAAA,WAAW,GAAG,WAAW,CAAC;AAEvC;;;GAGG;AACH,SAAgB,SAAS,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,mBAAkB,EAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAFD,8BAEC;AAED;;;GAGG;AACH,SAAgB,SAAS,CAAC,iBAAqC;IAC7D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,mBAAW;QACjB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;YACpD,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,gCAAgC,EAAE,iBAAiB,CAAC;SAC7G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAXD,8BAWC","sourcesContent":["import { 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 + '$property must be a mongodb id', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMultibyte.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMultibyte.js new file mode 100644 index 00000000..341889d1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMultibyte.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsMultibyte = exports.isMultibyte = exports.IS_MULTIBYTE = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isMultibyte_1 = __importDefault(require("validator/lib/isMultibyte")); +exports.IS_MULTIBYTE = 'isMultibyte'; +/** + * Checks if the string contains one or more multibyte chars. + * If given value is not a string, then it returns false. + */ +function isMultibyte(value) { + return typeof value === 'string' && (0, isMultibyte_1.default)(value); +} +exports.isMultibyte = isMultibyte; +/** + * Checks if the string contains one or more multibyte chars. + * If given value is not a string, then it returns false. + */ +function IsMultibyte(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_MULTIBYTE, + validator: { + validate: (value, args) => isMultibyte(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must contain one or more multibyte chars', validationOptions), + }, + }, validationOptions); +} +exports.IsMultibyte = IsMultibyte; +//# sourceMappingURL=IsMultibyte.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMultibyte.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMultibyte.js.map new file mode 100644 index 00000000..e8dbe613 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsMultibyte.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsMultibyte.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsMultibyte.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,4EAA6D;AAEhD,QAAA,YAAY,GAAG,aAAa,CAAC;AAE1C;;;GAGG;AACH,SAAgB,WAAW,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,qBAAoB,EAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAFD,kCAEC;AAED;;;GAGG;AACH,SAAgB,WAAW,CAAC,iBAAqC;IAC/D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,oBAAY;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;YACtD,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,oDAAoD,EAC/E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,kCAcC","sourcesContent":["import { 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 + '$property must contain one or more multibyte chars',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsNumberString.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsNumberString.js new file mode 100644 index 00000000..1186b732 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsNumberString.js @@ -0,0 +1,33 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsNumberString = exports.isNumberString = exports.IS_NUMBER_STRING = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isNumeric_1 = __importDefault(require("validator/lib/isNumeric")); +exports.IS_NUMBER_STRING = 'isNumberString'; +/** + * Checks if the string is numeric. + * If given value is not a string, then it returns false. + */ +function isNumberString(value, options) { + return typeof value === 'string' && (0, isNumeric_1.default)(value, options); +} +exports.isNumberString = isNumberString; +/** + * Checks if the string is numeric. + * If given value is not a string, then it returns false. + */ +function IsNumberString(options, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_NUMBER_STRING, + constraints: [options], + validator: { + validate: (value, args) => isNumberString(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a number string', validationOptions), + }, + }, validationOptions); +} +exports.IsNumberString = IsNumberString; +//# sourceMappingURL=IsNumberString.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsNumberString.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsNumberString.js.map new file mode 100644 index 00000000..fe9aaa6c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsNumberString.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsNumberString.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsNumberString.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,wEAAyD;AAG5C,QAAA,gBAAgB,GAAG,gBAAgB,CAAC;AAEjD;;;GAGG;AACH,SAAgB,cAAc,CAAC,KAAc,EAAE,OAAsC;IACnF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,mBAAkB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC;AAFD,wCAEC;AAED;;;GAGG;AACH,SAAgB,cAAc,CAC5B,OAAsC,EACtC,iBAAqC;IAErC,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,wBAAgB;QACtB,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC9E,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,mCAAmC,EAAE,iBAAiB,CAAC;SAChH;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,wCAeC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isNumericValidator from 'validator/lib/isNumeric';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.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?: ValidatorJS.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 + '$property must be a number string', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsOctal.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsOctal.js new file mode 100644 index 00000000..d12308b4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsOctal.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsOctal = exports.isOctal = exports.IS_OCTAL = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isOctal_1 = __importDefault(require("validator/lib/isOctal")); +exports.IS_OCTAL = 'isOctal'; +/** + * Check if the string is a valid octal number. + * If given value is not a string, then it returns false. + */ +function isOctal(value) { + return typeof value === 'string' && (0, isOctal_1.default)(value); +} +exports.isOctal = isOctal; +/** + * Check if the string is a valid octal number. + * If given value is not a string, then it returns false. + */ +function IsOctal(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_OCTAL, + validator: { + validate: (value, args) => isOctal(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be valid octal number', validationOptions), + }, + }, validationOptions); +} +exports.IsOctal = IsOctal; +//# sourceMappingURL=IsOctal.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsOctal.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsOctal.js.map new file mode 100644 index 00000000..10045fac --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsOctal.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsOctal.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsOctal.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,oEAAqD;AAExC,QAAA,QAAQ,GAAG,SAAS,CAAC;AAElC;;;GAGG;AACH,SAAgB,OAAO,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,iBAAgB,EAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAFD,0BAEC;AAED;;;GAGG;AACH,SAAgB,OAAO,CAAC,iBAAqC;IAC3D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,gBAAQ;QACd,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;YAClD,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,sCAAsC,EACjE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,0BAcC","sourcesContent":["import { 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 + '$property must be valid octal number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPassportNumber.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPassportNumber.js new file mode 100644 index 00000000..2afcee7f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPassportNumber.js @@ -0,0 +1,33 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsPassportNumber = exports.isPassportNumber = exports.IS_PASSPORT_NUMBER = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isPassportNumber_1 = __importDefault(require("validator/lib/isPassportNumber")); +exports.IS_PASSPORT_NUMBER = 'isPassportNumber'; +/** + * Check if the string is a valid passport number relative to a specific country code. + * If given value is not a string, then it returns false. + */ +function isPassportNumber(value, countryCode) { + return typeof value === 'string' && (0, isPassportNumber_1.default)(value, countryCode); +} +exports.isPassportNumber = isPassportNumber; +/** + * Check if the string is a valid passport number relative to a specific country code. + * If given value is not a string, then it returns false. + */ +function IsPassportNumber(countryCode, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_PASSPORT_NUMBER, + constraints: [countryCode], + validator: { + validate: (value, args) => isPassportNumber(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be valid passport number', validationOptions), + }, + }, validationOptions); +} +exports.IsPassportNumber = IsPassportNumber; +//# sourceMappingURL=IsPassportNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPassportNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPassportNumber.js.map new file mode 100644 index 00000000..782c6eaf --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPassportNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsPassportNumber.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsPassportNumber.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,sFAAuE;AAE1D,QAAA,kBAAkB,GAAG,kBAAkB,CAAC;AAErD;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,KAAc,EAAE,WAAmB;IAClE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,0BAAyB,EAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AACpF,CAAC;AAFD,4CAEC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,WAAmB,EAAE,iBAAqC;IACzF,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,0BAAkB;QACxB,WAAW,EAAE,CAAC,WAAW,CAAC;QAC1B,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAChF,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,yCAAyC,EACpE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,4CAeC","sourcesContent":["import { 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 + '$property must be valid passport number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPhoneNumber.js new file mode 100644 index 00000000..bbea9efa --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPhoneNumber.js @@ -0,0 +1,45 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsPhoneNumber = exports.isPhoneNumber = exports.IS_PHONE_NUMBER = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const libphonenumber_js_1 = require("libphonenumber-js"); +exports.IS_PHONE_NUMBER = 'isPhoneNumber'; +/** + * Checks if the string is a valid phone number. To successfully validate any phone number the text must include + * the intl. calling code, if the calling code wont be provided then the region must be set. + * + * @param value the potential phone number string to test + * @param region 2 characters uppercase country code (e.g. DE, US, CH) for country specific validation. + * If text doesn't start with the international calling code (e.g. +41), then you must set this parameter. + */ +function isPhoneNumber(value, region) { + try { + const phoneNum = (0, libphonenumber_js_1.parsePhoneNumberFromString)(value, region); + const result = phoneNum === null || phoneNum === void 0 ? void 0 : phoneNum.isValid(); + return !!result; + } + catch (error) { + // logging? + return false; + } +} +exports.isPhoneNumber = isPhoneNumber; +/** + * Checks if the string is a valid phone number. To successfully validate any phone number the text must include + * the intl. calling code, if the calling code wont be provided then the region must be set. + * + * @param region 2 characters uppercase country code (e.g. DE, US, CH) for country specific validation. + * If text doesn't start with the international calling code (e.g. +41), then you must set this parameter. + */ +function IsPhoneNumber(region, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_PHONE_NUMBER, + constraints: [region], + validator: { + validate: (value, args) => isPhoneNumber(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a valid phone number', validationOptions), + }, + }, validationOptions); +} +exports.IsPhoneNumber = IsPhoneNumber; +//# sourceMappingURL=IsPhoneNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPhoneNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPhoneNumber.js.map new file mode 100644 index 00000000..5e42978f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPhoneNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsPhoneNumber.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsPhoneNumber.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAChE,yDAA4E;AAE/D,QAAA,eAAe,GAAG,eAAe,CAAC;AAE/C;;;;;;;GAOG;AACH,SAAgB,aAAa,CAAC,KAAa,EAAE,MAAoB;IAC/D,IAAI;QACF,MAAM,QAAQ,GAAG,IAAA,8CAA0B,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,EAAE,CAAC;QACnC,OAAO,CAAC,CAAC,MAAM,CAAC;KACjB;IAAC,OAAO,KAAK,EAAE;QACd,WAAW;QACX,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AATD,sCASC;AAED;;;;;;GAMG;AACH,SAAgB,aAAa,CAAC,MAAoB,EAAE,iBAAqC;IACvF,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,uBAAe;QACrB,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC7E,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,wCAAwC,EACnE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,sCAeC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport { parsePhoneNumberFromString, CountryCode } from 'libphonenumber-js';\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?: CountryCode): boolean {\n try {\n const phoneNum = parsePhoneNumberFromString(value, region);\n const result = phoneNum?.isValid();\n return !!result;\n } catch (error) {\n // logging?\n return false;\n }\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(region?: CountryCode, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_PHONE_NUMBER,\n constraints: [region],\n validator: {\n validate: (value, args): boolean => isPhoneNumber(value, args.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + '$property must be a valid phone number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPort.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPort.js new file mode 100644 index 00000000..da6e0367 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPort.js @@ -0,0 +1,30 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsPort = exports.isPort = exports.IS_PORT = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isPort_1 = __importDefault(require("validator/lib/isPort")); +exports.IS_PORT = 'isPort'; +/** + * Check if the string is a valid port number. + */ +function isPort(value) { + return typeof value === 'string' && (0, isPort_1.default)(value); +} +exports.isPort = isPort; +/** + * Check if the string is a valid port number. + */ +function IsPort(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_PORT, + validator: { + validate: (value, args) => isPort(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a port', validationOptions), + }, + }, validationOptions); +} +exports.IsPort = IsPort; +//# sourceMappingURL=IsPort.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPort.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPort.js.map new file mode 100644 index 00000000..7a9c34cb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPort.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsPort.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsPort.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,kEAAmD;AAEtC,QAAA,OAAO,GAAG,QAAQ,CAAC;AAEhC;;GAEG;AACH,SAAgB,MAAM,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,gBAAe,EAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAFD,wBAEC;AAED;;GAEG;AACH,SAAgB,MAAM,CAAC,iBAAqC;IAC1D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,eAAO;QACb,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;YACjD,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,0BAA0B,EAAE,iBAAiB,CAAC;SACvG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAXD,wBAWC","sourcesContent":["import { 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 + '$property must be a port', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPostalCode.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPostalCode.js new file mode 100644 index 00000000..64a151e1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPostalCode.js @@ -0,0 +1,35 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsPostalCode = exports.isPostalCode = exports.IS_POSTAL_CODE = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isPostalCode_1 = __importDefault(require("validator/lib/isPostalCode")); +exports.IS_POSTAL_CODE = 'isPostalCode'; +/** + * Check if the string is a postal code, + * (locale is one of [ 'AD', 'AT', 'AU', 'BE', 'BG', 'BR', 'CA', 'CH', 'CZ', 'DE', 'DK', 'DZ', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'ID', 'IE' 'IL', 'IN', 'IR', 'IS', 'IT', 'JP', 'KE', 'LI', 'LT', 'LU', 'LV', 'MT', 'MX', 'NL', 'NO', 'NZ', 'PL', 'PR', 'PT', 'RO', 'RU', 'SA', 'SE', 'SI', 'TN', 'TW', 'UA', 'US', 'ZA', 'ZM' ] OR 'any'. If 'any' is used, function will check if any of the locals match. Locale list is validator.isPostalCodeLocales.). + * If given value is not a string, then it returns false. + */ +function isPostalCode(value, locale) { + return typeof value === 'string' && (0, isPostalCode_1.default)(value, locale); +} +exports.isPostalCode = isPostalCode; +/** + * Check if the string is a postal code, + * (locale is one of [ 'AD', 'AT', 'AU', 'BE', 'BG', 'BR', 'CA', 'CH', 'CZ', 'DE', 'DK', 'DZ', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'ID', 'IE' 'IL', 'IN', 'IR', 'IS', 'IT', 'JP', 'KE', 'LI', 'LT', 'LU', 'LV', 'MT', 'MX', 'NL', 'NO', 'NZ', 'PL', 'PR', 'PT', 'RO', 'RU', 'SA', 'SE', 'SI', 'TN', 'TW', 'UA', 'US', 'ZA', 'ZM' ] OR 'any'. If 'any' is used, function will check if any of the locals match. Locale list is validator.isPostalCodeLocales.). + * If given value is not a string, then it returns false. + */ +function IsPostalCode(locale, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_POSTAL_CODE, + constraints: [locale], + validator: { + validate: (value, args) => isPostalCode(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a postal code', validationOptions), + }, + }, validationOptions); +} +exports.IsPostalCode = IsPostalCode; +//# sourceMappingURL=IsPostalCode.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPostalCode.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPostalCode.js.map new file mode 100644 index 00000000..294d6453 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsPostalCode.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsPostalCode.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsPostalCode.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,8EAA+D;AAGlD,QAAA,cAAc,GAAG,cAAc,CAAC;AAE7C;;;;GAIG;AACH,SAAgB,YAAY,CAAC,KAAc,EAAE,MAA4C;IACvF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,sBAAqB,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC3E,CAAC;AAFD,oCAEC;AAED;;;;GAIG;AACH,SAAgB,YAAY,CAC1B,MAA6C,EAC7C,iBAAqC;IAErC,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,sBAAc;QACpB,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC5E,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,iCAAiC,EAAE,iBAAiB,CAAC;SAC9G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,oCAeC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isPostalCodeValidator from 'validator/lib/isPostalCode';\nimport ValidatorJS from 'validator';\n\nexport const IS_POSTAL_CODE = 'isPostalCode';\n\n/**\n * Check if the string is a postal code,\n * (locale is one of [ 'AD', 'AT', 'AU', 'BE', 'BG', 'BR', 'CA', 'CH', 'CZ', 'DE', 'DK', 'DZ', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'ID', 'IE' 'IL', 'IN', 'IR', 'IS', 'IT', 'JP', 'KE', 'LI', 'LT', 'LU', 'LV', 'MT', 'MX', 'NL', 'NO', 'NZ', 'PL', 'PR', 'PT', 'RO', 'RU', 'SA', 'SE', 'SI', 'TN', 'TW', 'UA', 'US', 'ZA', 'ZM' ] OR 'any'. If 'any' is used, function will check if any of the locals match. Locale list is validator.isPostalCodeLocales.).\n * If given value is not a string, then it returns false.\n */\nexport function isPostalCode(value: unknown, locale: 'any' | ValidatorJS.PostalCodeLocale): boolean {\n return typeof value === 'string' && isPostalCodeValidator(value, locale);\n}\n\n/**\n * Check if the string is a postal code,\n * (locale is one of [ 'AD', 'AT', 'AU', 'BE', 'BG', 'BR', 'CA', 'CH', 'CZ', 'DE', 'DK', 'DZ', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'ID', 'IE' 'IL', 'IN', 'IR', 'IS', 'IT', 'JP', 'KE', 'LI', 'LT', 'LU', 'LV', 'MT', 'MX', 'NL', 'NO', 'NZ', 'PL', 'PR', 'PT', 'RO', 'RU', 'SA', 'SE', 'SI', 'TN', 'TW', 'UA', 'US', 'ZA', 'ZM' ] OR 'any'. If 'any' is used, function will check if any of the locals match. Locale list is validator.isPostalCodeLocales.).\n * If given value is not a string, then it returns false.\n */\nexport function IsPostalCode(\n locale?: 'any' | ValidatorJS.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 + '$property must be a postal code', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsRFC3339.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsRFC3339.js new file mode 100644 index 00000000..617597b6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsRFC3339.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsRFC3339 = exports.isRFC3339 = exports.IS_RFC_3339 = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isRFC3339_1 = __importDefault(require("validator/lib/isRFC3339")); +exports.IS_RFC_3339 = 'isRFC3339'; +/** + * Check if the string is a valid RFC 3339 date. + * If given value is not a string, then it returns false. + */ +function isRFC3339(value) { + return typeof value === 'string' && (0, isRFC3339_1.default)(value); +} +exports.isRFC3339 = isRFC3339; +/** + * Check if the string is a valid RFC 3339 date. + * If given value is not a string, then it returns false. + */ +function IsRFC3339(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_RFC_3339, + validator: { + validate: (value, args) => isRFC3339(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be RFC 3339 date', validationOptions), + }, + }, validationOptions); +} +exports.IsRFC3339 = IsRFC3339; +//# sourceMappingURL=IsRFC3339.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsRFC3339.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsRFC3339.js.map new file mode 100644 index 00000000..bead52bc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsRFC3339.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsRFC3339.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsRFC3339.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,wEAAyD;AAE5C,QAAA,WAAW,GAAG,WAAW,CAAC;AAEvC;;;GAGG;AACH,SAAgB,SAAS,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,mBAAkB,EAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAFD,8BAEC;AAED;;;GAGG;AACH,SAAgB,SAAS,CAAC,iBAAqC;IAC7D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,mBAAW;QACjB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;YACpD,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,iCAAiC,EAAE,iBAAiB,CAAC;SAC9G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAXD,8BAWC","sourcesContent":["import { 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 + '$property must be RFC 3339 date', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsRgbColor.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsRgbColor.js new file mode 100644 index 00000000..2b0844cd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsRgbColor.js @@ -0,0 +1,35 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsRgbColor = exports.isRgbColor = exports.IS_RGB_COLOR = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isRgbColor_1 = __importDefault(require("validator/lib/isRgbColor")); +exports.IS_RGB_COLOR = 'isRgbColor'; +/** + * Check if the string is a rgb or rgba color. + * `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. + * If given value is not a string, then it returns false. + */ +function isRgbColor(value, includePercentValues) { + return typeof value === 'string' && (0, isRgbColor_1.default)(value, includePercentValues); +} +exports.isRgbColor = isRgbColor; +/** + * Check if the string is a rgb or rgba color. + * `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. + * If given value is not a string, then it returns false. + */ +function IsRgbColor(includePercentValues, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_RGB_COLOR, + constraints: [includePercentValues], + validator: { + validate: (value, args) => isRgbColor(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be RGB color', validationOptions), + }, + }, validationOptions); +} +exports.IsRgbColor = IsRgbColor; +//# sourceMappingURL=IsRgbColor.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsRgbColor.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsRgbColor.js.map new file mode 100644 index 00000000..d0c6dccf --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsRgbColor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsRgbColor.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsRgbColor.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,0EAA2D;AAE9C,QAAA,YAAY,GAAG,YAAY,CAAC;AAEzC;;;;GAIG;AACH,SAAgB,UAAU,CAAC,KAAc,EAAE,oBAA8B;IACvE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,oBAAmB,EAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;AACvF,CAAC;AAFD,gCAEC;AAED;;;;GAIG;AACH,SAAgB,UAAU,CAAC,oBAA8B,EAAE,iBAAqC;IAC9F,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,oBAAY;QAClB,WAAW,EAAE,CAAC,oBAAoB,CAAC;QACnC,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC1E,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,6BAA6B,EAAE,iBAAiB,CAAC;SAC1G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAZD,gCAYC","sourcesContent":["import { 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 + '$property must be RGB color', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsSemVer.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsSemVer.js new file mode 100644 index 00000000..3502af75 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsSemVer.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsSemVer = exports.isSemVer = exports.IS_SEM_VER = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isSemVer_1 = __importDefault(require("validator/lib/isSemVer")); +exports.IS_SEM_VER = 'isSemVer'; +/** + * Check if the string is a Semantic Versioning Specification (SemVer). + * If given value is not a string, then it returns false. + */ +function isSemVer(value) { + return typeof value === 'string' && (0, isSemVer_1.default)(value); +} +exports.isSemVer = isSemVer; +/** + * Check if the string is a Semantic Versioning Specification (SemVer). + * If given value is not a string, then it returns false. + */ +function IsSemVer(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_SEM_VER, + validator: { + validate: (value, args) => isSemVer(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a Semantic Versioning Specification', validationOptions), + }, + }, validationOptions); +} +exports.IsSemVer = IsSemVer; +//# sourceMappingURL=IsSemVer.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsSemVer.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsSemVer.js.map new file mode 100644 index 00000000..808345f0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsSemVer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsSemVer.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsSemVer.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,sEAAuD;AAE1C,QAAA,UAAU,GAAG,UAAU,CAAC;AAErC;;;GAGG;AACH,SAAgB,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,kBAAiB,EAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAFD,4BAEC;AAED;;;GAGG;AACH,SAAgB,QAAQ,CAAC,iBAAqC;IAC5D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,kBAAU;QAChB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;YACnD,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,uDAAuD,EAClF,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,4BAcC","sourcesContent":["import { 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 + '$property must be a Semantic Versioning Specification',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsSurrogatePair.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsSurrogatePair.js new file mode 100644 index 00000000..01f32f6d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsSurrogatePair.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsSurrogatePair = exports.isSurrogatePair = exports.IS_SURROGATE_PAIR = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isSurrogatePair_1 = __importDefault(require("validator/lib/isSurrogatePair")); +exports.IS_SURROGATE_PAIR = 'isSurrogatePair'; +/** + * Checks if the string contains any surrogate pairs chars. + * If given value is not a string, then it returns false. + */ +function isSurrogatePair(value) { + return typeof value === 'string' && (0, isSurrogatePair_1.default)(value); +} +exports.isSurrogatePair = isSurrogatePair; +/** + * Checks if the string contains any surrogate pairs chars. + * If given value is not a string, then it returns false. + */ +function IsSurrogatePair(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_SURROGATE_PAIR, + validator: { + validate: (value, args) => isSurrogatePair(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must contain any surrogate pairs chars', validationOptions), + }, + }, validationOptions); +} +exports.IsSurrogatePair = IsSurrogatePair; +//# sourceMappingURL=IsSurrogatePair.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsSurrogatePair.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsSurrogatePair.js.map new file mode 100644 index 00000000..1ab82f32 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsSurrogatePair.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsSurrogatePair.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsSurrogatePair.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,oFAAqE;AAExD,QAAA,iBAAiB,GAAG,iBAAiB,CAAC;AAEnD;;;GAGG;AACH,SAAgB,eAAe,CAAC,KAAc;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,yBAAwB,EAAC,KAAK,CAAC,CAAC;AACtE,CAAC;AAFD,0CAEC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAAC,iBAAqC;IACnE,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,yBAAiB;QACvB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;YAC1D,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,kDAAkD,EAC7E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,0CAcC","sourcesContent":["import { 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 + '$property must contain any surrogate pairs chars',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsUUID.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsUUID.js new file mode 100644 index 00000000..f6610e9f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsUUID.js @@ -0,0 +1,33 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsUUID = exports.isUUID = exports.IS_UUID = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isUUID_1 = __importDefault(require("validator/lib/isUUID")); +exports.IS_UUID = 'isUuid'; +/** + * Checks if the string is a UUID (version 3, 4 or 5). + * If given value is not a string, then it returns false. + */ +function isUUID(value, version) { + return typeof value === 'string' && (0, isUUID_1.default)(value, version); +} +exports.isUUID = isUUID; +/** + * Checks if the string is a UUID (version 3, 4 or 5). + * If given value is not a string, then it returns false. + */ +function IsUUID(version, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_UUID, + constraints: [version], + validator: { + validate: (value, args) => isUUID(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a UUID', validationOptions), + }, + }, validationOptions); +} +exports.IsUUID = IsUUID; +//# sourceMappingURL=IsUUID.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsUUID.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsUUID.js.map new file mode 100644 index 00000000..89e8e068 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsUUID.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsUUID.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsUUID.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,kEAAmD;AAItC,QAAA,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;GAGG;AACH,SAAgB,MAAM,CAAC,KAAc,EAAE,OAAqB;IAC1D,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,gBAAe,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAFD,wBAEC;AAED;;;GAGG;AACH,SAAgB,MAAM,CAAC,OAAqB,EAAE,iBAAqC;IACjF,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,eAAO;QACb,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtE,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,0BAA0B,EAAE,iBAAiB,CAAC;SACvG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAZD,wBAYC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isUuidValidator from 'validator/lib/isUUID';\n\nexport type UUIDVersion = '3' | '4' | '5' | 'all' | 3 | 4 | 5;\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?: UUIDVersion): boolean {\n return 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(version?: UUIDVersion, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_UUID,\n constraints: [version],\n validator: {\n validate: (value, args): boolean => isUUID(value, args.constraints[0]),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a UUID', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsUppercase.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsUppercase.js new file mode 100644 index 00000000..7b84039c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsUppercase.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsUppercase = exports.isUppercase = exports.IS_UPPERCASE = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isUppercase_1 = __importDefault(require("validator/lib/isUppercase")); +exports.IS_UPPERCASE = 'isUppercase'; +/** + * Checks if the string is uppercase. + * If given value is not a string, then it returns false. + */ +function isUppercase(value) { + return typeof value === 'string' && (0, isUppercase_1.default)(value); +} +exports.isUppercase = isUppercase; +/** + * Checks if the string is uppercase. + * If given value is not a string, then it returns false. + */ +function IsUppercase(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_UPPERCASE, + validator: { + validate: (value, args) => isUppercase(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be uppercase', validationOptions), + }, + }, validationOptions); +} +exports.IsUppercase = IsUppercase; +//# sourceMappingURL=IsUppercase.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsUppercase.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsUppercase.js.map new file mode 100644 index 00000000..1e502e85 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsUppercase.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsUppercase.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsUppercase.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,4EAA6D;AAEhD,QAAA,YAAY,GAAG,aAAa,CAAC;AAE1C;;;GAGG;AACH,SAAgB,WAAW,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,qBAAoB,EAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAFD,kCAEC;AAED;;;GAGG;AACH,SAAgB,WAAW,CAAC,iBAAqC;IAC/D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,oBAAY;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;YACtD,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,6BAA6B,EAAE,iBAAiB,CAAC;SAC1G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAXD,kCAWC","sourcesContent":["import { 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 + '$property must be uppercase', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsUrl.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsUrl.js new file mode 100644 index 00000000..4ae6f0a1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsUrl.js @@ -0,0 +1,33 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsUrl = exports.isURL = exports.IS_URL = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isURL_1 = __importDefault(require("validator/lib/isURL")); +exports.IS_URL = 'isUrl'; +/** + * Checks if the string is an url. + * If given value is not a string, then it returns false. + */ +function isURL(value, options) { + return typeof value === 'string' && (0, isURL_1.default)(value, options); +} +exports.isURL = isURL; +/** + * Checks if the string is an url. + * If given value is not a string, then it returns false. + */ +function IsUrl(options, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_URL, + constraints: [options], + validator: { + validate: (value, args) => isURL(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be an URL address', validationOptions), + }, + }, validationOptions); +} +exports.IsUrl = IsUrl; +//# sourceMappingURL=IsUrl.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsUrl.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsUrl.js.map new file mode 100644 index 00000000..72cb9ea7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsUrl.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsUrl.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsUrl.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,gEAAiD;AAGpC,QAAA,MAAM,GAAG,OAAO,CAAC;AAE9B;;;GAGG;AACH,SAAgB,KAAK,CAAC,KAAa,EAAE,OAAkC;IACrE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,eAAc,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACrE,CAAC;AAFD,sBAEC;AAED;;;GAGG;AACH,SAAgB,KAAK,CAAC,OAAkC,EAAE,iBAAqC;IAC7F,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,cAAM;QACZ,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACrE,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,kCAAkC,EAAE,iBAAiB,CAAC;SAC/G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAZD,sBAYC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isUrlValidator from 'validator/lib/isURL';\nimport ValidatorJS from 'validator';\n\nexport const IS_URL = 'isUrl';\n\n/**\n * Checks if the string is an url.\n * If given value is not a string, then it returns false.\n */\nexport function isURL(value: string, options?: ValidatorJS.IsURLOptions): boolean {\n return typeof value === 'string' && isUrlValidator(value, options);\n}\n\n/**\n * Checks if the string is an url.\n * If given value is not a string, then it returns false.\n */\nexport function IsUrl(options?: ValidatorJS.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 + '$property must be an URL address', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsVariableWidth.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsVariableWidth.js new file mode 100644 index 00000000..660a131c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsVariableWidth.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsVariableWidth = exports.isVariableWidth = exports.IS_VARIABLE_WIDTH = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isVariableWidth_1 = __importDefault(require("validator/lib/isVariableWidth")); +exports.IS_VARIABLE_WIDTH = 'isVariableWidth'; +/** + * Checks if the string contains variable-width chars. + * If given value is not a string, then it returns false. + */ +function isVariableWidth(value) { + return typeof value === 'string' && (0, isVariableWidth_1.default)(value); +} +exports.isVariableWidth = isVariableWidth; +/** + * Checks if the string contains variable-width chars. + * If given value is not a string, then it returns false. + */ +function IsVariableWidth(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_VARIABLE_WIDTH, + validator: { + validate: (value, args) => isVariableWidth(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must contain a full-width and half-width characters', validationOptions), + }, + }, validationOptions); +} +exports.IsVariableWidth = IsVariableWidth; +//# sourceMappingURL=IsVariableWidth.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsVariableWidth.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsVariableWidth.js.map new file mode 100644 index 00000000..0e7faa67 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/IsVariableWidth.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsVariableWidth.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsVariableWidth.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,oFAAqE;AAExD,QAAA,iBAAiB,GAAG,iBAAiB,CAAC;AAEnD;;;GAGG;AACH,SAAgB,eAAe,CAAC,KAAc;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,yBAAwB,EAAC,KAAK,CAAC,CAAC;AACtE,CAAC;AAFD,0CAEC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAAC,iBAAqC;IACnE,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,yBAAiB;QACvB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;YAC1D,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,+DAA+D,EAC1F,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,0CAcC","sourcesContent":["import { 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 + '$property must contain a full-width and half-width characters',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/Length.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/Length.js new file mode 100644 index 00000000..6893e0d4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/Length.js @@ -0,0 +1,44 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Length = exports.length = exports.IS_LENGTH = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isLength_1 = __importDefault(require("validator/lib/isLength")); +exports.IS_LENGTH = 'isLength'; +/** + * Checks if the string's length falls in a range. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ +function length(value, min, max) { + return typeof value === 'string' && (0, isLength_1.default)(value, { min, max }); +} +exports.length = length; +/** + * Checks if the string's length falls in a range. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ +function Length(min, max, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_LENGTH, + constraints: [min, max], + validator: { + validate: (value, args) => length(value, args.constraints[0], args.constraints[1]), + defaultMessage: (0, ValidateBy_1.buildMessage)((eachPrefix, args) => { + const isMinLength = args.constraints[0] !== null && args.constraints[0] !== undefined; + const isMaxLength = args.constraints[1] !== null && args.constraints[1] !== undefined; + if (isMinLength && (!args.value || args.value.length < args.constraints[0])) { + return eachPrefix + '$property must be longer than or equal to $constraint1 characters'; + } + else if (isMaxLength && args.value.length > args.constraints[1]) { + return eachPrefix + '$property must be shorter than or equal to $constraint2 characters'; + } + return (eachPrefix + + '$property must be longer than or equal to $constraint1 and shorter than or equal to $constraint2 characters'); + }, validationOptions), + }, + }, validationOptions); +} +exports.Length = Length; +//# sourceMappingURL=Length.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/Length.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/Length.js.map new file mode 100644 index 00000000..b57a2c26 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/Length.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Length.js","sourceRoot":"","sources":["../../../../src/decorator/string/Length.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,sEAAuD;AAE1C,QAAA,SAAS,GAAG,UAAU,CAAC;AAEpC;;;GAGG;AACH,SAAgB,MAAM,CAAC,KAAc,EAAE,GAAW,EAAE,GAAY;IAC9D,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,kBAAiB,EAAC,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7E,CAAC;AAFD,wBAEC;AAED;;;GAGG;AACH,SAAgB,MAAM,CAAC,GAAW,EAAE,GAAY,EAAE,iBAAqC;IACrF,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,iBAAS;QACf,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;QACvB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC3F,cAAc,EAAE,IAAA,yBAAY,EAAC,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE;gBAChD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;gBACtF,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;gBACtF,IAAI,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;oBAC3E,OAAO,UAAU,GAAG,mEAAmE,CAAC;iBACzF;qBAAM,IAAI,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;oBACjE,OAAO,UAAU,GAAG,oEAAoE,CAAC;iBAC1F;gBACD,OAAO,CACL,UAAU;oBACV,6GAA6G,CAC9G,CAAC;YACJ,CAAC,EAAE,iBAAiB,CAAC;SACtB;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAxBD,wBAwBC","sourcesContent":["import { 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 + '$property must be longer than or equal to $constraint1 characters';\n } else if (isMaxLength && args.value.length > args.constraints[1]) {\n return eachPrefix + '$property must be shorter than or equal to $constraint2 characters';\n }\n return (\n eachPrefix +\n '$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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/Matches.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/Matches.js new file mode 100644 index 00000000..09329939 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/Matches.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Matches = exports.matches = exports.MATCHES = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const matches_1 = __importDefault(require("validator/lib/matches")); +exports.MATCHES = 'matches'; +function matches(value, pattern, modifiers) { + return typeof value === 'string' && (0, matches_1.default)(value, pattern, modifiers); +} +exports.matches = matches; +function Matches(pattern, modifiersOrAnnotationOptions, validationOptions) { + let modifiers; + if (modifiersOrAnnotationOptions && modifiersOrAnnotationOptions instanceof Object && !validationOptions) { + validationOptions = modifiersOrAnnotationOptions; + } + else { + modifiers = modifiersOrAnnotationOptions; + } + return (0, ValidateBy_1.ValidateBy)({ + name: exports.MATCHES, + constraints: [pattern, modifiers], + validator: { + validate: (value, args) => matches(value, args.constraints[0], args.constraints[1]), + defaultMessage: (0, ValidateBy_1.buildMessage)((eachPrefix, args) => eachPrefix + '$property must match $constraint1 regular expression', validationOptions), + }, + }, validationOptions); +} +exports.Matches = Matches; +//# sourceMappingURL=Matches.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/Matches.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/Matches.js.map new file mode 100644 index 00000000..be44e074 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/Matches.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Matches.js","sourceRoot":"","sources":["../../../../src/decorator/string/Matches.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,oEAAqD;AAExC,QAAA,OAAO,GAAG,SAAS,CAAC;AAQjC,SAAgB,OAAO,CAAC,KAAa,EAAE,OAAwB,EAAE,SAAkB;IACjF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,iBAAgB,EAAC,KAAK,EAAE,OAAyB,EAAE,SAAS,CAAC,CAAC;AACpG,CAAC;AAFD,0BAEC;AAQD,SAAgB,OAAO,CACrB,OAAwB,EACxB,4BAAyD,EACzD,iBAAqC;IAErC,IAAI,SAAiB,CAAC;IACtB,IAAI,4BAA4B,IAAI,4BAA4B,YAAY,MAAM,IAAI,CAAC,iBAAiB,EAAE;QACxG,iBAAiB,GAAG,4BAA4B,CAAC;KAClD;SAAM;QACL,SAAS,GAAG,4BAAsC,CAAC;KACpD;IAED,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,eAAO;QACb,WAAW,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;QACjC,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC5F,cAAc,EAAE,IAAA,yBAAY,EAC1B,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,GAAG,sDAAsD,EACzF,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AA1BD,0BA0BC","sourcesContent":["import { 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 + '$property must match $constraint1 regular expression',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/MaxLength.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/MaxLength.js new file mode 100644 index 00000000..55280a49 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/MaxLength.js @@ -0,0 +1,33 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MaxLength = exports.maxLength = exports.MAX_LENGTH = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isLength_1 = __importDefault(require("validator/lib/isLength")); +exports.MAX_LENGTH = 'maxLength'; +/** + * Checks if the string's length is not more than given number. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ +function maxLength(value, max) { + return typeof value === 'string' && (0, isLength_1.default)(value, { min: 0, max }); +} +exports.maxLength = maxLength; +/** + * Checks if the string's length is not more than given number. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ +function MaxLength(max, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.MAX_LENGTH, + constraints: [max], + validator: { + validate: (value, args) => maxLength(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be shorter than or equal to $constraint1 characters', validationOptions), + }, + }, validationOptions); +} +exports.MaxLength = MaxLength; +//# sourceMappingURL=MaxLength.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/MaxLength.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/MaxLength.js.map new file mode 100644 index 00000000..9bf28600 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/MaxLength.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MaxLength.js","sourceRoot":"","sources":["../../../../src/decorator/string/MaxLength.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,sEAAuD;AAE1C,QAAA,UAAU,GAAG,WAAW,CAAC;AAEtC;;;GAGG;AACH,SAAgB,SAAS,CAAC,KAAc,EAAE,GAAW;IACnD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,kBAAiB,EAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAChF,CAAC;AAFD,8BAEC;AAED;;;GAGG;AACH,SAAgB,SAAS,CAAC,GAAW,EAAE,iBAAqC;IAC1E,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,kBAAU;QAChB,WAAW,EAAE,CAAC,GAAG,CAAC;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACzE,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,oEAAoE,EAC/F,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,8BAeC","sourcesContent":["import { 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 + '$property must be shorter than or equal to $constraint1 characters',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/MinLength.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/MinLength.js new file mode 100644 index 00000000..3f99f8a4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/MinLength.js @@ -0,0 +1,33 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MinLength = exports.minLength = exports.MIN_LENGTH = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const isLength_1 = __importDefault(require("validator/lib/isLength")); +exports.MIN_LENGTH = 'minLength'; +/** + * Checks if the string's length is not less than given number. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ +function minLength(value, min) { + return typeof value === 'string' && (0, isLength_1.default)(value, { min }); +} +exports.minLength = minLength; +/** + * Checks if the string's length is not less than given number. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ +function MinLength(min, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.MIN_LENGTH, + constraints: [min], + validator: { + validate: (value, args) => minLength(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be longer than or equal to $constraint1 characters', validationOptions), + }, + }, validationOptions); +} +exports.MinLength = MinLength; +//# sourceMappingURL=MinLength.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/MinLength.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/MinLength.js.map new file mode 100644 index 00000000..91d873e0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/MinLength.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MinLength.js","sourceRoot":"","sources":["../../../../src/decorator/string/MinLength.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,sEAAuD;AAE1C,QAAA,UAAU,GAAG,WAAW,CAAC;AAEtC;;;GAGG;AACH,SAAgB,SAAS,CAAC,KAAc,EAAE,GAAW;IACnD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,kBAAiB,EAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;AACxE,CAAC;AAFD,8BAEC;AAED;;;GAGG;AACH,SAAgB,SAAS,CAAC,GAAW,EAAE,iBAAqC;IAC1E,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,kBAAU;QAChB,WAAW,EAAE,CAAC,GAAG,CAAC;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACzE,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,mEAAmE,EAC9F,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,8BAeC","sourcesContent":["import { 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 + '$property must be longer than or equal to $constraint1 characters',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/NotContains.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/NotContains.js new file mode 100644 index 00000000..5d50e8cc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/NotContains.js @@ -0,0 +1,33 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.NotContains = exports.notContains = exports.NOT_CONTAINS = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +const contains_1 = __importDefault(require("validator/lib/contains")); +exports.NOT_CONTAINS = 'notContains'; +/** + * Checks if the string does not contain the seed. + * If given value is not a string, then it returns false. + */ +function notContains(value, seed) { + return typeof value === 'string' && !(0, contains_1.default)(value, seed); +} +exports.notContains = notContains; +/** + * Checks if the string does not contain the seed. + * If given value is not a string, then it returns false. + */ +function NotContains(seed, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.NOT_CONTAINS, + constraints: [seed], + validator: { + validate: (value, args) => notContains(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property should not contain a $constraint1 string', validationOptions), + }, + }, validationOptions); +} +exports.NotContains = NotContains; +//# sourceMappingURL=NotContains.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/NotContains.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/NotContains.js.map new file mode 100644 index 00000000..e1691869 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/string/NotContains.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NotContains.js","sourceRoot":"","sources":["../../../../src/decorator/string/NotContains.ts"],"names":[],"mappings":";;;;;;AACA,qDAAgE;AAChE,sEAAuD;AAE1C,QAAA,YAAY,GAAG,aAAa,CAAC;AAE1C;;;GAGG;AACH,SAAgB,WAAW,CAAC,KAAc,EAAE,IAAY;IACtD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,IAAA,kBAAiB,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACtE,CAAC;AAFD,kCAEC;AAED;;;GAGG;AACH,SAAgB,WAAW,CAAC,IAAY,EAAE,iBAAqC;IAC7E,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,oBAAY;QAClB,WAAW,EAAE,CAAC,IAAI,CAAC;QACnB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC3E,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,oDAAoD,EAC/E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,kCAeC","sourcesContent":["import { 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 + '$property should not contain a $constraint1 string',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsArray.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsArray.js new file mode 100644 index 00000000..b69537c5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsArray.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsArray = exports.isArray = exports.IS_ARRAY = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.IS_ARRAY = 'isArray'; +/** + * Checks if a given value is an array + */ +function isArray(value) { + return Array.isArray(value); +} +exports.isArray = isArray; +/** + * Checks if a given value is an array + */ +function IsArray(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_ARRAY, + validator: { + validate: (value, args) => isArray(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be an array', validationOptions), + }, + }, validationOptions); +} +exports.IsArray = IsArray; +//# sourceMappingURL=IsArray.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsArray.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsArray.js.map new file mode 100644 index 00000000..16316226 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsArray.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsArray.js","sourceRoot":"","sources":["../../../../src/decorator/typechecker/IsArray.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,QAAQ,GAAG,SAAS,CAAC;AAElC;;GAEG;AACH,SAAgB,OAAO,CAAC,KAAc;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAFD,0BAEC;AAED;;GAEG;AACH,SAAgB,OAAO,CAAC,iBAAqC;IAC3D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,gBAAQ;QACd,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;YAClD,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,4BAA4B,EAAE,iBAAiB,CAAC;SACzG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAXD,0BAWC","sourcesContent":["import { 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(value: unknown): boolean {\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 + '$property must be an array', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsBoolean.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsBoolean.js new file mode 100644 index 00000000..b9909f65 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsBoolean.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsBoolean = exports.isBoolean = exports.IS_BOOLEAN = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.IS_BOOLEAN = 'isBoolean'; +/** + * Checks if a given value is a boolean. + */ +function isBoolean(value) { + return value instanceof Boolean || typeof value === 'boolean'; +} +exports.isBoolean = isBoolean; +/** + * Checks if a value is a boolean. + */ +function IsBoolean(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_BOOLEAN, + validator: { + validate: (value, args) => isBoolean(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a boolean value', validationOptions), + }, + }, validationOptions); +} +exports.IsBoolean = IsBoolean; +//# sourceMappingURL=IsBoolean.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsBoolean.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsBoolean.js.map new file mode 100644 index 00000000..eb8ac3ac --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsBoolean.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsBoolean.js","sourceRoot":"","sources":["../../../../src/decorator/typechecker/IsBoolean.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,UAAU,GAAG,WAAW,CAAC;AAEtC;;GAEG;AACH,SAAgB,SAAS,CAAC,KAAc;IACtC,OAAO,KAAK,YAAY,OAAO,IAAI,OAAO,KAAK,KAAK,SAAS,CAAC;AAChE,CAAC;AAFD,8BAEC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,iBAAqC;IAC7D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,kBAAU;QAChB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;YACpD,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,mCAAmC,EAAE,iBAAiB,CAAC;SAChH;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAXD,8BAWC","sourcesContent":["import { 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): 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 + '$property must be a boolean value', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsDate.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsDate.js new file mode 100644 index 00000000..2c001f22 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsDate.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsDate = exports.isDate = exports.IS_DATE = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.IS_DATE = 'isDate'; +/** + * Checks if a given value is a date. + */ +function isDate(value) { + return value instanceof Date && !isNaN(value.getTime()); +} +exports.isDate = isDate; +/** + * Checks if a value is a date. + */ +function IsDate(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_DATE, + validator: { + validate: (value, args) => isDate(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a Date instance', validationOptions), + }, + }, validationOptions); +} +exports.IsDate = IsDate; +//# sourceMappingURL=IsDate.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsDate.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsDate.js.map new file mode 100644 index 00000000..09b33b78 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsDate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsDate.js","sourceRoot":"","sources":["../../../../src/decorator/typechecker/IsDate.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,OAAO,GAAG,QAAQ,CAAC;AAEhC;;GAEG;AACH,SAAgB,MAAM,CAAC,KAAc;IACnC,OAAO,KAAK,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAC1D,CAAC;AAFD,wBAEC;AAED;;GAEG;AACH,SAAgB,MAAM,CAAC,iBAAqC;IAC1D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,eAAO;QACb,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;YACjD,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,mCAAmC,EAAE,iBAAiB,CAAC;SAChH;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAXD,wBAWC","sourcesContent":["import { 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): boolean {\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 + '$property must be a Date instance', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsEnum.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsEnum.js new file mode 100644 index 00000000..667d9958 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsEnum.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsEnum = exports.isEnum = exports.IS_ENUM = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.IS_ENUM = 'isEnum'; +/** + * Checks if a given value is an enum + */ +function isEnum(value, entity) { + const enumValues = Object.keys(entity).map(k => entity[k]); + return enumValues.indexOf(value) >= 0; +} +exports.isEnum = isEnum; +/** + * Checks if a given value is an enum + */ +function IsEnum(entity, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_ENUM, + constraints: [entity], + validator: { + validate: (value, args) => isEnum(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a valid enum value', validationOptions), + }, + }, validationOptions); +} +exports.IsEnum = IsEnum; +//# sourceMappingURL=IsEnum.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsEnum.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsEnum.js.map new file mode 100644 index 00000000..2eedc03b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsEnum.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsEnum.js","sourceRoot":"","sources":["../../../../src/decorator/typechecker/IsEnum.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,OAAO,GAAG,QAAQ,CAAC;AAEhC;;GAEG;AACH,SAAgB,MAAM,CAAC,KAAc,EAAE,MAAW;IAChD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAHD,wBAGC;AAED;;GAEG;AACH,SAAgB,MAAM,CAAC,MAAc,EAAE,iBAAqC;IAC1E,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,eAAO;QACb,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtE,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,sCAAsC,EACjE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,wBAeC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const IS_ENUM = 'isEnum';\n\n/**\n * Checks if a given value is an enum\n */\nexport function isEnum(value: unknown, entity: any): boolean {\n const enumValues = Object.keys(entity).map(k => entity[k]);\n return enumValues.indexOf(value) >= 0;\n}\n\n/**\n * Checks if a given value is an enum\n */\nexport function IsEnum(entity: object, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_ENUM,\n constraints: [entity],\n validator: {\n validate: (value, args): boolean => isEnum(value, args.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + '$property must be a valid enum value',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsInt.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsInt.js new file mode 100644 index 00000000..ef2f0f40 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsInt.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsInt = exports.isInt = exports.IS_INT = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.IS_INT = 'isInt'; +/** + * Checks if value is an integer. + */ +function isInt(val) { + return typeof val === 'number' && Number.isInteger(val); +} +exports.isInt = isInt; +/** + * Checks if value is an integer. + */ +function IsInt(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_INT, + validator: { + validate: (value, args) => isInt(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be an integer number', validationOptions), + }, + }, validationOptions); +} +exports.IsInt = IsInt; +//# sourceMappingURL=IsInt.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsInt.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsInt.js.map new file mode 100644 index 00000000..9448dfe7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsInt.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsInt.js","sourceRoot":"","sources":["../../../../src/decorator/typechecker/IsInt.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,MAAM,GAAG,OAAO,CAAC;AAE9B;;GAEG;AACH,SAAgB,KAAK,CAAC,GAAY;IAChC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC;AAFD,sBAEC;AAED;;GAEG;AACH,SAAgB,KAAK,CAAC,iBAAqC;IACzD,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,cAAM;QACZ,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;YAChD,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,qCAAqC,EAChE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAdD,sBAcC","sourcesContent":["import { 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): boolean {\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 + '$property must be an integer number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsNumber.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsNumber.js new file mode 100644 index 00000000..9e9a3d23 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsNumber.js @@ -0,0 +1,45 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsNumber = exports.isNumber = exports.IS_NUMBER = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.IS_NUMBER = 'isNumber'; +/** + * Checks if a given value is a number. + */ +function isNumber(value, options = {}) { + if (typeof value !== 'number') { + return false; + } + if (value === Infinity || value === -Infinity) { + return options.allowInfinity; + } + if (Number.isNaN(value)) { + return options.allowNaN; + } + if (options.maxDecimalPlaces !== undefined) { + let decimalPlaces = 0; + if (value % 1 !== 0) { + decimalPlaces = value.toString().split('.')[1].length; + } + if (decimalPlaces > options.maxDecimalPlaces) { + return false; + } + } + return Number.isFinite(value); +} +exports.isNumber = isNumber; +/** + * Checks if a value is a number. + */ +function IsNumber(options = {}, validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_NUMBER, + constraints: [options], + validator: { + validate: (value, args) => isNumber(value, args.constraints[0]), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a number conforming to the specified constraints', validationOptions), + }, + }, validationOptions); +} +exports.IsNumber = IsNumber; +//# sourceMappingURL=IsNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsNumber.js.map new file mode 100644 index 00000000..b26ce0a5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsNumber.js","sourceRoot":"","sources":["../../../../src/decorator/typechecker/IsNumber.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,SAAS,GAAG,UAAU,CAAC;AAWpC;;GAEG;AACH,SAAgB,QAAQ,CAAC,KAAc,EAAE,UAA2B,EAAE;IACpE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAO,KAAK,CAAC;KACd;IAED,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,CAAC,QAAQ,EAAE;QAC7C,OAAO,OAAO,CAAC,aAAa,CAAC;KAC9B;IAED,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACvB,OAAO,OAAO,CAAC,QAAQ,CAAC;KACzB;IAED,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,EAAE;QAC1C,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE;YACnB,aAAa,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;SACvD;QACD,IAAI,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE;YAC5C,OAAO,KAAK,CAAC;SACd;KACF;IAED,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAxBD,4BAwBC;AAED;;GAEG;AACH,SAAgB,QAAQ,CAAC,UAA2B,EAAE,EAAE,iBAAqC;IAC3F,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,iBAAS;QACf,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACxE,cAAc,EAAE,IAAA,yBAAY,EAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,oEAAoE,EAC/F,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAfD,4BAeC","sourcesContent":["import { 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 = {}): boolean {\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('.')[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 + '$property must be a number conforming to the specified constraints',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsObject.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsObject.js new file mode 100644 index 00000000..eafbbc99 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsObject.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsObject = exports.isObject = exports.IS_OBJECT = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.IS_OBJECT = 'isObject'; +/** + * Checks if the value is valid Object. + * Returns false if the value is not an object. + */ +function isObject(value) { + return value != null && (typeof value === 'object' || typeof value === 'function') && !Array.isArray(value); +} +exports.isObject = isObject; +/** + * Checks if the value is valid Object. + * Returns false if the value is not an object. + */ +function IsObject(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_OBJECT, + validator: { + validate: (value, args) => isObject(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be an object', validationOptions), + }, + }, validationOptions); +} +exports.IsObject = IsObject; +//# sourceMappingURL=IsObject.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsObject.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsObject.js.map new file mode 100644 index 00000000..80fdf79b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsObject.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsObject.js","sourceRoot":"","sources":["../../../../src/decorator/typechecker/IsObject.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,SAAS,GAAG,UAAU,CAAC;AAEpC;;;GAGG;AACH,SAAgB,QAAQ,CAAC,KAAc;IACrC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9G,CAAC;AAFD,4BAEC;AAED;;;GAGG;AACH,SAAgB,QAAQ,CAAC,iBAAqC;IAC5D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,iBAAS;QACf,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;YACnD,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,6BAA6B,EAAE,iBAAiB,CAAC;SAC1G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAXD,4BAWC","sourcesContent":["import { 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(value: unknown): value is object {\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 + '$property must be an object', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsString.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsString.js new file mode 100644 index 00000000..fc735a0e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsString.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IsString = exports.isString = exports.IS_STRING = void 0; +const ValidateBy_1 = require("../common/ValidateBy"); +exports.IS_STRING = 'isString'; +/** + * Checks if a given value is a real string. + */ +function isString(value) { + return value instanceof String || typeof value === 'string'; +} +exports.isString = isString; +/** + * Checks if a given value is a real string. + */ +function IsString(validationOptions) { + return (0, ValidateBy_1.ValidateBy)({ + name: exports.IS_STRING, + validator: { + validate: (value, args) => isString(value), + defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + '$property must be a string', validationOptions), + }, + }, validationOptions); +} +exports.IsString = IsString; +//# sourceMappingURL=IsString.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsString.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsString.js.map new file mode 100644 index 00000000..c46da8c7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/decorator/typechecker/IsString.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsString.js","sourceRoot":"","sources":["../../../../src/decorator/typechecker/IsString.ts"],"names":[],"mappings":";;;AACA,qDAAgE;AAEnD,QAAA,SAAS,GAAG,UAAU,CAAC;AAEpC;;GAEG;AACH,SAAgB,QAAQ,CAAC,KAAc;IACrC,OAAO,KAAK,YAAY,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AAC9D,CAAC;AAFD,4BAEC;AAED;;GAEG;AACH,SAAgB,QAAQ,CAAC,iBAAqC;IAC5D,OAAO,IAAA,uBAAU,EACf;QACE,IAAI,EAAE,iBAAS;QACf,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;YACnD,cAAc,EAAE,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,4BAA4B,EAAE,iBAAiB,CAAC;SACzG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAXD,4BAWC","sourcesContent":["import { 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 + '$property must be a string', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/index.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/index.js new file mode 100644 index 00000000..31227f6d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/index.js @@ -0,0 +1,77 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.registerSchema = exports.validateSync = exports.validateOrReject = exports.validate = void 0; +const MetadataStorage_1 = require("./metadata/MetadataStorage"); +const Validator_1 = require("./validation/Validator"); +const container_1 = require("./container"); +// ------------------------------------------------------------------------- +// Export everything api users needs +// ------------------------------------------------------------------------- +__exportStar(require("./container"), exports); +__exportStar(require("./decorator/decorators"), exports); +__exportStar(require("./decorator/ValidationOptions"), exports); +__exportStar(require("./validation/ValidatorConstraintInterface"), exports); +__exportStar(require("./validation/ValidationError"), exports); +__exportStar(require("./validation/ValidatorOptions"), exports); +__exportStar(require("./validation/ValidationArguments"), exports); +__exportStar(require("./validation/ValidationTypes"), exports); +__exportStar(require("./validation/Validator"), exports); +__exportStar(require("./validation-schema/ValidationSchema"), exports); +__exportStar(require("./register-decorator"), exports); +__exportStar(require("./metadata/MetadataStorage"), exports); +/** + * Validates given object by object's decorators or given validation schema. + */ +function validate(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions) { + if (typeof schemaNameOrObject === 'string') { + return (0, container_1.getFromContainer)(Validator_1.Validator).validate(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions); + } + else { + return (0, container_1.getFromContainer)(Validator_1.Validator).validate(schemaNameOrObject, objectOrValidationOptions); + } +} +exports.validate = validate; +/** + * Validates given object by object's decorators or given validation schema and reject on error. + */ +function validateOrReject(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions) { + if (typeof schemaNameOrObject === 'string') { + return (0, container_1.getFromContainer)(Validator_1.Validator).validateOrReject(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions); + } + else { + return (0, container_1.getFromContainer)(Validator_1.Validator).validateOrReject(schemaNameOrObject, objectOrValidationOptions); + } +} +exports.validateOrReject = validateOrReject; +/** + * Validates given object by object's decorators or given validation schema. + * Note that this method completely ignores async validations. + * If you want to properly perform validation you need to call validate method instead. + */ +function validateSync(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions) { + if (typeof schemaNameOrObject === 'string') { + return (0, container_1.getFromContainer)(Validator_1.Validator).validateSync(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions); + } + else { + return (0, container_1.getFromContainer)(Validator_1.Validator).validateSync(schemaNameOrObject, objectOrValidationOptions); + } +} +exports.validateSync = validateSync; +/** + * Registers a new validation schema. + */ +function registerSchema(schema) { + (0, MetadataStorage_1.getMetadataStorage)().addValidationSchema(schema); +} +exports.registerSchema = registerSchema; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/index.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/index.js.map new file mode 100644 index 00000000..18dd90e5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAGA,gEAAgE;AAChE,sDAAmD;AACnD,2CAA+C;AAE/C,4EAA4E;AAC5E,oCAAoC;AACpC,4EAA4E;AAE5E,8CAA4B;AAC5B,yDAAuC;AACvC,gEAA8C;AAC9C,4EAA0D;AAC1D,+DAA6C;AAC7C,gEAA8C;AAC9C,mEAAiD;AACjD,+DAA6C;AAC7C,yDAAuC;AACvC,uEAAqD;AACrD,uDAAqC;AACrC,6DAA2C;AAoB3C;;GAEG;AACH,SAAgB,QAAQ,CACtB,kBAAmC,EACnC,yBAAqD,EACrD,qBAAwC;IAExC,IAAI,OAAO,kBAAkB,KAAK,QAAQ,EAAE;QAC1C,OAAO,IAAA,4BAAgB,EAAC,qBAAS,CAAC,CAAC,QAAQ,CACzC,kBAAkB,EAClB,yBAAmC,EACnC,qBAAqB,CACtB,CAAC;KACH;SAAM;QACL,OAAO,IAAA,4BAAgB,EAAC,qBAAS,CAAC,CAAC,QAAQ,CAAC,kBAAkB,EAAE,yBAA6C,CAAC,CAAC;KAChH;AACH,CAAC;AAdD,4BAcC;AAgBD;;GAEG;AACH,SAAgB,gBAAgB,CAC9B,kBAAmC,EACnC,yBAAqD,EACrD,qBAAwC;IAExC,IAAI,OAAO,kBAAkB,KAAK,QAAQ,EAAE;QAC1C,OAAO,IAAA,4BAAgB,EAAC,qBAAS,CAAC,CAAC,gBAAgB,CACjD,kBAAkB,EAClB,yBAAmC,EACnC,qBAAqB,CACtB,CAAC;KACH;SAAM;QACL,OAAO,IAAA,4BAAgB,EAAC,qBAAS,CAAC,CAAC,gBAAgB,CACjD,kBAAkB,EAClB,yBAA6C,CAC9C,CAAC;KACH;AACH,CAAC;AAjBD,4CAiBC;AAoBD;;;;GAIG;AACH,SAAgB,YAAY,CAC1B,kBAAmC,EACnC,yBAAqD,EACrD,qBAAwC;IAExC,IAAI,OAAO,kBAAkB,KAAK,QAAQ,EAAE;QAC1C,OAAO,IAAA,4BAAgB,EAAC,qBAAS,CAAC,CAAC,YAAY,CAC7C,kBAAkB,EAClB,yBAAmC,EACnC,qBAAqB,CACtB,CAAC;KACH;SAAM;QACL,OAAO,IAAA,4BAAgB,EAAC,qBAAS,CAAC,CAAC,YAAY,CAAC,kBAAkB,EAAE,yBAA6C,CAAC,CAAC;KACpH;AACH,CAAC;AAdD,oCAcC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,MAAwB;IACrD,IAAA,oCAAkB,GAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACnD,CAAC;AAFD,wCAEC","sourcesContent":["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\n// -------------------------------------------------------------------------\n// Export everything api users needs\n// -------------------------------------------------------------------------\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';\n\n// -------------------------------------------------------------------------\n// Shortcut methods for api users\n// -------------------------------------------------------------------------\n\n/**\n * Validates given object.\n */\nexport function validate(object: object, validatorOptions?: ValidatorOptions): Promise;\n\n/**\n * Validates given object by a given validation schema.\n */\nexport function validate(\n schemaName: string,\n object: object,\n validatorOptions?: ValidatorOptions\n): Promise;\n\n/**\n * Validates given object by object's decorators or given validation schema.\n */\nexport function validate(\n schemaNameOrObject: object | string,\n objectOrValidationOptions?: object | ValidatorOptions,\n maybeValidatorOptions?: ValidatorOptions\n): Promise {\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 * Validates given object and reject on error.\n */\nexport function validateOrReject(object: object, validatorOptions?: ValidatorOptions): Promise;\n\n/**\n * Validates given object by a given validation schema and reject on error.\n */\nexport function validateOrReject(\n schemaName: string,\n object: object,\n validatorOptions?: ValidatorOptions\n): Promise;\n\n/**\n * Validates given object by object's decorators or given validation schema and reject on error.\n */\nexport function validateOrReject(\n schemaNameOrObject: object | string,\n objectOrValidationOptions?: object | ValidatorOptions,\n maybeValidatorOptions?: ValidatorOptions\n): Promise {\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 * Performs sync validation of the given object.\n * Note that this method completely ignores async validations.\n * If you want to properly perform validation you need to call validate method instead.\n */\nexport function validateSync(object: object, validatorOptions?: ValidatorOptions): ValidationError[];\n\n/**\n * Validates given object by a given validation schema.\n * Note that this method completely ignores async validations.\n * If you want to properly perform validation you need to call validate method instead.\n */\nexport function validateSync(\n schemaName: string,\n object: object,\n validatorOptions?: ValidatorOptions\n): ValidationError[];\n\n/**\n * Validates given object by object's decorators or given validation schema.\n * Note that this method completely ignores async validations.\n * If you want to properly perform validation you need to call validate method instead.\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 * Registers a new validation schema.\n */\nexport function registerSchema(schema: ValidationSchema): void {\n getMetadataStorage().addValidationSchema(schema);\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/ConstraintMetadata.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/ConstraintMetadata.js new file mode 100644 index 00000000..75eaf16c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/ConstraintMetadata.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ConstraintMetadata = void 0; +const container_1 = require("../container"); +/** + * This metadata interface contains information for custom validators. + */ +class ConstraintMetadata { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + constructor(target, name, async = false) { + this.target = target; + this.name = name; + this.async = async; + } + // ------------------------------------------------------------------------- + // Accessors + // ------------------------------------------------------------------------- + /** + * Instance of the target custom validation class which performs validation. + */ + get instance() { + return (0, container_1.getFromContainer)(this.target); + } +} +exports.ConstraintMetadata = ConstraintMetadata; +//# sourceMappingURL=ConstraintMetadata.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/ConstraintMetadata.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/ConstraintMetadata.js.map new file mode 100644 index 00000000..fedd243d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/ConstraintMetadata.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ConstraintMetadata.js","sourceRoot":"","sources":["../../../src/metadata/ConstraintMetadata.ts"],"names":[],"mappings":";;;AACA,4CAAgD;AAEhD;;GAEG;AACH,MAAa,kBAAkB;IAoB7B,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,YAAY,MAAgB,EAAE,IAAa,EAAE,QAAiB,KAAK;QACjE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,4EAA4E;IAC5E,YAAY;IACZ,4EAA4E;IAE5E;;OAEG;IACH,IAAI,QAAQ;QACV,OAAO,IAAA,4BAAgB,EAA+B,IAAI,CAAC,MAAM,CAAC,CAAC;IACrE,CAAC;CACF;AAxCD,gDAwCC","sourcesContent":["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(this.target);\n }\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/MetadataStorage.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/MetadataStorage.js new file mode 100644 index 00000000..33ebef82 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/MetadataStorage.js @@ -0,0 +1,137 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getMetadataStorage = exports.MetadataStorage = void 0; +const ValidationSchemaToMetadataTransformer_1 = require("../validation-schema/ValidationSchemaToMetadataTransformer"); +const utils_1 = require("../utils"); +/** + * Storage all metadatas. + */ +class MetadataStorage { + constructor() { + // ------------------------------------------------------------------------- + // Private properties + // ------------------------------------------------------------------------- + this.validationMetadatas = []; + this.constraintMetadatas = []; + } + get hasValidationMetaData() { + return !!this.validationMetadatas.length; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Adds a new validation metadata. + */ + addValidationSchema(schema) { + const validationMetadatas = new ValidationSchemaToMetadataTransformer_1.ValidationSchemaToMetadataTransformer().transform(schema); + validationMetadatas.forEach(validationMetadata => this.addValidationMetadata(validationMetadata)); + } + /** + * Adds a new validation metadata. + */ + addValidationMetadata(metadata) { + this.validationMetadatas.push(metadata); + } + /** + * Adds a new constraint metadata. + */ + addConstraintMetadata(metadata) { + this.constraintMetadatas.push(metadata); + } + /** + * Groups metadata by their property names. + */ + groupByPropertyName(metadata) { + const grouped = {}; + metadata.forEach(metadata => { + if (!grouped[metadata.propertyName]) + grouped[metadata.propertyName] = []; + grouped[metadata.propertyName].push(metadata); + }); + return grouped; + } + /** + * Gets all validation metadatas for the given object with the given groups. + */ + getTargetValidationMetadatas(targetConstructor, targetSchema, always, strictGroups, groups) { + const includeMetadataBecauseOfAlwaysOption = (metadata) => { + // `metadata.always` overrides global default. + if (typeof metadata.always !== 'undefined') + return metadata.always; + // `metadata.groups` overrides global default. + if (metadata.groups && metadata.groups.length) + return false; + // Use global default. + return always; + }; + const excludeMetadataBecauseOfStrictGroupsOption = (metadata) => { + if (strictGroups) { + // Validation is not using groups. + if (!groups || !groups.length) { + // `metadata.groups` has at least one group. + if (metadata.groups && metadata.groups.length) + return true; + } + } + return false; + }; + // get directly related to a target metadatas + const originalMetadatas = this.validationMetadatas.filter(metadata => { + if (metadata.target !== targetConstructor && metadata.target !== targetSchema) + return false; + if (includeMetadataBecauseOfAlwaysOption(metadata)) + return true; + if (excludeMetadataBecauseOfStrictGroupsOption(metadata)) + return false; + if (groups && groups.length > 0) + return metadata.groups && !!metadata.groups.find(group => groups.indexOf(group) !== -1); + return true; + }); + // get metadatas for inherited classes + const inheritedMetadatas = this.validationMetadatas.filter(metadata => { + // if target is a string it's means we validate against a schema, and there is no inheritance support for schemas + if (typeof metadata.target === 'string') + return false; + if (metadata.target === targetConstructor) + return false; + if (metadata.target instanceof Function && !(targetConstructor.prototype instanceof metadata.target)) + return false; + if (includeMetadataBecauseOfAlwaysOption(metadata)) + return true; + if (excludeMetadataBecauseOfStrictGroupsOption(metadata)) + return false; + if (groups && groups.length > 0) + return metadata.groups && !!metadata.groups.find(group => groups.indexOf(group) !== -1); + return true; + }); + // filter out duplicate metadatas, prefer original metadatas instead of inherited metadatas + const uniqueInheritedMetadatas = inheritedMetadatas.filter(inheritedMetadata => { + return !originalMetadatas.find(originalMetadata => { + return (originalMetadata.propertyName === inheritedMetadata.propertyName && + originalMetadata.type === inheritedMetadata.type); + }); + }); + return originalMetadatas.concat(uniqueInheritedMetadatas); + } + /** + * Gets all validator constraints for the given object. + */ + getTargetValidatorConstraints(target) { + return this.constraintMetadatas.filter(metadata => metadata.target === target); + } +} +exports.MetadataStorage = MetadataStorage; +/** + * Gets metadata storage. + * Metadata storage follows the best practices and stores metadata in a global variable. + */ +function getMetadataStorage() { + const global = (0, utils_1.getGlobal)(); + if (!global.classValidatorMetadataStorage) { + global.classValidatorMetadataStorage = new MetadataStorage(); + } + return global.classValidatorMetadataStorage; +} +exports.getMetadataStorage = getMetadataStorage; +//# sourceMappingURL=MetadataStorage.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/MetadataStorage.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/MetadataStorage.js.map new file mode 100644 index 00000000..02028938 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/MetadataStorage.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MetadataStorage.js","sourceRoot":"","sources":["../../../src/metadata/MetadataStorage.ts"],"names":[],"mappings":"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","sourcesContent":["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: ValidationMetadata[] = [];\n private constraintMetadatas: ConstraintMetadata[] = [];\n\n get hasValidationMetaData(): boolean {\n return !!this.validationMetadatas.length;\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 this.validationMetadatas.push(metadata);\n }\n\n /**\n * Adds a new constraint metadata.\n */\n addConstraintMetadata(metadata: ConstraintMetadata): void {\n this.constraintMetadatas.push(metadata);\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 originalMetadatas = this.validationMetadatas.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 inheritedMetadatas = this.validationMetadatas.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.filter(metadata => metadata.target === 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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/ValidationMetadata.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/ValidationMetadata.js new file mode 100644 index 00000000..56db2f70 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/ValidationMetadata.js @@ -0,0 +1,40 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ValidationMetadata = void 0; +/** + * This metadata contains validation rules. + */ +class ValidationMetadata { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + constructor(args) { + /** + * Validation groups used for this validation. + */ + this.groups = []; + /** + * Specifies if validated value is an array and each of its item must be validated. + */ + this.each = false; + /* + * A transient set of data passed through to the validation result for response mapping + */ + this.context = undefined; + this.type = args.type; + this.target = args.target; + this.propertyName = args.propertyName; + this.constraints = args.constraints; + this.constraintCls = args.constraintCls; + this.validationTypeOptions = args.validationTypeOptions; + if (args.validationOptions) { + this.message = args.validationOptions.message; + this.groups = args.validationOptions.groups; + this.always = args.validationOptions.always; + this.each = args.validationOptions.each; + this.context = args.validationOptions.context; + } + } +} +exports.ValidationMetadata = ValidationMetadata; +//# sourceMappingURL=ValidationMetadata.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/ValidationMetadata.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/ValidationMetadata.js.map new file mode 100644 index 00000000..bdeceb35 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/ValidationMetadata.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationMetadata.js","sourceRoot":"","sources":["../../../src/metadata/ValidationMetadata.ts"],"names":[],"mappings":";;;AAGA;;GAEG;AACH,MAAa,kBAAkB;IA4D7B,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,YAAY,IAA4B;QA7BxC;;WAEG;QACH,WAAM,GAAa,EAAE,CAAC;QAOtB;;WAEG;QACH,SAAI,GAAY,KAAK,CAAC;QAEtB;;WAEG;QACH,YAAO,GAAS,SAAS,CAAC;QAYxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;QACxD,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YAC9C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;YAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;YAC5C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;YACxC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;SAC/C;IACH,CAAC;CACF;AA/ED,gDA+EC","sourcesContent":["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 * 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.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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/ValidationMetadataArgs.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/ValidationMetadataArgs.js new file mode 100644 index 00000000..06fd6e1f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/ValidationMetadataArgs.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=ValidationMetadataArgs.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/ValidationMetadataArgs.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/ValidationMetadataArgs.js.map new file mode 100644 index 00000000..3f88114b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/metadata/ValidationMetadataArgs.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationMetadataArgs.js","sourceRoot":"","sources":["../../../src/metadata/ValidationMetadataArgs.ts"],"names":[],"mappings":"","sourcesContent":["import { ValidationOptions } from '../decorator/ValidationOptions';\n\n/**\n * Constructor arguments for ValidationMetadata class.\n */\nexport interface ValidationMetadataArgs {\n /**\n * Validation type.\n */\n type: string;\n\n /**\n * Object that is used to be validated.\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 options.\n */\n validationOptions?: ValidationOptions;\n\n /**\n * Extra options specific to validation type.\n */\n validationTypeOptions?: any;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/register-decorator.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/register-decorator.js new file mode 100644 index 00000000..e6422d90 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/register-decorator.js @@ -0,0 +1,47 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.registerDecorator = void 0; +const ConstraintMetadata_1 = require("./metadata/ConstraintMetadata"); +const ValidationMetadata_1 = require("./metadata/ValidationMetadata"); +const ValidationTypes_1 = require("./validation/ValidationTypes"); +const container_1 = require("./container"); +const MetadataStorage_1 = require("./metadata/MetadataStorage"); +/** + * Registers a custom validation decorator. + */ +function registerDecorator(options) { + let constraintCls; + if (options.validator instanceof Function) { + constraintCls = options.validator; + const constraintClasses = (0, container_1.getFromContainer)(MetadataStorage_1.MetadataStorage).getTargetValidatorConstraints(options.validator); + if (constraintClasses.length > 1) { + throw `More than one implementation of ValidatorConstraintInterface found for validator on: ${options.target.name}:${options.propertyName}`; + } + } + else { + const validator = options.validator; + constraintCls = class CustomConstraint { + validate(value, validationArguments) { + return validator.validate(value, validationArguments); + } + defaultMessage(validationArguments) { + if (validator.defaultMessage) { + return validator.defaultMessage(validationArguments); + } + return ''; + } + }; + (0, MetadataStorage_1.getMetadataStorage)().addConstraintMetadata(new ConstraintMetadata_1.ConstraintMetadata(constraintCls, options.name, options.async)); + } + const validationMetadataArgs = { + type: options.name && ValidationTypes_1.ValidationTypes.isValid(options.name) ? options.name : ValidationTypes_1.ValidationTypes.CUSTOM_VALIDATION, + target: options.target, + propertyName: options.propertyName, + validationOptions: options.options, + constraintCls: constraintCls, + constraints: options.constraints, + }; + (0, MetadataStorage_1.getMetadataStorage)().addValidationMetadata(new ValidationMetadata_1.ValidationMetadata(validationMetadataArgs)); +} +exports.registerDecorator = registerDecorator; +//# sourceMappingURL=register-decorator.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/register-decorator.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/register-decorator.js.map new file mode 100644 index 00000000..66c485d2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/register-decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"register-decorator.js","sourceRoot":"","sources":["../../src/register-decorator.ts"],"names":[],"mappings":";;;AAAA,sEAAmE;AAEnE,sEAAmE;AAEnE,kEAA+D;AAE/D,2CAA+C;AAC/C,gEAAiF;AAwCjF;;GAEG;AACH,SAAgB,iBAAiB,CAAC,OAAmC;IACnE,IAAI,aAAuB,CAAC;IAC5B,IAAI,OAAO,CAAC,SAAS,YAAY,QAAQ,EAAE;QACzC,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC;QAClC,MAAM,iBAAiB,GAAG,IAAA,4BAAgB,EAAC,iCAAe,CAAC,CAAC,6BAA6B,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC7G,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;YAChC,MAAM,wFAAwF,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;SAC7I;KACF;SAAM;QACL,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACpC,aAAa,GAAG,MAAM,gBAAgB;YACpC,QAAQ,CAAC,KAAU,EAAE,mBAAyC;gBAC5D,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;YACxD,CAAC;YAED,cAAc,CAAC,mBAAyC;gBACtD,IAAI,SAAS,CAAC,cAAc,EAAE;oBAC5B,OAAO,SAAS,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;iBACtD;gBAED,OAAO,EAAE,CAAC;YACZ,CAAC;SACF,CAAC;QACF,IAAA,oCAAkB,GAAE,CAAC,qBAAqB,CAAC,IAAI,uCAAkB,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;KAChH;IAED,MAAM,sBAAsB,GAA2B;QACrD,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,iCAAe,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,iCAAe,CAAC,iBAAiB;QAC9G,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,iBAAiB,EAAE,OAAO,CAAC,OAAO;QAClC,aAAa,EAAE,aAAa;QAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAC;IACF,IAAA,oCAAkB,GAAE,CAAC,qBAAqB,CAAC,IAAI,uCAAkB,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAC7F,CAAC;AAnCD,8CAmCC","sourcesContent":["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 {\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 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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/convert-to-array.util.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/convert-to-array.util.js new file mode 100644 index 00000000..de486a41 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/convert-to-array.util.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.convertToArray = void 0; +/** + * Convert Map, Set to Array + */ +function convertToArray(val) { + if (val instanceof Map) { + return Array.from(val.values()); + } + return Array.isArray(val) ? val : Array.from(val); +} +exports.convertToArray = convertToArray; +//# sourceMappingURL=convert-to-array.util.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/convert-to-array.util.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/convert-to-array.util.js.map new file mode 100644 index 00000000..6b7b7070 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/convert-to-array.util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"convert-to-array.util.js","sourceRoot":"","sources":["../../../src/utils/convert-to-array.util.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,SAAgB,cAAc,CAAI,GAAoC;IACpE,IAAI,GAAG,YAAY,GAAG,EAAE;QACtB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;KACjC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpD,CAAC;AALD,wCAKC","sourcesContent":["/**\n * Convert Map, Set to Array\n */\nexport function convertToArray(val: Array | Set | Map): Array {\n if (val instanceof Map) {\n return Array.from(val.values());\n }\n return Array.isArray(val) ? val : Array.from(val);\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/get-global.util.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/get-global.util.js new file mode 100644 index 00000000..63c6eebc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/get-global.util.js @@ -0,0 +1,33 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getGlobal = void 0; +/** + * This function returns the global object across Node and browsers. + * + * Note: `globalThis` is the standardized approach however it has been added to + * Node.js in version 12. We need to include this snippet until Node 12 EOL. + */ +function getGlobal() { + if (typeof globalThis !== 'undefined') { + return globalThis; + } + if (typeof global !== 'undefined') { + return global; + } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'window'. + if (typeof window !== 'undefined') { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'window'. + return window; + } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'self'. + if (typeof self !== 'undefined') { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'self'. + return self; + } +} +exports.getGlobal = getGlobal; +//# sourceMappingURL=get-global.util.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/get-global.util.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/get-global.util.js.map new file mode 100644 index 00000000..c74ab152 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/get-global.util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"get-global.util.js","sourceRoot":"","sources":["../../../src/utils/get-global.util.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,SAAgB,SAAS;IACvB,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;QACrC,OAAO,UAAU,CAAC;KACnB;IAED,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,OAAO,MAAM,CAAC;KACf;IAED,6DAA6D;IAC7D,yCAAyC;IACzC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,6DAA6D;QAC7D,yCAAyC;QACzC,OAAO,MAAM,CAAC;KACf;IAED,6DAA6D;IAC7D,uCAAuC;IACvC,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;QAC/B,6DAA6D;QAC7D,uCAAuC;QACvC,OAAO,IAAI,CAAC;KACb;AACH,CAAC;AAxBD,8BAwBC","sourcesContent":["/**\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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/index.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/index.js new file mode 100644 index 00000000..6ef45ecc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/index.js @@ -0,0 +1,16 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./convert-to-array.util"), exports); +__exportStar(require("./get-global.util"), exports); +__exportStar(require("./is-promise.util"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/index.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/index.js.map new file mode 100644 index 00000000..7af1ea94 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0DAAwC;AACxC,oDAAkC;AAClC,oDAAkC","sourcesContent":["export * from './convert-to-array.util';\nexport * from './get-global.util';\nexport * from './is-promise.util';\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/is-promise.util.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/is-promise.util.js new file mode 100644 index 00000000..14fadbc9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/is-promise.util.js @@ -0,0 +1,9 @@ +"use strict"; +// https://github.com/TylorS/typed-is-promise/blob/abf1514e1b6961adfc75765476b0debb96b2c3ae/src/index.ts +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isPromise = void 0; +function isPromise(p) { + return p !== null && typeof p === 'object' && typeof p.then === 'function'; +} +exports.isPromise = isPromise; +//# sourceMappingURL=is-promise.util.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/is-promise.util.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/is-promise.util.js.map new file mode 100644 index 00000000..edc587fc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/utils/is-promise.util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"is-promise.util.js","sourceRoot":"","sources":["../../../src/utils/is-promise.util.ts"],"names":[],"mappings":";AAAA,wGAAwG;;;AAExG,SAAgB,SAAS,CAAU,CAAM;IACvC,OAAO,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;AAC7E,CAAC;AAFD,8BAEC","sourcesContent":["// https://github.com/TylorS/typed-is-promise/blob/abf1514e1b6961adfc75765476b0debb96b2c3ae/src/index.ts\n\nexport function isPromise(p: any): p is Promise {\n return p !== null && typeof p === 'object' && typeof p.then === 'function';\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation-schema/ValidationSchema.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation-schema/ValidationSchema.js new file mode 100644 index 00000000..84b65035 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation-schema/ValidationSchema.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=ValidationSchema.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation-schema/ValidationSchema.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation-schema/ValidationSchema.js.map new file mode 100644 index 00000000..27cc4885 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation-schema/ValidationSchema.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationSchema.js","sourceRoot":"","sources":["../../../src/validation-schema/ValidationSchema.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Validation schema is a decorator-free way of validation of your objects.\n * Also using validation schemas makes this library to be easily used with es6/es5.\n */\nexport interface ValidationSchema {\n /**\n * Schema name. This is required, because we tell validator to validate by this schema using its name.\n */\n name: string;\n\n /**\n * Validated properties.\n */\n properties: {\n /**\n * Name of the object's property to be validated which holds an array of validation constraints.\n */\n [propertyName: string]: {\n /**\n * Validation type. Should be one of the ValidationTypes value.\n */\n type: string;\n\n /**\n * Constraints set by validation type.\n */\n constraints?: any[];\n\n /**\n * Error message used to be used on validation fail.\n * You can use \"$value\" to use value that was failed by validation.\n * You can use \"$constraint1\" and \"$constraint2\" keys in the message string,\n * and they will be replaced with constraint values if they exist.\n * Message can be either string, either a function that returns a string.\n * Second option allows to use values and custom messages depend of them.\n */\n message?: string | ((value?: any, constraint1?: any, constraint2?: any) => string);\n\n /**\n * Specifies if validated value is an array and each of its item must be validated.\n */\n each?: boolean;\n\n /**\n * Indicates if validation must be performed always, no matter of validation groups used.\n */\n always?: boolean;\n\n /**\n * Validation groups used for this validation.\n */\n groups?: string[];\n\n /**\n * Specific validation type options.\n */\n options?: any;\n }[];\n };\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation-schema/ValidationSchemaToMetadataTransformer.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation-schema/ValidationSchemaToMetadataTransformer.js new file mode 100644 index 00000000..0f759991 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation-schema/ValidationSchemaToMetadataTransformer.js @@ -0,0 +1,34 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ValidationSchemaToMetadataTransformer = void 0; +const ValidationMetadata_1 = require("../metadata/ValidationMetadata"); +/** + * Used to transform validation schemas to validation metadatas. + */ +class ValidationSchemaToMetadataTransformer { + transform(schema) { + const metadatas = []; + Object.keys(schema.properties).forEach(property => { + schema.properties[property].forEach(validation => { + const validationOptions = { + message: validation.message, + groups: validation.groups, + always: validation.always, + each: validation.each, + }; + const args = { + type: validation.type, + target: schema.name, + propertyName: property, + constraints: validation.constraints, + validationTypeOptions: validation.options, + validationOptions: validationOptions, + }; + metadatas.push(new ValidationMetadata_1.ValidationMetadata(args)); + }); + }); + return metadatas; + } +} +exports.ValidationSchemaToMetadataTransformer = ValidationSchemaToMetadataTransformer; +//# sourceMappingURL=ValidationSchemaToMetadataTransformer.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation-schema/ValidationSchemaToMetadataTransformer.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation-schema/ValidationSchemaToMetadataTransformer.js.map new file mode 100644 index 00000000..fed40fa0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation-schema/ValidationSchemaToMetadataTransformer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationSchemaToMetadataTransformer.js","sourceRoot":"","sources":["../../../src/validation-schema/ValidationSchemaToMetadataTransformer.ts"],"names":[],"mappings":";;;AACA,uEAAoE;AAIpE;;GAEG;AACH,MAAa,qCAAqC;IAChD,SAAS,CAAC,MAAwB;QAChC,MAAM,SAAS,GAAyB,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAChD,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;gBAC/C,MAAM,iBAAiB,GAAsB;oBAC3C,OAAO,EAAE,UAAU,CAAC,OAAO;oBAC3B,MAAM,EAAE,UAAU,CAAC,MAAM;oBACzB,MAAM,EAAE,UAAU,CAAC,MAAM;oBACzB,IAAI,EAAE,UAAU,CAAC,IAAI;iBACtB,CAAC;gBACF,MAAM,IAAI,GAA2B;oBACnC,IAAI,EAAE,UAAU,CAAC,IAAI;oBACrB,MAAM,EAAE,MAAM,CAAC,IAAI;oBACnB,YAAY,EAAE,QAAQ;oBACtB,WAAW,EAAE,UAAU,CAAC,WAAW;oBACnC,qBAAqB,EAAE,UAAU,CAAC,OAAO;oBACzC,iBAAiB,EAAE,iBAAiB;iBACrC,CAAC;gBACF,SAAS,CAAC,IAAI,CAAC,IAAI,uCAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAxBD,sFAwBC","sourcesContent":["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 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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationArguments.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationArguments.js new file mode 100644 index 00000000..e48b372f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationArguments.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=ValidationArguments.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationArguments.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationArguments.js.map new file mode 100644 index 00000000..c2b0f6ff --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationArguments.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationArguments.js","sourceRoot":"","sources":["../../../src/validation/ValidationArguments.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Arguments being sent to message builders - user can create message either by simply returning a string,\n * either by returning a function that accepts MessageArguments and returns a message string built based on these arguments.\n */\nexport interface ValidationArguments {\n /**\n * Validating value.\n */\n value: any;\n\n /**\n * Constraints set by this validation type.\n */\n constraints: any[];\n\n /**\n * Name of the target that is being validated.\n */\n targetName: string;\n\n /**\n * Object that is being validated.\n */\n object: object;\n\n /**\n * Name of the object's property being validated.\n */\n property: string;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationError.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationError.js new file mode 100644 index 00000000..917edcc0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationError.js @@ -0,0 +1,44 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ValidationError = void 0; +/** + * Validation error description. + */ +class ValidationError { + /** + * + * @param shouldDecorate decorate the message with ANSI formatter escape codes for better readability + * @param hasParent true when the error is a child of an another one + * @param parentPath path as string to the parent of this property + */ + toString(shouldDecorate = false, hasParent = false, parentPath = ``) { + const boldStart = shouldDecorate ? `\x1b[1m` : ``; + const boldEnd = shouldDecorate ? `\x1b[22m` : ``; + const propConstraintFailed = (propertyName) => ` - property ${boldStart}${parentPath}${propertyName}${boldEnd} has failed the following constraints: ${boldStart}${Object.keys(this.constraints).join(`, `)}${boldEnd} \n`; + if (!hasParent) { + return (`An instance of ${boldStart}${this.target ? this.target.constructor.name : 'an object'}${boldEnd} has failed the validation:\n` + + (this.constraints ? propConstraintFailed(this.property) : ``) + + (this.children + ? this.children.map(childError => childError.toString(shouldDecorate, true, this.property)).join(``) + : ``)); + } + else { + // we format numbers as array indexes for better readability. + const formattedProperty = Number.isInteger(+this.property) + ? `[${this.property}]` + : `${parentPath ? `.` : ``}${this.property}`; + if (this.constraints) { + return propConstraintFailed(formattedProperty); + } + else { + return this.children + ? this.children + .map(childError => childError.toString(shouldDecorate, true, `${parentPath}${formattedProperty}`)) + .join(``) + : ``; + } + } + } +} +exports.ValidationError = ValidationError; +//# sourceMappingURL=ValidationError.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationError.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationError.js.map new file mode 100644 index 00000000..e6c93bb6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationError.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationError.js","sourceRoot":"","sources":["../../../src/validation/ValidationError.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,eAAe;IAuC1B;;;;;OAKG;IACH,QAAQ,CAAC,iBAA0B,KAAK,EAAE,YAAqB,KAAK,EAAE,aAAqB,EAAE;QAC3F,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,oBAAoB,GAAG,CAAC,YAAoB,EAAU,EAAE,CAC5D,eAAe,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,OAAO,0CAA0C,SAAS,GAAG,MAAM,CAAC,IAAI,CAC7H,IAAI,CAAC,WAAW,CACjB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,KAAK,CAAC;QAE9B,IAAI,CAAC,SAAS,EAAE;YACd,OAAO,CACL,kBAAkB,SAAS,GACzB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,WAC/C,GAAG,OAAO,+BAA+B;gBACzC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,CAAC,IAAI,CAAC,QAAQ;oBACZ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpG,CAAC,CAAC,EAAE,CAAC,CACR,CAAC;SACH;aAAM;YACL,6DAA6D;YAC7D,MAAM,iBAAiB,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACxD,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG;gBACtB,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAE/C,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,OAAO,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;aAChD;iBAAM;gBACL,OAAO,IAAI,CAAC,QAAQ;oBAClB,CAAC,CAAC,IAAI,CAAC,QAAQ;yBACV,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,EAAE,GAAG,UAAU,GAAG,iBAAiB,EAAE,CAAC,CAAC;yBACjG,IAAI,CAAC,EAAE,CAAC;oBACb,CAAC,CAAC,EAAE,CAAC;aACR;SACF;IACH,CAAC;CACF;AAhFD,0CAgFC","sourcesContent":["/**\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 */\n toString(shouldDecorate: boolean = false, hasParent: boolean = false, parentPath: string = ``): string {\n const boldStart = shouldDecorate ? `\\x1b[1m` : ``;\n const boldEnd = shouldDecorate ? `\\x1b[22m` : ``;\n const propConstraintFailed = (propertyName: string): string =>\n ` - property ${boldStart}${parentPath}${propertyName}${boldEnd} has failed the following constraints: ${boldStart}${Object.keys(\n this.constraints\n ).join(`, `)}${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.map(childError => childError.toString(shouldDecorate, true, this.property)).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 => childError.toString(shouldDecorate, true, `${parentPath}${formattedProperty}`))\n .join(``)\n : ``;\n }\n }\n }\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationExecutor.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationExecutor.js new file mode 100644 index 00000000..30193e06 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationExecutor.js @@ -0,0 +1,322 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ValidationExecutor = void 0; +const ValidationError_1 = require("./ValidationError"); +const ValidationTypes_1 = require("./ValidationTypes"); +const ValidationUtils_1 = require("./ValidationUtils"); +const utils_1 = require("../utils"); +const MetadataStorage_1 = require("../metadata/MetadataStorage"); +/** + * Executes validation over given object. + */ +class ValidationExecutor { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + constructor(validator, validatorOptions) { + this.validator = validator; + this.validatorOptions = validatorOptions; + // ------------------------------------------------------------------------- + // Properties + // ------------------------------------------------------------------------- + this.awaitingPromises = []; + this.ignoreAsyncValidations = false; + // ------------------------------------------------------------------------- + // Private Properties + // ------------------------------------------------------------------------- + this.metadataStorage = (0, MetadataStorage_1.getMetadataStorage)(); + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + execute(object, targetSchema, validationErrors) { + var _a; + /** + * If there is no metadata registered it means possibly the dependencies are not flatterned and + * more than one instance is used. + * + * TODO: This needs proper handling, forcing to use the same container or some other proper solution. + */ + if (!this.metadataStorage.hasValidationMetaData && ((_a = this.validatorOptions) === null || _a === void 0 ? void 0 : _a.enableDebugMessages) === true) { + console.warn(`No metadata found. There is more than once class-validator version installed probably. You need to flatten your dependencies.`); + } + const groups = this.validatorOptions ? this.validatorOptions.groups : undefined; + const strictGroups = (this.validatorOptions && this.validatorOptions.strictGroups) || false; + const always = (this.validatorOptions && this.validatorOptions.always) || false; + const targetMetadatas = this.metadataStorage.getTargetValidationMetadatas(object.constructor, targetSchema, always, strictGroups, groups); + const groupedMetadatas = this.metadataStorage.groupByPropertyName(targetMetadatas); + if (this.validatorOptions && this.validatorOptions.forbidUnknownValues && !targetMetadatas.length) { + const validationError = new ValidationError_1.ValidationError(); + if (!this.validatorOptions || + !this.validatorOptions.validationError || + this.validatorOptions.validationError.target === undefined || + this.validatorOptions.validationError.target === true) + validationError.target = object; + validationError.value = undefined; + validationError.property = undefined; + validationError.children = []; + validationError.constraints = { unknownValue: 'an unknown value was passed to the validate function' }; + validationErrors.push(validationError); + return; + } + if (this.validatorOptions && this.validatorOptions.whitelist) + this.whitelist(object, groupedMetadatas, validationErrors); + // General validation + Object.keys(groupedMetadatas).forEach(propertyName => { + const value = object[propertyName]; + const definedMetadatas = groupedMetadatas[propertyName].filter(metadata => metadata.type === ValidationTypes_1.ValidationTypes.IS_DEFINED); + const metadatas = groupedMetadatas[propertyName].filter(metadata => metadata.type !== ValidationTypes_1.ValidationTypes.IS_DEFINED && metadata.type !== ValidationTypes_1.ValidationTypes.WHITELIST); + if (value instanceof Promise && + metadatas.find(metadata => metadata.type === ValidationTypes_1.ValidationTypes.PROMISE_VALIDATION)) { + this.awaitingPromises.push(value.then(resolvedValue => { + this.performValidations(object, resolvedValue, propertyName, definedMetadatas, metadatas, validationErrors); + })); + } + else { + this.performValidations(object, value, propertyName, definedMetadatas, metadatas, validationErrors); + } + }); + } + whitelist(object, groupedMetadatas, validationErrors) { + const notAllowedProperties = []; + Object.keys(object).forEach(propertyName => { + // does this property have no metadata? + if (!groupedMetadatas[propertyName] || groupedMetadatas[propertyName].length === 0) + notAllowedProperties.push(propertyName); + }); + if (notAllowedProperties.length > 0) { + if (this.validatorOptions && this.validatorOptions.forbidNonWhitelisted) { + // throw errors + notAllowedProperties.forEach(property => { + const validationError = this.generateValidationError(object, object[property], property); + validationError.constraints = { [ValidationTypes_1.ValidationTypes.WHITELIST]: `property ${property} should not exist` }; + validationError.children = undefined; + validationErrors.push(validationError); + }); + } + else { + // strip non allowed properties + notAllowedProperties.forEach(property => delete object[property]); + } + } + } + stripEmptyErrors(errors) { + return errors.filter(error => { + if (error.children) { + error.children = this.stripEmptyErrors(error.children); + } + if (Object.keys(error.constraints).length === 0) { + if (error.children.length === 0) { + return false; + } + else { + delete error.constraints; + } + } + return true; + }); + } + // ------------------------------------------------------------------------- + // Private Methods + // ------------------------------------------------------------------------- + performValidations(object, value, propertyName, definedMetadatas, metadatas, validationErrors) { + const customValidationMetadatas = metadatas.filter(metadata => metadata.type === ValidationTypes_1.ValidationTypes.CUSTOM_VALIDATION); + const nestedValidationMetadatas = metadatas.filter(metadata => metadata.type === ValidationTypes_1.ValidationTypes.NESTED_VALIDATION); + const conditionalValidationMetadatas = metadatas.filter(metadata => metadata.type === ValidationTypes_1.ValidationTypes.CONDITIONAL_VALIDATION); + const validationError = this.generateValidationError(object, value, propertyName); + validationErrors.push(validationError); + const canValidate = this.conditionalValidations(object, value, conditionalValidationMetadatas); + if (!canValidate) { + return; + } + // handle IS_DEFINED validation type the special way - it should work no matter skipUndefinedProperties/skipMissingProperties is set or not + this.customValidations(object, value, definedMetadatas, validationError); + this.mapContexts(object, value, definedMetadatas, validationError); + if (value === undefined && this.validatorOptions && this.validatorOptions.skipUndefinedProperties === true) { + return; + } + if (value === null && this.validatorOptions && this.validatorOptions.skipNullProperties === true) { + return; + } + if ((value === null || value === undefined) && + this.validatorOptions && + this.validatorOptions.skipMissingProperties === true) { + return; + } + this.customValidations(object, value, customValidationMetadatas, validationError); + this.nestedValidations(value, nestedValidationMetadatas, validationError.children); + this.mapContexts(object, value, metadatas, validationError); + this.mapContexts(object, value, customValidationMetadatas, validationError); + } + generateValidationError(object, value, propertyName) { + const validationError = new ValidationError_1.ValidationError(); + if (!this.validatorOptions || + !this.validatorOptions.validationError || + this.validatorOptions.validationError.target === undefined || + this.validatorOptions.validationError.target === true) + validationError.target = object; + if (!this.validatorOptions || + !this.validatorOptions.validationError || + this.validatorOptions.validationError.value === undefined || + this.validatorOptions.validationError.value === true) + validationError.value = value; + validationError.property = propertyName; + validationError.children = []; + validationError.constraints = {}; + return validationError; + } + conditionalValidations(object, value, metadatas) { + return metadatas + .map(metadata => metadata.constraints[0](object, value)) + .reduce((resultA, resultB) => resultA && resultB, true); + } + customValidations(object, value, metadatas, error) { + metadatas.forEach(metadata => { + this.metadataStorage.getTargetValidatorConstraints(metadata.constraintCls).forEach(customConstraintMetadata => { + if (customConstraintMetadata.async && this.ignoreAsyncValidations) + return; + if (this.validatorOptions && + this.validatorOptions.stopAtFirstError && + Object.keys(error.constraints || {}).length > 0) + return; + const validationArguments = { + targetName: object.constructor ? object.constructor.name : undefined, + property: metadata.propertyName, + object: object, + value: value, + constraints: metadata.constraints, + }; + if (!metadata.each || !(Array.isArray(value) || value instanceof Set || value instanceof Map)) { + const validatedValue = customConstraintMetadata.instance.validate(value, validationArguments); + if ((0, utils_1.isPromise)(validatedValue)) { + const promise = validatedValue.then(isValid => { + if (!isValid) { + const [type, message] = this.createValidationError(object, value, metadata, customConstraintMetadata); + error.constraints[type] = message; + if (metadata.context) { + if (!error.contexts) { + error.contexts = {}; + } + error.contexts[type] = Object.assign(error.contexts[type] || {}, metadata.context); + } + } + }); + this.awaitingPromises.push(promise); + } + else { + if (!validatedValue) { + const [type, message] = this.createValidationError(object, value, metadata, customConstraintMetadata); + error.constraints[type] = message; + } + } + return; + } + // convert set and map into array + const arrayValue = (0, utils_1.convertToArray)(value); + // Validation needs to be applied to each array item + const validatedSubValues = arrayValue.map((subValue) => customConstraintMetadata.instance.validate(subValue, validationArguments)); + const validationIsAsync = validatedSubValues.some((validatedSubValue) => (0, utils_1.isPromise)(validatedSubValue)); + if (validationIsAsync) { + // Wrap plain values (if any) in promises, so that all are async + const asyncValidatedSubValues = validatedSubValues.map((validatedSubValue) => (0, utils_1.isPromise)(validatedSubValue) ? validatedSubValue : Promise.resolve(validatedSubValue)); + const asyncValidationIsFinishedPromise = Promise.all(asyncValidatedSubValues).then((flatValidatedValues) => { + const validationResult = flatValidatedValues.every((isValid) => isValid); + if (!validationResult) { + const [type, message] = this.createValidationError(object, value, metadata, customConstraintMetadata); + error.constraints[type] = message; + if (metadata.context) { + if (!error.contexts) { + error.contexts = {}; + } + error.contexts[type] = Object.assign(error.contexts[type] || {}, metadata.context); + } + } + }); + this.awaitingPromises.push(asyncValidationIsFinishedPromise); + return; + } + const validationResult = validatedSubValues.every((isValid) => isValid); + if (!validationResult) { + const [type, message] = this.createValidationError(object, value, metadata, customConstraintMetadata); + error.constraints[type] = message; + } + }); + }); + } + nestedValidations(value, metadatas, errors) { + if (value === void 0) { + return; + } + metadatas.forEach(metadata => { + if (metadata.type !== ValidationTypes_1.ValidationTypes.NESTED_VALIDATION && metadata.type !== ValidationTypes_1.ValidationTypes.PROMISE_VALIDATION) { + return; + } + if (Array.isArray(value) || value instanceof Set || value instanceof Map) { + // Treats Set as an array - as index of Set value is value itself and it is common case to have Object as value + const arrayLikeValue = value instanceof Set ? Array.from(value) : value; + arrayLikeValue.forEach((subValue, index) => { + this.performValidations(value, subValue, index.toString(), [], metadatas, errors); + }); + } + else if (value instanceof Object) { + const targetSchema = typeof metadata.target === 'string' ? metadata.target : metadata.target.name; + this.execute(value, targetSchema, errors); + } + else { + const error = new ValidationError_1.ValidationError(); + error.value = value; + error.property = metadata.propertyName; + error.target = metadata.target; + const [type, message] = this.createValidationError(metadata.target, value, metadata); + error.constraints = { + [type]: message, + }; + errors.push(error); + } + }); + } + mapContexts(object, value, metadatas, error) { + return metadatas.forEach(metadata => { + if (metadata.context) { + let customConstraint; + if (metadata.type === ValidationTypes_1.ValidationTypes.CUSTOM_VALIDATION) { + const customConstraints = this.metadataStorage.getTargetValidatorConstraints(metadata.constraintCls); + customConstraint = customConstraints[0]; + } + const type = this.getConstraintType(metadata, customConstraint); + if (error.constraints[type]) { + if (!error.contexts) { + error.contexts = {}; + } + error.contexts[type] = Object.assign(error.contexts[type] || {}, metadata.context); + } + } + }); + } + createValidationError(object, value, metadata, customValidatorMetadata) { + const targetName = object.constructor ? object.constructor.name : undefined; + const type = this.getConstraintType(metadata, customValidatorMetadata); + const validationArguments = { + targetName: targetName, + property: metadata.propertyName, + object: object, + value: value, + constraints: metadata.constraints, + }; + let message = metadata.message || ''; + if (!metadata.message && + (!this.validatorOptions || (this.validatorOptions && !this.validatorOptions.dismissDefaultMessages))) { + if (customValidatorMetadata && customValidatorMetadata.instance.defaultMessage instanceof Function) { + message = customValidatorMetadata.instance.defaultMessage(validationArguments); + } + } + const messageString = ValidationUtils_1.ValidationUtils.replaceMessageSpecialTokens(message, validationArguments); + return [type, messageString]; + } + getConstraintType(metadata, customValidatorMetadata) { + const type = customValidatorMetadata && customValidatorMetadata.name ? customValidatorMetadata.name : metadata.type; + return type; + } +} +exports.ValidationExecutor = ValidationExecutor; +//# sourceMappingURL=ValidationExecutor.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationExecutor.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationExecutor.js.map new file mode 100644 index 00000000..d02ba7c8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationExecutor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationExecutor.js","sourceRoot":"","sources":["../../../src/validation/ValidationExecutor.ts"],"names":[],"mappings":"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","sourcesContent":["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[] = [];\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 metadata found. There is more than once class-validator version installed probably. You need to flatten your dependencies.`\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\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 && 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.children);\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) =>\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) =>\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\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[], errors: 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 }\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, errors);\n });\n } else if (value instanceof Object) {\n const targetSchema = typeof metadata.target === 'string' ? metadata.target : metadata.target.name;\n this.execute(value, targetSchema, errors);\n } else {\n const error = new ValidationError();\n error.value = value;\n error.property = metadata.propertyName;\n error.target = metadata.target as object;\n const [type, message] = this.createValidationError(metadata.target as object, value, metadata);\n error.constraints = {\n [type]: message,\n };\n errors.push(error);\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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationTypes.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationTypes.js new file mode 100644 index 00000000..ae4220af --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationTypes.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ValidationTypes = void 0; +/** + * Validation types. + */ +class ValidationTypes { + /** + * Checks if validation type is valid. + */ + static isValid(type) { + return (type !== 'isValid' && + type !== 'getMessage' && + Object.keys(this) + .map(key => this[key]) + .indexOf(type) !== -1); + } +} +exports.ValidationTypes = ValidationTypes; +/* system */ +ValidationTypes.CUSTOM_VALIDATION = 'customValidation'; // done +ValidationTypes.NESTED_VALIDATION = 'nestedValidation'; // done +ValidationTypes.PROMISE_VALIDATION = 'promiseValidation'; // done +ValidationTypes.CONDITIONAL_VALIDATION = 'conditionalValidation'; // done +ValidationTypes.WHITELIST = 'whitelistValidation'; // done +ValidationTypes.IS_DEFINED = 'isDefined'; // done +//# sourceMappingURL=ValidationTypes.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationTypes.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationTypes.js.map new file mode 100644 index 00000000..d802886f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationTypes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationTypes.js","sourceRoot":"","sources":["../../../src/validation/ValidationTypes.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,eAAe;IAS1B;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,IAAY;QACzB,OAAO,CACL,IAAI,KAAK,SAAS;YAClB,IAAI,KAAK,YAAY;YACrB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;iBACd,GAAG,CAAC,GAAG,CAAC,EAAE,CAAE,IAAY,CAAC,GAAG,CAAC,CAAC;iBAC9B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACxB,CAAC;IACJ,CAAC;;AApBH,0CAqBC;AApBC,YAAY;AACL,iCAAiB,GAAG,kBAAkB,CAAC,CAAC,OAAO;AAC/C,iCAAiB,GAAG,kBAAkB,CAAC,CAAC,OAAO;AAC/C,kCAAkB,GAAG,mBAAmB,CAAC,CAAC,OAAO;AACjD,sCAAsB,GAAG,uBAAuB,CAAC,CAAC,OAAO;AACzD,yBAAS,GAAG,qBAAqB,CAAC,CAAC,OAAO;AAC1C,0BAAU,GAAG,WAAW,CAAC,CAAC,OAAO","sourcesContent":["/**\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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationUtils.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationUtils.js new file mode 100644 index 00000000..cb0caeb3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationUtils.js @@ -0,0 +1,41 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ValidationUtils = exports.constraintToString = void 0; +/** + * Convert the constraint to a string to be shown in an error + */ +function constraintToString(constraint) { + if (Array.isArray(constraint)) { + return constraint.join(', '); + } + return `${constraint}`; +} +exports.constraintToString = constraintToString; +class ValidationUtils { + static replaceMessageSpecialTokens(message, validationArguments) { + let messageString; + if (message instanceof Function) { + messageString = message(validationArguments); + } + else if (typeof message === 'string') { + messageString = message; + } + if (messageString && Array.isArray(validationArguments.constraints)) { + validationArguments.constraints.forEach((constraint, index) => { + messageString = messageString.replace(new RegExp(`\\$constraint${index + 1}`, 'g'), constraintToString(constraint)); + }); + } + if (messageString && + validationArguments.value !== undefined && + validationArguments.value !== null && + typeof validationArguments.value === 'string') + messageString = messageString.replace(/\$value/g, validationArguments.value); + if (messageString) + messageString = messageString.replace(/\$property/g, validationArguments.property); + if (messageString) + messageString = messageString.replace(/\$target/g, validationArguments.targetName); + return messageString; + } +} +exports.ValidationUtils = ValidationUtils; +//# sourceMappingURL=ValidationUtils.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationUtils.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationUtils.js.map new file mode 100644 index 00000000..23f5c2e2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidationUtils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationUtils.js","sourceRoot":"","sources":["../../../src/validation/ValidationUtils.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH,SAAgB,kBAAkB,CAAC,UAAmB;IACpD,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QAC7B,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;IAED,OAAO,GAAG,UAAU,EAAE,CAAC;AACzB,CAAC;AAND,gDAMC;AAED,MAAa,eAAe;IAC1B,MAAM,CAAC,2BAA2B,CAChC,OAAyD,EACzD,mBAAwC;QAExC,IAAI,aAAqB,CAAC;QAC1B,IAAI,OAAO,YAAY,QAAQ,EAAE;YAC/B,aAAa,GAAI,OAAiD,CAAC,mBAAmB,CAAC,CAAC;SACzF;aAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YACtC,aAAa,GAAG,OAAO,CAAC;SACzB;QAED,IAAI,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE;YACnE,mBAAmB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE;gBAC5D,aAAa,GAAG,aAAa,CAAC,OAAO,CACnC,IAAI,MAAM,CAAC,gBAAgB,KAAK,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAC5C,kBAAkB,CAAC,UAAU,CAAC,CAC/B,CAAC;YACJ,CAAC,CAAC,CAAC;SACJ;QAED,IACE,aAAa;YACb,mBAAmB,CAAC,KAAK,KAAK,SAAS;YACvC,mBAAmB,CAAC,KAAK,KAAK,IAAI;YAClC,OAAO,mBAAmB,CAAC,KAAK,KAAK,QAAQ;YAE7C,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC/E,IAAI,aAAa;YAAE,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACtG,IAAI,aAAa;YAAE,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAEtG,OAAO,aAAa,CAAC;IACvB,CAAC;CACF;AAjCD,0CAiCC","sourcesContent":["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 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 typeof validationArguments.value === 'string'\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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/Validator.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/Validator.js new file mode 100644 index 00000000..4ea5e57d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/Validator.js @@ -0,0 +1,56 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Validator = void 0; +const ValidationExecutor_1 = require("./ValidationExecutor"); +/** + * Validator performs validation of the given object based on its metadata. + */ +class Validator { + /** + * Performs validation of the given object based on decorators or validation schema. + */ + validate(objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions) { + return this.coreValidate(objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions); + } + /** + * Performs validation of the given object based on decorators or validation schema and reject on error. + */ + async validateOrReject(objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions) { + const errors = await this.coreValidate(objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions); + if (errors.length) + return Promise.reject(errors); + } + /** + * Performs validation of the given object based on decorators or validation schema. + */ + validateSync(objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions) { + const object = typeof objectOrSchemaName === 'string' ? objectOrValidationOptions : objectOrSchemaName; + const options = typeof objectOrSchemaName === 'string' ? maybeValidatorOptions : objectOrValidationOptions; + const schema = typeof objectOrSchemaName === 'string' ? objectOrSchemaName : undefined; + const executor = new ValidationExecutor_1.ValidationExecutor(this, options); + executor.ignoreAsyncValidations = true; + const validationErrors = []; + executor.execute(object, schema, validationErrors); + return executor.stripEmptyErrors(validationErrors); + } + // ------------------------------------------------------------------------- + // Private Properties + // ------------------------------------------------------------------------- + /** + * Performs validation of the given object based on decorators or validation schema. + * Common method for `validateOrReject` and `validate` methods. + */ + coreValidate(objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions) { + const object = typeof objectOrSchemaName === 'string' ? objectOrValidationOptions : objectOrSchemaName; + const options = typeof objectOrSchemaName === 'string' ? maybeValidatorOptions : objectOrValidationOptions; + const schema = typeof objectOrSchemaName === 'string' ? objectOrSchemaName : undefined; + const executor = new ValidationExecutor_1.ValidationExecutor(this, options); + const validationErrors = []; + executor.execute(object, schema, validationErrors); + return Promise.all(executor.awaitingPromises).then(() => { + return executor.stripEmptyErrors(validationErrors); + }); + } +} +exports.Validator = Validator; +//# sourceMappingURL=Validator.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/Validator.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/Validator.js.map new file mode 100644 index 00000000..c7559dc3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/Validator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Validator.js","sourceRoot":"","sources":["../../../src/validation/Validator.ts"],"names":[],"mappings":";;;AAEA,6DAA0D;AAG1D;;GAEG;AACH,MAAa,SAAS;IAepB;;OAEG;IACH,QAAQ,CACN,kBAAmC,EACnC,yBAAqD,EACrD,qBAAwC;QAExC,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,yBAAyB,EAAE,qBAAqB,CAAC,CAAC;IACjG,CAAC;IAYD;;OAEG;IACH,KAAK,CAAC,gBAAgB,CACpB,kBAAmC,EACnC,yBAAqD,EACrD,qBAAwC;QAExC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,yBAAyB,EAAE,qBAAqB,CAAC,CAAC;QAC7G,IAAI,MAAM,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IAaD;;OAEG;IACH,YAAY,CACV,kBAAmC,EACnC,yBAAqD,EACrD,qBAAwC;QAExC,MAAM,MAAM,GAAG,OAAO,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAE,yBAAoC,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACnH,MAAM,OAAO,GACX,OAAO,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAE,yBAA+C,CAAC;QACpH,MAAM,MAAM,GAAG,OAAO,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;QAEvF,MAAM,QAAQ,GAAG,IAAI,uCAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACvD,QAAQ,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACvC,MAAM,gBAAgB,GAAsB,EAAE,CAAC;QAC/C,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;QACnD,OAAO,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IACrD,CAAC;IAED,4EAA4E;IAC5E,qBAAqB;IACrB,4EAA4E;IAC5E;;;OAGG;IACK,YAAY,CAClB,kBAAmC,EACnC,yBAAqD,EACrD,qBAAwC;QAExC,MAAM,MAAM,GAAG,OAAO,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAE,yBAAoC,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACnH,MAAM,OAAO,GACX,OAAO,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAE,yBAA+C,CAAC;QACpH,MAAM,MAAM,GAAG,OAAO,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;QAEvF,MAAM,QAAQ,GAAG,IAAI,uCAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,gBAAgB,GAAsB,EAAE,CAAC;QAC/C,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;QAEnD,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACtD,OAAO,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAxGD,8BAwGC","sourcesContent":["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;\n\n /**\n * Performs validation of the given object based on validation schema.\n */\n validate(schemaName: string, object: object, options?: ValidatorOptions): Promise;\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 {\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;\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;\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 {\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 {\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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidatorConstraintInterface.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidatorConstraintInterface.js new file mode 100644 index 00000000..e4f6fa7d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidatorConstraintInterface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=ValidatorConstraintInterface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidatorConstraintInterface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidatorConstraintInterface.js.map new file mode 100644 index 00000000..acc4adf6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidatorConstraintInterface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidatorConstraintInterface.js","sourceRoot":"","sources":["../../../src/validation/ValidatorConstraintInterface.ts"],"names":[],"mappings":"","sourcesContent":["import { ValidationArguments } from './ValidationArguments';\n/**\n * Custom validators must implement this interface to provide custom validation logic.\n */\nexport interface ValidatorConstraintInterface {\n /**\n * Method to be called to perform custom validation over given value.\n */\n validate(value: any, validationArguments?: ValidationArguments): Promise | boolean;\n\n /**\n * Gets default message when validation for this constraint fail.\n */\n defaultMessage?(validationArguments?: ValidationArguments): string;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidatorOptions.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidatorOptions.js new file mode 100644 index 00000000..cc130b68 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidatorOptions.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=ValidatorOptions.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidatorOptions.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidatorOptions.js.map new file mode 100644 index 00000000..40e2172b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/cjs/validation/ValidatorOptions.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidatorOptions.js","sourceRoot":"","sources":["../../../src/validation/ValidatorOptions.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Options passed to validator during validation.\n */\nexport interface ValidatorOptions {\n /**\n * If set to true then class-validator will print extra warning messages to the console when something is not right.\n */\n enableDebugMessages?: boolean;\n\n /**\n * If set to true then validator will skip validation of all properties that are undefined in the validating object.\n */\n skipUndefinedProperties?: boolean;\n\n /**\n * If set to true then validator will skip validation of all properties that are null in the validating object.\n */\n skipNullProperties?: boolean;\n\n /**\n * If set to true then validator will skip validation of all properties that are null or undefined in the validating object.\n */\n skipMissingProperties?: boolean;\n\n /**\n * If set to true validator will strip validated object of any properties that do not have any decorators.\n *\n * Tip: if no other decorator is suitable for your property use @Allow decorator.\n */\n whitelist?: boolean;\n\n /**\n * If set to true, instead of stripping non-whitelisted properties validator will throw an error\n */\n forbidNonWhitelisted?: boolean;\n\n /**\n * Groups to be used during validation of the object.\n */\n groups?: string[];\n\n /**\n * Set default for `always` option of decorators. Default can be overridden in decorator options.\n */\n always?: boolean;\n\n /**\n * If [groups]{@link ValidatorOptions#groups} is not given or is empty,\n * ignore decorators with at least one group.\n */\n strictGroups?: boolean;\n\n /**\n * If set to true, the validation will not use default messages.\n * Error message always will be undefined if its not explicitly set.\n */\n dismissDefaultMessages?: boolean;\n\n /**\n * ValidationError special options.\n */\n validationError?: {\n /**\n * Indicates if target should be exposed in ValidationError.\n */\n target?: boolean;\n\n /**\n * Indicates if validated value should be exposed in ValidationError.\n */\n value?: boolean;\n };\n\n /**\n * Settings true will cause fail validation of unknown objects.\n */\n forbidUnknownValues?: boolean;\n\n /**\n * When set to true, validation of the given property will stop after encountering the first error. Defaults to false.\n */\n stopAtFirstError?: boolean;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/container.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/container.js new file mode 100644 index 00000000..42dfd94d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/container.js @@ -0,0 +1,46 @@ +/** + * Container to be used by this library for inversion control. If container was not implicitly set then by default + * container simply creates a new instance of the given class. + */ +const defaultContainer = new (class { + constructor() { + this.instances = []; + } + get(someClass) { + let instance = this.instances.find(instance => instance.type === someClass); + if (!instance) { + instance = { type: someClass, object: new someClass() }; + this.instances.push(instance); + } + return instance.object; + } +})(); +let userContainer; +let userContainerOptions; +/** + * Sets container to be used by this library. + */ +export function useContainer(iocContainer, options) { + userContainer = iocContainer; + userContainerOptions = options; +} +/** + * Gets the IOC container used by this library. + */ +export function getFromContainer(someClass) { + if (userContainer) { + try { + const instance = userContainer.get(someClass); + if (instance) + return instance; + if (!userContainerOptions || !userContainerOptions.fallback) + return instance; + } + catch (error) { + if (!userContainerOptions || !userContainerOptions.fallbackOnErrors) + throw error; + } + } + return defaultContainer.get(someClass); +} +//# sourceMappingURL=container.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/container.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/container.js.map new file mode 100644 index 00000000..f9e8d735 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/container.js.map @@ -0,0 +1 @@ +{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/container.ts"],"names":[],"mappings":"AAeA;;;GAGG;AACH,MAAM,gBAAgB,GAAqE,IAAI,CAAC;IAAA;QACtF,cAAS,GAAsC,EAAE,CAAC;IAU5D,CAAC;IATC,GAAG,CAAI,SAAsC;QAC3C,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QAC5E,IAAI,CAAC,QAAQ,EAAE;YACb,QAAQ,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,SAAS,EAAE,EAAE,CAAC;YACxD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC/B;QAED,OAAO,QAAQ,CAAC,MAAM,CAAC;IACzB,CAAC;CACF,CAAC,EAAE,CAAC;AAEL,IAAI,aAA+E,CAAC;AACpF,IAAI,oBAAyC,CAAC;AAE9C;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,YAA0C,EAAE,OAA6B;IACpG,aAAa,GAAG,YAAY,CAAC;IAC7B,oBAAoB,GAAG,OAAO,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAI,SAAiD;IACnF,IAAI,aAAa,EAAE;QACjB,IAAI;YACF,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,QAAQ;gBAAE,OAAO,QAAQ,CAAC;YAE9B,IAAI,CAAC,oBAAoB,IAAI,CAAC,oBAAoB,CAAC,QAAQ;gBAAE,OAAO,QAAQ,CAAC;SAC9E;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,oBAAoB,IAAI,CAAC,oBAAoB,CAAC,gBAAgB;gBAAE,MAAM,KAAK,CAAC;SAClF;KACF;IACD,OAAO,gBAAgB,CAAC,GAAG,CAAI,SAAS,CAAC,CAAC;AAC5C,CAAC","sourcesContent":["/**\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(someClass: { new (...args: any[]): T } | Function): T } = new (class {\n private instances: { type: Function; object: any }[] = [];\n get(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(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(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(someClass);\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/ValidationOptions.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/ValidationOptions.js new file mode 100644 index 00000000..cfe207a4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/ValidationOptions.js @@ -0,0 +1,7 @@ +export function isValidationOptions(val) { + if (!val) { + return false; + } + return 'each' in val || 'message' in val || 'groups' in val || 'always' in val || 'context' in val; +} +//# sourceMappingURL=ValidationOptions.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/ValidationOptions.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/ValidationOptions.js.map new file mode 100644 index 00000000..62386044 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/ValidationOptions.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationOptions.js","sourceRoot":"","sources":["../../../src/decorator/ValidationOptions.ts"],"names":[],"mappings":"AAiCA,MAAM,UAAU,mBAAmB,CAAC,GAAQ;IAC1C,IAAI,CAAC,GAAG,EAAE;QACR,OAAO,KAAK,CAAC;KACd;IACD,OAAO,MAAM,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,CAAC;AACrG,CAAC","sourcesContent":["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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayContains.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayContains.js new file mode 100644 index 00000000..83f67ce7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayContains.js @@ -0,0 +1,26 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const ARRAY_CONTAINS = 'arrayContains'; +/** + * Checks if array contains all values from the given array of values. + * If null or undefined is given then this function returns false. + */ +export function arrayContains(array, values) { + if (!Array.isArray(array)) + return false; + return values.every(value => array.indexOf(value) !== -1); +} +/** + * Checks if array contains all values from the given array of values. + * If null or undefined is given then this function returns false. + */ +export function ArrayContains(values, validationOptions) { + return ValidateBy({ + name: ARRAY_CONTAINS, + constraints: [values], + validator: { + validate: (value, args) => arrayContains(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must contain $constraint1 values', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=ArrayContains.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayContains.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayContains.js.map new file mode 100644 index 00000000..4b8e59a6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayContains.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ArrayContains.js","sourceRoot":"","sources":["../../../../src/decorator/array/ArrayContains.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC;AAE9C;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc,EAAE,MAAa;IACzD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAExC,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,MAAa,EAAE,iBAAqC;IAChF,OAAO,UAAU,CACf;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC7E,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,4CAA4C,EACvE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must contain $constraint1 values',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayMaxSize.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayMaxSize.js new file mode 100644 index 00000000..cd5ee147 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayMaxSize.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const ARRAY_MAX_SIZE = 'arrayMaxSize'; +/** + * Checks if the array's length is less or equal to the specified number. + * If null or undefined is given then this function returns false. + */ +export function arrayMaxSize(array, max) { + return Array.isArray(array) && array.length <= max; +} +/** + * Checks if the array's length is less or equal to the specified number. + * If null or undefined is given then this function returns false. + */ +export function ArrayMaxSize(max, validationOptions) { + return ValidateBy({ + name: ARRAY_MAX_SIZE, + constraints: [max], + validator: { + validate: (value, args) => arrayMaxSize(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must contain not more than $constraint1 elements', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=ArrayMaxSize.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayMaxSize.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayMaxSize.js.map new file mode 100644 index 00000000..a8d06510 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayMaxSize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ArrayMaxSize.js","sourceRoot":"","sources":["../../../../src/decorator/array/ArrayMaxSize.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAC;AAE7C;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc,EAAE,GAAW;IACtD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,iBAAqC;IAC7E,OAAO,UAAU,CACf;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,CAAC,GAAG,CAAC;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC5E,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,4DAA4D,EACvF,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must contain not more than $constraint1 elements',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayMinSize.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayMinSize.js new file mode 100644 index 00000000..a0a89dea --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayMinSize.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const ARRAY_MIN_SIZE = 'arrayMinSize'; +/** + * Checks if the array's length is greater than or equal to the specified number. + * If null or undefined is given then this function returns false. + */ +export function arrayMinSize(array, min) { + return Array.isArray(array) && array.length >= min; +} +/** + * Checks if the array's length is greater than or equal to the specified number. + * If null or undefined is given then this function returns false. + */ +export function ArrayMinSize(min, validationOptions) { + return ValidateBy({ + name: ARRAY_MIN_SIZE, + constraints: [min], + validator: { + validate: (value, args) => arrayMinSize(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must contain at least $constraint1 elements', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=ArrayMinSize.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayMinSize.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayMinSize.js.map new file mode 100644 index 00000000..6c4076cf --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayMinSize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ArrayMinSize.js","sourceRoot":"","sources":["../../../../src/decorator/array/ArrayMinSize.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAC;AAE7C;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc,EAAE,GAAW;IACtD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,iBAAqC;IAC7E,OAAO,UAAU,CACf;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,CAAC,GAAG,CAAC;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC5E,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,uDAAuD,EAClF,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must contain at least $constraint1 elements',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayNotContains.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayNotContains.js new file mode 100644 index 00000000..e4545bc8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayNotContains.js @@ -0,0 +1,26 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const ARRAY_NOT_CONTAINS = 'arrayNotContains'; +/** + * Checks if array does not contain any of the given values. + * If null or undefined is given then this function returns false. + */ +export function arrayNotContains(array, values) { + if (!Array.isArray(array)) + return false; + return values.every(value => array.indexOf(value) === -1); +} +/** + * Checks if array does not contain any of the given values. + * If null or undefined is given then this function returns false. + */ +export function ArrayNotContains(values, validationOptions) { + return ValidateBy({ + name: ARRAY_NOT_CONTAINS, + constraints: [values], + validator: { + validate: (value, args) => arrayNotContains(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property should not contain $constraint1 values', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=ArrayNotContains.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayNotContains.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayNotContains.js.map new file mode 100644 index 00000000..eed79573 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayNotContains.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ArrayNotContains.js","sourceRoot":"","sources":["../../../../src/decorator/array/ArrayNotContains.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,kBAAkB,GAAG,kBAAkB,CAAC;AAErD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc,EAAE,MAAa;IAC5D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAExC,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAa,EAAE,iBAAqC;IACnF,OAAO,UAAU,CACf;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAChF,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,kDAAkD,EAC7E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property should not contain $constraint1 values',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayNotEmpty.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayNotEmpty.js new file mode 100644 index 00000000..3eb26a28 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayNotEmpty.js @@ -0,0 +1,23 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const ARRAY_NOT_EMPTY = 'arrayNotEmpty'; +/** + * Checks if given array is not empty. + * If null or undefined is given then this function returns false. + */ +export function arrayNotEmpty(array) { + return Array.isArray(array) && array.length > 0; +} +/** + * Checks if given array is not empty. + * If null or undefined is given then this function returns false. + */ +export function ArrayNotEmpty(validationOptions) { + return ValidateBy({ + name: ARRAY_NOT_EMPTY, + validator: { + validate: (value, args) => arrayNotEmpty(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property should not be empty', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=ArrayNotEmpty.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayNotEmpty.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayNotEmpty.js.map new file mode 100644 index 00000000..afb9b645 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayNotEmpty.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ArrayNotEmpty.js","sourceRoot":"","sources":["../../../../src/decorator/array/ArrayNotEmpty.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAC;AAE/C;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,iBAAqC;IACjE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,eAAe;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC;YACxD,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,+BAA+B,EAAE,iBAAiB,CAAC;SAC5G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property should not be empty', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayUnique.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayUnique.js new file mode 100644 index 00000000..93e7b6af --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayUnique.js @@ -0,0 +1,31 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const ARRAY_UNIQUE = 'arrayUnique'; +/** + * Checks if all array's values are unique. Comparison for objects is reference-based. + * If null or undefined is given then this function returns false. + */ +export function arrayUnique(array, identifier) { + if (!Array.isArray(array)) + return false; + if (identifier) { + array = array.map(o => (o != null ? identifier(o) : o)); + } + const uniqueItems = array.filter((a, b, c) => c.indexOf(a) === b); + return array.length === uniqueItems.length; +} +/** + * Checks if all array's values are unique. Comparison for objects is reference-based. + * If null or undefined is given then this function returns false. + */ +export function ArrayUnique(identifierOrOptions, validationOptions) { + const identifier = typeof identifierOrOptions === 'function' ? identifierOrOptions : undefined; + const options = typeof identifierOrOptions !== 'function' ? identifierOrOptions : validationOptions; + return ValidateBy({ + name: ARRAY_UNIQUE, + validator: { + validate: (value, args) => arrayUnique(value, identifier), + defaultMessage: buildMessage(eachPrefix => eachPrefix + "All $property's elements must be unique", options), + }, + }, options); +} +//# sourceMappingURL=ArrayUnique.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayUnique.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayUnique.js.map new file mode 100644 index 00000000..6e385fcc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/array/ArrayUnique.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ArrayUnique.js","sourceRoot":"","sources":["../../../../src/decorator/array/ArrayUnique.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;AAG1C;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAgB,EAAE,UAAkC;IAC9E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAExC,IAAI,UAAU,EAAE;QACd,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACzD;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAClE,OAAO,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,mBAAkE,EAClE,iBAAqC;IAErC,MAAM,UAAU,GAAG,OAAO,mBAAmB,KAAK,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/F,MAAM,OAAO,GAAG,OAAO,mBAAmB,KAAK,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAEpG,OAAO,UAAU,CACf;QACE,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC;YAClE,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,yCAAyC,EAAE,OAAO,CAAC;SAC5G;KACF,EACD,OAAO,CACR,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const ARRAY_UNIQUE = 'arrayUnique';\nexport type ArrayUniqueIdentifier = (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(\n identifierOrOptions?: ArrayUniqueIdentifier | 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 + \"All $property's elements must be unique\", options),\n },\n },\n options\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/Allow.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/Allow.js new file mode 100644 index 00000000..f443eff7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/Allow.js @@ -0,0 +1,18 @@ +import { ValidationTypes } from '../../validation/ValidationTypes'; +import { ValidationMetadata } from '../../metadata/ValidationMetadata'; +import { getMetadataStorage } from '../../metadata/MetadataStorage'; +/** + * If object has both allowed and not allowed properties a validation error will be thrown. + */ +export function Allow(validationOptions) { + return function (object, propertyName) { + const args = { + type: ValidationTypes.WHITELIST, + target: object.constructor, + propertyName: propertyName, + validationOptions: validationOptions, + }; + getMetadataStorage().addValidationMetadata(new ValidationMetadata(args)); + }; +} +//# sourceMappingURL=Allow.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/Allow.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/Allow.js.map new file mode 100644 index 00000000..c28ee405 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/Allow.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Allow.js","sourceRoot":"","sources":["../../../../src/decorator/common/Allow.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,iBAAqC;IACzD,OAAO,UAAU,MAAc,EAAE,YAAoB;QACnD,MAAM,IAAI,GAA2B;YACnC,IAAI,EAAE,eAAe,CAAC,SAAS;YAC/B,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,iBAAiB,EAAE,iBAAiB;SACrC,CAAC;QACF,kBAAkB,EAAE,CAAC,qBAAqB,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;AACJ,CAAC","sourcesContent":["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 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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/Equals.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/Equals.js new file mode 100644 index 00000000..f06b2d6b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/Equals.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const EQUALS = 'equals'; +/** + * Checks if value matches ("===") the comparison. + */ +export function equals(value, comparison) { + return value === comparison; +} +/** + * Checks if value matches ("===") the comparison. + */ +export function Equals(comparison, validationOptions) { + return ValidateBy({ + name: EQUALS, + constraints: [comparison], + validator: { + validate: (value, args) => equals(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be equal to $constraint1', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=Equals.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/Equals.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/Equals.js.map new file mode 100644 index 00000000..c984951c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/Equals.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Equals.js","sourceRoot":"","sources":["../../../../src/decorator/common/Equals.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC;AAE/B;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc,EAAE,UAAmB;IACxD,OAAO,KAAK,KAAK,UAAU,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,UAAe,EAAE,iBAAqC;IAC3E,OAAO,UAAU,CACf;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,CAAC,UAAU,CAAC;QACzB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtE,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,yCAAyC,EACpE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be equal to $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsDefined.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsDefined.js new file mode 100644 index 00000000..fc4d0ab9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsDefined.js @@ -0,0 +1,23 @@ +import { buildMessage, ValidateBy } from './ValidateBy'; +import { ValidationTypes } from '../../validation/ValidationTypes'; +// isDefined is (yet) a special case +export const IS_DEFINED = ValidationTypes.IS_DEFINED; +/** + * Checks if value is defined (!== undefined, !== null). + */ +export function isDefined(value) { + return value !== undefined && value !== null; +} +/** + * Checks if value is defined (!== undefined, !== null). + */ +export function IsDefined(validationOptions) { + return ValidateBy({ + name: IS_DEFINED, + validator: { + validate: (value) => isDefined(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property should not be null or undefined', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsDefined.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsDefined.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsDefined.js.map new file mode 100644 index 00000000..e31e7b12 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsDefined.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsDefined.js","sourceRoot":"","sources":["../../../../src/decorator/common/IsDefined.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE,oCAAoC;AACpC,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC;AAErD;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAU;IAClC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,iBAAqC;IAC7D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAW,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;YAC9C,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,2CAA2C,EACtE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from './ValidateBy';\nimport { ValidationTypes } from '../../validation/ValidationTypes';\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 + '$property should not be null or undefined',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsEmpty.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsEmpty.js new file mode 100644 index 00000000..cba22a7f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsEmpty.js @@ -0,0 +1,21 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const IS_EMPTY = 'isEmpty'; +/** + * Checks if given value is empty (=== '', === null, === undefined). + */ +export function isEmpty(value) { + return value === '' || value === null || value === undefined; +} +/** + * Checks if given value is empty (=== '', === null, === undefined). + */ +export function IsEmpty(validationOptions) { + return ValidateBy({ + name: IS_EMPTY, + validator: { + validate: (value, args) => isEmpty(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be empty', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsEmpty.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsEmpty.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsEmpty.js.map new file mode 100644 index 00000000..17c90302 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsEmpty.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsEmpty.js","sourceRoot":"","sources":["../../../../src/decorator/common/IsEmpty.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,QAAQ,GAAG,SAAS,CAAC;AAElC;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,iBAAqC;IAC3D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;YAClD,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,yBAAyB,EAAE,iBAAiB,CAAC;SACtG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be empty', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsIn.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsIn.js new file mode 100644 index 00000000..679fe748 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsIn.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const IS_IN = 'isIn'; +/** + * Checks if given value is in a array of allowed values. + */ +export function isIn(value, possibleValues) { + return !Array.isArray(possibleValues) || possibleValues.some(possibleValue => possibleValue === value); +} +/** + * Checks if given value is in a array of allowed values. + */ +export function IsIn(values, validationOptions) { + return ValidateBy({ + name: IS_IN, + constraints: [values], + validator: { + validate: (value, args) => isIn(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be one of the following values: $constraint1', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsIn.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsIn.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsIn.js.map new file mode 100644 index 00000000..fe7aa291 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsIn.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsIn.js","sourceRoot":"","sources":["../../../../src/decorator/common/IsIn.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC;AAE5B;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,KAAc,EAAE,cAAkC;IACrE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,aAAa,KAAK,KAAK,CAAC,CAAC;AACzG,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,MAAsB,EAAE,iBAAqC;IAChF,OAAO,UAAU,CACf;QACE,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACpE,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,6DAA6D,EACxF,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be one of the following values: $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsLatLong.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsLatLong.js new file mode 100644 index 00000000..9f78f5af --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsLatLong.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from './ValidateBy'; +import isLatLongValidator from 'validator/lib/isLatLong'; +export const IS_LATLONG = 'isLatLong'; +/** + * Checks if a value is string in format a "latitude,longitude". + */ +export function isLatLong(value) { + return typeof value === 'string' && isLatLongValidator(value); +} +/** + * Checks if a value is string in format a "latitude,longitude". + */ +export function IsLatLong(validationOptions) { + return ValidateBy({ + name: IS_LATLONG, + validator: { + validate: (value, args) => isLatLong(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a latitude,longitude string', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsLatLong.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsLatLong.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsLatLong.js.map new file mode 100644 index 00000000..4cc250d4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsLatLong.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsLatLong.js","sourceRoot":"","sources":["../../../../src/decorator/common/IsLatLong.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAEzD,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAC;AAEtC;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,iBAAqC;IAC7D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;YACpD,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,+CAA+C,EAC1E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a latitude,longitude string',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsLatitude.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsLatitude.js new file mode 100644 index 00000000..575ff961 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsLatitude.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from './ValidateBy'; +import { isLatLong } from './IsLatLong'; +export const IS_LATITUDE = 'isLatitude'; +/** + * Checks if a given value is a latitude. + */ +export function isLatitude(value) { + return (typeof value === 'number' || typeof value === 'string') && isLatLong(`${value},0`); +} +/** + * Checks if a given value is a latitude. + */ +export function IsLatitude(validationOptions) { + return ValidateBy({ + name: IS_LATITUDE, + validator: { + validate: (value, args) => isLatitude(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a latitude string or number', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsLatitude.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsLatitude.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsLatitude.js.map new file mode 100644 index 00000000..fef69874 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsLatitude.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsLatitude.js","sourceRoot":"","sources":["../../../../src/decorator/common/IsLatitude.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC;AAExC;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,IAAI,SAAS,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;AAC7F,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,iBAAqC;IAC9D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;YACrD,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,+CAA+C,EAC1E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from './ValidateBy';\nimport { isLatLong } from './IsLatLong';\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 + '$property must be a latitude string or number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsLongitude.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsLongitude.js new file mode 100644 index 00000000..6737f78e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsLongitude.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from './ValidateBy'; +import { isLatLong } from './IsLatLong'; +export const IS_LONGITUDE = 'isLongitude'; +/** + * Checks if a given value is a longitude. + */ +export function isLongitude(value) { + return (typeof value === 'number' || typeof value === 'string') && isLatLong(`0,${value}`); +} +/** + * Checks if a given value is a longitude. + */ +export function IsLongitude(validationOptions) { + return ValidateBy({ + name: IS_LONGITUDE, + validator: { + validate: (value, args) => isLongitude(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a longitude string or number', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsLongitude.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsLongitude.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsLongitude.js.map new file mode 100644 index 00000000..baf799ff --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsLongitude.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsLongitude.js","sourceRoot":"","sources":["../../../../src/decorator/common/IsLongitude.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;AAE1C;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,IAAI,SAAS,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;AAC7F,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,iBAAqC;IAC/D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;YACtD,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,gDAAgD,EAC3E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from './ValidateBy';\nimport { isLatLong } from './IsLatLong';\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 + '$property must be a longitude string or number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsNotEmpty.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsNotEmpty.js new file mode 100644 index 00000000..9be59a9d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsNotEmpty.js @@ -0,0 +1,21 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const IS_NOT_EMPTY = 'isNotEmpty'; +/** + * Checks if given value is not empty (!== '', !== null, !== undefined). + */ +export function isNotEmpty(value) { + return value !== '' && value !== null && value !== undefined; +} +/** + * Checks if given value is not empty (!== '', !== null, !== undefined). + */ +export function IsNotEmpty(validationOptions) { + return ValidateBy({ + name: IS_NOT_EMPTY, + validator: { + validate: (value, args) => isNotEmpty(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property should not be empty', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsNotEmpty.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsNotEmpty.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsNotEmpty.js.map new file mode 100644 index 00000000..0bb538f1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsNotEmpty.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsNotEmpty.js","sourceRoot":"","sources":["../../../../src/decorator/common/IsNotEmpty.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,YAAY,GAAG,YAAY,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,iBAAqC;IAC9D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;YACrD,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,+BAA+B,EAAE,iBAAiB,CAAC;SAC5G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property should not be empty', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsNotIn.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsNotIn.js new file mode 100644 index 00000000..180b4091 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsNotIn.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const IS_NOT_IN = 'isNotIn'; +/** + * Checks if given value not in a array of allowed values. + */ +export function isNotIn(value, possibleValues) { + return !Array.isArray(possibleValues) || !possibleValues.some(possibleValue => possibleValue === value); +} +/** + * Checks if given value not in a array of allowed values. + */ +export function IsNotIn(values, validationOptions) { + return ValidateBy({ + name: IS_NOT_IN, + constraints: [values], + validator: { + validate: (value, args) => isNotIn(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property should not be one of the following values: $constraint1', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsNotIn.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsNotIn.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsNotIn.js.map new file mode 100644 index 00000000..5bb00cd2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsNotIn.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsNotIn.js","sourceRoot":"","sources":["../../../../src/decorator/common/IsNotIn.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,SAAS,GAAG,SAAS,CAAC;AAEnC;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,KAAc,EAAE,cAAkC;IACxE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,aAAa,KAAK,KAAK,CAAC,CAAC;AAC1G,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,MAAsB,EAAE,iBAAqC;IACnF,OAAO,UAAU,CACf;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACvE,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,mEAAmE,EAC9F,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property should not be one of the following values: $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsOptional.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsOptional.js new file mode 100644 index 00000000..4de1e9d2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsOptional.js @@ -0,0 +1,23 @@ +import { ValidationTypes } from '../../validation/ValidationTypes'; +import { ValidationMetadata } from '../../metadata/ValidationMetadata'; +import { getMetadataStorage } from '../../metadata/MetadataStorage'; +/** + * Checks if value is missing and if so, ignores all validators. + */ +export function IsOptional(validationOptions) { + return function (object, propertyName) { + const args = { + type: ValidationTypes.CONDITIONAL_VALIDATION, + target: object.constructor, + propertyName: propertyName, + constraints: [ + (object, value) => { + return object[propertyName] !== null && object[propertyName] !== undefined; + }, + ], + validationOptions: validationOptions, + }; + getMetadataStorage().addValidationMetadata(new ValidationMetadata(args)); + }; +} +//# sourceMappingURL=IsOptional.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsOptional.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsOptional.js.map new file mode 100644 index 00000000..8e94a78f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/IsOptional.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsOptional.js","sourceRoot":"","sources":["../../../../src/decorator/common/IsOptional.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,iBAAqC;IAC9D,OAAO,UAAU,MAAc,EAAE,YAAoB;QACnD,MAAM,IAAI,GAA2B;YACnC,IAAI,EAAE,eAAe,CAAC,sBAAsB;YAC5C,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,WAAW,EAAE;gBACX,CAAC,MAAW,EAAE,KAAU,EAAW,EAAE;oBACnC,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,SAAS,CAAC;gBAC7E,CAAC;aACF;YACD,iBAAiB,EAAE,iBAAiB;SACrC,CAAC;QACF,kBAAkB,EAAE,CAAC,qBAAqB,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;AACJ,CAAC","sourcesContent":["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 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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/NotEquals.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/NotEquals.js new file mode 100644 index 00000000..b7ca7d22 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/NotEquals.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const NOT_EQUALS = 'notEquals'; +/** + * Checks if value does not match ("!==") the comparison. + */ +export function notEquals(value, comparison) { + return value !== comparison; +} +/** + * Checks if value does not match ("!==") the comparison. + */ +export function NotEquals(comparison, validationOptions) { + return ValidateBy({ + name: NOT_EQUALS, + constraints: [comparison], + validator: { + validate: (value, args) => notEquals(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property should not be equal to $constraint1', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=NotEquals.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/NotEquals.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/NotEquals.js.map new file mode 100644 index 00000000..60db9b1b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/NotEquals.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NotEquals.js","sourceRoot":"","sources":["../../../../src/decorator/common/NotEquals.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAC;AAEtC;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc,EAAE,UAAmB;IAC3D,OAAO,KAAK,KAAK,UAAU,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,UAAe,EAAE,iBAAqC;IAC9E,OAAO,UAAU,CACf;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,CAAC,UAAU,CAAC;QACzB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACzE,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,+CAA+C,EAC1E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property should not be equal to $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/Validate.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/Validate.js new file mode 100644 index 00000000..dd227b38 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/Validate.js @@ -0,0 +1,37 @@ +import { ValidationMetadata } from '../../metadata/ValidationMetadata'; +import { getMetadataStorage } from '../../metadata/MetadataStorage'; +import { ValidationTypes } from '../../validation/ValidationTypes'; +import { ConstraintMetadata } from '../../metadata/ConstraintMetadata'; +/** + * Registers custom validator class. + */ +export function ValidatorConstraint(options) { + return function (target) { + const isAsync = options && options.async; + let name = options && options.name ? options.name : ''; + if (!name) { + name = target.name; + if (!name) + // generate name if it was not given + name = name.replace(/\.?([A-Z]+)/g, (x, y) => '_' + y.toLowerCase()).replace(/^_/, ''); + } + const metadata = new ConstraintMetadata(target, name, isAsync); + getMetadataStorage().addConstraintMetadata(metadata); + }; +} +export function Validate(constraintClass, constraintsOrValidationOptions, maybeValidationOptions) { + return function (object, propertyName) { + const args = { + type: ValidationTypes.CUSTOM_VALIDATION, + target: object.constructor, + propertyName: propertyName, + constraintCls: constraintClass, + constraints: Array.isArray(constraintsOrValidationOptions) ? constraintsOrValidationOptions : undefined, + validationOptions: !Array.isArray(constraintsOrValidationOptions) + ? constraintsOrValidationOptions + : maybeValidationOptions, + }; + getMetadataStorage().addValidationMetadata(new ValidationMetadata(args)); + }; +} +//# sourceMappingURL=Validate.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/Validate.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/Validate.js.map new file mode 100644 index 00000000..5493e699 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/Validate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Validate.js","sourceRoot":"","sources":["../../../../src/decorator/common/Validate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAA4C;IAC9E,OAAO,UAAU,MAAgB;QAC/B,MAAM,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;QACzC,IAAI,IAAI,GAAG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,GAAI,MAAc,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,IAAI;gBACP,oCAAoC;gBACpC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAI,CAAY,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SACtG;QACD,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/D,kBAAkB,EAAE,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC,CAAC;AACJ,CAAC;AAYD,MAAM,UAAU,QAAQ,CACtB,eAAyB,EACzB,8BAA0D,EAC1D,sBAA0C;IAE1C,OAAO,UAAU,MAAc,EAAE,YAAoB;QACnD,MAAM,IAAI,GAA2B;YACnC,IAAI,EAAE,eAAe,CAAC,iBAAiB;YACvC,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,aAAa,EAAE,eAAe;YAC9B,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,SAAS;YACvG,iBAAiB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,8BAA8B,CAAC;gBAC/D,CAAC,CAAC,8BAA8B;gBAChC,CAAC,CAAC,sBAAsB;SAC3B,CAAC;QACF,kBAAkB,EAAE,CAAC,qBAAqB,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;AACJ,CAAC","sourcesContent":["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 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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidateBy.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidateBy.js new file mode 100644 index 00000000..d48b3e71 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidateBy.js @@ -0,0 +1,20 @@ +import { registerDecorator } from '../../register-decorator'; +export function buildMessage(impl, validationOptions) { + return (validationArguments) => { + const eachPrefix = validationOptions && validationOptions.each ? 'each value in ' : ''; + return impl(eachPrefix, validationArguments); + }; +} +export function ValidateBy(options, validationOptions) { + return function (object, propertyName) { + registerDecorator({ + name: options.name, + target: object.constructor, + propertyName: propertyName, + options: validationOptions, + constraints: options.constraints, + validator: options.validator, + }); + }; +} +//# sourceMappingURL=ValidateBy.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidateBy.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidateBy.js.map new file mode 100644 index 00000000..5aedfa1e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidateBy.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidateBy.js","sourceRoot":"","sources":["../../../../src/decorator/common/ValidateBy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAW7D,MAAM,UAAU,YAAY,CAC1B,IAAgE,EAChE,iBAAqC;IAErC,OAAO,CAAC,mBAAyC,EAAU,EAAE;QAC3D,MAAM,UAAU,GAAG,iBAAiB,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QACvF,OAAO,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IAC/C,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAA0B,EAAE,iBAAqC;IAC1F,OAAO,UAAU,MAAc,EAAE,YAAoB;QACnD,iBAAiB,CAAC;YAChB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,OAAO,EAAE,iBAAiB;YAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { registerDecorator } from '../../register-decorator';\nimport { ValidationArguments } from '../../validation/ValidationArguments';\nimport { ValidatorConstraintInterface } from '../../validation/ValidatorConstraintInterface';\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 ? 'each value in ' : '';\n return impl(eachPrefix, validationArguments);\n };\n}\n\nexport function ValidateBy(options: ValidateByOptions, validationOptions?: ValidationOptions): PropertyDecorator {\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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidateIf.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidateIf.js new file mode 100644 index 00000000..a4fc4e79 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidateIf.js @@ -0,0 +1,19 @@ +import { ValidationTypes } from '../../validation/ValidationTypes'; +import { ValidationMetadata } from '../../metadata/ValidationMetadata'; +import { getMetadataStorage } from '../../metadata/MetadataStorage'; +/** + * Ignores the other validators on a property when the provided condition function returns false. + */ +export function ValidateIf(condition, validationOptions) { + return function (object, propertyName) { + const args = { + type: ValidationTypes.CONDITIONAL_VALIDATION, + target: object.constructor, + propertyName: propertyName, + constraints: [condition], + validationOptions: validationOptions, + }; + getMetadataStorage().addValidationMetadata(new ValidationMetadata(args)); + }; +} +//# sourceMappingURL=ValidateIf.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidateIf.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidateIf.js.map new file mode 100644 index 00000000..3c366feb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidateIf.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidateIf.js","sourceRoot":"","sources":["../../../../src/decorator/common/ValidateIf.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,SAA+C,EAC/C,iBAAqC;IAErC,OAAO,UAAU,MAAc,EAAE,YAAoB;QACnD,MAAM,IAAI,GAA2B;YACnC,IAAI,EAAE,eAAe,CAAC,sBAAsB;YAC5C,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,WAAW,EAAE,CAAC,SAAS,CAAC;YACxB,iBAAiB,EAAE,iBAAiB;SACrC,CAAC;QACF,kBAAkB,EAAE,CAAC,qBAAqB,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;AACJ,CAAC","sourcesContent":["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 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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidateNested.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidateNested.js new file mode 100644 index 00000000..6e29fd54 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidateNested.js @@ -0,0 +1,21 @@ +import { ValidationTypes } from '../../validation/ValidationTypes'; +import { ValidationMetadata } from '../../metadata/ValidationMetadata'; +import { getMetadataStorage } from '../../metadata/MetadataStorage'; +/** + * Objects / object arrays marked with this decorator will also be validated. + */ +export function ValidateNested(validationOptions) { + const opts = { ...validationOptions }; + const eachPrefix = opts.each ? 'each value in ' : ''; + opts.message = opts.message || eachPrefix + 'nested property $property must be either object or array'; + return function (object, propertyName) { + const args = { + type: ValidationTypes.NESTED_VALIDATION, + target: object.constructor, + propertyName: propertyName, + validationOptions: opts, + }; + getMetadataStorage().addValidationMetadata(new ValidationMetadata(args)); + }; +} +//# sourceMappingURL=ValidateNested.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidateNested.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidateNested.js.map new file mode 100644 index 00000000..430e1810 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidateNested.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidateNested.js","sourceRoot":"","sources":["../../../../src/decorator/common/ValidateNested.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,iBAAqC;IAClE,MAAM,IAAI,GAAsB,EAAE,GAAG,iBAAiB,EAAE,CAAC;IACzD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,UAAU,GAAG,0DAA0D,CAAC;IAEvG,OAAO,UAAU,MAAc,EAAE,YAAoB;QACnD,MAAM,IAAI,GAA2B;YACnC,IAAI,EAAE,eAAe,CAAC,iBAAiB;YACvC,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,iBAAiB,EAAE,IAAI;SACxB,CAAC;QACF,kBAAkB,EAAE,CAAC,qBAAqB,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;AACJ,CAAC","sourcesContent":["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 * 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 ? 'each value in ' : '';\n opts.message = opts.message || eachPrefix + 'nested property $property must be either object or array';\n\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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidatePromise.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidatePromise.js new file mode 100644 index 00000000..b14158d7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidatePromise.js @@ -0,0 +1,18 @@ +import { ValidationTypes } from '../../validation/ValidationTypes'; +import { ValidationMetadata } from '../../metadata/ValidationMetadata'; +import { getMetadataStorage } from '../../metadata/MetadataStorage'; +/** + * Resolve promise before validation + */ +export function ValidatePromise(validationOptions) { + return function (object, propertyName) { + const args = { + type: ValidationTypes.PROMISE_VALIDATION, + target: object.constructor, + propertyName: propertyName, + validationOptions: validationOptions, + }; + getMetadataStorage().addValidationMetadata(new ValidationMetadata(args)); + }; +} +//# sourceMappingURL=ValidatePromise.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidatePromise.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidatePromise.js.map new file mode 100644 index 00000000..aab10aa3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/common/ValidatePromise.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidatePromise.js","sourceRoot":"","sources":["../../../../src/decorator/common/ValidatePromise.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,iBAAqC;IACnE,OAAO,UAAU,MAAc,EAAE,YAAoB;QACnD,MAAM,IAAI,GAA2B;YACnC,IAAI,EAAE,eAAe,CAAC,kBAAkB;YACxC,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,iBAAiB,EAAE,iBAAiB;SACrC,CAAC;QACF,kBAAkB,EAAE,CAAC,qBAAqB,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;AACJ,CAAC","sourcesContent":["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 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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/date/MaxDate.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/date/MaxDate.js new file mode 100644 index 00000000..c09ac8d2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/date/MaxDate.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const MAX_DATE = 'maxDate'; +/** + * Checks if the value is a date that's before the specified date. + */ +export function maxDate(date, maxDate) { + return date instanceof Date && date.getTime() <= maxDate.getTime(); +} +/** + * Checks if the value is a date that's after the specified date. + */ +export function MaxDate(date, validationOptions) { + return ValidateBy({ + name: MAX_DATE, + constraints: [date], + validator: { + validate: (value, args) => maxDate(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => 'maximal allowed date for ' + eachPrefix + '$property is $constraint1', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=MaxDate.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/date/MaxDate.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/date/MaxDate.js.map new file mode 100644 index 00000000..d582377c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/date/MaxDate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MaxDate.js","sourceRoot":"","sources":["../../../../src/decorator/date/MaxDate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,QAAQ,GAAG,SAAS,CAAC;AAElC;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAAa,EAAE,OAAa;IAClD,OAAO,IAAI,YAAY,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;AACrE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAAU,EAAE,iBAAqC;IACvE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,CAAC,IAAI,CAAC;QACnB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACvE,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,2BAA2B,GAAG,UAAU,GAAG,2BAA2B,EACpF,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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): boolean {\n return date instanceof Date && date.getTime() <= 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, 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 => 'maximal allowed date for ' + eachPrefix + '$property is $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/date/MinDate.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/date/MinDate.js new file mode 100644 index 00000000..19854d62 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/date/MinDate.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const MIN_DATE = 'minDate'; +/** + * Checks if the value is a date that's after the specified date. + */ +export function minDate(date, minDate) { + return date instanceof Date && date.getTime() >= minDate.getTime(); +} +/** + * Checks if the value is a date that's after the specified date. + */ +export function MinDate(date, validationOptions) { + return ValidateBy({ + name: MIN_DATE, + constraints: [date], + validator: { + validate: (value, args) => minDate(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => 'minimal allowed date for ' + eachPrefix + '$property is $constraint1', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=MinDate.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/date/MinDate.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/date/MinDate.js.map new file mode 100644 index 00000000..44058a48 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/date/MinDate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MinDate.js","sourceRoot":"","sources":["../../../../src/decorator/date/MinDate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,QAAQ,GAAG,SAAS,CAAC;AAElC;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAAa,EAAE,OAAa;IAClD,OAAO,IAAI,YAAY,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;AACrE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAAU,EAAE,iBAAqC;IACvE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,CAAC,IAAI,CAAC;QACnB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACvE,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,2BAA2B,GAAG,UAAU,GAAG,2BAA2B,EACpF,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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): boolean {\n return date instanceof Date && date.getTime() >= 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, 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 => 'minimal allowed date for ' + eachPrefix + '$property is $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/decorators.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/decorators.js new file mode 100644 index 00000000..8e323547 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/decorators.js @@ -0,0 +1,131 @@ +// ------------------------------------------------------------------------- +// System +// ------------------------------------------------------------------------- +// ------------------------------------------------------------------------- +// Common checkers +// ------------------------------------------------------------------------- +export * from './common/Allow'; +export * from './common/IsDefined'; +export * from './common/IsOptional'; +export * from './common/Validate'; +export * from './common/ValidateBy'; +export * from './common/ValidateIf'; +export * from './common/ValidateNested'; +export * from './common/ValidatePromise'; +export * from './common/IsLatLong'; +export * from './common/IsLatitude'; +export * from './common/IsLongitude'; +export * from './common/Equals'; +export * from './common/NotEquals'; +export * from './common/IsEmpty'; +export * from './common/IsNotEmpty'; +export * from './common/IsIn'; +export * from './common/IsNotIn'; +// ------------------------------------------------------------------------- +// Number checkers +// ------------------------------------------------------------------------- +export * from './number/IsDivisibleBy'; +export * from './number/IsPositive'; +export * from './number/IsNegative'; +export * from './number/Max'; +export * from './number/Min'; +// ------------------------------------------------------------------------- +// Date checkers +// ------------------------------------------------------------------------- +export * from './date/MinDate'; +export * from './date/MaxDate'; +// ------------------------------------------------------------------------- +// String checkers +// ------------------------------------------------------------------------- +export * from './string/Contains'; +export * from './string/NotContains'; +export * from './string/IsAlpha'; +export * from './string/IsAlphanumeric'; +export * from './string/IsDecimal'; +export * from './string/IsAscii'; +export * from './string/IsBase64'; +export * from './string/IsByteLength'; +export * from './string/IsCreditCard'; +export * from './string/IsCurrency'; +export * from './string/IsEmail'; +export * from './string/IsFQDN'; +export * from './string/IsFullWidth'; +export * from './string/IsHalfWidth'; +export * from './string/IsVariableWidth'; +export * from './string/IsHexColor'; +export * from './string/IsHexadecimal'; +export * from './string/IsMacAddress'; +export * from './string/IsIP'; +export * from './string/IsPort'; +export * from './string/IsISBN'; +export * from './string/IsISIN'; +export * from './string/IsISO8601'; +export * from './string/IsJSON'; +export * from './string/IsJWT'; +export * from './string/IsLowercase'; +export * from './string/IsMobilePhone'; +export * from './string/IsISO31661Alpha2'; +export * from './string/IsISO31661Alpha3'; +export * from './string/IsMongoId'; +export * from './string/IsMultibyte'; +export * from './string/IsSurrogatePair'; +export * from './string/IsUrl'; +export * from './string/IsUUID'; +export * from './string/IsFirebasePushId'; +export * from './string/IsUppercase'; +export * from './string/Length'; +export * from './string/MaxLength'; +export * from './string/MinLength'; +export * from './string/Matches'; +export * from './string/IsPhoneNumber'; +export * from './string/IsMilitaryTime'; +export * from './string/IsHash'; +export * from './string/IsISSN'; +export * from './string/IsDateString'; +export * from './string/IsBooleanString'; +export * from './string/IsNumberString'; +export * from './string/IsBase32'; +export * from './string/IsBIC'; +export * from './string/IsBtcAddress'; +export * from './string/IsDataURI'; +export * from './string/IsEAN'; +export * from './string/IsEthereumAddress'; +export * from './string/IsHSL'; +export * from './string/IsIBAN'; +export * from './string/IsIdentityCard'; +export * from './string/IsISRC'; +export * from './string/IsLocale'; +export * from './string/IsMagnetURI'; +export * from './string/IsMimeType'; +export * from './string/IsOctal'; +export * from './string/IsPassportNumber'; +export * from './string/IsPostalCode'; +export * from './string/IsRFC3339'; +export * from './string/IsRgbColor'; +export * from './string/IsSemVer'; +// ------------------------------------------------------------------------- +// Type checkers +// ------------------------------------------------------------------------- +export * from './typechecker/IsBoolean'; +export * from './typechecker/IsDate'; +export * from './typechecker/IsNumber'; +export * from './typechecker/IsEnum'; +export * from './typechecker/IsInt'; +export * from './typechecker/IsString'; +export * from './typechecker/IsArray'; +export * from './typechecker/IsObject'; +// ------------------------------------------------------------------------- +// Array checkers +// ------------------------------------------------------------------------- +export * from './array/ArrayContains'; +export * from './array/ArrayNotContains'; +export * from './array/ArrayNotEmpty'; +export * from './array/ArrayMinSize'; +export * from './array/ArrayMaxSize'; +export * from './array/ArrayUnique'; +// ------------------------------------------------------------------------- +// Object checkers +// ------------------------------------------------------------------------- +export * from './object/IsNotEmptyObject'; +export * from './object/IsInstance'; +//# sourceMappingURL=decorators.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/decorators.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/decorators.js.map new file mode 100644 index 00000000..4409bf08 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/decorators.js.map @@ -0,0 +1 @@ +{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../src/decorator/decorators.ts"],"names":[],"mappings":"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","sourcesContent":["// -------------------------------------------------------------------------\n// System\n// -------------------------------------------------------------------------\n\n// -------------------------------------------------------------------------\n// Common checkers\n// -------------------------------------------------------------------------\n\nexport * from './common/Allow';\nexport * from './common/IsDefined';\nexport * from './common/IsOptional';\nexport * from './common/Validate';\nexport * from './common/ValidateBy';\nexport * from './common/ValidateIf';\nexport * from './common/ValidateNested';\nexport * from './common/ValidatePromise';\nexport * from './common/IsLatLong';\nexport * from './common/IsLatitude';\nexport * from './common/IsLongitude';\nexport * from './common/Equals';\nexport * from './common/NotEquals';\nexport * from './common/IsEmpty';\nexport * from './common/IsNotEmpty';\nexport * from './common/IsIn';\nexport * from './common/IsNotIn';\n\n// -------------------------------------------------------------------------\n// Number checkers\n// -------------------------------------------------------------------------\n\nexport * from './number/IsDivisibleBy';\nexport * from './number/IsPositive';\nexport * from './number/IsNegative';\nexport * from './number/Max';\nexport * from './number/Min';\n\n// -------------------------------------------------------------------------\n// Date checkers\n// -------------------------------------------------------------------------\n\nexport * from './date/MinDate';\nexport * from './date/MaxDate';\n\n// -------------------------------------------------------------------------\n// String checkers\n// -------------------------------------------------------------------------\n\nexport * from './string/Contains';\nexport * from './string/NotContains';\nexport * from './string/IsAlpha';\nexport * from './string/IsAlphanumeric';\nexport * from './string/IsDecimal';\nexport * from './string/IsAscii';\nexport * from './string/IsBase64';\nexport * from './string/IsByteLength';\nexport * from './string/IsCreditCard';\nexport * from './string/IsCurrency';\nexport * from './string/IsEmail';\nexport * from './string/IsFQDN';\nexport * from './string/IsFullWidth';\nexport * from './string/IsHalfWidth';\nexport * from './string/IsVariableWidth';\nexport * from './string/IsHexColor';\nexport * from './string/IsHexadecimal';\nexport * from './string/IsMacAddress';\nexport * from './string/IsIP';\nexport * from './string/IsPort';\nexport * from './string/IsISBN';\nexport * from './string/IsISIN';\nexport * from './string/IsISO8601';\nexport * from './string/IsJSON';\nexport * from './string/IsJWT';\nexport * from './string/IsLowercase';\nexport * from './string/IsMobilePhone';\nexport * from './string/IsISO31661Alpha2';\nexport * from './string/IsISO31661Alpha3';\nexport * from './string/IsMongoId';\nexport * from './string/IsMultibyte';\nexport * from './string/IsSurrogatePair';\nexport * from './string/IsUrl';\nexport * from './string/IsUUID';\nexport * from './string/IsFirebasePushId';\nexport * from './string/IsUppercase';\nexport * from './string/Length';\nexport * from './string/MaxLength';\nexport * from './string/MinLength';\nexport * from './string/Matches';\nexport * from './string/IsPhoneNumber';\nexport * from './string/IsMilitaryTime';\nexport * from './string/IsHash';\nexport * from './string/IsISSN';\nexport * from './string/IsDateString';\nexport * from './string/IsBooleanString';\nexport * from './string/IsNumberString';\nexport * from './string/IsBase32';\nexport * from './string/IsBIC';\nexport * from './string/IsBtcAddress';\nexport * from './string/IsDataURI';\nexport * from './string/IsEAN';\nexport * from './string/IsEthereumAddress';\nexport * from './string/IsHSL';\nexport * from './string/IsIBAN';\nexport * from './string/IsIdentityCard';\nexport * from './string/IsISRC';\nexport * from './string/IsLocale';\nexport * from './string/IsMagnetURI';\nexport * from './string/IsMimeType';\nexport * from './string/IsOctal';\nexport * from './string/IsPassportNumber';\nexport * from './string/IsPostalCode';\nexport * from './string/IsRFC3339';\nexport * from './string/IsRgbColor';\nexport * from './string/IsSemVer';\n\n// -------------------------------------------------------------------------\n// Type checkers\n// -------------------------------------------------------------------------\n\nexport * from './typechecker/IsBoolean';\nexport * from './typechecker/IsDate';\nexport * from './typechecker/IsNumber';\nexport * from './typechecker/IsEnum';\nexport * from './typechecker/IsInt';\nexport * from './typechecker/IsString';\nexport * from './typechecker/IsArray';\nexport * from './typechecker/IsObject';\n\n// -------------------------------------------------------------------------\n// Array checkers\n// -------------------------------------------------------------------------\n\nexport * from './array/ArrayContains';\nexport * from './array/ArrayNotContains';\nexport * from './array/ArrayNotEmpty';\nexport * from './array/ArrayMinSize';\nexport * from './array/ArrayMaxSize';\nexport * from './array/ArrayUnique';\n\n// -------------------------------------------------------------------------\n// Object checkers\n// -------------------------------------------------------------------------\n\nexport * from './object/IsNotEmptyObject';\nexport * from './object/IsInstance';\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/IsDivisibleBy.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/IsDivisibleBy.js new file mode 100644 index 00000000..2ec710d7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/IsDivisibleBy.js @@ -0,0 +1,23 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isDivisibleByValidator from 'validator/lib/isDivisibleBy'; +export const IS_DIVISIBLE_BY = 'isDivisibleBy'; +/** + * Checks if value is a number that's divisible by another. + */ +export function isDivisibleBy(value, num) { + return typeof value === 'number' && typeof num === 'number' && isDivisibleByValidator(String(value), num); +} +/** + * Checks if value is a number that's divisible by another. + */ +export function IsDivisibleBy(num, validationOptions) { + return ValidateBy({ + name: IS_DIVISIBLE_BY, + constraints: [num], + validator: { + validate: (value, args) => isDivisibleBy(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be divisible by $constraint1', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsDivisibleBy.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/IsDivisibleBy.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/IsDivisibleBy.js.map new file mode 100644 index 00000000..c3958df3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/IsDivisibleBy.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsDivisibleBy.js","sourceRoot":"","sources":["../../../../src/decorator/number/IsDivisibleBy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,sBAAsB,MAAM,6BAA6B,CAAC;AAEjE,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAC;AAE/C;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc,EAAE,GAAW;IACvD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;AAC5G,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,iBAAqC;IAC9E,OAAO,UAAU,CACf;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,CAAC,GAAG,CAAC;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC7E,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,6CAA6C,EACxE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be divisible by $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/IsNegative.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/IsNegative.js new file mode 100644 index 00000000..60b5e27c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/IsNegative.js @@ -0,0 +1,21 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const IS_NEGATIVE = 'isNegative'; +/** + * Checks if the value is a negative number smaller than zero. + */ +export function isNegative(value) { + return typeof value === 'number' && value < 0; +} +/** + * Checks if the value is a negative number smaller than zero. + */ +export function IsNegative(validationOptions) { + return ValidateBy({ + name: IS_NEGATIVE, + validator: { + validate: (value, args) => isNegative(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a negative number', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsNegative.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/IsNegative.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/IsNegative.js.map new file mode 100644 index 00000000..7513b47e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/IsNegative.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsNegative.js","sourceRoot":"","sources":["../../../../src/decorator/number/IsNegative.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC;AAExC;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,iBAAqC;IAC9D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;YACrD,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,qCAAqC,EAChE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a negative number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/IsPositive.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/IsPositive.js new file mode 100644 index 00000000..e5c14ae9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/IsPositive.js @@ -0,0 +1,21 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const IS_POSITIVE = 'isPositive'; +/** + * Checks if the value is a positive number greater than zero. + */ +export function isPositive(value) { + return typeof value === 'number' && value > 0; +} +/** + * Checks if the value is a positive number greater than zero. + */ +export function IsPositive(validationOptions) { + return ValidateBy({ + name: IS_POSITIVE, + validator: { + validate: (value, args) => isPositive(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a positive number', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsPositive.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/IsPositive.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/IsPositive.js.map new file mode 100644 index 00000000..1d4ba419 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/IsPositive.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsPositive.js","sourceRoot":"","sources":["../../../../src/decorator/number/IsPositive.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC;AAExC;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,iBAAqC;IAC9D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;YACrD,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,qCAAqC,EAChE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a positive number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/Max.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/Max.js new file mode 100644 index 00000000..8a450444 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/Max.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const MAX = 'max'; +/** + * Checks if the first number is less than or equal to the second. + */ +export function max(num, max) { + return typeof num === 'number' && typeof max === 'number' && num <= max; +} +/** + * Checks if the first number is less than or equal to the second. + */ +export function Max(maxValue, validationOptions) { + return ValidateBy({ + name: MAX, + constraints: [maxValue], + validator: { + validate: (value, args) => max(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must not be greater than $constraint1', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=Max.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/Max.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/Max.js.map new file mode 100644 index 00000000..c0b6d4d2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/Max.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Max.js","sourceRoot":"","sources":["../../../../src/decorator/number/Max.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC;AAEzB;;GAEG;AACH,MAAM,UAAU,GAAG,CAAC,GAAY,EAAE,GAAW;IAC3C,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,GAAG,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,GAAG,CAAC,QAAgB,EAAE,iBAAqC;IACzE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,CAAC,QAAQ,CAAC;QACvB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACnE,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,iDAAiD,EAC5E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 first number is less than or equal to the second.\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 + '$property must not be greater than $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/Min.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/Min.js new file mode 100644 index 00000000..18be626d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/Min.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const MIN = 'min'; +/** + * Checks if the first number is greater than or equal to the second. + */ +export function min(num, min) { + return typeof num === 'number' && typeof min === 'number' && num >= min; +} +/** + * Checks if the first number is greater than or equal to the second. + */ +export function Min(minValue, validationOptions) { + return ValidateBy({ + name: MIN, + constraints: [minValue], + validator: { + validate: (value, args) => min(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must not be less than $constraint1', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=Min.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/Min.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/Min.js.map new file mode 100644 index 00000000..aa599c52 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/number/Min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Min.js","sourceRoot":"","sources":["../../../../src/decorator/number/Min.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC;AAEzB;;GAEG;AACH,MAAM,UAAU,GAAG,CAAC,GAAY,EAAE,GAAW;IAC3C,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,GAAG,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,GAAG,CAAC,QAAgB,EAAE,iBAAqC;IACzE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,CAAC,QAAQ,CAAC;QACvB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACnE,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,8CAA8C,EACzE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 first number is greater than or equal to the second.\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 + '$property must not be less than $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/object/IsInstance.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/object/IsInstance.js new file mode 100644 index 00000000..5f978716 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/object/IsInstance.js @@ -0,0 +1,29 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const IS_INSTANCE = 'isInstance'; +/** + * Checks if the value is an instance of the specified object. + */ +export function isInstance(object, targetTypeConstructor) { + return (targetTypeConstructor && typeof targetTypeConstructor === 'function' && object instanceof targetTypeConstructor); +} +/** + * Checks if the value is an instance of the specified object. + */ +export function IsInstance(targetType, validationOptions) { + return ValidateBy({ + name: IS_INSTANCE, + constraints: [targetType], + validator: { + validate: (value, args) => isInstance(value, args.constraints[0]), + defaultMessage: buildMessage((eachPrefix, args) => { + if (args.constraints[0]) { + return eachPrefix + `$property must be an instance of ${args.constraints[0].name}`; + } + else { + return eachPrefix + `${IS_INSTANCE} decorator expects and object as value, but got falsy value.`; + } + }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsInstance.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/object/IsInstance.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/object/IsInstance.js.map new file mode 100644 index 00000000..098a3c1b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/object/IsInstance.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsInstance.js","sourceRoot":"","sources":["../../../../src/decorator/object/IsInstance.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC;AAExC;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,MAAe,EAAE,qBAAkD;IAC5F,OAAO,CACL,qBAAqB,IAAI,OAAO,qBAAqB,KAAK,UAAU,IAAI,MAAM,YAAY,qBAAqB,CAChH,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,UAAuC,EACvC,iBAAqC;IAErC,OAAO,UAAU,CACf;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,CAAC,UAAU,CAAC;QACzB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC1E,cAAc,EAAE,YAAY,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE;gBAChD,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;oBACvB,OAAO,UAAU,GAAG,oCAAoC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAc,EAAE,CAAC;iBAC9F;qBAAM;oBACL,OAAO,UAAU,GAAG,GAAG,WAAW,8DAA8D,CAAC;iBAClG;YACH,CAAC,EAAE,iBAAiB,CAAC;SACtB;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + `$property must be an instance of ${args.constraints[0].name as string}`;\n } else {\n return eachPrefix + `${IS_INSTANCE} decorator expects and object as value, but got falsy value.`;\n }\n }, validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/object/IsNotEmptyObject.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/object/IsNotEmptyObject.js new file mode 100644 index 00000000..dfb281f3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/object/IsNotEmptyObject.js @@ -0,0 +1,36 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import { isObject } from '../typechecker/IsObject'; +export const IS_NOT_EMPTY_OBJECT = 'isNotEmptyObject'; +/** + * Checks if the value is valid Object & not empty. + * Returns false if the value is not an object or an empty valid object. + */ +export function isNotEmptyObject(value, options) { + if (!isObject(value)) { + return false; + } + if ((options === null || options === void 0 ? void 0 : options.nullable) === true) { + return !Object.values(value).every(propertyValue => propertyValue === null || propertyValue === undefined); + } + for (const key in value) { + if (value.hasOwnProperty(key)) { + return true; + } + } + return false; +} +/** + * Checks if the value is valid Object & not empty. + * Returns false if the value is not an object or an empty valid object. + */ +export function IsNotEmptyObject(options, validationOptions) { + return ValidateBy({ + name: IS_NOT_EMPTY_OBJECT, + constraints: [options], + validator: { + validate: (value, args) => isNotEmptyObject(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a non-empty object', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsNotEmptyObject.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/object/IsNotEmptyObject.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/object/IsNotEmptyObject.js.map new file mode 100644 index 00000000..fe3c7f36 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/object/IsNotEmptyObject.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsNotEmptyObject.js","sourceRoot":"","sources":["../../../../src/decorator/object/IsNotEmptyObject.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,MAAM,CAAC,MAAM,mBAAmB,GAAG,kBAAkB,CAAC;AAEtD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc,EAAE,OAAgC;IAC/E,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QACpB,OAAO,KAAK,CAAC;KACd;IAED,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,MAAK,IAAI,EAAE;QAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,SAAS,CAAC,CAAC;KAC5G;IAED,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;QACvB,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YAC7B,OAAO,IAAI,CAAC;SACb;KACF;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAgC,EAChC,iBAAqC;IAErC,OAAO,UAAU,CACf;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAChF,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,sCAAsC,EACjE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 === true) {\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 + '$property must be a non-empty object',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/Contains.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/Contains.js new file mode 100644 index 00000000..6ed8fb30 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/Contains.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import containsValidator from 'validator/lib/contains'; +export const CONTAINS = 'contains'; +/** + * Checks if the string contains the seed. + * If given value is not a string, then it returns false. + */ +export function contains(value, seed) { + return typeof value === 'string' && containsValidator(value, seed); +} +/** + * Checks if the string contains the seed. + * If given value is not a string, then it returns false. + */ +export function Contains(seed, validationOptions) { + return ValidateBy({ + name: CONTAINS, + constraints: [seed], + validator: { + validate: (value, args) => contains(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must contain a $constraint1 string', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=Contains.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/Contains.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/Contains.js.map new file mode 100644 index 00000000..9bc3e9de --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/Contains.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Contains.js","sourceRoot":"","sources":["../../../../src/decorator/string/Contains.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AAEvD,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AAEnC;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc,EAAE,IAAY;IACnD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACrE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,iBAAqC;IAC1E,OAAO,UAAU,CACf;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,CAAC,IAAI,CAAC;QACnB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACxE,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,8CAA8C,EACzE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must contain a $constraint1 string',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsAlpha.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsAlpha.js new file mode 100644 index 00000000..95a198c5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsAlpha.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isAlphaValidator from 'validator/lib/isAlpha'; +export const IS_ALPHA = 'isAlpha'; +/** + * Checks if the string contains only letters (a-zA-Z). + * If given value is not a string, then it returns false. + */ +export function isAlpha(value, locale) { + return typeof value === 'string' && isAlphaValidator(value, locale); +} +/** + * Checks if the string contains only letters (a-zA-Z). + * If given value is not a string, then it returns false. + */ +export function IsAlpha(locale, validationOptions) { + return ValidateBy({ + name: IS_ALPHA, + constraints: [locale], + validator: { + validate: (value, args) => isAlpha(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must contain only letters (a-zA-Z)', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsAlpha.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsAlpha.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsAlpha.js.map new file mode 100644 index 00000000..0a100cbc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsAlpha.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsAlpha.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsAlpha.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AAGrD,MAAM,CAAC,MAAM,QAAQ,GAAG,SAAS,CAAC;AAElC;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,KAAc,EAAE,MAAgC;IACtE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,MAAe,EAAE,iBAAqC;IAC5E,OAAO,UAAU,CACf;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACvE,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,8CAA8C,EACzE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isAlphaValidator from 'validator/lib/isAlpha';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.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?: string, 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 + '$property must contain only letters (a-zA-Z)',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsAlphanumeric.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsAlphanumeric.js new file mode 100644 index 00000000..b53c2638 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsAlphanumeric.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isAlphanumericValidator from 'validator/lib/isAlphanumeric'; +export const IS_ALPHANUMERIC = 'isAlphanumeric'; +/** + * Checks if the string contains only letters and numbers. + * If given value is not a string, then it returns false. + */ +export function isAlphanumeric(value, locale) { + return typeof value === 'string' && isAlphanumericValidator(value, locale); +} +/** + * Checks if the string contains only letters and numbers. + * If given value is not a string, then it returns false. + */ +export function IsAlphanumeric(locale, validationOptions) { + return ValidateBy({ + name: IS_ALPHANUMERIC, + constraints: [locale], + validator: { + validate: (value, args) => isAlphanumeric(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must contain only letters and numbers', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsAlphanumeric.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsAlphanumeric.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsAlphanumeric.js.map new file mode 100644 index 00000000..157ea340 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsAlphanumeric.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsAlphanumeric.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsAlphanumeric.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,uBAAuB,MAAM,8BAA8B,CAAC;AAGnE,MAAM,CAAC,MAAM,eAAe,GAAG,gBAAgB,CAAC;AAEhD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc,EAAE,MAAuC;IACpF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC7E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAe,EAAE,iBAAqC;IACnF,OAAO,UAAU,CACf;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC9E,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,iDAAiD,EAC5E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isAlphanumericValidator from 'validator/lib/isAlphanumeric';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.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(locale?: string, validationOptions?: ValidationOptions): 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 + '$property must contain only letters and numbers',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsAscii.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsAscii.js new file mode 100644 index 00000000..39b15032 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsAscii.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isAsciiValidator from 'validator/lib/isAscii'; +export const IS_ASCII = 'isAscii'; +/** + * Checks if the string contains ASCII chars only. + * If given value is not a string, then it returns false. + */ +export function isAscii(value) { + return typeof value === 'string' && isAsciiValidator(value); +} +/** + * Checks if the string contains ASCII chars only. + * If given value is not a string, then it returns false. + */ +export function IsAscii(validationOptions) { + return ValidateBy({ + name: IS_ASCII, + validator: { + validate: (value, args) => isAscii(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must contain only ASCII characters', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsAscii.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsAscii.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsAscii.js.map new file mode 100644 index 00000000..5600ec08 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsAscii.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsAscii.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsAscii.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AAErD,MAAM,CAAC,MAAM,QAAQ,GAAG,SAAS,CAAC;AAElC;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,iBAAqC;IAC3D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;YAClD,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,8CAA8C,EACzE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must contain only ASCII characters',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBIC.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBIC.js new file mode 100644 index 00000000..84bafec7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBIC.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isBICValidator from 'validator/lib/isBIC'; +export const IS_BIC = 'isBIC'; +/** + * Check if a string is a BIC (Bank Identification Code) or SWIFT code. + * If given value is not a string, then it returns false. + */ +export function isBIC(value) { + return typeof value === 'string' && isBICValidator(value); +} +/** + * Check if a string is a BIC (Bank Identification Code) or SWIFT code. + * If given value is not a string, then it returns false. + */ +export function IsBIC(validationOptions) { + return ValidateBy({ + name: IS_BIC, + validator: { + validate: (value, args) => isBIC(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a BIC or SWIFT code', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsBIC.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBIC.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBIC.js.map new file mode 100644 index 00000000..31c237a6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBIC.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsBIC.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsBIC.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAEjD,MAAM,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC;AAE9B;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,iBAAqC;IACzD,OAAO,UAAU,CACf;QACE,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;YAChD,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,uCAAuC,EAClE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a BIC or SWIFT code',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBase32.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBase32.js new file mode 100644 index 00000000..834a8e33 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBase32.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isBase32Validator from 'validator/lib/isBase32'; +export const IS_BASE32 = 'isBase32'; +/** + * Checks if a string is base32 encoded. + * If given value is not a string, then it returns false. + */ +export function isBase32(value) { + return typeof value === 'string' && isBase32Validator(value); +} +/** + * Check if a string is base32 encoded. + * If given value is not a string, then it returns false. + */ +export function IsBase32(validationOptions) { + return ValidateBy({ + name: IS_BASE32, + validator: { + validate: (value, args) => isBase32(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be base32 encoded', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsBase32.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBase32.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBase32.js.map new file mode 100644 index 00000000..6b520b7d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBase32.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsBase32.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsBase32.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AAEvD,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC;AAEpC;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,iBAAqC;IAC5D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,SAAS;QACf,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;YACnD,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,kCAAkC,EAAE,iBAAiB,CAAC;SAC/G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be base32 encoded', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBase64.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBase64.js new file mode 100644 index 00000000..1bbdb5d3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBase64.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isBase64Validator from 'validator/lib/isBase64'; +export const IS_BASE64 = 'isBase64'; +/** + * Checks if a string is base64 encoded. + * If given value is not a string, then it returns false. + */ +export function isBase64(value) { + return typeof value === 'string' && isBase64Validator(value); +} +/** + * Checks if a string is base64 encoded. + * If given value is not a string, then it returns false. + */ +export function IsBase64(validationOptions) { + return ValidateBy({ + name: IS_BASE64, + validator: { + validate: (value, args) => isBase64(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be base64 encoded', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsBase64.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBase64.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBase64.js.map new file mode 100644 index 00000000..ea74f88c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBase64.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsBase64.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsBase64.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AAEvD,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC;AAEpC;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,iBAAqC;IAC5D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,SAAS;QACf,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;YACnD,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,kCAAkC,EAAE,iBAAiB,CAAC;SAC/G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isBase64Validator from 'validator/lib/isBase64';\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 isBase64(value: unknown): boolean {\n return typeof value === 'string' && isBase64Validator(value);\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(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_BASE64,\n validator: {\n validate: (value, args): boolean => isBase64(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be base64 encoded', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBooleanString.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBooleanString.js new file mode 100644 index 00000000..235c3c7c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBooleanString.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isBooleanValidator from 'validator/lib/isBoolean'; +export const IS_BOOLEAN_STRING = 'isBooleanString'; +/** + * Checks if a string is a boolean. + * If given value is not a string, then it returns false. + */ +export function isBooleanString(value) { + return typeof value === 'string' && isBooleanValidator(value); +} +/** + * Checks if a string is a boolean. + * If given value is not a string, then it returns false. + */ +export function IsBooleanString(validationOptions) { + return ValidateBy({ + name: IS_BOOLEAN_STRING, + validator: { + validate: (value, args) => isBooleanString(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a boolean string', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsBooleanString.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBooleanString.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBooleanString.js.map new file mode 100644 index 00000000..741dd3bd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBooleanString.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsBooleanString.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsBooleanString.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAEzD,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAEnD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,iBAAqC;IACnE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,iBAAiB;QACvB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;YAC1D,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,oCAAoC,EAC/D,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a boolean string',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBtcAddress.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBtcAddress.js new file mode 100644 index 00000000..21683b6c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBtcAddress.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isBtcAddressValidator from 'validator/lib/isBtcAddress'; +export const IS_BTC_ADDRESS = 'isBtcAddress'; +/** + * Check if the string is a valid BTC address. + * If given value is not a string, then it returns false. + */ +export function isBtcAddress(value) { + return typeof value === 'string' && isBtcAddressValidator(value); +} +/** + * Check if the string is a valid BTC address. + * If given value is not a string, then it returns false. + */ +export function IsBtcAddress(validationOptions) { + return ValidateBy({ + name: IS_BTC_ADDRESS, + validator: { + validate: (value, args) => isBtcAddress(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a BTC address', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsBtcAddress.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBtcAddress.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBtcAddress.js.map new file mode 100644 index 00000000..58438fb5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsBtcAddress.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsBtcAddress.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsBtcAddress.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,qBAAqB,MAAM,4BAA4B,CAAC;AAE/D,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAC;AAE7C;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,qBAAqB,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,iBAAqC;IAChE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,cAAc;QACpB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC;YACvD,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,iCAAiC,EAAE,iBAAiB,CAAC;SAC9G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a BTC address', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsByteLength.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsByteLength.js new file mode 100644 index 00000000..a70a31fe --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsByteLength.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isByteLengthValidator from 'validator/lib/isByteLength'; +export const IS_BYTE_LENGTH = 'isByteLength'; +/** + * Checks if the string's length (in bytes) falls in a range. + * If given value is not a string, then it returns false. + */ +export function isByteLength(value, min, max) { + return typeof value === 'string' && isByteLengthValidator(value, { min, max }); +} +/** + * Checks if the string's length (in bytes) falls in a range. + * If given value is not a string, then it returns false. + */ +export function IsByteLength(min, max, validationOptions) { + return ValidateBy({ + name: IS_BYTE_LENGTH, + constraints: [min, max], + validator: { + validate: (value, args) => isByteLength(value, args.constraints[0], args.constraints[1]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + "$property's byte length must fall into ($constraint1, $constraint2) range", validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsByteLength.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsByteLength.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsByteLength.js.map new file mode 100644 index 00000000..65fdbca0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsByteLength.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsByteLength.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsByteLength.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,qBAAqB,MAAM,4BAA4B,CAAC;AAE/D,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAC;AAE7C;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc,EAAE,GAAW,EAAE,GAAY;IACpE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,qBAAqB,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AACjF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,GAAY,EAAE,iBAAqC;IAC3F,OAAO,UAAU,CACf;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;QACvB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACjG,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,2EAA2E,EACtG,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + \"$property's byte length must fall into ($constraint1, $constraint2) range\",\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsCreditCard.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsCreditCard.js new file mode 100644 index 00000000..b1cff8dd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsCreditCard.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isCreditCardValidator from 'validator/lib/isCreditCard'; +export const IS_CREDIT_CARD = 'isCreditCard'; +/** + * Checks if the string is a credit card. + * If given value is not a string, then it returns false. + */ +export function isCreditCard(value) { + return typeof value === 'string' && isCreditCardValidator(value); +} +/** + * Checks if the string is a credit card. + * If given value is not a string, then it returns false. + */ +export function IsCreditCard(validationOptions) { + return ValidateBy({ + name: IS_CREDIT_CARD, + validator: { + validate: (value, args) => isCreditCard(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a credit card', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsCreditCard.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsCreditCard.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsCreditCard.js.map new file mode 100644 index 00000000..6cfc2bfa --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsCreditCard.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsCreditCard.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsCreditCard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,qBAAqB,MAAM,4BAA4B,CAAC;AAE/D,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAC;AAE7C;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,qBAAqB,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,iBAAqC;IAChE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,cAAc;QACpB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC;YACvD,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,iCAAiC,EAAE,iBAAiB,CAAC;SAC9G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a credit card', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsCurrency.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsCurrency.js new file mode 100644 index 00000000..c2d083ee --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsCurrency.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isCurrencyValidator from 'validator/lib/isCurrency'; +export const IS_CURRENCY = 'isCurrency'; +/** + * Checks if the string is a valid currency amount. + * If given value is not a string, then it returns false. + */ +export function isCurrency(value, options) { + return typeof value === 'string' && isCurrencyValidator(value, options); +} +/** + * Checks if the string is a valid currency amount. + * If given value is not a string, then it returns false. + */ +export function IsCurrency(options, validationOptions) { + return ValidateBy({ + name: IS_CURRENCY, + constraints: [options], + validator: { + validate: (value, args) => isCurrency(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a currency', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsCurrency.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsCurrency.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsCurrency.js.map new file mode 100644 index 00000000..9e8eab7f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsCurrency.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsCurrency.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsCurrency.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAG3D,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC;AAExC;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc,EAAE,OAAuC;IAChF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC1E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CACxB,OAAuC,EACvC,iBAAqC;IAErC,OAAO,UAAU,CACf;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC1E,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,8BAA8B,EAAE,iBAAiB,CAAC;SAC3G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isCurrencyValidator from 'validator/lib/isCurrency';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.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?: ValidatorJS.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 + '$property must be a currency', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsDataURI.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsDataURI.js new file mode 100644 index 00000000..abb73cc5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsDataURI.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isDataURIValidator from 'validator/lib/isDataURI'; +export const IS_DATA_URI = 'isDataURI'; +/** + * Check if the string is a data uri format. + * If given value is not a string, then it returns false. + */ +export function isDataURI(value) { + return typeof value === 'string' && isDataURIValidator(value); +} +/** + * Check if the string is a data uri format. + * If given value is not a string, then it returns false. + */ +export function IsDataURI(validationOptions) { + return ValidateBy({ + name: IS_DATA_URI, + validator: { + validate: (value, args) => isDataURI(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a data uri format', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsDataURI.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsDataURI.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsDataURI.js.map new file mode 100644 index 00000000..ee3ec1e5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsDataURI.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsDataURI.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsDataURI.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAEzD,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC;AAEvC;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,iBAAqC;IAC7D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;YACpD,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,qCAAqC,EAChE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a data uri format',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsDateString.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsDateString.js new file mode 100644 index 00000000..b70ccab6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsDateString.js @@ -0,0 +1,23 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import { isISO8601 } from './IsISO8601'; +export const IS_DATE_STRING = 'isDateString'; +/** + * Alias for IsISO8601 validator + */ +export function isDateString(value, options) { + return isISO8601(value, options); +} +/** + * Alias for IsISO8601 validator + */ +export function IsDateString(options, validationOptions) { + return ValidateBy({ + name: IS_DATE_STRING, + constraints: [options], + validator: { + validate: (value, args) => isDateString(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a valid ISO 8601 date string', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsDateString.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsDateString.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsDateString.js.map new file mode 100644 index 00000000..9fcb8691 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsDateString.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsDateString.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsDateString.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAC;AAE7C;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc,EAAE,OAAsC;IACjF,OAAO,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAsC,EACtC,iBAAqC;IAErC,OAAO,UAAU,CACf;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC;YACvD,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,gDAAgD,EAC3E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport ValidatorJS from 'validator';\nimport { isISO8601 } from './IsISO8601';\n\nexport const IS_DATE_STRING = 'isDateString';\n\n/**\n * Alias for IsISO8601 validator\n */\nexport function isDateString(value: unknown, options?: ValidatorJS.IsISO8601Options): boolean {\n return isISO8601(value, options);\n}\n\n/**\n * Alias for IsISO8601 validator\n */\nexport function IsDateString(\n options?: ValidatorJS.IsISO8601Options,\n validationOptions?: ValidationOptions\n): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_DATE_STRING,\n constraints: [options],\n validator: {\n validate: (value, args): boolean => isDateString(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + '$property must be a valid ISO 8601 date string',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsDecimal.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsDecimal.js new file mode 100644 index 00000000..82134fb5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsDecimal.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isDecimalValidator from 'validator/lib/isDecimal'; +export const IS_DECIMAL = 'isDecimal'; +/** + * Checks if the string is a valid decimal. + * If given value is not a string, then it returns false. + */ +export function isDecimal(value, options) { + return typeof value === 'string' && isDecimalValidator(value, options); +} +/** + * Checks if the string contains only letters and numbers. + * If given value is not a string, then it returns false. + */ +export function IsDecimal(options, validationOptions) { + return ValidateBy({ + name: IS_DECIMAL, + constraints: [options], + validator: { + validate: (value, args) => isDecimal(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property is not a valid decimal number.', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsDecimal.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsDecimal.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsDecimal.js.map new file mode 100644 index 00000000..524a6e18 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsDecimal.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsDecimal.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsDecimal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAGzD,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAC;AAEtC;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc,EAAE,OAAsC;IAC9E,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CACvB,OAAsC,EACtC,iBAAqC;IAErC,OAAO,UAAU,CACf;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACzE,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,0CAA0C,EACrE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isDecimalValidator from 'validator/lib/isDecimal';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.IsDecimalOptions): boolean {\n return typeof value === 'string' && isDecimalValidator(value, options);\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 IsDecimal(\n options?: ValidatorJS.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 + '$property is not a valid decimal number.',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsEAN.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsEAN.js new file mode 100644 index 00000000..50adc82a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsEAN.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isEANValidator from 'validator/lib/isEAN'; +export const IS_EAN = 'isEAN'; +/** + * Check if the string is an EAN (European Article Number). + * If given value is not a string, then it returns false. + */ +export function isEAN(value) { + return typeof value === 'string' && isEANValidator(value); +} +/** + * Check if the string is an EAN (European Article Number). + * If given value is not a string, then it returns false. + */ +export function IsEAN(validationOptions) { + return ValidateBy({ + name: IS_EAN, + validator: { + validate: (value, args) => isEAN(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be an EAN (European Article Number)', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsEAN.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsEAN.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsEAN.js.map new file mode 100644 index 00000000..14db0518 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsEAN.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsEAN.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsEAN.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAEjD,MAAM,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC;AAE9B;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,iBAAqC;IACzD,OAAO,UAAU,CACf;QACE,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;YAChD,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,oDAAoD,EAC/E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be an EAN (European Article Number)',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsEmail.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsEmail.js new file mode 100644 index 00000000..2088071f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsEmail.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isEmailValidator from 'validator/lib/isEmail'; +export const IS_EMAIL = 'isEmail'; +/** + * Checks if the string is an email. + * If given value is not a string, then it returns false. + */ +export function isEmail(value, options) { + return typeof value === 'string' && isEmailValidator(value, options); +} +/** + * Checks if the string is an email. + * If given value is not a string, then it returns false. + */ +export function IsEmail(options, validationOptions) { + return ValidateBy({ + name: IS_EMAIL, + constraints: [options], + validator: { + validate: (value, args) => isEmail(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be an email', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsEmail.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsEmail.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsEmail.js.map new file mode 100644 index 00000000..bec3f645 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsEmail.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsEmail.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsEmail.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AAGrD,MAAM,CAAC,MAAM,QAAQ,GAAG,SAAS,CAAC;AAElC;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,KAAc,EAAE,OAAoC;IAC1E,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACvE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CACrB,OAAoC,EACpC,iBAAqC;IAErC,OAAO,UAAU,CACf;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACvE,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,4BAA4B,EAAE,iBAAiB,CAAC;SACzG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isEmailValidator from 'validator/lib/isEmail';\nimport ValidatorJS from 'validator';\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 isEmail(value: unknown, options?: ValidatorJS.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?: ValidatorJS.IsEmailOptions,\n validationOptions?: ValidationOptions\n): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_EMAIL,\n constraints: [options],\n validator: {\n validate: (value, args): boolean => isEmail(value, args.constraints[0]),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be an email', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsEthereumAddress.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsEthereumAddress.js new file mode 100644 index 00000000..16ea725c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsEthereumAddress.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isEthereumAddressValidator from 'validator/lib/isEthereumAddress'; +export const IS_ETHEREUM_ADDRESS = 'isEthereumAddress'; +/** + * Check if the string is an Ethereum address using basic regex. Does not validate address checksums. + * If given value is not a string, then it returns false. + */ +export function isEthereumAddress(value) { + return typeof value === 'string' && isEthereumAddressValidator(value); +} +/** + * Check if the string is an Ethereum address using basic regex. Does not validate address checksums. + * If given value is not a string, then it returns false. + */ +export function IsEthereumAddress(validationOptions) { + return ValidateBy({ + name: IS_ETHEREUM_ADDRESS, + validator: { + validate: (value, args) => isEthereumAddress(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be an Ethereum address', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsEthereumAddress.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsEthereumAddress.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsEthereumAddress.js.map new file mode 100644 index 00000000..91084607 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsEthereumAddress.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsEthereumAddress.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsEthereumAddress.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,0BAA0B,MAAM,iCAAiC,CAAC;AAEzE,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AAEvD;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,0BAA0B,CAAC,KAAK,CAAC,CAAC;AACxE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,iBAAqC;IACrE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,mBAAmB;QACzB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC;YAC5D,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,uCAAuC,EAClE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be an Ethereum address',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsFQDN.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsFQDN.js new file mode 100644 index 00000000..57ecbf6f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsFQDN.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isFqdnValidator from 'validator/lib/isFQDN'; +export const IS_FQDN = 'isFqdn'; +/** + * Checks if the string is a fully qualified domain name (e.g. domain.com). + * If given value is not a string, then it returns false. + */ +export function isFQDN(value, options) { + return typeof value === 'string' && isFqdnValidator(value, options); +} +/** + * Checks if the string is a fully qualified domain name (e.g. domain.com). + * If given value is not a string, then it returns false. + */ +export function IsFQDN(options, validationOptions) { + return ValidateBy({ + name: IS_FQDN, + constraints: [options], + validator: { + validate: (value, args) => isFQDN(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a valid domain name', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsFQDN.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsFQDN.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsFQDN.js.map new file mode 100644 index 00000000..6b6c5359 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsFQDN.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsFQDN.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsFQDN.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,eAAe,MAAM,sBAAsB,CAAC;AAGnD,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc,EAAE,OAAmC;IACxE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,OAAmC,EAAE,iBAAqC;IAC/F,OAAO,UAAU,CACf;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtE,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,uCAAuC,EAClE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isFqdnValidator from 'validator/lib/isFQDN';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.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?: ValidatorJS.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 + '$property must be a valid domain name',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsFirebasePushId.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsFirebasePushId.js new file mode 100644 index 00000000..b83dd678 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsFirebasePushId.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const IS_FIREBASE_PUSH_ID = 'IsFirebasePushId'; +/** + * Checks if the string is a Firebase Push Id + * If given value is not a Firebase Push Id, it returns false + */ +export function isFirebasePushId(value) { + const webSafeRegex = /^[a-zA-Z0-9_-]*$/; + return typeof value === 'string' && value.length === 20 && webSafeRegex.test(value); +} +/** + * Checks if the string is a Firebase Push Id + * If given value is not a Firebase Push Id, it returns false + */ +export function IsFirebasePushId(validationOptions) { + return ValidateBy({ + name: IS_FIREBASE_PUSH_ID, + validator: { + validate: (value, args) => isFirebasePushId(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a Firebase Push Id', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsFirebasePushId.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsFirebasePushId.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsFirebasePushId.js.map new file mode 100644 index 00000000..817a1378 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsFirebasePushId.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsFirebasePushId.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsFirebasePushId.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,mBAAmB,GAAG,kBAAkB,CAAC;AAEtD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,MAAM,YAAY,GAAG,kBAAkB,CAAC;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,iBAAqC;IACpE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,mBAAmB;QACzB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAC3D,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,sCAAsC,EACjE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a Firebase Push Id',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsFullWidth.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsFullWidth.js new file mode 100644 index 00000000..089b6d21 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsFullWidth.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isFullWidthValidator from 'validator/lib/isFullWidth'; +export const IS_FULL_WIDTH = 'isFullWidth'; +/** + * Checks if the string contains any full-width chars. + * If given value is not a string, then it returns false. + */ +export function isFullWidth(value) { + return typeof value === 'string' && isFullWidthValidator(value); +} +/** + * Checks if the string contains any full-width chars. + * If given value is not a string, then it returns false. + */ +export function IsFullWidth(validationOptions) { + return ValidateBy({ + name: IS_FULL_WIDTH, + validator: { + validate: (value, args) => isFullWidth(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must contain a full-width characters', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsFullWidth.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsFullWidth.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsFullWidth.js.map new file mode 100644 index 00000000..c7b87179 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsFullWidth.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsFullWidth.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsFullWidth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,oBAAoB,MAAM,2BAA2B,CAAC;AAE7D,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC;AAE3C;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,iBAAqC;IAC/D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,aAAa;QACnB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;YACtD,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,gDAAgD,EAC3E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must contain a full-width characters',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHSL.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHSL.js new file mode 100644 index 00000000..19f0222c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHSL.js @@ -0,0 +1,26 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isHSLValidator from 'validator/lib/isHSL'; +export const IS_HSL = 'isHSL'; +/** + * Check if the string is an HSL (hue, saturation, lightness, optional alpha) color based on CSS Colors Level 4 specification. + * Comma-separated format supported. Space-separated format supported with the exception of a few edge cases (ex: hsl(200grad+.1%62%/1)). + * If given value is not a string, then it returns false. + */ +export function isHSL(value) { + return typeof value === 'string' && isHSLValidator(value); +} +/** + * Check if the string is an HSL (hue, saturation, lightness, optional alpha) color based on CSS Colors Level 4 specification. + * Comma-separated format supported. Space-separated format supported with the exception of a few edge cases (ex: hsl(200grad+.1%62%/1)). + * If given value is not a string, then it returns false. + */ +export function IsHSL(validationOptions) { + return ValidateBy({ + name: IS_HSL, + validator: { + validate: (value, args) => isHSL(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a HSL color', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsHSL.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHSL.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHSL.js.map new file mode 100644 index 00000000..d96f7c1a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHSL.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsHSL.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsHSL.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAEjD,MAAM,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC;AAE9B;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,iBAAqC;IACzD,OAAO,UAAU,CACf;QACE,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;YAChD,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,+BAA+B,EAAE,iBAAiB,CAAC;SAC5G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a HSL color', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHalfWidth.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHalfWidth.js new file mode 100644 index 00000000..c659bd23 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHalfWidth.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isHalfWidthValidator from 'validator/lib/isHalfWidth'; +export const IS_HALF_WIDTH = 'isHalfWidth'; +/** + * Checks if the string contains any half-width chars. + * If given value is not a string, then it returns false. + */ +export function isHalfWidth(value) { + return typeof value === 'string' && isHalfWidthValidator(value); +} +/** + * Checks if the string contains any full-width chars. + * If given value is not a string, then it returns false. + */ +export function IsHalfWidth(validationOptions) { + return ValidateBy({ + name: IS_HALF_WIDTH, + validator: { + validate: (value, args) => isHalfWidth(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must contain a half-width characters', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsHalfWidth.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHalfWidth.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHalfWidth.js.map new file mode 100644 index 00000000..a964917d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHalfWidth.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsHalfWidth.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsHalfWidth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,oBAAoB,MAAM,2BAA2B,CAAC;AAE7D,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC;AAE3C;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,iBAAqC;IAC/D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,aAAa;QACnB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;YACtD,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,gDAAgD,EAC3E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 full-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 + '$property must contain a half-width characters',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHash.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHash.js new file mode 100644 index 00000000..60b43f76 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHash.js @@ -0,0 +1,27 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isHashValidator from 'validator/lib/isHash'; +export const IS_HASH = 'isHash'; +/** + * Check if the string is a hash of type algorithm. + * Algorithm is one of ['md4', 'md5', 'sha1', 'sha256', 'sha384', 'sha512', 'ripemd128', 'ripemd160', 'tiger128', + * 'tiger160', 'tiger192', 'crc32', 'crc32b'] + */ +export function isHash(value, algorithm) { + return typeof value === 'string' && isHashValidator(value, algorithm); +} +/** + * Check if the string is a hash of type algorithm. + * Algorithm is one of ['md4', 'md5', 'sha1', 'sha256', 'sha384', 'sha512', 'ripemd128', 'ripemd160', 'tiger128', + * 'tiger160', 'tiger192', 'crc32', 'crc32b'] + */ +export function IsHash(algorithm, validationOptions) { + return ValidateBy({ + name: IS_HASH, + constraints: [algorithm], + validator: { + validate: (value, args) => isHash(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a hash of type $constraint1', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsHash.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHash.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHash.js.map new file mode 100644 index 00000000..3e2ab93d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHash.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsHash.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsHash.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,eAAe,MAAM,sBAAsB,CAAC;AAGnD,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc,EAAE,SAAoC;IACzE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACxE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,SAAiB,EAAE,iBAAqC;IAC7E,OAAO,UAAU,CACf;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtE,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,+CAA+C,EAC1E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isHashValidator from 'validator/lib/isHash';\nimport ValidatorJS from 'validator';\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: ValidatorJS.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 + '$property must be a hash of type $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHexColor.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHexColor.js new file mode 100644 index 00000000..ac0eabb2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHexColor.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isHexColorValidator from 'validator/lib/isHexColor'; +export const IS_HEX_COLOR = 'isHexColor'; +/** + * Checks if the string is a hexadecimal color. + * If given value is not a string, then it returns false. + */ +export function isHexColor(value) { + return typeof value === 'string' && isHexColorValidator(value); +} +/** + * Checks if the string is a hexadecimal color. + * If given value is not a string, then it returns false. + */ +export function IsHexColor(validationOptions) { + return ValidateBy({ + name: IS_HEX_COLOR, + validator: { + validate: (value, args) => isHexColor(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a hexadecimal color', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsHexColor.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHexColor.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHexColor.js.map new file mode 100644 index 00000000..c1f7a34e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHexColor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsHexColor.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsHexColor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAE3D,MAAM,CAAC,MAAM,YAAY,GAAG,YAAY,CAAC;AAEzC;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,iBAAqC;IAC9D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;YACrD,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,uCAAuC,EAClE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a hexadecimal color',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHexadecimal.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHexadecimal.js new file mode 100644 index 00000000..aa64619d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHexadecimal.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isHexadecimalValidator from 'validator/lib/isHexadecimal'; +export const IS_HEXADECIMAL = 'isHexadecimal'; +/** + * Checks if the string is a hexadecimal number. + * If given value is not a string, then it returns false. + */ +export function isHexadecimal(value) { + return typeof value === 'string' && isHexadecimalValidator(value); +} +/** + * Checks if the string is a hexadecimal number. + * If given value is not a string, then it returns false. + */ +export function IsHexadecimal(validationOptions) { + return ValidateBy({ + name: IS_HEXADECIMAL, + validator: { + validate: (value, args) => isHexadecimal(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a hexadecimal number', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsHexadecimal.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHexadecimal.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHexadecimal.js.map new file mode 100644 index 00000000..1b6a66d8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsHexadecimal.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsHexadecimal.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsHexadecimal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,sBAAsB,MAAM,6BAA6B,CAAC;AAEjE,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC;AAE9C;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACpE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,iBAAqC;IACjE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,cAAc;QACpB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC;YACxD,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,wCAAwC,EACnE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a hexadecimal number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsIBAN.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsIBAN.js new file mode 100644 index 00000000..14465de2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsIBAN.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isIBANValidator from 'validator/lib/isIBAN'; +export const IS_IBAN = 'isIBAN'; +/** + * Check if a string is a IBAN (International Bank Account Number). + * If given value is not a string, then it returns false. + */ +export function isIBAN(value) { + return typeof value === 'string' && isIBANValidator(value); +} +/** + * Check if a string is a IBAN (International Bank Account Number). + * If given value is not a string, then it returns false. + */ +export function IsIBAN(validationOptions) { + return ValidateBy({ + name: IS_IBAN, + validator: { + validate: (value, args) => isIBAN(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be an IBAN', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsIBAN.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsIBAN.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsIBAN.js.map new file mode 100644 index 00000000..1d763841 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsIBAN.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsIBAN.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsIBAN.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,eAAe,MAAM,sBAAsB,CAAC;AAEnD,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,iBAAqC;IAC1D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,OAAO;QACb,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;YACjD,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,2BAA2B,EAAE,iBAAiB,CAAC;SACxG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be an IBAN', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsIP.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsIP.js new file mode 100644 index 00000000..c1757649 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsIP.js @@ -0,0 +1,27 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isIPValidator from 'validator/lib/isIP'; +export const IS_IP = 'isIp'; +/** + * Checks if the string is an IP (version 4 or 6). + * If given value is not a string, then it returns false. + */ +export function isIP(value, version) { + /* eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion */ + const versionStr = version ? `${version}` : undefined; + return typeof value === 'string' && isIPValidator(value, versionStr); +} +/** + * Checks if the string is an IP (version 4 or 6). + * If given value is not a string, then it returns false. + */ +export function IsIP(version, validationOptions) { + return ValidateBy({ + name: IS_IP, + constraints: [version], + validator: { + validate: (value, args) => isIP(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be an ip address', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsIP.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsIP.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsIP.js.map new file mode 100644 index 00000000..b9779584 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsIP.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsIP.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsIP.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAI/C,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC;AAE5B;;;GAGG;AACH,MAAM,UAAU,IAAI,CAAC,KAAc,EAAE,OAAqB;IACxD,+EAA+E;IAC/E,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAE,GAAG,OAAO,EAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AACvE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,IAAI,CAAC,OAAqB,EAAE,iBAAqC;IAC/E,OAAO,UAAU,CACf;QACE,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACpE,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,iCAAiC,EAAE,iBAAiB,CAAC;SAC9G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be an ip address', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISBN.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISBN.js new file mode 100644 index 00000000..fc4fcb82 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISBN.js @@ -0,0 +1,27 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isIsbnValidator from 'validator/lib/isISBN'; +export const IS_ISBN = 'isIsbn'; +/** + * Checks if the string is an ISBN (version 10 or 13). + * If given value is not a string, then it returns false. + */ +export function isISBN(value, version) { + /* eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion */ + const versionStr = version ? `${version}` : undefined; + return typeof value === 'string' && isIsbnValidator(value, versionStr); +} +/** + * Checks if the string is an ISBN (version 10 or 13). + * If given value is not a string, then it returns false. + */ +export function IsISBN(version, validationOptions) { + return ValidateBy({ + name: IS_ISBN, + constraints: [version], + validator: { + validate: (value, args) => isISBN(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be an ISBN', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsISBN.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISBN.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISBN.js.map new file mode 100644 index 00000000..387883e6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISBN.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsISBN.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsISBN.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,eAAe,MAAM,sBAAsB,CAAC;AAInD,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc,EAAE,OAAuB;IAC5D,+EAA+E;IAC/E,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAE,GAAG,OAAO,EAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AACzE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,OAAuB,EAAE,iBAAqC;IACnF,OAAO,UAAU,CACf;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtE,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,2BAA2B,EAAE,iBAAiB,CAAC;SACxG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be an ISBN', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISIN.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISIN.js new file mode 100644 index 00000000..5c4b837d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISIN.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isIsinValidator from 'validator/lib/isISIN'; +export const IS_ISIN = 'isIsin'; +/** + * Checks if the string is an ISIN (stock/security identifier). + * If given value is not a string, then it returns false. + */ +export function isISIN(value) { + return typeof value === 'string' && isIsinValidator(value); +} +/** + * Checks if the string is an ISIN (stock/security identifier). + * If given value is not a string, then it returns false. + */ +export function IsISIN(validationOptions) { + return ValidateBy({ + name: IS_ISIN, + validator: { + validate: (value, args) => isISIN(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be an ISIN (stock/security identifier)', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsISIN.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISIN.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISIN.js.map new file mode 100644 index 00000000..59949c34 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISIN.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsISIN.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsISIN.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,eAAe,MAAM,sBAAsB,CAAC;AAEnD,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,iBAAqC;IAC1D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,OAAO;QACb,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;YACjD,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,uDAAuD,EAClF,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be an ISIN (stock/security identifier)',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISO31661Alpha2.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISO31661Alpha2.js new file mode 100644 index 00000000..5b8a1b28 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISO31661Alpha2.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isISO31661Alpha2Validator from 'validator/lib/isISO31661Alpha2'; +export const IS_ISO31661_ALPHA_2 = 'isISO31661Alpha2'; +/** + * 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. + */ +export function isISO31661Alpha2(value) { + return typeof value === 'string' && isISO31661Alpha2Validator(value); +} +/** + * 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. + */ +export function IsISO31661Alpha2(validationOptions) { + return ValidateBy({ + name: IS_ISO31661_ALPHA_2, + validator: { + validate: (value, args) => isISO31661Alpha2(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a valid ISO31661 Alpha2 code', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsISO31661Alpha2.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISO31661Alpha2.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISO31661Alpha2.js.map new file mode 100644 index 00000000..0e21d4f1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISO31661Alpha2.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsISO31661Alpha2.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsISO31661Alpha2.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,yBAAyB,MAAM,gCAAgC,CAAC;AAEvE,MAAM,CAAC,MAAM,mBAAmB,GAAG,kBAAkB,CAAC;AAEtD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,yBAAyB,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,iBAAqC;IACpE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,mBAAmB;QACzB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAC3D,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,gDAAgD,EAC3E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a valid ISO31661 Alpha2 code',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISO31661Alpha3.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISO31661Alpha3.js new file mode 100644 index 00000000..ae4d85d8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISO31661Alpha3.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isISO31661Alpha3Validator from 'validator/lib/isISO31661Alpha3'; +export const IS_ISO31661_ALPHA_3 = 'isISO31661Alpha3'; +/** + * 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. + */ +export function isISO31661Alpha3(value) { + return typeof value === 'string' && isISO31661Alpha3Validator(value); +} +/** + * 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. + */ +export function IsISO31661Alpha3(validationOptions) { + return ValidateBy({ + name: IS_ISO31661_ALPHA_3, + validator: { + validate: (value, args) => isISO31661Alpha3(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a valid ISO31661 Alpha3 code', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsISO31661Alpha3.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISO31661Alpha3.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISO31661Alpha3.js.map new file mode 100644 index 00000000..22349a82 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISO31661Alpha3.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsISO31661Alpha3.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsISO31661Alpha3.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,yBAAyB,MAAM,gCAAgC,CAAC;AAEvE,MAAM,CAAC,MAAM,mBAAmB,GAAG,kBAAkB,CAAC;AAEtD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,yBAAyB,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,iBAAqC;IACpE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,mBAAmB;QACzB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAC3D,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,gDAAgD,EAC3E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a valid ISO31661 Alpha3 code',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISO8601.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISO8601.js new file mode 100644 index 00000000..dbfb5ae4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISO8601.js @@ -0,0 +1,27 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isIso8601Validator from 'validator/lib/isISO8601'; +export const IS_ISO8601 = 'isIso8601'; +/** + * Checks if the string is a valid ISO 8601 date. + * If given value is not a string, then it returns false. + * Use the option strict = true for additional checks for a valid date, e.g. invalidates dates like 2019-02-29. + */ +export function isISO8601(value, options) { + return typeof value === 'string' && isIso8601Validator(value, options); +} +/** + * Checks if the string is a valid ISO 8601 date. + * If given value is not a string, then it returns false. + * Use the option strict = true for additional checks for a valid date, e.g. invalidates dates like 2019-02-29. + */ +export function IsISO8601(options, validationOptions) { + return ValidateBy({ + name: IS_ISO8601, + constraints: [options], + validator: { + validate: (value, args) => isISO8601(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a valid ISO 8601 date string', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsISO8601.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISO8601.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISO8601.js.map new file mode 100644 index 00000000..3ca58087 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISO8601.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsISO8601.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsISO8601.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAGzD,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAC;AAEtC;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc,EAAE,OAAsC;IAC9E,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CACvB,OAAsC,EACtC,iBAAqC;IAErC,OAAO,UAAU,CACf;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACzE,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,gDAAgD,EAC3E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isIso8601Validator from 'validator/lib/isISO8601';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.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?: ValidatorJS.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 + '$property must be a valid ISO 8601 date string',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISRC.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISRC.js new file mode 100644 index 00000000..8de24e18 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISRC.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isISRCValidator from 'validator/lib/isISRC'; +export const IS_ISRC = 'isISRC'; +/** + * Check if the string is a ISRC. + * If given value is not a string, then it returns false. + */ +export function isISRC(value) { + return typeof value === 'string' && isISRCValidator(value); +} +/** + * Check if the string is a ISRC. + * If given value is not a string, then it returns false. + */ +export function IsISRC(validationOptions) { + return ValidateBy({ + name: IS_ISRC, + validator: { + validate: (value, args) => isISRC(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be an ISRC', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsISRC.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISRC.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISRC.js.map new file mode 100644 index 00000000..6d79b0b3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISRC.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsISRC.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsISRC.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,eAAe,MAAM,sBAAsB,CAAC;AAEnD,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,iBAAqC;IAC1D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,OAAO;QACb,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;YACjD,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,2BAA2B,EAAE,iBAAiB,CAAC;SACxG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be an ISRC', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISSN.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISSN.js new file mode 100644 index 00000000..5e9d61c5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISSN.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isISSNValidator from 'validator/lib/isISSN'; +export const IS_ISSN = 'isISSN'; +/** + * Checks if the string is a ISSN. + * If given value is not a string, then it returns false. + */ +export function isISSN(value, options) { + return typeof value === 'string' && isISSNValidator(value, options); +} +/** + * Checks if the string is a ISSN. + * If given value is not a string, then it returns false. + */ +export function IsISSN(options, validationOptions) { + return ValidateBy({ + name: IS_ISSN, + constraints: [options], + validator: { + validate: (value, args) => isISSN(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a ISSN', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsISSN.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISSN.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISSN.js.map new file mode 100644 index 00000000..fd75abf4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsISSN.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsISSN.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsISSN.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,eAAe,MAAM,sBAAsB,CAAC;AAGnD,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc,EAAE,OAAmC;IACxE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,OAAmC,EAAE,iBAAqC;IAC/F,OAAO,UAAU,CACf;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtE,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,0BAA0B,EAAE,iBAAiB,CAAC;SACvG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isISSNValidator from 'validator/lib/isISSN';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.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?: ValidatorJS.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 + '$property must be a ISSN', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsIdentityCard.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsIdentityCard.js new file mode 100644 index 00000000..459b47e6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsIdentityCard.js @@ -0,0 +1,29 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isIdentityCardValidator from 'validator/lib/isIdentityCard'; +export const IS_IDENTITY_CARD = 'isIdentityCard'; +/** + * Check if the string is a valid identity card code. + * 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. + * Defaults to 'any'. + * If given value is not a string, then it returns false. + */ +export function isIdentityCard(value, locale) { + return typeof value === 'string' && isIdentityCardValidator(value, locale); +} +/** + * Check if the string is a valid identity card code. + * 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. + * Defaults to 'any'. + * If given value is not a string, then it returns false. + */ +export function IsIdentityCard(locale, validationOptions) { + return ValidateBy({ + name: IS_IDENTITY_CARD, + constraints: [locale], + validator: { + validate: (value, args) => isIdentityCard(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a identity card number', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsIdentityCard.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsIdentityCard.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsIdentityCard.js.map new file mode 100644 index 00000000..194ce101 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsIdentityCard.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsIdentityCard.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsIdentityCard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,uBAAuB,MAAM,8BAA8B,CAAC;AAGnE,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc,EAAE,MAAsC;IACnF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAuC,EACvC,iBAAqC;IAErC,OAAO,UAAU,CACf;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC9E,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,0CAA0C,EACrE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isIdentityCardValidator from 'validator/lib/isIdentityCard';\nimport ValidatorJS from 'validator';\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: ValidatorJS.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?: ValidatorJS.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 + '$property must be a identity card number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsJSON.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsJSON.js new file mode 100644 index 00000000..22919122 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsJSON.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isJSONValidator from 'validator/lib/isJSON'; +export const IS_JSON = 'isJson'; +/** + * Checks if the string is valid JSON (note: uses JSON.parse). + * If given value is not a string, then it returns false. + */ +export function isJSON(value) { + return typeof value === 'string' && isJSONValidator(value); +} +/** + * Checks if the string is valid JSON (note: uses JSON.parse). + * If given value is not a string, then it returns false. + */ +export function IsJSON(validationOptions) { + return ValidateBy({ + name: IS_JSON, + validator: { + validate: (value, args) => isJSON(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a json string', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsJSON.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsJSON.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsJSON.js.map new file mode 100644 index 00000000..ceebbde2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsJSON.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsJSON.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsJSON.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,eAAe,MAAM,sBAAsB,CAAC;AAEnD,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,iBAAqC;IAC1D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,OAAO;QACb,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;YACjD,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,iCAAiC,EAAE,iBAAiB,CAAC;SAC9G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a json string', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsJWT.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsJWT.js new file mode 100644 index 00000000..4bfe96f4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsJWT.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isJwtValidator from 'validator/lib/isJWT'; +export const IS_JWT = 'isJwt'; +/** + * Checks if the string is valid JWT token. + * If given value is not a string, then it returns false. + */ +export function isJWT(value) { + return typeof value === 'string' && isJwtValidator(value); +} +/** + * Checks if the string is valid JWT token. + * If given value is not a string, then it returns false. + */ +export function IsJWT(validationOptions) { + return ValidateBy({ + name: IS_JWT, + validator: { + validate: (value, args) => isJWT(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a jwt string', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsJWT.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsJWT.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsJWT.js.map new file mode 100644 index 00000000..102cf9ec --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsJWT.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsJWT.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsJWT.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAEjD,MAAM,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC;AAE9B;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,iBAAqC;IACzD,OAAO,UAAU,CACf;QACE,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;YAChD,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,gCAAgC,EAAE,iBAAiB,CAAC;SAC7G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a jwt string', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsLocale.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsLocale.js new file mode 100644 index 00000000..932e9eb7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsLocale.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isLocaleValidator from 'validator/lib/isLocale'; +export const IS_LOCALE = 'isLocale'; +/** + * Check if the string is a locale. + * If given value is not a string, then it returns false. + */ +export function isLocale(value) { + return typeof value === 'string' && isLocaleValidator(value); +} +/** + * Check if the string is a locale. + * If given value is not a string, then it returns false. + */ +export function IsLocale(validationOptions) { + return ValidateBy({ + name: IS_LOCALE, + validator: { + validate: (value, args) => isLocale(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be locale', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsLocale.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsLocale.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsLocale.js.map new file mode 100644 index 00000000..54405946 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsLocale.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsLocale.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsLocale.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AAEvD,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC;AAEpC;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,iBAAqC;IAC5D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,SAAS;QACf,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;YACnD,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,0BAA0B,EAAE,iBAAiB,CAAC;SACvG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be locale', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsLowercase.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsLowercase.js new file mode 100644 index 00000000..c3df94c7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsLowercase.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isLowercaseValidator from 'validator/lib/isLowercase'; +export const IS_LOWERCASE = 'isLowercase'; +/** + * Checks if the string is lowercase. + * If given value is not a string, then it returns false. + */ +export function isLowercase(value) { + return typeof value === 'string' && isLowercaseValidator(value); +} +/** + * Checks if the string is lowercase. + * If given value is not a string, then it returns false. + */ +export function IsLowercase(validationOptions) { + return ValidateBy({ + name: IS_LOWERCASE, + validator: { + validate: (value, args) => isLowercase(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a lowercase string', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsLowercase.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsLowercase.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsLowercase.js.map new file mode 100644 index 00000000..27f2c586 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsLowercase.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsLowercase.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsLowercase.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,oBAAoB,MAAM,2BAA2B,CAAC;AAE7D,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;AAE1C;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,iBAAqC;IAC/D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;YACtD,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,sCAAsC,EACjE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a lowercase string',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMacAddress.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMacAddress.js new file mode 100644 index 00000000..9f430ae4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMacAddress.js @@ -0,0 +1,26 @@ +import { isValidationOptions } from '../ValidationOptions'; +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isMacAddressValidator from 'validator/lib/isMACAddress'; +export const IS_MAC_ADDRESS = 'isMacAddress'; +/** + * Check if the string is a MAC address. + * If given value is not a string, then it returns false. + */ +export function isMACAddress(value, options) { + return typeof value === 'string' && isMacAddressValidator(value, options); +} +export function IsMACAddress(optionsOrValidationOptionsArg, validationOptionsArg) { + const options = !isValidationOptions(optionsOrValidationOptionsArg) ? optionsOrValidationOptionsArg : undefined; + const validationOptions = isValidationOptions(optionsOrValidationOptionsArg) + ? optionsOrValidationOptionsArg + : validationOptionsArg; + return ValidateBy({ + name: IS_MAC_ADDRESS, + constraints: [options], + validator: { + validate: (value, args) => isMACAddress(value, options), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a MAC Address', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsMacAddress.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMacAddress.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMacAddress.js.map new file mode 100644 index 00000000..4496348c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMacAddress.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsMacAddress.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsMacAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,qBAAqB,MAAM,4BAA4B,CAAC;AAG/D,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAC;AAE7C;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc,EAAE,OAAyC;IACpF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC5E,CAAC;AAWD,MAAM,UAAU,YAAY,CAC1B,6BAAmF,EACnF,oBAAwC;IAExC,MAAM,OAAO,GAAG,CAAC,mBAAmB,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,SAAS,CAAC;IAChH,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,6BAA6B,CAAC;QAC1E,CAAC,CAAC,6BAA6B;QAC/B,CAAC,CAAC,oBAAoB,CAAC;IAEzB,OAAO,UAAU,CACf;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC;YAChE,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,iCAAiC,EAAE,iBAAiB,CAAC;SAC9G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions, isValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isMacAddressValidator from 'validator/lib/isMACAddress';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.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?: ValidatorJS.IsMACAddressOptions,\n validationOptionsArg?: ValidationOptions\n): PropertyDecorator;\nexport function IsMACAddress(validationOptionsArg?: ValidationOptions): PropertyDecorator;\nexport function IsMACAddress(\n optionsOrValidationOptionsArg?: ValidatorJS.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 + '$property must be a MAC Address', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMagnetURI.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMagnetURI.js new file mode 100644 index 00000000..d0bd1f1d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMagnetURI.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isMagnetURIValidator from 'validator/lib/isMagnetURI'; +export const IS_MAGNET_URI = 'isMagnetURI'; +/** + * Check if the string is a magnet uri format. + * If given value is not a string, then it returns false. + */ +export function isMagnetURI(value) { + return typeof value === 'string' && isMagnetURIValidator(value); +} +/** + * Check if the string is a magnet uri format. + * If given value is not a string, then it returns false. + */ +export function IsMagnetURI(validationOptions) { + return ValidateBy({ + name: IS_MAGNET_URI, + validator: { + validate: (value, args) => isMagnetURI(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be magnet uri format', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsMagnetURI.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMagnetURI.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMagnetURI.js.map new file mode 100644 index 00000000..d63b5e22 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMagnetURI.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsMagnetURI.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsMagnetURI.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,oBAAoB,MAAM,2BAA2B,CAAC;AAE7D,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC;AAE3C;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,iBAAqC;IAC/D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,aAAa;QACnB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;YACtD,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,qCAAqC,EAChE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be magnet uri format',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMilitaryTime.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMilitaryTime.js new file mode 100644 index 00000000..56342f16 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMilitaryTime.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import matchesValidator from 'validator/lib/matches'; +export const IS_MILITARY_TIME = 'isMilitaryTime'; +/** + * Checks if the string represents a time without a given timezone in the format HH:MM (military) + * If the given value does not match the pattern HH:MM, then it returns false. + */ +export function isMilitaryTime(value) { + const militaryTimeRegex = /^([01]\d|2[0-3]):?([0-5]\d)$/; + return typeof value === 'string' && matchesValidator(value, militaryTimeRegex); +} +/** + * Checks if the string represents a time without a given timezone in the format HH:MM (military) + * If the given value does not match the pattern HH:MM, then it returns false. + */ +export function IsMilitaryTime(validationOptions) { + return ValidateBy({ + name: IS_MILITARY_TIME, + validator: { + validate: (value, args) => isMilitaryTime(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a valid representation of military time in the format HH:MM', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsMilitaryTime.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMilitaryTime.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMilitaryTime.js.map new file mode 100644 index 00000000..b2ea1783 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMilitaryTime.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsMilitaryTime.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsMilitaryTime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AAErD,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAEjD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,MAAM,iBAAiB,GAAG,8BAA8B,CAAC;IACzD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;AACjF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,iBAAqC;IAClE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,gBAAgB;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC;YACzD,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,+EAA+E,EAC1G,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a valid representation of military time in the format HH:MM',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMimeType.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMimeType.js new file mode 100644 index 00000000..ad850b41 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMimeType.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isMimeTypeValidator from 'validator/lib/isMimeType'; +export const IS_MIME_TYPE = 'isMimeType'; +/** + * Check if the string matches to a valid MIME type format + * If given value is not a string, then it returns false. + */ +export function isMimeType(value) { + return typeof value === 'string' && isMimeTypeValidator(value); +} +/** + * Check if the string matches to a valid MIME type format + * If given value is not a string, then it returns false. + */ +export function IsMimeType(validationOptions) { + return ValidateBy({ + name: IS_MIME_TYPE, + validator: { + validate: (value, args) => isMimeType(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be MIME type format', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsMimeType.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMimeType.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMimeType.js.map new file mode 100644 index 00000000..758b9311 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMimeType.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsMimeType.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsMimeType.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAE3D,MAAM,CAAC,MAAM,YAAY,GAAG,YAAY,CAAC;AAEzC;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,iBAAqC;IAC9D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;YACrD,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,oCAAoC,EAC/D,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be MIME type format',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMobilePhone.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMobilePhone.js new file mode 100644 index 00000000..b7d2d3b3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMobilePhone.js @@ -0,0 +1,41 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isMobilePhoneValidator from 'validator/lib/isMobilePhone'; +export const IS_MOBILE_PHONE = 'isMobilePhone'; +/** + * Checks if the string is a mobile phone number (locale is either an array of locales (e.g ['sk-SK', 'sr-RS']) + * 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', + * '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', + * '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', + * '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', + * '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', + * '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', + * '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', + * 'zh-HK', 'zh-MO', 'zh-TW'] + * If given value is not a string, then it returns false. + */ +export function isMobilePhone(value, locale, options) { + return typeof value === 'string' && isMobilePhoneValidator(value, locale, options); +} +/** + * Checks if the string is a mobile phone number (locale is either an array of locales (e.g ['sk-SK', 'sr-RS']) + * 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', + * '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', + * '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', + * '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', + * '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', + * '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', + * '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', + * 'zh-HK', 'zh-MO', 'zh-TW'] + * If given value is not a string, then it returns false. + */ +export function IsMobilePhone(locale, options, validationOptions) { + return ValidateBy({ + name: IS_MOBILE_PHONE, + constraints: [locale, options], + validator: { + validate: (value, args) => isMobilePhone(value, args.constraints[0], args.constraints[1]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a phone number', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsMobilePhone.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMobilePhone.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMobilePhone.js.map new file mode 100644 index 00000000..d207b617 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMobilePhone.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsMobilePhone.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsMobilePhone.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,sBAAsB,MAAM,6BAA6B,CAAC;AAGjE,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAC;AAE/C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAc,EACd,MAAsC,EACtC,OAA0C;IAE1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACrF,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAC3B,MAAsC,EACtC,OAA0C,EAC1C,iBAAqC;IAErC,OAAO,UAAU,CACf;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;QAC9B,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAClG,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,kCAAkC,EAAE,iBAAiB,CAAC;SAC/G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isMobilePhoneValidator from 'validator/lib/isMobilePhone';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.MobilePhoneLocale,\n options?: ValidatorJS.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?: ValidatorJS.MobilePhoneLocale,\n options?: ValidatorJS.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 + '$property must be a phone number', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMongoId.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMongoId.js new file mode 100644 index 00000000..134b8be6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMongoId.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isMongoIdValidator from 'validator/lib/isMongoId'; +export const IS_MONGO_ID = 'isMongoId'; +/** + * Checks if the string is a valid hex-encoded representation of a MongoDB ObjectId. + * If given value is not a string, then it returns false. + */ +export function isMongoId(value) { + return typeof value === 'string' && isMongoIdValidator(value); +} +/** + * Checks if the string is a valid hex-encoded representation of a MongoDB ObjectId. + * If given value is not a string, then it returns false. + */ +export function IsMongoId(validationOptions) { + return ValidateBy({ + name: IS_MONGO_ID, + validator: { + validate: (value, args) => isMongoId(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a mongodb id', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsMongoId.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMongoId.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMongoId.js.map new file mode 100644 index 00000000..49092a73 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMongoId.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsMongoId.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsMongoId.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAEzD,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC;AAEvC;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,iBAAqC;IAC7D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;YACpD,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,gCAAgC,EAAE,iBAAiB,CAAC;SAC7G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a mongodb id', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMultibyte.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMultibyte.js new file mode 100644 index 00000000..370f0dac --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMultibyte.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isMultibyteValidator from 'validator/lib/isMultibyte'; +export const IS_MULTIBYTE = 'isMultibyte'; +/** + * Checks if the string contains one or more multibyte chars. + * If given value is not a string, then it returns false. + */ +export function isMultibyte(value) { + return typeof value === 'string' && isMultibyteValidator(value); +} +/** + * Checks if the string contains one or more multibyte chars. + * If given value is not a string, then it returns false. + */ +export function IsMultibyte(validationOptions) { + return ValidateBy({ + name: IS_MULTIBYTE, + validator: { + validate: (value, args) => isMultibyte(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must contain one or more multibyte chars', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsMultibyte.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMultibyte.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMultibyte.js.map new file mode 100644 index 00000000..48ef4827 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsMultibyte.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsMultibyte.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsMultibyte.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,oBAAoB,MAAM,2BAA2B,CAAC;AAE7D,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;AAE1C;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,iBAAqC;IAC/D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;YACtD,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,oDAAoD,EAC/E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must contain one or more multibyte chars',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsNumberString.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsNumberString.js new file mode 100644 index 00000000..5f11c3cc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsNumberString.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isNumericValidator from 'validator/lib/isNumeric'; +export const IS_NUMBER_STRING = 'isNumberString'; +/** + * Checks if the string is numeric. + * If given value is not a string, then it returns false. + */ +export function isNumberString(value, options) { + return typeof value === 'string' && isNumericValidator(value, options); +} +/** + * Checks if the string is numeric. + * If given value is not a string, then it returns false. + */ +export function IsNumberString(options, validationOptions) { + return ValidateBy({ + name: IS_NUMBER_STRING, + constraints: [options], + validator: { + validate: (value, args) => isNumberString(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a number string', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsNumberString.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsNumberString.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsNumberString.js.map new file mode 100644 index 00000000..471ea9bc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsNumberString.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsNumberString.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsNumberString.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAGzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAEjD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc,EAAE,OAAsC;IACnF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAsC,EACtC,iBAAqC;IAErC,OAAO,UAAU,CACf;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC9E,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,mCAAmC,EAAE,iBAAiB,CAAC;SAChH;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isNumericValidator from 'validator/lib/isNumeric';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.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?: ValidatorJS.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 + '$property must be a number string', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsOctal.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsOctal.js new file mode 100644 index 00000000..0cd552a8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsOctal.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isOctalValidator from 'validator/lib/isOctal'; +export const IS_OCTAL = 'isOctal'; +/** + * Check if the string is a valid octal number. + * If given value is not a string, then it returns false. + */ +export function isOctal(value) { + return typeof value === 'string' && isOctalValidator(value); +} +/** + * Check if the string is a valid octal number. + * If given value is not a string, then it returns false. + */ +export function IsOctal(validationOptions) { + return ValidateBy({ + name: IS_OCTAL, + validator: { + validate: (value, args) => isOctal(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be valid octal number', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsOctal.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsOctal.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsOctal.js.map new file mode 100644 index 00000000..4a39b81d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsOctal.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsOctal.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsOctal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AAErD,MAAM,CAAC,MAAM,QAAQ,GAAG,SAAS,CAAC;AAElC;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,iBAAqC;IAC3D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;YAClD,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,sCAAsC,EACjE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be valid octal number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPassportNumber.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPassportNumber.js new file mode 100644 index 00000000..4a42678b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPassportNumber.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isPassportNumberValidator from 'validator/lib/isPassportNumber'; +export const IS_PASSPORT_NUMBER = 'isPassportNumber'; +/** + * Check if the string is a valid passport number relative to a specific country code. + * If given value is not a string, then it returns false. + */ +export function isPassportNumber(value, countryCode) { + return typeof value === 'string' && isPassportNumberValidator(value, countryCode); +} +/** + * Check if the string is a valid passport number relative to a specific country code. + * If given value is not a string, then it returns false. + */ +export function IsPassportNumber(countryCode, validationOptions) { + return ValidateBy({ + name: IS_PASSPORT_NUMBER, + constraints: [countryCode], + validator: { + validate: (value, args) => isPassportNumber(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be valid passport number', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsPassportNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPassportNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPassportNumber.js.map new file mode 100644 index 00000000..cc57b193 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPassportNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsPassportNumber.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsPassportNumber.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,yBAAyB,MAAM,gCAAgC,CAAC;AAEvE,MAAM,CAAC,MAAM,kBAAkB,GAAG,kBAAkB,CAAC;AAErD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc,EAAE,WAAmB;IAClE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,yBAAyB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AACpF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAmB,EAAE,iBAAqC;IACzF,OAAO,UAAU,CACf;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,CAAC,WAAW,CAAC;QAC1B,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAChF,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,yCAAyC,EACpE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be valid passport number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPhoneNumber.js new file mode 100644 index 00000000..a424e8b3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPhoneNumber.js @@ -0,0 +1,40 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import { parsePhoneNumberFromString } from 'libphonenumber-js'; +export const IS_PHONE_NUMBER = 'isPhoneNumber'; +/** + * Checks if the string is a valid phone number. To successfully validate any phone number the text must include + * the intl. calling code, if the calling code wont be provided then the region must be set. + * + * @param value the potential phone number string to test + * @param region 2 characters uppercase country code (e.g. DE, US, CH) for country specific validation. + * If text doesn't start with the international calling code (e.g. +41), then you must set this parameter. + */ +export function isPhoneNumber(value, region) { + try { + const phoneNum = parsePhoneNumberFromString(value, region); + const result = phoneNum === null || phoneNum === void 0 ? void 0 : phoneNum.isValid(); + return !!result; + } + catch (error) { + // logging? + return false; + } +} +/** + * Checks if the string is a valid phone number. To successfully validate any phone number the text must include + * the intl. calling code, if the calling code wont be provided then the region must be set. + * + * @param region 2 characters uppercase country code (e.g. DE, US, CH) for country specific validation. + * If text doesn't start with the international calling code (e.g. +41), then you must set this parameter. + */ +export function IsPhoneNumber(region, validationOptions) { + return ValidateBy({ + name: IS_PHONE_NUMBER, + constraints: [region], + validator: { + validate: (value, args) => isPhoneNumber(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a valid phone number', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsPhoneNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPhoneNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPhoneNumber.js.map new file mode 100644 index 00000000..221baf01 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPhoneNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsPhoneNumber.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsPhoneNumber.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAe,MAAM,mBAAmB,CAAC;AAE5E,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAC;AAE/C;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,MAAoB;IAC/D,IAAI;QACF,MAAM,QAAQ,GAAG,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,EAAE,CAAC;QACnC,OAAO,CAAC,CAAC,MAAM,CAAC;KACjB;IAAC,OAAO,KAAK,EAAE;QACd,WAAW;QACX,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,MAAoB,EAAE,iBAAqC;IACvF,OAAO,UAAU,CACf;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC7E,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,wCAAwC,EACnE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport { parsePhoneNumberFromString, CountryCode } from 'libphonenumber-js';\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?: CountryCode): boolean {\n try {\n const phoneNum = parsePhoneNumberFromString(value, region);\n const result = phoneNum?.isValid();\n return !!result;\n } catch (error) {\n // logging?\n return false;\n }\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(region?: CountryCode, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_PHONE_NUMBER,\n constraints: [region],\n validator: {\n validate: (value, args): boolean => isPhoneNumber(value, args.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + '$property must be a valid phone number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPort.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPort.js new file mode 100644 index 00000000..5eb623b1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPort.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isPortValidator from 'validator/lib/isPort'; +export const IS_PORT = 'isPort'; +/** + * Check if the string is a valid port number. + */ +export function isPort(value) { + return typeof value === 'string' && isPortValidator(value); +} +/** + * Check if the string is a valid port number. + */ +export function IsPort(validationOptions) { + return ValidateBy({ + name: IS_PORT, + validator: { + validate: (value, args) => isPort(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a port', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsPort.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPort.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPort.js.map new file mode 100644 index 00000000..edd14520 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPort.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsPort.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsPort.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,eAAe,MAAM,sBAAsB,CAAC;AAEnD,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,iBAAqC;IAC1D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,OAAO;QACb,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;YACjD,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,0BAA0B,EAAE,iBAAiB,CAAC;SACvG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a port', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPostalCode.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPostalCode.js new file mode 100644 index 00000000..fca2f7a7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPostalCode.js @@ -0,0 +1,27 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isPostalCodeValidator from 'validator/lib/isPostalCode'; +export const IS_POSTAL_CODE = 'isPostalCode'; +/** + * Check if the string is a postal code, + * (locale is one of [ 'AD', 'AT', 'AU', 'BE', 'BG', 'BR', 'CA', 'CH', 'CZ', 'DE', 'DK', 'DZ', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'ID', 'IE' 'IL', 'IN', 'IR', 'IS', 'IT', 'JP', 'KE', 'LI', 'LT', 'LU', 'LV', 'MT', 'MX', 'NL', 'NO', 'NZ', 'PL', 'PR', 'PT', 'RO', 'RU', 'SA', 'SE', 'SI', 'TN', 'TW', 'UA', 'US', 'ZA', 'ZM' ] OR 'any'. If 'any' is used, function will check if any of the locals match. Locale list is validator.isPostalCodeLocales.). + * If given value is not a string, then it returns false. + */ +export function isPostalCode(value, locale) { + return typeof value === 'string' && isPostalCodeValidator(value, locale); +} +/** + * Check if the string is a postal code, + * (locale is one of [ 'AD', 'AT', 'AU', 'BE', 'BG', 'BR', 'CA', 'CH', 'CZ', 'DE', 'DK', 'DZ', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'ID', 'IE' 'IL', 'IN', 'IR', 'IS', 'IT', 'JP', 'KE', 'LI', 'LT', 'LU', 'LV', 'MT', 'MX', 'NL', 'NO', 'NZ', 'PL', 'PR', 'PT', 'RO', 'RU', 'SA', 'SE', 'SI', 'TN', 'TW', 'UA', 'US', 'ZA', 'ZM' ] OR 'any'. If 'any' is used, function will check if any of the locals match. Locale list is validator.isPostalCodeLocales.). + * If given value is not a string, then it returns false. + */ +export function IsPostalCode(locale, validationOptions) { + return ValidateBy({ + name: IS_POSTAL_CODE, + constraints: [locale], + validator: { + validate: (value, args) => isPostalCode(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a postal code', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsPostalCode.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPostalCode.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPostalCode.js.map new file mode 100644 index 00000000..d25494d1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsPostalCode.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsPostalCode.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsPostalCode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,qBAAqB,MAAM,4BAA4B,CAAC;AAG/D,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAC;AAE7C;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc,EAAE,MAA4C;IACvF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC3E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,MAA6C,EAC7C,iBAAqC;IAErC,OAAO,UAAU,CACf;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC5E,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,iCAAiC,EAAE,iBAAiB,CAAC;SAC9G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isPostalCodeValidator from 'validator/lib/isPostalCode';\nimport ValidatorJS from 'validator';\n\nexport const IS_POSTAL_CODE = 'isPostalCode';\n\n/**\n * Check if the string is a postal code,\n * (locale is one of [ 'AD', 'AT', 'AU', 'BE', 'BG', 'BR', 'CA', 'CH', 'CZ', 'DE', 'DK', 'DZ', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'ID', 'IE' 'IL', 'IN', 'IR', 'IS', 'IT', 'JP', 'KE', 'LI', 'LT', 'LU', 'LV', 'MT', 'MX', 'NL', 'NO', 'NZ', 'PL', 'PR', 'PT', 'RO', 'RU', 'SA', 'SE', 'SI', 'TN', 'TW', 'UA', 'US', 'ZA', 'ZM' ] OR 'any'. If 'any' is used, function will check if any of the locals match. Locale list is validator.isPostalCodeLocales.).\n * If given value is not a string, then it returns false.\n */\nexport function isPostalCode(value: unknown, locale: 'any' | ValidatorJS.PostalCodeLocale): boolean {\n return typeof value === 'string' && isPostalCodeValidator(value, locale);\n}\n\n/**\n * Check if the string is a postal code,\n * (locale is one of [ 'AD', 'AT', 'AU', 'BE', 'BG', 'BR', 'CA', 'CH', 'CZ', 'DE', 'DK', 'DZ', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'ID', 'IE' 'IL', 'IN', 'IR', 'IS', 'IT', 'JP', 'KE', 'LI', 'LT', 'LU', 'LV', 'MT', 'MX', 'NL', 'NO', 'NZ', 'PL', 'PR', 'PT', 'RO', 'RU', 'SA', 'SE', 'SI', 'TN', 'TW', 'UA', 'US', 'ZA', 'ZM' ] OR 'any'. If 'any' is used, function will check if any of the locals match. Locale list is validator.isPostalCodeLocales.).\n * If given value is not a string, then it returns false.\n */\nexport function IsPostalCode(\n locale?: 'any' | ValidatorJS.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 + '$property must be a postal code', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsRFC3339.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsRFC3339.js new file mode 100644 index 00000000..dcf6fbd0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsRFC3339.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isRFC3339Validator from 'validator/lib/isRFC3339'; +export const IS_RFC_3339 = 'isRFC3339'; +/** + * Check if the string is a valid RFC 3339 date. + * If given value is not a string, then it returns false. + */ +export function isRFC3339(value) { + return typeof value === 'string' && isRFC3339Validator(value); +} +/** + * Check if the string is a valid RFC 3339 date. + * If given value is not a string, then it returns false. + */ +export function IsRFC3339(validationOptions) { + return ValidateBy({ + name: IS_RFC_3339, + validator: { + validate: (value, args) => isRFC3339(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be RFC 3339 date', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsRFC3339.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsRFC3339.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsRFC3339.js.map new file mode 100644 index 00000000..d1108c37 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsRFC3339.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsRFC3339.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsRFC3339.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAEzD,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC;AAEvC;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,iBAAqC;IAC7D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;YACpD,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,iCAAiC,EAAE,iBAAiB,CAAC;SAC9G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be RFC 3339 date', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsRgbColor.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsRgbColor.js new file mode 100644 index 00000000..959d0855 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsRgbColor.js @@ -0,0 +1,27 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isRgbColorValidator from 'validator/lib/isRgbColor'; +export const IS_RGB_COLOR = 'isRgbColor'; +/** + * Check if the string is a rgb or rgba color. + * `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. + * If given value is not a string, then it returns false. + */ +export function isRgbColor(value, includePercentValues) { + return typeof value === 'string' && isRgbColorValidator(value, includePercentValues); +} +/** + * Check if the string is a rgb or rgba color. + * `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. + * If given value is not a string, then it returns false. + */ +export function IsRgbColor(includePercentValues, validationOptions) { + return ValidateBy({ + name: IS_RGB_COLOR, + constraints: [includePercentValues], + validator: { + validate: (value, args) => isRgbColor(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be RGB color', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsRgbColor.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsRgbColor.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsRgbColor.js.map new file mode 100644 index 00000000..78068a1b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsRgbColor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsRgbColor.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsRgbColor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAE3D,MAAM,CAAC,MAAM,YAAY,GAAG,YAAY,CAAC;AAEzC;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc,EAAE,oBAA8B;IACvE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,mBAAmB,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;AACvF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,oBAA8B,EAAE,iBAAqC;IAC9F,OAAO,UAAU,CACf;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,CAAC,oBAAoB,CAAC;QACnC,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC1E,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,6BAA6B,EAAE,iBAAiB,CAAC;SAC1G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be RGB color', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsSemVer.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsSemVer.js new file mode 100644 index 00000000..d3067859 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsSemVer.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isSemVerValidator from 'validator/lib/isSemVer'; +export const IS_SEM_VER = 'isSemVer'; +/** + * Check if the string is a Semantic Versioning Specification (SemVer). + * If given value is not a string, then it returns false. + */ +export function isSemVer(value) { + return typeof value === 'string' && isSemVerValidator(value); +} +/** + * Check if the string is a Semantic Versioning Specification (SemVer). + * If given value is not a string, then it returns false. + */ +export function IsSemVer(validationOptions) { + return ValidateBy({ + name: IS_SEM_VER, + validator: { + validate: (value, args) => isSemVer(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a Semantic Versioning Specification', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsSemVer.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsSemVer.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsSemVer.js.map new file mode 100644 index 00000000..4a76ab55 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsSemVer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsSemVer.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsSemVer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AAEvD,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;AAErC;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,iBAAqC;IAC5D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;YACnD,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,uDAAuD,EAClF,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a Semantic Versioning Specification',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsSurrogatePair.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsSurrogatePair.js new file mode 100644 index 00000000..0c44e00a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsSurrogatePair.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isSurrogatePairValidator from 'validator/lib/isSurrogatePair'; +export const IS_SURROGATE_PAIR = 'isSurrogatePair'; +/** + * Checks if the string contains any surrogate pairs chars. + * If given value is not a string, then it returns false. + */ +export function isSurrogatePair(value) { + return typeof value === 'string' && isSurrogatePairValidator(value); +} +/** + * Checks if the string contains any surrogate pairs chars. + * If given value is not a string, then it returns false. + */ +export function IsSurrogatePair(validationOptions) { + return ValidateBy({ + name: IS_SURROGATE_PAIR, + validator: { + validate: (value, args) => isSurrogatePair(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must contain any surrogate pairs chars', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsSurrogatePair.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsSurrogatePair.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsSurrogatePair.js.map new file mode 100644 index 00000000..bbe318a9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsSurrogatePair.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsSurrogatePair.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsSurrogatePair.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,wBAAwB,MAAM,+BAA+B,CAAC;AAErE,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAEnD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,iBAAqC;IACnE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,iBAAiB;QACvB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;YAC1D,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,kDAAkD,EAC7E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must contain any surrogate pairs chars',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsUUID.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsUUID.js new file mode 100644 index 00000000..070ee8d8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsUUID.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isUuidValidator from 'validator/lib/isUUID'; +export const IS_UUID = 'isUuid'; +/** + * Checks if the string is a UUID (version 3, 4 or 5). + * If given value is not a string, then it returns false. + */ +export function isUUID(value, version) { + return typeof value === 'string' && isUuidValidator(value, version); +} +/** + * Checks if the string is a UUID (version 3, 4 or 5). + * If given value is not a string, then it returns false. + */ +export function IsUUID(version, validationOptions) { + return ValidateBy({ + name: IS_UUID, + constraints: [version], + validator: { + validate: (value, args) => isUUID(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a UUID', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsUUID.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsUUID.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsUUID.js.map new file mode 100644 index 00000000..e1ca7d38 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsUUID.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsUUID.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsUUID.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,eAAe,MAAM,sBAAsB,CAAC;AAInD,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc,EAAE,OAAqB;IAC1D,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,OAAqB,EAAE,iBAAqC;IACjF,OAAO,UAAU,CACf;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtE,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,0BAA0B,EAAE,iBAAiB,CAAC;SACvG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isUuidValidator from 'validator/lib/isUUID';\n\nexport type UUIDVersion = '3' | '4' | '5' | 'all' | 3 | 4 | 5;\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?: UUIDVersion): boolean {\n return 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(version?: UUIDVersion, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_UUID,\n constraints: [version],\n validator: {\n validate: (value, args): boolean => isUUID(value, args.constraints[0]),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a UUID', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsUppercase.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsUppercase.js new file mode 100644 index 00000000..07b130f0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsUppercase.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isUppercaseValidator from 'validator/lib/isUppercase'; +export const IS_UPPERCASE = 'isUppercase'; +/** + * Checks if the string is uppercase. + * If given value is not a string, then it returns false. + */ +export function isUppercase(value) { + return typeof value === 'string' && isUppercaseValidator(value); +} +/** + * Checks if the string is uppercase. + * If given value is not a string, then it returns false. + */ +export function IsUppercase(validationOptions) { + return ValidateBy({ + name: IS_UPPERCASE, + validator: { + validate: (value, args) => isUppercase(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be uppercase', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsUppercase.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsUppercase.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsUppercase.js.map new file mode 100644 index 00000000..2b1a583e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsUppercase.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsUppercase.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsUppercase.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,oBAAoB,MAAM,2BAA2B,CAAC;AAE7D,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;AAE1C;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,iBAAqC;IAC/D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;YACtD,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,6BAA6B,EAAE,iBAAiB,CAAC;SAC1G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be uppercase', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsUrl.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsUrl.js new file mode 100644 index 00000000..a1e3800b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsUrl.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isUrlValidator from 'validator/lib/isURL'; +export const IS_URL = 'isUrl'; +/** + * Checks if the string is an url. + * If given value is not a string, then it returns false. + */ +export function isURL(value, options) { + return typeof value === 'string' && isUrlValidator(value, options); +} +/** + * Checks if the string is an url. + * If given value is not a string, then it returns false. + */ +export function IsUrl(options, validationOptions) { + return ValidateBy({ + name: IS_URL, + constraints: [options], + validator: { + validate: (value, args) => isURL(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be an URL address', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsUrl.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsUrl.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsUrl.js.map new file mode 100644 index 00000000..76fe3ea7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsUrl.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsUrl.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsUrl.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAGjD,MAAM,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC;AAE9B;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,KAAa,EAAE,OAAkC;IACrE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACrE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,OAAkC,EAAE,iBAAqC;IAC7F,OAAO,UAAU,CACf;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACrE,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,kCAAkC,EAAE,iBAAiB,CAAC;SAC/G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isUrlValidator from 'validator/lib/isURL';\nimport ValidatorJS from 'validator';\n\nexport const IS_URL = 'isUrl';\n\n/**\n * Checks if the string is an url.\n * If given value is not a string, then it returns false.\n */\nexport function isURL(value: string, options?: ValidatorJS.IsURLOptions): boolean {\n return typeof value === 'string' && isUrlValidator(value, options);\n}\n\n/**\n * Checks if the string is an url.\n * If given value is not a string, then it returns false.\n */\nexport function IsUrl(options?: ValidatorJS.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 + '$property must be an URL address', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsVariableWidth.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsVariableWidth.js new file mode 100644 index 00000000..a4801d98 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsVariableWidth.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isVariableWidthValidator from 'validator/lib/isVariableWidth'; +export const IS_VARIABLE_WIDTH = 'isVariableWidth'; +/** + * Checks if the string contains variable-width chars. + * If given value is not a string, then it returns false. + */ +export function isVariableWidth(value) { + return typeof value === 'string' && isVariableWidthValidator(value); +} +/** + * Checks if the string contains variable-width chars. + * If given value is not a string, then it returns false. + */ +export function IsVariableWidth(validationOptions) { + return ValidateBy({ + name: IS_VARIABLE_WIDTH, + validator: { + validate: (value, args) => isVariableWidth(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must contain a full-width and half-width characters', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsVariableWidth.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsVariableWidth.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsVariableWidth.js.map new file mode 100644 index 00000000..7d55bf34 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/IsVariableWidth.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsVariableWidth.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsVariableWidth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,wBAAwB,MAAM,+BAA+B,CAAC;AAErE,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAEnD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,iBAAqC;IACnE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,iBAAiB;QACvB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;YAC1D,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,+DAA+D,EAC1F,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must contain a full-width and half-width characters',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/Length.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/Length.js new file mode 100644 index 00000000..3279bdf5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/Length.js @@ -0,0 +1,36 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isLengthValidator from 'validator/lib/isLength'; +export const IS_LENGTH = 'isLength'; +/** + * Checks if the string's length falls in a range. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ +export function length(value, min, max) { + return typeof value === 'string' && isLengthValidator(value, { min, max }); +} +/** + * Checks if the string's length falls in a range. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ +export function Length(min, max, validationOptions) { + return ValidateBy({ + name: IS_LENGTH, + constraints: [min, max], + validator: { + validate: (value, args) => length(value, args.constraints[0], args.constraints[1]), + defaultMessage: buildMessage((eachPrefix, args) => { + const isMinLength = args.constraints[0] !== null && args.constraints[0] !== undefined; + const isMaxLength = args.constraints[1] !== null && args.constraints[1] !== undefined; + if (isMinLength && (!args.value || args.value.length < args.constraints[0])) { + return eachPrefix + '$property must be longer than or equal to $constraint1 characters'; + } + else if (isMaxLength && args.value.length > args.constraints[1]) { + return eachPrefix + '$property must be shorter than or equal to $constraint2 characters'; + } + return (eachPrefix + + '$property must be longer than or equal to $constraint1 and shorter than or equal to $constraint2 characters'); + }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=Length.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/Length.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/Length.js.map new file mode 100644 index 00000000..dc1cdeaf --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/Length.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Length.js","sourceRoot":"","sources":["../../../../src/decorator/string/Length.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AAEvD,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC;AAEpC;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc,EAAE,GAAW,EAAE,GAAY;IAC9D,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,GAAW,EAAE,GAAY,EAAE,iBAAqC;IACrF,OAAO,UAAU,CACf;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;QACvB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC3F,cAAc,EAAE,YAAY,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE;gBAChD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;gBACtF,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;gBACtF,IAAI,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;oBAC3E,OAAO,UAAU,GAAG,mEAAmE,CAAC;iBACzF;qBAAM,IAAI,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;oBACjE,OAAO,UAAU,GAAG,oEAAoE,CAAC;iBAC1F;gBACD,OAAO,CACL,UAAU;oBACV,6GAA6G,CAC9G,CAAC;YACJ,CAAC,EAAE,iBAAiB,CAAC;SACtB;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be longer than or equal to $constraint1 characters';\n } else if (isMaxLength && args.value.length > args.constraints[1]) {\n return eachPrefix + '$property must be shorter than or equal to $constraint2 characters';\n }\n return (\n eachPrefix +\n '$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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/Matches.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/Matches.js new file mode 100644 index 00000000..13834d09 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/Matches.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import matchesValidator from 'validator/lib/matches'; +export const MATCHES = 'matches'; +export function matches(value, pattern, modifiers) { + return typeof value === 'string' && matchesValidator(value, pattern, modifiers); +} +export function Matches(pattern, modifiersOrAnnotationOptions, validationOptions) { + let modifiers; + if (modifiersOrAnnotationOptions && modifiersOrAnnotationOptions instanceof Object && !validationOptions) { + validationOptions = modifiersOrAnnotationOptions; + } + else { + modifiers = modifiersOrAnnotationOptions; + } + return ValidateBy({ + name: MATCHES, + constraints: [pattern, modifiers], + validator: { + validate: (value, args) => matches(value, args.constraints[0], args.constraints[1]), + defaultMessage: buildMessage((eachPrefix, args) => eachPrefix + '$property must match $constraint1 regular expression', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=Matches.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/Matches.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/Matches.js.map new file mode 100644 index 00000000..e36581ae --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/Matches.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Matches.js","sourceRoot":"","sources":["../../../../src/decorator/string/Matches.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AAErD,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC;AAQjC,MAAM,UAAU,OAAO,CAAC,KAAa,EAAE,OAAwB,EAAE,SAAkB;IACjF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,KAAK,EAAE,OAAyB,EAAE,SAAS,CAAC,CAAC;AACpG,CAAC;AAQD,MAAM,UAAU,OAAO,CACrB,OAAwB,EACxB,4BAAyD,EACzD,iBAAqC;IAErC,IAAI,SAAiB,CAAC;IACtB,IAAI,4BAA4B,IAAI,4BAA4B,YAAY,MAAM,IAAI,CAAC,iBAAiB,EAAE;QACxG,iBAAiB,GAAG,4BAA4B,CAAC;KAClD;SAAM;QACL,SAAS,GAAG,4BAAsC,CAAC;KACpD;IAED,OAAO,UAAU,CACf;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;QACjC,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC5F,cAAc,EAAE,YAAY,CAC1B,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,GAAG,sDAAsD,EACzF,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must match $constraint1 regular expression',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/MaxLength.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/MaxLength.js new file mode 100644 index 00000000..c9964b7b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/MaxLength.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isLengthValidator from 'validator/lib/isLength'; +export const MAX_LENGTH = 'maxLength'; +/** + * Checks if the string's length is not more than given number. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ +export function maxLength(value, max) { + return typeof value === 'string' && isLengthValidator(value, { min: 0, max }); +} +/** + * Checks if the string's length is not more than given number. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ +export function MaxLength(max, validationOptions) { + return ValidateBy({ + name: MAX_LENGTH, + constraints: [max], + validator: { + validate: (value, args) => maxLength(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be shorter than or equal to $constraint1 characters', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=MaxLength.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/MaxLength.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/MaxLength.js.map new file mode 100644 index 00000000..90f1c5af --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/MaxLength.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MaxLength.js","sourceRoot":"","sources":["../../../../src/decorator/string/MaxLength.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AAEvD,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAC;AAEtC;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc,EAAE,GAAW;IACnD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAChF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,iBAAqC;IAC1E,OAAO,UAAU,CACf;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,CAAC,GAAG,CAAC;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACzE,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,oEAAoE,EAC/F,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be shorter than or equal to $constraint1 characters',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/MinLength.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/MinLength.js new file mode 100644 index 00000000..f12b2663 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/MinLength.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isLengthValidator from 'validator/lib/isLength'; +export const MIN_LENGTH = 'minLength'; +/** + * Checks if the string's length is not less than given number. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ +export function minLength(value, min) { + return typeof value === 'string' && isLengthValidator(value, { min }); +} +/** + * Checks if the string's length is not less than given number. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ +export function MinLength(min, validationOptions) { + return ValidateBy({ + name: MIN_LENGTH, + constraints: [min], + validator: { + validate: (value, args) => minLength(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be longer than or equal to $constraint1 characters', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=MinLength.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/MinLength.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/MinLength.js.map new file mode 100644 index 00000000..06d0870a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/MinLength.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MinLength.js","sourceRoot":"","sources":["../../../../src/decorator/string/MinLength.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AAEvD,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAC;AAEtC;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc,EAAE,GAAW;IACnD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;AACxE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,iBAAqC;IAC1E,OAAO,UAAU,CACf;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,CAAC,GAAG,CAAC;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACzE,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,mEAAmE,EAC9F,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be longer than or equal to $constraint1 characters',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/NotContains.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/NotContains.js new file mode 100644 index 00000000..8bf9a1f9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/NotContains.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import containsValidator from 'validator/lib/contains'; +export const NOT_CONTAINS = 'notContains'; +/** + * Checks if the string does not contain the seed. + * If given value is not a string, then it returns false. + */ +export function notContains(value, seed) { + return typeof value === 'string' && !containsValidator(value, seed); +} +/** + * Checks if the string does not contain the seed. + * If given value is not a string, then it returns false. + */ +export function NotContains(seed, validationOptions) { + return ValidateBy({ + name: NOT_CONTAINS, + constraints: [seed], + validator: { + validate: (value, args) => notContains(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property should not contain a $constraint1 string', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=NotContains.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/NotContains.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/NotContains.js.map new file mode 100644 index 00000000..d483f5dc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/string/NotContains.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NotContains.js","sourceRoot":"","sources":["../../../../src/decorator/string/NotContains.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AAEvD,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;AAE1C;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc,EAAE,IAAY;IACtD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,iBAAqC;IAC7E,OAAO,UAAU,CACf;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,CAAC,IAAI,CAAC;QACnB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC3E,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,oDAAoD,EAC/E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property should not contain a $constraint1 string',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsArray.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsArray.js new file mode 100644 index 00000000..c94ed5be --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsArray.js @@ -0,0 +1,21 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const IS_ARRAY = 'isArray'; +/** + * Checks if a given value is an array + */ +export function isArray(value) { + return Array.isArray(value); +} +/** + * Checks if a given value is an array + */ +export function IsArray(validationOptions) { + return ValidateBy({ + name: IS_ARRAY, + validator: { + validate: (value, args) => isArray(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be an array', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsArray.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsArray.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsArray.js.map new file mode 100644 index 00000000..f92deddd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsArray.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsArray.js","sourceRoot":"","sources":["../../../../src/decorator/typechecker/IsArray.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,QAAQ,GAAG,SAAS,CAAC;AAElC;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,iBAAqC;IAC3D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;YAClD,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,4BAA4B,EAAE,iBAAiB,CAAC;SACzG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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(value: unknown): boolean {\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 + '$property must be an array', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsBoolean.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsBoolean.js new file mode 100644 index 00000000..694eeffe --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsBoolean.js @@ -0,0 +1,21 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const IS_BOOLEAN = 'isBoolean'; +/** + * Checks if a given value is a boolean. + */ +export function isBoolean(value) { + return value instanceof Boolean || typeof value === 'boolean'; +} +/** + * Checks if a value is a boolean. + */ +export function IsBoolean(validationOptions) { + return ValidateBy({ + name: IS_BOOLEAN, + validator: { + validate: (value, args) => isBoolean(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a boolean value', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsBoolean.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsBoolean.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsBoolean.js.map new file mode 100644 index 00000000..7c0978bc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsBoolean.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsBoolean.js","sourceRoot":"","sources":["../../../../src/decorator/typechecker/IsBoolean.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAC;AAEtC;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,KAAK,YAAY,OAAO,IAAI,OAAO,KAAK,KAAK,SAAS,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,iBAAqC;IAC7D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;YACpD,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,mCAAmC,EAAE,iBAAiB,CAAC;SAChH;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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): 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 + '$property must be a boolean value', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsDate.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsDate.js new file mode 100644 index 00000000..59127760 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsDate.js @@ -0,0 +1,21 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const IS_DATE = 'isDate'; +/** + * Checks if a given value is a date. + */ +export function isDate(value) { + return value instanceof Date && !isNaN(value.getTime()); +} +/** + * Checks if a value is a date. + */ +export function IsDate(validationOptions) { + return ValidateBy({ + name: IS_DATE, + validator: { + validate: (value, args) => isDate(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a Date instance', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsDate.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsDate.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsDate.js.map new file mode 100644 index 00000000..4c696c27 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsDate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsDate.js","sourceRoot":"","sources":["../../../../src/decorator/typechecker/IsDate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,KAAK,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,iBAAqC;IAC1D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,OAAO;QACb,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;YACjD,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,mCAAmC,EAAE,iBAAiB,CAAC;SAChH;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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): boolean {\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 + '$property must be a Date instance', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsEnum.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsEnum.js new file mode 100644 index 00000000..efab9427 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsEnum.js @@ -0,0 +1,23 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const IS_ENUM = 'isEnum'; +/** + * Checks if a given value is an enum + */ +export function isEnum(value, entity) { + const enumValues = Object.keys(entity).map(k => entity[k]); + return enumValues.indexOf(value) >= 0; +} +/** + * Checks if a given value is an enum + */ +export function IsEnum(entity, validationOptions) { + return ValidateBy({ + name: IS_ENUM, + constraints: [entity], + validator: { + validate: (value, args) => isEnum(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a valid enum value', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsEnum.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsEnum.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsEnum.js.map new file mode 100644 index 00000000..f3db260b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsEnum.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsEnum.js","sourceRoot":"","sources":["../../../../src/decorator/typechecker/IsEnum.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc,EAAE,MAAW;IAChD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,MAAc,EAAE,iBAAqC;IAC1E,OAAO,UAAU,CACf;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtE,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,sCAAsC,EACjE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const IS_ENUM = 'isEnum';\n\n/**\n * Checks if a given value is an enum\n */\nexport function isEnum(value: unknown, entity: any): boolean {\n const enumValues = Object.keys(entity).map(k => entity[k]);\n return enumValues.indexOf(value) >= 0;\n}\n\n/**\n * Checks if a given value is an enum\n */\nexport function IsEnum(entity: object, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_ENUM,\n constraints: [entity],\n validator: {\n validate: (value, args): boolean => isEnum(value, args.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + '$property must be a valid enum value',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsInt.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsInt.js new file mode 100644 index 00000000..f6d4c416 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsInt.js @@ -0,0 +1,21 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const IS_INT = 'isInt'; +/** + * Checks if value is an integer. + */ +export function isInt(val) { + return typeof val === 'number' && Number.isInteger(val); +} +/** + * Checks if value is an integer. + */ +export function IsInt(validationOptions) { + return ValidateBy({ + name: IS_INT, + validator: { + validate: (value, args) => isInt(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be an integer number', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsInt.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsInt.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsInt.js.map new file mode 100644 index 00000000..fc158abe --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsInt.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsInt.js","sourceRoot":"","sources":["../../../../src/decorator/typechecker/IsInt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC;AAE9B;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,GAAY;IAChC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,iBAAqC;IACzD,OAAO,UAAU,CACf;QACE,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;YAChD,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,qCAAqC,EAChE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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): boolean {\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 + '$property must be an integer number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsNumber.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsNumber.js new file mode 100644 index 00000000..d9808f5c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsNumber.js @@ -0,0 +1,40 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const IS_NUMBER = 'isNumber'; +/** + * Checks if a given value is a number. + */ +export function isNumber(value, options = {}) { + if (typeof value !== 'number') { + return false; + } + if (value === Infinity || value === -Infinity) { + return options.allowInfinity; + } + if (Number.isNaN(value)) { + return options.allowNaN; + } + if (options.maxDecimalPlaces !== undefined) { + let decimalPlaces = 0; + if (value % 1 !== 0) { + decimalPlaces = value.toString().split('.')[1].length; + } + if (decimalPlaces > options.maxDecimalPlaces) { + return false; + } + } + return Number.isFinite(value); +} +/** + * Checks if a value is a number. + */ +export function IsNumber(options = {}, validationOptions) { + return ValidateBy({ + name: IS_NUMBER, + constraints: [options], + validator: { + validate: (value, args) => isNumber(value, args.constraints[0]), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a number conforming to the specified constraints', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsNumber.js.map new file mode 100644 index 00000000..45abc6e2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsNumber.js","sourceRoot":"","sources":["../../../../src/decorator/typechecker/IsNumber.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC;AAWpC;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc,EAAE,UAA2B,EAAE;IACpE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAO,KAAK,CAAC;KACd;IAED,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,CAAC,QAAQ,EAAE;QAC7C,OAAO,OAAO,CAAC,aAAa,CAAC;KAC9B;IAED,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACvB,OAAO,OAAO,CAAC,QAAQ,CAAC;KACzB;IAED,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,EAAE;QAC1C,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE;YACnB,aAAa,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;SACvD;QACD,IAAI,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE;YAC5C,OAAO,KAAK,CAAC;SACd;KACF;IAED,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,UAA2B,EAAE,EAAE,iBAAqC;IAC3F,OAAO,UAAU,CACf;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACxE,cAAc,EAAE,YAAY,CAC1B,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,oEAAoE,EAC/F,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 = {}): boolean {\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('.')[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 + '$property must be a number conforming to the specified constraints',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsObject.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsObject.js new file mode 100644 index 00000000..ac3538de --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsObject.js @@ -0,0 +1,23 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const IS_OBJECT = 'isObject'; +/** + * Checks if the value is valid Object. + * Returns false if the value is not an object. + */ +export function isObject(value) { + return value != null && (typeof value === 'object' || typeof value === 'function') && !Array.isArray(value); +} +/** + * Checks if the value is valid Object. + * Returns false if the value is not an object. + */ +export function IsObject(validationOptions) { + return ValidateBy({ + name: IS_OBJECT, + validator: { + validate: (value, args) => isObject(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be an object', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsObject.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsObject.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsObject.js.map new file mode 100644 index 00000000..feac8450 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsObject.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsObject.js","sourceRoot":"","sources":["../../../../src/decorator/typechecker/IsObject.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC;AAEpC;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9G,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,iBAAqC;IAC5D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,SAAS;QACf,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;YACnD,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,6BAA6B,EAAE,iBAAiB,CAAC;SAC1G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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(value: unknown): value is object {\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 + '$property must be an object', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsString.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsString.js new file mode 100644 index 00000000..2a4fac21 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsString.js @@ -0,0 +1,21 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export const IS_STRING = 'isString'; +/** + * Checks if a given value is a real string. + */ +export function isString(value) { + return value instanceof String || typeof value === 'string'; +} +/** + * Checks if a given value is a real string. + */ +export function IsString(validationOptions) { + return ValidateBy({ + name: IS_STRING, + validator: { + validate: (value, args) => isString(value), + defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a string', validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsString.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsString.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsString.js.map new file mode 100644 index 00000000..b1104d24 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/decorator/typechecker/IsString.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsString.js","sourceRoot":"","sources":["../../../../src/decorator/typechecker/IsString.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC;AAEpC;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,KAAK,YAAY,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,iBAAqC;IAC5D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,SAAS;QACf,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;YACnD,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,4BAA4B,EAAE,iBAAiB,CAAC;SACzG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a string', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/index.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/index.js new file mode 100644 index 00000000..b89ccf3c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/index.js @@ -0,0 +1,60 @@ +import { getMetadataStorage } from './metadata/MetadataStorage'; +import { Validator } from './validation/Validator'; +import { getFromContainer } from './container'; +// ------------------------------------------------------------------------- +// Export everything api users needs +// ------------------------------------------------------------------------- +export * from './container'; +export * from './decorator/decorators'; +export * from './decorator/ValidationOptions'; +export * from './validation/ValidatorConstraintInterface'; +export * from './validation/ValidationError'; +export * from './validation/ValidatorOptions'; +export * from './validation/ValidationArguments'; +export * from './validation/ValidationTypes'; +export * from './validation/Validator'; +export * from './validation-schema/ValidationSchema'; +export * from './register-decorator'; +export * from './metadata/MetadataStorage'; +/** + * Validates given object by object's decorators or given validation schema. + */ +export function validate(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions) { + if (typeof schemaNameOrObject === 'string') { + return getFromContainer(Validator).validate(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions); + } + else { + return getFromContainer(Validator).validate(schemaNameOrObject, objectOrValidationOptions); + } +} +/** + * Validates given object by object's decorators or given validation schema and reject on error. + */ +export function validateOrReject(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions) { + if (typeof schemaNameOrObject === 'string') { + return getFromContainer(Validator).validateOrReject(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions); + } + else { + return getFromContainer(Validator).validateOrReject(schemaNameOrObject, objectOrValidationOptions); + } +} +/** + * Validates given object by object's decorators or given validation schema. + * Note that this method completely ignores async validations. + * If you want to properly perform validation you need to call validate method instead. + */ +export function validateSync(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions) { + if (typeof schemaNameOrObject === 'string') { + return getFromContainer(Validator).validateSync(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions); + } + else { + return getFromContainer(Validator).validateSync(schemaNameOrObject, objectOrValidationOptions); + } +} +/** + * Registers a new validation schema. + */ +export function registerSchema(schema) { + getMetadataStorage().addValidationSchema(schema); +} +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/index.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/index.js.map new file mode 100644 index 00000000..921c2410 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,4EAA4E;AAC5E,oCAAoC;AACpC,4EAA4E;AAE5E,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2CAA2C,CAAC;AAC1D,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,sCAAsC,CAAC;AACrD,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAoB3C;;GAEG;AACH,MAAM,UAAU,QAAQ,CACtB,kBAAmC,EACnC,yBAAqD,EACrD,qBAAwC;IAExC,IAAI,OAAO,kBAAkB,KAAK,QAAQ,EAAE;QAC1C,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC,QAAQ,CACzC,kBAAkB,EAClB,yBAAmC,EACnC,qBAAqB,CACtB,CAAC;KACH;SAAM;QACL,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,kBAAkB,EAAE,yBAA6C,CAAC,CAAC;KAChH;AACH,CAAC;AAgBD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,kBAAmC,EACnC,yBAAqD,EACrD,qBAAwC;IAExC,IAAI,OAAO,kBAAkB,KAAK,QAAQ,EAAE;QAC1C,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC,gBAAgB,CACjD,kBAAkB,EAClB,yBAAmC,EACnC,qBAAqB,CACtB,CAAC;KACH;SAAM;QACL,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC,gBAAgB,CACjD,kBAAkB,EAClB,yBAA6C,CAC9C,CAAC;KACH;AACH,CAAC;AAoBD;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,kBAAmC,EACnC,yBAAqD,EACrD,qBAAwC;IAExC,IAAI,OAAO,kBAAkB,KAAK,QAAQ,EAAE;QAC1C,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC,YAAY,CAC7C,kBAAkB,EAClB,yBAAmC,EACnC,qBAAqB,CACtB,CAAC;KACH;SAAM;QACL,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,kBAAkB,EAAE,yBAA6C,CAAC,CAAC;KACpH;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAwB;IACrD,kBAAkB,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACnD,CAAC","sourcesContent":["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\n// -------------------------------------------------------------------------\n// Export everything api users needs\n// -------------------------------------------------------------------------\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';\n\n// -------------------------------------------------------------------------\n// Shortcut methods for api users\n// -------------------------------------------------------------------------\n\n/**\n * Validates given object.\n */\nexport function validate(object: object, validatorOptions?: ValidatorOptions): Promise;\n\n/**\n * Validates given object by a given validation schema.\n */\nexport function validate(\n schemaName: string,\n object: object,\n validatorOptions?: ValidatorOptions\n): Promise;\n\n/**\n * Validates given object by object's decorators or given validation schema.\n */\nexport function validate(\n schemaNameOrObject: object | string,\n objectOrValidationOptions?: object | ValidatorOptions,\n maybeValidatorOptions?: ValidatorOptions\n): Promise {\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 * Validates given object and reject on error.\n */\nexport function validateOrReject(object: object, validatorOptions?: ValidatorOptions): Promise;\n\n/**\n * Validates given object by a given validation schema and reject on error.\n */\nexport function validateOrReject(\n schemaName: string,\n object: object,\n validatorOptions?: ValidatorOptions\n): Promise;\n\n/**\n * Validates given object by object's decorators or given validation schema and reject on error.\n */\nexport function validateOrReject(\n schemaNameOrObject: object | string,\n objectOrValidationOptions?: object | ValidatorOptions,\n maybeValidatorOptions?: ValidatorOptions\n): Promise {\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 * Performs sync validation of the given object.\n * Note that this method completely ignores async validations.\n * If you want to properly perform validation you need to call validate method instead.\n */\nexport function validateSync(object: object, validatorOptions?: ValidatorOptions): ValidationError[];\n\n/**\n * Validates given object by a given validation schema.\n * Note that this method completely ignores async validations.\n * If you want to properly perform validation you need to call validate method instead.\n */\nexport function validateSync(\n schemaName: string,\n object: object,\n validatorOptions?: ValidatorOptions\n): ValidationError[];\n\n/**\n * Validates given object by object's decorators or given validation schema.\n * Note that this method completely ignores async validations.\n * If you want to properly perform validation you need to call validate method instead.\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 * Registers a new validation schema.\n */\nexport function registerSchema(schema: ValidationSchema): void {\n getMetadataStorage().addValidationSchema(schema);\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/ConstraintMetadata.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/ConstraintMetadata.js new file mode 100644 index 00000000..099b2a2d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/ConstraintMetadata.js @@ -0,0 +1,24 @@ +import { getFromContainer } from '../container'; +/** + * This metadata interface contains information for custom validators. + */ +export class ConstraintMetadata { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + constructor(target, name, async = false) { + this.target = target; + this.name = name; + this.async = async; + } + // ------------------------------------------------------------------------- + // Accessors + // ------------------------------------------------------------------------- + /** + * Instance of the target custom validation class which performs validation. + */ + get instance() { + return getFromContainer(this.target); + } +} +//# sourceMappingURL=ConstraintMetadata.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/ConstraintMetadata.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/ConstraintMetadata.js.map new file mode 100644 index 00000000..2cb0edfe --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/ConstraintMetadata.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ConstraintMetadata.js","sourceRoot":"","sources":["../../../src/metadata/ConstraintMetadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAoB7B,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,YAAY,MAAgB,EAAE,IAAa,EAAE,QAAiB,KAAK;QACjE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,4EAA4E;IAC5E,YAAY;IACZ,4EAA4E;IAE5E;;OAEG;IACH,IAAI,QAAQ;QACV,OAAO,gBAAgB,CAA+B,IAAI,CAAC,MAAM,CAAC,CAAC;IACrE,CAAC;CACF","sourcesContent":["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(this.target);\n }\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/MetadataStorage.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/MetadataStorage.js new file mode 100644 index 00000000..0c1de2e4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/MetadataStorage.js @@ -0,0 +1,132 @@ +import { ValidationSchemaToMetadataTransformer } from '../validation-schema/ValidationSchemaToMetadataTransformer'; +import { getGlobal } from '../utils'; +/** + * Storage all metadatas. + */ +export class MetadataStorage { + constructor() { + // ------------------------------------------------------------------------- + // Private properties + // ------------------------------------------------------------------------- + this.validationMetadatas = []; + this.constraintMetadatas = []; + } + get hasValidationMetaData() { + return !!this.validationMetadatas.length; + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Adds a new validation metadata. + */ + addValidationSchema(schema) { + const validationMetadatas = new ValidationSchemaToMetadataTransformer().transform(schema); + validationMetadatas.forEach(validationMetadata => this.addValidationMetadata(validationMetadata)); + } + /** + * Adds a new validation metadata. + */ + addValidationMetadata(metadata) { + this.validationMetadatas.push(metadata); + } + /** + * Adds a new constraint metadata. + */ + addConstraintMetadata(metadata) { + this.constraintMetadatas.push(metadata); + } + /** + * Groups metadata by their property names. + */ + groupByPropertyName(metadata) { + const grouped = {}; + metadata.forEach(metadata => { + if (!grouped[metadata.propertyName]) + grouped[metadata.propertyName] = []; + grouped[metadata.propertyName].push(metadata); + }); + return grouped; + } + /** + * Gets all validation metadatas for the given object with the given groups. + */ + getTargetValidationMetadatas(targetConstructor, targetSchema, always, strictGroups, groups) { + const includeMetadataBecauseOfAlwaysOption = (metadata) => { + // `metadata.always` overrides global default. + if (typeof metadata.always !== 'undefined') + return metadata.always; + // `metadata.groups` overrides global default. + if (metadata.groups && metadata.groups.length) + return false; + // Use global default. + return always; + }; + const excludeMetadataBecauseOfStrictGroupsOption = (metadata) => { + if (strictGroups) { + // Validation is not using groups. + if (!groups || !groups.length) { + // `metadata.groups` has at least one group. + if (metadata.groups && metadata.groups.length) + return true; + } + } + return false; + }; + // get directly related to a target metadatas + const originalMetadatas = this.validationMetadatas.filter(metadata => { + if (metadata.target !== targetConstructor && metadata.target !== targetSchema) + return false; + if (includeMetadataBecauseOfAlwaysOption(metadata)) + return true; + if (excludeMetadataBecauseOfStrictGroupsOption(metadata)) + return false; + if (groups && groups.length > 0) + return metadata.groups && !!metadata.groups.find(group => groups.indexOf(group) !== -1); + return true; + }); + // get metadatas for inherited classes + const inheritedMetadatas = this.validationMetadatas.filter(metadata => { + // if target is a string it's means we validate against a schema, and there is no inheritance support for schemas + if (typeof metadata.target === 'string') + return false; + if (metadata.target === targetConstructor) + return false; + if (metadata.target instanceof Function && !(targetConstructor.prototype instanceof metadata.target)) + return false; + if (includeMetadataBecauseOfAlwaysOption(metadata)) + return true; + if (excludeMetadataBecauseOfStrictGroupsOption(metadata)) + return false; + if (groups && groups.length > 0) + return metadata.groups && !!metadata.groups.find(group => groups.indexOf(group) !== -1); + return true; + }); + // filter out duplicate metadatas, prefer original metadatas instead of inherited metadatas + const uniqueInheritedMetadatas = inheritedMetadatas.filter(inheritedMetadata => { + return !originalMetadatas.find(originalMetadata => { + return (originalMetadata.propertyName === inheritedMetadata.propertyName && + originalMetadata.type === inheritedMetadata.type); + }); + }); + return originalMetadatas.concat(uniqueInheritedMetadatas); + } + /** + * Gets all validator constraints for the given object. + */ + getTargetValidatorConstraints(target) { + return this.constraintMetadatas.filter(metadata => metadata.target === target); + } +} +/** + * Gets metadata storage. + * Metadata storage follows the best practices and stores metadata in a global variable. + */ +export function getMetadataStorage() { + const global = getGlobal(); + if (!global.classValidatorMetadataStorage) { + global.classValidatorMetadataStorage = new MetadataStorage(); + } + return global.classValidatorMetadataStorage; +} +//# sourceMappingURL=MetadataStorage.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/MetadataStorage.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/MetadataStorage.js.map new file mode 100644 index 00000000..5e5c60d1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/MetadataStorage.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MetadataStorage.js","sourceRoot":"","sources":["../../../src/metadata/MetadataStorage.ts"],"names":[],"mappings":"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","sourcesContent":["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: ValidationMetadata[] = [];\n private constraintMetadatas: ConstraintMetadata[] = [];\n\n get hasValidationMetaData(): boolean {\n return !!this.validationMetadatas.length;\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 this.validationMetadatas.push(metadata);\n }\n\n /**\n * Adds a new constraint metadata.\n */\n addConstraintMetadata(metadata: ConstraintMetadata): void {\n this.constraintMetadatas.push(metadata);\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 originalMetadatas = this.validationMetadatas.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 inheritedMetadatas = this.validationMetadatas.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.filter(metadata => metadata.target === 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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/ValidationMetadata.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/ValidationMetadata.js new file mode 100644 index 00000000..90198f55 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/ValidationMetadata.js @@ -0,0 +1,36 @@ +/** + * This metadata contains validation rules. + */ +export class ValidationMetadata { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + constructor(args) { + /** + * Validation groups used for this validation. + */ + this.groups = []; + /** + * Specifies if validated value is an array and each of its item must be validated. + */ + this.each = false; + /* + * A transient set of data passed through to the validation result for response mapping + */ + this.context = undefined; + this.type = args.type; + this.target = args.target; + this.propertyName = args.propertyName; + this.constraints = args.constraints; + this.constraintCls = args.constraintCls; + this.validationTypeOptions = args.validationTypeOptions; + if (args.validationOptions) { + this.message = args.validationOptions.message; + this.groups = args.validationOptions.groups; + this.always = args.validationOptions.always; + this.each = args.validationOptions.each; + this.context = args.validationOptions.context; + } + } +} +//# sourceMappingURL=ValidationMetadata.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/ValidationMetadata.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/ValidationMetadata.js.map new file mode 100644 index 00000000..ae7fff32 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/ValidationMetadata.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationMetadata.js","sourceRoot":"","sources":["../../../src/metadata/ValidationMetadata.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,OAAO,kBAAkB;IA4D7B,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,YAAY,IAA4B;QA7BxC;;WAEG;QACH,WAAM,GAAa,EAAE,CAAC;QAOtB;;WAEG;QACH,SAAI,GAAY,KAAK,CAAC;QAEtB;;WAEG;QACH,YAAO,GAAS,SAAS,CAAC;QAYxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;QACxD,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YAC9C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;YAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;YAC5C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;YACxC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;SAC/C;IACH,CAAC;CACF","sourcesContent":["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 * 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.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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/ValidationMetadataArgs.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/ValidationMetadataArgs.js new file mode 100644 index 00000000..7e916dc7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/ValidationMetadataArgs.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=ValidationMetadataArgs.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/ValidationMetadataArgs.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/ValidationMetadataArgs.js.map new file mode 100644 index 00000000..3f88114b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/metadata/ValidationMetadataArgs.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationMetadataArgs.js","sourceRoot":"","sources":["../../../src/metadata/ValidationMetadataArgs.ts"],"names":[],"mappings":"","sourcesContent":["import { ValidationOptions } from '../decorator/ValidationOptions';\n\n/**\n * Constructor arguments for ValidationMetadata class.\n */\nexport interface ValidationMetadataArgs {\n /**\n * Validation type.\n */\n type: string;\n\n /**\n * Object that is used to be validated.\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 options.\n */\n validationOptions?: ValidationOptions;\n\n /**\n * Extra options specific to validation type.\n */\n validationTypeOptions?: any;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/register-decorator.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/register-decorator.js new file mode 100644 index 00000000..f64e03f3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/register-decorator.js @@ -0,0 +1,43 @@ +import { ConstraintMetadata } from './metadata/ConstraintMetadata'; +import { ValidationMetadata } from './metadata/ValidationMetadata'; +import { ValidationTypes } from './validation/ValidationTypes'; +import { getFromContainer } from './container'; +import { MetadataStorage, getMetadataStorage } from './metadata/MetadataStorage'; +/** + * Registers a custom validation decorator. + */ +export function registerDecorator(options) { + let constraintCls; + if (options.validator instanceof Function) { + constraintCls = options.validator; + const constraintClasses = getFromContainer(MetadataStorage).getTargetValidatorConstraints(options.validator); + if (constraintClasses.length > 1) { + throw `More than one implementation of ValidatorConstraintInterface found for validator on: ${options.target.name}:${options.propertyName}`; + } + } + else { + const validator = options.validator; + constraintCls = class CustomConstraint { + validate(value, validationArguments) { + return validator.validate(value, validationArguments); + } + defaultMessage(validationArguments) { + if (validator.defaultMessage) { + return validator.defaultMessage(validationArguments); + } + return ''; + } + }; + getMetadataStorage().addConstraintMetadata(new ConstraintMetadata(constraintCls, options.name, options.async)); + } + const validationMetadataArgs = { + type: options.name && ValidationTypes.isValid(options.name) ? options.name : ValidationTypes.CUSTOM_VALIDATION, + target: options.target, + propertyName: options.propertyName, + validationOptions: options.options, + constraintCls: constraintCls, + constraints: options.constraints, + }; + getMetadataStorage().addValidationMetadata(new ValidationMetadata(validationMetadataArgs)); +} +//# sourceMappingURL=register-decorator.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/register-decorator.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/register-decorator.js.map new file mode 100644 index 00000000..e01e4fe3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/register-decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"register-decorator.js","sourceRoot":"","sources":["../../src/register-decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAwCjF;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAmC;IACnE,IAAI,aAAuB,CAAC;IAC5B,IAAI,OAAO,CAAC,SAAS,YAAY,QAAQ,EAAE;QACzC,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC;QAClC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC,6BAA6B,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC7G,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;YAChC,MAAM,wFAAwF,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;SAC7I;KACF;SAAM;QACL,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACpC,aAAa,GAAG,MAAM,gBAAgB;YACpC,QAAQ,CAAC,KAAU,EAAE,mBAAyC;gBAC5D,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;YACxD,CAAC;YAED,cAAc,CAAC,mBAAyC;gBACtD,IAAI,SAAS,CAAC,cAAc,EAAE;oBAC5B,OAAO,SAAS,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;iBACtD;gBAED,OAAO,EAAE,CAAC;YACZ,CAAC;SACF,CAAC;QACF,kBAAkB,EAAE,CAAC,qBAAqB,CAAC,IAAI,kBAAkB,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;KAChH;IAED,MAAM,sBAAsB,GAA2B;QACrD,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,iBAAiB;QAC9G,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,iBAAiB,EAAE,OAAO,CAAC,OAAO;QAClC,aAAa,EAAE,aAAa;QAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAC;IACF,kBAAkB,EAAE,CAAC,qBAAqB,CAAC,IAAI,kBAAkB,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAC7F,CAAC","sourcesContent":["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 {\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 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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/convert-to-array.util.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/convert-to-array.util.js new file mode 100644 index 00000000..2eea575f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/convert-to-array.util.js @@ -0,0 +1,10 @@ +/** + * Convert Map, Set to Array + */ +export function convertToArray(val) { + if (val instanceof Map) { + return Array.from(val.values()); + } + return Array.isArray(val) ? val : Array.from(val); +} +//# sourceMappingURL=convert-to-array.util.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/convert-to-array.util.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/convert-to-array.util.js.map new file mode 100644 index 00000000..41128461 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/convert-to-array.util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"convert-to-array.util.js","sourceRoot":"","sources":["../../../src/utils/convert-to-array.util.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,cAAc,CAAI,GAAoC;IACpE,IAAI,GAAG,YAAY,GAAG,EAAE;QACtB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;KACjC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpD,CAAC","sourcesContent":["/**\n * Convert Map, Set to Array\n */\nexport function convertToArray(val: Array | Set | Map): Array {\n if (val instanceof Map) {\n return Array.from(val.values());\n }\n return Array.isArray(val) ? val : Array.from(val);\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/get-global.util.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/get-global.util.js new file mode 100644 index 00000000..a8b64cc4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/get-global.util.js @@ -0,0 +1,29 @@ +/** + * This function returns the global object across Node and browsers. + * + * Note: `globalThis` is the standardized approach however it has been added to + * Node.js in version 12. We need to include this snippet until Node 12 EOL. + */ +export function getGlobal() { + if (typeof globalThis !== 'undefined') { + return globalThis; + } + if (typeof global !== 'undefined') { + return global; + } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'window'. + if (typeof window !== 'undefined') { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'window'. + return window; + } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'self'. + if (typeof self !== 'undefined') { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'self'. + return self; + } +} +//# sourceMappingURL=get-global.util.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/get-global.util.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/get-global.util.js.map new file mode 100644 index 00000000..83b6cf4a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/get-global.util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"get-global.util.js","sourceRoot":"","sources":["../../../src/utils/get-global.util.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,SAAS;IACvB,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;QACrC,OAAO,UAAU,CAAC;KACnB;IAED,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,OAAO,MAAM,CAAC;KACf;IAED,6DAA6D;IAC7D,yCAAyC;IACzC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,6DAA6D;QAC7D,yCAAyC;QACzC,OAAO,MAAM,CAAC;KACf;IAED,6DAA6D;IAC7D,uCAAuC;IACvC,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;QAC/B,6DAA6D;QAC7D,uCAAuC;QACvC,OAAO,IAAI,CAAC;KACb;AACH,CAAC","sourcesContent":["/**\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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/index.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/index.js new file mode 100644 index 00000000..827eaa7d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/index.js @@ -0,0 +1,4 @@ +export * from './convert-to-array.util'; +export * from './get-global.util'; +export * from './is-promise.util'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/index.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/index.js.map new file mode 100644 index 00000000..5ae486c5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC","sourcesContent":["export * from './convert-to-array.util';\nexport * from './get-global.util';\nexport * from './is-promise.util';\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/is-promise.util.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/is-promise.util.js new file mode 100644 index 00000000..c669c1b3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/is-promise.util.js @@ -0,0 +1,5 @@ +// https://github.com/TylorS/typed-is-promise/blob/abf1514e1b6961adfc75765476b0debb96b2c3ae/src/index.ts +export function isPromise(p) { + return p !== null && typeof p === 'object' && typeof p.then === 'function'; +} +//# sourceMappingURL=is-promise.util.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/is-promise.util.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/is-promise.util.js.map new file mode 100644 index 00000000..a06a8c55 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/utils/is-promise.util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"is-promise.util.js","sourceRoot":"","sources":["../../../src/utils/is-promise.util.ts"],"names":[],"mappings":"AAAA,wGAAwG;AAExG,MAAM,UAAU,SAAS,CAAU,CAAM;IACvC,OAAO,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;AAC7E,CAAC","sourcesContent":["// https://github.com/TylorS/typed-is-promise/blob/abf1514e1b6961adfc75765476b0debb96b2c3ae/src/index.ts\n\nexport function isPromise(p: any): p is Promise {\n return p !== null && typeof p === 'object' && typeof p.then === 'function';\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation-schema/ValidationSchema.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation-schema/ValidationSchema.js new file mode 100644 index 00000000..bb7c405d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation-schema/ValidationSchema.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=ValidationSchema.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation-schema/ValidationSchema.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation-schema/ValidationSchema.js.map new file mode 100644 index 00000000..27cc4885 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation-schema/ValidationSchema.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationSchema.js","sourceRoot":"","sources":["../../../src/validation-schema/ValidationSchema.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Validation schema is a decorator-free way of validation of your objects.\n * Also using validation schemas makes this library to be easily used with es6/es5.\n */\nexport interface ValidationSchema {\n /**\n * Schema name. This is required, because we tell validator to validate by this schema using its name.\n */\n name: string;\n\n /**\n * Validated properties.\n */\n properties: {\n /**\n * Name of the object's property to be validated which holds an array of validation constraints.\n */\n [propertyName: string]: {\n /**\n * Validation type. Should be one of the ValidationTypes value.\n */\n type: string;\n\n /**\n * Constraints set by validation type.\n */\n constraints?: any[];\n\n /**\n * Error message used to be used on validation fail.\n * You can use \"$value\" to use value that was failed by validation.\n * You can use \"$constraint1\" and \"$constraint2\" keys in the message string,\n * and they will be replaced with constraint values if they exist.\n * Message can be either string, either a function that returns a string.\n * Second option allows to use values and custom messages depend of them.\n */\n message?: string | ((value?: any, constraint1?: any, constraint2?: any) => string);\n\n /**\n * Specifies if validated value is an array and each of its item must be validated.\n */\n each?: boolean;\n\n /**\n * Indicates if validation must be performed always, no matter of validation groups used.\n */\n always?: boolean;\n\n /**\n * Validation groups used for this validation.\n */\n groups?: string[];\n\n /**\n * Specific validation type options.\n */\n options?: any;\n }[];\n };\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation-schema/ValidationSchemaToMetadataTransformer.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation-schema/ValidationSchemaToMetadataTransformer.js new file mode 100644 index 00000000..7ff7b570 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation-schema/ValidationSchemaToMetadataTransformer.js @@ -0,0 +1,30 @@ +import { ValidationMetadata } from '../metadata/ValidationMetadata'; +/** + * Used to transform validation schemas to validation metadatas. + */ +export class ValidationSchemaToMetadataTransformer { + transform(schema) { + const metadatas = []; + Object.keys(schema.properties).forEach(property => { + schema.properties[property].forEach(validation => { + const validationOptions = { + message: validation.message, + groups: validation.groups, + always: validation.always, + each: validation.each, + }; + const args = { + type: validation.type, + target: schema.name, + propertyName: property, + constraints: validation.constraints, + validationTypeOptions: validation.options, + validationOptions: validationOptions, + }; + metadatas.push(new ValidationMetadata(args)); + }); + }); + return metadatas; + } +} +//# sourceMappingURL=ValidationSchemaToMetadataTransformer.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation-schema/ValidationSchemaToMetadataTransformer.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation-schema/ValidationSchemaToMetadataTransformer.js.map new file mode 100644 index 00000000..b7445e36 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation-schema/ValidationSchemaToMetadataTransformer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationSchemaToMetadataTransformer.js","sourceRoot":"","sources":["../../../src/validation-schema/ValidationSchemaToMetadataTransformer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAIpE;;GAEG;AACH,MAAM,OAAO,qCAAqC;IAChD,SAAS,CAAC,MAAwB;QAChC,MAAM,SAAS,GAAyB,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAChD,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;gBAC/C,MAAM,iBAAiB,GAAsB;oBAC3C,OAAO,EAAE,UAAU,CAAC,OAAO;oBAC3B,MAAM,EAAE,UAAU,CAAC,MAAM;oBACzB,MAAM,EAAE,UAAU,CAAC,MAAM;oBACzB,IAAI,EAAE,UAAU,CAAC,IAAI;iBACtB,CAAC;gBACF,MAAM,IAAI,GAA2B;oBACnC,IAAI,EAAE,UAAU,CAAC,IAAI;oBACrB,MAAM,EAAE,MAAM,CAAC,IAAI;oBACnB,YAAY,EAAE,QAAQ;oBACtB,WAAW,EAAE,UAAU,CAAC,WAAW;oBACnC,qBAAqB,EAAE,UAAU,CAAC,OAAO;oBACzC,iBAAiB,EAAE,iBAAiB;iBACrC,CAAC;gBACF,SAAS,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACnB,CAAC;CACF","sourcesContent":["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 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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationArguments.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationArguments.js new file mode 100644 index 00000000..e6b559f7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationArguments.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=ValidationArguments.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationArguments.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationArguments.js.map new file mode 100644 index 00000000..c2b0f6ff --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationArguments.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationArguments.js","sourceRoot":"","sources":["../../../src/validation/ValidationArguments.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Arguments being sent to message builders - user can create message either by simply returning a string,\n * either by returning a function that accepts MessageArguments and returns a message string built based on these arguments.\n */\nexport interface ValidationArguments {\n /**\n * Validating value.\n */\n value: any;\n\n /**\n * Constraints set by this validation type.\n */\n constraints: any[];\n\n /**\n * Name of the target that is being validated.\n */\n targetName: string;\n\n /**\n * Object that is being validated.\n */\n object: object;\n\n /**\n * Name of the object's property being validated.\n */\n property: string;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationError.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationError.js new file mode 100644 index 00000000..df889d4d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationError.js @@ -0,0 +1,40 @@ +/** + * Validation error description. + */ +export class ValidationError { + /** + * + * @param shouldDecorate decorate the message with ANSI formatter escape codes for better readability + * @param hasParent true when the error is a child of an another one + * @param parentPath path as string to the parent of this property + */ + toString(shouldDecorate = false, hasParent = false, parentPath = ``) { + const boldStart = shouldDecorate ? `\x1b[1m` : ``; + const boldEnd = shouldDecorate ? `\x1b[22m` : ``; + const propConstraintFailed = (propertyName) => ` - property ${boldStart}${parentPath}${propertyName}${boldEnd} has failed the following constraints: ${boldStart}${Object.keys(this.constraints).join(`, `)}${boldEnd} \n`; + if (!hasParent) { + return (`An instance of ${boldStart}${this.target ? this.target.constructor.name : 'an object'}${boldEnd} has failed the validation:\n` + + (this.constraints ? propConstraintFailed(this.property) : ``) + + (this.children + ? this.children.map(childError => childError.toString(shouldDecorate, true, this.property)).join(``) + : ``)); + } + else { + // we format numbers as array indexes for better readability. + const formattedProperty = Number.isInteger(+this.property) + ? `[${this.property}]` + : `${parentPath ? `.` : ``}${this.property}`; + if (this.constraints) { + return propConstraintFailed(formattedProperty); + } + else { + return this.children + ? this.children + .map(childError => childError.toString(shouldDecorate, true, `${parentPath}${formattedProperty}`)) + .join(``) + : ``; + } + } + } +} +//# sourceMappingURL=ValidationError.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationError.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationError.js.map new file mode 100644 index 00000000..c83c15a7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationError.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationError.js","sourceRoot":"","sources":["../../../src/validation/ValidationError.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,eAAe;IAuC1B;;;;;OAKG;IACH,QAAQ,CAAC,iBAA0B,KAAK,EAAE,YAAqB,KAAK,EAAE,aAAqB,EAAE;QAC3F,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,oBAAoB,GAAG,CAAC,YAAoB,EAAU,EAAE,CAC5D,eAAe,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,OAAO,0CAA0C,SAAS,GAAG,MAAM,CAAC,IAAI,CAC7H,IAAI,CAAC,WAAW,CACjB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,KAAK,CAAC;QAE9B,IAAI,CAAC,SAAS,EAAE;YACd,OAAO,CACL,kBAAkB,SAAS,GACzB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,WAC/C,GAAG,OAAO,+BAA+B;gBACzC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,CAAC,IAAI,CAAC,QAAQ;oBACZ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpG,CAAC,CAAC,EAAE,CAAC,CACR,CAAC;SACH;aAAM;YACL,6DAA6D;YAC7D,MAAM,iBAAiB,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACxD,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG;gBACtB,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAE/C,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,OAAO,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;aAChD;iBAAM;gBACL,OAAO,IAAI,CAAC,QAAQ;oBAClB,CAAC,CAAC,IAAI,CAAC,QAAQ;yBACV,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,EAAE,GAAG,UAAU,GAAG,iBAAiB,EAAE,CAAC,CAAC;yBACjG,IAAI,CAAC,EAAE,CAAC;oBACb,CAAC,CAAC,EAAE,CAAC;aACR;SACF;IACH,CAAC;CACF","sourcesContent":["/**\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 */\n toString(shouldDecorate: boolean = false, hasParent: boolean = false, parentPath: string = ``): string {\n const boldStart = shouldDecorate ? `\\x1b[1m` : ``;\n const boldEnd = shouldDecorate ? `\\x1b[22m` : ``;\n const propConstraintFailed = (propertyName: string): string =>\n ` - property ${boldStart}${parentPath}${propertyName}${boldEnd} has failed the following constraints: ${boldStart}${Object.keys(\n this.constraints\n ).join(`, `)}${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.map(childError => childError.toString(shouldDecorate, true, this.property)).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 => childError.toString(shouldDecorate, true, `${parentPath}${formattedProperty}`))\n .join(``)\n : ``;\n }\n }\n }\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationExecutor.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationExecutor.js new file mode 100644 index 00000000..ba75b846 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationExecutor.js @@ -0,0 +1,318 @@ +import { ValidationError } from './ValidationError'; +import { ValidationTypes } from './ValidationTypes'; +import { ValidationUtils } from './ValidationUtils'; +import { isPromise, convertToArray } from '../utils'; +import { getMetadataStorage } from '../metadata/MetadataStorage'; +/** + * Executes validation over given object. + */ +export class ValidationExecutor { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + constructor(validator, validatorOptions) { + this.validator = validator; + this.validatorOptions = validatorOptions; + // ------------------------------------------------------------------------- + // Properties + // ------------------------------------------------------------------------- + this.awaitingPromises = []; + this.ignoreAsyncValidations = false; + // ------------------------------------------------------------------------- + // Private Properties + // ------------------------------------------------------------------------- + this.metadataStorage = getMetadataStorage(); + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + execute(object, targetSchema, validationErrors) { + var _a; + /** + * If there is no metadata registered it means possibly the dependencies are not flatterned and + * more than one instance is used. + * + * TODO: This needs proper handling, forcing to use the same container or some other proper solution. + */ + if (!this.metadataStorage.hasValidationMetaData && ((_a = this.validatorOptions) === null || _a === void 0 ? void 0 : _a.enableDebugMessages) === true) { + console.warn(`No metadata found. There is more than once class-validator version installed probably. You need to flatten your dependencies.`); + } + const groups = this.validatorOptions ? this.validatorOptions.groups : undefined; + const strictGroups = (this.validatorOptions && this.validatorOptions.strictGroups) || false; + const always = (this.validatorOptions && this.validatorOptions.always) || false; + const targetMetadatas = this.metadataStorage.getTargetValidationMetadatas(object.constructor, targetSchema, always, strictGroups, groups); + const groupedMetadatas = this.metadataStorage.groupByPropertyName(targetMetadatas); + if (this.validatorOptions && this.validatorOptions.forbidUnknownValues && !targetMetadatas.length) { + const validationError = new ValidationError(); + if (!this.validatorOptions || + !this.validatorOptions.validationError || + this.validatorOptions.validationError.target === undefined || + this.validatorOptions.validationError.target === true) + validationError.target = object; + validationError.value = undefined; + validationError.property = undefined; + validationError.children = []; + validationError.constraints = { unknownValue: 'an unknown value was passed to the validate function' }; + validationErrors.push(validationError); + return; + } + if (this.validatorOptions && this.validatorOptions.whitelist) + this.whitelist(object, groupedMetadatas, validationErrors); + // General validation + Object.keys(groupedMetadatas).forEach(propertyName => { + const value = object[propertyName]; + const definedMetadatas = groupedMetadatas[propertyName].filter(metadata => metadata.type === ValidationTypes.IS_DEFINED); + const metadatas = groupedMetadatas[propertyName].filter(metadata => metadata.type !== ValidationTypes.IS_DEFINED && metadata.type !== ValidationTypes.WHITELIST); + if (value instanceof Promise && + metadatas.find(metadata => metadata.type === ValidationTypes.PROMISE_VALIDATION)) { + this.awaitingPromises.push(value.then(resolvedValue => { + this.performValidations(object, resolvedValue, propertyName, definedMetadatas, metadatas, validationErrors); + })); + } + else { + this.performValidations(object, value, propertyName, definedMetadatas, metadatas, validationErrors); + } + }); + } + whitelist(object, groupedMetadatas, validationErrors) { + const notAllowedProperties = []; + Object.keys(object).forEach(propertyName => { + // does this property have no metadata? + if (!groupedMetadatas[propertyName] || groupedMetadatas[propertyName].length === 0) + notAllowedProperties.push(propertyName); + }); + if (notAllowedProperties.length > 0) { + if (this.validatorOptions && this.validatorOptions.forbidNonWhitelisted) { + // throw errors + notAllowedProperties.forEach(property => { + const validationError = this.generateValidationError(object, object[property], property); + validationError.constraints = { [ValidationTypes.WHITELIST]: `property ${property} should not exist` }; + validationError.children = undefined; + validationErrors.push(validationError); + }); + } + else { + // strip non allowed properties + notAllowedProperties.forEach(property => delete object[property]); + } + } + } + stripEmptyErrors(errors) { + return errors.filter(error => { + if (error.children) { + error.children = this.stripEmptyErrors(error.children); + } + if (Object.keys(error.constraints).length === 0) { + if (error.children.length === 0) { + return false; + } + else { + delete error.constraints; + } + } + return true; + }); + } + // ------------------------------------------------------------------------- + // Private Methods + // ------------------------------------------------------------------------- + performValidations(object, value, propertyName, definedMetadatas, metadatas, validationErrors) { + const customValidationMetadatas = metadatas.filter(metadata => metadata.type === ValidationTypes.CUSTOM_VALIDATION); + const nestedValidationMetadatas = metadatas.filter(metadata => metadata.type === ValidationTypes.NESTED_VALIDATION); + const conditionalValidationMetadatas = metadatas.filter(metadata => metadata.type === ValidationTypes.CONDITIONAL_VALIDATION); + const validationError = this.generateValidationError(object, value, propertyName); + validationErrors.push(validationError); + const canValidate = this.conditionalValidations(object, value, conditionalValidationMetadatas); + if (!canValidate) { + return; + } + // handle IS_DEFINED validation type the special way - it should work no matter skipUndefinedProperties/skipMissingProperties is set or not + this.customValidations(object, value, definedMetadatas, validationError); + this.mapContexts(object, value, definedMetadatas, validationError); + if (value === undefined && this.validatorOptions && this.validatorOptions.skipUndefinedProperties === true) { + return; + } + if (value === null && this.validatorOptions && this.validatorOptions.skipNullProperties === true) { + return; + } + if ((value === null || value === undefined) && + this.validatorOptions && + this.validatorOptions.skipMissingProperties === true) { + return; + } + this.customValidations(object, value, customValidationMetadatas, validationError); + this.nestedValidations(value, nestedValidationMetadatas, validationError.children); + this.mapContexts(object, value, metadatas, validationError); + this.mapContexts(object, value, customValidationMetadatas, validationError); + } + generateValidationError(object, value, propertyName) { + const validationError = new ValidationError(); + if (!this.validatorOptions || + !this.validatorOptions.validationError || + this.validatorOptions.validationError.target === undefined || + this.validatorOptions.validationError.target === true) + validationError.target = object; + if (!this.validatorOptions || + !this.validatorOptions.validationError || + this.validatorOptions.validationError.value === undefined || + this.validatorOptions.validationError.value === true) + validationError.value = value; + validationError.property = propertyName; + validationError.children = []; + validationError.constraints = {}; + return validationError; + } + conditionalValidations(object, value, metadatas) { + return metadatas + .map(metadata => metadata.constraints[0](object, value)) + .reduce((resultA, resultB) => resultA && resultB, true); + } + customValidations(object, value, metadatas, error) { + metadatas.forEach(metadata => { + this.metadataStorage.getTargetValidatorConstraints(metadata.constraintCls).forEach(customConstraintMetadata => { + if (customConstraintMetadata.async && this.ignoreAsyncValidations) + return; + if (this.validatorOptions && + this.validatorOptions.stopAtFirstError && + Object.keys(error.constraints || {}).length > 0) + return; + const validationArguments = { + targetName: object.constructor ? object.constructor.name : undefined, + property: metadata.propertyName, + object: object, + value: value, + constraints: metadata.constraints, + }; + if (!metadata.each || !(Array.isArray(value) || value instanceof Set || value instanceof Map)) { + const validatedValue = customConstraintMetadata.instance.validate(value, validationArguments); + if (isPromise(validatedValue)) { + const promise = validatedValue.then(isValid => { + if (!isValid) { + const [type, message] = this.createValidationError(object, value, metadata, customConstraintMetadata); + error.constraints[type] = message; + if (metadata.context) { + if (!error.contexts) { + error.contexts = {}; + } + error.contexts[type] = Object.assign(error.contexts[type] || {}, metadata.context); + } + } + }); + this.awaitingPromises.push(promise); + } + else { + if (!validatedValue) { + const [type, message] = this.createValidationError(object, value, metadata, customConstraintMetadata); + error.constraints[type] = message; + } + } + return; + } + // convert set and map into array + const arrayValue = convertToArray(value); + // Validation needs to be applied to each array item + const validatedSubValues = arrayValue.map((subValue) => customConstraintMetadata.instance.validate(subValue, validationArguments)); + const validationIsAsync = validatedSubValues.some((validatedSubValue) => isPromise(validatedSubValue)); + if (validationIsAsync) { + // Wrap plain values (if any) in promises, so that all are async + const asyncValidatedSubValues = validatedSubValues.map((validatedSubValue) => isPromise(validatedSubValue) ? validatedSubValue : Promise.resolve(validatedSubValue)); + const asyncValidationIsFinishedPromise = Promise.all(asyncValidatedSubValues).then((flatValidatedValues) => { + const validationResult = flatValidatedValues.every((isValid) => isValid); + if (!validationResult) { + const [type, message] = this.createValidationError(object, value, metadata, customConstraintMetadata); + error.constraints[type] = message; + if (metadata.context) { + if (!error.contexts) { + error.contexts = {}; + } + error.contexts[type] = Object.assign(error.contexts[type] || {}, metadata.context); + } + } + }); + this.awaitingPromises.push(asyncValidationIsFinishedPromise); + return; + } + const validationResult = validatedSubValues.every((isValid) => isValid); + if (!validationResult) { + const [type, message] = this.createValidationError(object, value, metadata, customConstraintMetadata); + error.constraints[type] = message; + } + }); + }); + } + nestedValidations(value, metadatas, errors) { + if (value === void 0) { + return; + } + metadatas.forEach(metadata => { + if (metadata.type !== ValidationTypes.NESTED_VALIDATION && metadata.type !== ValidationTypes.PROMISE_VALIDATION) { + return; + } + if (Array.isArray(value) || value instanceof Set || value instanceof Map) { + // Treats Set as an array - as index of Set value is value itself and it is common case to have Object as value + const arrayLikeValue = value instanceof Set ? Array.from(value) : value; + arrayLikeValue.forEach((subValue, index) => { + this.performValidations(value, subValue, index.toString(), [], metadatas, errors); + }); + } + else if (value instanceof Object) { + const targetSchema = typeof metadata.target === 'string' ? metadata.target : metadata.target.name; + this.execute(value, targetSchema, errors); + } + else { + const error = new ValidationError(); + error.value = value; + error.property = metadata.propertyName; + error.target = metadata.target; + const [type, message] = this.createValidationError(metadata.target, value, metadata); + error.constraints = { + [type]: message, + }; + errors.push(error); + } + }); + } + mapContexts(object, value, metadatas, error) { + return metadatas.forEach(metadata => { + if (metadata.context) { + let customConstraint; + if (metadata.type === ValidationTypes.CUSTOM_VALIDATION) { + const customConstraints = this.metadataStorage.getTargetValidatorConstraints(metadata.constraintCls); + customConstraint = customConstraints[0]; + } + const type = this.getConstraintType(metadata, customConstraint); + if (error.constraints[type]) { + if (!error.contexts) { + error.contexts = {}; + } + error.contexts[type] = Object.assign(error.contexts[type] || {}, metadata.context); + } + } + }); + } + createValidationError(object, value, metadata, customValidatorMetadata) { + const targetName = object.constructor ? object.constructor.name : undefined; + const type = this.getConstraintType(metadata, customValidatorMetadata); + const validationArguments = { + targetName: targetName, + property: metadata.propertyName, + object: object, + value: value, + constraints: metadata.constraints, + }; + let message = metadata.message || ''; + if (!metadata.message && + (!this.validatorOptions || (this.validatorOptions && !this.validatorOptions.dismissDefaultMessages))) { + if (customValidatorMetadata && customValidatorMetadata.instance.defaultMessage instanceof Function) { + message = customValidatorMetadata.instance.defaultMessage(validationArguments); + } + } + const messageString = ValidationUtils.replaceMessageSpecialTokens(message, validationArguments); + return [type, messageString]; + } + getConstraintType(metadata, customValidatorMetadata) { + const type = customValidatorMetadata && customValidatorMetadata.name ? customValidatorMetadata.name : metadata.type; + return type; + } +} +//# sourceMappingURL=ValidationExecutor.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationExecutor.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationExecutor.js.map new file mode 100644 index 00000000..93257253 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationExecutor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationExecutor.js","sourceRoot":"","sources":["../../../src/validation/ValidationExecutor.ts"],"names":[],"mappings":"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","sourcesContent":["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[] = [];\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 metadata found. There is more than once class-validator version installed probably. You need to flatten your dependencies.`\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\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 && 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.children);\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) =>\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) =>\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\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[], errors: 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 }\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, errors);\n });\n } else if (value instanceof Object) {\n const targetSchema = typeof metadata.target === 'string' ? metadata.target : metadata.target.name;\n this.execute(value, targetSchema, errors);\n } else {\n const error = new ValidationError();\n error.value = value;\n error.property = metadata.propertyName;\n error.target = metadata.target as object;\n const [type, message] = this.createValidationError(metadata.target as object, value, metadata);\n error.constraints = {\n [type]: message,\n };\n errors.push(error);\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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationTypes.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationTypes.js new file mode 100644 index 00000000..1b480866 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationTypes.js @@ -0,0 +1,23 @@ +/** + * Validation types. + */ +export class ValidationTypes { + /** + * Checks if validation type is valid. + */ + static isValid(type) { + return (type !== 'isValid' && + type !== 'getMessage' && + Object.keys(this) + .map(key => this[key]) + .indexOf(type) !== -1); + } +} +/* system */ +ValidationTypes.CUSTOM_VALIDATION = 'customValidation'; // done +ValidationTypes.NESTED_VALIDATION = 'nestedValidation'; // done +ValidationTypes.PROMISE_VALIDATION = 'promiseValidation'; // done +ValidationTypes.CONDITIONAL_VALIDATION = 'conditionalValidation'; // done +ValidationTypes.WHITELIST = 'whitelistValidation'; // done +ValidationTypes.IS_DEFINED = 'isDefined'; // done +//# sourceMappingURL=ValidationTypes.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationTypes.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationTypes.js.map new file mode 100644 index 00000000..9defa40f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationTypes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationTypes.js","sourceRoot":"","sources":["../../../src/validation/ValidationTypes.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,eAAe;IAS1B;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,IAAY;QACzB,OAAO,CACL,IAAI,KAAK,SAAS;YAClB,IAAI,KAAK,YAAY;YACrB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;iBACd,GAAG,CAAC,GAAG,CAAC,EAAE,CAAE,IAAY,CAAC,GAAG,CAAC,CAAC;iBAC9B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACxB,CAAC;IACJ,CAAC;;AAnBD,YAAY;AACL,iCAAiB,GAAG,kBAAkB,CAAC,CAAC,OAAO;AAC/C,iCAAiB,GAAG,kBAAkB,CAAC,CAAC,OAAO;AAC/C,kCAAkB,GAAG,mBAAmB,CAAC,CAAC,OAAO;AACjD,sCAAsB,GAAG,uBAAuB,CAAC,CAAC,OAAO;AACzD,yBAAS,GAAG,qBAAqB,CAAC,CAAC,OAAO;AAC1C,0BAAU,GAAG,WAAW,CAAC,CAAC,OAAO","sourcesContent":["/**\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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationUtils.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationUtils.js new file mode 100644 index 00000000..702ae948 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationUtils.js @@ -0,0 +1,36 @@ +/** + * Convert the constraint to a string to be shown in an error + */ +export function constraintToString(constraint) { + if (Array.isArray(constraint)) { + return constraint.join(', '); + } + return `${constraint}`; +} +export class ValidationUtils { + static replaceMessageSpecialTokens(message, validationArguments) { + let messageString; + if (message instanceof Function) { + messageString = message(validationArguments); + } + else if (typeof message === 'string') { + messageString = message; + } + if (messageString && Array.isArray(validationArguments.constraints)) { + validationArguments.constraints.forEach((constraint, index) => { + messageString = messageString.replace(new RegExp(`\\$constraint${index + 1}`, 'g'), constraintToString(constraint)); + }); + } + if (messageString && + validationArguments.value !== undefined && + validationArguments.value !== null && + typeof validationArguments.value === 'string') + messageString = messageString.replace(/\$value/g, validationArguments.value); + if (messageString) + messageString = messageString.replace(/\$property/g, validationArguments.property); + if (messageString) + messageString = messageString.replace(/\$target/g, validationArguments.targetName); + return messageString; + } +} +//# sourceMappingURL=ValidationUtils.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationUtils.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationUtils.js.map new file mode 100644 index 00000000..ccb9db41 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidationUtils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationUtils.js","sourceRoot":"","sources":["../../../src/validation/ValidationUtils.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAmB;IACpD,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QAC7B,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;IAED,OAAO,GAAG,UAAU,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,OAAO,eAAe;IAC1B,MAAM,CAAC,2BAA2B,CAChC,OAAyD,EACzD,mBAAwC;QAExC,IAAI,aAAqB,CAAC;QAC1B,IAAI,OAAO,YAAY,QAAQ,EAAE;YAC/B,aAAa,GAAI,OAAiD,CAAC,mBAAmB,CAAC,CAAC;SACzF;aAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YACtC,aAAa,GAAG,OAAO,CAAC;SACzB;QAED,IAAI,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE;YACnE,mBAAmB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE;gBAC5D,aAAa,GAAG,aAAa,CAAC,OAAO,CACnC,IAAI,MAAM,CAAC,gBAAgB,KAAK,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAC5C,kBAAkB,CAAC,UAAU,CAAC,CAC/B,CAAC;YACJ,CAAC,CAAC,CAAC;SACJ;QAED,IACE,aAAa;YACb,mBAAmB,CAAC,KAAK,KAAK,SAAS;YACvC,mBAAmB,CAAC,KAAK,KAAK,IAAI;YAClC,OAAO,mBAAmB,CAAC,KAAK,KAAK,QAAQ;YAE7C,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC/E,IAAI,aAAa;YAAE,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACtG,IAAI,aAAa;YAAE,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAEtG,OAAO,aAAa,CAAC;IACvB,CAAC;CACF","sourcesContent":["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 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 typeof validationArguments.value === 'string'\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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/Validator.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/Validator.js new file mode 100644 index 00000000..70d87e07 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/Validator.js @@ -0,0 +1,52 @@ +import { ValidationExecutor } from './ValidationExecutor'; +/** + * Validator performs validation of the given object based on its metadata. + */ +export class Validator { + /** + * Performs validation of the given object based on decorators or validation schema. + */ + validate(objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions) { + return this.coreValidate(objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions); + } + /** + * Performs validation of the given object based on decorators or validation schema and reject on error. + */ + async validateOrReject(objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions) { + const errors = await this.coreValidate(objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions); + if (errors.length) + return Promise.reject(errors); + } + /** + * Performs validation of the given object based on decorators or validation schema. + */ + validateSync(objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions) { + const object = typeof objectOrSchemaName === 'string' ? objectOrValidationOptions : objectOrSchemaName; + const options = typeof objectOrSchemaName === 'string' ? maybeValidatorOptions : objectOrValidationOptions; + const schema = typeof objectOrSchemaName === 'string' ? objectOrSchemaName : undefined; + const executor = new ValidationExecutor(this, options); + executor.ignoreAsyncValidations = true; + const validationErrors = []; + executor.execute(object, schema, validationErrors); + return executor.stripEmptyErrors(validationErrors); + } + // ------------------------------------------------------------------------- + // Private Properties + // ------------------------------------------------------------------------- + /** + * Performs validation of the given object based on decorators or validation schema. + * Common method for `validateOrReject` and `validate` methods. + */ + coreValidate(objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions) { + const object = typeof objectOrSchemaName === 'string' ? objectOrValidationOptions : objectOrSchemaName; + const options = typeof objectOrSchemaName === 'string' ? maybeValidatorOptions : objectOrValidationOptions; + const schema = typeof objectOrSchemaName === 'string' ? objectOrSchemaName : undefined; + const executor = new ValidationExecutor(this, options); + const validationErrors = []; + executor.execute(object, schema, validationErrors); + return Promise.all(executor.awaitingPromises).then(() => { + return executor.stripEmptyErrors(validationErrors); + }); + } +} +//# sourceMappingURL=Validator.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/Validator.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/Validator.js.map new file mode 100644 index 00000000..4670367f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/Validator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Validator.js","sourceRoot":"","sources":["../../../src/validation/Validator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D;;GAEG;AACH,MAAM,OAAO,SAAS;IAepB;;OAEG;IACH,QAAQ,CACN,kBAAmC,EACnC,yBAAqD,EACrD,qBAAwC;QAExC,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,yBAAyB,EAAE,qBAAqB,CAAC,CAAC;IACjG,CAAC;IAYD;;OAEG;IACH,KAAK,CAAC,gBAAgB,CACpB,kBAAmC,EACnC,yBAAqD,EACrD,qBAAwC;QAExC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,yBAAyB,EAAE,qBAAqB,CAAC,CAAC;QAC7G,IAAI,MAAM,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IAaD;;OAEG;IACH,YAAY,CACV,kBAAmC,EACnC,yBAAqD,EACrD,qBAAwC;QAExC,MAAM,MAAM,GAAG,OAAO,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAE,yBAAoC,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACnH,MAAM,OAAO,GACX,OAAO,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAE,yBAA+C,CAAC;QACpH,MAAM,MAAM,GAAG,OAAO,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;QAEvF,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACvD,QAAQ,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACvC,MAAM,gBAAgB,GAAsB,EAAE,CAAC;QAC/C,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;QACnD,OAAO,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IACrD,CAAC;IAED,4EAA4E;IAC5E,qBAAqB;IACrB,4EAA4E;IAC5E;;;OAGG;IACK,YAAY,CAClB,kBAAmC,EACnC,yBAAqD,EACrD,qBAAwC;QAExC,MAAM,MAAM,GAAG,OAAO,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAE,yBAAoC,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACnH,MAAM,OAAO,GACX,OAAO,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAE,yBAA+C,CAAC;QACpH,MAAM,MAAM,GAAG,OAAO,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;QAEvF,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,gBAAgB,GAAsB,EAAE,CAAC;QAC/C,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;QAEnD,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACtD,OAAO,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["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;\n\n /**\n * Performs validation of the given object based on validation schema.\n */\n validate(schemaName: string, object: object, options?: ValidatorOptions): Promise;\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 {\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;\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;\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 {\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 {\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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidatorConstraintInterface.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidatorConstraintInterface.js new file mode 100644 index 00000000..d053f5df --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidatorConstraintInterface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=ValidatorConstraintInterface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidatorConstraintInterface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidatorConstraintInterface.js.map new file mode 100644 index 00000000..acc4adf6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidatorConstraintInterface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidatorConstraintInterface.js","sourceRoot":"","sources":["../../../src/validation/ValidatorConstraintInterface.ts"],"names":[],"mappings":"","sourcesContent":["import { ValidationArguments } from './ValidationArguments';\n/**\n * Custom validators must implement this interface to provide custom validation logic.\n */\nexport interface ValidatorConstraintInterface {\n /**\n * Method to be called to perform custom validation over given value.\n */\n validate(value: any, validationArguments?: ValidationArguments): Promise | boolean;\n\n /**\n * Gets default message when validation for this constraint fail.\n */\n defaultMessage?(validationArguments?: ValidationArguments): string;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidatorOptions.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidatorOptions.js new file mode 100644 index 00000000..4dfdf015 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidatorOptions.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=ValidatorOptions.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidatorOptions.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidatorOptions.js.map new file mode 100644 index 00000000..40e2172b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm2015/validation/ValidatorOptions.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidatorOptions.js","sourceRoot":"","sources":["../../../src/validation/ValidatorOptions.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Options passed to validator during validation.\n */\nexport interface ValidatorOptions {\n /**\n * If set to true then class-validator will print extra warning messages to the console when something is not right.\n */\n enableDebugMessages?: boolean;\n\n /**\n * If set to true then validator will skip validation of all properties that are undefined in the validating object.\n */\n skipUndefinedProperties?: boolean;\n\n /**\n * If set to true then validator will skip validation of all properties that are null in the validating object.\n */\n skipNullProperties?: boolean;\n\n /**\n * If set to true then validator will skip validation of all properties that are null or undefined in the validating object.\n */\n skipMissingProperties?: boolean;\n\n /**\n * If set to true validator will strip validated object of any properties that do not have any decorators.\n *\n * Tip: if no other decorator is suitable for your property use @Allow decorator.\n */\n whitelist?: boolean;\n\n /**\n * If set to true, instead of stripping non-whitelisted properties validator will throw an error\n */\n forbidNonWhitelisted?: boolean;\n\n /**\n * Groups to be used during validation of the object.\n */\n groups?: string[];\n\n /**\n * Set default for `always` option of decorators. Default can be overridden in decorator options.\n */\n always?: boolean;\n\n /**\n * If [groups]{@link ValidatorOptions#groups} is not given or is empty,\n * ignore decorators with at least one group.\n */\n strictGroups?: boolean;\n\n /**\n * If set to true, the validation will not use default messages.\n * Error message always will be undefined if its not explicitly set.\n */\n dismissDefaultMessages?: boolean;\n\n /**\n * ValidationError special options.\n */\n validationError?: {\n /**\n * Indicates if target should be exposed in ValidationError.\n */\n target?: boolean;\n\n /**\n * Indicates if validated value should be exposed in ValidationError.\n */\n value?: boolean;\n };\n\n /**\n * Settings true will cause fail validation of unknown objects.\n */\n forbidUnknownValues?: boolean;\n\n /**\n * When set to true, validation of the given property will stop after encountering the first error. Defaults to false.\n */\n stopAtFirstError?: boolean;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/container.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/container.js new file mode 100644 index 00000000..db513fdd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/container.js @@ -0,0 +1,47 @@ +/** + * Container to be used by this library for inversion control. If container was not implicitly set then by default + * container simply creates a new instance of the given class. + */ +var defaultContainer = new (/** @class */ (function () { + function class_1() { + this.instances = []; + } + class_1.prototype.get = function (someClass) { + var instance = this.instances.find(function (instance) { return instance.type === someClass; }); + if (!instance) { + instance = { type: someClass, object: new someClass() }; + this.instances.push(instance); + } + return instance.object; + }; + return class_1; +}()))(); +var userContainer; +var userContainerOptions; +/** + * Sets container to be used by this library. + */ +export function useContainer(iocContainer, options) { + userContainer = iocContainer; + userContainerOptions = options; +} +/** + * Gets the IOC container used by this library. + */ +export function getFromContainer(someClass) { + if (userContainer) { + try { + var instance = userContainer.get(someClass); + if (instance) + return instance; + if (!userContainerOptions || !userContainerOptions.fallback) + return instance; + } + catch (error) { + if (!userContainerOptions || !userContainerOptions.fallbackOnErrors) + throw error; + } + } + return defaultContainer.get(someClass); +} +//# sourceMappingURL=container.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/container.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/container.js.map new file mode 100644 index 00000000..f012abcd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/container.js.map @@ -0,0 +1 @@ +{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/container.ts"],"names":[],"mappings":"AAeA;;;GAGG;AACH,IAAM,gBAAgB,GAAqE,IAAI;IAAC;QACtF,cAAS,GAAsC,EAAE,CAAC;IAU5D,CAAC;IATC,qBAAG,GAAH,UAAO,SAAsC;QAC3C,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,IAAI,KAAK,SAAS,EAA3B,CAA2B,CAAC,CAAC;QAC5E,IAAI,CAAC,QAAQ,EAAE;YACb,QAAQ,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,SAAS,EAAE,EAAE,CAAC;YACxD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC/B;QAED,OAAO,QAAQ,CAAC,MAAM,CAAC;IACzB,CAAC;IACH,cAAC;AAAD,CAAC,AAX+F,IAW9F,EAAE,CAAC;AAEL,IAAI,aAA+E,CAAC;AACpF,IAAI,oBAAyC,CAAC;AAE9C;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,YAA0C,EAAE,OAA6B;IACpG,aAAa,GAAG,YAAY,CAAC;IAC7B,oBAAoB,GAAG,OAAO,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAI,SAAiD;IACnF,IAAI,aAAa,EAAE;QACjB,IAAI;YACF,IAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,QAAQ;gBAAE,OAAO,QAAQ,CAAC;YAE9B,IAAI,CAAC,oBAAoB,IAAI,CAAC,oBAAoB,CAAC,QAAQ;gBAAE,OAAO,QAAQ,CAAC;SAC9E;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,oBAAoB,IAAI,CAAC,oBAAoB,CAAC,gBAAgB;gBAAE,MAAM,KAAK,CAAC;SAClF;KACF;IACD,OAAO,gBAAgB,CAAC,GAAG,CAAI,SAAS,CAAC,CAAC;AAC5C,CAAC","sourcesContent":["/**\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(someClass: { new (...args: any[]): T } | Function): T } = new (class {\n private instances: { type: Function; object: any }[] = [];\n get(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(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(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(someClass);\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/ValidationOptions.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/ValidationOptions.js new file mode 100644 index 00000000..cfe207a4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/ValidationOptions.js @@ -0,0 +1,7 @@ +export function isValidationOptions(val) { + if (!val) { + return false; + } + return 'each' in val || 'message' in val || 'groups' in val || 'always' in val || 'context' in val; +} +//# sourceMappingURL=ValidationOptions.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/ValidationOptions.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/ValidationOptions.js.map new file mode 100644 index 00000000..62386044 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/ValidationOptions.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationOptions.js","sourceRoot":"","sources":["../../../src/decorator/ValidationOptions.ts"],"names":[],"mappings":"AAiCA,MAAM,UAAU,mBAAmB,CAAC,GAAQ;IAC1C,IAAI,CAAC,GAAG,EAAE;QACR,OAAO,KAAK,CAAC;KACd;IACD,OAAO,MAAM,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,CAAC;AACrG,CAAC","sourcesContent":["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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayContains.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayContains.js new file mode 100644 index 00000000..0f5802ad --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayContains.js @@ -0,0 +1,26 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var ARRAY_CONTAINS = 'arrayContains'; +/** + * Checks if array contains all values from the given array of values. + * If null or undefined is given then this function returns false. + */ +export function arrayContains(array, values) { + if (!Array.isArray(array)) + return false; + return values.every(function (value) { return array.indexOf(value) !== -1; }); +} +/** + * Checks if array contains all values from the given array of values. + * If null or undefined is given then this function returns false. + */ +export function ArrayContains(values, validationOptions) { + return ValidateBy({ + name: ARRAY_CONTAINS, + constraints: [values], + validator: { + validate: function (value, args) { return arrayContains(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain $constraint1 values'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=ArrayContains.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayContains.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayContains.js.map new file mode 100644 index 00000000..fd736339 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayContains.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ArrayContains.js","sourceRoot":"","sources":["../../../../src/decorator/array/ArrayContains.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,cAAc,GAAG,eAAe,CAAC;AAE9C;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc,EAAE,MAAa;IACzD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAExC,OAAO,MAAM,CAAC,KAAK,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAA3B,CAA2B,CAAC,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,MAAa,EAAE,iBAAqC;IAChF,OAAO,UAAU,CACf;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAzC,CAAyC;YAC7E,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,4CAA4C,EAAzD,CAAyD,EACvE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must contain $constraint1 values',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayMaxSize.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayMaxSize.js new file mode 100644 index 00000000..517b0326 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayMaxSize.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var ARRAY_MAX_SIZE = 'arrayMaxSize'; +/** + * Checks if the array's length is less or equal to the specified number. + * If null or undefined is given then this function returns false. + */ +export function arrayMaxSize(array, max) { + return Array.isArray(array) && array.length <= max; +} +/** + * Checks if the array's length is less or equal to the specified number. + * If null or undefined is given then this function returns false. + */ +export function ArrayMaxSize(max, validationOptions) { + return ValidateBy({ + name: ARRAY_MAX_SIZE, + constraints: [max], + validator: { + validate: function (value, args) { return arrayMaxSize(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain not more than $constraint1 elements'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=ArrayMaxSize.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayMaxSize.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayMaxSize.js.map new file mode 100644 index 00000000..19ff69bd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayMaxSize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ArrayMaxSize.js","sourceRoot":"","sources":["../../../../src/decorator/array/ArrayMaxSize.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,cAAc,GAAG,cAAc,CAAC;AAE7C;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc,EAAE,GAAW;IACtD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,iBAAqC;IAC7E,OAAO,UAAU,CACf;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,CAAC,GAAG,CAAC;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAxC,CAAwC;YAC5E,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,4DAA4D,EAAzE,CAAyE,EACvF,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must contain not more than $constraint1 elements',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayMinSize.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayMinSize.js new file mode 100644 index 00000000..52c08202 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayMinSize.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var ARRAY_MIN_SIZE = 'arrayMinSize'; +/** + * Checks if the array's length is greater than or equal to the specified number. + * If null or undefined is given then this function returns false. + */ +export function arrayMinSize(array, min) { + return Array.isArray(array) && array.length >= min; +} +/** + * Checks if the array's length is greater than or equal to the specified number. + * If null or undefined is given then this function returns false. + */ +export function ArrayMinSize(min, validationOptions) { + return ValidateBy({ + name: ARRAY_MIN_SIZE, + constraints: [min], + validator: { + validate: function (value, args) { return arrayMinSize(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain at least $constraint1 elements'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=ArrayMinSize.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayMinSize.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayMinSize.js.map new file mode 100644 index 00000000..26fc0af1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayMinSize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ArrayMinSize.js","sourceRoot":"","sources":["../../../../src/decorator/array/ArrayMinSize.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,cAAc,GAAG,cAAc,CAAC;AAE7C;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc,EAAE,GAAW;IACtD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,iBAAqC;IAC7E,OAAO,UAAU,CACf;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,CAAC,GAAG,CAAC;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAxC,CAAwC;YAC5E,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,uDAAuD,EAApE,CAAoE,EAClF,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must contain at least $constraint1 elements',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayNotContains.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayNotContains.js new file mode 100644 index 00000000..7c42d7a6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayNotContains.js @@ -0,0 +1,26 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var ARRAY_NOT_CONTAINS = 'arrayNotContains'; +/** + * Checks if array does not contain any of the given values. + * If null or undefined is given then this function returns false. + */ +export function arrayNotContains(array, values) { + if (!Array.isArray(array)) + return false; + return values.every(function (value) { return array.indexOf(value) === -1; }); +} +/** + * Checks if array does not contain any of the given values. + * If null or undefined is given then this function returns false. + */ +export function ArrayNotContains(values, validationOptions) { + return ValidateBy({ + name: ARRAY_NOT_CONTAINS, + constraints: [values], + validator: { + validate: function (value, args) { return arrayNotContains(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not contain $constraint1 values'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=ArrayNotContains.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayNotContains.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayNotContains.js.map new file mode 100644 index 00000000..b9174a58 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayNotContains.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ArrayNotContains.js","sourceRoot":"","sources":["../../../../src/decorator/array/ArrayNotContains.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,kBAAkB,GAAG,kBAAkB,CAAC;AAErD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc,EAAE,MAAa;IAC5D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAExC,OAAO,MAAM,CAAC,KAAK,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAA3B,CAA2B,CAAC,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAa,EAAE,iBAAqC;IACnF,OAAO,UAAU,CACf;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAA5C,CAA4C;YAChF,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,kDAAkD,EAA/D,CAA+D,EAC7E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property should not contain $constraint1 values',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayNotEmpty.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayNotEmpty.js new file mode 100644 index 00000000..f6e9dc1d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayNotEmpty.js @@ -0,0 +1,23 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var ARRAY_NOT_EMPTY = 'arrayNotEmpty'; +/** + * Checks if given array is not empty. + * If null or undefined is given then this function returns false. + */ +export function arrayNotEmpty(array) { + return Array.isArray(array) && array.length > 0; +} +/** + * Checks if given array is not empty. + * If null or undefined is given then this function returns false. + */ +export function ArrayNotEmpty(validationOptions) { + return ValidateBy({ + name: ARRAY_NOT_EMPTY, + validator: { + validate: function (value, args) { return arrayNotEmpty(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not be empty'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=ArrayNotEmpty.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayNotEmpty.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayNotEmpty.js.map new file mode 100644 index 00000000..498e0595 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayNotEmpty.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ArrayNotEmpty.js","sourceRoot":"","sources":["../../../../src/decorator/array/ArrayNotEmpty.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,eAAe,GAAG,eAAe,CAAC;AAE/C;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,iBAAqC;IACjE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,eAAe;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,aAAa,CAAC,KAAK,CAAC,EAApB,CAAoB;YACxD,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,+BAA+B,EAA5C,CAA4C,EAAE,iBAAiB,CAAC;SAC5G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property should not be empty', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayUnique.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayUnique.js new file mode 100644 index 00000000..792e9253 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayUnique.js @@ -0,0 +1,31 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var ARRAY_UNIQUE = 'arrayUnique'; +/** + * Checks if all array's values are unique. Comparison for objects is reference-based. + * If null or undefined is given then this function returns false. + */ +export function arrayUnique(array, identifier) { + if (!Array.isArray(array)) + return false; + if (identifier) { + array = array.map(function (o) { return (o != null ? identifier(o) : o); }); + } + var uniqueItems = array.filter(function (a, b, c) { return c.indexOf(a) === b; }); + return array.length === uniqueItems.length; +} +/** + * Checks if all array's values are unique. Comparison for objects is reference-based. + * If null or undefined is given then this function returns false. + */ +export function ArrayUnique(identifierOrOptions, validationOptions) { + var identifier = typeof identifierOrOptions === 'function' ? identifierOrOptions : undefined; + var options = typeof identifierOrOptions !== 'function' ? identifierOrOptions : validationOptions; + return ValidateBy({ + name: ARRAY_UNIQUE, + validator: { + validate: function (value, args) { return arrayUnique(value, identifier); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + "All $property's elements must be unique"; }, options), + }, + }, options); +} +//# sourceMappingURL=ArrayUnique.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayUnique.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayUnique.js.map new file mode 100644 index 00000000..7e78d33d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/array/ArrayUnique.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ArrayUnique.js","sourceRoot":"","sources":["../../../../src/decorator/array/ArrayUnique.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,YAAY,GAAG,aAAa,CAAC;AAG1C;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAgB,EAAE,UAAkC;IAC9E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAExC,IAAI,UAAU,EAAE;QACd,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAA/B,CAA+B,CAAC,CAAC;KACzD;IAED,IAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAlB,CAAkB,CAAC,CAAC;IAClE,OAAO,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,mBAAkE,EAClE,iBAAqC;IAErC,IAAM,UAAU,GAAG,OAAO,mBAAmB,KAAK,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/F,IAAM,OAAO,GAAG,OAAO,mBAAmB,KAAK,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAEpG,OAAO,UAAU,CACf;QACE,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,EAA9B,CAA8B;YAClE,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,yCAAyC,EAAtD,CAAsD,EAAE,OAAO,CAAC;SAC5G;KACF,EACD,OAAO,CACR,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const ARRAY_UNIQUE = 'arrayUnique';\nexport type ArrayUniqueIdentifier = (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(\n identifierOrOptions?: ArrayUniqueIdentifier | 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 + \"All $property's elements must be unique\", options),\n },\n },\n options\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/Allow.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/Allow.js new file mode 100644 index 00000000..bd4b5432 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/Allow.js @@ -0,0 +1,18 @@ +import { ValidationTypes } from '../../validation/ValidationTypes'; +import { ValidationMetadata } from '../../metadata/ValidationMetadata'; +import { getMetadataStorage } from '../../metadata/MetadataStorage'; +/** + * If object has both allowed and not allowed properties a validation error will be thrown. + */ +export function Allow(validationOptions) { + return function (object, propertyName) { + var args = { + type: ValidationTypes.WHITELIST, + target: object.constructor, + propertyName: propertyName, + validationOptions: validationOptions, + }; + getMetadataStorage().addValidationMetadata(new ValidationMetadata(args)); + }; +} +//# sourceMappingURL=Allow.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/Allow.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/Allow.js.map new file mode 100644 index 00000000..22f20d68 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/Allow.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Allow.js","sourceRoot":"","sources":["../../../../src/decorator/common/Allow.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,iBAAqC;IACzD,OAAO,UAAU,MAAc,EAAE,YAAoB;QACnD,IAAM,IAAI,GAA2B;YACnC,IAAI,EAAE,eAAe,CAAC,SAAS;YAC/B,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,iBAAiB,EAAE,iBAAiB;SACrC,CAAC;QACF,kBAAkB,EAAE,CAAC,qBAAqB,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;AACJ,CAAC","sourcesContent":["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 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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/Equals.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/Equals.js new file mode 100644 index 00000000..43cb3e97 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/Equals.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var EQUALS = 'equals'; +/** + * Checks if value matches ("===") the comparison. + */ +export function equals(value, comparison) { + return value === comparison; +} +/** + * Checks if value matches ("===") the comparison. + */ +export function Equals(comparison, validationOptions) { + return ValidateBy({ + name: EQUALS, + constraints: [comparison], + validator: { + validate: function (value, args) { return equals(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be equal to $constraint1'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=Equals.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/Equals.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/Equals.js.map new file mode 100644 index 00000000..566dfd7b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/Equals.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Equals.js","sourceRoot":"","sources":["../../../../src/decorator/common/Equals.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,MAAM,GAAG,QAAQ,CAAC;AAE/B;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc,EAAE,UAAmB;IACxD,OAAO,KAAK,KAAK,UAAU,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,UAAe,EAAE,iBAAqC;IAC3E,OAAO,UAAU,CACf;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,CAAC,UAAU,CAAC;QACzB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAlC,CAAkC;YACtE,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,yCAAyC,EAAtD,CAAsD,EACpE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be equal to $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsDefined.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsDefined.js new file mode 100644 index 00000000..4cd4ad6b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsDefined.js @@ -0,0 +1,23 @@ +import { buildMessage, ValidateBy } from './ValidateBy'; +import { ValidationTypes } from '../../validation/ValidationTypes'; +// isDefined is (yet) a special case +export var IS_DEFINED = ValidationTypes.IS_DEFINED; +/** + * Checks if value is defined (!== undefined, !== null). + */ +export function isDefined(value) { + return value !== undefined && value !== null; +} +/** + * Checks if value is defined (!== undefined, !== null). + */ +export function IsDefined(validationOptions) { + return ValidateBy({ + name: IS_DEFINED, + validator: { + validate: function (value) { return isDefined(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not be null or undefined'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsDefined.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsDefined.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsDefined.js.map new file mode 100644 index 00000000..8f00d8b7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsDefined.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsDefined.js","sourceRoot":"","sources":["../../../../src/decorator/common/IsDefined.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE,oCAAoC;AACpC,MAAM,CAAC,IAAM,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC;AAErD;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAU;IAClC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,iBAAqC;IAC7D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,IAAc,OAAA,SAAS,CAAC,KAAK,CAAC,EAAhB,CAAgB;YAC9C,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,2CAA2C,EAAxD,CAAwD,EACtE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from './ValidateBy';\nimport { ValidationTypes } from '../../validation/ValidationTypes';\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 + '$property should not be null or undefined',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsEmpty.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsEmpty.js new file mode 100644 index 00000000..5cdc96e3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsEmpty.js @@ -0,0 +1,21 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var IS_EMPTY = 'isEmpty'; +/** + * Checks if given value is empty (=== '', === null, === undefined). + */ +export function isEmpty(value) { + return value === '' || value === null || value === undefined; +} +/** + * Checks if given value is empty (=== '', === null, === undefined). + */ +export function IsEmpty(validationOptions) { + return ValidateBy({ + name: IS_EMPTY, + validator: { + validate: function (value, args) { return isEmpty(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be empty'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsEmpty.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsEmpty.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsEmpty.js.map new file mode 100644 index 00000000..c448f331 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsEmpty.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsEmpty.js","sourceRoot":"","sources":["../../../../src/decorator/common/IsEmpty.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,QAAQ,GAAG,SAAS,CAAC;AAElC;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,iBAAqC;IAC3D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,OAAO,CAAC,KAAK,CAAC,EAAd,CAAc;YAClD,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,yBAAyB,EAAtC,CAAsC,EAAE,iBAAiB,CAAC;SACtG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be empty', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsIn.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsIn.js new file mode 100644 index 00000000..f622770c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsIn.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var IS_IN = 'isIn'; +/** + * Checks if given value is in a array of allowed values. + */ +export function isIn(value, possibleValues) { + return !Array.isArray(possibleValues) || possibleValues.some(function (possibleValue) { return possibleValue === value; }); +} +/** + * Checks if given value is in a array of allowed values. + */ +export function IsIn(values, validationOptions) { + return ValidateBy({ + name: IS_IN, + constraints: [values], + validator: { + validate: function (value, args) { return isIn(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be one of the following values: $constraint1'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsIn.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsIn.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsIn.js.map new file mode 100644 index 00000000..55cc7bda --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsIn.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsIn.js","sourceRoot":"","sources":["../../../../src/decorator/common/IsIn.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,KAAK,GAAG,MAAM,CAAC;AAE5B;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,KAAc,EAAE,cAAkC;IACrE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,UAAA,aAAa,IAAI,OAAA,aAAa,KAAK,KAAK,EAAvB,CAAuB,CAAC,CAAC;AACzG,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,MAAsB,EAAE,iBAAqC;IAChF,OAAO,UAAU,CACf;QACE,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAhC,CAAgC;YACpE,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,6DAA6D,EAA1E,CAA0E,EACxF,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be one of the following values: $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsLatLong.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsLatLong.js new file mode 100644 index 00000000..8ca90b5f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsLatLong.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from './ValidateBy'; +import isLatLongValidator from 'validator/lib/isLatLong'; +export var IS_LATLONG = 'isLatLong'; +/** + * Checks if a value is string in format a "latitude,longitude". + */ +export function isLatLong(value) { + return typeof value === 'string' && isLatLongValidator(value); +} +/** + * Checks if a value is string in format a "latitude,longitude". + */ +export function IsLatLong(validationOptions) { + return ValidateBy({ + name: IS_LATLONG, + validator: { + validate: function (value, args) { return isLatLong(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a latitude,longitude string'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsLatLong.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsLatLong.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsLatLong.js.map new file mode 100644 index 00000000..1aee579f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsLatLong.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsLatLong.js","sourceRoot":"","sources":["../../../../src/decorator/common/IsLatLong.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAEzD,MAAM,CAAC,IAAM,UAAU,GAAG,WAAW,CAAC;AAEtC;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,iBAAqC;IAC7D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,SAAS,CAAC,KAAK,CAAC,EAAhB,CAAgB;YACpD,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,+CAA+C,EAA5D,CAA4D,EAC1E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a latitude,longitude string',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsLatitude.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsLatitude.js new file mode 100644 index 00000000..5cb1590c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsLatitude.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from './ValidateBy'; +import { isLatLong } from './IsLatLong'; +export var IS_LATITUDE = 'isLatitude'; +/** + * Checks if a given value is a latitude. + */ +export function isLatitude(value) { + return (typeof value === 'number' || typeof value === 'string') && isLatLong("".concat(value, ",0")); +} +/** + * Checks if a given value is a latitude. + */ +export function IsLatitude(validationOptions) { + return ValidateBy({ + name: IS_LATITUDE, + validator: { + validate: function (value, args) { return isLatitude(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a latitude string or number'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsLatitude.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsLatitude.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsLatitude.js.map new file mode 100644 index 00000000..63c29158 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsLatitude.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsLatitude.js","sourceRoot":"","sources":["../../../../src/decorator/common/IsLatitude.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,CAAC,IAAM,WAAW,GAAG,YAAY,CAAC;AAExC;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,IAAI,SAAS,CAAC,UAAG,KAAK,OAAI,CAAC,CAAC;AAC7F,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,iBAAqC;IAC9D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,UAAU,CAAC,KAAK,CAAC,EAAjB,CAAiB;YACrD,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,+CAA+C,EAA5D,CAA4D,EAC1E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from './ValidateBy';\nimport { isLatLong } from './IsLatLong';\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 + '$property must be a latitude string or number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsLongitude.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsLongitude.js new file mode 100644 index 00000000..709c23bd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsLongitude.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from './ValidateBy'; +import { isLatLong } from './IsLatLong'; +export var IS_LONGITUDE = 'isLongitude'; +/** + * Checks if a given value is a longitude. + */ +export function isLongitude(value) { + return (typeof value === 'number' || typeof value === 'string') && isLatLong("0,".concat(value)); +} +/** + * Checks if a given value is a longitude. + */ +export function IsLongitude(validationOptions) { + return ValidateBy({ + name: IS_LONGITUDE, + validator: { + validate: function (value, args) { return isLongitude(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a longitude string or number'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsLongitude.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsLongitude.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsLongitude.js.map new file mode 100644 index 00000000..e2d05ee0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsLongitude.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsLongitude.js","sourceRoot":"","sources":["../../../../src/decorator/common/IsLongitude.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,CAAC,IAAM,YAAY,GAAG,aAAa,CAAC;AAE1C;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,IAAI,SAAS,CAAC,YAAK,KAAK,CAAE,CAAC,CAAC;AAC7F,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,iBAAqC;IAC/D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,WAAW,CAAC,KAAK,CAAC,EAAlB,CAAkB;YACtD,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,gDAAgD,EAA7D,CAA6D,EAC3E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from './ValidateBy';\nimport { isLatLong } from './IsLatLong';\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 + '$property must be a longitude string or number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsNotEmpty.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsNotEmpty.js new file mode 100644 index 00000000..2437c635 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsNotEmpty.js @@ -0,0 +1,21 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var IS_NOT_EMPTY = 'isNotEmpty'; +/** + * Checks if given value is not empty (!== '', !== null, !== undefined). + */ +export function isNotEmpty(value) { + return value !== '' && value !== null && value !== undefined; +} +/** + * Checks if given value is not empty (!== '', !== null, !== undefined). + */ +export function IsNotEmpty(validationOptions) { + return ValidateBy({ + name: IS_NOT_EMPTY, + validator: { + validate: function (value, args) { return isNotEmpty(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not be empty'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsNotEmpty.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsNotEmpty.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsNotEmpty.js.map new file mode 100644 index 00000000..506aa6c5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsNotEmpty.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsNotEmpty.js","sourceRoot":"","sources":["../../../../src/decorator/common/IsNotEmpty.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,YAAY,GAAG,YAAY,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,iBAAqC;IAC9D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,UAAU,CAAC,KAAK,CAAC,EAAjB,CAAiB;YACrD,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,+BAA+B,EAA5C,CAA4C,EAAE,iBAAiB,CAAC;SAC5G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property should not be empty', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsNotIn.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsNotIn.js new file mode 100644 index 00000000..f1625763 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsNotIn.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var IS_NOT_IN = 'isNotIn'; +/** + * Checks if given value not in a array of allowed values. + */ +export function isNotIn(value, possibleValues) { + return !Array.isArray(possibleValues) || !possibleValues.some(function (possibleValue) { return possibleValue === value; }); +} +/** + * Checks if given value not in a array of allowed values. + */ +export function IsNotIn(values, validationOptions) { + return ValidateBy({ + name: IS_NOT_IN, + constraints: [values], + validator: { + validate: function (value, args) { return isNotIn(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not be one of the following values: $constraint1'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsNotIn.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsNotIn.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsNotIn.js.map new file mode 100644 index 00000000..8d41fd34 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsNotIn.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsNotIn.js","sourceRoot":"","sources":["../../../../src/decorator/common/IsNotIn.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,SAAS,GAAG,SAAS,CAAC;AAEnC;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,KAAc,EAAE,cAAkC;IACxE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAA,aAAa,IAAI,OAAA,aAAa,KAAK,KAAK,EAAvB,CAAuB,CAAC,CAAC;AAC1G,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,MAAsB,EAAE,iBAAqC;IACnF,OAAO,UAAU,CACf;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAnC,CAAmC;YACvE,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,mEAAmE,EAAhF,CAAgF,EAC9F,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property should not be one of the following values: $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsOptional.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsOptional.js new file mode 100644 index 00000000..c10abe4f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsOptional.js @@ -0,0 +1,23 @@ +import { ValidationTypes } from '../../validation/ValidationTypes'; +import { ValidationMetadata } from '../../metadata/ValidationMetadata'; +import { getMetadataStorage } from '../../metadata/MetadataStorage'; +/** + * Checks if value is missing and if so, ignores all validators. + */ +export function IsOptional(validationOptions) { + return function (object, propertyName) { + var args = { + type: ValidationTypes.CONDITIONAL_VALIDATION, + target: object.constructor, + propertyName: propertyName, + constraints: [ + function (object, value) { + return object[propertyName] !== null && object[propertyName] !== undefined; + }, + ], + validationOptions: validationOptions, + }; + getMetadataStorage().addValidationMetadata(new ValidationMetadata(args)); + }; +} +//# sourceMappingURL=IsOptional.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsOptional.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsOptional.js.map new file mode 100644 index 00000000..82aa8946 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/IsOptional.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsOptional.js","sourceRoot":"","sources":["../../../../src/decorator/common/IsOptional.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,iBAAqC;IAC9D,OAAO,UAAU,MAAc,EAAE,YAAoB;QACnD,IAAM,IAAI,GAA2B;YACnC,IAAI,EAAE,eAAe,CAAC,sBAAsB;YAC5C,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,WAAW,EAAE;gBACX,UAAC,MAAW,EAAE,KAAU;oBACtB,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,SAAS,CAAC;gBAC7E,CAAC;aACF;YACD,iBAAiB,EAAE,iBAAiB;SACrC,CAAC;QACF,kBAAkB,EAAE,CAAC,qBAAqB,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;AACJ,CAAC","sourcesContent":["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 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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/NotEquals.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/NotEquals.js new file mode 100644 index 00000000..7f2d88c3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/NotEquals.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var NOT_EQUALS = 'notEquals'; +/** + * Checks if value does not match ("!==") the comparison. + */ +export function notEquals(value, comparison) { + return value !== comparison; +} +/** + * Checks if value does not match ("!==") the comparison. + */ +export function NotEquals(comparison, validationOptions) { + return ValidateBy({ + name: NOT_EQUALS, + constraints: [comparison], + validator: { + validate: function (value, args) { return notEquals(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not be equal to $constraint1'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=NotEquals.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/NotEquals.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/NotEquals.js.map new file mode 100644 index 00000000..cd753115 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/NotEquals.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NotEquals.js","sourceRoot":"","sources":["../../../../src/decorator/common/NotEquals.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,UAAU,GAAG,WAAW,CAAC;AAEtC;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc,EAAE,UAAmB;IAC3D,OAAO,KAAK,KAAK,UAAU,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,UAAe,EAAE,iBAAqC;IAC9E,OAAO,UAAU,CACf;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,CAAC,UAAU,CAAC;QACzB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAArC,CAAqC;YACzE,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,+CAA+C,EAA5D,CAA4D,EAC1E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property should not be equal to $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/Validate.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/Validate.js new file mode 100644 index 00000000..c608e074 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/Validate.js @@ -0,0 +1,37 @@ +import { ValidationMetadata } from '../../metadata/ValidationMetadata'; +import { getMetadataStorage } from '../../metadata/MetadataStorage'; +import { ValidationTypes } from '../../validation/ValidationTypes'; +import { ConstraintMetadata } from '../../metadata/ConstraintMetadata'; +/** + * Registers custom validator class. + */ +export function ValidatorConstraint(options) { + return function (target) { + var isAsync = options && options.async; + var name = options && options.name ? options.name : ''; + if (!name) { + name = target.name; + if (!name) + // generate name if it was not given + name = name.replace(/\.?([A-Z]+)/g, function (x, y) { return '_' + y.toLowerCase(); }).replace(/^_/, ''); + } + var metadata = new ConstraintMetadata(target, name, isAsync); + getMetadataStorage().addConstraintMetadata(metadata); + }; +} +export function Validate(constraintClass, constraintsOrValidationOptions, maybeValidationOptions) { + return function (object, propertyName) { + var args = { + type: ValidationTypes.CUSTOM_VALIDATION, + target: object.constructor, + propertyName: propertyName, + constraintCls: constraintClass, + constraints: Array.isArray(constraintsOrValidationOptions) ? constraintsOrValidationOptions : undefined, + validationOptions: !Array.isArray(constraintsOrValidationOptions) + ? constraintsOrValidationOptions + : maybeValidationOptions, + }; + getMetadataStorage().addValidationMetadata(new ValidationMetadata(args)); + }; +} +//# sourceMappingURL=Validate.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/Validate.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/Validate.js.map new file mode 100644 index 00000000..eca0903d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/Validate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Validate.js","sourceRoot":"","sources":["../../../../src/decorator/common/Validate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAA4C;IAC9E,OAAO,UAAU,MAAgB;QAC/B,IAAM,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;QACzC,IAAI,IAAI,GAAG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,GAAI,MAAc,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,IAAI;gBACP,oCAAoC;gBACpC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,GAAG,GAAI,CAAY,CAAC,WAAW,EAAE,EAAjC,CAAiC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SACtG;QACD,IAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/D,kBAAkB,EAAE,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC,CAAC;AACJ,CAAC;AAYD,MAAM,UAAU,QAAQ,CACtB,eAAyB,EACzB,8BAA0D,EAC1D,sBAA0C;IAE1C,OAAO,UAAU,MAAc,EAAE,YAAoB;QACnD,IAAM,IAAI,GAA2B;YACnC,IAAI,EAAE,eAAe,CAAC,iBAAiB;YACvC,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,aAAa,EAAE,eAAe;YAC9B,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,SAAS;YACvG,iBAAiB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,8BAA8B,CAAC;gBAC/D,CAAC,CAAC,8BAA8B;gBAChC,CAAC,CAAC,sBAAsB;SAC3B,CAAC;QACF,kBAAkB,EAAE,CAAC,qBAAqB,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;AACJ,CAAC","sourcesContent":["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 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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidateBy.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidateBy.js new file mode 100644 index 00000000..a179095f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidateBy.js @@ -0,0 +1,20 @@ +import { registerDecorator } from '../../register-decorator'; +export function buildMessage(impl, validationOptions) { + return function (validationArguments) { + var eachPrefix = validationOptions && validationOptions.each ? 'each value in ' : ''; + return impl(eachPrefix, validationArguments); + }; +} +export function ValidateBy(options, validationOptions) { + return function (object, propertyName) { + registerDecorator({ + name: options.name, + target: object.constructor, + propertyName: propertyName, + options: validationOptions, + constraints: options.constraints, + validator: options.validator, + }); + }; +} +//# sourceMappingURL=ValidateBy.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidateBy.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidateBy.js.map new file mode 100644 index 00000000..75fb90d9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidateBy.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidateBy.js","sourceRoot":"","sources":["../../../../src/decorator/common/ValidateBy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAW7D,MAAM,UAAU,YAAY,CAC1B,IAAgE,EAChE,iBAAqC;IAErC,OAAO,UAAC,mBAAyC;QAC/C,IAAM,UAAU,GAAG,iBAAiB,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QACvF,OAAO,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IAC/C,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAA0B,EAAE,iBAAqC;IAC1F,OAAO,UAAU,MAAc,EAAE,YAAoB;QACnD,iBAAiB,CAAC;YAChB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,OAAO,EAAE,iBAAiB;YAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { registerDecorator } from '../../register-decorator';\nimport { ValidationArguments } from '../../validation/ValidationArguments';\nimport { ValidatorConstraintInterface } from '../../validation/ValidatorConstraintInterface';\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 ? 'each value in ' : '';\n return impl(eachPrefix, validationArguments);\n };\n}\n\nexport function ValidateBy(options: ValidateByOptions, validationOptions?: ValidationOptions): PropertyDecorator {\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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidateIf.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidateIf.js new file mode 100644 index 00000000..0a70d5b7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidateIf.js @@ -0,0 +1,19 @@ +import { ValidationTypes } from '../../validation/ValidationTypes'; +import { ValidationMetadata } from '../../metadata/ValidationMetadata'; +import { getMetadataStorage } from '../../metadata/MetadataStorage'; +/** + * Ignores the other validators on a property when the provided condition function returns false. + */ +export function ValidateIf(condition, validationOptions) { + return function (object, propertyName) { + var args = { + type: ValidationTypes.CONDITIONAL_VALIDATION, + target: object.constructor, + propertyName: propertyName, + constraints: [condition], + validationOptions: validationOptions, + }; + getMetadataStorage().addValidationMetadata(new ValidationMetadata(args)); + }; +} +//# sourceMappingURL=ValidateIf.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidateIf.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidateIf.js.map new file mode 100644 index 00000000..d8e53f48 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidateIf.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidateIf.js","sourceRoot":"","sources":["../../../../src/decorator/common/ValidateIf.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,SAA+C,EAC/C,iBAAqC;IAErC,OAAO,UAAU,MAAc,EAAE,YAAoB;QACnD,IAAM,IAAI,GAA2B;YACnC,IAAI,EAAE,eAAe,CAAC,sBAAsB;YAC5C,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,WAAW,EAAE,CAAC,SAAS,CAAC;YACxB,iBAAiB,EAAE,iBAAiB;SACrC,CAAC;QACF,kBAAkB,EAAE,CAAC,qBAAqB,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;AACJ,CAAC","sourcesContent":["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 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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidateNested.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidateNested.js new file mode 100644 index 00000000..14e7e5a8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidateNested.js @@ -0,0 +1,32 @@ +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +import { ValidationTypes } from '../../validation/ValidationTypes'; +import { ValidationMetadata } from '../../metadata/ValidationMetadata'; +import { getMetadataStorage } from '../../metadata/MetadataStorage'; +/** + * Objects / object arrays marked with this decorator will also be validated. + */ +export function ValidateNested(validationOptions) { + var opts = __assign({}, validationOptions); + var eachPrefix = opts.each ? 'each value in ' : ''; + opts.message = opts.message || eachPrefix + 'nested property $property must be either object or array'; + return function (object, propertyName) { + var args = { + type: ValidationTypes.NESTED_VALIDATION, + target: object.constructor, + propertyName: propertyName, + validationOptions: opts, + }; + getMetadataStorage().addValidationMetadata(new ValidationMetadata(args)); + }; +} +//# sourceMappingURL=ValidateNested.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidateNested.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidateNested.js.map new file mode 100644 index 00000000..400e60d0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidateNested.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidateNested.js","sourceRoot":"","sources":["../../../../src/decorator/common/ValidateNested.ts"],"names":[],"mappings":";;;;;;;;;;;AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,iBAAqC;IAClE,IAAM,IAAI,gBAA2B,iBAAiB,CAAE,CAAC;IACzD,IAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,UAAU,GAAG,0DAA0D,CAAC;IAEvG,OAAO,UAAU,MAAc,EAAE,YAAoB;QACnD,IAAM,IAAI,GAA2B;YACnC,IAAI,EAAE,eAAe,CAAC,iBAAiB;YACvC,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,iBAAiB,EAAE,IAAI;SACxB,CAAC;QACF,kBAAkB,EAAE,CAAC,qBAAqB,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;AACJ,CAAC","sourcesContent":["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 * 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 ? 'each value in ' : '';\n opts.message = opts.message || eachPrefix + 'nested property $property must be either object or array';\n\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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidatePromise.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidatePromise.js new file mode 100644 index 00000000..9c26936c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidatePromise.js @@ -0,0 +1,18 @@ +import { ValidationTypes } from '../../validation/ValidationTypes'; +import { ValidationMetadata } from '../../metadata/ValidationMetadata'; +import { getMetadataStorage } from '../../metadata/MetadataStorage'; +/** + * Resolve promise before validation + */ +export function ValidatePromise(validationOptions) { + return function (object, propertyName) { + var args = { + type: ValidationTypes.PROMISE_VALIDATION, + target: object.constructor, + propertyName: propertyName, + validationOptions: validationOptions, + }; + getMetadataStorage().addValidationMetadata(new ValidationMetadata(args)); + }; +} +//# sourceMappingURL=ValidatePromise.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidatePromise.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidatePromise.js.map new file mode 100644 index 00000000..a7949ada --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/common/ValidatePromise.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidatePromise.js","sourceRoot":"","sources":["../../../../src/decorator/common/ValidatePromise.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,iBAAqC;IACnE,OAAO,UAAU,MAAc,EAAE,YAAoB;QACnD,IAAM,IAAI,GAA2B;YACnC,IAAI,EAAE,eAAe,CAAC,kBAAkB;YACxC,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,iBAAiB,EAAE,iBAAiB;SACrC,CAAC;QACF,kBAAkB,EAAE,CAAC,qBAAqB,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;AACJ,CAAC","sourcesContent":["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 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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/date/MaxDate.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/date/MaxDate.js new file mode 100644 index 00000000..e19978fc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/date/MaxDate.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var MAX_DATE = 'maxDate'; +/** + * Checks if the value is a date that's before the specified date. + */ +export function maxDate(date, maxDate) { + return date instanceof Date && date.getTime() <= maxDate.getTime(); +} +/** + * Checks if the value is a date that's after the specified date. + */ +export function MaxDate(date, validationOptions) { + return ValidateBy({ + name: MAX_DATE, + constraints: [date], + validator: { + validate: function (value, args) { return maxDate(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return 'maximal allowed date for ' + eachPrefix + '$property is $constraint1'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=MaxDate.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/date/MaxDate.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/date/MaxDate.js.map new file mode 100644 index 00000000..bf440631 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/date/MaxDate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MaxDate.js","sourceRoot":"","sources":["../../../../src/decorator/date/MaxDate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,QAAQ,GAAG,SAAS,CAAC;AAElC;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAAa,EAAE,OAAa;IAClD,OAAO,IAAI,YAAY,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;AACrE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAAU,EAAE,iBAAqC;IACvE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,CAAC,IAAI,CAAC;QACnB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAnC,CAAmC;YACvE,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,2BAA2B,GAAG,UAAU,GAAG,2BAA2B,EAAtE,CAAsE,EACpF,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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): boolean {\n return date instanceof Date && date.getTime() <= 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, 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 => 'maximal allowed date for ' + eachPrefix + '$property is $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/date/MinDate.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/date/MinDate.js new file mode 100644 index 00000000..48a5c535 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/date/MinDate.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var MIN_DATE = 'minDate'; +/** + * Checks if the value is a date that's after the specified date. + */ +export function minDate(date, minDate) { + return date instanceof Date && date.getTime() >= minDate.getTime(); +} +/** + * Checks if the value is a date that's after the specified date. + */ +export function MinDate(date, validationOptions) { + return ValidateBy({ + name: MIN_DATE, + constraints: [date], + validator: { + validate: function (value, args) { return minDate(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return 'minimal allowed date for ' + eachPrefix + '$property is $constraint1'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=MinDate.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/date/MinDate.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/date/MinDate.js.map new file mode 100644 index 00000000..64fb87e7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/date/MinDate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MinDate.js","sourceRoot":"","sources":["../../../../src/decorator/date/MinDate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,QAAQ,GAAG,SAAS,CAAC;AAElC;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAAa,EAAE,OAAa;IAClD,OAAO,IAAI,YAAY,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;AACrE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAAU,EAAE,iBAAqC;IACvE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,CAAC,IAAI,CAAC;QACnB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAnC,CAAmC;YACvE,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,2BAA2B,GAAG,UAAU,GAAG,2BAA2B,EAAtE,CAAsE,EACpF,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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): boolean {\n return date instanceof Date && date.getTime() >= 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, 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 => 'minimal allowed date for ' + eachPrefix + '$property is $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/decorators.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/decorators.js new file mode 100644 index 00000000..8e323547 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/decorators.js @@ -0,0 +1,131 @@ +// ------------------------------------------------------------------------- +// System +// ------------------------------------------------------------------------- +// ------------------------------------------------------------------------- +// Common checkers +// ------------------------------------------------------------------------- +export * from './common/Allow'; +export * from './common/IsDefined'; +export * from './common/IsOptional'; +export * from './common/Validate'; +export * from './common/ValidateBy'; +export * from './common/ValidateIf'; +export * from './common/ValidateNested'; +export * from './common/ValidatePromise'; +export * from './common/IsLatLong'; +export * from './common/IsLatitude'; +export * from './common/IsLongitude'; +export * from './common/Equals'; +export * from './common/NotEquals'; +export * from './common/IsEmpty'; +export * from './common/IsNotEmpty'; +export * from './common/IsIn'; +export * from './common/IsNotIn'; +// ------------------------------------------------------------------------- +// Number checkers +// ------------------------------------------------------------------------- +export * from './number/IsDivisibleBy'; +export * from './number/IsPositive'; +export * from './number/IsNegative'; +export * from './number/Max'; +export * from './number/Min'; +// ------------------------------------------------------------------------- +// Date checkers +// ------------------------------------------------------------------------- +export * from './date/MinDate'; +export * from './date/MaxDate'; +// ------------------------------------------------------------------------- +// String checkers +// ------------------------------------------------------------------------- +export * from './string/Contains'; +export * from './string/NotContains'; +export * from './string/IsAlpha'; +export * from './string/IsAlphanumeric'; +export * from './string/IsDecimal'; +export * from './string/IsAscii'; +export * from './string/IsBase64'; +export * from './string/IsByteLength'; +export * from './string/IsCreditCard'; +export * from './string/IsCurrency'; +export * from './string/IsEmail'; +export * from './string/IsFQDN'; +export * from './string/IsFullWidth'; +export * from './string/IsHalfWidth'; +export * from './string/IsVariableWidth'; +export * from './string/IsHexColor'; +export * from './string/IsHexadecimal'; +export * from './string/IsMacAddress'; +export * from './string/IsIP'; +export * from './string/IsPort'; +export * from './string/IsISBN'; +export * from './string/IsISIN'; +export * from './string/IsISO8601'; +export * from './string/IsJSON'; +export * from './string/IsJWT'; +export * from './string/IsLowercase'; +export * from './string/IsMobilePhone'; +export * from './string/IsISO31661Alpha2'; +export * from './string/IsISO31661Alpha3'; +export * from './string/IsMongoId'; +export * from './string/IsMultibyte'; +export * from './string/IsSurrogatePair'; +export * from './string/IsUrl'; +export * from './string/IsUUID'; +export * from './string/IsFirebasePushId'; +export * from './string/IsUppercase'; +export * from './string/Length'; +export * from './string/MaxLength'; +export * from './string/MinLength'; +export * from './string/Matches'; +export * from './string/IsPhoneNumber'; +export * from './string/IsMilitaryTime'; +export * from './string/IsHash'; +export * from './string/IsISSN'; +export * from './string/IsDateString'; +export * from './string/IsBooleanString'; +export * from './string/IsNumberString'; +export * from './string/IsBase32'; +export * from './string/IsBIC'; +export * from './string/IsBtcAddress'; +export * from './string/IsDataURI'; +export * from './string/IsEAN'; +export * from './string/IsEthereumAddress'; +export * from './string/IsHSL'; +export * from './string/IsIBAN'; +export * from './string/IsIdentityCard'; +export * from './string/IsISRC'; +export * from './string/IsLocale'; +export * from './string/IsMagnetURI'; +export * from './string/IsMimeType'; +export * from './string/IsOctal'; +export * from './string/IsPassportNumber'; +export * from './string/IsPostalCode'; +export * from './string/IsRFC3339'; +export * from './string/IsRgbColor'; +export * from './string/IsSemVer'; +// ------------------------------------------------------------------------- +// Type checkers +// ------------------------------------------------------------------------- +export * from './typechecker/IsBoolean'; +export * from './typechecker/IsDate'; +export * from './typechecker/IsNumber'; +export * from './typechecker/IsEnum'; +export * from './typechecker/IsInt'; +export * from './typechecker/IsString'; +export * from './typechecker/IsArray'; +export * from './typechecker/IsObject'; +// ------------------------------------------------------------------------- +// Array checkers +// ------------------------------------------------------------------------- +export * from './array/ArrayContains'; +export * from './array/ArrayNotContains'; +export * from './array/ArrayNotEmpty'; +export * from './array/ArrayMinSize'; +export * from './array/ArrayMaxSize'; +export * from './array/ArrayUnique'; +// ------------------------------------------------------------------------- +// Object checkers +// ------------------------------------------------------------------------- +export * from './object/IsNotEmptyObject'; +export * from './object/IsInstance'; +//# sourceMappingURL=decorators.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/decorators.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/decorators.js.map new file mode 100644 index 00000000..4409bf08 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/decorators.js.map @@ -0,0 +1 @@ +{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../src/decorator/decorators.ts"],"names":[],"mappings":"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","sourcesContent":["// -------------------------------------------------------------------------\n// System\n// -------------------------------------------------------------------------\n\n// -------------------------------------------------------------------------\n// Common checkers\n// -------------------------------------------------------------------------\n\nexport * from './common/Allow';\nexport * from './common/IsDefined';\nexport * from './common/IsOptional';\nexport * from './common/Validate';\nexport * from './common/ValidateBy';\nexport * from './common/ValidateIf';\nexport * from './common/ValidateNested';\nexport * from './common/ValidatePromise';\nexport * from './common/IsLatLong';\nexport * from './common/IsLatitude';\nexport * from './common/IsLongitude';\nexport * from './common/Equals';\nexport * from './common/NotEquals';\nexport * from './common/IsEmpty';\nexport * from './common/IsNotEmpty';\nexport * from './common/IsIn';\nexport * from './common/IsNotIn';\n\n// -------------------------------------------------------------------------\n// Number checkers\n// -------------------------------------------------------------------------\n\nexport * from './number/IsDivisibleBy';\nexport * from './number/IsPositive';\nexport * from './number/IsNegative';\nexport * from './number/Max';\nexport * from './number/Min';\n\n// -------------------------------------------------------------------------\n// Date checkers\n// -------------------------------------------------------------------------\n\nexport * from './date/MinDate';\nexport * from './date/MaxDate';\n\n// -------------------------------------------------------------------------\n// String checkers\n// -------------------------------------------------------------------------\n\nexport * from './string/Contains';\nexport * from './string/NotContains';\nexport * from './string/IsAlpha';\nexport * from './string/IsAlphanumeric';\nexport * from './string/IsDecimal';\nexport * from './string/IsAscii';\nexport * from './string/IsBase64';\nexport * from './string/IsByteLength';\nexport * from './string/IsCreditCard';\nexport * from './string/IsCurrency';\nexport * from './string/IsEmail';\nexport * from './string/IsFQDN';\nexport * from './string/IsFullWidth';\nexport * from './string/IsHalfWidth';\nexport * from './string/IsVariableWidth';\nexport * from './string/IsHexColor';\nexport * from './string/IsHexadecimal';\nexport * from './string/IsMacAddress';\nexport * from './string/IsIP';\nexport * from './string/IsPort';\nexport * from './string/IsISBN';\nexport * from './string/IsISIN';\nexport * from './string/IsISO8601';\nexport * from './string/IsJSON';\nexport * from './string/IsJWT';\nexport * from './string/IsLowercase';\nexport * from './string/IsMobilePhone';\nexport * from './string/IsISO31661Alpha2';\nexport * from './string/IsISO31661Alpha3';\nexport * from './string/IsMongoId';\nexport * from './string/IsMultibyte';\nexport * from './string/IsSurrogatePair';\nexport * from './string/IsUrl';\nexport * from './string/IsUUID';\nexport * from './string/IsFirebasePushId';\nexport * from './string/IsUppercase';\nexport * from './string/Length';\nexport * from './string/MaxLength';\nexport * from './string/MinLength';\nexport * from './string/Matches';\nexport * from './string/IsPhoneNumber';\nexport * from './string/IsMilitaryTime';\nexport * from './string/IsHash';\nexport * from './string/IsISSN';\nexport * from './string/IsDateString';\nexport * from './string/IsBooleanString';\nexport * from './string/IsNumberString';\nexport * from './string/IsBase32';\nexport * from './string/IsBIC';\nexport * from './string/IsBtcAddress';\nexport * from './string/IsDataURI';\nexport * from './string/IsEAN';\nexport * from './string/IsEthereumAddress';\nexport * from './string/IsHSL';\nexport * from './string/IsIBAN';\nexport * from './string/IsIdentityCard';\nexport * from './string/IsISRC';\nexport * from './string/IsLocale';\nexport * from './string/IsMagnetURI';\nexport * from './string/IsMimeType';\nexport * from './string/IsOctal';\nexport * from './string/IsPassportNumber';\nexport * from './string/IsPostalCode';\nexport * from './string/IsRFC3339';\nexport * from './string/IsRgbColor';\nexport * from './string/IsSemVer';\n\n// -------------------------------------------------------------------------\n// Type checkers\n// -------------------------------------------------------------------------\n\nexport * from './typechecker/IsBoolean';\nexport * from './typechecker/IsDate';\nexport * from './typechecker/IsNumber';\nexport * from './typechecker/IsEnum';\nexport * from './typechecker/IsInt';\nexport * from './typechecker/IsString';\nexport * from './typechecker/IsArray';\nexport * from './typechecker/IsObject';\n\n// -------------------------------------------------------------------------\n// Array checkers\n// -------------------------------------------------------------------------\n\nexport * from './array/ArrayContains';\nexport * from './array/ArrayNotContains';\nexport * from './array/ArrayNotEmpty';\nexport * from './array/ArrayMinSize';\nexport * from './array/ArrayMaxSize';\nexport * from './array/ArrayUnique';\n\n// -------------------------------------------------------------------------\n// Object checkers\n// -------------------------------------------------------------------------\n\nexport * from './object/IsNotEmptyObject';\nexport * from './object/IsInstance';\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/IsDivisibleBy.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/IsDivisibleBy.js new file mode 100644 index 00000000..3c84d184 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/IsDivisibleBy.js @@ -0,0 +1,23 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isDivisibleByValidator from 'validator/lib/isDivisibleBy'; +export var IS_DIVISIBLE_BY = 'isDivisibleBy'; +/** + * Checks if value is a number that's divisible by another. + */ +export function isDivisibleBy(value, num) { + return typeof value === 'number' && typeof num === 'number' && isDivisibleByValidator(String(value), num); +} +/** + * Checks if value is a number that's divisible by another. + */ +export function IsDivisibleBy(num, validationOptions) { + return ValidateBy({ + name: IS_DIVISIBLE_BY, + constraints: [num], + validator: { + validate: function (value, args) { return isDivisibleBy(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be divisible by $constraint1'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsDivisibleBy.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/IsDivisibleBy.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/IsDivisibleBy.js.map new file mode 100644 index 00000000..4386d60a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/IsDivisibleBy.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsDivisibleBy.js","sourceRoot":"","sources":["../../../../src/decorator/number/IsDivisibleBy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,sBAAsB,MAAM,6BAA6B,CAAC;AAEjE,MAAM,CAAC,IAAM,eAAe,GAAG,eAAe,CAAC;AAE/C;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc,EAAE,GAAW;IACvD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;AAC5G,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,iBAAqC;IAC9E,OAAO,UAAU,CACf;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,CAAC,GAAG,CAAC;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAzC,CAAyC;YAC7E,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,6CAA6C,EAA1D,CAA0D,EACxE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be divisible by $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/IsNegative.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/IsNegative.js new file mode 100644 index 00000000..2e307bb8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/IsNegative.js @@ -0,0 +1,21 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var IS_NEGATIVE = 'isNegative'; +/** + * Checks if the value is a negative number smaller than zero. + */ +export function isNegative(value) { + return typeof value === 'number' && value < 0; +} +/** + * Checks if the value is a negative number smaller than zero. + */ +export function IsNegative(validationOptions) { + return ValidateBy({ + name: IS_NEGATIVE, + validator: { + validate: function (value, args) { return isNegative(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a negative number'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsNegative.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/IsNegative.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/IsNegative.js.map new file mode 100644 index 00000000..a701100f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/IsNegative.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsNegative.js","sourceRoot":"","sources":["../../../../src/decorator/number/IsNegative.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,WAAW,GAAG,YAAY,CAAC;AAExC;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,iBAAqC;IAC9D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,UAAU,CAAC,KAAK,CAAC,EAAjB,CAAiB;YACrD,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,qCAAqC,EAAlD,CAAkD,EAChE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a negative number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/IsPositive.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/IsPositive.js new file mode 100644 index 00000000..e76e840e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/IsPositive.js @@ -0,0 +1,21 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var IS_POSITIVE = 'isPositive'; +/** + * Checks if the value is a positive number greater than zero. + */ +export function isPositive(value) { + return typeof value === 'number' && value > 0; +} +/** + * Checks if the value is a positive number greater than zero. + */ +export function IsPositive(validationOptions) { + return ValidateBy({ + name: IS_POSITIVE, + validator: { + validate: function (value, args) { return isPositive(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a positive number'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsPositive.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/IsPositive.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/IsPositive.js.map new file mode 100644 index 00000000..b79fd5d0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/IsPositive.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsPositive.js","sourceRoot":"","sources":["../../../../src/decorator/number/IsPositive.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,WAAW,GAAG,YAAY,CAAC;AAExC;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,iBAAqC;IAC9D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,UAAU,CAAC,KAAK,CAAC,EAAjB,CAAiB;YACrD,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,qCAAqC,EAAlD,CAAkD,EAChE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a positive number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/Max.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/Max.js new file mode 100644 index 00000000..b356b8c8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/Max.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var MAX = 'max'; +/** + * Checks if the first number is less than or equal to the second. + */ +export function max(num, max) { + return typeof num === 'number' && typeof max === 'number' && num <= max; +} +/** + * Checks if the first number is less than or equal to the second. + */ +export function Max(maxValue, validationOptions) { + return ValidateBy({ + name: MAX, + constraints: [maxValue], + validator: { + validate: function (value, args) { return max(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must not be greater than $constraint1'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=Max.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/Max.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/Max.js.map new file mode 100644 index 00000000..ef7bc43f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/Max.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Max.js","sourceRoot":"","sources":["../../../../src/decorator/number/Max.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,GAAG,GAAG,KAAK,CAAC;AAEzB;;GAEG;AACH,MAAM,UAAU,GAAG,CAAC,GAAY,EAAE,GAAW;IAC3C,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,GAAG,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,GAAG,CAAC,QAAgB,EAAE,iBAAqC;IACzE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,CAAC,QAAQ,CAAC;QACvB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAA/B,CAA+B;YACnE,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,iDAAiD,EAA9D,CAA8D,EAC5E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 first number is less than or equal to the second.\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 + '$property must not be greater than $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/Min.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/Min.js new file mode 100644 index 00000000..77a45872 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/Min.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var MIN = 'min'; +/** + * Checks if the first number is greater than or equal to the second. + */ +export function min(num, min) { + return typeof num === 'number' && typeof min === 'number' && num >= min; +} +/** + * Checks if the first number is greater than or equal to the second. + */ +export function Min(minValue, validationOptions) { + return ValidateBy({ + name: MIN, + constraints: [minValue], + validator: { + validate: function (value, args) { return min(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must not be less than $constraint1'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=Min.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/Min.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/Min.js.map new file mode 100644 index 00000000..64b2c0d2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/number/Min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Min.js","sourceRoot":"","sources":["../../../../src/decorator/number/Min.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,GAAG,GAAG,KAAK,CAAC;AAEzB;;GAEG;AACH,MAAM,UAAU,GAAG,CAAC,GAAY,EAAE,GAAW;IAC3C,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,GAAG,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,GAAG,CAAC,QAAgB,EAAE,iBAAqC;IACzE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,CAAC,QAAQ,CAAC;QACvB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAA/B,CAA+B;YACnE,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,8CAA8C,EAA3D,CAA2D,EACzE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 first number is greater than or equal to the second.\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 + '$property must not be less than $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/object/IsInstance.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/object/IsInstance.js new file mode 100644 index 00000000..f0793c72 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/object/IsInstance.js @@ -0,0 +1,29 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var IS_INSTANCE = 'isInstance'; +/** + * Checks if the value is an instance of the specified object. + */ +export function isInstance(object, targetTypeConstructor) { + return (targetTypeConstructor && typeof targetTypeConstructor === 'function' && object instanceof targetTypeConstructor); +} +/** + * Checks if the value is an instance of the specified object. + */ +export function IsInstance(targetType, validationOptions) { + return ValidateBy({ + name: IS_INSTANCE, + constraints: [targetType], + validator: { + validate: function (value, args) { return isInstance(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix, args) { + if (args.constraints[0]) { + return eachPrefix + "$property must be an instance of ".concat(args.constraints[0].name); + } + else { + return eachPrefix + "".concat(IS_INSTANCE, " decorator expects and object as value, but got falsy value."); + } + }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsInstance.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/object/IsInstance.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/object/IsInstance.js.map new file mode 100644 index 00000000..f88d685d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/object/IsInstance.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsInstance.js","sourceRoot":"","sources":["../../../../src/decorator/object/IsInstance.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,WAAW,GAAG,YAAY,CAAC;AAExC;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,MAAe,EAAE,qBAAkD;IAC5F,OAAO,CACL,qBAAqB,IAAI,OAAO,qBAAqB,KAAK,UAAU,IAAI,MAAM,YAAY,qBAAqB,CAChH,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,UAAuC,EACvC,iBAAqC;IAErC,OAAO,UAAU,CACf;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,CAAC,UAAU,CAAC;QACzB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAtC,CAAsC;YAC1E,cAAc,EAAE,YAAY,CAAC,UAAC,UAAU,EAAE,IAAI;gBAC5C,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;oBACvB,OAAO,UAAU,GAAG,2CAAoC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAc,CAAE,CAAC;iBAC9F;qBAAM;oBACL,OAAO,UAAU,GAAG,UAAG,WAAW,iEAA8D,CAAC;iBAClG;YACH,CAAC,EAAE,iBAAiB,CAAC;SACtB;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + `$property must be an instance of ${args.constraints[0].name as string}`;\n } else {\n return eachPrefix + `${IS_INSTANCE} decorator expects and object as value, but got falsy value.`;\n }\n }, validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/object/IsNotEmptyObject.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/object/IsNotEmptyObject.js new file mode 100644 index 00000000..d0d428be --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/object/IsNotEmptyObject.js @@ -0,0 +1,36 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import { isObject } from '../typechecker/IsObject'; +export var IS_NOT_EMPTY_OBJECT = 'isNotEmptyObject'; +/** + * Checks if the value is valid Object & not empty. + * Returns false if the value is not an object or an empty valid object. + */ +export function isNotEmptyObject(value, options) { + if (!isObject(value)) { + return false; + } + if ((options === null || options === void 0 ? void 0 : options.nullable) === true) { + return !Object.values(value).every(function (propertyValue) { return propertyValue === null || propertyValue === undefined; }); + } + for (var key in value) { + if (value.hasOwnProperty(key)) { + return true; + } + } + return false; +} +/** + * Checks if the value is valid Object & not empty. + * Returns false if the value is not an object or an empty valid object. + */ +export function IsNotEmptyObject(options, validationOptions) { + return ValidateBy({ + name: IS_NOT_EMPTY_OBJECT, + constraints: [options], + validator: { + validate: function (value, args) { return isNotEmptyObject(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a non-empty object'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsNotEmptyObject.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/object/IsNotEmptyObject.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/object/IsNotEmptyObject.js.map new file mode 100644 index 00000000..0a56921c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/object/IsNotEmptyObject.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsNotEmptyObject.js","sourceRoot":"","sources":["../../../../src/decorator/object/IsNotEmptyObject.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,MAAM,CAAC,IAAM,mBAAmB,GAAG,kBAAkB,CAAC;AAEtD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc,EAAE,OAAgC;IAC/E,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QACpB,OAAO,KAAK,CAAC;KACd;IAED,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,MAAK,IAAI,EAAE;QAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,UAAA,aAAa,IAAI,OAAA,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,SAAS,EAArD,CAAqD,CAAC,CAAC;KAC5G;IAED,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE;QACvB,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YAC7B,OAAO,IAAI,CAAC;SACb;KACF;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAgC,EAChC,iBAAqC;IAErC,OAAO,UAAU,CACf;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAA5C,CAA4C;YAChF,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,sCAAsC,EAAnD,CAAmD,EACjE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 === true) {\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 + '$property must be a non-empty object',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/Contains.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/Contains.js new file mode 100644 index 00000000..0a021411 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/Contains.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import containsValidator from 'validator/lib/contains'; +export var CONTAINS = 'contains'; +/** + * Checks if the string contains the seed. + * If given value is not a string, then it returns false. + */ +export function contains(value, seed) { + return typeof value === 'string' && containsValidator(value, seed); +} +/** + * Checks if the string contains the seed. + * If given value is not a string, then it returns false. + */ +export function Contains(seed, validationOptions) { + return ValidateBy({ + name: CONTAINS, + constraints: [seed], + validator: { + validate: function (value, args) { return contains(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain a $constraint1 string'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=Contains.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/Contains.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/Contains.js.map new file mode 100644 index 00000000..06111cb7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/Contains.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Contains.js","sourceRoot":"","sources":["../../../../src/decorator/string/Contains.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AAEvD,MAAM,CAAC,IAAM,QAAQ,GAAG,UAAU,CAAC;AAEnC;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc,EAAE,IAAY;IACnD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACrE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,iBAAqC;IAC1E,OAAO,UAAU,CACf;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,CAAC,IAAI,CAAC;QACnB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAApC,CAAoC;YACxE,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,8CAA8C,EAA3D,CAA2D,EACzE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must contain a $constraint1 string',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsAlpha.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsAlpha.js new file mode 100644 index 00000000..5d59d7db --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsAlpha.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isAlphaValidator from 'validator/lib/isAlpha'; +export var IS_ALPHA = 'isAlpha'; +/** + * Checks if the string contains only letters (a-zA-Z). + * If given value is not a string, then it returns false. + */ +export function isAlpha(value, locale) { + return typeof value === 'string' && isAlphaValidator(value, locale); +} +/** + * Checks if the string contains only letters (a-zA-Z). + * If given value is not a string, then it returns false. + */ +export function IsAlpha(locale, validationOptions) { + return ValidateBy({ + name: IS_ALPHA, + constraints: [locale], + validator: { + validate: function (value, args) { return isAlpha(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain only letters (a-zA-Z)'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsAlpha.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsAlpha.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsAlpha.js.map new file mode 100644 index 00000000..03d49da7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsAlpha.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsAlpha.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsAlpha.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AAGrD,MAAM,CAAC,IAAM,QAAQ,GAAG,SAAS,CAAC;AAElC;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,KAAc,EAAE,MAAgC;IACtE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,MAAe,EAAE,iBAAqC;IAC5E,OAAO,UAAU,CACf;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAnC,CAAmC;YACvE,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,8CAA8C,EAA3D,CAA2D,EACzE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isAlphaValidator from 'validator/lib/isAlpha';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.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?: string, 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 + '$property must contain only letters (a-zA-Z)',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsAlphanumeric.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsAlphanumeric.js new file mode 100644 index 00000000..7ff57a7e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsAlphanumeric.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isAlphanumericValidator from 'validator/lib/isAlphanumeric'; +export var IS_ALPHANUMERIC = 'isAlphanumeric'; +/** + * Checks if the string contains only letters and numbers. + * If given value is not a string, then it returns false. + */ +export function isAlphanumeric(value, locale) { + return typeof value === 'string' && isAlphanumericValidator(value, locale); +} +/** + * Checks if the string contains only letters and numbers. + * If given value is not a string, then it returns false. + */ +export function IsAlphanumeric(locale, validationOptions) { + return ValidateBy({ + name: IS_ALPHANUMERIC, + constraints: [locale], + validator: { + validate: function (value, args) { return isAlphanumeric(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain only letters and numbers'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsAlphanumeric.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsAlphanumeric.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsAlphanumeric.js.map new file mode 100644 index 00000000..51b89e45 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsAlphanumeric.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsAlphanumeric.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsAlphanumeric.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,uBAAuB,MAAM,8BAA8B,CAAC;AAGnE,MAAM,CAAC,IAAM,eAAe,GAAG,gBAAgB,CAAC;AAEhD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc,EAAE,MAAuC;IACpF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC7E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAe,EAAE,iBAAqC;IACnF,OAAO,UAAU,CACf;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAA1C,CAA0C;YAC9E,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,iDAAiD,EAA9D,CAA8D,EAC5E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isAlphanumericValidator from 'validator/lib/isAlphanumeric';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.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(locale?: string, validationOptions?: ValidationOptions): 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 + '$property must contain only letters and numbers',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsAscii.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsAscii.js new file mode 100644 index 00000000..35856d5e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsAscii.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isAsciiValidator from 'validator/lib/isAscii'; +export var IS_ASCII = 'isAscii'; +/** + * Checks if the string contains ASCII chars only. + * If given value is not a string, then it returns false. + */ +export function isAscii(value) { + return typeof value === 'string' && isAsciiValidator(value); +} +/** + * Checks if the string contains ASCII chars only. + * If given value is not a string, then it returns false. + */ +export function IsAscii(validationOptions) { + return ValidateBy({ + name: IS_ASCII, + validator: { + validate: function (value, args) { return isAscii(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain only ASCII characters'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsAscii.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsAscii.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsAscii.js.map new file mode 100644 index 00000000..2c68772f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsAscii.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsAscii.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsAscii.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AAErD,MAAM,CAAC,IAAM,QAAQ,GAAG,SAAS,CAAC;AAElC;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,iBAAqC;IAC3D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,OAAO,CAAC,KAAK,CAAC,EAAd,CAAc;YAClD,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,8CAA8C,EAA3D,CAA2D,EACzE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must contain only ASCII characters',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBIC.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBIC.js new file mode 100644 index 00000000..53c4c5ec --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBIC.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isBICValidator from 'validator/lib/isBIC'; +export var IS_BIC = 'isBIC'; +/** + * Check if a string is a BIC (Bank Identification Code) or SWIFT code. + * If given value is not a string, then it returns false. + */ +export function isBIC(value) { + return typeof value === 'string' && isBICValidator(value); +} +/** + * Check if a string is a BIC (Bank Identification Code) or SWIFT code. + * If given value is not a string, then it returns false. + */ +export function IsBIC(validationOptions) { + return ValidateBy({ + name: IS_BIC, + validator: { + validate: function (value, args) { return isBIC(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a BIC or SWIFT code'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsBIC.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBIC.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBIC.js.map new file mode 100644 index 00000000..37cd90d7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBIC.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsBIC.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsBIC.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAEjD,MAAM,CAAC,IAAM,MAAM,GAAG,OAAO,CAAC;AAE9B;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,iBAAqC;IACzD,OAAO,UAAU,CACf;QACE,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,KAAK,CAAC,KAAK,CAAC,EAAZ,CAAY;YAChD,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,uCAAuC,EAApD,CAAoD,EAClE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a BIC or SWIFT code',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBase32.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBase32.js new file mode 100644 index 00000000..7932d922 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBase32.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isBase32Validator from 'validator/lib/isBase32'; +export var IS_BASE32 = 'isBase32'; +/** + * Checks if a string is base32 encoded. + * If given value is not a string, then it returns false. + */ +export function isBase32(value) { + return typeof value === 'string' && isBase32Validator(value); +} +/** + * Check if a string is base32 encoded. + * If given value is not a string, then it returns false. + */ +export function IsBase32(validationOptions) { + return ValidateBy({ + name: IS_BASE32, + validator: { + validate: function (value, args) { return isBase32(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be base32 encoded'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsBase32.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBase32.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBase32.js.map new file mode 100644 index 00000000..49e63b82 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBase32.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsBase32.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsBase32.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AAEvD,MAAM,CAAC,IAAM,SAAS,GAAG,UAAU,CAAC;AAEpC;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,iBAAqC;IAC5D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,SAAS;QACf,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,QAAQ,CAAC,KAAK,CAAC,EAAf,CAAe;YACnD,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,kCAAkC,EAA/C,CAA+C,EAAE,iBAAiB,CAAC;SAC/G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be base32 encoded', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBase64.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBase64.js new file mode 100644 index 00000000..bf69fc4f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBase64.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isBase64Validator from 'validator/lib/isBase64'; +export var IS_BASE64 = 'isBase64'; +/** + * Checks if a string is base64 encoded. + * If given value is not a string, then it returns false. + */ +export function isBase64(value) { + return typeof value === 'string' && isBase64Validator(value); +} +/** + * Checks if a string is base64 encoded. + * If given value is not a string, then it returns false. + */ +export function IsBase64(validationOptions) { + return ValidateBy({ + name: IS_BASE64, + validator: { + validate: function (value, args) { return isBase64(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be base64 encoded'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsBase64.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBase64.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBase64.js.map new file mode 100644 index 00000000..c9417f42 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBase64.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsBase64.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsBase64.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AAEvD,MAAM,CAAC,IAAM,SAAS,GAAG,UAAU,CAAC;AAEpC;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,iBAAqC;IAC5D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,SAAS;QACf,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,QAAQ,CAAC,KAAK,CAAC,EAAf,CAAe;YACnD,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,kCAAkC,EAA/C,CAA+C,EAAE,iBAAiB,CAAC;SAC/G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isBase64Validator from 'validator/lib/isBase64';\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 isBase64(value: unknown): boolean {\n return typeof value === 'string' && isBase64Validator(value);\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(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_BASE64,\n validator: {\n validate: (value, args): boolean => isBase64(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be base64 encoded', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBooleanString.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBooleanString.js new file mode 100644 index 00000000..ca65ec3b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBooleanString.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isBooleanValidator from 'validator/lib/isBoolean'; +export var IS_BOOLEAN_STRING = 'isBooleanString'; +/** + * Checks if a string is a boolean. + * If given value is not a string, then it returns false. + */ +export function isBooleanString(value) { + return typeof value === 'string' && isBooleanValidator(value); +} +/** + * Checks if a string is a boolean. + * If given value is not a string, then it returns false. + */ +export function IsBooleanString(validationOptions) { + return ValidateBy({ + name: IS_BOOLEAN_STRING, + validator: { + validate: function (value, args) { return isBooleanString(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a boolean string'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsBooleanString.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBooleanString.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBooleanString.js.map new file mode 100644 index 00000000..6ae9891a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBooleanString.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsBooleanString.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsBooleanString.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAEzD,MAAM,CAAC,IAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAEnD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,iBAAqC;IACnE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,iBAAiB;QACvB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,eAAe,CAAC,KAAK,CAAC,EAAtB,CAAsB;YAC1D,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,oCAAoC,EAAjD,CAAiD,EAC/D,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a boolean string',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBtcAddress.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBtcAddress.js new file mode 100644 index 00000000..68cc69cc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBtcAddress.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isBtcAddressValidator from 'validator/lib/isBtcAddress'; +export var IS_BTC_ADDRESS = 'isBtcAddress'; +/** + * Check if the string is a valid BTC address. + * If given value is not a string, then it returns false. + */ +export function isBtcAddress(value) { + return typeof value === 'string' && isBtcAddressValidator(value); +} +/** + * Check if the string is a valid BTC address. + * If given value is not a string, then it returns false. + */ +export function IsBtcAddress(validationOptions) { + return ValidateBy({ + name: IS_BTC_ADDRESS, + validator: { + validate: function (value, args) { return isBtcAddress(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a BTC address'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsBtcAddress.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBtcAddress.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBtcAddress.js.map new file mode 100644 index 00000000..98160118 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsBtcAddress.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsBtcAddress.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsBtcAddress.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,qBAAqB,MAAM,4BAA4B,CAAC;AAE/D,MAAM,CAAC,IAAM,cAAc,GAAG,cAAc,CAAC;AAE7C;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,qBAAqB,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,iBAAqC;IAChE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,cAAc;QACpB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,YAAY,CAAC,KAAK,CAAC,EAAnB,CAAmB;YACvD,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,iCAAiC,EAA9C,CAA8C,EAAE,iBAAiB,CAAC;SAC9G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a BTC address', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsByteLength.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsByteLength.js new file mode 100644 index 00000000..1d662c9b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsByteLength.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isByteLengthValidator from 'validator/lib/isByteLength'; +export var IS_BYTE_LENGTH = 'isByteLength'; +/** + * Checks if the string's length (in bytes) falls in a range. + * If given value is not a string, then it returns false. + */ +export function isByteLength(value, min, max) { + return typeof value === 'string' && isByteLengthValidator(value, { min: min, max: max }); +} +/** + * Checks if the string's length (in bytes) falls in a range. + * If given value is not a string, then it returns false. + */ +export function IsByteLength(min, max, validationOptions) { + return ValidateBy({ + name: IS_BYTE_LENGTH, + constraints: [min, max], + validator: { + validate: function (value, args) { return isByteLength(value, args.constraints[0], args.constraints[1]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + "$property's byte length must fall into ($constraint1, $constraint2) range"; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsByteLength.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsByteLength.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsByteLength.js.map new file mode 100644 index 00000000..d5952f8a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsByteLength.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsByteLength.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsByteLength.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,qBAAqB,MAAM,4BAA4B,CAAC;AAE/D,MAAM,CAAC,IAAM,cAAc,GAAG,cAAc,CAAC;AAE7C;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc,EAAE,GAAW,EAAE,GAAY;IACpE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,qBAAqB,CAAC,KAAK,EAAE,EAAE,GAAG,KAAA,EAAE,GAAG,KAAA,EAAE,CAAC,CAAC;AACjF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,GAAY,EAAE,iBAAqC;IAC3F,OAAO,UAAU,CACf;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;QACvB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAA7D,CAA6D;YACjG,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,2EAA2E,EAAxF,CAAwF,EACtG,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + \"$property's byte length must fall into ($constraint1, $constraint2) range\",\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsCreditCard.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsCreditCard.js new file mode 100644 index 00000000..3756eb8e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsCreditCard.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isCreditCardValidator from 'validator/lib/isCreditCard'; +export var IS_CREDIT_CARD = 'isCreditCard'; +/** + * Checks if the string is a credit card. + * If given value is not a string, then it returns false. + */ +export function isCreditCard(value) { + return typeof value === 'string' && isCreditCardValidator(value); +} +/** + * Checks if the string is a credit card. + * If given value is not a string, then it returns false. + */ +export function IsCreditCard(validationOptions) { + return ValidateBy({ + name: IS_CREDIT_CARD, + validator: { + validate: function (value, args) { return isCreditCard(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a credit card'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsCreditCard.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsCreditCard.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsCreditCard.js.map new file mode 100644 index 00000000..fb2c3d82 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsCreditCard.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsCreditCard.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsCreditCard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,qBAAqB,MAAM,4BAA4B,CAAC;AAE/D,MAAM,CAAC,IAAM,cAAc,GAAG,cAAc,CAAC;AAE7C;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,qBAAqB,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,iBAAqC;IAChE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,cAAc;QACpB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,YAAY,CAAC,KAAK,CAAC,EAAnB,CAAmB;YACvD,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,iCAAiC,EAA9C,CAA8C,EAAE,iBAAiB,CAAC;SAC9G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a credit card', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsCurrency.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsCurrency.js new file mode 100644 index 00000000..f893d2fc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsCurrency.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isCurrencyValidator from 'validator/lib/isCurrency'; +export var IS_CURRENCY = 'isCurrency'; +/** + * Checks if the string is a valid currency amount. + * If given value is not a string, then it returns false. + */ +export function isCurrency(value, options) { + return typeof value === 'string' && isCurrencyValidator(value, options); +} +/** + * Checks if the string is a valid currency amount. + * If given value is not a string, then it returns false. + */ +export function IsCurrency(options, validationOptions) { + return ValidateBy({ + name: IS_CURRENCY, + constraints: [options], + validator: { + validate: function (value, args) { return isCurrency(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a currency'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsCurrency.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsCurrency.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsCurrency.js.map new file mode 100644 index 00000000..f715d6d1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsCurrency.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsCurrency.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsCurrency.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAG3D,MAAM,CAAC,IAAM,WAAW,GAAG,YAAY,CAAC;AAExC;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc,EAAE,OAAuC;IAChF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC1E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CACxB,OAAuC,EACvC,iBAAqC;IAErC,OAAO,UAAU,CACf;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAtC,CAAsC;YAC1E,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,8BAA8B,EAA3C,CAA2C,EAAE,iBAAiB,CAAC;SAC3G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isCurrencyValidator from 'validator/lib/isCurrency';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.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?: ValidatorJS.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 + '$property must be a currency', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsDataURI.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsDataURI.js new file mode 100644 index 00000000..ff709b9d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsDataURI.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isDataURIValidator from 'validator/lib/isDataURI'; +export var IS_DATA_URI = 'isDataURI'; +/** + * Check if the string is a data uri format. + * If given value is not a string, then it returns false. + */ +export function isDataURI(value) { + return typeof value === 'string' && isDataURIValidator(value); +} +/** + * Check if the string is a data uri format. + * If given value is not a string, then it returns false. + */ +export function IsDataURI(validationOptions) { + return ValidateBy({ + name: IS_DATA_URI, + validator: { + validate: function (value, args) { return isDataURI(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a data uri format'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsDataURI.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsDataURI.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsDataURI.js.map new file mode 100644 index 00000000..6a246ae4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsDataURI.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsDataURI.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsDataURI.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAEzD,MAAM,CAAC,IAAM,WAAW,GAAG,WAAW,CAAC;AAEvC;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,iBAAqC;IAC7D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,SAAS,CAAC,KAAK,CAAC,EAAhB,CAAgB;YACpD,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,qCAAqC,EAAlD,CAAkD,EAChE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a data uri format',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsDateString.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsDateString.js new file mode 100644 index 00000000..26a4981c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsDateString.js @@ -0,0 +1,23 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import { isISO8601 } from './IsISO8601'; +export var IS_DATE_STRING = 'isDateString'; +/** + * Alias for IsISO8601 validator + */ +export function isDateString(value, options) { + return isISO8601(value, options); +} +/** + * Alias for IsISO8601 validator + */ +export function IsDateString(options, validationOptions) { + return ValidateBy({ + name: IS_DATE_STRING, + constraints: [options], + validator: { + validate: function (value, args) { return isDateString(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid ISO 8601 date string'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsDateString.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsDateString.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsDateString.js.map new file mode 100644 index 00000000..f8df5d10 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsDateString.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsDateString.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsDateString.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,CAAC,IAAM,cAAc,GAAG,cAAc,CAAC;AAE7C;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc,EAAE,OAAsC;IACjF,OAAO,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAsC,EACtC,iBAAqC;IAErC,OAAO,UAAU,CACf;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,YAAY,CAAC,KAAK,CAAC,EAAnB,CAAmB;YACvD,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,gDAAgD,EAA7D,CAA6D,EAC3E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport ValidatorJS from 'validator';\nimport { isISO8601 } from './IsISO8601';\n\nexport const IS_DATE_STRING = 'isDateString';\n\n/**\n * Alias for IsISO8601 validator\n */\nexport function isDateString(value: unknown, options?: ValidatorJS.IsISO8601Options): boolean {\n return isISO8601(value, options);\n}\n\n/**\n * Alias for IsISO8601 validator\n */\nexport function IsDateString(\n options?: ValidatorJS.IsISO8601Options,\n validationOptions?: ValidationOptions\n): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_DATE_STRING,\n constraints: [options],\n validator: {\n validate: (value, args): boolean => isDateString(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + '$property must be a valid ISO 8601 date string',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsDecimal.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsDecimal.js new file mode 100644 index 00000000..2a404011 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsDecimal.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isDecimalValidator from 'validator/lib/isDecimal'; +export var IS_DECIMAL = 'isDecimal'; +/** + * Checks if the string is a valid decimal. + * If given value is not a string, then it returns false. + */ +export function isDecimal(value, options) { + return typeof value === 'string' && isDecimalValidator(value, options); +} +/** + * Checks if the string contains only letters and numbers. + * If given value is not a string, then it returns false. + */ +export function IsDecimal(options, validationOptions) { + return ValidateBy({ + name: IS_DECIMAL, + constraints: [options], + validator: { + validate: function (value, args) { return isDecimal(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property is not a valid decimal number.'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsDecimal.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsDecimal.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsDecimal.js.map new file mode 100644 index 00000000..352e9537 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsDecimal.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsDecimal.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsDecimal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAGzD,MAAM,CAAC,IAAM,UAAU,GAAG,WAAW,CAAC;AAEtC;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc,EAAE,OAAsC;IAC9E,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CACvB,OAAsC,EACtC,iBAAqC;IAErC,OAAO,UAAU,CACf;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAArC,CAAqC;YACzE,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,0CAA0C,EAAvD,CAAuD,EACrE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isDecimalValidator from 'validator/lib/isDecimal';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.IsDecimalOptions): boolean {\n return typeof value === 'string' && isDecimalValidator(value, options);\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 IsDecimal(\n options?: ValidatorJS.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 + '$property is not a valid decimal number.',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsEAN.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsEAN.js new file mode 100644 index 00000000..c6122456 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsEAN.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isEANValidator from 'validator/lib/isEAN'; +export var IS_EAN = 'isEAN'; +/** + * Check if the string is an EAN (European Article Number). + * If given value is not a string, then it returns false. + */ +export function isEAN(value) { + return typeof value === 'string' && isEANValidator(value); +} +/** + * Check if the string is an EAN (European Article Number). + * If given value is not a string, then it returns false. + */ +export function IsEAN(validationOptions) { + return ValidateBy({ + name: IS_EAN, + validator: { + validate: function (value, args) { return isEAN(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an EAN (European Article Number)'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsEAN.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsEAN.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsEAN.js.map new file mode 100644 index 00000000..72d3aad5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsEAN.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsEAN.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsEAN.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAEjD,MAAM,CAAC,IAAM,MAAM,GAAG,OAAO,CAAC;AAE9B;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,iBAAqC;IACzD,OAAO,UAAU,CACf;QACE,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,KAAK,CAAC,KAAK,CAAC,EAAZ,CAAY;YAChD,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,oDAAoD,EAAjE,CAAiE,EAC/E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be an EAN (European Article Number)',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsEmail.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsEmail.js new file mode 100644 index 00000000..cdc4813a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsEmail.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isEmailValidator from 'validator/lib/isEmail'; +export var IS_EMAIL = 'isEmail'; +/** + * Checks if the string is an email. + * If given value is not a string, then it returns false. + */ +export function isEmail(value, options) { + return typeof value === 'string' && isEmailValidator(value, options); +} +/** + * Checks if the string is an email. + * If given value is not a string, then it returns false. + */ +export function IsEmail(options, validationOptions) { + return ValidateBy({ + name: IS_EMAIL, + constraints: [options], + validator: { + validate: function (value, args) { return isEmail(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an email'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsEmail.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsEmail.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsEmail.js.map new file mode 100644 index 00000000..3aeab6c3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsEmail.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsEmail.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsEmail.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AAGrD,MAAM,CAAC,IAAM,QAAQ,GAAG,SAAS,CAAC;AAElC;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,KAAc,EAAE,OAAoC;IAC1E,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACvE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CACrB,OAAoC,EACpC,iBAAqC;IAErC,OAAO,UAAU,CACf;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAnC,CAAmC;YACvE,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,4BAA4B,EAAzC,CAAyC,EAAE,iBAAiB,CAAC;SACzG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isEmailValidator from 'validator/lib/isEmail';\nimport ValidatorJS from 'validator';\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 isEmail(value: unknown, options?: ValidatorJS.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?: ValidatorJS.IsEmailOptions,\n validationOptions?: ValidationOptions\n): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_EMAIL,\n constraints: [options],\n validator: {\n validate: (value, args): boolean => isEmail(value, args.constraints[0]),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be an email', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsEthereumAddress.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsEthereumAddress.js new file mode 100644 index 00000000..57a2dd7b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsEthereumAddress.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isEthereumAddressValidator from 'validator/lib/isEthereumAddress'; +export var IS_ETHEREUM_ADDRESS = 'isEthereumAddress'; +/** + * Check if the string is an Ethereum address using basic regex. Does not validate address checksums. + * If given value is not a string, then it returns false. + */ +export function isEthereumAddress(value) { + return typeof value === 'string' && isEthereumAddressValidator(value); +} +/** + * Check if the string is an Ethereum address using basic regex. Does not validate address checksums. + * If given value is not a string, then it returns false. + */ +export function IsEthereumAddress(validationOptions) { + return ValidateBy({ + name: IS_ETHEREUM_ADDRESS, + validator: { + validate: function (value, args) { return isEthereumAddress(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an Ethereum address'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsEthereumAddress.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsEthereumAddress.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsEthereumAddress.js.map new file mode 100644 index 00000000..a38ec538 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsEthereumAddress.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsEthereumAddress.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsEthereumAddress.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,0BAA0B,MAAM,iCAAiC,CAAC;AAEzE,MAAM,CAAC,IAAM,mBAAmB,GAAG,mBAAmB,CAAC;AAEvD;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,0BAA0B,CAAC,KAAK,CAAC,CAAC;AACxE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,iBAAqC;IACrE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,mBAAmB;QACzB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,iBAAiB,CAAC,KAAK,CAAC,EAAxB,CAAwB;YAC5D,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,uCAAuC,EAApD,CAAoD,EAClE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be an Ethereum address',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsFQDN.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsFQDN.js new file mode 100644 index 00000000..0a21a8e9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsFQDN.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isFqdnValidator from 'validator/lib/isFQDN'; +export var IS_FQDN = 'isFqdn'; +/** + * Checks if the string is a fully qualified domain name (e.g. domain.com). + * If given value is not a string, then it returns false. + */ +export function isFQDN(value, options) { + return typeof value === 'string' && isFqdnValidator(value, options); +} +/** + * Checks if the string is a fully qualified domain name (e.g. domain.com). + * If given value is not a string, then it returns false. + */ +export function IsFQDN(options, validationOptions) { + return ValidateBy({ + name: IS_FQDN, + constraints: [options], + validator: { + validate: function (value, args) { return isFQDN(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid domain name'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsFQDN.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsFQDN.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsFQDN.js.map new file mode 100644 index 00000000..8736b8ab --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsFQDN.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsFQDN.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsFQDN.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,eAAe,MAAM,sBAAsB,CAAC;AAGnD,MAAM,CAAC,IAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc,EAAE,OAAmC;IACxE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,OAAmC,EAAE,iBAAqC;IAC/F,OAAO,UAAU,CACf;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAlC,CAAkC;YACtE,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,uCAAuC,EAApD,CAAoD,EAClE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isFqdnValidator from 'validator/lib/isFQDN';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.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?: ValidatorJS.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 + '$property must be a valid domain name',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsFirebasePushId.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsFirebasePushId.js new file mode 100644 index 00000000..db4cc2e0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsFirebasePushId.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var IS_FIREBASE_PUSH_ID = 'IsFirebasePushId'; +/** + * Checks if the string is a Firebase Push Id + * If given value is not a Firebase Push Id, it returns false + */ +export function isFirebasePushId(value) { + var webSafeRegex = /^[a-zA-Z0-9_-]*$/; + return typeof value === 'string' && value.length === 20 && webSafeRegex.test(value); +} +/** + * Checks if the string is a Firebase Push Id + * If given value is not a Firebase Push Id, it returns false + */ +export function IsFirebasePushId(validationOptions) { + return ValidateBy({ + name: IS_FIREBASE_PUSH_ID, + validator: { + validate: function (value, args) { return isFirebasePushId(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a Firebase Push Id'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsFirebasePushId.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsFirebasePushId.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsFirebasePushId.js.map new file mode 100644 index 00000000..536a2149 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsFirebasePushId.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsFirebasePushId.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsFirebasePushId.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,mBAAmB,GAAG,kBAAkB,CAAC;AAEtD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAM,YAAY,GAAG,kBAAkB,CAAC;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,iBAAqC;IACpE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,mBAAmB;QACzB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,gBAAgB,CAAC,KAAK,CAAC,EAAvB,CAAuB;YAC3D,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,sCAAsC,EAAnD,CAAmD,EACjE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a Firebase Push Id',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsFullWidth.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsFullWidth.js new file mode 100644 index 00000000..3728aae4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsFullWidth.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isFullWidthValidator from 'validator/lib/isFullWidth'; +export var IS_FULL_WIDTH = 'isFullWidth'; +/** + * Checks if the string contains any full-width chars. + * If given value is not a string, then it returns false. + */ +export function isFullWidth(value) { + return typeof value === 'string' && isFullWidthValidator(value); +} +/** + * Checks if the string contains any full-width chars. + * If given value is not a string, then it returns false. + */ +export function IsFullWidth(validationOptions) { + return ValidateBy({ + name: IS_FULL_WIDTH, + validator: { + validate: function (value, args) { return isFullWidth(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain a full-width characters'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsFullWidth.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsFullWidth.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsFullWidth.js.map new file mode 100644 index 00000000..7323983d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsFullWidth.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsFullWidth.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsFullWidth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,oBAAoB,MAAM,2BAA2B,CAAC;AAE7D,MAAM,CAAC,IAAM,aAAa,GAAG,aAAa,CAAC;AAE3C;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,iBAAqC;IAC/D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,aAAa;QACnB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,WAAW,CAAC,KAAK,CAAC,EAAlB,CAAkB;YACtD,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,gDAAgD,EAA7D,CAA6D,EAC3E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must contain a full-width characters',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHSL.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHSL.js new file mode 100644 index 00000000..0f86b813 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHSL.js @@ -0,0 +1,26 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isHSLValidator from 'validator/lib/isHSL'; +export var IS_HSL = 'isHSL'; +/** + * Check if the string is an HSL (hue, saturation, lightness, optional alpha) color based on CSS Colors Level 4 specification. + * Comma-separated format supported. Space-separated format supported with the exception of a few edge cases (ex: hsl(200grad+.1%62%/1)). + * If given value is not a string, then it returns false. + */ +export function isHSL(value) { + return typeof value === 'string' && isHSLValidator(value); +} +/** + * Check if the string is an HSL (hue, saturation, lightness, optional alpha) color based on CSS Colors Level 4 specification. + * Comma-separated format supported. Space-separated format supported with the exception of a few edge cases (ex: hsl(200grad+.1%62%/1)). + * If given value is not a string, then it returns false. + */ +export function IsHSL(validationOptions) { + return ValidateBy({ + name: IS_HSL, + validator: { + validate: function (value, args) { return isHSL(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a HSL color'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsHSL.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHSL.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHSL.js.map new file mode 100644 index 00000000..f9df9fea --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHSL.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsHSL.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsHSL.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAEjD,MAAM,CAAC,IAAM,MAAM,GAAG,OAAO,CAAC;AAE9B;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,iBAAqC;IACzD,OAAO,UAAU,CACf;QACE,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,KAAK,CAAC,KAAK,CAAC,EAAZ,CAAY;YAChD,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,+BAA+B,EAA5C,CAA4C,EAAE,iBAAiB,CAAC;SAC5G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a HSL color', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHalfWidth.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHalfWidth.js new file mode 100644 index 00000000..095ed723 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHalfWidth.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isHalfWidthValidator from 'validator/lib/isHalfWidth'; +export var IS_HALF_WIDTH = 'isHalfWidth'; +/** + * Checks if the string contains any half-width chars. + * If given value is not a string, then it returns false. + */ +export function isHalfWidth(value) { + return typeof value === 'string' && isHalfWidthValidator(value); +} +/** + * Checks if the string contains any full-width chars. + * If given value is not a string, then it returns false. + */ +export function IsHalfWidth(validationOptions) { + return ValidateBy({ + name: IS_HALF_WIDTH, + validator: { + validate: function (value, args) { return isHalfWidth(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain a half-width characters'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsHalfWidth.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHalfWidth.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHalfWidth.js.map new file mode 100644 index 00000000..e91393b5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHalfWidth.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsHalfWidth.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsHalfWidth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,oBAAoB,MAAM,2BAA2B,CAAC;AAE7D,MAAM,CAAC,IAAM,aAAa,GAAG,aAAa,CAAC;AAE3C;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,iBAAqC;IAC/D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,aAAa;QACnB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,WAAW,CAAC,KAAK,CAAC,EAAlB,CAAkB;YACtD,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,gDAAgD,EAA7D,CAA6D,EAC3E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 full-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 + '$property must contain a half-width characters',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHash.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHash.js new file mode 100644 index 00000000..804b13c4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHash.js @@ -0,0 +1,27 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isHashValidator from 'validator/lib/isHash'; +export var IS_HASH = 'isHash'; +/** + * Check if the string is a hash of type algorithm. + * Algorithm is one of ['md4', 'md5', 'sha1', 'sha256', 'sha384', 'sha512', 'ripemd128', 'ripemd160', 'tiger128', + * 'tiger160', 'tiger192', 'crc32', 'crc32b'] + */ +export function isHash(value, algorithm) { + return typeof value === 'string' && isHashValidator(value, algorithm); +} +/** + * Check if the string is a hash of type algorithm. + * Algorithm is one of ['md4', 'md5', 'sha1', 'sha256', 'sha384', 'sha512', 'ripemd128', 'ripemd160', 'tiger128', + * 'tiger160', 'tiger192', 'crc32', 'crc32b'] + */ +export function IsHash(algorithm, validationOptions) { + return ValidateBy({ + name: IS_HASH, + constraints: [algorithm], + validator: { + validate: function (value, args) { return isHash(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a hash of type $constraint1'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsHash.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHash.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHash.js.map new file mode 100644 index 00000000..fd9b90e2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHash.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsHash.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsHash.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,eAAe,MAAM,sBAAsB,CAAC;AAGnD,MAAM,CAAC,IAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc,EAAE,SAAoC;IACzE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACxE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,SAAiB,EAAE,iBAAqC;IAC7E,OAAO,UAAU,CACf;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAlC,CAAkC;YACtE,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,+CAA+C,EAA5D,CAA4D,EAC1E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isHashValidator from 'validator/lib/isHash';\nimport ValidatorJS from 'validator';\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: ValidatorJS.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 + '$property must be a hash of type $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHexColor.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHexColor.js new file mode 100644 index 00000000..6e396cb3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHexColor.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isHexColorValidator from 'validator/lib/isHexColor'; +export var IS_HEX_COLOR = 'isHexColor'; +/** + * Checks if the string is a hexadecimal color. + * If given value is not a string, then it returns false. + */ +export function isHexColor(value) { + return typeof value === 'string' && isHexColorValidator(value); +} +/** + * Checks if the string is a hexadecimal color. + * If given value is not a string, then it returns false. + */ +export function IsHexColor(validationOptions) { + return ValidateBy({ + name: IS_HEX_COLOR, + validator: { + validate: function (value, args) { return isHexColor(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a hexadecimal color'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsHexColor.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHexColor.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHexColor.js.map new file mode 100644 index 00000000..2d8c5566 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHexColor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsHexColor.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsHexColor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAE3D,MAAM,CAAC,IAAM,YAAY,GAAG,YAAY,CAAC;AAEzC;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,iBAAqC;IAC9D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,UAAU,CAAC,KAAK,CAAC,EAAjB,CAAiB;YACrD,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,uCAAuC,EAApD,CAAoD,EAClE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a hexadecimal color',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHexadecimal.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHexadecimal.js new file mode 100644 index 00000000..5159dd1f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHexadecimal.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isHexadecimalValidator from 'validator/lib/isHexadecimal'; +export var IS_HEXADECIMAL = 'isHexadecimal'; +/** + * Checks if the string is a hexadecimal number. + * If given value is not a string, then it returns false. + */ +export function isHexadecimal(value) { + return typeof value === 'string' && isHexadecimalValidator(value); +} +/** + * Checks if the string is a hexadecimal number. + * If given value is not a string, then it returns false. + */ +export function IsHexadecimal(validationOptions) { + return ValidateBy({ + name: IS_HEXADECIMAL, + validator: { + validate: function (value, args) { return isHexadecimal(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a hexadecimal number'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsHexadecimal.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHexadecimal.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHexadecimal.js.map new file mode 100644 index 00000000..0f27f0bd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsHexadecimal.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsHexadecimal.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsHexadecimal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,sBAAsB,MAAM,6BAA6B,CAAC;AAEjE,MAAM,CAAC,IAAM,cAAc,GAAG,eAAe,CAAC;AAE9C;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACpE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,iBAAqC;IACjE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,cAAc;QACpB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,aAAa,CAAC,KAAK,CAAC,EAApB,CAAoB;YACxD,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,wCAAwC,EAArD,CAAqD,EACnE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a hexadecimal number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsIBAN.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsIBAN.js new file mode 100644 index 00000000..1124e5b8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsIBAN.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isIBANValidator from 'validator/lib/isIBAN'; +export var IS_IBAN = 'isIBAN'; +/** + * Check if a string is a IBAN (International Bank Account Number). + * If given value is not a string, then it returns false. + */ +export function isIBAN(value) { + return typeof value === 'string' && isIBANValidator(value); +} +/** + * Check if a string is a IBAN (International Bank Account Number). + * If given value is not a string, then it returns false. + */ +export function IsIBAN(validationOptions) { + return ValidateBy({ + name: IS_IBAN, + validator: { + validate: function (value, args) { return isIBAN(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an IBAN'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsIBAN.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsIBAN.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsIBAN.js.map new file mode 100644 index 00000000..65595de9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsIBAN.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsIBAN.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsIBAN.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,eAAe,MAAM,sBAAsB,CAAC;AAEnD,MAAM,CAAC,IAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,iBAAqC;IAC1D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,OAAO;QACb,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,MAAM,CAAC,KAAK,CAAC,EAAb,CAAa;YACjD,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,2BAA2B,EAAxC,CAAwC,EAAE,iBAAiB,CAAC;SACxG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be an IBAN', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsIP.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsIP.js new file mode 100644 index 00000000..4febcc43 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsIP.js @@ -0,0 +1,27 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isIPValidator from 'validator/lib/isIP'; +export var IS_IP = 'isIp'; +/** + * Checks if the string is an IP (version 4 or 6). + * If given value is not a string, then it returns false. + */ +export function isIP(value, version) { + /* eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion */ + var versionStr = version ? "".concat(version) : undefined; + return typeof value === 'string' && isIPValidator(value, versionStr); +} +/** + * Checks if the string is an IP (version 4 or 6). + * If given value is not a string, then it returns false. + */ +export function IsIP(version, validationOptions) { + return ValidateBy({ + name: IS_IP, + constraints: [version], + validator: { + validate: function (value, args) { return isIP(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an ip address'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsIP.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsIP.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsIP.js.map new file mode 100644 index 00000000..5941e99b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsIP.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsIP.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsIP.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAI/C,MAAM,CAAC,IAAM,KAAK,GAAG,MAAM,CAAC;AAE5B;;;GAGG;AACH,MAAM,UAAU,IAAI,CAAC,KAAc,EAAE,OAAqB;IACxD,+EAA+E;IAC/E,IAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAE,UAAG,OAAO,CAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AACvE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,IAAI,CAAC,OAAqB,EAAE,iBAAqC;IAC/E,OAAO,UAAU,CACf;QACE,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAhC,CAAgC;YACpE,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,iCAAiC,EAA9C,CAA8C,EAAE,iBAAiB,CAAC;SAC9G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be an ip address', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISBN.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISBN.js new file mode 100644 index 00000000..5821c558 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISBN.js @@ -0,0 +1,27 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isIsbnValidator from 'validator/lib/isISBN'; +export var IS_ISBN = 'isIsbn'; +/** + * Checks if the string is an ISBN (version 10 or 13). + * If given value is not a string, then it returns false. + */ +export function isISBN(value, version) { + /* eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion */ + var versionStr = version ? "".concat(version) : undefined; + return typeof value === 'string' && isIsbnValidator(value, versionStr); +} +/** + * Checks if the string is an ISBN (version 10 or 13). + * If given value is not a string, then it returns false. + */ +export function IsISBN(version, validationOptions) { + return ValidateBy({ + name: IS_ISBN, + constraints: [version], + validator: { + validate: function (value, args) { return isISBN(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an ISBN'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsISBN.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISBN.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISBN.js.map new file mode 100644 index 00000000..965e98dd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISBN.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsISBN.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsISBN.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,eAAe,MAAM,sBAAsB,CAAC;AAInD,MAAM,CAAC,IAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc,EAAE,OAAuB;IAC5D,+EAA+E;IAC/E,IAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAE,UAAG,OAAO,CAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AACzE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,OAAuB,EAAE,iBAAqC;IACnF,OAAO,UAAU,CACf;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAlC,CAAkC;YACtE,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,2BAA2B,EAAxC,CAAwC,EAAE,iBAAiB,CAAC;SACxG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be an ISBN', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISIN.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISIN.js new file mode 100644 index 00000000..b011f414 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISIN.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isIsinValidator from 'validator/lib/isISIN'; +export var IS_ISIN = 'isIsin'; +/** + * Checks if the string is an ISIN (stock/security identifier). + * If given value is not a string, then it returns false. + */ +export function isISIN(value) { + return typeof value === 'string' && isIsinValidator(value); +} +/** + * Checks if the string is an ISIN (stock/security identifier). + * If given value is not a string, then it returns false. + */ +export function IsISIN(validationOptions) { + return ValidateBy({ + name: IS_ISIN, + validator: { + validate: function (value, args) { return isISIN(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an ISIN (stock/security identifier)'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsISIN.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISIN.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISIN.js.map new file mode 100644 index 00000000..e45d9e28 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISIN.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsISIN.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsISIN.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,eAAe,MAAM,sBAAsB,CAAC;AAEnD,MAAM,CAAC,IAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,iBAAqC;IAC1D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,OAAO;QACb,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,MAAM,CAAC,KAAK,CAAC,EAAb,CAAa;YACjD,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,uDAAuD,EAApE,CAAoE,EAClF,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be an ISIN (stock/security identifier)',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISO31661Alpha2.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISO31661Alpha2.js new file mode 100644 index 00000000..7c5d5b98 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISO31661Alpha2.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isISO31661Alpha2Validator from 'validator/lib/isISO31661Alpha2'; +export var IS_ISO31661_ALPHA_2 = 'isISO31661Alpha2'; +/** + * 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. + */ +export function isISO31661Alpha2(value) { + return typeof value === 'string' && isISO31661Alpha2Validator(value); +} +/** + * 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. + */ +export function IsISO31661Alpha2(validationOptions) { + return ValidateBy({ + name: IS_ISO31661_ALPHA_2, + validator: { + validate: function (value, args) { return isISO31661Alpha2(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid ISO31661 Alpha2 code'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsISO31661Alpha2.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISO31661Alpha2.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISO31661Alpha2.js.map new file mode 100644 index 00000000..be499f6e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISO31661Alpha2.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsISO31661Alpha2.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsISO31661Alpha2.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,yBAAyB,MAAM,gCAAgC,CAAC;AAEvE,MAAM,CAAC,IAAM,mBAAmB,GAAG,kBAAkB,CAAC;AAEtD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,yBAAyB,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,iBAAqC;IACpE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,mBAAmB;QACzB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,gBAAgB,CAAC,KAAK,CAAC,EAAvB,CAAuB;YAC3D,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,gDAAgD,EAA7D,CAA6D,EAC3E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a valid ISO31661 Alpha2 code',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISO31661Alpha3.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISO31661Alpha3.js new file mode 100644 index 00000000..55c7be45 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISO31661Alpha3.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isISO31661Alpha3Validator from 'validator/lib/isISO31661Alpha3'; +export var IS_ISO31661_ALPHA_3 = 'isISO31661Alpha3'; +/** + * 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. + */ +export function isISO31661Alpha3(value) { + return typeof value === 'string' && isISO31661Alpha3Validator(value); +} +/** + * 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. + */ +export function IsISO31661Alpha3(validationOptions) { + return ValidateBy({ + name: IS_ISO31661_ALPHA_3, + validator: { + validate: function (value, args) { return isISO31661Alpha3(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid ISO31661 Alpha3 code'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsISO31661Alpha3.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISO31661Alpha3.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISO31661Alpha3.js.map new file mode 100644 index 00000000..4647d7d9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISO31661Alpha3.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsISO31661Alpha3.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsISO31661Alpha3.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,yBAAyB,MAAM,gCAAgC,CAAC;AAEvE,MAAM,CAAC,IAAM,mBAAmB,GAAG,kBAAkB,CAAC;AAEtD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,yBAAyB,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,iBAAqC;IACpE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,mBAAmB;QACzB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,gBAAgB,CAAC,KAAK,CAAC,EAAvB,CAAuB;YAC3D,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,gDAAgD,EAA7D,CAA6D,EAC3E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a valid ISO31661 Alpha3 code',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISO8601.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISO8601.js new file mode 100644 index 00000000..c42967ab --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISO8601.js @@ -0,0 +1,27 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isIso8601Validator from 'validator/lib/isISO8601'; +export var IS_ISO8601 = 'isIso8601'; +/** + * Checks if the string is a valid ISO 8601 date. + * If given value is not a string, then it returns false. + * Use the option strict = true for additional checks for a valid date, e.g. invalidates dates like 2019-02-29. + */ +export function isISO8601(value, options) { + return typeof value === 'string' && isIso8601Validator(value, options); +} +/** + * Checks if the string is a valid ISO 8601 date. + * If given value is not a string, then it returns false. + * Use the option strict = true for additional checks for a valid date, e.g. invalidates dates like 2019-02-29. + */ +export function IsISO8601(options, validationOptions) { + return ValidateBy({ + name: IS_ISO8601, + constraints: [options], + validator: { + validate: function (value, args) { return isISO8601(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid ISO 8601 date string'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsISO8601.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISO8601.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISO8601.js.map new file mode 100644 index 00000000..8f436e07 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISO8601.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsISO8601.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsISO8601.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAGzD,MAAM,CAAC,IAAM,UAAU,GAAG,WAAW,CAAC;AAEtC;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc,EAAE,OAAsC;IAC9E,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CACvB,OAAsC,EACtC,iBAAqC;IAErC,OAAO,UAAU,CACf;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAArC,CAAqC;YACzE,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,gDAAgD,EAA7D,CAA6D,EAC3E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isIso8601Validator from 'validator/lib/isISO8601';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.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?: ValidatorJS.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 + '$property must be a valid ISO 8601 date string',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISRC.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISRC.js new file mode 100644 index 00000000..ffe2c8c7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISRC.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isISRCValidator from 'validator/lib/isISRC'; +export var IS_ISRC = 'isISRC'; +/** + * Check if the string is a ISRC. + * If given value is not a string, then it returns false. + */ +export function isISRC(value) { + return typeof value === 'string' && isISRCValidator(value); +} +/** + * Check if the string is a ISRC. + * If given value is not a string, then it returns false. + */ +export function IsISRC(validationOptions) { + return ValidateBy({ + name: IS_ISRC, + validator: { + validate: function (value, args) { return isISRC(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an ISRC'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsISRC.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISRC.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISRC.js.map new file mode 100644 index 00000000..39a5b387 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISRC.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsISRC.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsISRC.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,eAAe,MAAM,sBAAsB,CAAC;AAEnD,MAAM,CAAC,IAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,iBAAqC;IAC1D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,OAAO;QACb,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,MAAM,CAAC,KAAK,CAAC,EAAb,CAAa;YACjD,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,2BAA2B,EAAxC,CAAwC,EAAE,iBAAiB,CAAC;SACxG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be an ISRC', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISSN.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISSN.js new file mode 100644 index 00000000..82e4c683 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISSN.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isISSNValidator from 'validator/lib/isISSN'; +export var IS_ISSN = 'isISSN'; +/** + * Checks if the string is a ISSN. + * If given value is not a string, then it returns false. + */ +export function isISSN(value, options) { + return typeof value === 'string' && isISSNValidator(value, options); +} +/** + * Checks if the string is a ISSN. + * If given value is not a string, then it returns false. + */ +export function IsISSN(options, validationOptions) { + return ValidateBy({ + name: IS_ISSN, + constraints: [options], + validator: { + validate: function (value, args) { return isISSN(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a ISSN'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsISSN.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISSN.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISSN.js.map new file mode 100644 index 00000000..fb315dbe --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsISSN.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsISSN.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsISSN.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,eAAe,MAAM,sBAAsB,CAAC;AAGnD,MAAM,CAAC,IAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc,EAAE,OAAmC;IACxE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,OAAmC,EAAE,iBAAqC;IAC/F,OAAO,UAAU,CACf;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAlC,CAAkC;YACtE,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,0BAA0B,EAAvC,CAAuC,EAAE,iBAAiB,CAAC;SACvG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isISSNValidator from 'validator/lib/isISSN';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.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?: ValidatorJS.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 + '$property must be a ISSN', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsIdentityCard.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsIdentityCard.js new file mode 100644 index 00000000..e4cb3db4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsIdentityCard.js @@ -0,0 +1,29 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isIdentityCardValidator from 'validator/lib/isIdentityCard'; +export var IS_IDENTITY_CARD = 'isIdentityCard'; +/** + * Check if the string is a valid identity card code. + * 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. + * Defaults to 'any'. + * If given value is not a string, then it returns false. + */ +export function isIdentityCard(value, locale) { + return typeof value === 'string' && isIdentityCardValidator(value, locale); +} +/** + * Check if the string is a valid identity card code. + * 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. + * Defaults to 'any'. + * If given value is not a string, then it returns false. + */ +export function IsIdentityCard(locale, validationOptions) { + return ValidateBy({ + name: IS_IDENTITY_CARD, + constraints: [locale], + validator: { + validate: function (value, args) { return isIdentityCard(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a identity card number'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsIdentityCard.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsIdentityCard.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsIdentityCard.js.map new file mode 100644 index 00000000..35ae7908 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsIdentityCard.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsIdentityCard.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsIdentityCard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,uBAAuB,MAAM,8BAA8B,CAAC;AAGnE,MAAM,CAAC,IAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc,EAAE,MAAsC;IACnF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAuC,EACvC,iBAAqC;IAErC,OAAO,UAAU,CACf;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAA1C,CAA0C;YAC9E,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,0CAA0C,EAAvD,CAAuD,EACrE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isIdentityCardValidator from 'validator/lib/isIdentityCard';\nimport ValidatorJS from 'validator';\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: ValidatorJS.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?: ValidatorJS.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 + '$property must be a identity card number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsJSON.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsJSON.js new file mode 100644 index 00000000..01dafe46 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsJSON.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isJSONValidator from 'validator/lib/isJSON'; +export var IS_JSON = 'isJson'; +/** + * Checks if the string is valid JSON (note: uses JSON.parse). + * If given value is not a string, then it returns false. + */ +export function isJSON(value) { + return typeof value === 'string' && isJSONValidator(value); +} +/** + * Checks if the string is valid JSON (note: uses JSON.parse). + * If given value is not a string, then it returns false. + */ +export function IsJSON(validationOptions) { + return ValidateBy({ + name: IS_JSON, + validator: { + validate: function (value, args) { return isJSON(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a json string'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsJSON.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsJSON.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsJSON.js.map new file mode 100644 index 00000000..377fa3e9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsJSON.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsJSON.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsJSON.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,eAAe,MAAM,sBAAsB,CAAC;AAEnD,MAAM,CAAC,IAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,iBAAqC;IAC1D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,OAAO;QACb,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,MAAM,CAAC,KAAK,CAAC,EAAb,CAAa;YACjD,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,iCAAiC,EAA9C,CAA8C,EAAE,iBAAiB,CAAC;SAC9G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a json string', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsJWT.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsJWT.js new file mode 100644 index 00000000..19b30393 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsJWT.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isJwtValidator from 'validator/lib/isJWT'; +export var IS_JWT = 'isJwt'; +/** + * Checks if the string is valid JWT token. + * If given value is not a string, then it returns false. + */ +export function isJWT(value) { + return typeof value === 'string' && isJwtValidator(value); +} +/** + * Checks if the string is valid JWT token. + * If given value is not a string, then it returns false. + */ +export function IsJWT(validationOptions) { + return ValidateBy({ + name: IS_JWT, + validator: { + validate: function (value, args) { return isJWT(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a jwt string'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsJWT.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsJWT.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsJWT.js.map new file mode 100644 index 00000000..d5ed6bdd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsJWT.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsJWT.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsJWT.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAEjD,MAAM,CAAC,IAAM,MAAM,GAAG,OAAO,CAAC;AAE9B;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,iBAAqC;IACzD,OAAO,UAAU,CACf;QACE,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,KAAK,CAAC,KAAK,CAAC,EAAZ,CAAY;YAChD,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,gCAAgC,EAA7C,CAA6C,EAAE,iBAAiB,CAAC;SAC7G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a jwt string', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsLocale.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsLocale.js new file mode 100644 index 00000000..a2b3ab50 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsLocale.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isLocaleValidator from 'validator/lib/isLocale'; +export var IS_LOCALE = 'isLocale'; +/** + * Check if the string is a locale. + * If given value is not a string, then it returns false. + */ +export function isLocale(value) { + return typeof value === 'string' && isLocaleValidator(value); +} +/** + * Check if the string is a locale. + * If given value is not a string, then it returns false. + */ +export function IsLocale(validationOptions) { + return ValidateBy({ + name: IS_LOCALE, + validator: { + validate: function (value, args) { return isLocale(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be locale'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsLocale.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsLocale.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsLocale.js.map new file mode 100644 index 00000000..6c6c3232 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsLocale.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsLocale.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsLocale.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AAEvD,MAAM,CAAC,IAAM,SAAS,GAAG,UAAU,CAAC;AAEpC;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,iBAAqC;IAC5D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,SAAS;QACf,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,QAAQ,CAAC,KAAK,CAAC,EAAf,CAAe;YACnD,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,0BAA0B,EAAvC,CAAuC,EAAE,iBAAiB,CAAC;SACvG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be locale', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsLowercase.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsLowercase.js new file mode 100644 index 00000000..1fd5c5c0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsLowercase.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isLowercaseValidator from 'validator/lib/isLowercase'; +export var IS_LOWERCASE = 'isLowercase'; +/** + * Checks if the string is lowercase. + * If given value is not a string, then it returns false. + */ +export function isLowercase(value) { + return typeof value === 'string' && isLowercaseValidator(value); +} +/** + * Checks if the string is lowercase. + * If given value is not a string, then it returns false. + */ +export function IsLowercase(validationOptions) { + return ValidateBy({ + name: IS_LOWERCASE, + validator: { + validate: function (value, args) { return isLowercase(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a lowercase string'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsLowercase.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsLowercase.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsLowercase.js.map new file mode 100644 index 00000000..ccd838ec --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsLowercase.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsLowercase.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsLowercase.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,oBAAoB,MAAM,2BAA2B,CAAC;AAE7D,MAAM,CAAC,IAAM,YAAY,GAAG,aAAa,CAAC;AAE1C;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,iBAAqC;IAC/D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,WAAW,CAAC,KAAK,CAAC,EAAlB,CAAkB;YACtD,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,sCAAsC,EAAnD,CAAmD,EACjE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a lowercase string',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMacAddress.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMacAddress.js new file mode 100644 index 00000000..c6b7d807 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMacAddress.js @@ -0,0 +1,26 @@ +import { isValidationOptions } from '../ValidationOptions'; +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isMacAddressValidator from 'validator/lib/isMACAddress'; +export var IS_MAC_ADDRESS = 'isMacAddress'; +/** + * Check if the string is a MAC address. + * If given value is not a string, then it returns false. + */ +export function isMACAddress(value, options) { + return typeof value === 'string' && isMacAddressValidator(value, options); +} +export function IsMACAddress(optionsOrValidationOptionsArg, validationOptionsArg) { + var options = !isValidationOptions(optionsOrValidationOptionsArg) ? optionsOrValidationOptionsArg : undefined; + var validationOptions = isValidationOptions(optionsOrValidationOptionsArg) + ? optionsOrValidationOptionsArg + : validationOptionsArg; + return ValidateBy({ + name: IS_MAC_ADDRESS, + constraints: [options], + validator: { + validate: function (value, args) { return isMACAddress(value, options); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a MAC Address'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsMacAddress.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMacAddress.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMacAddress.js.map new file mode 100644 index 00000000..b6aafc4b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMacAddress.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsMacAddress.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsMacAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,qBAAqB,MAAM,4BAA4B,CAAC;AAG/D,MAAM,CAAC,IAAM,cAAc,GAAG,cAAc,CAAC;AAE7C;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc,EAAE,OAAyC;IACpF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC5E,CAAC;AAWD,MAAM,UAAU,YAAY,CAC1B,6BAAmF,EACnF,oBAAwC;IAExC,IAAM,OAAO,GAAG,CAAC,mBAAmB,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,SAAS,CAAC;IAChH,IAAM,iBAAiB,GAAG,mBAAmB,CAAC,6BAA6B,CAAC;QAC1E,CAAC,CAAC,6BAA6B;QAC/B,CAAC,CAAC,oBAAoB,CAAC;IAEzB,OAAO,UAAU,CACf;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,EAA5B,CAA4B;YAChE,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,iCAAiC,EAA9C,CAA8C,EAAE,iBAAiB,CAAC;SAC9G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions, isValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isMacAddressValidator from 'validator/lib/isMACAddress';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.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?: ValidatorJS.IsMACAddressOptions,\n validationOptionsArg?: ValidationOptions\n): PropertyDecorator;\nexport function IsMACAddress(validationOptionsArg?: ValidationOptions): PropertyDecorator;\nexport function IsMACAddress(\n optionsOrValidationOptionsArg?: ValidatorJS.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 + '$property must be a MAC Address', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMagnetURI.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMagnetURI.js new file mode 100644 index 00000000..6e23df4e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMagnetURI.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isMagnetURIValidator from 'validator/lib/isMagnetURI'; +export var IS_MAGNET_URI = 'isMagnetURI'; +/** + * Check if the string is a magnet uri format. + * If given value is not a string, then it returns false. + */ +export function isMagnetURI(value) { + return typeof value === 'string' && isMagnetURIValidator(value); +} +/** + * Check if the string is a magnet uri format. + * If given value is not a string, then it returns false. + */ +export function IsMagnetURI(validationOptions) { + return ValidateBy({ + name: IS_MAGNET_URI, + validator: { + validate: function (value, args) { return isMagnetURI(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be magnet uri format'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsMagnetURI.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMagnetURI.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMagnetURI.js.map new file mode 100644 index 00000000..a406d0ab --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMagnetURI.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsMagnetURI.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsMagnetURI.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,oBAAoB,MAAM,2BAA2B,CAAC;AAE7D,MAAM,CAAC,IAAM,aAAa,GAAG,aAAa,CAAC;AAE3C;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,iBAAqC;IAC/D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,aAAa;QACnB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,WAAW,CAAC,KAAK,CAAC,EAAlB,CAAkB;YACtD,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,qCAAqC,EAAlD,CAAkD,EAChE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be magnet uri format',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMilitaryTime.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMilitaryTime.js new file mode 100644 index 00000000..fe2ec23e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMilitaryTime.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import matchesValidator from 'validator/lib/matches'; +export var IS_MILITARY_TIME = 'isMilitaryTime'; +/** + * Checks if the string represents a time without a given timezone in the format HH:MM (military) + * If the given value does not match the pattern HH:MM, then it returns false. + */ +export function isMilitaryTime(value) { + var militaryTimeRegex = /^([01]\d|2[0-3]):?([0-5]\d)$/; + return typeof value === 'string' && matchesValidator(value, militaryTimeRegex); +} +/** + * Checks if the string represents a time without a given timezone in the format HH:MM (military) + * If the given value does not match the pattern HH:MM, then it returns false. + */ +export function IsMilitaryTime(validationOptions) { + return ValidateBy({ + name: IS_MILITARY_TIME, + validator: { + validate: function (value, args) { return isMilitaryTime(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid representation of military time in the format HH:MM'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsMilitaryTime.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMilitaryTime.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMilitaryTime.js.map new file mode 100644 index 00000000..e1246095 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMilitaryTime.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsMilitaryTime.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsMilitaryTime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AAErD,MAAM,CAAC,IAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAEjD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAM,iBAAiB,GAAG,8BAA8B,CAAC;IACzD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;AACjF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,iBAAqC;IAClE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,gBAAgB;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,cAAc,CAAC,KAAK,CAAC,EAArB,CAAqB;YACzD,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,+EAA+E,EAA5F,CAA4F,EAC1G,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a valid representation of military time in the format HH:MM',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMimeType.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMimeType.js new file mode 100644 index 00000000..e2814f12 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMimeType.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isMimeTypeValidator from 'validator/lib/isMimeType'; +export var IS_MIME_TYPE = 'isMimeType'; +/** + * Check if the string matches to a valid MIME type format + * If given value is not a string, then it returns false. + */ +export function isMimeType(value) { + return typeof value === 'string' && isMimeTypeValidator(value); +} +/** + * Check if the string matches to a valid MIME type format + * If given value is not a string, then it returns false. + */ +export function IsMimeType(validationOptions) { + return ValidateBy({ + name: IS_MIME_TYPE, + validator: { + validate: function (value, args) { return isMimeType(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be MIME type format'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsMimeType.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMimeType.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMimeType.js.map new file mode 100644 index 00000000..e7a41dcb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMimeType.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsMimeType.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsMimeType.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAE3D,MAAM,CAAC,IAAM,YAAY,GAAG,YAAY,CAAC;AAEzC;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,iBAAqC;IAC9D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,UAAU,CAAC,KAAK,CAAC,EAAjB,CAAiB;YACrD,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,oCAAoC,EAAjD,CAAiD,EAC/D,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be MIME type format',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMobilePhone.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMobilePhone.js new file mode 100644 index 00000000..7c5fffa2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMobilePhone.js @@ -0,0 +1,41 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isMobilePhoneValidator from 'validator/lib/isMobilePhone'; +export var IS_MOBILE_PHONE = 'isMobilePhone'; +/** + * Checks if the string is a mobile phone number (locale is either an array of locales (e.g ['sk-SK', 'sr-RS']) + * 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', + * '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', + * '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', + * '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', + * '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', + * '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', + * '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', + * 'zh-HK', 'zh-MO', 'zh-TW'] + * If given value is not a string, then it returns false. + */ +export function isMobilePhone(value, locale, options) { + return typeof value === 'string' && isMobilePhoneValidator(value, locale, options); +} +/** + * Checks if the string is a mobile phone number (locale is either an array of locales (e.g ['sk-SK', 'sr-RS']) + * 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', + * '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', + * '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', + * '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', + * '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', + * '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', + * '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', + * 'zh-HK', 'zh-MO', 'zh-TW'] + * If given value is not a string, then it returns false. + */ +export function IsMobilePhone(locale, options, validationOptions) { + return ValidateBy({ + name: IS_MOBILE_PHONE, + constraints: [locale, options], + validator: { + validate: function (value, args) { return isMobilePhone(value, args.constraints[0], args.constraints[1]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a phone number'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsMobilePhone.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMobilePhone.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMobilePhone.js.map new file mode 100644 index 00000000..00c975e1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMobilePhone.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsMobilePhone.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsMobilePhone.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,sBAAsB,MAAM,6BAA6B,CAAC;AAGjE,MAAM,CAAC,IAAM,eAAe,GAAG,eAAe,CAAC;AAE/C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAc,EACd,MAAsC,EACtC,OAA0C;IAE1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACrF,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAC3B,MAAsC,EACtC,OAA0C,EAC1C,iBAAqC;IAErC,OAAO,UAAU,CACf;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;QAC9B,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAA9D,CAA8D;YAClG,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,kCAAkC,EAA/C,CAA+C,EAAE,iBAAiB,CAAC;SAC/G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isMobilePhoneValidator from 'validator/lib/isMobilePhone';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.MobilePhoneLocale,\n options?: ValidatorJS.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?: ValidatorJS.MobilePhoneLocale,\n options?: ValidatorJS.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 + '$property must be a phone number', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMongoId.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMongoId.js new file mode 100644 index 00000000..a42a0b03 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMongoId.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isMongoIdValidator from 'validator/lib/isMongoId'; +export var IS_MONGO_ID = 'isMongoId'; +/** + * Checks if the string is a valid hex-encoded representation of a MongoDB ObjectId. + * If given value is not a string, then it returns false. + */ +export function isMongoId(value) { + return typeof value === 'string' && isMongoIdValidator(value); +} +/** + * Checks if the string is a valid hex-encoded representation of a MongoDB ObjectId. + * If given value is not a string, then it returns false. + */ +export function IsMongoId(validationOptions) { + return ValidateBy({ + name: IS_MONGO_ID, + validator: { + validate: function (value, args) { return isMongoId(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a mongodb id'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsMongoId.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMongoId.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMongoId.js.map new file mode 100644 index 00000000..379d187c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMongoId.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsMongoId.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsMongoId.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAEzD,MAAM,CAAC,IAAM,WAAW,GAAG,WAAW,CAAC;AAEvC;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,iBAAqC;IAC7D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,SAAS,CAAC,KAAK,CAAC,EAAhB,CAAgB;YACpD,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,gCAAgC,EAA7C,CAA6C,EAAE,iBAAiB,CAAC;SAC7G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a mongodb id', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMultibyte.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMultibyte.js new file mode 100644 index 00000000..509d60cc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMultibyte.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isMultibyteValidator from 'validator/lib/isMultibyte'; +export var IS_MULTIBYTE = 'isMultibyte'; +/** + * Checks if the string contains one or more multibyte chars. + * If given value is not a string, then it returns false. + */ +export function isMultibyte(value) { + return typeof value === 'string' && isMultibyteValidator(value); +} +/** + * Checks if the string contains one or more multibyte chars. + * If given value is not a string, then it returns false. + */ +export function IsMultibyte(validationOptions) { + return ValidateBy({ + name: IS_MULTIBYTE, + validator: { + validate: function (value, args) { return isMultibyte(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain one or more multibyte chars'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsMultibyte.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMultibyte.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMultibyte.js.map new file mode 100644 index 00000000..ea9b39bc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsMultibyte.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsMultibyte.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsMultibyte.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,oBAAoB,MAAM,2BAA2B,CAAC;AAE7D,MAAM,CAAC,IAAM,YAAY,GAAG,aAAa,CAAC;AAE1C;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,iBAAqC;IAC/D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,WAAW,CAAC,KAAK,CAAC,EAAlB,CAAkB;YACtD,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,oDAAoD,EAAjE,CAAiE,EAC/E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must contain one or more multibyte chars',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsNumberString.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsNumberString.js new file mode 100644 index 00000000..12339107 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsNumberString.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isNumericValidator from 'validator/lib/isNumeric'; +export var IS_NUMBER_STRING = 'isNumberString'; +/** + * Checks if the string is numeric. + * If given value is not a string, then it returns false. + */ +export function isNumberString(value, options) { + return typeof value === 'string' && isNumericValidator(value, options); +} +/** + * Checks if the string is numeric. + * If given value is not a string, then it returns false. + */ +export function IsNumberString(options, validationOptions) { + return ValidateBy({ + name: IS_NUMBER_STRING, + constraints: [options], + validator: { + validate: function (value, args) { return isNumberString(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a number string'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsNumberString.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsNumberString.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsNumberString.js.map new file mode 100644 index 00000000..fb0a02f7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsNumberString.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsNumberString.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsNumberString.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAGzD,MAAM,CAAC,IAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAEjD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc,EAAE,OAAsC;IACnF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAsC,EACtC,iBAAqC;IAErC,OAAO,UAAU,CACf;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAA1C,CAA0C;YAC9E,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,mCAAmC,EAAhD,CAAgD,EAAE,iBAAiB,CAAC;SAChH;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isNumericValidator from 'validator/lib/isNumeric';\nimport ValidatorJS from 'validator';\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?: ValidatorJS.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?: ValidatorJS.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 + '$property must be a number string', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsOctal.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsOctal.js new file mode 100644 index 00000000..b85d99bc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsOctal.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isOctalValidator from 'validator/lib/isOctal'; +export var IS_OCTAL = 'isOctal'; +/** + * Check if the string is a valid octal number. + * If given value is not a string, then it returns false. + */ +export function isOctal(value) { + return typeof value === 'string' && isOctalValidator(value); +} +/** + * Check if the string is a valid octal number. + * If given value is not a string, then it returns false. + */ +export function IsOctal(validationOptions) { + return ValidateBy({ + name: IS_OCTAL, + validator: { + validate: function (value, args) { return isOctal(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be valid octal number'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsOctal.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsOctal.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsOctal.js.map new file mode 100644 index 00000000..8106103b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsOctal.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsOctal.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsOctal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AAErD,MAAM,CAAC,IAAM,QAAQ,GAAG,SAAS,CAAC;AAElC;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,iBAAqC;IAC3D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,OAAO,CAAC,KAAK,CAAC,EAAd,CAAc;YAClD,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,sCAAsC,EAAnD,CAAmD,EACjE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be valid octal number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPassportNumber.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPassportNumber.js new file mode 100644 index 00000000..d21d4340 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPassportNumber.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isPassportNumberValidator from 'validator/lib/isPassportNumber'; +export var IS_PASSPORT_NUMBER = 'isPassportNumber'; +/** + * Check if the string is a valid passport number relative to a specific country code. + * If given value is not a string, then it returns false. + */ +export function isPassportNumber(value, countryCode) { + return typeof value === 'string' && isPassportNumberValidator(value, countryCode); +} +/** + * Check if the string is a valid passport number relative to a specific country code. + * If given value is not a string, then it returns false. + */ +export function IsPassportNumber(countryCode, validationOptions) { + return ValidateBy({ + name: IS_PASSPORT_NUMBER, + constraints: [countryCode], + validator: { + validate: function (value, args) { return isPassportNumber(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be valid passport number'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsPassportNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPassportNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPassportNumber.js.map new file mode 100644 index 00000000..247d256b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPassportNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsPassportNumber.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsPassportNumber.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,yBAAyB,MAAM,gCAAgC,CAAC;AAEvE,MAAM,CAAC,IAAM,kBAAkB,GAAG,kBAAkB,CAAC;AAErD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc,EAAE,WAAmB;IAClE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,yBAAyB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AACpF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAmB,EAAE,iBAAqC;IACzF,OAAO,UAAU,CACf;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,CAAC,WAAW,CAAC;QAC1B,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAA5C,CAA4C;YAChF,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,yCAAyC,EAAtD,CAAsD,EACpE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be valid passport number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPhoneNumber.js new file mode 100644 index 00000000..6d0d9b15 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPhoneNumber.js @@ -0,0 +1,40 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import { parsePhoneNumberFromString } from 'libphonenumber-js'; +export var IS_PHONE_NUMBER = 'isPhoneNumber'; +/** + * Checks if the string is a valid phone number. To successfully validate any phone number the text must include + * the intl. calling code, if the calling code wont be provided then the region must be set. + * + * @param value the potential phone number string to test + * @param region 2 characters uppercase country code (e.g. DE, US, CH) for country specific validation. + * If text doesn't start with the international calling code (e.g. +41), then you must set this parameter. + */ +export function isPhoneNumber(value, region) { + try { + var phoneNum = parsePhoneNumberFromString(value, region); + var result = phoneNum === null || phoneNum === void 0 ? void 0 : phoneNum.isValid(); + return !!result; + } + catch (error) { + // logging? + return false; + } +} +/** + * Checks if the string is a valid phone number. To successfully validate any phone number the text must include + * the intl. calling code, if the calling code wont be provided then the region must be set. + * + * @param region 2 characters uppercase country code (e.g. DE, US, CH) for country specific validation. + * If text doesn't start with the international calling code (e.g. +41), then you must set this parameter. + */ +export function IsPhoneNumber(region, validationOptions) { + return ValidateBy({ + name: IS_PHONE_NUMBER, + constraints: [region], + validator: { + validate: function (value, args) { return isPhoneNumber(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid phone number'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsPhoneNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPhoneNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPhoneNumber.js.map new file mode 100644 index 00000000..2287289e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPhoneNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsPhoneNumber.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsPhoneNumber.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAe,MAAM,mBAAmB,CAAC;AAE5E,MAAM,CAAC,IAAM,eAAe,GAAG,eAAe,CAAC;AAE/C;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,MAAoB;IAC/D,IAAI;QACF,IAAM,QAAQ,GAAG,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3D,IAAM,MAAM,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,EAAE,CAAC;QACnC,OAAO,CAAC,CAAC,MAAM,CAAC;KACjB;IAAC,OAAO,KAAK,EAAE;QACd,WAAW;QACX,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,MAAoB,EAAE,iBAAqC;IACvF,OAAO,UAAU,CACf;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAzC,CAAyC;YAC7E,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,wCAAwC,EAArD,CAAqD,EACnE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport { parsePhoneNumberFromString, CountryCode } from 'libphonenumber-js';\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?: CountryCode): boolean {\n try {\n const phoneNum = parsePhoneNumberFromString(value, region);\n const result = phoneNum?.isValid();\n return !!result;\n } catch (error) {\n // logging?\n return false;\n }\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(region?: CountryCode, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_PHONE_NUMBER,\n constraints: [region],\n validator: {\n validate: (value, args): boolean => isPhoneNumber(value, args.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + '$property must be a valid phone number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPort.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPort.js new file mode 100644 index 00000000..fed37aab --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPort.js @@ -0,0 +1,22 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isPortValidator from 'validator/lib/isPort'; +export var IS_PORT = 'isPort'; +/** + * Check if the string is a valid port number. + */ +export function isPort(value) { + return typeof value === 'string' && isPortValidator(value); +} +/** + * Check if the string is a valid port number. + */ +export function IsPort(validationOptions) { + return ValidateBy({ + name: IS_PORT, + validator: { + validate: function (value, args) { return isPort(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a port'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsPort.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPort.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPort.js.map new file mode 100644 index 00000000..bd233d3e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPort.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsPort.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsPort.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,eAAe,MAAM,sBAAsB,CAAC;AAEnD,MAAM,CAAC,IAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,iBAAqC;IAC1D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,OAAO;QACb,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,MAAM,CAAC,KAAK,CAAC,EAAb,CAAa;YACjD,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,0BAA0B,EAAvC,CAAuC,EAAE,iBAAiB,CAAC;SACvG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a port', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPostalCode.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPostalCode.js new file mode 100644 index 00000000..d4656e39 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPostalCode.js @@ -0,0 +1,27 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isPostalCodeValidator from 'validator/lib/isPostalCode'; +export var IS_POSTAL_CODE = 'isPostalCode'; +/** + * Check if the string is a postal code, + * (locale is one of [ 'AD', 'AT', 'AU', 'BE', 'BG', 'BR', 'CA', 'CH', 'CZ', 'DE', 'DK', 'DZ', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'ID', 'IE' 'IL', 'IN', 'IR', 'IS', 'IT', 'JP', 'KE', 'LI', 'LT', 'LU', 'LV', 'MT', 'MX', 'NL', 'NO', 'NZ', 'PL', 'PR', 'PT', 'RO', 'RU', 'SA', 'SE', 'SI', 'TN', 'TW', 'UA', 'US', 'ZA', 'ZM' ] OR 'any'. If 'any' is used, function will check if any of the locals match. Locale list is validator.isPostalCodeLocales.). + * If given value is not a string, then it returns false. + */ +export function isPostalCode(value, locale) { + return typeof value === 'string' && isPostalCodeValidator(value, locale); +} +/** + * Check if the string is a postal code, + * (locale is one of [ 'AD', 'AT', 'AU', 'BE', 'BG', 'BR', 'CA', 'CH', 'CZ', 'DE', 'DK', 'DZ', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'ID', 'IE' 'IL', 'IN', 'IR', 'IS', 'IT', 'JP', 'KE', 'LI', 'LT', 'LU', 'LV', 'MT', 'MX', 'NL', 'NO', 'NZ', 'PL', 'PR', 'PT', 'RO', 'RU', 'SA', 'SE', 'SI', 'TN', 'TW', 'UA', 'US', 'ZA', 'ZM' ] OR 'any'. If 'any' is used, function will check if any of the locals match. Locale list is validator.isPostalCodeLocales.). + * If given value is not a string, then it returns false. + */ +export function IsPostalCode(locale, validationOptions) { + return ValidateBy({ + name: IS_POSTAL_CODE, + constraints: [locale], + validator: { + validate: function (value, args) { return isPostalCode(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a postal code'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsPostalCode.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPostalCode.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPostalCode.js.map new file mode 100644 index 00000000..9546aa75 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsPostalCode.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsPostalCode.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsPostalCode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,qBAAqB,MAAM,4BAA4B,CAAC;AAG/D,MAAM,CAAC,IAAM,cAAc,GAAG,cAAc,CAAC;AAE7C;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc,EAAE,MAA4C;IACvF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC3E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,MAA6C,EAC7C,iBAAqC;IAErC,OAAO,UAAU,CACf;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAxC,CAAwC;YAC5E,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,iCAAiC,EAA9C,CAA8C,EAAE,iBAAiB,CAAC;SAC9G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isPostalCodeValidator from 'validator/lib/isPostalCode';\nimport ValidatorJS from 'validator';\n\nexport const IS_POSTAL_CODE = 'isPostalCode';\n\n/**\n * Check if the string is a postal code,\n * (locale is one of [ 'AD', 'AT', 'AU', 'BE', 'BG', 'BR', 'CA', 'CH', 'CZ', 'DE', 'DK', 'DZ', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'ID', 'IE' 'IL', 'IN', 'IR', 'IS', 'IT', 'JP', 'KE', 'LI', 'LT', 'LU', 'LV', 'MT', 'MX', 'NL', 'NO', 'NZ', 'PL', 'PR', 'PT', 'RO', 'RU', 'SA', 'SE', 'SI', 'TN', 'TW', 'UA', 'US', 'ZA', 'ZM' ] OR 'any'. If 'any' is used, function will check if any of the locals match. Locale list is validator.isPostalCodeLocales.).\n * If given value is not a string, then it returns false.\n */\nexport function isPostalCode(value: unknown, locale: 'any' | ValidatorJS.PostalCodeLocale): boolean {\n return typeof value === 'string' && isPostalCodeValidator(value, locale);\n}\n\n/**\n * Check if the string is a postal code,\n * (locale is one of [ 'AD', 'AT', 'AU', 'BE', 'BG', 'BR', 'CA', 'CH', 'CZ', 'DE', 'DK', 'DZ', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'ID', 'IE' 'IL', 'IN', 'IR', 'IS', 'IT', 'JP', 'KE', 'LI', 'LT', 'LU', 'LV', 'MT', 'MX', 'NL', 'NO', 'NZ', 'PL', 'PR', 'PT', 'RO', 'RU', 'SA', 'SE', 'SI', 'TN', 'TW', 'UA', 'US', 'ZA', 'ZM' ] OR 'any'. If 'any' is used, function will check if any of the locals match. Locale list is validator.isPostalCodeLocales.).\n * If given value is not a string, then it returns false.\n */\nexport function IsPostalCode(\n locale?: 'any' | ValidatorJS.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 + '$property must be a postal code', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsRFC3339.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsRFC3339.js new file mode 100644 index 00000000..e21fe0a4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsRFC3339.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isRFC3339Validator from 'validator/lib/isRFC3339'; +export var IS_RFC_3339 = 'isRFC3339'; +/** + * Check if the string is a valid RFC 3339 date. + * If given value is not a string, then it returns false. + */ +export function isRFC3339(value) { + return typeof value === 'string' && isRFC3339Validator(value); +} +/** + * Check if the string is a valid RFC 3339 date. + * If given value is not a string, then it returns false. + */ +export function IsRFC3339(validationOptions) { + return ValidateBy({ + name: IS_RFC_3339, + validator: { + validate: function (value, args) { return isRFC3339(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be RFC 3339 date'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsRFC3339.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsRFC3339.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsRFC3339.js.map new file mode 100644 index 00000000..0fe0a459 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsRFC3339.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsRFC3339.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsRFC3339.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAEzD,MAAM,CAAC,IAAM,WAAW,GAAG,WAAW,CAAC;AAEvC;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,iBAAqC;IAC7D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,SAAS,CAAC,KAAK,CAAC,EAAhB,CAAgB;YACpD,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,iCAAiC,EAA9C,CAA8C,EAAE,iBAAiB,CAAC;SAC9G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be RFC 3339 date', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsRgbColor.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsRgbColor.js new file mode 100644 index 00000000..9bc3d60b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsRgbColor.js @@ -0,0 +1,27 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isRgbColorValidator from 'validator/lib/isRgbColor'; +export var IS_RGB_COLOR = 'isRgbColor'; +/** + * Check if the string is a rgb or rgba color. + * `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. + * If given value is not a string, then it returns false. + */ +export function isRgbColor(value, includePercentValues) { + return typeof value === 'string' && isRgbColorValidator(value, includePercentValues); +} +/** + * Check if the string is a rgb or rgba color. + * `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. + * If given value is not a string, then it returns false. + */ +export function IsRgbColor(includePercentValues, validationOptions) { + return ValidateBy({ + name: IS_RGB_COLOR, + constraints: [includePercentValues], + validator: { + validate: function (value, args) { return isRgbColor(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be RGB color'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsRgbColor.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsRgbColor.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsRgbColor.js.map new file mode 100644 index 00000000..e4849aba --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsRgbColor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsRgbColor.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsRgbColor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAE3D,MAAM,CAAC,IAAM,YAAY,GAAG,YAAY,CAAC;AAEzC;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc,EAAE,oBAA8B;IACvE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,mBAAmB,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;AACvF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,oBAA8B,EAAE,iBAAqC;IAC9F,OAAO,UAAU,CACf;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,CAAC,oBAAoB,CAAC;QACnC,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAtC,CAAsC;YAC1E,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,6BAA6B,EAA1C,CAA0C,EAAE,iBAAiB,CAAC;SAC1G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be RGB color', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsSemVer.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsSemVer.js new file mode 100644 index 00000000..982c5809 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsSemVer.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isSemVerValidator from 'validator/lib/isSemVer'; +export var IS_SEM_VER = 'isSemVer'; +/** + * Check if the string is a Semantic Versioning Specification (SemVer). + * If given value is not a string, then it returns false. + */ +export function isSemVer(value) { + return typeof value === 'string' && isSemVerValidator(value); +} +/** + * Check if the string is a Semantic Versioning Specification (SemVer). + * If given value is not a string, then it returns false. + */ +export function IsSemVer(validationOptions) { + return ValidateBy({ + name: IS_SEM_VER, + validator: { + validate: function (value, args) { return isSemVer(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a Semantic Versioning Specification'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsSemVer.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsSemVer.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsSemVer.js.map new file mode 100644 index 00000000..df8f993a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsSemVer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsSemVer.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsSemVer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AAEvD,MAAM,CAAC,IAAM,UAAU,GAAG,UAAU,CAAC;AAErC;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,iBAAqC;IAC5D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,QAAQ,CAAC,KAAK,CAAC,EAAf,CAAe;YACnD,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,uDAAuD,EAApE,CAAoE,EAClF,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a Semantic Versioning Specification',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsSurrogatePair.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsSurrogatePair.js new file mode 100644 index 00000000..7d6d7e47 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsSurrogatePair.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isSurrogatePairValidator from 'validator/lib/isSurrogatePair'; +export var IS_SURROGATE_PAIR = 'isSurrogatePair'; +/** + * Checks if the string contains any surrogate pairs chars. + * If given value is not a string, then it returns false. + */ +export function isSurrogatePair(value) { + return typeof value === 'string' && isSurrogatePairValidator(value); +} +/** + * Checks if the string contains any surrogate pairs chars. + * If given value is not a string, then it returns false. + */ +export function IsSurrogatePair(validationOptions) { + return ValidateBy({ + name: IS_SURROGATE_PAIR, + validator: { + validate: function (value, args) { return isSurrogatePair(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain any surrogate pairs chars'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsSurrogatePair.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsSurrogatePair.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsSurrogatePair.js.map new file mode 100644 index 00000000..795f8d54 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsSurrogatePair.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsSurrogatePair.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsSurrogatePair.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,wBAAwB,MAAM,+BAA+B,CAAC;AAErE,MAAM,CAAC,IAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAEnD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,iBAAqC;IACnE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,iBAAiB;QACvB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,eAAe,CAAC,KAAK,CAAC,EAAtB,CAAsB;YAC1D,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,kDAAkD,EAA/D,CAA+D,EAC7E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must contain any surrogate pairs chars',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsUUID.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsUUID.js new file mode 100644 index 00000000..50ea664b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsUUID.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isUuidValidator from 'validator/lib/isUUID'; +export var IS_UUID = 'isUuid'; +/** + * Checks if the string is a UUID (version 3, 4 or 5). + * If given value is not a string, then it returns false. + */ +export function isUUID(value, version) { + return typeof value === 'string' && isUuidValidator(value, version); +} +/** + * Checks if the string is a UUID (version 3, 4 or 5). + * If given value is not a string, then it returns false. + */ +export function IsUUID(version, validationOptions) { + return ValidateBy({ + name: IS_UUID, + constraints: [version], + validator: { + validate: function (value, args) { return isUUID(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a UUID'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsUUID.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsUUID.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsUUID.js.map new file mode 100644 index 00000000..e2cd1b55 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsUUID.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsUUID.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsUUID.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,eAAe,MAAM,sBAAsB,CAAC;AAInD,MAAM,CAAC,IAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc,EAAE,OAAqB;IAC1D,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,OAAqB,EAAE,iBAAqC;IACjF,OAAO,UAAU,CACf;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAlC,CAAkC;YACtE,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,0BAA0B,EAAvC,CAAuC,EAAE,iBAAiB,CAAC;SACvG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isUuidValidator from 'validator/lib/isUUID';\n\nexport type UUIDVersion = '3' | '4' | '5' | 'all' | 3 | 4 | 5;\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?: UUIDVersion): boolean {\n return 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(version?: UUIDVersion, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_UUID,\n constraints: [version],\n validator: {\n validate: (value, args): boolean => isUUID(value, args.constraints[0]),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a UUID', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsUppercase.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsUppercase.js new file mode 100644 index 00000000..7d5e652a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsUppercase.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isUppercaseValidator from 'validator/lib/isUppercase'; +export var IS_UPPERCASE = 'isUppercase'; +/** + * Checks if the string is uppercase. + * If given value is not a string, then it returns false. + */ +export function isUppercase(value) { + return typeof value === 'string' && isUppercaseValidator(value); +} +/** + * Checks if the string is uppercase. + * If given value is not a string, then it returns false. + */ +export function IsUppercase(validationOptions) { + return ValidateBy({ + name: IS_UPPERCASE, + validator: { + validate: function (value, args) { return isUppercase(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be uppercase'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsUppercase.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsUppercase.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsUppercase.js.map new file mode 100644 index 00000000..7a886641 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsUppercase.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsUppercase.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsUppercase.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,oBAAoB,MAAM,2BAA2B,CAAC;AAE7D,MAAM,CAAC,IAAM,YAAY,GAAG,aAAa,CAAC;AAE1C;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,iBAAqC;IAC/D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,WAAW,CAAC,KAAK,CAAC,EAAlB,CAAkB;YACtD,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,6BAA6B,EAA1C,CAA0C,EAAE,iBAAiB,CAAC;SAC1G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be uppercase', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsUrl.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsUrl.js new file mode 100644 index 00000000..97940c5b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsUrl.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isUrlValidator from 'validator/lib/isURL'; +export var IS_URL = 'isUrl'; +/** + * Checks if the string is an url. + * If given value is not a string, then it returns false. + */ +export function isURL(value, options) { + return typeof value === 'string' && isUrlValidator(value, options); +} +/** + * Checks if the string is an url. + * If given value is not a string, then it returns false. + */ +export function IsUrl(options, validationOptions) { + return ValidateBy({ + name: IS_URL, + constraints: [options], + validator: { + validate: function (value, args) { return isURL(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an URL address'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsUrl.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsUrl.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsUrl.js.map new file mode 100644 index 00000000..39a51ff9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsUrl.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsUrl.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsUrl.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAGjD,MAAM,CAAC,IAAM,MAAM,GAAG,OAAO,CAAC;AAE9B;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,KAAa,EAAE,OAAkC;IACrE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACrE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,OAAkC,EAAE,iBAAqC;IAC7F,OAAO,UAAU,CACf;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAjC,CAAiC;YACrE,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,kCAAkC,EAA/C,CAA+C,EAAE,iBAAiB,CAAC;SAC/G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isUrlValidator from 'validator/lib/isURL';\nimport ValidatorJS from 'validator';\n\nexport const IS_URL = 'isUrl';\n\n/**\n * Checks if the string is an url.\n * If given value is not a string, then it returns false.\n */\nexport function isURL(value: string, options?: ValidatorJS.IsURLOptions): boolean {\n return typeof value === 'string' && isUrlValidator(value, options);\n}\n\n/**\n * Checks if the string is an url.\n * If given value is not a string, then it returns false.\n */\nexport function IsUrl(options?: ValidatorJS.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 + '$property must be an URL address', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsVariableWidth.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsVariableWidth.js new file mode 100644 index 00000000..9c6c235a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsVariableWidth.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isVariableWidthValidator from 'validator/lib/isVariableWidth'; +export var IS_VARIABLE_WIDTH = 'isVariableWidth'; +/** + * Checks if the string contains variable-width chars. + * If given value is not a string, then it returns false. + */ +export function isVariableWidth(value) { + return typeof value === 'string' && isVariableWidthValidator(value); +} +/** + * Checks if the string contains variable-width chars. + * If given value is not a string, then it returns false. + */ +export function IsVariableWidth(validationOptions) { + return ValidateBy({ + name: IS_VARIABLE_WIDTH, + validator: { + validate: function (value, args) { return isVariableWidth(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must contain a full-width and half-width characters'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsVariableWidth.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsVariableWidth.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsVariableWidth.js.map new file mode 100644 index 00000000..f2c65026 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/IsVariableWidth.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsVariableWidth.js","sourceRoot":"","sources":["../../../../src/decorator/string/IsVariableWidth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,wBAAwB,MAAM,+BAA+B,CAAC;AAErE,MAAM,CAAC,IAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAEnD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,iBAAqC;IACnE,OAAO,UAAU,CACf;QACE,IAAI,EAAE,iBAAiB;QACvB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,eAAe,CAAC,KAAK,CAAC,EAAtB,CAAsB;YAC1D,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,+DAA+D,EAA5E,CAA4E,EAC1F,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must contain a full-width and half-width characters',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/Length.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/Length.js new file mode 100644 index 00000000..9cfba33d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/Length.js @@ -0,0 +1,36 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isLengthValidator from 'validator/lib/isLength'; +export var IS_LENGTH = 'isLength'; +/** + * Checks if the string's length falls in a range. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ +export function length(value, min, max) { + return typeof value === 'string' && isLengthValidator(value, { min: min, max: max }); +} +/** + * Checks if the string's length falls in a range. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ +export function Length(min, max, validationOptions) { + return ValidateBy({ + name: IS_LENGTH, + constraints: [min, max], + validator: { + validate: function (value, args) { return length(value, args.constraints[0], args.constraints[1]); }, + defaultMessage: buildMessage(function (eachPrefix, args) { + var isMinLength = args.constraints[0] !== null && args.constraints[0] !== undefined; + var isMaxLength = args.constraints[1] !== null && args.constraints[1] !== undefined; + if (isMinLength && (!args.value || args.value.length < args.constraints[0])) { + return eachPrefix + '$property must be longer than or equal to $constraint1 characters'; + } + else if (isMaxLength && args.value.length > args.constraints[1]) { + return eachPrefix + '$property must be shorter than or equal to $constraint2 characters'; + } + return (eachPrefix + + '$property must be longer than or equal to $constraint1 and shorter than or equal to $constraint2 characters'); + }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=Length.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/Length.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/Length.js.map new file mode 100644 index 00000000..c18913b3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/Length.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Length.js","sourceRoot":"","sources":["../../../../src/decorator/string/Length.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AAEvD,MAAM,CAAC,IAAM,SAAS,GAAG,UAAU,CAAC;AAEpC;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc,EAAE,GAAW,EAAE,GAAY;IAC9D,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,KAAK,EAAE,EAAE,GAAG,KAAA,EAAE,GAAG,KAAA,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,GAAW,EAAE,GAAY,EAAE,iBAAqC;IACrF,OAAO,UAAU,CACf;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;QACvB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAvD,CAAuD;YAC3F,cAAc,EAAE,YAAY,CAAC,UAAC,UAAU,EAAE,IAAI;gBAC5C,IAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;gBACtF,IAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;gBACtF,IAAI,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;oBAC3E,OAAO,UAAU,GAAG,mEAAmE,CAAC;iBACzF;qBAAM,IAAI,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;oBACjE,OAAO,UAAU,GAAG,oEAAoE,CAAC;iBAC1F;gBACD,OAAO,CACL,UAAU;oBACV,6GAA6G,CAC9G,CAAC;YACJ,CAAC,EAAE,iBAAiB,CAAC;SACtB;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be longer than or equal to $constraint1 characters';\n } else if (isMaxLength && args.value.length > args.constraints[1]) {\n return eachPrefix + '$property must be shorter than or equal to $constraint2 characters';\n }\n return (\n eachPrefix +\n '$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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/Matches.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/Matches.js new file mode 100644 index 00000000..d61f402e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/Matches.js @@ -0,0 +1,24 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import matchesValidator from 'validator/lib/matches'; +export var MATCHES = 'matches'; +export function matches(value, pattern, modifiers) { + return typeof value === 'string' && matchesValidator(value, pattern, modifiers); +} +export function Matches(pattern, modifiersOrAnnotationOptions, validationOptions) { + var modifiers; + if (modifiersOrAnnotationOptions && modifiersOrAnnotationOptions instanceof Object && !validationOptions) { + validationOptions = modifiersOrAnnotationOptions; + } + else { + modifiers = modifiersOrAnnotationOptions; + } + return ValidateBy({ + name: MATCHES, + constraints: [pattern, modifiers], + validator: { + validate: function (value, args) { return matches(value, args.constraints[0], args.constraints[1]); }, + defaultMessage: buildMessage(function (eachPrefix, args) { return eachPrefix + '$property must match $constraint1 regular expression'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=Matches.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/Matches.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/Matches.js.map new file mode 100644 index 00000000..6357cd89 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/Matches.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Matches.js","sourceRoot":"","sources":["../../../../src/decorator/string/Matches.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AAErD,MAAM,CAAC,IAAM,OAAO,GAAG,SAAS,CAAC;AAQjC,MAAM,UAAU,OAAO,CAAC,KAAa,EAAE,OAAwB,EAAE,SAAkB;IACjF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,KAAK,EAAE,OAAyB,EAAE,SAAS,CAAC,CAAC;AACpG,CAAC;AAQD,MAAM,UAAU,OAAO,CACrB,OAAwB,EACxB,4BAAyD,EACzD,iBAAqC;IAErC,IAAI,SAAiB,CAAC;IACtB,IAAI,4BAA4B,IAAI,4BAA4B,YAAY,MAAM,IAAI,CAAC,iBAAiB,EAAE;QACxG,iBAAiB,GAAG,4BAA4B,CAAC;KAClD;SAAM;QACL,SAAS,GAAG,4BAAsC,CAAC;KACpD;IAED,OAAO,UAAU,CACf;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;QACjC,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAxD,CAAwD;YAC5F,cAAc,EAAE,YAAY,CAC1B,UAAC,UAAU,EAAE,IAAI,IAAK,OAAA,UAAU,GAAG,sDAAsD,EAAnE,CAAmE,EACzF,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must match $constraint1 regular expression',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/MaxLength.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/MaxLength.js new file mode 100644 index 00000000..363f4080 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/MaxLength.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isLengthValidator from 'validator/lib/isLength'; +export var MAX_LENGTH = 'maxLength'; +/** + * Checks if the string's length is not more than given number. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ +export function maxLength(value, max) { + return typeof value === 'string' && isLengthValidator(value, { min: 0, max: max }); +} +/** + * Checks if the string's length is not more than given number. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ +export function MaxLength(max, validationOptions) { + return ValidateBy({ + name: MAX_LENGTH, + constraints: [max], + validator: { + validate: function (value, args) { return maxLength(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be shorter than or equal to $constraint1 characters'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=MaxLength.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/MaxLength.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/MaxLength.js.map new file mode 100644 index 00000000..26ecaf0f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/MaxLength.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MaxLength.js","sourceRoot":"","sources":["../../../../src/decorator/string/MaxLength.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AAEvD,MAAM,CAAC,IAAM,UAAU,GAAG,WAAW,CAAC;AAEtC;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc,EAAE,GAAW;IACnD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAA,EAAE,CAAC,CAAC;AAChF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,iBAAqC;IAC1E,OAAO,UAAU,CACf;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,CAAC,GAAG,CAAC;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAArC,CAAqC;YACzE,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,oEAAoE,EAAjF,CAAiF,EAC/F,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be shorter than or equal to $constraint1 characters',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/MinLength.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/MinLength.js new file mode 100644 index 00000000..4e0f7c12 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/MinLength.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import isLengthValidator from 'validator/lib/isLength'; +export var MIN_LENGTH = 'minLength'; +/** + * Checks if the string's length is not less than given number. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ +export function minLength(value, min) { + return typeof value === 'string' && isLengthValidator(value, { min: min }); +} +/** + * Checks if the string's length is not less than given number. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ +export function MinLength(min, validationOptions) { + return ValidateBy({ + name: MIN_LENGTH, + constraints: [min], + validator: { + validate: function (value, args) { return minLength(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be longer than or equal to $constraint1 characters'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=MinLength.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/MinLength.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/MinLength.js.map new file mode 100644 index 00000000..9189e0df --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/MinLength.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MinLength.js","sourceRoot":"","sources":["../../../../src/decorator/string/MinLength.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AAEvD,MAAM,CAAC,IAAM,UAAU,GAAG,WAAW,CAAC;AAEtC;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc,EAAE,GAAW;IACnD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,KAAK,EAAE,EAAE,GAAG,KAAA,EAAE,CAAC,CAAC;AACxE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,iBAAqC;IAC1E,OAAO,UAAU,CACf;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,CAAC,GAAG,CAAC;QAClB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAArC,CAAqC;YACzE,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,mEAAmE,EAAhF,CAAgF,EAC9F,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be longer than or equal to $constraint1 characters',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/NotContains.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/NotContains.js new file mode 100644 index 00000000..48ebac73 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/NotContains.js @@ -0,0 +1,25 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +import containsValidator from 'validator/lib/contains'; +export var NOT_CONTAINS = 'notContains'; +/** + * Checks if the string does not contain the seed. + * If given value is not a string, then it returns false. + */ +export function notContains(value, seed) { + return typeof value === 'string' && !containsValidator(value, seed); +} +/** + * Checks if the string does not contain the seed. + * If given value is not a string, then it returns false. + */ +export function NotContains(seed, validationOptions) { + return ValidateBy({ + name: NOT_CONTAINS, + constraints: [seed], + validator: { + validate: function (value, args) { return notContains(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property should not contain a $constraint1 string'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=NotContains.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/NotContains.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/NotContains.js.map new file mode 100644 index 00000000..18aa789e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/string/NotContains.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NotContains.js","sourceRoot":"","sources":["../../../../src/decorator/string/NotContains.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AAEvD,MAAM,CAAC,IAAM,YAAY,GAAG,aAAa,CAAC;AAE1C;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc,EAAE,IAAY;IACtD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,iBAAqC;IAC7E,OAAO,UAAU,CACf;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,CAAC,IAAI,CAAC;QACnB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAvC,CAAuC;YAC3E,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,oDAAoD,EAAjE,CAAiE,EAC/E,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property should not contain a $constraint1 string',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsArray.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsArray.js new file mode 100644 index 00000000..92899a93 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsArray.js @@ -0,0 +1,21 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var IS_ARRAY = 'isArray'; +/** + * Checks if a given value is an array + */ +export function isArray(value) { + return Array.isArray(value); +} +/** + * Checks if a given value is an array + */ +export function IsArray(validationOptions) { + return ValidateBy({ + name: IS_ARRAY, + validator: { + validate: function (value, args) { return isArray(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an array'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsArray.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsArray.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsArray.js.map new file mode 100644 index 00000000..04dd6e7c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsArray.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsArray.js","sourceRoot":"","sources":["../../../../src/decorator/typechecker/IsArray.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,QAAQ,GAAG,SAAS,CAAC;AAElC;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,iBAAqC;IAC3D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,OAAO,CAAC,KAAK,CAAC,EAAd,CAAc;YAClD,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,4BAA4B,EAAzC,CAAyC,EAAE,iBAAiB,CAAC;SACzG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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(value: unknown): boolean {\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 + '$property must be an array', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsBoolean.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsBoolean.js new file mode 100644 index 00000000..73602f60 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsBoolean.js @@ -0,0 +1,21 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var IS_BOOLEAN = 'isBoolean'; +/** + * Checks if a given value is a boolean. + */ +export function isBoolean(value) { + return value instanceof Boolean || typeof value === 'boolean'; +} +/** + * Checks if a value is a boolean. + */ +export function IsBoolean(validationOptions) { + return ValidateBy({ + name: IS_BOOLEAN, + validator: { + validate: function (value, args) { return isBoolean(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a boolean value'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsBoolean.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsBoolean.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsBoolean.js.map new file mode 100644 index 00000000..741a2a11 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsBoolean.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsBoolean.js","sourceRoot":"","sources":["../../../../src/decorator/typechecker/IsBoolean.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,UAAU,GAAG,WAAW,CAAC;AAEtC;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,KAAK,YAAY,OAAO,IAAI,OAAO,KAAK,KAAK,SAAS,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,iBAAqC;IAC7D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,SAAS,CAAC,KAAK,CAAC,EAAhB,CAAgB;YACpD,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,mCAAmC,EAAhD,CAAgD,EAAE,iBAAiB,CAAC;SAChH;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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): 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 + '$property must be a boolean value', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsDate.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsDate.js new file mode 100644 index 00000000..25a4d5b7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsDate.js @@ -0,0 +1,21 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var IS_DATE = 'isDate'; +/** + * Checks if a given value is a date. + */ +export function isDate(value) { + return value instanceof Date && !isNaN(value.getTime()); +} +/** + * Checks if a value is a date. + */ +export function IsDate(validationOptions) { + return ValidateBy({ + name: IS_DATE, + validator: { + validate: function (value, args) { return isDate(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a Date instance'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsDate.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsDate.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsDate.js.map new file mode 100644 index 00000000..c3500fd3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsDate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsDate.js","sourceRoot":"","sources":["../../../../src/decorator/typechecker/IsDate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,KAAK,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,iBAAqC;IAC1D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,OAAO;QACb,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,MAAM,CAAC,KAAK,CAAC,EAAb,CAAa;YACjD,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,mCAAmC,EAAhD,CAAgD,EAAE,iBAAiB,CAAC;SAChH;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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): boolean {\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 + '$property must be a Date instance', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsEnum.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsEnum.js new file mode 100644 index 00000000..48cfe49e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsEnum.js @@ -0,0 +1,23 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var IS_ENUM = 'isEnum'; +/** + * Checks if a given value is an enum + */ +export function isEnum(value, entity) { + var enumValues = Object.keys(entity).map(function (k) { return entity[k]; }); + return enumValues.indexOf(value) >= 0; +} +/** + * Checks if a given value is an enum + */ +export function IsEnum(entity, validationOptions) { + return ValidateBy({ + name: IS_ENUM, + constraints: [entity], + validator: { + validate: function (value, args) { return isEnum(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a valid enum value'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsEnum.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsEnum.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsEnum.js.map new file mode 100644 index 00000000..f36a7895 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsEnum.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsEnum.js","sourceRoot":"","sources":["../../../../src/decorator/typechecker/IsEnum.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc,EAAE,MAAW;IAChD,IAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,MAAM,CAAC,CAAC,CAAC,EAAT,CAAS,CAAC,CAAC;IAC3D,OAAO,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,MAAc,EAAE,iBAAqC;IAC1E,OAAO,UAAU,CACf;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAlC,CAAkC;YACtE,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,sCAAsC,EAAnD,CAAmD,EACjE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const IS_ENUM = 'isEnum';\n\n/**\n * Checks if a given value is an enum\n */\nexport function isEnum(value: unknown, entity: any): boolean {\n const enumValues = Object.keys(entity).map(k => entity[k]);\n return enumValues.indexOf(value) >= 0;\n}\n\n/**\n * Checks if a given value is an enum\n */\nexport function IsEnum(entity: object, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_ENUM,\n constraints: [entity],\n validator: {\n validate: (value, args): boolean => isEnum(value, args.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + '$property must be a valid enum value',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsInt.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsInt.js new file mode 100644 index 00000000..7b1e7b97 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsInt.js @@ -0,0 +1,21 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var IS_INT = 'isInt'; +/** + * Checks if value is an integer. + */ +export function isInt(val) { + return typeof val === 'number' && Number.isInteger(val); +} +/** + * Checks if value is an integer. + */ +export function IsInt(validationOptions) { + return ValidateBy({ + name: IS_INT, + validator: { + validate: function (value, args) { return isInt(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an integer number'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsInt.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsInt.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsInt.js.map new file mode 100644 index 00000000..cb3246b6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsInt.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsInt.js","sourceRoot":"","sources":["../../../../src/decorator/typechecker/IsInt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,MAAM,GAAG,OAAO,CAAC;AAE9B;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,GAAY;IAChC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,iBAAqC;IACzD,OAAO,UAAU,CACf;QACE,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,KAAK,CAAC,KAAK,CAAC,EAAZ,CAAY;YAChD,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,qCAAqC,EAAlD,CAAkD,EAChE,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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): boolean {\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 + '$property must be an integer number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsNumber.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsNumber.js new file mode 100644 index 00000000..95d4576f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsNumber.js @@ -0,0 +1,42 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var IS_NUMBER = 'isNumber'; +/** + * Checks if a given value is a number. + */ +export function isNumber(value, options) { + if (options === void 0) { options = {}; } + if (typeof value !== 'number') { + return false; + } + if (value === Infinity || value === -Infinity) { + return options.allowInfinity; + } + if (Number.isNaN(value)) { + return options.allowNaN; + } + if (options.maxDecimalPlaces !== undefined) { + var decimalPlaces = 0; + if (value % 1 !== 0) { + decimalPlaces = value.toString().split('.')[1].length; + } + if (decimalPlaces > options.maxDecimalPlaces) { + return false; + } + } + return Number.isFinite(value); +} +/** + * Checks if a value is a number. + */ +export function IsNumber(options, validationOptions) { + if (options === void 0) { options = {}; } + return ValidateBy({ + name: IS_NUMBER, + constraints: [options], + validator: { + validate: function (value, args) { return isNumber(value, args.constraints[0]); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a number conforming to the specified constraints'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsNumber.js.map new file mode 100644 index 00000000..0b31c2e2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsNumber.js","sourceRoot":"","sources":["../../../../src/decorator/typechecker/IsNumber.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,SAAS,GAAG,UAAU,CAAC;AAWpC;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc,EAAE,OAA6B;IAA7B,wBAAA,EAAA,YAA6B;IACpE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAO,KAAK,CAAC;KACd;IAED,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,CAAC,QAAQ,EAAE;QAC7C,OAAO,OAAO,CAAC,aAAa,CAAC;KAC9B;IAED,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACvB,OAAO,OAAO,CAAC,QAAQ,CAAC;KACzB;IAED,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,EAAE;QAC1C,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE;YACnB,aAAa,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;SACvD;QACD,IAAI,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE;YAC5C,OAAO,KAAK,CAAC;SACd;KACF;IAED,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,OAA6B,EAAE,iBAAqC;IAApE,wBAAA,EAAA,YAA6B;IACpD,OAAO,UAAU,CACf;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAApC,CAAoC;YACxE,cAAc,EAAE,YAAY,CAC1B,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,oEAAoE,EAAjF,CAAiF,EAC/F,iBAAiB,CAClB;SACF;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 = {}): boolean {\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('.')[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 + '$property must be a number conforming to the specified constraints',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsObject.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsObject.js new file mode 100644 index 00000000..1f705e49 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsObject.js @@ -0,0 +1,23 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var IS_OBJECT = 'isObject'; +/** + * Checks if the value is valid Object. + * Returns false if the value is not an object. + */ +export function isObject(value) { + return value != null && (typeof value === 'object' || typeof value === 'function') && !Array.isArray(value); +} +/** + * Checks if the value is valid Object. + * Returns false if the value is not an object. + */ +export function IsObject(validationOptions) { + return ValidateBy({ + name: IS_OBJECT, + validator: { + validate: function (value, args) { return isObject(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be an object'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsObject.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsObject.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsObject.js.map new file mode 100644 index 00000000..a8c9f5ce --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsObject.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsObject.js","sourceRoot":"","sources":["../../../../src/decorator/typechecker/IsObject.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,SAAS,GAAG,UAAU,CAAC;AAEpC;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9G,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,iBAAqC;IAC5D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,SAAS;QACf,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,QAAQ,CAAC,KAAK,CAAC,EAAf,CAAe;YACnD,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,6BAA6B,EAA1C,CAA0C,EAAE,iBAAiB,CAAC;SAC1G;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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(value: unknown): value is object {\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 + '$property must be an object', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsString.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsString.js new file mode 100644 index 00000000..819caca5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsString.js @@ -0,0 +1,21 @@ +import { buildMessage, ValidateBy } from '../common/ValidateBy'; +export var IS_STRING = 'isString'; +/** + * Checks if a given value is a real string. + */ +export function isString(value) { + return value instanceof String || typeof value === 'string'; +} +/** + * Checks if a given value is a real string. + */ +export function IsString(validationOptions) { + return ValidateBy({ + name: IS_STRING, + validator: { + validate: function (value, args) { return isString(value); }, + defaultMessage: buildMessage(function (eachPrefix) { return eachPrefix + '$property must be a string'; }, validationOptions), + }, + }, validationOptions); +} +//# sourceMappingURL=IsString.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsString.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsString.js.map new file mode 100644 index 00000000..1da3983a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/decorator/typechecker/IsString.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IsString.js","sourceRoot":"","sources":["../../../../src/decorator/typechecker/IsString.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,IAAM,SAAS,GAAG,UAAU,CAAC;AAEpC;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,KAAK,YAAY,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,iBAAqC;IAC5D,OAAO,UAAU,CACf;QACE,IAAI,EAAE,SAAS;QACf,SAAS,EAAE;YACT,QAAQ,EAAE,UAAC,KAAK,EAAE,IAAI,IAAc,OAAA,QAAQ,CAAC,KAAK,CAAC,EAAf,CAAe;YACnD,cAAc,EAAE,YAAY,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,GAAG,4BAA4B,EAAzC,CAAyC,EAAE,iBAAiB,CAAC;SACzG;KACF,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { 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 + '$property must be a string', validationOptions),\n },\n },\n validationOptions\n );\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/index.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/index.js new file mode 100644 index 00000000..b89ccf3c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/index.js @@ -0,0 +1,60 @@ +import { getMetadataStorage } from './metadata/MetadataStorage'; +import { Validator } from './validation/Validator'; +import { getFromContainer } from './container'; +// ------------------------------------------------------------------------- +// Export everything api users needs +// ------------------------------------------------------------------------- +export * from './container'; +export * from './decorator/decorators'; +export * from './decorator/ValidationOptions'; +export * from './validation/ValidatorConstraintInterface'; +export * from './validation/ValidationError'; +export * from './validation/ValidatorOptions'; +export * from './validation/ValidationArguments'; +export * from './validation/ValidationTypes'; +export * from './validation/Validator'; +export * from './validation-schema/ValidationSchema'; +export * from './register-decorator'; +export * from './metadata/MetadataStorage'; +/** + * Validates given object by object's decorators or given validation schema. + */ +export function validate(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions) { + if (typeof schemaNameOrObject === 'string') { + return getFromContainer(Validator).validate(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions); + } + else { + return getFromContainer(Validator).validate(schemaNameOrObject, objectOrValidationOptions); + } +} +/** + * Validates given object by object's decorators or given validation schema and reject on error. + */ +export function validateOrReject(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions) { + if (typeof schemaNameOrObject === 'string') { + return getFromContainer(Validator).validateOrReject(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions); + } + else { + return getFromContainer(Validator).validateOrReject(schemaNameOrObject, objectOrValidationOptions); + } +} +/** + * Validates given object by object's decorators or given validation schema. + * Note that this method completely ignores async validations. + * If you want to properly perform validation you need to call validate method instead. + */ +export function validateSync(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions) { + if (typeof schemaNameOrObject === 'string') { + return getFromContainer(Validator).validateSync(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions); + } + else { + return getFromContainer(Validator).validateSync(schemaNameOrObject, objectOrValidationOptions); + } +} +/** + * Registers a new validation schema. + */ +export function registerSchema(schema) { + getMetadataStorage().addValidationSchema(schema); +} +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/index.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/index.js.map new file mode 100644 index 00000000..921c2410 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,4EAA4E;AAC5E,oCAAoC;AACpC,4EAA4E;AAE5E,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2CAA2C,CAAC;AAC1D,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,sCAAsC,CAAC;AACrD,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAoB3C;;GAEG;AACH,MAAM,UAAU,QAAQ,CACtB,kBAAmC,EACnC,yBAAqD,EACrD,qBAAwC;IAExC,IAAI,OAAO,kBAAkB,KAAK,QAAQ,EAAE;QAC1C,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC,QAAQ,CACzC,kBAAkB,EAClB,yBAAmC,EACnC,qBAAqB,CACtB,CAAC;KACH;SAAM;QACL,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,kBAAkB,EAAE,yBAA6C,CAAC,CAAC;KAChH;AACH,CAAC;AAgBD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,kBAAmC,EACnC,yBAAqD,EACrD,qBAAwC;IAExC,IAAI,OAAO,kBAAkB,KAAK,QAAQ,EAAE;QAC1C,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC,gBAAgB,CACjD,kBAAkB,EAClB,yBAAmC,EACnC,qBAAqB,CACtB,CAAC;KACH;SAAM;QACL,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC,gBAAgB,CACjD,kBAAkB,EAClB,yBAA6C,CAC9C,CAAC;KACH;AACH,CAAC;AAoBD;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,kBAAmC,EACnC,yBAAqD,EACrD,qBAAwC;IAExC,IAAI,OAAO,kBAAkB,KAAK,QAAQ,EAAE;QAC1C,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC,YAAY,CAC7C,kBAAkB,EAClB,yBAAmC,EACnC,qBAAqB,CACtB,CAAC;KACH;SAAM;QACL,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,kBAAkB,EAAE,yBAA6C,CAAC,CAAC;KACpH;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAwB;IACrD,kBAAkB,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACnD,CAAC","sourcesContent":["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\n// -------------------------------------------------------------------------\n// Export everything api users needs\n// -------------------------------------------------------------------------\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';\n\n// -------------------------------------------------------------------------\n// Shortcut methods for api users\n// -------------------------------------------------------------------------\n\n/**\n * Validates given object.\n */\nexport function validate(object: object, validatorOptions?: ValidatorOptions): Promise;\n\n/**\n * Validates given object by a given validation schema.\n */\nexport function validate(\n schemaName: string,\n object: object,\n validatorOptions?: ValidatorOptions\n): Promise;\n\n/**\n * Validates given object by object's decorators or given validation schema.\n */\nexport function validate(\n schemaNameOrObject: object | string,\n objectOrValidationOptions?: object | ValidatorOptions,\n maybeValidatorOptions?: ValidatorOptions\n): Promise {\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 * Validates given object and reject on error.\n */\nexport function validateOrReject(object: object, validatorOptions?: ValidatorOptions): Promise;\n\n/**\n * Validates given object by a given validation schema and reject on error.\n */\nexport function validateOrReject(\n schemaName: string,\n object: object,\n validatorOptions?: ValidatorOptions\n): Promise;\n\n/**\n * Validates given object by object's decorators or given validation schema and reject on error.\n */\nexport function validateOrReject(\n schemaNameOrObject: object | string,\n objectOrValidationOptions?: object | ValidatorOptions,\n maybeValidatorOptions?: ValidatorOptions\n): Promise {\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 * Performs sync validation of the given object.\n * Note that this method completely ignores async validations.\n * If you want to properly perform validation you need to call validate method instead.\n */\nexport function validateSync(object: object, validatorOptions?: ValidatorOptions): ValidationError[];\n\n/**\n * Validates given object by a given validation schema.\n * Note that this method completely ignores async validations.\n * If you want to properly perform validation you need to call validate method instead.\n */\nexport function validateSync(\n schemaName: string,\n object: object,\n validatorOptions?: ValidatorOptions\n): ValidationError[];\n\n/**\n * Validates given object by object's decorators or given validation schema.\n * Note that this method completely ignores async validations.\n * If you want to properly perform validation you need to call validate method instead.\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 * Registers a new validation schema.\n */\nexport function registerSchema(schema: ValidationSchema): void {\n getMetadataStorage().addValidationSchema(schema);\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/ConstraintMetadata.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/ConstraintMetadata.js new file mode 100644 index 00000000..e14859ec --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/ConstraintMetadata.js @@ -0,0 +1,31 @@ +import { getFromContainer } from '../container'; +/** + * This metadata interface contains information for custom validators. + */ +var ConstraintMetadata = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function ConstraintMetadata(target, name, async) { + if (async === void 0) { async = false; } + this.target = target; + this.name = name; + this.async = async; + } + Object.defineProperty(ConstraintMetadata.prototype, "instance", { + // ------------------------------------------------------------------------- + // Accessors + // ------------------------------------------------------------------------- + /** + * Instance of the target custom validation class which performs validation. + */ + get: function () { + return getFromContainer(this.target); + }, + enumerable: false, + configurable: true + }); + return ConstraintMetadata; +}()); +export { ConstraintMetadata }; +//# sourceMappingURL=ConstraintMetadata.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/ConstraintMetadata.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/ConstraintMetadata.js.map new file mode 100644 index 00000000..a3d70c59 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/ConstraintMetadata.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ConstraintMetadata.js","sourceRoot":"","sources":["../../../src/metadata/ConstraintMetadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD;;GAEG;AACH;IAoBE,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,4BAAY,MAAgB,EAAE,IAAa,EAAE,KAAsB;QAAtB,sBAAA,EAAA,aAAsB;QACjE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IASD,sBAAI,wCAAQ;QAPZ,4EAA4E;QAC5E,YAAY;QACZ,4EAA4E;QAE5E;;WAEG;aACH;YACE,OAAO,gBAAgB,CAA+B,IAAI,CAAC,MAAM,CAAC,CAAC;QACrE,CAAC;;;OAAA;IACH,yBAAC;AAAD,CAAC,AAxCD,IAwCC","sourcesContent":["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(this.target);\n }\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/MetadataStorage.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/MetadataStorage.js new file mode 100644 index 00000000..e4f79993 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/MetadataStorage.js @@ -0,0 +1,139 @@ +import { ValidationSchemaToMetadataTransformer } from '../validation-schema/ValidationSchemaToMetadataTransformer'; +import { getGlobal } from '../utils'; +/** + * Storage all metadatas. + */ +var MetadataStorage = /** @class */ (function () { + function MetadataStorage() { + // ------------------------------------------------------------------------- + // Private properties + // ------------------------------------------------------------------------- + this.validationMetadatas = []; + this.constraintMetadatas = []; + } + Object.defineProperty(MetadataStorage.prototype, "hasValidationMetaData", { + get: function () { + return !!this.validationMetadatas.length; + }, + enumerable: false, + configurable: true + }); + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + /** + * Adds a new validation metadata. + */ + MetadataStorage.prototype.addValidationSchema = function (schema) { + var _this = this; + var validationMetadatas = new ValidationSchemaToMetadataTransformer().transform(schema); + validationMetadatas.forEach(function (validationMetadata) { return _this.addValidationMetadata(validationMetadata); }); + }; + /** + * Adds a new validation metadata. + */ + MetadataStorage.prototype.addValidationMetadata = function (metadata) { + this.validationMetadatas.push(metadata); + }; + /** + * Adds a new constraint metadata. + */ + MetadataStorage.prototype.addConstraintMetadata = function (metadata) { + this.constraintMetadatas.push(metadata); + }; + /** + * Groups metadata by their property names. + */ + MetadataStorage.prototype.groupByPropertyName = function (metadata) { + var grouped = {}; + metadata.forEach(function (metadata) { + if (!grouped[metadata.propertyName]) + grouped[metadata.propertyName] = []; + grouped[metadata.propertyName].push(metadata); + }); + return grouped; + }; + /** + * Gets all validation metadatas for the given object with the given groups. + */ + MetadataStorage.prototype.getTargetValidationMetadatas = function (targetConstructor, targetSchema, always, strictGroups, groups) { + var includeMetadataBecauseOfAlwaysOption = function (metadata) { + // `metadata.always` overrides global default. + if (typeof metadata.always !== 'undefined') + return metadata.always; + // `metadata.groups` overrides global default. + if (metadata.groups && metadata.groups.length) + return false; + // Use global default. + return always; + }; + var excludeMetadataBecauseOfStrictGroupsOption = function (metadata) { + if (strictGroups) { + // Validation is not using groups. + if (!groups || !groups.length) { + // `metadata.groups` has at least one group. + if (metadata.groups && metadata.groups.length) + return true; + } + } + return false; + }; + // get directly related to a target metadatas + var originalMetadatas = this.validationMetadatas.filter(function (metadata) { + if (metadata.target !== targetConstructor && metadata.target !== targetSchema) + return false; + if (includeMetadataBecauseOfAlwaysOption(metadata)) + return true; + if (excludeMetadataBecauseOfStrictGroupsOption(metadata)) + return false; + if (groups && groups.length > 0) + return metadata.groups && !!metadata.groups.find(function (group) { return groups.indexOf(group) !== -1; }); + return true; + }); + // get metadatas for inherited classes + var inheritedMetadatas = this.validationMetadatas.filter(function (metadata) { + // if target is a string it's means we validate against a schema, and there is no inheritance support for schemas + if (typeof metadata.target === 'string') + return false; + if (metadata.target === targetConstructor) + return false; + if (metadata.target instanceof Function && !(targetConstructor.prototype instanceof metadata.target)) + return false; + if (includeMetadataBecauseOfAlwaysOption(metadata)) + return true; + if (excludeMetadataBecauseOfStrictGroupsOption(metadata)) + return false; + if (groups && groups.length > 0) + return metadata.groups && !!metadata.groups.find(function (group) { return groups.indexOf(group) !== -1; }); + return true; + }); + // filter out duplicate metadatas, prefer original metadatas instead of inherited metadatas + var uniqueInheritedMetadatas = inheritedMetadatas.filter(function (inheritedMetadata) { + return !originalMetadatas.find(function (originalMetadata) { + return (originalMetadata.propertyName === inheritedMetadata.propertyName && + originalMetadata.type === inheritedMetadata.type); + }); + }); + return originalMetadatas.concat(uniqueInheritedMetadatas); + }; + /** + * Gets all validator constraints for the given object. + */ + MetadataStorage.prototype.getTargetValidatorConstraints = function (target) { + return this.constraintMetadatas.filter(function (metadata) { return metadata.target === target; }); + }; + return MetadataStorage; +}()); +export { MetadataStorage }; +/** + * Gets metadata storage. + * Metadata storage follows the best practices and stores metadata in a global variable. + */ +export function getMetadataStorage() { + var global = getGlobal(); + if (!global.classValidatorMetadataStorage) { + global.classValidatorMetadataStorage = new MetadataStorage(); + } + return global.classValidatorMetadataStorage; +} +//# sourceMappingURL=MetadataStorage.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/MetadataStorage.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/MetadataStorage.js.map new file mode 100644 index 00000000..af5e4c25 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/MetadataStorage.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MetadataStorage.js","sourceRoot":"","sources":["../../../src/metadata/MetadataStorage.ts"],"names":[],"mappings":"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","sourcesContent":["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: ValidationMetadata[] = [];\n private constraintMetadatas: ConstraintMetadata[] = [];\n\n get hasValidationMetaData(): boolean {\n return !!this.validationMetadatas.length;\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 this.validationMetadatas.push(metadata);\n }\n\n /**\n * Adds a new constraint metadata.\n */\n addConstraintMetadata(metadata: ConstraintMetadata): void {\n this.constraintMetadatas.push(metadata);\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 originalMetadatas = this.validationMetadatas.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 inheritedMetadatas = this.validationMetadatas.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.filter(metadata => metadata.target === 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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/ValidationMetadata.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/ValidationMetadata.js new file mode 100644 index 00000000..bf340cc4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/ValidationMetadata.js @@ -0,0 +1,38 @@ +/** + * This metadata contains validation rules. + */ +var ValidationMetadata = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function ValidationMetadata(args) { + /** + * Validation groups used for this validation. + */ + this.groups = []; + /** + * Specifies if validated value is an array and each of its item must be validated. + */ + this.each = false; + /* + * A transient set of data passed through to the validation result for response mapping + */ + this.context = undefined; + this.type = args.type; + this.target = args.target; + this.propertyName = args.propertyName; + this.constraints = args.constraints; + this.constraintCls = args.constraintCls; + this.validationTypeOptions = args.validationTypeOptions; + if (args.validationOptions) { + this.message = args.validationOptions.message; + this.groups = args.validationOptions.groups; + this.always = args.validationOptions.always; + this.each = args.validationOptions.each; + this.context = args.validationOptions.context; + } + } + return ValidationMetadata; +}()); +export { ValidationMetadata }; +//# sourceMappingURL=ValidationMetadata.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/ValidationMetadata.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/ValidationMetadata.js.map new file mode 100644 index 00000000..61f0f4fa --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/ValidationMetadata.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationMetadata.js","sourceRoot":"","sources":["../../../src/metadata/ValidationMetadata.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH;IA4DE,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,4BAAY,IAA4B;QA7BxC;;WAEG;QACH,WAAM,GAAa,EAAE,CAAC;QAOtB;;WAEG;QACH,SAAI,GAAY,KAAK,CAAC;QAEtB;;WAEG;QACH,YAAO,GAAS,SAAS,CAAC;QAYxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;QACxD,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YAC9C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;YAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;YAC5C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;YACxC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;SAC/C;IACH,CAAC;IACH,yBAAC;AAAD,CAAC,AA/ED,IA+EC","sourcesContent":["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 * 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.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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/ValidationMetadataArgs.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/ValidationMetadataArgs.js new file mode 100644 index 00000000..7e916dc7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/ValidationMetadataArgs.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=ValidationMetadataArgs.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/ValidationMetadataArgs.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/ValidationMetadataArgs.js.map new file mode 100644 index 00000000..3f88114b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/metadata/ValidationMetadataArgs.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationMetadataArgs.js","sourceRoot":"","sources":["../../../src/metadata/ValidationMetadataArgs.ts"],"names":[],"mappings":"","sourcesContent":["import { ValidationOptions } from '../decorator/ValidationOptions';\n\n/**\n * Constructor arguments for ValidationMetadata class.\n */\nexport interface ValidationMetadataArgs {\n /**\n * Validation type.\n */\n type: string;\n\n /**\n * Object that is used to be validated.\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 options.\n */\n validationOptions?: ValidationOptions;\n\n /**\n * Extra options specific to validation type.\n */\n validationTypeOptions?: any;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/register-decorator.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/register-decorator.js new file mode 100644 index 00000000..7a5e006c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/register-decorator.js @@ -0,0 +1,46 @@ +import { ConstraintMetadata } from './metadata/ConstraintMetadata'; +import { ValidationMetadata } from './metadata/ValidationMetadata'; +import { ValidationTypes } from './validation/ValidationTypes'; +import { getFromContainer } from './container'; +import { MetadataStorage, getMetadataStorage } from './metadata/MetadataStorage'; +/** + * Registers a custom validation decorator. + */ +export function registerDecorator(options) { + var constraintCls; + if (options.validator instanceof Function) { + constraintCls = options.validator; + var constraintClasses = getFromContainer(MetadataStorage).getTargetValidatorConstraints(options.validator); + if (constraintClasses.length > 1) { + throw "More than one implementation of ValidatorConstraintInterface found for validator on: ".concat(options.target.name, ":").concat(options.propertyName); + } + } + else { + var validator_1 = options.validator; + constraintCls = /** @class */ (function () { + function CustomConstraint() { + } + CustomConstraint.prototype.validate = function (value, validationArguments) { + return validator_1.validate(value, validationArguments); + }; + CustomConstraint.prototype.defaultMessage = function (validationArguments) { + if (validator_1.defaultMessage) { + return validator_1.defaultMessage(validationArguments); + } + return ''; + }; + return CustomConstraint; + }()); + getMetadataStorage().addConstraintMetadata(new ConstraintMetadata(constraintCls, options.name, options.async)); + } + var validationMetadataArgs = { + type: options.name && ValidationTypes.isValid(options.name) ? options.name : ValidationTypes.CUSTOM_VALIDATION, + target: options.target, + propertyName: options.propertyName, + validationOptions: options.options, + constraintCls: constraintCls, + constraints: options.constraints, + }; + getMetadataStorage().addValidationMetadata(new ValidationMetadata(validationMetadataArgs)); +} +//# sourceMappingURL=register-decorator.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/register-decorator.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/register-decorator.js.map new file mode 100644 index 00000000..ed57cb12 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/register-decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"register-decorator.js","sourceRoot":"","sources":["../../src/register-decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAwCjF;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAmC;IACnE,IAAI,aAAuB,CAAC;IAC5B,IAAI,OAAO,CAAC,SAAS,YAAY,QAAQ,EAAE;QACzC,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC;QAClC,IAAM,iBAAiB,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC,6BAA6B,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC7G,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;YAChC,MAAM,+FAAwF,OAAO,CAAC,MAAM,CAAC,IAAI,cAAI,OAAO,CAAC,YAAY,CAAE,CAAC;SAC7I;KACF;SAAM;QACL,IAAM,WAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACpC,aAAa;YAAG;YAYhB,CAAC;YAXC,mCAAQ,GAAR,UAAS,KAAU,EAAE,mBAAyC;gBAC5D,OAAO,WAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;YACxD,CAAC;YAED,yCAAc,GAAd,UAAe,mBAAyC;gBACtD,IAAI,WAAS,CAAC,cAAc,EAAE;oBAC5B,OAAO,WAAS,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;iBACtD;gBAED,OAAO,EAAE,CAAC;YACZ,CAAC;YACH,uBAAC;QAAD,CAAC,AAZe,GAYf,CAAC;QACF,kBAAkB,EAAE,CAAC,qBAAqB,CAAC,IAAI,kBAAkB,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;KAChH;IAED,IAAM,sBAAsB,GAA2B;QACrD,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,iBAAiB;QAC9G,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,iBAAiB,EAAE,OAAO,CAAC,OAAO;QAClC,aAAa,EAAE,aAAa;QAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAC;IACF,kBAAkB,EAAE,CAAC,qBAAqB,CAAC,IAAI,kBAAkB,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAC7F,CAAC","sourcesContent":["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 {\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 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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/convert-to-array.util.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/convert-to-array.util.js new file mode 100644 index 00000000..2eea575f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/convert-to-array.util.js @@ -0,0 +1,10 @@ +/** + * Convert Map, Set to Array + */ +export function convertToArray(val) { + if (val instanceof Map) { + return Array.from(val.values()); + } + return Array.isArray(val) ? val : Array.from(val); +} +//# sourceMappingURL=convert-to-array.util.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/convert-to-array.util.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/convert-to-array.util.js.map new file mode 100644 index 00000000..41128461 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/convert-to-array.util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"convert-to-array.util.js","sourceRoot":"","sources":["../../../src/utils/convert-to-array.util.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,cAAc,CAAI,GAAoC;IACpE,IAAI,GAAG,YAAY,GAAG,EAAE;QACtB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;KACjC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpD,CAAC","sourcesContent":["/**\n * Convert Map, Set to Array\n */\nexport function convertToArray(val: Array | Set | Map): Array {\n if (val instanceof Map) {\n return Array.from(val.values());\n }\n return Array.isArray(val) ? val : Array.from(val);\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/get-global.util.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/get-global.util.js new file mode 100644 index 00000000..a8b64cc4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/get-global.util.js @@ -0,0 +1,29 @@ +/** + * This function returns the global object across Node and browsers. + * + * Note: `globalThis` is the standardized approach however it has been added to + * Node.js in version 12. We need to include this snippet until Node 12 EOL. + */ +export function getGlobal() { + if (typeof globalThis !== 'undefined') { + return globalThis; + } + if (typeof global !== 'undefined') { + return global; + } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'window'. + if (typeof window !== 'undefined') { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'window'. + return window; + } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'self'. + if (typeof self !== 'undefined') { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: Cannot find name 'self'. + return self; + } +} +//# sourceMappingURL=get-global.util.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/get-global.util.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/get-global.util.js.map new file mode 100644 index 00000000..83b6cf4a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/get-global.util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"get-global.util.js","sourceRoot":"","sources":["../../../src/utils/get-global.util.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,SAAS;IACvB,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;QACrC,OAAO,UAAU,CAAC;KACnB;IAED,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,OAAO,MAAM,CAAC;KACf;IAED,6DAA6D;IAC7D,yCAAyC;IACzC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,6DAA6D;QAC7D,yCAAyC;QACzC,OAAO,MAAM,CAAC;KACf;IAED,6DAA6D;IAC7D,uCAAuC;IACvC,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;QAC/B,6DAA6D;QAC7D,uCAAuC;QACvC,OAAO,IAAI,CAAC;KACb;AACH,CAAC","sourcesContent":["/**\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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/index.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/index.js new file mode 100644 index 00000000..827eaa7d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/index.js @@ -0,0 +1,4 @@ +export * from './convert-to-array.util'; +export * from './get-global.util'; +export * from './is-promise.util'; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/index.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/index.js.map new file mode 100644 index 00000000..5ae486c5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC","sourcesContent":["export * from './convert-to-array.util';\nexport * from './get-global.util';\nexport * from './is-promise.util';\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/is-promise.util.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/is-promise.util.js new file mode 100644 index 00000000..c669c1b3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/is-promise.util.js @@ -0,0 +1,5 @@ +// https://github.com/TylorS/typed-is-promise/blob/abf1514e1b6961adfc75765476b0debb96b2c3ae/src/index.ts +export function isPromise(p) { + return p !== null && typeof p === 'object' && typeof p.then === 'function'; +} +//# sourceMappingURL=is-promise.util.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/is-promise.util.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/is-promise.util.js.map new file mode 100644 index 00000000..a06a8c55 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/utils/is-promise.util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"is-promise.util.js","sourceRoot":"","sources":["../../../src/utils/is-promise.util.ts"],"names":[],"mappings":"AAAA,wGAAwG;AAExG,MAAM,UAAU,SAAS,CAAU,CAAM;IACvC,OAAO,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;AAC7E,CAAC","sourcesContent":["// https://github.com/TylorS/typed-is-promise/blob/abf1514e1b6961adfc75765476b0debb96b2c3ae/src/index.ts\n\nexport function isPromise(p: any): p is Promise {\n return p !== null && typeof p === 'object' && typeof p.then === 'function';\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation-schema/ValidationSchema.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation-schema/ValidationSchema.js new file mode 100644 index 00000000..bb7c405d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation-schema/ValidationSchema.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=ValidationSchema.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation-schema/ValidationSchema.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation-schema/ValidationSchema.js.map new file mode 100644 index 00000000..27cc4885 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation-schema/ValidationSchema.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationSchema.js","sourceRoot":"","sources":["../../../src/validation-schema/ValidationSchema.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Validation schema is a decorator-free way of validation of your objects.\n * Also using validation schemas makes this library to be easily used with es6/es5.\n */\nexport interface ValidationSchema {\n /**\n * Schema name. This is required, because we tell validator to validate by this schema using its name.\n */\n name: string;\n\n /**\n * Validated properties.\n */\n properties: {\n /**\n * Name of the object's property to be validated which holds an array of validation constraints.\n */\n [propertyName: string]: {\n /**\n * Validation type. Should be one of the ValidationTypes value.\n */\n type: string;\n\n /**\n * Constraints set by validation type.\n */\n constraints?: any[];\n\n /**\n * Error message used to be used on validation fail.\n * You can use \"$value\" to use value that was failed by validation.\n * You can use \"$constraint1\" and \"$constraint2\" keys in the message string,\n * and they will be replaced with constraint values if they exist.\n * Message can be either string, either a function that returns a string.\n * Second option allows to use values and custom messages depend of them.\n */\n message?: string | ((value?: any, constraint1?: any, constraint2?: any) => string);\n\n /**\n * Specifies if validated value is an array and each of its item must be validated.\n */\n each?: boolean;\n\n /**\n * Indicates if validation must be performed always, no matter of validation groups used.\n */\n always?: boolean;\n\n /**\n * Validation groups used for this validation.\n */\n groups?: string[];\n\n /**\n * Specific validation type options.\n */\n options?: any;\n }[];\n };\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation-schema/ValidationSchemaToMetadataTransformer.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation-schema/ValidationSchemaToMetadataTransformer.js new file mode 100644 index 00000000..6df0a64d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation-schema/ValidationSchemaToMetadataTransformer.js @@ -0,0 +1,34 @@ +import { ValidationMetadata } from '../metadata/ValidationMetadata'; +/** + * Used to transform validation schemas to validation metadatas. + */ +var ValidationSchemaToMetadataTransformer = /** @class */ (function () { + function ValidationSchemaToMetadataTransformer() { + } + ValidationSchemaToMetadataTransformer.prototype.transform = function (schema) { + var metadatas = []; + Object.keys(schema.properties).forEach(function (property) { + schema.properties[property].forEach(function (validation) { + var validationOptions = { + message: validation.message, + groups: validation.groups, + always: validation.always, + each: validation.each, + }; + var args = { + type: validation.type, + target: schema.name, + propertyName: property, + constraints: validation.constraints, + validationTypeOptions: validation.options, + validationOptions: validationOptions, + }; + metadatas.push(new ValidationMetadata(args)); + }); + }); + return metadatas; + }; + return ValidationSchemaToMetadataTransformer; +}()); +export { ValidationSchemaToMetadataTransformer }; +//# sourceMappingURL=ValidationSchemaToMetadataTransformer.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation-schema/ValidationSchemaToMetadataTransformer.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation-schema/ValidationSchemaToMetadataTransformer.js.map new file mode 100644 index 00000000..8747e36d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation-schema/ValidationSchemaToMetadataTransformer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationSchemaToMetadataTransformer.js","sourceRoot":"","sources":["../../../src/validation-schema/ValidationSchemaToMetadataTransformer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAIpE;;GAEG;AACH;IAAA;IAwBA,CAAC;IAvBC,yDAAS,GAAT,UAAU,MAAwB;QAChC,IAAM,SAAS,GAAyB,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,UAAA,QAAQ;YAC7C,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAA,UAAU;gBAC5C,IAAM,iBAAiB,GAAsB;oBAC3C,OAAO,EAAE,UAAU,CAAC,OAAO;oBAC3B,MAAM,EAAE,UAAU,CAAC,MAAM;oBACzB,MAAM,EAAE,UAAU,CAAC,MAAM;oBACzB,IAAI,EAAE,UAAU,CAAC,IAAI;iBACtB,CAAC;gBACF,IAAM,IAAI,GAA2B;oBACnC,IAAI,EAAE,UAAU,CAAC,IAAI;oBACrB,MAAM,EAAE,MAAM,CAAC,IAAI;oBACnB,YAAY,EAAE,QAAQ;oBACtB,WAAW,EAAE,UAAU,CAAC,WAAW;oBACnC,qBAAqB,EAAE,UAAU,CAAC,OAAO;oBACzC,iBAAiB,EAAE,iBAAiB;iBACrC,CAAC;gBACF,SAAS,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACnB,CAAC;IACH,4CAAC;AAAD,CAAC,AAxBD,IAwBC","sourcesContent":["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 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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationArguments.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationArguments.js new file mode 100644 index 00000000..e6b559f7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationArguments.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=ValidationArguments.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationArguments.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationArguments.js.map new file mode 100644 index 00000000..c2b0f6ff --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationArguments.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationArguments.js","sourceRoot":"","sources":["../../../src/validation/ValidationArguments.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Arguments being sent to message builders - user can create message either by simply returning a string,\n * either by returning a function that accepts MessageArguments and returns a message string built based on these arguments.\n */\nexport interface ValidationArguments {\n /**\n * Validating value.\n */\n value: any;\n\n /**\n * Constraints set by this validation type.\n */\n constraints: any[];\n\n /**\n * Name of the target that is being validated.\n */\n targetName: string;\n\n /**\n * Object that is being validated.\n */\n object: object;\n\n /**\n * Name of the object's property being validated.\n */\n property: string;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationError.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationError.js new file mode 100644 index 00000000..2d609851 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationError.js @@ -0,0 +1,50 @@ +/** + * Validation error description. + */ +var ValidationError = /** @class */ (function () { + function ValidationError() { + } + /** + * + * @param shouldDecorate decorate the message with ANSI formatter escape codes for better readability + * @param hasParent true when the error is a child of an another one + * @param parentPath path as string to the parent of this property + */ + ValidationError.prototype.toString = function (shouldDecorate, hasParent, parentPath) { + var _this = this; + if (shouldDecorate === void 0) { shouldDecorate = false; } + if (hasParent === void 0) { hasParent = false; } + if (parentPath === void 0) { parentPath = ""; } + var boldStart = shouldDecorate ? "\u001B[1m" : ""; + var boldEnd = shouldDecorate ? "\u001B[22m" : ""; + var propConstraintFailed = function (propertyName) { + return " - property ".concat(boldStart).concat(parentPath).concat(propertyName).concat(boldEnd, " has failed the following constraints: ").concat(boldStart).concat(Object.keys(_this.constraints).join(", ")).concat(boldEnd, " \n"); + }; + if (!hasParent) { + return ("An instance of ".concat(boldStart).concat(this.target ? this.target.constructor.name : 'an object').concat(boldEnd, " has failed the validation:\n") + + (this.constraints ? propConstraintFailed(this.property) : "") + + (this.children + ? this.children.map(function (childError) { return childError.toString(shouldDecorate, true, _this.property); }).join("") + : "")); + } + else { + // we format numbers as array indexes for better readability. + var formattedProperty_1 = Number.isInteger(+this.property) + ? "[".concat(this.property, "]") + : "".concat(parentPath ? "." : "").concat(this.property); + if (this.constraints) { + return propConstraintFailed(formattedProperty_1); + } + else { + return this.children + ? this.children + .map(function (childError) { return childError.toString(shouldDecorate, true, "".concat(parentPath).concat(formattedProperty_1)); }) + .join("") + : ""; + } + } + }; + return ValidationError; +}()); +export { ValidationError }; +//# sourceMappingURL=ValidationError.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationError.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationError.js.map new file mode 100644 index 00000000..f1120d06 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationError.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationError.js","sourceRoot":"","sources":["../../../src/validation/ValidationError.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;IAAA;IAgFA,CAAC;IAzCC;;;;;OAKG;IACH,kCAAQ,GAAR,UAAS,cAA+B,EAAE,SAA0B,EAAE,UAAuB;QAA7F,iBAkCC;QAlCQ,+BAAA,EAAA,sBAA+B;QAAE,0BAAA,EAAA,iBAA0B;QAAE,2BAAA,EAAA,eAAuB;QAC3F,IAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,WAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,IAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,YAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,IAAM,oBAAoB,GAAG,UAAC,YAAoB;YAChD,OAAA,sBAAe,SAAS,SAAG,UAAU,SAAG,YAAY,SAAG,OAAO,oDAA0C,SAAS,SAAG,MAAM,CAAC,IAAI,CAC7H,KAAI,CAAC,WAAW,CACjB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAG,OAAO,QAAK;QAF3B,CAE2B,CAAC;QAE9B,IAAI,CAAC,SAAS,EAAE;YACd,OAAO,CACL,yBAAkB,SAAS,SACzB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,SACvD,OAAO,kCAA+B;gBACzC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,CAAC,IAAI,CAAC,QAAQ;oBACZ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,EAAE,KAAI,CAAC,QAAQ,CAAC,EAAxD,CAAwD,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpG,CAAC,CAAC,EAAE,CAAC,CACR,CAAC;SACH;aAAM;YACL,6DAA6D;YAC7D,IAAM,mBAAiB,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACxD,CAAC,CAAC,WAAI,IAAI,CAAC,QAAQ,MAAG;gBACtB,CAAC,CAAC,UAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAG,IAAI,CAAC,QAAQ,CAAE,CAAC;YAE/C,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,OAAO,oBAAoB,CAAC,mBAAiB,CAAC,CAAC;aAChD;iBAAM;gBACL,OAAO,IAAI,CAAC,QAAQ;oBAClB,CAAC,CAAC,IAAI,CAAC,QAAQ;yBACV,GAAG,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,EAAE,UAAG,UAAU,SAAG,mBAAiB,CAAE,CAAC,EAA9E,CAA8E,CAAC;yBACjG,IAAI,CAAC,EAAE,CAAC;oBACb,CAAC,CAAC,EAAE,CAAC;aACR;SACF;IACH,CAAC;IACH,sBAAC;AAAD,CAAC,AAhFD,IAgFC","sourcesContent":["/**\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 */\n toString(shouldDecorate: boolean = false, hasParent: boolean = false, parentPath: string = ``): string {\n const boldStart = shouldDecorate ? `\\x1b[1m` : ``;\n const boldEnd = shouldDecorate ? `\\x1b[22m` : ``;\n const propConstraintFailed = (propertyName: string): string =>\n ` - property ${boldStart}${parentPath}${propertyName}${boldEnd} has failed the following constraints: ${boldStart}${Object.keys(\n this.constraints\n ).join(`, `)}${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.map(childError => childError.toString(shouldDecorate, true, this.property)).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 => childError.toString(shouldDecorate, true, `${parentPath}${formattedProperty}`))\n .join(``)\n : ``;\n }\n }\n }\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationExecutor.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationExecutor.js new file mode 100644 index 00000000..4949e5b9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationExecutor.js @@ -0,0 +1,334 @@ +import { ValidationError } from './ValidationError'; +import { ValidationTypes } from './ValidationTypes'; +import { ValidationUtils } from './ValidationUtils'; +import { isPromise, convertToArray } from '../utils'; +import { getMetadataStorage } from '../metadata/MetadataStorage'; +/** + * Executes validation over given object. + */ +var ValidationExecutor = /** @class */ (function () { + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + function ValidationExecutor(validator, validatorOptions) { + this.validator = validator; + this.validatorOptions = validatorOptions; + // ------------------------------------------------------------------------- + // Properties + // ------------------------------------------------------------------------- + this.awaitingPromises = []; + this.ignoreAsyncValidations = false; + // ------------------------------------------------------------------------- + // Private Properties + // ------------------------------------------------------------------------- + this.metadataStorage = getMetadataStorage(); + } + // ------------------------------------------------------------------------- + // Public Methods + // ------------------------------------------------------------------------- + ValidationExecutor.prototype.execute = function (object, targetSchema, validationErrors) { + var _this = this; + var _a; + /** + * If there is no metadata registered it means possibly the dependencies are not flatterned and + * more than one instance is used. + * + * TODO: This needs proper handling, forcing to use the same container or some other proper solution. + */ + if (!this.metadataStorage.hasValidationMetaData && ((_a = this.validatorOptions) === null || _a === void 0 ? void 0 : _a.enableDebugMessages) === true) { + console.warn("No metadata found. There is more than once class-validator version installed probably. You need to flatten your dependencies."); + } + var groups = this.validatorOptions ? this.validatorOptions.groups : undefined; + var strictGroups = (this.validatorOptions && this.validatorOptions.strictGroups) || false; + var always = (this.validatorOptions && this.validatorOptions.always) || false; + var targetMetadatas = this.metadataStorage.getTargetValidationMetadatas(object.constructor, targetSchema, always, strictGroups, groups); + var groupedMetadatas = this.metadataStorage.groupByPropertyName(targetMetadatas); + if (this.validatorOptions && this.validatorOptions.forbidUnknownValues && !targetMetadatas.length) { + var validationError = new ValidationError(); + if (!this.validatorOptions || + !this.validatorOptions.validationError || + this.validatorOptions.validationError.target === undefined || + this.validatorOptions.validationError.target === true) + validationError.target = object; + validationError.value = undefined; + validationError.property = undefined; + validationError.children = []; + validationError.constraints = { unknownValue: 'an unknown value was passed to the validate function' }; + validationErrors.push(validationError); + return; + } + if (this.validatorOptions && this.validatorOptions.whitelist) + this.whitelist(object, groupedMetadatas, validationErrors); + // General validation + Object.keys(groupedMetadatas).forEach(function (propertyName) { + var value = object[propertyName]; + var definedMetadatas = groupedMetadatas[propertyName].filter(function (metadata) { return metadata.type === ValidationTypes.IS_DEFINED; }); + var metadatas = groupedMetadatas[propertyName].filter(function (metadata) { return metadata.type !== ValidationTypes.IS_DEFINED && metadata.type !== ValidationTypes.WHITELIST; }); + if (value instanceof Promise && + metadatas.find(function (metadata) { return metadata.type === ValidationTypes.PROMISE_VALIDATION; })) { + _this.awaitingPromises.push(value.then(function (resolvedValue) { + _this.performValidations(object, resolvedValue, propertyName, definedMetadatas, metadatas, validationErrors); + })); + } + else { + _this.performValidations(object, value, propertyName, definedMetadatas, metadatas, validationErrors); + } + }); + }; + ValidationExecutor.prototype.whitelist = function (object, groupedMetadatas, validationErrors) { + var _this = this; + var notAllowedProperties = []; + Object.keys(object).forEach(function (propertyName) { + // does this property have no metadata? + if (!groupedMetadatas[propertyName] || groupedMetadatas[propertyName].length === 0) + notAllowedProperties.push(propertyName); + }); + if (notAllowedProperties.length > 0) { + if (this.validatorOptions && this.validatorOptions.forbidNonWhitelisted) { + // throw errors + notAllowedProperties.forEach(function (property) { + var _a; + var validationError = _this.generateValidationError(object, object[property], property); + validationError.constraints = (_a = {}, _a[ValidationTypes.WHITELIST] = "property ".concat(property, " should not exist"), _a); + validationError.children = undefined; + validationErrors.push(validationError); + }); + } + else { + // strip non allowed properties + notAllowedProperties.forEach(function (property) { return delete object[property]; }); + } + } + }; + ValidationExecutor.prototype.stripEmptyErrors = function (errors) { + var _this = this; + return errors.filter(function (error) { + if (error.children) { + error.children = _this.stripEmptyErrors(error.children); + } + if (Object.keys(error.constraints).length === 0) { + if (error.children.length === 0) { + return false; + } + else { + delete error.constraints; + } + } + return true; + }); + }; + // ------------------------------------------------------------------------- + // Private Methods + // ------------------------------------------------------------------------- + ValidationExecutor.prototype.performValidations = function (object, value, propertyName, definedMetadatas, metadatas, validationErrors) { + var customValidationMetadatas = metadatas.filter(function (metadata) { return metadata.type === ValidationTypes.CUSTOM_VALIDATION; }); + var nestedValidationMetadatas = metadatas.filter(function (metadata) { return metadata.type === ValidationTypes.NESTED_VALIDATION; }); + var conditionalValidationMetadatas = metadatas.filter(function (metadata) { return metadata.type === ValidationTypes.CONDITIONAL_VALIDATION; }); + var validationError = this.generateValidationError(object, value, propertyName); + validationErrors.push(validationError); + var canValidate = this.conditionalValidations(object, value, conditionalValidationMetadatas); + if (!canValidate) { + return; + } + // handle IS_DEFINED validation type the special way - it should work no matter skipUndefinedProperties/skipMissingProperties is set or not + this.customValidations(object, value, definedMetadatas, validationError); + this.mapContexts(object, value, definedMetadatas, validationError); + if (value === undefined && this.validatorOptions && this.validatorOptions.skipUndefinedProperties === true) { + return; + } + if (value === null && this.validatorOptions && this.validatorOptions.skipNullProperties === true) { + return; + } + if ((value === null || value === undefined) && + this.validatorOptions && + this.validatorOptions.skipMissingProperties === true) { + return; + } + this.customValidations(object, value, customValidationMetadatas, validationError); + this.nestedValidations(value, nestedValidationMetadatas, validationError.children); + this.mapContexts(object, value, metadatas, validationError); + this.mapContexts(object, value, customValidationMetadatas, validationError); + }; + ValidationExecutor.prototype.generateValidationError = function (object, value, propertyName) { + var validationError = new ValidationError(); + if (!this.validatorOptions || + !this.validatorOptions.validationError || + this.validatorOptions.validationError.target === undefined || + this.validatorOptions.validationError.target === true) + validationError.target = object; + if (!this.validatorOptions || + !this.validatorOptions.validationError || + this.validatorOptions.validationError.value === undefined || + this.validatorOptions.validationError.value === true) + validationError.value = value; + validationError.property = propertyName; + validationError.children = []; + validationError.constraints = {}; + return validationError; + }; + ValidationExecutor.prototype.conditionalValidations = function (object, value, metadatas) { + return metadatas + .map(function (metadata) { return metadata.constraints[0](object, value); }) + .reduce(function (resultA, resultB) { return resultA && resultB; }, true); + }; + ValidationExecutor.prototype.customValidations = function (object, value, metadatas, error) { + var _this = this; + metadatas.forEach(function (metadata) { + _this.metadataStorage.getTargetValidatorConstraints(metadata.constraintCls).forEach(function (customConstraintMetadata) { + if (customConstraintMetadata.async && _this.ignoreAsyncValidations) + return; + if (_this.validatorOptions && + _this.validatorOptions.stopAtFirstError && + Object.keys(error.constraints || {}).length > 0) + return; + var validationArguments = { + targetName: object.constructor ? object.constructor.name : undefined, + property: metadata.propertyName, + object: object, + value: value, + constraints: metadata.constraints, + }; + if (!metadata.each || !(Array.isArray(value) || value instanceof Set || value instanceof Map)) { + var validatedValue = customConstraintMetadata.instance.validate(value, validationArguments); + if (isPromise(validatedValue)) { + var promise = validatedValue.then(function (isValid) { + if (!isValid) { + var _a = _this.createValidationError(object, value, metadata, customConstraintMetadata), type = _a[0], message = _a[1]; + error.constraints[type] = message; + if (metadata.context) { + if (!error.contexts) { + error.contexts = {}; + } + error.contexts[type] = Object.assign(error.contexts[type] || {}, metadata.context); + } + } + }); + _this.awaitingPromises.push(promise); + } + else { + if (!validatedValue) { + var _a = _this.createValidationError(object, value, metadata, customConstraintMetadata), type = _a[0], message = _a[1]; + error.constraints[type] = message; + } + } + return; + } + // convert set and map into array + var arrayValue = convertToArray(value); + // Validation needs to be applied to each array item + var validatedSubValues = arrayValue.map(function (subValue) { + return customConstraintMetadata.instance.validate(subValue, validationArguments); + }); + var validationIsAsync = validatedSubValues.some(function (validatedSubValue) { + return isPromise(validatedSubValue); + }); + if (validationIsAsync) { + // Wrap plain values (if any) in promises, so that all are async + var asyncValidatedSubValues = validatedSubValues.map(function (validatedSubValue) { + return isPromise(validatedSubValue) ? validatedSubValue : Promise.resolve(validatedSubValue); + }); + var asyncValidationIsFinishedPromise = Promise.all(asyncValidatedSubValues).then(function (flatValidatedValues) { + var validationResult = flatValidatedValues.every(function (isValid) { return isValid; }); + if (!validationResult) { + var _a = _this.createValidationError(object, value, metadata, customConstraintMetadata), type = _a[0], message = _a[1]; + error.constraints[type] = message; + if (metadata.context) { + if (!error.contexts) { + error.contexts = {}; + } + error.contexts[type] = Object.assign(error.contexts[type] || {}, metadata.context); + } + } + }); + _this.awaitingPromises.push(asyncValidationIsFinishedPromise); + return; + } + var validationResult = validatedSubValues.every(function (isValid) { return isValid; }); + if (!validationResult) { + var _b = _this.createValidationError(object, value, metadata, customConstraintMetadata), type = _b[0], message = _b[1]; + error.constraints[type] = message; + } + }); + }); + }; + ValidationExecutor.prototype.nestedValidations = function (value, metadatas, errors) { + var _this = this; + if (value === void 0) { + return; + } + metadatas.forEach(function (metadata) { + var _a; + if (metadata.type !== ValidationTypes.NESTED_VALIDATION && metadata.type !== ValidationTypes.PROMISE_VALIDATION) { + return; + } + if (Array.isArray(value) || value instanceof Set || value instanceof Map) { + // Treats Set as an array - as index of Set value is value itself and it is common case to have Object as value + var arrayLikeValue = value instanceof Set ? Array.from(value) : value; + arrayLikeValue.forEach(function (subValue, index) { + _this.performValidations(value, subValue, index.toString(), [], metadatas, errors); + }); + } + else if (value instanceof Object) { + var targetSchema = typeof metadata.target === 'string' ? metadata.target : metadata.target.name; + _this.execute(value, targetSchema, errors); + } + else { + var error = new ValidationError(); + error.value = value; + error.property = metadata.propertyName; + error.target = metadata.target; + var _b = _this.createValidationError(metadata.target, value, metadata), type = _b[0], message = _b[1]; + error.constraints = (_a = {}, + _a[type] = message, + _a); + errors.push(error); + } + }); + }; + ValidationExecutor.prototype.mapContexts = function (object, value, metadatas, error) { + var _this = this; + return metadatas.forEach(function (metadata) { + if (metadata.context) { + var customConstraint = void 0; + if (metadata.type === ValidationTypes.CUSTOM_VALIDATION) { + var customConstraints = _this.metadataStorage.getTargetValidatorConstraints(metadata.constraintCls); + customConstraint = customConstraints[0]; + } + var type = _this.getConstraintType(metadata, customConstraint); + if (error.constraints[type]) { + if (!error.contexts) { + error.contexts = {}; + } + error.contexts[type] = Object.assign(error.contexts[type] || {}, metadata.context); + } + } + }); + }; + ValidationExecutor.prototype.createValidationError = function (object, value, metadata, customValidatorMetadata) { + var targetName = object.constructor ? object.constructor.name : undefined; + var type = this.getConstraintType(metadata, customValidatorMetadata); + var validationArguments = { + targetName: targetName, + property: metadata.propertyName, + object: object, + value: value, + constraints: metadata.constraints, + }; + var message = metadata.message || ''; + if (!metadata.message && + (!this.validatorOptions || (this.validatorOptions && !this.validatorOptions.dismissDefaultMessages))) { + if (customValidatorMetadata && customValidatorMetadata.instance.defaultMessage instanceof Function) { + message = customValidatorMetadata.instance.defaultMessage(validationArguments); + } + } + var messageString = ValidationUtils.replaceMessageSpecialTokens(message, validationArguments); + return [type, messageString]; + }; + ValidationExecutor.prototype.getConstraintType = function (metadata, customValidatorMetadata) { + var type = customValidatorMetadata && customValidatorMetadata.name ? customValidatorMetadata.name : metadata.type; + return type; + }; + return ValidationExecutor; +}()); +export { ValidationExecutor }; +//# sourceMappingURL=ValidationExecutor.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationExecutor.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationExecutor.js.map new file mode 100644 index 00000000..d0d962f1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationExecutor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationExecutor.js","sourceRoot":"","sources":["../../../src/validation/ValidationExecutor.ts"],"names":[],"mappings":"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","sourcesContent":["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[] = [];\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 metadata found. There is more than once class-validator version installed probably. You need to flatten your dependencies.`\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\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 && 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.children);\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) =>\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) =>\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\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[], errors: 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 }\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, errors);\n });\n } else if (value instanceof Object) {\n const targetSchema = typeof metadata.target === 'string' ? metadata.target : metadata.target.name;\n this.execute(value, targetSchema, errors);\n } else {\n const error = new ValidationError();\n error.value = value;\n error.property = metadata.propertyName;\n error.target = metadata.target as object;\n const [type, message] = this.createValidationError(metadata.target as object, value, metadata);\n error.constraints = {\n [type]: message,\n };\n errors.push(error);\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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationTypes.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationTypes.js new file mode 100644 index 00000000..f3fc5c1a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationTypes.js @@ -0,0 +1,28 @@ +/** + * Validation types. + */ +var ValidationTypes = /** @class */ (function () { + function ValidationTypes() { + } + /** + * Checks if validation type is valid. + */ + ValidationTypes.isValid = function (type) { + var _this = this; + return (type !== 'isValid' && + type !== 'getMessage' && + Object.keys(this) + .map(function (key) { return _this[key]; }) + .indexOf(type) !== -1); + }; + /* system */ + ValidationTypes.CUSTOM_VALIDATION = 'customValidation'; // done + ValidationTypes.NESTED_VALIDATION = 'nestedValidation'; // done + ValidationTypes.PROMISE_VALIDATION = 'promiseValidation'; // done + ValidationTypes.CONDITIONAL_VALIDATION = 'conditionalValidation'; // done + ValidationTypes.WHITELIST = 'whitelistValidation'; // done + ValidationTypes.IS_DEFINED = 'isDefined'; // done + return ValidationTypes; +}()); +export { ValidationTypes }; +//# sourceMappingURL=ValidationTypes.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationTypes.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationTypes.js.map new file mode 100644 index 00000000..ef73e030 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationTypes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationTypes.js","sourceRoot":"","sources":["../../../src/validation/ValidationTypes.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;IAAA;IAqBA,CAAC;IAZC;;OAEG;IACI,uBAAO,GAAd,UAAe,IAAY;QAA3B,iBAQC;QAPC,OAAO,CACL,IAAI,KAAK,SAAS;YAClB,IAAI,KAAK,YAAY;YACrB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;iBACd,GAAG,CAAC,UAAA,GAAG,IAAI,OAAC,KAAY,CAAC,GAAG,CAAC,EAAlB,CAAkB,CAAC;iBAC9B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACxB,CAAC;IACJ,CAAC;IAnBD,YAAY;IACL,iCAAiB,GAAG,kBAAkB,CAAC,CAAC,OAAO;IAC/C,iCAAiB,GAAG,kBAAkB,CAAC,CAAC,OAAO;IAC/C,kCAAkB,GAAG,mBAAmB,CAAC,CAAC,OAAO;IACjD,sCAAsB,GAAG,uBAAuB,CAAC,CAAC,OAAO;IACzD,yBAAS,GAAG,qBAAqB,CAAC,CAAC,OAAO;IAC1C,0BAAU,GAAG,WAAW,CAAC,CAAC,OAAO;IAc1C,sBAAC;CAAA,AArBD,IAqBC;SArBY,eAAe","sourcesContent":["/**\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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationUtils.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationUtils.js new file mode 100644 index 00000000..e226081f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationUtils.js @@ -0,0 +1,40 @@ +/** + * Convert the constraint to a string to be shown in an error + */ +export function constraintToString(constraint) { + if (Array.isArray(constraint)) { + return constraint.join(', '); + } + return "".concat(constraint); +} +var ValidationUtils = /** @class */ (function () { + function ValidationUtils() { + } + ValidationUtils.replaceMessageSpecialTokens = function (message, validationArguments) { + var messageString; + if (message instanceof Function) { + messageString = message(validationArguments); + } + else if (typeof message === 'string') { + messageString = message; + } + if (messageString && Array.isArray(validationArguments.constraints)) { + validationArguments.constraints.forEach(function (constraint, index) { + messageString = messageString.replace(new RegExp("\\$constraint".concat(index + 1), 'g'), constraintToString(constraint)); + }); + } + if (messageString && + validationArguments.value !== undefined && + validationArguments.value !== null && + typeof validationArguments.value === 'string') + messageString = messageString.replace(/\$value/g, validationArguments.value); + if (messageString) + messageString = messageString.replace(/\$property/g, validationArguments.property); + if (messageString) + messageString = messageString.replace(/\$target/g, validationArguments.targetName); + return messageString; + }; + return ValidationUtils; +}()); +export { ValidationUtils }; +//# sourceMappingURL=ValidationUtils.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationUtils.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationUtils.js.map new file mode 100644 index 00000000..ef32a244 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidationUtils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidationUtils.js","sourceRoot":"","sources":["../../../src/validation/ValidationUtils.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAmB;IACpD,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QAC7B,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;IAED,OAAO,UAAG,UAAU,CAAE,CAAC;AACzB,CAAC;AAED;IAAA;IAiCA,CAAC;IAhCQ,2CAA2B,GAAlC,UACE,OAAyD,EACzD,mBAAwC;QAExC,IAAI,aAAqB,CAAC;QAC1B,IAAI,OAAO,YAAY,QAAQ,EAAE;YAC/B,aAAa,GAAI,OAAiD,CAAC,mBAAmB,CAAC,CAAC;SACzF;aAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YACtC,aAAa,GAAG,OAAO,CAAC;SACzB;QAED,IAAI,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE;YACnE,mBAAmB,CAAC,WAAW,CAAC,OAAO,CAAC,UAAC,UAAU,EAAE,KAAK;gBACxD,aAAa,GAAG,aAAa,CAAC,OAAO,CACnC,IAAI,MAAM,CAAC,uBAAgB,KAAK,GAAG,CAAC,CAAE,EAAE,GAAG,CAAC,EAC5C,kBAAkB,CAAC,UAAU,CAAC,CAC/B,CAAC;YACJ,CAAC,CAAC,CAAC;SACJ;QAED,IACE,aAAa;YACb,mBAAmB,CAAC,KAAK,KAAK,SAAS;YACvC,mBAAmB,CAAC,KAAK,KAAK,IAAI;YAClC,OAAO,mBAAmB,CAAC,KAAK,KAAK,QAAQ;YAE7C,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC/E,IAAI,aAAa;YAAE,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACtG,IAAI,aAAa;YAAE,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAEtG,OAAO,aAAa,CAAC;IACvB,CAAC;IACH,sBAAC;AAAD,CAAC,AAjCD,IAiCC","sourcesContent":["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 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 typeof validationArguments.value === 'string'\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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/Validator.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/Validator.js new file mode 100644 index 00000000..604dc63a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/Validator.js @@ -0,0 +1,102 @@ +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +import { ValidationExecutor } from './ValidationExecutor'; +/** + * Validator performs validation of the given object based on its metadata. + */ +var Validator = /** @class */ (function () { + function Validator() { + } + /** + * Performs validation of the given object based on decorators or validation schema. + */ + Validator.prototype.validate = function (objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions) { + return this.coreValidate(objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions); + }; + /** + * Performs validation of the given object based on decorators or validation schema and reject on error. + */ + Validator.prototype.validateOrReject = function (objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions) { + return __awaiter(this, void 0, void 0, function () { + var errors; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.coreValidate(objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions)]; + case 1: + errors = _a.sent(); + if (errors.length) + return [2 /*return*/, Promise.reject(errors)]; + return [2 /*return*/]; + } + }); + }); + }; + /** + * Performs validation of the given object based on decorators or validation schema. + */ + Validator.prototype.validateSync = function (objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions) { + var object = typeof objectOrSchemaName === 'string' ? objectOrValidationOptions : objectOrSchemaName; + var options = typeof objectOrSchemaName === 'string' ? maybeValidatorOptions : objectOrValidationOptions; + var schema = typeof objectOrSchemaName === 'string' ? objectOrSchemaName : undefined; + var executor = new ValidationExecutor(this, options); + executor.ignoreAsyncValidations = true; + var validationErrors = []; + executor.execute(object, schema, validationErrors); + return executor.stripEmptyErrors(validationErrors); + }; + // ------------------------------------------------------------------------- + // Private Properties + // ------------------------------------------------------------------------- + /** + * Performs validation of the given object based on decorators or validation schema. + * Common method for `validateOrReject` and `validate` methods. + */ + Validator.prototype.coreValidate = function (objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions) { + var object = typeof objectOrSchemaName === 'string' ? objectOrValidationOptions : objectOrSchemaName; + var options = typeof objectOrSchemaName === 'string' ? maybeValidatorOptions : objectOrValidationOptions; + var schema = typeof objectOrSchemaName === 'string' ? objectOrSchemaName : undefined; + var executor = new ValidationExecutor(this, options); + var validationErrors = []; + executor.execute(object, schema, validationErrors); + return Promise.all(executor.awaitingPromises).then(function () { + return executor.stripEmptyErrors(validationErrors); + }); + }; + return Validator; +}()); +export { Validator }; +//# sourceMappingURL=Validator.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/Validator.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/Validator.js.map new file mode 100644 index 00000000..5f6bf1e5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/Validator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Validator.js","sourceRoot":"","sources":["../../../src/validation/Validator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D;;GAEG;AACH;IAAA;IAwGA,CAAC;IAzFC;;OAEG;IACH,4BAAQ,GAAR,UACE,kBAAmC,EACnC,yBAAqD,EACrD,qBAAwC;QAExC,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,yBAAyB,EAAE,qBAAqB,CAAC,CAAC;IACjG,CAAC;IAYD;;OAEG;IACG,oCAAgB,GAAtB,UACE,kBAAmC,EACnC,yBAAqD,EACrD,qBAAwC;;;;;4BAEzB,qBAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,yBAAyB,EAAE,qBAAqB,CAAC,EAAA;;wBAAtG,MAAM,GAAG,SAA6F;wBAC5G,IAAI,MAAM,CAAC,MAAM;4BAAE,sBAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAC;;;;;KAClD;IAaD;;OAEG;IACH,gCAAY,GAAZ,UACE,kBAAmC,EACnC,yBAAqD,EACrD,qBAAwC;QAExC,IAAM,MAAM,GAAG,OAAO,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAE,yBAAoC,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACnH,IAAM,OAAO,GACX,OAAO,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAE,yBAA+C,CAAC;QACpH,IAAM,MAAM,GAAG,OAAO,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;QAEvF,IAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACvD,QAAQ,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACvC,IAAM,gBAAgB,GAAsB,EAAE,CAAC;QAC/C,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;QACnD,OAAO,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IACrD,CAAC;IAED,4EAA4E;IAC5E,qBAAqB;IACrB,4EAA4E;IAC5E;;;OAGG;IACK,gCAAY,GAApB,UACE,kBAAmC,EACnC,yBAAqD,EACrD,qBAAwC;QAExC,IAAM,MAAM,GAAG,OAAO,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAE,yBAAoC,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACnH,IAAM,OAAO,GACX,OAAO,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAE,yBAA+C,CAAC;QACpH,IAAM,MAAM,GAAG,OAAO,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;QAEvF,IAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACvD,IAAM,gBAAgB,GAAsB,EAAE,CAAC;QAC/C,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;QAEnD,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC;YACjD,OAAO,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC;IACH,gBAAC;AAAD,CAAC,AAxGD,IAwGC","sourcesContent":["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;\n\n /**\n * Performs validation of the given object based on validation schema.\n */\n validate(schemaName: string, object: object, options?: ValidatorOptions): Promise;\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 {\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;\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;\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 {\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 {\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"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidatorConstraintInterface.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidatorConstraintInterface.js new file mode 100644 index 00000000..d053f5df --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidatorConstraintInterface.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=ValidatorConstraintInterface.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidatorConstraintInterface.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidatorConstraintInterface.js.map new file mode 100644 index 00000000..acc4adf6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidatorConstraintInterface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidatorConstraintInterface.js","sourceRoot":"","sources":["../../../src/validation/ValidatorConstraintInterface.ts"],"names":[],"mappings":"","sourcesContent":["import { ValidationArguments } from './ValidationArguments';\n/**\n * Custom validators must implement this interface to provide custom validation logic.\n */\nexport interface ValidatorConstraintInterface {\n /**\n * Method to be called to perform custom validation over given value.\n */\n validate(value: any, validationArguments?: ValidationArguments): Promise | boolean;\n\n /**\n * Gets default message when validation for this constraint fail.\n */\n defaultMessage?(validationArguments?: ValidationArguments): string;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidatorOptions.js b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidatorOptions.js new file mode 100644 index 00000000..4dfdf015 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidatorOptions.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=ValidatorOptions.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidatorOptions.js.map b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidatorOptions.js.map new file mode 100644 index 00000000..40e2172b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/esm5/validation/ValidatorOptions.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ValidatorOptions.js","sourceRoot":"","sources":["../../../src/validation/ValidatorOptions.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Options passed to validator during validation.\n */\nexport interface ValidatorOptions {\n /**\n * If set to true then class-validator will print extra warning messages to the console when something is not right.\n */\n enableDebugMessages?: boolean;\n\n /**\n * If set to true then validator will skip validation of all properties that are undefined in the validating object.\n */\n skipUndefinedProperties?: boolean;\n\n /**\n * If set to true then validator will skip validation of all properties that are null in the validating object.\n */\n skipNullProperties?: boolean;\n\n /**\n * If set to true then validator will skip validation of all properties that are null or undefined in the validating object.\n */\n skipMissingProperties?: boolean;\n\n /**\n * If set to true validator will strip validated object of any properties that do not have any decorators.\n *\n * Tip: if no other decorator is suitable for your property use @Allow decorator.\n */\n whitelist?: boolean;\n\n /**\n * If set to true, instead of stripping non-whitelisted properties validator will throw an error\n */\n forbidNonWhitelisted?: boolean;\n\n /**\n * Groups to be used during validation of the object.\n */\n groups?: string[];\n\n /**\n * Set default for `always` option of decorators. Default can be overridden in decorator options.\n */\n always?: boolean;\n\n /**\n * If [groups]{@link ValidatorOptions#groups} is not given or is empty,\n * ignore decorators with at least one group.\n */\n strictGroups?: boolean;\n\n /**\n * If set to true, the validation will not use default messages.\n * Error message always will be undefined if its not explicitly set.\n */\n dismissDefaultMessages?: boolean;\n\n /**\n * ValidationError special options.\n */\n validationError?: {\n /**\n * Indicates if target should be exposed in ValidationError.\n */\n target?: boolean;\n\n /**\n * Indicates if validated value should be exposed in ValidationError.\n */\n value?: boolean;\n };\n\n /**\n * Settings true will cause fail validation of unknown objects.\n */\n forbidUnknownValues?: boolean;\n\n /**\n * When set to true, validation of the given property will stop after encountering the first error. Defaults to false.\n */\n stopAtFirstError?: boolean;\n}\n"]} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/package.json b/srcs/requirements/nestjs/api_back/node_modules/class-validator/package.json new file mode 100644 index 00000000..3da95036 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/package.json @@ -0,0 +1,26 @@ +{ + "name": "class-validator", + "version": "0.13.2", + "description": "Decorator-based property validation for classes.", + "author": "TypeStack contributors", + "license": "MIT", + "sideEffects": false, + "main": "./cjs/index.js", + "module": "./esm5/index.js", + "es2015": "./esm2015/index.js", + "typings": "./types/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/typestack/class-validator.git" + }, + "tags": [ + "validator", + "validation", + "decorators", + "typescript" + ], + "dependencies": { + "libphonenumber-js": "^1.9.43", + "validator": "^13.7.0" + } +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/container.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/container.d.ts new file mode 100644 index 00000000..ef408645 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/container.d.ts @@ -0,0 +1,25 @@ +/** + * Container options. + */ +export interface UseContainerOptions { + /** + * If set to true, then default container will be used in the case if given container haven't returned anything. + */ + fallback?: boolean; + /** + * If set to true, then default container will be used in the case if given container thrown an exception. + */ + fallbackOnErrors?: boolean; +} +/** + * Sets container to be used by this library. + */ +export declare function useContainer(iocContainer: { + get(someClass: any): any; +}, options?: UseContainerOptions): void; +/** + * Gets the IOC container used by this library. + */ +export declare function getFromContainer(someClass: { + new (...args: any[]): T; +} | Function): T; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/ValidationOptions.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/ValidationOptions.d.ts new file mode 100644 index 00000000..d1742671 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/ValidationOptions.d.ts @@ -0,0 +1,25 @@ +import { ValidationArguments } from '../validation/ValidationArguments'; +/** + * Options used to pass to validation decorators. + */ +export interface ValidationOptions { + /** + * Specifies if validated value is an array and each of its items must be validated. + */ + each?: boolean; + /** + * Error message to be used on validation fail. + * Message can be either string or a function that returns a string. + */ + message?: string | ((validationArguments: ValidationArguments) => string); + /** + * Validation groups used for this validation. + */ + groups?: string[]; + /** + * Indicates if validation must be performed always, no matter of validation groups used. + */ + always?: boolean; + context?: any; +} +export declare function isValidationOptions(val: any): val is ValidationOptions; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/array/ArrayContains.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/array/ArrayContains.d.ts new file mode 100644 index 00000000..43cf8a9d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/array/ArrayContains.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const ARRAY_CONTAINS = "arrayContains"; +/** + * Checks if array contains all values from the given array of values. + * If null or undefined is given then this function returns false. + */ +export declare function arrayContains(array: unknown, values: any[]): boolean; +/** + * Checks if array contains all values from the given array of values. + * If null or undefined is given then this function returns false. + */ +export declare function ArrayContains(values: any[], validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/array/ArrayMaxSize.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/array/ArrayMaxSize.d.ts new file mode 100644 index 00000000..0fa773f2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/array/ArrayMaxSize.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const ARRAY_MAX_SIZE = "arrayMaxSize"; +/** + * Checks if the array's length is less or equal to the specified number. + * If null or undefined is given then this function returns false. + */ +export declare function arrayMaxSize(array: unknown, max: number): boolean; +/** + * Checks if the array's length is less or equal to the specified number. + * If null or undefined is given then this function returns false. + */ +export declare function ArrayMaxSize(max: number, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/array/ArrayMinSize.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/array/ArrayMinSize.d.ts new file mode 100644 index 00000000..66df2c0e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/array/ArrayMinSize.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const ARRAY_MIN_SIZE = "arrayMinSize"; +/** + * Checks if the array's length is greater than or equal to the specified number. + * If null or undefined is given then this function returns false. + */ +export declare function arrayMinSize(array: unknown, min: number): boolean; +/** + * Checks if the array's length is greater than or equal to the specified number. + * If null or undefined is given then this function returns false. + */ +export declare function ArrayMinSize(min: number, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/array/ArrayNotContains.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/array/ArrayNotContains.d.ts new file mode 100644 index 00000000..cae551eb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/array/ArrayNotContains.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const ARRAY_NOT_CONTAINS = "arrayNotContains"; +/** + * Checks if array does not contain any of the given values. + * If null or undefined is given then this function returns false. + */ +export declare function arrayNotContains(array: unknown, values: any[]): boolean; +/** + * Checks if array does not contain any of the given values. + * If null or undefined is given then this function returns false. + */ +export declare function ArrayNotContains(values: any[], validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/array/ArrayNotEmpty.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/array/ArrayNotEmpty.d.ts new file mode 100644 index 00000000..6ce88adc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/array/ArrayNotEmpty.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const ARRAY_NOT_EMPTY = "arrayNotEmpty"; +/** + * Checks if given array is not empty. + * If null or undefined is given then this function returns false. + */ +export declare function arrayNotEmpty(array: unknown): boolean; +/** + * Checks if given array is not empty. + * If null or undefined is given then this function returns false. + */ +export declare function ArrayNotEmpty(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/array/ArrayUnique.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/array/ArrayUnique.d.ts new file mode 100644 index 00000000..437f957b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/array/ArrayUnique.d.ts @@ -0,0 +1,13 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const ARRAY_UNIQUE = "arrayUnique"; +export declare type ArrayUniqueIdentifier = (o: T) => any; +/** + * Checks if all array's values are unique. Comparison for objects is reference-based. + * If null or undefined is given then this function returns false. + */ +export declare function arrayUnique(array: unknown[], identifier?: ArrayUniqueIdentifier): boolean; +/** + * Checks if all array's values are unique. Comparison for objects is reference-based. + * If null or undefined is given then this function returns false. + */ +export declare function ArrayUnique(identifierOrOptions?: ArrayUniqueIdentifier | ValidationOptions, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/Allow.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/Allow.d.ts new file mode 100644 index 00000000..65166054 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/Allow.d.ts @@ -0,0 +1,5 @@ +import { ValidationOptions } from '../ValidationOptions'; +/** + * If object has both allowed and not allowed properties a validation error will be thrown. + */ +export declare function Allow(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/Equals.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/Equals.d.ts new file mode 100644 index 00000000..266f9635 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/Equals.d.ts @@ -0,0 +1,10 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const EQUALS = "equals"; +/** + * Checks if value matches ("===") the comparison. + */ +export declare function equals(value: unknown, comparison: unknown): boolean; +/** + * Checks if value matches ("===") the comparison. + */ +export declare function Equals(comparison: any, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsDefined.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsDefined.d.ts new file mode 100644 index 00000000..7d38bda9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsDefined.d.ts @@ -0,0 +1,10 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_DEFINED: string; +/** + * Checks if value is defined (!== undefined, !== null). + */ +export declare function isDefined(value: any): boolean; +/** + * Checks if value is defined (!== undefined, !== null). + */ +export declare function IsDefined(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsEmpty.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsEmpty.d.ts new file mode 100644 index 00000000..b2bc39e6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsEmpty.d.ts @@ -0,0 +1,10 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_EMPTY = "isEmpty"; +/** + * Checks if given value is empty (=== '', === null, === undefined). + */ +export declare function isEmpty(value: unknown): boolean; +/** + * Checks if given value is empty (=== '', === null, === undefined). + */ +export declare function IsEmpty(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsIn.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsIn.d.ts new file mode 100644 index 00000000..21dfe62c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsIn.d.ts @@ -0,0 +1,10 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_IN = "isIn"; +/** + * Checks if given value is in a array of allowed values. + */ +export declare function isIn(value: unknown, possibleValues: readonly unknown[]): boolean; +/** + * Checks if given value is in a array of allowed values. + */ +export declare function IsIn(values: readonly any[], validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsLatLong.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsLatLong.d.ts new file mode 100644 index 00000000..33274d9e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsLatLong.d.ts @@ -0,0 +1,10 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_LATLONG = "isLatLong"; +/** + * Checks if a value is string in format a "latitude,longitude". + */ +export declare function isLatLong(value: string): boolean; +/** + * Checks if a value is string in format a "latitude,longitude". + */ +export declare function IsLatLong(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsLatitude.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsLatitude.d.ts new file mode 100644 index 00000000..9f290719 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsLatitude.d.ts @@ -0,0 +1,10 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_LATITUDE = "isLatitude"; +/** + * Checks if a given value is a latitude. + */ +export declare function isLatitude(value: string): boolean; +/** + * Checks if a given value is a latitude. + */ +export declare function IsLatitude(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsLongitude.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsLongitude.d.ts new file mode 100644 index 00000000..2f8ab23f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsLongitude.d.ts @@ -0,0 +1,10 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_LONGITUDE = "isLongitude"; +/** + * Checks if a given value is a longitude. + */ +export declare function isLongitude(value: string): boolean; +/** + * Checks if a given value is a longitude. + */ +export declare function IsLongitude(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsNotEmpty.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsNotEmpty.d.ts new file mode 100644 index 00000000..01aec186 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsNotEmpty.d.ts @@ -0,0 +1,10 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_NOT_EMPTY = "isNotEmpty"; +/** + * Checks if given value is not empty (!== '', !== null, !== undefined). + */ +export declare function isNotEmpty(value: unknown): boolean; +/** + * Checks if given value is not empty (!== '', !== null, !== undefined). + */ +export declare function IsNotEmpty(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsNotIn.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsNotIn.d.ts new file mode 100644 index 00000000..8d5be666 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsNotIn.d.ts @@ -0,0 +1,10 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_NOT_IN = "isNotIn"; +/** + * Checks if given value not in a array of allowed values. + */ +export declare function isNotIn(value: unknown, possibleValues: readonly unknown[]): boolean; +/** + * Checks if given value not in a array of allowed values. + */ +export declare function IsNotIn(values: readonly any[], validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsOptional.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsOptional.d.ts new file mode 100644 index 00000000..47d58aef --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/IsOptional.d.ts @@ -0,0 +1,5 @@ +import { ValidationOptions } from '../ValidationOptions'; +/** + * Checks if value is missing and if so, ignores all validators. + */ +export declare function IsOptional(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/NotEquals.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/NotEquals.d.ts new file mode 100644 index 00000000..9bb18fab --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/NotEquals.d.ts @@ -0,0 +1,10 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const NOT_EQUALS = "notEquals"; +/** + * Checks if value does not match ("!==") the comparison. + */ +export declare function notEquals(value: unknown, comparison: unknown): boolean; +/** + * Checks if value does not match ("!==") the comparison. + */ +export declare function NotEquals(comparison: any, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/Validate.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/Validate.d.ts new file mode 100644 index 00000000..1857963f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/Validate.d.ts @@ -0,0 +1,14 @@ +import { ValidationOptions } from '../ValidationOptions'; +/** + * Registers custom validator class. + */ +export declare function ValidatorConstraint(options?: { + name?: string; + async?: boolean; +}): (target: Function) => void; +/** + * Performs validation based on the given custom validation class. + * Validation class must be decorated with ValidatorConstraint decorator. + */ +export declare function Validate(constraintClass: Function, validationOptions?: ValidationOptions): PropertyDecorator; +export declare function Validate(constraintClass: Function, constraints?: any[], validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/ValidateBy.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/ValidateBy.d.ts new file mode 100644 index 00000000..7568fdb1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/ValidateBy.d.ts @@ -0,0 +1,11 @@ +import { ValidationOptions } from '../ValidationOptions'; +import { ValidationArguments } from '../../validation/ValidationArguments'; +import { ValidatorConstraintInterface } from '../../validation/ValidatorConstraintInterface'; +export interface ValidateByOptions { + name: string; + constraints?: any[]; + validator: ValidatorConstraintInterface | Function; + async?: boolean; +} +export declare function buildMessage(impl: (eachPrefix: string, args?: ValidationArguments) => string, validationOptions?: ValidationOptions): (validationArguments?: ValidationArguments) => string; +export declare function ValidateBy(options: ValidateByOptions, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/ValidateIf.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/ValidateIf.d.ts new file mode 100644 index 00000000..de2c4472 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/ValidateIf.d.ts @@ -0,0 +1,5 @@ +import { ValidationOptions } from '../ValidationOptions'; +/** + * Ignores the other validators on a property when the provided condition function returns false. + */ +export declare function ValidateIf(condition: (object: any, value: any) => boolean, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/ValidateNested.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/ValidateNested.d.ts new file mode 100644 index 00000000..667af5f5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/ValidateNested.d.ts @@ -0,0 +1,5 @@ +import { ValidationOptions } from '../ValidationOptions'; +/** + * Objects / object arrays marked with this decorator will also be validated. + */ +export declare function ValidateNested(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/ValidatePromise.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/ValidatePromise.d.ts new file mode 100644 index 00000000..c4032a08 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/common/ValidatePromise.d.ts @@ -0,0 +1,5 @@ +import { ValidationOptions } from '../ValidationOptions'; +/** + * Resolve promise before validation + */ +export declare function ValidatePromise(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/date/MaxDate.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/date/MaxDate.d.ts new file mode 100644 index 00000000..056d3bdc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/date/MaxDate.d.ts @@ -0,0 +1,10 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const MAX_DATE = "maxDate"; +/** + * Checks if the value is a date that's before the specified date. + */ +export declare function maxDate(date: unknown, maxDate: Date): boolean; +/** + * Checks if the value is a date that's after the specified date. + */ +export declare function MaxDate(date: Date, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/date/MinDate.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/date/MinDate.d.ts new file mode 100644 index 00000000..52c13fbd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/date/MinDate.d.ts @@ -0,0 +1,10 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const MIN_DATE = "minDate"; +/** + * Checks if the value is a date that's after the specified date. + */ +export declare function minDate(date: unknown, minDate: Date): boolean; +/** + * Checks if the value is a date that's after the specified date. + */ +export declare function MinDate(date: Date, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/decorators.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/decorators.d.ts new file mode 100644 index 00000000..ca6b2f1a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/decorators.d.ts @@ -0,0 +1,106 @@ +export * from './common/Allow'; +export * from './common/IsDefined'; +export * from './common/IsOptional'; +export * from './common/Validate'; +export * from './common/ValidateBy'; +export * from './common/ValidateIf'; +export * from './common/ValidateNested'; +export * from './common/ValidatePromise'; +export * from './common/IsLatLong'; +export * from './common/IsLatitude'; +export * from './common/IsLongitude'; +export * from './common/Equals'; +export * from './common/NotEquals'; +export * from './common/IsEmpty'; +export * from './common/IsNotEmpty'; +export * from './common/IsIn'; +export * from './common/IsNotIn'; +export * from './number/IsDivisibleBy'; +export * from './number/IsPositive'; +export * from './number/IsNegative'; +export * from './number/Max'; +export * from './number/Min'; +export * from './date/MinDate'; +export * from './date/MaxDate'; +export * from './string/Contains'; +export * from './string/NotContains'; +export * from './string/IsAlpha'; +export * from './string/IsAlphanumeric'; +export * from './string/IsDecimal'; +export * from './string/IsAscii'; +export * from './string/IsBase64'; +export * from './string/IsByteLength'; +export * from './string/IsCreditCard'; +export * from './string/IsCurrency'; +export * from './string/IsEmail'; +export * from './string/IsFQDN'; +export * from './string/IsFullWidth'; +export * from './string/IsHalfWidth'; +export * from './string/IsVariableWidth'; +export * from './string/IsHexColor'; +export * from './string/IsHexadecimal'; +export * from './string/IsMacAddress'; +export * from './string/IsIP'; +export * from './string/IsPort'; +export * from './string/IsISBN'; +export * from './string/IsISIN'; +export * from './string/IsISO8601'; +export * from './string/IsJSON'; +export * from './string/IsJWT'; +export * from './string/IsLowercase'; +export * from './string/IsMobilePhone'; +export * from './string/IsISO31661Alpha2'; +export * from './string/IsISO31661Alpha3'; +export * from './string/IsMongoId'; +export * from './string/IsMultibyte'; +export * from './string/IsSurrogatePair'; +export * from './string/IsUrl'; +export * from './string/IsUUID'; +export * from './string/IsFirebasePushId'; +export * from './string/IsUppercase'; +export * from './string/Length'; +export * from './string/MaxLength'; +export * from './string/MinLength'; +export * from './string/Matches'; +export * from './string/IsPhoneNumber'; +export * from './string/IsMilitaryTime'; +export * from './string/IsHash'; +export * from './string/IsISSN'; +export * from './string/IsDateString'; +export * from './string/IsBooleanString'; +export * from './string/IsNumberString'; +export * from './string/IsBase32'; +export * from './string/IsBIC'; +export * from './string/IsBtcAddress'; +export * from './string/IsDataURI'; +export * from './string/IsEAN'; +export * from './string/IsEthereumAddress'; +export * from './string/IsHSL'; +export * from './string/IsIBAN'; +export * from './string/IsIdentityCard'; +export * from './string/IsISRC'; +export * from './string/IsLocale'; +export * from './string/IsMagnetURI'; +export * from './string/IsMimeType'; +export * from './string/IsOctal'; +export * from './string/IsPassportNumber'; +export * from './string/IsPostalCode'; +export * from './string/IsRFC3339'; +export * from './string/IsRgbColor'; +export * from './string/IsSemVer'; +export * from './typechecker/IsBoolean'; +export * from './typechecker/IsDate'; +export * from './typechecker/IsNumber'; +export * from './typechecker/IsEnum'; +export * from './typechecker/IsInt'; +export * from './typechecker/IsString'; +export * from './typechecker/IsArray'; +export * from './typechecker/IsObject'; +export * from './array/ArrayContains'; +export * from './array/ArrayNotContains'; +export * from './array/ArrayNotEmpty'; +export * from './array/ArrayMinSize'; +export * from './array/ArrayMaxSize'; +export * from './array/ArrayUnique'; +export * from './object/IsNotEmptyObject'; +export * from './object/IsInstance'; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/number/IsDivisibleBy.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/number/IsDivisibleBy.d.ts new file mode 100644 index 00000000..4e613384 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/number/IsDivisibleBy.d.ts @@ -0,0 +1,10 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_DIVISIBLE_BY = "isDivisibleBy"; +/** + * Checks if value is a number that's divisible by another. + */ +export declare function isDivisibleBy(value: unknown, num: number): boolean; +/** + * Checks if value is a number that's divisible by another. + */ +export declare function IsDivisibleBy(num: number, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/number/IsNegative.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/number/IsNegative.d.ts new file mode 100644 index 00000000..69982938 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/number/IsNegative.d.ts @@ -0,0 +1,10 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_NEGATIVE = "isNegative"; +/** + * Checks if the value is a negative number smaller than zero. + */ +export declare function isNegative(value: unknown): boolean; +/** + * Checks if the value is a negative number smaller than zero. + */ +export declare function IsNegative(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/number/IsPositive.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/number/IsPositive.d.ts new file mode 100644 index 00000000..998dbacd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/number/IsPositive.d.ts @@ -0,0 +1,10 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_POSITIVE = "isPositive"; +/** + * Checks if the value is a positive number greater than zero. + */ +export declare function isPositive(value: unknown): boolean; +/** + * Checks if the value is a positive number greater than zero. + */ +export declare function IsPositive(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/number/Max.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/number/Max.d.ts new file mode 100644 index 00000000..b8acb8b0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/number/Max.d.ts @@ -0,0 +1,10 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const MAX = "max"; +/** + * Checks if the first number is less than or equal to the second. + */ +export declare function max(num: unknown, max: number): boolean; +/** + * Checks if the first number is less than or equal to the second. + */ +export declare function Max(maxValue: number, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/number/Min.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/number/Min.d.ts new file mode 100644 index 00000000..5b00166a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/number/Min.d.ts @@ -0,0 +1,10 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const MIN = "min"; +/** + * Checks if the first number is greater than or equal to the second. + */ +export declare function min(num: unknown, min: number): boolean; +/** + * Checks if the first number is greater than or equal to the second. + */ +export declare function Min(minValue: number, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/object/IsInstance.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/object/IsInstance.d.ts new file mode 100644 index 00000000..382b2a6b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/object/IsInstance.d.ts @@ -0,0 +1,10 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_INSTANCE = "isInstance"; +/** + * Checks if the value is an instance of the specified object. + */ +export declare function isInstance(object: unknown, targetTypeConstructor: new (...args: any[]) => any): boolean; +/** + * Checks if the value is an instance of the specified object. + */ +export declare function IsInstance(targetType: new (...args: any[]) => any, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/object/IsNotEmptyObject.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/object/IsNotEmptyObject.d.ts new file mode 100644 index 00000000..8c25b2f5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/object/IsNotEmptyObject.d.ts @@ -0,0 +1,16 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_NOT_EMPTY_OBJECT = "isNotEmptyObject"; +/** + * Checks if the value is valid Object & not empty. + * Returns false if the value is not an object or an empty valid object. + */ +export declare function isNotEmptyObject(value: unknown, options?: { + nullable?: boolean; +}): boolean; +/** + * Checks if the value is valid Object & not empty. + * Returns false if the value is not an object or an empty valid object. + */ +export declare function IsNotEmptyObject(options?: { + nullable?: boolean; +}, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/Contains.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/Contains.d.ts new file mode 100644 index 00000000..656b20f1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/Contains.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const CONTAINS = "contains"; +/** + * Checks if the string contains the seed. + * If given value is not a string, then it returns false. + */ +export declare function contains(value: unknown, seed: string): boolean; +/** + * Checks if the string contains the seed. + * If given value is not a string, then it returns false. + */ +export declare function Contains(seed: string, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsAlpha.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsAlpha.d.ts new file mode 100644 index 00000000..6201e3a9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsAlpha.d.ts @@ -0,0 +1,13 @@ +import { ValidationOptions } from '../ValidationOptions'; +import ValidatorJS from 'validator'; +export declare const IS_ALPHA = "isAlpha"; +/** + * Checks if the string contains only letters (a-zA-Z). + * If given value is not a string, then it returns false. + */ +export declare function isAlpha(value: unknown, locale?: ValidatorJS.AlphaLocale): boolean; +/** + * Checks if the string contains only letters (a-zA-Z). + * If given value is not a string, then it returns false. + */ +export declare function IsAlpha(locale?: string, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsAlphanumeric.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsAlphanumeric.d.ts new file mode 100644 index 00000000..18184d75 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsAlphanumeric.d.ts @@ -0,0 +1,13 @@ +import { ValidationOptions } from '../ValidationOptions'; +import ValidatorJS from 'validator'; +export declare const IS_ALPHANUMERIC = "isAlphanumeric"; +/** + * Checks if the string contains only letters and numbers. + * If given value is not a string, then it returns false. + */ +export declare function isAlphanumeric(value: unknown, locale?: ValidatorJS.AlphanumericLocale): boolean; +/** + * Checks if the string contains only letters and numbers. + * If given value is not a string, then it returns false. + */ +export declare function IsAlphanumeric(locale?: string, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsAscii.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsAscii.d.ts new file mode 100644 index 00000000..0cabfafb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsAscii.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_ASCII = "isAscii"; +/** + * Checks if the string contains ASCII chars only. + * If given value is not a string, then it returns false. + */ +export declare function isAscii(value: unknown): boolean; +/** + * Checks if the string contains ASCII chars only. + * If given value is not a string, then it returns false. + */ +export declare function IsAscii(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsBIC.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsBIC.d.ts new file mode 100644 index 00000000..cc7671bd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsBIC.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_BIC = "isBIC"; +/** + * Check if a string is a BIC (Bank Identification Code) or SWIFT code. + * If given value is not a string, then it returns false. + */ +export declare function isBIC(value: unknown): boolean; +/** + * Check if a string is a BIC (Bank Identification Code) or SWIFT code. + * If given value is not a string, then it returns false. + */ +export declare function IsBIC(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsBase32.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsBase32.d.ts new file mode 100644 index 00000000..cfa4e22d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsBase32.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_BASE32 = "isBase32"; +/** + * Checks if a string is base32 encoded. + * If given value is not a string, then it returns false. + */ +export declare function isBase32(value: unknown): boolean; +/** + * Check if a string is base32 encoded. + * If given value is not a string, then it returns false. + */ +export declare function IsBase32(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsBase64.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsBase64.d.ts new file mode 100644 index 00000000..b5edcfb2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsBase64.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_BASE64 = "isBase64"; +/** + * Checks if a string is base64 encoded. + * If given value is not a string, then it returns false. + */ +export declare function isBase64(value: unknown): boolean; +/** + * Checks if a string is base64 encoded. + * If given value is not a string, then it returns false. + */ +export declare function IsBase64(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsBooleanString.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsBooleanString.d.ts new file mode 100644 index 00000000..cb4cf6b1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsBooleanString.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_BOOLEAN_STRING = "isBooleanString"; +/** + * Checks if a string is a boolean. + * If given value is not a string, then it returns false. + */ +export declare function isBooleanString(value: unknown): boolean; +/** + * Checks if a string is a boolean. + * If given value is not a string, then it returns false. + */ +export declare function IsBooleanString(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsBtcAddress.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsBtcAddress.d.ts new file mode 100644 index 00000000..3548b9ad --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsBtcAddress.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_BTC_ADDRESS = "isBtcAddress"; +/** + * Check if the string is a valid BTC address. + * If given value is not a string, then it returns false. + */ +export declare function isBtcAddress(value: unknown): boolean; +/** + * Check if the string is a valid BTC address. + * If given value is not a string, then it returns false. + */ +export declare function IsBtcAddress(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsByteLength.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsByteLength.d.ts new file mode 100644 index 00000000..2bf60594 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsByteLength.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_BYTE_LENGTH = "isByteLength"; +/** + * Checks if the string's length (in bytes) falls in a range. + * If given value is not a string, then it returns false. + */ +export declare function isByteLength(value: unknown, min: number, max?: number): boolean; +/** + * Checks if the string's length (in bytes) falls in a range. + * If given value is not a string, then it returns false. + */ +export declare function IsByteLength(min: number, max?: number, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsCreditCard.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsCreditCard.d.ts new file mode 100644 index 00000000..8026f4af --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsCreditCard.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_CREDIT_CARD = "isCreditCard"; +/** + * Checks if the string is a credit card. + * If given value is not a string, then it returns false. + */ +export declare function isCreditCard(value: unknown): boolean; +/** + * Checks if the string is a credit card. + * If given value is not a string, then it returns false. + */ +export declare function IsCreditCard(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsCurrency.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsCurrency.d.ts new file mode 100644 index 00000000..b86e30da --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsCurrency.d.ts @@ -0,0 +1,13 @@ +import { ValidationOptions } from '../ValidationOptions'; +import ValidatorJS from 'validator'; +export declare const IS_CURRENCY = "isCurrency"; +/** + * Checks if the string is a valid currency amount. + * If given value is not a string, then it returns false. + */ +export declare function isCurrency(value: unknown, options?: ValidatorJS.IsCurrencyOptions): boolean; +/** + * Checks if the string is a valid currency amount. + * If given value is not a string, then it returns false. + */ +export declare function IsCurrency(options?: ValidatorJS.IsCurrencyOptions, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsDataURI.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsDataURI.d.ts new file mode 100644 index 00000000..7583d937 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsDataURI.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_DATA_URI = "isDataURI"; +/** + * Check if the string is a data uri format. + * If given value is not a string, then it returns false. + */ +export declare function isDataURI(value: unknown): boolean; +/** + * Check if the string is a data uri format. + * If given value is not a string, then it returns false. + */ +export declare function IsDataURI(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsDateString.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsDateString.d.ts new file mode 100644 index 00000000..4ac3b85f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsDateString.d.ts @@ -0,0 +1,11 @@ +import { ValidationOptions } from '../ValidationOptions'; +import ValidatorJS from 'validator'; +export declare const IS_DATE_STRING = "isDateString"; +/** + * Alias for IsISO8601 validator + */ +export declare function isDateString(value: unknown, options?: ValidatorJS.IsISO8601Options): boolean; +/** + * Alias for IsISO8601 validator + */ +export declare function IsDateString(options?: ValidatorJS.IsISO8601Options, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsDecimal.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsDecimal.d.ts new file mode 100644 index 00000000..4a4dd6db --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsDecimal.d.ts @@ -0,0 +1,13 @@ +import { ValidationOptions } from '../ValidationOptions'; +import ValidatorJS from 'validator'; +export declare const IS_DECIMAL = "isDecimal"; +/** + * Checks if the string is a valid decimal. + * If given value is not a string, then it returns false. + */ +export declare function isDecimal(value: unknown, options?: ValidatorJS.IsDecimalOptions): boolean; +/** + * Checks if the string contains only letters and numbers. + * If given value is not a string, then it returns false. + */ +export declare function IsDecimal(options?: ValidatorJS.IsDecimalOptions, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsEAN.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsEAN.d.ts new file mode 100644 index 00000000..0540443d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsEAN.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_EAN = "isEAN"; +/** + * Check if the string is an EAN (European Article Number). + * If given value is not a string, then it returns false. + */ +export declare function isEAN(value: unknown): boolean; +/** + * Check if the string is an EAN (European Article Number). + * If given value is not a string, then it returns false. + */ +export declare function IsEAN(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsEmail.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsEmail.d.ts new file mode 100644 index 00000000..25609293 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsEmail.d.ts @@ -0,0 +1,13 @@ +import { ValidationOptions } from '../ValidationOptions'; +import ValidatorJS from 'validator'; +export declare const IS_EMAIL = "isEmail"; +/** + * Checks if the string is an email. + * If given value is not a string, then it returns false. + */ +export declare function isEmail(value: unknown, options?: ValidatorJS.IsEmailOptions): boolean; +/** + * Checks if the string is an email. + * If given value is not a string, then it returns false. + */ +export declare function IsEmail(options?: ValidatorJS.IsEmailOptions, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsEthereumAddress.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsEthereumAddress.d.ts new file mode 100644 index 00000000..5c449b2d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsEthereumAddress.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_ETHEREUM_ADDRESS = "isEthereumAddress"; +/** + * Check if the string is an Ethereum address using basic regex. Does not validate address checksums. + * If given value is not a string, then it returns false. + */ +export declare function isEthereumAddress(value: unknown): boolean; +/** + * Check if the string is an Ethereum address using basic regex. Does not validate address checksums. + * If given value is not a string, then it returns false. + */ +export declare function IsEthereumAddress(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsFQDN.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsFQDN.d.ts new file mode 100644 index 00000000..3b350d89 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsFQDN.d.ts @@ -0,0 +1,13 @@ +import { ValidationOptions } from '../ValidationOptions'; +import ValidatorJS from 'validator'; +export declare const IS_FQDN = "isFqdn"; +/** + * Checks if the string is a fully qualified domain name (e.g. domain.com). + * If given value is not a string, then it returns false. + */ +export declare function isFQDN(value: unknown, options?: ValidatorJS.IsFQDNOptions): boolean; +/** + * Checks if the string is a fully qualified domain name (e.g. domain.com). + * If given value is not a string, then it returns false. + */ +export declare function IsFQDN(options?: ValidatorJS.IsFQDNOptions, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsFirebasePushId.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsFirebasePushId.d.ts new file mode 100644 index 00000000..86168a3d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsFirebasePushId.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_FIREBASE_PUSH_ID = "IsFirebasePushId"; +/** + * Checks if the string is a Firebase Push Id + * If given value is not a Firebase Push Id, it returns false + */ +export declare function isFirebasePushId(value: unknown): boolean; +/** + * Checks if the string is a Firebase Push Id + * If given value is not a Firebase Push Id, it returns false + */ +export declare function IsFirebasePushId(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsFullWidth.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsFullWidth.d.ts new file mode 100644 index 00000000..b434c5cd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsFullWidth.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_FULL_WIDTH = "isFullWidth"; +/** + * Checks if the string contains any full-width chars. + * If given value is not a string, then it returns false. + */ +export declare function isFullWidth(value: unknown): boolean; +/** + * Checks if the string contains any full-width chars. + * If given value is not a string, then it returns false. + */ +export declare function IsFullWidth(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsHSL.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsHSL.d.ts new file mode 100644 index 00000000..905287fe --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsHSL.d.ts @@ -0,0 +1,14 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_HSL = "isHSL"; +/** + * Check if the string is an HSL (hue, saturation, lightness, optional alpha) color based on CSS Colors Level 4 specification. + * Comma-separated format supported. Space-separated format supported with the exception of a few edge cases (ex: hsl(200grad+.1%62%/1)). + * If given value is not a string, then it returns false. + */ +export declare function isHSL(value: unknown): boolean; +/** + * Check if the string is an HSL (hue, saturation, lightness, optional alpha) color based on CSS Colors Level 4 specification. + * Comma-separated format supported. Space-separated format supported with the exception of a few edge cases (ex: hsl(200grad+.1%62%/1)). + * If given value is not a string, then it returns false. + */ +export declare function IsHSL(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsHalfWidth.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsHalfWidth.d.ts new file mode 100644 index 00000000..bdd6f68b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsHalfWidth.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_HALF_WIDTH = "isHalfWidth"; +/** + * Checks if the string contains any half-width chars. + * If given value is not a string, then it returns false. + */ +export declare function isHalfWidth(value: unknown): boolean; +/** + * Checks if the string contains any full-width chars. + * If given value is not a string, then it returns false. + */ +export declare function IsHalfWidth(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsHash.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsHash.d.ts new file mode 100644 index 00000000..14a0d48d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsHash.d.ts @@ -0,0 +1,15 @@ +import { ValidationOptions } from '../ValidationOptions'; +import ValidatorJS from 'validator'; +export declare const IS_HASH = "isHash"; +/** + * Check if the string is a hash of type algorithm. + * Algorithm is one of ['md4', 'md5', 'sha1', 'sha256', 'sha384', 'sha512', 'ripemd128', 'ripemd160', 'tiger128', + * 'tiger160', 'tiger192', 'crc32', 'crc32b'] + */ +export declare function isHash(value: unknown, algorithm: ValidatorJS.HashAlgorithm): boolean; +/** + * Check if the string is a hash of type algorithm. + * Algorithm is one of ['md4', 'md5', 'sha1', 'sha256', 'sha384', 'sha512', 'ripemd128', 'ripemd160', 'tiger128', + * 'tiger160', 'tiger192', 'crc32', 'crc32b'] + */ +export declare function IsHash(algorithm: string, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsHexColor.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsHexColor.d.ts new file mode 100644 index 00000000..34e9e42a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsHexColor.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_HEX_COLOR = "isHexColor"; +/** + * Checks if the string is a hexadecimal color. + * If given value is not a string, then it returns false. + */ +export declare function isHexColor(value: unknown): boolean; +/** + * Checks if the string is a hexadecimal color. + * If given value is not a string, then it returns false. + */ +export declare function IsHexColor(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsHexadecimal.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsHexadecimal.d.ts new file mode 100644 index 00000000..f07f9864 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsHexadecimal.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_HEXADECIMAL = "isHexadecimal"; +/** + * Checks if the string is a hexadecimal number. + * If given value is not a string, then it returns false. + */ +export declare function isHexadecimal(value: unknown): boolean; +/** + * Checks if the string is a hexadecimal number. + * If given value is not a string, then it returns false. + */ +export declare function IsHexadecimal(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsIBAN.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsIBAN.d.ts new file mode 100644 index 00000000..b5998b44 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsIBAN.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_IBAN = "isIBAN"; +/** + * Check if a string is a IBAN (International Bank Account Number). + * If given value is not a string, then it returns false. + */ +export declare function isIBAN(value: unknown): boolean; +/** + * Check if a string is a IBAN (International Bank Account Number). + * If given value is not a string, then it returns false. + */ +export declare function IsIBAN(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsIP.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsIP.d.ts new file mode 100644 index 00000000..2c04eb7e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsIP.d.ts @@ -0,0 +1,13 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare type IsIpVersion = '4' | '6' | 4 | 6; +export declare const IS_IP = "isIp"; +/** + * Checks if the string is an IP (version 4 or 6). + * If given value is not a string, then it returns false. + */ +export declare function isIP(value: unknown, version?: IsIpVersion): boolean; +/** + * Checks if the string is an IP (version 4 or 6). + * If given value is not a string, then it returns false. + */ +export declare function IsIP(version?: IsIpVersion, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISBN.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISBN.d.ts new file mode 100644 index 00000000..e61284d9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISBN.d.ts @@ -0,0 +1,13 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare type IsISBNVersion = '10' | '13' | 10 | 13; +export declare const IS_ISBN = "isIsbn"; +/** + * Checks if the string is an ISBN (version 10 or 13). + * If given value is not a string, then it returns false. + */ +export declare function isISBN(value: unknown, version?: IsISBNVersion): boolean; +/** + * Checks if the string is an ISBN (version 10 or 13). + * If given value is not a string, then it returns false. + */ +export declare function IsISBN(version?: IsISBNVersion, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISIN.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISIN.d.ts new file mode 100644 index 00000000..bfdd5377 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISIN.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_ISIN = "isIsin"; +/** + * Checks if the string is an ISIN (stock/security identifier). + * If given value is not a string, then it returns false. + */ +export declare function isISIN(value: unknown): boolean; +/** + * Checks if the string is an ISIN (stock/security identifier). + * If given value is not a string, then it returns false. + */ +export declare function IsISIN(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISO31661Alpha2.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISO31661Alpha2.d.ts new file mode 100644 index 00000000..6fb284d2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISO31661Alpha2.d.ts @@ -0,0 +1,10 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_ISO31661_ALPHA_2 = "isISO31661Alpha2"; +/** + * 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. + */ +export declare function isISO31661Alpha2(value: unknown): boolean; +/** + * 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. + */ +export declare function IsISO31661Alpha2(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISO31661Alpha3.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISO31661Alpha3.d.ts new file mode 100644 index 00000000..c37f7284 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISO31661Alpha3.d.ts @@ -0,0 +1,10 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_ISO31661_ALPHA_3 = "isISO31661Alpha3"; +/** + * 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. + */ +export declare function isISO31661Alpha3(value: unknown): boolean; +/** + * 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. + */ +export declare function IsISO31661Alpha3(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISO8601.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISO8601.d.ts new file mode 100644 index 00000000..a3ebbb3f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISO8601.d.ts @@ -0,0 +1,15 @@ +import { ValidationOptions } from '../ValidationOptions'; +import ValidatorJS from 'validator'; +export declare const IS_ISO8601 = "isIso8601"; +/** + * Checks if the string is a valid ISO 8601 date. + * If given value is not a string, then it returns false. + * Use the option strict = true for additional checks for a valid date, e.g. invalidates dates like 2019-02-29. + */ +export declare function isISO8601(value: unknown, options?: ValidatorJS.IsISO8601Options): boolean; +/** + * Checks if the string is a valid ISO 8601 date. + * If given value is not a string, then it returns false. + * Use the option strict = true for additional checks for a valid date, e.g. invalidates dates like 2019-02-29. + */ +export declare function IsISO8601(options?: ValidatorJS.IsISO8601Options, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISRC.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISRC.d.ts new file mode 100644 index 00000000..08d38ced --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISRC.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_ISRC = "isISRC"; +/** + * Check if the string is a ISRC. + * If given value is not a string, then it returns false. + */ +export declare function isISRC(value: unknown): boolean; +/** + * Check if the string is a ISRC. + * If given value is not a string, then it returns false. + */ +export declare function IsISRC(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISSN.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISSN.d.ts new file mode 100644 index 00000000..7b66780c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsISSN.d.ts @@ -0,0 +1,13 @@ +import { ValidationOptions } from '../ValidationOptions'; +import ValidatorJS from 'validator'; +export declare const IS_ISSN = "isISSN"; +/** + * Checks if the string is a ISSN. + * If given value is not a string, then it returns false. + */ +export declare function isISSN(value: unknown, options?: ValidatorJS.IsISSNOptions): boolean; +/** + * Checks if the string is a ISSN. + * If given value is not a string, then it returns false. + */ +export declare function IsISSN(options?: ValidatorJS.IsISSNOptions, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsIdentityCard.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsIdentityCard.d.ts new file mode 100644 index 00000000..62553cfb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsIdentityCard.d.ts @@ -0,0 +1,17 @@ +import { ValidationOptions } from '../ValidationOptions'; +import ValidatorJS from 'validator'; +export declare const IS_IDENTITY_CARD = "isIdentityCard"; +/** + * Check if the string is a valid identity card code. + * 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. + * Defaults to 'any'. + * If given value is not a string, then it returns false. + */ +export declare function isIdentityCard(value: unknown, locale: ValidatorJS.IdentityCardLocale): boolean; +/** + * Check if the string is a valid identity card code. + * 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. + * Defaults to 'any'. + * If given value is not a string, then it returns false. + */ +export declare function IsIdentityCard(locale?: ValidatorJS.IdentityCardLocale, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsJSON.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsJSON.d.ts new file mode 100644 index 00000000..c2170837 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsJSON.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_JSON = "isJson"; +/** + * Checks if the string is valid JSON (note: uses JSON.parse). + * If given value is not a string, then it returns false. + */ +export declare function isJSON(value: unknown): boolean; +/** + * Checks if the string is valid JSON (note: uses JSON.parse). + * If given value is not a string, then it returns false. + */ +export declare function IsJSON(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsJWT.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsJWT.d.ts new file mode 100644 index 00000000..508df814 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsJWT.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_JWT = "isJwt"; +/** + * Checks if the string is valid JWT token. + * If given value is not a string, then it returns false. + */ +export declare function isJWT(value: unknown): boolean; +/** + * Checks if the string is valid JWT token. + * If given value is not a string, then it returns false. + */ +export declare function IsJWT(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsLocale.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsLocale.d.ts new file mode 100644 index 00000000..e4bf393f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsLocale.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_LOCALE = "isLocale"; +/** + * Check if the string is a locale. + * If given value is not a string, then it returns false. + */ +export declare function isLocale(value: unknown): boolean; +/** + * Check if the string is a locale. + * If given value is not a string, then it returns false. + */ +export declare function IsLocale(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsLowercase.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsLowercase.d.ts new file mode 100644 index 00000000..2de09e0c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsLowercase.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_LOWERCASE = "isLowercase"; +/** + * Checks if the string is lowercase. + * If given value is not a string, then it returns false. + */ +export declare function isLowercase(value: unknown): boolean; +/** + * Checks if the string is lowercase. + * If given value is not a string, then it returns false. + */ +export declare function IsLowercase(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMacAddress.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMacAddress.d.ts new file mode 100644 index 00000000..d73b08f4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMacAddress.d.ts @@ -0,0 +1,14 @@ +import { ValidationOptions } from '../ValidationOptions'; +import ValidatorJS from 'validator'; +export declare const IS_MAC_ADDRESS = "isMacAddress"; +/** + * Check if the string is a MAC address. + * If given value is not a string, then it returns false. + */ +export declare function isMACAddress(value: unknown, options?: ValidatorJS.IsMACAddressOptions): boolean; +/** + * Check if the string is a MAC address. + * If given value is not a string, then it returns false. + */ +export declare function IsMACAddress(optionsArg?: ValidatorJS.IsMACAddressOptions, validationOptionsArg?: ValidationOptions): PropertyDecorator; +export declare function IsMACAddress(validationOptionsArg?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMagnetURI.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMagnetURI.d.ts new file mode 100644 index 00000000..167209f3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMagnetURI.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_MAGNET_URI = "isMagnetURI"; +/** + * Check if the string is a magnet uri format. + * If given value is not a string, then it returns false. + */ +export declare function isMagnetURI(value: unknown): boolean; +/** + * Check if the string is a magnet uri format. + * If given value is not a string, then it returns false. + */ +export declare function IsMagnetURI(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMilitaryTime.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMilitaryTime.d.ts new file mode 100644 index 00000000..ef450270 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMilitaryTime.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_MILITARY_TIME = "isMilitaryTime"; +/** + * Checks if the string represents a time without a given timezone in the format HH:MM (military) + * If the given value does not match the pattern HH:MM, then it returns false. + */ +export declare function isMilitaryTime(value: unknown): boolean; +/** + * Checks if the string represents a time without a given timezone in the format HH:MM (military) + * If the given value does not match the pattern HH:MM, then it returns false. + */ +export declare function IsMilitaryTime(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMimeType.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMimeType.d.ts new file mode 100644 index 00000000..f7cff193 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMimeType.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_MIME_TYPE = "isMimeType"; +/** + * Check if the string matches to a valid MIME type format + * If given value is not a string, then it returns false. + */ +export declare function isMimeType(value: unknown): boolean; +/** + * Check if the string matches to a valid MIME type format + * If given value is not a string, then it returns false. + */ +export declare function IsMimeType(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMobilePhone.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMobilePhone.d.ts new file mode 100644 index 00000000..98a95fa8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMobilePhone.d.ts @@ -0,0 +1,29 @@ +import { ValidationOptions } from '../ValidationOptions'; +import ValidatorJS from 'validator'; +export declare const IS_MOBILE_PHONE = "isMobilePhone"; +/** + * Checks if the string is a mobile phone number (locale is either an array of locales (e.g ['sk-SK', 'sr-RS']) + * 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', + * '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', + * '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', + * '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', + * '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', + * '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', + * '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', + * 'zh-HK', 'zh-MO', 'zh-TW'] + * If given value is not a string, then it returns false. + */ +export declare function isMobilePhone(value: unknown, locale?: ValidatorJS.MobilePhoneLocale, options?: ValidatorJS.IsMobilePhoneOptions): boolean; +/** + * Checks if the string is a mobile phone number (locale is either an array of locales (e.g ['sk-SK', 'sr-RS']) + * 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', + * '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', + * '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', + * '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', + * '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', + * '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', + * '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', + * 'zh-HK', 'zh-MO', 'zh-TW'] + * If given value is not a string, then it returns false. + */ +export declare function IsMobilePhone(locale?: ValidatorJS.MobilePhoneLocale, options?: ValidatorJS.IsMobilePhoneOptions, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMongoId.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMongoId.d.ts new file mode 100644 index 00000000..21623ec4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMongoId.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_MONGO_ID = "isMongoId"; +/** + * Checks if the string is a valid hex-encoded representation of a MongoDB ObjectId. + * If given value is not a string, then it returns false. + */ +export declare function isMongoId(value: unknown): boolean; +/** + * Checks if the string is a valid hex-encoded representation of a MongoDB ObjectId. + * If given value is not a string, then it returns false. + */ +export declare function IsMongoId(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMultibyte.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMultibyte.d.ts new file mode 100644 index 00000000..4b34e139 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsMultibyte.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_MULTIBYTE = "isMultibyte"; +/** + * Checks if the string contains one or more multibyte chars. + * If given value is not a string, then it returns false. + */ +export declare function isMultibyte(value: unknown): boolean; +/** + * Checks if the string contains one or more multibyte chars. + * If given value is not a string, then it returns false. + */ +export declare function IsMultibyte(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsNumberString.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsNumberString.d.ts new file mode 100644 index 00000000..7206fd49 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsNumberString.d.ts @@ -0,0 +1,13 @@ +import { ValidationOptions } from '../ValidationOptions'; +import ValidatorJS from 'validator'; +export declare const IS_NUMBER_STRING = "isNumberString"; +/** + * Checks if the string is numeric. + * If given value is not a string, then it returns false. + */ +export declare function isNumberString(value: unknown, options?: ValidatorJS.IsNumericOptions): boolean; +/** + * Checks if the string is numeric. + * If given value is not a string, then it returns false. + */ +export declare function IsNumberString(options?: ValidatorJS.IsNumericOptions, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsOctal.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsOctal.d.ts new file mode 100644 index 00000000..e3b4def1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsOctal.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_OCTAL = "isOctal"; +/** + * Check if the string is a valid octal number. + * If given value is not a string, then it returns false. + */ +export declare function isOctal(value: unknown): boolean; +/** + * Check if the string is a valid octal number. + * If given value is not a string, then it returns false. + */ +export declare function IsOctal(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsPassportNumber.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsPassportNumber.d.ts new file mode 100644 index 00000000..faa9e1d6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsPassportNumber.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_PASSPORT_NUMBER = "isPassportNumber"; +/** + * Check if the string is a valid passport number relative to a specific country code. + * If given value is not a string, then it returns false. + */ +export declare function isPassportNumber(value: unknown, countryCode: string): boolean; +/** + * Check if the string is a valid passport number relative to a specific country code. + * If given value is not a string, then it returns false. + */ +export declare function IsPassportNumber(countryCode: string, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsPhoneNumber.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsPhoneNumber.d.ts new file mode 100644 index 00000000..8b74a888 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsPhoneNumber.d.ts @@ -0,0 +1,20 @@ +import { ValidationOptions } from '../ValidationOptions'; +import { CountryCode } from 'libphonenumber-js'; +export declare const IS_PHONE_NUMBER = "isPhoneNumber"; +/** + * Checks if the string is a valid phone number. To successfully validate any phone number the text must include + * the intl. calling code, if the calling code wont be provided then the region must be set. + * + * @param value the potential phone number string to test + * @param region 2 characters uppercase country code (e.g. DE, US, CH) for country specific validation. + * If text doesn't start with the international calling code (e.g. +41), then you must set this parameter. + */ +export declare function isPhoneNumber(value: string, region?: CountryCode): boolean; +/** + * Checks if the string is a valid phone number. To successfully validate any phone number the text must include + * the intl. calling code, if the calling code wont be provided then the region must be set. + * + * @param region 2 characters uppercase country code (e.g. DE, US, CH) for country specific validation. + * If text doesn't start with the international calling code (e.g. +41), then you must set this parameter. + */ +export declare function IsPhoneNumber(region?: CountryCode, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsPort.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsPort.d.ts new file mode 100644 index 00000000..f77fd18f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsPort.d.ts @@ -0,0 +1,10 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_PORT = "isPort"; +/** + * Check if the string is a valid port number. + */ +export declare function isPort(value: unknown): boolean; +/** + * Check if the string is a valid port number. + */ +export declare function IsPort(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsPostalCode.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsPostalCode.d.ts new file mode 100644 index 00000000..5655f97c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsPostalCode.d.ts @@ -0,0 +1,15 @@ +import { ValidationOptions } from '../ValidationOptions'; +import ValidatorJS from 'validator'; +export declare const IS_POSTAL_CODE = "isPostalCode"; +/** + * Check if the string is a postal code, + * (locale is one of [ 'AD', 'AT', 'AU', 'BE', 'BG', 'BR', 'CA', 'CH', 'CZ', 'DE', 'DK', 'DZ', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'ID', 'IE' 'IL', 'IN', 'IR', 'IS', 'IT', 'JP', 'KE', 'LI', 'LT', 'LU', 'LV', 'MT', 'MX', 'NL', 'NO', 'NZ', 'PL', 'PR', 'PT', 'RO', 'RU', 'SA', 'SE', 'SI', 'TN', 'TW', 'UA', 'US', 'ZA', 'ZM' ] OR 'any'. If 'any' is used, function will check if any of the locals match. Locale list is validator.isPostalCodeLocales.). + * If given value is not a string, then it returns false. + */ +export declare function isPostalCode(value: unknown, locale: 'any' | ValidatorJS.PostalCodeLocale): boolean; +/** + * Check if the string is a postal code, + * (locale is one of [ 'AD', 'AT', 'AU', 'BE', 'BG', 'BR', 'CA', 'CH', 'CZ', 'DE', 'DK', 'DZ', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'ID', 'IE' 'IL', 'IN', 'IR', 'IS', 'IT', 'JP', 'KE', 'LI', 'LT', 'LU', 'LV', 'MT', 'MX', 'NL', 'NO', 'NZ', 'PL', 'PR', 'PT', 'RO', 'RU', 'SA', 'SE', 'SI', 'TN', 'TW', 'UA', 'US', 'ZA', 'ZM' ] OR 'any'. If 'any' is used, function will check if any of the locals match. Locale list is validator.isPostalCodeLocales.). + * If given value is not a string, then it returns false. + */ +export declare function IsPostalCode(locale?: 'any' | ValidatorJS.PostalCodeLocale, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsRFC3339.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsRFC3339.d.ts new file mode 100644 index 00000000..89728630 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsRFC3339.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_RFC_3339 = "isRFC3339"; +/** + * Check if the string is a valid RFC 3339 date. + * If given value is not a string, then it returns false. + */ +export declare function isRFC3339(value: unknown): boolean; +/** + * Check if the string is a valid RFC 3339 date. + * If given value is not a string, then it returns false. + */ +export declare function IsRFC3339(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsRgbColor.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsRgbColor.d.ts new file mode 100644 index 00000000..f406384b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsRgbColor.d.ts @@ -0,0 +1,14 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_RGB_COLOR = "isRgbColor"; +/** + * Check if the string is a rgb or rgba color. + * `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. + * If given value is not a string, then it returns false. + */ +export declare function isRgbColor(value: unknown, includePercentValues?: boolean): boolean; +/** + * Check if the string is a rgb or rgba color. + * `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. + * If given value is not a string, then it returns false. + */ +export declare function IsRgbColor(includePercentValues?: boolean, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsSemVer.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsSemVer.d.ts new file mode 100644 index 00000000..6e5bc0e6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsSemVer.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_SEM_VER = "isSemVer"; +/** + * Check if the string is a Semantic Versioning Specification (SemVer). + * If given value is not a string, then it returns false. + */ +export declare function isSemVer(value: unknown): boolean; +/** + * Check if the string is a Semantic Versioning Specification (SemVer). + * If given value is not a string, then it returns false. + */ +export declare function IsSemVer(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsSurrogatePair.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsSurrogatePair.d.ts new file mode 100644 index 00000000..8e6bacbc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsSurrogatePair.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_SURROGATE_PAIR = "isSurrogatePair"; +/** + * Checks if the string contains any surrogate pairs chars. + * If given value is not a string, then it returns false. + */ +export declare function isSurrogatePair(value: unknown): boolean; +/** + * Checks if the string contains any surrogate pairs chars. + * If given value is not a string, then it returns false. + */ +export declare function IsSurrogatePair(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsUUID.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsUUID.d.ts new file mode 100644 index 00000000..4756313a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsUUID.d.ts @@ -0,0 +1,13 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare type UUIDVersion = '3' | '4' | '5' | 'all' | 3 | 4 | 5; +export declare const IS_UUID = "isUuid"; +/** + * Checks if the string is a UUID (version 3, 4 or 5). + * If given value is not a string, then it returns false. + */ +export declare function isUUID(value: unknown, version?: UUIDVersion): boolean; +/** + * Checks if the string is a UUID (version 3, 4 or 5). + * If given value is not a string, then it returns false. + */ +export declare function IsUUID(version?: UUIDVersion, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsUppercase.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsUppercase.d.ts new file mode 100644 index 00000000..4478baad --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsUppercase.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_UPPERCASE = "isUppercase"; +/** + * Checks if the string is uppercase. + * If given value is not a string, then it returns false. + */ +export declare function isUppercase(value: unknown): boolean; +/** + * Checks if the string is uppercase. + * If given value is not a string, then it returns false. + */ +export declare function IsUppercase(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsUrl.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsUrl.d.ts new file mode 100644 index 00000000..0f5e2de7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsUrl.d.ts @@ -0,0 +1,13 @@ +import { ValidationOptions } from '../ValidationOptions'; +import ValidatorJS from 'validator'; +export declare const IS_URL = "isUrl"; +/** + * Checks if the string is an url. + * If given value is not a string, then it returns false. + */ +export declare function isURL(value: string, options?: ValidatorJS.IsURLOptions): boolean; +/** + * Checks if the string is an url. + * If given value is not a string, then it returns false. + */ +export declare function IsUrl(options?: ValidatorJS.IsURLOptions, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsVariableWidth.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsVariableWidth.d.ts new file mode 100644 index 00000000..c7425efb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/IsVariableWidth.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_VARIABLE_WIDTH = "isVariableWidth"; +/** + * Checks if the string contains variable-width chars. + * If given value is not a string, then it returns false. + */ +export declare function isVariableWidth(value: unknown): boolean; +/** + * Checks if the string contains variable-width chars. + * If given value is not a string, then it returns false. + */ +export declare function IsVariableWidth(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/Length.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/Length.d.ts new file mode 100644 index 00000000..37c2378f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/Length.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_LENGTH = "isLength"; +/** + * Checks if the string's length falls in a range. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ +export declare function length(value: unknown, min: number, max?: number): boolean; +/** + * Checks if the string's length falls in a range. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ +export declare function Length(min: number, max?: number, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/Matches.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/Matches.d.ts new file mode 100644 index 00000000..d09d3677 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/Matches.d.ts @@ -0,0 +1,14 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const MATCHES = "matches"; +/** + * Checks if string matches the pattern. Either matches('foo', /foo/i). + * If given value is not a string, then it returns false. + */ +export declare function matches(value: string, pattern: RegExp): boolean; +export declare function matches(value: string, pattern: string, modifiers: string): boolean; +/** + * Checks if string matches the pattern. Either matches('foo', /foo/i) + * If given value is not a string, then it returns false. + */ +export declare function Matches(pattern: RegExp, validationOptions?: ValidationOptions): PropertyDecorator; +export declare function Matches(pattern: string, modifiers?: string, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/MaxLength.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/MaxLength.d.ts new file mode 100644 index 00000000..ffde3535 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/MaxLength.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const MAX_LENGTH = "maxLength"; +/** + * Checks if the string's length is not more than given number. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ +export declare function maxLength(value: unknown, max: number): boolean; +/** + * Checks if the string's length is not more than given number. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ +export declare function MaxLength(max: number, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/MinLength.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/MinLength.d.ts new file mode 100644 index 00000000..33b4b23f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/MinLength.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const MIN_LENGTH = "minLength"; +/** + * Checks if the string's length is not less than given number. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ +export declare function minLength(value: unknown, min: number): boolean; +/** + * Checks if the string's length is not less than given number. Note: this function takes into account surrogate pairs. + * If given value is not a string, then it returns false. + */ +export declare function MinLength(min: number, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/NotContains.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/NotContains.d.ts new file mode 100644 index 00000000..24dc6bf2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/string/NotContains.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const NOT_CONTAINS = "notContains"; +/** + * Checks if the string does not contain the seed. + * If given value is not a string, then it returns false. + */ +export declare function notContains(value: unknown, seed: string): boolean; +/** + * Checks if the string does not contain the seed. + * If given value is not a string, then it returns false. + */ +export declare function NotContains(seed: string, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsArray.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsArray.d.ts new file mode 100644 index 00000000..1b635f78 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsArray.d.ts @@ -0,0 +1,10 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_ARRAY = "isArray"; +/** + * Checks if a given value is an array + */ +export declare function isArray(value: unknown): boolean; +/** + * Checks if a given value is an array + */ +export declare function IsArray(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsBoolean.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsBoolean.d.ts new file mode 100644 index 00000000..b6ed3f9c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsBoolean.d.ts @@ -0,0 +1,10 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_BOOLEAN = "isBoolean"; +/** + * Checks if a given value is a boolean. + */ +export declare function isBoolean(value: unknown): boolean; +/** + * Checks if a value is a boolean. + */ +export declare function IsBoolean(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsDate.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsDate.d.ts new file mode 100644 index 00000000..f4e1bcee --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsDate.d.ts @@ -0,0 +1,10 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_DATE = "isDate"; +/** + * Checks if a given value is a date. + */ +export declare function isDate(value: unknown): boolean; +/** + * Checks if a value is a date. + */ +export declare function IsDate(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsEnum.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsEnum.d.ts new file mode 100644 index 00000000..d9ed09ce --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsEnum.d.ts @@ -0,0 +1,10 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_ENUM = "isEnum"; +/** + * Checks if a given value is an enum + */ +export declare function isEnum(value: unknown, entity: any): boolean; +/** + * Checks if a given value is an enum + */ +export declare function IsEnum(entity: object, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsInt.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsInt.d.ts new file mode 100644 index 00000000..055f75e3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsInt.d.ts @@ -0,0 +1,10 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_INT = "isInt"; +/** + * Checks if value is an integer. + */ +export declare function isInt(val: unknown): boolean; +/** + * Checks if value is an integer. + */ +export declare function IsInt(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsNumber.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsNumber.d.ts new file mode 100644 index 00000000..df0e2f0f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsNumber.d.ts @@ -0,0 +1,18 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_NUMBER = "isNumber"; +/** + * Options to be passed to IsNumber decorator. + */ +export interface IsNumberOptions { + allowNaN?: boolean; + allowInfinity?: boolean; + maxDecimalPlaces?: number; +} +/** + * Checks if a given value is a number. + */ +export declare function isNumber(value: unknown, options?: IsNumberOptions): boolean; +/** + * Checks if a value is a number. + */ +export declare function IsNumber(options?: IsNumberOptions, validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsObject.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsObject.d.ts new file mode 100644 index 00000000..40012d68 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsObject.d.ts @@ -0,0 +1,12 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_OBJECT = "isObject"; +/** + * Checks if the value is valid Object. + * Returns false if the value is not an object. + */ +export declare function isObject(value: unknown): value is object; +/** + * Checks if the value is valid Object. + * Returns false if the value is not an object. + */ +export declare function IsObject(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsString.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsString.d.ts new file mode 100644 index 00000000..50dbd438 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/decorator/typechecker/IsString.d.ts @@ -0,0 +1,10 @@ +import { ValidationOptions } from '../ValidationOptions'; +export declare const IS_STRING = "isString"; +/** + * Checks if a given value is a real string. + */ +export declare function isString(value: unknown): value is string; +/** + * Checks if a given value is a real string. + */ +export declare function IsString(validationOptions?: ValidationOptions): PropertyDecorator; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/index.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/index.d.ts new file mode 100644 index 00000000..0aedda59 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/index.d.ts @@ -0,0 +1,47 @@ +import { ValidationError } from './validation/ValidationError'; +import { ValidatorOptions } from './validation/ValidatorOptions'; +import { ValidationSchema } from './validation-schema/ValidationSchema'; +export * from './container'; +export * from './decorator/decorators'; +export * from './decorator/ValidationOptions'; +export * from './validation/ValidatorConstraintInterface'; +export * from './validation/ValidationError'; +export * from './validation/ValidatorOptions'; +export * from './validation/ValidationArguments'; +export * from './validation/ValidationTypes'; +export * from './validation/Validator'; +export * from './validation-schema/ValidationSchema'; +export * from './register-decorator'; +export * from './metadata/MetadataStorage'; +/** + * Validates given object. + */ +export declare function validate(object: object, validatorOptions?: ValidatorOptions): Promise; +/** + * Validates given object by a given validation schema. + */ +export declare function validate(schemaName: string, object: object, validatorOptions?: ValidatorOptions): Promise; +/** + * Validates given object and reject on error. + */ +export declare function validateOrReject(object: object, validatorOptions?: ValidatorOptions): Promise; +/** + * Validates given object by a given validation schema and reject on error. + */ +export declare function validateOrReject(schemaName: string, object: object, validatorOptions?: ValidatorOptions): Promise; +/** + * Performs sync validation of the given object. + * Note that this method completely ignores async validations. + * If you want to properly perform validation you need to call validate method instead. + */ +export declare function validateSync(object: object, validatorOptions?: ValidatorOptions): ValidationError[]; +/** + * Validates given object by a given validation schema. + * Note that this method completely ignores async validations. + * If you want to properly perform validation you need to call validate method instead. + */ +export declare function validateSync(schemaName: string, object: object, validatorOptions?: ValidatorOptions): ValidationError[]; +/** + * Registers a new validation schema. + */ +export declare function registerSchema(schema: ValidationSchema): void; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/metadata/ConstraintMetadata.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/metadata/ConstraintMetadata.d.ts new file mode 100644 index 00000000..a56b01b9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/metadata/ConstraintMetadata.d.ts @@ -0,0 +1,23 @@ +import { ValidatorConstraintInterface } from '../validation/ValidatorConstraintInterface'; +/** + * This metadata interface contains information for custom validators. + */ +export declare class ConstraintMetadata { + /** + * Target class which performs validation. + */ + target: Function; + /** + * Custom validation's name, that will be used as validation error type. + */ + name: string; + /** + * Indicates if this validation is asynchronous or not. + */ + async: boolean; + constructor(target: Function, name?: string, async?: boolean); + /** + * Instance of the target custom validation class which performs validation. + */ + get instance(): ValidatorConstraintInterface; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/metadata/MetadataStorage.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/metadata/MetadataStorage.d.ts new file mode 100644 index 00000000..5fadf3a3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/metadata/MetadataStorage.d.ts @@ -0,0 +1,42 @@ +import { ValidationMetadata } from './ValidationMetadata'; +import { ConstraintMetadata } from './ConstraintMetadata'; +import { ValidationSchema } from '../validation-schema/ValidationSchema'; +/** + * Storage all metadatas. + */ +export declare class MetadataStorage { + private validationMetadatas; + private constraintMetadatas; + get hasValidationMetaData(): boolean; + /** + * Adds a new validation metadata. + */ + addValidationSchema(schema: ValidationSchema): void; + /** + * Adds a new validation metadata. + */ + addValidationMetadata(metadata: ValidationMetadata): void; + /** + * Adds a new constraint metadata. + */ + addConstraintMetadata(metadata: ConstraintMetadata): void; + /** + * Groups metadata by their property names. + */ + groupByPropertyName(metadata: ValidationMetadata[]): { + [propertyName: string]: ValidationMetadata[]; + }; + /** + * Gets all validation metadatas for the given object with the given groups. + */ + getTargetValidationMetadatas(targetConstructor: Function, targetSchema: string, always: boolean, strictGroups: boolean, groups?: string[]): ValidationMetadata[]; + /** + * Gets all validator constraints for the given object. + */ + getTargetValidatorConstraints(target: Function): ConstraintMetadata[]; +} +/** + * Gets metadata storage. + * Metadata storage follows the best practices and stores metadata in a global variable. + */ +export declare function getMetadataStorage(): MetadataStorage; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/metadata/ValidationMetadata.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/metadata/ValidationMetadata.d.ts new file mode 100644 index 00000000..03ff9155 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/metadata/ValidationMetadata.d.ts @@ -0,0 +1,49 @@ +import { ValidationMetadataArgs } from './ValidationMetadataArgs'; +import { ValidationArguments } from '../validation/ValidationArguments'; +/** + * This metadata contains validation rules. + */ +export declare class ValidationMetadata { + /** + * Validation type. + */ + type: string; + /** + * Target class to which this validation is applied. + */ + target: Function | string; + /** + * Property of the object to be validated. + */ + propertyName: string; + /** + * Constraint class that performs validation. Used only for custom validations. + */ + constraintCls: Function; + /** + * Array of constraints of this validation. + */ + constraints: any[]; + /** + * Validation message to be shown in the case of error. + */ + message: string | ((args: ValidationArguments) => string); + /** + * Validation groups used for this validation. + */ + groups: string[]; + /** + * Indicates if validation must be performed always, no matter of validation groups used. + */ + always?: boolean; + /** + * Specifies if validated value is an array and each of its item must be validated. + */ + each: boolean; + context?: any; + /** + * Extra options specific to validation type. + */ + validationTypeOptions: any; + constructor(args: ValidationMetadataArgs); +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/metadata/ValidationMetadataArgs.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/metadata/ValidationMetadataArgs.d.ts new file mode 100644 index 00000000..6a5fb812 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/metadata/ValidationMetadataArgs.d.ts @@ -0,0 +1,34 @@ +import { ValidationOptions } from '../decorator/ValidationOptions'; +/** + * Constructor arguments for ValidationMetadata class. + */ +export interface ValidationMetadataArgs { + /** + * Validation type. + */ + type: string; + /** + * Object that is used to be validated. + */ + target: Function | string; + /** + * Property of the object to be validated. + */ + propertyName: string; + /** + * Constraint class that performs validation. Used only for custom validations. + */ + constraintCls?: Function; + /** + * Array of constraints of this validation. + */ + constraints?: any[]; + /** + * Validation options. + */ + validationOptions?: ValidationOptions; + /** + * Extra options specific to validation type. + */ + validationTypeOptions?: any; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/register-decorator.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/register-decorator.d.ts new file mode 100644 index 00000000..48b6e359 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/register-decorator.d.ts @@ -0,0 +1,36 @@ +import { ValidatorConstraintInterface } from './validation/ValidatorConstraintInterface'; +import { ValidationOptions } from './decorator/ValidationOptions'; +export interface ValidationDecoratorOptions { + /** + * Target object to be validated. + */ + target: Function; + /** + * Target object's property name to be validated. + */ + propertyName: string; + /** + * Name of the validation that is being registered. + */ + name?: string; + /** + * Indicates if this decorator will perform async validation. + */ + async?: boolean; + /** + * Validator options. + */ + options?: ValidationOptions; + /** + * Array of validation constraints. + */ + constraints?: any[]; + /** + * Validator that performs validation. + */ + validator: ValidatorConstraintInterface | Function; +} +/** + * Registers a custom validation decorator. + */ +export declare function registerDecorator(options: ValidationDecoratorOptions): void; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/utils/convert-to-array.util.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/utils/convert-to-array.util.d.ts new file mode 100644 index 00000000..9c35e0d6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/utils/convert-to-array.util.d.ts @@ -0,0 +1,4 @@ +/** + * Convert Map, Set to Array + */ +export declare function convertToArray(val: Array | Set | Map): Array; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/utils/get-global.util.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/utils/get-global.util.d.ts new file mode 100644 index 00000000..c7d02b82 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/utils/get-global.util.d.ts @@ -0,0 +1,7 @@ +/** + * This function returns the global object across Node and browsers. + * + * Note: `globalThis` is the standardized approach however it has been added to + * Node.js in version 12. We need to include this snippet until Node 12 EOL. + */ +export declare function getGlobal(): any; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/utils/index.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/utils/index.d.ts new file mode 100644 index 00000000..0094adff --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/utils/index.d.ts @@ -0,0 +1,3 @@ +export * from './convert-to-array.util'; +export * from './get-global.util'; +export * from './is-promise.util'; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/utils/is-promise.util.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/utils/is-promise.util.d.ts new file mode 100644 index 00000000..220378dc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/utils/is-promise.util.d.ts @@ -0,0 +1 @@ +export declare function isPromise(p: any): p is Promise; diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation-schema/ValidationSchema.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation-schema/ValidationSchema.d.ts new file mode 100644 index 00000000..4e7eed74 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation-schema/ValidationSchema.d.ts @@ -0,0 +1,53 @@ +/** + * Validation schema is a decorator-free way of validation of your objects. + * Also using validation schemas makes this library to be easily used with es6/es5. + */ +export interface ValidationSchema { + /** + * Schema name. This is required, because we tell validator to validate by this schema using its name. + */ + name: string; + /** + * Validated properties. + */ + properties: { + /** + * Name of the object's property to be validated which holds an array of validation constraints. + */ + [propertyName: string]: { + /** + * Validation type. Should be one of the ValidationTypes value. + */ + type: string; + /** + * Constraints set by validation type. + */ + constraints?: any[]; + /** + * Error message used to be used on validation fail. + * You can use "$value" to use value that was failed by validation. + * You can use "$constraint1" and "$constraint2" keys in the message string, + * and they will be replaced with constraint values if they exist. + * Message can be either string, either a function that returns a string. + * Second option allows to use values and custom messages depend of them. + */ + message?: string | ((value?: any, constraint1?: any, constraint2?: any) => string); + /** + * Specifies if validated value is an array and each of its item must be validated. + */ + each?: boolean; + /** + * Indicates if validation must be performed always, no matter of validation groups used. + */ + always?: boolean; + /** + * Validation groups used for this validation. + */ + groups?: string[]; + /** + * Specific validation type options. + */ + options?: any; + }[]; + }; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation-schema/ValidationSchemaToMetadataTransformer.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation-schema/ValidationSchemaToMetadataTransformer.d.ts new file mode 100644 index 00000000..04556b7b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation-schema/ValidationSchemaToMetadataTransformer.d.ts @@ -0,0 +1,8 @@ +import { ValidationSchema } from './ValidationSchema'; +import { ValidationMetadata } from '../metadata/ValidationMetadata'; +/** + * Used to transform validation schemas to validation metadatas. + */ +export declare class ValidationSchemaToMetadataTransformer { + transform(schema: ValidationSchema): ValidationMetadata[]; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidationArguments.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidationArguments.d.ts new file mode 100644 index 00000000..6cf88428 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidationArguments.d.ts @@ -0,0 +1,26 @@ +/** + * Arguments being sent to message builders - user can create message either by simply returning a string, + * either by returning a function that accepts MessageArguments and returns a message string built based on these arguments. + */ +export interface ValidationArguments { + /** + * Validating value. + */ + value: any; + /** + * Constraints set by this validation type. + */ + constraints: any[]; + /** + * Name of the target that is being validated. + */ + targetName: string; + /** + * Object that is being validated. + */ + object: object; + /** + * Name of the object's property being validated. + */ + property: string; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidationError.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidationError.d.ts new file mode 100644 index 00000000..9909895b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidationError.d.ts @@ -0,0 +1,41 @@ +/** + * Validation error description. + */ +export declare class ValidationError { + /** + * Object that was validated. + * + * OPTIONAL - configurable via the ValidatorOptions.validationError.target option + */ + target?: object; + /** + * Object's property that haven't pass validation. + */ + property: string; + /** + * Value that haven't pass a validation. + * + * OPTIONAL - configurable via the ValidatorOptions.validationError.value option + */ + value?: any; + /** + * Constraints that failed validation with error messages. + */ + constraints?: { + [type: string]: string; + }; + /** + * Contains all nested validation errors of the property. + */ + children?: ValidationError[]; + contexts?: { + [type: string]: any; + }; + /** + * + * @param shouldDecorate decorate the message with ANSI formatter escape codes for better readability + * @param hasParent true when the error is a child of an another one + * @param parentPath path as string to the parent of this property + */ + toString(shouldDecorate?: boolean, hasParent?: boolean, parentPath?: string): string; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidationExecutor.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidationExecutor.d.ts new file mode 100644 index 00000000..ff5cba77 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidationExecutor.d.ts @@ -0,0 +1,28 @@ +import { Validator } from './Validator'; +import { ValidationError } from './ValidationError'; +import { ValidationMetadata } from '../metadata/ValidationMetadata'; +import { ValidatorOptions } from './ValidatorOptions'; +/** + * Executes validation over given object. + */ +export declare class ValidationExecutor { + private validator; + private validatorOptions?; + awaitingPromises: Promise[]; + ignoreAsyncValidations: boolean; + private metadataStorage; + constructor(validator: Validator, validatorOptions?: ValidatorOptions); + execute(object: object, targetSchema: string, validationErrors: ValidationError[]): void; + whitelist(object: any, groupedMetadatas: { + [propertyName: string]: ValidationMetadata[]; + }, validationErrors: ValidationError[]): void; + stripEmptyErrors(errors: ValidationError[]): ValidationError[]; + private performValidations; + private generateValidationError; + private conditionalValidations; + private customValidations; + private nestedValidations; + private mapContexts; + private createValidationError; + private getConstraintType; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidationTypes.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidationTypes.d.ts new file mode 100644 index 00000000..ac6bcaac --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidationTypes.d.ts @@ -0,0 +1,15 @@ +/** + * Validation types. + */ +export declare class ValidationTypes { + static CUSTOM_VALIDATION: string; + static NESTED_VALIDATION: string; + static PROMISE_VALIDATION: string; + static CONDITIONAL_VALIDATION: string; + static WHITELIST: string; + static IS_DEFINED: string; + /** + * Checks if validation type is valid. + */ + static isValid(type: string): boolean; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidationUtils.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidationUtils.d.ts new file mode 100644 index 00000000..e376f68f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidationUtils.d.ts @@ -0,0 +1,8 @@ +import { ValidationArguments } from './ValidationArguments'; +/** + * Convert the constraint to a string to be shown in an error + */ +export declare function constraintToString(constraint: unknown): string; +export declare class ValidationUtils { + static replaceMessageSpecialTokens(message: string | ((args: ValidationArguments) => string), validationArguments: ValidationArguments): string; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/Validator.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/Validator.d.ts new file mode 100644 index 00000000..528c4604 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/Validator.d.ts @@ -0,0 +1,37 @@ +import { ValidationError } from './ValidationError'; +import { ValidatorOptions } from './ValidatorOptions'; +/** + * Validator performs validation of the given object based on its metadata. + */ +export declare class Validator { + /** + * Performs validation of the given object based on decorators used in given object class. + */ + validate(object: object, options?: ValidatorOptions): Promise; + /** + * Performs validation of the given object based on validation schema. + */ + validate(schemaName: string, object: object, options?: ValidatorOptions): Promise; + /** + * Performs validation of the given object based on decorators used in given object class and reject on error. + */ + validateOrReject(object: object, options?: ValidatorOptions): Promise; + /** + * Performs validation of the given object based on validation schema and reject on error. + */ + validateOrReject(schemaName: string, object: object, options?: ValidatorOptions): Promise; + /** + * Performs validation of the given object based on decorators used in given object class. + * NOTE: This method completely ignores all async validations. + */ + validateSync(object: object, options?: ValidatorOptions): ValidationError[]; + /** + * Performs validation of the given object based on validation schema. + */ + validateSync(schemaName: string, object: object, options?: ValidatorOptions): ValidationError[]; + /** + * Performs validation of the given object based on decorators or validation schema. + * Common method for `validateOrReject` and `validate` methods. + */ + private coreValidate; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidatorConstraintInterface.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidatorConstraintInterface.d.ts new file mode 100644 index 00000000..4382f543 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidatorConstraintInterface.d.ts @@ -0,0 +1,14 @@ +import { ValidationArguments } from './ValidationArguments'; +/** + * Custom validators must implement this interface to provide custom validation logic. + */ +export interface ValidatorConstraintInterface { + /** + * Method to be called to perform custom validation over given value. + */ + validate(value: any, validationArguments?: ValidationArguments): Promise | boolean; + /** + * Gets default message when validation for this constraint fail. + */ + defaultMessage?(validationArguments?: ValidationArguments): string; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidatorOptions.d.ts b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidatorOptions.d.ts new file mode 100644 index 00000000..3ddb0197 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/class-validator/types/validation/ValidatorOptions.d.ts @@ -0,0 +1,70 @@ +/** + * Options passed to validator during validation. + */ +export interface ValidatorOptions { + /** + * If set to true then class-validator will print extra warning messages to the console when something is not right. + */ + enableDebugMessages?: boolean; + /** + * If set to true then validator will skip validation of all properties that are undefined in the validating object. + */ + skipUndefinedProperties?: boolean; + /** + * If set to true then validator will skip validation of all properties that are null in the validating object. + */ + skipNullProperties?: boolean; + /** + * If set to true then validator will skip validation of all properties that are null or undefined in the validating object. + */ + skipMissingProperties?: boolean; + /** + * If set to true validator will strip validated object of any properties that do not have any decorators. + * + * Tip: if no other decorator is suitable for your property use @Allow decorator. + */ + whitelist?: boolean; + /** + * If set to true, instead of stripping non-whitelisted properties validator will throw an error + */ + forbidNonWhitelisted?: boolean; + /** + * Groups to be used during validation of the object. + */ + groups?: string[]; + /** + * Set default for `always` option of decorators. Default can be overridden in decorator options. + */ + always?: boolean; + /** + * If [groups]{@link ValidatorOptions#groups} is not given or is empty, + * ignore decorators with at least one group. + */ + strictGroups?: boolean; + /** + * If set to true, the validation will not use default messages. + * Error message always will be undefined if its not explicitly set. + */ + dismissDefaultMessages?: boolean; + /** + * ValidationError special options. + */ + validationError?: { + /** + * Indicates if target should be exposed in ValidationError. + */ + target?: boolean; + /** + * Indicates if validated value should be exposed in ValidationError. + */ + value?: boolean; + }; + /** + * Settings true will cause fail validation of unknown objects. + */ + forbidUnknownValues?: boolean; + /** + * When set to true, validation of the given property will stop after encountering the first error. Defaults to false. + */ + stopAtFirstError?: boolean; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/.babelrc b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/.babelrc new file mode 100644 index 00000000..13ef391e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/.babelrc @@ -0,0 +1,21 @@ +{ + "presets": [ + "@babel/env" + ], + "plugins": [ + ["@babel/transform-for-of", { "loose": true }], + ["@babel/plugin-syntax-import-assertions"] + ], + "env": { + "es6": { + "presets": [ + ["@babel/env", { "modules": false }] + ] + }, + "nyc": { + "plugins": [ + "babel-plugin-istanbul" + ] + } + } +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/.gitlab-ci.yml b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/.gitlab-ci.yml new file mode 100644 index 00000000..475646d1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/.gitlab-ci.yml @@ -0,0 +1,16 @@ +image: node:12 + +pages: + script: + - npm install + - npm run metadata:generate + - npm run build + - mv ./bundle ./public + - cp --recursive ./website/* ./public/ + + artifacts: + paths: + - public + + only: + - master diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/.nycrc b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/.nycrc new file mode 100644 index 00000000..0aaf149f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/.nycrc @@ -0,0 +1,27 @@ +{ + "require": [ + "@babel/register" + ], + "reporter": [ + "lcov", + "text-summary" + ], + "include": [ + "source/**/*.js" + ], + "exclude": [ + "source/findNumbers/Leniency.js", + "source/findNumbers/RegExpCache.js", + "source/findNumbers/LRUCache.js", + "source/PhoneNumberMatcher.js", + "source/formatNumberForMobileDialing.js", + "source/tools/*.js", + "**/*.test.js" + ], + "check-coverage": true, + "lines": "100", + "sourceMap": false, + "instrument": false, + "cache": true, + "all": true +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/AUTHORS b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/AUTHORS new file mode 100644 index 00000000..af0ac9a9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/AUTHORS @@ -0,0 +1,5 @@ +Google Inc. +Vonage Holdings Corp. +Ian Galpin +Ben Gertzfield +https://gitlab.com/catamphetamine \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/CHANGELOG.md b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/CHANGELOG.md new file mode 100644 index 00000000..1c1e9254 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/CHANGELOG.md @@ -0,0 +1,614 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +This changelog [only](https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/16#note_594165443) mentions the changes in the code. See [Google's changelog](https://github.com/google/libphonenumber/blob/master/release_notes.txt) for metadata changes. + +1.10.0 / 18.05.2022 +================== + +* Migrated the library to use ["ES Modules" export](https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/42). This shouldn't break anyone's code and it makes it more modern since people asked about this feature. + +1.9.48 / 06.02.2022 +================== + +* Merged a [pull request](https://gitlab.com/catamphetamine/libphonenumber-js/-/merge_requests/8) that [changed the declaration](https://github.com/catamphetamine/libphonenumber-js/issues/170#issuecomment-1030821520) of basic "string" types like `E164Number`, `NationalNumber`, `Extension`, etc. + +1.9.45 / xx.01.2022 +================== + +* Added `AsYouType.getNumberValue()` function. The function will be [used](https://gitlab.com/catamphetamine/react-phone-number-input/-/issues/113) in `react-phone-number-input` component. Returns the phone number in [`E.164`](https://en.wikipedia.org/wiki/E.164) format. For example, for country `"US"` and input `"(222) 333-4444"` it will return `"+12223334444"`. Will return `undefined` if no digits have been input, or when inputting a phone number in national format and no default country or default "country calling code" have been set. + +1.9.42 / 05.11.2021 +================== + +* Added a better called alias for `metadata.full.json` — `metadata.max.json`. + +1.9.40 / 02.11.2021 +================== + +* Improved [format selection](https://gitlab.com/catamphetamine/react-phone-number-input/-/issues/93) in `AsYouType` formatter: previously it chose the first one before there were at least 3 national (significant) number digits, now it starts filtering out formats right from the start of the national (significant) number. + +1.9.36 / 05.10.2021 +================== + +* Added a [`setExt(ext: string)`](https://gitlab.com/catamphetamine/libphonenumber-js/#setextext-string) function of a `PhoneNumber` class instance. It could be useful when formatting phone numbers stored as two separate fields: the phone number itself and the extension part. + +1.9.27 / 09.09.2021 +================== + +* [Added](https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/45) TypeScript "typings" on the exported `Metadata` class. Also rewrote `Metadata` class API [docs](https://gitlab.com/catamphetamine/libphonenumber-js#metadata) and the description of [`leading_digits`](https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits) metadata property. + +* TypeScript `Metadata` exported type was renamed to `MetadataJson` so that the `Metadata` class type could be exported as `Metadata`. + +1.9.26 / 05.09.2021 +================== + +* [Added](https://github.com/catamphetamine/libphonenumber-js/issues/406) `validatePhoneNumberLength()` function: same as `isPossiblePhoneNumber()` but tells the actual reason why a phone number is not possible: `TOO_SHORT`, `TOO_LONG`, `INVALID_LENGTH`, etc. + +```js +validatePhoneNumberLength('abcde') === 'NOT_A_NUMBER' +validatePhoneNumberLength('444 1 44') === 'INVALID_COUNTRY' +validatePhoneNumberLength('444 1 44', 'TR') === 'TOO_SHORT' +validatePhoneNumberLength('444 1 444', 'TR') === undefined +validatePhoneNumberLength('444 1 4444', 'TR') === 'INVALID_LENGTH' +validatePhoneNumberLength('444 1 44444', 'TR') === 'INVALID_LENGTH' +validatePhoneNumberLength('444 1 444444', 'TR') === undefined +validatePhoneNumberLength('444 1 4444444444', 'TR') === 'TOO_LONG' +``` + +1.9.20 / 07.06.2021 +================== + +* [Changed](https://github.com/google/libphonenumber/commit/c6277266fba8223cfc610cfb1e999deb9f876d65) formatting numbers in `IDD` format to always use the preferred IDD prefix (if defined), not just in cases when a country has multiple IDD prefixes. This means that it will output `8~10` as the prefix instead of `810` for some regions (like Uzbekistan) that have this tilde in their IDD prefix (the tilde designates that the user should wait before continuing to dial). + +1.9.11 / 10.02.2021 +================== + +* [Added](https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/29) `extract: false` option on `parsePhoneNumberFromString()`: it enables a bit "stricter" parsing in a way that it attempts to parse the entire text as a phone number rather than extracting a phone number from text. For example, with `extract: false` option, `"(213) 373-4253"` is parsed as a valid phone number, but `"Call: (213) 373-4253"` is not, because the `"Call: "` part doesn't automatically get trimmed in this case. If there's version `2.x`, I guess `extract: false` will be the default behavior because it looks more appropriate than the default "extract" behavior of Google's `libphonenumber`. + +* Added `isPossiblePhoneNumber()` and `isValidPhoneNumber()` functions, which are basically shortucts to `parsePhoneNumberFromString(text, { extract: false })` and then `.isValid()`/`.isPossible()`. + +1.9.5 / 01.12.2020 +================== + +* Fixed the [issue](https://gitlab.com/catamphetamine/libphonenumber-js/-/merge_requests/4) with `findPhoneNumbersInText()` returning incorrect `startAt` and `endsAt` positions in some cases. + +1.9.4 / 13.11.2020 +================== + +* Refactored the main ES6 export in order to support "tree shaking". + +1.9.3 / 11.11.2020 +================== + +* Added `AsYouType.getChars()` method. + +* Added formatting of international phone numbers that have been input without a leading `+`. + +1.9.2 / 08.11.2020 +================== + +* Metadata `version` is now an integer instead of a semver version. Semver versions of previously generated metadata are automatically converted into an integer version. + +1.9.1 / 08.11.2020 +================== + +* Merged the latest Google's [patch](https://github.com/google/libphonenumber/commit/55b2646ec9393f4d3d6661b9c82ef9e258e8b829) on parsing phone number extensions. + +1.9.0 / 08.11.2020 +================== + +* Refactored `AsYouType` formatter. + +* (could be a breaking change for some) Some people might have used some of the _undocumented_ `AsYouType` instance properties like `.countryCallingCode`, `.nationalNumber`, etc: those have been moved to a new `.state` object. The `.state` object is also not part of the public API, so developers shouldn't use it: use the documented getter methods instead. The `.country` property of `AsYouType` instance still stays: not because it hasn't been moved (it has been and is emulated), but because it has been part of an official (now legacy) API of `AsYouType` formatter. + +* (misc) Renamed `asYouType` instance method `getCountryCallingCode()` to `getCountryCode()`. The older name still works. + +* (could be a _build-time_ breaking change for custom metadata) For those who were generating custom metadata, the `libphonenumber-generate-metadata` console command has been moved to a separate package called `libphonenumber-metadata-generator`. The applications that're using it should do `npm install libphonenumber-metadata-generator --save-dev` and then use the new `libphonenumber-metadata-generator` command instead of the old one (only the name changed). [See instructions](https://gitlab.com/catamphetamine/libphonenumber-metadata-generator). + +1.8.6 / 05.11.2020 +================== + +* Refactored `AsYouType` formatter. + +* [Fixed](https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/23) `AsYouType` formatter not formatting numbers in some cases like, for example, certain types of Argentinian mobile numbers. + + + +* `humanReadable` option of `"IDD"` formatting has been removed: now it's always `true`. The rationale is that Google's `formatOutOfCountryCallingNumber()` original function always formats in "human readable" format. + +1.8.3 / 03.10.2020 +================== + +* (advanced) Fixed `metadata.mobile.json` and generating "custom" metadata: now it won't include non-relevant phone number types. Previously, `metadata.mobile.json` (and any other "custom"-generated metadata) included all phone number types for cases when there're several countries corresponding to the same country calling code (for example, `US` and `CA`). So, in case of `metadata.mobile.json`, for `DE` it only contained mobile phone number type, but for `US` and `CA` it contained all phone number types (this has been unnoticed until this release). Now it only contains mobile phone number types for any country, as it's supposed to be. This change didn't result in any significant "mobile" metadata size reduction: just `105 KB` -> `95 KB`. + +1.8.1 / 23.09.2020 +================== + +* Renamed `parsePhoneNumber()` named export to `parsePhoneNumberWithError()`. The older name still works. + +1.8.0 / 22.09.2020 +================== + +* Promoted `parsePhoneNumberFromString()` named export to a default export due to the name being too verbose. + +1.7.50 / 05.04.2020 +=================== + +* [Added](https://github.com/catamphetamine/libphonenumber-js/issues/388#issuecomment-609036293) some utility functions to `AsYouType`: + +```js +/** + * Returns `true` if the phone number is being input in international format. + * In other words, returns `true` if and only if the parsed phone number starts with a `"+"`. + * @return {boolean} + */ +isInternational() + +/** + * Returns the "country calling code" part of the phone number. + * Returns `undefined` if the number is not being input in international format. + * Returns "country calling code" for "non-geographic" phone numbering plans too. + * @return {string} [countryCallingCode] + */ +getCountryCallingCode() + +/** + * Returns a two-letter country code of the phone number. + * Returns `undefined` for "non-geographic" phone numbering plans. + * Returns `undefined` if no phone number has been input yet. + * @return {string} [country] + */ +getCountry() + +/** + * Returns `true` if the phone number is "possible". + * Is just a shortcut for `PhoneNumber.isPossible()`. + * @return {boolean} + */ +isPossible() + +/** + * Returns `true` if the phone number is "valid". + * Is just a shortcut for `PhoneNumber.isValid()`. + * @return {boolean} + */ +isValid() +``` + +1.7.38 / 04.02.2020 +=================== + +* Removed the `"001"` country code ("Non-Geographic Entity"): now in case of "non-geographic" phone numbers their `country` is just `undefined`. Instead, `PhoneNumber` class has an `.isNonGeographic()` method. + +* Fixed "non-geographic" numbers `.isPossible() === false` bug. + +1.7.35 / 03.02.2020 +=================== + +* Fixed "Non-Geographic Entities" (`001` country code). + +1.7.32 / 03.02.2020 +=================== + +* Refactored the code. Mostly `AsYouType` formatter. `AsYouType.input()` no longer accepts "falsy" values like `null`: instead, it only accepts strings. + +* Fixed `AsYouType` formatter bugs ([#318](https://github.com/catamphetamine/libphonenumber-js/issues/318)). + +* Added `nationalPrefix: boolean` option to `PhoneNumber.format()` — Some phone numbers can be formatted both with national prefix and without it. In such cases the library defaults to "with national prefix" (for legacy reasons). Pass `nationalPrefix: false` option to force formatting without national prefix in such cases. + +* Renamed `findNumbers(text, { v2: true })` to `findPhoneNumbersInText(text)`, and `searchNumbers(text, { v2: true })` to `searchPhoneNumbersInText(text)`. + +1.7.27 / 18.11.2019 +=================== + + * Added `getCountries()` function that returns a list of all available two-letter country codes. This is to prevent some users from having to deal with `Unknown country` error. + +1.7.6 / 11.01.2019 +================== + + * `findNumbers()`, `searchNumbers()`, `PhoneNumberMatcher` don't throw "Unknown country" error anymore: a non-existent country is simply ignored instead. Same goes for `getExampleNumber()` and `getExtPrefix()`. + + * `parsePhoneNumberFromString()` doesn't return `undefined` if a non-existent default country is passed: it simply ignores such country instead and still parses international numbers. + + * Added `isSupportedCountry(country)` function. + + * Added CDN bundles for `min`/`max`/`mobile` sub-packages. + + * Moved demo to `max` metadata (was `min` previously). + + * Added TypeScript definitions for `min`/`max`/`mobile`/`core` sub-packages. + +1.7.1 / 01.12.2018 +================== + + * Added `/min`, `/max`, `/mobile` and `/custom` subpackages pre-wired with different flavors of metadata. See the relevant readme section for more info. + + * Added `parsePhoneNumberFromString()` function (which doesn't throw but instead returns `undefined`). + +1.7.0 / 31.12.2018 +================== + + * Refactored the code to remove cyclic dependencies which caused warnings on React Native. It's not a breaking change but it's still a big code diff overall so incremented the "minor" version number. + +1.6.2 / 18.10.2018 +================== + + * Support Russian extension character "доб" as a valid one while parsing the numbers. + +1.6.1 / 18.10.2018 +================== + + * Added `.getNumber()` method to `AsYouType` formatter instance. Returns a `PhoneNumber`. + +1.6.0 / 17.10.2018 +================== + + * Added `parsePhoneNumber()` function and `PhoneNumber` class. + + * Added `v2: true` option to `findNumbers()` function. + + * Added `getExampleNumber()` function. + + * Added `isPossibleNumber()` function. + + * In `formatNumber()` renamed `National` to `NATIONAL` and `International` to `INTERNATIONAL`. The older variants still work but are considered deprecated. + + * (metadata file internal format breaking change) (doesn't affect users of this library) If anyone was using metadata files from this library bypassing the library functions (i.e. those who parsed `metadata.min.json` file manually) then there's a new internal optimization introduced in this version: previously `formats` were copy-pasted for each country of the same region (e.g. `NANPA`) while now the `formats` are only defined on the "main" country for region and other countries simply read the `formats` from it at runtime. This reduced the default metadata file size by 5 kilobytes. + +1.5.0 / 26.09.2018 +================== + + * Deprecated `findPhoneNumbers()`, `searchPhoneNumbers()` and `PhoneNumberSearch`. Use `findNumbers()`, `searchNumbers()` and `PhoneNumberMatcher` instead. The now-deprecated functions were a half-self-made implementation of Google's Java `findNumbers()` until the Java code was ported into javascript and passed tests. The port of Google's Java implementation is supposed to find numbers more correctly. It hasn't been tested by users in production yet, but the same tests as for the previous implementation of `findPhoneNumbers()` pass, so seems that it can be used in production. + +1.4.6 / 12.09.2018 +================== + + * Fixed `formatNumber('NATIONAL')` not formatting national phone numbers with a national prefix when it's marked as optional (e.g. Russia). Before it didn't add national prefix when formatting national numbers if national prefix was marked as optional. Now it always adds national prefix when formatting national numbers even when national prefix is marked as optional. + +1.4.5 / 07.09.2018 +================== + + * A bug in `matches_entirely` was found by a user which resulted in incorrect regexp matching in some cases, e.g. when there was a `|` in a regexp. This could cause incorrect `parseNumber()` results, or any other weird behaviour. + +1.4.0 / 03.08.2018 +================== + + * Changed the output of `AsYouType` formatter. E.g. before for `US` and input `21` it was outputting `(21 )` which is not good for phone number input (not intuitive and is confusing). Now it will not add closing braces which haven't been reached yet by the input cursor and it will also strip the corresponding opening braces, so for `US` and input `21` it now is just `21`, and for `213` it is `(213)`. + + * (could be a breaking change for those who somehow used `.template` property of an `AsYouType` instance) Due to the change in `AsYouType` formatting the `.template` property no longer strictly corresponds to the output, e.g. for `US` and input `21` the output is now `21` but the `.template` is still `(xxx) xxx-xxxx` like it used to be in the older versions when the output was `(21 )`. Therefore, a new function has been added to `AsYouType` instance called `.getTemplate()` which will return the _partial_ template for the currently input value, so for input `21` the output will be `21` and `.getTemplate()` will return `xx`, and for input `213` the output will be `(213)` and `.getTemplate()` will return `(xxx)`. So there is this difference between the new `.getTemplate()` function and the old `.template` property: the old `.template` property always returns the template for a fully entered phone number and the new `.getTemplate()` function always returns the template for the _partially_ entered phone number, i.e. for the partially entered number `(213) 45` it will return template `(xxx) xx` so it's a one-to-one correspondence now. + +1.3.0 / 25.07.2018 +================== + + * Fixed `parseNumber()`, `isValidNumber()` and `getNumberType()` in some rare cases (made them a bit less strict where it fits): previously they were treating `defaultCountry` argument as "the country" in case of local numbers, e.g. `isValidNumber('07624 369230', 'GB')` would be `false` because `07624 369230` number belongs to `IM` (the Isle of Man). While `IM` is not `GB` it should still be `true` because `GB` is the _default_ country, without it necessarily being _the_ country. + + * Added a new function `isValidNumberForRegion(number, country)` which mimics [Google's `libphonenumber`'s one](https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion). + +1.2.13 / 30.05.2018 +=================== + + * Fixed a previously unnoticed [bug](https://github.com/catamphetamine/libphonenumber-js/issues/217) regarding parsing RFC3966 phone URIs: previously `:` was mistakenly being considered a key-value separator instead of `=`. E.g. it was parsing RFC3966 phone numbers as `tel:+78005553535;ext:123` instead of `tel:+78005553535;ext=123`. The bug was found and reported by @cdunn. + +1.2.6 / 12.05.2018 +=================== + + * Removed `parseNumber()`'s `fromCountry` parameter used for parsing IDD prefixes: now it uses `defaultCountry` instead. `formatNumber()`'s `fromCountry` parameter stays and is not removed. + +1.2.5 / 11.05.2018 +=================== + + * Optimized metadata a bit: using `0` instead of `null`/`false` and `1` instead of `true`. + +1.2.0 / 08.05.2018 +=================== + + * Added support for [IDD prefixes](https://en.wikipedia.org/wiki/International_direct_dialing) — `parse()` now parses IDD-prefixed phones if `fromCountry` option is passed, `format()` now has an `IDD` format. + +1.1.7 / 01.04.2018 +=================== + + * Added `parseNumber()` and `formatNumber()` aliases for `parse()` and `format()`. Now these are the default ones, and `parse()` and `format()` names are considered deprecated. The rationale is that `parse()` and `format()` function names are too unspecific and can clash with other functions declared in a javascript file. And also searching in a project for `parseNumber` and `formatNumber` is easier than searching in a project for `parse` and `format`. + + * Fixed `parseRFC3966()` and `formatRFC3966()` non-custom exports. + +1.1.4 / 15.03.2018 +=================== + + * `parse()` is now more forgiving when parsing invalid international numbers. E.g. `parse('+49(0)15123020522', 'DE')` doesn't return `{}` and instead removes the invalid `(0)` national prefix from the number. + +1.1.1 / 10.03.2018 +=================== + + * Added `PhoneNumberSearch` class for asynchronous phone number search. + +1.1.0 / 09.03.2018 +=================== + + * Added `findPhoneNumbers` function. + +1.0.22 / 13.02.2018 +=================== + + * Added `parseRFC3966` and `formatRFC3966` functions which are exported. + +1.0.18 / 12.02.2018 +=================== + + * Fixed custom metadata backwards compatibility [bug](https://github.com/catamphetamine/libphonenumber-js/issues/180) introduced in `1.0.16`. All people who previously installed `1.0.16` or `1.0.17` should update. + * Refactored metadata module which now supports versioning by adding the `version` property to metadata JSON. + +1.0.17 / 07.02.2018 +=================== + + * Fixed `RFC3966` format not prepending `tel:` to the output. + * Renamed `{ possible: true }` option to `{ extended: true }` and the result is now more verbose (see the README). + * Added `possible_lengths` property in metadata: metadata generated using previous versions of the library should be re-generated with then new version. + +1.0.16 / 07.02.2018 +=================== + + * (experimental) Added `{ possible: true }` option for `parse()` for parsing "possible numbers" which are not considered valid (like Google's demo does). E.g. `parse('+71111111111', { possible: true }) === { countryCallingCode: '7', phone: '1111111111', possible: true }` and `format({ countryCallingCode: '7', phone: '1111111111' }, 'E.164') === '+71111111111'`. + * `getPhoneCode` name is deprecated, use `getCountryCallingCode` instead. + * `getPhoneCodeCustom` name is deprecated, use `getCountryCallingCodeCustom` instead. + * `AsYouType.country_phone_code` renamed to `AsYouType.countryCallingCode` (but no one should have used that property). + +1.0.0 / 21.01.2018 +================== + + * If `country: string` argument is passed to `parse()` now it becomes "the default country" rather than "restrict to country" ("restrict to country" option is gone). + * `parse()` `options` argument changed: it's now an undocumented feature and can have only a single option inside — `defaultCountry: string` — which should be passed as a string argument instead. + * Removed all previously deprecated stuff: all underscored exports (`is_valid_number`, `get_number_type` and `as_you_type`), lowercase exports for `asYouType` and `asYouTypeCustom` (use `AsYouType` and `AsYouTypeCustom` instead), `"International_plaintext"` format (use `"E.164"` instead). + * Integer phone numbers no longer [get automatically converted to strings](https://github.com/googlei18n/libphonenumber/blob/master/FALSEHOODS.md). + * `parse()`, `isValidNumber()`, `getNumberType()` and `format()` no longer accept `undefined` phone number argument: it must be either a string or a parsed number object having a string `phone` property. + +0.4.52 / 21.01.2018 +=================== + + * Added `formatExtension(number, extension)` option to `format()` + +0.4.50 / 20.01.2018 +=================== + + * Added support for phone number extensions. + * `asYouType` name is deprecated, use `AsYouType` instead (same goes for `asYouTypeCustom`). + * `is_valid_number`, `get_number_type` and `as_you_type` names are deprecated, use camelCased names instead. + * `International_plaintext` format is deprecated, use `E.164` instead. + * Added `RFC3966` format for phone number URIs (`tel:+1213334455;ext=123`). + +0.4.2 / 30.03.2017 +=================== + + * Added missing `getNumberTypeCustom` es6 export + +0.4.0 / 29.03.2017 +=================== + + * Removed `.valid` from "as you type" formatter because it wasn't reliable (gave false negatives). Use `isValidNumber(value)` for phone number validation instead. + +0.3.11 / 07.03.2017 +=================== + + * Fixed a bug when "as you type" formatter incorrectly formatted the input using non-matching phone number formats + +0.3.8 / 25.02.2017 +=================== + + * Loosened national prefix requirement when parsing (fixed certain Brazilian phone numbers parsing) + +0.3.6 / 16.02.2017 +=================== + + * Added more strict validation to `isValidNumber` + * Fixed CommonJS export for `getNumberType` + +0.3.5 / 15.02.2017 +=================== + + * Now exporting `getNumberType` function + +0.3.0 / 29.01.2017 +=================== + + * Removed `libphonenumber-js/custom.es6` exported file: now everything should be imported from the root package in ES6-capable bundlers (because tree-shaking actually works that way) + * Now custom functions like `parse`, `format` and `isValidNumber` are not bound to custom metadata: it's passed as the last argument instead. And custom `asYouType` is now not a function — instead, `asYouType` constructor takes an additional `metadata` argument + +0.2.29 / 12.01.2017 +=================== + + * Fixed `update-metadata` utility + +0.2.26 / 02.01.2017 +=================== + + * Added national prefix check for `parse` and `isPhoneValid` + +0.2.25 / 30.12.2016 +=================== + + * A bit more precise `valid` flag for "as you type" formatter + +0.2.22 / 28.12.2016 +=================== + + * Added metadata update `bin` command for end users (see README) + * Added the ability to include extra regular expressions for finer-grained phone number validation + +0.2.20 / 28.12.2016 +=================== + + * Added the ability to use custom-countries generated metadata as a parameter for the functions exported from this library + +0.2.19 / 25.12.2016 +=================== + + * Small fix for "as you type" to not prepend national prefix to the number being typed + +0.2.13 / 23.12.2016 +=================== + + * Reset `default_country` for "as you type" if the input is an international phone number + +0.2.12 / 23.12.2016 +=================== + + * (misc) Small fix for `format()` when the national number is `undefined` + +0.2.10 / 23.12.2016 +=================== + + * Better "as you type" matching: when the national prefix is optional it now tries both variants — with the national prefix extracted and without + +0.2.9 / 22.12.2016 +=================== + + * Exporting `metadata` and `getPhoneCode()` + +0.2.6 / 22.12.2016 +=================== + + * Fixed a minor bug in "as you type" when a local phone number without national prefix got formatted with the national prefix + +0.2.2 / 14.12.2016 +=================== + + * Fixed a bug when country couldn't be parsed from a phone number in most cases + +0.2.1 / 10.12.2016 +=================== + + * Added `.country_phone_code` readable property to "as you type" formatter + +0.2.0 / 02.12.2016 +=================== + + * "As you type" formatter's `country_code` argument is now `default_country_code`, and it doesn't restrict to the specified country anymore. + +0.1.17 / 01.12.2016 +=================== + + * "As you type" formatter `template` fix for national prefixes (which weren't replaced with `x`-es) + +0.1.16 / 01.12.2016 +=================== + + * "As you type" formatter now formats the whole input passed to the `.input()` function one at a time without splitting it into individual characters (which yields better performance) + +0.1.14 / 01.12.2016 +=================== + + * Added `valid`, `country` and `template` fields to "as you type" instance + +0.1.12 / 30.11.2016 +=================== + + * Managed to reduce metadata size by another 5 KiloBytes removing redundant (duplicate) phone number type regular expressions (because there's no "get phone type" API in this library). + +0.1.11 / 30.11.2016 +=================== + + * Managed to reduce metadata size by 10 KiloBytes removing phone number type regular expressions when `leading_digits` are present. + +0.1.10 / 30.11.2016 +=================== + + * Turned out those numerous bulky regular expressions (``, ``, etc) are actually required to reliably infer country from country calling code and national phone number in cases where there are multiple countries assigned to the same country phone code (e.g. NANPA), so I've included those big regular expressions for those ambiguous cases which increased metadata size by 20 KiloBytes resulting in a total of 90 KiloBytes for the metadata. + +0.1.9 / 30.11.2016 +=================== + + * Small fix for "as you type" formatter: replacing digit placeholders (punctuation spaces) with regular spaces in the output + +0.1.8 / 29.11.2016 +=================== + + * Fixed a bug when national prefix `1` was present in "as you type" formatter for NANPA countries (while it shouldn't have been present) + +0.1.7 / 29.11.2016 +=================== + + * (may be a breaking change) renamed `.clear()` to `.reset()` for "as you type" formatter + +0.1.5 / 29.11.2016 +=================== + + * Better `asYouType` (better than Google's original "as you type" formatter) + +0.1.0 / 28.11.2016 +=================== + + * Added `asYouType` and `isValidNumber`. + +0.0.3 / 24.11.2016 +=================== + + * Added `format` function. + +0.0.1 / 24.11.2016 +=================== + + * Initial release. `parse` function is working. \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/LICENSE b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/LICENSE new file mode 100644 index 00000000..15a19272 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2016 @catamphetamine + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/LICENSE.Apache b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/LICENSE.Apache new file mode 100644 index 00000000..21254fc7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/LICENSE.Apache @@ -0,0 +1,176 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/METADATA.md b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/METADATA.md new file mode 100644 index 00000000..11a8e410 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/METADATA.md @@ -0,0 +1,145 @@ +# Metadata + +This document describes `metadata.json` that's generated from `PhoneNumberMetadata.xml` by running `npm run metadata:generate` command. It serves as an intermediary step for generating all other metadata (such as `metadata.min.json`), and is therefore not included in the final distribution. See [`PhoneNumberMetadata.xml`](https://github.com/google/libphonenumber/blob/master/resources/PhoneNumberMetadata.xml) in Google's repo. They also have some [docs](https://github.com/google/libphonenumber/blob/master/resources/phonemetadata.proto) on metadata fields too. + +## Country calling codes + +`country_calling_codes` — A list of countries by country calling code: some country calling codes are shared between several countries (for example, United States and Canada). + +## Countries + +`countries` — Contains metadata for each country. + +### `phone_code` + +Country calling code, duplicated here for easy lookup of country calling code by country. Could be considered "reverse lookup" compared to `country_calling_codes`. + +### `idd_prefix` + +[International Direct Dialing prefix](https://wikitravel.org/en/International_dialling_prefix) when calling out of this country. "IDD prefixes" are defined for every country and are used to call from one country to another. "IDD prefixes" originated when telephony was still analogue and analogue phones didn't have a `+` input. Nowadays, mobile phone users dial international numbers using a `+` rather than an "IDD prefix", but the mobile phone operating system replaces the `+` with an "IDD prefix" under the hood. For example, to call a Russian number `+7 800 555 35 35` from US the dialled digits would be `01178005553535` where `011` is an "IDD prefix". + +### `default_idd_prefix` + +When a country supports different "IDD prefixes", the `idd_prefix` is a regular expression and `default_idd_prefix` is the default "IDD prefix". + +### `ext` + +Localized `" ext. "` prefix for this country. For example, in Russia it's `" доб. "`. Is only used for formatting phone numbers having "extensions" (usually these're organizational phone numbers: businesses, governmental institutions, educational institutions, etc). + +### `leading_digits` + +National (significant) number "leading digits" pattern. It's only defined for about 20% of the countries, most of which are countries sharing the same "country calling code". At the same time, two countries sharing the same "country calling code" doesn't necessarily imply that the "secondary" country has a `leading_digits` pattern defined. + +For example, USA and Canada share the same `1` country calling code, but neither of them have a `leading_digits` pattern defined. On the other hand, Antigua and Barbuda also shares the same `1` country calling code, and its `leading_digits` pattern is `"268"`, so if an international phone number starts with `+1268` then it's certain that it belongs to Antigua and Barbuda, so "leading digits" are, in some cases, a means of determining which one of the countries sharing the same country calling code does a phone number belong to. + +While in most cases a `leading_digits` pattern is a sequence of digits like `"268"` for Antigua and Barbuda, in some cases it's a pattern like `"8001|8[024]9"` for Dominican Republic. + +Overall, `leading_digits` patterns are only used as a performance speed-up trick when determining which country a phone number belongs to, which is still simpler than looking for a match against precise phone number patterns of every country sharing a given country calling code. + +For that reason, matching a `leading_digits` pattern is a sufficient but not necessary condition for a phone number to belong to the country: if a `leading_digits` pattern exists and a phone number matches it that it's certain that the phone number belongs to the country, and no other country. But, if there's no `leading_digits` pattern, or if the phone number doesn't match it, then one can't say that the phone number doesn't belong to the country. + +For example, "toll free" numbers starting with `800` are valid for all countries having `1` country calling code, so it doesn't make sense to include `800` in their `leading_digits` patterns. But, at the same time, those "toll free" numbers could be thought of as an unrelated edge case that can be ignored if the application only deals with human phone numbers. But, at the same time, it doesn't necessarily mean that there're no other exceptions. So I'd say that `leading_digits` has a meaning of "most likely" rather than "necessarily". + +### `national_number_pattern` + +A regular expression covering all possible phone numbers for the country. + +### `national_prefix` + +"National prefix", also known as "National Direct Dialing prefix". In the early days of analogue telephony, countries were divided into "areas" (for example, cities), and calling within an area (for example, a city) would only involve dialing a phone number without "area code" digits, but calling from one "area" (city) to another (city) would require dialing a "national prefix" first, so that the analogue telephone station would switch the user into "nation-wide" calling mode first. + +For example, in New Zealand, the number that would be locally dialled as `09 345 3456` would be dialled from overseas as `+64 9 345 3456`. In this case, `0` is the national prefix. + +Other national prefix examples: `1` in US, `0` in France and UK, `8` in Russia. + +### `national_prefix_for_parsing` / `national_prefix_transform_rule` + +`national_prefix_for_parsing` is used to parse a [national (significant) number](https://github.com/catamphetamine/libphonenumber-js#national-significant-number) from a phone number. Contrary to its name, `national_prefix_for_parsing` is used not just for parsing a "national prefix" out of a phone number (just `national_prefix` property would be sufficient for that), but also for parsing any other possible phone number prefixes out of a phone number, if there're any, and for any other cases like fixing a missing area code. So it's actually not a "national prefix for parsing", but rather a "national (significant) number extraction mechanism". + +`national_prefix_for_parsing` is a regular expression that could (or could not) have some ["capturing groups"](https://www.regular-expressions.info/refcapture.html). If there're any "capturing groups", then `national_prefix_for_parsing` is accompanied by `national_prefix_transform_rule`: yet another incorrect name by Google, because `national_prefix_transform_rule` is not a "rule for transforming a national prefix", but rather a "template to transform the captured groups into a national (significant) number". + +There're different types of possible "prefixes" a phone number could have. One example are ["carrier codes"](https://www.bandwidth.com/glossary/carrier-identification-code-cic/). If a `national_prefix_transform_rule` is defined and the `national_prefix_for_parsing` has more than one "capturing group", then the second "capturing group" is a "carrier code". If a `national_prefix_transform_rule` is not defined and the `national_prefix_for_parsing` has at least one "capturing group", then the first "capturing group" is a "carrier code". + +For example, countries like Argentina and Brazil do use ["carrier codes"](https://www.bandwidth.com/glossary/carrier-identification-code-cic/), and their `national_prefix_for_parsing` regular expressions include both national prefix and all possible "carrier codes". So, for example, to dial the number `2222-2222` in Fortaleza, Brazil (national prefix `0`, area code `85`) using the long distance carrier Oi (selection code `31`), one would dial `0 31 85 2222 2222`, and, for parsing such numbers, Brazil's `national_prefix_for_parsing` is `0(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\d{10,11}))?`, which matches the whole `0318522222222` number with captured group #1 being `31` ("carrier code") and captured group #2 being `8522222222` (which is also the actual national (significant) number, because `national_prefix_transform_rule` is `$2`). + +Another example of a "prefix": some countries support "utility" prefixes, like Australia (national prefix `0`) that supports `1831` prefix to [hide your phone number](https://exchange.telstra.com.au/how-to-block-your-number-when-calling-someone/) when calling somebody (and `1832` to un-hide it when in "permanent" hiding mode), and so Australia's `national_prefix_for_parsing` is `0|(183[12])`, which matches the `1831` prefix as group #1. + +Another example of using a `national_prefix_for_parsing` / `national_prefix_transform_rule` pair, in this case for reasons completely unrelated to any "prefixes", are U.S. Virgin Islands (national prefix `1`) whose phone numbers always start with a `340` area code because there's no other area code in this tiny (`346.36` square kilometers) island country. So it's common for its citizens to call `693-4800` instead of `(340) 693-4800`, and Google's `libphonenumber` handles this case by `national_prefix_for_parsing` being `1|([2-9]\d{6})$`, which matches `6934800` number as group #1, which is later used in `national_prefix_transform_rule`, which is `340$1`, meaning that it prepends `340` to the group #1 being the `6934800` number, resulting in `3406934800` national (significant) number. + +If `national_prefix_for_parsing` matches any "capturing groups", then it doesn't provide the actual national prefix being extracted, or even guarantee the fact that there is a national prefix: in those cases, it just converts a national number to a national (significant) number by applying a `national_prefix_for_parsing`/`national_prefix_transform_rule` transform to it. + +For example, in `AG` country, phone numbers are same as in the `US`, with the only difference that they start with `268`. The `national_prefix_for_parsing` is `1|([457]\\d{6})$`. If a number is entered with a leading `1` (`"1 268 464 1234"`), then there're no "capturing groups" in that regular expression, so the national prefix is the entire substring matched by the regular expression: `"1"`. If a number is entered without a leading `1` (`"268 464 1234"`), then the regular expression doesn't match, and the number doesn't have a national prefix (which is true). If a number is entered without the "area code" `268` (just `"464 1234"`), then `national_prefix_for_parsing` regular expression matches with the "capturing group" being `"4641234"`, and then `national_prefix_transform_rule` `268$1` transforms that "capturing group" into a `2684641234` national (significant) number; and even though `national_prefix_for_parsing` did match, the phone number didn't have any national prefix. + +Another example is Mexico (`MX`) that has no `national_prefix_transform_rule` and has `national_prefix_for_parsing` `0(?:[12]|4[45])|1`: the `?:` defines a "non-capturing group", so `national_prefix_for_parsing` has no "capturing groups", and, therefore, matches the actual national prefix of a phone number; that national prefix isn't used anywhere though: it's simply discarded, because all `format`s of Mexico have `national_prefix_is_optional_when_formatting: true`, meaning that a national prefix isn't used when formatting a phone number using any of those `format`s. + +If no `national_prefix_for_parsing` has been defined, but `national_prefix` has been defined, then `national_prefix_for_parsing` is equal to `national_prefix`. + +Whatever national prefix has been extracted, it's not used anywhere: instead, `national_prefix_formatting_rule` of a `format` already has a national prefix "hardcoded". For example, in Russia, `national_prefix` is `8`, and `national_prefix_formatting_rule` of all `format`s is `8 ($1)`. So the code doesn't store the extracted national prefix anywhere: only the fact that the national prefix has been extracted is used to decide whether to apply `national_prefix_formatting_rule` when formatting the parsed number. + +### `types` + +Regular expressions for all possible phone number types for this country: fixed line, mobile, toll free, premium rate, [etc](https://github.com/catamphetamine/libphonenumber-js#gettype). + +#### `type` `pattern` + +A regular expression for a national (significant) number matching the type. + +#### `type` `possible_lengths` + +Possible lengths of a national (significant) number matching the type. Is always present. + +### `examples` + +Phone number examples for each of the phone number `types`. + +### `possible_lengths` + +Possible lengths of a national (significant) number for this numbering plan. This property is a combination of `possible_lengths` of all `types`. Is always present. + +### `formats` + +Describes all possible phone number formats for this country. May be missing if phone numbers aren't formatted for this country (there're many such countries, usually small islands). + +#### `format` `pattern` + +A regular expression for a phone number supported by this format. + +For example, in `US` there's only one possible phone number format, and it's `pattern` is `(\d{3})(\d{3})(\d{4})`, meaning that the national (significant) number must be `3 + 3 + 4 = 10` digits long (for example, `2133734253`), and is divided into three groups of digits for formatting (in this case, `213`, `373` and `4253`). + +#### `format` `format` + +Defines how the aforementioned groups of digits are combined when formatting a phone number. + +For example, in `US` there's only one possible phone number format, and it's `format` is `($1) $2-$3`, so `2133734253` national (significant) number is formatted as `(213) 373-4253`. + +#### `format` `international_format` + +Parentheses arond "area code" only make sense when formatting a national phone number, so international phone numbers don't use them, hence the explicit `international_format` in addition to the national `format`. + +For example, in `US` there's only one possible phone number format, and it's `format` is `($1) $2-$3`, while its `international_format` is `$1-$2-$3`, meaning that `2133734253` national (significant) number is formatted as `+1 213 373-4253` when formatted for international dialing. + +#### `format` `national_prefix_formatting_rule` + +`national_prefix_formatting_rule` is sometimes used to define how national prefix changes how a phone number should be formatted. For example, in Russia (national prefix `8`), all `format`s have `national_prefix_formatting_rule` `8 ($1)`, meaning that a `88005553535` phone number is first stripped of `8` national prefix into a `8005553535` national (significant) number, then the national (significant) number is first parsed using `format.pattern` `(\d{3})(\d{3})(\d{2})(\d{2})` and then formatted using `format.format` `$1 $2-$3-$4` while also replacing `$1` in that `format.format` with `format.national_prefix_formatting_rule` which is `8 ($1)`, so the resulting `format.format` becomes `8 ($1) $2-$3-$4`, and so the formatted number is `8 (800) 555-35-35`. Have the phone number been input without the `8` national prefix, the `national_prefix_formatting_rule` wouldn't be applied, and `format.format` would stay `$1 $2-$3-$4`, and the formatted phone number would be `800 555-35-35`. + +In some cases (for example, in Argentina), `format.format` may exclude `$1`, so in those cases `national_prefix_formatting_rule` being `0$1` would actually mean `0$2`, because there's no `$1` "capturing group" in `format.format`, but there is `$2` "capturing group" there. + +#### `format` `national_prefix_is_optional_when_formatting` + +This field specifies whether the national prefix can be omitted when formatting a number in national format. For example, a UK (`GB`) number would be formatted by `libphonenumber` as `020 XXXX XXXX`. Have they seen this number commonly being written without the leading `0` (like `(20) XXXX XXXX`), they would have updated the metadata with `national_prefix_is_optional_when_formatting` being `true` for that `format`, so that such number, when formatted, wouldn't have `national_prefix_formatting_rule` applied to it. Otherwise, if `national_prefix_is_optional_when_formatting` is not set to `true`, `national_prefix_formatting_rule` is always applied (when present). + +#### `format` `domestic_carrier_code_formatting_rule` + +Specifies how a carrier code (`$CC`) together with the first group (`$FG`) in a national significant number should be formatted, if carrier codes are used when formatting the number for dialing. For example, if a `format`'s `format` is `$1 $2-$3` and `domestic_carrier_code_formatting_rule` is `$NP $CC ($FG)`, then a national number, when having a carrier code, is formatted as `national-prefix carrier-code ($1) $2-$3`. + +For example, Google's `libphonenumber` has `formatNumberForMobileDialing()` function that returns a number formatted in such a way that it can be dialed from a mobile phone within a specific country, and it adds ["carrier codes"](https://www.bandwidth.com/glossary/carrier-identification-code-cic/) when dialing within certain countries (Brazil — when dialing from a mobile phone to any number, Colombia — when dialing from a mobile phone to a fixed line number). Since `libphonenumber-js` is not a dialing library, it doesn't provide such a function and doesn't use "carrier codes" when formatting phone numbers, so this property is ignored in this library. + +#### `format` `leading_digits_patterns` + +"Leading digits" patterns are used in `AsYouType` formatter to choose a format suitable for the phone number being input: if a phone number's "leading digits" match those of a format, then that format is used to format the phone number being input. Each subsequent leading digits pattern in `leading_digits_patterns` array requires one more leading digit. + +## Non-geographic + +There're [calling codes](https://github.com/catamphetamine/libphonenumber-js#non-geographic) that don't correspond to any country. For example, "Global Mobile Satellite System" (`+881`). Such phone numbering systems are called "non-geographic entities" in Google's code. These "non-geographic entitites" reside in their own `nonGeographic` property, analogous to the `countries` property. `nonGeographic` is an object with keys being calling codes of the corresponding "non-geographic entities", and values being same as the values of the `countries` property. + +"Non-geographic" numbering plans don't have [`possible_lengths`](#possible-lengths). \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/README.md b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/README.md new file mode 100644 index 00000000..18009ced --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/README.md @@ -0,0 +1,1782 @@ +# libphonenumber-js + +[![npm version](https://img.shields.io/npm/v/libphonenumber-js.svg?style=flat-square)](https://www.npmjs.com/package/libphonenumber-js) +[![npm downloads](https://img.shields.io/npm/dm/libphonenumber-js.svg?style=flat-square)](https://www.npmjs.com/package/libphonenumber-js) +[![coverage](https://img.shields.io/coveralls/catamphetamine/libphonenumber-js/master.svg?style=flat-square)](https://coveralls.io/r/catamphetamine/libphonenumber-js?branch=master) + +A simpler and smaller rewrite of Google Android's [`libphonenumber`](https://github.com/google/libphonenumber/blob/master/java/libphonenumber/) library in javascript. + +[See Demo](https://catamphetamine.gitlab.io/libphonenumber-js/) + +If you’re trying to build a React component with it, take a look at [`react-phone-number-input`](https://www.npmjs.com/package/react-phone-number-input). + +## LibPhoneNumber + +Google's [`libphonenumber`](https://github.com/googlei18n/libphonenumber) is an ultimate phone number formatting and parsing library developed by Google for [Android](https://en.wikipedia.org/wiki/Android_(operating_system)) phones. It is written in C++ and Java, and, while it has an [official autogenerated javascript port](https://github.com/googlei18n/libphonenumber/tree/master/javascript), that port is tightly coupled to Google's `closure` javascript framework, and, when compiled into a [bundle](https://github.com/ruimarinho/google-libphonenumber), weighs about 550 kB (350 kB code + 200 kB metadata). + +With many websites today asking for user's phone number, the internet could benefit from a simpler and smaller library that would just get the parsing and formatting right, and that's what `libphonenumber-js` is. + + + + + +## Difference from Google's `libphonenumber` + + * Smaller footprint: `145 kB` (65 kB code + 80 kB sufficient metadata) vs the original Google's `550 kB` (350 kB code + 200 kB full metadata). + + * Can search for phone numbers in text (Google's autogenerated javascript port can't). + + * Aims at parsing and formatting people's phone numbers while skipping all other "special" cases like: + + * Emergency phone numbers like `911`. + + * ["Short codes"](https://www.tatango.com/blog/sms-short-codes-what-every-business-needs-to-know/): short SMS-only numbers like `12345`. + + * Numbers starting with a [`*`](https://github.com/googlei18n/libphonenumber/blob/master/FALSEHOODS.md), like `*555`. + + * Alphabetic phone numbers like `1-800-GOT-MILK`: people don't input their phone numbers like that, it's only used in advertisement. + + * "Two-in-one" phone numbers with "combined" extensions like `(530) 583-6985 x302/x2303` that in fact represent two separate phone numbers, because the library can only return a single phone number when parsing a string. + + * Overall, doesn't support formatting non-"conventional" numbers like numbers with the "area code" omitted or "alternative" "short" numbers like [Australian `13`-smart numbers](https://github.com/catamphetamine/libphonenumber-js/issues/400). For example, when dialing phone numbers within the same "area", people sometimes skip the "area code", and dial, say, `456-789` instead of `(123) 456-789`. Google's `libphonenumber` supports formatting such numbers (with "area code" omitted) because it is used for dialing on the Android phone operating system. Because `libphonenumber-js` isn't a phone operating system and is not used for actual dialing — only for inputting internationally-dialable personal phone numbers — it doesn't format such "short" phone numbers because it doesn't need to support those. + + * Any other "miscellaneous" cases that're considered irrelevant for the task. + + * Doesn't provide "geolocation" by a phone number. + + * Doesn't use hyphens or brackets when formatting international phone numbers, only whitespace (seems more logical this way). + + * Doesn't set `.country` to `"001"` when parsing ["non-geographic"](#non-geographic) phone numbers (like mobile satellite communications services). Instead, `.country` is `undefined` in those cases, and a developer can call `.isNonGeographic()` method of the `PhoneNumber` instance to find out whether the parsed phone number is a "non-geographic" one. + + * Doesn't provide the equivalent of `libphonenumber`'s `formatNumberForMobileDialing()` function that formats a number for dialing using a mobile phone within the country: dialing local numbers from a mobile phone is a bit more complicated in some countries like Brazil or Colombia where they require adding ["carrier codes"](https://www.bandwidth.com/glossary/carrier-identification-code-cic/) when making a call. Since `libphonenumber-js` is not a dialing library (we're not Android phone operaing system), it doesn't prepend any "carrier codes" when formatting phone numbers, though it does parse such "carrier codes" correctly. + + + + + + + +## GitHub + +On March 9th, 2020, GitHub, Inc. silently [banned](https://medium.com/@catamphetamine/how-github-blocked-me-and-all-my-libraries-c32c61f061d3) my account (erasing all my repos, issues and comments, even in my employer's private repos) without any notice or explanation. Because of that, all source codes had to be promptly moved to GitLab. The [GitHub repo](https://github.com/catamphetamine/libphonenumber-js) is now only used as a backup (you can star the repo there too), and the primary repo is now the [GitLab one](https://gitlab.com/catamphetamine/libphonenumber-js). Issues can be reported in any repo. + +## Install + +via [npm](https://npmjs.org/) + +```sh +$ npm install libphonenumber-js --save +``` + +via [yarn](https://yarnpkg.com) + +```sh +$ yarn add libphonenumber-js +``` + +If you're not using a bundler then use a [standalone version from a CDN](https://gitlab.com/catamphetamine/libphonenumber-js/#cdn). + +## Use + + + +### Parse phone number + + + +```js +import parsePhoneNumber from 'libphonenumber-js' + +const phoneNumber = parsePhoneNumber(' 8 (800) 555-35-35 ', 'RU') +if (phoneNumber) { + phoneNumber.country === 'RU' + phoneNumber.number === '+78005553535' + phoneNumber.isValid() === true + // Note: `.getType()` requires `/max` metadata: see below for an explanation. + phoneNumber.getType() === 'TOLL_FREE' +} +``` + + + +### Validate phone number + +```js +import { + isPossiblePhoneNumber, + isValidPhoneNumber, + validatePhoneNumberLength +} from 'libphonenumber-js' + +isPossiblePhoneNumber('8 (800) 555-35-35', 'RU') === true +isValidPhoneNumber('8 (800) 555-35-35', 'RU') === true + +validatePhoneNumberLength('8 (800) 555', 'RU') === 'TOO_SHORT' +validatePhoneNumberLength('8 (800) 555-35-35', 'RU') === undefined +``` + +`isPossiblePhoneNumber()` only validates phone number length, while `isValidPhoneNumber()` validates both phone number length and the actual phone number digits. + +`validatePhoneNumberLength()` is just a more detailed version of `isPossiblePhoneNumber()` — if the phone number length is invalid, it returns the actual reason: `TOO_SHORT`, `TOO_LONG`, etc. + +### Format phone number + + + +```js +import parsePhoneNumber from 'libphonenumber-js' + +const phoneNumber = parsePhoneNumber('+12133734253') + +phoneNumber.formatInternational() === '+1 213 373 4253' +phoneNumber.formatNational() === '(213) 373-4253' +phoneNumber.getURI() === 'tel:+12133734253' +``` + + + +### "As You Type" formatter + +```js +import { AsYouType } from 'libphonenumber-js' + +new AsYouType().input('+12133734') +// Outputs: '+1 213 373 4' + +new AsYouType('US').input('2133734') +// Outputs: '(213) 373-4' +``` + +### Full-text search + + + +```js +import { findPhoneNumbersInText } from 'libphonenumber-js' + +findPhoneNumbersInText(` + For tech support call +7 (800) 555-35-35 internationally + or reach a local US branch at (213) 373-4253 ext. 1234. +`, 'US') + +// Outputs: +// +// [{ +// number: PhoneNumber { +// country: 'RU', +// countryCallingCode: '7', +// number: '+78005553535', +// nationalNumber: '8005553535' +// }, +// startsAt : 22, +// endsAt : 40 +// }, { +// number: PhoneNumber { +// country: 'US', +// countryCallingCode: '1', +// number: '+12133734253', +// nationalNumber: '2133734253', +// ext: '1234' +// }, +// startsAt : 86, +// endsAt : 110 +// }] +``` + +## "min" vs "max" vs "mobile" vs "core" + +This library provides different "metadata" sets, "metadata" being a list of phone number parsing and formatting rules for all countries. The complete list of those rules is huge, so this library provides a way to optimize bundle size by choosing between `max`, `min`, `mobile` and "custom" metadata: + +* `max` — The complete metadata set, is about `145 kilobytes` in size (`libphonenumber-js/metadata.max.json`). Choose this when you need the most strict version of `isValid()`, or if you need to detect phone number type ("fixed line", "mobile", etc). + +* `min` — (default) The smallest metadata set, is about `80 kilobytes` in size (`libphonenumber-js/metadata.min.json`). Choose this by default: when you don't need to detect phone number type ("fixed line", "mobile", etc), or when a basic version of `isValid()` is enough. The `min` metadata set doesn't contain the regular expressions for phone number digits validation (via [`.isValid()`](#isvalid)) and detecting phone number type (via [`.getType()`](#gettype)) for most countries. In this case, `.isValid()` still performs some basic phone number validation (for example, checks phone number length), but it doesn't validate phone number digits themselves the way `max` metadata validation does. + +* `mobile` — The complete metadata set for dealing with mobile numbers _only_, is about `95 kilobytes` in size (`libphonenumber-js/metadata.mobile.json`). Choose this when you need `max` metadata and when you _only_ accept mobile numbers. Other phone number types will still be parseable, but they won't be recognized as being "valid" (`.isValid()` will return `false`). + +To use a particular metadata set, simply import functions from a relevant sub-package: + +* `libphonenumber-js/max` +* `libphonenumber-js/min` +* `libphonenumber-js/mobile` + +Importing functions directly from `libphonenumber-js` effectively results in using the `min` metadata. + +Sometimes (rarely) not all countries are needed, and in those cases developers may want to [generate](#customizing-metadata) their own "custom" metadata set. For those cases, there's `libphonenumber-js/core` sub-package which doesn't come pre-packaged with any default metadata set and instead accepts metadata as the last argument of each exported function. + +## Definitions + +### Country code + +A "country code" is a [two-letter ISO country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) (like `US`). + +This library supports all [officially assigned](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements) ISO alpha-2 country codes, plus a few extra ones like: `AC` ([Ascension Island](https://en.wikipedia.org/wiki/Ascension_Island)), `TA` ([Tristan da Cunha](https://en.wikipedia.org/wiki/Tristan_da_Cunha)), `XK` ([Kosovo](https://en.wikipedia.org/wiki/Kosovo)). + + + +To check whether a country code is supported, use [`isSupportedCountry()`](#issupportedcountrycountry-string-boolean) function. + +### Non-geographic + +There're several calling codes that don't belong to any country: + +* `+800` — [Universal International Toll Free Number](https://en.wikipedia.org/wiki/Toll-free_telephone_number) +* `+808` — [Universal International Shared Cost Number](https://en.wikipedia.org/wiki/Shared-cost_service) +* `+870` — [Inmarsat Global Limited](https://en.wikipedia.org/wiki/Inmarsat) +* `+878` — [Universal Personal Telecommunications](https://en.wikipedia.org/wiki/Universal_Personal_Telecommunications) +* `+881` — [Global Mobile Satellite System](https://en.wikipedia.org/wiki/Global_Mobile_Satellite_System) +* `+882` and `+883` — [International Networks](https://en.wikipedia.org/wiki/International_Networks_(country_code)) +* `+888` — [United Nations Office for the Coordination of Humanitarian Affairs](https://en.wikipedia.org/wiki/United_Nations_Office_for_the_Coordination_of_Humanitarian_Affairs#International_Dialing_Code) +* `+979` — [International Premium Rate Service](https://en.wikipedia.org/wiki/International_Premium_Rate_Service) + +Such phone numbering plans are called "non-geographic", and their phone numbers have `country` set to `undefined`. + +### National (significant) number + +"National (significant) number" are the national phone number digits (without "national prefix"). For example, `+1 213 373 4253` (or `(213) 373-4253` in national format) is a US phone number and its national (significant) number is `213 373 4253`. Another example is `+33 1 45 45 32 45` (or `01 45 45 32 45` in national format) which is a [French](https://en.wikipedia.org/wiki/Telephone_numbers_in_France) phone number where they add `0` "national prefix" when writing phone numbers in national format; in this case the national (significant) number is `1 45 45 32 45`. + +### Country calling code + +"Country calling code" are the digits between the `+` and the national (significant) number when the number is written in international format. E.g. for US country calling code is `1` and for France it's `33`. Several countries can share the same "country calling code", e.g. [NANPA](https://en.wikipedia.org/wiki/North_American_Numbering_Plan) countries like USA and Canada sharing the same `1` country calling code. + +## API + +### parsePhoneNumber(string, [options or defaultCountry]): PhoneNumber + +Parses a phone number from `string`. + +Can be imported both as a "default" export and as a "named" export `parsePhoneNumberFromString`. + +```js +import parsePhoneNumber from 'libphonenumber-js' +// Or: import { parsePhoneNumberFromString as parsePhoneNumber } from 'libphonenumber-js' + +const phoneNumber = parsePhoneNumber('(213) 373-42-53 ext. 1234', 'US') +if (phoneNumber) { + console.log(phoneNumber.formatNational()) +} +``` + +Returns an instance of [`PhoneNumber`](#phonenumber) class, or `undefined` if no phone number could be parsed: for example, when the string contains no phone number, or the phone number starts with a non-existent [country calling code](#country-calling-code), etc. + +Available `options`: + +* `defaultCountry: string` — Default [country](#country-code) for parsing national numbers. Instead of passing `options.defaultCountry` one could pass `defaultCountry` argument directly. + +* `defaultCallingCode: string` — Default [calling code](#country-calling-code) for parsing national numbers. Some numbering plans are for ["non-geographic numbering plans"](#non-geographic) and they don't have a country code, so `defaultCountry` can't be specified for them. + +* `extract: boolean` — Defines the ["strictness"](#strictness) of parsing a phone number. + +If a developer wants to know the exact reason why the phone number couldn't be parsed then they can use `parsePhoneNumberWithError()` function which throws the exact error: + +```js +import { parsePhoneNumberWithError, ParseError } from 'libphonenumber-js' + +try { + const phoneNumber = parsePhoneNumberWithError('(213) 373-42-53 ext. 1234', 'US') +} catch (error) { + if (error instanceof ParseError) { + // Not a phone number, non-existent country, etc. + console.log(error.message) + } else { + throw error + } +} +``` + +
+Possible errors + +* `NOT_A_NUMBER` — When the supplied string is not a phone number. For example, when there are no digits: `"abcde"`, `"+"`. + +* `INVALID_COUNTRY` + + * When `defaultCountry` doesn't exist (or isn't supported by this library yet): `parsePhoneNumber('(111) 222-3333', 'XX')`. + * When parsing a non-international number without a `defaultCountry`: `parsePhoneNumber('(111) 222-3333')`. + * When an international number's country calling code doesn't exist: `parsePhoneNumber('+9991112223333')`. + +* `TOO_SHORT` — When the number is too short. For example, just 1 or 2 digits: `"1"`, `"+12"`. + +* `TOO_LONG` — When the national (significant) number is too long (17 digits max) or when the string being parsed is too long (250 characters max). +
+ +#### Strictness + +By default, the parsing function will attempt to extract a phone number from an input string even in cases like `"Support: (213) 373-4253 (robot)"`, which mimicks the behavior of the original Google's `libphonenumber` library, and is the default behavior for legacy reasons. However, if "strict" input validation is required, one can pass `extract: false` flag to demand that the whole input string be a viable phone number. + +```js +parsePhoneNumber('Call: (213) 373-4253', 'US') === PhoneNumber + +// When parsing the same string with `extract: false` flag, +// it will return `undefined`, because a phone number can't +// contain letters or a colon. +parsePhoneNumber('Call: (213) 373-4253', { + defaultCountry: 'US', + extract: false +}) === undefined +``` + +### `PhoneNumber` + + + +`PhoneNumber` class instance has the following properties: + +* `number: string` — The phone number in [`E.164`](https://en.wikipedia.org/wiki/E.164) format. Example: `"+12133734253"`. +* `countryCallingCode: string` — The [country calling code](#country-calling-code). Example: `"1"`. +* `nationalNumber: string` — The [national (significant) number](#national-significant-number). Example: `"2133734253"`. +* `country: string?` — The [country code](#country-code). Example: `"US"`. Will be `undefined` when no `country` could be derived from the phone number. For example, when several countries have the same `countryCallingCode` and the `nationalNumber` doesn't look like it belongs to any of them. Or when a number belongs to a [non-geographic numbering plan](#non-geographic). +* `ext: string?` — The [phone number extension](https://en.wikipedia.org/wiki/Extension_(telephone)), if any. Example: `"1234"`. +* `carrierCode: string?` — The ["carrier code"](https://www.voip-info.org/carrier-identification-codes/), if any. Example: `"15"`. "Carrier codes" are only used in Colombia and Brazil and only when dialing within those countries from a mobile phone to a fixed line number. + +`PhoneNumber` class instance provides the following methods: + +#### `setExt(ext: string)` + +Sets a [phone number extension](https://en.wikipedia.org/wiki/Extension_(telephone)) of a phone number. Could be useful when formatting phone numbers stored as two separate fields: the phone number itself and the extension part. + +```js +const phone = "+12133734253" +const phoneExt = "1234" + +const phoneNumber = parsePhoneNumber(phone) +if (phoneNumber) { + if (phoneExt) { + phoneNumber.setExt(phoneExt) + } + // Returns "(213) 373-4253 ext. 1234" + return phoneNumber.formatNational() +} +``` + +#### `format(format: string, [options]): string` + +Formats the phone number into a string according to a `format`. + +Available `format`s: + + * `NATIONAL` — Example: `"(213) 373-4253"` + * `INTERNATIONAL` — Example: `"+1 213 373 4253"` + * [`E.164`](https://en.wikipedia.org/wiki/E.164) — Example: `"+12133734253"` + * [`RFC3966`](https://www.ietf.org/rfc/rfc3966.txt) (the phone number URI) — Example: `"tel:+12133734253;ext=123"` + * `IDD` — ["Out-of-country" dialing](https://wikitravel.org/en/International_dialling_prefix) format. Example: `"011 7 800 555 35 35"` for `+7 800 555 35 35` being called out of `options.fromCountry === "US"`. If no `options.fromCountry` was passed or if there's no default IDD prefix for `options.fromCountry` then returns `undefined`. + +Available `options`: + + * `formatExtension(number, extension)` — Formats `number` and `extension` into a string. By default returns `${number} ext. ${extension}` for almost all countries with rare exceptions of some special cases like `${number} x${extension}` for UK. + + * `nationalPrefix: Boolean` — Some phone numbers can be formatted both with national prefix and without it. In such cases the library defaults to "with national prefix" (for legacy reasons). Pass `nationalPrefix: false` option to force formatting without national prefix in such cases. + +Examples: + +```js +import parsePhoneNumber from 'libphonenumber-js' + +const phoneNumber = parsePhoneNumber('+12133734253') + +phoneNumber.format("NATIONAL") === '(213) 373-4253' +phoneNumber.format("INTERNATIONAL") === '+1 213 373 4253' +phoneNumber.format("RFC3966") === 'tel:+12133734253' + +// Aliases +phoneNumber.formatNational() === phoneNumber.format("NATIONAL") +phoneNumber.formatInternational() === phoneNumber.format("INTERNATIONAL") +phoneNumber.getURI() === phoneNumber.format("RFC3966") +``` + +#### `isPossible(): boolean` + +Checks if the phone number is "possible". Only checks the phone number length, doesn't check the actual phone number digits against any regular expressions. + +#### `isValid(): boolean` + +Checks if the phone number is "valid". First checks the phone number length and then checks the phone number digits against all available regular expressions. + +By default the library uses "minimal" metadata which is only 75 kilobytes in size but also doesn't include the precise validation regular expressions resulting in less strict validation rules (some very basic validation like length check is still included for each country). If you don't mind the extra 65 kilobytes of metadata then use ["full" metadata](#min-vs-max-vs-mobile-vs-core) instead (140 kilobytes). Google's library always uses "full" metadata so it will yield different `isValidNumber()` results compared to the "minimal" metadata used by default in this library. + +
+See an example illustrating different results when using /min vs /max vs /mobile + +#### +```js +import parseMin from 'libphonenumber-js/min' +import parseMax from 'libphonenumber-js/max' +import parseMobile from 'libphonenumber-js/mobile' + +// Mobile numbers in Singapore starting from `8` +// can only have the second digit in the range of `0..8`. +// Here the second digit is `9` which makes it an invalid mobile number. +// This is a "strict" (advanced) validation rule and is +// not included in the (default) "min" bundle. + +// The basic number length check passes (`8..11`) and the +// "loose" national number validation regexp check passes too: +// `(?:1\d{3}|[369]|7000|8(?:\d{2})?)\d{7}`. +parseMin('+6589555555').isValid() === true + +// The "advanced" validation regexp for mobile numbers is +// `(?:8[1-8]|9[0-8])\\d{6}` and possible lengths are `8`. +parseMax('+6589555555').isValid() === false +parseMobile('+6589555555').isValid() === false +``` +
+ +#### + +See ["Using phone number validation feature"](#using-phone-number-validation-feature) for choosing between `isPossible()` and `isValid()`. + + + +#### `getType(): string?` + +Returns phone number type (fixed line, mobile, toll free, etc) or `undefined` (if the number is invalid or if there are no phone number type regular expressions for this country in metadata). + +By default the library uses "minimal" metadata which is only 75 kilobytes in size but also doesn't include the regular expressions for determining a specific phone number type (fixed line, mobile, toll free, etc) resulting in `getType()` returning `undefined` for most countries. If you don't mind the extra 65 kilobytes of metadata then use ["full" metadata](#min-vs-max-vs-mobile-vs-core) instead (140 kilobytes). Google's library always uses "full" metadata so it will yield different `getNumberType()` results compared to the "minimal" metadata used by default in this library. + +
+The list of possible return values + +#### + +* `MOBILE` +* `FIXED_LINE` +* `FIXED_LINE_OR_MOBILE` +* `PREMIUM_RATE` +* `TOLL_FREE` +* `SHARED_COST` +* `VOIP` +* `PERSONAL_NUMBER` +* `PAGER` +* `UAN` +* `VOICEMAIL` +
+ +#### + +
+See an example illustrating different results when using /min vs /max vs /mobile + +#### +```js +import parseMin from 'libphonenumber-js/min' +import parseMax from 'libphonenumber-js/max' +import parseMobile from 'libphonenumber-js/mobile' + +// Singapore valid mobile number. + +// The (default) "min" bundle doesn't contain any regexps for +// getting phone number type based on national number (for Singapore). +parseMin('+6584655555').getType() === undefined + +// The "max" bundle contains regexps for +// getting phone number type based on national number +// for all possible phone number types. +parseMax('+6584655555').getType() === 'MOBILE' + +// The "mobile" bundle contains regexps for +// getting phone number type based on national number +// for mobile phone numbers only. +parseMobile('+6584655555').getType() === 'MOBILE' +``` +
+ +#### `isNonGeographic(): boolean` + +Returns `true` if the number belongs to a ["non-geographic numbering plan"](#non-geographic). + +#### `isEqual(phoneNumber: PhoneNumber): boolean` + +Compares two `PhoneNumber`s: returns `true` if they're equal, `false` otherwise. + +### `isPossiblePhoneNumber(input: string): boolean` + +Checks if `input` can be parsed as a "possible" phone number. A phone number is "possible" when it has valid length. The actual phone number digits aren't validated. + +```js +isPossiblePhoneNumber('8 (888) 888-88-88', 'RU') === true +isPossiblePhoneNumber('+12223333333') === true +``` + +This function is just a shortcut for a two-step process of ["strictly"](#strictness) parsing a phone number and then calling `.isPossible()`. + +### `isValidPhoneNumber(input: string): boolean` + +Checks if `input` can be parsed as a "valid" phone number. A phone number is "valid" when it has valid length, and the actual phone number digits match the regular expressions for that country. + +```js +isValidPhoneNumber('8 (888) 888-88-88', 'RU') === false +isValidPhoneNumber('8 (800) 555-35-35', 'RU') === true +isValidPhoneNumber('+12223333333') === false +isValidPhoneNumber('+12133734253') === true +``` + +This function is just a shortcut for a two-step process of ["strictly"](#strictness) parsing a phone number and then calling `.isValid()`. + +See ["Using phone number validation feature"](#using-phone-number-validation-feature) for choosing between `isPossible()` and `isValid()`. + +### `validatePhoneNumberLength(input: string): string?` + +Checks if `input` phone number length is valid. If it is, then nothing is returned. Otherwise, a rejection reason is returned. + +
+Possible rejection reasons + +* `NOT_A_NUMBER` — When the supplied string is not a phone number. For example, when there are no digits: `"abcde"`, `"+"`. + +* `INVALID_COUNTRY` + + * When `defaultCountry` doesn't exist (or isn't supported by this library yet): `parsePhoneNumber('(111) 222-3333', 'XX')`. + * When parsing a non-international number without a `defaultCountry`: `parsePhoneNumber('(111) 222-3333')`. + * When an international number's country calling code doesn't exist: `parsePhoneNumber('+9991112223333')`. + +* `TOO_SHORT` — When the number is too short. For example, just 1 or 2 digits: `"1"`, `"+12"`. + +* `TOO_LONG` — When the national (significant) number is too long (17 digits max) or when the string being parsed is too long (250 characters max). + +* `INVALID_LENGTH` — When the national (significant) number is neither too short, nor too long, but somewhere in between and its length is still invalid. +
+ +###### + +```js +validatePhoneNumberLength('abcde') === 'NOT_A_NUMBER' +validatePhoneNumberLength('444 1 44') === 'INVALID_COUNTRY' +validatePhoneNumberLength('444 1 44', 'TR') === 'TOO_SHORT' +validatePhoneNumberLength('444 1 444', 'TR') === undefined +validatePhoneNumberLength('444 1 4444', 'TR') === 'INVALID_LENGTH' +validatePhoneNumberLength('444 1 44444', 'TR') === 'INVALID_LENGTH' +validatePhoneNumberLength('444 1 444444', 'TR') === undefined +validatePhoneNumberLength('444 1 4444444444', 'TR') === 'TOO_LONG' +``` + +This function is just a more detailed version of `isPossiblePhoneNumber()` for those who've [asked](https://github.com/catamphetamine/libphonenumber-js/issues/406) for a more specific rejection reason. + +### `class` AsYouType([options or defaultCountry]) + +Creates a formatter for a partially entered phone number. + +Available `options`: + +* `defaultCountry` — Default [country](#country-code) for parsing national numbers. Instead of passing `options.defaultCountry` one could pass `defaultCountry` argument directly. + +* `defaultCallingCode` — Default calling code for parsing national numbers. Some numbering plans are for ["non-geographic numbering plans"](#non-geographic) and they don't have a country code, so `defaultCountry` can't be specified for them. + +The formatter instance has the following methods: + + * `input(text: string)` — Appends text to the input. Returns the formatted phone number. + + * `reset()` — Resets the input. + +```js +new AsYouType().input('+12133734') === '+1 213 373 4' +new AsYouType('US').input('2133734') === '(213) 373-4' +``` + +The formatter instance also provides the following getters: + + * `getNumber(): PhoneNumber?` — Returns the [`PhoneNumber`](#phonenumber). Will return `undefined` if no [national (significant) number](#national-significant-number) digits have been entered so far, or if no `defaultCountry`/`defaultCallingCode` has been set and the user enters a phone number not in international format. + + * `getNumberValue(): string?` — Returns the phone number in [`E.164`](https://en.wikipedia.org/wiki/E.164) format. For example, for country `"US"` and input `"(222) 333-4444"` it will return `"+12223334444"`. Will return `undefined` if no digits have been input, or when inputting a phone number in national format and no default country or default "country calling code" have been set. + + * `getChars(): string` — Returns the phone number characters entered by the user: digits and a `+` sign (if present). Returns an empty string if no phone number characters have been input. + + * `getTemplate(): string` — Returns the template used to format the phone number characters (digits and a `+` sign, if present), which are denoted by `x`-es. Returns an empty string if no phone number characters have been input. + +```js +// National phone number input example. + +const asYouType = new AsYouType('US') + +asYouType.input('2') === '2' +asYouType.getNumber().number === '+12' +asYouType.getChars() === '2' +asYouType.getTemplate() === 'x' + +asYouType.input('1') === '21' +asYouType.getNumber().number === '+121' +asYouType.getChars() === '21' +asYouType.getTemplate() === 'xx' + +asYouType.input('3') === '(213)' +asYouType.getNumber().number === '+1213' +asYouType.getChars() === '213' +asYouType.getTemplate() === '(xxx)' + +asYouType.input('3734253') === '(213) 373-4253' +asYouType.getNumber().number === '+12133734253' +asYouType.getChars() === '2133734253' +asYouType.getTemplate() === '(xxx) xxx-xxxx' + +// International phone number input example. + +const asYouType = new AsYouType() +asYouType.input('+1-213-373-4253') === '+1 213 373 4253' +asYouType.getNumber().country === 'US' +asYouType.getNumber().number === '+12133734253' +asYouType.getChars() === '+12133734253' +asYouType.getTemplate() === 'xx xxx xxx xxxx' +``` + + * `isInternational(): boolean` — Returns `true` if the phone number is being input in international format. In other words, returns `true` if and only if the parsed phone number starts with a `"+"`. + + * `getCallingCode(): string?` — Returns the ["country calling code"](#country-calling-code) part of the phone number. Returns `undefined` if the number is not being input in international format, or if no valid "country calling code" has been entered. Supports ["non-geographic"](#non-geographic) phone numbering plans: even though those aren't technically "countries", they have their own "country calling codes" too. + + * `getCountry(): string?` — Returns a two-letter [country code](#country-code) of the phone number. Returns `undefined` for ["non-geographic"](#non-geographic) phone numbering plans. Returns `undefined` if no phone number has been input yet. + + * `isPossible(): boolean` — Returns `true` if the phone number is "possible". Is just a shortcut for [`PhoneNumber.isPossible()`](#ispossible-boolean). + + * `isValid(): boolean` — Returns `true` if the phone number is "valid". Is just a shortcut for [`PhoneNumber.isValid()`](#isvalid-boolean). + +
+Legacy API (before version 1.6.0) + +#### + +For legacy API (before version `1.6.0`) the formatter instance provides the following getters: + + * `country: string?` — Phone number [country](#country-code). Will return `undefined` if the country couldn't be derived from the number. + + * `getNationalNumber(): string` — Returns the national (significant) number part of the phone number. + + * `getTemplate(): string?` — Same as the current version of `getTemplate()` with the only difference that it returns `undefined` if no suitable format was found for the number being entered (or if no [national (significant) number](#national-significant-number) has been entered so far). + +```js +// National phone number input example. + +const asYouType = new AsYouType('US') + +asYouType.input('2') === '2' +asYouType.getNationalNumber() === '2' + +asYouType.input('1') === '21' +asYouType.getNationalNumber() === '21' + +asYouType.input('3') === '(213)' +asYouType.getNationalNumber() === '213' + +asYouType.input('3734253') === '(213) 373-4253' +asYouType.getNationalNumber() === '2133734253' + +// International phone number input example. + +const asYouType = new AsYouType() +asYouType.input('+1-213-373-4253') === '+1 213 373 4253' +asYouType.country === 'US' +asYouType.getNationalNumber() === '2133734253' +``` +
+ +#### + +"As You Type" formatter was created by Google as part of their Android OS and therefore only works for numerical keyboard input, i.e. it can only accept digits (and a `+` sign in the start of an international number). When used on desktops where a user can input all kinds of punctuation (spaces, dashes, parens, etc) it simply ignores everything except digits (and a `+` sign in the start of an international number). + +Google's "As You Type" formatter does not support entering phone number extensions. If your project requires phone number extensions input then use a separate input field for that. + +### findPhoneNumbersInText(text: string, [defaultCountry: string?], [options]): object[] + +Searches for phone numbers in `text`. + +Available `options`: + +* `defaultCountry` — Default [country](#country-code) for parsing national numbers. Instead of passing `options.defaultCountry` one could pass `defaultCountry` argument directly. + +* `defaultCallingCode` — Default calling code for parsing national numbers. Some numbering plans are for ["non-geographic numbering plans"](#non-geographic) and they don't have a country code, so `defaultCountry` can't be specified for them. + +```js +import { findPhoneNumbersInText } from 'libphonenumber-js' + +findPhoneNumbersInText(` + For tech support call +7 (800) 555-35-35 internationally + or reach a local US branch at (213) 373-4253 ext. 1234. +`, 'US') + +// Outputs: +// +// [{ +// number: PhoneNumber { +// country: 'RU', +// countryCallingCode: '7', +// number: '+78005553535', +// nationalNumber: '8005553535' +// }, +// startsAt : 22, +// endsAt : 40 +// }, { +// number: PhoneNumber { +// country: 'US', +// countryCallingCode: '1', +// number: '+12133734253', +// nationalNumber: '2133734253', +// ext: '1234' +// }, +// startsAt : 86, +// endsAt : 110 +// }] +``` + +(in previous versions, it was called `findNumbers()`) + +
+Legacy API (before version 1.6.0) example + +#### + +```js +import { findNumbers } from 'libphonenumber-js' + +findNumbers(` + For tech support call +7 (800) 555-35-35 internationally + or reach a local US branch at (213) 373-4253 ext. 1234. +`, 'US') + +// Outputs: +// +// [{ +// phone : '8005553535', +// country : 'RU', +// startsAt : 22, +// endsAt : 40 +// }, +// { +// phone : '2133734253', +// country : 'US', +// ext : '1234', +// startsAt : 86, +// endsAt : 110 +// }] +``` +
+ +#### + +By default it processes the whole text and then outputs the phone numbers found. If the text is very big (say, a hundred thousand characters) then it might freeze the user interface for a couple of seconds. To avoid such lags one can employ "iterator" approach using `searchPhoneNumbersInText()` to perform the search asynchronously (e.g. using `requestIdleCallback` or `requestAnimationFrame`). + +(in previous versions, it was called `searchNumbers()`) + +
+Asynchronous search example using searchPhoneNumbersInText() + +#### + +ES6 iterator: + +```js +import { searchPhoneNumbersInText } from 'libphonenumber-js' + +const text = ` + For tech support call +7 (800) 555-35-35 internationally + or reach a local US branch at (213) 373-4253 ext. 1234. +` + +async function() { + for (const number of searchPhoneNumbersInText(text, 'US')) { + console.log(number) + await new Promise(resolve => setTimeout(resolve, 0)) + } + console.log('Finished') +} +``` + +Java-style iterator (for those still not using ES6): + +```js +import { PhoneNumberMatcher } from 'libphonenumber-js' + +const matcher = new PhoneNumberMatcher(` + For tech support call +7 (800) 555-35-35 internationally + or reach a local US branch at (213) 373-4253 ext. 1234. +`, { + defaultCountry: 'US', + v2: true +}) + +// Search cycle iteration. +const iteration = () => { + if (matcher.hasNext()) { + console.log(matcher.next()) + setTimeout(iteration, 0) + } else { + console.log('Finished') + } +} + +// Run the search. +iteration() +``` +
+ +#### + +Although Google's javascript port doesn't have the `findPhoneNumbersInText()` functionality the Java and C++ ports do. I guess Google just doesn't need to crawl phone numbers on Node.js because they can afford to hire a Java/C++ developer to do that. Still, javascript nowadays is the most popular programming language given its simplicity and user-friendliness. The `findPhoneNumbersInText()` function provided is a port of Google's `PhoneNumberMatcher.java` into javascript. + +### getExampleNumber(country: string, examples: object): PhoneNumber + +Returns an example phone number for a [country](#country-code). Returns an instance of [`PhoneNumber`](#phonenumber) class. Will return `undefined` if `country` doesn't exist or isn't supported by this library. + +```js +import examples from 'libphonenumber-js/mobile/examples' +import { getExampleNumber } from 'libphonenumber-js' + +const phoneNumber = getExampleNumber('RU', examples) + +phoneNumber.formatNational() === '8 (912) 345-67-89' +``` + +### isSupportedCountry(country: string): boolean + +Checks if a [country](#country-code) is supported by this library. + +```js +isSupportedCountry('RU') === true +isSupportedCountry('XX') === false +``` + +### getCountries(): string[] + +Returns a list of supported countries. + + + +```js +getCountries() === ["AC", "AD", ...] +``` + +### getCountryCallingCode(country: string): string + +Returns [country calling code](#country-calling-code) for a [country](#country-code). Will throw an error if `country` doesn't exist or isn't supported by this library. + +```js +getCountryCallingCode('RU') === '7' +getCountryCallingCode('IL') === '972' +``` + +### getExtPrefix(country: string): string + +Returns phone number extension prefix for a given [country](#country-code). If no custom ext prefix is defined for a `country` then the default `" ext. "` prefix is returned. + +```js +getExtPrefix('US') === ' ext. ' +getExtPrefix('GB') === ' x' +``` + + + +### parseDigits(text: string): string + +Parses digits from string. Can be used for building a phone number extension input component (e.g. [react-phone-number-input](https://gitlab.com/catamphetamine/react-phone-number-input/)). + +```js +parseDigits('x123') === '123' +parseDigits('٤٤٢٣') === '4423' +``` + +### parseIncompletePhoneNumber(text: string): string + +Parses phone number characters (`+` and digits). Can be used for building a phone number input component (e.g. [react-phone-number-input](https://gitlab.com/catamphetamine/react-phone-number-input/)). + +```js +parseIncompletePhoneNumber('8 (800) 555') === '8800555' +parseIncompletePhoneNumber('+7 800 555') === '+7800555' +parseIncompletePhoneNumber('+٤٤٢٣٢٣٢٣٤') === '+442323234' +``` + +### formatIncompletePhoneNumber(value: string, country: string?): string + +Formats incomplete phone number as a national one for a given `country`. If `country` is not specified then outputs the phone number in international format. This is just an alias for `new AsYouType(country, metadata).input(value)`. Can be used for building a phone number input component (e.g. [react-phone-number-input](https://gitlab.com/catamphetamine/react-phone-number-input/)). + +```js +formatIncompletePhoneNumber('8800555', 'RU') === '8 (800) 555' +formatIncompletePhoneNumber('+7800555') === '+7 800 555' +``` + +## Legacy API + +
+Legacy API (before version 1.6.0): parse(), parseNumber(), format(), formatNumber(), isValidNumber(), getNumberType(). + +### parseNumber(text, [defaultCountry], [options]) + +_(previously called `parse()`)_ + +_(legacy API)_ + +Attempts to parse a phone number from `text`. + +If [`defaultCountry`](#country-code) is passed then it's gonna be the default country for parsing non-international phone numbers. + +Returns `{ country, phone, ext }` object where + * `country` is a [country code](#country-code). + * `phone` is a [national (significant) number](#national-significant-number). + * `ext` is a [phone number extension](https://en.wikipedia.org/wiki/Extension_(telephone)). + +If the phone number supplied isn't valid then an empty object `{}` is returned. + +
+Examples + +```js +// Parses international numbers. +parseNumber('+1 213 373 4253') === { country: 'US', phone: '2133734253' } +parseNumber('Phone: +1-213-373-4253.') === { country: 'US', phone: '2133734253' } +parseNumber('+12133734253') === { country: 'US', phone: '2133734253' } + +// Parses national numbers provided a default country. +parseNumber('Phone: (213) 373-4253.', 'US') === { country: 'US', phone: '2133734253' } + +// Parses phone number extensions. +parseNumber('(213) 373-4253 ext. 123', 'US') === { country: 'US', phone: '2133734253', ext: '123' } + +// Parses RFC 3966 phone number URIs. +parseNumber('tel:+78005553535;ext=123') === { country: 'RU', phone: '8005553535', ext: '123' } +``` + +If the phone number supplied isn't valid then an empty object `{}` is returned. + +```js +parseNumber('+1 111 111 1111') === {} +parseNumber('(111) 111-1111', 'US') === {} +parseNumber('abcdefg') === {} +``` +
+ +#### + +Available `options`: + + * `defaultCountry : string` — Same as the `defaultCountry` argument. + + * `extended : boolean` — If set to `true` then `parseNumber()` will attempt to parse even a remotely hypothetical phone number even if it is considered "invalid". + +
+{ extended: true } documentation and examples + +The result of "extended" parsing is an object where + + * `country` is a [country code](#country-code). + * `phone` is a [national (significant) number](#national-significant-number). + * `ext` is a [phone number extension](https://en.wikipedia.org/wiki/Extension_(telephone)). + * `countryCallingCode` is a [country calling code](#country-calling-code). + * [`carrierCode`](https://www.voip-info.org/carrier-identification-codes/)s are only used in Colombia and Brazil and only when dialing within those countries from a mobile phone to a fixed line number. + * `valid: boolean` — whether it's a "valid" (real) phone number. + * `possible: boolean` — a phone number is considered "possible" when it fits the phone number length rules for a given country. E.g. for US national (significant) number regexp is `[2-9]\d{9}` and possible national (significant) number length is `10` so a phone number `(111) 111-1111` is not a "valid" number because it doesn't match the US national (significant) number regexp but it is a "possible" number because it's `10` digits long. + * Some or all of these properties may be absent from the result object. + +```js +// If the number is valid. +parseNumber('Phone: (213) 373-4253.', 'US', { extended: true }) === +{ + country: 'US', + phone: '2133734253', + ext: undefined, + countryCallingCode: 1, + carrierCode: undefined, + valid: true, + possible: true +} + +// If the number is not "valid" but "possible". +parseNumber('(111) 111-1111', 'US', { extended: true }) === +{ + country: 'US', + phone: '1111111111', + ext: undefined, + countryCallingCode: 1, + carrierCode: undefined, + valid: false, + possible: true +} + +// If the number is not "valid" but "possible" +// and country can't be derived from it. +// (e.g. can't tell if it's a US number or a Canadian number) +parseNumber('+1 111 111 1111', { extended: true }) === +{ + country: undefined, + phone: '1111111111', + ext: undefined, + countryCallingCode: 1, + carrierCode: undefined, + valid: false, + possible: true +} + +// If the number is not "possible" (invalid length). +parseNumber('(213) 373', 'US', { extended: true }) === +{ + country: 'US', + phone: '213373', + ext: undefined, + countryCallingCode: 1, + carrierCode: undefined, + valid: false, + possible: false +} + +// In some cases if the number is extremely not "possible" +// then an empty object `{}` is returned. +// +// Too short (or too long) for any country's phone number. +parseNumber('1', 'US', { extended: true }) === {} +// Non-existent country calling code. +parseNumber('+210', { extended: true }) === {} +// No phone number found. +parseNumber('abcdefg', 'US', { extended: true }) === {} +``` + +The "extended" parsing mode is the default behaviour of the original Google's `libphonenumber`: it still returns parsed data even if the phone number being parsed is not considered valid (but is kinda "possible"). I guess this kind of behaviour is better for crawling websites for phone numbers because when mining "big data" it is better to extract all possible info rather than discard some pieces of it prematurely, e.g. when national (significant) number regexp for some country gets outdated which might very well happen because phone numbering plans are changing constantly around the world. Maybe after all it would make sense to make the "extended" parsing mode the default one in the next major version. I guess it would. +
+ +#### + +
+Also parses IDD-prefixed phone numbers + +Sometimes users icorrectly input phone numbers in ["out-of-country" dialing](https://wikitravel.org/en/International_dialling_prefix) (IDD-prefixed) format instead of the proper international phone number format (the "+" notation). In such cases `parseNumber()` will attempt to parse such IDD-prefixed numbers if "default country" is provided: + +```js +// International format. +parseNumber('+61 2 3456 7890') === { country: 'AU', phone: '234567890' } +// IDD-prefixed format. +parseNumber('011 61 2 3456 7890', 'US') === { country: 'AU', phone: '234567890' } +``` +
+ +### formatNumber(number, format, [options]) + +_(previously called `format()`)_ + +_(legacy API)_ + +Formats a `number` into a string according to a `format`. + +Available `format`s and `options` are the same as for [`PhoneNumber.format(format)`](#formatformat-string-options). + +The `number` argument must be either a result of `parseNumber()` function call (to strip national prefix) or an E.164 phone number string (e.g. `+12133734253`). + +
+Examples + +```js +// Formats E.164 phone numbers. +formatNumber('+12133734253', 'NATIONAL') === '(213) 373-4253' +formatNumber('+12133734253', 'INTERNATIONAL') === '+1 213 373 4253' + +// Formats E.164 phone numbers when +// they're not "valid" but still "possible". +formatNumber('+11111111111', 'NATIONAL') === '(111) 111-1111' +formatNumber('+11111111111', 'INTERNATIONAL') === '+1 111 111 1111' + +// Formats E.164 phone numbers when +// they're not "valid" and not "possible" (invalid length). +formatNumber('+11111', 'NATIONAL') === '1111' +formatNumber('+11111', 'INTERNATIONAL') === '+1 1111' + +// Formats a result of `parseNumber()` function call. +const parsedNumber = parseNumber('2133734253', 'US') +formatNumber(parsedNumber, 'NATIONAL') === '(213) 373-4253' +formatNumber(parsedNumber, 'INTERNATIONAL') === '+1 213 373 4253' + +// Formats a result of `parseNumber()` function call in "extended" mode +// when it's not a "valid" number but is still a "possible" one. +const possibleNumber = parseNumber('+11111111111', { extended: true }) +formatNumber(possibleNumber, 'NATIONAL') === '(111) 111-1111' +formatNumber(possibleNumber, 'INTERNATIONAL') === '+1 111 111 1111' + +// Formats a result of `parseNumber()` function call in "extended" mode +// when it's neither a "valid" number nor a "possible" one (invalid length). +const possibleNumber = parseNumber('+11111', { extended: true }) +formatNumber(possibleNumber, 'NATIONAL') === '1111' +formatNumber(possibleNumber, 'INTERNATIONAL') === '+1 1111' + +// Formats phone number extensions. +formatNumber({ country: 'US', phone: '2133734253', ext: '123' }, 'NATIONAL') === '(213) 373-4253 ext. 123' + +// When given an object not having `phone` property +// (e.g. a empty object `{}`) it will throw. +formatNumber({}) throws Error +``` +
+ +### getNumberType(number, [defaultCountry]) + +_(legacy API)_ + +See the description for [`PhoneNumber.getType()`](#gettype). + +The `number` argument can be either a result of the `parseNumber()` function call — `{ country, phone }` — or a string (phone number digits only) possibly accompanied with the second `defaultCountry` argument. + +
+Examples + +```js +getNumberType('+79160151539') === 'MOBILE' +getNumberType('9160151539', 'RU') === 'MOBILE' +getNumberType({ phone: '9160151539', country: 'RU' }) === 'MOBILE' +``` +
+ +### isValidNumber(number, [defaultCountry]) + +_(legacy API)_ + +Checks if a phone number is valid, the validation is more strict than `parseNumber()`. + +The `number` argument can be either a result of the `parseNumber()` function call — `{ country, phone }` — or a string (phone number digits only) possibly accompanied with the second `defaultCountry` argument. + +
+Examples + +```js +isValidNumber('+12133734253') === true +isValidNumber('+1213373') === false + +isValidNumber('2133734253', 'US') === true +isValidNumber('21337', 'US') === false + +isValidNumber({ phone: '2133734253', country: 'US' }) === true +``` +
+ +#### + +
+The difference between using parseNumber() and isValidNumber() + +The difference between using `parseNumber()` and `isValidNumber()` for phone number validation is that `isValidNumber()` also checks the precise regular expressions of possible phone numbers for a country. For example, for Germany `parseNumber('123456', 'DE')` would return `{ country: 'DE', phone: '123456' }` because this phone number matches the general phone number rules for Germany (basic length check, etc). But, if the metadata is compiled with `--extended` (or relevant `--types`) flag (see [Customizing metadata](#customizing-metadata) section of this document) then `isValidNumber()` is gonna use those precise regular expressions for extensive validation and `isValid('123456', 'DE')` will return `false` because the phone number `123456` doesn't actually exist in Germany. + +This is how it is implemented in the original Google's [`libphonenumber`](https://static.javadoc.io/com.googlecode.libphonenumber/libphonenumber/8.9.1/com/google/i18n/phonenumbers/PhoneNumberUtil.html#parse-java.lang.CharSequence-java.lang.String-): `parseNumber()` parses phone numbers and loosely validates them while `isValidNumber()` validates phone numbers precisely (provided the precise regular expressions are included in metadata). + +The precise regular expressions aren't included in the default metadata because that would cause the default metadata to grow twice in its size: the complete ("full") metadata size is about 145 kilobytes while the reduced ("default") metadata size is about 77 kilobytes. Hence in the default configuration `isValidNumber()` performs absolutely the same "lite" validation as `parseNumber()`. For enabling extensive phone number validation the simplest way is to import functions from `libphonenumber-js/custom` module and supply them with `libphonenumber-js/metadata.max.json`. For generating custom metadata see the instructions provided in the [Customizing metadata](#customizing-metadata) section of this document. +
+ +#### + +
+isValidNumberForRegion() + +The optional `defaultCountry` argument is the _default_ country, i.e. it does not restrict to just that country, e.g. in those cases where several countries share the same phone numbering rules (NANPA, Britain, etc). For example, even though the number `07624 369230` belongs to the Isle of Man ("IM" country code) calling `isValidNumber('07624369230', 'GB')` still returns `true` because the country is not restricted to `GB`, it's just that `GB` is the default one for the phone numbering rules. For restricting the country see `isValidNumberForRegion()` though restricting a country [might not be a good idea](https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion). + +```js +// Even though '07624 369230' number belongs to the Isle of Man ("IM") +// the `defaultCountry` argument "GB" still works here because +// "GB" and "IM" both share the same phone numbering rules ("+44"). +isValidNumber('07624369230', 'GB') === true +isValidNumber('07624369230', 'IM') === true + +// Imposing country restrictions. +isValidNumberForRegion('07624369230', 'GB') === false +isValidNumberForRegion('07624369230', 'IM') === true +``` +
+
+ +## Using phone number validation feature + +I personally don't use strict phone number validation in my projects. The rationale is that telephone numbering plans can and sometimes do change, meaning that [`PhoneNumber.isValid()`](#isvalid) function may one day become outdated on a website that isn't actively maintained anymore. Imagine a "promo-site" or a "personal website" being deployed once and then running for years without any maintenance, where a client may be unable to submit a simple "Contact Us" form just because this newly allocated pool of mobile phone numbers wasn't present in that old version of `libphonenumber-js` bundled in it. + +Whenever there's a "business requirement" to validate a phone number that's being input by a user, I prefer using [`PhoneNumber.isPossible()`](#ispossible) instead of [`PhoneNumber.isValid()`](#isvalid), so that it just validates the phone number length, and doesn't validate the actual phone number digits. But it doesn't mean that you shouldn't use [`PhoneNumber.isValid()`](#isvalid) — maybe in your case it would make sense. + +## React + +If you’re trying to build a React component with this library, take a look at [`react-phone-number-input`](https://www.npmjs.com/package/react-phone-number-input). + + + +## Bug reporting + +This library is a simpler rewrite of Google's [`libphonenumber`](https://github.com/google/libphonenumber/blob/master/java/libphonenumber/) library. Basically, it mimicks Google's library behavior. Hence, as long as this library's [demo page](https://catamphetamine.gitlab.io/libphonenumber-js/) and Google's library [demo page](https://libphonenumber.appspot.com/) exhibit the same behavior, it's not considered a bug. + +When reporting issues with: + +* Parsing +* Validation +* Formatting +* "As You Type" formatting + +one must provide two links: + +* A link to the [demo page](https://catamphetamine.gitlab.io/libphonenumber-js/) illustrating the supposedly incorrect behavior. +* A link to [Google's `libphonenumber` demo page](https://libphonenumber.appspot.com/) illustrating the expected behavior. + +Google's demo page [outputs four sections](https://libphonenumber.appspot.com/phonenumberparser?number=438331999&country=AU): +* "Parsing Result" +* "Validation Results" +* "Formatting Results" +* "AsYouTypeFormatter Results" + +Choose the relevant section of those four corresponding to the type of the bug you're reporting. + +In a bug report: + +* First, describe the observed `libphonenumber-js` demo result (and provide a link to it). +* Second, describe the observed Google's demo result (and provide a link to it). +* The described observed result of Google's demo must be different from the described observed result of `libphonenumber-js` demo, otherwise it's not considered a bug. If you don't agree with Google's demo result then create an issue in [Google's repo](https://github.com/google/libphonenumber/blob/master/CONTRIBUTING.md) instead. If they fix it in their library, I'll port the fix to this library. + + + + + +## TypeScript + +This library comes with TypeScript "typings". If you happen to find any bugs in those, create an issue. + + + +## CDN + +One can use any npm CDN service, e.g. [unpkg.com](https://unpkg.com) or [jsdelivr.com](https://jsdelivr.com) + +```html + + + +``` + +where `[version]` is an npm package version range (for example, `1.x` or `^1.7.6`) and `[type]` is the bundle type: `min`, `max` or `mobile`. + + + +## Metadata + +Metadata is generated from Google's [`PhoneNumberMetadata.xml`](https://github.com/googlei18n/libphonenumber/blob/master/resources/PhoneNumberMetadata.xml) by transforming XML into JSON and removing unnecessary fields. See [metadata fields description](https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md). + +### Programmatic access + +Metadata can be accessed programmatically by using the exported `Metadata` class. + +First, create a `Metadata` class instance: + +```js +import { Metadata } from 'libphonenumber-js' + +const metadata = new Metadata() +``` + +Then, select a ["numbering plan"](https://en.wikipedia.org/wiki/Telephone_numbering_plan) (a country): + +```js +metadata.selectNumberingPlan('US') +``` + +After that, the following methods of `metadata.numberingPlan` can be called: + +* `leadingDigits(): string?` — Returns ["leading digits"](https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits) pattern. + +* `possibleLengths(): number[]` — Returns a list of [possible lengths](https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#possible_lengths) of a national (significant) number. + +* `IDDPrefix(): string` — Returns an [International Direct Dialing](https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#idd_prefix) prefix. + +* `defaultIDDPrefix(): string?` — Returns a [default International Direct Dialing](https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#default_idd_prefix) prefix when there're multiple ones available. + +Example: + +```js +import { Metadata } from 'libphonenumber-js' + +const metadata = new Metadata() +metadata.selectNumberingPlan('US') + +metadata.numberingPlan.leadingDigits() === undefined +metadata.numberingPlan.possibleLengths() === [10] +metadata.numberingPlan.IDDPrefix() === '011' +metadata.numberingPlan.defaultIDDPrefix() === undefined +``` + +Using with custom metadata: + +```js +import { Metadata } from 'libphonenumber-js/core' + +import min from 'libphonenumber-js/min/metadata' +// import max from 'libphonenumber-js/max/metadata' +// import mobile from 'libphonenumber-js/mobile/metadata' + +const metadata = new Metadata(min) +``` + +As one can see, the [`Metadata` class](https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/source/metadata.js) is not documented much. Partially, that's because its usage is not necessarily encouraged, but it's still used, for example, in [`react-phone-number-input`](https://gitlab.com/catamphetamine/react-phone-number-input/-/blob/master/source/helpers/phoneInputHelpers.js) to get "leading digits" for a country, or to get maximum phone number length for a country. Stick to the methods documented above, don't call any other methods. If you think there's a need to call any other methods, create a discussion issue. + + + + + +### Customizing metadata + +This library comes prepackaged with [three types of metadata](#min-vs-max-vs-mobile-vs-core). + +Sometimes, if only a specific set of countries is needed in a project, and a developer really wants to reduce the resulting bundle size, say, by 50 kilobytes (even when including all regular expressions for validating phone number digits and detecting phone number type), then they can generate such custom metadata and pass it as the last argument to this library's "core" functions. + +See [generate custom metadata instructions](https://gitlab.com/catamphetamine/libphonenumber-metadata-generator). + +
+Then, use the generated metadata.custom.json file with the "core" functions. + +#### + +Pass the `metadata` argument as the last one to the "core" functions. + +In ES6 that would be: + +```js +import _parsePhoneNumber, { + findPhoneNumbersInText as _findPhoneNumbersInText, + AsYouType as _AsYouType +} from 'libphonenumber-js/core' + +import metadata from 'libphonenumber-js/max/metadata' + +function call(func, _arguments) { + var args = Array.prototype.slice.call(_arguments) + args.push(metadata) + return func.apply(this, args) +} + +export default function parsePhoneNumber() { + return call(_parsePhoneNumber, arguments) +} + +export function findPhoneNumbersInText() { + return call(_findPhoneNumbersInText, arguments) +} + +export function AsYouType(country) { + return _AsYouType.call(this, country, metadata) +} +AsYouType.prototype = Object.create(_AsYouType.prototype, {}) +AsYouType.prototype.constructor = AsYouType +``` + +And for [Common.js](https://auth0.com/blog/javascript-module-systems-showdown/) environment that would be: + +```js +var core = require('libphonenumber-js/core') +var metadata = require('libphonenumber-js/max/metadata') + +function call(func, _arguments) { + var args = Array.prototype.slice.call(_arguments) + args.push(metadata) + return func.apply(this, args) +} + +function parsePhoneNumber() { + return call(core.default, arguments) +} + +exports = module.exports = parsePhoneNumber +exports['default'] = parsePhoneNumber + +exports.findPhoneNumbersInText = function findPhoneNumbersInText() { + return call(core.findPhoneNumbersInText, arguments) +} + +exports.AsYouType = function AsYouType(country) { + return core.AsYouType.call(this, country, metadata) +} +exports.AsYouType.prototype = Object.create(core.AsYouType.prototype, {}) +exports.AsYouType.prototype.constructor = exports.AsYouType +``` +
+ +#### + +
+Legacy: How to use the generated metadata.custom.json file with the legacy "custom" functions. + +#### + +Pass the `metadata` argument as the last one to the "custom" functions. + +In ES6 that would be: + +```js +import { + parseNumber, + formatNumber, + isValidNumber, + getNumberType, + AsYouType +} from 'libphonenumber-js/custom' + +import metadata from 'libphonenumber-js/max/metadata' + +parseNumber('+78005553535', metadata) +formatNumber({ phone: '8005553535', country: 'RU' }, metadata) +isValidNumber('+78005553535', metadata) +getNumberType('+78005553535', metadata) +new AsYouType('RU', metadata).input('+78005553535') +``` + +And for [Common.js](https://auth0.com/blog/javascript-module-systems-showdown/) environment that would be: + +```js +var custom = require('libphonenumber-js/custom') +var metadata = require('libphonenumber-js/max/metadata') + +exports.parseNumber = function parseNumber() { + var parameters = Array.prototype.slice.call(arguments) + parameters.push(metadata) + return custom.parseNumber.apply(this, parameters) +} + +exports.formatNumber = function formatNumber() { + var parameters = Array.prototype.slice.call(arguments) + parameters.push(metadata) + return custom.formatNumber.apply(this, parameters) +} + +exports.isValidNumber = function isValidNumber() { + var parameters = Array.prototype.slice.call(arguments) + parameters.push(metadata) + return custom.isValidNumber.apply(this, parameters) +} + +exports.getNumberType = function isValidNumber() { + var parameters = Array.prototype.slice.call(arguments) + parameters.push(metadata) + return custom.getNumberType.apply(this, parameters) +} + +exports.AsYouType = function AsYouType(country) { + custom.AsYouType.call(this, country, metadata) +} + +exports.AsYouType.prototype = Object.create(custom.AsYouType.prototype, {}) +exports.AsYouType.prototype.constructor = exports.AsYouType +``` +
+ +Metadata should be re-generated each time the project is being deployed because Google constantly updates their metadata. + + + + + +### Maintenance + +Google periodically releases new metadata with the changes described in the [release notes](https://github.com/googlei18n/libphonenumber/blob/master/release_notes.txt). Sometimes those are minor non-breaking updates, sometimes those are major-version breaking updates. + +Metadata update process is automated through an "autoupdate" script: see `autoupdate.cmd` (Windows) or `autoupdate.sh` (Linux/macOS). The script detects changes to `PhoneNumberMetadata.xml` in Google `libphonenumber`'s repo and if there are changes then it pulls the latest metadata, processes it, commits the changes to GitHub, builds a new version of the library and releases it to NPM. So this library's metadata is supposed to be up-to-date. I could set up this script to run automatically but on my Windows machine `ssh-agent` doesn't work properly so I run the "autoupdate" script manually from time to time. + +Also Google sometimes (very rarely) updates their code: + +* [`phonenumberutil.js`](https://github.com/googlei18n/libphonenumber/blob/master/javascript/i18n/phonenumbers/phonenumberutil.js) — `parseNumber()`, `formatNumber()`, `isValidNumber()`, `getNumberType()` +* [`AsYouTypeFormatter.java`](https://github.com/google/libphonenumber/blob/master/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java) — `AsYouType` +* [`PhoneNumberMatcher.java`](https://github.com/googlei18n/libphonenumber/blob/master/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberMatcher.java) — `findPhoneNumbersInText()` + +The latest sync-up was on April 24th, 2022. + +## Contributing + +After cloning this repo, ensure dependencies are installed by running: + +```sh +npm install +``` + +This module is written in ES6 and uses [Babel](http://babeljs.io/) for ES5 +transpilation. Widely consumable JavaScript can be produced by running: + +```sh +npm run build +``` + +Once `npm run build` has run, you may `import` or `require()` directly from +node. + +After developing, the full test suite can be evaluated by running: + +```sh +npm test +``` + +Test coverage must remain at 100%: + +```sh +npm run test-coverage +``` + +When you're ready to test your new functionality on a real project, you can run + +```sh +npm pack +``` + +It will `build`, `test` and then create a `.tgz` archive which you can then install in your project folder + +```sh +npm install [module name with version].tar.gz +``` + +## Tests + +This component comes with a 100% code coverage. + +To run tests: + +``` +npm test +``` + +To generate a code coverage report: + +``` +npm run test-coverage +``` + +The code coverage report can be viewed by opening `./coverage/lcov-report/index.html`. + +## Advertisement + +If you like this library then you might also like: + +* [`react-phone-number-input`](https://npmjs.com/package/react-phone-number-input) — A `React` component for phone number input. +* [`javascript-time-ago`](https://npmjs.com/package/javascript-time-ago) — An international human-readable past or future date formatter. Example: `"2 days ago"`. +* [`react-time-ago`](https://npmjs.com/package/react-time-ago) — A `React` component for international human-readable formatting of past or future dates. Example: `"2 days ago"`. +* [`read-excel-file`](https://www.npmjs.com/package/read-excel-file) — A simple and easy-to-use `*.xlsx` file reader (client-side or server-side). +* [`write-excel-file`](https://www.npmjs.com/package/write-excel-file) — A simple and easy-to-use `*.xlsx` file writer (client-side or server-side). +* [`flexible-json-schema`](https://www.npmjs.com/package/flexible-json-schema) — A simple and easy-to-use `*.json` schema data validator / parser. +* [`virtual-scroller`](https://www.npmjs.com/package/virtual-scroller) — A universal implementation of a "virtual scroller" infinite list scrolling component: only renders the rows that fit the screen bounds. + +## License + +Google's `libphonenumber` is [licensed](https://github.com/google/libphonenumber/blob/master/LICENSE) under Apache 2. + +[Apache 2](https://en.wikipedia.org/wiki/Apache_License#Licensing_conditions) does not require a derivative work of the software, or modifications to the original, to be distributed using the same license. Hence, this library is licensed under [MIT](LICENSE), which is [compatible](https://www.quora.com/Is-the-MIT-license-compatible-with-the-Apache-License-Version-2-APLv2) with Apache 2. + +The Apache license is terminated if the user sues anyone over patent infringement related to the software covered by the license. This condition is added in order to prevent patent litigations. + diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/autoupdate.cmd b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/autoupdate.cmd new file mode 100644 index 00000000..ebade5ce --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/autoupdate.cmd @@ -0,0 +1,6 @@ +:: Set the current folder to the script's folder. +pushd %~dp0 +:: Update metadata and release the new version. +npm run metadata:update:job +:: Restore the previous current folder. +popd diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/autoupdate.sh b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/autoupdate.sh new file mode 100644 index 00000000..d22213d5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/autoupdate.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +export PATH=/usr/local/bin:$PATH + +# Enter this script's folder +cd "${0%/*}" + +now=$(date +'%d.%m.%Y') +echo "================================================" | tee /dev/stderr +echo "= Starting metadata update at $now" | tee /dev/stderr +echo "================================================" | tee /dev/stderr + +npm run metadata:update:job + +# Older way through submitting a pull request to github +# npm run metadata:update:pull-request diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouType.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouType.js new file mode 100644 index 00000000..e0e8ef3d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouType.js @@ -0,0 +1,512 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _metadata = _interopRequireDefault(require("./metadata.js")); + +var _PhoneNumber = _interopRequireDefault(require("./PhoneNumber.js")); + +var _AsYouTypeState = _interopRequireDefault(require("./AsYouTypeState.js")); + +var _AsYouTypeFormatter = _interopRequireWildcard(require("./AsYouTypeFormatter.js")); + +var _AsYouTypeParser = _interopRequireWildcard(require("./AsYouTypeParser.js")); + +var _getCountryByCallingCode = _interopRequireDefault(require("./helpers/getCountryByCallingCode.js")); + +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } + +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +var USE_NON_GEOGRAPHIC_COUNTRY_CODE = false; + +var AsYouType = /*#__PURE__*/function () { + /** + * @param {(string|object)?} [optionsOrDefaultCountry] - The default country used for parsing non-international phone numbers. Can also be an `options` object. + * @param {Object} metadata + */ + function AsYouType(optionsOrDefaultCountry, metadata) { + _classCallCheck(this, AsYouType); + + this.metadata = new _metadata["default"](metadata); + + var _this$getCountryAndCa = this.getCountryAndCallingCode(optionsOrDefaultCountry), + _this$getCountryAndCa2 = _slicedToArray(_this$getCountryAndCa, 2), + defaultCountry = _this$getCountryAndCa2[0], + defaultCallingCode = _this$getCountryAndCa2[1]; + + this.defaultCountry = defaultCountry; + this.defaultCallingCode = defaultCallingCode; + this.reset(); + } + + _createClass(AsYouType, [{ + key: "getCountryAndCallingCode", + value: function getCountryAndCallingCode(optionsOrDefaultCountry) { + // Set `defaultCountry` and `defaultCallingCode` options. + var defaultCountry; + var defaultCallingCode; // Turns out `null` also has type "object". Weird. + + if (optionsOrDefaultCountry) { + if (_typeof(optionsOrDefaultCountry) === 'object') { + defaultCountry = optionsOrDefaultCountry.defaultCountry; + defaultCallingCode = optionsOrDefaultCountry.defaultCallingCode; + } else { + defaultCountry = optionsOrDefaultCountry; + } + } + + if (defaultCountry && !this.metadata.hasCountry(defaultCountry)) { + defaultCountry = undefined; + } + + if (defaultCallingCode) { + /* istanbul ignore if */ + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + if (this.metadata.isNonGeographicCallingCode(defaultCallingCode)) { + defaultCountry = '001'; + } + } + } + + return [defaultCountry, defaultCallingCode]; + } + /** + * Inputs "next" phone number characters. + * @param {string} text + * @return {string} Formatted phone number characters that have been input so far. + */ + + }, { + key: "input", + value: function input(text) { + var _this$parser$input = this.parser.input(text, this.state), + digits = _this$parser$input.digits, + justLeadingPlus = _this$parser$input.justLeadingPlus; + + if (justLeadingPlus) { + this.formattedOutput = '+'; + } else if (digits) { + this.determineTheCountryIfNeeded(); // Match the available formats by the currently available leading digits. + + if (this.state.nationalSignificantNumber) { + this.formatter.narrowDownMatchingFormats(this.state); + } + + var formattedNationalNumber; + + if (this.metadata.hasSelectedNumberingPlan()) { + formattedNationalNumber = this.formatter.format(digits, this.state); + } + + if (formattedNationalNumber === undefined) { + // See if another national (significant) number could be re-extracted. + if (this.parser.reExtractNationalSignificantNumber(this.state)) { + this.determineTheCountryIfNeeded(); // If it could, then re-try formatting the new national (significant) number. + + var nationalDigits = this.state.getNationalDigits(); + + if (nationalDigits) { + formattedNationalNumber = this.formatter.format(nationalDigits, this.state); + } + } + } + + this.formattedOutput = formattedNationalNumber ? this.getFullNumber(formattedNationalNumber) : this.getNonFormattedNumber(); + } + + return this.formattedOutput; + } + }, { + key: "reset", + value: function reset() { + var _this = this; + + this.state = new _AsYouTypeState["default"]({ + onCountryChange: function onCountryChange(country) { + // Before version `1.6.0`, the official `AsYouType` formatter API + // included the `.country` property of an `AsYouType` instance. + // Since that property (along with the others) have been moved to + // `this.state`, `this.country` property is emulated for compatibility + // with the old versions. + _this.country = country; + }, + onCallingCodeChange: function onCallingCodeChange(callingCode, country) { + _this.metadata.selectNumberingPlan(country, callingCode); + + _this.formatter.reset(_this.metadata.numberingPlan, _this.state); + + _this.parser.reset(_this.metadata.numberingPlan); + } + }); + this.formatter = new _AsYouTypeFormatter["default"]({ + state: this.state, + metadata: this.metadata + }); + this.parser = new _AsYouTypeParser["default"]({ + defaultCountry: this.defaultCountry, + defaultCallingCode: this.defaultCallingCode, + metadata: this.metadata, + state: this.state, + onNationalSignificantNumberChange: function onNationalSignificantNumberChange() { + _this.determineTheCountryIfNeeded(); + + _this.formatter.reset(_this.metadata.numberingPlan, _this.state); + } + }); + this.state.reset(this.defaultCountry, this.defaultCallingCode); + this.formattedOutput = ''; + return this; + } + /** + * Returns `true` if the phone number is being input in international format. + * In other words, returns `true` if and only if the parsed phone number starts with a `"+"`. + * @return {boolean} + */ + + }, { + key: "isInternational", + value: function isInternational() { + return this.state.international; + } + /** + * Returns the "calling code" part of the phone number when it's being input + * in an international format. + * If no valid calling code has been entered so far, returns `undefined`. + * @return {string} [callingCode] + */ + + }, { + key: "getCallingCode", + value: function getCallingCode() { + // If the number is being input in national format and some "default calling code" + // has been passed to `AsYouType` constructor, then `this.state.callingCode` + // is equal to that "default calling code". + // + // If the number is being input in national format and no "default calling code" + // has been passed to `AsYouType` constructor, then returns `undefined`, + // even if a "default country" has been passed to `AsYouType` constructor. + // + if (this.isInternational()) { + return this.state.callingCode; + } + } // A legacy alias. + + }, { + key: "getCountryCallingCode", + value: function getCountryCallingCode() { + return this.getCallingCode(); + } + /** + * Returns a two-letter country code of the phone number. + * Returns `undefined` for "non-geographic" phone numbering plans. + * Returns `undefined` if no phone number has been input yet. + * @return {string} [country] + */ + + }, { + key: "getCountry", + value: function getCountry() { + var digits = this.state.digits; // Return `undefined` if no digits have been input yet. + + if (digits) { + return this._getCountry(); + } + } + /** + * Returns a two-letter country code of the phone number. + * Returns `undefined` for "non-geographic" phone numbering plans. + * @return {string} [country] + */ + + }, { + key: "_getCountry", + value: function _getCountry() { + var country = this.state.country; + /* istanbul ignore if */ + + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + // `AsYouType.getCountry()` returns `undefined` + // for "non-geographic" phone numbering plans. + if (country === '001') { + return; + } + } + + return country; + } + }, { + key: "determineTheCountryIfNeeded", + value: function determineTheCountryIfNeeded() { + // Suppose a user enters a phone number in international format, + // and there're several countries corresponding to that country calling code, + // and a country has been derived from the number, and then + // a user enters one more digit and the number is no longer + // valid for the derived country, so the country should be re-derived + // on every new digit in those cases. + // + // If the phone number is being input in national format, + // then it could be a case when `defaultCountry` wasn't specified + // when creating `AsYouType` instance, and just `defaultCallingCode` was specified, + // and that "calling code" could correspond to a "non-geographic entity", + // or there could be several countries corresponding to that country calling code. + // In those cases, `this.country` is `undefined` and should be derived + // from the number. Again, if country calling code is ambiguous, then + // `this.country` should be re-derived with each new digit. + // + if (!this.state.country || this.isCountryCallingCodeAmbiguous()) { + this.determineTheCountry(); + } + } // Prepends `+CountryCode ` in case of an international phone number + + }, { + key: "getFullNumber", + value: function getFullNumber(formattedNationalNumber) { + var _this2 = this; + + if (this.isInternational()) { + var prefix = function prefix(text) { + return _this2.formatter.getInternationalPrefixBeforeCountryCallingCode(_this2.state, { + spacing: text ? true : false + }) + text; + }; + + var callingCode = this.state.callingCode; + + if (!callingCode) { + return prefix("".concat(this.state.getDigitsWithoutInternationalPrefix())); + } + + if (!formattedNationalNumber) { + return prefix(callingCode); + } + + return prefix("".concat(callingCode, " ").concat(formattedNationalNumber)); + } + + return formattedNationalNumber; + } + }, { + key: "getNonFormattedNationalNumberWithPrefix", + value: function getNonFormattedNationalNumberWithPrefix() { + var _this$state = this.state, + nationalSignificantNumber = _this$state.nationalSignificantNumber, + complexPrefixBeforeNationalSignificantNumber = _this$state.complexPrefixBeforeNationalSignificantNumber, + nationalPrefix = _this$state.nationalPrefix; + var number = nationalSignificantNumber; + var prefix = complexPrefixBeforeNationalSignificantNumber || nationalPrefix; + + if (prefix) { + number = prefix + number; + } + + return number; + } + }, { + key: "getNonFormattedNumber", + value: function getNonFormattedNumber() { + var nationalSignificantNumberMatchesInput = this.state.nationalSignificantNumberMatchesInput; + return this.getFullNumber(nationalSignificantNumberMatchesInput ? this.getNonFormattedNationalNumberWithPrefix() : this.state.getNationalDigits()); + } + }, { + key: "getNonFormattedTemplate", + value: function getNonFormattedTemplate() { + var number = this.getNonFormattedNumber(); + + if (number) { + return number.replace(/[\+\d]/g, _AsYouTypeFormatter.DIGIT_PLACEHOLDER); + } + } + }, { + key: "isCountryCallingCodeAmbiguous", + value: function isCountryCallingCodeAmbiguous() { + var callingCode = this.state.callingCode; + var countryCodes = this.metadata.getCountryCodesForCallingCode(callingCode); + return countryCodes && countryCodes.length > 1; + } // Determines the country of the phone number + // entered so far based on the country phone code + // and the national phone number. + + }, { + key: "determineTheCountry", + value: function determineTheCountry() { + this.state.setCountry((0, _getCountryByCallingCode["default"])(this.isInternational() ? this.state.callingCode : this.defaultCallingCode, this.state.nationalSignificantNumber, this.metadata)); + } + /** + * Returns a E.164 phone number value for the user's input. + * + * For example, for country `"US"` and input `"(222) 333-4444"` + * it will return `"+12223334444"`. + * + * For international phone number input, it will also auto-correct + * some minor errors such as using a national prefix when writing + * an international phone number. For example, if the user inputs + * `"+44 0 7400 000000"` then it will return an auto-corrected + * `"+447400000000"` phone number value. + * + * Will return `undefined` if no digits have been input, + * or when inputting a phone number in national format and no + * default country or default "country calling code" have been set. + * + * @return {string} [value] + */ + + }, { + key: "getNumberValue", + value: function getNumberValue() { + var _this$state2 = this.state, + digits = _this$state2.digits, + callingCode = _this$state2.callingCode, + country = _this$state2.country, + nationalSignificantNumber = _this$state2.nationalSignificantNumber; // Will return `undefined` if no digits have been input. + + if (!digits) { + return; + } + + if (this.isInternational()) { + if (callingCode) { + return '+' + callingCode + nationalSignificantNumber; + } else { + return '+' + digits; + } + } else { + if (country || callingCode) { + var callingCode_ = country ? this.metadata.countryCallingCode() : callingCode; + return '+' + callingCode_ + nationalSignificantNumber; + } + } + } + /** + * Returns an instance of `PhoneNumber` class. + * Will return `undefined` if no national (significant) number + * digits have been entered so far, or if no `defaultCountry` has been + * set and the user enters a phone number not in international format. + */ + + }, { + key: "getNumber", + value: function getNumber() { + var _this$state3 = this.state, + nationalSignificantNumber = _this$state3.nationalSignificantNumber, + carrierCode = _this$state3.carrierCode, + callingCode = _this$state3.callingCode; // `this._getCountry()` is basically same as `this.state.country` + // with the only change that it return `undefined` in case of a + // "non-geographic" numbering plan instead of `"001"` "internal use" value. + + var country = this._getCountry(); + + if (!nationalSignificantNumber) { + return; + } + + if (!country && !callingCode) { + return; + } + + var phoneNumber = new _PhoneNumber["default"](country || callingCode, nationalSignificantNumber, this.metadata.metadata); + + if (carrierCode) { + phoneNumber.carrierCode = carrierCode; + } // Phone number extensions are not supported by "As You Type" formatter. + + + return phoneNumber; + } + /** + * Returns `true` if the phone number is "possible". + * Is just a shortcut for `PhoneNumber.isPossible()`. + * @return {boolean} + */ + + }, { + key: "isPossible", + value: function isPossible() { + var phoneNumber = this.getNumber(); + + if (!phoneNumber) { + return false; + } + + return phoneNumber.isPossible(); + } + /** + * Returns `true` if the phone number is "valid". + * Is just a shortcut for `PhoneNumber.isValid()`. + * @return {boolean} + */ + + }, { + key: "isValid", + value: function isValid() { + var phoneNumber = this.getNumber(); + + if (!phoneNumber) { + return false; + } + + return phoneNumber.isValid(); + } + /** + * @deprecated + * This method is used in `react-phone-number-input/source/input-control.js` + * in versions before `3.0.16`. + */ + + }, { + key: "getNationalNumber", + value: function getNationalNumber() { + return this.state.nationalSignificantNumber; + } + /** + * Returns the phone number characters entered by the user. + * @return {string} + */ + + }, { + key: "getChars", + value: function getChars() { + return (this.state.international ? '+' : '') + this.state.digits; + } + /** + * Returns the template for the formatted phone number. + * @return {string} + */ + + }, { + key: "getTemplate", + value: function getTemplate() { + return this.formatter.getTemplate(this.state) || this.getNonFormattedTemplate() || ''; + } + }]); + + return AsYouType; +}(); + +exports["default"] = AsYouType; +//# sourceMappingURL=AsYouType.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouType.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouType.js.map new file mode 100644 index 00000000..a1f7aa46 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouType.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsYouType.js","names":["USE_NON_GEOGRAPHIC_COUNTRY_CODE","AsYouType","optionsOrDefaultCountry","metadata","Metadata","getCountryAndCallingCode","defaultCountry","defaultCallingCode","reset","hasCountry","undefined","isNonGeographicCallingCode","text","parser","input","state","digits","justLeadingPlus","formattedOutput","determineTheCountryIfNeeded","nationalSignificantNumber","formatter","narrowDownMatchingFormats","formattedNationalNumber","hasSelectedNumberingPlan","format","reExtractNationalSignificantNumber","nationalDigits","getNationalDigits","getFullNumber","getNonFormattedNumber","AsYouTypeState","onCountryChange","country","onCallingCodeChange","callingCode","selectNumberingPlan","numberingPlan","AsYouTypeFormatter","AsYouTypeParser","onNationalSignificantNumberChange","international","isInternational","getCallingCode","_getCountry","isCountryCallingCodeAmbiguous","determineTheCountry","prefix","getInternationalPrefixBeforeCountryCallingCode","spacing","getDigitsWithoutInternationalPrefix","complexPrefixBeforeNationalSignificantNumber","nationalPrefix","number","nationalSignificantNumberMatchesInput","getNonFormattedNationalNumberWithPrefix","replace","DIGIT_PLACEHOLDER","countryCodes","getCountryCodesForCallingCode","length","setCountry","getCountryByCallingCode","callingCode_","countryCallingCode","carrierCode","phoneNumber","PhoneNumber","getNumber","isPossible","isValid","getTemplate","getNonFormattedTemplate"],"sources":["../source/AsYouType.js"],"sourcesContent":["import Metadata from './metadata.js'\r\nimport PhoneNumber from './PhoneNumber.js'\r\nimport AsYouTypeState from './AsYouTypeState.js'\r\nimport AsYouTypeFormatter, { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.js'\r\nimport AsYouTypeParser, { extractFormattedDigitsAndPlus } from './AsYouTypeParser.js'\r\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js'\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\nexport default class AsYouType {\r\n\t/**\r\n\t * @param {(string|object)?} [optionsOrDefaultCountry] - The default country used for parsing non-international phone numbers. Can also be an `options` object.\r\n\t * @param {Object} metadata\r\n\t */\r\n\tconstructor(optionsOrDefaultCountry, metadata) {\r\n\t\tthis.metadata = new Metadata(metadata)\r\n\t\tconst [defaultCountry, defaultCallingCode] = this.getCountryAndCallingCode(optionsOrDefaultCountry)\r\n\t\tthis.defaultCountry = defaultCountry\r\n\t\tthis.defaultCallingCode = defaultCallingCode\r\n\t\tthis.reset()\r\n\t}\r\n\r\n\tgetCountryAndCallingCode(optionsOrDefaultCountry) {\r\n\t\t// Set `defaultCountry` and `defaultCallingCode` options.\r\n\t\tlet defaultCountry\r\n\t\tlet defaultCallingCode\r\n\t\t// Turns out `null` also has type \"object\". Weird.\r\n\t\tif (optionsOrDefaultCountry) {\r\n\t\t\tif (typeof optionsOrDefaultCountry === 'object') {\r\n\t\t\t\tdefaultCountry = optionsOrDefaultCountry.defaultCountry\r\n\t\t\t\tdefaultCallingCode = optionsOrDefaultCountry.defaultCallingCode\r\n\t\t\t} else {\r\n\t\t\t\tdefaultCountry = optionsOrDefaultCountry\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (defaultCountry && !this.metadata.hasCountry(defaultCountry)) {\r\n\t\t\tdefaultCountry = undefined\r\n\t\t}\r\n\t\tif (defaultCallingCode) {\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\t\tif (this.metadata.isNonGeographicCallingCode(defaultCallingCode)) {\r\n\t\t\t\t\tdefaultCountry = '001'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn [defaultCountry, defaultCallingCode]\r\n\t}\r\n\r\n\t/**\r\n\t * Inputs \"next\" phone number characters.\r\n\t * @param {string} text\r\n\t * @return {string} Formatted phone number characters that have been input so far.\r\n\t */\r\n\tinput(text) {\r\n\t\tconst {\r\n\t\t\tdigits,\r\n\t\t\tjustLeadingPlus\r\n\t\t} = this.parser.input(text, this.state)\r\n\t\tif (justLeadingPlus) {\r\n\t\t\tthis.formattedOutput = '+'\r\n\t\t} else if (digits) {\r\n\t\t\tthis.determineTheCountryIfNeeded()\r\n\t\t\t// Match the available formats by the currently available leading digits.\r\n\t\t\tif (this.state.nationalSignificantNumber) {\r\n\t\t\t\tthis.formatter.narrowDownMatchingFormats(this.state)\r\n\t\t\t}\r\n\t\t\tlet formattedNationalNumber\r\n\t\t\tif (this.metadata.hasSelectedNumberingPlan()) {\r\n\t\t\t\tformattedNationalNumber = this.formatter.format(digits, this.state)\r\n\t\t\t}\r\n\t\t\tif (formattedNationalNumber === undefined) {\r\n\t\t\t\t// See if another national (significant) number could be re-extracted.\r\n\t\t\t\tif (this.parser.reExtractNationalSignificantNumber(this.state)) {\r\n\t\t\t\t\tthis.determineTheCountryIfNeeded()\r\n\t\t\t\t\t// If it could, then re-try formatting the new national (significant) number.\r\n\t\t\t\t\tconst nationalDigits = this.state.getNationalDigits()\r\n\t\t\t\t\tif (nationalDigits) {\r\n\t\t\t\t\t\tformattedNationalNumber = this.formatter.format(nationalDigits, this.state)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.formattedOutput = formattedNationalNumber\r\n\t\t\t\t? this.getFullNumber(formattedNationalNumber)\r\n\t\t\t\t: this.getNonFormattedNumber()\r\n\t\t}\r\n\t\treturn this.formattedOutput\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis.state = new AsYouTypeState({\r\n\t\t\tonCountryChange: (country) => {\r\n\t\t\t\t// Before version `1.6.0`, the official `AsYouType` formatter API\r\n\t\t\t\t// included the `.country` property of an `AsYouType` instance.\r\n\t\t\t\t// Since that property (along with the others) have been moved to\r\n\t\t\t\t// `this.state`, `this.country` property is emulated for compatibility\r\n\t\t\t\t// with the old versions.\r\n\t\t\t\tthis.country = country\r\n\t\t\t},\r\n\t\t\tonCallingCodeChange: (callingCode, country) => {\r\n\t\t\t\tthis.metadata.selectNumberingPlan(country, callingCode)\r\n\t\t\t\tthis.formatter.reset(this.metadata.numberingPlan, this.state)\r\n\t\t\t\tthis.parser.reset(this.metadata.numberingPlan)\r\n\t\t\t}\r\n\t\t})\r\n\t\tthis.formatter = new AsYouTypeFormatter({\r\n\t\t\tstate: this.state,\r\n\t\t\tmetadata: this.metadata\r\n\t\t})\r\n\t\tthis.parser = new AsYouTypeParser({\r\n\t\t\tdefaultCountry: this.defaultCountry,\r\n\t\t\tdefaultCallingCode: this.defaultCallingCode,\r\n\t\t\tmetadata: this.metadata,\r\n\t\t\tstate: this.state,\r\n\t\t\tonNationalSignificantNumberChange: () => {\r\n\t\t\t\tthis.determineTheCountryIfNeeded()\r\n\t\t\t\tthis.formatter.reset(this.metadata.numberingPlan, this.state)\r\n\t\t\t}\r\n\t\t})\r\n\t\tthis.state.reset(this.defaultCountry, this.defaultCallingCode)\r\n\t\tthis.formattedOutput = ''\r\n\t\treturn this\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if the phone number is being input in international format.\r\n\t * In other words, returns `true` if and only if the parsed phone number starts with a `\"+\"`.\r\n\t * @return {boolean}\r\n\t */\r\n\tisInternational() {\r\n\t\treturn this.state.international\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the \"calling code\" part of the phone number when it's being input\r\n\t * in an international format.\r\n\t * If no valid calling code has been entered so far, returns `undefined`.\r\n\t * @return {string} [callingCode]\r\n\t */\r\n\tgetCallingCode() {\r\n\t\t // If the number is being input in national format and some \"default calling code\"\r\n\t\t // has been passed to `AsYouType` constructor, then `this.state.callingCode`\r\n\t\t // is equal to that \"default calling code\".\r\n\t\t //\r\n\t\t // If the number is being input in national format and no \"default calling code\"\r\n\t\t // has been passed to `AsYouType` constructor, then returns `undefined`,\r\n\t\t // even if a \"default country\" has been passed to `AsYouType` constructor.\r\n\t\t //\r\n\t\tif (this.isInternational()) {\r\n\t\t\treturn this.state.callingCode\r\n\t\t}\r\n\t}\r\n\r\n\t// A legacy alias.\r\n\tgetCountryCallingCode() {\r\n\t\treturn this.getCallingCode()\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a two-letter country code of the phone number.\r\n\t * Returns `undefined` for \"non-geographic\" phone numbering plans.\r\n\t * Returns `undefined` if no phone number has been input yet.\r\n\t * @return {string} [country]\r\n\t */\r\n\tgetCountry() {\r\n\t\tconst { digits } = this.state\r\n\t\t// Return `undefined` if no digits have been input yet.\r\n\t\tif (digits) {\r\n\t\t\treturn this._getCountry()\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a two-letter country code of the phone number.\r\n\t * Returns `undefined` for \"non-geographic\" phone numbering plans.\r\n\t * @return {string} [country]\r\n\t */\r\n\t_getCountry() {\r\n\t\tconst { country } = this.state\r\n\t\t/* istanbul ignore if */\r\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\t// `AsYouType.getCountry()` returns `undefined`\r\n\t\t\t// for \"non-geographic\" phone numbering plans.\r\n\t\t\tif (country === '001') {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn country\r\n\t}\r\n\r\n\tdetermineTheCountryIfNeeded() {\r\n\t\t// Suppose a user enters a phone number in international format,\r\n\t\t// and there're several countries corresponding to that country calling code,\r\n\t\t// and a country has been derived from the number, and then\r\n\t\t// a user enters one more digit and the number is no longer\r\n\t\t// valid for the derived country, so the country should be re-derived\r\n\t\t// on every new digit in those cases.\r\n\t\t//\r\n\t\t// If the phone number is being input in national format,\r\n\t\t// then it could be a case when `defaultCountry` wasn't specified\r\n\t\t// when creating `AsYouType` instance, and just `defaultCallingCode` was specified,\r\n\t\t// and that \"calling code\" could correspond to a \"non-geographic entity\",\r\n\t\t// or there could be several countries corresponding to that country calling code.\r\n\t\t// In those cases, `this.country` is `undefined` and should be derived\r\n\t\t// from the number. Again, if country calling code is ambiguous, then\r\n\t\t// `this.country` should be re-derived with each new digit.\r\n\t\t//\r\n\t\tif (!this.state.country || this.isCountryCallingCodeAmbiguous()) {\r\n\t\t\tthis.determineTheCountry()\r\n\t\t}\r\n\t}\r\n\r\n\t// Prepends `+CountryCode ` in case of an international phone number\r\n\tgetFullNumber(formattedNationalNumber) {\r\n\t\tif (this.isInternational()) {\r\n\t\t\tconst prefix = (text) => this.formatter.getInternationalPrefixBeforeCountryCallingCode(this.state, {\r\n\t\t\t\tspacing: text ? true : false\r\n\t\t\t}) + text\r\n\t\t\tconst { callingCode } = this.state\r\n\t\t\tif (!callingCode) {\r\n\t\t\t\treturn prefix(`${this.state.getDigitsWithoutInternationalPrefix()}`)\r\n\t\t\t}\r\n\t\t\tif (!formattedNationalNumber) {\r\n\t\t\t\treturn prefix(callingCode)\r\n\t\t\t}\r\n\t\t\treturn prefix(`${callingCode} ${formattedNationalNumber}`)\r\n\t\t}\r\n\t\treturn formattedNationalNumber\r\n\t}\r\n\r\n\tgetNonFormattedNationalNumberWithPrefix() {\r\n\t\tconst {\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tcomplexPrefixBeforeNationalSignificantNumber,\r\n\t\t\tnationalPrefix\r\n\t\t} = this.state\r\n\t\tlet number = nationalSignificantNumber\r\n\t\tconst prefix = complexPrefixBeforeNationalSignificantNumber || nationalPrefix\r\n\t\tif (prefix) {\r\n\t\t\tnumber = prefix + number\r\n\t\t}\r\n\t\treturn number\r\n\t}\r\n\r\n\tgetNonFormattedNumber() {\r\n\t\tconst { nationalSignificantNumberMatchesInput } = this.state\r\n\t\treturn this.getFullNumber(\r\n\t\t\tnationalSignificantNumberMatchesInput\r\n\t\t\t\t? this.getNonFormattedNationalNumberWithPrefix()\r\n\t\t\t\t: this.state.getNationalDigits()\r\n\t\t)\r\n\t}\r\n\r\n\tgetNonFormattedTemplate() {\r\n\t\tconst number = this.getNonFormattedNumber()\r\n\t\tif (number) {\r\n\t\t\treturn number.replace(/[\\+\\d]/g, DIGIT_PLACEHOLDER)\r\n\t\t}\r\n\t}\r\n\r\n\tisCountryCallingCodeAmbiguous() {\r\n\t\tconst { callingCode } = this.state\r\n\t\tconst countryCodes = this.metadata.getCountryCodesForCallingCode(callingCode)\r\n\t\treturn countryCodes && countryCodes.length > 1\r\n\t}\r\n\r\n\t// Determines the country of the phone number\r\n\t// entered so far based on the country phone code\r\n\t// and the national phone number.\r\n\tdetermineTheCountry() {\r\n\t\tthis.state.setCountry(getCountryByCallingCode(\r\n\t\t\tthis.isInternational() ? this.state.callingCode : this.defaultCallingCode,\r\n\t\t\tthis.state.nationalSignificantNumber,\r\n\t\t\tthis.metadata\r\n\t\t))\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a E.164 phone number value for the user's input.\r\n\t *\r\n\t * For example, for country `\"US\"` and input `\"(222) 333-4444\"`\r\n\t * it will return `\"+12223334444\"`.\r\n\t *\r\n\t * For international phone number input, it will also auto-correct\r\n\t * some minor errors such as using a national prefix when writing\r\n\t * an international phone number. For example, if the user inputs\r\n\t * `\"+44 0 7400 000000\"` then it will return an auto-corrected\r\n\t * `\"+447400000000\"` phone number value.\r\n\t *\r\n\t * Will return `undefined` if no digits have been input,\r\n\t * or when inputting a phone number in national format and no\r\n\t * default country or default \"country calling code\" have been set.\r\n\t *\r\n\t * @return {string} [value]\r\n\t */\r\n\tgetNumberValue() {\r\n\t\tconst {\r\n\t\t\tdigits,\r\n\t\t\tcallingCode,\r\n\t\t\tcountry,\r\n\t\t\tnationalSignificantNumber\r\n\t\t} = this.state\r\n\r\n\t \t// Will return `undefined` if no digits have been input.\r\n\t\tif (!digits) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif (this.isInternational()) {\r\n\t\t\tif (callingCode) {\r\n\t\t\t\treturn '+' + callingCode + nationalSignificantNumber\r\n\t\t\t} else {\r\n\t\t\t\treturn '+' + digits\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (country || callingCode) {\r\n\t\t\t\tconst callingCode_ = country ? this.metadata.countryCallingCode() : callingCode\r\n\t\t\t\treturn '+' + callingCode_ + nationalSignificantNumber\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an instance of `PhoneNumber` class.\r\n\t * Will return `undefined` if no national (significant) number\r\n\t * digits have been entered so far, or if no `defaultCountry` has been\r\n\t * set and the user enters a phone number not in international format.\r\n\t */\r\n\tgetNumber() {\r\n\t\tconst {\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tcarrierCode,\r\n\t\t\tcallingCode\r\n\t\t} = this.state\r\n\r\n\t\t// `this._getCountry()` is basically same as `this.state.country`\r\n\t\t// with the only change that it return `undefined` in case of a\r\n\t\t// \"non-geographic\" numbering plan instead of `\"001\"` \"internal use\" value.\r\n\t\tconst country = this._getCountry()\r\n\r\n\t\tif (!nationalSignificantNumber) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif (!country && !callingCode) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tconst phoneNumber = new PhoneNumber(\r\n\t\t\tcountry || callingCode,\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tthis.metadata.metadata\r\n\t\t)\r\n\t\tif (carrierCode) {\r\n\t\t\tphoneNumber.carrierCode = carrierCode\r\n\t\t}\r\n\t\t// Phone number extensions are not supported by \"As You Type\" formatter.\r\n\t\treturn phoneNumber\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if the phone number is \"possible\".\r\n\t * Is just a shortcut for `PhoneNumber.isPossible()`.\r\n\t * @return {boolean}\r\n\t */\r\n\tisPossible() {\r\n\t\tconst phoneNumber = this.getNumber()\r\n\t\tif (!phoneNumber) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn phoneNumber.isPossible()\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if the phone number is \"valid\".\r\n\t * Is just a shortcut for `PhoneNumber.isValid()`.\r\n\t * @return {boolean}\r\n\t */\r\n\tisValid() {\r\n\t\tconst phoneNumber = this.getNumber()\r\n\t\tif (!phoneNumber) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn phoneNumber.isValid()\r\n\t}\r\n\r\n\t/**\r\n\t * @deprecated\r\n\t * This method is used in `react-phone-number-input/source/input-control.js`\r\n\t * in versions before `3.0.16`.\r\n\t */\r\n\tgetNationalNumber() {\r\n\t\treturn this.state.nationalSignificantNumber\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the phone number characters entered by the user.\r\n\t * @return {string}\r\n\t */\r\n\tgetChars() {\r\n\t\treturn (this.state.international ? '+' : '') + this.state.digits\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the template for the formatted phone number.\r\n\t * @return {string}\r\n\t */\r\n\tgetTemplate() {\r\n\t\treturn this.formatter.getTemplate(this.state) || this.getNonFormattedTemplate() || ''\r\n\t}\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouType.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouType.test.js new file mode 100644 index 00000000..34a16207 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouType.test.js @@ -0,0 +1,1253 @@ +"use strict"; + +var _metadataMin = _interopRequireDefault(require("../metadata.min.json")); + +var _AsYouType = _interopRequireDefault(require("./AsYouType.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +var AsYouType = /*#__PURE__*/function (_AsYouType_) { + _inherits(AsYouType, _AsYouType_); + + var _super = _createSuper(AsYouType); + + function AsYouType(country_code) { + _classCallCheck(this, AsYouType); + + return _super.call(this, country_code, _metadataMin["default"]); + } + + return _createClass(AsYouType); +}(_AsYouType["default"]); + +var USE_NON_GEOGRAPHIC_COUNTRY_CODE = false; +describe('AsYouType', function () { + it('should use "national_prefix_formatting_rule"', function () { + // With national prefix (full). + new AsYouType('RU').input('88005553535').should.equal('8 (800) 555-35-35'); // With national prefix (partial). + + new AsYouType('RU').input('880055535').should.equal('8 (800) 555-35'); + }); + it('should populate national number template (digit by digit)', function () { + var formatter = new AsYouType('US'); + formatter.input('1'); // formatter.formatter.template.should.equal('x (xxx) xxx-xxxx') + + formatter.formatter.template.should.equal('x xxx-xxxx'); // formatter.formatter.populatedNationalNumberTemplate.should.equal('1 (xxx) xxx-xxxx') + + formatter.formatter.populatedNationalNumberTemplate.should.equal('1 xxx-xxxx'); + formatter.input('213'); + formatter.formatter.populatedNationalNumberTemplate.should.equal('1 (213) xxx-xxxx'); + formatter.input('3734253'); + formatter.formatter.populatedNationalNumberTemplate.should.equal('1 (213) 373-4253'); + }); + it('should populate international number template (digit by digit) (default country)', function () { + var formatter = new AsYouType('US'); + expect(formatter.formatter.template).to.be.undefined; + expect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined; + formatter.input('').should.equal(''); + expect(formatter.formatter.template).to.be.undefined; + expect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined; + formatter.input('+').should.equal('+'); + formatter.getTemplate().should.equal('x'); + expect(formatter.formatter.template).to.be.undefined; + expect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined; + formatter.input('1').should.equal('+1'); + formatter.getTemplate().should.equal('xx'); // Hasn't started formatting the phone number using the template yet. + // formatter.formatter.template.should.equal('xx xxx xxx xxxx') + + formatter.formatter.template.should.equal('xx xxx xxxx'); // formatter.formatter.populatedNationalNumberTemplate.should.equal('xxx xxx xxxx') + + formatter.formatter.populatedNationalNumberTemplate.should.equal('xxx xxxx'); // Has some national number digits, starts formatting the phone number using the template. + + formatter.input('213'); + formatter.formatter.populatedNationalNumberTemplate.should.equal('213 xxx xxxx'); + formatter.input('3734253'); + formatter.formatter.populatedNationalNumberTemplate.should.equal('213 373 4253'); + }); + it('should populate international number template (digit by digit)', function () { + var formatter = new AsYouType(); + expect(formatter.formatter.template).to.be.undefined; + expect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined; + formatter.input('').should.equal(''); + expect(formatter.formatter.template).to.be.undefined; + expect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined; + formatter.input('+').should.equal('+'); + expect(formatter.formatter.template).to.be.undefined; + expect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined; + formatter.input('1').should.equal('+1'); // formatter.formatter.template.should.equal('xx xxx xxx xxxx') + + formatter.formatter.template.should.equal('xx xxx xxxx'); // Hasn't yet started formatting the phone number using the template. + // formatter.formatter.populatedNationalNumberTemplate.should.equal('xxx xxx xxxx') + + formatter.formatter.populatedNationalNumberTemplate.should.equal('xxx xxxx'); // Has some national number digits, starts formatting the phone number using the template. + + formatter.input('213'); + formatter.formatter.populatedNationalNumberTemplate.should.equal('213 xxx xxxx'); + formatter.input('3734253'); + formatter.formatter.populatedNationalNumberTemplate.should.equal('213 373 4253'); + }); + it('should populate national number template (attempt to format complete number)', function () { + var formatter = new AsYouType('US'); + formatter.input('12133734253').should.equal('1 (213) 373-4253'); + formatter.formatter.template.should.equal('x (xxx) xxx-xxxx'); + formatter.formatter.populatedNationalNumberTemplate.should.equal('1 (213) 373-4253'); + }); + it('should parse and format phone numbers as you type', function () { + // International number test + new AsYouType().input('+12133734').should.equal('+1 213 373 4'); // Local number test + + new AsYouType('US').input('2133734').should.equal('(213) 373-4'); // US national number retains national prefix. + + new AsYouType('US').input('12133734').should.equal('1 (213) 373-4'); // US national number retains national prefix (full number). + + new AsYouType('US').input('12133734253').should.equal('1 (213) 373-4253'); + var formatter; // // Should discard national prefix from a "complete" phone number. + // new AsYouType('RU').input('8800555353').should.equal('880 055-53-53') + // Shouldn't extract national prefix when inputting in international format. + + new AsYouType('RU').input('+7800555353').should.equal('+7 800 555 35 3'); + new AsYouType('CH').input('044-668-1').should.equal('044 668 1'); // Test International phone number (international) + + formatter = new AsYouType(); // formatter.valid.should.be.false + + type(formatter.getCountry()).should.equal('undefined'); + type(formatter.getCountryCallingCode()).should.equal('undefined'); + formatter.getTemplate().should.equal(''); + formatter.input('+').should.equal('+'); // formatter.valid.should.be.false + + type(formatter.getCountry()).should.equal('undefined'); + type(formatter.getCountryCallingCode()).should.equal('undefined'); + formatter.getTemplate().should.equal('x'); + formatter.input('1').should.equal('+1'); // formatter.valid.should.be.false + + type(formatter.getCountry()).should.equal('undefined'); + formatter.getCountryCallingCode().should.equal('1'); + formatter.getTemplate().should.equal('xx'); + formatter.input('2').should.equal('+1 2'); + formatter.getTemplate().should.equal('xx x'); // formatter.valid.should.be.false + + type(formatter.getCountry()).should.equal('undefined'); + formatter.input('1').should.equal('+1 21'); + formatter.input('3').should.equal('+1 213'); + formatter.input(' ').should.equal('+1 213'); + formatter.input('3').should.equal('+1 213 3'); + formatter.input('3').should.equal('+1 213 33'); + formatter.input('3').should.equal('+1 213 333'); + formatter.input('4').should.equal('+1 213 333 4'); + formatter.input('4').should.equal('+1 213 333 44'); + formatter.input('4').should.equal('+1 213 333 444'); // formatter.valid.should.be.false + + type(formatter.getCountry()).should.equal('undefined'); + formatter.input('4').should.equal('+1 213 333 4444'); // formatter.valid.should.be.true + + formatter.getCountry().should.equal('US'); // This one below contains "punctuation spaces" + // along with the regular spaces + + formatter.getTemplate().should.equal('xx xxx xxx xxxx'); + formatter.input('5').should.equal('+1 21333344445'); // formatter.valid.should.be.false + + expect(formatter.getCountry()).to.be.undefined; + formatter.getCountryCallingCode().should.equal('1'); + expect(formatter.formatter.template).to.be.undefined; // Check that clearing an international formatter + // also clears country metadata. + + formatter.reset(); + formatter.input('+').should.equal('+'); + formatter.input('7').should.equal('+7'); + formatter.input('9').should.equal('+7 9'); + formatter.input('99 111 22 33').should.equal('+7 999 111 22 33'); // Test Switzerland phone numbers + + formatter = new AsYouType('CH'); + formatter.input(' ').should.equal(''); + formatter.input('0').should.equal('0'); + formatter.input('4').should.equal('04'); + formatter.input(' ').should.equal('04'); + formatter.input('-').should.equal('04'); + formatter.input('4').should.equal('044'); + formatter.input('-').should.equal('044'); + formatter.input('6').should.equal('044 6'); + formatter.input('6').should.equal('044 66'); + formatter.input('8').should.equal('044 668'); + formatter.input('-').should.equal('044 668'); + formatter.input('1').should.equal('044 668 1'); + formatter.input('8').should.equal('044 668 18'); // formatter.valid.should.be.false + + formatter.getCountry().should.equal('CH'); + formatter.formatter.template.should.equal('xxx xxx xx xx'); + formatter.getTemplate().should.equal('xxx xxx xx'); + formatter.input(' 00').should.equal('044 668 18 00'); // formatter.valid.should.be.true + + formatter.getCountry().should.equal('CH'); + formatter.getTemplate().should.equal('xxx xxx xx xx'); + formatter.input('9').should.equal('04466818009'); // formatter.valid.should.be.false + + formatter.getCountry().should.equal('CH'); + expect(formatter.formatter.template).to.be.undefined; // Kazakhstan (non-main country for +7 country phone code) + + formatter = new AsYouType(); + formatter.input('+77172580659'); + formatter.getCountry().should.equal('KZ'); // Brazil + + formatter = new AsYouType('BR'); + formatter.input('11987654321').should.equal('(11) 98765-4321'); // UK (Jersey) (non-main country for +44 country phone code) + + formatter = new AsYouType(); + formatter.input('+447700300000').should.equal('+44 7700 300000'); + formatter.getTemplate().should.equal('xxx xxxx xxxxxx'); + formatter.getCountry().should.equal('JE'); // Braces must be part of the template. + + formatter = new AsYouType('RU'); + formatter.input('88005553535').should.equal('8 (800) 555-35-35'); + formatter.getTemplate().should.equal('x (xxx) xxx-xx-xx'); // Test Russian phone numbers + // (with optional national prefix `8`) + + formatter = new AsYouType('RU'); + formatter.input('8').should.equal('8'); + formatter.input('9').should.equal('8 9'); + formatter.input('9').should.equal('8 99'); + formatter.input('9').should.equal('8 (999)'); + formatter.input('-').should.equal('8 (999)'); + formatter.input('1234').should.equal('8 (999) 123-4'); + formatter.input('567').should.equal('8 (999) 123-45-67'); + formatter.input('8').should.equal('899912345678'); // Shouldn't strip national prefix if it is optional + // and if it's a valid phone number (international). + + formatter = new AsYouType('RU'); // formatter.input('8005553535').should.equal('(800) 555-35-35') + + formatter.input('+78005553535').should.equal('+7 800 555 35 35'); + formatter.getNationalNumber().should.equal('8005553535'); // Check that clearing an national formatter: + // * doesn't clear country metadata + // * clears all other things + + formatter.reset(); + formatter.input('8').should.equal('8'); + formatter.input('9').should.equal('8 9'); + formatter.input('9').should.equal('8 99'); + formatter.input('9').should.equal('8 (999)'); + formatter.input('-').should.equal('8 (999)'); + formatter.input('1234').should.equal('8 (999) 123-4'); + formatter.input('567').should.equal('8 (999) 123-45-67'); + formatter.input('8').should.equal('899912345678'); // National prefix should not be prepended + // when formatting local NANPA phone numbers. + + new AsYouType('US').input('1').should.equal('1'); + new AsYouType('US').input('12').should.equal('1 2'); + new AsYouType('US').input('123').should.equal('1 23'); // Bulgaria + // (should not prepend national prefix `0`) + + new AsYouType('BG').input('111 222 3').should.equal('1112223'); // Deutchland + + new AsYouType().input('+4915539898001').should.equal('+49 15539 898001'); // KZ detection + + formatter = new AsYouType(); + formatter.input('+7 702 211 1111'); + formatter.getCountry().should.equal('KZ'); // formatter.valid.should.equal(true) + // New Zealand formatting fix (issue #89) + + new AsYouType('NZ').input('0212').should.equal('021 2'); // South Korea + + formatter = new AsYouType(); + formatter.input('+82111111111').should.equal('+82 11 111 1111'); + formatter.getTemplate().should.equal('xxx xx xxx xxxx'); + }); + it('should filter out formats that require a national prefix and no national prefix has been input', function () { + // Afghanistan. + var formatter = new AsYouType('AF'); // No national prefix, and national prefix is required in the format. + // (not `"national_prefix_is_optional_when_formatting": true`) + + formatter.input('44444444').should.equal('44444444'); + expect(formatter.formatter.template).to.be.undefined; // With national prefix + + formatter.reset().input('044444444').should.equal('044 444 444'); + formatter.formatter.template.should.equal('xxx xxx xxxx'); + }); + it('should work when a digit is not a national prefix but a part of a valid national number', function () { + // In Russia, `8` could be both a valid national prefix + // and a part of a valid national number. + var formatter = new AsYouType('RU'); // The formatter could try both variants: + // with extracting national prefix + // and without extracting it, + // and then choose whichever way has `this.matchingFormats`. + // Or there could be two instances of the formatter: + // one that extracts national prefix and one that doesn't, + // and then the one that has `this.matchingFormats` would be + // used to format the phone number. + // Something like an option `extractNationalPrefix: false` + // and creating `this.withNationalPrefixFormatter = new AsYouType(this.defaultCountry || this.defaultCallingCode, { metadata, extractNationalPrefix: false })` + // and something like `this.withNationalPrefixFormatter.input(nextDigits)` in `input(nextDigits)`. + // But, for this specific case, it's not required: + // in Russia, people are used to inputting `800` numbers with national prefix `8`: + // `8 800 555 35 35`. + // formatter.input('8005553535').should.equal('(800) 555-35-35') + + formatter.input('8005553535').should.equal('8005553535'); + formatter.reset(); + formatter.input('+78005553535').should.equal('+7 800 555 35 35'); + }); + it('should match formats that require a national prefix and no national prefix has been input (national prefix is mandatory for a format)', function () { + var formatter = new AsYouType('FR'); + formatter.input('612345678').should.equal('612345678'); + formatter.reset(); + formatter.input('0612345678').should.equal('06 12 34 56 78'); + }); + it('should match formats that require a national prefix and no national prefix has been input (national prefix is not mandatory for a format)', function () { + var formatter = new AsYouType('RU'); // Without national prefix. + + formatter.input('9991234567').should.equal('999 123-45-67'); + formatter.reset(); // With national prefix. + + formatter.input('89991234567').should.equal('8 (999) 123-45-67'); + }); + it('should not use `national_prefix_formatting_rule` when formatting international phone numbers', function () { + // Brazil. + // `national_prefix_formatting_rule` is `($1)`. + // Should not add braces around `12` when being input in international format. + new AsYouType().input('+55123456789').should.equal('+55 12 3456 789'); + new AsYouType('BR').input('+55123456789').should.equal('+55 12 3456 789'); + new AsYouType('BR').input('123456789').should.equal('(12) 3456-789'); + }); + it('should support incorrectly entered international phone numbers (with a national prefix)', function () { + var formatter; + formatter = new AsYouType(); + formatter.input('+1 1 877 215 5230').should.equal('+1 1 877 215 5230'); // formatter.input('+1 1 877 215 5230').should.equal('+1 1 8772155230') + + formatter.getNationalNumber().should.equal('8772155230'); // They've added another number format that has `8` leading digit + // and 14 digits. Maybe it's something related to Kazakhstan. + // formatter = new AsYouType() + // formatter.input('+78800555353').should.equal('+7 880 055 53 53') + // formatter.input('5').should.equal('+7 8 800 555 35 35') + // formatter.getNationalNumber().should.equal('8005553535') + }); + it('should return a partial template for current value', function () { + var asYouType = new AsYouType('US'); + asYouType.input('').should.equal(''); + asYouType.getTemplate().should.equal(''); + asYouType.input('2').should.equal('2'); // asYouType.getTemplate().should.equal('x') + // Doesn't format for a single digit. + + asYouType.getTemplate().should.equal('x'); + asYouType.input('1').should.equal('21'); + asYouType.getTemplate().should.equal('xx'); + asYouType.input('3').should.equal('(213)'); + asYouType.getTemplate().should.equal('(xxx)'); + }); + it("should fall back to the default country", function () { + var formatter = new AsYouType('RU'); + formatter.input('8').should.equal('8'); + formatter.input('9').should.equal('8 9'); + formatter.input('9').should.equal('8 99'); + formatter.input('9').should.equal('8 (999)'); // formatter.valid.should.be.false + + formatter.formatter.template.should.equal('x (xxx) xxx-xx-xx'); + formatter.getCountry().should.equal('RU'); // formatter.getCountryCallingCode().should.equal('7') + + formatter.input('000000000000').should.equal('8999000000000000'); // formatter.valid.should.be.false + + expect(formatter.formatter.template).to.be.undefined; + formatter.getCountry().should.equal('RU'); // formatter.getCountryCallingCode().should.equal('7') + + formatter.reset(); // formatter.valid.should.be.false + + expect(formatter.formatter.template).to.be.undefined; + expect(formatter.getCountry()).to.be.undefined; // formatter.getCountryCallingCode().should.equal('7') + + formatter.input('+1-213-373-4253').should.equal('+1 213 373 4253'); // formatter.valid.should.be.true + + formatter.getTemplate().should.equal('xx xxx xxx xxxx'); + formatter.getCountry().should.equal('US'); + formatter.getCountryCallingCode().should.equal('1'); + }); + it('should work in edge cases', function () { + var formatter; + var thrower; // No metadata + + thrower = function thrower() { + return new _AsYouType["default"]('RU'); + }; + + thrower.should["throw"]('`metadata` argument not passed'); // Second '+' sign + + formatter = new AsYouType('RU'); + formatter.input('+').should.equal('+'); + formatter.input('7').should.equal('+7'); + formatter.input('+').should.equal('+7'); // Out-of-position '+' sign + + formatter = new AsYouType('RU'); + formatter.input('8').should.equal('8'); + formatter.input('+').should.equal('8'); // No format matched + + formatter = new AsYouType('RU'); + formatter.input('88005553535').should.equal('8 (800) 555-35-35'); + formatter.input('0').should.equal('880055535350'); // Invalid country phone code + + formatter = new AsYouType(); + formatter.input('+0123').should.equal('+0123'); // No country specified and not an international number + + formatter = new AsYouType(); + formatter.input('88005553535').should.equal('88005553535'); // Extract national prefix when no `national_prefix` is set + + formatter = new AsYouType('AD'); + formatter.input('155555').should.equal('155 555'); // Typing nonsense + + formatter = new AsYouType('RU'); + formatter.input('+1abc2').should.equal('+1'); // Should reset default country when explicitly + // typing in an international phone number + + formatter = new AsYouType('RU'); + formatter.input('+'); + type(formatter.getCountry()).should.equal('undefined'); + type(formatter.getCountryCallingCode()).should.equal('undefined'); // Country not inferrable from the phone number, + // while the phone number itself can already be formatted "completely". + + formatter = new AsYouType(); + formatter.input('+12223333333'); + type(formatter.getCountry()).should.equal('undefined'); + formatter.getCountryCallingCode().should.equal('1'); // Reset a chosen format when it no longer applies given the new leading digits. + // If Google changes metadata for England then this test might not cover the case. + + formatter = new AsYouType('GB'); + formatter.input('0845').should.equal('0845'); // New leading digits don't match the format previously chosen. + // Reset the format. + + formatter.input('0').should.equal('0845 0'); + }); + it('should choose between matching formats based on the absence or presence of a national prefix', function () { + // The first matching format: + // { + // "pattern": "(\\d{2})(\\d{5,6})", + // "leading_digits_patterns": [ + // "(?:10|2[0-57-9])[19]", + // "(?:10|2[0-57-9])(?:10|9[56])", + // "(?:10|2[0-57-9])(?:100|9[56])" + // ], + // "national_prefix_formatting_rule": "0$1", + // "format": "$1 $2", + // "domestic_carrier_code_formatting_rule": "$CC $FG" + // } + // + // The second matching format: + // { + // "pattern": "(\\d{2})(\\d{4})(\\d{4})", + // "leading_digits_patterns": [ + // "10|2(?:[02-57-9]|1[1-9])", + // "10|2(?:[02-57-9]|1[1-9])", + // "10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])" + // ], + // "national_prefix_formatting_rule": "0$1", + // "national_prefix_is_optional_when_formatting": true, + // "format": "$1 $2 $3", + // "domestic_carrier_code_formatting_rule": "$CC $FG" + // } + // + var formatter = new AsYouType('CN'); // National prefix has been input. + // Chooses the first format. + + formatter.input('01010000').should.equal('010 10000'); + formatter.reset(); // No national prefix has been input, + // and `national_prefix_for_parsing` not matched. + // The first format won't match, because it doesn't have + // `"national_prefix_is_optional_when_formatting": true`. + // The second format will match, because it does have + // `"national_prefix_is_optional_when_formatting": true`. + + formatter.input('1010000').should.equal('10 1000 0'); + }); + it('should not accept phone number extensions', function () { + new AsYouType().input('+1-213-373-4253 ext. 123').should.equal('+1 213 373 4253'); + }); + it('should parse non-European digits', function () { + new AsYouType().input('+١٢١٢٢٣٢٣٢٣٢').should.equal('+1 212 232 3232'); + }); + it('should return a PhoneNumber instance', function () { + var formatter = new AsYouType('BR'); // No country calling code. + + expect(formatter.getNumber()).to.be.undefined; + formatter.input('+1'); // No national number digits. + + expect(formatter.getNumber()).to.be.undefined; + formatter.input('213-373-4253'); + var phoneNumber = formatter.getNumber(); + phoneNumber.country.should.equal('US'); + phoneNumber.countryCallingCode.should.equal('1'); + phoneNumber.number.should.equal('+12133734253'); + phoneNumber.nationalNumber.should.equal('2133734253'); + formatter.reset(); + formatter.input('+1-113-373-4253'); + phoneNumber = formatter.getNumber(); + expect(phoneNumber.country).to.be.undefined; + phoneNumber.countryCallingCode.should.equal('1'); // An incorrect NANPA international phone number. + // (contains national prefix in an international phone number) + + formatter.reset(); + formatter.input('+1-1'); // Before leading digits < 3 matching was implemented: + // + // phoneNumber = formatter.getNumber() + // expect(phoneNumber).to.not.be.undefined + // + // formatter.input('1') + // phoneNumber = formatter.getNumber() + // expect(phoneNumber.country).to.be.undefined + // phoneNumber.countryCallingCode.should.equal('1') + // phoneNumber.number.should.equal('+111') + // After leading digits < 3 matching was implemented: + // + + phoneNumber = formatter.getNumber(); + expect(phoneNumber).to.be.undefined; // + + formatter.input('1'); + phoneNumber = formatter.getNumber(); + expect(phoneNumber.country).to.be.undefined; + phoneNumber.countryCallingCode.should.equal('1'); + phoneNumber.number.should.equal('+11'); + }); + it('should work with countries that add digits to national (significant) number', function () { + // When formatting Argentinian mobile numbers in international format, + // a `9` is prepended, when compared to national format. + var asYouType = new AsYouType('AR'); + asYouType.input('+5493435551212').should.equal('+54 9 3435 55 1212'); + asYouType.reset(); // Digits shouldn't be changed when formatting in national format. + // (no `9` is prepended). + // First parses national (significant) number by prepending `9` to it + // and stripping `15` from it. + // Then uses `$2 15-$3-$4` format that strips the leading `9` + // and adds `15`. + + asYouType.input('0343515551212').should.equal('03435 15-55-1212'); + }); + it('should return non-formatted phone number when no format matches and national (significant) number has digits added', function () { + // When formatting Argentinian mobile numbers in international format, + // a `9` is prepended, when compared to national format. + var asYouType = new AsYouType('AR'); // Digits shouldn't be changed when formatting in national format. + // (no `9` is prepended). + // First parses national (significant) number by prepending `9` to it + // and stripping `15` from it. + // Then uses `$2 15-$3-$4` format that strips the leading `9` + // and adds `15`. + // `this.nationalSignificantNumberMatchesInput` is `false` in this case, + // so `getNonFormattedNumber()` returns `getFullNumber(getNationalDigits())`. + + asYouType.input('0343515551212999').should.equal('0343515551212999'); + }); + it('should format Argentina numbers (starting with 011) (digit by digit)', function () { + // Inputting a number digit-by-digit and as a whole a two different cases + // in case of this library compared to Google's `libphonenumber` + // that always inputs a number digit-by-digit. + // https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/23 + // nextDigits 0111523456789 + // nationalNumber 91123456789 + var formatter = new AsYouType('AR'); + formatter.input('0').should.equal('0'); + formatter.getTemplate().should.equal('x'); + formatter.input('1').should.equal('01'); + formatter.getTemplate().should.equal('xx'); + formatter.input('1').should.equal('011'); + formatter.getTemplate().should.equal('xxx'); + formatter.input('1').should.equal('011 1'); + formatter.getTemplate().should.equal('xxx x'); + formatter.input('5').should.equal('011 15'); + formatter.getTemplate().should.equal('xxx xx'); + formatter.input('2').should.equal('011 152'); + formatter.getTemplate().should.equal('xxx xxx'); + formatter.input('3').should.equal('011 1523'); + formatter.getTemplate().should.equal('xxx xxxx'); + formatter.input('4').should.equal('011 1523-4'); + formatter.getTemplate().should.equal('xxx xxxx-x'); + formatter.input('5').should.equal('011 1523-45'); + formatter.getTemplate().should.equal('xxx xxxx-xx'); + formatter.input('6').should.equal('011 1523-456'); + formatter.getTemplate().should.equal('xxx xxxx-xxx'); + formatter.input('7').should.equal('011 1523-4567'); + formatter.getTemplate().should.equal('xxx xxxx-xxxx'); + formatter.input('8').should.equal('011152345678'); + formatter.getTemplate().should.equal('xxxxxxxxxxxx'); + formatter.input('9').should.equal('011 15-2345-6789'); + formatter.getTemplate().should.equal('xxx xx-xxxx-xxxx'); // Private property (not public API). + + formatter.state.nationalSignificantNumber.should.equal('91123456789'); // Private property (not public API). + // `formatter.digits` is not always `formatter.nationalPrefix` + // plus `formatter.nationalNumberDigits`. + + formatter.state.nationalPrefix.should.equal('0'); + formatter.isPossible().should.equal(true); + formatter.isValid().should.equal(true); + }); + it('should format Argentina numbers (starting with 011)', function () { + // Inputting a number digit-by-digit and as a whole a two different cases + // in case of this library compared to Google's `libphonenumber` + // that always inputs a number digit-by-digit. + // https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/23 + // nextDigits 0111523456789 + // nationalNumber 91123456789 + var formatter = new AsYouType('AR'); + formatter.input('0111523456789').should.equal('011 15-2345-6789'); // Private property (not public API). + + formatter.state.nationalSignificantNumber.should.equal('91123456789'); // Private property (not public API). + // `formatter.digits` is not always `formatter.nationalPrefix` + // plus `formatter.nationalNumberDigits`. + + expect(formatter.state.nationalPrefix).to.equal('0'); // expect(formatter.nationalPrefix).to.be.undefined + + formatter.isPossible().should.equal(true); + formatter.isValid().should.equal(true); + }); // https://gitlab.com/catamphetamine/react-phone-number-input/-/issues/93 + + it('should format Indonesian numbers', function () { + var formatter = new AsYouType('ID'); + formatter.getChars().should.equal(''); // Before leading digits < 3 matching was implemented: + // formatter.input('081').should.equal('(081)') + // After leading digits < 3 matching was implemented: + + formatter.input('081').should.equal('081'); + }); + it('should prepend `complexPrefixBeforeNationalSignificantNumber` (not a complete number)', function () { + // A country having `national_prefix_for_parsing` with a "capturing group". + // National prefix is either not used in a format or is optional. + // Input phone number without a national prefix. + var formatter = new AsYouType('AU'); + formatter.input('1831130345678').should.equal('1831 1303 456 78'); // Private property (not public API). + + formatter.state.nationalSignificantNumber.should.equal('130345678'); // Private property (not public API). + // `formatter.digits` is not always `formatter.nationalPrefix` + // plus `formatter.nationalNumberDigits`. + + expect(formatter.state.nationalPrefix).to.be.undefined; + formatter.state.complexPrefixBeforeNationalSignificantNumber.should.equal('1831'); + }); + it('should prepend `complexPrefixBeforeNationalSignificantNumber` (complete number)', function () { + // A country having `national_prefix_for_parsing` with a "capturing group". + // National prefix is either not used in a format or is optional. + // Input phone number without a national prefix. + var formatter = new AsYouType('AU'); + formatter.input('18311303456789').should.equal('1831 1303 456 789'); // Private property (not public API). + + formatter.state.nationalSignificantNumber.should.equal('1303456789'); // Private property (not public API). + // `formatter.digits` is not always `formatter.nationalPrefix` + // plus `formatter.nationalNumberDigits`. + + expect(formatter.state.nationalPrefix).to.be.undefined; + formatter.state.complexPrefixBeforeNationalSignificantNumber.should.equal('1831'); + }); + it('should work with Mexico numbers', function () { + var asYouType = new AsYouType('MX'); // Fixed line. + + asYouType.input('+52(449)978-000').should.equal('+52 449 978 000'); + asYouType.input('1').should.equal('+52 449 978 0001'); + asYouType.reset(); + asYouType.input('01449978000').should.equal('01449 978 000'); + asYouType.getTemplate().should.equal('xxxxx xxx xxx'); + asYouType.input('1').should.equal('01449 978 0001'); + asYouType.getTemplate().should.equal('xxxxx xxx xxxx'); + asYouType.reset(); + asYouType.input('(449)978-000').should.equal('449 978 000'); + asYouType.getTemplate().should.equal('xxx xxx xxx'); + asYouType.input('1').should.equal('449 978 0001'); + asYouType.getTemplate().should.equal('xxx xxx xxxx'); // Mobile. + // `1` is prepended before area code to mobile numbers in international format. + + asYouType.reset(); + asYouType.input('+521331234567').should.equal('+52 133 1234 567'); + asYouType.getTemplate().should.equal('xxx xxx xxxx xxx'); // Google's `libphonenumber` seems to not able to format this type of number. + // https://issuetracker.google.com/issues/147938979 + + asYouType.input('8').should.equal('+52 133 1234 5678'); + asYouType.getTemplate().should.equal('xxx xxx xxxx xxxx'); + asYouType.reset(); + asYouType.input('+52331234567').should.equal('+52 33 1234 567'); + asYouType.input('8').should.equal('+52 33 1234 5678'); + asYouType.reset(); + asYouType.input('044331234567').should.equal('04433 1234 567'); + asYouType.input('8').should.equal('04433 1234 5678'); + asYouType.reset(); + asYouType.input('045331234567').should.equal('04533 1234 567'); + asYouType.input('8').should.equal('04533 1234 5678'); + }); + it('should just prepend national prefix if national_prefix_formatting_rule does not produce a suitable number', function () { + // "national_prefix": "8" + // "national_prefix_for_parsing": "0|80?" + var formatter = new AsYouType('BY'); // "national_prefix_formatting_rule": "8 $1" + // That `national_prefix_formatting_rule` isn't used + // because the user didn't input national prefix `8`. + + formatter.input('0800123').should.equal('0 800 123'); + formatter.getTemplate().should.equal('x xxx xxx'); + }); + it('should not duplicate area code for certain countries', function () { + // https://github.com/catamphetamine/libphonenumber-js/issues/318 + var asYouType = new AsYouType('VI'); // Even though `parse("3406934")` would return a + // "(340) 340-6934" national number, still + // "As You Type" formatter should leave it as "(340) 6934". + + asYouType.input('340693').should.equal('(340) 693'); + asYouType.input('4').should.equal('(340) 693-4'); + asYouType.input('123').should.equal('(340) 693-4123'); + }); + it('shouldn\'t throw when passed a non-existent default country', function () { + new AsYouType('XX').input('+78005553535').should.equal('+7 800 555 35 35'); + new AsYouType('XX').input('88005553535').should.equal('88005553535'); + }); + it('should parse carrier codes', function () { + var formatter = new AsYouType('BR'); + formatter.input('0 15 21 5555-5555'); + var phoneNumber = formatter.getNumber(); + phoneNumber.carrierCode.should.equal('15'); + formatter.reset(); + formatter.input('+1-213-373-4253'); + phoneNumber = formatter.getNumber(); + expect(phoneNumber.carrierCode).to.be.undefined; + }); + it('should format when default country calling code is configured', function () { + var formatter = new AsYouType({ + defaultCallingCode: '7' + }); + formatter.input('88005553535').should.equal('8 (800) 555-35-35'); + formatter.getNumber().countryCallingCode.should.equal('7'); + formatter.getNumber().country.should.equal('RU'); + }); + it('shouldn\'t return PhoneNumber if country calling code hasn\'t been input yet', function () { + var formatter = new AsYouType(); + formatter.input('+80'); + expect(formatter.getNumber()).to.be.undefined; + }); + it('should format non-geographic numbering plan phone numbers', function () { + var formatter = new AsYouType(); + formatter.input('+').should.equal('+'); + formatter.input('8').should.equal('+8'); + formatter.input('7').should.equal('+87'); + expect(formatter.getCountry()).to.be.undefined; + formatter.input('0').should.equal('+870'); + + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + formatter.getCountry().should.equal('001'); + } else { + expect(formatter.getCountry()).to.be.undefined; + } + + formatter.input('7').should.equal('+870 7'); + formatter.input('7').should.equal('+870 77'); + formatter.input('3').should.equal('+870 773'); + formatter.input('1').should.equal('+870 773 1'); + formatter.input('1').should.equal('+870 773 11'); + formatter.input('1').should.equal('+870 773 111'); + formatter.input('6').should.equal('+870 773 111 6'); + formatter.input('3').should.equal('+870 773 111 63'); + formatter.input('2').should.equal('+870 773 111 632'); + + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + formatter.getNumber().country.should.equal('001'); + } else { + expect(formatter.getCountry()).to.be.undefined; + } + + formatter.getNumber().countryCallingCode.should.equal('870'); + }); + it('should format non-geographic numbering plan phone numbers (default country calling code)', function () { + var formatter = new AsYouType({ + defaultCallingCode: '870' + }); + + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + formatter.getNumber().country.should.equal('001'); + } else { + expect(formatter.getCountry()).to.be.undefined; + } + + formatter.input('7').should.equal('7'); + formatter.input('7').should.equal('77'); + formatter.input('3').should.equal('773'); + formatter.input('1').should.equal('773 1'); + formatter.input('1').should.equal('773 11'); + formatter.input('1').should.equal('773 111'); + formatter.input('6').should.equal('773 111 6'); + formatter.input('3').should.equal('773 111 63'); + formatter.input('2').should.equal('773 111 632'); + + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + formatter.getNumber().country.should.equal('001'); + } else { + expect(formatter.getCountry()).to.be.undefined; + } + + formatter.getNumber().countryCallingCode.should.equal('870'); + }); + it('should not format non-geographic numbering plan phone numbers (default country 001)', function () { + var formatter = new AsYouType('001'); + expect(formatter.defaultCountry).to.be.undefined; + expect(formatter.defaultCallingCode).to.be.undefined; + formatter.input('7').should.equal('7'); + formatter.input('7').should.equal('77'); + formatter.input('3').should.equal('773'); + formatter.input('1').should.equal('7731'); + formatter.input('1').should.equal('77311'); + formatter.input('1').should.equal('773111'); + formatter.input('6').should.equal('7731116'); + formatter.input('3').should.equal('77311163'); + formatter.input('2').should.equal('773111632'); + expect(formatter.getCountry()).to.be.undefined; + expect(formatter.getNumber()).to.be.undefined; + }); + it('should return PhoneNumber (should strip national prefix `1` in E.164 value)', function () { + var formatter = new AsYouType('RU'); + formatter.input('+1111'); + formatter.getNumber().number.should.equal('+111'); + }); + it('should return PhoneNumber with autocorrected international numbers without leading +', function () { + // https://github.com/catamphetamine/libphonenumber-js/issues/316 + var formatter = new AsYouType('FR'); + formatter.input('33612902554').should.equal('33 6 12 90 25 54'); + formatter.getNumber().country.should.equal('FR'); + formatter.getNumber().nationalNumber.should.equal('612902554'); + formatter.getNumber().number.should.equal('+33612902554'); // Should also strip national prefix. + + formatter.reset(); + formatter.input('330612902554').should.equal('33 06 12 90 25 54'); + formatter.getNumber().country.should.equal('FR'); + formatter.getNumber().nationalNumber.should.equal('612902554'); + formatter.getNumber().number.should.equal('+33612902554'); // On second thought, this "prepend default area code" feature won't be added, + // because when a user selects "British Virgin Islands" and inputs + // "2291234", then they see "(229) 123-4" which clearly indicates that + // they should input the complete phone number (with area code). + // So, unless a user completely doesn't understand what they're doing, + // they'd input the complete phone number (with area code). + // // Should prepend the default area code in British Virgin Islands. + // // https://github.com/catamphetamine/react-phone-number-input/issues/335 + // const formatter2 = new AsYouType('VG') + // formatter2.input('2291234').should.equal('(229) 123-4') + // formatter2.getNumber().country.should.equal('VG') + // formatter2.getNumber().nationalNumber.should.equal('2842291234') + // formatter2.getNumber().number.should.equal('+12842291234') + }); + it('should work with out-of-country dialing prefix (like 00)', function () { + var formatter = new AsYouType('DE'); + formatter.input('00498911196611').should.equal('00 49 89 11196611'); + formatter.getCountry().should.equal('DE'); + formatter.formatter.template.should.equal('xx xx xx xxxxxxxx'); + formatter.formatter.populatedNationalNumberTemplate.should.equal('89 11196611'); + formatter.getTemplate().should.equal('xx xx xx xxxxxxxx'); + formatter.getNumber().country.should.equal('DE'); + formatter.getNumber().nationalNumber.should.equal('8911196611'); + formatter.getNumber().number.should.equal('+498911196611'); + }); + it('shouldn\'t choose a format when there\'re too many digits for any of them', function () { + var formatter = new AsYouType('RU'); + formatter.input('89991112233'); + formatter.formatter.chosenFormat.format().should.equal('$1 $2-$3-$4'); + formatter.reset(); + formatter.input('899911122334'); + expect(formatter.formatter.chosenFormat).to.be.undefined; + }); + it('should get separator after national prefix', function () { + // Russia. + // Has separator after national prefix. + var formatter = new AsYouType('RU'); + var format = formatter.metadata.formats()[0]; + format.nationalPrefixFormattingRule().should.equal('8 ($1)'); + formatter.formatter.getSeparatorAfterNationalPrefix(format).should.equal(' '); // Britain. + // Has no separator after national prefix. + + var formatter2 = new AsYouType('GB'); + var format2 = formatter2.metadata.formats()[0]; + format2.nationalPrefixFormattingRule().should.equal('0$1'); + formatter2.formatter.getSeparatorAfterNationalPrefix(format2).should.equal(''); + }); + it('should return if the number is possible', function () { + // National. Russia. + var formatter = new AsYouType('RU'); + formatter.isPossible().should.equal(false); + formatter.input('8'); + formatter.isPossible().should.equal(false); + formatter.input('8005553535'); + formatter.isPossible().should.equal(true); + formatter.input('5'); + formatter.isPossible().should.equal(false); + }); + it('should return if the number is valid', function () { + // National. Russia. + var formatter = new AsYouType('RU'); + formatter.isValid().should.equal(false); + formatter.input('88005553535'); + formatter.isValid().should.equal(true); + formatter.input('5'); + formatter.isValid().should.equal(false); + }); + it('should return if the number is international', function () { + // National. Russia. + var formatter = new AsYouType('RU'); + formatter.isInternational().should.equal(false); + formatter.input('88005553535'); + formatter.isInternational().should.equal(false); // International. Russia. + + var formatterInt = new AsYouType(); + formatterInt.isInternational().should.equal(false); + formatterInt.input('+'); + formatterInt.isInternational().should.equal(true); + formatterInt.input('78005553535'); + formatterInt.isInternational().should.equal(true); + }); + it('should return country calling code part of the number', function () { + // National. Russia. + var formatter = new AsYouType('RU'); + expect(formatter.getCountryCallingCode()).to.be.undefined; + formatter.input('88005553535'); + expect(formatter.getCountryCallingCode()).to.be.undefined; // International. Russia. + + var formatterInt = new AsYouType(); + expect(formatterInt.getCountryCallingCode()).to.be.undefined; + formatterInt.input('+'); + expect(formatterInt.getCountryCallingCode()).to.be.undefined; + formatterInt.input('7'); + expect(formatterInt.getCountryCallingCode()).to.equal('7'); + formatterInt.input('8005553535'); + expect(formatterInt.getCountryCallingCode()).to.equal('7'); + }); + it('should return the country of the number', function () { + // National. Russia. + var formatter = new AsYouType('RU'); + expect(formatter.getCountry()).to.be.undefined; + formatter.input('8'); + expect(formatter.getCountry()).to.equal('RU'); + formatter.input('8005553535'); + expect(formatter.getCountry()).to.equal('RU'); // International. Austria. + + var formatterInt = new AsYouType(); + expect(formatterInt.getCountry()).to.be.undefined; + formatterInt.input('+'); + expect(formatterInt.getCountry()).to.be.undefined; + formatterInt.input('43'); + expect(formatterInt.getCountry()).to.equal('AT'); // International. USA. + + var formatterIntRu = new AsYouType(); + expect(formatterIntRu.getCountry()).to.be.undefined; + formatterIntRu.input('+'); + expect(formatterIntRu.getCountry()).to.be.undefined; + formatterIntRu.input('1'); + expect(formatterIntRu.getCountry()).to.be.undefined; + formatterIntRu.input('2133734253'); + expect(formatterIntRu.getCountry()).to.equal('US'); + formatterIntRu.input('1'); + expect(formatterIntRu.getCountry()).to.be.undefined; + }); + it('should parse a long IDD prefix', function () { + var formatter = new AsYouType('AU'); // `14880011` is a long IDD prefix in Australia. + + formatter.input('1').should.equal('1'); + formatter.input('4').should.equal('14'); + formatter.input('8').should.equal('148'); + formatter.input('8').should.equal('1488'); + formatter.input('0').should.equal('14880'); + formatter.input('0').should.equal('148800'); + formatter.input('1').should.equal('1488001'); + formatter.input('1').should.equal('14880011'); // As if were calling US using `14880011` IDD prefix, + // though that prefix could mean something else. + + formatter.input('1').should.equal('14880011 1'); + formatter.input('2').should.equal('14880011 1 2'); + formatter.input('1').should.equal('14880011 1 21'); + formatter.input('3').should.equal('14880011 1 213'); + }); + it('should return the phone number characters entered by the user', function () { + var formatter = new AsYouType('RU'); + formatter.getChars().should.equal(''); + formatter.input('+123'); + formatter.getChars().should.equal('+123'); + formatter.reset(); + formatter.input('123'); + formatter.getChars().should.equal('123'); + }); // A test confirming the case when input `"11"` for country `"US"` + // produces `value` `"+11"`. + // https://gitlab.com/catamphetamine/react-phone-number-input/-/issues/113 + + it('should determine the national (significant) part correctly when input with national prefix in US', function () { + var formatter = new AsYouType('US'); // As soon as the user has input `"11"`, no `format` matches + // those "national number" digits in the `"US"` country metadata. + // Since no `format` matches, the number doesn't seem like a valid one, + // so it attempts to see if the user "forgot" to input a `"+"` at the start. + // And it looks like they might've to. + // So it acts as if the leading `"+"` is there, + // as if the user's input is `"+11"`. + // See `AsYouType.fixMissingPlus()` function. + + formatter.input('1 122 222 2222 3').should.equal('1 1 222 222 2223'); + formatter.getNumber().nationalNumber.should.equal('2222222223'); + }); +}); +describe('AsYouType.getNumberValue()', function () { + it('should return E.164 number value (national number, with national prefix, default country: US)', function () { + var formatter = new AsYouType('US'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input(''); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('1'); + formatter.getNumberValue().should.equal('+1'); + formatter.input('2'); + formatter.getNumberValue().should.equal('+12'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+121'); + formatter.input('3'); + formatter.getNumberValue().should.equal('+1213'); + formatter.input('373-4253'); + formatter.getNumberValue().should.equal('+12133734253'); + formatter.input('4'); + formatter.getNumberValue().should.equal('+121337342534'); + }); + it('should return E.164 number value (national number, with national prefix, default calling code: 1)', function () { + var formatter = new AsYouType({ + defaultCallingCode: '1' + }); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input(''); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('1'); + formatter.getNumberValue().should.equal('+1'); + formatter.input('2'); + formatter.getNumberValue().should.equal('+12'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+121'); + formatter.input('3'); + formatter.getNumberValue().should.equal('+1213'); + formatter.input('373-4253'); + formatter.getNumberValue().should.equal('+12133734253'); + formatter.input('4'); + formatter.getNumberValue().should.equal('+121337342534'); + }); + it('should return E.164 number value (national number, default country: US)', function () { + var formatter = new AsYouType('US'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input(''); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('2'); + formatter.getNumberValue().should.equal('+12'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+121'); + formatter.input('3'); + formatter.getNumberValue().should.equal('+1213'); + formatter.input('373-4253'); + formatter.getNumberValue().should.equal('+12133734253'); + formatter.input('4'); + formatter.getNumberValue().should.equal('+121337342534'); + }); + it('should return E.164 number value (national number, default calling code: 1)', function () { + var formatter = new AsYouType({ + defaultCallingCode: '1' + }); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input(''); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('2'); + formatter.getNumberValue().should.equal('+12'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+121'); + formatter.input('3'); + formatter.getNumberValue().should.equal('+1213'); + formatter.input('373-4253'); + formatter.getNumberValue().should.equal('+12133734253'); + formatter.input('4'); + formatter.getNumberValue().should.equal('+121337342534'); + }); + it('should return E.164 number value (international number, not a valid calling code)', function () { + var formatter = new AsYouType(); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input(''); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('+'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('2150'); + formatter.getNumberValue().should.equal('+2150'); + }); + it('should return E.164 number value (international number, default country: US)', function () { + var formatter = new AsYouType('US'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input(''); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('+'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('1'); + formatter.getNumberValue().should.equal('+1'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+1'); + formatter.input('2'); + formatter.getNumberValue().should.equal('+12'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+121'); + formatter.input('3'); + formatter.getNumberValue().should.equal('+1213'); + formatter.input('373-4253'); + formatter.getNumberValue().should.equal('+12133734253'); + formatter.input('4'); + formatter.getNumberValue().should.equal('+121337342534'); + }); + it('should return E.164 number value (international number, other default country: RU)', function () { + var formatter = new AsYouType('RU'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input(''); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('+'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('1'); + formatter.getNumberValue().should.equal('+1'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+1'); + formatter.input('2'); + formatter.getNumberValue().should.equal('+12'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+121'); + formatter.input('3'); + formatter.getNumberValue().should.equal('+1213'); + formatter.input('373-4253'); + formatter.getNumberValue().should.equal('+12133734253'); + formatter.input('4'); + formatter.getNumberValue().should.equal('+121337342534'); + }); + it('should return E.164 number value (international number, default calling code: 1)', function () { + var formatter = new AsYouType('US', { + defaultCallingCode: '1' + }); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input(''); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('+'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('1'); + formatter.getNumberValue().should.equal('+1'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+1'); + formatter.input('2'); + formatter.getNumberValue().should.equal('+12'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+121'); + formatter.input('3'); + formatter.getNumberValue().should.equal('+1213'); + formatter.input('373-4253'); + formatter.getNumberValue().should.equal('+12133734253'); + formatter.input('4'); + formatter.getNumberValue().should.equal('+121337342534'); + }); + it('should return E.164 number value (international number, other default calling code: 7)', function () { + var formatter = new AsYouType('US', { + defaultCallingCode: '7' + }); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input(''); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('+'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('1'); + formatter.getNumberValue().should.equal('+1'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+1'); + formatter.input('2'); + formatter.getNumberValue().should.equal('+12'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+121'); + formatter.input('3'); + formatter.getNumberValue().should.equal('+1213'); + formatter.input('373-4253'); + formatter.getNumberValue().should.equal('+12133734253'); + formatter.input('4'); + formatter.getNumberValue().should.equal('+121337342534'); + }); + it('should return E.164 number value (international number)', function () { + var formatter = new AsYouType(); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input(''); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('+'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('1'); + formatter.getNumberValue().should.equal('+1'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+1'); + formatter.input('2'); + formatter.getNumberValue().should.equal('+12'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+121'); + formatter.input('3'); + formatter.getNumberValue().should.equal('+1213'); + formatter.input('373-4253'); + formatter.getNumberValue().should.equal('+12133734253'); + formatter.input('4'); + formatter.getNumberValue().should.equal('+121337342534'); + }); + it('should return E.164 number value (national number) (no default country or calling code)', function () { + var formatter = new AsYouType(); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input(''); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('1'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('12'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('3'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('373-4253'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('4'); + expect(formatter.getNumberValue()).to.be.undefined; + }); + it('should not drop any input digits', function () { + // Test "+529011234567" number, proactively ensuring that no formatting is applied, + // where a format is chosen that would otherwise have led to some digits being dropped. + var formatter = new AsYouType('MX'); + formatter.input('9').should.equal('9'); + formatter.input('0').should.equal('90'); + formatter.input('1').should.equal('901'); + formatter.input('1').should.equal('901 1'); + formatter.input('2').should.equal('901 12'); + formatter.input('3').should.equal('901 123'); + formatter.input('4').should.equal('901 123 4'); + formatter.input('5').should.equal('901 123 45'); + formatter.input('6').should.equal('901 123 456'); + formatter.input('7').should.equal('901 123 4567'); + }); + it('should work for formats with no leading digits (`leadingDigitsPatternsCount === 0`)', function () { + var formatter = new AsYouType({ + defaultCallingCode: 888 + }); + formatter.input('1').should.equal('1'); + }); + it('should work for SK phone numbers', function () { + // There was a bug: "leading digits" `"2"` matched "leading digits pattern" `"90"`. + // The incorrect `.match()` function result was `{ oveflow: true }` + // while it should've been `undefined`. + // https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/66 + var formatter = new AsYouType('SK'); + formatter.input('090').should.equal('090'); + formatter.reset(); + formatter.input('080').should.equal('080'); + formatter.reset(); + formatter.input('059').should.equal('059'); + }); + it('should work for SK phone numbers (2)', function () { + // https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/69 + var formatter = new AsYouType('SK'); + formatter.input('421901222333').should.equal('421 901 222 333'); + formatter.getTemplate().should.equal('xxx xxx xxx xxx'); + }); +}); + +function type(something) { + return _typeof(something); +} +//# sourceMappingURL=AsYouType.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouType.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouType.test.js.map new file mode 100644 index 00000000..22b5cdc9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouType.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsYouType.test.js","names":["AsYouType","country_code","metadata","AsYouType_","USE_NON_GEOGRAPHIC_COUNTRY_CODE","describe","it","input","should","equal","formatter","template","populatedNationalNumberTemplate","expect","to","be","undefined","getTemplate","type","getCountry","getCountryCallingCode","reset","getNationalNumber","asYouType","thrower","getNumber","phoneNumber","country","countryCallingCode","number","nationalNumber","state","nationalSignificantNumber","nationalPrefix","isPossible","isValid","getChars","complexPrefixBeforeNationalSignificantNumber","carrierCode","defaultCallingCode","defaultCountry","chosenFormat","format","formats","nationalPrefixFormattingRule","getSeparatorAfterNationalPrefix","formatter2","format2","isInternational","formatterInt","formatterIntRu","getNumberValue","something"],"sources":["../source/AsYouType.test.js"],"sourcesContent":["import metadata from '../metadata.min.json' assert { type: 'json' }\r\nimport AsYouType_ from './AsYouType.js'\r\n\r\nclass AsYouType extends AsYouType_ {\r\n\tconstructor(country_code) {\r\n\t\tsuper(country_code, metadata)\r\n\t}\r\n}\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\ndescribe('AsYouType', () => {\r\n\tit('should use \"national_prefix_formatting_rule\"', () => {\r\n\t\t// With national prefix (full).\r\n\t\tnew AsYouType('RU').input('88005553535').should.equal('8 (800) 555-35-35')\r\n\t\t// With national prefix (partial).\r\n\t\tnew AsYouType('RU').input('880055535').should.equal('8 (800) 555-35')\r\n\t})\r\n\r\n\tit('should populate national number template (digit by digit)', () => {\r\n\t\tconst formatter = new AsYouType('US')\r\n\t\tformatter.input('1')\r\n\t\t// formatter.formatter.template.should.equal('x (xxx) xxx-xxxx')\r\n\t\tformatter.formatter.template.should.equal('x xxx-xxxx')\r\n\t\t// formatter.formatter.populatedNationalNumberTemplate.should.equal('1 (xxx) xxx-xxxx')\r\n\t\tformatter.formatter.populatedNationalNumberTemplate.should.equal('1 xxx-xxxx')\r\n\t\tformatter.input('213')\r\n\t\tformatter.formatter.populatedNationalNumberTemplate.should.equal('1 (213) xxx-xxxx')\r\n\t\tformatter.input('3734253')\r\n\t\tformatter.formatter.populatedNationalNumberTemplate.should.equal('1 (213) 373-4253')\r\n\t})\r\n\r\n\tit('should populate international number template (digit by digit) (default country)', () => {\r\n\t\tconst formatter = new AsYouType('US')\r\n\t\texpect(formatter.formatter.template).to.be.undefined\r\n\t\texpect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined\r\n\t\tformatter.input('').should.equal('')\r\n\t\texpect(formatter.formatter.template).to.be.undefined\r\n\t\texpect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined\r\n\t\tformatter.input('+').should.equal('+')\r\n\t\tformatter.getTemplate().should.equal('x')\r\n\t\texpect(formatter.formatter.template).to.be.undefined\r\n\t\texpect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined\r\n\t\tformatter.input('1').should.equal('+1')\r\n\t\tformatter.getTemplate().should.equal('xx')\r\n\t\t// Hasn't started formatting the phone number using the template yet.\r\n\t\t// formatter.formatter.template.should.equal('xx xxx xxx xxxx')\r\n\t\tformatter.formatter.template.should.equal('xx xxx xxxx')\r\n\t\t// formatter.formatter.populatedNationalNumberTemplate.should.equal('xxx xxx xxxx')\r\n\t\tformatter.formatter.populatedNationalNumberTemplate.should.equal('xxx xxxx')\r\n\t\t// Has some national number digits, starts formatting the phone number using the template.\r\n\t\tformatter.input('213')\r\n\t\tformatter.formatter.populatedNationalNumberTemplate.should.equal('213 xxx xxxx')\r\n\t\tformatter.input('3734253')\r\n\t\tformatter.formatter.populatedNationalNumberTemplate.should.equal('213 373 4253')\r\n\t})\r\n\r\n\tit('should populate international number template (digit by digit)', () => {\r\n\t\tconst formatter = new AsYouType()\r\n\t\texpect(formatter.formatter.template).to.be.undefined\r\n\t\texpect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined\r\n\t\tformatter.input('').should.equal('')\r\n\t\texpect(formatter.formatter.template).to.be.undefined\r\n\t\texpect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined\r\n\t\tformatter.input('+').should.equal('+')\r\n\t\texpect(formatter.formatter.template).to.be.undefined\r\n\t\texpect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined\r\n\t\tformatter.input('1').should.equal('+1')\r\n\t\t// formatter.formatter.template.should.equal('xx xxx xxx xxxx')\r\n\t\tformatter.formatter.template.should.equal('xx xxx xxxx')\r\n\t\t// Hasn't yet started formatting the phone number using the template.\r\n\t\t// formatter.formatter.populatedNationalNumberTemplate.should.equal('xxx xxx xxxx')\r\n\t\tformatter.formatter.populatedNationalNumberTemplate.should.equal('xxx xxxx')\r\n\t\t// Has some national number digits, starts formatting the phone number using the template.\r\n\t\tformatter.input('213')\r\n\t\tformatter.formatter.populatedNationalNumberTemplate.should.equal('213 xxx xxxx')\r\n\t\tformatter.input('3734253')\r\n\t\tformatter.formatter.populatedNationalNumberTemplate.should.equal('213 373 4253')\r\n\t})\r\n\r\n\tit('should populate national number template (attempt to format complete number)', () => {\r\n\t\tconst formatter = new AsYouType('US')\r\n\t\tformatter.input('12133734253').should.equal('1 (213) 373-4253')\r\n\t\tformatter.formatter.template.should.equal('x (xxx) xxx-xxxx')\r\n\t\tformatter.formatter.populatedNationalNumberTemplate.should.equal('1 (213) 373-4253')\r\n\t})\r\n\r\n\tit('should parse and format phone numbers as you type', () => {\r\n\t\t// International number test\r\n\t\tnew AsYouType().input('+12133734').should.equal('+1 213 373 4')\r\n\t\t// Local number test\r\n\t\tnew AsYouType('US').input('2133734').should.equal('(213) 373-4')\r\n\r\n\t\t// US national number retains national prefix.\r\n\t\tnew AsYouType('US').input('12133734').should.equal('1 (213) 373-4')\r\n\r\n\t\t// US national number retains national prefix (full number).\r\n\t\tnew AsYouType('US').input('12133734253').should.equal('1 (213) 373-4253')\r\n\r\n\t\tlet formatter\r\n\r\n\t\t// // Should discard national prefix from a \"complete\" phone number.\r\n\t\t// new AsYouType('RU').input('8800555353').should.equal('880 055-53-53')\r\n\r\n\t\t// Shouldn't extract national prefix when inputting in international format.\r\n\t\tnew AsYouType('RU').input('+7800555353').should.equal('+7 800 555 35 3')\r\n\r\n\t\tnew AsYouType('CH').input('044-668-1').should.equal('044 668 1')\r\n\r\n\t\t// Test International phone number (international)\r\n\r\n\t\tformatter = new AsYouType()\r\n\r\n\t\t// formatter.valid.should.be.false\r\n\t\ttype(formatter.getCountry()).should.equal('undefined')\r\n\t\ttype(formatter.getCountryCallingCode()).should.equal('undefined')\r\n\t\tformatter.getTemplate().should.equal('')\r\n\r\n\t\tformatter.input('+').should.equal('+')\r\n\r\n\t\t// formatter.valid.should.be.false\r\n\t\ttype(formatter.getCountry()).should.equal('undefined')\r\n\t\ttype(formatter.getCountryCallingCode()).should.equal('undefined')\r\n\t\tformatter.getTemplate().should.equal('x')\r\n\r\n\t\tformatter.input('1').should.equal('+1')\r\n\r\n\t\t// formatter.valid.should.be.false\r\n\t\ttype(formatter.getCountry()).should.equal('undefined')\r\n\t\tformatter.getCountryCallingCode().should.equal('1')\r\n\t\tformatter.getTemplate().should.equal('xx')\r\n\r\n\t\tformatter.input('2').should.equal('+1 2')\r\n\t\tformatter.getTemplate().should.equal('xx x')\r\n\r\n\t\t// formatter.valid.should.be.false\r\n\t\ttype(formatter.getCountry()).should.equal('undefined')\r\n\r\n\t\tformatter.input('1').should.equal('+1 21')\r\n\t\tformatter.input('3').should.equal('+1 213')\r\n\t\tformatter.input(' ').should.equal('+1 213')\r\n\t\tformatter.input('3').should.equal('+1 213 3')\r\n\t\tformatter.input('3').should.equal('+1 213 33')\r\n\t\tformatter.input('3').should.equal('+1 213 333')\r\n\t\tformatter.input('4').should.equal('+1 213 333 4')\r\n\t\tformatter.input('4').should.equal('+1 213 333 44')\r\n\t\tformatter.input('4').should.equal('+1 213 333 444')\r\n\r\n\t\t// formatter.valid.should.be.false\r\n\t\ttype(formatter.getCountry()).should.equal('undefined')\r\n\r\n\t\tformatter.input('4').should.equal('+1 213 333 4444')\r\n\r\n\t\t// formatter.valid.should.be.true\r\n\t\tformatter.getCountry().should.equal('US')\r\n\t\t// This one below contains \"punctuation spaces\"\r\n\t\t// along with the regular spaces\r\n\t\tformatter.getTemplate().should.equal('xx xxx xxx xxxx')\r\n\r\n\t\tformatter.input('5').should.equal('+1 21333344445')\r\n\r\n\t\t// formatter.valid.should.be.false\r\n\t\texpect(formatter.getCountry()).to.be.undefined\r\n\t\tformatter.getCountryCallingCode().should.equal('1')\r\n\t\texpect(formatter.formatter.template).to.be.undefined\r\n\r\n\t\t// Check that clearing an international formatter\r\n\t\t// also clears country metadata.\r\n\r\n\t\tformatter.reset()\r\n\r\n\t\tformatter.input('+').should.equal('+')\r\n\t\tformatter.input('7').should.equal('+7')\r\n\t\tformatter.input('9').should.equal('+7 9')\r\n\t\tformatter.input('99 111 22 33').should.equal('+7 999 111 22 33')\r\n\r\n\t\t// Test Switzerland phone numbers\r\n\r\n\t\tformatter = new AsYouType('CH')\r\n\r\n\t\tformatter.input(' ').should.equal('')\r\n\t\tformatter.input('0').should.equal('0')\r\n\t\tformatter.input('4').should.equal('04')\r\n\t\tformatter.input(' ').should.equal('04')\r\n\t\tformatter.input('-').should.equal('04')\r\n\t\tformatter.input('4').should.equal('044')\r\n\t\tformatter.input('-').should.equal('044')\r\n\t\tformatter.input('6').should.equal('044 6')\r\n\t\tformatter.input('6').should.equal('044 66')\r\n\t\tformatter.input('8').should.equal('044 668')\r\n\t\tformatter.input('-').should.equal('044 668')\r\n\t\tformatter.input('1').should.equal('044 668 1')\r\n\t\tformatter.input('8').should.equal('044 668 18')\r\n\r\n\t\t// formatter.valid.should.be.false\r\n\t\tformatter.getCountry().should.equal('CH')\r\n\t\tformatter.formatter.template.should.equal('xxx xxx xx xx')\r\n\t\tformatter.getTemplate().should.equal('xxx xxx xx')\r\n\r\n\t\tformatter.input(' 00').should.equal('044 668 18 00')\r\n\r\n\t\t// formatter.valid.should.be.true\r\n\t\tformatter.getCountry().should.equal('CH')\r\n\t\tformatter.getTemplate().should.equal('xxx xxx xx xx')\r\n\r\n\t\tformatter.input('9').should.equal('04466818009')\r\n\r\n\t\t// formatter.valid.should.be.false\r\n\t\tformatter.getCountry().should.equal('CH')\r\n\t\texpect(formatter.formatter.template).to.be.undefined\r\n\r\n\t\t// Kazakhstan (non-main country for +7 country phone code)\r\n\r\n\t\tformatter = new AsYouType()\r\n\r\n\t\tformatter.input('+77172580659')\r\n\t\tformatter.getCountry().should.equal('KZ')\r\n\r\n\t\t// Brazil\r\n\r\n\t\tformatter = new AsYouType('BR')\r\n\t\tformatter.input('11987654321').should.equal('(11) 98765-4321')\r\n\r\n\t\t// UK (Jersey) (non-main country for +44 country phone code)\r\n\r\n\t\tformatter = new AsYouType()\r\n\t\tformatter.input('+447700300000').should.equal('+44 7700 300000')\r\n\t\tformatter.getTemplate().should.equal('xxx xxxx xxxxxx')\r\n\t\tformatter.getCountry().should.equal('JE')\r\n\r\n\t\t// Braces must be part of the template.\r\n\t\tformatter = new AsYouType('RU')\r\n\t\tformatter.input('88005553535').should.equal('8 (800) 555-35-35')\r\n\t\tformatter.getTemplate().should.equal('x (xxx) xxx-xx-xx')\r\n\r\n\t\t// Test Russian phone numbers\r\n\t\t// (with optional national prefix `8`)\r\n\r\n\t\tformatter = new AsYouType('RU')\r\n\r\n\t\tformatter.input('8').should.equal('8')\r\n\t\tformatter.input('9').should.equal('8 9')\r\n\t\tformatter.input('9').should.equal('8 99')\r\n\t\tformatter.input('9').should.equal('8 (999)')\r\n\t\tformatter.input('-').should.equal('8 (999)')\r\n\t\tformatter.input('1234').should.equal('8 (999) 123-4')\r\n\t\tformatter.input('567').should.equal('8 (999) 123-45-67')\r\n\t\tformatter.input('8').should.equal('899912345678')\r\n\r\n\t\t// Shouldn't strip national prefix if it is optional\r\n\t\t// and if it's a valid phone number (international).\r\n\t\tformatter = new AsYouType('RU')\r\n\t\t// formatter.input('8005553535').should.equal('(800) 555-35-35')\r\n\t\tformatter.input('+78005553535').should.equal('+7 800 555 35 35')\r\n\t\tformatter.getNationalNumber().should.equal('8005553535')\r\n\r\n\t\t// Check that clearing an national formatter:\r\n\t\t// * doesn't clear country metadata\r\n\t\t// * clears all other things\r\n\r\n\t\tformatter.reset()\r\n\r\n\t\tformatter.input('8').should.equal('8')\r\n\t\tformatter.input('9').should.equal('8 9')\r\n\t\tformatter.input('9').should.equal('8 99')\r\n\t\tformatter.input('9').should.equal('8 (999)')\r\n\t\tformatter.input('-').should.equal('8 (999)')\r\n\t\tformatter.input('1234').should.equal('8 (999) 123-4')\r\n\t\tformatter.input('567').should.equal('8 (999) 123-45-67')\r\n\t\tformatter.input('8').should.equal('899912345678')\r\n\r\n\t\t// National prefix should not be prepended\r\n\t\t// when formatting local NANPA phone numbers.\r\n\t\tnew AsYouType('US').input('1').should.equal('1')\r\n\t\tnew AsYouType('US').input('12').should.equal('1 2')\r\n\t\tnew AsYouType('US').input('123').should.equal('1 23')\r\n\r\n\t\t// Bulgaria\r\n\t\t// (should not prepend national prefix `0`)\r\n\t\tnew AsYouType('BG').input('111 222 3').should.equal('1112223')\r\n\r\n\t\t// Deutchland\r\n\t\tnew AsYouType().input('+4915539898001').should.equal('+49 15539 898001')\r\n\r\n\t\t// KZ detection\r\n\t\tformatter = new AsYouType()\r\n\t\tformatter.input('+7 702 211 1111')\r\n\t\tformatter.getCountry().should.equal('KZ')\r\n\t\t// formatter.valid.should.equal(true)\r\n\r\n\t\t// New Zealand formatting fix (issue #89)\r\n\t\tnew AsYouType('NZ').input('0212').should.equal('021 2')\r\n\r\n\t\t// South Korea\r\n\t\tformatter = new AsYouType()\r\n\t\tformatter.input('+82111111111').should.equal('+82 11 111 1111')\r\n\t\tformatter.getTemplate().should.equal('xxx xx xxx xxxx')\r\n\t})\r\n\r\n\tit('should filter out formats that require a national prefix and no national prefix has been input', () => {\r\n\t\t// Afghanistan.\r\n\t\tconst formatter = new AsYouType('AF')\r\n\r\n\t\t// No national prefix, and national prefix is required in the format.\r\n\t\t// (not `\"national_prefix_is_optional_when_formatting\": true`)\r\n\t\tformatter.input('44444444').should.equal('44444444')\r\n\t\texpect(formatter.formatter.template).to.be.undefined\r\n\r\n\t\t// With national prefix\r\n\t\tformatter.reset().input('044444444').should.equal('044 444 444')\r\n\t\tformatter.formatter.template.should.equal('xxx xxx xxxx')\r\n\t})\r\n\r\n\tit('should work when a digit is not a national prefix but a part of a valid national number', () => {\r\n\t\t// In Russia, `8` could be both a valid national prefix\r\n\t\t// and a part of a valid national number.\r\n\t\tconst formatter = new AsYouType('RU')\r\n\t\t// The formatter could try both variants:\r\n\t\t// with extracting national prefix\r\n\t\t// and without extracting it,\r\n\t\t// and then choose whichever way has `this.matchingFormats`.\r\n\t\t// Or there could be two instances of the formatter:\r\n\t\t// one that extracts national prefix and one that doesn't,\r\n\t\t// and then the one that has `this.matchingFormats` would be\r\n\t\t// used to format the phone number.\r\n\t\t// Something like an option `extractNationalPrefix: false`\r\n\t\t// and creating `this.withNationalPrefixFormatter = new AsYouType(this.defaultCountry || this.defaultCallingCode, { metadata, extractNationalPrefix: false })`\r\n\t\t// and something like `this.withNationalPrefixFormatter.input(nextDigits)` in `input(nextDigits)`.\r\n\t\t// But, for this specific case, it's not required:\r\n\t\t// in Russia, people are used to inputting `800` numbers with national prefix `8`:\r\n\t\t// `8 800 555 35 35`.\r\n\t\t// formatter.input('8005553535').should.equal('(800) 555-35-35')\r\n\t\tformatter.input('8005553535').should.equal('8005553535')\r\n\t\tformatter.reset()\r\n\t\tformatter.input('+78005553535').should.equal('+7 800 555 35 35')\r\n\t})\r\n\r\n\tit('should match formats that require a national prefix and no national prefix has been input (national prefix is mandatory for a format)', () => {\r\n\t\tconst formatter = new AsYouType('FR')\r\n\t\tformatter.input('612345678').should.equal('612345678')\r\n\t\tformatter.reset()\r\n\t\tformatter.input('0612345678').should.equal('06 12 34 56 78')\r\n\t})\r\n\r\n\tit('should match formats that require a national prefix and no national prefix has been input (national prefix is not mandatory for a format)', () => {\r\n\t\tconst formatter = new AsYouType('RU')\r\n\t\t// Without national prefix.\r\n\t\tformatter.input('9991234567').should.equal('999 123-45-67')\r\n\t\tformatter.reset()\r\n\t\t// With national prefix.\r\n\t\tformatter.input('89991234567').should.equal('8 (999) 123-45-67')\r\n\t})\r\n\r\n\tit('should not use `national_prefix_formatting_rule` when formatting international phone numbers', () => {\r\n\t\t// Brazil.\r\n\t\t// `national_prefix_formatting_rule` is `($1)`.\r\n\t\t// Should not add braces around `12` when being input in international format.\r\n\t\tnew AsYouType().input('+55123456789').should.equal('+55 12 3456 789')\r\n\t\tnew AsYouType('BR').input('+55123456789').should.equal('+55 12 3456 789')\r\n\t\tnew AsYouType('BR').input('123456789').should.equal('(12) 3456-789')\r\n\t})\r\n\r\n\tit('should support incorrectly entered international phone numbers (with a national prefix)', () => {\r\n\t\tlet formatter\r\n\r\n\t\tformatter = new AsYouType()\r\n\t\tformatter.input('+1 1 877 215 5230').should.equal('+1 1 877 215 5230')\r\n\t\t// formatter.input('+1 1 877 215 5230').should.equal('+1 1 8772155230')\r\n\t\tformatter.getNationalNumber().should.equal('8772155230')\r\n\r\n\t\t// They've added another number format that has `8` leading digit\r\n\t\t// and 14 digits. Maybe it's something related to Kazakhstan.\r\n\t\t// formatter = new AsYouType()\r\n\t\t// formatter.input('+78800555353').should.equal('+7 880 055 53 53')\r\n\t\t// formatter.input('5').should.equal('+7 8 800 555 35 35')\r\n\t\t// formatter.getNationalNumber().should.equal('8005553535')\r\n\t})\r\n\r\n\tit('should return a partial template for current value', () => {\r\n\t\tconst asYouType = new AsYouType('US')\r\n\r\n\t\tasYouType.input('').should.equal('')\r\n\t\tasYouType.getTemplate().should.equal('')\r\n\r\n\t\tasYouType.input('2').should.equal('2')\r\n\t\t// asYouType.getTemplate().should.equal('x')\r\n\t\t// Doesn't format for a single digit.\r\n\t\tasYouType.getTemplate().should.equal('x')\r\n\r\n\t\tasYouType.input('1').should.equal('21')\r\n\t\tasYouType.getTemplate().should.equal('xx')\r\n\r\n\t\tasYouType.input('3').should.equal('(213)')\r\n\t\tasYouType.getTemplate().should.equal('(xxx)')\r\n\t})\r\n\r\n\tit(`should fall back to the default country`, () => {\r\n\t\tconst formatter = new AsYouType('RU')\r\n\r\n\t\tformatter.input('8').should.equal('8')\r\n\t\tformatter.input('9').should.equal('8 9')\r\n\t\tformatter.input('9').should.equal('8 99')\r\n\t\tformatter.input('9').should.equal('8 (999)')\r\n\r\n\t\t// formatter.valid.should.be.false\r\n\t\tformatter.formatter.template.should.equal('x (xxx) xxx-xx-xx')\r\n\t\tformatter.getCountry().should.equal('RU')\r\n\t\t// formatter.getCountryCallingCode().should.equal('7')\r\n\r\n\t\tformatter.input('000000000000').should.equal('8999000000000000')\r\n\r\n\t\t// formatter.valid.should.be.false\r\n\t\texpect(formatter.formatter.template).to.be.undefined\r\n\t\tformatter.getCountry().should.equal('RU')\r\n\t\t// formatter.getCountryCallingCode().should.equal('7')\r\n\r\n\t\tformatter.reset()\r\n\r\n\t\t// formatter.valid.should.be.false\r\n\t\texpect(formatter.formatter.template).to.be.undefined\r\n\t\texpect(formatter.getCountry()).to.be.undefined\r\n\t\t// formatter.getCountryCallingCode().should.equal('7')\r\n\r\n\t\tformatter.input('+1-213-373-4253').should.equal('+1 213 373 4253')\r\n\r\n\t\t// formatter.valid.should.be.true\r\n\t\tformatter.getTemplate().should.equal('xx xxx xxx xxxx')\r\n\t\tformatter.getCountry().should.equal('US')\r\n\t\tformatter.getCountryCallingCode().should.equal('1')\r\n\t})\r\n\r\n\tit('should work in edge cases', () => {\r\n\t\tlet formatter\r\n\t\tlet thrower\r\n\r\n\t\t// No metadata\r\n\t\tthrower = () => new AsYouType_('RU')\r\n\t\tthrower.should.throw('`metadata` argument not passed')\r\n\r\n\t\t// Second '+' sign\r\n\r\n\t\tformatter = new AsYouType('RU')\r\n\r\n\t\tformatter.input('+').should.equal('+')\r\n\t\tformatter.input('7').should.equal('+7')\r\n\t\tformatter.input('+').should.equal('+7')\r\n\r\n\t\t// Out-of-position '+' sign\r\n\r\n\t\tformatter = new AsYouType('RU')\r\n\r\n\t\tformatter.input('8').should.equal('8')\r\n\t\tformatter.input('+').should.equal('8')\r\n\r\n\t\t// No format matched\r\n\r\n\t\tformatter = new AsYouType('RU')\r\n\r\n\t\tformatter.input('88005553535').should.equal('8 (800) 555-35-35')\r\n\t\tformatter.input('0').should.equal('880055535350')\r\n\r\n\t\t// Invalid country phone code\r\n\r\n\t\tformatter = new AsYouType()\r\n\r\n\t\tformatter.input('+0123').should.equal('+0123')\r\n\r\n\t\t// No country specified and not an international number\r\n\r\n\t\tformatter = new AsYouType()\r\n\r\n\t\tformatter.input('88005553535').should.equal('88005553535')\r\n\r\n\t\t// Extract national prefix when no `national_prefix` is set\r\n\r\n\t\tformatter = new AsYouType('AD')\r\n\r\n\t\tformatter.input('155555').should.equal('155 555')\r\n\r\n\t\t// Typing nonsense\r\n\r\n\t\tformatter = new AsYouType('RU')\r\n\r\n\t\tformatter.input('+1abc2').should.equal('+1')\r\n\r\n\t\t// Should reset default country when explicitly\r\n\t\t// typing in an international phone number\r\n\r\n\t\tformatter = new AsYouType('RU')\r\n\r\n\t\tformatter.input('+')\r\n\t\ttype(formatter.getCountry()).should.equal('undefined')\r\n\t\ttype(formatter.getCountryCallingCode()).should.equal('undefined')\r\n\r\n\t\t// Country not inferrable from the phone number,\r\n\t\t// while the phone number itself can already be formatted \"completely\".\r\n\r\n\t\tformatter = new AsYouType()\r\n\r\n\t\tformatter.input('+12223333333')\r\n\t\ttype(formatter.getCountry()).should.equal('undefined')\r\n\t\tformatter.getCountryCallingCode().should.equal('1')\r\n\r\n\t\t// Reset a chosen format when it no longer applies given the new leading digits.\r\n\t\t// If Google changes metadata for England then this test might not cover the case.\r\n\t\tformatter = new AsYouType('GB')\r\n\t\tformatter.input('0845').should.equal('0845')\r\n\t\t// New leading digits don't match the format previously chosen.\r\n\t\t// Reset the format.\r\n\t\tformatter.input('0').should.equal('0845 0')\r\n\t})\r\n\r\n\tit('should choose between matching formats based on the absence or presence of a national prefix', () => {\r\n\t\t// The first matching format:\r\n\t\t// {\r\n\t\t// \"pattern\": \"(\\\\d{2})(\\\\d{5,6})\",\r\n\t\t// \"leading_digits_patterns\": [\r\n\t\t// \"(?:10|2[0-57-9])[19]\",\r\n\t\t// \"(?:10|2[0-57-9])(?:10|9[56])\",\r\n\t\t// \"(?:10|2[0-57-9])(?:100|9[56])\"\r\n\t\t// ],\r\n\t\t// \"national_prefix_formatting_rule\": \"0$1\",\r\n\t\t// \"format\": \"$1 $2\",\r\n\t\t// \"domestic_carrier_code_formatting_rule\": \"$CC $FG\"\r\n\t\t// }\r\n\t\t//\r\n\t\t// The second matching format:\r\n\t\t// {\r\n\t\t// \"pattern\": \"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\r\n\t\t// \"leading_digits_patterns\": [\r\n\t\t// \"10|2(?:[02-57-9]|1[1-9])\",\r\n\t\t// \"10|2(?:[02-57-9]|1[1-9])\",\r\n\t\t// \"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"\r\n\t\t// ],\r\n\t\t// \"national_prefix_formatting_rule\": \"0$1\",\r\n\t\t// \"national_prefix_is_optional_when_formatting\": true,\r\n\t\t// \"format\": \"$1 $2 $3\",\r\n\t\t// \"domestic_carrier_code_formatting_rule\": \"$CC $FG\"\r\n\t\t// }\r\n\t\t//\r\n\t\tconst formatter = new AsYouType('CN')\r\n\t\t// National prefix has been input.\r\n\t\t// Chooses the first format.\r\n\t\tformatter.input('01010000').should.equal('010 10000')\r\n\t\tformatter.reset()\r\n\t\t// No national prefix has been input,\r\n\t\t// and `national_prefix_for_parsing` not matched.\r\n\t\t// The first format won't match, because it doesn't have\r\n\t\t// `\"national_prefix_is_optional_when_formatting\": true`.\r\n\t\t// The second format will match, because it does have\r\n\t\t// `\"national_prefix_is_optional_when_formatting\": true`.\r\n\t\tformatter.input('1010000').should.equal('10 1000 0')\r\n\t})\r\n\r\n\tit('should not accept phone number extensions', () => {\r\n\t\tnew AsYouType().input('+1-213-373-4253 ext. 123').should.equal('+1 213 373 4253')\r\n\t})\r\n\r\n\tit('should parse non-European digits', () => {\r\n\t\tnew AsYouType().input('+١٢١٢٢٣٢٣٢٣٢').should.equal('+1 212 232 3232')\r\n\t})\r\n\r\n\tit('should return a PhoneNumber instance', () => {\r\n\t\tconst formatter = new AsYouType('BR')\r\n\r\n\t\t// No country calling code.\r\n\t\texpect(formatter.getNumber()).to.be.undefined\r\n\r\n\t\tformatter.input('+1')\r\n\t\t// No national number digits.\r\n\t\texpect(formatter.getNumber()).to.be.undefined\r\n\r\n\t\tformatter.input('213-373-4253')\r\n\r\n\t\tlet phoneNumber = formatter.getNumber()\r\n\t\tphoneNumber.country.should.equal('US')\r\n\t\tphoneNumber.countryCallingCode.should.equal('1')\r\n\t\tphoneNumber.number.should.equal('+12133734253')\r\n\t\tphoneNumber.nationalNumber.should.equal('2133734253')\r\n\r\n\t\tformatter.reset()\r\n\t\tformatter.input('+1-113-373-4253')\r\n\r\n\t\tphoneNumber = formatter.getNumber()\r\n\t\texpect(phoneNumber.country).to.be.undefined\r\n\t\tphoneNumber.countryCallingCode.should.equal('1')\r\n\r\n\t\t// An incorrect NANPA international phone number.\r\n\t\t// (contains national prefix in an international phone number)\r\n\r\n\t\tformatter.reset()\r\n\t\tformatter.input('+1-1')\r\n\r\n\t\t// Before leading digits < 3 matching was implemented:\r\n\t\t//\r\n\t\t// phoneNumber = formatter.getNumber()\r\n\t\t// expect(phoneNumber).to.not.be.undefined\r\n\t\t//\r\n\t\t// formatter.input('1')\r\n\t\t// phoneNumber = formatter.getNumber()\r\n\t\t// expect(phoneNumber.country).to.be.undefined\r\n\t\t// phoneNumber.countryCallingCode.should.equal('1')\r\n\t\t// phoneNumber.number.should.equal('+111')\r\n\r\n\t\t// After leading digits < 3 matching was implemented:\r\n\t\t//\r\n\t\tphoneNumber = formatter.getNumber()\r\n\t\texpect(phoneNumber).to.be.undefined\r\n\t\t//\r\n\t\tformatter.input('1')\r\n\t\tphoneNumber = formatter.getNumber()\r\n\t\texpect(phoneNumber.country).to.be.undefined\r\n\t\tphoneNumber.countryCallingCode.should.equal('1')\r\n\t\tphoneNumber.number.should.equal('+11')\r\n\t})\r\n\r\n\tit('should work with countries that add digits to national (significant) number', () => {\r\n\t\t// When formatting Argentinian mobile numbers in international format,\r\n\t\t// a `9` is prepended, when compared to national format.\r\n\t\tconst asYouType = new AsYouType('AR')\r\n\t\tasYouType.input('+5493435551212').should.equal('+54 9 3435 55 1212')\r\n\t\tasYouType.reset()\r\n\t\t// Digits shouldn't be changed when formatting in national format.\r\n\t\t// (no `9` is prepended).\r\n\t\t// First parses national (significant) number by prepending `9` to it\r\n\t\t// and stripping `15` from it.\r\n\t\t// Then uses `$2 15-$3-$4` format that strips the leading `9`\r\n\t\t// and adds `15`.\r\n\t\tasYouType.input('0343515551212').should.equal('03435 15-55-1212')\r\n\t})\r\n\r\n\tit('should return non-formatted phone number when no format matches and national (significant) number has digits added', () => {\r\n\t\t// When formatting Argentinian mobile numbers in international format,\r\n\t\t// a `9` is prepended, when compared to national format.\r\n\t\tconst asYouType = new AsYouType('AR')\r\n\t\t// Digits shouldn't be changed when formatting in national format.\r\n\t\t// (no `9` is prepended).\r\n\t\t// First parses national (significant) number by prepending `9` to it\r\n\t\t// and stripping `15` from it.\r\n\t\t// Then uses `$2 15-$3-$4` format that strips the leading `9`\r\n\t\t// and adds `15`.\r\n\t\t// `this.nationalSignificantNumberMatchesInput` is `false` in this case,\r\n\t\t// so `getNonFormattedNumber()` returns `getFullNumber(getNationalDigits())`.\r\n\t\tasYouType.input('0343515551212999').should.equal('0343515551212999')\r\n\t})\r\n\r\n\tit('should format Argentina numbers (starting with 011) (digit by digit)', () => {\r\n\t\t// Inputting a number digit-by-digit and as a whole a two different cases\r\n\t\t// in case of this library compared to Google's `libphonenumber`\r\n\t\t// that always inputs a number digit-by-digit.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/23\r\n\t\t// nextDigits 0111523456789\r\n\t\t// nationalNumber 91123456789\r\n\t\tconst formatter = new AsYouType('AR')\r\n\t\tformatter.input('0').should.equal('0')\r\n\t\tformatter.getTemplate().should.equal('x')\r\n\t\tformatter.input('1').should.equal('01')\r\n\t\tformatter.getTemplate().should.equal('xx')\r\n\t\tformatter.input('1').should.equal('011')\r\n\t\tformatter.getTemplate().should.equal('xxx')\r\n\t\tformatter.input('1').should.equal('011 1')\r\n\t\tformatter.getTemplate().should.equal('xxx x')\r\n\t\tformatter.input('5').should.equal('011 15')\r\n\t\tformatter.getTemplate().should.equal('xxx xx')\r\n\t\tformatter.input('2').should.equal('011 152')\r\n\t\tformatter.getTemplate().should.equal('xxx xxx')\r\n\t\tformatter.input('3').should.equal('011 1523')\r\n\t\tformatter.getTemplate().should.equal('xxx xxxx')\r\n\t\tformatter.input('4').should.equal('011 1523-4')\r\n\t\tformatter.getTemplate().should.equal('xxx xxxx-x')\r\n\t\tformatter.input('5').should.equal('011 1523-45')\r\n\t\tformatter.getTemplate().should.equal('xxx xxxx-xx')\r\n\t\tformatter.input('6').should.equal('011 1523-456')\r\n\t\tformatter.getTemplate().should.equal('xxx xxxx-xxx')\r\n\t\tformatter.input('7').should.equal('011 1523-4567')\r\n\t\tformatter.getTemplate().should.equal('xxx xxxx-xxxx')\r\n\t\tformatter.input('8').should.equal('011152345678')\r\n\t\tformatter.getTemplate().should.equal('xxxxxxxxxxxx')\r\n\t\tformatter.input('9').should.equal('011 15-2345-6789')\r\n\t\tformatter.getTemplate().should.equal('xxx xx-xxxx-xxxx')\r\n\t\t// Private property (not public API).\r\n\t\tformatter.state.nationalSignificantNumber.should.equal('91123456789')\r\n\t\t// Private property (not public API).\r\n\t\t// `formatter.digits` is not always `formatter.nationalPrefix`\r\n\t\t// plus `formatter.nationalNumberDigits`.\r\n\t\tformatter.state.nationalPrefix.should.equal('0')\r\n\t\tformatter.isPossible().should.equal(true)\r\n\t\tformatter.isValid().should.equal(true)\r\n\t})\r\n\r\n\tit('should format Argentina numbers (starting with 011)', () => {\r\n\t\t// Inputting a number digit-by-digit and as a whole a two different cases\r\n\t\t// in case of this library compared to Google's `libphonenumber`\r\n\t\t// that always inputs a number digit-by-digit.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/23\r\n\t\t// nextDigits 0111523456789\r\n\t\t// nationalNumber 91123456789\r\n\t\tconst formatter = new AsYouType('AR')\r\n\t\tformatter.input('0111523456789').should.equal('011 15-2345-6789')\r\n\t\t// Private property (not public API).\r\n\t\tformatter.state.nationalSignificantNumber.should.equal('91123456789')\r\n\t\t// Private property (not public API).\r\n\t\t// `formatter.digits` is not always `formatter.nationalPrefix`\r\n\t\t// plus `formatter.nationalNumberDigits`.\r\n\t\texpect(formatter.state.nationalPrefix).to.equal('0')\r\n\t\t// expect(formatter.nationalPrefix).to.be.undefined\r\n\t\tformatter.isPossible().should.equal(true)\r\n\t\tformatter.isValid().should.equal(true)\r\n\t})\r\n\r\n\t// https://gitlab.com/catamphetamine/react-phone-number-input/-/issues/93\r\n\tit('should format Indonesian numbers', () => {\r\n\t\tconst formatter = new AsYouType('ID')\r\n\t\tformatter.getChars().should.equal('')\r\n\t\t// Before leading digits < 3 matching was implemented:\r\n\t\t// formatter.input('081').should.equal('(081)')\r\n\t\t// After leading digits < 3 matching was implemented:\r\n\t\tformatter.input('081').should.equal('081')\r\n\t})\r\n\r\n\tit('should prepend `complexPrefixBeforeNationalSignificantNumber` (not a complete number)', () => {\r\n\t\t// A country having `national_prefix_for_parsing` with a \"capturing group\".\r\n\t\t// National prefix is either not used in a format or is optional.\r\n\t\t// Input phone number without a national prefix.\r\n\t\tconst formatter = new AsYouType('AU')\r\n\t\tformatter.input('1831130345678').should.equal('1831 1303 456 78')\r\n\t\t// Private property (not public API).\r\n\t\tformatter.state.nationalSignificantNumber.should.equal('130345678')\r\n\t\t// Private property (not public API).\r\n\t\t// `formatter.digits` is not always `formatter.nationalPrefix`\r\n\t\t// plus `formatter.nationalNumberDigits`.\r\n\t\texpect(formatter.state.nationalPrefix).to.be.undefined\r\n\t\tformatter.state.complexPrefixBeforeNationalSignificantNumber.should.equal('1831')\r\n\t})\r\n\r\n\tit('should prepend `complexPrefixBeforeNationalSignificantNumber` (complete number)', () => {\r\n\t\t// A country having `national_prefix_for_parsing` with a \"capturing group\".\r\n\t\t// National prefix is either not used in a format or is optional.\r\n\t\t// Input phone number without a national prefix.\r\n\t\tconst formatter = new AsYouType('AU')\r\n\t\tformatter.input('18311303456789').should.equal('1831 1303 456 789')\r\n\t\t// Private property (not public API).\r\n\t\tformatter.state.nationalSignificantNumber.should.equal('1303456789')\r\n\t\t// Private property (not public API).\r\n\t\t// `formatter.digits` is not always `formatter.nationalPrefix`\r\n\t\t// plus `formatter.nationalNumberDigits`.\r\n\t\texpect(formatter.state.nationalPrefix).to.be.undefined\r\n\t\tformatter.state.complexPrefixBeforeNationalSignificantNumber.should.equal('1831')\r\n\t})\r\n\r\n\tit('should work with Mexico numbers', () => {\r\n\t\tconst asYouType = new AsYouType('MX')\r\n\t\t// Fixed line.\r\n\t\tasYouType.input('+52(449)978-000').should.equal('+52 449 978 000')\r\n\t\tasYouType.input('1').should.equal('+52 449 978 0001')\r\n\t\tasYouType.reset()\r\n\t\tasYouType.input('01449978000').should.equal('01449 978 000')\r\n\t\tasYouType.getTemplate().should.equal('xxxxx xxx xxx')\r\n\t\tasYouType.input('1').should.equal('01449 978 0001')\r\n\t\tasYouType.getTemplate().should.equal('xxxxx xxx xxxx')\r\n\t\tasYouType.reset()\r\n\t\tasYouType.input('(449)978-000').should.equal('449 978 000')\r\n\t\tasYouType.getTemplate().should.equal('xxx xxx xxx')\r\n\t\tasYouType.input('1').should.equal('449 978 0001')\r\n\t\tasYouType.getTemplate().should.equal('xxx xxx xxxx')\r\n\t\t// Mobile.\r\n\t\t// `1` is prepended before area code to mobile numbers in international format.\r\n\t\tasYouType.reset()\r\n\t\tasYouType.input('+521331234567').should.equal('+52 133 1234 567')\r\n\t\tasYouType.getTemplate().should.equal('xxx xxx xxxx xxx')\r\n\t\t// Google's `libphonenumber` seems to not able to format this type of number.\r\n\t\t// https://issuetracker.google.com/issues/147938979\r\n\t\tasYouType.input('8').should.equal('+52 133 1234 5678')\r\n\t\tasYouType.getTemplate().should.equal('xxx xxx xxxx xxxx')\r\n\t\tasYouType.reset()\r\n\t\tasYouType.input('+52331234567').should.equal('+52 33 1234 567')\r\n\t\tasYouType.input('8').should.equal('+52 33 1234 5678')\r\n\t\tasYouType.reset()\r\n\t\tasYouType.input('044331234567').should.equal('04433 1234 567')\r\n\t\tasYouType.input('8').should.equal('04433 1234 5678')\r\n\t\tasYouType.reset()\r\n\t\tasYouType.input('045331234567').should.equal('04533 1234 567')\r\n\t\tasYouType.input('8').should.equal('04533 1234 5678')\r\n\t})\r\n\r\n\tit('should just prepend national prefix if national_prefix_formatting_rule does not produce a suitable number', () => {\r\n\t\t// \"national_prefix\": \"8\"\r\n\t\t// \"national_prefix_for_parsing\": \"0|80?\"\r\n\t\tconst formatter = new AsYouType('BY')\r\n\t\t// \"national_prefix_formatting_rule\": \"8 $1\"\r\n\t\t// That `national_prefix_formatting_rule` isn't used\r\n\t\t// because the user didn't input national prefix `8`.\r\n\t\tformatter.input('0800123').should.equal('0 800 123')\r\n\t\tformatter.getTemplate().should.equal('x xxx xxx')\r\n\t})\r\n\r\n\tit('should not duplicate area code for certain countries', () => {\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/318\r\n\t\tconst asYouType = new AsYouType('VI')\r\n\t\t// Even though `parse(\"3406934\")` would return a\r\n\t\t// \"(340) 340-6934\" national number, still\r\n\t\t// \"As You Type\" formatter should leave it as \"(340) 6934\".\r\n\t\tasYouType.input('340693').should.equal('(340) 693')\r\n\t\tasYouType.input('4').should.equal('(340) 693-4')\r\n\t\tasYouType.input('123').should.equal('(340) 693-4123')\r\n\t})\r\n\r\n\tit('shouldn\\'t throw when passed a non-existent default country', () => {\r\n\t\tnew AsYouType('XX').input('+78005553535').should.equal('+7 800 555 35 35')\r\n\t\tnew AsYouType('XX').input('88005553535').should.equal('88005553535')\r\n\t})\r\n\r\n\tit('should parse carrier codes', () => {\r\n\t\tconst formatter = new AsYouType('BR')\r\n\r\n\t\tformatter.input('0 15 21 5555-5555')\r\n\t\tlet phoneNumber = formatter.getNumber()\r\n\t\tphoneNumber.carrierCode.should.equal('15')\r\n\r\n\t\tformatter.reset()\r\n\t\tformatter.input('+1-213-373-4253')\r\n\t\tphoneNumber = formatter.getNumber()\r\n\t\texpect(phoneNumber.carrierCode).to.be.undefined\r\n\t})\r\n\r\n\tit('should format when default country calling code is configured', () => {\r\n\t\tconst formatter = new AsYouType({ defaultCallingCode: '7' })\r\n\t\tformatter.input('88005553535').should.equal('8 (800) 555-35-35')\r\n\t\tformatter.getNumber().countryCallingCode.should.equal('7')\r\n\t\tformatter.getNumber().country.should.equal('RU')\r\n\t})\r\n\r\n\tit('shouldn\\'t return PhoneNumber if country calling code hasn\\'t been input yet', () => {\r\n\t\tconst formatter = new AsYouType()\r\n\t\tformatter.input('+80')\r\n\t\texpect(formatter.getNumber()).to.be.undefined\r\n\t})\r\n\r\n\tit('should format non-geographic numbering plan phone numbers', () => {\r\n\t\tconst formatter = new AsYouType()\r\n\t\tformatter.input('+').should.equal('+')\r\n\t\tformatter.input('8').should.equal('+8')\r\n\t\tformatter.input('7').should.equal('+87')\r\n\t\texpect(formatter.getCountry()).to.be.undefined\r\n\t\tformatter.input('0').should.equal('+870')\r\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\tformatter.getCountry().should.equal('001')\r\n\t\t} else {\r\n\t\t\texpect(formatter.getCountry()).to.be.undefined\r\n\t\t}\r\n\t\tformatter.input('7').should.equal('+870 7')\r\n\t\tformatter.input('7').should.equal('+870 77')\r\n\t\tformatter.input('3').should.equal('+870 773')\r\n\t\tformatter.input('1').should.equal('+870 773 1')\r\n\t\tformatter.input('1').should.equal('+870 773 11')\r\n\t\tformatter.input('1').should.equal('+870 773 111')\r\n\t\tformatter.input('6').should.equal('+870 773 111 6')\r\n\t\tformatter.input('3').should.equal('+870 773 111 63')\r\n\t\tformatter.input('2').should.equal('+870 773 111 632')\r\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\tformatter.getNumber().country.should.equal('001')\r\n\t\t} else {\r\n\t\t\texpect(formatter.getCountry()).to.be.undefined\r\n\t\t}\r\n\t\tformatter.getNumber().countryCallingCode.should.equal('870')\r\n\t})\r\n\r\n\tit('should format non-geographic numbering plan phone numbers (default country calling code)', () => {\r\n\t\tconst formatter = new AsYouType({ defaultCallingCode: '870' })\r\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\tformatter.getNumber().country.should.equal('001')\r\n\t\t} else {\r\n\t\t\texpect(formatter.getCountry()).to.be.undefined\r\n\t\t}\r\n\t\tformatter.input('7').should.equal('7')\r\n\t\tformatter.input('7').should.equal('77')\r\n\t\tformatter.input('3').should.equal('773')\r\n\t\tformatter.input('1').should.equal('773 1')\r\n\t\tformatter.input('1').should.equal('773 11')\r\n\t\tformatter.input('1').should.equal('773 111')\r\n\t\tformatter.input('6').should.equal('773 111 6')\r\n\t\tformatter.input('3').should.equal('773 111 63')\r\n\t\tformatter.input('2').should.equal('773 111 632')\r\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\tformatter.getNumber().country.should.equal('001')\r\n\t\t} else {\r\n\t\t\texpect(formatter.getCountry()).to.be.undefined\r\n\t\t}\r\n\t\tformatter.getNumber().countryCallingCode.should.equal('870')\r\n\t})\r\n\r\n\tit('should not format non-geographic numbering plan phone numbers (default country 001)', () => {\r\n\t\tconst formatter = new AsYouType('001')\r\n\t\texpect(formatter.defaultCountry).to.be.undefined\r\n\t\texpect(formatter.defaultCallingCode).to.be.undefined\r\n\t\tformatter.input('7').should.equal('7')\r\n\t\tformatter.input('7').should.equal('77')\r\n\t\tformatter.input('3').should.equal('773')\r\n\t\tformatter.input('1').should.equal('7731')\r\n\t\tformatter.input('1').should.equal('77311')\r\n\t\tformatter.input('1').should.equal('773111')\r\n\t\tformatter.input('6').should.equal('7731116')\r\n\t\tformatter.input('3').should.equal('77311163')\r\n\t\tformatter.input('2').should.equal('773111632')\r\n\t\texpect(formatter.getCountry()).to.be.undefined\r\n\t\texpect(formatter.getNumber()).to.be.undefined\r\n\t})\r\n\r\n\tit('should return PhoneNumber (should strip national prefix `1` in E.164 value)', () => {\r\n\t\tconst formatter = new AsYouType('RU')\r\n\t\tformatter.input('+1111')\r\n\t\tformatter.getNumber().number.should.equal('+111')\r\n\t})\r\n\r\n\tit('should return PhoneNumber with autocorrected international numbers without leading +', () => {\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/316\r\n\t\tconst formatter = new AsYouType('FR')\r\n\t\tformatter.input('33612902554').should.equal('33 6 12 90 25 54')\r\n\t\tformatter.getNumber().country.should.equal('FR')\r\n\t\tformatter.getNumber().nationalNumber.should.equal('612902554')\r\n\t\tformatter.getNumber().number.should.equal('+33612902554')\r\n\t\t// Should also strip national prefix.\r\n\t\tformatter.reset()\r\n\t\tformatter.input('330612902554').should.equal('33 06 12 90 25 54')\r\n\t\tformatter.getNumber().country.should.equal('FR')\r\n\t\tformatter.getNumber().nationalNumber.should.equal('612902554')\r\n\t\tformatter.getNumber().number.should.equal('+33612902554')\r\n\t\t// On second thought, this \"prepend default area code\" feature won't be added,\r\n\t\t// because when a user selects \"British Virgin Islands\" and inputs\r\n\t\t// \"2291234\", then they see \"(229) 123-4\" which clearly indicates that\r\n\t\t// they should input the complete phone number (with area code).\r\n\t\t// So, unless a user completely doesn't understand what they're doing,\r\n\t\t// they'd input the complete phone number (with area code).\r\n\t\t// // Should prepend the default area code in British Virgin Islands.\r\n\t\t// // https://github.com/catamphetamine/react-phone-number-input/issues/335\r\n\t\t// const formatter2 = new AsYouType('VG')\r\n\t\t// formatter2.input('2291234').should.equal('(229) 123-4')\r\n\t\t// formatter2.getNumber().country.should.equal('VG')\r\n\t\t// formatter2.getNumber().nationalNumber.should.equal('2842291234')\r\n\t\t// formatter2.getNumber().number.should.equal('+12842291234')\r\n\t})\r\n\r\n\tit('should work with out-of-country dialing prefix (like 00)', () => {\r\n\t\tconst formatter = new AsYouType('DE')\r\n\t\tformatter.input('00498911196611').should.equal('00 49 89 11196611')\r\n\t\tformatter.getCountry().should.equal('DE')\r\n\t\tformatter.formatter.template.should.equal('xx xx xx xxxxxxxx')\r\n\t\tformatter.formatter.populatedNationalNumberTemplate.should.equal('89 11196611')\r\n\t\tformatter.getTemplate().should.equal('xx xx xx xxxxxxxx')\r\n\t\tformatter.getNumber().country.should.equal('DE')\r\n\t\tformatter.getNumber().nationalNumber.should.equal('8911196611')\r\n\t\tformatter.getNumber().number.should.equal('+498911196611')\r\n\t})\r\n\r\n\tit('shouldn\\'t choose a format when there\\'re too many digits for any of them', () => {\r\n\t\tconst formatter = new AsYouType('RU')\r\n\t\tformatter.input('89991112233')\r\n\t\tformatter.formatter.chosenFormat.format().should.equal('$1 $2-$3-$4')\r\n\t\tformatter.reset()\r\n\t\tformatter.input('899911122334')\r\n\t\texpect(formatter.formatter.chosenFormat).to.be.undefined\r\n\t})\r\n\r\n\tit('should get separator after national prefix', () => {\r\n\t\t// Russia.\r\n\t\t// Has separator after national prefix.\r\n\t\tconst formatter = new AsYouType('RU')\r\n\t\tconst format = formatter.metadata.formats()[0]\r\n\t\tformat.nationalPrefixFormattingRule().should.equal('8 ($1)')\r\n\t\tformatter.formatter.getSeparatorAfterNationalPrefix(format).should.equal(' ')\r\n\t\t// Britain.\r\n\t\t// Has no separator after national prefix.\r\n\t\tconst formatter2 = new AsYouType('GB')\r\n\t\tconst format2 = formatter2.metadata.formats()[0]\r\n\t\tformat2.nationalPrefixFormattingRule().should.equal('0$1')\r\n\t\tformatter2.formatter.getSeparatorAfterNationalPrefix(format2).should.equal('')\r\n\t})\r\n\r\n\tit('should return if the number is possible', () => {\r\n\t\t// National. Russia.\r\n\t\tconst formatter = new AsYouType('RU')\r\n\t\tformatter.isPossible().should.equal(false)\r\n\t\tformatter.input('8')\r\n\t\tformatter.isPossible().should.equal(false)\r\n\t\tformatter.input('8005553535')\r\n\t\tformatter.isPossible().should.equal(true)\r\n\t\tformatter.input('5')\r\n\t\tformatter.isPossible().should.equal(false)\r\n\t})\r\n\r\n\tit('should return if the number is valid', () => {\r\n\t\t// National. Russia.\r\n\t\tconst formatter = new AsYouType('RU')\r\n\t\tformatter.isValid().should.equal(false)\r\n\t\tformatter.input('88005553535')\r\n\t\tformatter.isValid().should.equal(true)\r\n\t\tformatter.input('5')\r\n\t\tformatter.isValid().should.equal(false)\r\n\t})\r\n\r\n\tit('should return if the number is international', () => {\r\n\t\t// National. Russia.\r\n\t\tconst formatter = new AsYouType('RU')\r\n\t\tformatter.isInternational().should.equal(false)\r\n\t\tformatter.input('88005553535')\r\n\t\tformatter.isInternational().should.equal(false)\r\n\t\t// International. Russia.\r\n\t\tconst formatterInt = new AsYouType()\r\n\t\tformatterInt.isInternational().should.equal(false)\r\n\t\tformatterInt.input('+')\r\n\t\tformatterInt.isInternational().should.equal(true)\r\n\t\tformatterInt.input('78005553535')\r\n\t\tformatterInt.isInternational().should.equal(true)\r\n\t})\r\n\r\n\tit('should return country calling code part of the number', () => {\r\n\t\t// National. Russia.\r\n\t\tconst formatter = new AsYouType('RU')\r\n\t\texpect(formatter.getCountryCallingCode()).to.be.undefined\r\n\t\tformatter.input('88005553535')\r\n\t\texpect(formatter.getCountryCallingCode()).to.be.undefined\r\n\t\t// International. Russia.\r\n\t\tconst formatterInt = new AsYouType()\r\n\t\texpect(formatterInt.getCountryCallingCode()).to.be.undefined\r\n\t\tformatterInt.input('+')\r\n\t\texpect(formatterInt.getCountryCallingCode()).to.be.undefined\r\n\t\tformatterInt.input('7')\r\n\t\texpect(formatterInt.getCountryCallingCode()).to.equal('7')\r\n\t\tformatterInt.input('8005553535')\r\n\t\texpect(formatterInt.getCountryCallingCode()).to.equal('7')\r\n\t})\r\n\r\n\tit('should return the country of the number', () => {\r\n\t\t// National. Russia.\r\n\t\tconst formatter = new AsYouType('RU')\r\n\t\texpect(formatter.getCountry()).to.be.undefined\r\n\t\tformatter.input('8')\r\n\t\texpect(formatter.getCountry()).to.equal('RU')\r\n\t\tformatter.input('8005553535')\r\n\t\texpect(formatter.getCountry()).to.equal('RU')\r\n\t\t// International. Austria.\r\n\t\tconst formatterInt = new AsYouType()\r\n\t\texpect(formatterInt.getCountry()).to.be.undefined\r\n\t\tformatterInt.input('+')\r\n\t\texpect(formatterInt.getCountry()).to.be.undefined\r\n\t\tformatterInt.input('43')\r\n\t\texpect(formatterInt.getCountry()).to.equal('AT')\r\n\t\t// International. USA.\r\n\t\tconst formatterIntRu = new AsYouType()\r\n\t\texpect(formatterIntRu.getCountry()).to.be.undefined\r\n\t\tformatterIntRu.input('+')\r\n\t\texpect(formatterIntRu.getCountry()).to.be.undefined\r\n\t\tformatterIntRu.input('1')\r\n\t\texpect(formatterIntRu.getCountry()).to.be.undefined\r\n\t\tformatterIntRu.input('2133734253')\r\n\t\texpect(formatterIntRu.getCountry()).to.equal('US')\r\n\t\tformatterIntRu.input('1')\r\n\t\texpect(formatterIntRu.getCountry()).to.be.undefined\r\n\t})\r\n\r\n\tit('should parse a long IDD prefix', () => {\r\n\t\tconst formatter = new AsYouType('AU')\r\n\t\t// `14880011` is a long IDD prefix in Australia.\r\n\t\tformatter.input('1').should.equal('1')\r\n\t\tformatter.input('4').should.equal('14')\r\n\t\tformatter.input('8').should.equal('148')\r\n\t\tformatter.input('8').should.equal('1488')\r\n\t\tformatter.input('0').should.equal('14880')\r\n\t\tformatter.input('0').should.equal('148800')\r\n\t\tformatter.input('1').should.equal('1488001')\r\n\t\tformatter.input('1').should.equal('14880011')\r\n\t\t// As if were calling US using `14880011` IDD prefix,\r\n\t\t// though that prefix could mean something else.\r\n\t\tformatter.input('1').should.equal('14880011 1')\r\n\t\tformatter.input('2').should.equal('14880011 1 2')\r\n\t\tformatter.input('1').should.equal('14880011 1 21')\r\n\t\tformatter.input('3').should.equal('14880011 1 213')\r\n\t})\r\n\r\n\tit('should return the phone number characters entered by the user', () => {\r\n\t\tconst formatter = new AsYouType('RU')\r\n\t\tformatter.getChars().should.equal('')\r\n\t\tformatter.input('+123')\r\n\t\tformatter.getChars().should.equal('+123')\r\n\t\tformatter.reset()\r\n\t\tformatter.input('123')\r\n\t\tformatter.getChars().should.equal('123')\r\n\t})\r\n\r\n\t// A test confirming the case when input `\"11\"` for country `\"US\"`\r\n\t// produces `value` `\"+11\"`.\r\n\t// https://gitlab.com/catamphetamine/react-phone-number-input/-/issues/113\r\n\tit('should determine the national (significant) part correctly when input with national prefix in US', () => {\r\n\t\tconst formatter = new AsYouType('US')\r\n\t\t// As soon as the user has input `\"11\"`, no `format` matches\r\n\t\t// those \"national number\" digits in the `\"US\"` country metadata.\r\n\t\t// Since no `format` matches, the number doesn't seem like a valid one,\r\n\t\t// so it attempts to see if the user \"forgot\" to input a `\"+\"` at the start.\r\n\t\t// And it looks like they might've to.\r\n\t\t// So it acts as if the leading `\"+\"` is there,\r\n\t\t// as if the user's input is `\"+11\"`.\r\n\t\t// See `AsYouType.fixMissingPlus()` function.\r\n\t\tformatter.input('1 122 222 2222 3').should.equal('1 1 222 222 2223')\r\n\t\tformatter.getNumber().nationalNumber.should.equal('2222222223')\r\n\t})\r\n})\r\n\r\ndescribe('AsYouType.getNumberValue()', () => {\r\n\tit('should return E.164 number value (national number, with national prefix, default country: US)', () => {\r\n\t\tconst formatter = new AsYouType('US')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+1')\r\n\t\tformatter.input('2')\r\n\t\tformatter.getNumberValue().should.equal('+12')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+121')\r\n\t\tformatter.input('3')\r\n\t\tformatter.getNumberValue().should.equal('+1213')\r\n\t\tformatter.input('373-4253')\r\n\t\tformatter.getNumberValue().should.equal('+12133734253')\r\n\t\tformatter.input('4')\r\n\t\tformatter.getNumberValue().should.equal('+121337342534')\r\n\t})\r\n\r\n\tit('should return E.164 number value (national number, with national prefix, default calling code: 1)', () => {\r\n\t\tconst formatter = new AsYouType({ defaultCallingCode: '1' })\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+1')\r\n\t\tformatter.input('2')\r\n\t\tformatter.getNumberValue().should.equal('+12')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+121')\r\n\t\tformatter.input('3')\r\n\t\tformatter.getNumberValue().should.equal('+1213')\r\n\t\tformatter.input('373-4253')\r\n\t\tformatter.getNumberValue().should.equal('+12133734253')\r\n\t\tformatter.input('4')\r\n\t\tformatter.getNumberValue().should.equal('+121337342534')\r\n\t})\r\n\r\n\tit('should return E.164 number value (national number, default country: US)', () => {\r\n\t\tconst formatter = new AsYouType('US')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('2')\r\n\t\tformatter.getNumberValue().should.equal('+12')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+121')\r\n\t\tformatter.input('3')\r\n\t\tformatter.getNumberValue().should.equal('+1213')\r\n\t\tformatter.input('373-4253')\r\n\t\tformatter.getNumberValue().should.equal('+12133734253')\r\n\t\tformatter.input('4')\r\n\t\tformatter.getNumberValue().should.equal('+121337342534')\r\n\t})\r\n\r\n\tit('should return E.164 number value (national number, default calling code: 1)', () => {\r\n\t\tconst formatter = new AsYouType({ defaultCallingCode: '1' })\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('2')\r\n\t\tformatter.getNumberValue().should.equal('+12')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+121')\r\n\t\tformatter.input('3')\r\n\t\tformatter.getNumberValue().should.equal('+1213')\r\n\t\tformatter.input('373-4253')\r\n\t\tformatter.getNumberValue().should.equal('+12133734253')\r\n\t\tformatter.input('4')\r\n\t\tformatter.getNumberValue().should.equal('+121337342534')\r\n\t})\r\n\r\n\tit('should return E.164 number value (international number, not a valid calling code)', () => {\r\n\t\tconst formatter = new AsYouType()\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('+')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('2150')\r\n\t\tformatter.getNumberValue().should.equal('+2150')\r\n\t})\r\n\r\n\tit('should return E.164 number value (international number, default country: US)', () => {\r\n\t\tconst formatter = new AsYouType('US')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('+')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+1')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+1')\r\n\t\tformatter.input('2')\r\n\t\tformatter.getNumberValue().should.equal('+12')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+121')\r\n\t\tformatter.input('3')\r\n\t\tformatter.getNumberValue().should.equal('+1213')\r\n\t\tformatter.input('373-4253')\r\n\t\tformatter.getNumberValue().should.equal('+12133734253')\r\n\t\tformatter.input('4')\r\n\t\tformatter.getNumberValue().should.equal('+121337342534')\r\n\t})\r\n\r\n\tit('should return E.164 number value (international number, other default country: RU)', () => {\r\n\t\tconst formatter = new AsYouType('RU')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('+')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+1')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+1')\r\n\t\tformatter.input('2')\r\n\t\tformatter.getNumberValue().should.equal('+12')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+121')\r\n\t\tformatter.input('3')\r\n\t\tformatter.getNumberValue().should.equal('+1213')\r\n\t\tformatter.input('373-4253')\r\n\t\tformatter.getNumberValue().should.equal('+12133734253')\r\n\t\tformatter.input('4')\r\n\t\tformatter.getNumberValue().should.equal('+121337342534')\r\n\t})\r\n\r\n\tit('should return E.164 number value (international number, default calling code: 1)', () => {\r\n\t\tconst formatter = new AsYouType('US', { defaultCallingCode: '1' })\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('+')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+1')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+1')\r\n\t\tformatter.input('2')\r\n\t\tformatter.getNumberValue().should.equal('+12')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+121')\r\n\t\tformatter.input('3')\r\n\t\tformatter.getNumberValue().should.equal('+1213')\r\n\t\tformatter.input('373-4253')\r\n\t\tformatter.getNumberValue().should.equal('+12133734253')\r\n\t\tformatter.input('4')\r\n\t\tformatter.getNumberValue().should.equal('+121337342534')\r\n\t})\r\n\r\n\tit('should return E.164 number value (international number, other default calling code: 7)', () => {\r\n\t\tconst formatter = new AsYouType('US', { defaultCallingCode: '7' })\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('+')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+1')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+1')\r\n\t\tformatter.input('2')\r\n\t\tformatter.getNumberValue().should.equal('+12')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+121')\r\n\t\tformatter.input('3')\r\n\t\tformatter.getNumberValue().should.equal('+1213')\r\n\t\tformatter.input('373-4253')\r\n\t\tformatter.getNumberValue().should.equal('+12133734253')\r\n\t\tformatter.input('4')\r\n\t\tformatter.getNumberValue().should.equal('+121337342534')\r\n\t})\r\n\r\n\tit('should return E.164 number value (international number)', () => {\r\n\t\tconst formatter = new AsYouType()\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('+')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+1')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+1')\r\n\t\tformatter.input('2')\r\n\t\tformatter.getNumberValue().should.equal('+12')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+121')\r\n\t\tformatter.input('3')\r\n\t\tformatter.getNumberValue().should.equal('+1213')\r\n\t\tformatter.input('373-4253')\r\n\t\tformatter.getNumberValue().should.equal('+12133734253')\r\n\t\tformatter.input('4')\r\n\t\tformatter.getNumberValue().should.equal('+121337342534')\r\n\t})\r\n\r\n\tit('should return E.164 number value (national number) (no default country or calling code)', () => {\r\n\t\tconst formatter = new AsYouType()\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('1')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('12')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('3')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('373-4253')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('4')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t})\r\n\r\n\tit('should not drop any input digits', () => {\r\n\t\t// Test \"+529011234567\" number, proactively ensuring that no formatting is applied,\r\n\t\t// where a format is chosen that would otherwise have led to some digits being dropped.\r\n\t\tconst formatter = new AsYouType('MX')\r\n\t\tformatter.input('9').should.equal('9')\r\n\t\tformatter.input('0').should.equal('90')\r\n\t\tformatter.input('1').should.equal('901')\r\n\t\tformatter.input('1').should.equal('901 1')\r\n\t\tformatter.input('2').should.equal('901 12')\r\n\t\tformatter.input('3').should.equal('901 123')\r\n\t\tformatter.input('4').should.equal('901 123 4')\r\n\t\tformatter.input('5').should.equal('901 123 45')\r\n\t\tformatter.input('6').should.equal('901 123 456')\r\n\t\tformatter.input('7').should.equal('901 123 4567')\r\n\t})\r\n\r\n\tit('should work for formats with no leading digits (`leadingDigitsPatternsCount === 0`)', function() {\r\n\t\tconst formatter = new AsYouType({\r\n\t\t\tdefaultCallingCode: 888\r\n\t\t})\r\n\t\tformatter.input('1').should.equal('1')\r\n\t})\r\n\r\n\tit('should work for SK phone numbers', function() {\r\n\t\t// There was a bug: \"leading digits\" `\"2\"` matched \"leading digits pattern\" `\"90\"`.\r\n\t\t// The incorrect `.match()` function result was `{ oveflow: true }`\r\n\t\t// while it should've been `undefined`.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/66\r\n\t\tconst formatter = new AsYouType('SK')\r\n\t\tformatter.input('090').should.equal('090')\r\n\t\tformatter.reset()\r\n\t\tformatter.input('080').should.equal('080')\r\n\t\tformatter.reset()\r\n\t\tformatter.input('059').should.equal('059')\r\n\t})\r\n\r\n\tit('should work for SK phone numbers (2)', function() {\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/69\r\n\t\tconst formatter = new AsYouType('SK')\r\n\t\tformatter.input('421901222333').should.equal('421 901 222 333')\r\n\t\tformatter.getTemplate().should.equal('xxx xxx xxx xxx')\r\n\t})\r\n})\r\n\r\nfunction type(something) {\r\n\treturn typeof something\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternMatcher.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternMatcher.js new file mode 100644 index 00000000..29e6007d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternMatcher.js @@ -0,0 +1,264 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _AsYouTypeFormatterPatternParser = _interopRequireDefault(require("./AsYouTypeFormatter.PatternParser.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +var PatternMatcher = /*#__PURE__*/function () { + function PatternMatcher(pattern) { + _classCallCheck(this, PatternMatcher); + + this.matchTree = new _AsYouTypeFormatterPatternParser["default"]().parse(pattern); + } + + _createClass(PatternMatcher, [{ + key: "match", + value: function match(string) { + var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + allowOverflow = _ref.allowOverflow; + + if (!string) { + throw new Error('String is required'); + } + + var result = _match(string.split(''), this.matchTree, true); + + if (result && result.match) { + delete result.matchedChars; + } + + if (result && result.overflow) { + if (!allowOverflow) { + return; + } + } + + return result; + } + }]); + + return PatternMatcher; +}(); +/** + * Matches `characters` against a pattern compiled into a `tree`. + * @param {string[]} characters + * @param {Tree} tree — A pattern compiled into a `tree`. See the `*.d.ts` file for the description of the `tree` structure. + * @param {boolean} last — Whether it's the last (rightmost) subtree on its level of the match tree. + * @return {object} See the `*.d.ts` file for the description of the result object. + */ + + +exports["default"] = PatternMatcher; + +function _match(characters, tree, last) { + // If `tree` is a string, then `tree` is a single character. + // That's because when a pattern is parsed, multi-character-string parts + // of a pattern are compiled into arrays of single characters. + // I still wrote this piece of code for a "general" hypothetical case + // when `tree` could be a string of several characters, even though + // such case is not possible with the current implementation. + if (typeof tree === 'string') { + var characterString = characters.join(''); + + if (tree.indexOf(characterString) === 0) { + // `tree` is always a single character. + // If `tree.indexOf(characterString) === 0` + // then `characters.length === tree.length`. + + /* istanbul ignore else */ + if (characters.length === tree.length) { + return { + match: true, + matchedChars: characters + }; + } // `tree` is always a single character. + // If `tree.indexOf(characterString) === 0` + // then `characters.length === tree.length`. + + /* istanbul ignore next */ + + + return { + partialMatch: true // matchedChars: characters + + }; + } + + if (characterString.indexOf(tree) === 0) { + if (last) { + // The `else` path is not possible because `tree` is always a single character. + // The `else` case for `characters.length > tree.length` would be + // `characters.length <= tree.length` which means `characters.length <= 1`. + // `characters` array can't be empty, so that means `characters === [tree]`, + // which would also mean `tree.indexOf(characterString) === 0` and that'd mean + // that the `if (tree.indexOf(characterString) === 0)` condition before this + // `if` condition would be entered, and returned from there, not reaching this code. + + /* istanbul ignore else */ + if (characters.length > tree.length) { + return { + overflow: true + }; + } + } + + return { + match: true, + matchedChars: characters.slice(0, tree.length) + }; + } + + return; + } + + if (Array.isArray(tree)) { + var restCharacters = characters.slice(); + var i = 0; + + while (i < tree.length) { + var subtree = tree[i]; + + var result = _match(restCharacters, subtree, last && i === tree.length - 1); + + if (!result) { + return; + } else if (result.overflow) { + return result; + } else if (result.match) { + // Continue with the next subtree with the rest of the characters. + restCharacters = restCharacters.slice(result.matchedChars.length); + + if (restCharacters.length === 0) { + if (i === tree.length - 1) { + return { + match: true, + matchedChars: characters + }; + } else { + return { + partialMatch: true // matchedChars: characters + + }; + } + } + } else { + /* istanbul ignore else */ + if (result.partialMatch) { + return { + partialMatch: true // matchedChars: characters + + }; + } else { + throw new Error("Unsupported match result:\n".concat(JSON.stringify(result, null, 2))); + } + } + + i++; + } // If `last` then overflow has already been checked + // by the last element of the `tree` array. + + /* istanbul ignore if */ + + + if (last) { + return { + overflow: true + }; + } + + return { + match: true, + matchedChars: characters.slice(0, characters.length - restCharacters.length) + }; + } + + switch (tree.op) { + case '|': + var partialMatch; + + for (var _iterator = _createForOfIteratorHelperLoose(tree.args), _step; !(_step = _iterator()).done;) { + var branch = _step.value; + + var _result = _match(characters, branch, last); + + if (_result) { + if (_result.overflow) { + return _result; + } else if (_result.match) { + return { + match: true, + matchedChars: _result.matchedChars + }; + } else { + /* istanbul ignore else */ + if (_result.partialMatch) { + partialMatch = true; + } else { + throw new Error("Unsupported match result:\n".concat(JSON.stringify(_result, null, 2))); + } + } + } + } + + if (partialMatch) { + return { + partialMatch: true // matchedChars: ... + + }; + } // Not even a partial match. + + + return; + + case '[]': + for (var _iterator2 = _createForOfIteratorHelperLoose(tree.args), _step2; !(_step2 = _iterator2()).done;) { + var _char = _step2.value; + + if (characters[0] === _char) { + if (characters.length === 1) { + return { + match: true, + matchedChars: characters + }; + } + + if (last) { + return { + overflow: true + }; + } + + return { + match: true, + matchedChars: [_char] + }; + } + } // No character matches. + + + return; + + /* istanbul ignore next */ + + default: + throw new Error("Unsupported instruction tree: ".concat(tree)); + } +} +//# sourceMappingURL=AsYouTypeFormatter.PatternMatcher.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternMatcher.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternMatcher.js.map new file mode 100644 index 00000000..ca6e8e12 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternMatcher.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsYouTypeFormatter.PatternMatcher.js","names":["PatternMatcher","pattern","matchTree","PatternParser","parse","string","allowOverflow","Error","result","match","split","matchedChars","overflow","characters","tree","last","characterString","join","indexOf","length","partialMatch","slice","Array","isArray","restCharacters","i","subtree","JSON","stringify","op","args","branch","char"],"sources":["../source/AsYouTypeFormatter.PatternMatcher.js"],"sourcesContent":["import PatternParser from './AsYouTypeFormatter.PatternParser.js'\r\n\r\nexport default class PatternMatcher {\r\n\tconstructor(pattern) {\r\n\t\tthis.matchTree = new PatternParser().parse(pattern)\r\n\t}\r\n\r\n\tmatch(string, { allowOverflow } = {}) {\r\n\t\tif (!string) {\r\n\t\t\tthrow new Error('String is required')\r\n\t\t}\r\n\t\tconst result = match(string.split(''), this.matchTree, true)\r\n\t\tif (result && result.match) {\r\n\t\t\tdelete result.matchedChars\r\n\t\t}\r\n\t\tif (result && result.overflow) {\r\n\t\t\tif (!allowOverflow) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result\r\n\t}\r\n}\r\n\r\n/**\r\n * Matches `characters` against a pattern compiled into a `tree`.\r\n * @param {string[]} characters\r\n * @param {Tree} tree — A pattern compiled into a `tree`. See the `*.d.ts` file for the description of the `tree` structure.\r\n * @param {boolean} last — Whether it's the last (rightmost) subtree on its level of the match tree.\r\n * @return {object} See the `*.d.ts` file for the description of the result object.\r\n */\r\nfunction match(characters, tree, last) {\r\n\t// If `tree` is a string, then `tree` is a single character.\r\n\t// That's because when a pattern is parsed, multi-character-string parts\r\n\t// of a pattern are compiled into arrays of single characters.\r\n\t// I still wrote this piece of code for a \"general\" hypothetical case\r\n\t// when `tree` could be a string of several characters, even though\r\n\t// such case is not possible with the current implementation.\r\n\tif (typeof tree === 'string') {\r\n\t\tconst characterString = characters.join('')\r\n\t\tif (tree.indexOf(characterString) === 0) {\r\n\t\t\t// `tree` is always a single character.\r\n\t\t\t// If `tree.indexOf(characterString) === 0`\r\n\t\t\t// then `characters.length === tree.length`.\r\n\t\t\t/* istanbul ignore else */\r\n\t\t\tif (characters.length === tree.length) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tmatch: true,\r\n\t\t\t\t\tmatchedChars: characters\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// `tree` is always a single character.\r\n\t\t\t// If `tree.indexOf(characterString) === 0`\r\n\t\t\t// then `characters.length === tree.length`.\r\n\t\t\t/* istanbul ignore next */\r\n\t\t\treturn {\r\n\t\t\t\tpartialMatch: true,\r\n\t\t\t\t// matchedChars: characters\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (characterString.indexOf(tree) === 0) {\r\n\t\t\tif (last) {\r\n\t\t\t\t// The `else` path is not possible because `tree` is always a single character.\r\n\t\t\t\t// The `else` case for `characters.length > tree.length` would be\r\n\t\t\t\t// `characters.length <= tree.length` which means `characters.length <= 1`.\r\n\t\t\t\t// `characters` array can't be empty, so that means `characters === [tree]`,\r\n\t\t\t\t// which would also mean `tree.indexOf(characterString) === 0` and that'd mean\r\n\t\t\t\t// that the `if (tree.indexOf(characterString) === 0)` condition before this\r\n\t\t\t\t// `if` condition would be entered, and returned from there, not reaching this code.\r\n\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\tif (characters.length > tree.length) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\toverflow: true\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\tmatch: true,\r\n\t\t\t\tmatchedChars: characters.slice(0, tree.length)\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn\r\n\t}\r\n\r\n\tif (Array.isArray(tree)) {\r\n\t\tlet restCharacters = characters.slice()\r\n\t\tlet i = 0\r\n\t\twhile (i < tree.length) {\r\n\t\t\tconst subtree = tree[i]\r\n\t\t\tconst result = match(restCharacters, subtree, last && (i === tree.length - 1))\r\n\t\t\tif (!result) {\r\n\t\t\t\treturn\r\n\t\t\t} else if (result.overflow) {\r\n\t\t\t\treturn result\r\n\t\t\t} else if (result.match) {\r\n\t\t\t\t// Continue with the next subtree with the rest of the characters.\r\n\t\t\t\trestCharacters = restCharacters.slice(result.matchedChars.length)\r\n\t\t\t\tif (restCharacters.length === 0) {\r\n\t\t\t\t\tif (i === tree.length - 1) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\t\tmatchedChars: characters\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tpartialMatch: true,\r\n\t\t\t\t\t\t\t// matchedChars: characters\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\tif (result.partialMatch) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tpartialMatch: true,\r\n\t\t\t\t\t\t// matchedChars: characters\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthrow new Error(`Unsupported match result:\\n${JSON.stringify(result, null, 2)}`)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ti++\r\n\t\t}\r\n\t\t// If `last` then overflow has already been checked\r\n\t\t// by the last element of the `tree` array.\r\n\t\t/* istanbul ignore if */\r\n\t\tif (last) {\r\n\t\t\treturn {\r\n\t\t\t\toverflow: true\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tmatch: true,\r\n\t\t\tmatchedChars: characters.slice(0, characters.length - restCharacters.length)\r\n\t\t}\r\n\t}\r\n\r\n\tswitch (tree.op) {\r\n\t\tcase '|':\r\n\t\t\tlet partialMatch\r\n\t\t\tfor (const branch of tree.args) {\r\n\t\t\t\tconst result = match(characters, branch, last)\r\n\t\t\t\tif (result) {\r\n\t\t\t\t\tif (result.overflow) {\r\n\t\t\t\t\t\treturn result\r\n\t\t\t\t\t} else if (result.match) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\t\tmatchedChars: result.matchedChars\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\t\t\tif (result.partialMatch) {\r\n\t\t\t\t\t\t\tpartialMatch = true\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthrow new Error(`Unsupported match result:\\n${JSON.stringify(result, null, 2)}`)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (partialMatch) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tpartialMatch: true,\r\n\t\t\t\t\t// matchedChars: ...\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Not even a partial match.\r\n\t\t\treturn\r\n\r\n\t\tcase '[]':\r\n\t\t\tfor (const char of tree.args) {\r\n\t\t\t\tif (characters[0] === char) {\r\n\t\t\t\t\tif (characters.length === 1) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\t\tmatchedChars: characters\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (last) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\toverflow: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\tmatchedChars: [char]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// No character matches.\r\n\t\t\treturn\r\n\r\n\t\t/* istanbul ignore next */\r\n\t\tdefault:\r\n\t\t\tthrow new Error(`Unsupported instruction tree: ${tree}`)\r\n\t}\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternMatcher.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternMatcher.test.js new file mode 100644 index 00000000..c06e0469 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternMatcher.test.js @@ -0,0 +1,502 @@ +"use strict"; + +var _AsYouTypeFormatterPatternMatcher = _interopRequireDefault(require("./AsYouTypeFormatter.PatternMatcher.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +describe('AsYouTypeFormatter.PatternMatcher', function () { + it('should throw when no pattern is passed', function () { + expect(function () { + return new _AsYouTypeFormatterPatternMatcher["default"](); + }).to["throw"]('Pattern is required'); + }); + it('should throw when no string is passed', function () { + var matcher = new _AsYouTypeFormatterPatternMatcher["default"]('1'); + expect(function () { + return matcher.match(); + }).to["throw"]('String is required'); + }); + it('should throw on illegal characters', function () { + expect(function () { + return new _AsYouTypeFormatterPatternMatcher["default"]('4(5|6)7'); + }).to["throw"]('Illegal characters'); + }); + it('should throw on an illegal ] operator', function () { + expect(function () { + return new _AsYouTypeFormatterPatternMatcher["default"]('4]7'); + }).to["throw"]('"]" operator must be preceded by "[" operator'); + }); + it('should throw on an illegal - operator in a one-of set', function () { + expect(function () { + return new _AsYouTypeFormatterPatternMatcher["default"]('[-5]'); + }).to["throw"]('Couldn\'t parse a one-of set pattern: -5'); + }); + it('should throw on a non-finalized context', function () { + expect(function () { + return new _AsYouTypeFormatterPatternMatcher["default"]('4(?:5|7'); + }).to["throw"]('Non-finalized contexts left when pattern parse ended'); + }); + it('should throw on an illegal (|) operator', function () { + expect(function () { + return new _AsYouTypeFormatterPatternMatcher["default"]('4(?:5|)7'); + }).to["throw"]('No instructions found after "|" operator in an "or" group'); + }); + it('should throw on an illegal ) operator', function () { + expect(function () { + return new _AsYouTypeFormatterPatternMatcher["default"]('4[56)]7'); + }).to["throw"]('")" operator must be preceded by "(?:" operator'); + }); + it('should throw on an illegal | operator', function () { + expect(function () { + return new _AsYouTypeFormatterPatternMatcher["default"]('4[5|6]7'); + }).to["throw"]('operator can only be used inside "or" groups'); + }); + it('should match a one-digit pattern', function () { + var matcher = new _AsYouTypeFormatterPatternMatcher["default"]('4'); + expect(matcher.match('1')).to.be.undefined; + matcher.match('4').should.deep.equal({ + match: true + }); + expect(matcher.match('44')).to.be.undefined; + matcher.match('44', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + }); + it('should match a two-digit pattern', function () { + var matcher = new _AsYouTypeFormatterPatternMatcher["default"]('44'); + expect(matcher.match('1')).to.be.undefined; + matcher.match('4').should.deep.equal({ + partialMatch: true + }); + matcher.match('44').should.deep.equal({ + match: true + }); + expect(matcher.match('444')).to.be.undefined; + matcher.match('444', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + expect(matcher.match('55')).to.be.undefined; + }); + it('should match a one-digit one-of set (single digit)', function () { + var matcher = new _AsYouTypeFormatterPatternMatcher["default"]('[4]'); + expect(matcher.match('1')).to.be.undefined; + matcher.match('4').should.deep.equal({ + match: true + }); + expect(matcher.match('44')).to.be.undefined; + matcher.match('44', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + }); + it('should match a one-digit one-of set (multiple digits)', function () { + var matcher = new _AsYouTypeFormatterPatternMatcher["default"]('[479]'); + expect(matcher.match('1')).to.be.undefined; + matcher.match('4').should.deep.equal({ + match: true + }); + expect(matcher.match('44')).to.be.undefined; + matcher.match('44', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + }); + it('should match a one-digit one-of set using a dash notation (not inclusive)', function () { + var matcher = new _AsYouTypeFormatterPatternMatcher["default"]('[2-5]'); + expect(matcher.match('1')).to.be.undefined; + matcher.match('4').should.deep.equal({ + match: true + }); + expect(matcher.match('44')).to.be.undefined; + matcher.match('44', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + }); + it('should match a one-digit one-of set using a dash notation (inclusive)', function () { + var matcher = new _AsYouTypeFormatterPatternMatcher["default"]('[3-4]'); + expect(matcher.match('1')).to.be.undefined; + matcher.match('4').should.deep.equal({ + match: true + }); + expect(matcher.match('44')).to.be.undefined; + matcher.match('44', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + }); + it('should match a one-digit one-of set including a dash notation', function () { + var matcher = new _AsYouTypeFormatterPatternMatcher["default"]('[124-68]'); + expect(matcher.match('0')).to.be.undefined; + matcher.match('1').should.deep.equal({ + match: true + }); + matcher.match('2').should.deep.equal({ + match: true + }); + expect(matcher.match('3')).to.be.undefined; + matcher.match('4').should.deep.equal({ + match: true + }); + matcher.match('5').should.deep.equal({ + match: true + }); + matcher.match('6').should.deep.equal({ + match: true + }); + expect(matcher.match('7')).to.be.undefined; + matcher.match('8').should.deep.equal({ + match: true + }); + expect(matcher.match('9')).to.be.undefined; + expect(matcher.match('88')).to.be.undefined; + matcher.match('88', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + }); + it('should match a two-digit one-of set', function () { + var matcher = new _AsYouTypeFormatterPatternMatcher["default"]('[479][45]'); + expect(matcher.match('1')).to.be.undefined; + matcher.match('4').should.deep.equal({ + partialMatch: true + }); + expect(matcher.match('5')).to.be.undefined; + expect(matcher.match('55')).to.be.undefined; + matcher.match('44').should.deep.equal({ + match: true + }); + expect(matcher.match('444')).to.be.undefined; + matcher.match('444', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + }); + it('should match a two-digit one-of set (regular digit and a one-of set)', function () { + var matcher = new _AsYouTypeFormatterPatternMatcher["default"]('1[45]'); + expect(matcher.match('0')).to.be.undefined; + matcher.match('1').should.deep.equal({ + partialMatch: true + }); + matcher.match('15').should.deep.equal({ + match: true + }); + expect(matcher.match('16')).to.be.undefined; + }); + it('should match a pattern with an or group', function () { + var matcher = new _AsYouTypeFormatterPatternMatcher["default"]('7(?:1[0-68]|2[1-9])'); + expect(matcher.match('1')).to.be.undefined; + matcher.match('7').should.deep.equal({ + partialMatch: true + }); + matcher.match('71').should.deep.equal({ + partialMatch: true + }); + expect(matcher.match('73')).to.be.undefined; + matcher.match('711').should.deep.equal({ + match: true + }); + expect(matcher.match('717')).to.be.undefined; + expect(matcher.match('720')).to.be.undefined; + matcher.match('722').should.deep.equal({ + match: true + }); + expect(matcher.match('7222')).to.be.undefined; + matcher.match('7222', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + }); + it('should match an or pattern containing or groups', function () { + var matcher = new _AsYouTypeFormatterPatternMatcher["default"]('2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])'); + expect(matcher.match('1')).to.be.undefined; + matcher.match('2').should.deep.equal({ + partialMatch: true + }); + matcher.match('3').should.deep.equal({ + partialMatch: true + }); + expect(matcher.match('4')).to.be.undefined; + expect(matcher.match('21')).to.be.undefined; + matcher.match('22').should.deep.equal({ + partialMatch: true + }); + expect(matcher.match('221')).to.be.undefined; + matcher.match('222').should.deep.equal({ + match: true + }); + expect(matcher.match('2222')).to.be.undefined; + matcher.match('2222', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + matcher.match('3').should.deep.equal({ + partialMatch: true + }); + matcher.match('33').should.deep.equal({ + partialMatch: true + }); + matcher.match('332').should.deep.equal({ + match: true + }); + expect(matcher.match('333')).to.be.undefined; + }); + it('should match an or pattern', function () { + var matcher = new _AsYouTypeFormatterPatternMatcher["default"]('6|8'); + expect(matcher.match('5')).to.be.undefined; + matcher.match('6').should.deep.equal({ + match: true + }); + expect(matcher.match('7')).to.be.undefined; + matcher.match('8').should.deep.equal({ + match: true + }); + }); + it('should match an or pattern (one-of sets)', function () { + var matcher = new _AsYouTypeFormatterPatternMatcher["default"]('[123]|[5-8]'); + expect(matcher.match('0')).to.be.undefined; + matcher.match('1').should.deep.equal({ + match: true + }); + matcher.match('2').should.deep.equal({ + match: true + }); + matcher.match('3').should.deep.equal({ + match: true + }); + expect(matcher.match('4')).to.be.undefined; + matcher.match('5').should.deep.equal({ + match: true + }); + matcher.match('6').should.deep.equal({ + match: true + }); + matcher.match('7').should.deep.equal({ + match: true + }); + matcher.match('8').should.deep.equal({ + match: true + }); + expect(matcher.match('9')).to.be.undefined; + expect(matcher.match('18')).to.be.undefined; + matcher.match('18', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + }); + it('should match an or pattern (different lengths)', function () { + var matcher = new _AsYouTypeFormatterPatternMatcher["default"]('60|8'); + expect(matcher.match('5')).to.be.undefined; + matcher.match('6').should.deep.equal({ + partialMatch: true + }); + matcher.match('60').should.deep.equal({ + match: true + }); + expect(matcher.match('61')).to.be.undefined; + expect(matcher.match('7')).to.be.undefined; + matcher.match('8').should.deep.equal({ + match: true + }); + expect(matcher.match('68')).to.be.undefined; + }); + it('should match an or pattern (one-of sets) (different lengths)', function () { + var matcher = new _AsYouTypeFormatterPatternMatcher["default"]('[123]|[5-8][2-8]'); + expect(matcher.match('0')).to.be.undefined; + }); + it('should match an or pattern (one-of sets and regular digits) (different lengths)', function () { + var matcher = new _AsYouTypeFormatterPatternMatcher["default"]('[2358][2-5]|4'); + expect(matcher.match('0')).to.be.undefined; + matcher.match('2').should.deep.equal({ + partialMatch: true + }); + expect(matcher.match('21')).to.be.undefined; + matcher.match('22').should.deep.equal({ + match: true + }); + matcher.match('25').should.deep.equal({ + match: true + }); + expect(matcher.match('26')).to.be.undefined; + expect(matcher.match('222')).to.be.undefined; + matcher.match('222', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + matcher.match('3').should.deep.equal({ + partialMatch: true + }); + matcher.match('4').should.deep.equal({ + match: true + }); + expect(matcher.match('6')).to.be.undefined; + }); + it('should match an or pattern (one-of sets and regular digits mixed) (different lengths)', function () { + var matcher = new _AsYouTypeFormatterPatternMatcher["default"]('[2358]2|4'); + expect(matcher.match('0')).to.be.undefined; + matcher.match('2').should.deep.equal({ + partialMatch: true + }); + expect(matcher.match('21')).to.be.undefined; + matcher.match('22').should.deep.equal({ + match: true + }); + expect(matcher.match('222')).to.be.undefined; + matcher.match('222', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + matcher.match('3').should.deep.equal({ + partialMatch: true + }); + matcher.match('4').should.deep.equal({ + match: true + }); + expect(matcher.match('6')).to.be.undefined; + }); + it('should match an or pattern (one-of sets groups and regular digits mixed) (different lengths)', function () { + var matcher = new _AsYouTypeFormatterPatternMatcher["default"]('1(?:11|[2-9])'); + matcher.match('1').should.deep.equal({ + partialMatch: true + }); + expect(matcher.match('10')).to.be.undefined; + matcher.match('11').should.deep.equal({ + partialMatch: true + }); + matcher.match('111').should.deep.equal({ + match: true + }); + expect(matcher.match('1111')).to.be.undefined; + matcher.match('1111', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + matcher.match('12').should.deep.equal({ + match: true + }); + expect(matcher.match('122')).to.be.undefined; + matcher.match('19').should.deep.equal({ + match: true + }); + expect(matcher.match('5')).to.be.undefined; + }); + it('should match nested or groups', function () { + var matcher = new _AsYouTypeFormatterPatternMatcher["default"]('1(?:2(?:3(?:4|5)|6)|7(?:8|9))0'); + matcher.match('1').should.deep.equal({ + partialMatch: true + }); + expect(matcher.match('2')).to.be.undefined; + expect(matcher.match('11')).to.be.undefined; + matcher.match('12').should.deep.equal({ + partialMatch: true + }); + expect(matcher.match('121')).to.be.undefined; + matcher.match('123').should.deep.equal({ + partialMatch: true + }); + expect(matcher.match('1231')).to.be.undefined; + matcher.match('1234').should.deep.equal({ + partialMatch: true + }); + matcher.match('12340').should.deep.equal({ + match: true + }); + expect(matcher.match('123401')).to.be.undefined; + matcher.match('123401', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + matcher.match('12350').should.deep.equal({ + match: true + }); + expect(matcher.match('12360')).to.be.undefined; + matcher.match('1260').should.deep.equal({ + match: true + }); + expect(matcher.match('1270')).to.be.undefined; + expect(matcher.match('1770')).to.be.undefined; + matcher.match('1780').should.deep.equal({ + match: true + }); + matcher.match('1790').should.deep.equal({ + match: true + }); + expect(matcher.match('18')).to.be.undefined; + }); + it('should match complex patterns', function () { + var matcher = new _AsYouTypeFormatterPatternMatcher["default"]('(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]'); + expect(matcher.match('0')).to.be.undefined; + matcher.match('3').should.deep.equal({ + partialMatch: true + }); + matcher.match('31').should.deep.equal({ + partialMatch: true + }); + expect(matcher.match('32')).to.be.undefined; + matcher.match('316').should.deep.equal({ + match: true + }); + expect(matcher.match('315')).to.be.undefined; + matcher.match('4').should.deep.equal({ + partialMatch: true + }); + matcher.match('46').should.deep.equal({ + match: true + }); + expect(matcher.match('47')).to.be.undefined; + matcher.match('5').should.deep.equal({ + partialMatch: true + }); + expect(matcher.match('50')).to.be.undefined; + matcher.match('51').should.deep.equal({ + match: true + }); + matcher.match('6').should.deep.equal({ + partialMatch: true + }); + expect(matcher.match('64')).to.be.undefined; + matcher.match('65').should.deep.equal({ + partialMatch: true + }); + matcher.match('650').should.deep.equal({ + match: true + }); + expect(matcher.match('654')).to.be.undefined; + matcher.match('69').should.deep.equal({ + match: true + }); + matcher.match('8').should.deep.equal({ + match: true + }); + matcher.match('9').should.deep.equal({ + match: true + }); + }); + it('shouldn\'t match things that shouldn\'t match', function () { + // There was a bug: "leading digits" `"2"` matched "leading digits pattern" `"90"`. + // The incorrect `.match()` function result was `{ oveflow: true }` + // while it should've been `undefined`. + // https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/66 + expect(new _AsYouTypeFormatterPatternMatcher["default"]('2').match('90', { + allowOverflow: true + })).to.be.undefined; + }); +}); +//# sourceMappingURL=AsYouTypeFormatter.PatternMatcher.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternMatcher.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternMatcher.test.js.map new file mode 100644 index 00000000..6ab086a9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternMatcher.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsYouTypeFormatter.PatternMatcher.test.js","names":["describe","it","expect","PatternMatcher","to","matcher","match","be","undefined","should","deep","equal","allowOverflow","overflow","partialMatch"],"sources":["../source/AsYouTypeFormatter.PatternMatcher.test.js"],"sourcesContent":["import PatternMatcher from './AsYouTypeFormatter.PatternMatcher.js'\r\n\r\ndescribe('AsYouTypeFormatter.PatternMatcher', function() {\r\n\tit('should throw when no pattern is passed', function() {\r\n\t\texpect(() => new PatternMatcher()).to.throw('Pattern is required')\r\n\t})\r\n\r\n\tit('should throw when no string is passed', function() {\r\n\t\tconst matcher = new PatternMatcher('1')\r\n\t\texpect(() => matcher.match()).to.throw('String is required')\r\n\t})\r\n\r\n\tit('should throw on illegal characters', function() {\r\n\t\texpect(() => new PatternMatcher('4(5|6)7')).to.throw('Illegal characters')\r\n\t})\r\n\r\n\tit('should throw on an illegal ] operator', function() {\r\n\t\texpect(() => new PatternMatcher('4]7')).to.throw('\"]\" operator must be preceded by \"[\" operator')\r\n\t})\r\n\r\n\tit('should throw on an illegal - operator in a one-of set', function() {\r\n\t\texpect(() => new PatternMatcher('[-5]')).to.throw('Couldn\\'t parse a one-of set pattern: -5')\r\n\t})\r\n\r\n\tit('should throw on a non-finalized context', function() {\r\n\t\texpect(() => new PatternMatcher('4(?:5|7')).to.throw('Non-finalized contexts left when pattern parse ended')\r\n\t})\r\n\r\n\tit('should throw on an illegal (|) operator', function() {\r\n\t\texpect(() => new PatternMatcher('4(?:5|)7')).to.throw('No instructions found after \"|\" operator in an \"or\" group')\r\n\t})\r\n\r\n\tit('should throw on an illegal ) operator', function() {\r\n\t\texpect(() => new PatternMatcher('4[56)]7')).to.throw('\")\" operator must be preceded by \"(?:\" operator')\r\n\t})\r\n\r\n\tit('should throw on an illegal | operator', function() {\r\n\t\texpect(() => new PatternMatcher('4[5|6]7')).to.throw('operator can only be used inside \"or\" groups')\r\n\t})\r\n\r\n\tit('should match a one-digit pattern', function() {\r\n\t\tconst matcher = new PatternMatcher('4')\r\n\r\n\t\texpect(matcher.match('1')).to.be.undefined\r\n\r\n\t\tmatcher.match('4').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('44')).to.be.undefined\r\n\r\n\t\tmatcher.match('44', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\t})\r\n\r\n\tit('should match a two-digit pattern', function() {\r\n\t\tconst matcher = new PatternMatcher('44')\r\n\r\n\t\texpect(matcher.match('1')).to.be.undefined\r\n\r\n\t\tmatcher.match('4').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('44').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('444')).to.be.undefined\r\n\r\n\t\tmatcher.match('444', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('55')).to.be.undefined\r\n\t})\r\n\r\n\tit('should match a one-digit one-of set (single digit)', function() {\r\n\t\tconst matcher = new PatternMatcher('[4]')\r\n\r\n\t\texpect(matcher.match('1')).to.be.undefined\r\n\r\n\t\tmatcher.match('4').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('44')).to.be.undefined\r\n\r\n\t\tmatcher.match('44', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\t})\r\n\r\n\tit('should match a one-digit one-of set (multiple digits)', function() {\r\n\t\tconst matcher = new PatternMatcher('[479]')\r\n\r\n\t\texpect(matcher.match('1')).to.be.undefined\r\n\r\n\t\tmatcher.match('4').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('44')).to.be.undefined\r\n\r\n\t\tmatcher.match('44', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\t})\r\n\r\n\tit('should match a one-digit one-of set using a dash notation (not inclusive)', function() {\r\n\t\tconst matcher = new PatternMatcher('[2-5]')\r\n\r\n\t\texpect(matcher.match('1')).to.be.undefined\r\n\r\n\t\tmatcher.match('4').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('44')).to.be.undefined\r\n\r\n\t\tmatcher.match('44', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\t})\r\n\r\n\tit('should match a one-digit one-of set using a dash notation (inclusive)', function() {\r\n\t\tconst matcher = new PatternMatcher('[3-4]')\r\n\r\n\t\texpect(matcher.match('1')).to.be.undefined\r\n\r\n\t\tmatcher.match('4').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('44')).to.be.undefined\r\n\r\n\t\tmatcher.match('44', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\t})\r\n\r\n\tit('should match a one-digit one-of set including a dash notation', function() {\r\n\t\tconst matcher = new PatternMatcher('[124-68]')\r\n\r\n\t\texpect(matcher.match('0')).to.be.undefined\r\n\r\n\t\tmatcher.match('1').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('2').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('3')).to.be.undefined\r\n\r\n\t\tmatcher.match('4').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('5').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('6').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('7')).to.be.undefined\r\n\r\n\t\tmatcher.match('8').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('9')).to.be.undefined\r\n\r\n\t\texpect(matcher.match('88')).to.be.undefined\r\n\r\n\t\tmatcher.match('88', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\t})\r\n\r\n\tit('should match a two-digit one-of set', function() {\r\n\t\tconst matcher = new PatternMatcher('[479][45]')\r\n\r\n\t\texpect(matcher.match('1')).to.be.undefined\r\n\r\n\t\tmatcher.match('4').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('5')).to.be.undefined\r\n\t\texpect(matcher.match('55')).to.be.undefined\r\n\r\n\t\tmatcher.match('44').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('444')).to.be.undefined\r\n\r\n\t\tmatcher.match('444', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\t})\r\n\r\n\tit('should match a two-digit one-of set (regular digit and a one-of set)', function() {\r\n\t\tconst matcher = new PatternMatcher('1[45]')\r\n\r\n\t\texpect(matcher.match('0')).to.be.undefined\r\n\r\n\t\tmatcher.match('1').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('15').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('16')).to.be.undefined\r\n\t})\r\n\r\n\tit('should match a pattern with an or group', function() {\r\n\t\tconst matcher = new PatternMatcher('7(?:1[0-68]|2[1-9])')\r\n\r\n\t\texpect(matcher.match('1')).to.be.undefined\r\n\r\n\t\tmatcher.match('7').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('71').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('73')).to.be.undefined\r\n\r\n\t\tmatcher.match('711').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('717')).to.be.undefined\r\n\r\n\t\texpect(matcher.match('720')).to.be.undefined\r\n\r\n\t\tmatcher.match('722').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('7222')).to.be.undefined\r\n\r\n\t\tmatcher.match('7222', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\t})\r\n\r\n\tit('should match an or pattern containing or groups', function() {\r\n\t\tconst matcher = new PatternMatcher('2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])')\r\n\r\n\t\texpect(matcher.match('1')).to.be.undefined\r\n\r\n\t\tmatcher.match('2').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('3').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('4')).to.be.undefined\r\n\r\n\t\texpect(matcher.match('21')).to.be.undefined\r\n\r\n\t\tmatcher.match('22').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('221')).to.be.undefined\r\n\r\n\t\tmatcher.match('222').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('2222')).to.be.undefined\r\n\r\n\t\tmatcher.match('2222', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('3').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('33').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('332').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('333')).to.be.undefined\r\n\t})\r\n\r\n\tit('should match an or pattern', function() {\r\n\t\tconst matcher = new PatternMatcher('6|8')\r\n\r\n\t\texpect(matcher.match('5')).to.be.undefined\r\n\r\n\t\tmatcher.match('6').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('7')).to.be.undefined\r\n\r\n\t\tmatcher.match('8').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\t})\r\n\r\n\tit('should match an or pattern (one-of sets)', function() {\r\n\t\tconst matcher = new PatternMatcher('[123]|[5-8]')\r\n\r\n\t\texpect(matcher.match('0')).to.be.undefined\r\n\r\n\t\tmatcher.match('1').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('2').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('3').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('4')).to.be.undefined\r\n\r\n\t\tmatcher.match('5').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('6').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('7').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('8').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('9')).to.be.undefined\r\n\r\n\t\texpect(matcher.match('18')).to.be.undefined\r\n\r\n\t\tmatcher.match('18', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\t})\r\n\r\n\tit('should match an or pattern (different lengths)', function() {\r\n\t\tconst matcher = new PatternMatcher('60|8')\r\n\r\n\t\texpect(matcher.match('5')).to.be.undefined\r\n\r\n\t\tmatcher.match('6').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('60').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('61')).to.be.undefined\r\n\r\n\t\texpect(matcher.match('7')).to.be.undefined\r\n\r\n\t\tmatcher.match('8').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('68')).to.be.undefined\r\n\t})\r\n\r\n\tit('should match an or pattern (one-of sets) (different lengths)', function() {\r\n\t\tconst matcher = new PatternMatcher('[123]|[5-8][2-8]')\r\n\r\n\t\texpect(matcher.match('0')).to.be.undefined\r\n\t})\r\n\r\n\tit('should match an or pattern (one-of sets and regular digits) (different lengths)', function() {\r\n\t\tconst matcher = new PatternMatcher('[2358][2-5]|4')\r\n\r\n\t\texpect(matcher.match('0')).to.be.undefined\r\n\r\n\t\tmatcher.match('2').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('21')).to.be.undefined\r\n\r\n\t\tmatcher.match('22').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('25').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('26')).to.be.undefined\r\n\r\n\t\texpect(matcher.match('222')).to.be.undefined\r\n\r\n\t\tmatcher.match('222', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('3').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('4').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('6')).to.be.undefined\r\n\t})\r\n\r\n\tit('should match an or pattern (one-of sets and regular digits mixed) (different lengths)', function() {\r\n\t\tconst matcher = new PatternMatcher('[2358]2|4')\r\n\r\n\t\texpect(matcher.match('0')).to.be.undefined\r\n\r\n\t\tmatcher.match('2').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('21')).to.be.undefined\r\n\r\n\t\tmatcher.match('22').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('222')).to.be.undefined\r\n\r\n\t\tmatcher.match('222', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('3').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('4').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('6')).to.be.undefined\r\n\t})\r\n\r\n\tit('should match an or pattern (one-of sets groups and regular digits mixed) (different lengths)', function() {\r\n\t\tconst matcher = new PatternMatcher('1(?:11|[2-9])')\r\n\r\n\t\tmatcher.match('1').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('10')).to.be.undefined\r\n\r\n\t\tmatcher.match('11').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('111').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('1111')).to.be.undefined\r\n\r\n\t\tmatcher.match('1111', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('12').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('122')).to.be.undefined\r\n\r\n\t\tmatcher.match('19').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('5')).to.be.undefined\r\n\t})\r\n\r\n\tit('should match nested or groups', function() {\r\n\t\tconst matcher = new PatternMatcher('1(?:2(?:3(?:4|5)|6)|7(?:8|9))0')\r\n\r\n\t\tmatcher.match('1').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('2')).to.be.undefined\r\n\r\n\t\texpect(matcher.match('11')).to.be.undefined\r\n\r\n\t\tmatcher.match('12').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('121')).to.be.undefined\r\n\r\n\t\tmatcher.match('123').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('1231')).to.be.undefined\r\n\r\n\t\tmatcher.match('1234').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('12340').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('123401')).to.be.undefined\r\n\r\n\t\tmatcher.match('123401', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('12350').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('12360')).to.be.undefined\r\n\r\n\t\tmatcher.match('1260').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('1270')).to.be.undefined\r\n\r\n\t\texpect(matcher.match('1770')).to.be.undefined\r\n\r\n\t\tmatcher.match('1780').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('1790').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('18')).to.be.undefined\r\n\t})\r\n\r\n\tit('should match complex patterns', function() {\r\n\t\tconst matcher = new PatternMatcher('(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]')\r\n\r\n\t\texpect(matcher.match('0')).to.be.undefined\r\n\r\n\t\tmatcher.match('3').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('31').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('32')).to.be.undefined\r\n\r\n\t\tmatcher.match('316').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('315')).to.be.undefined\r\n\r\n\t\tmatcher.match('4').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('46').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('47')).to.be.undefined\r\n\r\n\t\tmatcher.match('5').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('50')).to.be.undefined\r\n\r\n\t\tmatcher.match('51').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('6').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('64')).to.be.undefined\r\n\r\n\t\tmatcher.match('65').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('650').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('654')).to.be.undefined\r\n\r\n\t\tmatcher.match('69').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('8').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('9').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\t})\r\n\r\n\tit('shouldn\\'t match things that shouldn\\'t match', function() {\r\n\t\t// There was a bug: \"leading digits\" `\"2\"` matched \"leading digits pattern\" `\"90\"`.\r\n\t\t// The incorrect `.match()` function result was `{ oveflow: true }`\r\n\t\t// while it should've been `undefined`.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/66\r\n\t\texpect(new PatternMatcher('2').match('90', { allowOverflow: true })).to.be.undefined\r\n\t})\r\n})"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternParser.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternParser.js new file mode 100644 index 00000000..4f6a7dc1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternParser.js @@ -0,0 +1,241 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +var PatternParser = /*#__PURE__*/function () { + function PatternParser() { + _classCallCheck(this, PatternParser); + } + + _createClass(PatternParser, [{ + key: "parse", + value: function parse(pattern) { + this.context = [{ + or: true, + instructions: [] + }]; + this.parsePattern(pattern); + + if (this.context.length !== 1) { + throw new Error('Non-finalized contexts left when pattern parse ended'); + } + + var _this$context$ = this.context[0], + branches = _this$context$.branches, + instructions = _this$context$.instructions; + + if (branches) { + return { + op: '|', + args: branches.concat([expandSingleElementArray(instructions)]) + }; + } + /* istanbul ignore if */ + + + if (instructions.length === 0) { + throw new Error('Pattern is required'); + } + + if (instructions.length === 1) { + return instructions[0]; + } + + return instructions; + } + }, { + key: "startContext", + value: function startContext(context) { + this.context.push(context); + } + }, { + key: "endContext", + value: function endContext() { + this.context.pop(); + } + }, { + key: "getContext", + value: function getContext() { + return this.context[this.context.length - 1]; + } + }, { + key: "parsePattern", + value: function parsePattern(pattern) { + if (!pattern) { + throw new Error('Pattern is required'); + } + + var match = pattern.match(OPERATOR); + + if (!match) { + if (ILLEGAL_CHARACTER_REGEXP.test(pattern)) { + throw new Error("Illegal characters found in a pattern: ".concat(pattern)); + } + + this.getContext().instructions = this.getContext().instructions.concat(pattern.split('')); + return; + } + + var operator = match[1]; + var before = pattern.slice(0, match.index); + var rightPart = pattern.slice(match.index + operator.length); + + switch (operator) { + case '(?:': + if (before) { + this.parsePattern(before); + } + + this.startContext({ + or: true, + instructions: [], + branches: [] + }); + break; + + case ')': + if (!this.getContext().or) { + throw new Error('")" operator must be preceded by "(?:" operator'); + } + + if (before) { + this.parsePattern(before); + } + + if (this.getContext().instructions.length === 0) { + throw new Error('No instructions found after "|" operator in an "or" group'); + } + + var _this$getContext = this.getContext(), + branches = _this$getContext.branches; + + branches.push(expandSingleElementArray(this.getContext().instructions)); + this.endContext(); + this.getContext().instructions.push({ + op: '|', + args: branches + }); + break; + + case '|': + if (!this.getContext().or) { + throw new Error('"|" operator can only be used inside "or" groups'); + } + + if (before) { + this.parsePattern(before); + } // The top-level is an implicit "or" group, if required. + + + if (!this.getContext().branches) { + // `branches` are not defined only for the root implicit "or" operator. + + /* istanbul ignore else */ + if (this.context.length === 1) { + this.getContext().branches = []; + } else { + throw new Error('"branches" not found in an "or" group context'); + } + } + + this.getContext().branches.push(expandSingleElementArray(this.getContext().instructions)); + this.getContext().instructions = []; + break; + + case '[': + if (before) { + this.parsePattern(before); + } + + this.startContext({ + oneOfSet: true + }); + break; + + case ']': + if (!this.getContext().oneOfSet) { + throw new Error('"]" operator must be preceded by "[" operator'); + } + + this.endContext(); + this.getContext().instructions.push({ + op: '[]', + args: parseOneOfSet(before) + }); + break; + + /* istanbul ignore next */ + + default: + throw new Error("Unknown operator: ".concat(operator)); + } + + if (rightPart) { + this.parsePattern(rightPart); + } + } + }]); + + return PatternParser; +}(); + +exports["default"] = PatternParser; + +function parseOneOfSet(pattern) { + var values = []; + var i = 0; + + while (i < pattern.length) { + if (pattern[i] === '-') { + if (i === 0 || i === pattern.length - 1) { + throw new Error("Couldn't parse a one-of set pattern: ".concat(pattern)); + } + + var prevValue = pattern[i - 1].charCodeAt(0) + 1; + var nextValue = pattern[i + 1].charCodeAt(0) - 1; + var value = prevValue; + + while (value <= nextValue) { + values.push(String.fromCharCode(value)); + value++; + } + } else { + values.push(pattern[i]); + } + + i++; + } + + return values; +} + +var ILLEGAL_CHARACTER_REGEXP = /[\(\)\[\]\?\:\|]/; +var OPERATOR = new RegExp( // any of: +'(' + // or operator +'\\|' + // or +'|' + // or group start +'\\(\\?\\:' + // or +'|' + // or group end +'\\)' + // or +'|' + // one-of set start +'\\[' + // or +'|' + // one-of set end +'\\]' + ')'); + +function expandSingleElementArray(array) { + if (array.length === 1) { + return array[0]; + } + + return array; +} +//# sourceMappingURL=AsYouTypeFormatter.PatternParser.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternParser.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternParser.js.map new file mode 100644 index 00000000..cfd173e7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternParser.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsYouTypeFormatter.PatternParser.js","names":["PatternParser","pattern","context","or","instructions","parsePattern","length","Error","branches","op","args","concat","expandSingleElementArray","push","pop","match","OPERATOR","ILLEGAL_CHARACTER_REGEXP","test","getContext","split","operator","before","slice","index","rightPart","startContext","endContext","oneOfSet","parseOneOfSet","values","i","prevValue","charCodeAt","nextValue","value","String","fromCharCode","RegExp","array"],"sources":["../source/AsYouTypeFormatter.PatternParser.js"],"sourcesContent":["export default class PatternParser {\r\n\tparse(pattern) {\r\n\t\tthis.context = [{\r\n\t\t\tor: true,\r\n\t\t\tinstructions: []\r\n\t\t}]\r\n\r\n\t\tthis.parsePattern(pattern)\r\n\r\n\t\tif (this.context.length !== 1) {\r\n\t\t\tthrow new Error('Non-finalized contexts left when pattern parse ended')\r\n\t\t}\r\n\r\n\t\tconst { branches, instructions } = this.context[0]\r\n\r\n\t\tif (branches) {\r\n\t\t\treturn {\r\n\t\t\t\top: '|',\r\n\t\t\t\targs: branches.concat([\r\n\t\t\t\t\texpandSingleElementArray(instructions)\r\n\t\t\t\t])\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/* istanbul ignore if */\r\n\t\tif (instructions.length === 0) {\r\n\t\t\tthrow new Error('Pattern is required')\r\n\t\t}\r\n\r\n\t\tif (instructions.length === 1) {\r\n\t\t\treturn instructions[0]\r\n\t\t}\r\n\r\n\t\treturn instructions\r\n\t}\r\n\r\n\tstartContext(context) {\r\n\t\tthis.context.push(context)\r\n\t}\r\n\r\n\tendContext() {\r\n\t\tthis.context.pop()\r\n\t}\r\n\r\n\tgetContext() {\r\n\t\treturn this.context[this.context.length - 1]\r\n\t}\r\n\r\n\tparsePattern(pattern) {\r\n\t\tif (!pattern) {\r\n\t\t\tthrow new Error('Pattern is required')\r\n\t\t}\r\n\r\n\t\tconst match = pattern.match(OPERATOR)\r\n\t\tif (!match) {\r\n\t\t\tif (ILLEGAL_CHARACTER_REGEXP.test(pattern)) {\r\n\t\t\t\tthrow new Error(`Illegal characters found in a pattern: ${pattern}`)\r\n\t\t\t}\r\n\t\t\tthis.getContext().instructions = this.getContext().instructions.concat(\r\n\t\t\t\tpattern.split('')\r\n\t\t\t)\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tconst operator = match[1]\r\n\t\tconst before = pattern.slice(0, match.index)\r\n\t\tconst rightPart = pattern.slice(match.index + operator.length)\r\n\r\n\t\tswitch (operator) {\r\n\t\t\tcase '(?:':\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\tthis.startContext({\r\n\t\t\t\t\tor: true,\r\n\t\t\t\t\tinstructions: [],\r\n\t\t\t\t\tbranches: []\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase ')':\r\n\t\t\t\tif (!this.getContext().or) {\r\n\t\t\t\t\tthrow new Error('\")\" operator must be preceded by \"(?:\" operator')\r\n\t\t\t\t}\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\tif (this.getContext().instructions.length === 0) {\r\n\t\t\t\t\tthrow new Error('No instructions found after \"|\" operator in an \"or\" group')\r\n\t\t\t\t}\r\n\t\t\t\tconst { branches } = this.getContext()\r\n\t\t\t\tbranches.push(\r\n\t\t\t\t\texpandSingleElementArray(\r\n\t\t\t\t\t\tthis.getContext().instructions\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\t\tthis.endContext()\r\n\t\t\t\tthis.getContext().instructions.push({\r\n\t\t\t\t\top: '|',\r\n\t\t\t\t\targs: branches\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase '|':\r\n\t\t\t\tif (!this.getContext().or) {\r\n\t\t\t\t\tthrow new Error('\"|\" operator can only be used inside \"or\" groups')\r\n\t\t\t\t}\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\t// The top-level is an implicit \"or\" group, if required.\r\n\t\t\t\tif (!this.getContext().branches) {\r\n\t\t\t\t\t// `branches` are not defined only for the root implicit \"or\" operator.\r\n\t\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\t\tif (this.context.length === 1) {\r\n\t\t\t\t\t\tthis.getContext().branches = []\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthrow new Error('\"branches\" not found in an \"or\" group context')\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tthis.getContext().branches.push(\r\n\t\t\t\t\texpandSingleElementArray(\r\n\t\t\t\t\t\tthis.getContext().instructions\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\t\tthis.getContext().instructions = []\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase '[':\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\tthis.startContext({\r\n\t\t\t\t\toneOfSet: true\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase ']':\r\n\t\t\t\tif (!this.getContext().oneOfSet) {\r\n\t\t\t\t\tthrow new Error('\"]\" operator must be preceded by \"[\" operator')\r\n\t\t\t\t}\r\n\t\t\t\tthis.endContext()\r\n\t\t\t\tthis.getContext().instructions.push({\r\n\t\t\t\t\top: '[]',\r\n\t\t\t\t\targs: parseOneOfSet(before)\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\t/* istanbul ignore next */\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(`Unknown operator: ${operator}`)\r\n\t\t}\r\n\r\n\t\tif (rightPart) {\r\n\t\t\tthis.parsePattern(rightPart)\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction parseOneOfSet(pattern) {\r\n\tconst values = []\r\n\tlet i = 0\r\n\twhile (i < pattern.length) {\r\n\t\tif (pattern[i] === '-') {\r\n\t\t\tif (i === 0 || i === pattern.length - 1) {\r\n\t\t\t\tthrow new Error(`Couldn't parse a one-of set pattern: ${pattern}`)\r\n\t\t\t}\r\n\t\t\tconst prevValue = pattern[i - 1].charCodeAt(0) + 1\r\n\t\t\tconst nextValue = pattern[i + 1].charCodeAt(0) - 1\r\n\t\t\tlet value = prevValue\r\n\t\t\twhile (value <= nextValue) {\r\n\t\t\t\tvalues.push(String.fromCharCode(value))\r\n\t\t\t\tvalue++\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvalues.push(pattern[i])\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\treturn values\r\n}\r\n\r\nconst ILLEGAL_CHARACTER_REGEXP = /[\\(\\)\\[\\]\\?\\:\\|]/\r\n\r\nconst OPERATOR = new RegExp(\r\n\t// any of:\r\n\t'(' +\r\n\t\t// or operator\r\n\t\t'\\\\|' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// or group start\r\n\t\t'\\\\(\\\\?\\\\:' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// or group end\r\n\t\t'\\\\)' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// one-of set start\r\n\t\t'\\\\[' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// one-of set end\r\n\t\t'\\\\]' +\r\n\t')'\r\n)\r\n\r\nfunction expandSingleElementArray(array) {\r\n\tif (array.length === 1) {\r\n\t\treturn array[0]\r\n\t}\r\n\treturn array\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternParser.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternParser.test.js new file mode 100644 index 00000000..1ea92ba8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternParser.test.js @@ -0,0 +1,49 @@ +"use strict"; + +var _AsYouTypeFormatterPatternParser = _interopRequireDefault(require("./AsYouTypeFormatter.PatternParser.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +describe('PatternParser', function () { + it('should parse single-character patterns', function () { + new _AsYouTypeFormatterPatternParser["default"]().parse('2').should.deep.equal('2'); + }); + it('should parse string patterns', function () { + new _AsYouTypeFormatterPatternParser["default"]().parse('123').should.deep.equal(['1', '2', '3']); + }); + it('should parse "one of" patterns', function () { + new _AsYouTypeFormatterPatternParser["default"]().parse('[5-9]').should.deep.equal({ + op: '[]', + args: ['5', '6', '7', '8', '9'] + }); + }); + it('should parse "or" patterns', function () { + new _AsYouTypeFormatterPatternParser["default"]().parse('123|[5-9]').should.deep.equal({ + op: '|', + args: [['1', '2', '3'], { + op: '[]', + args: ['5', '6', '7', '8', '9'] + }] + }); + new _AsYouTypeFormatterPatternParser["default"]().parse('123|[5-9]0').should.deep.equal({ + op: '|', + args: [['1', '2', '3'], [{ + op: '[]', + args: ['5', '6', '7', '8', '9'] + }, '0']] + }); + }); + it('should parse nested "or" patterns', function () { + new _AsYouTypeFormatterPatternParser["default"]().parse('123|(?:2|34)[5-9]').should.deep.equal({ + op: '|', + args: [['1', '2', '3'], [{ + op: '|', + args: ['2', ['3', '4']] + }, { + op: '[]', + args: ['5', '6', '7', '8', '9'] + }]] + }); + }); +}); +//# sourceMappingURL=AsYouTypeFormatter.PatternParser.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternParser.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternParser.test.js.map new file mode 100644 index 00000000..dfd63010 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.PatternParser.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsYouTypeFormatter.PatternParser.test.js","names":["describe","it","PatternParser","parse","should","deep","equal","op","args"],"sources":["../source/AsYouTypeFormatter.PatternParser.test.js"],"sourcesContent":["import PatternParser from './AsYouTypeFormatter.PatternParser.js'\r\n\r\ndescribe('PatternParser', function() {\r\n\tit('should parse single-character patterns', function() {\r\n\t\tnew PatternParser().parse('2').should.deep.equal('2')\r\n\t})\r\n\r\n\tit('should parse string patterns', function() {\r\n\t\tnew PatternParser().parse('123').should.deep.equal(['1', '2', '3'])\r\n\t})\r\n\r\n\tit('should parse \"one of\" patterns', function() {\r\n\t\tnew PatternParser().parse('[5-9]').should.deep.equal({\r\n\t\t\top: '[]',\r\n\t\t\targs: ['5', '6', '7', '8', '9']\r\n\t\t})\r\n\t})\r\n\r\n\tit('should parse \"or\" patterns', function() {\r\n\t\tnew PatternParser().parse('123|[5-9]').should.deep.equal({\r\n\t\t\top: '|',\r\n\t\t\targs: [\r\n\t\t\t\t['1', '2', '3'],\r\n\t\t\t\t{\r\n\t\t\t\t\top: '[]',\r\n\t\t\t\t\targs: ['5', '6', '7', '8', '9']\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t})\r\n\r\n\t\tnew PatternParser().parse('123|[5-9]0').should.deep.equal({\r\n\t\t\top: '|',\r\n\t\t\targs: [\r\n\t\t\t\t['1', '2', '3'],\r\n\t\t\t\t[\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\top: '[]',\r\n\t\t\t\t\t\targs: ['5', '6', '7', '8', '9']\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'0'\r\n\t\t\t\t]\r\n\t\t\t]\r\n\t\t})\r\n\t})\r\n\r\n\tit('should parse nested \"or\" patterns', function() {\r\n\t\tnew PatternParser().parse('123|(?:2|34)[5-9]').should.deep.equal({\r\n\t\t\top: '|',\r\n\t\t\targs: [\r\n\t\t\t\t['1', '2', '3'],\r\n\t\t\t\t[\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\top: '|',\r\n\t\t\t\t\t\targs: [\r\n\t\t\t\t\t\t\t'2',\r\n\t\t\t\t\t\t\t['3', '4']\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\top: '[]',\r\n\t\t\t\t\t\targs: ['5', '6', '7', '8', '9']\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t]\r\n\t\t})\r\n\t})\r\n})"],"mappings":";;AAAA;;;;AAEAA,QAAQ,CAAC,eAAD,EAAkB,YAAW;EACpCC,EAAE,CAAC,wCAAD,EAA2C,YAAW;IACvD,IAAIC,2CAAJ,GAAoBC,KAApB,CAA0B,GAA1B,EAA+BC,MAA/B,CAAsCC,IAAtC,CAA2CC,KAA3C,CAAiD,GAAjD;EACA,CAFC,CAAF;EAIAL,EAAE,CAAC,8BAAD,EAAiC,YAAW;IAC7C,IAAIC,2CAAJ,GAAoBC,KAApB,CAA0B,KAA1B,EAAiCC,MAAjC,CAAwCC,IAAxC,CAA6CC,KAA7C,CAAmD,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAAnD;EACA,CAFC,CAAF;EAIAL,EAAE,CAAC,gCAAD,EAAmC,YAAW;IAC/C,IAAIC,2CAAJ,GAAoBC,KAApB,CAA0B,OAA1B,EAAmCC,MAAnC,CAA0CC,IAA1C,CAA+CC,KAA/C,CAAqD;MACpDC,EAAE,EAAE,IADgD;MAEpDC,IAAI,EAAE,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB;IAF8C,CAArD;EAIA,CALC,CAAF;EAOAP,EAAE,CAAC,4BAAD,EAA+B,YAAW;IAC3C,IAAIC,2CAAJ,GAAoBC,KAApB,CAA0B,WAA1B,EAAuCC,MAAvC,CAA8CC,IAA9C,CAAmDC,KAAnD,CAAyD;MACxDC,EAAE,EAAE,GADoD;MAExDC,IAAI,EAAE,CACL,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CADK,EAEL;QACCD,EAAE,EAAE,IADL;QAECC,IAAI,EAAE,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB;MAFP,CAFK;IAFkD,CAAzD;IAWA,IAAIN,2CAAJ,GAAoBC,KAApB,CAA0B,YAA1B,EAAwCC,MAAxC,CAA+CC,IAA/C,CAAoDC,KAApD,CAA0D;MACzDC,EAAE,EAAE,GADqD;MAEzDC,IAAI,EAAE,CACL,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CADK,EAEL,CACC;QACCD,EAAE,EAAE,IADL;QAECC,IAAI,EAAE,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB;MAFP,CADD,EAKC,GALD,CAFK;IAFmD,CAA1D;EAaA,CAzBC,CAAF;EA2BAP,EAAE,CAAC,mCAAD,EAAsC,YAAW;IAClD,IAAIC,2CAAJ,GAAoBC,KAApB,CAA0B,mBAA1B,EAA+CC,MAA/C,CAAsDC,IAAtD,CAA2DC,KAA3D,CAAiE;MAChEC,EAAE,EAAE,GAD4D;MAEhEC,IAAI,EAAE,CACL,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CADK,EAEL,CACC;QACCD,EAAE,EAAE,GADL;QAECC,IAAI,EAAE,CACL,GADK,EAEL,CAAC,GAAD,EAAM,GAAN,CAFK;MAFP,CADD,EAQC;QACCD,EAAE,EAAE,IADL;QAECC,IAAI,EAAE,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB;MAFP,CARD,CAFK;IAF0D,CAAjE;EAmBA,CApBC,CAAF;AAqBA,CAhEO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.complete.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.complete.js new file mode 100644 index 00000000..f47d12f4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.complete.js @@ -0,0 +1,133 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.canFormatCompleteNumber = canFormatCompleteNumber; +exports["default"] = formatCompleteNumber; + +var _checkNumberLength = _interopRequireDefault(require("./helpers/checkNumberLength.js")); + +var _parseDigits = _interopRequireDefault(require("./helpers/parseDigits.js")); + +var _formatNationalNumberUsingFormat = _interopRequireDefault(require("./helpers/formatNationalNumberUsingFormat.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function formatCompleteNumber(state, format, _ref) { + var metadata = _ref.metadata, + shouldTryNationalPrefixFormattingRule = _ref.shouldTryNationalPrefixFormattingRule, + getSeparatorAfterNationalPrefix = _ref.getSeparatorAfterNationalPrefix; + var matcher = new RegExp("^(?:".concat(format.pattern(), ")$")); + + if (matcher.test(state.nationalSignificantNumber)) { + return formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(state, format, { + metadata: metadata, + shouldTryNationalPrefixFormattingRule: shouldTryNationalPrefixFormattingRule, + getSeparatorAfterNationalPrefix: getSeparatorAfterNationalPrefix + }); + } +} + +function canFormatCompleteNumber(nationalSignificantNumber, metadata) { + return (0, _checkNumberLength["default"])(nationalSignificantNumber, metadata) === 'IS_POSSIBLE'; +} + +function formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(state, format, _ref2) { + var metadata = _ref2.metadata, + shouldTryNationalPrefixFormattingRule = _ref2.shouldTryNationalPrefixFormattingRule, + getSeparatorAfterNationalPrefix = _ref2.getSeparatorAfterNationalPrefix; + // `format` has already been checked for `nationalPrefix` requirement. + var nationalSignificantNumber = state.nationalSignificantNumber, + international = state.international, + nationalPrefix = state.nationalPrefix, + carrierCode = state.carrierCode; // Format the number with using `national_prefix_formatting_rule`. + // If the resulting formatted number is a valid formatted number, then return it. + // + // Google's AsYouType formatter is different in a way that it doesn't try + // to format using the "national prefix formatting rule", and instead it + // simply prepends a national prefix followed by a " " character. + // This code does that too, but as a fallback. + // The reason is that "national prefix formatting rule" may use parentheses, + // which wouldn't be included has it used the simpler Google's way. + // + + if (shouldTryNationalPrefixFormattingRule(format)) { + var formattedNumber = formatNationalNumber(state, format, { + useNationalPrefixFormattingRule: true, + getSeparatorAfterNationalPrefix: getSeparatorAfterNationalPrefix, + metadata: metadata + }); + + if (formattedNumber) { + return formattedNumber; + } + } // Format the number without using `national_prefix_formatting_rule`. + + + return formatNationalNumber(state, format, { + useNationalPrefixFormattingRule: false, + getSeparatorAfterNationalPrefix: getSeparatorAfterNationalPrefix, + metadata: metadata + }); +} + +function formatNationalNumber(state, format, _ref3) { + var metadata = _ref3.metadata, + useNationalPrefixFormattingRule = _ref3.useNationalPrefixFormattingRule, + getSeparatorAfterNationalPrefix = _ref3.getSeparatorAfterNationalPrefix; + var formattedNationalNumber = (0, _formatNationalNumberUsingFormat["default"])(state.nationalSignificantNumber, format, { + carrierCode: state.carrierCode, + useInternationalFormat: state.international, + withNationalPrefix: useNationalPrefixFormattingRule, + metadata: metadata + }); + + if (!useNationalPrefixFormattingRule) { + if (state.nationalPrefix) { + // If a national prefix was extracted, then just prepend it, + // followed by a " " character. + formattedNationalNumber = state.nationalPrefix + getSeparatorAfterNationalPrefix(format) + formattedNationalNumber; + } else if (state.complexPrefixBeforeNationalSignificantNumber) { + formattedNationalNumber = state.complexPrefixBeforeNationalSignificantNumber + ' ' + formattedNationalNumber; + } + } + + if (isValidFormattedNationalNumber(formattedNationalNumber, state)) { + return formattedNationalNumber; + } +} // Check that the formatted phone number contains exactly +// the same digits that have been input by the user. +// For example, when "0111523456789" is input for `AR` country, +// the extracted `this.nationalSignificantNumber` is "91123456789", +// which means that the national part of `this.digits` isn't simply equal to +// `this.nationalPrefix` + `this.nationalSignificantNumber`. +// +// Also, a `format` can add extra digits to the `this.nationalSignificantNumber` +// being formatted via `metadata[country].national_prefix_transform_rule`. +// For example, for `VI` country, it prepends `340` to the national number, +// and if this check hasn't been implemented, then there would be a bug +// when `340` "area coude" is "duplicated" during input for `VI` country: +// https://github.com/catamphetamine/libphonenumber-js/issues/318 +// +// So, all these "gotchas" are filtered out. +// +// In the original Google's code, the comments say: +// "Check that we didn't remove nor add any extra digits when we matched +// this formatting pattern. This usually happens after we entered the last +// digit during AYTF. Eg: In case of MX, we swallow mobile token (1) when +// formatted but AYTF should retain all the number entered and not change +// in order to match a format (of same leading digits and length) display +// in that way." +// "If it's the same (i.e entered number and format is same), then it's +// safe to return this in formatted number as nothing is lost / added." +// Otherwise, don't use this format. +// https://github.com/google/libphonenumber/commit/3e7c1f04f5e7200f87fb131e6f85c6e99d60f510#diff-9149457fa9f5d608a11bb975c6ef4bc5 +// https://github.com/google/libphonenumber/commit/3ac88c7106e7dcb553bcc794b15f19185928a1c6#diff-2dcb77e833422ee304da348b905cde0b +// + + +function isValidFormattedNationalNumber(formattedNationalNumber, state) { + return (0, _parseDigits["default"])(formattedNationalNumber) === state.getNationalDigits(); +} +//# sourceMappingURL=AsYouTypeFormatter.complete.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.complete.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.complete.js.map new file mode 100644 index 00000000..7b8c34d9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.complete.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsYouTypeFormatter.complete.js","names":["formatCompleteNumber","state","format","metadata","shouldTryNationalPrefixFormattingRule","getSeparatorAfterNationalPrefix","matcher","RegExp","pattern","test","nationalSignificantNumber","formatNationalNumberWithAndWithoutNationalPrefixFormattingRule","canFormatCompleteNumber","checkNumberLength","international","nationalPrefix","carrierCode","formattedNumber","formatNationalNumber","useNationalPrefixFormattingRule","formattedNationalNumber","formatNationalNumberUsingFormat","useInternationalFormat","withNationalPrefix","complexPrefixBeforeNationalSignificantNumber","isValidFormattedNationalNumber","parseDigits","getNationalDigits"],"sources":["../source/AsYouTypeFormatter.complete.js"],"sourcesContent":["import checkNumberLength from './helpers/checkNumberLength.js'\r\nimport parseDigits from './helpers/parseDigits.js'\r\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js'\r\n\r\nexport default function formatCompleteNumber(state, format, {\r\n\tmetadata,\r\n\tshouldTryNationalPrefixFormattingRule,\r\n\tgetSeparatorAfterNationalPrefix\r\n}) {\r\n\tconst matcher = new RegExp(`^(?:${format.pattern()})$`)\r\n\tif (matcher.test(state.nationalSignificantNumber)) {\r\n\t\treturn formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(\r\n\t\t\tstate,\r\n\t\t\tformat,\r\n\t\t\t{\r\n\t\t\t\tmetadata,\r\n\t\t\t\tshouldTryNationalPrefixFormattingRule,\r\n\t\t\t\tgetSeparatorAfterNationalPrefix\r\n\t\t\t}\r\n\t\t)\r\n\t}\r\n}\r\n\r\nexport function canFormatCompleteNumber(nationalSignificantNumber, metadata) {\r\n\treturn checkNumberLength(nationalSignificantNumber, metadata) === 'IS_POSSIBLE'\r\n}\r\n\r\nfunction formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(state, format, {\r\n\tmetadata,\r\n\tshouldTryNationalPrefixFormattingRule,\r\n\tgetSeparatorAfterNationalPrefix\r\n}) {\r\n\t// `format` has already been checked for `nationalPrefix` requirement.\r\n\r\n\tconst {\r\n\t\tnationalSignificantNumber,\r\n\t\tinternational,\r\n\t\tnationalPrefix,\r\n\t\tcarrierCode\r\n\t} = state\r\n\r\n\t// Format the number with using `national_prefix_formatting_rule`.\r\n\t// If the resulting formatted number is a valid formatted number, then return it.\r\n\t//\r\n\t// Google's AsYouType formatter is different in a way that it doesn't try\r\n\t// to format using the \"national prefix formatting rule\", and instead it\r\n\t// simply prepends a national prefix followed by a \" \" character.\r\n\t// This code does that too, but as a fallback.\r\n\t// The reason is that \"national prefix formatting rule\" may use parentheses,\r\n\t// which wouldn't be included has it used the simpler Google's way.\r\n\t//\r\n\tif (shouldTryNationalPrefixFormattingRule(format)) {\r\n\t\tconst formattedNumber = formatNationalNumber(state, format, {\r\n\t\t\tuseNationalPrefixFormattingRule: true,\r\n\t\t\tgetSeparatorAfterNationalPrefix,\r\n\t\t\tmetadata\r\n\t\t})\r\n\t\tif (formattedNumber) {\r\n\t\t\treturn formattedNumber\r\n\t\t}\r\n\t}\r\n\r\n\t// Format the number without using `national_prefix_formatting_rule`.\r\n\treturn formatNationalNumber(state, format, {\r\n\t\tuseNationalPrefixFormattingRule: false,\r\n\t\tgetSeparatorAfterNationalPrefix,\r\n\t\tmetadata\r\n\t})\r\n}\r\n\r\nfunction formatNationalNumber(state, format, {\r\n\tmetadata,\r\n\tuseNationalPrefixFormattingRule,\r\n\tgetSeparatorAfterNationalPrefix\r\n}) {\r\n\tlet formattedNationalNumber = formatNationalNumberUsingFormat(\r\n\t\tstate.nationalSignificantNumber,\r\n\t\tformat,\r\n\t\t{\r\n\t\t\tcarrierCode: state.carrierCode,\r\n\t\t\tuseInternationalFormat: state.international,\r\n\t\t\twithNationalPrefix: useNationalPrefixFormattingRule,\r\n\t\t\tmetadata\r\n\t\t}\r\n\t)\r\n\tif (!useNationalPrefixFormattingRule) {\r\n\t\tif (state.nationalPrefix) {\r\n\t\t\t// If a national prefix was extracted, then just prepend it,\r\n\t\t\t// followed by a \" \" character.\r\n\t\t\tformattedNationalNumber = state.nationalPrefix +\r\n\t\t\t\tgetSeparatorAfterNationalPrefix(format) +\r\n\t\t\t\tformattedNationalNumber\r\n\t\t} else if (state.complexPrefixBeforeNationalSignificantNumber) {\r\n\t\t\tformattedNationalNumber = state.complexPrefixBeforeNationalSignificantNumber +\r\n\t\t\t\t' ' +\r\n\t\t\t\tformattedNationalNumber\r\n\t\t}\r\n\t}\r\n\tif (isValidFormattedNationalNumber(formattedNationalNumber, state)) {\r\n\t\treturn formattedNationalNumber\r\n\t}\r\n}\r\n\r\n// Check that the formatted phone number contains exactly\r\n// the same digits that have been input by the user.\r\n// For example, when \"0111523456789\" is input for `AR` country,\r\n// the extracted `this.nationalSignificantNumber` is \"91123456789\",\r\n// which means that the national part of `this.digits` isn't simply equal to\r\n// `this.nationalPrefix` + `this.nationalSignificantNumber`.\r\n//\r\n// Also, a `format` can add extra digits to the `this.nationalSignificantNumber`\r\n// being formatted via `metadata[country].national_prefix_transform_rule`.\r\n// For example, for `VI` country, it prepends `340` to the national number,\r\n// and if this check hasn't been implemented, then there would be a bug\r\n// when `340` \"area coude\" is \"duplicated\" during input for `VI` country:\r\n// https://github.com/catamphetamine/libphonenumber-js/issues/318\r\n//\r\n// So, all these \"gotchas\" are filtered out.\r\n//\r\n// In the original Google's code, the comments say:\r\n// \"Check that we didn't remove nor add any extra digits when we matched\r\n// this formatting pattern. This usually happens after we entered the last\r\n// digit during AYTF. Eg: In case of MX, we swallow mobile token (1) when\r\n// formatted but AYTF should retain all the number entered and not change\r\n// in order to match a format (of same leading digits and length) display\r\n// in that way.\"\r\n// \"If it's the same (i.e entered number and format is same), then it's\r\n// safe to return this in formatted number as nothing is lost / added.\"\r\n// Otherwise, don't use this format.\r\n// https://github.com/google/libphonenumber/commit/3e7c1f04f5e7200f87fb131e6f85c6e99d60f510#diff-9149457fa9f5d608a11bb975c6ef4bc5\r\n// https://github.com/google/libphonenumber/commit/3ac88c7106e7dcb553bcc794b15f19185928a1c6#diff-2dcb77e833422ee304da348b905cde0b\r\n//\r\nfunction isValidFormattedNationalNumber(formattedNationalNumber, state) {\r\n\treturn parseDigits(formattedNationalNumber) === state.getNationalDigits()\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.js new file mode 100644 index 00000000..b8a4f7c6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.js @@ -0,0 +1,774 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "DIGIT_PLACEHOLDER", { + enumerable: true, + get: function get() { + return _AsYouTypeFormatterUtil.DIGIT_PLACEHOLDER; + } +}); +exports["default"] = void 0; + +var _AsYouTypeFormatterUtil = require("./AsYouTypeFormatter.util.js"); + +var _AsYouTypeFormatterComplete = _interopRequireWildcard(require("./AsYouTypeFormatter.complete.js")); + +var _AsYouTypeFormatterPatternMatcher = _interopRequireDefault(require("./AsYouTypeFormatter.PatternMatcher.js")); + +var _parseDigits = _interopRequireDefault(require("./helpers/parseDigits.js")); + +var _formatNationalNumberUsingFormat = require("./helpers/formatNationalNumberUsingFormat.js"); + +var _constants = require("./constants.js"); + +var _applyInternationalSeparatorStyle = _interopRequireDefault(require("./helpers/applyInternationalSeparatorStyle.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } + +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +// Used in phone number format template creation. +// Could be any digit, I guess. +var DUMMY_DIGIT = '9'; // I don't know why is it exactly `15` + +var LONGEST_NATIONAL_PHONE_NUMBER_LENGTH = 15; // Create a phone number consisting only of the digit 9 that matches the +// `number_pattern` by applying the pattern to the "longest phone number" string. + +var LONGEST_DUMMY_PHONE_NUMBER = (0, _AsYouTypeFormatterUtil.repeat)(DUMMY_DIGIT, LONGEST_NATIONAL_PHONE_NUMBER_LENGTH); // A set of characters that, if found in a national prefix formatting rules, are an indicator to +// us that we should separate the national prefix from the number when formatting. + +var NATIONAL_PREFIX_SEPARATORS_PATTERN = /[- ]/; // Deprecated: Google has removed some formatting pattern related code from their repo. +// https://github.com/googlei18n/libphonenumber/commit/a395b4fef3caf57c4bc5f082e1152a4d2bd0ba4c +// "We no longer have numbers in formatting matching patterns, only \d." +// Because this library supports generating custom metadata +// some users may still be using old metadata so the relevant +// code seems to stay until some next major version update. + +var SUPPORT_LEGACY_FORMATTING_PATTERNS = true; // A pattern that is used to match character classes in regular expressions. +// An example of a character class is "[1-4]". + +var CREATE_CHARACTER_CLASS_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && function () { + return /\[([^\[\]])*\]/g; +}; // Any digit in a regular expression that actually denotes a digit. For +// example, in the regular expression "80[0-2]\d{6,10}", the first 2 digits +// (8 and 0) are standalone digits, but the rest are not. +// Two look-aheads are needed because the number following \\d could be a +// two-digit number, since the phone number can be as long as 15 digits. + + +var CREATE_STANDALONE_DIGIT_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && function () { + return /\d(?=[^,}][^,}])/g; +}; // A regular expression that is used to determine if a `format` is +// suitable to be used in the "as you type formatter". +// A `format` is suitable when the resulting formatted number has +// the same digits as the user has entered. +// +// In the simplest case, that would mean that the format +// doesn't add any additional digits when formatting a number. +// Google says that it also shouldn't add "star" (`*`) characters, +// like it does in some Israeli formats. +// Such basic format would only contain "valid punctuation" +// and "captured group" identifiers ($1, $2, etc). +// +// An example of a format that adds additional digits: +// +// Country: `AR` (Argentina). +// Format: +// { +// "pattern": "(\\d)(\\d{2})(\\d{4})(\\d{4})", +// "leading_digits_patterns": ["91"], +// "national_prefix_formatting_rule": "0$1", +// "format": "$2 15-$3-$4", +// "international_format": "$1 $2 $3-$4" +// } +// +// In the format above, the `format` adds `15` to the digits when formatting a number. +// A sidenote: this format actually is suitable because `national_prefix_for_parsing` +// has previously removed `15` from a national number, so re-adding `15` in `format` +// doesn't actually result in any extra digits added to user's input. +// But verifying that would be a complex procedure, so the code chooses a simpler path: +// it simply filters out all `format`s that contain anything but "captured group" ids. +// +// This regular expression is called `ELIGIBLE_FORMAT_PATTERN` in Google's +// `libphonenumber` code. +// + + +var NON_ALTERING_FORMAT_REG_EXP = new RegExp('[' + _constants.VALID_PUNCTUATION + ']*' + // Google developers say: +// "We require that the first matching group is present in the +// output pattern to ensure no data is lost while formatting." +'\\$1' + '[' + _constants.VALID_PUNCTUATION + ']*' + '(\\$\\d[' + _constants.VALID_PUNCTUATION + ']*)*' + '$'); // This is the minimum length of the leading digits of a phone number +// to guarantee the first "leading digits pattern" for a phone number format +// to be preemptive. + +var MIN_LEADING_DIGITS_LENGTH = 3; + +var AsYouTypeFormatter = /*#__PURE__*/function () { + function AsYouTypeFormatter(_ref) { + var state = _ref.state, + metadata = _ref.metadata; + + _classCallCheck(this, AsYouTypeFormatter); + + this.metadata = metadata; + this.resetFormat(); + } + + _createClass(AsYouTypeFormatter, [{ + key: "resetFormat", + value: function resetFormat() { + this.chosenFormat = undefined; + this.template = undefined; + this.nationalNumberTemplate = undefined; + this.populatedNationalNumberTemplate = undefined; + this.populatedNationalNumberTemplatePosition = -1; + } + }, { + key: "reset", + value: function reset(numberingPlan, state) { + this.resetFormat(); + + if (numberingPlan) { + this.isNANP = numberingPlan.callingCode() === '1'; + this.matchingFormats = numberingPlan.formats(); + + if (state.nationalSignificantNumber) { + this.narrowDownMatchingFormats(state); + } + } else { + this.isNANP = undefined; + this.matchingFormats = []; + } + } + /** + * Formats an updated phone number. + * @param {string} nextDigits — Additional phone number digits. + * @param {object} state — `AsYouType` state. + * @return {[string]} Returns undefined if the updated phone number can't be formatted using any of the available formats. + */ + + }, { + key: "format", + value: function format(nextDigits, state) { + var _this = this; + + // See if the phone number digits can be formatted as a complete phone number. + // If not, use the results from `formatNationalNumberWithNextDigits()`, + // which formats based on the chosen formatting pattern. + // + // Attempting to format complete phone number first is how it's done + // in Google's `libphonenumber`, so this library just follows it. + // Google's `libphonenumber` code doesn't explain in detail why does it + // attempt to format digits as a complete phone number + // instead of just going with a previoulsy (or newly) chosen `format`: + // + // "Checks to see if there is an exact pattern match for these digits. + // If so, we should use this instead of any other formatting template + // whose leadingDigitsPattern also matches the input." + // + if ((0, _AsYouTypeFormatterComplete.canFormatCompleteNumber)(state.nationalSignificantNumber, this.metadata)) { + for (var _iterator = _createForOfIteratorHelperLoose(this.matchingFormats), _step; !(_step = _iterator()).done;) { + var format = _step.value; + var formattedCompleteNumber = (0, _AsYouTypeFormatterComplete["default"])(state, format, { + metadata: this.metadata, + shouldTryNationalPrefixFormattingRule: function shouldTryNationalPrefixFormattingRule(format) { + return _this.shouldTryNationalPrefixFormattingRule(format, { + international: state.international, + nationalPrefix: state.nationalPrefix + }); + }, + getSeparatorAfterNationalPrefix: function getSeparatorAfterNationalPrefix(format) { + return _this.getSeparatorAfterNationalPrefix(format); + } + }); + + if (formattedCompleteNumber) { + this.resetFormat(); + this.chosenFormat = format; + this.setNationalNumberTemplate(formattedCompleteNumber.replace(/\d/g, _AsYouTypeFormatterUtil.DIGIT_PLACEHOLDER), state); + this.populatedNationalNumberTemplate = formattedCompleteNumber; // With a new formatting template, the matched position + // using the old template needs to be reset. + + this.populatedNationalNumberTemplatePosition = this.template.lastIndexOf(_AsYouTypeFormatterUtil.DIGIT_PLACEHOLDER); + return formattedCompleteNumber; + } + } + } // Format the digits as a partial (incomplete) phone number + // using the previously chosen formatting pattern (or a newly chosen one). + + + return this.formatNationalNumberWithNextDigits(nextDigits, state); + } // Formats the next phone number digits. + + }, { + key: "formatNationalNumberWithNextDigits", + value: function formatNationalNumberWithNextDigits(nextDigits, state) { + var previouslyChosenFormat = this.chosenFormat; // Choose a format from the list of matching ones. + + var newlyChosenFormat = this.chooseFormat(state); + + if (newlyChosenFormat) { + if (newlyChosenFormat === previouslyChosenFormat) { + // If it can format the next (current) digits + // using the previously chosen phone number format + // then return the updated formatted number. + return this.formatNextNationalNumberDigits(nextDigits); + } else { + // If a more appropriate phone number format + // has been chosen for these "leading digits", + // then re-format the national phone number part + // using the newly selected format. + return this.formatNextNationalNumberDigits(state.getNationalDigits()); + } + } + } + }, { + key: "narrowDownMatchingFormats", + value: function narrowDownMatchingFormats(_ref2) { + var _this2 = this; + + var nationalSignificantNumber = _ref2.nationalSignificantNumber, + nationalPrefix = _ref2.nationalPrefix, + international = _ref2.international; + var leadingDigits = nationalSignificantNumber; // "leading digits" pattern list starts with a + // "leading digits" pattern fitting a maximum of 3 leading digits. + // So, after a user inputs 3 digits of a national (significant) phone number + // this national (significant) number can already be formatted. + // The next "leading digits" pattern is for 4 leading digits max, + // and the "leading digits" pattern after it is for 5 leading digits max, etc. + // This implementation is different from Google's + // in that it searches for a fitting format + // even if the user has entered less than + // `MIN_LEADING_DIGITS_LENGTH` digits of a national number. + // Because some leading digit patterns already match for a single first digit. + + var leadingDigitsPatternIndex = leadingDigits.length - MIN_LEADING_DIGITS_LENGTH; + + if (leadingDigitsPatternIndex < 0) { + leadingDigitsPatternIndex = 0; + } + + this.matchingFormats = this.matchingFormats.filter(function (format) { + return _this2.formatSuits(format, international, nationalPrefix) && _this2.formatMatches(format, leadingDigits, leadingDigitsPatternIndex); + }); // If there was a phone number format chosen + // and it no longer holds given the new leading digits then reset it. + // The test for this `if` condition is marked as: + // "Reset a chosen format when it no longer holds given the new leading digits". + // To construct a valid test case for this one can find a country + // in `PhoneNumberMetadata.xml` yielding one format for 3 `` + // and yielding another format for 4 `` (Australia in this case). + + if (this.chosenFormat && this.matchingFormats.indexOf(this.chosenFormat) === -1) { + this.resetFormat(); + } + } + }, { + key: "formatSuits", + value: function formatSuits(format, international, nationalPrefix) { + // When a prefix before a national (significant) number is + // simply a national prefix, then it's parsed as `this.nationalPrefix`. + // In more complex cases, a prefix before national (significant) number + // could include a national prefix as well as some "capturing groups", + // and in that case there's no info whether a national prefix has been parsed. + // If national prefix is not used when formatting a phone number + // using this format, but a national prefix has been entered by the user, + // and was extracted, then discard such phone number format. + // In Google's "AsYouType" formatter code, the equivalent would be this part: + // https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L175-L184 + if (nationalPrefix && !format.usesNationalPrefix() && // !format.domesticCarrierCodeFormattingRule() && + !format.nationalPrefixIsOptionalWhenFormattingInNationalFormat()) { + return false; + } // If national prefix is mandatory for this phone number format + // and there're no guarantees that a national prefix is present in user input + // then discard this phone number format as not suitable. + // In Google's "AsYouType" formatter code, the equivalent would be this part: + // https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L185-L193 + + + if (!international && !nationalPrefix && format.nationalPrefixIsMandatoryWhenFormattingInNationalFormat()) { + return false; + } + + return true; + } + }, { + key: "formatMatches", + value: function formatMatches(format, leadingDigits, leadingDigitsPatternIndex) { + var leadingDigitsPatternsCount = format.leadingDigitsPatterns().length; // If this format is not restricted to a certain + // leading digits pattern then it fits. + // The test case could be found by searching for "leadingDigitsPatternsCount === 0". + + if (leadingDigitsPatternsCount === 0) { + return true; + } // Start narrowing down the list of possible formats based on the leading digits. + // (only previously matched formats take part in the narrowing down process) + // `leading_digits_patterns` start with 3 digits min + // and then go up from there one digit at a time. + + + leadingDigitsPatternIndex = Math.min(leadingDigitsPatternIndex, leadingDigitsPatternsCount - 1); + var leadingDigitsPattern = format.leadingDigitsPatterns()[leadingDigitsPatternIndex]; // Google imposes a requirement on the leading digits + // to be minimum 3 digits long in order to be eligible + // for checking those with a leading digits pattern. + // + // Since `leading_digits_patterns` start with 3 digits min, + // Google's original `libphonenumber` library only starts + // excluding any non-matching formats only when the + // national number entered so far is at least 3 digits long, + // otherwise format matching would give false negatives. + // + // For example, when the digits entered so far are `2` + // and the leading digits pattern is `21` – + // it's quite obvious in this case that the format could be the one + // but due to the absence of further digits it would give false negative. + // + // Also, `leading_digits_patterns` doesn't always correspond to a single + // digits count. For example, `60|8` pattern would already match `8` + // but the `60` part would require having at least two leading digits, + // so the whole pattern would require inputting two digits first in order to + // decide on whether it matches the input, even when the input is "80". + // + // This library — `libphonenumber-js` — allows filtering by `leading_digits_patterns` + // even when there's only 1 or 2 digits of the national (significant) number. + // To do that, it uses a non-strict pattern matcher written specifically for that. + // + + if (leadingDigits.length < MIN_LEADING_DIGITS_LENGTH) { + // Before leading digits < 3 matching was implemented: + // return true + // + // After leading digits < 3 matching was implemented: + try { + return new _AsYouTypeFormatterPatternMatcher["default"](leadingDigitsPattern).match(leadingDigits, { + allowOverflow: true + }) !== undefined; + } catch (error) + /* istanbul ignore next */ + { + // There's a slight possibility that there could be some undiscovered bug + // in the pattern matcher code. Since the "leading digits < 3 matching" + // feature is not "essential" for operation, it can fall back to the old way + // in case of any issues rather than halting the application's execution. + console.error(error); + return true; + } + } // If at least `MIN_LEADING_DIGITS_LENGTH` digits of a national number are + // available then use the usual regular expression matching. + // + // The whole pattern is wrapped in round brackets (`()`) because + // the pattern can use "or" operator (`|`) at the top level of the pattern. + // + + + return new RegExp("^(".concat(leadingDigitsPattern, ")")).test(leadingDigits); + } + }, { + key: "getFormatFormat", + value: function getFormatFormat(format, international) { + return international ? format.internationalFormat() : format.format(); + } + }, { + key: "chooseFormat", + value: function chooseFormat(state) { + var _this3 = this; + + var _loop = function _loop() { + var format = _step2.value; + + // If this format is currently being used + // and is still suitable, then stick to it. + if (_this3.chosenFormat === format) { + return "break"; + } // Sometimes, a formatting rule inserts additional digits in a phone number, + // and "as you type" formatter can't do that: it should only use the digits + // that the user has input. + // + // For example, in Argentina, there's a format for mobile phone numbers: + // + // { + // "pattern": "(\\d)(\\d{2})(\\d{4})(\\d{4})", + // "leading_digits_patterns": ["91"], + // "national_prefix_formatting_rule": "0$1", + // "format": "$2 15-$3-$4", + // "international_format": "$1 $2 $3-$4" + // } + // + // In that format, `international_format` is used instead of `format` + // because `format` inserts `15` in the formatted number, + // and `AsYouType` formatter should only use the digits + // the user has actually input, without adding any extra digits. + // In this case, it wouldn't make a difference, because the `15` + // is first stripped when applying `national_prefix_for_parsing` + // and then re-added when using `format`, so in reality it doesn't + // add any new digits to the number, but to detect that, the code + // would have to be more complex: it would have to try formatting + // the digits using the format and then see if any digits have + // actually been added or removed, and then, every time a new digit + // is input, it should re-check whether the chosen format doesn't + // alter the digits. + // + // Google's code doesn't go that far, and so does this library: + // it simply requires that a `format` doesn't add any additonal + // digits to user's input. + // + // Also, people in general should move from inputting phone numbers + // in national format (possibly with national prefixes) + // and use international phone number format instead: + // it's a logical thing in the modern age of mobile phones, + // globalization and the internet. + // + + /* istanbul ignore if */ + + + if (!NON_ALTERING_FORMAT_REG_EXP.test(_this3.getFormatFormat(format, state.international))) { + return "continue"; + } + + if (!_this3.createTemplateForFormat(format, state)) { + // Remove the format if it can't generate a template. + _this3.matchingFormats = _this3.matchingFormats.filter(function (_) { + return _ !== format; + }); + return "continue"; + } + + _this3.chosenFormat = format; + return "break"; + }; + + // When there are multiple available formats, the formatter uses the first + // format where a formatting template could be created. + // + // For some weird reason, `istanbul` says "else path not taken" + // for the `for of` line below. Supposedly that means that + // the loop doesn't ever go over the last element in the list. + // That's true because there always is `this.chosenFormat` + // when `this.matchingFormats` is non-empty. + // And, for some weird reason, it doesn't think that the case + // with empty `this.matchingFormats` qualifies for a valid "else" path. + // So simply muting this `istanbul` warning. + // It doesn't skip the contents of the `for of` loop, + // it just skips the `for of` line. + // + + /* istanbul ignore next */ + for (var _iterator2 = _createForOfIteratorHelperLoose(this.matchingFormats.slice()), _step2; !(_step2 = _iterator2()).done;) { + var _ret = _loop(); + + if (_ret === "break") break; + if (_ret === "continue") continue; + } + + if (!this.chosenFormat) { + // No format matches the national (significant) phone number. + this.resetFormat(); + } + + return this.chosenFormat; + } + }, { + key: "createTemplateForFormat", + value: function createTemplateForFormat(format, state) { + // The formatter doesn't format numbers when numberPattern contains '|', e.g. + // (20|3)\d{4}. In those cases we quickly return. + // (Though there's no such format in current metadata) + + /* istanbul ignore if */ + if (SUPPORT_LEGACY_FORMATTING_PATTERNS && format.pattern().indexOf('|') >= 0) { + return; + } // Get formatting template for this phone number format + + + var template = this.getTemplateForFormat(format, state); // If the national number entered is too long + // for any phone number format, then abort. + + if (template) { + this.setNationalNumberTemplate(template, state); + return true; + } + } + }, { + key: "getSeparatorAfterNationalPrefix", + value: function getSeparatorAfterNationalPrefix(format) { + // `US` metadata doesn't have a `national_prefix_formatting_rule`, + // so the `if` condition below doesn't apply to `US`, + // but in reality there shoudl be a separator + // between a national prefix and a national (significant) number. + // So `US` national prefix separator is a "special" "hardcoded" case. + if (this.isNANP) { + return ' '; + } // If a `format` has a `national_prefix_formatting_rule` + // and that rule has a separator after a national prefix, + // then it means that there should be a separator + // between a national prefix and a national (significant) number. + + + if (format && format.nationalPrefixFormattingRule() && NATIONAL_PREFIX_SEPARATORS_PATTERN.test(format.nationalPrefixFormattingRule())) { + return ' '; + } // At this point, there seems to be no clear evidence that + // there should be a separator between a national prefix + // and a national (significant) number. So don't insert one. + + + return ''; + } + }, { + key: "getInternationalPrefixBeforeCountryCallingCode", + value: function getInternationalPrefixBeforeCountryCallingCode(_ref3, options) { + var IDDPrefix = _ref3.IDDPrefix, + missingPlus = _ref3.missingPlus; + + if (IDDPrefix) { + return options && options.spacing === false ? IDDPrefix : IDDPrefix + ' '; + } + + if (missingPlus) { + return ''; + } + + return '+'; + } + }, { + key: "getTemplate", + value: function getTemplate(state) { + if (!this.template) { + return; + } // `this.template` holds the template for a "complete" phone number. + // The currently entered phone number is most likely not "complete", + // so trim all non-populated digits. + + + var index = -1; + var i = 0; + var internationalPrefix = state.international ? this.getInternationalPrefixBeforeCountryCallingCode(state, { + spacing: false + }) : ''; + + while (i < internationalPrefix.length + state.getDigitsWithoutInternationalPrefix().length) { + index = this.template.indexOf(_AsYouTypeFormatterUtil.DIGIT_PLACEHOLDER, index + 1); + i++; + } + + return (0, _AsYouTypeFormatterUtil.cutAndStripNonPairedParens)(this.template, index + 1); + } + }, { + key: "setNationalNumberTemplate", + value: function setNationalNumberTemplate(template, state) { + this.nationalNumberTemplate = template; + this.populatedNationalNumberTemplate = template; // With a new formatting template, the matched position + // using the old template needs to be reset. + + this.populatedNationalNumberTemplatePosition = -1; // For convenience, the public `.template` property + // contains the whole international number + // if the phone number being input is international: + // 'x' for the '+' sign, 'x'es for the country phone code, + // a spacebar and then the template for the formatted national number. + + if (state.international) { + this.template = this.getInternationalPrefixBeforeCountryCallingCode(state).replace(/[\d\+]/g, _AsYouTypeFormatterUtil.DIGIT_PLACEHOLDER) + (0, _AsYouTypeFormatterUtil.repeat)(_AsYouTypeFormatterUtil.DIGIT_PLACEHOLDER, state.callingCode.length) + ' ' + template; + } else { + this.template = template; + } + } + /** + * Generates formatting template for a national phone number, + * optionally containing a national prefix, for a format. + * @param {Format} format + * @param {string} nationalPrefix + * @return {string} + */ + + }, { + key: "getTemplateForFormat", + value: function getTemplateForFormat(format, _ref4) { + var nationalSignificantNumber = _ref4.nationalSignificantNumber, + international = _ref4.international, + nationalPrefix = _ref4.nationalPrefix, + complexPrefixBeforeNationalSignificantNumber = _ref4.complexPrefixBeforeNationalSignificantNumber; + var pattern = format.pattern(); + /* istanbul ignore else */ + + if (SUPPORT_LEGACY_FORMATTING_PATTERNS) { + pattern = pattern // Replace anything in the form of [..] with \d + .replace(CREATE_CHARACTER_CLASS_PATTERN(), '\\d') // Replace any standalone digit (not the one in `{}`) with \d + .replace(CREATE_STANDALONE_DIGIT_PATTERN(), '\\d'); + } // Generate a dummy national number (consisting of `9`s) + // that fits this format's `pattern`. + // + // This match will always succeed, + // because the "longest dummy phone number" + // has enough length to accomodate any possible + // national phone number format pattern. + // + + + var digits = LONGEST_DUMMY_PHONE_NUMBER.match(pattern)[0]; // If the national number entered is too long + // for any phone number format, then abort. + + if (nationalSignificantNumber.length > digits.length) { + return; + } // Get a formatting template which can be used to efficiently format + // a partial number where digits are added one by one. + // Below `strictPattern` is used for the + // regular expression (with `^` and `$`). + // This wasn't originally in Google's `libphonenumber` + // and I guess they don't really need it + // because they're not using "templates" to format phone numbers + // but I added `strictPattern` after encountering + // South Korean phone number formatting bug. + // + // Non-strict regular expression bug demonstration: + // + // this.nationalSignificantNumber : `111111111` (9 digits) + // + // pattern : (\d{2})(\d{3,4})(\d{4}) + // format : `$1 $2 $3` + // digits : `9999999999` (10 digits) + // + // '9999999999'.replace(new RegExp(/(\d{2})(\d{3,4})(\d{4})/g), '$1 $2 $3') = "99 9999 9999" + // + // template : xx xxxx xxxx + // + // But the correct template in this case is `xx xxx xxxx`. + // The template was generated incorrectly because of the + // `{3,4}` variability in the `pattern`. + // + // The fix is, if `this.nationalSignificantNumber` has already sufficient length + // to satisfy the `pattern` completely then `this.nationalSignificantNumber` + // is used instead of `digits`. + + + var strictPattern = new RegExp('^' + pattern + '$'); + var nationalNumberDummyDigits = nationalSignificantNumber.replace(/\d/g, DUMMY_DIGIT); // If `this.nationalSignificantNumber` has already sufficient length + // to satisfy the `pattern` completely then use it + // instead of `digits`. + + if (strictPattern.test(nationalNumberDummyDigits)) { + digits = nationalNumberDummyDigits; + } + + var numberFormat = this.getFormatFormat(format, international); + var nationalPrefixIncludedInTemplate; // If a user did input a national prefix (and that's guaranteed), + // and if a `format` does have a national prefix formatting rule, + // then see if that national prefix formatting rule + // prepends exactly the same national prefix the user has input. + // If that's the case, then use the `format` with the national prefix formatting rule. + // Otherwise, use the `format` without the national prefix formatting rule, + // and prepend a national prefix manually to it. + + if (this.shouldTryNationalPrefixFormattingRule(format, { + international: international, + nationalPrefix: nationalPrefix + })) { + var numberFormatWithNationalPrefix = numberFormat.replace(_formatNationalNumberUsingFormat.FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()); // If `national_prefix_formatting_rule` of a `format` simply prepends + // national prefix at the start of a national (significant) number, + // then such formatting can be used with `AsYouType` formatter. + // There seems to be no `else` case: everywhere in metadata, + // national prefix formatting rule is national prefix + $1, + // or `($1)`, in which case such format isn't even considered + // when the user has input a national prefix. + + /* istanbul ignore else */ + + if ((0, _parseDigits["default"])(format.nationalPrefixFormattingRule()) === (nationalPrefix || '') + (0, _parseDigits["default"])('$1')) { + numberFormat = numberFormatWithNationalPrefix; + nationalPrefixIncludedInTemplate = true; // Replace all digits of the national prefix in the formatting template + // with `DIGIT_PLACEHOLDER`s. + + if (nationalPrefix) { + var i = nationalPrefix.length; + + while (i > 0) { + numberFormat = numberFormat.replace(/\d/, _AsYouTypeFormatterUtil.DIGIT_PLACEHOLDER); + i--; + } + } + } + } // Generate formatting template for this phone number format. + + + var template = digits // Format the dummy phone number according to the format. + .replace(new RegExp(pattern), numberFormat) // Replace each dummy digit with a DIGIT_PLACEHOLDER. + .replace(new RegExp(DUMMY_DIGIT, 'g'), _AsYouTypeFormatterUtil.DIGIT_PLACEHOLDER); // If a prefix of a national (significant) number is not as simple + // as just a basic national prefix, then just prepend such prefix + // before the national (significant) number, optionally spacing + // the two with a whitespace. + + if (!nationalPrefixIncludedInTemplate) { + if (complexPrefixBeforeNationalSignificantNumber) { + // Prepend the prefix to the template manually. + template = (0, _AsYouTypeFormatterUtil.repeat)(_AsYouTypeFormatterUtil.DIGIT_PLACEHOLDER, complexPrefixBeforeNationalSignificantNumber.length) + ' ' + template; + } else if (nationalPrefix) { + // Prepend national prefix to the template manually. + template = (0, _AsYouTypeFormatterUtil.repeat)(_AsYouTypeFormatterUtil.DIGIT_PLACEHOLDER, nationalPrefix.length) + this.getSeparatorAfterNationalPrefix(format) + template; + } + } + + if (international) { + template = (0, _applyInternationalSeparatorStyle["default"])(template); + } + + return template; + } + }, { + key: "formatNextNationalNumberDigits", + value: function formatNextNationalNumberDigits(digits) { + var result = (0, _AsYouTypeFormatterUtil.populateTemplateWithDigits)(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition, digits); + + if (!result) { + // Reset the format. + this.resetFormat(); + return; + } + + this.populatedNationalNumberTemplate = result[0]; + this.populatedNationalNumberTemplatePosition = result[1]; // Return the formatted phone number so far. + + return (0, _AsYouTypeFormatterUtil.cutAndStripNonPairedParens)(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1); // The old way which was good for `input-format` but is not so good + // for `react-phone-number-input`'s default input (`InputBasic`). + // return closeNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1) + // .replace(new RegExp(DIGIT_PLACEHOLDER, 'g'), ' ') + } + }, { + key: "shouldTryNationalPrefixFormattingRule", + value: function shouldTryNationalPrefixFormattingRule(format, _ref5) { + var international = _ref5.international, + nationalPrefix = _ref5.nationalPrefix; + + if (format.nationalPrefixFormattingRule()) { + // In some countries, `national_prefix_formatting_rule` is `($1)`, + // so it applies even if the user hasn't input a national prefix. + // `format.usesNationalPrefix()` detects such cases. + var usesNationalPrefix = format.usesNationalPrefix(); + + if (usesNationalPrefix && nationalPrefix || !usesNationalPrefix && !international) { + return true; + } + } + } + }]); + + return AsYouTypeFormatter; +}(); + +exports["default"] = AsYouTypeFormatter; +//# sourceMappingURL=AsYouTypeFormatter.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.js.map new file mode 100644 index 00000000..09f79cc6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsYouTypeFormatter.js","names":["DUMMY_DIGIT","LONGEST_NATIONAL_PHONE_NUMBER_LENGTH","LONGEST_DUMMY_PHONE_NUMBER","repeat","NATIONAL_PREFIX_SEPARATORS_PATTERN","SUPPORT_LEGACY_FORMATTING_PATTERNS","CREATE_CHARACTER_CLASS_PATTERN","CREATE_STANDALONE_DIGIT_PATTERN","NON_ALTERING_FORMAT_REG_EXP","RegExp","VALID_PUNCTUATION","MIN_LEADING_DIGITS_LENGTH","AsYouTypeFormatter","state","metadata","resetFormat","chosenFormat","undefined","template","nationalNumberTemplate","populatedNationalNumberTemplate","populatedNationalNumberTemplatePosition","numberingPlan","isNANP","callingCode","matchingFormats","formats","nationalSignificantNumber","narrowDownMatchingFormats","nextDigits","canFormatCompleteNumber","format","formattedCompleteNumber","formatCompleteNumber","shouldTryNationalPrefixFormattingRule","international","nationalPrefix","getSeparatorAfterNationalPrefix","setNationalNumberTemplate","replace","DIGIT_PLACEHOLDER","lastIndexOf","formatNationalNumberWithNextDigits","previouslyChosenFormat","newlyChosenFormat","chooseFormat","formatNextNationalNumberDigits","getNationalDigits","leadingDigits","leadingDigitsPatternIndex","length","filter","formatSuits","formatMatches","indexOf","usesNationalPrefix","nationalPrefixIsOptionalWhenFormattingInNationalFormat","nationalPrefixIsMandatoryWhenFormattingInNationalFormat","leadingDigitsPatternsCount","leadingDigitsPatterns","Math","min","leadingDigitsPattern","PatternMatcher","match","allowOverflow","error","console","test","internationalFormat","getFormatFormat","createTemplateForFormat","_","slice","pattern","getTemplateForFormat","nationalPrefixFormattingRule","options","IDDPrefix","missingPlus","spacing","index","i","internationalPrefix","getInternationalPrefixBeforeCountryCallingCode","getDigitsWithoutInternationalPrefix","cutAndStripNonPairedParens","complexPrefixBeforeNationalSignificantNumber","digits","strictPattern","nationalNumberDummyDigits","numberFormat","nationalPrefixIncludedInTemplate","numberFormatWithNationalPrefix","FIRST_GROUP_PATTERN","parseDigits","applyInternationalSeparatorStyle","result","populateTemplateWithDigits"],"sources":["../source/AsYouTypeFormatter.js"],"sourcesContent":["import {\r\n\tDIGIT_PLACEHOLDER,\r\n\tcountOccurences,\r\n\trepeat,\r\n\tcutAndStripNonPairedParens,\r\n\tcloseNonPairedParens,\r\n\tstripNonPairedParens,\r\n\tpopulateTemplateWithDigits\r\n} from './AsYouTypeFormatter.util.js'\r\n\r\nimport formatCompleteNumber, {\r\n\tcanFormatCompleteNumber\r\n} from './AsYouTypeFormatter.complete.js'\r\n\r\nimport PatternMatcher from './AsYouTypeFormatter.PatternMatcher.js'\r\n\r\nimport parseDigits from './helpers/parseDigits.js'\r\nexport { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.util.js'\r\nimport { FIRST_GROUP_PATTERN } from './helpers/formatNationalNumberUsingFormat.js'\r\nimport { VALID_PUNCTUATION } from './constants.js'\r\nimport applyInternationalSeparatorStyle from './helpers/applyInternationalSeparatorStyle.js'\r\n\r\n// Used in phone number format template creation.\r\n// Could be any digit, I guess.\r\nconst DUMMY_DIGIT = '9'\r\n// I don't know why is it exactly `15`\r\nconst LONGEST_NATIONAL_PHONE_NUMBER_LENGTH = 15\r\n// Create a phone number consisting only of the digit 9 that matches the\r\n// `number_pattern` by applying the pattern to the \"longest phone number\" string.\r\nconst LONGEST_DUMMY_PHONE_NUMBER = repeat(DUMMY_DIGIT, LONGEST_NATIONAL_PHONE_NUMBER_LENGTH)\r\n\r\n// A set of characters that, if found in a national prefix formatting rules, are an indicator to\r\n// us that we should separate the national prefix from the number when formatting.\r\nconst NATIONAL_PREFIX_SEPARATORS_PATTERN = /[- ]/\r\n\r\n// Deprecated: Google has removed some formatting pattern related code from their repo.\r\n// https://github.com/googlei18n/libphonenumber/commit/a395b4fef3caf57c4bc5f082e1152a4d2bd0ba4c\r\n// \"We no longer have numbers in formatting matching patterns, only \\d.\"\r\n// Because this library supports generating custom metadata\r\n// some users may still be using old metadata so the relevant\r\n// code seems to stay until some next major version update.\r\nconst SUPPORT_LEGACY_FORMATTING_PATTERNS = true\r\n\r\n// A pattern that is used to match character classes in regular expressions.\r\n// An example of a character class is \"[1-4]\".\r\nconst CREATE_CHARACTER_CLASS_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && (() => /\\[([^\\[\\]])*\\]/g)\r\n\r\n// Any digit in a regular expression that actually denotes a digit. For\r\n// example, in the regular expression \"80[0-2]\\d{6,10}\", the first 2 digits\r\n// (8 and 0) are standalone digits, but the rest are not.\r\n// Two look-aheads are needed because the number following \\\\d could be a\r\n// two-digit number, since the phone number can be as long as 15 digits.\r\nconst CREATE_STANDALONE_DIGIT_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && (() => /\\d(?=[^,}][^,}])/g)\r\n\r\n// A regular expression that is used to determine if a `format` is\r\n// suitable to be used in the \"as you type formatter\".\r\n// A `format` is suitable when the resulting formatted number has\r\n// the same digits as the user has entered.\r\n//\r\n// In the simplest case, that would mean that the format\r\n// doesn't add any additional digits when formatting a number.\r\n// Google says that it also shouldn't add \"star\" (`*`) characters,\r\n// like it does in some Israeli formats.\r\n// Such basic format would only contain \"valid punctuation\"\r\n// and \"captured group\" identifiers ($1, $2, etc).\r\n//\r\n// An example of a format that adds additional digits:\r\n//\r\n// Country: `AR` (Argentina).\r\n// Format:\r\n// {\r\n// \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\r\n// \"leading_digits_patterns\": [\"91\"],\r\n// \"national_prefix_formatting_rule\": \"0$1\",\r\n// \"format\": \"$2 15-$3-$4\",\r\n// \"international_format\": \"$1 $2 $3-$4\"\r\n// }\r\n//\r\n// In the format above, the `format` adds `15` to the digits when formatting a number.\r\n// A sidenote: this format actually is suitable because `national_prefix_for_parsing`\r\n// has previously removed `15` from a national number, so re-adding `15` in `format`\r\n// doesn't actually result in any extra digits added to user's input.\r\n// But verifying that would be a complex procedure, so the code chooses a simpler path:\r\n// it simply filters out all `format`s that contain anything but \"captured group\" ids.\r\n//\r\n// This regular expression is called `ELIGIBLE_FORMAT_PATTERN` in Google's\r\n// `libphonenumber` code.\r\n//\r\nconst NON_ALTERING_FORMAT_REG_EXP = new RegExp(\r\n\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t// Google developers say:\r\n\t// \"We require that the first matching group is present in the\r\n\t// output pattern to ensure no data is lost while formatting.\"\r\n\t'\\\\$1' +\r\n\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t'(\\\\$\\\\d[' + VALID_PUNCTUATION + ']*)*' +\r\n\t'$'\r\n)\r\n\r\n// This is the minimum length of the leading digits of a phone number\r\n// to guarantee the first \"leading digits pattern\" for a phone number format\r\n// to be preemptive.\r\nconst MIN_LEADING_DIGITS_LENGTH = 3\r\n\r\nexport default class AsYouTypeFormatter {\r\n\tconstructor({\r\n\t\tstate,\r\n\t\tmetadata\r\n\t}) {\r\n\t\tthis.metadata = metadata\r\n\t\tthis.resetFormat()\r\n\t}\r\n\r\n\tresetFormat() {\r\n\t\tthis.chosenFormat = undefined\r\n\t\tthis.template = undefined\r\n\t\tthis.nationalNumberTemplate = undefined\r\n\t\tthis.populatedNationalNumberTemplate = undefined\r\n\t\tthis.populatedNationalNumberTemplatePosition = -1\r\n\t}\r\n\r\n\treset(numberingPlan, state) {\r\n\t\tthis.resetFormat()\r\n\t\tif (numberingPlan) {\r\n\t\t\tthis.isNANP = numberingPlan.callingCode() === '1'\r\n\t\t\tthis.matchingFormats = numberingPlan.formats()\r\n\t\t\tif (state.nationalSignificantNumber) {\r\n\t\t\t\tthis.narrowDownMatchingFormats(state)\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.isNANP = undefined\r\n\t\t\tthis.matchingFormats = []\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Formats an updated phone number.\r\n\t * @param {string} nextDigits — Additional phone number digits.\r\n\t * @param {object} state — `AsYouType` state.\r\n\t * @return {[string]} Returns undefined if the updated phone number can't be formatted using any of the available formats.\r\n\t */\r\n\tformat(nextDigits, state) {\r\n\t\t// See if the phone number digits can be formatted as a complete phone number.\r\n\t\t// If not, use the results from `formatNationalNumberWithNextDigits()`,\r\n\t\t// which formats based on the chosen formatting pattern.\r\n\t\t//\r\n\t\t// Attempting to format complete phone number first is how it's done\r\n\t\t// in Google's `libphonenumber`, so this library just follows it.\r\n\t\t// Google's `libphonenumber` code doesn't explain in detail why does it\r\n\t\t// attempt to format digits as a complete phone number\r\n\t\t// instead of just going with a previoulsy (or newly) chosen `format`:\r\n\t\t//\r\n\t\t// \"Checks to see if there is an exact pattern match for these digits.\r\n\t\t// If so, we should use this instead of any other formatting template\r\n\t\t// whose leadingDigitsPattern also matches the input.\"\r\n\t\t//\r\n\t\tif (canFormatCompleteNumber(state.nationalSignificantNumber, this.metadata)) {\r\n\t\t\tfor (const format of this.matchingFormats) {\r\n\t\t\t\tconst formattedCompleteNumber = formatCompleteNumber(\r\n\t\t\t\t\tstate,\r\n\t\t\t\t\tformat,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tmetadata: this.metadata,\r\n\t\t\t\t\t\tshouldTryNationalPrefixFormattingRule: (format) => this.shouldTryNationalPrefixFormattingRule(format, {\r\n\t\t\t\t\t\t\tinternational: state.international,\r\n\t\t\t\t\t\t\tnationalPrefix: state.nationalPrefix\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tgetSeparatorAfterNationalPrefix: (format) => this.getSeparatorAfterNationalPrefix(format)\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t\t\tif (formattedCompleteNumber) {\r\n\t\t\t\t\tthis.resetFormat()\r\n\t\t\t\t\tthis.chosenFormat = format\r\n\t\t\t\t\tthis.setNationalNumberTemplate(formattedCompleteNumber.replace(/\\d/g, DIGIT_PLACEHOLDER), state)\r\n\t\t\t\t\tthis.populatedNationalNumberTemplate = formattedCompleteNumber\r\n\t\t\t\t\t// With a new formatting template, the matched position\r\n\t\t\t\t\t// using the old template needs to be reset.\r\n\t\t\t\t\tthis.populatedNationalNumberTemplatePosition = this.template.lastIndexOf(DIGIT_PLACEHOLDER)\r\n\t\t\t\t\treturn formattedCompleteNumber\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Format the digits as a partial (incomplete) phone number\r\n\t\t// using the previously chosen formatting pattern (or a newly chosen one).\r\n\t\treturn this.formatNationalNumberWithNextDigits(nextDigits, state)\r\n\t}\r\n\r\n\t// Formats the next phone number digits.\r\n\tformatNationalNumberWithNextDigits(nextDigits, state) {\r\n\t\tconst previouslyChosenFormat = this.chosenFormat\r\n\r\n\t\t// Choose a format from the list of matching ones.\r\n\t\tconst newlyChosenFormat = this.chooseFormat(state)\r\n\r\n\t\tif (newlyChosenFormat) {\r\n\t\t\tif (newlyChosenFormat === previouslyChosenFormat) {\r\n\t\t\t\t// If it can format the next (current) digits\r\n\t\t\t\t// using the previously chosen phone number format\r\n\t\t\t\t// then return the updated formatted number.\r\n\t\t\t\treturn this.formatNextNationalNumberDigits(nextDigits)\r\n\t\t\t} else {\r\n\t\t\t\t// If a more appropriate phone number format\r\n\t\t\t\t// has been chosen for these \"leading digits\",\r\n\t\t\t\t// then re-format the national phone number part\r\n\t\t\t\t// using the newly selected format.\r\n\t\t\t\treturn this.formatNextNationalNumberDigits(state.getNationalDigits())\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tnarrowDownMatchingFormats({\r\n\t\tnationalSignificantNumber,\r\n\t\tnationalPrefix,\r\n\t\tinternational\r\n\t}) {\r\n\t\tconst leadingDigits = nationalSignificantNumber\r\n\r\n\t\t// \"leading digits\" pattern list starts with a\r\n\t\t// \"leading digits\" pattern fitting a maximum of 3 leading digits.\r\n\t\t// So, after a user inputs 3 digits of a national (significant) phone number\r\n\t\t// this national (significant) number can already be formatted.\r\n\t\t// The next \"leading digits\" pattern is for 4 leading digits max,\r\n\t\t// and the \"leading digits\" pattern after it is for 5 leading digits max, etc.\r\n\r\n\t\t// This implementation is different from Google's\r\n\t\t// in that it searches for a fitting format\r\n\t\t// even if the user has entered less than\r\n\t\t// `MIN_LEADING_DIGITS_LENGTH` digits of a national number.\r\n\t\t// Because some leading digit patterns already match for a single first digit.\r\n\t\tlet leadingDigitsPatternIndex = leadingDigits.length - MIN_LEADING_DIGITS_LENGTH\r\n\t\tif (leadingDigitsPatternIndex < 0) {\r\n\t\t\tleadingDigitsPatternIndex = 0\r\n\t\t}\r\n\r\n\t\tthis.matchingFormats = this.matchingFormats.filter(\r\n\t\t\tformat => this.formatSuits(format, international, nationalPrefix)\r\n\t\t\t\t&& this.formatMatches(format, leadingDigits, leadingDigitsPatternIndex)\r\n\t\t)\r\n\r\n\t\t// If there was a phone number format chosen\r\n\t\t// and it no longer holds given the new leading digits then reset it.\r\n\t\t// The test for this `if` condition is marked as:\r\n\t\t// \"Reset a chosen format when it no longer holds given the new leading digits\".\r\n\t\t// To construct a valid test case for this one can find a country\r\n\t\t// in `PhoneNumberMetadata.xml` yielding one format for 3 ``\r\n\t\t// and yielding another format for 4 `` (Australia in this case).\r\n\t\tif (this.chosenFormat && this.matchingFormats.indexOf(this.chosenFormat) === -1) {\r\n\t\t\tthis.resetFormat()\r\n\t\t}\r\n\t}\r\n\r\n\tformatSuits(format, international, nationalPrefix) {\r\n\t\t// When a prefix before a national (significant) number is\r\n\t\t// simply a national prefix, then it's parsed as `this.nationalPrefix`.\r\n\t\t// In more complex cases, a prefix before national (significant) number\r\n\t\t// could include a national prefix as well as some \"capturing groups\",\r\n\t\t// and in that case there's no info whether a national prefix has been parsed.\r\n\t\t// If national prefix is not used when formatting a phone number\r\n\t\t// using this format, but a national prefix has been entered by the user,\r\n\t\t// and was extracted, then discard such phone number format.\r\n\t\t// In Google's \"AsYouType\" formatter code, the equivalent would be this part:\r\n\t\t// https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L175-L184\r\n\t\tif (nationalPrefix &&\r\n\t\t\t!format.usesNationalPrefix() &&\r\n\t\t\t// !format.domesticCarrierCodeFormattingRule() &&\r\n\t\t\t!format.nationalPrefixIsOptionalWhenFormattingInNationalFormat()) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\t// If national prefix is mandatory for this phone number format\r\n\t\t// and there're no guarantees that a national prefix is present in user input\r\n\t\t// then discard this phone number format as not suitable.\r\n\t\t// In Google's \"AsYouType\" formatter code, the equivalent would be this part:\r\n\t\t// https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L185-L193\r\n\t\tif (!international &&\r\n\t\t\t!nationalPrefix &&\r\n\t\t\tformat.nationalPrefixIsMandatoryWhenFormattingInNationalFormat()) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn true\r\n\t}\r\n\r\n\tformatMatches(format, leadingDigits, leadingDigitsPatternIndex) {\r\n\t\tconst leadingDigitsPatternsCount = format.leadingDigitsPatterns().length\r\n\r\n\t\t// If this format is not restricted to a certain\r\n\t\t// leading digits pattern then it fits.\r\n\t\t// The test case could be found by searching for \"leadingDigitsPatternsCount === 0\".\r\n\t\tif (leadingDigitsPatternsCount === 0) {\r\n\t\t\treturn true\r\n\t\t}\r\n\r\n\t\t// Start narrowing down the list of possible formats based on the leading digits.\r\n\t\t// (only previously matched formats take part in the narrowing down process)\r\n\r\n\t\t// `leading_digits_patterns` start with 3 digits min\r\n\t\t// and then go up from there one digit at a time.\r\n\t\tleadingDigitsPatternIndex = Math.min(leadingDigitsPatternIndex, leadingDigitsPatternsCount - 1)\r\n\t\tconst leadingDigitsPattern = format.leadingDigitsPatterns()[leadingDigitsPatternIndex]\r\n\r\n\t\t// Google imposes a requirement on the leading digits\r\n\t\t// to be minimum 3 digits long in order to be eligible\r\n\t\t// for checking those with a leading digits pattern.\r\n\t\t//\r\n\t\t// Since `leading_digits_patterns` start with 3 digits min,\r\n\t\t// Google's original `libphonenumber` library only starts\r\n\t\t// excluding any non-matching formats only when the\r\n\t\t// national number entered so far is at least 3 digits long,\r\n\t\t// otherwise format matching would give false negatives.\r\n\t\t//\r\n\t\t// For example, when the digits entered so far are `2`\r\n\t\t// and the leading digits pattern is `21` –\r\n\t\t// it's quite obvious in this case that the format could be the one\r\n\t\t// but due to the absence of further digits it would give false negative.\r\n\t\t//\r\n\t\t// Also, `leading_digits_patterns` doesn't always correspond to a single\r\n\t\t// digits count. For example, `60|8` pattern would already match `8`\r\n\t\t// but the `60` part would require having at least two leading digits,\r\n\t\t// so the whole pattern would require inputting two digits first in order to\r\n\t\t// decide on whether it matches the input, even when the input is \"80\".\r\n\t\t//\r\n\t\t// This library — `libphonenumber-js` — allows filtering by `leading_digits_patterns`\r\n\t\t// even when there's only 1 or 2 digits of the national (significant) number.\r\n\t\t// To do that, it uses a non-strict pattern matcher written specifically for that.\r\n\t\t//\r\n\t\tif (leadingDigits.length < MIN_LEADING_DIGITS_LENGTH) {\r\n\t\t\t// Before leading digits < 3 matching was implemented:\r\n\t\t\t// return true\r\n\t\t\t//\r\n\t\t\t// After leading digits < 3 matching was implemented:\r\n\t\t\ttry {\r\n\t\t\t\treturn new PatternMatcher(leadingDigitsPattern).match(leadingDigits, { allowOverflow: true }) !== undefined\r\n\t\t\t} catch (error) /* istanbul ignore next */ {\r\n\t\t\t\t// There's a slight possibility that there could be some undiscovered bug\r\n\t\t\t\t// in the pattern matcher code. Since the \"leading digits < 3 matching\"\r\n\t\t\t\t// feature is not \"essential\" for operation, it can fall back to the old way\r\n\t\t\t\t// in case of any issues rather than halting the application's execution.\r\n\t\t\t\tconsole.error(error)\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// If at least `MIN_LEADING_DIGITS_LENGTH` digits of a national number are\r\n\t\t// available then use the usual regular expression matching.\r\n\t\t//\r\n\t\t// The whole pattern is wrapped in round brackets (`()`) because\r\n\t\t// the pattern can use \"or\" operator (`|`) at the top level of the pattern.\r\n\t\t//\r\n\t\treturn new RegExp(`^(${leadingDigitsPattern})`).test(leadingDigits)\r\n\t}\r\n\r\n\tgetFormatFormat(format, international) {\r\n\t\treturn international ? format.internationalFormat() : format.format()\r\n\t}\r\n\r\n\tchooseFormat(state) {\r\n\t\t// When there are multiple available formats, the formatter uses the first\r\n\t\t// format where a formatting template could be created.\r\n\t\t//\r\n\t\t// For some weird reason, `istanbul` says \"else path not taken\"\r\n\t\t// for the `for of` line below. Supposedly that means that\r\n\t\t// the loop doesn't ever go over the last element in the list.\r\n\t\t// That's true because there always is `this.chosenFormat`\r\n\t\t// when `this.matchingFormats` is non-empty.\r\n\t\t// And, for some weird reason, it doesn't think that the case\r\n\t\t// with empty `this.matchingFormats` qualifies for a valid \"else\" path.\r\n\t\t// So simply muting this `istanbul` warning.\r\n\t\t// It doesn't skip the contents of the `for of` loop,\r\n\t\t// it just skips the `for of` line.\r\n\t\t//\r\n\t\t/* istanbul ignore next */\r\n\t\tfor (const format of this.matchingFormats.slice()) {\r\n\t\t\t// If this format is currently being used\r\n\t\t\t// and is still suitable, then stick to it.\r\n\t\t\tif (this.chosenFormat === format) {\r\n\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t\t// Sometimes, a formatting rule inserts additional digits in a phone number,\r\n\t\t\t// and \"as you type\" formatter can't do that: it should only use the digits\r\n\t\t\t// that the user has input.\r\n\t\t\t//\r\n\t\t\t// For example, in Argentina, there's a format for mobile phone numbers:\r\n\t\t\t//\r\n\t\t\t// {\r\n\t\t\t// \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\r\n\t\t\t// \"leading_digits_patterns\": [\"91\"],\r\n\t\t\t// \"national_prefix_formatting_rule\": \"0$1\",\r\n\t\t\t// \"format\": \"$2 15-$3-$4\",\r\n\t\t\t// \"international_format\": \"$1 $2 $3-$4\"\r\n\t\t\t// }\r\n\t\t\t//\r\n\t\t\t// In that format, `international_format` is used instead of `format`\r\n\t\t\t// because `format` inserts `15` in the formatted number,\r\n\t\t\t// and `AsYouType` formatter should only use the digits\r\n\t\t\t// the user has actually input, without adding any extra digits.\r\n\t\t\t// In this case, it wouldn't make a difference, because the `15`\r\n\t\t\t// is first stripped when applying `national_prefix_for_parsing`\r\n\t\t\t// and then re-added when using `format`, so in reality it doesn't\r\n\t\t\t// add any new digits to the number, but to detect that, the code\r\n\t\t\t// would have to be more complex: it would have to try formatting\r\n\t\t\t// the digits using the format and then see if any digits have\r\n\t\t\t// actually been added or removed, and then, every time a new digit\r\n\t\t\t// is input, it should re-check whether the chosen format doesn't\r\n\t\t\t// alter the digits.\r\n\t\t\t//\r\n\t\t\t// Google's code doesn't go that far, and so does this library:\r\n\t\t\t// it simply requires that a `format` doesn't add any additonal\r\n\t\t\t// digits to user's input.\r\n\t\t\t//\r\n\t\t\t// Also, people in general should move from inputting phone numbers\r\n\t\t\t// in national format (possibly with national prefixes)\r\n\t\t\t// and use international phone number format instead:\r\n\t\t\t// it's a logical thing in the modern age of mobile phones,\r\n\t\t\t// globalization and the internet.\r\n\t\t\t//\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (!NON_ALTERING_FORMAT_REG_EXP.test(this.getFormatFormat(format, state.international))) {\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\t\t\tif (!this.createTemplateForFormat(format, state)) {\r\n\t\t\t\t// Remove the format if it can't generate a template.\r\n\t\t\t\tthis.matchingFormats = this.matchingFormats.filter(_ => _ !== format)\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\t\t\tthis.chosenFormat = format\r\n\t\t\tbreak\r\n\t\t}\r\n\t\tif (!this.chosenFormat) {\r\n\t\t\t// No format matches the national (significant) phone number.\r\n\t\t\tthis.resetFormat()\r\n\t\t}\r\n\t\treturn this.chosenFormat\r\n\t}\r\n\r\n\tcreateTemplateForFormat(format, state) {\r\n\t\t// The formatter doesn't format numbers when numberPattern contains '|', e.g.\r\n\t\t// (20|3)\\d{4}. In those cases we quickly return.\r\n\t\t// (Though there's no such format in current metadata)\r\n\t\t/* istanbul ignore if */\r\n\t\tif (SUPPORT_LEGACY_FORMATTING_PATTERNS && format.pattern().indexOf('|') >= 0) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// Get formatting template for this phone number format\r\n\t\tconst template = this.getTemplateForFormat(format, state)\r\n\t\t// If the national number entered is too long\r\n\t\t// for any phone number format, then abort.\r\n\t\tif (template) {\r\n\t\t\tthis.setNationalNumberTemplate(template, state)\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\tgetSeparatorAfterNationalPrefix(format) {\r\n\t\t// `US` metadata doesn't have a `national_prefix_formatting_rule`,\r\n\t\t// so the `if` condition below doesn't apply to `US`,\r\n\t\t// but in reality there shoudl be a separator\r\n\t\t// between a national prefix and a national (significant) number.\r\n\t\t// So `US` national prefix separator is a \"special\" \"hardcoded\" case.\r\n\t\tif (this.isNANP) {\r\n\t\t\treturn ' '\r\n\t\t}\r\n\t\t// If a `format` has a `national_prefix_formatting_rule`\r\n\t\t// and that rule has a separator after a national prefix,\r\n\t\t// then it means that there should be a separator\r\n\t\t// between a national prefix and a national (significant) number.\r\n\t\tif (format &&\r\n\t\t\tformat.nationalPrefixFormattingRule() &&\r\n\t\t\tNATIONAL_PREFIX_SEPARATORS_PATTERN.test(format.nationalPrefixFormattingRule())) {\r\n\t\t\treturn ' '\r\n\t\t}\r\n\t\t// At this point, there seems to be no clear evidence that\r\n\t\t// there should be a separator between a national prefix\r\n\t\t// and a national (significant) number. So don't insert one.\r\n\t\treturn ''\r\n\t}\r\n\r\n\tgetInternationalPrefixBeforeCountryCallingCode({ IDDPrefix, missingPlus }, options) {\r\n\t\tif (IDDPrefix) {\r\n\t\t\treturn options && options.spacing === false ? IDDPrefix : IDDPrefix + ' '\r\n\t\t}\r\n\t\tif (missingPlus) {\r\n\t\t\treturn ''\r\n\t\t}\r\n\t\treturn '+'\r\n\t}\r\n\r\n\tgetTemplate(state) {\r\n\t\tif (!this.template) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// `this.template` holds the template for a \"complete\" phone number.\r\n\t\t// The currently entered phone number is most likely not \"complete\",\r\n\t\t// so trim all non-populated digits.\r\n\t\tlet index = -1\r\n\t\tlet i = 0\r\n\t\tconst internationalPrefix = state.international ? this.getInternationalPrefixBeforeCountryCallingCode(state, { spacing: false }) : ''\r\n\t\twhile (i < internationalPrefix.length + state.getDigitsWithoutInternationalPrefix().length) {\r\n\t\t\tindex = this.template.indexOf(DIGIT_PLACEHOLDER, index + 1)\r\n\t\t\ti++\r\n\t\t}\r\n\t\treturn cutAndStripNonPairedParens(this.template, index + 1)\r\n\t}\r\n\r\n\tsetNationalNumberTemplate(template, state) {\r\n\t\tthis.nationalNumberTemplate = template\r\n\t\tthis.populatedNationalNumberTemplate = template\r\n\t\t// With a new formatting template, the matched position\r\n\t\t// using the old template needs to be reset.\r\n\t\tthis.populatedNationalNumberTemplatePosition = -1\r\n\t\t// For convenience, the public `.template` property\r\n\t\t// contains the whole international number\r\n\t\t// if the phone number being input is international:\r\n\t\t// 'x' for the '+' sign, 'x'es for the country phone code,\r\n\t\t// a spacebar and then the template for the formatted national number.\r\n\t\tif (state.international) {\r\n\t\t\tthis.template =\r\n\t\t\t\tthis.getInternationalPrefixBeforeCountryCallingCode(state).replace(/[\\d\\+]/g, DIGIT_PLACEHOLDER) +\r\n\t\t\t\trepeat(DIGIT_PLACEHOLDER, state.callingCode.length) +\r\n\t\t\t\t' ' +\r\n\t\t\t\ttemplate\r\n\t\t} else {\r\n\t\t\tthis.template = template\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Generates formatting template for a national phone number,\r\n\t * optionally containing a national prefix, for a format.\r\n\t * @param {Format} format\r\n\t * @param {string} nationalPrefix\r\n\t * @return {string}\r\n\t */\r\n\tgetTemplateForFormat(format, {\r\n\t\tnationalSignificantNumber,\r\n\t\tinternational,\r\n\t\tnationalPrefix,\r\n\t\tcomplexPrefixBeforeNationalSignificantNumber\r\n\t}) {\r\n\t\tlet pattern = format.pattern()\r\n\r\n\t\t/* istanbul ignore else */\r\n\t\tif (SUPPORT_LEGACY_FORMATTING_PATTERNS) {\r\n\t\t\tpattern = pattern\r\n\t\t\t\t// Replace anything in the form of [..] with \\d\r\n\t\t\t\t.replace(CREATE_CHARACTER_CLASS_PATTERN(), '\\\\d')\r\n\t\t\t\t// Replace any standalone digit (not the one in `{}`) with \\d\r\n\t\t\t\t.replace(CREATE_STANDALONE_DIGIT_PATTERN(), '\\\\d')\r\n\t\t}\r\n\r\n\t\t// Generate a dummy national number (consisting of `9`s)\r\n\t\t// that fits this format's `pattern`.\r\n\t\t//\r\n\t\t// This match will always succeed,\r\n\t\t// because the \"longest dummy phone number\"\r\n\t\t// has enough length to accomodate any possible\r\n\t\t// national phone number format pattern.\r\n\t\t//\r\n\t\tlet digits = LONGEST_DUMMY_PHONE_NUMBER.match(pattern)[0]\r\n\r\n\t\t// If the national number entered is too long\r\n\t\t// for any phone number format, then abort.\r\n\t\tif (nationalSignificantNumber.length > digits.length) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// Get a formatting template which can be used to efficiently format\r\n\t\t// a partial number where digits are added one by one.\r\n\r\n\t\t// Below `strictPattern` is used for the\r\n\t\t// regular expression (with `^` and `$`).\r\n\t\t// This wasn't originally in Google's `libphonenumber`\r\n\t\t// and I guess they don't really need it\r\n\t\t// because they're not using \"templates\" to format phone numbers\r\n\t\t// but I added `strictPattern` after encountering\r\n\t\t// South Korean phone number formatting bug.\r\n\t\t//\r\n\t\t// Non-strict regular expression bug demonstration:\r\n\t\t//\r\n\t\t// this.nationalSignificantNumber : `111111111` (9 digits)\r\n\t\t//\r\n\t\t// pattern : (\\d{2})(\\d{3,4})(\\d{4})\r\n\t\t// format : `$1 $2 $3`\r\n\t\t// digits : `9999999999` (10 digits)\r\n\t\t//\r\n\t\t// '9999999999'.replace(new RegExp(/(\\d{2})(\\d{3,4})(\\d{4})/g), '$1 $2 $3') = \"99 9999 9999\"\r\n\t\t//\r\n\t\t// template : xx xxxx xxxx\r\n\t\t//\r\n\t\t// But the correct template in this case is `xx xxx xxxx`.\r\n\t\t// The template was generated incorrectly because of the\r\n\t\t// `{3,4}` variability in the `pattern`.\r\n\t\t//\r\n\t\t// The fix is, if `this.nationalSignificantNumber` has already sufficient length\r\n\t\t// to satisfy the `pattern` completely then `this.nationalSignificantNumber`\r\n\t\t// is used instead of `digits`.\r\n\r\n\t\tconst strictPattern = new RegExp('^' + pattern + '$')\r\n\t\tconst nationalNumberDummyDigits = nationalSignificantNumber.replace(/\\d/g, DUMMY_DIGIT)\r\n\r\n\t\t// If `this.nationalSignificantNumber` has already sufficient length\r\n\t\t// to satisfy the `pattern` completely then use it\r\n\t\t// instead of `digits`.\r\n\t\tif (strictPattern.test(nationalNumberDummyDigits)) {\r\n\t\t\tdigits = nationalNumberDummyDigits\r\n\t\t}\r\n\r\n\t\tlet numberFormat = this.getFormatFormat(format, international)\r\n\t\tlet nationalPrefixIncludedInTemplate\r\n\r\n\t\t// If a user did input a national prefix (and that's guaranteed),\r\n\t\t// and if a `format` does have a national prefix formatting rule,\r\n\t\t// then see if that national prefix formatting rule\r\n\t\t// prepends exactly the same national prefix the user has input.\r\n\t\t// If that's the case, then use the `format` with the national prefix formatting rule.\r\n\t\t// Otherwise, use the `format` without the national prefix formatting rule,\r\n\t\t// and prepend a national prefix manually to it.\r\n\t\tif (this.shouldTryNationalPrefixFormattingRule(format, { international, nationalPrefix })) {\r\n\t\t\tconst numberFormatWithNationalPrefix = numberFormat.replace(\r\n\t\t\t\tFIRST_GROUP_PATTERN,\r\n\t\t\t\tformat.nationalPrefixFormattingRule()\r\n\t\t\t)\r\n\t\t\t// If `national_prefix_formatting_rule` of a `format` simply prepends\r\n\t\t\t// national prefix at the start of a national (significant) number,\r\n\t\t\t// then such formatting can be used with `AsYouType` formatter.\r\n\t\t\t// There seems to be no `else` case: everywhere in metadata,\r\n\t\t\t// national prefix formatting rule is national prefix + $1,\r\n\t\t\t// or `($1)`, in which case such format isn't even considered\r\n\t\t\t// when the user has input a national prefix.\r\n\t\t\t/* istanbul ignore else */\r\n\t\t\tif (parseDigits(format.nationalPrefixFormattingRule()) === (nationalPrefix || '') + parseDigits('$1')) {\r\n\t\t\t\tnumberFormat = numberFormatWithNationalPrefix\r\n\t\t\t\tnationalPrefixIncludedInTemplate = true\r\n\t\t\t\t// Replace all digits of the national prefix in the formatting template\r\n\t\t\t\t// with `DIGIT_PLACEHOLDER`s.\r\n\t\t\t\tif (nationalPrefix) {\r\n\t\t\t\t\tlet i = nationalPrefix.length\r\n\t\t\t\t\twhile (i > 0) {\r\n\t\t\t\t\t\tnumberFormat = numberFormat.replace(/\\d/, DIGIT_PLACEHOLDER)\r\n\t\t\t\t\t\ti--\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Generate formatting template for this phone number format.\r\n\t\tlet template = digits\r\n\t\t\t// Format the dummy phone number according to the format.\r\n\t\t\t.replace(new RegExp(pattern), numberFormat)\r\n\t\t\t// Replace each dummy digit with a DIGIT_PLACEHOLDER.\r\n\t\t\t.replace(new RegExp(DUMMY_DIGIT, 'g'), DIGIT_PLACEHOLDER)\r\n\r\n\t\t// If a prefix of a national (significant) number is not as simple\r\n\t\t// as just a basic national prefix, then just prepend such prefix\r\n\t\t// before the national (significant) number, optionally spacing\r\n\t\t// the two with a whitespace.\r\n\t\tif (!nationalPrefixIncludedInTemplate) {\r\n\t\t\tif (complexPrefixBeforeNationalSignificantNumber) {\r\n\t\t\t\t// Prepend the prefix to the template manually.\r\n\t\t\t\ttemplate = repeat(DIGIT_PLACEHOLDER, complexPrefixBeforeNationalSignificantNumber.length) +\r\n\t\t\t\t\t' ' +\r\n\t\t\t\t\ttemplate\r\n\t\t\t} else if (nationalPrefix) {\r\n\t\t\t\t// Prepend national prefix to the template manually.\r\n\t\t\t\ttemplate = repeat(DIGIT_PLACEHOLDER, nationalPrefix.length) +\r\n\t\t\t\t\tthis.getSeparatorAfterNationalPrefix(format) +\r\n\t\t\t\t\ttemplate\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (international) {\r\n\t\t\ttemplate = applyInternationalSeparatorStyle(template)\r\n\t\t}\r\n\r\n\t\treturn template\r\n\t}\r\n\r\n\tformatNextNationalNumberDigits(digits) {\r\n\t\tconst result = populateTemplateWithDigits(\r\n\t\t\tthis.populatedNationalNumberTemplate,\r\n\t\t\tthis.populatedNationalNumberTemplatePosition,\r\n\t\t\tdigits\r\n\t\t)\r\n\r\n\t\tif (!result) {\r\n\t\t\t// Reset the format.\r\n\t\t\tthis.resetFormat()\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tthis.populatedNationalNumberTemplate = result[0]\r\n\t\tthis.populatedNationalNumberTemplatePosition = result[1]\r\n\r\n\t\t// Return the formatted phone number so far.\r\n\t\treturn cutAndStripNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1)\r\n\r\n\t\t// The old way which was good for `input-format` but is not so good\r\n\t\t// for `react-phone-number-input`'s default input (`InputBasic`).\r\n\t\t// return closeNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1)\r\n\t\t// \t.replace(new RegExp(DIGIT_PLACEHOLDER, 'g'), ' ')\r\n\t}\r\n\r\n\tshouldTryNationalPrefixFormattingRule(format, { international, nationalPrefix }) {\r\n\t\tif (format.nationalPrefixFormattingRule()) {\r\n\t\t\t// In some countries, `national_prefix_formatting_rule` is `($1)`,\r\n\t\t\t// so it applies even if the user hasn't input a national prefix.\r\n\t\t\t// `format.usesNationalPrefix()` detects such cases.\r\n\t\t\tconst usesNationalPrefix = format.usesNationalPrefix()\r\n\t\t\tif ((usesNationalPrefix && nationalPrefix) ||\r\n\t\t\t\t(!usesNationalPrefix && !international)) {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.util.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.util.js new file mode 100644 index 00000000..75400ee2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.util.js @@ -0,0 +1,141 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DIGIT_PLACEHOLDER = void 0; +exports.closeNonPairedParens = closeNonPairedParens; +exports.countOccurences = countOccurences; +exports.cutAndStripNonPairedParens = cutAndStripNonPairedParens; +exports.populateTemplateWithDigits = populateTemplateWithDigits; +exports.repeat = repeat; +exports.stripNonPairedParens = stripNonPairedParens; + +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +// Should be the same as `DIGIT_PLACEHOLDER` in `libphonenumber-metadata-generator`. +var DIGIT_PLACEHOLDER = 'x'; // '\u2008' (punctuation space) + +exports.DIGIT_PLACEHOLDER = DIGIT_PLACEHOLDER; +var DIGIT_PLACEHOLDER_MATCHER = new RegExp(DIGIT_PLACEHOLDER); // Counts all occurences of a symbol in a string. +// Unicode-unsafe (because using `.split()`). + +function countOccurences(symbol, string) { + var count = 0; // Using `.split('')` to iterate through a string here + // to avoid requiring `Symbol.iterator` polyfill. + // `.split('')` is generally not safe for Unicode, + // but in this particular case for counting brackets it is safe. + // for (const character of string) + + for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) { + var character = _step.value; + + if (character === symbol) { + count++; + } + } + + return count; +} // Repeats a string (or a symbol) N times. +// http://stackoverflow.com/questions/202605/repeat-string-javascript + + +function repeat(string, times) { + if (times < 1) { + return ''; + } + + var result = ''; + + while (times > 1) { + if (times & 1) { + result += string; + } + + times >>= 1; + string += string; + } + + return result + string; +} + +function cutAndStripNonPairedParens(string, cutBeforeIndex) { + if (string[cutBeforeIndex] === ')') { + cutBeforeIndex++; + } + + return stripNonPairedParens(string.slice(0, cutBeforeIndex)); +} + +function closeNonPairedParens(template, cut_before) { + var retained_template = template.slice(0, cut_before); + var opening_braces = countOccurences('(', retained_template); + var closing_braces = countOccurences(')', retained_template); + var dangling_braces = opening_braces - closing_braces; + + while (dangling_braces > 0 && cut_before < template.length) { + if (template[cut_before] === ')') { + dangling_braces--; + } + + cut_before++; + } + + return template.slice(0, cut_before); +} + +function stripNonPairedParens(string) { + var dangling_braces = []; + var i = 0; + + while (i < string.length) { + if (string[i] === '(') { + dangling_braces.push(i); + } else if (string[i] === ')') { + dangling_braces.pop(); + } + + i++; + } + + var start = 0; + var cleared_string = ''; + dangling_braces.push(string.length); + + for (var _i = 0, _dangling_braces = dangling_braces; _i < _dangling_braces.length; _i++) { + var index = _dangling_braces[_i]; + cleared_string += string.slice(start, index); + start = index + 1; + } + + return cleared_string; +} + +function populateTemplateWithDigits(template, position, digits) { + // Using `.split('')` to iterate through a string here + // to avoid requiring `Symbol.iterator` polyfill. + // `.split('')` is generally not safe for Unicode, + // but in this particular case for `digits` it is safe. + // for (const digit of digits) + for (var _iterator2 = _createForOfIteratorHelperLoose(digits.split('')), _step2; !(_step2 = _iterator2()).done;) { + var digit = _step2.value; + + // If there is room for more digits in current `template`, + // then set the next digit in the `template`, + // and return the formatted digits so far. + // If more digits are entered than the current format could handle. + if (template.slice(position + 1).search(DIGIT_PLACEHOLDER_MATCHER) < 0) { + return; + } + + position = template.search(DIGIT_PLACEHOLDER_MATCHER); + template = template.replace(DIGIT_PLACEHOLDER_MATCHER, digit); + } + + return [template, position]; +} +//# sourceMappingURL=AsYouTypeFormatter.util.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.util.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.util.js.map new file mode 100644 index 00000000..2f4df121 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsYouTypeFormatter.util.js","names":["DIGIT_PLACEHOLDER","DIGIT_PLACEHOLDER_MATCHER","RegExp","countOccurences","symbol","string","count","split","character","repeat","times","result","cutAndStripNonPairedParens","cutBeforeIndex","stripNonPairedParens","slice","closeNonPairedParens","template","cut_before","retained_template","opening_braces","closing_braces","dangling_braces","length","i","push","pop","start","cleared_string","index","populateTemplateWithDigits","position","digits","digit","search","replace"],"sources":["../source/AsYouTypeFormatter.util.js"],"sourcesContent":["// Should be the same as `DIGIT_PLACEHOLDER` in `libphonenumber-metadata-generator`.\r\nexport const DIGIT_PLACEHOLDER = 'x' // '\\u2008' (punctuation space)\r\nconst DIGIT_PLACEHOLDER_MATCHER = new RegExp(DIGIT_PLACEHOLDER)\r\n\r\n// Counts all occurences of a symbol in a string.\r\n// Unicode-unsafe (because using `.split()`).\r\nexport function countOccurences(symbol, string) {\r\n\tlet count = 0\r\n\t// Using `.split('')` to iterate through a string here\r\n\t// to avoid requiring `Symbol.iterator` polyfill.\r\n\t// `.split('')` is generally not safe for Unicode,\r\n\t// but in this particular case for counting brackets it is safe.\r\n\t// for (const character of string)\r\n\tfor (const character of string.split('')) {\r\n\t\tif (character === symbol) {\r\n\t\t\tcount++\r\n\t\t}\r\n\t}\r\n\treturn count\r\n}\r\n\r\n// Repeats a string (or a symbol) N times.\r\n// http://stackoverflow.com/questions/202605/repeat-string-javascript\r\nexport function repeat(string, times) {\r\n\tif (times < 1) {\r\n\t\treturn ''\r\n\t}\r\n\tlet result = ''\r\n\twhile (times > 1) {\r\n\t\tif (times & 1) {\r\n\t\t\tresult += string\r\n\t\t}\r\n\t\ttimes >>= 1\r\n\t\tstring += string\r\n\t}\r\n\treturn result + string\r\n}\r\n\r\nexport function cutAndStripNonPairedParens(string, cutBeforeIndex) {\r\n\tif (string[cutBeforeIndex] === ')') {\r\n\t\tcutBeforeIndex++\r\n\t}\r\n\treturn stripNonPairedParens(string.slice(0, cutBeforeIndex))\r\n}\r\n\r\nexport function closeNonPairedParens(template, cut_before) {\r\n\tconst retained_template = template.slice(0, cut_before)\r\n\tconst opening_braces = countOccurences('(', retained_template)\r\n\tconst closing_braces = countOccurences(')', retained_template)\r\n\tlet dangling_braces = opening_braces - closing_braces\r\n\twhile (dangling_braces > 0 && cut_before < template.length) {\r\n\t\tif (template[cut_before] === ')') {\r\n\t\t\tdangling_braces--\r\n\t\t}\r\n\t\tcut_before++\r\n\t}\r\n\treturn template.slice(0, cut_before)\r\n}\r\n\r\nexport function stripNonPairedParens(string) {\r\n\tconst dangling_braces =[]\r\n\tlet i = 0\r\n\twhile (i < string.length) {\r\n\t\tif (string[i] === '(') {\r\n\t\t\tdangling_braces.push(i)\r\n\t\t}\r\n\t\telse if (string[i] === ')') {\r\n\t\t\tdangling_braces.pop()\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\tlet start = 0\r\n\tlet cleared_string = ''\r\n\tdangling_braces.push(string.length)\r\n\tfor (const index of dangling_braces) {\r\n\t\tcleared_string += string.slice(start, index)\r\n\t\tstart = index + 1\r\n\t}\r\n\treturn cleared_string\r\n}\r\n\r\nexport function populateTemplateWithDigits(template, position, digits) {\r\n\t// Using `.split('')` to iterate through a string here\r\n\t// to avoid requiring `Symbol.iterator` polyfill.\r\n\t// `.split('')` is generally not safe for Unicode,\r\n\t// but in this particular case for `digits` it is safe.\r\n\t// for (const digit of digits)\r\n\tfor (const digit of digits.split('')) {\r\n\t\t// If there is room for more digits in current `template`,\r\n\t\t// then set the next digit in the `template`,\r\n\t\t// and return the formatted digits so far.\r\n\t\t// If more digits are entered than the current format could handle.\r\n\t\tif (template.slice(position + 1).search(DIGIT_PLACEHOLDER_MATCHER) < 0) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tposition = template.search(DIGIT_PLACEHOLDER_MATCHER)\r\n\t\ttemplate = template.replace(DIGIT_PLACEHOLDER_MATCHER, digit)\r\n\t}\r\n\treturn [template, position]\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.util.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.util.test.js new file mode 100644 index 00000000..b5c00a18 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.util.test.js @@ -0,0 +1,23 @@ +"use strict"; + +var _AsYouTypeFormatterUtil = require("./AsYouTypeFormatter.util.js"); + +describe('closeNonPairedParens', function () { + it('should close non-paired braces', function () { + (0, _AsYouTypeFormatterUtil.closeNonPairedParens)('(000) 123-45 (9 )', 15).should.equal('(000) 123-45 (9 )'); + }); +}); +describe('stripNonPairedParens', function () { + it('should strip non-paired braces', function () { + (0, _AsYouTypeFormatterUtil.stripNonPairedParens)('(000) 123-45 (9').should.equal('(000) 123-45 9'); + (0, _AsYouTypeFormatterUtil.stripNonPairedParens)('(000) 123-45 (9)').should.equal('(000) 123-45 (9)'); + }); +}); +describe('repeat', function () { + it('should repeat string N times', function () { + (0, _AsYouTypeFormatterUtil.repeat)('a', 0).should.equal(''); + (0, _AsYouTypeFormatterUtil.repeat)('a', 3).should.equal('aaa'); + (0, _AsYouTypeFormatterUtil.repeat)('a', 4).should.equal('aaaa'); + }); +}); +//# sourceMappingURL=AsYouTypeFormatter.util.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.util.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.util.test.js.map new file mode 100644 index 00000000..cc4145bf --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeFormatter.util.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsYouTypeFormatter.util.test.js","names":["describe","it","closeNonPairedParens","should","equal","stripNonPairedParens","repeat"],"sources":["../source/AsYouTypeFormatter.util.test.js"],"sourcesContent":["import { closeNonPairedParens, stripNonPairedParens, repeat } from './AsYouTypeFormatter.util.js'\r\n\r\ndescribe('closeNonPairedParens', () => {\r\n\tit('should close non-paired braces', () => {\r\n\t\tcloseNonPairedParens('(000) 123-45 (9 )', 15).should.equal('(000) 123-45 (9 )')\r\n\t})\r\n})\r\n\r\ndescribe('stripNonPairedParens', () => {\r\n\tit('should strip non-paired braces', () => {\r\n\t\tstripNonPairedParens('(000) 123-45 (9').should.equal('(000) 123-45 9')\r\n\t\tstripNonPairedParens('(000) 123-45 (9)').should.equal('(000) 123-45 (9)')\r\n\t})\r\n})\r\n\r\ndescribe('repeat', () => {\r\n\tit('should repeat string N times', () => {\r\n\t\trepeat('a', 0).should.equal('')\r\n\t\trepeat('a', 3).should.equal('aaa')\r\n\t\trepeat('a', 4).should.equal('aaaa')\r\n\t})\r\n})"],"mappings":";;AAAA;;AAEAA,QAAQ,CAAC,sBAAD,EAAyB,YAAM;EACtCC,EAAE,CAAC,gCAAD,EAAmC,YAAM;IAC1C,IAAAC,4CAAA,EAAqB,oBAArB,EAA2C,EAA3C,EAA+CC,MAA/C,CAAsDC,KAAtD,CAA4D,oBAA5D;EACA,CAFC,CAAF;AAGA,CAJO,CAAR;AAMAJ,QAAQ,CAAC,sBAAD,EAAyB,YAAM;EACtCC,EAAE,CAAC,gCAAD,EAAmC,YAAM;IAC1C,IAAAI,4CAAA,EAAqB,iBAArB,EAAwCF,MAAxC,CAA+CC,KAA/C,CAAqD,gBAArD;IACA,IAAAC,4CAAA,EAAqB,kBAArB,EAAyCF,MAAzC,CAAgDC,KAAhD,CAAsD,kBAAtD;EACA,CAHC,CAAF;AAIA,CALO,CAAR;AAOAJ,QAAQ,CAAC,QAAD,EAAW,YAAM;EACxBC,EAAE,CAAC,8BAAD,EAAiC,YAAM;IACxC,IAAAK,8BAAA,EAAO,GAAP,EAAY,CAAZ,EAAeH,MAAf,CAAsBC,KAAtB,CAA4B,EAA5B;IACA,IAAAE,8BAAA,EAAO,GAAP,EAAY,CAAZ,EAAeH,MAAf,CAAsBC,KAAtB,CAA4B,KAA5B;IACA,IAAAE,8BAAA,EAAO,GAAP,EAAY,CAAZ,EAAeH,MAAf,CAAsBC,KAAtB,CAA4B,MAA5B;EACA,CAJC,CAAF;AAKA,CANO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeParser.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeParser.js new file mode 100644 index 00000000..707f4c85 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeParser.js @@ -0,0 +1,524 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +exports.extractFormattedDigitsAndPlus = extractFormattedDigitsAndPlus; + +var _extractCountryCallingCode2 = _interopRequireDefault(require("./helpers/extractCountryCallingCode.js")); + +var _extractCountryCallingCodeFromInternationalNumberWithoutPlusSign = _interopRequireDefault(require("./helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js")); + +var _extractNationalNumberFromPossiblyIncompleteNumber = _interopRequireDefault(require("./helpers/extractNationalNumberFromPossiblyIncompleteNumber.js")); + +var _stripIddPrefix = _interopRequireDefault(require("./helpers/stripIddPrefix.js")); + +var _parseDigits = _interopRequireDefault(require("./helpers/parseDigits.js")); + +var _constants = require("./constants.js"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +var VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART = '[' + _constants.VALID_PUNCTUATION + _constants.VALID_DIGITS + ']+'; +var VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN = new RegExp('^' + VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART + '$', 'i'); +var VALID_FORMATTED_PHONE_NUMBER_PART = '(?:' + '[' + _constants.PLUS_CHARS + ']' + '[' + _constants.VALID_PUNCTUATION + _constants.VALID_DIGITS + ']*' + '|' + '[' + _constants.VALID_PUNCTUATION + _constants.VALID_DIGITS + ']+' + ')'; +var AFTER_PHONE_NUMBER_DIGITS_END_PATTERN = new RegExp('[^' + _constants.VALID_PUNCTUATION + _constants.VALID_DIGITS + ']+' + '.*' + '$'); // Tests whether `national_prefix_for_parsing` could match +// different national prefixes. +// Matches anything that's not a digit or a square bracket. + +var COMPLEX_NATIONAL_PREFIX = /[^\d\[\]]/; + +var AsYouTypeParser = /*#__PURE__*/function () { + function AsYouTypeParser(_ref) { + var defaultCountry = _ref.defaultCountry, + defaultCallingCode = _ref.defaultCallingCode, + metadata = _ref.metadata, + onNationalSignificantNumberChange = _ref.onNationalSignificantNumberChange; + + _classCallCheck(this, AsYouTypeParser); + + this.defaultCountry = defaultCountry; + this.defaultCallingCode = defaultCallingCode; + this.metadata = metadata; + this.onNationalSignificantNumberChange = onNationalSignificantNumberChange; + } + + _createClass(AsYouTypeParser, [{ + key: "input", + value: function input(text, state) { + var _extractFormattedDigi = extractFormattedDigitsAndPlus(text), + _extractFormattedDigi2 = _slicedToArray(_extractFormattedDigi, 2), + formattedDigits = _extractFormattedDigi2[0], + hasPlus = _extractFormattedDigi2[1]; + + var digits = (0, _parseDigits["default"])(formattedDigits); // Checks for a special case: just a leading `+` has been entered. + + var justLeadingPlus; + + if (hasPlus) { + if (!state.digits) { + state.startInternationalNumber(); + + if (!digits) { + justLeadingPlus = true; + } + } + } + + if (digits) { + this.inputDigits(digits, state); + } + + return { + digits: digits, + justLeadingPlus: justLeadingPlus + }; + } + /** + * Inputs "next" phone number digits. + * @param {string} digits + * @return {string} [formattedNumber] Formatted national phone number (if it can be formatted at this stage). Returning `undefined` means "don't format the national phone number at this stage". + */ + + }, { + key: "inputDigits", + value: function inputDigits(nextDigits, state) { + var digits = state.digits; + var hasReceivedThreeLeadingDigits = digits.length < 3 && digits.length + nextDigits.length >= 3; // Append phone number digits. + + state.appendDigits(nextDigits); // Attempt to extract IDD prefix: + // Some users input their phone number in international format, + // but in an "out-of-country" dialing format instead of using the leading `+`. + // https://github.com/catamphetamine/libphonenumber-js/issues/185 + // Detect such numbers as soon as there're at least 3 digits. + // Google's library attempts to extract IDD prefix at 3 digits, + // so this library just copies that behavior. + // I guess that's because the most commot IDD prefixes are + // `00` (Europe) and `011` (US). + // There exist really long IDD prefixes too: + // for example, in Australia the default IDD prefix is `0011`, + // and it could even be as long as `14880011`. + // An IDD prefix is extracted here, and then every time when + // there's a new digit and the number couldn't be formatted. + + if (hasReceivedThreeLeadingDigits) { + this.extractIddPrefix(state); + } + + if (this.isWaitingForCountryCallingCode(state)) { + if (!this.extractCountryCallingCode(state)) { + return; + } + } else { + state.appendNationalSignificantNumberDigits(nextDigits); + } // If a phone number is being input in international format, + // then it's not valid for it to have a national prefix. + // Still, some people incorrectly input such numbers with a national prefix. + // In such cases, only attempt to strip a national prefix if the number becomes too long. + // (but that is done later, not here) + + + if (!state.international) { + if (!this.hasExtractedNationalSignificantNumber) { + this.extractNationalSignificantNumber(state.getNationalDigits(), function (stateUpdate) { + return state.update(stateUpdate); + }); + } + } + } + }, { + key: "isWaitingForCountryCallingCode", + value: function isWaitingForCountryCallingCode(_ref2) { + var international = _ref2.international, + callingCode = _ref2.callingCode; + return international && !callingCode; + } // Extracts a country calling code from a number + // being entered in internatonal format. + + }, { + key: "extractCountryCallingCode", + value: function extractCountryCallingCode(state) { + var _extractCountryCallin = (0, _extractCountryCallingCode2["default"])('+' + state.getDigitsWithoutInternationalPrefix(), this.defaultCountry, this.defaultCallingCode, this.metadata.metadata), + countryCallingCode = _extractCountryCallin.countryCallingCode, + number = _extractCountryCallin.number; + + if (countryCallingCode) { + state.setCallingCode(countryCallingCode); + state.update({ + nationalSignificantNumber: number + }); + return true; + } + } + }, { + key: "reset", + value: function reset(numberingPlan) { + if (numberingPlan) { + this.hasSelectedNumberingPlan = true; + + var nationalPrefixForParsing = numberingPlan._nationalPrefixForParsing(); + + this.couldPossiblyExtractAnotherNationalSignificantNumber = nationalPrefixForParsing && COMPLEX_NATIONAL_PREFIX.test(nationalPrefixForParsing); + } else { + this.hasSelectedNumberingPlan = undefined; + this.couldPossiblyExtractAnotherNationalSignificantNumber = undefined; + } + } + /** + * Extracts a national (significant) number from user input. + * Google's library is different in that it only applies `national_prefix_for_parsing` + * and doesn't apply `national_prefix_transform_rule` after that. + * https://github.com/google/libphonenumber/blob/a3d70b0487875475e6ad659af404943211d26456/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L539 + * @return {boolean} [extracted] + */ + + }, { + key: "extractNationalSignificantNumber", + value: function extractNationalSignificantNumber(nationalDigits, setState) { + if (!this.hasSelectedNumberingPlan) { + return; + } + + var _extractNationalNumbe = (0, _extractNationalNumberFromPossiblyIncompleteNumber["default"])(nationalDigits, this.metadata), + nationalPrefix = _extractNationalNumbe.nationalPrefix, + nationalNumber = _extractNationalNumbe.nationalNumber, + carrierCode = _extractNationalNumbe.carrierCode; + + if (nationalNumber === nationalDigits) { + return; + } + + this.onExtractedNationalNumber(nationalPrefix, carrierCode, nationalNumber, nationalDigits, setState); + return true; + } + /** + * In Google's code this function is called "attempt to extract longer NDD". + * "Some national prefixes are a substring of others", they say. + * @return {boolean} [result] — Returns `true` if extracting a national prefix produced different results from what they were. + */ + + }, { + key: "extractAnotherNationalSignificantNumber", + value: function extractAnotherNationalSignificantNumber(nationalDigits, prevNationalSignificantNumber, setState) { + if (!this.hasExtractedNationalSignificantNumber) { + return this.extractNationalSignificantNumber(nationalDigits, setState); + } + + if (!this.couldPossiblyExtractAnotherNationalSignificantNumber) { + return; + } + + var _extractNationalNumbe2 = (0, _extractNationalNumberFromPossiblyIncompleteNumber["default"])(nationalDigits, this.metadata), + nationalPrefix = _extractNationalNumbe2.nationalPrefix, + nationalNumber = _extractNationalNumbe2.nationalNumber, + carrierCode = _extractNationalNumbe2.carrierCode; // If a national prefix has been extracted previously, + // then it's always extracted as additional digits are added. + // That's assuming `extractNationalNumberFromPossiblyIncompleteNumber()` + // doesn't do anything different from what it currently does. + // So, just in case, here's this check, though it doesn't occur. + + /* istanbul ignore if */ + + + if (nationalNumber === prevNationalSignificantNumber) { + return; + } + + this.onExtractedNationalNumber(nationalPrefix, carrierCode, nationalNumber, nationalDigits, setState); + return true; + } + }, { + key: "onExtractedNationalNumber", + value: function onExtractedNationalNumber(nationalPrefix, carrierCode, nationalSignificantNumber, nationalDigits, setState) { + var complexPrefixBeforeNationalSignificantNumber; + var nationalSignificantNumberMatchesInput; // This check also works with empty `this.nationalSignificantNumber`. + + var nationalSignificantNumberIndex = nationalDigits.lastIndexOf(nationalSignificantNumber); // If the extracted national (significant) number is the + // last substring of the `digits`, then it means that it hasn't been altered: + // no digits have been removed from the national (significant) number + // while applying `national_prefix_transform_rule`. + // https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule + + if (nationalSignificantNumberIndex >= 0 && nationalSignificantNumberIndex === nationalDigits.length - nationalSignificantNumber.length) { + nationalSignificantNumberMatchesInput = true; // If a prefix of a national (significant) number is not as simple + // as just a basic national prefix, then such prefix is stored in + // `this.complexPrefixBeforeNationalSignificantNumber` property and will be + // prepended "as is" to the national (significant) number to produce + // a formatted result. + + var prefixBeforeNationalNumber = nationalDigits.slice(0, nationalSignificantNumberIndex); // `prefixBeforeNationalNumber` is always non-empty, + // because `onExtractedNationalNumber()` isn't called + // when a national (significant) number hasn't been actually "extracted": + // when a national (significant) number is equal to the national part of `digits`, + // then `onExtractedNationalNumber()` doesn't get called. + + if (prefixBeforeNationalNumber !== nationalPrefix) { + complexPrefixBeforeNationalSignificantNumber = prefixBeforeNationalNumber; + } + } + + setState({ + nationalPrefix: nationalPrefix, + carrierCode: carrierCode, + nationalSignificantNumber: nationalSignificantNumber, + nationalSignificantNumberMatchesInput: nationalSignificantNumberMatchesInput, + complexPrefixBeforeNationalSignificantNumber: complexPrefixBeforeNationalSignificantNumber + }); // `onExtractedNationalNumber()` is only called when + // the national (significant) number actually did change. + + this.hasExtractedNationalSignificantNumber = true; + this.onNationalSignificantNumberChange(); + } + }, { + key: "reExtractNationalSignificantNumber", + value: function reExtractNationalSignificantNumber(state) { + // Attempt to extract a national prefix. + // + // Some people incorrectly input national prefix + // in an international phone number. + // For example, some people write British phone numbers as `+44(0)...`. + // + // Also, in some rare cases, it is valid for a national prefix + // to be a part of an international phone number. + // For example, mobile phone numbers in Mexico are supposed to be + // dialled internationally using a `1` national prefix, + // so the national prefix will be part of an international number. + // + // Quote from: + // https://www.mexperience.com/dialing-cell-phones-in-mexico/ + // + // "Dialing a Mexican cell phone from abroad + // When you are calling a cell phone number in Mexico from outside Mexico, + // it’s necessary to dial an additional “1” after Mexico’s country code + // (which is “52”) and before the area code. + // You also ignore the 045, and simply dial the area code and the + // cell phone’s number. + // + // If you don’t add the “1”, you’ll receive a recorded announcement + // asking you to redial using it. + // + // For example, if you are calling from the USA to a cell phone + // in Mexico City, you would dial +52 – 1 – 55 – 1234 5678. + // (Note that this is different to calling a land line in Mexico City + // from abroad, where the number dialed would be +52 – 55 – 1234 5678)". + // + // Google's demo output: + // https://libphonenumber.appspot.com/phonenumberparser?number=%2b5215512345678&country=MX + // + if (this.extractAnotherNationalSignificantNumber(state.getNationalDigits(), state.nationalSignificantNumber, function (stateUpdate) { + return state.update(stateUpdate); + })) { + return true; + } // If no format matches the phone number, then it could be + // "a really long IDD" (quote from a comment in Google's library). + // An IDD prefix is first extracted when the user has entered at least 3 digits, + // and then here — every time when there's a new digit and the number + // couldn't be formatted. + // For example, in Australia the default IDD prefix is `0011`, + // and it could even be as long as `14880011`. + // + // Could also check `!hasReceivedThreeLeadingDigits` here + // to filter out the case when this check duplicates the one + // already performed when there're 3 leading digits, + // but it's not a big deal, and in most cases there + // will be a suitable `format` when there're 3 leading digits. + // + + + if (this.extractIddPrefix(state)) { + this.extractCallingCodeAndNationalSignificantNumber(state); + return true; + } // Google's AsYouType formatter supports sort of an "autocorrection" feature + // when it "autocorrects" numbers that have been input for a country + // with that country's calling code. + // Such "autocorrection" feature looks weird, but different people have been requesting it: + // https://github.com/catamphetamine/libphonenumber-js/issues/376 + // https://github.com/catamphetamine/libphonenumber-js/issues/375 + // https://github.com/catamphetamine/libphonenumber-js/issues/316 + + + if (this.fixMissingPlus(state)) { + this.extractCallingCodeAndNationalSignificantNumber(state); + return true; + } + } + }, { + key: "extractIddPrefix", + value: function extractIddPrefix(state) { + // An IDD prefix can't be present in a number written with a `+`. + // Also, don't re-extract an IDD prefix if has already been extracted. + var international = state.international, + IDDPrefix = state.IDDPrefix, + digits = state.digits, + nationalSignificantNumber = state.nationalSignificantNumber; + + if (international || IDDPrefix) { + return; + } // Some users input their phone number in "out-of-country" + // dialing format instead of using the leading `+`. + // https://github.com/catamphetamine/libphonenumber-js/issues/185 + // Detect such numbers. + + + var numberWithoutIDD = (0, _stripIddPrefix["default"])(digits, this.defaultCountry, this.defaultCallingCode, this.metadata.metadata); + + if (numberWithoutIDD !== undefined && numberWithoutIDD !== digits) { + // If an IDD prefix was stripped then convert the IDD-prefixed number + // to international number for subsequent parsing. + state.update({ + IDDPrefix: digits.slice(0, digits.length - numberWithoutIDD.length) + }); + this.startInternationalNumber(state, { + country: undefined, + callingCode: undefined + }); + return true; + } + } + }, { + key: "fixMissingPlus", + value: function fixMissingPlus(state) { + if (!state.international) { + var _extractCountryCallin2 = (0, _extractCountryCallingCodeFromInternationalNumberWithoutPlusSign["default"])(state.digits, this.defaultCountry, this.defaultCallingCode, this.metadata.metadata), + newCallingCode = _extractCountryCallin2.countryCallingCode, + number = _extractCountryCallin2.number; + + if (newCallingCode) { + state.update({ + missingPlus: true + }); + this.startInternationalNumber(state, { + country: state.country, + callingCode: newCallingCode + }); + return true; + } + } + } + }, { + key: "startInternationalNumber", + value: function startInternationalNumber(state, _ref3) { + var country = _ref3.country, + callingCode = _ref3.callingCode; + state.startInternationalNumber(country, callingCode); // If a national (significant) number has been extracted before, reset it. + + if (state.nationalSignificantNumber) { + state.resetNationalSignificantNumber(); + this.onNationalSignificantNumberChange(); + this.hasExtractedNationalSignificantNumber = undefined; + } + } + }, { + key: "extractCallingCodeAndNationalSignificantNumber", + value: function extractCallingCodeAndNationalSignificantNumber(state) { + if (this.extractCountryCallingCode(state)) { + // `this.extractCallingCode()` is currently called when the number + // couldn't be formatted during the standard procedure. + // Normally, the national prefix would be re-extracted + // for an international number if such number couldn't be formatted, + // but since it's already not able to be formatted, + // there won't be yet another retry, so also extract national prefix here. + this.extractNationalSignificantNumber(state.getNationalDigits(), function (stateUpdate) { + return state.update(stateUpdate); + }); + } + } + }]); + + return AsYouTypeParser; +}(); +/** + * Extracts formatted phone number from text (if there's any). + * @param {string} text + * @return {string} [formattedPhoneNumber] + */ + + +exports["default"] = AsYouTypeParser; + +function extractFormattedPhoneNumber(text) { + // Attempt to extract a possible number from the string passed in. + var startsAt = text.search(VALID_FORMATTED_PHONE_NUMBER_PART); + + if (startsAt < 0) { + return; + } // Trim everything to the left of the phone number. + + + text = text.slice(startsAt); // Trim the `+`. + + var hasPlus; + + if (text[0] === '+') { + hasPlus = true; + text = text.slice('+'.length); + } // Trim everything to the right of the phone number. + + + text = text.replace(AFTER_PHONE_NUMBER_DIGITS_END_PATTERN, ''); // Re-add the previously trimmed `+`. + + if (hasPlus) { + text = '+' + text; + } + + return text; +} +/** + * Extracts formatted phone number digits (and a `+`) from text (if there're any). + * @param {string} text + * @return {any[]} + */ + + +function _extractFormattedDigitsAndPlus(text) { + // Extract a formatted phone number part from text. + var extractedNumber = extractFormattedPhoneNumber(text) || ''; // Trim a `+`. + + if (extractedNumber[0] === '+') { + return [extractedNumber.slice('+'.length), true]; + } + + return [extractedNumber]; +} +/** + * Extracts formatted phone number digits (and a `+`) from text (if there're any). + * @param {string} text + * @return {any[]} + */ + + +function extractFormattedDigitsAndPlus(text) { + var _extractFormattedDigi3 = _extractFormattedDigitsAndPlus(text), + _extractFormattedDigi4 = _slicedToArray(_extractFormattedDigi3, 2), + formattedDigits = _extractFormattedDigi4[0], + hasPlus = _extractFormattedDigi4[1]; // If the extracted phone number part + // can possibly be a part of some valid phone number + // then parse phone number characters from a formatted phone number. + + + if (!VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN.test(formattedDigits)) { + formattedDigits = ''; + } + + return [formattedDigits, hasPlus]; +} +//# sourceMappingURL=AsYouTypeParser.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeParser.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeParser.js.map new file mode 100644 index 00000000..06ab2aa6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeParser.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsYouTypeParser.js","names":["VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART","VALID_PUNCTUATION","VALID_DIGITS","VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN","RegExp","VALID_FORMATTED_PHONE_NUMBER_PART","PLUS_CHARS","AFTER_PHONE_NUMBER_DIGITS_END_PATTERN","COMPLEX_NATIONAL_PREFIX","AsYouTypeParser","defaultCountry","defaultCallingCode","metadata","onNationalSignificantNumberChange","text","state","extractFormattedDigitsAndPlus","formattedDigits","hasPlus","digits","parseDigits","justLeadingPlus","startInternationalNumber","inputDigits","nextDigits","hasReceivedThreeLeadingDigits","length","appendDigits","extractIddPrefix","isWaitingForCountryCallingCode","extractCountryCallingCode","appendNationalSignificantNumberDigits","international","hasExtractedNationalSignificantNumber","extractNationalSignificantNumber","getNationalDigits","stateUpdate","update","callingCode","getDigitsWithoutInternationalPrefix","countryCallingCode","number","setCallingCode","nationalSignificantNumber","numberingPlan","hasSelectedNumberingPlan","nationalPrefixForParsing","_nationalPrefixForParsing","couldPossiblyExtractAnotherNationalSignificantNumber","test","undefined","nationalDigits","setState","extractNationalNumberFromPossiblyIncompleteNumber","nationalPrefix","nationalNumber","carrierCode","onExtractedNationalNumber","prevNationalSignificantNumber","complexPrefixBeforeNationalSignificantNumber","nationalSignificantNumberMatchesInput","nationalSignificantNumberIndex","lastIndexOf","prefixBeforeNationalNumber","slice","extractAnotherNationalSignificantNumber","extractCallingCodeAndNationalSignificantNumber","fixMissingPlus","IDDPrefix","numberWithoutIDD","stripIddPrefix","country","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","newCallingCode","missingPlus","resetNationalSignificantNumber","extractFormattedPhoneNumber","startsAt","search","replace","_extractFormattedDigitsAndPlus","extractedNumber"],"sources":["../source/AsYouTypeParser.js"],"sourcesContent":["import extractCountryCallingCode from './helpers/extractCountryCallingCode.js'\r\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js'\r\nimport extractNationalNumberFromPossiblyIncompleteNumber from './helpers/extractNationalNumberFromPossiblyIncompleteNumber.js'\r\nimport stripIddPrefix from './helpers/stripIddPrefix.js'\r\nimport parseDigits from './helpers/parseDigits.js'\r\n\r\nimport {\r\n\tVALID_DIGITS,\r\n\tVALID_PUNCTUATION,\r\n\tPLUS_CHARS\r\n} from './constants.js'\r\n\r\nconst VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART =\r\n\t'[' +\r\n\t\tVALID_PUNCTUATION +\r\n\t\tVALID_DIGITS +\r\n\t']+'\r\n\r\nconst VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN = new RegExp('^' + VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART + '$', 'i')\r\n\r\nconst VALID_FORMATTED_PHONE_NUMBER_PART =\r\n\t'(?:' +\r\n\t\t'[' + PLUS_CHARS + ']' +\r\n\t\t'[' +\r\n\t\t\tVALID_PUNCTUATION +\r\n\t\t\tVALID_DIGITS +\r\n\t\t']*' +\r\n\t\t'|' +\r\n\t\t'[' +\r\n\t\t\tVALID_PUNCTUATION +\r\n\t\t\tVALID_DIGITS +\r\n\t\t']+' +\r\n\t')'\r\n\r\nconst AFTER_PHONE_NUMBER_DIGITS_END_PATTERN = new RegExp(\r\n\t'[^' +\r\n\t\tVALID_PUNCTUATION +\r\n\t\tVALID_DIGITS +\r\n\t']+' +\r\n\t'.*' +\r\n\t'$'\r\n)\r\n\r\n// Tests whether `national_prefix_for_parsing` could match\r\n// different national prefixes.\r\n// Matches anything that's not a digit or a square bracket.\r\nconst COMPLEX_NATIONAL_PREFIX = /[^\\d\\[\\]]/\r\n\r\nexport default class AsYouTypeParser {\r\n\tconstructor({\r\n\t\tdefaultCountry,\r\n\t\tdefaultCallingCode,\r\n\t\tmetadata,\r\n\t\tonNationalSignificantNumberChange\r\n\t}) {\r\n\t\tthis.defaultCountry = defaultCountry\r\n\t\tthis.defaultCallingCode = defaultCallingCode\r\n\t\tthis.metadata = metadata\r\n\t\tthis.onNationalSignificantNumberChange = onNationalSignificantNumberChange\r\n\t}\r\n\r\n\tinput(text, state) {\r\n\t\tconst [formattedDigits, hasPlus] = extractFormattedDigitsAndPlus(text)\r\n\t\tconst digits = parseDigits(formattedDigits)\r\n\t\t// Checks for a special case: just a leading `+` has been entered.\r\n\t\tlet justLeadingPlus\r\n\t\tif (hasPlus) {\r\n\t\t\tif (!state.digits) {\r\n\t\t\t\tstate.startInternationalNumber()\r\n\t\t\t\tif (!digits) {\r\n\t\t\t\t\tjustLeadingPlus = true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (digits) {\r\n\t\t\tthis.inputDigits(digits, state)\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tdigits,\r\n\t\t\tjustLeadingPlus\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Inputs \"next\" phone number digits.\r\n\t * @param {string} digits\r\n\t * @return {string} [formattedNumber] Formatted national phone number (if it can be formatted at this stage). Returning `undefined` means \"don't format the national phone number at this stage\".\r\n\t */\r\n\tinputDigits(nextDigits, state) {\r\n\t\tconst { digits } = state\r\n\t\tconst hasReceivedThreeLeadingDigits = digits.length < 3 && digits.length + nextDigits.length >= 3\r\n\r\n\t\t// Append phone number digits.\r\n\t\tstate.appendDigits(nextDigits)\r\n\r\n\t\t// Attempt to extract IDD prefix:\r\n\t\t// Some users input their phone number in international format,\r\n\t\t// but in an \"out-of-country\" dialing format instead of using the leading `+`.\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/185\r\n\t\t// Detect such numbers as soon as there're at least 3 digits.\r\n\t\t// Google's library attempts to extract IDD prefix at 3 digits,\r\n\t\t// so this library just copies that behavior.\r\n\t\t// I guess that's because the most commot IDD prefixes are\r\n\t\t// `00` (Europe) and `011` (US).\r\n\t\t// There exist really long IDD prefixes too:\r\n\t\t// for example, in Australia the default IDD prefix is `0011`,\r\n\t\t// and it could even be as long as `14880011`.\r\n\t\t// An IDD prefix is extracted here, and then every time when\r\n\t\t// there's a new digit and the number couldn't be formatted.\r\n\t\tif (hasReceivedThreeLeadingDigits) {\r\n\t\t\tthis.extractIddPrefix(state)\r\n\t\t}\r\n\r\n\t\tif (this.isWaitingForCountryCallingCode(state)) {\r\n\t\t\tif (!this.extractCountryCallingCode(state)) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tstate.appendNationalSignificantNumberDigits(nextDigits)\r\n\t\t}\r\n\r\n\t\t// If a phone number is being input in international format,\r\n\t\t// then it's not valid for it to have a national prefix.\r\n\t\t// Still, some people incorrectly input such numbers with a national prefix.\r\n\t\t// In such cases, only attempt to strip a national prefix if the number becomes too long.\r\n\t\t// (but that is done later, not here)\r\n\t\tif (!state.international) {\r\n\t\t\tif (!this.hasExtractedNationalSignificantNumber) {\r\n\t\t\t\tthis.extractNationalSignificantNumber(\r\n\t\t\t\t\tstate.getNationalDigits(),\r\n\t\t\t\t\t(stateUpdate) => state.update(stateUpdate)\r\n\t\t\t\t)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisWaitingForCountryCallingCode({ international, callingCode }) {\r\n\t\treturn international && !callingCode\r\n\t}\r\n\r\n\t// Extracts a country calling code from a number\r\n\t// being entered in internatonal format.\r\n\textractCountryCallingCode(state) {\r\n\t\tconst { countryCallingCode, number } = extractCountryCallingCode(\r\n\t\t\t'+' + state.getDigitsWithoutInternationalPrefix(),\r\n\t\t\tthis.defaultCountry,\r\n\t\t\tthis.defaultCallingCode,\r\n\t\t\tthis.metadata.metadata\r\n\t\t)\r\n\t\tif (countryCallingCode) {\r\n\t\t\tstate.setCallingCode(countryCallingCode)\r\n\t\t\tstate.update({\r\n\t\t\t\tnationalSignificantNumber: number\r\n\t\t\t})\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\treset(numberingPlan) {\r\n\t\tif (numberingPlan) {\r\n\t\t\tthis.hasSelectedNumberingPlan = true\r\n\t\t\tconst nationalPrefixForParsing = numberingPlan._nationalPrefixForParsing()\r\n\t\t\tthis.couldPossiblyExtractAnotherNationalSignificantNumber = nationalPrefixForParsing && COMPLEX_NATIONAL_PREFIX.test(nationalPrefixForParsing)\r\n\t\t} else {\r\n\t\t\tthis.hasSelectedNumberingPlan = undefined\r\n\t\t\tthis.couldPossiblyExtractAnotherNationalSignificantNumber = undefined\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Extracts a national (significant) number from user input.\r\n\t * Google's library is different in that it only applies `national_prefix_for_parsing`\r\n\t * and doesn't apply `national_prefix_transform_rule` after that.\r\n\t * https://github.com/google/libphonenumber/blob/a3d70b0487875475e6ad659af404943211d26456/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L539\r\n\t * @return {boolean} [extracted]\r\n\t */\r\n\textractNationalSignificantNumber(nationalDigits, setState) {\r\n\t\tif (!this.hasSelectedNumberingPlan) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tconst {\r\n\t\t\tnationalPrefix,\r\n\t\t\tnationalNumber,\r\n\t\t\tcarrierCode\r\n\t\t} = extractNationalNumberFromPossiblyIncompleteNumber(\r\n\t\t\tnationalDigits,\r\n\t\t\tthis.metadata\r\n\t\t)\r\n\t\tif (nationalNumber === nationalDigits) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tthis.onExtractedNationalNumber(\r\n\t\t\tnationalPrefix,\r\n\t\t\tcarrierCode,\r\n\t\t\tnationalNumber,\r\n\t\t\tnationalDigits,\r\n\t\t\tsetState\r\n\t\t)\r\n\t\treturn true\r\n\t}\r\n\r\n\t/**\r\n\t * In Google's code this function is called \"attempt to extract longer NDD\".\r\n\t * \"Some national prefixes are a substring of others\", they say.\r\n\t * @return {boolean} [result] — Returns `true` if extracting a national prefix produced different results from what they were.\r\n\t */\r\n\textractAnotherNationalSignificantNumber(nationalDigits, prevNationalSignificantNumber, setState) {\r\n\t\tif (!this.hasExtractedNationalSignificantNumber) {\r\n\t\t\treturn this.extractNationalSignificantNumber(nationalDigits, setState)\r\n\t\t}\r\n\t\tif (!this.couldPossiblyExtractAnotherNationalSignificantNumber) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tconst {\r\n\t\t\tnationalPrefix,\r\n\t\t\tnationalNumber,\r\n\t\t\tcarrierCode\r\n\t\t} = extractNationalNumberFromPossiblyIncompleteNumber(\r\n\t\t\tnationalDigits,\r\n\t\t\tthis.metadata\r\n\t\t)\r\n\t\t// If a national prefix has been extracted previously,\r\n\t\t// then it's always extracted as additional digits are added.\r\n\t\t// That's assuming `extractNationalNumberFromPossiblyIncompleteNumber()`\r\n\t\t// doesn't do anything different from what it currently does.\r\n\t\t// So, just in case, here's this check, though it doesn't occur.\r\n\t\t/* istanbul ignore if */\r\n\t\tif (nationalNumber === prevNationalSignificantNumber) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tthis.onExtractedNationalNumber(\r\n\t\t\tnationalPrefix,\r\n\t\t\tcarrierCode,\r\n\t\t\tnationalNumber,\r\n\t\t\tnationalDigits,\r\n\t\t\tsetState\r\n\t\t)\r\n\t\treturn true\r\n\t}\r\n\r\n\tonExtractedNationalNumber(\r\n\t\tnationalPrefix,\r\n\t\tcarrierCode,\r\n\t\tnationalSignificantNumber,\r\n\t\tnationalDigits,\r\n\t\tsetState\r\n\t) {\r\n\t\tlet complexPrefixBeforeNationalSignificantNumber\r\n\t\tlet nationalSignificantNumberMatchesInput\r\n\t\t// This check also works with empty `this.nationalSignificantNumber`.\r\n\t\tconst nationalSignificantNumberIndex = nationalDigits.lastIndexOf(nationalSignificantNumber)\r\n\t\t// If the extracted national (significant) number is the\r\n\t\t// last substring of the `digits`, then it means that it hasn't been altered:\r\n\t\t// no digits have been removed from the national (significant) number\r\n\t\t// while applying `national_prefix_transform_rule`.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\r\n\t\tif (nationalSignificantNumberIndex >= 0 &&\r\n\t\t\tnationalSignificantNumberIndex === nationalDigits.length - nationalSignificantNumber.length) {\r\n\t\t\tnationalSignificantNumberMatchesInput = true\r\n\t\t\t// If a prefix of a national (significant) number is not as simple\r\n\t\t\t// as just a basic national prefix, then such prefix is stored in\r\n\t\t\t// `this.complexPrefixBeforeNationalSignificantNumber` property and will be\r\n\t\t\t// prepended \"as is\" to the national (significant) number to produce\r\n\t\t\t// a formatted result.\r\n\t\t\tconst prefixBeforeNationalNumber = nationalDigits.slice(0, nationalSignificantNumberIndex)\r\n\t\t\t// `prefixBeforeNationalNumber` is always non-empty,\r\n\t\t\t// because `onExtractedNationalNumber()` isn't called\r\n\t\t\t// when a national (significant) number hasn't been actually \"extracted\":\r\n\t\t\t// when a national (significant) number is equal to the national part of `digits`,\r\n\t\t\t// then `onExtractedNationalNumber()` doesn't get called.\r\n\t\t\tif (prefixBeforeNationalNumber !== nationalPrefix) {\r\n\t\t\t\tcomplexPrefixBeforeNationalSignificantNumber = prefixBeforeNationalNumber\r\n\t\t\t}\r\n\t\t}\r\n\t\tsetState({\r\n\t\t\tnationalPrefix,\r\n\t\t\tcarrierCode,\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tnationalSignificantNumberMatchesInput,\r\n\t\t\tcomplexPrefixBeforeNationalSignificantNumber\r\n\t\t})\r\n\t\t// `onExtractedNationalNumber()` is only called when\r\n\t\t// the national (significant) number actually did change.\r\n\t\tthis.hasExtractedNationalSignificantNumber = true\r\n\t\tthis.onNationalSignificantNumberChange()\r\n\t}\r\n\r\n\treExtractNationalSignificantNumber(state) {\r\n\t\t// Attempt to extract a national prefix.\r\n\t\t//\r\n\t\t// Some people incorrectly input national prefix\r\n\t\t// in an international phone number.\r\n\t\t// For example, some people write British phone numbers as `+44(0)...`.\r\n\t\t//\r\n\t\t// Also, in some rare cases, it is valid for a national prefix\r\n\t\t// to be a part of an international phone number.\r\n\t\t// For example, mobile phone numbers in Mexico are supposed to be\r\n\t\t// dialled internationally using a `1` national prefix,\r\n\t\t// so the national prefix will be part of an international number.\r\n\t\t//\r\n\t\t// Quote from:\r\n\t\t// https://www.mexperience.com/dialing-cell-phones-in-mexico/\r\n\t\t//\r\n\t\t// \"Dialing a Mexican cell phone from abroad\r\n\t\t// When you are calling a cell phone number in Mexico from outside Mexico,\r\n\t\t// it’s necessary to dial an additional “1” after Mexico’s country code\r\n\t\t// (which is “52”) and before the area code.\r\n\t\t// You also ignore the 045, and simply dial the area code and the\r\n\t\t// cell phone’s number.\r\n\t\t//\r\n\t\t// If you don’t add the “1”, you’ll receive a recorded announcement\r\n\t\t// asking you to redial using it.\r\n\t\t//\r\n\t\t// For example, if you are calling from the USA to a cell phone\r\n\t\t// in Mexico City, you would dial +52 – 1 – 55 – 1234 5678.\r\n\t\t// (Note that this is different to calling a land line in Mexico City\r\n\t\t// from abroad, where the number dialed would be +52 – 55 – 1234 5678)\".\r\n\t\t//\r\n\t\t// Google's demo output:\r\n\t\t// https://libphonenumber.appspot.com/phonenumberparser?number=%2b5215512345678&country=MX\r\n\t\t//\r\n\t\tif (this.extractAnotherNationalSignificantNumber(\r\n\t\t\tstate.getNationalDigits(),\r\n\t\t\tstate.nationalSignificantNumber,\r\n\t\t\t(stateUpdate) => state.update(stateUpdate)\r\n\t\t)) {\r\n\t\t\treturn true\r\n\t\t}\r\n\t\t// If no format matches the phone number, then it could be\r\n\t\t// \"a really long IDD\" (quote from a comment in Google's library).\r\n\t\t// An IDD prefix is first extracted when the user has entered at least 3 digits,\r\n\t\t// and then here — every time when there's a new digit and the number\r\n\t\t// couldn't be formatted.\r\n\t\t// For example, in Australia the default IDD prefix is `0011`,\r\n\t\t// and it could even be as long as `14880011`.\r\n\t\t//\r\n\t\t// Could also check `!hasReceivedThreeLeadingDigits` here\r\n\t\t// to filter out the case when this check duplicates the one\r\n\t\t// already performed when there're 3 leading digits,\r\n\t\t// but it's not a big deal, and in most cases there\r\n\t\t// will be a suitable `format` when there're 3 leading digits.\r\n\t\t//\r\n\t\tif (this.extractIddPrefix(state)) {\r\n\t\t\tthis.extractCallingCodeAndNationalSignificantNumber(state)\r\n\t\t\treturn true\r\n\t\t}\r\n\t\t// Google's AsYouType formatter supports sort of an \"autocorrection\" feature\r\n\t\t// when it \"autocorrects\" numbers that have been input for a country\r\n\t\t// with that country's calling code.\r\n\t\t// Such \"autocorrection\" feature looks weird, but different people have been requesting it:\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/375\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/316\r\n\t\tif (this.fixMissingPlus(state)) {\r\n\t\t\tthis.extractCallingCodeAndNationalSignificantNumber(state)\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\textractIddPrefix(state) {\r\n\t\t// An IDD prefix can't be present in a number written with a `+`.\r\n\t\t// Also, don't re-extract an IDD prefix if has already been extracted.\r\n\t\tconst {\r\n\t\t\tinternational,\r\n\t\t\tIDDPrefix,\r\n\t\t\tdigits,\r\n\t\t\tnationalSignificantNumber\r\n\t\t} = state\r\n\t\tif (international || IDDPrefix) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// Some users input their phone number in \"out-of-country\"\r\n\t\t// dialing format instead of using the leading `+`.\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/185\r\n\t\t// Detect such numbers.\r\n\t\tconst numberWithoutIDD = stripIddPrefix(\r\n\t\t\tdigits,\r\n\t\t\tthis.defaultCountry,\r\n\t\t\tthis.defaultCallingCode,\r\n\t\t\tthis.metadata.metadata\r\n\t\t)\r\n\t\tif (numberWithoutIDD !== undefined && numberWithoutIDD !== digits) {\r\n\t\t\t// If an IDD prefix was stripped then convert the IDD-prefixed number\r\n\t\t\t// to international number for subsequent parsing.\r\n\t\t\tstate.update({\r\n\t\t\t\tIDDPrefix: digits.slice(0, digits.length - numberWithoutIDD.length)\r\n\t\t\t})\r\n\t\t\tthis.startInternationalNumber(state, {\r\n\t\t\t\tcountry: undefined,\r\n\t\t\t\tcallingCode: undefined\r\n\t\t\t})\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\tfixMissingPlus(state) {\r\n\t\tif (!state.international) {\r\n\t\t\tconst {\r\n\t\t\t\tcountryCallingCode: newCallingCode,\r\n\t\t\t\tnumber\r\n\t\t\t} = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\r\n\t\t\t\tstate.digits,\r\n\t\t\t\tthis.defaultCountry,\r\n\t\t\t\tthis.defaultCallingCode,\r\n\t\t\t\tthis.metadata.metadata\r\n\t\t\t)\r\n\t\t\tif (newCallingCode) {\r\n\t\t\t\tstate.update({\r\n\t\t\t\t\tmissingPlus: true\r\n\t\t\t\t})\r\n\t\t\t\tthis.startInternationalNumber(state, {\r\n\t\t\t\t\tcountry: state.country,\r\n\t\t\t\t\tcallingCode: newCallingCode\r\n\t\t\t\t})\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tstartInternationalNumber(state, { country, callingCode }) {\r\n\t\tstate.startInternationalNumber(country, callingCode)\r\n\t\t// If a national (significant) number has been extracted before, reset it.\r\n\t\tif (state.nationalSignificantNumber) {\r\n\t\t\tstate.resetNationalSignificantNumber()\r\n\t\t\tthis.onNationalSignificantNumberChange()\r\n\t\t\tthis.hasExtractedNationalSignificantNumber = undefined\r\n\t\t}\r\n\t}\r\n\r\n\textractCallingCodeAndNationalSignificantNumber(state) {\r\n\t\tif (this.extractCountryCallingCode(state)) {\r\n\t\t\t// `this.extractCallingCode()` is currently called when the number\r\n\t\t\t// couldn't be formatted during the standard procedure.\r\n\t\t\t// Normally, the national prefix would be re-extracted\r\n\t\t\t// for an international number if such number couldn't be formatted,\r\n\t\t\t// but since it's already not able to be formatted,\r\n\t\t\t// there won't be yet another retry, so also extract national prefix here.\r\n\t\t\tthis.extractNationalSignificantNumber(\r\n\t\t\t\tstate.getNationalDigits(),\r\n\t\t\t\t(stateUpdate) => state.update(stateUpdate)\r\n\t\t\t)\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Extracts formatted phone number from text (if there's any).\r\n * @param {string} text\r\n * @return {string} [formattedPhoneNumber]\r\n */\r\nfunction extractFormattedPhoneNumber(text) {\r\n\t// Attempt to extract a possible number from the string passed in.\r\n\tconst startsAt = text.search(VALID_FORMATTED_PHONE_NUMBER_PART)\r\n\tif (startsAt < 0) {\r\n\t\treturn\r\n\t}\r\n\t// Trim everything to the left of the phone number.\r\n\ttext = text.slice(startsAt)\r\n\t// Trim the `+`.\r\n\tlet hasPlus\r\n\tif (text[0] === '+') {\r\n\t\thasPlus = true\r\n\t\ttext = text.slice('+'.length)\r\n\t}\r\n\t// Trim everything to the right of the phone number.\r\n\ttext = text.replace(AFTER_PHONE_NUMBER_DIGITS_END_PATTERN, '')\r\n\t// Re-add the previously trimmed `+`.\r\n\tif (hasPlus) {\r\n\t\ttext = '+' + text\r\n\t}\r\n\treturn text\r\n}\r\n\r\n/**\r\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\r\n * @param {string} text\r\n * @return {any[]}\r\n */\r\nfunction _extractFormattedDigitsAndPlus(text) {\r\n\t// Extract a formatted phone number part from text.\r\n\tconst extractedNumber = extractFormattedPhoneNumber(text) || ''\r\n\t// Trim a `+`.\r\n\tif (extractedNumber[0] === '+') {\r\n\t\treturn [extractedNumber.slice('+'.length), true]\r\n\t}\r\n\treturn [extractedNumber]\r\n}\r\n\r\n/**\r\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\r\n * @param {string} text\r\n * @return {any[]}\r\n */\r\nexport function extractFormattedDigitsAndPlus(text) {\r\n\tlet [formattedDigits, hasPlus] = _extractFormattedDigitsAndPlus(text)\r\n\t// If the extracted phone number part\r\n\t// can possibly be a part of some valid phone number\r\n\t// then parse phone number characters from a formatted phone number.\r\n\tif (!VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN.test(formattedDigits)) {\r\n\t\tformattedDigits = ''\r\n\t}\r\n\treturn [formattedDigits, hasPlus]\r\n}"],"mappings":";;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAMA,wCAAwC,GAC7C,MACCC,4BADD,GAECC,uBAFD,GAGA,IAJD;AAMA,IAAMC,gDAAgD,GAAG,IAAIC,MAAJ,CAAW,MAAMJ,wCAAN,GAAiD,GAA5D,EAAiE,GAAjE,CAAzD;AAEA,IAAMK,iCAAiC,GACtC,QACC,GADD,GACOC,qBADP,GACoB,GADpB,GAEC,GAFD,GAGEL,4BAHF,GAIEC,uBAJF,GAKC,IALD,GAMC,GAND,GAOC,GAPD,GAQED,4BARF,GASEC,uBATF,GAUC,IAVD,GAWA,GAZD;AAcA,IAAMK,qCAAqC,GAAG,IAAIH,MAAJ,CAC7C,OACCH,4BADD,GAECC,uBAFD,GAGA,IAHA,GAIA,IAJA,GAKA,GAN6C,CAA9C,C,CASA;AACA;AACA;;AACA,IAAMM,uBAAuB,GAAG,WAAhC;;IAEqBC,e;EACpB,+BAKG;IAAA,IAJFC,cAIE,QAJFA,cAIE;IAAA,IAHFC,kBAGE,QAHFA,kBAGE;IAAA,IAFFC,QAEE,QAFFA,QAEE;IAAA,IADFC,iCACE,QADFA,iCACE;;IAAA;;IACF,KAAKH,cAAL,GAAsBA,cAAtB;IACA,KAAKC,kBAAL,GAA0BA,kBAA1B;IACA,KAAKC,QAAL,GAAgBA,QAAhB;IACA,KAAKC,iCAAL,GAAyCA,iCAAzC;EACA;;;;WAED,eAAMC,IAAN,EAAYC,KAAZ,EAAmB;MAClB,4BAAmCC,6BAA6B,CAACF,IAAD,CAAhE;MAAA;MAAA,IAAOG,eAAP;MAAA,IAAwBC,OAAxB;;MACA,IAAMC,MAAM,GAAG,IAAAC,uBAAA,EAAYH,eAAZ,CAAf,CAFkB,CAGlB;;MACA,IAAII,eAAJ;;MACA,IAAIH,OAAJ,EAAa;QACZ,IAAI,CAACH,KAAK,CAACI,MAAX,EAAmB;UAClBJ,KAAK,CAACO,wBAAN;;UACA,IAAI,CAACH,MAAL,EAAa;YACZE,eAAe,GAAG,IAAlB;UACA;QACD;MACD;;MACD,IAAIF,MAAJ,EAAY;QACX,KAAKI,WAAL,CAAiBJ,MAAjB,EAAyBJ,KAAzB;MACA;;MACD,OAAO;QACNI,MAAM,EAANA,MADM;QAENE,eAAe,EAAfA;MAFM,CAAP;IAIA;IAED;AACD;AACA;AACA;AACA;;;;WACC,qBAAYG,UAAZ,EAAwBT,KAAxB,EAA+B;MAC9B,IAAQI,MAAR,GAAmBJ,KAAnB,CAAQI,MAAR;MACA,IAAMM,6BAA6B,GAAGN,MAAM,CAACO,MAAP,GAAgB,CAAhB,IAAqBP,MAAM,CAACO,MAAP,GAAgBF,UAAU,CAACE,MAA3B,IAAqC,CAAhG,CAF8B,CAI9B;;MACAX,KAAK,CAACY,YAAN,CAAmBH,UAAnB,EAL8B,CAO9B;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;;MACA,IAAIC,6BAAJ,EAAmC;QAClC,KAAKG,gBAAL,CAAsBb,KAAtB;MACA;;MAED,IAAI,KAAKc,8BAAL,CAAoCd,KAApC,CAAJ,EAAgD;QAC/C,IAAI,CAAC,KAAKe,yBAAL,CAA+Bf,KAA/B,CAAL,EAA4C;UAC3C;QACA;MACD,CAJD,MAIO;QACNA,KAAK,CAACgB,qCAAN,CAA4CP,UAA5C;MACA,CA/B6B,CAiC9B;MACA;MACA;MACA;MACA;;;MACA,IAAI,CAACT,KAAK,CAACiB,aAAX,EAA0B;QACzB,IAAI,CAAC,KAAKC,qCAAV,EAAiD;UAChD,KAAKC,gCAAL,CACCnB,KAAK,CAACoB,iBAAN,EADD,EAEC,UAACC,WAAD;YAAA,OAAiBrB,KAAK,CAACsB,MAAN,CAAaD,WAAb,CAAjB;UAAA,CAFD;QAIA;MACD;IACD;;;WAED,+CAA+D;MAAA,IAA9BJ,aAA8B,SAA9BA,aAA8B;MAAA,IAAfM,WAAe,SAAfA,WAAe;MAC9D,OAAON,aAAa,IAAI,CAACM,WAAzB;IACA,C,CAED;IACA;;;;WACA,mCAA0BvB,KAA1B,EAAiC;MAChC,4BAAuC,IAAAe,sCAAA,EACtC,MAAMf,KAAK,CAACwB,mCAAN,EADgC,EAEtC,KAAK7B,cAFiC,EAGtC,KAAKC,kBAHiC,EAItC,KAAKC,QAAL,CAAcA,QAJwB,CAAvC;MAAA,IAAQ4B,kBAAR,yBAAQA,kBAAR;MAAA,IAA4BC,MAA5B,yBAA4BA,MAA5B;;MAMA,IAAID,kBAAJ,EAAwB;QACvBzB,KAAK,CAAC2B,cAAN,CAAqBF,kBAArB;QACAzB,KAAK,CAACsB,MAAN,CAAa;UACZM,yBAAyB,EAAEF;QADf,CAAb;QAGA,OAAO,IAAP;MACA;IACD;;;WAED,eAAMG,aAAN,EAAqB;MACpB,IAAIA,aAAJ,EAAmB;QAClB,KAAKC,wBAAL,GAAgC,IAAhC;;QACA,IAAMC,wBAAwB,GAAGF,aAAa,CAACG,yBAAd,EAAjC;;QACA,KAAKC,oDAAL,GAA4DF,wBAAwB,IAAItC,uBAAuB,CAACyC,IAAxB,CAA6BH,wBAA7B,CAAxF;MACA,CAJD,MAIO;QACN,KAAKD,wBAAL,GAAgCK,SAAhC;QACA,KAAKF,oDAAL,GAA4DE,SAA5D;MACA;IACD;IAED;AACD;AACA;AACA;AACA;AACA;AACA;;;;WACC,0CAAiCC,cAAjC,EAAiDC,QAAjD,EAA2D;MAC1D,IAAI,CAAC,KAAKP,wBAAV,EAAoC;QACnC;MACA;;MACD,4BAII,IAAAQ,6DAAA,EACHF,cADG,EAEH,KAAKvC,QAFF,CAJJ;MAAA,IACC0C,cADD,yBACCA,cADD;MAAA,IAECC,cAFD,yBAECA,cAFD;MAAA,IAGCC,WAHD,yBAGCA,WAHD;;MAQA,IAAID,cAAc,KAAKJ,cAAvB,EAAuC;QACtC;MACA;;MACD,KAAKM,yBAAL,CACCH,cADD,EAECE,WAFD,EAGCD,cAHD,EAICJ,cAJD,EAKCC,QALD;MAOA,OAAO,IAAP;IACA;IAED;AACD;AACA;AACA;AACA;;;;WACC,iDAAwCD,cAAxC,EAAwDO,6BAAxD,EAAuFN,QAAvF,EAAiG;MAChG,IAAI,CAAC,KAAKnB,qCAAV,EAAiD;QAChD,OAAO,KAAKC,gCAAL,CAAsCiB,cAAtC,EAAsDC,QAAtD,CAAP;MACA;;MACD,IAAI,CAAC,KAAKJ,oDAAV,EAAgE;QAC/D;MACA;;MACD,6BAII,IAAAK,6DAAA,EACHF,cADG,EAEH,KAAKvC,QAFF,CAJJ;MAAA,IACC0C,cADD,0BACCA,cADD;MAAA,IAECC,cAFD,0BAECA,cAFD;MAAA,IAGCC,WAHD,0BAGCA,WAHD,CAPgG,CAehG;MACA;MACA;MACA;MACA;;MACA;;;MACA,IAAID,cAAc,KAAKG,6BAAvB,EAAsD;QACrD;MACA;;MACD,KAAKD,yBAAL,CACCH,cADD,EAECE,WAFD,EAGCD,cAHD,EAICJ,cAJD,EAKCC,QALD;MAOA,OAAO,IAAP;IACA;;;WAED,mCACCE,cADD,EAECE,WAFD,EAGCb,yBAHD,EAICQ,cAJD,EAKCC,QALD,EAME;MACD,IAAIO,4CAAJ;MACA,IAAIC,qCAAJ,CAFC,CAGD;;MACA,IAAMC,8BAA8B,GAAGV,cAAc,CAACW,WAAf,CAA2BnB,yBAA3B,CAAvC,CAJC,CAKD;MACA;MACA;MACA;MACA;;MACA,IAAIkB,8BAA8B,IAAI,CAAlC,IACHA,8BAA8B,KAAKV,cAAc,CAACzB,MAAf,GAAwBiB,yBAAyB,CAACjB,MADtF,EAC8F;QAC7FkC,qCAAqC,GAAG,IAAxC,CAD6F,CAE7F;QACA;QACA;QACA;QACA;;QACA,IAAMG,0BAA0B,GAAGZ,cAAc,CAACa,KAAf,CAAqB,CAArB,EAAwBH,8BAAxB,CAAnC,CAP6F,CAQ7F;QACA;QACA;QACA;QACA;;QACA,IAAIE,0BAA0B,KAAKT,cAAnC,EAAmD;UAClDK,4CAA4C,GAAGI,0BAA/C;QACA;MACD;;MACDX,QAAQ,CAAC;QACRE,cAAc,EAAdA,cADQ;QAERE,WAAW,EAAXA,WAFQ;QAGRb,yBAAyB,EAAzBA,yBAHQ;QAIRiB,qCAAqC,EAArCA,qCAJQ;QAKRD,4CAA4C,EAA5CA;MALQ,CAAD,CAAR,CA5BC,CAmCD;MACA;;MACA,KAAK1B,qCAAL,GAA6C,IAA7C;MACA,KAAKpB,iCAAL;IACA;;;WAED,4CAAmCE,KAAnC,EAA0C;MACzC;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA,IAAI,KAAKkD,uCAAL,CACHlD,KAAK,CAACoB,iBAAN,EADG,EAEHpB,KAAK,CAAC4B,yBAFH,EAGH,UAACP,WAAD;QAAA,OAAiBrB,KAAK,CAACsB,MAAN,CAAaD,WAAb,CAAjB;MAAA,CAHG,CAAJ,EAIG;QACF,OAAO,IAAP;MACA,CAxCwC,CAyCzC;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;;;MACA,IAAI,KAAKR,gBAAL,CAAsBb,KAAtB,CAAJ,EAAkC;QACjC,KAAKmD,8CAAL,CAAoDnD,KAApD;QACA,OAAO,IAAP;MACA,CA1DwC,CA2DzC;MACA;MACA;MACA;MACA;MACA;MACA;;;MACA,IAAI,KAAKoD,cAAL,CAAoBpD,KAApB,CAAJ,EAAgC;QAC/B,KAAKmD,8CAAL,CAAoDnD,KAApD;QACA,OAAO,IAAP;MACA;IACD;;;WAED,0BAAiBA,KAAjB,EAAwB;MACvB;MACA;MACA,IACCiB,aADD,GAKIjB,KALJ,CACCiB,aADD;MAAA,IAECoC,SAFD,GAKIrD,KALJ,CAECqD,SAFD;MAAA,IAGCjD,MAHD,GAKIJ,KALJ,CAGCI,MAHD;MAAA,IAICwB,yBAJD,GAKI5B,KALJ,CAIC4B,yBAJD;;MAMA,IAAIX,aAAa,IAAIoC,SAArB,EAAgC;QAC/B;MACA,CAXsB,CAYvB;MACA;MACA;MACA;;;MACA,IAAMC,gBAAgB,GAAG,IAAAC,0BAAA,EACxBnD,MADwB,EAExB,KAAKT,cAFmB,EAGxB,KAAKC,kBAHmB,EAIxB,KAAKC,QAAL,CAAcA,QAJU,CAAzB;;MAMA,IAAIyD,gBAAgB,KAAKnB,SAArB,IAAkCmB,gBAAgB,KAAKlD,MAA3D,EAAmE;QAClE;QACA;QACAJ,KAAK,CAACsB,MAAN,CAAa;UACZ+B,SAAS,EAAEjD,MAAM,CAAC6C,KAAP,CAAa,CAAb,EAAgB7C,MAAM,CAACO,MAAP,GAAgB2C,gBAAgB,CAAC3C,MAAjD;QADC,CAAb;QAGA,KAAKJ,wBAAL,CAA8BP,KAA9B,EAAqC;UACpCwD,OAAO,EAAErB,SAD2B;UAEpCZ,WAAW,EAAEY;QAFuB,CAArC;QAIA,OAAO,IAAP;MACA;IACD;;;WAED,wBAAenC,KAAf,EAAsB;MACrB,IAAI,CAACA,KAAK,CAACiB,aAAX,EAA0B;QACzB,6BAGI,IAAAwC,2EAAA,EACHzD,KAAK,CAACI,MADH,EAEH,KAAKT,cAFF,EAGH,KAAKC,kBAHF,EAIH,KAAKC,QAAL,CAAcA,QAJX,CAHJ;QAAA,IACqB6D,cADrB,0BACCjC,kBADD;QAAA,IAECC,MAFD,0BAECA,MAFD;;QASA,IAAIgC,cAAJ,EAAoB;UACnB1D,KAAK,CAACsB,MAAN,CAAa;YACZqC,WAAW,EAAE;UADD,CAAb;UAGA,KAAKpD,wBAAL,CAA8BP,KAA9B,EAAqC;YACpCwD,OAAO,EAAExD,KAAK,CAACwD,OADqB;YAEpCjC,WAAW,EAAEmC;UAFuB,CAArC;UAIA,OAAO,IAAP;QACA;MACD;IACD;;;WAED,kCAAyB1D,KAAzB,SAA0D;MAAA,IAAxBwD,OAAwB,SAAxBA,OAAwB;MAAA,IAAfjC,WAAe,SAAfA,WAAe;MACzDvB,KAAK,CAACO,wBAAN,CAA+BiD,OAA/B,EAAwCjC,WAAxC,EADyD,CAEzD;;MACA,IAAIvB,KAAK,CAAC4B,yBAAV,EAAqC;QACpC5B,KAAK,CAAC4D,8BAAN;QACA,KAAK9D,iCAAL;QACA,KAAKoB,qCAAL,GAA6CiB,SAA7C;MACA;IACD;;;WAED,wDAA+CnC,KAA/C,EAAsD;MACrD,IAAI,KAAKe,yBAAL,CAA+Bf,KAA/B,CAAJ,EAA2C;QAC1C;QACA;QACA;QACA;QACA;QACA;QACA,KAAKmB,gCAAL,CACCnB,KAAK,CAACoB,iBAAN,EADD,EAEC,UAACC,WAAD;UAAA,OAAiBrB,KAAK,CAACsB,MAAN,CAAaD,WAAb,CAAjB;QAAA,CAFD;MAIA;IACD;;;;;AAGF;AACA;AACA;AACA;AACA;;;;;AACA,SAASwC,2BAAT,CAAqC9D,IAArC,EAA2C;EAC1C;EACA,IAAM+D,QAAQ,GAAG/D,IAAI,CAACgE,MAAL,CAAYzE,iCAAZ,CAAjB;;EACA,IAAIwE,QAAQ,GAAG,CAAf,EAAkB;IACjB;EACA,CALyC,CAM1C;;;EACA/D,IAAI,GAAGA,IAAI,CAACkD,KAAL,CAAWa,QAAX,CAAP,CAP0C,CAQ1C;;EACA,IAAI3D,OAAJ;;EACA,IAAIJ,IAAI,CAAC,CAAD,CAAJ,KAAY,GAAhB,EAAqB;IACpBI,OAAO,GAAG,IAAV;IACAJ,IAAI,GAAGA,IAAI,CAACkD,KAAL,CAAW,IAAItC,MAAf,CAAP;EACA,CAbyC,CAc1C;;;EACAZ,IAAI,GAAGA,IAAI,CAACiE,OAAL,CAAaxE,qCAAb,EAAoD,EAApD,CAAP,CAf0C,CAgB1C;;EACA,IAAIW,OAAJ,EAAa;IACZJ,IAAI,GAAG,MAAMA,IAAb;EACA;;EACD,OAAOA,IAAP;AACA;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASkE,8BAAT,CAAwClE,IAAxC,EAA8C;EAC7C;EACA,IAAMmE,eAAe,GAAGL,2BAA2B,CAAC9D,IAAD,CAA3B,IAAqC,EAA7D,CAF6C,CAG7C;;EACA,IAAImE,eAAe,CAAC,CAAD,CAAf,KAAuB,GAA3B,EAAgC;IAC/B,OAAO,CAACA,eAAe,CAACjB,KAAhB,CAAsB,IAAItC,MAA1B,CAAD,EAAoC,IAApC,CAAP;EACA;;EACD,OAAO,CAACuD,eAAD,CAAP;AACA;AAED;AACA;AACA;AACA;AACA;;;AACO,SAASjE,6BAAT,CAAuCF,IAAvC,EAA6C;EACnD,6BAAiCkE,8BAA8B,CAAClE,IAAD,CAA/D;EAAA;EAAA,IAAKG,eAAL;EAAA,IAAsBC,OAAtB,6BADmD,CAEnD;EACA;EACA;;;EACA,IAAI,CAACf,gDAAgD,CAAC8C,IAAjD,CAAsDhC,eAAtD,CAAL,EAA6E;IAC5EA,eAAe,GAAG,EAAlB;EACA;;EACD,OAAO,CAACA,eAAD,EAAkBC,OAAlB,CAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeState.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeState.js new file mode 100644 index 00000000..929ce0bf --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeState.js @@ -0,0 +1,125 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +var AsYouTypeState = /*#__PURE__*/function () { + function AsYouTypeState(_ref) { + var onCountryChange = _ref.onCountryChange, + onCallingCodeChange = _ref.onCallingCodeChange; + + _classCallCheck(this, AsYouTypeState); + + this.onCountryChange = onCountryChange; + this.onCallingCodeChange = onCallingCodeChange; + } + + _createClass(AsYouTypeState, [{ + key: "reset", + value: function reset(defaultCountry, defaultCallingCode) { + this.international = false; + this.IDDPrefix = undefined; + this.missingPlus = undefined; + this.callingCode = undefined; + this.digits = ''; + this.resetNationalSignificantNumber(); + this.initCountryAndCallingCode(defaultCountry, defaultCallingCode); + } + }, { + key: "resetNationalSignificantNumber", + value: function resetNationalSignificantNumber() { + this.nationalSignificantNumber = this.getNationalDigits(); + this.nationalSignificantNumberMatchesInput = true; + this.nationalPrefix = undefined; + this.carrierCode = undefined; + this.complexPrefixBeforeNationalSignificantNumber = undefined; + } + }, { + key: "update", + value: function update(properties) { + for (var _i = 0, _Object$keys = Object.keys(properties); _i < _Object$keys.length; _i++) { + var key = _Object$keys[_i]; + this[key] = properties[key]; + } + } + }, { + key: "initCountryAndCallingCode", + value: function initCountryAndCallingCode(country, callingCode) { + this.setCountry(country); + this.setCallingCode(callingCode); + } + }, { + key: "setCountry", + value: function setCountry(country) { + this.country = country; + this.onCountryChange(country); + } + }, { + key: "setCallingCode", + value: function setCallingCode(callingCode) { + this.callingCode = callingCode; + this.onCallingCodeChange(callingCode, this.country); + } + }, { + key: "startInternationalNumber", + value: function startInternationalNumber(country, callingCode) { + // Prepend the `+` to parsed input. + this.international = true; // If a default country was set then reset it + // because an explicitly international phone + // number is being entered. + + this.initCountryAndCallingCode(country, callingCode); + } + }, { + key: "appendDigits", + value: function appendDigits(nextDigits) { + this.digits += nextDigits; + } + }, { + key: "appendNationalSignificantNumberDigits", + value: function appendNationalSignificantNumberDigits(nextDigits) { + this.nationalSignificantNumber += nextDigits; + } + /** + * Returns the part of `this.digits` that corresponds to the national number. + * Basically, all digits that have been input by the user, except for the + * international prefix and the country calling code part + * (if the number is an international one). + * @return {string} + */ + + }, { + key: "getNationalDigits", + value: function getNationalDigits() { + if (this.international) { + return this.digits.slice((this.IDDPrefix ? this.IDDPrefix.length : 0) + (this.callingCode ? this.callingCode.length : 0)); + } + + return this.digits; + } + }, { + key: "getDigitsWithoutInternationalPrefix", + value: function getDigitsWithoutInternationalPrefix() { + if (this.international) { + if (this.IDDPrefix) { + return this.digits.slice(this.IDDPrefix.length); + } + } + + return this.digits; + } + }]); + + return AsYouTypeState; +}(); + +exports["default"] = AsYouTypeState; +//# sourceMappingURL=AsYouTypeState.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeState.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeState.js.map new file mode 100644 index 00000000..86dd5b40 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/AsYouTypeState.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsYouTypeState.js","names":["AsYouTypeState","onCountryChange","onCallingCodeChange","defaultCountry","defaultCallingCode","international","IDDPrefix","undefined","missingPlus","callingCode","digits","resetNationalSignificantNumber","initCountryAndCallingCode","nationalSignificantNumber","getNationalDigits","nationalSignificantNumberMatchesInput","nationalPrefix","carrierCode","complexPrefixBeforeNationalSignificantNumber","properties","Object","keys","key","country","setCountry","setCallingCode","nextDigits","slice","length"],"sources":["../source/AsYouTypeState.js"],"sourcesContent":["export default class AsYouTypeState {\r\n\tconstructor({ onCountryChange, onCallingCodeChange }) {\r\n\t\tthis.onCountryChange = onCountryChange\r\n\t\tthis.onCallingCodeChange = onCallingCodeChange\r\n\t}\r\n\r\n\treset(defaultCountry, defaultCallingCode) {\r\n\t\tthis.international = false\r\n\t\tthis.IDDPrefix = undefined\r\n\t\tthis.missingPlus = undefined\r\n\t\tthis.callingCode = undefined\r\n\t\tthis.digits = ''\r\n\t\tthis.resetNationalSignificantNumber()\r\n\t\tthis.initCountryAndCallingCode(defaultCountry, defaultCallingCode)\r\n\t}\r\n\r\n\tresetNationalSignificantNumber() {\r\n\t\tthis.nationalSignificantNumber = this.getNationalDigits()\r\n\t\tthis.nationalSignificantNumberMatchesInput = true\r\n\t\tthis.nationalPrefix = undefined\r\n\t\tthis.carrierCode = undefined\r\n\t\tthis.complexPrefixBeforeNationalSignificantNumber = undefined\r\n\t}\r\n\r\n\tupdate(properties) {\r\n\t\tfor (const key of Object.keys(properties)) {\r\n\t\t\tthis[key] = properties[key]\r\n\t\t}\r\n\t}\r\n\r\n\tinitCountryAndCallingCode(country, callingCode) {\r\n\t\tthis.setCountry(country)\r\n\t\tthis.setCallingCode(callingCode)\r\n\t}\r\n\r\n\tsetCountry(country) {\r\n\t\tthis.country = country\r\n\t\tthis.onCountryChange(country)\r\n\t}\r\n\r\n\tsetCallingCode(callingCode) {\r\n\t\tthis.callingCode = callingCode\r\n\t\tthis.onCallingCodeChange(callingCode, this.country)\r\n\t}\r\n\r\n\tstartInternationalNumber(country, callingCode) {\r\n\t\t// Prepend the `+` to parsed input.\r\n\t\tthis.international = true\r\n\t\t// If a default country was set then reset it\r\n\t\t// because an explicitly international phone\r\n\t\t// number is being entered.\r\n\t\tthis.initCountryAndCallingCode(country, callingCode)\r\n\t}\r\n\r\n\tappendDigits(nextDigits) {\r\n\t\tthis.digits += nextDigits\r\n\t}\r\n\r\n\tappendNationalSignificantNumberDigits(nextDigits) {\r\n\t\tthis.nationalSignificantNumber += nextDigits\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the part of `this.digits` that corresponds to the national number.\r\n\t * Basically, all digits that have been input by the user, except for the\r\n\t * international prefix and the country calling code part\r\n\t * (if the number is an international one).\r\n\t * @return {string}\r\n\t */\r\n\tgetNationalDigits() {\r\n\t\tif (this.international) {\r\n\t\t\treturn this.digits.slice(\r\n\t\t\t\t(this.IDDPrefix ? this.IDDPrefix.length : 0) +\r\n\t\t\t\t(this.callingCode ? this.callingCode.length : 0)\r\n\t\t\t)\r\n\t\t}\r\n\t\treturn this.digits\r\n\t}\r\n\r\n\tgetDigitsWithoutInternationalPrefix() {\r\n\t\tif (this.international) {\r\n\t\t\tif (this.IDDPrefix) {\r\n\t\t\t\treturn this.digits.slice(this.IDDPrefix.length)\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.digits\r\n\t}\r\n}"],"mappings":";;;;;;;;;;;;;IAAqBA,c;EACpB,8BAAsD;IAAA,IAAxCC,eAAwC,QAAxCA,eAAwC;IAAA,IAAvBC,mBAAuB,QAAvBA,mBAAuB;;IAAA;;IACrD,KAAKD,eAAL,GAAuBA,eAAvB;IACA,KAAKC,mBAAL,GAA2BA,mBAA3B;EACA;;;;WAED,eAAMC,cAAN,EAAsBC,kBAAtB,EAA0C;MACzC,KAAKC,aAAL,GAAqB,KAArB;MACA,KAAKC,SAAL,GAAiBC,SAAjB;MACA,KAAKC,WAAL,GAAmBD,SAAnB;MACA,KAAKE,WAAL,GAAmBF,SAAnB;MACA,KAAKG,MAAL,GAAc,EAAd;MACA,KAAKC,8BAAL;MACA,KAAKC,yBAAL,CAA+BT,cAA/B,EAA+CC,kBAA/C;IACA;;;WAED,0CAAiC;MAChC,KAAKS,yBAAL,GAAiC,KAAKC,iBAAL,EAAjC;MACA,KAAKC,qCAAL,GAA6C,IAA7C;MACA,KAAKC,cAAL,GAAsBT,SAAtB;MACA,KAAKU,WAAL,GAAmBV,SAAnB;MACA,KAAKW,4CAAL,GAAoDX,SAApD;IACA;;;WAED,gBAAOY,UAAP,EAAmB;MAClB,gCAAkBC,MAAM,CAACC,IAAP,CAAYF,UAAZ,CAAlB,kCAA2C;QAAtC,IAAMG,GAAG,mBAAT;QACJ,KAAKA,GAAL,IAAYH,UAAU,CAACG,GAAD,CAAtB;MACA;IACD;;;WAED,mCAA0BC,OAA1B,EAAmCd,WAAnC,EAAgD;MAC/C,KAAKe,UAAL,CAAgBD,OAAhB;MACA,KAAKE,cAAL,CAAoBhB,WAApB;IACA;;;WAED,oBAAWc,OAAX,EAAoB;MACnB,KAAKA,OAAL,GAAeA,OAAf;MACA,KAAKtB,eAAL,CAAqBsB,OAArB;IACA;;;WAED,wBAAed,WAAf,EAA4B;MAC3B,KAAKA,WAAL,GAAmBA,WAAnB;MACA,KAAKP,mBAAL,CAAyBO,WAAzB,EAAsC,KAAKc,OAA3C;IACA;;;WAED,kCAAyBA,OAAzB,EAAkCd,WAAlC,EAA+C;MAC9C;MACA,KAAKJ,aAAL,GAAqB,IAArB,CAF8C,CAG9C;MACA;MACA;;MACA,KAAKO,yBAAL,CAA+BW,OAA/B,EAAwCd,WAAxC;IACA;;;WAED,sBAAaiB,UAAb,EAAyB;MACxB,KAAKhB,MAAL,IAAegB,UAAf;IACA;;;WAED,+CAAsCA,UAAtC,EAAkD;MACjD,KAAKb,yBAAL,IAAkCa,UAAlC;IACA;IAED;AACD;AACA;AACA;AACA;AACA;AACA;;;;WACC,6BAAoB;MACnB,IAAI,KAAKrB,aAAT,EAAwB;QACvB,OAAO,KAAKK,MAAL,CAAYiB,KAAZ,CACN,CAAC,KAAKrB,SAAL,GAAiB,KAAKA,SAAL,CAAesB,MAAhC,GAAyC,CAA1C,KACC,KAAKnB,WAAL,GAAmB,KAAKA,WAAL,CAAiBmB,MAApC,GAA6C,CAD9C,CADM,CAAP;MAIA;;MACD,OAAO,KAAKlB,MAAZ;IACA;;;WAED,+CAAsC;MACrC,IAAI,KAAKL,aAAT,EAAwB;QACvB,IAAI,KAAKC,SAAT,EAAoB;UACnB,OAAO,KAAKI,MAAL,CAAYiB,KAAZ,CAAkB,KAAKrB,SAAL,CAAesB,MAAjC,CAAP;QACA;MACD;;MACD,OAAO,KAAKlB,MAAZ;IACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/ParseError.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/ParseError.js new file mode 100644 index 00000000..f80988e9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/ParseError.js @@ -0,0 +1,63 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); } + +function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +// https://stackoverflow.com/a/46971044/970769 +// "Breaking changes in Typescript 2.1" +// "Extending built-ins like Error, Array, and Map may no longer work." +// "As a recommendation, you can manually adjust the prototype immediately after any super(...) calls." +// https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work +var ParseError = /*#__PURE__*/function (_Error) { + _inherits(ParseError, _Error); + + var _super = _createSuper(ParseError); + + function ParseError(code) { + var _this; + + _classCallCheck(this, ParseError); + + _this = _super.call(this, code); // Set the prototype explicitly. + // Any subclass of FooError will have to manually set the prototype as well. + + Object.setPrototypeOf(_assertThisInitialized(_this), ParseError.prototype); + _this.name = _this.constructor.name; + return _this; + } + + return _createClass(ParseError); +}( /*#__PURE__*/_wrapNativeSuper(Error)); + +exports["default"] = ParseError; +//# sourceMappingURL=ParseError.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/ParseError.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/ParseError.js.map new file mode 100644 index 00000000..807c0cd1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/ParseError.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ParseError.js","names":["ParseError","code","Object","setPrototypeOf","prototype","name","constructor","Error"],"sources":["../source/ParseError.js"],"sourcesContent":["// https://stackoverflow.com/a/46971044/970769\r\n// \"Breaking changes in Typescript 2.1\"\r\n// \"Extending built-ins like Error, Array, and Map may no longer work.\"\r\n// \"As a recommendation, you can manually adjust the prototype immediately after any super(...) calls.\"\r\n// https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\r\nexport default class ParseError extends Error {\r\n constructor(code) {\r\n super(code)\r\n // Set the prototype explicitly.\r\n // Any subclass of FooError will have to manually set the prototype as well.\r\n Object.setPrototypeOf(this, ParseError.prototype)\r\n this.name = this.constructor.name\r\n }\r\n}"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;IACqBA,U;;;;;EACnB,oBAAYC,IAAZ,EAAkB;IAAA;;IAAA;;IAChB,0BAAMA,IAAN,EADgB,CAEhB;IACA;;IACAC,MAAM,CAACC,cAAP,gCAA4BH,UAAU,CAACI,SAAvC;IACA,MAAKC,IAAL,GAAY,MAAKC,WAAL,CAAiBD,IAA7B;IALgB;EAMjB;;;iCAPqCE,K"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumber.js new file mode 100644 index 00000000..230e97cf --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumber.js @@ -0,0 +1,153 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _metadata2 = _interopRequireDefault(require("./metadata.js")); + +var _isPossibleNumber_ = _interopRequireDefault(require("./isPossibleNumber_.js")); + +var _validate_ = _interopRequireDefault(require("./validate_.js")); + +var _isValidNumberForRegion_ = _interopRequireDefault(require("./isValidNumberForRegion_.js")); + +var _getNumberType = _interopRequireDefault(require("./helpers/getNumberType.js")); + +var _format_ = _interopRequireDefault(require("./format_.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +var USE_NON_GEOGRAPHIC_COUNTRY_CODE = false; + +var PhoneNumber = /*#__PURE__*/function () { + function PhoneNumber(countryCallingCode, nationalNumber, metadata) { + _classCallCheck(this, PhoneNumber); + + if (!countryCallingCode) { + throw new TypeError('`country` or `countryCallingCode` not passed'); + } + + if (!nationalNumber) { + throw new TypeError('`nationalNumber` not passed'); + } + + if (!metadata) { + throw new TypeError('`metadata` not passed'); + } + + var _metadata = new _metadata2["default"](metadata); // If country code is passed then derive `countryCallingCode` from it. + // Also store the country code as `.country`. + + + if (isCountryCode(countryCallingCode)) { + this.country = countryCallingCode; + + _metadata.country(countryCallingCode); + + countryCallingCode = _metadata.countryCallingCode(); + } else { + /* istanbul ignore if */ + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + if (_metadata.isNonGeographicCallingCode(countryCallingCode)) { + this.country = '001'; + } + } + } + + this.countryCallingCode = countryCallingCode; + this.nationalNumber = nationalNumber; + this.number = '+' + this.countryCallingCode + this.nationalNumber; + this.metadata = metadata; + } + + _createClass(PhoneNumber, [{ + key: "setExt", + value: function setExt(ext) { + this.ext = ext; + } + }, { + key: "isPossible", + value: function isPossible() { + return (0, _isPossibleNumber_["default"])(this, { + v2: true + }, this.metadata); + } + }, { + key: "isValid", + value: function isValid() { + return (0, _validate_["default"])(this, { + v2: true + }, this.metadata); + } + }, { + key: "isNonGeographic", + value: function isNonGeographic() { + var metadata = new _metadata2["default"](this.metadata); + return metadata.isNonGeographicCallingCode(this.countryCallingCode); + } + }, { + key: "isEqual", + value: function isEqual(phoneNumber) { + return this.number === phoneNumber.number && this.ext === phoneNumber.ext; + } // // Is just an alias for `this.isValid() && this.country === country`. + // // https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion + // isValidForRegion(country) { + // return isValidNumberForRegion(this, country, { v2: true }, this.metadata) + // } + + }, { + key: "getType", + value: function getType() { + return (0, _getNumberType["default"])(this, { + v2: true + }, this.metadata); + } + }, { + key: "format", + value: function format(_format, options) { + return (0, _format_["default"])(this, _format, options ? _objectSpread(_objectSpread({}, options), {}, { + v2: true + }) : { + v2: true + }, this.metadata); + } + }, { + key: "formatNational", + value: function formatNational(options) { + return this.format('NATIONAL', options); + } + }, { + key: "formatInternational", + value: function formatInternational(options) { + return this.format('INTERNATIONAL', options); + } + }, { + key: "getURI", + value: function getURI(options) { + return this.format('RFC3966', options); + } + }]); + + return PhoneNumber; +}(); + +exports["default"] = PhoneNumber; + +var isCountryCode = function isCountryCode(value) { + return /^[A-Z]{2}$/.test(value); +}; +//# sourceMappingURL=PhoneNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumber.js.map new file mode 100644 index 00000000..16edae85 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"PhoneNumber.js","names":["USE_NON_GEOGRAPHIC_COUNTRY_CODE","PhoneNumber","countryCallingCode","nationalNumber","metadata","TypeError","_metadata","Metadata","isCountryCode","country","isNonGeographicCallingCode","number","ext","isPossibleNumber","v2","isValidNumber","phoneNumber","getNumberType","format","options","formatNumber","value","test"],"sources":["../source/PhoneNumber.js"],"sourcesContent":["import Metadata from './metadata.js'\r\nimport isPossibleNumber from './isPossibleNumber_.js'\r\nimport isValidNumber from './validate_.js'\r\nimport isValidNumberForRegion from './isValidNumberForRegion_.js'\r\nimport getNumberType from './helpers/getNumberType.js'\r\nimport formatNumber from './format_.js'\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\nexport default class PhoneNumber {\r\n\tconstructor(countryCallingCode, nationalNumber, metadata) {\r\n\t\tif (!countryCallingCode) {\r\n\t\t\tthrow new TypeError('`country` or `countryCallingCode` not passed')\r\n\t\t}\r\n\t\tif (!nationalNumber) {\r\n\t\t\tthrow new TypeError('`nationalNumber` not passed')\r\n\t\t}\r\n\t\tif (!metadata) {\r\n\t\t\tthrow new TypeError('`metadata` not passed')\r\n\t\t}\r\n\t\tconst _metadata = new Metadata(metadata)\r\n\t\t// If country code is passed then derive `countryCallingCode` from it.\r\n\t\t// Also store the country code as `.country`.\r\n\t\tif (isCountryCode(countryCallingCode)) {\r\n\t\t\tthis.country = countryCallingCode\r\n\t\t\t_metadata.country(countryCallingCode)\r\n\t\t\tcountryCallingCode = _metadata.countryCallingCode()\r\n\t\t} else {\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\t\tif (_metadata.isNonGeographicCallingCode(countryCallingCode)) {\r\n\t\t\t\t\tthis.country = '001'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.countryCallingCode = countryCallingCode\r\n\t\tthis.nationalNumber = nationalNumber\r\n\t\tthis.number = '+' + this.countryCallingCode + this.nationalNumber\r\n\t\tthis.metadata = metadata\r\n\t}\r\n\r\n\tsetExt(ext) {\r\n\t\tthis.ext = ext\r\n\t}\r\n\r\n\tisPossible() {\r\n\t\treturn isPossibleNumber(this, { v2: true }, this.metadata)\r\n\t}\r\n\r\n\tisValid() {\r\n\t\treturn isValidNumber(this, { v2: true }, this.metadata)\r\n\t}\r\n\r\n\tisNonGeographic() {\r\n\t\tconst metadata = new Metadata(this.metadata)\r\n\t\treturn metadata.isNonGeographicCallingCode(this.countryCallingCode)\r\n\t}\r\n\r\n\tisEqual(phoneNumber) {\r\n\t\treturn this.number === phoneNumber.number && this.ext === phoneNumber.ext\r\n\t}\r\n\r\n\t// // Is just an alias for `this.isValid() && this.country === country`.\r\n\t// // https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n\t// isValidForRegion(country) {\r\n\t// \treturn isValidNumberForRegion(this, country, { v2: true }, this.metadata)\r\n\t// }\r\n\r\n\tgetType() {\r\n\t\treturn getNumberType(this, { v2: true }, this.metadata)\r\n\t}\r\n\r\n\tformat(format, options) {\r\n\t\treturn formatNumber(\r\n\t\t\tthis,\r\n\t\t\tformat,\r\n\t\t\toptions ? { ...options, v2: true } : { v2: true },\r\n\t\t\tthis.metadata\r\n\t\t)\r\n\t}\r\n\r\n\tformatNational(options) {\r\n\t\treturn this.format('NATIONAL', options)\r\n\t}\r\n\r\n\tformatInternational(options) {\r\n\t\treturn this.format('INTERNATIONAL', options)\r\n\t}\r\n\r\n\tgetURI(options) {\r\n\t\treturn this.format('RFC3966', options)\r\n\t}\r\n}\r\n\r\nconst isCountryCode = (value) => /^[A-Z]{2}$/.test(value)"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumber.test.js new file mode 100644 index 00000000..00d34ec2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumber.test.js @@ -0,0 +1,52 @@ +"use strict"; + +var _metadataMin = _interopRequireDefault(require("../metadata.min.json")); + +var _PhoneNumber = _interopRequireDefault(require("./PhoneNumber.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +describe('PhoneNumber', function () { + it('should validate constructor arguments', function () { + expect(function () { + return new _PhoneNumber["default"](); + }).to["throw"]('`countryCallingCode` not passed'); + expect(function () { + return new _PhoneNumber["default"]('7'); + }).to["throw"]('`nationalNumber` not passed'); + expect(function () { + return new _PhoneNumber["default"]('7', '8005553535'); + }).to["throw"]('`metadata` not passed'); + }); + it('should accept country code argument', function () { + var phoneNumber = new _PhoneNumber["default"]('RU', '8005553535', _metadataMin["default"]); + phoneNumber.countryCallingCode.should.equal('7'); + phoneNumber.country.should.equal('RU'); + phoneNumber.number.should.equal('+78005553535'); + }); + it('should format number with options', function () { + var phoneNumber = new _PhoneNumber["default"]('7', '8005553535', _metadataMin["default"]); + phoneNumber.ext = '123'; + phoneNumber.format('NATIONAL', { + formatExtension: function formatExtension(number, extension) { + return "".concat(number, " \u0434\u043E\u0431. ").concat(extension); + } + }).should.equal('8 (800) 555-35-35 доб. 123'); + }); + it('should compare phone numbers', function () { + new _PhoneNumber["default"]('RU', '8005553535', _metadataMin["default"]).isEqual(new _PhoneNumber["default"]('RU', '8005553535', _metadataMin["default"])).should.equal(true); + new _PhoneNumber["default"]('RU', '8005553535', _metadataMin["default"]).isEqual(new _PhoneNumber["default"]('7', '8005553535', _metadataMin["default"])).should.equal(true); + new _PhoneNumber["default"]('RU', '8005553535', _metadataMin["default"]).isEqual(new _PhoneNumber["default"]('RU', '8005553536', _metadataMin["default"])).should.equal(false); + }); + it('should tell if a number is non-geographic', function () { + new _PhoneNumber["default"]('7', '8005553535', _metadataMin["default"]).isNonGeographic().should.equal(false); + new _PhoneNumber["default"]('870', '773111632', _metadataMin["default"]).isNonGeographic().should.equal(true); + }); + it('should allow setting extension', function () { + var phoneNumber = new _PhoneNumber["default"]('1', '2133734253', _metadataMin["default"]); + phoneNumber.setExt('1234'); + phoneNumber.ext.should.equal('1234'); + phoneNumber.formatNational().should.equal('(213) 373-4253 ext. 1234'); + }); +}); +//# sourceMappingURL=PhoneNumber.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumber.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumber.test.js.map new file mode 100644 index 00000000..1d5c2198 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumber.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"PhoneNumber.test.js","names":["describe","it","expect","PhoneNumber","to","phoneNumber","metadata","countryCallingCode","should","equal","country","number","ext","format","formatExtension","extension","isEqual","isNonGeographic","setExt","formatNational"],"sources":["../source/PhoneNumber.test.js"],"sourcesContent":["import metadata from '../metadata.min.json' assert { type: 'json' }\r\nimport PhoneNumber from './PhoneNumber.js'\r\n\r\ndescribe('PhoneNumber', () => {\r\n\tit('should validate constructor arguments', () => {\r\n\t\texpect(() => new PhoneNumber()).to.throw('`countryCallingCode` not passed')\r\n\t\texpect(() => new PhoneNumber('7')).to.throw('`nationalNumber` not passed')\r\n\t\texpect(() => new PhoneNumber('7', '8005553535')).to.throw('`metadata` not passed')\r\n\t})\r\n\r\n\tit('should accept country code argument', () => {\r\n\t\tconst phoneNumber = new PhoneNumber('RU', '8005553535', metadata)\r\n\t\tphoneNumber.countryCallingCode.should.equal('7')\r\n\t\tphoneNumber.country.should.equal('RU')\r\n\t\tphoneNumber.number.should.equal('+78005553535')\r\n\t})\r\n\r\n\tit('should format number with options', () => {\r\n\t\tconst phoneNumber = new PhoneNumber('7', '8005553535', metadata)\r\n\t\tphoneNumber.ext = '123'\r\n\t\tphoneNumber.format('NATIONAL', {\r\n\t\t\tformatExtension: (number, extension) => `${number} доб. ${extension}`\r\n\t\t})\r\n\t\t.should.equal('8 (800) 555-35-35 доб. 123')\r\n\t})\r\n\r\n\tit('should compare phone numbers', () => {\r\n\t\tnew PhoneNumber('RU', '8005553535', metadata).isEqual(new PhoneNumber('RU', '8005553535', metadata)).should.equal(true)\r\n\t\tnew PhoneNumber('RU', '8005553535', metadata).isEqual(new PhoneNumber('7', '8005553535', metadata)).should.equal(true)\r\n\t\tnew PhoneNumber('RU', '8005553535', metadata).isEqual(new PhoneNumber('RU', '8005553536', metadata)).should.equal(false)\r\n\t})\r\n\r\n\tit('should tell if a number is non-geographic', () => {\r\n\t\tnew PhoneNumber('7', '8005553535', metadata).isNonGeographic().should.equal(false)\r\n\t\tnew PhoneNumber('870', '773111632', metadata).isNonGeographic().should.equal(true)\r\n\t})\r\n\r\n\tit('should allow setting extension', () => {\r\n\t\tconst phoneNumber = new PhoneNumber('1', '2133734253', metadata)\r\n\t\tphoneNumber.setExt('1234')\r\n\t\tphoneNumber.ext.should.equal('1234')\r\n\t\tphoneNumber.formatNational().should.equal('(213) 373-4253 ext. 1234')\r\n\t})\r\n})"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumberMatcher.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumberMatcher.js new file mode 100644 index 00000000..bbb27f62 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumberMatcher.js @@ -0,0 +1,388 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _PhoneNumber = _interopRequireDefault(require("./PhoneNumber.js")); + +var _constants = require("./constants.js"); + +var _createExtensionPattern = _interopRequireDefault(require("./helpers/extension/createExtensionPattern.js")); + +var _RegExpCache = _interopRequireDefault(require("./findNumbers/RegExpCache.js")); + +var _util = require("./findNumbers/util.js"); + +var _utf = require("./findNumbers/utf-8.js"); + +var _Leniency = _interopRequireDefault(require("./findNumbers/Leniency.js")); + +var _parsePreCandidate = _interopRequireDefault(require("./findNumbers/parsePreCandidate.js")); + +var _isValidPreCandidate = _interopRequireDefault(require("./findNumbers/isValidPreCandidate.js")); + +var _isValidCandidate = _interopRequireWildcard(require("./findNumbers/isValidCandidate.js")); + +var _metadata = require("./metadata.js"); + +var _parse_ = _interopRequireDefault(require("./parse_.js")); + +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } + +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +var EXTN_PATTERNS_FOR_MATCHING = (0, _createExtensionPattern["default"])('matching'); +/** + * Patterns used to extract phone numbers from a larger phone-number-like pattern. These are + * ordered according to specificity. For example, white-space is last since that is frequently + * used in numbers, not just to separate two numbers. We have separate patterns since we don't + * want to break up the phone-number-like text on more than one different kind of symbol at one + * time, although symbols of the same type (e.g. space) can be safely grouped together. + * + * Note that if there is a match, we will always check any text found up to the first match as + * well. + */ + +var INNER_MATCHES = [// Breaks on the slash - e.g. "651-234-2345/332-445-1234" +'\\/+(.*)/', // Note that the bracket here is inside the capturing group, since we consider it part of the +// phone number. Will match a pattern like "(650) 223 3345 (754) 223 3321". +'(\\([^(]*)', // Breaks on a hyphen - e.g. "12345 - 332-445-1234 is my number." +// We require a space on either side of the hyphen for it to be considered a separator. +"(?:".concat(_utf.pZ, "-|-").concat(_utf.pZ, ")").concat(_utf.pZ, "*(.+)"), // Various types of wide hyphens. Note we have decided not to enforce a space here, since it's +// possible that it's supposed to be used to break two numbers without spaces, and we haven't +// seen many instances of it used within a number. +"[\u2012-\u2015\uFF0D]".concat(_utf.pZ, "*(.+)"), // Breaks on a full stop - e.g. "12345. 332-445-1234 is my number." +"\\.+".concat(_utf.pZ, "*([^.]+)"), // Breaks on space - e.g. "3324451234 8002341234" +"".concat(_utf.pZ, "+(").concat(_utf.PZ, "+)")]; // Limit on the number of leading (plus) characters. + +var leadLimit = (0, _util.limit)(0, 2); // Limit on the number of consecutive punctuation characters. + +var punctuationLimit = (0, _util.limit)(0, 4); +/* The maximum number of digits allowed in a digit-separated block. As we allow all digits in a + * single block, set high enough to accommodate the entire national number and the international + * country code. */ + +var digitBlockLimit = _constants.MAX_LENGTH_FOR_NSN + _constants.MAX_LENGTH_COUNTRY_CODE; // Limit on the number of blocks separated by punctuation. +// Uses digitBlockLimit since some formats use spaces to separate each digit. + +var blockLimit = (0, _util.limit)(0, digitBlockLimit); +/* A punctuation sequence allowing white space. */ + +var punctuation = "[".concat(_constants.VALID_PUNCTUATION, "]") + punctuationLimit; // A digits block without punctuation. + +var digitSequence = _utf.pNd + (0, _util.limit)(1, digitBlockLimit); +/** + * Phone number pattern allowing optional punctuation. + * The phone number pattern used by `find()`, similar to + * VALID_PHONE_NUMBER, but with the following differences: + *
    + *
  • All captures are limited in order to place an upper bound to the text matched by the + * pattern. + *
      + *
    • Leading punctuation / plus signs are limited. + *
    • Consecutive occurrences of punctuation are limited. + *
    • Number of digits is limited. + *
    + *
  • No whitespace is allowed at the start or end. + *
  • No alpha digits (vanity numbers such as 1-800-SIX-FLAGS) are currently supported. + *
+ */ + +var PATTERN = '(?:' + _isValidCandidate.LEAD_CLASS + punctuation + ')' + leadLimit + digitSequence + '(?:' + punctuation + digitSequence + ')' + blockLimit + '(?:' + EXTN_PATTERNS_FOR_MATCHING + ')?'; // Regular expression of trailing characters that we want to remove. +// We remove all characters that are not alpha or numerical characters. +// The hash character is retained here, as it may signify +// the previous block was an extension. +// +// // Don't know what does '&&' mean here. +// const UNWANTED_END_CHAR_PATTERN = new RegExp(`[[\\P{N}&&\\P{L}]&&[^#]]+$`) +// + +var UNWANTED_END_CHAR_PATTERN = new RegExp("[^".concat(_utf._pN).concat(_utf._pL, "#]+$")); +var NON_DIGITS_PATTERN = /(\D+)/; +var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1; +/** + * A stateful class that finds and extracts telephone numbers from {@linkplain CharSequence text}. + * Instances can be created using the {@linkplain PhoneNumberUtil#findNumbers factory methods} in + * {@link PhoneNumberUtil}. + * + *

Vanity numbers (phone numbers using alphabetic digits such as 1-800-SIX-FLAGS are + * not found. + * + *

This class is not thread-safe. + */ + +var PhoneNumberMatcher = /*#__PURE__*/function () { + /** + * Creates a new instance. See the factory methods in {@link PhoneNumberUtil} on how to obtain a + * new instance. + * + * @param util the phone number util to use + * @param text the character sequence that we will search, null for no text + * @param country the country to assume for phone numbers not written in international format + * (with a leading plus, or with the international dialing prefix of the specified region). + * May be null or "ZZ" if only numbers with a leading plus should be + * considered. + * @param leniency the leniency to use when evaluating candidate phone numbers + * @param maxTries the maximum number of invalid numbers to try before giving up on the text. + * This is to cover degenerate cases where the text has a lot of false positives in it. Must + * be {@code >= 0}. + */ + function PhoneNumberMatcher() { + var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var metadata = arguments.length > 2 ? arguments[2] : undefined; + + _classCallCheck(this, PhoneNumberMatcher); + + options = _objectSpread(_objectSpread({}, options), {}, { + defaultCallingCode: options.defaultCallingCode, + defaultCountry: options.defaultCountry && (0, _metadata.isSupportedCountry)(options.defaultCountry, metadata) ? options.defaultCountry : undefined, + leniency: options.leniency || options.extended ? 'POSSIBLE' : 'VALID', + maxTries: options.maxTries || MAX_SAFE_INTEGER + }); + + if (!options.leniency) { + throw new TypeError('`Leniency` not supplied'); + } + + if (options.maxTries < 0) { + throw new TypeError('`maxTries` not supplied'); + } + + this.text = text; + this.options = options; + this.metadata = metadata; + /** The degree of validation requested. */ + + this.leniency = _Leniency["default"][options.leniency]; + + if (!this.leniency) { + throw new TypeError("Unknown leniency: ".concat(options.leniency, ".")); + } + /** The maximum number of retries after matching an invalid number. */ + + + this.maxTries = options.maxTries; + this.PATTERN = new RegExp(PATTERN, 'ig'); + /** The iteration tristate. */ + + this.state = 'NOT_READY'; + /** The next index to start searching at. Undefined in {@link State#DONE}. */ + + this.searchIndex = 0; // A cache for frequently used country-specific regular expressions. Set to 32 to cover ~2-3 + // countries being used for the same doc with ~10 patterns for each country. Some pages will have + // a lot more countries in use, but typically fewer numbers for each so expanding the cache for + // that use-case won't have a lot of benefit. + + this.regExpCache = new _RegExpCache["default"](32); + } + /** + * Attempts to find the next subsequence in the searched sequence on or after {@code searchIndex} + * that represents a phone number. Returns the next match, null if none was found. + * + * @param index the search index to start searching at + * @return the phone number match found, null if none can be found + */ + + + _createClass(PhoneNumberMatcher, [{ + key: "find", + value: function find() { + // // Reset the regular expression. + // this.PATTERN.lastIndex = index + var matches; + + while (this.maxTries > 0 && (matches = this.PATTERN.exec(this.text)) !== null) { + var candidate = matches[0]; + var offset = matches.index; + candidate = (0, _parsePreCandidate["default"])(candidate); + + if ((0, _isValidPreCandidate["default"])(candidate, offset, this.text)) { + var match = // Try to come up with a valid match given the entire candidate. + this.parseAndVerify(candidate, offset, this.text) // If that failed, try to find an "inner match" - + // there might be a phone number within this candidate. + || this.extractInnerMatch(candidate, offset, this.text); + + if (match) { + if (this.options.v2) { + var phoneNumber = new _PhoneNumber["default"](match.country || match.countryCallingCode, match.phone, this.metadata); + + if (match.ext) { + phoneNumber.ext = match.ext; + } + + return { + startsAt: match.startsAt, + endsAt: match.endsAt, + number: phoneNumber + }; + } + + return match; + } + } + + this.maxTries--; + } + } + /** + * Attempts to extract a match from `substring` + * if the substring itself does not qualify as a match. + */ + + }, { + key: "extractInnerMatch", + value: function extractInnerMatch(substring, offset, text) { + for (var _iterator = _createForOfIteratorHelperLoose(INNER_MATCHES), _step; !(_step = _iterator()).done;) { + var innerMatchPattern = _step.value; + var isFirstMatch = true; + var candidateMatch = void 0; + var innerMatchRegExp = new RegExp(innerMatchPattern, 'g'); + + while (this.maxTries > 0 && (candidateMatch = innerMatchRegExp.exec(substring)) !== null) { + if (isFirstMatch) { + // We should handle any group before this one too. + var _candidate = (0, _util.trimAfterFirstMatch)(UNWANTED_END_CHAR_PATTERN, substring.slice(0, candidateMatch.index)); + + var _match = this.parseAndVerify(_candidate, offset, text); + + if (_match) { + return _match; + } + + this.maxTries--; + isFirstMatch = false; + } + + var candidate = (0, _util.trimAfterFirstMatch)(UNWANTED_END_CHAR_PATTERN, candidateMatch[1]); // Java code does `groupMatcher.start(1)` here, + // but there's no way in javascript to get a `candidate` start index, + // therefore resort to using this kind of an approximation. + // (`groupMatcher` is called `candidateInSubstringMatch` in this javascript port) + // https://stackoverflow.com/questions/15934353/get-index-of-each-capture-in-a-javascript-regex + + var candidateIndexGuess = substring.indexOf(candidate, candidateMatch.index); + var match = this.parseAndVerify(candidate, offset + candidateIndexGuess, text); + + if (match) { + return match; + } + + this.maxTries--; + } + } + } + /** + * Parses a phone number from the `candidate` using `parseNumber` and + * verifies it matches the requested `leniency`. If parsing and verification succeed, + * a corresponding `PhoneNumberMatch` is returned, otherwise this method returns `null`. + * + * @param candidate the candidate match + * @param offset the offset of {@code candidate} within {@link #text} + * @return the parsed and validated phone number match, or null + */ + + }, { + key: "parseAndVerify", + value: function parseAndVerify(candidate, offset, text) { + if (!(0, _isValidCandidate["default"])(candidate, offset, text, this.options.leniency)) { + return; + } + + var number = (0, _parse_["default"])(candidate, { + extended: true, + defaultCountry: this.options.defaultCountry, + defaultCallingCode: this.options.defaultCallingCode + }, this.metadata); + + if (!number.possible) { + return; + } + + if (this.leniency(number, candidate, this.metadata, this.regExpCache)) { + // // We used parseAndKeepRawInput to create this number, + // // but for now we don't return the extra values parsed. + // // TODO: stop clearing all values here and switch all users over + // // to using rawInput() rather than the rawString() of PhoneNumberMatch. + // number.clearCountryCodeSource() + // number.clearRawInput() + // number.clearPreferredDomesticCarrierCode() + var result = { + startsAt: offset, + endsAt: offset + candidate.length, + phone: number.phone + }; + + if (number.country && number.country !== '001') { + result.country = number.country; + } else { + result.countryCallingCode = number.countryCallingCode; + } + + if (number.ext) { + result.ext = number.ext; + } + + return result; + } + } + }, { + key: "hasNext", + value: function hasNext() { + if (this.state === 'NOT_READY') { + this.lastMatch = this.find(); // (this.searchIndex) + + if (this.lastMatch) { + // this.searchIndex = this.lastMatch.endsAt + this.state = 'READY'; + } else { + this.state = 'DONE'; + } + } + + return this.state === 'READY'; + } + }, { + key: "next", + value: function next() { + // Check the state and find the next match as a side-effect if necessary. + if (!this.hasNext()) { + throw new Error('No next element'); + } // Don't retain that memory any longer than necessary. + + + var result = this.lastMatch; + this.lastMatch = null; + this.state = 'NOT_READY'; + return result; + } + }]); + + return PhoneNumberMatcher; +}(); + +exports["default"] = PhoneNumberMatcher; +//# sourceMappingURL=PhoneNumberMatcher.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumberMatcher.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumberMatcher.js.map new file mode 100644 index 00000000..391fda65 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumberMatcher.js.map @@ -0,0 +1 @@ +{"version":3,"file":"PhoneNumberMatcher.js","names":["EXTN_PATTERNS_FOR_MATCHING","createExtensionPattern","INNER_MATCHES","pZ","PZ","leadLimit","limit","punctuationLimit","digitBlockLimit","MAX_LENGTH_FOR_NSN","MAX_LENGTH_COUNTRY_CODE","blockLimit","punctuation","VALID_PUNCTUATION","digitSequence","pNd","PATTERN","LEAD_CLASS","UNWANTED_END_CHAR_PATTERN","RegExp","_pN","_pL","NON_DIGITS_PATTERN","MAX_SAFE_INTEGER","Number","Math","pow","PhoneNumberMatcher","text","options","metadata","defaultCallingCode","defaultCountry","isSupportedCountry","undefined","leniency","extended","maxTries","TypeError","Leniency","state","searchIndex","regExpCache","RegExpCache","matches","exec","candidate","offset","index","parsePreCandidate","isValidPreCandidate","match","parseAndVerify","extractInnerMatch","v2","phoneNumber","PhoneNumber","country","countryCallingCode","phone","ext","startsAt","endsAt","number","substring","innerMatchPattern","isFirstMatch","candidateMatch","innerMatchRegExp","trimAfterFirstMatch","slice","candidateIndexGuess","indexOf","isValidCandidate","parseNumber","possible","result","length","lastMatch","find","hasNext","Error"],"sources":["../source/PhoneNumberMatcher.js"],"sourcesContent":["/**\r\n * A port of Google's `PhoneNumberMatcher.java`.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberMatcher.java\r\n * Date: 08.03.2018.\r\n */\r\n\r\nimport PhoneNumber from './PhoneNumber.js'\r\n\r\nimport {\r\n MAX_LENGTH_FOR_NSN,\r\n MAX_LENGTH_COUNTRY_CODE,\r\n VALID_PUNCTUATION\r\n} from './constants.js'\r\n\r\nimport createExtensionPattern from './helpers/extension/createExtensionPattern.js'\r\n\r\nimport RegExpCache from './findNumbers/RegExpCache.js'\r\n\r\nimport {\r\n\tlimit,\r\n\ttrimAfterFirstMatch\r\n} from './findNumbers/util.js'\r\n\r\nimport {\r\n\t_pL,\r\n\t_pN,\r\n\tpZ,\r\n\tPZ,\r\n\tpNd\r\n} from './findNumbers/utf-8.js'\r\n\r\nimport Leniency from './findNumbers/Leniency.js'\r\nimport parsePreCandidate from './findNumbers/parsePreCandidate.js'\r\nimport isValidPreCandidate from './findNumbers/isValidPreCandidate.js'\r\nimport isValidCandidate, { LEAD_CLASS } from './findNumbers/isValidCandidate.js'\r\n\r\nimport { isSupportedCountry } from './metadata.js'\r\n\r\nimport parseNumber from './parse_.js'\r\n\r\nconst EXTN_PATTERNS_FOR_MATCHING = createExtensionPattern('matching')\r\n\r\n/**\r\n * Patterns used to extract phone numbers from a larger phone-number-like pattern. These are\r\n * ordered according to specificity. For example, white-space is last since that is frequently\r\n * used in numbers, not just to separate two numbers. We have separate patterns since we don't\r\n * want to break up the phone-number-like text on more than one different kind of symbol at one\r\n * time, although symbols of the same type (e.g. space) can be safely grouped together.\r\n *\r\n * Note that if there is a match, we will always check any text found up to the first match as\r\n * well.\r\n */\r\nconst INNER_MATCHES =\r\n[\r\n\t// Breaks on the slash - e.g. \"651-234-2345/332-445-1234\"\r\n\t'\\\\/+(.*)/',\r\n\r\n\t// Note that the bracket here is inside the capturing group, since we consider it part of the\r\n\t// phone number. Will match a pattern like \"(650) 223 3345 (754) 223 3321\".\r\n\t'(\\\\([^(]*)',\r\n\r\n\t// Breaks on a hyphen - e.g. \"12345 - 332-445-1234 is my number.\"\r\n\t// We require a space on either side of the hyphen for it to be considered a separator.\r\n\t`(?:${pZ}-|-${pZ})${pZ}*(.+)`,\r\n\r\n\t// Various types of wide hyphens. Note we have decided not to enforce a space here, since it's\r\n\t// possible that it's supposed to be used to break two numbers without spaces, and we haven't\r\n\t// seen many instances of it used within a number.\r\n\t`[\\u2012-\\u2015\\uFF0D]${pZ}*(.+)`,\r\n\r\n\t// Breaks on a full stop - e.g. \"12345. 332-445-1234 is my number.\"\r\n\t`\\\\.+${pZ}*([^.]+)`,\r\n\r\n\t// Breaks on space - e.g. \"3324451234 8002341234\"\r\n\t`${pZ}+(${PZ}+)`\r\n]\r\n\r\n// Limit on the number of leading (plus) characters.\r\nconst leadLimit = limit(0, 2)\r\n\r\n// Limit on the number of consecutive punctuation characters.\r\nconst punctuationLimit = limit(0, 4)\r\n\r\n/* The maximum number of digits allowed in a digit-separated block. As we allow all digits in a\r\n * single block, set high enough to accommodate the entire national number and the international\r\n * country code. */\r\nconst digitBlockLimit = MAX_LENGTH_FOR_NSN + MAX_LENGTH_COUNTRY_CODE\r\n\r\n// Limit on the number of blocks separated by punctuation.\r\n// Uses digitBlockLimit since some formats use spaces to separate each digit.\r\nconst blockLimit = limit(0, digitBlockLimit)\r\n\r\n/* A punctuation sequence allowing white space. */\r\nconst punctuation = `[${VALID_PUNCTUATION}]` + punctuationLimit\r\n\r\n// A digits block without punctuation.\r\nconst digitSequence = pNd + limit(1, digitBlockLimit)\r\n\r\n/**\r\n * Phone number pattern allowing optional punctuation.\r\n * The phone number pattern used by `find()`, similar to\r\n * VALID_PHONE_NUMBER, but with the following differences:\r\n *

    \r\n *
  • All captures are limited in order to place an upper bound to the text matched by the\r\n * pattern.\r\n *
      \r\n *
    • Leading punctuation / plus signs are limited.\r\n *
    • Consecutive occurrences of punctuation are limited.\r\n *
    • Number of digits is limited.\r\n *
    \r\n *
  • No whitespace is allowed at the start or end.\r\n *
  • No alpha digits (vanity numbers such as 1-800-SIX-FLAGS) are currently supported.\r\n *
\r\n */\r\nconst PATTERN = '(?:' + LEAD_CLASS + punctuation + ')' + leadLimit\r\n\t+ digitSequence + '(?:' + punctuation + digitSequence + ')' + blockLimit\r\n\t+ '(?:' + EXTN_PATTERNS_FOR_MATCHING + ')?'\r\n\r\n// Regular expression of trailing characters that we want to remove.\r\n// We remove all characters that are not alpha or numerical characters.\r\n// The hash character is retained here, as it may signify\r\n// the previous block was an extension.\r\n//\r\n// // Don't know what does '&&' mean here.\r\n// const UNWANTED_END_CHAR_PATTERN = new RegExp(`[[\\\\P{N}&&\\\\P{L}]&&[^#]]+$`)\r\n//\r\nconst UNWANTED_END_CHAR_PATTERN = new RegExp(`[^${_pN}${_pL}#]+$`)\r\n\r\nconst NON_DIGITS_PATTERN = /(\\D+)/\r\n\r\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1\r\n\r\n/**\r\n * A stateful class that finds and extracts telephone numbers from {@linkplain CharSequence text}.\r\n * Instances can be created using the {@linkplain PhoneNumberUtil#findNumbers factory methods} in\r\n * {@link PhoneNumberUtil}.\r\n *\r\n *

Vanity numbers (phone numbers using alphabetic digits such as 1-800-SIX-FLAGS are\r\n * not found.\r\n *\r\n *

This class is not thread-safe.\r\n */\r\nexport default class PhoneNumberMatcher\r\n{\r\n /**\r\n * Creates a new instance. See the factory methods in {@link PhoneNumberUtil} on how to obtain a\r\n * new instance.\r\n *\r\n * @param util the phone number util to use\r\n * @param text the character sequence that we will search, null for no text\r\n * @param country the country to assume for phone numbers not written in international format\r\n * (with a leading plus, or with the international dialing prefix of the specified region).\r\n * May be null or \"ZZ\" if only numbers with a leading plus should be\r\n * considered.\r\n * @param leniency the leniency to use when evaluating candidate phone numbers\r\n * @param maxTries the maximum number of invalid numbers to try before giving up on the text.\r\n * This is to cover degenerate cases where the text has a lot of false positives in it. Must\r\n * be {@code >= 0}.\r\n */\r\n constructor(text = '', options = {}, metadata)\r\n {\r\n options = {\r\n ...options,\r\n defaultCallingCode: options.defaultCallingCode,\r\n defaultCountry: options.defaultCountry && isSupportedCountry(options.defaultCountry, metadata) ? options.defaultCountry : undefined,\r\n leniency: options.leniency || options.extended ? 'POSSIBLE' : 'VALID',\r\n maxTries: options.maxTries || MAX_SAFE_INTEGER\r\n }\r\n\r\n\t\tif (!options.leniency) {\r\n\t\t\tthrow new TypeError('`Leniency` not supplied')\r\n\t\t}\r\n\r\n\t\tif (options.maxTries < 0) {\r\n\t\t\tthrow new TypeError('`maxTries` not supplied')\r\n\t\t}\r\n\r\n\t\tthis.text = text\r\n\t\tthis.options = options\r\n this.metadata = metadata\r\n\r\n\t\t/** The degree of validation requested. */\r\n\t\tthis.leniency = Leniency[options.leniency]\r\n\r\n\t\tif (!this.leniency) {\r\n\t\t\tthrow new TypeError(`Unknown leniency: ${options.leniency}.`)\r\n\t\t}\r\n\r\n\t\t/** The maximum number of retries after matching an invalid number. */\r\n\t\tthis.maxTries = options.maxTries\r\n\r\n\t\tthis.PATTERN = new RegExp(PATTERN, 'ig')\r\n\r\n\r\n /** The iteration tristate. */\r\n this.state = 'NOT_READY'\r\n\r\n /** The next index to start searching at. Undefined in {@link State#DONE}. */\r\n this.searchIndex = 0\r\n\r\n // A cache for frequently used country-specific regular expressions. Set to 32 to cover ~2-3\r\n // countries being used for the same doc with ~10 patterns for each country. Some pages will have\r\n // a lot more countries in use, but typically fewer numbers for each so expanding the cache for\r\n // that use-case won't have a lot of benefit.\r\n this.regExpCache = new RegExpCache(32)\r\n }\r\n\r\n /**\r\n * Attempts to find the next subsequence in the searched sequence on or after {@code searchIndex}\r\n * that represents a phone number. Returns the next match, null if none was found.\r\n *\r\n * @param index the search index to start searching at\r\n * @return the phone number match found, null if none can be found\r\n */\r\n\tfind() {\r\n\t\t// // Reset the regular expression.\r\n\t\t// this.PATTERN.lastIndex = index\r\n\r\n\t\tlet matches\r\n\t\twhile ((this.maxTries > 0) && (matches = this.PATTERN.exec(this.text)) !== null) {\r\n\t\t\tlet candidate = matches[0]\r\n\t\t\tconst offset = matches.index\r\n\r\n\t\t\tcandidate = parsePreCandidate(candidate)\r\n\r\n\t\t\tif (isValidPreCandidate(candidate, offset, this.text)) {\r\n\t\t\t\tconst match =\r\n\t\t\t\t\t// Try to come up with a valid match given the entire candidate.\r\n\t\t\t\t\tthis.parseAndVerify(candidate, offset, this.text)\r\n\t\t\t\t\t// If that failed, try to find an \"inner match\" -\r\n\t\t\t\t\t// there might be a phone number within this candidate.\r\n\t\t\t\t\t|| this.extractInnerMatch(candidate, offset, this.text)\r\n\r\n\t\t\t\tif (match) {\r\n\t\t\t\t\tif (this.options.v2) {\r\n\t\t\t\t\t\tconst phoneNumber = new PhoneNumber(\r\n match.country || match.countryCallingCode,\r\n match.phone,\r\n this.metadata\r\n )\r\n\t\t\t\t\t\tif (match.ext) {\r\n\t\t\t\t\t\t\tphoneNumber.ext = match.ext\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tstartsAt: match.startsAt,\r\n\t\t\t\t\t\t\tendsAt: match.endsAt,\r\n\t\t\t\t\t\t\tnumber: phoneNumber\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn match\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.maxTries--\r\n\t\t}\r\n\t}\r\n\r\n /**\r\n * Attempts to extract a match from `substring`\r\n * if the substring itself does not qualify as a match.\r\n */\r\n extractInnerMatch(substring, offset, text) {\r\n for (const innerMatchPattern of INNER_MATCHES) {\r\n let isFirstMatch = true\r\n let candidateMatch\r\n const innerMatchRegExp = new RegExp(innerMatchPattern, 'g')\r\n while (this.maxTries > 0 && (candidateMatch = innerMatchRegExp.exec(substring)) !== null) {\r\n if (isFirstMatch) {\r\n // We should handle any group before this one too.\r\n const candidate = trimAfterFirstMatch(\r\n UNWANTED_END_CHAR_PATTERN,\r\n substring.slice(0, candidateMatch.index)\r\n )\r\n\r\n const match = this.parseAndVerify(candidate, offset, text)\r\n\r\n if (match) {\r\n return match\r\n }\r\n\r\n this.maxTries--\r\n isFirstMatch = false\r\n }\r\n\r\n const candidate = trimAfterFirstMatch(UNWANTED_END_CHAR_PATTERN, candidateMatch[1])\r\n\r\n // Java code does `groupMatcher.start(1)` here,\r\n // but there's no way in javascript to get a `candidate` start index,\r\n // therefore resort to using this kind of an approximation.\r\n // (`groupMatcher` is called `candidateInSubstringMatch` in this javascript port)\r\n // https://stackoverflow.com/questions/15934353/get-index-of-each-capture-in-a-javascript-regex\r\n const candidateIndexGuess = substring.indexOf(candidate, candidateMatch.index)\r\n\r\n const match = this.parseAndVerify(candidate, offset + candidateIndexGuess, text)\r\n if (match) {\r\n return match\r\n }\r\n\r\n this.maxTries--\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Parses a phone number from the `candidate` using `parseNumber` and\r\n * verifies it matches the requested `leniency`. If parsing and verification succeed,\r\n * a corresponding `PhoneNumberMatch` is returned, otherwise this method returns `null`.\r\n *\r\n * @param candidate the candidate match\r\n * @param offset the offset of {@code candidate} within {@link #text}\r\n * @return the parsed and validated phone number match, or null\r\n */\r\n parseAndVerify(candidate, offset, text) {\r\n if (!isValidCandidate(candidate, offset, text, this.options.leniency)) {\r\n return\r\n \t}\r\n\r\n const number = parseNumber(\r\n candidate, {\r\n extended: true,\r\n defaultCountry: this.options.defaultCountry,\r\n defaultCallingCode: this.options.defaultCallingCode\r\n },\r\n this.metadata\r\n )\r\n\r\n if (!number.possible) {\r\n return\r\n }\r\n\r\n if (this.leniency(number, candidate, this.metadata, this.regExpCache)) {\r\n // // We used parseAndKeepRawInput to create this number,\r\n // // but for now we don't return the extra values parsed.\r\n // // TODO: stop clearing all values here and switch all users over\r\n // // to using rawInput() rather than the rawString() of PhoneNumberMatch.\r\n // number.clearCountryCodeSource()\r\n // number.clearRawInput()\r\n // number.clearPreferredDomesticCarrierCode()\r\n\r\n const result = {\r\n startsAt: offset,\r\n endsAt: offset + candidate.length,\r\n phone: number.phone\r\n }\r\n\r\n if (number.country && number.country !== '001') {\r\n result.country = number.country\r\n } else {\r\n result.countryCallingCode = number.countryCallingCode\r\n }\r\n\r\n if (number.ext) {\r\n result.ext = number.ext\r\n }\r\n\r\n return result\r\n }\r\n }\r\n\r\n hasNext()\r\n {\r\n if (this.state === 'NOT_READY')\r\n {\r\n this.lastMatch = this.find() // (this.searchIndex)\r\n\r\n if (this.lastMatch)\r\n {\r\n // this.searchIndex = this.lastMatch.endsAt\r\n this.state = 'READY'\r\n }\r\n else\r\n {\r\n this.state = 'DONE'\r\n }\r\n }\r\n\r\n return this.state === 'READY'\r\n }\r\n\r\n next()\r\n {\r\n // Check the state and find the next match as a side-effect if necessary.\r\n if (!this.hasNext())\r\n {\r\n throw new Error('No next element')\r\n }\r\n\r\n // Don't retain that memory any longer than necessary.\r\n const result = this.lastMatch\r\n this.lastMatch = null\r\n this.state = 'NOT_READY'\r\n return result\r\n }\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumberMatcher.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumberMatcher.test.js new file mode 100644 index 00000000..8ba46d5b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumberMatcher.test.js @@ -0,0 +1,79 @@ +"use strict"; + +var _PhoneNumberMatcher = _interopRequireDefault(require("./PhoneNumberMatcher.js")); + +var _metadataMin = _interopRequireDefault(require("../metadata.min.json")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function test(text, defaultCountry, expectedNumbers) { + if (typeof expectedNumbers === 'string') { + expectedNumbers = [{ + nationalNumber: expectedNumbers + }]; + } + + var matcher = new _PhoneNumberMatcher["default"](text, { + defaultCountry: defaultCountry, + v2: true + }, _metadataMin["default"]); + + while (matcher.hasNext()) { + var number = matcher.next(); + var phoneNumber = expectedNumbers.shift(); + + if (phoneNumber.startsAt !== undefined) { + number.startsAt.should.equal(phoneNumber.startsAt); + } + + if (phoneNumber.endsAt !== undefined) { + number.endsAt.should.equal(phoneNumber.endsAt); + } + + number.number.country.should.equal(phoneNumber.country || defaultCountry); + number.number.nationalNumber.should.equal(phoneNumber.nationalNumber); + } + + expectedNumbers.length.should.equal(0); +} + +describe('PhoneNumberMatcher', function () { + it('should find phone numbers', function () { + test('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', [{ + country: 'RU', + nationalNumber: '8005553535', + startsAt: 14, + endsAt: 32 + }, { + country: 'US', + nationalNumber: '2133734253', + startsAt: 41, + endsAt: 55 + }]); + }); + it('should find phone numbers from Mexico', function () { + // Test parsing fixed-line numbers of Mexico. + test('+52 (449)978-0001', 'MX', '4499780001'); + test('01 (449)978-0001', 'MX', '4499780001'); + test('(449)978-0001', 'MX', '4499780001'); // Test parsing mobile numbers of Mexico. + + test('+52 1 33 1234-5678', 'MX', '3312345678'); + test('044 (33) 1234-5678', 'MX', '3312345678'); + test('045 33 1234-5678', 'MX', '3312345678'); + }); + it('should find phone numbers from Argentina', function () { + // Test parsing mobile numbers of Argentina. + test('+54 9 343 555 1212', 'AR', '93435551212'); + test('0343 15-555-1212', 'AR', '93435551212'); + test('+54 9 3715 65 4320', 'AR', '93715654320'); + test('03715 15 65 4320', 'AR', '93715654320'); // Test parsing fixed-line numbers of Argentina. + + test('+54 11 3797 0000', 'AR', '1137970000'); + test('011 3797 0000', 'AR', '1137970000'); + test('+54 3715 65 4321', 'AR', '3715654321'); + test('03715 65 4321', 'AR', '3715654321'); + test('+54 23 1234 0000', 'AR', '2312340000'); + test('023 1234 0000', 'AR', '2312340000'); + }); +}); +//# sourceMappingURL=PhoneNumberMatcher.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumberMatcher.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumberMatcher.test.js.map new file mode 100644 index 00000000..d1cf4d0f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/PhoneNumberMatcher.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"PhoneNumberMatcher.test.js","names":["test","text","defaultCountry","expectedNumbers","nationalNumber","matcher","PhoneNumberMatcher","v2","metadata","hasNext","number","next","phoneNumber","shift","startsAt","undefined","should","equal","endsAt","country","length","describe","it"],"sources":["../source/PhoneNumberMatcher.test.js"],"sourcesContent":["import PhoneNumberMatcher from './PhoneNumberMatcher.js'\r\nimport metadata from '../metadata.min.json' assert { type: 'json' }\r\n\r\nfunction test(text, defaultCountry, expectedNumbers) {\r\n\tif (typeof expectedNumbers === 'string') {\r\n\t\texpectedNumbers = [{\r\n\t\t\tnationalNumber: expectedNumbers\r\n\t\t}]\r\n\t}\r\n\tconst matcher = new PhoneNumberMatcher(text, { defaultCountry, v2: true }, metadata)\r\n\twhile (matcher.hasNext()) {\r\n\t\tconst number = matcher.next()\r\n\t\tconst phoneNumber = expectedNumbers.shift()\r\n\t\tif (phoneNumber.startsAt !== undefined) {\r\n\t\t\tnumber.startsAt.should.equal(phoneNumber.startsAt)\r\n\t\t}\r\n\t\tif (phoneNumber.endsAt !== undefined) {\r\n\t\t\tnumber.endsAt.should.equal(phoneNumber.endsAt)\r\n\t\t}\r\n\t\tnumber.number.country.should.equal(phoneNumber.country || defaultCountry)\r\n\t\tnumber.number.nationalNumber.should.equal(phoneNumber.nationalNumber)\r\n\t}\r\n\texpectedNumbers.length.should.equal(0)\r\n}\r\n\r\ndescribe('PhoneNumberMatcher', () => {\r\n\tit('should find phone numbers', () => {\r\n\t\ttest(\r\n\t\t\t'The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.',\r\n\t\t\t'US',\r\n\t\t\t[{\r\n\t\t\t\tcountry: 'RU',\r\n\t\t\t\tnationalNumber: '8005553535',\r\n\t\t\t\tstartsAt: 14,\r\n\t\t\t\tendsAt: 32\r\n\t\t\t}, {\r\n\t\t\t\tcountry: 'US',\r\n\t\t\t\tnationalNumber: '2133734253',\r\n\t\t\t\tstartsAt: 41,\r\n\t\t\t\tendsAt: 55\r\n\t\t\t}]\r\n\t\t)\r\n\t})\r\n\r\n\tit('should find phone numbers from Mexico', () => {\r\n\t\t// Test parsing fixed-line numbers of Mexico.\r\n\t\ttest('+52 (449)978-0001', 'MX', '4499780001')\r\n\t\ttest('01 (449)978-0001', 'MX', '4499780001')\r\n\t\ttest('(449)978-0001', 'MX', '4499780001')\r\n\t\t// Test parsing mobile numbers of Mexico.\r\n\t\ttest('+52 1 33 1234-5678', 'MX', '3312345678')\r\n\t\ttest('044 (33) 1234-5678', 'MX', '3312345678')\r\n\t\ttest('045 33 1234-5678', 'MX', '3312345678')\r\n\t})\r\n\r\n\tit('should find phone numbers from Argentina', () => {\r\n\t\t// Test parsing mobile numbers of Argentina.\r\n\t\ttest('+54 9 343 555 1212', 'AR', '93435551212')\r\n\t\ttest('0343 15-555-1212', 'AR', '93435551212')\r\n\r\n\t\ttest('+54 9 3715 65 4320', 'AR', '93715654320')\r\n\t\ttest('03715 15 65 4320', 'AR', '93715654320')\r\n\r\n\t\t// Test parsing fixed-line numbers of Argentina.\r\n\t\ttest('+54 11 3797 0000', 'AR', '1137970000')\r\n\t\ttest('011 3797 0000', 'AR', '1137970000')\r\n\r\n\t\ttest('+54 3715 65 4321', 'AR', '3715654321')\r\n\t\ttest('03715 65 4321', 'AR', '3715654321')\r\n\r\n\t\ttest('+54 23 1234 0000', 'AR', '2312340000')\r\n\t\ttest('023 1234 0000', 'AR', '2312340000')\r\n\t})\r\n})"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/constants.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/constants.js new file mode 100644 index 00000000..93dbc316 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/constants.js @@ -0,0 +1,39 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.WHITESPACE = exports.VALID_PUNCTUATION = exports.VALID_DIGITS = exports.PLUS_CHARS = exports.MIN_LENGTH_FOR_NSN = exports.MAX_LENGTH_FOR_NSN = exports.MAX_LENGTH_COUNTRY_CODE = void 0; +// The minimum length of the national significant number. +var MIN_LENGTH_FOR_NSN = 2; // The ITU says the maximum length should be 15, +// but one can find longer numbers in Germany. + +exports.MIN_LENGTH_FOR_NSN = MIN_LENGTH_FOR_NSN; +var MAX_LENGTH_FOR_NSN = 17; // The maximum length of the country calling code. + +exports.MAX_LENGTH_FOR_NSN = MAX_LENGTH_FOR_NSN; +var MAX_LENGTH_COUNTRY_CODE = 3; // Digits accepted in phone numbers +// (ascii, fullwidth, arabic-indic, and eastern arabic digits). + +exports.MAX_LENGTH_COUNTRY_CODE = MAX_LENGTH_COUNTRY_CODE; +var VALID_DIGITS = "0-9\uFF10-\uFF19\u0660-\u0669\u06F0-\u06F9"; // `DASHES` will be right after the opening square bracket of the "character class" + +exports.VALID_DIGITS = VALID_DIGITS; +var DASHES = "-\u2010-\u2015\u2212\u30FC\uFF0D"; +var SLASHES = "\uFF0F/"; +var DOTS = "\uFF0E."; +var WHITESPACE = " \xA0\xAD\u200B\u2060\u3000"; +exports.WHITESPACE = WHITESPACE; +var BRACKETS = "()\uFF08\uFF09\uFF3B\uFF3D\\[\\]"; // export const OPENING_BRACKETS = '(\uFF08\uFF3B\\\[' + +var TILDES = "~\u2053\u223C\uFF5E"; // Regular expression of acceptable punctuation found in phone numbers. This +// excludes punctuation found as a leading character only. This consists of dash +// characters, white space characters, full stops, slashes, square brackets, +// parentheses and tildes. Full-width variants are also present. + +var VALID_PUNCTUATION = "".concat(DASHES).concat(SLASHES).concat(DOTS).concat(WHITESPACE).concat(BRACKETS).concat(TILDES); +exports.VALID_PUNCTUATION = VALID_PUNCTUATION; +var PLUS_CHARS = "+\uFF0B"; // const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+') + +exports.PLUS_CHARS = PLUS_CHARS; +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/constants.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/constants.js.map new file mode 100644 index 00000000..bce9d5d3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","names":["MIN_LENGTH_FOR_NSN","MAX_LENGTH_FOR_NSN","MAX_LENGTH_COUNTRY_CODE","VALID_DIGITS","DASHES","SLASHES","DOTS","WHITESPACE","BRACKETS","TILDES","VALID_PUNCTUATION","PLUS_CHARS"],"sources":["../source/constants.js"],"sourcesContent":["// The minimum length of the national significant number.\r\nexport const MIN_LENGTH_FOR_NSN = 2\r\n\r\n// The ITU says the maximum length should be 15,\r\n// but one can find longer numbers in Germany.\r\nexport const MAX_LENGTH_FOR_NSN = 17\r\n\r\n// The maximum length of the country calling code.\r\nexport const MAX_LENGTH_COUNTRY_CODE = 3\r\n\r\n// Digits accepted in phone numbers\r\n// (ascii, fullwidth, arabic-indic, and eastern arabic digits).\r\nexport const VALID_DIGITS = '0-9\\uFF10-\\uFF19\\u0660-\\u0669\\u06F0-\\u06F9'\r\n\r\n// `DASHES` will be right after the opening square bracket of the \"character class\"\r\nconst DASHES = '-\\u2010-\\u2015\\u2212\\u30FC\\uFF0D'\r\nconst SLASHES = '\\uFF0F/'\r\nconst DOTS = '\\uFF0E.'\r\nexport const WHITESPACE = ' \\u00A0\\u00AD\\u200B\\u2060\\u3000'\r\nconst BRACKETS = '()\\uFF08\\uFF09\\uFF3B\\uFF3D\\\\[\\\\]'\r\n// export const OPENING_BRACKETS = '(\\uFF08\\uFF3B\\\\\\['\r\nconst TILDES = '~\\u2053\\u223C\\uFF5E'\r\n\r\n// Regular expression of acceptable punctuation found in phone numbers. This\r\n// excludes punctuation found as a leading character only. This consists of dash\r\n// characters, white space characters, full stops, slashes, square brackets,\r\n// parentheses and tildes. Full-width variants are also present.\r\nexport const VALID_PUNCTUATION = `${DASHES}${SLASHES}${DOTS}${WHITESPACE}${BRACKETS}${TILDES}`\r\n\r\nexport const PLUS_CHARS = '+\\uFF0B'\r\n// const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+')"],"mappings":";;;;;;AAAA;AACO,IAAMA,kBAAkB,GAAG,CAA3B,C,CAEP;AACA;;;AACO,IAAMC,kBAAkB,GAAG,EAA3B,C,CAEP;;;AACO,IAAMC,uBAAuB,GAAG,CAAhC,C,CAEP;AACA;;;AACO,IAAMC,YAAY,GAAG,4CAArB,C,CAEP;;;AACA,IAAMC,MAAM,GAAG,kCAAf;AACA,IAAMC,OAAO,GAAG,SAAhB;AACA,IAAMC,IAAI,GAAG,SAAb;AACO,IAAMC,UAAU,GAAG,6BAAnB;;AACP,IAAMC,QAAQ,GAAG,kCAAjB,C,CACA;;AACA,IAAMC,MAAM,GAAG,qBAAf,C,CAEA;AACA;AACA;AACA;;AACO,IAAMC,iBAAiB,aAAMN,MAAN,SAAeC,OAAf,SAAyBC,IAAzB,SAAgCC,UAAhC,SAA6CC,QAA7C,SAAwDC,MAAxD,CAAvB;;AAEA,IAAME,UAAU,GAAG,SAAnB,C,CACP"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers.js new file mode 100644 index 00000000..350dfcd4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers.js @@ -0,0 +1,22 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = findNumbers; + +var _findNumbers_ = _interopRequireDefault(require("./findNumbers_.js")); + +var _parsePhoneNumber = require("./parsePhoneNumber.js"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function findNumbers() { + var _normalizeArguments = (0, _parsePhoneNumber.normalizeArguments)(arguments), + text = _normalizeArguments.text, + options = _normalizeArguments.options, + metadata = _normalizeArguments.metadata; + + return (0, _findNumbers_["default"])(text, options, metadata); +} +//# sourceMappingURL=findNumbers.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers.js.map new file mode 100644 index 00000000..316cd4f8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers.js.map @@ -0,0 +1 @@ +{"version":3,"file":"findNumbers.js","names":["findNumbers","normalizeArguments","arguments","text","options","metadata","_findNumbers"],"sources":["../source/findNumbers.js"],"sourcesContent":["import _findNumbers from './findNumbers_.js'\r\nimport { normalizeArguments } from './parsePhoneNumber.js'\r\n\r\nexport default function findNumbers() {\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\treturn _findNumbers(text, options, metadata)\r\n}"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEe,SAASA,WAAT,GAAuB;EACrC,0BAAoC,IAAAC,oCAAA,EAAmBC,SAAnB,CAApC;EAAA,IAAQC,IAAR,uBAAQA,IAAR;EAAA,IAAcC,OAAd,uBAAcA,OAAd;EAAA,IAAuBC,QAAvB,uBAAuBA,QAAvB;;EACA,OAAO,IAAAC,wBAAA,EAAaH,IAAb,EAAmBC,OAAnB,EAA4BC,QAA5B,CAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers.test.js new file mode 100644 index 00000000..5ac024a4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers.test.js @@ -0,0 +1,194 @@ +"use strict"; + +var _findNumbers = _interopRequireDefault(require("./findNumbers.js")); + +var _metadataMax = _interopRequireDefault(require("../metadata.max.json")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +describe('findNumbers', function () { + it('should find numbers', function () { + (0, _findNumbers["default"])('2133734253', 'US', _metadataMax["default"]).should.deep.equal([{ + phone: '2133734253', + country: 'US', + startsAt: 0, + endsAt: 10 + }]); + (0, _findNumbers["default"])('(213) 373-4253', 'US', _metadataMax["default"]).should.deep.equal([{ + phone: '2133734253', + country: 'US', + startsAt: 0, + endsAt: 14 + }]); + (0, _findNumbers["default"])('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', _metadataMax["default"]).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + startsAt: 14, + endsAt: 32 + }, { + phone: '2133734253', + country: 'US', + startsAt: 41, + endsAt: 55 + }]); // Opening parenthesis issue. + // https://github.com/catamphetamine/libphonenumber-js/issues/252 + + (0, _findNumbers["default"])('The number is +7 (800) 555-35-35 and not (213) 373-4253 (that\'s not even in the same country!) as written in the document.', 'US', _metadataMax["default"]).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + startsAt: 14, + endsAt: 32 + }, { + phone: '2133734253', + country: 'US', + startsAt: 41, + endsAt: 55 + }]); // No default country. + + (0, _findNumbers["default"])('The number is +7 (800) 555-35-35 as written in the document.', _metadataMax["default"]).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + startsAt: 14, + endsAt: 32 + }]); // Passing `options` and default country. + + (0, _findNumbers["default"])('The number is +7 (800) 555-35-35 as written in the document.', 'US', { + leniency: 'VALID' + }, _metadataMax["default"]).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + startsAt: 14, + endsAt: 32 + }]); // Passing `options`. + + (0, _findNumbers["default"])('The number is +7 (800) 555-35-35 as written in the document.', { + leniency: 'VALID' + }, _metadataMax["default"]).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + startsAt: 14, + endsAt: 32 + }]); // Not a phone number and a phone number. + + (0, _findNumbers["default"])('Digits 12 are not a number, but +7 (800) 555-35-35 is.', { + leniency: 'VALID' + }, _metadataMax["default"]).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + startsAt: 32, + endsAt: 50 + }]); // Phone number extension. + + (0, _findNumbers["default"])('Date 02/17/2018 is not a number, but +7 (800) 555-35-35 ext. 123 is.', { + leniency: 'VALID' + }, _metadataMax["default"]).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + ext: '123', + startsAt: 37, + endsAt: 64 + }]); + }); + it('should find numbers (v2)', function () { + var phoneNumbers = (0, _findNumbers["default"])('The number is +7 (800) 555-35-35 ext. 1234 and not (213) 373-4253 as written in the document.', 'US', { + v2: true + }, _metadataMax["default"]); + phoneNumbers.length.should.equal(2); + phoneNumbers[0].startsAt.should.equal(14); + phoneNumbers[0].endsAt.should.equal(42); + phoneNumbers[0].number.number.should.equal('+78005553535'); + phoneNumbers[0].number.nationalNumber.should.equal('8005553535'); + phoneNumbers[0].number.country.should.equal('RU'); + phoneNumbers[0].number.countryCallingCode.should.equal('7'); + phoneNumbers[0].number.ext.should.equal('1234'); + phoneNumbers[1].startsAt.should.equal(51); + phoneNumbers[1].endsAt.should.equal(65); + phoneNumbers[1].number.number.should.equal('+12133734253'); + phoneNumbers[1].number.nationalNumber.should.equal('2133734253'); + phoneNumbers[1].number.country.should.equal('US'); + phoneNumbers[1].number.countryCallingCode.should.equal('1'); + }); + it('shouldn\'t find non-valid numbers', function () { + // Not a valid phone number for US. + (0, _findNumbers["default"])('1111111111', 'US', _metadataMax["default"]).should.deep.equal([]); + }); + it('should find non-European digits', function () { + // E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`. + (0, _findNumbers["default"])('العَرَبِيَّة‎ +٤٤٣٣٣٣٣٣٣٣٣٣عَرَبِيّ‎', _metadataMax["default"]).should.deep.equal([{ + country: 'GB', + phone: '3333333333', + startsAt: 14, + endsAt: 27 + }]); + }); + it('should work in edge cases', function () { + var thrower; // No input + + (0, _findNumbers["default"])('', _metadataMax["default"]).should.deep.equal([]); // // No country metadata for this `require` country code + // thrower = () => findNumbers('123', 'ZZ', metadata) + // thrower.should.throw('Unknown country') + // Numerical `value` + + thrower = function thrower() { + return (0, _findNumbers["default"])(2141111111, 'US'); + }; + + thrower.should["throw"]('A text for parsing must be a string.'); // // No metadata + // thrower = () => findNumbers('') + // thrower.should.throw('`metadata` argument not passed') + // No metadata, no default country, no phone numbers. + + (0, _findNumbers["default"])('').should.deep.equal([]); + }); + it('should find international numbers when passed a non-existent default country', function () { + var numbers = (0, _findNumbers["default"])('Phone: +7 (800) 555 35 35. National: 8 (800) 555-55-55', { + defaultCountry: 'XX', + v2: true + }, _metadataMax["default"]); + numbers.length.should.equal(1); + numbers[0].number.nationalNumber.should.equal('8005553535'); + }); + it('shouldn\'t find phone numbers which are not phone numbers', function () { + // A timestamp. + (0, _findNumbers["default"])('2012-01-02 08:00', 'US', _metadataMax["default"]).should.deep.equal([]); // A valid number (not a complete timestamp). + + (0, _findNumbers["default"])('2012-01-02 08', 'US', _metadataMax["default"]).should.deep.equal([{ + country: 'US', + phone: '2012010208', + startsAt: 0, + endsAt: 13 + }]); // Invalid parens. + + (0, _findNumbers["default"])('213(3734253', 'US', _metadataMax["default"]).should.deep.equal([]); // Letters after phone number. + + (0, _findNumbers["default"])('2133734253a', 'US', _metadataMax["default"]).should.deep.equal([]); // Valid phone (same as the one found in the UUID below). + + (0, _findNumbers["default"])('The phone number is 231354125.', 'FR', _metadataMax["default"]).should.deep.equal([{ + country: 'FR', + phone: '231354125', + startsAt: 20, + endsAt: 29 + }]); // Not a phone number (part of a UUID). + // Should parse in `{ extended: true }` mode. + + var possibleNumbers = (0, _findNumbers["default"])('The UUID is CA801c26f98cd16e231354125ad046e40b.', 'FR', { + extended: true + }, _metadataMax["default"]); + possibleNumbers.length.should.equal(1); + possibleNumbers[0].country.should.equal('FR'); + possibleNumbers[0].phone.should.equal('231354125'); // Not a phone number (part of a UUID). + // Shouldn't parse by default. + + (0, _findNumbers["default"])('The UUID is CA801c26f98cd16e231354125ad046e40b.', 'FR', _metadataMax["default"]).should.deep.equal([]); + }); // https://gitlab.com/catamphetamine/libphonenumber-js/-/merge_requests/4 + + it('should return correct `startsAt` and `endsAt` when matching "inner" candidates in a could-be-a-candidate substring', function () { + (0, _findNumbers["default"])('39945926 77200596 16533084', 'ID', _metadataMax["default"]).should.deep.equal([{ + country: 'ID', + phone: '77200596', + startsAt: 9, + endsAt: 17 + }]); + }); +}); +//# sourceMappingURL=findNumbers.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers.test.js.map new file mode 100644 index 00000000..caca4efe --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"findNumbers.test.js","names":["describe","it","findNumbers","metadata","should","deep","equal","phone","country","startsAt","endsAt","leniency","ext","phoneNumbers","v2","length","number","nationalNumber","countryCallingCode","thrower","numbers","defaultCountry","possibleNumbers","extended"],"sources":["../source/findNumbers.test.js"],"sourcesContent":["import findNumbers from './findNumbers.js'\r\nimport metadata from '../metadata.max.json' assert { type: 'json' }\r\n\r\ndescribe('findNumbers', () => {\r\n\tit('should find numbers', () => {\r\n\t\tfindNumbers('2133734253', 'US', metadata).should.deep.equal([{\r\n\t\t\tphone : '2133734253',\r\n\t\t\tcountry : 'US',\r\n\t\t\tstartsAt : 0,\r\n\t\t\tendsAt : 10\r\n\t\t}])\r\n\r\n\t\tfindNumbers('(213) 373-4253', 'US', metadata).should.deep.equal([{\r\n\t\t\tphone : '2133734253',\r\n\t\t\tcountry : 'US',\r\n\t\t\tstartsAt : 0,\r\n\t\t\tendsAt : 14\r\n\t\t}])\r\n\r\n\t\tfindNumbers('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t}, {\r\n\t\t\tphone : '2133734253',\r\n\t\t\tcountry : 'US',\r\n\t\t\tstartsAt : 41,\r\n\t\t\tendsAt : 55\r\n\t\t}])\r\n\r\n\t\t// Opening parenthesis issue.\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/252\r\n\t\tfindNumbers('The number is +7 (800) 555-35-35 and not (213) 373-4253 (that\\'s not even in the same country!) as written in the document.', 'US', metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t}, {\r\n\t\t\tphone : '2133734253',\r\n\t\t\tcountry : 'US',\r\n\t\t\tstartsAt : 41,\r\n\t\t\tendsAt : 55\r\n\t\t}])\r\n\r\n\t\t// No default country.\r\n\t\tfindNumbers('The number is +7 (800) 555-35-35 as written in the document.', metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t}])\r\n\r\n\t\t// Passing `options` and default country.\r\n\t\tfindNumbers('The number is +7 (800) 555-35-35 as written in the document.', 'US', { leniency: 'VALID' }, metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t}])\r\n\r\n\t\t// Passing `options`.\r\n\t\tfindNumbers('The number is +7 (800) 555-35-35 as written in the document.', { leniency: 'VALID' }, metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t}])\r\n\r\n\t\t// Not a phone number and a phone number.\r\n\t\tfindNumbers('Digits 12 are not a number, but +7 (800) 555-35-35 is.', { leniency: 'VALID' }, metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\tstartsAt : 32,\r\n\t\t\tendsAt : 50\r\n\t\t}])\r\n\r\n\t\t// Phone number extension.\r\n\t\tfindNumbers('Date 02/17/2018 is not a number, but +7 (800) 555-35-35 ext. 123 is.', { leniency: 'VALID' }, metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\text : '123',\r\n\t\t\tstartsAt : 37,\r\n\t\t\tendsAt : 64\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should find numbers (v2)', () => {\r\n\t\tconst phoneNumbers = findNumbers('The number is +7 (800) 555-35-35 ext. 1234 and not (213) 373-4253 as written in the document.', 'US', { v2: true }, metadata)\r\n\r\n\t\tphoneNumbers.length.should.equal(2)\r\n\r\n\t\tphoneNumbers[0].startsAt.should.equal(14)\r\n\t\tphoneNumbers[0].endsAt.should.equal(42)\r\n\r\n\t\tphoneNumbers[0].number.number.should.equal('+78005553535')\r\n\t\tphoneNumbers[0].number.nationalNumber.should.equal('8005553535')\r\n\t\tphoneNumbers[0].number.country.should.equal('RU')\r\n\t\tphoneNumbers[0].number.countryCallingCode.should.equal('7')\r\n\t\tphoneNumbers[0].number.ext.should.equal('1234')\r\n\r\n\t\tphoneNumbers[1].startsAt.should.equal(51)\r\n\t\tphoneNumbers[1].endsAt.should.equal(65)\r\n\r\n\t\tphoneNumbers[1].number.number.should.equal('+12133734253')\r\n\t\tphoneNumbers[1].number.nationalNumber.should.equal('2133734253')\r\n\t\tphoneNumbers[1].number.country.should.equal('US')\r\n\t\tphoneNumbers[1].number.countryCallingCode.should.equal('1')\r\n\t})\r\n\r\n\tit('shouldn\\'t find non-valid numbers', () => {\r\n\t\t// Not a valid phone number for US.\r\n\t\tfindNumbers('1111111111', 'US', metadata).should.deep.equal([])\r\n\t})\r\n\r\n\tit('should find non-European digits', () => {\r\n\t\t// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n\t\tfindNumbers('العَرَبِيَّة‎ +٤٤٣٣٣٣٣٣٣٣٣٣عَرَبِيّ‎', metadata).should.deep.equal([{\r\n\t\t\tcountry : 'GB',\r\n\t\t\tphone : '3333333333',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 27\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should work in edge cases', () => {\r\n\t\tlet thrower\r\n\r\n\t\t// No input\r\n\t\tfindNumbers('', metadata).should.deep.equal([])\r\n\r\n\t\t// // No country metadata for this `require` country code\r\n\t\t// thrower = () => findNumbers('123', 'ZZ', metadata)\r\n\t\t// thrower.should.throw('Unknown country')\r\n\r\n\t\t// Numerical `value`\r\n\t\tthrower = () => findNumbers(2141111111, 'US')\r\n\t\tthrower.should.throw('A text for parsing must be a string.')\r\n\r\n\t\t// // No metadata\r\n\t\t// thrower = () => findNumbers('')\r\n\t\t// thrower.should.throw('`metadata` argument not passed')\r\n\r\n\t\t// No metadata, no default country, no phone numbers.\r\n\t\tfindNumbers('').should.deep.equal([])\r\n\t})\r\n\r\n\tit('should find international numbers when passed a non-existent default country', () => {\r\n\t\tconst numbers = findNumbers('Phone: +7 (800) 555 35 35. National: 8 (800) 555-55-55', { defaultCountry: 'XX', v2: true }, metadata)\r\n\t\tnumbers.length.should.equal(1)\r\n\t\tnumbers[0].number.nationalNumber.should.equal('8005553535')\r\n\t})\r\n\r\n\tit('shouldn\\'t find phone numbers which are not phone numbers', () => {\r\n\t\t// A timestamp.\r\n\t\tfindNumbers('2012-01-02 08:00', 'US', metadata).should.deep.equal([])\r\n\r\n\t\t// A valid number (not a complete timestamp).\r\n\t\tfindNumbers('2012-01-02 08', 'US', metadata).should.deep.equal([{\r\n\t\t\tcountry : 'US',\r\n\t\t\tphone : '2012010208',\r\n\t\t\tstartsAt : 0,\r\n\t\t\tendsAt : 13\r\n\t\t}])\r\n\r\n\t\t// Invalid parens.\r\n\t\tfindNumbers('213(3734253', 'US', metadata).should.deep.equal([])\r\n\r\n\t\t// Letters after phone number.\r\n\t\tfindNumbers('2133734253a', 'US', metadata).should.deep.equal([])\r\n\r\n\t\t// Valid phone (same as the one found in the UUID below).\r\n\t\tfindNumbers('The phone number is 231354125.', 'FR', metadata).should.deep.equal([{\r\n\t\t\tcountry : 'FR',\r\n\t\t\tphone : '231354125',\r\n\t\t\tstartsAt : 20,\r\n\t\t\tendsAt : 29\r\n\t\t}])\r\n\r\n\t\t// Not a phone number (part of a UUID).\r\n\t\t// Should parse in `{ extended: true }` mode.\r\n\t\tconst possibleNumbers = findNumbers('The UUID is CA801c26f98cd16e231354125ad046e40b.', 'FR', { extended: true }, metadata)\r\n\t\tpossibleNumbers.length.should.equal(1)\r\n\t\tpossibleNumbers[0].country.should.equal('FR')\r\n\t\tpossibleNumbers[0].phone.should.equal('231354125')\r\n\r\n\t\t// Not a phone number (part of a UUID).\r\n\t\t// Shouldn't parse by default.\r\n\t\tfindNumbers('The UUID is CA801c26f98cd16e231354125ad046e40b.', 'FR', metadata).should.deep.equal([])\r\n\t})\r\n\r\n\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/merge_requests/4\r\n\tit('should return correct `startsAt` and `endsAt` when matching \"inner\" candidates in a could-be-a-candidate substring', () => {\r\n\t\tfindNumbers('39945926 77200596 16533084', 'ID', metadata)\r\n\t\t\t.should\r\n\t\t\t.deep\r\n\t\t\t.equal([{\r\n\t\t\t\tcountry: 'ID',\r\n\t\t\t\tphone: '77200596',\r\n\t\t\t\tstartsAt: 9,\r\n\t\t\t\tendsAt: 17\r\n\t\t\t}])\r\n\t})\r\n})"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/LRUCache.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/LRUCache.js new file mode 100644 index 00000000..0534e837 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/LRUCache.js @@ -0,0 +1,134 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +// https://medium.com/dsinjs/implementing-lru-cache-in-javascript-94ba6755cda9 +var Node = /*#__PURE__*/_createClass(function Node(key, value) { + var next = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + var prev = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; + + _classCallCheck(this, Node); + + this.key = key; + this.value = value; + this.next = next; + this.prev = prev; +}); + +var LRUCache = /*#__PURE__*/function () { + //set default limit of 10 if limit is not passed. + function LRUCache() { + var limit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10; + + _classCallCheck(this, LRUCache); + + this.size = 0; + this.limit = limit; + this.head = null; + this.tail = null; + this.cache = {}; + } // Write Node to head of LinkedList + // update cache with Node key and Node reference + + + _createClass(LRUCache, [{ + key: "put", + value: function put(key, value) { + this.ensureLimit(); + + if (!this.head) { + this.head = this.tail = new Node(key, value); + } else { + var node = new Node(key, value, this.head); + this.head.prev = node; + this.head = node; + } //Update the cache map + + + this.cache[key] = this.head; + this.size++; + } // Read from cache map and make that node as new Head of LinkedList + + }, { + key: "get", + value: function get(key) { + if (this.cache[key]) { + var value = this.cache[key].value; // node removed from it's position and cache + + this.remove(key); // write node again to the head of LinkedList to make it most recently used + + this.put(key, value); + return value; + } + + console.log("Item not available in cache for key ".concat(key)); + } + }, { + key: "ensureLimit", + value: function ensureLimit() { + if (this.size === this.limit) { + this.remove(this.tail.key); + } + } + }, { + key: "remove", + value: function remove(key) { + var node = this.cache[key]; + + if (node.prev !== null) { + node.prev.next = node.next; + } else { + this.head = node.next; + } + + if (node.next !== null) { + node.next.prev = node.prev; + } else { + this.tail = node.prev; + } + + delete this.cache[key]; + this.size--; + } + }, { + key: "clear", + value: function clear() { + this.head = null; + this.tail = null; + this.size = 0; + this.cache = {}; + } // // Invokes the callback function with every node of the chain and the index of the node. + // forEach(fn) { + // let node = this.head; + // let counter = 0; + // while (node) { + // fn(node, counter); + // node = node.next; + // counter++; + // } + // } + // // To iterate over LRU with a 'for...of' loop + // *[Symbol.iterator]() { + // let node = this.head; + // while (node) { + // yield node; + // node = node.next; + // } + // } + + }]); + + return LRUCache; +}(); + +exports["default"] = LRUCache; +//# sourceMappingURL=LRUCache.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/LRUCache.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/LRUCache.js.map new file mode 100644 index 00000000..c4974708 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/LRUCache.js.map @@ -0,0 +1 @@ +{"version":3,"file":"LRUCache.js","names":["Node","key","value","next","prev","LRUCache","limit","size","head","tail","cache","ensureLimit","node","remove","put","console","log"],"sources":["../../source/findNumbers/LRUCache.js"],"sourcesContent":["// https://medium.com/dsinjs/implementing-lru-cache-in-javascript-94ba6755cda9\r\n\r\nclass Node {\r\n constructor(key, value, next = null, prev = null) {\r\n this.key = key;\r\n this.value = value;\r\n this.next = next;\r\n this.prev = prev;\r\n }\r\n}\r\n\r\nexport default class LRUCache {\r\n //set default limit of 10 if limit is not passed.\r\n constructor(limit = 10) {\r\n this.size = 0;\r\n this.limit = limit;\r\n this.head = null;\r\n this.tail = null;\r\n this.cache = {};\r\n }\r\n\r\n // Write Node to head of LinkedList\r\n // update cache with Node key and Node reference\r\n put(key, value){\r\n this.ensureLimit();\r\n\r\n if(!this.head){\r\n this.head = this.tail = new Node(key, value);\r\n }else{\r\n const node = new Node(key, value, this.head);\r\n this.head.prev = node;\r\n this.head = node;\r\n }\r\n\r\n //Update the cache map\r\n this.cache[key] = this.head;\r\n this.size++;\r\n }\r\n\r\n // Read from cache map and make that node as new Head of LinkedList\r\n get(key){\r\n if(this.cache[key]){\r\n const value = this.cache[key].value;\r\n\r\n // node removed from it's position and cache\r\n this.remove(key)\r\n // write node again to the head of LinkedList to make it most recently used\r\n this.put(key, value);\r\n\r\n return value;\r\n }\r\n\r\n console.log(`Item not available in cache for key ${key}`);\r\n }\r\n\r\n ensureLimit(){\r\n if(this.size === this.limit){\r\n this.remove(this.tail.key)\r\n }\r\n }\r\n\r\n remove(key){\r\n const node = this.cache[key];\r\n\r\n if(node.prev !== null){\r\n node.prev.next = node.next;\r\n }else{\r\n this.head = node.next;\r\n }\r\n\r\n if(node.next !== null){\r\n node.next.prev = node.prev;\r\n }else{\r\n this.tail = node.prev\r\n }\r\n\r\n delete this.cache[key];\r\n this.size--;\r\n }\r\n\r\n clear() {\r\n this.head = null;\r\n this.tail = null;\r\n this.size = 0;\r\n this.cache = {};\r\n }\r\n\r\n // // Invokes the callback function with every node of the chain and the index of the node.\r\n // forEach(fn) {\r\n // let node = this.head;\r\n // let counter = 0;\r\n // while (node) {\r\n // fn(node, counter);\r\n // node = node.next;\r\n // counter++;\r\n // }\r\n // }\r\n\r\n // // To iterate over LRU with a 'for...of' loop\r\n // *[Symbol.iterator]() {\r\n // let node = this.head;\r\n // while (node) {\r\n // yield node;\r\n // node = node.next;\r\n // }\r\n // }\r\n}"],"mappings":";;;;;;;;;;;;;AAAA;IAEMA,I,6BACJ,cAAYC,GAAZ,EAAiBC,KAAjB,EAAkD;EAAA,IAA1BC,IAA0B,uEAAnB,IAAmB;EAAA,IAAbC,IAAa,uEAAN,IAAM;;EAAA;;EAChD,KAAKH,GAAL,GAAWA,GAAX;EACA,KAAKC,KAAL,GAAaA,KAAb;EACA,KAAKC,IAAL,GAAYA,IAAZ;EACA,KAAKC,IAAL,GAAYA,IAAZ;AACD,C;;IAGkBC,Q;EACnB;EACA,oBAAwB;IAAA,IAAZC,KAAY,uEAAJ,EAAI;;IAAA;;IACtB,KAAKC,IAAL,GAAY,CAAZ;IACA,KAAKD,KAAL,GAAaA,KAAb;IACA,KAAKE,IAAL,GAAY,IAAZ;IACA,KAAKC,IAAL,GAAY,IAAZ;IACA,KAAKC,KAAL,GAAa,EAAb;EACD,C,CAED;EACA;;;;;WACA,aAAIT,GAAJ,EAASC,KAAT,EAAe;MACb,KAAKS,WAAL;;MAEA,IAAG,CAAC,KAAKH,IAAT,EAAc;QACZ,KAAKA,IAAL,GAAY,KAAKC,IAAL,GAAY,IAAIT,IAAJ,CAASC,GAAT,EAAcC,KAAd,CAAxB;MACD,CAFD,MAEK;QACH,IAAMU,IAAI,GAAG,IAAIZ,IAAJ,CAASC,GAAT,EAAcC,KAAd,EAAqB,KAAKM,IAA1B,CAAb;QACA,KAAKA,IAAL,CAAUJ,IAAV,GAAiBQ,IAAjB;QACA,KAAKJ,IAAL,GAAYI,IAAZ;MACD,CATY,CAWb;;;MACA,KAAKF,KAAL,CAAWT,GAAX,IAAkB,KAAKO,IAAvB;MACA,KAAKD,IAAL;IACD,C,CAED;;;;WACA,aAAIN,GAAJ,EAAQ;MACN,IAAG,KAAKS,KAAL,CAAWT,GAAX,CAAH,EAAmB;QACjB,IAAMC,KAAK,GAAG,KAAKQ,KAAL,CAAWT,GAAX,EAAgBC,KAA9B,CADiB,CAGjB;;QACA,KAAKW,MAAL,CAAYZ,GAAZ,EAJiB,CAKjB;;QACA,KAAKa,GAAL,CAASb,GAAT,EAAcC,KAAd;QAEA,OAAOA,KAAP;MACD;;MAEDa,OAAO,CAACC,GAAR,+CAAmDf,GAAnD;IACD;;;WAED,uBAAa;MACX,IAAG,KAAKM,IAAL,KAAc,KAAKD,KAAtB,EAA4B;QAC1B,KAAKO,MAAL,CAAY,KAAKJ,IAAL,CAAUR,GAAtB;MACD;IACF;;;WAED,gBAAOA,GAAP,EAAW;MACT,IAAMW,IAAI,GAAG,KAAKF,KAAL,CAAWT,GAAX,CAAb;;MAEA,IAAGW,IAAI,CAACR,IAAL,KAAc,IAAjB,EAAsB;QACpBQ,IAAI,CAACR,IAAL,CAAUD,IAAV,GAAiBS,IAAI,CAACT,IAAtB;MACD,CAFD,MAEK;QACH,KAAKK,IAAL,GAAYI,IAAI,CAACT,IAAjB;MACD;;MAED,IAAGS,IAAI,CAACT,IAAL,KAAc,IAAjB,EAAsB;QACpBS,IAAI,CAACT,IAAL,CAAUC,IAAV,GAAiBQ,IAAI,CAACR,IAAtB;MACD,CAFD,MAEK;QACH,KAAKK,IAAL,GAAYG,IAAI,CAACR,IAAjB;MACD;;MAED,OAAO,KAAKM,KAAL,CAAWT,GAAX,CAAP;MACA,KAAKM,IAAL;IACD;;;WAED,iBAAQ;MACN,KAAKC,IAAL,GAAY,IAAZ;MACA,KAAKC,IAAL,GAAY,IAAZ;MACA,KAAKF,IAAL,GAAY,CAAZ;MACA,KAAKG,KAAL,GAAa,EAAb;IACD,C,CAED;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/Leniency.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/Leniency.js new file mode 100644 index 00000000..966f72d1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/Leniency.js @@ -0,0 +1,335 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.containsMoreThanOneSlashInNationalNumber = containsMoreThanOneSlashInNationalNumber; +exports["default"] = void 0; + +var _validate_ = _interopRequireDefault(require("../validate_.js")); + +var _parseDigits = _interopRequireDefault(require("../helpers/parseDigits.js")); + +var _util = require("./util.js"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +/** + * Leniency when finding potential phone numbers in text segments + * The levels here are ordered in increasing strictness. + */ +var _default = { + /** + * Phone numbers accepted are "possible", but not necessarily "valid". + */ + POSSIBLE: function POSSIBLE(number, candidate, metadata) { + return true; + }, + + /** + * Phone numbers accepted are "possible" and "valid". + * Numbers written in national format must have their national-prefix + * present if it is usually written for a number of this type. + */ + VALID: function VALID(number, candidate, metadata) { + if (!(0, _validate_["default"])(number, undefined, metadata) || !containsOnlyValidXChars(number, candidate.toString(), metadata)) { + return false; + } // Skipped for simplicity. + // return isNationalPrefixPresentIfRequired(number, metadata) + + + return true; + }, + + /** + * Phone numbers accepted are "valid" and + * are grouped in a possible way for this locale. For example, a US number written as + * "65 02 53 00 00" and "650253 0000" are not accepted at this leniency level, whereas + * "650 253 0000", "650 2530000" or "6502530000" are. + * Numbers with more than one '/' symbol in the national significant number + * are also dropped at this level. + * + * Warning: This level might result in lower coverage especially for regions outside of + * country code "+1". If you are not sure about which level to use, + * email the discussion group libphonenumber-discuss@googlegroups.com. + */ + STRICT_GROUPING: function STRICT_GROUPING(number, candidate, metadata, regExpCache) { + var candidateString = candidate.toString(); + + if (!(0, _validate_["default"])(number, undefined, metadata) || !containsOnlyValidXChars(number, candidateString, metadata) || containsMoreThanOneSlashInNationalNumber(number, candidateString) || !isNationalPrefixPresentIfRequired(number, metadata)) { + return false; + } + + return checkNumberGroupingIsValid(number, candidate, metadata, allNumberGroupsRemainGrouped, regExpCache); + }, + + /** + * Phone numbers accepted are {@linkplain PhoneNumberUtil#isValidNumber(PhoneNumber) valid} and + * are grouped in the same way that we would have formatted it, or as a single block. For + * example, a US number written as "650 2530000" is not accepted at this leniency level, whereas + * "650 253 0000" or "6502530000" are. + * Numbers with more than one '/' symbol are also dropped at this level. + *

+ * Warning: This level might result in lower coverage especially for regions outside of country + * code "+1". If you are not sure about which level to use, email the discussion group + * libphonenumber-discuss@googlegroups.com. + */ + EXACT_GROUPING: function EXACT_GROUPING(number, candidate, metadata, regExpCache) { + var candidateString = candidate.toString(); + + if (!(0, _validate_["default"])(number, undefined, metadata) || !containsOnlyValidXChars(number, candidateString, metadata) || containsMoreThanOneSlashInNationalNumber(number, candidateString) || !isNationalPrefixPresentIfRequired(number, metadata)) { + return false; + } + + return checkNumberGroupingIsValid(number, candidate, metadata, allNumberGroupsAreExactlyPresent, regExpCache); + } +}; +exports["default"] = _default; + +function containsOnlyValidXChars(number, candidate, metadata) { + // The characters 'x' and 'X' can be (1) a carrier code, in which case they always precede the + // national significant number or (2) an extension sign, in which case they always precede the + // extension number. We assume a carrier code is more than 1 digit, so the first case has to + // have more than 1 consecutive 'x' or 'X', whereas the second case can only have exactly 1 'x' + // or 'X'. We ignore the character if it appears as the last character of the string. + for (var index = 0; index < candidate.length - 1; index++) { + var charAtIndex = candidate.charAt(index); + + if (charAtIndex === 'x' || charAtIndex === 'X') { + var charAtNextIndex = candidate.charAt(index + 1); + + if (charAtNextIndex === 'x' || charAtNextIndex === 'X') { + // This is the carrier code case, in which the 'X's always precede the national + // significant number. + index++; + + if (util.isNumberMatch(number, candidate.substring(index)) != MatchType.NSN_MATCH) { + return false; + } // This is the extension sign case, in which the 'x' or 'X' should always precede the + // extension number. + + } else if ((0, _parseDigits["default"])(candidate.substring(index)) !== number.ext) { + return false; + } + } + } + + return true; +} + +function isNationalPrefixPresentIfRequired(number, _metadata) { + // First, check how we deduced the country code. If it was written in international format, then + // the national prefix is not required. + if (number.getCountryCodeSource() != 'FROM_DEFAULT_COUNTRY') { + return true; + } + + var phoneNumberRegion = util.getRegionCodeForCountryCode(number.getCountryCode()); + var metadata = util.getMetadataForRegion(phoneNumberRegion); + + if (metadata == null) { + return true; + } // Check if a national prefix should be present when formatting this number. + + + var nationalNumber = util.getNationalSignificantNumber(number); + var formatRule = util.chooseFormattingPatternForNumber(metadata.numberFormats(), nationalNumber); // To do this, we check that a national prefix formatting rule was present + // and that it wasn't just the first-group symbol ($1) with punctuation. + + if (formatRule && formatRule.getNationalPrefixFormattingRule().length > 0) { + if (formatRule.getNationalPrefixOptionalWhenFormatting()) { + // The national-prefix is optional in these cases, so we don't need to check if it was + // present. + return true; + } + + if (PhoneNumberUtil.formattingRuleHasFirstGroupOnly(formatRule.getNationalPrefixFormattingRule())) { + // National Prefix not needed for this number. + return true; + } // Normalize the remainder. + + + var rawInputCopy = PhoneNumberUtil.normalizeDigitsOnly(number.getRawInput()); // Check if we found a national prefix and/or carrier code at the start of the raw input, and + // return the result. + + return util.maybeStripNationalPrefixAndCarrierCode(rawInputCopy, metadata, null); + } + + return true; +} + +function containsMoreThanOneSlashInNationalNumber(number, candidate) { + var firstSlashInBodyIndex = candidate.indexOf('/'); + + if (firstSlashInBodyIndex < 0) { + // No slashes, this is okay. + return false; + } // Now look for a second one. + + + var secondSlashInBodyIndex = candidate.indexOf('/', firstSlashInBodyIndex + 1); + + if (secondSlashInBodyIndex < 0) { + // Only one slash, this is okay. + return false; + } // If the first slash is after the country calling code, this is permitted. + + + var candidateHasCountryCode = number.getCountryCodeSource() === CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN || number.getCountryCodeSource() === CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN; + + if (candidateHasCountryCode && PhoneNumberUtil.normalizeDigitsOnly(candidate.substring(0, firstSlashInBodyIndex)) === String(number.getCountryCode())) { + // Any more slashes and this is illegal. + return candidate.slice(secondSlashInBodyIndex + 1).indexOf('/') >= 0; + } + + return true; +} + +function checkNumberGroupingIsValid(number, candidate, metadata, checkGroups, regExpCache) { + var normalizedCandidate = normalizeDigits(candidate, true + /* keep non-digits */ + ); + var formattedNumberGroups = getNationalNumberGroups(metadata, number, null); + + if (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) { + return true; + } // If this didn't pass, see if there are any alternate formats that match, and try them instead. + + + var alternateFormats = MetadataManager.getAlternateFormatsForCountry(number.getCountryCode()); + var nationalSignificantNumber = util.getNationalSignificantNumber(number); + + if (alternateFormats) { + for (var _iterator = _createForOfIteratorHelperLoose(alternateFormats.numberFormats()), _step; !(_step = _iterator()).done;) { + var alternateFormat = _step.value; + + if (alternateFormat.leadingDigitsPatterns().length > 0) { + // There is only one leading digits pattern for alternate formats. + var leadingDigitsRegExp = regExpCache.getPatternForRegExp('^' + alternateFormat.leadingDigitsPatterns()[0]); + + if (!leadingDigitsRegExp.test(nationalSignificantNumber)) { + // Leading digits don't match; try another one. + continue; + } + } + + formattedNumberGroups = getNationalNumberGroups(metadata, number, alternateFormat); + + if (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) { + return true; + } + } + } + + return false; +} +/** + * Helper method to get the national-number part of a number, formatted without any national + * prefix, and return it as a set of digit blocks that would be formatted together following + * standard formatting rules. + */ + + +function getNationalNumberGroups(metadata, number, formattingPattern) { + if (formattingPattern) { + // We format the NSN only, and split that according to the separator. + var nationalSignificantNumber = util.getNationalSignificantNumber(number); + return util.formatNsnUsingPattern(nationalSignificantNumber, formattingPattern, 'RFC3966', metadata).split('-'); + } // This will be in the format +CC-DG1-DG2-DGX;ext=EXT where DG1..DGX represents groups of digits. + + + var rfc3966Format = formatNumber(number, 'RFC3966', metadata); // We remove the extension part from the formatted string before splitting it into different + // groups. + + var endIndex = rfc3966Format.indexOf(';'); + + if (endIndex < 0) { + endIndex = rfc3966Format.length; + } // The country-code will have a '-' following it. + + + var startIndex = rfc3966Format.indexOf('-') + 1; + return rfc3966Format.slice(startIndex, endIndex).split('-'); +} + +function allNumberGroupsAreExactlyPresent(metadata, number, normalizedCandidate, formattedNumberGroups) { + var candidateGroups = normalizedCandidate.split(NON_DIGITS_PATTERN); // Set this to the last group, skipping it if the number has an extension. + + var candidateNumberGroupIndex = number.hasExtension() ? candidateGroups.length - 2 : candidateGroups.length - 1; // First we check if the national significant number is formatted as a block. + // We use contains and not equals, since the national significant number may be present with + // a prefix such as a national number prefix, or the country code itself. + + if (candidateGroups.length == 1 || candidateGroups[candidateNumberGroupIndex].contains(util.getNationalSignificantNumber(number))) { + return true; + } // Starting from the end, go through in reverse, excluding the first group, and check the + // candidate and number groups are the same. + + + var formattedNumberGroupIndex = formattedNumberGroups.length - 1; + + while (formattedNumberGroupIndex > 0 && candidateNumberGroupIndex >= 0) { + if (candidateGroups[candidateNumberGroupIndex] !== formattedNumberGroups[formattedNumberGroupIndex]) { + return false; + } + + formattedNumberGroupIndex--; + candidateNumberGroupIndex--; + } // Now check the first group. There may be a national prefix at the start, so we only check + // that the candidate group ends with the formatted number group. + + + return candidateNumberGroupIndex >= 0 && (0, _util.endsWith)(candidateGroups[candidateNumberGroupIndex], formattedNumberGroups[0]); +} + +function allNumberGroupsRemainGrouped(metadata, number, normalizedCandidate, formattedNumberGroups) { + var fromIndex = 0; + + if (number.getCountryCodeSource() !== CountryCodeSource.FROM_DEFAULT_COUNTRY) { + // First skip the country code if the normalized candidate contained it. + var countryCode = String(number.getCountryCode()); + fromIndex = normalizedCandidate.indexOf(countryCode) + countryCode.length(); + } // Check each group of consecutive digits are not broken into separate groupings in the + // {@code normalizedCandidate} string. + + + for (var i = 0; i < formattedNumberGroups.length; i++) { + // Fails if the substring of {@code normalizedCandidate} starting from {@code fromIndex} + // doesn't contain the consecutive digits in formattedNumberGroups[i]. + fromIndex = normalizedCandidate.indexOf(formattedNumberGroups[i], fromIndex); + + if (fromIndex < 0) { + return false; + } // Moves {@code fromIndex} forward. + + + fromIndex += formattedNumberGroups[i].length(); + + if (i == 0 && fromIndex < normalizedCandidate.length()) { + // We are at the position right after the NDC. We get the region used for formatting + // information based on the country code in the phone number, rather than the number itself, + // as we do not need to distinguish between different countries with the same country + // calling code and this is faster. + var region = util.getRegionCodeForCountryCode(number.getCountryCode()); + + if (util.getNddPrefixForRegion(region, true) != null && Character.isDigit(normalizedCandidate.charAt(fromIndex))) { + // This means there is no formatting symbol after the NDC. In this case, we only + // accept the number if there is no formatting symbol at all in the number, except + // for extensions. This is only important for countries with national prefixes. + var nationalSignificantNumber = util.getNationalSignificantNumber(number); + return (0, _util.startsWith)(normalizedCandidate.slice(fromIndex - formattedNumberGroups[i].length), nationalSignificantNumber); + } + } + } // The check here makes sure that we haven't mistakenly already used the extension to + // match the last group of the subscriber number. Note the extension cannot have + // formatting in-between digits. + + + return normalizedCandidate.slice(fromIndex).contains(number.getExtension()); +} +//# sourceMappingURL=Leniency.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/Leniency.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/Leniency.js.map new file mode 100644 index 00000000..e30c12dd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/Leniency.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Leniency.js","names":["POSSIBLE","number","candidate","metadata","VALID","isValidNumber","undefined","containsOnlyValidXChars","toString","STRICT_GROUPING","regExpCache","candidateString","containsMoreThanOneSlashInNationalNumber","isNationalPrefixPresentIfRequired","checkNumberGroupingIsValid","allNumberGroupsRemainGrouped","EXACT_GROUPING","allNumberGroupsAreExactlyPresent","index","length","charAtIndex","charAt","charAtNextIndex","util","isNumberMatch","substring","MatchType","NSN_MATCH","parseDigits","ext","_metadata","getCountryCodeSource","phoneNumberRegion","getRegionCodeForCountryCode","getCountryCode","getMetadataForRegion","nationalNumber","getNationalSignificantNumber","formatRule","chooseFormattingPatternForNumber","numberFormats","getNationalPrefixFormattingRule","getNationalPrefixOptionalWhenFormatting","PhoneNumberUtil","formattingRuleHasFirstGroupOnly","rawInputCopy","normalizeDigitsOnly","getRawInput","maybeStripNationalPrefixAndCarrierCode","firstSlashInBodyIndex","indexOf","secondSlashInBodyIndex","candidateHasCountryCode","CountryCodeSource","FROM_NUMBER_WITH_PLUS_SIGN","FROM_NUMBER_WITHOUT_PLUS_SIGN","String","slice","checkGroups","normalizedCandidate","normalizeDigits","formattedNumberGroups","getNationalNumberGroups","alternateFormats","MetadataManager","getAlternateFormatsForCountry","nationalSignificantNumber","alternateFormat","leadingDigitsPatterns","leadingDigitsRegExp","getPatternForRegExp","test","formattingPattern","formatNsnUsingPattern","split","rfc3966Format","formatNumber","endIndex","startIndex","candidateGroups","NON_DIGITS_PATTERN","candidateNumberGroupIndex","hasExtension","contains","formattedNumberGroupIndex","endsWith","fromIndex","FROM_DEFAULT_COUNTRY","countryCode","i","region","getNddPrefixForRegion","Character","isDigit","startsWith","getExtension"],"sources":["../../source/findNumbers/Leniency.js"],"sourcesContent":["import isValidNumber from '../validate_.js'\r\nimport parseDigits from '../helpers/parseDigits.js'\r\n\r\nimport {\r\n\tstartsWith,\r\n\tendsWith\r\n} from './util.js'\r\n\r\n/**\r\n * Leniency when finding potential phone numbers in text segments\r\n * The levels here are ordered in increasing strictness.\r\n */\r\nexport default\r\n{\r\n\t/**\r\n\t * Phone numbers accepted are \"possible\", but not necessarily \"valid\".\r\n\t */\r\n\tPOSSIBLE(number, candidate, metadata)\r\n\t{\r\n\t\treturn true\r\n\t},\r\n\r\n\t/**\r\n\t * Phone numbers accepted are \"possible\" and \"valid\".\r\n\t * Numbers written in national format must have their national-prefix\r\n\t * present if it is usually written for a number of this type.\r\n\t */\r\n\tVALID(number, candidate, metadata)\r\n\t{\r\n\t\tif (!isValidNumber(number, undefined, metadata) ||\r\n\t\t\t!containsOnlyValidXChars(number, candidate.toString(), metadata))\r\n\t\t{\r\n\t\t\treturn false\r\n\t\t}\r\n\r\n // Skipped for simplicity.\r\n\t\t// return isNationalPrefixPresentIfRequired(number, metadata)\r\n return true\r\n },\r\n\r\n\t/**\r\n\t * Phone numbers accepted are \"valid\" and\r\n\t * are grouped in a possible way for this locale. For example, a US number written as\r\n\t * \"65 02 53 00 00\" and \"650253 0000\" are not accepted at this leniency level, whereas\r\n\t * \"650 253 0000\", \"650 2530000\" or \"6502530000\" are.\r\n\t * Numbers with more than one '/' symbol in the national significant number\r\n\t * are also dropped at this level.\r\n\t *\r\n\t * Warning: This level might result in lower coverage especially for regions outside of\r\n\t * country code \"+1\". If you are not sure about which level to use,\r\n\t * email the discussion group libphonenumber-discuss@googlegroups.com.\r\n\t */\r\n\tSTRICT_GROUPING(number, candidate, metadata, regExpCache)\r\n\t{\r\n\t\tconst candidateString = candidate.toString()\r\n\r\n\t\tif (!isValidNumber(number, undefined, metadata)\r\n\t\t\t|| !containsOnlyValidXChars(number, candidateString, metadata)\r\n\t\t\t|| containsMoreThanOneSlashInNationalNumber(number, candidateString)\r\n\t\t\t|| !isNationalPrefixPresentIfRequired(number, metadata))\r\n\t\t{\r\n\t\t\treturn false\r\n\t\t}\r\n\r\n\t\treturn checkNumberGroupingIsValid\r\n\t\t(\r\n\t\t\tnumber,\r\n\t\t\tcandidate,\r\n\t\t\tmetadata,\r\n\t\t\tallNumberGroupsRemainGrouped,\r\n\t\t\tregExpCache\r\n\t\t)\r\n },\r\n\r\n\t/**\r\n\t * Phone numbers accepted are {@linkplain PhoneNumberUtil#isValidNumber(PhoneNumber) valid} and\r\n\t * are grouped in the same way that we would have formatted it, or as a single block. For\r\n\t * example, a US number written as \"650 2530000\" is not accepted at this leniency level, whereas\r\n\t * \"650 253 0000\" or \"6502530000\" are.\r\n\t * Numbers with more than one '/' symbol are also dropped at this level.\r\n\t *

\r\n\t * Warning: This level might result in lower coverage especially for regions outside of country\r\n\t * code \"+1\". If you are not sure about which level to use, email the discussion group\r\n\t * libphonenumber-discuss@googlegroups.com.\r\n\t */\r\n\tEXACT_GROUPING(number, candidate, metadata, regExpCache)\r\n\t{\r\n\t\tconst candidateString = candidate.toString()\r\n\r\n\t\tif (!isValidNumber(number, undefined, metadata)\r\n\t\t\t|| !containsOnlyValidXChars(number, candidateString, metadata)\r\n\t\t\t|| containsMoreThanOneSlashInNationalNumber(number, candidateString)\r\n\t\t\t|| !isNationalPrefixPresentIfRequired(number, metadata))\r\n\t\t{\r\n\t\t\treturn false\r\n\t\t}\r\n\r\n\t\treturn checkNumberGroupingIsValid\r\n\t\t(\r\n\t\t\tnumber,\r\n\t\t\tcandidate,\r\n\t\t\tmetadata,\r\n\t\t\tallNumberGroupsAreExactlyPresent,\r\n\t\t\tregExpCache\r\n\t\t)\r\n\t}\r\n}\r\n\r\nfunction containsOnlyValidXChars(number, candidate, metadata)\r\n{\r\n // The characters 'x' and 'X' can be (1) a carrier code, in which case they always precede the\r\n // national significant number or (2) an extension sign, in which case they always precede the\r\n // extension number. We assume a carrier code is more than 1 digit, so the first case has to\r\n // have more than 1 consecutive 'x' or 'X', whereas the second case can only have exactly 1 'x'\r\n // or 'X'. We ignore the character if it appears as the last character of the string.\r\n for (let index = 0; index < candidate.length - 1; index++)\r\n {\r\n const charAtIndex = candidate.charAt(index)\r\n\r\n if (charAtIndex === 'x' || charAtIndex === 'X')\r\n {\r\n const charAtNextIndex = candidate.charAt(index + 1)\r\n\r\n if (charAtNextIndex === 'x' || charAtNextIndex === 'X')\r\n {\r\n // This is the carrier code case, in which the 'X's always precede the national\r\n // significant number.\r\n index++\r\n if (util.isNumberMatch(number, candidate.substring(index)) != MatchType.NSN_MATCH)\r\n {\r\n return false\r\n }\r\n\t // This is the extension sign case, in which the 'x' or 'X' should always precede the\r\n\t // extension number.\r\n }\r\n else if (parseDigits(candidate.substring(index)) !== number.ext)\r\n {\r\n return false\r\n }\r\n }\r\n }\r\n\r\n return true\r\n}\r\n\r\nfunction isNationalPrefixPresentIfRequired(number, _metadata)\r\n{\r\n // First, check how we deduced the country code. If it was written in international format, then\r\n // the national prefix is not required.\r\n if (number.getCountryCodeSource() != 'FROM_DEFAULT_COUNTRY')\r\n {\r\n return true\r\n }\r\n\r\n const phoneNumberRegion = util.getRegionCodeForCountryCode(number.getCountryCode())\r\n\r\n const metadata = util.getMetadataForRegion(phoneNumberRegion)\r\n if (metadata == null)\r\n {\r\n return true\r\n }\r\n\r\n // Check if a national prefix should be present when formatting this number.\r\n const nationalNumber = util.getNationalSignificantNumber(number)\r\n const formatRule = util.chooseFormattingPatternForNumber(metadata.numberFormats(), nationalNumber)\r\n\r\n // To do this, we check that a national prefix formatting rule was present\r\n // and that it wasn't just the first-group symbol ($1) with punctuation.\r\n if (formatRule && formatRule.getNationalPrefixFormattingRule().length > 0)\r\n {\r\n if (formatRule.getNationalPrefixOptionalWhenFormatting())\r\n {\r\n // The national-prefix is optional in these cases, so we don't need to check if it was\r\n // present.\r\n return true\r\n }\r\n\r\n if (PhoneNumberUtil.formattingRuleHasFirstGroupOnly(\r\n formatRule.getNationalPrefixFormattingRule()))\r\n {\r\n // National Prefix not needed for this number.\r\n return true\r\n }\r\n\r\n // Normalize the remainder.\r\n const rawInputCopy = PhoneNumberUtil.normalizeDigitsOnly(number.getRawInput())\r\n\r\n // Check if we found a national prefix and/or carrier code at the start of the raw input, and\r\n // return the result.\r\n return util.maybeStripNationalPrefixAndCarrierCode(rawInputCopy, metadata, null)\r\n }\r\n\r\n return true\r\n}\r\n\r\nexport function containsMoreThanOneSlashInNationalNumber(number, candidate)\r\n{\r\n const firstSlashInBodyIndex = candidate.indexOf('/')\r\n if (firstSlashInBodyIndex < 0)\r\n {\r\n // No slashes, this is okay.\r\n return false\r\n }\r\n\r\n // Now look for a second one.\r\n const secondSlashInBodyIndex = candidate.indexOf('/', firstSlashInBodyIndex + 1)\r\n if (secondSlashInBodyIndex < 0)\r\n {\r\n // Only one slash, this is okay.\r\n return false\r\n }\r\n\r\n // If the first slash is after the country calling code, this is permitted.\r\n const candidateHasCountryCode =\r\n (number.getCountryCodeSource() === CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN\r\n || number.getCountryCodeSource() === CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN)\r\n\r\n if (candidateHasCountryCode\r\n && PhoneNumberUtil.normalizeDigitsOnly(candidate.substring(0, firstSlashInBodyIndex))\r\n === String(number.getCountryCode()))\r\n {\r\n // Any more slashes and this is illegal.\r\n return candidate.slice(secondSlashInBodyIndex + 1).indexOf('/') >= 0\r\n }\r\n\r\n return true\r\n}\r\n\r\nfunction checkNumberGroupingIsValid(\r\n number,\r\n candidate,\r\n metadata,\r\n checkGroups,\r\n regExpCache\r\n) {\r\n const normalizedCandidate = normalizeDigits(candidate, true /* keep non-digits */)\r\n let formattedNumberGroups = getNationalNumberGroups(metadata, number, null)\r\n if (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) {\r\n return true\r\n }\r\n\r\n // If this didn't pass, see if there are any alternate formats that match, and try them instead.\r\n const alternateFormats = MetadataManager.getAlternateFormatsForCountry(number.getCountryCode())\r\n const nationalSignificantNumber = util.getNationalSignificantNumber(number)\r\n\r\n if (alternateFormats) {\r\n for (const alternateFormat of alternateFormats.numberFormats()) {\r\n if (alternateFormat.leadingDigitsPatterns().length > 0) {\r\n // There is only one leading digits pattern for alternate formats.\r\n const leadingDigitsRegExp = regExpCache.getPatternForRegExp('^' + alternateFormat.leadingDigitsPatterns()[0])\r\n if (!leadingDigitsRegExp.test(nationalSignificantNumber)) {\r\n // Leading digits don't match; try another one.\r\n continue\r\n }\r\n }\r\n formattedNumberGroups = getNationalNumberGroups(metadata, number, alternateFormat)\r\n if (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) {\r\n return true\r\n }\r\n }\r\n }\r\n\r\n return false\r\n}\r\n\r\n/**\r\n * Helper method to get the national-number part of a number, formatted without any national\r\n * prefix, and return it as a set of digit blocks that would be formatted together following\r\n * standard formatting rules.\r\n */\r\nfunction getNationalNumberGroups(\r\n\tmetadata,\r\n\tnumber,\r\n\tformattingPattern\r\n) {\r\n if (formattingPattern) {\r\n // We format the NSN only, and split that according to the separator.\r\n const nationalSignificantNumber = util.getNationalSignificantNumber(number)\r\n return util.formatNsnUsingPattern(nationalSignificantNumber,\r\n formattingPattern, 'RFC3966', metadata).split('-')\r\n\t}\r\n\r\n // This will be in the format +CC-DG1-DG2-DGX;ext=EXT where DG1..DGX represents groups of digits.\r\n const rfc3966Format = formatNumber(number, 'RFC3966', metadata)\r\n\r\n // We remove the extension part from the formatted string before splitting it into different\r\n // groups.\r\n let endIndex = rfc3966Format.indexOf(';')\r\n if (endIndex < 0) {\r\n endIndex = rfc3966Format.length\r\n }\r\n\r\n // The country-code will have a '-' following it.\r\n const startIndex = rfc3966Format.indexOf('-') + 1\r\n return rfc3966Format.slice(startIndex, endIndex).split('-')\r\n}\r\n\r\nfunction allNumberGroupsAreExactlyPresent\r\n(\r\n\tmetadata,\r\n\tnumber,\r\n\tnormalizedCandidate,\r\n\tformattedNumberGroups\r\n)\r\n{\r\n const candidateGroups = normalizedCandidate.split(NON_DIGITS_PATTERN)\r\n\r\n // Set this to the last group, skipping it if the number has an extension.\r\n let candidateNumberGroupIndex =\r\n number.hasExtension() ? candidateGroups.length - 2 : candidateGroups.length - 1\r\n\r\n // First we check if the national significant number is formatted as a block.\r\n // We use contains and not equals, since the national significant number may be present with\r\n // a prefix such as a national number prefix, or the country code itself.\r\n if (candidateGroups.length == 1\r\n || candidateGroups[candidateNumberGroupIndex].contains(\r\n util.getNationalSignificantNumber(number)))\r\n {\r\n return true\r\n }\r\n\r\n // Starting from the end, go through in reverse, excluding the first group, and check the\r\n // candidate and number groups are the same.\r\n let formattedNumberGroupIndex = (formattedNumberGroups.length - 1)\r\n while (formattedNumberGroupIndex > 0 && candidateNumberGroupIndex >= 0)\r\n {\r\n if (candidateGroups[candidateNumberGroupIndex] !== formattedNumberGroups[formattedNumberGroupIndex])\r\n {\r\n return false\r\n }\r\n formattedNumberGroupIndex--\r\n candidateNumberGroupIndex--\r\n }\r\n\r\n // Now check the first group. There may be a national prefix at the start, so we only check\r\n // that the candidate group ends with the formatted number group.\r\n return (candidateNumberGroupIndex >= 0\r\n && endsWith(candidateGroups[candidateNumberGroupIndex], formattedNumberGroups[0]))\r\n}\r\n\r\n\r\nfunction allNumberGroupsRemainGrouped\r\n(\r\n\tmetadata,\r\n\tnumber,\r\n\tnormalizedCandidate,\r\n\tformattedNumberGroups\r\n)\r\n{\r\n let fromIndex = 0\r\n if (number.getCountryCodeSource() !== CountryCodeSource.FROM_DEFAULT_COUNTRY)\r\n {\r\n // First skip the country code if the normalized candidate contained it.\r\n const countryCode = String(number.getCountryCode())\r\n fromIndex = normalizedCandidate.indexOf(countryCode) + countryCode.length()\r\n }\r\n\r\n // Check each group of consecutive digits are not broken into separate groupings in the\r\n // {@code normalizedCandidate} string.\r\n for (let i = 0; i < formattedNumberGroups.length; i++)\r\n {\r\n // Fails if the substring of {@code normalizedCandidate} starting from {@code fromIndex}\r\n // doesn't contain the consecutive digits in formattedNumberGroups[i].\r\n fromIndex = normalizedCandidate.indexOf(formattedNumberGroups[i], fromIndex)\r\n if (fromIndex < 0) {\r\n return false\r\n }\r\n // Moves {@code fromIndex} forward.\r\n fromIndex += formattedNumberGroups[i].length()\r\n if (i == 0 && fromIndex < normalizedCandidate.length())\r\n {\r\n // We are at the position right after the NDC. We get the region used for formatting\r\n // information based on the country code in the phone number, rather than the number itself,\r\n // as we do not need to distinguish between different countries with the same country\r\n // calling code and this is faster.\r\n const region = util.getRegionCodeForCountryCode(number.getCountryCode())\r\n if (util.getNddPrefixForRegion(region, true) != null\r\n && Character.isDigit(normalizedCandidate.charAt(fromIndex))) {\r\n // This means there is no formatting symbol after the NDC. In this case, we only\r\n // accept the number if there is no formatting symbol at all in the number, except\r\n // for extensions. This is only important for countries with national prefixes.\r\n const nationalSignificantNumber = util.getNationalSignificantNumber(number)\r\n return startsWith\r\n (\r\n \t normalizedCandidate.slice(fromIndex - formattedNumberGroups[i].length),\r\n nationalSignificantNumber\r\n )\r\n }\r\n }\r\n }\r\n\r\n // The check here makes sure that we haven't mistakenly already used the extension to\r\n // match the last group of the subscriber number. Note the extension cannot have\r\n // formatting in-between digits.\r\n return normalizedCandidate.slice(fromIndex).contains(number.getExtension())\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/Leniency.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/Leniency.test.js new file mode 100644 index 00000000..9562e84b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/Leniency.test.js @@ -0,0 +1,37 @@ +/* +import { containsMoreThanOneSlashInNationalNumber } from './Leniency.js' + +describe('Leniency', () => { + it('testContainsMoreThanOneSlashInNationalNumber', () => { + // A date should return true. + number.setCountryCode(1) + number.setCountryCodeSource(CountryCodeSource.FROM_DEFAULT_COUNTRY) + containsMoreThanOneSlashInNationalNumber(number, '1/05/2013').should.equal(true) + + // Here, the country code source thinks it started with a country calling code, but this is not + // the same as the part before the slash, so it's still true. + number.setCountryCode(274) + number.setCountryCodeSource(CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN) + containsMoreThanOneSlashInNationalNumber(number, '27/4/2013').should.equal(true) + + // Now it should be false, because the first slash is after the country calling code. + number.setCountryCode(49) + number.setCountryCodeSource(CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN) + containsMoreThanOneSlashInNationalNumber(number, '49/69/2013').should.equal(false) + + number.setCountryCode(49) + number.setCountryCodeSource(CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN) + containsMoreThanOneSlashInNationalNumber(number, '+49/69/2013').should.equal(false) + containsMoreThanOneSlashInNationalNumber(number, '+ 49/69/2013').should.equal(false) + containsMoreThanOneSlashInNationalNumber(number, '+ 49/69/20/13').should.equal(true) + + // Here, the first group is not assumed to be the country calling code, even though it is the + // same as it, so this should return true. + number.setCountryCode(49) + number.setCountryCodeSource(CountryCodeSource.FROM_DEFAULT_COUNTRY) + containsMoreThanOneSlashInNationalNumber(number, '49/69/2013').should.equal(true) + }) +}) +*/ +"use strict"; +//# sourceMappingURL=Leniency.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/Leniency.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/Leniency.test.js.map new file mode 100644 index 00000000..a69e4625 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/Leniency.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Leniency.test.js","names":[],"sources":["../../source/findNumbers/Leniency.test.js"],"sourcesContent":["/*\r\nimport { containsMoreThanOneSlashInNationalNumber } from './Leniency.js'\r\n\r\ndescribe('Leniency', () => {\r\n\tit('testContainsMoreThanOneSlashInNationalNumber', () => {\r\n\t\t// A date should return true.\r\n\t\tnumber.setCountryCode(1)\r\n\t\tnumber.setCountryCodeSource(CountryCodeSource.FROM_DEFAULT_COUNTRY)\r\n\t\tcontainsMoreThanOneSlashInNationalNumber(number, '1/05/2013').should.equal(true)\r\n\r\n\t\t// Here, the country code source thinks it started with a country calling code, but this is not\r\n\t\t// the same as the part before the slash, so it's still true.\r\n\t\tnumber.setCountryCode(274)\r\n\t\tnumber.setCountryCodeSource(CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN)\r\n\t\tcontainsMoreThanOneSlashInNationalNumber(number, '27/4/2013').should.equal(true)\r\n\r\n\t\t// Now it should be false, because the first slash is after the country calling code.\r\n\t\tnumber.setCountryCode(49)\r\n\t\tnumber.setCountryCodeSource(CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN)\r\n\t\tcontainsMoreThanOneSlashInNationalNumber(number, '49/69/2013').should.equal(false)\r\n\r\n\t\tnumber.setCountryCode(49)\r\n\t\tnumber.setCountryCodeSource(CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN)\r\n\t\tcontainsMoreThanOneSlashInNationalNumber(number, '+49/69/2013').should.equal(false)\r\n\t\tcontainsMoreThanOneSlashInNationalNumber(number, '+ 49/69/2013').should.equal(false)\r\n\t\tcontainsMoreThanOneSlashInNationalNumber(number, '+ 49/69/20/13').should.equal(true)\r\n\r\n\t\t// Here, the first group is not assumed to be the country calling code, even though it is the\r\n\t\t// same as it, so this should return true.\r\n\t\tnumber.setCountryCode(49)\r\n\t\tnumber.setCountryCodeSource(CountryCodeSource.FROM_DEFAULT_COUNTRY)\r\n\t\tcontainsMoreThanOneSlashInNationalNumber(number, '49/69/2013').should.equal(true)\r\n\t})\r\n})\r\n*/"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/RegExpCache.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/RegExpCache.js new file mode 100644 index 00000000..7b057478 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/RegExpCache.js @@ -0,0 +1,47 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _LRUCache = _interopRequireDefault(require("./LRUCache.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +// A cache for frequently used country-specific regular expressions. Set to 32 to cover ~2-3 +// countries being used for the same doc with ~10 patterns for each country. Some pages will have +// a lot more countries in use, but typically fewer numbers for each so expanding the cache for +// that use-case won't have a lot of benefit. +var RegExpCache = /*#__PURE__*/function () { + function RegExpCache(size) { + _classCallCheck(this, RegExpCache); + + this.cache = new _LRUCache["default"](size); + } + + _createClass(RegExpCache, [{ + key: "getPatternForRegExp", + value: function getPatternForRegExp(pattern) { + var regExp = this.cache.get(pattern); + + if (!regExp) { + regExp = new RegExp('^' + pattern); + this.cache.put(pattern, regExp); + } + + return regExp; + } + }]); + + return RegExpCache; +}(); + +exports["default"] = RegExpCache; +//# sourceMappingURL=RegExpCache.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/RegExpCache.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/RegExpCache.js.map new file mode 100644 index 00000000..fad16733 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/RegExpCache.js.map @@ -0,0 +1 @@ +{"version":3,"file":"RegExpCache.js","names":["RegExpCache","size","cache","LRUCache","pattern","regExp","get","RegExp","put"],"sources":["../../source/findNumbers/RegExpCache.js"],"sourcesContent":["import LRUCache from './LRUCache.js'\r\n\r\n// A cache for frequently used country-specific regular expressions. Set to 32 to cover ~2-3\r\n// countries being used for the same doc with ~10 patterns for each country. Some pages will have\r\n// a lot more countries in use, but typically fewer numbers for each so expanding the cache for\r\n// that use-case won't have a lot of benefit.\r\nexport default class RegExpCache {\r\n\tconstructor(size) {\r\n\t\tthis.cache = new LRUCache(size)\r\n\t}\r\n\r\n\tgetPatternForRegExp(pattern) {\r\n\t\tlet regExp = this.cache.get(pattern)\r\n\t\tif (!regExp) {\r\n\t\t\tregExp = new RegExp('^' + pattern)\r\n\t\t\tthis.cache.put(pattern, regExp)\r\n\t\t}\r\n\t\treturn regExp\r\n\t}\r\n}"],"mappings":";;;;;;;AAAA;;;;;;;;;;AAEA;AACA;AACA;AACA;IACqBA,W;EACpB,qBAAYC,IAAZ,EAAkB;IAAA;;IACjB,KAAKC,KAAL,GAAa,IAAIC,oBAAJ,CAAaF,IAAb,CAAb;EACA;;;;WAED,6BAAoBG,OAApB,EAA6B;MAC5B,IAAIC,MAAM,GAAG,KAAKH,KAAL,CAAWI,GAAX,CAAeF,OAAf,CAAb;;MACA,IAAI,CAACC,MAAL,EAAa;QACZA,MAAM,GAAG,IAAIE,MAAJ,CAAW,MAAMH,OAAjB,CAAT;QACA,KAAKF,KAAL,CAAWM,GAAX,CAAeJ,OAAf,EAAwBC,MAAxB;MACA;;MACD,OAAOA,MAAP;IACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/isValidCandidate.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/isValidCandidate.js new file mode 100644 index 00000000..690effae --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/isValidCandidate.js @@ -0,0 +1,80 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.LEAD_CLASS = void 0; +exports["default"] = isValidCandidate; + +var _constants = require("../constants.js"); + +var _util = require("./util.js"); + +var _utf = require("./utf-8.js"); + +// Copy-pasted from `PhoneNumberMatcher.js`. +var OPENING_PARENS = "(\\[\uFF08\uFF3B"; +var CLOSING_PARENS = ")\\]\uFF09\uFF3D"; +var NON_PARENS = "[^".concat(OPENING_PARENS).concat(CLOSING_PARENS, "]"); +var LEAD_CLASS = "[".concat(OPENING_PARENS).concat(_constants.PLUS_CHARS, "]"); // Punctuation that may be at the start of a phone number - brackets and plus signs. + +exports.LEAD_CLASS = LEAD_CLASS; +var LEAD_CLASS_LEADING = new RegExp('^' + LEAD_CLASS); // Limit on the number of pairs of brackets in a phone number. + +var BRACKET_PAIR_LIMIT = (0, _util.limit)(0, 3); +/** + * Pattern to check that brackets match. Opening brackets should be closed within a phone number. + * This also checks that there is something inside the brackets. Having no brackets at all is also + * fine. + * + * An opening bracket at the beginning may not be closed, but subsequent ones should be. It's + * also possible that the leading bracket was dropped, so we shouldn't be surprised if we see a + * closing bracket first. We limit the sets of brackets in a phone number to four. + */ + +var MATCHING_BRACKETS_ENTIRE = new RegExp('^' + "(?:[" + OPENING_PARENS + "])?" + "(?:" + NON_PARENS + "+" + "[" + CLOSING_PARENS + "])?" + NON_PARENS + "+" + "(?:[" + OPENING_PARENS + "]" + NON_PARENS + "+[" + CLOSING_PARENS + "])" + BRACKET_PAIR_LIMIT + NON_PARENS + "*" + '$'); +/** + * Matches strings that look like publication pages. Example: + *

Computing Complete Answers to Queries in the Presence of Limited Access Patterns.
+ * Chen Li. VLDB J. 12(3): 211-227 (2003).
+ * + * The string "211-227 (2003)" is not a telephone number. + */ + +var PUB_PAGES = /\d{1,5}-+\d{1,5}\s{0,4}\(\d{1,4}/; + +function isValidCandidate(candidate, offset, text, leniency) { + // Check the candidate doesn't contain any formatting + // which would indicate that it really isn't a phone number. + if (!MATCHING_BRACKETS_ENTIRE.test(candidate) || PUB_PAGES.test(candidate)) { + return; + } // If leniency is set to VALID or stricter, we also want to skip numbers that are surrounded + // by Latin alphabetic characters, to skip cases like abc8005001234 or 8005001234def. + + + if (leniency !== 'POSSIBLE') { + // If the candidate is not at the start of the text, + // and does not start with phone-number punctuation, + // check the previous character. + if (offset > 0 && !LEAD_CLASS_LEADING.test(candidate)) { + var previousChar = text[offset - 1]; // We return null if it is a latin letter or an invalid punctuation symbol. + + if ((0, _utf.isInvalidPunctuationSymbol)(previousChar) || (0, _utf.isLatinLetter)(previousChar)) { + return false; + } + } + + var lastCharIndex = offset + candidate.length; + + if (lastCharIndex < text.length) { + var nextChar = text[lastCharIndex]; + + if ((0, _utf.isInvalidPunctuationSymbol)(nextChar) || (0, _utf.isLatinLetter)(nextChar)) { + return false; + } + } + } + + return true; +} +//# sourceMappingURL=isValidCandidate.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/isValidCandidate.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/isValidCandidate.js.map new file mode 100644 index 00000000..a2421525 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/isValidCandidate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isValidCandidate.js","names":["OPENING_PARENS","CLOSING_PARENS","NON_PARENS","LEAD_CLASS","PLUS_CHARS","LEAD_CLASS_LEADING","RegExp","BRACKET_PAIR_LIMIT","limit","MATCHING_BRACKETS_ENTIRE","PUB_PAGES","isValidCandidate","candidate","offset","text","leniency","test","previousChar","isInvalidPunctuationSymbol","isLatinLetter","lastCharIndex","length","nextChar"],"sources":["../../source/findNumbers/isValidCandidate.js"],"sourcesContent":["// Copy-pasted from `PhoneNumberMatcher.js`.\r\n\r\nimport { PLUS_CHARS } from '../constants.js'\r\nimport { limit } from './util.js'\r\n\r\nimport {\r\n\tisLatinLetter,\r\n\tisInvalidPunctuationSymbol\r\n} from './utf-8.js'\r\n\r\nconst OPENING_PARENS = '(\\\\[\\uFF08\\uFF3B'\r\nconst CLOSING_PARENS = ')\\\\]\\uFF09\\uFF3D'\r\nconst NON_PARENS = `[^${OPENING_PARENS}${CLOSING_PARENS}]`\r\n\r\nexport const LEAD_CLASS = `[${OPENING_PARENS}${PLUS_CHARS}]`\r\n\r\n// Punctuation that may be at the start of a phone number - brackets and plus signs.\r\nconst LEAD_CLASS_LEADING = new RegExp('^' + LEAD_CLASS)\r\n\r\n// Limit on the number of pairs of brackets in a phone number.\r\nconst BRACKET_PAIR_LIMIT = limit(0, 3)\r\n\r\n/**\r\n * Pattern to check that brackets match. Opening brackets should be closed within a phone number.\r\n * This also checks that there is something inside the brackets. Having no brackets at all is also\r\n * fine.\r\n *\r\n * An opening bracket at the beginning may not be closed, but subsequent ones should be. It's\r\n * also possible that the leading bracket was dropped, so we shouldn't be surprised if we see a\r\n * closing bracket first. We limit the sets of brackets in a phone number to four.\r\n */\r\nconst MATCHING_BRACKETS_ENTIRE = new RegExp\r\n(\r\n\t'^'\r\n\t+ \"(?:[\" + OPENING_PARENS + \"])?\" + \"(?:\" + NON_PARENS + \"+\" + \"[\" + CLOSING_PARENS + \"])?\"\r\n\t+ NON_PARENS + \"+\"\r\n\t+ \"(?:[\" + OPENING_PARENS + \"]\" + NON_PARENS + \"+[\" + CLOSING_PARENS + \"])\" + BRACKET_PAIR_LIMIT\r\n\t+ NON_PARENS + \"*\"\r\n\t+ '$'\r\n)\r\n\r\n/**\r\n * Matches strings that look like publication pages. Example:\r\n *
Computing Complete Answers to Queries in the Presence of Limited Access Patterns.\r\n * Chen Li. VLDB J. 12(3): 211-227 (2003).
\r\n *\r\n * The string \"211-227 (2003)\" is not a telephone number.\r\n */\r\nconst PUB_PAGES = /\\d{1,5}-+\\d{1,5}\\s{0,4}\\(\\d{1,4}/\r\n\r\nexport default function isValidCandidate(candidate, offset, text, leniency)\r\n{\r\n\t// Check the candidate doesn't contain any formatting\r\n\t// which would indicate that it really isn't a phone number.\r\n\tif (!MATCHING_BRACKETS_ENTIRE.test(candidate) || PUB_PAGES.test(candidate)) {\r\n\t\treturn\r\n\t}\r\n\r\n\t// If leniency is set to VALID or stricter, we also want to skip numbers that are surrounded\r\n\t// by Latin alphabetic characters, to skip cases like abc8005001234 or 8005001234def.\r\n\tif (leniency !== 'POSSIBLE')\r\n\t{\r\n\t\t// If the candidate is not at the start of the text,\r\n\t\t// and does not start with phone-number punctuation,\r\n\t\t// check the previous character.\r\n\t\tif (offset > 0 && !LEAD_CLASS_LEADING.test(candidate))\r\n\t\t{\r\n\t\t\tconst previousChar = text[offset - 1]\r\n\t\t\t// We return null if it is a latin letter or an invalid punctuation symbol.\r\n\t\t\tif (isInvalidPunctuationSymbol(previousChar) || isLatinLetter(previousChar)) {\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst lastCharIndex = offset + candidate.length\r\n\t\tif (lastCharIndex < text.length)\r\n\t\t{\r\n\t\t\tconst nextChar = text[lastCharIndex]\r\n\t\t\tif (isInvalidPunctuationSymbol(nextChar) || isLatinLetter(nextChar)) {\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn true\r\n}"],"mappings":";;;;;;;;AAEA;;AACA;;AAEA;;AALA;AAUA,IAAMA,cAAc,GAAG,kBAAvB;AACA,IAAMC,cAAc,GAAG,kBAAvB;AACA,IAAMC,UAAU,eAAQF,cAAR,SAAyBC,cAAzB,MAAhB;AAEO,IAAME,UAAU,cAAOH,cAAP,SAAwBI,qBAAxB,MAAhB,C,CAEP;;;AACA,IAAMC,kBAAkB,GAAG,IAAIC,MAAJ,CAAW,MAAMH,UAAjB,CAA3B,C,CAEA;;AACA,IAAMI,kBAAkB,GAAG,IAAAC,WAAA,EAAM,CAAN,EAAS,CAAT,CAA3B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMC,wBAAwB,GAAG,IAAIH,MAAJ,CAEhC,MACE,MADF,GACWN,cADX,GAC4B,KAD5B,GACoC,KADpC,GAC4CE,UAD5C,GACyD,GADzD,GAC+D,GAD/D,GACqED,cADrE,GACsF,KADtF,GAEEC,UAFF,GAEe,GAFf,GAGE,MAHF,GAGWF,cAHX,GAG4B,GAH5B,GAGkCE,UAHlC,GAG+C,IAH/C,GAGsDD,cAHtD,GAGuE,IAHvE,GAG8EM,kBAH9E,GAIEL,UAJF,GAIe,GAJf,GAKE,GAP8B,CAAjC;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMQ,SAAS,GAAG,kCAAlB;;AAEe,SAASC,gBAAT,CAA0BC,SAA1B,EAAqCC,MAArC,EAA6CC,IAA7C,EAAmDC,QAAnD,EACf;EACC;EACA;EACA,IAAI,CAACN,wBAAwB,CAACO,IAAzB,CAA8BJ,SAA9B,CAAD,IAA6CF,SAAS,CAACM,IAAV,CAAeJ,SAAf,CAAjD,EAA4E;IAC3E;EACA,CALF,CAOC;EACA;;;EACA,IAAIG,QAAQ,KAAK,UAAjB,EACA;IACC;IACA;IACA;IACA,IAAIF,MAAM,GAAG,CAAT,IAAc,CAACR,kBAAkB,CAACW,IAAnB,CAAwBJ,SAAxB,CAAnB,EACA;MACC,IAAMK,YAAY,GAAGH,IAAI,CAACD,MAAM,GAAG,CAAV,CAAzB,CADD,CAEC;;MACA,IAAI,IAAAK,+BAAA,EAA2BD,YAA3B,KAA4C,IAAAE,kBAAA,EAAcF,YAAd,CAAhD,EAA6E;QAC5E,OAAO,KAAP;MACA;IACD;;IAED,IAAMG,aAAa,GAAGP,MAAM,GAAGD,SAAS,CAACS,MAAzC;;IACA,IAAID,aAAa,GAAGN,IAAI,CAACO,MAAzB,EACA;MACC,IAAMC,QAAQ,GAAGR,IAAI,CAACM,aAAD,CAArB;;MACA,IAAI,IAAAF,+BAAA,EAA2BI,QAA3B,KAAwC,IAAAH,kBAAA,EAAcG,QAAd,CAA5C,EAAqE;QACpE,OAAO,KAAP;MACA;IACD;EACD;;EAED,OAAO,IAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/isValidPreCandidate.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/isValidPreCandidate.js new file mode 100644 index 00000000..fa8b5a09 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/isValidPreCandidate.js @@ -0,0 +1,34 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = isValidPreCandidate; +// Matches strings that look like dates using "/" as a separator. +// Examples: 3/10/2011, 31/10/96 or 08/31/95. +var SLASH_SEPARATED_DATES = /(?:(?:[0-3]?\d\/[01]?\d)|(?:[01]?\d\/[0-3]?\d))\/(?:[12]\d)?\d{2}/; // Matches timestamps. +// Examples: "2012-01-02 08:00". +// Note that the reg-ex does not include the +// trailing ":\d\d" -- that is covered by TIME_STAMPS_SUFFIX. + +var TIME_STAMPS = /[12]\d{3}[-/]?[01]\d[-/]?[0-3]\d +[0-2]\d$/; +var TIME_STAMPS_SUFFIX_LEADING = /^:[0-5]\d/; + +function isValidPreCandidate(candidate, offset, text) { + // Skip a match that is more likely to be a date. + if (SLASH_SEPARATED_DATES.test(candidate)) { + return false; + } // Skip potential time-stamps. + + + if (TIME_STAMPS.test(candidate)) { + var followingText = text.slice(offset + candidate.length); + + if (TIME_STAMPS_SUFFIX_LEADING.test(followingText)) { + return false; + } + } + + return true; +} +//# sourceMappingURL=isValidPreCandidate.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/isValidPreCandidate.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/isValidPreCandidate.js.map new file mode 100644 index 00000000..d7cf0284 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/isValidPreCandidate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isValidPreCandidate.js","names":["SLASH_SEPARATED_DATES","TIME_STAMPS","TIME_STAMPS_SUFFIX_LEADING","isValidPreCandidate","candidate","offset","text","test","followingText","slice","length"],"sources":["../../source/findNumbers/isValidPreCandidate.js"],"sourcesContent":["// Matches strings that look like dates using \"/\" as a separator.\r\n// Examples: 3/10/2011, 31/10/96 or 08/31/95.\r\nconst SLASH_SEPARATED_DATES = /(?:(?:[0-3]?\\d\\/[01]?\\d)|(?:[01]?\\d\\/[0-3]?\\d))\\/(?:[12]\\d)?\\d{2}/\r\n\r\n// Matches timestamps.\r\n// Examples: \"2012-01-02 08:00\".\r\n// Note that the reg-ex does not include the\r\n// trailing \":\\d\\d\" -- that is covered by TIME_STAMPS_SUFFIX.\r\nconst TIME_STAMPS = /[12]\\d{3}[-/]?[01]\\d[-/]?[0-3]\\d +[0-2]\\d$/\r\nconst TIME_STAMPS_SUFFIX_LEADING = /^:[0-5]\\d/\r\n\r\nexport default function isValidPreCandidate(candidate, offset, text)\r\n{\r\n\t// Skip a match that is more likely to be a date.\r\n\tif (SLASH_SEPARATED_DATES.test(candidate)) {\r\n\t\treturn false\r\n\t}\r\n\r\n\t// Skip potential time-stamps.\r\n\tif (TIME_STAMPS.test(candidate))\r\n\t{\r\n\t\tconst followingText = text.slice(offset + candidate.length)\r\n\t\tif (TIME_STAMPS_SUFFIX_LEADING.test(followingText)) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t}\r\n\r\n\treturn true\r\n}"],"mappings":";;;;;;AAAA;AACA;AACA,IAAMA,qBAAqB,GAAG,mEAA9B,C,CAEA;AACA;AACA;AACA;;AACA,IAAMC,WAAW,GAAG,4CAApB;AACA,IAAMC,0BAA0B,GAAG,WAAnC;;AAEe,SAASC,mBAAT,CAA6BC,SAA7B,EAAwCC,MAAxC,EAAgDC,IAAhD,EACf;EACC;EACA,IAAIN,qBAAqB,CAACO,IAAtB,CAA2BH,SAA3B,CAAJ,EAA2C;IAC1C,OAAO,KAAP;EACA,CAJF,CAMC;;;EACA,IAAIH,WAAW,CAACM,IAAZ,CAAiBH,SAAjB,CAAJ,EACA;IACC,IAAMI,aAAa,GAAGF,IAAI,CAACG,KAAL,CAAWJ,MAAM,GAAGD,SAAS,CAACM,MAA9B,CAAtB;;IACA,IAAIR,0BAA0B,CAACK,IAA3B,CAAgCC,aAAhC,CAAJ,EAAoD;MACnD,OAAO,KAAP;IACA;EACD;;EAED,OAAO,IAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/parsePreCandidate.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/parsePreCandidate.js new file mode 100644 index 00000000..689ea1d7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/parsePreCandidate.js @@ -0,0 +1,26 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = parsePreCandidate; + +var _util = require("./util.js"); + +// Regular expression of characters typically used to start a second phone number for the purposes +// of parsing. This allows us to strip off parts of the number that are actually the start of +// another number, such as for: (530) 583-6985 x302/x2303 -> the second extension here makes this +// actually two phone numbers, (530) 583-6985 x302 and (530) 583-6985 x2303. We remove the second +// extension so that the first number is parsed correctly. +// +// Matches a slash (\ or /) followed by a space followed by an `x`. +// +var SECOND_NUMBER_START_PATTERN = /[\\/] *x/; + +function parsePreCandidate(candidate) { + // Check for extra numbers at the end. + // TODO: This is the place to start when trying to support extraction of multiple phone number + // from split notations (+41 79 123 45 67 / 68). + return (0, _util.trimAfterFirstMatch)(SECOND_NUMBER_START_PATTERN, candidate); +} +//# sourceMappingURL=parsePreCandidate.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/parsePreCandidate.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/parsePreCandidate.js.map new file mode 100644 index 00000000..11b069f6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/parsePreCandidate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parsePreCandidate.js","names":["SECOND_NUMBER_START_PATTERN","parsePreCandidate","candidate","trimAfterFirstMatch"],"sources":["../../source/findNumbers/parsePreCandidate.js"],"sourcesContent":["import { trimAfterFirstMatch } from './util.js'\r\n\r\n// Regular expression of characters typically used to start a second phone number for the purposes\r\n// of parsing. This allows us to strip off parts of the number that are actually the start of\r\n// another number, such as for: (530) 583-6985 x302/x2303 -> the second extension here makes this\r\n// actually two phone numbers, (530) 583-6985 x302 and (530) 583-6985 x2303. We remove the second\r\n// extension so that the first number is parsed correctly.\r\n//\r\n// Matches a slash (\\ or /) followed by a space followed by an `x`.\r\n//\r\nconst SECOND_NUMBER_START_PATTERN = /[\\\\/] *x/\r\n\r\nexport default function parsePreCandidate(candidate)\r\n{\r\n\t// Check for extra numbers at the end.\r\n\t// TODO: This is the place to start when trying to support extraction of multiple phone number\r\n\t// from split notations (+41 79 123 45 67 / 68).\r\n\treturn trimAfterFirstMatch(SECOND_NUMBER_START_PATTERN, candidate)\r\n}"],"mappings":";;;;;;;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMA,2BAA2B,GAAG,UAApC;;AAEe,SAASC,iBAAT,CAA2BC,SAA3B,EACf;EACC;EACA;EACA;EACA,OAAO,IAAAC,yBAAA,EAAoBH,2BAApB,EAAiDE,SAAjD,CAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/utf-8.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/utf-8.js new file mode 100644 index 00000000..0e4b7981 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/utf-8.js @@ -0,0 +1,76 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports._pN = exports._pL = exports.PZ = void 0; +exports.isInvalidPunctuationSymbol = isInvalidPunctuationSymbol; +exports.isLatinLetter = isLatinLetter; +exports.pZ = exports.pNd = void 0; +// Javascript doesn't support UTF-8 regular expressions. +// So mimicking them here. +// Copy-pasted from `PhoneNumberMatcher.js`. + +/** + * "\p{Z}" is any kind of whitespace or invisible separator ("Separator"). + * http://www.regular-expressions.info/unicode.html + * "\P{Z}" is the reverse of "\p{Z}". + * "\p{N}" is any kind of numeric character in any script ("Number"). + * "\p{Nd}" is a digit zero through nine in any script except "ideographic scripts" ("Decimal_Digit_Number"). + * "\p{Sc}" is a currency symbol ("Currency_Symbol"). + * "\p{L}" is any kind of letter from any language ("Letter"). + * "\p{Mn}" is "non-spacing mark". + * + * Javascript doesn't support Unicode Regular Expressions + * so substituting it with this explicit set of characters. + * + * https://stackoverflow.com/questions/13210194/javascript-regex-equivalent-of-a-za-z-using-pl + * https://github.com/danielberndt/babel-plugin-utf-8-regex/blob/master/src/transformer.js + */ +var _pZ = " \xA0\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000"; +var pZ = "[".concat(_pZ, "]"); +exports.pZ = pZ; +var PZ = "[^".concat(_pZ, "]"); +exports.PZ = PZ; +var _pN = "0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D66-\u0D75\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19"; // const pN = `[${_pN}]` + +exports._pN = _pN; +var _pNd = "0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19"; +var pNd = "[".concat(_pNd, "]"); +exports.pNd = pNd; +var _pL = "A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC"; +exports._pL = _pL; +var pL = "[".concat(_pL, "]"); +var pL_regexp = new RegExp(pL); +var _pSc = "$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20B9\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6"; +var pSc = "[".concat(_pSc, "]"); +var pSc_regexp = new RegExp(pSc); +var _pMn = "\u0300-\u036F\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08E4-\u08FE\u0900-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2\u09E3\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B56\u0B62\u0B63\u0B82\u0BC0\u0BCD\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0CBC\u0CBF\u0CC6\u0CCC\u0CCD\u0CE2\u0CE3\u0D41-\u0D44\u0D4D\u0D62\u0D63\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1A17\u1A18\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BAB\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1DC0-\u1DE6\u1DFC-\u1DFF\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099\u309A\uA66F\uA674-\uA67D\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA825\uA826\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEC\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE26"; +var pMn = "[".concat(_pMn, "]"); +var pMn_regexp = new RegExp(pMn); +var _InBasic_Latin = "\0-\x7F"; +var _InLatin_1_Supplement = "\x80-\xFF"; +var _InLatin_Extended_A = "\u0100-\u017F"; +var _InLatin_Extended_Additional = "\u1E00-\u1EFF"; +var _InLatin_Extended_B = "\u0180-\u024F"; +var _InCombining_Diacritical_Marks = "\u0300-\u036F"; +var latinLetterRegexp = new RegExp('[' + _InBasic_Latin + _InLatin_1_Supplement + _InLatin_Extended_A + _InLatin_Extended_Additional + _InLatin_Extended_B + _InCombining_Diacritical_Marks + ']'); +/** + * Helper method to determine if a character is a Latin-script letter or not. + * For our purposes, combining marks should also return true since we assume + * they have been added to a preceding Latin character. + */ + +function isLatinLetter(letter) { + // Combining marks are a subset of non-spacing-mark. + if (!pL_regexp.test(letter) && !pMn_regexp.test(letter)) { + return false; + } + + return latinLetterRegexp.test(letter); +} + +function isInvalidPunctuationSymbol(character) { + return character === '%' || pSc_regexp.test(character); +} +//# sourceMappingURL=utf-8.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/utf-8.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/utf-8.js.map new file mode 100644 index 00000000..302facc6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/utf-8.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utf-8.js","names":["_pZ","pZ","PZ","_pN","_pNd","pNd","_pL","pL","pL_regexp","RegExp","_pSc","pSc","pSc_regexp","_pMn","pMn","pMn_regexp","_InBasic_Latin","_InLatin_1_Supplement","_InLatin_Extended_A","_InLatin_Extended_Additional","_InLatin_Extended_B","_InCombining_Diacritical_Marks","latinLetterRegexp","isLatinLetter","letter","test","isInvalidPunctuationSymbol","character"],"sources":["../../source/findNumbers/utf-8.js"],"sourcesContent":["// Javascript doesn't support UTF-8 regular expressions.\r\n// So mimicking them here.\r\n\r\n// Copy-pasted from `PhoneNumberMatcher.js`.\r\n\r\n/**\r\n * \"\\p{Z}\" is any kind of whitespace or invisible separator (\"Separator\").\r\n * http://www.regular-expressions.info/unicode.html\r\n * \"\\P{Z}\" is the reverse of \"\\p{Z}\".\r\n * \"\\p{N}\" is any kind of numeric character in any script (\"Number\").\r\n * \"\\p{Nd}\" is a digit zero through nine in any script except \"ideographic scripts\" (\"Decimal_Digit_Number\").\r\n * \"\\p{Sc}\" is a currency symbol (\"Currency_Symbol\").\r\n * \"\\p{L}\" is any kind of letter from any language (\"Letter\").\r\n * \"\\p{Mn}\" is \"non-spacing mark\".\r\n *\r\n * Javascript doesn't support Unicode Regular Expressions\r\n * so substituting it with this explicit set of characters.\r\n *\r\n * https://stackoverflow.com/questions/13210194/javascript-regex-equivalent-of-a-za-z-using-pl\r\n * https://github.com/danielberndt/babel-plugin-utf-8-regex/blob/master/src/transformer.js\r\n */\r\n\r\nconst _pZ = '\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000'\r\nexport const pZ = `[${_pZ}]`\r\nexport const PZ = `[^${_pZ}]`\r\n\r\nexport const _pN = '\\u0030-\\u0039\\u00B2\\u00B3\\u00B9\\u00BC-\\u00BE\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u09F4-\\u09F9\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0B72-\\u0B77\\u0BE6-\\u0BF2\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0CE6-\\u0CEF\\u0D66-\\u0D75\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F33\\u1040-\\u1049\\u1090-\\u1099\\u1369-\\u137C\\u16EE-\\u16F0\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19DA\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u2182\\u2185-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3007\\u3021-\\u3029\\u3038-\\u303A\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA620-\\uA629\\uA6E6-\\uA6EF\\uA830-\\uA835\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19'\r\n// const pN = `[${_pN}]`\r\n\r\nconst _pNd = '\\u0030-\\u0039\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19'\r\nexport const pNd = `[${_pNd}]`\r\n\r\nexport const _pL = '\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC'\r\nconst pL = `[${_pL}]`\r\nconst pL_regexp = new RegExp(pL)\r\n\r\nconst _pSc = '\\u0024\\u00A2-\\u00A5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20B9\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6'\r\nconst pSc = `[${_pSc}]`\r\nconst pSc_regexp = new RegExp(pSc)\r\n\r\nconst _pMn = '\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u08FE\\u0900-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1DC0-\\u1DE6\\u1DFC-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26'\r\nconst pMn = `[${_pMn}]`\r\nconst pMn_regexp = new RegExp(pMn)\r\n\r\nconst _InBasic_Latin = '\\u0000-\\u007F'\r\nconst _InLatin_1_Supplement = '\\u0080-\\u00FF'\r\nconst _InLatin_Extended_A = '\\u0100-\\u017F'\r\nconst _InLatin_Extended_Additional = '\\u1E00-\\u1EFF'\r\nconst _InLatin_Extended_B = '\\u0180-\\u024F'\r\nconst _InCombining_Diacritical_Marks = '\\u0300-\\u036F'\r\n\r\nconst latinLetterRegexp = new RegExp\r\n(\r\n\t'[' +\r\n\t_InBasic_Latin +\r\n\t_InLatin_1_Supplement +\r\n\t_InLatin_Extended_A +\r\n\t_InLatin_Extended_Additional +\r\n\t_InLatin_Extended_B +\r\n\t_InCombining_Diacritical_Marks +\r\n\t']'\r\n)\r\n\r\n/**\r\n * Helper method to determine if a character is a Latin-script letter or not.\r\n * For our purposes, combining marks should also return true since we assume\r\n * they have been added to a preceding Latin character.\r\n */\r\nexport function isLatinLetter(letter)\r\n{\r\n\t// Combining marks are a subset of non-spacing-mark.\r\n\tif (!pL_regexp.test(letter) && !pMn_regexp.test(letter)) {\r\n\t\treturn false\r\n\t}\r\n\r\n\treturn latinLetterRegexp.test(letter)\r\n}\r\n\r\nexport function isInvalidPunctuationSymbol(character)\r\n{\r\n\treturn character === '%' || pSc_regexp.test(character)\r\n}"],"mappings":";;;;;;;;;AAAA;AACA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMA,GAAG,GAAG,8DAAZ;AACO,IAAMC,EAAE,cAAOD,GAAP,MAAR;;AACA,IAAME,EAAE,eAAQF,GAAR,MAAR;;AAEA,IAAMG,GAAG,GAAG,ixBAAZ,C,CACP;;;AAEA,IAAMC,IAAI,GAAG,+bAAb;AACO,IAAMC,GAAG,cAAOD,IAAP,MAAT;;AAEA,IAAME,GAAG,GAAG,+kIAAZ;;AACP,IAAMC,EAAE,cAAOD,GAAP,MAAR;AACA,IAAME,SAAS,GAAG,IAAIC,MAAJ,CAAWF,EAAX,CAAlB;AAEA,IAAMG,IAAI,GAAG,+HAAb;AACA,IAAMC,GAAG,cAAOD,IAAP,MAAT;AACA,IAAME,UAAU,GAAG,IAAIH,MAAJ,CAAWE,GAAX,CAAnB;AAEA,IAAME,IAAI,GAAG,s6DAAb;AACA,IAAMC,GAAG,cAAOD,IAAP,MAAT;AACA,IAAME,UAAU,GAAG,IAAIN,MAAJ,CAAWK,GAAX,CAAnB;AAEA,IAAME,cAAc,GAAG,SAAvB;AACA,IAAMC,qBAAqB,GAAG,WAA9B;AACA,IAAMC,mBAAmB,GAAG,eAA5B;AACA,IAAMC,4BAA4B,GAAG,eAArC;AACA,IAAMC,mBAAmB,GAAG,eAA5B;AACA,IAAMC,8BAA8B,GAAG,eAAvC;AAEA,IAAMC,iBAAiB,GAAG,IAAIb,MAAJ,CAEzB,MACAO,cADA,GAEAC,qBAFA,GAGAC,mBAHA,GAIAC,4BAJA,GAKAC,mBALA,GAMAC,8BANA,GAOA,GATyB,CAA1B;AAYA;AACA;AACA;AACA;AACA;;AACO,SAASE,aAAT,CAAuBC,MAAvB,EACP;EACC;EACA,IAAI,CAAChB,SAAS,CAACiB,IAAV,CAAeD,MAAf,CAAD,IAA2B,CAACT,UAAU,CAACU,IAAX,CAAgBD,MAAhB,CAAhC,EAAyD;IACxD,OAAO,KAAP;EACA;;EAED,OAAOF,iBAAiB,CAACG,IAAlB,CAAuBD,MAAvB,CAAP;AACA;;AAEM,SAASE,0BAAT,CAAoCC,SAApC,EACP;EACC,OAAOA,SAAS,KAAK,GAAd,IAAqBf,UAAU,CAACa,IAAX,CAAgBE,SAAhB,CAA5B;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/util.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/util.js new file mode 100644 index 00000000..c0cb1518 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/util.js @@ -0,0 +1,42 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.endsWith = endsWith; +exports.limit = limit; +exports.startsWith = startsWith; +exports.trimAfterFirstMatch = trimAfterFirstMatch; + +/** Returns a regular expression quantifier with an upper and lower limit. */ +function limit(lower, upper) { + if (lower < 0 || upper <= 0 || upper < lower) { + throw new TypeError(); + } + + return "{".concat(lower, ",").concat(upper, "}"); +} +/** + * Trims away any characters after the first match of {@code pattern} in {@code candidate}, + * returning the trimmed version. + */ + + +function trimAfterFirstMatch(regexp, string) { + var index = string.search(regexp); + + if (index >= 0) { + return string.slice(0, index); + } + + return string; +} + +function startsWith(string, substring) { + return string.indexOf(substring) === 0; +} + +function endsWith(string, substring) { + return string.indexOf(substring, string.length - substring.length) === string.length - substring.length; +} +//# sourceMappingURL=util.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/util.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/util.js.map new file mode 100644 index 00000000..2df67614 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"util.js","names":["limit","lower","upper","TypeError","trimAfterFirstMatch","regexp","string","index","search","slice","startsWith","substring","indexOf","endsWith","length"],"sources":["../../source/findNumbers/util.js"],"sourcesContent":["/** Returns a regular expression quantifier with an upper and lower limit. */\r\nexport function limit(lower, upper)\r\n{\r\n\tif ((lower < 0) || (upper <= 0) || (upper < lower)) {\r\n\t\tthrow new TypeError()\r\n\t}\r\n\treturn `{${lower},${upper}}`\r\n}\r\n\r\n/**\r\n * Trims away any characters after the first match of {@code pattern} in {@code candidate},\r\n * returning the trimmed version.\r\n */\r\nexport function trimAfterFirstMatch(regexp, string)\r\n{\r\n\tconst index = string.search(regexp)\r\n\r\n\tif (index >= 0) {\r\n\t\treturn string.slice(0, index)\r\n\t}\r\n\r\n\treturn string\r\n}\r\n\r\nexport function startsWith(string, substring)\r\n{\r\n\treturn string.indexOf(substring) === 0\r\n}\r\n\r\nexport function endsWith(string, substring)\r\n{\r\n\treturn string.indexOf(substring, string.length - substring.length) === string.length - substring.length\r\n}\r\n"],"mappings":";;;;;;;;;;AAAA;AACO,SAASA,KAAT,CAAeC,KAAf,EAAsBC,KAAtB,EACP;EACC,IAAKD,KAAK,GAAG,CAAT,IAAgBC,KAAK,IAAI,CAAzB,IAAgCA,KAAK,GAAGD,KAA5C,EAAoD;IACnD,MAAM,IAAIE,SAAJ,EAAN;EACA;;EACD,kBAAWF,KAAX,cAAoBC,KAApB;AACA;AAED;AACA;AACA;AACA;;;AACO,SAASE,mBAAT,CAA6BC,MAA7B,EAAqCC,MAArC,EACP;EACC,IAAMC,KAAK,GAAGD,MAAM,CAACE,MAAP,CAAcH,MAAd,CAAd;;EAEA,IAAIE,KAAK,IAAI,CAAb,EAAgB;IACf,OAAOD,MAAM,CAACG,KAAP,CAAa,CAAb,EAAgBF,KAAhB,CAAP;EACA;;EAED,OAAOD,MAAP;AACA;;AAEM,SAASI,UAAT,CAAoBJ,MAApB,EAA4BK,SAA5B,EACP;EACC,OAAOL,MAAM,CAACM,OAAP,CAAeD,SAAf,MAA8B,CAArC;AACA;;AAEM,SAASE,QAAT,CAAkBP,MAAlB,EAA0BK,SAA1B,EACP;EACC,OAAOL,MAAM,CAACM,OAAP,CAAeD,SAAf,EAA0BL,MAAM,CAACQ,MAAP,GAAgBH,SAAS,CAACG,MAApD,MAAgER,MAAM,CAACQ,MAAP,GAAgBH,SAAS,CAACG,MAAjG;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/util.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/util.test.js new file mode 100644 index 00000000..2cde0d23 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/util.test.js @@ -0,0 +1,38 @@ +"use strict"; + +var _util = require("./util.js"); + +describe('findNumbers/util', function () { + it('should generate regexp limit', function () { + var thrower = function thrower() { + return (0, _util.limit)(1, 0); + }; + + thrower.should["throw"](); + + thrower = function thrower() { + return (0, _util.limit)(-1, 1); + }; + + thrower.should["throw"](); + + thrower = function thrower() { + return (0, _util.limit)(0, 0); + }; + + thrower.should["throw"](); + }); + it('should trimAfterFirstMatch', function () { + (0, _util.trimAfterFirstMatch)(/\d/, 'abc123').should.equal('abc'); + (0, _util.trimAfterFirstMatch)(/\d/, 'abc').should.equal('abc'); + }); + it('should determine if a string starts with a substring', function () { + (0, _util.startsWith)('𐍈123', '𐍈').should.equal(true); + (0, _util.startsWith)('1𐍈', '𐍈').should.equal(false); + }); + it('should determine if a string ends with a substring', function () { + (0, _util.endsWith)('123𐍈', '𐍈').should.equal(true); + (0, _util.endsWith)('𐍈1', '𐍈').should.equal(false); + }); +}); +//# sourceMappingURL=util.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/util.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/util.test.js.map new file mode 100644 index 00000000..738aa207 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers/util.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"util.test.js","names":["describe","it","thrower","limit","should","trimAfterFirstMatch","equal","startsWith","endsWith"],"sources":["../../source/findNumbers/util.test.js"],"sourcesContent":["import {\r\n\tlimit,\r\n\ttrimAfterFirstMatch,\r\n\tstartsWith,\r\n\tendsWith\r\n} from './util.js'\r\n\r\ndescribe('findNumbers/util', () =>\r\n{\r\n\tit('should generate regexp limit', () =>\r\n\t{\r\n\t\tlet thrower = () => limit(1, 0)\r\n\t\tthrower.should.throw()\r\n\r\n\t\tthrower = () => limit(-1, 1)\r\n\t\tthrower.should.throw()\r\n\r\n\t\tthrower = () => limit(0, 0)\r\n\t\tthrower.should.throw()\r\n\t})\r\n\r\n\tit('should trimAfterFirstMatch', () =>\r\n\t{\r\n\t\ttrimAfterFirstMatch(/\\d/, 'abc123').should.equal('abc')\r\n\t\ttrimAfterFirstMatch(/\\d/, 'abc').should.equal('abc')\r\n\t})\r\n\r\n\tit('should determine if a string starts with a substring', () =>\r\n\t{\r\n\t\tstartsWith('𐍈123', '𐍈').should.equal(true)\r\n\t\tstartsWith('1𐍈', '𐍈').should.equal(false)\r\n\t})\r\n\r\n\tit('should determine if a string ends with a substring', () =>\r\n\t{\r\n\t\tendsWith('123𐍈', '𐍈').should.equal(true)\r\n\t\tendsWith('𐍈1', '𐍈').should.equal(false)\r\n\t})\r\n})"],"mappings":";;AAAA;;AAOAA,QAAQ,CAAC,kBAAD,EAAqB,YAC7B;EACCC,EAAE,CAAC,8BAAD,EAAiC,YACnC;IACC,IAAIC,OAAO,GAAG;MAAA,OAAM,IAAAC,WAAA,EAAM,CAAN,EAAS,CAAT,CAAN;IAAA,CAAd;;IACAD,OAAO,CAACE,MAAR;;IAEAF,OAAO,GAAG;MAAA,OAAM,IAAAC,WAAA,EAAM,CAAC,CAAP,EAAU,CAAV,CAAN;IAAA,CAAV;;IACAD,OAAO,CAACE,MAAR;;IAEAF,OAAO,GAAG;MAAA,OAAM,IAAAC,WAAA,EAAM,CAAN,EAAS,CAAT,CAAN;IAAA,CAAV;;IACAD,OAAO,CAACE,MAAR;EACA,CAVC,CAAF;EAYAH,EAAE,CAAC,4BAAD,EAA+B,YACjC;IACC,IAAAI,yBAAA,EAAoB,IAApB,EAA0B,QAA1B,EAAoCD,MAApC,CAA2CE,KAA3C,CAAiD,KAAjD;IACA,IAAAD,yBAAA,EAAoB,IAApB,EAA0B,KAA1B,EAAiCD,MAAjC,CAAwCE,KAAxC,CAA8C,KAA9C;EACA,CAJC,CAAF;EAMAL,EAAE,CAAC,sDAAD,EAAyD,YAC3D;IACC,IAAAM,gBAAA,EAAW,OAAX,EAAoB,IAApB,EAA0BH,MAA1B,CAAiCE,KAAjC,CAAuC,IAAvC;IACA,IAAAC,gBAAA,EAAW,KAAX,EAAkB,IAAlB,EAAwBH,MAAxB,CAA+BE,KAA/B,CAAqC,KAArC;EACA,CAJC,CAAF;EAMAL,EAAE,CAAC,oDAAD,EAAuD,YACzD;IACC,IAAAO,cAAA,EAAS,OAAT,EAAkB,IAAlB,EAAwBJ,MAAxB,CAA+BE,KAA/B,CAAqC,IAArC;IACA,IAAAE,cAAA,EAAS,KAAT,EAAgB,IAAhB,EAAsBJ,MAAtB,CAA6BE,KAA7B,CAAmC,KAAnC;EACA,CAJC,CAAF;AAKA,CA/BO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers_.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers_.js new file mode 100644 index 00000000..2c736ccc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers_.js @@ -0,0 +1,22 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = findNumbers; + +var _PhoneNumberMatcher = _interopRequireDefault(require("./PhoneNumberMatcher.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function findNumbers(text, options, metadata) { + var matcher = new _PhoneNumberMatcher["default"](text, options, metadata); + var results = []; + + while (matcher.hasNext()) { + results.push(matcher.next()); + } + + return results; +} +//# sourceMappingURL=findNumbers_.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers_.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers_.js.map new file mode 100644 index 00000000..c8c6b329 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findNumbers_.js.map @@ -0,0 +1 @@ +{"version":3,"file":"findNumbers_.js","names":["findNumbers","text","options","metadata","matcher","PhoneNumberMatcher","results","hasNext","push","next"],"sources":["../source/findNumbers_.js"],"sourcesContent":["import PhoneNumberMatcher from './PhoneNumberMatcher.js'\r\n\r\nexport default function findNumbers(text, options, metadata) {\r\n\tconst matcher = new PhoneNumberMatcher(text, options, metadata)\r\n\tconst results = []\r\n\twhile (matcher.hasNext()) {\r\n\t\tresults.push(matcher.next())\r\n\t}\r\n\treturn results\r\n}"],"mappings":";;;;;;;AAAA;;;;AAEe,SAASA,WAAT,CAAqBC,IAArB,EAA2BC,OAA3B,EAAoCC,QAApC,EAA8C;EAC5D,IAAMC,OAAO,GAAG,IAAIC,8BAAJ,CAAuBJ,IAAvB,EAA6BC,OAA7B,EAAsCC,QAAtC,CAAhB;EACA,IAAMG,OAAO,GAAG,EAAhB;;EACA,OAAOF,OAAO,CAACG,OAAR,EAAP,EAA0B;IACzBD,OAAO,CAACE,IAAR,CAAaJ,OAAO,CAACK,IAAR,EAAb;EACA;;EACD,OAAOH,OAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbers.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbers.js new file mode 100644 index 00000000..b7d99724 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbers.js @@ -0,0 +1,42 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = findPhoneNumbers; +exports.searchPhoneNumbers = searchPhoneNumbers; + +var _findPhoneNumbers_ = _interopRequireWildcard(require("./findPhoneNumbers_.js")); + +var _parsePhoneNumber = require("./parsePhoneNumber.js"); + +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } + +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +// This is a legacy function. +// Use `findNumbers()` instead. +function findPhoneNumbers() { + var _normalizeArguments = (0, _parsePhoneNumber.normalizeArguments)(arguments), + text = _normalizeArguments.text, + options = _normalizeArguments.options, + metadata = _normalizeArguments.metadata; + + return (0, _findPhoneNumbers_["default"])(text, options, metadata); +} +/** + * @return ES6 `for ... of` iterator. + */ + + +function searchPhoneNumbers() { + var _normalizeArguments2 = (0, _parsePhoneNumber.normalizeArguments)(arguments), + text = _normalizeArguments2.text, + options = _normalizeArguments2.options, + metadata = _normalizeArguments2.metadata; + + return (0, _findPhoneNumbers_.searchPhoneNumbers)(text, options, metadata); +} +//# sourceMappingURL=findPhoneNumbers.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbers.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbers.js.map new file mode 100644 index 00000000..2a13a769 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbers.js.map @@ -0,0 +1 @@ +{"version":3,"file":"findPhoneNumbers.js","names":["findPhoneNumbers","normalizeArguments","arguments","text","options","metadata","_findPhoneNumbers","searchPhoneNumbers","_searchPhoneNumbers"],"sources":["../source/findPhoneNumbers.js"],"sourcesContent":["// This is a legacy function.\r\n// Use `findNumbers()` instead.\r\n\r\nimport _findPhoneNumbers, { searchPhoneNumbers as _searchPhoneNumbers } from './findPhoneNumbers_.js'\r\nimport { normalizeArguments } from './parsePhoneNumber.js'\r\n\r\nexport default function findPhoneNumbers()\r\n{\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\treturn _findPhoneNumbers(text, options, metadata)\r\n}\r\n\r\n/**\r\n * @return ES6 `for ... of` iterator.\r\n */\r\nexport function searchPhoneNumbers()\r\n{\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\treturn _searchPhoneNumbers(text, options, metadata)\r\n}"],"mappings":";;;;;;;;;;AAGA;;AACA;;;;;;AAJA;AACA;AAKe,SAASA,gBAAT,GACf;EACC,0BAAoC,IAAAC,oCAAA,EAAmBC,SAAnB,CAApC;EAAA,IAAQC,IAAR,uBAAQA,IAAR;EAAA,IAAcC,OAAd,uBAAcA,OAAd;EAAA,IAAuBC,QAAvB,uBAAuBA,QAAvB;;EACA,OAAO,IAAAC,6BAAA,EAAkBH,IAAlB,EAAwBC,OAAxB,EAAiCC,QAAjC,CAAP;AACA;AAED;AACA;AACA;;;AACO,SAASE,kBAAT,GACP;EACC,2BAAoC,IAAAN,oCAAA,EAAmBC,SAAnB,CAApC;EAAA,IAAQC,IAAR,wBAAQA,IAAR;EAAA,IAAcC,OAAd,wBAAcA,OAAd;EAAA,IAAuBC,QAAvB,wBAAuBA,QAAvB;;EACA,OAAO,IAAAG,qCAAA,EAAoBL,IAApB,EAA0BC,OAA1B,EAAmCC,QAAnC,CAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbers.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbers.test.js new file mode 100644 index 00000000..70c37313 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbers.test.js @@ -0,0 +1,240 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +var _findPhoneNumbers = _interopRequireWildcard(require("./findPhoneNumbers.js")); + +var _findPhoneNumbers_ = require("./findPhoneNumbers_.js"); + +var _metadataMin = _interopRequireDefault(require("../metadata.min.json")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } + +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +describe('findPhoneNumbers', function () { + it('should find numbers', function () { + (0, _findPhoneNumbers["default"])('2133734253', 'US', _metadataMin["default"]).should.deep.equal([{ + phone: '2133734253', + country: 'US', + startsAt: 0, + endsAt: 10 + }]); + (0, _findPhoneNumbers["default"])('(213) 373-4253', 'US', _metadataMin["default"]).should.deep.equal([{ + phone: '2133734253', + country: 'US', + startsAt: 0, + endsAt: 14 + }]); + (0, _findPhoneNumbers["default"])('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', _metadataMin["default"]).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + startsAt: 14, + endsAt: 32 + }, { + phone: '2133734253', + country: 'US', + startsAt: 41, + endsAt: 55 + }]); // Opening parenthesis issue. + // https://github.com/catamphetamine/libphonenumber-js/issues/252 + + (0, _findPhoneNumbers["default"])('The number is +7 (800) 555-35-35 and not (213) 373-4253 (that\'s not even in the same country!) as written in the document.', 'US', _metadataMin["default"]).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + startsAt: 14, + endsAt: 32 + }, { + phone: '2133734253', + country: 'US', + startsAt: 41, + endsAt: 55 + }]); // No default country. + + (0, _findPhoneNumbers["default"])('The number is +7 (800) 555-35-35 as written in the document.', _metadataMin["default"]).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + startsAt: 14, + endsAt: 32 + }]); // Passing `options` and default country. + + (0, _findPhoneNumbers["default"])('The number is +7 (800) 555-35-35 as written in the document.', 'US', { + leniency: 'VALID' + }, _metadataMin["default"]).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + startsAt: 14, + endsAt: 32 + }]); // Passing `options`. + + (0, _findPhoneNumbers["default"])('The number is +7 (800) 555-35-35 as written in the document.', { + leniency: 'VALID' + }, _metadataMin["default"]).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + startsAt: 14, + endsAt: 32 + }]); // Not a phone number and a phone number. + + (0, _findPhoneNumbers["default"])('Digits 12 are not a number, but +7 (800) 555-35-35 is.', { + leniency: 'VALID' + }, _metadataMin["default"]).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + startsAt: 32, + endsAt: 50 + }]); // Phone number extension. + + (0, _findPhoneNumbers["default"])('Date 02/17/2018 is not a number, but +7 (800) 555-35-35 ext. 123 is.', { + leniency: 'VALID' + }, _metadataMin["default"]).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + ext: '123', + startsAt: 37, + endsAt: 64 + }]); + }); + it('shouldn\'t find non-valid numbers', function () { + // Not a valid phone number for US. + (0, _findPhoneNumbers["default"])('1111111111', 'US', _metadataMin["default"]).should.deep.equal([]); + }); + it('should find non-European digits', function () { + // E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`. + (0, _findPhoneNumbers["default"])('العَرَبِيَّة‎ +٤٤٣٣٣٣٣٣٣٣٣٣عَرَبِيّ‎', _metadataMin["default"]).should.deep.equal([{ + country: 'GB', + phone: '3333333333', + startsAt: 14, + endsAt: 27 + }]); + }); + it('should iterate', function () { + var expected_numbers = [{ + country: 'RU', + phone: '8005553535', + // number : '+7 (800) 555-35-35', + startsAt: 14, + endsAt: 32 + }, { + country: 'US', + phone: '2133734253', + // number : '(213) 373-4253', + startsAt: 41, + endsAt: 55 + }]; + + for (var _iterator = _createForOfIteratorHelperLoose((0, _findPhoneNumbers.searchPhoneNumbers)('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', _metadataMin["default"])), _step; !(_step = _iterator()).done;) { + var number = _step.value; + number.should.deep.equal(expected_numbers.shift()); + } + + expected_numbers.length.should.equal(0); + }); + it('should work in edge cases', function () { + var thrower; // No input + + (0, _findPhoneNumbers["default"])('', _metadataMin["default"]).should.deep.equal([]); // No country metadata for this `require` country code + + thrower = function thrower() { + return (0, _findPhoneNumbers["default"])('123', 'ZZ', _metadataMin["default"]); + }; + + thrower.should["throw"]('Unknown country'); // Numerical `value` + + thrower = function thrower() { + return (0, _findPhoneNumbers["default"])(2141111111, 'US'); + }; + + thrower.should["throw"]('A text for parsing must be a string.'); // // No metadata + // thrower = () => findNumbers('') + // thrower.should.throw('`metadata` argument not passed') + }); + it('shouldn\'t find phone numbers which are not phone numbers', function () { + // A timestamp. + (0, _findPhoneNumbers["default"])('2012-01-02 08:00', 'US', _metadataMin["default"]).should.deep.equal([]); // A valid number (not a complete timestamp). + + (0, _findPhoneNumbers["default"])('2012-01-02 08', 'US', _metadataMin["default"]).should.deep.equal([{ + country: 'US', + phone: '2012010208', + startsAt: 0, + endsAt: 13 + }]); // Invalid parens. + + (0, _findPhoneNumbers["default"])('213(3734253', 'US', _metadataMin["default"]).should.deep.equal([]); // Letters after phone number. + + (0, _findPhoneNumbers["default"])('2133734253a', 'US', _metadataMin["default"]).should.deep.equal([]); // Valid phone (same as the one found in the UUID below). + + (0, _findPhoneNumbers["default"])('The phone number is 231354125.', 'FR', _metadataMin["default"]).should.deep.equal([{ + country: 'FR', + phone: '231354125', + startsAt: 20, + endsAt: 29 + }]); // Not a phone number (part of a UUID). + // Should parse in `{ extended: true }` mode. + + var possibleNumbers = (0, _findPhoneNumbers["default"])('The UUID is CA801c26f98cd16e231354125ad046e40b.', 'FR', { + extended: true + }, _metadataMin["default"]); + possibleNumbers.length.should.equal(3); + possibleNumbers[1].country.should.equal('FR'); + possibleNumbers[1].phone.should.equal('231354125'); // Not a phone number (part of a UUID). + // Shouldn't parse by default. + + (0, _findPhoneNumbers["default"])('The UUID is CA801c26f98cd16e231354125ad046e40b.', 'FR', _metadataMin["default"]).should.deep.equal([]); + }); +}); +describe('PhoneNumberSearch', function () { + it('should search for phone numbers', function () { + var finder = new _findPhoneNumbers_.PhoneNumberSearch('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', { + defaultCountry: 'US' + }, _metadataMin["default"]); + finder.hasNext().should.equal(true); + finder.next().should.deep.equal({ + country: 'RU', + phone: '8005553535', + // number : '+7 (800) 555-35-35', + startsAt: 14, + endsAt: 32 + }); + finder.hasNext().should.equal(true); + finder.next().should.deep.equal({ + country: 'US', + phone: '2133734253', + // number : '(213) 373-4253', + startsAt: 41, + endsAt: 55 + }); + finder.hasNext().should.equal(false); + }); + it('should search for phone numbers (no options)', function () { + var finder = new _findPhoneNumbers_.PhoneNumberSearch('The number is +7 (800) 555-35-35', undefined, _metadataMin["default"]); + finder.hasNext().should.equal(true); + finder.next().should.deep.equal({ + country: 'RU', + phone: '8005553535', + // number : '+7 (800) 555-35-35', + startsAt: 14, + endsAt: 32 + }); + finder.hasNext().should.equal(false); + }); + it('should work in edge cases', function () { + // No options + var search = new _findPhoneNumbers_.PhoneNumberSearch('', undefined, _metadataMin["default"]); // No next element + + var thrower = function thrower() { + return search.next(); + }; + + thrower.should["throw"]('No next element'); + }); +}); +//# sourceMappingURL=findPhoneNumbers.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbers.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbers.test.js.map new file mode 100644 index 00000000..5383a374 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbers.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"findPhoneNumbers.test.js","names":["describe","it","findNumbers","metadata","should","deep","equal","phone","country","startsAt","endsAt","leniency","ext","expected_numbers","searchPhoneNumbers","number","shift","length","thrower","possibleNumbers","extended","finder","PhoneNumberSearch","defaultCountry","hasNext","next","undefined","search"],"sources":["../source/findPhoneNumbers.test.js"],"sourcesContent":["// This is a legacy function.\r\n// Use `findNumbers()` instead.\r\n\r\nimport findNumbers, { searchPhoneNumbers } from './findPhoneNumbers.js'\r\nimport { PhoneNumberSearch } from './findPhoneNumbers_.js'\r\nimport metadata from '../metadata.min.json' assert { type: 'json' }\r\n\r\ndescribe('findPhoneNumbers', () => {\r\n\tit('should find numbers', () => {\r\n\t\tfindNumbers('2133734253', 'US', metadata).should.deep.equal([{\r\n\t\t\tphone : '2133734253',\r\n\t\t\tcountry : 'US',\r\n\t\t\tstartsAt : 0,\r\n\t\t\tendsAt : 10\r\n\t\t}])\r\n\r\n\t\tfindNumbers('(213) 373-4253', 'US', metadata).should.deep.equal([{\r\n\t\t\tphone : '2133734253',\r\n\t\t\tcountry : 'US',\r\n\t\t\tstartsAt : 0,\r\n\t\t\tendsAt : 14\r\n\t\t}])\r\n\r\n\t\tfindNumbers('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t}, {\r\n\t\t\tphone : '2133734253',\r\n\t\t\tcountry : 'US',\r\n\t\t\tstartsAt : 41,\r\n\t\t\tendsAt : 55\r\n\t\t}])\r\n\r\n\t\t// Opening parenthesis issue.\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/252\r\n\t\tfindNumbers('The number is +7 (800) 555-35-35 and not (213) 373-4253 (that\\'s not even in the same country!) as written in the document.', 'US', metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t}, {\r\n\t\t\tphone : '2133734253',\r\n\t\t\tcountry : 'US',\r\n\t\t\tstartsAt : 41,\r\n\t\t\tendsAt : 55\r\n\t\t}])\r\n\r\n\t\t// No default country.\r\n\t\tfindNumbers('The number is +7 (800) 555-35-35 as written in the document.', metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t}])\r\n\r\n\t\t// Passing `options` and default country.\r\n\t\tfindNumbers('The number is +7 (800) 555-35-35 as written in the document.', 'US', { leniency: 'VALID' }, metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t}])\r\n\r\n\t\t// Passing `options`.\r\n\t\tfindNumbers('The number is +7 (800) 555-35-35 as written in the document.', { leniency: 'VALID' }, metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t}])\r\n\r\n\t\t// Not a phone number and a phone number.\r\n\t\tfindNumbers('Digits 12 are not a number, but +7 (800) 555-35-35 is.', { leniency: 'VALID' }, metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\tstartsAt : 32,\r\n\t\t\tendsAt : 50\r\n\t\t}])\r\n\r\n\t\t// Phone number extension.\r\n\t\tfindNumbers('Date 02/17/2018 is not a number, but +7 (800) 555-35-35 ext. 123 is.', { leniency: 'VALID' }, metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\text : '123',\r\n\t\t\tstartsAt : 37,\r\n\t\t\tendsAt : 64\r\n\t\t}])\r\n\t})\r\n\r\n\tit('shouldn\\'t find non-valid numbers', () => {\r\n\t\t// Not a valid phone number for US.\r\n\t\tfindNumbers('1111111111', 'US', metadata).should.deep.equal([])\r\n\t})\r\n\r\n\tit('should find non-European digits', () => {\r\n\t\t// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n\t\tfindNumbers('العَرَبِيَّة‎ +٤٤٣٣٣٣٣٣٣٣٣٣عَرَبِيّ‎', metadata).should.deep.equal([{\r\n\t\t\tcountry : 'GB',\r\n\t\t\tphone : '3333333333',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 27\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should iterate', () => {\r\n\t\tconst expected_numbers = [{\r\n\t\t\tcountry : 'RU',\r\n\t\t\tphone : '8005553535',\r\n\t\t\t// number : '+7 (800) 555-35-35',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t}, {\r\n\t\t\tcountry : 'US',\r\n\t\t\tphone : '2133734253',\r\n\t\t\t// number : '(213) 373-4253',\r\n\t\t\tstartsAt : 41,\r\n\t\t\tendsAt : 55\r\n\t\t}]\r\n\r\n\t\tfor (const number of searchPhoneNumbers('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', metadata)) {\r\n\t\t\tnumber.should.deep.equal(expected_numbers.shift())\r\n\t\t}\r\n\r\n\t\texpected_numbers.length.should.equal(0)\r\n\t})\r\n\r\n\tit('should work in edge cases', () => {\r\n\t\tlet thrower\r\n\r\n\t\t// No input\r\n\t\tfindNumbers('', metadata).should.deep.equal([])\r\n\r\n\t\t// No country metadata for this `require` country code\r\n\t\tthrower = () => findNumbers('123', 'ZZ', metadata)\r\n\t\tthrower.should.throw('Unknown country')\r\n\r\n\t\t// Numerical `value`\r\n\t\tthrower = () => findNumbers(2141111111, 'US')\r\n\t\tthrower.should.throw('A text for parsing must be a string.')\r\n\r\n\t\t// // No metadata\r\n\t\t// thrower = () => findNumbers('')\r\n\t\t// thrower.should.throw('`metadata` argument not passed')\r\n\t})\r\n\r\n\tit('shouldn\\'t find phone numbers which are not phone numbers', () => {\r\n\t\t// A timestamp.\r\n\t\tfindNumbers('2012-01-02 08:00', 'US', metadata).should.deep.equal([])\r\n\r\n\t\t// A valid number (not a complete timestamp).\r\n\t\tfindNumbers('2012-01-02 08', 'US', metadata).should.deep.equal([{\r\n\t\t\tcountry : 'US',\r\n\t\t\tphone : '2012010208',\r\n\t\t\tstartsAt : 0,\r\n\t\t\tendsAt : 13\r\n\t\t}])\r\n\r\n\t\t// Invalid parens.\r\n\t\tfindNumbers('213(3734253', 'US', metadata).should.deep.equal([])\r\n\r\n\t\t// Letters after phone number.\r\n\t\tfindNumbers('2133734253a', 'US', metadata).should.deep.equal([])\r\n\r\n\t\t// Valid phone (same as the one found in the UUID below).\r\n\t\tfindNumbers('The phone number is 231354125.', 'FR', metadata).should.deep.equal([{\r\n\t\t\tcountry : 'FR',\r\n\t\t\tphone : '231354125',\r\n\t\t\tstartsAt : 20,\r\n\t\t\tendsAt : 29\r\n\t\t}])\r\n\r\n\t\t// Not a phone number (part of a UUID).\r\n\t\t// Should parse in `{ extended: true }` mode.\r\n\t\tconst possibleNumbers = findNumbers('The UUID is CA801c26f98cd16e231354125ad046e40b.', 'FR', { extended: true }, metadata)\r\n\t\tpossibleNumbers.length.should.equal(3)\r\n\t\tpossibleNumbers[1].country.should.equal('FR')\r\n\t\tpossibleNumbers[1].phone.should.equal('231354125')\r\n\r\n\t\t// Not a phone number (part of a UUID).\r\n\t\t// Shouldn't parse by default.\r\n\t\tfindNumbers('The UUID is CA801c26f98cd16e231354125ad046e40b.', 'FR', metadata).should.deep.equal([])\r\n\t})\r\n})\r\n\r\ndescribe('PhoneNumberSearch', () => {\r\n\tit('should search for phone numbers', () => {\r\n\t\tconst finder = new PhoneNumberSearch('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', { defaultCountry: 'US' }, metadata)\r\n\r\n\t\tfinder.hasNext().should.equal(true)\r\n\t\tfinder.next().should.deep.equal({\r\n\t\t\tcountry : 'RU',\r\n\t\t\tphone : '8005553535',\r\n\t\t\t// number : '+7 (800) 555-35-35',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t})\r\n\r\n\t\tfinder.hasNext().should.equal(true)\r\n\t\tfinder.next().should.deep.equal({\r\n\t\t\tcountry : 'US',\r\n\t\t\tphone : '2133734253',\r\n\t\t\t// number : '(213) 373-4253',\r\n\t\t\tstartsAt : 41,\r\n\t\t\tendsAt : 55\r\n\t\t})\r\n\r\n\t\tfinder.hasNext().should.equal(false)\r\n\t})\r\n\r\n\tit('should search for phone numbers (no options)', () => {\r\n\t\tconst finder = new PhoneNumberSearch('The number is +7 (800) 555-35-35', undefined, metadata)\r\n\t\tfinder.hasNext().should.equal(true)\r\n\t\tfinder.next().should.deep.equal({\r\n\t\t\tcountry : 'RU',\r\n\t\t\tphone : '8005553535',\r\n\t\t\t// number : '+7 (800) 555-35-35',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t})\r\n\t\tfinder.hasNext().should.equal(false)\r\n\t})\r\n\r\n\tit('should work in edge cases', () => {\r\n\t\t// No options\r\n\t\tconst search = new PhoneNumberSearch('', undefined, metadata)\r\n\r\n\t\t// No next element\r\n\t\tlet thrower = () => search.next()\r\n\t\tthrower.should.throw('No next element')\r\n\t})\r\n})"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbersInText.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbersInText.js new file mode 100644 index 00000000..3bc2ef47 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbersInText.js @@ -0,0 +1,69 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = findPhoneNumbersInText; +exports.getArguments = getArguments; + +var _findNumbers = _interopRequireDefault(require("./findNumbers.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function findPhoneNumbersInText(text, defaultCountry, options, metadata) { + var args = getArguments(defaultCountry, options, metadata); + return (0, _findNumbers["default"])(text, args.options, args.metadata); +} + +function getArguments(defaultCountry, options, metadata) { + if (metadata) { + if (defaultCountry) { + options = _objectSpread(_objectSpread({}, options), {}, { + defaultCountry: defaultCountry + }); + } + } else { + if (options) { + metadata = options; + + if (defaultCountry) { + if (is_object(defaultCountry)) { + options = defaultCountry; + } else { + options = { + defaultCountry: defaultCountry + }; + } + } else { + options = undefined; + } + } else { + metadata = defaultCountry; + options = undefined; + } + } + + return { + options: _objectSpread(_objectSpread({}, options), {}, { + v2: true + }), + metadata: metadata + }; +} // Babel transforms `typeof` into some "branches" +// so istanbul will show this as "branch not covered". + +/* istanbul ignore next */ + + +var is_object = function is_object(_) { + return _typeof(_) === 'object'; +}; +//# sourceMappingURL=findPhoneNumbersInText.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbersInText.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbersInText.js.map new file mode 100644 index 00000000..a6e1687d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbersInText.js.map @@ -0,0 +1 @@ +{"version":3,"file":"findPhoneNumbersInText.js","names":["findPhoneNumbersInText","text","defaultCountry","options","metadata","args","getArguments","findNumbers","is_object","undefined","v2","_"],"sources":["../source/findPhoneNumbersInText.js"],"sourcesContent":["import findNumbers from './findNumbers.js'\r\n\r\nexport default function findPhoneNumbersInText(text, defaultCountry, options, metadata) {\r\n\tconst args = getArguments(defaultCountry, options, metadata)\r\n\treturn findNumbers(text, args.options, args.metadata)\r\n}\r\n\r\nexport function getArguments(defaultCountry, options, metadata) {\r\n\tif (metadata) {\r\n\t\tif (defaultCountry) {\r\n\t\t\toptions = {\r\n\t\t\t\t...options,\r\n\t\t\t\tdefaultCountry\r\n\t\t\t}\r\n\t\t}\r\n\t} else {\r\n\t\tif (options) {\r\n\t\t\tmetadata = options\r\n\t\t\tif (defaultCountry) {\r\n\t\t\t\tif (is_object(defaultCountry)) {\r\n\t\t\t\t\toptions = defaultCountry\r\n\t\t\t\t} else {\r\n\t\t\t\t\toptions = { defaultCountry }\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\toptions = undefined\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tmetadata = defaultCountry\r\n\t\t\toptions = undefined\r\n\t\t}\r\n\t}\r\n\treturn {\r\n\t\toptions: {\r\n\t\t\t...options,\r\n\t\t\tv2: true\r\n\t\t},\r\n\t\tmetadata\r\n\t}\r\n}\r\n\r\n// Babel transforms `typeof` into some \"branches\"\r\n// so istanbul will show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst is_object = _ => typeof _ === 'object'"],"mappings":";;;;;;;;AAAA;;;;;;;;;;;;AAEe,SAASA,sBAAT,CAAgCC,IAAhC,EAAsCC,cAAtC,EAAsDC,OAAtD,EAA+DC,QAA/D,EAAyE;EACvF,IAAMC,IAAI,GAAGC,YAAY,CAACJ,cAAD,EAAiBC,OAAjB,EAA0BC,QAA1B,CAAzB;EACA,OAAO,IAAAG,uBAAA,EAAYN,IAAZ,EAAkBI,IAAI,CAACF,OAAvB,EAAgCE,IAAI,CAACD,QAArC,CAAP;AACA;;AAEM,SAASE,YAAT,CAAsBJ,cAAtB,EAAsCC,OAAtC,EAA+CC,QAA/C,EAAyD;EAC/D,IAAIA,QAAJ,EAAc;IACb,IAAIF,cAAJ,EAAoB;MACnBC,OAAO,mCACHA,OADG;QAEND,cAAc,EAAdA;MAFM,EAAP;IAIA;EACD,CAPD,MAOO;IACN,IAAIC,OAAJ,EAAa;MACZC,QAAQ,GAAGD,OAAX;;MACA,IAAID,cAAJ,EAAoB;QACnB,IAAIM,SAAS,CAACN,cAAD,CAAb,EAA+B;UAC9BC,OAAO,GAAGD,cAAV;QACA,CAFD,MAEO;UACNC,OAAO,GAAG;YAAED,cAAc,EAAdA;UAAF,CAAV;QACA;MACD,CAND,MAMO;QACNC,OAAO,GAAGM,SAAV;MACA;IACD,CAXD,MAWO;MACNL,QAAQ,GAAGF,cAAX;MACAC,OAAO,GAAGM,SAAV;IACA;EACD;;EACD,OAAO;IACNN,OAAO,kCACHA,OADG;MAENO,EAAE,EAAE;IAFE,EADD;IAKNN,QAAQ,EAARA;EALM,CAAP;AAOA,C,CAED;AACA;;AACA;;;AACA,IAAMI,SAAS,GAAG,SAAZA,SAAY,CAAAG,CAAC;EAAA,OAAI,QAAOA,CAAP,MAAa,QAAjB;AAAA,CAAnB"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbersInText.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbersInText.test.js new file mode 100644 index 00000000..f10adba5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbersInText.test.js @@ -0,0 +1,53 @@ +"use strict"; + +var _findPhoneNumbersInText = _interopRequireDefault(require("./findPhoneNumbersInText.js")); + +var _metadataMin = _interopRequireDefault(require("../metadata.min.json")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +describe('findPhoneNumbersInText', function () { + it('should find phone numbers in text (with default country)', function () { + (0, _findPhoneNumbersInText["default"])('+7 (800) 555-35-35', 'US', _metadataMin["default"])[0].number.number.should.equal('+78005553535'); + }); + it('should find phone numbers in text (with default country in options)', function () { + (0, _findPhoneNumbersInText["default"])('+7 (800) 555-35-35', { + defaultCountry: 'US' + }, _metadataMin["default"])[0].number.number.should.equal('+78005553535'); + }); + it('should find phone numbers in text (with default country and options)', function () { + (0, _findPhoneNumbersInText["default"])('+7 (800) 555-35-35', 'US', {}, _metadataMin["default"])[0].number.number.should.equal('+78005553535'); + }); + it('should find phone numbers in text (without default country, with options)', function () { + (0, _findPhoneNumbersInText["default"])('+7 (800) 555-35-35', undefined, {}, _metadataMin["default"])[0].number.number.should.equal('+78005553535'); + }); + it('should find phone numbers in text (with default country, without options)', function () { + (0, _findPhoneNumbersInText["default"])('+7 (800) 555-35-35', 'US', undefined, _metadataMin["default"])[0].number.number.should.equal('+78005553535'); + }); + it('should find phone numbers in text (with empty default country)', function () { + (0, _findPhoneNumbersInText["default"])('+7 (800) 555-35-35', undefined, _metadataMin["default"])[0].number.number.should.equal('+78005553535'); + }); + it('should find phone numbers in text', function () { + var NUMBERS = ['+78005553535', '+12133734253']; + var results = (0, _findPhoneNumbersInText["default"])('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', _metadataMin["default"]); + var i = 0; + + while (i < results.length) { + results[i].number.number.should.equal(NUMBERS[i]); + i++; + } + }); + it('should find phone numbers in text (default country calling code)', function () { + var NUMBERS = ['+870773111632']; + var results = (0, _findPhoneNumbersInText["default"])('The number is 773 111 632', { + defaultCallingCode: '870' + }, _metadataMin["default"]); + var i = 0; + + while (i < results.length) { + results[i].number.number.should.equal(NUMBERS[i]); + i++; + } + }); +}); +//# sourceMappingURL=findPhoneNumbersInText.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbersInText.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbersInText.test.js.map new file mode 100644 index 00000000..7dfd704b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbersInText.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"findPhoneNumbersInText.test.js","names":["describe","it","findPhoneNumbersInText","metadata","number","should","equal","defaultCountry","undefined","NUMBERS","results","i","length","defaultCallingCode"],"sources":["../source/findPhoneNumbersInText.test.js"],"sourcesContent":["import findPhoneNumbersInText from './findPhoneNumbersInText.js'\r\nimport metadata from '../metadata.min.json' assert { type: 'json' }\r\n\r\ndescribe('findPhoneNumbersInText', () => {\r\n\tit('should find phone numbers in text (with default country)', () => {\r\n\t\tfindPhoneNumbersInText('+7 (800) 555-35-35', 'US', metadata)[0].number.number.should.equal('+78005553535')\r\n\t})\r\n\r\n\tit('should find phone numbers in text (with default country in options)', () => {\r\n\t\tfindPhoneNumbersInText('+7 (800) 555-35-35', { defaultCountry: 'US' }, metadata)[0].number.number.should.equal('+78005553535')\r\n\t})\r\n\r\n\tit('should find phone numbers in text (with default country and options)', () => {\r\n\t\tfindPhoneNumbersInText('+7 (800) 555-35-35', 'US', {}, metadata)[0].number.number.should.equal('+78005553535')\r\n\t})\r\n\r\n\tit('should find phone numbers in text (without default country, with options)', () => {\r\n\t\tfindPhoneNumbersInText('+7 (800) 555-35-35', undefined, {}, metadata)[0].number.number.should.equal('+78005553535')\r\n\t})\r\n\r\n\tit('should find phone numbers in text (with default country, without options)', () => {\r\n\t\tfindPhoneNumbersInText('+7 (800) 555-35-35', 'US', undefined, metadata)[0].number.number.should.equal('+78005553535')\r\n\t})\r\n\r\n\tit('should find phone numbers in text (with empty default country)', () => {\r\n\t\tfindPhoneNumbersInText('+7 (800) 555-35-35', undefined, metadata)[0].number.number.should.equal('+78005553535')\r\n\t})\r\n\r\n\tit('should find phone numbers in text', () => {\r\n\t\tconst NUMBERS = ['+78005553535', '+12133734253']\r\n\t\tconst results = findPhoneNumbersInText('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', metadata)\r\n\t\tlet i = 0\r\n\t\twhile (i < results.length) {\r\n\t\t\tresults[i].number.number.should.equal(NUMBERS[i])\r\n\t\t\ti++\r\n\t\t}\r\n\t})\r\n\r\n\tit('should find phone numbers in text (default country calling code)', () => {\r\n\t\tconst NUMBERS = ['+870773111632']\r\n\t\tconst results = findPhoneNumbersInText('The number is 773 111 632', { defaultCallingCode: '870' }, metadata)\r\n\t\tlet i = 0\r\n\t\twhile (i < results.length) {\r\n\t\t\tresults[i].number.number.should.equal(NUMBERS[i])\r\n\t\t\ti++\r\n\t\t}\r\n\t})\r\n})"],"mappings":";;AAAA;;AACA;;;;AAEAA,QAAQ,CAAC,wBAAD,EAA2B,YAAM;EACxCC,EAAE,CAAC,0DAAD,EAA6D,YAAM;IACpE,IAAAC,kCAAA,EAAuB,oBAAvB,EAA6C,IAA7C,EAAmDC,uBAAnD,EAA6D,CAA7D,EAAgEC,MAAhE,CAAuEA,MAAvE,CAA8EC,MAA9E,CAAqFC,KAArF,CAA2F,cAA3F;EACA,CAFC,CAAF;EAIAL,EAAE,CAAC,qEAAD,EAAwE,YAAM;IAC/E,IAAAC,kCAAA,EAAuB,oBAAvB,EAA6C;MAAEK,cAAc,EAAE;IAAlB,CAA7C,EAAuEJ,uBAAvE,EAAiF,CAAjF,EAAoFC,MAApF,CAA2FA,MAA3F,CAAkGC,MAAlG,CAAyGC,KAAzG,CAA+G,cAA/G;EACA,CAFC,CAAF;EAIAL,EAAE,CAAC,sEAAD,EAAyE,YAAM;IAChF,IAAAC,kCAAA,EAAuB,oBAAvB,EAA6C,IAA7C,EAAmD,EAAnD,EAAuDC,uBAAvD,EAAiE,CAAjE,EAAoEC,MAApE,CAA2EA,MAA3E,CAAkFC,MAAlF,CAAyFC,KAAzF,CAA+F,cAA/F;EACA,CAFC,CAAF;EAIAL,EAAE,CAAC,2EAAD,EAA8E,YAAM;IACrF,IAAAC,kCAAA,EAAuB,oBAAvB,EAA6CM,SAA7C,EAAwD,EAAxD,EAA4DL,uBAA5D,EAAsE,CAAtE,EAAyEC,MAAzE,CAAgFA,MAAhF,CAAuFC,MAAvF,CAA8FC,KAA9F,CAAoG,cAApG;EACA,CAFC,CAAF;EAIAL,EAAE,CAAC,2EAAD,EAA8E,YAAM;IACrF,IAAAC,kCAAA,EAAuB,oBAAvB,EAA6C,IAA7C,EAAmDM,SAAnD,EAA8DL,uBAA9D,EAAwE,CAAxE,EAA2EC,MAA3E,CAAkFA,MAAlF,CAAyFC,MAAzF,CAAgGC,KAAhG,CAAsG,cAAtG;EACA,CAFC,CAAF;EAIAL,EAAE,CAAC,gEAAD,EAAmE,YAAM;IAC1E,IAAAC,kCAAA,EAAuB,oBAAvB,EAA6CM,SAA7C,EAAwDL,uBAAxD,EAAkE,CAAlE,EAAqEC,MAArE,CAA4EA,MAA5E,CAAmFC,MAAnF,CAA0FC,KAA1F,CAAgG,cAAhG;EACA,CAFC,CAAF;EAIAL,EAAE,CAAC,mCAAD,EAAsC,YAAM;IAC7C,IAAMQ,OAAO,GAAG,CAAC,cAAD,EAAiB,cAAjB,CAAhB;IACA,IAAMC,OAAO,GAAG,IAAAR,kCAAA,EAAuB,qFAAvB,EAA8GC,uBAA9G,CAAhB;IACA,IAAIQ,CAAC,GAAG,CAAR;;IACA,OAAOA,CAAC,GAAGD,OAAO,CAACE,MAAnB,EAA2B;MAC1BF,OAAO,CAACC,CAAD,CAAP,CAAWP,MAAX,CAAkBA,MAAlB,CAAyBC,MAAzB,CAAgCC,KAAhC,CAAsCG,OAAO,CAACE,CAAD,CAA7C;MACAA,CAAC;IACD;EACD,CARC,CAAF;EAUAV,EAAE,CAAC,kEAAD,EAAqE,YAAM;IAC5E,IAAMQ,OAAO,GAAG,CAAC,eAAD,CAAhB;IACA,IAAMC,OAAO,GAAG,IAAAR,kCAAA,EAAuB,2BAAvB,EAAoD;MAAEW,kBAAkB,EAAE;IAAtB,CAApD,EAAmFV,uBAAnF,CAAhB;IACA,IAAIQ,CAAC,GAAG,CAAR;;IACA,OAAOA,CAAC,GAAGD,OAAO,CAACE,MAAnB,EAA2B;MAC1BF,OAAO,CAACC,CAAD,CAAP,CAAWP,MAAX,CAAkBA,MAAlB,CAAyBC,MAAzB,CAAgCC,KAAhC,CAAsCG,OAAO,CAACE,CAAD,CAA7C;MACAA,CAAC;IACD;EACD,CARC,CAAF;AASA,CA5CO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbers_.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbers_.js new file mode 100644 index 00000000..b56b5a21 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbers_.js @@ -0,0 +1,222 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PhoneNumberSearch = exports.EXTN_PATTERNS_FOR_PARSING = void 0; +exports["default"] = findPhoneNumbers; +exports.searchPhoneNumbers = searchPhoneNumbers; + +var _constants = require("./constants.js"); + +var _parse_ = _interopRequireDefault(require("./parse_.js")); + +var _isViablePhoneNumber = require("./helpers/isViablePhoneNumber.js"); + +var _createExtensionPattern = _interopRequireDefault(require("./helpers/extension/createExtensionPattern.js")); + +var _parsePreCandidate = _interopRequireDefault(require("./findNumbers/parsePreCandidate.js")); + +var _isValidPreCandidate = _interopRequireDefault(require("./findNumbers/isValidPreCandidate.js")); + +var _isValidCandidate = _interopRequireDefault(require("./findNumbers/isValidCandidate.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +/** + * Regexp of all possible ways to write extensions, for use when parsing. This + * will be run as a case-insensitive regexp match. Wide character versions are + * also provided after each ASCII version. There are three regular expressions + * here. The first covers RFC 3966 format, where the extension is added using + * ';ext='. The second more generic one starts with optional white space and + * ends with an optional full stop (.), followed by zero or more spaces/tabs + * /commas and then the numbers themselves. The other one covers the special + * case of American numbers where the extension is written with a hash at the + * end, such as '- 503#'. Note that the only capturing groups should be around + * the digits that you want to capture as part of the extension, or else parsing + * will fail! We allow two options for representing the accented o - the + * character itself, and one in the unicode decomposed form with the combining + * acute accent. + */ +var EXTN_PATTERNS_FOR_PARSING = (0, _createExtensionPattern["default"])('parsing'); +exports.EXTN_PATTERNS_FOR_PARSING = EXTN_PATTERNS_FOR_PARSING; +var WHITESPACE_IN_THE_BEGINNING_PATTERN = new RegExp('^[' + _constants.WHITESPACE + ']+'); +var PUNCTUATION_IN_THE_END_PATTERN = new RegExp('[' + _constants.VALID_PUNCTUATION + ']+$'); // // Regular expression for getting opening brackets for a valid number +// // found using `PHONE_NUMBER_START_PATTERN` for prepending those brackets to the number. +// const BEFORE_NUMBER_DIGITS_PUNCTUATION = new RegExp('[' + OPENING_BRACKETS + ']+' + '[' + WHITESPACE + ']*' + '$') + +var VALID_PRECEDING_CHARACTER_PATTERN = /[^a-zA-Z0-9]/; + +function findPhoneNumbers(text, options, metadata) { + /* istanbul ignore if */ + if (options === undefined) { + options = {}; + } + + var search = new PhoneNumberSearch(text, options, metadata); + var phones = []; + + while (search.hasNext()) { + phones.push(search.next()); + } + + return phones; +} +/** + * @return ES6 `for ... of` iterator. + */ + + +function searchPhoneNumbers(text, options, metadata) { + /* istanbul ignore if */ + if (options === undefined) { + options = {}; + } + + var search = new PhoneNumberSearch(text, options, metadata); + return _defineProperty({}, Symbol.iterator, function () { + return { + next: function next() { + if (search.hasNext()) { + return { + done: false, + value: search.next() + }; + } + + return { + done: true + }; + } + }; + }); +} +/** + * Extracts a parseable phone number including any opening brackets, etc. + * @param {string} text - Input. + * @return {object} `{ ?number, ?startsAt, ?endsAt }`. + */ + + +var PhoneNumberSearch = /*#__PURE__*/function () { + function PhoneNumberSearch(text, options, metadata) { + _classCallCheck(this, PhoneNumberSearch); + + this.text = text; // If assigning the `{}` default value is moved to the arguments above, + // code coverage would decrease for some weird reason. + + this.options = options || {}; + this.metadata = metadata; // Iteration tristate. + + this.state = 'NOT_READY'; + this.regexp = new RegExp(_isViablePhoneNumber.VALID_PHONE_NUMBER_WITH_EXTENSION, 'ig'); + } + + _createClass(PhoneNumberSearch, [{ + key: "find", + value: function find() { + var matches = this.regexp.exec(this.text); + + if (!matches) { + return; + } + + var number = matches[0]; + var startsAt = matches.index; + number = number.replace(WHITESPACE_IN_THE_BEGINNING_PATTERN, ''); + startsAt += matches[0].length - number.length; // Fixes not parsing numbers with whitespace in the end. + // Also fixes not parsing numbers with opening parentheses in the end. + // https://github.com/catamphetamine/libphonenumber-js/issues/252 + + number = number.replace(PUNCTUATION_IN_THE_END_PATTERN, ''); + number = (0, _parsePreCandidate["default"])(number); + var result = this.parseCandidate(number, startsAt); + + if (result) { + return result; + } // Tail recursion. + // Try the next one if this one is not a valid phone number. + + + return this.find(); + } + }, { + key: "parseCandidate", + value: function parseCandidate(number, startsAt) { + if (!(0, _isValidPreCandidate["default"])(number, startsAt, this.text)) { + return; + } // Don't parse phone numbers which are non-phone numbers + // due to being part of something else (e.g. a UUID). + // https://github.com/catamphetamine/libphonenumber-js/issues/213 + // Copy-pasted from Google's `PhoneNumberMatcher.js` (`.parseAndValidate()`). + + + if (!(0, _isValidCandidate["default"])(number, startsAt, this.text, this.options.extended ? 'POSSIBLE' : 'VALID')) { + return; + } // // Prepend any opening brackets left behind by the + // // `PHONE_NUMBER_START_PATTERN` regexp. + // const text_before_number = text.slice(this.searching_from, startsAt) + // const full_number_starts_at = text_before_number.search(BEFORE_NUMBER_DIGITS_PUNCTUATION) + // if (full_number_starts_at >= 0) + // { + // number = text_before_number.slice(full_number_starts_at) + number + // startsAt = full_number_starts_at + // } + // + // this.searching_from = matches.lastIndex + + + var result = (0, _parse_["default"])(number, this.options, this.metadata); + + if (!result.phone) { + return; + } + + result.startsAt = startsAt; + result.endsAt = startsAt + number.length; + return result; + } + }, { + key: "hasNext", + value: function hasNext() { + if (this.state === 'NOT_READY') { + this.last_match = this.find(); + + if (this.last_match) { + this.state = 'READY'; + } else { + this.state = 'DONE'; + } + } + + return this.state === 'READY'; + } + }, { + key: "next", + value: function next() { + // Check the state and find the next match as a side-effect if necessary. + if (!this.hasNext()) { + throw new Error('No next element'); + } // Don't retain that memory any longer than necessary. + + + var result = this.last_match; + this.last_match = null; + this.state = 'NOT_READY'; + return result; + } + }]); + + return PhoneNumberSearch; +}(); + +exports.PhoneNumberSearch = PhoneNumberSearch; +//# sourceMappingURL=findPhoneNumbers_.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbers_.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbers_.js.map new file mode 100644 index 00000000..af3f9036 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/findPhoneNumbers_.js.map @@ -0,0 +1 @@ +{"version":3,"file":"findPhoneNumbers_.js","names":["EXTN_PATTERNS_FOR_PARSING","createExtensionPattern","WHITESPACE_IN_THE_BEGINNING_PATTERN","RegExp","WHITESPACE","PUNCTUATION_IN_THE_END_PATTERN","VALID_PUNCTUATION","VALID_PRECEDING_CHARACTER_PATTERN","findPhoneNumbers","text","options","metadata","undefined","search","PhoneNumberSearch","phones","hasNext","push","next","searchPhoneNumbers","Symbol","iterator","done","value","state","regexp","VALID_PHONE_NUMBER_WITH_EXTENSION","matches","exec","number","startsAt","index","replace","length","parsePreCandidate","result","parseCandidate","find","isValidPreCandidate","isValidCandidate","extended","parse","phone","endsAt","last_match","Error"],"sources":["../source/findPhoneNumbers_.js"],"sourcesContent":["// This is a legacy function.\r\n// Use `findNumbers()` instead.\r\n\r\nimport {\r\n\tPLUS_CHARS,\r\n\tVALID_PUNCTUATION,\r\n\tVALID_DIGITS,\r\n\tWHITESPACE\r\n} from './constants.js'\r\n\r\nimport parse from './parse_.js'\r\nimport { VALID_PHONE_NUMBER_WITH_EXTENSION } from './helpers/isViablePhoneNumber.js'\r\nimport createExtensionPattern from './helpers/extension/createExtensionPattern.js'\r\n\r\nimport parsePreCandidate from './findNumbers/parsePreCandidate.js'\r\nimport isValidPreCandidate from './findNumbers/isValidPreCandidate.js'\r\nimport isValidCandidate from './findNumbers/isValidCandidate.js'\r\n\r\n/**\r\n * Regexp of all possible ways to write extensions, for use when parsing. This\r\n * will be run as a case-insensitive regexp match. Wide character versions are\r\n * also provided after each ASCII version. There are three regular expressions\r\n * here. The first covers RFC 3966 format, where the extension is added using\r\n * ';ext='. The second more generic one starts with optional white space and\r\n * ends with an optional full stop (.), followed by zero or more spaces/tabs\r\n * /commas and then the numbers themselves. The other one covers the special\r\n * case of American numbers where the extension is written with a hash at the\r\n * end, such as '- 503#'. Note that the only capturing groups should be around\r\n * the digits that you want to capture as part of the extension, or else parsing\r\n * will fail! We allow two options for representing the accented o - the\r\n * character itself, and one in the unicode decomposed form with the combining\r\n * acute accent.\r\n */\r\nexport const EXTN_PATTERNS_FOR_PARSING = createExtensionPattern('parsing')\r\n\r\nconst WHITESPACE_IN_THE_BEGINNING_PATTERN = new RegExp('^[' + WHITESPACE + ']+')\r\nconst PUNCTUATION_IN_THE_END_PATTERN = new RegExp('[' + VALID_PUNCTUATION + ']+$')\r\n\r\n// // Regular expression for getting opening brackets for a valid number\r\n// // found using `PHONE_NUMBER_START_PATTERN` for prepending those brackets to the number.\r\n// const BEFORE_NUMBER_DIGITS_PUNCTUATION = new RegExp('[' + OPENING_BRACKETS + ']+' + '[' + WHITESPACE + ']*' + '$')\r\n\r\nconst VALID_PRECEDING_CHARACTER_PATTERN = /[^a-zA-Z0-9]/\r\n\r\nexport default function findPhoneNumbers(text, options, metadata) {\r\n\t/* istanbul ignore if */\r\n\tif (options === undefined) {\r\n\t\toptions = {}\r\n\t}\r\n\tconst search = new PhoneNumberSearch(text, options, metadata)\r\n\tconst phones = []\r\n\twhile (search.hasNext()) {\r\n\t\tphones.push(search.next())\r\n\t}\r\n\treturn phones\r\n}\r\n\r\n/**\r\n * @return ES6 `for ... of` iterator.\r\n */\r\nexport function searchPhoneNumbers(text, options, metadata) {\r\n\t/* istanbul ignore if */\r\n\tif (options === undefined) {\r\n\t\toptions = {}\r\n\t}\r\n\tconst search = new PhoneNumberSearch(text, options, metadata)\r\n\treturn {\r\n\t\t[Symbol.iterator]() {\r\n\t\t\treturn {\r\n\t \t\tnext: () => {\r\n\t \t\t\tif (search.hasNext()) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tdone: false,\r\n\t\t\t\t\t\t\tvalue: search.next()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tdone: true\r\n\t\t\t\t\t}\r\n\t \t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Extracts a parseable phone number including any opening brackets, etc.\r\n * @param {string} text - Input.\r\n * @return {object} `{ ?number, ?startsAt, ?endsAt }`.\r\n */\r\nexport class PhoneNumberSearch {\r\n\tconstructor(text, options, metadata) {\r\n\t\tthis.text = text\r\n\t\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t\t// code coverage would decrease for some weird reason.\r\n\t\tthis.options = options || {}\r\n\t\tthis.metadata = metadata\r\n\r\n\t\t// Iteration tristate.\r\n\t\tthis.state = 'NOT_READY'\r\n\r\n\t\tthis.regexp = new RegExp(VALID_PHONE_NUMBER_WITH_EXTENSION, 'ig')\r\n\t}\r\n\r\n\tfind() {\r\n\t\tconst matches = this.regexp.exec(this.text)\r\n\t\tif (!matches) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tlet number = matches[0]\r\n\t\tlet startsAt = matches.index\r\n\r\n\t\tnumber = number.replace(WHITESPACE_IN_THE_BEGINNING_PATTERN, '')\r\n\t\tstartsAt += matches[0].length - number.length\r\n\t\t// Fixes not parsing numbers with whitespace in the end.\r\n\t\t// Also fixes not parsing numbers with opening parentheses in the end.\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/252\r\n\t\tnumber = number.replace(PUNCTUATION_IN_THE_END_PATTERN, '')\r\n\r\n\t\tnumber = parsePreCandidate(number)\r\n\r\n\t\tconst result = this.parseCandidate(number, startsAt)\r\n\t\tif (result) {\r\n\t\t\treturn result\r\n\t\t}\r\n\r\n\t\t// Tail recursion.\r\n\t\t// Try the next one if this one is not a valid phone number.\r\n\t\treturn this.find()\r\n\t}\r\n\r\n\tparseCandidate(number, startsAt) {\r\n\t\tif (!isValidPreCandidate(number, startsAt, this.text)) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// Don't parse phone numbers which are non-phone numbers\r\n\t\t// due to being part of something else (e.g. a UUID).\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/213\r\n\t\t// Copy-pasted from Google's `PhoneNumberMatcher.js` (`.parseAndValidate()`).\r\n\t\tif (!isValidCandidate(number, startsAt, this.text, this.options.extended ? 'POSSIBLE' : 'VALID')) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// // Prepend any opening brackets left behind by the\r\n\t\t// // `PHONE_NUMBER_START_PATTERN` regexp.\r\n\t\t// const text_before_number = text.slice(this.searching_from, startsAt)\r\n\t\t// const full_number_starts_at = text_before_number.search(BEFORE_NUMBER_DIGITS_PUNCTUATION)\r\n\t\t// if (full_number_starts_at >= 0)\r\n\t\t// {\r\n\t\t// \tnumber = text_before_number.slice(full_number_starts_at) + number\r\n\t\t// \tstartsAt = full_number_starts_at\r\n\t\t// }\r\n\t\t//\r\n\t\t// this.searching_from = matches.lastIndex\r\n\r\n\t\tconst result = parse(number, this.options, this.metadata)\r\n\t\tif (!result.phone) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tresult.startsAt = startsAt\r\n\t\tresult.endsAt = startsAt + number.length\r\n\t\treturn result\r\n\t}\r\n\r\n\thasNext() {\r\n\t\tif (this.state === 'NOT_READY') {\r\n\t\t\tthis.last_match = this.find()\r\n\t\t\tif (this.last_match) {\r\n\t\t\t\tthis.state = 'READY'\r\n\t\t\t} else {\r\n\t\t\t\tthis.state = 'DONE'\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.state === 'READY'\r\n\t}\r\n\r\n\tnext() {\r\n\t\t// Check the state and find the next match as a side-effect if necessary.\r\n\t\tif (!this.hasNext()) {\r\n\t\t\tthrow new Error('No next element')\r\n\t\t}\r\n\t\t// Don't retain that memory any longer than necessary.\r\n\t\tconst result = this.last_match\r\n\t\tthis.last_match = null\r\n\t\tthis.state = 'NOT_READY'\r\n\t\treturn result\r\n\t}\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/format.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/format.js new file mode 100644 index 00000000..e49628ee --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/format.js @@ -0,0 +1,128 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = formatNumber; + +var _format_ = _interopRequireDefault(require("./format_.js")); + +var _parse_ = _interopRequireDefault(require("./parse_.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function formatNumber() { + var _normalizeArguments = normalizeArguments(arguments), + input = _normalizeArguments.input, + format = _normalizeArguments.format, + options = _normalizeArguments.options, + metadata = _normalizeArguments.metadata; + + return (0, _format_["default"])(input, format, options, metadata); +} // Sort out arguments + + +function normalizeArguments(args) { + var _Array$prototype$slic = Array.prototype.slice.call(args), + _Array$prototype$slic2 = _slicedToArray(_Array$prototype$slic, 5), + arg_1 = _Array$prototype$slic2[0], + arg_2 = _Array$prototype$slic2[1], + arg_3 = _Array$prototype$slic2[2], + arg_4 = _Array$prototype$slic2[3], + arg_5 = _Array$prototype$slic2[4]; + + var input; + var format; + var options; + var metadata; // Sort out arguments. + // If the phone number is passed as a string. + // `format('8005553535', ...)`. + + if (typeof arg_1 === 'string') { + // If country code is supplied. + // `format('8005553535', 'RU', 'NATIONAL', [options], metadata)`. + if (typeof arg_3 === 'string') { + format = arg_3; + + if (arg_5) { + options = arg_4; + metadata = arg_5; + } else { + metadata = arg_4; + } + + input = (0, _parse_["default"])(arg_1, { + defaultCountry: arg_2, + extended: true + }, metadata); + } // Just an international phone number is supplied + // `format('+78005553535', 'NATIONAL', [options], metadata)`. + else { + if (typeof arg_2 !== 'string') { + throw new Error('`format` argument not passed to `formatNumber(number, format)`'); + } + + format = arg_2; + + if (arg_4) { + options = arg_3; + metadata = arg_4; + } else { + metadata = arg_3; + } + + input = (0, _parse_["default"])(arg_1, { + extended: true + }, metadata); + } + } // If the phone number is passed as a parsed number object. + // `format({ phone: '8005553535', country: 'RU' }, 'NATIONAL', [options], metadata)`. + else if (is_object(arg_1)) { + input = arg_1; + format = arg_2; + + if (arg_4) { + options = arg_3; + metadata = arg_4; + } else { + metadata = arg_3; + } + } else throw new TypeError('A phone number must either be a string or an object of shape { phone, [country] }.'); // Legacy lowercase formats. + + + if (format === 'International') { + format = 'INTERNATIONAL'; + } else if (format === 'National') { + format = 'NATIONAL'; + } + + return { + input: input, + format: format, + options: options, + metadata: metadata + }; +} // Babel transforms `typeof` into some "branches" +// so istanbul will show this as "branch not covered". + +/* istanbul ignore next */ + + +var is_object = function is_object(_) { + return _typeof(_) === 'object'; +}; +//# sourceMappingURL=format.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/format.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/format.js.map new file mode 100644 index 00000000..177e5705 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/format.js.map @@ -0,0 +1 @@ +{"version":3,"file":"format.js","names":["formatNumber","normalizeArguments","arguments","input","format","options","metadata","_formatNumber","args","Array","prototype","slice","call","arg_1","arg_2","arg_3","arg_4","arg_5","parse","defaultCountry","extended","Error","is_object","TypeError","_"],"sources":["../source/format.js"],"sourcesContent":["import _formatNumber from './format_.js'\r\nimport parse from './parse_.js'\r\n\r\nexport default function formatNumber()\r\n{\r\n\tconst\r\n\t{\r\n\t\tinput,\r\n\t\tformat,\r\n\t\toptions,\r\n\t\tmetadata\r\n\t}\r\n\t= normalizeArguments(arguments)\r\n\r\n\treturn _formatNumber(input, format, options, metadata)\r\n}\r\n\r\n// Sort out arguments\r\nfunction normalizeArguments(args)\r\n{\r\n\tconst [arg_1, arg_2, arg_3, arg_4, arg_5] = Array.prototype.slice.call(args)\r\n\r\n\tlet input\r\n\tlet format\r\n\tlet options\r\n\tlet metadata\r\n\r\n\t// Sort out arguments.\r\n\r\n\t// If the phone number is passed as a string.\r\n\t// `format('8005553535', ...)`.\r\n\tif (typeof arg_1 === 'string')\r\n\t{\r\n\t\t// If country code is supplied.\r\n\t\t// `format('8005553535', 'RU', 'NATIONAL', [options], metadata)`.\r\n\t\tif (typeof arg_3 === 'string')\r\n\t\t{\r\n\t\t\tformat = arg_3\r\n\r\n\t\t\tif (arg_5)\r\n\t\t\t{\r\n\t\t\t\toptions = arg_4\r\n\t\t\t\tmetadata = arg_5\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tmetadata = arg_4\r\n\t\t\t}\r\n\r\n\t\t\tinput = parse(arg_1, { defaultCountry: arg_2, extended: true }, metadata)\r\n\t\t}\r\n\t\t// Just an international phone number is supplied\r\n\t\t// `format('+78005553535', 'NATIONAL', [options], metadata)`.\r\n\t\telse\r\n\t\t{\r\n\t\t\tif (typeof arg_2 !== 'string')\r\n\t\t\t{\r\n\t\t\t\tthrow new Error('`format` argument not passed to `formatNumber(number, format)`')\r\n\t\t\t}\r\n\r\n\t\t\tformat = arg_2\r\n\r\n\t\t\tif (arg_4)\r\n\t\t\t{\r\n\t\t\t\toptions = arg_3\r\n\t\t\t\tmetadata = arg_4\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tmetadata = arg_3\r\n\t\t\t}\r\n\r\n\t\t\tinput = parse(arg_1, { extended: true }, metadata)\r\n\t\t}\r\n\t}\r\n\t// If the phone number is passed as a parsed number object.\r\n\t// `format({ phone: '8005553535', country: 'RU' }, 'NATIONAL', [options], metadata)`.\r\n\telse if (is_object(arg_1))\r\n\t{\r\n\t\tinput = arg_1\r\n\t\tformat = arg_2\r\n\r\n\t\tif (arg_4)\r\n\t\t{\r\n\t\t\toptions = arg_3\r\n\t\t\tmetadata = arg_4\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tmetadata = arg_3\r\n\t\t}\r\n\t}\r\n\telse throw new TypeError('A phone number must either be a string or an object of shape { phone, [country] }.')\r\n\r\n\t// Legacy lowercase formats.\r\n\tif (format === 'International') {\r\n\t\tformat = 'INTERNATIONAL'\r\n\t} else if (format === 'National') {\r\n\t\tformat = 'NATIONAL'\r\n\t}\r\n\r\n\treturn {\r\n\t\tinput,\r\n\t\tformat,\r\n\t\toptions,\r\n\t\tmetadata\r\n\t}\r\n}\r\n\r\n// Babel transforms `typeof` into some \"branches\"\r\n// so istanbul will show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst is_object = _ => typeof _ === 'object'"],"mappings":";;;;;;;AAAA;;AACA;;;;;;;;;;;;;;;;;;AAEe,SAASA,YAAT,GACf;EACC,0BAOEC,kBAAkB,CAACC,SAAD,CAPpB;EAAA,IAECC,KAFD,uBAECA,KAFD;EAAA,IAGCC,MAHD,uBAGCA,MAHD;EAAA,IAICC,OAJD,uBAICA,OAJD;EAAA,IAKCC,QALD,uBAKCA,QALD;;EASA,OAAO,IAAAC,mBAAA,EAAcJ,KAAd,EAAqBC,MAArB,EAA6BC,OAA7B,EAAsCC,QAAtC,CAAP;AACA,C,CAED;;;AACA,SAASL,kBAAT,CAA4BO,IAA5B,EACA;EACC,4BAA4CC,KAAK,CAACC,SAAN,CAAgBC,KAAhB,CAAsBC,IAAtB,CAA2BJ,IAA3B,CAA5C;EAAA;EAAA,IAAOK,KAAP;EAAA,IAAcC,KAAd;EAAA,IAAqBC,KAArB;EAAA,IAA4BC,KAA5B;EAAA,IAAmCC,KAAnC;;EAEA,IAAId,KAAJ;EACA,IAAIC,MAAJ;EACA,IAAIC,OAAJ;EACA,IAAIC,QAAJ,CAND,CAQC;EAEA;EACA;;EACA,IAAI,OAAOO,KAAP,KAAiB,QAArB,EACA;IACC;IACA;IACA,IAAI,OAAOE,KAAP,KAAiB,QAArB,EACA;MACCX,MAAM,GAAGW,KAAT;;MAEA,IAAIE,KAAJ,EACA;QACCZ,OAAO,GAAIW,KAAX;QACAV,QAAQ,GAAGW,KAAX;MACA,CAJD,MAMA;QACCX,QAAQ,GAAGU,KAAX;MACA;;MAEDb,KAAK,GAAG,IAAAe,kBAAA,EAAML,KAAN,EAAa;QAAEM,cAAc,EAAEL,KAAlB;QAAyBM,QAAQ,EAAE;MAAnC,CAAb,EAAwDd,QAAxD,CAAR;IACA,CAfD,CAgBA;IACA;IAjBA,KAmBA;MACC,IAAI,OAAOQ,KAAP,KAAiB,QAArB,EACA;QACC,MAAM,IAAIO,KAAJ,CAAU,gEAAV,CAAN;MACA;;MAEDjB,MAAM,GAAGU,KAAT;;MAEA,IAAIE,KAAJ,EACA;QACCX,OAAO,GAAIU,KAAX;QACAT,QAAQ,GAAGU,KAAX;MACA,CAJD,MAMA;QACCV,QAAQ,GAAGS,KAAX;MACA;;MAEDZ,KAAK,GAAG,IAAAe,kBAAA,EAAML,KAAN,EAAa;QAAEO,QAAQ,EAAE;MAAZ,CAAb,EAAiCd,QAAjC,CAAR;IACA;EACD,CA3CD,CA4CA;EACA;EA7CA,KA8CK,IAAIgB,SAAS,CAACT,KAAD,CAAb,EACL;IACCV,KAAK,GAAIU,KAAT;IACAT,MAAM,GAAGU,KAAT;;IAEA,IAAIE,KAAJ,EACA;MACCX,OAAO,GAAIU,KAAX;MACAT,QAAQ,GAAGU,KAAX;IACA,CAJD,MAMA;MACCV,QAAQ,GAAGS,KAAX;IACA;EACD,CAdI,MAeA,MAAM,IAAIQ,SAAJ,CAAc,oFAAd,CAAN,CAzEN,CA2EC;;;EACA,IAAInB,MAAM,KAAK,eAAf,EAAgC;IAC/BA,MAAM,GAAG,eAAT;EACA,CAFD,MAEO,IAAIA,MAAM,KAAK,UAAf,EAA2B;IACjCA,MAAM,GAAG,UAAT;EACA;;EAED,OAAO;IACND,KAAK,EAALA,KADM;IAENC,MAAM,EAANA,MAFM;IAGNC,OAAO,EAAPA,OAHM;IAINC,QAAQ,EAARA;EAJM,CAAP;AAMA,C,CAED;AACA;;AACA;;;AACA,IAAMgB,SAAS,GAAG,SAAZA,SAAY,CAAAE,CAAC;EAAA,OAAI,QAAOA,CAAP,MAAa,QAAjB;AAAA,CAAnB"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/format.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/format.test.js new file mode 100644 index 00000000..26be18b1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/format.test.js @@ -0,0 +1,284 @@ +"use strict"; + +var _metadataMin = _interopRequireDefault(require("../metadata.min.json")); + +var _format = _interopRequireDefault(require("./format.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function formatNumber() { + for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) { + parameters[_key] = arguments[_key]; + } + + parameters.push(_metadataMin["default"]); + return _format["default"].apply(this, parameters); +} + +describe('format', function () { + it('should work with the first argument being a E.164 number', function () { + formatNumber('+12133734253', 'NATIONAL').should.equal('(213) 373-4253'); + formatNumber('+12133734253', 'INTERNATIONAL').should.equal('+1 213 373 4253'); // Invalid number. + + formatNumber('+12111111111', 'NATIONAL').should.equal('(211) 111-1111'); // Formatting invalid E.164 numbers. + + formatNumber('+11111', 'INTERNATIONAL').should.equal('+1 1111'); + formatNumber('+11111', 'NATIONAL').should.equal('1111'); + }); + it('should work with the first object argument expanded', function () { + formatNumber('2133734253', 'US', 'NATIONAL').should.equal('(213) 373-4253'); + formatNumber('2133734253', 'US', 'INTERNATIONAL').should.equal('+1 213 373 4253'); + }); + it('should support legacy "National" / "International" formats', function () { + formatNumber('2133734253', 'US', 'National').should.equal('(213) 373-4253'); + formatNumber('2133734253', 'US', 'International').should.equal('+1 213 373 4253'); + }); + it('should format using formats with no leading digits (`format.leadingDigitsPatterns().length === 0`)', function () { + formatNumber({ + phone: '12345678901', + countryCallingCode: 888 + }, 'INTERNATIONAL').should.equal('+888 123 456 78901'); + }); + it('should sort out the arguments', function () { + var options = { + formatExtension: function formatExtension(number, extension) { + return "".concat(number, " \u0434\u043E\u0431. ").concat(extension); + } + }; + formatNumber({ + phone: '8005553535', + country: 'RU', + ext: '123' + }, 'NATIONAL', options).should.equal('8 (800) 555-35-35 доб. 123'); // Parse number from string. + + formatNumber('+78005553535', 'NATIONAL', options).should.equal('8 (800) 555-35-35'); + formatNumber('8005553535', 'RU', 'NATIONAL', options).should.equal('8 (800) 555-35-35'); + }); + it('should format with national prefix when specifically instructed', function () { + // With national prefix. + formatNumber('88005553535', 'RU', 'NATIONAL').should.equal('8 (800) 555-35-35'); // Without national prefix via an explicitly set option. + + formatNumber('88005553535', 'RU', 'NATIONAL', { + nationalPrefix: false + }).should.equal('800 555-35-35'); + }); + it('should format valid phone numbers', function () { + // Switzerland + formatNumber({ + country: 'CH', + phone: '446681800' + }, 'INTERNATIONAL').should.equal('+41 44 668 18 00'); + formatNumber({ + country: 'CH', + phone: '446681800' + }, 'E.164').should.equal('+41446681800'); + formatNumber({ + country: 'CH', + phone: '446681800' + }, 'RFC3966').should.equal('tel:+41446681800'); + formatNumber({ + country: 'CH', + phone: '446681800' + }, 'NATIONAL').should.equal('044 668 18 00'); // France + + formatNumber({ + country: 'FR', + phone: '169454850' + }, 'NATIONAL').should.equal('01 69 45 48 50'); // Kazakhstan + + formatNumber('+7 702 211 1111', 'NATIONAL').should.deep.equal('8 (702) 211 1111'); + }); + it('should format national numbers with national prefix even if it\'s optional', function () { + // Russia + formatNumber({ + country: 'RU', + phone: '9991234567' + }, 'NATIONAL').should.equal('8 (999) 123-45-67'); + }); + it('should work in edge cases', function () { + var thrower; // No phone number + + formatNumber('', 'RU', 'INTERNATIONAL').should.equal(''); + formatNumber('', 'RU', 'NATIONAL').should.equal(''); + formatNumber({ + country: 'RU', + phone: '' + }, 'INTERNATIONAL').should.equal('+7'); + formatNumber({ + country: 'RU', + phone: '' + }, 'NATIONAL').should.equal(''); // No suitable format + + formatNumber('+121337342530', 'US', 'NATIONAL').should.equal('21337342530'); // No suitable format (leading digits mismatch) + + formatNumber('28199999', 'AD', 'NATIONAL').should.equal('28199999'); // Numerical `value` + + thrower = function thrower() { + return formatNumber(89150000000, 'RU', 'NATIONAL'); + }; + + thrower.should["throw"]('A phone number must either be a string or an object of shape { phone, [country] }.'); // No metadata for country + + expect(function () { + return formatNumber('+121337342530', 'USA', 'NATIONAL'); + }).to["throw"]('Unknown country'); + expect(function () { + return formatNumber('21337342530', 'USA', 'NATIONAL'); + }).to["throw"]('Unknown country'); // No format type + + thrower = function thrower() { + return formatNumber('+123'); + }; + + thrower.should["throw"]('`format` argument not passed'); // Unknown format type + + thrower = function thrower() { + return formatNumber('123', 'US', 'Gay'); + }; + + thrower.should["throw"]('Unknown "format" argument'); // No metadata + + thrower = function thrower() { + return (0, _format["default"])('123', 'US', 'E.164'); + }; + + thrower.should["throw"]('`metadata`'); // No formats + + formatNumber('012345', 'AC', 'NATIONAL').should.equal('012345'); // No `fromCountry` for `IDD` format. + + expect(formatNumber('+78005553535', 'IDD')).to.be.undefined; // `fromCountry` has no default IDD prefix. + + expect(formatNumber('+78005553535', 'IDD', { + fromCountry: 'BO' + })).to.be.undefined; // No such country. + + expect(function () { + return formatNumber({ + phone: '123', + country: 'USA' + }, 'NATIONAL'); + }).to["throw"]('Unknown country'); + }); + it('should format phone number extensions', function () { + // National + formatNumber({ + country: 'US', + phone: '2133734253', + ext: '123' + }, 'NATIONAL').should.equal('(213) 373-4253 ext. 123'); // International + + formatNumber({ + country: 'US', + phone: '2133734253', + ext: '123' + }, 'INTERNATIONAL').should.equal('+1 213 373 4253 ext. 123'); // International + + formatNumber({ + country: 'US', + phone: '2133734253', + ext: '123' + }, 'INTERNATIONAL').should.equal('+1 213 373 4253 ext. 123'); // E.164 + + formatNumber({ + country: 'US', + phone: '2133734253', + ext: '123' + }, 'E.164').should.equal('+12133734253'); // RFC3966 + + formatNumber({ + country: 'US', + phone: '2133734253', + ext: '123' + }, 'RFC3966').should.equal('tel:+12133734253;ext=123'); // Custom ext prefix. + + formatNumber({ + country: 'GB', + phone: '7912345678', + ext: '123' + }, 'INTERNATIONAL').should.equal('+44 7912 345678 x123'); + }); + it('should work with Argentina numbers', function () { + // The same mobile number is written differently + // in different formats in Argentina: + // `9` gets prepended in international format. + formatNumber({ + country: 'AR', + phone: '3435551212' + }, 'INTERNATIONAL').should.equal('+54 3435 55 1212'); + formatNumber({ + country: 'AR', + phone: '3435551212' + }, 'NATIONAL').should.equal('03435 55-1212'); + }); + it('should work with Mexico numbers', function () { + // Fixed line. + formatNumber({ + country: 'MX', + phone: '4499780001' + }, 'INTERNATIONAL').should.equal('+52 449 978 0001'); + formatNumber({ + country: 'MX', + phone: '4499780001' + }, 'NATIONAL').should.equal('449 978 0001'); // or '(449)978-0001'. + // Mobile. + // `1` is prepended before area code to mobile numbers in international format. + + formatNumber({ + country: 'MX', + phone: '3312345678' + }, 'INTERNATIONAL').should.equal('+52 33 1234 5678'); + formatNumber({ + country: 'MX', + phone: '3312345678' + }, 'NATIONAL').should.equal('33 1234 5678'); // or '045 33 1234-5678'. + }); + it('should format possible numbers', function () { + formatNumber({ + countryCallingCode: '7', + phone: '1111111111' + }, 'E.164').should.equal('+71111111111'); + formatNumber({ + countryCallingCode: '7', + phone: '1111111111' + }, 'NATIONAL').should.equal('1111111111'); + formatNumber({ + countryCallingCode: '7', + phone: '1111111111' + }, 'INTERNATIONAL').should.equal('+7 1111111111'); + }); + it('should format IDD-prefixed number', function () { + // No `fromCountry`. + expect(formatNumber('+78005553535', 'IDD')).to.be.undefined; // No default IDD prefix. + + expect(formatNumber('+78005553535', 'IDD', { + fromCountry: 'BO' + })).to.be.undefined; // Same country calling code. + + formatNumber('+12133734253', 'IDD', { + fromCountry: 'CA', + humanReadable: true + }).should.equal('1 (213) 373-4253'); + formatNumber('+78005553535', 'IDD', { + fromCountry: 'KZ', + humanReadable: true + }).should.equal('8 (800) 555-35-35'); // formatNumber('+78005553535', 'IDD', { fromCountry: 'US' }).should.equal('01178005553535') + + formatNumber('+78005553535', 'IDD', { + fromCountry: 'US', + humanReadable: true + }).should.equal('011 7 800 555 35 35'); + }); + it('should format non-geographic numbering plan phone numbers', function () { + // https://github.com/catamphetamine/libphonenumber-js/issues/323 + formatNumber('+870773111632', 'INTERNATIONAL').should.equal('+870 773 111 632'); + formatNumber('+870773111632', 'NATIONAL').should.equal('773 111 632'); + }); + it('should use the default IDD prefix when formatting a phone number', function () { + // Testing preferred international prefixes with ~ are supported. + // ("~" designates waiting on a line until proceeding with the input). + formatNumber('+390236618300', 'IDD', { + fromCountry: 'UZ' + }).should.equal('8~10 39 02 3661 8300'); + }); +}); +//# sourceMappingURL=format.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/format.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/format.test.js.map new file mode 100644 index 00000000..fd213004 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/format.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"format.test.js","names":["formatNumber","parameters","push","metadata","_formatNumber","apply","describe","it","should","equal","phone","countryCallingCode","options","formatExtension","number","extension","country","ext","nationalPrefix","deep","thrower","expect","to","be","undefined","fromCountry","humanReadable"],"sources":["../source/format.test.js"],"sourcesContent":["import metadata from '../metadata.min.json' assert { type: 'json' }\r\nimport _formatNumber from './format.js'\r\n\r\nfunction formatNumber(...parameters) {\r\n\tparameters.push(metadata)\r\n\treturn _formatNumber.apply(this, parameters)\r\n}\r\n\r\ndescribe('format', () => {\r\n\tit('should work with the first argument being a E.164 number', () => {\r\n\t\tformatNumber('+12133734253', 'NATIONAL').should.equal('(213) 373-4253')\r\n\t\tformatNumber('+12133734253', 'INTERNATIONAL').should.equal('+1 213 373 4253')\r\n\r\n\t\t// Invalid number.\r\n\t\tformatNumber('+12111111111', 'NATIONAL').should.equal('(211) 111-1111')\r\n\r\n\t\t// Formatting invalid E.164 numbers.\r\n\t\tformatNumber('+11111', 'INTERNATIONAL').should.equal('+1 1111')\r\n\t\tformatNumber('+11111', 'NATIONAL').should.equal('1111')\r\n\t})\r\n\r\n\tit('should work with the first object argument expanded', () => {\r\n\t\tformatNumber('2133734253', 'US', 'NATIONAL').should.equal('(213) 373-4253')\r\n\t\tformatNumber('2133734253', 'US', 'INTERNATIONAL').should.equal('+1 213 373 4253')\r\n\t})\r\n\r\n\tit('should support legacy \"National\" / \"International\" formats', () => {\r\n\t\tformatNumber('2133734253', 'US', 'National').should.equal('(213) 373-4253')\r\n\t\tformatNumber('2133734253', 'US', 'International').should.equal('+1 213 373 4253')\r\n\t})\r\n\r\n\tit('should format using formats with no leading digits (`format.leadingDigitsPatterns().length === 0`)', () => {\r\n\t\tformatNumber({ phone: '12345678901', countryCallingCode: 888 }, 'INTERNATIONAL').should.equal('+888 123 456 78901')\r\n\t})\r\n\r\n\tit('should sort out the arguments', () => {\r\n\t\tconst options = {\r\n\t\t\tformatExtension: (number, extension) => `${number} доб. ${extension}`\r\n\t\t}\r\n\r\n\t\tformatNumber({\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\text : '123'\r\n\t\t},\r\n\t\t'NATIONAL', options).should.equal('8 (800) 555-35-35 доб. 123')\r\n\r\n\t\t// Parse number from string.\r\n\t\tformatNumber('+78005553535', 'NATIONAL', options).should.equal('8 (800) 555-35-35')\r\n\t\tformatNumber('8005553535', 'RU', 'NATIONAL', options).should.equal('8 (800) 555-35-35')\r\n\t})\r\n\r\n\tit('should format with national prefix when specifically instructed', () => {\r\n\t\t// With national prefix.\r\n\t\tformatNumber('88005553535', 'RU', 'NATIONAL').should.equal('8 (800) 555-35-35')\r\n\t\t// Without national prefix via an explicitly set option.\r\n\t\tformatNumber('88005553535', 'RU', 'NATIONAL', { nationalPrefix: false }).should.equal('800 555-35-35')\r\n\t})\r\n\r\n\tit('should format valid phone numbers', () => {\r\n\t\t// Switzerland\r\n\t\tformatNumber({ country: 'CH', phone: '446681800' }, 'INTERNATIONAL').should.equal('+41 44 668 18 00')\r\n\t\tformatNumber({ country: 'CH', phone: '446681800' }, 'E.164').should.equal('+41446681800')\r\n\t\tformatNumber({ country: 'CH', phone: '446681800' }, 'RFC3966').should.equal('tel:+41446681800')\r\n\t\tformatNumber({ country: 'CH', phone: '446681800' }, 'NATIONAL').should.equal('044 668 18 00')\r\n\r\n\t\t// France\r\n\t\tformatNumber({ country: 'FR', phone: '169454850' }, 'NATIONAL').should.equal('01 69 45 48 50')\r\n\r\n\t\t// Kazakhstan\r\n\t\tformatNumber('+7 702 211 1111', 'NATIONAL').should.deep.equal('8 (702) 211 1111')\r\n\t})\r\n\r\n\tit('should format national numbers with national prefix even if it\\'s optional', () => {\r\n\t\t// Russia\r\n\t\tformatNumber({ country: 'RU', phone: '9991234567' }, 'NATIONAL').should.equal('8 (999) 123-45-67')\r\n\t})\r\n\r\n\tit('should work in edge cases', () => {\r\n\t\tlet thrower\r\n\r\n\t\t// No phone number\r\n\t\tformatNumber('', 'RU', 'INTERNATIONAL').should.equal('')\r\n\t\tformatNumber('', 'RU', 'NATIONAL').should.equal('')\r\n\r\n\t\tformatNumber({ country: 'RU', phone: '' }, 'INTERNATIONAL').should.equal('+7')\r\n\t\tformatNumber({ country: 'RU', phone: '' }, 'NATIONAL').should.equal('')\r\n\r\n\t\t// No suitable format\r\n\t\tformatNumber('+121337342530', 'US', 'NATIONAL').should.equal('21337342530')\r\n\t\t// No suitable format (leading digits mismatch)\r\n\t\tformatNumber('28199999', 'AD', 'NATIONAL').should.equal('28199999')\r\n\r\n\t\t// Numerical `value`\r\n\t\tthrower = () => formatNumber(89150000000, 'RU', 'NATIONAL')\r\n\t\tthrower.should.throw('A phone number must either be a string or an object of shape { phone, [country] }.')\r\n\r\n\t\t// No metadata for country\r\n\t\texpect(() => formatNumber('+121337342530', 'USA', 'NATIONAL')).to.throw('Unknown country')\r\n\t\texpect(() => formatNumber('21337342530', 'USA', 'NATIONAL')).to.throw('Unknown country')\r\n\r\n\t\t// No format type\r\n\t\tthrower = () => formatNumber('+123')\r\n\t\tthrower.should.throw('`format` argument not passed')\r\n\r\n\t\t// Unknown format type\r\n\t\tthrower = () => formatNumber('123', 'US', 'Gay')\r\n\t\tthrower.should.throw('Unknown \"format\" argument')\r\n\r\n\t\t// No metadata\r\n\t\tthrower = () => _formatNumber('123', 'US', 'E.164')\r\n\t\tthrower.should.throw('`metadata`')\r\n\r\n\t\t// No formats\r\n\t\tformatNumber('012345', 'AC', 'NATIONAL').should.equal('012345')\r\n\r\n\t\t// No `fromCountry` for `IDD` format.\r\n\t\texpect(formatNumber('+78005553535', 'IDD')).to.be.undefined\r\n\r\n\t\t// `fromCountry` has no default IDD prefix.\r\n\t\texpect(formatNumber('+78005553535', 'IDD', { fromCountry: 'BO' })).to.be.undefined\r\n\r\n\t\t// No such country.\r\n\t\texpect(() => formatNumber({ phone: '123', country: 'USA' }, 'NATIONAL')).to.throw('Unknown country')\r\n\t})\r\n\r\n\tit('should format phone number extensions', () => {\r\n\t\t// National\r\n\t\tformatNumber({\r\n\t\t\tcountry: 'US',\r\n\t\t\tphone: '2133734253',\r\n\t\t\text: '123'\r\n\t\t},\r\n\t\t'NATIONAL').should.equal('(213) 373-4253 ext. 123')\r\n\r\n\t\t// International\r\n\t\tformatNumber({\r\n\t\t\tcountry : 'US',\r\n\t\t\tphone : '2133734253',\r\n\t\t\text : '123'\r\n\t\t},\r\n\t\t'INTERNATIONAL').should.equal('+1 213 373 4253 ext. 123')\r\n\r\n\t\t// International\r\n\t\tformatNumber({\r\n\t\t\tcountry : 'US',\r\n\t\t\tphone : '2133734253',\r\n\t\t\text : '123'\r\n\t\t},\r\n\t\t'INTERNATIONAL').should.equal('+1 213 373 4253 ext. 123')\r\n\r\n\t\t// E.164\r\n\t\tformatNumber({\r\n\t\t\tcountry : 'US',\r\n\t\t\tphone : '2133734253',\r\n\t\t\text : '123'\r\n\t\t},\r\n\t\t'E.164').should.equal('+12133734253')\r\n\r\n\t\t// RFC3966\r\n\t\tformatNumber({\r\n\t\t\tcountry : 'US',\r\n\t\t\tphone : '2133734253',\r\n\t\t\text : '123'\r\n\t\t},\r\n\t\t'RFC3966').should.equal('tel:+12133734253;ext=123')\r\n\r\n\t\t// Custom ext prefix.\r\n\t\tformatNumber({\r\n\t\t\tcountry : 'GB',\r\n\t\t\tphone : '7912345678',\r\n\t\t\text : '123'\r\n\t\t},\r\n\t\t'INTERNATIONAL').should.equal('+44 7912 345678 x123')\r\n\t})\r\n\r\n\tit('should work with Argentina numbers', () => {\r\n\t\t// The same mobile number is written differently\r\n\t\t// in different formats in Argentina:\r\n\t\t// `9` gets prepended in international format.\r\n\t\tformatNumber({ country: 'AR', phone: '3435551212' }, 'INTERNATIONAL')\r\n\t\t\t.should.equal('+54 3435 55 1212')\r\n\t\tformatNumber({ country: 'AR', phone: '3435551212' }, 'NATIONAL')\r\n\t\t\t.should.equal('03435 55-1212')\r\n\t})\r\n\r\n\tit('should work with Mexico numbers', () => {\r\n\t\t// Fixed line.\r\n\t\tformatNumber({ country: 'MX', phone: '4499780001' }, 'INTERNATIONAL')\r\n\t\t\t.should.equal('+52 449 978 0001')\r\n\t\tformatNumber({ country: 'MX', phone: '4499780001' }, 'NATIONAL')\r\n\t\t\t.should.equal('449 978 0001')\r\n\t\t\t// or '(449)978-0001'.\r\n\t\t// Mobile.\r\n\t\t// `1` is prepended before area code to mobile numbers in international format.\r\n\t\tformatNumber({ country: 'MX', phone: '3312345678' }, 'INTERNATIONAL')\r\n\t\t\t.should.equal('+52 33 1234 5678')\r\n\t\tformatNumber({ country: 'MX', phone: '3312345678' }, 'NATIONAL')\r\n\t\t\t.should.equal('33 1234 5678')\r\n\t\t\t// or '045 33 1234-5678'.\r\n\t})\r\n\r\n\tit('should format possible numbers', () => {\r\n\t\tformatNumber({ countryCallingCode: '7', phone: '1111111111' }, 'E.164')\r\n\t\t\t.should.equal('+71111111111')\r\n\r\n\t\tformatNumber({ countryCallingCode: '7', phone: '1111111111' }, 'NATIONAL')\r\n\t\t\t.should.equal('1111111111')\r\n\r\n\t\tformatNumber({ countryCallingCode: '7', phone: '1111111111' }, 'INTERNATIONAL')\r\n\t\t\t.should.equal('+7 1111111111')\r\n\t})\r\n\r\n\tit('should format IDD-prefixed number', () => {\r\n\t\t// No `fromCountry`.\r\n\t\texpect(formatNumber('+78005553535', 'IDD')).to.be.undefined\r\n\r\n\t\t// No default IDD prefix.\r\n\t\texpect(formatNumber('+78005553535', 'IDD', { fromCountry: 'BO' })).to.be.undefined\r\n\r\n\t\t// Same country calling code.\r\n\t\tformatNumber('+12133734253', 'IDD', { fromCountry: 'CA', humanReadable: true }).should.equal('1 (213) 373-4253')\r\n\t\tformatNumber('+78005553535', 'IDD', { fromCountry: 'KZ', humanReadable: true }).should.equal('8 (800) 555-35-35')\r\n\r\n\t\t// formatNumber('+78005553535', 'IDD', { fromCountry: 'US' }).should.equal('01178005553535')\r\n\t\tformatNumber('+78005553535', 'IDD', { fromCountry: 'US', humanReadable: true }).should.equal('011 7 800 555 35 35')\r\n\t})\r\n\r\n\tit('should format non-geographic numbering plan phone numbers', () => {\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/323\r\n\t\tformatNumber('+870773111632', 'INTERNATIONAL').should.equal('+870 773 111 632')\r\n\t\tformatNumber('+870773111632', 'NATIONAL').should.equal('773 111 632')\r\n\t})\r\n\r\n\tit('should use the default IDD prefix when formatting a phone number', () => {\r\n\t\t// Testing preferred international prefixes with ~ are supported.\r\n\t\t// (\"~\" designates waiting on a line until proceeding with the input).\r\n\t\tformatNumber('+390236618300', 'IDD', { fromCountry: 'UZ' }).should.equal('8~10 39 02 3661 8300')\r\n\t})\r\n})"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatIncompletePhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatIncompletePhoneNumber.js new file mode 100644 index 00000000..113edec1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatIncompletePhoneNumber.js @@ -0,0 +1,28 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = formatIncompletePhoneNumber; + +var _AsYouType = _interopRequireDefault(require("./AsYouType.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +/** + * Formats a (possibly incomplete) phone number. + * The phone number can be either in E.164 format + * or in a form of national number digits. + * @param {string} value - A possibly incomplete phone number. Either in E.164 format or in a form of national number digits. + * @param {string?} country - Two-letter ("ISO 3166-1 alpha-2") country code. + * @return {string} Formatted (possibly incomplete) phone number. + */ +function formatIncompletePhoneNumber(value, country, metadata) { + if (!metadata) { + metadata = country; + country = undefined; + } + + return new _AsYouType["default"](country, metadata).input(value); +} +//# sourceMappingURL=formatIncompletePhoneNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatIncompletePhoneNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatIncompletePhoneNumber.js.map new file mode 100644 index 00000000..6b50f1e2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatIncompletePhoneNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"formatIncompletePhoneNumber.js","names":["formatIncompletePhoneNumber","value","country","metadata","undefined","AsYouType","input"],"sources":["../source/formatIncompletePhoneNumber.js"],"sourcesContent":["import AsYouType from './AsYouType.js'\r\n\r\n/**\r\n * Formats a (possibly incomplete) phone number.\r\n * The phone number can be either in E.164 format\r\n * or in a form of national number digits.\r\n * @param {string} value - A possibly incomplete phone number. Either in E.164 format or in a form of national number digits.\r\n * @param {string?} country - Two-letter (\"ISO 3166-1 alpha-2\") country code.\r\n * @return {string} Formatted (possibly incomplete) phone number.\r\n */\r\nexport default function formatIncompletePhoneNumber(value, country, metadata) {\r\n\tif (!metadata) {\r\n\t\tmetadata = country\r\n\t\tcountry = undefined\r\n\t}\r\n\treturn new AsYouType(country, metadata).input(value)\r\n}"],"mappings":";;;;;;;AAAA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,2BAAT,CAAqCC,KAArC,EAA4CC,OAA5C,EAAqDC,QAArD,EAA+D;EAC7E,IAAI,CAACA,QAAL,EAAe;IACdA,QAAQ,GAAGD,OAAX;IACAA,OAAO,GAAGE,SAAV;EACA;;EACD,OAAO,IAAIC,qBAAJ,CAAcH,OAAd,EAAuBC,QAAvB,EAAiCG,KAAjC,CAAuCL,KAAvC,CAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatIncompletePhoneNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatIncompletePhoneNumber.test.js new file mode 100644 index 00000000..70d47242 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatIncompletePhoneNumber.test.js @@ -0,0 +1,22 @@ +"use strict"; + +var _formatIncompletePhoneNumber = _interopRequireDefault(require("./formatIncompletePhoneNumber.js")); + +var _metadataMin = _interopRequireDefault(require("../metadata.min.json")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +describe('formatIncompletePhoneNumber', function () { + it('should format parsed input value', function () { + var result; // National input. + + (0, _formatIncompletePhoneNumber["default"])('880055535', 'RU', _metadataMin["default"]).should.equal('8 (800) 555-35'); // International input, no country. + + (0, _formatIncompletePhoneNumber["default"])('+780055535', null, _metadataMin["default"]).should.equal('+7 800 555 35'); // International input, no country argument. + + (0, _formatIncompletePhoneNumber["default"])('+780055535', _metadataMin["default"]).should.equal('+7 800 555 35'); // International input, with country. + + (0, _formatIncompletePhoneNumber["default"])('+780055535', 'RU', _metadataMin["default"]).should.equal('+7 800 555 35'); + }); +}); +//# sourceMappingURL=formatIncompletePhoneNumber.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatIncompletePhoneNumber.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatIncompletePhoneNumber.test.js.map new file mode 100644 index 00000000..398469a7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatIncompletePhoneNumber.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"formatIncompletePhoneNumber.test.js","names":["describe","it","result","formatIncompletePhoneNumber","metadata","should","equal"],"sources":["../source/formatIncompletePhoneNumber.test.js"],"sourcesContent":["import formatIncompletePhoneNumber from './formatIncompletePhoneNumber.js'\r\n\r\nimport metadata from '../metadata.min.json' assert { type: 'json' }\r\n\r\ndescribe('formatIncompletePhoneNumber', () => {\r\n\tit('should format parsed input value', () => {\r\n\t\tlet result\r\n\r\n\t\t// National input.\r\n\t\tformatIncompletePhoneNumber('880055535', 'RU', metadata).should.equal('8 (800) 555-35')\r\n\r\n\t\t// International input, no country.\r\n\t\tformatIncompletePhoneNumber('+780055535', null, metadata).should.equal('+7 800 555 35')\r\n\r\n\t\t// International input, no country argument.\r\n\t\tformatIncompletePhoneNumber('+780055535', metadata).should.equal('+7 800 555 35')\r\n\r\n\t\t// International input, with country.\r\n\t\tformatIncompletePhoneNumber('+780055535', 'RU', metadata).should.equal('+7 800 555 35')\r\n\t})\r\n})"],"mappings":";;AAAA;;AAEA;;;;AAEAA,QAAQ,CAAC,6BAAD,EAAgC,YAAM;EAC7CC,EAAE,CAAC,kCAAD,EAAqC,YAAM;IAC5C,IAAIC,MAAJ,CAD4C,CAG5C;;IACA,IAAAC,uCAAA,EAA4B,WAA5B,EAAyC,IAAzC,EAA+CC,uBAA/C,EAAyDC,MAAzD,CAAgEC,KAAhE,CAAsE,gBAAtE,EAJ4C,CAM5C;;IACA,IAAAH,uCAAA,EAA4B,YAA5B,EAA0C,IAA1C,EAAgDC,uBAAhD,EAA0DC,MAA1D,CAAiEC,KAAjE,CAAuE,eAAvE,EAP4C,CAS5C;;IACA,IAAAH,uCAAA,EAA4B,YAA5B,EAA0CC,uBAA1C,EAAoDC,MAApD,CAA2DC,KAA3D,CAAiE,eAAjE,EAV4C,CAY5C;;IACA,IAAAH,uCAAA,EAA4B,YAA5B,EAA0C,IAA1C,EAAgDC,uBAAhD,EAA0DC,MAA1D,CAAiEC,KAAjE,CAAuE,eAAvE;EACA,CAdC,CAAF;AAeA,CAhBO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatNumberForMobileDialing.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatNumberForMobileDialing.js new file mode 100644 index 00000000..484c4ebf --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatNumberForMobileDialing.js @@ -0,0 +1,205 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; + +var _metadata = _interopRequireDefault(require("./metadata.js")); + +var _format_ = _interopRequireDefault(require("./format_.js")); + +var _getNumberType = _interopRequireDefault(require("./helpers/getNumberType.js")); + +var _checkNumberLength = _interopRequireDefault(require("./helpers/checkNumberLength.js")); + +var _getCountryCallingCode = _interopRequireDefault(require("./getCountryCallingCode.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +// This function is copy-pasted from +// https://github.com/googlei18n/libphonenumber/blob/master/javascript/i18n/phonenumbers/phonenumberutil.js +// It hasn't been tested. +// Carriers codes aren't part of this library. +// Send a PR if you want to add them. +var REGION_CODE_FOR_NON_GEO_ENTITY = '001'; +/** + * The prefix that needs to be inserted in front of a Colombian landline number + * when dialed from a mobile phone in Colombia. + */ + +var COLOMBIA_MOBILE_TO_FIXED_LINE_PREFIX = '3'; +/** + * Returns a number formatted in such a way that it can be dialed from a mobile + * phone in a specific region. If the number cannot be reached from the region + * (e.g. some countries block toll-free numbers from being called outside of the + * country), the method returns an empty string. + * + * @param {object} number - a `parse()`d phone number to be formatted. + * @param {string} from_country - the region where the call is being placed. + * @param {boolean} with_formatting - whether the number should be returned with + * formatting symbols, such as spaces and dashes. + * @return {string} + */ + +function _default(number, from_country, with_formatting, metadata) { + metadata = new _metadata["default"](metadata); // Validate `from_country`. + + if (!metadata.hasCountry(from_country)) { + throw new Error("Unknown country: ".concat(from_country)); + } // Not using the extension, as that part cannot normally be dialed + // together with the main number. + + + number = { + phone: number.phone, + country: number.country + }; + var number_type = (0, _getNumberType["default"])(number, undefined, metadata.metadata); + var is_valid_number = number_type === number; + var formatted_number; + + if (country === from_country) { + var is_fixed_line_or_mobile = number_type === 'FIXED_LINE' || number_type === 'MOBILE' || number_type === 'FIXED_LINE_OR_MOBILE'; // Carrier codes may be needed in some countries. We handle this here. + + if (country === 'CO' && number_type === 'FIXED_LINE') { + formatted_number = formatNationalNumberWithCarrierCode(number, COLOMBIA_MOBILE_TO_FIXED_LINE_PREFIX); + } else if (country == 'BR' && is_fixed_line_or_mobile) { + formatted_number = carrierCode ? formatNationalNumberWithPreferredCarrierCode(number) : // Brazilian fixed line and mobile numbers need to be dialed with a + // carrier code when called within Brazil. Without that, most of the + // carriers won't connect the call. Because of that, we return an + // empty string here. + ''; + } else if ((0, _getCountryCallingCode["default"])(country, metadata.metadata) === '1') { + // For NANPA countries, we output international format for numbers that + // can be dialed internationally, since that always works, except for + // numbers which might potentially be short numbers, which are always + // dialled in national format. + // Select country for `checkNumberLength()`. + metadata.country(country); + + if (can_be_internationally_dialled(number) && (0, _checkNumberLength["default"])(number.phone, metadata) !== 'TOO_SHORT') { + formatted_number = (0, _format_["default"])(number, 'INTERNATIONAL', metadata.metadata); + } else { + formatted_number = (0, _format_["default"])(number, 'NATIONAL', metadata.metadata); + } + } else { + // For non-geographic countries, Mexican and Chilean fixed line and + // mobile numbers, we output international format for numbers that can be + // dialed internationally, as that always works. + if ((country === REGION_CODE_FOR_NON_GEO_ENTITY || // MX fixed line and mobile numbers should always be formatted in + // international format, even when dialed within MX. For national + // format to work, a carrier code needs to be used, and the correct + // carrier code depends on if the caller and callee are from the + // same local area. It is trickier to get that to work correctly than + // using international format, which is tested to work fine on all + // carriers. + // + // CL fixed line numbers need the national prefix when dialing in the + // national format, but don't have it when used for display. The + // reverse is true for mobile numbers. As a result, we output them in + // the international format to make it work. + // + // UZ mobile and fixed-line numbers have to be formatted in + // international format or prefixed with special codes like 03, 04 + // (for fixed-line) and 05 (for mobile) for dialling successfully + // from mobile devices. As we do not have complete information on + // special codes and to be consistent with formatting across all + // phone types we return the number in international format here. + // + (country === 'MX' || country === 'CL' || country == 'UZ') && is_fixed_line_or_mobile) && can_be_internationally_dialled(number)) { + formatted_number = (0, _format_["default"])(number, 'INTERNATIONAL'); + } else { + formatted_number = (0, _format_["default"])(number, 'NATIONAL'); + } + } + } else if (is_valid_number && can_be_internationally_dialled(number)) { + // We assume that short numbers are not diallable from outside their region, + // so if a number is not a valid regular length phone number, we treat it as + // if it cannot be internationally dialled. + return with_formatting ? (0, _format_["default"])(number, 'INTERNATIONAL', metadata.metadata) : (0, _format_["default"])(number, 'E.164', metadata.metadata); + } + + if (!with_formatting) { + return diallable_chars(formatted_number); + } + + return formatted_number; +} + +function can_be_internationally_dialled(number) { + return true; +} +/** + * A map that contains characters that are essential when dialling. That means + * any of the characters in this map must not be removed from a number when + * dialling, otherwise the call will not reach the intended destination. + */ + + +var DIALLABLE_CHARACTERS = { + '0': '0', + '1': '1', + '2': '2', + '3': '3', + '4': '4', + '5': '5', + '6': '6', + '7': '7', + '8': '8', + '9': '9', + '+': '+', + '*': '*', + '#': '#' +}; + +function diallable_chars(formatted_number) { + var result = ''; + var i = 0; + + while (i < formatted_number.length) { + var character = formatted_number[i]; + + if (DIALLABLE_CHARACTERS[character]) { + result += character; + } + + i++; + } + + return result; +} + +function getPreferredDomesticCarrierCodeOrDefault() { + throw new Error('carrier codes are not part of this library'); +} + +function formatNationalNumberWithCarrierCode() { + throw new Error('carrier codes are not part of this library'); +} +/** + * Formats a phone number in national format for dialing using the carrier as + * specified in the preferred_domestic_carrier_code field of the PhoneNumber + * object passed in. If that is missing, use the {@code fallbackCarrierCode} + * passed in instead. If there is no {@code preferred_domestic_carrier_code}, + * and the {@code fallbackCarrierCode} contains an empty string, return the + * number in national format without any carrier code. + * + *

Use {@link #formatNationalNumberWithCarrierCode} instead if the carrier + * code passed in should take precedence over the number's + * {@code preferred_domestic_carrier_code} when formatting. + * + * @param {i18n.phonenumbers.PhoneNumber} number the phone number to be + * formatted. + * @param {string} fallbackCarrierCode the carrier selection code to be used, if + * none is found in the phone number itself. + * @return {string} the formatted phone number in national format for dialing + * using the number's preferred_domestic_carrier_code, or the + * {@code fallbackCarrierCode} passed in if none is found. + */ + + +function formatNationalNumberWithPreferredCarrierCode(number) { + return formatNationalNumberWithCarrierCode(number, carrierCode); +} +//# sourceMappingURL=formatNumberForMobileDialing.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatNumberForMobileDialing.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatNumberForMobileDialing.js.map new file mode 100644 index 00000000..026f3e4c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatNumberForMobileDialing.js.map @@ -0,0 +1 @@ +{"version":3,"file":"formatNumberForMobileDialing.js","names":["REGION_CODE_FOR_NON_GEO_ENTITY","COLOMBIA_MOBILE_TO_FIXED_LINE_PREFIX","number","from_country","with_formatting","metadata","Metadata","hasCountry","Error","phone","country","number_type","getNumberType","undefined","is_valid_number","formatted_number","is_fixed_line_or_mobile","formatNationalNumberWithCarrierCode","carrierCode","formatNationalNumberWithPreferredCarrierCode","getCountryCallingCode","can_be_internationally_dialled","checkNumberLength","format","diallable_chars","DIALLABLE_CHARACTERS","result","i","length","character","getPreferredDomesticCarrierCodeOrDefault"],"sources":["../source/formatNumberForMobileDialing.js"],"sourcesContent":["// This function is copy-pasted from\r\n// https://github.com/googlei18n/libphonenumber/blob/master/javascript/i18n/phonenumbers/phonenumberutil.js\r\n// It hasn't been tested.\r\n// Carriers codes aren't part of this library.\r\n// Send a PR if you want to add them.\r\n\r\nimport Metadata from './metadata.js'\r\nimport format from './format_.js'\r\nimport getNumberType from './helpers/getNumberType.js'\r\nimport checkNumberLength from './helpers/checkNumberLength.js'\r\nimport getCountryCallingCode from './getCountryCallingCode.js'\r\n\r\nconst REGION_CODE_FOR_NON_GEO_ENTITY = '001'\r\n\r\n/**\r\n * The prefix that needs to be inserted in front of a Colombian landline number\r\n * when dialed from a mobile phone in Colombia.\r\n */\r\nconst COLOMBIA_MOBILE_TO_FIXED_LINE_PREFIX = '3'\r\n\r\n/**\r\n * Returns a number formatted in such a way that it can be dialed from a mobile\r\n * phone in a specific region. If the number cannot be reached from the region\r\n * (e.g. some countries block toll-free numbers from being called outside of the\r\n * country), the method returns an empty string.\r\n *\r\n * @param {object} number - a `parse()`d phone number to be formatted.\r\n * @param {string} from_country - the region where the call is being placed.\r\n * @param {boolean} with_formatting - whether the number should be returned with\r\n * formatting symbols, such as spaces and dashes.\r\n * @return {string}\r\n */\r\nexport default function(number, from_country, with_formatting, metadata) {\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\t// Validate `from_country`.\r\n\tif (!metadata.hasCountry(from_country)) {\r\n\t\tthrow new Error(`Unknown country: ${from_country}`)\r\n\t}\r\n\r\n\t// Not using the extension, as that part cannot normally be dialed\r\n\t// together with the main number.\r\n\tnumber = {\r\n\t\tphone: number.phone,\r\n\t\tcountry: number.country\r\n\t}\r\n\r\n\tconst number_type = getNumberType(number, undefined, metadata.metadata)\r\n\tconst is_valid_number = number_type === number\r\n\r\n\tlet formatted_number\r\n\r\n\tif (country === from_country) {\r\n\t\tconst is_fixed_line_or_mobile =\r\n\t\t\tnumber_type === 'FIXED_LINE' ||\r\n\t\t\tnumber_type === 'MOBILE' ||\r\n\t\t\tnumber_type === 'FIXED_LINE_OR_MOBILE'\r\n\r\n\t\t// Carrier codes may be needed in some countries. We handle this here.\r\n\t\tif (country === 'CO' && number_type === 'FIXED_LINE') {\r\n\t\t\tformatted_number = formatNationalNumberWithCarrierCode(\r\n\t\t\t\tnumber,\r\n\t\t\t\tCOLOMBIA_MOBILE_TO_FIXED_LINE_PREFIX\r\n\t\t\t)\r\n\t\t}\r\n\t\telse if (country == 'BR' && is_fixed_line_or_mobile) {\r\n\t\t\tformatted_number =\r\n\t\t\t\tcarrierCode ?\r\n\t\t\t\tformatNationalNumberWithPreferredCarrierCode(number) :\r\n\t\t\t\t// Brazilian fixed line and mobile numbers need to be dialed with a\r\n\t\t\t\t// carrier code when called within Brazil. Without that, most of the\r\n\t\t\t\t// carriers won't connect the call. Because of that, we return an\r\n\t\t\t\t// empty string here.\r\n\t\t\t\t''\r\n\t\t} else if (getCountryCallingCode(country, metadata.metadata) === '1') {\r\n\t\t\t// For NANPA countries, we output international format for numbers that\r\n\t\t\t// can be dialed internationally, since that always works, except for\r\n\t\t\t// numbers which might potentially be short numbers, which are always\r\n\t\t\t// dialled in national format.\r\n\r\n\t\t\t// Select country for `checkNumberLength()`.\r\n\t\t\tmetadata.country(country)\r\n\r\n\t\t\tif (can_be_internationally_dialled(number) &&\r\n\t\t\t\tcheckNumberLength(number.phone, metadata) !== 'TOO_SHORT') {\r\n\t\t\t\tformatted_number = format(number, 'INTERNATIONAL', metadata.metadata)\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tformatted_number = format(number, 'NATIONAL', metadata.metadata)\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// For non-geographic countries, Mexican and Chilean fixed line and\r\n\t\t\t// mobile numbers, we output international format for numbers that can be\r\n\t\t\t// dialed internationally, as that always works.\r\n\t\t\tif (\r\n\t\t\t\t(\r\n\t\t\t\t\tcountry === REGION_CODE_FOR_NON_GEO_ENTITY\r\n\t\t\t\t\t||\r\n\t\t\t\t\t// MX fixed line and mobile numbers should always be formatted in\r\n\t\t\t\t\t// international format, even when dialed within MX. For national\r\n\t\t\t\t\t// format to work, a carrier code needs to be used, and the correct\r\n\t\t\t\t\t// carrier code depends on if the caller and callee are from the\r\n\t\t\t\t\t// same local area. It is trickier to get that to work correctly than\r\n\t\t\t\t\t// using international format, which is tested to work fine on all\r\n\t\t\t\t\t// carriers.\r\n\t\t\t\t\t//\r\n\t\t\t\t\t// CL fixed line numbers need the national prefix when dialing in the\r\n\t\t\t\t\t// national format, but don't have it when used for display. The\r\n\t\t\t\t\t// reverse is true for mobile numbers. As a result, we output them in\r\n\t\t\t\t\t// the international format to make it work.\r\n\t\t\t\t\t//\r\n\t\t\t\t\t// UZ mobile and fixed-line numbers have to be formatted in\r\n\t\t\t\t\t// international format or prefixed with special codes like 03, 04\r\n\t\t\t\t\t// (for fixed-line) and 05 (for mobile) for dialling successfully\r\n\t\t\t\t\t// from mobile devices. As we do not have complete information on\r\n\t\t\t\t\t// special codes and to be consistent with formatting across all\r\n\t\t\t\t\t// phone types we return the number in international format here.\r\n\t\t\t\t\t//\r\n\t\t\t\t\t((country === 'MX' || country === 'CL' || country == 'UZ') && is_fixed_line_or_mobile)\r\n\t\t\t\t)\r\n\t\t\t\t&&\r\n\t\t\t\tcan_be_internationally_dialled(number)\r\n\t\t\t) {\r\n\t\t\t\tformatted_number = format(number, 'INTERNATIONAL')\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tformatted_number = format(number, 'NATIONAL')\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\telse if (is_valid_number && can_be_internationally_dialled(number)) {\r\n\t\t// We assume that short numbers are not diallable from outside their region,\r\n\t\t// so if a number is not a valid regular length phone number, we treat it as\r\n\t\t// if it cannot be internationally dialled.\r\n\t\treturn with_formatting ?\r\n\t\t\tformat(number, 'INTERNATIONAL', metadata.metadata) :\r\n\t\t\tformat(number, 'E.164', metadata.metadata)\r\n\t}\r\n\r\n\tif (!with_formatting) {\r\n\t\treturn diallable_chars(formatted_number)\r\n\t}\r\n\r\n\treturn formatted_number\r\n}\r\n\r\nfunction can_be_internationally_dialled(number) {\r\n\treturn true\r\n}\r\n\r\n/**\r\n * A map that contains characters that are essential when dialling. That means\r\n * any of the characters in this map must not be removed from a number when\r\n * dialling, otherwise the call will not reach the intended destination.\r\n */\r\nconst DIALLABLE_CHARACTERS = {\r\n\t'0': '0',\r\n\t'1': '1',\r\n\t'2': '2',\r\n\t'3': '3',\r\n\t'4': '4',\r\n\t'5': '5',\r\n\t'6': '6',\r\n\t'7': '7',\r\n\t'8': '8',\r\n\t'9': '9',\r\n\t'+': '+',\r\n\t'*': '*',\r\n\t'#': '#'\r\n}\r\n\r\nfunction diallable_chars(formatted_number) {\r\n\tlet result = ''\r\n\r\n\tlet i = 0\r\n\twhile (i < formatted_number.length) {\r\n\t\tconst character = formatted_number[i]\r\n\t\tif (DIALLABLE_CHARACTERS[character]) {\r\n\t\t\tresult += character\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\r\n\treturn result\r\n}\r\n\r\nfunction getPreferredDomesticCarrierCodeOrDefault() {\r\n\tthrow new Error('carrier codes are not part of this library')\r\n}\r\n\r\nfunction formatNationalNumberWithCarrierCode() {\r\n\tthrow new Error('carrier codes are not part of this library')\r\n}\r\n\r\n/**\r\n * Formats a phone number in national format for dialing using the carrier as\r\n * specified in the preferred_domestic_carrier_code field of the PhoneNumber\r\n * object passed in. If that is missing, use the {@code fallbackCarrierCode}\r\n * passed in instead. If there is no {@code preferred_domestic_carrier_code},\r\n * and the {@code fallbackCarrierCode} contains an empty string, return the\r\n * number in national format without any carrier code.\r\n *\r\n *

Use {@link #formatNationalNumberWithCarrierCode} instead if the carrier\r\n * code passed in should take precedence over the number's\r\n * {@code preferred_domestic_carrier_code} when formatting.\r\n *\r\n * @param {i18n.phonenumbers.PhoneNumber} number the phone number to be\r\n * formatted.\r\n * @param {string} fallbackCarrierCode the carrier selection code to be used, if\r\n * none is found in the phone number itself.\r\n * @return {string} the formatted phone number in national format for dialing\r\n * using the number's preferred_domestic_carrier_code, or the\r\n * {@code fallbackCarrierCode} passed in if none is found.\r\n */\r\nfunction formatNationalNumberWithPreferredCarrierCode(number) {\r\n\treturn formatNationalNumberWithCarrierCode(\r\n\t\tnumber,\r\n\t\tcarrierCode\r\n\t);\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatNumberForMobileDialing.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatNumberForMobileDialing.test.js new file mode 100644 index 00000000..3427089b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatNumberForMobileDialing.test.js @@ -0,0 +1,15 @@ +// Google's tests: +// https://github.com/googlei18n/libphonenumber/blob/597983dc4d56ed7e5337a8e74316dc7a3d02d794/javascript/i18n/phonenumbers/phonenumberutil_test.js +// import metadata from '../metadata.min.json' assert { type: 'json' } +// import formatForMobileDialing from './formatForMobileDialing' +// describe('formatForMobileDialing', () => +// { +// it('should format for mobile dialing', () => +// { +// formatForMobileDialing({ phone: '8005553535', country: 'RU' }, 'US', true, metadata).should.equal('+7 800 555 3535') +// formatForMobileDialing({ phone: '8005553535', country: 'RU' }, 'US', false, metadata).should.equal('+78005553535') +// formatForMobileDialing({ phone: '8005553535', country: 'RU' }, 'RU', false, metadata).should.equal('8005553535') +// }) +// }) +"use strict"; +//# sourceMappingURL=formatNumberForMobileDialing.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatNumberForMobileDialing.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatNumberForMobileDialing.test.js.map new file mode 100644 index 00000000..bac4478f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/formatNumberForMobileDialing.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"formatNumberForMobileDialing.test.js","names":[],"sources":["../source/formatNumberForMobileDialing.test.js"],"sourcesContent":["// Google's tests:\r\n// https://github.com/googlei18n/libphonenumber/blob/597983dc4d56ed7e5337a8e74316dc7a3d02d794/javascript/i18n/phonenumbers/phonenumberutil_test.js\r\n\r\n// import metadata from '../metadata.min.json' assert { type: 'json' }\r\n\r\n// import formatForMobileDialing from './formatForMobileDialing'\r\n\r\n// describe('formatForMobileDialing', () =>\r\n// {\r\n// \tit('should format for mobile dialing', () =>\r\n// \t{\r\n// \t\tformatForMobileDialing({ phone: '8005553535', country: 'RU' }, 'US', true, metadata).should.equal('+7 800 555 3535')\r\n// \t\tformatForMobileDialing({ phone: '8005553535', country: 'RU' }, 'US', false, metadata).should.equal('+78005553535')\r\n// \t\tformatForMobileDialing({ phone: '8005553535', country: 'RU' }, 'RU', false, metadata).should.equal('8005553535')\r\n// \t})\r\n// })"],"mappings":"AAAA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/format_.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/format_.js new file mode 100644 index 00000000..7573bff5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/format_.js @@ -0,0 +1,203 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = formatNumber; + +var _matchesEntirely = _interopRequireDefault(require("./helpers/matchesEntirely.js")); + +var _formatNationalNumberUsingFormat = _interopRequireDefault(require("./helpers/formatNationalNumberUsingFormat.js")); + +var _metadata = _interopRequireWildcard(require("./metadata.js")); + +var _getIddPrefix = _interopRequireDefault(require("./helpers/getIddPrefix.js")); + +var _RFC = require("./helpers/RFC3966.js"); + +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } + +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +var DEFAULT_OPTIONS = { + formatExtension: function formatExtension(formattedNumber, extension, metadata) { + return "".concat(formattedNumber).concat(metadata.ext()).concat(extension); + } +}; // Formats a phone number +// +// Example use cases: +// +// ```js +// formatNumber('8005553535', 'RU', 'INTERNATIONAL') +// formatNumber('8005553535', 'RU', 'INTERNATIONAL', metadata) +// formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL') +// formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL', metadata) +// formatNumber('+78005553535', 'NATIONAL') +// formatNumber('+78005553535', 'NATIONAL', metadata) +// ``` +// + +function formatNumber(input, format, options, metadata) { + // Apply default options. + if (options) { + options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options); + } else { + options = DEFAULT_OPTIONS; + } + + metadata = new _metadata["default"](metadata); + + if (input.country && input.country !== '001') { + // Validate `input.country`. + if (!metadata.hasCountry(input.country)) { + throw new Error("Unknown country: ".concat(input.country)); + } + + metadata.country(input.country); + } else if (input.countryCallingCode) { + metadata.selectNumberingPlan(input.countryCallingCode); + } else return input.phone || ''; + + var countryCallingCode = metadata.countryCallingCode(); + var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // This variable should have been declared inside `case`s + // but Babel has a bug and it says "duplicate variable declaration". + + var number; + + switch (format) { + case 'NATIONAL': + // Legacy argument support. + // (`{ country: ..., phone: '' }`) + if (!nationalNumber) { + return ''; + } + + number = formatNationalNumber(nationalNumber, input.carrierCode, 'NATIONAL', metadata, options); + return addExtension(number, input.ext, metadata, options.formatExtension); + + case 'INTERNATIONAL': + // Legacy argument support. + // (`{ country: ..., phone: '' }`) + if (!nationalNumber) { + return "+".concat(countryCallingCode); + } + + number = formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata, options); + number = "+".concat(countryCallingCode, " ").concat(number); + return addExtension(number, input.ext, metadata, options.formatExtension); + + case 'E.164': + // `E.164` doesn't define "phone number extensions". + return "+".concat(countryCallingCode).concat(nationalNumber); + + case 'RFC3966': + return (0, _RFC.formatRFC3966)({ + number: "+".concat(countryCallingCode).concat(nationalNumber), + ext: input.ext + }); + // For reference, here's Google's IDD formatter: + // https://github.com/google/libphonenumber/blob/32719cf74e68796788d1ca45abc85dcdc63ba5b9/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L1546 + // Not saying that this IDD formatter replicates it 1:1, but it seems to work. + // Who would even need to format phone numbers in IDD format anyway? + + case 'IDD': + if (!options.fromCountry) { + return; // throw new Error('`fromCountry` option not passed for IDD-prefixed formatting.') + } + + var formattedNumber = formatIDD(nationalNumber, input.carrierCode, countryCallingCode, options.fromCountry, metadata); + return addExtension(formattedNumber, input.ext, metadata, options.formatExtension); + + default: + throw new Error("Unknown \"format\" argument passed to \"formatNumber()\": \"".concat(format, "\"")); + } +} + +function formatNationalNumber(number, carrierCode, formatAs, metadata, options) { + var format = chooseFormatForNumber(metadata.formats(), number); + + if (!format) { + return number; + } + + return (0, _formatNationalNumberUsingFormat["default"])(number, format, { + useInternationalFormat: formatAs === 'INTERNATIONAL', + withNationalPrefix: format.nationalPrefixIsOptionalWhenFormattingInNationalFormat() && options && options.nationalPrefix === false ? false : true, + carrierCode: carrierCode, + metadata: metadata + }); +} + +function chooseFormatForNumber(availableFormats, nationalNnumber) { + for (var _iterator = _createForOfIteratorHelperLoose(availableFormats), _step; !(_step = _iterator()).done;) { + var format = _step.value; + + // Validate leading digits. + // The test case for "else path" could be found by searching for + // "format.leadingDigitsPatterns().length === 0". + if (format.leadingDigitsPatterns().length > 0) { + // The last leading_digits_pattern is used here, as it is the most detailed + var lastLeadingDigitsPattern = format.leadingDigitsPatterns()[format.leadingDigitsPatterns().length - 1]; // If leading digits don't match then move on to the next phone number format + + if (nationalNnumber.search(lastLeadingDigitsPattern) !== 0) { + continue; + } + } // Check that the national number matches the phone number format regular expression + + + if ((0, _matchesEntirely["default"])(nationalNnumber, format.pattern())) { + return format; + } + } +} + +function addExtension(formattedNumber, ext, metadata, formatExtension) { + return ext ? formatExtension(formattedNumber, ext, metadata) : formattedNumber; +} + +function formatIDD(nationalNumber, carrierCode, countryCallingCode, fromCountry, metadata) { + var fromCountryCallingCode = (0, _metadata.getCountryCallingCode)(fromCountry, metadata.metadata); // When calling within the same country calling code. + + if (fromCountryCallingCode === countryCallingCode) { + var formattedNumber = formatNationalNumber(nationalNumber, carrierCode, 'NATIONAL', metadata); // For NANPA regions, return the national format for these regions + // but prefix it with the country calling code. + + if (countryCallingCode === '1') { + return countryCallingCode + ' ' + formattedNumber; + } // If regions share a country calling code, the country calling code need + // not be dialled. This also applies when dialling within a region, so this + // if clause covers both these cases. Technically this is the case for + // dialling from La Reunion to other overseas departments of France (French + // Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover + // this edge case for now and for those cases return the version including + // country calling code. Details here: + // http://www.petitfute.com/voyage/225-info-pratiques-reunion + // + + + return formattedNumber; + } + + var iddPrefix = (0, _getIddPrefix["default"])(fromCountry, undefined, metadata.metadata); + + if (iddPrefix) { + return "".concat(iddPrefix, " ").concat(countryCallingCode, " ").concat(formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata)); + } +} +//# sourceMappingURL=format_.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/format_.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/format_.js.map new file mode 100644 index 00000000..c2672497 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/format_.js.map @@ -0,0 +1 @@ +{"version":3,"file":"format_.js","names":["DEFAULT_OPTIONS","formatExtension","formattedNumber","extension","metadata","ext","formatNumber","input","format","options","Metadata","country","hasCountry","Error","countryCallingCode","selectNumberingPlan","phone","nationalNumber","v2","number","formatNationalNumber","carrierCode","addExtension","formatRFC3966","fromCountry","formatIDD","formatAs","chooseFormatForNumber","formats","formatNationalNumberUsingFormat","useInternationalFormat","withNationalPrefix","nationalPrefixIsOptionalWhenFormattingInNationalFormat","nationalPrefix","availableFormats","nationalNnumber","leadingDigitsPatterns","length","lastLeadingDigitsPattern","search","matchesEntirely","pattern","fromCountryCallingCode","getCountryCallingCode","iddPrefix","getIddPrefix","undefined"],"sources":["../source/format_.js"],"sourcesContent":["// This is a port of Google Android `libphonenumber`'s\r\n// `phonenumberutil.js` of December 31th, 2018.\r\n//\r\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\r\n\r\nimport matchesEntirely from './helpers/matchesEntirely.js'\r\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js'\r\nimport Metadata, { getCountryCallingCode } from './metadata.js'\r\nimport getIddPrefix from './helpers/getIddPrefix.js'\r\nimport { formatRFC3966 } from './helpers/RFC3966.js'\r\n\r\nconst DEFAULT_OPTIONS = {\r\n\tformatExtension: (formattedNumber, extension, metadata) => `${formattedNumber}${metadata.ext()}${extension}`\r\n}\r\n\r\n// Formats a phone number\r\n//\r\n// Example use cases:\r\n//\r\n// ```js\r\n// formatNumber('8005553535', 'RU', 'INTERNATIONAL')\r\n// formatNumber('8005553535', 'RU', 'INTERNATIONAL', metadata)\r\n// formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL')\r\n// formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL', metadata)\r\n// formatNumber('+78005553535', 'NATIONAL')\r\n// formatNumber('+78005553535', 'NATIONAL', metadata)\r\n// ```\r\n//\r\nexport default function formatNumber(input, format, options, metadata) {\r\n\t// Apply default options.\r\n\tif (options) {\r\n\t\toptions = { ...DEFAULT_OPTIONS, ...options }\r\n\t} else {\r\n\t\toptions = DEFAULT_OPTIONS\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tif (input.country && input.country !== '001') {\r\n\t\t// Validate `input.country`.\r\n\t\tif (!metadata.hasCountry(input.country)) {\r\n\t\t\tthrow new Error(`Unknown country: ${input.country}`)\r\n\t\t}\r\n\t\tmetadata.country(input.country)\r\n\t}\r\n\telse if (input.countryCallingCode) {\r\n\t\tmetadata.selectNumberingPlan(input.countryCallingCode)\r\n\t}\r\n\telse return input.phone || ''\r\n\r\n\tconst countryCallingCode = metadata.countryCallingCode()\r\n\r\n\tconst nationalNumber = options.v2 ? input.nationalNumber : input.phone\r\n\r\n\t// This variable should have been declared inside `case`s\r\n\t// but Babel has a bug and it says \"duplicate variable declaration\".\r\n\tlet number\r\n\r\n\tswitch (format) {\r\n\t\tcase 'NATIONAL':\r\n\t\t\t// Legacy argument support.\r\n\t\t\t// (`{ country: ..., phone: '' }`)\r\n\t\t\tif (!nationalNumber) {\r\n\t\t\t\treturn ''\r\n\t\t\t}\r\n\t\t\tnumber = formatNationalNumber(nationalNumber, input.carrierCode, 'NATIONAL', metadata, options)\r\n\t\t\treturn addExtension(number, input.ext, metadata, options.formatExtension)\r\n\r\n\t\tcase 'INTERNATIONAL':\r\n\t\t\t// Legacy argument support.\r\n\t\t\t// (`{ country: ..., phone: '' }`)\r\n\t\t\tif (!nationalNumber) {\r\n\t\t\t\treturn `+${countryCallingCode}`\r\n\t\t\t}\r\n\t\t\tnumber = formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata, options)\r\n\t\t\tnumber = `+${countryCallingCode} ${number}`\r\n\t\t\treturn addExtension(number, input.ext, metadata, options.formatExtension)\r\n\r\n\t\tcase 'E.164':\r\n\t\t\t// `E.164` doesn't define \"phone number extensions\".\r\n\t\t\treturn `+${countryCallingCode}${nationalNumber}`\r\n\r\n\t\tcase 'RFC3966':\r\n\t\t\treturn formatRFC3966({\r\n\t\t\t\tnumber: `+${countryCallingCode}${nationalNumber}`,\r\n\t\t\t\text: input.ext\r\n\t\t\t})\r\n\r\n\t\t// For reference, here's Google's IDD formatter:\r\n\t\t// https://github.com/google/libphonenumber/blob/32719cf74e68796788d1ca45abc85dcdc63ba5b9/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L1546\r\n\t\t// Not saying that this IDD formatter replicates it 1:1, but it seems to work.\r\n\t\t// Who would even need to format phone numbers in IDD format anyway?\r\n\t\tcase 'IDD':\r\n\t\t\tif (!options.fromCountry) {\r\n\t\t\t\treturn\r\n\t\t\t\t// throw new Error('`fromCountry` option not passed for IDD-prefixed formatting.')\r\n\t\t\t}\r\n\t\t\tconst formattedNumber = formatIDD(\r\n\t\t\t\tnationalNumber,\r\n\t\t\t\tinput.carrierCode,\r\n\t\t\t\tcountryCallingCode,\r\n\t\t\t\toptions.fromCountry,\r\n\t\t\t\tmetadata\r\n\t\t\t)\r\n\t\t\treturn addExtension(formattedNumber, input.ext, metadata, options.formatExtension)\r\n\r\n\t\tdefault:\r\n\t\t\tthrow new Error(`Unknown \"format\" argument passed to \"formatNumber()\": \"${format}\"`)\r\n\t}\r\n}\r\n\r\nfunction formatNationalNumber(number, carrierCode, formatAs, metadata, options) {\r\n\tconst format = chooseFormatForNumber(metadata.formats(), number)\r\n\tif (!format) {\r\n\t\treturn number\r\n\t}\r\n\treturn formatNationalNumberUsingFormat(\r\n\t\tnumber,\r\n\t\tformat,\r\n\t\t{\r\n\t\t\tuseInternationalFormat: formatAs === 'INTERNATIONAL',\r\n\t\t\twithNationalPrefix: format.nationalPrefixIsOptionalWhenFormattingInNationalFormat() && (options && options.nationalPrefix === false) ? false : true,\r\n\t\t\tcarrierCode,\r\n\t\t\tmetadata\r\n\t\t}\r\n\t)\r\n}\r\n\r\nfunction chooseFormatForNumber(availableFormats, nationalNnumber) {\r\n\tfor (const format of availableFormats) {\r\n\t\t// Validate leading digits.\r\n\t\t// The test case for \"else path\" could be found by searching for\r\n\t\t// \"format.leadingDigitsPatterns().length === 0\".\r\n\t\tif (format.leadingDigitsPatterns().length > 0) {\r\n\t\t\t// The last leading_digits_pattern is used here, as it is the most detailed\r\n\t\t\tconst lastLeadingDigitsPattern = format.leadingDigitsPatterns()[format.leadingDigitsPatterns().length - 1]\r\n\t\t\t// If leading digits don't match then move on to the next phone number format\r\n\t\t\tif (nationalNnumber.search(lastLeadingDigitsPattern) !== 0) {\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Check that the national number matches the phone number format regular expression\r\n\t\tif (matchesEntirely(nationalNnumber, format.pattern())) {\r\n\t\t\treturn format\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction addExtension(formattedNumber, ext, metadata, formatExtension) {\r\n\treturn ext ? formatExtension(formattedNumber, ext, metadata) : formattedNumber\r\n}\r\n\r\nfunction formatIDD(\r\n\tnationalNumber,\r\n\tcarrierCode,\r\n\tcountryCallingCode,\r\n\tfromCountry,\r\n\tmetadata\r\n) {\r\n\tconst fromCountryCallingCode = getCountryCallingCode(fromCountry, metadata.metadata)\r\n\t// When calling within the same country calling code.\r\n\tif (fromCountryCallingCode === countryCallingCode) {\r\n\t\tconst formattedNumber = formatNationalNumber(nationalNumber, carrierCode, 'NATIONAL', metadata)\r\n\t\t// For NANPA regions, return the national format for these regions\r\n\t\t// but prefix it with the country calling code.\r\n\t\tif (countryCallingCode === '1') {\r\n\t\t\treturn countryCallingCode + ' ' + formattedNumber\r\n\t\t}\r\n\t\t// If regions share a country calling code, the country calling code need\r\n\t\t// not be dialled. This also applies when dialling within a region, so this\r\n\t\t// if clause covers both these cases. Technically this is the case for\r\n\t\t// dialling from La Reunion to other overseas departments of France (French\r\n\t\t// Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover\r\n\t\t// this edge case for now and for those cases return the version including\r\n\t\t// country calling code. Details here:\r\n\t\t// http://www.petitfute.com/voyage/225-info-pratiques-reunion\r\n\t\t//\r\n\t\treturn formattedNumber\r\n\t}\r\n\tconst iddPrefix = getIddPrefix(fromCountry, undefined, metadata.metadata)\r\n\tif (iddPrefix) {\r\n\t\treturn `${iddPrefix} ${countryCallingCode} ${formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata)}`\r\n\t}\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountries.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountries.js new file mode 100644 index 00000000..3316684d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountries.js @@ -0,0 +1,15 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = getCountries; + +var _metadata = _interopRequireDefault(require("./metadata.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function getCountries(metadata) { + return new _metadata["default"](metadata).getCountries(); +} +//# sourceMappingURL=getCountries.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountries.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountries.js.map new file mode 100644 index 00000000..7d8b0262 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountries.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getCountries.js","names":["getCountries","metadata","Metadata"],"sources":["../source/getCountries.js"],"sourcesContent":["import Metadata from './metadata.js'\r\n\r\nexport default function getCountries(metadata) {\r\n\treturn new Metadata(metadata).getCountries()\r\n}"],"mappings":";;;;;;;AAAA;;;;AAEe,SAASA,YAAT,CAAsBC,QAAtB,EAAgC;EAC9C,OAAO,IAAIC,oBAAJ,CAAaD,QAAb,EAAuBD,YAAvB,EAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountries.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountries.test.js new file mode 100644 index 00000000..70af89ed --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountries.test.js @@ -0,0 +1,14 @@ +"use strict"; + +var _metadataMin = _interopRequireDefault(require("../metadata.min.json")); + +var _getCountries = _interopRequireDefault(require("./getCountries.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +describe('getCountries', function () { + it('should get countries list', function () { + expect((0, _getCountries["default"])(_metadataMin["default"]).indexOf('RU') > 0).to.be["true"]; + }); +}); +//# sourceMappingURL=getCountries.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountries.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountries.test.js.map new file mode 100644 index 00000000..8d0b008b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountries.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getCountries.test.js","names":["describe","it","expect","getCountries","metadata","indexOf","to","be"],"sources":["../source/getCountries.test.js"],"sourcesContent":["import metadata from '../metadata.min.json' assert { type: 'json' }\r\n\r\nimport getCountries from './getCountries.js'\r\n\r\ndescribe('getCountries', () => {\r\n\tit('should get countries list', () => {\r\n\t\texpect(getCountries(metadata).indexOf('RU') > 0).to.be.true;\r\n\t})\r\n})"],"mappings":";;AAAA;;AAEA;;;;AAEAA,QAAQ,CAAC,cAAD,EAAiB,YAAM;EAC9BC,EAAE,CAAC,2BAAD,EAA8B,YAAM;IACrCC,MAAM,CAAC,IAAAC,wBAAA,EAAaC,uBAAb,EAAuBC,OAAvB,CAA+B,IAA/B,IAAuC,CAAxC,CAAN,CAAiDC,EAAjD,CAAoDC,EAApD;EACA,CAFC,CAAF;AAGA,CAJO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountryCallingCode.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountryCallingCode.js new file mode 100644 index 00000000..d2f78195 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountryCallingCode.js @@ -0,0 +1,14 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "default", { + enumerable: true, + get: function get() { + return _metadata.getCountryCallingCode; + } +}); + +var _metadata = require("./metadata.js"); +//# sourceMappingURL=getCountryCallingCode.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountryCallingCode.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountryCallingCode.js.map new file mode 100644 index 00000000..60b31867 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountryCallingCode.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getCountryCallingCode.js","names":[],"sources":["../source/getCountryCallingCode.js"],"sourcesContent":["// Deprecated. Import from 'metadata.js' directly instead.\r\nexport { getCountryCallingCode as default } from './metadata.js'"],"mappings":";;;;;;;;;;;;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountryCallingCode.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountryCallingCode.test.js new file mode 100644 index 00000000..8e2a9a8a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountryCallingCode.test.js @@ -0,0 +1,19 @@ +"use strict"; + +var _metadataMin = _interopRequireDefault(require("../metadata.min.json")); + +var _getCountryCallingCode = _interopRequireDefault(require("./getCountryCallingCode.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +describe('getCountryCallingCode', function () { + it('should get country calling code', function () { + (0, _getCountryCallingCode["default"])('US', _metadataMin["default"]).should.equal('1'); + }); + it('should throw if country is unknown', function () { + expect(function () { + return (0, _getCountryCallingCode["default"])('ZZ', _metadataMin["default"]); + }).to["throw"]('Unknown country: ZZ'); + }); +}); +//# sourceMappingURL=getCountryCallingCode.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountryCallingCode.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountryCallingCode.test.js.map new file mode 100644 index 00000000..9c229270 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getCountryCallingCode.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getCountryCallingCode.test.js","names":["describe","it","getCountryCallingCode","metadata","should","equal","expect","to"],"sources":["../source/getCountryCallingCode.test.js"],"sourcesContent":["import metadata from '../metadata.min.json' assert { type: 'json' }\r\n\r\nimport getCountryCallingCode from './getCountryCallingCode.js'\r\n\r\ndescribe('getCountryCallingCode', () => {\r\n\tit('should get country calling code', () => {\r\n\t\tgetCountryCallingCode('US', metadata).should.equal('1')\r\n\t})\r\n\r\n\tit('should throw if country is unknown', () => {\r\n\t\texpect(() => getCountryCallingCode('ZZ', metadata)).to.throw('Unknown country: ZZ')\r\n\t})\r\n})"],"mappings":";;AAAA;;AAEA;;;;AAEAA,QAAQ,CAAC,uBAAD,EAA0B,YAAM;EACvCC,EAAE,CAAC,iCAAD,EAAoC,YAAM;IAC3C,IAAAC,iCAAA,EAAsB,IAAtB,EAA4BC,uBAA5B,EAAsCC,MAAtC,CAA6CC,KAA7C,CAAmD,GAAnD;EACA,CAFC,CAAF;EAIAJ,EAAE,CAAC,oCAAD,EAAuC,YAAM;IAC9CK,MAAM,CAAC;MAAA,OAAM,IAAAJ,iCAAA,EAAsB,IAAtB,EAA4BC,uBAA5B,CAAN;IAAA,CAAD,CAAN,CAAoDI,EAApD,UAA6D,qBAA7D;EACA,CAFC,CAAF;AAGA,CARO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getExampleNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getExampleNumber.js new file mode 100644 index 00000000..b36e8617 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getExampleNumber.js @@ -0,0 +1,17 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = getExampleNumber; + +var _PhoneNumber = _interopRequireDefault(require("./PhoneNumber.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function getExampleNumber(country, examples, metadata) { + if (examples[country]) { + return new _PhoneNumber["default"](country, examples[country], metadata); + } +} +//# sourceMappingURL=getExampleNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getExampleNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getExampleNumber.js.map new file mode 100644 index 00000000..8bd9485c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getExampleNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getExampleNumber.js","names":["getExampleNumber","country","examples","metadata","PhoneNumber"],"sources":["../source/getExampleNumber.js"],"sourcesContent":["import PhoneNumber from './PhoneNumber.js'\r\n\r\nexport default function getExampleNumber(country, examples, metadata) {\r\n\tif (examples[country]) {\r\n\t\treturn new PhoneNumber(country, examples[country], metadata)\r\n\t}\r\n}"],"mappings":";;;;;;;AAAA;;;;AAEe,SAASA,gBAAT,CAA0BC,OAA1B,EAAmCC,QAAnC,EAA6CC,QAA7C,EAAuD;EACrE,IAAID,QAAQ,CAACD,OAAD,CAAZ,EAAuB;IACtB,OAAO,IAAIG,uBAAJ,CAAgBH,OAAhB,EAAyBC,QAAQ,CAACD,OAAD,CAAjC,EAA4CE,QAA5C,CAAP;EACA;AACD"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getExampleNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getExampleNumber.test.js new file mode 100644 index 00000000..50ce757e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getExampleNumber.test.js @@ -0,0 +1,23 @@ +"use strict"; + +var _examplesMobile = _interopRequireDefault(require("../examples.mobile.json")); + +var _metadataMin = _interopRequireDefault(require("../metadata.min.json")); + +var _getExampleNumber = _interopRequireDefault(require("./getExampleNumber.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +describe('getExampleNumber', function () { + it('should get an example number', function () { + var phoneNumber = (0, _getExampleNumber["default"])('RU', _examplesMobile["default"], _metadataMin["default"]); + phoneNumber.nationalNumber.should.equal('9123456789'); + phoneNumber.number.should.equal('+79123456789'); + phoneNumber.countryCallingCode.should.equal('7'); + phoneNumber.country.should.equal('RU'); + }); + it('should handle a non-existing country', function () { + expect((0, _getExampleNumber["default"])('XX', _examplesMobile["default"], _metadataMin["default"])).to.be.undefined; + }); +}); +//# sourceMappingURL=getExampleNumber.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getExampleNumber.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getExampleNumber.test.js.map new file mode 100644 index 00000000..0444c44a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getExampleNumber.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getExampleNumber.test.js","names":["describe","it","phoneNumber","getExampleNumber","examples","metadata","nationalNumber","should","equal","number","countryCallingCode","country","expect","to","be","undefined"],"sources":["../source/getExampleNumber.test.js"],"sourcesContent":["import examples from '../examples.mobile.json' assert { type: 'json' }\r\nimport metadata from '../metadata.min.json' assert { type: 'json' }\r\nimport getExampleNumber from './getExampleNumber.js'\r\n\r\ndescribe('getExampleNumber', () => {\r\n\tit('should get an example number', () => {\r\n\t\tconst phoneNumber = getExampleNumber('RU', examples, metadata)\r\n\t\tphoneNumber.nationalNumber.should.equal('9123456789')\r\n\t\tphoneNumber.number.should.equal('+79123456789')\r\n\t\tphoneNumber.countryCallingCode.should.equal('7')\r\n\t\tphoneNumber.country.should.equal('RU')\r\n\t})\r\n\r\n\tit('should handle a non-existing country', () => {\r\n\t\texpect(getExampleNumber('XX', examples, metadata)).to.be.undefined\r\n\t})\r\n})"],"mappings":";;AAAA;;AACA;;AACA;;;;AAEAA,QAAQ,CAAC,kBAAD,EAAqB,YAAM;EAClCC,EAAE,CAAC,8BAAD,EAAiC,YAAM;IACxC,IAAMC,WAAW,GAAG,IAAAC,4BAAA,EAAiB,IAAjB,EAAuBC,0BAAvB,EAAiCC,uBAAjC,CAApB;IACAH,WAAW,CAACI,cAAZ,CAA2BC,MAA3B,CAAkCC,KAAlC,CAAwC,YAAxC;IACAN,WAAW,CAACO,MAAZ,CAAmBF,MAAnB,CAA0BC,KAA1B,CAAgC,cAAhC;IACAN,WAAW,CAACQ,kBAAZ,CAA+BH,MAA/B,CAAsCC,KAAtC,CAA4C,GAA5C;IACAN,WAAW,CAACS,OAAZ,CAAoBJ,MAApB,CAA2BC,KAA3B,CAAiC,IAAjC;EACA,CANC,CAAF;EAQAP,EAAE,CAAC,sCAAD,EAAyC,YAAM;IAChDW,MAAM,CAAC,IAAAT,4BAAA,EAAiB,IAAjB,EAAuBC,0BAAvB,EAAiCC,uBAAjC,CAAD,CAAN,CAAmDQ,EAAnD,CAAsDC,EAAtD,CAAyDC,SAAzD;EACA,CAFC,CAAF;AAGA,CAZO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getNumberType.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getNumberType.js new file mode 100644 index 00000000..4b520d57 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getNumberType.js @@ -0,0 +1,128 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = getNumberType; +exports.normalizeArguments = normalizeArguments; + +var _isViablePhoneNumber = _interopRequireDefault(require("./helpers/isViablePhoneNumber.js")); + +var _getNumberType2 = _interopRequireDefault(require("./helpers/getNumberType.js")); + +var _parse_ = _interopRequireDefault(require("./parse_.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +// Finds out national phone number type (fixed line, mobile, etc) +function getNumberType() { + var _normalizeArguments = normalizeArguments(arguments), + input = _normalizeArguments.input, + options = _normalizeArguments.options, + metadata = _normalizeArguments.metadata; + + return (0, _getNumberType2["default"])(input, options, metadata); +} // Sort out arguments + + +function normalizeArguments(args) { + var _Array$prototype$slic = Array.prototype.slice.call(args), + _Array$prototype$slic2 = _slicedToArray(_Array$prototype$slic, 4), + arg_1 = _Array$prototype$slic2[0], + arg_2 = _Array$prototype$slic2[1], + arg_3 = _Array$prototype$slic2[2], + arg_4 = _Array$prototype$slic2[3]; + + var input; + var options = {}; + var metadata; // If the phone number is passed as a string. + // `getNumberType('88005553535', ...)`. + + if (typeof arg_1 === 'string') { + // If "default country" argument is being passed + // then convert it to an `options` object. + // `getNumberType('88005553535', 'RU', metadata)`. + if (_typeof(arg_2) !== 'object') { + if (arg_4) { + options = arg_3; + metadata = arg_4; + } else { + metadata = arg_3; + } // `parse` extracts phone numbers from raw text, + // therefore it will cut off all "garbage" characters, + // while this `validate` function needs to verify + // that the phone number contains no "garbage" + // therefore the explicit `isViablePhoneNumber` check. + + + if ((0, _isViablePhoneNumber["default"])(arg_1)) { + input = (0, _parse_["default"])(arg_1, { + defaultCountry: arg_2 + }, metadata); + } else { + input = {}; + } + } // No "resrict country" argument is being passed. + // International phone number is passed. + // `getNumberType('+78005553535', metadata)`. + else { + if (arg_3) { + options = arg_2; + metadata = arg_3; + } else { + metadata = arg_2; + } // `parse` extracts phone numbers from raw text, + // therefore it will cut off all "garbage" characters, + // while this `validate` function needs to verify + // that the phone number contains no "garbage" + // therefore the explicit `isViablePhoneNumber` check. + + + if ((0, _isViablePhoneNumber["default"])(arg_1)) { + input = (0, _parse_["default"])(arg_1, undefined, metadata); + } else { + input = {}; + } + } + } // If the phone number is passed as a parsed phone number. + // `getNumberType({ phone: '88005553535', country: 'RU' }, ...)`. + else if (is_object(arg_1)) { + input = arg_1; + + if (arg_3) { + options = arg_2; + metadata = arg_3; + } else { + metadata = arg_2; + } + } else throw new TypeError('A phone number must either be a string or an object of shape { phone, [country] }.'); + + return { + input: input, + options: options, + metadata: metadata + }; +} // Babel transforms `typeof` into some "branches" +// so istanbul will show this as "branch not covered". + +/* istanbul ignore next */ + + +var is_object = function is_object(_) { + return _typeof(_) === 'object'; +}; +//# sourceMappingURL=getNumberType.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getNumberType.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getNumberType.js.map new file mode 100644 index 00000000..334bbe3a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getNumberType.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getNumberType.js","names":["getNumberType","normalizeArguments","arguments","input","options","metadata","_getNumberType","args","Array","prototype","slice","call","arg_1","arg_2","arg_3","arg_4","isViablePhoneNumber","parse","defaultCountry","undefined","is_object","TypeError","_"],"sources":["../source/getNumberType.js"],"sourcesContent":["import isViablePhoneNumber from './helpers/isViablePhoneNumber.js'\r\nimport _getNumberType from './helpers/getNumberType.js'\r\nimport parse from './parse_.js'\r\n\r\n// Finds out national phone number type (fixed line, mobile, etc)\r\nexport default function getNumberType()\r\n{\r\n\tconst { input, options, metadata } = normalizeArguments(arguments)\r\n\treturn _getNumberType(input, options, metadata)\r\n}\r\n\r\n// Sort out arguments\r\nexport function normalizeArguments(args)\r\n{\r\n\tconst [arg_1, arg_2, arg_3, arg_4] = Array.prototype.slice.call(args)\r\n\r\n\tlet input\r\n\tlet options = {}\r\n\tlet metadata\r\n\r\n\t// If the phone number is passed as a string.\r\n\t// `getNumberType('88005553535', ...)`.\r\n\tif (typeof arg_1 === 'string')\r\n\t{\r\n\t\t// If \"default country\" argument is being passed\r\n\t\t// then convert it to an `options` object.\r\n\t\t// `getNumberType('88005553535', 'RU', metadata)`.\r\n\t\tif (typeof arg_2 !== 'object')\r\n\t\t{\r\n\t\t\tif (arg_4)\r\n\t\t\t{\r\n\t\t\t\toptions = arg_3\r\n\t\t\t\tmetadata = arg_4\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tmetadata = arg_3\r\n\t\t\t}\r\n\r\n\t\t\t// `parse` extracts phone numbers from raw text,\r\n\t\t\t// therefore it will cut off all \"garbage\" characters,\r\n\t\t\t// while this `validate` function needs to verify\r\n\t\t\t// that the phone number contains no \"garbage\"\r\n\t\t\t// therefore the explicit `isViablePhoneNumber` check.\r\n\t\t\tif (isViablePhoneNumber(arg_1))\r\n\t\t\t{\r\n\t\t\t\tinput = parse(arg_1, { defaultCountry: arg_2 }, metadata)\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tinput = {}\r\n\t\t\t}\r\n\t\t}\r\n\t\t// No \"resrict country\" argument is being passed.\r\n\t\t// International phone number is passed.\r\n\t\t// `getNumberType('+78005553535', metadata)`.\r\n\t\telse\r\n\t\t{\r\n\t\t\tif (arg_3)\r\n\t\t\t{\r\n\t\t\t\toptions = arg_2\r\n\t\t\t\tmetadata = arg_3\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tmetadata = arg_2\r\n\t\t\t}\r\n\r\n\t\t\t// `parse` extracts phone numbers from raw text,\r\n\t\t\t// therefore it will cut off all \"garbage\" characters,\r\n\t\t\t// while this `validate` function needs to verify\r\n\t\t\t// that the phone number contains no \"garbage\"\r\n\t\t\t// therefore the explicit `isViablePhoneNumber` check.\r\n\t\t\tif (isViablePhoneNumber(arg_1))\r\n\t\t\t{\r\n\t\t\t\tinput = parse(arg_1, undefined, metadata)\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tinput = {}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t// If the phone number is passed as a parsed phone number.\r\n\t// `getNumberType({ phone: '88005553535', country: 'RU' }, ...)`.\r\n\telse if (is_object(arg_1))\r\n\t{\r\n\t\tinput = arg_1\r\n\r\n\t\tif (arg_3)\r\n\t\t{\r\n\t\t\toptions = arg_2\r\n\t\t\tmetadata = arg_3\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tmetadata = arg_2\r\n\t\t}\r\n\t}\r\n\telse throw new TypeError('A phone number must either be a string or an object of shape { phone, [country] }.')\r\n\r\n\treturn {\r\n\t\tinput,\r\n\t\toptions,\r\n\t\tmetadata\r\n\t}\r\n}\r\n\r\n// Babel transforms `typeof` into some \"branches\"\r\n// so istanbul will show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst is_object = _ => typeof _ === 'object'"],"mappings":";;;;;;;;AAAA;;AACA;;AACA;;;;;;;;;;;;;;;;;;AAEA;AACe,SAASA,aAAT,GACf;EACC,0BAAqCC,kBAAkB,CAACC,SAAD,CAAvD;EAAA,IAAQC,KAAR,uBAAQA,KAAR;EAAA,IAAeC,OAAf,uBAAeA,OAAf;EAAA,IAAwBC,QAAxB,uBAAwBA,QAAxB;;EACA,OAAO,IAAAC,0BAAA,EAAeH,KAAf,EAAsBC,OAAtB,EAA+BC,QAA/B,CAAP;AACA,C,CAED;;;AACO,SAASJ,kBAAT,CAA4BM,IAA5B,EACP;EACC,4BAAqCC,KAAK,CAACC,SAAN,CAAgBC,KAAhB,CAAsBC,IAAtB,CAA2BJ,IAA3B,CAArC;EAAA;EAAA,IAAOK,KAAP;EAAA,IAAcC,KAAd;EAAA,IAAqBC,KAArB;EAAA,IAA4BC,KAA5B;;EAEA,IAAIZ,KAAJ;EACA,IAAIC,OAAO,GAAG,EAAd;EACA,IAAIC,QAAJ,CALD,CAOC;EACA;;EACA,IAAI,OAAOO,KAAP,KAAiB,QAArB,EACA;IACC;IACA;IACA;IACA,IAAI,QAAOC,KAAP,MAAiB,QAArB,EACA;MACC,IAAIE,KAAJ,EACA;QACCX,OAAO,GAAGU,KAAV;QACAT,QAAQ,GAAGU,KAAX;MACA,CAJD,MAMA;QACCV,QAAQ,GAAGS,KAAX;MACA,CATF,CAWC;MACA;MACA;MACA;MACA;;;MACA,IAAI,IAAAE,+BAAA,EAAoBJ,KAApB,CAAJ,EACA;QACCT,KAAK,GAAG,IAAAc,kBAAA,EAAML,KAAN,EAAa;UAAEM,cAAc,EAAEL;QAAlB,CAAb,EAAwCR,QAAxC,CAAR;MACA,CAHD,MAKA;QACCF,KAAK,GAAG,EAAR;MACA;IACD,CAzBD,CA0BA;IACA;IACA;IA5BA,KA8BA;MACC,IAAIW,KAAJ,EACA;QACCV,OAAO,GAAGS,KAAV;QACAR,QAAQ,GAAGS,KAAX;MACA,CAJD,MAMA;QACCT,QAAQ,GAAGQ,KAAX;MACA,CATF,CAWC;MACA;MACA;MACA;MACA;;;MACA,IAAI,IAAAG,+BAAA,EAAoBJ,KAApB,CAAJ,EACA;QACCT,KAAK,GAAG,IAAAc,kBAAA,EAAML,KAAN,EAAaO,SAAb,EAAwBd,QAAxB,CAAR;MACA,CAHD,MAKA;QACCF,KAAK,GAAG,EAAR;MACA;IACD;EACD,CA5DD,CA6DA;EACA;EA9DA,KA+DK,IAAIiB,SAAS,CAACR,KAAD,CAAb,EACL;IACCT,KAAK,GAAGS,KAAR;;IAEA,IAAIE,KAAJ,EACA;MACCV,OAAO,GAAGS,KAAV;MACAR,QAAQ,GAAGS,KAAX;IACA,CAJD,MAMA;MACCT,QAAQ,GAAGQ,KAAX;IACA;EACD,CAbI,MAcA,MAAM,IAAIQ,SAAJ,CAAc,oFAAd,CAAN;;EAEL,OAAO;IACNlB,KAAK,EAALA,KADM;IAENC,OAAO,EAAPA,OAFM;IAGNC,QAAQ,EAARA;EAHM,CAAP;AAKA,C,CAED;AACA;;AACA;;;AACA,IAAMe,SAAS,GAAG,SAAZA,SAAY,CAAAE,CAAC;EAAA,OAAI,QAAOA,CAAP,MAAa,QAAjB;AAAA,CAAnB"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getNumberType.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getNumberType.test.js new file mode 100644 index 00000000..753f328e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getNumberType.test.js @@ -0,0 +1,81 @@ +"use strict"; + +var _metadataMax = _interopRequireDefault(require("../metadata.max.json")); + +var _metadata = _interopRequireDefault(require("./metadata.js")); + +var _getNumberType2 = _interopRequireDefault(require("./getNumberType.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +function getNumberType() { + for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) { + parameters[_key] = arguments[_key]; + } + + parameters.push(_metadataMax["default"]); + return _getNumberType2["default"].apply(this, parameters); +} + +describe('getNumberType', function () { + it('should infer phone number type MOBILE', function () { + getNumberType('9150000000', 'RU').should.equal('MOBILE'); + getNumberType('7912345678', 'GB').should.equal('MOBILE'); + getNumberType('51234567', 'EE').should.equal('MOBILE'); + }); + it('should infer phone number types', function () { + getNumberType('88005553535', 'RU').should.equal('TOLL_FREE'); + getNumberType('8005553535', 'RU').should.equal('TOLL_FREE'); + getNumberType('4957777777', 'RU').should.equal('FIXED_LINE'); + getNumberType('8030000000', 'RU').should.equal('PREMIUM_RATE'); + getNumberType('2133734253', 'US').should.equal('FIXED_LINE_OR_MOBILE'); + getNumberType('5002345678', 'US').should.equal('PERSONAL_NUMBER'); + }); + it('should work when no country is passed', function () { + getNumberType('+79150000000').should.equal('MOBILE'); + }); + it('should return FIXED_LINE_OR_MOBILE when there is ambiguity', function () {// (no such country in the metadata, therefore no unit test for this `if`) + }); + it('should work in edge cases', function () { + var thrower; // // No metadata + // thrower = () => _getNumberType({ phone: '+78005553535' }) + // thrower.should.throw('`metadata` argument not passed') + // Parsed phone number + + getNumberType({ + phone: '8005553535', + country: 'RU' + }).should.equal('TOLL_FREE'); // Invalid phone number + + type(getNumberType('123', 'RU')).should.equal('undefined'); // Invalid country + + thrower = function thrower() { + return getNumberType({ + phone: '8005553535', + country: 'RUS' + }); + }; + + thrower.should["throw"]('Unknown country'); // Numerical `value` + + thrower = function thrower() { + return getNumberType(89150000000, 'RU'); + }; + + thrower.should["throw"]('A phone number must either be a string or an object of shape { phone, [country] }.'); // When `options` argument is passed. + + getNumberType('8005553535', 'RU', {}).should.equal('TOLL_FREE'); + getNumberType('+78005553535', {}).should.equal('TOLL_FREE'); + getNumberType({ + phone: '8005553535', + country: 'RU' + }, {}).should.equal('TOLL_FREE'); + }); +}); + +function type(something) { + return _typeof(something); +} +//# sourceMappingURL=getNumberType.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getNumberType.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getNumberType.test.js.map new file mode 100644 index 00000000..7d6dc507 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/getNumberType.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getNumberType.test.js","names":["getNumberType","parameters","push","metadata","_getNumberType","apply","describe","it","should","equal","thrower","phone","country","type","something"],"sources":["../source/getNumberType.test.js"],"sourcesContent":["import metadata from '../metadata.max.json' assert { type: 'json' }\r\nimport Metadata from './metadata.js'\r\nimport _getNumberType from './getNumberType.js'\r\n\r\nfunction getNumberType(...parameters) {\r\n\tparameters.push(metadata)\r\n\treturn _getNumberType.apply(this, parameters)\r\n}\r\n\r\ndescribe('getNumberType', () => {\r\n\tit('should infer phone number type MOBILE', () => {\r\n\t\tgetNumberType('9150000000', 'RU').should.equal('MOBILE')\r\n\t\tgetNumberType('7912345678', 'GB').should.equal('MOBILE')\r\n\t\tgetNumberType('51234567', 'EE').should.equal('MOBILE')\r\n\t})\r\n\r\n\tit('should infer phone number types', () => {\r\n\t\tgetNumberType('88005553535', 'RU').should.equal('TOLL_FREE')\r\n\t\tgetNumberType('8005553535', 'RU').should.equal('TOLL_FREE')\r\n\t\tgetNumberType('4957777777', 'RU').should.equal('FIXED_LINE')\r\n\t\tgetNumberType('8030000000', 'RU').should.equal('PREMIUM_RATE')\r\n\r\n\t\tgetNumberType('2133734253', 'US').should.equal('FIXED_LINE_OR_MOBILE')\r\n\t\tgetNumberType('5002345678', 'US').should.equal('PERSONAL_NUMBER')\r\n\t})\r\n\r\n\tit('should work when no country is passed', () => {\r\n\t\tgetNumberType('+79150000000').should.equal('MOBILE')\r\n\t})\r\n\r\n\tit('should return FIXED_LINE_OR_MOBILE when there is ambiguity', () => {\r\n\t\t// (no such country in the metadata, therefore no unit test for this `if`)\r\n\t})\r\n\r\n\tit('should work in edge cases', function() {\r\n\t\tlet thrower\r\n\r\n\t\t// // No metadata\r\n\t\t// thrower = () => _getNumberType({ phone: '+78005553535' })\r\n\t\t// thrower.should.throw('`metadata` argument not passed')\r\n\r\n\t\t// Parsed phone number\r\n\t\tgetNumberType({ phone: '8005553535', country: 'RU' }).should.equal('TOLL_FREE')\r\n\r\n\t\t// Invalid phone number\r\n\t\ttype(getNumberType('123', 'RU')).should.equal('undefined')\r\n\r\n\t\t// Invalid country\r\n\t\tthrower = () => getNumberType({ phone: '8005553535', country: 'RUS' })\r\n\t\tthrower.should.throw('Unknown country')\r\n\r\n\t\t// Numerical `value`\r\n\t\tthrower = () => getNumberType(89150000000, 'RU')\r\n\t\tthrower.should.throw('A phone number must either be a string or an object of shape { phone, [country] }.')\r\n\r\n\t\t// When `options` argument is passed.\r\n\t\tgetNumberType('8005553535', 'RU', {}).should.equal('TOLL_FREE')\r\n\t\tgetNumberType('+78005553535', {}).should.equal('TOLL_FREE')\r\n\t\tgetNumberType({ phone: '8005553535', country: 'RU' }, {}).should.equal('TOLL_FREE')\r\n\t})\r\n})\r\n\r\nfunction type(something) {\r\n\treturn typeof something\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/RFC3966.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/RFC3966.js new file mode 100644 index 00000000..c6b6edb4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/RFC3966.js @@ -0,0 +1,102 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.formatRFC3966 = formatRFC3966; +exports.parseRFC3966 = parseRFC3966; + +var _isViablePhoneNumber = _interopRequireDefault(require("./isViablePhoneNumber.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +// https://www.ietf.org/rfc/rfc3966.txt + +/** + * @param {string} text - Phone URI (RFC 3966). + * @return {object} `{ ?number, ?ext }`. + */ +function parseRFC3966(text) { + var number; + var ext; // Replace "tel:" with "tel=" for parsing convenience. + + text = text.replace(/^tel:/, 'tel='); + + for (var _iterator = _createForOfIteratorHelperLoose(text.split(';')), _step; !(_step = _iterator()).done;) { + var part = _step.value; + + var _part$split = part.split('='), + _part$split2 = _slicedToArray(_part$split, 2), + name = _part$split2[0], + value = _part$split2[1]; + + switch (name) { + case 'tel': + number = value; + break; + + case 'ext': + ext = value; + break; + + case 'phone-context': + // Only "country contexts" are supported. + // "Domain contexts" are ignored. + if (value[0] === '+') { + number = value + number; + } + + break; + } + } // If the phone number is not viable, then abort. + + + if (!(0, _isViablePhoneNumber["default"])(number)) { + return {}; + } + + var result = { + number: number + }; + + if (ext) { + result.ext = ext; + } + + return result; +} +/** + * @param {object} - `{ ?number, ?extension }`. + * @return {string} Phone URI (RFC 3966). + */ + + +function formatRFC3966(_ref) { + var number = _ref.number, + ext = _ref.ext; + + if (!number) { + return ''; + } + + if (number[0] !== '+') { + throw new Error("\"formatRFC3966()\" expects \"number\" to be in E.164 format."); + } + + return "tel:".concat(number).concat(ext ? ';ext=' + ext : ''); +} +//# sourceMappingURL=RFC3966.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/RFC3966.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/RFC3966.js.map new file mode 100644 index 00000000..c28ff685 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/RFC3966.js.map @@ -0,0 +1 @@ +{"version":3,"file":"RFC3966.js","names":["parseRFC3966","text","number","ext","replace","split","part","name","value","isViablePhoneNumber","result","formatRFC3966","Error"],"sources":["../../source/helpers/RFC3966.js"],"sourcesContent":["import isViablePhoneNumber from './isViablePhoneNumber.js'\r\n\r\n// https://www.ietf.org/rfc/rfc3966.txt\r\n\r\n/**\r\n * @param {string} text - Phone URI (RFC 3966).\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\r\nexport function parseRFC3966(text) {\r\n\tlet number\r\n\tlet ext\r\n\r\n\t// Replace \"tel:\" with \"tel=\" for parsing convenience.\r\n\ttext = text.replace(/^tel:/, 'tel=')\r\n\r\n\tfor (const part of text.split(';')) {\r\n\t\tconst [name, value] = part.split('=')\r\n\t\tswitch (name) {\r\n\t\t\tcase 'tel':\r\n\t\t\t\tnumber = value\r\n\t\t\t\tbreak\r\n\t\t\tcase 'ext':\r\n\t\t\t\text = value\r\n\t\t\t\tbreak\r\n\t\t\tcase 'phone-context':\r\n\t\t\t\t// Only \"country contexts\" are supported.\r\n\t\t\t\t// \"Domain contexts\" are ignored.\r\n\t\t\t\tif (value[0] === '+') {\r\n\t\t\t\t\tnumber = value + number\r\n\t\t\t\t}\r\n\t\t\t\tbreak\r\n\t\t}\r\n\t}\r\n\r\n\t// If the phone number is not viable, then abort.\r\n\tif (!isViablePhoneNumber(number)) {\r\n\t\treturn {}\r\n\t}\r\n\r\n\tconst result = { number }\r\n\tif (ext) {\r\n\t\tresult.ext = ext\r\n\t}\r\n\treturn result\r\n}\r\n\r\n/**\r\n * @param {object} - `{ ?number, ?extension }`.\r\n * @return {string} Phone URI (RFC 3966).\r\n */\r\nexport function formatRFC3966({ number, ext }) {\r\n\tif (!number) {\r\n\t\treturn ''\r\n\t}\r\n\tif (number[0] !== '+') {\r\n\t\tthrow new Error(`\"formatRFC3966()\" expects \"number\" to be in E.164 format.`)\r\n\t}\r\n\treturn `tel:${number}${ext ? ';ext=' + ext : ''}`\r\n}"],"mappings":";;;;;;;;AAAA;;;;;;;;;;;;;;;;;;AAEA;;AAEA;AACA;AACA;AACA;AACO,SAASA,YAAT,CAAsBC,IAAtB,EAA4B;EAClC,IAAIC,MAAJ;EACA,IAAIC,GAAJ,CAFkC,CAIlC;;EACAF,IAAI,GAAGA,IAAI,CAACG,OAAL,CAAa,OAAb,EAAsB,MAAtB,CAAP;;EAEA,qDAAmBH,IAAI,CAACI,KAAL,CAAW,GAAX,CAAnB,wCAAoC;IAAA,IAAzBC,IAAyB;;IACnC,kBAAsBA,IAAI,CAACD,KAAL,CAAW,GAAX,CAAtB;IAAA;IAAA,IAAOE,IAAP;IAAA,IAAaC,KAAb;;IACA,QAAQD,IAAR;MACC,KAAK,KAAL;QACCL,MAAM,GAAGM,KAAT;QACA;;MACD,KAAK,KAAL;QACCL,GAAG,GAAGK,KAAN;QACA;;MACD,KAAK,eAAL;QACC;QACA;QACA,IAAIA,KAAK,CAAC,CAAD,CAAL,KAAa,GAAjB,EAAsB;UACrBN,MAAM,GAAGM,KAAK,GAAGN,MAAjB;QACA;;QACD;IAbF;EAeA,CAxBiC,CA0BlC;;;EACA,IAAI,CAAC,IAAAO,+BAAA,EAAoBP,MAApB,CAAL,EAAkC;IACjC,OAAO,EAAP;EACA;;EAED,IAAMQ,MAAM,GAAG;IAAER,MAAM,EAANA;EAAF,CAAf;;EACA,IAAIC,GAAJ,EAAS;IACRO,MAAM,CAACP,GAAP,GAAaA,GAAb;EACA;;EACD,OAAOO,MAAP;AACA;AAED;AACA;AACA;AACA;;;AACO,SAASC,aAAT,OAAwC;EAAA,IAAfT,MAAe,QAAfA,MAAe;EAAA,IAAPC,GAAO,QAAPA,GAAO;;EAC9C,IAAI,CAACD,MAAL,EAAa;IACZ,OAAO,EAAP;EACA;;EACD,IAAIA,MAAM,CAAC,CAAD,CAAN,KAAc,GAAlB,EAAuB;IACtB,MAAM,IAAIU,KAAJ,iEAAN;EACA;;EACD,qBAAcV,MAAd,SAAuBC,GAAG,GAAG,UAAUA,GAAb,GAAmB,EAA7C;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/RFC3966.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/RFC3966.test.js new file mode 100644 index 00000000..351fc055 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/RFC3966.test.js @@ -0,0 +1,41 @@ +"use strict"; + +var _RFC = require("./RFC3966.js"); + +describe('RFC3966', function () { + it('should format', function () { + expect(function () { + return (0, _RFC.formatRFC3966)({ + number: '123' + }); + }).to["throw"]('expects "number" to be in E.164 format'); + (0, _RFC.formatRFC3966)({}).should.equal(''); + (0, _RFC.formatRFC3966)({ + number: '+78005553535' + }).should.equal('tel:+78005553535'); + (0, _RFC.formatRFC3966)({ + number: '+78005553535', + ext: '123' + }).should.equal('tel:+78005553535;ext=123'); + }); + it('should parse', function () { + (0, _RFC.parseRFC3966)('tel:+78005553535').should.deep.equal({ + number: '+78005553535' + }); + (0, _RFC.parseRFC3966)('tel:+78005553535;ext=123').should.deep.equal({ + number: '+78005553535', + ext: '123' + }); // With `phone-context` + + (0, _RFC.parseRFC3966)('tel:8005553535;ext=123;phone-context=+7').should.deep.equal({ + number: '+78005553535', + ext: '123' + }); // "Domain contexts" are ignored + + (0, _RFC.parseRFC3966)('tel:8005553535;ext=123;phone-context=www.leningrad.spb.ru').should.deep.equal({ + number: '8005553535', + ext: '123' + }); + }); +}); +//# sourceMappingURL=RFC3966.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/RFC3966.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/RFC3966.test.js.map new file mode 100644 index 00000000..21eb5a78 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/RFC3966.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"RFC3966.test.js","names":["describe","it","expect","formatRFC3966","number","to","should","equal","ext","parseRFC3966","deep"],"sources":["../../source/helpers/RFC3966.test.js"],"sourcesContent":["import { parseRFC3966, formatRFC3966 } from './RFC3966.js'\r\n\r\ndescribe('RFC3966', () => {\r\n\tit('should format', () => {\r\n\t\texpect(() => formatRFC3966({ number: '123' })).to.throw('expects \"number\" to be in E.164 format')\r\n\t\tformatRFC3966({}).should.equal('')\r\n\t\tformatRFC3966({ number: '+78005553535' }).should.equal('tel:+78005553535')\r\n\t\tformatRFC3966({ number: '+78005553535', ext: '123' }).should.equal('tel:+78005553535;ext=123')\r\n\t})\r\n\r\n\tit('should parse', () => {\r\n\t\tparseRFC3966('tel:+78005553535').should.deep.equal({\r\n\t\t\tnumber : '+78005553535'\r\n\t\t})\r\n\r\n\t\tparseRFC3966('tel:+78005553535;ext=123').should.deep.equal({\r\n\t\t\tnumber : '+78005553535',\r\n\t\t\text : '123'\r\n\t\t})\r\n\r\n\t\t// With `phone-context`\r\n\t\tparseRFC3966('tel:8005553535;ext=123;phone-context=+7').should.deep.equal({\r\n\t\t\tnumber : '+78005553535',\r\n\t\t\text : '123'\r\n\t\t})\r\n\r\n\t\t// \"Domain contexts\" are ignored\r\n\t\tparseRFC3966('tel:8005553535;ext=123;phone-context=www.leningrad.spb.ru').should.deep.equal({\r\n\t\t\tnumber : '8005553535',\r\n\t\t\text : '123'\r\n\t\t})\r\n\t})\r\n})\r\n"],"mappings":";;AAAA;;AAEAA,QAAQ,CAAC,SAAD,EAAY,YAAM;EACzBC,EAAE,CAAC,eAAD,EAAkB,YAAM;IACzBC,MAAM,CAAC;MAAA,OAAM,IAAAC,kBAAA,EAAc;QAAEC,MAAM,EAAE;MAAV,CAAd,CAAN;IAAA,CAAD,CAAN,CAA+CC,EAA/C,UAAwD,wCAAxD;IACA,IAAAF,kBAAA,EAAc,EAAd,EAAkBG,MAAlB,CAAyBC,KAAzB,CAA+B,EAA/B;IACA,IAAAJ,kBAAA,EAAc;MAAEC,MAAM,EAAE;IAAV,CAAd,EAA0CE,MAA1C,CAAiDC,KAAjD,CAAuD,kBAAvD;IACA,IAAAJ,kBAAA,EAAc;MAAEC,MAAM,EAAE,cAAV;MAA0BI,GAAG,EAAE;IAA/B,CAAd,EAAsDF,MAAtD,CAA6DC,KAA7D,CAAmE,0BAAnE;EACA,CALC,CAAF;EAOAN,EAAE,CAAC,cAAD,EAAiB,YAAM;IACxB,IAAAQ,iBAAA,EAAa,kBAAb,EAAiCH,MAAjC,CAAwCI,IAAxC,CAA6CH,KAA7C,CAAmD;MAClDH,MAAM,EAAG;IADyC,CAAnD;IAIA,IAAAK,iBAAA,EAAa,0BAAb,EAAyCH,MAAzC,CAAgDI,IAAhD,CAAqDH,KAArD,CAA2D;MAC1DH,MAAM,EAAG,cADiD;MAE1DI,GAAG,EAAM;IAFiD,CAA3D,EALwB,CAUxB;;IACA,IAAAC,iBAAA,EAAa,yCAAb,EAAwDH,MAAxD,CAA+DI,IAA/D,CAAoEH,KAApE,CAA0E;MACzEH,MAAM,EAAG,cADgE;MAEzEI,GAAG,EAAM;IAFgE,CAA1E,EAXwB,CAgBxB;;IACA,IAAAC,iBAAA,EAAa,2DAAb,EAA0EH,MAA1E,CAAiFI,IAAjF,CAAsFH,KAAtF,CAA4F;MAC3FH,MAAM,EAAG,YADkF;MAE3FI,GAAG,EAAM;IAFkF,CAA5F;EAIA,CArBC,CAAF;AAsBA,CA9BO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/applyInternationalSeparatorStyle.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/applyInternationalSeparatorStyle.js new file mode 100644 index 00000000..e693812c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/applyInternationalSeparatorStyle.js @@ -0,0 +1,43 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = applyInternationalSeparatorStyle; + +var _constants = require("../constants.js"); + +// Removes brackets and replaces dashes with spaces. +// +// E.g. "(999) 111-22-33" -> "999 111 22 33" +// +// For some reason Google's metadata contains ``s with brackets and dashes. +// Meanwhile, there's no single opinion about using punctuation in international phone numbers. +// +// For example, Google's `` for USA is `+1 213-373-4253`. +// And here's a quote from WikiPedia's "North American Numbering Plan" page: +// https://en.wikipedia.org/wiki/North_American_Numbering_Plan +// +// "The country calling code for all countries participating in the NANP is 1. +// In international format, an NANP number should be listed as +1 301 555 01 00, +// where 301 is an area code (Maryland)." +// +// I personally prefer the international format without any punctuation. +// For example, brackets are remnants of the old age, meaning that the +// phone number part in brackets (so called "area code") can be omitted +// if dialing within the same "area". +// And hyphens were clearly introduced for splitting local numbers into memorizable groups. +// For example, remembering "5553535" is difficult but "555-35-35" is much simpler. +// Imagine a man taking a bus from home to work and seeing an ad with a phone number. +// He has a couple of seconds to memorize that number until it passes by. +// If it were spaces instead of hyphens the man wouldn't necessarily get it, +// but with hyphens instead of spaces the grouping is more explicit. +// I personally think that hyphens introduce visual clutter, +// so I prefer replacing them with spaces in international numbers. +// In the modern age all output is done on displays where spaces are clearly distinguishable +// so hyphens can be safely replaced with spaces without losing any legibility. +// +function applyInternationalSeparatorStyle(formattedNumber) { + return formattedNumber.replace(new RegExp("[".concat(_constants.VALID_PUNCTUATION, "]+"), 'g'), ' ').trim(); +} +//# sourceMappingURL=applyInternationalSeparatorStyle.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/applyInternationalSeparatorStyle.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/applyInternationalSeparatorStyle.js.map new file mode 100644 index 00000000..2f89a3c8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/applyInternationalSeparatorStyle.js.map @@ -0,0 +1 @@ +{"version":3,"file":"applyInternationalSeparatorStyle.js","names":["applyInternationalSeparatorStyle","formattedNumber","replace","RegExp","VALID_PUNCTUATION","trim"],"sources":["../../source/helpers/applyInternationalSeparatorStyle.js"],"sourcesContent":["import { VALID_PUNCTUATION } from '../constants.js'\r\n\r\n// Removes brackets and replaces dashes with spaces.\r\n//\r\n// E.g. \"(999) 111-22-33\" -> \"999 111 22 33\"\r\n//\r\n// For some reason Google's metadata contains ``s with brackets and dashes.\r\n// Meanwhile, there's no single opinion about using punctuation in international phone numbers.\r\n//\r\n// For example, Google's `` for USA is `+1 213-373-4253`.\r\n// And here's a quote from WikiPedia's \"North American Numbering Plan\" page:\r\n// https://en.wikipedia.org/wiki/North_American_Numbering_Plan\r\n//\r\n// \"The country calling code for all countries participating in the NANP is 1.\r\n// In international format, an NANP number should be listed as +1 301 555 01 00,\r\n// where 301 is an area code (Maryland).\"\r\n//\r\n// I personally prefer the international format without any punctuation.\r\n// For example, brackets are remnants of the old age, meaning that the\r\n// phone number part in brackets (so called \"area code\") can be omitted\r\n// if dialing within the same \"area\".\r\n// And hyphens were clearly introduced for splitting local numbers into memorizable groups.\r\n// For example, remembering \"5553535\" is difficult but \"555-35-35\" is much simpler.\r\n// Imagine a man taking a bus from home to work and seeing an ad with a phone number.\r\n// He has a couple of seconds to memorize that number until it passes by.\r\n// If it were spaces instead of hyphens the man wouldn't necessarily get it,\r\n// but with hyphens instead of spaces the grouping is more explicit.\r\n// I personally think that hyphens introduce visual clutter,\r\n// so I prefer replacing them with spaces in international numbers.\r\n// In the modern age all output is done on displays where spaces are clearly distinguishable\r\n// so hyphens can be safely replaced with spaces without losing any legibility.\r\n//\r\nexport default function applyInternationalSeparatorStyle(formattedNumber) {\r\n\treturn formattedNumber.replace(new RegExp(`[${VALID_PUNCTUATION}]+`, 'g'), ' ').trim()\r\n}"],"mappings":";;;;;;;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,gCAAT,CAA0CC,eAA1C,EAA2D;EACzE,OAAOA,eAAe,CAACC,OAAhB,CAAwB,IAAIC,MAAJ,YAAeC,4BAAf,SAAsC,GAAtC,CAAxB,EAAoE,GAApE,EAAyEC,IAAzE,EAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/applyInternationalSeparatorStyle.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/applyInternationalSeparatorStyle.test.js new file mode 100644 index 00000000..f0ab8a01 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/applyInternationalSeparatorStyle.test.js @@ -0,0 +1,13 @@ +"use strict"; + +var _applyInternationalSeparatorStyle = _interopRequireDefault(require("./applyInternationalSeparatorStyle.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +describe('applyInternationalSeparatorStyle', function () { + it('should change Google\'s international format style', function () { + (0, _applyInternationalSeparatorStyle["default"])('(xxx) xxx-xx-xx').should.equal('xxx xxx xx xx'); + (0, _applyInternationalSeparatorStyle["default"])('(xxx)xxx').should.equal('xxx xxx'); + }); +}); +//# sourceMappingURL=applyInternationalSeparatorStyle.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/applyInternationalSeparatorStyle.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/applyInternationalSeparatorStyle.test.js.map new file mode 100644 index 00000000..55691401 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/applyInternationalSeparatorStyle.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"applyInternationalSeparatorStyle.test.js","names":["describe","it","applyInternationalSeparatorStyle","should","equal"],"sources":["../../source/helpers/applyInternationalSeparatorStyle.test.js"],"sourcesContent":["import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle.js'\r\n\r\ndescribe('applyInternationalSeparatorStyle', () => {\r\n\tit('should change Google\\'s international format style', () => {\r\n\t\tapplyInternationalSeparatorStyle('(xxx) xxx-xx-xx').should.equal('xxx xxx xx xx')\r\n\t\tapplyInternationalSeparatorStyle('(xxx)xxx').should.equal('xxx xxx')\r\n\t})\r\n})"],"mappings":";;AAAA;;;;AAEAA,QAAQ,CAAC,kCAAD,EAAqC,YAAM;EAClDC,EAAE,CAAC,oDAAD,EAAuD,YAAM;IAC9D,IAAAC,4CAAA,EAAiC,iBAAjC,EAAoDC,MAApD,CAA2DC,KAA3D,CAAiE,eAAjE;IACA,IAAAF,4CAAA,EAAiC,UAAjC,EAA6CC,MAA7C,CAAoDC,KAApD,CAA0D,SAA1D;EACA,CAHC,CAAF;AAIA,CALO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/checkNumberLength.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/checkNumberLength.js new file mode 100644 index 00000000..043f8700 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/checkNumberLength.js @@ -0,0 +1,92 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.checkNumberLengthForType = checkNumberLengthForType; +exports["default"] = checkNumberLength; + +var _mergeArrays = _interopRequireDefault(require("./mergeArrays.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function checkNumberLength(nationalNumber, metadata) { + return checkNumberLengthForType(nationalNumber, undefined, metadata); +} // Checks whether a number is possible for the country based on its length. +// Should only be called for the "new" metadata which has "possible lengths". + + +function checkNumberLengthForType(nationalNumber, type, metadata) { + var type_info = metadata.type(type); // There should always be "" set for every type element. + // This is declared in the XML schema. + // For size efficiency, where a sub-description (e.g. fixed-line) + // has the same "" as the "general description", this is missing, + // so we fall back to the "general description". Where no numbers of the type + // exist at all, there is one possible length (-1) which is guaranteed + // not to match the length of any real phone number. + + var possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths(); // let local_lengths = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal() + // Metadata before version `1.0.18` didn't contain `possible_lengths`. + + if (!possible_lengths) { + return 'IS_POSSIBLE'; + } + + if (type === 'FIXED_LINE_OR_MOBILE') { + // No such country in metadata. + + /* istanbul ignore next */ + if (!metadata.type('FIXED_LINE')) { + // The rare case has been encountered where no fixedLine data is available + // (true for some non-geographic entities), so we just check mobile. + return checkNumberLengthForType(nationalNumber, 'MOBILE', metadata); + } + + var mobile_type = metadata.type('MOBILE'); + + if (mobile_type) { + // Merge the mobile data in if there was any. "Concat" creates a new + // array, it doesn't edit possible_lengths in place, so we don't need a copy. + // Note that when adding the possible lengths from mobile, we have + // to again check they aren't empty since if they are this indicates + // they are the same as the general desc and should be obtained from there. + possible_lengths = (0, _mergeArrays["default"])(possible_lengths, mobile_type.possibleLengths()); // The current list is sorted; we need to merge in the new list and + // re-sort (duplicates are okay). Sorting isn't so expensive because + // the lists are very small. + // if (local_lengths) { + // local_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal()) + // } else { + // local_lengths = mobile_type.possibleLengthsLocal() + // } + } + } // If the type doesn't exist then return 'INVALID_LENGTH'. + else if (type && !type_info) { + return 'INVALID_LENGTH'; + } + + var actual_length = nationalNumber.length; // In `libphonenumber-js` all "local-only" formats are dropped for simplicity. + // // This is safe because there is never an overlap beween the possible lengths + // // and the local-only lengths; this is checked at build time. + // if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0) + // { + // return 'IS_POSSIBLE_LOCAL_ONLY' + // } + + var minimum_length = possible_lengths[0]; + + if (minimum_length === actual_length) { + return 'IS_POSSIBLE'; + } + + if (minimum_length > actual_length) { + return 'TOO_SHORT'; + } + + if (possible_lengths[possible_lengths.length - 1] < actual_length) { + return 'TOO_LONG'; + } // We skip the first element since we've already checked it. + + + return possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH'; +} +//# sourceMappingURL=checkNumberLength.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/checkNumberLength.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/checkNumberLength.js.map new file mode 100644 index 00000000..27ce9514 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/checkNumberLength.js.map @@ -0,0 +1 @@ +{"version":3,"file":"checkNumberLength.js","names":["checkNumberLength","nationalNumber","metadata","checkNumberLengthForType","undefined","type","type_info","possible_lengths","possibleLengths","mobile_type","mergeArrays","actual_length","length","minimum_length","indexOf"],"sources":["../../source/helpers/checkNumberLength.js"],"sourcesContent":["import mergeArrays from './mergeArrays.js'\r\n\r\nexport default function checkNumberLength(nationalNumber, metadata) {\r\n\treturn checkNumberLengthForType(nationalNumber, undefined, metadata)\r\n}\r\n\r\n// Checks whether a number is possible for the country based on its length.\r\n// Should only be called for the \"new\" metadata which has \"possible lengths\".\r\nexport function checkNumberLengthForType(nationalNumber, type, metadata) {\r\n\tconst type_info = metadata.type(type)\r\n\r\n\t// There should always be \"\" set for every type element.\r\n\t// This is declared in the XML schema.\r\n\t// For size efficiency, where a sub-description (e.g. fixed-line)\r\n\t// has the same \"\" as the \"general description\", this is missing,\r\n\t// so we fall back to the \"general description\". Where no numbers of the type\r\n\t// exist at all, there is one possible length (-1) which is guaranteed\r\n\t// not to match the length of any real phone number.\r\n\tlet possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths()\r\n\t// let local_lengths = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal()\r\n\r\n\t// Metadata before version `1.0.18` didn't contain `possible_lengths`.\r\n\tif (!possible_lengths) {\r\n\t\treturn 'IS_POSSIBLE'\r\n\t}\r\n\r\n\tif (type === 'FIXED_LINE_OR_MOBILE') {\r\n\t\t// No such country in metadata.\r\n\t\t/* istanbul ignore next */\r\n\t\tif (!metadata.type('FIXED_LINE')) {\r\n\t\t\t// The rare case has been encountered where no fixedLine data is available\r\n\t\t\t// (true for some non-geographic entities), so we just check mobile.\r\n\t\t\treturn checkNumberLengthForType(nationalNumber, 'MOBILE', metadata)\r\n\t\t}\r\n\r\n\t\tconst mobile_type = metadata.type('MOBILE')\r\n\t\tif (mobile_type) {\r\n\t\t\t// Merge the mobile data in if there was any. \"Concat\" creates a new\r\n\t\t\t// array, it doesn't edit possible_lengths in place, so we don't need a copy.\r\n\t\t\t// Note that when adding the possible lengths from mobile, we have\r\n\t\t\t// to again check they aren't empty since if they are this indicates\r\n\t\t\t// they are the same as the general desc and should be obtained from there.\r\n\t\t\tpossible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths())\r\n\t\t\t// The current list is sorted; we need to merge in the new list and\r\n\t\t\t// re-sort (duplicates are okay). Sorting isn't so expensive because\r\n\t\t\t// the lists are very small.\r\n\r\n\t\t\t// if (local_lengths) {\r\n\t\t\t// \tlocal_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal())\r\n\t\t\t// } else {\r\n\t\t\t// \tlocal_lengths = mobile_type.possibleLengthsLocal()\r\n\t\t\t// }\r\n\t\t}\r\n\t}\r\n\t// If the type doesn't exist then return 'INVALID_LENGTH'.\r\n\telse if (type && !type_info) {\r\n\t\treturn 'INVALID_LENGTH'\r\n\t}\r\n\r\n\tconst actual_length = nationalNumber.length\r\n\r\n\t// In `libphonenumber-js` all \"local-only\" formats are dropped for simplicity.\r\n\t// // This is safe because there is never an overlap beween the possible lengths\r\n\t// // and the local-only lengths; this is checked at build time.\r\n\t// if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0)\r\n\t// {\r\n\t// \treturn 'IS_POSSIBLE_LOCAL_ONLY'\r\n\t// }\r\n\r\n\tconst minimum_length = possible_lengths[0]\r\n\r\n\tif (minimum_length === actual_length) {\r\n\t\treturn 'IS_POSSIBLE'\r\n\t}\r\n\r\n\tif (minimum_length > actual_length) {\r\n\t\treturn 'TOO_SHORT'\r\n\t}\r\n\r\n\tif (possible_lengths[possible_lengths.length - 1] < actual_length) {\r\n\t\treturn 'TOO_LONG'\r\n\t}\r\n\r\n\t// We skip the first element since we've already checked it.\r\n\treturn possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH'\r\n}"],"mappings":";;;;;;;;AAAA;;;;AAEe,SAASA,iBAAT,CAA2BC,cAA3B,EAA2CC,QAA3C,EAAqD;EACnE,OAAOC,wBAAwB,CAACF,cAAD,EAAiBG,SAAjB,EAA4BF,QAA5B,CAA/B;AACA,C,CAED;AACA;;;AACO,SAASC,wBAAT,CAAkCF,cAAlC,EAAkDI,IAAlD,EAAwDH,QAAxD,EAAkE;EACxE,IAAMI,SAAS,GAAGJ,QAAQ,CAACG,IAAT,CAAcA,IAAd,CAAlB,CADwE,CAGxE;EACA;EACA;EACA;EACA;EACA;EACA;;EACA,IAAIE,gBAAgB,GAAGD,SAAS,IAAIA,SAAS,CAACE,eAAV,EAAb,IAA4CN,QAAQ,CAACM,eAAT,EAAnE,CAVwE,CAWxE;EAEA;;EACA,IAAI,CAACD,gBAAL,EAAuB;IACtB,OAAO,aAAP;EACA;;EAED,IAAIF,IAAI,KAAK,sBAAb,EAAqC;IACpC;;IACA;IACA,IAAI,CAACH,QAAQ,CAACG,IAAT,CAAc,YAAd,CAAL,EAAkC;MACjC;MACA;MACA,OAAOF,wBAAwB,CAACF,cAAD,EAAiB,QAAjB,EAA2BC,QAA3B,CAA/B;IACA;;IAED,IAAMO,WAAW,GAAGP,QAAQ,CAACG,IAAT,CAAc,QAAd,CAApB;;IACA,IAAII,WAAJ,EAAiB;MAChB;MACA;MACA;MACA;MACA;MACAF,gBAAgB,GAAG,IAAAG,uBAAA,EAAYH,gBAAZ,EAA8BE,WAAW,CAACD,eAAZ,EAA9B,CAAnB,CANgB,CAOhB;MACA;MACA;MAEA;MACA;MACA;MACA;MACA;IACA;EACD,CA3BD,CA4BA;EA5BA,KA6BK,IAAIH,IAAI,IAAI,CAACC,SAAb,EAAwB;IAC5B,OAAO,gBAAP;EACA;;EAED,IAAMK,aAAa,GAAGV,cAAc,CAACW,MAArC,CAnDwE,CAqDxE;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA,IAAMC,cAAc,GAAGN,gBAAgB,CAAC,CAAD,CAAvC;;EAEA,IAAIM,cAAc,KAAKF,aAAvB,EAAsC;IACrC,OAAO,aAAP;EACA;;EAED,IAAIE,cAAc,GAAGF,aAArB,EAAoC;IACnC,OAAO,WAAP;EACA;;EAED,IAAIJ,gBAAgB,CAACA,gBAAgB,CAACK,MAAjB,GAA0B,CAA3B,CAAhB,GAAgDD,aAApD,EAAmE;IAClE,OAAO,UAAP;EACA,CAzEuE,CA2ExE;;;EACA,OAAOJ,gBAAgB,CAACO,OAAjB,CAAyBH,aAAzB,EAAwC,CAAxC,KAA8C,CAA9C,GAAkD,aAAlD,GAAkE,gBAAzE;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/checkNumberLength.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/checkNumberLength.test.js new file mode 100644 index 00000000..f3164d11 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/checkNumberLength.test.js @@ -0,0 +1,48 @@ +"use strict"; + +var _metadata2 = _interopRequireDefault(require("../metadata.js")); + +var _metadataMax = _interopRequireDefault(require("../../metadata.max.json")); + +var _metadataMin = _interopRequireDefault(require("../../test/metadata/1.0.0/metadata.min.json")); + +var _checkNumberLength = require("./checkNumberLength.js"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +describe('checkNumberLength', function () { + it('should check phone number length', function () { + // Too short. + checkNumberLength('800555353', 'FIXED_LINE', 'RU').should.equal('TOO_SHORT'); // Normal. + + checkNumberLength('8005553535', 'FIXED_LINE', 'RU').should.equal('IS_POSSIBLE'); // Too long. + + checkNumberLength('80055535355', 'FIXED_LINE', 'RU').should.equal('TOO_LONG'); // No such type. + + checkNumberLength('169454850', 'VOIP', 'AC').should.equal('INVALID_LENGTH'); // No such possible length. + + checkNumberLength('1694548', undefined, 'AD').should.equal('INVALID_LENGTH'); // FIXED_LINE_OR_MOBILE + + checkNumberLength('1694548', 'FIXED_LINE_OR_MOBILE', 'AD').should.equal('INVALID_LENGTH'); // No mobile phones. + + checkNumberLength('8123', 'FIXED_LINE_OR_MOBILE', 'TA').should.equal('IS_POSSIBLE'); // No "possible lengths" for "mobile". + + checkNumberLength('81234567', 'FIXED_LINE_OR_MOBILE', 'SZ').should.equal('IS_POSSIBLE'); + }); + it('should work for old metadata', function () { + var _oldMetadata = new _metadata2["default"](_metadataMin["default"]); + + _oldMetadata.country('RU'); + + (0, _checkNumberLength.checkNumberLengthForType)('8005553535', 'FIXED_LINE', _oldMetadata).should.equal('IS_POSSIBLE'); + }); +}); + +function checkNumberLength(number, type, country) { + var _metadata = new _metadata2["default"](_metadataMax["default"]); + + _metadata.country(country); + + return (0, _checkNumberLength.checkNumberLengthForType)(number, type, _metadata); +} +//# sourceMappingURL=checkNumberLength.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/checkNumberLength.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/checkNumberLength.test.js.map new file mode 100644 index 00000000..e744697e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/checkNumberLength.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"checkNumberLength.test.js","names":["describe","it","checkNumberLength","should","equal","undefined","_oldMetadata","Metadata","oldMetadata","country","checkNumberLengthForType","number","type","_metadata","metadata"],"sources":["../../source/helpers/checkNumberLength.test.js"],"sourcesContent":["import Metadata from '../metadata.js'\r\nimport metadata from '../../metadata.max.json' assert { type: 'json' }\r\nimport oldMetadata from '../../test/metadata/1.0.0/metadata.min.json' assert { type: 'json' }\r\n\r\nimport { checkNumberLengthForType } from './checkNumberLength.js'\r\n\r\ndescribe('checkNumberLength', () => {\r\n\tit('should check phone number length', () => {\r\n\t\t// Too short.\r\n\t\tcheckNumberLength('800555353', 'FIXED_LINE', 'RU').should.equal('TOO_SHORT')\r\n\t\t// Normal.\r\n\t\tcheckNumberLength('8005553535', 'FIXED_LINE', 'RU').should.equal('IS_POSSIBLE')\r\n\t\t// Too long.\r\n\t\tcheckNumberLength('80055535355', 'FIXED_LINE', 'RU').should.equal('TOO_LONG')\r\n\r\n\t\t// No such type.\r\n\t\tcheckNumberLength('169454850', 'VOIP', 'AC').should.equal('INVALID_LENGTH')\r\n\t\t// No such possible length.\r\n\t\tcheckNumberLength('1694548', undefined, 'AD').should.equal('INVALID_LENGTH')\r\n\r\n\t\t// FIXED_LINE_OR_MOBILE\r\n\t\tcheckNumberLength('1694548', 'FIXED_LINE_OR_MOBILE', 'AD').should.equal('INVALID_LENGTH')\r\n\t\t// No mobile phones.\r\n\t\tcheckNumberLength('8123', 'FIXED_LINE_OR_MOBILE', 'TA').should.equal('IS_POSSIBLE')\r\n\t\t// No \"possible lengths\" for \"mobile\".\r\n\t\tcheckNumberLength('81234567', 'FIXED_LINE_OR_MOBILE', 'SZ').should.equal('IS_POSSIBLE')\r\n\t})\r\n\r\n\tit('should work for old metadata', function() {\r\n\t\tconst _oldMetadata = new Metadata(oldMetadata)\r\n\t\t_oldMetadata.country('RU')\r\n\t\tcheckNumberLengthForType('8005553535', 'FIXED_LINE', _oldMetadata).should.equal('IS_POSSIBLE')\r\n\t})\r\n})\r\n\r\nfunction checkNumberLength(number, type, country) {\r\n\tconst _metadata = new Metadata(metadata)\r\n\t_metadata.country(country)\r\n\treturn checkNumberLengthForType(number, type, _metadata)\r\n}"],"mappings":";;AAAA;;AACA;;AACA;;AAEA;;;;AAEAA,QAAQ,CAAC,mBAAD,EAAsB,YAAM;EACnCC,EAAE,CAAC,kCAAD,EAAqC,YAAM;IAC5C;IACAC,iBAAiB,CAAC,WAAD,EAAc,YAAd,EAA4B,IAA5B,CAAjB,CAAmDC,MAAnD,CAA0DC,KAA1D,CAAgE,WAAhE,EAF4C,CAG5C;;IACAF,iBAAiB,CAAC,YAAD,EAAe,YAAf,EAA6B,IAA7B,CAAjB,CAAoDC,MAApD,CAA2DC,KAA3D,CAAiE,aAAjE,EAJ4C,CAK5C;;IACAF,iBAAiB,CAAC,aAAD,EAAgB,YAAhB,EAA8B,IAA9B,CAAjB,CAAqDC,MAArD,CAA4DC,KAA5D,CAAkE,UAAlE,EAN4C,CAQ5C;;IACAF,iBAAiB,CAAC,WAAD,EAAc,MAAd,EAAsB,IAAtB,CAAjB,CAA6CC,MAA7C,CAAoDC,KAApD,CAA0D,gBAA1D,EAT4C,CAU5C;;IACAF,iBAAiB,CAAC,SAAD,EAAYG,SAAZ,EAAuB,IAAvB,CAAjB,CAA8CF,MAA9C,CAAqDC,KAArD,CAA2D,gBAA3D,EAX4C,CAa5C;;IACAF,iBAAiB,CAAC,SAAD,EAAY,sBAAZ,EAAoC,IAApC,CAAjB,CAA2DC,MAA3D,CAAkEC,KAAlE,CAAwE,gBAAxE,EAd4C,CAe5C;;IACAF,iBAAiB,CAAC,MAAD,EAAS,sBAAT,EAAiC,IAAjC,CAAjB,CAAwDC,MAAxD,CAA+DC,KAA/D,CAAqE,aAArE,EAhB4C,CAiB5C;;IACAF,iBAAiB,CAAC,UAAD,EAAa,sBAAb,EAAqC,IAArC,CAAjB,CAA4DC,MAA5D,CAAmEC,KAAnE,CAAyE,aAAzE;EACA,CAnBC,CAAF;EAqBAH,EAAE,CAAC,8BAAD,EAAiC,YAAW;IAC7C,IAAMK,YAAY,GAAG,IAAIC,qBAAJ,CAAaC,uBAAb,CAArB;;IACAF,YAAY,CAACG,OAAb,CAAqB,IAArB;;IACA,IAAAC,2CAAA,EAAyB,YAAzB,EAAuC,YAAvC,EAAqDJ,YAArD,EAAmEH,MAAnE,CAA0EC,KAA1E,CAAgF,aAAhF;EACA,CAJC,CAAF;AAKA,CA3BO,CAAR;;AA6BA,SAASF,iBAAT,CAA2BS,MAA3B,EAAmCC,IAAnC,EAAyCH,OAAzC,EAAkD;EACjD,IAAMI,SAAS,GAAG,IAAIN,qBAAJ,CAAaO,uBAAb,CAAlB;;EACAD,SAAS,CAACJ,OAAV,CAAkBA,OAAlB;;EACA,OAAO,IAAAC,2CAAA,EAAyBC,MAAzB,EAAiCC,IAAjC,EAAuCC,SAAvC,CAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extension/createExtensionPattern.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extension/createExtensionPattern.js new file mode 100644 index 00000000..64e21544 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extension/createExtensionPattern.js @@ -0,0 +1,116 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = createExtensionPattern; + +var _constants = require("../../constants.js"); + +// The RFC 3966 format for extensions. +var RFC3966_EXTN_PREFIX = ';ext='; +/** + * Helper method for constructing regular expressions for parsing. Creates + * an expression that captures up to max_length digits. + * @return {string} RegEx pattern to capture extension digits. + */ + +var getExtensionDigitsPattern = function getExtensionDigitsPattern(maxLength) { + return "([".concat(_constants.VALID_DIGITS, "]{1,").concat(maxLength, "})"); +}; +/** + * Helper initialiser method to create the regular-expression pattern to match + * extensions. + * Copy-pasted from Google's `libphonenumber`: + * https://github.com/google/libphonenumber/blob/55b2646ec9393f4d3d6661b9c82ef9e258e8b829/javascript/i18n/phonenumbers/phonenumberutil.js#L759-L766 + * @return {string} RegEx pattern to capture extensions. + */ + + +function createExtensionPattern(purpose) { + // We cap the maximum length of an extension based on the ambiguity of the way + // the extension is prefixed. As per ITU, the officially allowed length for + // extensions is actually 40, but we don't support this since we haven't seen real + // examples and this introduces many false interpretations as the extension labels + // are not standardized. + + /** @type {string} */ + var extLimitAfterExplicitLabel = '20'; + /** @type {string} */ + + var extLimitAfterLikelyLabel = '15'; + /** @type {string} */ + + var extLimitAfterAmbiguousChar = '9'; + /** @type {string} */ + + var extLimitWhenNotSure = '6'; + /** @type {string} */ + + var possibleSeparatorsBetweenNumberAndExtLabel = "[ \xA0\\t,]*"; // Optional full stop (.) or colon, followed by zero or more spaces/tabs/commas. + + /** @type {string} */ + + var possibleCharsAfterExtLabel = "[:\\.\uFF0E]?[ \xA0\\t,-]*"; + /** @type {string} */ + + var optionalExtnSuffix = "#?"; // Here the extension is called out in more explicit way, i.e mentioning it obvious + // patterns like "ext.". + + /** @type {string} */ + + var explicitExtLabels = "(?:e?xt(?:ensi(?:o\u0301?|\xF3))?n?|\uFF45?\uFF58\uFF54\uFF4E?|\u0434\u043E\u0431|anexo)"; // One-character symbols that can be used to indicate an extension, and less + // commonly used or more ambiguous extension labels. + + /** @type {string} */ + + var ambiguousExtLabels = "(?:[x\uFF58#\uFF03~\uFF5E]|int|\uFF49\uFF4E\uFF54)"; // When extension is not separated clearly. + + /** @type {string} */ + + var ambiguousSeparator = "[- ]+"; // This is the same as possibleSeparatorsBetweenNumberAndExtLabel, but not matching + // comma as extension label may have it. + + /** @type {string} */ + + var possibleSeparatorsNumberExtLabelNoComma = "[ \xA0\\t]*"; // ",," is commonly used for auto dialling the extension when connected. First + // comma is matched through possibleSeparatorsBetweenNumberAndExtLabel, so we do + // not repeat it here. Semi-colon works in Iphone and Android also to pop up a + // button with the extension number following. + + /** @type {string} */ + + var autoDiallingAndExtLabelsFound = "(?:,{2}|;)"; + /** @type {string} */ + + var rfcExtn = RFC3966_EXTN_PREFIX + getExtensionDigitsPattern(extLimitAfterExplicitLabel); + /** @type {string} */ + + var explicitExtn = possibleSeparatorsBetweenNumberAndExtLabel + explicitExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterExplicitLabel) + optionalExtnSuffix; + /** @type {string} */ + + var ambiguousExtn = possibleSeparatorsBetweenNumberAndExtLabel + ambiguousExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix; + /** @type {string} */ + + var americanStyleExtnWithSuffix = ambiguousSeparator + getExtensionDigitsPattern(extLimitWhenNotSure) + "#"; + /** @type {string} */ + + var autoDiallingExtn = possibleSeparatorsNumberExtLabelNoComma + autoDiallingAndExtLabelsFound + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterLikelyLabel) + optionalExtnSuffix; + /** @type {string} */ + + var onlyCommasExtn = possibleSeparatorsNumberExtLabelNoComma + "(?:,)+" + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix; // The first regular expression covers RFC 3966 format, where the extension is added + // using ";ext=". The second more generic where extension is mentioned with explicit + // labels like "ext:". In both the above cases we allow more numbers in extension than + // any other extension labels. The third one captures when single character extension + // labels or less commonly used labels are used. In such cases we capture fewer + // extension digits in order to reduce the chance of falsely interpreting two + // numbers beside each other as a number + extension. The fourth one covers the + // special case of American numbers where the extension is written with a hash + // at the end, such as "- 503#". The fifth one is exclusively for extension + // autodialling formats which are used when dialling and in this case we accept longer + // extensions. The last one is more liberal on the number of commas that acts as + // extension labels, so we have a strict cap on the number of digits in such extensions. + + return rfcExtn + "|" + explicitExtn + "|" + ambiguousExtn + "|" + americanStyleExtnWithSuffix + "|" + autoDiallingExtn + "|" + onlyCommasExtn; +} +//# sourceMappingURL=createExtensionPattern.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extension/createExtensionPattern.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extension/createExtensionPattern.js.map new file mode 100644 index 00000000..d3ee864d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extension/createExtensionPattern.js.map @@ -0,0 +1 @@ +{"version":3,"file":"createExtensionPattern.js","names":["RFC3966_EXTN_PREFIX","getExtensionDigitsPattern","maxLength","VALID_DIGITS","createExtensionPattern","purpose","extLimitAfterExplicitLabel","extLimitAfterLikelyLabel","extLimitAfterAmbiguousChar","extLimitWhenNotSure","possibleSeparatorsBetweenNumberAndExtLabel","possibleCharsAfterExtLabel","optionalExtnSuffix","explicitExtLabels","ambiguousExtLabels","ambiguousSeparator","possibleSeparatorsNumberExtLabelNoComma","autoDiallingAndExtLabelsFound","rfcExtn","explicitExtn","ambiguousExtn","americanStyleExtnWithSuffix","autoDiallingExtn","onlyCommasExtn"],"sources":["../../../source/helpers/extension/createExtensionPattern.js"],"sourcesContent":["import { VALID_DIGITS } from '../../constants.js'\r\n\r\n// The RFC 3966 format for extensions.\r\nconst RFC3966_EXTN_PREFIX = ';ext='\r\n\r\n/**\r\n * Helper method for constructing regular expressions for parsing. Creates\r\n * an expression that captures up to max_length digits.\r\n * @return {string} RegEx pattern to capture extension digits.\r\n */\r\nconst getExtensionDigitsPattern = (maxLength) => `([${VALID_DIGITS}]{1,${maxLength}})`\r\n\r\n/**\r\n * Helper initialiser method to create the regular-expression pattern to match\r\n * extensions.\r\n * Copy-pasted from Google's `libphonenumber`:\r\n * https://github.com/google/libphonenumber/blob/55b2646ec9393f4d3d6661b9c82ef9e258e8b829/javascript/i18n/phonenumbers/phonenumberutil.js#L759-L766\r\n * @return {string} RegEx pattern to capture extensions.\r\n */\r\nexport default function createExtensionPattern(purpose) {\r\n\t// We cap the maximum length of an extension based on the ambiguity of the way\r\n\t// the extension is prefixed. As per ITU, the officially allowed length for\r\n\t// extensions is actually 40, but we don't support this since we haven't seen real\r\n\t// examples and this introduces many false interpretations as the extension labels\r\n\t// are not standardized.\r\n\t/** @type {string} */\r\n\tvar extLimitAfterExplicitLabel = '20';\r\n\t/** @type {string} */\r\n\tvar extLimitAfterLikelyLabel = '15';\r\n\t/** @type {string} */\r\n\tvar extLimitAfterAmbiguousChar = '9';\r\n\t/** @type {string} */\r\n\tvar extLimitWhenNotSure = '6';\r\n\r\n\t/** @type {string} */\r\n\tvar possibleSeparatorsBetweenNumberAndExtLabel = \"[ \\u00A0\\\\t,]*\";\r\n\t// Optional full stop (.) or colon, followed by zero or more spaces/tabs/commas.\r\n\t/** @type {string} */\r\n\tvar possibleCharsAfterExtLabel = \"[:\\\\.\\uFF0E]?[ \\u00A0\\\\t,-]*\";\r\n\t/** @type {string} */\r\n\tvar optionalExtnSuffix = \"#?\";\r\n\r\n\t// Here the extension is called out in more explicit way, i.e mentioning it obvious\r\n\t// patterns like \"ext.\".\r\n\t/** @type {string} */\r\n\tvar explicitExtLabels =\r\n\t \"(?:e?xt(?:ensi(?:o\\u0301?|\\u00F3))?n?|\\uFF45?\\uFF58\\uFF54\\uFF4E?|\\u0434\\u043E\\u0431|anexo)\";\r\n\t// One-character symbols that can be used to indicate an extension, and less\r\n\t// commonly used or more ambiguous extension labels.\r\n\t/** @type {string} */\r\n\tvar ambiguousExtLabels = \"(?:[x\\uFF58#\\uFF03~\\uFF5E]|int|\\uFF49\\uFF4E\\uFF54)\";\r\n\t// When extension is not separated clearly.\r\n\t/** @type {string} */\r\n\tvar ambiguousSeparator = \"[- ]+\";\r\n\t// This is the same as possibleSeparatorsBetweenNumberAndExtLabel, but not matching\r\n\t// comma as extension label may have it.\r\n\t/** @type {string} */\r\n\tvar possibleSeparatorsNumberExtLabelNoComma = \"[ \\u00A0\\\\t]*\";\r\n\t// \",,\" is commonly used for auto dialling the extension when connected. First\r\n\t// comma is matched through possibleSeparatorsBetweenNumberAndExtLabel, so we do\r\n\t// not repeat it here. Semi-colon works in Iphone and Android also to pop up a\r\n\t// button with the extension number following.\r\n\t/** @type {string} */\r\n\tvar autoDiallingAndExtLabelsFound = \"(?:,{2}|;)\";\r\n\r\n\t/** @type {string} */\r\n\tvar rfcExtn = RFC3966_EXTN_PREFIX\r\n\t + getExtensionDigitsPattern(extLimitAfterExplicitLabel);\r\n\t/** @type {string} */\r\n\tvar explicitExtn = possibleSeparatorsBetweenNumberAndExtLabel + explicitExtLabels\r\n\t + possibleCharsAfterExtLabel\r\n\t + getExtensionDigitsPattern(extLimitAfterExplicitLabel)\r\n\t + optionalExtnSuffix;\r\n\t/** @type {string} */\r\n\tvar ambiguousExtn = possibleSeparatorsBetweenNumberAndExtLabel + ambiguousExtLabels\r\n\t + possibleCharsAfterExtLabel\r\n\t+ getExtensionDigitsPattern(extLimitAfterAmbiguousChar)\r\n\t+ optionalExtnSuffix;\r\n\t/** @type {string} */\r\n\tvar americanStyleExtnWithSuffix = ambiguousSeparator\r\n\t+ getExtensionDigitsPattern(extLimitWhenNotSure) + \"#\";\r\n\r\n\t/** @type {string} */\r\n\tvar autoDiallingExtn = possibleSeparatorsNumberExtLabelNoComma\r\n\t + autoDiallingAndExtLabelsFound + possibleCharsAfterExtLabel\r\n\t + getExtensionDigitsPattern(extLimitAfterLikelyLabel)\r\n\t+ optionalExtnSuffix;\r\n\t/** @type {string} */\r\n\tvar onlyCommasExtn = possibleSeparatorsNumberExtLabelNoComma\r\n\t + \"(?:,)+\" + possibleCharsAfterExtLabel\r\n\t + getExtensionDigitsPattern(extLimitAfterAmbiguousChar)\r\n\t + optionalExtnSuffix;\r\n\r\n\t// The first regular expression covers RFC 3966 format, where the extension is added\r\n\t// using \";ext=\". The second more generic where extension is mentioned with explicit\r\n\t// labels like \"ext:\". In both the above cases we allow more numbers in extension than\r\n\t// any other extension labels. The third one captures when single character extension\r\n\t// labels or less commonly used labels are used. In such cases we capture fewer\r\n\t// extension digits in order to reduce the chance of falsely interpreting two\r\n\t// numbers beside each other as a number + extension. The fourth one covers the\r\n\t// special case of American numbers where the extension is written with a hash\r\n\t// at the end, such as \"- 503#\". The fifth one is exclusively for extension\r\n\t// autodialling formats which are used when dialling and in this case we accept longer\r\n\t// extensions. The last one is more liberal on the number of commas that acts as\r\n\t// extension labels, so we have a strict cap on the number of digits in such extensions.\r\n\treturn rfcExtn + \"|\"\r\n\t + explicitExtn + \"|\"\r\n\t + ambiguousExtn + \"|\"\r\n\t + americanStyleExtnWithSuffix + \"|\"\r\n\t + autoDiallingExtn + \"|\"\r\n\t + onlyCommasExtn;\r\n}"],"mappings":";;;;;;;AAAA;;AAEA;AACA,IAAMA,mBAAmB,GAAG,OAA5B;AAEA;AACA;AACA;AACA;AACA;;AACA,IAAMC,yBAAyB,GAAG,SAA5BA,yBAA4B,CAACC,SAAD;EAAA,mBAAoBC,uBAApB,iBAAuCD,SAAvC;AAAA,CAAlC;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACe,SAASE,sBAAT,CAAgCC,OAAhC,EAAyC;EACvD;EACA;EACA;EACA;EACA;;EACA;EACA,IAAIC,0BAA0B,GAAG,IAAjC;EACA;;EACA,IAAIC,wBAAwB,GAAG,IAA/B;EACA;;EACA,IAAIC,0BAA0B,GAAG,GAAjC;EACA;;EACA,IAAIC,mBAAmB,GAAG,GAA1B;EAEA;;EACA,IAAIC,0CAA0C,GAAG,cAAjD,CAhBuD,CAiBvD;;EACA;;EACA,IAAIC,0BAA0B,GAAG,4BAAjC;EACA;;EACA,IAAIC,kBAAkB,GAAG,IAAzB,CArBuD,CAuBvD;EACA;;EACA;;EACA,IAAIC,iBAAiB,GACnB,0FADF,CA1BuD,CA4BvD;EACA;;EACA;;EACA,IAAIC,kBAAkB,GAAG,oDAAzB,CA/BuD,CAgCvD;;EACA;;EACA,IAAIC,kBAAkB,GAAG,OAAzB,CAlCuD,CAmCvD;EACA;;EACA;;EACA,IAAIC,uCAAuC,GAAG,aAA9C,CAtCuD,CAuCvD;EACA;EACA;EACA;;EACA;;EACA,IAAIC,6BAA6B,GAAG,YAApC;EAEA;;EACA,IAAIC,OAAO,GAAGlB,mBAAmB,GAC1BC,yBAAyB,CAACK,0BAAD,CADhC;EAEA;;EACA,IAAIa,YAAY,GAAGT,0CAA0C,GAAGG,iBAA7C,GACZF,0BADY,GAEZV,yBAAyB,CAACK,0BAAD,CAFb,GAGZM,kBAHP;EAIA;;EACA,IAAIQ,aAAa,GAAGV,0CAA0C,GAAGI,kBAA7C,GACbH,0BADa,GAElBV,yBAAyB,CAACO,0BAAD,CAFP,GAGlBI,kBAHF;EAIA;;EACA,IAAIS,2BAA2B,GAAGN,kBAAkB,GAClDd,yBAAyB,CAACQ,mBAAD,CADO,GACiB,GADnD;EAGA;;EACA,IAAIa,gBAAgB,GAAGN,uCAAuC,GACvDC,6BADgB,GACgBN,0BADhB,GAEhBV,yBAAyB,CAACM,wBAAD,CAFT,GAGrBK,kBAHF;EAIA;;EACA,IAAIW,cAAc,GAAGP,uCAAuC,GACtD,QADe,GACJL,0BADI,GAEfV,yBAAyB,CAACO,0BAAD,CAFV,GAGfI,kBAHN,CArEuD,CA0EvD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EACA,OAAOM,OAAO,GAAG,GAAV,GACEC,YADF,GACiB,GADjB,GAEEC,aAFF,GAEkB,GAFlB,GAGEC,2BAHF,GAGgC,GAHhC,GAIEC,gBAJF,GAIqB,GAJrB,GAKEC,cALT;AAMA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extension/extractExtension.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extension/extractExtension.js new file mode 100644 index 00000000..ebe65368 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extension/extractExtension.js @@ -0,0 +1,42 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = extractExtension; + +var _createExtensionPattern = _interopRequireDefault(require("./createExtensionPattern.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +// Regexp of all known extension prefixes used by different regions followed by +// 1 or more valid digits, for use when parsing. +var EXTN_PATTERN = new RegExp('(?:' + (0, _createExtensionPattern["default"])() + ')$', 'i'); // Strips any extension (as in, the part of the number dialled after the call is +// connected, usually indicated with extn, ext, x or similar) from the end of +// the number, and returns it. + +function extractExtension(number) { + var start = number.search(EXTN_PATTERN); + + if (start < 0) { + return {}; + } // If we find a potential extension, and the number preceding this is a viable + // number, we assume it is an extension. + + + var numberWithoutExtension = number.slice(0, start); + var matches = number.match(EXTN_PATTERN); + var i = 1; + + while (i < matches.length) { + if (matches[i]) { + return { + number: numberWithoutExtension, + ext: matches[i] + }; + } + + i++; + } +} +//# sourceMappingURL=extractExtension.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extension/extractExtension.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extension/extractExtension.js.map new file mode 100644 index 00000000..74a6d2c7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extension/extractExtension.js.map @@ -0,0 +1 @@ +{"version":3,"file":"extractExtension.js","names":["EXTN_PATTERN","RegExp","createExtensionPattern","extractExtension","number","start","search","numberWithoutExtension","slice","matches","match","i","length","ext"],"sources":["../../../source/helpers/extension/extractExtension.js"],"sourcesContent":["import createExtensionPattern from './createExtensionPattern.js'\r\n\r\n// Regexp of all known extension prefixes used by different regions followed by\r\n// 1 or more valid digits, for use when parsing.\r\nconst EXTN_PATTERN = new RegExp('(?:' + createExtensionPattern() + ')$', 'i')\r\n\r\n// Strips any extension (as in, the part of the number dialled after the call is\r\n// connected, usually indicated with extn, ext, x or similar) from the end of\r\n// the number, and returns it.\r\nexport default function extractExtension(number) {\r\n\tconst start = number.search(EXTN_PATTERN)\r\n\tif (start < 0) {\r\n\t\treturn {}\r\n\t}\r\n\t// If we find a potential extension, and the number preceding this is a viable\r\n\t// number, we assume it is an extension.\r\n\tconst numberWithoutExtension = number.slice(0, start)\r\n\tconst matches = number.match(EXTN_PATTERN)\r\n\tlet i = 1\r\n\twhile (i < matches.length) {\r\n\t\tif (matches[i]) {\r\n\t\t\treturn {\r\n\t\t\t\tnumber: numberWithoutExtension,\r\n\t\t\t\text: matches[i]\r\n\t\t\t}\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n}"],"mappings":";;;;;;;AAAA;;;;AAEA;AACA;AACA,IAAMA,YAAY,GAAG,IAAIC,MAAJ,CAAW,QAAQ,IAAAC,kCAAA,GAAR,GAAmC,IAA9C,EAAoD,GAApD,CAArB,C,CAEA;AACA;AACA;;AACe,SAASC,gBAAT,CAA0BC,MAA1B,EAAkC;EAChD,IAAMC,KAAK,GAAGD,MAAM,CAACE,MAAP,CAAcN,YAAd,CAAd;;EACA,IAAIK,KAAK,GAAG,CAAZ,EAAe;IACd,OAAO,EAAP;EACA,CAJ+C,CAKhD;EACA;;;EACA,IAAME,sBAAsB,GAAGH,MAAM,CAACI,KAAP,CAAa,CAAb,EAAgBH,KAAhB,CAA/B;EACA,IAAMI,OAAO,GAAGL,MAAM,CAACM,KAAP,CAAaV,YAAb,CAAhB;EACA,IAAIW,CAAC,GAAG,CAAR;;EACA,OAAOA,CAAC,GAAGF,OAAO,CAACG,MAAnB,EAA2B;IAC1B,IAAIH,OAAO,CAACE,CAAD,CAAX,EAAgB;MACf,OAAO;QACNP,MAAM,EAAEG,sBADF;QAENM,GAAG,EAAEJ,OAAO,CAACE,CAAD;MAFN,CAAP;IAIA;;IACDA,CAAC;EACD;AACD"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractCountryCallingCode.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractCountryCallingCode.js new file mode 100644 index 00000000..5483f024 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractCountryCallingCode.js @@ -0,0 +1,114 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = extractCountryCallingCode; + +var _stripIddPrefix = _interopRequireDefault(require("./stripIddPrefix.js")); + +var _extractCountryCallingCodeFromInternationalNumberWithoutPlusSign = _interopRequireDefault(require("./extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js")); + +var _metadata = _interopRequireDefault(require("../metadata.js")); + +var _constants = require("../constants.js"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +/** + * Converts a phone number digits (possibly with a `+`) + * into a calling code and the rest phone number digits. + * The "rest phone number digits" could include + * a national prefix, carrier code, and national + * (significant) number. + * @param {string} number — Phone number digits (possibly with a `+`). + * @param {string} [country] — Default country. + * @param {string} [callingCode] — Default calling code (some phone numbering plans are non-geographic). + * @param {object} metadata + * @return {object} `{ countryCallingCode: string?, number: string }` + * @example + * // Returns `{ countryCallingCode: "1", number: "2133734253" }`. + * extractCountryCallingCode('2133734253', 'US', null, metadata) + * extractCountryCallingCode('2133734253', null, '1', metadata) + * extractCountryCallingCode('+12133734253', null, null, metadata) + * extractCountryCallingCode('+12133734253', 'RU', null, metadata) + */ +function extractCountryCallingCode(number, country, callingCode, metadata) { + if (!number) { + return {}; + } // If this is not an international phone number, + // then either extract an "IDD" prefix, or extract a + // country calling code from a number by autocorrecting it + // by prepending a leading `+` in cases when it starts + // with the country calling code. + // https://wikitravel.org/en/International_dialling_prefix + // https://github.com/catamphetamine/libphonenumber-js/issues/376 + + + if (number[0] !== '+') { + // Convert an "out-of-country" dialing phone number + // to a proper international phone number. + var numberWithoutIDD = (0, _stripIddPrefix["default"])(number, country, callingCode, metadata); // If an IDD prefix was stripped then + // convert the number to international one + // for subsequent parsing. + + if (numberWithoutIDD && numberWithoutIDD !== number) { + number = '+' + numberWithoutIDD; + } else { + // Check to see if the number starts with the country calling code + // for the default country. If so, we remove the country calling code, + // and do some checks on the validity of the number before and after. + // https://github.com/catamphetamine/libphonenumber-js/issues/376 + if (country || callingCode) { + var _extractCountryCallin = (0, _extractCountryCallingCodeFromInternationalNumberWithoutPlusSign["default"])(number, country, callingCode, metadata), + countryCallingCode = _extractCountryCallin.countryCallingCode, + shorterNumber = _extractCountryCallin.number; + + if (countryCallingCode) { + return { + countryCallingCode: countryCallingCode, + number: shorterNumber + }; + } + } + + return { + number: number + }; + } + } // Fast abortion: country codes do not begin with a '0' + + + if (number[1] === '0') { + return {}; + } + + metadata = new _metadata["default"](metadata); // The thing with country phone codes + // is that they are orthogonal to each other + // i.e. there's no such country phone code A + // for which country phone code B exists + // where B starts with A. + // Therefore, while scanning digits, + // if a valid country code is found, + // that means that it is the country code. + // + + var i = 2; + + while (i - 1 <= _constants.MAX_LENGTH_COUNTRY_CODE && i <= number.length) { + var _countryCallingCode = number.slice(1, i); + + if (metadata.hasCallingCode(_countryCallingCode)) { + metadata.selectNumberingPlan(_countryCallingCode); + return { + countryCallingCode: _countryCallingCode, + number: number.slice(i) + }; + } + + i++; + } + + return {}; +} +//# sourceMappingURL=extractCountryCallingCode.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractCountryCallingCode.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractCountryCallingCode.js.map new file mode 100644 index 00000000..217a0223 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractCountryCallingCode.js.map @@ -0,0 +1 @@ +{"version":3,"file":"extractCountryCallingCode.js","names":["extractCountryCallingCode","number","country","callingCode","metadata","numberWithoutIDD","stripIddPrefix","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","countryCallingCode","shorterNumber","Metadata","i","MAX_LENGTH_COUNTRY_CODE","length","slice","hasCallingCode","selectNumberingPlan"],"sources":["../../source/helpers/extractCountryCallingCode.js"],"sourcesContent":["import stripIddPrefix from './stripIddPrefix.js'\r\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js'\r\nimport Metadata from '../metadata.js'\r\nimport { MAX_LENGTH_COUNTRY_CODE } from '../constants.js'\r\n\r\n/**\r\n * Converts a phone number digits (possibly with a `+`)\r\n * into a calling code and the rest phone number digits.\r\n * The \"rest phone number digits\" could include\r\n * a national prefix, carrier code, and national\r\n * (significant) number.\r\n * @param {string} number — Phone number digits (possibly with a `+`).\r\n * @param {string} [country] — Default country.\r\n * @param {string} [callingCode] — Default calling code (some phone numbering plans are non-geographic).\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`\r\n * @example\r\n * // Returns `{ countryCallingCode: \"1\", number: \"2133734253\" }`.\r\n * extractCountryCallingCode('2133734253', 'US', null, metadata)\r\n * extractCountryCallingCode('2133734253', null, '1', metadata)\r\n * extractCountryCallingCode('+12133734253', null, null, metadata)\r\n * extractCountryCallingCode('+12133734253', 'RU', null, metadata)\r\n */\r\nexport default function extractCountryCallingCode(\r\n\tnumber,\r\n\tcountry,\r\n\tcallingCode,\r\n\tmetadata\r\n) {\r\n\tif (!number) {\r\n\t\treturn {}\r\n\t}\r\n\r\n\t// If this is not an international phone number,\r\n\t// then either extract an \"IDD\" prefix, or extract a\r\n\t// country calling code from a number by autocorrecting it\r\n\t// by prepending a leading `+` in cases when it starts\r\n\t// with the country calling code.\r\n\t// https://wikitravel.org/en/International_dialling_prefix\r\n\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\tif (number[0] !== '+') {\r\n\t\t// Convert an \"out-of-country\" dialing phone number\r\n\t\t// to a proper international phone number.\r\n\t\tconst numberWithoutIDD = stripIddPrefix(number, country, callingCode, metadata)\r\n\t\t// If an IDD prefix was stripped then\r\n\t\t// convert the number to international one\r\n\t\t// for subsequent parsing.\r\n\t\tif (numberWithoutIDD && numberWithoutIDD !== number) {\r\n\t\t\tnumber = '+' + numberWithoutIDD\r\n\t\t} else {\r\n\t\t\t// Check to see if the number starts with the country calling code\r\n\t\t\t// for the default country. If so, we remove the country calling code,\r\n\t\t\t// and do some checks on the validity of the number before and after.\r\n\t\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\t\t\tif (country || callingCode) {\r\n\t\t\t\tconst {\r\n\t\t\t\t\tcountryCallingCode,\r\n\t\t\t\t\tnumber: shorterNumber\r\n\t\t\t\t} = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\r\n\t\t\t\t\tnumber,\r\n\t\t\t\t\tcountry,\r\n\t\t\t\t\tcallingCode,\r\n\t\t\t\t\tmetadata\r\n\t\t\t\t)\r\n\t\t\t\tif (countryCallingCode) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tcountryCallingCode,\r\n\t\t\t\t\t\tnumber: shorterNumber\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn { number }\r\n\t\t}\r\n\t}\r\n\r\n\t// Fast abortion: country codes do not begin with a '0'\r\n\tif (number[1] === '0') {\r\n\t\treturn {}\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\t// The thing with country phone codes\r\n\t// is that they are orthogonal to each other\r\n\t// i.e. there's no such country phone code A\r\n\t// for which country phone code B exists\r\n\t// where B starts with A.\r\n\t// Therefore, while scanning digits,\r\n\t// if a valid country code is found,\r\n\t// that means that it is the country code.\r\n\t//\r\n\tlet i = 2\r\n\twhile (i - 1 <= MAX_LENGTH_COUNTRY_CODE && i <= number.length) {\r\n\t\tconst countryCallingCode = number.slice(1, i)\r\n\t\tif (metadata.hasCallingCode(countryCallingCode)) {\r\n\t\t\tmetadata.selectNumberingPlan(countryCallingCode)\r\n\t\t\treturn {\r\n\t\t\t\tcountryCallingCode,\r\n\t\t\t\tnumber: number.slice(i)\r\n\t\t\t}\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\r\n\treturn {}\r\n}"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,yBAAT,CACdC,MADc,EAEdC,OAFc,EAGdC,WAHc,EAIdC,QAJc,EAKb;EACD,IAAI,CAACH,MAAL,EAAa;IACZ,OAAO,EAAP;EACA,CAHA,CAKD;EACA;EACA;EACA;EACA;EACA;EACA;;;EACA,IAAIA,MAAM,CAAC,CAAD,CAAN,KAAc,GAAlB,EAAuB;IACtB;IACA;IACA,IAAMI,gBAAgB,GAAG,IAAAC,0BAAA,EAAeL,MAAf,EAAuBC,OAAvB,EAAgCC,WAAhC,EAA6CC,QAA7C,CAAzB,CAHsB,CAItB;IACA;IACA;;IACA,IAAIC,gBAAgB,IAAIA,gBAAgB,KAAKJ,MAA7C,EAAqD;MACpDA,MAAM,GAAG,MAAMI,gBAAf;IACA,CAFD,MAEO;MACN;MACA;MACA;MACA;MACA,IAAIH,OAAO,IAAIC,WAAf,EAA4B;QAC3B,4BAGI,IAAAI,2EAAA,EACHN,MADG,EAEHC,OAFG,EAGHC,WAHG,EAIHC,QAJG,CAHJ;QAAA,IACCI,kBADD,yBACCA,kBADD;QAAA,IAESC,aAFT,yBAECR,MAFD;;QASA,IAAIO,kBAAJ,EAAwB;UACvB,OAAO;YACNA,kBAAkB,EAAlBA,kBADM;YAENP,MAAM,EAAEQ;UAFF,CAAP;QAIA;MACD;;MACD,OAAO;QAAER,MAAM,EAANA;MAAF,CAAP;IACA;EACD,CA7CA,CA+CD;;;EACA,IAAIA,MAAM,CAAC,CAAD,CAAN,KAAc,GAAlB,EAAuB;IACtB,OAAO,EAAP;EACA;;EAEDG,QAAQ,GAAG,IAAIM,oBAAJ,CAAaN,QAAb,CAAX,CApDC,CAsDD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EACA,IAAIO,CAAC,GAAG,CAAR;;EACA,OAAOA,CAAC,GAAG,CAAJ,IAASC,kCAAT,IAAoCD,CAAC,IAAIV,MAAM,CAACY,MAAvD,EAA+D;IAC9D,IAAML,mBAAkB,GAAGP,MAAM,CAACa,KAAP,CAAa,CAAb,EAAgBH,CAAhB,CAA3B;;IACA,IAAIP,QAAQ,CAACW,cAAT,CAAwBP,mBAAxB,CAAJ,EAAiD;MAChDJ,QAAQ,CAACY,mBAAT,CAA6BR,mBAA7B;MACA,OAAO;QACNA,kBAAkB,EAAlBA,mBADM;QAENP,MAAM,EAAEA,MAAM,CAACa,KAAP,CAAaH,CAAb;MAFF,CAAP;IAIA;;IACDA,CAAC;EACD;;EAED,OAAO,EAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractCountryCallingCode.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractCountryCallingCode.test.js new file mode 100644 index 00000000..817b4830 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractCountryCallingCode.test.js @@ -0,0 +1,22 @@ +"use strict"; + +var _extractCountryCallingCode = _interopRequireDefault(require("./extractCountryCallingCode.js")); + +var _metadataMin = _interopRequireDefault(require("../../metadata.min.json")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +describe('extractCountryCallingCode', function () { + it('should extract country calling code from a number', function () { + (0, _extractCountryCallingCode["default"])('+78005553535', null, null, _metadataMin["default"]).should.deep.equal({ + countryCallingCode: '7', + number: '8005553535' + }); + (0, _extractCountryCallingCode["default"])('+7800', null, null, _metadataMin["default"]).should.deep.equal({ + countryCallingCode: '7', + number: '800' + }); + (0, _extractCountryCallingCode["default"])('', null, null, _metadataMin["default"]).should.deep.equal({}); + }); +}); +//# sourceMappingURL=extractCountryCallingCode.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractCountryCallingCode.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractCountryCallingCode.test.js.map new file mode 100644 index 00000000..094e8eca --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractCountryCallingCode.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"extractCountryCallingCode.test.js","names":["describe","it","extractCountryCallingCode","metadata","should","deep","equal","countryCallingCode","number"],"sources":["../../source/helpers/extractCountryCallingCode.test.js"],"sourcesContent":["import extractCountryCallingCode from './extractCountryCallingCode.js'\r\nimport metadata from '../../metadata.min.json' assert { type: 'json' }\r\n\r\ndescribe('extractCountryCallingCode', () => {\r\n\tit('should extract country calling code from a number', () => {\r\n\t\textractCountryCallingCode('+78005553535', null, null, metadata).should.deep.equal({\r\n\t\t\tcountryCallingCode: '7',\r\n\t\t\tnumber: '8005553535'\r\n\t\t})\r\n\r\n\t\textractCountryCallingCode('+7800', null, null, metadata).should.deep.equal({\r\n\t\t\tcountryCallingCode: '7',\r\n\t\t\tnumber: '800'\r\n\t\t})\r\n\r\n\t\textractCountryCallingCode('', null, null, metadata).should.deep.equal({})\r\n\t})\r\n})\r\n"],"mappings":";;AAAA;;AACA;;;;AAEAA,QAAQ,CAAC,2BAAD,EAA8B,YAAM;EAC3CC,EAAE,CAAC,mDAAD,EAAsD,YAAM;IAC7D,IAAAC,qCAAA,EAA0B,cAA1B,EAA0C,IAA1C,EAAgD,IAAhD,EAAsDC,uBAAtD,EAAgEC,MAAhE,CAAuEC,IAAvE,CAA4EC,KAA5E,CAAkF;MACjFC,kBAAkB,EAAE,GAD6D;MAEjFC,MAAM,EAAE;IAFyE,CAAlF;IAKA,IAAAN,qCAAA,EAA0B,OAA1B,EAAmC,IAAnC,EAAyC,IAAzC,EAA+CC,uBAA/C,EAAyDC,MAAzD,CAAgEC,IAAhE,CAAqEC,KAArE,CAA2E;MAC1EC,kBAAkB,EAAE,GADsD;MAE1EC,MAAM,EAAE;IAFkE,CAA3E;IAKA,IAAAN,qCAAA,EAA0B,EAA1B,EAA8B,IAA9B,EAAoC,IAApC,EAA0CC,uBAA1C,EAAoDC,MAApD,CAA2DC,IAA3D,CAAgEC,KAAhE,CAAsE,EAAtE;EACA,CAZC,CAAF;AAaA,CAdO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js new file mode 100644 index 00000000..548932f4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js @@ -0,0 +1,63 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign; + +var _metadata = _interopRequireDefault(require("../metadata.js")); + +var _matchesEntirely = _interopRequireDefault(require("./matchesEntirely.js")); + +var _extractNationalNumber = _interopRequireDefault(require("./extractNationalNumber.js")); + +var _checkNumberLength = _interopRequireDefault(require("./checkNumberLength.js")); + +var _getCountryCallingCode = _interopRequireDefault(require("../getCountryCallingCode.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +/** + * Sometimes some people incorrectly input international phone numbers + * without the leading `+`. This function corrects such input. + * @param {string} number — Phone number digits. + * @param {string?} country + * @param {string?} callingCode + * @param {object} metadata + * @return {object} `{ countryCallingCode: string?, number: string }`. + */ +function extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, callingCode, metadata) { + var countryCallingCode = country ? (0, _getCountryCallingCode["default"])(country, metadata) : callingCode; + + if (number.indexOf(countryCallingCode) === 0) { + metadata = new _metadata["default"](metadata); + metadata.selectNumberingPlan(country, callingCode); + var possibleShorterNumber = number.slice(countryCallingCode.length); + + var _extractNationalNumbe = (0, _extractNationalNumber["default"])(possibleShorterNumber, metadata), + possibleShorterNationalNumber = _extractNationalNumbe.nationalNumber; + + var _extractNationalNumbe2 = (0, _extractNationalNumber["default"])(number, metadata), + nationalNumber = _extractNationalNumbe2.nationalNumber; // If the number was not valid before but is valid now, + // or if it was too long before, we consider the number + // with the country calling code stripped to be a better result + // and keep that instead. + // For example, in Germany (+49), `49` is a valid area code, + // so if a number starts with `49`, it could be both a valid + // national German number or an international number without + // a leading `+`. + + + if (!(0, _matchesEntirely["default"])(nationalNumber, metadata.nationalNumberPattern()) && (0, _matchesEntirely["default"])(possibleShorterNationalNumber, metadata.nationalNumberPattern()) || (0, _checkNumberLength["default"])(nationalNumber, metadata) === 'TOO_LONG') { + return { + countryCallingCode: countryCallingCode, + number: possibleShorterNumber + }; + } + } + + return { + number: number + }; +} +//# sourceMappingURL=extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js.map new file mode 100644 index 00000000..ba3e5bbc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js.map @@ -0,0 +1 @@ +{"version":3,"file":"extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js","names":["extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","number","country","callingCode","metadata","countryCallingCode","getCountryCallingCode","indexOf","Metadata","selectNumberingPlan","possibleShorterNumber","slice","length","extractNationalNumber","possibleShorterNationalNumber","nationalNumber","matchesEntirely","nationalNumberPattern","checkNumberLength"],"sources":["../../source/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js"],"sourcesContent":["import Metadata from '../metadata.js'\r\nimport matchesEntirely from './matchesEntirely.js'\r\nimport extractNationalNumber from './extractNationalNumber.js'\r\nimport checkNumberLength from './checkNumberLength.js'\r\nimport getCountryCallingCode from '../getCountryCallingCode.js'\r\n\r\n/**\r\n * Sometimes some people incorrectly input international phone numbers\r\n * without the leading `+`. This function corrects such input.\r\n * @param {string} number — Phone number digits.\r\n * @param {string?} country\r\n * @param {string?} callingCode\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`.\r\n */\r\nexport default function extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\r\n\tnumber,\r\n\tcountry,\r\n\tcallingCode,\r\n\tmetadata\r\n) {\r\n\tconst countryCallingCode = country ? getCountryCallingCode(country, metadata) : callingCode\r\n\tif (number.indexOf(countryCallingCode) === 0) {\r\n\t\tmetadata = new Metadata(metadata)\r\n\t\tmetadata.selectNumberingPlan(country, callingCode)\r\n\t\tconst possibleShorterNumber = number.slice(countryCallingCode.length)\r\n\t\tconst {\r\n\t\t\tnationalNumber: possibleShorterNationalNumber,\r\n\t\t} = extractNationalNumber(\r\n\t\t\tpossibleShorterNumber,\r\n\t\t\tmetadata\r\n\t\t)\r\n\t\tconst {\r\n\t\t\tnationalNumber\r\n\t\t} = extractNationalNumber(\r\n\t\t\tnumber,\r\n\t\t\tmetadata\r\n\t\t)\r\n\t\t// If the number was not valid before but is valid now,\r\n\t\t// or if it was too long before, we consider the number\r\n\t\t// with the country calling code stripped to be a better result\r\n\t\t// and keep that instead.\r\n\t\t// For example, in Germany (+49), `49` is a valid area code,\r\n\t\t// so if a number starts with `49`, it could be both a valid\r\n\t\t// national German number or an international number without\r\n\t\t// a leading `+`.\r\n\t\tif (\r\n\t\t\t(\r\n\t\t\t\t!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())\r\n\t\t\t\t&&\r\n\t\t\t\tmatchesEntirely(possibleShorterNationalNumber, metadata.nationalNumberPattern())\r\n\t\t\t)\r\n\t\t\t||\r\n\t\t\tcheckNumberLength(nationalNumber, metadata) === 'TOO_LONG'\r\n\t\t) {\r\n\t\t\treturn {\r\n\t\t\t\tcountryCallingCode,\r\n\t\t\t\tnumber: possibleShorterNumber\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn { number }\r\n}"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,+DAAT,CACdC,MADc,EAEdC,OAFc,EAGdC,WAHc,EAIdC,QAJc,EAKb;EACD,IAAMC,kBAAkB,GAAGH,OAAO,GAAG,IAAAI,iCAAA,EAAsBJ,OAAtB,EAA+BE,QAA/B,CAAH,GAA8CD,WAAhF;;EACA,IAAIF,MAAM,CAACM,OAAP,CAAeF,kBAAf,MAAuC,CAA3C,EAA8C;IAC7CD,QAAQ,GAAG,IAAII,oBAAJ,CAAaJ,QAAb,CAAX;IACAA,QAAQ,CAACK,mBAAT,CAA6BP,OAA7B,EAAsCC,WAAtC;IACA,IAAMO,qBAAqB,GAAGT,MAAM,CAACU,KAAP,CAAaN,kBAAkB,CAACO,MAAhC,CAA9B;;IACA,4BAEI,IAAAC,iCAAA,EACHH,qBADG,EAEHN,QAFG,CAFJ;IAAA,IACiBU,6BADjB,yBACCC,cADD;;IAMA,6BAEI,IAAAF,iCAAA,EACHZ,MADG,EAEHG,QAFG,CAFJ;IAAA,IACCW,cADD,0BACCA,cADD,CAV6C,CAgB7C;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;;IACA,IAEE,CAAC,IAAAC,2BAAA,EAAgBD,cAAhB,EAAgCX,QAAQ,CAACa,qBAAT,EAAhC,CAAD,IAEA,IAAAD,2BAAA,EAAgBF,6BAAhB,EAA+CV,QAAQ,CAACa,qBAAT,EAA/C,CAHD,IAMA,IAAAC,6BAAA,EAAkBH,cAAlB,EAAkCX,QAAlC,MAAgD,UAPjD,EAQE;MACD,OAAO;QACNC,kBAAkB,EAAlBA,kBADM;QAENJ,MAAM,EAAES;MAFF,CAAP;IAIA;EACD;;EACD,OAAO;IAAET,MAAM,EAANA;EAAF,CAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumber.js new file mode 100644 index 00000000..ecb4a7a5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumber.js @@ -0,0 +1,123 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = extractNationalNumber; + +var _extractNationalNumberFromPossiblyIncompleteNumber = _interopRequireDefault(require("./extractNationalNumberFromPossiblyIncompleteNumber.js")); + +var _matchesEntirely = _interopRequireDefault(require("./matchesEntirely.js")); + +var _checkNumberLength = _interopRequireDefault(require("./checkNumberLength.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +/** + * Strips national prefix and carrier code from a complete phone number. + * The difference from the non-"FromCompleteNumber" function is that + * it won't extract national prefix if the resultant number is too short + * to be a complete number for the selected phone numbering plan. + * @param {string} number — Complete phone number digits. + * @param {Metadata} metadata — Metadata with a phone numbering plan selected. + * @return {object} `{ nationalNumber: string, carrierCode: string? }`. + */ +function extractNationalNumber(number, metadata) { + // Parsing national prefixes and carrier codes + // is only required for local phone numbers + // but some people don't understand that + // and sometimes write international phone numbers + // with national prefixes (or maybe even carrier codes). + // http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html + // Google's original library forgives such mistakes + // and so does this library, because it has been requested: + // https://github.com/catamphetamine/libphonenumber-js/issues/127 + var _extractNationalNumbe = (0, _extractNationalNumberFromPossiblyIncompleteNumber["default"])(number, metadata), + carrierCode = _extractNationalNumbe.carrierCode, + nationalNumber = _extractNationalNumbe.nationalNumber; + + if (nationalNumber !== number) { + if (!shouldHaveExtractedNationalPrefix(number, nationalNumber, metadata)) { + // Don't strip the national prefix. + return { + nationalNumber: number + }; + } // Check the national (significant) number length after extracting national prefix and carrier code. + // Legacy generated metadata (before `1.0.18`) didn't support the "possible lengths" feature. + + + if (metadata.possibleLengths()) { + // The number remaining after stripping the national prefix and carrier code + // should be long enough to have a possible length for the country. + // Otherwise, don't strip the national prefix and carrier code, + // since the original number could be a valid number. + // This check has been copy-pasted "as is" from Google's original library: + // https://github.com/google/libphonenumber/blob/876268eb1ad6cdc1b7b5bef17fc5e43052702d57/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3236-L3250 + // It doesn't check for the "possibility" of the original `number`. + // I guess it's fine not checking that one. It works as is anyway. + if (!isPossibleIncompleteNationalNumber(nationalNumber, metadata)) { + // Don't strip the national prefix. + return { + nationalNumber: number + }; + } + } + } + + return { + nationalNumber: nationalNumber, + carrierCode: carrierCode + }; +} // In some countries, the same digit could be a national prefix +// or a leading digit of a valid phone number. +// For example, in Russia, national prefix is `8`, +// and also `800 555 35 35` is a valid number +// in which `8` is not a national prefix, but the first digit +// of a national (significant) number. +// Same's with Belarus: +// `82004910060` is a valid national (significant) number, +// but `2004910060` is not. +// To support such cases (to prevent the code from always stripping +// national prefix), a condition is imposed: a national prefix +// is not extracted when the original number is "viable" and the +// resultant number is not, a "viable" national number being the one +// that matches `national_number_pattern`. + + +function shouldHaveExtractedNationalPrefix(nationalNumberBefore, nationalNumberAfter, metadata) { + // The equivalent in Google's code is: + // https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L2969-L3004 + if ((0, _matchesEntirely["default"])(nationalNumberBefore, metadata.nationalNumberPattern()) && !(0, _matchesEntirely["default"])(nationalNumberAfter, metadata.nationalNumberPattern())) { + return false; + } // This "is possible" national number (length) check has been commented out + // because it's superceded by the (effectively) same check done in the + // `extractNationalNumber()` function after it calls `shouldHaveExtractedNationalPrefix()`. + // In other words, why run the same check twice if it could only be run once. + // // Check the national (significant) number length after extracting national prefix and carrier code. + // // Fixes a minor "weird behavior" bug: https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/57 + // // (Legacy generated metadata (before `1.0.18`) didn't support the "possible lengths" feature). + // if (metadata.possibleLengths()) { + // if (isPossibleIncompleteNationalNumber(nationalNumberBefore, metadata) && + // !isPossibleIncompleteNationalNumber(nationalNumberAfter, metadata)) { + // return false + // } + // } + + + return true; +} + +function isPossibleIncompleteNationalNumber(nationalNumber, metadata) { + switch ((0, _checkNumberLength["default"])(nationalNumber, metadata)) { + case 'TOO_SHORT': + case 'INVALID_LENGTH': + // This library ignores "local-only" phone numbers (for simplicity). + // See the readme for more info on what are "local-only" phone numbers. + // case 'IS_POSSIBLE_LOCAL_ONLY': + return false; + + default: + return true; + } +} +//# sourceMappingURL=extractNationalNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumber.js.map new file mode 100644 index 00000000..3d340487 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"extractNationalNumber.js","names":["extractNationalNumber","number","metadata","extractNationalNumberFromPossiblyIncompleteNumber","carrierCode","nationalNumber","shouldHaveExtractedNationalPrefix","possibleLengths","isPossibleIncompleteNationalNumber","nationalNumberBefore","nationalNumberAfter","matchesEntirely","nationalNumberPattern","checkNumberLength"],"sources":["../../source/helpers/extractNationalNumber.js"],"sourcesContent":["import extractNationalNumberFromPossiblyIncompleteNumber from './extractNationalNumberFromPossiblyIncompleteNumber.js'\r\nimport matchesEntirely from './matchesEntirely.js'\r\nimport checkNumberLength from './checkNumberLength.js'\r\n\r\n/**\r\n * Strips national prefix and carrier code from a complete phone number.\r\n * The difference from the non-\"FromCompleteNumber\" function is that\r\n * it won't extract national prefix if the resultant number is too short\r\n * to be a complete number for the selected phone numbering plan.\r\n * @param {string} number — Complete phone number digits.\r\n * @param {Metadata} metadata — Metadata with a phone numbering plan selected.\r\n * @return {object} `{ nationalNumber: string, carrierCode: string? }`.\r\n */\r\nexport default function extractNationalNumber(number, metadata) {\r\n\t// Parsing national prefixes and carrier codes\r\n\t// is only required for local phone numbers\r\n\t// but some people don't understand that\r\n\t// and sometimes write international phone numbers\r\n\t// with national prefixes (or maybe even carrier codes).\r\n\t// http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html\r\n\t// Google's original library forgives such mistakes\r\n\t// and so does this library, because it has been requested:\r\n\t// https://github.com/catamphetamine/libphonenumber-js/issues/127\r\n\tconst {\r\n\t\tcarrierCode,\r\n\t\tnationalNumber\r\n\t} = extractNationalNumberFromPossiblyIncompleteNumber(\r\n\t\tnumber,\r\n\t\tmetadata\r\n\t)\r\n\r\n\tif (nationalNumber !== number) {\r\n\t\tif (!shouldHaveExtractedNationalPrefix(number, nationalNumber, metadata)) {\r\n\t\t\t// Don't strip the national prefix.\r\n\t\t\treturn { nationalNumber: number }\r\n\t\t}\r\n\t\t// Check the national (significant) number length after extracting national prefix and carrier code.\r\n\t\t// Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature.\r\n\t\tif (metadata.possibleLengths()) {\r\n\t\t\t// The number remaining after stripping the national prefix and carrier code\r\n\t\t\t// should be long enough to have a possible length for the country.\r\n\t\t\t// Otherwise, don't strip the national prefix and carrier code,\r\n\t\t\t// since the original number could be a valid number.\r\n\t\t\t// This check has been copy-pasted \"as is\" from Google's original library:\r\n\t\t\t// https://github.com/google/libphonenumber/blob/876268eb1ad6cdc1b7b5bef17fc5e43052702d57/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3236-L3250\r\n\t\t\t// It doesn't check for the \"possibility\" of the original `number`.\r\n\t\t\t// I guess it's fine not checking that one. It works as is anyway.\r\n\t\t\tif (!isPossibleIncompleteNationalNumber(nationalNumber, metadata)) {\r\n\t\t\t\t// Don't strip the national prefix.\r\n\t\t\t\treturn { nationalNumber: number }\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn { nationalNumber, carrierCode }\r\n}\r\n\r\n// In some countries, the same digit could be a national prefix\r\n// or a leading digit of a valid phone number.\r\n// For example, in Russia, national prefix is `8`,\r\n// and also `800 555 35 35` is a valid number\r\n// in which `8` is not a national prefix, but the first digit\r\n// of a national (significant) number.\r\n// Same's with Belarus:\r\n// `82004910060` is a valid national (significant) number,\r\n// but `2004910060` is not.\r\n// To support such cases (to prevent the code from always stripping\r\n// national prefix), a condition is imposed: a national prefix\r\n// is not extracted when the original number is \"viable\" and the\r\n// resultant number is not, a \"viable\" national number being the one\r\n// that matches `national_number_pattern`.\r\nfunction shouldHaveExtractedNationalPrefix(nationalNumberBefore, nationalNumberAfter, metadata) {\r\n\t// The equivalent in Google's code is:\r\n\t// https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L2969-L3004\r\n\tif (matchesEntirely(nationalNumberBefore, metadata.nationalNumberPattern()) &&\r\n\t\t!matchesEntirely(nationalNumberAfter, metadata.nationalNumberPattern())) {\r\n\t\treturn false\r\n\t}\r\n\t// This \"is possible\" national number (length) check has been commented out\r\n\t// because it's superceded by the (effectively) same check done in the\r\n\t// `extractNationalNumber()` function after it calls `shouldHaveExtractedNationalPrefix()`.\r\n\t// In other words, why run the same check twice if it could only be run once.\r\n\t// // Check the national (significant) number length after extracting national prefix and carrier code.\r\n\t// // Fixes a minor \"weird behavior\" bug: https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/57\r\n\t// // (Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature).\r\n\t// if (metadata.possibleLengths()) {\r\n\t// \tif (isPossibleIncompleteNationalNumber(nationalNumberBefore, metadata) &&\r\n\t// \t\t!isPossibleIncompleteNationalNumber(nationalNumberAfter, metadata)) {\r\n\t// \t\treturn false\r\n\t// \t}\r\n\t// }\r\n\treturn true\r\n}\r\n\r\nfunction isPossibleIncompleteNationalNumber(nationalNumber, metadata) {\r\n\tswitch (checkNumberLength(nationalNumber, metadata)) {\r\n\t\tcase 'TOO_SHORT':\r\n\t\tcase 'INVALID_LENGTH':\r\n\t\t// This library ignores \"local-only\" phone numbers (for simplicity).\r\n\t\t// See the readme for more info on what are \"local-only\" phone numbers.\r\n\t\t// case 'IS_POSSIBLE_LOCAL_ONLY':\r\n\t\t\treturn false\r\n\t\tdefault:\r\n\t\t\treturn true\r\n\t}\r\n}"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,qBAAT,CAA+BC,MAA/B,EAAuCC,QAAvC,EAAiD;EAC/D;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,4BAGI,IAAAC,6DAAA,EACHF,MADG,EAEHC,QAFG,CAHJ;EAAA,IACCE,WADD,yBACCA,WADD;EAAA,IAECC,cAFD,yBAECA,cAFD;;EAQA,IAAIA,cAAc,KAAKJ,MAAvB,EAA+B;IAC9B,IAAI,CAACK,iCAAiC,CAACL,MAAD,EAASI,cAAT,EAAyBH,QAAzB,CAAtC,EAA0E;MACzE;MACA,OAAO;QAAEG,cAAc,EAAEJ;MAAlB,CAAP;IACA,CAJ6B,CAK9B;IACA;;;IACA,IAAIC,QAAQ,CAACK,eAAT,EAAJ,EAAgC;MAC/B;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA,IAAI,CAACC,kCAAkC,CAACH,cAAD,EAAiBH,QAAjB,CAAvC,EAAmE;QAClE;QACA,OAAO;UAAEG,cAAc,EAAEJ;QAAlB,CAAP;MACA;IACD;EACD;;EAED,OAAO;IAAEI,cAAc,EAAdA,cAAF;IAAkBD,WAAW,EAAXA;EAAlB,CAAP;AACA,C,CAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASE,iCAAT,CAA2CG,oBAA3C,EAAiEC,mBAAjE,EAAsFR,QAAtF,EAAgG;EAC/F;EACA;EACA,IAAI,IAAAS,2BAAA,EAAgBF,oBAAhB,EAAsCP,QAAQ,CAACU,qBAAT,EAAtC,KACH,CAAC,IAAAD,2BAAA,EAAgBD,mBAAhB,EAAqCR,QAAQ,CAACU,qBAAT,EAArC,CADF,EAC0E;IACzE,OAAO,KAAP;EACA,CAN8F,CAO/F;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EACA,OAAO,IAAP;AACA;;AAED,SAASJ,kCAAT,CAA4CH,cAA5C,EAA4DH,QAA5D,EAAsE;EACrE,QAAQ,IAAAW,6BAAA,EAAkBR,cAAlB,EAAkCH,QAAlC,CAAR;IACC,KAAK,WAAL;IACA,KAAK,gBAAL;MACA;MACA;MACA;MACC,OAAO,KAAP;;IACD;MACC,OAAO,IAAP;EARF;AAUA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumber.test.js new file mode 100644 index 00000000..49406069 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumber.test.js @@ -0,0 +1,23 @@ +"use strict"; + +var _extractNationalNumber = _interopRequireDefault(require("./extractNationalNumber.js")); + +var _metadata = _interopRequireDefault(require("../metadata.js")); + +var _metadataMin = _interopRequireDefault(require("../../test/metadata/1.0.0/metadata.min.json")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +describe('extractNationalNumber', function () { + it('should extract a national number when using old metadata', function () { + var _oldMetadata = new _metadata["default"](_metadataMin["default"]); + + _oldMetadata.selectNumberingPlan('RU'); + + (0, _extractNationalNumber["default"])('88005553535', _oldMetadata).should.deep.equal({ + nationalNumber: '8005553535', + carrierCode: undefined + }); + }); +}); +//# sourceMappingURL=extractNationalNumber.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumber.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumber.test.js.map new file mode 100644 index 00000000..9e92cb13 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumber.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"extractNationalNumber.test.js","names":["describe","it","_oldMetadata","Metadata","oldMetadata","selectNumberingPlan","extractNationalNumber","should","deep","equal","nationalNumber","carrierCode","undefined"],"sources":["../../source/helpers/extractNationalNumber.test.js"],"sourcesContent":["import extractNationalNumber from './extractNationalNumber.js'\r\n\r\nimport Metadata from '../metadata.js'\r\nimport oldMetadata from '../../test/metadata/1.0.0/metadata.min.json' assert { type: 'json' }\r\n\r\ndescribe('extractNationalNumber', function() {\r\n\tit('should extract a national number when using old metadata', function() {\r\n\t\tconst _oldMetadata = new Metadata(oldMetadata)\r\n\t\t_oldMetadata.selectNumberingPlan('RU')\r\n\t\textractNationalNumber('88005553535', _oldMetadata).should.deep.equal({\r\n\t\t\tnationalNumber: '8005553535',\r\n\t\t\tcarrierCode: undefined\r\n\t\t})\r\n\t})\r\n})"],"mappings":";;AAAA;;AAEA;;AACA;;;;AAEAA,QAAQ,CAAC,uBAAD,EAA0B,YAAW;EAC5CC,EAAE,CAAC,0DAAD,EAA6D,YAAW;IACzE,IAAMC,YAAY,GAAG,IAAIC,oBAAJ,CAAaC,uBAAb,CAArB;;IACAF,YAAY,CAACG,mBAAb,CAAiC,IAAjC;;IACA,IAAAC,iCAAA,EAAsB,aAAtB,EAAqCJ,YAArC,EAAmDK,MAAnD,CAA0DC,IAA1D,CAA+DC,KAA/D,CAAqE;MACpEC,cAAc,EAAE,YADoD;MAEpEC,WAAW,EAAEC;IAFuD,CAArE;EAIA,CAPC,CAAF;AAQA,CATO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js new file mode 100644 index 00000000..e3417e35 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js @@ -0,0 +1,114 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = extractNationalNumberFromPossiblyIncompleteNumber; + +/** + * Strips any national prefix (such as 0, 1) present in a + * (possibly incomplete) number provided. + * "Carrier codes" are only used in Colombia and Brazil, + * and only when dialing within those countries from a mobile phone to a fixed line number. + * Sometimes it won't actually strip national prefix + * and will instead prepend some digits to the `number`: + * for example, when number `2345678` is passed with `VI` country selected, + * it will return `{ number: "3402345678" }`, because `340` area code is prepended. + * @param {string} number — National number digits. + * @param {object} metadata — Metadata with country selected. + * @return {object} `{ nationalNumber: string, nationalPrefix: string? carrierCode: string? }`. Even if a national prefix was extracted, it's not necessarily present in the returned object, so don't rely on its presence in the returned object in order to find out whether a national prefix has been extracted or not. + */ +function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) { + if (number && metadata.numberingPlan.nationalPrefixForParsing()) { + // See METADATA.md for the description of + // `national_prefix_for_parsing` and `national_prefix_transform_rule`. + // Attempt to parse the first digits as a national prefix. + var prefixPattern = new RegExp('^(?:' + metadata.numberingPlan.nationalPrefixForParsing() + ')'); + var prefixMatch = prefixPattern.exec(number); + + if (prefixMatch) { + var nationalNumber; + var carrierCode; // https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule + // If a `national_prefix_for_parsing` has any "capturing groups" + // then it means that the national (significant) number is equal to + // those "capturing groups" transformed via `national_prefix_transform_rule`, + // and nothing could be said about the actual national prefix: + // what is it and was it even there. + // If a `national_prefix_for_parsing` doesn't have any "capturing groups", + // then everything it matches is a national prefix. + // To determine whether `national_prefix_for_parsing` matched any + // "capturing groups", the value of the result of calling `.exec()` + // is looked at, and if it has non-undefined values where there're + // "capturing groups" in the regular expression, then it means + // that "capturing groups" have been matched. + // It's not possible to tell whether there'll be any "capturing gropus" + // before the matching process, because a `national_prefix_for_parsing` + // could exhibit both behaviors. + + var capturedGroupsCount = prefixMatch.length - 1; + var hasCapturedGroups = capturedGroupsCount > 0 && prefixMatch[capturedGroupsCount]; + + if (metadata.nationalPrefixTransformRule() && hasCapturedGroups) { + nationalNumber = number.replace(prefixPattern, metadata.nationalPrefixTransformRule()); // If there's more than one captured group, + // then carrier code is the second one. + + if (capturedGroupsCount > 1) { + carrierCode = prefixMatch[1]; + } + } // If there're no "capturing groups", + // or if there're "capturing groups" but no + // `national_prefix_transform_rule`, + // then just strip the national prefix from the number, + // and possibly a carrier code. + // Seems like there could be more. + else { + // `prefixBeforeNationalNumber` is the whole substring matched by + // the `national_prefix_for_parsing` regular expression. + // There seem to be no guarantees that it's just a national prefix. + // For example, if there's a carrier code, it's gonna be a + // part of `prefixBeforeNationalNumber` too. + var prefixBeforeNationalNumber = prefixMatch[0]; + nationalNumber = number.slice(prefixBeforeNationalNumber.length); // If there's at least one captured group, + // then carrier code is the first one. + + if (hasCapturedGroups) { + carrierCode = prefixMatch[1]; + } + } // Tries to guess whether a national prefix was present in the input. + // This is not something copy-pasted from Google's library: + // they don't seem to have an equivalent for that. + // So this isn't an "officially approved" way of doing something like that. + // But since there seems no other existing method, this library uses it. + + + var nationalPrefix; + + if (hasCapturedGroups) { + var possiblePositionOfTheFirstCapturedGroup = number.indexOf(prefixMatch[1]); + var possibleNationalPrefix = number.slice(0, possiblePositionOfTheFirstCapturedGroup); // Example: an Argentinian (AR) phone number `0111523456789`. + // `prefixMatch[0]` is `01115`, and `$1` is `11`, + // and the rest of the phone number is `23456789`. + // The national number is transformed via `9$1` to `91123456789`. + // National prefix `0` is detected being present at the start. + // if (possibleNationalPrefix.indexOf(metadata.numberingPlan.nationalPrefix()) === 0) { + + if (possibleNationalPrefix === metadata.numberingPlan.nationalPrefix()) { + nationalPrefix = metadata.numberingPlan.nationalPrefix(); + } + } else { + nationalPrefix = prefixMatch[0]; + } + + return { + nationalNumber: nationalNumber, + nationalPrefix: nationalPrefix, + carrierCode: carrierCode + }; + } + } + + return { + nationalNumber: number + }; +} +//# sourceMappingURL=extractNationalNumberFromPossiblyIncompleteNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js.map new file mode 100644 index 00000000..801c2c48 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"extractNationalNumberFromPossiblyIncompleteNumber.js","names":["extractNationalNumberFromPossiblyIncompleteNumber","number","metadata","numberingPlan","nationalPrefixForParsing","prefixPattern","RegExp","prefixMatch","exec","nationalNumber","carrierCode","capturedGroupsCount","length","hasCapturedGroups","nationalPrefixTransformRule","replace","prefixBeforeNationalNumber","slice","nationalPrefix","possiblePositionOfTheFirstCapturedGroup","indexOf","possibleNationalPrefix"],"sources":["../../source/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js"],"sourcesContent":["/**\r\n * Strips any national prefix (such as 0, 1) present in a\r\n * (possibly incomplete) number provided.\r\n * \"Carrier codes\" are only used in Colombia and Brazil,\r\n * and only when dialing within those countries from a mobile phone to a fixed line number.\r\n * Sometimes it won't actually strip national prefix\r\n * and will instead prepend some digits to the `number`:\r\n * for example, when number `2345678` is passed with `VI` country selected,\r\n * it will return `{ number: \"3402345678\" }`, because `340` area code is prepended.\r\n * @param {string} number — National number digits.\r\n * @param {object} metadata — Metadata with country selected.\r\n * @return {object} `{ nationalNumber: string, nationalPrefix: string? carrierCode: string? }`. Even if a national prefix was extracted, it's not necessarily present in the returned object, so don't rely on its presence in the returned object in order to find out whether a national prefix has been extracted or not.\r\n */\r\nexport default function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) {\r\n\tif (number && metadata.numberingPlan.nationalPrefixForParsing()) {\r\n\t\t// See METADATA.md for the description of\r\n\t\t// `national_prefix_for_parsing` and `national_prefix_transform_rule`.\r\n\t\t// Attempt to parse the first digits as a national prefix.\r\n\t\tconst prefixPattern = new RegExp('^(?:' + metadata.numberingPlan.nationalPrefixForParsing() + ')')\r\n\t\tconst prefixMatch = prefixPattern.exec(number)\r\n\t\tif (prefixMatch) {\r\n\t\t\tlet nationalNumber\r\n\t\t\tlet carrierCode\r\n\t\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\r\n\t\t\t// If a `national_prefix_for_parsing` has any \"capturing groups\"\r\n\t\t\t// then it means that the national (significant) number is equal to\r\n\t\t\t// those \"capturing groups\" transformed via `national_prefix_transform_rule`,\r\n\t\t\t// and nothing could be said about the actual national prefix:\r\n\t\t\t// what is it and was it even there.\r\n\t\t\t// If a `national_prefix_for_parsing` doesn't have any \"capturing groups\",\r\n\t\t\t// then everything it matches is a national prefix.\r\n\t\t\t// To determine whether `national_prefix_for_parsing` matched any\r\n\t\t\t// \"capturing groups\", the value of the result of calling `.exec()`\r\n\t\t\t// is looked at, and if it has non-undefined values where there're\r\n\t\t\t// \"capturing groups\" in the regular expression, then it means\r\n\t\t\t// that \"capturing groups\" have been matched.\r\n\t\t\t// It's not possible to tell whether there'll be any \"capturing gropus\"\r\n\t\t\t// before the matching process, because a `national_prefix_for_parsing`\r\n\t\t\t// could exhibit both behaviors.\r\n\t\t\tconst capturedGroupsCount = prefixMatch.length - 1\r\n\t\t\tconst hasCapturedGroups = capturedGroupsCount > 0 && prefixMatch[capturedGroupsCount]\r\n\t\t\tif (metadata.nationalPrefixTransformRule() && hasCapturedGroups) {\r\n\t\t\t\tnationalNumber = number.replace(\r\n\t\t\t\t\tprefixPattern,\r\n\t\t\t\t\tmetadata.nationalPrefixTransformRule()\r\n\t\t\t\t)\r\n\t\t\t\t// If there's more than one captured group,\r\n\t\t\t\t// then carrier code is the second one.\r\n\t\t\t\tif (capturedGroupsCount > 1) {\r\n\t\t\t\t\tcarrierCode = prefixMatch[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// If there're no \"capturing groups\",\r\n\t\t\t// or if there're \"capturing groups\" but no\r\n\t\t\t// `national_prefix_transform_rule`,\r\n\t\t\t// then just strip the national prefix from the number,\r\n\t\t\t// and possibly a carrier code.\r\n\t\t\t// Seems like there could be more.\r\n\t\t\telse {\r\n\t\t\t\t// `prefixBeforeNationalNumber` is the whole substring matched by\r\n\t\t\t\t// the `national_prefix_for_parsing` regular expression.\r\n\t\t\t\t// There seem to be no guarantees that it's just a national prefix.\r\n\t\t\t\t// For example, if there's a carrier code, it's gonna be a\r\n\t\t\t\t// part of `prefixBeforeNationalNumber` too.\r\n\t\t\t\tconst prefixBeforeNationalNumber = prefixMatch[0]\r\n\t\t\t\tnationalNumber = number.slice(prefixBeforeNationalNumber.length)\r\n\t\t\t\t// If there's at least one captured group,\r\n\t\t\t\t// then carrier code is the first one.\r\n\t\t\t\tif (hasCapturedGroups) {\r\n\t\t\t\t\tcarrierCode = prefixMatch[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Tries to guess whether a national prefix was present in the input.\r\n\t\t\t// This is not something copy-pasted from Google's library:\r\n\t\t\t// they don't seem to have an equivalent for that.\r\n\t\t\t// So this isn't an \"officially approved\" way of doing something like that.\r\n\t\t\t// But since there seems no other existing method, this library uses it.\r\n\t\t\tlet nationalPrefix\r\n\t\t\tif (hasCapturedGroups) {\r\n\t\t\t\tconst possiblePositionOfTheFirstCapturedGroup = number.indexOf(prefixMatch[1])\r\n\t\t\t\tconst possibleNationalPrefix = number.slice(0, possiblePositionOfTheFirstCapturedGroup)\r\n\t\t\t\t// Example: an Argentinian (AR) phone number `0111523456789`.\r\n\t\t\t\t// `prefixMatch[0]` is `01115`, and `$1` is `11`,\r\n\t\t\t\t// and the rest of the phone number is `23456789`.\r\n\t\t\t\t// The national number is transformed via `9$1` to `91123456789`.\r\n\t\t\t\t// National prefix `0` is detected being present at the start.\r\n\t\t\t\t// if (possibleNationalPrefix.indexOf(metadata.numberingPlan.nationalPrefix()) === 0) {\r\n\t\t\t\tif (possibleNationalPrefix === metadata.numberingPlan.nationalPrefix()) {\r\n\t\t\t\t\tnationalPrefix = metadata.numberingPlan.nationalPrefix()\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tnationalPrefix = prefixMatch[0]\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\tnationalNumber,\r\n\t\t\t\tnationalPrefix,\r\n\t\t\t\tcarrierCode\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n return {\r\n \tnationalNumber: number\r\n }\r\n}"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,iDAAT,CAA2DC,MAA3D,EAAmEC,QAAnE,EAA6E;EAC3F,IAAID,MAAM,IAAIC,QAAQ,CAACC,aAAT,CAAuBC,wBAAvB,EAAd,EAAiE;IAChE;IACA;IACA;IACA,IAAMC,aAAa,GAAG,IAAIC,MAAJ,CAAW,SAASJ,QAAQ,CAACC,aAAT,CAAuBC,wBAAvB,EAAT,GAA6D,GAAxE,CAAtB;IACA,IAAMG,WAAW,GAAGF,aAAa,CAACG,IAAd,CAAmBP,MAAnB,CAApB;;IACA,IAAIM,WAAJ,EAAiB;MAChB,IAAIE,cAAJ;MACA,IAAIC,WAAJ,CAFgB,CAGhB;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;;MACA,IAAMC,mBAAmB,GAAGJ,WAAW,CAACK,MAAZ,GAAqB,CAAjD;MACA,IAAMC,iBAAiB,GAAGF,mBAAmB,GAAG,CAAtB,IAA2BJ,WAAW,CAACI,mBAAD,CAAhE;;MACA,IAAIT,QAAQ,CAACY,2BAAT,MAA0CD,iBAA9C,EAAiE;QAChEJ,cAAc,GAAGR,MAAM,CAACc,OAAP,CAChBV,aADgB,EAEhBH,QAAQ,CAACY,2BAAT,EAFgB,CAAjB,CADgE,CAKhE;QACA;;QACA,IAAIH,mBAAmB,GAAG,CAA1B,EAA6B;UAC5BD,WAAW,GAAGH,WAAW,CAAC,CAAD,CAAzB;QACA;MACD,CAVD,CAWA;MACA;MACA;MACA;MACA;MACA;MAhBA,KAiBK;QACJ;QACA;QACA;QACA;QACA;QACA,IAAMS,0BAA0B,GAAGT,WAAW,CAAC,CAAD,CAA9C;QACAE,cAAc,GAAGR,MAAM,CAACgB,KAAP,CAAaD,0BAA0B,CAACJ,MAAxC,CAAjB,CAPI,CAQJ;QACA;;QACA,IAAIC,iBAAJ,EAAuB;UACtBH,WAAW,GAAGH,WAAW,CAAC,CAAD,CAAzB;QACA;MACD,CAnDe,CAoDhB;MACA;MACA;MACA;MACA;;;MACA,IAAIW,cAAJ;;MACA,IAAIL,iBAAJ,EAAuB;QACtB,IAAMM,uCAAuC,GAAGlB,MAAM,CAACmB,OAAP,CAAeb,WAAW,CAAC,CAAD,CAA1B,CAAhD;QACA,IAAMc,sBAAsB,GAAGpB,MAAM,CAACgB,KAAP,CAAa,CAAb,EAAgBE,uCAAhB,CAA/B,CAFsB,CAGtB;QACA;QACA;QACA;QACA;QACA;;QACA,IAAIE,sBAAsB,KAAKnB,QAAQ,CAACC,aAAT,CAAuBe,cAAvB,EAA/B,EAAwE;UACvEA,cAAc,GAAGhB,QAAQ,CAACC,aAAT,CAAuBe,cAAvB,EAAjB;QACA;MACD,CAZD,MAYO;QACNA,cAAc,GAAGX,WAAW,CAAC,CAAD,CAA5B;MACA;;MACD,OAAO;QACNE,cAAc,EAAdA,cADM;QAENS,cAAc,EAAdA,cAFM;QAGNR,WAAW,EAAXA;MAHM,CAAP;IAKA;EACD;;EACC,OAAO;IACND,cAAc,EAAER;EADV,CAAP;AAGF"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumberFromPossiblyIncompleteNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumberFromPossiblyIncompleteNumber.test.js new file mode 100644 index 00000000..c8c348c8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumberFromPossiblyIncompleteNumber.test.js @@ -0,0 +1,22 @@ +"use strict"; + +var _metadata = _interopRequireDefault(require("../metadata.js")); + +var _metadataMin = _interopRequireDefault(require("../../metadata.min.json")); + +var _extractNationalNumberFromPossiblyIncompleteNumber = _interopRequireDefault(require("./extractNationalNumberFromPossiblyIncompleteNumber.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +describe('extractNationalNumberFromPossiblyIncompleteNumber', function () { + it('should parse a carrier code when there is no national prefix transform rule', function () { + var meta = new _metadata["default"](_metadataMin["default"]); + meta.country('AU'); + (0, _extractNationalNumberFromPossiblyIncompleteNumber["default"])('18311800123', meta).should.deep.equal({ + nationalPrefix: undefined, + carrierCode: '1831', + nationalNumber: '1800123' + }); + }); +}); +//# sourceMappingURL=extractNationalNumberFromPossiblyIncompleteNumber.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumberFromPossiblyIncompleteNumber.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumberFromPossiblyIncompleteNumber.test.js.map new file mode 100644 index 00000000..9cd822ed --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/extractNationalNumberFromPossiblyIncompleteNumber.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"extractNationalNumberFromPossiblyIncompleteNumber.test.js","names":["describe","it","meta","Metadata","metadata","country","extractNationalNumberFromPossiblyIncompleteNumber","should","deep","equal","nationalPrefix","undefined","carrierCode","nationalNumber"],"sources":["../../source/helpers/extractNationalNumberFromPossiblyIncompleteNumber.test.js"],"sourcesContent":["import Metadata from '../metadata.js'\r\nimport metadata from '../../metadata.min.json' assert { type: 'json' }\r\nimport extractNationalNumberFromPossiblyIncompleteNumber from './extractNationalNumberFromPossiblyIncompleteNumber.js'\r\n\r\ndescribe('extractNationalNumberFromPossiblyIncompleteNumber', () => {\r\n\tit('should parse a carrier code when there is no national prefix transform rule', () => {\r\n\t\tconst meta = new Metadata(metadata)\r\n\t\tmeta.country('AU')\r\n\t\textractNationalNumberFromPossiblyIncompleteNumber('18311800123', meta).should.deep.equal({\r\n\t\t\tnationalPrefix: undefined,\r\n\t\t\tcarrierCode: '1831',\r\n\t\t\tnationalNumber: '1800123'\r\n\t\t})\r\n\t})\r\n})"],"mappings":";;AAAA;;AACA;;AACA;;;;AAEAA,QAAQ,CAAC,mDAAD,EAAsD,YAAM;EACnEC,EAAE,CAAC,6EAAD,EAAgF,YAAM;IACvF,IAAMC,IAAI,GAAG,IAAIC,oBAAJ,CAAaC,uBAAb,CAAb;IACAF,IAAI,CAACG,OAAL,CAAa,IAAb;IACA,IAAAC,6DAAA,EAAkD,aAAlD,EAAiEJ,IAAjE,EAAuEK,MAAvE,CAA8EC,IAA9E,CAAmFC,KAAnF,CAAyF;MACxFC,cAAc,EAAEC,SADwE;MAExFC,WAAW,EAAE,MAF2E;MAGxFC,cAAc,EAAE;IAHwE,CAAzF;EAKA,CARC,CAAF;AASA,CAVO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/formatNationalNumberUsingFormat.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/formatNationalNumberUsingFormat.js new file mode 100644 index 00000000..19b6e0b3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/formatNationalNumberUsingFormat.js @@ -0,0 +1,46 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.FIRST_GROUP_PATTERN = void 0; +exports["default"] = formatNationalNumberUsingFormat; + +var _applyInternationalSeparatorStyle = _interopRequireDefault(require("./applyInternationalSeparatorStyle.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +// This was originally set to $1 but there are some countries for which the +// first group is not used in the national pattern (e.g. Argentina) so the $1 +// group does not match correctly. Therefore, we use `\d`, so that the first +// group actually used in the pattern will be matched. +var FIRST_GROUP_PATTERN = /(\$\d)/; +exports.FIRST_GROUP_PATTERN = FIRST_GROUP_PATTERN; + +function formatNationalNumberUsingFormat(number, format, _ref) { + var useInternationalFormat = _ref.useInternationalFormat, + withNationalPrefix = _ref.withNationalPrefix, + carrierCode = _ref.carrierCode, + metadata = _ref.metadata; + var formattedNumber = number.replace(new RegExp(format.pattern()), useInternationalFormat ? format.internationalFormat() : // This library doesn't use `domestic_carrier_code_formatting_rule`, + // because that one is only used when formatting phone numbers + // for dialing from a mobile phone, and this is not a dialing library. + // carrierCode && format.domesticCarrierCodeFormattingRule() + // // First, replace the $CC in the formatting rule with the desired carrier code. + // // Then, replace the $FG in the formatting rule with the first group + // // and the carrier code combined in the appropriate way. + // ? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode)) + // : ( + // withNationalPrefix && format.nationalPrefixFormattingRule() + // ? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()) + // : format.format() + // ) + withNationalPrefix && format.nationalPrefixFormattingRule() ? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()) : format.format()); + + if (useInternationalFormat) { + return (0, _applyInternationalSeparatorStyle["default"])(formattedNumber); + } + + return formattedNumber; +} +//# sourceMappingURL=formatNationalNumberUsingFormat.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/formatNationalNumberUsingFormat.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/formatNationalNumberUsingFormat.js.map new file mode 100644 index 00000000..18eee4fd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/formatNationalNumberUsingFormat.js.map @@ -0,0 +1 @@ +{"version":3,"file":"formatNationalNumberUsingFormat.js","names":["FIRST_GROUP_PATTERN","formatNationalNumberUsingFormat","number","format","useInternationalFormat","withNationalPrefix","carrierCode","metadata","formattedNumber","replace","RegExp","pattern","internationalFormat","nationalPrefixFormattingRule","applyInternationalSeparatorStyle"],"sources":["../../source/helpers/formatNationalNumberUsingFormat.js"],"sourcesContent":["import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle.js'\r\n\r\n// This was originally set to $1 but there are some countries for which the\r\n// first group is not used in the national pattern (e.g. Argentina) so the $1\r\n// group does not match correctly. Therefore, we use `\\d`, so that the first\r\n// group actually used in the pattern will be matched.\r\nexport const FIRST_GROUP_PATTERN = /(\\$\\d)/\r\n\r\nexport default function formatNationalNumberUsingFormat(\r\n\tnumber,\r\n\tformat,\r\n\t{\r\n\t\tuseInternationalFormat,\r\n\t\twithNationalPrefix,\r\n\t\tcarrierCode,\r\n\t\tmetadata\r\n\t}\r\n) {\r\n\tconst formattedNumber = number.replace(\r\n\t\tnew RegExp(format.pattern()),\r\n\t\tuseInternationalFormat\r\n\t\t\t? format.internationalFormat()\r\n\t\t\t: (\r\n\t\t\t\t// This library doesn't use `domestic_carrier_code_formatting_rule`,\r\n\t\t\t\t// because that one is only used when formatting phone numbers\r\n\t\t\t\t// for dialing from a mobile phone, and this is not a dialing library.\r\n\t\t\t\t// carrierCode && format.domesticCarrierCodeFormattingRule()\r\n\t\t\t\t// \t// First, replace the $CC in the formatting rule with the desired carrier code.\r\n\t\t\t\t// \t// Then, replace the $FG in the formatting rule with the first group\r\n\t\t\t\t// \t// and the carrier code combined in the appropriate way.\r\n\t\t\t\t// \t? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode))\r\n\t\t\t\t// \t: (\r\n\t\t\t\t// \t\twithNationalPrefix && format.nationalPrefixFormattingRule()\r\n\t\t\t\t// \t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\r\n\t\t\t\t// \t\t\t: format.format()\r\n\t\t\t\t// \t)\r\n\t\t\t\twithNationalPrefix && format.nationalPrefixFormattingRule()\r\n\t\t\t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\r\n\t\t\t\t\t: format.format()\r\n\t\t\t)\r\n\t)\r\n\tif (useInternationalFormat) {\r\n\t\treturn applyInternationalSeparatorStyle(formattedNumber)\r\n\t}\r\n\treturn formattedNumber\r\n}"],"mappings":";;;;;;;;AAAA;;;;AAEA;AACA;AACA;AACA;AACO,IAAMA,mBAAmB,GAAG,QAA5B;;;AAEQ,SAASC,+BAAT,CACdC,MADc,EAEdC,MAFc,QASb;EAAA,IALAC,sBAKA,QALAA,sBAKA;EAAA,IAJAC,kBAIA,QAJAA,kBAIA;EAAA,IAHAC,WAGA,QAHAA,WAGA;EAAA,IAFAC,QAEA,QAFAA,QAEA;EACD,IAAMC,eAAe,GAAGN,MAAM,CAACO,OAAP,CACvB,IAAIC,MAAJ,CAAWP,MAAM,CAACQ,OAAP,EAAX,CADuB,EAEvBP,sBAAsB,GACnBD,MAAM,CAACS,mBAAP,EADmB,GAGpB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACAP,kBAAkB,IAAIF,MAAM,CAACU,4BAAP,EAAtB,GACGV,MAAM,CAACA,MAAP,GAAgBM,OAAhB,CAAwBT,mBAAxB,EAA6CG,MAAM,CAACU,4BAAP,EAA7C,CADH,GAEGV,MAAM,CAACA,MAAP,EApBkB,CAAxB;;EAuBA,IAAIC,sBAAJ,EAA4B;IAC3B,OAAO,IAAAU,4CAAA,EAAiCN,eAAjC,CAAP;EACA;;EACD,OAAOA,eAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getCountryByCallingCode.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getCountryByCallingCode.js new file mode 100644 index 00000000..4290ec3d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getCountryByCallingCode.js @@ -0,0 +1,71 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = getCountryByCallingCode; + +var _metadata = _interopRequireDefault(require("../metadata.js")); + +var _getNumberType = _interopRequireDefault(require("./getNumberType.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +var USE_NON_GEOGRAPHIC_COUNTRY_CODE = false; + +function getCountryByCallingCode(callingCode, nationalPhoneNumber, metadata) { + /* istanbul ignore if */ + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + if (metadata.isNonGeographicCallingCode(callingCode)) { + return '001'; + } + } // Is always non-empty, because `callingCode` is always valid + + + var possibleCountries = metadata.getCountryCodesForCallingCode(callingCode); + + if (!possibleCountries) { + return; + } // If there's just one country corresponding to the country code, + // then just return it, without further phone number digits validation. + + + if (possibleCountries.length === 1) { + return possibleCountries[0]; + } + + return selectCountryFromList(possibleCountries, nationalPhoneNumber, metadata.metadata); +} + +function selectCountryFromList(possibleCountries, nationalPhoneNumber, metadata) { + // Re-create `metadata` because it will be selecting a `country`. + metadata = new _metadata["default"](metadata); + + for (var _iterator = _createForOfIteratorHelperLoose(possibleCountries), _step; !(_step = _iterator()).done;) { + var country = _step.value; + metadata.country(country); // Leading digits check would be the simplest and fastest one. + // Leading digits patterns are only defined for about 20% of all countries. + // https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits + // Matching "leading digits" is a sufficient but not necessary condition. + + if (metadata.leadingDigits()) { + if (nationalPhoneNumber && nationalPhoneNumber.search(metadata.leadingDigits()) === 0) { + return country; + } + } // Else perform full validation with all of those + // fixed-line/mobile/etc regular expressions. + else if ((0, _getNumberType["default"])({ + phone: nationalPhoneNumber, + country: country + }, undefined, metadata.metadata)) { + return country; + } + } +} +//# sourceMappingURL=getCountryByCallingCode.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getCountryByCallingCode.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getCountryByCallingCode.js.map new file mode 100644 index 00000000..ad71251a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getCountryByCallingCode.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getCountryByCallingCode.js","names":["USE_NON_GEOGRAPHIC_COUNTRY_CODE","getCountryByCallingCode","callingCode","nationalPhoneNumber","metadata","isNonGeographicCallingCode","possibleCountries","getCountryCodesForCallingCode","length","selectCountryFromList","Metadata","country","leadingDigits","search","getNumberType","phone","undefined"],"sources":["../../source/helpers/getCountryByCallingCode.js"],"sourcesContent":["import Metadata from '../metadata.js'\r\nimport getNumberType from './getNumberType.js'\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\nexport default function getCountryByCallingCode(callingCode, nationalPhoneNumber, metadata) {\r\n\t/* istanbul ignore if */\r\n\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\tif (metadata.isNonGeographicCallingCode(callingCode)) {\r\n\t\t\treturn '001'\r\n\t\t}\r\n\t}\r\n\t// Is always non-empty, because `callingCode` is always valid\r\n\tconst possibleCountries = metadata.getCountryCodesForCallingCode(callingCode)\r\n\tif (!possibleCountries) {\r\n\t\treturn\r\n\t}\r\n\t// If there's just one country corresponding to the country code,\r\n\t// then just return it, without further phone number digits validation.\r\n\tif (possibleCountries.length === 1) {\r\n\t\treturn possibleCountries[0]\r\n\t}\r\n\treturn selectCountryFromList(possibleCountries, nationalPhoneNumber, metadata.metadata)\r\n}\r\n\r\nfunction selectCountryFromList(possibleCountries, nationalPhoneNumber, metadata) {\r\n\t// Re-create `metadata` because it will be selecting a `country`.\r\n\tmetadata = new Metadata(metadata)\r\n\tfor (const country of possibleCountries) {\r\n\t\tmetadata.country(country)\r\n\t\t// Leading digits check would be the simplest and fastest one.\r\n\t\t// Leading digits patterns are only defined for about 20% of all countries.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits\r\n\t\t// Matching \"leading digits\" is a sufficient but not necessary condition.\r\n\t\tif (metadata.leadingDigits()) {\r\n\t\t\tif (nationalPhoneNumber &&\r\n\t\t\t\tnationalPhoneNumber.search(metadata.leadingDigits()) === 0) {\r\n\t\t\t\treturn country\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Else perform full validation with all of those\r\n\t\t// fixed-line/mobile/etc regular expressions.\r\n\t\telse if (getNumberType({ phone: nationalPhoneNumber, country }, undefined, metadata.metadata)) {\r\n\t\t\treturn country\r\n\t\t}\r\n\t}\r\n}"],"mappings":";;;;;;;AAAA;;AACA;;;;;;;;;;AAEA,IAAMA,+BAA+B,GAAG,KAAxC;;AAEe,SAASC,uBAAT,CAAiCC,WAAjC,EAA8CC,mBAA9C,EAAmEC,QAAnE,EAA6E;EAC3F;EACA,IAAIJ,+BAAJ,EAAqC;IACpC,IAAII,QAAQ,CAACC,0BAAT,CAAoCH,WAApC,CAAJ,EAAsD;MACrD,OAAO,KAAP;IACA;EACD,CAN0F,CAO3F;;;EACA,IAAMI,iBAAiB,GAAGF,QAAQ,CAACG,6BAAT,CAAuCL,WAAvC,CAA1B;;EACA,IAAI,CAACI,iBAAL,EAAwB;IACvB;EACA,CAX0F,CAY3F;EACA;;;EACA,IAAIA,iBAAiB,CAACE,MAAlB,KAA6B,CAAjC,EAAoC;IACnC,OAAOF,iBAAiB,CAAC,CAAD,CAAxB;EACA;;EACD,OAAOG,qBAAqB,CAACH,iBAAD,EAAoBH,mBAApB,EAAyCC,QAAQ,CAACA,QAAlD,CAA5B;AACA;;AAED,SAASK,qBAAT,CAA+BH,iBAA/B,EAAkDH,mBAAlD,EAAuEC,QAAvE,EAAiF;EAChF;EACAA,QAAQ,GAAG,IAAIM,oBAAJ,CAAaN,QAAb,CAAX;;EACA,qDAAsBE,iBAAtB,wCAAyC;IAAA,IAA9BK,OAA8B;IACxCP,QAAQ,CAACO,OAAT,CAAiBA,OAAjB,EADwC,CAExC;IACA;IACA;IACA;;IACA,IAAIP,QAAQ,CAACQ,aAAT,EAAJ,EAA8B;MAC7B,IAAIT,mBAAmB,IACtBA,mBAAmB,CAACU,MAApB,CAA2BT,QAAQ,CAACQ,aAAT,EAA3B,MAAyD,CAD1D,EAC6D;QAC5D,OAAOD,OAAP;MACA;IACD,CALD,CAMA;IACA;IAPA,KAQK,IAAI,IAAAG,yBAAA,EAAc;MAAEC,KAAK,EAAEZ,mBAAT;MAA8BQ,OAAO,EAAPA;IAA9B,CAAd,EAAuDK,SAAvD,EAAkEZ,QAAQ,CAACA,QAA3E,CAAJ,EAA0F;MAC9F,OAAOO,OAAP;IACA;EACD;AACD"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getIddPrefix.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getIddPrefix.js new file mode 100644 index 00000000..9cd7ed16 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getIddPrefix.js @@ -0,0 +1,36 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = getIddPrefix; + +var _metadata = _interopRequireDefault(require("../metadata.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +/** + * Pattern that makes it easy to distinguish whether a region has a single + * international dialing prefix or not. If a region has a single international + * prefix (e.g. 011 in USA), it will be represented as a string that contains + * a sequence of ASCII digits, and possibly a tilde, which signals waiting for + * the tone. If there are multiple available international prefixes in a + * region, they will be represented as a regex string that always contains one + * or more characters that are not ASCII digits or a tilde. + */ +var SINGLE_IDD_PREFIX_REG_EXP = /^[\d]+(?:[~\u2053\u223C\uFF5E][\d]+)?$/; // For regions that have multiple IDD prefixes +// a preferred IDD prefix is returned. + +function getIddPrefix(country, callingCode, metadata) { + var countryMetadata = new _metadata["default"](metadata); + countryMetadata.selectNumberingPlan(country, callingCode); + + if (countryMetadata.defaultIDDPrefix()) { + return countryMetadata.defaultIDDPrefix(); + } + + if (SINGLE_IDD_PREFIX_REG_EXP.test(countryMetadata.IDDPrefix())) { + return countryMetadata.IDDPrefix(); + } +} +//# sourceMappingURL=getIddPrefix.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getIddPrefix.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getIddPrefix.js.map new file mode 100644 index 00000000..8b07ff34 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getIddPrefix.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getIddPrefix.js","names":["SINGLE_IDD_PREFIX_REG_EXP","getIddPrefix","country","callingCode","metadata","countryMetadata","Metadata","selectNumberingPlan","defaultIDDPrefix","test","IDDPrefix"],"sources":["../../source/helpers/getIddPrefix.js"],"sourcesContent":["import Metadata from '../metadata.js'\r\n\r\n/**\r\n * Pattern that makes it easy to distinguish whether a region has a single\r\n * international dialing prefix or not. If a region has a single international\r\n * prefix (e.g. 011 in USA), it will be represented as a string that contains\r\n * a sequence of ASCII digits, and possibly a tilde, which signals waiting for\r\n * the tone. If there are multiple available international prefixes in a\r\n * region, they will be represented as a regex string that always contains one\r\n * or more characters that are not ASCII digits or a tilde.\r\n */\r\nconst SINGLE_IDD_PREFIX_REG_EXP = /^[\\d]+(?:[~\\u2053\\u223C\\uFF5E][\\d]+)?$/\r\n\r\n// For regions that have multiple IDD prefixes\r\n// a preferred IDD prefix is returned.\r\nexport default function getIddPrefix(country, callingCode, metadata) {\r\n\tconst countryMetadata = new Metadata(metadata)\r\n\tcountryMetadata.selectNumberingPlan(country, callingCode)\r\n\tif (countryMetadata.defaultIDDPrefix()) {\r\n\t\treturn countryMetadata.defaultIDDPrefix()\r\n\t}\r\n\tif (SINGLE_IDD_PREFIX_REG_EXP.test(countryMetadata.IDDPrefix())) {\r\n\t\treturn countryMetadata.IDDPrefix()\r\n\t}\r\n}\r\n"],"mappings":";;;;;;;AAAA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMA,yBAAyB,GAAG,wCAAlC,C,CAEA;AACA;;AACe,SAASC,YAAT,CAAsBC,OAAtB,EAA+BC,WAA/B,EAA4CC,QAA5C,EAAsD;EACpE,IAAMC,eAAe,GAAG,IAAIC,oBAAJ,CAAaF,QAAb,CAAxB;EACAC,eAAe,CAACE,mBAAhB,CAAoCL,OAApC,EAA6CC,WAA7C;;EACA,IAAIE,eAAe,CAACG,gBAAhB,EAAJ,EAAwC;IACvC,OAAOH,eAAe,CAACG,gBAAhB,EAAP;EACA;;EACD,IAAIR,yBAAyB,CAACS,IAA1B,CAA+BJ,eAAe,CAACK,SAAhB,EAA/B,CAAJ,EAAiE;IAChE,OAAOL,eAAe,CAACK,SAAhB,EAAP;EACA;AACD"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getNumberType.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getNumberType.js new file mode 100644 index 00000000..f924ba04 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getNumberType.js @@ -0,0 +1,103 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = getNumberType; +exports.isNumberTypeEqualTo = isNumberTypeEqualTo; + +var _metadata = _interopRequireDefault(require("../metadata.js")); + +var _matchesEntirely = _interopRequireDefault(require("./matchesEntirely.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +var NON_FIXED_LINE_PHONE_TYPES = ['MOBILE', 'PREMIUM_RATE', 'TOLL_FREE', 'SHARED_COST', 'VOIP', 'PERSONAL_NUMBER', 'PAGER', 'UAN', 'VOICEMAIL']; // Finds out national phone number type (fixed line, mobile, etc) + +function getNumberType(input, options, metadata) { + // If assigning the `{}` default value is moved to the arguments above, + // code coverage would decrease for some weird reason. + options = options || {}; // When `parse()` returned `{}` + // meaning that the phone number is not a valid one. + + if (!input.country) { + return; + } + + metadata = new _metadata["default"](metadata); + metadata.selectNumberingPlan(input.country, input.countryCallingCode); + var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // The following is copy-pasted from the original function: + // https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835 + // Is this national number even valid for this country + + if (!(0, _matchesEntirely["default"])(nationalNumber, metadata.nationalNumberPattern())) { + return; + } // Is it fixed line number + + + if (isNumberTypeEqualTo(nationalNumber, 'FIXED_LINE', metadata)) { + // Because duplicate regular expressions are removed + // to reduce metadata size, if "mobile" pattern is "" + // then it means it was removed due to being a duplicate of the fixed-line pattern. + // + if (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') { + return 'FIXED_LINE_OR_MOBILE'; + } // `MOBILE` type pattern isn't included if it matched `FIXED_LINE` one. + // For example, for "US" country. + // Old metadata (< `1.0.18`) had a specific "types" data structure + // that happened to be `undefined` for `MOBILE` in that case. + // Newer metadata (>= `1.0.18`) has another data structure that is + // not `undefined` for `MOBILE` in that case (it's just an empty array). + // So this `if` is just for backwards compatibility with old metadata. + + + if (!metadata.type('MOBILE')) { + return 'FIXED_LINE_OR_MOBILE'; + } // Check if the number happens to qualify as both fixed line and mobile. + // (no such country in the minimal metadata set) + + /* istanbul ignore if */ + + + if (isNumberTypeEqualTo(nationalNumber, 'MOBILE', metadata)) { + return 'FIXED_LINE_OR_MOBILE'; + } + + return 'FIXED_LINE'; + } + + for (var _iterator = _createForOfIteratorHelperLoose(NON_FIXED_LINE_PHONE_TYPES), _step; !(_step = _iterator()).done;) { + var type = _step.value; + + if (isNumberTypeEqualTo(nationalNumber, type, metadata)) { + return type; + } + } +} + +function isNumberTypeEqualTo(nationalNumber, type, metadata) { + type = metadata.type(type); + + if (!type || !type.pattern()) { + return false; + } // Check if any possible number lengths are present; + // if so, we use them to avoid checking + // the validation pattern if they don't match. + // If they are absent, this means they match + // the general description, which we have + // already checked before a specific number type. + + + if (type.possibleLengths() && type.possibleLengths().indexOf(nationalNumber.length) < 0) { + return false; + } + + return (0, _matchesEntirely["default"])(nationalNumber, type.pattern()); +} +//# sourceMappingURL=getNumberType.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getNumberType.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getNumberType.js.map new file mode 100644 index 00000000..3a7c5252 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getNumberType.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getNumberType.js","names":["NON_FIXED_LINE_PHONE_TYPES","getNumberType","input","options","metadata","country","Metadata","selectNumberingPlan","countryCallingCode","nationalNumber","v2","phone","matchesEntirely","nationalNumberPattern","isNumberTypeEqualTo","type","pattern","possibleLengths","indexOf","length"],"sources":["../../source/helpers/getNumberType.js"],"sourcesContent":["import Metadata from '../metadata.js'\r\nimport matchesEntirely from './matchesEntirely.js'\r\n\r\nconst NON_FIXED_LINE_PHONE_TYPES = [\r\n\t'MOBILE',\r\n\t'PREMIUM_RATE',\r\n\t'TOLL_FREE',\r\n\t'SHARED_COST',\r\n\t'VOIP',\r\n\t'PERSONAL_NUMBER',\r\n\t'PAGER',\r\n\t'UAN',\r\n\t'VOICEMAIL'\r\n]\r\n\r\n// Finds out national phone number type (fixed line, mobile, etc)\r\nexport default function getNumberType(input, options, metadata)\r\n{\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\r\n\t// When `parse()` returned `{}`\r\n\t// meaning that the phone number is not a valid one.\r\n\tif (!input.country) {\r\n\t\treturn\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tmetadata.selectNumberingPlan(input.country, input.countryCallingCode)\r\n\r\n\tconst nationalNumber = options.v2 ? input.nationalNumber : input.phone\r\n\r\n\t// The following is copy-pasted from the original function:\r\n\t// https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835\r\n\r\n\t// Is this national number even valid for this country\r\n\tif (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) {\r\n\t\treturn\r\n\t}\r\n\r\n\t// Is it fixed line number\r\n\tif (isNumberTypeEqualTo(nationalNumber, 'FIXED_LINE', metadata)) {\r\n\t\t// Because duplicate regular expressions are removed\r\n\t\t// to reduce metadata size, if \"mobile\" pattern is \"\"\r\n\t\t// then it means it was removed due to being a duplicate of the fixed-line pattern.\r\n\t\t//\r\n\t\tif (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\t// `MOBILE` type pattern isn't included if it matched `FIXED_LINE` one.\r\n\t\t// For example, for \"US\" country.\r\n\t\t// Old metadata (< `1.0.18`) had a specific \"types\" data structure\r\n\t\t// that happened to be `undefined` for `MOBILE` in that case.\r\n\t\t// Newer metadata (>= `1.0.18`) has another data structure that is\r\n\t\t// not `undefined` for `MOBILE` in that case (it's just an empty array).\r\n\t\t// So this `if` is just for backwards compatibility with old metadata.\r\n\t\tif (!metadata.type('MOBILE')) {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\t// Check if the number happens to qualify as both fixed line and mobile.\r\n\t\t// (no such country in the minimal metadata set)\r\n\t\t/* istanbul ignore if */\r\n\t\tif (isNumberTypeEqualTo(nationalNumber, 'MOBILE', metadata)) {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\treturn 'FIXED_LINE'\r\n\t}\r\n\r\n\tfor (const type of NON_FIXED_LINE_PHONE_TYPES) {\r\n\t\tif (isNumberTypeEqualTo(nationalNumber, type, metadata)) {\r\n\t\t\treturn type\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function isNumberTypeEqualTo(nationalNumber, type, metadata) {\r\n\ttype = metadata.type(type)\r\n\tif (!type || !type.pattern()) {\r\n\t\treturn false\r\n\t}\r\n\t// Check if any possible number lengths are present;\r\n\t// if so, we use them to avoid checking\r\n\t// the validation pattern if they don't match.\r\n\t// If they are absent, this means they match\r\n\t// the general description, which we have\r\n\t// already checked before a specific number type.\r\n\tif (type.possibleLengths() &&\r\n\t\ttype.possibleLengths().indexOf(nationalNumber.length) < 0) {\r\n\t\treturn false\r\n\t}\r\n\treturn matchesEntirely(nationalNumber, type.pattern())\r\n}"],"mappings":";;;;;;;;AAAA;;AACA;;;;;;;;;;AAEA,IAAMA,0BAA0B,GAAG,CAClC,QADkC,EAElC,cAFkC,EAGlC,WAHkC,EAIlC,aAJkC,EAKlC,MALkC,EAMlC,iBANkC,EAOlC,OAPkC,EAQlC,KARkC,EASlC,WATkC,CAAnC,C,CAYA;;AACe,SAASC,aAAT,CAAuBC,KAAvB,EAA8BC,OAA9B,EAAuCC,QAAvC,EACf;EACC;EACA;EACAD,OAAO,GAAGA,OAAO,IAAI,EAArB,CAHD,CAKC;EACA;;EACA,IAAI,CAACD,KAAK,CAACG,OAAX,EAAoB;IACnB;EACA;;EAEDD,QAAQ,GAAG,IAAIE,oBAAJ,CAAaF,QAAb,CAAX;EAEAA,QAAQ,CAACG,mBAAT,CAA6BL,KAAK,CAACG,OAAnC,EAA4CH,KAAK,CAACM,kBAAlD;EAEA,IAAMC,cAAc,GAAGN,OAAO,CAACO,EAAR,GAAaR,KAAK,CAACO,cAAnB,GAAoCP,KAAK,CAACS,KAAjE,CAfD,CAiBC;EACA;EAEA;;EACA,IAAI,CAAC,IAAAC,2BAAA,EAAgBH,cAAhB,EAAgCL,QAAQ,CAACS,qBAAT,EAAhC,CAAL,EAAwE;IACvE;EACA,CAvBF,CAyBC;;;EACA,IAAIC,mBAAmB,CAACL,cAAD,EAAiB,YAAjB,EAA+BL,QAA/B,CAAvB,EAAiE;IAChE;IACA;IACA;IACA;IACA,IAAIA,QAAQ,CAACW,IAAT,CAAc,QAAd,KAA2BX,QAAQ,CAACW,IAAT,CAAc,QAAd,EAAwBC,OAAxB,OAAsC,EAArE,EAAyE;MACxE,OAAO,sBAAP;IACA,CAP+D,CAShE;IACA;IACA;IACA;IACA;IACA;IACA;;;IACA,IAAI,CAACZ,QAAQ,CAACW,IAAT,CAAc,QAAd,CAAL,EAA8B;MAC7B,OAAO,sBAAP;IACA,CAlB+D,CAoBhE;IACA;;IACA;;;IACA,IAAID,mBAAmB,CAACL,cAAD,EAAiB,QAAjB,EAA2BL,QAA3B,CAAvB,EAA6D;MAC5D,OAAO,sBAAP;IACA;;IAED,OAAO,YAAP;EACA;;EAED,qDAAmBJ,0BAAnB,wCAA+C;IAAA,IAApCe,IAAoC;;IAC9C,IAAID,mBAAmB,CAACL,cAAD,EAAiBM,IAAjB,EAAuBX,QAAvB,CAAvB,EAAyD;MACxD,OAAOW,IAAP;IACA;EACD;AACD;;AAEM,SAASD,mBAAT,CAA6BL,cAA7B,EAA6CM,IAA7C,EAAmDX,QAAnD,EAA6D;EACnEW,IAAI,GAAGX,QAAQ,CAACW,IAAT,CAAcA,IAAd,CAAP;;EACA,IAAI,CAACA,IAAD,IAAS,CAACA,IAAI,CAACC,OAAL,EAAd,EAA8B;IAC7B,OAAO,KAAP;EACA,CAJkE,CAKnE;EACA;EACA;EACA;EACA;EACA;;;EACA,IAAID,IAAI,CAACE,eAAL,MACHF,IAAI,CAACE,eAAL,GAAuBC,OAAvB,CAA+BT,cAAc,CAACU,MAA9C,IAAwD,CADzD,EAC4D;IAC3D,OAAO,KAAP;EACA;;EACD,OAAO,IAAAP,2BAAA,EAAgBH,cAAhB,EAAgCM,IAAI,CAACC,OAAL,EAAhC,CAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getNumberType.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getNumberType.test.js new file mode 100644 index 00000000..c7a99ede --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getNumberType.test.js @@ -0,0 +1,21 @@ +"use strict"; + +var _getNumberType = _interopRequireDefault(require("./getNumberType.js")); + +var _metadataMin = _interopRequireDefault(require("../../test/metadata/1.0.0/metadata.min.json")); + +var _metadata = _interopRequireDefault(require("../metadata.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +describe('getNumberType', function () { + it('should get number type when using old metadata', function () { + (0, _getNumberType["default"])({ + nationalNumber: '2133734253', + country: 'US' + }, { + v2: true + }, _metadataMin["default"]).should.equal('FIXED_LINE_OR_MOBILE'); + }); +}); +//# sourceMappingURL=getNumberType.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getNumberType.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getNumberType.test.js.map new file mode 100644 index 00000000..056fd724 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/getNumberType.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getNumberType.test.js","names":["describe","it","getNumberType","nationalNumber","country","v2","oldMetadata","should","equal"],"sources":["../../source/helpers/getNumberType.test.js"],"sourcesContent":["import getNumberType from './getNumberType.js'\r\n\r\nimport oldMetadata from '../../test/metadata/1.0.0/metadata.min.json' assert { type: 'json' }\r\n\r\nimport Metadata from '../metadata.js'\r\n\r\n\r\ndescribe('getNumberType', function() {\r\n\tit('should get number type when using old metadata', function() {\r\n\t\tgetNumberType(\r\n\t\t\t{\r\n\t\t\t\tnationalNumber: '2133734253',\r\n\t\t\t\tcountry: 'US'\r\n\t\t\t},\r\n\t\t\t{ v2: true },\r\n\t\t\toldMetadata\r\n\t\t).should.equal('FIXED_LINE_OR_MOBILE')\r\n\t})\r\n})"],"mappings":";;AAAA;;AAEA;;AAEA;;;;AAGAA,QAAQ,CAAC,eAAD,EAAkB,YAAW;EACpCC,EAAE,CAAC,gDAAD,EAAmD,YAAW;IAC/D,IAAAC,yBAAA,EACC;MACCC,cAAc,EAAE,YADjB;MAECC,OAAO,EAAE;IAFV,CADD,EAKC;MAAEC,EAAE,EAAE;IAAN,CALD,EAMCC,uBAND,EAOEC,MAPF,CAOSC,KAPT,CAOe,sBAPf;EAQA,CATC,CAAF;AAUA,CAXO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/isViablePhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/isViablePhoneNumber.js new file mode 100644 index 00000000..48642732 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/isViablePhoneNumber.js @@ -0,0 +1,85 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.VALID_PHONE_NUMBER_WITH_EXTENSION = exports.VALID_PHONE_NUMBER = void 0; +exports["default"] = isViablePhoneNumber; +exports.isViablePhoneNumberStart = isViablePhoneNumberStart; + +var _constants = require("../constants.js"); + +var _createExtensionPattern = _interopRequireDefault(require("./extension/createExtensionPattern.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +// Regular expression of viable phone numbers. This is location independent. +// Checks we have at least three leading digits, and only valid punctuation, +// alpha characters and digits in the phone number. Does not include extension +// data. The symbol 'x' is allowed here as valid punctuation since it is often +// used as a placeholder for carrier codes, for example in Brazilian phone +// numbers. We also allow multiple '+' characters at the start. +// +// Corresponds to the following: +// [digits]{minLengthNsn}| +// plus_sign* +// (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])* +// +// The first reg-ex is to allow short numbers (two digits long) to be parsed if +// they are entered as "15" etc, but only if there is no punctuation in them. +// The second expression restricts the number of digits to three or more, but +// then allows them to be in international form, and to have alpha-characters +// and punctuation. We split up the two reg-exes here and combine them when +// creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it +// with ^ and append $ to each branch. +// +// "Note VALID_PUNCTUATION starts with a -, +// so must be the first in the range" (c) Google devs. +// (wtf did they mean by saying that; probably nothing) +// +var MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + _constants.VALID_DIGITS + ']{' + _constants.MIN_LENGTH_FOR_NSN + '}'; // +// And this is the second reg-exp: +// (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp) +// + +var VALID_PHONE_NUMBER = '[' + _constants.PLUS_CHARS + ']{0,1}' + '(?:' + '[' + _constants.VALID_PUNCTUATION + ']*' + '[' + _constants.VALID_DIGITS + ']' + '){3,}' + '[' + _constants.VALID_PUNCTUATION + _constants.VALID_DIGITS + ']*'; // This regular expression isn't present in Google's `libphonenumber` +// and is only used to determine whether the phone number being input +// is too short for it to even consider it a "valid" number. +// This is just a way to differentiate between a really invalid phone +// number like "abcde" and a valid phone number that a user has just +// started inputting, like "+1" or "1": both these cases would be +// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this +// library can provide a more detailed error message — whether it's +// really "not a number", or is it just a start of a valid phone number. + +exports.VALID_PHONE_NUMBER = VALID_PHONE_NUMBER; +var VALID_PHONE_NUMBER_START_REG_EXP = new RegExp('^' + '[' + _constants.PLUS_CHARS + ']{0,1}' + '(?:' + '[' + _constants.VALID_PUNCTUATION + ']*' + '[' + _constants.VALID_DIGITS + ']' + '){1,2}' + '$', 'i'); +var VALID_PHONE_NUMBER_WITH_EXTENSION = VALID_PHONE_NUMBER + // Phone number extensions +'(?:' + (0, _createExtensionPattern["default"])() + ')?'; // The combined regular expression for valid phone numbers: +// + +exports.VALID_PHONE_NUMBER_WITH_EXTENSION = VALID_PHONE_NUMBER_WITH_EXTENSION; +var VALID_PHONE_NUMBER_PATTERN = new RegExp( // Either a short two-digit-only phone number +'^' + MIN_LENGTH_PHONE_NUMBER_PATTERN + '$' + '|' + // Or a longer fully parsed phone number (min 3 characters) +'^' + VALID_PHONE_NUMBER_WITH_EXTENSION + '$', 'i'); // Checks to see if the string of characters could possibly be a phone number at +// all. At the moment, checks to see that the string begins with at least 2 +// digits, ignoring any punctuation commonly found in phone numbers. This method +// does not require the number to be normalized in advance - but does assume +// that leading non-number symbols have been removed, such as by the method +// `extract_possible_number`. +// + +function isViablePhoneNumber(number) { + return number.length >= _constants.MIN_LENGTH_FOR_NSN && VALID_PHONE_NUMBER_PATTERN.test(number); +} // This is just a way to differentiate between a really invalid phone +// number like "abcde" and a valid phone number that a user has just +// started inputting, like "+1" or "1": both these cases would be +// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this +// library can provide a more detailed error message — whether it's +// really "not a number", or is it just a start of a valid phone number. + + +function isViablePhoneNumberStart(number) { + return VALID_PHONE_NUMBER_START_REG_EXP.test(number); +} +//# sourceMappingURL=isViablePhoneNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/isViablePhoneNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/isViablePhoneNumber.js.map new file mode 100644 index 00000000..a1765046 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/isViablePhoneNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isViablePhoneNumber.js","names":["MIN_LENGTH_PHONE_NUMBER_PATTERN","VALID_DIGITS","MIN_LENGTH_FOR_NSN","VALID_PHONE_NUMBER","PLUS_CHARS","VALID_PUNCTUATION","VALID_PHONE_NUMBER_START_REG_EXP","RegExp","VALID_PHONE_NUMBER_WITH_EXTENSION","createExtensionPattern","VALID_PHONE_NUMBER_PATTERN","isViablePhoneNumber","number","length","test","isViablePhoneNumberStart"],"sources":["../../source/helpers/isViablePhoneNumber.js"],"sourcesContent":["import {\r\n\tMIN_LENGTH_FOR_NSN,\r\n\tVALID_DIGITS,\r\n\tVALID_PUNCTUATION,\r\n\tPLUS_CHARS\r\n} from '../constants.js'\r\n\r\nimport createExtensionPattern from './extension/createExtensionPattern.js'\r\n\r\n// Regular expression of viable phone numbers. This is location independent.\r\n// Checks we have at least three leading digits, and only valid punctuation,\r\n// alpha characters and digits in the phone number. Does not include extension\r\n// data. The symbol 'x' is allowed here as valid punctuation since it is often\r\n// used as a placeholder for carrier codes, for example in Brazilian phone\r\n// numbers. We also allow multiple '+' characters at the start.\r\n//\r\n// Corresponds to the following:\r\n// [digits]{minLengthNsn}|\r\n// plus_sign*\r\n// (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])*\r\n//\r\n// The first reg-ex is to allow short numbers (two digits long) to be parsed if\r\n// they are entered as \"15\" etc, but only if there is no punctuation in them.\r\n// The second expression restricts the number of digits to three or more, but\r\n// then allows them to be in international form, and to have alpha-characters\r\n// and punctuation. We split up the two reg-exes here and combine them when\r\n// creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it\r\n// with ^ and append $ to each branch.\r\n//\r\n// \"Note VALID_PUNCTUATION starts with a -,\r\n// so must be the first in the range\" (c) Google devs.\r\n// (wtf did they mean by saying that; probably nothing)\r\n//\r\nconst MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + VALID_DIGITS + ']{' + MIN_LENGTH_FOR_NSN + '}'\r\n//\r\n// And this is the second reg-exp:\r\n// (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp)\r\n//\r\nexport const VALID_PHONE_NUMBER =\r\n\t'[' + PLUS_CHARS + ']{0,1}' +\r\n\t'(?:' +\r\n\t\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t\t'[' + VALID_DIGITS + ']' +\r\n\t'){3,}' +\r\n\t'[' +\r\n\t\tVALID_PUNCTUATION +\r\n\t\tVALID_DIGITS +\r\n\t']*'\r\n\r\n// This regular expression isn't present in Google's `libphonenumber`\r\n// and is only used to determine whether the phone number being input\r\n// is too short for it to even consider it a \"valid\" number.\r\n// This is just a way to differentiate between a really invalid phone\r\n// number like \"abcde\" and a valid phone number that a user has just\r\n// started inputting, like \"+1\" or \"1\": both these cases would be\r\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\r\n// library can provide a more detailed error message — whether it's\r\n// really \"not a number\", or is it just a start of a valid phone number.\r\nconst VALID_PHONE_NUMBER_START_REG_EXP = new RegExp(\r\n\t'^' +\r\n\t'[' + PLUS_CHARS + ']{0,1}' +\r\n\t'(?:' +\r\n\t\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t\t'[' + VALID_DIGITS + ']' +\r\n\t'){1,2}' +\r\n\t'$'\r\n, 'i')\r\n\r\nexport const VALID_PHONE_NUMBER_WITH_EXTENSION =\r\n\tVALID_PHONE_NUMBER +\r\n\t// Phone number extensions\r\n\t'(?:' + createExtensionPattern() + ')?'\r\n\r\n// The combined regular expression for valid phone numbers:\r\n//\r\nconst VALID_PHONE_NUMBER_PATTERN = new RegExp(\r\n\t// Either a short two-digit-only phone number\r\n\t'^' +\r\n\t\tMIN_LENGTH_PHONE_NUMBER_PATTERN +\r\n\t'$' +\r\n\t'|' +\r\n\t// Or a longer fully parsed phone number (min 3 characters)\r\n\t'^' +\r\n\t\tVALID_PHONE_NUMBER_WITH_EXTENSION +\r\n\t'$'\r\n, 'i')\r\n\r\n// Checks to see if the string of characters could possibly be a phone number at\r\n// all. At the moment, checks to see that the string begins with at least 2\r\n// digits, ignoring any punctuation commonly found in phone numbers. This method\r\n// does not require the number to be normalized in advance - but does assume\r\n// that leading non-number symbols have been removed, such as by the method\r\n// `extract_possible_number`.\r\n//\r\nexport default function isViablePhoneNumber(number) {\r\n\treturn number.length >= MIN_LENGTH_FOR_NSN &&\r\n\t\tVALID_PHONE_NUMBER_PATTERN.test(number)\r\n}\r\n\r\n// This is just a way to differentiate between a really invalid phone\r\n// number like \"abcde\" and a valid phone number that a user has just\r\n// started inputting, like \"+1\" or \"1\": both these cases would be\r\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\r\n// library can provide a more detailed error message — whether it's\r\n// really \"not a number\", or is it just a start of a valid phone number.\r\nexport function isViablePhoneNumberStart(number) {\r\n\treturn VALID_PHONE_NUMBER_START_REG_EXP.test(number)\r\n}"],"mappings":";;;;;;;;;AAAA;;AAOA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMA,+BAA+B,GAAG,MAAMC,uBAAN,GAAqB,IAArB,GAA4BC,6BAA5B,GAAiD,GAAzF,C,CACA;AACA;AACA;AACA;;AACO,IAAMC,kBAAkB,GAC9B,MAAMC,qBAAN,GAAmB,QAAnB,GACA,KADA,GAEC,GAFD,GAEOC,4BAFP,GAE2B,IAF3B,GAGC,GAHD,GAGOJ,uBAHP,GAGsB,GAHtB,GAIA,OAJA,GAKA,GALA,GAMCI,4BAND,GAOCJ,uBAPD,GAQA,IATM,C,CAWP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMK,gCAAgC,GAAG,IAAIC,MAAJ,CACxC,MACA,GADA,GACMH,qBADN,GACmB,QADnB,GAEA,KAFA,GAGC,GAHD,GAGOC,4BAHP,GAG2B,IAH3B,GAIC,GAJD,GAIOJ,uBAJP,GAIsB,GAJtB,GAKA,QALA,GAMA,GAPwC,EAQvC,GARuC,CAAzC;AAUO,IAAMO,iCAAiC,GAC7CL,kBAAkB,GAClB;AACA,KAFA,GAEQ,IAAAM,kCAAA,GAFR,GAEmC,IAH7B,C,CAKP;AACA;;;AACA,IAAMC,0BAA0B,GAAG,IAAIH,MAAJ,EAClC;AACA,MACCP,+BADD,GAEA,GAFA,GAGA,GAHA,GAIA;AACA,GALA,GAMCQ,iCAND,GAOA,GATkC,EAUjC,GAViC,CAAnC,C,CAYA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASG,mBAAT,CAA6BC,MAA7B,EAAqC;EACnD,OAAOA,MAAM,CAACC,MAAP,IAAiBX,6BAAjB,IACNQ,0BAA0B,CAACI,IAA3B,CAAgCF,MAAhC,CADD;AAEA,C,CAED;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASG,wBAAT,CAAkCH,MAAlC,EAA0C;EAChD,OAAON,gCAAgC,CAACQ,IAAjC,CAAsCF,MAAtC,CAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/matchesEntirely.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/matchesEntirely.js new file mode 100644 index 00000000..d50b5fd6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/matchesEntirely.js @@ -0,0 +1,19 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = matchesEntirely; + +/** + * Checks whether the entire input sequence can be matched + * against the regular expression. + * @return {boolean} + */ +function matchesEntirely(text, regular_expression) { + // If assigning the `''` default value is moved to the arguments above, + // code coverage would decrease for some weird reason. + text = text || ''; + return new RegExp('^(?:' + regular_expression + ')$').test(text); +} +//# sourceMappingURL=matchesEntirely.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/matchesEntirely.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/matchesEntirely.js.map new file mode 100644 index 00000000..6fd9a8b7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/matchesEntirely.js.map @@ -0,0 +1 @@ +{"version":3,"file":"matchesEntirely.js","names":["matchesEntirely","text","regular_expression","RegExp","test"],"sources":["../../source/helpers/matchesEntirely.js"],"sourcesContent":["/**\r\n * Checks whether the entire input sequence can be matched\r\n * against the regular expression.\r\n * @return {boolean}\r\n */\r\nexport default function matchesEntirely(text, regular_expression) {\r\n\t// If assigning the `''` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\ttext = text || ''\r\n\treturn new RegExp('^(?:' + regular_expression + ')$').test(text)\r\n}"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACe,SAASA,eAAT,CAAyBC,IAAzB,EAA+BC,kBAA/B,EAAmD;EACjE;EACA;EACAD,IAAI,GAAGA,IAAI,IAAI,EAAf;EACA,OAAO,IAAIE,MAAJ,CAAW,SAASD,kBAAT,GAA8B,IAAzC,EAA+CE,IAA/C,CAAoDH,IAApD,CAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/matchesEntirely.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/matchesEntirely.test.js new file mode 100644 index 00000000..27cf8fe6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/matchesEntirely.test.js @@ -0,0 +1,15 @@ +"use strict"; + +var _matchesEntirely = _interopRequireDefault(require("./matchesEntirely.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +describe('matchesEntirely', function () { + it('should work in edge cases', function () { + // No text. + (0, _matchesEntirely["default"])(undefined, '').should.equal(true); // "OR" in regexp. + + (0, _matchesEntirely["default"])('911231231', '4\d{8}|[1-9]\d{7}').should.equal(false); + }); +}); +//# sourceMappingURL=matchesEntirely.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/matchesEntirely.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/matchesEntirely.test.js.map new file mode 100644 index 00000000..51aa5638 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/matchesEntirely.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"matchesEntirely.test.js","names":["describe","it","matchesEntirely","undefined","should","equal"],"sources":["../../source/helpers/matchesEntirely.test.js"],"sourcesContent":["import matchesEntirely from './matchesEntirely.js'\r\n\r\ndescribe('matchesEntirely', () => {\r\n\tit('should work in edge cases', () => {\r\n\t\t// No text.\r\n\t\tmatchesEntirely(undefined, '').should.equal(true)\r\n\r\n\t\t// \"OR\" in regexp.\r\n\t\tmatchesEntirely('911231231', '4\\d{8}|[1-9]\\d{7}').should.equal(false)\r\n\t})\r\n})"],"mappings":";;AAAA;;;;AAEAA,QAAQ,CAAC,iBAAD,EAAoB,YAAM;EACjCC,EAAE,CAAC,2BAAD,EAA8B,YAAM;IACrC;IACA,IAAAC,2BAAA,EAAgBC,SAAhB,EAA2B,EAA3B,EAA+BC,MAA/B,CAAsCC,KAAtC,CAA4C,IAA5C,EAFqC,CAIrC;;IACA,IAAAH,2BAAA,EAAgB,WAAhB,EAA6B,mBAA7B,EAAkDE,MAAlD,CAAyDC,KAAzD,CAA+D,KAA/D;EACA,CANC,CAAF;AAOA,CARO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/mergeArrays.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/mergeArrays.js new file mode 100644 index 00000000..39dfea2c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/mergeArrays.js @@ -0,0 +1,40 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = mergeArrays; + +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +/** + * Merges two arrays. + * @param {*} a + * @param {*} b + * @return {*} + */ +function mergeArrays(a, b) { + var merged = a.slice(); + + for (var _iterator = _createForOfIteratorHelperLoose(b), _step; !(_step = _iterator()).done;) { + var element = _step.value; + + if (a.indexOf(element) < 0) { + merged.push(element); + } + } + + return merged.sort(function (a, b) { + return a - b; + }); // ES6 version, requires Set polyfill. + // let merged = new Set(a) + // for (const element of b) { + // merged.add(i) + // } + // return Array.from(merged).sort((a, b) => a - b) +} +//# sourceMappingURL=mergeArrays.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/mergeArrays.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/mergeArrays.js.map new file mode 100644 index 00000000..a3f42023 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/mergeArrays.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mergeArrays.js","names":["mergeArrays","a","b","merged","slice","element","indexOf","push","sort"],"sources":["../../source/helpers/mergeArrays.js"],"sourcesContent":["/**\r\n * Merges two arrays.\r\n * @param {*} a\r\n * @param {*} b\r\n * @return {*}\r\n */\r\nexport default function mergeArrays(a, b) {\r\n\tconst merged = a.slice()\r\n\r\n\tfor (const element of b) {\r\n\t\tif (a.indexOf(element) < 0) {\r\n\t\t\tmerged.push(element)\r\n\t\t}\r\n\t}\r\n\r\n\treturn merged.sort((a, b) => a - b)\r\n\r\n\t// ES6 version, requires Set polyfill.\r\n\t// let merged = new Set(a)\r\n\t// for (const element of b) {\r\n\t// \tmerged.add(i)\r\n\t// }\r\n\t// return Array.from(merged).sort((a, b) => a - b)\r\n}"],"mappings":";;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,WAAT,CAAqBC,CAArB,EAAwBC,CAAxB,EAA2B;EACzC,IAAMC,MAAM,GAAGF,CAAC,CAACG,KAAF,EAAf;;EAEA,qDAAsBF,CAAtB,wCAAyB;IAAA,IAAdG,OAAc;;IACxB,IAAIJ,CAAC,CAACK,OAAF,CAAUD,OAAV,IAAqB,CAAzB,EAA4B;MAC3BF,MAAM,CAACI,IAAP,CAAYF,OAAZ;IACA;EACD;;EAED,OAAOF,MAAM,CAACK,IAAP,CAAY,UAACP,CAAD,EAAIC,CAAJ;IAAA,OAAUD,CAAC,GAAGC,CAAd;EAAA,CAAZ,CAAP,CATyC,CAWzC;EACA;EACA;EACA;EACA;EACA;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/mergeArrays.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/mergeArrays.test.js new file mode 100644 index 00000000..f60b0b84 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/mergeArrays.test.js @@ -0,0 +1,12 @@ +"use strict"; + +var _mergeArrays = _interopRequireDefault(require("./mergeArrays.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +describe('mergeArrays', function () { + it('should merge arrays', function () { + (0, _mergeArrays["default"])([1, 2], [2, 3]).should.deep.equal([1, 2, 3]); + }); +}); +//# sourceMappingURL=mergeArrays.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/mergeArrays.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/mergeArrays.test.js.map new file mode 100644 index 00000000..2850ffd4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/mergeArrays.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mergeArrays.test.js","names":["describe","it","mergeArrays","should","deep","equal"],"sources":["../../source/helpers/mergeArrays.test.js"],"sourcesContent":["import mergeArrays from './mergeArrays.js'\r\n\r\ndescribe('mergeArrays', () => {\r\n\tit('should merge arrays', () => {\r\n\t\tmergeArrays([1, 2], [2, 3]).should.deep.equal([1, 2, 3])\r\n\t})\r\n})"],"mappings":";;AAAA;;;;AAEAA,QAAQ,CAAC,aAAD,EAAgB,YAAM;EAC7BC,EAAE,CAAC,qBAAD,EAAwB,YAAM;IAC/B,IAAAC,uBAAA,EAAY,CAAC,CAAD,EAAI,CAAJ,CAAZ,EAAoB,CAAC,CAAD,EAAI,CAAJ,CAApB,EAA4BC,MAA5B,CAAmCC,IAAnC,CAAwCC,KAAxC,CAA8C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAA9C;EACA,CAFC,CAAF;AAGA,CAJO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/parseDigits.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/parseDigits.js new file mode 100644 index 00000000..fc7081c8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/parseDigits.js @@ -0,0 +1,133 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DIGITS = void 0; +exports["default"] = parseDigits; +exports.parseDigit = parseDigit; + +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +// These mappings map a character (key) to a specific digit that should +// replace it for normalization purposes. Non-European digits that +// may be used in phone numbers are mapped to a European equivalent. +// +// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`. +// +var DIGITS = { + '0': '0', + '1': '1', + '2': '2', + '3': '3', + '4': '4', + '5': '5', + '6': '6', + '7': '7', + '8': '8', + '9': '9', + "\uFF10": '0', + // Fullwidth digit 0 + "\uFF11": '1', + // Fullwidth digit 1 + "\uFF12": '2', + // Fullwidth digit 2 + "\uFF13": '3', + // Fullwidth digit 3 + "\uFF14": '4', + // Fullwidth digit 4 + "\uFF15": '5', + // Fullwidth digit 5 + "\uFF16": '6', + // Fullwidth digit 6 + "\uFF17": '7', + // Fullwidth digit 7 + "\uFF18": '8', + // Fullwidth digit 8 + "\uFF19": '9', + // Fullwidth digit 9 + "\u0660": '0', + // Arabic-indic digit 0 + "\u0661": '1', + // Arabic-indic digit 1 + "\u0662": '2', + // Arabic-indic digit 2 + "\u0663": '3', + // Arabic-indic digit 3 + "\u0664": '4', + // Arabic-indic digit 4 + "\u0665": '5', + // Arabic-indic digit 5 + "\u0666": '6', + // Arabic-indic digit 6 + "\u0667": '7', + // Arabic-indic digit 7 + "\u0668": '8', + // Arabic-indic digit 8 + "\u0669": '9', + // Arabic-indic digit 9 + "\u06F0": '0', + // Eastern-Arabic digit 0 + "\u06F1": '1', + // Eastern-Arabic digit 1 + "\u06F2": '2', + // Eastern-Arabic digit 2 + "\u06F3": '3', + // Eastern-Arabic digit 3 + "\u06F4": '4', + // Eastern-Arabic digit 4 + "\u06F5": '5', + // Eastern-Arabic digit 5 + "\u06F6": '6', + // Eastern-Arabic digit 6 + "\u06F7": '7', + // Eastern-Arabic digit 7 + "\u06F8": '8', + // Eastern-Arabic digit 8 + "\u06F9": '9' // Eastern-Arabic digit 9 + +}; +exports.DIGITS = DIGITS; + +function parseDigit(character) { + return DIGITS[character]; +} +/** + * Parses phone number digits from a string. + * Drops all punctuation leaving only digits. + * Also converts wide-ascii and arabic-indic numerals to conventional numerals. + * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`. + * @param {string} string + * @return {string} + * @example + * ```js + * parseDigits('8 (800) 555') + * // Outputs '8800555'. + * ``` + */ + + +function parseDigits(string) { + var result = ''; // Using `.split('')` here instead of normal `for ... of` + // because the importing application doesn't neccessarily include an ES6 polyfill. + // The `.split('')` approach discards "exotic" UTF-8 characters + // (the ones consisting of four bytes) but digits + // (including non-European ones) don't fall into that range + // so such "exotic" characters would be discarded anyway. + + for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) { + var character = _step.value; + var digit = parseDigit(character); + + if (digit) { + result += digit; + } + } + + return result; +} +//# sourceMappingURL=parseDigits.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/parseDigits.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/parseDigits.js.map new file mode 100644 index 00000000..120e16a8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/parseDigits.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parseDigits.js","names":["DIGITS","parseDigit","character","parseDigits","string","result","split","digit"],"sources":["../../source/helpers/parseDigits.js"],"sourcesContent":["// These mappings map a character (key) to a specific digit that should\r\n// replace it for normalization purposes. Non-European digits that\r\n// may be used in phone numbers are mapped to a European equivalent.\r\n//\r\n// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n//\r\nexport const DIGITS = {\r\n\t'0': '0',\r\n\t'1': '1',\r\n\t'2': '2',\r\n\t'3': '3',\r\n\t'4': '4',\r\n\t'5': '5',\r\n\t'6': '6',\r\n\t'7': '7',\r\n\t'8': '8',\r\n\t'9': '9',\r\n\t'\\uFF10': '0', // Fullwidth digit 0\r\n\t'\\uFF11': '1', // Fullwidth digit 1\r\n\t'\\uFF12': '2', // Fullwidth digit 2\r\n\t'\\uFF13': '3', // Fullwidth digit 3\r\n\t'\\uFF14': '4', // Fullwidth digit 4\r\n\t'\\uFF15': '5', // Fullwidth digit 5\r\n\t'\\uFF16': '6', // Fullwidth digit 6\r\n\t'\\uFF17': '7', // Fullwidth digit 7\r\n\t'\\uFF18': '8', // Fullwidth digit 8\r\n\t'\\uFF19': '9', // Fullwidth digit 9\r\n\t'\\u0660': '0', // Arabic-indic digit 0\r\n\t'\\u0661': '1', // Arabic-indic digit 1\r\n\t'\\u0662': '2', // Arabic-indic digit 2\r\n\t'\\u0663': '3', // Arabic-indic digit 3\r\n\t'\\u0664': '4', // Arabic-indic digit 4\r\n\t'\\u0665': '5', // Arabic-indic digit 5\r\n\t'\\u0666': '6', // Arabic-indic digit 6\r\n\t'\\u0667': '7', // Arabic-indic digit 7\r\n\t'\\u0668': '8', // Arabic-indic digit 8\r\n\t'\\u0669': '9', // Arabic-indic digit 9\r\n\t'\\u06F0': '0', // Eastern-Arabic digit 0\r\n\t'\\u06F1': '1', // Eastern-Arabic digit 1\r\n\t'\\u06F2': '2', // Eastern-Arabic digit 2\r\n\t'\\u06F3': '3', // Eastern-Arabic digit 3\r\n\t'\\u06F4': '4', // Eastern-Arabic digit 4\r\n\t'\\u06F5': '5', // Eastern-Arabic digit 5\r\n\t'\\u06F6': '6', // Eastern-Arabic digit 6\r\n\t'\\u06F7': '7', // Eastern-Arabic digit 7\r\n\t'\\u06F8': '8', // Eastern-Arabic digit 8\r\n\t'\\u06F9': '9' // Eastern-Arabic digit 9\r\n}\r\n\r\nexport function parseDigit(character) {\r\n\treturn DIGITS[character]\r\n}\r\n\r\n/**\r\n * Parses phone number digits from a string.\r\n * Drops all punctuation leaving only digits.\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * parseDigits('8 (800) 555')\r\n * // Outputs '8800555'.\r\n * ```\r\n */\r\nexport default function parseDigits(string) {\r\n\tlet result = ''\r\n\t// Using `.split('')` here instead of normal `for ... of`\r\n\t// because the importing application doesn't neccessarily include an ES6 polyfill.\r\n\t// The `.split('')` approach discards \"exotic\" UTF-8 characters\r\n\t// (the ones consisting of four bytes) but digits\r\n\t// (including non-European ones) don't fall into that range\r\n\t// so such \"exotic\" characters would be discarded anyway.\r\n\tfor (const character of string.split('')) {\r\n\t\tconst digit = parseDigit(character)\r\n\t\tif (digit) {\r\n\t\t\tresult += digit\r\n\t\t}\r\n\t}\r\n\treturn result\r\n}"],"mappings":";;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMA,MAAM,GAAG;EACrB,KAAK,GADgB;EAErB,KAAK,GAFgB;EAGrB,KAAK,GAHgB;EAIrB,KAAK,GAJgB;EAKrB,KAAK,GALgB;EAMrB,KAAK,GANgB;EAOrB,KAAK,GAPgB;EAQrB,KAAK,GARgB;EASrB,KAAK,GATgB;EAUrB,KAAK,GAVgB;EAWrB,UAAU,GAXW;EAWN;EACf,UAAU,GAZW;EAYN;EACf,UAAU,GAbW;EAaN;EACf,UAAU,GAdW;EAcN;EACf,UAAU,GAfW;EAeN;EACf,UAAU,GAhBW;EAgBN;EACf,UAAU,GAjBW;EAiBN;EACf,UAAU,GAlBW;EAkBN;EACf,UAAU,GAnBW;EAmBN;EACf,UAAU,GApBW;EAoBN;EACf,UAAU,GArBW;EAqBN;EACf,UAAU,GAtBW;EAsBN;EACf,UAAU,GAvBW;EAuBN;EACf,UAAU,GAxBW;EAwBN;EACf,UAAU,GAzBW;EAyBN;EACf,UAAU,GA1BW;EA0BN;EACf,UAAU,GA3BW;EA2BN;EACf,UAAU,GA5BW;EA4BN;EACf,UAAU,GA7BW;EA6BN;EACf,UAAU,GA9BW;EA8BN;EACf,UAAU,GA/BW;EA+BN;EACf,UAAU,GAhCW;EAgCN;EACf,UAAU,GAjCW;EAiCN;EACf,UAAU,GAlCW;EAkCN;EACf,UAAU,GAnCW;EAmCN;EACf,UAAU,GApCW;EAoCN;EACf,UAAU,GArCW;EAqCN;EACf,UAAU,GAtCW;EAsCN;EACf,UAAU,GAvCW;EAuCN;EACf,UAAU,GAxCW,CAwCN;;AAxCM,CAAf;;;AA2CA,SAASC,UAAT,CAAoBC,SAApB,EAA+B;EACrC,OAAOF,MAAM,CAACE,SAAD,CAAb;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACe,SAASC,WAAT,CAAqBC,MAArB,EAA6B;EAC3C,IAAIC,MAAM,GAAG,EAAb,CAD2C,CAE3C;EACA;EACA;EACA;EACA;EACA;;EACA,qDAAwBD,MAAM,CAACE,KAAP,CAAa,EAAb,CAAxB,wCAA0C;IAAA,IAA/BJ,SAA+B;IACzC,IAAMK,KAAK,GAAGN,UAAU,CAACC,SAAD,CAAxB;;IACA,IAAIK,KAAJ,EAAW;MACVF,MAAM,IAAIE,KAAV;IACA;EACD;;EACD,OAAOF,MAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/parseDigits.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/parseDigits.test.js new file mode 100644 index 00000000..d4c2e124 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/parseDigits.test.js @@ -0,0 +1,12 @@ +"use strict"; + +var _parseDigits = _interopRequireDefault(require("./parseDigits.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +describe('parseDigits', function () { + it('should parse digits', function () { + (0, _parseDigits["default"])('+٤٤٢٣٢٣٢٣٤').should.equal('442323234'); + }); +}); +//# sourceMappingURL=parseDigits.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/parseDigits.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/parseDigits.test.js.map new file mode 100644 index 00000000..b83ddfa2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/parseDigits.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parseDigits.test.js","names":["describe","it","parseDigits","should","equal"],"sources":["../../source/helpers/parseDigits.test.js"],"sourcesContent":["import parseDigits from './parseDigits.js'\r\n\r\ndescribe('parseDigits', () => {\r\n\tit('should parse digits', () => {\r\n\t\tparseDigits('+٤٤٢٣٢٣٢٣٤').should.equal('442323234')\r\n\t})\r\n})"],"mappings":";;AAAA;;;;AAEAA,QAAQ,CAAC,aAAD,EAAgB,YAAM;EAC7BC,EAAE,CAAC,qBAAD,EAAwB,YAAM;IAC/B,IAAAC,uBAAA,EAAY,YAAZ,EAA0BC,MAA1B,CAAiCC,KAAjC,CAAuC,WAAvC;EACA,CAFC,CAAF;AAGA,CAJO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/stripIddPrefix.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/stripIddPrefix.js new file mode 100644 index 00000000..ca7c706e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/stripIddPrefix.js @@ -0,0 +1,46 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = stripIddPrefix; + +var _metadata = _interopRequireDefault(require("../metadata.js")); + +var _constants = require("../constants.js"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +var CAPTURING_DIGIT_PATTERN = new RegExp('([' + _constants.VALID_DIGITS + '])'); + +function stripIddPrefix(number, country, callingCode, metadata) { + if (!country) { + return; + } // Check if the number is IDD-prefixed. + + + var countryMetadata = new _metadata["default"](metadata); + countryMetadata.selectNumberingPlan(country, callingCode); + var IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix()); + + if (number.search(IDDPrefixPattern) !== 0) { + return; + } // Strip IDD prefix. + + + number = number.slice(number.match(IDDPrefixPattern)[0].length); // If there're any digits after an IDD prefix, + // then those digits are a country calling code. + // Since no country code starts with a `0`, + // the code below validates that the next digit (if present) is not `0`. + + var matchedGroups = number.match(CAPTURING_DIGIT_PATTERN); + + if (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) { + if (matchedGroups[1] === '0') { + return; + } + } + + return number; +} +//# sourceMappingURL=stripIddPrefix.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/stripIddPrefix.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/stripIddPrefix.js.map new file mode 100644 index 00000000..e009c15b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/stripIddPrefix.js.map @@ -0,0 +1 @@ +{"version":3,"file":"stripIddPrefix.js","names":["CAPTURING_DIGIT_PATTERN","RegExp","VALID_DIGITS","stripIddPrefix","number","country","callingCode","metadata","countryMetadata","Metadata","selectNumberingPlan","IDDPrefixPattern","IDDPrefix","search","slice","match","length","matchedGroups"],"sources":["../../source/helpers/stripIddPrefix.js"],"sourcesContent":["import Metadata from '../metadata.js'\r\nimport { VALID_DIGITS } from '../constants.js'\r\n\r\nconst CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])')\r\n\r\nexport default function stripIddPrefix(number, country, callingCode, metadata) {\r\n\tif (!country) {\r\n\t\treturn\r\n\t}\r\n\t// Check if the number is IDD-prefixed.\r\n\tconst countryMetadata = new Metadata(metadata)\r\n\tcountryMetadata.selectNumberingPlan(country, callingCode)\r\n\tconst IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix())\r\n\tif (number.search(IDDPrefixPattern) !== 0) {\r\n\t\treturn\r\n\t}\r\n\t// Strip IDD prefix.\r\n\tnumber = number.slice(number.match(IDDPrefixPattern)[0].length)\r\n\t// If there're any digits after an IDD prefix,\r\n\t// then those digits are a country calling code.\r\n\t// Since no country code starts with a `0`,\r\n\t// the code below validates that the next digit (if present) is not `0`.\r\n\tconst matchedGroups = number.match(CAPTURING_DIGIT_PATTERN)\r\n\tif (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) {\r\n\t\tif (matchedGroups[1] === '0') {\r\n\t\t\treturn\r\n\t\t}\r\n\t}\r\n\treturn number\r\n}"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEA,IAAMA,uBAAuB,GAAG,IAAIC,MAAJ,CAAW,OAAOC,uBAAP,GAAsB,IAAjC,CAAhC;;AAEe,SAASC,cAAT,CAAwBC,MAAxB,EAAgCC,OAAhC,EAAyCC,WAAzC,EAAsDC,QAAtD,EAAgE;EAC9E,IAAI,CAACF,OAAL,EAAc;IACb;EACA,CAH6E,CAI9E;;;EACA,IAAMG,eAAe,GAAG,IAAIC,oBAAJ,CAAaF,QAAb,CAAxB;EACAC,eAAe,CAACE,mBAAhB,CAAoCL,OAApC,EAA6CC,WAA7C;EACA,IAAMK,gBAAgB,GAAG,IAAIV,MAAJ,CAAWO,eAAe,CAACI,SAAhB,EAAX,CAAzB;;EACA,IAAIR,MAAM,CAACS,MAAP,CAAcF,gBAAd,MAAoC,CAAxC,EAA2C;IAC1C;EACA,CAV6E,CAW9E;;;EACAP,MAAM,GAAGA,MAAM,CAACU,KAAP,CAAaV,MAAM,CAACW,KAAP,CAAaJ,gBAAb,EAA+B,CAA/B,EAAkCK,MAA/C,CAAT,CAZ8E,CAa9E;EACA;EACA;EACA;;EACA,IAAMC,aAAa,GAAGb,MAAM,CAACW,KAAP,CAAaf,uBAAb,CAAtB;;EACA,IAAIiB,aAAa,IAAIA,aAAa,CAAC,CAAD,CAAb,IAAoB,IAArC,IAA6CA,aAAa,CAAC,CAAD,CAAb,CAAiBD,MAAjB,GAA0B,CAA3E,EAA8E;IAC7E,IAAIC,aAAa,CAAC,CAAD,CAAb,KAAqB,GAAzB,EAA8B;MAC7B;IACA;EACD;;EACD,OAAOb,MAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/stripIddPrefix.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/stripIddPrefix.test.js new file mode 100644 index 00000000..ca1e4712 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/stripIddPrefix.test.js @@ -0,0 +1,23 @@ +"use strict"; + +var _stripIddPrefix = _interopRequireDefault(require("./stripIddPrefix.js")); + +var _metadataMin = _interopRequireDefault(require("../../metadata.min.json")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +describe('stripIddPrefix', function () { + it('should strip a valid IDD prefix', function () { + (0, _stripIddPrefix["default"])('01178005553535', 'US', '1', _metadataMin["default"]).should.equal('78005553535'); + }); + it('should strip a valid IDD prefix (no country calling code)', function () { + (0, _stripIddPrefix["default"])('011', 'US', '1', _metadataMin["default"]).should.equal(''); + }); + it('should strip a valid IDD prefix (valid country calling code)', function () { + (0, _stripIddPrefix["default"])('0117', 'US', '1', _metadataMin["default"]).should.equal('7'); + }); + it('should strip a valid IDD prefix (not a valid country calling code)', function () { + expect((0, _stripIddPrefix["default"])('0110', 'US', '1', _metadataMin["default"])).to.be.undefined; + }); +}); +//# sourceMappingURL=stripIddPrefix.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/stripIddPrefix.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/stripIddPrefix.test.js.map new file mode 100644 index 00000000..010b346a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/helpers/stripIddPrefix.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"stripIddPrefix.test.js","names":["describe","it","stripIddPrefix","metadata","should","equal","expect","to","be","undefined"],"sources":["../../source/helpers/stripIddPrefix.test.js"],"sourcesContent":["import stripIddPrefix from './stripIddPrefix.js'\r\n\r\nimport metadata from '../../metadata.min.json' assert { type: 'json' }\r\n\r\ndescribe('stripIddPrefix', () => {\r\n\tit('should strip a valid IDD prefix', () => {\r\n\t\tstripIddPrefix('01178005553535', 'US', '1', metadata).should.equal('78005553535')\r\n\t})\r\n\r\n\tit('should strip a valid IDD prefix (no country calling code)', () => {\r\n\t\tstripIddPrefix('011', 'US', '1', metadata).should.equal('')\r\n\t})\r\n\r\n\tit('should strip a valid IDD prefix (valid country calling code)', () => {\r\n\t\tstripIddPrefix('0117', 'US', '1', metadata).should.equal('7')\r\n\t})\r\n\r\n\tit('should strip a valid IDD prefix (not a valid country calling code)', () => {\r\n\t\texpect(stripIddPrefix('0110', 'US', '1', metadata)).to.be.undefined\r\n\t})\r\n})"],"mappings":";;AAAA;;AAEA;;;;AAEAA,QAAQ,CAAC,gBAAD,EAAmB,YAAM;EAChCC,EAAE,CAAC,iCAAD,EAAoC,YAAM;IAC3C,IAAAC,0BAAA,EAAe,gBAAf,EAAiC,IAAjC,EAAuC,GAAvC,EAA4CC,uBAA5C,EAAsDC,MAAtD,CAA6DC,KAA7D,CAAmE,aAAnE;EACA,CAFC,CAAF;EAIAJ,EAAE,CAAC,2DAAD,EAA8D,YAAM;IACrE,IAAAC,0BAAA,EAAe,KAAf,EAAsB,IAAtB,EAA4B,GAA5B,EAAiCC,uBAAjC,EAA2CC,MAA3C,CAAkDC,KAAlD,CAAwD,EAAxD;EACA,CAFC,CAAF;EAIAJ,EAAE,CAAC,8DAAD,EAAiE,YAAM;IACxE,IAAAC,0BAAA,EAAe,MAAf,EAAuB,IAAvB,EAA6B,GAA7B,EAAkCC,uBAAlC,EAA4CC,MAA5C,CAAmDC,KAAnD,CAAyD,GAAzD;EACA,CAFC,CAAF;EAIAJ,EAAE,CAAC,oEAAD,EAAuE,YAAM;IAC9EK,MAAM,CAAC,IAAAJ,0BAAA,EAAe,MAAf,EAAuB,IAAvB,EAA6B,GAA7B,EAAkCC,uBAAlC,CAAD,CAAN,CAAoDI,EAApD,CAAuDC,EAAvD,CAA0DC,SAA1D;EACA,CAFC,CAAF;AAGA,CAhBO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossibleNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossibleNumber.js new file mode 100644 index 00000000..0120ada9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossibleNumber.js @@ -0,0 +1,36 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = isPossibleNumber; + +var _getNumberType = require("./getNumberType.js"); + +var _isPossibleNumber_ = _interopRequireDefault(require("./isPossibleNumber_.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +/** + * Checks if a given phone number is possible. + * Which means it only checks phone number length + * and doesn't test any regular expressions. + * + * Examples: + * + * ```js + * isPossibleNumber('+78005553535', metadata) + * isPossibleNumber('8005553535', 'RU', metadata) + * isPossibleNumber('88005553535', 'RU', metadata) + * isPossibleNumber({ phone: '8005553535', country: 'RU' }, metadata) + * ``` + */ +function isPossibleNumber() { + var _normalizeArguments = (0, _getNumberType.normalizeArguments)(arguments), + input = _normalizeArguments.input, + options = _normalizeArguments.options, + metadata = _normalizeArguments.metadata; + + return (0, _isPossibleNumber_["default"])(input, options, metadata); +} +//# sourceMappingURL=isPossibleNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossibleNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossibleNumber.js.map new file mode 100644 index 00000000..41071a79 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossibleNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isPossibleNumber.js","names":["isPossibleNumber","normalizeArguments","arguments","input","options","metadata","_isPossibleNumber"],"sources":["../source/isPossibleNumber.js"],"sourcesContent":["import { normalizeArguments } from './getNumberType.js'\r\nimport _isPossibleNumber from './isPossibleNumber_.js'\r\n\r\n/**\r\n * Checks if a given phone number is possible.\r\n * Which means it only checks phone number length\r\n * and doesn't test any regular expressions.\r\n *\r\n * Examples:\r\n *\r\n * ```js\r\n * isPossibleNumber('+78005553535', metadata)\r\n * isPossibleNumber('8005553535', 'RU', metadata)\r\n * isPossibleNumber('88005553535', 'RU', metadata)\r\n * isPossibleNumber({ phone: '8005553535', country: 'RU' }, metadata)\r\n * ```\r\n */\r\nexport default function isPossibleNumber()\r\n{\r\n\tconst { input, options, metadata } = normalizeArguments(arguments)\r\n\treturn _isPossibleNumber(input, options, metadata)\r\n}"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,gBAAT,GACf;EACC,0BAAqC,IAAAC,iCAAA,EAAmBC,SAAnB,CAArC;EAAA,IAAQC,KAAR,uBAAQA,KAAR;EAAA,IAAeC,OAAf,uBAAeA,OAAf;EAAA,IAAwBC,QAAxB,uBAAwBA,QAAxB;;EACA,OAAO,IAAAC,6BAAA,EAAkBH,KAAlB,EAAyBC,OAAzB,EAAkCC,QAAlC,CAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossibleNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossibleNumber.test.js new file mode 100644 index 00000000..9fa56c09 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossibleNumber.test.js @@ -0,0 +1,83 @@ +"use strict"; + +var _metadataMin = _interopRequireDefault(require("../metadata.min.json")); + +var _isPossibleNumber2 = _interopRequireDefault(require("./isPossibleNumber.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function isPossibleNumber() { + for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) { + parameters[_key] = arguments[_key]; + } + + parameters.push(_metadataMin["default"]); + return _isPossibleNumber2["default"].apply(this, parameters); +} + +describe('isPossibleNumber', function () { + it('should work', function () { + isPossibleNumber('+79992223344').should.equal(true); + isPossibleNumber({ + phone: '1112223344', + country: 'RU' + }).should.equal(true); + isPossibleNumber({ + phone: '111222334', + country: 'RU' + }).should.equal(false); + isPossibleNumber({ + phone: '11122233445', + country: 'RU' + }).should.equal(false); + isPossibleNumber({ + phone: '1112223344', + countryCallingCode: 7 + }).should.equal(true); + }); + it('should work v2', function () { + isPossibleNumber({ + nationalNumber: '111222334', + countryCallingCode: 7 + }, { + v2: true + }).should.equal(false); + isPossibleNumber({ + nationalNumber: '1112223344', + countryCallingCode: 7 + }, { + v2: true + }).should.equal(true); + isPossibleNumber({ + nationalNumber: '11122233445', + countryCallingCode: 7 + }, { + v2: true + }).should.equal(false); + }); + it('should work in edge cases', function () { + // Invalid `PhoneNumber` argument. + expect(function () { + return isPossibleNumber({}, { + v2: true + }); + }).to["throw"]('Invalid phone number object passed'); // Empty input is passed. + // This is just to support `isValidNumber({})` + // for cases when `parseNumber()` returns `{}`. + + isPossibleNumber({}).should.equal(false); + expect(function () { + return isPossibleNumber({ + phone: '1112223344' + }); + }).to["throw"]('Invalid phone number object passed'); // Incorrect country. + + expect(function () { + return isPossibleNumber({ + phone: '1112223344', + country: 'XX' + }); + }).to["throw"]('Unknown country'); + }); +}); +//# sourceMappingURL=isPossibleNumber.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossibleNumber.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossibleNumber.test.js.map new file mode 100644 index 00000000..5578803c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossibleNumber.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isPossibleNumber.test.js","names":["isPossibleNumber","parameters","push","metadata","_isPossibleNumber","apply","describe","it","should","equal","phone","country","countryCallingCode","nationalNumber","v2","expect","to"],"sources":["../source/isPossibleNumber.test.js"],"sourcesContent":["import metadata from '../metadata.min.json' assert { type: 'json' }\r\nimport _isPossibleNumber from './isPossibleNumber.js'\r\n\r\nfunction isPossibleNumber(...parameters) {\r\n\tparameters.push(metadata)\r\n\treturn _isPossibleNumber.apply(this, parameters)\r\n}\r\n\r\ndescribe('isPossibleNumber', () => {\r\n\tit('should work', function()\r\n\t{\r\n\t\tisPossibleNumber('+79992223344').should.equal(true)\r\n\r\n\t\tisPossibleNumber({ phone: '1112223344', country: 'RU' }).should.equal(true)\r\n\t\tisPossibleNumber({ phone: '111222334', country: 'RU' }).should.equal(false)\r\n\t\tisPossibleNumber({ phone: '11122233445', country: 'RU' }).should.equal(false)\r\n\r\n\t\tisPossibleNumber({ phone: '1112223344', countryCallingCode: 7 }).should.equal(true)\r\n\t})\r\n\r\n\tit('should work v2', () => {\r\n\t\tisPossibleNumber({ nationalNumber: '111222334', countryCallingCode: 7 }, { v2: true }).should.equal(false)\r\n\t\tisPossibleNumber({ nationalNumber: '1112223344', countryCallingCode: 7 }, { v2: true }).should.equal(true)\r\n\t\tisPossibleNumber({ nationalNumber: '11122233445', countryCallingCode: 7 }, { v2: true }).should.equal(false)\r\n\t})\r\n\r\n\tit('should work in edge cases', () => {\r\n\t\t// Invalid `PhoneNumber` argument.\r\n\t\texpect(() => isPossibleNumber({}, { v2: true })).to.throw('Invalid phone number object passed')\r\n\r\n\t\t// Empty input is passed.\r\n\t\t// This is just to support `isValidNumber({})`\r\n\t\t// for cases when `parseNumber()` returns `{}`.\r\n\t\tisPossibleNumber({}).should.equal(false)\r\n\t\texpect(() => isPossibleNumber({ phone: '1112223344' })).to.throw('Invalid phone number object passed')\r\n\r\n\t\t// Incorrect country.\r\n\t\texpect(() => isPossibleNumber({ phone: '1112223344', country: 'XX' })).to.throw('Unknown country')\r\n\t})\r\n})"],"mappings":";;AAAA;;AACA;;;;AAEA,SAASA,gBAAT,GAAyC;EAAA,kCAAZC,UAAY;IAAZA,UAAY;EAAA;;EACxCA,UAAU,CAACC,IAAX,CAAgBC,uBAAhB;EACA,OAAOC,6BAAA,CAAkBC,KAAlB,CAAwB,IAAxB,EAA8BJ,UAA9B,CAAP;AACA;;AAEDK,QAAQ,CAAC,kBAAD,EAAqB,YAAM;EAClCC,EAAE,CAAC,aAAD,EAAgB,YAClB;IACCP,gBAAgB,CAAC,cAAD,CAAhB,CAAiCQ,MAAjC,CAAwCC,KAAxC,CAA8C,IAA9C;IAEAT,gBAAgB,CAAC;MAAEU,KAAK,EAAE,YAAT;MAAuBC,OAAO,EAAE;IAAhC,CAAD,CAAhB,CAAyDH,MAAzD,CAAgEC,KAAhE,CAAsE,IAAtE;IACAT,gBAAgB,CAAC;MAAEU,KAAK,EAAE,WAAT;MAAsBC,OAAO,EAAE;IAA/B,CAAD,CAAhB,CAAwDH,MAAxD,CAA+DC,KAA/D,CAAqE,KAArE;IACAT,gBAAgB,CAAC;MAAEU,KAAK,EAAE,aAAT;MAAwBC,OAAO,EAAE;IAAjC,CAAD,CAAhB,CAA0DH,MAA1D,CAAiEC,KAAjE,CAAuE,KAAvE;IAEAT,gBAAgB,CAAC;MAAEU,KAAK,EAAE,YAAT;MAAuBE,kBAAkB,EAAE;IAA3C,CAAD,CAAhB,CAAiEJ,MAAjE,CAAwEC,KAAxE,CAA8E,IAA9E;EACA,CATC,CAAF;EAWAF,EAAE,CAAC,gBAAD,EAAmB,YAAM;IAC1BP,gBAAgB,CAAC;MAAEa,cAAc,EAAE,WAAlB;MAA+BD,kBAAkB,EAAE;IAAnD,CAAD,EAAyD;MAAEE,EAAE,EAAE;IAAN,CAAzD,CAAhB,CAAuFN,MAAvF,CAA8FC,KAA9F,CAAoG,KAApG;IACAT,gBAAgB,CAAC;MAAEa,cAAc,EAAE,YAAlB;MAAgCD,kBAAkB,EAAE;IAApD,CAAD,EAA0D;MAAEE,EAAE,EAAE;IAAN,CAA1D,CAAhB,CAAwFN,MAAxF,CAA+FC,KAA/F,CAAqG,IAArG;IACAT,gBAAgB,CAAC;MAAEa,cAAc,EAAE,aAAlB;MAAiCD,kBAAkB,EAAE;IAArD,CAAD,EAA2D;MAAEE,EAAE,EAAE;IAAN,CAA3D,CAAhB,CAAyFN,MAAzF,CAAgGC,KAAhG,CAAsG,KAAtG;EACA,CAJC,CAAF;EAMAF,EAAE,CAAC,2BAAD,EAA8B,YAAM;IACrC;IACAQ,MAAM,CAAC;MAAA,OAAMf,gBAAgB,CAAC,EAAD,EAAK;QAAEc,EAAE,EAAE;MAAN,CAAL,CAAtB;IAAA,CAAD,CAAN,CAAiDE,EAAjD,UAA0D,oCAA1D,EAFqC,CAIrC;IACA;IACA;;IACAhB,gBAAgB,CAAC,EAAD,CAAhB,CAAqBQ,MAArB,CAA4BC,KAA5B,CAAkC,KAAlC;IACAM,MAAM,CAAC;MAAA,OAAMf,gBAAgB,CAAC;QAAEU,KAAK,EAAE;MAAT,CAAD,CAAtB;IAAA,CAAD,CAAN,CAAwDM,EAAxD,UAAiE,oCAAjE,EARqC,CAUrC;;IACAD,MAAM,CAAC;MAAA,OAAMf,gBAAgB,CAAC;QAAEU,KAAK,EAAE,YAAT;QAAuBC,OAAO,EAAE;MAAhC,CAAD,CAAtB;IAAA,CAAD,CAAN,CAAuEK,EAAvE,UAAgF,iBAAhF;EACA,CAZC,CAAF;AAaA,CA/BO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossibleNumber_.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossibleNumber_.js new file mode 100644 index 00000000..6c0d7544 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossibleNumber_.js @@ -0,0 +1,83 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = isPossiblePhoneNumber; +exports.isPossibleNumber = isPossibleNumber; + +var _metadata = _interopRequireDefault(require("./metadata.js")); + +var _checkNumberLength = _interopRequireDefault(require("./helpers/checkNumberLength.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function isPossiblePhoneNumber(input, options, metadata) { + /* istanbul ignore if */ + if (options === undefined) { + options = {}; + } + + metadata = new _metadata["default"](metadata); + + if (options.v2) { + if (!input.countryCallingCode) { + throw new Error('Invalid phone number object passed'); + } + + metadata.selectNumberingPlan(input.countryCallingCode); + } else { + if (!input.phone) { + return false; + } + + if (input.country) { + if (!metadata.hasCountry(input.country)) { + throw new Error("Unknown country: ".concat(input.country)); + } + + metadata.country(input.country); + } else { + if (!input.countryCallingCode) { + throw new Error('Invalid phone number object passed'); + } + + metadata.selectNumberingPlan(input.countryCallingCode); + } + } // Old metadata (< 1.0.18) had no "possible length" data. + + + if (metadata.possibleLengths()) { + return isPossibleNumber(input.phone || input.nationalNumber, metadata); + } else { + // There was a bug between `1.7.35` and `1.7.37` where "possible_lengths" + // were missing for "non-geographical" numbering plans. + // Just assume the number is possible in such cases: + // it's unlikely that anyone generated their custom metadata + // in that short period of time (one day). + // This code can be removed in some future major version update. + if (input.countryCallingCode && metadata.isNonGeographicCallingCode(input.countryCallingCode)) { + // "Non-geographic entities" did't have `possibleLengths` + // due to a bug in metadata generation process. + return true; + } else { + throw new Error('Missing "possibleLengths" in metadata. Perhaps the metadata has been generated before v1.0.18.'); + } + } +} + +function isPossibleNumber(nationalNumber, metadata) { + //, isInternational) { + switch ((0, _checkNumberLength["default"])(nationalNumber, metadata)) { + case 'IS_POSSIBLE': + return true; + // This library ignores "local-only" phone numbers (for simplicity). + // See the readme for more info on what are "local-only" phone numbers. + // case 'IS_POSSIBLE_LOCAL_ONLY': + // return !isInternational + + default: + return false; + } +} +//# sourceMappingURL=isPossibleNumber_.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossibleNumber_.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossibleNumber_.js.map new file mode 100644 index 00000000..df30421e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossibleNumber_.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isPossibleNumber_.js","names":["isPossiblePhoneNumber","input","options","metadata","undefined","Metadata","v2","countryCallingCode","Error","selectNumberingPlan","phone","country","hasCountry","possibleLengths","isPossibleNumber","nationalNumber","isNonGeographicCallingCode","checkNumberLength"],"sources":["../source/isPossibleNumber_.js"],"sourcesContent":["import Metadata from './metadata.js'\r\nimport checkNumberLength from './helpers/checkNumberLength.js'\r\n\r\nexport default function isPossiblePhoneNumber(input, options, metadata) {\r\n\t/* istanbul ignore if */\r\n\tif (options === undefined) {\r\n\t\toptions = {}\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tif (options.v2) {\r\n\t\tif (!input.countryCallingCode) {\r\n\t\t\tthrow new Error('Invalid phone number object passed')\r\n\t\t}\r\n\t\tmetadata.selectNumberingPlan(input.countryCallingCode)\r\n\t} else {\r\n\t\tif (!input.phone) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\tif (input.country) {\r\n\t\t\tif (!metadata.hasCountry(input.country)) {\r\n\t\t\t\tthrow new Error(`Unknown country: ${input.country}`)\r\n\t\t\t}\r\n\t\t\tmetadata.country(input.country)\r\n\t\t} else {\r\n\t\t\tif (!input.countryCallingCode) {\r\n\t\t\t\tthrow new Error('Invalid phone number object passed')\r\n\t\t\t}\r\n\t\t\tmetadata.selectNumberingPlan(input.countryCallingCode)\r\n\t\t}\r\n\t}\r\n\r\n\t// Old metadata (< 1.0.18) had no \"possible length\" data.\r\n\tif (metadata.possibleLengths()) {\r\n\t\treturn isPossibleNumber(input.phone || input.nationalNumber, metadata)\r\n\t} else {\r\n\t\t// There was a bug between `1.7.35` and `1.7.37` where \"possible_lengths\"\r\n\t\t// were missing for \"non-geographical\" numbering plans.\r\n\t\t// Just assume the number is possible in such cases:\r\n\t\t// it's unlikely that anyone generated their custom metadata\r\n\t\t// in that short period of time (one day).\r\n\t\t// This code can be removed in some future major version update.\r\n\t\tif (input.countryCallingCode && metadata.isNonGeographicCallingCode(input.countryCallingCode)) {\r\n\t\t\t// \"Non-geographic entities\" did't have `possibleLengths`\r\n\t\t\t// due to a bug in metadata generation process.\r\n\t\t\treturn true\r\n\t\t} else {\r\n\t\t\tthrow new Error('Missing \"possibleLengths\" in metadata. Perhaps the metadata has been generated before v1.0.18.');\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function isPossibleNumber(nationalNumber, metadata) { //, isInternational) {\r\n\tswitch (checkNumberLength(nationalNumber, metadata)) {\r\n\t\tcase 'IS_POSSIBLE':\r\n\t\t\treturn true\r\n\t\t// This library ignores \"local-only\" phone numbers (for simplicity).\r\n\t\t// See the readme for more info on what are \"local-only\" phone numbers.\r\n\t\t// case 'IS_POSSIBLE_LOCAL_ONLY':\r\n\t\t// \treturn !isInternational\r\n\t\tdefault:\r\n\t\t\treturn false\r\n\t}\r\n}"],"mappings":";;;;;;;;AAAA;;AACA;;;;AAEe,SAASA,qBAAT,CAA+BC,KAA/B,EAAsCC,OAAtC,EAA+CC,QAA/C,EAAyD;EACvE;EACA,IAAID,OAAO,KAAKE,SAAhB,EAA2B;IAC1BF,OAAO,GAAG,EAAV;EACA;;EAEDC,QAAQ,GAAG,IAAIE,oBAAJ,CAAaF,QAAb,CAAX;;EAEA,IAAID,OAAO,CAACI,EAAZ,EAAgB;IACf,IAAI,CAACL,KAAK,CAACM,kBAAX,EAA+B;MAC9B,MAAM,IAAIC,KAAJ,CAAU,oCAAV,CAAN;IACA;;IACDL,QAAQ,CAACM,mBAAT,CAA6BR,KAAK,CAACM,kBAAnC;EACA,CALD,MAKO;IACN,IAAI,CAACN,KAAK,CAACS,KAAX,EAAkB;MACjB,OAAO,KAAP;IACA;;IACD,IAAIT,KAAK,CAACU,OAAV,EAAmB;MAClB,IAAI,CAACR,QAAQ,CAACS,UAAT,CAAoBX,KAAK,CAACU,OAA1B,CAAL,EAAyC;QACxC,MAAM,IAAIH,KAAJ,4BAA8BP,KAAK,CAACU,OAApC,EAAN;MACA;;MACDR,QAAQ,CAACQ,OAAT,CAAiBV,KAAK,CAACU,OAAvB;IACA,CALD,MAKO;MACN,IAAI,CAACV,KAAK,CAACM,kBAAX,EAA+B;QAC9B,MAAM,IAAIC,KAAJ,CAAU,oCAAV,CAAN;MACA;;MACDL,QAAQ,CAACM,mBAAT,CAA6BR,KAAK,CAACM,kBAAnC;IACA;EACD,CA5BsE,CA8BvE;;;EACA,IAAIJ,QAAQ,CAACU,eAAT,EAAJ,EAAgC;IAC/B,OAAOC,gBAAgB,CAACb,KAAK,CAACS,KAAN,IAAeT,KAAK,CAACc,cAAtB,EAAsCZ,QAAtC,CAAvB;EACA,CAFD,MAEO;IACN;IACA;IACA;IACA;IACA;IACA;IACA,IAAIF,KAAK,CAACM,kBAAN,IAA4BJ,QAAQ,CAACa,0BAAT,CAAoCf,KAAK,CAACM,kBAA1C,CAAhC,EAA+F;MAC9F;MACA;MACA,OAAO,IAAP;IACA,CAJD,MAIO;MACN,MAAM,IAAIC,KAAJ,CAAU,gGAAV,CAAN;IACA;EACD;AACD;;AAEM,SAASM,gBAAT,CAA0BC,cAA1B,EAA0CZ,QAA1C,EAAoD;EAAE;EAC5D,QAAQ,IAAAc,6BAAA,EAAkBF,cAAlB,EAAkCZ,QAAlC,CAAR;IACC,KAAK,aAAL;MACC,OAAO,IAAP;IACD;IACA;IACA;IACA;;IACA;MACC,OAAO,KAAP;EARF;AAUA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossiblePhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossiblePhoneNumber.js new file mode 100644 index 00000000..a1e2693b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossiblePhoneNumber.js @@ -0,0 +1,32 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = isPossiblePhoneNumber; + +var _parsePhoneNumber = require("./parsePhoneNumber.js"); + +var _parsePhoneNumberFromString_ = _interopRequireDefault(require("./parsePhoneNumberFromString_.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function isPossiblePhoneNumber() { + var _normalizeArguments = (0, _parsePhoneNumber.normalizeArguments)(arguments), + text = _normalizeArguments.text, + options = _normalizeArguments.options, + metadata = _normalizeArguments.metadata; + + options = _objectSpread(_objectSpread({}, options), {}, { + extract: false + }); + var phoneNumber = (0, _parsePhoneNumberFromString_["default"])(text, options, metadata); + return phoneNumber && phoneNumber.isPossible() || false; +} +//# sourceMappingURL=isPossiblePhoneNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossiblePhoneNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossiblePhoneNumber.js.map new file mode 100644 index 00000000..e564579d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossiblePhoneNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isPossiblePhoneNumber.js","names":["isPossiblePhoneNumber","normalizeArguments","arguments","text","options","metadata","extract","phoneNumber","parsePhoneNumberFromString","isPossible"],"sources":["../source/isPossiblePhoneNumber.js"],"sourcesContent":["import { normalizeArguments } from './parsePhoneNumber.js'\r\nimport parsePhoneNumberFromString from './parsePhoneNumberFromString_.js'\r\n\r\nexport default function isPossiblePhoneNumber() {\r\n\tlet { text, options, metadata } = normalizeArguments(arguments)\r\n\toptions = {\r\n\t\t...options,\r\n\t\textract: false\r\n\t}\r\n\tconst phoneNumber = parsePhoneNumberFromString(text, options, metadata)\r\n\treturn phoneNumber && phoneNumber.isPossible() || false\r\n}"],"mappings":";;;;;;;AAAA;;AACA;;;;;;;;;;AAEe,SAASA,qBAAT,GAAiC;EAC/C,0BAAkC,IAAAC,oCAAA,EAAmBC,SAAnB,CAAlC;EAAA,IAAMC,IAAN,uBAAMA,IAAN;EAAA,IAAYC,OAAZ,uBAAYA,OAAZ;EAAA,IAAqBC,QAArB,uBAAqBA,QAArB;;EACAD,OAAO,mCACHA,OADG;IAENE,OAAO,EAAE;EAFH,EAAP;EAIA,IAAMC,WAAW,GAAG,IAAAC,uCAAA,EAA2BL,IAA3B,EAAiCC,OAAjC,EAA0CC,QAA1C,CAApB;EACA,OAAOE,WAAW,IAAIA,WAAW,CAACE,UAAZ,EAAf,IAA2C,KAAlD;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossiblePhoneNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossiblePhoneNumber.test.js new file mode 100644 index 00000000..9910162c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossiblePhoneNumber.test.js @@ -0,0 +1,40 @@ +"use strict"; + +var _isPossiblePhoneNumber2 = _interopRequireDefault(require("./isPossiblePhoneNumber.js")); + +var _metadataMin = _interopRequireDefault(require("../metadata.min.json")); + +var _metadataMin2 = _interopRequireDefault(require("../test/metadata/1.0.0/metadata.min.json")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function isPossiblePhoneNumber() { + for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) { + parameters[_key] = arguments[_key]; + } + + parameters.push(_metadataMin["default"]); + return _isPossiblePhoneNumber2["default"].apply(this, parameters); +} + +describe('isPossiblePhoneNumber', function () { + it('should detect whether a phone number is possible', function () { + isPossiblePhoneNumber('8 (800) 555 35 35', 'RU').should.equal(true); + isPossiblePhoneNumber('8 (800) 555 35 35 0', 'RU').should.equal(false); + isPossiblePhoneNumber('Call: 8 (800) 555 35 35', 'RU').should.equal(false); + isPossiblePhoneNumber('8 (800) 555 35 35', { + defaultCountry: 'RU' + }).should.equal(true); + isPossiblePhoneNumber('+7 (800) 555 35 35').should.equal(true); + isPossiblePhoneNumber('+7 1 (800) 555 35 35').should.equal(false); + isPossiblePhoneNumber(' +7 (800) 555 35 35').should.equal(false); + isPossiblePhoneNumber(' ').should.equal(false); + }); + it('should detect whether a phone number is possible when using old metadata', function () { + expect(function () { + return (0, _isPossiblePhoneNumber2["default"])('8 (800) 555 35 35', 'RU', _metadataMin2["default"]); + }).to["throw"]('Missing "possibleLengths" in metadata.'); + (0, _isPossiblePhoneNumber2["default"])('+888 123 456 78901', _metadataMin2["default"]).should.equal(true); + }); +}); +//# sourceMappingURL=isPossiblePhoneNumber.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossiblePhoneNumber.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossiblePhoneNumber.test.js.map new file mode 100644 index 00000000..2bb3a7c8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isPossiblePhoneNumber.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isPossiblePhoneNumber.test.js","names":["isPossiblePhoneNumber","parameters","push","metadata","_isPossiblePhoneNumber","apply","describe","it","should","equal","defaultCountry","expect","oldMetadata","to"],"sources":["../source/isPossiblePhoneNumber.test.js"],"sourcesContent":["import _isPossiblePhoneNumber from './isPossiblePhoneNumber.js'\r\nimport metadata from '../metadata.min.json' assert { type: 'json' }\r\nimport oldMetadata from '../test/metadata/1.0.0/metadata.min.json' assert { type: 'json' }\r\n\r\nfunction isPossiblePhoneNumber(...parameters) {\r\n\tparameters.push(metadata)\r\n\treturn _isPossiblePhoneNumber.apply(this, parameters)\r\n}\r\n\r\ndescribe('isPossiblePhoneNumber', () => {\r\n\tit('should detect whether a phone number is possible', () => {\r\n\t\tisPossiblePhoneNumber('8 (800) 555 35 35', 'RU').should.equal(true)\r\n\t\tisPossiblePhoneNumber('8 (800) 555 35 35 0', 'RU').should.equal(false)\r\n\t\tisPossiblePhoneNumber('Call: 8 (800) 555 35 35', 'RU').should.equal(false)\r\n\t\tisPossiblePhoneNumber('8 (800) 555 35 35', { defaultCountry: 'RU' }).should.equal(true)\r\n\t\tisPossiblePhoneNumber('+7 (800) 555 35 35').should.equal(true)\r\n\t\tisPossiblePhoneNumber('+7 1 (800) 555 35 35').should.equal(false)\r\n\t\tisPossiblePhoneNumber(' +7 (800) 555 35 35').should.equal(false)\r\n\t\tisPossiblePhoneNumber(' ').should.equal(false)\r\n\t})\r\n\r\n\tit('should detect whether a phone number is possible when using old metadata', () => {\r\n\t\texpect(() => _isPossiblePhoneNumber('8 (800) 555 35 35', 'RU', oldMetadata))\r\n\t\t\t.to.throw('Missing \"possibleLengths\" in metadata.')\r\n\t\t_isPossiblePhoneNumber('+888 123 456 78901', oldMetadata).should.equal(true)\r\n\t})\r\n})"],"mappings":";;AAAA;;AACA;;AACA;;;;AAEA,SAASA,qBAAT,GAA8C;EAAA,kCAAZC,UAAY;IAAZA,UAAY;EAAA;;EAC7CA,UAAU,CAACC,IAAX,CAAgBC,uBAAhB;EACA,OAAOC,kCAAA,CAAuBC,KAAvB,CAA6B,IAA7B,EAAmCJ,UAAnC,CAAP;AACA;;AAEDK,QAAQ,CAAC,uBAAD,EAA0B,YAAM;EACvCC,EAAE,CAAC,kDAAD,EAAqD,YAAM;IAC5DP,qBAAqB,CAAC,mBAAD,EAAsB,IAAtB,CAArB,CAAiDQ,MAAjD,CAAwDC,KAAxD,CAA8D,IAA9D;IACAT,qBAAqB,CAAC,qBAAD,EAAwB,IAAxB,CAArB,CAAmDQ,MAAnD,CAA0DC,KAA1D,CAAgE,KAAhE;IACAT,qBAAqB,CAAC,yBAAD,EAA4B,IAA5B,CAArB,CAAuDQ,MAAvD,CAA8DC,KAA9D,CAAoE,KAApE;IACAT,qBAAqB,CAAC,mBAAD,EAAsB;MAAEU,cAAc,EAAE;IAAlB,CAAtB,CAArB,CAAqEF,MAArE,CAA4EC,KAA5E,CAAkF,IAAlF;IACAT,qBAAqB,CAAC,oBAAD,CAArB,CAA4CQ,MAA5C,CAAmDC,KAAnD,CAAyD,IAAzD;IACAT,qBAAqB,CAAC,sBAAD,CAArB,CAA8CQ,MAA9C,CAAqDC,KAArD,CAA2D,KAA3D;IACAT,qBAAqB,CAAC,qBAAD,CAArB,CAA6CQ,MAA7C,CAAoDC,KAApD,CAA0D,KAA1D;IACAT,qBAAqB,CAAC,GAAD,CAArB,CAA2BQ,MAA3B,CAAkCC,KAAlC,CAAwC,KAAxC;EACA,CATC,CAAF;EAWAF,EAAE,CAAC,0EAAD,EAA6E,YAAM;IACpFI,MAAM,CAAC;MAAA,OAAM,IAAAP,kCAAA,EAAuB,mBAAvB,EAA4C,IAA5C,EAAkDQ,wBAAlD,CAAN;IAAA,CAAD,CAAN,CACEC,EADF,UACW,wCADX;IAEA,IAAAT,kCAAA,EAAuB,oBAAvB,EAA6CQ,wBAA7C,EAA0DJ,MAA1D,CAAiEC,KAAjE,CAAuE,IAAvE;EACA,CAJC,CAAF;AAKA,CAjBO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidNumberForRegion.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidNumberForRegion.js new file mode 100644 index 00000000..a2dd36cf --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidNumberForRegion.js @@ -0,0 +1,42 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = isValidNumberForRegion; + +var _isViablePhoneNumber = _interopRequireDefault(require("./helpers/isViablePhoneNumber.js")); + +var _parse_ = _interopRequireDefault(require("./parse_.js")); + +var _isValidNumberForRegion_ = _interopRequireDefault(require("./isValidNumberForRegion_.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function isValidNumberForRegion(number, country, metadata) { + if (typeof number !== 'string') { + throw new TypeError('number must be a string'); + } + + if (typeof country !== 'string') { + throw new TypeError('country must be a string'); + } // `parse` extracts phone numbers from raw text, + // therefore it will cut off all "garbage" characters, + // while this `validate` function needs to verify + // that the phone number contains no "garbage" + // therefore the explicit `isViablePhoneNumber` check. + + + var input; + + if ((0, _isViablePhoneNumber["default"])(number)) { + input = (0, _parse_["default"])(number, { + defaultCountry: country + }, metadata); + } else { + input = {}; + } + + return (0, _isValidNumberForRegion_["default"])(input, country, undefined, metadata); +} +//# sourceMappingURL=isValidNumberForRegion.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidNumberForRegion.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidNumberForRegion.js.map new file mode 100644 index 00000000..6f8774b2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidNumberForRegion.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isValidNumberForRegion.js","names":["isValidNumberForRegion","number","country","metadata","TypeError","input","isViablePhoneNumber","parseNumber","defaultCountry","_isValidNumberForRegion","undefined"],"sources":["../source/isValidNumberForRegion.js"],"sourcesContent":["import isViablePhoneNumber from './helpers/isViablePhoneNumber.js'\r\nimport parseNumber from './parse_.js'\r\nimport _isValidNumberForRegion from './isValidNumberForRegion_.js'\r\n\r\nexport default function isValidNumberForRegion(number, country, metadata) {\r\n\tif (typeof number !== 'string') {\r\n\t\tthrow new TypeError('number must be a string')\r\n\t}\r\n\tif (typeof country !== 'string') {\r\n\t\tthrow new TypeError('country must be a string')\r\n\t}\r\n\t// `parse` extracts phone numbers from raw text,\r\n\t// therefore it will cut off all \"garbage\" characters,\r\n\t// while this `validate` function needs to verify\r\n\t// that the phone number contains no \"garbage\"\r\n\t// therefore the explicit `isViablePhoneNumber` check.\r\n\tlet input\r\n\tif (isViablePhoneNumber(number)) {\r\n\t\tinput = parseNumber(number, { defaultCountry: country }, metadata)\r\n\t} else {\r\n\t\tinput = {}\r\n\t}\r\n\treturn _isValidNumberForRegion(input, country, undefined, metadata)\r\n}"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;AAEe,SAASA,sBAAT,CAAgCC,MAAhC,EAAwCC,OAAxC,EAAiDC,QAAjD,EAA2D;EACzE,IAAI,OAAOF,MAAP,KAAkB,QAAtB,EAAgC;IAC/B,MAAM,IAAIG,SAAJ,CAAc,yBAAd,CAAN;EACA;;EACD,IAAI,OAAOF,OAAP,KAAmB,QAAvB,EAAiC;IAChC,MAAM,IAAIE,SAAJ,CAAc,0BAAd,CAAN;EACA,CANwE,CAOzE;EACA;EACA;EACA;EACA;;;EACA,IAAIC,KAAJ;;EACA,IAAI,IAAAC,+BAAA,EAAoBL,MAApB,CAAJ,EAAiC;IAChCI,KAAK,GAAG,IAAAE,kBAAA,EAAYN,MAAZ,EAAoB;MAAEO,cAAc,EAAEN;IAAlB,CAApB,EAAiDC,QAAjD,CAAR;EACA,CAFD,MAEO;IACNE,KAAK,GAAG,EAAR;EACA;;EACD,OAAO,IAAAI,mCAAA,EAAwBJ,KAAxB,EAA+BH,OAA/B,EAAwCQ,SAAxC,EAAmDP,QAAnD,CAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidNumberForRegion.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidNumberForRegion.test.js new file mode 100644 index 00000000..24db038c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidNumberForRegion.test.js @@ -0,0 +1,43 @@ +"use strict"; + +var _metadataMin = _interopRequireDefault(require("../metadata.min.json")); + +var _isValidNumberForRegion2 = _interopRequireDefault(require("./isValidNumberForRegion.js")); + +var _isValidNumberForRegion_ = _interopRequireDefault(require("./isValidNumberForRegion_.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function isValidNumberForRegion() { + for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) { + parameters[_key] = arguments[_key]; + } + + parameters.push(_metadataMin["default"]); + return _isValidNumberForRegion2["default"].apply(this, parameters); +} + +describe('isValidNumberForRegion', function () { + it('should detect if is valid number for region', function () { + isValidNumberForRegion('07624369230', 'GB').should.equal(false); + isValidNumberForRegion('07624369230', 'IM').should.equal(true); + }); + it('should validate arguments', function () { + expect(function () { + return isValidNumberForRegion({ + phone: '7624369230', + country: 'GB' + }); + }).to["throw"]('number must be a string'); + expect(function () { + return isValidNumberForRegion('7624369230'); + }).to["throw"]('country must be a string'); + }); + it('should work in edge cases', function () { + // Not a "viable" phone number. + isValidNumberForRegion('7', 'GB').should.equal(false); // `options` argument `if/else` coverage. + + (0, _isValidNumberForRegion_["default"])('07624369230', 'GB', {}, _metadataMin["default"]).should.equal(false); + }); +}); +//# sourceMappingURL=isValidNumberForRegion.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidNumberForRegion.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidNumberForRegion.test.js.map new file mode 100644 index 00000000..1894319f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidNumberForRegion.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isValidNumberForRegion.test.js","names":["isValidNumberForRegion","parameters","push","metadata","isValidNumberForRegionCustom","apply","describe","it","should","equal","expect","phone","country","to","_isValidNumberForRegion"],"sources":["../source/isValidNumberForRegion.test.js"],"sourcesContent":["import metadata from '../metadata.min.json' assert { type: 'json' }\r\nimport isValidNumberForRegionCustom from './isValidNumberForRegion.js'\r\nimport _isValidNumberForRegion from './isValidNumberForRegion_.js'\r\n\r\nfunction isValidNumberForRegion(...parameters) {\r\n\tparameters.push(metadata)\r\n\treturn isValidNumberForRegionCustom.apply(this, parameters)\r\n}\r\n\r\ndescribe('isValidNumberForRegion', () => {\r\n\tit('should detect if is valid number for region', () => {\r\n\t\tisValidNumberForRegion('07624369230', 'GB').should.equal(false)\r\n\t\tisValidNumberForRegion('07624369230', 'IM').should.equal(true)\r\n\t})\r\n\r\n\tit('should validate arguments', () => {\r\n\t\texpect(() => isValidNumberForRegion({ phone: '7624369230', country: 'GB' })).to.throw('number must be a string')\r\n\t\texpect(() => isValidNumberForRegion('7624369230')).to.throw('country must be a string')\r\n\t})\r\n\r\n\tit('should work in edge cases', () => {\r\n\t\t// Not a \"viable\" phone number.\r\n\t\tisValidNumberForRegion('7', 'GB').should.equal(false)\r\n\r\n\t\t// `options` argument `if/else` coverage.\r\n\t\t_isValidNumberForRegion('07624369230', 'GB', {}, metadata).should.equal(false)\r\n\t})\r\n})"],"mappings":";;AAAA;;AACA;;AACA;;;;AAEA,SAASA,sBAAT,GAA+C;EAAA,kCAAZC,UAAY;IAAZA,UAAY;EAAA;;EAC9CA,UAAU,CAACC,IAAX,CAAgBC,uBAAhB;EACA,OAAOC,mCAAA,CAA6BC,KAA7B,CAAmC,IAAnC,EAAyCJ,UAAzC,CAAP;AACA;;AAEDK,QAAQ,CAAC,wBAAD,EAA2B,YAAM;EACxCC,EAAE,CAAC,6CAAD,EAAgD,YAAM;IACvDP,sBAAsB,CAAC,aAAD,EAAgB,IAAhB,CAAtB,CAA4CQ,MAA5C,CAAmDC,KAAnD,CAAyD,KAAzD;IACAT,sBAAsB,CAAC,aAAD,EAAgB,IAAhB,CAAtB,CAA4CQ,MAA5C,CAAmDC,KAAnD,CAAyD,IAAzD;EACA,CAHC,CAAF;EAKAF,EAAE,CAAC,2BAAD,EAA8B,YAAM;IACrCG,MAAM,CAAC;MAAA,OAAMV,sBAAsB,CAAC;QAAEW,KAAK,EAAE,YAAT;QAAuBC,OAAO,EAAE;MAAhC,CAAD,CAA5B;IAAA,CAAD,CAAN,CAA6EC,EAA7E,UAAsF,yBAAtF;IACAH,MAAM,CAAC;MAAA,OAAMV,sBAAsB,CAAC,YAAD,CAA5B;IAAA,CAAD,CAAN,CAAmDa,EAAnD,UAA4D,0BAA5D;EACA,CAHC,CAAF;EAKAN,EAAE,CAAC,2BAAD,EAA8B,YAAM;IACrC;IACAP,sBAAsB,CAAC,GAAD,EAAM,IAAN,CAAtB,CAAkCQ,MAAlC,CAAyCC,KAAzC,CAA+C,KAA/C,EAFqC,CAIrC;;IACA,IAAAK,mCAAA,EAAwB,aAAxB,EAAuC,IAAvC,EAA6C,EAA7C,EAAiDX,uBAAjD,EAA2DK,MAA3D,CAAkEC,KAAlE,CAAwE,KAAxE;EACA,CANC,CAAF;AAOA,CAlBO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidNumberForRegion_.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidNumberForRegion_.js new file mode 100644 index 00000000..4333edbc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidNumberForRegion_.js @@ -0,0 +1,23 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = isValidNumberForRegion; + +var _validate_ = _interopRequireDefault(require("./validate_.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +/** + * Checks if a given phone number is valid within a given region. + * Is just an alias for `phoneNumber.isValid() && phoneNumber.country === country`. + * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion + */ +function isValidNumberForRegion(input, country, options, metadata) { + // If assigning the `{}` default value is moved to the arguments above, + // code coverage would decrease for some weird reason. + options = options || {}; + return input.country === country && (0, _validate_["default"])(input, options, metadata); +} +//# sourceMappingURL=isValidNumberForRegion_.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidNumberForRegion_.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidNumberForRegion_.js.map new file mode 100644 index 00000000..2cd853aa --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidNumberForRegion_.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isValidNumberForRegion_.js","names":["isValidNumberForRegion","input","country","options","metadata","isValidNumber"],"sources":["../source/isValidNumberForRegion_.js"],"sourcesContent":["import isValidNumber from './validate_.js'\r\n\r\n/**\r\n * Checks if a given phone number is valid within a given region.\r\n * Is just an alias for `phoneNumber.isValid() && phoneNumber.country === country`.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n */\r\nexport default function isValidNumberForRegion(input, country, options, metadata) {\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\treturn input.country === country && isValidNumber(input, options, metadata)\r\n}"],"mappings":";;;;;;;AAAA;;;;AAEA;AACA;AACA;AACA;AACA;AACe,SAASA,sBAAT,CAAgCC,KAAhC,EAAuCC,OAAvC,EAAgDC,OAAhD,EAAyDC,QAAzD,EAAmE;EACjF;EACA;EACAD,OAAO,GAAGA,OAAO,IAAI,EAArB;EACA,OAAOF,KAAK,CAACC,OAAN,KAAkBA,OAAlB,IAA6B,IAAAG,qBAAA,EAAcJ,KAAd,EAAqBE,OAArB,EAA8BC,QAA9B,CAApC;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidPhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidPhoneNumber.js new file mode 100644 index 00000000..a9b1dfba --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidPhoneNumber.js @@ -0,0 +1,32 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = isValidPhoneNumber; + +var _parsePhoneNumber = require("./parsePhoneNumber.js"); + +var _parsePhoneNumberFromString_ = _interopRequireDefault(require("./parsePhoneNumberFromString_.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function isValidPhoneNumber() { + var _normalizeArguments = (0, _parsePhoneNumber.normalizeArguments)(arguments), + text = _normalizeArguments.text, + options = _normalizeArguments.options, + metadata = _normalizeArguments.metadata; + + options = _objectSpread(_objectSpread({}, options), {}, { + extract: false + }); + var phoneNumber = (0, _parsePhoneNumberFromString_["default"])(text, options, metadata); + return phoneNumber && phoneNumber.isValid() || false; +} +//# sourceMappingURL=isValidPhoneNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidPhoneNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidPhoneNumber.js.map new file mode 100644 index 00000000..405d9294 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidPhoneNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isValidPhoneNumber.js","names":["isValidPhoneNumber","normalizeArguments","arguments","text","options","metadata","extract","phoneNumber","parsePhoneNumberFromString","isValid"],"sources":["../source/isValidPhoneNumber.js"],"sourcesContent":["import { normalizeArguments } from './parsePhoneNumber.js'\r\nimport parsePhoneNumberFromString from './parsePhoneNumberFromString_.js'\r\n\r\nexport default function isValidPhoneNumber() {\r\n\tlet { text, options, metadata } = normalizeArguments(arguments)\r\n\toptions = {\r\n\t\t...options,\r\n\t\textract: false\r\n\t}\r\n\tconst phoneNumber = parsePhoneNumberFromString(text, options, metadata)\r\n\treturn phoneNumber && phoneNumber.isValid() || false\r\n}"],"mappings":";;;;;;;AAAA;;AACA;;;;;;;;;;AAEe,SAASA,kBAAT,GAA8B;EAC5C,0BAAkC,IAAAC,oCAAA,EAAmBC,SAAnB,CAAlC;EAAA,IAAMC,IAAN,uBAAMA,IAAN;EAAA,IAAYC,OAAZ,uBAAYA,OAAZ;EAAA,IAAqBC,QAArB,uBAAqBA,QAArB;;EACAD,OAAO,mCACHA,OADG;IAENE,OAAO,EAAE;EAFH,EAAP;EAIA,IAAMC,WAAW,GAAG,IAAAC,uCAAA,EAA2BL,IAA3B,EAAiCC,OAAjC,EAA0CC,QAA1C,CAApB;EACA,OAAOE,WAAW,IAAIA,WAAW,CAACE,OAAZ,EAAf,IAAwC,KAA/C;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidPhoneNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidPhoneNumber.test.js new file mode 100644 index 00000000..bf0e0c57 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidPhoneNumber.test.js @@ -0,0 +1,32 @@ +"use strict"; + +var _isValidPhoneNumber2 = _interopRequireDefault(require("./isValidPhoneNumber.js")); + +var _metadataMin = _interopRequireDefault(require("../metadata.min.json")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function isValidPhoneNumber() { + for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) { + parameters[_key] = arguments[_key]; + } + + parameters.push(_metadataMin["default"]); + return _isValidPhoneNumber2["default"].apply(this, parameters); +} + +describe('isValidPhoneNumber', function () { + it('should detect whether a phone number is valid', function () { + isValidPhoneNumber('8 (800) 555 35 35', 'RU').should.equal(true); + isValidPhoneNumber('8 (800) 555 35 35 0', 'RU').should.equal(false); + isValidPhoneNumber('Call: 8 (800) 555 35 35', 'RU').should.equal(false); + isValidPhoneNumber('8 (800) 555 35 35', { + defaultCountry: 'RU' + }).should.equal(true); + isValidPhoneNumber('+7 (800) 555 35 35').should.equal(true); + isValidPhoneNumber('+7 1 (800) 555 35 35').should.equal(false); + isValidPhoneNumber(' +7 (800) 555 35 35').should.equal(false); + isValidPhoneNumber(' ').should.equal(false); + }); +}); +//# sourceMappingURL=isValidPhoneNumber.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidPhoneNumber.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidPhoneNumber.test.js.map new file mode 100644 index 00000000..98127c60 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/isValidPhoneNumber.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isValidPhoneNumber.test.js","names":["isValidPhoneNumber","parameters","push","metadata","_isValidPhoneNumber","apply","describe","it","should","equal","defaultCountry"],"sources":["../source/isValidPhoneNumber.test.js"],"sourcesContent":["import _isValidPhoneNumber from './isValidPhoneNumber.js'\r\nimport metadata from '../metadata.min.json' assert { type: 'json' }\r\n\r\nfunction isValidPhoneNumber(...parameters) {\r\n\tparameters.push(metadata)\r\n\treturn _isValidPhoneNumber.apply(this, parameters)\r\n}\r\n\r\ndescribe('isValidPhoneNumber', () => {\r\n\tit('should detect whether a phone number is valid', () => {\r\n\t\tisValidPhoneNumber('8 (800) 555 35 35', 'RU').should.equal(true)\r\n\t\tisValidPhoneNumber('8 (800) 555 35 35 0', 'RU').should.equal(false)\r\n\t\tisValidPhoneNumber('Call: 8 (800) 555 35 35', 'RU').should.equal(false)\r\n\t\tisValidPhoneNumber('8 (800) 555 35 35', { defaultCountry: 'RU' }).should.equal(true)\r\n\t\tisValidPhoneNumber('+7 (800) 555 35 35').should.equal(true)\r\n\t\tisValidPhoneNumber('+7 1 (800) 555 35 35').should.equal(false)\r\n\t\tisValidPhoneNumber(' +7 (800) 555 35 35').should.equal(false)\r\n\t\tisValidPhoneNumber(' ').should.equal(false)\r\n\t})\r\n})"],"mappings":";;AAAA;;AACA;;;;AAEA,SAASA,kBAAT,GAA2C;EAAA,kCAAZC,UAAY;IAAZA,UAAY;EAAA;;EAC1CA,UAAU,CAACC,IAAX,CAAgBC,uBAAhB;EACA,OAAOC,+BAAA,CAAoBC,KAApB,CAA0B,IAA1B,EAAgCJ,UAAhC,CAAP;AACA;;AAEDK,QAAQ,CAAC,oBAAD,EAAuB,YAAM;EACpCC,EAAE,CAAC,+CAAD,EAAkD,YAAM;IACzDP,kBAAkB,CAAC,mBAAD,EAAsB,IAAtB,CAAlB,CAA8CQ,MAA9C,CAAqDC,KAArD,CAA2D,IAA3D;IACAT,kBAAkB,CAAC,qBAAD,EAAwB,IAAxB,CAAlB,CAAgDQ,MAAhD,CAAuDC,KAAvD,CAA6D,KAA7D;IACAT,kBAAkB,CAAC,yBAAD,EAA4B,IAA5B,CAAlB,CAAoDQ,MAApD,CAA2DC,KAA3D,CAAiE,KAAjE;IACAT,kBAAkB,CAAC,mBAAD,EAAsB;MAAEU,cAAc,EAAE;IAAlB,CAAtB,CAAlB,CAAkEF,MAAlE,CAAyEC,KAAzE,CAA+E,IAA/E;IACAT,kBAAkB,CAAC,oBAAD,CAAlB,CAAyCQ,MAAzC,CAAgDC,KAAhD,CAAsD,IAAtD;IACAT,kBAAkB,CAAC,sBAAD,CAAlB,CAA2CQ,MAA3C,CAAkDC,KAAlD,CAAwD,KAAxD;IACAT,kBAAkB,CAAC,qBAAD,CAAlB,CAA0CQ,MAA1C,CAAiDC,KAAjD,CAAuD,KAAvD;IACAT,kBAAkB,CAAC,GAAD,CAAlB,CAAwBQ,MAAxB,CAA+BC,KAA/B,CAAqC,KAArC;EACA,CATC,CAAF;AAUA,CAXO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/metadata.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/metadata.js new file mode 100644 index 00000000..c1566835 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/metadata.js @@ -0,0 +1,679 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +exports.getCountryCallingCode = getCountryCallingCode; +exports.getExtPrefix = getExtPrefix; +exports.isSupportedCountry = isSupportedCountry; +exports.validateMetadata = validateMetadata; + +var _semverCompare = _interopRequireDefault(require("./tools/semver-compare.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +// Added "possibleLengths" and renamed +// "country_phone_code_to_countries" to "country_calling_codes". +var V2 = '1.0.18'; // Added "idd_prefix" and "default_idd_prefix". + +var V3 = '1.2.0'; // Moved `001` country code to "nonGeographic" section of metadata. + +var V4 = '1.7.35'; +var DEFAULT_EXT_PREFIX = ' ext. '; +var CALLING_CODE_REG_EXP = /^\d+$/; +/** + * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md + */ + +var Metadata = /*#__PURE__*/function () { + function Metadata(metadata) { + _classCallCheck(this, Metadata); + + validateMetadata(metadata); + this.metadata = metadata; + setVersion.call(this, metadata); + } + + _createClass(Metadata, [{ + key: "getCountries", + value: function getCountries() { + return Object.keys(this.metadata.countries).filter(function (_) { + return _ !== '001'; + }); + } + }, { + key: "getCountryMetadata", + value: function getCountryMetadata(countryCode) { + return this.metadata.countries[countryCode]; + } + }, { + key: "nonGeographic", + value: function nonGeographic() { + if (this.v1 || this.v2 || this.v3) return; // `nonGeographical` was a typo. + // It's present in metadata generated from `1.7.35` to `1.7.37`. + // The test case could be found by searching for "nonGeographical". + + return this.metadata.nonGeographic || this.metadata.nonGeographical; + } + }, { + key: "hasCountry", + value: function hasCountry(country) { + return this.getCountryMetadata(country) !== undefined; + } + }, { + key: "hasCallingCode", + value: function hasCallingCode(callingCode) { + if (this.getCountryCodesForCallingCode(callingCode)) { + return true; + } + + if (this.nonGeographic()) { + if (this.nonGeographic()[callingCode]) { + return true; + } + } else { + // A hacky workaround for old custom metadata (generated before V4). + var countryCodes = this.countryCallingCodes()[callingCode]; + + if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') { + return true; + } + } + } + }, { + key: "isNonGeographicCallingCode", + value: function isNonGeographicCallingCode(callingCode) { + if (this.nonGeographic()) { + return this.nonGeographic()[callingCode] ? true : false; + } else { + return this.getCountryCodesForCallingCode(callingCode) ? false : true; + } + } // Deprecated. + + }, { + key: "country", + value: function country(countryCode) { + return this.selectNumberingPlan(countryCode); + } + }, { + key: "selectNumberingPlan", + value: function selectNumberingPlan(countryCode, callingCode) { + // Supports just passing `callingCode` as the first argument. + if (countryCode && CALLING_CODE_REG_EXP.test(countryCode)) { + callingCode = countryCode; + countryCode = null; + } + + if (countryCode && countryCode !== '001') { + if (!this.hasCountry(countryCode)) { + throw new Error("Unknown country: ".concat(countryCode)); + } + + this.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this); + } else if (callingCode) { + if (!this.hasCallingCode(callingCode)) { + throw new Error("Unknown calling code: ".concat(callingCode)); + } + + this.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this); + } else { + this.numberingPlan = undefined; + } + + return this; + } + }, { + key: "getCountryCodesForCallingCode", + value: function getCountryCodesForCallingCode(callingCode) { + var countryCodes = this.countryCallingCodes()[callingCode]; + + if (countryCodes) { + // Metadata before V4 included "non-geographic entity" calling codes + // inside `country_calling_codes` (for example, `"881":["001"]`). + // Now the semantics of `country_calling_codes` has changed: + // it's specifically for "countries" now. + // Older versions of custom metadata will simply skip parsing + // "non-geographic entity" phone numbers with new versions + // of this library: it's not considered a bug, + // because such numbers are extremely rare, + // and developers extremely rarely use custom metadata. + if (countryCodes.length === 1 && countryCodes[0].length === 3) { + return; + } + + return countryCodes; + } + } + }, { + key: "getCountryCodeForCallingCode", + value: function getCountryCodeForCallingCode(callingCode) { + var countryCodes = this.getCountryCodesForCallingCode(callingCode); + + if (countryCodes) { + return countryCodes[0]; + } + } + }, { + key: "getNumberingPlanMetadata", + value: function getNumberingPlanMetadata(callingCode) { + var countryCode = this.getCountryCodeForCallingCode(callingCode); + + if (countryCode) { + return this.getCountryMetadata(countryCode); + } + + if (this.nonGeographic()) { + var metadata = this.nonGeographic()[callingCode]; + + if (metadata) { + return metadata; + } + } else { + // A hacky workaround for old custom metadata (generated before V4). + // In that metadata, there was no concept of "non-geographic" metadata + // so metadata for `001` country code was stored along with other countries. + // The test case can be found by searching for: + // "should work around `nonGeographic` metadata not existing". + var countryCodes = this.countryCallingCodes()[callingCode]; + + if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') { + return this.metadata.countries['001']; + } + } + } // Deprecated. + + }, { + key: "countryCallingCode", + value: function countryCallingCode() { + return this.numberingPlan.callingCode(); + } // Deprecated. + + }, { + key: "IDDPrefix", + value: function IDDPrefix() { + return this.numberingPlan.IDDPrefix(); + } // Deprecated. + + }, { + key: "defaultIDDPrefix", + value: function defaultIDDPrefix() { + return this.numberingPlan.defaultIDDPrefix(); + } // Deprecated. + + }, { + key: "nationalNumberPattern", + value: function nationalNumberPattern() { + return this.numberingPlan.nationalNumberPattern(); + } // Deprecated. + + }, { + key: "possibleLengths", + value: function possibleLengths() { + return this.numberingPlan.possibleLengths(); + } // Deprecated. + + }, { + key: "formats", + value: function formats() { + return this.numberingPlan.formats(); + } // Deprecated. + + }, { + key: "nationalPrefixForParsing", + value: function nationalPrefixForParsing() { + return this.numberingPlan.nationalPrefixForParsing(); + } // Deprecated. + + }, { + key: "nationalPrefixTransformRule", + value: function nationalPrefixTransformRule() { + return this.numberingPlan.nationalPrefixTransformRule(); + } // Deprecated. + + }, { + key: "leadingDigits", + value: function leadingDigits() { + return this.numberingPlan.leadingDigits(); + } // Deprecated. + + }, { + key: "hasTypes", + value: function hasTypes() { + return this.numberingPlan.hasTypes(); + } // Deprecated. + + }, { + key: "type", + value: function type(_type) { + return this.numberingPlan.type(_type); + } // Deprecated. + + }, { + key: "ext", + value: function ext() { + return this.numberingPlan.ext(); + } + }, { + key: "countryCallingCodes", + value: function countryCallingCodes() { + if (this.v1) return this.metadata.country_phone_code_to_countries; + return this.metadata.country_calling_codes; + } // Deprecated. + + }, { + key: "chooseCountryByCountryCallingCode", + value: function chooseCountryByCountryCallingCode(callingCode) { + return this.selectNumberingPlan(callingCode); + } + }, { + key: "hasSelectedNumberingPlan", + value: function hasSelectedNumberingPlan() { + return this.numberingPlan !== undefined; + } + }]); + + return Metadata; +}(); + +exports["default"] = Metadata; + +var NumberingPlan = /*#__PURE__*/function () { + function NumberingPlan(metadata, globalMetadataObject) { + _classCallCheck(this, NumberingPlan); + + this.globalMetadataObject = globalMetadataObject; + this.metadata = metadata; + setVersion.call(this, globalMetadataObject.metadata); + } + + _createClass(NumberingPlan, [{ + key: "callingCode", + value: function callingCode() { + return this.metadata[0]; + } // Formatting information for regions which share + // a country calling code is contained by only one region + // for performance reasons. For example, for NANPA region + // ("North American Numbering Plan Administration", + // which includes USA, Canada, Cayman Islands, Bahamas, etc) + // it will be contained in the metadata for `US`. + + }, { + key: "getDefaultCountryMetadataForRegion", + value: function getDefaultCountryMetadataForRegion() { + return this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode()); + } // Is always present. + + }, { + key: "IDDPrefix", + value: function IDDPrefix() { + if (this.v1 || this.v2) return; + return this.metadata[1]; + } // Is only present when a country supports multiple IDD prefixes. + + }, { + key: "defaultIDDPrefix", + value: function defaultIDDPrefix() { + if (this.v1 || this.v2) return; + return this.metadata[12]; + } + }, { + key: "nationalNumberPattern", + value: function nationalNumberPattern() { + if (this.v1 || this.v2) return this.metadata[1]; + return this.metadata[2]; + } // "possible length" data is always present in Google's metadata. + + }, { + key: "possibleLengths", + value: function possibleLengths() { + if (this.v1) return; + return this.metadata[this.v2 ? 2 : 3]; + } + }, { + key: "_getFormats", + value: function _getFormats(metadata) { + return metadata[this.v1 ? 2 : this.v2 ? 3 : 4]; + } // For countries of the same region (e.g. NANPA) + // formats are all stored in the "main" country for that region. + // E.g. "RU" and "KZ", "US" and "CA". + + }, { + key: "formats", + value: function formats() { + var _this = this; + + var formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || []; + return formats.map(function (_) { + return new Format(_, _this); + }); + } + }, { + key: "nationalPrefix", + value: function nationalPrefix() { + return this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5]; + } + }, { + key: "_getNationalPrefixFormattingRule", + value: function _getNationalPrefixFormattingRule(metadata) { + return metadata[this.v1 ? 4 : this.v2 ? 5 : 6]; + } // For countries of the same region (e.g. NANPA) + // national prefix formatting rule is stored in the "main" country for that region. + // E.g. "RU" and "KZ", "US" and "CA". + + }, { + key: "nationalPrefixFormattingRule", + value: function nationalPrefixFormattingRule() { + return this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion()); + } + }, { + key: "_nationalPrefixForParsing", + value: function _nationalPrefixForParsing() { + return this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7]; + } + }, { + key: "nationalPrefixForParsing", + value: function nationalPrefixForParsing() { + // If `national_prefix_for_parsing` is not set explicitly, + // then infer it from `national_prefix` (if any) + return this._nationalPrefixForParsing() || this.nationalPrefix(); + } + }, { + key: "nationalPrefixTransformRule", + value: function nationalPrefixTransformRule() { + return this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8]; + } + }, { + key: "_getNationalPrefixIsOptionalWhenFormatting", + value: function _getNationalPrefixIsOptionalWhenFormatting() { + return !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9]; + } // For countries of the same region (e.g. NANPA) + // "national prefix is optional when formatting" flag is + // stored in the "main" country for that region. + // E.g. "RU" and "KZ", "US" and "CA". + + }, { + key: "nationalPrefixIsOptionalWhenFormattingInNationalFormat", + value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() { + return this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) || this._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion()); + } + }, { + key: "leadingDigits", + value: function leadingDigits() { + return this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10]; + } + }, { + key: "types", + value: function types() { + return this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11]; + } + }, { + key: "hasTypes", + value: function hasTypes() { + // Versions 1.2.0 - 1.2.4: can be `[]`. + + /* istanbul ignore next */ + if (this.types() && this.types().length === 0) { + return false; + } // Versions <= 1.2.4: can be `undefined`. + // Version >= 1.2.5: can be `0`. + + + return !!this.types(); + } + }, { + key: "type", + value: function type(_type2) { + if (this.hasTypes() && getType(this.types(), _type2)) { + return new Type(getType(this.types(), _type2), this); + } + } + }, { + key: "ext", + value: function ext() { + if (this.v1 || this.v2) return DEFAULT_EXT_PREFIX; + return this.metadata[13] || DEFAULT_EXT_PREFIX; + } + }]); + + return NumberingPlan; +}(); + +var Format = /*#__PURE__*/function () { + function Format(format, metadata) { + _classCallCheck(this, Format); + + this._format = format; + this.metadata = metadata; + } + + _createClass(Format, [{ + key: "pattern", + value: function pattern() { + return this._format[0]; + } + }, { + key: "format", + value: function format() { + return this._format[1]; + } + }, { + key: "leadingDigitsPatterns", + value: function leadingDigitsPatterns() { + return this._format[2] || []; + } + }, { + key: "nationalPrefixFormattingRule", + value: function nationalPrefixFormattingRule() { + return this._format[3] || this.metadata.nationalPrefixFormattingRule(); + } + }, { + key: "nationalPrefixIsOptionalWhenFormattingInNationalFormat", + value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() { + return !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat(); + } + }, { + key: "nationalPrefixIsMandatoryWhenFormattingInNationalFormat", + value: function nationalPrefixIsMandatoryWhenFormattingInNationalFormat() { + // National prefix is omitted if there's no national prefix formatting rule + // set for this country, or when the national prefix formatting rule + // contains no national prefix itself, or when this rule is set but + // national prefix is optional for this phone number format + // (and it is not enforced explicitly) + return this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat(); + } // Checks whether national prefix formatting rule contains national prefix. + + }, { + key: "usesNationalPrefix", + value: function usesNationalPrefix() { + return this.nationalPrefixFormattingRule() && // Check that national prefix formatting rule is not a "dummy" one. + !FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule()) // In compressed metadata, `this.nationalPrefixFormattingRule()` is `0` + // when `national_prefix_formatting_rule` is not present. + // So, `true` or `false` are returned explicitly here, so that + // `0` number isn't returned. + ? true : false; + } + }, { + key: "internationalFormat", + value: function internationalFormat() { + return this._format[5] || this.format(); + } + }]); + + return Format; +}(); +/** + * A pattern that is used to determine if the national prefix formatting rule + * has the first group only, i.e., does not start with the national prefix. + * Note that the pattern explicitly allows for unbalanced parentheses. + */ + + +var FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\(?\$1\)?$/; + +var Type = /*#__PURE__*/function () { + function Type(type, metadata) { + _classCallCheck(this, Type); + + this.type = type; + this.metadata = metadata; + } + + _createClass(Type, [{ + key: "pattern", + value: function pattern() { + if (this.metadata.v1) return this.type; + return this.type[0]; + } + }, { + key: "possibleLengths", + value: function possibleLengths() { + if (this.metadata.v1) return; + return this.type[1] || this.metadata.possibleLengths(); + } + }]); + + return Type; +}(); + +function getType(types, type) { + switch (type) { + case 'FIXED_LINE': + return types[0]; + + case 'MOBILE': + return types[1]; + + case 'TOLL_FREE': + return types[2]; + + case 'PREMIUM_RATE': + return types[3]; + + case 'PERSONAL_NUMBER': + return types[4]; + + case 'VOICEMAIL': + return types[5]; + + case 'UAN': + return types[6]; + + case 'PAGER': + return types[7]; + + case 'VOIP': + return types[8]; + + case 'SHARED_COST': + return types[9]; + } +} + +function validateMetadata(metadata) { + if (!metadata) { + throw new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.'); + } // `country_phone_code_to_countries` was renamed to + // `country_calling_codes` in `1.0.18`. + + + if (!is_object(metadata) || !is_object(metadata.countries)) { + throw new Error("[libphonenumber-js] `metadata` argument was passed but it's not a valid metadata. Must be an object having `.countries` child object property. Got ".concat(is_object(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + type_of(metadata) + ': ' + metadata, ".")); + } +} // Babel transforms `typeof` into some "branches" +// so istanbul will show this as "branch not covered". + +/* istanbul ignore next */ + + +var is_object = function is_object(_) { + return _typeof(_) === 'object'; +}; // Babel transforms `typeof` into some "branches" +// so istanbul will show this as "branch not covered". + +/* istanbul ignore next */ + + +var type_of = function type_of(_) { + return _typeof(_); +}; +/** + * Returns extension prefix for a country. + * @param {string} country + * @param {object} metadata + * @return {string?} + * @example + * // Returns " ext. " + * getExtPrefix("US") + */ + + +function getExtPrefix(country, metadata) { + metadata = new Metadata(metadata); + + if (metadata.hasCountry(country)) { + return metadata.country(country).ext(); + } + + return DEFAULT_EXT_PREFIX; +} +/** + * Returns "country calling code" for a country. + * Throws an error if the country doesn't exist or isn't supported by this library. + * @param {string} country + * @param {object} metadata + * @return {string} + * @example + * // Returns "44" + * getCountryCallingCode("GB") + */ + + +function getCountryCallingCode(country, metadata) { + metadata = new Metadata(metadata); + + if (metadata.hasCountry(country)) { + return metadata.country(country).countryCallingCode(); + } + + throw new Error("Unknown country: ".concat(country)); +} + +function isSupportedCountry(country, metadata) { + // metadata = new Metadata(metadata) + // return metadata.hasCountry(country) + return metadata.countries[country] !== undefined; +} + +function setVersion(metadata) { + var version = metadata.version; + + if (typeof version === 'number') { + this.v1 = version === 1; + this.v2 = version === 2; + this.v3 = version === 3; + this.v4 = version === 4; + } else { + if (!version) { + this.v1 = true; + } else if ((0, _semverCompare["default"])(version, V3) === -1) { + this.v2 = true; + } else if ((0, _semverCompare["default"])(version, V4) === -1) { + this.v3 = true; + } else { + this.v4 = true; + } + } +} // const ISO_COUNTRY_CODE = /^[A-Z]{2}$/ +// function isCountryCode(countryCode) { +// return ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode) +// } +//# sourceMappingURL=metadata.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/metadata.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/metadata.js.map new file mode 100644 index 00000000..5f649c30 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/metadata.js.map @@ -0,0 +1 @@ +{"version":3,"file":"metadata.js","names":["V2","V3","V4","DEFAULT_EXT_PREFIX","CALLING_CODE_REG_EXP","Metadata","metadata","validateMetadata","setVersion","call","Object","keys","countries","filter","_","countryCode","v1","v2","v3","nonGeographic","nonGeographical","country","getCountryMetadata","undefined","callingCode","getCountryCodesForCallingCode","countryCodes","countryCallingCodes","length","selectNumberingPlan","test","hasCountry","Error","numberingPlan","NumberingPlan","hasCallingCode","getNumberingPlanMetadata","getCountryCodeForCallingCode","IDDPrefix","defaultIDDPrefix","nationalNumberPattern","possibleLengths","formats","nationalPrefixForParsing","nationalPrefixTransformRule","leadingDigits","hasTypes","type","ext","country_phone_code_to_countries","country_calling_codes","globalMetadataObject","_getFormats","getDefaultCountryMetadataForRegion","map","Format","_getNationalPrefixFormattingRule","_nationalPrefixForParsing","nationalPrefix","_getNationalPrefixIsOptionalWhenFormatting","types","getType","Type","format","_format","nationalPrefixFormattingRule","nationalPrefixIsOptionalWhenFormattingInNationalFormat","usesNationalPrefix","FIRST_GROUP_ONLY_PREFIX_PATTERN","is_object","join","type_of","getExtPrefix","getCountryCallingCode","countryCallingCode","isSupportedCountry","version","v4","compare"],"sources":["../source/metadata.js"],"sourcesContent":["import compare from './tools/semver-compare.js'\r\n\r\n// Added \"possibleLengths\" and renamed\r\n// \"country_phone_code_to_countries\" to \"country_calling_codes\".\r\nconst V2 = '1.0.18'\r\n\r\n// Added \"idd_prefix\" and \"default_idd_prefix\".\r\nconst V3 = '1.2.0'\r\n\r\n// Moved `001` country code to \"nonGeographic\" section of metadata.\r\nconst V4 = '1.7.35'\r\n\r\nconst DEFAULT_EXT_PREFIX = ' ext. '\r\n\r\nconst CALLING_CODE_REG_EXP = /^\\d+$/\r\n\r\n/**\r\n * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md\r\n */\r\nexport default class Metadata {\r\n\tconstructor(metadata) {\r\n\t\tvalidateMetadata(metadata)\r\n\t\tthis.metadata = metadata\r\n\t\tsetVersion.call(this, metadata)\r\n\t}\r\n\r\n\tgetCountries() {\r\n\t\treturn Object.keys(this.metadata.countries).filter(_ => _ !== '001')\r\n\t}\r\n\r\n\tgetCountryMetadata(countryCode) {\r\n\t\treturn this.metadata.countries[countryCode]\r\n\t}\r\n\r\n\tnonGeographic() {\r\n\t\tif (this.v1 || this.v2 || this.v3) return\r\n\t\t// `nonGeographical` was a typo.\r\n\t\t// It's present in metadata generated from `1.7.35` to `1.7.37`.\r\n\t\t// The test case could be found by searching for \"nonGeographical\".\r\n\t\treturn this.metadata.nonGeographic || this.metadata.nonGeographical\r\n\t}\r\n\r\n\thasCountry(country) {\r\n\t\treturn this.getCountryMetadata(country) !== undefined\r\n\t}\r\n\r\n\thasCallingCode(callingCode) {\r\n\t\tif (this.getCountryCodesForCallingCode(callingCode)) {\r\n\t\t\treturn true\r\n\t\t}\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\tif (this.nonGeographic()[callingCode]) {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// A hacky workaround for old custom metadata (generated before V4).\r\n\t\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\t\tif (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisNonGeographicCallingCode(callingCode) {\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\treturn this.nonGeographic()[callingCode] ? true : false\r\n\t\t} else {\r\n\t\t\treturn this.getCountryCodesForCallingCode(callingCode) ? false : true\r\n\t\t}\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tcountry(countryCode) {\r\n\t\treturn this.selectNumberingPlan(countryCode)\r\n\t}\r\n\r\n\tselectNumberingPlan(countryCode, callingCode) {\r\n\t\t// Supports just passing `callingCode` as the first argument.\r\n\t\tif (countryCode && CALLING_CODE_REG_EXP.test(countryCode)) {\r\n\t\t\tcallingCode = countryCode\r\n\t\t\tcountryCode = null\r\n\t\t}\r\n\t\tif (countryCode && countryCode !== '001') {\r\n\t\t\tif (!this.hasCountry(countryCode)) {\r\n\t\t\t\tthrow new Error(`Unknown country: ${countryCode}`)\r\n\t\t\t}\r\n\t\t\tthis.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this)\r\n\t\t} else if (callingCode) {\r\n\t\t\tif (!this.hasCallingCode(callingCode)) {\r\n\t\t\t\tthrow new Error(`Unknown calling code: ${callingCode}`)\r\n\t\t\t}\r\n\t\t\tthis.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this)\r\n\t\t} else {\r\n\t\t\tthis.numberingPlan = undefined\r\n\t\t}\r\n\t\treturn this\r\n\t}\r\n\r\n\tgetCountryCodesForCallingCode(callingCode) {\r\n\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\tif (countryCodes) {\r\n\t\t\t// Metadata before V4 included \"non-geographic entity\" calling codes\r\n\t\t\t// inside `country_calling_codes` (for example, `\"881\":[\"001\"]`).\r\n\t\t\t// Now the semantics of `country_calling_codes` has changed:\r\n\t\t\t// it's specifically for \"countries\" now.\r\n\t\t\t// Older versions of custom metadata will simply skip parsing\r\n\t\t\t// \"non-geographic entity\" phone numbers with new versions\r\n\t\t\t// of this library: it's not considered a bug,\r\n\t\t\t// because such numbers are extremely rare,\r\n\t\t\t// and developers extremely rarely use custom metadata.\r\n\t\t\tif (countryCodes.length === 1 && countryCodes[0].length === 3) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\treturn countryCodes\r\n\t\t}\r\n\t}\r\n\r\n\tgetCountryCodeForCallingCode(callingCode) {\r\n\t\tconst countryCodes = this.getCountryCodesForCallingCode(callingCode)\r\n\t\tif (countryCodes) {\r\n\t\t\treturn countryCodes[0]\r\n\t\t}\r\n\t}\r\n\r\n\tgetNumberingPlanMetadata(callingCode) {\r\n\t\tconst countryCode = this.getCountryCodeForCallingCode(callingCode)\r\n\t\tif (countryCode) {\r\n\t\t\treturn this.getCountryMetadata(countryCode)\r\n\t\t}\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\tconst metadata = this.nonGeographic()[callingCode]\r\n\t\t\tif (metadata) {\r\n\t\t\t\treturn metadata\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// A hacky workaround for old custom metadata (generated before V4).\r\n\t\t\t// In that metadata, there was no concept of \"non-geographic\" metadata\r\n\t\t\t// so metadata for `001` country code was stored along with other countries.\r\n\t\t\t// The test case can be found by searching for:\r\n\t\t\t// \"should work around `nonGeographic` metadata not existing\".\r\n\t\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\t\tif (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\r\n\t\t\t\treturn this.metadata.countries['001']\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tcountryCallingCode() {\r\n\t\treturn this.numberingPlan.callingCode()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tIDDPrefix() {\r\n\t\treturn this.numberingPlan.IDDPrefix()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tdefaultIDDPrefix() {\r\n\t\treturn this.numberingPlan.defaultIDDPrefix()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalNumberPattern() {\r\n\t\treturn this.numberingPlan.nationalNumberPattern()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tpossibleLengths() {\r\n\t\treturn this.numberingPlan.possibleLengths()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tformats() {\r\n\t\treturn this.numberingPlan.formats()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalPrefixForParsing() {\r\n\t\treturn this.numberingPlan.nationalPrefixForParsing()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalPrefixTransformRule() {\r\n\t\treturn this.numberingPlan.nationalPrefixTransformRule()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tleadingDigits() {\r\n\t\treturn this.numberingPlan.leadingDigits()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\thasTypes() {\r\n\t\treturn this.numberingPlan.hasTypes()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\ttype(type) {\r\n\t\treturn this.numberingPlan.type(type)\r\n\t}\r\n\r\n\t// Deprecated.\r\n\text() {\r\n\t\treturn this.numberingPlan.ext()\r\n\t}\r\n\r\n\tcountryCallingCodes() {\r\n\t\tif (this.v1) return this.metadata.country_phone_code_to_countries\r\n\t\treturn this.metadata.country_calling_codes\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tchooseCountryByCountryCallingCode(callingCode) {\r\n\t\treturn this.selectNumberingPlan(callingCode)\r\n\t}\r\n\r\n\thasSelectedNumberingPlan() {\r\n\t\treturn this.numberingPlan !== undefined\r\n\t}\r\n}\r\n\r\nclass NumberingPlan {\r\n\tconstructor(metadata, globalMetadataObject) {\r\n\t\tthis.globalMetadataObject = globalMetadataObject\r\n\t\tthis.metadata = metadata\r\n\t\tsetVersion.call(this, globalMetadataObject.metadata)\r\n\t}\r\n\r\n\tcallingCode() {\r\n\t\treturn this.metadata[0]\r\n\t}\r\n\r\n\t// Formatting information for regions which share\r\n\t// a country calling code is contained by only one region\r\n\t// for performance reasons. For example, for NANPA region\r\n\t// (\"North American Numbering Plan Administration\",\r\n\t// which includes USA, Canada, Cayman Islands, Bahamas, etc)\r\n\t// it will be contained in the metadata for `US`.\r\n\tgetDefaultCountryMetadataForRegion() {\r\n\t\treturn this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode())\r\n\t}\r\n\r\n\t// Is always present.\r\n\tIDDPrefix() {\r\n\t\tif (this.v1 || this.v2) return\r\n\t\treturn this.metadata[1]\r\n\t}\r\n\r\n\t// Is only present when a country supports multiple IDD prefixes.\r\n\tdefaultIDDPrefix() {\r\n\t\tif (this.v1 || this.v2) return\r\n\t\treturn this.metadata[12]\r\n\t}\r\n\r\n\tnationalNumberPattern() {\r\n\t\tif (this.v1 || this.v2) return this.metadata[1]\r\n\t\treturn this.metadata[2]\r\n\t}\r\n\r\n\t// \"possible length\" data is always present in Google's metadata.\r\n\tpossibleLengths() {\r\n\t\tif (this.v1) return\r\n\t\treturn this.metadata[this.v2 ? 2 : 3]\r\n\t}\r\n\r\n\t_getFormats(metadata) {\r\n\t\treturn metadata[this.v1 ? 2 : this.v2 ? 3 : 4]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// formats are all stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tformats() {\r\n\t\tconst formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || []\r\n\t\treturn formats.map(_ => new Format(_, this))\r\n\t}\r\n\r\n\tnationalPrefix() {\r\n\t\treturn this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5]\r\n\t}\r\n\r\n\t_getNationalPrefixFormattingRule(metadata) {\r\n\t\treturn metadata[this.v1 ? 4 : this.v2 ? 5 : 6]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// national prefix formatting rule is stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tnationalPrefixFormattingRule() {\r\n\t\treturn this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion())\r\n\t}\r\n\r\n\t_nationalPrefixForParsing() {\r\n\t\treturn this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7]\r\n\t}\r\n\r\n\tnationalPrefixForParsing() {\r\n\t\t// If `national_prefix_for_parsing` is not set explicitly,\r\n\t\t// then infer it from `national_prefix` (if any)\r\n\t\treturn this._nationalPrefixForParsing() || this.nationalPrefix()\r\n\t}\r\n\r\n\tnationalPrefixTransformRule() {\r\n\t\treturn this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8]\r\n\t}\r\n\r\n\t_getNationalPrefixIsOptionalWhenFormatting() {\r\n\t\treturn !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// \"national prefix is optional when formatting\" flag is\r\n\t// stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tnationalPrefixIsOptionalWhenFormattingInNationalFormat() {\r\n\t\treturn this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) ||\r\n\t\t\tthis._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion())\r\n\t}\r\n\r\n\tleadingDigits() {\r\n\t\treturn this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10]\r\n\t}\r\n\r\n\ttypes() {\r\n\t\treturn this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11]\r\n\t}\r\n\r\n\thasTypes() {\r\n\t\t// Versions 1.2.0 - 1.2.4: can be `[]`.\r\n\t\t/* istanbul ignore next */\r\n\t\tif (this.types() && this.types().length === 0) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\t// Versions <= 1.2.4: can be `undefined`.\r\n\t\t// Version >= 1.2.5: can be `0`.\r\n\t\treturn !!this.types()\r\n\t}\r\n\r\n\ttype(type) {\r\n\t\tif (this.hasTypes() && getType(this.types(), type)) {\r\n\t\t\treturn new Type(getType(this.types(), type), this)\r\n\t\t}\r\n\t}\r\n\r\n\text() {\r\n\t\tif (this.v1 || this.v2) return DEFAULT_EXT_PREFIX\r\n\t\treturn this.metadata[13] || DEFAULT_EXT_PREFIX\r\n\t}\r\n}\r\n\r\nclass Format {\r\n\tconstructor(format, metadata) {\r\n\t\tthis._format = format\r\n\t\tthis.metadata = metadata\r\n\t}\r\n\r\n\tpattern() {\r\n\t\treturn this._format[0]\r\n\t}\r\n\r\n\tformat() {\r\n\t\treturn this._format[1]\r\n\t}\r\n\r\n\tleadingDigitsPatterns() {\r\n\t\treturn this._format[2] || []\r\n\t}\r\n\r\n\tnationalPrefixFormattingRule() {\r\n\t\treturn this._format[3] || this.metadata.nationalPrefixFormattingRule()\r\n\t}\r\n\r\n\tnationalPrefixIsOptionalWhenFormattingInNationalFormat() {\r\n\t\treturn !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat()\r\n\t}\r\n\r\n\tnationalPrefixIsMandatoryWhenFormattingInNationalFormat() {\r\n\t\t// National prefix is omitted if there's no national prefix formatting rule\r\n\t\t// set for this country, or when the national prefix formatting rule\r\n\t\t// contains no national prefix itself, or when this rule is set but\r\n\t\t// national prefix is optional for this phone number format\r\n\t\t// (and it is not enforced explicitly)\r\n\t\treturn this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat()\r\n\t}\r\n\r\n\t// Checks whether national prefix formatting rule contains national prefix.\r\n\tusesNationalPrefix() {\r\n\t\treturn this.nationalPrefixFormattingRule() &&\r\n\t\t\t// Check that national prefix formatting rule is not a \"dummy\" one.\r\n\t\t\t!FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule())\r\n\t\t\t// In compressed metadata, `this.nationalPrefixFormattingRule()` is `0`\r\n\t\t\t// when `national_prefix_formatting_rule` is not present.\r\n\t\t\t// So, `true` or `false` are returned explicitly here, so that\r\n\t\t\t// `0` number isn't returned.\r\n\t\t\t? true\r\n\t\t\t: false\r\n\t}\r\n\r\n\tinternationalFormat() {\r\n\t\treturn this._format[5] || this.format()\r\n\t}\r\n}\r\n\r\n/**\r\n * A pattern that is used to determine if the national prefix formatting rule\r\n * has the first group only, i.e., does not start with the national prefix.\r\n * Note that the pattern explicitly allows for unbalanced parentheses.\r\n */\r\nconst FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\\(?\\$1\\)?$/\r\n\r\nclass Type {\r\n\tconstructor(type, metadata) {\r\n\t\tthis.type = type\r\n\t\tthis.metadata = metadata\r\n\t}\r\n\r\n\tpattern() {\r\n\t\tif (this.metadata.v1) return this.type\r\n\t\treturn this.type[0]\r\n\t}\r\n\r\n\tpossibleLengths() {\r\n\t\tif (this.metadata.v1) return\r\n\t\treturn this.type[1] || this.metadata.possibleLengths()\r\n\t}\r\n}\r\n\r\nfunction getType(types, type) {\r\n\tswitch (type) {\r\n\t\tcase 'FIXED_LINE':\r\n\t\t\treturn types[0]\r\n\t\tcase 'MOBILE':\r\n\t\t\treturn types[1]\r\n\t\tcase 'TOLL_FREE':\r\n\t\t\treturn types[2]\r\n\t\tcase 'PREMIUM_RATE':\r\n\t\t\treturn types[3]\r\n\t\tcase 'PERSONAL_NUMBER':\r\n\t\t\treturn types[4]\r\n\t\tcase 'VOICEMAIL':\r\n\t\t\treturn types[5]\r\n\t\tcase 'UAN':\r\n\t\t\treturn types[6]\r\n\t\tcase 'PAGER':\r\n\t\t\treturn types[7]\r\n\t\tcase 'VOIP':\r\n\t\t\treturn types[8]\r\n\t\tcase 'SHARED_COST':\r\n\t\t\treturn types[9]\r\n\t}\r\n}\r\n\r\nexport function validateMetadata(metadata) {\r\n\tif (!metadata) {\r\n\t\tthrow new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.')\r\n\t}\r\n\r\n\t// `country_phone_code_to_countries` was renamed to\r\n\t// `country_calling_codes` in `1.0.18`.\r\n\tif (!is_object(metadata) || !is_object(metadata.countries)) {\r\n\t\tthrow new Error(`[libphonenumber-js] \\`metadata\\` argument was passed but it's not a valid metadata. Must be an object having \\`.countries\\` child object property. Got ${is_object(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + type_of(metadata) + ': ' + metadata}.`)\r\n\t}\r\n}\r\n\r\n// Babel transforms `typeof` into some \"branches\"\r\n// so istanbul will show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst is_object = _ => typeof _ === 'object'\r\n\r\n// Babel transforms `typeof` into some \"branches\"\r\n// so istanbul will show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst type_of = _ => typeof _\r\n\r\n/**\r\n * Returns extension prefix for a country.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string?}\r\n * @example\r\n * // Returns \" ext. \"\r\n * getExtPrefix(\"US\")\r\n */\r\nexport function getExtPrefix(country, metadata) {\r\n\tmetadata = new Metadata(metadata)\r\n\tif (metadata.hasCountry(country)) {\r\n\t\treturn metadata.country(country).ext()\r\n\t}\r\n\treturn DEFAULT_EXT_PREFIX\r\n}\r\n\r\n/**\r\n * Returns \"country calling code\" for a country.\r\n * Throws an error if the country doesn't exist or isn't supported by this library.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string}\r\n * @example\r\n * // Returns \"44\"\r\n * getCountryCallingCode(\"GB\")\r\n */\r\nexport function getCountryCallingCode(country, metadata) {\r\n\tmetadata = new Metadata(metadata)\r\n\tif (metadata.hasCountry(country)) {\r\n\t\treturn metadata.country(country).countryCallingCode()\r\n\t}\r\n\tthrow new Error(`Unknown country: ${country}`)\r\n}\r\n\r\nexport function isSupportedCountry(country, metadata) {\r\n\t// metadata = new Metadata(metadata)\r\n\t// return metadata.hasCountry(country)\r\n\treturn metadata.countries[country] !== undefined\r\n}\r\n\r\nfunction setVersion(metadata) {\r\n\tconst { version } = metadata\r\n\tif (typeof version === 'number') {\r\n\t\tthis.v1 = version === 1\r\n\t\tthis.v2 = version === 2\r\n\t\tthis.v3 = version === 3\r\n\t\tthis.v4 = version === 4\r\n\t} else {\r\n\t\tif (!version) {\r\n\t\t\tthis.v1 = true\r\n\t\t} else if (compare(version, V3) === -1) {\r\n\t\t\tthis.v2 = true\r\n\t\t} else if (compare(version, V4) === -1) {\r\n\t\t\tthis.v3 = true\r\n\t\t} else {\r\n\t\t\tthis.v4 = true\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// const ISO_COUNTRY_CODE = /^[A-Z]{2}$/\r\n// function isCountryCode(countryCode) {\r\n// \treturn ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode)\r\n// }"],"mappings":";;;;;;;;;;;AAAA;;;;;;;;;;;;AAEA;AACA;AACA,IAAMA,EAAE,GAAG,QAAX,C,CAEA;;AACA,IAAMC,EAAE,GAAG,OAAX,C,CAEA;;AACA,IAAMC,EAAE,GAAG,QAAX;AAEA,IAAMC,kBAAkB,GAAG,QAA3B;AAEA,IAAMC,oBAAoB,GAAG,OAA7B;AAEA;AACA;AACA;;IACqBC,Q;EACpB,kBAAYC,QAAZ,EAAsB;IAAA;;IACrBC,gBAAgB,CAACD,QAAD,CAAhB;IACA,KAAKA,QAAL,GAAgBA,QAAhB;IACAE,UAAU,CAACC,IAAX,CAAgB,IAAhB,EAAsBH,QAAtB;EACA;;;;WAED,wBAAe;MACd,OAAOI,MAAM,CAACC,IAAP,CAAY,KAAKL,QAAL,CAAcM,SAA1B,EAAqCC,MAArC,CAA4C,UAAAC,CAAC;QAAA,OAAIA,CAAC,KAAK,KAAV;MAAA,CAA7C,CAAP;IACA;;;WAED,4BAAmBC,WAAnB,EAAgC;MAC/B,OAAO,KAAKT,QAAL,CAAcM,SAAd,CAAwBG,WAAxB,CAAP;IACA;;;WAED,yBAAgB;MACf,IAAI,KAAKC,EAAL,IAAW,KAAKC,EAAhB,IAAsB,KAAKC,EAA/B,EAAmC,OADpB,CAEf;MACA;MACA;;MACA,OAAO,KAAKZ,QAAL,CAAca,aAAd,IAA+B,KAAKb,QAAL,CAAcc,eAApD;IACA;;;WAED,oBAAWC,OAAX,EAAoB;MACnB,OAAO,KAAKC,kBAAL,CAAwBD,OAAxB,MAAqCE,SAA5C;IACA;;;WAED,wBAAeC,WAAf,EAA4B;MAC3B,IAAI,KAAKC,6BAAL,CAAmCD,WAAnC,CAAJ,EAAqD;QACpD,OAAO,IAAP;MACA;;MACD,IAAI,KAAKL,aAAL,EAAJ,EAA0B;QACzB,IAAI,KAAKA,aAAL,GAAqBK,WAArB,CAAJ,EAAuC;UACtC,OAAO,IAAP;QACA;MACD,CAJD,MAIO;QACN;QACA,IAAME,YAAY,GAAG,KAAKC,mBAAL,GAA2BH,WAA3B,CAArB;;QACA,IAAIE,YAAY,IAAIA,YAAY,CAACE,MAAb,KAAwB,CAAxC,IAA6CF,YAAY,CAAC,CAAD,CAAZ,KAAoB,KAArE,EAA4E;UAC3E,OAAO,IAAP;QACA;MACD;IACD;;;WAED,oCAA2BF,WAA3B,EAAwC;MACvC,IAAI,KAAKL,aAAL,EAAJ,EAA0B;QACzB,OAAO,KAAKA,aAAL,GAAqBK,WAArB,IAAoC,IAApC,GAA2C,KAAlD;MACA,CAFD,MAEO;QACN,OAAO,KAAKC,6BAAL,CAAmCD,WAAnC,IAAkD,KAAlD,GAA0D,IAAjE;MACA;IACD,C,CAED;;;;WACA,iBAAQT,WAAR,EAAqB;MACpB,OAAO,KAAKc,mBAAL,CAAyBd,WAAzB,CAAP;IACA;;;WAED,6BAAoBA,WAApB,EAAiCS,WAAjC,EAA8C;MAC7C;MACA,IAAIT,WAAW,IAAIX,oBAAoB,CAAC0B,IAArB,CAA0Bf,WAA1B,CAAnB,EAA2D;QAC1DS,WAAW,GAAGT,WAAd;QACAA,WAAW,GAAG,IAAd;MACA;;MACD,IAAIA,WAAW,IAAIA,WAAW,KAAK,KAAnC,EAA0C;QACzC,IAAI,CAAC,KAAKgB,UAAL,CAAgBhB,WAAhB,CAAL,EAAmC;UAClC,MAAM,IAAIiB,KAAJ,4BAA8BjB,WAA9B,EAAN;QACA;;QACD,KAAKkB,aAAL,GAAqB,IAAIC,aAAJ,CAAkB,KAAKZ,kBAAL,CAAwBP,WAAxB,CAAlB,EAAwD,IAAxD,CAArB;MACA,CALD,MAKO,IAAIS,WAAJ,EAAiB;QACvB,IAAI,CAAC,KAAKW,cAAL,CAAoBX,WAApB,CAAL,EAAuC;UACtC,MAAM,IAAIQ,KAAJ,iCAAmCR,WAAnC,EAAN;QACA;;QACD,KAAKS,aAAL,GAAqB,IAAIC,aAAJ,CAAkB,KAAKE,wBAAL,CAA8BZ,WAA9B,CAAlB,EAA8D,IAA9D,CAArB;MACA,CALM,MAKA;QACN,KAAKS,aAAL,GAAqBV,SAArB;MACA;;MACD,OAAO,IAAP;IACA;;;WAED,uCAA8BC,WAA9B,EAA2C;MAC1C,IAAME,YAAY,GAAG,KAAKC,mBAAL,GAA2BH,WAA3B,CAArB;;MACA,IAAIE,YAAJ,EAAkB;QACjB;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,IAAIA,YAAY,CAACE,MAAb,KAAwB,CAAxB,IAA6BF,YAAY,CAAC,CAAD,CAAZ,CAAgBE,MAAhB,KAA2B,CAA5D,EAA+D;UAC9D;QACA;;QACD,OAAOF,YAAP;MACA;IACD;;;WAED,sCAA6BF,WAA7B,EAA0C;MACzC,IAAME,YAAY,GAAG,KAAKD,6BAAL,CAAmCD,WAAnC,CAArB;;MACA,IAAIE,YAAJ,EAAkB;QACjB,OAAOA,YAAY,CAAC,CAAD,CAAnB;MACA;IACD;;;WAED,kCAAyBF,WAAzB,EAAsC;MACrC,IAAMT,WAAW,GAAG,KAAKsB,4BAAL,CAAkCb,WAAlC,CAApB;;MACA,IAAIT,WAAJ,EAAiB;QAChB,OAAO,KAAKO,kBAAL,CAAwBP,WAAxB,CAAP;MACA;;MACD,IAAI,KAAKI,aAAL,EAAJ,EAA0B;QACzB,IAAMb,QAAQ,GAAG,KAAKa,aAAL,GAAqBK,WAArB,CAAjB;;QACA,IAAIlB,QAAJ,EAAc;UACb,OAAOA,QAAP;QACA;MACD,CALD,MAKO;QACN;QACA;QACA;QACA;QACA;QACA,IAAMoB,YAAY,GAAG,KAAKC,mBAAL,GAA2BH,WAA3B,CAArB;;QACA,IAAIE,YAAY,IAAIA,YAAY,CAACE,MAAb,KAAwB,CAAxC,IAA6CF,YAAY,CAAC,CAAD,CAAZ,KAAoB,KAArE,EAA4E;UAC3E,OAAO,KAAKpB,QAAL,CAAcM,SAAd,CAAwB,KAAxB,CAAP;QACA;MACD;IACD,C,CAED;;;;WACA,8BAAqB;MACpB,OAAO,KAAKqB,aAAL,CAAmBT,WAAnB,EAAP;IACA,C,CAED;;;;WACA,qBAAY;MACX,OAAO,KAAKS,aAAL,CAAmBK,SAAnB,EAAP;IACA,C,CAED;;;;WACA,4BAAmB;MAClB,OAAO,KAAKL,aAAL,CAAmBM,gBAAnB,EAAP;IACA,C,CAED;;;;WACA,iCAAwB;MACvB,OAAO,KAAKN,aAAL,CAAmBO,qBAAnB,EAAP;IACA,C,CAED;;;;WACA,2BAAkB;MACjB,OAAO,KAAKP,aAAL,CAAmBQ,eAAnB,EAAP;IACA,C,CAED;;;;WACA,mBAAU;MACT,OAAO,KAAKR,aAAL,CAAmBS,OAAnB,EAAP;IACA,C,CAED;;;;WACA,oCAA2B;MAC1B,OAAO,KAAKT,aAAL,CAAmBU,wBAAnB,EAAP;IACA,C,CAED;;;;WACA,uCAA8B;MAC7B,OAAO,KAAKV,aAAL,CAAmBW,2BAAnB,EAAP;IACA,C,CAED;;;;WACA,yBAAgB;MACf,OAAO,KAAKX,aAAL,CAAmBY,aAAnB,EAAP;IACA,C,CAED;;;;WACA,oBAAW;MACV,OAAO,KAAKZ,aAAL,CAAmBa,QAAnB,EAAP;IACA,C,CAED;;;;WACA,cAAKC,KAAL,EAAW;MACV,OAAO,KAAKd,aAAL,CAAmBc,IAAnB,CAAwBA,KAAxB,CAAP;IACA,C,CAED;;;;WACA,eAAM;MACL,OAAO,KAAKd,aAAL,CAAmBe,GAAnB,EAAP;IACA;;;WAED,+BAAsB;MACrB,IAAI,KAAKhC,EAAT,EAAa,OAAO,KAAKV,QAAL,CAAc2C,+BAArB;MACb,OAAO,KAAK3C,QAAL,CAAc4C,qBAArB;IACA,C,CAED;;;;WACA,2CAAkC1B,WAAlC,EAA+C;MAC9C,OAAO,KAAKK,mBAAL,CAAyBL,WAAzB,CAAP;IACA;;;WAED,oCAA2B;MAC1B,OAAO,KAAKS,aAAL,KAAuBV,SAA9B;IACA;;;;;;;;IAGIW,a;EACL,uBAAY5B,QAAZ,EAAsB6C,oBAAtB,EAA4C;IAAA;;IAC3C,KAAKA,oBAAL,GAA4BA,oBAA5B;IACA,KAAK7C,QAAL,GAAgBA,QAAhB;IACAE,UAAU,CAACC,IAAX,CAAgB,IAAhB,EAAsB0C,oBAAoB,CAAC7C,QAA3C;EACA;;;;WAED,uBAAc;MACb,OAAO,KAAKA,QAAL,CAAc,CAAd,CAAP;IACA,C,CAED;IACA;IACA;IACA;IACA;IACA;;;;WACA,8CAAqC;MACpC,OAAO,KAAK6C,oBAAL,CAA0Bf,wBAA1B,CAAmD,KAAKZ,WAAL,EAAnD,CAAP;IACA,C,CAED;;;;WACA,qBAAY;MACX,IAAI,KAAKR,EAAL,IAAW,KAAKC,EAApB,EAAwB;MACxB,OAAO,KAAKX,QAAL,CAAc,CAAd,CAAP;IACA,C,CAED;;;;WACA,4BAAmB;MAClB,IAAI,KAAKU,EAAL,IAAW,KAAKC,EAApB,EAAwB;MACxB,OAAO,KAAKX,QAAL,CAAc,EAAd,CAAP;IACA;;;WAED,iCAAwB;MACvB,IAAI,KAAKU,EAAL,IAAW,KAAKC,EAApB,EAAwB,OAAO,KAAKX,QAAL,CAAc,CAAd,CAAP;MACxB,OAAO,KAAKA,QAAL,CAAc,CAAd,CAAP;IACA,C,CAED;;;;WACA,2BAAkB;MACjB,IAAI,KAAKU,EAAT,EAAa;MACb,OAAO,KAAKV,QAAL,CAAc,KAAKW,EAAL,GAAU,CAAV,GAAc,CAA5B,CAAP;IACA;;;WAED,qBAAYX,QAAZ,EAAsB;MACrB,OAAOA,QAAQ,CAAC,KAAKU,EAAL,GAAU,CAAV,GAAc,KAAKC,EAAL,GAAU,CAAV,GAAc,CAA7B,CAAf;IACA,C,CAED;IACA;IACA;;;;WACA,mBAAU;MAAA;;MACT,IAAMyB,OAAO,GAAG,KAAKU,WAAL,CAAiB,KAAK9C,QAAtB,KAAmC,KAAK8C,WAAL,CAAiB,KAAKC,kCAAL,EAAjB,CAAnC,IAAkG,EAAlH;MACA,OAAOX,OAAO,CAACY,GAAR,CAAY,UAAAxC,CAAC;QAAA,OAAI,IAAIyC,MAAJ,CAAWzC,CAAX,EAAc,KAAd,CAAJ;MAAA,CAAb,CAAP;IACA;;;WAED,0BAAiB;MAChB,OAAO,KAAKR,QAAL,CAAc,KAAKU,EAAL,GAAU,CAAV,GAAc,KAAKC,EAAL,GAAU,CAAV,GAAc,CAA1C,CAAP;IACA;;;WAED,0CAAiCX,QAAjC,EAA2C;MAC1C,OAAOA,QAAQ,CAAC,KAAKU,EAAL,GAAU,CAAV,GAAc,KAAKC,EAAL,GAAU,CAAV,GAAc,CAA7B,CAAf;IACA,C,CAED;IACA;IACA;;;;WACA,wCAA+B;MAC9B,OAAO,KAAKuC,gCAAL,CAAsC,KAAKlD,QAA3C,KAAwD,KAAKkD,gCAAL,CAAsC,KAAKH,kCAAL,EAAtC,CAA/D;IACA;;;WAED,qCAA4B;MAC3B,OAAO,KAAK/C,QAAL,CAAc,KAAKU,EAAL,GAAU,CAAV,GAAc,KAAKC,EAAL,GAAU,CAAV,GAAc,CAA1C,CAAP;IACA;;;WAED,oCAA2B;MAC1B;MACA;MACA,OAAO,KAAKwC,yBAAL,MAAoC,KAAKC,cAAL,EAA3C;IACA;;;WAED,uCAA8B;MAC7B,OAAO,KAAKpD,QAAL,CAAc,KAAKU,EAAL,GAAU,CAAV,GAAc,KAAKC,EAAL,GAAU,CAAV,GAAc,CAA1C,CAAP;IACA;;;WAED,sDAA6C;MAC5C,OAAO,CAAC,CAAC,KAAKX,QAAL,CAAc,KAAKU,EAAL,GAAU,CAAV,GAAc,KAAKC,EAAL,GAAU,CAAV,GAAc,CAA1C,CAAT;IACA,C,CAED;IACA;IACA;IACA;;;;WACA,kEAAyD;MACxD,OAAO,KAAK0C,0CAAL,CAAgD,KAAKrD,QAArD,KACN,KAAKqD,0CAAL,CAAgD,KAAKN,kCAAL,EAAhD,CADD;IAEA;;;WAED,yBAAgB;MACf,OAAO,KAAK/C,QAAL,CAAc,KAAKU,EAAL,GAAU,CAAV,GAAc,KAAKC,EAAL,GAAU,CAAV,GAAc,EAA1C,CAAP;IACA;;;WAED,iBAAQ;MACP,OAAO,KAAKX,QAAL,CAAc,KAAKU,EAAL,GAAU,CAAV,GAAc,KAAKC,EAAL,GAAU,EAAV,GAAe,EAA3C,CAAP;IACA;;;WAED,oBAAW;MACV;;MACA;MACA,IAAI,KAAK2C,KAAL,MAAgB,KAAKA,KAAL,GAAahC,MAAb,KAAwB,CAA5C,EAA+C;QAC9C,OAAO,KAAP;MACA,CALS,CAMV;MACA;;;MACA,OAAO,CAAC,CAAC,KAAKgC,KAAL,EAAT;IACA;;;WAED,cAAKb,MAAL,EAAW;MACV,IAAI,KAAKD,QAAL,MAAmBe,OAAO,CAAC,KAAKD,KAAL,EAAD,EAAeb,MAAf,CAA9B,EAAoD;QACnD,OAAO,IAAIe,IAAJ,CAASD,OAAO,CAAC,KAAKD,KAAL,EAAD,EAAeb,MAAf,CAAhB,EAAsC,IAAtC,CAAP;MACA;IACD;;;WAED,eAAM;MACL,IAAI,KAAK/B,EAAL,IAAW,KAAKC,EAApB,EAAwB,OAAOd,kBAAP;MACxB,OAAO,KAAKG,QAAL,CAAc,EAAd,KAAqBH,kBAA5B;IACA;;;;;;IAGIoD,M;EACL,gBAAYQ,MAAZ,EAAoBzD,QAApB,EAA8B;IAAA;;IAC7B,KAAK0D,OAAL,GAAeD,MAAf;IACA,KAAKzD,QAAL,GAAgBA,QAAhB;EACA;;;;WAED,mBAAU;MACT,OAAO,KAAK0D,OAAL,CAAa,CAAb,CAAP;IACA;;;WAED,kBAAS;MACR,OAAO,KAAKA,OAAL,CAAa,CAAb,CAAP;IACA;;;WAED,iCAAwB;MACvB,OAAO,KAAKA,OAAL,CAAa,CAAb,KAAmB,EAA1B;IACA;;;WAED,wCAA+B;MAC9B,OAAO,KAAKA,OAAL,CAAa,CAAb,KAAmB,KAAK1D,QAAL,CAAc2D,4BAAd,EAA1B;IACA;;;WAED,kEAAyD;MACxD,OAAO,CAAC,CAAC,KAAKD,OAAL,CAAa,CAAb,CAAF,IAAqB,KAAK1D,QAAL,CAAc4D,sDAAd,EAA5B;IACA;;;WAED,mEAA0D;MACzD;MACA;MACA;MACA;MACA;MACA,OAAO,KAAKC,kBAAL,MAA6B,CAAC,KAAKD,sDAAL,EAArC;IACA,C,CAED;;;;WACA,8BAAqB;MACpB,OAAO,KAAKD,4BAAL,MACN;MACA,CAACG,+BAA+B,CAACtC,IAAhC,CAAqC,KAAKmC,4BAAL,EAArC,CAFK,CAGN;MACA;MACA;MACA;MANM,EAOJ,IAPI,GAQJ,KARH;IASA;;;WAED,+BAAsB;MACrB,OAAO,KAAKD,OAAL,CAAa,CAAb,KAAmB,KAAKD,MAAL,EAA1B;IACA;;;;;AAGF;AACA;AACA;AACA;AACA;;;AACA,IAAMK,+BAA+B,GAAG,aAAxC;;IAEMN,I;EACL,cAAYf,IAAZ,EAAkBzC,QAAlB,EAA4B;IAAA;;IAC3B,KAAKyC,IAAL,GAAYA,IAAZ;IACA,KAAKzC,QAAL,GAAgBA,QAAhB;EACA;;;;WAED,mBAAU;MACT,IAAI,KAAKA,QAAL,CAAcU,EAAlB,EAAsB,OAAO,KAAK+B,IAAZ;MACtB,OAAO,KAAKA,IAAL,CAAU,CAAV,CAAP;IACA;;;WAED,2BAAkB;MACjB,IAAI,KAAKzC,QAAL,CAAcU,EAAlB,EAAsB;MACtB,OAAO,KAAK+B,IAAL,CAAU,CAAV,KAAgB,KAAKzC,QAAL,CAAcmC,eAAd,EAAvB;IACA;;;;;;AAGF,SAASoB,OAAT,CAAiBD,KAAjB,EAAwBb,IAAxB,EAA8B;EAC7B,QAAQA,IAAR;IACC,KAAK,YAAL;MACC,OAAOa,KAAK,CAAC,CAAD,CAAZ;;IACD,KAAK,QAAL;MACC,OAAOA,KAAK,CAAC,CAAD,CAAZ;;IACD,KAAK,WAAL;MACC,OAAOA,KAAK,CAAC,CAAD,CAAZ;;IACD,KAAK,cAAL;MACC,OAAOA,KAAK,CAAC,CAAD,CAAZ;;IACD,KAAK,iBAAL;MACC,OAAOA,KAAK,CAAC,CAAD,CAAZ;;IACD,KAAK,WAAL;MACC,OAAOA,KAAK,CAAC,CAAD,CAAZ;;IACD,KAAK,KAAL;MACC,OAAOA,KAAK,CAAC,CAAD,CAAZ;;IACD,KAAK,OAAL;MACC,OAAOA,KAAK,CAAC,CAAD,CAAZ;;IACD,KAAK,MAAL;MACC,OAAOA,KAAK,CAAC,CAAD,CAAZ;;IACD,KAAK,aAAL;MACC,OAAOA,KAAK,CAAC,CAAD,CAAZ;EApBF;AAsBA;;AAEM,SAASrD,gBAAT,CAA0BD,QAA1B,EAAoC;EAC1C,IAAI,CAACA,QAAL,EAAe;IACd,MAAM,IAAI0B,KAAJ,CAAU,2EAAV,CAAN;EACA,CAHyC,CAK1C;EACA;;;EACA,IAAI,CAACqC,SAAS,CAAC/D,QAAD,CAAV,IAAwB,CAAC+D,SAAS,CAAC/D,QAAQ,CAACM,SAAV,CAAtC,EAA4D;IAC3D,MAAM,IAAIoB,KAAJ,8JAAoKqC,SAAS,CAAC/D,QAAD,CAAT,GAAsB,2BAA2BI,MAAM,CAACC,IAAP,CAAYL,QAAZ,EAAsBgE,IAAtB,CAA2B,IAA3B,CAA3B,GAA8D,IAApF,GAA2F,OAAOC,OAAO,CAACjE,QAAD,CAAd,GAA2B,IAA3B,GAAkCA,QAAjS,OAAN;EACA;AACD,C,CAED;AACA;;AACA;;;AACA,IAAM+D,SAAS,GAAG,SAAZA,SAAY,CAAAvD,CAAC;EAAA,OAAI,QAAOA,CAAP,MAAa,QAAjB;AAAA,CAAnB,C,CAEA;AACA;;AACA;;;AACA,IAAMyD,OAAO,GAAG,SAAVA,OAAU,CAAAzD,CAAC;EAAA,eAAWA,CAAX;AAAA,CAAjB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAAS0D,YAAT,CAAsBnD,OAAtB,EAA+Bf,QAA/B,EAAyC;EAC/CA,QAAQ,GAAG,IAAID,QAAJ,CAAaC,QAAb,CAAX;;EACA,IAAIA,QAAQ,CAACyB,UAAT,CAAoBV,OAApB,CAAJ,EAAkC;IACjC,OAAOf,QAAQ,CAACe,OAAT,CAAiBA,OAAjB,EAA0B2B,GAA1B,EAAP;EACA;;EACD,OAAO7C,kBAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASsE,qBAAT,CAA+BpD,OAA/B,EAAwCf,QAAxC,EAAkD;EACxDA,QAAQ,GAAG,IAAID,QAAJ,CAAaC,QAAb,CAAX;;EACA,IAAIA,QAAQ,CAACyB,UAAT,CAAoBV,OAApB,CAAJ,EAAkC;IACjC,OAAOf,QAAQ,CAACe,OAAT,CAAiBA,OAAjB,EAA0BqD,kBAA1B,EAAP;EACA;;EACD,MAAM,IAAI1C,KAAJ,4BAA8BX,OAA9B,EAAN;AACA;;AAEM,SAASsD,kBAAT,CAA4BtD,OAA5B,EAAqCf,QAArC,EAA+C;EACrD;EACA;EACA,OAAOA,QAAQ,CAACM,SAAT,CAAmBS,OAAnB,MAAgCE,SAAvC;AACA;;AAED,SAASf,UAAT,CAAoBF,QAApB,EAA8B;EAC7B,IAAQsE,OAAR,GAAoBtE,QAApB,CAAQsE,OAAR;;EACA,IAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;IAChC,KAAK5D,EAAL,GAAU4D,OAAO,KAAK,CAAtB;IACA,KAAK3D,EAAL,GAAU2D,OAAO,KAAK,CAAtB;IACA,KAAK1D,EAAL,GAAU0D,OAAO,KAAK,CAAtB;IACA,KAAKC,EAAL,GAAUD,OAAO,KAAK,CAAtB;EACA,CALD,MAKO;IACN,IAAI,CAACA,OAAL,EAAc;MACb,KAAK5D,EAAL,GAAU,IAAV;IACA,CAFD,MAEO,IAAI,IAAA8D,yBAAA,EAAQF,OAAR,EAAiB3E,EAAjB,MAAyB,CAAC,CAA9B,EAAiC;MACvC,KAAKgB,EAAL,GAAU,IAAV;IACA,CAFM,MAEA,IAAI,IAAA6D,yBAAA,EAAQF,OAAR,EAAiB1E,EAAjB,MAAyB,CAAC,CAA9B,EAAiC;MACvC,KAAKgB,EAAL,GAAU,IAAV;IACA,CAFM,MAEA;MACN,KAAK2D,EAAL,GAAU,IAAV;IACA;EACD;AACD,C,CAED;AACA;AACA;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/metadata.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/metadata.test.js new file mode 100644 index 00000000..216dcebc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/metadata.test.js @@ -0,0 +1,194 @@ +"use strict"; + +var _metadataMin = _interopRequireDefault(require("../metadata.min.json")); + +var _metadataMin2 = _interopRequireDefault(require("../test/metadata/1.0.0/metadata.min.json")); + +var _metadataMin3 = _interopRequireDefault(require("../test/metadata/1.1.11/metadata.min.json")); + +var _metadataMin4 = _interopRequireDefault(require("../test/metadata/1.7.34/metadata.min.json")); + +var _metadataMin5 = _interopRequireDefault(require("../test/metadata/1.7.37/metadata.min.json")); + +var _metadata = _interopRequireWildcard(require("./metadata.js")); + +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } + +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +describe('metadata', function () { + it('should return undefined for non-defined types', function () { + var FR = new _metadata["default"](_metadataMin["default"]).country('FR'); + type(FR.type('FIXED_LINE')).should.equal('undefined'); + }); + it('should validate country', function () { + var thrower = function thrower() { + return new _metadata["default"](_metadataMin["default"]).country('RUS'); + }; + + thrower.should["throw"]('Unknown country'); + }); + it('should tell if a country is supported', function () { + (0, _metadata.isSupportedCountry)('RU', _metadataMin["default"]).should.equal(true); + (0, _metadata.isSupportedCountry)('XX', _metadataMin["default"]).should.equal(false); + }); + it('should return ext prefix for a country', function () { + (0, _metadata.getExtPrefix)('US', _metadataMin["default"]).should.equal(' ext. '); + (0, _metadata.getExtPrefix)('CA', _metadataMin["default"]).should.equal(' ext. '); + (0, _metadata.getExtPrefix)('GB', _metadataMin["default"]).should.equal(' x'); // expect(getExtPrefix('XX', metadata)).to.equal(undefined) + + (0, _metadata.getExtPrefix)('XX', _metadataMin["default"]).should.equal(' ext. '); + }); + it('should cover non-occuring edge cases', function () { + new _metadata["default"](_metadataMin["default"]).getNumberingPlanMetadata('999'); + }); + it('should support deprecated methods', function () { + new _metadata["default"](_metadataMin["default"]).country('US').nationalPrefixForParsing().should.equal('1'); + new _metadata["default"](_metadataMin["default"]).chooseCountryByCountryCallingCode('1').nationalPrefixForParsing().should.equal('1'); + }); + it('should tell if a national prefix is mandatory when formatting a national number', function () { + var meta = new _metadata["default"](_metadataMin["default"]); // No "national_prefix_formatting_rule". + // "national_prefix_is_optional_when_formatting": true + + meta.country('US'); + meta.numberingPlan.formats()[0].nationalPrefixIsMandatoryWhenFormattingInNationalFormat().should.equal(false); // "national_prefix_formatting_rule": "8 ($1)" + // "national_prefix_is_optional_when_formatting": true + + meta.country('RU'); + meta.numberingPlan.formats()[0].nationalPrefixIsMandatoryWhenFormattingInNationalFormat().should.equal(false); // "national_prefix": "0" + // "national_prefix_formatting_rule": "0 $1" + + meta.country('FR'); + meta.numberingPlan.formats()[0].nationalPrefixIsMandatoryWhenFormattingInNationalFormat().should.equal(true); + }); + it('should validate metadata', function () { + var thrower = function thrower() { + return (0, _metadata.validateMetadata)(); + }; + + thrower.should["throw"]('`metadata` argument not passed'); + + thrower = function thrower() { + return (0, _metadata.validateMetadata)(123); + }; + + thrower.should["throw"]('Got a number: 123.'); + + thrower = function thrower() { + return (0, _metadata.validateMetadata)('abc'); + }; + + thrower.should["throw"]('Got a string: abc.'); + + thrower = function thrower() { + return (0, _metadata.validateMetadata)({ + a: true, + b: 2 + }); + }; + + thrower.should["throw"]('Got an object of shape: { a, b }.'); + + thrower = function thrower() { + return (0, _metadata.validateMetadata)({ + a: true, + countries: 2 + }); + }; + + thrower.should["throw"]('Got an object of shape: { a, countries }.'); + + thrower = function thrower() { + return (0, _metadata.validateMetadata)({ + country_calling_codes: true, + countries: 2 + }); + }; + + thrower.should["throw"]('Got an object of shape'); + + thrower = function thrower() { + return (0, _metadata.validateMetadata)({ + country_calling_codes: {}, + countries: 2 + }); + }; + + thrower.should["throw"]('Got an object of shape'); + (0, _metadata.validateMetadata)({ + country_calling_codes: {}, + countries: {}, + b: 3 + }); + }); + it('should work around `nonGeographical` typo in metadata generated from `1.7.35` to `1.7.37`', function () { + var meta = new _metadata["default"](_metadataMin5["default"]); + meta.selectNumberingPlan('888'); + type(meta.nonGeographic()).should.equal('object'); + }); + it('should work around `nonGeographic` metadata not existing before `1.7.35`', function () { + var meta = new _metadata["default"](_metadataMin4["default"]); + type(meta.getNumberingPlanMetadata('800')).should.equal('object'); + type(meta.getNumberingPlanMetadata('000')).should.equal('undefined'); + }); + it('should work with metadata from version `1.1.11`', function () { + var meta = new _metadata["default"](_metadataMin3["default"]); + meta.selectNumberingPlan('US'); + meta.numberingPlan.possibleLengths().should.deep.equal([10]); + meta.numberingPlan.formats().length.should.equal(1); + meta.numberingPlan.nationalPrefix().should.equal('1'); + meta.numberingPlan.nationalPrefixForParsing().should.equal('1'); + meta.numberingPlan.type('MOBILE').pattern().should.equal(''); + meta.selectNumberingPlan('AG'); + meta.numberingPlan.leadingDigits().should.equal('268'); // Should've been "268$1" but apparently there was a bug in metadata generator + // and no national prefix transform rules were written. + + expect(meta.numberingPlan.nationalPrefixTransformRule()).to.be["null"]; + meta.selectNumberingPlan('AF'); + meta.numberingPlan.formats()[0].nationalPrefixFormattingRule().should.equal('0$1'); + meta.selectNumberingPlan('RU'); + meta.numberingPlan.formats()[0].nationalPrefixIsOptionalWhenFormattingInNationalFormat().should.equal(true); + }); + it('should work with metadata from version `1.0.0`', function () { + var meta = new _metadata["default"](_metadataMin2["default"]); + meta.selectNumberingPlan('US'); + meta.numberingPlan.formats().length.should.equal(1); + meta.numberingPlan.nationalPrefix().should.equal('1'); + meta.numberingPlan.nationalPrefixForParsing().should.equal('1'); + type(meta.numberingPlan.type('MOBILE')).should.equal('undefined'); + meta.selectNumberingPlan('AG'); + meta.numberingPlan.leadingDigits().should.equal('268'); // Should've been "268$1" but apparently there was a bug in metadata generator + // and no national prefix transform rules were written. + + expect(meta.numberingPlan.nationalPrefixTransformRule()).to.be["null"]; + meta.selectNumberingPlan('AF'); + meta.numberingPlan.formats()[0].nationalPrefixFormattingRule().should.equal('0$1'); + meta.selectNumberingPlan('RU'); + meta.numberingPlan.formats()[0].nationalPrefixIsOptionalWhenFormattingInNationalFormat().should.equal(true); + }); + it('should work around "ext" data not present in metadata from version `1.0.0`', function () { + var meta = new _metadata["default"](_metadataMin2["default"]); + meta.selectNumberingPlan('GB'); + meta.ext().should.equal(' ext. '); + var metaNew = new _metadata["default"](_metadataMin["default"]); + metaNew.selectNumberingPlan('GB'); + metaNew.ext().should.equal(' x'); + }); + it('should work around "default IDD prefix" data not present in metadata from version `1.0.0`', function () { + var meta = new _metadata["default"](_metadataMin2["default"]); + meta.selectNumberingPlan('AU'); + type(meta.defaultIDDPrefix()).should.equal('undefined'); + var metaNew = new _metadata["default"](_metadataMin["default"]); + metaNew.selectNumberingPlan('AU'); + metaNew.defaultIDDPrefix().should.equal('0011'); + }); +}); + +function type(something) { + return _typeof(something); +} +//# sourceMappingURL=metadata.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/metadata.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/metadata.test.js.map new file mode 100644 index 00000000..7b56d361 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/metadata.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"metadata.test.js","names":["describe","it","FR","Metadata","metadata","country","type","should","equal","thrower","isSupportedCountry","getExtPrefix","getNumberingPlanMetadata","nationalPrefixForParsing","chooseCountryByCountryCallingCode","meta","numberingPlan","formats","nationalPrefixIsMandatoryWhenFormattingInNationalFormat","validateMetadata","a","b","countries","country_calling_codes","metadataV4","selectNumberingPlan","nonGeographic","metadataV3","metadataV2","possibleLengths","deep","length","nationalPrefix","pattern","leadingDigits","expect","nationalPrefixTransformRule","to","be","nationalPrefixFormattingRule","nationalPrefixIsOptionalWhenFormattingInNationalFormat","metadataV1","ext","metaNew","defaultIDDPrefix","something"],"sources":["../source/metadata.test.js"],"sourcesContent":["import metadata from '../metadata.min.json' assert { type: 'json' }\r\nimport metadataV1 from '../test/metadata/1.0.0/metadata.min.json' assert { type: 'json' }\r\nimport metadataV2 from '../test/metadata/1.1.11/metadata.min.json' assert { type: 'json' }\r\nimport metadataV3 from '../test/metadata/1.7.34/metadata.min.json' assert { type: 'json' }\r\nimport metadataV4 from '../test/metadata/1.7.37/metadata.min.json' assert { type: 'json' }\r\n\r\nimport Metadata, { validateMetadata, getExtPrefix, isSupportedCountry } from './metadata.js'\r\n\r\ndescribe('metadata', () => {\r\n\tit('should return undefined for non-defined types', () => {\r\n\t\tconst FR = new Metadata(metadata).country('FR')\r\n\t\ttype(FR.type('FIXED_LINE')).should.equal('undefined')\r\n\t})\r\n\r\n\tit('should validate country', () => {\r\n\t\tconst thrower = () => new Metadata(metadata).country('RUS')\r\n\t\tthrower.should.throw('Unknown country')\r\n\t})\r\n\r\n\tit('should tell if a country is supported', () => {\r\n\t\tisSupportedCountry('RU', metadata).should.equal(true)\r\n\t\tisSupportedCountry('XX', metadata).should.equal(false)\r\n\t})\r\n\r\n\tit('should return ext prefix for a country', () => {\r\n\t\tgetExtPrefix('US', metadata).should.equal(' ext. ')\r\n\t\tgetExtPrefix('CA', metadata).should.equal(' ext. ')\r\n\t\tgetExtPrefix('GB', metadata).should.equal(' x')\r\n\t\t// expect(getExtPrefix('XX', metadata)).to.equal(undefined)\r\n\t\tgetExtPrefix('XX', metadata).should.equal(' ext. ')\r\n\t})\r\n\r\n\tit('should cover non-occuring edge cases', () => {\r\n\t\tnew Metadata(metadata).getNumberingPlanMetadata('999')\r\n\t})\r\n\r\n\tit('should support deprecated methods', () => {\r\n\t\tnew Metadata(metadata).country('US').nationalPrefixForParsing().should.equal('1')\r\n\t\tnew Metadata(metadata).chooseCountryByCountryCallingCode('1').nationalPrefixForParsing().should.equal('1')\r\n\t})\r\n\r\n\tit('should tell if a national prefix is mandatory when formatting a national number', () => {\r\n\t\tconst meta = new Metadata(metadata)\r\n\t\t// No \"national_prefix_formatting_rule\".\r\n\t\t// \"national_prefix_is_optional_when_formatting\": true\r\n\t\tmeta.country('US')\r\n\t\tmeta.numberingPlan.formats()[0].nationalPrefixIsMandatoryWhenFormattingInNationalFormat().should.equal(false)\r\n\t\t// \"national_prefix_formatting_rule\": \"8 ($1)\"\r\n\t\t// \"national_prefix_is_optional_when_formatting\": true\r\n\t\tmeta.country('RU')\r\n\t\tmeta.numberingPlan.formats()[0].nationalPrefixIsMandatoryWhenFormattingInNationalFormat().should.equal(false)\r\n\t\t// \"national_prefix\": \"0\"\r\n\t\t// \"national_prefix_formatting_rule\": \"0 $1\"\r\n\t\tmeta.country('FR')\r\n\t\tmeta.numberingPlan.formats()[0].nationalPrefixIsMandatoryWhenFormattingInNationalFormat().should.equal(true)\r\n\t})\r\n\r\n\tit('should validate metadata', () => {\r\n\t\tlet thrower = () => validateMetadata()\r\n\t\tthrower.should.throw('`metadata` argument not passed')\r\n\r\n\t\tthrower = () => validateMetadata(123)\r\n\t\tthrower.should.throw('Got a number: 123.')\r\n\r\n\t\tthrower = () => validateMetadata('abc')\r\n\t\tthrower.should.throw('Got a string: abc.')\r\n\r\n\t\tthrower = () => validateMetadata({ a: true, b: 2 })\r\n\t\tthrower.should.throw('Got an object of shape: { a, b }.')\r\n\r\n\t\tthrower = () => validateMetadata({ a: true, countries: 2 })\r\n\t\tthrower.should.throw('Got an object of shape: { a, countries }.')\r\n\r\n\t\tthrower = () => validateMetadata({ country_calling_codes: true, countries: 2 })\r\n\t\tthrower.should.throw('Got an object of shape')\r\n\r\n\t\tthrower = () => validateMetadata({ country_calling_codes: {}, countries: 2 })\r\n\t\tthrower.should.throw('Got an object of shape')\r\n\r\n\t\tvalidateMetadata({ country_calling_codes: {}, countries: {}, b: 3 })\r\n\t})\r\n\r\n\tit('should work around `nonGeographical` typo in metadata generated from `1.7.35` to `1.7.37`', function() {\r\n\t\tconst meta = new Metadata(metadataV4)\r\n\t\tmeta.selectNumberingPlan('888')\r\n\t\ttype(meta.nonGeographic()).should.equal('object')\r\n\t})\r\n\r\n\tit('should work around `nonGeographic` metadata not existing before `1.7.35`', function() {\r\n\t\tconst meta = new Metadata(metadataV3)\r\n\t\ttype(meta.getNumberingPlanMetadata('800')).should.equal('object')\r\n\t\ttype(meta.getNumberingPlanMetadata('000')).should.equal('undefined')\r\n\t})\r\n\r\n\tit('should work with metadata from version `1.1.11`', function() {\r\n\t\tconst meta = new Metadata(metadataV2)\r\n\r\n\t\tmeta.selectNumberingPlan('US')\r\n\t\tmeta.numberingPlan.possibleLengths().should.deep.equal([10])\r\n\t\tmeta.numberingPlan.formats().length.should.equal(1)\r\n\t\tmeta.numberingPlan.nationalPrefix().should.equal('1')\r\n\t\tmeta.numberingPlan.nationalPrefixForParsing().should.equal('1')\r\n\t\tmeta.numberingPlan.type('MOBILE').pattern().should.equal('')\r\n\r\n\t\tmeta.selectNumberingPlan('AG')\r\n\t\tmeta.numberingPlan.leadingDigits().should.equal('268')\r\n\t\t// Should've been \"268$1\" but apparently there was a bug in metadata generator\r\n\t\t// and no national prefix transform rules were written.\r\n\t\texpect(meta.numberingPlan.nationalPrefixTransformRule()).to.be.null\r\n\r\n\t\tmeta.selectNumberingPlan('AF')\r\n\t\tmeta.numberingPlan.formats()[0].nationalPrefixFormattingRule().should.equal('0$1')\r\n\r\n\t\tmeta.selectNumberingPlan('RU')\r\n\t\tmeta.numberingPlan.formats()[0].nationalPrefixIsOptionalWhenFormattingInNationalFormat().should.equal(true)\r\n\t})\r\n\r\n\tit('should work with metadata from version `1.0.0`', function() {\r\n\t\tconst meta = new Metadata(metadataV1)\r\n\r\n\t\tmeta.selectNumberingPlan('US')\r\n\t\tmeta.numberingPlan.formats().length.should.equal(1)\r\n\t\tmeta.numberingPlan.nationalPrefix().should.equal('1')\r\n\t\tmeta.numberingPlan.nationalPrefixForParsing().should.equal('1')\r\n\t\ttype(meta.numberingPlan.type('MOBILE')).should.equal('undefined')\r\n\r\n\t\tmeta.selectNumberingPlan('AG')\r\n\t\tmeta.numberingPlan.leadingDigits().should.equal('268')\r\n\t\t// Should've been \"268$1\" but apparently there was a bug in metadata generator\r\n\t\t// and no national prefix transform rules were written.\r\n\t\texpect(meta.numberingPlan.nationalPrefixTransformRule()).to.be.null\r\n\r\n\t\tmeta.selectNumberingPlan('AF')\r\n\t\tmeta.numberingPlan.formats()[0].nationalPrefixFormattingRule().should.equal('0$1')\r\n\r\n\t\tmeta.selectNumberingPlan('RU')\r\n\t\tmeta.numberingPlan.formats()[0].nationalPrefixIsOptionalWhenFormattingInNationalFormat().should.equal(true)\r\n\t})\r\n\r\n\tit('should work around \"ext\" data not present in metadata from version `1.0.0`', function() {\r\n\t\tconst meta = new Metadata(metadataV1)\r\n\t\tmeta.selectNumberingPlan('GB')\r\n\t\tmeta.ext().should.equal(' ext. ')\r\n\r\n\t\tconst metaNew = new Metadata(metadata)\r\n\t\tmetaNew.selectNumberingPlan('GB')\r\n\t\tmetaNew.ext().should.equal(' x')\r\n\t})\r\n\r\n\tit('should work around \"default IDD prefix\" data not present in metadata from version `1.0.0`', function() {\r\n\t\tconst meta = new Metadata(metadataV1)\r\n\t\tmeta.selectNumberingPlan('AU')\r\n\t\ttype(meta.defaultIDDPrefix()).should.equal('undefined')\r\n\r\n\t\tconst metaNew = new Metadata(metadata)\r\n\t\tmetaNew.selectNumberingPlan('AU')\r\n\t\tmetaNew.defaultIDDPrefix().should.equal('0011')\r\n\t})\r\n})\r\n\r\nfunction type(something) {\r\n\treturn typeof something\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/package.json b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/package.json new file mode 100644 index 00000000..de873e94 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/package.json @@ -0,0 +1,5 @@ +{ + "name": "libphonenumber-js/build", + "type": "commonjs", + "private": true +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parse.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parse.js new file mode 100644 index 00000000..6c7e683e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parse.js @@ -0,0 +1,48 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = parseNumber; + +var _parse_ = _interopRequireDefault(require("./parse_.js")); + +var _parsePhoneNumber = require("./parsePhoneNumber.js"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +// `options`: +// { +// country: +// { +// restrict - (a two-letter country code) +// the phone number must be in this country +// +// default - (a two-letter country code) +// default country to use for phone number parsing and validation +// (if no country code could be derived from the phone number) +// } +// } +// +// Returns `{ country, number }` +// +// Example use cases: +// +// ```js +// parse('8 (800) 555-35-35', 'RU') +// parse('8 (800) 555-35-35', 'RU', metadata) +// parse('8 (800) 555-35-35', { country: { default: 'RU' } }) +// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata) +// parse('+7 800 555 35 35') +// parse('+7 800 555 35 35', metadata) +// ``` +// +function parseNumber() { + var _normalizeArguments = (0, _parsePhoneNumber.normalizeArguments)(arguments), + text = _normalizeArguments.text, + options = _normalizeArguments.options, + metadata = _normalizeArguments.metadata; + + return (0, _parse_["default"])(text, options, metadata); +} +//# sourceMappingURL=parse.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parse.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parse.js.map new file mode 100644 index 00000000..6d55c653 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parse.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parse.js","names":["parseNumber","normalizeArguments","arguments","text","options","metadata","_parseNumber"],"sources":["../source/parse.js"],"sourcesContent":["import _parseNumber from './parse_.js'\r\nimport { normalizeArguments } from './parsePhoneNumber.js'\r\n\r\n// `options`:\r\n// {\r\n// country:\r\n// {\r\n// restrict - (a two-letter country code)\r\n// the phone number must be in this country\r\n//\r\n// default - (a two-letter country code)\r\n// default country to use for phone number parsing and validation\r\n// (if no country code could be derived from the phone number)\r\n// }\r\n// }\r\n//\r\n// Returns `{ country, number }`\r\n//\r\n// Example use cases:\r\n//\r\n// ```js\r\n// parse('8 (800) 555-35-35', 'RU')\r\n// parse('8 (800) 555-35-35', 'RU', metadata)\r\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } })\r\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata)\r\n// parse('+7 800 555 35 35')\r\n// parse('+7 800 555 35 35', metadata)\r\n// ```\r\n//\r\nexport default function parseNumber()\r\n{\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\treturn _parseNumber(text, options, metadata)\r\n}"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,WAAT,GACf;EACC,0BAAoC,IAAAC,oCAAA,EAAmBC,SAAnB,CAApC;EAAA,IAAQC,IAAR,uBAAQA,IAAR;EAAA,IAAcC,OAAd,uBAAcA,OAAd;EAAA,IAAuBC,QAAvB,uBAAuBA,QAAvB;;EACA,OAAO,IAAAC,kBAAA,EAAaH,IAAb,EAAmBC,OAAnB,EAA4BC,QAA5B,CAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parse.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parse.test.js new file mode 100644 index 00000000..1ef6cc58 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parse.test.js @@ -0,0 +1,568 @@ +"use strict"; + +var _metadataMin = _interopRequireDefault(require("../metadata.min.json")); + +var _parse = _interopRequireDefault(require("./parse.js")); + +var _metadata = _interopRequireDefault(require("./metadata.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function parseNumber() { + for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) { + parameters[_key] = arguments[_key]; + } + + parameters.push(_metadataMin["default"]); + return _parse["default"].apply(this, parameters); +} + +var USE_NON_GEOGRAPHIC_COUNTRY_CODE = false; +describe('parse', function () { + it('should not parse invalid phone numbers', function () { + // Too short. + parseNumber('+7 (800) 55-35-35').should.deep.equal({}); // Too long. + + parseNumber('+7 (800) 55-35-35-55').should.deep.equal({}); + parseNumber('+7 (800) 55-35-35', 'US').should.deep.equal({}); + parseNumber('(800) 55 35 35', { + defaultCountry: 'RU' + }).should.deep.equal({}); + parseNumber('+1 187 215 5230', 'US').should.deep.equal({}); + parseNumber('911231231', 'BE').should.deep.equal({}); + }); + it('should parse valid phone numbers', function () { + // Instant loans + // https://www.youtube.com/watch?v=6e1pMrYH5jI + // + // Restrict to RU + parseNumber('Phone: 8 (800) 555 35 35.', 'RU').should.deep.equal({ + country: 'RU', + phone: '8005553535' + }); // International format + + parseNumber('Phone: +7 (800) 555-35-35.').should.deep.equal({ + country: 'RU', + phone: '8005553535' + }); // // Restrict to US, but not a US country phone code supplied + // parseNumber('+7 (800) 555-35-35', 'US').should.deep.equal({}) + // Restrict to RU + + parseNumber('(800) 555 35 35', 'RU').should.deep.equal({ + country: 'RU', + phone: '8005553535' + }); // Default to RU + + parseNumber('8 (800) 555 35 35', { + defaultCountry: 'RU' + }).should.deep.equal({ + country: 'RU', + phone: '8005553535' + }); // Gangster partyline + + parseNumber('+1-213-373-4253').should.deep.equal({ + country: 'US', + phone: '2133734253' + }); // Switzerland (just in case) + + parseNumber('044 668 18 00', 'CH').should.deep.equal({ + country: 'CH', + phone: '446681800' + }); // China, Beijing + + parseNumber('010-852644821', 'CN').should.deep.equal({ + country: 'CN', + phone: '10852644821' + }); // France + + parseNumber('+33169454850').should.deep.equal({ + country: 'FR', + phone: '169454850' + }); // UK (Jersey) + + parseNumber('+44 7700 300000').should.deep.equal({ + country: 'JE', + phone: '7700300000' + }); // KZ + + parseNumber('+7 702 211 1111').should.deep.equal({ + country: 'KZ', + phone: '7022111111' + }); // Brazil + + parseNumber('11987654321', 'BR').should.deep.equal({ + country: 'BR', + phone: '11987654321' + }); // Long country phone code. + + parseNumber('+212659777777').should.deep.equal({ + country: 'MA', + phone: '659777777' + }); // No country could be derived. + // parseNumber('+212569887076').should.deep.equal({ countryPhoneCode: '212', phone: '569887076' }) + // GB. Moible numbers starting 07624* are Isle of Man. + + parseNumber('07624369230', 'GB').should.deep.equal({ + country: 'IM', + phone: '7624369230' + }); + }); + it('should parse possible numbers', function () { + // Invalid phone number for a given country. + parseNumber('1112223344', 'RU', { + extended: true + }).should.deep.equal({ + country: 'RU', + countryCallingCode: '7', + phone: '1112223344', + carrierCode: undefined, + ext: undefined, + valid: false, + possible: true + }); // International phone number. + // Several countries with the same country phone code. + + parseNumber('+71112223344').should.deep.equal({}); + parseNumber('+71112223344', { + extended: true + }).should.deep.equal({ + country: undefined, + countryCallingCode: '7', + phone: '1112223344', + carrierCode: undefined, + ext: undefined, + valid: false, + possible: true + }); // International phone number. + // Single country with the given country phone code. + + parseNumber('+33011222333', { + extended: true + }).should.deep.equal({ + country: 'FR', + countryCallingCode: '33', + phone: '011222333', + carrierCode: undefined, + ext: undefined, + valid: false, + possible: true + }); // Too short. + // Won't strip national prefix `8` because otherwise the number would be too short. + + parseNumber('+7 (800) 55-35-35', { + extended: true + }).should.deep.equal({ + country: 'RU', + countryCallingCode: '7', + phone: '800553535', + carrierCode: undefined, + ext: undefined, + valid: false, + possible: false + }); // Too long. + + parseNumber('+1 213 37342530', { + extended: true + }).should.deep.equal({ + country: undefined, + countryCallingCode: '1', + phone: '21337342530', + carrierCode: undefined, + ext: undefined, + valid: false, + possible: false + }); // No national number to be parsed. + + parseNumber('+996', { + extended: true + }).should.deep.equal({// countryCallingCode : '996' + }); // Valid number. + + parseNumber('+78005553535', { + extended: true + }).should.deep.equal({ + country: 'RU', + countryCallingCode: '7', + phone: '8005553535', + carrierCode: undefined, + ext: undefined, + valid: true, + possible: true + }); // https://github.com/catamphetamine/libphonenumber-js/issues/211 + + parseNumber('+966', { + extended: true + }).should.deep.equal({}); + parseNumber('+9664', { + extended: true + }).should.deep.equal({}); + parseNumber('+96645', { + extended: true + }).should.deep.equal({ + carrierCode: undefined, + phone: '45', + ext: undefined, + country: 'SA', + countryCallingCode: '966', + possible: false, + valid: false + }); + }); + it('should parse non-European digits', function () { + parseNumber('+١٢١٢٢٣٢٣٢٣٢').should.deep.equal({ + country: 'US', + phone: '2122323232' + }); + }); + it('should work in edge cases', function () { + var thrower; // No input + + parseNumber('').should.deep.equal({}); // No country phone code + + parseNumber('+').should.deep.equal({}); // No country at all (non international number and no explicit country code) + + parseNumber('123').should.deep.equal({}); // No country metadata for this `require` country code + + thrower = function thrower() { + return parseNumber('123', 'ZZ'); + }; + + thrower.should["throw"]('Unknown country'); // No country metadata for this `default` country code + + thrower = function thrower() { + return parseNumber('123', { + defaultCountry: 'ZZ' + }); + }; + + thrower.should["throw"]('Unknown country'); // Invalid country phone code + + parseNumber('+210').should.deep.equal({}); // Invalid country phone code (extended parsing mode) + + parseNumber('+210', { + extended: true + }).should.deep.equal({}); // Too short of a number. + + parseNumber('1', 'US', { + extended: true + }).should.deep.equal({}); // Too long of a number. + + parseNumber('1111111111111111111', 'RU', { + extended: true + }).should.deep.equal({}); // Not a number. + + parseNumber('abcdefg', 'US', { + extended: true + }).should.deep.equal({}); // Country phone code beginning with a '0' + + parseNumber('+0123').should.deep.equal({}); // Barbados NANPA phone number + + parseNumber('+12460000000').should.deep.equal({ + country: 'BB', + phone: '2460000000' + }); // // A case when country (restricted to) is not equal + // // to the one parsed out of an international number. + // parseNumber('+1-213-373-4253', 'RU').should.deep.equal({}) + // National (significant) number too short + + parseNumber('2', 'US').should.deep.equal({}); // National (significant) number too long + + parseNumber('222222222222222222', 'US').should.deep.equal({}); // No `national_prefix_for_parsing` + + parseNumber('41111', 'AC').should.deep.equal({ + country: 'AC', + phone: '41111' + }); // https://github.com/catamphetamine/libphonenumber-js/issues/235 + // `matchesEntirely()` bug fix. + + parseNumber('+4915784846111‬').should.deep.equal({ + country: 'DE', + phone: '15784846111' + }); // No metadata + + thrower = function thrower() { + return (0, _parse["default"])(''); + }; + + thrower.should["throw"]('`metadata` argument not passed'); // Numerical `value` + + thrower = function thrower() { + return parseNumber(2141111111, 'US'); + }; + + thrower.should["throw"]('A text for parsing must be a string.'); // Input string too long. + + parseNumber('8005553535 ', 'RU').should.deep.equal({}); + }); + it('should parse phone number extensions', function () { + // "ext" + parseNumber('2134567890 ext 123', 'US').should.deep.equal({ + country: 'US', + phone: '2134567890', + ext: '123' + }); // "ext." + + parseNumber('+12134567890 ext. 12345', 'US').should.deep.equal({ + country: 'US', + phone: '2134567890', + ext: '12345' + }); // "доб." + + parseNumber('+78005553535 доб. 1234', 'RU').should.deep.equal({ + country: 'RU', + phone: '8005553535', + ext: '1234' + }); // "#" + + parseNumber('+12134567890#1234').should.deep.equal({ + country: 'US', + phone: '2134567890', + ext: '1234' + }); // "x" + + parseNumber('+78005553535 x1234').should.deep.equal({ + country: 'RU', + phone: '8005553535', + ext: '1234' + }); // Not a valid extension + + parseNumber('2134567890 ext. abc', 'US').should.deep.equal({ + country: 'US', + phone: '2134567890' + }); + }); + it('should parse RFC 3966 phone numbers', function () { + parseNumber('tel:+78005553535;ext=123').should.deep.equal({ + country: 'RU', + phone: '8005553535', + ext: '123' + }); // Should parse "visual separators". + + parseNumber('tel:+7(800)555-35.35;ext=123').should.deep.equal({ + country: 'RU', + phone: '8005553535', + ext: '123' + }); // Invalid number. + + parseNumber('tel:+7x8005553535;ext=123').should.deep.equal({}); + }); + it('should parse invalid international numbers even if they are invalid', function () { + parseNumber('+7(8)8005553535', 'RU').should.deep.equal({ + country: 'RU', + phone: '8005553535' + }); + }); + it('should parse carrier codes', function () { + parseNumber('0 15 21 5555-5555', 'BR', { + extended: true + }).should.deep.equal({ + country: 'BR', + countryCallingCode: '55', + phone: '2155555555', + carrierCode: '15', + ext: undefined, + valid: true, + possible: true + }); + }); + it('should parse IDD prefixes', function () { + parseNumber('011 61 2 3456 7890', 'US').should.deep.equal({ + phone: '234567890', + country: 'AU' + }); + parseNumber('011 61 2 3456 7890', 'FR').should.deep.equal({}); + parseNumber('00 61 2 3456 7890', 'US').should.deep.equal({}); + parseNumber('810 61 2 3456 7890', 'RU').should.deep.equal({ + phone: '234567890', + country: 'AU' + }); + }); + it('should work with v2 API', function () { + parseNumber('+99989160151539'); + }); + it('should work with Argentina numbers', function () { + // The same mobile number is written differently + // in different formats in Argentina: + // `9` gets prepended in international format. + parseNumber('+54 9 3435 55 1212').should.deep.equal({ + country: 'AR', + phone: '93435551212' + }); + parseNumber('0343 15-555-1212', 'AR').should.deep.equal({ + country: 'AR', + phone: '93435551212' + }); + }); + it('should work with Mexico numbers', function () { + // Fixed line. + parseNumber('+52 449 978 0001').should.deep.equal({ + country: 'MX', + phone: '4499780001' + }); + parseNumber('01 (449)978-0001', 'MX').should.deep.equal({ + country: 'MX', + phone: '4499780001' + }); + parseNumber('(449)978-0001', 'MX').should.deep.equal({ + country: 'MX', + phone: '4499780001' + }); // Mobile. + // `1` is prepended before area code to mobile numbers in international format. + + parseNumber('+52 1 33 1234-5678', 'MX').should.deep.equal({ + country: 'MX', + phone: '3312345678' + }); + parseNumber('+52 33 1234-5678', 'MX').should.deep.equal({ + country: 'MX', + phone: '3312345678' + }); + parseNumber('044 (33) 1234-5678', 'MX').should.deep.equal({ + country: 'MX', + phone: '3312345678' + }); + parseNumber('045 33 1234-5678', 'MX').should.deep.equal({ + country: 'MX', + phone: '3312345678' + }); + }); + it('should parse non-geographic numbering plan phone numbers', function () { + parseNumber('+870773111632').should.deep.equal(USE_NON_GEOGRAPHIC_COUNTRY_CODE ? { + country: '001', + phone: '773111632' + } : {}); + }); + it('should parse non-geographic numbering plan phone numbers (default country code)', function () { + parseNumber('773111632', { + defaultCallingCode: '870' + }).should.deep.equal(USE_NON_GEOGRAPHIC_COUNTRY_CODE ? { + country: '001', + phone: '773111632' + } : {}); + }); + it('should parse non-geographic numbering plan phone numbers (extended)', function () { + parseNumber('+870773111632', { + extended: true + }).should.deep.equal({ + country: USE_NON_GEOGRAPHIC_COUNTRY_CODE ? '001' : undefined, + countryCallingCode: '870', + phone: '773111632', + carrierCode: undefined, + ext: undefined, + possible: true, + valid: true + }); + }); + it('should parse non-geographic numbering plan phone numbers (default country code) (extended)', function () { + parseNumber('773111632', { + defaultCallingCode: '870', + extended: true + }).should.deep.equal({ + country: USE_NON_GEOGRAPHIC_COUNTRY_CODE ? '001' : undefined, + countryCallingCode: '870', + phone: '773111632', + carrierCode: undefined, + ext: undefined, + possible: true, + valid: true + }); + }); + it('shouldn\'t crash when invalid `defaultCallingCode` is passed', function () { + expect(function () { + return parseNumber('773111632', { + defaultCallingCode: '999' + }); + }).to["throw"]('Unknown calling code'); + }); + it('shouldn\'t set `country` when there\'s no `defaultCountry` and `defaultCallingCode` is not of a "non-geographic entity"', function () { + parseNumber('88005553535', { + defaultCallingCode: '7' + }).should.deep.equal({ + country: 'RU', + phone: '8005553535' + }); + }); + it('should correctly parse numbers starting with the same digit as the national prefix', function () { + // https://github.com/catamphetamine/libphonenumber-js/issues/373 + // `BY`'s `national_prefix` is `8`. + parseNumber('+37582004910060').should.deep.equal({ + country: 'BY', + phone: '82004910060' + }); + }); + it('should autocorrect numbers without a leading +', function () { + // https://github.com/catamphetamine/libphonenumber-js/issues/376 + parseNumber('375447521111', 'BY').should.deep.equal({ + country: 'BY', + phone: '447521111' + }); // https://github.com/catamphetamine/libphonenumber-js/issues/316 + + parseNumber('33612902554', 'FR').should.deep.equal({ + country: 'FR', + phone: '612902554' + }); // https://github.com/catamphetamine/libphonenumber-js/issues/375 + + parseNumber('61438331999', 'AU').should.deep.equal({ + country: 'AU', + phone: '438331999' + }); // A case when `49` is a country calling code of a number without a leading `+`. + + parseNumber('4930123456', 'DE').should.deep.equal({ + country: 'DE', + phone: '30123456' + }); // A case when `49` is a valid area code. + + parseNumber('4951234567890', 'DE').should.deep.equal({ + country: 'DE', + phone: '4951234567890' + }); + }); + it('should parse extensions (long extensions with explicitl abels)', function () { + // Test lower and upper limits of extension lengths for each type of label. + // Firstly, when in RFC format: PhoneNumberUtil.extLimitAfterExplicitLabel + parseNumber('33316005 ext 0', 'NZ').ext.should.equal('0'); + parseNumber('33316005 ext 01234567890123456789', 'NZ').ext.should.equal('01234567890123456789'); // Extension too long. + + expect(parseNumber('33316005 ext 012345678901234567890', 'NZ').ext).to.be.undefined; // Explicit extension label. + + parseNumber('03 3316005ext:1', 'NZ').ext.should.equal('1'); + parseNumber('03 3316005 xtn:12345678901234567890', 'NZ').ext.should.equal('12345678901234567890'); + parseNumber('03 3316005 extension\t12345678901234567890', 'NZ').ext.should.equal('12345678901234567890'); + parseNumber('03 3316005 xtensio:12345678901234567890', 'NZ').ext.should.equal('12345678901234567890'); + parseNumber('03 3316005 xtensión, 12345678901234567890#', 'NZ').ext.should.equal('12345678901234567890'); + parseNumber('03 3316005extension.12345678901234567890', 'NZ').ext.should.equal('12345678901234567890'); + parseNumber('03 3316005 доб:12345678901234567890', 'NZ').ext.should.equal('12345678901234567890'); // Extension too long. + + expect(parseNumber('03 3316005 extension 123456789012345678901', 'NZ').ext).to.be.undefined; + }); + it('should parse extensions (long extensions with auto dialling labels)', function () { + parseNumber('+12679000000,,123456789012345#').ext.should.equal('123456789012345'); + parseNumber('+12679000000;123456789012345#').ext.should.equal('123456789012345'); + parseNumber('+442034000000,,123456789#').ext.should.equal('123456789'); // Extension too long. + + expect(parseNumber('+12679000000,,1234567890123456#').ext).to.be.undefined; + }); + it('should parse extensions (short extensions with ambiguous characters)', function () { + parseNumber('03 3316005 x 123456789', 'NZ').ext.should.equal('123456789'); + parseNumber('03 3316005 x. 123456789', 'NZ').ext.should.equal('123456789'); + parseNumber('03 3316005 #123456789#', 'NZ').ext.should.equal('123456789'); + parseNumber('03 3316005 ~ 123456789', 'NZ').ext.should.equal('123456789'); // Extension too long. + + expect(parseNumber('03 3316005 ~ 1234567890', 'NZ').ext).to.be.undefined; + }); + it('should parse extensions (short extensions when not sure of label)', function () { + parseNumber('+1123-456-7890 666666#', { + v2: true + }).ext.should.equal('666666'); + parseNumber('+11234567890-6#', { + v2: true + }).ext.should.equal('6'); // Extension too long. + + expect(function () { + return parseNumber('+1123-456-7890 7777777#', { + v2: true + }); + }).to["throw"]('NOT_A_NUMBER'); + }); +}); +//# sourceMappingURL=parse.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parse.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parse.test.js.map new file mode 100644 index 00000000..c65fb633 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parse.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parse.test.js","names":["parseNumber","parameters","push","metadata","_parseNumber","apply","USE_NON_GEOGRAPHIC_COUNTRY_CODE","describe","it","should","deep","equal","defaultCountry","country","phone","extended","countryCallingCode","carrierCode","undefined","ext","valid","possible","thrower","defaultCallingCode","expect","to","be","v2"],"sources":["../source/parse.test.js"],"sourcesContent":["import metadata from '../metadata.min.json' assert { type: 'json' }\r\nimport _parseNumber from './parse.js'\r\nimport Metadata from './metadata.js'\r\n\r\nfunction parseNumber(...parameters) {\r\n\tparameters.push(metadata)\r\n\treturn _parseNumber.apply(this, parameters)\r\n}\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\ndescribe('parse', () => {\r\n\tit('should not parse invalid phone numbers', () => {\r\n\t\t// Too short.\r\n\t\tparseNumber('+7 (800) 55-35-35').should.deep.equal({})\r\n\t\t// Too long.\r\n\t\tparseNumber('+7 (800) 55-35-35-55').should.deep.equal({})\r\n\r\n\t\tparseNumber('+7 (800) 55-35-35', 'US').should.deep.equal({})\r\n\t\tparseNumber('(800) 55 35 35', { defaultCountry: 'RU' }).should.deep.equal({})\r\n\t\tparseNumber('+1 187 215 5230', 'US').should.deep.equal({})\r\n\r\n\t\tparseNumber('911231231', 'BE').should.deep.equal({})\r\n\t})\r\n\r\n\tit('should parse valid phone numbers', () => {\r\n\t\t// Instant loans\r\n\t\t// https://www.youtube.com/watch?v=6e1pMrYH5jI\r\n\t\t//\r\n\t\t// Restrict to RU\r\n\t\tparseNumber('Phone: 8 (800) 555 35 35.', 'RU').should.deep.equal({ country: 'RU', phone: '8005553535' })\r\n\t\t// International format\r\n\t\tparseNumber('Phone: +7 (800) 555-35-35.').should.deep.equal({ country: 'RU', phone: '8005553535' })\r\n\t\t// // Restrict to US, but not a US country phone code supplied\r\n\t\t// parseNumber('+7 (800) 555-35-35', 'US').should.deep.equal({})\r\n\t\t// Restrict to RU\r\n\t\tparseNumber('(800) 555 35 35', 'RU').should.deep.equal({ country: 'RU', phone: '8005553535' })\r\n\t\t// Default to RU\r\n\t\tparseNumber('8 (800) 555 35 35', { defaultCountry: 'RU' }).should.deep.equal({ country: 'RU', phone: '8005553535' })\r\n\r\n\t\t// Gangster partyline\r\n\t\tparseNumber('+1-213-373-4253').should.deep.equal({ country: 'US', phone: '2133734253' })\r\n\r\n\t\t// Switzerland (just in case)\r\n\t\tparseNumber('044 668 18 00', 'CH').should.deep.equal({ country: 'CH', phone: '446681800' })\r\n\r\n\t\t// China, Beijing\r\n\t\tparseNumber('010-852644821', 'CN').should.deep.equal({ country: 'CN', phone: '10852644821' })\r\n\r\n\t\t// France\r\n\t\tparseNumber('+33169454850').should.deep.equal({ country: 'FR', phone: '169454850' })\r\n\r\n\t\t// UK (Jersey)\r\n\t\tparseNumber('+44 7700 300000').should.deep.equal({ country: 'JE', phone: '7700300000' })\r\n\r\n\t\t// KZ\r\n\t\tparseNumber('+7 702 211 1111').should.deep.equal({ country: 'KZ', phone: '7022111111' })\r\n\r\n\t\t// Brazil\r\n\t\tparseNumber('11987654321', 'BR').should.deep.equal({ country: 'BR', phone: '11987654321' })\r\n\r\n\t\t// Long country phone code.\r\n\t\tparseNumber('+212659777777').should.deep.equal({ country: 'MA', phone: '659777777' })\r\n\r\n\t\t// No country could be derived.\r\n\t\t// parseNumber('+212569887076').should.deep.equal({ countryPhoneCode: '212', phone: '569887076' })\r\n\r\n\t\t// GB. Moible numbers starting 07624* are Isle of Man.\r\n\t\tparseNumber('07624369230', 'GB').should.deep.equal({ country: 'IM', phone: '7624369230' })\r\n\t})\r\n\r\n\tit('should parse possible numbers', () => {\r\n\t\t// Invalid phone number for a given country.\r\n\t\tparseNumber('1112223344', 'RU', { extended: true }).should.deep.equal({\r\n\t\t\tcountry : 'RU',\r\n\t\t\tcountryCallingCode : '7',\r\n\t\t\tphone : '1112223344',\r\n\t\t\tcarrierCode : undefined,\r\n\t\t\text : undefined,\r\n\t\t\tvalid : false,\r\n\t\t\tpossible : true\r\n\t\t})\r\n\r\n\t\t// International phone number.\r\n\t\t// Several countries with the same country phone code.\r\n\t\tparseNumber('+71112223344').should.deep.equal({})\r\n\t\tparseNumber('+71112223344', { extended: true }).should.deep.equal({\r\n\t\t\tcountry : undefined,\r\n\t\t\tcountryCallingCode : '7',\r\n\t\t\tphone : '1112223344',\r\n\t\t\tcarrierCode : undefined,\r\n\t\t\text : undefined,\r\n\t\t\tvalid : false,\r\n\t\t\tpossible : true\r\n\t\t})\r\n\r\n\t\t// International phone number.\r\n\t\t// Single country with the given country phone code.\r\n\t\tparseNumber('+33011222333', { extended: true }).should.deep.equal({\r\n\t\t\tcountry : 'FR',\r\n\t\t\tcountryCallingCode : '33',\r\n\t\t\tphone : '011222333',\r\n\t\t\tcarrierCode : undefined,\r\n\t\t\text : undefined,\r\n\t\t\tvalid : false,\r\n\t\t\tpossible : true\r\n\t\t})\r\n\r\n\t\t// Too short.\r\n\t\t// Won't strip national prefix `8` because otherwise the number would be too short.\r\n\t\tparseNumber('+7 (800) 55-35-35', { extended: true }).should.deep.equal({\r\n\t\t\tcountry : 'RU',\r\n\t\t\tcountryCallingCode : '7',\r\n\t\t\tphone : '800553535',\r\n\t\t\tcarrierCode : undefined,\r\n\t\t\text : undefined,\r\n\t\t\tvalid : false,\r\n\t\t\tpossible : false\r\n\t\t})\r\n\r\n\t\t// Too long.\r\n\t\tparseNumber('+1 213 37342530', { extended: true }).should.deep.equal({\r\n\t\t\tcountry : undefined,\r\n\t\t\tcountryCallingCode : '1',\r\n\t\t\tphone : '21337342530',\r\n\t\t\tcarrierCode : undefined,\r\n\t\t\text : undefined,\r\n\t\t\tvalid : false,\r\n\t\t\tpossible : false\r\n\t\t})\r\n\r\n\t\t// No national number to be parsed.\r\n\t\tparseNumber('+996', { extended: true }).should.deep.equal({\r\n\t\t\t// countryCallingCode : '996'\r\n\t\t})\r\n\r\n\t\t// Valid number.\r\n\t\tparseNumber('+78005553535', { extended: true }).should.deep.equal({\r\n\t\t\tcountry : 'RU',\r\n\t\t\tcountryCallingCode : '7',\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcarrierCode : undefined,\r\n\t\t\text : undefined,\r\n\t\t\tvalid : true,\r\n\t\t\tpossible : true\r\n\t\t})\r\n\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/211\r\n\t\tparseNumber('+966', { extended: true }).should.deep.equal({})\r\n\t\tparseNumber('+9664', { extended: true }).should.deep.equal({})\r\n\t\tparseNumber('+96645', { extended: true }).should.deep.equal({\r\n\t\t\tcarrierCode : undefined,\r\n\t\t\tphone : '45',\r\n\t\t\text : undefined,\r\n\t\t\tcountry : 'SA',\r\n\t\t\tcountryCallingCode : '966',\r\n\t\t\tpossible : false,\r\n\t\t\tvalid : false\r\n\t\t})\r\n\t})\r\n\r\n\tit('should parse non-European digits', () => {\r\n\t\tparseNumber('+١٢١٢٢٣٢٣٢٣٢').should.deep.equal({ country: 'US', phone: '2122323232' })\r\n\t})\r\n\r\n\tit('should work in edge cases', () => {\r\n\t\tlet thrower\r\n\r\n\t\t// No input\r\n\t\tparseNumber('').should.deep.equal({})\r\n\r\n\t\t// No country phone code\r\n\t\tparseNumber('+').should.deep.equal({})\r\n\r\n\t\t// No country at all (non international number and no explicit country code)\r\n\t\tparseNumber('123').should.deep.equal({})\r\n\r\n\t\t// No country metadata for this `require` country code\r\n\t\tthrower = () => parseNumber('123', 'ZZ')\r\n\t\tthrower.should.throw('Unknown country')\r\n\r\n\t\t// No country metadata for this `default` country code\r\n\t\tthrower = () => parseNumber('123', { defaultCountry: 'ZZ' })\r\n\t\tthrower.should.throw('Unknown country')\r\n\r\n\t\t// Invalid country phone code\r\n\t\tparseNumber('+210').should.deep.equal({})\r\n\r\n\t\t// Invalid country phone code (extended parsing mode)\r\n\t\tparseNumber('+210', { extended: true }).should.deep.equal({})\r\n\r\n\t\t// Too short of a number.\r\n\t\tparseNumber('1', 'US', { extended: true }).should.deep.equal({})\r\n\r\n\t\t// Too long of a number.\r\n\t\tparseNumber('1111111111111111111', 'RU', { extended: true }).should.deep.equal({})\r\n\r\n\t\t// Not a number.\r\n\t\tparseNumber('abcdefg', 'US', { extended: true }).should.deep.equal({})\r\n\r\n\t\t// Country phone code beginning with a '0'\r\n\t\tparseNumber('+0123').should.deep.equal({})\r\n\r\n\t\t// Barbados NANPA phone number\r\n\t\tparseNumber('+12460000000').should.deep.equal({ country: 'BB', phone: '2460000000' })\r\n\r\n\t\t// // A case when country (restricted to) is not equal\r\n\t\t// // to the one parsed out of an international number.\r\n\t\t// parseNumber('+1-213-373-4253', 'RU').should.deep.equal({})\r\n\r\n\t\t// National (significant) number too short\r\n\t\tparseNumber('2', 'US').should.deep.equal({})\r\n\r\n\t\t// National (significant) number too long\r\n\t\tparseNumber('222222222222222222', 'US').should.deep.equal({})\r\n\r\n\t\t// No `national_prefix_for_parsing`\r\n\t\tparseNumber('41111', 'AC').should.deep.equal({ country: 'AC', phone: '41111'})\r\n\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/235\r\n\t\t// `matchesEntirely()` bug fix.\r\n\t\tparseNumber('+4915784846111‬').should.deep.equal({ country: 'DE', phone: '15784846111' })\r\n\r\n\t\t// No metadata\r\n\t\tthrower = () => _parseNumber('')\r\n\t\tthrower.should.throw('`metadata` argument not passed')\r\n\r\n\t\t// Numerical `value`\r\n\t\tthrower = () => parseNumber(2141111111, 'US')\r\n\t\tthrower.should.throw('A text for parsing must be a string.')\r\n\r\n\t\t// Input string too long.\r\n\t\tparseNumber('8005553535 ', 'RU').should.deep.equal({})\r\n\t})\r\n\r\n\tit('should parse phone number extensions', () => {\r\n\t\t// \"ext\"\r\n\t\tparseNumber('2134567890 ext 123', 'US').should.deep.equal({\r\n\t\t\tcountry : 'US',\r\n\t\t\tphone : '2134567890',\r\n\t\t\text : '123'\r\n\t\t})\r\n\r\n\t\t// \"ext.\"\r\n\t\tparseNumber('+12134567890 ext. 12345', 'US').should.deep.equal({\r\n\t\t\tcountry : 'US',\r\n\t\t\tphone : '2134567890',\r\n\t\t\text : '12345'\r\n\t\t})\r\n\r\n\t\t// \"доб.\"\r\n\t\tparseNumber('+78005553535 доб. 1234', 'RU').should.deep.equal({\r\n\t\t\tcountry : 'RU',\r\n\t\t\tphone : '8005553535',\r\n\t\t\text : '1234'\r\n\t\t})\r\n\r\n\t\t// \"#\"\r\n\t\tparseNumber('+12134567890#1234').should.deep.equal({\r\n\t\t\tcountry : 'US',\r\n\t\t\tphone : '2134567890',\r\n\t\t\text : '1234'\r\n\t\t})\r\n\r\n\t\t// \"x\"\r\n\t\tparseNumber('+78005553535 x1234').should.deep.equal({\r\n\t\t\tcountry : 'RU',\r\n\t\t\tphone : '8005553535',\r\n\t\t\text : '1234'\r\n\t\t})\r\n\r\n\t\t// Not a valid extension\r\n\t\tparseNumber('2134567890 ext. abc', 'US').should.deep.equal({\r\n\t\t\tcountry : 'US',\r\n\t\t\tphone : '2134567890'\r\n\t\t})\r\n\t})\r\n\r\n\tit('should parse RFC 3966 phone numbers', () => {\r\n\t\tparseNumber('tel:+78005553535;ext=123').should.deep.equal({\r\n\t\t\tcountry : 'RU',\r\n\t\t\tphone : '8005553535',\r\n\t\t\text : '123'\r\n\t\t})\r\n\r\n\t\t// Should parse \"visual separators\".\r\n\t\tparseNumber('tel:+7(800)555-35.35;ext=123').should.deep.equal({\r\n\t\t\tcountry : 'RU',\r\n\t\t\tphone : '8005553535',\r\n\t\t\text : '123'\r\n\t\t})\r\n\r\n\t\t// Invalid number.\r\n\t\tparseNumber('tel:+7x8005553535;ext=123').should.deep.equal({})\r\n\t})\r\n\r\n\tit('should parse invalid international numbers even if they are invalid', () => {\r\n\t\tparseNumber('+7(8)8005553535', 'RU').should.deep.equal({\r\n\t\t\tcountry : 'RU',\r\n\t\t\tphone : '8005553535'\r\n\t\t})\r\n\t})\r\n\r\n\tit('should parse carrier codes', () => {\r\n\t\tparseNumber('0 15 21 5555-5555', 'BR', { extended: true }).should.deep.equal({\r\n\t\t\tcountry : 'BR',\r\n\t\t\tcountryCallingCode : '55',\r\n\t\t\tphone : '2155555555',\r\n\t\t\tcarrierCode : '15',\r\n\t\t\text : undefined,\r\n\t\t\tvalid : true,\r\n\t\t\tpossible : true\r\n\t\t})\r\n\t})\r\n\r\n\tit('should parse IDD prefixes', () => {\r\n\t\tparseNumber('011 61 2 3456 7890', 'US').should.deep.equal({\r\n\t\t\tphone : '234567890',\r\n\t\t\tcountry : 'AU'\r\n\t\t})\r\n\r\n\t\tparseNumber('011 61 2 3456 7890', 'FR').should.deep.equal({})\r\n\r\n\t\tparseNumber('00 61 2 3456 7890', 'US').should.deep.equal({})\r\n\r\n\t\tparseNumber('810 61 2 3456 7890', 'RU').should.deep.equal({\r\n\t\t\tphone : '234567890',\r\n\t\t\tcountry : 'AU'\r\n\t\t})\r\n\t})\r\n\r\n\tit('should work with v2 API', () => {\r\n\t\tparseNumber('+99989160151539')\r\n\t})\r\n\r\n\tit('should work with Argentina numbers', () => {\r\n\t\t// The same mobile number is written differently\r\n\t\t// in different formats in Argentina:\r\n\t\t// `9` gets prepended in international format.\r\n\t\tparseNumber('+54 9 3435 55 1212').should.deep.equal({\r\n\t\t\tcountry: 'AR',\r\n\t\t\tphone: '93435551212'\r\n\t\t})\r\n\t\tparseNumber('0343 15-555-1212', 'AR').should.deep.equal({\r\n\t\t\tcountry: 'AR',\r\n\t\t\tphone: '93435551212'\r\n\t\t})\r\n\t})\r\n\r\n\tit('should work with Mexico numbers', () => {\r\n\t\t// Fixed line.\r\n\t\tparseNumber('+52 449 978 0001').should.deep.equal({\r\n\t\t\tcountry: 'MX',\r\n\t\t\tphone: '4499780001'\r\n\t\t})\r\n\t\tparseNumber('01 (449)978-0001', 'MX').should.deep.equal({\r\n\t\t\tcountry: 'MX',\r\n\t\t\tphone: '4499780001'\r\n\t\t})\r\n\t\tparseNumber('(449)978-0001', 'MX').should.deep.equal({\r\n\t\t\tcountry: 'MX',\r\n\t\t\tphone: '4499780001'\r\n\t\t})\r\n\t\t// Mobile.\r\n\t\t// `1` is prepended before area code to mobile numbers in international format.\r\n\t\tparseNumber('+52 1 33 1234-5678', 'MX').should.deep.equal({\r\n\t\t\tcountry: 'MX',\r\n\t\t\tphone: '3312345678'\r\n\t\t})\r\n\t\tparseNumber('+52 33 1234-5678', 'MX').should.deep.equal({\r\n\t\t\tcountry: 'MX',\r\n\t\t\tphone: '3312345678'\r\n\t\t})\r\n\t\tparseNumber('044 (33) 1234-5678', 'MX').should.deep.equal({\r\n\t\t\tcountry: 'MX',\r\n\t\t\tphone: '3312345678'\r\n\t\t})\r\n\t\tparseNumber('045 33 1234-5678', 'MX').should.deep.equal({\r\n\t\t\tcountry: 'MX',\r\n\t\t\tphone: '3312345678'\r\n\t\t})\r\n\t})\r\n\r\n\tit('should parse non-geographic numbering plan phone numbers', () => {\r\n\t\tparseNumber('+870773111632').should.deep.equal(\r\n\t\t\tUSE_NON_GEOGRAPHIC_COUNTRY_CODE ?\r\n\t\t\t{\r\n\t\t\t\tcountry: '001',\r\n\t\t\t\tphone: '773111632'\r\n\t\t\t} :\r\n\t\t\t{}\r\n\t\t)\r\n\t})\r\n\r\n\tit('should parse non-geographic numbering plan phone numbers (default country code)', () => {\r\n\t\tparseNumber('773111632', { defaultCallingCode: '870' }).should.deep.equal(\r\n\t\t\tUSE_NON_GEOGRAPHIC_COUNTRY_CODE ?\r\n\t\t\t{\r\n\t\t\t\tcountry: '001',\r\n\t\t\t\tphone: '773111632'\r\n\t\t\t} :\r\n\t\t\t{}\r\n\t\t)\r\n\t})\r\n\r\n\tit('should parse non-geographic numbering plan phone numbers (extended)', () => {\r\n\t\tparseNumber('+870773111632', { extended: true }).should.deep.equal({\r\n\t\t\tcountry: USE_NON_GEOGRAPHIC_COUNTRY_CODE ? '001' : undefined,\r\n\t\t\tcountryCallingCode: '870',\r\n\t\t\tphone: '773111632',\r\n\t\t\tcarrierCode: undefined,\r\n\t\t\text: undefined,\r\n\t\t\tpossible: true,\r\n\t\t\tvalid: true\r\n\t\t})\r\n\t})\r\n\r\n\tit('should parse non-geographic numbering plan phone numbers (default country code) (extended)', () => {\r\n\t\tparseNumber('773111632', { defaultCallingCode: '870', extended: true }).should.deep.equal({\r\n\t\t\tcountry: USE_NON_GEOGRAPHIC_COUNTRY_CODE ? '001' : undefined,\r\n\t\t\tcountryCallingCode: '870',\r\n\t\t\tphone: '773111632',\r\n\t\t\tcarrierCode: undefined,\r\n\t\t\text: undefined,\r\n\t\t\tpossible: true,\r\n\t\t\tvalid: true\r\n\t\t})\r\n\t})\r\n\r\n\tit('shouldn\\'t crash when invalid `defaultCallingCode` is passed', () => {\r\n\t\texpect(() => parseNumber('773111632', { defaultCallingCode: '999' }))\r\n\t\t\t.to.throw('Unknown calling code')\r\n\t})\r\n\r\n\tit('shouldn\\'t set `country` when there\\'s no `defaultCountry` and `defaultCallingCode` is not of a \"non-geographic entity\"', () => {\r\n\t\tparseNumber('88005553535', { defaultCallingCode: '7' }).should.deep.equal({\r\n\t\t\tcountry: 'RU',\r\n\t\t\tphone: '8005553535'\r\n\t\t})\r\n\t})\r\n\r\n\tit('should correctly parse numbers starting with the same digit as the national prefix', () => {\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/373\r\n\t\t// `BY`'s `national_prefix` is `8`.\r\n\t\tparseNumber('+37582004910060').should.deep.equal({\r\n\t\t\tcountry: 'BY',\r\n\t\t\tphone: '82004910060'\r\n\t\t});\r\n\t})\r\n\r\n\tit('should autocorrect numbers without a leading +', () => {\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\t\tparseNumber('375447521111', 'BY').should.deep.equal({\r\n\t\t\tcountry: 'BY',\r\n\t\t\tphone: '447521111'\r\n\t\t});\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/316\r\n\t\tparseNumber('33612902554', 'FR').should.deep.equal({\r\n\t\t\tcountry: 'FR',\r\n\t\t\tphone: '612902554'\r\n\t\t});\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/375\r\n\t\tparseNumber('61438331999', 'AU').should.deep.equal({\r\n\t\t\tcountry: 'AU',\r\n\t\t\tphone: '438331999'\r\n\t\t});\r\n\t\t// A case when `49` is a country calling code of a number without a leading `+`.\r\n\t\tparseNumber('4930123456', 'DE').should.deep.equal({\r\n\t\t\tcountry: 'DE',\r\n\t\t\tphone: '30123456'\r\n\t\t});\r\n\t\t// A case when `49` is a valid area code.\r\n\t\tparseNumber('4951234567890', 'DE').should.deep.equal({\r\n\t\t\tcountry: 'DE',\r\n\t\t\tphone: '4951234567890'\r\n\t\t});\r\n\t})\r\n\r\n\tit('should parse extensions (long extensions with explicitl abels)', () => {\r\n\t\t// Test lower and upper limits of extension lengths for each type of label.\r\n\r\n\t\t// Firstly, when in RFC format: PhoneNumberUtil.extLimitAfterExplicitLabel\r\n\t\tparseNumber('33316005 ext 0', 'NZ').ext.should.equal('0')\r\n\t\tparseNumber('33316005 ext 01234567890123456789', 'NZ').ext.should.equal('01234567890123456789')\r\n\t\t// Extension too long.\r\n\t\texpect(parseNumber('33316005 ext 012345678901234567890', 'NZ').ext).to.be.undefined\r\n\r\n\t\t// Explicit extension label.\r\n\t\tparseNumber('03 3316005ext:1', 'NZ').ext.should.equal('1')\r\n\t\tparseNumber('03 3316005 xtn:12345678901234567890', 'NZ').ext.should.equal('12345678901234567890')\r\n\t\tparseNumber('03 3316005 extension\\t12345678901234567890', 'NZ').ext.should.equal('12345678901234567890')\r\n\t\tparseNumber('03 3316005 xtensio:12345678901234567890', 'NZ').ext.should.equal('12345678901234567890')\r\n\t\tparseNumber('03 3316005 xtensión, 12345678901234567890#', 'NZ').ext.should.equal('12345678901234567890')\r\n\t\tparseNumber('03 3316005extension.12345678901234567890', 'NZ').ext.should.equal('12345678901234567890')\r\n\t\tparseNumber('03 3316005 доб:12345678901234567890', 'NZ').ext.should.equal('12345678901234567890')\r\n\r\n\t\t// Extension too long.\r\n\t\texpect(parseNumber('03 3316005 extension 123456789012345678901', 'NZ').ext).to.be.undefined\r\n\t})\r\n\r\n\tit('should parse extensions (long extensions with auto dialling labels)', () => {\r\n\t\tparseNumber('+12679000000,,123456789012345#').ext.should.equal('123456789012345')\r\n\t\tparseNumber('+12679000000;123456789012345#').ext.should.equal('123456789012345')\r\n\t\tparseNumber('+442034000000,,123456789#').ext.should.equal('123456789')\r\n\t\t// Extension too long.\r\n\t\texpect(parseNumber('+12679000000,,1234567890123456#').ext).to.be.undefined\r\n\t})\r\n\r\n\tit('should parse extensions (short extensions with ambiguous characters)', () => {\r\n\t\tparseNumber('03 3316005 x 123456789', 'NZ').ext.should.equal('123456789')\r\n\t\tparseNumber('03 3316005 x. 123456789', 'NZ').ext.should.equal('123456789')\r\n\t\tparseNumber('03 3316005 #123456789#', 'NZ').ext.should.equal('123456789')\r\n\t\tparseNumber('03 3316005 ~ 123456789', 'NZ').ext.should.equal('123456789')\r\n\t\t// Extension too long.\r\n\t\texpect(parseNumber('03 3316005 ~ 1234567890', 'NZ').ext).to.be.undefined\r\n\t})\r\n\r\n\tit('should parse extensions (short extensions when not sure of label)', () => {\r\n\t\tparseNumber('+1123-456-7890 666666#', { v2: true }).ext.should.equal('666666')\r\n\t\tparseNumber('+11234567890-6#', { v2: true }).ext.should.equal('6')\r\n\t\t// Extension too long.\r\n\t\texpect(() => parseNumber('+1123-456-7890 7777777#', { v2: true })).to.throw('NOT_A_NUMBER')\r\n\t})\r\n})"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parseIncompletePhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parseIncompletePhoneNumber.js new file mode 100644 index 00000000..d924a21a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parseIncompletePhoneNumber.js @@ -0,0 +1,75 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = parseIncompletePhoneNumber; +exports.parsePhoneNumberCharacter = parsePhoneNumberCharacter; + +var _parseDigits = require("./helpers/parseDigits.js"); + +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +/** + * Parses phone number characters from a string. + * Drops all punctuation leaving only digits and the leading `+` sign (if any). + * Also converts wide-ascii and arabic-indic numerals to conventional numerals. + * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`. + * @param {string} string + * @return {string} + * @example + * ```js + * // Outputs '8800555'. + * parseIncompletePhoneNumber('8 (800) 555') + * // Outputs '+7800555'. + * parseIncompletePhoneNumber('+7 800 555') + * ``` + */ +function parseIncompletePhoneNumber(string) { + var result = ''; // Using `.split('')` here instead of normal `for ... of` + // because the importing application doesn't neccessarily include an ES6 polyfill. + // The `.split('')` approach discards "exotic" UTF-8 characters + // (the ones consisting of four bytes) but digits + // (including non-European ones) don't fall into that range + // so such "exotic" characters would be discarded anyway. + + for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) { + var character = _step.value; + result += parsePhoneNumberCharacter(character, result) || ''; + } + + return result; +} +/** + * Parses next character while parsing phone number digits (including a `+`) + * from text: discards everything except `+` and digits, and `+` is only allowed + * at the start of a phone number. + * For example, is used in `react-phone-number-input` where it uses + * [`input-format`](https://gitlab.com/catamphetamine/input-format). + * @param {string} character - Yet another character from raw input string. + * @param {string?} prevParsedCharacters - Previous parsed characters. + * @param {object} meta - Optional custom use-case-specific metadata. + * @return {string?} The parsed character. + */ + + +function parsePhoneNumberCharacter(character, prevParsedCharacters) { + // Only allow a leading `+`. + if (character === '+') { + // If this `+` is not the first parsed character + // then discard it. + if (prevParsedCharacters) { + return; + } + + return '+'; + } // Allow digits. + + + return (0, _parseDigits.parseDigit)(character); +} +//# sourceMappingURL=parseIncompletePhoneNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parseIncompletePhoneNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parseIncompletePhoneNumber.js.map new file mode 100644 index 00000000..554be350 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parseIncompletePhoneNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parseIncompletePhoneNumber.js","names":["parseIncompletePhoneNumber","string","result","split","character","parsePhoneNumberCharacter","prevParsedCharacters","parseDigit"],"sources":["../source/parseIncompletePhoneNumber.js"],"sourcesContent":["import { parseDigit } from './helpers/parseDigits.js'\r\n\r\n/**\r\n * Parses phone number characters from a string.\r\n * Drops all punctuation leaving only digits and the leading `+` sign (if any).\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * // Outputs '8800555'.\r\n * parseIncompletePhoneNumber('8 (800) 555')\r\n * // Outputs '+7800555'.\r\n * parseIncompletePhoneNumber('+7 800 555')\r\n * ```\r\n */\r\nexport default function parseIncompletePhoneNumber(string) {\r\n\tlet result = ''\r\n\t// Using `.split('')` here instead of normal `for ... of`\r\n\t// because the importing application doesn't neccessarily include an ES6 polyfill.\r\n\t// The `.split('')` approach discards \"exotic\" UTF-8 characters\r\n\t// (the ones consisting of four bytes) but digits\r\n\t// (including non-European ones) don't fall into that range\r\n\t// so such \"exotic\" characters would be discarded anyway.\r\n\tfor (const character of string.split('')) {\r\n\t\tresult += parsePhoneNumberCharacter(character, result) || ''\r\n\t}\r\n\treturn result\r\n}\r\n\r\n/**\r\n * Parses next character while parsing phone number digits (including a `+`)\r\n * from text: discards everything except `+` and digits, and `+` is only allowed\r\n * at the start of a phone number.\r\n * For example, is used in `react-phone-number-input` where it uses\r\n * [`input-format`](https://gitlab.com/catamphetamine/input-format).\r\n * @param {string} character - Yet another character from raw input string.\r\n * @param {string?} prevParsedCharacters - Previous parsed characters.\r\n * @param {object} meta - Optional custom use-case-specific metadata.\r\n * @return {string?} The parsed character.\r\n */\r\nexport function parsePhoneNumberCharacter(character, prevParsedCharacters) {\r\n\t// Only allow a leading `+`.\r\n\tif (character === '+') {\r\n\t\t// If this `+` is not the first parsed character\r\n\t\t// then discard it.\r\n\t\tif (prevParsedCharacters) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\treturn '+'\r\n\t}\r\n\t// Allow digits.\r\n\treturn parseDigit(character)\r\n}"],"mappings":";;;;;;;;AAAA;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,0BAAT,CAAoCC,MAApC,EAA4C;EAC1D,IAAIC,MAAM,GAAG,EAAb,CAD0D,CAE1D;EACA;EACA;EACA;EACA;EACA;;EACA,qDAAwBD,MAAM,CAACE,KAAP,CAAa,EAAb,CAAxB,wCAA0C;IAAA,IAA/BC,SAA+B;IACzCF,MAAM,IAAIG,yBAAyB,CAACD,SAAD,EAAYF,MAAZ,CAAzB,IAAgD,EAA1D;EACA;;EACD,OAAOA,MAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASG,yBAAT,CAAmCD,SAAnC,EAA8CE,oBAA9C,EAAoE;EAC1E;EACA,IAAIF,SAAS,KAAK,GAAlB,EAAuB;IACtB;IACA;IACA,IAAIE,oBAAJ,EAA0B;MACzB;IACA;;IACD,OAAO,GAAP;EACA,CATyE,CAU1E;;;EACA,OAAO,IAAAC,uBAAA,EAAWH,SAAX,CAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parseIncompletePhoneNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parseIncompletePhoneNumber.test.js new file mode 100644 index 00000000..723682e0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parseIncompletePhoneNumber.test.js @@ -0,0 +1,36 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +var _parseIncompletePhoneNumber = _interopRequireWildcard(require("./parseIncompletePhoneNumber.js")); + +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } + +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +describe('parseIncompletePhoneNumber', function () { + it('should parse phone number character', function () { + // Accepts leading `+`. + (0, _parseIncompletePhoneNumber.parsePhoneNumberCharacter)('+').should.equal('+'); // Doesn't accept non-leading `+`. + + expect((0, _parseIncompletePhoneNumber.parsePhoneNumberCharacter)('+', '+')).to.be.undefined; // Parses digits. + + (0, _parseIncompletePhoneNumber.parsePhoneNumberCharacter)('1').should.equal('1'); // Parses non-European digits. + + (0, _parseIncompletePhoneNumber.parsePhoneNumberCharacter)('٤').should.equal('4'); // Dismisses other characters. + + expect((0, _parseIncompletePhoneNumber.parsePhoneNumberCharacter)('-')).to.be.undefined; + }); + it('should parse incomplete phone number', function () { + (0, _parseIncompletePhoneNumber["default"])('').should.equal(''); // Doesn't accept non-leading `+`. + + (0, _parseIncompletePhoneNumber["default"])('++').should.equal('+'); // Accepts leading `+`. + + (0, _parseIncompletePhoneNumber["default"])('+7 800 555').should.equal('+7800555'); // Parses digits. + + (0, _parseIncompletePhoneNumber["default"])('8 (800) 555').should.equal('8800555'); // Parses non-European digits. + + (0, _parseIncompletePhoneNumber["default"])('+٤٤٢٣٢٣٢٣٤').should.equal('+442323234'); + }); +}); +//# sourceMappingURL=parseIncompletePhoneNumber.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parseIncompletePhoneNumber.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parseIncompletePhoneNumber.test.js.map new file mode 100644 index 00000000..ead53355 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parseIncompletePhoneNumber.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parseIncompletePhoneNumber.test.js","names":["describe","it","parsePhoneNumberCharacter","should","equal","expect","to","be","undefined","parseIncompletePhoneNumber"],"sources":["../source/parseIncompletePhoneNumber.test.js"],"sourcesContent":["import parseIncompletePhoneNumber, { parsePhoneNumberCharacter } from './parseIncompletePhoneNumber.js'\r\n\r\ndescribe('parseIncompletePhoneNumber', () => {\r\n\tit('should parse phone number character', () => {\r\n\t\t// Accepts leading `+`.\r\n\t\tparsePhoneNumberCharacter('+').should.equal('+')\r\n\r\n\t\t// Doesn't accept non-leading `+`.\r\n\t\texpect(parsePhoneNumberCharacter('+', '+')).to.be.undefined\r\n\r\n\t\t// Parses digits.\r\n\t\tparsePhoneNumberCharacter('1').should.equal('1')\r\n\r\n\t\t// Parses non-European digits.\r\n\t\tparsePhoneNumberCharacter('٤').should.equal('4')\r\n\r\n\t\t// Dismisses other characters.\r\n\t\texpect(parsePhoneNumberCharacter('-')).to.be.undefined\r\n\t})\r\n\r\n\tit('should parse incomplete phone number', () => {\r\n\t\tparseIncompletePhoneNumber('').should.equal('')\r\n\r\n\t\t// Doesn't accept non-leading `+`.\r\n\t\tparseIncompletePhoneNumber('++').should.equal('+')\r\n\r\n\t\t// Accepts leading `+`.\r\n\t\tparseIncompletePhoneNumber('+7 800 555').should.equal('+7800555')\r\n\r\n\t\t// Parses digits.\r\n\t\tparseIncompletePhoneNumber('8 (800) 555').should.equal('8800555')\r\n\r\n\t\t// Parses non-European digits.\r\n\t\tparseIncompletePhoneNumber('+٤٤٢٣٢٣٢٣٤').should.equal('+442323234')\r\n\t})\r\n})"],"mappings":";;;;AAAA;;;;;;AAEAA,QAAQ,CAAC,4BAAD,EAA+B,YAAM;EAC5CC,EAAE,CAAC,qCAAD,EAAwC,YAAM;IAC/C;IACA,IAAAC,qDAAA,EAA0B,GAA1B,EAA+BC,MAA/B,CAAsCC,KAAtC,CAA4C,GAA5C,EAF+C,CAI/C;;IACAC,MAAM,CAAC,IAAAH,qDAAA,EAA0B,GAA1B,EAA+B,GAA/B,CAAD,CAAN,CAA4CI,EAA5C,CAA+CC,EAA/C,CAAkDC,SAAlD,CAL+C,CAO/C;;IACA,IAAAN,qDAAA,EAA0B,GAA1B,EAA+BC,MAA/B,CAAsCC,KAAtC,CAA4C,GAA5C,EAR+C,CAU/C;;IACA,IAAAF,qDAAA,EAA0B,GAA1B,EAA+BC,MAA/B,CAAsCC,KAAtC,CAA4C,GAA5C,EAX+C,CAa/C;;IACAC,MAAM,CAAC,IAAAH,qDAAA,EAA0B,GAA1B,CAAD,CAAN,CAAuCI,EAAvC,CAA0CC,EAA1C,CAA6CC,SAA7C;EACA,CAfC,CAAF;EAiBAP,EAAE,CAAC,sCAAD,EAAyC,YAAM;IAChD,IAAAQ,sCAAA,EAA2B,EAA3B,EAA+BN,MAA/B,CAAsCC,KAAtC,CAA4C,EAA5C,EADgD,CAGhD;;IACA,IAAAK,sCAAA,EAA2B,IAA3B,EAAiCN,MAAjC,CAAwCC,KAAxC,CAA8C,GAA9C,EAJgD,CAMhD;;IACA,IAAAK,sCAAA,EAA2B,YAA3B,EAAyCN,MAAzC,CAAgDC,KAAhD,CAAsD,UAAtD,EAPgD,CAShD;;IACA,IAAAK,sCAAA,EAA2B,aAA3B,EAA0CN,MAA1C,CAAiDC,KAAjD,CAAuD,SAAvD,EAVgD,CAYhD;;IACA,IAAAK,sCAAA,EAA2B,YAA3B,EAAyCN,MAAzC,CAAgDC,KAAhD,CAAsD,YAAtD;EACA,CAdC,CAAF;AAeA,CAjCO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumber.js new file mode 100644 index 00000000..4e5854a8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumber.js @@ -0,0 +1,99 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = parsePhoneNumber; +exports.normalizeArguments = normalizeArguments; + +var _parsePhoneNumber_ = _interopRequireDefault(require("./parsePhoneNumber_.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function parsePhoneNumber() { + var _normalizeArguments = normalizeArguments(arguments), + text = _normalizeArguments.text, + options = _normalizeArguments.options, + metadata = _normalizeArguments.metadata; + + return (0, _parsePhoneNumber_["default"])(text, options, metadata); +} + +function normalizeArguments(args) { + var _Array$prototype$slic = Array.prototype.slice.call(args), + _Array$prototype$slic2 = _slicedToArray(_Array$prototype$slic, 4), + arg_1 = _Array$prototype$slic2[0], + arg_2 = _Array$prototype$slic2[1], + arg_3 = _Array$prototype$slic2[2], + arg_4 = _Array$prototype$slic2[3]; + + var text; + var options; + var metadata; // If the phone number is passed as a string. + // `parsePhoneNumber('88005553535', ...)`. + + if (typeof arg_1 === 'string') { + text = arg_1; + } else throw new TypeError('A text for parsing must be a string.'); // If "default country" argument is being passed then move it to `options`. + // `parsePhoneNumber('88005553535', 'RU', [options], metadata)`. + + + if (!arg_2 || typeof arg_2 === 'string') { + if (arg_4) { + options = arg_3; + metadata = arg_4; + } else { + options = undefined; + metadata = arg_3; + } + + if (arg_2) { + options = _objectSpread({ + defaultCountry: arg_2 + }, options); + } + } // `defaultCountry` is not passed. + // Example: `parsePhoneNumber('+78005553535', [options], metadata)`. + else if (isObject(arg_2)) { + if (arg_3) { + options = arg_2; + metadata = arg_3; + } else { + metadata = arg_2; + } + } else throw new Error("Invalid second argument: ".concat(arg_2)); + + return { + text: text, + options: options, + metadata: metadata + }; +} // Otherwise istanbul would show this as "branch not covered". + +/* istanbul ignore next */ + + +var isObject = function isObject(_) { + return _typeof(_) === 'object'; +}; +//# sourceMappingURL=parsePhoneNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumber.js.map new file mode 100644 index 00000000..b3468154 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parsePhoneNumber.js","names":["parsePhoneNumber","normalizeArguments","arguments","text","options","metadata","parsePhoneNumber_","args","Array","prototype","slice","call","arg_1","arg_2","arg_3","arg_4","TypeError","undefined","defaultCountry","isObject","Error","_"],"sources":["../source/parsePhoneNumber.js"],"sourcesContent":["import parsePhoneNumber_ from './parsePhoneNumber_.js'\r\n\r\nexport default function parsePhoneNumber() {\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\treturn parsePhoneNumber_(text, options, metadata)\r\n}\r\n\r\nexport function normalizeArguments(args)\r\n{\r\n\tconst [arg_1, arg_2, arg_3, arg_4] = Array.prototype.slice.call(args)\r\n\r\n\tlet text\r\n\tlet options\r\n\tlet metadata\r\n\r\n\t// If the phone number is passed as a string.\r\n\t// `parsePhoneNumber('88005553535', ...)`.\r\n\tif (typeof arg_1 === 'string') {\r\n\t\ttext = arg_1\r\n\t}\r\n\telse throw new TypeError('A text for parsing must be a string.')\r\n\r\n\t// If \"default country\" argument is being passed then move it to `options`.\r\n\t// `parsePhoneNumber('88005553535', 'RU', [options], metadata)`.\r\n\tif (!arg_2 || typeof arg_2 === 'string')\r\n\t{\r\n\t\tif (arg_4) {\r\n\t\t\toptions = arg_3\r\n\t\t\tmetadata = arg_4\r\n\t\t} else {\r\n\t\t\toptions = undefined\r\n\t\t\tmetadata = arg_3\r\n\t\t}\r\n\r\n\t\tif (arg_2) {\r\n\t\t\toptions = { defaultCountry: arg_2, ...options }\r\n\t\t}\r\n\t}\r\n\t// `defaultCountry` is not passed.\r\n\t// Example: `parsePhoneNumber('+78005553535', [options], metadata)`.\r\n\telse if (isObject(arg_2))\r\n\t{\r\n\t\tif (arg_3) {\r\n\t\t\toptions = arg_2\r\n\t\t\tmetadata = arg_3\r\n\t\t} else {\r\n\t\t\tmetadata = arg_2\r\n\t\t}\r\n\t}\r\n\telse throw new Error(`Invalid second argument: ${arg_2}`)\r\n\r\n\treturn {\r\n\t\ttext,\r\n\t\toptions,\r\n\t\tmetadata\r\n\t}\r\n}\r\n\r\n// Otherwise istanbul would show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst isObject = _ => typeof _ === 'object'"],"mappings":";;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;AAEe,SAASA,gBAAT,GAA4B;EAC1C,0BAAoCC,kBAAkB,CAACC,SAAD,CAAtD;EAAA,IAAQC,IAAR,uBAAQA,IAAR;EAAA,IAAcC,OAAd,uBAAcA,OAAd;EAAA,IAAuBC,QAAvB,uBAAuBA,QAAvB;;EACA,OAAO,IAAAC,6BAAA,EAAkBH,IAAlB,EAAwBC,OAAxB,EAAiCC,QAAjC,CAAP;AACA;;AAEM,SAASJ,kBAAT,CAA4BM,IAA5B,EACP;EACC,4BAAqCC,KAAK,CAACC,SAAN,CAAgBC,KAAhB,CAAsBC,IAAtB,CAA2BJ,IAA3B,CAArC;EAAA;EAAA,IAAOK,KAAP;EAAA,IAAcC,KAAd;EAAA,IAAqBC,KAArB;EAAA,IAA4BC,KAA5B;;EAEA,IAAIZ,IAAJ;EACA,IAAIC,OAAJ;EACA,IAAIC,QAAJ,CALD,CAOC;EACA;;EACA,IAAI,OAAOO,KAAP,KAAiB,QAArB,EAA+B;IAC9BT,IAAI,GAAGS,KAAP;EACA,CAFD,MAGK,MAAM,IAAII,SAAJ,CAAc,sCAAd,CAAN,CAZN,CAcC;EACA;;;EACA,IAAI,CAACH,KAAD,IAAU,OAAOA,KAAP,KAAiB,QAA/B,EACA;IACC,IAAIE,KAAJ,EAAW;MACVX,OAAO,GAAGU,KAAV;MACAT,QAAQ,GAAGU,KAAX;IACA,CAHD,MAGO;MACNX,OAAO,GAAGa,SAAV;MACAZ,QAAQ,GAAGS,KAAX;IACA;;IAED,IAAID,KAAJ,EAAW;MACVT,OAAO;QAAKc,cAAc,EAAEL;MAArB,GAA+BT,OAA/B,CAAP;IACA;EACD,CAbD,CAcA;EACA;EAfA,KAgBK,IAAIe,QAAQ,CAACN,KAAD,CAAZ,EACL;IACC,IAAIC,KAAJ,EAAW;MACVV,OAAO,GAAIS,KAAX;MACAR,QAAQ,GAAGS,KAAX;IACA,CAHD,MAGO;MACNT,QAAQ,GAAGQ,KAAX;IACA;EACD,CARI,MASA,MAAM,IAAIO,KAAJ,oCAAsCP,KAAtC,EAAN;;EAEL,OAAO;IACNV,IAAI,EAAJA,IADM;IAENC,OAAO,EAAPA,OAFM;IAGNC,QAAQ,EAARA;EAHM,CAAP;AAKA,C,CAED;;AACA;;;AACA,IAAMc,QAAQ,GAAG,SAAXA,QAAW,CAAAE,CAAC;EAAA,OAAI,QAAOA,CAAP,MAAa,QAAjB;AAAA,CAAlB"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumber.test.js new file mode 100644 index 00000000..dfac76ef --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumber.test.js @@ -0,0 +1,142 @@ +"use strict"; + +var _parsePhoneNumber2 = _interopRequireDefault(require("./parsePhoneNumber.js")); + +var _metadataMin = _interopRequireDefault(require("../metadata.min.json")); + +var _metadataMax = _interopRequireDefault(require("../metadata.max.json")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function parsePhoneNumber() { + for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) { + parameters[_key] = arguments[_key]; + } + + parameters.push(_metadataMin["default"]); + return _parsePhoneNumber2["default"].apply(this, parameters); +} + +function parsePhoneNumberFull() { + for (var _len2 = arguments.length, parameters = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + parameters[_key2] = arguments[_key2]; + } + + parameters.push(_metadataMax["default"]); + return _parsePhoneNumber2["default"].apply(this, parameters); +} + +describe('parsePhoneNumber', function () { + it('should parse phone numbers', function () { + var phoneNumber = parsePhoneNumber('Phone: 8 (800) 555 35 35.', 'RU'); + phoneNumber.country.should.equal('RU'); + phoneNumber.countryCallingCode.should.equal('7'); + phoneNumber.nationalNumber.should.equal('8005553535'); + phoneNumber.number.should.equal('+78005553535'); + phoneNumber.isPossible().should.equal(true); + phoneNumber.isValid().should.equal(true); // phoneNumber.isValidForRegion('RU').should.equal(true) + // Russian phone type regexps aren't included in default metadata. + + parsePhoneNumberFull('Phone: 8 (800) 555 35 35.', 'RU').getType().should.equal('TOLL_FREE'); + }); + it('shouldn\'t set country when it\'s non-derivable', function () { + var phoneNumber = parsePhoneNumber('+7 111 555 35 35'); + expect(phoneNumber.country).to.be.undefined; + phoneNumber.countryCallingCode.should.equal('7'); + phoneNumber.nationalNumber.should.equal('1115553535'); + }); + it('should parse carrier code', function () { + var phoneNumber = parsePhoneNumber('0 15 21 5555-5555', 'BR'); + phoneNumber.carrierCode.should.equal('15'); + }); + it('should parse phone extension', function () { + var phoneNumber = parsePhoneNumber('Phone: 8 (800) 555 35 35 ext. 1234.', 'RU'); + phoneNumber.ext.should.equal('1234'); + }); + it('should validate numbers for countries with no type regular expressions', function () { + parsePhoneNumber('+380391234567').isValid().should.equal(true); + parsePhoneNumber('+380191234567').isValid().should.equal(false); + }); + it('should format numbers', function () { + var phoneNumber = parsePhoneNumber('Phone: 8 (800) 555 35 35.', 'RU'); + phoneNumber.format('NATIONAL').should.equal('8 (800) 555-35-35'); + phoneNumber.formatNational().should.equal('8 (800) 555-35-35'); + phoneNumber.format('INTERNATIONAL').should.equal('+7 800 555 35 35'); + phoneNumber.formatInternational().should.equal('+7 800 555 35 35'); + }); + it('should get tel: URI', function () { + var phoneNumber = parsePhoneNumber('Phone: 8 (800) 555 35 35 ext. 1234.', 'RU'); + phoneNumber.getURI().should.equal('tel:+78005553535;ext=1234'); + }); + it('should work in edge cases', function () { + expect(function () { + return parsePhoneNumber('+78005553535', -1, {}); + }).to["throw"]('Invalid second argument'); + }); + it('should throw parse errors', function () { + expect(function () { + return parsePhoneNumber('8005553535', 'XX'); + }).to["throw"]('INVALID_COUNTRY'); + expect(function () { + return parsePhoneNumber('+', 'RU'); + }).to["throw"]('NOT_A_NUMBER'); + expect(function () { + return parsePhoneNumber('a', 'RU'); + }).to["throw"]('NOT_A_NUMBER'); + expect(function () { + return parsePhoneNumber('1', 'RU'); + }).to["throw"]('TOO_SHORT'); + expect(function () { + return parsePhoneNumber('+4'); + }).to["throw"]('TOO_SHORT'); + expect(function () { + return parsePhoneNumber('+44'); + }).to["throw"]('TOO_SHORT'); + expect(function () { + return parsePhoneNumber('+443'); + }).to["throw"]('TOO_SHORT'); + expect(function () { + return parsePhoneNumber('+370'); + }).to["throw"]('TOO_SHORT'); + expect(function () { + return parsePhoneNumber('88888888888888888888', 'RU'); + }).to["throw"]('TOO_LONG'); + expect(function () { + return parsePhoneNumber('8 (800) 555 35 35'); + }).to["throw"]('INVALID_COUNTRY'); + expect(function () { + return parsePhoneNumber('+9991112233'); + }).to["throw"]('INVALID_COUNTRY'); + expect(function () { + return parsePhoneNumber('+9991112233', 'US'); + }).to["throw"]('INVALID_COUNTRY'); + expect(function () { + return parsePhoneNumber('8005553535 ', 'RU'); + }).to["throw"]('TOO_LONG'); + }); + it('should parse incorrect international phone numbers', function () { + // Parsing national prefixes and carrier codes + // is only required for local phone numbers + // but some people don't understand that + // and sometimes write international phone numbers + // with national prefixes (or maybe even carrier codes). + // http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html + // Google's original library forgives such mistakes + // and so does this library, because it has been requested: + // https://github.com/catamphetamine/libphonenumber-js/issues/127 + var phoneNumber; // For complete numbers it should strip national prefix. + + phoneNumber = parsePhoneNumber('+1 1877 215 5230'); + phoneNumber.nationalNumber.should.equal('8772155230'); + phoneNumber.country.should.equal('US'); // For complete numbers it should strip national prefix. + + phoneNumber = parsePhoneNumber('+7 8800 555 3535'); + phoneNumber.nationalNumber.should.equal('8005553535'); + phoneNumber.country.should.equal('RU'); // For incomplete numbers it shouldn't strip national prefix. + + phoneNumber = parsePhoneNumber('+7 8800 555 353'); + phoneNumber.nationalNumber.should.equal('8800555353'); + phoneNumber.country.should.equal('RU'); + }); +}); +//# sourceMappingURL=parsePhoneNumber.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumber.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumber.test.js.map new file mode 100644 index 00000000..b9708734 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumber.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parsePhoneNumber.test.js","names":["parsePhoneNumber","parameters","push","metadata","_parsePhoneNumber","apply","parsePhoneNumberFull","metadataFull","describe","it","phoneNumber","country","should","equal","countryCallingCode","nationalNumber","number","isPossible","isValid","getType","expect","to","be","undefined","carrierCode","ext","format","formatNational","formatInternational","getURI"],"sources":["../source/parsePhoneNumber.test.js"],"sourcesContent":["import _parsePhoneNumber from './parsePhoneNumber.js'\r\nimport metadata from '../metadata.min.json' assert { type: 'json' }\r\nimport metadataFull from '../metadata.max.json' assert { type: 'json' }\r\n\r\nfunction parsePhoneNumber(...parameters) {\r\n\tparameters.push(metadata)\r\n\treturn _parsePhoneNumber.apply(this, parameters)\r\n}\r\n\r\nfunction parsePhoneNumberFull(...parameters) {\r\n\tparameters.push(metadataFull)\r\n\treturn _parsePhoneNumber.apply(this, parameters)\r\n}\r\n\r\ndescribe('parsePhoneNumber', () => {\r\n\tit('should parse phone numbers', () => {\r\n\t\tconst phoneNumber = parsePhoneNumber('Phone: 8 (800) 555 35 35.', 'RU')\r\n\t\tphoneNumber.country.should.equal('RU')\r\n\t\tphoneNumber.countryCallingCode.should.equal('7')\r\n\t\tphoneNumber.nationalNumber.should.equal('8005553535')\r\n\t\tphoneNumber.number.should.equal('+78005553535')\r\n\t\tphoneNumber.isPossible().should.equal(true)\r\n\t\tphoneNumber.isValid().should.equal(true)\r\n\t\t// phoneNumber.isValidForRegion('RU').should.equal(true)\r\n\t\t// Russian phone type regexps aren't included in default metadata.\r\n\t\tparsePhoneNumberFull('Phone: 8 (800) 555 35 35.', 'RU').getType().should.equal('TOLL_FREE')\r\n\t})\r\n\r\n\tit('shouldn\\'t set country when it\\'s non-derivable', () => {\r\n\t\tconst phoneNumber = parsePhoneNumber('+7 111 555 35 35')\r\n\t\texpect(phoneNumber.country).to.be.undefined\r\n\t\tphoneNumber.countryCallingCode.should.equal('7')\r\n\t\tphoneNumber.nationalNumber.should.equal('1115553535')\r\n\t})\r\n\r\n\tit('should parse carrier code', () => {\r\n\t\tconst phoneNumber = parsePhoneNumber('0 15 21 5555-5555', 'BR')\r\n\t\tphoneNumber.carrierCode.should.equal('15')\r\n\t})\r\n\r\n\tit('should parse phone extension', () => {\r\n\t\tconst phoneNumber = parsePhoneNumber('Phone: 8 (800) 555 35 35 ext. 1234.', 'RU')\r\n\t\tphoneNumber.ext.should.equal('1234')\r\n\t})\r\n\r\n\tit('should validate numbers for countries with no type regular expressions', () => {\r\n\t\tparsePhoneNumber('+380391234567').isValid().should.equal(true)\r\n\t\tparsePhoneNumber('+380191234567').isValid().should.equal(false)\r\n\t})\r\n\r\n\tit('should format numbers', () => {\r\n\t\tconst phoneNumber = parsePhoneNumber('Phone: 8 (800) 555 35 35.', 'RU')\r\n\t\tphoneNumber.format('NATIONAL').should.equal('8 (800) 555-35-35')\r\n\t\tphoneNumber.formatNational().should.equal('8 (800) 555-35-35')\r\n\t\tphoneNumber.format('INTERNATIONAL').should.equal('+7 800 555 35 35')\r\n\t\tphoneNumber.formatInternational().should.equal('+7 800 555 35 35')\r\n\t})\r\n\r\n\tit('should get tel: URI', () => {\r\n\t\tconst phoneNumber = parsePhoneNumber('Phone: 8 (800) 555 35 35 ext. 1234.', 'RU')\r\n\t\tphoneNumber.getURI().should.equal('tel:+78005553535;ext=1234')\r\n\t})\r\n\r\n\tit('should work in edge cases', () => {\r\n\t\texpect(() => parsePhoneNumber('+78005553535', -1, {})).to.throw('Invalid second argument')\r\n\t})\r\n\r\n\tit('should throw parse errors', () => {\r\n\t\texpect(() => parsePhoneNumber('8005553535', 'XX')).to.throw('INVALID_COUNTRY')\r\n\t\texpect(() => parsePhoneNumber('+', 'RU')).to.throw('NOT_A_NUMBER')\r\n\t\texpect(() => parsePhoneNumber('a', 'RU')).to.throw('NOT_A_NUMBER')\r\n\t\texpect(() => parsePhoneNumber('1', 'RU')).to.throw('TOO_SHORT')\r\n\t\texpect(() => parsePhoneNumber('+4')).to.throw('TOO_SHORT')\r\n\t\texpect(() => parsePhoneNumber('+44')).to.throw('TOO_SHORT')\r\n\t\texpect(() => parsePhoneNumber('+443')).to.throw('TOO_SHORT')\r\n\t\texpect(() => parsePhoneNumber('+370')).to.throw('TOO_SHORT')\r\n\t\texpect(() => parsePhoneNumber('88888888888888888888', 'RU')).to.throw('TOO_LONG')\r\n\t\texpect(() => parsePhoneNumber('8 (800) 555 35 35')).to.throw('INVALID_COUNTRY')\r\n\t\texpect(() => parsePhoneNumber('+9991112233')).to.throw('INVALID_COUNTRY')\r\n\t\texpect(() => parsePhoneNumber('+9991112233', 'US')).to.throw('INVALID_COUNTRY')\r\n\t\texpect(() => parsePhoneNumber('8005553535 ', 'RU')).to.throw('TOO_LONG')\r\n\t})\r\n\r\n\tit('should parse incorrect international phone numbers', () => {\r\n\t\t// Parsing national prefixes and carrier codes\r\n\t\t// is only required for local phone numbers\r\n\t\t// but some people don't understand that\r\n\t\t// and sometimes write international phone numbers\r\n\t\t// with national prefixes (or maybe even carrier codes).\r\n\t\t// http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html\r\n\t\t// Google's original library forgives such mistakes\r\n\t\t// and so does this library, because it has been requested:\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/127\r\n\r\n\t\tlet phoneNumber\r\n\r\n\t\t// For complete numbers it should strip national prefix.\r\n\t\tphoneNumber = parsePhoneNumber('+1 1877 215 5230')\r\n\t\tphoneNumber.nationalNumber.should.equal('8772155230')\r\n\t\tphoneNumber.country.should.equal('US')\r\n\r\n\t\t// For complete numbers it should strip national prefix.\r\n\t\tphoneNumber = parsePhoneNumber('+7 8800 555 3535')\r\n\t\tphoneNumber.nationalNumber.should.equal('8005553535')\r\n\t\tphoneNumber.country.should.equal('RU')\r\n\r\n\t\t// For incomplete numbers it shouldn't strip national prefix.\r\n\t\tphoneNumber = parsePhoneNumber('+7 8800 555 353')\r\n\t\tphoneNumber.nationalNumber.should.equal('8800555353')\r\n\t\tphoneNumber.country.should.equal('RU')\r\n\t})\r\n})\r\n"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumberFromString.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumberFromString.js new file mode 100644 index 00000000..d38d1999 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumberFromString.js @@ -0,0 +1,22 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = parsePhoneNumberFromString; + +var _parsePhoneNumber = require("./parsePhoneNumber.js"); + +var _parsePhoneNumberFromString_ = _interopRequireDefault(require("./parsePhoneNumberFromString_.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function parsePhoneNumberFromString() { + var _normalizeArguments = (0, _parsePhoneNumber.normalizeArguments)(arguments), + text = _normalizeArguments.text, + options = _normalizeArguments.options, + metadata = _normalizeArguments.metadata; + + return (0, _parsePhoneNumberFromString_["default"])(text, options, metadata); +} +//# sourceMappingURL=parsePhoneNumberFromString.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumberFromString.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumberFromString.js.map new file mode 100644 index 00000000..c453b659 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumberFromString.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parsePhoneNumberFromString.js","names":["parsePhoneNumberFromString","normalizeArguments","arguments","text","options","metadata","parsePhoneNumberFromString_"],"sources":["../source/parsePhoneNumberFromString.js"],"sourcesContent":["import { normalizeArguments } from './parsePhoneNumber.js'\r\nimport parsePhoneNumberFromString_ from './parsePhoneNumberFromString_.js'\r\n\r\nexport default function parsePhoneNumberFromString() {\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\treturn parsePhoneNumberFromString_(text, options, metadata)\r\n}\r\n"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEe,SAASA,0BAAT,GAAsC;EACpD,0BAAoC,IAAAC,oCAAA,EAAmBC,SAAnB,CAApC;EAAA,IAAQC,IAAR,uBAAQA,IAAR;EAAA,IAAcC,OAAd,uBAAcA,OAAd;EAAA,IAAuBC,QAAvB,uBAAuBA,QAAvB;;EACA,OAAO,IAAAC,uCAAA,EAA4BH,IAA5B,EAAkCC,OAAlC,EAA2CC,QAA3C,CAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumberFromString.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumberFromString.test.js new file mode 100644 index 00000000..a4dcf03c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumberFromString.test.js @@ -0,0 +1,92 @@ +"use strict"; + +var _parsePhoneNumberFromString2 = _interopRequireDefault(require("./parsePhoneNumberFromString.js")); + +var _metadataMin = _interopRequireDefault(require("../metadata.min.json")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function parsePhoneNumberFromString() { + for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) { + parameters[_key] = arguments[_key]; + } + + parameters.push(_metadataMin["default"]); + return _parsePhoneNumberFromString2["default"].apply(this, parameters); +} + +var USE_NON_GEOGRAPHIC_COUNTRY_CODE = false; +describe('parsePhoneNumberFromString', function () { + it('should parse phone numbers from string', function () { + parsePhoneNumberFromString('Phone: 8 (800) 555 35 35.', 'RU').nationalNumber.should.equal('8005553535'); + expect(parsePhoneNumberFromString('3', 'RU')).to.be.undefined; + }); + it('should work in edge cases', function () { + expect(parsePhoneNumberFromString('')).to.be.undefined; + }); + it('should parse phone numbers when invalid country code is passed', function () { + parsePhoneNumberFromString('Phone: +7 (800) 555 35 35.', 'XX').nationalNumber.should.equal('8005553535'); + expect(parsePhoneNumberFromString('Phone: 8 (800) 555-35-35.', 'XX')).to.be.undefined; + }); + it('should parse non-geographic numbering plan phone numbers (extended)', function () { + var phoneNumber = parsePhoneNumberFromString('+870773111632'); + phoneNumber.number.should.equal('+870773111632'); + + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + phoneNumber.country.should.equal('001'); + } else { + expect(phoneNumber.country).to.be.undefined; + } + + phoneNumber.countryCallingCode.should.equal('870'); + }); + it('should parse non-geographic numbering plan phone numbers (default country code) (extended)', function () { + var phoneNumber = parsePhoneNumberFromString('773111632', { + defaultCallingCode: '870' + }); + phoneNumber.number.should.equal('+870773111632'); + + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + phoneNumber.country.should.equal('001'); + } else { + expect(phoneNumber.country).to.be.undefined; + } + + phoneNumber.countryCallingCode.should.equal('870'); + }); + it('should determine the possibility of non-geographic phone numbers', function () { + var phoneNumber = parsePhoneNumberFromString('+870773111632'); + phoneNumber.isPossible().should.equal(true); + var phoneNumber2 = parsePhoneNumberFromString('+8707731116321'); + phoneNumber2.isPossible().should.equal(false); + }); + it('should support `extract: false` flag', function () { + var testCorrectness = function testCorrectness(number, expectedResult) { + var result = expect(parsePhoneNumberFromString(number, { + extract: false, + defaultCountry: 'US' + })); + + if (expectedResult) { + result.to.not.be.undefined; + } else { + result.to.be.undefined; + } + }; + + testCorrectness('Call: (213) 373-4253', false); + testCorrectness('(213) 373-4253x', false); + testCorrectness('(213) 373-4253', true); + testCorrectness('- (213) 373-4253 -', true); + testCorrectness('+1 (213) 373-4253', true); + testCorrectness(' +1 (213) 373-4253', false); + }); + it('should not prematurely strip a possible national prefix from Chinese numbers', function () { + // https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/57 + var phoneNumber = parsePhoneNumberFromString('+86123456789'); + phoneNumber.isPossible().should.equal(true); + phoneNumber.isValid().should.equal(false); + phoneNumber.nationalNumber.should.equal('123456789'); + }); +}); +//# sourceMappingURL=parsePhoneNumberFromString.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumberFromString.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumberFromString.test.js.map new file mode 100644 index 00000000..24785655 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumberFromString.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parsePhoneNumberFromString.test.js","names":["parsePhoneNumberFromString","parameters","push","metadata","_parsePhoneNumberFromString","apply","USE_NON_GEOGRAPHIC_COUNTRY_CODE","describe","it","nationalNumber","should","equal","expect","to","be","undefined","phoneNumber","number","country","countryCallingCode","defaultCallingCode","isPossible","phoneNumber2","testCorrectness","expectedResult","result","extract","defaultCountry","not","isValid"],"sources":["../source/parsePhoneNumberFromString.test.js"],"sourcesContent":["import _parsePhoneNumberFromString from './parsePhoneNumberFromString.js'\r\nimport metadata from '../metadata.min.json' assert { type: 'json' }\r\n\r\nfunction parsePhoneNumberFromString(...parameters) {\r\n\tparameters.push(metadata)\r\n\treturn _parsePhoneNumberFromString.apply(this, parameters)\r\n}\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\ndescribe('parsePhoneNumberFromString', () => {\r\n\tit('should parse phone numbers from string', () => {\r\n\t\tparsePhoneNumberFromString('Phone: 8 (800) 555 35 35.', 'RU').nationalNumber.should.equal('8005553535')\r\n\t\texpect(parsePhoneNumberFromString('3', 'RU')).to.be.undefined\r\n\t})\r\n\r\n\tit('should work in edge cases', () => {\r\n\t\texpect(parsePhoneNumberFromString('')).to.be.undefined\r\n\t})\r\n\r\n\tit('should parse phone numbers when invalid country code is passed', () => {\r\n\t\tparsePhoneNumberFromString('Phone: +7 (800) 555 35 35.', 'XX').nationalNumber.should.equal('8005553535')\r\n\t\texpect(parsePhoneNumberFromString('Phone: 8 (800) 555-35-35.', 'XX')).to.be.undefined\r\n\t})\r\n\r\n\r\n\tit('should parse non-geographic numbering plan phone numbers (extended)', () => {\r\n\t\tconst phoneNumber = parsePhoneNumberFromString('+870773111632')\r\n\t\tphoneNumber.number.should.equal('+870773111632')\r\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\tphoneNumber.country.should.equal('001')\r\n\t\t} else {\r\n\t\t\texpect(phoneNumber.country).to.be.undefined\r\n\t\t}\r\n\t\tphoneNumber.countryCallingCode.should.equal('870')\r\n\t})\r\n\r\n\tit('should parse non-geographic numbering plan phone numbers (default country code) (extended)', () => {\r\n\t\tconst phoneNumber = parsePhoneNumberFromString('773111632', { defaultCallingCode: '870' })\r\n\t\tphoneNumber.number.should.equal('+870773111632')\r\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\tphoneNumber.country.should.equal('001')\r\n\t\t} else {\r\n\t\t\texpect(phoneNumber.country).to.be.undefined\r\n\t\t}\r\n\t\tphoneNumber.countryCallingCode.should.equal('870')\r\n\t})\r\n\r\n\tit('should determine the possibility of non-geographic phone numbers', () => {\r\n\t\tconst phoneNumber = parsePhoneNumberFromString('+870773111632')\r\n\t\tphoneNumber.isPossible().should.equal(true)\r\n\t\tconst phoneNumber2 = parsePhoneNumberFromString('+8707731116321')\r\n\t\tphoneNumber2.isPossible().should.equal(false)\r\n\t})\r\n\r\n\tit('should support `extract: false` flag', () => {\r\n\t\tconst testCorrectness = (number, expectedResult) => {\r\n\t\t\tconst result = expect(parsePhoneNumberFromString(number, { extract: false, defaultCountry: 'US' }))\r\n\t\t\tif (expectedResult) {\r\n\t\t\t\tresult.to.not.be.undefined\r\n\t\t\t} else {\r\n\t\t\t\tresult.to.be.undefined\r\n\t\t\t}\r\n\t\t}\r\n\t\ttestCorrectness('Call: (213) 373-4253', false)\r\n\t\ttestCorrectness('(213) 373-4253x', false)\r\n\t\ttestCorrectness('(213) 373-4253', true)\r\n\t\ttestCorrectness('- (213) 373-4253 -', true)\r\n\t\ttestCorrectness('+1 (213) 373-4253', true)\r\n\t\ttestCorrectness(' +1 (213) 373-4253', false)\r\n\t})\r\n\r\n\tit('should not prematurely strip a possible national prefix from Chinese numbers', () => {\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/57\r\n\t\tconst phoneNumber = parsePhoneNumberFromString('+86123456789')\r\n\t\tphoneNumber.isPossible().should.equal(true)\r\n\t\tphoneNumber.isValid().should.equal(false)\r\n\t\tphoneNumber.nationalNumber.should.equal('123456789')\r\n\t})\r\n})\r\n"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumberFromString_.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumberFromString_.js new file mode 100644 index 00000000..744a4665 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumberFromString_.js @@ -0,0 +1,41 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = parsePhoneNumberFromString; + +var _parsePhoneNumber_ = _interopRequireDefault(require("./parsePhoneNumber_.js")); + +var _ParseError = _interopRequireDefault(require("./ParseError.js")); + +var _metadata = require("./metadata.js"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function parsePhoneNumberFromString(text, options, metadata) { + // Validate `defaultCountry`. + if (options && options.defaultCountry && !(0, _metadata.isSupportedCountry)(options.defaultCountry, metadata)) { + options = _objectSpread(_objectSpread({}, options), {}, { + defaultCountry: undefined + }); + } // Parse phone number. + + + try { + return (0, _parsePhoneNumber_["default"])(text, options, metadata); + } catch (error) { + /* istanbul ignore else */ + if (error instanceof _ParseError["default"]) {// + } else { + throw error; + } + } +} +//# sourceMappingURL=parsePhoneNumberFromString_.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumberFromString_.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumberFromString_.js.map new file mode 100644 index 00000000..fde15df1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumberFromString_.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parsePhoneNumberFromString_.js","names":["parsePhoneNumberFromString","text","options","metadata","defaultCountry","isSupportedCountry","undefined","parsePhoneNumber","error","ParseError"],"sources":["../source/parsePhoneNumberFromString_.js"],"sourcesContent":["import parsePhoneNumber from './parsePhoneNumber_.js'\r\nimport ParseError from './ParseError.js'\r\nimport { isSupportedCountry } from './metadata.js'\r\n\r\nexport default function parsePhoneNumberFromString(text, options, metadata) {\r\n\t// Validate `defaultCountry`.\r\n\tif (options && options.defaultCountry && !isSupportedCountry(options.defaultCountry, metadata)) {\r\n\t\toptions = {\r\n\t\t\t...options,\r\n\t\t\tdefaultCountry: undefined\r\n\t\t}\r\n\t}\r\n\t// Parse phone number.\r\n\ttry {\r\n\t\treturn parsePhoneNumber(text, options, metadata)\r\n\t} catch (error) {\r\n\t\t/* istanbul ignore else */\r\n\t\tif (error instanceof ParseError) {\r\n\t\t\t//\r\n\t\t} else {\r\n\t\t\tthrow error\r\n\t\t}\r\n\t}\r\n}\r\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;;;;;;;AAEe,SAASA,0BAAT,CAAoCC,IAApC,EAA0CC,OAA1C,EAAmDC,QAAnD,EAA6D;EAC3E;EACA,IAAID,OAAO,IAAIA,OAAO,CAACE,cAAnB,IAAqC,CAAC,IAAAC,4BAAA,EAAmBH,OAAO,CAACE,cAA3B,EAA2CD,QAA3C,CAA1C,EAAgG;IAC/FD,OAAO,mCACHA,OADG;MAENE,cAAc,EAAEE;IAFV,EAAP;EAIA,CAP0E,CAQ3E;;;EACA,IAAI;IACH,OAAO,IAAAC,6BAAA,EAAiBN,IAAjB,EAAuBC,OAAvB,EAAgCC,QAAhC,CAAP;EACA,CAFD,CAEE,OAAOK,KAAP,EAAc;IACf;IACA,IAAIA,KAAK,YAAYC,sBAArB,EAAiC,CAChC;IACA,CAFD,MAEO;MACN,MAAMD,KAAN;IACA;EACD;AACD"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumber_.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumber_.js new file mode 100644 index 00000000..c1d3cbbb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumber_.js @@ -0,0 +1,23 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = parsePhoneNumber; + +var _parse_ = _interopRequireDefault(require("./parse_.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function parsePhoneNumber(text, options, metadata) { + return (0, _parse_["default"])(text, _objectSpread(_objectSpread({}, options), {}, { + v2: true + }), metadata); +} +//# sourceMappingURL=parsePhoneNumber_.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumber_.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumber_.js.map new file mode 100644 index 00000000..9670bbec --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parsePhoneNumber_.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parsePhoneNumber_.js","names":["parsePhoneNumber","text","options","metadata","parseNumber","v2"],"sources":["../source/parsePhoneNumber_.js"],"sourcesContent":["import parseNumber from './parse_.js'\r\n\r\nexport default function parsePhoneNumber(text, options, metadata) {\r\n\treturn parseNumber(text, { ...options, v2: true }, metadata)\r\n}"],"mappings":";;;;;;;AAAA;;;;;;;;;;AAEe,SAASA,gBAAT,CAA0BC,IAA1B,EAAgCC,OAAhC,EAAyCC,QAAzC,EAAmD;EACjE,OAAO,IAAAC,kBAAA,EAAYH,IAAZ,kCAAuBC,OAAvB;IAAgCG,EAAE,EAAE;EAApC,IAA4CF,QAA5C,CAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parse_.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parse_.js new file mode 100644 index 00000000..0048528f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parse_.js @@ -0,0 +1,371 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = parse; + +var _constants = require("./constants.js"); + +var _ParseError = _interopRequireDefault(require("./ParseError.js")); + +var _metadata = _interopRequireDefault(require("./metadata.js")); + +var _isViablePhoneNumber = _interopRequireWildcard(require("./helpers/isViablePhoneNumber.js")); + +var _extractExtension = _interopRequireDefault(require("./helpers/extension/extractExtension.js")); + +var _parseIncompletePhoneNumber = _interopRequireDefault(require("./parseIncompletePhoneNumber.js")); + +var _getCountryCallingCode = _interopRequireDefault(require("./getCountryCallingCode.js")); + +var _isPossibleNumber_ = require("./isPossibleNumber_.js"); + +var _RFC = require("./helpers/RFC3966.js"); + +var _PhoneNumber = _interopRequireDefault(require("./PhoneNumber.js")); + +var _matchesEntirely = _interopRequireDefault(require("./helpers/matchesEntirely.js")); + +var _extractCountryCallingCode = _interopRequireDefault(require("./helpers/extractCountryCallingCode.js")); + +var _extractCountryCallingCodeFromInternationalNumberWithoutPlusSign = _interopRequireDefault(require("./helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js")); + +var _extractNationalNumber = _interopRequireDefault(require("./helpers/extractNationalNumber.js")); + +var _stripIddPrefix = _interopRequireDefault(require("./helpers/stripIddPrefix.js")); + +var _getCountryByCallingCode = _interopRequireDefault(require("./helpers/getCountryByCallingCode.js")); + +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } + +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +// This is a port of Google Android `libphonenumber`'s +// `phonenumberutil.js` of December 31th, 2018. +// +// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js +// We don't allow input strings for parsing to be longer than 250 chars. +// This prevents malicious input from consuming CPU. +var MAX_INPUT_STRING_LENGTH = 250; // This consists of the plus symbol, digits, and arabic-indic digits. + +var PHONE_NUMBER_START_PATTERN = new RegExp('[' + _constants.PLUS_CHARS + _constants.VALID_DIGITS + ']'); // Regular expression of trailing characters that we want to remove. +// A trailing `#` is sometimes used when writing phone numbers with extensions in US. +// Example: "+1 (645) 123 1234-910#" number has extension "910". + +var AFTER_PHONE_NUMBER_END_PATTERN = new RegExp('[^' + _constants.VALID_DIGITS + '#' + ']+$'); +var USE_NON_GEOGRAPHIC_COUNTRY_CODE = false; // Examples: +// +// ```js +// parse('8 (800) 555-35-35', 'RU') +// parse('8 (800) 555-35-35', 'RU', metadata) +// parse('8 (800) 555-35-35', { country: { default: 'RU' } }) +// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata) +// parse('+7 800 555 35 35') +// parse('+7 800 555 35 35', metadata) +// ``` +// + +function parse(text, options, metadata) { + // If assigning the `{}` default value is moved to the arguments above, + // code coverage would decrease for some weird reason. + options = options || {}; + metadata = new _metadata["default"](metadata); // Validate `defaultCountry`. + + if (options.defaultCountry && !metadata.hasCountry(options.defaultCountry)) { + if (options.v2) { + throw new _ParseError["default"]('INVALID_COUNTRY'); + } + + throw new Error("Unknown country: ".concat(options.defaultCountry)); + } // Parse the phone number. + + + var _parseInput = parseInput(text, options.v2, options.extract), + formattedPhoneNumber = _parseInput.number, + ext = _parseInput.ext, + error = _parseInput.error; // If the phone number is not viable then return nothing. + + + if (!formattedPhoneNumber) { + if (options.v2) { + if (error === 'TOO_SHORT') { + throw new _ParseError["default"]('TOO_SHORT'); + } + + throw new _ParseError["default"]('NOT_A_NUMBER'); + } + + return {}; + } + + var _parsePhoneNumber = parsePhoneNumber(formattedPhoneNumber, options.defaultCountry, options.defaultCallingCode, metadata), + country = _parsePhoneNumber.country, + nationalNumber = _parsePhoneNumber.nationalNumber, + countryCallingCode = _parsePhoneNumber.countryCallingCode, + carrierCode = _parsePhoneNumber.carrierCode; + + if (!metadata.hasSelectedNumberingPlan()) { + if (options.v2) { + throw new _ParseError["default"]('INVALID_COUNTRY'); + } + + return {}; + } // Validate national (significant) number length. + + + if (!nationalNumber || nationalNumber.length < _constants.MIN_LENGTH_FOR_NSN) { + // Won't throw here because the regexp already demands length > 1. + + /* istanbul ignore if */ + if (options.v2) { + throw new _ParseError["default"]('TOO_SHORT'); + } // Google's demo just throws an error in this case. + + + return {}; + } // Validate national (significant) number length. + // + // A sidenote: + // + // They say that sometimes national (significant) numbers + // can be longer than `MAX_LENGTH_FOR_NSN` (e.g. in Germany). + // https://github.com/googlei18n/libphonenumber/blob/7e1748645552da39c4e1ba731e47969d97bdb539/resources/phonenumber.proto#L36 + // Such numbers will just be discarded. + // + + + if (nationalNumber.length > _constants.MAX_LENGTH_FOR_NSN) { + if (options.v2) { + throw new _ParseError["default"]('TOO_LONG'); + } // Google's demo just throws an error in this case. + + + return {}; + } + + if (options.v2) { + var phoneNumber = new _PhoneNumber["default"](countryCallingCode, nationalNumber, metadata.metadata); + + if (country) { + phoneNumber.country = country; + } + + if (carrierCode) { + phoneNumber.carrierCode = carrierCode; + } + + if (ext) { + phoneNumber.ext = ext; + } + + return phoneNumber; + } // Check if national phone number pattern matches the number. + // National number pattern is different for each country, + // even for those ones which are part of the "NANPA" group. + + + var valid = (options.extended ? metadata.hasSelectedNumberingPlan() : country) ? (0, _matchesEntirely["default"])(nationalNumber, metadata.nationalNumberPattern()) : false; + + if (!options.extended) { + return valid ? result(country, nationalNumber, ext) : {}; + } // isInternational: countryCallingCode !== undefined + + + return { + country: country, + countryCallingCode: countryCallingCode, + carrierCode: carrierCode, + valid: valid, + possible: valid ? true : options.extended === true && metadata.possibleLengths() && (0, _isPossibleNumber_.isPossibleNumber)(nationalNumber, metadata) ? true : false, + phone: nationalNumber, + ext: ext + }; +} +/** + * Extracts a formatted phone number from text. + * Doesn't guarantee that the extracted phone number + * is a valid phone number (for example, doesn't validate its length). + * @param {string} text + * @param {boolean} [extract] — If `false`, then will parse the entire `text` as a phone number. + * @param {boolean} [throwOnError] — By default, it won't throw if the text is too long. + * @return {string} + * @example + * // Returns "(213) 373-4253". + * extractFormattedPhoneNumber("Call (213) 373-4253 for assistance.") + */ + + +function extractFormattedPhoneNumber(text, extract, throwOnError) { + if (!text) { + return; + } + + if (text.length > MAX_INPUT_STRING_LENGTH) { + if (throwOnError) { + throw new _ParseError["default"]('TOO_LONG'); + } + + return; + } + + if (extract === false) { + return text; + } // Attempt to extract a possible number from the string passed in + + + var startsAt = text.search(PHONE_NUMBER_START_PATTERN); + + if (startsAt < 0) { + return; + } + + return text // Trim everything to the left of the phone number + .slice(startsAt) // Remove trailing non-numerical characters + .replace(AFTER_PHONE_NUMBER_END_PATTERN, ''); +} +/** + * @param {string} text - Input. + * @param {boolean} v2 - Legacy API functions don't pass `v2: true` flag. + * @param {boolean} [extract] - Whether to extract a phone number from `text`, or attempt to parse the entire text as a phone number. + * @return {object} `{ ?number, ?ext }`. + */ + + +function parseInput(text, v2, extract) { + // Parse RFC 3966 phone number URI. + if (text && text.indexOf('tel:') === 0) { + return (0, _RFC.parseRFC3966)(text); + } + + var number = extractFormattedPhoneNumber(text, extract, v2); // If the phone number is not viable, then abort. + + if (!number) { + return {}; + } + + if (!(0, _isViablePhoneNumber["default"])(number)) { + if ((0, _isViablePhoneNumber.isViablePhoneNumberStart)(number)) { + return { + error: 'TOO_SHORT' + }; + } + + return {}; + } // Attempt to parse extension first, since it doesn't require region-specific + // data and we want to have the non-normalised number here. + + + var withExtensionStripped = (0, _extractExtension["default"])(number); + + if (withExtensionStripped.ext) { + return withExtensionStripped; + } + + return { + number: number + }; +} +/** + * Creates `parse()` result object. + */ + + +function result(country, nationalNumber, ext) { + var result = { + country: country, + phone: nationalNumber + }; + + if (ext) { + result.ext = ext; + } + + return result; +} +/** + * Parses a viable phone number. + * @param {string} formattedPhoneNumber — Example: "(213) 373-4253". + * @param {string} [defaultCountry] + * @param {string} [defaultCallingCode] + * @param {Metadata} metadata + * @return {object} Returns `{ country: string?, countryCallingCode: string?, nationalNumber: string? }`. + */ + + +function parsePhoneNumber(formattedPhoneNumber, defaultCountry, defaultCallingCode, metadata) { + // Extract calling code from phone number. + var _extractCountryCallin = (0, _extractCountryCallingCode["default"])((0, _parseIncompletePhoneNumber["default"])(formattedPhoneNumber), defaultCountry, defaultCallingCode, metadata.metadata), + countryCallingCode = _extractCountryCallin.countryCallingCode, + number = _extractCountryCallin.number; // Choose a country by `countryCallingCode`. + + + var country; + + if (countryCallingCode) { + metadata.selectNumberingPlan(countryCallingCode); + } // If `formattedPhoneNumber` is in "national" format + // then `number` is defined and `countryCallingCode` isn't. + else if (number && (defaultCountry || defaultCallingCode)) { + metadata.selectNumberingPlan(defaultCountry, defaultCallingCode); + + if (defaultCountry) { + country = defaultCountry; + } else { + /* istanbul ignore if */ + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + if (metadata.isNonGeographicCallingCode(defaultCallingCode)) { + country = '001'; + } + } + } + + countryCallingCode = defaultCallingCode || (0, _getCountryCallingCode["default"])(defaultCountry, metadata.metadata); + } else return {}; + + if (!number) { + return { + countryCallingCode: countryCallingCode + }; + } + + var _extractNationalNumbe = (0, _extractNationalNumber["default"])((0, _parseIncompletePhoneNumber["default"])(number), metadata), + nationalNumber = _extractNationalNumbe.nationalNumber, + carrierCode = _extractNationalNumbe.carrierCode; // Sometimes there are several countries + // corresponding to the same country phone code + // (e.g. NANPA countries all having `1` country phone code). + // Therefore, to reliably determine the exact country, + // national (significant) number should have been parsed first. + // + // When `metadata.json` is generated, all "ambiguous" country phone codes + // get their countries populated with the full set of + // "phone number type" regular expressions. + // + + + var exactCountry = (0, _getCountryByCallingCode["default"])(countryCallingCode, nationalNumber, metadata); + + if (exactCountry) { + country = exactCountry; + /* istanbul ignore if */ + + if (exactCountry === '001') {// Can't happen with `USE_NON_GEOGRAPHIC_COUNTRY_CODE` being `false`. + // If `USE_NON_GEOGRAPHIC_COUNTRY_CODE` is set to `true` for some reason, + // then remove the "istanbul ignore if". + } else { + metadata.country(country); + } + } + + return { + country: country, + countryCallingCode: countryCallingCode, + nationalNumber: nationalNumber, + carrierCode: carrierCode + }; +} +//# sourceMappingURL=parse_.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parse_.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parse_.js.map new file mode 100644 index 00000000..83f842b7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/parse_.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parse_.js","names":["MAX_INPUT_STRING_LENGTH","PHONE_NUMBER_START_PATTERN","RegExp","PLUS_CHARS","VALID_DIGITS","AFTER_PHONE_NUMBER_END_PATTERN","USE_NON_GEOGRAPHIC_COUNTRY_CODE","parse","text","options","metadata","Metadata","defaultCountry","hasCountry","v2","ParseError","Error","parseInput","extract","formattedPhoneNumber","number","ext","error","parsePhoneNumber","defaultCallingCode","country","nationalNumber","countryCallingCode","carrierCode","hasSelectedNumberingPlan","length","MIN_LENGTH_FOR_NSN","MAX_LENGTH_FOR_NSN","phoneNumber","PhoneNumber","valid","extended","matchesEntirely","nationalNumberPattern","result","possible","possibleLengths","isPossibleNumber","phone","extractFormattedPhoneNumber","throwOnError","startsAt","search","slice","replace","indexOf","parseRFC3966","isViablePhoneNumber","isViablePhoneNumberStart","withExtensionStripped","extractExtension","extractCountryCallingCode","parseIncompletePhoneNumber","selectNumberingPlan","isNonGeographicCallingCode","getCountryCallingCode","extractNationalNumber","exactCountry","getCountryByCallingCode"],"sources":["../source/parse_.js"],"sourcesContent":["// This is a port of Google Android `libphonenumber`'s\r\n// `phonenumberutil.js` of December 31th, 2018.\r\n//\r\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\r\n\r\nimport {\r\n\tVALID_DIGITS,\r\n\tPLUS_CHARS,\r\n\tMIN_LENGTH_FOR_NSN,\r\n\tMAX_LENGTH_FOR_NSN\r\n} from './constants.js'\r\n\r\nimport ParseError from './ParseError.js'\r\nimport Metadata from './metadata.js'\r\nimport isViablePhoneNumber, { isViablePhoneNumberStart } from './helpers/isViablePhoneNumber.js'\r\nimport extractExtension from './helpers/extension/extractExtension.js'\r\nimport parseIncompletePhoneNumber from './parseIncompletePhoneNumber.js'\r\nimport getCountryCallingCode from './getCountryCallingCode.js'\r\nimport { isPossibleNumber } from './isPossibleNumber_.js'\r\nimport { parseRFC3966 } from './helpers/RFC3966.js'\r\nimport PhoneNumber from './PhoneNumber.js'\r\nimport matchesEntirely from './helpers/matchesEntirely.js'\r\nimport extractCountryCallingCode from './helpers/extractCountryCallingCode.js'\r\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js'\r\nimport extractNationalNumber from './helpers/extractNationalNumber.js'\r\nimport stripIddPrefix from './helpers/stripIddPrefix.js'\r\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js'\r\n\r\n// We don't allow input strings for parsing to be longer than 250 chars.\r\n// This prevents malicious input from consuming CPU.\r\nconst MAX_INPUT_STRING_LENGTH = 250\r\n\r\n// This consists of the plus symbol, digits, and arabic-indic digits.\r\nconst PHONE_NUMBER_START_PATTERN = new RegExp('[' + PLUS_CHARS + VALID_DIGITS + ']')\r\n\r\n// Regular expression of trailing characters that we want to remove.\r\n// A trailing `#` is sometimes used when writing phone numbers with extensions in US.\r\n// Example: \"+1 (645) 123 1234-910#\" number has extension \"910\".\r\nconst AFTER_PHONE_NUMBER_END_PATTERN = new RegExp('[^' + VALID_DIGITS + '#' + ']+$')\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\n// Examples:\r\n//\r\n// ```js\r\n// parse('8 (800) 555-35-35', 'RU')\r\n// parse('8 (800) 555-35-35', 'RU', metadata)\r\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } })\r\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata)\r\n// parse('+7 800 555 35 35')\r\n// parse('+7 800 555 35 35', metadata)\r\n// ```\r\n//\r\nexport default function parse(text, options, metadata) {\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\t// Validate `defaultCountry`.\r\n\tif (options.defaultCountry && !metadata.hasCountry(options.defaultCountry)) {\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('INVALID_COUNTRY')\r\n\t\t}\r\n\t\tthrow new Error(`Unknown country: ${options.defaultCountry}`)\r\n\t}\r\n\r\n\t// Parse the phone number.\r\n\tconst { number: formattedPhoneNumber, ext, error } = parseInput(text, options.v2, options.extract)\r\n\r\n\t// If the phone number is not viable then return nothing.\r\n\tif (!formattedPhoneNumber) {\r\n\t\tif (options.v2) {\r\n\t\t\tif (error === 'TOO_SHORT') {\r\n\t\t\t\tthrow new ParseError('TOO_SHORT')\r\n\t\t\t}\r\n\t\t\tthrow new ParseError('NOT_A_NUMBER')\r\n\t\t}\r\n\t\treturn {}\r\n\t}\r\n\r\n\tconst {\r\n\t\tcountry,\r\n\t\tnationalNumber,\r\n\t\tcountryCallingCode,\r\n\t\tcarrierCode\r\n\t} = parsePhoneNumber(\r\n\t\tformattedPhoneNumber,\r\n\t\toptions.defaultCountry,\r\n\t\toptions.defaultCallingCode,\r\n\t\tmetadata\r\n\t)\r\n\r\n\tif (!metadata.hasSelectedNumberingPlan()) {\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('INVALID_COUNTRY')\r\n\t\t}\r\n\t\treturn {}\r\n\t}\r\n\r\n\t// Validate national (significant) number length.\r\n\tif (!nationalNumber || nationalNumber.length < MIN_LENGTH_FOR_NSN) {\r\n\t\t// Won't throw here because the regexp already demands length > 1.\r\n\t\t/* istanbul ignore if */\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('TOO_SHORT')\r\n\t\t}\r\n\t\t// Google's demo just throws an error in this case.\r\n\t\treturn {}\r\n\t}\r\n\r\n\t// Validate national (significant) number length.\r\n\t//\r\n\t// A sidenote:\r\n\t//\r\n\t// They say that sometimes national (significant) numbers\r\n\t// can be longer than `MAX_LENGTH_FOR_NSN` (e.g. in Germany).\r\n\t// https://github.com/googlei18n/libphonenumber/blob/7e1748645552da39c4e1ba731e47969d97bdb539/resources/phonenumber.proto#L36\r\n\t// Such numbers will just be discarded.\r\n\t//\r\n\tif (nationalNumber.length > MAX_LENGTH_FOR_NSN) {\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('TOO_LONG')\r\n\t\t}\r\n\t\t// Google's demo just throws an error in this case.\r\n\t\treturn {}\r\n\t}\r\n\r\n\tif (options.v2) {\r\n\t\tconst phoneNumber = new PhoneNumber(\r\n\t\t\tcountryCallingCode,\r\n\t\t\tnationalNumber,\r\n\t\t\tmetadata.metadata\r\n\t\t)\r\n\t\tif (country) {\r\n\t\t\tphoneNumber.country = country\r\n\t\t}\r\n\t\tif (carrierCode) {\r\n\t\t\tphoneNumber.carrierCode = carrierCode\r\n\t\t}\r\n\t\tif (ext) {\r\n\t\t\tphoneNumber.ext = ext\r\n\t\t}\r\n\t\treturn phoneNumber\r\n\t}\r\n\r\n\t// Check if national phone number pattern matches the number.\r\n\t// National number pattern is different for each country,\r\n\t// even for those ones which are part of the \"NANPA\" group.\r\n\tconst valid = (options.extended ? metadata.hasSelectedNumberingPlan() : country) ?\r\n\t\tmatchesEntirely(nationalNumber, metadata.nationalNumberPattern()) :\r\n\t\tfalse\r\n\r\n\tif (!options.extended) {\r\n\t\treturn valid ? result(country, nationalNumber, ext) : {}\r\n\t}\r\n\r\n\t// isInternational: countryCallingCode !== undefined\r\n\r\n\treturn {\r\n\t\tcountry,\r\n\t\tcountryCallingCode,\r\n\t\tcarrierCode,\r\n\t\tvalid,\r\n\t\tpossible: valid ? true : (\r\n\t\t\toptions.extended === true &&\r\n\t\t\tmetadata.possibleLengths() &&\r\n\t\t\tisPossibleNumber(nationalNumber, metadata) ? true : false\r\n\t\t),\r\n\t\tphone: nationalNumber,\r\n\t\text\r\n\t}\r\n}\r\n\r\n/**\r\n * Extracts a formatted phone number from text.\r\n * Doesn't guarantee that the extracted phone number\r\n * is a valid phone number (for example, doesn't validate its length).\r\n * @param {string} text\r\n * @param {boolean} [extract] — If `false`, then will parse the entire `text` as a phone number.\r\n * @param {boolean} [throwOnError] — By default, it won't throw if the text is too long.\r\n * @return {string}\r\n * @example\r\n * // Returns \"(213) 373-4253\".\r\n * extractFormattedPhoneNumber(\"Call (213) 373-4253 for assistance.\")\r\n */\r\nfunction extractFormattedPhoneNumber(text, extract, throwOnError) {\r\n\tif (!text) {\r\n\t\treturn\r\n\t}\r\n\tif (text.length > MAX_INPUT_STRING_LENGTH) {\r\n\t\tif (throwOnError) {\r\n\t\t\tthrow new ParseError('TOO_LONG')\r\n\t\t}\r\n\t\treturn\r\n\t}\r\n\tif (extract === false) {\r\n\t\treturn text\r\n\t}\r\n\t// Attempt to extract a possible number from the string passed in\r\n\tconst startsAt = text.search(PHONE_NUMBER_START_PATTERN)\r\n\tif (startsAt < 0) {\r\n\t\treturn\r\n\t}\r\n\treturn text\r\n\t\t// Trim everything to the left of the phone number\r\n\t\t.slice(startsAt)\r\n\t\t// Remove trailing non-numerical characters\r\n\t\t.replace(AFTER_PHONE_NUMBER_END_PATTERN, '')\r\n}\r\n\r\n/**\r\n * @param {string} text - Input.\r\n * @param {boolean} v2 - Legacy API functions don't pass `v2: true` flag.\r\n * @param {boolean} [extract] - Whether to extract a phone number from `text`, or attempt to parse the entire text as a phone number.\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\r\nfunction parseInput(text, v2, extract) {\r\n\t// Parse RFC 3966 phone number URI.\r\n\tif (text && text.indexOf('tel:') === 0) {\r\n\t\treturn parseRFC3966(text)\r\n\t}\r\n\tlet number = extractFormattedPhoneNumber(text, extract, v2)\r\n\t// If the phone number is not viable, then abort.\r\n\tif (!number) {\r\n\t\treturn {}\r\n\t}\r\n\tif (!isViablePhoneNumber(number)) {\r\n\t\tif (isViablePhoneNumberStart(number)) {\r\n\t\t\treturn { error: 'TOO_SHORT' }\r\n\t\t}\r\n\t\treturn {}\r\n\t}\r\n\t// Attempt to parse extension first, since it doesn't require region-specific\r\n\t// data and we want to have the non-normalised number here.\r\n\tconst withExtensionStripped = extractExtension(number)\r\n\tif (withExtensionStripped.ext) {\r\n\t\treturn withExtensionStripped\r\n\t}\r\n\treturn { number }\r\n}\r\n\r\n/**\r\n * Creates `parse()` result object.\r\n */\r\nfunction result(country, nationalNumber, ext) {\r\n\tconst result = {\r\n\t\tcountry,\r\n\t\tphone: nationalNumber\r\n\t}\r\n\tif (ext) {\r\n\t\tresult.ext = ext\r\n\t}\r\n\treturn result\r\n}\r\n\r\n/**\r\n * Parses a viable phone number.\r\n * @param {string} formattedPhoneNumber — Example: \"(213) 373-4253\".\r\n * @param {string} [defaultCountry]\r\n * @param {string} [defaultCallingCode]\r\n * @param {Metadata} metadata\r\n * @return {object} Returns `{ country: string?, countryCallingCode: string?, nationalNumber: string? }`.\r\n */\r\nfunction parsePhoneNumber(\r\n\tformattedPhoneNumber,\r\n\tdefaultCountry,\r\n\tdefaultCallingCode,\r\n\tmetadata\r\n) {\r\n\t// Extract calling code from phone number.\r\n\tlet { countryCallingCode, number } = extractCountryCallingCode(\r\n\t\tparseIncompletePhoneNumber(formattedPhoneNumber),\r\n\t\tdefaultCountry,\r\n\t\tdefaultCallingCode,\r\n\t\tmetadata.metadata\r\n\t)\r\n\r\n\t// Choose a country by `countryCallingCode`.\r\n\tlet country\r\n\tif (countryCallingCode) {\r\n\t\tmetadata.selectNumberingPlan(countryCallingCode)\r\n\t}\r\n\t// If `formattedPhoneNumber` is in \"national\" format\r\n\t// then `number` is defined and `countryCallingCode` isn't.\r\n\telse if (number && (defaultCountry || defaultCallingCode)) {\r\n\t\tmetadata.selectNumberingPlan(defaultCountry, defaultCallingCode)\r\n\t\tif (defaultCountry) {\r\n\t\t\tcountry = defaultCountry\r\n\t\t} else {\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\t\tif (metadata.isNonGeographicCallingCode(defaultCallingCode)) {\r\n\t\t\t\t\tcountry = '001'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tcountryCallingCode = defaultCallingCode || getCountryCallingCode(defaultCountry, metadata.metadata)\r\n\t}\r\n\telse return {}\r\n\r\n\tif (!number) {\r\n\t\treturn { countryCallingCode }\r\n\t}\r\n\r\n\tconst {\r\n\t\tnationalNumber,\r\n\t\tcarrierCode\r\n\t} = extractNationalNumber(\r\n\t\tparseIncompletePhoneNumber(number),\r\n\t\tmetadata\r\n\t)\r\n\r\n\t// Sometimes there are several countries\r\n\t// corresponding to the same country phone code\r\n\t// (e.g. NANPA countries all having `1` country phone code).\r\n\t// Therefore, to reliably determine the exact country,\r\n\t// national (significant) number should have been parsed first.\r\n\t//\r\n\t// When `metadata.json` is generated, all \"ambiguous\" country phone codes\r\n\t// get their countries populated with the full set of\r\n\t// \"phone number type\" regular expressions.\r\n\t//\r\n\tconst exactCountry = getCountryByCallingCode(countryCallingCode, nationalNumber, metadata)\r\n\tif (exactCountry) {\r\n\t\tcountry = exactCountry\r\n\t\t/* istanbul ignore if */\r\n\t\tif (exactCountry === '001') {\r\n\t\t\t// Can't happen with `USE_NON_GEOGRAPHIC_COUNTRY_CODE` being `false`.\r\n\t\t\t// If `USE_NON_GEOGRAPHIC_COUNTRY_CODE` is set to `true` for some reason,\r\n\t\t\t// then remove the \"istanbul ignore if\".\r\n\t\t} else {\r\n\t\t\tmetadata.country(country)\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\tcountry,\r\n\t\tcountryCallingCode,\r\n\t\tnationalNumber,\r\n\t\tcarrierCode\r\n\t}\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchNumbers.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchNumbers.js new file mode 100644 index 00000000..e85883a6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchNumbers.js @@ -0,0 +1,43 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = searchNumbers; + +var _parsePhoneNumber = require("./parsePhoneNumber.js"); + +var _PhoneNumberMatcher = _interopRequireDefault(require("./PhoneNumberMatcher.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +/** + * @return ES6 `for ... of` iterator. + */ +function searchNumbers() { + var _normalizeArguments = (0, _parsePhoneNumber.normalizeArguments)(arguments), + text = _normalizeArguments.text, + options = _normalizeArguments.options, + metadata = _normalizeArguments.metadata; + + var matcher = new _PhoneNumberMatcher["default"](text, options, metadata); + return _defineProperty({}, Symbol.iterator, function () { + return { + next: function next() { + if (matcher.hasNext()) { + return { + done: false, + value: matcher.next() + }; + } + + return { + done: true + }; + } + }; + }); +} +//# sourceMappingURL=searchNumbers.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchNumbers.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchNumbers.js.map new file mode 100644 index 00000000..0ee29ed1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchNumbers.js.map @@ -0,0 +1 @@ +{"version":3,"file":"searchNumbers.js","names":["searchNumbers","normalizeArguments","arguments","text","options","metadata","matcher","PhoneNumberMatcher","Symbol","iterator","next","hasNext","done","value"],"sources":["../source/searchNumbers.js"],"sourcesContent":["import { normalizeArguments } from './parsePhoneNumber.js'\r\nimport PhoneNumberMatcher from './PhoneNumberMatcher.js'\r\n\r\n/**\r\n * @return ES6 `for ... of` iterator.\r\n */\r\nexport default function searchNumbers()\r\n{\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\r\n\tconst matcher = new PhoneNumberMatcher(text, options, metadata)\r\n\r\n\treturn {\r\n\t\t[Symbol.iterator]() {\r\n\t\t\treturn {\r\n\t \t\tnext: () => {\r\n\t \t\t\tif (matcher.hasNext()) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tdone: false,\r\n\t\t\t\t\t\t\tvalue: matcher.next()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tdone: true\r\n\t\t\t\t\t}\r\n\t \t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"],"mappings":";;;;;;;AAAA;;AACA;;;;;;AAEA;AACA;AACA;AACe,SAASA,aAAT,GACf;EACC,0BAAoC,IAAAC,oCAAA,EAAmBC,SAAnB,CAApC;EAAA,IAAQC,IAAR,uBAAQA,IAAR;EAAA,IAAcC,OAAd,uBAAcA,OAAd;EAAA,IAAuBC,QAAvB,uBAAuBA,QAAvB;;EAEA,IAAMC,OAAO,GAAG,IAAIC,8BAAJ,CAAuBJ,IAAvB,EAA6BC,OAA7B,EAAsCC,QAAtC,CAAhB;EAEA,2BACEG,MAAM,CAACC,QADT,cACqB;IACnB,OAAO;MACHC,IAAI,EAAE,gBAAM;QACX,IAAIJ,OAAO,CAACK,OAAR,EAAJ,EAAuB;UACzB,OAAO;YACNC,IAAI,EAAE,KADA;YAENC,KAAK,EAAEP,OAAO,CAACI,IAAR;UAFD,CAAP;QAIA;;QACD,OAAO;UACNE,IAAI,EAAE;QADA,CAAP;MAGG;IAXE,CAAP;EAaA,CAfF;AAiBA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchNumbers.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchNumbers.test.js new file mode 100644 index 00000000..91f39273 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchNumbers.test.js @@ -0,0 +1,39 @@ +"use strict"; + +var _searchNumbers = _interopRequireDefault(require("./searchNumbers.js")); + +var _metadataMin = _interopRequireDefault(require("../metadata.min.json")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +describe('searchNumbers', function () { + it('should iterate', function () { + var expectedNumbers = [{ + country: 'RU', + phone: '8005553535', + // number : '+7 (800) 555-35-35', + startsAt: 14, + endsAt: 32 + }, { + country: 'US', + phone: '2133734253', + // number : '(213) 373-4253', + startsAt: 41, + endsAt: 55 + }]; + + for (var _iterator = _createForOfIteratorHelperLoose((0, _searchNumbers["default"])('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', _metadataMin["default"])), _step; !(_step = _iterator()).done;) { + var number = _step.value; + number.should.deep.equal(expectedNumbers.shift()); + } + + expectedNumbers.length.should.equal(0); + }); +}); +//# sourceMappingURL=searchNumbers.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchNumbers.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchNumbers.test.js.map new file mode 100644 index 00000000..98402d17 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchNumbers.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"searchNumbers.test.js","names":["describe","it","expectedNumbers","country","phone","startsAt","endsAt","searchNumbers","metadata","number","should","deep","equal","shift","length"],"sources":["../source/searchNumbers.test.js"],"sourcesContent":["import searchNumbers from './searchNumbers.js'\r\nimport metadata from '../metadata.min.json' assert { type: 'json' }\r\n\r\ndescribe('searchNumbers', () => {\r\n\tit('should iterate', () => {\r\n\t\tconst expectedNumbers =[{\r\n\t\t\tcountry : 'RU',\r\n\t\t\tphone : '8005553535',\r\n\t\t\t// number : '+7 (800) 555-35-35',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t}, {\r\n\t\t\tcountry : 'US',\r\n\t\t\tphone : '2133734253',\r\n\t\t\t// number : '(213) 373-4253',\r\n\t\t\tstartsAt : 41,\r\n\t\t\tendsAt : 55\r\n\t\t}]\r\n\r\n\t\tfor (const number of searchNumbers('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', metadata)) {\r\n\t\t\tnumber.should.deep.equal(expectedNumbers.shift())\r\n\t\t}\r\n\r\n\t\texpectedNumbers.length.should.equal(0)\r\n\t})\r\n})"],"mappings":";;AAAA;;AACA;;;;;;;;;;AAEAA,QAAQ,CAAC,eAAD,EAAkB,YAAM;EAC/BC,EAAE,CAAC,gBAAD,EAAmB,YAAM;IAC1B,IAAMC,eAAe,GAAE,CAAC;MACvBC,OAAO,EAAG,IADa;MAEvBC,KAAK,EAAK,YAFa;MAGvB;MACAC,QAAQ,EAAG,EAJY;MAKvBC,MAAM,EAAK;IALY,CAAD,EAMpB;MACFH,OAAO,EAAG,IADR;MAEFC,KAAK,EAAK,YAFR;MAGF;MACAC,QAAQ,EAAG,EAJT;MAKFC,MAAM,EAAK;IALT,CANoB,CAAvB;;IAcA,qDAAqB,IAAAC,yBAAA,EAAc,qFAAd,EAAqG,IAArG,EAA2GC,uBAA3G,CAArB,wCAA2I;MAAA,IAAhIC,MAAgI;MAC1IA,MAAM,CAACC,MAAP,CAAcC,IAAd,CAAmBC,KAAnB,CAAyBV,eAAe,CAACW,KAAhB,EAAzB;IACA;;IAEDX,eAAe,CAACY,MAAhB,CAAuBJ,MAAvB,CAA8BE,KAA9B,CAAoC,CAApC;EACA,CApBC,CAAF;AAqBA,CAtBO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchPhoneNumbersInText.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchPhoneNumbersInText.js new file mode 100644 index 00000000..cf82a5e7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchPhoneNumbersInText.js @@ -0,0 +1,18 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = searchPhoneNumbersInText; + +var _searchNumbers = _interopRequireDefault(require("./searchNumbers.js")); + +var _findPhoneNumbersInText = require("./findPhoneNumbersInText.js"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function searchPhoneNumbersInText(text, defaultCountry, options, metadata) { + var args = (0, _findPhoneNumbersInText.getArguments)(defaultCountry, options, metadata); + return (0, _searchNumbers["default"])(text, args.options, args.metadata); +} +//# sourceMappingURL=searchPhoneNumbersInText.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchPhoneNumbersInText.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchPhoneNumbersInText.js.map new file mode 100644 index 00000000..700a7bae --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchPhoneNumbersInText.js.map @@ -0,0 +1 @@ +{"version":3,"file":"searchPhoneNumbersInText.js","names":["searchPhoneNumbersInText","text","defaultCountry","options","metadata","args","getArguments","searchNumbers"],"sources":["../source/searchPhoneNumbersInText.js"],"sourcesContent":["import searchNumbers from './searchNumbers.js'\r\nimport { getArguments } from './findPhoneNumbersInText.js'\r\n\r\nexport default function searchPhoneNumbersInText(text, defaultCountry, options, metadata) {\r\n\tconst args = getArguments(defaultCountry, options, metadata)\r\n\treturn searchNumbers(text, args.options, args.metadata)\r\n}"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEe,SAASA,wBAAT,CAAkCC,IAAlC,EAAwCC,cAAxC,EAAwDC,OAAxD,EAAiEC,QAAjE,EAA2E;EACzF,IAAMC,IAAI,GAAG,IAAAC,oCAAA,EAAaJ,cAAb,EAA6BC,OAA7B,EAAsCC,QAAtC,CAAb;EACA,OAAO,IAAAG,yBAAA,EAAcN,IAAd,EAAoBI,IAAI,CAACF,OAAzB,EAAkCE,IAAI,CAACD,QAAvC,CAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchPhoneNumbersInText.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchPhoneNumbersInText.test.js new file mode 100644 index 00000000..9ff3f58f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchPhoneNumbersInText.test.js @@ -0,0 +1,35 @@ +"use strict"; + +var _searchPhoneNumbersInText = _interopRequireDefault(require("./searchPhoneNumbersInText.js")); + +var _metadataMin = _interopRequireDefault(require("../metadata.min.json")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +describe('searchPhoneNumbersInText', function () { + it('should find phone numbers (with default country)', function () { + var NUMBERS = ['+78005553535', '+12133734253']; + + for (var _iterator = _createForOfIteratorHelperLoose((0, _searchPhoneNumbersInText["default"])('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', _metadataMin["default"])), _step; !(_step = _iterator()).done;) { + var number = _step.value; + number.number.number.should.equal(NUMBERS[0]); + NUMBERS.shift(); + } + }); + it('should find phone numbers', function () { + var NUMBERS = ['+78005553535', '+12133734253']; + + for (var _iterator2 = _createForOfIteratorHelperLoose((0, _searchPhoneNumbersInText["default"])('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', _metadataMin["default"])), _step2; !(_step2 = _iterator2()).done;) { + var number = _step2.value; + number.number.number.should.equal(NUMBERS[0]); + NUMBERS.shift(); + } + }); +}); +//# sourceMappingURL=searchPhoneNumbersInText.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchPhoneNumbersInText.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchPhoneNumbersInText.test.js.map new file mode 100644 index 00000000..80ff5382 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/searchPhoneNumbersInText.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"searchPhoneNumbersInText.test.js","names":["describe","it","NUMBERS","searchPhoneNumbersInText","metadata","number","should","equal","shift"],"sources":["../source/searchPhoneNumbersInText.test.js"],"sourcesContent":["import searchPhoneNumbersInText from './searchPhoneNumbersInText.js'\r\nimport metadata from '../metadata.min.json' assert { type: 'json' }\r\n\r\ndescribe('searchPhoneNumbersInText', () => {\r\n\tit('should find phone numbers (with default country)', () => {\r\n\t\tconst NUMBERS = ['+78005553535', '+12133734253']\r\n\t\tfor (const number of searchPhoneNumbersInText('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', metadata)) {\r\n\t\t\tnumber.number.number.should.equal(NUMBERS[0])\r\n\t\t\tNUMBERS.shift()\r\n\t\t}\r\n\t})\r\n\r\n\tit('should find phone numbers', () => {\r\n\t\tconst NUMBERS = ['+78005553535', '+12133734253']\r\n\t\tfor (const number of searchPhoneNumbersInText('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', metadata)) {\r\n\t\t\tnumber.number.number.should.equal(NUMBERS[0])\r\n\t\t\tNUMBERS.shift()\r\n\t\t}\r\n\t})\r\n})"],"mappings":";;AAAA;;AACA;;;;;;;;;;AAEAA,QAAQ,CAAC,0BAAD,EAA6B,YAAM;EAC1CC,EAAE,CAAC,kDAAD,EAAqD,YAAM;IAC5D,IAAMC,OAAO,GAAG,CAAC,cAAD,EAAiB,cAAjB,CAAhB;;IACA,qDAAqB,IAAAC,oCAAA,EAAyB,qFAAzB,EAAgH,IAAhH,EAAsHC,uBAAtH,CAArB,wCAAsJ;MAAA,IAA3IC,MAA2I;MACrJA,MAAM,CAACA,MAAP,CAAcA,MAAd,CAAqBC,MAArB,CAA4BC,KAA5B,CAAkCL,OAAO,CAAC,CAAD,CAAzC;MACAA,OAAO,CAACM,KAAR;IACA;EACD,CANC,CAAF;EAQAP,EAAE,CAAC,2BAAD,EAA8B,YAAM;IACrC,IAAMC,OAAO,GAAG,CAAC,cAAD,EAAiB,cAAjB,CAAhB;;IACA,sDAAqB,IAAAC,oCAAA,EAAyB,qFAAzB,EAAgHC,uBAAhH,CAArB,2CAAgJ;MAAA,IAArIC,MAAqI;MAC/IA,MAAM,CAACA,MAAP,CAAcA,MAAd,CAAqBC,MAArB,CAA4BC,KAA5B,CAAkCL,OAAO,CAAC,CAAD,CAAzC;MACAA,OAAO,CAACM,KAAR;IACA;EACD,CANC,CAAF;AAOA,CAhBO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/tools/semver-compare.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/tools/semver-compare.js new file mode 100644 index 00000000..06956d9e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/tools/semver-compare.js @@ -0,0 +1,37 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; + +// Copy-pasted from: +// https://github.com/substack/semver-compare/blob/master/index.js +// +// Inlining this function because some users reported issues with +// importing from `semver-compare` in a browser with ES6 "native" modules. +// +// Fixes `semver-compare` not being able to compare versions with alpha/beta/etc "tags". +// https://github.com/catamphetamine/libphonenumber-js/issues/381 +function _default(a, b) { + a = a.split('-'); + b = b.split('-'); + var pa = a[0].split('.'); + var pb = b[0].split('.'); + + for (var i = 0; i < 3; i++) { + var na = Number(pa[i]); + var nb = Number(pb[i]); + if (na > nb) return 1; + if (nb > na) return -1; + if (!isNaN(na) && isNaN(nb)) return 1; + if (isNaN(na) && !isNaN(nb)) return -1; + } + + if (a[1] && b[1]) { + return a[1] > b[1] ? 1 : a[1] < b[1] ? -1 : 0; + } + + return !a[1] && b[1] ? 1 : a[1] && !b[1] ? -1 : 0; +} +//# sourceMappingURL=semver-compare.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/tools/semver-compare.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/tools/semver-compare.js.map new file mode 100644 index 00000000..68884e33 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/tools/semver-compare.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semver-compare.js","names":["a","b","split","pa","pb","i","na","Number","nb","isNaN"],"sources":["../../source/tools/semver-compare.js"],"sourcesContent":["// Copy-pasted from:\r\n// https://github.com/substack/semver-compare/blob/master/index.js\r\n//\r\n// Inlining this function because some users reported issues with\r\n// importing from `semver-compare` in a browser with ES6 \"native\" modules.\r\n//\r\n// Fixes `semver-compare` not being able to compare versions with alpha/beta/etc \"tags\".\r\n// https://github.com/catamphetamine/libphonenumber-js/issues/381\r\nexport default function(a, b) {\r\n a = a.split('-')\r\n b = b.split('-')\r\n var pa = a[0].split('.')\r\n var pb = b[0].split('.')\r\n for (var i = 0; i < 3; i++) {\r\n var na = Number(pa[i])\r\n var nb = Number(pb[i])\r\n if (na > nb) return 1\r\n if (nb > na) return -1\r\n if (!isNaN(na) && isNaN(nb)) return 1\r\n if (isNaN(na) && !isNaN(nb)) return -1\r\n }\r\n if (a[1] && b[1]) {\r\n return a[1] > b[1] ? 1 : (a[1] < b[1] ? -1 : 0)\r\n }\r\n return !a[1] && b[1] ? 1 : (a[1] && !b[1] ? -1 : 0)\r\n}"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,kBAASA,CAAT,EAAYC,CAAZ,EAAe;EAC1BD,CAAC,GAAGA,CAAC,CAACE,KAAF,CAAQ,GAAR,CAAJ;EACAD,CAAC,GAAGA,CAAC,CAACC,KAAF,CAAQ,GAAR,CAAJ;EACA,IAAIC,EAAE,GAAGH,CAAC,CAAC,CAAD,CAAD,CAAKE,KAAL,CAAW,GAAX,CAAT;EACA,IAAIE,EAAE,GAAGH,CAAC,CAAC,CAAD,CAAD,CAAKC,KAAL,CAAW,GAAX,CAAT;;EACA,KAAK,IAAIG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuBA,CAAC,EAAxB,EAA4B;IACxB,IAAIC,EAAE,GAAGC,MAAM,CAACJ,EAAE,CAACE,CAAD,CAAH,CAAf;IACA,IAAIG,EAAE,GAAGD,MAAM,CAACH,EAAE,CAACC,CAAD,CAAH,CAAf;IACA,IAAIC,EAAE,GAAGE,EAAT,EAAa,OAAO,CAAP;IACb,IAAIA,EAAE,GAAGF,EAAT,EAAa,OAAO,CAAC,CAAR;IACb,IAAI,CAACG,KAAK,CAACH,EAAD,CAAN,IAAcG,KAAK,CAACD,EAAD,CAAvB,EAA6B,OAAO,CAAP;IAC7B,IAAIC,KAAK,CAACH,EAAD,CAAL,IAAa,CAACG,KAAK,CAACD,EAAD,CAAvB,EAA6B,OAAO,CAAC,CAAR;EAChC;;EACD,IAAIR,CAAC,CAAC,CAAD,CAAD,IAAQC,CAAC,CAAC,CAAD,CAAb,EAAkB;IACd,OAAOD,CAAC,CAAC,CAAD,CAAD,GAAOC,CAAC,CAAC,CAAD,CAAR,GAAc,CAAd,GAAmBD,CAAC,CAAC,CAAD,CAAD,GAAOC,CAAC,CAAC,CAAD,CAAR,GAAc,CAAC,CAAf,GAAmB,CAA7C;EACH;;EACD,OAAO,CAACD,CAAC,CAAC,CAAD,CAAF,IAASC,CAAC,CAAC,CAAD,CAAV,GAAgB,CAAhB,GAAqBD,CAAC,CAAC,CAAD,CAAD,IAAQ,CAACC,CAAC,CAAC,CAAD,CAAV,GAAgB,CAAC,CAAjB,GAAqB,CAAjD;AACH"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/tools/semver-compare.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/tools/semver-compare.test.js new file mode 100644 index 00000000..00828762 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/tools/semver-compare.test.js @@ -0,0 +1,13 @@ +"use strict"; + +var _semverCompare = _interopRequireDefault(require("./semver-compare.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +describe('semver-compare', function () { + it('should compare versions', function () { + var versions = ['1.2.3', '4.11.6', '4.2.0', '1.5.19', '1.5.6', '1.5.4', '1.5.5-alpha.beta', '1.5.5-alpha', '1.5.5', '1.5.5-rc.1', '1.5.5-beta.0', '4.1.3', '2.3.1', '10.5.5', '11.3.0']; + versions.sort(_semverCompare["default"]).should.deep.equal(['1.2.3', '1.5.4', '1.5.5-alpha', '1.5.5-alpha.beta', '1.5.5-beta.0', '1.5.5-rc.1', '1.5.5', '1.5.6', '1.5.19', '2.3.1', '4.1.3', '4.2.0', '4.11.6', '10.5.5', '11.3.0']); + }); +}); +//# sourceMappingURL=semver-compare.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/tools/semver-compare.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/tools/semver-compare.test.js.map new file mode 100644 index 00000000..349600a2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/tools/semver-compare.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semver-compare.test.js","names":["describe","it","versions","sort","semverCompare","should","deep","equal"],"sources":["../../source/tools/semver-compare.test.js"],"sourcesContent":["import semverCompare from './semver-compare.js'\r\n\r\ndescribe('semver-compare', () => {\r\n\tit('should compare versions', () => {\r\n\t\tconst versions = [\r\n\t\t\t'1.2.3',\r\n\t\t\t'4.11.6',\r\n\t\t\t'4.2.0',\r\n\t\t\t'1.5.19',\r\n\t\t\t'1.5.6',\r\n\t\t\t'1.5.4',\r\n\t\t\t'1.5.5-alpha.beta',\r\n\t\t\t'1.5.5-alpha',\r\n\t\t\t'1.5.5',\r\n\t\t\t'1.5.5-rc.1',\r\n\t\t\t'1.5.5-beta.0',\r\n\t\t\t'4.1.3',\r\n\t\t\t'2.3.1',\r\n\t\t\t'10.5.5',\r\n\t\t\t'11.3.0'\r\n\t\t]\r\n\t\tversions.sort(semverCompare).should.deep.equal([\r\n\t\t\t'1.2.3',\r\n\t\t\t'1.5.4',\r\n\t\t\t'1.5.5-alpha',\r\n\t\t\t'1.5.5-alpha.beta',\r\n\t\t\t'1.5.5-beta.0',\r\n\t\t\t'1.5.5-rc.1',\r\n\t\t\t'1.5.5',\r\n\t\t\t'1.5.6',\r\n\t\t\t'1.5.19',\r\n\t\t\t'2.3.1',\r\n\t\t\t'4.1.3',\r\n\t\t\t'4.2.0',\r\n\t\t\t'4.11.6',\r\n\t\t\t'10.5.5',\r\n\t\t\t'11.3.0'\r\n\t\t])\r\n\t})\r\n})"],"mappings":";;AAAA;;;;AAEAA,QAAQ,CAAC,gBAAD,EAAmB,YAAM;EAChCC,EAAE,CAAC,yBAAD,EAA4B,YAAM;IACnC,IAAMC,QAAQ,GAAG,CAChB,OADgB,EAEhB,QAFgB,EAGhB,OAHgB,EAIhB,QAJgB,EAKhB,OALgB,EAMhB,OANgB,EAOhB,kBAPgB,EAQhB,aARgB,EAShB,OATgB,EAUhB,YAVgB,EAWhB,cAXgB,EAYhB,OAZgB,EAahB,OAbgB,EAchB,QAdgB,EAehB,QAfgB,CAAjB;IAiBAA,QAAQ,CAACC,IAAT,CAAcC,yBAAd,EAA6BC,MAA7B,CAAoCC,IAApC,CAAyCC,KAAzC,CAA+C,CAC9C,OAD8C,EAE9C,OAF8C,EAG9C,aAH8C,EAI9C,kBAJ8C,EAK9C,cAL8C,EAM9C,YAN8C,EAO9C,OAP8C,EAQ9C,OAR8C,EAS9C,QAT8C,EAU9C,OAV8C,EAW9C,OAX8C,EAY9C,OAZ8C,EAa9C,QAb8C,EAc9C,QAd8C,EAe9C,QAf8C,CAA/C;EAiBA,CAnCC,CAAF;AAoCA,CArCO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validate.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validate.js new file mode 100644 index 00000000..44a8d34e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validate.js @@ -0,0 +1,23 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = isValidNumber; + +var _validate_ = _interopRequireDefault(require("./validate_.js")); + +var _getNumberType = require("./getNumberType.js"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +// Finds out national phone number type (fixed line, mobile, etc) +function isValidNumber() { + var _normalizeArguments = (0, _getNumberType.normalizeArguments)(arguments), + input = _normalizeArguments.input, + options = _normalizeArguments.options, + metadata = _normalizeArguments.metadata; + + return (0, _validate_["default"])(input, options, metadata); +} +//# sourceMappingURL=validate.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validate.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validate.js.map new file mode 100644 index 00000000..1ba72cef --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"validate.js","names":["isValidNumber","normalizeArguments","arguments","input","options","metadata","_isValidNumber"],"sources":["../source/validate.js"],"sourcesContent":["import _isValidNumber from './validate_.js'\r\nimport { normalizeArguments } from './getNumberType.js'\r\n\r\n// Finds out national phone number type (fixed line, mobile, etc)\r\nexport default function isValidNumber()\r\n{\r\n\tconst { input, options, metadata } = normalizeArguments(arguments)\r\n\treturn _isValidNumber(input, options, metadata)\r\n}"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEA;AACe,SAASA,aAAT,GACf;EACC,0BAAqC,IAAAC,iCAAA,EAAmBC,SAAnB,CAArC;EAAA,IAAQC,KAAR,uBAAQA,KAAR;EAAA,IAAeC,OAAf,uBAAeA,OAAf;EAAA,IAAwBC,QAAxB,uBAAwBA,QAAxB;;EACA,OAAO,IAAAC,qBAAA,EAAeH,KAAf,EAAsBC,OAAtB,EAA+BC,QAA/B,CAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validate.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validate.test.js new file mode 100644 index 00000000..b1e4a500 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validate.test.js @@ -0,0 +1,96 @@ +"use strict"; + +var _metadataMin = _interopRequireDefault(require("../metadata.min.json")); + +var _validate = _interopRequireDefault(require("./validate.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function isValidNumber() { + for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) { + parameters[_key] = arguments[_key]; + } + + parameters.push(_metadataMin["default"]); + return _validate["default"].apply(this, parameters); +} + +describe('validate', function () { + it('should validate phone numbers', function () { + isValidNumber('+1-213-373-4253').should.equal(true); + isValidNumber('+1-213-373').should.equal(false); + isValidNumber('+1-213-373-4253', undefined).should.equal(true); + isValidNumber('(213) 373-4253', 'US').should.equal(true); + isValidNumber('(213) 37', 'US').should.equal(false); + isValidNumber({ + country: 'US', + phone: '2133734253' + }).should.equal(true); // No "types" info: should return `true`. + + isValidNumber('+380972423740').should.equal(true); + isValidNumber('0912345678', 'TW').should.equal(true); // Moible numbers starting 07624* are Isle of Man + // which has its own "country code" "IM" + // which is in the "GB" "country calling code" zone. + // So while this number is for "IM" it's still supposed to + // be valid when passed "GB" as a default country. + + isValidNumber('07624369230', 'GB').should.equal(true); + }); + it('should refine phone number validation in case extended regular expressions are set for a country', function () { + // Germany general validation must pass + isValidNumber('961111111', 'UZ').should.equal(true); // Different regular expressions for precise national number validation. + // `types` index in compressed array is `9` for v1. + // For v2 it's 10. + // For v3 it's 11. + + _metadataMin["default"].countries.UZ[11] = [["(?:6(?:1(?:22|3[124]|4[1-4]|5[123578]|64)|2(?:22|3[0-57-9]|41)|5(?:22|3[3-7]|5[024-8])|6\\d{2}|7(?:[23]\\d|7[69])|9(?:22|4[1-8]|6[135]))|7(?:0(?:5[4-9]|6[0146]|7[12456]|9[135-8])|1[12]\\d|2(?:22|3[1345789]|4[123579]|5[14])|3(?:2\\d|3[1578]|4[1-35-7]|5[1-57]|61)|4(?:2\\d|3[1-579]|7[1-79])|5(?:22|5[1-9]|6[1457])|6(?:22|3[12457]|4[13-8])|9(?:22|5[1-9])))\\d{5}"], ["6(?:1(?:2(?:98|2[01])|35[0-4]|50\\d|61[23]|7(?:[01][017]|4\\d|55|9[5-9]))|2(?:11\\d|2(?:[12]1|9[01379])|5(?:[126]\\d|3[0-4])|7\\d{2})|5(?:19[01]|2(?:27|9[26])|30\\d|59\\d|7\\d{2})|6(?:2(?:1[5-9]|2[0367]|38|41|52|60)|3[79]\\d|4(?:56|83)|7(?:[07]\\d|1[017]|3[07]|4[047]|5[057]|67|8[0178]|9[79])|9[0-3]\\d)|7(?:2(?:24|3[237]|4[5-9]|7[15-8])|5(?:7[12]|8[0589])|7(?:0\\d|[39][07])|9(?:0\\d|7[079]))|9(?:2(?:1[1267]|5\\d|3[01]|7[0-4])|5[67]\\d|6(?:2[0-26]|8\\d)|7\\d{2}))\\d{4}|7(?:0\\d{3}|1(?:13[01]|6(?:0[47]|1[67]|66)|71[3-69]|98\\d)|2(?:2(?:2[79]|95)|3(?:2[5-9]|6[0-6])|57\\d|7(?:0\\d|1[17]|2[27]|3[37]|44|5[057]|66|88))|3(?:2(?:1[0-6]|21|3[469]|7[159])|33\\d|5(?:0[0-4]|5[579]|9\\d)|7(?:[0-3579]\\d|4[0467]|6[67]|8[078])|9[4-6]\\d)|4(?:2(?:29|5[0257]|6[0-7]|7[1-57])|5(?:1[0-4]|8\\d|9[5-9])|7(?:0\\d|1[024589]|2[0127]|3[0137]|[46][07]|5[01]|7[5-9]|9[079])|9(?:7[015-9]|[89]\\d))|5(?:112|2(?:0\\d|2[29]|[49]4)|3[1568]\\d|52[6-9]|7(?:0[01578]|1[017]|[23]7|4[047]|[5-7]\\d|8[78]|9[079]))|6(?:2(?:2[1245]|4[2-4])|39\\d|41[179]|5(?:[349]\\d|5[0-2])|7(?:0[017]|[13]\\d|22|44|55|67|88))|9(?:22[128]|3(?:2[0-4]|7\\d)|57[05629]|7(?:2[05-9]|3[37]|4\\d|60|7[2579]|87|9[07])))\\d{4}|9[0-57-9]\\d{7}"]]; // Extended validation must not pass for an invalid phone number + + isValidNumber('961111111', 'UZ').should.equal(false); // Extended validation must pass for a valid phone number + + isValidNumber('912345678', 'UZ').should.equal(true); + }); + it('should work in edge cases', function () { + // No metadata + var thrower = function thrower() { + return (0, _validate["default"])('+78005553535'); + }; + + thrower.should["throw"]('`metadata` argument not passed'); // Non-phone-number characters in a phone number + + isValidNumber('+499821958a').should.equal(false); + isValidNumber('88005553535x', 'RU').should.equal(false); // Doesn't have `types` regexps in default metadata. + + isValidNumber({ + country: 'UA', + phone: '300000000' + }).should.equal(true); + isValidNumber({ + country: 'UA', + phone: '200000000' + }).should.equal(false); // Numerical `value` + + thrower = function thrower() { + return isValidNumber(88005553535, 'RU'); + }; + + thrower.should["throw"]('A phone number must either be a string or an object of shape { phone, [country] }.'); // Long country phone code + + isValidNumber('+3725555555').should.equal(true); // Invalid country + + thrower = function thrower() { + return isValidNumber({ + phone: '8005553535', + country: 'RUS' + }); + }; + + thrower.should["throw"]('Unknown country'); + }); + it('should accept phone number extensions', function () { + // International + isValidNumber('+12133734253 ext. 123').should.equal(true); // National + + isValidNumber('88005553535 x123', 'RU').should.equal(true); + }); +}); +//# sourceMappingURL=validate.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validate.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validate.test.js.map new file mode 100644 index 00000000..7ce0fa1a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validate.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"validate.test.js","names":["isValidNumber","parameters","push","metadata","_isValidNumber","apply","describe","it","should","equal","undefined","country","phone","countries","UZ","thrower"],"sources":["../source/validate.test.js"],"sourcesContent":["import metadata from '../metadata.min.json' assert { type: 'json' }\r\nimport _isValidNumber from './validate.js'\r\n\r\nfunction isValidNumber(...parameters) {\r\n\tparameters.push(metadata)\r\n\treturn _isValidNumber.apply(this, parameters)\r\n}\r\n\r\ndescribe('validate', () => {\r\n\tit('should validate phone numbers', () => {\r\n\t\tisValidNumber('+1-213-373-4253').should.equal(true)\r\n\t\tisValidNumber('+1-213-373').should.equal(false)\r\n\r\n\t\tisValidNumber('+1-213-373-4253', undefined).should.equal(true)\r\n\r\n\t\tisValidNumber('(213) 373-4253', 'US').should.equal(true)\r\n\t\tisValidNumber('(213) 37', 'US').should.equal(false)\r\n\r\n\t\tisValidNumber({ country: 'US', phone: '2133734253' }).should.equal(true)\r\n\r\n\t\t// No \"types\" info: should return `true`.\r\n\t\tisValidNumber('+380972423740').should.equal(true)\r\n\r\n\t\tisValidNumber('0912345678', 'TW').should.equal(true)\r\n\r\n\t\t// Moible numbers starting 07624* are Isle of Man\r\n\t\t// which has its own \"country code\" \"IM\"\r\n\t\t// which is in the \"GB\" \"country calling code\" zone.\r\n\t\t// So while this number is for \"IM\" it's still supposed to\r\n\t\t// be valid when passed \"GB\" as a default country.\r\n\t\tisValidNumber('07624369230', 'GB').should.equal(true)\r\n\t})\r\n\r\n\tit('should refine phone number validation in case extended regular expressions are set for a country', () => {\r\n\t\t// Germany general validation must pass\r\n\t\tisValidNumber('961111111', 'UZ').should.equal(true)\r\n\r\n\t\t// Different regular expressions for precise national number validation.\r\n\t\t// `types` index in compressed array is `9` for v1.\r\n\t\t// For v2 it's 10.\r\n\t\t// For v3 it's 11.\r\n\t\tmetadata.countries.UZ[11] =\r\n\t\t[\r\n\t\t\t[\"(?:6(?:1(?:22|3[124]|4[1-4]|5[123578]|64)|2(?:22|3[0-57-9]|41)|5(?:22|3[3-7]|5[024-8])|6\\\\d{2}|7(?:[23]\\\\d|7[69])|9(?:22|4[1-8]|6[135]))|7(?:0(?:5[4-9]|6[0146]|7[12456]|9[135-8])|1[12]\\\\d|2(?:22|3[1345789]|4[123579]|5[14])|3(?:2\\\\d|3[1578]|4[1-35-7]|5[1-57]|61)|4(?:2\\\\d|3[1-579]|7[1-79])|5(?:22|5[1-9]|6[1457])|6(?:22|3[12457]|4[13-8])|9(?:22|5[1-9])))\\\\d{5}\"],\r\n\t\t\t[\"6(?:1(?:2(?:98|2[01])|35[0-4]|50\\\\d|61[23]|7(?:[01][017]|4\\\\d|55|9[5-9]))|2(?:11\\\\d|2(?:[12]1|9[01379])|5(?:[126]\\\\d|3[0-4])|7\\\\d{2})|5(?:19[01]|2(?:27|9[26])|30\\\\d|59\\\\d|7\\\\d{2})|6(?:2(?:1[5-9]|2[0367]|38|41|52|60)|3[79]\\\\d|4(?:56|83)|7(?:[07]\\\\d|1[017]|3[07]|4[047]|5[057]|67|8[0178]|9[79])|9[0-3]\\\\d)|7(?:2(?:24|3[237]|4[5-9]|7[15-8])|5(?:7[12]|8[0589])|7(?:0\\\\d|[39][07])|9(?:0\\\\d|7[079]))|9(?:2(?:1[1267]|5\\\\d|3[01]|7[0-4])|5[67]\\\\d|6(?:2[0-26]|8\\\\d)|7\\\\d{2}))\\\\d{4}|7(?:0\\\\d{3}|1(?:13[01]|6(?:0[47]|1[67]|66)|71[3-69]|98\\\\d)|2(?:2(?:2[79]|95)|3(?:2[5-9]|6[0-6])|57\\\\d|7(?:0\\\\d|1[17]|2[27]|3[37]|44|5[057]|66|88))|3(?:2(?:1[0-6]|21|3[469]|7[159])|33\\\\d|5(?:0[0-4]|5[579]|9\\\\d)|7(?:[0-3579]\\\\d|4[0467]|6[67]|8[078])|9[4-6]\\\\d)|4(?:2(?:29|5[0257]|6[0-7]|7[1-57])|5(?:1[0-4]|8\\\\d|9[5-9])|7(?:0\\\\d|1[024589]|2[0127]|3[0137]|[46][07]|5[01]|7[5-9]|9[079])|9(?:7[015-9]|[89]\\\\d))|5(?:112|2(?:0\\\\d|2[29]|[49]4)|3[1568]\\\\d|52[6-9]|7(?:0[01578]|1[017]|[23]7|4[047]|[5-7]\\\\d|8[78]|9[079]))|6(?:2(?:2[1245]|4[2-4])|39\\\\d|41[179]|5(?:[349]\\\\d|5[0-2])|7(?:0[017]|[13]\\\\d|22|44|55|67|88))|9(?:22[128]|3(?:2[0-4]|7\\\\d)|57[05629]|7(?:2[05-9]|3[37]|4\\\\d|60|7[2579]|87|9[07])))\\\\d{4}|9[0-57-9]\\\\d{7}\"]\r\n\t\t]\r\n\r\n\t\t// Extended validation must not pass for an invalid phone number\r\n\t\tisValidNumber('961111111', 'UZ').should.equal(false)\r\n\r\n\t\t// Extended validation must pass for a valid phone number\r\n\t\tisValidNumber('912345678', 'UZ').should.equal(true)\r\n\t})\r\n\r\n\tit('should work in edge cases', () => {\r\n\t\t// No metadata\r\n\t\tlet thrower = () => _isValidNumber('+78005553535')\r\n\t\tthrower.should.throw('`metadata` argument not passed')\r\n\r\n\t\t// Non-phone-number characters in a phone number\r\n\t\tisValidNumber('+499821958a').should.equal(false)\r\n\t\tisValidNumber('88005553535x', 'RU').should.equal(false)\r\n\r\n\t\t// Doesn't have `types` regexps in default metadata.\r\n\t\tisValidNumber({ country: 'UA', phone: '300000000' }).should.equal(true)\r\n\t\tisValidNumber({ country: 'UA', phone: '200000000' }).should.equal(false)\r\n\r\n\t\t// Numerical `value`\r\n\t\tthrower = () => isValidNumber(88005553535, 'RU')\r\n\t\tthrower.should.throw('A phone number must either be a string or an object of shape { phone, [country] }.')\r\n\r\n\t\t// Long country phone code\r\n\t\tisValidNumber('+3725555555').should.equal(true)\r\n\r\n\t\t// Invalid country\r\n\t\tthrower = () => isValidNumber({ phone: '8005553535', country: 'RUS' })\r\n\t\tthrower.should.throw('Unknown country')\r\n\t})\r\n\r\n\tit('should accept phone number extensions', () => {\r\n\t\t// International\r\n\t\tisValidNumber('+12133734253 ext. 123').should.equal(true)\r\n\t\t// National\r\n\t\tisValidNumber('88005553535 x123', 'RU').should.equal(true)\r\n\t})\r\n})"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validatePhoneNumberLength.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validatePhoneNumberLength.js new file mode 100644 index 00000000..54601ae8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validatePhoneNumberLength.js @@ -0,0 +1,54 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = validatePhoneNumberLength; + +var _parsePhoneNumber = require("./parsePhoneNumber.js"); + +var _parsePhoneNumber_ = _interopRequireDefault(require("./parsePhoneNumber_.js")); + +var _ParseError = _interopRequireDefault(require("./ParseError.js")); + +var _metadata = _interopRequireDefault(require("./metadata.js")); + +var _checkNumberLength = _interopRequireDefault(require("./helpers/checkNumberLength.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function validatePhoneNumberLength() { + var _normalizeArguments = (0, _parsePhoneNumber.normalizeArguments)(arguments), + text = _normalizeArguments.text, + options = _normalizeArguments.options, + metadata = _normalizeArguments.metadata; + + options = _objectSpread(_objectSpread({}, options), {}, { + extract: false + }); // Parse phone number. + + try { + var phoneNumber = (0, _parsePhoneNumber_["default"])(text, options, metadata); + metadata = new _metadata["default"](metadata); + metadata.selectNumberingPlan(phoneNumber.countryCallingCode); + var result = (0, _checkNumberLength["default"])(phoneNumber.nationalNumber, metadata); + + if (result !== 'IS_POSSIBLE') { + return result; + } + } catch (error) { + /* istanbul ignore else */ + if (error instanceof _ParseError["default"]) { + return error.message; + } else { + throw error; + } + } +} +//# sourceMappingURL=validatePhoneNumberLength.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validatePhoneNumberLength.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validatePhoneNumberLength.js.map new file mode 100644 index 00000000..39c56cb3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validatePhoneNumberLength.js.map @@ -0,0 +1 @@ +{"version":3,"file":"validatePhoneNumberLength.js","names":["validatePhoneNumberLength","normalizeArguments","arguments","text","options","metadata","extract","phoneNumber","parsePhoneNumber","Metadata","selectNumberingPlan","countryCallingCode","result","checkNumberLength","nationalNumber","error","ParseError","message"],"sources":["../source/validatePhoneNumberLength.js"],"sourcesContent":["import { normalizeArguments } from './parsePhoneNumber.js'\r\nimport parsePhoneNumber from './parsePhoneNumber_.js'\r\nimport ParseError from './ParseError.js'\r\nimport Metadata from './metadata.js'\r\nimport checkNumberLength from './helpers/checkNumberLength.js'\r\n\r\nexport default function validatePhoneNumberLength() {\r\n\tlet { text, options, metadata } = normalizeArguments(arguments)\r\n\toptions = {\r\n\t\t...options,\r\n\t\textract: false\r\n\t}\r\n\r\n\t// Parse phone number.\r\n\ttry {\r\n\t\tconst phoneNumber = parsePhoneNumber(text, options, metadata)\r\n\t\tmetadata = new Metadata(metadata)\r\n\t\tmetadata.selectNumberingPlan(phoneNumber.countryCallingCode)\r\n\t\tconst result = checkNumberLength(phoneNumber.nationalNumber, metadata)\r\n\t\tif (result !== 'IS_POSSIBLE') {\r\n\t\t\treturn result\r\n\t\t}\r\n\t} catch (error) {\r\n\t\t/* istanbul ignore else */\r\n\t\tif (error instanceof ParseError) {\r\n\t\t\treturn error.message\r\n\t\t} else {\r\n\t\t\tthrow error\r\n\t\t}\r\n\t}\r\n}"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAEe,SAASA,yBAAT,GAAqC;EACnD,0BAAkC,IAAAC,oCAAA,EAAmBC,SAAnB,CAAlC;EAAA,IAAMC,IAAN,uBAAMA,IAAN;EAAA,IAAYC,OAAZ,uBAAYA,OAAZ;EAAA,IAAqBC,QAArB,uBAAqBA,QAArB;;EACAD,OAAO,mCACHA,OADG;IAENE,OAAO,EAAE;EAFH,EAAP,CAFmD,CAOnD;;EACA,IAAI;IACH,IAAMC,WAAW,GAAG,IAAAC,6BAAA,EAAiBL,IAAjB,EAAuBC,OAAvB,EAAgCC,QAAhC,CAApB;IACAA,QAAQ,GAAG,IAAII,oBAAJ,CAAaJ,QAAb,CAAX;IACAA,QAAQ,CAACK,mBAAT,CAA6BH,WAAW,CAACI,kBAAzC;IACA,IAAMC,MAAM,GAAG,IAAAC,6BAAA,EAAkBN,WAAW,CAACO,cAA9B,EAA8CT,QAA9C,CAAf;;IACA,IAAIO,MAAM,KAAK,aAAf,EAA8B;MAC7B,OAAOA,MAAP;IACA;EACD,CARD,CAQE,OAAOG,KAAP,EAAc;IACf;IACA,IAAIA,KAAK,YAAYC,sBAArB,EAAiC;MAChC,OAAOD,KAAK,CAACE,OAAb;IACA,CAFD,MAEO;MACN,MAAMF,KAAN;IACA;EACD;AACD"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validatePhoneNumberLength.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validatePhoneNumberLength.test.js new file mode 100644 index 00000000..f29d4531 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validatePhoneNumberLength.test.js @@ -0,0 +1,37 @@ +"use strict"; + +var _validatePhoneNumberLength2 = _interopRequireDefault(require("./validatePhoneNumberLength.js")); + +var _metadataMin = _interopRequireDefault(require("../metadata.min.json")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function validatePhoneNumberLength() { + for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) { + parameters[_key] = arguments[_key]; + } + + parameters.push(_metadataMin["default"]); + return _validatePhoneNumberLength2["default"].apply(this, parameters); +} + +describe('validatePhoneNumberLength', function () { + it('should detect whether a phone number length is valid', function () { + // Not a phone number. + validatePhoneNumberLength('+').should.equal('NOT_A_NUMBER'); + validatePhoneNumberLength('abcde').should.equal('NOT_A_NUMBER'); // No country supplied for a national number. + + validatePhoneNumberLength('123').should.equal('INVALID_COUNTRY'); // Too short while the number is not considered "viable" + // by Google's `libphonenumber`. + + validatePhoneNumberLength('2', 'US').should.equal('TOO_SHORT'); + validatePhoneNumberLength('+1', 'US').should.equal('TOO_SHORT'); + validatePhoneNumberLength('+12', 'US').should.equal('TOO_SHORT'); // Test national (significant) number length. + + validatePhoneNumberLength('444 1 44', 'TR').should.equal('TOO_SHORT'); + expect(validatePhoneNumberLength('444 1 444', 'TR')).to.be.undefined; + validatePhoneNumberLength('444 1 4444', 'TR').should.equal('INVALID_LENGTH'); + validatePhoneNumberLength('444 1 4444444444', 'TR').should.equal('TOO_LONG'); + }); +}); +//# sourceMappingURL=validatePhoneNumberLength.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validatePhoneNumberLength.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validatePhoneNumberLength.test.js.map new file mode 100644 index 00000000..4e520299 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validatePhoneNumberLength.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"validatePhoneNumberLength.test.js","names":["validatePhoneNumberLength","parameters","push","metadata","_validatePhoneNumberLength","apply","describe","it","should","equal","expect","to","be","undefined"],"sources":["../source/validatePhoneNumberLength.test.js"],"sourcesContent":["import _validatePhoneNumberLength from './validatePhoneNumberLength.js'\r\nimport metadata from '../metadata.min.json' assert { type: 'json' }\r\n\r\nfunction validatePhoneNumberLength(...parameters) {\r\n\tparameters.push(metadata)\r\n\treturn _validatePhoneNumberLength.apply(this, parameters)\r\n}\r\n\r\ndescribe('validatePhoneNumberLength', () => {\r\n\tit('should detect whether a phone number length is valid', () => {\r\n\t\t// Not a phone number.\r\n\t\tvalidatePhoneNumberLength('+').should.equal('NOT_A_NUMBER')\r\n\t\tvalidatePhoneNumberLength('abcde').should.equal('NOT_A_NUMBER')\r\n\r\n\t\t// No country supplied for a national number.\r\n\t\tvalidatePhoneNumberLength('123').should.equal('INVALID_COUNTRY')\r\n\r\n\t\t// Too short while the number is not considered \"viable\"\r\n\t\t// by Google's `libphonenumber`.\r\n\t\tvalidatePhoneNumberLength('2', 'US').should.equal('TOO_SHORT')\r\n\t\tvalidatePhoneNumberLength('+1', 'US').should.equal('TOO_SHORT')\r\n\t\tvalidatePhoneNumberLength('+12', 'US').should.equal('TOO_SHORT')\r\n\r\n\t\t// Test national (significant) number length.\r\n\t\tvalidatePhoneNumberLength('444 1 44', 'TR').should.equal('TOO_SHORT')\r\n\t\texpect(validatePhoneNumberLength('444 1 444', 'TR')).to.be.undefined\r\n\t\tvalidatePhoneNumberLength('444 1 4444', 'TR').should.equal('INVALID_LENGTH')\r\n\t\tvalidatePhoneNumberLength('444 1 4444444444', 'TR').should.equal('TOO_LONG')\r\n\t})\r\n})"],"mappings":";;AAAA;;AACA;;;;AAEA,SAASA,yBAAT,GAAkD;EAAA,kCAAZC,UAAY;IAAZA,UAAY;EAAA;;EACjDA,UAAU,CAACC,IAAX,CAAgBC,uBAAhB;EACA,OAAOC,sCAAA,CAA2BC,KAA3B,CAAiC,IAAjC,EAAuCJ,UAAvC,CAAP;AACA;;AAEDK,QAAQ,CAAC,2BAAD,EAA8B,YAAM;EAC3CC,EAAE,CAAC,sDAAD,EAAyD,YAAM;IAChE;IACAP,yBAAyB,CAAC,GAAD,CAAzB,CAA+BQ,MAA/B,CAAsCC,KAAtC,CAA4C,cAA5C;IACAT,yBAAyB,CAAC,OAAD,CAAzB,CAAmCQ,MAAnC,CAA0CC,KAA1C,CAAgD,cAAhD,EAHgE,CAKhE;;IACAT,yBAAyB,CAAC,KAAD,CAAzB,CAAiCQ,MAAjC,CAAwCC,KAAxC,CAA8C,iBAA9C,EANgE,CAQhE;IACA;;IACAT,yBAAyB,CAAC,GAAD,EAAM,IAAN,CAAzB,CAAqCQ,MAArC,CAA4CC,KAA5C,CAAkD,WAAlD;IACAT,yBAAyB,CAAC,IAAD,EAAO,IAAP,CAAzB,CAAsCQ,MAAtC,CAA6CC,KAA7C,CAAmD,WAAnD;IACAT,yBAAyB,CAAC,KAAD,EAAQ,IAAR,CAAzB,CAAuCQ,MAAvC,CAA8CC,KAA9C,CAAoD,WAApD,EAZgE,CAchE;;IACAT,yBAAyB,CAAC,UAAD,EAAa,IAAb,CAAzB,CAA4CQ,MAA5C,CAAmDC,KAAnD,CAAyD,WAAzD;IACAC,MAAM,CAACV,yBAAyB,CAAC,WAAD,EAAc,IAAd,CAA1B,CAAN,CAAqDW,EAArD,CAAwDC,EAAxD,CAA2DC,SAA3D;IACAb,yBAAyB,CAAC,YAAD,EAAe,IAAf,CAAzB,CAA8CQ,MAA9C,CAAqDC,KAArD,CAA2D,gBAA3D;IACAT,yBAAyB,CAAC,kBAAD,EAAqB,IAArB,CAAzB,CAAoDQ,MAApD,CAA2DC,KAA3D,CAAiE,UAAjE;EACA,CAnBC,CAAF;AAoBA,CArBO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validate_.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validate_.js new file mode 100644 index 00000000..a72aa079 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validate_.js @@ -0,0 +1,68 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = isValidNumber; + +var _metadata = _interopRequireDefault(require("./metadata.js")); + +var _matchesEntirely = _interopRequireDefault(require("./helpers/matchesEntirely.js")); + +var _getNumberType = _interopRequireDefault(require("./helpers/getNumberType.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +/** + * Checks if a given phone number is valid. + * + * If the `number` is a string, it will be parsed to an object, + * but only if it contains only valid phone number characters (including punctuation). + * If the `number` is an object, it is used as is. + * + * The optional `defaultCountry` argument is the default country. + * I.e. it does not restrict to just that country, + * e.g. in those cases where several countries share + * the same phone numbering rules (NANPA, Britain, etc). + * For example, even though the number `07624 369230` + * belongs to the Isle of Man ("IM" country code) + * calling `isValidNumber('07624369230', 'GB', metadata)` + * still returns `true` because the country is not restricted to `GB`, + * it's just that `GB` is the default one for the phone numbering rules. + * For restricting the country see `isValidNumberForRegion()` + * though restricting a country might not be a good idea. + * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion + * + * Examples: + * + * ```js + * isValidNumber('+78005553535', metadata) + * isValidNumber('8005553535', 'RU', metadata) + * isValidNumber('88005553535', 'RU', metadata) + * isValidNumber({ phone: '8005553535', country: 'RU' }, metadata) + * ``` + */ +function isValidNumber(input, options, metadata) { + // If assigning the `{}` default value is moved to the arguments above, + // code coverage would decrease for some weird reason. + options = options || {}; + metadata = new _metadata["default"](metadata); // This is just to support `isValidNumber({})` + // for cases when `parseNumber()` returns `{}`. + + if (!input.country) { + return false; + } + + metadata.selectNumberingPlan(input.country, input.countryCallingCode); // By default, countries only have type regexps when it's required for + // distinguishing different countries having the same `countryCallingCode`. + + if (metadata.hasTypes()) { + return (0, _getNumberType["default"])(input, options, metadata.metadata) !== undefined; + } // If there are no type regexps for this country in metadata then use + // `nationalNumberPattern` as a "better than nothing" replacement. + + + var national_number = options.v2 ? input.nationalNumber : input.phone; + return (0, _matchesEntirely["default"])(national_number, metadata.nationalNumberPattern()); +} +//# sourceMappingURL=validate_.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validate_.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validate_.js.map new file mode 100644 index 00000000..55a30651 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/build/validate_.js.map @@ -0,0 +1 @@ +{"version":3,"file":"validate_.js","names":["isValidNumber","input","options","metadata","Metadata","country","selectNumberingPlan","countryCallingCode","hasTypes","getNumberType","undefined","national_number","v2","nationalNumber","phone","matchesEntirely","nationalNumberPattern"],"sources":["../source/validate_.js"],"sourcesContent":["import Metadata from './metadata.js'\r\nimport matchesEntirely from './helpers/matchesEntirely.js'\r\nimport getNumberType from './helpers/getNumberType.js'\r\n\r\n/**\r\n * Checks if a given phone number is valid.\r\n *\r\n * If the `number` is a string, it will be parsed to an object,\r\n * but only if it contains only valid phone number characters (including punctuation).\r\n * If the `number` is an object, it is used as is.\r\n *\r\n * The optional `defaultCountry` argument is the default country.\r\n * I.e. it does not restrict to just that country,\r\n * e.g. in those cases where several countries share\r\n * the same phone numbering rules (NANPA, Britain, etc).\r\n * For example, even though the number `07624 369230`\r\n * belongs to the Isle of Man (\"IM\" country code)\r\n * calling `isValidNumber('07624369230', 'GB', metadata)`\r\n * still returns `true` because the country is not restricted to `GB`,\r\n * it's just that `GB` is the default one for the phone numbering rules.\r\n * For restricting the country see `isValidNumberForRegion()`\r\n * though restricting a country might not be a good idea.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n *\r\n * Examples:\r\n *\r\n * ```js\r\n * isValidNumber('+78005553535', metadata)\r\n * isValidNumber('8005553535', 'RU', metadata)\r\n * isValidNumber('88005553535', 'RU', metadata)\r\n * isValidNumber({ phone: '8005553535', country: 'RU' }, metadata)\r\n * ```\r\n */\r\nexport default function isValidNumber(input, options, metadata)\r\n{\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\t// This is just to support `isValidNumber({})`\r\n\t// for cases when `parseNumber()` returns `{}`.\r\n\tif (!input.country)\r\n\t{\r\n\t\treturn false\r\n\t}\r\n\r\n\tmetadata.selectNumberingPlan(input.country, input.countryCallingCode)\r\n\r\n\t// By default, countries only have type regexps when it's required for\r\n\t// distinguishing different countries having the same `countryCallingCode`.\r\n\tif (metadata.hasTypes())\r\n\t{\r\n\t\treturn getNumberType(input, options, metadata.metadata) !== undefined\r\n\t}\r\n\r\n\t// If there are no type regexps for this country in metadata then use\r\n\t// `nationalNumberPattern` as a \"better than nothing\" replacement.\r\n\tconst national_number = options.v2 ? input.nationalNumber : input.phone\r\n\treturn matchesEntirely(national_number, metadata.nationalNumberPattern())\r\n}"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,aAAT,CAAuBC,KAAvB,EAA8BC,OAA9B,EAAuCC,QAAvC,EACf;EACC;EACA;EACAD,OAAO,GAAGA,OAAO,IAAI,EAArB;EAEAC,QAAQ,GAAG,IAAIC,oBAAJ,CAAaD,QAAb,CAAX,CALD,CAOC;EACA;;EACA,IAAI,CAACF,KAAK,CAACI,OAAX,EACA;IACC,OAAO,KAAP;EACA;;EAEDF,QAAQ,CAACG,mBAAT,CAA6BL,KAAK,CAACI,OAAnC,EAA4CJ,KAAK,CAACM,kBAAlD,EAdD,CAgBC;EACA;;EACA,IAAIJ,QAAQ,CAACK,QAAT,EAAJ,EACA;IACC,OAAO,IAAAC,yBAAA,EAAcR,KAAd,EAAqBC,OAArB,EAA8BC,QAAQ,CAACA,QAAvC,MAAqDO,SAA5D;EACA,CArBF,CAuBC;EACA;;;EACA,IAAMC,eAAe,GAAGT,OAAO,CAACU,EAAR,GAAaX,KAAK,CAACY,cAAnB,GAAoCZ,KAAK,CAACa,KAAlE;EACA,OAAO,IAAAC,2BAAA,EAAgBJ,eAAhB,EAAiCR,QAAQ,CAACa,qBAAT,EAAjC,CAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-js.min.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-js.min.js new file mode 100644 index 00000000..3661afa4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-js.min.js @@ -0,0 +1,2 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).libphonenumber={})}(this,(function(t){"use strict";var e={version:4,country_calling_codes:{1:["US","AG","AI","AS","BB","BM","BS","CA","DM","DO","GD","GU","JM","KN","KY","LC","MP","MS","PR","SX","TC","TT","VC","VG","VI"],7:["RU","KZ"],20:["EG"],27:["ZA"],30:["GR"],31:["NL"],32:["BE"],33:["FR"],34:["ES"],36:["HU"],39:["IT","VA"],40:["RO"],41:["CH"],43:["AT"],44:["GB","GG","IM","JE"],45:["DK"],46:["SE"],47:["NO","SJ"],48:["PL"],49:["DE"],51:["PE"],52:["MX"],53:["CU"],54:["AR"],55:["BR"],56:["CL"],57:["CO"],58:["VE"],60:["MY"],61:["AU","CC","CX"],62:["ID"],63:["PH"],64:["NZ"],65:["SG"],66:["TH"],81:["JP"],82:["KR"],84:["VN"],86:["CN"],90:["TR"],91:["IN"],92:["PK"],93:["AF"],94:["LK"],95:["MM"],98:["IR"],211:["SS"],212:["MA","EH"],213:["DZ"],216:["TN"],218:["LY"],220:["GM"],221:["SN"],222:["MR"],223:["ML"],224:["GN"],225:["CI"],226:["BF"],227:["NE"],228:["TG"],229:["BJ"],230:["MU"],231:["LR"],232:["SL"],233:["GH"],234:["NG"],235:["TD"],236:["CF"],237:["CM"],238:["CV"],239:["ST"],240:["GQ"],241:["GA"],242:["CG"],243:["CD"],244:["AO"],245:["GW"],246:["IO"],247:["AC"],248:["SC"],249:["SD"],250:["RW"],251:["ET"],252:["SO"],253:["DJ"],254:["KE"],255:["TZ"],256:["UG"],257:["BI"],258:["MZ"],260:["ZM"],261:["MG"],262:["RE","YT"],263:["ZW"],264:["NA"],265:["MW"],266:["LS"],267:["BW"],268:["SZ"],269:["KM"],290:["SH","TA"],291:["ER"],297:["AW"],298:["FO"],299:["GL"],350:["GI"],351:["PT"],352:["LU"],353:["IE"],354:["IS"],355:["AL"],356:["MT"],357:["CY"],358:["FI","AX"],359:["BG"],370:["LT"],371:["LV"],372:["EE"],373:["MD"],374:["AM"],375:["BY"],376:["AD"],377:["MC"],378:["SM"],380:["UA"],381:["RS"],382:["ME"],383:["XK"],385:["HR"],386:["SI"],387:["BA"],389:["MK"],420:["CZ"],421:["SK"],423:["LI"],500:["FK"],501:["BZ"],502:["GT"],503:["SV"],504:["HN"],505:["NI"],506:["CR"],507:["PA"],508:["PM"],509:["HT"],590:["GP","BL","MF"],591:["BO"],592:["GY"],593:["EC"],594:["GF"],595:["PY"],596:["MQ"],597:["SR"],598:["UY"],599:["CW","BQ"],670:["TL"],672:["NF"],673:["BN"],674:["NR"],675:["PG"],676:["TO"],677:["SB"],678:["VU"],679:["FJ"],680:["PW"],681:["WF"],682:["CK"],683:["NU"],685:["WS"],686:["KI"],687:["NC"],688:["TV"],689:["PF"],690:["TK"],691:["FM"],692:["MH"],850:["KP"],852:["HK"],853:["MO"],855:["KH"],856:["LA"],880:["BD"],886:["TW"],960:["MV"],961:["LB"],962:["JO"],963:["SY"],964:["IQ"],965:["KW"],966:["SA"],967:["YE"],968:["OM"],970:["PS"],971:["AE"],972:["IL"],973:["BH"],974:["QA"],975:["BT"],976:["MN"],977:["NP"],992:["TJ"],993:["TM"],994:["AZ"],995:["GE"],996:["KG"],998:["UZ"]},countries:{AC:["247","00","(?:[01589]\\d|[46])\\d{4}",[5,6]],AD:["376","00","(?:1|6\\d)\\d{7}|[135-9]\\d{5}",[6,8,9],[["(\\d{3})(\\d{3})","$1 $2",["[135-9]"]],["(\\d{4})(\\d{4})","$1 $2",["1"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]]],AE:["971","00","(?:[4-7]\\d|9[0-689])\\d{7}|800\\d{2,9}|[2-4679]\\d{7}",[5,6,7,8,9,10,11,12],[["(\\d{3})(\\d{2,9})","$1 $2",["60|8"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[236]|[479][2-8]"],"0$1"],["(\\d{3})(\\d)(\\d{5})","$1 $2 $3",["[479]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"]],"0"],AF:["93","00","[2-7]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"]],"0"],AG:["1","011","(?:268|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([457]\\d{6})$","268$1",0,"268"],AI:["1","011","(?:264|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2457]\\d{6})$","264$1",0,"264"],AL:["355","00","(?:700\\d\\d|900)\\d{3}|8\\d{5,7}|(?:[2-5]|6\\d)\\d{7}",[6,7,8,9],[["(\\d{3})(\\d{3,4})","$1 $2",["80|9"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["4[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2358][2-5]|4"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["[23578]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["6"],"0$1"]],"0"],AM:["374","00","(?:[1-489]\\d|55|60|77)\\d{6}",[8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[89]0"],"0 $1"],["(\\d{3})(\\d{5})","$1 $2",["2|3[12]"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["1|47"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[3-9]"],"0$1"]],"0"],AO:["244","00","[29]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[29]"]]]],AR:["54","00","(?:11|[89]\\d\\d)\\d{8}|[2368]\\d{9}",[10,11],[["(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])","2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["1"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2-$3",["[23]"],"0$1",1],["(\\d)(\\d{4})(\\d{2})(\\d{4})","$2 15-$3-$4",["9(?:2[2-469]|3[3-578])","9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))","9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",0,"$1 $2 $3-$4"],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 15-$3-$4",["91"],"0$1",0,"$1 $2 $3-$4"],["(\\d{3})(\\d{3})(\\d{5})","$1-$2-$3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 15-$3-$4",["9"],"0$1",0,"$1 $2 $3-$4"]],"0",0,"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?","9$1"],AS:["1","011","(?:[58]\\d\\d|684|900)\\d{7}",[10],0,"1",0,"1|([267]\\d{6})$","684$1",0,"684"],AT:["43","00","1\\d{3,12}|2\\d{6,12}|43(?:(?:0\\d|5[02-9])\\d{3,9}|2\\d{4,5}|[3467]\\d{4}|8\\d{4,6}|9\\d{4,7})|5\\d{4,12}|8\\d{7,12}|9\\d{8,12}|(?:[367]\\d|4[0-24-9])\\d{4,11}",[4,5,6,7,8,9,10,11,12,13],[["(\\d)(\\d{3,12})","$1 $2",["1(?:11|[2-9])"],"0$1"],["(\\d{3})(\\d{2})","$1 $2",["517"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["5[079]"],"0$1"],["(\\d{3})(\\d{3,10})","$1 $2",["(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]"],"0$1"],["(\\d{4})(\\d{3,9})","$1 $2",["[2-467]|5[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["5"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,7})","$1 $2 $3",["5"],"0$1"]],"0"],AU:["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{7}(?:\\d(?:\\d{2})?)?|8[0-24-9]\\d{7})|[2-478]\\d{8}|1\\d{4,7}",[5,6,7,8,9,10,12],[["(\\d{2})(\\d{3,4})","$1 $2",["16"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,4})","$1 $2 $3",["16"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["14|4"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[2378]"],"(0$1)"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:30|[89])"]]],"0",0,"0|(183[12])",0,0,0,[["(?:(?:2(?:[0-26-9]\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\d|2[0-8]))\\d{3}|8(?:51(?:0(?:0[03-9]|[12479]\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\d|7[89]|9[0-4]))|(?:6[0-8]|[78]\\d)\\d{3}|9(?:[02-9]\\d{3}|1(?:(?:[0-58]\\d|6[0135-9])\\d|7(?:0[0-24-9]|[1-9]\\d)|9(?:[0-46-9]\\d|5[0-79])))))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,["163\\d{2,6}",[5,6,7,8,9]],["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],AW:["297","00","(?:[25-79]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[25-9]"]]]],AX:["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","2\\d{4,9}|35\\d{4,5}|(?:60\\d\\d|800)\\d{4,6}|7\\d{5,11}|(?:[14]\\d|3[0-46-9]|50)\\d{4,8}",[5,6,7,8,9,10,11,12],0,"0",0,0,0,0,"18",0,"00"],AZ:["994","00","365\\d{6}|(?:[124579]\\d|60|88)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[28]|2|365|46","1[28]|2|365[45]|46","1[28]|2|365(?:4|5[02])|46"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[13-9]"],"0$1"]],"0"],BA:["387","00","6\\d{8}|(?:[35689]\\d|49|70)\\d{6}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["6[1-3]|[7-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2-$3",["[3-5]|6[56]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["6"],"0$1"]],"0"],BB:["1","011","(?:246|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","246$1",0,"246"],BD:["880","00","[1-469]\\d{9}|8[0-79]\\d{7,8}|[2-79]\\d{8}|[2-9]\\d{7}|[3-9]\\d{6}|[57-9]\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{4,6})","$1-$2",["31[5-8]|[459]1"],"0$1"],["(\\d{3})(\\d{3,7})","$1-$2",["3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:28|4[14]|5)|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]"],"0$1"],["(\\d{4})(\\d{3,6})","$1-$2",["[13-9]|22"],"0$1"],["(\\d)(\\d{7,8})","$1-$2",["2"],"0$1"]],"0"],BE:["32","00","4\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:80|9)0"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[239]|4[23]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[15-8]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4"],"0$1"]],"0"],BF:["226","00","[025-7]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[025-7]"]]]],BG:["359","00","[2-7]\\d{6,7}|[89]\\d{6,8}|2\\d{5}",[6,7,8,9],[["(\\d)(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["43[1-6]|70[1-9]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:70|8)0"],"0$1"],["(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3",["43[1-7]|7"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[48]|9[08]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"]],"0"],BH:["973","00","[136-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[13679]|8[047]"]]]],BI:["257","00","(?:[267]\\d|31)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2367]"]]]],BJ:["229","00","(?:[25689]\\d|40)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24-689]"]]]],BL:["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[["590(?:2[7-9]|5[12]|87)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],BM:["1","011","(?:441|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","441$1",0,"441"],BN:["673","00","[2-578]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-578]"]]]],BO:["591","00(?:1\\d)?","(?:[2-467]\\d\\d|8001)\\d{5}",[8,9],[["(\\d)(\\d{7})","$1 $2",["[23]|4[46]"]],["(\\d{8})","$1",["[67]"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["8"]]],"0",0,"0(1\\d)?"],BQ:["599","00","(?:[34]1|7\\d)\\d{5}",[7],0,0,0,0,0,0,"[347]"],BR:["55","00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)","(?:[1-46-9]\\d\\d|5(?:[0-46-9]\\d|5[0-46-9]))\\d{8}|[1-9]\\d{9}|[3589]\\d{8}|[34]\\d{7}",[8,9,10,11],[["(\\d{4})(\\d{4})","$1-$2",["300|4(?:0[02]|37)","4(?:02|37)0|[34]00"]],["(\\d{3})(\\d{2,3})(\\d{4})","$1 $2 $3",["(?:[358]|90)0"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]"],"($1)"],["(\\d{2})(\\d{5})(\\d{4})","$1 $2-$3",["[16][1-9]|[2-57-9]"],"($1)"]],"0",0,"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\d{10,11}))?","$2"],BS:["1","011","(?:242|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([3-8]\\d{6})$","242$1",0,"242"],BT:["975","00","[17]\\d{7}|[2-8]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[2-68]|7[246]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[67]|7"]]]],BW:["267","00","(?:0800|(?:[37]|800)\\d)\\d{6}|(?:[2-6]\\d|90)\\d{5}",[7,8,10],[["(\\d{2})(\\d{5})","$1 $2",["90"]],["(\\d{3})(\\d{4})","$1 $2",["[24-6]|3[15-79]"]],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37]"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["8"]]]],BY:["375","810","(?:[12]\\d|33|44|902)\\d{7}|8(?:0[0-79]\\d{5,7}|[1-7]\\d{9})|8(?:1[0-489]|[5-79]\\d)\\d{7}|8[1-79]\\d{6,7}|8[0-79]\\d{5}|8\\d{5}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3})","$1 $2",["800"],"8 $1"],["(\\d{3})(\\d{2})(\\d{2,4})","$1 $2 $3",["800"],"8 $1"],["(\\d{4})(\\d{2})(\\d{3})","$1 $2-$3",["1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])","1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])"],"8 0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["1(?:[56]|7[467])|2[1-3]"],"8 0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-4]"],"8 0$1"],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["[89]"],"8 $1"]],"8",0,"0|80?",0,0,0,0,"8~10"],BZ:["501","00","(?:0800\\d|[2-8])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1-$2",["[2-8]"]],["(\\d)(\\d{3})(\\d{4})(\\d{3})","$1-$2-$3-$4",["0"]]]],CA:["1","011","(?:[2-8]\\d|90)\\d{8}|3\\d{6}",[7,10],0,"1",0,0,0,0,0,[["(?:2(?:04|[23]6|[48]9|50|63)|3(?:06|43|6[578])|4(?:03|1[68]|3[178]|50|68|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|13|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\d{6}",[10]],["",[10]],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",[10]],["900[2-9]\\d{6}",[10]],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|(?:5(?:00|2[125-7]|33|44|66|77|88)|622)[2-9]\\d{6}",[10]],0,["310\\d{4}",[7]],0,["600[2-9]\\d{6}",[10]]]],CC:["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[["8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\d|70[23]|959))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,0,["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],CD:["243","00","[189]\\d{8}|[1-68]\\d{6}",[7,9],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[1-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]"],"0$1"]],"0"],CF:["236","00","(?:[27]\\d{3}|8776)\\d{4}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[278]"]]]],CG:["242","00","222\\d{6}|(?:0\\d|80)\\d{7}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["8"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[02]"]]]],CH:["41","00","8\\d{11}|[2-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8[047]|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-79]|81"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["8"],"0$1"]],"0"],CI:["225","00","[02]\\d{9}",[10],[["(\\d{2})(\\d{2})(\\d)(\\d{5})","$1 $2 $3 $4",["2"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3 $4",["0"]]]],CK:["682","00","[2-578]\\d{4}",[5],[["(\\d{2})(\\d{3})","$1 $2",["[2-578]"]]]],CL:["56","(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0","12300\\d{6}|6\\d{9,10}|[2-9]\\d{8}",[9,10,11],[["(\\d{5})(\\d{4})","$1 $2",["219","2196"],"($1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["44"]],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2[1-36]"],"($1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["9[2-9]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])"],"($1)"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["60|8"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{3})(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3 $4",["60"]]]],CM:["237","00","[26]\\d{8}|88\\d{6,7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["88"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[26]|88"]]]],CN:["86","00|1(?:[12]\\d|79)\\d\\d00","1[127]\\d{8,9}|2\\d{9}(?:\\d{2})?|[12]\\d{6,7}|86\\d{6}|(?:1[03-689]\\d|6)\\d{7,9}|(?:[3-579]\\d|8[0-57-9])\\d{6,9}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5,6})","$1 $2",["(?:10|2[0-57-9])[19]","(?:10|2[0-57-9])(?:10|9[56])","(?:10|2[0-57-9])(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{5,6})","$1 $2",["3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]","(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))[19]","85[23](?:10|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:10|9[56])","85[23](?:100|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["(?:4|80)0"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["10|2(?:[02-57-9]|1[1-9])","10|2(?:[02-57-9]|1[1-9])","10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]"],"0$1",1],["(\\d{3})(\\d{7,8})","$1 $2",["9"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["80"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[3-578]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["1[3-9]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3 $4",["[12]"],"0$1",1]],"0",0,"0|(1(?:[12]\\d|79)\\d\\d)",0,0,0,0,"00"],CO:["57","00(?:4(?:[14]4|56)|[579])","(?:60\\d\\d|9101)\\d{6}|(?:1\\d|3)\\d{9}",[10,11],[["(\\d{3})(\\d{7})","$1 $2",["6"],"($1)"],["(\\d{3})(\\d{7})","$1 $2",["3[0-357]|91"]],["(\\d)(\\d{3})(\\d{7})","$1-$2-$3",["1"],"0$1",0,"$1 $2 $3"]],"0",0,"0(4(?:[14]4|56)|[579])?"],CR:["506","00","(?:8\\d|90)\\d{8}|(?:[24-8]\\d{3}|3005)\\d{4}",[8,10],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[3-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[89]"]]],0,0,"(19(?:0[0-2468]|1[09]|20|66|77|99))"],CU:["53","119","[27]\\d{6,7}|[34]\\d{5,7}|(?:5|8\\d\\d)\\d{7}",[6,7,8,10],[["(\\d{2})(\\d{4,6})","$1 $2",["2[1-4]|[34]"],"(0$1)"],["(\\d)(\\d{6,7})","$1 $2",["7"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["5"],"0$1"],["(\\d{3})(\\d{7})","$1 $2",["8"],"0$1"]],"0"],CV:["238","0","(?:[2-59]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[2-589]"]]]],CW:["599","00","(?:[34]1|60|(?:7|9\\d)\\d)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[3467]"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["9[4-8]"]]],0,0,0,0,0,"[69]"],CX:["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[["8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\d|7(?:0[01]|1[0-2])|958))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,0,["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],CY:["357","00","(?:[279]\\d|[58]0)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[257-9]"]]]],CZ:["420","00","(?:[2-578]\\d|60)\\d{7}|9\\d{8,11}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]|9[015-7]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3 $4",["96"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]]],DE:["49","00","[2579]\\d{5,14}|49(?:[34]0|69|8\\d)\\d\\d?|49(?:37|49|60|7[089]|9\\d)\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\d{1,8}|(?:1|[368]\\d|4[0-8])\\d{3,13}|49(?:[015]\\d|2[13]|31|[46][1-8])\\d{1,9}",[4,5,6,7,8,9,10,11,12,13,14,15],[["(\\d{2})(\\d{3,13})","$1 $2",["3[02]|40|[68]9"],"0$1"],["(\\d{3})(\\d{3,12})","$1 $2",["2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1","2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1"],"0$1"],["(\\d{4})(\\d{2,11})","$1 $2",["[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]","[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["138"],"0$1"],["(\\d{5})(\\d{2,10})","$1 $2",["3"],"0$1"],["(\\d{3})(\\d{5,11})","$1 $2",["181"],"0$1"],["(\\d{3})(\\d)(\\d{4,10})","$1 $2 $3",["1(?:3|80)|9"],"0$1"],["(\\d{3})(\\d{7,8})","$1 $2",["1[67]"],"0$1"],["(\\d{3})(\\d{7,12})","$1 $2",["8"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["185","1850","18500"],"0$1"],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["18[68]"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["15[0568]"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["15[1279]"],"0$1"],["(\\d{3})(\\d{8})","$1 $2",["18"],"0$1"],["(\\d{3})(\\d{2})(\\d{7,8})","$1 $2 $3",["1(?:6[023]|7)"],"0$1"],["(\\d{4})(\\d{2})(\\d{7})","$1 $2 $3",["15[279]"],"0$1"],["(\\d{3})(\\d{2})(\\d{8})","$1 $2 $3",["15"],"0$1"]],"0"],DJ:["253","00","(?:2\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[27]"]]]],DK:["45","00","[2-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-9]"]]]],DM:["1","011","(?:[58]\\d\\d|767|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","767$1",0,"767"],DO:["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,0,0,0,"8001|8[024]9"],DZ:["213","00","(?:[1-4]|[5-79]\\d|80)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["9"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-8]"],"0$1"]],"0"],EC:["593","00","1\\d{9,10}|(?:[2-7]|9\\d)\\d{7}",[8,9,10,11],[["(\\d)(\\d{3})(\\d{4})","$1 $2-$3",["[2-7]"],"(0$1)",0,"$1-$2-$3"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{3})(\\d{3,4})","$1 $2 $3",["1"]]],"0"],EE:["372","00","8\\d{9}|[4578]\\d{7}|(?:[3-8]\\d|90)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88","[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88"]],["(\\d{4})(\\d{3,4})","$1 $2",["[45]|8(?:00|[1-49])","[45]|8(?:00[1-9]|[1-49])"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]]],EG:["20","00","[189]\\d{8,9}|[24-6]\\d{8}|[135]\\d{7}",[8,9,10],[["(\\d)(\\d{7,8})","$1 $2",["[23]"],"0$1"],["(\\d{2})(\\d{6,7})","$1 $2",["1[35]|[4-6]|8[2468]|9[235-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[189]"],"0$1"]],"0"],EH:["212","00","[5-8]\\d{8}",[9],0,"0",0,0,0,0,"528[89]"],ER:["291","00","[178]\\d{6}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[178]"],"0$1"]],"0"],ES:["34","00","[5-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]00"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-9]"]]]],ET:["251","00","(?:11|[2-579]\\d)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-579]"],"0$1"]],"0"],FI:["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","[1-35689]\\d{4}|7\\d{10,11}|(?:[124-7]\\d|3[0-46-9])\\d{8}|[1-9]\\d{5,8}",[5,6,7,8,9,10,11,12],[["(\\d)(\\d{4,9})","$1 $2",["[2568][1-8]|3(?:0[1-9]|[1-9])|9"],"0$1"],["(\\d{3})(\\d{3,7})","$1 $2",["[12]00|[368]|70[07-9]"],"0$1"],["(\\d{2})(\\d{4,8})","$1 $2",["[1245]|7[135]"],"0$1"],["(\\d{2})(\\d{6,10})","$1 $2",["7"],"0$1"]],"0",0,0,0,0,"1[03-79]|[2-9]",0,"00"],FJ:["679","0(?:0|52)","45\\d{5}|(?:0800\\d|[235-9])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1 $2",["[235-9]|45"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]]],0,0,0,0,0,0,0,"00"],FK:["500","00","[2-7]\\d{4}",[5]],FM:["691","00","(?:[39]\\d\\d|820)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[389]"]]]],FO:["298","00","[2-9]\\d{5}",[6],[["(\\d{6})","$1",["[2-9]"]]],0,0,"(10(?:01|[12]0|88))"],FR:["33","00","[1-9]\\d{8}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0 $1"],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[1-79]"],"0$1"]],"0"],GA:["241","00","(?:[067]\\d|11)\\d{6}|[2-7]\\d{6}",[7,8],[["(\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-7]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["11|[67]"],"0$1"]],0,0,"0(11\\d{6}|60\\d{6}|61\\d{6}|6[256]\\d{6}|7[467]\\d{6})","$1"],GB:["44","00","[1-357-9]\\d{9}|[18]\\d{8}|8\\d{6}",[7,9,10],[["(\\d{3})(\\d{4})","$1 $2",["800","8001","80011","800111","8001111"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["845","8454","84546","845464"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["800"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["1(?:38|5[23]|69|76|94)","1(?:(?:38|69)7|5(?:24|39)|768|946)","1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["1(?:[2-69][02-9]|[78])"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[25]|7(?:0|6[02-9])","[25]|7(?:0|6(?:[03-9]|2[356]))"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[1389]"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:1(?:3(?:[0-58]\\d\\d|73[0235])|4(?:[0-5]\\d\\d|69[7-9]|70[013579])|(?:(?:5[0-26-9]|[78][0-49])\\d|6(?:[0-4]\\d|50))\\d)|2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\d)\\d\\d|1(?:[0-7]\\d\\d|8(?:[02]\\d|1[0-246-9])))|(?:3(?:0\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\d\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\d{3})\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\d)|76\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\d|7[4-79])|295[5-7]|35[34]\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\d{3}",[9,10]],["7(?:457[0-57-9]|700[01]|911[028])\\d{5}|7(?:[1-3]\\d\\d|4(?:[0-46-9]\\d|5[0-689])|5(?:0[0-8]|[13-9]\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\d|8[02-9]|9[0-689])|8(?:[014-9]\\d|[23][0-8])|9(?:[024-9]\\d|1[02-9]|3[0-689]))\\d{6}",[10]],["80[08]\\d{7}|800\\d{6}|8001111"],["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[2-49]))\\d{7}|845464\\d",[7,10]],["70\\d{8}",[10]],0,["(?:3[0347]|55)\\d{8}",[10]],["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}",[10]],["56\\d{8}",[10]]],0," x"],GD:["1","011","(?:473|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","473$1",0,"473"],GE:["995","00","(?:[3-57]\\d\\d|800)\\d{6}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["32"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[57]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[348]"],"0$1"]],"0"],GF:["594","00","(?:[56]94|80\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0"],GG:["44","00","(?:1481|[357-9]\\d{3})\\d{6}|8\\d{6}(?:\\d{2})?",[7,9,10],0,"0",0,"0|([25-9]\\d{5})$","1481$1",0,0,[["1481[25-9]\\d{5}",[10]],["7(?:(?:781|839)\\d|911[17])\\d{5}",[10]],["80[08]\\d{7}|800\\d{6}|8001111"],["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[0-3]))\\d{7}|845464\\d",[7,10]],["70\\d{8}",[10]],0,["(?:3[0347]|55)\\d{8}",[10]],["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}",[10]],["56\\d{8}",[10]]]],GH:["233","00","(?:[235]\\d{3}|800)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[235]"],"0$1"]],"0"],GI:["350","00","(?:[25]\\d\\d|606)\\d{5}",[8],[["(\\d{3})(\\d{5})","$1 $2",["2"]]]],GL:["299","00","(?:19|[2-689]\\d|70)\\d{4}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["19|[2-9]"]]]],GM:["220","00","[2-9]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]]],GN:["224","00","722\\d{6}|(?:3|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["3"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[67]"]]]],GP:["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["590(?:0[1-68]|[14][0-24-9]|2[0-68]|3[1289]|5[3-579]|6[0-289]|7[08]|8[0-689]|9\\d)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],GQ:["240","00","222\\d{6}|(?:3\\d|55|[89]0)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235]"]],["(\\d{3})(\\d{6})","$1 $2",["[89]"]]]],GR:["30","00","5005000\\d{3}|8\\d{9,11}|(?:[269]\\d|70)\\d{8}",[10,11,12],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["21|7"]],["(\\d{4})(\\d{6})","$1 $2",["2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2689]"]],["(\\d{3})(\\d{3,4})(\\d{5})","$1 $2 $3",["8"]]]],GT:["502","00","(?:1\\d{3}|[2-7])\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]]],GU:["1","011","(?:[58]\\d\\d|671|900)\\d{7}",[10],0,"1",0,"1|([3-9]\\d{6})$","671$1",0,"671"],GW:["245","00","[49]\\d{8}|4\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["40"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"]]]],GY:["592","001","9008\\d{3}|(?:[2-467]\\d\\d|862)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-46-9]"]]]],HK:["852","00(?:30|5[09]|[126-9]?)","8[0-46-9]\\d{6,7}|9\\d{4,7}|(?:[2-7]|9\\d{3})\\d{7}",[5,6,7,8,9,11],[["(\\d{3})(\\d{2,5})","$1 $2",["900","9003"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[1-4]|9(?:0[1-9]|[1-8])"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]],["(\\d{3})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]],0,0,0,0,0,0,0,"00"],HN:["504","00","8\\d{10}|[237-9]\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1-$2",["[237-9]"]]]],HR:["385","00","(?:[24-69]\\d|3[0-79])\\d{7}|80\\d{5,7}|[1-79]\\d{7}|6\\d{5,6}",[6,7,8,9],[["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["6[01]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{4})(\\d{3})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-5]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"]],"0"],HT:["509","00","[2-489]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[2-489]"]]]],HU:["36","00","[235-7]\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"06 $1"]],"06"],ID:["62","00[89]","(?:(?:00[1-9]|8\\d)\\d{4}|[1-36])\\d{6}|00\\d{10}|[1-9]\\d{8,10}|[2-9]\\d{7}",[7,8,9,10,11,12,13],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["15"]],["(\\d{2})(\\d{5,9})","$1 $2",["2[124]|[36]1"],"(0$1)"],["(\\d{3})(\\d{5,7})","$1 $2",["800"],"0$1"],["(\\d{3})(\\d{5,8})","$1 $2",["[2-79]"],"(0$1)"],["(\\d{3})(\\d{3,4})(\\d{3})","$1-$2-$3",["8[1-35-9]"],"0$1"],["(\\d{3})(\\d{6,8})","$1 $2",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["804"],"0$1"],["(\\d{3})(\\d)(\\d{3})(\\d{3})","$1 $2 $3 $4",["80"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1-$2-$3",["8"],"0$1"]],"0"],IE:["353","00","(?:1\\d|[2569])\\d{6,8}|4\\d{6,9}|7\\d{8}|8\\d{8,9}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["2[24-9]|47|58|6[237-9]|9[35-9]"],"(0$1)"],["(\\d{3})(\\d{5})","$1 $2",["[45]0"],"(0$1)"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["1"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2569]|4[1-69]|7[14]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["81"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[78]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["4"],"(0$1)"],["(\\d{2})(\\d)(\\d{3})(\\d{4})","$1 $2 $3 $4",["8"],"0$1"]],"0"],IL:["972","0(?:0|1[2-9])","1\\d{6}(?:\\d{3,5})?|[57]\\d{8}|[1-489]\\d{7}",[7,8,9,10,11,12],[["(\\d{4})(\\d{3})","$1-$2",["125"]],["(\\d{4})(\\d{2})(\\d{2})","$1-$2-$3",["121"]],["(\\d)(\\d{3})(\\d{4})","$1-$2-$3",["[2-489]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1-$2-$3",["12"]],["(\\d{4})(\\d{6})","$1-$2",["159"]],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3-$4",["1[7-9]"]],["(\\d{3})(\\d{1,2})(\\d{3})(\\d{4})","$1-$2 $3-$4",["15"]]],"0"],IM:["44","00","1624\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([25-8]\\d{5})$","1624$1",0,"74576|(?:16|7[56])24"],IN:["91","00","(?:000800|[2-9]\\d\\d)\\d{7}|1\\d{7,12}",[8,9,10,11,12,13],[["(\\d{8})","$1",["5(?:0|2[23]|3[03]|[67]1|88)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)"],0,1],["(\\d{4})(\\d{4,5})","$1 $2",["180","1800"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["140"],0,1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["11|2[02]|33|4[04]|79[1-7]|80[2-46]","11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])","11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]"],"0$1",1],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807","1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]","1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\d|7(?:1(?:[013-8]\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\d|5[0-367])|70[13-7]))[2-7]"],"0$1",1],["(\\d{5})(\\d{5})","$1 $2",["[6-9]"],"0$1",1],["(\\d{4})(\\d{2,4})(\\d{4})","$1 $2 $3",["1(?:6|8[06])","1(?:6|8[06]0)"],0,1],["(\\d{4})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["18"],0,1]],"0"],IO:["246","00","3\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["3"]]]],IQ:["964","00","(?:1|7\\d\\d)\\d{7}|[2-6]\\d{7,8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-6]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0"],IR:["98","00","[1-9]\\d{9}|(?:[1-8]\\d\\d|9)\\d{3,4}",[4,5,6,7,10],[["(\\d{4,5})","$1",["96"],"0$1"],["(\\d{2})(\\d{4,5})","$1 $2",["(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[1-8]"],"0$1"]],"0"],IS:["354","00|1(?:0(?:01|[12]0)|100)","(?:38\\d|[4-9])\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["[4-9]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["3"]]],0,0,0,0,0,0,0,"00"],IT:["39","00","0\\d{5,10}|1\\d{8,10}|3(?:[0-8]\\d{7,10}|9\\d{7,8})|(?:55|70)\\d{8}|8\\d{5}(?:\\d{2,4})?",[6,7,8,9,10,11],[["(\\d{2})(\\d{4,6})","$1 $2",["0[26]"]],["(\\d{3})(\\d{3,6})","$1 $2",["0[13-57-9][0159]|8(?:03|4[17]|9[2-5])","0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))"]],["(\\d{4})(\\d{2,6})","$1 $2",["0(?:[13-579][2-46-8]|8[236-8])"]],["(\\d{4})(\\d{4})","$1 $2",["894"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[26]|5"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["1(?:44|[679])|[378]"]],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[13-57-9][0159]|14"]],["(\\d{2})(\\d{4})(\\d{5})","$1 $2 $3",["0[26]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["3"]]],0,0,0,0,0,0,[["0669[0-79]\\d{1,6}|0(?:1(?:[0159]\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\d\\d|3(?:[0159]\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\d|6[0-8])|7(?:[0159]\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\d{2,7}"],["3[1-9]\\d{8}|3[2-9]\\d{7}",[9,10]],["80(?:0\\d{3}|3)\\d{3}",[6,9]],["(?:0878\\d{3}|89(?:2\\d|3[04]|4(?:[0-4]|[5-9]\\d\\d)|5[0-4]))\\d\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\d{6}",[6,8,9,10]],["1(?:78\\d|99)\\d{6}",[9,10]],0,0,0,["55\\d{8}",[10]],["84(?:[08]\\d{3}|[17])\\d{3}",[6,9]]]],JE:["44","00","1534\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([0-24-8]\\d{5})$","1534$1",0,0,[["1534[0-24-8]\\d{5}"],["7(?:(?:(?:50|82)9|937)\\d|7(?:00[378]|97[7-9]))\\d{5}"],["80(?:07(?:35|81)|8901)\\d{4}"],["(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\d{4}"],["701511\\d{4}"],0,["(?:3(?:0(?:07(?:35|81)|8901)|3\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\d{4})\\d{4}"],["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}"],["56\\d{8}"]]],JM:["1","011","(?:[58]\\d\\d|658|900)\\d{7}",[10],0,"1",0,0,0,0,"658|876"],JO:["962","00","(?:(?:[2689]|7\\d)\\d|32|53)\\d{6}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2356]|87"],"(0$1)"],["(\\d{3})(\\d{5,6})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["70"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0"],JP:["81","010","00[1-9]\\d{6,14}|[257-9]\\d{9}|(?:00|[1-9]\\d\\d)\\d{6}",[8,9,10,11,12,13,14,15,16,17],[["(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3",["(?:12|57|99)0"],"0$1"],["(\\d{4})(\\d)(\\d{4})","$1-$2-$3",["1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:80|9[16])","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2-$3",["[36]|4(?:2[09]|7[01])","[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]"],"0$1"],["(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3",["[14]|[289][2-9]|5[3-9]|7[2-4679]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["800"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[257-9]"],"0$1"]],"0"],KE:["254","000","(?:[17]\\d\\d|900)\\d{6}|(?:2|80)0\\d{6,7}|[4-6]\\d{6,8}",[7,8,9,10],[["(\\d{2})(\\d{5,7})","$1 $2",["[24-6]"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[17]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0"],KG:["996","00","8\\d{9}|(?:[235-8]\\d|99)\\d{7}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["3(?:1[346]|[24-79])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235-79]|88"],"0$1"],["(\\d{3})(\\d{3})(\\d)(\\d{2,3})","$1 $2 $3 $4",["8"],"0$1"]],"0"],KH:["855","00[14-9]","1\\d{9}|[1-9]\\d{7,8}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0"],KI:["686","00","(?:[37]\\d|6[0-79])\\d{6}|(?:[2-48]\\d|50)\\d{3}",[5,8],0,"0"],KM:["269","00","[3478]\\d{6}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[3478]"]]]],KN:["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","869$1",0,"869"],KP:["850","00|99","85\\d{6}|(?:19\\d|[2-7])\\d{7}",[8,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"]],"0"],KR:["82","00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))","00[1-9]\\d{8,11}|(?:[12]|5\\d{3})\\d{7}|[13-6]\\d{9}|(?:[1-6]\\d|80)\\d{7}|[3-6]\\d{4,5}|(?:00|7)0\\d{8}",[5,6,8,9,10,11,12,13,14],[["(\\d{2})(\\d{3,4})","$1-$2",["(?:3[1-3]|[46][1-4]|5[1-5])1"],"0$1"],["(\\d{4})(\\d{4})","$1-$2",["1"]],["(\\d)(\\d{3,4})(\\d{4})","$1-$2-$3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60|8"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1-$2-$3",["[1346]|5[1-5]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{2})(\\d{5})(\\d{4})","$1-$2-$3",["5"],"0$1"]],"0",0,"0(8(?:[1-46-8]|5\\d\\d))?"],KW:["965","00","18\\d{5}|(?:[2569]\\d|41)\\d{6}",[7,8],[["(\\d{4})(\\d{3,4})","$1 $2",["[169]|2(?:[235]|4[1-35-9])|52"]],["(\\d{3})(\\d{5})","$1 $2",["[245]"]]]],KY:["1","011","(?:345|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","345$1",0,"345"],KZ:["7","810","(?:33622|8\\d{8})\\d{5}|[78]\\d{9}",[10,14],0,"8",0,0,0,0,"33|7",0,"8~10"],LA:["856","00","[23]\\d{9}|3\\d{8}|(?:[235-8]\\d|41)\\d{6}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2[13]|3[14]|[4-8]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["30[013-9]"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[23]"],"0$1"]],"0"],LB:["961","00","[27-9]\\d{7}|[13-9]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27-9]"]]],"0"],LC:["1","011","(?:[58]\\d\\d|758|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","758$1",0,"758"],LI:["423","00","[68]\\d{8}|(?:[2378]\\d|90)\\d{5}",[7,9],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[2379]|8(?:0[09]|7)","[2379]|8(?:0(?:02|9)|7)"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["69"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]],"0",0,"0|(1001)"],LK:["94","00","[1-9]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[1-689]"],"0$1"]],"0"],LR:["231","00","(?:2|33|5\\d|77|88)\\d{7}|[4-6]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[4-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3578]"],"0$1"]],"0"],LS:["266","00","(?:[256]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2568]"]]]],LT:["370","00","(?:[3469]\\d|52|[78]0)\\d{6}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["52[0-7]"],"(8-$1)",1],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[7-9]"],"8 $1",1],["(\\d{2})(\\d{6})","$1 $2",["37|4(?:[15]|6[1-8])"],"(8-$1)",1],["(\\d{3})(\\d{5})","$1 $2",["[3-6]"],"(8-$1)",1]],"8",0,"[08]"],LU:["352","00","35[013-9]\\d{4,8}|6\\d{8}|35\\d{2,4}|(?:[2457-9]\\d|3[0-46-9])\\d{2,9}",[4,5,6,7,8,9,10,11],[["(\\d{2})(\\d{3})","$1 $2",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["20[2-689]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4",["2(?:[0367]|4[3-8])"]],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["80[01]|90[015]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["20"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4 $5",["2(?:[0367]|4[3-8])"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,5})","$1 $2 $3 $4",["[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]"]]],0,0,"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\d)"],LV:["371","00","(?:[268]\\d|90)\\d{6}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[269]|8[01]"]]]],LY:["218","00","[2-9]\\d{8}",[9],[["(\\d{2})(\\d{7})","$1-$2",["[2-9]"],"0$1"]],"0"],MA:["212","00","[5-8]\\d{8}",[9],[["(\\d{5})(\\d{4})","$1-$2",["5(?:29|38)","5(?:29[89]|389)","5(?:29[89]|389)0"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5[45]"],"0$1"],["(\\d{4})(\\d{5})","$1-$2",["5(?:2[2-489]|3[5-9]|9)|892","5(?:2(?:[2-49]|8[235-9])|3[5-9]|9)|892"],"0$1"],["(\\d{2})(\\d{7})","$1-$2",["8"],"0$1"],["(\\d{3})(\\d{6})","$1-$2",["[5-7]"],"0$1"]],"0",0,0,0,0,0,[["5(?:29(?:[189][05]|2[29]|3[01])|389[05])\\d{4}|5(?:2(?:[0-25-7]\\d|3[1-578]|4[02-46-8]|8[0235-7]|90)|3(?:[0-47]\\d|5[02-9]|6[02-8]|8[08]|9[3-9])|(?:4[067]|5[03])\\d)\\d{5}"],["(?:6(?:[0-79]\\d|8[0-247-9])|7(?:[017]\\d|2[0-2]|6[0-8]|8[0-3]))\\d{6}"],["80\\d{7}"],["89\\d{7}"],0,0,0,0,["592(?:4[0-2]|93)\\d{4}"]]],MC:["377","00","(?:[3489]|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["4"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[389]"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["6"],"0$1"]],"0"],MD:["373","00","(?:[235-7]\\d|[89]0)\\d{6}",[8],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["22|3"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[25-7]"],"0$1"]],"0"],ME:["382","00","(?:20|[3-79]\\d)\\d{6}|80\\d{6,7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"0$1"]],"0"],MF:["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[["590(?:0[079]|[14]3|[27][79]|30|5[0-268]|87)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],MG:["261","00","[23]\\d{8}",[9],[["(\\d{2})(\\d{2})(\\d{3})(\\d{2})","$1 $2 $3 $4",["[23]"],"0$1"]],"0",0,"0|([24-9]\\d{6})$","20$1"],MH:["692","011","329\\d{4}|(?:[256]\\d|45)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1-$2",["[2-6]"]]],"1"],MK:["389","00","[2-578]\\d{7}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2|34[47]|4(?:[37]7|5[47]|64)"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[347]"],"0$1"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["[58]"],"0$1"]],"0"],ML:["223","00","[24-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24-9]"]]]],MM:["95","00","1\\d{5,7}|95\\d{6}|(?:[4-7]|9[0-46-9])\\d{6,8}|(?:2|8\\d)\\d{5,8}",[6,7,8,9,10],[["(\\d)(\\d{2})(\\d{3})","$1 $2 $3",["16|2"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[4-7]|8[1-35]"],"0$1"],["(\\d)(\\d{3})(\\d{4,6})","$1 $2 $3",["9(?:2[0-4]|[35-9]|4[137-9])"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["92"],"0$1"],["(\\d)(\\d{5})(\\d{4})","$1 $2 $3",["9"],"0$1"]],"0"],MN:["976","001","[12]\\d{7,9}|[5-9]\\d{7}",[8,9,10],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[12]1"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[5-9]"]],["(\\d{3})(\\d{5,6})","$1 $2",["[12]2[1-3]"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["[12](?:27|3[2-8]|4[2-68]|5[1-4689])","[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["[12]"],"0$1"]],"0"],MO:["853","00","0800\\d{3}|(?:28|[68]\\d)\\d{6}",[7,8],[["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{4})(\\d{4})","$1 $2",["[268]"]]]],MP:["1","011","[58]\\d{9}|(?:67|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","670$1",0,"670"],MQ:["596","00","(?:69|80)\\d{7}|(?:59|97)6\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0"],MR:["222","00","(?:[2-4]\\d\\d|800)\\d{5}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-48]"]]]],MS:["1","011","(?:[58]\\d\\d|664|900)\\d{7}",[10],0,"1",0,"1|([34]\\d{6})$","664$1",0,"664"],MT:["356","00","3550\\d{4}|(?:[2579]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2357-9]"]]]],MU:["230","0(?:0|[24-7]0|3[03])","(?:5|8\\d\\d)\\d{7}|[2-468]\\d{6}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[2-46]|8[013]"]],["(\\d{4})(\\d{4})","$1 $2",["5"]],["(\\d{5})(\\d{5})","$1 $2",["8"]]],0,0,0,0,0,0,0,"020"],MV:["960","0(?:0|19)","(?:800|9[0-57-9]\\d)\\d{7}|[34679]\\d{6}",[7,10],[["(\\d{3})(\\d{4})","$1-$2",["[3467]|9[13-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"]]],0,0,0,0,0,0,0,"00"],MW:["265","00","(?:[1289]\\d|31|77)\\d{7}|1\\d{6}",[7,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["1[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[137-9]"],"0$1"]],"0"],MX:["52","0[09]","1(?:(?:44|99)[1-9]|65[0-689])\\d{7}|(?:1(?:[017]\\d|[235][1-9]|4[0-35-9]|6[0-46-9]|8[1-79]|9[1-8])|[2-9]\\d)\\d{8}",[10,11],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["33|5[56]|81"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2-9]"],0,1],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 $3 $4",["1(?:33|5[56]|81)"],0,1],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 $3 $4",["1"],0,1]],"01",0,"0(?:[12]|4[45])|1",0,0,0,0,"00"],MY:["60","00","1\\d{8,9}|(?:3\\d|[4-9])\\d{7}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1-$2 $3",["[4-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1-$2 $3",["1(?:[02469]|[378][1-9]|53)|8","1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2 $3",["3"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3-$4",["1(?:[367]|80)"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2 $3",["15"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2 $3",["1"],"0$1"]],"0"],MZ:["258","00","(?:2|8\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2|8[2-79]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]]],NA:["264","00","[68]\\d{7,8}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["87"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0"],NC:["687","00","(?:050|[2-57-9]\\d\\d)\\d{3}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1.$2.$3",["[02-57-9]"]]]],NE:["227","00","[027-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["08"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[089]|2[013]|7[04]"]]]],NF:["672","00","[13]\\d{5}",[6],[["(\\d{2})(\\d{4})","$1 $2",["1[0-3]"]],["(\\d)(\\d{5})","$1 $2",["[13]"]]],0,0,"([0-258]\\d{4})$","3$1"],NG:["234","009","(?:[124-7]|9\\d{3})\\d{6}|[1-9]\\d{7}|[78]\\d{9,13}",[7,8,10,11,12,13,14],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["78"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]|9(?:0[3-9]|[1-9])"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[3-7]|8[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["[78]"],"0$1"],["(\\d{3})(\\d{5})(\\d{5,6})","$1 $2 $3",["[78]"],"0$1"]],"0"],NI:["505","00","(?:1800|[25-8]\\d{3})\\d{4}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[125-8]"]]]],NL:["31","00","(?:[124-7]\\d\\d|3(?:[02-9]\\d|1[0-8]))\\d{6}|8\\d{6,9}|9\\d{6,10}|1\\d{4,5}",[5,6,7,8,9,10,11],[["(\\d{3})(\\d{4,7})","$1 $2",["[89]0"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["66"],"0$1"],["(\\d)(\\d{8})","$1 $2",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["1[16-8]|2[259]|3[124]|4[17-9]|5[124679]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-578]|91"],"0$1"],["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3",["9"],"0$1"]],"0"],NO:["47","00","(?:0|[2-9]\\d{3})\\d{4}",[5,8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[489]|59"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[235-7]"]]],0,0,0,0,0,"[02-689]|7[0-8]"],NP:["977","00","(?:1\\d|9)\\d{9}|[1-9]\\d{7}",[8,10,11],[["(\\d)(\\d{7})","$1-$2",["1[2-6]"],"0$1"],["(\\d{2})(\\d{6})","$1-$2",["1[01]|[2-8]|9(?:[1-59]|[67][2-6])"],"0$1"],["(\\d{3})(\\d{7})","$1-$2",["9"]]],"0"],NR:["674","00","(?:444|(?:55|8\\d)\\d|666)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[4-68]"]]]],NU:["683","00","(?:[47]|888\\d)\\d{3}",[4,7],[["(\\d{3})(\\d{4})","$1 $2",["8"]]]],NZ:["64","0(?:0|161)","[29]\\d{7,9}|50\\d{5}(?:\\d{2,3})?|6[0-35-9]\\d{6}|7\\d{7,8}|8\\d{4,9}|(?:11\\d|[34])\\d{7}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,8})","$1 $2",["8[1-579]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["50[036-8]|[89]0","50(?:[0367]|88)|[89]0"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["24|[346]|7[2-57-9]|9[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:10|74)|[59]|80"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1|2[028]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,5})","$1 $2 $3",["2(?:[169]|7[0-35-9])|7|86"],"0$1"]],"0",0,0,0,0,0,0,"00"],OM:["968","00","(?:1505|[279]\\d{3}|500)\\d{4}|800\\d{5,6}",[7,8,9],[["(\\d{3})(\\d{4,6})","$1 $2",["[58]"]],["(\\d{2})(\\d{6})","$1 $2",["2"]],["(\\d{4})(\\d{4})","$1 $2",["[179]"]]]],PA:["507","00","(?:00800|8\\d{3})\\d{6}|[68]\\d{7}|[1-57-9]\\d{6}",[7,8,10,11],[["(\\d{3})(\\d{4})","$1-$2",["[1-57-9]"]],["(\\d{4})(\\d{4})","$1-$2",["[68]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]]],PE:["51","00|19(?:1[124]|77|90)00","(?:[14-8]|9\\d)\\d{7}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["80"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["1"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[4-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"]]],"0",0,0,0,0,0,0,"00"," Anexo "],PF:["689","00","4\\d{5}(?:\\d{2})?|8\\d{7,8}",[6,8,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["44"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4|8[7-9]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]]],PG:["675","00|140[1-3]","(?:180|[78]\\d{3})\\d{4}|(?:[2-589]\\d|64)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["18|[2-69]|85"]],["(\\d{4})(\\d{4})","$1 $2",["[78]"]]],0,0,0,0,0,0,0,"00"],PH:["63","00","(?:[2-7]|9\\d)\\d{8}|2\\d{5}|(?:1800|8)\\d{7,9}",[6,8,9,10,11,12,13],[["(\\d)(\\d{5})","$1 $2",["2"],"(0$1)"],["(\\d{4})(\\d{4,6})","$1 $2",["3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2","3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))"],"(0$1)"],["(\\d{5})(\\d{4})","$1 $2",["346|4(?:27|9[35])|883","3469|4(?:279|9(?:30|56))|8834"],"(0$1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3-7]|8[2-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{4})(\\d{1,2})(\\d{3})(\\d{4})","$1 $2 $3 $4",["1"]]],"0"],PK:["92","00","122\\d{6}|[24-8]\\d{10,11}|9(?:[013-9]\\d{8,10}|2(?:[01]\\d\\d|2(?:[06-8]\\d|1[01]))\\d{7})|(?:[2-8]\\d{3}|92(?:[0-7]\\d|8[1-9]))\\d{6}|[24-9]\\d{8}|[89]\\d{7}",[8,9,10,11,12],[["(\\d{3})(\\d{3})(\\d{2,7})","$1 $2 $3",["[89]0"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["1"]],["(\\d{3})(\\d{6,7})","$1 $2",["2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])","9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]"],"(0$1)"],["(\\d{2})(\\d{7,8})","$1 $2",["(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]"],"(0$1)"],["(\\d{5})(\\d{5})","$1 $2",["58"],"(0$1)"],["(\\d{3})(\\d{7})","$1 $2",["3"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[24-9]"],"(0$1)"]],"0"],PL:["48","00","(?:6|8\\d\\d)\\d{7}|[1-9]\\d{6}(?:\\d{2})?|[26]\\d{5}",[6,7,8,9,10],[["(\\d{5})","$1",["19"]],["(\\d{3})(\\d{3})","$1 $2",["11|20|64"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1","(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19"]],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["64"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[2-8]|[2-7]|8[1-79]|9[145]"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["8"]]]],PM:["508","00","(?:[45]|80\\d\\d)\\d{5}",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[45]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0"],PR:["1","011","(?:[589]\\d\\d|787)\\d{7}",[10],0,"1",0,0,0,0,"787|939"],PS:["970","00","[2489]2\\d{6}|(?:1\\d|5)\\d{8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2489]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["5"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0"],PT:["351","00","1693\\d{5}|(?:[26-9]\\d|30)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["2[12]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["16|[236-9]"]]]],PW:["680","01[12]","(?:[24-8]\\d\\d|345|900)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]]],PY:["595","00","59\\d{4,6}|9\\d{5,10}|(?:[2-46-8]\\d|5[0-8])\\d{4,7}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3,6})","$1 $2",["[2-9]0"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]"],"(0$1)"],["(\\d{3})(\\d{4,5})","$1 $2",["2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["87"]],["(\\d{3})(\\d{6})","$1 $2",["9(?:[5-79]|8[1-6])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["9"]]],"0"],QA:["974","00","[2-7]\\d{7}|800\\d{4}(?:\\d{2})?|2\\d{6}",[7,8,9],[["(\\d{3})(\\d{4})","$1 $2",["2[126]|8"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]]]],RE:["262","00","976\\d{6}|(?:26|[68]\\d)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2689]"],"0$1"]],"0",0,0,0,0,"26[23]|69|[89]"],RO:["40","00","(?:[2378]\\d|90)\\d{7}|[23]\\d{5}",[6,9],[["(\\d{3})(\\d{3})","$1 $2",["2[3-6]","2[3-6]\\d9"],"0$1"],["(\\d{2})(\\d{4})","$1 $2",["219|31"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[23]1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[237-9]"],"0$1"]],"0",0,0,0,0,0,0,0," int "],RS:["381","00","38[02-9]\\d{6,9}|6\\d{7,9}|90\\d{4,8}|38\\d{5,6}|(?:7\\d\\d|800)\\d{3,9}|(?:[12]\\d|3[0-79])\\d{5,10}",[6,7,8,9,10,11,12],[["(\\d{3})(\\d{3,9})","$1 $2",["(?:2[389]|39)0|[7-9]"],"0$1"],["(\\d{2})(\\d{5,10})","$1 $2",["[1-36]"],"0$1"]],"0"],RU:["7","810","8\\d{13}|[347-9]\\d{9}",[10,14],[["(\\d{4})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-8]|2[1-9])","7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))","7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2"],"8 ($1)",1],["(\\d{5})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-68]|2[1-9])","7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))","7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[349]|8(?:[02-7]|1[1-8])"],"8 ($1)",1],["(\\d{4})(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3 $4",["8"],"8 ($1)"]],"8",0,0,0,0,"3[04-689]|[489]",0,"8~10"],RW:["250","00","(?:06|[27]\\d\\d|[89]00)\\d{6}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"]]],"0"],SA:["966","00","92\\d{7}|(?:[15]|8\\d)\\d{8}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["9"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["81"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]],"0"],SB:["677","0[01]","(?:[1-6]|[7-9]\\d\\d)\\d{4}",[5,7],[["(\\d{2})(\\d{5})","$1 $2",["7|8[4-9]|9(?:[1-8]|9[0-8])"]]]],SC:["248","010|0[0-2]","800\\d{4}|(?:[249]\\d|64)\\d{5}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[246]|9[57]"]]],0,0,0,0,0,0,0,"00"],SD:["249","00","[19]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[19]"],"0$1"]],"0"],SE:["46","00","(?:[26]\\d\\d|9)\\d{9}|[1-9]\\d{8}|[1-689]\\d{7}|[1-4689]\\d{6}|2\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{2,3})(\\d{2})","$1-$2 $3",["20"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{4})","$1-$2",["9(?:00|39|44|9)"],"0$1",0,"$1 $2"],["(\\d{2})(\\d{3})(\\d{2})","$1-$2 $3",["[12][136]|3[356]|4[0246]|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3"],["(\\d)(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2,3})(\\d{2})","$1-$2 $3",["1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{2,3})(\\d{3})","$1-$2 $3",["9(?:00|39|44)"],"0$1",0,"$1 $2 $3"],["(\\d{2})(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3 $4"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["10|7"],"0$1",0,"$1 $2 $3 $4"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1-$2 $3 $4",["[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{3})","$1-$2 $3 $4",["9"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4 $5",["[26]"],"0$1",0,"$1 $2 $3 $4 $5"]],"0"],SG:["65","0[0-3]\\d","(?:(?:1\\d|8)\\d\\d|7000)\\d{7}|[3689]\\d{7}",[8,10,11],[["(\\d{4})(\\d{4})","$1 $2",["[369]|8(?:0[1-5]|[1-9])"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]],["(\\d{4})(\\d{4})(\\d{3})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]]],SH:["290","00","(?:[256]\\d|8)\\d{3}",[4,5],0,0,0,0,0,0,"[256]"],SI:["386","00|10(?:22|66|88|99)","[1-7]\\d{7}|8\\d{4,7}|90\\d{4,6}",[5,6,7,8],[["(\\d{2})(\\d{3,6})","$1 $2",["8[09]|9"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["59|8"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37][01]|4[0139]|51|6"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-57]"],"(0$1)"]],"0",0,0,0,0,0,0,"00"],SJ:["47","00","0\\d{4}|(?:[489]\\d|[57]9)\\d{6}",[5,8],0,0,0,0,0,0,"79"],SK:["421","00","[2-689]\\d{8}|[2-59]\\d{6}|[2-5]\\d{5}",[6,7,9],[["(\\d)(\\d{2})(\\d{3,4})","$1 $2 $3",["21"],"0$1"],["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["[3-5][1-8]1","[3-5][1-8]1[67]"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1/$2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[689]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1/$2 $3 $4",["[3-5]"],"0$1"]],"0"],SL:["232","00","(?:[237-9]\\d|66)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[236-9]"],"(0$1)"]],"0"],SM:["378","00","(?:0549|[5-7]\\d)\\d{6}",[8,10],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-7]"]],["(\\d{4})(\\d{6})","$1 $2",["0"]]],0,0,"([89]\\d{5})$","0549$1"],SN:["221","00","(?:[378]\\d|93)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[379]"]]]],SO:["252","00","[346-9]\\d{8}|[12679]\\d{7}|[1-5]\\d{6}|[1348]\\d{5}",[6,7,8,9],[["(\\d{2})(\\d{4})","$1 $2",["8[125]"]],["(\\d{6})","$1",["[134]"]],["(\\d)(\\d{6})","$1 $2",["[15]|2[0-79]|3[0-46-8]|4[0-7]"]],["(\\d)(\\d{7})","$1 $2",["24|[67]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3478]|64|90"]],["(\\d{2})(\\d{5,7})","$1 $2",["1|28|6(?:0[5-7]|[1-35-9])|9[2-9]"]]],"0"],SR:["597","00","(?:[2-5]|68|[78]\\d)\\d{5}",[6,7],[["(\\d{2})(\\d{2})(\\d{2})","$1-$2-$3",["56"]],["(\\d{3})(\\d{3})","$1-$2",["[2-5]"]],["(\\d{3})(\\d{4})","$1-$2",["[6-8]"]]]],SS:["211","00","[19]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[19]"],"0$1"]],"0"],ST:["239","00","(?:22|9\\d)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[29]"]]]],SV:["503","00","[267]\\d{7}|[89]00\\d{4}(?:\\d{4})?",[7,8,11],[["(\\d{3})(\\d{4})","$1 $2",["[89]"]],["(\\d{4})(\\d{4})","$1 $2",["[267]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[89]"]]]],SX:["1","011","7215\\d{6}|(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|(5\\d{6})$","721$1",0,"721"],SY:["963","00","[1-39]\\d{8}|[1-5]\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-5]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1",1]],"0"],SZ:["268","00","0800\\d{4}|(?:[237]\\d|900)\\d{6}",[8,9],[["(\\d{4})(\\d{4})","$1 $2",["[0237]"]],["(\\d{5})(\\d{4})","$1 $2",["9"]]]],TA:["290","00","8\\d{3}",[4],0,0,0,0,0,0,"8"],TC:["1","011","(?:[58]\\d\\d|649|900)\\d{7}",[10],0,"1",0,"1|([2-479]\\d{6})$","649$1",0,"649"],TD:["235","00|16","(?:22|[69]\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2679]"]]],0,0,0,0,0,0,0,"00"],TG:["228","00","[279]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[279]"]]]],TH:["66","00[1-9]","(?:001800|[2-57]|[689]\\d)\\d{7}|1\\d{7,9}",[8,9,10,13],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[13-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0"],TJ:["992","810","(?:00|[1-57-9]\\d)\\d{7}",[9],[["(\\d{6})(\\d)(\\d{2})","$1 $2 $3",["331","3317"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[34]7|91[78]"]],["(\\d{4})(\\d)(\\d{4})","$1 $2 $3",["3[1-5]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[0-57-9]"]]],0,0,0,0,0,0,0,"8~10"],TK:["690","00","[2-47]\\d{3,6}",[4,5,6,7]],TL:["670","00","7\\d{7}|(?:[2-47]\\d|[89]0)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[2-489]|70"]],["(\\d{4})(\\d{4})","$1 $2",["7"]]]],TM:["993","810","[1-6]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["12"],"(8 $1)"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-5]"],"(8 $1)"],["(\\d{2})(\\d{6})","$1 $2",["6"],"8 $1"]],"8",0,0,0,0,0,0,"8~10"],TN:["216","00","[2-57-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-57-9]"]]]],TO:["676","00","(?:0800|(?:[5-8]\\d\\d|999)\\d)\\d{3}|[2-8]\\d{4}",[5,7],[["(\\d{2})(\\d{3})","$1-$2",["[2-4]|50|6[09]|7[0-24-69]|8[05]"]],["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{3})(\\d{4})","$1 $2",["[5-9]"]]]],TR:["90","00","4\\d{6}|8\\d{11,12}|(?:[2-58]\\d\\d|900)\\d{7}",[7,10,12,13],[["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["512|8[01589]|90"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5(?:[0-59]|61)","5(?:[0-59]|616)","5(?:[0-59]|6161)"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24][1-8]|3[1-9]"],"(0$1)",1],["(\\d{3})(\\d{3})(\\d{6,7})","$1 $2 $3",["80"],"0$1",1]],"0"],TT:["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-46-8]\\d{6})$","868$1",0,"868"],TV:["688","00","(?:2|7\\d\\d|90)\\d{4}",[5,6,7],[["(\\d{2})(\\d{3})","$1 $2",["2"]],["(\\d{2})(\\d{4})","$1 $2",["90"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]]],TW:["886","0(?:0[25-79]|19)","[2-689]\\d{8}|7\\d{9,10}|[2-8]\\d{7}|2\\d{6}",[7,8,9,10,11],[["(\\d{2})(\\d)(\\d{4})","$1 $2 $3",["202"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[258]0"],"0$1"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]","[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,5})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,0,0,"#"],TZ:["255","00[056]","(?:[25-8]\\d|41|90)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[24]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["5"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[67]"],"0$1"]],"0"],UA:["380","00","[89]\\d{9}|[3-9]\\d{8}",[9,10],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]","6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])","3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3-7]|89|9[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,0,"0~0"],UG:["256","00[057]","800\\d{6}|(?:[29]0|[347]\\d)\\d{7}",[9],[["(\\d{4})(\\d{5})","$1 $2",["202","2024"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[27-9]|4(?:6[45]|[7-9])"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[34]"],"0$1"]],"0"],US:["1","011","[2-9]\\d{9}|3\\d{6}",[10],[["(\\d{3})(\\d{4})","$1-$2",["310"],0,1],["(\\d{3})(\\d{3})(\\d{4})","($1) $2-$3",["[2-9]"],0,1,"$1-$2-$3"]],"1",0,0,0,0,0,[["505(?:[2-57-9]\\d\\d|6(?:[0-35-9]\\d|44))\\d{4}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[01679]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[068]|3[0-289]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-389]|8[04-69]))[2-9]\\d{6}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],UY:["598","0(?:0|1[3-9]\\d)","4\\d{9}|[1249]\\d{7}|(?:[49]\\d|80)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["405|8|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[124]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["4"],"0$1"]],"0",0,0,0,0,0,0,"00"," int. "],UZ:["998","810","(?:33|55|[679]\\d|88)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[35-9]"],"8 $1"]],"8",0,0,0,0,0,0,"8~10"],VA:["39","00","0\\d{5,10}|3[0-8]\\d{7,10}|55\\d{8}|8\\d{5}(?:\\d{2,4})?|(?:1\\d|39)\\d{7,8}",[6,7,8,9,10,11],0,0,0,0,0,0,"06698"],VC:["1","011","(?:[58]\\d\\d|784|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","784$1",0,"784"],VE:["58","00","[68]00\\d{7}|(?:[24]\\d|[59]0)\\d{8}",[10],[["(\\d{3})(\\d{7})","$1-$2",["[24-689]"],"0$1"]],"0"],VG:["1","011","(?:284|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-578]\\d{6})$","284$1",0,"284"],VI:["1","011","[58]\\d{9}|(?:34|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","340$1",0,"340"],VN:["84","00","[12]\\d{9}|[135-9]\\d{8}|[16]\\d{7}|[16-8]\\d{6}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["80"],"0$1",1],["(\\d{4})(\\d{4,6})","$1 $2",["1"],0,1],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[69]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3578]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["2[48]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["2"],"0$1",1]],"0"],VU:["678","00","[57-9]\\d{6}|(?:[238]\\d|48)\\d{3}",[5,7],[["(\\d{3})(\\d{4})","$1 $2",["[57-9]"]]]],WF:["681","00","(?:40|72)\\d{4}|8\\d{5}(?:\\d{3})?",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[478]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]]],WS:["685","0","(?:[2-6]|8\\d{5})\\d{4}|[78]\\d{6}|[68]\\d{5}",[5,6,7,10],[["(\\d{5})","$1",["[2-5]|6[1-9]"]],["(\\d{3})(\\d{3,7})","$1 $2",["[68]"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]]],XK:["383","00","[23]\\d{7,8}|(?:4\\d\\d|[89]00)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[23]"],"0$1"]],"0"],YE:["967","00","(?:1|7\\d)\\d{7}|[1-7]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-6]|7[24-68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["7"],"0$1"]],"0"],YT:["262","00","80\\d{7}|(?:26|63)9\\d{6}",[9],0,"0",0,0,0,0,"269|63"],ZA:["27","00","[1-79]\\d{8}|8\\d{4,9}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,4})","$1 $2",["8[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["8[1-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["860"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0"],ZM:["260","00","800\\d{6}|(?:21|63|[79]\\d)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[28]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[79]"],"0$1"]],"0"],ZW:["263","00","2(?:[0-57-9]\\d{6,8}|6[0-24-9]\\d{6,7})|[38]\\d{9}|[35-8]\\d{8}|[3-6]\\d{7}|[1-689]\\d{6}|[1-3569]\\d{5}|[1356]\\d{4}",[5,6,7,8,9,10],[["(\\d{3})(\\d{3,5})","$1 $2",["2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]"],"0$1"],["(\\d)(\\d{3})(\\d{2,4})","$1 $2 $3",["[49]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["80"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2","2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)","2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["29[013-9]|39|54"],"0$1"],["(\\d{4})(\\d{3,5})","$1 $2",["(?:25|54)8","258|5483"],"0$1"]],"0"]},nonGeographic:{800:["800",0,"(?:00|[1-9]\\d)\\d{6}",[8],[["(\\d{4})(\\d{4})","$1 $2",["\\d"]]],0,0,0,0,0,0,[0,0,["(?:00|[1-9]\\d)\\d{6}"]]],808:["808",0,"[1-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[1-9]"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,["[1-9]\\d{7}"]]],870:["870",0,"7\\d{11}|[35-7]\\d{8}",[9,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[35-7]"]]],0,0,0,0,0,0,[0,["(?:[356]|774[45])\\d{8}|7[6-8]\\d{7}"]]],878:["878",0,"10\\d{10}",[12],[["(\\d{2})(\\d{5})(\\d{5})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["10\\d{10}"]]],881:["881",0,"[0-36-9]\\d{8}",[9],[["(\\d)(\\d{3})(\\d{5})","$1 $2 $3",["[0-36-9]"]]],0,0,0,0,0,0,[0,["[0-36-9]\\d{8}"]]],882:["882",0,"[13]\\d{6}(?:\\d{2,5})?|285\\d{9}|(?:[19]\\d|49)\\d{6}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5})","$1 $2",["16|342"]],["(\\d{2})(\\d{6})","$1 $2",["4"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[19]"]],["(\\d{2})(\\d{4})(\\d{3})","$1 $2 $3",["3[23]"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["34[57]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["34"]],["(\\d{2})(\\d{4,5})(\\d{5})","$1 $2 $3",["[1-3]"]]],0,0,0,0,0,0,[0,["342\\d{4}|(?:337|49)\\d{6}|3(?:2|47|7\\d{3})\\d{7}",[7,8,9,10,12]],0,0,0,0,0,0,["1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\d{4}|6\\d{5,10})|(?:(?:285\\d\\d|3(?:45|[69]\\d{3}))\\d|9[89])\\d{6}"]]],883:["883",0,"(?:210|370\\d\\d)\\d{7}|51\\d{7}(?:\\d{3})?",[9,10,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["510"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["2"]],["(\\d{4})(\\d{4})(\\d{4})","$1 $2 $3",["51[13]"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[35]"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["(?:210|(?:370[1-9]|51[013]0)\\d)\\d{7}|5100\\d{5}"]]],888:["888",0,"\\d{11}",[11],[["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3"]],0,0,0,0,0,0,[0,0,0,0,0,0,["\\d{11}"]]],979:["979",0,"[1359]\\d{8}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[1359]"]]],0,0,0,0,0,0,[0,0,0,["[1359]\\d{8}"]]]}};function n(t,n){var r=Array.prototype.slice.call(n);return r.push(e),t.apply(this,r)}function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function d(t,e){for(var n=0;na)return 1;if(a>i)return-1;if(!isNaN(i)&&isNaN(a))return 1;if(isNaN(i)&&!isNaN(a))return-1}return t[1]&&e[1]?t[1]>e[1]?1:t[1]=2&&B.test(t)}var V=new RegExp("(?:"+M()+")$","i");function W(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(n)return(n=n.call(t)).next.bind(n);if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return H(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return H(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0;return function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function H(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function J(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function tt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);na?"TOO_SHORT":d[d.length-1]=0?"IS_POSSIBLE":"INVALID_LENGTH"}function rt(t,e,n){if(void 0===e&&(e={}),n=new O(n),e.v2){if(!t.countryCallingCode)throw new Error("Invalid phone number object passed");n.selectNumberingPlan(t.countryCallingCode)}else{if(!t.phone)return!1;if(t.country){if(!n.hasCountry(t.country))throw new Error("Unknown country: ".concat(t.country));n.country(t.country)}else{if(!t.countryCallingCode)throw new Error("Invalid phone number object passed");n.selectNumberingPlan(t.countryCallingCode)}}if(n.possibleLengths())return dt(t.phone||t.nationalNumber,n);if(t.countryCallingCode&&n.isNonGeographicCallingCode(t.countryCallingCode))return!0;throw new Error('Missing "possibleLengths" in metadata. Perhaps the metadata has been generated before v1.0.18.')}function dt(t,e){return"IS_POSSIBLE"===et(t,e)}function it(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null==n)return;var r,d,i=[],a=!0,o=!1;try{for(n=n.call(t);!(a=(r=n.next()).done)&&(i.push(r.value),!e||i.length!==e);a=!0);}catch(t){o=!0,d=t}finally{try{a||null==n.return||n.return()}finally{if(o)throw d}}return i}(t,e)||at(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function at(t,e){if(t){if("string"==typeof t)return ot(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ot(t,e):void 0}}function ot(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}((t=t.replace(/^tel:/,"tel=")).split(";"));!(r=d()).done;){var i=it(r.value.split("="),2),a=i[0],o=i[1];switch(a){case"tel":e=o;break;case"ext":n=o;break;case"phone-context":"+"===o[0]&&(e=o+e)}}if(!U(e))return{};var u={number:e};return n&&(u.ext=n),u}function $t(t){var e=t.number,n=t.ext;if(!e)return"";if("+"!==e[0])throw new Error('"formatRFC3966()" expects "number" to be in E.164 format.');return"tel:".concat(e).concat(n?";ext="+n:"")}function lt(t,e){return t=t||"",new RegExp("^(?:"+e+")$").test(t)}function ct(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(n)return(n=n.call(t)).next.bind(n);if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return st(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return st(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0;return function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function st(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Nt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0){var i=d.leadingDigitsPatterns()[d.leadingDigitsPatterns().length-1];if(0!==e.search(i))continue}if(lt(e,d.pattern()))return d}}(r.formats(),t);return i?bt(t,i,{useInternationalFormat:"INTERNATIONAL"===n,withNationalPrefix:!i.nationalPrefixIsOptionalWhenFormattingInNationalFormat()||!d||!1!==d.nationalPrefix,carrierCode:e,metadata:r}):t}function At(t,e,n,r){return e?r(t,e,n):t}function It(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Tt(t){for(var e=1;e0&&"0"===a[1]))return t}}}function Lt(t,e){if(t&&e.numberingPlan.nationalPrefixForParsing()){var n=new RegExp("^(?:"+e.numberingPlan.nationalPrefixForParsing()+")"),r=n.exec(t);if(r){var d,i,a,o=r.length-1,u=o>0&&r[o];if(e.nationalPrefixTransformRule()&&u)d=t.replace(n,e.nationalPrefixTransformRule()),o>1&&(i=r[1]);else{var $=r[0];d=t.slice($.length),u&&(i=r[1])}if(u){var l=t.indexOf(r[1]);t.slice(0,l)===e.numberingPlan.nationalPrefix()&&(a=e.numberingPlan.nationalPrefix())}else a=r[0];return{nationalNumber:d,nationalPrefix:a,carrierCode:i}}}return{nationalNumber:t}}function _t(t,e){var n=Lt(t,e),r=n.carrierCode,d=n.nationalNumber;if(d!==t){if(!function(t,e,n){if(lt(t,n.nationalNumberPattern())&&!lt(e,n.nationalNumberPattern()))return!1;return!0}(t,d,e))return{nationalNumber:t};if(e.possibleLengths()&&!function(t,e){switch(et(t,e)){case"TOO_SHORT":case"INVALID_LENGTH":return!1;default:return!0}}(d,e))return{nationalNumber:t}}return{nationalNumber:d,carrierCode:r}}function Gt(t,e,n,r){var d=e?F(e,r):n;if(0===t.indexOf(d)){(r=new O(r)).selectNumberingPlan(e,n);var i=t.slice(d.length),a=_t(i,r).nationalNumber,o=_t(t,r).nationalNumber;if(!lt(o,r.nationalNumberPattern())&<(a,r.nationalNumberPattern())||"TOO_LONG"===et(o,r))return{countryCallingCode:d,number:i}}return{number:t}}function Bt(t,e,n,r){if(!t)return{};if("+"!==t[0]){var d=Mt(t,e,n,r);if(!d||d===t){if(e||n){var i=Gt(t,e,n,r),a=i.countryCallingCode,o=i.number;if(a)return{countryCallingCode:a,number:o}}return{number:t}}t="+"+d}if("0"===t[1])return{};r=new O(r);for(var u=2;u-1<=3&&u<=t.length;){var $=t.slice(1,u);if(r.hasCallingCode($))return r.selectNumberingPlan($),{countryCallingCode:$,number:t.slice(u)};u++}return{}}function Ut(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(n)return(n=n.call(t)).next.bind(n);if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return Vt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Vt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0;return function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Vt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n250){if(n)throw new s("TOO_LONG");return}if(!1===e)return t;var r=t.search(Ht);if(r<0)return;return t.slice(r).replace(Kt,"")}(t,n,e);if(!r)return{};if(!U(r))return function(t){return _.test(t)}(r)?{error:"TOO_SHORT"}:{};var d=function(t){var e=t.search(V);if(e<0)return{};for(var n=t.slice(0,e),r=t.match(V),d=1;d17){if(e.v2)throw new s("TOO_LONG");return{}}if(e.v2){var f=new kt(l,$,n.metadata);return u&&(f.country=u),c&&(f.carrierCode=c),i&&(f.ext=i),f}var h=!!(e.extended?n.hasSelectedNumberingPlan():u)&<($,n.nationalNumberPattern());return e.extended?{country:u,countryCallingCode:l,carrierCode:c,valid:h,possible:!!h||!(!0!==e.extended||!n.possibleLengths()||!dt($,n)),phone:$,ext:i}:h?function(t,e,n){var r={country:t,phone:e};n&&(r.ext=n);return r}(u,$,i):{}}function Zt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Xt(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,r=new Array(e);n2&&void 0!==arguments[2]?arguments[2]:null,d=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;xe(this,t),this.key=e,this.value=n,this.next=r,this.prev=d})),Se=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10;xe(this,t),this.size=0,this.limit=e,this.head=null,this.tail=null,this.cache={}}return Oe(t,[{key:"put",value:function(t,e){if(this.ensureLimit(),this.head){var n=new we(t,e,this.head);this.head.prev=n,this.head=n}else this.head=this.tail=new we(t,e);this.cache[t]=this.head,this.size++}},{key:"get",value:function(t){if(this.cache[t]){var e=this.cache[t].value;return this.remove(t),this.put(t,e),e}console.log("Item not available in cache for key ".concat(t))}},{key:"ensureLimit",value:function(){this.size===this.limit&&this.remove(this.tail.key)}},{key:"remove",value:function(t){var e=this.cache[t];null!==e.prev?e.prev.next=e.next:this.head=e.next,null!==e.next?e.next.prev=e.prev:this.tail=e.prev,delete this.cache[t],this.size--}},{key:"clear",value:function(){this.head=null,this.tail=null,this.size=0,this.cache={}}}]),t}();function Ee(t,e){for(var n=0;n=0?e.slice(0,n):e}var je="   ᠎ - \u2028\u2029   ",Fe="[".concat(je,"]"),ke="[^".concat(je,"]"),De="[".concat("0-9٠-٩۰-۹߀-߉०-९০-৯੦-੯૦-૯୦-୯௦-௯౦-౯೦-೯൦-൯๐-๙໐-໙༠-༩၀-၉႐-႙០-៩᠐-᠙᥆-᥏᧐-᧙᪀-᪉᪐-᪙᭐-᭙᮰-᮹᱀-᱉᱐-᱙꘠-꘩꣐-꣙꤀-꤉꧐-꧙꩐-꩙꯰-꯹0-9","]"),Re="A-Za-zªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎↃↄⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々〆〱-〵〻〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛥꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ",Me="[".concat(Re,"]"),Le=new RegExp(Me),_e="[".concat("$¢-¥֏؋৲৳৻૱௹฿៛₠-₹꠸﷼﹩$¢£¥₩","]"),Ge=new RegExp(_e),Be="[".concat("̀-ͯ҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-ٰٟۖ-ۜ۟-۪ۤۧۨ-ܑۭܰ-݊ަ-ް߫-߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛ࣤ-ࣾऀ-ंऺ़ु-ै्॑-ॗॢॣঁ়ু-ৄ্ৢৣਁਂ਼ੁੂੇੈੋ-੍ੑੰੱੵઁં઼ુ-ૅેૈ્ૢૣଁ଼ିୁ-ୄ୍ୖୢୣஂீ்ా-ీె-ైొ-్ౕౖౢౣ಼ಿೆೌ್ೢೣു-ൄ്ൢൣ්ි-ුූัิ-ฺ็-๎ັິ-ູົຼ່-ໍཱ༹༘༙༵༷-ཾྀ-྄྆྇ྍ-ྗྙ-ྼ࿆ိ-ူဲ-့္်ွှၘၙၞ-ၠၱ-ၴႂႅႆႍႝ፝-፟ᜒ-᜔ᜲ-᜴ᝒᝓᝲᝳ឴឵ិ-ួំ៉-៓៝᠋-᠍ᢩᤠ-ᤢᤧᤨᤲ᤹-᤻ᨘᨗᩖᩘ-ᩞ᩠ᩢᩥ-ᩬᩳ-᩿᩼ᬀ-ᬃ᬴ᬶ-ᬺᬼᭂ᭫-᭳ᮀᮁᮢ-ᮥᮨᮩ᯦᮫ᯨᯩᯭᯯ-ᯱᰬ-ᰳᰶ᰷᳐-᳔᳒-᳢᳠-᳨᳭᳴᷀-ᷦ᷼-᷿⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〭꙯ꙴ-꙽ꚟ꛰꛱ꠂ꠆ꠋꠥꠦ꣄꣠-꣱ꤦ-꤭ꥇ-ꥑꦀ-ꦂ꦳ꦶ-ꦹꦼꨩ-ꨮꨱꨲꨵꨶꩃꩌꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫬꫭ꫶ꯥꯨ꯭ﬞ︀-️︠-︦","]"),Ue=new RegExp(Be),Ve=new RegExp("[\0-€-ÿĀ-ſḀ-ỿƀ-ɏ̀-ͯ]");function We(t){return!(!Le.test(t)&&!Ue.test(t))&&Ve.test(t)}function He(t){return"%"===t||Ge.test(t)}function Ke(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(n)return(n=n.call(t)).next.bind(n);if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return Ye(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Ye(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0;return function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Ye(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0){if(i.getNationalPrefixOptionalWhenFormatting())return!0;if(PhoneNumberUtil.formattingRuleHasFirstGroupOnly(i.getNationalPrefixFormattingRule()))return!0;var a=PhoneNumberUtil.normalizeDigitsOnly(t.getRawInput());return util.maybeStripNationalPrefixAndCarrierCode(a,r,null)}return!0}function ze(t,e){var n=e.indexOf("/");if(n<0)return!1;var r=e.indexOf("/",n+1);return!(r<0)&&(!(t.getCountryCodeSource()===CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN||t.getCountryCodeSource()===CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN)||PhoneNumberUtil.normalizeDigitsOnly(e.substring(0,n))!==String(t.getCountryCode())||e.slice(r+1).indexOf("/")>=0)}function Qe(t,e,n,r,d){var i=normalizeDigits(e,!0),a=qe(n,t,null);if(r(n,t,i,a))return!0;var o=MetadataManager.getAlternateFormatsForCountry(t.getCountryCode()),u=util.getNationalSignificantNumber(t);if(o)for(var $,l=Ke(o.numberFormats());!($=l()).done;){var c=$.value;if(c.leadingDigitsPatterns().length>0)if(!d.getPatternForRegExp("^"+c.leadingDigitsPatterns()[0]).test(u))continue;if(r(n,t,i,a=qe(n,t,c)))return!0}return!1}function qe(t,e,n){if(n){var r=util.getNationalSignificantNumber(e);return util.formatNsnUsingPattern(r,n,"RFC3966",t).split("-")}var d=formatNumber(e,"RFC3966",t),i=d.indexOf(";");i<0&&(i=d.length);var a=d.indexOf("-")+1;return d.slice(a,i).split("-")}function tn(t,e,n,r){var d=n.split(NON_DIGITS_PATTERN),i=e.hasExtension()?d.length-2:d.length-1;if(1==d.length||d[i].contains(util.getNationalSignificantNumber(e)))return!0;for(var a,o,u=r.length-1;u>0&&i>=0;){if(d[i]!==r[u])return!1;u--,i--}return i>=0&&(a=d[i],o=r[0],a.indexOf(o,a.length-o.length)===a.length-o.length)}function en(t,e,n,r){var d,i,a=0;if(e.getCountryCodeSource()!==CountryCodeSource.FROM_DEFAULT_COUNTRY){var o=String(e.getCountryCode());a=n.indexOf(o)+o.length()}for(var u=0;u0&&!fn.test(t)){var d=n[e-1];if(He(d)||We(d))return!1}var i=e+t.length;if(i=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function bn(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0;if(Pn(this,t),!(n=Cn(Cn({},n),{},{defaultCallingCode:n.defaultCallingCode,defaultCountry:n.defaultCountry&&k(n.defaultCountry,r)?n.defaultCountry:void 0,leniency:n.leniency||n.extended?"POSSIBLE":"VALID",maxTries:n.maxTries||kn})).leniency)throw new TypeError("`Leniency` not supplied");if(n.maxTries<0)throw new TypeError("`maxTries` not supplied");if(this.text=e,this.options=n,this.metadata=r,this.leniency=Ze[n.leniency],!this.leniency)throw new TypeError("Unknown leniency: ".concat(n.leniency,"."));this.maxTries=n.maxTries,this.PATTERN=new RegExp(jn,"ig"),this.state="NOT_READY",this.searchIndex=0,this.regExpCache=new Ae(32)}var e,n,r;return e=t,n=[{key:"find",value:function(){for(var t;this.maxTries>0&&null!==(t=this.PATTERN.exec(this.text));){var e=t[0],n=t.index;if(un(e=rn(e),n,this.text)){var r=this.parseAndVerify(e,n,this.text)||this.extractInnerMatch(e,n,this.text);if(r){if(this.options.v2){var d=new kt(r.country||r.countryCallingCode,r.phone,this.metadata);return r.ext&&(d.ext=r.ext),{startsAt:r.startsAt,endsAt:r.endsAt,number:d}}return r}}this.maxTries--}}},{key:"extractInnerMatch",value:function(t,e,n){for(var r,d=pn(wn);!(r=d()).done;)for(var i=r.value,a=!0,o=void 0,u=new RegExp(i,"g");this.maxTries>0&&null!==(o=u.exec(t));){if(a){var $=Te(Fn,t.slice(0,o.index)),l=this.parseAndVerify($,e,n);if(l)return l;this.maxTries--,a=!1}var c=Te(Fn,o[1]),s=t.indexOf(c,o.index),f=this.parseAndVerify(c,e+s,n);if(f)return f;this.maxTries--}}},{key:"parseAndVerify",value:function(t,e,n){if(gn(t,e,n,this.options.leniency)){var r=Yt(t,{extended:!0,defaultCountry:this.options.defaultCountry,defaultCallingCode:this.options.defaultCallingCode},this.metadata);if(r.possible&&this.leniency(r,t,this.metadata,this.regExpCache)){var d={startsAt:e,endsAt:e+t.length,phone:r.phone};return r.country&&"001"!==r.country?d.country=r.country:d.countryCallingCode=r.countryCallingCode,r.ext&&(d.ext=r.ext),d}}}},{key:"hasNext",value:function(){return"NOT_READY"===this.state&&(this.lastMatch=this.find(),this.lastMatch?this.state="READY":this.state="DONE"),"READY"===this.state}},{key:"next",value:function(){if(!this.hasNext())throw new Error("No next element");var t=this.lastMatch;return this.lastMatch=null,this.state="NOT_READY",t}}],n&&On(e.prototype,n),r&&On(e,r),Object.defineProperty(e,"prototype",{writable:!1}),t}();function Rn(t,e,n){for(var r=new Dn(t,e,n),d=[];r.hasNext();)d.push(r.next());return d}function Mn(){var t=de(arguments),e=t.text,n=t.options,r=t.metadata;return Rn(e,n,r)}function Ln(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function _n(){var t=de(arguments),e=t.text,n=t.options,r=t.metadata,d=new Dn(e,n,r);return Ln({},Symbol.iterator,(function(){return{next:function(){return d.hasNext()?{done:!1,value:d.next()}:{done:!0}}}}))}function Gn(t){return Gn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Gn(t)}function Bn(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Un(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function zn(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1;)1&e&&(n+=t),e>>=1,t+=t;return n+t}function er(t,e){return")"===t[e]&&e++,function(t){var e=[],n=0;for(;n=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function cr(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&void 0!==arguments[1]?arguments[1]:{},n=e.allowOverflow;if(!t)throw new Error("String is required");var r=hr(t.split(""),this.matchTree,!0);if(r&&r.match&&delete r.matchedChars,!r||!r.overflow||n)return r}}],n&&sr(e.prototype,n),r&&sr(e,r),Object.defineProperty(e,"prototype",{writable:!1}),t}();function hr(t,e,n){if("string"==typeof e){var r=t.join("");return 0===e.indexOf(r)?t.length===e.length?{match:!0,matchedChars:t}:{partialMatch:!0}:0===r.indexOf(e)?n&&t.length>e.length?{overflow:!0}:{match:!0,matchedChars:t.slice(0,e.length)}:void 0}if(Array.isArray(e)){for(var d=t.slice(),i=0;i=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function mr(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=0)){var n=this.getTemplateForFormat(t,e);return n?(this.setNationalNumberTemplate(n,e),!0):void 0}}},{key:"getSeparatorAfterNationalPrefix",value:function(t){return this.isNANP||t&&t.nationalPrefixFormattingRule()&&br.test(t.nationalPrefixFormattingRule())?" ":""}},{key:"getInternationalPrefixBeforeCountryCallingCode",value:function(t,e){var n=t.IDDPrefix,r=t.missingPlus;return n?e&&!1===e.spacing?n:n+" ":r?"":"+"}},{key:"getTemplate",value:function(t){if(this.template){for(var e=-1,n=0,r=t.international?this.getInternationalPrefixBeforeCountryCallingCode(t,{spacing:!1}):"";no.length)){var u=new RegExp("^"+a+"$"),$=n.replace(/\d/g,"9");u.test($)&&(o=$);var l,c=this.getFormatFormat(t,r);if(this.shouldTryNationalPrefixFormattingRule(t,{international:r,nationalPrefix:d})){var s=c.replace(pt,t.nationalPrefixFormattingRule());if(Z(t.nationalPrefixFormattingRule())===(d||"")+Z("$1")&&(c=s,l=!0,d))for(var f=d.length;f>0;)c=c.replace(/\d/,Qn),f--}var h=o.replace(new RegExp(a),c).replace(new RegExp("9","g"),Qn);return l||(i?h=tr(Qn,i.length)+" "+h:d&&(h=tr(Qn,d.length)+this.getSeparatorAfterNationalPrefix(t)+h)),r&&(h=gt(h)),h}}},{key:"formatNextNationalNumberDigits",value:function(t){var e=function(t,e,n){for(var r,d=Jn(n.split(""));!(r=d()).done;){var i=r.value;if(t.slice(e+1).search(qn)<0)return;e=t.search(qn),t=t.replace(qn,i)}return[t,e]}(this.populatedNationalNumberTemplate,this.populatedNationalNumberTemplatePosition,t);if(e)return this.populatedNationalNumberTemplate=e[0],this.populatedNationalNumberTemplatePosition=e[1],er(this.populatedNationalNumberTemplate,this.populatedNationalNumberTemplatePosition+1);this.resetFormat()}},{key:"shouldTryNationalPrefixFormattingRule",value:function(t,e){var n=e.international,r=e.nationalPrefix;if(t.nationalPrefixFormattingRule()){var d=t.usesNationalPrefix();if(d&&r||!d&&!n)return!0}}}],n&&gr(e.prototype,n),r&&gr(e,r),Object.defineProperty(e,"prototype",{writable:!1}),t}();function Nr(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null==n)return;var r,d,i=[],a=!0,o=!1;try{for(n=n.call(t);!(a=(r=n.next()).done)&&(i.push(r.value),!e||i.length!==e);a=!0);}catch(t){o=!0,d=t}finally{try{a||null==n.return||n.return()}finally{if(o)throw d}}return i}(t,e)||function(t,e){if(!t)return;if("string"==typeof t)return Pr(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Pr(t,e)}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Pr(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=3;if(e.appendDigits(t),r&&this.extractIddPrefix(e),this.isWaitingForCountryCallingCode(e)){if(!this.extractCountryCallingCode(e))return}else e.appendNationalSignificantNumberDigits(t);e.international||this.hasExtractedNationalSignificantNumber||this.extractNationalSignificantNumber(e.getNationalDigits(),(function(t){return e.update(t)}))}},{key:"isWaitingForCountryCallingCode",value:function(t){var e=t.international,n=t.callingCode;return e&&!n}},{key:"extractCountryCallingCode",value:function(t){var e=Bt("+"+t.getDigitsWithoutInternationalPrefix(),this.defaultCountry,this.defaultCallingCode,this.metadata.metadata),n=e.countryCallingCode,r=e.number;if(n)return t.setCallingCode(n),t.update({nationalSignificantNumber:r}),!0}},{key:"reset",value:function(t){if(t){this.hasSelectedNumberingPlan=!0;var e=t._nationalPrefixForParsing();this.couldPossiblyExtractAnotherNationalSignificantNumber=e&&Er.test(e)}else this.hasSelectedNumberingPlan=void 0,this.couldPossiblyExtractAnotherNationalSignificantNumber=void 0}},{key:"extractNationalSignificantNumber",value:function(t,e){if(this.hasSelectedNumberingPlan){var n=Lt(t,this.metadata),r=n.nationalPrefix,d=n.nationalNumber,i=n.carrierCode;if(d!==t)return this.onExtractedNationalNumber(r,i,d,t,e),!0}}},{key:"extractAnotherNationalSignificantNumber",value:function(t,e,n){if(!this.hasExtractedNationalSignificantNumber)return this.extractNationalSignificantNumber(t,n);if(this.couldPossiblyExtractAnotherNationalSignificantNumber){var r=Lt(t,this.metadata),d=r.nationalPrefix,i=r.nationalNumber,a=r.carrierCode;if(i!==e)return this.onExtractedNationalNumber(d,a,i,t,n),!0}}},{key:"onExtractedNationalNumber",value:function(t,e,n,r,d){var i,a,o=r.lastIndexOf(n);if(o>=0&&o===r.length-n.length){a=!0;var u=r.slice(0,o);u!==t&&(i=u)}d({nationalPrefix:t,carrierCode:e,nationalSignificantNumber:n,nationalSignificantNumberMatchesInput:a,complexPrefixBeforeNationalSignificantNumber:i}),this.hasExtractedNationalSignificantNumber=!0,this.onNationalSignificantNumberChange()}},{key:"reExtractNationalSignificantNumber",value:function(t){return!!this.extractAnotherNationalSignificantNumber(t.getNationalDigits(),t.nationalSignificantNumber,(function(e){return t.update(e)}))||(this.extractIddPrefix(t)||this.fixMissingPlus(t)?(this.extractCallingCodeAndNationalSignificantNumber(t),!0):void 0)}},{key:"extractIddPrefix",value:function(t){var e=t.international,n=t.IDDPrefix,r=t.digits;if(t.nationalSignificantNumber,!e&&!n){var d=Mt(r,this.defaultCountry,this.defaultCallingCode,this.metadata.metadata);return void 0!==d&&d!==r?(t.update({IDDPrefix:r.slice(0,r.length-d.length)}),this.startInternationalNumber(t,{country:void 0,callingCode:void 0}),!0):void 0}}},{key:"fixMissingPlus",value:function(t){if(!t.international){var e=Gt(t.digits,this.defaultCountry,this.defaultCallingCode,this.metadata.metadata),n=e.countryCallingCode;if(e.number,n)return t.update({missingPlus:!0}),this.startInternationalNumber(t,{country:t.country,callingCode:n}),!0}}},{key:"startInternationalNumber",value:function(t,e){var n=e.country,r=e.callingCode;t.startInternationalNumber(n,r),t.nationalSignificantNumber&&(t.resetNationalSignificantNumber(),this.onNationalSignificantNumberChange(),this.hasExtractedNationalSignificantNumber=void 0)}},{key:"extractCallingCodeAndNationalSignificantNumber",value:function(t){this.extractCountryCallingCode(t)&&this.extractNationalSignificantNumber(t.getNationalDigits(),(function(e){return t.update(e)}))}}])&&Or(e.prototype,n),r&&Or(e,r),Object.defineProperty(e,"prototype",{writable:!1}),t}();function Ir(t){return Ir="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ir(t)}function Tr(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null==n)return;var r,d,i=[],a=!0,o=!1;try{for(n=n.call(t);!(a=(r=n.next()).done)&&(i.push(r.value),!e||i.length!==e);a=!0);}catch(t){o=!0,d=t}finally{try{a||null==n.return||n.return()}finally{if(o)throw d}}return i}(t,e)||function(t,e){if(!t)return;if("string"==typeof t)return jr(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return jr(t,e)}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function jr(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1}},{key:"determineTheCountry",value:function(){this.state.setCountry(Wt(this.isInternational()?this.state.callingCode:this.defaultCallingCode,this.state.nationalSignificantNumber,this.metadata))}},{key:"getNumberValue",value:function(){var t=this.state,e=t.digits,n=t.callingCode,r=t.country,d=t.nationalSignificantNumber;if(e)return this.isInternational()?n?"+"+n+d:"+"+e:r||n?"+"+(r?this.metadata.countryCallingCode():n)+d:void 0}},{key:"getNumber",value:function(){var t=this.state,e=t.nationalSignificantNumber,n=t.carrierCode,r=t.callingCode,d=this._getCountry();if(e&&(d||r)){var i=new kt(d||r,e,this.metadata.metadata);return n&&(i.carrierCode=n),i}}},{key:"isPossible",value:function(){var t=this.getNumber();return!!t&&t.isPossible()}},{key:"isValid",value:function(){var t=this.getNumber();return!!t&&t.isValid()}},{key:"getNationalNumber",value:function(){return this.state.nationalSignificantNumber}},{key:"getChars",value:function(){return(this.state.international?"+":"")+this.state.digits}},{key:"getTemplate",value:function(){return this.formatter.getTemplate(this.state)||this.getNonFormattedTemplate()||""}}])&&Fr(e.prototype,n),r&&Fr(e,r),Object.defineProperty(e,"prototype",{writable:!1}),t}();function Dr(t){return new O(t).getCountries()}function Rr(t,e,n){if(e[t])return new kt(t,e[t],n)}function Mr(t,e,n){return n||(n=e,e=void 0),new kr(e,n).input(t)}function Lr(){return n(re,arguments)}function _r(t,n){return Dn.call(this,t,n,e)}function Gr(t){return kr.call(this,t,e)}function Br(){return n(F,arguments)}function Ur(){return O.call(this,e)}function Vr(){var t=de(arguments),e=t.text,n=t.options,r=t.metadata;return Yt(e,n,r)}function Wr(){return n(Vr,arguments)}function Hr(t){return Hr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Hr(t)}function Kr(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null==n)return;var r,d,i=[],a=!0,o=!1;try{for(n=n.call(t);!(a=(r=n.next()).done)&&(i.push(r.value),!e||i.length!==e);a=!0);}catch(t){o=!0,d=t}finally{try{a||null==n.return||n.return()}finally{if(o)throw d}}return i}(t,e)||function(t,e){if(!t)return;if("string"==typeof t)return Yr(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Yr(t,e)}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Yr(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);nt.length)&&(e=t.length);for(var n=0,r=new Array(e);n nb) return 1;\n if (nb > na) return -1;\n if (!isNaN(na) && isNaN(nb)) return 1;\n if (isNaN(na) && !isNaN(nb)) return -1;\n }\n\n if (a[1] && b[1]) {\n return a[1] > b[1] ? 1 : a[1] < b[1] ? -1 : 0;\n }\n\n return !a[1] && b[1] ? 1 : a[1] && !b[1] ? -1 : 0;\n}\n//# sourceMappingURL=semver-compare.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport compare from './tools/semver-compare.js'; // Added \"possibleLengths\" and renamed\n// \"country_phone_code_to_countries\" to \"country_calling_codes\".\n\nvar V2 = '1.0.18'; // Added \"idd_prefix\" and \"default_idd_prefix\".\n\nvar V3 = '1.2.0'; // Moved `001` country code to \"nonGeographic\" section of metadata.\n\nvar V4 = '1.7.35';\nvar DEFAULT_EXT_PREFIX = ' ext. ';\nvar CALLING_CODE_REG_EXP = /^\\d+$/;\n/**\r\n * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md\r\n */\n\nvar Metadata = /*#__PURE__*/function () {\n function Metadata(metadata) {\n _classCallCheck(this, Metadata);\n\n validateMetadata(metadata);\n this.metadata = metadata;\n setVersion.call(this, metadata);\n }\n\n _createClass(Metadata, [{\n key: \"getCountries\",\n value: function getCountries() {\n return Object.keys(this.metadata.countries).filter(function (_) {\n return _ !== '001';\n });\n }\n }, {\n key: \"getCountryMetadata\",\n value: function getCountryMetadata(countryCode) {\n return this.metadata.countries[countryCode];\n }\n }, {\n key: \"nonGeographic\",\n value: function nonGeographic() {\n if (this.v1 || this.v2 || this.v3) return; // `nonGeographical` was a typo.\n // It's present in metadata generated from `1.7.35` to `1.7.37`.\n // The test case could be found by searching for \"nonGeographical\".\n\n return this.metadata.nonGeographic || this.metadata.nonGeographical;\n }\n }, {\n key: \"hasCountry\",\n value: function hasCountry(country) {\n return this.getCountryMetadata(country) !== undefined;\n }\n }, {\n key: \"hasCallingCode\",\n value: function hasCallingCode(callingCode) {\n if (this.getCountryCodesForCallingCode(callingCode)) {\n return true;\n }\n\n if (this.nonGeographic()) {\n if (this.nonGeographic()[callingCode]) {\n return true;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return true;\n }\n }\n }\n }, {\n key: \"isNonGeographicCallingCode\",\n value: function isNonGeographicCallingCode(callingCode) {\n if (this.nonGeographic()) {\n return this.nonGeographic()[callingCode] ? true : false;\n } else {\n return this.getCountryCodesForCallingCode(callingCode) ? false : true;\n }\n } // Deprecated.\n\n }, {\n key: \"country\",\n value: function country(countryCode) {\n return this.selectNumberingPlan(countryCode);\n }\n }, {\n key: \"selectNumberingPlan\",\n value: function selectNumberingPlan(countryCode, callingCode) {\n // Supports just passing `callingCode` as the first argument.\n if (countryCode && CALLING_CODE_REG_EXP.test(countryCode)) {\n callingCode = countryCode;\n countryCode = null;\n }\n\n if (countryCode && countryCode !== '001') {\n if (!this.hasCountry(countryCode)) {\n throw new Error(\"Unknown country: \".concat(countryCode));\n }\n\n this.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this);\n } else if (callingCode) {\n if (!this.hasCallingCode(callingCode)) {\n throw new Error(\"Unknown calling code: \".concat(callingCode));\n }\n\n this.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this);\n } else {\n this.numberingPlan = undefined;\n }\n\n return this;\n }\n }, {\n key: \"getCountryCodesForCallingCode\",\n value: function getCountryCodesForCallingCode(callingCode) {\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes) {\n // Metadata before V4 included \"non-geographic entity\" calling codes\n // inside `country_calling_codes` (for example, `\"881\":[\"001\"]`).\n // Now the semantics of `country_calling_codes` has changed:\n // it's specifically for \"countries\" now.\n // Older versions of custom metadata will simply skip parsing\n // \"non-geographic entity\" phone numbers with new versions\n // of this library: it's not considered a bug,\n // because such numbers are extremely rare,\n // and developers extremely rarely use custom metadata.\n if (countryCodes.length === 1 && countryCodes[0].length === 3) {\n return;\n }\n\n return countryCodes;\n }\n }\n }, {\n key: \"getCountryCodeForCallingCode\",\n value: function getCountryCodeForCallingCode(callingCode) {\n var countryCodes = this.getCountryCodesForCallingCode(callingCode);\n\n if (countryCodes) {\n return countryCodes[0];\n }\n }\n }, {\n key: \"getNumberingPlanMetadata\",\n value: function getNumberingPlanMetadata(callingCode) {\n var countryCode = this.getCountryCodeForCallingCode(callingCode);\n\n if (countryCode) {\n return this.getCountryMetadata(countryCode);\n }\n\n if (this.nonGeographic()) {\n var metadata = this.nonGeographic()[callingCode];\n\n if (metadata) {\n return metadata;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n // In that metadata, there was no concept of \"non-geographic\" metadata\n // so metadata for `001` country code was stored along with other countries.\n // The test case can be found by searching for:\n // \"should work around `nonGeographic` metadata not existing\".\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return this.metadata.countries['001'];\n }\n }\n } // Deprecated.\n\n }, {\n key: \"countryCallingCode\",\n value: function countryCallingCode() {\n return this.numberingPlan.callingCode();\n } // Deprecated.\n\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n return this.numberingPlan.IDDPrefix();\n } // Deprecated.\n\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n return this.numberingPlan.defaultIDDPrefix();\n } // Deprecated.\n\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n return this.numberingPlan.nationalNumberPattern();\n } // Deprecated.\n\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n return this.numberingPlan.possibleLengths();\n } // Deprecated.\n\n }, {\n key: \"formats\",\n value: function formats() {\n return this.numberingPlan.formats();\n } // Deprecated.\n\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n return this.numberingPlan.nationalPrefixForParsing();\n } // Deprecated.\n\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.numberingPlan.nationalPrefixTransformRule();\n } // Deprecated.\n\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.numberingPlan.leadingDigits();\n } // Deprecated.\n\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n return this.numberingPlan.hasTypes();\n } // Deprecated.\n\n }, {\n key: \"type\",\n value: function type(_type) {\n return this.numberingPlan.type(_type);\n } // Deprecated.\n\n }, {\n key: \"ext\",\n value: function ext() {\n return this.numberingPlan.ext();\n }\n }, {\n key: \"countryCallingCodes\",\n value: function countryCallingCodes() {\n if (this.v1) return this.metadata.country_phone_code_to_countries;\n return this.metadata.country_calling_codes;\n } // Deprecated.\n\n }, {\n key: \"chooseCountryByCountryCallingCode\",\n value: function chooseCountryByCountryCallingCode(callingCode) {\n return this.selectNumberingPlan(callingCode);\n }\n }, {\n key: \"hasSelectedNumberingPlan\",\n value: function hasSelectedNumberingPlan() {\n return this.numberingPlan !== undefined;\n }\n }]);\n\n return Metadata;\n}();\n\nexport { Metadata as default };\n\nvar NumberingPlan = /*#__PURE__*/function () {\n function NumberingPlan(metadata, globalMetadataObject) {\n _classCallCheck(this, NumberingPlan);\n\n this.globalMetadataObject = globalMetadataObject;\n this.metadata = metadata;\n setVersion.call(this, globalMetadataObject.metadata);\n }\n\n _createClass(NumberingPlan, [{\n key: \"callingCode\",\n value: function callingCode() {\n return this.metadata[0];\n } // Formatting information for regions which share\n // a country calling code is contained by only one region\n // for performance reasons. For example, for NANPA region\n // (\"North American Numbering Plan Administration\",\n // which includes USA, Canada, Cayman Islands, Bahamas, etc)\n // it will be contained in the metadata for `US`.\n\n }, {\n key: \"getDefaultCountryMetadataForRegion\",\n value: function getDefaultCountryMetadataForRegion() {\n return this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode());\n } // Is always present.\n\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[1];\n } // Is only present when a country supports multiple IDD prefixes.\n\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[12];\n }\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n if (this.v1 || this.v2) return this.metadata[1];\n return this.metadata[2];\n } // \"possible length\" data is always present in Google's metadata.\n\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.v1) return;\n return this.metadata[this.v2 ? 2 : 3];\n }\n }, {\n key: \"_getFormats\",\n value: function _getFormats(metadata) {\n return metadata[this.v1 ? 2 : this.v2 ? 3 : 4];\n } // For countries of the same region (e.g. NANPA)\n // formats are all stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"formats\",\n value: function formats() {\n var _this = this;\n\n var formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || [];\n return formats.map(function (_) {\n return new Format(_, _this);\n });\n }\n }, {\n key: \"nationalPrefix\",\n value: function nationalPrefix() {\n return this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5];\n }\n }, {\n key: \"_getNationalPrefixFormattingRule\",\n value: function _getNationalPrefixFormattingRule(metadata) {\n return metadata[this.v1 ? 4 : this.v2 ? 5 : 6];\n } // For countries of the same region (e.g. NANPA)\n // national prefix formatting rule is stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"_nationalPrefixForParsing\",\n value: function _nationalPrefixForParsing() {\n return this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7];\n }\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n // If `national_prefix_for_parsing` is not set explicitly,\n // then infer it from `national_prefix` (if any)\n return this._nationalPrefixForParsing() || this.nationalPrefix();\n }\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8];\n }\n }, {\n key: \"_getNationalPrefixIsOptionalWhenFormatting\",\n value: function _getNationalPrefixIsOptionalWhenFormatting() {\n return !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9];\n } // For countries of the same region (e.g. NANPA)\n // \"national prefix is optional when formatting\" flag is\n // stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) || this._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10];\n }\n }, {\n key: \"types\",\n value: function types() {\n return this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11];\n }\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n // Versions 1.2.0 - 1.2.4: can be `[]`.\n\n /* istanbul ignore next */\n if (this.types() && this.types().length === 0) {\n return false;\n } // Versions <= 1.2.4: can be `undefined`.\n // Version >= 1.2.5: can be `0`.\n\n\n return !!this.types();\n }\n }, {\n key: \"type\",\n value: function type(_type2) {\n if (this.hasTypes() && getType(this.types(), _type2)) {\n return new Type(getType(this.types(), _type2), this);\n }\n }\n }, {\n key: \"ext\",\n value: function ext() {\n if (this.v1 || this.v2) return DEFAULT_EXT_PREFIX;\n return this.metadata[13] || DEFAULT_EXT_PREFIX;\n }\n }]);\n\n return NumberingPlan;\n}();\n\nvar Format = /*#__PURE__*/function () {\n function Format(format, metadata) {\n _classCallCheck(this, Format);\n\n this._format = format;\n this.metadata = metadata;\n }\n\n _createClass(Format, [{\n key: \"pattern\",\n value: function pattern() {\n return this._format[0];\n }\n }, {\n key: \"format\",\n value: function format() {\n return this._format[1];\n }\n }, {\n key: \"leadingDigitsPatterns\",\n value: function leadingDigitsPatterns() {\n return this._format[2] || [];\n }\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._format[3] || this.metadata.nationalPrefixFormattingRule();\n }\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n }\n }, {\n key: \"nationalPrefixIsMandatoryWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsMandatoryWhenFormattingInNationalFormat() {\n // National prefix is omitted if there's no national prefix formatting rule\n // set for this country, or when the national prefix formatting rule\n // contains no national prefix itself, or when this rule is set but\n // national prefix is optional for this phone number format\n // (and it is not enforced explicitly)\n return this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n } // Checks whether national prefix formatting rule contains national prefix.\n\n }, {\n key: \"usesNationalPrefix\",\n value: function usesNationalPrefix() {\n return this.nationalPrefixFormattingRule() && // Check that national prefix formatting rule is not a \"dummy\" one.\n !FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule()) // In compressed metadata, `this.nationalPrefixFormattingRule()` is `0`\n // when `national_prefix_formatting_rule` is not present.\n // So, `true` or `false` are returned explicitly here, so that\n // `0` number isn't returned.\n ? true : false;\n }\n }, {\n key: \"internationalFormat\",\n value: function internationalFormat() {\n return this._format[5] || this.format();\n }\n }]);\n\n return Format;\n}();\n/**\r\n * A pattern that is used to determine if the national prefix formatting rule\r\n * has the first group only, i.e., does not start with the national prefix.\r\n * Note that the pattern explicitly allows for unbalanced parentheses.\r\n */\n\n\nvar FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\\(?\\$1\\)?$/;\n\nvar Type = /*#__PURE__*/function () {\n function Type(type, metadata) {\n _classCallCheck(this, Type);\n\n this.type = type;\n this.metadata = metadata;\n }\n\n _createClass(Type, [{\n key: \"pattern\",\n value: function pattern() {\n if (this.metadata.v1) return this.type;\n return this.type[0];\n }\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.metadata.v1) return;\n return this.type[1] || this.metadata.possibleLengths();\n }\n }]);\n\n return Type;\n}();\n\nfunction getType(types, type) {\n switch (type) {\n case 'FIXED_LINE':\n return types[0];\n\n case 'MOBILE':\n return types[1];\n\n case 'TOLL_FREE':\n return types[2];\n\n case 'PREMIUM_RATE':\n return types[3];\n\n case 'PERSONAL_NUMBER':\n return types[4];\n\n case 'VOICEMAIL':\n return types[5];\n\n case 'UAN':\n return types[6];\n\n case 'PAGER':\n return types[7];\n\n case 'VOIP':\n return types[8];\n\n case 'SHARED_COST':\n return types[9];\n }\n}\n\nexport function validateMetadata(metadata) {\n if (!metadata) {\n throw new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.');\n } // `country_phone_code_to_countries` was renamed to\n // `country_calling_codes` in `1.0.18`.\n\n\n if (!is_object(metadata) || !is_object(metadata.countries)) {\n throw new Error(\"[libphonenumber-js] `metadata` argument was passed but it's not a valid metadata. Must be an object having `.countries` child object property. Got \".concat(is_object(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + type_of(metadata) + ': ' + metadata, \".\"));\n }\n} // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\nvar is_object = function is_object(_) {\n return _typeof(_) === 'object';\n}; // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\n\nvar type_of = function type_of(_) {\n return _typeof(_);\n};\n/**\r\n * Returns extension prefix for a country.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string?}\r\n * @example\r\n * // Returns \" ext. \"\r\n * getExtPrefix(\"US\")\r\n */\n\n\nexport function getExtPrefix(country, metadata) {\n metadata = new Metadata(metadata);\n\n if (metadata.hasCountry(country)) {\n return metadata.country(country).ext();\n }\n\n return DEFAULT_EXT_PREFIX;\n}\n/**\r\n * Returns \"country calling code\" for a country.\r\n * Throws an error if the country doesn't exist or isn't supported by this library.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string}\r\n * @example\r\n * // Returns \"44\"\r\n * getCountryCallingCode(\"GB\")\r\n */\n\nexport function getCountryCallingCode(country, metadata) {\n metadata = new Metadata(metadata);\n\n if (metadata.hasCountry(country)) {\n return metadata.country(country).countryCallingCode();\n }\n\n throw new Error(\"Unknown country: \".concat(country));\n}\nexport function isSupportedCountry(country, metadata) {\n // metadata = new Metadata(metadata)\n // return metadata.hasCountry(country)\n return metadata.countries[country] !== undefined;\n}\n\nfunction setVersion(metadata) {\n var version = metadata.version;\n\n if (typeof version === 'number') {\n this.v1 = version === 1;\n this.v2 = version === 2;\n this.v3 = version === 3;\n this.v4 = version === 4;\n } else {\n if (!version) {\n this.v1 = true;\n } else if (compare(version, V3) === -1) {\n this.v2 = true;\n } else if (compare(version, V4) === -1) {\n this.v3 = true;\n } else {\n this.v4 = true;\n }\n }\n} // const ISO_COUNTRY_CODE = /^[A-Z]{2}$/\n// function isCountryCode(countryCode) {\n// \treturn ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode)\n// }\n//# sourceMappingURL=metadata.js.map","import { VALID_DIGITS } from '../../constants.js'; // The RFC 3966 format for extensions.\n\nvar RFC3966_EXTN_PREFIX = ';ext=';\n/**\r\n * Helper method for constructing regular expressions for parsing. Creates\r\n * an expression that captures up to max_length digits.\r\n * @return {string} RegEx pattern to capture extension digits.\r\n */\n\nvar getExtensionDigitsPattern = function getExtensionDigitsPattern(maxLength) {\n return \"([\".concat(VALID_DIGITS, \"]{1,\").concat(maxLength, \"})\");\n};\n/**\r\n * Helper initialiser method to create the regular-expression pattern to match\r\n * extensions.\r\n * Copy-pasted from Google's `libphonenumber`:\r\n * https://github.com/google/libphonenumber/blob/55b2646ec9393f4d3d6661b9c82ef9e258e8b829/javascript/i18n/phonenumbers/phonenumberutil.js#L759-L766\r\n * @return {string} RegEx pattern to capture extensions.\r\n */\n\n\nexport default function createExtensionPattern(purpose) {\n // We cap the maximum length of an extension based on the ambiguity of the way\n // the extension is prefixed. As per ITU, the officially allowed length for\n // extensions is actually 40, but we don't support this since we haven't seen real\n // examples and this introduces many false interpretations as the extension labels\n // are not standardized.\n\n /** @type {string} */\n var extLimitAfterExplicitLabel = '20';\n /** @type {string} */\n\n var extLimitAfterLikelyLabel = '15';\n /** @type {string} */\n\n var extLimitAfterAmbiguousChar = '9';\n /** @type {string} */\n\n var extLimitWhenNotSure = '6';\n /** @type {string} */\n\n var possibleSeparatorsBetweenNumberAndExtLabel = \"[ \\xA0\\\\t,]*\"; // Optional full stop (.) or colon, followed by zero or more spaces/tabs/commas.\n\n /** @type {string} */\n\n var possibleCharsAfterExtLabel = \"[:\\\\.\\uFF0E]?[ \\xA0\\\\t,-]*\";\n /** @type {string} */\n\n var optionalExtnSuffix = \"#?\"; // Here the extension is called out in more explicit way, i.e mentioning it obvious\n // patterns like \"ext.\".\n\n /** @type {string} */\n\n var explicitExtLabels = \"(?:e?xt(?:ensi(?:o\\u0301?|\\xF3))?n?|\\uFF45?\\uFF58\\uFF54\\uFF4E?|\\u0434\\u043E\\u0431|anexo)\"; // One-character symbols that can be used to indicate an extension, and less\n // commonly used or more ambiguous extension labels.\n\n /** @type {string} */\n\n var ambiguousExtLabels = \"(?:[x\\uFF58#\\uFF03~\\uFF5E]|int|\\uFF49\\uFF4E\\uFF54)\"; // When extension is not separated clearly.\n\n /** @type {string} */\n\n var ambiguousSeparator = \"[- ]+\"; // This is the same as possibleSeparatorsBetweenNumberAndExtLabel, but not matching\n // comma as extension label may have it.\n\n /** @type {string} */\n\n var possibleSeparatorsNumberExtLabelNoComma = \"[ \\xA0\\\\t]*\"; // \",,\" is commonly used for auto dialling the extension when connected. First\n // comma is matched through possibleSeparatorsBetweenNumberAndExtLabel, so we do\n // not repeat it here. Semi-colon works in Iphone and Android also to pop up a\n // button with the extension number following.\n\n /** @type {string} */\n\n var autoDiallingAndExtLabelsFound = \"(?:,{2}|;)\";\n /** @type {string} */\n\n var rfcExtn = RFC3966_EXTN_PREFIX + getExtensionDigitsPattern(extLimitAfterExplicitLabel);\n /** @type {string} */\n\n var explicitExtn = possibleSeparatorsBetweenNumberAndExtLabel + explicitExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterExplicitLabel) + optionalExtnSuffix;\n /** @type {string} */\n\n var ambiguousExtn = possibleSeparatorsBetweenNumberAndExtLabel + ambiguousExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix;\n /** @type {string} */\n\n var americanStyleExtnWithSuffix = ambiguousSeparator + getExtensionDigitsPattern(extLimitWhenNotSure) + \"#\";\n /** @type {string} */\n\n var autoDiallingExtn = possibleSeparatorsNumberExtLabelNoComma + autoDiallingAndExtLabelsFound + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterLikelyLabel) + optionalExtnSuffix;\n /** @type {string} */\n\n var onlyCommasExtn = possibleSeparatorsNumberExtLabelNoComma + \"(?:,)+\" + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix; // The first regular expression covers RFC 3966 format, where the extension is added\n // using \";ext=\". The second more generic where extension is mentioned with explicit\n // labels like \"ext:\". In both the above cases we allow more numbers in extension than\n // any other extension labels. The third one captures when single character extension\n // labels or less commonly used labels are used. In such cases we capture fewer\n // extension digits in order to reduce the chance of falsely interpreting two\n // numbers beside each other as a number + extension. The fourth one covers the\n // special case of American numbers where the extension is written with a hash\n // at the end, such as \"- 503#\". The fifth one is exclusively for extension\n // autodialling formats which are used when dialling and in this case we accept longer\n // extensions. The last one is more liberal on the number of commas that acts as\n // extension labels, so we have a strict cap on the number of digits in such extensions.\n\n return rfcExtn + \"|\" + explicitExtn + \"|\" + ambiguousExtn + \"|\" + americanStyleExtnWithSuffix + \"|\" + autoDiallingExtn + \"|\" + onlyCommasExtn;\n}\n//# sourceMappingURL=createExtensionPattern.js.map","import { MIN_LENGTH_FOR_NSN, VALID_DIGITS, VALID_PUNCTUATION, PLUS_CHARS } from '../constants.js';\nimport createExtensionPattern from './extension/createExtensionPattern.js'; // Regular expression of viable phone numbers. This is location independent.\n// Checks we have at least three leading digits, and only valid punctuation,\n// alpha characters and digits in the phone number. Does not include extension\n// data. The symbol 'x' is allowed here as valid punctuation since it is often\n// used as a placeholder for carrier codes, for example in Brazilian phone\n// numbers. We also allow multiple '+' characters at the start.\n//\n// Corresponds to the following:\n// [digits]{minLengthNsn}|\n// plus_sign*\n// (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])*\n//\n// The first reg-ex is to allow short numbers (two digits long) to be parsed if\n// they are entered as \"15\" etc, but only if there is no punctuation in them.\n// The second expression restricts the number of digits to three or more, but\n// then allows them to be in international form, and to have alpha-characters\n// and punctuation. We split up the two reg-exes here and combine them when\n// creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it\n// with ^ and append $ to each branch.\n//\n// \"Note VALID_PUNCTUATION starts with a -,\n// so must be the first in the range\" (c) Google devs.\n// (wtf did they mean by saying that; probably nothing)\n//\n\nvar MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + VALID_DIGITS + ']{' + MIN_LENGTH_FOR_NSN + '}'; //\n// And this is the second reg-exp:\n// (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp)\n//\n\nexport var VALID_PHONE_NUMBER = '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){3,}' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*'; // This regular expression isn't present in Google's `libphonenumber`\n// and is only used to determine whether the phone number being input\n// is too short for it to even consider it a \"valid\" number.\n// This is just a way to differentiate between a really invalid phone\n// number like \"abcde\" and a valid phone number that a user has just\n// started inputting, like \"+1\" or \"1\": both these cases would be\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\n// library can provide a more detailed error message — whether it's\n// really \"not a number\", or is it just a start of a valid phone number.\n\nvar VALID_PHONE_NUMBER_START_REG_EXP = new RegExp('^' + '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){1,2}' + '$', 'i');\nexport var VALID_PHONE_NUMBER_WITH_EXTENSION = VALID_PHONE_NUMBER + // Phone number extensions\n'(?:' + createExtensionPattern() + ')?'; // The combined regular expression for valid phone numbers:\n//\n\nvar VALID_PHONE_NUMBER_PATTERN = new RegExp( // Either a short two-digit-only phone number\n'^' + MIN_LENGTH_PHONE_NUMBER_PATTERN + '$' + '|' + // Or a longer fully parsed phone number (min 3 characters)\n'^' + VALID_PHONE_NUMBER_WITH_EXTENSION + '$', 'i'); // Checks to see if the string of characters could possibly be a phone number at\n// all. At the moment, checks to see that the string begins with at least 2\n// digits, ignoring any punctuation commonly found in phone numbers. This method\n// does not require the number to be normalized in advance - but does assume\n// that leading non-number symbols have been removed, such as by the method\n// `extract_possible_number`.\n//\n\nexport default function isViablePhoneNumber(number) {\n return number.length >= MIN_LENGTH_FOR_NSN && VALID_PHONE_NUMBER_PATTERN.test(number);\n} // This is just a way to differentiate between a really invalid phone\n// number like \"abcde\" and a valid phone number that a user has just\n// started inputting, like \"+1\" or \"1\": both these cases would be\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\n// library can provide a more detailed error message — whether it's\n// really \"not a number\", or is it just a start of a valid phone number.\n\nexport function isViablePhoneNumberStart(number) {\n return VALID_PHONE_NUMBER_START_REG_EXP.test(number);\n}\n//# sourceMappingURL=isViablePhoneNumber.js.map","import createExtensionPattern from './createExtensionPattern.js'; // Regexp of all known extension prefixes used by different regions followed by\n// 1 or more valid digits, for use when parsing.\n\nvar EXTN_PATTERN = new RegExp('(?:' + createExtensionPattern() + ')$', 'i'); // Strips any extension (as in, the part of the number dialled after the call is\n// connected, usually indicated with extn, ext, x or similar) from the end of\n// the number, and returns it.\n\nexport default function extractExtension(number) {\n var start = number.search(EXTN_PATTERN);\n\n if (start < 0) {\n return {};\n } // If we find a potential extension, and the number preceding this is a viable\n // number, we assume it is an extension.\n\n\n var numberWithoutExtension = number.slice(0, start);\n var matches = number.match(EXTN_PATTERN);\n var i = 1;\n\n while (i < matches.length) {\n if (matches[i]) {\n return {\n number: numberWithoutExtension,\n ext: matches[i]\n };\n }\n\n i++;\n }\n}\n//# sourceMappingURL=extractExtension.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n// These mappings map a character (key) to a specific digit that should\n// replace it for normalization purposes. Non-European digits that\n// may be used in phone numbers are mapped to a European equivalent.\n//\n// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\n//\nexport var DIGITS = {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n \"\\uFF10\": '0',\n // Fullwidth digit 0\n \"\\uFF11\": '1',\n // Fullwidth digit 1\n \"\\uFF12\": '2',\n // Fullwidth digit 2\n \"\\uFF13\": '3',\n // Fullwidth digit 3\n \"\\uFF14\": '4',\n // Fullwidth digit 4\n \"\\uFF15\": '5',\n // Fullwidth digit 5\n \"\\uFF16\": '6',\n // Fullwidth digit 6\n \"\\uFF17\": '7',\n // Fullwidth digit 7\n \"\\uFF18\": '8',\n // Fullwidth digit 8\n \"\\uFF19\": '9',\n // Fullwidth digit 9\n \"\\u0660\": '0',\n // Arabic-indic digit 0\n \"\\u0661\": '1',\n // Arabic-indic digit 1\n \"\\u0662\": '2',\n // Arabic-indic digit 2\n \"\\u0663\": '3',\n // Arabic-indic digit 3\n \"\\u0664\": '4',\n // Arabic-indic digit 4\n \"\\u0665\": '5',\n // Arabic-indic digit 5\n \"\\u0666\": '6',\n // Arabic-indic digit 6\n \"\\u0667\": '7',\n // Arabic-indic digit 7\n \"\\u0668\": '8',\n // Arabic-indic digit 8\n \"\\u0669\": '9',\n // Arabic-indic digit 9\n \"\\u06F0\": '0',\n // Eastern-Arabic digit 0\n \"\\u06F1\": '1',\n // Eastern-Arabic digit 1\n \"\\u06F2\": '2',\n // Eastern-Arabic digit 2\n \"\\u06F3\": '3',\n // Eastern-Arabic digit 3\n \"\\u06F4\": '4',\n // Eastern-Arabic digit 4\n \"\\u06F5\": '5',\n // Eastern-Arabic digit 5\n \"\\u06F6\": '6',\n // Eastern-Arabic digit 6\n \"\\u06F7\": '7',\n // Eastern-Arabic digit 7\n \"\\u06F8\": '8',\n // Eastern-Arabic digit 8\n \"\\u06F9\": '9' // Eastern-Arabic digit 9\n\n};\nexport function parseDigit(character) {\n return DIGITS[character];\n}\n/**\r\n * Parses phone number digits from a string.\r\n * Drops all punctuation leaving only digits.\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * parseDigits('8 (800) 555')\r\n * // Outputs '8800555'.\r\n * ```\r\n */\n\nexport default function parseDigits(string) {\n var result = ''; // Using `.split('')` here instead of normal `for ... of`\n // because the importing application doesn't neccessarily include an ES6 polyfill.\n // The `.split('')` approach discards \"exotic\" UTF-8 characters\n // (the ones consisting of four bytes) but digits\n // (including non-European ones) don't fall into that range\n // so such \"exotic\" characters would be discarded anyway.\n\n for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) {\n var character = _step.value;\n var digit = parseDigit(character);\n\n if (digit) {\n result += digit;\n }\n }\n\n return result;\n}\n//# sourceMappingURL=parseDigits.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { parseDigit } from './helpers/parseDigits.js';\n/**\r\n * Parses phone number characters from a string.\r\n * Drops all punctuation leaving only digits and the leading `+` sign (if any).\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * // Outputs '8800555'.\r\n * parseIncompletePhoneNumber('8 (800) 555')\r\n * // Outputs '+7800555'.\r\n * parseIncompletePhoneNumber('+7 800 555')\r\n * ```\r\n */\n\nexport default function parseIncompletePhoneNumber(string) {\n var result = ''; // Using `.split('')` here instead of normal `for ... of`\n // because the importing application doesn't neccessarily include an ES6 polyfill.\n // The `.split('')` approach discards \"exotic\" UTF-8 characters\n // (the ones consisting of four bytes) but digits\n // (including non-European ones) don't fall into that range\n // so such \"exotic\" characters would be discarded anyway.\n\n for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) {\n var character = _step.value;\n result += parsePhoneNumberCharacter(character, result) || '';\n }\n\n return result;\n}\n/**\r\n * Parses next character while parsing phone number digits (including a `+`)\r\n * from text: discards everything except `+` and digits, and `+` is only allowed\r\n * at the start of a phone number.\r\n * For example, is used in `react-phone-number-input` where it uses\r\n * [`input-format`](https://gitlab.com/catamphetamine/input-format).\r\n * @param {string} character - Yet another character from raw input string.\r\n * @param {string?} prevParsedCharacters - Previous parsed characters.\r\n * @param {object} meta - Optional custom use-case-specific metadata.\r\n * @return {string?} The parsed character.\r\n */\n\nexport function parsePhoneNumberCharacter(character, prevParsedCharacters) {\n // Only allow a leading `+`.\n if (character === '+') {\n // If this `+` is not the first parsed character\n // then discard it.\n if (prevParsedCharacters) {\n return;\n }\n\n return '+';\n } // Allow digits.\n\n\n return parseDigit(character);\n}\n//# sourceMappingURL=parseIncompletePhoneNumber.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/**\r\n * Merges two arrays.\r\n * @param {*} a\r\n * @param {*} b\r\n * @return {*}\r\n */\nexport default function mergeArrays(a, b) {\n var merged = a.slice();\n\n for (var _iterator = _createForOfIteratorHelperLoose(b), _step; !(_step = _iterator()).done;) {\n var element = _step.value;\n\n if (a.indexOf(element) < 0) {\n merged.push(element);\n }\n }\n\n return merged.sort(function (a, b) {\n return a - b;\n }); // ES6 version, requires Set polyfill.\n // let merged = new Set(a)\n // for (const element of b) {\n // \tmerged.add(i)\n // }\n // return Array.from(merged).sort((a, b) => a - b)\n}\n//# sourceMappingURL=mergeArrays.js.map","import mergeArrays from './mergeArrays.js';\nexport default function checkNumberLength(nationalNumber, metadata) {\n return checkNumberLengthForType(nationalNumber, undefined, metadata);\n} // Checks whether a number is possible for the country based on its length.\n// Should only be called for the \"new\" metadata which has \"possible lengths\".\n\nexport function checkNumberLengthForType(nationalNumber, type, metadata) {\n var type_info = metadata.type(type); // There should always be \"\" set for every type element.\n // This is declared in the XML schema.\n // For size efficiency, where a sub-description (e.g. fixed-line)\n // has the same \"\" as the \"general description\", this is missing,\n // so we fall back to the \"general description\". Where no numbers of the type\n // exist at all, there is one possible length (-1) which is guaranteed\n // not to match the length of any real phone number.\n\n var possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths(); // let local_lengths = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal()\n // Metadata before version `1.0.18` didn't contain `possible_lengths`.\n\n if (!possible_lengths) {\n return 'IS_POSSIBLE';\n }\n\n if (type === 'FIXED_LINE_OR_MOBILE') {\n // No such country in metadata.\n\n /* istanbul ignore next */\n if (!metadata.type('FIXED_LINE')) {\n // The rare case has been encountered where no fixedLine data is available\n // (true for some non-geographic entities), so we just check mobile.\n return checkNumberLengthForType(nationalNumber, 'MOBILE', metadata);\n }\n\n var mobile_type = metadata.type('MOBILE');\n\n if (mobile_type) {\n // Merge the mobile data in if there was any. \"Concat\" creates a new\n // array, it doesn't edit possible_lengths in place, so we don't need a copy.\n // Note that when adding the possible lengths from mobile, we have\n // to again check they aren't empty since if they are this indicates\n // they are the same as the general desc and should be obtained from there.\n possible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths()); // The current list is sorted; we need to merge in the new list and\n // re-sort (duplicates are okay). Sorting isn't so expensive because\n // the lists are very small.\n // if (local_lengths) {\n // \tlocal_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal())\n // } else {\n // \tlocal_lengths = mobile_type.possibleLengthsLocal()\n // }\n }\n } // If the type doesn't exist then return 'INVALID_LENGTH'.\n else if (type && !type_info) {\n return 'INVALID_LENGTH';\n }\n\n var actual_length = nationalNumber.length; // In `libphonenumber-js` all \"local-only\" formats are dropped for simplicity.\n // // This is safe because there is never an overlap beween the possible lengths\n // // and the local-only lengths; this is checked at build time.\n // if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0)\n // {\n // \treturn 'IS_POSSIBLE_LOCAL_ONLY'\n // }\n\n var minimum_length = possible_lengths[0];\n\n if (minimum_length === actual_length) {\n return 'IS_POSSIBLE';\n }\n\n if (minimum_length > actual_length) {\n return 'TOO_SHORT';\n }\n\n if (possible_lengths[possible_lengths.length - 1] < actual_length) {\n return 'TOO_LONG';\n } // We skip the first element since we've already checked it.\n\n\n return possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH';\n}\n//# sourceMappingURL=checkNumberLength.js.map","import Metadata from './metadata.js';\nimport checkNumberLength from './helpers/checkNumberLength.js';\nexport default function isPossiblePhoneNumber(input, options, metadata) {\n /* istanbul ignore if */\n if (options === undefined) {\n options = {};\n }\n\n metadata = new Metadata(metadata);\n\n if (options.v2) {\n if (!input.countryCallingCode) {\n throw new Error('Invalid phone number object passed');\n }\n\n metadata.selectNumberingPlan(input.countryCallingCode);\n } else {\n if (!input.phone) {\n return false;\n }\n\n if (input.country) {\n if (!metadata.hasCountry(input.country)) {\n throw new Error(\"Unknown country: \".concat(input.country));\n }\n\n metadata.country(input.country);\n } else {\n if (!input.countryCallingCode) {\n throw new Error('Invalid phone number object passed');\n }\n\n metadata.selectNumberingPlan(input.countryCallingCode);\n }\n } // Old metadata (< 1.0.18) had no \"possible length\" data.\n\n\n if (metadata.possibleLengths()) {\n return isPossibleNumber(input.phone || input.nationalNumber, metadata);\n } else {\n // There was a bug between `1.7.35` and `1.7.37` where \"possible_lengths\"\n // were missing for \"non-geographical\" numbering plans.\n // Just assume the number is possible in such cases:\n // it's unlikely that anyone generated their custom metadata\n // in that short period of time (one day).\n // This code can be removed in some future major version update.\n if (input.countryCallingCode && metadata.isNonGeographicCallingCode(input.countryCallingCode)) {\n // \"Non-geographic entities\" did't have `possibleLengths`\n // due to a bug in metadata generation process.\n return true;\n } else {\n throw new Error('Missing \"possibleLengths\" in metadata. Perhaps the metadata has been generated before v1.0.18.');\n }\n }\n}\nexport function isPossibleNumber(nationalNumber, metadata) {\n //, isInternational) {\n switch (checkNumberLength(nationalNumber, metadata)) {\n case 'IS_POSSIBLE':\n return true;\n // This library ignores \"local-only\" phone numbers (for simplicity).\n // See the readme for more info on what are \"local-only\" phone numbers.\n // case 'IS_POSSIBLE_LOCAL_ONLY':\n // \treturn !isInternational\n\n default:\n return false;\n }\n}\n//# sourceMappingURL=isPossibleNumber_.js.map","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport isViablePhoneNumber from './isViablePhoneNumber.js'; // https://www.ietf.org/rfc/rfc3966.txt\n\n/**\r\n * @param {string} text - Phone URI (RFC 3966).\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\n\nexport function parseRFC3966(text) {\n var number;\n var ext; // Replace \"tel:\" with \"tel=\" for parsing convenience.\n\n text = text.replace(/^tel:/, 'tel=');\n\n for (var _iterator = _createForOfIteratorHelperLoose(text.split(';')), _step; !(_step = _iterator()).done;) {\n var part = _step.value;\n\n var _part$split = part.split('='),\n _part$split2 = _slicedToArray(_part$split, 2),\n name = _part$split2[0],\n value = _part$split2[1];\n\n switch (name) {\n case 'tel':\n number = value;\n break;\n\n case 'ext':\n ext = value;\n break;\n\n case 'phone-context':\n // Only \"country contexts\" are supported.\n // \"Domain contexts\" are ignored.\n if (value[0] === '+') {\n number = value + number;\n }\n\n break;\n }\n } // If the phone number is not viable, then abort.\n\n\n if (!isViablePhoneNumber(number)) {\n return {};\n }\n\n var result = {\n number: number\n };\n\n if (ext) {\n result.ext = ext;\n }\n\n return result;\n}\n/**\r\n * @param {object} - `{ ?number, ?extension }`.\r\n * @return {string} Phone URI (RFC 3966).\r\n */\n\nexport function formatRFC3966(_ref) {\n var number = _ref.number,\n ext = _ref.ext;\n\n if (!number) {\n return '';\n }\n\n if (number[0] !== '+') {\n throw new Error(\"\\\"formatRFC3966()\\\" expects \\\"number\\\" to be in E.164 format.\");\n }\n\n return \"tel:\".concat(number).concat(ext ? ';ext=' + ext : '');\n}\n//# sourceMappingURL=RFC3966.js.map","/**\r\n * Checks whether the entire input sequence can be matched\r\n * against the regular expression.\r\n * @return {boolean}\r\n */\nexport default function matchesEntirely(text, regular_expression) {\n // If assigning the `''` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n text = text || '';\n return new RegExp('^(?:' + regular_expression + ')$').test(text);\n}\n//# sourceMappingURL=matchesEntirely.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport Metadata from '../metadata.js';\nimport matchesEntirely from './matchesEntirely.js';\nvar NON_FIXED_LINE_PHONE_TYPES = ['MOBILE', 'PREMIUM_RATE', 'TOLL_FREE', 'SHARED_COST', 'VOIP', 'PERSONAL_NUMBER', 'PAGER', 'UAN', 'VOICEMAIL']; // Finds out national phone number type (fixed line, mobile, etc)\n\nexport default function getNumberType(input, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {}; // When `parse()` returned `{}`\n // meaning that the phone number is not a valid one.\n\n if (!input.country) {\n return;\n }\n\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(input.country, input.countryCallingCode);\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // The following is copy-pasted from the original function:\n // https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835\n // Is this national number even valid for this country\n\n if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) {\n return;\n } // Is it fixed line number\n\n\n if (isNumberTypeEqualTo(nationalNumber, 'FIXED_LINE', metadata)) {\n // Because duplicate regular expressions are removed\n // to reduce metadata size, if \"mobile\" pattern is \"\"\n // then it means it was removed due to being a duplicate of the fixed-line pattern.\n //\n if (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') {\n return 'FIXED_LINE_OR_MOBILE';\n } // `MOBILE` type pattern isn't included if it matched `FIXED_LINE` one.\n // For example, for \"US\" country.\n // Old metadata (< `1.0.18`) had a specific \"types\" data structure\n // that happened to be `undefined` for `MOBILE` in that case.\n // Newer metadata (>= `1.0.18`) has another data structure that is\n // not `undefined` for `MOBILE` in that case (it's just an empty array).\n // So this `if` is just for backwards compatibility with old metadata.\n\n\n if (!metadata.type('MOBILE')) {\n return 'FIXED_LINE_OR_MOBILE';\n } // Check if the number happens to qualify as both fixed line and mobile.\n // (no such country in the minimal metadata set)\n\n /* istanbul ignore if */\n\n\n if (isNumberTypeEqualTo(nationalNumber, 'MOBILE', metadata)) {\n return 'FIXED_LINE_OR_MOBILE';\n }\n\n return 'FIXED_LINE';\n }\n\n for (var _iterator = _createForOfIteratorHelperLoose(NON_FIXED_LINE_PHONE_TYPES), _step; !(_step = _iterator()).done;) {\n var type = _step.value;\n\n if (isNumberTypeEqualTo(nationalNumber, type, metadata)) {\n return type;\n }\n }\n}\nexport function isNumberTypeEqualTo(nationalNumber, type, metadata) {\n type = metadata.type(type);\n\n if (!type || !type.pattern()) {\n return false;\n } // Check if any possible number lengths are present;\n // if so, we use them to avoid checking\n // the validation pattern if they don't match.\n // If they are absent, this means they match\n // the general description, which we have\n // already checked before a specific number type.\n\n\n if (type.possibleLengths() && type.possibleLengths().indexOf(nationalNumber.length) < 0) {\n return false;\n }\n\n return matchesEntirely(nationalNumber, type.pattern());\n}\n//# sourceMappingURL=getNumberType.js.map","import Metadata from './metadata.js';\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport getNumberType from './helpers/getNumberType.js';\n/**\r\n * Checks if a given phone number is valid.\r\n *\r\n * If the `number` is a string, it will be parsed to an object,\r\n * but only if it contains only valid phone number characters (including punctuation).\r\n * If the `number` is an object, it is used as is.\r\n *\r\n * The optional `defaultCountry` argument is the default country.\r\n * I.e. it does not restrict to just that country,\r\n * e.g. in those cases where several countries share\r\n * the same phone numbering rules (NANPA, Britain, etc).\r\n * For example, even though the number `07624 369230`\r\n * belongs to the Isle of Man (\"IM\" country code)\r\n * calling `isValidNumber('07624369230', 'GB', metadata)`\r\n * still returns `true` because the country is not restricted to `GB`,\r\n * it's just that `GB` is the default one for the phone numbering rules.\r\n * For restricting the country see `isValidNumberForRegion()`\r\n * though restricting a country might not be a good idea.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n *\r\n * Examples:\r\n *\r\n * ```js\r\n * isValidNumber('+78005553535', metadata)\r\n * isValidNumber('8005553535', 'RU', metadata)\r\n * isValidNumber('88005553535', 'RU', metadata)\r\n * isValidNumber({ phone: '8005553535', country: 'RU' }, metadata)\r\n * ```\r\n */\n\nexport default function isValidNumber(input, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {};\n metadata = new Metadata(metadata); // This is just to support `isValidNumber({})`\n // for cases when `parseNumber()` returns `{}`.\n\n if (!input.country) {\n return false;\n }\n\n metadata.selectNumberingPlan(input.country, input.countryCallingCode); // By default, countries only have type regexps when it's required for\n // distinguishing different countries having the same `countryCallingCode`.\n\n if (metadata.hasTypes()) {\n return getNumberType(input, options, metadata.metadata) !== undefined;\n } // If there are no type regexps for this country in metadata then use\n // `nationalNumberPattern` as a \"better than nothing\" replacement.\n\n\n var national_number = options.v2 ? input.nationalNumber : input.phone;\n return matchesEntirely(national_number, metadata.nationalNumberPattern());\n}\n//# sourceMappingURL=validate_.js.map","import { VALID_PUNCTUATION } from '../constants.js'; // Removes brackets and replaces dashes with spaces.\n//\n// E.g. \"(999) 111-22-33\" -> \"999 111 22 33\"\n//\n// For some reason Google's metadata contains ``s with brackets and dashes.\n// Meanwhile, there's no single opinion about using punctuation in international phone numbers.\n//\n// For example, Google's `` for USA is `+1 213-373-4253`.\n// And here's a quote from WikiPedia's \"North American Numbering Plan\" page:\n// https://en.wikipedia.org/wiki/North_American_Numbering_Plan\n//\n// \"The country calling code for all countries participating in the NANP is 1.\n// In international format, an NANP number should be listed as +1 301 555 01 00,\n// where 301 is an area code (Maryland).\"\n//\n// I personally prefer the international format without any punctuation.\n// For example, brackets are remnants of the old age, meaning that the\n// phone number part in brackets (so called \"area code\") can be omitted\n// if dialing within the same \"area\".\n// And hyphens were clearly introduced for splitting local numbers into memorizable groups.\n// For example, remembering \"5553535\" is difficult but \"555-35-35\" is much simpler.\n// Imagine a man taking a bus from home to work and seeing an ad with a phone number.\n// He has a couple of seconds to memorize that number until it passes by.\n// If it were spaces instead of hyphens the man wouldn't necessarily get it,\n// but with hyphens instead of spaces the grouping is more explicit.\n// I personally think that hyphens introduce visual clutter,\n// so I prefer replacing them with spaces in international numbers.\n// In the modern age all output is done on displays where spaces are clearly distinguishable\n// so hyphens can be safely replaced with spaces without losing any legibility.\n//\n\nexport default function applyInternationalSeparatorStyle(formattedNumber) {\n return formattedNumber.replace(new RegExp(\"[\".concat(VALID_PUNCTUATION, \"]+\"), 'g'), ' ').trim();\n}\n//# sourceMappingURL=applyInternationalSeparatorStyle.js.map","import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle.js'; // This was originally set to $1 but there are some countries for which the\n// first group is not used in the national pattern (e.g. Argentina) so the $1\n// group does not match correctly. Therefore, we use `\\d`, so that the first\n// group actually used in the pattern will be matched.\n\nexport var FIRST_GROUP_PATTERN = /(\\$\\d)/;\nexport default function formatNationalNumberUsingFormat(number, format, _ref) {\n var useInternationalFormat = _ref.useInternationalFormat,\n withNationalPrefix = _ref.withNationalPrefix,\n carrierCode = _ref.carrierCode,\n metadata = _ref.metadata;\n var formattedNumber = number.replace(new RegExp(format.pattern()), useInternationalFormat ? format.internationalFormat() : // This library doesn't use `domestic_carrier_code_formatting_rule`,\n // because that one is only used when formatting phone numbers\n // for dialing from a mobile phone, and this is not a dialing library.\n // carrierCode && format.domesticCarrierCodeFormattingRule()\n // \t// First, replace the $CC in the formatting rule with the desired carrier code.\n // \t// Then, replace the $FG in the formatting rule with the first group\n // \t// and the carrier code combined in the appropriate way.\n // \t? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode))\n // \t: (\n // \t\twithNationalPrefix && format.nationalPrefixFormattingRule()\n // \t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\n // \t\t\t: format.format()\n // \t)\n withNationalPrefix && format.nationalPrefixFormattingRule() ? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()) : format.format());\n\n if (useInternationalFormat) {\n return applyInternationalSeparatorStyle(formattedNumber);\n }\n\n return formattedNumber;\n}\n//# sourceMappingURL=formatNationalNumberUsingFormat.js.map","import Metadata from '../metadata.js';\n/**\r\n * Pattern that makes it easy to distinguish whether a region has a single\r\n * international dialing prefix or not. If a region has a single international\r\n * prefix (e.g. 011 in USA), it will be represented as a string that contains\r\n * a sequence of ASCII digits, and possibly a tilde, which signals waiting for\r\n * the tone. If there are multiple available international prefixes in a\r\n * region, they will be represented as a regex string that always contains one\r\n * or more characters that are not ASCII digits or a tilde.\r\n */\n\nvar SINGLE_IDD_PREFIX_REG_EXP = /^[\\d]+(?:[~\\u2053\\u223C\\uFF5E][\\d]+)?$/; // For regions that have multiple IDD prefixes\n// a preferred IDD prefix is returned.\n\nexport default function getIddPrefix(country, callingCode, metadata) {\n var countryMetadata = new Metadata(metadata);\n countryMetadata.selectNumberingPlan(country, callingCode);\n\n if (countryMetadata.defaultIDDPrefix()) {\n return countryMetadata.defaultIDDPrefix();\n }\n\n if (SINGLE_IDD_PREFIX_REG_EXP.test(countryMetadata.IDDPrefix())) {\n return countryMetadata.IDDPrefix();\n }\n}\n//# sourceMappingURL=getIddPrefix.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js';\nimport Metadata, { getCountryCallingCode } from './metadata.js';\nimport getIddPrefix from './helpers/getIddPrefix.js';\nimport { formatRFC3966 } from './helpers/RFC3966.js';\nvar DEFAULT_OPTIONS = {\n formatExtension: function formatExtension(formattedNumber, extension, metadata) {\n return \"\".concat(formattedNumber).concat(metadata.ext()).concat(extension);\n }\n}; // Formats a phone number\n//\n// Example use cases:\n//\n// ```js\n// formatNumber('8005553535', 'RU', 'INTERNATIONAL')\n// formatNumber('8005553535', 'RU', 'INTERNATIONAL', metadata)\n// formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL')\n// formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL', metadata)\n// formatNumber('+78005553535', 'NATIONAL')\n// formatNumber('+78005553535', 'NATIONAL', metadata)\n// ```\n//\n\nexport default function formatNumber(input, format, options, metadata) {\n // Apply default options.\n if (options) {\n options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);\n } else {\n options = DEFAULT_OPTIONS;\n }\n\n metadata = new Metadata(metadata);\n\n if (input.country && input.country !== '001') {\n // Validate `input.country`.\n if (!metadata.hasCountry(input.country)) {\n throw new Error(\"Unknown country: \".concat(input.country));\n }\n\n metadata.country(input.country);\n } else if (input.countryCallingCode) {\n metadata.selectNumberingPlan(input.countryCallingCode);\n } else return input.phone || '';\n\n var countryCallingCode = metadata.countryCallingCode();\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // This variable should have been declared inside `case`s\n // but Babel has a bug and it says \"duplicate variable declaration\".\n\n var number;\n\n switch (format) {\n case 'NATIONAL':\n // Legacy argument support.\n // (`{ country: ..., phone: '' }`)\n if (!nationalNumber) {\n return '';\n }\n\n number = formatNationalNumber(nationalNumber, input.carrierCode, 'NATIONAL', metadata, options);\n return addExtension(number, input.ext, metadata, options.formatExtension);\n\n case 'INTERNATIONAL':\n // Legacy argument support.\n // (`{ country: ..., phone: '' }`)\n if (!nationalNumber) {\n return \"+\".concat(countryCallingCode);\n }\n\n number = formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata, options);\n number = \"+\".concat(countryCallingCode, \" \").concat(number);\n return addExtension(number, input.ext, metadata, options.formatExtension);\n\n case 'E.164':\n // `E.164` doesn't define \"phone number extensions\".\n return \"+\".concat(countryCallingCode).concat(nationalNumber);\n\n case 'RFC3966':\n return formatRFC3966({\n number: \"+\".concat(countryCallingCode).concat(nationalNumber),\n ext: input.ext\n });\n // For reference, here's Google's IDD formatter:\n // https://github.com/google/libphonenumber/blob/32719cf74e68796788d1ca45abc85dcdc63ba5b9/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L1546\n // Not saying that this IDD formatter replicates it 1:1, but it seems to work.\n // Who would even need to format phone numbers in IDD format anyway?\n\n case 'IDD':\n if (!options.fromCountry) {\n return; // throw new Error('`fromCountry` option not passed for IDD-prefixed formatting.')\n }\n\n var formattedNumber = formatIDD(nationalNumber, input.carrierCode, countryCallingCode, options.fromCountry, metadata);\n return addExtension(formattedNumber, input.ext, metadata, options.formatExtension);\n\n default:\n throw new Error(\"Unknown \\\"format\\\" argument passed to \\\"formatNumber()\\\": \\\"\".concat(format, \"\\\"\"));\n }\n}\n\nfunction formatNationalNumber(number, carrierCode, formatAs, metadata, options) {\n var format = chooseFormatForNumber(metadata.formats(), number);\n\n if (!format) {\n return number;\n }\n\n return formatNationalNumberUsingFormat(number, format, {\n useInternationalFormat: formatAs === 'INTERNATIONAL',\n withNationalPrefix: format.nationalPrefixIsOptionalWhenFormattingInNationalFormat() && options && options.nationalPrefix === false ? false : true,\n carrierCode: carrierCode,\n metadata: metadata\n });\n}\n\nfunction chooseFormatForNumber(availableFormats, nationalNnumber) {\n for (var _iterator = _createForOfIteratorHelperLoose(availableFormats), _step; !(_step = _iterator()).done;) {\n var format = _step.value;\n\n // Validate leading digits.\n // The test case for \"else path\" could be found by searching for\n // \"format.leadingDigitsPatterns().length === 0\".\n if (format.leadingDigitsPatterns().length > 0) {\n // The last leading_digits_pattern is used here, as it is the most detailed\n var lastLeadingDigitsPattern = format.leadingDigitsPatterns()[format.leadingDigitsPatterns().length - 1]; // If leading digits don't match then move on to the next phone number format\n\n if (nationalNnumber.search(lastLeadingDigitsPattern) !== 0) {\n continue;\n }\n } // Check that the national number matches the phone number format regular expression\n\n\n if (matchesEntirely(nationalNnumber, format.pattern())) {\n return format;\n }\n }\n}\n\nfunction addExtension(formattedNumber, ext, metadata, formatExtension) {\n return ext ? formatExtension(formattedNumber, ext, metadata) : formattedNumber;\n}\n\nfunction formatIDD(nationalNumber, carrierCode, countryCallingCode, fromCountry, metadata) {\n var fromCountryCallingCode = getCountryCallingCode(fromCountry, metadata.metadata); // When calling within the same country calling code.\n\n if (fromCountryCallingCode === countryCallingCode) {\n var formattedNumber = formatNationalNumber(nationalNumber, carrierCode, 'NATIONAL', metadata); // For NANPA regions, return the national format for these regions\n // but prefix it with the country calling code.\n\n if (countryCallingCode === '1') {\n return countryCallingCode + ' ' + formattedNumber;\n } // If regions share a country calling code, the country calling code need\n // not be dialled. This also applies when dialling within a region, so this\n // if clause covers both these cases. Technically this is the case for\n // dialling from La Reunion to other overseas departments of France (French\n // Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover\n // this edge case for now and for those cases return the version including\n // country calling code. Details here:\n // http://www.petitfute.com/voyage/225-info-pratiques-reunion\n //\n\n\n return formattedNumber;\n }\n\n var iddPrefix = getIddPrefix(fromCountry, undefined, metadata.metadata);\n\n if (iddPrefix) {\n return \"\".concat(iddPrefix, \" \").concat(countryCallingCode, \" \").concat(formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata));\n }\n}\n//# sourceMappingURL=format_.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport Metadata from './metadata.js';\nimport isPossibleNumber from './isPossibleNumber_.js';\nimport isValidNumber from './validate_.js';\nimport isValidNumberForRegion from './isValidNumberForRegion_.js';\nimport getNumberType from './helpers/getNumberType.js';\nimport formatNumber from './format_.js';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\n\nvar PhoneNumber = /*#__PURE__*/function () {\n function PhoneNumber(countryCallingCode, nationalNumber, metadata) {\n _classCallCheck(this, PhoneNumber);\n\n if (!countryCallingCode) {\n throw new TypeError('`country` or `countryCallingCode` not passed');\n }\n\n if (!nationalNumber) {\n throw new TypeError('`nationalNumber` not passed');\n }\n\n if (!metadata) {\n throw new TypeError('`metadata` not passed');\n }\n\n var _metadata = new Metadata(metadata); // If country code is passed then derive `countryCallingCode` from it.\n // Also store the country code as `.country`.\n\n\n if (isCountryCode(countryCallingCode)) {\n this.country = countryCallingCode;\n\n _metadata.country(countryCallingCode);\n\n countryCallingCode = _metadata.countryCallingCode();\n } else {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (_metadata.isNonGeographicCallingCode(countryCallingCode)) {\n this.country = '001';\n }\n }\n }\n\n this.countryCallingCode = countryCallingCode;\n this.nationalNumber = nationalNumber;\n this.number = '+' + this.countryCallingCode + this.nationalNumber;\n this.metadata = metadata;\n }\n\n _createClass(PhoneNumber, [{\n key: \"setExt\",\n value: function setExt(ext) {\n this.ext = ext;\n }\n }, {\n key: \"isPossible\",\n value: function isPossible() {\n return isPossibleNumber(this, {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"isValid\",\n value: function isValid() {\n return isValidNumber(this, {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"isNonGeographic\",\n value: function isNonGeographic() {\n var metadata = new Metadata(this.metadata);\n return metadata.isNonGeographicCallingCode(this.countryCallingCode);\n }\n }, {\n key: \"isEqual\",\n value: function isEqual(phoneNumber) {\n return this.number === phoneNumber.number && this.ext === phoneNumber.ext;\n } // // Is just an alias for `this.isValid() && this.country === country`.\n // // https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\n // isValidForRegion(country) {\n // \treturn isValidNumberForRegion(this, country, { v2: true }, this.metadata)\n // }\n\n }, {\n key: \"getType\",\n value: function getType() {\n return getNumberType(this, {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"format\",\n value: function format(_format, options) {\n return formatNumber(this, _format, options ? _objectSpread(_objectSpread({}, options), {}, {\n v2: true\n }) : {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"formatNational\",\n value: function formatNational(options) {\n return this.format('NATIONAL', options);\n }\n }, {\n key: \"formatInternational\",\n value: function formatInternational(options) {\n return this.format('INTERNATIONAL', options);\n }\n }, {\n key: \"getURI\",\n value: function getURI(options) {\n return this.format('RFC3966', options);\n }\n }]);\n\n return PhoneNumber;\n}();\n\nexport { PhoneNumber as default };\n\nvar isCountryCode = function isCountryCode(value) {\n return /^[A-Z]{2}$/.test(value);\n};\n//# sourceMappingURL=PhoneNumber.js.map","import Metadata from '../metadata.js';\nimport { VALID_DIGITS } from '../constants.js';\nvar CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])');\nexport default function stripIddPrefix(number, country, callingCode, metadata) {\n if (!country) {\n return;\n } // Check if the number is IDD-prefixed.\n\n\n var countryMetadata = new Metadata(metadata);\n countryMetadata.selectNumberingPlan(country, callingCode);\n var IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix());\n\n if (number.search(IDDPrefixPattern) !== 0) {\n return;\n } // Strip IDD prefix.\n\n\n number = number.slice(number.match(IDDPrefixPattern)[0].length); // If there're any digits after an IDD prefix,\n // then those digits are a country calling code.\n // Since no country code starts with a `0`,\n // the code below validates that the next digit (if present) is not `0`.\n\n var matchedGroups = number.match(CAPTURING_DIGIT_PATTERN);\n\n if (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) {\n if (matchedGroups[1] === '0') {\n return;\n }\n }\n\n return number;\n}\n//# sourceMappingURL=stripIddPrefix.js.map","/**\r\n * Strips any national prefix (such as 0, 1) present in a\r\n * (possibly incomplete) number provided.\r\n * \"Carrier codes\" are only used in Colombia and Brazil,\r\n * and only when dialing within those countries from a mobile phone to a fixed line number.\r\n * Sometimes it won't actually strip national prefix\r\n * and will instead prepend some digits to the `number`:\r\n * for example, when number `2345678` is passed with `VI` country selected,\r\n * it will return `{ number: \"3402345678\" }`, because `340` area code is prepended.\r\n * @param {string} number — National number digits.\r\n * @param {object} metadata — Metadata with country selected.\r\n * @return {object} `{ nationalNumber: string, nationalPrefix: string? carrierCode: string? }`. Even if a national prefix was extracted, it's not necessarily present in the returned object, so don't rely on its presence in the returned object in order to find out whether a national prefix has been extracted or not.\r\n */\nexport default function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) {\n if (number && metadata.numberingPlan.nationalPrefixForParsing()) {\n // See METADATA.md for the description of\n // `national_prefix_for_parsing` and `national_prefix_transform_rule`.\n // Attempt to parse the first digits as a national prefix.\n var prefixPattern = new RegExp('^(?:' + metadata.numberingPlan.nationalPrefixForParsing() + ')');\n var prefixMatch = prefixPattern.exec(number);\n\n if (prefixMatch) {\n var nationalNumber;\n var carrierCode; // https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\n // If a `national_prefix_for_parsing` has any \"capturing groups\"\n // then it means that the national (significant) number is equal to\n // those \"capturing groups\" transformed via `national_prefix_transform_rule`,\n // and nothing could be said about the actual national prefix:\n // what is it and was it even there.\n // If a `national_prefix_for_parsing` doesn't have any \"capturing groups\",\n // then everything it matches is a national prefix.\n // To determine whether `national_prefix_for_parsing` matched any\n // \"capturing groups\", the value of the result of calling `.exec()`\n // is looked at, and if it has non-undefined values where there're\n // \"capturing groups\" in the regular expression, then it means\n // that \"capturing groups\" have been matched.\n // It's not possible to tell whether there'll be any \"capturing gropus\"\n // before the matching process, because a `national_prefix_for_parsing`\n // could exhibit both behaviors.\n\n var capturedGroupsCount = prefixMatch.length - 1;\n var hasCapturedGroups = capturedGroupsCount > 0 && prefixMatch[capturedGroupsCount];\n\n if (metadata.nationalPrefixTransformRule() && hasCapturedGroups) {\n nationalNumber = number.replace(prefixPattern, metadata.nationalPrefixTransformRule()); // If there's more than one captured group,\n // then carrier code is the second one.\n\n if (capturedGroupsCount > 1) {\n carrierCode = prefixMatch[1];\n }\n } // If there're no \"capturing groups\",\n // or if there're \"capturing groups\" but no\n // `national_prefix_transform_rule`,\n // then just strip the national prefix from the number,\n // and possibly a carrier code.\n // Seems like there could be more.\n else {\n // `prefixBeforeNationalNumber` is the whole substring matched by\n // the `national_prefix_for_parsing` regular expression.\n // There seem to be no guarantees that it's just a national prefix.\n // For example, if there's a carrier code, it's gonna be a\n // part of `prefixBeforeNationalNumber` too.\n var prefixBeforeNationalNumber = prefixMatch[0];\n nationalNumber = number.slice(prefixBeforeNationalNumber.length); // If there's at least one captured group,\n // then carrier code is the first one.\n\n if (hasCapturedGroups) {\n carrierCode = prefixMatch[1];\n }\n } // Tries to guess whether a national prefix was present in the input.\n // This is not something copy-pasted from Google's library:\n // they don't seem to have an equivalent for that.\n // So this isn't an \"officially approved\" way of doing something like that.\n // But since there seems no other existing method, this library uses it.\n\n\n var nationalPrefix;\n\n if (hasCapturedGroups) {\n var possiblePositionOfTheFirstCapturedGroup = number.indexOf(prefixMatch[1]);\n var possibleNationalPrefix = number.slice(0, possiblePositionOfTheFirstCapturedGroup); // Example: an Argentinian (AR) phone number `0111523456789`.\n // `prefixMatch[0]` is `01115`, and `$1` is `11`,\n // and the rest of the phone number is `23456789`.\n // The national number is transformed via `9$1` to `91123456789`.\n // National prefix `0` is detected being present at the start.\n // if (possibleNationalPrefix.indexOf(metadata.numberingPlan.nationalPrefix()) === 0) {\n\n if (possibleNationalPrefix === metadata.numberingPlan.nationalPrefix()) {\n nationalPrefix = metadata.numberingPlan.nationalPrefix();\n }\n } else {\n nationalPrefix = prefixMatch[0];\n }\n\n return {\n nationalNumber: nationalNumber,\n nationalPrefix: nationalPrefix,\n carrierCode: carrierCode\n };\n }\n }\n\n return {\n nationalNumber: number\n };\n}\n//# sourceMappingURL=extractNationalNumberFromPossiblyIncompleteNumber.js.map","import extractNationalNumberFromPossiblyIncompleteNumber from './extractNationalNumberFromPossiblyIncompleteNumber.js';\nimport matchesEntirely from './matchesEntirely.js';\nimport checkNumberLength from './checkNumberLength.js';\n/**\r\n * Strips national prefix and carrier code from a complete phone number.\r\n * The difference from the non-\"FromCompleteNumber\" function is that\r\n * it won't extract national prefix if the resultant number is too short\r\n * to be a complete number for the selected phone numbering plan.\r\n * @param {string} number — Complete phone number digits.\r\n * @param {Metadata} metadata — Metadata with a phone numbering plan selected.\r\n * @return {object} `{ nationalNumber: string, carrierCode: string? }`.\r\n */\n\nexport default function extractNationalNumber(number, metadata) {\n // Parsing national prefixes and carrier codes\n // is only required for local phone numbers\n // but some people don't understand that\n // and sometimes write international phone numbers\n // with national prefixes (or maybe even carrier codes).\n // http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html\n // Google's original library forgives such mistakes\n // and so does this library, because it has been requested:\n // https://github.com/catamphetamine/libphonenumber-js/issues/127\n var _extractNationalNumbe = extractNationalNumberFromPossiblyIncompleteNumber(number, metadata),\n carrierCode = _extractNationalNumbe.carrierCode,\n nationalNumber = _extractNationalNumbe.nationalNumber;\n\n if (nationalNumber !== number) {\n if (!shouldHaveExtractedNationalPrefix(number, nationalNumber, metadata)) {\n // Don't strip the national prefix.\n return {\n nationalNumber: number\n };\n } // Check the national (significant) number length after extracting national prefix and carrier code.\n // Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature.\n\n\n if (metadata.possibleLengths()) {\n // The number remaining after stripping the national prefix and carrier code\n // should be long enough to have a possible length for the country.\n // Otherwise, don't strip the national prefix and carrier code,\n // since the original number could be a valid number.\n // This check has been copy-pasted \"as is\" from Google's original library:\n // https://github.com/google/libphonenumber/blob/876268eb1ad6cdc1b7b5bef17fc5e43052702d57/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3236-L3250\n // It doesn't check for the \"possibility\" of the original `number`.\n // I guess it's fine not checking that one. It works as is anyway.\n if (!isPossibleIncompleteNationalNumber(nationalNumber, metadata)) {\n // Don't strip the national prefix.\n return {\n nationalNumber: number\n };\n }\n }\n }\n\n return {\n nationalNumber: nationalNumber,\n carrierCode: carrierCode\n };\n} // In some countries, the same digit could be a national prefix\n// or a leading digit of a valid phone number.\n// For example, in Russia, national prefix is `8`,\n// and also `800 555 35 35` is a valid number\n// in which `8` is not a national prefix, but the first digit\n// of a national (significant) number.\n// Same's with Belarus:\n// `82004910060` is a valid national (significant) number,\n// but `2004910060` is not.\n// To support such cases (to prevent the code from always stripping\n// national prefix), a condition is imposed: a national prefix\n// is not extracted when the original number is \"viable\" and the\n// resultant number is not, a \"viable\" national number being the one\n// that matches `national_number_pattern`.\n\nfunction shouldHaveExtractedNationalPrefix(nationalNumberBefore, nationalNumberAfter, metadata) {\n // The equivalent in Google's code is:\n // https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L2969-L3004\n if (matchesEntirely(nationalNumberBefore, metadata.nationalNumberPattern()) && !matchesEntirely(nationalNumberAfter, metadata.nationalNumberPattern())) {\n return false;\n } // This \"is possible\" national number (length) check has been commented out\n // because it's superceded by the (effectively) same check done in the\n // `extractNationalNumber()` function after it calls `shouldHaveExtractedNationalPrefix()`.\n // In other words, why run the same check twice if it could only be run once.\n // // Check the national (significant) number length after extracting national prefix and carrier code.\n // // Fixes a minor \"weird behavior\" bug: https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/57\n // // (Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature).\n // if (metadata.possibleLengths()) {\n // \tif (isPossibleIncompleteNationalNumber(nationalNumberBefore, metadata) &&\n // \t\t!isPossibleIncompleteNationalNumber(nationalNumberAfter, metadata)) {\n // \t\treturn false\n // \t}\n // }\n\n\n return true;\n}\n\nfunction isPossibleIncompleteNationalNumber(nationalNumber, metadata) {\n switch (checkNumberLength(nationalNumber, metadata)) {\n case 'TOO_SHORT':\n case 'INVALID_LENGTH':\n // This library ignores \"local-only\" phone numbers (for simplicity).\n // See the readme for more info on what are \"local-only\" phone numbers.\n // case 'IS_POSSIBLE_LOCAL_ONLY':\n return false;\n\n default:\n return true;\n }\n}\n//# sourceMappingURL=extractNationalNumber.js.map","import Metadata from '../metadata.js';\nimport matchesEntirely from './matchesEntirely.js';\nimport extractNationalNumber from './extractNationalNumber.js';\nimport checkNumberLength from './checkNumberLength.js';\nimport getCountryCallingCode from '../getCountryCallingCode.js';\n/**\r\n * Sometimes some people incorrectly input international phone numbers\r\n * without the leading `+`. This function corrects such input.\r\n * @param {string} number — Phone number digits.\r\n * @param {string?} country\r\n * @param {string?} callingCode\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`.\r\n */\n\nexport default function extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, callingCode, metadata) {\n var countryCallingCode = country ? getCountryCallingCode(country, metadata) : callingCode;\n\n if (number.indexOf(countryCallingCode) === 0) {\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(country, callingCode);\n var possibleShorterNumber = number.slice(countryCallingCode.length);\n\n var _extractNationalNumbe = extractNationalNumber(possibleShorterNumber, metadata),\n possibleShorterNationalNumber = _extractNationalNumbe.nationalNumber;\n\n var _extractNationalNumbe2 = extractNationalNumber(number, metadata),\n nationalNumber = _extractNationalNumbe2.nationalNumber; // If the number was not valid before but is valid now,\n // or if it was too long before, we consider the number\n // with the country calling code stripped to be a better result\n // and keep that instead.\n // For example, in Germany (+49), `49` is a valid area code,\n // so if a number starts with `49`, it could be both a valid\n // national German number or an international number without\n // a leading `+`.\n\n\n if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) && matchesEntirely(possibleShorterNationalNumber, metadata.nationalNumberPattern()) || checkNumberLength(nationalNumber, metadata) === 'TOO_LONG') {\n return {\n countryCallingCode: countryCallingCode,\n number: possibleShorterNumber\n };\n }\n }\n\n return {\n number: number\n };\n}\n//# sourceMappingURL=extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js.map","import stripIddPrefix from './stripIddPrefix.js';\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js';\nimport Metadata from '../metadata.js';\nimport { MAX_LENGTH_COUNTRY_CODE } from '../constants.js';\n/**\r\n * Converts a phone number digits (possibly with a `+`)\r\n * into a calling code and the rest phone number digits.\r\n * The \"rest phone number digits\" could include\r\n * a national prefix, carrier code, and national\r\n * (significant) number.\r\n * @param {string} number — Phone number digits (possibly with a `+`).\r\n * @param {string} [country] — Default country.\r\n * @param {string} [callingCode] — Default calling code (some phone numbering plans are non-geographic).\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`\r\n * @example\r\n * // Returns `{ countryCallingCode: \"1\", number: \"2133734253\" }`.\r\n * extractCountryCallingCode('2133734253', 'US', null, metadata)\r\n * extractCountryCallingCode('2133734253', null, '1', metadata)\r\n * extractCountryCallingCode('+12133734253', null, null, metadata)\r\n * extractCountryCallingCode('+12133734253', 'RU', null, metadata)\r\n */\n\nexport default function extractCountryCallingCode(number, country, callingCode, metadata) {\n if (!number) {\n return {};\n } // If this is not an international phone number,\n // then either extract an \"IDD\" prefix, or extract a\n // country calling code from a number by autocorrecting it\n // by prepending a leading `+` in cases when it starts\n // with the country calling code.\n // https://wikitravel.org/en/International_dialling_prefix\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n\n\n if (number[0] !== '+') {\n // Convert an \"out-of-country\" dialing phone number\n // to a proper international phone number.\n var numberWithoutIDD = stripIddPrefix(number, country, callingCode, metadata); // If an IDD prefix was stripped then\n // convert the number to international one\n // for subsequent parsing.\n\n if (numberWithoutIDD && numberWithoutIDD !== number) {\n number = '+' + numberWithoutIDD;\n } else {\n // Check to see if the number starts with the country calling code\n // for the default country. If so, we remove the country calling code,\n // and do some checks on the validity of the number before and after.\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n if (country || callingCode) {\n var _extractCountryCallin = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, callingCode, metadata),\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n shorterNumber = _extractCountryCallin.number;\n\n if (countryCallingCode) {\n return {\n countryCallingCode: countryCallingCode,\n number: shorterNumber\n };\n }\n }\n\n return {\n number: number\n };\n }\n } // Fast abortion: country codes do not begin with a '0'\n\n\n if (number[1] === '0') {\n return {};\n }\n\n metadata = new Metadata(metadata); // The thing with country phone codes\n // is that they are orthogonal to each other\n // i.e. there's no such country phone code A\n // for which country phone code B exists\n // where B starts with A.\n // Therefore, while scanning digits,\n // if a valid country code is found,\n // that means that it is the country code.\n //\n\n var i = 2;\n\n while (i - 1 <= MAX_LENGTH_COUNTRY_CODE && i <= number.length) {\n var _countryCallingCode = number.slice(1, i);\n\n if (metadata.hasCallingCode(_countryCallingCode)) {\n metadata.selectNumberingPlan(_countryCallingCode);\n return {\n countryCallingCode: _countryCallingCode,\n number: number.slice(i)\n };\n }\n\n i++;\n }\n\n return {};\n}\n//# sourceMappingURL=extractCountryCallingCode.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport Metadata from '../metadata.js';\nimport getNumberType from './getNumberType.js';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\nexport default function getCountryByCallingCode(callingCode, nationalPhoneNumber, metadata) {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(callingCode)) {\n return '001';\n }\n } // Is always non-empty, because `callingCode` is always valid\n\n\n var possibleCountries = metadata.getCountryCodesForCallingCode(callingCode);\n\n if (!possibleCountries) {\n return;\n } // If there's just one country corresponding to the country code,\n // then just return it, without further phone number digits validation.\n\n\n if (possibleCountries.length === 1) {\n return possibleCountries[0];\n }\n\n return selectCountryFromList(possibleCountries, nationalPhoneNumber, metadata.metadata);\n}\n\nfunction selectCountryFromList(possibleCountries, nationalPhoneNumber, metadata) {\n // Re-create `metadata` because it will be selecting a `country`.\n metadata = new Metadata(metadata);\n\n for (var _iterator = _createForOfIteratorHelperLoose(possibleCountries), _step; !(_step = _iterator()).done;) {\n var country = _step.value;\n metadata.country(country); // Leading digits check would be the simplest and fastest one.\n // Leading digits patterns are only defined for about 20% of all countries.\n // https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits\n // Matching \"leading digits\" is a sufficient but not necessary condition.\n\n if (metadata.leadingDigits()) {\n if (nationalPhoneNumber && nationalPhoneNumber.search(metadata.leadingDigits()) === 0) {\n return country;\n }\n } // Else perform full validation with all of those\n // fixed-line/mobile/etc regular expressions.\n else if (getNumberType({\n phone: nationalPhoneNumber,\n country: country\n }, undefined, metadata.metadata)) {\n return country;\n }\n }\n}\n//# sourceMappingURL=getCountryByCallingCode.js.map","// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\nimport { VALID_DIGITS, PLUS_CHARS, MIN_LENGTH_FOR_NSN, MAX_LENGTH_FOR_NSN } from './constants.js';\nimport ParseError from './ParseError.js';\nimport Metadata from './metadata.js';\nimport isViablePhoneNumber, { isViablePhoneNumberStart } from './helpers/isViablePhoneNumber.js';\nimport extractExtension from './helpers/extension/extractExtension.js';\nimport parseIncompletePhoneNumber from './parseIncompletePhoneNumber.js';\nimport getCountryCallingCode from './getCountryCallingCode.js';\nimport { isPossibleNumber } from './isPossibleNumber_.js';\nimport { parseRFC3966 } from './helpers/RFC3966.js';\nimport PhoneNumber from './PhoneNumber.js';\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport extractCountryCallingCode from './helpers/extractCountryCallingCode.js';\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js';\nimport extractNationalNumber from './helpers/extractNationalNumber.js';\nimport stripIddPrefix from './helpers/stripIddPrefix.js';\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js'; // We don't allow input strings for parsing to be longer than 250 chars.\n// This prevents malicious input from consuming CPU.\n\nvar MAX_INPUT_STRING_LENGTH = 250; // This consists of the plus symbol, digits, and arabic-indic digits.\n\nvar PHONE_NUMBER_START_PATTERN = new RegExp('[' + PLUS_CHARS + VALID_DIGITS + ']'); // Regular expression of trailing characters that we want to remove.\n// A trailing `#` is sometimes used when writing phone numbers with extensions in US.\n// Example: \"+1 (645) 123 1234-910#\" number has extension \"910\".\n\nvar AFTER_PHONE_NUMBER_END_PATTERN = new RegExp('[^' + VALID_DIGITS + '#' + ']+$');\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false; // Examples:\n//\n// ```js\n// parse('8 (800) 555-35-35', 'RU')\n// parse('8 (800) 555-35-35', 'RU', metadata)\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } })\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata)\n// parse('+7 800 555 35 35')\n// parse('+7 800 555 35 35', metadata)\n// ```\n//\n\nexport default function parse(text, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {};\n metadata = new Metadata(metadata); // Validate `defaultCountry`.\n\n if (options.defaultCountry && !metadata.hasCountry(options.defaultCountry)) {\n if (options.v2) {\n throw new ParseError('INVALID_COUNTRY');\n }\n\n throw new Error(\"Unknown country: \".concat(options.defaultCountry));\n } // Parse the phone number.\n\n\n var _parseInput = parseInput(text, options.v2, options.extract),\n formattedPhoneNumber = _parseInput.number,\n ext = _parseInput.ext,\n error = _parseInput.error; // If the phone number is not viable then return nothing.\n\n\n if (!formattedPhoneNumber) {\n if (options.v2) {\n if (error === 'TOO_SHORT') {\n throw new ParseError('TOO_SHORT');\n }\n\n throw new ParseError('NOT_A_NUMBER');\n }\n\n return {};\n }\n\n var _parsePhoneNumber = parsePhoneNumber(formattedPhoneNumber, options.defaultCountry, options.defaultCallingCode, metadata),\n country = _parsePhoneNumber.country,\n nationalNumber = _parsePhoneNumber.nationalNumber,\n countryCallingCode = _parsePhoneNumber.countryCallingCode,\n carrierCode = _parsePhoneNumber.carrierCode;\n\n if (!metadata.hasSelectedNumberingPlan()) {\n if (options.v2) {\n throw new ParseError('INVALID_COUNTRY');\n }\n\n return {};\n } // Validate national (significant) number length.\n\n\n if (!nationalNumber || nationalNumber.length < MIN_LENGTH_FOR_NSN) {\n // Won't throw here because the regexp already demands length > 1.\n\n /* istanbul ignore if */\n if (options.v2) {\n throw new ParseError('TOO_SHORT');\n } // Google's demo just throws an error in this case.\n\n\n return {};\n } // Validate national (significant) number length.\n //\n // A sidenote:\n //\n // They say that sometimes national (significant) numbers\n // can be longer than `MAX_LENGTH_FOR_NSN` (e.g. in Germany).\n // https://github.com/googlei18n/libphonenumber/blob/7e1748645552da39c4e1ba731e47969d97bdb539/resources/phonenumber.proto#L36\n // Such numbers will just be discarded.\n //\n\n\n if (nationalNumber.length > MAX_LENGTH_FOR_NSN) {\n if (options.v2) {\n throw new ParseError('TOO_LONG');\n } // Google's demo just throws an error in this case.\n\n\n return {};\n }\n\n if (options.v2) {\n var phoneNumber = new PhoneNumber(countryCallingCode, nationalNumber, metadata.metadata);\n\n if (country) {\n phoneNumber.country = country;\n }\n\n if (carrierCode) {\n phoneNumber.carrierCode = carrierCode;\n }\n\n if (ext) {\n phoneNumber.ext = ext;\n }\n\n return phoneNumber;\n } // Check if national phone number pattern matches the number.\n // National number pattern is different for each country,\n // even for those ones which are part of the \"NANPA\" group.\n\n\n var valid = (options.extended ? metadata.hasSelectedNumberingPlan() : country) ? matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) : false;\n\n if (!options.extended) {\n return valid ? result(country, nationalNumber, ext) : {};\n } // isInternational: countryCallingCode !== undefined\n\n\n return {\n country: country,\n countryCallingCode: countryCallingCode,\n carrierCode: carrierCode,\n valid: valid,\n possible: valid ? true : options.extended === true && metadata.possibleLengths() && isPossibleNumber(nationalNumber, metadata) ? true : false,\n phone: nationalNumber,\n ext: ext\n };\n}\n/**\r\n * Extracts a formatted phone number from text.\r\n * Doesn't guarantee that the extracted phone number\r\n * is a valid phone number (for example, doesn't validate its length).\r\n * @param {string} text\r\n * @param {boolean} [extract] — If `false`, then will parse the entire `text` as a phone number.\r\n * @param {boolean} [throwOnError] — By default, it won't throw if the text is too long.\r\n * @return {string}\r\n * @example\r\n * // Returns \"(213) 373-4253\".\r\n * extractFormattedPhoneNumber(\"Call (213) 373-4253 for assistance.\")\r\n */\n\nfunction extractFormattedPhoneNumber(text, extract, throwOnError) {\n if (!text) {\n return;\n }\n\n if (text.length > MAX_INPUT_STRING_LENGTH) {\n if (throwOnError) {\n throw new ParseError('TOO_LONG');\n }\n\n return;\n }\n\n if (extract === false) {\n return text;\n } // Attempt to extract a possible number from the string passed in\n\n\n var startsAt = text.search(PHONE_NUMBER_START_PATTERN);\n\n if (startsAt < 0) {\n return;\n }\n\n return text // Trim everything to the left of the phone number\n .slice(startsAt) // Remove trailing non-numerical characters\n .replace(AFTER_PHONE_NUMBER_END_PATTERN, '');\n}\n/**\r\n * @param {string} text - Input.\r\n * @param {boolean} v2 - Legacy API functions don't pass `v2: true` flag.\r\n * @param {boolean} [extract] - Whether to extract a phone number from `text`, or attempt to parse the entire text as a phone number.\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\n\n\nfunction parseInput(text, v2, extract) {\n // Parse RFC 3966 phone number URI.\n if (text && text.indexOf('tel:') === 0) {\n return parseRFC3966(text);\n }\n\n var number = extractFormattedPhoneNumber(text, extract, v2); // If the phone number is not viable, then abort.\n\n if (!number) {\n return {};\n }\n\n if (!isViablePhoneNumber(number)) {\n if (isViablePhoneNumberStart(number)) {\n return {\n error: 'TOO_SHORT'\n };\n }\n\n return {};\n } // Attempt to parse extension first, since it doesn't require region-specific\n // data and we want to have the non-normalised number here.\n\n\n var withExtensionStripped = extractExtension(number);\n\n if (withExtensionStripped.ext) {\n return withExtensionStripped;\n }\n\n return {\n number: number\n };\n}\n/**\r\n * Creates `parse()` result object.\r\n */\n\n\nfunction result(country, nationalNumber, ext) {\n var result = {\n country: country,\n phone: nationalNumber\n };\n\n if (ext) {\n result.ext = ext;\n }\n\n return result;\n}\n/**\r\n * Parses a viable phone number.\r\n * @param {string} formattedPhoneNumber — Example: \"(213) 373-4253\".\r\n * @param {string} [defaultCountry]\r\n * @param {string} [defaultCallingCode]\r\n * @param {Metadata} metadata\r\n * @return {object} Returns `{ country: string?, countryCallingCode: string?, nationalNumber: string? }`.\r\n */\n\n\nfunction parsePhoneNumber(formattedPhoneNumber, defaultCountry, defaultCallingCode, metadata) {\n // Extract calling code from phone number.\n var _extractCountryCallin = extractCountryCallingCode(parseIncompletePhoneNumber(formattedPhoneNumber), defaultCountry, defaultCallingCode, metadata.metadata),\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n number = _extractCountryCallin.number; // Choose a country by `countryCallingCode`.\n\n\n var country;\n\n if (countryCallingCode) {\n metadata.selectNumberingPlan(countryCallingCode);\n } // If `formattedPhoneNumber` is in \"national\" format\n // then `number` is defined and `countryCallingCode` isn't.\n else if (number && (defaultCountry || defaultCallingCode)) {\n metadata.selectNumberingPlan(defaultCountry, defaultCallingCode);\n\n if (defaultCountry) {\n country = defaultCountry;\n } else {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(defaultCallingCode)) {\n country = '001';\n }\n }\n }\n\n countryCallingCode = defaultCallingCode || getCountryCallingCode(defaultCountry, metadata.metadata);\n } else return {};\n\n if (!number) {\n return {\n countryCallingCode: countryCallingCode\n };\n }\n\n var _extractNationalNumbe = extractNationalNumber(parseIncompletePhoneNumber(number), metadata),\n nationalNumber = _extractNationalNumbe.nationalNumber,\n carrierCode = _extractNationalNumbe.carrierCode; // Sometimes there are several countries\n // corresponding to the same country phone code\n // (e.g. NANPA countries all having `1` country phone code).\n // Therefore, to reliably determine the exact country,\n // national (significant) number should have been parsed first.\n //\n // When `metadata.json` is generated, all \"ambiguous\" country phone codes\n // get their countries populated with the full set of\n // \"phone number type\" regular expressions.\n //\n\n\n var exactCountry = getCountryByCallingCode(countryCallingCode, nationalNumber, metadata);\n\n if (exactCountry) {\n country = exactCountry;\n /* istanbul ignore if */\n\n if (exactCountry === '001') {// Can't happen with `USE_NON_GEOGRAPHIC_COUNTRY_CODE` being `false`.\n // If `USE_NON_GEOGRAPHIC_COUNTRY_CODE` is set to `true` for some reason,\n // then remove the \"istanbul ignore if\".\n } else {\n metadata.country(country);\n }\n }\n\n return {\n country: country,\n countryCallingCode: countryCallingCode,\n nationalNumber: nationalNumber,\n carrierCode: carrierCode\n };\n}\n//# sourceMappingURL=parse_.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport parseNumber from './parse_.js';\nexport default function parsePhoneNumber(text, options, metadata) {\n return parseNumber(text, _objectSpread(_objectSpread({}, options), {}, {\n v2: true\n }), metadata);\n}\n//# sourceMappingURL=parsePhoneNumber_.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport parsePhoneNumber_ from './parsePhoneNumber_.js';\nexport default function parsePhoneNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return parsePhoneNumber_(text, options, metadata);\n}\nexport function normalizeArguments(args) {\n var _Array$prototype$slic = Array.prototype.slice.call(args),\n _Array$prototype$slic2 = _slicedToArray(_Array$prototype$slic, 4),\n arg_1 = _Array$prototype$slic2[0],\n arg_2 = _Array$prototype$slic2[1],\n arg_3 = _Array$prototype$slic2[2],\n arg_4 = _Array$prototype$slic2[3];\n\n var text;\n var options;\n var metadata; // If the phone number is passed as a string.\n // `parsePhoneNumber('88005553535', ...)`.\n\n if (typeof arg_1 === 'string') {\n text = arg_1;\n } else throw new TypeError('A text for parsing must be a string.'); // If \"default country\" argument is being passed then move it to `options`.\n // `parsePhoneNumber('88005553535', 'RU', [options], metadata)`.\n\n\n if (!arg_2 || typeof arg_2 === 'string') {\n if (arg_4) {\n options = arg_3;\n metadata = arg_4;\n } else {\n options = undefined;\n metadata = arg_3;\n }\n\n if (arg_2) {\n options = _objectSpread({\n defaultCountry: arg_2\n }, options);\n }\n } // `defaultCountry` is not passed.\n // Example: `parsePhoneNumber('+78005553535', [options], metadata)`.\n else if (isObject(arg_2)) {\n if (arg_3) {\n options = arg_2;\n metadata = arg_3;\n } else {\n metadata = arg_2;\n }\n } else throw new Error(\"Invalid second argument: \".concat(arg_2));\n\n return {\n text: text,\n options: options,\n metadata: metadata\n };\n} // Otherwise istanbul would show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\nvar isObject = function isObject(_) {\n return _typeof(_) === 'object';\n};\n//# sourceMappingURL=parsePhoneNumber.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport parsePhoneNumber from './parsePhoneNumber_.js';\nimport ParseError from './ParseError.js';\nimport { isSupportedCountry } from './metadata.js';\nexport default function parsePhoneNumberFromString(text, options, metadata) {\n // Validate `defaultCountry`.\n if (options && options.defaultCountry && !isSupportedCountry(options.defaultCountry, metadata)) {\n options = _objectSpread(_objectSpread({}, options), {}, {\n defaultCountry: undefined\n });\n } // Parse phone number.\n\n\n try {\n return parsePhoneNumber(text, options, metadata);\n } catch (error) {\n /* istanbul ignore else */\n if (error instanceof ParseError) {//\n } else {\n throw error;\n }\n }\n}\n//# sourceMappingURL=parsePhoneNumberFromString_.js.map","import { normalizeArguments } from './parsePhoneNumber.js';\nimport parsePhoneNumberFromString_ from './parsePhoneNumberFromString_.js';\nexport default function parsePhoneNumberFromString() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return parsePhoneNumberFromString_(text, options, metadata);\n}\n//# sourceMappingURL=parsePhoneNumberFromString.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { normalizeArguments } from './parsePhoneNumber.js';\nimport parsePhoneNumberFromString from './parsePhoneNumberFromString_.js';\nexport default function isValidPhoneNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n options = _objectSpread(_objectSpread({}, options), {}, {\n extract: false\n });\n var phoneNumber = parsePhoneNumberFromString(text, options, metadata);\n return phoneNumber && phoneNumber.isValid() || false;\n}\n//# sourceMappingURL=isValidPhoneNumber.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { normalizeArguments } from './parsePhoneNumber.js';\nimport parsePhoneNumberFromString from './parsePhoneNumberFromString_.js';\nexport default function isPossiblePhoneNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n options = _objectSpread(_objectSpread({}, options), {}, {\n extract: false\n });\n var phoneNumber = parsePhoneNumberFromString(text, options, metadata);\n return phoneNumber && phoneNumber.isPossible() || false;\n}\n//# sourceMappingURL=isPossiblePhoneNumber.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { normalizeArguments } from './parsePhoneNumber.js';\nimport parsePhoneNumber from './parsePhoneNumber_.js';\nimport ParseError from './ParseError.js';\nimport Metadata from './metadata.js';\nimport checkNumberLength from './helpers/checkNumberLength.js';\nexport default function validatePhoneNumberLength() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n options = _objectSpread(_objectSpread({}, options), {}, {\n extract: false\n }); // Parse phone number.\n\n try {\n var phoneNumber = parsePhoneNumber(text, options, metadata);\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(phoneNumber.countryCallingCode);\n var result = checkNumberLength(phoneNumber.nationalNumber, metadata);\n\n if (result !== 'IS_POSSIBLE') {\n return result;\n }\n } catch (error) {\n /* istanbul ignore else */\n if (error instanceof ParseError) {\n return error.message;\n } else {\n throw error;\n }\n }\n}\n//# sourceMappingURL=validatePhoneNumberLength.js.map","function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// https://medium.com/dsinjs/implementing-lru-cache-in-javascript-94ba6755cda9\nvar Node = /*#__PURE__*/_createClass(function Node(key, value) {\n var next = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var prev = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n _classCallCheck(this, Node);\n\n this.key = key;\n this.value = value;\n this.next = next;\n this.prev = prev;\n});\n\nvar LRUCache = /*#__PURE__*/function () {\n //set default limit of 10 if limit is not passed.\n function LRUCache() {\n var limit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;\n\n _classCallCheck(this, LRUCache);\n\n this.size = 0;\n this.limit = limit;\n this.head = null;\n this.tail = null;\n this.cache = {};\n } // Write Node to head of LinkedList\n // update cache with Node key and Node reference\n\n\n _createClass(LRUCache, [{\n key: \"put\",\n value: function put(key, value) {\n this.ensureLimit();\n\n if (!this.head) {\n this.head = this.tail = new Node(key, value);\n } else {\n var node = new Node(key, value, this.head);\n this.head.prev = node;\n this.head = node;\n } //Update the cache map\n\n\n this.cache[key] = this.head;\n this.size++;\n } // Read from cache map and make that node as new Head of LinkedList\n\n }, {\n key: \"get\",\n value: function get(key) {\n if (this.cache[key]) {\n var value = this.cache[key].value; // node removed from it's position and cache\n\n this.remove(key); // write node again to the head of LinkedList to make it most recently used\n\n this.put(key, value);\n return value;\n }\n\n console.log(\"Item not available in cache for key \".concat(key));\n }\n }, {\n key: \"ensureLimit\",\n value: function ensureLimit() {\n if (this.size === this.limit) {\n this.remove(this.tail.key);\n }\n }\n }, {\n key: \"remove\",\n value: function remove(key) {\n var node = this.cache[key];\n\n if (node.prev !== null) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n\n if (node.next !== null) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n\n delete this.cache[key];\n this.size--;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = null;\n this.tail = null;\n this.size = 0;\n this.cache = {};\n } // // Invokes the callback function with every node of the chain and the index of the node.\n // forEach(fn) {\n // let node = this.head;\n // let counter = 0;\n // while (node) {\n // fn(node, counter);\n // node = node.next;\n // counter++;\n // }\n // }\n // // To iterate over LRU with a 'for...of' loop\n // *[Symbol.iterator]() {\n // let node = this.head;\n // while (node) {\n // yield node;\n // node = node.next;\n // }\n // }\n\n }]);\n\n return LRUCache;\n}();\n\nexport { LRUCache as default };\n//# sourceMappingURL=LRUCache.js.map","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport LRUCache from './LRUCache.js'; // A cache for frequently used country-specific regular expressions. Set to 32 to cover ~2-3\n// countries being used for the same doc with ~10 patterns for each country. Some pages will have\n// a lot more countries in use, but typically fewer numbers for each so expanding the cache for\n// that use-case won't have a lot of benefit.\n\nvar RegExpCache = /*#__PURE__*/function () {\n function RegExpCache(size) {\n _classCallCheck(this, RegExpCache);\n\n this.cache = new LRUCache(size);\n }\n\n _createClass(RegExpCache, [{\n key: \"getPatternForRegExp\",\n value: function getPatternForRegExp(pattern) {\n var regExp = this.cache.get(pattern);\n\n if (!regExp) {\n regExp = new RegExp('^' + pattern);\n this.cache.put(pattern, regExp);\n }\n\n return regExp;\n }\n }]);\n\n return RegExpCache;\n}();\n\nexport { RegExpCache as default };\n//# sourceMappingURL=RegExpCache.js.map","/** Returns a regular expression quantifier with an upper and lower limit. */\nexport function limit(lower, upper) {\n if (lower < 0 || upper <= 0 || upper < lower) {\n throw new TypeError();\n }\n\n return \"{\".concat(lower, \",\").concat(upper, \"}\");\n}\n/**\r\n * Trims away any characters after the first match of {@code pattern} in {@code candidate},\r\n * returning the trimmed version.\r\n */\n\nexport function trimAfterFirstMatch(regexp, string) {\n var index = string.search(regexp);\n\n if (index >= 0) {\n return string.slice(0, index);\n }\n\n return string;\n}\nexport function startsWith(string, substring) {\n return string.indexOf(substring) === 0;\n}\nexport function endsWith(string, substring) {\n return string.indexOf(substring, string.length - substring.length) === string.length - substring.length;\n}\n//# sourceMappingURL=util.js.map","// Javascript doesn't support UTF-8 regular expressions.\n// So mimicking them here.\n// Copy-pasted from `PhoneNumberMatcher.js`.\n\n/**\r\n * \"\\p{Z}\" is any kind of whitespace or invisible separator (\"Separator\").\r\n * http://www.regular-expressions.info/unicode.html\r\n * \"\\P{Z}\" is the reverse of \"\\p{Z}\".\r\n * \"\\p{N}\" is any kind of numeric character in any script (\"Number\").\r\n * \"\\p{Nd}\" is a digit zero through nine in any script except \"ideographic scripts\" (\"Decimal_Digit_Number\").\r\n * \"\\p{Sc}\" is a currency symbol (\"Currency_Symbol\").\r\n * \"\\p{L}\" is any kind of letter from any language (\"Letter\").\r\n * \"\\p{Mn}\" is \"non-spacing mark\".\r\n *\r\n * Javascript doesn't support Unicode Regular Expressions\r\n * so substituting it with this explicit set of characters.\r\n *\r\n * https://stackoverflow.com/questions/13210194/javascript-regex-equivalent-of-a-za-z-using-pl\r\n * https://github.com/danielberndt/babel-plugin-utf-8-regex/blob/master/src/transformer.js\r\n */\nvar _pZ = \" \\xA0\\u1680\\u180E\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\";\nexport var pZ = \"[\".concat(_pZ, \"]\");\nexport var PZ = \"[^\".concat(_pZ, \"]\");\nexport var _pN = \"0-9\\xB2\\xB3\\xB9\\xBC-\\xBE\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u09F4-\\u09F9\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0B72-\\u0B77\\u0BE6-\\u0BF2\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0CE6-\\u0CEF\\u0D66-\\u0D75\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F33\\u1040-\\u1049\\u1090-\\u1099\\u1369-\\u137C\\u16EE-\\u16F0\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19DA\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u2182\\u2185-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3007\\u3021-\\u3029\\u3038-\\u303A\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA620-\\uA629\\uA6E6-\\uA6EF\\uA830-\\uA835\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19\"; // const pN = `[${_pN}]`\n\nvar _pNd = \"0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19\";\nexport var pNd = \"[\".concat(_pNd, \"]\");\nexport var _pL = \"A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\";\nvar pL = \"[\".concat(_pL, \"]\");\nvar pL_regexp = new RegExp(pL);\nvar _pSc = \"$\\xA2-\\xA5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20B9\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6\";\nvar pSc = \"[\".concat(_pSc, \"]\");\nvar pSc_regexp = new RegExp(pSc);\nvar _pMn = \"\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u08FE\\u0900-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1DC0-\\u1DE6\\u1DFC-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26\";\nvar pMn = \"[\".concat(_pMn, \"]\");\nvar pMn_regexp = new RegExp(pMn);\nvar _InBasic_Latin = \"\\0-\\x7F\";\nvar _InLatin_1_Supplement = \"\\x80-\\xFF\";\nvar _InLatin_Extended_A = \"\\u0100-\\u017F\";\nvar _InLatin_Extended_Additional = \"\\u1E00-\\u1EFF\";\nvar _InLatin_Extended_B = \"\\u0180-\\u024F\";\nvar _InCombining_Diacritical_Marks = \"\\u0300-\\u036F\";\nvar latinLetterRegexp = new RegExp('[' + _InBasic_Latin + _InLatin_1_Supplement + _InLatin_Extended_A + _InLatin_Extended_Additional + _InLatin_Extended_B + _InCombining_Diacritical_Marks + ']');\n/**\r\n * Helper method to determine if a character is a Latin-script letter or not.\r\n * For our purposes, combining marks should also return true since we assume\r\n * they have been added to a preceding Latin character.\r\n */\n\nexport function isLatinLetter(letter) {\n // Combining marks are a subset of non-spacing-mark.\n if (!pL_regexp.test(letter) && !pMn_regexp.test(letter)) {\n return false;\n }\n\n return latinLetterRegexp.test(letter);\n}\nexport function isInvalidPunctuationSymbol(character) {\n return character === '%' || pSc_regexp.test(character);\n}\n//# sourceMappingURL=utf-8.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport isValidNumber from '../validate_.js';\nimport parseDigits from '../helpers/parseDigits.js';\nimport { startsWith, endsWith } from './util.js';\n/**\r\n * Leniency when finding potential phone numbers in text segments\r\n * The levels here are ordered in increasing strictness.\r\n */\n\nexport default {\n /**\r\n * Phone numbers accepted are \"possible\", but not necessarily \"valid\".\r\n */\n POSSIBLE: function POSSIBLE(number, candidate, metadata) {\n return true;\n },\n\n /**\r\n * Phone numbers accepted are \"possible\" and \"valid\".\r\n * Numbers written in national format must have their national-prefix\r\n * present if it is usually written for a number of this type.\r\n */\n VALID: function VALID(number, candidate, metadata) {\n if (!isValidNumber(number, undefined, metadata) || !containsOnlyValidXChars(number, candidate.toString(), metadata)) {\n return false;\n } // Skipped for simplicity.\n // return isNationalPrefixPresentIfRequired(number, metadata)\n\n\n return true;\n },\n\n /**\r\n * Phone numbers accepted are \"valid\" and\r\n * are grouped in a possible way for this locale. For example, a US number written as\r\n * \"65 02 53 00 00\" and \"650253 0000\" are not accepted at this leniency level, whereas\r\n * \"650 253 0000\", \"650 2530000\" or \"6502530000\" are.\r\n * Numbers with more than one '/' symbol in the national significant number\r\n * are also dropped at this level.\r\n *\r\n * Warning: This level might result in lower coverage especially for regions outside of\r\n * country code \"+1\". If you are not sure about which level to use,\r\n * email the discussion group libphonenumber-discuss@googlegroups.com.\r\n */\n STRICT_GROUPING: function STRICT_GROUPING(number, candidate, metadata, regExpCache) {\n var candidateString = candidate.toString();\n\n if (!isValidNumber(number, undefined, metadata) || !containsOnlyValidXChars(number, candidateString, metadata) || containsMoreThanOneSlashInNationalNumber(number, candidateString) || !isNationalPrefixPresentIfRequired(number, metadata)) {\n return false;\n }\n\n return checkNumberGroupingIsValid(number, candidate, metadata, allNumberGroupsRemainGrouped, regExpCache);\n },\n\n /**\r\n * Phone numbers accepted are {@linkplain PhoneNumberUtil#isValidNumber(PhoneNumber) valid} and\r\n * are grouped in the same way that we would have formatted it, or as a single block. For\r\n * example, a US number written as \"650 2530000\" is not accepted at this leniency level, whereas\r\n * \"650 253 0000\" or \"6502530000\" are.\r\n * Numbers with more than one '/' symbol are also dropped at this level.\r\n *

\r\n * Warning: This level might result in lower coverage especially for regions outside of country\r\n * code \"+1\". If you are not sure about which level to use, email the discussion group\r\n * libphonenumber-discuss@googlegroups.com.\r\n */\n EXACT_GROUPING: function EXACT_GROUPING(number, candidate, metadata, regExpCache) {\n var candidateString = candidate.toString();\n\n if (!isValidNumber(number, undefined, metadata) || !containsOnlyValidXChars(number, candidateString, metadata) || containsMoreThanOneSlashInNationalNumber(number, candidateString) || !isNationalPrefixPresentIfRequired(number, metadata)) {\n return false;\n }\n\n return checkNumberGroupingIsValid(number, candidate, metadata, allNumberGroupsAreExactlyPresent, regExpCache);\n }\n};\n\nfunction containsOnlyValidXChars(number, candidate, metadata) {\n // The characters 'x' and 'X' can be (1) a carrier code, in which case they always precede the\n // national significant number or (2) an extension sign, in which case they always precede the\n // extension number. We assume a carrier code is more than 1 digit, so the first case has to\n // have more than 1 consecutive 'x' or 'X', whereas the second case can only have exactly 1 'x'\n // or 'X'. We ignore the character if it appears as the last character of the string.\n for (var index = 0; index < candidate.length - 1; index++) {\n var charAtIndex = candidate.charAt(index);\n\n if (charAtIndex === 'x' || charAtIndex === 'X') {\n var charAtNextIndex = candidate.charAt(index + 1);\n\n if (charAtNextIndex === 'x' || charAtNextIndex === 'X') {\n // This is the carrier code case, in which the 'X's always precede the national\n // significant number.\n index++;\n\n if (util.isNumberMatch(number, candidate.substring(index)) != MatchType.NSN_MATCH) {\n return false;\n } // This is the extension sign case, in which the 'x' or 'X' should always precede the\n // extension number.\n\n } else if (parseDigits(candidate.substring(index)) !== number.ext) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nfunction isNationalPrefixPresentIfRequired(number, _metadata) {\n // First, check how we deduced the country code. If it was written in international format, then\n // the national prefix is not required.\n if (number.getCountryCodeSource() != 'FROM_DEFAULT_COUNTRY') {\n return true;\n }\n\n var phoneNumberRegion = util.getRegionCodeForCountryCode(number.getCountryCode());\n var metadata = util.getMetadataForRegion(phoneNumberRegion);\n\n if (metadata == null) {\n return true;\n } // Check if a national prefix should be present when formatting this number.\n\n\n var nationalNumber = util.getNationalSignificantNumber(number);\n var formatRule = util.chooseFormattingPatternForNumber(metadata.numberFormats(), nationalNumber); // To do this, we check that a national prefix formatting rule was present\n // and that it wasn't just the first-group symbol ($1) with punctuation.\n\n if (formatRule && formatRule.getNationalPrefixFormattingRule().length > 0) {\n if (formatRule.getNationalPrefixOptionalWhenFormatting()) {\n // The national-prefix is optional in these cases, so we don't need to check if it was\n // present.\n return true;\n }\n\n if (PhoneNumberUtil.formattingRuleHasFirstGroupOnly(formatRule.getNationalPrefixFormattingRule())) {\n // National Prefix not needed for this number.\n return true;\n } // Normalize the remainder.\n\n\n var rawInputCopy = PhoneNumberUtil.normalizeDigitsOnly(number.getRawInput()); // Check if we found a national prefix and/or carrier code at the start of the raw input, and\n // return the result.\n\n return util.maybeStripNationalPrefixAndCarrierCode(rawInputCopy, metadata, null);\n }\n\n return true;\n}\n\nexport function containsMoreThanOneSlashInNationalNumber(number, candidate) {\n var firstSlashInBodyIndex = candidate.indexOf('/');\n\n if (firstSlashInBodyIndex < 0) {\n // No slashes, this is okay.\n return false;\n } // Now look for a second one.\n\n\n var secondSlashInBodyIndex = candidate.indexOf('/', firstSlashInBodyIndex + 1);\n\n if (secondSlashInBodyIndex < 0) {\n // Only one slash, this is okay.\n return false;\n } // If the first slash is after the country calling code, this is permitted.\n\n\n var candidateHasCountryCode = number.getCountryCodeSource() === CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN || number.getCountryCodeSource() === CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN;\n\n if (candidateHasCountryCode && PhoneNumberUtil.normalizeDigitsOnly(candidate.substring(0, firstSlashInBodyIndex)) === String(number.getCountryCode())) {\n // Any more slashes and this is illegal.\n return candidate.slice(secondSlashInBodyIndex + 1).indexOf('/') >= 0;\n }\n\n return true;\n}\n\nfunction checkNumberGroupingIsValid(number, candidate, metadata, checkGroups, regExpCache) {\n var normalizedCandidate = normalizeDigits(candidate, true\n /* keep non-digits */\n );\n var formattedNumberGroups = getNationalNumberGroups(metadata, number, null);\n\n if (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) {\n return true;\n } // If this didn't pass, see if there are any alternate formats that match, and try them instead.\n\n\n var alternateFormats = MetadataManager.getAlternateFormatsForCountry(number.getCountryCode());\n var nationalSignificantNumber = util.getNationalSignificantNumber(number);\n\n if (alternateFormats) {\n for (var _iterator = _createForOfIteratorHelperLoose(alternateFormats.numberFormats()), _step; !(_step = _iterator()).done;) {\n var alternateFormat = _step.value;\n\n if (alternateFormat.leadingDigitsPatterns().length > 0) {\n // There is only one leading digits pattern for alternate formats.\n var leadingDigitsRegExp = regExpCache.getPatternForRegExp('^' + alternateFormat.leadingDigitsPatterns()[0]);\n\n if (!leadingDigitsRegExp.test(nationalSignificantNumber)) {\n // Leading digits don't match; try another one.\n continue;\n }\n }\n\n formattedNumberGroups = getNationalNumberGroups(metadata, number, alternateFormat);\n\n if (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) {\n return true;\n }\n }\n }\n\n return false;\n}\n/**\r\n * Helper method to get the national-number part of a number, formatted without any national\r\n * prefix, and return it as a set of digit blocks that would be formatted together following\r\n * standard formatting rules.\r\n */\n\n\nfunction getNationalNumberGroups(metadata, number, formattingPattern) {\n if (formattingPattern) {\n // We format the NSN only, and split that according to the separator.\n var nationalSignificantNumber = util.getNationalSignificantNumber(number);\n return util.formatNsnUsingPattern(nationalSignificantNumber, formattingPattern, 'RFC3966', metadata).split('-');\n } // This will be in the format +CC-DG1-DG2-DGX;ext=EXT where DG1..DGX represents groups of digits.\n\n\n var rfc3966Format = formatNumber(number, 'RFC3966', metadata); // We remove the extension part from the formatted string before splitting it into different\n // groups.\n\n var endIndex = rfc3966Format.indexOf(';');\n\n if (endIndex < 0) {\n endIndex = rfc3966Format.length;\n } // The country-code will have a '-' following it.\n\n\n var startIndex = rfc3966Format.indexOf('-') + 1;\n return rfc3966Format.slice(startIndex, endIndex).split('-');\n}\n\nfunction allNumberGroupsAreExactlyPresent(metadata, number, normalizedCandidate, formattedNumberGroups) {\n var candidateGroups = normalizedCandidate.split(NON_DIGITS_PATTERN); // Set this to the last group, skipping it if the number has an extension.\n\n var candidateNumberGroupIndex = number.hasExtension() ? candidateGroups.length - 2 : candidateGroups.length - 1; // First we check if the national significant number is formatted as a block.\n // We use contains and not equals, since the national significant number may be present with\n // a prefix such as a national number prefix, or the country code itself.\n\n if (candidateGroups.length == 1 || candidateGroups[candidateNumberGroupIndex].contains(util.getNationalSignificantNumber(number))) {\n return true;\n } // Starting from the end, go through in reverse, excluding the first group, and check the\n // candidate and number groups are the same.\n\n\n var formattedNumberGroupIndex = formattedNumberGroups.length - 1;\n\n while (formattedNumberGroupIndex > 0 && candidateNumberGroupIndex >= 0) {\n if (candidateGroups[candidateNumberGroupIndex] !== formattedNumberGroups[formattedNumberGroupIndex]) {\n return false;\n }\n\n formattedNumberGroupIndex--;\n candidateNumberGroupIndex--;\n } // Now check the first group. There may be a national prefix at the start, so we only check\n // that the candidate group ends with the formatted number group.\n\n\n return candidateNumberGroupIndex >= 0 && endsWith(candidateGroups[candidateNumberGroupIndex], formattedNumberGroups[0]);\n}\n\nfunction allNumberGroupsRemainGrouped(metadata, number, normalizedCandidate, formattedNumberGroups) {\n var fromIndex = 0;\n\n if (number.getCountryCodeSource() !== CountryCodeSource.FROM_DEFAULT_COUNTRY) {\n // First skip the country code if the normalized candidate contained it.\n var countryCode = String(number.getCountryCode());\n fromIndex = normalizedCandidate.indexOf(countryCode) + countryCode.length();\n } // Check each group of consecutive digits are not broken into separate groupings in the\n // {@code normalizedCandidate} string.\n\n\n for (var i = 0; i < formattedNumberGroups.length; i++) {\n // Fails if the substring of {@code normalizedCandidate} starting from {@code fromIndex}\n // doesn't contain the consecutive digits in formattedNumberGroups[i].\n fromIndex = normalizedCandidate.indexOf(formattedNumberGroups[i], fromIndex);\n\n if (fromIndex < 0) {\n return false;\n } // Moves {@code fromIndex} forward.\n\n\n fromIndex += formattedNumberGroups[i].length();\n\n if (i == 0 && fromIndex < normalizedCandidate.length()) {\n // We are at the position right after the NDC. We get the region used for formatting\n // information based on the country code in the phone number, rather than the number itself,\n // as we do not need to distinguish between different countries with the same country\n // calling code and this is faster.\n var region = util.getRegionCodeForCountryCode(number.getCountryCode());\n\n if (util.getNddPrefixForRegion(region, true) != null && Character.isDigit(normalizedCandidate.charAt(fromIndex))) {\n // This means there is no formatting symbol after the NDC. In this case, we only\n // accept the number if there is no formatting symbol at all in the number, except\n // for extensions. This is only important for countries with national prefixes.\n var nationalSignificantNumber = util.getNationalSignificantNumber(number);\n return startsWith(normalizedCandidate.slice(fromIndex - formattedNumberGroups[i].length), nationalSignificantNumber);\n }\n }\n } // The check here makes sure that we haven't mistakenly already used the extension to\n // match the last group of the subscriber number. Note the extension cannot have\n // formatting in-between digits.\n\n\n return normalizedCandidate.slice(fromIndex).contains(number.getExtension());\n}\n//# sourceMappingURL=Leniency.js.map","import { trimAfterFirstMatch } from './util.js'; // Regular expression of characters typically used to start a second phone number for the purposes\n// of parsing. This allows us to strip off parts of the number that are actually the start of\n// another number, such as for: (530) 583-6985 x302/x2303 -> the second extension here makes this\n// actually two phone numbers, (530) 583-6985 x302 and (530) 583-6985 x2303. We remove the second\n// extension so that the first number is parsed correctly.\n//\n// Matches a slash (\\ or /) followed by a space followed by an `x`.\n//\n\nvar SECOND_NUMBER_START_PATTERN = /[\\\\/] *x/;\nexport default function parsePreCandidate(candidate) {\n // Check for extra numbers at the end.\n // TODO: This is the place to start when trying to support extraction of multiple phone number\n // from split notations (+41 79 123 45 67 / 68).\n return trimAfterFirstMatch(SECOND_NUMBER_START_PATTERN, candidate);\n}\n//# sourceMappingURL=parsePreCandidate.js.map","// Matches strings that look like dates using \"/\" as a separator.\n// Examples: 3/10/2011, 31/10/96 or 08/31/95.\nvar SLASH_SEPARATED_DATES = /(?:(?:[0-3]?\\d\\/[01]?\\d)|(?:[01]?\\d\\/[0-3]?\\d))\\/(?:[12]\\d)?\\d{2}/; // Matches timestamps.\n// Examples: \"2012-01-02 08:00\".\n// Note that the reg-ex does not include the\n// trailing \":\\d\\d\" -- that is covered by TIME_STAMPS_SUFFIX.\n\nvar TIME_STAMPS = /[12]\\d{3}[-/]?[01]\\d[-/]?[0-3]\\d +[0-2]\\d$/;\nvar TIME_STAMPS_SUFFIX_LEADING = /^:[0-5]\\d/;\nexport default function isValidPreCandidate(candidate, offset, text) {\n // Skip a match that is more likely to be a date.\n if (SLASH_SEPARATED_DATES.test(candidate)) {\n return false;\n } // Skip potential time-stamps.\n\n\n if (TIME_STAMPS.test(candidate)) {\n var followingText = text.slice(offset + candidate.length);\n\n if (TIME_STAMPS_SUFFIX_LEADING.test(followingText)) {\n return false;\n }\n }\n\n return true;\n}\n//# sourceMappingURL=isValidPreCandidate.js.map","// Copy-pasted from `PhoneNumberMatcher.js`.\nimport { PLUS_CHARS } from '../constants.js';\nimport { limit } from './util.js';\nimport { isLatinLetter, isInvalidPunctuationSymbol } from './utf-8.js';\nvar OPENING_PARENS = \"(\\\\[\\uFF08\\uFF3B\";\nvar CLOSING_PARENS = \")\\\\]\\uFF09\\uFF3D\";\nvar NON_PARENS = \"[^\".concat(OPENING_PARENS).concat(CLOSING_PARENS, \"]\");\nexport var LEAD_CLASS = \"[\".concat(OPENING_PARENS).concat(PLUS_CHARS, \"]\"); // Punctuation that may be at the start of a phone number - brackets and plus signs.\n\nvar LEAD_CLASS_LEADING = new RegExp('^' + LEAD_CLASS); // Limit on the number of pairs of brackets in a phone number.\n\nvar BRACKET_PAIR_LIMIT = limit(0, 3);\n/**\r\n * Pattern to check that brackets match. Opening brackets should be closed within a phone number.\r\n * This also checks that there is something inside the brackets. Having no brackets at all is also\r\n * fine.\r\n *\r\n * An opening bracket at the beginning may not be closed, but subsequent ones should be. It's\r\n * also possible that the leading bracket was dropped, so we shouldn't be surprised if we see a\r\n * closing bracket first. We limit the sets of brackets in a phone number to four.\r\n */\n\nvar MATCHING_BRACKETS_ENTIRE = new RegExp('^' + \"(?:[\" + OPENING_PARENS + \"])?\" + \"(?:\" + NON_PARENS + \"+\" + \"[\" + CLOSING_PARENS + \"])?\" + NON_PARENS + \"+\" + \"(?:[\" + OPENING_PARENS + \"]\" + NON_PARENS + \"+[\" + CLOSING_PARENS + \"])\" + BRACKET_PAIR_LIMIT + NON_PARENS + \"*\" + '$');\n/**\r\n * Matches strings that look like publication pages. Example:\r\n *

Computing Complete Answers to Queries in the Presence of Limited Access Patterns.\r\n * Chen Li. VLDB J. 12(3): 211-227 (2003).
\r\n *\r\n * The string \"211-227 (2003)\" is not a telephone number.\r\n */\n\nvar PUB_PAGES = /\\d{1,5}-+\\d{1,5}\\s{0,4}\\(\\d{1,4}/;\nexport default function isValidCandidate(candidate, offset, text, leniency) {\n // Check the candidate doesn't contain any formatting\n // which would indicate that it really isn't a phone number.\n if (!MATCHING_BRACKETS_ENTIRE.test(candidate) || PUB_PAGES.test(candidate)) {\n return;\n } // If leniency is set to VALID or stricter, we also want to skip numbers that are surrounded\n // by Latin alphabetic characters, to skip cases like abc8005001234 or 8005001234def.\n\n\n if (leniency !== 'POSSIBLE') {\n // If the candidate is not at the start of the text,\n // and does not start with phone-number punctuation,\n // check the previous character.\n if (offset > 0 && !LEAD_CLASS_LEADING.test(candidate)) {\n var previousChar = text[offset - 1]; // We return null if it is a latin letter or an invalid punctuation symbol.\n\n if (isInvalidPunctuationSymbol(previousChar) || isLatinLetter(previousChar)) {\n return false;\n }\n }\n\n var lastCharIndex = offset + candidate.length;\n\n if (lastCharIndex < text.length) {\n var nextChar = text[lastCharIndex];\n\n if (isInvalidPunctuationSymbol(nextChar) || isLatinLetter(nextChar)) {\n return false;\n }\n }\n }\n\n return true;\n}\n//# sourceMappingURL=isValidCandidate.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/**\r\n * A port of Google's `PhoneNumberMatcher.java`.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberMatcher.java\r\n * Date: 08.03.2018.\r\n */\nimport PhoneNumber from './PhoneNumber.js';\nimport { MAX_LENGTH_FOR_NSN, MAX_LENGTH_COUNTRY_CODE, VALID_PUNCTUATION } from './constants.js';\nimport createExtensionPattern from './helpers/extension/createExtensionPattern.js';\nimport RegExpCache from './findNumbers/RegExpCache.js';\nimport { limit, trimAfterFirstMatch } from './findNumbers/util.js';\nimport { _pL, _pN, pZ, PZ, pNd } from './findNumbers/utf-8.js';\nimport Leniency from './findNumbers/Leniency.js';\nimport parsePreCandidate from './findNumbers/parsePreCandidate.js';\nimport isValidPreCandidate from './findNumbers/isValidPreCandidate.js';\nimport isValidCandidate, { LEAD_CLASS } from './findNumbers/isValidCandidate.js';\nimport { isSupportedCountry } from './metadata.js';\nimport parseNumber from './parse_.js';\nvar EXTN_PATTERNS_FOR_MATCHING = createExtensionPattern('matching');\n/**\r\n * Patterns used to extract phone numbers from a larger phone-number-like pattern. These are\r\n * ordered according to specificity. For example, white-space is last since that is frequently\r\n * used in numbers, not just to separate two numbers. We have separate patterns since we don't\r\n * want to break up the phone-number-like text on more than one different kind of symbol at one\r\n * time, although symbols of the same type (e.g. space) can be safely grouped together.\r\n *\r\n * Note that if there is a match, we will always check any text found up to the first match as\r\n * well.\r\n */\n\nvar INNER_MATCHES = [// Breaks on the slash - e.g. \"651-234-2345/332-445-1234\"\n'\\\\/+(.*)/', // Note that the bracket here is inside the capturing group, since we consider it part of the\n// phone number. Will match a pattern like \"(650) 223 3345 (754) 223 3321\".\n'(\\\\([^(]*)', // Breaks on a hyphen - e.g. \"12345 - 332-445-1234 is my number.\"\n// We require a space on either side of the hyphen for it to be considered a separator.\n\"(?:\".concat(pZ, \"-|-\").concat(pZ, \")\").concat(pZ, \"*(.+)\"), // Various types of wide hyphens. Note we have decided not to enforce a space here, since it's\n// possible that it's supposed to be used to break two numbers without spaces, and we haven't\n// seen many instances of it used within a number.\n\"[\\u2012-\\u2015\\uFF0D]\".concat(pZ, \"*(.+)\"), // Breaks on a full stop - e.g. \"12345. 332-445-1234 is my number.\"\n\"\\\\.+\".concat(pZ, \"*([^.]+)\"), // Breaks on space - e.g. \"3324451234 8002341234\"\n\"\".concat(pZ, \"+(\").concat(PZ, \"+)\")]; // Limit on the number of leading (plus) characters.\n\nvar leadLimit = limit(0, 2); // Limit on the number of consecutive punctuation characters.\n\nvar punctuationLimit = limit(0, 4);\n/* The maximum number of digits allowed in a digit-separated block. As we allow all digits in a\r\n * single block, set high enough to accommodate the entire national number and the international\r\n * country code. */\n\nvar digitBlockLimit = MAX_LENGTH_FOR_NSN + MAX_LENGTH_COUNTRY_CODE; // Limit on the number of blocks separated by punctuation.\n// Uses digitBlockLimit since some formats use spaces to separate each digit.\n\nvar blockLimit = limit(0, digitBlockLimit);\n/* A punctuation sequence allowing white space. */\n\nvar punctuation = \"[\".concat(VALID_PUNCTUATION, \"]\") + punctuationLimit; // A digits block without punctuation.\n\nvar digitSequence = pNd + limit(1, digitBlockLimit);\n/**\r\n * Phone number pattern allowing optional punctuation.\r\n * The phone number pattern used by `find()`, similar to\r\n * VALID_PHONE_NUMBER, but with the following differences:\r\n *
    \r\n *
  • All captures are limited in order to place an upper bound to the text matched by the\r\n * pattern.\r\n *
      \r\n *
    • Leading punctuation / plus signs are limited.\r\n *
    • Consecutive occurrences of punctuation are limited.\r\n *
    • Number of digits is limited.\r\n *
    \r\n *
  • No whitespace is allowed at the start or end.\r\n *
  • No alpha digits (vanity numbers such as 1-800-SIX-FLAGS) are currently supported.\r\n *
\r\n */\n\nvar PATTERN = '(?:' + LEAD_CLASS + punctuation + ')' + leadLimit + digitSequence + '(?:' + punctuation + digitSequence + ')' + blockLimit + '(?:' + EXTN_PATTERNS_FOR_MATCHING + ')?'; // Regular expression of trailing characters that we want to remove.\n// We remove all characters that are not alpha or numerical characters.\n// The hash character is retained here, as it may signify\n// the previous block was an extension.\n//\n// // Don't know what does '&&' mean here.\n// const UNWANTED_END_CHAR_PATTERN = new RegExp(`[[\\\\P{N}&&\\\\P{L}]&&[^#]]+$`)\n//\n\nvar UNWANTED_END_CHAR_PATTERN = new RegExp(\"[^\".concat(_pN).concat(_pL, \"#]+$\"));\nvar NON_DIGITS_PATTERN = /(\\D+)/;\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1;\n/**\r\n * A stateful class that finds and extracts telephone numbers from {@linkplain CharSequence text}.\r\n * Instances can be created using the {@linkplain PhoneNumberUtil#findNumbers factory methods} in\r\n * {@link PhoneNumberUtil}.\r\n *\r\n *

Vanity numbers (phone numbers using alphabetic digits such as 1-800-SIX-FLAGS are\r\n * not found.\r\n *\r\n *

This class is not thread-safe.\r\n */\n\nvar PhoneNumberMatcher = /*#__PURE__*/function () {\n /**\r\n * Creates a new instance. See the factory methods in {@link PhoneNumberUtil} on how to obtain a\r\n * new instance.\r\n *\r\n * @param util the phone number util to use\r\n * @param text the character sequence that we will search, null for no text\r\n * @param country the country to assume for phone numbers not written in international format\r\n * (with a leading plus, or with the international dialing prefix of the specified region).\r\n * May be null or \"ZZ\" if only numbers with a leading plus should be\r\n * considered.\r\n * @param leniency the leniency to use when evaluating candidate phone numbers\r\n * @param maxTries the maximum number of invalid numbers to try before giving up on the text.\r\n * This is to cover degenerate cases where the text has a lot of false positives in it. Must\r\n * be {@code >= 0}.\r\n */\n function PhoneNumberMatcher() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var metadata = arguments.length > 2 ? arguments[2] : undefined;\n\n _classCallCheck(this, PhoneNumberMatcher);\n\n options = _objectSpread(_objectSpread({}, options), {}, {\n defaultCallingCode: options.defaultCallingCode,\n defaultCountry: options.defaultCountry && isSupportedCountry(options.defaultCountry, metadata) ? options.defaultCountry : undefined,\n leniency: options.leniency || options.extended ? 'POSSIBLE' : 'VALID',\n maxTries: options.maxTries || MAX_SAFE_INTEGER\n });\n\n if (!options.leniency) {\n throw new TypeError('`Leniency` not supplied');\n }\n\n if (options.maxTries < 0) {\n throw new TypeError('`maxTries` not supplied');\n }\n\n this.text = text;\n this.options = options;\n this.metadata = metadata;\n /** The degree of validation requested. */\n\n this.leniency = Leniency[options.leniency];\n\n if (!this.leniency) {\n throw new TypeError(\"Unknown leniency: \".concat(options.leniency, \".\"));\n }\n /** The maximum number of retries after matching an invalid number. */\n\n\n this.maxTries = options.maxTries;\n this.PATTERN = new RegExp(PATTERN, 'ig');\n /** The iteration tristate. */\n\n this.state = 'NOT_READY';\n /** The next index to start searching at. Undefined in {@link State#DONE}. */\n\n this.searchIndex = 0; // A cache for frequently used country-specific regular expressions. Set to 32 to cover ~2-3\n // countries being used for the same doc with ~10 patterns for each country. Some pages will have\n // a lot more countries in use, but typically fewer numbers for each so expanding the cache for\n // that use-case won't have a lot of benefit.\n\n this.regExpCache = new RegExpCache(32);\n }\n /**\r\n * Attempts to find the next subsequence in the searched sequence on or after {@code searchIndex}\r\n * that represents a phone number. Returns the next match, null if none was found.\r\n *\r\n * @param index the search index to start searching at\r\n * @return the phone number match found, null if none can be found\r\n */\n\n\n _createClass(PhoneNumberMatcher, [{\n key: \"find\",\n value: function find() {\n // // Reset the regular expression.\n // this.PATTERN.lastIndex = index\n var matches;\n\n while (this.maxTries > 0 && (matches = this.PATTERN.exec(this.text)) !== null) {\n var candidate = matches[0];\n var offset = matches.index;\n candidate = parsePreCandidate(candidate);\n\n if (isValidPreCandidate(candidate, offset, this.text)) {\n var match = // Try to come up with a valid match given the entire candidate.\n this.parseAndVerify(candidate, offset, this.text) // If that failed, try to find an \"inner match\" -\n // there might be a phone number within this candidate.\n || this.extractInnerMatch(candidate, offset, this.text);\n\n if (match) {\n if (this.options.v2) {\n var phoneNumber = new PhoneNumber(match.country || match.countryCallingCode, match.phone, this.metadata);\n\n if (match.ext) {\n phoneNumber.ext = match.ext;\n }\n\n return {\n startsAt: match.startsAt,\n endsAt: match.endsAt,\n number: phoneNumber\n };\n }\n\n return match;\n }\n }\n\n this.maxTries--;\n }\n }\n /**\r\n * Attempts to extract a match from `substring`\r\n * if the substring itself does not qualify as a match.\r\n */\n\n }, {\n key: \"extractInnerMatch\",\n value: function extractInnerMatch(substring, offset, text) {\n for (var _iterator = _createForOfIteratorHelperLoose(INNER_MATCHES), _step; !(_step = _iterator()).done;) {\n var innerMatchPattern = _step.value;\n var isFirstMatch = true;\n var candidateMatch = void 0;\n var innerMatchRegExp = new RegExp(innerMatchPattern, 'g');\n\n while (this.maxTries > 0 && (candidateMatch = innerMatchRegExp.exec(substring)) !== null) {\n if (isFirstMatch) {\n // We should handle any group before this one too.\n var _candidate = trimAfterFirstMatch(UNWANTED_END_CHAR_PATTERN, substring.slice(0, candidateMatch.index));\n\n var _match = this.parseAndVerify(_candidate, offset, text);\n\n if (_match) {\n return _match;\n }\n\n this.maxTries--;\n isFirstMatch = false;\n }\n\n var candidate = trimAfterFirstMatch(UNWANTED_END_CHAR_PATTERN, candidateMatch[1]); // Java code does `groupMatcher.start(1)` here,\n // but there's no way in javascript to get a `candidate` start index,\n // therefore resort to using this kind of an approximation.\n // (`groupMatcher` is called `candidateInSubstringMatch` in this javascript port)\n // https://stackoverflow.com/questions/15934353/get-index-of-each-capture-in-a-javascript-regex\n\n var candidateIndexGuess = substring.indexOf(candidate, candidateMatch.index);\n var match = this.parseAndVerify(candidate, offset + candidateIndexGuess, text);\n\n if (match) {\n return match;\n }\n\n this.maxTries--;\n }\n }\n }\n /**\r\n * Parses a phone number from the `candidate` using `parseNumber` and\r\n * verifies it matches the requested `leniency`. If parsing and verification succeed,\r\n * a corresponding `PhoneNumberMatch` is returned, otherwise this method returns `null`.\r\n *\r\n * @param candidate the candidate match\r\n * @param offset the offset of {@code candidate} within {@link #text}\r\n * @return the parsed and validated phone number match, or null\r\n */\n\n }, {\n key: \"parseAndVerify\",\n value: function parseAndVerify(candidate, offset, text) {\n if (!isValidCandidate(candidate, offset, text, this.options.leniency)) {\n return;\n }\n\n var number = parseNumber(candidate, {\n extended: true,\n defaultCountry: this.options.defaultCountry,\n defaultCallingCode: this.options.defaultCallingCode\n }, this.metadata);\n\n if (!number.possible) {\n return;\n }\n\n if (this.leniency(number, candidate, this.metadata, this.regExpCache)) {\n // // We used parseAndKeepRawInput to create this number,\n // // but for now we don't return the extra values parsed.\n // // TODO: stop clearing all values here and switch all users over\n // // to using rawInput() rather than the rawString() of PhoneNumberMatch.\n // number.clearCountryCodeSource()\n // number.clearRawInput()\n // number.clearPreferredDomesticCarrierCode()\n var result = {\n startsAt: offset,\n endsAt: offset + candidate.length,\n phone: number.phone\n };\n\n if (number.country && number.country !== '001') {\n result.country = number.country;\n } else {\n result.countryCallingCode = number.countryCallingCode;\n }\n\n if (number.ext) {\n result.ext = number.ext;\n }\n\n return result;\n }\n }\n }, {\n key: \"hasNext\",\n value: function hasNext() {\n if (this.state === 'NOT_READY') {\n this.lastMatch = this.find(); // (this.searchIndex)\n\n if (this.lastMatch) {\n // this.searchIndex = this.lastMatch.endsAt\n this.state = 'READY';\n } else {\n this.state = 'DONE';\n }\n }\n\n return this.state === 'READY';\n }\n }, {\n key: \"next\",\n value: function next() {\n // Check the state and find the next match as a side-effect if necessary.\n if (!this.hasNext()) {\n throw new Error('No next element');\n } // Don't retain that memory any longer than necessary.\n\n\n var result = this.lastMatch;\n this.lastMatch = null;\n this.state = 'NOT_READY';\n return result;\n }\n }]);\n\n return PhoneNumberMatcher;\n}();\n\nexport { PhoneNumberMatcher as default };\n//# sourceMappingURL=PhoneNumberMatcher.js.map","import PhoneNumberMatcher from './PhoneNumberMatcher.js';\nexport default function findNumbers(text, options, metadata) {\n var matcher = new PhoneNumberMatcher(text, options, metadata);\n var results = [];\n\n while (matcher.hasNext()) {\n results.push(matcher.next());\n }\n\n return results;\n}\n//# sourceMappingURL=findNumbers_.js.map","import _findNumbers from './findNumbers_.js';\nimport { normalizeArguments } from './parsePhoneNumber.js';\nexport default function findNumbers() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return _findNumbers(text, options, metadata);\n}\n//# sourceMappingURL=findNumbers.js.map","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { normalizeArguments } from './parsePhoneNumber.js';\nimport PhoneNumberMatcher from './PhoneNumberMatcher.js';\n/**\r\n * @return ES6 `for ... of` iterator.\r\n */\n\nexport default function searchNumbers() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n var matcher = new PhoneNumberMatcher(text, options, metadata);\n return _defineProperty({}, Symbol.iterator, function () {\n return {\n next: function next() {\n if (matcher.hasNext()) {\n return {\n done: false,\n value: matcher.next()\n };\n }\n\n return {\n done: true\n };\n }\n };\n });\n}\n//# sourceMappingURL=searchNumbers.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport findNumbers from './findNumbers.js';\nexport default function findPhoneNumbersInText(text, defaultCountry, options, metadata) {\n var args = getArguments(defaultCountry, options, metadata);\n return findNumbers(text, args.options, args.metadata);\n}\nexport function getArguments(defaultCountry, options, metadata) {\n if (metadata) {\n if (defaultCountry) {\n options = _objectSpread(_objectSpread({}, options), {}, {\n defaultCountry: defaultCountry\n });\n }\n } else {\n if (options) {\n metadata = options;\n\n if (defaultCountry) {\n if (is_object(defaultCountry)) {\n options = defaultCountry;\n } else {\n options = {\n defaultCountry: defaultCountry\n };\n }\n } else {\n options = undefined;\n }\n } else {\n metadata = defaultCountry;\n options = undefined;\n }\n }\n\n return {\n options: _objectSpread(_objectSpread({}, options), {}, {\n v2: true\n }),\n metadata: metadata\n };\n} // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\nvar is_object = function is_object(_) {\n return _typeof(_) === 'object';\n};\n//# sourceMappingURL=findPhoneNumbersInText.js.map","import searchNumbers from './searchNumbers.js';\nimport { getArguments } from './findPhoneNumbersInText.js';\nexport default function searchPhoneNumbersInText(text, defaultCountry, options, metadata) {\n var args = getArguments(defaultCountry, options, metadata);\n return searchNumbers(text, args.options, args.metadata);\n}\n//# sourceMappingURL=searchPhoneNumbersInText.js.map","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nvar AsYouTypeState = /*#__PURE__*/function () {\n function AsYouTypeState(_ref) {\n var onCountryChange = _ref.onCountryChange,\n onCallingCodeChange = _ref.onCallingCodeChange;\n\n _classCallCheck(this, AsYouTypeState);\n\n this.onCountryChange = onCountryChange;\n this.onCallingCodeChange = onCallingCodeChange;\n }\n\n _createClass(AsYouTypeState, [{\n key: \"reset\",\n value: function reset(defaultCountry, defaultCallingCode) {\n this.international = false;\n this.IDDPrefix = undefined;\n this.missingPlus = undefined;\n this.callingCode = undefined;\n this.digits = '';\n this.resetNationalSignificantNumber();\n this.initCountryAndCallingCode(defaultCountry, defaultCallingCode);\n }\n }, {\n key: \"resetNationalSignificantNumber\",\n value: function resetNationalSignificantNumber() {\n this.nationalSignificantNumber = this.getNationalDigits();\n this.nationalSignificantNumberMatchesInput = true;\n this.nationalPrefix = undefined;\n this.carrierCode = undefined;\n this.complexPrefixBeforeNationalSignificantNumber = undefined;\n }\n }, {\n key: \"update\",\n value: function update(properties) {\n for (var _i = 0, _Object$keys = Object.keys(properties); _i < _Object$keys.length; _i++) {\n var key = _Object$keys[_i];\n this[key] = properties[key];\n }\n }\n }, {\n key: \"initCountryAndCallingCode\",\n value: function initCountryAndCallingCode(country, callingCode) {\n this.setCountry(country);\n this.setCallingCode(callingCode);\n }\n }, {\n key: \"setCountry\",\n value: function setCountry(country) {\n this.country = country;\n this.onCountryChange(country);\n }\n }, {\n key: \"setCallingCode\",\n value: function setCallingCode(callingCode) {\n this.callingCode = callingCode;\n this.onCallingCodeChange(callingCode, this.country);\n }\n }, {\n key: \"startInternationalNumber\",\n value: function startInternationalNumber(country, callingCode) {\n // Prepend the `+` to parsed input.\n this.international = true; // If a default country was set then reset it\n // because an explicitly international phone\n // number is being entered.\n\n this.initCountryAndCallingCode(country, callingCode);\n }\n }, {\n key: \"appendDigits\",\n value: function appendDigits(nextDigits) {\n this.digits += nextDigits;\n }\n }, {\n key: \"appendNationalSignificantNumberDigits\",\n value: function appendNationalSignificantNumberDigits(nextDigits) {\n this.nationalSignificantNumber += nextDigits;\n }\n /**\r\n * Returns the part of `this.digits` that corresponds to the national number.\r\n * Basically, all digits that have been input by the user, except for the\r\n * international prefix and the country calling code part\r\n * (if the number is an international one).\r\n * @return {string}\r\n */\n\n }, {\n key: \"getNationalDigits\",\n value: function getNationalDigits() {\n if (this.international) {\n return this.digits.slice((this.IDDPrefix ? this.IDDPrefix.length : 0) + (this.callingCode ? this.callingCode.length : 0));\n }\n\n return this.digits;\n }\n }, {\n key: \"getDigitsWithoutInternationalPrefix\",\n value: function getDigitsWithoutInternationalPrefix() {\n if (this.international) {\n if (this.IDDPrefix) {\n return this.digits.slice(this.IDDPrefix.length);\n }\n }\n\n return this.digits;\n }\n }]);\n\n return AsYouTypeState;\n}();\n\nexport { AsYouTypeState as default };\n//# sourceMappingURL=AsYouTypeState.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n// Should be the same as `DIGIT_PLACEHOLDER` in `libphonenumber-metadata-generator`.\nexport var DIGIT_PLACEHOLDER = 'x'; // '\\u2008' (punctuation space)\n\nvar DIGIT_PLACEHOLDER_MATCHER = new RegExp(DIGIT_PLACEHOLDER); // Counts all occurences of a symbol in a string.\n// Unicode-unsafe (because using `.split()`).\n\nexport function countOccurences(symbol, string) {\n var count = 0; // Using `.split('')` to iterate through a string here\n // to avoid requiring `Symbol.iterator` polyfill.\n // `.split('')` is generally not safe for Unicode,\n // but in this particular case for counting brackets it is safe.\n // for (const character of string)\n\n for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) {\n var character = _step.value;\n\n if (character === symbol) {\n count++;\n }\n }\n\n return count;\n} // Repeats a string (or a symbol) N times.\n// http://stackoverflow.com/questions/202605/repeat-string-javascript\n\nexport function repeat(string, times) {\n if (times < 1) {\n return '';\n }\n\n var result = '';\n\n while (times > 1) {\n if (times & 1) {\n result += string;\n }\n\n times >>= 1;\n string += string;\n }\n\n return result + string;\n}\nexport function cutAndStripNonPairedParens(string, cutBeforeIndex) {\n if (string[cutBeforeIndex] === ')') {\n cutBeforeIndex++;\n }\n\n return stripNonPairedParens(string.slice(0, cutBeforeIndex));\n}\nexport function closeNonPairedParens(template, cut_before) {\n var retained_template = template.slice(0, cut_before);\n var opening_braces = countOccurences('(', retained_template);\n var closing_braces = countOccurences(')', retained_template);\n var dangling_braces = opening_braces - closing_braces;\n\n while (dangling_braces > 0 && cut_before < template.length) {\n if (template[cut_before] === ')') {\n dangling_braces--;\n }\n\n cut_before++;\n }\n\n return template.slice(0, cut_before);\n}\nexport function stripNonPairedParens(string) {\n var dangling_braces = [];\n var i = 0;\n\n while (i < string.length) {\n if (string[i] === '(') {\n dangling_braces.push(i);\n } else if (string[i] === ')') {\n dangling_braces.pop();\n }\n\n i++;\n }\n\n var start = 0;\n var cleared_string = '';\n dangling_braces.push(string.length);\n\n for (var _i = 0, _dangling_braces = dangling_braces; _i < _dangling_braces.length; _i++) {\n var index = _dangling_braces[_i];\n cleared_string += string.slice(start, index);\n start = index + 1;\n }\n\n return cleared_string;\n}\nexport function populateTemplateWithDigits(template, position, digits) {\n // Using `.split('')` to iterate through a string here\n // to avoid requiring `Symbol.iterator` polyfill.\n // `.split('')` is generally not safe for Unicode,\n // but in this particular case for `digits` it is safe.\n // for (const digit of digits)\n for (var _iterator2 = _createForOfIteratorHelperLoose(digits.split('')), _step2; !(_step2 = _iterator2()).done;) {\n var digit = _step2.value;\n\n // If there is room for more digits in current `template`,\n // then set the next digit in the `template`,\n // and return the formatted digits so far.\n // If more digits are entered than the current format could handle.\n if (template.slice(position + 1).search(DIGIT_PLACEHOLDER_MATCHER) < 0) {\n return;\n }\n\n position = template.search(DIGIT_PLACEHOLDER_MATCHER);\n template = template.replace(DIGIT_PLACEHOLDER_MATCHER, digit);\n }\n\n return [template, position];\n}\n//# sourceMappingURL=AsYouTypeFormatter.util.js.map","import checkNumberLength from './helpers/checkNumberLength.js';\nimport parseDigits from './helpers/parseDigits.js';\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js';\nexport default function formatCompleteNumber(state, format, _ref) {\n var metadata = _ref.metadata,\n shouldTryNationalPrefixFormattingRule = _ref.shouldTryNationalPrefixFormattingRule,\n getSeparatorAfterNationalPrefix = _ref.getSeparatorAfterNationalPrefix;\n var matcher = new RegExp(\"^(?:\".concat(format.pattern(), \")$\"));\n\n if (matcher.test(state.nationalSignificantNumber)) {\n return formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(state, format, {\n metadata: metadata,\n shouldTryNationalPrefixFormattingRule: shouldTryNationalPrefixFormattingRule,\n getSeparatorAfterNationalPrefix: getSeparatorAfterNationalPrefix\n });\n }\n}\nexport function canFormatCompleteNumber(nationalSignificantNumber, metadata) {\n return checkNumberLength(nationalSignificantNumber, metadata) === 'IS_POSSIBLE';\n}\n\nfunction formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(state, format, _ref2) {\n var metadata = _ref2.metadata,\n shouldTryNationalPrefixFormattingRule = _ref2.shouldTryNationalPrefixFormattingRule,\n getSeparatorAfterNationalPrefix = _ref2.getSeparatorAfterNationalPrefix;\n // `format` has already been checked for `nationalPrefix` requirement.\n var nationalSignificantNumber = state.nationalSignificantNumber,\n international = state.international,\n nationalPrefix = state.nationalPrefix,\n carrierCode = state.carrierCode; // Format the number with using `national_prefix_formatting_rule`.\n // If the resulting formatted number is a valid formatted number, then return it.\n //\n // Google's AsYouType formatter is different in a way that it doesn't try\n // to format using the \"national prefix formatting rule\", and instead it\n // simply prepends a national prefix followed by a \" \" character.\n // This code does that too, but as a fallback.\n // The reason is that \"national prefix formatting rule\" may use parentheses,\n // which wouldn't be included has it used the simpler Google's way.\n //\n\n if (shouldTryNationalPrefixFormattingRule(format)) {\n var formattedNumber = formatNationalNumber(state, format, {\n useNationalPrefixFormattingRule: true,\n getSeparatorAfterNationalPrefix: getSeparatorAfterNationalPrefix,\n metadata: metadata\n });\n\n if (formattedNumber) {\n return formattedNumber;\n }\n } // Format the number without using `national_prefix_formatting_rule`.\n\n\n return formatNationalNumber(state, format, {\n useNationalPrefixFormattingRule: false,\n getSeparatorAfterNationalPrefix: getSeparatorAfterNationalPrefix,\n metadata: metadata\n });\n}\n\nfunction formatNationalNumber(state, format, _ref3) {\n var metadata = _ref3.metadata,\n useNationalPrefixFormattingRule = _ref3.useNationalPrefixFormattingRule,\n getSeparatorAfterNationalPrefix = _ref3.getSeparatorAfterNationalPrefix;\n var formattedNationalNumber = formatNationalNumberUsingFormat(state.nationalSignificantNumber, format, {\n carrierCode: state.carrierCode,\n useInternationalFormat: state.international,\n withNationalPrefix: useNationalPrefixFormattingRule,\n metadata: metadata\n });\n\n if (!useNationalPrefixFormattingRule) {\n if (state.nationalPrefix) {\n // If a national prefix was extracted, then just prepend it,\n // followed by a \" \" character.\n formattedNationalNumber = state.nationalPrefix + getSeparatorAfterNationalPrefix(format) + formattedNationalNumber;\n } else if (state.complexPrefixBeforeNationalSignificantNumber) {\n formattedNationalNumber = state.complexPrefixBeforeNationalSignificantNumber + ' ' + formattedNationalNumber;\n }\n }\n\n if (isValidFormattedNationalNumber(formattedNationalNumber, state)) {\n return formattedNationalNumber;\n }\n} // Check that the formatted phone number contains exactly\n// the same digits that have been input by the user.\n// For example, when \"0111523456789\" is input for `AR` country,\n// the extracted `this.nationalSignificantNumber` is \"91123456789\",\n// which means that the national part of `this.digits` isn't simply equal to\n// `this.nationalPrefix` + `this.nationalSignificantNumber`.\n//\n// Also, a `format` can add extra digits to the `this.nationalSignificantNumber`\n// being formatted via `metadata[country].national_prefix_transform_rule`.\n// For example, for `VI` country, it prepends `340` to the national number,\n// and if this check hasn't been implemented, then there would be a bug\n// when `340` \"area coude\" is \"duplicated\" during input for `VI` country:\n// https://github.com/catamphetamine/libphonenumber-js/issues/318\n//\n// So, all these \"gotchas\" are filtered out.\n//\n// In the original Google's code, the comments say:\n// \"Check that we didn't remove nor add any extra digits when we matched\n// this formatting pattern. This usually happens after we entered the last\n// digit during AYTF. Eg: In case of MX, we swallow mobile token (1) when\n// formatted but AYTF should retain all the number entered and not change\n// in order to match a format (of same leading digits and length) display\n// in that way.\"\n// \"If it's the same (i.e entered number and format is same), then it's\n// safe to return this in formatted number as nothing is lost / added.\"\n// Otherwise, don't use this format.\n// https://github.com/google/libphonenumber/commit/3e7c1f04f5e7200f87fb131e6f85c6e99d60f510#diff-9149457fa9f5d608a11bb975c6ef4bc5\n// https://github.com/google/libphonenumber/commit/3ac88c7106e7dcb553bcc794b15f19185928a1c6#diff-2dcb77e833422ee304da348b905cde0b\n//\n\n\nfunction isValidFormattedNationalNumber(formattedNationalNumber, state) {\n return parseDigits(formattedNationalNumber) === state.getNationalDigits();\n}\n//# sourceMappingURL=AsYouTypeFormatter.complete.js.map","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nvar PatternParser = /*#__PURE__*/function () {\n function PatternParser() {\n _classCallCheck(this, PatternParser);\n }\n\n _createClass(PatternParser, [{\n key: \"parse\",\n value: function parse(pattern) {\n this.context = [{\n or: true,\n instructions: []\n }];\n this.parsePattern(pattern);\n\n if (this.context.length !== 1) {\n throw new Error('Non-finalized contexts left when pattern parse ended');\n }\n\n var _this$context$ = this.context[0],\n branches = _this$context$.branches,\n instructions = _this$context$.instructions;\n\n if (branches) {\n return {\n op: '|',\n args: branches.concat([expandSingleElementArray(instructions)])\n };\n }\n /* istanbul ignore if */\n\n\n if (instructions.length === 0) {\n throw new Error('Pattern is required');\n }\n\n if (instructions.length === 1) {\n return instructions[0];\n }\n\n return instructions;\n }\n }, {\n key: \"startContext\",\n value: function startContext(context) {\n this.context.push(context);\n }\n }, {\n key: \"endContext\",\n value: function endContext() {\n this.context.pop();\n }\n }, {\n key: \"getContext\",\n value: function getContext() {\n return this.context[this.context.length - 1];\n }\n }, {\n key: \"parsePattern\",\n value: function parsePattern(pattern) {\n if (!pattern) {\n throw new Error('Pattern is required');\n }\n\n var match = pattern.match(OPERATOR);\n\n if (!match) {\n if (ILLEGAL_CHARACTER_REGEXP.test(pattern)) {\n throw new Error(\"Illegal characters found in a pattern: \".concat(pattern));\n }\n\n this.getContext().instructions = this.getContext().instructions.concat(pattern.split(''));\n return;\n }\n\n var operator = match[1];\n var before = pattern.slice(0, match.index);\n var rightPart = pattern.slice(match.index + operator.length);\n\n switch (operator) {\n case '(?:':\n if (before) {\n this.parsePattern(before);\n }\n\n this.startContext({\n or: true,\n instructions: [],\n branches: []\n });\n break;\n\n case ')':\n if (!this.getContext().or) {\n throw new Error('\")\" operator must be preceded by \"(?:\" operator');\n }\n\n if (before) {\n this.parsePattern(before);\n }\n\n if (this.getContext().instructions.length === 0) {\n throw new Error('No instructions found after \"|\" operator in an \"or\" group');\n }\n\n var _this$getContext = this.getContext(),\n branches = _this$getContext.branches;\n\n branches.push(expandSingleElementArray(this.getContext().instructions));\n this.endContext();\n this.getContext().instructions.push({\n op: '|',\n args: branches\n });\n break;\n\n case '|':\n if (!this.getContext().or) {\n throw new Error('\"|\" operator can only be used inside \"or\" groups');\n }\n\n if (before) {\n this.parsePattern(before);\n } // The top-level is an implicit \"or\" group, if required.\n\n\n if (!this.getContext().branches) {\n // `branches` are not defined only for the root implicit \"or\" operator.\n\n /* istanbul ignore else */\n if (this.context.length === 1) {\n this.getContext().branches = [];\n } else {\n throw new Error('\"branches\" not found in an \"or\" group context');\n }\n }\n\n this.getContext().branches.push(expandSingleElementArray(this.getContext().instructions));\n this.getContext().instructions = [];\n break;\n\n case '[':\n if (before) {\n this.parsePattern(before);\n }\n\n this.startContext({\n oneOfSet: true\n });\n break;\n\n case ']':\n if (!this.getContext().oneOfSet) {\n throw new Error('\"]\" operator must be preceded by \"[\" operator');\n }\n\n this.endContext();\n this.getContext().instructions.push({\n op: '[]',\n args: parseOneOfSet(before)\n });\n break;\n\n /* istanbul ignore next */\n\n default:\n throw new Error(\"Unknown operator: \".concat(operator));\n }\n\n if (rightPart) {\n this.parsePattern(rightPart);\n }\n }\n }]);\n\n return PatternParser;\n}();\n\nexport { PatternParser as default };\n\nfunction parseOneOfSet(pattern) {\n var values = [];\n var i = 0;\n\n while (i < pattern.length) {\n if (pattern[i] === '-') {\n if (i === 0 || i === pattern.length - 1) {\n throw new Error(\"Couldn't parse a one-of set pattern: \".concat(pattern));\n }\n\n var prevValue = pattern[i - 1].charCodeAt(0) + 1;\n var nextValue = pattern[i + 1].charCodeAt(0) - 1;\n var value = prevValue;\n\n while (value <= nextValue) {\n values.push(String.fromCharCode(value));\n value++;\n }\n } else {\n values.push(pattern[i]);\n }\n\n i++;\n }\n\n return values;\n}\n\nvar ILLEGAL_CHARACTER_REGEXP = /[\\(\\)\\[\\]\\?\\:\\|]/;\nvar OPERATOR = new RegExp( // any of:\n'(' + // or operator\n'\\\\|' + // or\n'|' + // or group start\n'\\\\(\\\\?\\\\:' + // or\n'|' + // or group end\n'\\\\)' + // or\n'|' + // one-of set start\n'\\\\[' + // or\n'|' + // one-of set end\n'\\\\]' + ')');\n\nfunction expandSingleElementArray(array) {\n if (array.length === 1) {\n return array[0];\n }\n\n return array;\n}\n//# sourceMappingURL=AsYouTypeFormatter.PatternParser.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport PatternParser from './AsYouTypeFormatter.PatternParser.js';\n\nvar PatternMatcher = /*#__PURE__*/function () {\n function PatternMatcher(pattern) {\n _classCallCheck(this, PatternMatcher);\n\n this.matchTree = new PatternParser().parse(pattern);\n }\n\n _createClass(PatternMatcher, [{\n key: \"match\",\n value: function match(string) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n allowOverflow = _ref.allowOverflow;\n\n if (!string) {\n throw new Error('String is required');\n }\n\n var result = _match(string.split(''), this.matchTree, true);\n\n if (result && result.match) {\n delete result.matchedChars;\n }\n\n if (result && result.overflow) {\n if (!allowOverflow) {\n return;\n }\n }\n\n return result;\n }\n }]);\n\n return PatternMatcher;\n}();\n/**\r\n * Matches `characters` against a pattern compiled into a `tree`.\r\n * @param {string[]} characters\r\n * @param {Tree} tree — A pattern compiled into a `tree`. See the `*.d.ts` file for the description of the `tree` structure.\r\n * @param {boolean} last — Whether it's the last (rightmost) subtree on its level of the match tree.\r\n * @return {object} See the `*.d.ts` file for the description of the result object.\r\n */\n\n\nexport { PatternMatcher as default };\n\nfunction _match(characters, tree, last) {\n // If `tree` is a string, then `tree` is a single character.\n // That's because when a pattern is parsed, multi-character-string parts\n // of a pattern are compiled into arrays of single characters.\n // I still wrote this piece of code for a \"general\" hypothetical case\n // when `tree` could be a string of several characters, even though\n // such case is not possible with the current implementation.\n if (typeof tree === 'string') {\n var characterString = characters.join('');\n\n if (tree.indexOf(characterString) === 0) {\n // `tree` is always a single character.\n // If `tree.indexOf(characterString) === 0`\n // then `characters.length === tree.length`.\n\n /* istanbul ignore else */\n if (characters.length === tree.length) {\n return {\n match: true,\n matchedChars: characters\n };\n } // `tree` is always a single character.\n // If `tree.indexOf(characterString) === 0`\n // then `characters.length === tree.length`.\n\n /* istanbul ignore next */\n\n\n return {\n partialMatch: true // matchedChars: characters\n\n };\n }\n\n if (characterString.indexOf(tree) === 0) {\n if (last) {\n // The `else` path is not possible because `tree` is always a single character.\n // The `else` case for `characters.length > tree.length` would be\n // `characters.length <= tree.length` which means `characters.length <= 1`.\n // `characters` array can't be empty, so that means `characters === [tree]`,\n // which would also mean `tree.indexOf(characterString) === 0` and that'd mean\n // that the `if (tree.indexOf(characterString) === 0)` condition before this\n // `if` condition would be entered, and returned from there, not reaching this code.\n\n /* istanbul ignore else */\n if (characters.length > tree.length) {\n return {\n overflow: true\n };\n }\n }\n\n return {\n match: true,\n matchedChars: characters.slice(0, tree.length)\n };\n }\n\n return;\n }\n\n if (Array.isArray(tree)) {\n var restCharacters = characters.slice();\n var i = 0;\n\n while (i < tree.length) {\n var subtree = tree[i];\n\n var result = _match(restCharacters, subtree, last && i === tree.length - 1);\n\n if (!result) {\n return;\n } else if (result.overflow) {\n return result;\n } else if (result.match) {\n // Continue with the next subtree with the rest of the characters.\n restCharacters = restCharacters.slice(result.matchedChars.length);\n\n if (restCharacters.length === 0) {\n if (i === tree.length - 1) {\n return {\n match: true,\n matchedChars: characters\n };\n } else {\n return {\n partialMatch: true // matchedChars: characters\n\n };\n }\n }\n } else {\n /* istanbul ignore else */\n if (result.partialMatch) {\n return {\n partialMatch: true // matchedChars: characters\n\n };\n } else {\n throw new Error(\"Unsupported match result:\\n\".concat(JSON.stringify(result, null, 2)));\n }\n }\n\n i++;\n } // If `last` then overflow has already been checked\n // by the last element of the `tree` array.\n\n /* istanbul ignore if */\n\n\n if (last) {\n return {\n overflow: true\n };\n }\n\n return {\n match: true,\n matchedChars: characters.slice(0, characters.length - restCharacters.length)\n };\n }\n\n switch (tree.op) {\n case '|':\n var partialMatch;\n\n for (var _iterator = _createForOfIteratorHelperLoose(tree.args), _step; !(_step = _iterator()).done;) {\n var branch = _step.value;\n\n var _result = _match(characters, branch, last);\n\n if (_result) {\n if (_result.overflow) {\n return _result;\n } else if (_result.match) {\n return {\n match: true,\n matchedChars: _result.matchedChars\n };\n } else {\n /* istanbul ignore else */\n if (_result.partialMatch) {\n partialMatch = true;\n } else {\n throw new Error(\"Unsupported match result:\\n\".concat(JSON.stringify(_result, null, 2)));\n }\n }\n }\n }\n\n if (partialMatch) {\n return {\n partialMatch: true // matchedChars: ...\n\n };\n } // Not even a partial match.\n\n\n return;\n\n case '[]':\n for (var _iterator2 = _createForOfIteratorHelperLoose(tree.args), _step2; !(_step2 = _iterator2()).done;) {\n var _char = _step2.value;\n\n if (characters[0] === _char) {\n if (characters.length === 1) {\n return {\n match: true,\n matchedChars: characters\n };\n }\n\n if (last) {\n return {\n overflow: true\n };\n }\n\n return {\n match: true,\n matchedChars: [_char]\n };\n }\n } // No character matches.\n\n\n return;\n\n /* istanbul ignore next */\n\n default:\n throw new Error(\"Unsupported instruction tree: \".concat(tree));\n }\n}\n//# sourceMappingURL=AsYouTypeFormatter.PatternMatcher.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport { DIGIT_PLACEHOLDER, countOccurences, repeat, cutAndStripNonPairedParens, closeNonPairedParens, stripNonPairedParens, populateTemplateWithDigits } from './AsYouTypeFormatter.util.js';\nimport formatCompleteNumber, { canFormatCompleteNumber } from './AsYouTypeFormatter.complete.js';\nimport PatternMatcher from './AsYouTypeFormatter.PatternMatcher.js';\nimport parseDigits from './helpers/parseDigits.js';\nexport { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.util.js';\nimport { FIRST_GROUP_PATTERN } from './helpers/formatNationalNumberUsingFormat.js';\nimport { VALID_PUNCTUATION } from './constants.js';\nimport applyInternationalSeparatorStyle from './helpers/applyInternationalSeparatorStyle.js'; // Used in phone number format template creation.\n// Could be any digit, I guess.\n\nvar DUMMY_DIGIT = '9'; // I don't know why is it exactly `15`\n\nvar LONGEST_NATIONAL_PHONE_NUMBER_LENGTH = 15; // Create a phone number consisting only of the digit 9 that matches the\n// `number_pattern` by applying the pattern to the \"longest phone number\" string.\n\nvar LONGEST_DUMMY_PHONE_NUMBER = repeat(DUMMY_DIGIT, LONGEST_NATIONAL_PHONE_NUMBER_LENGTH); // A set of characters that, if found in a national prefix formatting rules, are an indicator to\n// us that we should separate the national prefix from the number when formatting.\n\nvar NATIONAL_PREFIX_SEPARATORS_PATTERN = /[- ]/; // Deprecated: Google has removed some formatting pattern related code from their repo.\n// https://github.com/googlei18n/libphonenumber/commit/a395b4fef3caf57c4bc5f082e1152a4d2bd0ba4c\n// \"We no longer have numbers in formatting matching patterns, only \\d.\"\n// Because this library supports generating custom metadata\n// some users may still be using old metadata so the relevant\n// code seems to stay until some next major version update.\n\nvar SUPPORT_LEGACY_FORMATTING_PATTERNS = true; // A pattern that is used to match character classes in regular expressions.\n// An example of a character class is \"[1-4]\".\n\nvar CREATE_CHARACTER_CLASS_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && function () {\n return /\\[([^\\[\\]])*\\]/g;\n}; // Any digit in a regular expression that actually denotes a digit. For\n// example, in the regular expression \"80[0-2]\\d{6,10}\", the first 2 digits\n// (8 and 0) are standalone digits, but the rest are not.\n// Two look-aheads are needed because the number following \\\\d could be a\n// two-digit number, since the phone number can be as long as 15 digits.\n\n\nvar CREATE_STANDALONE_DIGIT_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && function () {\n return /\\d(?=[^,}][^,}])/g;\n}; // A regular expression that is used to determine if a `format` is\n// suitable to be used in the \"as you type formatter\".\n// A `format` is suitable when the resulting formatted number has\n// the same digits as the user has entered.\n//\n// In the simplest case, that would mean that the format\n// doesn't add any additional digits when formatting a number.\n// Google says that it also shouldn't add \"star\" (`*`) characters,\n// like it does in some Israeli formats.\n// Such basic format would only contain \"valid punctuation\"\n// and \"captured group\" identifiers ($1, $2, etc).\n//\n// An example of a format that adds additional digits:\n//\n// Country: `AR` (Argentina).\n// Format:\n// {\n// \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\n// \"leading_digits_patterns\": [\"91\"],\n// \"national_prefix_formatting_rule\": \"0$1\",\n// \"format\": \"$2 15-$3-$4\",\n// \"international_format\": \"$1 $2 $3-$4\"\n// }\n//\n// In the format above, the `format` adds `15` to the digits when formatting a number.\n// A sidenote: this format actually is suitable because `national_prefix_for_parsing`\n// has previously removed `15` from a national number, so re-adding `15` in `format`\n// doesn't actually result in any extra digits added to user's input.\n// But verifying that would be a complex procedure, so the code chooses a simpler path:\n// it simply filters out all `format`s that contain anything but \"captured group\" ids.\n//\n// This regular expression is called `ELIGIBLE_FORMAT_PATTERN` in Google's\n// `libphonenumber` code.\n//\n\n\nvar NON_ALTERING_FORMAT_REG_EXP = new RegExp('[' + VALID_PUNCTUATION + ']*' + // Google developers say:\n// \"We require that the first matching group is present in the\n// output pattern to ensure no data is lost while formatting.\"\n'\\\\$1' + '[' + VALID_PUNCTUATION + ']*' + '(\\\\$\\\\d[' + VALID_PUNCTUATION + ']*)*' + '$'); // This is the minimum length of the leading digits of a phone number\n// to guarantee the first \"leading digits pattern\" for a phone number format\n// to be preemptive.\n\nvar MIN_LEADING_DIGITS_LENGTH = 3;\n\nvar AsYouTypeFormatter = /*#__PURE__*/function () {\n function AsYouTypeFormatter(_ref) {\n var state = _ref.state,\n metadata = _ref.metadata;\n\n _classCallCheck(this, AsYouTypeFormatter);\n\n this.metadata = metadata;\n this.resetFormat();\n }\n\n _createClass(AsYouTypeFormatter, [{\n key: \"resetFormat\",\n value: function resetFormat() {\n this.chosenFormat = undefined;\n this.template = undefined;\n this.nationalNumberTemplate = undefined;\n this.populatedNationalNumberTemplate = undefined;\n this.populatedNationalNumberTemplatePosition = -1;\n }\n }, {\n key: \"reset\",\n value: function reset(numberingPlan, state) {\n this.resetFormat();\n\n if (numberingPlan) {\n this.isNANP = numberingPlan.callingCode() === '1';\n this.matchingFormats = numberingPlan.formats();\n\n if (state.nationalSignificantNumber) {\n this.narrowDownMatchingFormats(state);\n }\n } else {\n this.isNANP = undefined;\n this.matchingFormats = [];\n }\n }\n /**\r\n * Formats an updated phone number.\r\n * @param {string} nextDigits — Additional phone number digits.\r\n * @param {object} state — `AsYouType` state.\r\n * @return {[string]} Returns undefined if the updated phone number can't be formatted using any of the available formats.\r\n */\n\n }, {\n key: \"format\",\n value: function format(nextDigits, state) {\n var _this = this;\n\n // See if the phone number digits can be formatted as a complete phone number.\n // If not, use the results from `formatNationalNumberWithNextDigits()`,\n // which formats based on the chosen formatting pattern.\n //\n // Attempting to format complete phone number first is how it's done\n // in Google's `libphonenumber`, so this library just follows it.\n // Google's `libphonenumber` code doesn't explain in detail why does it\n // attempt to format digits as a complete phone number\n // instead of just going with a previoulsy (or newly) chosen `format`:\n //\n // \"Checks to see if there is an exact pattern match for these digits.\n // If so, we should use this instead of any other formatting template\n // whose leadingDigitsPattern also matches the input.\"\n //\n if (canFormatCompleteNumber(state.nationalSignificantNumber, this.metadata)) {\n for (var _iterator = _createForOfIteratorHelperLoose(this.matchingFormats), _step; !(_step = _iterator()).done;) {\n var format = _step.value;\n var formattedCompleteNumber = formatCompleteNumber(state, format, {\n metadata: this.metadata,\n shouldTryNationalPrefixFormattingRule: function shouldTryNationalPrefixFormattingRule(format) {\n return _this.shouldTryNationalPrefixFormattingRule(format, {\n international: state.international,\n nationalPrefix: state.nationalPrefix\n });\n },\n getSeparatorAfterNationalPrefix: function getSeparatorAfterNationalPrefix(format) {\n return _this.getSeparatorAfterNationalPrefix(format);\n }\n });\n\n if (formattedCompleteNumber) {\n this.resetFormat();\n this.chosenFormat = format;\n this.setNationalNumberTemplate(formattedCompleteNumber.replace(/\\d/g, DIGIT_PLACEHOLDER), state);\n this.populatedNationalNumberTemplate = formattedCompleteNumber; // With a new formatting template, the matched position\n // using the old template needs to be reset.\n\n this.populatedNationalNumberTemplatePosition = this.template.lastIndexOf(DIGIT_PLACEHOLDER);\n return formattedCompleteNumber;\n }\n }\n } // Format the digits as a partial (incomplete) phone number\n // using the previously chosen formatting pattern (or a newly chosen one).\n\n\n return this.formatNationalNumberWithNextDigits(nextDigits, state);\n } // Formats the next phone number digits.\n\n }, {\n key: \"formatNationalNumberWithNextDigits\",\n value: function formatNationalNumberWithNextDigits(nextDigits, state) {\n var previouslyChosenFormat = this.chosenFormat; // Choose a format from the list of matching ones.\n\n var newlyChosenFormat = this.chooseFormat(state);\n\n if (newlyChosenFormat) {\n if (newlyChosenFormat === previouslyChosenFormat) {\n // If it can format the next (current) digits\n // using the previously chosen phone number format\n // then return the updated formatted number.\n return this.formatNextNationalNumberDigits(nextDigits);\n } else {\n // If a more appropriate phone number format\n // has been chosen for these \"leading digits\",\n // then re-format the national phone number part\n // using the newly selected format.\n return this.formatNextNationalNumberDigits(state.getNationalDigits());\n }\n }\n }\n }, {\n key: \"narrowDownMatchingFormats\",\n value: function narrowDownMatchingFormats(_ref2) {\n var _this2 = this;\n\n var nationalSignificantNumber = _ref2.nationalSignificantNumber,\n nationalPrefix = _ref2.nationalPrefix,\n international = _ref2.international;\n var leadingDigits = nationalSignificantNumber; // \"leading digits\" pattern list starts with a\n // \"leading digits\" pattern fitting a maximum of 3 leading digits.\n // So, after a user inputs 3 digits of a national (significant) phone number\n // this national (significant) number can already be formatted.\n // The next \"leading digits\" pattern is for 4 leading digits max,\n // and the \"leading digits\" pattern after it is for 5 leading digits max, etc.\n // This implementation is different from Google's\n // in that it searches for a fitting format\n // even if the user has entered less than\n // `MIN_LEADING_DIGITS_LENGTH` digits of a national number.\n // Because some leading digit patterns already match for a single first digit.\n\n var leadingDigitsPatternIndex = leadingDigits.length - MIN_LEADING_DIGITS_LENGTH;\n\n if (leadingDigitsPatternIndex < 0) {\n leadingDigitsPatternIndex = 0;\n }\n\n this.matchingFormats = this.matchingFormats.filter(function (format) {\n return _this2.formatSuits(format, international, nationalPrefix) && _this2.formatMatches(format, leadingDigits, leadingDigitsPatternIndex);\n }); // If there was a phone number format chosen\n // and it no longer holds given the new leading digits then reset it.\n // The test for this `if` condition is marked as:\n // \"Reset a chosen format when it no longer holds given the new leading digits\".\n // To construct a valid test case for this one can find a country\n // in `PhoneNumberMetadata.xml` yielding one format for 3 ``\n // and yielding another format for 4 `` (Australia in this case).\n\n if (this.chosenFormat && this.matchingFormats.indexOf(this.chosenFormat) === -1) {\n this.resetFormat();\n }\n }\n }, {\n key: \"formatSuits\",\n value: function formatSuits(format, international, nationalPrefix) {\n // When a prefix before a national (significant) number is\n // simply a national prefix, then it's parsed as `this.nationalPrefix`.\n // In more complex cases, a prefix before national (significant) number\n // could include a national prefix as well as some \"capturing groups\",\n // and in that case there's no info whether a national prefix has been parsed.\n // If national prefix is not used when formatting a phone number\n // using this format, but a national prefix has been entered by the user,\n // and was extracted, then discard such phone number format.\n // In Google's \"AsYouType\" formatter code, the equivalent would be this part:\n // https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L175-L184\n if (nationalPrefix && !format.usesNationalPrefix() && // !format.domesticCarrierCodeFormattingRule() &&\n !format.nationalPrefixIsOptionalWhenFormattingInNationalFormat()) {\n return false;\n } // If national prefix is mandatory for this phone number format\n // and there're no guarantees that a national prefix is present in user input\n // then discard this phone number format as not suitable.\n // In Google's \"AsYouType\" formatter code, the equivalent would be this part:\n // https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L185-L193\n\n\n if (!international && !nationalPrefix && format.nationalPrefixIsMandatoryWhenFormattingInNationalFormat()) {\n return false;\n }\n\n return true;\n }\n }, {\n key: \"formatMatches\",\n value: function formatMatches(format, leadingDigits, leadingDigitsPatternIndex) {\n var leadingDigitsPatternsCount = format.leadingDigitsPatterns().length; // If this format is not restricted to a certain\n // leading digits pattern then it fits.\n // The test case could be found by searching for \"leadingDigitsPatternsCount === 0\".\n\n if (leadingDigitsPatternsCount === 0) {\n return true;\n } // Start narrowing down the list of possible formats based on the leading digits.\n // (only previously matched formats take part in the narrowing down process)\n // `leading_digits_patterns` start with 3 digits min\n // and then go up from there one digit at a time.\n\n\n leadingDigitsPatternIndex = Math.min(leadingDigitsPatternIndex, leadingDigitsPatternsCount - 1);\n var leadingDigitsPattern = format.leadingDigitsPatterns()[leadingDigitsPatternIndex]; // Google imposes a requirement on the leading digits\n // to be minimum 3 digits long in order to be eligible\n // for checking those with a leading digits pattern.\n //\n // Since `leading_digits_patterns` start with 3 digits min,\n // Google's original `libphonenumber` library only starts\n // excluding any non-matching formats only when the\n // national number entered so far is at least 3 digits long,\n // otherwise format matching would give false negatives.\n //\n // For example, when the digits entered so far are `2`\n // and the leading digits pattern is `21` –\n // it's quite obvious in this case that the format could be the one\n // but due to the absence of further digits it would give false negative.\n //\n // Also, `leading_digits_patterns` doesn't always correspond to a single\n // digits count. For example, `60|8` pattern would already match `8`\n // but the `60` part would require having at least two leading digits,\n // so the whole pattern would require inputting two digits first in order to\n // decide on whether it matches the input, even when the input is \"80\".\n //\n // This library — `libphonenumber-js` — allows filtering by `leading_digits_patterns`\n // even when there's only 1 or 2 digits of the national (significant) number.\n // To do that, it uses a non-strict pattern matcher written specifically for that.\n //\n\n if (leadingDigits.length < MIN_LEADING_DIGITS_LENGTH) {\n // Before leading digits < 3 matching was implemented:\n // return true\n //\n // After leading digits < 3 matching was implemented:\n try {\n return new PatternMatcher(leadingDigitsPattern).match(leadingDigits, {\n allowOverflow: true\n }) !== undefined;\n } catch (error)\n /* istanbul ignore next */\n {\n // There's a slight possibility that there could be some undiscovered bug\n // in the pattern matcher code. Since the \"leading digits < 3 matching\"\n // feature is not \"essential\" for operation, it can fall back to the old way\n // in case of any issues rather than halting the application's execution.\n console.error(error);\n return true;\n }\n } // If at least `MIN_LEADING_DIGITS_LENGTH` digits of a national number are\n // available then use the usual regular expression matching.\n //\n // The whole pattern is wrapped in round brackets (`()`) because\n // the pattern can use \"or\" operator (`|`) at the top level of the pattern.\n //\n\n\n return new RegExp(\"^(\".concat(leadingDigitsPattern, \")\")).test(leadingDigits);\n }\n }, {\n key: \"getFormatFormat\",\n value: function getFormatFormat(format, international) {\n return international ? format.internationalFormat() : format.format();\n }\n }, {\n key: \"chooseFormat\",\n value: function chooseFormat(state) {\n var _this3 = this;\n\n var _loop = function _loop() {\n var format = _step2.value;\n\n // If this format is currently being used\n // and is still suitable, then stick to it.\n if (_this3.chosenFormat === format) {\n return \"break\";\n } // Sometimes, a formatting rule inserts additional digits in a phone number,\n // and \"as you type\" formatter can't do that: it should only use the digits\n // that the user has input.\n //\n // For example, in Argentina, there's a format for mobile phone numbers:\n //\n // {\n // \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\n // \"leading_digits_patterns\": [\"91\"],\n // \"national_prefix_formatting_rule\": \"0$1\",\n // \"format\": \"$2 15-$3-$4\",\n // \"international_format\": \"$1 $2 $3-$4\"\n // }\n //\n // In that format, `international_format` is used instead of `format`\n // because `format` inserts `15` in the formatted number,\n // and `AsYouType` formatter should only use the digits\n // the user has actually input, without adding any extra digits.\n // In this case, it wouldn't make a difference, because the `15`\n // is first stripped when applying `national_prefix_for_parsing`\n // and then re-added when using `format`, so in reality it doesn't\n // add any new digits to the number, but to detect that, the code\n // would have to be more complex: it would have to try formatting\n // the digits using the format and then see if any digits have\n // actually been added or removed, and then, every time a new digit\n // is input, it should re-check whether the chosen format doesn't\n // alter the digits.\n //\n // Google's code doesn't go that far, and so does this library:\n // it simply requires that a `format` doesn't add any additonal\n // digits to user's input.\n //\n // Also, people in general should move from inputting phone numbers\n // in national format (possibly with national prefixes)\n // and use international phone number format instead:\n // it's a logical thing in the modern age of mobile phones,\n // globalization and the internet.\n //\n\n /* istanbul ignore if */\n\n\n if (!NON_ALTERING_FORMAT_REG_EXP.test(_this3.getFormatFormat(format, state.international))) {\n return \"continue\";\n }\n\n if (!_this3.createTemplateForFormat(format, state)) {\n // Remove the format if it can't generate a template.\n _this3.matchingFormats = _this3.matchingFormats.filter(function (_) {\n return _ !== format;\n });\n return \"continue\";\n }\n\n _this3.chosenFormat = format;\n return \"break\";\n };\n\n // When there are multiple available formats, the formatter uses the first\n // format where a formatting template could be created.\n //\n // For some weird reason, `istanbul` says \"else path not taken\"\n // for the `for of` line below. Supposedly that means that\n // the loop doesn't ever go over the last element in the list.\n // That's true because there always is `this.chosenFormat`\n // when `this.matchingFormats` is non-empty.\n // And, for some weird reason, it doesn't think that the case\n // with empty `this.matchingFormats` qualifies for a valid \"else\" path.\n // So simply muting this `istanbul` warning.\n // It doesn't skip the contents of the `for of` loop,\n // it just skips the `for of` line.\n //\n\n /* istanbul ignore next */\n for (var _iterator2 = _createForOfIteratorHelperLoose(this.matchingFormats.slice()), _step2; !(_step2 = _iterator2()).done;) {\n var _ret = _loop();\n\n if (_ret === \"break\") break;\n if (_ret === \"continue\") continue;\n }\n\n if (!this.chosenFormat) {\n // No format matches the national (significant) phone number.\n this.resetFormat();\n }\n\n return this.chosenFormat;\n }\n }, {\n key: \"createTemplateForFormat\",\n value: function createTemplateForFormat(format, state) {\n // The formatter doesn't format numbers when numberPattern contains '|', e.g.\n // (20|3)\\d{4}. In those cases we quickly return.\n // (Though there's no such format in current metadata)\n\n /* istanbul ignore if */\n if (SUPPORT_LEGACY_FORMATTING_PATTERNS && format.pattern().indexOf('|') >= 0) {\n return;\n } // Get formatting template for this phone number format\n\n\n var template = this.getTemplateForFormat(format, state); // If the national number entered is too long\n // for any phone number format, then abort.\n\n if (template) {\n this.setNationalNumberTemplate(template, state);\n return true;\n }\n }\n }, {\n key: \"getSeparatorAfterNationalPrefix\",\n value: function getSeparatorAfterNationalPrefix(format) {\n // `US` metadata doesn't have a `national_prefix_formatting_rule`,\n // so the `if` condition below doesn't apply to `US`,\n // but in reality there shoudl be a separator\n // between a national prefix and a national (significant) number.\n // So `US` national prefix separator is a \"special\" \"hardcoded\" case.\n if (this.isNANP) {\n return ' ';\n } // If a `format` has a `national_prefix_formatting_rule`\n // and that rule has a separator after a national prefix,\n // then it means that there should be a separator\n // between a national prefix and a national (significant) number.\n\n\n if (format && format.nationalPrefixFormattingRule() && NATIONAL_PREFIX_SEPARATORS_PATTERN.test(format.nationalPrefixFormattingRule())) {\n return ' ';\n } // At this point, there seems to be no clear evidence that\n // there should be a separator between a national prefix\n // and a national (significant) number. So don't insert one.\n\n\n return '';\n }\n }, {\n key: \"getInternationalPrefixBeforeCountryCallingCode\",\n value: function getInternationalPrefixBeforeCountryCallingCode(_ref3, options) {\n var IDDPrefix = _ref3.IDDPrefix,\n missingPlus = _ref3.missingPlus;\n\n if (IDDPrefix) {\n return options && options.spacing === false ? IDDPrefix : IDDPrefix + ' ';\n }\n\n if (missingPlus) {\n return '';\n }\n\n return '+';\n }\n }, {\n key: \"getTemplate\",\n value: function getTemplate(state) {\n if (!this.template) {\n return;\n } // `this.template` holds the template for a \"complete\" phone number.\n // The currently entered phone number is most likely not \"complete\",\n // so trim all non-populated digits.\n\n\n var index = -1;\n var i = 0;\n var internationalPrefix = state.international ? this.getInternationalPrefixBeforeCountryCallingCode(state, {\n spacing: false\n }) : '';\n\n while (i < internationalPrefix.length + state.getDigitsWithoutInternationalPrefix().length) {\n index = this.template.indexOf(DIGIT_PLACEHOLDER, index + 1);\n i++;\n }\n\n return cutAndStripNonPairedParens(this.template, index + 1);\n }\n }, {\n key: \"setNationalNumberTemplate\",\n value: function setNationalNumberTemplate(template, state) {\n this.nationalNumberTemplate = template;\n this.populatedNationalNumberTemplate = template; // With a new formatting template, the matched position\n // using the old template needs to be reset.\n\n this.populatedNationalNumberTemplatePosition = -1; // For convenience, the public `.template` property\n // contains the whole international number\n // if the phone number being input is international:\n // 'x' for the '+' sign, 'x'es for the country phone code,\n // a spacebar and then the template for the formatted national number.\n\n if (state.international) {\n this.template = this.getInternationalPrefixBeforeCountryCallingCode(state).replace(/[\\d\\+]/g, DIGIT_PLACEHOLDER) + repeat(DIGIT_PLACEHOLDER, state.callingCode.length) + ' ' + template;\n } else {\n this.template = template;\n }\n }\n /**\r\n * Generates formatting template for a national phone number,\r\n * optionally containing a national prefix, for a format.\r\n * @param {Format} format\r\n * @param {string} nationalPrefix\r\n * @return {string}\r\n */\n\n }, {\n key: \"getTemplateForFormat\",\n value: function getTemplateForFormat(format, _ref4) {\n var nationalSignificantNumber = _ref4.nationalSignificantNumber,\n international = _ref4.international,\n nationalPrefix = _ref4.nationalPrefix,\n complexPrefixBeforeNationalSignificantNumber = _ref4.complexPrefixBeforeNationalSignificantNumber;\n var pattern = format.pattern();\n /* istanbul ignore else */\n\n if (SUPPORT_LEGACY_FORMATTING_PATTERNS) {\n pattern = pattern // Replace anything in the form of [..] with \\d\n .replace(CREATE_CHARACTER_CLASS_PATTERN(), '\\\\d') // Replace any standalone digit (not the one in `{}`) with \\d\n .replace(CREATE_STANDALONE_DIGIT_PATTERN(), '\\\\d');\n } // Generate a dummy national number (consisting of `9`s)\n // that fits this format's `pattern`.\n //\n // This match will always succeed,\n // because the \"longest dummy phone number\"\n // has enough length to accomodate any possible\n // national phone number format pattern.\n //\n\n\n var digits = LONGEST_DUMMY_PHONE_NUMBER.match(pattern)[0]; // If the national number entered is too long\n // for any phone number format, then abort.\n\n if (nationalSignificantNumber.length > digits.length) {\n return;\n } // Get a formatting template which can be used to efficiently format\n // a partial number where digits are added one by one.\n // Below `strictPattern` is used for the\n // regular expression (with `^` and `$`).\n // This wasn't originally in Google's `libphonenumber`\n // and I guess they don't really need it\n // because they're not using \"templates\" to format phone numbers\n // but I added `strictPattern` after encountering\n // South Korean phone number formatting bug.\n //\n // Non-strict regular expression bug demonstration:\n //\n // this.nationalSignificantNumber : `111111111` (9 digits)\n //\n // pattern : (\\d{2})(\\d{3,4})(\\d{4})\n // format : `$1 $2 $3`\n // digits : `9999999999` (10 digits)\n //\n // '9999999999'.replace(new RegExp(/(\\d{2})(\\d{3,4})(\\d{4})/g), '$1 $2 $3') = \"99 9999 9999\"\n //\n // template : xx xxxx xxxx\n //\n // But the correct template in this case is `xx xxx xxxx`.\n // The template was generated incorrectly because of the\n // `{3,4}` variability in the `pattern`.\n //\n // The fix is, if `this.nationalSignificantNumber` has already sufficient length\n // to satisfy the `pattern` completely then `this.nationalSignificantNumber`\n // is used instead of `digits`.\n\n\n var strictPattern = new RegExp('^' + pattern + '$');\n var nationalNumberDummyDigits = nationalSignificantNumber.replace(/\\d/g, DUMMY_DIGIT); // If `this.nationalSignificantNumber` has already sufficient length\n // to satisfy the `pattern` completely then use it\n // instead of `digits`.\n\n if (strictPattern.test(nationalNumberDummyDigits)) {\n digits = nationalNumberDummyDigits;\n }\n\n var numberFormat = this.getFormatFormat(format, international);\n var nationalPrefixIncludedInTemplate; // If a user did input a national prefix (and that's guaranteed),\n // and if a `format` does have a national prefix formatting rule,\n // then see if that national prefix formatting rule\n // prepends exactly the same national prefix the user has input.\n // If that's the case, then use the `format` with the national prefix formatting rule.\n // Otherwise, use the `format` without the national prefix formatting rule,\n // and prepend a national prefix manually to it.\n\n if (this.shouldTryNationalPrefixFormattingRule(format, {\n international: international,\n nationalPrefix: nationalPrefix\n })) {\n var numberFormatWithNationalPrefix = numberFormat.replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()); // If `national_prefix_formatting_rule` of a `format` simply prepends\n // national prefix at the start of a national (significant) number,\n // then such formatting can be used with `AsYouType` formatter.\n // There seems to be no `else` case: everywhere in metadata,\n // national prefix formatting rule is national prefix + $1,\n // or `($1)`, in which case such format isn't even considered\n // when the user has input a national prefix.\n\n /* istanbul ignore else */\n\n if (parseDigits(format.nationalPrefixFormattingRule()) === (nationalPrefix || '') + parseDigits('$1')) {\n numberFormat = numberFormatWithNationalPrefix;\n nationalPrefixIncludedInTemplate = true; // Replace all digits of the national prefix in the formatting template\n // with `DIGIT_PLACEHOLDER`s.\n\n if (nationalPrefix) {\n var i = nationalPrefix.length;\n\n while (i > 0) {\n numberFormat = numberFormat.replace(/\\d/, DIGIT_PLACEHOLDER);\n i--;\n }\n }\n }\n } // Generate formatting template for this phone number format.\n\n\n var template = digits // Format the dummy phone number according to the format.\n .replace(new RegExp(pattern), numberFormat) // Replace each dummy digit with a DIGIT_PLACEHOLDER.\n .replace(new RegExp(DUMMY_DIGIT, 'g'), DIGIT_PLACEHOLDER); // If a prefix of a national (significant) number is not as simple\n // as just a basic national prefix, then just prepend such prefix\n // before the national (significant) number, optionally spacing\n // the two with a whitespace.\n\n if (!nationalPrefixIncludedInTemplate) {\n if (complexPrefixBeforeNationalSignificantNumber) {\n // Prepend the prefix to the template manually.\n template = repeat(DIGIT_PLACEHOLDER, complexPrefixBeforeNationalSignificantNumber.length) + ' ' + template;\n } else if (nationalPrefix) {\n // Prepend national prefix to the template manually.\n template = repeat(DIGIT_PLACEHOLDER, nationalPrefix.length) + this.getSeparatorAfterNationalPrefix(format) + template;\n }\n }\n\n if (international) {\n template = applyInternationalSeparatorStyle(template);\n }\n\n return template;\n }\n }, {\n key: \"formatNextNationalNumberDigits\",\n value: function formatNextNationalNumberDigits(digits) {\n var result = populateTemplateWithDigits(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition, digits);\n\n if (!result) {\n // Reset the format.\n this.resetFormat();\n return;\n }\n\n this.populatedNationalNumberTemplate = result[0];\n this.populatedNationalNumberTemplatePosition = result[1]; // Return the formatted phone number so far.\n\n return cutAndStripNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1); // The old way which was good for `input-format` but is not so good\n // for `react-phone-number-input`'s default input (`InputBasic`).\n // return closeNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1)\n // \t.replace(new RegExp(DIGIT_PLACEHOLDER, 'g'), ' ')\n }\n }, {\n key: \"shouldTryNationalPrefixFormattingRule\",\n value: function shouldTryNationalPrefixFormattingRule(format, _ref5) {\n var international = _ref5.international,\n nationalPrefix = _ref5.nationalPrefix;\n\n if (format.nationalPrefixFormattingRule()) {\n // In some countries, `national_prefix_formatting_rule` is `($1)`,\n // so it applies even if the user hasn't input a national prefix.\n // `format.usesNationalPrefix()` detects such cases.\n var usesNationalPrefix = format.usesNationalPrefix();\n\n if (usesNationalPrefix && nationalPrefix || !usesNationalPrefix && !international) {\n return true;\n }\n }\n }\n }]);\n\n return AsYouTypeFormatter;\n}();\n\nexport { AsYouTypeFormatter as default };\n//# sourceMappingURL=AsYouTypeFormatter.js.map","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport _extractCountryCallingCode from './helpers/extractCountryCallingCode.js';\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js';\nimport extractNationalNumberFromPossiblyIncompleteNumber from './helpers/extractNationalNumberFromPossiblyIncompleteNumber.js';\nimport stripIddPrefix from './helpers/stripIddPrefix.js';\nimport parseDigits from './helpers/parseDigits.js';\nimport { VALID_DIGITS, VALID_PUNCTUATION, PLUS_CHARS } from './constants.js';\nvar VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART = '[' + VALID_PUNCTUATION + VALID_DIGITS + ']+';\nvar VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN = new RegExp('^' + VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART + '$', 'i');\nvar VALID_FORMATTED_PHONE_NUMBER_PART = '(?:' + '[' + PLUS_CHARS + ']' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*' + '|' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']+' + ')';\nvar AFTER_PHONE_NUMBER_DIGITS_END_PATTERN = new RegExp('[^' + VALID_PUNCTUATION + VALID_DIGITS + ']+' + '.*' + '$'); // Tests whether `national_prefix_for_parsing` could match\n// different national prefixes.\n// Matches anything that's not a digit or a square bracket.\n\nvar COMPLEX_NATIONAL_PREFIX = /[^\\d\\[\\]]/;\n\nvar AsYouTypeParser = /*#__PURE__*/function () {\n function AsYouTypeParser(_ref) {\n var defaultCountry = _ref.defaultCountry,\n defaultCallingCode = _ref.defaultCallingCode,\n metadata = _ref.metadata,\n onNationalSignificantNumberChange = _ref.onNationalSignificantNumberChange;\n\n _classCallCheck(this, AsYouTypeParser);\n\n this.defaultCountry = defaultCountry;\n this.defaultCallingCode = defaultCallingCode;\n this.metadata = metadata;\n this.onNationalSignificantNumberChange = onNationalSignificantNumberChange;\n }\n\n _createClass(AsYouTypeParser, [{\n key: \"input\",\n value: function input(text, state) {\n var _extractFormattedDigi = extractFormattedDigitsAndPlus(text),\n _extractFormattedDigi2 = _slicedToArray(_extractFormattedDigi, 2),\n formattedDigits = _extractFormattedDigi2[0],\n hasPlus = _extractFormattedDigi2[1];\n\n var digits = parseDigits(formattedDigits); // Checks for a special case: just a leading `+` has been entered.\n\n var justLeadingPlus;\n\n if (hasPlus) {\n if (!state.digits) {\n state.startInternationalNumber();\n\n if (!digits) {\n justLeadingPlus = true;\n }\n }\n }\n\n if (digits) {\n this.inputDigits(digits, state);\n }\n\n return {\n digits: digits,\n justLeadingPlus: justLeadingPlus\n };\n }\n /**\r\n * Inputs \"next\" phone number digits.\r\n * @param {string} digits\r\n * @return {string} [formattedNumber] Formatted national phone number (if it can be formatted at this stage). Returning `undefined` means \"don't format the national phone number at this stage\".\r\n */\n\n }, {\n key: \"inputDigits\",\n value: function inputDigits(nextDigits, state) {\n var digits = state.digits;\n var hasReceivedThreeLeadingDigits = digits.length < 3 && digits.length + nextDigits.length >= 3; // Append phone number digits.\n\n state.appendDigits(nextDigits); // Attempt to extract IDD prefix:\n // Some users input their phone number in international format,\n // but in an \"out-of-country\" dialing format instead of using the leading `+`.\n // https://github.com/catamphetamine/libphonenumber-js/issues/185\n // Detect such numbers as soon as there're at least 3 digits.\n // Google's library attempts to extract IDD prefix at 3 digits,\n // so this library just copies that behavior.\n // I guess that's because the most commot IDD prefixes are\n // `00` (Europe) and `011` (US).\n // There exist really long IDD prefixes too:\n // for example, in Australia the default IDD prefix is `0011`,\n // and it could even be as long as `14880011`.\n // An IDD prefix is extracted here, and then every time when\n // there's a new digit and the number couldn't be formatted.\n\n if (hasReceivedThreeLeadingDigits) {\n this.extractIddPrefix(state);\n }\n\n if (this.isWaitingForCountryCallingCode(state)) {\n if (!this.extractCountryCallingCode(state)) {\n return;\n }\n } else {\n state.appendNationalSignificantNumberDigits(nextDigits);\n } // If a phone number is being input in international format,\n // then it's not valid for it to have a national prefix.\n // Still, some people incorrectly input such numbers with a national prefix.\n // In such cases, only attempt to strip a national prefix if the number becomes too long.\n // (but that is done later, not here)\n\n\n if (!state.international) {\n if (!this.hasExtractedNationalSignificantNumber) {\n this.extractNationalSignificantNumber(state.getNationalDigits(), function (stateUpdate) {\n return state.update(stateUpdate);\n });\n }\n }\n }\n }, {\n key: \"isWaitingForCountryCallingCode\",\n value: function isWaitingForCountryCallingCode(_ref2) {\n var international = _ref2.international,\n callingCode = _ref2.callingCode;\n return international && !callingCode;\n } // Extracts a country calling code from a number\n // being entered in internatonal format.\n\n }, {\n key: \"extractCountryCallingCode\",\n value: function extractCountryCallingCode(state) {\n var _extractCountryCallin = _extractCountryCallingCode('+' + state.getDigitsWithoutInternationalPrefix(), this.defaultCountry, this.defaultCallingCode, this.metadata.metadata),\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n number = _extractCountryCallin.number;\n\n if (countryCallingCode) {\n state.setCallingCode(countryCallingCode);\n state.update({\n nationalSignificantNumber: number\n });\n return true;\n }\n }\n }, {\n key: \"reset\",\n value: function reset(numberingPlan) {\n if (numberingPlan) {\n this.hasSelectedNumberingPlan = true;\n\n var nationalPrefixForParsing = numberingPlan._nationalPrefixForParsing();\n\n this.couldPossiblyExtractAnotherNationalSignificantNumber = nationalPrefixForParsing && COMPLEX_NATIONAL_PREFIX.test(nationalPrefixForParsing);\n } else {\n this.hasSelectedNumberingPlan = undefined;\n this.couldPossiblyExtractAnotherNationalSignificantNumber = undefined;\n }\n }\n /**\r\n * Extracts a national (significant) number from user input.\r\n * Google's library is different in that it only applies `national_prefix_for_parsing`\r\n * and doesn't apply `national_prefix_transform_rule` after that.\r\n * https://github.com/google/libphonenumber/blob/a3d70b0487875475e6ad659af404943211d26456/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L539\r\n * @return {boolean} [extracted]\r\n */\n\n }, {\n key: \"extractNationalSignificantNumber\",\n value: function extractNationalSignificantNumber(nationalDigits, setState) {\n if (!this.hasSelectedNumberingPlan) {\n return;\n }\n\n var _extractNationalNumbe = extractNationalNumberFromPossiblyIncompleteNumber(nationalDigits, this.metadata),\n nationalPrefix = _extractNationalNumbe.nationalPrefix,\n nationalNumber = _extractNationalNumbe.nationalNumber,\n carrierCode = _extractNationalNumbe.carrierCode;\n\n if (nationalNumber === nationalDigits) {\n return;\n }\n\n this.onExtractedNationalNumber(nationalPrefix, carrierCode, nationalNumber, nationalDigits, setState);\n return true;\n }\n /**\r\n * In Google's code this function is called \"attempt to extract longer NDD\".\r\n * \"Some national prefixes are a substring of others\", they say.\r\n * @return {boolean} [result] — Returns `true` if extracting a national prefix produced different results from what they were.\r\n */\n\n }, {\n key: \"extractAnotherNationalSignificantNumber\",\n value: function extractAnotherNationalSignificantNumber(nationalDigits, prevNationalSignificantNumber, setState) {\n if (!this.hasExtractedNationalSignificantNumber) {\n return this.extractNationalSignificantNumber(nationalDigits, setState);\n }\n\n if (!this.couldPossiblyExtractAnotherNationalSignificantNumber) {\n return;\n }\n\n var _extractNationalNumbe2 = extractNationalNumberFromPossiblyIncompleteNumber(nationalDigits, this.metadata),\n nationalPrefix = _extractNationalNumbe2.nationalPrefix,\n nationalNumber = _extractNationalNumbe2.nationalNumber,\n carrierCode = _extractNationalNumbe2.carrierCode; // If a national prefix has been extracted previously,\n // then it's always extracted as additional digits are added.\n // That's assuming `extractNationalNumberFromPossiblyIncompleteNumber()`\n // doesn't do anything different from what it currently does.\n // So, just in case, here's this check, though it doesn't occur.\n\n /* istanbul ignore if */\n\n\n if (nationalNumber === prevNationalSignificantNumber) {\n return;\n }\n\n this.onExtractedNationalNumber(nationalPrefix, carrierCode, nationalNumber, nationalDigits, setState);\n return true;\n }\n }, {\n key: \"onExtractedNationalNumber\",\n value: function onExtractedNationalNumber(nationalPrefix, carrierCode, nationalSignificantNumber, nationalDigits, setState) {\n var complexPrefixBeforeNationalSignificantNumber;\n var nationalSignificantNumberMatchesInput; // This check also works with empty `this.nationalSignificantNumber`.\n\n var nationalSignificantNumberIndex = nationalDigits.lastIndexOf(nationalSignificantNumber); // If the extracted national (significant) number is the\n // last substring of the `digits`, then it means that it hasn't been altered:\n // no digits have been removed from the national (significant) number\n // while applying `national_prefix_transform_rule`.\n // https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\n\n if (nationalSignificantNumberIndex >= 0 && nationalSignificantNumberIndex === nationalDigits.length - nationalSignificantNumber.length) {\n nationalSignificantNumberMatchesInput = true; // If a prefix of a national (significant) number is not as simple\n // as just a basic national prefix, then such prefix is stored in\n // `this.complexPrefixBeforeNationalSignificantNumber` property and will be\n // prepended \"as is\" to the national (significant) number to produce\n // a formatted result.\n\n var prefixBeforeNationalNumber = nationalDigits.slice(0, nationalSignificantNumberIndex); // `prefixBeforeNationalNumber` is always non-empty,\n // because `onExtractedNationalNumber()` isn't called\n // when a national (significant) number hasn't been actually \"extracted\":\n // when a national (significant) number is equal to the national part of `digits`,\n // then `onExtractedNationalNumber()` doesn't get called.\n\n if (prefixBeforeNationalNumber !== nationalPrefix) {\n complexPrefixBeforeNationalSignificantNumber = prefixBeforeNationalNumber;\n }\n }\n\n setState({\n nationalPrefix: nationalPrefix,\n carrierCode: carrierCode,\n nationalSignificantNumber: nationalSignificantNumber,\n nationalSignificantNumberMatchesInput: nationalSignificantNumberMatchesInput,\n complexPrefixBeforeNationalSignificantNumber: complexPrefixBeforeNationalSignificantNumber\n }); // `onExtractedNationalNumber()` is only called when\n // the national (significant) number actually did change.\n\n this.hasExtractedNationalSignificantNumber = true;\n this.onNationalSignificantNumberChange();\n }\n }, {\n key: \"reExtractNationalSignificantNumber\",\n value: function reExtractNationalSignificantNumber(state) {\n // Attempt to extract a national prefix.\n //\n // Some people incorrectly input national prefix\n // in an international phone number.\n // For example, some people write British phone numbers as `+44(0)...`.\n //\n // Also, in some rare cases, it is valid for a national prefix\n // to be a part of an international phone number.\n // For example, mobile phone numbers in Mexico are supposed to be\n // dialled internationally using a `1` national prefix,\n // so the national prefix will be part of an international number.\n //\n // Quote from:\n // https://www.mexperience.com/dialing-cell-phones-in-mexico/\n //\n // \"Dialing a Mexican cell phone from abroad\n // When you are calling a cell phone number in Mexico from outside Mexico,\n // it’s necessary to dial an additional “1” after Mexico’s country code\n // (which is “52”) and before the area code.\n // You also ignore the 045, and simply dial the area code and the\n // cell phone’s number.\n //\n // If you don’t add the “1”, you’ll receive a recorded announcement\n // asking you to redial using it.\n //\n // For example, if you are calling from the USA to a cell phone\n // in Mexico City, you would dial +52 – 1 – 55 – 1234 5678.\n // (Note that this is different to calling a land line in Mexico City\n // from abroad, where the number dialed would be +52 – 55 – 1234 5678)\".\n //\n // Google's demo output:\n // https://libphonenumber.appspot.com/phonenumberparser?number=%2b5215512345678&country=MX\n //\n if (this.extractAnotherNationalSignificantNumber(state.getNationalDigits(), state.nationalSignificantNumber, function (stateUpdate) {\n return state.update(stateUpdate);\n })) {\n return true;\n } // If no format matches the phone number, then it could be\n // \"a really long IDD\" (quote from a comment in Google's library).\n // An IDD prefix is first extracted when the user has entered at least 3 digits,\n // and then here — every time when there's a new digit and the number\n // couldn't be formatted.\n // For example, in Australia the default IDD prefix is `0011`,\n // and it could even be as long as `14880011`.\n //\n // Could also check `!hasReceivedThreeLeadingDigits` here\n // to filter out the case when this check duplicates the one\n // already performed when there're 3 leading digits,\n // but it's not a big deal, and in most cases there\n // will be a suitable `format` when there're 3 leading digits.\n //\n\n\n if (this.extractIddPrefix(state)) {\n this.extractCallingCodeAndNationalSignificantNumber(state);\n return true;\n } // Google's AsYouType formatter supports sort of an \"autocorrection\" feature\n // when it \"autocorrects\" numbers that have been input for a country\n // with that country's calling code.\n // Such \"autocorrection\" feature looks weird, but different people have been requesting it:\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n // https://github.com/catamphetamine/libphonenumber-js/issues/375\n // https://github.com/catamphetamine/libphonenumber-js/issues/316\n\n\n if (this.fixMissingPlus(state)) {\n this.extractCallingCodeAndNationalSignificantNumber(state);\n return true;\n }\n }\n }, {\n key: \"extractIddPrefix\",\n value: function extractIddPrefix(state) {\n // An IDD prefix can't be present in a number written with a `+`.\n // Also, don't re-extract an IDD prefix if has already been extracted.\n var international = state.international,\n IDDPrefix = state.IDDPrefix,\n digits = state.digits,\n nationalSignificantNumber = state.nationalSignificantNumber;\n\n if (international || IDDPrefix) {\n return;\n } // Some users input their phone number in \"out-of-country\"\n // dialing format instead of using the leading `+`.\n // https://github.com/catamphetamine/libphonenumber-js/issues/185\n // Detect such numbers.\n\n\n var numberWithoutIDD = stripIddPrefix(digits, this.defaultCountry, this.defaultCallingCode, this.metadata.metadata);\n\n if (numberWithoutIDD !== undefined && numberWithoutIDD !== digits) {\n // If an IDD prefix was stripped then convert the IDD-prefixed number\n // to international number for subsequent parsing.\n state.update({\n IDDPrefix: digits.slice(0, digits.length - numberWithoutIDD.length)\n });\n this.startInternationalNumber(state, {\n country: undefined,\n callingCode: undefined\n });\n return true;\n }\n }\n }, {\n key: \"fixMissingPlus\",\n value: function fixMissingPlus(state) {\n if (!state.international) {\n var _extractCountryCallin2 = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(state.digits, this.defaultCountry, this.defaultCallingCode, this.metadata.metadata),\n newCallingCode = _extractCountryCallin2.countryCallingCode,\n number = _extractCountryCallin2.number;\n\n if (newCallingCode) {\n state.update({\n missingPlus: true\n });\n this.startInternationalNumber(state, {\n country: state.country,\n callingCode: newCallingCode\n });\n return true;\n }\n }\n }\n }, {\n key: \"startInternationalNumber\",\n value: function startInternationalNumber(state, _ref3) {\n var country = _ref3.country,\n callingCode = _ref3.callingCode;\n state.startInternationalNumber(country, callingCode); // If a national (significant) number has been extracted before, reset it.\n\n if (state.nationalSignificantNumber) {\n state.resetNationalSignificantNumber();\n this.onNationalSignificantNumberChange();\n this.hasExtractedNationalSignificantNumber = undefined;\n }\n }\n }, {\n key: \"extractCallingCodeAndNationalSignificantNumber\",\n value: function extractCallingCodeAndNationalSignificantNumber(state) {\n if (this.extractCountryCallingCode(state)) {\n // `this.extractCallingCode()` is currently called when the number\n // couldn't be formatted during the standard procedure.\n // Normally, the national prefix would be re-extracted\n // for an international number if such number couldn't be formatted,\n // but since it's already not able to be formatted,\n // there won't be yet another retry, so also extract national prefix here.\n this.extractNationalSignificantNumber(state.getNationalDigits(), function (stateUpdate) {\n return state.update(stateUpdate);\n });\n }\n }\n }]);\n\n return AsYouTypeParser;\n}();\n/**\r\n * Extracts formatted phone number from text (if there's any).\r\n * @param {string} text\r\n * @return {string} [formattedPhoneNumber]\r\n */\n\n\nexport { AsYouTypeParser as default };\n\nfunction extractFormattedPhoneNumber(text) {\n // Attempt to extract a possible number from the string passed in.\n var startsAt = text.search(VALID_FORMATTED_PHONE_NUMBER_PART);\n\n if (startsAt < 0) {\n return;\n } // Trim everything to the left of the phone number.\n\n\n text = text.slice(startsAt); // Trim the `+`.\n\n var hasPlus;\n\n if (text[0] === '+') {\n hasPlus = true;\n text = text.slice('+'.length);\n } // Trim everything to the right of the phone number.\n\n\n text = text.replace(AFTER_PHONE_NUMBER_DIGITS_END_PATTERN, ''); // Re-add the previously trimmed `+`.\n\n if (hasPlus) {\n text = '+' + text;\n }\n\n return text;\n}\n/**\r\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\r\n * @param {string} text\r\n * @return {any[]}\r\n */\n\n\nfunction _extractFormattedDigitsAndPlus(text) {\n // Extract a formatted phone number part from text.\n var extractedNumber = extractFormattedPhoneNumber(text) || ''; // Trim a `+`.\n\n if (extractedNumber[0] === '+') {\n return [extractedNumber.slice('+'.length), true];\n }\n\n return [extractedNumber];\n}\n/**\r\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\r\n * @param {string} text\r\n * @return {any[]}\r\n */\n\n\nexport function extractFormattedDigitsAndPlus(text) {\n var _extractFormattedDigi3 = _extractFormattedDigitsAndPlus(text),\n _extractFormattedDigi4 = _slicedToArray(_extractFormattedDigi3, 2),\n formattedDigits = _extractFormattedDigi4[0],\n hasPlus = _extractFormattedDigi4[1]; // If the extracted phone number part\n // can possibly be a part of some valid phone number\n // then parse phone number characters from a formatted phone number.\n\n\n if (!VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN.test(formattedDigits)) {\n formattedDigits = '';\n }\n\n return [formattedDigits, hasPlus];\n}\n//# sourceMappingURL=AsYouTypeParser.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport Metadata from './metadata.js';\nimport PhoneNumber from './PhoneNumber.js';\nimport AsYouTypeState from './AsYouTypeState.js';\nimport AsYouTypeFormatter, { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.js';\nimport AsYouTypeParser, { extractFormattedDigitsAndPlus } from './AsYouTypeParser.js';\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\n\nvar AsYouType = /*#__PURE__*/function () {\n /**\r\n * @param {(string|object)?} [optionsOrDefaultCountry] - The default country used for parsing non-international phone numbers. Can also be an `options` object.\r\n * @param {Object} metadata\r\n */\n function AsYouType(optionsOrDefaultCountry, metadata) {\n _classCallCheck(this, AsYouType);\n\n this.metadata = new Metadata(metadata);\n\n var _this$getCountryAndCa = this.getCountryAndCallingCode(optionsOrDefaultCountry),\n _this$getCountryAndCa2 = _slicedToArray(_this$getCountryAndCa, 2),\n defaultCountry = _this$getCountryAndCa2[0],\n defaultCallingCode = _this$getCountryAndCa2[1];\n\n this.defaultCountry = defaultCountry;\n this.defaultCallingCode = defaultCallingCode;\n this.reset();\n }\n\n _createClass(AsYouType, [{\n key: \"getCountryAndCallingCode\",\n value: function getCountryAndCallingCode(optionsOrDefaultCountry) {\n // Set `defaultCountry` and `defaultCallingCode` options.\n var defaultCountry;\n var defaultCallingCode; // Turns out `null` also has type \"object\". Weird.\n\n if (optionsOrDefaultCountry) {\n if (_typeof(optionsOrDefaultCountry) === 'object') {\n defaultCountry = optionsOrDefaultCountry.defaultCountry;\n defaultCallingCode = optionsOrDefaultCountry.defaultCallingCode;\n } else {\n defaultCountry = optionsOrDefaultCountry;\n }\n }\n\n if (defaultCountry && !this.metadata.hasCountry(defaultCountry)) {\n defaultCountry = undefined;\n }\n\n if (defaultCallingCode) {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (this.metadata.isNonGeographicCallingCode(defaultCallingCode)) {\n defaultCountry = '001';\n }\n }\n }\n\n return [defaultCountry, defaultCallingCode];\n }\n /**\r\n * Inputs \"next\" phone number characters.\r\n * @param {string} text\r\n * @return {string} Formatted phone number characters that have been input so far.\r\n */\n\n }, {\n key: \"input\",\n value: function input(text) {\n var _this$parser$input = this.parser.input(text, this.state),\n digits = _this$parser$input.digits,\n justLeadingPlus = _this$parser$input.justLeadingPlus;\n\n if (justLeadingPlus) {\n this.formattedOutput = '+';\n } else if (digits) {\n this.determineTheCountryIfNeeded(); // Match the available formats by the currently available leading digits.\n\n if (this.state.nationalSignificantNumber) {\n this.formatter.narrowDownMatchingFormats(this.state);\n }\n\n var formattedNationalNumber;\n\n if (this.metadata.hasSelectedNumberingPlan()) {\n formattedNationalNumber = this.formatter.format(digits, this.state);\n }\n\n if (formattedNationalNumber === undefined) {\n // See if another national (significant) number could be re-extracted.\n if (this.parser.reExtractNationalSignificantNumber(this.state)) {\n this.determineTheCountryIfNeeded(); // If it could, then re-try formatting the new national (significant) number.\n\n var nationalDigits = this.state.getNationalDigits();\n\n if (nationalDigits) {\n formattedNationalNumber = this.formatter.format(nationalDigits, this.state);\n }\n }\n }\n\n this.formattedOutput = formattedNationalNumber ? this.getFullNumber(formattedNationalNumber) : this.getNonFormattedNumber();\n }\n\n return this.formattedOutput;\n }\n }, {\n key: \"reset\",\n value: function reset() {\n var _this = this;\n\n this.state = new AsYouTypeState({\n onCountryChange: function onCountryChange(country) {\n // Before version `1.6.0`, the official `AsYouType` formatter API\n // included the `.country` property of an `AsYouType` instance.\n // Since that property (along with the others) have been moved to\n // `this.state`, `this.country` property is emulated for compatibility\n // with the old versions.\n _this.country = country;\n },\n onCallingCodeChange: function onCallingCodeChange(callingCode, country) {\n _this.metadata.selectNumberingPlan(country, callingCode);\n\n _this.formatter.reset(_this.metadata.numberingPlan, _this.state);\n\n _this.parser.reset(_this.metadata.numberingPlan);\n }\n });\n this.formatter = new AsYouTypeFormatter({\n state: this.state,\n metadata: this.metadata\n });\n this.parser = new AsYouTypeParser({\n defaultCountry: this.defaultCountry,\n defaultCallingCode: this.defaultCallingCode,\n metadata: this.metadata,\n state: this.state,\n onNationalSignificantNumberChange: function onNationalSignificantNumberChange() {\n _this.determineTheCountryIfNeeded();\n\n _this.formatter.reset(_this.metadata.numberingPlan, _this.state);\n }\n });\n this.state.reset(this.defaultCountry, this.defaultCallingCode);\n this.formattedOutput = '';\n return this;\n }\n /**\r\n * Returns `true` if the phone number is being input in international format.\r\n * In other words, returns `true` if and only if the parsed phone number starts with a `\"+\"`.\r\n * @return {boolean}\r\n */\n\n }, {\n key: \"isInternational\",\n value: function isInternational() {\n return this.state.international;\n }\n /**\r\n * Returns the \"calling code\" part of the phone number when it's being input\r\n * in an international format.\r\n * If no valid calling code has been entered so far, returns `undefined`.\r\n * @return {string} [callingCode]\r\n */\n\n }, {\n key: \"getCallingCode\",\n value: function getCallingCode() {\n // If the number is being input in national format and some \"default calling code\"\n // has been passed to `AsYouType` constructor, then `this.state.callingCode`\n // is equal to that \"default calling code\".\n //\n // If the number is being input in national format and no \"default calling code\"\n // has been passed to `AsYouType` constructor, then returns `undefined`,\n // even if a \"default country\" has been passed to `AsYouType` constructor.\n //\n if (this.isInternational()) {\n return this.state.callingCode;\n }\n } // A legacy alias.\n\n }, {\n key: \"getCountryCallingCode\",\n value: function getCountryCallingCode() {\n return this.getCallingCode();\n }\n /**\r\n * Returns a two-letter country code of the phone number.\r\n * Returns `undefined` for \"non-geographic\" phone numbering plans.\r\n * Returns `undefined` if no phone number has been input yet.\r\n * @return {string} [country]\r\n */\n\n }, {\n key: \"getCountry\",\n value: function getCountry() {\n var digits = this.state.digits; // Return `undefined` if no digits have been input yet.\n\n if (digits) {\n return this._getCountry();\n }\n }\n /**\r\n * Returns a two-letter country code of the phone number.\r\n * Returns `undefined` for \"non-geographic\" phone numbering plans.\r\n * @return {string} [country]\r\n */\n\n }, {\n key: \"_getCountry\",\n value: function _getCountry() {\n var country = this.state.country;\n /* istanbul ignore if */\n\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n // `AsYouType.getCountry()` returns `undefined`\n // for \"non-geographic\" phone numbering plans.\n if (country === '001') {\n return;\n }\n }\n\n return country;\n }\n }, {\n key: \"determineTheCountryIfNeeded\",\n value: function determineTheCountryIfNeeded() {\n // Suppose a user enters a phone number in international format,\n // and there're several countries corresponding to that country calling code,\n // and a country has been derived from the number, and then\n // a user enters one more digit and the number is no longer\n // valid for the derived country, so the country should be re-derived\n // on every new digit in those cases.\n //\n // If the phone number is being input in national format,\n // then it could be a case when `defaultCountry` wasn't specified\n // when creating `AsYouType` instance, and just `defaultCallingCode` was specified,\n // and that \"calling code\" could correspond to a \"non-geographic entity\",\n // or there could be several countries corresponding to that country calling code.\n // In those cases, `this.country` is `undefined` and should be derived\n // from the number. Again, if country calling code is ambiguous, then\n // `this.country` should be re-derived with each new digit.\n //\n if (!this.state.country || this.isCountryCallingCodeAmbiguous()) {\n this.determineTheCountry();\n }\n } // Prepends `+CountryCode ` in case of an international phone number\n\n }, {\n key: \"getFullNumber\",\n value: function getFullNumber(formattedNationalNumber) {\n var _this2 = this;\n\n if (this.isInternational()) {\n var prefix = function prefix(text) {\n return _this2.formatter.getInternationalPrefixBeforeCountryCallingCode(_this2.state, {\n spacing: text ? true : false\n }) + text;\n };\n\n var callingCode = this.state.callingCode;\n\n if (!callingCode) {\n return prefix(\"\".concat(this.state.getDigitsWithoutInternationalPrefix()));\n }\n\n if (!formattedNationalNumber) {\n return prefix(callingCode);\n }\n\n return prefix(\"\".concat(callingCode, \" \").concat(formattedNationalNumber));\n }\n\n return formattedNationalNumber;\n }\n }, {\n key: \"getNonFormattedNationalNumberWithPrefix\",\n value: function getNonFormattedNationalNumberWithPrefix() {\n var _this$state = this.state,\n nationalSignificantNumber = _this$state.nationalSignificantNumber,\n complexPrefixBeforeNationalSignificantNumber = _this$state.complexPrefixBeforeNationalSignificantNumber,\n nationalPrefix = _this$state.nationalPrefix;\n var number = nationalSignificantNumber;\n var prefix = complexPrefixBeforeNationalSignificantNumber || nationalPrefix;\n\n if (prefix) {\n number = prefix + number;\n }\n\n return number;\n }\n }, {\n key: \"getNonFormattedNumber\",\n value: function getNonFormattedNumber() {\n var nationalSignificantNumberMatchesInput = this.state.nationalSignificantNumberMatchesInput;\n return this.getFullNumber(nationalSignificantNumberMatchesInput ? this.getNonFormattedNationalNumberWithPrefix() : this.state.getNationalDigits());\n }\n }, {\n key: \"getNonFormattedTemplate\",\n value: function getNonFormattedTemplate() {\n var number = this.getNonFormattedNumber();\n\n if (number) {\n return number.replace(/[\\+\\d]/g, DIGIT_PLACEHOLDER);\n }\n }\n }, {\n key: \"isCountryCallingCodeAmbiguous\",\n value: function isCountryCallingCodeAmbiguous() {\n var callingCode = this.state.callingCode;\n var countryCodes = this.metadata.getCountryCodesForCallingCode(callingCode);\n return countryCodes && countryCodes.length > 1;\n } // Determines the country of the phone number\n // entered so far based on the country phone code\n // and the national phone number.\n\n }, {\n key: \"determineTheCountry\",\n value: function determineTheCountry() {\n this.state.setCountry(getCountryByCallingCode(this.isInternational() ? this.state.callingCode : this.defaultCallingCode, this.state.nationalSignificantNumber, this.metadata));\n }\n /**\r\n * Returns a E.164 phone number value for the user's input.\r\n *\r\n * For example, for country `\"US\"` and input `\"(222) 333-4444\"`\r\n * it will return `\"+12223334444\"`.\r\n *\r\n * For international phone number input, it will also auto-correct\r\n * some minor errors such as using a national prefix when writing\r\n * an international phone number. For example, if the user inputs\r\n * `\"+44 0 7400 000000\"` then it will return an auto-corrected\r\n * `\"+447400000000\"` phone number value.\r\n *\r\n * Will return `undefined` if no digits have been input,\r\n * or when inputting a phone number in national format and no\r\n * default country or default \"country calling code\" have been set.\r\n *\r\n * @return {string} [value]\r\n */\n\n }, {\n key: \"getNumberValue\",\n value: function getNumberValue() {\n var _this$state2 = this.state,\n digits = _this$state2.digits,\n callingCode = _this$state2.callingCode,\n country = _this$state2.country,\n nationalSignificantNumber = _this$state2.nationalSignificantNumber; // Will return `undefined` if no digits have been input.\n\n if (!digits) {\n return;\n }\n\n if (this.isInternational()) {\n if (callingCode) {\n return '+' + callingCode + nationalSignificantNumber;\n } else {\n return '+' + digits;\n }\n } else {\n if (country || callingCode) {\n var callingCode_ = country ? this.metadata.countryCallingCode() : callingCode;\n return '+' + callingCode_ + nationalSignificantNumber;\n }\n }\n }\n /**\r\n * Returns an instance of `PhoneNumber` class.\r\n * Will return `undefined` if no national (significant) number\r\n * digits have been entered so far, or if no `defaultCountry` has been\r\n * set and the user enters a phone number not in international format.\r\n */\n\n }, {\n key: \"getNumber\",\n value: function getNumber() {\n var _this$state3 = this.state,\n nationalSignificantNumber = _this$state3.nationalSignificantNumber,\n carrierCode = _this$state3.carrierCode,\n callingCode = _this$state3.callingCode; // `this._getCountry()` is basically same as `this.state.country`\n // with the only change that it return `undefined` in case of a\n // \"non-geographic\" numbering plan instead of `\"001\"` \"internal use\" value.\n\n var country = this._getCountry();\n\n if (!nationalSignificantNumber) {\n return;\n }\n\n if (!country && !callingCode) {\n return;\n }\n\n var phoneNumber = new PhoneNumber(country || callingCode, nationalSignificantNumber, this.metadata.metadata);\n\n if (carrierCode) {\n phoneNumber.carrierCode = carrierCode;\n } // Phone number extensions are not supported by \"As You Type\" formatter.\n\n\n return phoneNumber;\n }\n /**\r\n * Returns `true` if the phone number is \"possible\".\r\n * Is just a shortcut for `PhoneNumber.isPossible()`.\r\n * @return {boolean}\r\n */\n\n }, {\n key: \"isPossible\",\n value: function isPossible() {\n var phoneNumber = this.getNumber();\n\n if (!phoneNumber) {\n return false;\n }\n\n return phoneNumber.isPossible();\n }\n /**\r\n * Returns `true` if the phone number is \"valid\".\r\n * Is just a shortcut for `PhoneNumber.isValid()`.\r\n * @return {boolean}\r\n */\n\n }, {\n key: \"isValid\",\n value: function isValid() {\n var phoneNumber = this.getNumber();\n\n if (!phoneNumber) {\n return false;\n }\n\n return phoneNumber.isValid();\n }\n /**\r\n * @deprecated\r\n * This method is used in `react-phone-number-input/source/input-control.js`\r\n * in versions before `3.0.16`.\r\n */\n\n }, {\n key: \"getNationalNumber\",\n value: function getNationalNumber() {\n return this.state.nationalSignificantNumber;\n }\n /**\r\n * Returns the phone number characters entered by the user.\r\n * @return {string}\r\n */\n\n }, {\n key: \"getChars\",\n value: function getChars() {\n return (this.state.international ? '+' : '') + this.state.digits;\n }\n /**\r\n * Returns the template for the formatted phone number.\r\n * @return {string}\r\n */\n\n }, {\n key: \"getTemplate\",\n value: function getTemplate() {\n return this.formatter.getTemplate(this.state) || this.getNonFormattedTemplate() || '';\n }\n }]);\n\n return AsYouType;\n}();\n\nexport { AsYouType as default };\n//# sourceMappingURL=AsYouType.js.map","import Metadata from './metadata.js';\nexport default function getCountries(metadata) {\n return new Metadata(metadata).getCountries();\n}\n//# sourceMappingURL=getCountries.js.map","import PhoneNumber from './PhoneNumber.js';\nexport default function getExampleNumber(country, examples, metadata) {\n if (examples[country]) {\n return new PhoneNumber(country, examples[country], metadata);\n }\n}\n//# sourceMappingURL=getExampleNumber.js.map","import AsYouType from './AsYouType.js';\n/**\r\n * Formats a (possibly incomplete) phone number.\r\n * The phone number can be either in E.164 format\r\n * or in a form of national number digits.\r\n * @param {string} value - A possibly incomplete phone number. Either in E.164 format or in a form of national number digits.\r\n * @param {string?} country - Two-letter (\"ISO 3166-1 alpha-2\") country code.\r\n * @return {string} Formatted (possibly incomplete) phone number.\r\n */\n\nexport default function formatIncompletePhoneNumber(value, country, metadata) {\n if (!metadata) {\n metadata = country;\n country = undefined;\n }\n\n return new AsYouType(country, metadata).input(value);\n}\n//# sourceMappingURL=formatIncompletePhoneNumber.js.map","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { parsePhoneNumberWithError as _parsePhoneNumberWithError } from '../../core/index.js'\r\n\r\nexport function parsePhoneNumberWithError() {\r\n\treturn withMetadataArgument(_parsePhoneNumberWithError, arguments)\r\n}\r\n","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\r\n// importing system which is even uncapable of importing \"*.json\" files.\r\nimport metadata from '../../metadata.min.json.js'\r\n\r\nimport { PhoneNumberMatcher as _PhoneNumberMatcher } from '../../core/index.js'\r\n\r\nexport function PhoneNumberMatcher(text, options) {\r\n\treturn _PhoneNumberMatcher.call(this, text, options, metadata)\r\n}\r\nPhoneNumberMatcher.prototype = Object.create(_PhoneNumberMatcher.prototype, {})\r\nPhoneNumberMatcher.prototype.constructor = PhoneNumberMatcher\r\n","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\r\n// importing system which is even uncapable of importing \"*.json\" files.\r\nimport metadata from '../../metadata.min.json.js'\r\n\r\nimport { AsYouType as _AsYouType } from '../../core/index.js'\r\n\r\nexport function AsYouType(country) {\r\n\treturn _AsYouType.call(this, country, metadata)\r\n}\r\n\r\nAsYouType.prototype = Object.create(_AsYouType.prototype, {})\r\nAsYouType.prototype.constructor = AsYouType","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { getCountryCallingCode as _getCountryCallingCode } from '../../core/index.js'\r\n\r\nexport function getCountryCallingCode() {\r\n\treturn withMetadataArgument(_getCountryCallingCode, arguments)\r\n}","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\r\n// importing system which is even uncapable of importing \"*.json\" files.\r\nimport metadata from '../../metadata.min.json.js'\r\n\r\nimport { Metadata as _Metadata } from '../../core/index.js'\r\n\r\nexport function Metadata() {\r\n\treturn _Metadata.call(this, metadata)\r\n}\r\n\r\nMetadata.prototype = Object.create(_Metadata.prototype, {})\r\nMetadata.prototype.constructor = Metadata","import _parseNumber from './parse_.js';\nimport { normalizeArguments } from './parsePhoneNumber.js'; // `options`:\n// {\n// country:\n// {\n// restrict - (a two-letter country code)\n// the phone number must be in this country\n//\n// default - (a two-letter country code)\n// default country to use for phone number parsing and validation\n// (if no country code could be derived from the phone number)\n// }\n// }\n//\n// Returns `{ country, number }`\n//\n// Example use cases:\n//\n// ```js\n// parse('8 (800) 555-35-35', 'RU')\n// parse('8 (800) 555-35-35', 'RU', metadata)\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } })\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata)\n// parse('+7 800 555 35 35')\n// parse('+7 800 555 35 35', metadata)\n// ```\n//\n\nexport default function parseNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return _parseNumber(text, options, metadata);\n}\n//# sourceMappingURL=parse.js.map","import withMetadataArgument from '../min/exports/withMetadataArgument.js'\r\n\r\nimport _parse from '../es6/parse.js'\r\n\r\nexport function parse() {\r\n\treturn withMetadataArgument(_parse, arguments)\r\n}\r\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport _formatNumber from './format_.js';\nimport parse from './parse_.js';\nexport default function formatNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n input = _normalizeArguments.input,\n format = _normalizeArguments.format,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return _formatNumber(input, format, options, metadata);\n} // Sort out arguments\n\nfunction normalizeArguments(args) {\n var _Array$prototype$slic = Array.prototype.slice.call(args),\n _Array$prototype$slic2 = _slicedToArray(_Array$prototype$slic, 5),\n arg_1 = _Array$prototype$slic2[0],\n arg_2 = _Array$prototype$slic2[1],\n arg_3 = _Array$prototype$slic2[2],\n arg_4 = _Array$prototype$slic2[3],\n arg_5 = _Array$prototype$slic2[4];\n\n var input;\n var format;\n var options;\n var metadata; // Sort out arguments.\n // If the phone number is passed as a string.\n // `format('8005553535', ...)`.\n\n if (typeof arg_1 === 'string') {\n // If country code is supplied.\n // `format('8005553535', 'RU', 'NATIONAL', [options], metadata)`.\n if (typeof arg_3 === 'string') {\n format = arg_3;\n\n if (arg_5) {\n options = arg_4;\n metadata = arg_5;\n } else {\n metadata = arg_4;\n }\n\n input = parse(arg_1, {\n defaultCountry: arg_2,\n extended: true\n }, metadata);\n } // Just an international phone number is supplied\n // `format('+78005553535', 'NATIONAL', [options], metadata)`.\n else {\n if (typeof arg_2 !== 'string') {\n throw new Error('`format` argument not passed to `formatNumber(number, format)`');\n }\n\n format = arg_2;\n\n if (arg_4) {\n options = arg_3;\n metadata = arg_4;\n } else {\n metadata = arg_3;\n }\n\n input = parse(arg_1, {\n extended: true\n }, metadata);\n }\n } // If the phone number is passed as a parsed number object.\n // `format({ phone: '8005553535', country: 'RU' }, 'NATIONAL', [options], metadata)`.\n else if (is_object(arg_1)) {\n input = arg_1;\n format = arg_2;\n\n if (arg_4) {\n options = arg_3;\n metadata = arg_4;\n } else {\n metadata = arg_3;\n }\n } else throw new TypeError('A phone number must either be a string or an object of shape { phone, [country] }.'); // Legacy lowercase formats.\n\n\n if (format === 'International') {\n format = 'INTERNATIONAL';\n } else if (format === 'National') {\n format = 'NATIONAL';\n }\n\n return {\n input: input,\n format: format,\n options: options,\n metadata: metadata\n };\n} // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\n\nvar is_object = function is_object(_) {\n return _typeof(_) === 'object';\n};\n//# sourceMappingURL=format.js.map","import withMetadataArgument from '../min/exports/withMetadataArgument.js'\r\n\r\nimport _format from '../es6/format.js'\r\n\r\nexport function format() {\r\n\treturn withMetadataArgument(_format, arguments)\r\n}\r\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport isViablePhoneNumber from './helpers/isViablePhoneNumber.js';\nimport _getNumberType from './helpers/getNumberType.js';\nimport parse from './parse_.js'; // Finds out national phone number type (fixed line, mobile, etc)\n\nexport default function getNumberType() {\n var _normalizeArguments = normalizeArguments(arguments),\n input = _normalizeArguments.input,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return _getNumberType(input, options, metadata);\n} // Sort out arguments\n\nexport function normalizeArguments(args) {\n var _Array$prototype$slic = Array.prototype.slice.call(args),\n _Array$prototype$slic2 = _slicedToArray(_Array$prototype$slic, 4),\n arg_1 = _Array$prototype$slic2[0],\n arg_2 = _Array$prototype$slic2[1],\n arg_3 = _Array$prototype$slic2[2],\n arg_4 = _Array$prototype$slic2[3];\n\n var input;\n var options = {};\n var metadata; // If the phone number is passed as a string.\n // `getNumberType('88005553535', ...)`.\n\n if (typeof arg_1 === 'string') {\n // If \"default country\" argument is being passed\n // then convert it to an `options` object.\n // `getNumberType('88005553535', 'RU', metadata)`.\n if (_typeof(arg_2) !== 'object') {\n if (arg_4) {\n options = arg_3;\n metadata = arg_4;\n } else {\n metadata = arg_3;\n } // `parse` extracts phone numbers from raw text,\n // therefore it will cut off all \"garbage\" characters,\n // while this `validate` function needs to verify\n // that the phone number contains no \"garbage\"\n // therefore the explicit `isViablePhoneNumber` check.\n\n\n if (isViablePhoneNumber(arg_1)) {\n input = parse(arg_1, {\n defaultCountry: arg_2\n }, metadata);\n } else {\n input = {};\n }\n } // No \"resrict country\" argument is being passed.\n // International phone number is passed.\n // `getNumberType('+78005553535', metadata)`.\n else {\n if (arg_3) {\n options = arg_2;\n metadata = arg_3;\n } else {\n metadata = arg_2;\n } // `parse` extracts phone numbers from raw text,\n // therefore it will cut off all \"garbage\" characters,\n // while this `validate` function needs to verify\n // that the phone number contains no \"garbage\"\n // therefore the explicit `isViablePhoneNumber` check.\n\n\n if (isViablePhoneNumber(arg_1)) {\n input = parse(arg_1, undefined, metadata);\n } else {\n input = {};\n }\n }\n } // If the phone number is passed as a parsed phone number.\n // `getNumberType({ phone: '88005553535', country: 'RU' }, ...)`.\n else if (is_object(arg_1)) {\n input = arg_1;\n\n if (arg_3) {\n options = arg_2;\n metadata = arg_3;\n } else {\n metadata = arg_2;\n }\n } else throw new TypeError('A phone number must either be a string or an object of shape { phone, [country] }.');\n\n return {\n input: input,\n options: options,\n metadata: metadata\n };\n} // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\nvar is_object = function is_object(_) {\n return _typeof(_) === 'object';\n};\n//# sourceMappingURL=getNumberType.js.map","import { normalizeArguments } from './getNumberType.js';\nimport _isPossibleNumber from './isPossibleNumber_.js';\n/**\r\n * Checks if a given phone number is possible.\r\n * Which means it only checks phone number length\r\n * and doesn't test any regular expressions.\r\n *\r\n * Examples:\r\n *\r\n * ```js\r\n * isPossibleNumber('+78005553535', metadata)\r\n * isPossibleNumber('8005553535', 'RU', metadata)\r\n * isPossibleNumber('88005553535', 'RU', metadata)\r\n * isPossibleNumber({ phone: '8005553535', country: 'RU' }, metadata)\r\n * ```\r\n */\n\nexport default function isPossibleNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n input = _normalizeArguments.input,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return _isPossibleNumber(input, options, metadata);\n}\n//# sourceMappingURL=isPossibleNumber.js.map","import _isValidNumber from './validate_.js';\nimport { normalizeArguments } from './getNumberType.js'; // Finds out national phone number type (fixed line, mobile, etc)\n\nexport default function isValidNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n input = _normalizeArguments.input,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return _isValidNumber(input, options, metadata);\n}\n//# sourceMappingURL=validate.js.map","import isViablePhoneNumber from './helpers/isViablePhoneNumber.js';\nimport parseNumber from './parse_.js';\nimport _isValidNumberForRegion from './isValidNumberForRegion_.js';\nexport default function isValidNumberForRegion(number, country, metadata) {\n if (typeof number !== 'string') {\n throw new TypeError('number must be a string');\n }\n\n if (typeof country !== 'string') {\n throw new TypeError('country must be a string');\n } // `parse` extracts phone numbers from raw text,\n // therefore it will cut off all \"garbage\" characters,\n // while this `validate` function needs to verify\n // that the phone number contains no \"garbage\"\n // therefore the explicit `isViablePhoneNumber` check.\n\n\n var input;\n\n if (isViablePhoneNumber(number)) {\n input = parseNumber(number, {\n defaultCountry: country\n }, metadata);\n } else {\n input = {};\n }\n\n return _isValidNumberForRegion(input, country, undefined, metadata);\n}\n//# sourceMappingURL=isValidNumberForRegion.js.map","import isValidNumber from './validate_.js';\n/**\r\n * Checks if a given phone number is valid within a given region.\r\n * Is just an alias for `phoneNumber.isValid() && phoneNumber.country === country`.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n */\n\nexport default function isValidNumberForRegion(input, country, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {};\n return input.country === country && isValidNumber(input, options, metadata);\n}\n//# sourceMappingURL=isValidNumberForRegion_.js.map","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// This is a legacy function.\n// Use `findNumbers()` instead.\nimport { PLUS_CHARS, VALID_PUNCTUATION, VALID_DIGITS, WHITESPACE } from './constants.js';\nimport parse from './parse_.js';\nimport { VALID_PHONE_NUMBER_WITH_EXTENSION } from './helpers/isViablePhoneNumber.js';\nimport createExtensionPattern from './helpers/extension/createExtensionPattern.js';\nimport parsePreCandidate from './findNumbers/parsePreCandidate.js';\nimport isValidPreCandidate from './findNumbers/isValidPreCandidate.js';\nimport isValidCandidate from './findNumbers/isValidCandidate.js';\n/**\r\n * Regexp of all possible ways to write extensions, for use when parsing. This\r\n * will be run as a case-insensitive regexp match. Wide character versions are\r\n * also provided after each ASCII version. There are three regular expressions\r\n * here. The first covers RFC 3966 format, where the extension is added using\r\n * ';ext='. The second more generic one starts with optional white space and\r\n * ends with an optional full stop (.), followed by zero or more spaces/tabs\r\n * /commas and then the numbers themselves. The other one covers the special\r\n * case of American numbers where the extension is written with a hash at the\r\n * end, such as '- 503#'. Note that the only capturing groups should be around\r\n * the digits that you want to capture as part of the extension, or else parsing\r\n * will fail! We allow two options for representing the accented o - the\r\n * character itself, and one in the unicode decomposed form with the combining\r\n * acute accent.\r\n */\n\nexport var EXTN_PATTERNS_FOR_PARSING = createExtensionPattern('parsing');\nvar WHITESPACE_IN_THE_BEGINNING_PATTERN = new RegExp('^[' + WHITESPACE + ']+');\nvar PUNCTUATION_IN_THE_END_PATTERN = new RegExp('[' + VALID_PUNCTUATION + ']+$'); // // Regular expression for getting opening brackets for a valid number\n// // found using `PHONE_NUMBER_START_PATTERN` for prepending those brackets to the number.\n// const BEFORE_NUMBER_DIGITS_PUNCTUATION = new RegExp('[' + OPENING_BRACKETS + ']+' + '[' + WHITESPACE + ']*' + '$')\n\nvar VALID_PRECEDING_CHARACTER_PATTERN = /[^a-zA-Z0-9]/;\nexport default function findPhoneNumbers(text, options, metadata) {\n /* istanbul ignore if */\n if (options === undefined) {\n options = {};\n }\n\n var search = new PhoneNumberSearch(text, options, metadata);\n var phones = [];\n\n while (search.hasNext()) {\n phones.push(search.next());\n }\n\n return phones;\n}\n/**\r\n * @return ES6 `for ... of` iterator.\r\n */\n\nexport function searchPhoneNumbers(text, options, metadata) {\n /* istanbul ignore if */\n if (options === undefined) {\n options = {};\n }\n\n var search = new PhoneNumberSearch(text, options, metadata);\n return _defineProperty({}, Symbol.iterator, function () {\n return {\n next: function next() {\n if (search.hasNext()) {\n return {\n done: false,\n value: search.next()\n };\n }\n\n return {\n done: true\n };\n }\n };\n });\n}\n/**\r\n * Extracts a parseable phone number including any opening brackets, etc.\r\n * @param {string} text - Input.\r\n * @return {object} `{ ?number, ?startsAt, ?endsAt }`.\r\n */\n\nexport var PhoneNumberSearch = /*#__PURE__*/function () {\n function PhoneNumberSearch(text, options, metadata) {\n _classCallCheck(this, PhoneNumberSearch);\n\n this.text = text; // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n\n this.options = options || {};\n this.metadata = metadata; // Iteration tristate.\n\n this.state = 'NOT_READY';\n this.regexp = new RegExp(VALID_PHONE_NUMBER_WITH_EXTENSION, 'ig');\n }\n\n _createClass(PhoneNumberSearch, [{\n key: \"find\",\n value: function find() {\n var matches = this.regexp.exec(this.text);\n\n if (!matches) {\n return;\n }\n\n var number = matches[0];\n var startsAt = matches.index;\n number = number.replace(WHITESPACE_IN_THE_BEGINNING_PATTERN, '');\n startsAt += matches[0].length - number.length; // Fixes not parsing numbers with whitespace in the end.\n // Also fixes not parsing numbers with opening parentheses in the end.\n // https://github.com/catamphetamine/libphonenumber-js/issues/252\n\n number = number.replace(PUNCTUATION_IN_THE_END_PATTERN, '');\n number = parsePreCandidate(number);\n var result = this.parseCandidate(number, startsAt);\n\n if (result) {\n return result;\n } // Tail recursion.\n // Try the next one if this one is not a valid phone number.\n\n\n return this.find();\n }\n }, {\n key: \"parseCandidate\",\n value: function parseCandidate(number, startsAt) {\n if (!isValidPreCandidate(number, startsAt, this.text)) {\n return;\n } // Don't parse phone numbers which are non-phone numbers\n // due to being part of something else (e.g. a UUID).\n // https://github.com/catamphetamine/libphonenumber-js/issues/213\n // Copy-pasted from Google's `PhoneNumberMatcher.js` (`.parseAndValidate()`).\n\n\n if (!isValidCandidate(number, startsAt, this.text, this.options.extended ? 'POSSIBLE' : 'VALID')) {\n return;\n } // // Prepend any opening brackets left behind by the\n // // `PHONE_NUMBER_START_PATTERN` regexp.\n // const text_before_number = text.slice(this.searching_from, startsAt)\n // const full_number_starts_at = text_before_number.search(BEFORE_NUMBER_DIGITS_PUNCTUATION)\n // if (full_number_starts_at >= 0)\n // {\n // \tnumber = text_before_number.slice(full_number_starts_at) + number\n // \tstartsAt = full_number_starts_at\n // }\n //\n // this.searching_from = matches.lastIndex\n\n\n var result = parse(number, this.options, this.metadata);\n\n if (!result.phone) {\n return;\n }\n\n result.startsAt = startsAt;\n result.endsAt = startsAt + number.length;\n return result;\n }\n }, {\n key: \"hasNext\",\n value: function hasNext() {\n if (this.state === 'NOT_READY') {\n this.last_match = this.find();\n\n if (this.last_match) {\n this.state = 'READY';\n } else {\n this.state = 'DONE';\n }\n }\n\n return this.state === 'READY';\n }\n }, {\n key: \"next\",\n value: function next() {\n // Check the state and find the next match as a side-effect if necessary.\n if (!this.hasNext()) {\n throw new Error('No next element');\n } // Don't retain that memory any longer than necessary.\n\n\n var result = this.last_match;\n this.last_match = null;\n this.state = 'NOT_READY';\n return result;\n }\n }]);\n\n return PhoneNumberSearch;\n}();\n//# sourceMappingURL=findPhoneNumbers_.js.map","// This is a legacy function.\n// Use `findNumbers()` instead.\nimport _findPhoneNumbers, { searchPhoneNumbers as _searchPhoneNumbers } from './findPhoneNumbers_.js';\nimport { normalizeArguments } from './parsePhoneNumber.js';\nexport default function findPhoneNumbers() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return _findPhoneNumbers(text, options, metadata);\n}\n/**\r\n * @return ES6 `for ... of` iterator.\r\n */\n\nexport function searchPhoneNumbers() {\n var _normalizeArguments2 = normalizeArguments(arguments),\n text = _normalizeArguments2.text,\n options = _normalizeArguments2.options,\n metadata = _normalizeArguments2.metadata;\n\n return _searchPhoneNumbers(text, options, metadata);\n}\n//# sourceMappingURL=findPhoneNumbers.js.map","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\r\n// importing system which is even uncapable of importing \"*.json\" files.\r\nimport metadata from '../metadata.min.json.js'\r\n\r\nimport { PhoneNumberSearch as _PhoneNumberSearch } from '../es6/findPhoneNumbers_.js'\r\n\r\nexport function PhoneNumberSearch(text, options) {\r\n\t_PhoneNumberSearch.call(this, text, options, metadata)\r\n}\r\n\r\n// Deprecated.\r\nPhoneNumberSearch.prototype = Object.create(_PhoneNumberSearch.prototype, {})\r\nPhoneNumberSearch.prototype.constructor = PhoneNumberSearch\r\n","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { findNumbers as _findNumbers } from '../../core/index.js'\r\n\r\nexport function findNumbers() {\r\n\treturn withMetadataArgument(_findNumbers, arguments)\r\n}","import withMetadataArgument from '../min/exports/withMetadataArgument.js'\r\n\r\nimport _findPhoneNumbers from '../es6/findPhoneNumbers.js'\r\n\r\nexport function findPhoneNumbers() {\r\n\treturn withMetadataArgument(_findPhoneNumbers, arguments)\r\n}\r\n","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { findPhoneNumbersInText as _findPhoneNumbersInText } from '../../core/index.js'\r\n\r\nexport function findPhoneNumbersInText() {\r\n\treturn withMetadataArgument(_findPhoneNumbersInText, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { formatIncompletePhoneNumber as _formatIncompletePhoneNumber } from '../../core/index.js'\r\n\r\nexport function formatIncompletePhoneNumber() {\r\n\treturn withMetadataArgument(_formatIncompletePhoneNumber, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { getCountries as _getCountries } from '../../core/index.js'\r\n\r\nexport function getCountries() {\r\n\treturn withMetadataArgument(_getCountries, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { getExampleNumber as _getExampleNumber } from '../../core/index.js'\r\n\r\nexport function getExampleNumber() {\r\n\treturn withMetadataArgument(_getExampleNumber, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { getExtPrefix as _getExtPrefix } from '../../core/index.js'\r\n\r\nexport function getExtPrefix() {\r\n\treturn withMetadataArgument(_getExtPrefix, arguments)\r\n}","import withMetadataArgument from '../min/exports/withMetadataArgument.js'\r\n\r\nimport _getNumberType from '../es6/getNumberType.js'\r\n\r\nexport function getNumberType() {\r\n\treturn withMetadataArgument(_getNumberType, arguments)\r\n}\r\n","// Deprecated.\r\n\r\nimport withMetadataArgument from '../min/exports/withMetadataArgument.js'\r\n\r\nimport _isPossibleNumber from '../es6/isPossibleNumber.js'\r\n\r\nexport function isPossibleNumber() {\r\n\treturn withMetadataArgument(_isPossibleNumber, arguments)\r\n}\r\n","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { isPossiblePhoneNumber as _isPossiblePhoneNumber } from '../../core/index.js'\r\n\r\nexport function isPossiblePhoneNumber() {\r\n\treturn withMetadataArgument(_isPossiblePhoneNumber, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { isSupportedCountry as _isSupportedCountry } from '../../core/index.js'\r\n\r\nexport function isSupportedCountry() {\r\n\treturn withMetadataArgument(_isSupportedCountry, arguments)\r\n}","// Deprecated.\r\n\r\nimport withMetadataArgument from '../min/exports/withMetadataArgument.js'\r\n\r\nimport _isValidNumber from '../es6/validate.js'\r\n\r\nexport function isValidNumber() {\r\n\treturn withMetadataArgument(_isValidNumber, arguments)\r\n}\r\n","import withMetadataArgument from '../min/exports/withMetadataArgument.js'\r\n\r\nimport _isValidNumberForRegion from '../es6/isValidNumberForRegion.js'\r\n\r\nexport function isValidNumberForRegion() {\r\n\treturn withMetadataArgument(_isValidNumberForRegion, arguments)\r\n}\r\n","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { isValidPhoneNumber as _isValidPhoneNumber } from '../../core/index.js'\r\n\r\nexport function isValidPhoneNumber() {\r\n\treturn withMetadataArgument(_isValidPhoneNumber, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { parsePhoneNumberFromString as _parsePhoneNumberFromString } from '../../core/index.js'\r\n\r\nexport function parsePhoneNumberFromString() {\r\n\treturn withMetadataArgument(_parsePhoneNumberFromString, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { searchNumbers as _searchNumbers } from '../../core/index.js'\r\n\r\nexport function searchNumbers() {\r\n\treturn withMetadataArgument(_searchNumbers, arguments)\r\n}","import withMetadataArgument from '../min/exports/withMetadataArgument.js'\r\n\r\nimport { searchPhoneNumbers as _searchPhoneNumbers } from '../es6/findPhoneNumbers.js'\r\n\r\nexport function searchPhoneNumbers() {\r\n\treturn withMetadataArgument(_searchPhoneNumbers, arguments)\r\n}\r\n","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { searchPhoneNumbersInText as _searchPhoneNumbersInText } from '../../core/index.js'\r\n\r\nexport function searchPhoneNumbersInText() {\r\n\treturn withMetadataArgument(_searchPhoneNumbersInText, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { validatePhoneNumberLength as _validatePhoneNumberLength } from '../../core/index.js'\r\n\r\nexport function validatePhoneNumberLength() {\r\n\treturn withMetadataArgument(_validatePhoneNumberLength, arguments)\r\n}"],"names":["metadata","version","country_calling_codes","countries","AC","AD","AE","AF","AG","AI","AL","AM","AO","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GT","GU","GW","GY","HK","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TA","TC","TD","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","YE","YT","ZA","ZM","ZW","nonGeographic","withMetadataArgument","func","_arguments","args","Array","prototype","slice","call","push","apply","this","_typeof","obj","Symbol","iterator","constructor","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_possibleConstructorReturn","self","TypeError","_assertThisInitialized","ReferenceError","_wrapNativeSuper","Class","_cache","Map","undefined","fn","Function","toString","indexOf","has","get","set","Wrapper","_construct","arguments","_getPrototypeOf","create","value","_setPrototypeOf","Parent","_isNativeReflectConstruct","Reflect","construct","a","instance","bind","sham","Proxy","Boolean","valueOf","e","o","p","setPrototypeOf","__proto__","getPrototypeOf","ParseError","_Error","subClass","superClass","_inherits","Derived","hasNativeReflectConstruct","Constructor","protoProps","staticProps","_super","result","Super","NewTarget","code","_this","_classCallCheck","name","Error","VALID_DIGITS","WHITESPACE","VALID_PUNCTUATION","concat","PLUS_CHARS","compare","b","split","pa","pb","na","Number","nb","isNaN","_createClass","DEFAULT_EXT_PREFIX","CALLING_CODE_REG_EXP","Metadata","is_object","keys","join","type_of","validateMetadata","setVersion","filter","_","countryCode","v1","v2","v3","nonGeographical","country","getCountryMetadata","callingCode","getCountryCodesForCallingCode","countryCodes","countryCallingCodes","selectNumberingPlan","test","hasCountry","numberingPlan","NumberingPlan","hasCallingCode","getNumberingPlanMetadata","getCountryCodeForCallingCode","IDDPrefix","defaultIDDPrefix","nationalNumberPattern","possibleLengths","formats","nationalPrefixForParsing","nationalPrefixTransformRule","leadingDigits","hasTypes","_type","type","ext","country_phone_code_to_countries","globalMetadataObject","_getFormats","getDefaultCountryMetadataForRegion","map","Format","_getNationalPrefixFormattingRule","_nationalPrefixForParsing","nationalPrefix","_getNationalPrefixIsOptionalWhenFormatting","types","_type2","getType","Type","format","_format","nationalPrefixFormattingRule","nationalPrefixIsOptionalWhenFormattingInNationalFormat","usesNationalPrefix","FIRST_GROUP_ONLY_PREFIX_PATTERN","getExtPrefix","getCountryCallingCode","countryCallingCode","isSupportedCountry","v4","getExtensionDigitsPattern","maxLength","createExtensionPattern","purpose","optionalExtnSuffix","possibleSeparatorsBetweenNumberAndExtLabel","possibleSeparatorsNumberExtLabelNoComma","VALID_PHONE_NUMBER","VALID_PHONE_NUMBER_START_REG_EXP","RegExp","VALID_PHONE_NUMBER_WITH_EXTENSION","VALID_PHONE_NUMBER_PATTERN","isViablePhoneNumber","number","EXTN_PATTERN","_createForOfIteratorHelperLoose","allowArrayLike","it","next","isArray","minLen","_arrayLikeToArray","n","from","_unsupportedIterableToArray","done","arr","len","arr2","DIGITS","parseDigit","character","parseDigits","string","_step","_iterator","digit","parseIncompletePhoneNumber","parsePhoneNumberCharacter","prevParsedCharacters","checkNumberLength","nationalNumber","checkNumberLengthForType","type_info","possible_lengths","mobile_type","merged","element","sort","mergeArrays","actual_length","minimum_length","isPossiblePhoneNumber","input","options","phone","isPossibleNumber","isNonGeographicCallingCode","_slicedToArray","_arrayWithHoles","_i","_s","_e","_arr","_n","_d","err","_iterableToArrayLimit","_nonIterableRest","parseRFC3966","text","replace","_part$split2","formatRFC3966","_ref","matchesEntirely","regular_expression","NON_FIXED_LINE_PHONE_TYPES","getNumberType","isNumberTypeEqualTo","pattern","isValidNumber","applyInternationalSeparatorStyle","formattedNumber","trim","FIRST_GROUP_PATTERN","formatNationalNumberUsingFormat","useInternationalFormat","withNationalPrefix","carrierCode","internationalFormat","SINGLE_IDD_PREFIX_REG_EXP","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","DEFAULT_OPTIONS","formatExtension","extension","formatNumber","addExtension","formatNationalNumber","fromCountry","iddPrefix","countryMetadata","getIddPrefix","formatIDD","formatAs","availableFormats","nationalNnumber","leadingDigitsPatterns","lastLeadingDigitsPattern","search","chooseFormatForNumber","PhoneNumber","_metadata","isCountryCode","phoneNumber","CAPTURING_DIGIT_PATTERN","stripIddPrefix","IDDPrefixPattern","matchedGroups","match","extractNationalNumberFromPossiblyIncompleteNumber","prefixPattern","prefixMatch","exec","capturedGroupsCount","hasCapturedGroups","prefixBeforeNationalNumber","possiblePositionOfTheFirstCapturedGroup","extractNationalNumber","_extractNationalNumbe","nationalNumberBefore","nationalNumberAfter","shouldHaveExtractedNationalPrefix","isPossibleIncompleteNationalNumber","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","possibleShorterNumber","possibleShorterNationalNumber","extractCountryCallingCode","numberWithoutIDD","_extractCountryCallin","shorterNumber","_countryCallingCode","getCountryByCallingCode","nationalPhoneNumber","possibleCountries","selectCountryFromList","PHONE_NUMBER_START_PATTERN","AFTER_PHONE_NUMBER_END_PATTERN","parse","defaultCountry","_parseInput","extract","throwOnError","startsAt","extractFormattedPhoneNumber","isViablePhoneNumberStart","error","withExtensionStripped","start","numberWithoutExtension","matches","extractExtension","parseInput","formattedPhoneNumber","_parsePhoneNumber","defaultCallingCode","exactCountry","parsePhoneNumber","hasSelectedNumberingPlan","valid","extended","possible","parseNumber","_normalizeArguments","normalizeArguments","parsePhoneNumber_","_Array$prototype$slic2","arg_1","arg_2","arg_3","arg_4","isObject","parsePhoneNumberFromString","parsePhoneNumberFromString_","isValidPhoneNumber","isValid","isPossible","validatePhoneNumberLength","message","Node","prev","LRUCache","limit","size","head","tail","cache","ensureLimit","node","remove","put","console","log","RegExpCache","regExp","lower","upper","trimAfterFirstMatch","regexp","index","_pZ","pZ","PZ","pNd","_pL","pL","pL_regexp","pSc","pSc_regexp","pMn","pMn_regexp","latinLetterRegexp","isLatinLetter","letter","isInvalidPunctuationSymbol","Leniency","POSSIBLE","candidate","VALID","containsOnlyValidXChars","STRICT_GROUPING","regExpCache","candidateString","containsMoreThanOneSlashInNationalNumber","isNationalPrefixPresentIfRequired","checkNumberGroupingIsValid","allNumberGroupsRemainGrouped","EXACT_GROUPING","allNumberGroupsAreExactlyPresent","charAtIndex","charAt","charAtNextIndex","util","isNumberMatch","substring","MatchType","NSN_MATCH","getCountryCodeSource","phoneNumberRegion","getRegionCodeForCountryCode","getCountryCode","getMetadataForRegion","getNationalSignificantNumber","formatRule","chooseFormattingPatternForNumber","numberFormats","getNationalPrefixFormattingRule","getNationalPrefixOptionalWhenFormatting","PhoneNumberUtil","formattingRuleHasFirstGroupOnly","rawInputCopy","normalizeDigitsOnly","getRawInput","maybeStripNationalPrefixAndCarrierCode","firstSlashInBodyIndex","secondSlashInBodyIndex","CountryCodeSource","FROM_NUMBER_WITH_PLUS_SIGN","FROM_NUMBER_WITHOUT_PLUS_SIGN","String","checkGroups","normalizedCandidate","normalizeDigits","formattedNumberGroups","getNationalNumberGroups","alternateFormats","MetadataManager","getAlternateFormatsForCountry","nationalSignificantNumber","alternateFormat","getPatternForRegExp","formattingPattern","formatNsnUsingPattern","rfc3966Format","endIndex","startIndex","candidateGroups","NON_DIGITS_PATTERN","candidateNumberGroupIndex","hasExtension","contains","formattedNumberGroupIndex","fromIndex","FROM_DEFAULT_COUNTRY","region","getNddPrefixForRegion","Character","isDigit","getExtension","SECOND_NUMBER_START_PATTERN","parsePreCandidate","SLASH_SEPARATED_DATES","TIME_STAMPS","TIME_STAMPS_SUFFIX_LEADING","isValidPreCandidate","offset","followingText","OPENING_PARENS","CLOSING_PARENS","NON_PARENS","LEAD_CLASS","LEAD_CLASS_LEADING","BRACKET_PAIR_LIMIT","MATCHING_BRACKETS_ENTIRE","PUB_PAGES","isValidCandidate","leniency","previousChar","lastCharIndex","nextChar","EXTN_PATTERNS_FOR_MATCHING","INNER_MATCHES","leadLimit","punctuationLimit","blockLimit","MAX_LENGTH_FOR_NSN","punctuation","digitSequence","PATTERN","UNWANTED_END_CHAR_PATTERN","MAX_SAFE_INTEGER","Math","pow","PhoneNumberMatcher","maxTries","state","searchIndex","parseAndVerify","extractInnerMatch","endsAt","innerMatchPattern","isFirstMatch","candidateMatch","innerMatchRegExp","_candidate","_match","candidateIndexGuess","lastMatch","find","hasNext","findNumbers","matcher","results","_findNumbers","searchNumbers","findPhoneNumbersInText","getArguments","searchPhoneNumbersInText","AsYouTypeState","onCountryChange","onCallingCodeChange","international","missingPlus","digits","resetNationalSignificantNumber","initCountryAndCallingCode","getNationalDigits","nationalSignificantNumberMatchesInput","complexPrefixBeforeNationalSignificantNumber","properties","_Object$keys","setCountry","setCallingCode","nextDigits","DIGIT_PLACEHOLDER","DIGIT_PLACEHOLDER_MATCHER","repeat","times","cutAndStripNonPairedParens","cutBeforeIndex","dangling_braces","pop","cleared_string","_dangling_braces","stripNonPairedParens","formatCompleteNumber","shouldTryNationalPrefixFormattingRule","getSeparatorAfterNationalPrefix","_ref2","useNationalPrefixFormattingRule","formatNationalNumberWithAndWithoutNationalPrefixFormattingRule","_ref3","formattedNationalNumber","isValidFormattedNationalNumber","PatternParser","context","or","instructions","parsePattern","_this$context$","branches","op","expandSingleElementArray","OPERATOR","operator","before","rightPart","startContext","getContext","endContext","oneOfSet","parseOneOfSet","ILLEGAL_CHARACTER_REGEXP","values","prevValue","charCodeAt","nextValue","fromCharCode","array","PatternMatcher","matchTree","allowOverflow","matchedChars","overflow","characters","tree","last","characterString","partialMatch","restCharacters","JSON","stringify","_result","_step2","_iterator2","_char","LONGEST_DUMMY_PHONE_NUMBER","NATIONAL_PREFIX_SEPARATORS_PATTERN","NON_ALTERING_FORMAT_REG_EXP","AsYouTypeFormatter","resetFormat","chosenFormat","template","nationalNumberTemplate","populatedNationalNumberTemplate","populatedNationalNumberTemplatePosition","isNANP","matchingFormats","narrowDownMatchingFormats","canFormatCompleteNumber","formattedCompleteNumber","setNationalNumberTemplate","lastIndexOf","formatNationalNumberWithNextDigits","previouslyChosenFormat","newlyChosenFormat","chooseFormat","formatNextNationalNumberDigits","_this2","leadingDigitsPatternIndex","formatSuits","formatMatches","nationalPrefixIsMandatoryWhenFormattingInNationalFormat","leadingDigitsPatternsCount","min","leadingDigitsPattern","_this3","_loop","getFormatFormat","createTemplateForFormat","_ret","getTemplateForFormat","spacing","internationalPrefix","getInternationalPrefixBeforeCountryCallingCode","getDigitsWithoutInternationalPrefix","_ref4","strictPattern","nationalNumberDummyDigits","nationalPrefixIncludedInTemplate","numberFormat","numberFormatWithNationalPrefix","position","populateTemplateWithDigits","_ref5","VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN","VALID_FORMATTED_PHONE_NUMBER_PART","AFTER_PHONE_NUMBER_DIGITS_END_PATTERN","COMPLEX_NATIONAL_PREFIX","AsYouTypeParser","onNationalSignificantNumberChange","justLeadingPlus","_extractFormattedDigi","_extractFormattedDigi4","extractedNumber","hasPlus","_extractFormattedDigitsAndPlus","formattedDigits","extractFormattedDigitsAndPlus","_extractFormattedDigi2","startInternationalNumber","inputDigits","hasReceivedThreeLeadingDigits","appendDigits","extractIddPrefix","isWaitingForCountryCallingCode","appendNationalSignificantNumberDigits","hasExtractedNationalSignificantNumber","extractNationalSignificantNumber","stateUpdate","update","_extractCountryCallingCode","couldPossiblyExtractAnotherNationalSignificantNumber","nationalDigits","setState","onExtractedNationalNumber","prevNationalSignificantNumber","_extractNationalNumbe2","nationalSignificantNumberIndex","extractAnotherNationalSignificantNumber","fixMissingPlus","extractCallingCodeAndNationalSignificantNumber","_extractCountryCallin2","newCallingCode","AsYouType","optionsOrDefaultCountry","_this$getCountryAndCa2","getCountryAndCallingCode","reset","_this$parser$input","parser","formattedOutput","determineTheCountryIfNeeded","formatter","reExtractNationalSignificantNumber","getFullNumber","getNonFormattedNumber","isInternational","getCallingCode","_getCountry","isCountryCallingCodeAmbiguous","determineTheCountry","prefix","_this$state","getNonFormattedNationalNumberWithPrefix","_this$state2","_this$state3","getNumber","getTemplate","getNonFormattedTemplate","getCountries","getExampleNumber","examples","formatIncompletePhoneNumber","parsePhoneNumberWithError","_parsePhoneNumberWithError","_PhoneNumberMatcher","_AsYouType","_getCountryCallingCode","_Metadata","_parseNumber","_parse","_formatNumber","arg_5","_getNumberType","_isPossibleNumber","_isValidNumber","isValidNumberForRegion","_isValidNumberForRegion","WHITESPACE_IN_THE_BEGINNING_PATTERN","PUNCTUATION_IN_THE_END_PATTERN","findPhoneNumbers","PhoneNumberSearch","phones","searchPhoneNumbers","parseCandidate","last_match","_findPhoneNumbers","_normalizeArguments2","_searchPhoneNumbers","_PhoneNumberSearch","_findPhoneNumbersInText","_formatIncompletePhoneNumber","_getCountries","_getExampleNumber","_getExtPrefix","_isPossiblePhoneNumber","_isSupportedCountry","_isValidPhoneNumber","_parsePhoneNumberFromString","_searchNumbers","_searchPhoneNumbersInText","_validatePhoneNumberLength"],"mappings":"sPAGe,IAAAA,EAAA,CAACC,QAAU,EAAEC,sBAAwB,CAAC,EAAI,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,EAAI,CAAC,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,KAAK,KAAK,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,KAAK,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-max.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-max.js new file mode 100644 index 00000000..e130fca6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-max.js @@ -0,0 +1,2 @@ +!function(d,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((d="undefined"!=typeof globalThis?globalThis:d||self).libphonenumber={})}(this,(function(d){"use strict";var t={version:4,country_calling_codes:{1:["US","AG","AI","AS","BB","BM","BS","CA","DM","DO","GD","GU","JM","KN","KY","LC","MP","MS","PR","SX","TC","TT","VC","VG","VI"],7:["RU","KZ"],20:["EG"],27:["ZA"],30:["GR"],31:["NL"],32:["BE"],33:["FR"],34:["ES"],36:["HU"],39:["IT","VA"],40:["RO"],41:["CH"],43:["AT"],44:["GB","GG","IM","JE"],45:["DK"],46:["SE"],47:["NO","SJ"],48:["PL"],49:["DE"],51:["PE"],52:["MX"],53:["CU"],54:["AR"],55:["BR"],56:["CL"],57:["CO"],58:["VE"],60:["MY"],61:["AU","CC","CX"],62:["ID"],63:["PH"],64:["NZ"],65:["SG"],66:["TH"],81:["JP"],82:["KR"],84:["VN"],86:["CN"],90:["TR"],91:["IN"],92:["PK"],93:["AF"],94:["LK"],95:["MM"],98:["IR"],211:["SS"],212:["MA","EH"],213:["DZ"],216:["TN"],218:["LY"],220:["GM"],221:["SN"],222:["MR"],223:["ML"],224:["GN"],225:["CI"],226:["BF"],227:["NE"],228:["TG"],229:["BJ"],230:["MU"],231:["LR"],232:["SL"],233:["GH"],234:["NG"],235:["TD"],236:["CF"],237:["CM"],238:["CV"],239:["ST"],240:["GQ"],241:["GA"],242:["CG"],243:["CD"],244:["AO"],245:["GW"],246:["IO"],247:["AC"],248:["SC"],249:["SD"],250:["RW"],251:["ET"],252:["SO"],253:["DJ"],254:["KE"],255:["TZ"],256:["UG"],257:["BI"],258:["MZ"],260:["ZM"],261:["MG"],262:["RE","YT"],263:["ZW"],264:["NA"],265:["MW"],266:["LS"],267:["BW"],268:["SZ"],269:["KM"],290:["SH","TA"],291:["ER"],297:["AW"],298:["FO"],299:["GL"],350:["GI"],351:["PT"],352:["LU"],353:["IE"],354:["IS"],355:["AL"],356:["MT"],357:["CY"],358:["FI","AX"],359:["BG"],370:["LT"],371:["LV"],372:["EE"],373:["MD"],374:["AM"],375:["BY"],376:["AD"],377:["MC"],378:["SM"],380:["UA"],381:["RS"],382:["ME"],383:["XK"],385:["HR"],386:["SI"],387:["BA"],389:["MK"],420:["CZ"],421:["SK"],423:["LI"],500:["FK"],501:["BZ"],502:["GT"],503:["SV"],504:["HN"],505:["NI"],506:["CR"],507:["PA"],508:["PM"],509:["HT"],590:["GP","BL","MF"],591:["BO"],592:["GY"],593:["EC"],594:["GF"],595:["PY"],596:["MQ"],597:["SR"],598:["UY"],599:["CW","BQ"],670:["TL"],672:["NF"],673:["BN"],674:["NR"],675:["PG"],676:["TO"],677:["SB"],678:["VU"],679:["FJ"],680:["PW"],681:["WF"],682:["CK"],683:["NU"],685:["WS"],686:["KI"],687:["NC"],688:["TV"],689:["PF"],690:["TK"],691:["FM"],692:["MH"],850:["KP"],852:["HK"],853:["MO"],855:["KH"],856:["LA"],880:["BD"],886:["TW"],960:["MV"],961:["LB"],962:["JO"],963:["SY"],964:["IQ"],965:["KW"],966:["SA"],967:["YE"],968:["OM"],970:["PS"],971:["AE"],972:["IL"],973:["BH"],974:["QA"],975:["BT"],976:["MN"],977:["NP"],992:["TJ"],993:["TM"],994:["AZ"],995:["GE"],996:["KG"],998:["UZ"]},countries:{AC:["247","00","(?:[01589]\\d|[46])\\d{4}",[5,6],0,0,0,0,0,0,0,[["6[2-467]\\d{3}",[5]],["4\\d{4}",[5]],0,0,0,0,["(?:0[1-9]|[1589]\\d)\\d{4}",[6]]]],AD:["376","00","(?:1|6\\d)\\d{7}|[135-9]\\d{5}",[6,8,9],[["(\\d{3})(\\d{3})","$1 $2",["[135-9]"]],["(\\d{4})(\\d{4})","$1 $2",["1"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]],0,0,0,0,0,0,[["[78]\\d{5}",[6]],["690\\d{6}|[356]\\d{5}",[6,9]],["180[02]\\d{4}",[8]],["[19]\\d{5}",[6]]]],AE:["971","00","(?:[4-7]\\d|9[0-689])\\d{7}|800\\d{2,9}|[2-4679]\\d{7}",[5,6,7,8,9,10,11,12],[["(\\d{3})(\\d{2,9})","$1 $2",["60|8"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[236]|[479][2-8]"],"0$1"],["(\\d{3})(\\d)(\\d{5})","$1 $2 $3",["[479]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"]],"0",0,0,0,0,0,[["[2-4679][2-8]\\d{6}",[8]],["5[024-68]\\d{7}",[9]],["400\\d{6}|800\\d{2,9}"],["900[02]\\d{5}",[9]],0,0,["600[25]\\d{5}",[9]],0,0,["700[05]\\d{5}",[9]]]],AF:["93","00","[2-7]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"]],"0",0,0,0,0,0,[["(?:[25][0-8]|[34][0-4]|6[0-5])[2-9]\\d{6}"],["7\\d{8}"]]],AG:["1","011","(?:268|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([457]\\d{6})$","268$1",0,"268",[["268(?:4(?:6[0-38]|84)|56[0-2])\\d{4}"],["268(?:464|7(?:1[3-9]|[28]\\d|3[0246]|64|7[0-689]))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,0,["26840[69]\\d{4}"],["26848[01]\\d{4}"]]],AI:["1","011","(?:264|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2457]\\d{6})$","264$1",0,"264",[["264(?:292|4(?:6[12]|9[78]))\\d{4}"],["264(?:235|4(?:69|76)|5(?:3[6-9]|8[1-4])|7(?:29|72))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,0,["264724\\d{4}"]]],AL:["355","00","(?:700\\d\\d|900)\\d{3}|8\\d{5,7}|(?:[2-5]|6\\d)\\d{7}",[6,7,8,9],[["(\\d{3})(\\d{3,4})","$1 $2",["80|9"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["4[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2358][2-5]|4"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["[23578]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["6"],"0$1"]],"0",0,0,0,0,0,[["4505[0-2]\\d{3}|(?:[2358][16-9]\\d[2-9]|4410)\\d{4}|(?:[2358][2-5][2-9]|4(?:[2-57-9][2-9]|6\\d))\\d{5}",[8]],["6(?:[78][2-9]|9\\d)\\d{6}",[9]],["800\\d{4}",[7]],["900[1-9]\\d\\d",[6]],["700[2-9]\\d{4}",[8]],0,0,0,0,["808[1-9]\\d\\d",[6]]]],AM:["374","00","(?:[1-489]\\d|55|60|77)\\d{6}",[8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[89]0"],"0 $1"],["(\\d{3})(\\d{5})","$1 $2",["2|3[12]"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["1|47"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[3-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:(?:1[0-25]|47)\\d|2(?:2[2-46]|3[1-8]|4[2-69]|5[2-7]|6[1-9]|8[1-7])|3[12]2)\\d{5}"],["(?:33|4[1349]|55|77|88|9[13-9])\\d{6}"],["800\\d{5}"],["90[016]\\d{5}"],0,0,0,0,["60(?:2[78]|3[5-9]|4[02-9]|5[0-46-9]|[6-8]\\d|9[01])\\d{4}"],["80[1-4]\\d{5}"]]],AO:["244","00","[29]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[29]"]]],0,0,0,0,0,0,[["2\\d(?:[0134][25-9]|[25-9]\\d)\\d{5}"],["9[1-59]\\d{7}"]]],AR:["54","00","(?:11|[89]\\d\\d)\\d{8}|[2368]\\d{9}",[10,11],[["(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])","2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["1"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2-$3",["[23]"],"0$1",1],["(\\d)(\\d{4})(\\d{2})(\\d{4})","$2 15-$3-$4",["9(?:2[2-469]|3[3-578])","9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))","9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",0,"$1 $2 $3-$4"],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 15-$3-$4",["91"],"0$1",0,"$1 $2 $3-$4"],["(\\d{3})(\\d{3})(\\d{5})","$1-$2-$3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 15-$3-$4",["9"],"0$1",0,"$1 $2 $3-$4"]],"0",0,"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?","9$1",0,0,[["3888[013-9]\\d{5}|3(?:7(?:1[15]|81)|8(?:21|4[16]|69|9[12]))[46]\\d{5}|(?:29(?:54|66)|3(?:7(?:55|77)|865))[2-8]\\d{5}|(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|473|9(?:[07]2|2[26]|34|46))|3327)[45]\\d{5}|(?:2(?:284|3(?:02|23)|657|920)|3(?:4(?:8[27]|92)|541|878))[2-7]\\d{5}|(?:2(?:(?:26|62)2|320|477|9(?:42|83))|3(?:329|4(?:[47]6|62|89)|564))[2-6]\\d{5}|(?:(?:11[1-8]|670)\\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-7]|[235][4-6]|84)|5(?:1[2-9]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:0[45]|[17][2-6]|3[4-6]|[58][3-6])))\\d{6}|2(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|475|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\d{5}|(?:2(?:2(?:57|81)|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|71)|5(?:25|37|4[347]|71)|7(?:18|5[17])))[3-6]\\d{5}|(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[03-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[145]|4[13]|5[468]|7[2-5]|8[26])|8(?:2[5-7]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\d{5}",[10]],["93(?:7(?:1[15]|81)[46]|8(?:(?:21|4[16]|69|9[12])[46]|88[013-9]))\\d{5}|9(?:29(?:54|66)|3(?:7(?:55|77)|865))[2-8]\\d{5}|9(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|473|9(?:[07]2|2[26]|34|46))|3327)[45]\\d{5}|9(?:2(?:284|3(?:02|23)|657|920)|3(?:4(?:8[27]|92)|541|878))[2-7]\\d{5}|9(?:2(?:(?:26|62)2|320|477|9(?:42|83))|3(?:329|4(?:[47]6|62|89)|564))[2-6]\\d{5}|(?:675\\d|9(?:11[1-8]\\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-7]|[235][4-6]|84)|5(?:1[2-9]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:0[45]|[17][2-6]|3[4-6]|[58][3-6]))))\\d{6}|92(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|475|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\d{5}|9(?:2(?:2(?:57|81)|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|71)|5(?:25|37|4[347]|71)|7(?:18|5[17])))[3-6]\\d{5}|9(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[03-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[145]|4[13]|5[468]|7[2-5]|8[26])|8(?:2[5-7]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\d{5}"],["800\\d{7,8}"],["60[04579]\\d{7}",[10]],0,0,["810\\d{7}",[10]]]],AS:["1","011","(?:[58]\\d\\d|684|900)\\d{7}",[10],0,"1",0,"1|([267]\\d{6})$","684$1",0,"684",[["6846(?:22|33|44|55|77|88|9[19])\\d{4}"],["684(?:2(?:48|5[2468]|72)|7(?:3[13]|70|82))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],AT:["43","00","1\\d{3,12}|2\\d{6,12}|43(?:(?:0\\d|5[02-9])\\d{3,9}|2\\d{4,5}|[3467]\\d{4}|8\\d{4,6}|9\\d{4,7})|5\\d{4,12}|8\\d{7,12}|9\\d{8,12}|(?:[367]\\d|4[0-24-9])\\d{4,11}",[4,5,6,7,8,9,10,11,12,13],[["(\\d)(\\d{3,12})","$1 $2",["1(?:11|[2-9])"],"0$1"],["(\\d{3})(\\d{2})","$1 $2",["517"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["5[079]"],"0$1"],["(\\d{3})(\\d{3,10})","$1 $2",["(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]"],"0$1"],["(\\d{4})(\\d{3,9})","$1 $2",["[2-467]|5[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["5"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,7})","$1 $2 $3",["5"],"0$1"]],"0",0,0,0,0,0,[["1(?:11\\d|[2-9]\\d{3,11})|(?:316|463|(?:51|66|73)2)\\d{3,10}|(?:2(?:1[467]|2[13-8]|5[2357]|6[1-46-8]|7[1-8]|8[124-7]|9[1458])|3(?:1[1-578]|3[23568]|4[5-7]|5[1378]|6[1-38]|8[3-68])|4(?:2[1-8]|35|7[1368]|8[2457])|5(?:2[1-8]|3[357]|4[147]|5[12578]|6[37])|6(?:13|2[1-47]|4[135-8]|5[468])|7(?:2[1-8]|35|4[13478]|5[68]|6[16-8]|7[1-6]|9[45]))\\d{4,10}"],["6(?:5[0-3579]|6[013-9]|[7-9]\\d)\\d{4,10}",[7,8,9,10,11,12,13]],["800\\d{6,10}",[9,10,11,12,13]],["(?:8[69][2-68]|9(?:0[01]|3[019]))\\d{6,10}",[9,10,11,12,13]],0,0,0,0,["5(?:0[1-9]|17|[79]\\d)\\d{2,10}|7[28]0\\d{6,10}",[5,6,7,8,9,10,11,12,13]],["8(?:10|2[018])\\d{6,10}|828\\d{5}",[8,9,10,11,12,13]]]],AU:["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{7}(?:\\d(?:\\d{2})?)?|8[0-24-9]\\d{7})|[2-478]\\d{8}|1\\d{4,7}",[5,6,7,8,9,10,12],[["(\\d{2})(\\d{3,4})","$1 $2",["16"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,4})","$1 $2 $3",["16"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["14|4"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[2378]"],"(0$1)"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:30|[89])"]]],"0",0,"0|(183[12])",0,0,0,[["(?:(?:2(?:[0-26-9]\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\d|2[0-8]))\\d{3}|8(?:51(?:0(?:0[03-9]|[12479]\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\d|7[89]|9[0-4]))|(?:6[0-8]|[78]\\d)\\d{3}|9(?:[02-9]\\d{3}|1(?:(?:[0-58]\\d|6[0135-9])\\d|7(?:0[0-24-9]|[1-9]\\d)|9(?:[0-46-9]\\d|5[0-79])))))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,["163\\d{2,6}",[5,6,7,8,9]],["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],AW:["297","00","(?:[25-79]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[25-9]"]]],0,0,0,0,0,0,[["5(?:2\\d|8[1-9])\\d{4}"],["(?:290|5[69]\\d|6(?:[03]0|22|4[0-2]|[69]\\d)|7(?:[34]\\d|7[07])|9(?:6[45]|9[4-8]))\\d{4}"],["800\\d{4}"],["900\\d{4}"],0,0,0,0,["(?:28\\d|501)\\d{4}"]]],AX:["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","2\\d{4,9}|35\\d{4,5}|(?:60\\d\\d|800)\\d{4,6}|7\\d{5,11}|(?:[14]\\d|3[0-46-9]|50)\\d{4,8}",[5,6,7,8,9,10,11,12],0,"0",0,0,0,0,"18",[["18[1-8]\\d{3,6}",[6,7,8,9]],["4946\\d{2,6}|(?:4[0-8]|50)\\d{4,8}",[6,7,8,9,10]],["800\\d{4,6}",[7,8,9]],["[67]00\\d{5,6}",[8,9]],0,0,["20\\d{4,8}|60[12]\\d{5,6}|7(?:099\\d{4,5}|5[03-9]\\d{3,7})|20[2-59]\\d\\d|(?:606|7(?:0[78]|1|3\\d))\\d{7}|(?:10|29|3[09]|70[1-5]\\d)\\d{4,8}"]],"00"],AZ:["994","00","365\\d{6}|(?:[124579]\\d|60|88)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[28]|2|365|46","1[28]|2|365[45]|46","1[28]|2|365(?:4|5[02])|46"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[13-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:2[12]428|3655[02])\\d{4}|(?:2(?:22[0-79]|63[0-28])|3654)\\d{5}|(?:(?:1[28]|46)\\d|2(?:[014-6]2|[23]3))\\d{6}"],["36554\\d{4}|(?:[16]0|4[04]|5[015]|7[07]|99)\\d{7}"],["88\\d{7}"],["900200\\d{3}"]]],BA:["387","00","6\\d{8}|(?:[35689]\\d|49|70)\\d{6}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["6[1-3]|[7-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2-$3",["[3-5]|6[56]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["6"],"0$1"]],"0",0,0,0,0,0,[["(?:3(?:[05-79][2-9]|1[4579]|[23][24-9]|4[2-4689]|8[2457-9])|49[2-579]|5(?:0[2-49]|[13][2-9]|[268][2-4679]|4[4689]|5[2-79]|7[2-69]|9[2-4689]))\\d{5}",[8]],["6040\\d{5}|6(?:03|[1-356]|44|7\\d)\\d{6}"],["8[08]\\d{6}",[8]],["9[0246]\\d{6}",[8]],0,0,["703[235]0\\d{3}|70(?:2[0-5]|3[0146]|[56]0)\\d{4}",[8]],0,0,["8[12]\\d{6}",[8]]]],BB:["1","011","(?:246|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","246$1",0,"246",[["246521[0369]\\d{3}|246(?:2(?:2[78]|7[0-4])|4(?:1[024-6]|2\\d|3[2-9])|5(?:20|[34]\\d|54|7[1-3])|6(?:2\\d|38)|7[35]7|9(?:1[89]|63))\\d{4}"],["246(?:(?:2(?:[3568]\\d|4[0-57-9])|3(?:5[2-9]|6[0-6])|4(?:46|5\\d)|69[5-7]|8(?:[2-5]\\d|83))\\d|52(?:1[147]|20))\\d{3}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["(?:246976|900[2-9]\\d\\d)\\d{4}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,["246(?:292|367|4(?:1[7-9]|3[01]|4[47-9]|67)|7(?:1[2-9]|2\\d|3[016]|53))\\d{4}"],0,["24631\\d{5}"]]],BD:["880","00","[1-469]\\d{9}|8[0-79]\\d{7,8}|[2-79]\\d{8}|[2-9]\\d{7}|[3-9]\\d{6}|[57-9]\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{4,6})","$1-$2",["31[5-8]|[459]1"],"0$1"],["(\\d{3})(\\d{3,7})","$1-$2",["3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:28|4[14]|5)|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]"],"0$1"],["(\\d{4})(\\d{3,6})","$1-$2",["[13-9]|22"],"0$1"],["(\\d)(\\d{7,8})","$1-$2",["2"],"0$1"]],"0",0,0,0,0,0,[["(?:4(?:31\\d\\d|423)|5222)\\d{3}(?:\\d{2})?|8332[6-9]\\d\\d|(?:3(?:03[56]|224)|4(?:22[25]|653))\\d{3,4}|(?:3(?:42[47]|529|823)|4(?:027|525|65(?:28|8))|562|6257|7(?:1(?:5[3-5]|6[12]|7[156]|89)|22[589]56|32|42675|52(?:[25689](?:56|8)|[347]8)|71(?:6[1267]|75|89)|92374)|82(?:2[59]|32)56|9(?:03[23]56|23(?:256|373)|31|5(?:1|2[4589]56)))\\d{3}|(?:3(?:02[348]|22[35]|324|422)|4(?:22[67]|32[236-9]|6(?:2[46]|5[57])|953)|5526|6(?:024|6655)|81)\\d{4,5}|(?:2(?:7(?:1[0-267]|2[0-289]|3[0-29]|4[01]|5[1-3]|6[013]|7[0178]|91)|8(?:0[125]|1[1-6]|2[0157-9]|3[1-69]|41|6[1-35]|7[1-5]|8[1-8]|9[0-6])|9(?:0[0-2]|1[0-4]|2[568]|3[3-6]|5[5-7]|6[0136-9]|7[0-7]|8[014-9]))|3(?:0(?:2[025-79]|3[2-4])|181|22[12]|32[2356]|824)|4(?:02[09]|22[348]|32[045]|523|6(?:27|54))|666(?:22|53)|7(?:22[57-9]|42[56]|82[35])8|8(?:0[124-9]|2(?:181|2[02-4679]8)|4[12]|[5-7]2)|9(?:[04]2|2(?:2|328)|81))\\d{4}|(?:2(?:222|[45]\\d)\\d|3(?:1(?:2[5-7]|[5-7])|425|822)|4(?:033|1\\d|[257]1|332|4(?:2[246]|5[25])|6(?:2[35]|56|62)|8(?:23|54)|92[2-5])|5(?:02[03489]|22[457]|32[35-79]|42[46]|6(?:[18]|53)|724|826)|6(?:023|2(?:2[2-5]|5[3-5]|8)|32[3478]|42[34]|52[47]|6(?:[18]|6(?:2[34]|5[24]))|[78]2[2-5]|92[2-6])|7(?:02|21\\d|[3-589]1|6[12]|72[24])|8(?:217|3[12]|[5-7]1)|9[24]1)\\d{5}|(?:(?:3[2-8]|5[2-57-9]|6[03-589])1|4[4689][18])\\d{5}|[59]1\\d{5}"],["(?:1[13-9]\\d|644)\\d{7}|(?:3[78]|44|66)[02-9]\\d{7}",[10]],["80[03]\\d{7}",[10]],0,0,0,0,0,["96(?:0[469]|1[0-47]|3[389]|6[69]|7[78])\\d{6}",[10]]]],BE:["32","00","4\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:80|9)0"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[239]|4[23]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[15-8]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4"],"0$1"]],"0",0,0,0,0,0,[["80[2-8]\\d{5}|(?:1[0-69]|[23][2-8]|4[23]|5\\d|6[013-57-9]|71|8[1-79]|9[2-4])\\d{6}",[8]],["4[5-9]\\d{7}",[9]],["800[1-9]\\d{4}",[8]],["(?:70(?:2[0-57]|3[04-7]|44|6[569]|7[0579])|90(?:0[0-8]|1[36]|2[0-3568]|3[0-689]|[47][2-68]|5[1-68]|6[0-378]|9[34679]))\\d{4}",[8]],0,0,["78(?:0[57]|1[014-8]|2[25]|3[15-8]|48|[56]0|7[06-8]|9\\d)\\d{4}",[8]],0,0,["7879\\d{4}",[8]]]],BF:["226","00","[025-7]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[025-7]"]]],0,0,0,0,0,0,[["2(?:0(?:49|5[23]|6[5-7]|9[016-9])|4(?:4[569]|5[4-6]|6[5-7]|7[0179])|5(?:[34]\\d|50|6[5-7]))\\d{4}"],["(?:0[1-35-7]|5[1-8]|[67]\\d)\\d{6}"]]],BG:["359","00","[2-7]\\d{6,7}|[89]\\d{6,8}|2\\d{5}",[6,7,8,9],[["(\\d)(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["43[1-6]|70[1-9]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:70|8)0"],"0$1"],["(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3",["43[1-7]|7"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[48]|9[08]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"]],"0",0,0,0,0,0,[["2\\d{5,7}|(?:43[1-6]|70[1-9])\\d{4,5}|(?:[36]\\d|4[124-7]|[57][1-9]|8[1-6]|9[1-7])\\d{5,6}",[6,7,8]],["(?:43[07-9]|99[69]\\d)\\d{5}|(?:8[7-9]|98)\\d{7}",[8,9]],["800\\d{5}",[8]],["90\\d{6}",[8]],0,0,0,0,0,["700\\d{5}",[8]]]],BH:["973","00","[136-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[13679]|8[047]"]]],0,0,0,0,0,0,[["(?:1(?:3[1356]|6[0156]|7\\d)\\d|6(?:1[16]\\d|500|6(?:0\\d|3[12]|44|7[7-9]|88)|9[69][69])|7(?:1(?:11|78)|7\\d\\d))\\d{4}"],["(?:3(?:[1-79]\\d|8[0-47-9])\\d|6(?:3(?:00|33|6[16])|6(?:3[03-9]|[69]\\d|7[0-6])))\\d{4}"],["80\\d{6}"],["(?:87|9[014578])\\d{6}"],0,0,0,0,0,["84\\d{6}"]]],BI:["257","00","(?:[267]\\d|31)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2367]"]]],0,0,0,0,0,0,[["(?:22|31)\\d{6}"],["(?:29|6[1257-9]|7[125-9])\\d{6}"]]],BJ:["229","00","(?:[25689]\\d|40)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24-689]"]]],0,0,0,0,0,0,[["2(?:02|1[037]|2[45]|3[68]|4\\d)\\d{5}"],["(?:40|5[1-9]|6\\d|9[013-9])\\d{6}"],0,0,0,0,["81\\d{6}"],0,["857[58]\\d{4}"]]],BL:["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[["590(?:2[7-9]|5[12]|87)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],BM:["1","011","(?:441|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","441$1",0,"441",[["441(?:[46]\\d\\d|5(?:4\\d|60|89))\\d{4}"],["441(?:[2378]\\d|5[0-39])\\d{5}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],BN:["673","00","[2-578]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-578]"]]],0,0,0,0,0,0,[["22[0-7]\\d{4}|(?:2[013-9]|[34]\\d|5[0-25-9])\\d{5}"],["(?:22[89]|[78]\\d\\d)\\d{4}"],0,0,0,0,0,0,["5[34]\\d{5}"]]],BO:["591","00(?:1\\d)?","(?:[2-467]\\d\\d|8001)\\d{5}",[8,9],[["(\\d)(\\d{7})","$1 $2",["[23]|4[46]"]],["(\\d{8})","$1",["[67]"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["8"]]],"0",0,"0(1\\d)?",0,0,0,[["(?:2(?:2\\d\\d|5(?:11|[258]\\d|9[67])|6(?:12|2\\d|9[34])|8(?:2[34]|39|62))|3(?:3\\d\\d|4(?:6\\d|8[24])|8(?:25|42|5[257]|86|9[25])|9(?:[27]\\d|3[2-4]|4[248]|5[24]|6[2-6]))|4(?:4\\d\\d|6(?:11|[24689]\\d|72)))\\d{4}",[8]],["[67]\\d{7}",[8]],["8001[07]\\d{4}",[9]]]],BQ:["599","00","(?:[34]1|7\\d)\\d{5}",[7],0,0,0,0,0,0,"[347]",[["(?:318[023]|41(?:6[023]|70)|7(?:1[578]|2[05]|50)\\d)\\d{3}"],["(?:31(?:8[14-8]|9[14578])|416[14-9]|7(?:0[01]|7[07]|8\\d|9[056])\\d)\\d{3}"]]],BR:["55","00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)","(?:[1-46-9]\\d\\d|5(?:[0-46-9]\\d|5[0-46-9]))\\d{8}|[1-9]\\d{9}|[3589]\\d{8}|[34]\\d{7}",[8,9,10,11],[["(\\d{4})(\\d{4})","$1-$2",["300|4(?:0[02]|37)","4(?:02|37)0|[34]00"]],["(\\d{3})(\\d{2,3})(\\d{4})","$1 $2 $3",["(?:[358]|90)0"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]"],"($1)"],["(\\d{2})(\\d{5})(\\d{4})","$1 $2-$3",["[16][1-9]|[2-57-9]"],"($1)"]],"0",0,"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\d{10,11}))?","$2",0,0,[["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-5]\\d{7}",[10]],["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])(?:7|9\\d)\\d{7}",[10,11]],["800\\d{6,7}",[9,10]],["300\\d{6}|[59]00\\d{6,7}",[9,10]],0,0,0,0,0,["(?:30[03]\\d{3}|4(?:0(?:0\\d|20)|370))\\d{4}|300\\d{5}",[8,10]]]],BS:["1","011","(?:242|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([3-8]\\d{6})$","242$1",0,"242",[["242(?:3(?:02|[236][1-9]|4[0-24-9]|5[0-68]|7[347]|8[0-4]|9[2-467])|461|502|6(?:0[1-4]|12|2[013]|[45]0|7[67]|8[78]|9[89])|7(?:02|88))\\d{4}"],["242(?:3(?:5[79]|7[56]|95)|4(?:[23][1-9]|4[1-35-9]|5[1-8]|6[2-8]|7\\d|81)|5(?:2[45]|3[35]|44|5[1-46-9]|65|77)|6[34]6|7(?:27|38)|8(?:0[1-9]|1[02-9]|2\\d|[89]9))\\d{4}"],["242300\\d{4}|8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,["242225\\d{4}"]]],BT:["975","00","[17]\\d{7}|[2-8]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[2-68]|7[246]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[67]|7"]]],0,0,0,0,0,0,[["(?:2[3-6]|[34][5-7]|5[236]|6[2-46]|7[246]|8[2-4])\\d{5}",[7]],["(?:1[67]|77)\\d{6}",[8]]]],BW:["267","00","(?:0800|(?:[37]|800)\\d)\\d{6}|(?:[2-6]\\d|90)\\d{5}",[7,8,10],[["(\\d{2})(\\d{5})","$1 $2",["90"]],["(\\d{3})(\\d{4})","$1 $2",["[24-6]|3[15-79]"]],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37]"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["(?:2(?:4[0-48]|6[0-24]|9[0578])|3(?:1[0-35-9]|55|[69]\\d|7[013])|4(?:6[03]|7[1267]|9[0-5])|5(?:3[03489]|4[0489]|7[1-47]|88|9[0-49])|6(?:2[1-35]|5[149]|8[067]))\\d{4}",[7]],["(?:321|7(?:[1-7]\\d|8[01]))\\d{5}",[8]],["(?:0800|800\\d)\\d{6}",[10]],["90\\d{5}",[7]],0,0,0,0,["79(?:1(?:[01]\\d|2[0-7])|2[0-7]\\d)\\d{3}",[8]]]],BY:["375","810","(?:[12]\\d|33|44|902)\\d{7}|8(?:0[0-79]\\d{5,7}|[1-7]\\d{9})|8(?:1[0-489]|[5-79]\\d)\\d{7}|8[1-79]\\d{6,7}|8[0-79]\\d{5}|8\\d{5}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3})","$1 $2",["800"],"8 $1"],["(\\d{3})(\\d{2})(\\d{2,4})","$1 $2 $3",["800"],"8 $1"],["(\\d{4})(\\d{2})(\\d{3})","$1 $2-$3",["1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])","1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])"],"8 0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["1(?:[56]|7[467])|2[1-3]"],"8 0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-4]"],"8 0$1"],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["[89]"],"8 $1"]],"8",0,"0|80?",0,0,0,[["(?:1(?:5(?:1[1-5]|[24]\\d|6[2-4]|9[1-7])|6(?:[235]\\d|4[1-7])|7\\d\\d)|2(?:1(?:[246]\\d|3[0-35-9]|5[1-9])|2(?:[235]\\d|4[0-8])|3(?:[26]\\d|3[02-79]|4[024-7]|5[03-7])))\\d{5}",[9]],["(?:2(?:5[5-79]|9[1-9])|(?:33|44)\\d)\\d{6}",[9]],["800\\d{3,7}|8(?:0[13]|20\\d)\\d{7}"],["(?:810|902)\\d{7}",[10]],0,0,0,0,["249\\d{6}",[9]]],"8~10"],BZ:["501","00","(?:0800\\d|[2-8])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1-$2",["[2-8]"]],["(\\d)(\\d{3})(\\d{4})(\\d{3})","$1-$2-$3-$4",["0"]]],0,0,0,0,0,0,[["(?:2(?:[02]\\d|36|[68]0)|[3-58](?:[02]\\d|[68]0)|7(?:[02]\\d|32|[68]0))\\d{4}",[7]],["6[0-35-7]\\d{5}",[7]],["0800\\d{7}",[11]]]],CA:["1","011","(?:[2-8]\\d|90)\\d{8}|3\\d{6}",[7,10],0,"1",0,0,0,0,0,[["(?:2(?:04|[23]6|[48]9|50|63)|3(?:06|43|6[578])|4(?:03|1[68]|3[178]|50|68|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|13|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\d{6}",[10]],["",[10]],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",[10]],["900[2-9]\\d{6}",[10]],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|(?:5(?:00|2[125-7]|33|44|66|77|88)|622)[2-9]\\d{6}",[10]],0,["310\\d{4}",[7]],0,["600[2-9]\\d{6}",[10]]]],CC:["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[["8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\d|70[23]|959))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,0,["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],CD:["243","00","[189]\\d{8}|[1-68]\\d{6}",[7,9],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[1-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,[["12\\d{7}|[1-6]\\d{6}"],["88\\d{5}|(?:8[0-59]|9[017-9])\\d{7}"]]],CF:["236","00","(?:[27]\\d{3}|8776)\\d{4}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[278]"]]],0,0,0,0,0,0,[["2[12]\\d{6}"],["7[02457]\\d{6}"],0,["8776\\d{4}"]]],CG:["242","00","222\\d{6}|(?:0\\d|80)\\d{7}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["8"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[02]"]]],0,0,0,0,0,0,[["222[1-589]\\d{5}"],["026(?:1[0-5]|6[6-9])\\d{4}|0(?:[14-6]\\d\\d|2(?:40|5[5-8]|6[07-9]))\\d{5}"],0,["80(?:0\\d\\d|120)\\d{4}"]]],CH:["41","00","8\\d{11}|[2-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8[047]|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-79]|81"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["8"],"0$1"]],"0",0,0,0,0,0,[["(?:2[12467]|3[1-4]|4[134]|5[256]|6[12]|[7-9]1)\\d{7}"],["7[35-9]\\d{7}"],["800\\d{6}"],["90[016]\\d{6}"],["878\\d{6}"],0,["5[18]\\d{7}"],["74[0248]\\d{6}"],0,["84[0248]\\d{6}"]]],CI:["225","00","[02]\\d{9}",[10],[["(\\d{2})(\\d{2})(\\d)(\\d{5})","$1 $2 $3 $4",["2"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3 $4",["0"]]],0,0,0,0,0,0,[["2(?:[15]\\d{3}|7(?:2(?:0[23]|1[2357]|2[245]|3[45]|4[3-5])|3(?:06|1[69]|[2-6]7)))\\d{5}"],["0704[0-7]\\d{5}|0(?:[15]\\d\\d|7(?:0[0-37-9]|[4-9][7-9]))\\d{6}"]]],CK:["682","00","[2-578]\\d{4}",[5],[["(\\d{2})(\\d{3})","$1 $2",["[2-578]"]]],0,0,0,0,0,0,[["(?:2\\d|3[13-7]|4[1-5])\\d{3}"],["[578]\\d{4}"]]],CL:["56","(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0","12300\\d{6}|6\\d{9,10}|[2-9]\\d{8}",[9,10,11],[["(\\d{5})(\\d{4})","$1 $2",["219","2196"],"($1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["44"]],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2[1-36]"],"($1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["9[2-9]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])"],"($1)"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["60|8"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{3})(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3 $4",["60"]]],0,0,0,0,0,0,[["2(?:1982[0-6]|3314[05-9])\\d{3}|(?:2(?:1(?:160|962)|3(?:2\\d\\d|3(?:[0346]\\d|1[0-35-9]|2[1-9]|5[0-24-9]|7[0-3])|600)|646[59])|80[1-9]\\d\\d|9(?:3(?:[0-57-9]\\d\\d|6(?:0[02-9]|[1-9]\\d))|6(?:[0-8]\\d\\d|9(?:[02-79]\\d|1[05-9]))|7[1-9]\\d\\d|9(?:[03-9]\\d\\d|1(?:[0235-9]\\d|4[0-24-9])|2(?:[0-79]\\d|8[0-46-9]))))\\d{4}|(?:22|3[2-5]|[47][1-35]|5[1-3578]|6[13-57]|8[1-9]|9[2458])\\d{7}",[9]],["",[9]],["(?:123|8)00\\d{6}",[9,11]],0,0,0,0,0,["44\\d{7}",[9]],["600\\d{7,8}",[10,11]]]],CM:["237","00","[26]\\d{8}|88\\d{6,7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["88"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[26]|88"]]],0,0,0,0,0,0,[["2(?:22|33)\\d{6}",[9]],["(?:24[23]|6[25-9]\\d)\\d{6}",[9]],["88\\d{6,7}"]]],CN:["86","00|1(?:[12]\\d|79)\\d\\d00","1[127]\\d{8,9}|2\\d{9}(?:\\d{2})?|[12]\\d{6,7}|86\\d{6}|(?:1[03-689]\\d|6)\\d{7,9}|(?:[3-579]\\d|8[0-57-9])\\d{6,9}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5,6})","$1 $2",["(?:10|2[0-57-9])[19]","(?:10|2[0-57-9])(?:10|9[56])","(?:10|2[0-57-9])(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{5,6})","$1 $2",["3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]","(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))[19]","85[23](?:10|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:10|9[56])","85[23](?:100|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["(?:4|80)0"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["10|2(?:[02-57-9]|1[1-9])","10|2(?:[02-57-9]|1[1-9])","10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]"],"0$1",1],["(\\d{3})(\\d{7,8})","$1 $2",["9"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["80"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[3-578]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["1[3-9]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3 $4",["[12]"],"0$1",1]],"0",0,"0|(1(?:[12]\\d|79)\\d\\d)",0,0,0,[["(?:10(?:[02-79]\\d\\d|[18](?:0[1-9]|[1-9]\\d))|21(?:[18](?:0[1-9]|[1-9]\\d)|[2-79]\\d\\d))\\d{5}|(?:43[35]|754)\\d{7,8}|8(?:078\\d{7}|51\\d{7,8})|(?:10|(?:2|85)1|43[35]|754)(?:100\\d\\d|95\\d{3,4})|(?:2[02-57-9]|3(?:11|7[179])|4(?:[15]1|3[12])|5(?:1\\d|2[37]|3[12]|51|7[13-79]|9[15])|7(?:[39]1|5[57]|6[09])|8(?:71|98))(?:[02-8]\\d{7}|1(?:0(?:0\\d\\d(?:\\d{3})?|[1-9]\\d{5})|[1-9]\\d{6})|9(?:[0-46-9]\\d{6}|5\\d{3}(?:\\d(?:\\d{2})?)?))|(?:3(?:1[02-9]|35|49|5\\d|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|3[46-9]|5[2-9]|6[47-9]|7\\d|8[23])|5(?:3[03-9]|4[36]|5[02-9]|6[1-46]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[17]\\d|2[248]|3[04-9]|4[3-6]|5[0-3689]|6[2368]|9[02-9])|8(?:1[236-8]|2[5-7]|3\\d|5[2-9]|7[02-9]|8[36-8]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:[02-8]\\d{6}|1(?:0(?:0\\d\\d(?:\\d{2})?|[1-9]\\d{4})|[1-9]\\d{5})|9(?:[0-46-9]\\d{5}|5\\d{3,5}))",[7,8,9,10,11]],["1740[0-5]\\d{6}|1(?:[38]\\d|4[57]|[59][0-35-9]|6[25-7]|7[0-35-8])\\d{8}",[11]],["(?:(?:10|21)8|8)00\\d{7}",[10,12]],["16[08]\\d{5}",[8]],0,0,0,0,0,["400\\d{7}|950\\d{7,8}|(?:10|2[0-57-9]|3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))96\\d{3,4}",[7,8,9,10,11]]],"00"],CO:["57","00(?:4(?:[14]4|56)|[579])","(?:60\\d\\d|9101)\\d{6}|(?:1\\d|3)\\d{9}",[10,11],[["(\\d{3})(\\d{7})","$1 $2",["6"],"($1)"],["(\\d{3})(\\d{7})","$1 $2",["3[0-357]|91"]],["(\\d)(\\d{3})(\\d{7})","$1-$2-$3",["1"],"0$1",0,"$1 $2 $3"]],"0",0,"0(4(?:[14]4|56)|[579])?",0,0,0,[["601055(?:[0-4]\\d|50)\\d\\d|6010(?:[0-4]\\d|5[0-4])\\d{4}|60[124-8][2-9]\\d{6}",[10]],["3333(?:0(?:0\\d|1[0-5])|[4-9]\\d\\d)\\d{3}|(?:3(?:24[1-9]|3(?:00|3[0-24-9]))|9101)\\d{6}|3(?:0[0-5]|1\\d|2[0-3]|5[01]|70)\\d{7}",[10]],["1800\\d{7}",[11]],["19(?:0[01]|4[78])\\d{7}",[11]]]],CR:["506","00","(?:8\\d|90)\\d{8}|(?:[24-8]\\d{3}|3005)\\d{4}",[8,10],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[3-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[89]"]]],0,0,"(19(?:0[0-2468]|1[09]|20|66|77|99))",0,0,0,[["210[7-9]\\d{4}|2(?:[024-7]\\d|1[1-9])\\d{5}",[8]],["(?:3005\\d|6500[01])\\d{3}|(?:5[07]|6[0-4]|7[0-3]|8[3-9])\\d{6}",[8]],["800\\d{7}",[10]],["90[059]\\d{7}",[10]],0,0,0,0,["(?:210[0-6]|4\\d{3}|5100)\\d{4}",[8]]]],CU:["53","119","[27]\\d{6,7}|[34]\\d{5,7}|(?:5|8\\d\\d)\\d{7}",[6,7,8,10],[["(\\d{2})(\\d{4,6})","$1 $2",["2[1-4]|[34]"],"(0$1)"],["(\\d)(\\d{6,7})","$1 $2",["7"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["5"],"0$1"],["(\\d{3})(\\d{7})","$1 $2",["8"],"0$1"]],"0",0,0,0,0,0,[["(?:3[23]|48)\\d{4,6}|(?:31|4[36]|8(?:0[25]|78)\\d)\\d{6}|(?:2[1-4]|4[1257]|7\\d)\\d{5,6}"],["5\\d{7}",[8]],["800\\d{7}",[10]],0,0,0,0,0,0,["807\\d{7}",[10]]]],CV:["238","0","(?:[2-59]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[2-589]"]]],0,0,0,0,0,0,[["2(?:2[1-7]|3[0-8]|4[12]|5[1256]|6\\d|7[1-3]|8[1-5])\\d{4}"],["(?:36|5[1-389]|9\\d)\\d{5}"],["800\\d{4}"],0,0,0,0,0,["(?:3[3-5]|4[356])\\d{5}"]]],CW:["599","00","(?:[34]1|60|(?:7|9\\d)\\d)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[3467]"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["9[4-8]"]]],0,0,0,0,0,"[69]",[["9(?:4(?:3[0-5]|4[14]|6\\d)|50\\d|7(?:2[014]|3[02-9]|4[4-9]|6[357]|77|8[7-9])|8(?:3[39]|[46]\\d|7[01]|8[57-9]))\\d{4}"],["953[01]\\d{4}|9(?:5[12467]|6[5-9])\\d{5}"],0,0,0,0,0,["955\\d{5}",[8]],0,["60[0-2]\\d{4}",[7]]]],CX:["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[["8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\d|7(?:0[01]|1[0-2])|958))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,0,["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],CY:["357","00","(?:[279]\\d|[58]0)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[257-9]"]]],0,0,0,0,0,0,[["2[2-6]\\d{6}"],["9[4-79]\\d{6}"],["800\\d{5}"],["90[09]\\d{5}"],["700\\d{5}"],0,["(?:50|77)\\d{6}"],0,0,["80[1-9]\\d{5}"]]],CZ:["420","00","(?:[2-578]\\d|60)\\d{7}|9\\d{8,11}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]|9[015-7]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3 $4",["96"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]],0,0,0,0,0,0,[["(?:2\\d|3[1257-9]|4[16-9]|5[13-9])\\d{7}"],["(?:60[1-8]|7(?:0[2-5]|[2379]\\d))\\d{6}"],["800\\d{6}"],["9(?:0[05689]|76)\\d{6}"],["70[01]\\d{6}"],0,["9(?:5\\d|7[2-4])\\d{6}"],0,["9[17]0\\d{6}"],["8[134]\\d{7}"]]],DE:["49","00","[2579]\\d{5,14}|49(?:[34]0|69|8\\d)\\d\\d?|49(?:37|49|60|7[089]|9\\d)\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\d{1,8}|(?:1|[368]\\d|4[0-8])\\d{3,13}|49(?:[015]\\d|2[13]|31|[46][1-8])\\d{1,9}",[4,5,6,7,8,9,10,11,12,13,14,15],[["(\\d{2})(\\d{3,13})","$1 $2",["3[02]|40|[68]9"],"0$1"],["(\\d{3})(\\d{3,12})","$1 $2",["2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1","2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1"],"0$1"],["(\\d{4})(\\d{2,11})","$1 $2",["[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]","[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["138"],"0$1"],["(\\d{5})(\\d{2,10})","$1 $2",["3"],"0$1"],["(\\d{3})(\\d{5,11})","$1 $2",["181"],"0$1"],["(\\d{3})(\\d)(\\d{4,10})","$1 $2 $3",["1(?:3|80)|9"],"0$1"],["(\\d{3})(\\d{7,8})","$1 $2",["1[67]"],"0$1"],["(\\d{3})(\\d{7,12})","$1 $2",["8"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["185","1850","18500"],"0$1"],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["18[68]"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["15[0568]"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["15[1279]"],"0$1"],["(\\d{3})(\\d{8})","$1 $2",["18"],"0$1"],["(\\d{3})(\\d{2})(\\d{7,8})","$1 $2 $3",["1(?:6[023]|7)"],"0$1"],["(\\d{4})(\\d{2})(\\d{7})","$1 $2 $3",["15[279]"],"0$1"],["(\\d{3})(\\d{2})(\\d{8})","$1 $2 $3",["15"],"0$1"]],"0",0,0,0,0,0,[["32\\d{9,11}|49[1-6]\\d{10}|322\\d{6}|49[0-7]\\d{3,9}|(?:[34]0|[68]9)\\d{3,13}|(?:2(?:0[1-689]|[1-3569]\\d|4[0-8]|7[1-7]|8[0-7])|3(?:[3569]\\d|4[0-79]|7[1-7]|8[1-8])|4(?:1[02-9]|[2-48]\\d|5[0-6]|6[0-8]|7[0-79])|5(?:0[2-8]|[124-6]\\d|[38][0-8]|[79][0-7])|6(?:0[02-9]|[1-358]\\d|[47][0-8]|6[1-9])|7(?:0[2-8]|1[1-9]|[27][0-7]|3\\d|[4-6][0-8]|8[0-5]|9[013-7])|8(?:0[2-9]|1[0-79]|2\\d|3[0-46-9]|4[0-6]|5[013-9]|6[1-8]|7[0-8]|8[0-24-6])|9(?:0[6-9]|[1-4]\\d|[589][0-7]|6[0-8]|7[0-467]))\\d{3,12}",[5,6,7,8,9,10,11,12,13,14,15]],["15[0-25-9]\\d{8}|1(?:6[023]|7\\d)\\d{7,8}",[10,11]],["800\\d{7,12}",[10,11,12,13,14,15]],["(?:137[7-9]|900(?:[135]|9\\d))\\d{6}",[10,11]],["700\\d{8}",[11]],0,["18(?:1\\d{5,11}|[2-9]\\d{8})",[8,9,10,11,12,13,14]],["16(?:4\\d{1,10}|[89]\\d{1,11})",[4,5,6,7,8,9,10,11,12,13,14]],0,["180\\d{5,11}|13(?:7[1-6]\\d\\d|8)\\d{4}",[7,8,9,10,11,12,13,14]]]],DJ:["253","00","(?:2\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[27]"]]],0,0,0,0,0,0,[["2(?:1[2-5]|7[45])\\d{5}"],["77\\d{6}"]]],DK:["45","00","[2-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-9]"]]],0,0,0,0,0,0,[["(?:[2-7]\\d|8[126-9]|9[1-46-9])\\d{6}"],[""],["80\\d{6}"],["90\\d{6}"]]],DM:["1","011","(?:[58]\\d\\d|767|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","767$1",0,"767",[["767(?:2(?:55|66)|4(?:2[01]|4[0-25-9])|50[0-4])\\d{4}"],["767(?:2(?:[2-4689]5|7[5-7])|31[5-7]|61[1-8]|70[1-6])\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],DO:["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,0,0,0,"8001|8[024]9",[["8(?:[04]9[2-9]\\d\\d|29(?:2(?:[0-59]\\d|6[04-9]|7[0-27]|8[0237-9])|3(?:[0-35-9]\\d|4[7-9])|[45]\\d\\d|6(?:[0-27-9]\\d|[3-5][1-9]|6[0135-8])|7(?:0[013-9]|[1-37]\\d|4[1-35689]|5[1-4689]|6[1-57-9]|8[1-79]|9[1-8])|8(?:0[146-9]|1[0-48]|[248]\\d|3[1-79]|5[01589]|6[013-68]|7[124-8]|9[0-8])|9(?:[0-24]\\d|3[02-46-9]|5[0-79]|60|7[0169]|8[57-9]|9[02-9])))\\d{4}"],["8[024]9[2-9]\\d{6}"],["8(?:00(?:14|[2-9]\\d)|(?:33|44|55|66|77|88)[2-9]\\d)\\d{5}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],DZ:["213","00","(?:[1-4]|[5-79]\\d|80)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["9"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-8]"],"0$1"]],"0",0,0,0,0,0,[["9619\\d{5}|(?:1\\d|2[013-79]|3[0-8]|4[013-689])\\d{6}"],["(?:5(?:4[0-29]|5\\d|6[0-2])|6(?:[569]\\d|7[0-6])|7[7-9]\\d)\\d{6}",[9]],["800\\d{6}",[9]],["80[3-689]1\\d{5}",[9]],0,0,0,0,["98[23]\\d{6}",[9]],["80[12]1\\d{5}",[9]]]],EC:["593","00","1\\d{9,10}|(?:[2-7]|9\\d)\\d{7}",[8,9,10,11],[["(\\d)(\\d{3})(\\d{4})","$1 $2-$3",["[2-7]"],"(0$1)",0,"$1-$2-$3"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{3})(\\d{3,4})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[["[2-7][2-7]\\d{6}",[8]],["964[0-2]\\d{5}|9(?:39|[57][89]|6[0-36-9]|[89]\\d)\\d{6}",[9]],["1800\\d{7}|1[78]00\\d{6}",[10,11]],0,0,0,0,0,["[2-7]890\\d{4}",[8]]]],EE:["372","00","8\\d{9}|[4578]\\d{7}|(?:[3-8]\\d|90)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88","[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88"]],["(\\d{4})(\\d{3,4})","$1 $2",["[45]|8(?:00|[1-49])","[45]|8(?:00[1-9]|[1-49])"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["(?:3[23589]|4[3-8]|6\\d|7[1-9]|88)\\d{5}",[7]],["(?:5\\d{5}|8(?:1(?:0(?:000|[3-9]\\d\\d)|(?:1(?:0[236]|1\\d)|(?:23|[3-79]\\d)\\d)\\d)|2(?:0(?:000|(?:19|[2-7]\\d)\\d)|(?:(?:[124-6]\\d|3[5-9])\\d|7(?:[3679]\\d|8[13-9])|8(?:[2-6]\\d|7[01]))\\d)|[349]\\d{4}))\\d\\d|5(?:(?:[02]\\d|5[0-478])\\d|1(?:[0-8]\\d|95)|6(?:4[0-4]|5[1-589]))\\d{3}",[7,8]],["800(?:(?:0\\d\\d|1)\\d|[2-9])\\d{3}"],["(?:40\\d\\d|900)\\d{4}",[7,8]],["70[0-2]\\d{5}",[8]]]],EG:["20","00","[189]\\d{8,9}|[24-6]\\d{8}|[135]\\d{7}",[8,9,10],[["(\\d)(\\d{7,8})","$1 $2",["[23]"],"0$1"],["(\\d{2})(\\d{6,7})","$1 $2",["1[35]|[4-6]|8[2468]|9[235-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[189]"],"0$1"]],"0",0,0,0,0,0,[["13[23]\\d{6}|(?:15|57)\\d{6,7}|(?:2[2-4]|3|4[05-8]|5[05]|6[24-689]|8[2468]|9[235-7])\\d{7}",[8,9]],["1[0-25]\\d{8}",[10]],["800\\d{7}",[10]],["900\\d{7}",[10]]]],EH:["212","00","[5-8]\\d{8}",[9],0,"0",0,0,0,0,"528[89]",[["528[89]\\d{5}"],["(?:6(?:[0-79]\\d|8[0-247-9])|7(?:[017]\\d|2[0-2]|6[0-8]|8[0-3]))\\d{6}"],["80\\d{7}"],["89\\d{7}"],0,0,0,0,["592(?:4[0-2]|93)\\d{4}"]]],ER:["291","00","[178]\\d{6}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[178]"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:1[12568]|[24]0|55|6[146])|8\\d\\d)\\d{4}"],["(?:17[1-3]|7\\d\\d)\\d{4}"]]],ES:["34","00","[5-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]00"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-9]"]]],0,0,0,0,0,0,[["96906(?:0[0-8]|1[1-9]|[2-9]\\d)\\d\\d|9(?:69(?:0[0-57-9]|[1-9]\\d)|73(?:[0-8]\\d|9[1-9]))\\d{4}|(?:8(?:[1356]\\d|[28][0-8]|[47][1-9])|9(?:[135]\\d|[268][0-8]|4[1-9]|7[124-9]))\\d{6}"],["(?:590[16]00\\d|9(?:6906(?:09|10)|7390\\d\\d))\\d\\d|(?:6\\d|7[1-48])\\d{7}"],["[89]00\\d{6}"],["80[367]\\d{6}"],["70\\d{7}"],0,["51\\d{7}"],0,0,["90[12]\\d{6}"]]],ET:["251","00","(?:11|[2-579]\\d)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-579]"],"0$1"]],"0",0,0,0,0,0,[["11667[01]\\d{3}|(?:11(?:1(?:1[124]|2[2-7]|3[1-5]|5[5-8]|8[6-8])|2(?:13|3[6-8]|5[89]|7[05-9]|8[2-6])|3(?:2[01]|3[0-289]|4[1289]|7[1-4]|87)|4(?:1[69]|3[2-49]|4[0-3]|6[5-8])|5(?:1[578]|44|5[0-4])|6(?:1[78]|2[69]|39|4[5-7]|5[1-5]|6[0-59]|8[015-8]))|2(?:2(?:11[1-9]|22[0-7]|33\\d|44[1467]|66[1-68])|5(?:11[124-6]|33[2-8]|44[1467]|55[14]|66[1-3679]|77[124-79]|880))|3(?:3(?:11[0-46-8]|(?:22|55)[0-6]|33[0134689]|44[04]|66[01467])|4(?:44[0-8]|55[0-69]|66[0-3]|77[1-5]))|4(?:6(?:119|22[0-24-7]|33[1-5]|44[13-69]|55[14-689]|660|88[1-4])|7(?:(?:11|22)[1-9]|33[13-7]|44[13-6]|55[1-689]))|5(?:7(?:227|55[05]|(?:66|77)[14-8])|8(?:11[149]|22[013-79]|33[0-68]|44[013-8]|550|66[1-5]|77\\d)))\\d{4}"],["7001\\d{5}|(?:7(?:0[1-9]|1[01]|77|86|99)|9\\d\\d)\\d{6}"]]],FI:["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","[1-35689]\\d{4}|7\\d{10,11}|(?:[124-7]\\d|3[0-46-9])\\d{8}|[1-9]\\d{5,8}",[5,6,7,8,9,10,11,12],[["(\\d)(\\d{4,9})","$1 $2",["[2568][1-8]|3(?:0[1-9]|[1-9])|9"],"0$1"],["(\\d{3})(\\d{3,7})","$1 $2",["[12]00|[368]|70[07-9]"],"0$1"],["(\\d{2})(\\d{4,8})","$1 $2",["[1245]|7[135]"],"0$1"],["(\\d{2})(\\d{6,10})","$1 $2",["7"],"0$1"]],"0",0,0,0,0,"1[03-79]|[2-9]",[["(?:1[3-79][1-8]|[235689][1-8]\\d)\\d{2,6}",[5,6,7,8,9]],["4946\\d{2,6}|(?:4[0-8]|50)\\d{4,8}",[6,7,8,9,10]],["800\\d{4,6}",[7,8,9]],["[67]00\\d{5,6}",[8,9]],0,0,["20\\d{4,8}|60[12]\\d{5,6}|7(?:099\\d{4,5}|5[03-9]\\d{3,7})|20[2-59]\\d\\d|(?:606|7(?:0[78]|1|3\\d))\\d{7}|(?:10|29|3[09]|70[1-5]\\d)\\d{4,8}"]],"00"],FJ:["679","0(?:0|52)","45\\d{5}|(?:0800\\d|[235-9])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1 $2",["[235-9]|45"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]]],0,0,0,0,0,0,[["603\\d{4}|(?:3[0-5]|6[25-7]|8[58])\\d{5}",[7]],["(?:[279]\\d|45|5[01568]|8[034679])\\d{5}",[7]],["0800\\d{7}",[11]]],"00"],FK:["500","00","[2-7]\\d{4}",[5],0,0,0,0,0,0,0,[["[2-47]\\d{4}"],["[56]\\d{4}"]]],FM:["691","00","(?:[39]\\d\\d|820)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[389]"]]],0,0,0,0,0,0,[["31(?:00[67]|208|309)\\d\\d|(?:3(?:[2357]0[1-9]|602|804|905)|(?:820|9[2-6]\\d)\\d)\\d{3}"],["31(?:00[67]|208|309)\\d\\d|(?:3(?:[2357]0[1-9]|602|804|905)|(?:820|9[2-7]\\d)\\d)\\d{3}"]]],FO:["298","00","[2-9]\\d{5}",[6],[["(\\d{6})","$1",["[2-9]"]]],0,0,"(10(?:01|[12]0|88))",0,0,0,[["(?:20|[34]\\d|8[19])\\d{4}"],["(?:[27][1-9]|5\\d|9[16])\\d{4}"],["80[257-9]\\d{3}"],["90(?:[13-5][15-7]|2[125-7]|9\\d)\\d\\d"],0,0,0,0,["(?:6[0-36]|88)\\d{4}"]]],FR:["33","00","[1-9]\\d{8}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0 $1"],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[1-79]"],"0$1"]],"0",0,0,0,0,0,[["(?:[1-35]\\d|4[1-9])\\d{7}"],["(?:6(?:[0-24-8]\\d|3[0-8]|9[589])|7(?:00|[3-9]\\d))\\d{6}"],["80[0-5]\\d{6}"],["836(?:0[0-36-9]|[1-9]\\d)\\d{4}|8(?:1[2-9]|2[2-47-9]|3[0-57-9]|[569]\\d|8[0-35-9])\\d{6}"],0,0,["80[6-9]\\d{6}"],0,["9\\d{8}"],["8(?:1[01]|2[0156]|4[02]|84)\\d{6}"]]],GA:["241","00","(?:[067]\\d|11)\\d{6}|[2-7]\\d{6}",[7,8],[["(\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-7]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["11|[67]"],"0$1"]],0,0,"0(11\\d{6}|60\\d{6}|61\\d{6}|6[256]\\d{6}|7[467]\\d{6})","$1",0,0,[["[01]1\\d{6}",[8]],["(?:(?:0[2-7]|7[467])\\d|6(?:0[0-4]|10|[256]\\d))\\d{5}|[2-7]\\d{6}"]]],GB:["44","00","[1-357-9]\\d{9}|[18]\\d{8}|8\\d{6}",[7,9,10],[["(\\d{3})(\\d{4})","$1 $2",["800","8001","80011","800111","8001111"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["845","8454","84546","845464"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["800"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["1(?:38|5[23]|69|76|94)","1(?:(?:38|69)7|5(?:24|39)|768|946)","1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["1(?:[2-69][02-9]|[78])"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[25]|7(?:0|6[02-9])","[25]|7(?:0|6(?:[03-9]|2[356]))"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[1389]"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:1(?:3(?:[0-58]\\d\\d|73[0235])|4(?:[0-5]\\d\\d|69[7-9]|70[013579])|(?:(?:5[0-26-9]|[78][0-49])\\d|6(?:[0-4]\\d|50))\\d)|2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\d)\\d\\d|1(?:[0-7]\\d\\d|8(?:[02]\\d|1[0-246-9])))|(?:3(?:0\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\d\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\d{3})\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\d)|76\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\d|7[4-79])|295[5-7]|35[34]\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\d{3}",[9,10]],["7(?:457[0-57-9]|700[01]|911[028])\\d{5}|7(?:[1-3]\\d\\d|4(?:[0-46-9]\\d|5[0-689])|5(?:0[0-8]|[13-9]\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\d|8[02-9]|9[0-689])|8(?:[014-9]\\d|[23][0-8])|9(?:[024-9]\\d|1[02-9]|3[0-689]))\\d{6}",[10]],["80[08]\\d{7}|800\\d{6}|8001111"],["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[2-49]))\\d{7}|845464\\d",[7,10]],["70\\d{8}",[10]],0,["(?:3[0347]|55)\\d{8}",[10]],["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}",[10]],["56\\d{8}",[10]]],0," x"],GD:["1","011","(?:473|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","473$1",0,"473",[["473(?:2(?:3[0-2]|69)|3(?:2[89]|86)|4(?:[06]8|3[5-9]|4[0-49]|5[5-79]|73|90)|63[68]|7(?:58|84)|800|938)\\d{4}"],["473(?:4(?:0[2-79]|1[04-9]|2[0-5]|58)|5(?:2[01]|3[3-8])|901)\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],GE:["995","00","(?:[3-57]\\d\\d|800)\\d{6}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["32"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[57]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[348]"],"0$1"]],"0",0,0,0,0,0,[["(?:3(?:[256]\\d|4[124-9]|7[0-4])|4(?:1\\d|2[2-7]|3[1-79]|4[2-8]|7[239]|9[1-7]))\\d{6}"],["5(?:(?:0555|1(?:[17]77|555))[5-9]|757(?:7[7-9]|8[01]))\\d{3}|5(?:0070|11(?:33|51)|[25]222|3333)[0-4]\\d{3}|5(?:00(?:0\\d|5[05])|11(?:00|[124]\\d|3[01])|5200|75(?:00|[57]5)|8(?:0(?:[01]\\d|2[0-4])|58[89]|8(?:55|88)))\\d{4}|(?:5(?:[14]4|5[0157-9]|68|7[0147-9]|9[1-35-9])|790)\\d{6}"],["800\\d{6}"],0,0,0,0,0,["70[67]\\d{6}"]]],GF:["594","00","(?:[56]94|80\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["594(?:[0239]\\d|1[0-2]|4[03-9]|5[6-9]|6[0-3]|80)\\d{4}"],["694(?:[0-249]\\d|3[0-8])\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976\\d{6}"]]],GG:["44","00","(?:1481|[357-9]\\d{3})\\d{6}|8\\d{6}(?:\\d{2})?",[7,9,10],0,"0",0,"0|([25-9]\\d{5})$","1481$1",0,0,[["1481[25-9]\\d{5}",[10]],["7(?:(?:781|839)\\d|911[17])\\d{5}",[10]],["80[08]\\d{7}|800\\d{6}|8001111"],["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[0-3]))\\d{7}|845464\\d",[7,10]],["70\\d{8}",[10]],0,["(?:3[0347]|55)\\d{8}",[10]],["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}",[10]],["56\\d{8}",[10]]]],GH:["233","00","(?:[235]\\d{3}|800)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[235]"],"0$1"]],"0",0,0,0,0,0,[["3082[0-5]\\d{4}|3(?:0(?:[237]\\d|8[01])|[167](?:2[0-6]|7\\d|80)|2(?:2[0-5]|7\\d|80)|3(?:2[0-3]|7\\d|80)|4(?:2[013-9]|3[01]|7\\d|80)|5(?:2[0-7]|7\\d|80)|8(?:2[0-2]|7\\d|80)|9(?:[28]0|7\\d))\\d{5}",[9]],["(?:2(?:[0346-9]\\d|5[67])|5(?:[0457]\\d|6[01]|9[1-9]))\\d{6}",[9]],["800\\d{5}",[8]]]],GI:["350","00","(?:[25]\\d\\d|606)\\d{5}",[8],[["(\\d{3})(\\d{5})","$1 $2",["2"]]],0,0,0,0,0,0,[["21(?:6[24-7]\\d|90[0-2])\\d{3}|2(?:00|2[25])\\d{5}"],["(?:5[146-8]\\d|606)\\d{5}"]]],GL:["299","00","(?:19|[2-689]\\d|70)\\d{4}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["19|[2-9]"]]],0,0,0,0,0,0,[["(?:19|3[1-7]|6[14689]|70|8[14-79]|9\\d)\\d{4}"],["[245]\\d{5}"],["80\\d{4}"],0,0,0,0,0,["3[89]\\d{4}"]]],GM:["220","00","[2-9]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]],0,0,0,0,0,0,[["(?:4(?:[23]\\d\\d|4(?:1[024679]|[6-9]\\d))|5(?:5(?:3\\d|4[0-7])|6[67]\\d|7(?:1[04]|2[035]|3[58]|48))|8\\d{3})\\d{3}"],["(?:[23679]\\d|5[0-389])\\d{5}"]]],GN:["224","00","722\\d{6}|(?:3|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["3"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[67]"]]],0,0,0,0,0,0,[["3(?:0(?:24|3[12]|4[1-35-7]|5[13]|6[189]|[78]1|9[1478])|1\\d\\d)\\d{4}",[8]],["6[0-356]\\d{7}",[9]],0,0,0,0,0,0,["722\\d{6}",[9]]]],GP:["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["590(?:0[1-68]|[14][0-24-9]|2[0-68]|3[1289]|5[3-579]|6[0-289]|7[08]|8[0-689]|9\\d)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],GQ:["240","00","222\\d{6}|(?:3\\d|55|[89]0)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235]"]],["(\\d{3})(\\d{6})","$1 $2",["[89]"]]],0,0,0,0,0,0,[["33[0-24-9]\\d[46]\\d{4}|3(?:33|5\\d)\\d[7-9]\\d{4}"],["(?:222|55\\d)\\d{6}"],["80\\d[1-9]\\d{5}"],["90\\d[1-9]\\d{5}"]]],GR:["30","00","5005000\\d{3}|8\\d{9,11}|(?:[269]\\d|70)\\d{8}",[10,11,12],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["21|7"]],["(\\d{4})(\\d{6})","$1 $2",["2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2689]"]],["(\\d{3})(\\d{3,4})(\\d{5})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["2(?:1\\d\\d|2(?:2[1-46-9]|[36][1-8]|4[1-7]|5[1-4]|7[1-5]|[89][1-9])|3(?:1\\d|2[1-57]|[35][1-3]|4[13]|7[1-7]|8[124-6]|9[1-79])|4(?:1\\d|2[1-8]|3[1-4]|4[13-5]|6[1-578]|9[1-5])|5(?:1\\d|[29][1-4]|3[1-5]|4[124]|5[1-6])|6(?:1\\d|[269][1-6]|3[1245]|4[1-7]|5[13-9]|7[14]|8[1-5])|7(?:1\\d|2[1-5]|3[1-6]|4[1-7]|5[1-57]|6[135]|9[125-7])|8(?:1\\d|2[1-5]|[34][1-4]|9[1-57]))\\d{6}",[10]],["68[57-9]\\d{7}|(?:69|94)\\d{8}",[10]],["800\\d{7,9}"],["90[19]\\d{7}",[10]],["70\\d{8}",[10]],0,["5005000\\d{3}",[10]],0,0,["8(?:0[16]|12|[27]5|50)\\d{7}",[10]]]],GT:["502","00","(?:1\\d{3}|[2-7])\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[["[267][2-9]\\d{6}",[8]],["[3-5]\\d{7}",[8]],["18[01]\\d{8}",[11]],["19\\d{9}",[11]]]],GU:["1","011","(?:[58]\\d\\d|671|900)\\d{7}",[10],0,"1",0,"1|([3-9]\\d{6})$","671$1",0,"671",[["671(?:3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[0236-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[0479]7|2[0167]|3[45]|8[7-9])|8(?:[2-57-9]8|6[48])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[78]))\\d{4}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],GW:["245","00","[49]\\d{8}|4\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["40"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"]]],0,0,0,0,0,0,[["443\\d{6}",[9]],["9(?:5\\d|6[569]|77)\\d{6}",[9]],0,0,0,0,0,0,["40\\d{5}",[7]]]],GY:["592","001","9008\\d{3}|(?:[2-467]\\d\\d|862)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-46-9]"]]],0,0,0,0,0,0,[["(?:2(?:1[6-9]|2[0-35-9]|3[1-4]|5[3-9]|6\\d|7[0-24-79])|3(?:2[25-9]|3\\d)|4(?:4[0-24]|5[56])|77[1-57])\\d{4}"],["(?:6\\d\\d|70[015-7])\\d{4}"],["(?:289|862)\\d{4}"],["9008\\d{3}"]]],HK:["852","00(?:30|5[09]|[126-9]?)","8[0-46-9]\\d{6,7}|9\\d{4,7}|(?:[2-7]|9\\d{3})\\d{7}",[5,6,7,8,9,11],[["(\\d{3})(\\d{2,5})","$1 $2",["900","9003"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[1-4]|9(?:0[1-9]|[1-8])"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]],["(\\d{3})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]],0,0,0,0,0,0,[["(?:2(?:[13-9]\\d|2[013-9])\\d|3(?:(?:[1569][0-24-9]|4[0-246-9]|7[0-24-69])\\d|8(?:[45][0-8]|6[01]|9\\d))|58(?:0[1-8]|1[2-9]))\\d{4}",[8]],["(?:4(?:44[5-9]|6(?:0[0-7]|1[0-6]|4[0-57-9]|6[0-4]|7[0-8]))|573[0-6]|6(?:26[013-8]|66[0-3])|70(?:7[1-5]|8[0-4])|848[015-9]|9(?:29[013-9]|59[0-4]))\\d{4}|(?:4(?:4[01]|6[2358])|5(?:[1-59][0-46-9]|6[0-4689]|7[0-246-9])|6(?:0[1-9]|[13-59]\\d|[268][0-57-9]|7[0-79])|84[09]|9(?:0[1-9]|1[02-9]|[2358][0-8]|[467]\\d))\\d{5}",[8]],["800\\d{6}",[9]],["900(?:[0-24-9]\\d{7}|3\\d{1,4})",[5,6,7,8,11]],["8(?:1[0-4679]\\d|2(?:[0-36]\\d|7[0-4])|3(?:[034]\\d|2[09]|70))\\d{4}",[8]],0,["30(?:0[1-9]|[15-7]\\d|2[047]|89)\\d{4}",[8]],["7(?:1(?:0[0-38]|1[0-3679]|3[013]|69|9[0136])|2(?:[02389]\\d|1[18]|7[27-9])|3(?:[0-38]\\d|7[0-369]|9[2357-9])|47\\d|5(?:[178]\\d|5[0-5])|6(?:0[0-7]|2[236-9]|[35]\\d)|7(?:[27]\\d|8[7-9])|8(?:[23689]\\d|7[1-9])|9(?:[025]\\d|6[0-246-8]|7[0-36-9]|8[238]))\\d{4}",[8]]],"00"],HN:["504","00","8\\d{10}|[237-9]\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1-$2",["[237-9]"]]],0,0,0,0,0,0,[["2(?:2(?:0[0-359]|1[1-367]|[23]\\d|4[03-6]|5[57]|6[245]|7[0135689]|8[01346-9]|9[0-2])|4(?:0[78]|2[3-59]|3[13-9]|4[0-68]|5[1-35])|5(?:0[7-9]|16|4[03-5]|5\\d|6[014-6]|7[04]|80)|6(?:[056]\\d|17|2[067]|3[04]|4[0-378]|[78][0-8]|9[01])|7(?:6[46-9]|7[02-9]|8[034]|91)|8(?:79|8[0-357-9]|9[1-57-9]))\\d{4}",[8]],["[37-9]\\d{7}",[8]],["8002\\d{7}",[11]]]],HR:["385","00","(?:[24-69]\\d|3[0-79])\\d{7}|80\\d{5,7}|[1-79]\\d{7}|6\\d{5,6}",[6,7,8,9],[["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["6[01]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{4})(\\d{3})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-5]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"]],"0",0,0,0,0,0,[["1\\d{7}|(?:2[0-3]|3[1-5]|4[02-47-9]|5[1-3])\\d{6,7}",[8,9]],["98\\d{6,7}|975(?:1\\d|77|9[67])\\d{4}|9(?:0[1-9]|[1259]\\d|7[0679])\\d{6}",[8,9]],["80[01]\\d{4,6}",[7,8,9]],["6[01459]\\d{6}|6[01]\\d{4,5}",[6,7,8]],["7[45]\\d{6}",[8]],0,["62\\d{6,7}|72\\d{6}",[8,9]]]],HT:["509","00","[2-489]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[2-489]"]]],0,0,0,0,0,0,[["2(?:2\\d|5[1-5]|81|9[149])\\d{5}"],["[34]\\d{7}"],["8\\d{7}"],0,0,0,0,0,["9(?:[67][0-4]|8[0-3589]|9\\d)\\d{5}"]]],HU:["36","00","[235-7]\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"06 $1"]],"06",0,0,0,0,0,[["(?:1\\d|[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6[23689]|8[2-57-9]|9[2-69])\\d{6}",[8]],["(?:[257]0|3[01])\\d{7}",[9]],["(?:[48]0\\d|680[29])\\d{5}"],["9[01]\\d{6}",[8]],0,0,["38\\d{7}",[9]],0,["21\\d{7}",[9]]]],ID:["62","00[89]","(?:(?:00[1-9]|8\\d)\\d{4}|[1-36])\\d{6}|00\\d{10}|[1-9]\\d{8,10}|[2-9]\\d{7}",[7,8,9,10,11,12,13],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["15"]],["(\\d{2})(\\d{5,9})","$1 $2",["2[124]|[36]1"],"(0$1)"],["(\\d{3})(\\d{5,7})","$1 $2",["800"],"0$1"],["(\\d{3})(\\d{5,8})","$1 $2",["[2-79]"],"(0$1)"],["(\\d{3})(\\d{3,4})(\\d{3})","$1-$2-$3",["8[1-35-9]"],"0$1"],["(\\d{3})(\\d{6,8})","$1 $2",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["804"],"0$1"],["(\\d{3})(\\d)(\\d{3})(\\d{3})","$1 $2 $3 $4",["80"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1-$2-$3",["8"],"0$1"]],"0",0,0,0,0,0,[["2[124]\\d{7,8}|619\\d{8}|2(?:1(?:14|500)|2\\d{3})\\d{3}|61\\d{5,8}|(?:2(?:[35][1-4]|6[0-8]|7[1-6]|8\\d|9[1-8])|3(?:1|[25][1-8]|3[1-68]|4[1-3]|6[1-3568]|7[0-469]|8\\d)|4(?:0[1-589]|1[01347-9]|2[0-36-8]|3[0-24-68]|43|5[1-378]|6[1-5]|7[134]|8[1245])|5(?:1[1-35-9]|2[25-8]|3[124-9]|4[1-3589]|5[1-46]|6[1-8])|6(?:[25]\\d|3[1-69]|4[1-6])|7(?:02|[125][1-9]|[36]\\d|4[1-8]|7[0-36-9])|9(?:0[12]|1[013-8]|2[0-479]|5[125-8]|6[23679]|7[159]|8[01346]))\\d{5,8}",[7,8,9,10,11]],["8[1-35-9]\\d{7,10}",[9,10,11,12]],["00[17]803\\d{7}|(?:177\\d|800)\\d{5,7}|001803\\d{6}",[8,9,10,11,12,13]],["809\\d{7}",[10]],0,0,["(?:1500|8071\\d{3})\\d{3}",[7,10]],0,0,["804\\d{7}",[10]]]],IE:["353","00","(?:1\\d|[2569])\\d{6,8}|4\\d{6,9}|7\\d{8}|8\\d{8,9}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["2[24-9]|47|58|6[237-9]|9[35-9]"],"(0$1)"],["(\\d{3})(\\d{5})","$1 $2",["[45]0"],"(0$1)"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["1"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2569]|4[1-69]|7[14]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["81"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[78]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["4"],"(0$1)"],["(\\d{2})(\\d)(\\d{3})(\\d{4})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["(?:1\\d|21)\\d{6,7}|(?:2[24-9]|4(?:0[24]|5\\d|7)|5(?:0[45]|1\\d|8)|6(?:1\\d|[237-9])|9(?:1\\d|[35-9]))\\d{5}|(?:23|4(?:[1-469]|8\\d)|5[23679]|6[4-6]|7[14]|9[04])\\d{7}"],["8(?:22|[35-9]\\d)\\d{6}",[9]],["1800\\d{6}",[10]],["15(?:1[2-8]|[2-8]0|9[089])\\d{6}",[10]],["700\\d{6}",[9]],0,["818\\d{6}",[9]],0,["76\\d{7}",[9]],["18[59]0\\d{6}",[10]]]],IL:["972","0(?:0|1[2-9])","1\\d{6}(?:\\d{3,5})?|[57]\\d{8}|[1-489]\\d{7}",[7,8,9,10,11,12],[["(\\d{4})(\\d{3})","$1-$2",["125"]],["(\\d{4})(\\d{2})(\\d{2})","$1-$2-$3",["121"]],["(\\d)(\\d{3})(\\d{4})","$1-$2-$3",["[2-489]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1-$2-$3",["12"]],["(\\d{4})(\\d{6})","$1-$2",["159"]],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3-$4",["1[7-9]"]],["(\\d{3})(\\d{1,2})(\\d{3})(\\d{4})","$1-$2 $3-$4",["15"]]],"0",0,0,0,0,0,[["153\\d{8,9}|29[1-9]\\d{5}|(?:2[0-8]|[3489]\\d)\\d{6}",[8,11,12]],["5(?:(?:[02368]\\d|[19][2-9]|4[1-9])\\d|5(?:01|1[79]|2[2-9]|3[0-3]|4[34]|5[015689]|6[6-8]|7[0-267]|8[7-9]|9[1-9]))\\d{5}",[9]],["1(?:255|80[019]\\d{3})\\d{3}",[7,10]],["1212\\d{4}|1(?:200|9(?:0[0-2]|19))\\d{6}",[8,10]],0,0,["1599\\d{6}",[10]],0,["7(?:380|8(?:33|55|77|81))\\d{5}|7(?:18|2[23]|3[237]|47|6[258]|7\\d|82|9[2-9])\\d{6}",[9]],["1700\\d{6}",[10]]]],IM:["44","00","1624\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([25-8]\\d{5})$","1624$1",0,"74576|(?:16|7[56])24",[["1624(?:230|[5-8]\\d\\d)\\d{3}"],["76245[06]\\d{4}|7(?:4576|[59]24\\d|624[0-4689])\\d{5}"],["808162\\d{4}"],["8(?:440[49]06|72299\\d)\\d{3}|(?:8(?:45|70)|90[0167])624\\d{4}"],["70\\d{8}"],0,["3440[49]06\\d{3}|(?:3(?:08162|3\\d{4}|45624|7(?:0624|2299))|55\\d{4})\\d{4}"],0,["56\\d{8}"]]],IN:["91","00","(?:000800|[2-9]\\d\\d)\\d{7}|1\\d{7,12}",[8,9,10,11,12,13],[["(\\d{8})","$1",["5(?:0|2[23]|3[03]|[67]1|88)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)"],0,1],["(\\d{4})(\\d{4,5})","$1 $2",["180","1800"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["140"],0,1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["11|2[02]|33|4[04]|79[1-7]|80[2-46]","11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])","11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]"],"0$1",1],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807","1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]","1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\d|7(?:1(?:[013-8]\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\d|5[0-367])|70[13-7]))[2-7]"],"0$1",1],["(\\d{5})(\\d{5})","$1 $2",["[6-9]"],"0$1",1],["(\\d{4})(\\d{2,4})(\\d{4})","$1 $2 $3",["1(?:6|8[06])","1(?:6|8[06]0)"],0,1],["(\\d{4})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["18"],0,1]],"0",0,0,0,0,0,[["2717(?:[2-7]\\d|95)\\d{4}|(?:271[0-689]|782[0-6])[2-7]\\d{5}|(?:170[24]|2(?:(?:[02][2-79]|90)\\d|80[13468])|(?:3(?:23|80)|683|79[1-7])\\d|4(?:20[24]|72[2-8])|552[1-7])\\d{6}|(?:11|33|4[04]|80)[2-7]\\d{7}|(?:342|674|788)(?:[0189][2-7]|[2-7]\\d)\\d{5}|(?:1(?:2[0-249]|3[0-25]|4[145]|[59][14]|6[014]|7[1257]|8[01346])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])|3(?:26|4[13]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[014-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91))[2-7]\\d{6}|(?:1(?:2[35-8]|3[346-9]|4[236-9]|[59][0235-9]|6[235-9]|7[34689]|8[257-9])|2(?:1[134689]|3[24-8]|4[2-8]|5[25689]|6[2-4679]|7[3-79]|8[2-479]|9[235-9])|3(?:01|1[79]|2[1245]|4[5-8]|5[125689]|6[235-7]|7[157-9]|8[2-46-8])|4(?:1[14578]|2[5689]|3[2-467]|5[4-7]|6[35]|73|8[2689]|9[2389])|5(?:[16][146-9]|2[14-8]|3[1346]|4[14-69]|5[46]|7[2-4]|8[2-8]|9[246])|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])|7(?:1[013-9]|2[0235-9]|3[2679]|4[1-35689]|5[2-46-9]|[67][02-9]|8[013-7]|9[089])|8(?:1[1357-9]|2[235-8]|3[03-57-9]|4[0-24-9]|5\\d|6[2457-9]|7[1-6]|8[1256]|9[2-4]))\\d[2-7]\\d{5}",[10]],["(?:61279|7(?:887[02-9]|9(?:313|79[07-9]))|8(?:079[04-9]|(?:84|91)7[02-8]))\\d{5}|(?:6(?:12|[2-47]1|5[17]|6[13]|80)[0189]|7(?:1(?:2[0189]|9[0-5])|2(?:[14][017-9]|8[0-59])|3(?:2[5-8]|[34][017-9]|9[016-9])|4(?:1[015-9]|[29][89]|39|8[389])|5(?:[15][017-9]|2[04-9]|9[7-9])|6(?:0[0-47]|1[0-257-9]|2[0-4]|3[19]|5[4589])|70[0289]|88[089]|97[02-8])|8(?:0(?:6[67]|7[02-8])|70[017-9]|84[01489]|91[0-289]))\\d{6}|(?:7(?:31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[0189]\\d|7[02-8])\\d{5}|(?:6(?:[09]\\d|1[04679]|2[03689]|3[05-9]|4[0489]|50|6[069]|7[07]|8[7-9])|7(?:0\\d|2[0235-79]|3[05-8]|40|5[0346-8]|6[6-9]|7[1-9]|8[0-79]|9[089])|8(?:0[01589]|1[0-57-9]|2[235-9]|3[03-57-9]|[45]\\d|6[02457-9]|7[1-69]|8[0-25-9]|9[02-9])|9\\d\\d)\\d{7}|(?:6(?:(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|8[124-6])\\d|7(?:[235689]\\d|4[0189]))|7(?:1(?:[013-8]\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-5])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\d|5[0-367])|70[13-7]|881))[0189]\\d{5}",[10]],["000800\\d{7}|1(?:600\\d{6}|80(?:0\\d{4,9}|3\\d{9}))"],["186[12]\\d{9}",[13]],0,0,["140\\d{7}",[10]],0,0,["1860\\d{7}",[11]]]],IO:["246","00","3\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["3"]]],0,0,0,0,0,0,[["37\\d{5}"],["38\\d{5}"]]],IQ:["964","00","(?:1|7\\d\\d)\\d{7}|[2-6]\\d{7,8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-6]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[["1\\d{7}|(?:2[13-5]|3[02367]|4[023]|5[03]|6[026])\\d{6,7}",[8,9]],["7[3-9]\\d{8}",[10]]]],IR:["98","00","[1-9]\\d{9}|(?:[1-8]\\d\\d|9)\\d{3,4}",[4,5,6,7,10],[["(\\d{4,5})","$1",["96"],"0$1"],["(\\d{2})(\\d{4,5})","$1 $2",["(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[1-8]"],"0$1"]],"0",0,0,0,0,0,[["(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])(?:[03-57]\\d{7}|[16]\\d{3}(?:\\d{4})?|[289]\\d{3}(?:\\d(?:\\d{3})?)?)|94(?:000[09]|2(?:121|[2689]0\\d)|30[0-2]\\d|4(?:111|40\\d))\\d{4}",[6,7,10]],["9(?:(?:0(?:[0-35]\\d|4[4-6])|(?:[13]\\d|2[0-3])\\d)\\d|9(?:[0-46]\\d\\d|5[15]0|8(?:1\\d|88)|9(?:0[0-3]|[19]\\d|21|77|8[7-9])))\\d{5}",[10]],0,0,0,0,["96(?:0[12]|2[16-8]|3(?:08|[14]5|[23]|66)|4(?:0|80)|5[01]|6[89]|86|9[19])",[4,5]]]],IS:["354","00|1(?:0(?:01|[12]0)|100)","(?:38\\d|[4-9])\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["[4-9]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["3"]]],0,0,0,0,0,0,[["(?:4(?:1[0-24-69]|2[0-7]|[37][0-8]|4[0-24589]|5[0-68]|6\\d|8[0-36-8])|5(?:05|[156]\\d|2[02578]|3[0-579]|4[03-7]|7[0-2578]|8[0-35-9]|9[013-689])|872)\\d{4}",[7]],["(?:38[589]\\d\\d|6(?:1[1-8]|2[0-6]|3[026-9]|4[014679]|5[0159]|6[0-69]|70|8[06-8]|9\\d)|7(?:5[057]|[6-9]\\d)|8(?:2[0-59]|[3-69]\\d|8[238]))\\d{4}"],["80[0-8]\\d{4}",[7]],["90(?:0\\d|1[5-79]|2[015-79]|3[135-79]|4[125-7]|5[25-79]|7[1-37]|8[0-35-7])\\d{3}",[7]],0,0,["809\\d{4}",[7]],0,["49[0-24-79]\\d{4}",[7]]],"00"],IT:["39","00","0\\d{5,10}|1\\d{8,10}|3(?:[0-8]\\d{7,10}|9\\d{7,8})|(?:55|70)\\d{8}|8\\d{5}(?:\\d{2,4})?",[6,7,8,9,10,11],[["(\\d{2})(\\d{4,6})","$1 $2",["0[26]"]],["(\\d{3})(\\d{3,6})","$1 $2",["0[13-57-9][0159]|8(?:03|4[17]|9[2-5])","0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))"]],["(\\d{4})(\\d{2,6})","$1 $2",["0(?:[13-579][2-46-8]|8[236-8])"]],["(\\d{4})(\\d{4})","$1 $2",["894"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[26]|5"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["1(?:44|[679])|[378]"]],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[13-57-9][0159]|14"]],["(\\d{2})(\\d{4})(\\d{5})","$1 $2 $3",["0[26]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["3"]]],0,0,0,0,0,0,[["0669[0-79]\\d{1,6}|0(?:1(?:[0159]\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\d\\d|3(?:[0159]\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\d|6[0-8])|7(?:[0159]\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\d{2,7}"],["3[1-9]\\d{8}|3[2-9]\\d{7}",[9,10]],["80(?:0\\d{3}|3)\\d{3}",[6,9]],["(?:0878\\d{3}|89(?:2\\d|3[04]|4(?:[0-4]|[5-9]\\d\\d)|5[0-4]))\\d\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\d{6}",[6,8,9,10]],["1(?:78\\d|99)\\d{6}",[9,10]],0,0,0,["55\\d{8}",[10]],["84(?:[08]\\d{3}|[17])\\d{3}",[6,9]]]],JE:["44","00","1534\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([0-24-8]\\d{5})$","1534$1",0,0,[["1534[0-24-8]\\d{5}"],["7(?:(?:(?:50|82)9|937)\\d|7(?:00[378]|97[7-9]))\\d{5}"],["80(?:07(?:35|81)|8901)\\d{4}"],["(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\d{4}"],["701511\\d{4}"],0,["(?:3(?:0(?:07(?:35|81)|8901)|3\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\d{4})\\d{4}"],["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}"],["56\\d{8}"]]],JM:["1","011","(?:[58]\\d\\d|658|900)\\d{7}",[10],0,"1",0,0,0,0,"658|876",[["8766060\\d{3}|(?:658(?:2(?:[0-8]\\d|9[0-46-9])|[3-9]\\d\\d)|876(?:52[35]|6(?:0[1-3579]|1[02357-9]|[23]\\d|40|5[06]|6[2-589]|7[025-7]|8[04]|9[4-9])|7(?:0[2-689]|[1-6]\\d|8[056]|9[45])|9(?:0[1-8]|1[02378]|[2-8]\\d|9[2-468])))\\d{4}"],["(?:658295|876(?:2(?:0[1-9]|[13-9]\\d|2[013-9])|[348]\\d\\d|5(?:0[1-9]|[1-9]\\d)|6(?:4[89]|6[67])|7(?:0[07]|7\\d|8[1-47-9]|9[0-36-9])|9(?:[01]9|9[0579])))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],JO:["962","00","(?:(?:[2689]|7\\d)\\d|32|53)\\d{6}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2356]|87"],"(0$1)"],["(\\d{3})(\\d{5,6})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["70"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[["87(?:000|90[01])\\d{3}|(?:2(?:6(?:2[0-35-9]|3[0-578]|4[24-7]|5[0-24-8]|[6-8][023]|9[0-3])|7(?:0[1-79]|10|2[014-7]|3[0-689]|4[019]|5[0-3578]))|32(?:0[1-69]|1[1-35-7]|2[024-7]|3\\d|4[0-3]|[5-7][023])|53(?:0[0-3]|[13][023]|2[0-59]|49|5[0-35-9]|6[15]|7[45]|8[1-6]|9[0-36-9])|6(?:2(?:[05]0|22)|3(?:00|33)|4(?:0[0-25]|1[2-7]|2[0569]|[38][07-9]|4[025689]|6[0-589]|7\\d|9[0-2])|5(?:[01][056]|2[034]|3[0-57-9]|4[178]|5[0-69]|6[0-35-9]|7[1-379]|8[0-68]|9[0239]))|87(?:20|7[078]|99))\\d{4}",[8]],["7(?:[78][0-25-9]|9\\d)\\d{6}",[9]],["80\\d{6}",[8]],["9\\d{7}",[8]],["70\\d{7}",[9]],0,["8(?:10|8\\d)\\d{5}",[8]],["74(?:66|77)\\d{5}",[9]],0,["85\\d{6}",[8]]]],JP:["81","010","00[1-9]\\d{6,14}|[257-9]\\d{9}|(?:00|[1-9]\\d\\d)\\d{6}",[8,9,10,11,12,13,14,15,16,17],[["(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3",["(?:12|57|99)0"],"0$1"],["(\\d{4})(\\d)(\\d{4})","$1-$2-$3",["1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:80|9[16])","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2-$3",["[36]|4(?:2[09]|7[01])","[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]"],"0$1"],["(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3",["[14]|[289][2-9]|5[3-9]|7[2-4679]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["800"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[257-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:1[235-8]|2[3-6]|3[3-9]|4[2-6]|[58][2-8]|6[2-7]|7[2-9]|9[1-9])|(?:2[2-9]|[36][1-9])\\d|4(?:[2-578]\\d|6[02-8]|9[2-59])|5(?:[2-589]\\d|6[1-9]|7[2-8])|7(?:[25-9]\\d|3[4-9]|4[02-9])|8(?:[2679]\\d|3[2-9]|4[5-9]|5[1-9]|8[03-9])|9(?:[2-58]\\d|[679][1-9]))\\d{6}",[9]],["[7-9]0[1-9]\\d{7}",[10]],["00777(?:[01]|5\\d)\\d\\d|(?:00(?:7778|882[1245])|(?:120|800\\d)\\d\\d)\\d{4}|00(?:37|66|78)\\d{6,13}"],["990\\d{6}",[9]],["60\\d{7}",[9]],0,["570\\d{6}",[9]],["20\\d{8}",[10]],["50[1-9]\\d{7}",[10]]]],KE:["254","000","(?:[17]\\d\\d|900)\\d{6}|(?:2|80)0\\d{6,7}|[4-6]\\d{6,8}",[7,8,9,10],[["(\\d{2})(\\d{5,7})","$1 $2",["[24-6]"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[17]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,[["(?:4[245]|5[1-79]|6[01457-9])\\d{5,7}|(?:4[136]|5[08]|62)\\d{7}|(?:[24]0|66)\\d{6,7}",[7,8,9]],["(?:1(?:0[0-6]|1[0-5]|2[014]|30)|7\\d\\d)\\d{6}",[9]],["800[2-8]\\d{5,6}",[9,10]],["900[02-9]\\d{5}",[9]]]],KG:["996","00","8\\d{9}|(?:[235-8]\\d|99)\\d{7}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["3(?:1[346]|[24-79])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235-79]|88"],"0$1"],["(\\d{3})(\\d{3})(\\d)(\\d{2,3})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["312(?:5[0-79]\\d|9(?:[0-689]\\d|7[0-24-9]))\\d{3}|(?:3(?:1(?:2[0-46-8]|3[1-9]|47|[56]\\d)|2(?:22|3[0-479]|6[0-7])|4(?:22|5[6-9]|6\\d)|5(?:22|3[4-7]|59|6\\d)|6(?:22|5[35-7]|6\\d)|7(?:22|3[468]|4[1-9]|59|[67]\\d)|9(?:22|4[1-8]|6\\d))|6(?:09|12|2[2-4])\\d)\\d{5}",[9]],["312(?:58\\d|973)\\d{3}|(?:2(?:0[0-35]|2\\d)|5[0-24-7]\\d|7(?:[07]\\d|55)|88[08]|99[05-9])\\d{6}",[9]],["800\\d{6,7}"]]],KH:["855","00[14-9]","1\\d{9}|[1-9]\\d{7,8}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[["23(?:4(?:[2-4]|[56]\\d)|[568]\\d\\d)\\d{4}|23[236-9]\\d{5}|(?:2[4-6]|3[2-6]|4[2-4]|[5-7][2-5])(?:(?:[237-9]|4[56]|5\\d)\\d{5}|6\\d{5,6})",[8,9]],["(?:(?:1[28]|3[18]|9[67])\\d|6[016-9]|7(?:[07-9]|[16]\\d)|8(?:[013-79]|8\\d))\\d{6}|(?:1\\d|9[0-57-9])\\d{6}|(?:2[3-6]|3[2-6]|4[2-4]|[5-7][2-5])48\\d{5}",[8,9]],["1800(?:1\\d|2[019])\\d{4}",[10]],["1900(?:1\\d|2[09])\\d{4}",[10]]]],KI:["686","00","(?:[37]\\d|6[0-79])\\d{6}|(?:[2-48]\\d|50)\\d{3}",[5,8],0,"0",0,0,0,0,0,[["(?:[24]\\d|3[1-9]|50|65(?:02[12]|12[56]|22[89]|[3-5]00)|7(?:27\\d\\d|3100|5(?:02[12]|12[56]|22[89]|[34](?:00|81)|500))|8[0-5])\\d{3}"],["(?:63\\d{3}|73(?:0[0-5]\\d|140))\\d{3}|[67]200[01]\\d{3}",[8]],0,0,0,0,0,0,["30(?:0[01]\\d\\d|12(?:11|20))\\d\\d",[8]]]],KM:["269","00","[3478]\\d{6}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[3478]"]]],0,0,0,0,0,0,[["7[4-7]\\d{5}"],["[34]\\d{6}"],0,["8\\d{6}"]]],KN:["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","869$1",0,"869",[["869(?:2(?:29|36)|302|4(?:6[015-9]|70)|56[5-7])\\d{4}"],["869(?:48[89]|55[6-8]|66\\d|76[02-7])\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],KP:["850","00|99","85\\d{6}|(?:19\\d|[2-7])\\d{7}",[8,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"]],"0",0,0,0,0,0,[["(?:(?:195|2)\\d|3[19]|4[159]|5[37]|6[17]|7[39]|85)\\d{6}"],["19[1-3]\\d{7}",[10]]]],KR:["82","00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))","00[1-9]\\d{8,11}|(?:[12]|5\\d{3})\\d{7}|[13-6]\\d{9}|(?:[1-6]\\d|80)\\d{7}|[3-6]\\d{4,5}|(?:00|7)0\\d{8}",[5,6,8,9,10,11,12,13,14],[["(\\d{2})(\\d{3,4})","$1-$2",["(?:3[1-3]|[46][1-4]|5[1-5])1"],"0$1"],["(\\d{4})(\\d{4})","$1-$2",["1"]],["(\\d)(\\d{3,4})(\\d{4})","$1-$2-$3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60|8"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1-$2-$3",["[1346]|5[1-5]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{2})(\\d{5})(\\d{4})","$1-$2-$3",["5"],"0$1"]],"0",0,"0(8(?:[1-46-8]|5\\d\\d))?",0,0,0,[["(?:2|3[1-3]|[46][1-4]|5[1-5])[1-9]\\d{6,7}|(?:3[1-3]|[46][1-4]|5[1-5])1\\d{2,3}",[5,6,8,9,10]],["1(?:05(?:[0-8]\\d|9[0-6])|22[13]\\d)\\d{4,5}|1(?:0[1-46-9]|[16-9]\\d|2[013-9])\\d{6,7}",[9,10]],["00(?:308\\d{6,7}|798\\d{7,9})|(?:00368|80)\\d{7}",[9,11,12,13,14]],["60[2-9]\\d{6}",[9]],["50\\d{8,9}",[10,11]],0,["1(?:5(?:22|33|44|66|77|88|99)|6(?:[07]0|44|6[168]|88)|8(?:00|33|55|77|99))\\d{4}",[8]],["15\\d{7,8}",[9,10]],["70\\d{8}",[10]]]],KW:["965","00","18\\d{5}|(?:[2569]\\d|41)\\d{6}",[7,8],[["(\\d{4})(\\d{3,4})","$1 $2",["[169]|2(?:[235]|4[1-35-9])|52"]],["(\\d{3})(\\d{5})","$1 $2",["[245]"]]],0,0,0,0,0,0,[["2(?:[23]\\d\\d|4(?:[1-35-9]\\d|44)|5(?:0[034]|[2-46]\\d|5[1-3]|7[1-7]))\\d{4}",[8]],["(?:41\\d\\d|5(?:(?:[05]\\d|1[0-7]|6[56])\\d|2(?:22|5[25])|7(?:55|77)|88[58])|6(?:(?:0[034679]|5[015-9]|6\\d)\\d|1(?:00|11|66)|222|3[36]3|444|7(?:0[013-9]|[67]\\d)|888|9(?:[069]\\d|3[039]))|9(?:(?:0[09]|22|[4679]\\d|8[057-9])\\d|1(?:1[01]|99)|3(?:00|33)|5(?:00|5\\d)))\\d{4}",[8]],["18\\d{5}",[7]]]],KY:["1","011","(?:345|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","345$1",0,"345",[["345(?:2(?:22|3[23]|44|66)|333|444|6(?:23|38|40)|7(?:30|4[35-79]|6[6-9]|77)|8(?:00|1[45]|[48]8)|9(?:14|4[035-9]))\\d{4}"],["345(?:32[1-9]|42[0-4]|5(?:1[67]|2[5-79]|4[6-9]|50|76)|649|82[56]|9(?:1[679]|2[2-9]|3[06-9]|90))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["(?:345976|900[2-9]\\d\\d)\\d{4}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,0,["345849\\d{4}"]]],KZ:["7","810","(?:33622|8\\d{8})\\d{5}|[78]\\d{9}",[10,14],0,"8",0,0,0,0,"33|7",[["(?:33622|7(?:1(?:0(?:[23]\\d|4[0-3]|59|63)|1(?:[23]\\d|4[0-79]|59)|2(?:[23]\\d|59)|3(?:2\\d|3[0-79]|4[0-35-9]|59)|4(?:[24]\\d|3[013-9]|5[1-9])|5(?:2\\d|3[1-9]|4[0-7]|59)|6(?:[2-4]\\d|5[19]|61)|72\\d|8(?:[27]\\d|3[1-46-9]|4[0-5]))|2(?:1(?:[23]\\d|4[46-9]|5[3469])|2(?:2\\d|3[0679]|46|5[12679])|3(?:[2-4]\\d|5[139])|4(?:2\\d|3[1-35-9]|59)|5(?:[23]\\d|4[0-246-8]|59|61)|6(?:2\\d|3[1-9]|4[0-4]|59)|7(?:[2379]\\d|40|5[279])|8(?:[23]\\d|4[0-3]|59)|9(?:2\\d|3[124578]|59))))\\d{5}",[10]],["7(?:0[0-25-8]|47|6[0-4]|7[15-8]|85)\\d{7}",[10]],["8(?:00|108\\d{3})\\d{7}"],["809\\d{7}",[10]],["808\\d{7}",[10]],0,0,0,["751\\d{7}",[10]]],"8~10"],LA:["856","00","[23]\\d{9}|3\\d{8}|(?:[235-8]\\d|41)\\d{6}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2[13]|3[14]|[4-8]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["30[013-9]"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[23]"],"0$1"]],"0",0,0,0,0,0,[["(?:2[13]|[35-7][14]|41|8[1468])\\d{6}",[8]],["(?:20(?:[239]\\d|5[24-9]|7[6-8]|88)|302\\d)\\d{6}",[10]],0,0,0,0,["30[013-9]\\d{6}",[9]]]],LB:["961","00","[27-9]\\d{7}|[13-9]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27-9]"]]],"0",0,0,0,0,0,[["7(?:62|8[0-7]|9[04-9])\\d{4}|(?:[14-69]\\d|2(?:[14-69]\\d|[78][1-9])|7[2-57]|8[02-9])\\d{5}"],["793(?:[01]\\d|2[0-4])\\d{3}|(?:(?:3|81)\\d|7(?:[01]\\d|6[013-9]|8[89]|9[12]))\\d{5}"],0,["9[01]\\d{6}",[8]],0,0,0,0,0,["80\\d{6}",[8]]]],LC:["1","011","(?:[58]\\d\\d|758|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","758$1",0,"758",[["758(?:234|4(?:30|5\\d|6[2-9]|8[0-2])|57[0-2]|(?:63|75)8)\\d{4}"],["758(?:28[4-7]|384|4(?:6[01]|8[4-9])|5(?:1[89]|20|84)|7(?:1[2-9]|2\\d|3[0-3])|812)\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],LI:["423","00","[68]\\d{8}|(?:[2378]\\d|90)\\d{5}",[7,9],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[2379]|8(?:0[09]|7)","[2379]|8(?:0(?:02|9)|7)"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["69"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]],"0",0,"0|(1001)",0,0,0,[["(?:2(?:01|1[27]|2[02]|3\\d|6[02-578]|96)|3(?:[24]0|33|7[0135-7]|8[048]|9[0269]))\\d{4}",[7]],["(?:6(?:(?:4[5-9]|5[0-4])\\d|6(?:[0245]\\d|[17]0|3[7-9]))\\d|7(?:[37-9]\\d|42|56))\\d{4}"],["8002[28]\\d\\d|80(?:05\\d|9)\\d{4}"],["90(?:02[258]|1(?:23|3[14])|66[136])\\d\\d",[7]],0,0,["870(?:28|87)\\d\\d",[7]]]],LK:["94","00","[1-9]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[1-689]"],"0$1"]],"0",0,0,0,0,0,[["(?:12[2-9]|602|8[12]\\d|9(?:1\\d|22|9[245]))\\d{6}|(?:11|2[13-7]|3[1-8]|4[157]|5[12457]|6[35-7])[2-57]\\d{6}"],["7(?:[0-25-8]\\d|4[0-4])\\d{6}"],0,0,0,0,["1973\\d{5}"]]],LR:["231","00","(?:2|33|5\\d|77|88)\\d{7}|[4-6]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[4-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3578]"],"0$1"]],"0",0,0,0,0,0,[["(?:2\\d{3}|33333)\\d{4}",[8,9]],["(?:(?:330|555|(?:77|88)\\d)\\d|4[67])\\d{5}|[56]\\d{6}",[7,9]],0,["332(?:02|[34]\\d)\\d{4}",[9]]]],LS:["266","00","(?:[256]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2568]"]]],0,0,0,0,0,0,[["2\\d{7}"],["[56]\\d{7}"],["800[256]\\d{4}"]]],LT:["370","00","(?:[3469]\\d|52|[78]0)\\d{6}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["52[0-7]"],"(8-$1)",1],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[7-9]"],"8 $1",1],["(\\d{2})(\\d{6})","$1 $2",["37|4(?:[15]|6[1-8])"],"(8-$1)",1],["(\\d{3})(\\d{5})","$1 $2",["[3-6]"],"(8-$1)",1]],"8",0,"[08]",0,0,0,[["(?:3[1478]|4[124-6]|52)\\d{6}"],["6\\d{7}"],["80[02]\\d{5}"],["9(?:0[0239]|10)\\d{5}"],["70[05]\\d{5}"],0,["70[67]\\d{5}"],0,["[89]01\\d{5}"],["808\\d{5}"]]],LU:["352","00","35[013-9]\\d{4,8}|6\\d{8}|35\\d{2,4}|(?:[2457-9]\\d|3[0-46-9])\\d{2,9}",[4,5,6,7,8,9,10,11],[["(\\d{2})(\\d{3})","$1 $2",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["20[2-689]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4",["2(?:[0367]|4[3-8])"]],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["80[01]|90[015]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["20"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4 $5",["2(?:[0367]|4[3-8])"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,5})","$1 $2 $3 $4",["[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]"]]],0,0,"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\d)",0,0,0,[["(?:35[013-9]|80[2-9]|90[89])\\d{1,8}|(?:2[2-9]|3[0-46-9]|[457]\\d|8[13-9]|9[2-579])\\d{2,9}"],["6(?:[269][18]|5[1568]|7[189]|81)\\d{6}",[9]],["800\\d{5}",[8]],["90[015]\\d{5}",[8]],0,0,0,0,["20(?:1\\d{5}|[2-689]\\d{1,7})",[4,5,6,7,8,9,10]],["801\\d{5}",[8]]]],LV:["371","00","(?:[268]\\d|90)\\d{6}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[269]|8[01]"]]],0,0,0,0,0,0,[["6\\d{7}"],["23(?:23[0-57-9]|33[0238])\\d{3}|2(?:[0-24-9]\\d\\d|3(?:0[07]|[14-9]\\d|2[024-9]|3[0-24-9]))\\d{4}"],["80\\d{6}"],["90\\d{6}"],0,0,0,0,0,["81\\d{6}"]]],LY:["218","00","[2-9]\\d{8}",[9],[["(\\d{2})(\\d{7})","$1-$2",["[2-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:2(?:0[56]|[1-6]\\d|7[124579]|8[124])|3(?:1\\d|2[2356])|4(?:[17]\\d|2[1-357]|5[2-4]|8[124])|5(?:[1347]\\d|2[1-469]|5[13-5]|8[1-4])|6(?:[1-479]\\d|5[2-57]|8[1-5])|7(?:[13]\\d|2[13-79])|8(?:[124]\\d|5[124]|84))\\d{6}"],["9[1-6]\\d{7}"]]],MA:["212","00","[5-8]\\d{8}",[9],[["(\\d{5})(\\d{4})","$1-$2",["5(?:29|38)","5(?:29[89]|389)","5(?:29[89]|389)0"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5[45]"],"0$1"],["(\\d{4})(\\d{5})","$1-$2",["5(?:2[2-489]|3[5-9]|9)|892","5(?:2(?:[2-49]|8[235-9])|3[5-9]|9)|892"],"0$1"],["(\\d{2})(\\d{7})","$1-$2",["8"],"0$1"],["(\\d{3})(\\d{6})","$1-$2",["[5-7]"],"0$1"]],"0",0,0,0,0,0,[["5(?:29(?:[189][05]|2[29]|3[01])|389[05])\\d{4}|5(?:2(?:[0-25-7]\\d|3[1-578]|4[02-46-8]|8[0235-7]|90)|3(?:[0-47]\\d|5[02-9]|6[02-8]|8[08]|9[3-9])|(?:4[067]|5[03])\\d)\\d{5}"],["(?:6(?:[0-79]\\d|8[0-247-9])|7(?:[017]\\d|2[0-2]|6[0-8]|8[0-3]))\\d{6}"],["80\\d{7}"],["89\\d{7}"],0,0,0,0,["592(?:4[0-2]|93)\\d{4}"]]],MC:["377","00","(?:[3489]|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["4"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[389]"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["6"],"0$1"]],"0",0,0,0,0,0,[["(?:870|9[2-47-9]\\d)\\d{5}",[8]],["4(?:[46]\\d|5[1-9])\\d{5}|(?:3|6\\d)\\d{7}"],["(?:800|90\\d)\\d{5}",[8]]]],MD:["373","00","(?:[235-7]\\d|[89]0)\\d{6}",[8],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["22|3"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[25-7]"],"0$1"]],"0",0,0,0,0,0,[["(?:(?:2[1-9]|3[1-79])\\d|5(?:33|5[257]))\\d{5}"],["562\\d{5}|(?:6\\d|7[16-9])\\d{6}"],["800\\d{5}"],["90[056]\\d{5}"],0,0,["803\\d{5}"],0,["3[08]\\d{6}"],["808\\d{5}"]]],ME:["382","00","(?:20|[3-79]\\d)\\d{6}|80\\d{6,7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:20[2-8]|3(?:[0-2][2-7]|3[24-7])|4(?:0[2-467]|1[2467])|5(?:0[2467]|1[24-7]|2[2-467]))\\d{5}",[8]],["6(?:[07-9]\\d|3[024]|6[0-25])\\d{5}",[8]],["80(?:[0-2578]|9\\d)\\d{5}"],["9(?:4[1568]|5[178])\\d{5}",[8]],0,0,["77[1-9]\\d{5}",[8]],0,["78[1-49]\\d{5}",[8]]]],MF:["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[["590(?:0[079]|[14]3|[27][79]|30|5[0-268]|87)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],MG:["261","00","[23]\\d{8}",[9],[["(\\d{2})(\\d{2})(\\d{3})(\\d{2})","$1 $2 $3 $4",["[23]"],"0$1"]],"0",0,"0|([24-9]\\d{6})$","20$1",0,0,[["2072[29]\\d{4}|20(?:2\\d|4[47]|5[3467]|6[279]|7[35]|8[268]|9[245])\\d{5}"],["3[2-489]\\d{7}"],0,0,0,0,0,0,["22\\d{7}"]]],MH:["692","011","329\\d{4}|(?:[256]\\d|45)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1-$2",["[2-6]"]]],"1",0,0,0,0,0,[["(?:247|528|625)\\d{4}"],["(?:(?:23|54)5|329|45[356])\\d{4}"],0,0,0,0,0,0,["635\\d{4}"]]],MK:["389","00","[2-578]\\d{7}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2|34[47]|4(?:[37]7|5[47]|64)"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[347]"],"0$1"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["[58]"],"0$1"]],"0",0,0,0,0,0,[["(?:(?:2(?:62|77)0|3444)\\d|4[56]440)\\d{3}|(?:34|4[357])700\\d{3}|(?:2(?:[0-3]\\d|5[0-578]|6[01]|82)|3(?:1[3-68]|[23][2-68]|4[23568])|4(?:[23][2-68]|4[3-68]|5[2568]|6[25-8]|7[24-68]|8[4-68]))\\d{5}"],["7(?:3555|4747|9(?:[019]77|42[0-4]))\\d{3}|7(?:[0-25-8]\\d\\d|3(?:[1-4]\\d|7[01578])|4(?:2\\d|60|7[01578])|9(?:[23]\\d|4[01]|7[015]))\\d{4}"],["800\\d{5}"],["5\\d{7}"],0,0,0,0,0,["8(?:0[1-9]|[1-9]\\d)\\d{5}"]]],ML:["223","00","[24-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24-9]"]]],0,0,0,0,0,0,[["2(?:07[0-8]|12[67])\\d{4}|(?:2(?:02|1[4-689])|4(?:0[0-4]|4[1-39]))\\d{5}"],["2(?:0(?:01|79)|17\\d)\\d{4}|(?:5[01]|[679]\\d|8[2-49])\\d{6}"],["80\\d{6}"]]],MM:["95","00","1\\d{5,7}|95\\d{6}|(?:[4-7]|9[0-46-9])\\d{6,8}|(?:2|8\\d)\\d{5,8}",[6,7,8,9,10],[["(\\d)(\\d{2})(\\d{3})","$1 $2 $3",["16|2"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[4-7]|8[1-35]"],"0$1"],["(\\d)(\\d{3})(\\d{4,6})","$1 $2 $3",["9(?:2[0-4]|[35-9]|4[137-9])"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["92"],"0$1"],["(\\d)(\\d{5})(\\d{4})","$1 $2 $3",["9"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:(?:2\\d|3[56]|[89][0-6])\\d|4(?:2[2-469]|39|46|6[25]|7[0-3]|83)|6)|2(?:2(?:00|8[34])|4(?:0\\d|2[246]|39|46|62|7[0-3]|83)|51\\d\\d)|4(?:2(?:2\\d\\d|48[0-3])|3(?:20\\d|4(?:70|83)|56)|420\\d|5470)|6(?:0(?:[23]|88\\d)|(?:124|[56]2\\d)\\d|247[23]|3(?:20\\d|470)|4(?:2[04]\\d|47[23])|7(?:(?:3\\d|8[01459])\\d|4(?:39|60|7[013]))))\\d{4}|5(?:2(?:2\\d{5,6}|47[023]\\d{4})|(?:347[23]|4(?:2(?:1|86)|470)|522\\d|6(?:20\\d|483)|7(?:20\\d|48[0-2])|8(?:20\\d|47[02])|9(?:20\\d|47[01]))\\d{4})|7(?:(?:0470|4(?:25\\d|470)|5(?:202|470|96\\d))\\d{4}|1(?:20\\d{4,5}|4(?:70|83)\\d{4}))|8(?:1(?:2\\d{5,6}|4(?:10|7[01]\\d)\\d{3})|2(?:2\\d{5,6}|(?:320|490\\d)\\d{3})|(?:3(?:2\\d\\d|470)|4[24-7]|5(?:2\\d|4[1-9]|51)\\d|6[23])\\d{4})|(?:1[2-6]\\d|4(?:2[24-8]|3[2-7]|[46][2-6]|5[3-5])|5(?:[27][2-8]|3[2-68]|4[24-8]|5[23]|6[2-4]|8[24-7]|9[2-7])|6(?:[19]20|42[03-6]|(?:52|7[45])\\d)|7(?:[04][24-8]|[15][2-7]|22|3[2-4])|8(?:1[2-689]|2[2-8]|[35]2\\d))\\d{4}|25\\d{5,6}|(?:2[2-9]|6(?:1[2356]|[24][2-6]|3[24-6]|5[2-4]|6[2-8]|7[235-7]|8[245]|9[24])|8(?:3[24]|5[245]))\\d{4}",[6,7,8,9]],["(?:17[01]|9(?:2(?:[0-4]|[56]\\d\\d)|(?:3(?:[0-36]|4\\d)|(?:6\\d|9[4-8])\\d|7(?:3|40|[5-9]\\d)|8(?:78|[89]\\d))\\d|4(?:(?:[0245]\\d|[1379])\\d|88)|5[0-6])\\d)\\d{4}|9[69]1\\d{6}|9(?:[68]\\d|9[089])\\d{5}",[7,8,9,10]],["80080(?:[01][1-9]|2\\d)\\d{3}",[10]],0,0,0,0,0,["1333\\d{4}|[12]468\\d{4}",[8]]]],MN:["976","001","[12]\\d{7,9}|[5-9]\\d{7}",[8,9,10],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[12]1"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[5-9]"]],["(\\d{3})(\\d{5,6})","$1 $2",["[12]2[1-3]"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["[12](?:27|3[2-8]|4[2-68]|5[1-4689])","[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["[12]"],"0$1"]],"0",0,0,0,0,0,[["[12]2[1-3]\\d{5,6}|7(?:0[0-5]\\d|128)\\d{4}|(?:[12](?:1|27)|5[368])\\d{6}|[12](?:3[2-8]|4[2-68]|5[1-4689])\\d{6,7}"],["(?:83[01]|920)\\d{5}|(?:5[05]|6[06]|8[015689]|9[013-9])\\d{6}",[8]],0,0,0,0,0,0,["712[0-79]\\d{4}|7(?:1[013-9]|[25-8]\\d)\\d{5}",[8]]]],MO:["853","00","0800\\d{3}|(?:28|[68]\\d)\\d{6}",[7,8],[["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{4})(\\d{4})","$1 $2",["[268]"]]],0,0,0,0,0,0,[["(?:28[2-9]|8(?:11|[2-57-9]\\d))\\d{5}",[8]],["6800[0-79]\\d{3}|6(?:[235]\\d\\d|6(?:0[0-5]|[1-9]\\d)|8(?:0[1-9]|[14-8]\\d|2[5-9]|[39][0-4]))\\d{4}",[8]],["0800\\d{3}",[7]]]],MP:["1","011","[58]\\d{9}|(?:67|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","670$1",0,"670",[["670(?:2(?:3[3-7]|56|8[4-8])|32[1-38]|4(?:33|8[348])|5(?:32|55|88)|6(?:64|70|82)|78[3589]|8[3-9]8|989)\\d{4}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],MQ:["596","00","(?:69|80)\\d{7}|(?:59|97)6\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["596(?:[03-7]\\d|10|2[7-9]|8[09]|9[4-9])\\d{4}"],["69(?:6(?:[0-46-9]\\d|5[0-6])|727)\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976(?:6\\d|7[0-367])\\d{4}"]]],MR:["222","00","(?:[2-4]\\d\\d|800)\\d{5}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-48]"]]],0,0,0,0,0,0,[["(?:25[08]|35\\d|45[1-7])\\d{5}"],["[2-4][0-46-9]\\d{6}"],["800\\d{5}"]]],MS:["1","011","(?:[58]\\d\\d|664|900)\\d{7}",[10],0,"1",0,"1|([34]\\d{6})$","664$1",0,"664",[["6644(?:1[0-3]|91)\\d{4}"],["664(?:3(?:49|9[1-6])|49[2-6])\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],MT:["356","00","3550\\d{4}|(?:[2579]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2357-9]"]]],0,0,0,0,0,0,[["20(?:3[1-4]|6[059])\\d{4}|2(?:0[19]|[1-357]\\d|60)\\d{5}"],["(?:7(?:210|[79]\\d\\d)|9(?:[29]\\d\\d|69[67]|8(?:1[1-3]|89|97)))\\d{4}"],["800(?:02|[3467]\\d)\\d{3}"],["5(?:0(?:0(?:37|43)|(?:6\\d|70|9[0168])\\d)|[12]\\d0[1-5])\\d{3}"],0,0,["501\\d{5}"],["7117\\d{4}"],["3550\\d{4}"]]],MU:["230","0(?:0|[24-7]0|3[03])","(?:5|8\\d\\d)\\d{7}|[2-468]\\d{6}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[2-46]|8[013]"]],["(\\d{4})(\\d{4})","$1 $2",["5"]],["(\\d{5})(\\d{5})","$1 $2",["8"]]],0,0,0,0,0,0,[["(?:2(?:[0346-8]\\d|1[0-7])|4(?:[013568]\\d|2[4-7])|54(?:[3-5]\\d|71)|6\\d\\d|8(?:14|3[129]))\\d{4}",[7,8]],["5(?:4(?:2[1-389]|7[1-9])|87[15-8])\\d{4}|5(?:2[5-9]|4[3-689]|[57]\\d|8[0-689]|9[0-8])\\d{5}",[8]],["802\\d{7}|80[0-2]\\d{4}",[7,10]],["30\\d{5}",[7]],0,0,0,0,["3(?:20|9\\d)\\d{4}",[7]]],"020"],MV:["960","0(?:0|19)","(?:800|9[0-57-9]\\d)\\d{7}|[34679]\\d{6}",[7,10],[["(\\d{3})(\\d{4})","$1-$2",["[3467]|9[13-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"]]],0,0,0,0,0,0,[["(?:3(?:0[0-3]|3[0-59])|6(?:[58][024689]|6[024-68]|7[02468]))\\d{4}",[7]],["46[46]\\d{4}|(?:7\\d|9[13-9])\\d{5}",[7]],["800\\d{7}",[10]],["900\\d{7}",[10]],0,0,["4(?:0[01]|50)\\d{4}",[7]]],"00"],MW:["265","00","(?:[1289]\\d|31|77)\\d{7}|1\\d{6}",[7,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["1[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[137-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:1[2-9]|2[12]\\d\\d)\\d{5}"],["111\\d{6}|(?:31|77|[89][89])\\d{7}",[9]]]],MX:["52","0[09]","1(?:(?:44|99)[1-9]|65[0-689])\\d{7}|(?:1(?:[017]\\d|[235][1-9]|4[0-35-9]|6[0-46-9]|8[1-79]|9[1-8])|[2-9]\\d)\\d{8}",[10,11],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["33|5[56]|81"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2-9]"],0,1],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 $3 $4",["1(?:33|5[56]|81)"],0,1],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 $3 $4",["1"],0,1]],"01",0,"0(?:[12]|4[45])|1",0,0,0,[["657[12]\\d{6}|(?:2(?:0[01]|2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[25-7][1-9]|3[1-8]|4\\d|8[1-35-9]|9[2-689])|5(?:[56]\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|6[1-9]|7[12]|8[1-8]|9\\d))\\d{7}",[10]],["657[12]\\d{6}|(?:1(?:2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-7][1-9]|3[1-8]|8[1-35-9]|9[2-689])|5(?:[56]\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))|2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[25-7][1-9]|3[1-8]|4\\d|8[1-35-9]|9[2-689])|5(?:[56]\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|6[1-9]|7[12]|8[1-8]|9\\d))\\d{7}"],["8(?:00|88)\\d{7}",[10]],["900\\d{7}",[10]],["500\\d{7}",[10]],0,0,0,0,["300\\d{7}",[10]]],"00"],MY:["60","00","1\\d{8,9}|(?:3\\d|[4-9])\\d{7}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1-$2 $3",["[4-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1-$2 $3",["1(?:[02469]|[378][1-9]|53)|8","1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2 $3",["3"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3-$4",["1(?:[367]|80)"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2 $3",["15"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2 $3",["1"],"0$1"]],"0",0,0,0,0,0,[["(?:3(?:2[0-36-9]|3[0-368]|4[0-278]|5[0-24-8]|6[0-467]|7[1246-9]|8\\d|9[0-57])\\d|4(?:2[0-689]|[3-79]\\d|8[1-35689])|5(?:2[0-589]|[3468]\\d|5[0-489]|7[1-9]|9[23])|6(?:2[2-9]|3[1357-9]|[46]\\d|5[0-6]|7[0-35-9]|85|9[015-8])|7(?:[2579]\\d|3[03-68]|4[0-8]|6[5-9]|8[0-35-9])|8(?:[24][2-8]|3[2-5]|5[2-7]|6[2-589]|7[2-578]|[89][2-9])|9(?:0[57]|13|[25-7]\\d|[3489][0-8]))\\d{5}",[8,9]],["1(?:1888[689]|4400|8(?:47|8[27])[0-4])\\d{4}|1(?:0(?:[23568]\\d|4[0-6]|7[016-9]|9[0-8])|1(?:[1-5]\\d\\d|6(?:0[5-9]|[1-9]\\d)|7(?:[0134]\\d|2[1-9]|5[0-6]))|(?:[269]\\d|[37][1-9]|4[235-9])\\d|5(?:31|9\\d\\d)|8(?:1[23]|[236]\\d|4[06]|5(?:46|[7-9])|7[016-9]|8[01]|9[0-8]))\\d{5}",[9,10]],["1[378]00\\d{6}",[10]],["1600\\d{6}",[10]],0,0,0,0,["15(?:4(?:6[0-4]\\d|8(?:0[125]|[17]\\d|21|3[01]|4[01589]|5[014]|6[02]))|6(?:32[0-6]|78\\d))\\d{4}",[10]]]],MZ:["258","00","(?:2|8\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2|8[2-79]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["2(?:[1346]\\d|5[0-2]|[78][12]|93)\\d{5}",[8]],["8[2-79]\\d{7}",[9]],["800\\d{6}",[9]]]],NA:["264","00","[68]\\d{7,8}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["87"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0",0,0,0,0,0,[["64426\\d{3}|6(?:1(?:2[2-7]|3[01378]|4[0-4])|254|32[0237]|4(?:27|41|5[25])|52[236-8]|626|7(?:2[2-4]|30))\\d{4,5}|6(?:1(?:(?:0\\d|2[0189]|3[24-69]|4[5-9])\\d|17|69|7[014])|2(?:17|5[0-36-8]|69|70)|3(?:17|2[14-689]|34|6[289]|7[01]|81)|4(?:17|2[0-2]|4[06]|5[0137]|69|7[01])|5(?:17|2[0459]|69|7[01])|6(?:17|25|38|42|69|7[01])|7(?:17|2[569]|3[13]|6[89]|7[01]))\\d{4}"],["(?:60|8[1245])\\d{7}",[9]],["80\\d{7}",[9]],["8701\\d{5}",[9]],0,0,0,0,["8(?:3\\d\\d|86)\\d{5}"]]],NC:["687","00","(?:050|[2-57-9]\\d\\d)\\d{3}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1.$2.$3",["[02-57-9]"]]],0,0,0,0,0,0,[["(?:2[03-9]|3[0-5]|4[1-7]|88)\\d{4}"],["(?:5[0-4]|[79]\\d|8[0-79])\\d{4}"],["050\\d{3}"],["36\\d{4}"]]],NE:["227","00","[027-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["08"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[089]|2[013]|7[04]"]]],0,0,0,0,0,0,[["2(?:0(?:20|3[1-8]|4[13-5]|5[14]|6[14578]|7[1-578])|1(?:4[145]|5[14]|6[14-68]|7[169]|88))\\d{4}"],["(?:23|7[04]|[89]\\d)\\d{6}"],["08\\d{6}"],["09\\d{6}"]]],NF:["672","00","[13]\\d{5}",[6],[["(\\d{2})(\\d{4})","$1 $2",["1[0-3]"]],["(\\d)(\\d{5})","$1 $2",["[13]"]]],0,0,"([0-258]\\d{4})$","3$1",0,0,[["(?:1(?:06|17|28|39)|3[0-2]\\d)\\d{3}"],["(?:14|3[58])\\d{4}"]]],NG:["234","009","(?:[124-7]|9\\d{3})\\d{6}|[1-9]\\d{7}|[78]\\d{9,13}",[7,8,10,11,12,13,14],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["78"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]|9(?:0[3-9]|[1-9])"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[3-7]|8[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["[78]"],"0$1"],["(\\d{3})(\\d{5})(\\d{5,6})","$1 $2 $3",["[78]"],"0$1"]],"0",0,0,0,0,0,[["(?:(?:[1-356]\\d|4[02-8]|8[2-9])\\d|9(?:0[3-9]|[1-9]\\d))\\d{5}|7(?:0(?:[013-689]\\d|2[0-24-9])\\d{3,4}|[1-79]\\d{6})|(?:[12]\\d|4[147]|5[14579]|6[1578]|7[1-3578])\\d{5}",[7,8]],["(?:702[0-24-9]|8(?:01|19)[01])\\d{6}|(?:70[13-689]|8(?:0[2-9]|1[0-8])|9(?:0[1-9]|1[2356]))\\d{7}",[10]],["800\\d{7,11}",[10,11,12,13,14]],0,0,0,["700\\d{7,11}",[10,11,12,13,14]]]],NI:["505","00","(?:1800|[25-8]\\d{3})\\d{4}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[125-8]"]]],0,0,0,0,0,0,[["2\\d{7}"],["(?:5(?:5[0-7]|[78]\\d)|6(?:20|3[035]|4[045]|5[05]|77|8[1-9]|9[059])|(?:7[5-8]|8\\d)\\d)\\d{5}"],["1800\\d{4}"]]],NL:["31","00","(?:[124-7]\\d\\d|3(?:[02-9]\\d|1[0-8]))\\d{6}|8\\d{6,9}|9\\d{6,10}|1\\d{4,5}",[5,6,7,8,9,10,11],[["(\\d{3})(\\d{4,7})","$1 $2",["[89]0"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["66"],"0$1"],["(\\d)(\\d{8})","$1 $2",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["1[16-8]|2[259]|3[124]|4[17-9]|5[124679]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-578]|91"],"0$1"],["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3",["9"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:[035]\\d|1[13-578]|6[124-8]|7[24]|8[0-467])|2(?:[0346]\\d|2[2-46-9]|5[125]|9[479])|3(?:[03568]\\d|1[3-8]|2[01]|4[1-8])|4(?:[0356]\\d|1[1-368]|7[58]|8[15-8]|9[23579])|5(?:[0358]\\d|[19][1-9]|2[1-57-9]|4[13-8]|6[126]|7[0-3578])|7\\d\\d)\\d{6}",[9]],["(?:6[1-58]|970\\d)\\d{7}",[9,11]],["800\\d{4,7}",[7,8,9,10]],["90[069]\\d{4,7}",[7,8,9,10]],0,0,["140(?:1[035]|2[0346]|3[03568]|4[0356]|5[0358]|8[458])|(?:140(?:1[16-8]|2[259]|3[124]|4[17-9]|5[124679]|7)|8[478]\\d{6})\\d",[5,6,9]],["66\\d{7}",[9]],["(?:85|91)\\d{7}",[9]]]],NO:["47","00","(?:0|[2-9]\\d{3})\\d{4}",[5,8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[489]|59"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[235-7]"]]],0,0,0,0,0,"[02-689]|7[0-8]",[["(?:2[1-4]|3[1-3578]|5[1-35-7]|6[1-4679]|7[0-8])\\d{6}",[8]],["(?:4[015-8]|59|9\\d)\\d{6}",[8]],["80[01]\\d{5}",[8]],["82[09]\\d{5}",[8]],["880\\d{5}",[8]],0,["(?:0[2-9]|81(?:0(?:0[7-9]|1\\d)|5\\d\\d))\\d{3}"],0,["85[0-5]\\d{5}",[8]],["810(?:0[0-6]|[2-8]\\d)\\d{3}",[8]]]],NP:["977","00","(?:1\\d|9)\\d{9}|[1-9]\\d{7}",[8,10,11],[["(\\d)(\\d{7})","$1-$2",["1[2-6]"],"0$1"],["(\\d{2})(\\d{6})","$1-$2",["1[01]|[2-8]|9(?:[1-59]|[67][2-6])"],"0$1"],["(\\d{3})(\\d{7})","$1-$2",["9"]]],"0",0,0,0,0,0,[["(?:1[0-6]\\d|99[02-6])\\d{5}|(?:2[13-79]|3[135-8]|4[146-9]|5[135-7]|6[13-9]|7[15-9]|8[1-46-9]|9[1-7])[2-6]\\d{5}",[8]],["9(?:6[0-3]|7[024-6]|8[0-24-68])\\d{7}",[10]],["1(?:66001|800\\d\\d)\\d{5}",[11]]]],NR:["674","00","(?:444|(?:55|8\\d)\\d|666)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[4-68]"]]],0,0,0,0,0,0,[["444\\d{4}"],["(?:55[3-9]|666|8\\d\\d)\\d{4}"]]],NU:["683","00","(?:[47]|888\\d)\\d{3}",[4,7],[["(\\d{3})(\\d{4})","$1 $2",["8"]]],0,0,0,0,0,0,[["[47]\\d{3}",[4]],["888[4-9]\\d{3}",[7]]]],NZ:["64","0(?:0|161)","[29]\\d{7,9}|50\\d{5}(?:\\d{2,3})?|6[0-35-9]\\d{6}|7\\d{7,8}|8\\d{4,9}|(?:11\\d|[34])\\d{7}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,8})","$1 $2",["8[1-579]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["50[036-8]|[89]0","50(?:[0367]|88)|[89]0"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["24|[346]|7[2-57-9]|9[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:10|74)|[59]|80"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1|2[028]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,5})","$1 $2 $3",["2(?:[169]|7[0-35-9])|7|86"],"0$1"]],"0",0,0,0,0,0,[["24099\\d{3}|(?:3[2-79]|[49][2-9]|6[235-9]|7[2-57-9])\\d{6}",[8]],["2[0-27-9]\\d{7,8}|21\\d{6}",[8,9,10]],["508\\d{6,7}|80\\d{6,8}",[8,9,10]],["(?:11\\d{5}|50(?:0[08]|30|66|77|88))\\d{3}|90\\d{6,8}",[7,8,9,10]],["70\\d{7}",[9]],0,["8(?:1[6-9]|22|3\\d|4[045]|5[459]|7[0-3579]|90)\\d{2,7}"],["[28]6\\d{6,7}",[8,9]]],"00"],OM:["968","00","(?:1505|[279]\\d{3}|500)\\d{4}|800\\d{5,6}",[7,8,9],[["(\\d{3})(\\d{4,6})","$1 $2",["[58]"]],["(\\d{2})(\\d{6})","$1 $2",["2"]],["(\\d{4})(\\d{4})","$1 $2",["[179]"]]],0,0,0,0,0,0,[["2[2-6]\\d{6}",[8]],["1505\\d{4}|(?:7(?:[1289]\\d|7[0-4])|9(?:0[1-9]|[1-9]\\d))\\d{5}",[8]],["8007\\d{4,5}|(?:500|800[05])\\d{4}"],["900\\d{5}",[8]]]],PA:["507","00","(?:00800|8\\d{3})\\d{6}|[68]\\d{7}|[1-57-9]\\d{6}",[7,8,10,11],[["(\\d{3})(\\d{4})","$1-$2",["[1-57-9]"]],["(\\d{4})(\\d{4})","$1-$2",["[68]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["(?:1(?:0\\d|1[479]|2[37]|3[0137]|4[17]|5[05]|6[58]|7[0167]|8[2358]|9[1389])|2(?:[0235-79]\\d|1[0-7]|4[013-9]|8[02-9])|3(?:[089]\\d|1[0-7]|2[0-5]|33|4[0-79]|5[0-35]|6[068]|7[0-8])|4(?:00|3[0-579]|4\\d|7[0-57-9])|5(?:[01]\\d|2[0-7]|[56]0|79)|7(?:0[09]|2[0-26-8]|3[03]|4[04]|5[05-9]|6[056]|7[0-24-9]|8[5-9]|90)|8(?:09|2[89]|3\\d|4[0-24-689]|5[014]|8[02])|9(?:0[5-9]|1[0135-8]|2[036-9]|3[35-79]|40|5[0457-9]|6[05-9]|7[04-9]|8[35-8]|9\\d))\\d{4}",[7]],["(?:1[16]1|21[89]|6\\d{3}|8(?:1[01]|7[23]))\\d{4}",[7,8]],["800\\d{4,5}|(?:00800|800\\d)\\d{6}"],["(?:8(?:22|55|60|7[78]|86)|9(?:00|81))\\d{4}",[7]]]],PE:["51","00|19(?:1[124]|77|90)00","(?:[14-8]|9\\d)\\d{7}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["80"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["1"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[4-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"]]],"0",0,0,0,0,0,[["(?:(?:4[34]|5[14])[0-8]\\d|7(?:173|3[0-8]\\d)|8(?:10[05689]|6(?:0[06-9]|1[6-9]|29)|7(?:0[569]|[56]0)))\\d{4}|(?:1[0-8]|4[12]|5[236]|6[1-7]|7[246]|8[2-4])\\d{6}",[8]],["9\\d{8}",[9]],["800\\d{5}",[8]],["805\\d{5}",[8]],["80[24]\\d{5}",[8]],0,0,0,0,["801\\d{5}",[8]]],"00"," Anexo "],PF:["689","00","4\\d{5}(?:\\d{2})?|8\\d{7,8}",[6,8,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["44"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4|8[7-9]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]],0,0,0,0,0,0,[["4(?:0[4-689]|9[4-68])\\d{5}",[8]],["8[7-9]\\d{6}",[8]],["80[0-5]\\d{6}",[9]],0,0,0,["44\\d{4}",[6]],0,["499\\d{5}",[8]]]],PG:["675","00|140[1-3]","(?:180|[78]\\d{3})\\d{4}|(?:[2-589]\\d|64)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["18|[2-69]|85"]],["(\\d{4})(\\d{4})","$1 $2",["[78]"]]],0,0,0,0,0,0,[["(?:(?:3[0-2]|4[257]|5[34]|9[78])\\d|64[1-9]|85[02-46-9])\\d{4}",[7]],["(?:7\\d|8[128])\\d{6}",[8]],["180\\d{4}",[7]],0,0,0,0,["27[01]\\d{4}",[7]],["2(?:0[0-57]|7[568])\\d{4}",[7]]],"00"],PH:["63","00","(?:[2-7]|9\\d)\\d{8}|2\\d{5}|(?:1800|8)\\d{7,9}",[6,8,9,10,11,12,13],[["(\\d)(\\d{5})","$1 $2",["2"],"(0$1)"],["(\\d{4})(\\d{4,6})","$1 $2",["3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2","3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))"],"(0$1)"],["(\\d{5})(\\d{4})","$1 $2",["346|4(?:27|9[35])|883","3469|4(?:279|9(?:30|56))|8834"],"(0$1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3-7]|8[2-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{4})(\\d{1,2})(\\d{3})(\\d{4})","$1 $2 $3 $4",["1"]]],"0",0,0,0,0,0,[["(?:(?:2[3-8]|3[2-68]|4[2-9]|5[2-6]|6[2-58]|7[24578])\\d{3}|88(?:22\\d\\d|42))\\d{4}|(?:2|8[2-8]\\d\\d)\\d{5}",[6,8,9,10]],["(?:8(?:1[37]|9[5-8])|9(?:0[5-9]|1[0-24-9]|[235-7]\\d|4[2-9]|8[135-9]|9[1-9]))\\d{7}",[10]],["1800\\d{7,9}",[11,12,13]]]],PK:["92","00","122\\d{6}|[24-8]\\d{10,11}|9(?:[013-9]\\d{8,10}|2(?:[01]\\d\\d|2(?:[06-8]\\d|1[01]))\\d{7})|(?:[2-8]\\d{3}|92(?:[0-7]\\d|8[1-9]))\\d{6}|[24-9]\\d{8}|[89]\\d{7}",[8,9,10,11,12],[["(\\d{3})(\\d{3})(\\d{2,7})","$1 $2 $3",["[89]0"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["1"]],["(\\d{3})(\\d{6,7})","$1 $2",["2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])","9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]"],"(0$1)"],["(\\d{2})(\\d{7,8})","$1 $2",["(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]"],"(0$1)"],["(\\d{5})(\\d{5})","$1 $2",["58"],"(0$1)"],["(\\d{3})(\\d{7})","$1 $2",["3"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[24-9]"],"(0$1)"]],"0",0,0,0,0,0,[["(?:(?:21|42)[2-9]|58[126])\\d{7}|(?:2[25]|4[0146-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\\d{6,7}|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8]))[2-9]\\d{5,6}",[9,10]],["3(?:[0-24]\\d|3[0-7]|55|64)\\d{7}",[10]],["800\\d{5}(?:\\d{3})?",[8,11]],["900\\d{5}",[8]],["122\\d{6}",[9]],0,["(?:2(?:[125]|3[2358]|4[2-4]|9[2-8])|4(?:[0-246-9]|5[3479])|5(?:[1-35-7]|4[2-467])|6(?:0[468]|[1-8])|7(?:[14]|2[236])|8(?:[16]|2[2-689]|3[23578]|4[3478]|5[2356])|9(?:1|22|3[27-9]|4[2-6]|6[3569]|9[2-7]))111\\d{6}",[11,12]]]],PL:["48","00","(?:6|8\\d\\d)\\d{7}|[1-9]\\d{6}(?:\\d{2})?|[26]\\d{5}",[6,7,8,9,10],[["(\\d{5})","$1",["19"]],["(\\d{3})(\\d{3})","$1 $2",["11|20|64"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1","(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19"]],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["64"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[2-8]|[2-7]|8[1-79]|9[145]"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["47\\d{7}|(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])(?:[02-9]\\d{6}|1(?:[0-8]\\d{5}|9\\d{3}(?:\\d{2})?))",[7,9]],["21(?:1(?:[145]\\d|3[1-5])|2[0-4]\\d)\\d{4}|(?:45|5[0137]|6[069]|7[2389]|88)\\d{7}",[9]],["800\\d{6,7}",[9,10]],["70[01346-8]\\d{6}",[9]],0,0,["804\\d{6}",[9]],["64\\d{4,7}",[6,7,8,9]],["39\\d{7}",[9]],["801\\d{6}",[9]]]],PM:["508","00","(?:[45]|80\\d\\d)\\d{5}",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[45]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["(?:4[1-356]|50)\\d{4}",[6]],["(?:4[02-4]|5[056])\\d{4}",[6]],["80[0-5]\\d{6}",[9]]]],PR:["1","011","(?:[589]\\d\\d|787)\\d{7}",[10],0,"1",0,0,0,0,"787|939",[["(?:787|939)[2-9]\\d{6}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],PS:["970","00","[2489]2\\d{6}|(?:1\\d|5)\\d{8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2489]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["5"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[["(?:22[2-47-9]|42[45]|82[014-68]|92[3569])\\d{5}",[8]],["5[69]\\d{7}",[9]],["1800\\d{6}",[10]],0,0,0,0,0,0,["1700\\d{6}",[10]]]],PT:["351","00","1693\\d{5}|(?:[26-9]\\d|30)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["2[12]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["16|[236-9]"]]],0,0,0,0,0,0,[["2(?:[12]\\d|3[1-689]|4[1-59]|[57][1-9]|6[1-35689]|8[1-69]|9[1256])\\d{6}"],["6(?:[06]92(?:30|9\\d)|[35]92(?:3[03]|9\\d))\\d{3}|(?:(?:16|6[0356])93|9(?:[1-36]\\d\\d|480))\\d{5}"],["80[02]\\d{6}"],["(?:6(?:0[178]|4[68])\\d|76(?:0[1-57]|1[2-47]|2[237]))\\d{5}"],["884[0-4689]\\d{5}"],0,["70(?:7\\d|8[17])\\d{5}"],["6222\\d{5}"],["30\\d{7}"],["80(?:8\\d|9[1579])\\d{5}"]]],PW:["680","01[12]","(?:[24-8]\\d\\d|345|900)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]],0,0,0,0,0,0,[["(?:2(?:55|77)|345|488|5(?:35|44|87)|6(?:22|54|79)|7(?:33|47)|8(?:24|55|76)|900)\\d{4}"],["(?:(?:46|83)[0-5]|6[2-4689]0)\\d{4}|(?:45|77|88)\\d{5}"]]],PY:["595","00","59\\d{4,6}|9\\d{5,10}|(?:[2-46-8]\\d|5[0-8])\\d{4,7}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3,6})","$1 $2",["[2-9]0"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]"],"(0$1)"],["(\\d{3})(\\d{4,5})","$1 $2",["2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["87"]],["(\\d{3})(\\d{6})","$1 $2",["9(?:[5-79]|8[1-6])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["9"]]],"0",0,0,0,0,0,[["(?:[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36])\\d{5,7}|(?:2(?:2[4-68]|[4-68]\\d|7[15]|9[1-5])|3(?:18|3[167]|4[2357]|51|[67]\\d)|4(?:3[12]|5[13]|9[1-47])|5(?:[1-4]\\d|5[02-4])|6(?:3[1-3]|44|7[1-8])|7(?:4[0-4]|5\\d|6[1-578]|75|8[0-8])|858)\\d{5,6}",[7,8,9]],["9(?:51|6[129]|[78][1-6]|9[1-5])\\d{6}",[9]],["9800\\d{5,7}",[9,10,11]],0,0,0,["[2-9]0\\d{4,7}",[6,7,8,9]],0,["8700[0-4]\\d{4}",[9]]]],QA:["974","00","[2-7]\\d{7}|800\\d{4}(?:\\d{2})?|2\\d{6}",[7,8,9],[["(\\d{3})(\\d{4})","$1 $2",["2[126]|8"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]]],0,0,0,0,0,0,[["414[1-4]\\d{4}|(?:23|4[04])\\d{6}",[8]],["(?:2[89]|[35-7]\\d)\\d{6}",[8]],["800\\d{4}(?:\\d{2})?",[7,9]],0,0,0,0,["2(?:[12]\\d|61)\\d{4}",[7]]]],RE:["262","00","976\\d{6}|(?:26|[68]\\d)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2689]"],"0$1"]],"0",0,0,0,0,"26[23]|69|[89]",[["26(?:2\\d\\d|3(?:0\\d|1[01]))\\d{4}"],["(?:69(?:2\\d\\d|3(?:0[0-46]|1[013]|2[0-2]|3[0-39]|4\\d|5[0-5]|6[0-6]|7[0-27]|8[0-8]|9[0-479]))|976(?:2[27]|3[0-37]|9\\d))\\d{4}"],["80\\d{7}"],["89[1-37-9]\\d{6}"],0,0,0,0,0,["8(?:1[019]|2[0156]|84|90)\\d{6}"]]],RO:["40","00","(?:[2378]\\d|90)\\d{7}|[23]\\d{5}",[6,9],[["(\\d{3})(\\d{3})","$1 $2",["2[3-6]","2[3-6]\\d9"],"0$1"],["(\\d{2})(\\d{4})","$1 $2",["219|31"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[23]1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[237-9]"],"0$1"]],"0",0,0,0,0,0,[["[23][13-6]\\d{7}|(?:2(?:19\\d|[3-6]\\d9)|31\\d\\d)\\d\\d"],["7020\\d{5}|7(?:0[013-9]|1[0-3]|[2-7]\\d|8[03-8]|9[019])\\d{6}",[9]],["800\\d{6}",[9]],["90[0136]\\d{6}",[9]],0,0,["(?:37\\d|80[578])\\d{6}",[9]],0,0,["801\\d{6}",[9]]],0," int "],RS:["381","00","38[02-9]\\d{6,9}|6\\d{7,9}|90\\d{4,8}|38\\d{5,6}|(?:7\\d\\d|800)\\d{3,9}|(?:[12]\\d|3[0-79])\\d{5,10}",[6,7,8,9,10,11,12],[["(\\d{3})(\\d{3,9})","$1 $2",["(?:2[389]|39)0|[7-9]"],"0$1"],["(\\d{2})(\\d{5,10})","$1 $2",["[1-36]"],"0$1"]],"0",0,0,0,0,0,[["(?:11[1-9]\\d|(?:2[389]|39)(?:0[2-9]|[2-9]\\d))\\d{3,8}|(?:1[02-9]|2[0-24-7]|3[0-8])[2-9]\\d{4,9}",[7,8,9,10,11,12]],["6(?:[0-689]|7\\d)\\d{6,7}",[8,9,10]],["800\\d{3,9}"],["(?:78\\d|90[0169])\\d{3,7}",[6,7,8,9,10]],0,0,["7[06]\\d{4,10}"]]],RU:["7","810","8\\d{13}|[347-9]\\d{9}",[10,14],[["(\\d{4})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-8]|2[1-9])","7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))","7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2"],"8 ($1)",1],["(\\d{5})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-68]|2[1-9])","7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))","7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[349]|8(?:[02-7]|1[1-8])"],"8 ($1)",1],["(\\d{4})(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3 $4",["8"],"8 ($1)"]],"8",0,0,0,0,"3[04-689]|[489]",[["(?:3(?:0[12]|4[1-35-79]|5[1-3]|65|8[1-58]|9[0145])|4(?:01|1[1356]|2[13467]|7[1-5]|8[1-7]|9[1-689])|8(?:1[1-8]|2[01]|3[13-6]|4[0-8]|5[15]|6[1-35-79]|7[1-37-9]))\\d{7}",[10]],["9\\d{9}",[10]],["8(?:0[04]|108\\d{3})\\d{7}"],["80[39]\\d{7}",[10]],["808\\d{7}",[10]]],"8~10"],RW:["250","00","(?:06|[27]\\d\\d|[89]00)\\d{6}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"]]],"0",0,0,0,0,0,[["(?:06|2[23568]\\d)\\d{6}"],["7[2389]\\d{7}",[9]],["800\\d{6}",[9]],["900\\d{6}",[9]]]],SA:["966","00","92\\d{7}|(?:[15]|8\\d)\\d{8}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["9"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["81"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]],"0",0,0,0,0,0,[["1(?:1\\d|2[24-8]|3[35-8]|4[3-68]|6[2-5]|7[235-7])\\d{6}",[9]],["579[01]\\d{5}|5(?:[013-689]\\d|7[0-35-8])\\d{6}",[9]],["800\\d{7}",[10]],["925\\d{6}",[9]],0,0,["811\\d{7}",[10]],0,0,["920\\d{6}",[9]]]],SB:["677","0[01]","(?:[1-6]|[7-9]\\d\\d)\\d{4}",[5,7],[["(\\d{2})(\\d{5})","$1 $2",["7|8[4-9]|9(?:[1-8]|9[0-8])"]]],0,0,0,0,0,0,[["(?:1[4-79]|[23]\\d|4[0-2]|5[03]|6[0-37])\\d{3}",[5]],["48\\d{3}|(?:(?:7[1-9]|8[4-9])\\d|9(?:1[2-9]|2[013-9]|3[0-2]|[46]\\d|5[0-46-9]|7[0-689]|8[0-79]|9[0-8]))\\d{4}"],["1[38]\\d{3}",[5]],0,0,0,0,0,["5[12]\\d{3}",[5]]]],SC:["248","010|0[0-2]","800\\d{4}|(?:[249]\\d|64)\\d{5}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[246]|9[57]"]]],0,0,0,0,0,0,[["4[2-46]\\d{5}"],["2[125-8]\\d{5}"],["800[08]\\d{3}"],0,0,0,0,0,["971\\d{4}|(?:64|95)\\d{5}"]],"00"],SD:["249","00","[19]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[19]"],"0$1"]],"0",0,0,0,0,0,[["1(?:5\\d|8[35-7])\\d{6}"],["(?:1[0-2]|9[0-3569])\\d{7}"]]],SE:["46","00","(?:[26]\\d\\d|9)\\d{9}|[1-9]\\d{8}|[1-689]\\d{7}|[1-4689]\\d{6}|2\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{2,3})(\\d{2})","$1-$2 $3",["20"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{4})","$1-$2",["9(?:00|39|44|9)"],"0$1",0,"$1 $2"],["(\\d{2})(\\d{3})(\\d{2})","$1-$2 $3",["[12][136]|3[356]|4[0246]|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3"],["(\\d)(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2,3})(\\d{2})","$1-$2 $3",["1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{2,3})(\\d{3})","$1-$2 $3",["9(?:00|39|44)"],"0$1",0,"$1 $2 $3"],["(\\d{2})(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3 $4"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["10|7"],"0$1",0,"$1 $2 $3 $4"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1-$2 $3 $4",["[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{3})","$1-$2 $3 $4",["9"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4 $5",["[26]"],"0$1",0,"$1 $2 $3 $4 $5"]],"0",0,0,0,0,0,[["(?:(?:[12][136]|3[356]|4[0246]|6[03]|8\\d)\\d|90[1-9])\\d{4,6}|(?:1(?:2[0-35]|4[0-4]|5[0-25-9]|7[13-6]|[89]\\d)|2(?:2[0-7]|4[0136-8]|5[0138]|7[018]|8[01]|9[0-57])|3(?:0[0-4]|1\\d|2[0-25]|4[056]|7[0-2]|8[0-3]|9[023])|4(?:1[013-8]|3[0135]|5[14-79]|7[0-246-9]|8[0156]|9[0-689])|5(?:0[0-6]|[15][0-5]|2[0-68]|3[0-4]|4\\d|6[03-5]|7[013]|8[0-79]|9[01])|6(?:1[1-3]|2[0-4]|4[02-57]|5[0-37]|6[0-3]|7[0-2]|8[0247]|9[0-356])|9(?:1[0-68]|2\\d|3[02-5]|4[0-3]|5[0-4]|[68][01]|7[0135-8]))\\d{5,6}",[7,8,9]],["7[02369]\\d{7}",[9]],["20\\d{4,7}",[6,7,8,9]],["649\\d{6}|99[1-59]\\d{4}(?:\\d{3})?|9(?:00|39|44)[1-8]\\d{3,6}",[7,8,9,10]],["75[1-8]\\d{6}",[9]],0,["10[1-8]\\d{6}",[9]],["74[02-9]\\d{6}",[9]],0,["77[0-7]\\d{6}",[9]]]],SG:["65","0[0-3]\\d","(?:(?:1\\d|8)\\d\\d|7000)\\d{7}|[3689]\\d{7}",[8,10,11],[["(\\d{4})(\\d{4})","$1 $2",["[369]|8(?:0[1-5]|[1-9])"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]],["(\\d{4})(\\d{4})(\\d{3})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[["662[0-24-9]\\d{4}|6(?:[0-578]\\d|6[013-57-9]|9[0-35-9])\\d{5}",[8]],["8(?:05[0-7]|95[0-2])\\d{4}|(?:8(?:0[1-4]|[1-8]\\d|9[0-4])|9[0-8]\\d)\\d{5}",[8]],["(?:18|8)00\\d{7}",[10,11]],["1900\\d{7}",[11]],0,0,["7000\\d{7}",[11]],0,["(?:3[12]\\d|666)\\d{5}",[8]]]],SH:["290","00","(?:[256]\\d|8)\\d{3}",[4,5],0,0,0,0,0,0,"[256]",[["2(?:[0-57-9]\\d|6[4-9])\\d\\d"],["[56]\\d{4}",[5]],0,0,0,0,0,0,["262\\d\\d",[5]]]],SI:["386","00|10(?:22|66|88|99)","[1-7]\\d{7}|8\\d{4,7}|90\\d{4,6}",[5,6,7,8],[["(\\d{2})(\\d{3,6})","$1 $2",["8[09]|9"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["59|8"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37][01]|4[0139]|51|6"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-57]"],"(0$1)"]],"0",0,0,0,0,0,[["(?:[1-357][2-8]|4[24-8])\\d{6}",[8]],["65(?:1\\d|55|6[01]|70)\\d{4}|(?:[37][01]|4[0139]|51|6[489])\\d{6}",[8]],["80\\d{4,6}",[6,7,8]],["89[1-3]\\d{2,5}|90\\d{4,6}"],0,0,0,0,["(?:59\\d\\d|8(?:1(?:[67]\\d|8[0-589])|2(?:0\\d|2[0-37-9]|8[0-2489])|3[389]\\d))\\d{4}",[8]]],"00"],SJ:["47","00","0\\d{4}|(?:[489]\\d|[57]9)\\d{6}",[5,8],0,0,0,0,0,0,"79",[["79\\d{6}",[8]],["(?:4[015-8]|59|9\\d)\\d{6}",[8]],["80[01]\\d{5}",[8]],["82[09]\\d{5}",[8]],["880\\d{5}",[8]],0,["(?:0[2-9]|81(?:0(?:0[7-9]|1\\d)|5\\d\\d))\\d{3}"],0,["85[0-5]\\d{5}",[8]],["810(?:0[0-6]|[2-8]\\d)\\d{3}",[8]]]],SK:["421","00","[2-689]\\d{8}|[2-59]\\d{6}|[2-5]\\d{5}",[6,7,9],[["(\\d)(\\d{2})(\\d{3,4})","$1 $2 $3",["21"],"0$1"],["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["[3-5][1-8]1","[3-5][1-8]1[67]"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1/$2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[689]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1/$2 $3 $4",["[3-5]"],"0$1"]],"0",0,0,0,0,0,[["(?:2(?:16|[2-9]\\d{3})|(?:(?:[3-5][1-8]\\d|819)\\d|601[1-5])\\d)\\d{4}|(?:2|[3-5][1-8])1[67]\\d{3}|[3-5][1-8]16\\d\\d"],["909[1-9]\\d{5}|9(?:0[1-8]|1[0-24-9]|4[03-57-9]|5\\d)\\d{6}",[9]],["800\\d{6}",[9]],["9(?:00|[78]\\d)\\d{6}",[9]],0,0,["96\\d{7}",[9]],["9090\\d{3}",[7]],["6(?:02|5[0-4]|9[0-6])\\d{6}",[9]],["8[5-9]\\d{7}",[9]]]],SL:["232","00","(?:[237-9]\\d|66)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[236-9]"],"(0$1)"]],"0",0,0,0,0,0,[["22[2-4][2-9]\\d{4}"],["(?:25|3[0-5]|66|7[2-9]|8[08]|9[09])\\d{6}"]]],SM:["378","00","(?:0549|[5-7]\\d)\\d{6}",[8,10],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-7]"]],["(\\d{4})(\\d{6})","$1 $2",["0"]]],0,0,"([89]\\d{5})$","0549$1",0,0,[["0549(?:8[0157-9]|9\\d)\\d{4}",[10]],["6[16]\\d{6}",[8]],0,["7[178]\\d{6}",[8]],0,0,0,0,["5[158]\\d{6}",[8]]]],SN:["221","00","(?:[378]\\d|93)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[379]"]]],0,0,0,0,0,0,[["3(?:0(?:1[0-2]|80)|282|3(?:8[1-9]|9[3-9])|611)\\d{5}"],["7(?:(?:[06-8]\\d|21|90)\\d|5(?:01|[19]0|25|[38]3|[4-7]\\d))\\d{5}"],["800\\d{6}"],["88[4689]\\d{6}"],0,0,0,0,["(?:3(?:392|9[01]\\d)\\d|93(?:3[13]0|929))\\d{4}"],["81[02468]\\d{6}"]]],SO:["252","00","[346-9]\\d{8}|[12679]\\d{7}|[1-5]\\d{6}|[1348]\\d{5}",[6,7,8,9],[["(\\d{2})(\\d{4})","$1 $2",["8[125]"]],["(\\d{6})","$1",["[134]"]],["(\\d)(\\d{6})","$1 $2",["[15]|2[0-79]|3[0-46-8]|4[0-7]"]],["(\\d)(\\d{7})","$1 $2",["24|[67]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3478]|64|90"]],["(\\d{2})(\\d{5,7})","$1 $2",["1|28|6(?:0[5-7]|[1-35-9])|9[2-9]"]]],"0",0,0,0,0,0,[["(?:1\\d|2[0-79]|3[0-46-8]|4[0-7]|5[57-9])\\d{5}|(?:[134]\\d|8[125])\\d{4}",[6,7]],["(?:(?:15|(?:3[59]|4[89]|79|8[08])\\d|6(?:0[5-7]|[1-9]\\d)|9(?:0\\d|[2-9]))\\d|2(?:4\\d|8))\\d{5}|[67]\\d{7}",[7,8,9]]]],SR:["597","00","(?:[2-5]|68|[78]\\d)\\d{5}",[6,7],[["(\\d{2})(\\d{2})(\\d{2})","$1-$2-$3",["56"]],["(\\d{3})(\\d{3})","$1-$2",["[2-5]"]],["(\\d{3})(\\d{4})","$1-$2",["[6-8]"]]],0,0,0,0,0,0,[["(?:2[1-3]|3[0-7]|(?:4|68)\\d|5[2-58])\\d{4}"],["(?:7[124-7]|8[124-9])\\d{5}",[7]],0,0,0,0,0,0,["56\\d{4}",[6]]]],SS:["211","00","[19]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[19]"],"0$1"]],"0",0,0,0,0,0,[["1[89]\\d{7}"],["(?:12|9[1257-9])\\d{7}"]]],ST:["239","00","(?:22|9\\d)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[29]"]]],0,0,0,0,0,0,[["22\\d{5}"],["900[5-9]\\d{3}|9(?:0[1-9]|[89]\\d)\\d{4}"]]],SV:["503","00","[267]\\d{7}|[89]00\\d{4}(?:\\d{4})?",[7,8,11],[["(\\d{3})(\\d{4})","$1 $2",["[89]"]],["(\\d{4})(\\d{4})","$1 $2",["[267]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[89]"]]],0,0,0,0,0,0,[["2(?:[1-6]\\d{3}|[79]90[034]|890[0245])\\d{3}",[8]],["66(?:[02-9]\\d\\d|1(?:[02-9]\\d|16))\\d{3}|(?:6[0-57-9]|7\\d)\\d{6}",[8]],["800\\d{4}(?:\\d{4})?",[7,11]],["900\\d{4}(?:\\d{4})?",[7,11]]]],SX:["1","011","7215\\d{6}|(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|(5\\d{6})$","721$1",0,"721",[["7215(?:4[2-8]|8[239]|9[056])\\d{4}"],["7215(?:1[02]|2\\d|5[034679]|8[014-8])\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],SY:["963","00","[1-39]\\d{8}|[1-5]\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-5]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1",1]],"0",0,0,0,0,0,[["21\\d{6,7}|(?:1(?:[14]\\d|[2356])|2[235]|3(?:[13]\\d|4)|4[134]|5[1-3])\\d{6}"],["9[1-689]\\d{7}",[9]]]],SZ:["268","00","0800\\d{4}|(?:[237]\\d|900)\\d{6}",[8,9],[["(\\d{4})(\\d{4})","$1 $2",["[0237]"]],["(\\d{5})(\\d{4})","$1 $2",["9"]]],0,0,0,0,0,0,[["[23][2-5]\\d{6}",[8]],["7[6-9]\\d{6}",[8]],["0800\\d{4}",[8]],["900\\d{6}",[9]],0,0,0,0,["70\\d{6}",[8]]]],TA:["290","00","8\\d{3}",[4],0,0,0,0,0,0,"8",[["8\\d{3}"]]],TC:["1","011","(?:[58]\\d\\d|649|900)\\d{7}",[10],0,"1",0,"1|([2-479]\\d{6})$","649$1",0,"649",[["649(?:266|712|9(?:4\\d|50))\\d{4}"],["649(?:2(?:3[129]|4[1-79])|3\\d\\d|4[34][1-3])\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,0,0,["649(?:71[01]|966)\\d{4}"]]],TD:["235","00|16","(?:22|[69]\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2679]"]]],0,0,0,0,0,0,[["22(?:[37-9]0|5[0-5]|6[89])\\d{4}"],["(?:6[023568]|77|9\\d)\\d{6}"]],"00"],TG:["228","00","[279]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[279]"]]],0,0,0,0,0,0,[["2(?:2[2-7]|3[23]|4[45]|55|6[67]|77)\\d{5}"],["(?:7[09]|9[0-36-9])\\d{6}"]]],TH:["66","00[1-9]","(?:001800|[2-57]|[689]\\d)\\d{7}|1\\d{7,9}",[8,9,10,13],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[13-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[["(?:1[0689]|2\\d|3[2-9]|4[2-5]|5[2-6]|7[3-7])\\d{6}",[8]],["671[0-8]\\d{5}|(?:14|6[1-6]|[89]\\d)\\d{7}",[9]],["(?:001800\\d|1800)\\d{6}",[10,13]],["1900\\d{6}",[10]],0,0,0,0,["6[08]\\d{7}",[9]]]],TJ:["992","810","(?:00|[1-57-9]\\d)\\d{7}",[9],[["(\\d{6})(\\d)(\\d{2})","$1 $2 $3",["331","3317"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[34]7|91[78]"]],["(\\d{4})(\\d)(\\d{4})","$1 $2 $3",["3[1-5]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[0-57-9]"]]],0,0,0,0,0,0,[["(?:3(?:1[3-5]|2[245]|3[12]|4[24-7]|5[25]|72)|4(?:46|74|87))\\d{6}"],["41[18]\\d{6}|(?:[034]0|[17][017]|2[02]|5[05]|8[08]|9\\d)\\d{7}"]],"8~10"],TK:["690","00","[2-47]\\d{3,6}",[4,5,6,7],0,0,0,0,0,0,0,[["(?:2[2-4]|[34]\\d)\\d{2,5}"],["7[2-4]\\d{2,5}"]]],TL:["670","00","7\\d{7}|(?:[2-47]\\d|[89]0)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[2-489]|70"]],["(\\d{4})(\\d{4})","$1 $2",["7"]]],0,0,0,0,0,0,[["(?:2[1-5]|3[1-9]|4[1-4])\\d{5}",[7]],["7[2-8]\\d{6}",[8]],["80\\d{5}",[7]],["90\\d{5}",[7]],["70\\d{5}",[7]]]],TM:["993","810","[1-6]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["12"],"(8 $1)"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-5]"],"(8 $1)"],["(\\d{2})(\\d{6})","$1 $2",["6"],"8 $1"]],"8",0,0,0,0,0,[["(?:1(?:2\\d|3[1-9])|2(?:22|4[0-35-8])|3(?:22|4[03-9])|4(?:22|3[128]|4\\d|6[15])|5(?:22|5[7-9]|6[014-689]))\\d{5}"],["6\\d{7}"]],"8~10"],TN:["216","00","[2-57-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-57-9]"]]],0,0,0,0,0,0,[["81200\\d{3}|(?:3[0-2]|7\\d)\\d{6}"],["3(?:001|[12]40)\\d{4}|(?:(?:[259]\\d|4[0-7])\\d|3(?:1[1-35]|6[0-4]|91))\\d{5}"],["8010\\d{4}"],["88\\d{6}"],0,0,0,0,0,["8[12]10\\d{4}"]]],TO:["676","00","(?:0800|(?:[5-8]\\d\\d|999)\\d)\\d{3}|[2-8]\\d{4}",[5,7],[["(\\d{2})(\\d{3})","$1-$2",["[2-4]|50|6[09]|7[0-24-69]|8[05]"]],["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{3})(\\d{4})","$1 $2",["[5-9]"]]],0,0,0,0,0,0,[["(?:2\\d|3[0-8]|4[0-4]|50|6[09]|7[0-24-69]|8[05])\\d{3}",[5]],["(?:55[4-6]|6(?:[09]\\d|3[02]|8[15-9])|(?:7\\d|8[46-9])\\d|999)\\d{4}",[7]],["0800\\d{3}",[7]],0,0,0,0,0,["55[0-37-9]\\d{4}",[7]]]],TR:["90","00","4\\d{6}|8\\d{11,12}|(?:[2-58]\\d\\d|900)\\d{7}",[7,10,12,13],[["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["512|8[01589]|90"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5(?:[0-59]|61)","5(?:[0-59]|616)","5(?:[0-59]|6161)"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24][1-8]|3[1-9]"],"(0$1)",1],["(\\d{3})(\\d{3})(\\d{6,7})","$1 $2 $3",["80"],"0$1",1]],"0",0,0,0,0,0,[["(?:2(?:[13][26]|[28][2468]|[45][268]|[67][246])|3(?:[13][28]|[24-6][2468]|[78][02468]|92)|4(?:[16][246]|[23578][2468]|4[26]))\\d{7}",[10]],["56161\\d{5}|5(?:0[15-7]|1[06]|24|[34]\\d|5[1-59]|9[46])\\d{7}",[10]],["8(?:00\\d{7}(?:\\d{2,3})?|11\\d{7})",[10,12,13]],["(?:8[89]8|900)\\d{7}",[10]],["592(?:21[12]|461)\\d{4}",[10]],0,["444\\d{4}",[7]],["512\\d{7}",[10]],["850\\d{7}",[10]]]],TT:["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-46-8]\\d{6})$","868$1",0,"868",[["868(?:2(?:01|1[5-9]|[23]\\d|4[0-2])|6(?:0[7-9]|1[02-8]|2[1-9]|[3-69]\\d|7[0-79])|82[124])\\d{4}"],["868(?:(?:2[5-9]|3\\d)\\d|4(?:3[0-6]|[6-9]\\d)|6(?:20|78|8\\d)|7(?:0[1-9]|1[02-9]|[2-9]\\d))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],TV:["688","00","(?:2|7\\d\\d|90)\\d{4}",[5,6,7],[["(\\d{2})(\\d{3})","$1 $2",["2"]],["(\\d{2})(\\d{4})","$1 $2",["90"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]],0,0,0,0,0,0,[["2[02-9]\\d{3}",[5]],["(?:7[01]\\d|90)\\d{4}",[6,7]]]],TW:["886","0(?:0[25-79]|19)","[2-689]\\d{8}|7\\d{9,10}|[2-8]\\d{7}|2\\d{6}",[7,8,9,10,11],[["(\\d{2})(\\d)(\\d{4})","$1 $2 $3",["202"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[258]0"],"0$1"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]","[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,5})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[["(?:2[2-8]\\d|370|55[01]|7[1-9])\\d{6}|4(?:(?:0(?:0[1-9]|[2-48]\\d)|1[023]\\d)\\d{4,5}|(?:[239]\\d\\d|4(?:0[56]|12|49))\\d{5})|6(?:[01]\\d{7}|4(?:0[56]|12|24|4[09])\\d{4,5})|8(?:(?:2(?:3\\d|4[0-269]|[578]0|66)|36[24-9]|90\\d\\d)\\d{4}|4(?:0[56]|12|24|4[09])\\d{4,5})|(?:2(?:2(?:0\\d\\d|4(?:0[68]|[249]0|3[0-467]|5[0-25-9]|6[0235689]))|(?:3(?:[09]\\d|1[0-4])|(?:4\\d|5[0-49]|6[0-29]|7[0-5])\\d)\\d)|(?:(?:3[2-9]|5[2-8]|6[0-35-79]|8[7-9])\\d\\d|4(?:2(?:[089]\\d|7[1-9])|(?:3[0-4]|[78]\\d|9[01])\\d))\\d)\\d{3}",[8,9]],["(?:40001[0-2]|9[0-8]\\d{4})\\d{3}",[9]],["80[0-79]\\d{6}|800\\d{5}",[8,9]],["20(?:[013-9]\\d\\d|2)\\d{4}",[7,9]],["99\\d{7}",[9]],0,["50[0-46-9]\\d{6}",[9]],0,["7010(?:[0-2679]\\d|3[0-7]|8[0-5])\\d{5}|70\\d{8}",[10,11]]],0,"#"],TZ:["255","00[056]","(?:[25-8]\\d|41|90)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[24]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["5"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[67]"],"0$1"]],"0",0,0,0,0,0,[["2[2-8]\\d{7}"],["77[2-9]\\d{6}|(?:6[125-9]|7[13-689])\\d{7}"],["80[08]\\d{6}"],["90\\d{7}"],0,0,0,0,["41\\d{7}"],["8(?:40|6[01])\\d{6}"]]],UA:["380","00","[89]\\d{9}|[3-9]\\d{8}",[9,10],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]","6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])","3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3-7]|89|9[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,[["(?:3[1-8]|4[13-8]|5[1-7]|6[12459])\\d{7}",[9]],["(?:39|50|6[36-8]|7[1-3]|9[1-9])\\d{7}",[9]],["800[1-8]\\d{5,6}"],["900[239]\\d{5,6}"],0,0,0,0,["89[1-579]\\d{6}",[9]]],"0~0"],UG:["256","00[057]","800\\d{6}|(?:[29]0|[347]\\d)\\d{7}",[9],[["(\\d{4})(\\d{5})","$1 $2",["202","2024"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[27-9]|4(?:6[45]|[7-9])"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[34]"],"0$1"]],"0",0,0,0,0,0,[["20(?:(?:240|30[67])\\d|6(?:00[0-2]|30[0-4]))\\d{3}|(?:20(?:[017]\\d|2[5-9]|32|5[0-4]|6[15-9])|[34]\\d{3})\\d{5}"],["726[01]\\d{5}|7(?:[01578]\\d|20|36|[46][0-4]|9[89])\\d{6}"],["800[1-3]\\d{5}"],["90[1-3]\\d{6}"]]],US:["1","011","[2-9]\\d{9}|3\\d{6}",[10],[["(\\d{3})(\\d{4})","$1-$2",["310"],0,1],["(\\d{3})(\\d{3})(\\d{4})","($1) $2-$3",["[2-9]"],0,1,"$1-$2-$3"]],"1",0,0,0,0,0,[["505(?:[2-57-9]\\d\\d|6(?:[0-35-9]\\d|44))\\d{4}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[01679]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[068]|3[0-289]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-389]|8[04-69]))[2-9]\\d{6}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],UY:["598","0(?:0|1[3-9]\\d)","4\\d{9}|[1249]\\d{7}|(?:[49]\\d|80)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["405|8|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[124]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["4"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:770|987)|(?:2\\d|4[2-7])\\d\\d)\\d{4}",[8]],["9[1-9]\\d{6}",[8]],["(?:4\\d{5}|80[05])\\d{4}|405\\d{4}",[7,10]],["90[0-8]\\d{4}",[7]]],"00"," int. "],UZ:["998","810","(?:33|55|[679]\\d|88)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[35-9]"],"8 $1"]],"8",0,0,0,0,0,[["(?:6(?:1(?:22|3[124]|4[1-4]|5[1-3578]|64)|2(?:22|3[0-57-9]|41)|5(?:22|3[3-7]|5[024-8])|6\\d\\d|7(?:[23]\\d|7[69])|9(?:22|4[1-8]|6[135]))|7(?:0(?:5[4-9]|6[0146]|7[124-6]|9[135-8])|(?:1[12]|8\\d)\\d|2(?:22|3[13-57-9]|4[1-3579]|5[14])|3(?:2\\d|3[1578]|4[1-35-7]|5[1-57]|61)|4(?:2\\d|3[1-579]|7[1-79])|5(?:22|5[1-9]|6[1457])|6(?:22|3[12457]|4[13-8])|9(?:22|5[1-9])))\\d{5}"],["(?:(?:33|88|9[0-57-9])\\d{3}|55(?:50[013]|90\\d)|6(?:1(?:2(?:2[01]|98)|35[0-4]|50\\d|61[23]|7(?:[01][017]|4\\d|55|9[5-9]))|2(?:(?:11|7\\d)\\d|2(?:[12]1|9[01379])|5(?:[126]\\d|3[0-4]))|5(?:19[01]|2(?:27|9[26])|(?:30|59|7\\d)\\d)|6(?:2(?:1[5-9]|2[0367]|38|41|52|60)|(?:3[79]|9[0-3])\\d|4(?:56|83)|7(?:[07]\\d|1[017]|3[07]|4[047]|5[057]|67|8[0178]|9[79]))|7(?:2(?:24|3[237]|4[5-9]|7[15-8])|5(?:7[12]|8[0589])|7(?:0\\d|[39][07])|9(?:0\\d|7[079]))|9(?:2(?:1[1267]|3[01]|5\\d|7[0-4])|(?:5[67]|7\\d)\\d|6(?:2[0-26]|8\\d)))|7(?:[07]\\d{3}|1(?:13[01]|6(?:0[47]|1[67]|66)|71[3-69]|98\\d)|2(?:2(?:2[79]|95)|3(?:2[5-9]|6[0-6])|57\\d|7(?:0\\d|1[17]|2[27]|3[37]|44|5[057]|66|88))|3(?:2(?:1[0-6]|21|3[469]|7[159])|(?:33|9[4-6])\\d|5(?:0[0-4]|5[579]|9\\d)|7(?:[0-3579]\\d|4[0467]|6[67]|8[078]))|4(?:2(?:29|5[0257]|6[0-7]|7[1-57])|5(?:1[0-4]|8\\d|9[5-9])|7(?:0\\d|1[024589]|2[0-27]|3[0137]|[46][07]|5[01]|7[5-9]|9[079])|9(?:7[015-9]|[89]\\d))|5(?:112|2(?:0\\d|2[29]|[49]4)|3[1568]\\d|52[6-9]|7(?:0[01578]|1[017]|[23]7|4[047]|[5-7]\\d|8[78]|9[079]))|6(?:2(?:2[1245]|4[2-4])|39\\d|41[179]|5(?:[349]\\d|5[0-2])|7(?:0[017]|[13]\\d|22|44|55|67|88))|9(?:22[128]|3(?:2[0-4]|7\\d)|57[02569]|7(?:2[05-9]|3[37]|4\\d|60|7[2579]|87|9[07]))))\\d{4}"]],"8~10"],VA:["39","00","0\\d{5,10}|3[0-8]\\d{7,10}|55\\d{8}|8\\d{5}(?:\\d{2,4})?|(?:1\\d|39)\\d{7,8}",[6,7,8,9,10,11],0,0,0,0,0,0,"06698",[["06698\\d{1,6}"],["3[1-9]\\d{8}|3[2-9]\\d{7}",[9,10]],["80(?:0\\d{3}|3)\\d{3}",[6,9]],["(?:0878\\d{3}|89(?:2\\d|3[04]|4(?:[0-4]|[5-9]\\d\\d)|5[0-4]))\\d\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\d{6}",[6,8,9,10]],["1(?:78\\d|99)\\d{6}",[9,10]],0,0,0,["55\\d{8}",[10]],["84(?:[08]\\d{3}|[17])\\d{3}",[6,9]]]],VC:["1","011","(?:[58]\\d\\d|784|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","784$1",0,"784",[["784(?:266|3(?:6[6-9]|7\\d|8[0-6])|4(?:38|5[0-36-8]|8[0-8])|5(?:55|7[0-2]|93)|638|784)\\d{4}"],["784(?:4(?:3[0-5]|5[45]|89|9[0-8])|5(?:2[6-9]|3[0-4])|720)\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,0,0,["78451[0-2]\\d{4}"]]],VE:["58","00","[68]00\\d{7}|(?:[24]\\d|[59]0)\\d{8}",[10],[["(\\d{3})(\\d{7})","$1-$2",["[24-689]"],"0$1"]],"0",0,0,0,0,0,[["(?:2(?:12|3[457-9]|[467]\\d|[58][1-9]|9[1-6])|[4-6]00)\\d{7}"],["4(?:1[24-8]|2[46])\\d{7}"],["800\\d{7}"],["90[01]\\d{7}"],0,0,["501\\d{7}"]]],VG:["1","011","(?:284|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-578]\\d{6})$","284$1",0,"284",[["284496[0-5]\\d{3}|284(?:229|4(?:22|9[45])|774|8(?:52|6[459]))\\d{4}"],["284496[6-9]\\d{3}|284(?:245|3(?:0[0-3]|4[0-7]|68|9[34])|4(?:4[0-6]|68|99)|5(?:4[0-7]|68|9[69]))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],VI:["1","011","[58]\\d{9}|(?:34|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","340$1",0,"340",[["340(?:2(?:0[0-38]|2[06-8]|4[49]|77)|3(?:32|44)|4(?:2[23]|44|7[34]|89)|5(?:1[34]|55)|6(?:2[56]|4[23]|77|9[023])|7(?:1[2-57-9]|2[57]|7\\d)|884|998)\\d{4}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],VN:["84","00","[12]\\d{9}|[135-9]\\d{8}|[16]\\d{7}|[16-8]\\d{6}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["80"],"0$1",1],["(\\d{4})(\\d{4,6})","$1 $2",["1"],0,1],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[69]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3578]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["2[48]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["2"],"0$1",1]],"0",0,0,0,0,0,[["2(?:0[3-9]|1[0-689]|2[0-25-9]|3[2-9]|4[2-8]|5[124-9]|6[0-39]|7[0-7]|8[2-79]|9[0-4679])\\d{7}",[10]],["(?:5(?:2[238]|59)|89[6-9]|99[013-9])\\d{6}|(?:3\\d|5[689]|7[06-9]|8[1-8]|9[0-8])\\d{7}",[9]],["1800\\d{4,6}|12(?:0[13]|28)\\d{4}",[8,9,10]],["1900\\d{4,6}",[8,9,10]],0,0,["(?:[17]99|80\\d)\\d{4}|69\\d{5,6}",[7,8]],0,["672\\d{6}",[9]]]],VU:["678","00","[57-9]\\d{6}|(?:[238]\\d|48)\\d{3}",[5,7],[["(\\d{3})(\\d{4})","$1 $2",["[57-9]"]]],0,0,0,0,0,0,[["(?:38[0-8]|48[4-9])\\d\\d|(?:2[02-9]|3[4-7]|88)\\d{3}",[5]],["(?:[58]\\d|7[013-7])\\d{5}",[7]],["81[18]\\d\\d",[5]],0,0,0,["(?:3[03]|900\\d)\\d{3}"],0,["9(?:0[1-9]|1[01])\\d{4}",[7]]]],WF:["681","00","(?:40|72)\\d{4}|8\\d{5}(?:\\d{3})?",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[478]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]],0,0,0,0,0,0,[["72\\d{4}",[6]],["(?:72|8[23])\\d{4}",[6]],["80[0-5]\\d{6}",[9]]]],WS:["685","0","(?:[2-6]|8\\d{5})\\d{4}|[78]\\d{6}|[68]\\d{5}",[5,6,7,10],[["(\\d{5})","$1",["[2-5]|6[1-9]"]],["(\\d{3})(\\d{3,7})","$1 $2",["[68]"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]],0,0,0,0,0,0,[["6[1-9]\\d{3}|(?:[2-5]|60)\\d{4}",[5,6]],["(?:7[1-35-7]|8(?:[3-7]|9\\d{3}))\\d{5}",[7,10]],["800\\d{3}",[6]]]],XK:["383","00","[23]\\d{7,8}|(?:4\\d\\d|[89]00)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[23]"],"0$1"]],"0",0,0,0,0,0,[["(?:2[89]|39)0\\d{6}|[23][89]\\d{6}"],["4[3-9]\\d{6}",[8]],["800\\d{5}",[8]],["900\\d{5}",[8]]]],YE:["967","00","(?:1|7\\d)\\d{7}|[1-7]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-6]|7[24-68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[["78[0-7]\\d{4}|17\\d{6}|(?:[12][2-68]|3[2358]|4[2-58]|5[2-6]|6[3-58]|7[24-6])\\d{5}",[7,8]],["7[0137]\\d{7}",[9]]]],YT:["262","00","80\\d{7}|(?:26|63)9\\d{6}",[9],0,"0",0,0,0,0,"269|63",[["269(?:0[0-367]|5[0-3]|6\\d|[78]0)\\d{4}"],["639(?:0[0-79]|1[019]|[267]\\d|3[09]|40|5[05-9]|9[04-79])\\d{4}"],["80\\d{7}"]]],ZA:["27","00","[1-79]\\d{8}|8\\d{4,9}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,4})","$1 $2",["8[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["8[1-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["860"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0",0,0,0,0,0,[["(?:2(?:0330|4302)|52087)0\\d{3}|(?:1[0-8]|2[1-378]|3[1-69]|4\\d|5[1346-8])\\d{7}",[9]],["(?:1(?:3492[0-25]|4495[0235]|549(?:20|5[01]))|4[34]492[01])\\d{3}|8[1-4]\\d{3,7}|(?:2[27]|47|54)4950\\d{3}|(?:1(?:049[2-4]|9[12]\\d\\d)|(?:6\\d|7[0-46-9])\\d{3}|8(?:5\\d{3}|7(?:08[67]|158|28[5-9]|310)))\\d{4}|(?:1[6-8]|28|3[2-69]|4[025689]|5[36-8])4920\\d{3}|(?:12|[2-5]1)492\\d{4}",[5,6,7,8,9]],["80\\d{7}",[9]],["(?:86[2-9]|9[0-2]\\d)\\d{6}",[9]],0,0,["861\\d{6,7}",[9,10]],0,["87(?:08[0-589]|15[0-79]|28[0-4]|31[1-9])\\d{4}|87(?:[02][0-79]|1[0-46-9]|3[02-9]|[4-9]\\d)\\d{5}",[9]],["860\\d{6}",[9]]]],ZM:["260","00","800\\d{6}|(?:21|63|[79]\\d)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[28]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[79]"],"0$1"]],"0",0,0,0,0,0,[["21[1-8]\\d{6}"],["(?:7[5-79]|9[5-8])\\d{7}"],["800\\d{6}"],0,0,0,0,0,["63\\d{7}"]]],ZW:["263","00","2(?:[0-57-9]\\d{6,8}|6[0-24-9]\\d{6,7})|[38]\\d{9}|[35-8]\\d{8}|[3-6]\\d{7}|[1-689]\\d{6}|[1-3569]\\d{5}|[1356]\\d{4}",[5,6,7,8,9,10],[["(\\d{3})(\\d{3,5})","$1 $2",["2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]"],"0$1"],["(\\d)(\\d{3})(\\d{2,4})","$1 $2 $3",["[49]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["80"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2","2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)","2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["29[013-9]|39|54"],"0$1"],["(\\d{4})(\\d{3,5})","$1 $2",["(?:25|54)8","258|5483"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:(?:3\\d|9)\\d|[4-8])|2(?:(?:(?:0(?:2[014]|5)|(?:2[0157]|31|84|9)\\d\\d|[56](?:[14]\\d\\d|20)|7(?:[089]|2[03]|[35]\\d\\d))\\d|4(?:2\\d\\d|8))\\d|1(?:2|[39]\\d{4}))|3(?:(?:123|(?:29\\d|92)\\d)\\d\\d|7(?:[19]|[56]\\d))|5(?:0|1[2-478]|26|[37]2|4(?:2\\d{3}|83)|5(?:25\\d\\d|[78])|[689]\\d)|6(?:(?:[16-8]21|28|52[013])\\d\\d|[39])|8(?:[1349]28|523)\\d\\d)\\d{3}|(?:4\\d\\d|9[2-9])\\d{4,5}|(?:(?:2(?:(?:(?:0|8[146])\\d|7[1-7])\\d|2(?:[278]\\d|92)|58(?:2\\d|3))|3(?:[26]|9\\d{3})|5(?:4\\d|5)\\d\\d)\\d|6(?:(?:(?:[0-246]|[78]\\d)\\d|37)\\d|5[2-8]))\\d\\d|(?:2(?:[569]\\d|8[2-57-9])|3(?:[013-59]\\d|8[37])|6[89]8)\\d{3}"],["7(?:[178]\\d|3[1-9])\\d{6}",[9]],["80(?:[01]\\d|20|8[0-8])\\d{3}",[7]],0,0,0,0,0,["86(?:1[12]|22|30|44|55|77|8[368])\\d{6}",[10]]]]},nonGeographic:{800:["800",0,"(?:00|[1-9]\\d)\\d{6}",[8],[["(\\d{4})(\\d{4})","$1 $2",["\\d"]]],0,0,0,0,0,0,[0,0,["(?:00|[1-9]\\d)\\d{6}"]]],808:["808",0,"[1-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[1-9]"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,["[1-9]\\d{7}"]]],870:["870",0,"7\\d{11}|[35-7]\\d{8}",[9,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[35-7]"]]],0,0,0,0,0,0,[0,["(?:[356]|774[45])\\d{8}|7[6-8]\\d{7}"]]],878:["878",0,"10\\d{10}",[12],[["(\\d{2})(\\d{5})(\\d{5})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["10\\d{10}"]]],881:["881",0,"[0-36-9]\\d{8}",[9],[["(\\d)(\\d{3})(\\d{5})","$1 $2 $3",["[0-36-9]"]]],0,0,0,0,0,0,[0,["[0-36-9]\\d{8}"]]],882:["882",0,"[13]\\d{6}(?:\\d{2,5})?|285\\d{9}|(?:[19]\\d|49)\\d{6}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5})","$1 $2",["16|342"]],["(\\d{2})(\\d{6})","$1 $2",["4"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[19]"]],["(\\d{2})(\\d{4})(\\d{3})","$1 $2 $3",["3[23]"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["34[57]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["34"]],["(\\d{2})(\\d{4,5})(\\d{5})","$1 $2 $3",["[1-3]"]]],0,0,0,0,0,0,[0,["342\\d{4}|(?:337|49)\\d{6}|3(?:2|47|7\\d{3})\\d{7}",[7,8,9,10,12]],0,0,0,0,0,0,["1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\d{4}|6\\d{5,10})|(?:(?:285\\d\\d|3(?:45|[69]\\d{3}))\\d|9[89])\\d{6}"]]],883:["883",0,"(?:210|370\\d\\d)\\d{7}|51\\d{7}(?:\\d{3})?",[9,10,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["510"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["2"]],["(\\d{4})(\\d{4})(\\d{4})","$1 $2 $3",["51[13]"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[35]"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["(?:210|(?:370[1-9]|51[013]0)\\d)\\d{7}|5100\\d{5}"]]],888:["888",0,"\\d{11}",[11],[["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3"]],0,0,0,0,0,0,[0,0,0,0,0,0,["\\d{11}"]]],979:["979",0,"[1359]\\d{8}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[1359]"]]],0,0,0,0,0,0,[0,0,0,["[1359]\\d{8}"]]]}};function e(d,e){var n=Array.prototype.slice.call(e);return n.push(t),d.apply(this,n)}function n(d){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(d){return typeof d}:function(d){return d&&"function"==typeof Symbol&&d.constructor===Symbol&&d!==Symbol.prototype?"symbol":typeof d},n(d)}function r(d,t){for(var e=0;ea)return 1;if(a>i)return-1;if(!isNaN(i)&&isNaN(a))return 1;if(isNaN(i)&&!isNaN(a))return-1}return d[1]&&t[1]?d[1]>t[1]?1:d[1]=2&&G.test(d)}var U=new RegExp("(?:"+R()+")$","i");function W(d,t){var e="undefined"!=typeof Symbol&&d[Symbol.iterator]||d["@@iterator"];if(e)return(e=e.call(d)).next.bind(e);if(Array.isArray(d)||(e=function(d,t){if(!d)return;if("string"==typeof d)return V(d,t);var e=Object.prototype.toString.call(d).slice(8,-1);"Object"===e&&d.constructor&&(e=d.constructor.name);if("Map"===e||"Set"===e)return Array.from(d);if("Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return V(d,t)}(d))||t&&d&&"number"==typeof d.length){e&&(d=e);var n=0;return function(){return n>=d.length?{done:!0}:{done:!1,value:d[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function V(d,t){(null==t||t>d.length)&&(t=d.length);for(var e=0,n=new Array(t);e=d.length?{done:!0}:{done:!1,value:d[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function X(d,t){(null==t||t>d.length)&&(t=d.length);for(var e=0,n=new Array(t);e=d.length?{done:!0}:{done:!1,value:d[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function q(d,t){(null==t||t>d.length)&&(t=d.length);for(var e=0,n=new Array(t);ea?"TOO_SHORT":r[r.length-1]=0?"IS_POSSIBLE":"INVALID_LENGTH"}function ed(d,t){return"IS_POSSIBLE"===dd(d,t)}function nd(d,t){return function(d){if(Array.isArray(d))return d}(d)||function(d,t){var e=null==d?null:"undefined"!=typeof Symbol&&d[Symbol.iterator]||d["@@iterator"];if(null==e)return;var n,r,i=[],a=!0,o=!1;try{for(e=e.call(d);!(a=(n=e.next()).done)&&(i.push(n.value),!t||i.length!==t);a=!0);}catch(d){o=!0,r=d}finally{try{a||null==e.return||e.return()}finally{if(o)throw r}}return i}(d,t)||rd(d,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function rd(d,t){if(d){if("string"==typeof d)return id(d,t);var e=Object.prototype.toString.call(d).slice(8,-1);return"Object"===e&&d.constructor&&(e=d.constructor.name),"Map"===e||"Set"===e?Array.from(d):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?id(d,t):void 0}}function id(d,t){(null==t||t>d.length)&&(t=d.length);for(var e=0,n=new Array(t);e=d.length?{done:!0}:{done:!1,value:d[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}((d=d.replace(/^tel:/,"tel=")).split(";"));!(n=r()).done;){var i=nd(n.value.split("="),2),a=i[0],o=i[1];switch(a){case"tel":t=o;break;case"ext":e=o;break;case"phone-context":"+"===o[0]&&(t=o+t)}}if(!B(t))return{};var $={number:t};return e&&($.ext=e),$}function od(d){var t=d.number,e=d.ext;if(!t)return"";if("+"!==t[0])throw new Error('"formatRFC3966()" expects "number" to be in E.164 format.');return"tel:".concat(t).concat(e?";ext="+e:"")}function $d(d,t){return d=d||"",new RegExp("^(?:"+t+")$").test(d)}function ud(d,t){var e="undefined"!=typeof Symbol&&d[Symbol.iterator]||d["@@iterator"];if(e)return(e=e.call(d)).next.bind(e);if(Array.isArray(d)||(e=function(d,t){if(!d)return;if("string"==typeof d)return ld(d,t);var e=Object.prototype.toString.call(d).slice(8,-1);"Object"===e&&d.constructor&&(e=d.constructor.name);if("Map"===e||"Set"===e)return Array.from(d);if("Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return ld(d,t)}(d))||t&&d&&"number"==typeof d.length){e&&(d=e);var n=0;return function(){return n>=d.length?{done:!0}:{done:!1,value:d[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function ld(d,t){(null==t||t>d.length)&&(t=d.length);for(var e=0,n=new Array(t);e=d.length?{done:!0}:{done:!1,value:d[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function vd(d,t){(null==t||t>d.length)&&(t=d.length);for(var e=0,n=new Array(t);e0){var i=r.leadingDigitsPatterns()[r.leadingDigitsPatterns().length-1];if(0!==t.search(i))continue}if($d(t,r.pattern()))return r}}(n.formats(),d);return i?md(d,i,{useInternationalFormat:"INTERNATIONAL"===e,withNationalPrefix:!i.nationalPrefixIsOptionalWhenFormattingInNationalFormat()||!r||!1!==r.nationalPrefix,carrierCode:t,metadata:n}):d}function Sd(d,t,e,n){return t?n(d,t,e):d}function Ed(d,t){var e=Object.keys(d);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(d);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(d,t).enumerable}))),e.push.apply(e,n)}return e}function Id(d){for(var t=1;t0&&"0"===a[1]))return d}}}function Rd(d,t){if(d&&t.numberingPlan.nationalPrefixForParsing()){var e=new RegExp("^(?:"+t.numberingPlan.nationalPrefixForParsing()+")"),n=e.exec(d);if(n){var r,i,a,o=n.length-1,$=o>0&&n[o];if(t.nationalPrefixTransformRule()&&$)r=d.replace(e,t.nationalPrefixTransformRule()),o>1&&(i=n[1]);else{var u=n[0];r=d.slice(u.length),$&&(i=n[1])}if($){var l=d.indexOf(n[1]);d.slice(0,l)===t.numberingPlan.nationalPrefix()&&(a=t.numberingPlan.nationalPrefix())}else a=n[0];return{nationalNumber:r,nationalPrefix:a,carrierCode:i}}}return{nationalNumber:d}}function Md(d,t){var e=Rd(d,t),n=e.carrierCode,r=e.nationalNumber;if(r!==d){if(!function(d,t,e){if($d(d,e.nationalNumberPattern())&&!$d(t,e.nationalNumberPattern()))return!1;return!0}(d,r,t))return{nationalNumber:d};if(t.possibleLengths()&&!function(d,t){switch(dd(d,t)){case"TOO_SHORT":case"INVALID_LENGTH":return!1;default:return!0}}(r,t))return{nationalNumber:d}}return{nationalNumber:r,carrierCode:n}}function Ld(d,t,e,n){var r=t?j(t,n):e;if(0===d.indexOf(r)){(n=new P(n)).selectNumberingPlan(t,e);var i=d.slice(r.length),a=Md(i,n).nationalNumber,o=Md(d,n).nationalNumber;if(!$d(o,n.nationalNumberPattern())&&$d(a,n.nationalNumberPattern())||"TOO_LONG"===dd(o,n))return{countryCallingCode:r,number:i}}return{number:d}}function _d(d,t,e,n){if(!d)return{};if("+"!==d[0]){var r=Dd(d,t,e,n);if(!r||r===d){if(t||e){var i=Ld(d,t,e,n),a=i.countryCallingCode,o=i.number;if(a)return{countryCallingCode:a,number:o}}return{number:d}}d="+"+r}if("0"===d[1])return{};n=new P(n);for(var $=2;$-1<=3&&$<=d.length;){var u=d.slice(1,$);if(n.hasCallingCode(u))return n.selectNumberingPlan(u),{countryCallingCode:u,number:d.slice($)};$++}return{}}function Gd(d,t){var e="undefined"!=typeof Symbol&&d[Symbol.iterator]||d["@@iterator"];if(e)return(e=e.call(d)).next.bind(e);if(Array.isArray(d)||(e=function(d,t){if(!d)return;if("string"==typeof d)return Bd(d,t);var e=Object.prototype.toString.call(d).slice(8,-1);"Object"===e&&d.constructor&&(e=d.constructor.name);if("Map"===e||"Set"===e)return Array.from(d);if("Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return Bd(d,t)}(d))||t&&d&&"number"==typeof d.length){e&&(d=e);var n=0;return function(){return n>=d.length?{done:!0}:{done:!1,value:d[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Bd(d,t){(null==t||t>d.length)&&(t=d.length);for(var e=0,n=new Array(t);e250){if(e)throw new s("TOO_LONG");return}if(!1===t)return d;var n=d.search(Wd);if(n<0)return;return d.slice(n).replace(Vd,"")}(d,e,t);if(!n)return{};if(!B(n))return function(d){return L.test(d)}(n)?{error:"TOO_SHORT"}:{};var r=function(d){var t=d.search(U);if(t<0)return{};for(var e=d.slice(0,t),n=d.match(U),r=1;r17){if(t.v2)throw new s("TOO_LONG");return{}}if(t.v2){var f=new jd(l,u,e.metadata);return $&&(f.country=$),c&&(f.carrierCode=c),i&&(f.ext=i),f}var h=!!(t.extended?e.hasSelectedNumberingPlan():$)&&$d(u,e.nationalNumberPattern());return t.extended?{country:$,countryCallingCode:l,carrierCode:c,valid:h,possible:!!h||!(!0!==t.extended||!e.possibleLengths()||!ed(u,e)),phone:u,ext:i}:h?function(d,t,e){var n={country:d,phone:t};e&&(n.ext=e);return n}($,u,i):{}}function Kd(d,t){var e=Object.keys(d);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(d);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(d,t).enumerable}))),e.push.apply(e,n)}return e}function Yd(d){for(var t=1;td.length)&&(t=d.length);for(var e=0,n=new Array(t);e2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;Pt(this,d),this.key=t,this.value=e,this.next=n,this.prev=r})),xt=function(){function d(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10;Pt(this,d),this.size=0,this.limit=t,this.head=null,this.tail=null,this.cache={}}return Nt(d,[{key:"put",value:function(d,t){if(this.ensureLimit(),this.head){var e=new Ot(d,t,this.head);this.head.prev=e,this.head=e}else this.head=this.tail=new Ot(d,t);this.cache[d]=this.head,this.size++}},{key:"get",value:function(d){if(this.cache[d]){var t=this.cache[d].value;return this.remove(d),this.put(d,t),t}console.log("Item not available in cache for key ".concat(d))}},{key:"ensureLimit",value:function(){this.size===this.limit&&this.remove(this.tail.key)}},{key:"remove",value:function(d){var t=this.cache[d];null!==t.prev?t.prev.next=t.next:this.head=t.next,null!==t.next?t.next.prev=t.prev:this.tail=t.prev,delete this.cache[d],this.size--}},{key:"clear",value:function(){this.head=null,this.tail=null,this.size=0,this.cache={}}}]),d}();function wt(d,t){for(var e=0;e=0?t.slice(0,e):t}var At="   ᠎ - \u2028\u2029   ",Tt="[".concat(At,"]"),jt="[^".concat(At,"]"),Ft="[".concat("0-9٠-٩۰-۹߀-߉०-९০-৯੦-੯૦-૯୦-୯௦-௯౦-౯೦-೯൦-൯๐-๙໐-໙༠-༩၀-၉႐-႙០-៩᠐-᠙᥆-᥏᧐-᧙᪀-᪉᪐-᪙᭐-᭙᮰-᮹᱀-᱉᱐-᱙꘠-꘩꣐-꣙꤀-꤉꧐-꧙꩐-꩙꯰-꯹0-9","]"),kt="A-Za-zªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎↃↄⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々〆〱-〵〻〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛥꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ",Dt="[".concat(kt,"]"),Rt=new RegExp(Dt),Mt="[".concat("$¢-¥֏؋৲৳৻૱௹฿៛₠-₹꠸﷼﹩$¢£¥₩","]"),Lt=new RegExp(Mt),_t="[".concat("̀-ͯ҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-ٰٟۖ-ۜ۟-۪ۤۧۨ-ܑۭܰ-݊ަ-ް߫-߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛ࣤ-ࣾऀ-ंऺ़ु-ै्॑-ॗॢॣঁ়ু-ৄ্ৢৣਁਂ਼ੁੂੇੈੋ-੍ੑੰੱੵઁં઼ુ-ૅેૈ્ૢૣଁ଼ିୁ-ୄ୍ୖୢୣஂீ்ా-ీె-ైొ-్ౕౖౢౣ಼ಿೆೌ್ೢೣു-ൄ്ൢൣ්ි-ුූัิ-ฺ็-๎ັິ-ູົຼ່-ໍཱ༹༘༙༵༷-ཾྀ-྄྆྇ྍ-ྗྙ-ྼ࿆ိ-ူဲ-့္်ွှၘၙၞ-ၠၱ-ၴႂႅႆႍႝ፝-፟ᜒ-᜔ᜲ-᜴ᝒᝓᝲᝳ឴឵ិ-ួំ៉-៓៝᠋-᠍ᢩᤠ-ᤢᤧᤨᤲ᤹-᤻ᨘᨗᩖᩘ-ᩞ᩠ᩢᩥ-ᩬᩳ-᩿᩼ᬀ-ᬃ᬴ᬶ-ᬺᬼᭂ᭫-᭳ᮀᮁᮢ-ᮥᮨᮩ᯦᮫ᯨᯩᯭᯯ-ᯱᰬ-ᰳᰶ᰷᳐-᳔᳒-᳢᳠-᳨᳭᳴᷀-ᷦ᷼-᷿⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〭꙯ꙴ-꙽ꚟ꛰꛱ꠂ꠆ꠋꠥꠦ꣄꣠-꣱ꤦ-꤭ꥇ-ꥑꦀ-ꦂ꦳ꦶ-ꦹꦼꨩ-ꨮꨱꨲꨵꨶꩃꩌꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫬꫭ꫶ꯥꯨ꯭ﬞ︀-️︠-︦","]"),Gt=new RegExp(_t),Bt=new RegExp("[\0-€-ÿĀ-ſḀ-ỿƀ-ɏ̀-ͯ]");function Ut(d){return!(!Rt.test(d)&&!Gt.test(d))&&Bt.test(d)}function Wt(d){return"%"===d||Lt.test(d)}function Vt(d,t){var e="undefined"!=typeof Symbol&&d[Symbol.iterator]||d["@@iterator"];if(e)return(e=e.call(d)).next.bind(e);if(Array.isArray(d)||(e=function(d,t){if(!d)return;if("string"==typeof d)return Ht(d,t);var e=Object.prototype.toString.call(d).slice(8,-1);"Object"===e&&d.constructor&&(e=d.constructor.name);if("Map"===e||"Set"===e)return Array.from(d);if("Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return Ht(d,t)}(d))||t&&d&&"number"==typeof d.length){e&&(d=e);var n=0;return function(){return n>=d.length?{done:!0}:{done:!1,value:d[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Ht(d,t){(null==t||t>d.length)&&(t=d.length);for(var e=0,n=new Array(t);e0){if(i.getNationalPrefixOptionalWhenFormatting())return!0;if(PhoneNumberUtil.formattingRuleHasFirstGroupOnly(i.getNationalPrefixFormattingRule()))return!0;var a=PhoneNumberUtil.normalizeDigitsOnly(d.getRawInput());return util.maybeStripNationalPrefixAndCarrierCode(a,n,null)}return!0}function Xt(d,t){var e=t.indexOf("/");if(e<0)return!1;var n=t.indexOf("/",e+1);return!(n<0)&&(!(d.getCountryCodeSource()===CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN||d.getCountryCodeSource()===CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN)||PhoneNumberUtil.normalizeDigitsOnly(t.substring(0,e))!==String(d.getCountryCode())||t.slice(n+1).indexOf("/")>=0)}function Jt(d,t,e,n,r){var i=normalizeDigits(t,!0),a=zt(e,d,null);if(n(e,d,i,a))return!0;var o=MetadataManager.getAlternateFormatsForCountry(d.getCountryCode()),$=util.getNationalSignificantNumber(d);if(o)for(var u,l=Vt(o.numberFormats());!(u=l()).done;){var c=u.value;if(c.leadingDigitsPatterns().length>0)if(!r.getPatternForRegExp("^"+c.leadingDigitsPatterns()[0]).test($))continue;if(n(e,d,i,a=zt(e,d,c)))return!0}return!1}function zt(d,t,e){if(e){var n=util.getNationalSignificantNumber(t);return util.formatNsnUsingPattern(n,e,"RFC3966",d).split("-")}var r=formatNumber(t,"RFC3966",d),i=r.indexOf(";");i<0&&(i=r.length);var a=r.indexOf("-")+1;return r.slice(a,i).split("-")}function Qt(d,t,e,n){var r=e.split(NON_DIGITS_PATTERN),i=t.hasExtension()?r.length-2:r.length-1;if(1==r.length||r[i].contains(util.getNationalSignificantNumber(t)))return!0;for(var a,o,$=n.length-1;$>0&&i>=0;){if(r[i]!==n[$])return!1;$--,i--}return i>=0&&(a=r[i],o=n[0],a.indexOf(o,a.length-o.length)===a.length-o.length)}function qt(d,t,e,n){var r,i,a=0;if(t.getCountryCodeSource()!==CountryCodeSource.FROM_DEFAULT_COUNTRY){var o=String(t.getCountryCode());a=e.indexOf(o)+o.length()}for(var $=0;$=d.length?{done:!0}:{done:!1,value:d[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function ye(d,t){(null==t||t>d.length)&&(t=d.length);for(var e=0,n=new Array(t);e0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;if(be(this,d),!(e=me(me({},e),{},{defaultCallingCode:e.defaultCallingCode,defaultCountry:e.defaultCountry&&F(e.defaultCountry,n)?e.defaultCountry:void 0,leniency:e.leniency||e.extended?"POSSIBLE":"VALID",maxTries:e.maxTries||Ae})).leniency)throw new TypeError("`Leniency` not supplied");if(e.maxTries<0)throw new TypeError("`maxTries` not supplied");if(this.text=t,this.options=e,this.metadata=n,this.leniency=Kt[e.leniency],!this.leniency)throw new TypeError("Unknown leniency: ".concat(e.leniency,"."));this.maxTries=e.maxTries,this.PATTERN=new RegExp(Ee,"ig"),this.state="NOT_READY",this.searchIndex=0,this.regExpCache=new St(32)}var t,e,n;return t=d,e=[{key:"find",value:function(){for(var d;this.maxTries>0&&null!==(d=this.PATTERN.exec(this.text));){var t=d[0],e=d.index;if(ie(t=te(t),e,this.text)){var n=this.parseAndVerify(t,e,this.text)||this.extractInnerMatch(t,e,this.text);if(n){if(this.options.v2){var r=new jd(n.country||n.countryCallingCode,n.phone,this.metadata);return n.ext&&(r.ext=n.ext),{startsAt:n.startsAt,endsAt:n.endsAt,number:r}}return n}}this.maxTries--}}},{key:"extractInnerMatch",value:function(d,t,e){for(var n,r=he(Ne);!(n=r()).done;)for(var i=n.value,a=!0,o=void 0,$=new RegExp(i,"g");this.maxTries>0&&null!==(o=$.exec(d));){if(a){var u=It(Ie,d.slice(0,o.index)),l=this.parseAndVerify(u,t,e);if(l)return l;this.maxTries--,a=!1}var c=It(Ie,o[1]),s=d.indexOf(c,o.index),f=this.parseAndVerify(c,t+s,e);if(f)return f;this.maxTries--}}},{key:"parseAndVerify",value:function(d,t,e){if(function(d,t,e,n){if(se.test(d)&&!fe.test(d)){if("POSSIBLE"!==n){if(t>0&&!le.test(d)){var r=e[t-1];if(Wt(r)||Ut(r))return!1}var i=t+d.length;if(i=d.length?{done:!0}:{done:!1,value:d[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Ye(d,t){(null==t||t>d.length)&&(t=d.length);for(var e=0,n=new Array(t);e1;)1&t&&(e+=d),t>>=1,d+=d;return e+d}function ze(d,t){return")"===d[t]&&t++,function(d){var t=[],e=0;for(;e=d.length?{done:!0}:{done:!1,value:d[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function $n(d,t){(null==t||t>d.length)&&(t=d.length);for(var e=0,n=new Array(t);e1&&void 0!==arguments[1]?arguments[1]:{},e=t.allowOverflow;if(!d)throw new Error("String is required");var n=cn(d.split(""),this.matchTree,!0);if(n&&n.match&&delete n.matchedChars,!n||!n.overflow||e)return n}}],e&&un(t.prototype,e),n&&un(t,n),Object.defineProperty(t,"prototype",{writable:!1}),d}();function cn(d,t,e){if("string"==typeof t){var n=d.join("");return 0===t.indexOf(n)?d.length===t.length?{match:!0,matchedChars:d}:{partialMatch:!0}:0===n.indexOf(t)?e&&d.length>t.length?{overflow:!0}:{match:!0,matchedChars:d.slice(0,t.length)}:void 0}if(Array.isArray(t)){for(var r=d.slice(),i=0;i=d.length?{done:!0}:{done:!1,value:d[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function fn(d,t){(null==t||t>d.length)&&(t=d.length);for(var e=0,n=new Array(t);e=0)){var e=this.getTemplateForFormat(d,t);return e?(this.setNationalNumberTemplate(e,t),!0):void 0}}},{key:"getSeparatorAfterNationalPrefix",value:function(d){return this.isNANP||d&&d.nationalPrefixFormattingRule()&&gn.test(d.nationalPrefixFormattingRule())?" ":""}},{key:"getInternationalPrefixBeforeCountryCallingCode",value:function(d,t){var e=d.IDDPrefix,n=d.missingPlus;return e?t&&!1===t.spacing?e:e+" ":n?"":"+"}},{key:"getTemplate",value:function(d){if(this.template){for(var t=-1,e=0,n=d.international?this.getInternationalPrefixBeforeCountryCallingCode(d,{spacing:!1}):"";eo.length)){var $=new RegExp("^"+a+"$"),u=e.replace(/\d/g,"9");$.test(u)&&(o=u);var l,c=this.getFormatFormat(d,n);if(this.shouldTryNationalPrefixFormattingRule(d,{international:n,nationalPrefix:r})){var s=c.replace(gd,d.nationalPrefixFormattingRule());if(Y(d.nationalPrefixFormattingRule())===(r||"")+Y("$1")&&(c=s,l=!0,r))for(var f=r.length;f>0;)c=c.replace(/\d/,Ze),f--}var h=o.replace(new RegExp(a),c).replace(new RegExp("9","g"),Ze);return l||(i?h=Je(Ze,i.length)+" "+h:r&&(h=Je(Ze,r.length)+this.getSeparatorAfterNationalPrefix(d)+h)),n&&(h=yd(h)),h}}},{key:"formatNextNationalNumberDigits",value:function(d){var t=function(d,t,e){for(var n,r=Ke(e.split(""));!(n=r()).done;){var i=n.value;if(d.slice(t+1).search(Xe)<0)return;t=d.search(Xe),d=d.replace(Xe,i)}return[d,t]}(this.populatedNationalNumberTemplate,this.populatedNationalNumberTemplatePosition,d);if(t)return this.populatedNationalNumberTemplate=t[0],this.populatedNationalNumberTemplatePosition=t[1],ze(this.populatedNationalNumberTemplate,this.populatedNationalNumberTemplatePosition+1);this.resetFormat()}},{key:"shouldTryNationalPrefixFormattingRule",value:function(d,t){var e=t.international,n=t.nationalPrefix;if(d.nationalPrefixFormattingRule()){var r=d.usesNationalPrefix();if(r&&n||!r&&!e)return!0}}}],e&&hn(t.prototype,e),n&&hn(t,n),Object.defineProperty(t,"prototype",{writable:!1}),d}();function bn(d,t){return function(d){if(Array.isArray(d))return d}(d)||function(d,t){var e=null==d?null:"undefined"!=typeof Symbol&&d[Symbol.iterator]||d["@@iterator"];if(null==e)return;var n,r,i=[],a=!0,o=!1;try{for(e=e.call(d);!(a=(n=e.next()).done)&&(i.push(n.value),!t||i.length!==t);a=!0);}catch(d){o=!0,r=d}finally{try{a||null==e.return||e.return()}finally{if(o)throw r}}return i}(d,t)||function(d,t){if(!d)return;if("string"==typeof d)return vn(d,t);var e=Object.prototype.toString.call(d).slice(8,-1);"Object"===e&&d.constructor&&(e=d.constructor.name);if("Map"===e||"Set"===e)return Array.from(d);if("Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return vn(d,t)}(d,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function vn(d,t){(null==t||t>d.length)&&(t=d.length);for(var e=0,n=new Array(t);e=3;if(t.appendDigits(d),n&&this.extractIddPrefix(t),this.isWaitingForCountryCallingCode(t)){if(!this.extractCountryCallingCode(t))return}else t.appendNationalSignificantNumberDigits(d);t.international||this.hasExtractedNationalSignificantNumber||this.extractNationalSignificantNumber(t.getNationalDigits(),(function(d){return t.update(d)}))}},{key:"isWaitingForCountryCallingCode",value:function(d){var t=d.international,e=d.callingCode;return t&&!e}},{key:"extractCountryCallingCode",value:function(d){var t=_d("+"+d.getDigitsWithoutInternationalPrefix(),this.defaultCountry,this.defaultCallingCode,this.metadata.metadata),e=t.countryCallingCode,n=t.number;if(e)return d.setCallingCode(e),d.update({nationalSignificantNumber:n}),!0}},{key:"reset",value:function(d){if(d){this.hasSelectedNumberingPlan=!0;var t=d._nationalPrefixForParsing();this.couldPossiblyExtractAnotherNationalSignificantNumber=t&&xn.test(t)}else this.hasSelectedNumberingPlan=void 0,this.couldPossiblyExtractAnotherNationalSignificantNumber=void 0}},{key:"extractNationalSignificantNumber",value:function(d,t){if(this.hasSelectedNumberingPlan){var e=Rd(d,this.metadata),n=e.nationalPrefix,r=e.nationalNumber,i=e.carrierCode;if(r!==d)return this.onExtractedNationalNumber(n,i,r,d,t),!0}}},{key:"extractAnotherNationalSignificantNumber",value:function(d,t,e){if(!this.hasExtractedNationalSignificantNumber)return this.extractNationalSignificantNumber(d,e);if(this.couldPossiblyExtractAnotherNationalSignificantNumber){var n=Rd(d,this.metadata),r=n.nationalPrefix,i=n.nationalNumber,a=n.carrierCode;if(i!==t)return this.onExtractedNationalNumber(r,a,i,d,e),!0}}},{key:"onExtractedNationalNumber",value:function(d,t,e,n,r){var i,a,o=n.lastIndexOf(e);if(o>=0&&o===n.length-e.length){a=!0;var $=n.slice(0,o);$!==d&&(i=$)}r({nationalPrefix:d,carrierCode:t,nationalSignificantNumber:e,nationalSignificantNumberMatchesInput:a,complexPrefixBeforeNationalSignificantNumber:i}),this.hasExtractedNationalSignificantNumber=!0,this.onNationalSignificantNumberChange()}},{key:"reExtractNationalSignificantNumber",value:function(d){return!!this.extractAnotherNationalSignificantNumber(d.getNationalDigits(),d.nationalSignificantNumber,(function(t){return d.update(t)}))||(this.extractIddPrefix(d)||this.fixMissingPlus(d)?(this.extractCallingCodeAndNationalSignificantNumber(d),!0):void 0)}},{key:"extractIddPrefix",value:function(d){var t=d.international,e=d.IDDPrefix,n=d.digits;if(d.nationalSignificantNumber,!t&&!e){var r=Dd(n,this.defaultCountry,this.defaultCallingCode,this.metadata.metadata);return void 0!==r&&r!==n?(d.update({IDDPrefix:n.slice(0,n.length-r.length)}),this.startInternationalNumber(d,{country:void 0,callingCode:void 0}),!0):void 0}}},{key:"fixMissingPlus",value:function(d){if(!d.international){var t=Ld(d.digits,this.defaultCountry,this.defaultCallingCode,this.metadata.metadata),e=t.countryCallingCode;if(t.number,e)return d.update({missingPlus:!0}),this.startInternationalNumber(d,{country:d.country,callingCode:e}),!0}}},{key:"startInternationalNumber",value:function(d,t){var e=t.country,n=t.callingCode;d.startInternationalNumber(e,n),d.nationalSignificantNumber&&(d.resetNationalSignificantNumber(),this.onNationalSignificantNumberChange(),this.hasExtractedNationalSignificantNumber=void 0)}},{key:"extractCallingCodeAndNationalSignificantNumber",value:function(d){this.extractCountryCallingCode(d)&&this.extractNationalSignificantNumber(d.getNationalDigits(),(function(t){return d.update(t)}))}}])&&Cn(t.prototype,e),n&&Cn(t,n),Object.defineProperty(t,"prototype",{writable:!1}),d}();function Sn(d){return Sn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(d){return typeof d}:function(d){return d&&"function"==typeof Symbol&&d.constructor===Symbol&&d!==Symbol.prototype?"symbol":typeof d},Sn(d)}function En(d,t){return function(d){if(Array.isArray(d))return d}(d)||function(d,t){var e=null==d?null:"undefined"!=typeof Symbol&&d[Symbol.iterator]||d["@@iterator"];if(null==e)return;var n,r,i=[],a=!0,o=!1;try{for(e=e.call(d);!(a=(n=e.next()).done)&&(i.push(n.value),!t||i.length!==t);a=!0);}catch(d){o=!0,r=d}finally{try{a||null==e.return||e.return()}finally{if(o)throw r}}return i}(d,t)||function(d,t){if(!d)return;if("string"==typeof d)return In(d,t);var e=Object.prototype.toString.call(d).slice(8,-1);"Object"===e&&d.constructor&&(e=d.constructor.name);if("Map"===e||"Set"===e)return Array.from(d);if("Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return In(d,t)}(d,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function In(d,t){(null==t||t>d.length)&&(t=d.length);for(var e=0,n=new Array(t);e1}},{key:"determineTheCountry",value:function(){this.state.setCountry(Ud(this.isInternational()?this.state.callingCode:this.defaultCallingCode,this.state.nationalSignificantNumber,this.metadata))}},{key:"getNumberValue",value:function(){var d=this.state,t=d.digits,e=d.callingCode,n=d.country,r=d.nationalSignificantNumber;if(t)return this.isInternational()?e?"+"+e+r:"+"+t:n||e?"+"+(n?this.metadata.countryCallingCode():e)+r:void 0}},{key:"getNumber",value:function(){var d=this.state,t=d.nationalSignificantNumber,e=d.carrierCode,n=d.callingCode,r=this._getCountry();if(t&&(r||n)){var i=new jd(r||n,t,this.metadata.metadata);return e&&(i.carrierCode=e),i}}},{key:"isPossible",value:function(){var d=this.getNumber();return!!d&&d.isPossible()}},{key:"isValid",value:function(){var d=this.getNumber();return!!d&&d.isValid()}},{key:"getNationalNumber",value:function(){return this.state.nationalSignificantNumber}},{key:"getChars",value:function(){return(this.state.international?"+":"")+this.state.digits}},{key:"getTemplate",value:function(){return this.formatter.getTemplate(this.state)||this.getNonFormattedTemplate()||""}}])&&An(t.prototype,e),n&&An(t,n),Object.defineProperty(t,"prototype",{writable:!1}),d}();function jn(d){return new P(d).getCountries()}function Fn(d,t,e){if(t[d])return new jd(d,t[d],e)}function kn(d,t,e){return e||(e=t,t=void 0),new Tn(t,e).input(d)}function Dn(){return e(tt,arguments)}function Rn(){return e($t,arguments)}function Mn(d,e){return Te.call(this,d,e,t)}function Ln(d){return Tn.call(this,d,t)}function _n(){return P.call(this,t)}Mn.prototype=Object.create(Te.prototype,{}),Mn.prototype.constructor=Mn,Ln.prototype=Object.create(Tn.prototype,{}),Ln.prototype.constructor=Ln,_n.prototype=Object.create(P.prototype,{}),_n.prototype.constructor=_n,d.AsYouType=Ln,d.DIGIT_PLACEHOLDER=Ze,d.Metadata=_n,d.ParseError=s,d.PhoneNumberMatcher=Mn,d.default=Rn,d.findNumbers=function(){return e(Fe,arguments)},d.findPhoneNumbersInText=function(){return e(Ge,arguments)},d.formatIncompletePhoneNumber=function(){return e(kn,arguments)},d.formatRFC3966=od,d.getCountries=function(){return e(jn,arguments)},d.getCountryCallingCode=function(){return e(j,arguments)},d.getExampleNumber=function(){return e(Fn,arguments)},d.getExtPrefix=function(){return e(T,arguments)},d.isPossiblePhoneNumber=function(){return e(gt,arguments)},d.isSupportedCountry=function(){return e(F,arguments)},d.isValidPhoneNumber=function(){return e(st,arguments)},d.parseDigits=Y,d.parseIncompletePhoneNumber=J,d.parsePhoneNumber=Dn,d.parsePhoneNumberCharacter=z,d.parsePhoneNumberFromString=Rn,d.parsePhoneNumberWithError=Dn,d.parseRFC3966=ad,d.searchNumbers=function(){return e(De,arguments)},d.searchPhoneNumbersInText=function(){return e(We,arguments)},d.validatePhoneNumberLength=function(){return e(vt,arguments)},Object.defineProperty(d,"__esModule",{value:!0})})); +//# sourceMappingURL=libphonenumber-max.js.map diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-max.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-max.js.map new file mode 100644 index 00000000..044f16aa --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-max.js.map @@ -0,0 +1 @@ +{"version":3,"file":"libphonenumber-max.js","sources":["../metadata.max.json.js","../max/exports/withMetadataArgument.js","../es6/ParseError.js","../es6/constants.js","../es6/tools/semver-compare.js","../es6/metadata.js","../es6/helpers/extension/createExtensionPattern.js","../es6/helpers/isViablePhoneNumber.js","../es6/helpers/extension/extractExtension.js","../es6/helpers/parseDigits.js","../es6/parseIncompletePhoneNumber.js","../es6/helpers/mergeArrays.js","../es6/helpers/checkNumberLength.js","../es6/isPossibleNumber_.js","../es6/helpers/RFC3966.js","../es6/helpers/matchesEntirely.js","../es6/helpers/getNumberType.js","../es6/validate_.js","../es6/helpers/applyInternationalSeparatorStyle.js","../es6/helpers/formatNationalNumberUsingFormat.js","../es6/helpers/getIddPrefix.js","../es6/format_.js","../es6/PhoneNumber.js","../es6/helpers/stripIddPrefix.js","../es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js","../es6/helpers/extractNationalNumber.js","../es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js","../es6/helpers/extractCountryCallingCode.js","../es6/helpers/getCountryByCallingCode.js","../es6/parse_.js","../es6/parsePhoneNumber_.js","../es6/parsePhoneNumber.js","../es6/parsePhoneNumberFromString_.js","../es6/parsePhoneNumberFromString.js","../es6/isValidPhoneNumber.js","../es6/isPossiblePhoneNumber.js","../es6/validatePhoneNumberLength.js","../es6/findNumbers/LRUCache.js","../es6/findNumbers/RegExpCache.js","../es6/findNumbers/util.js","../es6/findNumbers/utf-8.js","../es6/findNumbers/Leniency.js","../es6/findNumbers/parsePreCandidate.js","../es6/findNumbers/isValidPreCandidate.js","../es6/findNumbers/isValidCandidate.js","../es6/PhoneNumberMatcher.js","../es6/findNumbers_.js","../es6/findNumbers.js","../es6/searchNumbers.js","../es6/findPhoneNumbersInText.js","../es6/searchPhoneNumbersInText.js","../es6/AsYouTypeState.js","../es6/AsYouTypeFormatter.util.js","../es6/AsYouTypeFormatter.complete.js","../es6/AsYouTypeFormatter.PatternParser.js","../es6/AsYouTypeFormatter.PatternMatcher.js","../es6/AsYouTypeFormatter.js","../es6/AsYouTypeParser.js","../es6/AsYouType.js","../es6/getCountries.js","../es6/getExampleNumber.js","../es6/formatIncompletePhoneNumber.js","../max/exports/parsePhoneNumberWithError.js","../max/exports/parsePhoneNumberFromString.js","../max/exports/PhoneNumberMatcher.js","../max/exports/AsYouType.js","../max/exports/Metadata.js","../max/exports/findNumbers.js","../max/exports/findPhoneNumbersInText.js","../max/exports/formatIncompletePhoneNumber.js","../max/exports/getCountries.js","../max/exports/getCountryCallingCode.js","../max/exports/getExampleNumber.js","../max/exports/getExtPrefix.js","../max/exports/isPossiblePhoneNumber.js","../max/exports/isSupportedCountry.js","../max/exports/isValidPhoneNumber.js","../max/exports/searchNumbers.js","../max/exports/searchPhoneNumbersInText.js","../max/exports/validatePhoneNumberLength.js"],"sourcesContent":["// This file is a workaround for a bug in web browsers' \"native\"\n// ES6 importing system which is uncapable of importing \"*.json\" files.\n// https://github.com/catamphetamine/libphonenumber-js/issues/239\nexport default {\"version\":4,\"country_calling_codes\":{\"1\":[\"US\",\"AG\",\"AI\",\"AS\",\"BB\",\"BM\",\"BS\",\"CA\",\"DM\",\"DO\",\"GD\",\"GU\",\"JM\",\"KN\",\"KY\",\"LC\",\"MP\",\"MS\",\"PR\",\"SX\",\"TC\",\"TT\",\"VC\",\"VG\",\"VI\"],\"7\":[\"RU\",\"KZ\"],\"20\":[\"EG\"],\"27\":[\"ZA\"],\"30\":[\"GR\"],\"31\":[\"NL\"],\"32\":[\"BE\"],\"33\":[\"FR\"],\"34\":[\"ES\"],\"36\":[\"HU\"],\"39\":[\"IT\",\"VA\"],\"40\":[\"RO\"],\"41\":[\"CH\"],\"43\":[\"AT\"],\"44\":[\"GB\",\"GG\",\"IM\",\"JE\"],\"45\":[\"DK\"],\"46\":[\"SE\"],\"47\":[\"NO\",\"SJ\"],\"48\":[\"PL\"],\"49\":[\"DE\"],\"51\":[\"PE\"],\"52\":[\"MX\"],\"53\":[\"CU\"],\"54\":[\"AR\"],\"55\":[\"BR\"],\"56\":[\"CL\"],\"57\":[\"CO\"],\"58\":[\"VE\"],\"60\":[\"MY\"],\"61\":[\"AU\",\"CC\",\"CX\"],\"62\":[\"ID\"],\"63\":[\"PH\"],\"64\":[\"NZ\"],\"65\":[\"SG\"],\"66\":[\"TH\"],\"81\":[\"JP\"],\"82\":[\"KR\"],\"84\":[\"VN\"],\"86\":[\"CN\"],\"90\":[\"TR\"],\"91\":[\"IN\"],\"92\":[\"PK\"],\"93\":[\"AF\"],\"94\":[\"LK\"],\"95\":[\"MM\"],\"98\":[\"IR\"],\"211\":[\"SS\"],\"212\":[\"MA\",\"EH\"],\"213\":[\"DZ\"],\"216\":[\"TN\"],\"218\":[\"LY\"],\"220\":[\"GM\"],\"221\":[\"SN\"],\"222\":[\"MR\"],\"223\":[\"ML\"],\"224\":[\"GN\"],\"225\":[\"CI\"],\"226\":[\"BF\"],\"227\":[\"NE\"],\"228\":[\"TG\"],\"229\":[\"BJ\"],\"230\":[\"MU\"],\"231\":[\"LR\"],\"232\":[\"SL\"],\"233\":[\"GH\"],\"234\":[\"NG\"],\"235\":[\"TD\"],\"236\":[\"CF\"],\"237\":[\"CM\"],\"238\":[\"CV\"],\"239\":[\"ST\"],\"240\":[\"GQ\"],\"241\":[\"GA\"],\"242\":[\"CG\"],\"243\":[\"CD\"],\"244\":[\"AO\"],\"245\":[\"GW\"],\"246\":[\"IO\"],\"247\":[\"AC\"],\"248\":[\"SC\"],\"249\":[\"SD\"],\"250\":[\"RW\"],\"251\":[\"ET\"],\"252\":[\"SO\"],\"253\":[\"DJ\"],\"254\":[\"KE\"],\"255\":[\"TZ\"],\"256\":[\"UG\"],\"257\":[\"BI\"],\"258\":[\"MZ\"],\"260\":[\"ZM\"],\"261\":[\"MG\"],\"262\":[\"RE\",\"YT\"],\"263\":[\"ZW\"],\"264\":[\"NA\"],\"265\":[\"MW\"],\"266\":[\"LS\"],\"267\":[\"BW\"],\"268\":[\"SZ\"],\"269\":[\"KM\"],\"290\":[\"SH\",\"TA\"],\"291\":[\"ER\"],\"297\":[\"AW\"],\"298\":[\"FO\"],\"299\":[\"GL\"],\"350\":[\"GI\"],\"351\":[\"PT\"],\"352\":[\"LU\"],\"353\":[\"IE\"],\"354\":[\"IS\"],\"355\":[\"AL\"],\"356\":[\"MT\"],\"357\":[\"CY\"],\"358\":[\"FI\",\"AX\"],\"359\":[\"BG\"],\"370\":[\"LT\"],\"371\":[\"LV\"],\"372\":[\"EE\"],\"373\":[\"MD\"],\"374\":[\"AM\"],\"375\":[\"BY\"],\"376\":[\"AD\"],\"377\":[\"MC\"],\"378\":[\"SM\"],\"380\":[\"UA\"],\"381\":[\"RS\"],\"382\":[\"ME\"],\"383\":[\"XK\"],\"385\":[\"HR\"],\"386\":[\"SI\"],\"387\":[\"BA\"],\"389\":[\"MK\"],\"420\":[\"CZ\"],\"421\":[\"SK\"],\"423\":[\"LI\"],\"500\":[\"FK\"],\"501\":[\"BZ\"],\"502\":[\"GT\"],\"503\":[\"SV\"],\"504\":[\"HN\"],\"505\":[\"NI\"],\"506\":[\"CR\"],\"507\":[\"PA\"],\"508\":[\"PM\"],\"509\":[\"HT\"],\"590\":[\"GP\",\"BL\",\"MF\"],\"591\":[\"BO\"],\"592\":[\"GY\"],\"593\":[\"EC\"],\"594\":[\"GF\"],\"595\":[\"PY\"],\"596\":[\"MQ\"],\"597\":[\"SR\"],\"598\":[\"UY\"],\"599\":[\"CW\",\"BQ\"],\"670\":[\"TL\"],\"672\":[\"NF\"],\"673\":[\"BN\"],\"674\":[\"NR\"],\"675\":[\"PG\"],\"676\":[\"TO\"],\"677\":[\"SB\"],\"678\":[\"VU\"],\"679\":[\"FJ\"],\"680\":[\"PW\"],\"681\":[\"WF\"],\"682\":[\"CK\"],\"683\":[\"NU\"],\"685\":[\"WS\"],\"686\":[\"KI\"],\"687\":[\"NC\"],\"688\":[\"TV\"],\"689\":[\"PF\"],\"690\":[\"TK\"],\"691\":[\"FM\"],\"692\":[\"MH\"],\"850\":[\"KP\"],\"852\":[\"HK\"],\"853\":[\"MO\"],\"855\":[\"KH\"],\"856\":[\"LA\"],\"880\":[\"BD\"],\"886\":[\"TW\"],\"960\":[\"MV\"],\"961\":[\"LB\"],\"962\":[\"JO\"],\"963\":[\"SY\"],\"964\":[\"IQ\"],\"965\":[\"KW\"],\"966\":[\"SA\"],\"967\":[\"YE\"],\"968\":[\"OM\"],\"970\":[\"PS\"],\"971\":[\"AE\"],\"972\":[\"IL\"],\"973\":[\"BH\"],\"974\":[\"QA\"],\"975\":[\"BT\"],\"976\":[\"MN\"],\"977\":[\"NP\"],\"992\":[\"TJ\"],\"993\":[\"TM\"],\"994\":[\"AZ\"],\"995\":[\"GE\"],\"996\":[\"KG\"],\"998\":[\"UZ\"]},\"countries\":{\"AC\":[\"247\",\"00\",\"(?:[01589]\\\\d|[46])\\\\d{4}\",[5,6],0,0,0,0,0,0,0,[[\"6[2-467]\\\\d{3}\",[5]],[\"4\\\\d{4}\",[5]],0,0,0,0,[\"(?:0[1-9]|[1589]\\\\d)\\\\d{4}\",[6]]]],\"AD\":[\"376\",\"00\",\"(?:1|6\\\\d)\\\\d{7}|[135-9]\\\\d{5}\",[6,8,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[135-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]],0,0,0,0,0,0,[[\"[78]\\\\d{5}\",[6]],[\"690\\\\d{6}|[356]\\\\d{5}\",[6,9]],[\"180[02]\\\\d{4}\",[8]],[\"[19]\\\\d{5}\",[6]]]],\"AE\":[\"971\",\"00\",\"(?:[4-7]\\\\d|9[0-689])\\\\d{7}|800\\\\d{2,9}|[2-4679]\\\\d{7}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{2,9})\",\"$1 $2\",[\"60|8\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[236]|[479][2-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{5})\",\"$1 $2 $3\",[\"[479]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"[2-4679][2-8]\\\\d{6}\",[8]],[\"5[024-68]\\\\d{7}\",[9]],[\"400\\\\d{6}|800\\\\d{2,9}\"],[\"900[02]\\\\d{5}\",[9]],0,0,[\"600[25]\\\\d{5}\",[9]],0,0,[\"700[05]\\\\d{5}\",[9]]]],\"AF\":[\"93\",\"00\",\"[2-7]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:[25][0-8]|[34][0-4]|6[0-5])[2-9]\\\\d{6}\"],[\"7\\\\d{8}\"]]],\"AG\":[\"1\",\"011\",\"(?:268|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([457]\\\\d{6})$\",\"268$1\",0,\"268\",[[\"268(?:4(?:6[0-38]|84)|56[0-2])\\\\d{4}\"],[\"268(?:464|7(?:1[3-9]|[28]\\\\d|3[0246]|64|7[0-689]))\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\"],0,0,[\"26840[69]\\\\d{4}\"],[\"26848[01]\\\\d{4}\"]]],\"AI\":[\"1\",\"011\",\"(?:264|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2457]\\\\d{6})$\",\"264$1\",0,\"264\",[[\"264(?:292|4(?:6[12]|9[78]))\\\\d{4}\"],[\"264(?:235|4(?:69|76)|5(?:3[6-9]|8[1-4])|7(?:29|72))\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\"],0,0,[\"264724\\\\d{4}\"]]],\"AL\":[\"355\",\"00\",\"(?:700\\\\d\\\\d|900)\\\\d{3}|8\\\\d{5,7}|(?:[2-5]|6\\\\d)\\\\d{7}\",[6,7,8,9],[[\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"80|9\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2358][2-5]|4\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[23578]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"4505[0-2]\\\\d{3}|(?:[2358][16-9]\\\\d[2-9]|4410)\\\\d{4}|(?:[2358][2-5][2-9]|4(?:[2-57-9][2-9]|6\\\\d))\\\\d{5}\",[8]],[\"6(?:[78][2-9]|9\\\\d)\\\\d{6}\",[9]],[\"800\\\\d{4}\",[7]],[\"900[1-9]\\\\d\\\\d\",[6]],[\"700[2-9]\\\\d{4}\",[8]],0,0,0,0,[\"808[1-9]\\\\d\\\\d\",[6]]]],\"AM\":[\"374\",\"00\",\"(?:[1-489]\\\\d|55|60|77)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]0\"],\"0 $1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2|3[12]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"1|47\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[3-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:(?:1[0-25]|47)\\\\d|2(?:2[2-46]|3[1-8]|4[2-69]|5[2-7]|6[1-9]|8[1-7])|3[12]2)\\\\d{5}\"],[\"(?:33|4[1349]|55|77|88|9[13-9])\\\\d{6}\"],[\"800\\\\d{5}\"],[\"90[016]\\\\d{5}\"],0,0,0,0,[\"60(?:2[78]|3[5-9]|4[02-9]|5[0-46-9]|[6-8]\\\\d|9[01])\\\\d{4}\"],[\"80[1-4]\\\\d{5}\"]]],\"AO\":[\"244\",\"00\",\"[29]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[29]\"]]],0,0,0,0,0,0,[[\"2\\\\d(?:[0134][25-9]|[25-9]\\\\d)\\\\d{5}\"],[\"9[1-59]\\\\d{7}\"]]],\"AR\":[\"54\",\"00\",\"(?:11|[89]\\\\d\\\\d)\\\\d{8}|[2368]\\\\d{9}\",[10,11],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2-$3\",[\"2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])\",\"2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"1\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[68]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[23]\"],\"0$1\",1],[\"(\\\\d)(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9(?:2[2-469]|3[3-578])\",\"9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))\",\"9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 15-$3-$4\",[\"91\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9\"],\"0$1\",0,\"$1 $2 $3-$4\"]],\"0\",0,\"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?\",\"9$1\",0,0,[[\"3888[013-9]\\\\d{5}|3(?:7(?:1[15]|81)|8(?:21|4[16]|69|9[12]))[46]\\\\d{5}|(?:29(?:54|66)|3(?:7(?:55|77)|865))[2-8]\\\\d{5}|(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|473|9(?:[07]2|2[26]|34|46))|3327)[45]\\\\d{5}|(?:2(?:284|3(?:02|23)|657|920)|3(?:4(?:8[27]|92)|541|878))[2-7]\\\\d{5}|(?:2(?:(?:26|62)2|320|477|9(?:42|83))|3(?:329|4(?:[47]6|62|89)|564))[2-6]\\\\d{5}|(?:(?:11[1-8]|670)\\\\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-7]|[235][4-6]|84)|5(?:1[2-9]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:0[45]|[17][2-6]|3[4-6]|[58][3-6])))\\\\d{6}|2(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|475|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\\\d{5}|(?:2(?:2(?:57|81)|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|71)|5(?:25|37|4[347]|71)|7(?:18|5[17])))[3-6]\\\\d{5}|(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[03-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[145]|4[13]|5[468]|7[2-5]|8[26])|8(?:2[5-7]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\\\d{5}\",[10]],[\"93(?:7(?:1[15]|81)[46]|8(?:(?:21|4[16]|69|9[12])[46]|88[013-9]))\\\\d{5}|9(?:29(?:54|66)|3(?:7(?:55|77)|865))[2-8]\\\\d{5}|9(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|473|9(?:[07]2|2[26]|34|46))|3327)[45]\\\\d{5}|9(?:2(?:284|3(?:02|23)|657|920)|3(?:4(?:8[27]|92)|541|878))[2-7]\\\\d{5}|9(?:2(?:(?:26|62)2|320|477|9(?:42|83))|3(?:329|4(?:[47]6|62|89)|564))[2-6]\\\\d{5}|(?:675\\\\d|9(?:11[1-8]\\\\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-7]|[235][4-6]|84)|5(?:1[2-9]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:0[45]|[17][2-6]|3[4-6]|[58][3-6]))))\\\\d{6}|92(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|475|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\\\d{5}|9(?:2(?:2(?:57|81)|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|71)|5(?:25|37|4[347]|71)|7(?:18|5[17])))[3-6]\\\\d{5}|9(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[03-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[145]|4[13]|5[468]|7[2-5]|8[26])|8(?:2[5-7]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\\\d{5}\"],[\"800\\\\d{7,8}\"],[\"60[04579]\\\\d{7}\",[10]],0,0,[\"810\\\\d{7}\",[10]]]],\"AS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|684|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([267]\\\\d{6})$\",\"684$1\",0,\"684\",[[\"6846(?:22|33|44|55|77|88|9[19])\\\\d{4}\"],[\"684(?:2(?:48|5[2468]|72)|7(?:3[13]|70|82))\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\"]]],\"AT\":[\"43\",\"00\",\"1\\\\d{3,12}|2\\\\d{6,12}|43(?:(?:0\\\\d|5[02-9])\\\\d{3,9}|2\\\\d{4,5}|[3467]\\\\d{4}|8\\\\d{4,6}|9\\\\d{4,7})|5\\\\d{4,12}|8\\\\d{7,12}|9\\\\d{8,12}|(?:[367]\\\\d|4[0-24-9])\\\\d{4,11}\",[4,5,6,7,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{3,12})\",\"$1 $2\",[\"1(?:11|[2-9])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})\",\"$1 $2\",[\"517\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"5[079]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,10})\",\"$1 $2\",[\"(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,9})\",\"$1 $2\",[\"[2-467]|5[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,7})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"1(?:11\\\\d|[2-9]\\\\d{3,11})|(?:316|463|(?:51|66|73)2)\\\\d{3,10}|(?:2(?:1[467]|2[13-8]|5[2357]|6[1-46-8]|7[1-8]|8[124-7]|9[1458])|3(?:1[1-578]|3[23568]|4[5-7]|5[1378]|6[1-38]|8[3-68])|4(?:2[1-8]|35|7[1368]|8[2457])|5(?:2[1-8]|3[357]|4[147]|5[12578]|6[37])|6(?:13|2[1-47]|4[135-8]|5[468])|7(?:2[1-8]|35|4[13478]|5[68]|6[16-8]|7[1-6]|9[45]))\\\\d{4,10}\"],[\"6(?:5[0-3579]|6[013-9]|[7-9]\\\\d)\\\\d{4,10}\",[7,8,9,10,11,12,13]],[\"800\\\\d{6,10}\",[9,10,11,12,13]],[\"(?:8[69][2-68]|9(?:0[01]|3[019]))\\\\d{6,10}\",[9,10,11,12,13]],0,0,0,0,[\"5(?:0[1-9]|17|[79]\\\\d)\\\\d{2,10}|7[28]0\\\\d{6,10}\",[5,6,7,8,9,10,11,12,13]],[\"8(?:10|2[018])\\\\d{6,10}|828\\\\d{5}\",[8,9,10,11,12,13]]]],\"AU\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{7}(?:\\\\d(?:\\\\d{2})?)?|8[0-24-9]\\\\d{7})|[2-478]\\\\d{8}|1\\\\d{4,7}\",[5,6,7,8,9,10,12],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"16\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"16\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"14|4\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[2378]\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:30|[89])\"]]],\"0\",0,\"0|(183[12])\",0,0,0,[[\"(?:(?:2(?:[0-26-9]\\\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\\\d|2[0-8]))\\\\d{3}|8(?:51(?:0(?:0[03-9]|[12479]\\\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\\\d|7[89]|9[0-4]))|(?:6[0-8]|[78]\\\\d)\\\\d{3}|9(?:[02-9]\\\\d{3}|1(?:(?:[0-58]\\\\d|6[0135-9])\\\\d|7(?:0[0-24-9]|[1-9]\\\\d)|9(?:[0-46-9]\\\\d|5[0-79])))))\\\\d{3}\",[9]],[\"4(?:83[0-38]|93[0-6])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,[\"163\\\\d{2,6}\",[5,6,7,8,9]],[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"AW\":[\"297\",\"00\",\"(?:[25-79]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[25-9]\"]]],0,0,0,0,0,0,[[\"5(?:2\\\\d|8[1-9])\\\\d{4}\"],[\"(?:290|5[69]\\\\d|6(?:[03]0|22|4[0-2]|[69]\\\\d)|7(?:[34]\\\\d|7[07])|9(?:6[45]|9[4-8]))\\\\d{4}\"],[\"800\\\\d{4}\"],[\"900\\\\d{4}\"],0,0,0,0,[\"(?:28\\\\d|501)\\\\d{4}\"]]],\"AX\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"2\\\\d{4,9}|35\\\\d{4,5}|(?:60\\\\d\\\\d|800)\\\\d{4,6}|7\\\\d{5,11}|(?:[14]\\\\d|3[0-46-9]|50)\\\\d{4,8}\",[5,6,7,8,9,10,11,12],0,\"0\",0,0,0,0,\"18\",[[\"18[1-8]\\\\d{3,6}\",[6,7,8,9]],[\"4946\\\\d{2,6}|(?:4[0-8]|50)\\\\d{4,8}\",[6,7,8,9,10]],[\"800\\\\d{4,6}\",[7,8,9]],[\"[67]00\\\\d{5,6}\",[8,9]],0,0,[\"20\\\\d{4,8}|60[12]\\\\d{5,6}|7(?:099\\\\d{4,5}|5[03-9]\\\\d{3,7})|20[2-59]\\\\d\\\\d|(?:606|7(?:0[78]|1|3\\\\d))\\\\d{7}|(?:10|29|3[09]|70[1-5]\\\\d)\\\\d{4,8}\"]],\"00\"],\"AZ\":[\"994\",\"00\",\"365\\\\d{6}|(?:[124579]\\\\d|60|88)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[28]|2|365|46\",\"1[28]|2|365[45]|46\",\"1[28]|2|365(?:4|5[02])|46\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[13-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:2[12]428|3655[02])\\\\d{4}|(?:2(?:22[0-79]|63[0-28])|3654)\\\\d{5}|(?:(?:1[28]|46)\\\\d|2(?:[014-6]2|[23]3))\\\\d{6}\"],[\"36554\\\\d{4}|(?:[16]0|4[04]|5[015]|7[07]|99)\\\\d{7}\"],[\"88\\\\d{7}\"],[\"900200\\\\d{3}\"]]],\"BA\":[\"387\",\"00\",\"6\\\\d{8}|(?:[35689]\\\\d|49|70)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[1-3]|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2-$3\",[\"[3-5]|6[56]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:3(?:[05-79][2-9]|1[4579]|[23][24-9]|4[2-4689]|8[2457-9])|49[2-579]|5(?:0[2-49]|[13][2-9]|[268][2-4679]|4[4689]|5[2-79]|7[2-69]|9[2-4689]))\\\\d{5}\",[8]],[\"6040\\\\d{5}|6(?:03|[1-356]|44|7\\\\d)\\\\d{6}\"],[\"8[08]\\\\d{6}\",[8]],[\"9[0246]\\\\d{6}\",[8]],0,0,[\"703[235]0\\\\d{3}|70(?:2[0-5]|3[0146]|[56]0)\\\\d{4}\",[8]],0,0,[\"8[12]\\\\d{6}\",[8]]]],\"BB\":[\"1\",\"011\",\"(?:246|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"246$1\",0,\"246\",[[\"246521[0369]\\\\d{3}|246(?:2(?:2[78]|7[0-4])|4(?:1[024-6]|2\\\\d|3[2-9])|5(?:20|[34]\\\\d|54|7[1-3])|6(?:2\\\\d|38)|7[35]7|9(?:1[89]|63))\\\\d{4}\"],[\"246(?:(?:2(?:[3568]\\\\d|4[0-57-9])|3(?:5[2-9]|6[0-6])|4(?:46|5\\\\d)|69[5-7]|8(?:[2-5]\\\\d|83))\\\\d|52(?:1[147]|20))\\\\d{3}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"(?:246976|900[2-9]\\\\d\\\\d)\\\\d{4}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\"],0,[\"246(?:292|367|4(?:1[7-9]|3[01]|4[47-9]|67)|7(?:1[2-9]|2\\\\d|3[016]|53))\\\\d{4}\"],0,[\"24631\\\\d{5}\"]]],\"BD\":[\"880\",\"00\",\"[1-469]\\\\d{9}|8[0-79]\\\\d{7,8}|[2-79]\\\\d{8}|[2-9]\\\\d{7}|[3-9]\\\\d{6}|[57-9]\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1-$2\",[\"31[5-8]|[459]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1-$2\",[\"3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:28|4[14]|5)|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,6})\",\"$1-$2\",[\"[13-9]|22\"],\"0$1\"],[\"(\\\\d)(\\\\d{7,8})\",\"$1-$2\",[\"2\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:4(?:31\\\\d\\\\d|423)|5222)\\\\d{3}(?:\\\\d{2})?|8332[6-9]\\\\d\\\\d|(?:3(?:03[56]|224)|4(?:22[25]|653))\\\\d{3,4}|(?:3(?:42[47]|529|823)|4(?:027|525|65(?:28|8))|562|6257|7(?:1(?:5[3-5]|6[12]|7[156]|89)|22[589]56|32|42675|52(?:[25689](?:56|8)|[347]8)|71(?:6[1267]|75|89)|92374)|82(?:2[59]|32)56|9(?:03[23]56|23(?:256|373)|31|5(?:1|2[4589]56)))\\\\d{3}|(?:3(?:02[348]|22[35]|324|422)|4(?:22[67]|32[236-9]|6(?:2[46]|5[57])|953)|5526|6(?:024|6655)|81)\\\\d{4,5}|(?:2(?:7(?:1[0-267]|2[0-289]|3[0-29]|4[01]|5[1-3]|6[013]|7[0178]|91)|8(?:0[125]|1[1-6]|2[0157-9]|3[1-69]|41|6[1-35]|7[1-5]|8[1-8]|9[0-6])|9(?:0[0-2]|1[0-4]|2[568]|3[3-6]|5[5-7]|6[0136-9]|7[0-7]|8[014-9]))|3(?:0(?:2[025-79]|3[2-4])|181|22[12]|32[2356]|824)|4(?:02[09]|22[348]|32[045]|523|6(?:27|54))|666(?:22|53)|7(?:22[57-9]|42[56]|82[35])8|8(?:0[124-9]|2(?:181|2[02-4679]8)|4[12]|[5-7]2)|9(?:[04]2|2(?:2|328)|81))\\\\d{4}|(?:2(?:222|[45]\\\\d)\\\\d|3(?:1(?:2[5-7]|[5-7])|425|822)|4(?:033|1\\\\d|[257]1|332|4(?:2[246]|5[25])|6(?:2[35]|56|62)|8(?:23|54)|92[2-5])|5(?:02[03489]|22[457]|32[35-79]|42[46]|6(?:[18]|53)|724|826)|6(?:023|2(?:2[2-5]|5[3-5]|8)|32[3478]|42[34]|52[47]|6(?:[18]|6(?:2[34]|5[24]))|[78]2[2-5]|92[2-6])|7(?:02|21\\\\d|[3-589]1|6[12]|72[24])|8(?:217|3[12]|[5-7]1)|9[24]1)\\\\d{5}|(?:(?:3[2-8]|5[2-57-9]|6[03-589])1|4[4689][18])\\\\d{5}|[59]1\\\\d{5}\"],[\"(?:1[13-9]\\\\d|644)\\\\d{7}|(?:3[78]|44|66)[02-9]\\\\d{7}\",[10]],[\"80[03]\\\\d{7}\",[10]],0,0,0,0,0,[\"96(?:0[469]|1[0-47]|3[389]|6[69]|7[78])\\\\d{6}\",[10]]]],\"BE\":[\"32\",\"00\",\"4\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:80|9)0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[239]|4[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[15-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"80[2-8]\\\\d{5}|(?:1[0-69]|[23][2-8]|4[23]|5\\\\d|6[013-57-9]|71|8[1-79]|9[2-4])\\\\d{6}\",[8]],[\"4[5-9]\\\\d{7}\",[9]],[\"800[1-9]\\\\d{4}\",[8]],[\"(?:70(?:2[0-57]|3[04-7]|44|6[569]|7[0579])|90(?:0[0-8]|1[36]|2[0-3568]|3[0-689]|[47][2-68]|5[1-68]|6[0-378]|9[34679]))\\\\d{4}\",[8]],0,0,[\"78(?:0[57]|1[014-8]|2[25]|3[15-8]|48|[56]0|7[06-8]|9\\\\d)\\\\d{4}\",[8]],0,0,[\"7879\\\\d{4}\",[8]]]],\"BF\":[\"226\",\"00\",\"[025-7]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[025-7]\"]]],0,0,0,0,0,0,[[\"2(?:0(?:49|5[23]|6[5-7]|9[016-9])|4(?:4[569]|5[4-6]|6[5-7]|7[0179])|5(?:[34]\\\\d|50|6[5-7]))\\\\d{4}\"],[\"(?:0[1-35-7]|5[1-8]|[67]\\\\d)\\\\d{6}\"]]],\"BG\":[\"359\",\"00\",\"[2-7]\\\\d{6,7}|[89]\\\\d{6,8}|2\\\\d{5}\",[6,7,8,9],[[\"(\\\\d)(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"43[1-6]|70[1-9]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:70|8)0\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"43[1-7]|7\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[48]|9[08]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"2\\\\d{5,7}|(?:43[1-6]|70[1-9])\\\\d{4,5}|(?:[36]\\\\d|4[124-7]|[57][1-9]|8[1-6]|9[1-7])\\\\d{5,6}\",[6,7,8]],[\"(?:43[07-9]|99[69]\\\\d)\\\\d{5}|(?:8[7-9]|98)\\\\d{7}\",[8,9]],[\"800\\\\d{5}\",[8]],[\"90\\\\d{6}\",[8]],0,0,0,0,0,[\"700\\\\d{5}\",[8]]]],\"BH\":[\"973\",\"00\",\"[136-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[13679]|8[047]\"]]],0,0,0,0,0,0,[[\"(?:1(?:3[1356]|6[0156]|7\\\\d)\\\\d|6(?:1[16]\\\\d|500|6(?:0\\\\d|3[12]|44|7[7-9]|88)|9[69][69])|7(?:1(?:11|78)|7\\\\d\\\\d))\\\\d{4}\"],[\"(?:3(?:[1-79]\\\\d|8[0-47-9])\\\\d|6(?:3(?:00|33|6[16])|6(?:3[03-9]|[69]\\\\d|7[0-6])))\\\\d{4}\"],[\"80\\\\d{6}\"],[\"(?:87|9[014578])\\\\d{6}\"],0,0,0,0,0,[\"84\\\\d{6}\"]]],\"BI\":[\"257\",\"00\",\"(?:[267]\\\\d|31)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2367]\"]]],0,0,0,0,0,0,[[\"(?:22|31)\\\\d{6}\"],[\"(?:29|6[1257-9]|7[125-9])\\\\d{6}\"]]],\"BJ\":[\"229\",\"00\",\"(?:[25689]\\\\d|40)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-689]\"]]],0,0,0,0,0,0,[[\"2(?:02|1[037]|2[45]|3[68]|4\\\\d)\\\\d{5}\"],[\"(?:40|5[1-9]|6\\\\d|9[013-9])\\\\d{6}\"],0,0,0,0,[\"81\\\\d{6}\"],0,[\"857[58]\\\\d{4}\"]]],\"BL\":[\"590\",\"00\",\"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:2[7-9]|5[12]|87)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"976[01]\\\\d{5}\"]]],\"BM\":[\"1\",\"011\",\"(?:441|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-8]\\\\d{6})$\",\"441$1\",0,\"441\",[[\"441(?:[46]\\\\d\\\\d|5(?:4\\\\d|60|89))\\\\d{4}\"],[\"441(?:[2378]\\\\d|5[0-39])\\\\d{5}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\"]]],\"BN\":[\"673\",\"00\",\"[2-578]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-578]\"]]],0,0,0,0,0,0,[[\"22[0-7]\\\\d{4}|(?:2[013-9]|[34]\\\\d|5[0-25-9])\\\\d{5}\"],[\"(?:22[89]|[78]\\\\d\\\\d)\\\\d{4}\"],0,0,0,0,0,0,[\"5[34]\\\\d{5}\"]]],\"BO\":[\"591\",\"00(?:1\\\\d)?\",\"(?:[2-467]\\\\d\\\\d|8001)\\\\d{5}\",[8,9],[[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[23]|4[46]\"]],[\"(\\\\d{8})\",\"$1\",[\"[67]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\",0,\"0(1\\\\d)?\",0,0,0,[[\"(?:2(?:2\\\\d\\\\d|5(?:11|[258]\\\\d|9[67])|6(?:12|2\\\\d|9[34])|8(?:2[34]|39|62))|3(?:3\\\\d\\\\d|4(?:6\\\\d|8[24])|8(?:25|42|5[257]|86|9[25])|9(?:[27]\\\\d|3[2-4]|4[248]|5[24]|6[2-6]))|4(?:4\\\\d\\\\d|6(?:11|[24689]\\\\d|72)))\\\\d{4}\",[8]],[\"[67]\\\\d{7}\",[8]],[\"8001[07]\\\\d{4}\",[9]]]],\"BQ\":[\"599\",\"00\",\"(?:[34]1|7\\\\d)\\\\d{5}\",[7],0,0,0,0,0,0,\"[347]\",[[\"(?:318[023]|41(?:6[023]|70)|7(?:1[578]|2[05]|50)\\\\d)\\\\d{3}\"],[\"(?:31(?:8[14-8]|9[14578])|416[14-9]|7(?:0[01]|7[07]|8\\\\d|9[056])\\\\d)\\\\d{3}\"]]],\"BR\":[\"55\",\"00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)\",\"(?:[1-46-9]\\\\d\\\\d|5(?:[0-46-9]\\\\d|5[0-46-9]))\\\\d{8}|[1-9]\\\\d{9}|[3589]\\\\d{8}|[34]\\\\d{7}\",[8,9,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"300|4(?:0[02]|37)\",\"4(?:02|37)0|[34]00\"]],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:[358]|90)0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1 $2-$3\",[\"[16][1-9]|[2-57-9]\"],\"($1)\"]],\"0\",0,\"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\\\d{10,11}))?\",\"$2\",0,0,[[\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-5]\\\\d{7}\",[10]],[\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])(?:7|9\\\\d)\\\\d{7}\",[10,11]],[\"800\\\\d{6,7}\",[9,10]],[\"300\\\\d{6}|[59]00\\\\d{6,7}\",[9,10]],0,0,0,0,0,[\"(?:30[03]\\\\d{3}|4(?:0(?:0\\\\d|20)|370))\\\\d{4}|300\\\\d{5}\",[8,10]]]],\"BS\":[\"1\",\"011\",\"(?:242|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([3-8]\\\\d{6})$\",\"242$1\",0,\"242\",[[\"242(?:3(?:02|[236][1-9]|4[0-24-9]|5[0-68]|7[347]|8[0-4]|9[2-467])|461|502|6(?:0[1-4]|12|2[013]|[45]0|7[67]|8[78]|9[89])|7(?:02|88))\\\\d{4}\"],[\"242(?:3(?:5[79]|7[56]|95)|4(?:[23][1-9]|4[1-35-9]|5[1-8]|6[2-8]|7\\\\d|81)|5(?:2[45]|3[35]|44|5[1-46-9]|65|77)|6[34]6|7(?:27|38)|8(?:0[1-9]|1[02-9]|2\\\\d|[89]9))\\\\d{4}\"],[\"242300\\\\d{4}|8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\"],0,[\"242225\\\\d{4}\"]]],\"BT\":[\"975\",\"00\",\"[17]\\\\d{7}|[2-8]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-68]|7[246]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[67]|7\"]]],0,0,0,0,0,0,[[\"(?:2[3-6]|[34][5-7]|5[236]|6[2-46]|7[246]|8[2-4])\\\\d{5}\",[7]],[\"(?:1[67]|77)\\\\d{6}\",[8]]]],\"BW\":[\"267\",\"00\",\"(?:0800|(?:[37]|800)\\\\d)\\\\d{6}|(?:[2-6]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[24-6]|3[15-79]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]],0,0,0,0,0,0,[[\"(?:2(?:4[0-48]|6[0-24]|9[0578])|3(?:1[0-35-9]|55|[69]\\\\d|7[013])|4(?:6[03]|7[1267]|9[0-5])|5(?:3[03489]|4[0489]|7[1-47]|88|9[0-49])|6(?:2[1-35]|5[149]|8[067]))\\\\d{4}\",[7]],[\"(?:321|7(?:[1-7]\\\\d|8[01]))\\\\d{5}\",[8]],[\"(?:0800|800\\\\d)\\\\d{6}\",[10]],[\"90\\\\d{5}\",[7]],0,0,0,0,[\"79(?:1(?:[01]\\\\d|2[0-7])|2[0-7]\\\\d)\\\\d{3}\",[8]]]],\"BY\":[\"375\",\"810\",\"(?:[12]\\\\d|33|44|902)\\\\d{7}|8(?:0[0-79]\\\\d{5,7}|[1-7]\\\\d{9})|8(?:1[0-489]|[5-79]\\\\d)\\\\d{7}|8[1-79]\\\\d{6,7}|8[0-79]\\\\d{5}|8\\\\d{5}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"800\"],\"8 $1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,4})\",\"$1 $2 $3\",[\"800\"],\"8 $1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{3})\",\"$1 $2-$3\",[\"1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])\",\"1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"1(?:[56]|7[467])|2[1-3]\"],\"8 0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-4]\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"8 $1\"]],\"8\",0,\"0|80?\",0,0,0,[[\"(?:1(?:5(?:1[1-5]|[24]\\\\d|6[2-4]|9[1-7])|6(?:[235]\\\\d|4[1-7])|7\\\\d\\\\d)|2(?:1(?:[246]\\\\d|3[0-35-9]|5[1-9])|2(?:[235]\\\\d|4[0-8])|3(?:[26]\\\\d|3[02-79]|4[024-7]|5[03-7])))\\\\d{5}\",[9]],[\"(?:2(?:5[5-79]|9[1-9])|(?:33|44)\\\\d)\\\\d{6}\",[9]],[\"800\\\\d{3,7}|8(?:0[13]|20\\\\d)\\\\d{7}\"],[\"(?:810|902)\\\\d{7}\",[10]],0,0,0,0,[\"249\\\\d{6}\",[9]]],\"8~10\"],\"BZ\":[\"501\",\"00\",\"(?:0800\\\\d|[2-8])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-8]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"0\"]]],0,0,0,0,0,0,[[\"(?:2(?:[02]\\\\d|36|[68]0)|[3-58](?:[02]\\\\d|[68]0)|7(?:[02]\\\\d|32|[68]0))\\\\d{4}\",[7]],[\"6[0-35-7]\\\\d{5}\",[7]],[\"0800\\\\d{7}\",[11]]]],\"CA\":[\"1\",\"011\",\"(?:[2-8]\\\\d|90)\\\\d{8}|3\\\\d{6}\",[7,10],0,\"1\",0,0,0,0,0,[[\"(?:2(?:04|[23]6|[48]9|50|63)|3(?:06|43|6[578])|4(?:03|1[68]|3[178]|50|68|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|13|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\\\d{6}\",[10]],[\"\",[10]],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",[10]],[\"900[2-9]\\\\d{6}\",[10]],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|(?:5(?:00|2[125-7]|33|44|66|77|88)|622)[2-9]\\\\d{6}\",[10]],0,[\"310\\\\d{4}\",[7]],0,[\"600[2-9]\\\\d{6}\",[10]]]],\"CC\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"0|([59]\\\\d{7})$\",\"8$1\",0,0,[[\"8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\\\d|70[23]|959))\\\\d{3}\",[9]],[\"4(?:83[0-38]|93[0-6])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"CD\":[\"243\",\"00\",\"[189]\\\\d{8}|[1-68]\\\\d{6}\",[7,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[1-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"12\\\\d{7}|[1-6]\\\\d{6}\"],[\"88\\\\d{5}|(?:8[0-59]|9[017-9])\\\\d{7}\"]]],\"CF\":[\"236\",\"00\",\"(?:[27]\\\\d{3}|8776)\\\\d{4}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[278]\"]]],0,0,0,0,0,0,[[\"2[12]\\\\d{6}\"],[\"7[02457]\\\\d{6}\"],0,[\"8776\\\\d{4}\"]]],\"CG\":[\"242\",\"00\",\"222\\\\d{6}|(?:0\\\\d|80)\\\\d{7}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[02]\"]]],0,0,0,0,0,0,[[\"222[1-589]\\\\d{5}\"],[\"026(?:1[0-5]|6[6-9])\\\\d{4}|0(?:[14-6]\\\\d\\\\d|2(?:40|5[5-8]|6[07-9]))\\\\d{5}\"],0,[\"80(?:0\\\\d\\\\d|120)\\\\d{4}\"]]],\"CH\":[\"41\",\"00\",\"8\\\\d{11}|[2-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8[047]|90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]|81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:2[12467]|3[1-4]|4[134]|5[256]|6[12]|[7-9]1)\\\\d{7}\"],[\"7[35-9]\\\\d{7}\"],[\"800\\\\d{6}\"],[\"90[016]\\\\d{6}\"],[\"878\\\\d{6}\"],0,[\"5[18]\\\\d{7}\"],[\"74[0248]\\\\d{6}\"],0,[\"84[0248]\\\\d{6}\"]]],\"CI\":[\"225\",\"00\",\"[02]\\\\d{9}\",[10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d)(\\\\d{5})\",\"$1 $2 $3 $4\",[\"2\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"0\"]]],0,0,0,0,0,0,[[\"2(?:[15]\\\\d{3}|7(?:2(?:0[23]|1[2357]|2[245]|3[45]|4[3-5])|3(?:06|1[69]|[2-6]7)))\\\\d{5}\"],[\"0704[0-7]\\\\d{5}|0(?:[15]\\\\d\\\\d|7(?:0[0-37-9]|[4-9][7-9]))\\\\d{6}\"]]],\"CK\":[\"682\",\"00\",\"[2-578]\\\\d{4}\",[5],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"[2-578]\"]]],0,0,0,0,0,0,[[\"(?:2\\\\d|3[13-7]|4[1-5])\\\\d{3}\"],[\"[578]\\\\d{4}\"]]],\"CL\":[\"56\",\"(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0\",\"12300\\\\d{6}|6\\\\d{9,10}|[2-9]\\\\d{8}\",[9,10,11],[[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"219\",\"2196\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[1-36]\"],\"($1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9[2-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"60|8\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"60\"]]],0,0,0,0,0,0,[[\"2(?:1982[0-6]|3314[05-9])\\\\d{3}|(?:2(?:1(?:160|962)|3(?:2\\\\d\\\\d|3(?:[0346]\\\\d|1[0-35-9]|2[1-9]|5[0-24-9]|7[0-3])|600)|646[59])|80[1-9]\\\\d\\\\d|9(?:3(?:[0-57-9]\\\\d\\\\d|6(?:0[02-9]|[1-9]\\\\d))|6(?:[0-8]\\\\d\\\\d|9(?:[02-79]\\\\d|1[05-9]))|7[1-9]\\\\d\\\\d|9(?:[03-9]\\\\d\\\\d|1(?:[0235-9]\\\\d|4[0-24-9])|2(?:[0-79]\\\\d|8[0-46-9]))))\\\\d{4}|(?:22|3[2-5]|[47][1-35]|5[1-3578]|6[13-57]|8[1-9]|9[2458])\\\\d{7}\",[9]],[\"\",[9]],[\"(?:123|8)00\\\\d{6}\",[9,11]],0,0,0,0,0,[\"44\\\\d{7}\",[9]],[\"600\\\\d{7,8}\",[10,11]]]],\"CM\":[\"237\",\"00\",\"[26]\\\\d{8}|88\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"88\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[26]|88\"]]],0,0,0,0,0,0,[[\"2(?:22|33)\\\\d{6}\",[9]],[\"(?:24[23]|6[25-9]\\\\d)\\\\d{6}\",[9]],[\"88\\\\d{6,7}\"]]],\"CN\":[\"86\",\"00|1(?:[12]\\\\d|79)\\\\d\\\\d00\",\"1[127]\\\\d{8,9}|2\\\\d{9}(?:\\\\d{2})?|[12]\\\\d{6,7}|86\\\\d{6}|(?:1[03-689]\\\\d|6)\\\\d{7,9}|(?:[3-579]\\\\d|8[0-57-9])\\\\d{6,9}\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5,6})\",\"$1 $2\",[\"(?:10|2[0-57-9])[19]\",\"(?:10|2[0-57-9])(?:10|9[56])\",\"(?:10|2[0-57-9])(?:100|9[56])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]\",\"(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))[19]\",\"85[23](?:10|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:10|9[56])\",\"85[23](?:100|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100|9[56])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:4|80)0\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|2(?:[02-57-9]|1[1-9])\",\"10|2(?:[02-57-9]|1[1-9])\",\"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-578]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"1[3-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"[12]\"],\"0$1\",1]],\"0\",0,\"0|(1(?:[12]\\\\d|79)\\\\d\\\\d)\",0,0,0,[[\"(?:10(?:[02-79]\\\\d\\\\d|[18](?:0[1-9]|[1-9]\\\\d))|21(?:[18](?:0[1-9]|[1-9]\\\\d)|[2-79]\\\\d\\\\d))\\\\d{5}|(?:43[35]|754)\\\\d{7,8}|8(?:078\\\\d{7}|51\\\\d{7,8})|(?:10|(?:2|85)1|43[35]|754)(?:100\\\\d\\\\d|95\\\\d{3,4})|(?:2[02-57-9]|3(?:11|7[179])|4(?:[15]1|3[12])|5(?:1\\\\d|2[37]|3[12]|51|7[13-79]|9[15])|7(?:[39]1|5[57]|6[09])|8(?:71|98))(?:[02-8]\\\\d{7}|1(?:0(?:0\\\\d\\\\d(?:\\\\d{3})?|[1-9]\\\\d{5})|[1-9]\\\\d{6})|9(?:[0-46-9]\\\\d{6}|5\\\\d{3}(?:\\\\d(?:\\\\d{2})?)?))|(?:3(?:1[02-9]|35|49|5\\\\d|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|3[46-9]|5[2-9]|6[47-9]|7\\\\d|8[23])|5(?:3[03-9]|4[36]|5[02-9]|6[1-46]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[17]\\\\d|2[248]|3[04-9]|4[3-6]|5[0-3689]|6[2368]|9[02-9])|8(?:1[236-8]|2[5-7]|3\\\\d|5[2-9]|7[02-9]|8[36-8]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:[02-8]\\\\d{6}|1(?:0(?:0\\\\d\\\\d(?:\\\\d{2})?|[1-9]\\\\d{4})|[1-9]\\\\d{5})|9(?:[0-46-9]\\\\d{5}|5\\\\d{3,5}))\",[7,8,9,10,11]],[\"1740[0-5]\\\\d{6}|1(?:[38]\\\\d|4[57]|[59][0-35-9]|6[25-7]|7[0-35-8])\\\\d{8}\",[11]],[\"(?:(?:10|21)8|8)00\\\\d{7}\",[10,12]],[\"16[08]\\\\d{5}\",[8]],0,0,0,0,0,[\"400\\\\d{7}|950\\\\d{7,8}|(?:10|2[0-57-9]|3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))96\\\\d{3,4}\",[7,8,9,10,11]]],\"00\"],\"CO\":[\"57\",\"00(?:4(?:[14]4|56)|[579])\",\"(?:60\\\\d\\\\d|9101)\\\\d{6}|(?:1\\\\d|3)\\\\d{9}\",[10,11],[[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"6\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3[0-357]|91\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{7})\",\"$1-$2-$3\",[\"1\"],\"0$1\",0,\"$1 $2 $3\"]],\"0\",0,\"0(4(?:[14]4|56)|[579])?\",0,0,0,[[\"601055(?:[0-4]\\\\d|50)\\\\d\\\\d|6010(?:[0-4]\\\\d|5[0-4])\\\\d{4}|60[124-8][2-9]\\\\d{6}\",[10]],[\"3333(?:0(?:0\\\\d|1[0-5])|[4-9]\\\\d\\\\d)\\\\d{3}|(?:3(?:24[1-9]|3(?:00|3[0-24-9]))|9101)\\\\d{6}|3(?:0[0-5]|1\\\\d|2[0-3]|5[01]|70)\\\\d{7}\",[10]],[\"1800\\\\d{7}\",[11]],[\"19(?:0[01]|4[78])\\\\d{7}\",[11]]]],\"CR\":[\"506\",\"00\",\"(?:8\\\\d|90)\\\\d{8}|(?:[24-8]\\\\d{3}|3005)\\\\d{4}\",[8,10],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[3-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[89]\"]]],0,0,\"(19(?:0[0-2468]|1[09]|20|66|77|99))\",0,0,0,[[\"210[7-9]\\\\d{4}|2(?:[024-7]\\\\d|1[1-9])\\\\d{5}\",[8]],[\"(?:3005\\\\d|6500[01])\\\\d{3}|(?:5[07]|6[0-4]|7[0-3]|8[3-9])\\\\d{6}\",[8]],[\"800\\\\d{7}\",[10]],[\"90[059]\\\\d{7}\",[10]],0,0,0,0,[\"(?:210[0-6]|4\\\\d{3}|5100)\\\\d{4}\",[8]]]],\"CU\":[\"53\",\"119\",\"[27]\\\\d{6,7}|[34]\\\\d{5,7}|(?:5|8\\\\d\\\\d)\\\\d{7}\",[6,7,8,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"2[1-4]|[34]\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{6,7})\",\"$1 $2\",[\"7\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"5\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:3[23]|48)\\\\d{4,6}|(?:31|4[36]|8(?:0[25]|78)\\\\d)\\\\d{6}|(?:2[1-4]|4[1257]|7\\\\d)\\\\d{5,6}\"],[\"5\\\\d{7}\",[8]],[\"800\\\\d{7}\",[10]],0,0,0,0,0,0,[\"807\\\\d{7}\",[10]]]],\"CV\":[\"238\",\"0\",\"(?:[2-59]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2-589]\"]]],0,0,0,0,0,0,[[\"2(?:2[1-7]|3[0-8]|4[12]|5[1256]|6\\\\d|7[1-3]|8[1-5])\\\\d{4}\"],[\"(?:36|5[1-389]|9\\\\d)\\\\d{5}\"],[\"800\\\\d{4}\"],0,0,0,0,0,[\"(?:3[3-5]|4[356])\\\\d{5}\"]]],\"CW\":[\"599\",\"00\",\"(?:[34]1|60|(?:7|9\\\\d)\\\\d)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[3467]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9[4-8]\"]]],0,0,0,0,0,\"[69]\",[[\"9(?:4(?:3[0-5]|4[14]|6\\\\d)|50\\\\d|7(?:2[014]|3[02-9]|4[4-9]|6[357]|77|8[7-9])|8(?:3[39]|[46]\\\\d|7[01]|8[57-9]))\\\\d{4}\"],[\"953[01]\\\\d{4}|9(?:5[12467]|6[5-9])\\\\d{5}\"],0,0,0,0,0,[\"955\\\\d{5}\",[8]],0,[\"60[0-2]\\\\d{4}\",[7]]]],\"CX\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"0|([59]\\\\d{7})$\",\"8$1\",0,0,[[\"8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\\\d|7(?:0[01]|1[0-2])|958))\\\\d{3}\",[9]],[\"4(?:83[0-38]|93[0-6])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"CY\":[\"357\",\"00\",\"(?:[279]\\\\d|[58]0)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[257-9]\"]]],0,0,0,0,0,0,[[\"2[2-6]\\\\d{6}\"],[\"9[4-79]\\\\d{6}\"],[\"800\\\\d{5}\"],[\"90[09]\\\\d{5}\"],[\"700\\\\d{5}\"],0,[\"(?:50|77)\\\\d{6}\"],0,0,[\"80[1-9]\\\\d{5}\"]]],\"CZ\":[\"420\",\"00\",\"(?:[2-578]\\\\d|60)\\\\d{7}|9\\\\d{8,11}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]|9[015-7]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"96\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]],0,0,0,0,0,0,[[\"(?:2\\\\d|3[1257-9]|4[16-9]|5[13-9])\\\\d{7}\"],[\"(?:60[1-8]|7(?:0[2-5]|[2379]\\\\d))\\\\d{6}\"],[\"800\\\\d{6}\"],[\"9(?:0[05689]|76)\\\\d{6}\"],[\"70[01]\\\\d{6}\"],0,[\"9(?:5\\\\d|7[2-4])\\\\d{6}\"],0,[\"9[17]0\\\\d{6}\"],[\"8[134]\\\\d{7}\"]]],\"DE\":[\"49\",\"00\",\"[2579]\\\\d{5,14}|49(?:[34]0|69|8\\\\d)\\\\d\\\\d?|49(?:37|49|60|7[089]|9\\\\d)\\\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\\\d{1,8}|(?:1|[368]\\\\d|4[0-8])\\\\d{3,13}|49(?:[015]\\\\d|2[13]|31|[46][1-8])\\\\d{1,9}\",[4,5,6,7,8,9,10,11,12,13,14,15],[[\"(\\\\d{2})(\\\\d{3,13})\",\"$1 $2\",[\"3[02]|40|[68]9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,12})\",\"$1 $2\",[\"2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\",\"2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2,11})\",\"$1 $2\",[\"[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]\",\"[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"138\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{2,10})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,11})\",\"$1 $2\",[\"181\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{4,10})\",\"$1 $2 $3\",[\"1(?:3|80)|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"1[67]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,12})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"185\",\"1850\",\"18500\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"18[68]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"15[0568]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"15[1279]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{8})\",\"$1 $2\",[\"18\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{7,8})\",\"$1 $2 $3\",[\"1(?:6[023]|7)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{7})\",\"$1 $2 $3\",[\"15[279]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{8})\",\"$1 $2 $3\",[\"15\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"32\\\\d{9,11}|49[1-6]\\\\d{10}|322\\\\d{6}|49[0-7]\\\\d{3,9}|(?:[34]0|[68]9)\\\\d{3,13}|(?:2(?:0[1-689]|[1-3569]\\\\d|4[0-8]|7[1-7]|8[0-7])|3(?:[3569]\\\\d|4[0-79]|7[1-7]|8[1-8])|4(?:1[02-9]|[2-48]\\\\d|5[0-6]|6[0-8]|7[0-79])|5(?:0[2-8]|[124-6]\\\\d|[38][0-8]|[79][0-7])|6(?:0[02-9]|[1-358]\\\\d|[47][0-8]|6[1-9])|7(?:0[2-8]|1[1-9]|[27][0-7]|3\\\\d|[4-6][0-8]|8[0-5]|9[013-7])|8(?:0[2-9]|1[0-79]|2\\\\d|3[0-46-9]|4[0-6]|5[013-9]|6[1-8]|7[0-8]|8[0-24-6])|9(?:0[6-9]|[1-4]\\\\d|[589][0-7]|6[0-8]|7[0-467]))\\\\d{3,12}\",[5,6,7,8,9,10,11,12,13,14,15]],[\"15[0-25-9]\\\\d{8}|1(?:6[023]|7\\\\d)\\\\d{7,8}\",[10,11]],[\"800\\\\d{7,12}\",[10,11,12,13,14,15]],[\"(?:137[7-9]|900(?:[135]|9\\\\d))\\\\d{6}\",[10,11]],[\"700\\\\d{8}\",[11]],0,[\"18(?:1\\\\d{5,11}|[2-9]\\\\d{8})\",[8,9,10,11,12,13,14]],[\"16(?:4\\\\d{1,10}|[89]\\\\d{1,11})\",[4,5,6,7,8,9,10,11,12,13,14]],0,[\"180\\\\d{5,11}|13(?:7[1-6]\\\\d\\\\d|8)\\\\d{4}\",[7,8,9,10,11,12,13,14]]]],\"DJ\":[\"253\",\"00\",\"(?:2\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[27]\"]]],0,0,0,0,0,0,[[\"2(?:1[2-5]|7[45])\\\\d{5}\"],[\"77\\\\d{6}\"]]],\"DK\":[\"45\",\"00\",\"[2-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-9]\"]]],0,0,0,0,0,0,[[\"(?:[2-7]\\\\d|8[126-9]|9[1-46-9])\\\\d{6}\"],[\"\"],[\"80\\\\d{6}\"],[\"90\\\\d{6}\"]]],\"DM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|767|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-7]\\\\d{6})$\",\"767$1\",0,\"767\",[[\"767(?:2(?:55|66)|4(?:2[01]|4[0-25-9])|50[0-4])\\\\d{4}\"],[\"767(?:2(?:[2-4689]5|7[5-7])|31[5-7]|61[1-8]|70[1-6])\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\"]]],\"DO\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"8001|8[024]9\",[[\"8(?:[04]9[2-9]\\\\d\\\\d|29(?:2(?:[0-59]\\\\d|6[04-9]|7[0-27]|8[0237-9])|3(?:[0-35-9]\\\\d|4[7-9])|[45]\\\\d\\\\d|6(?:[0-27-9]\\\\d|[3-5][1-9]|6[0135-8])|7(?:0[013-9]|[1-37]\\\\d|4[1-35689]|5[1-4689]|6[1-57-9]|8[1-79]|9[1-8])|8(?:0[146-9]|1[0-48]|[248]\\\\d|3[1-79]|5[01589]|6[013-68]|7[124-8]|9[0-8])|9(?:[0-24]\\\\d|3[02-46-9]|5[0-79]|60|7[0169]|8[57-9]|9[02-9])))\\\\d{4}\"],[\"8[024]9[2-9]\\\\d{6}\"],[\"8(?:00(?:14|[2-9]\\\\d)|(?:33|44|55|66|77|88)[2-9]\\\\d)\\\\d{5}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\"]]],\"DZ\":[\"213\",\"00\",\"(?:[1-4]|[5-79]\\\\d|80)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-8]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"9619\\\\d{5}|(?:1\\\\d|2[013-79]|3[0-8]|4[013-689])\\\\d{6}\"],[\"(?:5(?:4[0-29]|5\\\\d|6[0-2])|6(?:[569]\\\\d|7[0-6])|7[7-9]\\\\d)\\\\d{6}\",[9]],[\"800\\\\d{6}\",[9]],[\"80[3-689]1\\\\d{5}\",[9]],0,0,0,0,[\"98[23]\\\\d{6}\",[9]],[\"80[12]1\\\\d{5}\",[9]]]],\"EC\":[\"593\",\"00\",\"1\\\\d{9,10}|(?:[2-7]|9\\\\d)\\\\d{7}\",[8,9,10,11],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[2-7]\"],\"(0$1)\",0,\"$1-$2-$3\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1\"]]],\"0\",0,0,0,0,0,[[\"[2-7][2-7]\\\\d{6}\",[8]],[\"964[0-2]\\\\d{5}|9(?:39|[57][89]|6[0-36-9]|[89]\\\\d)\\\\d{6}\",[9]],[\"1800\\\\d{7}|1[78]00\\\\d{6}\",[10,11]],0,0,0,0,0,[\"[2-7]890\\\\d{4}\",[8]]]],\"EE\":[\"372\",\"00\",\"8\\\\d{9}|[4578]\\\\d{7}|(?:[3-8]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88\",\"[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88\"]],[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[45]|8(?:00|[1-49])\",\"[45]|8(?:00[1-9]|[1-49])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]],0,0,0,0,0,0,[[\"(?:3[23589]|4[3-8]|6\\\\d|7[1-9]|88)\\\\d{5}\",[7]],[\"(?:5\\\\d{5}|8(?:1(?:0(?:000|[3-9]\\\\d\\\\d)|(?:1(?:0[236]|1\\\\d)|(?:23|[3-79]\\\\d)\\\\d)\\\\d)|2(?:0(?:000|(?:19|[2-7]\\\\d)\\\\d)|(?:(?:[124-6]\\\\d|3[5-9])\\\\d|7(?:[3679]\\\\d|8[13-9])|8(?:[2-6]\\\\d|7[01]))\\\\d)|[349]\\\\d{4}))\\\\d\\\\d|5(?:(?:[02]\\\\d|5[0-478])\\\\d|1(?:[0-8]\\\\d|95)|6(?:4[0-4]|5[1-589]))\\\\d{3}\",[7,8]],[\"800(?:(?:0\\\\d\\\\d|1)\\\\d|[2-9])\\\\d{3}\"],[\"(?:40\\\\d\\\\d|900)\\\\d{4}\",[7,8]],[\"70[0-2]\\\\d{5}\",[8]]]],\"EG\":[\"20\",\"00\",\"[189]\\\\d{8,9}|[24-6]\\\\d{8}|[135]\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{7,8})\",\"$1 $2\",[\"[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,7})\",\"$1 $2\",[\"1[35]|[4-6]|8[2468]|9[235-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[189]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"13[23]\\\\d{6}|(?:15|57)\\\\d{6,7}|(?:2[2-4]|3|4[05-8]|5[05]|6[24-689]|8[2468]|9[235-7])\\\\d{7}\",[8,9]],[\"1[0-25]\\\\d{8}\",[10]],[\"800\\\\d{7}\",[10]],[\"900\\\\d{7}\",[10]]]],\"EH\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],0,\"0\",0,0,0,0,\"528[89]\",[[\"528[89]\\\\d{5}\"],[\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:[017]\\\\d|2[0-2]|6[0-8]|8[0-3]))\\\\d{6}\"],[\"80\\\\d{7}\"],[\"89\\\\d{7}\"],0,0,0,0,[\"592(?:4[0-2]|93)\\\\d{4}\"]]],\"ER\":[\"291\",\"00\",\"[178]\\\\d{6}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[178]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:1(?:1[12568]|[24]0|55|6[146])|8\\\\d\\\\d)\\\\d{4}\"],[\"(?:17[1-3]|7\\\\d\\\\d)\\\\d{4}\"]]],\"ES\":[\"34\",\"00\",\"[5-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]00\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-9]\"]]],0,0,0,0,0,0,[[\"96906(?:0[0-8]|1[1-9]|[2-9]\\\\d)\\\\d\\\\d|9(?:69(?:0[0-57-9]|[1-9]\\\\d)|73(?:[0-8]\\\\d|9[1-9]))\\\\d{4}|(?:8(?:[1356]\\\\d|[28][0-8]|[47][1-9])|9(?:[135]\\\\d|[268][0-8]|4[1-9]|7[124-9]))\\\\d{6}\"],[\"(?:590[16]00\\\\d|9(?:6906(?:09|10)|7390\\\\d\\\\d))\\\\d\\\\d|(?:6\\\\d|7[1-48])\\\\d{7}\"],[\"[89]00\\\\d{6}\"],[\"80[367]\\\\d{6}\"],[\"70\\\\d{7}\"],0,[\"51\\\\d{7}\"],0,0,[\"90[12]\\\\d{6}\"]]],\"ET\":[\"251\",\"00\",\"(?:11|[2-579]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-579]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"11667[01]\\\\d{3}|(?:11(?:1(?:1[124]|2[2-7]|3[1-5]|5[5-8]|8[6-8])|2(?:13|3[6-8]|5[89]|7[05-9]|8[2-6])|3(?:2[01]|3[0-289]|4[1289]|7[1-4]|87)|4(?:1[69]|3[2-49]|4[0-3]|6[5-8])|5(?:1[578]|44|5[0-4])|6(?:1[78]|2[69]|39|4[5-7]|5[1-5]|6[0-59]|8[015-8]))|2(?:2(?:11[1-9]|22[0-7]|33\\\\d|44[1467]|66[1-68])|5(?:11[124-6]|33[2-8]|44[1467]|55[14]|66[1-3679]|77[124-79]|880))|3(?:3(?:11[0-46-8]|(?:22|55)[0-6]|33[0134689]|44[04]|66[01467])|4(?:44[0-8]|55[0-69]|66[0-3]|77[1-5]))|4(?:6(?:119|22[0-24-7]|33[1-5]|44[13-69]|55[14-689]|660|88[1-4])|7(?:(?:11|22)[1-9]|33[13-7]|44[13-6]|55[1-689]))|5(?:7(?:227|55[05]|(?:66|77)[14-8])|8(?:11[149]|22[013-79]|33[0-68]|44[013-8]|550|66[1-5]|77\\\\d)))\\\\d{4}\"],[\"7001\\\\d{5}|(?:7(?:0[1-9]|1[01]|77|86|99)|9\\\\d\\\\d)\\\\d{6}\"]]],\"FI\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"[1-35689]\\\\d{4}|7\\\\d{10,11}|(?:[124-7]\\\\d|3[0-46-9])\\\\d{8}|[1-9]\\\\d{5,8}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d)(\\\\d{4,9})\",\"$1 $2\",[\"[2568][1-8]|3(?:0[1-9]|[1-9])|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[12]00|[368]|70[07-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,8})\",\"$1 $2\",[\"[1245]|7[135]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,10})\",\"$1 $2\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,\"1[03-79]|[2-9]\",[[\"(?:1[3-79][1-8]|[235689][1-8]\\\\d)\\\\d{2,6}\",[5,6,7,8,9]],[\"4946\\\\d{2,6}|(?:4[0-8]|50)\\\\d{4,8}\",[6,7,8,9,10]],[\"800\\\\d{4,6}\",[7,8,9]],[\"[67]00\\\\d{5,6}\",[8,9]],0,0,[\"20\\\\d{4,8}|60[12]\\\\d{5,6}|7(?:099\\\\d{4,5}|5[03-9]\\\\d{3,7})|20[2-59]\\\\d\\\\d|(?:606|7(?:0[78]|1|3\\\\d))\\\\d{7}|(?:10|29|3[09]|70[1-5]\\\\d)\\\\d{4,8}\"]],\"00\"],\"FJ\":[\"679\",\"0(?:0|52)\",\"45\\\\d{5}|(?:0800\\\\d|[235-9])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[235-9]|45\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]]],0,0,0,0,0,0,[[\"603\\\\d{4}|(?:3[0-5]|6[25-7]|8[58])\\\\d{5}\",[7]],[\"(?:[279]\\\\d|45|5[01568]|8[034679])\\\\d{5}\",[7]],[\"0800\\\\d{7}\",[11]]],\"00\"],\"FK\":[\"500\",\"00\",\"[2-7]\\\\d{4}\",[5],0,0,0,0,0,0,0,[[\"[2-47]\\\\d{4}\"],[\"[56]\\\\d{4}\"]]],\"FM\":[\"691\",\"00\",\"(?:[39]\\\\d\\\\d|820)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[389]\"]]],0,0,0,0,0,0,[[\"31(?:00[67]|208|309)\\\\d\\\\d|(?:3(?:[2357]0[1-9]|602|804|905)|(?:820|9[2-6]\\\\d)\\\\d)\\\\d{3}\"],[\"31(?:00[67]|208|309)\\\\d\\\\d|(?:3(?:[2357]0[1-9]|602|804|905)|(?:820|9[2-7]\\\\d)\\\\d)\\\\d{3}\"]]],\"FO\":[\"298\",\"00\",\"[2-9]\\\\d{5}\",[6],[[\"(\\\\d{6})\",\"$1\",[\"[2-9]\"]]],0,0,\"(10(?:01|[12]0|88))\",0,0,0,[[\"(?:20|[34]\\\\d|8[19])\\\\d{4}\"],[\"(?:[27][1-9]|5\\\\d|9[16])\\\\d{4}\"],[\"80[257-9]\\\\d{3}\"],[\"90(?:[13-5][15-7]|2[125-7]|9\\\\d)\\\\d\\\\d\"],0,0,0,0,[\"(?:6[0-36]|88)\\\\d{4}\"]]],\"FR\":[\"33\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0 $1\"],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[1-79]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:[1-35]\\\\d|4[1-9])\\\\d{7}\"],[\"(?:6(?:[0-24-8]\\\\d|3[0-8]|9[589])|7(?:00|[3-9]\\\\d))\\\\d{6}\"],[\"80[0-5]\\\\d{6}\"],[\"836(?:0[0-36-9]|[1-9]\\\\d)\\\\d{4}|8(?:1[2-9]|2[2-47-9]|3[0-57-9]|[569]\\\\d|8[0-35-9])\\\\d{6}\"],0,0,[\"80[6-9]\\\\d{6}\"],0,[\"9\\\\d{8}\"],[\"8(?:1[01]|2[0156]|4[02]|84)\\\\d{6}\"]]],\"GA\":[\"241\",\"00\",\"(?:[067]\\\\d|11)\\\\d{6}|[2-7]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"11|[67]\"],\"0$1\"]],0,0,\"0(11\\\\d{6}|60\\\\d{6}|61\\\\d{6}|6[256]\\\\d{6}|7[467]\\\\d{6})\",\"$1\",0,0,[[\"[01]1\\\\d{6}\",[8]],[\"(?:(?:0[2-7]|7[467])\\\\d|6(?:0[0-4]|10|[256]\\\\d))\\\\d{5}|[2-7]\\\\d{6}\"]]],\"GB\":[\"44\",\"00\",\"[1-357-9]\\\\d{9}|[18]\\\\d{8}|8\\\\d{6}\",[7,9,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"800\",\"8001\",\"80011\",\"800111\",\"8001111\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"845\",\"8454\",\"84546\",\"845464\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"1(?:38|5[23]|69|76|94)\",\"1(?:(?:38|69)7|5(?:24|39)|768|946)\",\"1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"1(?:[2-69][02-9]|[78])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[25]|7(?:0|6[02-9])\",\"[25]|7(?:0|6(?:[03-9]|2[356]))\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1389]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:1(?:1(?:3(?:[0-58]\\\\d\\\\d|73[0235])|4(?:[0-5]\\\\d\\\\d|69[7-9]|70[013579])|(?:(?:5[0-26-9]|[78][0-49])\\\\d|6(?:[0-4]\\\\d|50))\\\\d)|2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\\\d)\\\\d\\\\d|1(?:[0-7]\\\\d\\\\d|8(?:[02]\\\\d|1[0-246-9])))|(?:3(?:0\\\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\\\d\\\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\\\d{3})\\\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\\\d)|76\\\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\\\d|7[4-79])|295[5-7]|35[34]\\\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\\\d{3}\",[9,10]],[\"7(?:457[0-57-9]|700[01]|911[028])\\\\d{5}|7(?:[1-3]\\\\d\\\\d|4(?:[0-46-9]\\\\d|5[0-689])|5(?:0[0-8]|[13-9]\\\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\\\d|8[02-9]|9[0-689])|8(?:[014-9]\\\\d|[23][0-8])|9(?:[024-9]\\\\d|1[02-9]|3[0-689]))\\\\d{6}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[2-49]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]],0,\" x\"],\"GD\":[\"1\",\"011\",\"(?:473|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"473$1\",0,\"473\",[[\"473(?:2(?:3[0-2]|69)|3(?:2[89]|86)|4(?:[06]8|3[5-9]|4[0-49]|5[5-79]|73|90)|63[68]|7(?:58|84)|800|938)\\\\d{4}\"],[\"473(?:4(?:0[2-79]|1[04-9]|2[0-5]|58)|5(?:2[01]|3[3-8])|901)\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\"]]],\"GE\":[\"995\",\"00\",\"(?:[3-57]\\\\d\\\\d|800)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"32\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[57]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[348]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:3(?:[256]\\\\d|4[124-9]|7[0-4])|4(?:1\\\\d|2[2-7]|3[1-79]|4[2-8]|7[239]|9[1-7]))\\\\d{6}\"],[\"5(?:(?:0555|1(?:[17]77|555))[5-9]|757(?:7[7-9]|8[01]))\\\\d{3}|5(?:0070|11(?:33|51)|[25]222|3333)[0-4]\\\\d{3}|5(?:00(?:0\\\\d|5[05])|11(?:00|[124]\\\\d|3[01])|5200|75(?:00|[57]5)|8(?:0(?:[01]\\\\d|2[0-4])|58[89]|8(?:55|88)))\\\\d{4}|(?:5(?:[14]4|5[0157-9]|68|7[0147-9]|9[1-35-9])|790)\\\\d{6}\"],[\"800\\\\d{6}\"],0,0,0,0,0,[\"70[67]\\\\d{6}\"]]],\"GF\":[\"594\",\"00\",\"(?:[56]94|80\\\\d|976)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"594(?:[0239]\\\\d|1[0-2]|4[03-9]|5[6-9]|6[0-3]|80)\\\\d{4}\"],[\"694(?:[0-249]\\\\d|3[0-8])\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"976\\\\d{6}\"]]],\"GG\":[\"44\",\"00\",\"(?:1481|[357-9]\\\\d{3})\\\\d{6}|8\\\\d{6}(?:\\\\d{2})?\",[7,9,10],0,\"0\",0,\"0|([25-9]\\\\d{5})$\",\"1481$1\",0,0,[[\"1481[25-9]\\\\d{5}\",[10]],[\"7(?:(?:781|839)\\\\d|911[17])\\\\d{5}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[0-3]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]]],\"GH\":[\"233\",\"00\",\"(?:[235]\\\\d{3}|800)\\\\d{5}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[235]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"3082[0-5]\\\\d{4}|3(?:0(?:[237]\\\\d|8[01])|[167](?:2[0-6]|7\\\\d|80)|2(?:2[0-5]|7\\\\d|80)|3(?:2[0-3]|7\\\\d|80)|4(?:2[013-9]|3[01]|7\\\\d|80)|5(?:2[0-7]|7\\\\d|80)|8(?:2[0-2]|7\\\\d|80)|9(?:[28]0|7\\\\d))\\\\d{5}\",[9]],[\"(?:2(?:[0346-9]\\\\d|5[67])|5(?:[0457]\\\\d|6[01]|9[1-9]))\\\\d{6}\",[9]],[\"800\\\\d{5}\",[8]]]],\"GI\":[\"350\",\"00\",\"(?:[25]\\\\d\\\\d|606)\\\\d{5}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2\"]]],0,0,0,0,0,0,[[\"21(?:6[24-7]\\\\d|90[0-2])\\\\d{3}|2(?:00|2[25])\\\\d{5}\"],[\"(?:5[146-8]\\\\d|606)\\\\d{5}\"]]],\"GL\":[\"299\",\"00\",\"(?:19|[2-689]\\\\d|70)\\\\d{4}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"19|[2-9]\"]]],0,0,0,0,0,0,[[\"(?:19|3[1-7]|6[14689]|70|8[14-79]|9\\\\d)\\\\d{4}\"],[\"[245]\\\\d{5}\"],[\"80\\\\d{4}\"],0,0,0,0,0,[\"3[89]\\\\d{4}\"]]],\"GM\":[\"220\",\"00\",\"[2-9]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]],0,0,0,0,0,0,[[\"(?:4(?:[23]\\\\d\\\\d|4(?:1[024679]|[6-9]\\\\d))|5(?:5(?:3\\\\d|4[0-7])|6[67]\\\\d|7(?:1[04]|2[035]|3[58]|48))|8\\\\d{3})\\\\d{3}\"],[\"(?:[23679]\\\\d|5[0-389])\\\\d{5}\"]]],\"GN\":[\"224\",\"00\",\"722\\\\d{6}|(?:3|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"3\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[67]\"]]],0,0,0,0,0,0,[[\"3(?:0(?:24|3[12]|4[1-35-7]|5[13]|6[189]|[78]1|9[1478])|1\\\\d\\\\d)\\\\d{4}\",[8]],[\"6[0-356]\\\\d{7}\",[9]],0,0,0,0,0,0,[\"722\\\\d{6}\",[9]]]],\"GP\":[\"590\",\"00\",\"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"590(?:0[1-68]|[14][0-24-9]|2[0-68]|3[1289]|5[3-579]|6[0-289]|7[08]|8[0-689]|9\\\\d)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"976[01]\\\\d{5}\"]]],\"GQ\":[\"240\",\"00\",\"222\\\\d{6}|(?:3\\\\d|55|[89]0)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235]\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[89]\"]]],0,0,0,0,0,0,[[\"33[0-24-9]\\\\d[46]\\\\d{4}|3(?:33|5\\\\d)\\\\d[7-9]\\\\d{4}\"],[\"(?:222|55\\\\d)\\\\d{6}\"],[\"80\\\\d[1-9]\\\\d{5}\"],[\"90\\\\d[1-9]\\\\d{5}\"]]],\"GR\":[\"30\",\"00\",\"5005000\\\\d{3}|8\\\\d{9,11}|(?:[269]\\\\d|70)\\\\d{8}\",[10,11,12],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"21|7\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2689]\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{5})\",\"$1 $2 $3\",[\"8\"]]],0,0,0,0,0,0,[[\"2(?:1\\\\d\\\\d|2(?:2[1-46-9]|[36][1-8]|4[1-7]|5[1-4]|7[1-5]|[89][1-9])|3(?:1\\\\d|2[1-57]|[35][1-3]|4[13]|7[1-7]|8[124-6]|9[1-79])|4(?:1\\\\d|2[1-8]|3[1-4]|4[13-5]|6[1-578]|9[1-5])|5(?:1\\\\d|[29][1-4]|3[1-5]|4[124]|5[1-6])|6(?:1\\\\d|[269][1-6]|3[1245]|4[1-7]|5[13-9]|7[14]|8[1-5])|7(?:1\\\\d|2[1-5]|3[1-6]|4[1-7]|5[1-57]|6[135]|9[125-7])|8(?:1\\\\d|2[1-5]|[34][1-4]|9[1-57]))\\\\d{6}\",[10]],[\"68[57-9]\\\\d{7}|(?:69|94)\\\\d{8}\",[10]],[\"800\\\\d{7,9}\"],[\"90[19]\\\\d{7}\",[10]],[\"70\\\\d{8}\",[10]],0,[\"5005000\\\\d{3}\",[10]],0,0,[\"8(?:0[16]|12|[27]5|50)\\\\d{7}\",[10]]]],\"GT\":[\"502\",\"00\",\"(?:1\\\\d{3}|[2-7])\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]],0,0,0,0,0,0,[[\"[267][2-9]\\\\d{6}\",[8]],[\"[3-5]\\\\d{7}\",[8]],[\"18[01]\\\\d{8}\",[11]],[\"19\\\\d{9}\",[11]]]],\"GU\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|671|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([3-9]\\\\d{6})$\",\"671$1\",0,\"671\",[[\"671(?:3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[0236-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[0479]7|2[0167]|3[45]|8[7-9])|8(?:[2-57-9]8|6[48])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[78]))\\\\d{4}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\"]]],\"GW\":[\"245\",\"00\",\"[49]\\\\d{8}|4\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"40\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"]]],0,0,0,0,0,0,[[\"443\\\\d{6}\",[9]],[\"9(?:5\\\\d|6[569]|77)\\\\d{6}\",[9]],0,0,0,0,0,0,[\"40\\\\d{5}\",[7]]]],\"GY\":[\"592\",\"001\",\"9008\\\\d{3}|(?:[2-467]\\\\d\\\\d|862)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46-9]\"]]],0,0,0,0,0,0,[[\"(?:2(?:1[6-9]|2[0-35-9]|3[1-4]|5[3-9]|6\\\\d|7[0-24-79])|3(?:2[25-9]|3\\\\d)|4(?:4[0-24]|5[56])|77[1-57])\\\\d{4}\"],[\"(?:6\\\\d\\\\d|70[015-7])\\\\d{4}\"],[\"(?:289|862)\\\\d{4}\"],[\"9008\\\\d{3}\"]]],\"HK\":[\"852\",\"00(?:30|5[09]|[126-9]?)\",\"8[0-46-9]\\\\d{6,7}|9\\\\d{4,7}|(?:[2-7]|9\\\\d{3})\\\\d{7}\",[5,6,7,8,9,11],[[\"(\\\\d{3})(\\\\d{2,5})\",\"$1 $2\",[\"900\",\"9003\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[1-4]|9(?:0[1-9]|[1-8])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]],0,0,0,0,0,0,[[\"(?:2(?:[13-9]\\\\d|2[013-9])\\\\d|3(?:(?:[1569][0-24-9]|4[0-246-9]|7[0-24-69])\\\\d|8(?:[45][0-8]|6[01]|9\\\\d))|58(?:0[1-8]|1[2-9]))\\\\d{4}\",[8]],[\"(?:4(?:44[5-9]|6(?:0[0-7]|1[0-6]|4[0-57-9]|6[0-4]|7[0-8]))|573[0-6]|6(?:26[013-8]|66[0-3])|70(?:7[1-5]|8[0-4])|848[015-9]|9(?:29[013-9]|59[0-4]))\\\\d{4}|(?:4(?:4[01]|6[2358])|5(?:[1-59][0-46-9]|6[0-4689]|7[0-246-9])|6(?:0[1-9]|[13-59]\\\\d|[268][0-57-9]|7[0-79])|84[09]|9(?:0[1-9]|1[02-9]|[2358][0-8]|[467]\\\\d))\\\\d{5}\",[8]],[\"800\\\\d{6}\",[9]],[\"900(?:[0-24-9]\\\\d{7}|3\\\\d{1,4})\",[5,6,7,8,11]],[\"8(?:1[0-4679]\\\\d|2(?:[0-36]\\\\d|7[0-4])|3(?:[034]\\\\d|2[09]|70))\\\\d{4}\",[8]],0,[\"30(?:0[1-9]|[15-7]\\\\d|2[047]|89)\\\\d{4}\",[8]],[\"7(?:1(?:0[0-38]|1[0-3679]|3[013]|69|9[0136])|2(?:[02389]\\\\d|1[18]|7[27-9])|3(?:[0-38]\\\\d|7[0-369]|9[2357-9])|47\\\\d|5(?:[178]\\\\d|5[0-5])|6(?:0[0-7]|2[236-9]|[35]\\\\d)|7(?:[27]\\\\d|8[7-9])|8(?:[23689]\\\\d|7[1-9])|9(?:[025]\\\\d|6[0-246-8]|7[0-36-9]|8[238]))\\\\d{4}\",[8]]],\"00\"],\"HN\":[\"504\",\"00\",\"8\\\\d{10}|[237-9]\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[237-9]\"]]],0,0,0,0,0,0,[[\"2(?:2(?:0[0-359]|1[1-367]|[23]\\\\d|4[03-6]|5[57]|6[245]|7[0135689]|8[01346-9]|9[0-2])|4(?:0[78]|2[3-59]|3[13-9]|4[0-68]|5[1-35])|5(?:0[7-9]|16|4[03-5]|5\\\\d|6[014-6]|7[04]|80)|6(?:[056]\\\\d|17|2[067]|3[04]|4[0-378]|[78][0-8]|9[01])|7(?:6[46-9]|7[02-9]|8[034]|91)|8(?:79|8[0-357-9]|9[1-57-9]))\\\\d{4}\",[8]],[\"[37-9]\\\\d{7}\",[8]],[\"8002\\\\d{7}\",[11]]]],\"HR\":[\"385\",\"00\",\"(?:[24-69]\\\\d|3[0-79])\\\\d{7}|80\\\\d{5,7}|[1-79]\\\\d{7}|6\\\\d{5,6}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"6[01]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-5]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"1\\\\d{7}|(?:2[0-3]|3[1-5]|4[02-47-9]|5[1-3])\\\\d{6,7}\",[8,9]],[\"98\\\\d{6,7}|975(?:1\\\\d|77|9[67])\\\\d{4}|9(?:0[1-9]|[1259]\\\\d|7[0679])\\\\d{6}\",[8,9]],[\"80[01]\\\\d{4,6}\",[7,8,9]],[\"6[01459]\\\\d{6}|6[01]\\\\d{4,5}\",[6,7,8]],[\"7[45]\\\\d{6}\",[8]],0,[\"62\\\\d{6,7}|72\\\\d{6}\",[8,9]]]],\"HT\":[\"509\",\"00\",\"[2-489]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-489]\"]]],0,0,0,0,0,0,[[\"2(?:2\\\\d|5[1-5]|81|9[149])\\\\d{5}\"],[\"[34]\\\\d{7}\"],[\"8\\\\d{7}\"],0,0,0,0,0,[\"9(?:[67][0-4]|8[0-3589]|9\\\\d)\\\\d{5}\"]]],\"HU\":[\"36\",\"00\",\"[235-7]\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"06 $1\"]],\"06\",0,0,0,0,0,[[\"(?:1\\\\d|[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6[23689]|8[2-57-9]|9[2-69])\\\\d{6}\",[8]],[\"(?:[257]0|3[01])\\\\d{7}\",[9]],[\"(?:[48]0\\\\d|680[29])\\\\d{5}\"],[\"9[01]\\\\d{6}\",[8]],0,0,[\"38\\\\d{7}\",[9]],0,[\"21\\\\d{7}\",[9]]]],\"ID\":[\"62\",\"00[89]\",\"(?:(?:00[1-9]|8\\\\d)\\\\d{4}|[1-36])\\\\d{6}|00\\\\d{10}|[1-9]\\\\d{8,10}|[2-9]\\\\d{7}\",[7,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"15\"]],[\"(\\\\d{2})(\\\\d{5,9})\",\"$1 $2\",[\"2[124]|[36]1\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,7})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,8})\",\"$1 $2\",[\"[2-79]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{3})\",\"$1-$2-$3\",[\"8[1-35-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6,8})\",\"$1 $2\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"804\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"80\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"2[124]\\\\d{7,8}|619\\\\d{8}|2(?:1(?:14|500)|2\\\\d{3})\\\\d{3}|61\\\\d{5,8}|(?:2(?:[35][1-4]|6[0-8]|7[1-6]|8\\\\d|9[1-8])|3(?:1|[25][1-8]|3[1-68]|4[1-3]|6[1-3568]|7[0-469]|8\\\\d)|4(?:0[1-589]|1[01347-9]|2[0-36-8]|3[0-24-68]|43|5[1-378]|6[1-5]|7[134]|8[1245])|5(?:1[1-35-9]|2[25-8]|3[124-9]|4[1-3589]|5[1-46]|6[1-8])|6(?:[25]\\\\d|3[1-69]|4[1-6])|7(?:02|[125][1-9]|[36]\\\\d|4[1-8]|7[0-36-9])|9(?:0[12]|1[013-8]|2[0-479]|5[125-8]|6[23679]|7[159]|8[01346]))\\\\d{5,8}\",[7,8,9,10,11]],[\"8[1-35-9]\\\\d{7,10}\",[9,10,11,12]],[\"00[17]803\\\\d{7}|(?:177\\\\d|800)\\\\d{5,7}|001803\\\\d{6}\",[8,9,10,11,12,13]],[\"809\\\\d{7}\",[10]],0,0,[\"(?:1500|8071\\\\d{3})\\\\d{3}\",[7,10]],0,0,[\"804\\\\d{7}\",[10]]]],\"IE\":[\"353\",\"00\",\"(?:1\\\\d|[2569])\\\\d{6,8}|4\\\\d{6,9}|7\\\\d{8}|8\\\\d{8,9}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"2[24-9]|47|58|6[237-9]|9[35-9]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[45]0\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2569]|4[1-69]|7[14]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"81\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"4\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:1\\\\d|21)\\\\d{6,7}|(?:2[24-9]|4(?:0[24]|5\\\\d|7)|5(?:0[45]|1\\\\d|8)|6(?:1\\\\d|[237-9])|9(?:1\\\\d|[35-9]))\\\\d{5}|(?:23|4(?:[1-469]|8\\\\d)|5[23679]|6[4-6]|7[14]|9[04])\\\\d{7}\"],[\"8(?:22|[35-9]\\\\d)\\\\d{6}\",[9]],[\"1800\\\\d{6}\",[10]],[\"15(?:1[2-8]|[2-8]0|9[089])\\\\d{6}\",[10]],[\"700\\\\d{6}\",[9]],0,[\"818\\\\d{6}\",[9]],0,[\"76\\\\d{7}\",[9]],[\"18[59]0\\\\d{6}\",[10]]]],\"IL\":[\"972\",\"0(?:0|1[2-9])\",\"1\\\\d{6}(?:\\\\d{3,5})?|[57]\\\\d{8}|[1-489]\\\\d{7}\",[7,8,9,10,11,12],[[\"(\\\\d{4})(\\\\d{3})\",\"$1-$2\",[\"125\"]],[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"121\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-489]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"12\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1-$2\",[\"159\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"1[7-9]\"]],[\"(\\\\d{3})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3-$4\",[\"15\"]]],\"0\",0,0,0,0,0,[[\"153\\\\d{8,9}|29[1-9]\\\\d{5}|(?:2[0-8]|[3489]\\\\d)\\\\d{6}\",[8,11,12]],[\"5(?:(?:[02368]\\\\d|[19][2-9]|4[1-9])\\\\d|5(?:01|1[79]|2[2-9]|3[0-3]|4[34]|5[015689]|6[6-8]|7[0-267]|8[7-9]|9[1-9]))\\\\d{5}\",[9]],[\"1(?:255|80[019]\\\\d{3})\\\\d{3}\",[7,10]],[\"1212\\\\d{4}|1(?:200|9(?:0[0-2]|19))\\\\d{6}\",[8,10]],0,0,[\"1599\\\\d{6}\",[10]],0,[\"7(?:380|8(?:33|55|77|81))\\\\d{5}|7(?:18|2[23]|3[237]|47|6[258]|7\\\\d|82|9[2-9])\\\\d{6}\",[9]],[\"1700\\\\d{6}\",[10]]]],\"IM\":[\"44\",\"00\",\"1624\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"0|([25-8]\\\\d{5})$\",\"1624$1\",0,\"74576|(?:16|7[56])24\",[[\"1624(?:230|[5-8]\\\\d\\\\d)\\\\d{3}\"],[\"76245[06]\\\\d{4}|7(?:4576|[59]24\\\\d|624[0-4689])\\\\d{5}\"],[\"808162\\\\d{4}\"],[\"8(?:440[49]06|72299\\\\d)\\\\d{3}|(?:8(?:45|70)|90[0167])624\\\\d{4}\"],[\"70\\\\d{8}\"],0,[\"3440[49]06\\\\d{3}|(?:3(?:08162|3\\\\d{4}|45624|7(?:0624|2299))|55\\\\d{4})\\\\d{4}\"],0,[\"56\\\\d{8}\"]]],\"IN\":[\"91\",\"00\",\"(?:000800|[2-9]\\\\d\\\\d)\\\\d{7}|1\\\\d{7,12}\",[8,9,10,11,12,13],[[\"(\\\\d{8})\",\"$1\",[\"5(?:0|2[23]|3[03]|[67]1|88)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)\"],0,1],[\"(\\\\d{4})(\\\\d{4,5})\",\"$1 $2\",[\"180\",\"1800\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"140\"],0,1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"11|2[02]|33|4[04]|79[1-7]|80[2-46]\",\"11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])\",\"11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807\",\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]\",\"1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\\\d|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]))[2-7]\"],\"0$1\",1],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"[6-9]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{2,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:6|8[06])\",\"1(?:6|8[06]0)\"],0,1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"18\"],0,1]],\"0\",0,0,0,0,0,[[\"2717(?:[2-7]\\\\d|95)\\\\d{4}|(?:271[0-689]|782[0-6])[2-7]\\\\d{5}|(?:170[24]|2(?:(?:[02][2-79]|90)\\\\d|80[13468])|(?:3(?:23|80)|683|79[1-7])\\\\d|4(?:20[24]|72[2-8])|552[1-7])\\\\d{6}|(?:11|33|4[04]|80)[2-7]\\\\d{7}|(?:342|674|788)(?:[0189][2-7]|[2-7]\\\\d)\\\\d{5}|(?:1(?:2[0-249]|3[0-25]|4[145]|[59][14]|6[014]|7[1257]|8[01346])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])|3(?:26|4[13]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[014-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91))[2-7]\\\\d{6}|(?:1(?:2[35-8]|3[346-9]|4[236-9]|[59][0235-9]|6[235-9]|7[34689]|8[257-9])|2(?:1[134689]|3[24-8]|4[2-8]|5[25689]|6[2-4679]|7[3-79]|8[2-479]|9[235-9])|3(?:01|1[79]|2[1245]|4[5-8]|5[125689]|6[235-7]|7[157-9]|8[2-46-8])|4(?:1[14578]|2[5689]|3[2-467]|5[4-7]|6[35]|73|8[2689]|9[2389])|5(?:[16][146-9]|2[14-8]|3[1346]|4[14-69]|5[46]|7[2-4]|8[2-8]|9[246])|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])|7(?:1[013-9]|2[0235-9]|3[2679]|4[1-35689]|5[2-46-9]|[67][02-9]|8[013-7]|9[089])|8(?:1[1357-9]|2[235-8]|3[03-57-9]|4[0-24-9]|5\\\\d|6[2457-9]|7[1-6]|8[1256]|9[2-4]))\\\\d[2-7]\\\\d{5}\",[10]],[\"(?:61279|7(?:887[02-9]|9(?:313|79[07-9]))|8(?:079[04-9]|(?:84|91)7[02-8]))\\\\d{5}|(?:6(?:12|[2-47]1|5[17]|6[13]|80)[0189]|7(?:1(?:2[0189]|9[0-5])|2(?:[14][017-9]|8[0-59])|3(?:2[5-8]|[34][017-9]|9[016-9])|4(?:1[015-9]|[29][89]|39|8[389])|5(?:[15][017-9]|2[04-9]|9[7-9])|6(?:0[0-47]|1[0-257-9]|2[0-4]|3[19]|5[4589])|70[0289]|88[089]|97[02-8])|8(?:0(?:6[67]|7[02-8])|70[017-9]|84[01489]|91[0-289]))\\\\d{6}|(?:7(?:31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[0189]\\\\d|7[02-8])\\\\d{5}|(?:6(?:[09]\\\\d|1[04679]|2[03689]|3[05-9]|4[0489]|50|6[069]|7[07]|8[7-9])|7(?:0\\\\d|2[0235-79]|3[05-8]|40|5[0346-8]|6[6-9]|7[1-9]|8[0-79]|9[089])|8(?:0[01589]|1[0-57-9]|2[235-9]|3[03-57-9]|[45]\\\\d|6[02457-9]|7[1-69]|8[0-25-9]|9[02-9])|9\\\\d\\\\d)\\\\d{7}|(?:6(?:(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|8[124-6])\\\\d|7(?:[235689]\\\\d|4[0189]))|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-5])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]|881))[0189]\\\\d{5}\",[10]],[\"000800\\\\d{7}|1(?:600\\\\d{6}|80(?:0\\\\d{4,9}|3\\\\d{9}))\"],[\"186[12]\\\\d{9}\",[13]],0,0,[\"140\\\\d{7}\",[10]],0,0,[\"1860\\\\d{7}\",[11]]]],\"IO\":[\"246\",\"00\",\"3\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"3\"]]],0,0,0,0,0,0,[[\"37\\\\d{5}\"],[\"38\\\\d{5}\"]]],\"IQ\":[\"964\",\"00\",\"(?:1|7\\\\d\\\\d)\\\\d{7}|[2-6]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"1\\\\d{7}|(?:2[13-5]|3[02367]|4[023]|5[03]|6[026])\\\\d{6,7}\",[8,9]],[\"7[3-9]\\\\d{8}\",[10]]]],\"IR\":[\"98\",\"00\",\"[1-9]\\\\d{9}|(?:[1-8]\\\\d\\\\d|9)\\\\d{3,4}\",[4,5,6,7,10],[[\"(\\\\d{4,5})\",\"$1\",[\"96\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,5})\",\"$1 $2\",[\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-8]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])(?:[03-57]\\\\d{7}|[16]\\\\d{3}(?:\\\\d{4})?|[289]\\\\d{3}(?:\\\\d(?:\\\\d{3})?)?)|94(?:000[09]|2(?:121|[2689]0\\\\d)|30[0-2]\\\\d|4(?:111|40\\\\d))\\\\d{4}\",[6,7,10]],[\"9(?:(?:0(?:[0-35]\\\\d|4[4-6])|(?:[13]\\\\d|2[0-3])\\\\d)\\\\d|9(?:[0-46]\\\\d\\\\d|5[15]0|8(?:1\\\\d|88)|9(?:0[0-3]|[19]\\\\d|21|77|8[7-9])))\\\\d{5}\",[10]],0,0,0,0,[\"96(?:0[12]|2[16-8]|3(?:08|[14]5|[23]|66)|4(?:0|80)|5[01]|6[89]|86|9[19])\",[4,5]]]],\"IS\":[\"354\",\"00|1(?:0(?:01|[12]0)|100)\",\"(?:38\\\\d|[4-9])\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,[[\"(?:4(?:1[0-24-69]|2[0-7]|[37][0-8]|4[0-24589]|5[0-68]|6\\\\d|8[0-36-8])|5(?:05|[156]\\\\d|2[02578]|3[0-579]|4[03-7]|7[0-2578]|8[0-35-9]|9[013-689])|872)\\\\d{4}\",[7]],[\"(?:38[589]\\\\d\\\\d|6(?:1[1-8]|2[0-6]|3[026-9]|4[014679]|5[0159]|6[0-69]|70|8[06-8]|9\\\\d)|7(?:5[057]|[6-9]\\\\d)|8(?:2[0-59]|[3-69]\\\\d|8[238]))\\\\d{4}\"],[\"80[0-8]\\\\d{4}\",[7]],[\"90(?:0\\\\d|1[5-79]|2[015-79]|3[135-79]|4[125-7]|5[25-79]|7[1-37]|8[0-35-7])\\\\d{3}\",[7]],0,0,[\"809\\\\d{4}\",[7]],0,[\"49[0-24-79]\\\\d{4}\",[7]]],\"00\"],\"IT\":[\"39\",\"00\",\"0\\\\d{5,10}|1\\\\d{8,10}|3(?:[0-8]\\\\d{7,10}|9\\\\d{7,8})|(?:55|70)\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?\",[6,7,8,9,10,11],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"0[26]\"]],[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"0[13-57-9][0159]|8(?:03|4[17]|9[2-5])\",\"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))\"]],[\"(\\\\d{4})(\\\\d{2,6})\",\"$1 $2\",[\"0(?:[13-579][2-46-8]|8[236-8])\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"894\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[26]|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1(?:44|[679])|[378]\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[13-57-9][0159]|14\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{5})\",\"$1 $2 $3\",[\"0[26]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,[[\"0669[0-79]\\\\d{1,6}|0(?:1(?:[0159]\\\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\\\d\\\\d|3(?:[0159]\\\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\\\d|6[0-8])|7(?:[0159]\\\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\\\d{2,7}\"],[\"3[1-9]\\\\d{8}|3[2-9]\\\\d{7}\",[9,10]],[\"80(?:0\\\\d{3}|3)\\\\d{3}\",[6,9]],[\"(?:0878\\\\d{3}|89(?:2\\\\d|3[04]|4(?:[0-4]|[5-9]\\\\d\\\\d)|5[0-4]))\\\\d\\\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\\\d{6}\",[6,8,9,10]],[\"1(?:78\\\\d|99)\\\\d{6}\",[9,10]],0,0,0,[\"55\\\\d{8}\",[10]],[\"84(?:[08]\\\\d{3}|[17])\\\\d{3}\",[6,9]]]],\"JE\":[\"44\",\"00\",\"1534\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"0|([0-24-8]\\\\d{5})$\",\"1534$1\",0,0,[[\"1534[0-24-8]\\\\d{5}\"],[\"7(?:(?:(?:50|82)9|937)\\\\d|7(?:00[378]|97[7-9]))\\\\d{5}\"],[\"80(?:07(?:35|81)|8901)\\\\d{4}\"],[\"(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\\\d{4}\"],[\"701511\\\\d{4}\"],0,[\"(?:3(?:0(?:07(?:35|81)|8901)|3\\\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\\\d{4})\\\\d{4}\"],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\"],[\"56\\\\d{8}\"]]],\"JM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|658|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"658|876\",[[\"8766060\\\\d{3}|(?:658(?:2(?:[0-8]\\\\d|9[0-46-9])|[3-9]\\\\d\\\\d)|876(?:52[35]|6(?:0[1-3579]|1[02357-9]|[23]\\\\d|40|5[06]|6[2-589]|7[025-7]|8[04]|9[4-9])|7(?:0[2-689]|[1-6]\\\\d|8[056]|9[45])|9(?:0[1-8]|1[02378]|[2-8]\\\\d|9[2-468])))\\\\d{4}\"],[\"(?:658295|876(?:2(?:0[1-9]|[13-9]\\\\d|2[013-9])|[348]\\\\d\\\\d|5(?:0[1-9]|[1-9]\\\\d)|6(?:4[89]|6[67])|7(?:0[07]|7\\\\d|8[1-47-9]|9[0-36-9])|9(?:[01]9|9[0579])))\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\"]]],\"JO\":[\"962\",\"00\",\"(?:(?:[2689]|7\\\\d)\\\\d|32|53)\\\\d{6}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2356]|87\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"70\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"87(?:000|90[01])\\\\d{3}|(?:2(?:6(?:2[0-35-9]|3[0-578]|4[24-7]|5[0-24-8]|[6-8][023]|9[0-3])|7(?:0[1-79]|10|2[014-7]|3[0-689]|4[019]|5[0-3578]))|32(?:0[1-69]|1[1-35-7]|2[024-7]|3\\\\d|4[0-3]|[5-7][023])|53(?:0[0-3]|[13][023]|2[0-59]|49|5[0-35-9]|6[15]|7[45]|8[1-6]|9[0-36-9])|6(?:2(?:[05]0|22)|3(?:00|33)|4(?:0[0-25]|1[2-7]|2[0569]|[38][07-9]|4[025689]|6[0-589]|7\\\\d|9[0-2])|5(?:[01][056]|2[034]|3[0-57-9]|4[178]|5[0-69]|6[0-35-9]|7[1-379]|8[0-68]|9[0239]))|87(?:20|7[078]|99))\\\\d{4}\",[8]],[\"7(?:[78][0-25-9]|9\\\\d)\\\\d{6}\",[9]],[\"80\\\\d{6}\",[8]],[\"9\\\\d{7}\",[8]],[\"70\\\\d{7}\",[9]],0,[\"8(?:10|8\\\\d)\\\\d{5}\",[8]],[\"74(?:66|77)\\\\d{5}\",[9]],0,[\"85\\\\d{6}\",[8]]]],\"JP\":[\"81\",\"010\",\"00[1-9]\\\\d{6,14}|[257-9]\\\\d{9}|(?:00|[1-9]\\\\d\\\\d)\\\\d{6}\",[8,9,10,11,12,13,14,15,16,17],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"(?:12|57|99)0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:80|9[16])\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[36]|4(?:2[09]|7[01])\",\"[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"[14]|[289][2-9]|5[3-9]|7[2-4679]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"800\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[257-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:1(?:1[235-8]|2[3-6]|3[3-9]|4[2-6]|[58][2-8]|6[2-7]|7[2-9]|9[1-9])|(?:2[2-9]|[36][1-9])\\\\d|4(?:[2-578]\\\\d|6[02-8]|9[2-59])|5(?:[2-589]\\\\d|6[1-9]|7[2-8])|7(?:[25-9]\\\\d|3[4-9]|4[02-9])|8(?:[2679]\\\\d|3[2-9]|4[5-9]|5[1-9]|8[03-9])|9(?:[2-58]\\\\d|[679][1-9]))\\\\d{6}\",[9]],[\"[7-9]0[1-9]\\\\d{7}\",[10]],[\"00777(?:[01]|5\\\\d)\\\\d\\\\d|(?:00(?:7778|882[1245])|(?:120|800\\\\d)\\\\d\\\\d)\\\\d{4}|00(?:37|66|78)\\\\d{6,13}\"],[\"990\\\\d{6}\",[9]],[\"60\\\\d{7}\",[9]],0,[\"570\\\\d{6}\",[9]],[\"20\\\\d{8}\",[10]],[\"50[1-9]\\\\d{7}\",[10]]]],\"KE\":[\"254\",\"000\",\"(?:[17]\\\\d\\\\d|900)\\\\d{6}|(?:2|80)0\\\\d{6,7}|[4-6]\\\\d{6,8}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"[24-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[17]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:4[245]|5[1-79]|6[01457-9])\\\\d{5,7}|(?:4[136]|5[08]|62)\\\\d{7}|(?:[24]0|66)\\\\d{6,7}\",[7,8,9]],[\"(?:1(?:0[0-6]|1[0-5]|2[014]|30)|7\\\\d\\\\d)\\\\d{6}\",[9]],[\"800[2-8]\\\\d{5,6}\",[9,10]],[\"900[02-9]\\\\d{5}\",[9]]]],\"KG\":[\"996\",\"00\",\"8\\\\d{9}|(?:[235-8]\\\\d|99)\\\\d{7}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3(?:1[346]|[24-79])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235-79]|88\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d)(\\\\d{2,3})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"312(?:5[0-79]\\\\d|9(?:[0-689]\\\\d|7[0-24-9]))\\\\d{3}|(?:3(?:1(?:2[0-46-8]|3[1-9]|47|[56]\\\\d)|2(?:22|3[0-479]|6[0-7])|4(?:22|5[6-9]|6\\\\d)|5(?:22|3[4-7]|59|6\\\\d)|6(?:22|5[35-7]|6\\\\d)|7(?:22|3[468]|4[1-9]|59|[67]\\\\d)|9(?:22|4[1-8]|6\\\\d))|6(?:09|12|2[2-4])\\\\d)\\\\d{5}\",[9]],[\"312(?:58\\\\d|973)\\\\d{3}|(?:2(?:0[0-35]|2\\\\d)|5[0-24-7]\\\\d|7(?:[07]\\\\d|55)|88[08]|99[05-9])\\\\d{6}\",[9]],[\"800\\\\d{6,7}\"]]],\"KH\":[\"855\",\"00[14-9]\",\"1\\\\d{9}|[1-9]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\",0,0,0,0,0,[[\"23(?:4(?:[2-4]|[56]\\\\d)|[568]\\\\d\\\\d)\\\\d{4}|23[236-9]\\\\d{5}|(?:2[4-6]|3[2-6]|4[2-4]|[5-7][2-5])(?:(?:[237-9]|4[56]|5\\\\d)\\\\d{5}|6\\\\d{5,6})\",[8,9]],[\"(?:(?:1[28]|3[18]|9[67])\\\\d|6[016-9]|7(?:[07-9]|[16]\\\\d)|8(?:[013-79]|8\\\\d))\\\\d{6}|(?:1\\\\d|9[0-57-9])\\\\d{6}|(?:2[3-6]|3[2-6]|4[2-4]|[5-7][2-5])48\\\\d{5}\",[8,9]],[\"1800(?:1\\\\d|2[019])\\\\d{4}\",[10]],[\"1900(?:1\\\\d|2[09])\\\\d{4}\",[10]]]],\"KI\":[\"686\",\"00\",\"(?:[37]\\\\d|6[0-79])\\\\d{6}|(?:[2-48]\\\\d|50)\\\\d{3}\",[5,8],0,\"0\",0,0,0,0,0,[[\"(?:[24]\\\\d|3[1-9]|50|65(?:02[12]|12[56]|22[89]|[3-5]00)|7(?:27\\\\d\\\\d|3100|5(?:02[12]|12[56]|22[89]|[34](?:00|81)|500))|8[0-5])\\\\d{3}\"],[\"(?:63\\\\d{3}|73(?:0[0-5]\\\\d|140))\\\\d{3}|[67]200[01]\\\\d{3}\",[8]],0,0,0,0,0,0,[\"30(?:0[01]\\\\d\\\\d|12(?:11|20))\\\\d\\\\d\",[8]]]],\"KM\":[\"269\",\"00\",\"[3478]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[3478]\"]]],0,0,0,0,0,0,[[\"7[4-7]\\\\d{5}\"],[\"[34]\\\\d{6}\"],0,[\"8\\\\d{6}\"]]],\"KN\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-7]\\\\d{6})$\",\"869$1\",0,\"869\",[[\"869(?:2(?:29|36)|302|4(?:6[015-9]|70)|56[5-7])\\\\d{4}\"],[\"869(?:48[89]|55[6-8]|66\\\\d|76[02-7])\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\"]]],\"KP\":[\"850\",\"00|99\",\"85\\\\d{6}|(?:19\\\\d|[2-7])\\\\d{7}\",[8,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:(?:195|2)\\\\d|3[19]|4[159]|5[37]|6[17]|7[39]|85)\\\\d{6}\"],[\"19[1-3]\\\\d{7}\",[10]]]],\"KR\":[\"82\",\"00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))\",\"00[1-9]\\\\d{8,11}|(?:[12]|5\\\\d{3})\\\\d{7}|[13-6]\\\\d{9}|(?:[1-6]\\\\d|80)\\\\d{7}|[3-6]\\\\d{4,5}|(?:00|7)0\\\\d{8}\",[5,6,8,9,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1-$2\",[\"(?:3[1-3]|[46][1-4]|5[1-5])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"1\"]],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"[1346]|5[1-5]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1-$2-$3\",[\"5\"],\"0$1\"]],\"0\",0,\"0(8(?:[1-46-8]|5\\\\d\\\\d))?\",0,0,0,[[\"(?:2|3[1-3]|[46][1-4]|5[1-5])[1-9]\\\\d{6,7}|(?:3[1-3]|[46][1-4]|5[1-5])1\\\\d{2,3}\",[5,6,8,9,10]],[\"1(?:05(?:[0-8]\\\\d|9[0-6])|22[13]\\\\d)\\\\d{4,5}|1(?:0[1-46-9]|[16-9]\\\\d|2[013-9])\\\\d{6,7}\",[9,10]],[\"00(?:308\\\\d{6,7}|798\\\\d{7,9})|(?:00368|80)\\\\d{7}\",[9,11,12,13,14]],[\"60[2-9]\\\\d{6}\",[9]],[\"50\\\\d{8,9}\",[10,11]],0,[\"1(?:5(?:22|33|44|66|77|88|99)|6(?:[07]0|44|6[168]|88)|8(?:00|33|55|77|99))\\\\d{4}\",[8]],[\"15\\\\d{7,8}\",[9,10]],[\"70\\\\d{8}\",[10]]]],\"KW\":[\"965\",\"00\",\"18\\\\d{5}|(?:[2569]\\\\d|41)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[169]|2(?:[235]|4[1-35-9])|52\"]],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[245]\"]]],0,0,0,0,0,0,[[\"2(?:[23]\\\\d\\\\d|4(?:[1-35-9]\\\\d|44)|5(?:0[034]|[2-46]\\\\d|5[1-3]|7[1-7]))\\\\d{4}\",[8]],[\"(?:41\\\\d\\\\d|5(?:(?:[05]\\\\d|1[0-7]|6[56])\\\\d|2(?:22|5[25])|7(?:55|77)|88[58])|6(?:(?:0[034679]|5[015-9]|6\\\\d)\\\\d|1(?:00|11|66)|222|3[36]3|444|7(?:0[013-9]|[67]\\\\d)|888|9(?:[069]\\\\d|3[039]))|9(?:(?:0[09]|22|[4679]\\\\d|8[057-9])\\\\d|1(?:1[01]|99)|3(?:00|33)|5(?:00|5\\\\d)))\\\\d{4}\",[8]],[\"18\\\\d{5}\",[7]]]],\"KY\":[\"1\",\"011\",\"(?:345|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"345$1\",0,\"345\",[[\"345(?:2(?:22|3[23]|44|66)|333|444|6(?:23|38|40)|7(?:30|4[35-79]|6[6-9]|77)|8(?:00|1[45]|[48]8)|9(?:14|4[035-9]))\\\\d{4}\"],[\"345(?:32[1-9]|42[0-4]|5(?:1[67]|2[5-79]|4[6-9]|50|76)|649|82[56]|9(?:1[679]|2[2-9]|3[06-9]|90))\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"(?:345976|900[2-9]\\\\d\\\\d)\\\\d{4}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\"],0,0,[\"345849\\\\d{4}\"]]],\"KZ\":[\"7\",\"810\",\"(?:33622|8\\\\d{8})\\\\d{5}|[78]\\\\d{9}\",[10,14],0,\"8\",0,0,0,0,\"33|7\",[[\"(?:33622|7(?:1(?:0(?:[23]\\\\d|4[0-3]|59|63)|1(?:[23]\\\\d|4[0-79]|59)|2(?:[23]\\\\d|59)|3(?:2\\\\d|3[0-79]|4[0-35-9]|59)|4(?:[24]\\\\d|3[013-9]|5[1-9])|5(?:2\\\\d|3[1-9]|4[0-7]|59)|6(?:[2-4]\\\\d|5[19]|61)|72\\\\d|8(?:[27]\\\\d|3[1-46-9]|4[0-5]))|2(?:1(?:[23]\\\\d|4[46-9]|5[3469])|2(?:2\\\\d|3[0679]|46|5[12679])|3(?:[2-4]\\\\d|5[139])|4(?:2\\\\d|3[1-35-9]|59)|5(?:[23]\\\\d|4[0-246-8]|59|61)|6(?:2\\\\d|3[1-9]|4[0-4]|59)|7(?:[2379]\\\\d|40|5[279])|8(?:[23]\\\\d|4[0-3]|59)|9(?:2\\\\d|3[124578]|59))))\\\\d{5}\",[10]],[\"7(?:0[0-25-8]|47|6[0-4]|7[15-8]|85)\\\\d{7}\",[10]],[\"8(?:00|108\\\\d{3})\\\\d{7}\"],[\"809\\\\d{7}\",[10]],[\"808\\\\d{7}\",[10]],0,0,0,[\"751\\\\d{7}\",[10]]],\"8~10\"],\"LA\":[\"856\",\"00\",\"[23]\\\\d{9}|3\\\\d{8}|(?:[235-8]\\\\d|41)\\\\d{6}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2[13]|3[14]|[4-8]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"30[013-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:2[13]|[35-7][14]|41|8[1468])\\\\d{6}\",[8]],[\"(?:20(?:[239]\\\\d|5[24-9]|7[6-8]|88)|302\\\\d)\\\\d{6}\",[10]],0,0,0,0,[\"30[013-9]\\\\d{6}\",[9]]]],\"LB\":[\"961\",\"00\",\"[27-9]\\\\d{7}|[13-9]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27-9]\"]]],\"0\",0,0,0,0,0,[[\"7(?:62|8[0-7]|9[04-9])\\\\d{4}|(?:[14-69]\\\\d|2(?:[14-69]\\\\d|[78][1-9])|7[2-57]|8[02-9])\\\\d{5}\"],[\"793(?:[01]\\\\d|2[0-4])\\\\d{3}|(?:(?:3|81)\\\\d|7(?:[01]\\\\d|6[013-9]|8[89]|9[12]))\\\\d{5}\"],0,[\"9[01]\\\\d{6}\",[8]],0,0,0,0,0,[\"80\\\\d{6}\",[8]]]],\"LC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|758|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-8]\\\\d{6})$\",\"758$1\",0,\"758\",[[\"758(?:234|4(?:30|5\\\\d|6[2-9]|8[0-2])|57[0-2]|(?:63|75)8)\\\\d{4}\"],[\"758(?:28[4-7]|384|4(?:6[01]|8[4-9])|5(?:1[89]|20|84)|7(?:1[2-9]|2\\\\d|3[0-3])|812)\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\"]]],\"LI\":[\"423\",\"00\",\"[68]\\\\d{8}|(?:[2378]\\\\d|90)\\\\d{5}\",[7,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2379]|8(?:0[09]|7)\",\"[2379]|8(?:0(?:02|9)|7)\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"69\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]],\"0\",0,\"0|(1001)\",0,0,0,[[\"(?:2(?:01|1[27]|2[02]|3\\\\d|6[02-578]|96)|3(?:[24]0|33|7[0135-7]|8[048]|9[0269]))\\\\d{4}\",[7]],[\"(?:6(?:(?:4[5-9]|5[0-4])\\\\d|6(?:[0245]\\\\d|[17]0|3[7-9]))\\\\d|7(?:[37-9]\\\\d|42|56))\\\\d{4}\"],[\"8002[28]\\\\d\\\\d|80(?:05\\\\d|9)\\\\d{4}\"],[\"90(?:02[258]|1(?:23|3[14])|66[136])\\\\d\\\\d\",[7]],0,0,[\"870(?:28|87)\\\\d\\\\d\",[7]]]],\"LK\":[\"94\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[1-689]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:12[2-9]|602|8[12]\\\\d|9(?:1\\\\d|22|9[245]))\\\\d{6}|(?:11|2[13-7]|3[1-8]|4[157]|5[12457]|6[35-7])[2-57]\\\\d{6}\"],[\"7(?:[0-25-8]\\\\d|4[0-4])\\\\d{6}\"],0,0,0,0,[\"1973\\\\d{5}\"]]],\"LR\":[\"231\",\"00\",\"(?:2|33|5\\\\d|77|88)\\\\d{7}|[4-6]\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[4-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3578]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:2\\\\d{3}|33333)\\\\d{4}\",[8,9]],[\"(?:(?:330|555|(?:77|88)\\\\d)\\\\d|4[67])\\\\d{5}|[56]\\\\d{6}\",[7,9]],0,[\"332(?:02|[34]\\\\d)\\\\d{4}\",[9]]]],\"LS\":[\"266\",\"00\",\"(?:[256]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2568]\"]]],0,0,0,0,0,0,[[\"2\\\\d{7}\"],[\"[56]\\\\d{7}\"],[\"800[256]\\\\d{4}\"]]],\"LT\":[\"370\",\"00\",\"(?:[3469]\\\\d|52|[78]0)\\\\d{6}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"52[0-7]\"],\"(8-$1)\",1],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"8 $1\",1],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"37|4(?:[15]|6[1-8])\"],\"(8-$1)\",1],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[3-6]\"],\"(8-$1)\",1]],\"8\",0,\"[08]\",0,0,0,[[\"(?:3[1478]|4[124-6]|52)\\\\d{6}\"],[\"6\\\\d{7}\"],[\"80[02]\\\\d{5}\"],[\"9(?:0[0239]|10)\\\\d{5}\"],[\"70[05]\\\\d{5}\"],0,[\"70[67]\\\\d{5}\"],0,[\"[89]01\\\\d{5}\"],[\"808\\\\d{5}\"]]],\"LU\":[\"352\",\"00\",\"35[013-9]\\\\d{4,8}|6\\\\d{8}|35\\\\d{2,4}|(?:[2457-9]\\\\d|3[0-46-9])\\\\d{2,9}\",[4,5,6,7,8,9,10,11],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"20[2-689]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4\",[\"2(?:[0367]|4[3-8])\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"80[01]|90[015]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"20\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4 $5\",[\"2(?:[0367]|4[3-8])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,5})\",\"$1 $2 $3 $4\",[\"[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]\"]]],0,0,\"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\\\d)\",0,0,0,[[\"(?:35[013-9]|80[2-9]|90[89])\\\\d{1,8}|(?:2[2-9]|3[0-46-9]|[457]\\\\d|8[13-9]|9[2-579])\\\\d{2,9}\"],[\"6(?:[269][18]|5[1568]|7[189]|81)\\\\d{6}\",[9]],[\"800\\\\d{5}\",[8]],[\"90[015]\\\\d{5}\",[8]],0,0,0,0,[\"20(?:1\\\\d{5}|[2-689]\\\\d{1,7})\",[4,5,6,7,8,9,10]],[\"801\\\\d{5}\",[8]]]],\"LV\":[\"371\",\"00\",\"(?:[268]\\\\d|90)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[269]|8[01]\"]]],0,0,0,0,0,0,[[\"6\\\\d{7}\"],[\"23(?:23[0-57-9]|33[0238])\\\\d{3}|2(?:[0-24-9]\\\\d\\\\d|3(?:0[07]|[14-9]\\\\d|2[024-9]|3[0-24-9]))\\\\d{4}\"],[\"80\\\\d{6}\"],[\"90\\\\d{6}\"],0,0,0,0,0,[\"81\\\\d{6}\"]]],\"LY\":[\"218\",\"00\",\"[2-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"[2-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:2(?:0[56]|[1-6]\\\\d|7[124579]|8[124])|3(?:1\\\\d|2[2356])|4(?:[17]\\\\d|2[1-357]|5[2-4]|8[124])|5(?:[1347]\\\\d|2[1-469]|5[13-5]|8[1-4])|6(?:[1-479]\\\\d|5[2-57]|8[1-5])|7(?:[13]\\\\d|2[13-79])|8(?:[124]\\\\d|5[124]|84))\\\\d{6}\"],[\"9[1-6]\\\\d{7}\"]]],\"MA\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],[[\"(\\\\d{5})(\\\\d{4})\",\"$1-$2\",[\"5(?:29|38)\",\"5(?:29[89]|389)\",\"5(?:29[89]|389)0\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5[45]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1-$2\",[\"5(?:2[2-489]|3[5-9]|9)|892\",\"5(?:2(?:[2-49]|8[235-9])|3[5-9]|9)|892\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"8\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1-$2\",[\"[5-7]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"5(?:29(?:[189][05]|2[29]|3[01])|389[05])\\\\d{4}|5(?:2(?:[0-25-7]\\\\d|3[1-578]|4[02-46-8]|8[0235-7]|90)|3(?:[0-47]\\\\d|5[02-9]|6[02-8]|8[08]|9[3-9])|(?:4[067]|5[03])\\\\d)\\\\d{5}\"],[\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:[017]\\\\d|2[0-2]|6[0-8]|8[0-3]))\\\\d{6}\"],[\"80\\\\d{7}\"],[\"89\\\\d{7}\"],0,0,0,0,[\"592(?:4[0-2]|93)\\\\d{4}\"]]],\"MC\":[\"377\",\"00\",\"(?:[3489]|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[389]\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"6\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:870|9[2-47-9]\\\\d)\\\\d{5}\",[8]],[\"4(?:[46]\\\\d|5[1-9])\\\\d{5}|(?:3|6\\\\d)\\\\d{7}\"],[\"(?:800|90\\\\d)\\\\d{5}\",[8]]]],\"MD\":[\"373\",\"00\",\"(?:[235-7]\\\\d|[89]0)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"22|3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[25-7]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:(?:2[1-9]|3[1-79])\\\\d|5(?:33|5[257]))\\\\d{5}\"],[\"562\\\\d{5}|(?:6\\\\d|7[16-9])\\\\d{6}\"],[\"800\\\\d{5}\"],[\"90[056]\\\\d{5}\"],0,0,[\"803\\\\d{5}\"],0,[\"3[08]\\\\d{6}\"],[\"808\\\\d{5}\"]]],\"ME\":[\"382\",\"00\",\"(?:20|[3-79]\\\\d)\\\\d{6}|80\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:20[2-8]|3(?:[0-2][2-7]|3[24-7])|4(?:0[2-467]|1[2467])|5(?:0[2467]|1[24-7]|2[2-467]))\\\\d{5}\",[8]],[\"6(?:[07-9]\\\\d|3[024]|6[0-25])\\\\d{5}\",[8]],[\"80(?:[0-2578]|9\\\\d)\\\\d{5}\"],[\"9(?:4[1568]|5[178])\\\\d{5}\",[8]],0,0,[\"77[1-9]\\\\d{5}\",[8]],0,[\"78[1-49]\\\\d{5}\",[8]]]],\"MF\":[\"590\",\"00\",\"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:0[079]|[14]3|[27][79]|30|5[0-268]|87)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"976[01]\\\\d{5}\"]]],\"MG\":[\"261\",\"00\",\"[23]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\",0,\"0|([24-9]\\\\d{6})$\",\"20$1\",0,0,[[\"2072[29]\\\\d{4}|20(?:2\\\\d|4[47]|5[3467]|6[279]|7[35]|8[268]|9[245])\\\\d{5}\"],[\"3[2-489]\\\\d{7}\"],0,0,0,0,0,0,[\"22\\\\d{7}\"]]],\"MH\":[\"692\",\"011\",\"329\\\\d{4}|(?:[256]\\\\d|45)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-6]\"]]],\"1\",0,0,0,0,0,[[\"(?:247|528|625)\\\\d{4}\"],[\"(?:(?:23|54)5|329|45[356])\\\\d{4}\"],0,0,0,0,0,0,[\"635\\\\d{4}\"]]],\"MK\":[\"389\",\"00\",\"[2-578]\\\\d{7}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2|34[47]|4(?:[37]7|5[47]|64)\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[347]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[58]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:(?:2(?:62|77)0|3444)\\\\d|4[56]440)\\\\d{3}|(?:34|4[357])700\\\\d{3}|(?:2(?:[0-3]\\\\d|5[0-578]|6[01]|82)|3(?:1[3-68]|[23][2-68]|4[23568])|4(?:[23][2-68]|4[3-68]|5[2568]|6[25-8]|7[24-68]|8[4-68]))\\\\d{5}\"],[\"7(?:3555|4747|9(?:[019]77|42[0-4]))\\\\d{3}|7(?:[0-25-8]\\\\d\\\\d|3(?:[1-4]\\\\d|7[01578])|4(?:2\\\\d|60|7[01578])|9(?:[23]\\\\d|4[01]|7[015]))\\\\d{4}\"],[\"800\\\\d{5}\"],[\"5\\\\d{7}\"],0,0,0,0,0,[\"8(?:0[1-9]|[1-9]\\\\d)\\\\d{5}\"]]],\"ML\":[\"223\",\"00\",\"[24-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-9]\"]]],0,0,0,0,0,0,[[\"2(?:07[0-8]|12[67])\\\\d{4}|(?:2(?:02|1[4-689])|4(?:0[0-4]|4[1-39]))\\\\d{5}\"],[\"2(?:0(?:01|79)|17\\\\d)\\\\d{4}|(?:5[01]|[679]\\\\d|8[2-49])\\\\d{6}\"],[\"80\\\\d{6}\"]]],\"MM\":[\"95\",\"00\",\"1\\\\d{5,7}|95\\\\d{6}|(?:[4-7]|9[0-46-9])\\\\d{6,8}|(?:2|8\\\\d)\\\\d{5,8}\",[6,7,8,9,10],[[\"(\\\\d)(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"16|2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[4-7]|8[1-35]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4,6})\",\"$1 $2 $3\",[\"9(?:2[0-4]|[35-9]|4[137-9])\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"92\"],\"0$1\"],[\"(\\\\d)(\\\\d{5})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:1(?:(?:2\\\\d|3[56]|[89][0-6])\\\\d|4(?:2[2-469]|39|46|6[25]|7[0-3]|83)|6)|2(?:2(?:00|8[34])|4(?:0\\\\d|2[246]|39|46|62|7[0-3]|83)|51\\\\d\\\\d)|4(?:2(?:2\\\\d\\\\d|48[0-3])|3(?:20\\\\d|4(?:70|83)|56)|420\\\\d|5470)|6(?:0(?:[23]|88\\\\d)|(?:124|[56]2\\\\d)\\\\d|247[23]|3(?:20\\\\d|470)|4(?:2[04]\\\\d|47[23])|7(?:(?:3\\\\d|8[01459])\\\\d|4(?:39|60|7[013]))))\\\\d{4}|5(?:2(?:2\\\\d{5,6}|47[023]\\\\d{4})|(?:347[23]|4(?:2(?:1|86)|470)|522\\\\d|6(?:20\\\\d|483)|7(?:20\\\\d|48[0-2])|8(?:20\\\\d|47[02])|9(?:20\\\\d|47[01]))\\\\d{4})|7(?:(?:0470|4(?:25\\\\d|470)|5(?:202|470|96\\\\d))\\\\d{4}|1(?:20\\\\d{4,5}|4(?:70|83)\\\\d{4}))|8(?:1(?:2\\\\d{5,6}|4(?:10|7[01]\\\\d)\\\\d{3})|2(?:2\\\\d{5,6}|(?:320|490\\\\d)\\\\d{3})|(?:3(?:2\\\\d\\\\d|470)|4[24-7]|5(?:2\\\\d|4[1-9]|51)\\\\d|6[23])\\\\d{4})|(?:1[2-6]\\\\d|4(?:2[24-8]|3[2-7]|[46][2-6]|5[3-5])|5(?:[27][2-8]|3[2-68]|4[24-8]|5[23]|6[2-4]|8[24-7]|9[2-7])|6(?:[19]20|42[03-6]|(?:52|7[45])\\\\d)|7(?:[04][24-8]|[15][2-7]|22|3[2-4])|8(?:1[2-689]|2[2-8]|[35]2\\\\d))\\\\d{4}|25\\\\d{5,6}|(?:2[2-9]|6(?:1[2356]|[24][2-6]|3[24-6]|5[2-4]|6[2-8]|7[235-7]|8[245]|9[24])|8(?:3[24]|5[245]))\\\\d{4}\",[6,7,8,9]],[\"(?:17[01]|9(?:2(?:[0-4]|[56]\\\\d\\\\d)|(?:3(?:[0-36]|4\\\\d)|(?:6\\\\d|9[4-8])\\\\d|7(?:3|40|[5-9]\\\\d)|8(?:78|[89]\\\\d))\\\\d|4(?:(?:[0245]\\\\d|[1379])\\\\d|88)|5[0-6])\\\\d)\\\\d{4}|9[69]1\\\\d{6}|9(?:[68]\\\\d|9[089])\\\\d{5}\",[7,8,9,10]],[\"80080(?:[01][1-9]|2\\\\d)\\\\d{3}\",[10]],0,0,0,0,0,[\"1333\\\\d{4}|[12]468\\\\d{4}\",[8]]]],\"MN\":[\"976\",\"001\",\"[12]\\\\d{7,9}|[5-9]\\\\d{7}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[12]1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[12]2[1-3]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])\",\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"[12]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"[12]2[1-3]\\\\d{5,6}|7(?:0[0-5]\\\\d|128)\\\\d{4}|(?:[12](?:1|27)|5[368])\\\\d{6}|[12](?:3[2-8]|4[2-68]|5[1-4689])\\\\d{6,7}\"],[\"(?:83[01]|920)\\\\d{5}|(?:5[05]|6[06]|8[015689]|9[013-9])\\\\d{6}\",[8]],0,0,0,0,0,0,[\"712[0-79]\\\\d{4}|7(?:1[013-9]|[25-8]\\\\d)\\\\d{5}\",[8]]]],\"MO\":[\"853\",\"00\",\"0800\\\\d{3}|(?:28|[68]\\\\d)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[268]\"]]],0,0,0,0,0,0,[[\"(?:28[2-9]|8(?:11|[2-57-9]\\\\d))\\\\d{5}\",[8]],[\"6800[0-79]\\\\d{3}|6(?:[235]\\\\d\\\\d|6(?:0[0-5]|[1-9]\\\\d)|8(?:0[1-9]|[14-8]\\\\d|2[5-9]|[39][0-4]))\\\\d{4}\",[8]],[\"0800\\\\d{3}\",[7]]]],\"MP\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:67|90)0\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"670$1\",0,\"670\",[[\"670(?:2(?:3[3-7]|56|8[4-8])|32[1-38]|4(?:33|8[348])|5(?:32|55|88)|6(?:64|70|82)|78[3589]|8[3-9]8|989)\\\\d{4}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\"]]],\"MQ\":[\"596\",\"00\",\"(?:69|80)\\\\d{7}|(?:59|97)6\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"596(?:[03-7]\\\\d|10|2[7-9]|8[09]|9[4-9])\\\\d{4}\"],[\"69(?:6(?:[0-46-9]\\\\d|5[0-6])|727)\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"976(?:6\\\\d|7[0-367])\\\\d{4}\"]]],\"MR\":[\"222\",\"00\",\"(?:[2-4]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-48]\"]]],0,0,0,0,0,0,[[\"(?:25[08]|35\\\\d|45[1-7])\\\\d{5}\"],[\"[2-4][0-46-9]\\\\d{6}\"],[\"800\\\\d{5}\"]]],\"MS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|664|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([34]\\\\d{6})$\",\"664$1\",0,\"664\",[[\"6644(?:1[0-3]|91)\\\\d{4}\"],[\"664(?:3(?:49|9[1-6])|49[2-6])\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\"]]],\"MT\":[\"356\",\"00\",\"3550\\\\d{4}|(?:[2579]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2357-9]\"]]],0,0,0,0,0,0,[[\"20(?:3[1-4]|6[059])\\\\d{4}|2(?:0[19]|[1-357]\\\\d|60)\\\\d{5}\"],[\"(?:7(?:210|[79]\\\\d\\\\d)|9(?:[29]\\\\d\\\\d|69[67]|8(?:1[1-3]|89|97)))\\\\d{4}\"],[\"800(?:02|[3467]\\\\d)\\\\d{3}\"],[\"5(?:0(?:0(?:37|43)|(?:6\\\\d|70|9[0168])\\\\d)|[12]\\\\d0[1-5])\\\\d{3}\"],0,0,[\"501\\\\d{5}\"],[\"7117\\\\d{4}\"],[\"3550\\\\d{4}\"]]],\"MU\":[\"230\",\"0(?:0|[24-7]0|3[03])\",\"(?:5|8\\\\d\\\\d)\\\\d{7}|[2-468]\\\\d{6}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46]|8[013]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"5\"]],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"8\"]]],0,0,0,0,0,0,[[\"(?:2(?:[0346-8]\\\\d|1[0-7])|4(?:[013568]\\\\d|2[4-7])|54(?:[3-5]\\\\d|71)|6\\\\d\\\\d|8(?:14|3[129]))\\\\d{4}\",[7,8]],[\"5(?:4(?:2[1-389]|7[1-9])|87[15-8])\\\\d{4}|5(?:2[5-9]|4[3-689]|[57]\\\\d|8[0-689]|9[0-8])\\\\d{5}\",[8]],[\"802\\\\d{7}|80[0-2]\\\\d{4}\",[7,10]],[\"30\\\\d{5}\",[7]],0,0,0,0,[\"3(?:20|9\\\\d)\\\\d{4}\",[7]]],\"020\"],\"MV\":[\"960\",\"0(?:0|19)\",\"(?:800|9[0-57-9]\\\\d)\\\\d{7}|[34679]\\\\d{6}\",[7,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[3467]|9[13-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],0,0,0,0,0,0,[[\"(?:3(?:0[0-3]|3[0-59])|6(?:[58][024689]|6[024-68]|7[02468]))\\\\d{4}\",[7]],[\"46[46]\\\\d{4}|(?:7\\\\d|9[13-9])\\\\d{5}\",[7]],[\"800\\\\d{7}\",[10]],[\"900\\\\d{7}\",[10]],0,0,[\"4(?:0[01]|50)\\\\d{4}\",[7]]],\"00\"],\"MW\":[\"265\",\"00\",\"(?:[1289]\\\\d|31|77)\\\\d{7}|1\\\\d{6}\",[7,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[137-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:1[2-9]|2[12]\\\\d\\\\d)\\\\d{5}\"],[\"111\\\\d{6}|(?:31|77|[89][89])\\\\d{7}\",[9]]]],\"MX\":[\"52\",\"0[09]\",\"1(?:(?:44|99)[1-9]|65[0-689])\\\\d{7}|(?:1(?:[017]\\\\d|[235][1-9]|4[0-35-9]|6[0-46-9]|8[1-79]|9[1-8])|[2-9]\\\\d)\\\\d{8}\",[10,11],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"33|5[56]|81\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-9]\"],0,1],[\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 $3 $4\",[\"1(?:33|5[56]|81)\"],0,1],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 $3 $4\",[\"1\"],0,1]],\"01\",0,\"0(?:[12]|4[45])|1\",0,0,0,[[\"657[12]\\\\d{6}|(?:2(?:0[01]|2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[25-7][1-9]|3[1-8]|4\\\\d|8[1-35-9]|9[2-689])|5(?:[56]\\\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|6[1-9]|7[12]|8[1-8]|9\\\\d))\\\\d{7}\",[10]],[\"657[12]\\\\d{6}|(?:1(?:2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-7][1-9]|3[1-8]|8[1-35-9]|9[2-689])|5(?:[56]\\\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))|2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[25-7][1-9]|3[1-8]|4\\\\d|8[1-35-9]|9[2-689])|5(?:[56]\\\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|6[1-9]|7[12]|8[1-8]|9\\\\d))\\\\d{7}\"],[\"8(?:00|88)\\\\d{7}\",[10]],[\"900\\\\d{7}\",[10]],[\"500\\\\d{7}\",[10]],0,0,0,0,[\"300\\\\d{7}\",[10]]],\"00\"],\"MY\":[\"60\",\"00\",\"1\\\\d{8,9}|(?:3\\\\d|[4-9])\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"[4-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1-$2 $3\",[\"1(?:[02469]|[378][1-9]|53)|8\",\"1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"3\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3-$4\",[\"1(?:[367]|80)\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"15\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"1\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:3(?:2[0-36-9]|3[0-368]|4[0-278]|5[0-24-8]|6[0-467]|7[1246-9]|8\\\\d|9[0-57])\\\\d|4(?:2[0-689]|[3-79]\\\\d|8[1-35689])|5(?:2[0-589]|[3468]\\\\d|5[0-489]|7[1-9]|9[23])|6(?:2[2-9]|3[1357-9]|[46]\\\\d|5[0-6]|7[0-35-9]|85|9[015-8])|7(?:[2579]\\\\d|3[03-68]|4[0-8]|6[5-9]|8[0-35-9])|8(?:[24][2-8]|3[2-5]|5[2-7]|6[2-589]|7[2-578]|[89][2-9])|9(?:0[57]|13|[25-7]\\\\d|[3489][0-8]))\\\\d{5}\",[8,9]],[\"1(?:1888[689]|4400|8(?:47|8[27])[0-4])\\\\d{4}|1(?:0(?:[23568]\\\\d|4[0-6]|7[016-9]|9[0-8])|1(?:[1-5]\\\\d\\\\d|6(?:0[5-9]|[1-9]\\\\d)|7(?:[0134]\\\\d|2[1-9]|5[0-6]))|(?:[269]\\\\d|[37][1-9]|4[235-9])\\\\d|5(?:31|9\\\\d\\\\d)|8(?:1[23]|[236]\\\\d|4[06]|5(?:46|[7-9])|7[016-9]|8[01]|9[0-8]))\\\\d{5}\",[9,10]],[\"1[378]00\\\\d{6}\",[10]],[\"1600\\\\d{6}\",[10]],0,0,0,0,[\"15(?:4(?:6[0-4]\\\\d|8(?:0[125]|[17]\\\\d|21|3[01]|4[01589]|5[014]|6[02]))|6(?:32[0-6]|78\\\\d))\\\\d{4}\",[10]]]],\"MZ\":[\"258\",\"00\",\"(?:2|8\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2|8[2-79]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]],0,0,0,0,0,0,[[\"2(?:[1346]\\\\d|5[0-2]|[78][12]|93)\\\\d{5}\",[8]],[\"8[2-79]\\\\d{7}\",[9]],[\"800\\\\d{6}\",[9]]]],\"NA\":[\"264\",\"00\",\"[68]\\\\d{7,8}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"87\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"64426\\\\d{3}|6(?:1(?:2[2-7]|3[01378]|4[0-4])|254|32[0237]|4(?:27|41|5[25])|52[236-8]|626|7(?:2[2-4]|30))\\\\d{4,5}|6(?:1(?:(?:0\\\\d|2[0189]|3[24-69]|4[5-9])\\\\d|17|69|7[014])|2(?:17|5[0-36-8]|69|70)|3(?:17|2[14-689]|34|6[289]|7[01]|81)|4(?:17|2[0-2]|4[06]|5[0137]|69|7[01])|5(?:17|2[0459]|69|7[01])|6(?:17|25|38|42|69|7[01])|7(?:17|2[569]|3[13]|6[89]|7[01]))\\\\d{4}\"],[\"(?:60|8[1245])\\\\d{7}\",[9]],[\"80\\\\d{7}\",[9]],[\"8701\\\\d{5}\",[9]],0,0,0,0,[\"8(?:3\\\\d\\\\d|86)\\\\d{5}\"]]],\"NC\":[\"687\",\"00\",\"(?:050|[2-57-9]\\\\d\\\\d)\\\\d{3}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1.$2.$3\",[\"[02-57-9]\"]]],0,0,0,0,0,0,[[\"(?:2[03-9]|3[0-5]|4[1-7]|88)\\\\d{4}\"],[\"(?:5[0-4]|[79]\\\\d|8[0-79])\\\\d{4}\"],[\"050\\\\d{3}\"],[\"36\\\\d{4}\"]]],\"NE\":[\"227\",\"00\",\"[027-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"08\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[089]|2[013]|7[04]\"]]],0,0,0,0,0,0,[[\"2(?:0(?:20|3[1-8]|4[13-5]|5[14]|6[14578]|7[1-578])|1(?:4[145]|5[14]|6[14-68]|7[169]|88))\\\\d{4}\"],[\"(?:23|7[04]|[89]\\\\d)\\\\d{6}\"],[\"08\\\\d{6}\"],[\"09\\\\d{6}\"]]],\"NF\":[\"672\",\"00\",\"[13]\\\\d{5}\",[6],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"1[0-3]\"]],[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"[13]\"]]],0,0,\"([0-258]\\\\d{4})$\",\"3$1\",0,0,[[\"(?:1(?:06|17|28|39)|3[0-2]\\\\d)\\\\d{3}\"],[\"(?:14|3[58])\\\\d{4}\"]]],\"NG\":[\"234\",\"009\",\"(?:[124-7]|9\\\\d{3})\\\\d{6}|[1-9]\\\\d{7}|[78]\\\\d{9,13}\",[7,8,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"78\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]|9(?:0[3-9]|[1-9])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-7]|8[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})(\\\\d{5,6})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:(?:[1-356]\\\\d|4[02-8]|8[2-9])\\\\d|9(?:0[3-9]|[1-9]\\\\d))\\\\d{5}|7(?:0(?:[013-689]\\\\d|2[0-24-9])\\\\d{3,4}|[1-79]\\\\d{6})|(?:[12]\\\\d|4[147]|5[14579]|6[1578]|7[1-3578])\\\\d{5}\",[7,8]],[\"(?:702[0-24-9]|8(?:01|19)[01])\\\\d{6}|(?:70[13-689]|8(?:0[2-9]|1[0-8])|9(?:0[1-9]|1[2356]))\\\\d{7}\",[10]],[\"800\\\\d{7,11}\",[10,11,12,13,14]],0,0,0,[\"700\\\\d{7,11}\",[10,11,12,13,14]]]],\"NI\":[\"505\",\"00\",\"(?:1800|[25-8]\\\\d{3})\\\\d{4}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[125-8]\"]]],0,0,0,0,0,0,[[\"2\\\\d{7}\"],[\"(?:5(?:5[0-7]|[78]\\\\d)|6(?:20|3[035]|4[045]|5[05]|77|8[1-9]|9[059])|(?:7[5-8]|8\\\\d)\\\\d)\\\\d{5}\"],[\"1800\\\\d{4}\"]]],\"NL\":[\"31\",\"00\",\"(?:[124-7]\\\\d\\\\d|3(?:[02-9]\\\\d|1[0-8]))\\\\d{6}|8\\\\d{6,9}|9\\\\d{6,10}|1\\\\d{4,5}\",[5,6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{4,7})\",\"$1 $2\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"66\"],\"0$1\"],[\"(\\\\d)(\\\\d{8})\",\"$1 $2\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-578]|91\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:1(?:[035]\\\\d|1[13-578]|6[124-8]|7[24]|8[0-467])|2(?:[0346]\\\\d|2[2-46-9]|5[125]|9[479])|3(?:[03568]\\\\d|1[3-8]|2[01]|4[1-8])|4(?:[0356]\\\\d|1[1-368]|7[58]|8[15-8]|9[23579])|5(?:[0358]\\\\d|[19][1-9]|2[1-57-9]|4[13-8]|6[126]|7[0-3578])|7\\\\d\\\\d)\\\\d{6}\",[9]],[\"(?:6[1-58]|970\\\\d)\\\\d{7}\",[9,11]],[\"800\\\\d{4,7}\",[7,8,9,10]],[\"90[069]\\\\d{4,7}\",[7,8,9,10]],0,0,[\"140(?:1[035]|2[0346]|3[03568]|4[0356]|5[0358]|8[458])|(?:140(?:1[16-8]|2[259]|3[124]|4[17-9]|5[124679]|7)|8[478]\\\\d{6})\\\\d\",[5,6,9]],[\"66\\\\d{7}\",[9]],[\"(?:85|91)\\\\d{7}\",[9]]]],\"NO\":[\"47\",\"00\",\"(?:0|[2-9]\\\\d{3})\\\\d{4}\",[5,8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[489]|59\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[235-7]\"]]],0,0,0,0,0,\"[02-689]|7[0-8]\",[[\"(?:2[1-4]|3[1-3578]|5[1-35-7]|6[1-4679]|7[0-8])\\\\d{6}\",[8]],[\"(?:4[015-8]|59|9\\\\d)\\\\d{6}\",[8]],[\"80[01]\\\\d{5}\",[8]],[\"82[09]\\\\d{5}\",[8]],[\"880\\\\d{5}\",[8]],0,[\"(?:0[2-9]|81(?:0(?:0[7-9]|1\\\\d)|5\\\\d\\\\d))\\\\d{3}\"],0,[\"85[0-5]\\\\d{5}\",[8]],[\"810(?:0[0-6]|[2-8]\\\\d)\\\\d{3}\",[8]]]],\"NP\":[\"977\",\"00\",\"(?:1\\\\d|9)\\\\d{9}|[1-9]\\\\d{7}\",[8,10,11],[[\"(\\\\d)(\\\\d{7})\",\"$1-$2\",[\"1[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1-$2\",[\"1[01]|[2-8]|9(?:[1-59]|[67][2-6])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"9\"]]],\"0\",0,0,0,0,0,[[\"(?:1[0-6]\\\\d|99[02-6])\\\\d{5}|(?:2[13-79]|3[135-8]|4[146-9]|5[135-7]|6[13-9]|7[15-9]|8[1-46-9]|9[1-7])[2-6]\\\\d{5}\",[8]],[\"9(?:6[0-3]|7[024-6]|8[0-24-68])\\\\d{7}\",[10]],[\"1(?:66001|800\\\\d\\\\d)\\\\d{5}\",[11]]]],\"NR\":[\"674\",\"00\",\"(?:444|(?:55|8\\\\d)\\\\d|666)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-68]\"]]],0,0,0,0,0,0,[[\"444\\\\d{4}\"],[\"(?:55[3-9]|666|8\\\\d\\\\d)\\\\d{4}\"]]],\"NU\":[\"683\",\"00\",\"(?:[47]|888\\\\d)\\\\d{3}\",[4,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"8\"]]],0,0,0,0,0,0,[[\"[47]\\\\d{3}\",[4]],[\"888[4-9]\\\\d{3}\",[7]]]],\"NZ\":[\"64\",\"0(?:0|161)\",\"[29]\\\\d{7,9}|50\\\\d{5}(?:\\\\d{2,3})?|6[0-35-9]\\\\d{6}|7\\\\d{7,8}|8\\\\d{4,9}|(?:11\\\\d|[34])\\\\d{7}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,8})\",\"$1 $2\",[\"8[1-579]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"50[036-8]|[89]0\",\"50(?:[0367]|88)|[89]0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"24|[346]|7[2-57-9]|9[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:10|74)|[59]|80\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1|2[028]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,5})\",\"$1 $2 $3\",[\"2(?:[169]|7[0-35-9])|7|86\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"24099\\\\d{3}|(?:3[2-79]|[49][2-9]|6[235-9]|7[2-57-9])\\\\d{6}\",[8]],[\"2[0-27-9]\\\\d{7,8}|21\\\\d{6}\",[8,9,10]],[\"508\\\\d{6,7}|80\\\\d{6,8}\",[8,9,10]],[\"(?:11\\\\d{5}|50(?:0[08]|30|66|77|88))\\\\d{3}|90\\\\d{6,8}\",[7,8,9,10]],[\"70\\\\d{7}\",[9]],0,[\"8(?:1[6-9]|22|3\\\\d|4[045]|5[459]|7[0-3579]|90)\\\\d{2,7}\"],[\"[28]6\\\\d{6,7}\",[8,9]]],\"00\"],\"OM\":[\"968\",\"00\",\"(?:1505|[279]\\\\d{3}|500)\\\\d{4}|800\\\\d{5,6}\",[7,8,9],[[\"(\\\\d{3})(\\\\d{4,6})\",\"$1 $2\",[\"[58]\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[179]\"]]],0,0,0,0,0,0,[[\"2[2-6]\\\\d{6}\",[8]],[\"1505\\\\d{4}|(?:7(?:[1289]\\\\d|7[0-4])|9(?:0[1-9]|[1-9]\\\\d))\\\\d{5}\",[8]],[\"8007\\\\d{4,5}|(?:500|800[05])\\\\d{4}\"],[\"900\\\\d{5}\",[8]]]],\"PA\":[\"507\",\"00\",\"(?:00800|8\\\\d{3})\\\\d{6}|[68]\\\\d{7}|[1-57-9]\\\\d{6}\",[7,8,10,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[1-57-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[68]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],0,0,0,0,0,0,[[\"(?:1(?:0\\\\d|1[479]|2[37]|3[0137]|4[17]|5[05]|6[58]|7[0167]|8[2358]|9[1389])|2(?:[0235-79]\\\\d|1[0-7]|4[013-9]|8[02-9])|3(?:[089]\\\\d|1[0-7]|2[0-5]|33|4[0-79]|5[0-35]|6[068]|7[0-8])|4(?:00|3[0-579]|4\\\\d|7[0-57-9])|5(?:[01]\\\\d|2[0-7]|[56]0|79)|7(?:0[09]|2[0-26-8]|3[03]|4[04]|5[05-9]|6[056]|7[0-24-9]|8[5-9]|90)|8(?:09|2[89]|3\\\\d|4[0-24-689]|5[014]|8[02])|9(?:0[5-9]|1[0135-8]|2[036-9]|3[35-79]|40|5[0457-9]|6[05-9]|7[04-9]|8[35-8]|9\\\\d))\\\\d{4}\",[7]],[\"(?:1[16]1|21[89]|6\\\\d{3}|8(?:1[01]|7[23]))\\\\d{4}\",[7,8]],[\"800\\\\d{4,5}|(?:00800|800\\\\d)\\\\d{6}\"],[\"(?:8(?:22|55|60|7[78]|86)|9(?:00|81))\\\\d{4}\",[7]]]],\"PE\":[\"51\",\"00|19(?:1[124]|77|90)00\",\"(?:[14-8]|9\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[4-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"]]],\"0\",0,0,0,0,0,[[\"(?:(?:4[34]|5[14])[0-8]\\\\d|7(?:173|3[0-8]\\\\d)|8(?:10[05689]|6(?:0[06-9]|1[6-9]|29)|7(?:0[569]|[56]0)))\\\\d{4}|(?:1[0-8]|4[12]|5[236]|6[1-7]|7[246]|8[2-4])\\\\d{6}\",[8]],[\"9\\\\d{8}\",[9]],[\"800\\\\d{5}\",[8]],[\"805\\\\d{5}\",[8]],[\"80[24]\\\\d{5}\",[8]],0,0,0,0,[\"801\\\\d{5}\",[8]]],\"00\",\" Anexo \"],\"PF\":[\"689\",\"00\",\"4\\\\d{5}(?:\\\\d{2})?|8\\\\d{7,8}\",[6,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4|8[7-9]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]],0,0,0,0,0,0,[[\"4(?:0[4-689]|9[4-68])\\\\d{5}\",[8]],[\"8[7-9]\\\\d{6}\",[8]],[\"80[0-5]\\\\d{6}\",[9]],0,0,0,[\"44\\\\d{4}\",[6]],0,[\"499\\\\d{5}\",[8]]]],\"PG\":[\"675\",\"00|140[1-3]\",\"(?:180|[78]\\\\d{3})\\\\d{4}|(?:[2-589]\\\\d|64)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"18|[2-69]|85\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[78]\"]]],0,0,0,0,0,0,[[\"(?:(?:3[0-2]|4[257]|5[34]|9[78])\\\\d|64[1-9]|85[02-46-9])\\\\d{4}\",[7]],[\"(?:7\\\\d|8[128])\\\\d{6}\",[8]],[\"180\\\\d{4}\",[7]],0,0,0,0,[\"27[01]\\\\d{4}\",[7]],[\"2(?:0[0-57]|7[568])\\\\d{4}\",[7]]],\"00\"],\"PH\":[\"63\",\"00\",\"(?:[2-7]|9\\\\d)\\\\d{8}|2\\\\d{5}|(?:1800|8)\\\\d{7,9}\",[6,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"2\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2\",\"3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"346|4(?:27|9[35])|883\",\"3469|4(?:279|9(?:30|56))|8834\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|8[2-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{4})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"1\"]]],\"0\",0,0,0,0,0,[[\"(?:(?:2[3-8]|3[2-68]|4[2-9]|5[2-6]|6[2-58]|7[24578])\\\\d{3}|88(?:22\\\\d\\\\d|42))\\\\d{4}|(?:2|8[2-8]\\\\d\\\\d)\\\\d{5}\",[6,8,9,10]],[\"(?:8(?:1[37]|9[5-8])|9(?:0[5-9]|1[0-24-9]|[235-7]\\\\d|4[2-9]|8[135-9]|9[1-9]))\\\\d{7}\",[10]],[\"1800\\\\d{7,9}\",[11,12,13]]]],\"PK\":[\"92\",\"00\",\"122\\\\d{6}|[24-8]\\\\d{10,11}|9(?:[013-9]\\\\d{8,10}|2(?:[01]\\\\d\\\\d|2(?:[06-8]\\\\d|1[01]))\\\\d{7})|(?:[2-8]\\\\d{3}|92(?:[0-7]\\\\d|8[1-9]))\\\\d{6}|[24-9]\\\\d{8}|[89]\\\\d{7}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,7})\",\"$1 $2 $3\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{6,7})\",\"$1 $2\",[\"2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])\",\"9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{7,8})\",\"$1 $2\",[\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"58\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[24-9]\"],\"(0$1)\"]],\"0\",0,0,0,0,0,[[\"(?:(?:21|42)[2-9]|58[126])\\\\d{7}|(?:2[25]|4[0146-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\\\\d{6,7}|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8]))[2-9]\\\\d{5,6}\",[9,10]],[\"3(?:[0-24]\\\\d|3[0-7]|55|64)\\\\d{7}\",[10]],[\"800\\\\d{5}(?:\\\\d{3})?\",[8,11]],[\"900\\\\d{5}\",[8]],[\"122\\\\d{6}\",[9]],0,[\"(?:2(?:[125]|3[2358]|4[2-4]|9[2-8])|4(?:[0-246-9]|5[3479])|5(?:[1-35-7]|4[2-467])|6(?:0[468]|[1-8])|7(?:[14]|2[236])|8(?:[16]|2[2-689]|3[23578]|4[3478]|5[2356])|9(?:1|22|3[27-9]|4[2-6]|6[3569]|9[2-7]))111\\\\d{6}\",[11,12]]]],\"PL\":[\"48\",\"00\",\"(?:6|8\\\\d\\\\d)\\\\d{7}|[1-9]\\\\d{6}(?:\\\\d{2})?|[26]\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{5})\",\"$1\",[\"19\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"11|20|64\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1\",\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"64\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[2-8]|[2-7]|8[1-79]|9[145]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"8\"]]],0,0,0,0,0,0,[[\"47\\\\d{7}|(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])(?:[02-9]\\\\d{6}|1(?:[0-8]\\\\d{5}|9\\\\d{3}(?:\\\\d{2})?))\",[7,9]],[\"21(?:1(?:[145]\\\\d|3[1-5])|2[0-4]\\\\d)\\\\d{4}|(?:45|5[0137]|6[069]|7[2389]|88)\\\\d{7}\",[9]],[\"800\\\\d{6,7}\",[9,10]],[\"70[01346-8]\\\\d{6}\",[9]],0,0,[\"804\\\\d{6}\",[9]],[\"64\\\\d{4,7}\",[6,7,8,9]],[\"39\\\\d{7}\",[9]],[\"801\\\\d{6}\",[9]]]],\"PM\":[\"508\",\"00\",\"(?:[45]|80\\\\d\\\\d)\\\\d{5}\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[45]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:4[1-356]|50)\\\\d{4}\",[6]],[\"(?:4[02-4]|5[056])\\\\d{4}\",[6]],[\"80[0-5]\\\\d{6}\",[9]]]],\"PR\":[\"1\",\"011\",\"(?:[589]\\\\d\\\\d|787)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"787|939\",[[\"(?:787|939)[2-9]\\\\d{6}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\"]]],\"PS\":[\"970\",\"00\",\"[2489]2\\\\d{6}|(?:1\\\\d|5)\\\\d{8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2489]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\",0,0,0,0,0,[[\"(?:22[2-47-9]|42[45]|82[014-68]|92[3569])\\\\d{5}\",[8]],[\"5[69]\\\\d{7}\",[9]],[\"1800\\\\d{6}\",[10]],0,0,0,0,0,0,[\"1700\\\\d{6}\",[10]]]],\"PT\":[\"351\",\"00\",\"1693\\\\d{5}|(?:[26-9]\\\\d|30)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2[12]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"16|[236-9]\"]]],0,0,0,0,0,0,[[\"2(?:[12]\\\\d|3[1-689]|4[1-59]|[57][1-9]|6[1-35689]|8[1-69]|9[1256])\\\\d{6}\"],[\"6(?:[06]92(?:30|9\\\\d)|[35]92(?:3[03]|9\\\\d))\\\\d{3}|(?:(?:16|6[0356])93|9(?:[1-36]\\\\d\\\\d|480))\\\\d{5}\"],[\"80[02]\\\\d{6}\"],[\"(?:6(?:0[178]|4[68])\\\\d|76(?:0[1-57]|1[2-47]|2[237]))\\\\d{5}\"],[\"884[0-4689]\\\\d{5}\"],0,[\"70(?:7\\\\d|8[17])\\\\d{5}\"],[\"6222\\\\d{5}\"],[\"30\\\\d{7}\"],[\"80(?:8\\\\d|9[1579])\\\\d{5}\"]]],\"PW\":[\"680\",\"01[12]\",\"(?:[24-8]\\\\d\\\\d|345|900)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]],0,0,0,0,0,0,[[\"(?:2(?:55|77)|345|488|5(?:35|44|87)|6(?:22|54|79)|7(?:33|47)|8(?:24|55|76)|900)\\\\d{4}\"],[\"(?:(?:46|83)[0-5]|6[2-4689]0)\\\\d{4}|(?:45|77|88)\\\\d{5}\"]]],\"PY\":[\"595\",\"00\",\"59\\\\d{4,6}|9\\\\d{5,10}|(?:[2-46-8]\\\\d|5[0-8])\\\\d{4,7}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"[2-9]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{4,5})\",\"$1 $2\",[\"2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"87\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"9(?:[5-79]|8[1-6])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"]]],\"0\",0,0,0,0,0,[[\"(?:[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36])\\\\d{5,7}|(?:2(?:2[4-68]|[4-68]\\\\d|7[15]|9[1-5])|3(?:18|3[167]|4[2357]|51|[67]\\\\d)|4(?:3[12]|5[13]|9[1-47])|5(?:[1-4]\\\\d|5[02-4])|6(?:3[1-3]|44|7[1-8])|7(?:4[0-4]|5\\\\d|6[1-578]|75|8[0-8])|858)\\\\d{5,6}\",[7,8,9]],[\"9(?:51|6[129]|[78][1-6]|9[1-5])\\\\d{6}\",[9]],[\"9800\\\\d{5,7}\",[9,10,11]],0,0,0,[\"[2-9]0\\\\d{4,7}\",[6,7,8,9]],0,[\"8700[0-4]\\\\d{4}\",[9]]]],\"QA\":[\"974\",\"00\",\"[2-7]\\\\d{7}|800\\\\d{4}(?:\\\\d{2})?|2\\\\d{6}\",[7,8,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"2[126]|8\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]\"]]],0,0,0,0,0,0,[[\"414[1-4]\\\\d{4}|(?:23|4[04])\\\\d{6}\",[8]],[\"(?:2[89]|[35-7]\\\\d)\\\\d{6}\",[8]],[\"800\\\\d{4}(?:\\\\d{2})?\",[7,9]],0,0,0,0,[\"2(?:[12]\\\\d|61)\\\\d{4}\",[7]]]],\"RE\":[\"262\",\"00\",\"976\\\\d{6}|(?:26|[68]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2689]\"],\"0$1\"]],\"0\",0,0,0,0,\"26[23]|69|[89]\",[[\"26(?:2\\\\d\\\\d|3(?:0\\\\d|1[01]))\\\\d{4}\"],[\"(?:69(?:2\\\\d\\\\d|3(?:0[0-46]|1[013]|2[0-2]|3[0-39]|4\\\\d|5[0-5]|6[0-6]|7[0-27]|8[0-8]|9[0-479]))|976(?:2[27]|3[0-37]|9\\\\d))\\\\d{4}\"],[\"80\\\\d{7}\"],[\"89[1-37-9]\\\\d{6}\"],0,0,0,0,0,[\"8(?:1[019]|2[0156]|84|90)\\\\d{6}\"]]],\"RO\":[\"40\",\"00\",\"(?:[2378]\\\\d|90)\\\\d{7}|[23]\\\\d{5}\",[6,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"2[3-6]\",\"2[3-6]\\\\d9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"219|31\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[23]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[237-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"[23][13-6]\\\\d{7}|(?:2(?:19\\\\d|[3-6]\\\\d9)|31\\\\d\\\\d)\\\\d\\\\d\"],[\"7020\\\\d{5}|7(?:0[013-9]|1[0-3]|[2-7]\\\\d|8[03-8]|9[019])\\\\d{6}\",[9]],[\"800\\\\d{6}\",[9]],[\"90[0136]\\\\d{6}\",[9]],0,0,[\"(?:37\\\\d|80[578])\\\\d{6}\",[9]],0,0,[\"801\\\\d{6}\",[9]]],0,\" int \"],\"RS\":[\"381\",\"00\",\"38[02-9]\\\\d{6,9}|6\\\\d{7,9}|90\\\\d{4,8}|38\\\\d{5,6}|(?:7\\\\d\\\\d|800)\\\\d{3,9}|(?:[12]\\\\d|3[0-79])\\\\d{5,10}\",[6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3,9})\",\"$1 $2\",[\"(?:2[389]|39)0|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5,10})\",\"$1 $2\",[\"[1-36]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:11[1-9]\\\\d|(?:2[389]|39)(?:0[2-9]|[2-9]\\\\d))\\\\d{3,8}|(?:1[02-9]|2[0-24-7]|3[0-8])[2-9]\\\\d{4,9}\",[7,8,9,10,11,12]],[\"6(?:[0-689]|7\\\\d)\\\\d{6,7}\",[8,9,10]],[\"800\\\\d{3,9}\"],[\"(?:78\\\\d|90[0169])\\\\d{3,7}\",[6,7,8,9,10]],0,0,[\"7[06]\\\\d{4,10}\"]]],\"RU\":[\"7\",\"810\",\"8\\\\d{13}|[347-9]\\\\d{9}\",[10,14],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-8]|2[1-9])\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2\"],\"8 ($1)\",1],[\"(\\\\d{5})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-68]|2[1-9])\",\"7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))\",\"7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[349]|8(?:[02-7]|1[1-8])\"],\"8 ($1)\",1],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"8\"],\"8 ($1)\"]],\"8\",0,0,0,0,\"3[04-689]|[489]\",[[\"(?:3(?:0[12]|4[1-35-79]|5[1-3]|65|8[1-58]|9[0145])|4(?:01|1[1356]|2[13467]|7[1-5]|8[1-7]|9[1-689])|8(?:1[1-8]|2[01]|3[13-6]|4[0-8]|5[15]|6[1-35-79]|7[1-37-9]))\\\\d{7}\",[10]],[\"9\\\\d{9}\",[10]],[\"8(?:0[04]|108\\\\d{3})\\\\d{7}\"],[\"80[39]\\\\d{7}\",[10]],[\"808\\\\d{7}\",[10]]],\"8~10\"],\"RW\":[\"250\",\"00\",\"(?:06|[27]\\\\d\\\\d|[89]00)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"]]],\"0\",0,0,0,0,0,[[\"(?:06|2[23568]\\\\d)\\\\d{6}\"],[\"7[2389]\\\\d{7}\",[9]],[\"800\\\\d{6}\",[9]],[\"900\\\\d{6}\",[9]]]],\"SA\":[\"966\",\"00\",\"92\\\\d{7}|(?:[15]|8\\\\d)\\\\d{8}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\",0,0,0,0,0,[[\"1(?:1\\\\d|2[24-8]|3[35-8]|4[3-68]|6[2-5]|7[235-7])\\\\d{6}\",[9]],[\"579[01]\\\\d{5}|5(?:[013-689]\\\\d|7[0-35-8])\\\\d{6}\",[9]],[\"800\\\\d{7}\",[10]],[\"925\\\\d{6}\",[9]],0,0,[\"811\\\\d{7}\",[10]],0,0,[\"920\\\\d{6}\",[9]]]],\"SB\":[\"677\",\"0[01]\",\"(?:[1-6]|[7-9]\\\\d\\\\d)\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7|8[4-9]|9(?:[1-8]|9[0-8])\"]]],0,0,0,0,0,0,[[\"(?:1[4-79]|[23]\\\\d|4[0-2]|5[03]|6[0-37])\\\\d{3}\",[5]],[\"48\\\\d{3}|(?:(?:7[1-9]|8[4-9])\\\\d|9(?:1[2-9]|2[013-9]|3[0-2]|[46]\\\\d|5[0-46-9]|7[0-689]|8[0-79]|9[0-8]))\\\\d{4}\"],[\"1[38]\\\\d{3}\",[5]],0,0,0,0,0,[\"5[12]\\\\d{3}\",[5]]]],\"SC\":[\"248\",\"010|0[0-2]\",\"800\\\\d{4}|(?:[249]\\\\d|64)\\\\d{5}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[246]|9[57]\"]]],0,0,0,0,0,0,[[\"4[2-46]\\\\d{5}\"],[\"2[125-8]\\\\d{5}\"],[\"800[08]\\\\d{3}\"],0,0,0,0,0,[\"971\\\\d{4}|(?:64|95)\\\\d{5}\"]],\"00\"],\"SD\":[\"249\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"1(?:5\\\\d|8[35-7])\\\\d{6}\"],[\"(?:1[0-2]|9[0-3569])\\\\d{7}\"]]],\"SE\":[\"46\",\"00\",\"(?:[26]\\\\d\\\\d|9)\\\\d{9}|[1-9]\\\\d{8}|[1-689]\\\\d{7}|[1-4689]\\\\d{6}|2\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"20\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"9(?:00|39|44|9)\"],\"0$1\",0,\"$1 $2\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3\",[\"[12][136]|3[356]|4[0246]|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{3})\",\"$1-$2 $3\",[\"9(?:00|39|44)\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"10|7\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1-$2 $3 $4\",[\"9\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4 $5\",[\"[26]\"],\"0$1\",0,\"$1 $2 $3 $4 $5\"]],\"0\",0,0,0,0,0,[[\"(?:(?:[12][136]|3[356]|4[0246]|6[03]|8\\\\d)\\\\d|90[1-9])\\\\d{4,6}|(?:1(?:2[0-35]|4[0-4]|5[0-25-9]|7[13-6]|[89]\\\\d)|2(?:2[0-7]|4[0136-8]|5[0138]|7[018]|8[01]|9[0-57])|3(?:0[0-4]|1\\\\d|2[0-25]|4[056]|7[0-2]|8[0-3]|9[023])|4(?:1[013-8]|3[0135]|5[14-79]|7[0-246-9]|8[0156]|9[0-689])|5(?:0[0-6]|[15][0-5]|2[0-68]|3[0-4]|4\\\\d|6[03-5]|7[013]|8[0-79]|9[01])|6(?:1[1-3]|2[0-4]|4[02-57]|5[0-37]|6[0-3]|7[0-2]|8[0247]|9[0-356])|9(?:1[0-68]|2\\\\d|3[02-5]|4[0-3]|5[0-4]|[68][01]|7[0135-8]))\\\\d{5,6}\",[7,8,9]],[\"7[02369]\\\\d{7}\",[9]],[\"20\\\\d{4,7}\",[6,7,8,9]],[\"649\\\\d{6}|99[1-59]\\\\d{4}(?:\\\\d{3})?|9(?:00|39|44)[1-8]\\\\d{3,6}\",[7,8,9,10]],[\"75[1-8]\\\\d{6}\",[9]],0,[\"10[1-8]\\\\d{6}\",[9]],[\"74[02-9]\\\\d{6}\",[9]],0,[\"77[0-7]\\\\d{6}\",[9]]]],\"SG\":[\"65\",\"0[0-3]\\\\d\",\"(?:(?:1\\\\d|8)\\\\d\\\\d|7000)\\\\d{7}|[3689]\\\\d{7}\",[8,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[369]|8(?:0[1-5]|[1-9])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]],0,0,0,0,0,0,[[\"662[0-24-9]\\\\d{4}|6(?:[0-578]\\\\d|6[013-57-9]|9[0-35-9])\\\\d{5}\",[8]],[\"8(?:05[0-7]|95[0-2])\\\\d{4}|(?:8(?:0[1-4]|[1-8]\\\\d|9[0-4])|9[0-8]\\\\d)\\\\d{5}\",[8]],[\"(?:18|8)00\\\\d{7}\",[10,11]],[\"1900\\\\d{7}\",[11]],0,0,[\"7000\\\\d{7}\",[11]],0,[\"(?:3[12]\\\\d|666)\\\\d{5}\",[8]]]],\"SH\":[\"290\",\"00\",\"(?:[256]\\\\d|8)\\\\d{3}\",[4,5],0,0,0,0,0,0,\"[256]\",[[\"2(?:[0-57-9]\\\\d|6[4-9])\\\\d\\\\d\"],[\"[56]\\\\d{4}\",[5]],0,0,0,0,0,0,[\"262\\\\d\\\\d\",[5]]]],\"SI\":[\"386\",\"00|10(?:22|66|88|99)\",\"[1-7]\\\\d{7}|8\\\\d{4,7}|90\\\\d{4,6}\",[5,6,7,8],[[\"(\\\\d{2})(\\\\d{3,6})\",\"$1 $2\",[\"8[09]|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"59|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37][01]|4[0139]|51|6\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-57]\"],\"(0$1)\"]],\"0\",0,0,0,0,0,[[\"(?:[1-357][2-8]|4[24-8])\\\\d{6}\",[8]],[\"65(?:1\\\\d|55|6[01]|70)\\\\d{4}|(?:[37][01]|4[0139]|51|6[489])\\\\d{6}\",[8]],[\"80\\\\d{4,6}\",[6,7,8]],[\"89[1-3]\\\\d{2,5}|90\\\\d{4,6}\"],0,0,0,0,[\"(?:59\\\\d\\\\d|8(?:1(?:[67]\\\\d|8[0-589])|2(?:0\\\\d|2[0-37-9]|8[0-2489])|3[389]\\\\d))\\\\d{4}\",[8]]],\"00\"],\"SJ\":[\"47\",\"00\",\"0\\\\d{4}|(?:[489]\\\\d|[57]9)\\\\d{6}\",[5,8],0,0,0,0,0,0,\"79\",[[\"79\\\\d{6}\",[8]],[\"(?:4[015-8]|59|9\\\\d)\\\\d{6}\",[8]],[\"80[01]\\\\d{5}\",[8]],[\"82[09]\\\\d{5}\",[8]],[\"880\\\\d{5}\",[8]],0,[\"(?:0[2-9]|81(?:0(?:0[7-9]|1\\\\d)|5\\\\d\\\\d))\\\\d{3}\"],0,[\"85[0-5]\\\\d{5}\",[8]],[\"810(?:0[0-6]|[2-8]\\\\d)\\\\d{3}\",[8]]]],\"SK\":[\"421\",\"00\",\"[2-689]\\\\d{8}|[2-59]\\\\d{6}|[2-5]\\\\d{5}\",[6,7,9],[[\"(\\\\d)(\\\\d{2})(\\\\d{3,4})\",\"$1 $2 $3\",[\"21\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-5][1-8]1\",\"[3-5][1-8]1[67]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[689]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"[3-5]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:2(?:16|[2-9]\\\\d{3})|(?:(?:[3-5][1-8]\\\\d|819)\\\\d|601[1-5])\\\\d)\\\\d{4}|(?:2|[3-5][1-8])1[67]\\\\d{3}|[3-5][1-8]16\\\\d\\\\d\"],[\"909[1-9]\\\\d{5}|9(?:0[1-8]|1[0-24-9]|4[03-57-9]|5\\\\d)\\\\d{6}\",[9]],[\"800\\\\d{6}\",[9]],[\"9(?:00|[78]\\\\d)\\\\d{6}\",[9]],0,0,[\"96\\\\d{7}\",[9]],[\"9090\\\\d{3}\",[7]],[\"6(?:02|5[0-4]|9[0-6])\\\\d{6}\",[9]],[\"8[5-9]\\\\d{7}\",[9]]]],\"SL\":[\"232\",\"00\",\"(?:[237-9]\\\\d|66)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[236-9]\"],\"(0$1)\"]],\"0\",0,0,0,0,0,[[\"22[2-4][2-9]\\\\d{4}\"],[\"(?:25|3[0-5]|66|7[2-9]|8[08]|9[09])\\\\d{6}\"]]],\"SM\":[\"378\",\"00\",\"(?:0549|[5-7]\\\\d)\\\\d{6}\",[8,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"0\"]]],0,0,\"([89]\\\\d{5})$\",\"0549$1\",0,0,[[\"0549(?:8[0157-9]|9\\\\d)\\\\d{4}\",[10]],[\"6[16]\\\\d{6}\",[8]],0,[\"7[178]\\\\d{6}\",[8]],0,0,0,0,[\"5[158]\\\\d{6}\",[8]]]],\"SN\":[\"221\",\"00\",\"(?:[378]\\\\d|93)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[379]\"]]],0,0,0,0,0,0,[[\"3(?:0(?:1[0-2]|80)|282|3(?:8[1-9]|9[3-9])|611)\\\\d{5}\"],[\"7(?:(?:[06-8]\\\\d|21|90)\\\\d|5(?:01|[19]0|25|[38]3|[4-7]\\\\d))\\\\d{5}\"],[\"800\\\\d{6}\"],[\"88[4689]\\\\d{6}\"],0,0,0,0,[\"(?:3(?:392|9[01]\\\\d)\\\\d|93(?:3[13]0|929))\\\\d{4}\"],[\"81[02468]\\\\d{6}\"]]],\"SO\":[\"252\",\"00\",\"[346-9]\\\\d{8}|[12679]\\\\d{7}|[1-5]\\\\d{6}|[1348]\\\\d{5}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"8[125]\"]],[\"(\\\\d{6})\",\"$1\",[\"[134]\"]],[\"(\\\\d)(\\\\d{6})\",\"$1 $2\",[\"[15]|2[0-79]|3[0-46-8]|4[0-7]\"]],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"24|[67]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[3478]|64|90\"]],[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"1|28|6(?:0[5-7]|[1-35-9])|9[2-9]\"]]],\"0\",0,0,0,0,0,[[\"(?:1\\\\d|2[0-79]|3[0-46-8]|4[0-7]|5[57-9])\\\\d{5}|(?:[134]\\\\d|8[125])\\\\d{4}\",[6,7]],[\"(?:(?:15|(?:3[59]|4[89]|79|8[08])\\\\d|6(?:0[5-7]|[1-9]\\\\d)|9(?:0\\\\d|[2-9]))\\\\d|2(?:4\\\\d|8))\\\\d{5}|[67]\\\\d{7}\",[7,8,9]]]],\"SR\":[\"597\",\"00\",\"(?:[2-5]|68|[78]\\\\d)\\\\d{5}\",[6,7],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"56\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1-$2\",[\"[2-5]\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[6-8]\"]]],0,0,0,0,0,0,[[\"(?:2[1-3]|3[0-7]|(?:4|68)\\\\d|5[2-58])\\\\d{4}\"],[\"(?:7[124-7]|8[124-9])\\\\d{5}\",[7]],0,0,0,0,0,0,[\"56\\\\d{4}\",[6]]]],\"SS\":[\"211\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"1[89]\\\\d{7}\"],[\"(?:12|9[1257-9])\\\\d{7}\"]]],\"ST\":[\"239\",\"00\",\"(?:22|9\\\\d)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[29]\"]]],0,0,0,0,0,0,[[\"22\\\\d{5}\"],[\"900[5-9]\\\\d{3}|9(?:0[1-9]|[89]\\\\d)\\\\d{4}\"]]],\"SV\":[\"503\",\"00\",\"[267]\\\\d{7}|[89]00\\\\d{4}(?:\\\\d{4})?\",[7,8,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[89]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[267]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],0,0,0,0,0,0,[[\"2(?:[1-6]\\\\d{3}|[79]90[034]|890[0245])\\\\d{3}\",[8]],[\"66(?:[02-9]\\\\d\\\\d|1(?:[02-9]\\\\d|16))\\\\d{3}|(?:6[0-57-9]|7\\\\d)\\\\d{6}\",[8]],[\"800\\\\d{4}(?:\\\\d{4})?\",[7,11]],[\"900\\\\d{4}(?:\\\\d{4})?\",[7,11]]]],\"SX\":[\"1\",\"011\",\"7215\\\\d{6}|(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|(5\\\\d{6})$\",\"721$1\",0,\"721\",[[\"7215(?:4[2-8]|8[239]|9[056])\\\\d{4}\"],[\"7215(?:1[02]|2\\\\d|5[034679]|8[014-8])\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\"]]],\"SY\":[\"963\",\"00\",\"[1-39]\\\\d{8}|[1-5]\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-5]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\",1]],\"0\",0,0,0,0,0,[[\"21\\\\d{6,7}|(?:1(?:[14]\\\\d|[2356])|2[235]|3(?:[13]\\\\d|4)|4[134]|5[1-3])\\\\d{6}\"],[\"9[1-689]\\\\d{7}\",[9]]]],\"SZ\":[\"268\",\"00\",\"0800\\\\d{4}|(?:[237]\\\\d|900)\\\\d{6}\",[8,9],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[0237]\"]],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"9\"]]],0,0,0,0,0,0,[[\"[23][2-5]\\\\d{6}\",[8]],[\"7[6-9]\\\\d{6}\",[8]],[\"0800\\\\d{4}\",[8]],[\"900\\\\d{6}\",[9]],0,0,0,0,[\"70\\\\d{6}\",[8]]]],\"TA\":[\"290\",\"00\",\"8\\\\d{3}\",[4],0,0,0,0,0,0,\"8\",[[\"8\\\\d{3}\"]]],\"TC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|649|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-479]\\\\d{6})$\",\"649$1\",0,\"649\",[[\"649(?:266|712|9(?:4\\\\d|50))\\\\d{4}\"],[\"649(?:2(?:3[129]|4[1-79])|3\\\\d\\\\d|4[34][1-3])\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\"],0,0,0,[\"649(?:71[01]|966)\\\\d{4}\"]]],\"TD\":[\"235\",\"00|16\",\"(?:22|[69]\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2679]\"]]],0,0,0,0,0,0,[[\"22(?:[37-9]0|5[0-5]|6[89])\\\\d{4}\"],[\"(?:6[023568]|77|9\\\\d)\\\\d{6}\"]],\"00\"],\"TG\":[\"228\",\"00\",\"[279]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[279]\"]]],0,0,0,0,0,0,[[\"2(?:2[2-7]|3[23]|4[45]|55|6[67]|77)\\\\d{5}\"],[\"(?:7[09]|9[0-36-9])\\\\d{6}\"]]],\"TH\":[\"66\",\"00[1-9]\",\"(?:001800|[2-57]|[689]\\\\d)\\\\d{7}|1\\\\d{7,9}\",[8,9,10,13],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[13-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\",0,0,0,0,0,[[\"(?:1[0689]|2\\\\d|3[2-9]|4[2-5]|5[2-6]|7[3-7])\\\\d{6}\",[8]],[\"671[0-8]\\\\d{5}|(?:14|6[1-6]|[89]\\\\d)\\\\d{7}\",[9]],[\"(?:001800\\\\d|1800)\\\\d{6}\",[10,13]],[\"1900\\\\d{6}\",[10]],0,0,0,0,[\"6[08]\\\\d{7}\",[9]]]],\"TJ\":[\"992\",\"810\",\"(?:00|[1-57-9]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{6})(\\\\d)(\\\\d{2})\",\"$1 $2 $3\",[\"331\",\"3317\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[34]7|91[78]\"]],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"3[1-5]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[0-57-9]\"]]],0,0,0,0,0,0,[[\"(?:3(?:1[3-5]|2[245]|3[12]|4[24-7]|5[25]|72)|4(?:46|74|87))\\\\d{6}\"],[\"41[18]\\\\d{6}|(?:[034]0|[17][017]|2[02]|5[05]|8[08]|9\\\\d)\\\\d{7}\"]],\"8~10\"],\"TK\":[\"690\",\"00\",\"[2-47]\\\\d{3,6}\",[4,5,6,7],0,0,0,0,0,0,0,[[\"(?:2[2-4]|[34]\\\\d)\\\\d{2,5}\"],[\"7[2-4]\\\\d{2,5}\"]]],\"TL\":[\"670\",\"00\",\"7\\\\d{7}|(?:[2-47]\\\\d|[89]0)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-489]|70\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"7\"]]],0,0,0,0,0,0,[[\"(?:2[1-5]|3[1-9]|4[1-4])\\\\d{5}\",[7]],[\"7[2-8]\\\\d{6}\",[8]],[\"80\\\\d{5}\",[7]],[\"90\\\\d{5}\",[7]],[\"70\\\\d{5}\",[7]]]],\"TM\":[\"993\",\"810\",\"[1-6]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"12\"],\"(8 $1)\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-5]\"],\"(8 $1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"6\"],\"8 $1\"]],\"8\",0,0,0,0,0,[[\"(?:1(?:2\\\\d|3[1-9])|2(?:22|4[0-35-8])|3(?:22|4[03-9])|4(?:22|3[128]|4\\\\d|6[15])|5(?:22|5[7-9]|6[014-689]))\\\\d{5}\"],[\"6\\\\d{7}\"]],\"8~10\"],\"TN\":[\"216\",\"00\",\"[2-57-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-57-9]\"]]],0,0,0,0,0,0,[[\"81200\\\\d{3}|(?:3[0-2]|7\\\\d)\\\\d{6}\"],[\"3(?:001|[12]40)\\\\d{4}|(?:(?:[259]\\\\d|4[0-7])\\\\d|3(?:1[1-35]|6[0-4]|91))\\\\d{5}\"],[\"8010\\\\d{4}\"],[\"88\\\\d{6}\"],0,0,0,0,0,[\"8[12]10\\\\d{4}\"]]],\"TO\":[\"676\",\"00\",\"(?:0800|(?:[5-8]\\\\d\\\\d|999)\\\\d)\\\\d{3}|[2-8]\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1-$2\",[\"[2-4]|50|6[09]|7[0-24-69]|8[05]\"]],[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]]],0,0,0,0,0,0,[[\"(?:2\\\\d|3[0-8]|4[0-4]|50|6[09]|7[0-24-69]|8[05])\\\\d{3}\",[5]],[\"(?:55[4-6]|6(?:[09]\\\\d|3[02]|8[15-9])|(?:7\\\\d|8[46-9])\\\\d|999)\\\\d{4}\",[7]],[\"0800\\\\d{3}\",[7]],0,0,0,0,0,[\"55[0-37-9]\\\\d{4}\",[7]]]],\"TR\":[\"90\",\"00\",\"4\\\\d{6}|8\\\\d{11,12}|(?:[2-58]\\\\d\\\\d|900)\\\\d{7}\",[7,10,12,13],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"512|8[01589]|90\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5(?:[0-59]|61)\",\"5(?:[0-59]|616)\",\"5(?:[0-59]|6161)\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24][1-8]|3[1-9]\"],\"(0$1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{6,7})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1]],\"0\",0,0,0,0,0,[[\"(?:2(?:[13][26]|[28][2468]|[45][268]|[67][246])|3(?:[13][28]|[24-6][2468]|[78][02468]|92)|4(?:[16][246]|[23578][2468]|4[26]))\\\\d{7}\",[10]],[\"56161\\\\d{5}|5(?:0[15-7]|1[06]|24|[34]\\\\d|5[1-59]|9[46])\\\\d{7}\",[10]],[\"8(?:00\\\\d{7}(?:\\\\d{2,3})?|11\\\\d{7})\",[10,12,13]],[\"(?:8[89]8|900)\\\\d{7}\",[10]],[\"592(?:21[12]|461)\\\\d{4}\",[10]],0,[\"444\\\\d{4}\",[7]],[\"512\\\\d{7}\",[10]],[\"850\\\\d{7}\",[10]]]],\"TT\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-46-8]\\\\d{6})$\",\"868$1\",0,\"868\",[[\"868(?:2(?:01|1[5-9]|[23]\\\\d|4[0-2])|6(?:0[7-9]|1[02-8]|2[1-9]|[3-69]\\\\d|7[0-79])|82[124])\\\\d{4}\"],[\"868(?:(?:2[5-9]|3\\\\d)\\\\d|4(?:3[0-6]|[6-9]\\\\d)|6(?:20|78|8\\\\d)|7(?:0[1-9]|1[02-9]|[2-9]\\\\d))\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\"]]],\"TV\":[\"688\",\"00\",\"(?:2|7\\\\d\\\\d|90)\\\\d{4}\",[5,6,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]],0,0,0,0,0,0,[[\"2[02-9]\\\\d{3}\",[5]],[\"(?:7[01]\\\\d|90)\\\\d{4}\",[6,7]]]],\"TW\":[\"886\",\"0(?:0[25-79]|19)\",\"[2-689]\\\\d{8}|7\\\\d{9,10}|[2-8]\\\\d{7}|2\\\\d{6}\",[7,8,9,10,11],[[\"(\\\\d{2})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"202\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[258]0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]\",\"[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:2[2-8]\\\\d|370|55[01]|7[1-9])\\\\d{6}|4(?:(?:0(?:0[1-9]|[2-48]\\\\d)|1[023]\\\\d)\\\\d{4,5}|(?:[239]\\\\d\\\\d|4(?:0[56]|12|49))\\\\d{5})|6(?:[01]\\\\d{7}|4(?:0[56]|12|24|4[09])\\\\d{4,5})|8(?:(?:2(?:3\\\\d|4[0-269]|[578]0|66)|36[24-9]|90\\\\d\\\\d)\\\\d{4}|4(?:0[56]|12|24|4[09])\\\\d{4,5})|(?:2(?:2(?:0\\\\d\\\\d|4(?:0[68]|[249]0|3[0-467]|5[0-25-9]|6[0235689]))|(?:3(?:[09]\\\\d|1[0-4])|(?:4\\\\d|5[0-49]|6[0-29]|7[0-5])\\\\d)\\\\d)|(?:(?:3[2-9]|5[2-8]|6[0-35-79]|8[7-9])\\\\d\\\\d|4(?:2(?:[089]\\\\d|7[1-9])|(?:3[0-4]|[78]\\\\d|9[01])\\\\d))\\\\d)\\\\d{3}\",[8,9]],[\"(?:40001[0-2]|9[0-8]\\\\d{4})\\\\d{3}\",[9]],[\"80[0-79]\\\\d{6}|800\\\\d{5}\",[8,9]],[\"20(?:[013-9]\\\\d\\\\d|2)\\\\d{4}\",[7,9]],[\"99\\\\d{7}\",[9]],0,[\"50[0-46-9]\\\\d{6}\",[9]],0,[\"7010(?:[0-2679]\\\\d|3[0-7]|8[0-5])\\\\d{5}|70\\\\d{8}\",[10,11]]],0,\"#\"],\"TZ\":[\"255\",\"00[056]\",\"(?:[25-8]\\\\d|41|90)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[24]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"2[2-8]\\\\d{7}\"],[\"77[2-9]\\\\d{6}|(?:6[125-9]|7[13-689])\\\\d{7}\"],[\"80[08]\\\\d{6}\"],[\"90\\\\d{7}\"],0,0,0,0,[\"41\\\\d{7}\"],[\"8(?:40|6[01])\\\\d{6}\"]]],\"UA\":[\"380\",\"00\",\"[89]\\\\d{9}|[3-9]\\\\d{8}\",[9,10],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]\",\"6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])\",\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|89|9[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:3[1-8]|4[13-8]|5[1-7]|6[12459])\\\\d{7}\",[9]],[\"(?:39|50|6[36-8]|7[1-3]|9[1-9])\\\\d{7}\",[9]],[\"800[1-8]\\\\d{5,6}\"],[\"900[239]\\\\d{5,6}\"],0,0,0,0,[\"89[1-579]\\\\d{6}\",[9]]],\"0~0\"],\"UG\":[\"256\",\"00[057]\",\"800\\\\d{6}|(?:[29]0|[347]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"202\",\"2024\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[27-9]|4(?:6[45]|[7-9])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[34]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"20(?:(?:240|30[67])\\\\d|6(?:00[0-2]|30[0-4]))\\\\d{3}|(?:20(?:[017]\\\\d|2[5-9]|32|5[0-4]|6[15-9])|[34]\\\\d{3})\\\\d{5}\"],[\"726[01]\\\\d{5}|7(?:[01578]\\\\d|20|36|[46][0-4]|9[89])\\\\d{6}\"],[\"800[1-3]\\\\d{5}\"],[\"90[1-3]\\\\d{6}\"]]],\"US\":[\"1\",\"011\",\"[2-9]\\\\d{9}|3\\\\d{6}\",[10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"310\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"($1) $2-$3\",[\"[2-9]\"],0,1,\"$1-$2-$3\"]],\"1\",0,0,0,0,0,[[\"505(?:[2-57-9]\\\\d\\\\d|6(?:[0-35-9]\\\\d|44))\\\\d{4}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[01679]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[068]|3[0-289]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-389]|8[04-69]))[2-9]\\\\d{6}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\"]]],\"UY\":[\"598\",\"0(?:0|1[3-9]\\\\d)\",\"4\\\\d{9}|[1249]\\\\d{7}|(?:[49]\\\\d|80)\\\\d{5}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"405|8|90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[124]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:1(?:770|987)|(?:2\\\\d|4[2-7])\\\\d\\\\d)\\\\d{4}\",[8]],[\"9[1-9]\\\\d{6}\",[8]],[\"(?:4\\\\d{5}|80[05])\\\\d{4}|405\\\\d{4}\",[7,10]],[\"90[0-8]\\\\d{4}\",[7]]],\"00\",\" int. \"],\"UZ\":[\"998\",\"810\",\"(?:33|55|[679]\\\\d|88)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[35-9]\"],\"8 $1\"]],\"8\",0,0,0,0,0,[[\"(?:6(?:1(?:22|3[124]|4[1-4]|5[1-3578]|64)|2(?:22|3[0-57-9]|41)|5(?:22|3[3-7]|5[024-8])|6\\\\d\\\\d|7(?:[23]\\\\d|7[69])|9(?:22|4[1-8]|6[135]))|7(?:0(?:5[4-9]|6[0146]|7[124-6]|9[135-8])|(?:1[12]|8\\\\d)\\\\d|2(?:22|3[13-57-9]|4[1-3579]|5[14])|3(?:2\\\\d|3[1578]|4[1-35-7]|5[1-57]|61)|4(?:2\\\\d|3[1-579]|7[1-79])|5(?:22|5[1-9]|6[1457])|6(?:22|3[12457]|4[13-8])|9(?:22|5[1-9])))\\\\d{5}\"],[\"(?:(?:33|88|9[0-57-9])\\\\d{3}|55(?:50[013]|90\\\\d)|6(?:1(?:2(?:2[01]|98)|35[0-4]|50\\\\d|61[23]|7(?:[01][017]|4\\\\d|55|9[5-9]))|2(?:(?:11|7\\\\d)\\\\d|2(?:[12]1|9[01379])|5(?:[126]\\\\d|3[0-4]))|5(?:19[01]|2(?:27|9[26])|(?:30|59|7\\\\d)\\\\d)|6(?:2(?:1[5-9]|2[0367]|38|41|52|60)|(?:3[79]|9[0-3])\\\\d|4(?:56|83)|7(?:[07]\\\\d|1[017]|3[07]|4[047]|5[057]|67|8[0178]|9[79]))|7(?:2(?:24|3[237]|4[5-9]|7[15-8])|5(?:7[12]|8[0589])|7(?:0\\\\d|[39][07])|9(?:0\\\\d|7[079]))|9(?:2(?:1[1267]|3[01]|5\\\\d|7[0-4])|(?:5[67]|7\\\\d)\\\\d|6(?:2[0-26]|8\\\\d)))|7(?:[07]\\\\d{3}|1(?:13[01]|6(?:0[47]|1[67]|66)|71[3-69]|98\\\\d)|2(?:2(?:2[79]|95)|3(?:2[5-9]|6[0-6])|57\\\\d|7(?:0\\\\d|1[17]|2[27]|3[37]|44|5[057]|66|88))|3(?:2(?:1[0-6]|21|3[469]|7[159])|(?:33|9[4-6])\\\\d|5(?:0[0-4]|5[579]|9\\\\d)|7(?:[0-3579]\\\\d|4[0467]|6[67]|8[078]))|4(?:2(?:29|5[0257]|6[0-7]|7[1-57])|5(?:1[0-4]|8\\\\d|9[5-9])|7(?:0\\\\d|1[024589]|2[0-27]|3[0137]|[46][07]|5[01]|7[5-9]|9[079])|9(?:7[015-9]|[89]\\\\d))|5(?:112|2(?:0\\\\d|2[29]|[49]4)|3[1568]\\\\d|52[6-9]|7(?:0[01578]|1[017]|[23]7|4[047]|[5-7]\\\\d|8[78]|9[079]))|6(?:2(?:2[1245]|4[2-4])|39\\\\d|41[179]|5(?:[349]\\\\d|5[0-2])|7(?:0[017]|[13]\\\\d|22|44|55|67|88))|9(?:22[128]|3(?:2[0-4]|7\\\\d)|57[02569]|7(?:2[05-9]|3[37]|4\\\\d|60|7[2579]|87|9[07]))))\\\\d{4}\"]],\"8~10\"],\"VA\":[\"39\",\"00\",\"0\\\\d{5,10}|3[0-8]\\\\d{7,10}|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?|(?:1\\\\d|39)\\\\d{7,8}\",[6,7,8,9,10,11],0,0,0,0,0,0,\"06698\",[[\"06698\\\\d{1,6}\"],[\"3[1-9]\\\\d{8}|3[2-9]\\\\d{7}\",[9,10]],[\"80(?:0\\\\d{3}|3)\\\\d{3}\",[6,9]],[\"(?:0878\\\\d{3}|89(?:2\\\\d|3[04]|4(?:[0-4]|[5-9]\\\\d\\\\d)|5[0-4]))\\\\d\\\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\\\d{6}\",[6,8,9,10]],[\"1(?:78\\\\d|99)\\\\d{6}\",[9,10]],0,0,0,[\"55\\\\d{8}\",[10]],[\"84(?:[08]\\\\d{3}|[17])\\\\d{3}\",[6,9]]]],\"VC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|784|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-7]\\\\d{6})$\",\"784$1\",0,\"784\",[[\"784(?:266|3(?:6[6-9]|7\\\\d|8[0-6])|4(?:38|5[0-36-8]|8[0-8])|5(?:55|7[0-2]|93)|638|784)\\\\d{4}\"],[\"784(?:4(?:3[0-5]|5[45]|89|9[0-8])|5(?:2[6-9]|3[0-4])|720)\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\"],0,0,0,[\"78451[0-2]\\\\d{4}\"]]],\"VE\":[\"58\",\"00\",\"[68]00\\\\d{7}|(?:[24]\\\\d|[59]0)\\\\d{8}\",[10],[[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"[24-689]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:2(?:12|3[457-9]|[467]\\\\d|[58][1-9]|9[1-6])|[4-6]00)\\\\d{7}\"],[\"4(?:1[24-8]|2[46])\\\\d{7}\"],[\"800\\\\d{7}\"],[\"90[01]\\\\d{7}\"],0,0,[\"501\\\\d{7}\"]]],\"VG\":[\"1\",\"011\",\"(?:284|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-578]\\\\d{6})$\",\"284$1\",0,\"284\",[[\"284496[0-5]\\\\d{3}|284(?:229|4(?:22|9[45])|774|8(?:52|6[459]))\\\\d{4}\"],[\"284496[6-9]\\\\d{3}|284(?:245|3(?:0[0-3]|4[0-7]|68|9[34])|4(?:4[0-6]|68|99)|5(?:4[0-7]|68|9[69]))\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\"]]],\"VI\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:34|90)0\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"340$1\",0,\"340\",[[\"340(?:2(?:0[0-38]|2[06-8]|4[49]|77)|3(?:32|44)|4(?:2[23]|44|7[34]|89)|5(?:1[34]|55)|6(?:2[56]|4[23]|77|9[023])|7(?:1[2-57-9]|2[57]|7\\\\d)|884|998)\\\\d{4}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\"]]],\"VN\":[\"84\",\"00\",\"[12]\\\\d{9}|[135-9]\\\\d{8}|[16]\\\\d{7}|[16-8]\\\\d{6}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"1\"],0,1],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[69]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[3578]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[48]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\",1]],\"0\",0,0,0,0,0,[[\"2(?:0[3-9]|1[0-689]|2[0-25-9]|3[2-9]|4[2-8]|5[124-9]|6[0-39]|7[0-7]|8[2-79]|9[0-4679])\\\\d{7}\",[10]],[\"(?:5(?:2[238]|59)|89[6-9]|99[013-9])\\\\d{6}|(?:3\\\\d|5[689]|7[06-9]|8[1-8]|9[0-8])\\\\d{7}\",[9]],[\"1800\\\\d{4,6}|12(?:0[13]|28)\\\\d{4}\",[8,9,10]],[\"1900\\\\d{4,6}\",[8,9,10]],0,0,[\"(?:[17]99|80\\\\d)\\\\d{4}|69\\\\d{5,6}\",[7,8]],0,[\"672\\\\d{6}\",[9]]]],\"VU\":[\"678\",\"00\",\"[57-9]\\\\d{6}|(?:[238]\\\\d|48)\\\\d{3}\",[5,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"]]],0,0,0,0,0,0,[[\"(?:38[0-8]|48[4-9])\\\\d\\\\d|(?:2[02-9]|3[4-7]|88)\\\\d{3}\",[5]],[\"(?:[58]\\\\d|7[013-7])\\\\d{5}\",[7]],[\"81[18]\\\\d\\\\d\",[5]],0,0,0,[\"(?:3[03]|900\\\\d)\\\\d{3}\"],0,[\"9(?:0[1-9]|1[01])\\\\d{4}\",[7]]]],\"WF\":[\"681\",\"00\",\"(?:40|72)\\\\d{4}|8\\\\d{5}(?:\\\\d{3})?\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[478]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]],0,0,0,0,0,0,[[\"72\\\\d{4}\",[6]],[\"(?:72|8[23])\\\\d{4}\",[6]],[\"80[0-5]\\\\d{6}\",[9]]]],\"WS\":[\"685\",\"0\",\"(?:[2-6]|8\\\\d{5})\\\\d{4}|[78]\\\\d{6}|[68]\\\\d{5}\",[5,6,7,10],[[\"(\\\\d{5})\",\"$1\",[\"[2-5]|6[1-9]\"]],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[68]\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]],0,0,0,0,0,0,[[\"6[1-9]\\\\d{3}|(?:[2-5]|60)\\\\d{4}\",[5,6]],[\"(?:7[1-35-7]|8(?:[3-7]|9\\\\d{3}))\\\\d{5}\",[7,10]],[\"800\\\\d{3}\",[6]]]],\"XK\":[\"383\",\"00\",\"[23]\\\\d{7,8}|(?:4\\\\d\\\\d|[89]00)\\\\d{5}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[23]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:2[89]|39)0\\\\d{6}|[23][89]\\\\d{6}\"],[\"4[3-9]\\\\d{6}\",[8]],[\"800\\\\d{5}\",[8]],[\"900\\\\d{5}\",[8]]]],\"YE\":[\"967\",\"00\",\"(?:1|7\\\\d)\\\\d{7}|[1-7]\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-6]|7[24-68]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"78[0-7]\\\\d{4}|17\\\\d{6}|(?:[12][2-68]|3[2358]|4[2-58]|5[2-6]|6[3-58]|7[24-6])\\\\d{5}\",[7,8]],[\"7[0137]\\\\d{7}\",[9]]]],\"YT\":[\"262\",\"00\",\"80\\\\d{7}|(?:26|63)9\\\\d{6}\",[9],0,\"0\",0,0,0,0,\"269|63\",[[\"269(?:0[0-367]|5[0-3]|6\\\\d|[78]0)\\\\d{4}\"],[\"639(?:0[0-79]|1[019]|[267]\\\\d|3[09]|40|5[05-9]|9[04-79])\\\\d{4}\"],[\"80\\\\d{7}\"]]],\"ZA\":[\"27\",\"00\",\"[1-79]\\\\d{8}|8\\\\d{4,9}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"860\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:2(?:0330|4302)|52087)0\\\\d{3}|(?:1[0-8]|2[1-378]|3[1-69]|4\\\\d|5[1346-8])\\\\d{7}\",[9]],[\"(?:1(?:3492[0-25]|4495[0235]|549(?:20|5[01]))|4[34]492[01])\\\\d{3}|8[1-4]\\\\d{3,7}|(?:2[27]|47|54)4950\\\\d{3}|(?:1(?:049[2-4]|9[12]\\\\d\\\\d)|(?:6\\\\d|7[0-46-9])\\\\d{3}|8(?:5\\\\d{3}|7(?:08[67]|158|28[5-9]|310)))\\\\d{4}|(?:1[6-8]|28|3[2-69]|4[025689]|5[36-8])4920\\\\d{3}|(?:12|[2-5]1)492\\\\d{4}\",[5,6,7,8,9]],[\"80\\\\d{7}\",[9]],[\"(?:86[2-9]|9[0-2]\\\\d)\\\\d{6}\",[9]],0,0,[\"861\\\\d{6,7}\",[9,10]],0,[\"87(?:08[0-589]|15[0-79]|28[0-4]|31[1-9])\\\\d{4}|87(?:[02][0-79]|1[0-46-9]|3[02-9]|[4-9]\\\\d)\\\\d{5}\",[9]],[\"860\\\\d{6}\",[9]]]],\"ZM\":[\"260\",\"00\",\"800\\\\d{6}|(?:21|63|[79]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[28]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[79]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"21[1-8]\\\\d{6}\"],[\"(?:7[5-79]|9[5-8])\\\\d{7}\"],[\"800\\\\d{6}\"],0,0,0,0,0,[\"63\\\\d{7}\"]]],\"ZW\":[\"263\",\"00\",\"2(?:[0-57-9]\\\\d{6,8}|6[0-24-9]\\\\d{6,7})|[38]\\\\d{9}|[35-8]\\\\d{8}|[3-6]\\\\d{7}|[1-689]\\\\d{6}|[1-3569]\\\\d{5}|[1356]\\\\d{4}\",[5,6,7,8,9,10],[[\"(\\\\d{3})(\\\\d{3,5})\",\"$1 $2\",[\"2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"80\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2\",\"2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)\",\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"29[013-9]|39|54\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,5})\",\"$1 $2\",[\"(?:25|54)8\",\"258|5483\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:1(?:(?:3\\\\d|9)\\\\d|[4-8])|2(?:(?:(?:0(?:2[014]|5)|(?:2[0157]|31|84|9)\\\\d\\\\d|[56](?:[14]\\\\d\\\\d|20)|7(?:[089]|2[03]|[35]\\\\d\\\\d))\\\\d|4(?:2\\\\d\\\\d|8))\\\\d|1(?:2|[39]\\\\d{4}))|3(?:(?:123|(?:29\\\\d|92)\\\\d)\\\\d\\\\d|7(?:[19]|[56]\\\\d))|5(?:0|1[2-478]|26|[37]2|4(?:2\\\\d{3}|83)|5(?:25\\\\d\\\\d|[78])|[689]\\\\d)|6(?:(?:[16-8]21|28|52[013])\\\\d\\\\d|[39])|8(?:[1349]28|523)\\\\d\\\\d)\\\\d{3}|(?:4\\\\d\\\\d|9[2-9])\\\\d{4,5}|(?:(?:2(?:(?:(?:0|8[146])\\\\d|7[1-7])\\\\d|2(?:[278]\\\\d|92)|58(?:2\\\\d|3))|3(?:[26]|9\\\\d{3})|5(?:4\\\\d|5)\\\\d\\\\d)\\\\d|6(?:(?:(?:[0-246]|[78]\\\\d)\\\\d|37)\\\\d|5[2-8]))\\\\d\\\\d|(?:2(?:[569]\\\\d|8[2-57-9])|3(?:[013-59]\\\\d|8[37])|6[89]8)\\\\d{3}\"],[\"7(?:[178]\\\\d|3[1-9])\\\\d{6}\",[9]],[\"80(?:[01]\\\\d|20|8[0-8])\\\\d{3}\",[7]],0,0,0,0,0,[\"86(?:1[12]|22|30|44|55|77|8[368])\\\\d{6}\",[10]]]]},\"nonGeographic\":{\"800\":[\"800\",0,\"(?:00|[1-9]\\\\d)\\\\d{6}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"\\\\d\"]]],0,0,0,0,0,0,[0,0,[\"(?:00|[1-9]\\\\d)\\\\d{6}\"]]],\"808\":[\"808\",0,\"[1-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,[\"[1-9]\\\\d{7}\"]]],\"870\":[\"870\",0,\"7\\\\d{11}|[35-7]\\\\d{8}\",[9,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[35-7]\"]]],0,0,0,0,0,0,[0,[\"(?:[356]|774[45])\\\\d{8}|7[6-8]\\\\d{7}\"]]],\"878\":[\"878\",0,\"10\\\\d{10}\",[12],[[\"(\\\\d{2})(\\\\d{5})(\\\\d{5})\",\"$1 $2 $3\",[\"1\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"10\\\\d{10}\"]]],\"881\":[\"881\",0,\"[0-36-9]\\\\d{8}\",[9],[[\"(\\\\d)(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"[0-36-9]\"]]],0,0,0,0,0,0,[0,[\"[0-36-9]\\\\d{8}\"]]],\"882\":[\"882\",0,\"[13]\\\\d{6}(?:\\\\d{2,5})?|285\\\\d{9}|(?:[19]\\\\d|49)\\\\d{6}\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"16|342\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"4\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"3[23]\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"34[57]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"34\"]],[\"(\\\\d{2})(\\\\d{4,5})(\\\\d{5})\",\"$1 $2 $3\",[\"[1-3]\"]]],0,0,0,0,0,0,[0,[\"342\\\\d{4}|(?:337|49)\\\\d{6}|3(?:2|47|7\\\\d{3})\\\\d{7}\",[7,8,9,10,12]],0,0,0,0,0,0,[\"1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\\\d{4}|6\\\\d{5,10})|(?:(?:285\\\\d\\\\d|3(?:45|[69]\\\\d{3}))\\\\d|9[89])\\\\d{6}\"]]],\"883\":[\"883\",0,\"(?:210|370\\\\d\\\\d)\\\\d{7}|51\\\\d{7}(?:\\\\d{3})?\",[9,10,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"510\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"51[13]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[35]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"(?:210|(?:370[1-9]|51[013]0)\\\\d)\\\\d{7}|5100\\\\d{5}\"]]],\"888\":[\"888\",0,\"\\\\d{11}\",[11],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\"]],0,0,0,0,0,0,[0,0,0,0,0,0,[\"\\\\d{11}\"]]],\"979\":[\"979\",0,\"[1359]\\\\d{8}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1359]\"]]],0,0,0,0,0,0,[0,0,0,[\"[1359]\\\\d{8}\"]]]}}","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\r\n// importing system which is even uncapable of importing \"*.json\" files.\r\nimport metadata from '../../metadata.max.json.js'\r\n\r\nexport default function withMetadataArgument(func, _arguments) {\r\n\tvar args = Array.prototype.slice.call(_arguments)\r\n\targs.push(metadata)\r\n\treturn func.apply(this, args)\r\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n// https://stackoverflow.com/a/46971044/970769\n// \"Breaking changes in Typescript 2.1\"\n// \"Extending built-ins like Error, Array, and Map may no longer work.\"\n// \"As a recommendation, you can manually adjust the prototype immediately after any super(...) calls.\"\n// https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\nvar ParseError = /*#__PURE__*/function (_Error) {\n _inherits(ParseError, _Error);\n\n var _super = _createSuper(ParseError);\n\n function ParseError(code) {\n var _this;\n\n _classCallCheck(this, ParseError);\n\n _this = _super.call(this, code); // Set the prototype explicitly.\n // Any subclass of FooError will have to manually set the prototype as well.\n\n Object.setPrototypeOf(_assertThisInitialized(_this), ParseError.prototype);\n _this.name = _this.constructor.name;\n return _this;\n }\n\n return _createClass(ParseError);\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nexport { ParseError as default };\n//# sourceMappingURL=ParseError.js.map","// The minimum length of the national significant number.\nexport var MIN_LENGTH_FOR_NSN = 2; // The ITU says the maximum length should be 15,\n// but one can find longer numbers in Germany.\n\nexport var MAX_LENGTH_FOR_NSN = 17; // The maximum length of the country calling code.\n\nexport var MAX_LENGTH_COUNTRY_CODE = 3; // Digits accepted in phone numbers\n// (ascii, fullwidth, arabic-indic, and eastern arabic digits).\n\nexport var VALID_DIGITS = \"0-9\\uFF10-\\uFF19\\u0660-\\u0669\\u06F0-\\u06F9\"; // `DASHES` will be right after the opening square bracket of the \"character class\"\n\nvar DASHES = \"-\\u2010-\\u2015\\u2212\\u30FC\\uFF0D\";\nvar SLASHES = \"\\uFF0F/\";\nvar DOTS = \"\\uFF0E.\";\nexport var WHITESPACE = \" \\xA0\\xAD\\u200B\\u2060\\u3000\";\nvar BRACKETS = \"()\\uFF08\\uFF09\\uFF3B\\uFF3D\\\\[\\\\]\"; // export const OPENING_BRACKETS = '(\\uFF08\\uFF3B\\\\\\['\n\nvar TILDES = \"~\\u2053\\u223C\\uFF5E\"; // Regular expression of acceptable punctuation found in phone numbers. This\n// excludes punctuation found as a leading character only. This consists of dash\n// characters, white space characters, full stops, slashes, square brackets,\n// parentheses and tildes. Full-width variants are also present.\n\nexport var VALID_PUNCTUATION = \"\".concat(DASHES).concat(SLASHES).concat(DOTS).concat(WHITESPACE).concat(BRACKETS).concat(TILDES);\nexport var PLUS_CHARS = \"+\\uFF0B\"; // const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+')\n//# sourceMappingURL=constants.js.map","// Copy-pasted from:\n// https://github.com/substack/semver-compare/blob/master/index.js\n//\n// Inlining this function because some users reported issues with\n// importing from `semver-compare` in a browser with ES6 \"native\" modules.\n//\n// Fixes `semver-compare` not being able to compare versions with alpha/beta/etc \"tags\".\n// https://github.com/catamphetamine/libphonenumber-js/issues/381\nexport default function (a, b) {\n a = a.split('-');\n b = b.split('-');\n var pa = a[0].split('.');\n var pb = b[0].split('.');\n\n for (var i = 0; i < 3; i++) {\n var na = Number(pa[i]);\n var nb = Number(pb[i]);\n if (na > nb) return 1;\n if (nb > na) return -1;\n if (!isNaN(na) && isNaN(nb)) return 1;\n if (isNaN(na) && !isNaN(nb)) return -1;\n }\n\n if (a[1] && b[1]) {\n return a[1] > b[1] ? 1 : a[1] < b[1] ? -1 : 0;\n }\n\n return !a[1] && b[1] ? 1 : a[1] && !b[1] ? -1 : 0;\n}\n//# sourceMappingURL=semver-compare.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport compare from './tools/semver-compare.js'; // Added \"possibleLengths\" and renamed\n// \"country_phone_code_to_countries\" to \"country_calling_codes\".\n\nvar V2 = '1.0.18'; // Added \"idd_prefix\" and \"default_idd_prefix\".\n\nvar V3 = '1.2.0'; // Moved `001` country code to \"nonGeographic\" section of metadata.\n\nvar V4 = '1.7.35';\nvar DEFAULT_EXT_PREFIX = ' ext. ';\nvar CALLING_CODE_REG_EXP = /^\\d+$/;\n/**\r\n * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md\r\n */\n\nvar Metadata = /*#__PURE__*/function () {\n function Metadata(metadata) {\n _classCallCheck(this, Metadata);\n\n validateMetadata(metadata);\n this.metadata = metadata;\n setVersion.call(this, metadata);\n }\n\n _createClass(Metadata, [{\n key: \"getCountries\",\n value: function getCountries() {\n return Object.keys(this.metadata.countries).filter(function (_) {\n return _ !== '001';\n });\n }\n }, {\n key: \"getCountryMetadata\",\n value: function getCountryMetadata(countryCode) {\n return this.metadata.countries[countryCode];\n }\n }, {\n key: \"nonGeographic\",\n value: function nonGeographic() {\n if (this.v1 || this.v2 || this.v3) return; // `nonGeographical` was a typo.\n // It's present in metadata generated from `1.7.35` to `1.7.37`.\n // The test case could be found by searching for \"nonGeographical\".\n\n return this.metadata.nonGeographic || this.metadata.nonGeographical;\n }\n }, {\n key: \"hasCountry\",\n value: function hasCountry(country) {\n return this.getCountryMetadata(country) !== undefined;\n }\n }, {\n key: \"hasCallingCode\",\n value: function hasCallingCode(callingCode) {\n if (this.getCountryCodesForCallingCode(callingCode)) {\n return true;\n }\n\n if (this.nonGeographic()) {\n if (this.nonGeographic()[callingCode]) {\n return true;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return true;\n }\n }\n }\n }, {\n key: \"isNonGeographicCallingCode\",\n value: function isNonGeographicCallingCode(callingCode) {\n if (this.nonGeographic()) {\n return this.nonGeographic()[callingCode] ? true : false;\n } else {\n return this.getCountryCodesForCallingCode(callingCode) ? false : true;\n }\n } // Deprecated.\n\n }, {\n key: \"country\",\n value: function country(countryCode) {\n return this.selectNumberingPlan(countryCode);\n }\n }, {\n key: \"selectNumberingPlan\",\n value: function selectNumberingPlan(countryCode, callingCode) {\n // Supports just passing `callingCode` as the first argument.\n if (countryCode && CALLING_CODE_REG_EXP.test(countryCode)) {\n callingCode = countryCode;\n countryCode = null;\n }\n\n if (countryCode && countryCode !== '001') {\n if (!this.hasCountry(countryCode)) {\n throw new Error(\"Unknown country: \".concat(countryCode));\n }\n\n this.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this);\n } else if (callingCode) {\n if (!this.hasCallingCode(callingCode)) {\n throw new Error(\"Unknown calling code: \".concat(callingCode));\n }\n\n this.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this);\n } else {\n this.numberingPlan = undefined;\n }\n\n return this;\n }\n }, {\n key: \"getCountryCodesForCallingCode\",\n value: function getCountryCodesForCallingCode(callingCode) {\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes) {\n // Metadata before V4 included \"non-geographic entity\" calling codes\n // inside `country_calling_codes` (for example, `\"881\":[\"001\"]`).\n // Now the semantics of `country_calling_codes` has changed:\n // it's specifically for \"countries\" now.\n // Older versions of custom metadata will simply skip parsing\n // \"non-geographic entity\" phone numbers with new versions\n // of this library: it's not considered a bug,\n // because such numbers are extremely rare,\n // and developers extremely rarely use custom metadata.\n if (countryCodes.length === 1 && countryCodes[0].length === 3) {\n return;\n }\n\n return countryCodes;\n }\n }\n }, {\n key: \"getCountryCodeForCallingCode\",\n value: function getCountryCodeForCallingCode(callingCode) {\n var countryCodes = this.getCountryCodesForCallingCode(callingCode);\n\n if (countryCodes) {\n return countryCodes[0];\n }\n }\n }, {\n key: \"getNumberingPlanMetadata\",\n value: function getNumberingPlanMetadata(callingCode) {\n var countryCode = this.getCountryCodeForCallingCode(callingCode);\n\n if (countryCode) {\n return this.getCountryMetadata(countryCode);\n }\n\n if (this.nonGeographic()) {\n var metadata = this.nonGeographic()[callingCode];\n\n if (metadata) {\n return metadata;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n // In that metadata, there was no concept of \"non-geographic\" metadata\n // so metadata for `001` country code was stored along with other countries.\n // The test case can be found by searching for:\n // \"should work around `nonGeographic` metadata not existing\".\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return this.metadata.countries['001'];\n }\n }\n } // Deprecated.\n\n }, {\n key: \"countryCallingCode\",\n value: function countryCallingCode() {\n return this.numberingPlan.callingCode();\n } // Deprecated.\n\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n return this.numberingPlan.IDDPrefix();\n } // Deprecated.\n\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n return this.numberingPlan.defaultIDDPrefix();\n } // Deprecated.\n\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n return this.numberingPlan.nationalNumberPattern();\n } // Deprecated.\n\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n return this.numberingPlan.possibleLengths();\n } // Deprecated.\n\n }, {\n key: \"formats\",\n value: function formats() {\n return this.numberingPlan.formats();\n } // Deprecated.\n\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n return this.numberingPlan.nationalPrefixForParsing();\n } // Deprecated.\n\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.numberingPlan.nationalPrefixTransformRule();\n } // Deprecated.\n\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.numberingPlan.leadingDigits();\n } // Deprecated.\n\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n return this.numberingPlan.hasTypes();\n } // Deprecated.\n\n }, {\n key: \"type\",\n value: function type(_type) {\n return this.numberingPlan.type(_type);\n } // Deprecated.\n\n }, {\n key: \"ext\",\n value: function ext() {\n return this.numberingPlan.ext();\n }\n }, {\n key: \"countryCallingCodes\",\n value: function countryCallingCodes() {\n if (this.v1) return this.metadata.country_phone_code_to_countries;\n return this.metadata.country_calling_codes;\n } // Deprecated.\n\n }, {\n key: \"chooseCountryByCountryCallingCode\",\n value: function chooseCountryByCountryCallingCode(callingCode) {\n return this.selectNumberingPlan(callingCode);\n }\n }, {\n key: \"hasSelectedNumberingPlan\",\n value: function hasSelectedNumberingPlan() {\n return this.numberingPlan !== undefined;\n }\n }]);\n\n return Metadata;\n}();\n\nexport { Metadata as default };\n\nvar NumberingPlan = /*#__PURE__*/function () {\n function NumberingPlan(metadata, globalMetadataObject) {\n _classCallCheck(this, NumberingPlan);\n\n this.globalMetadataObject = globalMetadataObject;\n this.metadata = metadata;\n setVersion.call(this, globalMetadataObject.metadata);\n }\n\n _createClass(NumberingPlan, [{\n key: \"callingCode\",\n value: function callingCode() {\n return this.metadata[0];\n } // Formatting information for regions which share\n // a country calling code is contained by only one region\n // for performance reasons. For example, for NANPA region\n // (\"North American Numbering Plan Administration\",\n // which includes USA, Canada, Cayman Islands, Bahamas, etc)\n // it will be contained in the metadata for `US`.\n\n }, {\n key: \"getDefaultCountryMetadataForRegion\",\n value: function getDefaultCountryMetadataForRegion() {\n return this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode());\n } // Is always present.\n\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[1];\n } // Is only present when a country supports multiple IDD prefixes.\n\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[12];\n }\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n if (this.v1 || this.v2) return this.metadata[1];\n return this.metadata[2];\n } // \"possible length\" data is always present in Google's metadata.\n\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.v1) return;\n return this.metadata[this.v2 ? 2 : 3];\n }\n }, {\n key: \"_getFormats\",\n value: function _getFormats(metadata) {\n return metadata[this.v1 ? 2 : this.v2 ? 3 : 4];\n } // For countries of the same region (e.g. NANPA)\n // formats are all stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"formats\",\n value: function formats() {\n var _this = this;\n\n var formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || [];\n return formats.map(function (_) {\n return new Format(_, _this);\n });\n }\n }, {\n key: \"nationalPrefix\",\n value: function nationalPrefix() {\n return this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5];\n }\n }, {\n key: \"_getNationalPrefixFormattingRule\",\n value: function _getNationalPrefixFormattingRule(metadata) {\n return metadata[this.v1 ? 4 : this.v2 ? 5 : 6];\n } // For countries of the same region (e.g. NANPA)\n // national prefix formatting rule is stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"_nationalPrefixForParsing\",\n value: function _nationalPrefixForParsing() {\n return this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7];\n }\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n // If `national_prefix_for_parsing` is not set explicitly,\n // then infer it from `national_prefix` (if any)\n return this._nationalPrefixForParsing() || this.nationalPrefix();\n }\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8];\n }\n }, {\n key: \"_getNationalPrefixIsOptionalWhenFormatting\",\n value: function _getNationalPrefixIsOptionalWhenFormatting() {\n return !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9];\n } // For countries of the same region (e.g. NANPA)\n // \"national prefix is optional when formatting\" flag is\n // stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) || this._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10];\n }\n }, {\n key: \"types\",\n value: function types() {\n return this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11];\n }\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n // Versions 1.2.0 - 1.2.4: can be `[]`.\n\n /* istanbul ignore next */\n if (this.types() && this.types().length === 0) {\n return false;\n } // Versions <= 1.2.4: can be `undefined`.\n // Version >= 1.2.5: can be `0`.\n\n\n return !!this.types();\n }\n }, {\n key: \"type\",\n value: function type(_type2) {\n if (this.hasTypes() && getType(this.types(), _type2)) {\n return new Type(getType(this.types(), _type2), this);\n }\n }\n }, {\n key: \"ext\",\n value: function ext() {\n if (this.v1 || this.v2) return DEFAULT_EXT_PREFIX;\n return this.metadata[13] || DEFAULT_EXT_PREFIX;\n }\n }]);\n\n return NumberingPlan;\n}();\n\nvar Format = /*#__PURE__*/function () {\n function Format(format, metadata) {\n _classCallCheck(this, Format);\n\n this._format = format;\n this.metadata = metadata;\n }\n\n _createClass(Format, [{\n key: \"pattern\",\n value: function pattern() {\n return this._format[0];\n }\n }, {\n key: \"format\",\n value: function format() {\n return this._format[1];\n }\n }, {\n key: \"leadingDigitsPatterns\",\n value: function leadingDigitsPatterns() {\n return this._format[2] || [];\n }\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._format[3] || this.metadata.nationalPrefixFormattingRule();\n }\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n }\n }, {\n key: \"nationalPrefixIsMandatoryWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsMandatoryWhenFormattingInNationalFormat() {\n // National prefix is omitted if there's no national prefix formatting rule\n // set for this country, or when the national prefix formatting rule\n // contains no national prefix itself, or when this rule is set but\n // national prefix is optional for this phone number format\n // (and it is not enforced explicitly)\n return this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n } // Checks whether national prefix formatting rule contains national prefix.\n\n }, {\n key: \"usesNationalPrefix\",\n value: function usesNationalPrefix() {\n return this.nationalPrefixFormattingRule() && // Check that national prefix formatting rule is not a \"dummy\" one.\n !FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule()) // In compressed metadata, `this.nationalPrefixFormattingRule()` is `0`\n // when `national_prefix_formatting_rule` is not present.\n // So, `true` or `false` are returned explicitly here, so that\n // `0` number isn't returned.\n ? true : false;\n }\n }, {\n key: \"internationalFormat\",\n value: function internationalFormat() {\n return this._format[5] || this.format();\n }\n }]);\n\n return Format;\n}();\n/**\r\n * A pattern that is used to determine if the national prefix formatting rule\r\n * has the first group only, i.e., does not start with the national prefix.\r\n * Note that the pattern explicitly allows for unbalanced parentheses.\r\n */\n\n\nvar FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\\(?\\$1\\)?$/;\n\nvar Type = /*#__PURE__*/function () {\n function Type(type, metadata) {\n _classCallCheck(this, Type);\n\n this.type = type;\n this.metadata = metadata;\n }\n\n _createClass(Type, [{\n key: \"pattern\",\n value: function pattern() {\n if (this.metadata.v1) return this.type;\n return this.type[0];\n }\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.metadata.v1) return;\n return this.type[1] || this.metadata.possibleLengths();\n }\n }]);\n\n return Type;\n}();\n\nfunction getType(types, type) {\n switch (type) {\n case 'FIXED_LINE':\n return types[0];\n\n case 'MOBILE':\n return types[1];\n\n case 'TOLL_FREE':\n return types[2];\n\n case 'PREMIUM_RATE':\n return types[3];\n\n case 'PERSONAL_NUMBER':\n return types[4];\n\n case 'VOICEMAIL':\n return types[5];\n\n case 'UAN':\n return types[6];\n\n case 'PAGER':\n return types[7];\n\n case 'VOIP':\n return types[8];\n\n case 'SHARED_COST':\n return types[9];\n }\n}\n\nexport function validateMetadata(metadata) {\n if (!metadata) {\n throw new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.');\n } // `country_phone_code_to_countries` was renamed to\n // `country_calling_codes` in `1.0.18`.\n\n\n if (!is_object(metadata) || !is_object(metadata.countries)) {\n throw new Error(\"[libphonenumber-js] `metadata` argument was passed but it's not a valid metadata. Must be an object having `.countries` child object property. Got \".concat(is_object(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + type_of(metadata) + ': ' + metadata, \".\"));\n }\n} // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\nvar is_object = function is_object(_) {\n return _typeof(_) === 'object';\n}; // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\n\nvar type_of = function type_of(_) {\n return _typeof(_);\n};\n/**\r\n * Returns extension prefix for a country.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string?}\r\n * @example\r\n * // Returns \" ext. \"\r\n * getExtPrefix(\"US\")\r\n */\n\n\nexport function getExtPrefix(country, metadata) {\n metadata = new Metadata(metadata);\n\n if (metadata.hasCountry(country)) {\n return metadata.country(country).ext();\n }\n\n return DEFAULT_EXT_PREFIX;\n}\n/**\r\n * Returns \"country calling code\" for a country.\r\n * Throws an error if the country doesn't exist or isn't supported by this library.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string}\r\n * @example\r\n * // Returns \"44\"\r\n * getCountryCallingCode(\"GB\")\r\n */\n\nexport function getCountryCallingCode(country, metadata) {\n metadata = new Metadata(metadata);\n\n if (metadata.hasCountry(country)) {\n return metadata.country(country).countryCallingCode();\n }\n\n throw new Error(\"Unknown country: \".concat(country));\n}\nexport function isSupportedCountry(country, metadata) {\n // metadata = new Metadata(metadata)\n // return metadata.hasCountry(country)\n return metadata.countries[country] !== undefined;\n}\n\nfunction setVersion(metadata) {\n var version = metadata.version;\n\n if (typeof version === 'number') {\n this.v1 = version === 1;\n this.v2 = version === 2;\n this.v3 = version === 3;\n this.v4 = version === 4;\n } else {\n if (!version) {\n this.v1 = true;\n } else if (compare(version, V3) === -1) {\n this.v2 = true;\n } else if (compare(version, V4) === -1) {\n this.v3 = true;\n } else {\n this.v4 = true;\n }\n }\n} // const ISO_COUNTRY_CODE = /^[A-Z]{2}$/\n// function isCountryCode(countryCode) {\n// \treturn ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode)\n// }\n//# sourceMappingURL=metadata.js.map","import { VALID_DIGITS } from '../../constants.js'; // The RFC 3966 format for extensions.\n\nvar RFC3966_EXTN_PREFIX = ';ext=';\n/**\r\n * Helper method for constructing regular expressions for parsing. Creates\r\n * an expression that captures up to max_length digits.\r\n * @return {string} RegEx pattern to capture extension digits.\r\n */\n\nvar getExtensionDigitsPattern = function getExtensionDigitsPattern(maxLength) {\n return \"([\".concat(VALID_DIGITS, \"]{1,\").concat(maxLength, \"})\");\n};\n/**\r\n * Helper initialiser method to create the regular-expression pattern to match\r\n * extensions.\r\n * Copy-pasted from Google's `libphonenumber`:\r\n * https://github.com/google/libphonenumber/blob/55b2646ec9393f4d3d6661b9c82ef9e258e8b829/javascript/i18n/phonenumbers/phonenumberutil.js#L759-L766\r\n * @return {string} RegEx pattern to capture extensions.\r\n */\n\n\nexport default function createExtensionPattern(purpose) {\n // We cap the maximum length of an extension based on the ambiguity of the way\n // the extension is prefixed. As per ITU, the officially allowed length for\n // extensions is actually 40, but we don't support this since we haven't seen real\n // examples and this introduces many false interpretations as the extension labels\n // are not standardized.\n\n /** @type {string} */\n var extLimitAfterExplicitLabel = '20';\n /** @type {string} */\n\n var extLimitAfterLikelyLabel = '15';\n /** @type {string} */\n\n var extLimitAfterAmbiguousChar = '9';\n /** @type {string} */\n\n var extLimitWhenNotSure = '6';\n /** @type {string} */\n\n var possibleSeparatorsBetweenNumberAndExtLabel = \"[ \\xA0\\\\t,]*\"; // Optional full stop (.) or colon, followed by zero or more spaces/tabs/commas.\n\n /** @type {string} */\n\n var possibleCharsAfterExtLabel = \"[:\\\\.\\uFF0E]?[ \\xA0\\\\t,-]*\";\n /** @type {string} */\n\n var optionalExtnSuffix = \"#?\"; // Here the extension is called out in more explicit way, i.e mentioning it obvious\n // patterns like \"ext.\".\n\n /** @type {string} */\n\n var explicitExtLabels = \"(?:e?xt(?:ensi(?:o\\u0301?|\\xF3))?n?|\\uFF45?\\uFF58\\uFF54\\uFF4E?|\\u0434\\u043E\\u0431|anexo)\"; // One-character symbols that can be used to indicate an extension, and less\n // commonly used or more ambiguous extension labels.\n\n /** @type {string} */\n\n var ambiguousExtLabels = \"(?:[x\\uFF58#\\uFF03~\\uFF5E]|int|\\uFF49\\uFF4E\\uFF54)\"; // When extension is not separated clearly.\n\n /** @type {string} */\n\n var ambiguousSeparator = \"[- ]+\"; // This is the same as possibleSeparatorsBetweenNumberAndExtLabel, but not matching\n // comma as extension label may have it.\n\n /** @type {string} */\n\n var possibleSeparatorsNumberExtLabelNoComma = \"[ \\xA0\\\\t]*\"; // \",,\" is commonly used for auto dialling the extension when connected. First\n // comma is matched through possibleSeparatorsBetweenNumberAndExtLabel, so we do\n // not repeat it here. Semi-colon works in Iphone and Android also to pop up a\n // button with the extension number following.\n\n /** @type {string} */\n\n var autoDiallingAndExtLabelsFound = \"(?:,{2}|;)\";\n /** @type {string} */\n\n var rfcExtn = RFC3966_EXTN_PREFIX + getExtensionDigitsPattern(extLimitAfterExplicitLabel);\n /** @type {string} */\n\n var explicitExtn = possibleSeparatorsBetweenNumberAndExtLabel + explicitExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterExplicitLabel) + optionalExtnSuffix;\n /** @type {string} */\n\n var ambiguousExtn = possibleSeparatorsBetweenNumberAndExtLabel + ambiguousExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix;\n /** @type {string} */\n\n var americanStyleExtnWithSuffix = ambiguousSeparator + getExtensionDigitsPattern(extLimitWhenNotSure) + \"#\";\n /** @type {string} */\n\n var autoDiallingExtn = possibleSeparatorsNumberExtLabelNoComma + autoDiallingAndExtLabelsFound + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterLikelyLabel) + optionalExtnSuffix;\n /** @type {string} */\n\n var onlyCommasExtn = possibleSeparatorsNumberExtLabelNoComma + \"(?:,)+\" + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix; // The first regular expression covers RFC 3966 format, where the extension is added\n // using \";ext=\". The second more generic where extension is mentioned with explicit\n // labels like \"ext:\". In both the above cases we allow more numbers in extension than\n // any other extension labels. The third one captures when single character extension\n // labels or less commonly used labels are used. In such cases we capture fewer\n // extension digits in order to reduce the chance of falsely interpreting two\n // numbers beside each other as a number + extension. The fourth one covers the\n // special case of American numbers where the extension is written with a hash\n // at the end, such as \"- 503#\". The fifth one is exclusively for extension\n // autodialling formats which are used when dialling and in this case we accept longer\n // extensions. The last one is more liberal on the number of commas that acts as\n // extension labels, so we have a strict cap on the number of digits in such extensions.\n\n return rfcExtn + \"|\" + explicitExtn + \"|\" + ambiguousExtn + \"|\" + americanStyleExtnWithSuffix + \"|\" + autoDiallingExtn + \"|\" + onlyCommasExtn;\n}\n//# sourceMappingURL=createExtensionPattern.js.map","import { MIN_LENGTH_FOR_NSN, VALID_DIGITS, VALID_PUNCTUATION, PLUS_CHARS } from '../constants.js';\nimport createExtensionPattern from './extension/createExtensionPattern.js'; // Regular expression of viable phone numbers. This is location independent.\n// Checks we have at least three leading digits, and only valid punctuation,\n// alpha characters and digits in the phone number. Does not include extension\n// data. The symbol 'x' is allowed here as valid punctuation since it is often\n// used as a placeholder for carrier codes, for example in Brazilian phone\n// numbers. We also allow multiple '+' characters at the start.\n//\n// Corresponds to the following:\n// [digits]{minLengthNsn}|\n// plus_sign*\n// (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])*\n//\n// The first reg-ex is to allow short numbers (two digits long) to be parsed if\n// they are entered as \"15\" etc, but only if there is no punctuation in them.\n// The second expression restricts the number of digits to three or more, but\n// then allows them to be in international form, and to have alpha-characters\n// and punctuation. We split up the two reg-exes here and combine them when\n// creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it\n// with ^ and append $ to each branch.\n//\n// \"Note VALID_PUNCTUATION starts with a -,\n// so must be the first in the range\" (c) Google devs.\n// (wtf did they mean by saying that; probably nothing)\n//\n\nvar MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + VALID_DIGITS + ']{' + MIN_LENGTH_FOR_NSN + '}'; //\n// And this is the second reg-exp:\n// (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp)\n//\n\nexport var VALID_PHONE_NUMBER = '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){3,}' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*'; // This regular expression isn't present in Google's `libphonenumber`\n// and is only used to determine whether the phone number being input\n// is too short for it to even consider it a \"valid\" number.\n// This is just a way to differentiate between a really invalid phone\n// number like \"abcde\" and a valid phone number that a user has just\n// started inputting, like \"+1\" or \"1\": both these cases would be\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\n// library can provide a more detailed error message — whether it's\n// really \"not a number\", or is it just a start of a valid phone number.\n\nvar VALID_PHONE_NUMBER_START_REG_EXP = new RegExp('^' + '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){1,2}' + '$', 'i');\nexport var VALID_PHONE_NUMBER_WITH_EXTENSION = VALID_PHONE_NUMBER + // Phone number extensions\n'(?:' + createExtensionPattern() + ')?'; // The combined regular expression for valid phone numbers:\n//\n\nvar VALID_PHONE_NUMBER_PATTERN = new RegExp( // Either a short two-digit-only phone number\n'^' + MIN_LENGTH_PHONE_NUMBER_PATTERN + '$' + '|' + // Or a longer fully parsed phone number (min 3 characters)\n'^' + VALID_PHONE_NUMBER_WITH_EXTENSION + '$', 'i'); // Checks to see if the string of characters could possibly be a phone number at\n// all. At the moment, checks to see that the string begins with at least 2\n// digits, ignoring any punctuation commonly found in phone numbers. This method\n// does not require the number to be normalized in advance - but does assume\n// that leading non-number symbols have been removed, such as by the method\n// `extract_possible_number`.\n//\n\nexport default function isViablePhoneNumber(number) {\n return number.length >= MIN_LENGTH_FOR_NSN && VALID_PHONE_NUMBER_PATTERN.test(number);\n} // This is just a way to differentiate between a really invalid phone\n// number like \"abcde\" and a valid phone number that a user has just\n// started inputting, like \"+1\" or \"1\": both these cases would be\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\n// library can provide a more detailed error message — whether it's\n// really \"not a number\", or is it just a start of a valid phone number.\n\nexport function isViablePhoneNumberStart(number) {\n return VALID_PHONE_NUMBER_START_REG_EXP.test(number);\n}\n//# sourceMappingURL=isViablePhoneNumber.js.map","import createExtensionPattern from './createExtensionPattern.js'; // Regexp of all known extension prefixes used by different regions followed by\n// 1 or more valid digits, for use when parsing.\n\nvar EXTN_PATTERN = new RegExp('(?:' + createExtensionPattern() + ')$', 'i'); // Strips any extension (as in, the part of the number dialled after the call is\n// connected, usually indicated with extn, ext, x or similar) from the end of\n// the number, and returns it.\n\nexport default function extractExtension(number) {\n var start = number.search(EXTN_PATTERN);\n\n if (start < 0) {\n return {};\n } // If we find a potential extension, and the number preceding this is a viable\n // number, we assume it is an extension.\n\n\n var numberWithoutExtension = number.slice(0, start);\n var matches = number.match(EXTN_PATTERN);\n var i = 1;\n\n while (i < matches.length) {\n if (matches[i]) {\n return {\n number: numberWithoutExtension,\n ext: matches[i]\n };\n }\n\n i++;\n }\n}\n//# sourceMappingURL=extractExtension.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n// These mappings map a character (key) to a specific digit that should\n// replace it for normalization purposes. Non-European digits that\n// may be used in phone numbers are mapped to a European equivalent.\n//\n// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\n//\nexport var DIGITS = {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n \"\\uFF10\": '0',\n // Fullwidth digit 0\n \"\\uFF11\": '1',\n // Fullwidth digit 1\n \"\\uFF12\": '2',\n // Fullwidth digit 2\n \"\\uFF13\": '3',\n // Fullwidth digit 3\n \"\\uFF14\": '4',\n // Fullwidth digit 4\n \"\\uFF15\": '5',\n // Fullwidth digit 5\n \"\\uFF16\": '6',\n // Fullwidth digit 6\n \"\\uFF17\": '7',\n // Fullwidth digit 7\n \"\\uFF18\": '8',\n // Fullwidth digit 8\n \"\\uFF19\": '9',\n // Fullwidth digit 9\n \"\\u0660\": '0',\n // Arabic-indic digit 0\n \"\\u0661\": '1',\n // Arabic-indic digit 1\n \"\\u0662\": '2',\n // Arabic-indic digit 2\n \"\\u0663\": '3',\n // Arabic-indic digit 3\n \"\\u0664\": '4',\n // Arabic-indic digit 4\n \"\\u0665\": '5',\n // Arabic-indic digit 5\n \"\\u0666\": '6',\n // Arabic-indic digit 6\n \"\\u0667\": '7',\n // Arabic-indic digit 7\n \"\\u0668\": '8',\n // Arabic-indic digit 8\n \"\\u0669\": '9',\n // Arabic-indic digit 9\n \"\\u06F0\": '0',\n // Eastern-Arabic digit 0\n \"\\u06F1\": '1',\n // Eastern-Arabic digit 1\n \"\\u06F2\": '2',\n // Eastern-Arabic digit 2\n \"\\u06F3\": '3',\n // Eastern-Arabic digit 3\n \"\\u06F4\": '4',\n // Eastern-Arabic digit 4\n \"\\u06F5\": '5',\n // Eastern-Arabic digit 5\n \"\\u06F6\": '6',\n // Eastern-Arabic digit 6\n \"\\u06F7\": '7',\n // Eastern-Arabic digit 7\n \"\\u06F8\": '8',\n // Eastern-Arabic digit 8\n \"\\u06F9\": '9' // Eastern-Arabic digit 9\n\n};\nexport function parseDigit(character) {\n return DIGITS[character];\n}\n/**\r\n * Parses phone number digits from a string.\r\n * Drops all punctuation leaving only digits.\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * parseDigits('8 (800) 555')\r\n * // Outputs '8800555'.\r\n * ```\r\n */\n\nexport default function parseDigits(string) {\n var result = ''; // Using `.split('')` here instead of normal `for ... of`\n // because the importing application doesn't neccessarily include an ES6 polyfill.\n // The `.split('')` approach discards \"exotic\" UTF-8 characters\n // (the ones consisting of four bytes) but digits\n // (including non-European ones) don't fall into that range\n // so such \"exotic\" characters would be discarded anyway.\n\n for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) {\n var character = _step.value;\n var digit = parseDigit(character);\n\n if (digit) {\n result += digit;\n }\n }\n\n return result;\n}\n//# sourceMappingURL=parseDigits.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { parseDigit } from './helpers/parseDigits.js';\n/**\r\n * Parses phone number characters from a string.\r\n * Drops all punctuation leaving only digits and the leading `+` sign (if any).\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * // Outputs '8800555'.\r\n * parseIncompletePhoneNumber('8 (800) 555')\r\n * // Outputs '+7800555'.\r\n * parseIncompletePhoneNumber('+7 800 555')\r\n * ```\r\n */\n\nexport default function parseIncompletePhoneNumber(string) {\n var result = ''; // Using `.split('')` here instead of normal `for ... of`\n // because the importing application doesn't neccessarily include an ES6 polyfill.\n // The `.split('')` approach discards \"exotic\" UTF-8 characters\n // (the ones consisting of four bytes) but digits\n // (including non-European ones) don't fall into that range\n // so such \"exotic\" characters would be discarded anyway.\n\n for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) {\n var character = _step.value;\n result += parsePhoneNumberCharacter(character, result) || '';\n }\n\n return result;\n}\n/**\r\n * Parses next character while parsing phone number digits (including a `+`)\r\n * from text: discards everything except `+` and digits, and `+` is only allowed\r\n * at the start of a phone number.\r\n * For example, is used in `react-phone-number-input` where it uses\r\n * [`input-format`](https://gitlab.com/catamphetamine/input-format).\r\n * @param {string} character - Yet another character from raw input string.\r\n * @param {string?} prevParsedCharacters - Previous parsed characters.\r\n * @param {object} meta - Optional custom use-case-specific metadata.\r\n * @return {string?} The parsed character.\r\n */\n\nexport function parsePhoneNumberCharacter(character, prevParsedCharacters) {\n // Only allow a leading `+`.\n if (character === '+') {\n // If this `+` is not the first parsed character\n // then discard it.\n if (prevParsedCharacters) {\n return;\n }\n\n return '+';\n } // Allow digits.\n\n\n return parseDigit(character);\n}\n//# sourceMappingURL=parseIncompletePhoneNumber.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/**\r\n * Merges two arrays.\r\n * @param {*} a\r\n * @param {*} b\r\n * @return {*}\r\n */\nexport default function mergeArrays(a, b) {\n var merged = a.slice();\n\n for (var _iterator = _createForOfIteratorHelperLoose(b), _step; !(_step = _iterator()).done;) {\n var element = _step.value;\n\n if (a.indexOf(element) < 0) {\n merged.push(element);\n }\n }\n\n return merged.sort(function (a, b) {\n return a - b;\n }); // ES6 version, requires Set polyfill.\n // let merged = new Set(a)\n // for (const element of b) {\n // \tmerged.add(i)\n // }\n // return Array.from(merged).sort((a, b) => a - b)\n}\n//# sourceMappingURL=mergeArrays.js.map","import mergeArrays from './mergeArrays.js';\nexport default function checkNumberLength(nationalNumber, metadata) {\n return checkNumberLengthForType(nationalNumber, undefined, metadata);\n} // Checks whether a number is possible for the country based on its length.\n// Should only be called for the \"new\" metadata which has \"possible lengths\".\n\nexport function checkNumberLengthForType(nationalNumber, type, metadata) {\n var type_info = metadata.type(type); // There should always be \"\" set for every type element.\n // This is declared in the XML schema.\n // For size efficiency, where a sub-description (e.g. fixed-line)\n // has the same \"\" as the \"general description\", this is missing,\n // so we fall back to the \"general description\". Where no numbers of the type\n // exist at all, there is one possible length (-1) which is guaranteed\n // not to match the length of any real phone number.\n\n var possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths(); // let local_lengths = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal()\n // Metadata before version `1.0.18` didn't contain `possible_lengths`.\n\n if (!possible_lengths) {\n return 'IS_POSSIBLE';\n }\n\n if (type === 'FIXED_LINE_OR_MOBILE') {\n // No such country in metadata.\n\n /* istanbul ignore next */\n if (!metadata.type('FIXED_LINE')) {\n // The rare case has been encountered where no fixedLine data is available\n // (true for some non-geographic entities), so we just check mobile.\n return checkNumberLengthForType(nationalNumber, 'MOBILE', metadata);\n }\n\n var mobile_type = metadata.type('MOBILE');\n\n if (mobile_type) {\n // Merge the mobile data in if there was any. \"Concat\" creates a new\n // array, it doesn't edit possible_lengths in place, so we don't need a copy.\n // Note that when adding the possible lengths from mobile, we have\n // to again check they aren't empty since if they are this indicates\n // they are the same as the general desc and should be obtained from there.\n possible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths()); // The current list is sorted; we need to merge in the new list and\n // re-sort (duplicates are okay). Sorting isn't so expensive because\n // the lists are very small.\n // if (local_lengths) {\n // \tlocal_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal())\n // } else {\n // \tlocal_lengths = mobile_type.possibleLengthsLocal()\n // }\n }\n } // If the type doesn't exist then return 'INVALID_LENGTH'.\n else if (type && !type_info) {\n return 'INVALID_LENGTH';\n }\n\n var actual_length = nationalNumber.length; // In `libphonenumber-js` all \"local-only\" formats are dropped for simplicity.\n // // This is safe because there is never an overlap beween the possible lengths\n // // and the local-only lengths; this is checked at build time.\n // if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0)\n // {\n // \treturn 'IS_POSSIBLE_LOCAL_ONLY'\n // }\n\n var minimum_length = possible_lengths[0];\n\n if (minimum_length === actual_length) {\n return 'IS_POSSIBLE';\n }\n\n if (minimum_length > actual_length) {\n return 'TOO_SHORT';\n }\n\n if (possible_lengths[possible_lengths.length - 1] < actual_length) {\n return 'TOO_LONG';\n } // We skip the first element since we've already checked it.\n\n\n return possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH';\n}\n//# sourceMappingURL=checkNumberLength.js.map","import Metadata from './metadata.js';\nimport checkNumberLength from './helpers/checkNumberLength.js';\nexport default function isPossiblePhoneNumber(input, options, metadata) {\n /* istanbul ignore if */\n if (options === undefined) {\n options = {};\n }\n\n metadata = new Metadata(metadata);\n\n if (options.v2) {\n if (!input.countryCallingCode) {\n throw new Error('Invalid phone number object passed');\n }\n\n metadata.selectNumberingPlan(input.countryCallingCode);\n } else {\n if (!input.phone) {\n return false;\n }\n\n if (input.country) {\n if (!metadata.hasCountry(input.country)) {\n throw new Error(\"Unknown country: \".concat(input.country));\n }\n\n metadata.country(input.country);\n } else {\n if (!input.countryCallingCode) {\n throw new Error('Invalid phone number object passed');\n }\n\n metadata.selectNumberingPlan(input.countryCallingCode);\n }\n } // Old metadata (< 1.0.18) had no \"possible length\" data.\n\n\n if (metadata.possibleLengths()) {\n return isPossibleNumber(input.phone || input.nationalNumber, metadata);\n } else {\n // There was a bug between `1.7.35` and `1.7.37` where \"possible_lengths\"\n // were missing for \"non-geographical\" numbering plans.\n // Just assume the number is possible in such cases:\n // it's unlikely that anyone generated their custom metadata\n // in that short period of time (one day).\n // This code can be removed in some future major version update.\n if (input.countryCallingCode && metadata.isNonGeographicCallingCode(input.countryCallingCode)) {\n // \"Non-geographic entities\" did't have `possibleLengths`\n // due to a bug in metadata generation process.\n return true;\n } else {\n throw new Error('Missing \"possibleLengths\" in metadata. Perhaps the metadata has been generated before v1.0.18.');\n }\n }\n}\nexport function isPossibleNumber(nationalNumber, metadata) {\n //, isInternational) {\n switch (checkNumberLength(nationalNumber, metadata)) {\n case 'IS_POSSIBLE':\n return true;\n // This library ignores \"local-only\" phone numbers (for simplicity).\n // See the readme for more info on what are \"local-only\" phone numbers.\n // case 'IS_POSSIBLE_LOCAL_ONLY':\n // \treturn !isInternational\n\n default:\n return false;\n }\n}\n//# sourceMappingURL=isPossibleNumber_.js.map","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport isViablePhoneNumber from './isViablePhoneNumber.js'; // https://www.ietf.org/rfc/rfc3966.txt\n\n/**\r\n * @param {string} text - Phone URI (RFC 3966).\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\n\nexport function parseRFC3966(text) {\n var number;\n var ext; // Replace \"tel:\" with \"tel=\" for parsing convenience.\n\n text = text.replace(/^tel:/, 'tel=');\n\n for (var _iterator = _createForOfIteratorHelperLoose(text.split(';')), _step; !(_step = _iterator()).done;) {\n var part = _step.value;\n\n var _part$split = part.split('='),\n _part$split2 = _slicedToArray(_part$split, 2),\n name = _part$split2[0],\n value = _part$split2[1];\n\n switch (name) {\n case 'tel':\n number = value;\n break;\n\n case 'ext':\n ext = value;\n break;\n\n case 'phone-context':\n // Only \"country contexts\" are supported.\n // \"Domain contexts\" are ignored.\n if (value[0] === '+') {\n number = value + number;\n }\n\n break;\n }\n } // If the phone number is not viable, then abort.\n\n\n if (!isViablePhoneNumber(number)) {\n return {};\n }\n\n var result = {\n number: number\n };\n\n if (ext) {\n result.ext = ext;\n }\n\n return result;\n}\n/**\r\n * @param {object} - `{ ?number, ?extension }`.\r\n * @return {string} Phone URI (RFC 3966).\r\n */\n\nexport function formatRFC3966(_ref) {\n var number = _ref.number,\n ext = _ref.ext;\n\n if (!number) {\n return '';\n }\n\n if (number[0] !== '+') {\n throw new Error(\"\\\"formatRFC3966()\\\" expects \\\"number\\\" to be in E.164 format.\");\n }\n\n return \"tel:\".concat(number).concat(ext ? ';ext=' + ext : '');\n}\n//# sourceMappingURL=RFC3966.js.map","/**\r\n * Checks whether the entire input sequence can be matched\r\n * against the regular expression.\r\n * @return {boolean}\r\n */\nexport default function matchesEntirely(text, regular_expression) {\n // If assigning the `''` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n text = text || '';\n return new RegExp('^(?:' + regular_expression + ')$').test(text);\n}\n//# sourceMappingURL=matchesEntirely.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport Metadata from '../metadata.js';\nimport matchesEntirely from './matchesEntirely.js';\nvar NON_FIXED_LINE_PHONE_TYPES = ['MOBILE', 'PREMIUM_RATE', 'TOLL_FREE', 'SHARED_COST', 'VOIP', 'PERSONAL_NUMBER', 'PAGER', 'UAN', 'VOICEMAIL']; // Finds out national phone number type (fixed line, mobile, etc)\n\nexport default function getNumberType(input, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {}; // When `parse()` returned `{}`\n // meaning that the phone number is not a valid one.\n\n if (!input.country) {\n return;\n }\n\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(input.country, input.countryCallingCode);\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // The following is copy-pasted from the original function:\n // https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835\n // Is this national number even valid for this country\n\n if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) {\n return;\n } // Is it fixed line number\n\n\n if (isNumberTypeEqualTo(nationalNumber, 'FIXED_LINE', metadata)) {\n // Because duplicate regular expressions are removed\n // to reduce metadata size, if \"mobile\" pattern is \"\"\n // then it means it was removed due to being a duplicate of the fixed-line pattern.\n //\n if (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') {\n return 'FIXED_LINE_OR_MOBILE';\n } // `MOBILE` type pattern isn't included if it matched `FIXED_LINE` one.\n // For example, for \"US\" country.\n // Old metadata (< `1.0.18`) had a specific \"types\" data structure\n // that happened to be `undefined` for `MOBILE` in that case.\n // Newer metadata (>= `1.0.18`) has another data structure that is\n // not `undefined` for `MOBILE` in that case (it's just an empty array).\n // So this `if` is just for backwards compatibility with old metadata.\n\n\n if (!metadata.type('MOBILE')) {\n return 'FIXED_LINE_OR_MOBILE';\n } // Check if the number happens to qualify as both fixed line and mobile.\n // (no such country in the minimal metadata set)\n\n /* istanbul ignore if */\n\n\n if (isNumberTypeEqualTo(nationalNumber, 'MOBILE', metadata)) {\n return 'FIXED_LINE_OR_MOBILE';\n }\n\n return 'FIXED_LINE';\n }\n\n for (var _iterator = _createForOfIteratorHelperLoose(NON_FIXED_LINE_PHONE_TYPES), _step; !(_step = _iterator()).done;) {\n var type = _step.value;\n\n if (isNumberTypeEqualTo(nationalNumber, type, metadata)) {\n return type;\n }\n }\n}\nexport function isNumberTypeEqualTo(nationalNumber, type, metadata) {\n type = metadata.type(type);\n\n if (!type || !type.pattern()) {\n return false;\n } // Check if any possible number lengths are present;\n // if so, we use them to avoid checking\n // the validation pattern if they don't match.\n // If they are absent, this means they match\n // the general description, which we have\n // already checked before a specific number type.\n\n\n if (type.possibleLengths() && type.possibleLengths().indexOf(nationalNumber.length) < 0) {\n return false;\n }\n\n return matchesEntirely(nationalNumber, type.pattern());\n}\n//# sourceMappingURL=getNumberType.js.map","import Metadata from './metadata.js';\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport getNumberType from './helpers/getNumberType.js';\n/**\r\n * Checks if a given phone number is valid.\r\n *\r\n * If the `number` is a string, it will be parsed to an object,\r\n * but only if it contains only valid phone number characters (including punctuation).\r\n * If the `number` is an object, it is used as is.\r\n *\r\n * The optional `defaultCountry` argument is the default country.\r\n * I.e. it does not restrict to just that country,\r\n * e.g. in those cases where several countries share\r\n * the same phone numbering rules (NANPA, Britain, etc).\r\n * For example, even though the number `07624 369230`\r\n * belongs to the Isle of Man (\"IM\" country code)\r\n * calling `isValidNumber('07624369230', 'GB', metadata)`\r\n * still returns `true` because the country is not restricted to `GB`,\r\n * it's just that `GB` is the default one for the phone numbering rules.\r\n * For restricting the country see `isValidNumberForRegion()`\r\n * though restricting a country might not be a good idea.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n *\r\n * Examples:\r\n *\r\n * ```js\r\n * isValidNumber('+78005553535', metadata)\r\n * isValidNumber('8005553535', 'RU', metadata)\r\n * isValidNumber('88005553535', 'RU', metadata)\r\n * isValidNumber({ phone: '8005553535', country: 'RU' }, metadata)\r\n * ```\r\n */\n\nexport default function isValidNumber(input, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {};\n metadata = new Metadata(metadata); // This is just to support `isValidNumber({})`\n // for cases when `parseNumber()` returns `{}`.\n\n if (!input.country) {\n return false;\n }\n\n metadata.selectNumberingPlan(input.country, input.countryCallingCode); // By default, countries only have type regexps when it's required for\n // distinguishing different countries having the same `countryCallingCode`.\n\n if (metadata.hasTypes()) {\n return getNumberType(input, options, metadata.metadata) !== undefined;\n } // If there are no type regexps for this country in metadata then use\n // `nationalNumberPattern` as a \"better than nothing\" replacement.\n\n\n var national_number = options.v2 ? input.nationalNumber : input.phone;\n return matchesEntirely(national_number, metadata.nationalNumberPattern());\n}\n//# sourceMappingURL=validate_.js.map","import { VALID_PUNCTUATION } from '../constants.js'; // Removes brackets and replaces dashes with spaces.\n//\n// E.g. \"(999) 111-22-33\" -> \"999 111 22 33\"\n//\n// For some reason Google's metadata contains ``s with brackets and dashes.\n// Meanwhile, there's no single opinion about using punctuation in international phone numbers.\n//\n// For example, Google's `` for USA is `+1 213-373-4253`.\n// And here's a quote from WikiPedia's \"North American Numbering Plan\" page:\n// https://en.wikipedia.org/wiki/North_American_Numbering_Plan\n//\n// \"The country calling code for all countries participating in the NANP is 1.\n// In international format, an NANP number should be listed as +1 301 555 01 00,\n// where 301 is an area code (Maryland).\"\n//\n// I personally prefer the international format without any punctuation.\n// For example, brackets are remnants of the old age, meaning that the\n// phone number part in brackets (so called \"area code\") can be omitted\n// if dialing within the same \"area\".\n// And hyphens were clearly introduced for splitting local numbers into memorizable groups.\n// For example, remembering \"5553535\" is difficult but \"555-35-35\" is much simpler.\n// Imagine a man taking a bus from home to work and seeing an ad with a phone number.\n// He has a couple of seconds to memorize that number until it passes by.\n// If it were spaces instead of hyphens the man wouldn't necessarily get it,\n// but with hyphens instead of spaces the grouping is more explicit.\n// I personally think that hyphens introduce visual clutter,\n// so I prefer replacing them with spaces in international numbers.\n// In the modern age all output is done on displays where spaces are clearly distinguishable\n// so hyphens can be safely replaced with spaces without losing any legibility.\n//\n\nexport default function applyInternationalSeparatorStyle(formattedNumber) {\n return formattedNumber.replace(new RegExp(\"[\".concat(VALID_PUNCTUATION, \"]+\"), 'g'), ' ').trim();\n}\n//# sourceMappingURL=applyInternationalSeparatorStyle.js.map","import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle.js'; // This was originally set to $1 but there are some countries for which the\n// first group is not used in the national pattern (e.g. Argentina) so the $1\n// group does not match correctly. Therefore, we use `\\d`, so that the first\n// group actually used in the pattern will be matched.\n\nexport var FIRST_GROUP_PATTERN = /(\\$\\d)/;\nexport default function formatNationalNumberUsingFormat(number, format, _ref) {\n var useInternationalFormat = _ref.useInternationalFormat,\n withNationalPrefix = _ref.withNationalPrefix,\n carrierCode = _ref.carrierCode,\n metadata = _ref.metadata;\n var formattedNumber = number.replace(new RegExp(format.pattern()), useInternationalFormat ? format.internationalFormat() : // This library doesn't use `domestic_carrier_code_formatting_rule`,\n // because that one is only used when formatting phone numbers\n // for dialing from a mobile phone, and this is not a dialing library.\n // carrierCode && format.domesticCarrierCodeFormattingRule()\n // \t// First, replace the $CC in the formatting rule with the desired carrier code.\n // \t// Then, replace the $FG in the formatting rule with the first group\n // \t// and the carrier code combined in the appropriate way.\n // \t? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode))\n // \t: (\n // \t\twithNationalPrefix && format.nationalPrefixFormattingRule()\n // \t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\n // \t\t\t: format.format()\n // \t)\n withNationalPrefix && format.nationalPrefixFormattingRule() ? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()) : format.format());\n\n if (useInternationalFormat) {\n return applyInternationalSeparatorStyle(formattedNumber);\n }\n\n return formattedNumber;\n}\n//# sourceMappingURL=formatNationalNumberUsingFormat.js.map","import Metadata from '../metadata.js';\n/**\r\n * Pattern that makes it easy to distinguish whether a region has a single\r\n * international dialing prefix or not. If a region has a single international\r\n * prefix (e.g. 011 in USA), it will be represented as a string that contains\r\n * a sequence of ASCII digits, and possibly a tilde, which signals waiting for\r\n * the tone. If there are multiple available international prefixes in a\r\n * region, they will be represented as a regex string that always contains one\r\n * or more characters that are not ASCII digits or a tilde.\r\n */\n\nvar SINGLE_IDD_PREFIX_REG_EXP = /^[\\d]+(?:[~\\u2053\\u223C\\uFF5E][\\d]+)?$/; // For regions that have multiple IDD prefixes\n// a preferred IDD prefix is returned.\n\nexport default function getIddPrefix(country, callingCode, metadata) {\n var countryMetadata = new Metadata(metadata);\n countryMetadata.selectNumberingPlan(country, callingCode);\n\n if (countryMetadata.defaultIDDPrefix()) {\n return countryMetadata.defaultIDDPrefix();\n }\n\n if (SINGLE_IDD_PREFIX_REG_EXP.test(countryMetadata.IDDPrefix())) {\n return countryMetadata.IDDPrefix();\n }\n}\n//# sourceMappingURL=getIddPrefix.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js';\nimport Metadata, { getCountryCallingCode } from './metadata.js';\nimport getIddPrefix from './helpers/getIddPrefix.js';\nimport { formatRFC3966 } from './helpers/RFC3966.js';\nvar DEFAULT_OPTIONS = {\n formatExtension: function formatExtension(formattedNumber, extension, metadata) {\n return \"\".concat(formattedNumber).concat(metadata.ext()).concat(extension);\n }\n}; // Formats a phone number\n//\n// Example use cases:\n//\n// ```js\n// formatNumber('8005553535', 'RU', 'INTERNATIONAL')\n// formatNumber('8005553535', 'RU', 'INTERNATIONAL', metadata)\n// formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL')\n// formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL', metadata)\n// formatNumber('+78005553535', 'NATIONAL')\n// formatNumber('+78005553535', 'NATIONAL', metadata)\n// ```\n//\n\nexport default function formatNumber(input, format, options, metadata) {\n // Apply default options.\n if (options) {\n options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);\n } else {\n options = DEFAULT_OPTIONS;\n }\n\n metadata = new Metadata(metadata);\n\n if (input.country && input.country !== '001') {\n // Validate `input.country`.\n if (!metadata.hasCountry(input.country)) {\n throw new Error(\"Unknown country: \".concat(input.country));\n }\n\n metadata.country(input.country);\n } else if (input.countryCallingCode) {\n metadata.selectNumberingPlan(input.countryCallingCode);\n } else return input.phone || '';\n\n var countryCallingCode = metadata.countryCallingCode();\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // This variable should have been declared inside `case`s\n // but Babel has a bug and it says \"duplicate variable declaration\".\n\n var number;\n\n switch (format) {\n case 'NATIONAL':\n // Legacy argument support.\n // (`{ country: ..., phone: '' }`)\n if (!nationalNumber) {\n return '';\n }\n\n number = formatNationalNumber(nationalNumber, input.carrierCode, 'NATIONAL', metadata, options);\n return addExtension(number, input.ext, metadata, options.formatExtension);\n\n case 'INTERNATIONAL':\n // Legacy argument support.\n // (`{ country: ..., phone: '' }`)\n if (!nationalNumber) {\n return \"+\".concat(countryCallingCode);\n }\n\n number = formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata, options);\n number = \"+\".concat(countryCallingCode, \" \").concat(number);\n return addExtension(number, input.ext, metadata, options.formatExtension);\n\n case 'E.164':\n // `E.164` doesn't define \"phone number extensions\".\n return \"+\".concat(countryCallingCode).concat(nationalNumber);\n\n case 'RFC3966':\n return formatRFC3966({\n number: \"+\".concat(countryCallingCode).concat(nationalNumber),\n ext: input.ext\n });\n // For reference, here's Google's IDD formatter:\n // https://github.com/google/libphonenumber/blob/32719cf74e68796788d1ca45abc85dcdc63ba5b9/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L1546\n // Not saying that this IDD formatter replicates it 1:1, but it seems to work.\n // Who would even need to format phone numbers in IDD format anyway?\n\n case 'IDD':\n if (!options.fromCountry) {\n return; // throw new Error('`fromCountry` option not passed for IDD-prefixed formatting.')\n }\n\n var formattedNumber = formatIDD(nationalNumber, input.carrierCode, countryCallingCode, options.fromCountry, metadata);\n return addExtension(formattedNumber, input.ext, metadata, options.formatExtension);\n\n default:\n throw new Error(\"Unknown \\\"format\\\" argument passed to \\\"formatNumber()\\\": \\\"\".concat(format, \"\\\"\"));\n }\n}\n\nfunction formatNationalNumber(number, carrierCode, formatAs, metadata, options) {\n var format = chooseFormatForNumber(metadata.formats(), number);\n\n if (!format) {\n return number;\n }\n\n return formatNationalNumberUsingFormat(number, format, {\n useInternationalFormat: formatAs === 'INTERNATIONAL',\n withNationalPrefix: format.nationalPrefixIsOptionalWhenFormattingInNationalFormat() && options && options.nationalPrefix === false ? false : true,\n carrierCode: carrierCode,\n metadata: metadata\n });\n}\n\nfunction chooseFormatForNumber(availableFormats, nationalNnumber) {\n for (var _iterator = _createForOfIteratorHelperLoose(availableFormats), _step; !(_step = _iterator()).done;) {\n var format = _step.value;\n\n // Validate leading digits.\n // The test case for \"else path\" could be found by searching for\n // \"format.leadingDigitsPatterns().length === 0\".\n if (format.leadingDigitsPatterns().length > 0) {\n // The last leading_digits_pattern is used here, as it is the most detailed\n var lastLeadingDigitsPattern = format.leadingDigitsPatterns()[format.leadingDigitsPatterns().length - 1]; // If leading digits don't match then move on to the next phone number format\n\n if (nationalNnumber.search(lastLeadingDigitsPattern) !== 0) {\n continue;\n }\n } // Check that the national number matches the phone number format regular expression\n\n\n if (matchesEntirely(nationalNnumber, format.pattern())) {\n return format;\n }\n }\n}\n\nfunction addExtension(formattedNumber, ext, metadata, formatExtension) {\n return ext ? formatExtension(formattedNumber, ext, metadata) : formattedNumber;\n}\n\nfunction formatIDD(nationalNumber, carrierCode, countryCallingCode, fromCountry, metadata) {\n var fromCountryCallingCode = getCountryCallingCode(fromCountry, metadata.metadata); // When calling within the same country calling code.\n\n if (fromCountryCallingCode === countryCallingCode) {\n var formattedNumber = formatNationalNumber(nationalNumber, carrierCode, 'NATIONAL', metadata); // For NANPA regions, return the national format for these regions\n // but prefix it with the country calling code.\n\n if (countryCallingCode === '1') {\n return countryCallingCode + ' ' + formattedNumber;\n } // If regions share a country calling code, the country calling code need\n // not be dialled. This also applies when dialling within a region, so this\n // if clause covers both these cases. Technically this is the case for\n // dialling from La Reunion to other overseas departments of France (French\n // Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover\n // this edge case for now and for those cases return the version including\n // country calling code. Details here:\n // http://www.petitfute.com/voyage/225-info-pratiques-reunion\n //\n\n\n return formattedNumber;\n }\n\n var iddPrefix = getIddPrefix(fromCountry, undefined, metadata.metadata);\n\n if (iddPrefix) {\n return \"\".concat(iddPrefix, \" \").concat(countryCallingCode, \" \").concat(formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata));\n }\n}\n//# sourceMappingURL=format_.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport Metadata from './metadata.js';\nimport isPossibleNumber from './isPossibleNumber_.js';\nimport isValidNumber from './validate_.js';\nimport isValidNumberForRegion from './isValidNumberForRegion_.js';\nimport getNumberType from './helpers/getNumberType.js';\nimport formatNumber from './format_.js';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\n\nvar PhoneNumber = /*#__PURE__*/function () {\n function PhoneNumber(countryCallingCode, nationalNumber, metadata) {\n _classCallCheck(this, PhoneNumber);\n\n if (!countryCallingCode) {\n throw new TypeError('`country` or `countryCallingCode` not passed');\n }\n\n if (!nationalNumber) {\n throw new TypeError('`nationalNumber` not passed');\n }\n\n if (!metadata) {\n throw new TypeError('`metadata` not passed');\n }\n\n var _metadata = new Metadata(metadata); // If country code is passed then derive `countryCallingCode` from it.\n // Also store the country code as `.country`.\n\n\n if (isCountryCode(countryCallingCode)) {\n this.country = countryCallingCode;\n\n _metadata.country(countryCallingCode);\n\n countryCallingCode = _metadata.countryCallingCode();\n } else {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (_metadata.isNonGeographicCallingCode(countryCallingCode)) {\n this.country = '001';\n }\n }\n }\n\n this.countryCallingCode = countryCallingCode;\n this.nationalNumber = nationalNumber;\n this.number = '+' + this.countryCallingCode + this.nationalNumber;\n this.metadata = metadata;\n }\n\n _createClass(PhoneNumber, [{\n key: \"setExt\",\n value: function setExt(ext) {\n this.ext = ext;\n }\n }, {\n key: \"isPossible\",\n value: function isPossible() {\n return isPossibleNumber(this, {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"isValid\",\n value: function isValid() {\n return isValidNumber(this, {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"isNonGeographic\",\n value: function isNonGeographic() {\n var metadata = new Metadata(this.metadata);\n return metadata.isNonGeographicCallingCode(this.countryCallingCode);\n }\n }, {\n key: \"isEqual\",\n value: function isEqual(phoneNumber) {\n return this.number === phoneNumber.number && this.ext === phoneNumber.ext;\n } // // Is just an alias for `this.isValid() && this.country === country`.\n // // https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\n // isValidForRegion(country) {\n // \treturn isValidNumberForRegion(this, country, { v2: true }, this.metadata)\n // }\n\n }, {\n key: \"getType\",\n value: function getType() {\n return getNumberType(this, {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"format\",\n value: function format(_format, options) {\n return formatNumber(this, _format, options ? _objectSpread(_objectSpread({}, options), {}, {\n v2: true\n }) : {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"formatNational\",\n value: function formatNational(options) {\n return this.format('NATIONAL', options);\n }\n }, {\n key: \"formatInternational\",\n value: function formatInternational(options) {\n return this.format('INTERNATIONAL', options);\n }\n }, {\n key: \"getURI\",\n value: function getURI(options) {\n return this.format('RFC3966', options);\n }\n }]);\n\n return PhoneNumber;\n}();\n\nexport { PhoneNumber as default };\n\nvar isCountryCode = function isCountryCode(value) {\n return /^[A-Z]{2}$/.test(value);\n};\n//# sourceMappingURL=PhoneNumber.js.map","import Metadata from '../metadata.js';\nimport { VALID_DIGITS } from '../constants.js';\nvar CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])');\nexport default function stripIddPrefix(number, country, callingCode, metadata) {\n if (!country) {\n return;\n } // Check if the number is IDD-prefixed.\n\n\n var countryMetadata = new Metadata(metadata);\n countryMetadata.selectNumberingPlan(country, callingCode);\n var IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix());\n\n if (number.search(IDDPrefixPattern) !== 0) {\n return;\n } // Strip IDD prefix.\n\n\n number = number.slice(number.match(IDDPrefixPattern)[0].length); // If there're any digits after an IDD prefix,\n // then those digits are a country calling code.\n // Since no country code starts with a `0`,\n // the code below validates that the next digit (if present) is not `0`.\n\n var matchedGroups = number.match(CAPTURING_DIGIT_PATTERN);\n\n if (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) {\n if (matchedGroups[1] === '0') {\n return;\n }\n }\n\n return number;\n}\n//# sourceMappingURL=stripIddPrefix.js.map","/**\r\n * Strips any national prefix (such as 0, 1) present in a\r\n * (possibly incomplete) number provided.\r\n * \"Carrier codes\" are only used in Colombia and Brazil,\r\n * and only when dialing within those countries from a mobile phone to a fixed line number.\r\n * Sometimes it won't actually strip national prefix\r\n * and will instead prepend some digits to the `number`:\r\n * for example, when number `2345678` is passed with `VI` country selected,\r\n * it will return `{ number: \"3402345678\" }`, because `340` area code is prepended.\r\n * @param {string} number — National number digits.\r\n * @param {object} metadata — Metadata with country selected.\r\n * @return {object} `{ nationalNumber: string, nationalPrefix: string? carrierCode: string? }`. Even if a national prefix was extracted, it's not necessarily present in the returned object, so don't rely on its presence in the returned object in order to find out whether a national prefix has been extracted or not.\r\n */\nexport default function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) {\n if (number && metadata.numberingPlan.nationalPrefixForParsing()) {\n // See METADATA.md for the description of\n // `national_prefix_for_parsing` and `national_prefix_transform_rule`.\n // Attempt to parse the first digits as a national prefix.\n var prefixPattern = new RegExp('^(?:' + metadata.numberingPlan.nationalPrefixForParsing() + ')');\n var prefixMatch = prefixPattern.exec(number);\n\n if (prefixMatch) {\n var nationalNumber;\n var carrierCode; // https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\n // If a `national_prefix_for_parsing` has any \"capturing groups\"\n // then it means that the national (significant) number is equal to\n // those \"capturing groups\" transformed via `national_prefix_transform_rule`,\n // and nothing could be said about the actual national prefix:\n // what is it and was it even there.\n // If a `national_prefix_for_parsing` doesn't have any \"capturing groups\",\n // then everything it matches is a national prefix.\n // To determine whether `national_prefix_for_parsing` matched any\n // \"capturing groups\", the value of the result of calling `.exec()`\n // is looked at, and if it has non-undefined values where there're\n // \"capturing groups\" in the regular expression, then it means\n // that \"capturing groups\" have been matched.\n // It's not possible to tell whether there'll be any \"capturing gropus\"\n // before the matching process, because a `national_prefix_for_parsing`\n // could exhibit both behaviors.\n\n var capturedGroupsCount = prefixMatch.length - 1;\n var hasCapturedGroups = capturedGroupsCount > 0 && prefixMatch[capturedGroupsCount];\n\n if (metadata.nationalPrefixTransformRule() && hasCapturedGroups) {\n nationalNumber = number.replace(prefixPattern, metadata.nationalPrefixTransformRule()); // If there's more than one captured group,\n // then carrier code is the second one.\n\n if (capturedGroupsCount > 1) {\n carrierCode = prefixMatch[1];\n }\n } // If there're no \"capturing groups\",\n // or if there're \"capturing groups\" but no\n // `national_prefix_transform_rule`,\n // then just strip the national prefix from the number,\n // and possibly a carrier code.\n // Seems like there could be more.\n else {\n // `prefixBeforeNationalNumber` is the whole substring matched by\n // the `national_prefix_for_parsing` regular expression.\n // There seem to be no guarantees that it's just a national prefix.\n // For example, if there's a carrier code, it's gonna be a\n // part of `prefixBeforeNationalNumber` too.\n var prefixBeforeNationalNumber = prefixMatch[0];\n nationalNumber = number.slice(prefixBeforeNationalNumber.length); // If there's at least one captured group,\n // then carrier code is the first one.\n\n if (hasCapturedGroups) {\n carrierCode = prefixMatch[1];\n }\n } // Tries to guess whether a national prefix was present in the input.\n // This is not something copy-pasted from Google's library:\n // they don't seem to have an equivalent for that.\n // So this isn't an \"officially approved\" way of doing something like that.\n // But since there seems no other existing method, this library uses it.\n\n\n var nationalPrefix;\n\n if (hasCapturedGroups) {\n var possiblePositionOfTheFirstCapturedGroup = number.indexOf(prefixMatch[1]);\n var possibleNationalPrefix = number.slice(0, possiblePositionOfTheFirstCapturedGroup); // Example: an Argentinian (AR) phone number `0111523456789`.\n // `prefixMatch[0]` is `01115`, and `$1` is `11`,\n // and the rest of the phone number is `23456789`.\n // The national number is transformed via `9$1` to `91123456789`.\n // National prefix `0` is detected being present at the start.\n // if (possibleNationalPrefix.indexOf(metadata.numberingPlan.nationalPrefix()) === 0) {\n\n if (possibleNationalPrefix === metadata.numberingPlan.nationalPrefix()) {\n nationalPrefix = metadata.numberingPlan.nationalPrefix();\n }\n } else {\n nationalPrefix = prefixMatch[0];\n }\n\n return {\n nationalNumber: nationalNumber,\n nationalPrefix: nationalPrefix,\n carrierCode: carrierCode\n };\n }\n }\n\n return {\n nationalNumber: number\n };\n}\n//# sourceMappingURL=extractNationalNumberFromPossiblyIncompleteNumber.js.map","import extractNationalNumberFromPossiblyIncompleteNumber from './extractNationalNumberFromPossiblyIncompleteNumber.js';\nimport matchesEntirely from './matchesEntirely.js';\nimport checkNumberLength from './checkNumberLength.js';\n/**\r\n * Strips national prefix and carrier code from a complete phone number.\r\n * The difference from the non-\"FromCompleteNumber\" function is that\r\n * it won't extract national prefix if the resultant number is too short\r\n * to be a complete number for the selected phone numbering plan.\r\n * @param {string} number — Complete phone number digits.\r\n * @param {Metadata} metadata — Metadata with a phone numbering plan selected.\r\n * @return {object} `{ nationalNumber: string, carrierCode: string? }`.\r\n */\n\nexport default function extractNationalNumber(number, metadata) {\n // Parsing national prefixes and carrier codes\n // is only required for local phone numbers\n // but some people don't understand that\n // and sometimes write international phone numbers\n // with national prefixes (or maybe even carrier codes).\n // http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html\n // Google's original library forgives such mistakes\n // and so does this library, because it has been requested:\n // https://github.com/catamphetamine/libphonenumber-js/issues/127\n var _extractNationalNumbe = extractNationalNumberFromPossiblyIncompleteNumber(number, metadata),\n carrierCode = _extractNationalNumbe.carrierCode,\n nationalNumber = _extractNationalNumbe.nationalNumber;\n\n if (nationalNumber !== number) {\n if (!shouldHaveExtractedNationalPrefix(number, nationalNumber, metadata)) {\n // Don't strip the national prefix.\n return {\n nationalNumber: number\n };\n } // Check the national (significant) number length after extracting national prefix and carrier code.\n // Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature.\n\n\n if (metadata.possibleLengths()) {\n // The number remaining after stripping the national prefix and carrier code\n // should be long enough to have a possible length for the country.\n // Otherwise, don't strip the national prefix and carrier code,\n // since the original number could be a valid number.\n // This check has been copy-pasted \"as is\" from Google's original library:\n // https://github.com/google/libphonenumber/blob/876268eb1ad6cdc1b7b5bef17fc5e43052702d57/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3236-L3250\n // It doesn't check for the \"possibility\" of the original `number`.\n // I guess it's fine not checking that one. It works as is anyway.\n if (!isPossibleIncompleteNationalNumber(nationalNumber, metadata)) {\n // Don't strip the national prefix.\n return {\n nationalNumber: number\n };\n }\n }\n }\n\n return {\n nationalNumber: nationalNumber,\n carrierCode: carrierCode\n };\n} // In some countries, the same digit could be a national prefix\n// or a leading digit of a valid phone number.\n// For example, in Russia, national prefix is `8`,\n// and also `800 555 35 35` is a valid number\n// in which `8` is not a national prefix, but the first digit\n// of a national (significant) number.\n// Same's with Belarus:\n// `82004910060` is a valid national (significant) number,\n// but `2004910060` is not.\n// To support such cases (to prevent the code from always stripping\n// national prefix), a condition is imposed: a national prefix\n// is not extracted when the original number is \"viable\" and the\n// resultant number is not, a \"viable\" national number being the one\n// that matches `national_number_pattern`.\n\nfunction shouldHaveExtractedNationalPrefix(nationalNumberBefore, nationalNumberAfter, metadata) {\n // The equivalent in Google's code is:\n // https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L2969-L3004\n if (matchesEntirely(nationalNumberBefore, metadata.nationalNumberPattern()) && !matchesEntirely(nationalNumberAfter, metadata.nationalNumberPattern())) {\n return false;\n } // This \"is possible\" national number (length) check has been commented out\n // because it's superceded by the (effectively) same check done in the\n // `extractNationalNumber()` function after it calls `shouldHaveExtractedNationalPrefix()`.\n // In other words, why run the same check twice if it could only be run once.\n // // Check the national (significant) number length after extracting national prefix and carrier code.\n // // Fixes a minor \"weird behavior\" bug: https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/57\n // // (Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature).\n // if (metadata.possibleLengths()) {\n // \tif (isPossibleIncompleteNationalNumber(nationalNumberBefore, metadata) &&\n // \t\t!isPossibleIncompleteNationalNumber(nationalNumberAfter, metadata)) {\n // \t\treturn false\n // \t}\n // }\n\n\n return true;\n}\n\nfunction isPossibleIncompleteNationalNumber(nationalNumber, metadata) {\n switch (checkNumberLength(nationalNumber, metadata)) {\n case 'TOO_SHORT':\n case 'INVALID_LENGTH':\n // This library ignores \"local-only\" phone numbers (for simplicity).\n // See the readme for more info on what are \"local-only\" phone numbers.\n // case 'IS_POSSIBLE_LOCAL_ONLY':\n return false;\n\n default:\n return true;\n }\n}\n//# sourceMappingURL=extractNationalNumber.js.map","import Metadata from '../metadata.js';\nimport matchesEntirely from './matchesEntirely.js';\nimport extractNationalNumber from './extractNationalNumber.js';\nimport checkNumberLength from './checkNumberLength.js';\nimport getCountryCallingCode from '../getCountryCallingCode.js';\n/**\r\n * Sometimes some people incorrectly input international phone numbers\r\n * without the leading `+`. This function corrects such input.\r\n * @param {string} number — Phone number digits.\r\n * @param {string?} country\r\n * @param {string?} callingCode\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`.\r\n */\n\nexport default function extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, callingCode, metadata) {\n var countryCallingCode = country ? getCountryCallingCode(country, metadata) : callingCode;\n\n if (number.indexOf(countryCallingCode) === 0) {\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(country, callingCode);\n var possibleShorterNumber = number.slice(countryCallingCode.length);\n\n var _extractNationalNumbe = extractNationalNumber(possibleShorterNumber, metadata),\n possibleShorterNationalNumber = _extractNationalNumbe.nationalNumber;\n\n var _extractNationalNumbe2 = extractNationalNumber(number, metadata),\n nationalNumber = _extractNationalNumbe2.nationalNumber; // If the number was not valid before but is valid now,\n // or if it was too long before, we consider the number\n // with the country calling code stripped to be a better result\n // and keep that instead.\n // For example, in Germany (+49), `49` is a valid area code,\n // so if a number starts with `49`, it could be both a valid\n // national German number or an international number without\n // a leading `+`.\n\n\n if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) && matchesEntirely(possibleShorterNationalNumber, metadata.nationalNumberPattern()) || checkNumberLength(nationalNumber, metadata) === 'TOO_LONG') {\n return {\n countryCallingCode: countryCallingCode,\n number: possibleShorterNumber\n };\n }\n }\n\n return {\n number: number\n };\n}\n//# sourceMappingURL=extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js.map","import stripIddPrefix from './stripIddPrefix.js';\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js';\nimport Metadata from '../metadata.js';\nimport { MAX_LENGTH_COUNTRY_CODE } from '../constants.js';\n/**\r\n * Converts a phone number digits (possibly with a `+`)\r\n * into a calling code and the rest phone number digits.\r\n * The \"rest phone number digits\" could include\r\n * a national prefix, carrier code, and national\r\n * (significant) number.\r\n * @param {string} number — Phone number digits (possibly with a `+`).\r\n * @param {string} [country] — Default country.\r\n * @param {string} [callingCode] — Default calling code (some phone numbering plans are non-geographic).\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`\r\n * @example\r\n * // Returns `{ countryCallingCode: \"1\", number: \"2133734253\" }`.\r\n * extractCountryCallingCode('2133734253', 'US', null, metadata)\r\n * extractCountryCallingCode('2133734253', null, '1', metadata)\r\n * extractCountryCallingCode('+12133734253', null, null, metadata)\r\n * extractCountryCallingCode('+12133734253', 'RU', null, metadata)\r\n */\n\nexport default function extractCountryCallingCode(number, country, callingCode, metadata) {\n if (!number) {\n return {};\n } // If this is not an international phone number,\n // then either extract an \"IDD\" prefix, or extract a\n // country calling code from a number by autocorrecting it\n // by prepending a leading `+` in cases when it starts\n // with the country calling code.\n // https://wikitravel.org/en/International_dialling_prefix\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n\n\n if (number[0] !== '+') {\n // Convert an \"out-of-country\" dialing phone number\n // to a proper international phone number.\n var numberWithoutIDD = stripIddPrefix(number, country, callingCode, metadata); // If an IDD prefix was stripped then\n // convert the number to international one\n // for subsequent parsing.\n\n if (numberWithoutIDD && numberWithoutIDD !== number) {\n number = '+' + numberWithoutIDD;\n } else {\n // Check to see if the number starts with the country calling code\n // for the default country. If so, we remove the country calling code,\n // and do some checks on the validity of the number before and after.\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n if (country || callingCode) {\n var _extractCountryCallin = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, callingCode, metadata),\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n shorterNumber = _extractCountryCallin.number;\n\n if (countryCallingCode) {\n return {\n countryCallingCode: countryCallingCode,\n number: shorterNumber\n };\n }\n }\n\n return {\n number: number\n };\n }\n } // Fast abortion: country codes do not begin with a '0'\n\n\n if (number[1] === '0') {\n return {};\n }\n\n metadata = new Metadata(metadata); // The thing with country phone codes\n // is that they are orthogonal to each other\n // i.e. there's no such country phone code A\n // for which country phone code B exists\n // where B starts with A.\n // Therefore, while scanning digits,\n // if a valid country code is found,\n // that means that it is the country code.\n //\n\n var i = 2;\n\n while (i - 1 <= MAX_LENGTH_COUNTRY_CODE && i <= number.length) {\n var _countryCallingCode = number.slice(1, i);\n\n if (metadata.hasCallingCode(_countryCallingCode)) {\n metadata.selectNumberingPlan(_countryCallingCode);\n return {\n countryCallingCode: _countryCallingCode,\n number: number.slice(i)\n };\n }\n\n i++;\n }\n\n return {};\n}\n//# sourceMappingURL=extractCountryCallingCode.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport Metadata from '../metadata.js';\nimport getNumberType from './getNumberType.js';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\nexport default function getCountryByCallingCode(callingCode, nationalPhoneNumber, metadata) {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(callingCode)) {\n return '001';\n }\n } // Is always non-empty, because `callingCode` is always valid\n\n\n var possibleCountries = metadata.getCountryCodesForCallingCode(callingCode);\n\n if (!possibleCountries) {\n return;\n } // If there's just one country corresponding to the country code,\n // then just return it, without further phone number digits validation.\n\n\n if (possibleCountries.length === 1) {\n return possibleCountries[0];\n }\n\n return selectCountryFromList(possibleCountries, nationalPhoneNumber, metadata.metadata);\n}\n\nfunction selectCountryFromList(possibleCountries, nationalPhoneNumber, metadata) {\n // Re-create `metadata` because it will be selecting a `country`.\n metadata = new Metadata(metadata);\n\n for (var _iterator = _createForOfIteratorHelperLoose(possibleCountries), _step; !(_step = _iterator()).done;) {\n var country = _step.value;\n metadata.country(country); // Leading digits check would be the simplest and fastest one.\n // Leading digits patterns are only defined for about 20% of all countries.\n // https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits\n // Matching \"leading digits\" is a sufficient but not necessary condition.\n\n if (metadata.leadingDigits()) {\n if (nationalPhoneNumber && nationalPhoneNumber.search(metadata.leadingDigits()) === 0) {\n return country;\n }\n } // Else perform full validation with all of those\n // fixed-line/mobile/etc regular expressions.\n else if (getNumberType({\n phone: nationalPhoneNumber,\n country: country\n }, undefined, metadata.metadata)) {\n return country;\n }\n }\n}\n//# sourceMappingURL=getCountryByCallingCode.js.map","// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\nimport { VALID_DIGITS, PLUS_CHARS, MIN_LENGTH_FOR_NSN, MAX_LENGTH_FOR_NSN } from './constants.js';\nimport ParseError from './ParseError.js';\nimport Metadata from './metadata.js';\nimport isViablePhoneNumber, { isViablePhoneNumberStart } from './helpers/isViablePhoneNumber.js';\nimport extractExtension from './helpers/extension/extractExtension.js';\nimport parseIncompletePhoneNumber from './parseIncompletePhoneNumber.js';\nimport getCountryCallingCode from './getCountryCallingCode.js';\nimport { isPossibleNumber } from './isPossibleNumber_.js';\nimport { parseRFC3966 } from './helpers/RFC3966.js';\nimport PhoneNumber from './PhoneNumber.js';\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport extractCountryCallingCode from './helpers/extractCountryCallingCode.js';\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js';\nimport extractNationalNumber from './helpers/extractNationalNumber.js';\nimport stripIddPrefix from './helpers/stripIddPrefix.js';\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js'; // We don't allow input strings for parsing to be longer than 250 chars.\n// This prevents malicious input from consuming CPU.\n\nvar MAX_INPUT_STRING_LENGTH = 250; // This consists of the plus symbol, digits, and arabic-indic digits.\n\nvar PHONE_NUMBER_START_PATTERN = new RegExp('[' + PLUS_CHARS + VALID_DIGITS + ']'); // Regular expression of trailing characters that we want to remove.\n// A trailing `#` is sometimes used when writing phone numbers with extensions in US.\n// Example: \"+1 (645) 123 1234-910#\" number has extension \"910\".\n\nvar AFTER_PHONE_NUMBER_END_PATTERN = new RegExp('[^' + VALID_DIGITS + '#' + ']+$');\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false; // Examples:\n//\n// ```js\n// parse('8 (800) 555-35-35', 'RU')\n// parse('8 (800) 555-35-35', 'RU', metadata)\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } })\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata)\n// parse('+7 800 555 35 35')\n// parse('+7 800 555 35 35', metadata)\n// ```\n//\n\nexport default function parse(text, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {};\n metadata = new Metadata(metadata); // Validate `defaultCountry`.\n\n if (options.defaultCountry && !metadata.hasCountry(options.defaultCountry)) {\n if (options.v2) {\n throw new ParseError('INVALID_COUNTRY');\n }\n\n throw new Error(\"Unknown country: \".concat(options.defaultCountry));\n } // Parse the phone number.\n\n\n var _parseInput = parseInput(text, options.v2, options.extract),\n formattedPhoneNumber = _parseInput.number,\n ext = _parseInput.ext,\n error = _parseInput.error; // If the phone number is not viable then return nothing.\n\n\n if (!formattedPhoneNumber) {\n if (options.v2) {\n if (error === 'TOO_SHORT') {\n throw new ParseError('TOO_SHORT');\n }\n\n throw new ParseError('NOT_A_NUMBER');\n }\n\n return {};\n }\n\n var _parsePhoneNumber = parsePhoneNumber(formattedPhoneNumber, options.defaultCountry, options.defaultCallingCode, metadata),\n country = _parsePhoneNumber.country,\n nationalNumber = _parsePhoneNumber.nationalNumber,\n countryCallingCode = _parsePhoneNumber.countryCallingCode,\n carrierCode = _parsePhoneNumber.carrierCode;\n\n if (!metadata.hasSelectedNumberingPlan()) {\n if (options.v2) {\n throw new ParseError('INVALID_COUNTRY');\n }\n\n return {};\n } // Validate national (significant) number length.\n\n\n if (!nationalNumber || nationalNumber.length < MIN_LENGTH_FOR_NSN) {\n // Won't throw here because the regexp already demands length > 1.\n\n /* istanbul ignore if */\n if (options.v2) {\n throw new ParseError('TOO_SHORT');\n } // Google's demo just throws an error in this case.\n\n\n return {};\n } // Validate national (significant) number length.\n //\n // A sidenote:\n //\n // They say that sometimes national (significant) numbers\n // can be longer than `MAX_LENGTH_FOR_NSN` (e.g. in Germany).\n // https://github.com/googlei18n/libphonenumber/blob/7e1748645552da39c4e1ba731e47969d97bdb539/resources/phonenumber.proto#L36\n // Such numbers will just be discarded.\n //\n\n\n if (nationalNumber.length > MAX_LENGTH_FOR_NSN) {\n if (options.v2) {\n throw new ParseError('TOO_LONG');\n } // Google's demo just throws an error in this case.\n\n\n return {};\n }\n\n if (options.v2) {\n var phoneNumber = new PhoneNumber(countryCallingCode, nationalNumber, metadata.metadata);\n\n if (country) {\n phoneNumber.country = country;\n }\n\n if (carrierCode) {\n phoneNumber.carrierCode = carrierCode;\n }\n\n if (ext) {\n phoneNumber.ext = ext;\n }\n\n return phoneNumber;\n } // Check if national phone number pattern matches the number.\n // National number pattern is different for each country,\n // even for those ones which are part of the \"NANPA\" group.\n\n\n var valid = (options.extended ? metadata.hasSelectedNumberingPlan() : country) ? matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) : false;\n\n if (!options.extended) {\n return valid ? result(country, nationalNumber, ext) : {};\n } // isInternational: countryCallingCode !== undefined\n\n\n return {\n country: country,\n countryCallingCode: countryCallingCode,\n carrierCode: carrierCode,\n valid: valid,\n possible: valid ? true : options.extended === true && metadata.possibleLengths() && isPossibleNumber(nationalNumber, metadata) ? true : false,\n phone: nationalNumber,\n ext: ext\n };\n}\n/**\r\n * Extracts a formatted phone number from text.\r\n * Doesn't guarantee that the extracted phone number\r\n * is a valid phone number (for example, doesn't validate its length).\r\n * @param {string} text\r\n * @param {boolean} [extract] — If `false`, then will parse the entire `text` as a phone number.\r\n * @param {boolean} [throwOnError] — By default, it won't throw if the text is too long.\r\n * @return {string}\r\n * @example\r\n * // Returns \"(213) 373-4253\".\r\n * extractFormattedPhoneNumber(\"Call (213) 373-4253 for assistance.\")\r\n */\n\nfunction extractFormattedPhoneNumber(text, extract, throwOnError) {\n if (!text) {\n return;\n }\n\n if (text.length > MAX_INPUT_STRING_LENGTH) {\n if (throwOnError) {\n throw new ParseError('TOO_LONG');\n }\n\n return;\n }\n\n if (extract === false) {\n return text;\n } // Attempt to extract a possible number from the string passed in\n\n\n var startsAt = text.search(PHONE_NUMBER_START_PATTERN);\n\n if (startsAt < 0) {\n return;\n }\n\n return text // Trim everything to the left of the phone number\n .slice(startsAt) // Remove trailing non-numerical characters\n .replace(AFTER_PHONE_NUMBER_END_PATTERN, '');\n}\n/**\r\n * @param {string} text - Input.\r\n * @param {boolean} v2 - Legacy API functions don't pass `v2: true` flag.\r\n * @param {boolean} [extract] - Whether to extract a phone number from `text`, or attempt to parse the entire text as a phone number.\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\n\n\nfunction parseInput(text, v2, extract) {\n // Parse RFC 3966 phone number URI.\n if (text && text.indexOf('tel:') === 0) {\n return parseRFC3966(text);\n }\n\n var number = extractFormattedPhoneNumber(text, extract, v2); // If the phone number is not viable, then abort.\n\n if (!number) {\n return {};\n }\n\n if (!isViablePhoneNumber(number)) {\n if (isViablePhoneNumberStart(number)) {\n return {\n error: 'TOO_SHORT'\n };\n }\n\n return {};\n } // Attempt to parse extension first, since it doesn't require region-specific\n // data and we want to have the non-normalised number here.\n\n\n var withExtensionStripped = extractExtension(number);\n\n if (withExtensionStripped.ext) {\n return withExtensionStripped;\n }\n\n return {\n number: number\n };\n}\n/**\r\n * Creates `parse()` result object.\r\n */\n\n\nfunction result(country, nationalNumber, ext) {\n var result = {\n country: country,\n phone: nationalNumber\n };\n\n if (ext) {\n result.ext = ext;\n }\n\n return result;\n}\n/**\r\n * Parses a viable phone number.\r\n * @param {string} formattedPhoneNumber — Example: \"(213) 373-4253\".\r\n * @param {string} [defaultCountry]\r\n * @param {string} [defaultCallingCode]\r\n * @param {Metadata} metadata\r\n * @return {object} Returns `{ country: string?, countryCallingCode: string?, nationalNumber: string? }`.\r\n */\n\n\nfunction parsePhoneNumber(formattedPhoneNumber, defaultCountry, defaultCallingCode, metadata) {\n // Extract calling code from phone number.\n var _extractCountryCallin = extractCountryCallingCode(parseIncompletePhoneNumber(formattedPhoneNumber), defaultCountry, defaultCallingCode, metadata.metadata),\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n number = _extractCountryCallin.number; // Choose a country by `countryCallingCode`.\n\n\n var country;\n\n if (countryCallingCode) {\n metadata.selectNumberingPlan(countryCallingCode);\n } // If `formattedPhoneNumber` is in \"national\" format\n // then `number` is defined and `countryCallingCode` isn't.\n else if (number && (defaultCountry || defaultCallingCode)) {\n metadata.selectNumberingPlan(defaultCountry, defaultCallingCode);\n\n if (defaultCountry) {\n country = defaultCountry;\n } else {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(defaultCallingCode)) {\n country = '001';\n }\n }\n }\n\n countryCallingCode = defaultCallingCode || getCountryCallingCode(defaultCountry, metadata.metadata);\n } else return {};\n\n if (!number) {\n return {\n countryCallingCode: countryCallingCode\n };\n }\n\n var _extractNationalNumbe = extractNationalNumber(parseIncompletePhoneNumber(number), metadata),\n nationalNumber = _extractNationalNumbe.nationalNumber,\n carrierCode = _extractNationalNumbe.carrierCode; // Sometimes there are several countries\n // corresponding to the same country phone code\n // (e.g. NANPA countries all having `1` country phone code).\n // Therefore, to reliably determine the exact country,\n // national (significant) number should have been parsed first.\n //\n // When `metadata.json` is generated, all \"ambiguous\" country phone codes\n // get their countries populated with the full set of\n // \"phone number type\" regular expressions.\n //\n\n\n var exactCountry = getCountryByCallingCode(countryCallingCode, nationalNumber, metadata);\n\n if (exactCountry) {\n country = exactCountry;\n /* istanbul ignore if */\n\n if (exactCountry === '001') {// Can't happen with `USE_NON_GEOGRAPHIC_COUNTRY_CODE` being `false`.\n // If `USE_NON_GEOGRAPHIC_COUNTRY_CODE` is set to `true` for some reason,\n // then remove the \"istanbul ignore if\".\n } else {\n metadata.country(country);\n }\n }\n\n return {\n country: country,\n countryCallingCode: countryCallingCode,\n nationalNumber: nationalNumber,\n carrierCode: carrierCode\n };\n}\n//# sourceMappingURL=parse_.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport parseNumber from './parse_.js';\nexport default function parsePhoneNumber(text, options, metadata) {\n return parseNumber(text, _objectSpread(_objectSpread({}, options), {}, {\n v2: true\n }), metadata);\n}\n//# sourceMappingURL=parsePhoneNumber_.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport parsePhoneNumber_ from './parsePhoneNumber_.js';\nexport default function parsePhoneNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return parsePhoneNumber_(text, options, metadata);\n}\nexport function normalizeArguments(args) {\n var _Array$prototype$slic = Array.prototype.slice.call(args),\n _Array$prototype$slic2 = _slicedToArray(_Array$prototype$slic, 4),\n arg_1 = _Array$prototype$slic2[0],\n arg_2 = _Array$prototype$slic2[1],\n arg_3 = _Array$prototype$slic2[2],\n arg_4 = _Array$prototype$slic2[3];\n\n var text;\n var options;\n var metadata; // If the phone number is passed as a string.\n // `parsePhoneNumber('88005553535', ...)`.\n\n if (typeof arg_1 === 'string') {\n text = arg_1;\n } else throw new TypeError('A text for parsing must be a string.'); // If \"default country\" argument is being passed then move it to `options`.\n // `parsePhoneNumber('88005553535', 'RU', [options], metadata)`.\n\n\n if (!arg_2 || typeof arg_2 === 'string') {\n if (arg_4) {\n options = arg_3;\n metadata = arg_4;\n } else {\n options = undefined;\n metadata = arg_3;\n }\n\n if (arg_2) {\n options = _objectSpread({\n defaultCountry: arg_2\n }, options);\n }\n } // `defaultCountry` is not passed.\n // Example: `parsePhoneNumber('+78005553535', [options], metadata)`.\n else if (isObject(arg_2)) {\n if (arg_3) {\n options = arg_2;\n metadata = arg_3;\n } else {\n metadata = arg_2;\n }\n } else throw new Error(\"Invalid second argument: \".concat(arg_2));\n\n return {\n text: text,\n options: options,\n metadata: metadata\n };\n} // Otherwise istanbul would show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\nvar isObject = function isObject(_) {\n return _typeof(_) === 'object';\n};\n//# sourceMappingURL=parsePhoneNumber.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport parsePhoneNumber from './parsePhoneNumber_.js';\nimport ParseError from './ParseError.js';\nimport { isSupportedCountry } from './metadata.js';\nexport default function parsePhoneNumberFromString(text, options, metadata) {\n // Validate `defaultCountry`.\n if (options && options.defaultCountry && !isSupportedCountry(options.defaultCountry, metadata)) {\n options = _objectSpread(_objectSpread({}, options), {}, {\n defaultCountry: undefined\n });\n } // Parse phone number.\n\n\n try {\n return parsePhoneNumber(text, options, metadata);\n } catch (error) {\n /* istanbul ignore else */\n if (error instanceof ParseError) {//\n } else {\n throw error;\n }\n }\n}\n//# sourceMappingURL=parsePhoneNumberFromString_.js.map","import { normalizeArguments } from './parsePhoneNumber.js';\nimport parsePhoneNumberFromString_ from './parsePhoneNumberFromString_.js';\nexport default function parsePhoneNumberFromString() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return parsePhoneNumberFromString_(text, options, metadata);\n}\n//# sourceMappingURL=parsePhoneNumberFromString.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { normalizeArguments } from './parsePhoneNumber.js';\nimport parsePhoneNumberFromString from './parsePhoneNumberFromString_.js';\nexport default function isValidPhoneNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n options = _objectSpread(_objectSpread({}, options), {}, {\n extract: false\n });\n var phoneNumber = parsePhoneNumberFromString(text, options, metadata);\n return phoneNumber && phoneNumber.isValid() || false;\n}\n//# sourceMappingURL=isValidPhoneNumber.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { normalizeArguments } from './parsePhoneNumber.js';\nimport parsePhoneNumberFromString from './parsePhoneNumberFromString_.js';\nexport default function isPossiblePhoneNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n options = _objectSpread(_objectSpread({}, options), {}, {\n extract: false\n });\n var phoneNumber = parsePhoneNumberFromString(text, options, metadata);\n return phoneNumber && phoneNumber.isPossible() || false;\n}\n//# sourceMappingURL=isPossiblePhoneNumber.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { normalizeArguments } from './parsePhoneNumber.js';\nimport parsePhoneNumber from './parsePhoneNumber_.js';\nimport ParseError from './ParseError.js';\nimport Metadata from './metadata.js';\nimport checkNumberLength from './helpers/checkNumberLength.js';\nexport default function validatePhoneNumberLength() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n options = _objectSpread(_objectSpread({}, options), {}, {\n extract: false\n }); // Parse phone number.\n\n try {\n var phoneNumber = parsePhoneNumber(text, options, metadata);\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(phoneNumber.countryCallingCode);\n var result = checkNumberLength(phoneNumber.nationalNumber, metadata);\n\n if (result !== 'IS_POSSIBLE') {\n return result;\n }\n } catch (error) {\n /* istanbul ignore else */\n if (error instanceof ParseError) {\n return error.message;\n } else {\n throw error;\n }\n }\n}\n//# sourceMappingURL=validatePhoneNumberLength.js.map","function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// https://medium.com/dsinjs/implementing-lru-cache-in-javascript-94ba6755cda9\nvar Node = /*#__PURE__*/_createClass(function Node(key, value) {\n var next = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var prev = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n _classCallCheck(this, Node);\n\n this.key = key;\n this.value = value;\n this.next = next;\n this.prev = prev;\n});\n\nvar LRUCache = /*#__PURE__*/function () {\n //set default limit of 10 if limit is not passed.\n function LRUCache() {\n var limit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;\n\n _classCallCheck(this, LRUCache);\n\n this.size = 0;\n this.limit = limit;\n this.head = null;\n this.tail = null;\n this.cache = {};\n } // Write Node to head of LinkedList\n // update cache with Node key and Node reference\n\n\n _createClass(LRUCache, [{\n key: \"put\",\n value: function put(key, value) {\n this.ensureLimit();\n\n if (!this.head) {\n this.head = this.tail = new Node(key, value);\n } else {\n var node = new Node(key, value, this.head);\n this.head.prev = node;\n this.head = node;\n } //Update the cache map\n\n\n this.cache[key] = this.head;\n this.size++;\n } // Read from cache map and make that node as new Head of LinkedList\n\n }, {\n key: \"get\",\n value: function get(key) {\n if (this.cache[key]) {\n var value = this.cache[key].value; // node removed from it's position and cache\n\n this.remove(key); // write node again to the head of LinkedList to make it most recently used\n\n this.put(key, value);\n return value;\n }\n\n console.log(\"Item not available in cache for key \".concat(key));\n }\n }, {\n key: \"ensureLimit\",\n value: function ensureLimit() {\n if (this.size === this.limit) {\n this.remove(this.tail.key);\n }\n }\n }, {\n key: \"remove\",\n value: function remove(key) {\n var node = this.cache[key];\n\n if (node.prev !== null) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n\n if (node.next !== null) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n\n delete this.cache[key];\n this.size--;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = null;\n this.tail = null;\n this.size = 0;\n this.cache = {};\n } // // Invokes the callback function with every node of the chain and the index of the node.\n // forEach(fn) {\n // let node = this.head;\n // let counter = 0;\n // while (node) {\n // fn(node, counter);\n // node = node.next;\n // counter++;\n // }\n // }\n // // To iterate over LRU with a 'for...of' loop\n // *[Symbol.iterator]() {\n // let node = this.head;\n // while (node) {\n // yield node;\n // node = node.next;\n // }\n // }\n\n }]);\n\n return LRUCache;\n}();\n\nexport { LRUCache as default };\n//# sourceMappingURL=LRUCache.js.map","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport LRUCache from './LRUCache.js'; // A cache for frequently used country-specific regular expressions. Set to 32 to cover ~2-3\n// countries being used for the same doc with ~10 patterns for each country. Some pages will have\n// a lot more countries in use, but typically fewer numbers for each so expanding the cache for\n// that use-case won't have a lot of benefit.\n\nvar RegExpCache = /*#__PURE__*/function () {\n function RegExpCache(size) {\n _classCallCheck(this, RegExpCache);\n\n this.cache = new LRUCache(size);\n }\n\n _createClass(RegExpCache, [{\n key: \"getPatternForRegExp\",\n value: function getPatternForRegExp(pattern) {\n var regExp = this.cache.get(pattern);\n\n if (!regExp) {\n regExp = new RegExp('^' + pattern);\n this.cache.put(pattern, regExp);\n }\n\n return regExp;\n }\n }]);\n\n return RegExpCache;\n}();\n\nexport { RegExpCache as default };\n//# sourceMappingURL=RegExpCache.js.map","/** Returns a regular expression quantifier with an upper and lower limit. */\nexport function limit(lower, upper) {\n if (lower < 0 || upper <= 0 || upper < lower) {\n throw new TypeError();\n }\n\n return \"{\".concat(lower, \",\").concat(upper, \"}\");\n}\n/**\r\n * Trims away any characters after the first match of {@code pattern} in {@code candidate},\r\n * returning the trimmed version.\r\n */\n\nexport function trimAfterFirstMatch(regexp, string) {\n var index = string.search(regexp);\n\n if (index >= 0) {\n return string.slice(0, index);\n }\n\n return string;\n}\nexport function startsWith(string, substring) {\n return string.indexOf(substring) === 0;\n}\nexport function endsWith(string, substring) {\n return string.indexOf(substring, string.length - substring.length) === string.length - substring.length;\n}\n//# sourceMappingURL=util.js.map","// Javascript doesn't support UTF-8 regular expressions.\n// So mimicking them here.\n// Copy-pasted from `PhoneNumberMatcher.js`.\n\n/**\r\n * \"\\p{Z}\" is any kind of whitespace or invisible separator (\"Separator\").\r\n * http://www.regular-expressions.info/unicode.html\r\n * \"\\P{Z}\" is the reverse of \"\\p{Z}\".\r\n * \"\\p{N}\" is any kind of numeric character in any script (\"Number\").\r\n * \"\\p{Nd}\" is a digit zero through nine in any script except \"ideographic scripts\" (\"Decimal_Digit_Number\").\r\n * \"\\p{Sc}\" is a currency symbol (\"Currency_Symbol\").\r\n * \"\\p{L}\" is any kind of letter from any language (\"Letter\").\r\n * \"\\p{Mn}\" is \"non-spacing mark\".\r\n *\r\n * Javascript doesn't support Unicode Regular Expressions\r\n * so substituting it with this explicit set of characters.\r\n *\r\n * https://stackoverflow.com/questions/13210194/javascript-regex-equivalent-of-a-za-z-using-pl\r\n * https://github.com/danielberndt/babel-plugin-utf-8-regex/blob/master/src/transformer.js\r\n */\nvar _pZ = \" \\xA0\\u1680\\u180E\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\";\nexport var pZ = \"[\".concat(_pZ, \"]\");\nexport var PZ = \"[^\".concat(_pZ, \"]\");\nexport var _pN = \"0-9\\xB2\\xB3\\xB9\\xBC-\\xBE\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u09F4-\\u09F9\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0B72-\\u0B77\\u0BE6-\\u0BF2\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0CE6-\\u0CEF\\u0D66-\\u0D75\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F33\\u1040-\\u1049\\u1090-\\u1099\\u1369-\\u137C\\u16EE-\\u16F0\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19DA\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u2182\\u2185-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3007\\u3021-\\u3029\\u3038-\\u303A\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA620-\\uA629\\uA6E6-\\uA6EF\\uA830-\\uA835\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19\"; // const pN = `[${_pN}]`\n\nvar _pNd = \"0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19\";\nexport var pNd = \"[\".concat(_pNd, \"]\");\nexport var _pL = \"A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\";\nvar pL = \"[\".concat(_pL, \"]\");\nvar pL_regexp = new RegExp(pL);\nvar _pSc = \"$\\xA2-\\xA5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20B9\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6\";\nvar pSc = \"[\".concat(_pSc, \"]\");\nvar pSc_regexp = new RegExp(pSc);\nvar _pMn = \"\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u08FE\\u0900-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1DC0-\\u1DE6\\u1DFC-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26\";\nvar pMn = \"[\".concat(_pMn, \"]\");\nvar pMn_regexp = new RegExp(pMn);\nvar _InBasic_Latin = \"\\0-\\x7F\";\nvar _InLatin_1_Supplement = \"\\x80-\\xFF\";\nvar _InLatin_Extended_A = \"\\u0100-\\u017F\";\nvar _InLatin_Extended_Additional = \"\\u1E00-\\u1EFF\";\nvar _InLatin_Extended_B = \"\\u0180-\\u024F\";\nvar _InCombining_Diacritical_Marks = \"\\u0300-\\u036F\";\nvar latinLetterRegexp = new RegExp('[' + _InBasic_Latin + _InLatin_1_Supplement + _InLatin_Extended_A + _InLatin_Extended_Additional + _InLatin_Extended_B + _InCombining_Diacritical_Marks + ']');\n/**\r\n * Helper method to determine if a character is a Latin-script letter or not.\r\n * For our purposes, combining marks should also return true since we assume\r\n * they have been added to a preceding Latin character.\r\n */\n\nexport function isLatinLetter(letter) {\n // Combining marks are a subset of non-spacing-mark.\n if (!pL_regexp.test(letter) && !pMn_regexp.test(letter)) {\n return false;\n }\n\n return latinLetterRegexp.test(letter);\n}\nexport function isInvalidPunctuationSymbol(character) {\n return character === '%' || pSc_regexp.test(character);\n}\n//# sourceMappingURL=utf-8.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport isValidNumber from '../validate_.js';\nimport parseDigits from '../helpers/parseDigits.js';\nimport { startsWith, endsWith } from './util.js';\n/**\r\n * Leniency when finding potential phone numbers in text segments\r\n * The levels here are ordered in increasing strictness.\r\n */\n\nexport default {\n /**\r\n * Phone numbers accepted are \"possible\", but not necessarily \"valid\".\r\n */\n POSSIBLE: function POSSIBLE(number, candidate, metadata) {\n return true;\n },\n\n /**\r\n * Phone numbers accepted are \"possible\" and \"valid\".\r\n * Numbers written in national format must have their national-prefix\r\n * present if it is usually written for a number of this type.\r\n */\n VALID: function VALID(number, candidate, metadata) {\n if (!isValidNumber(number, undefined, metadata) || !containsOnlyValidXChars(number, candidate.toString(), metadata)) {\n return false;\n } // Skipped for simplicity.\n // return isNationalPrefixPresentIfRequired(number, metadata)\n\n\n return true;\n },\n\n /**\r\n * Phone numbers accepted are \"valid\" and\r\n * are grouped in a possible way for this locale. For example, a US number written as\r\n * \"65 02 53 00 00\" and \"650253 0000\" are not accepted at this leniency level, whereas\r\n * \"650 253 0000\", \"650 2530000\" or \"6502530000\" are.\r\n * Numbers with more than one '/' symbol in the national significant number\r\n * are also dropped at this level.\r\n *\r\n * Warning: This level might result in lower coverage especially for regions outside of\r\n * country code \"+1\". If you are not sure about which level to use,\r\n * email the discussion group libphonenumber-discuss@googlegroups.com.\r\n */\n STRICT_GROUPING: function STRICT_GROUPING(number, candidate, metadata, regExpCache) {\n var candidateString = candidate.toString();\n\n if (!isValidNumber(number, undefined, metadata) || !containsOnlyValidXChars(number, candidateString, metadata) || containsMoreThanOneSlashInNationalNumber(number, candidateString) || !isNationalPrefixPresentIfRequired(number, metadata)) {\n return false;\n }\n\n return checkNumberGroupingIsValid(number, candidate, metadata, allNumberGroupsRemainGrouped, regExpCache);\n },\n\n /**\r\n * Phone numbers accepted are {@linkplain PhoneNumberUtil#isValidNumber(PhoneNumber) valid} and\r\n * are grouped in the same way that we would have formatted it, or as a single block. For\r\n * example, a US number written as \"650 2530000\" is not accepted at this leniency level, whereas\r\n * \"650 253 0000\" or \"6502530000\" are.\r\n * Numbers with more than one '/' symbol are also dropped at this level.\r\n *

\r\n * Warning: This level might result in lower coverage especially for regions outside of country\r\n * code \"+1\". If you are not sure about which level to use, email the discussion group\r\n * libphonenumber-discuss@googlegroups.com.\r\n */\n EXACT_GROUPING: function EXACT_GROUPING(number, candidate, metadata, regExpCache) {\n var candidateString = candidate.toString();\n\n if (!isValidNumber(number, undefined, metadata) || !containsOnlyValidXChars(number, candidateString, metadata) || containsMoreThanOneSlashInNationalNumber(number, candidateString) || !isNationalPrefixPresentIfRequired(number, metadata)) {\n return false;\n }\n\n return checkNumberGroupingIsValid(number, candidate, metadata, allNumberGroupsAreExactlyPresent, regExpCache);\n }\n};\n\nfunction containsOnlyValidXChars(number, candidate, metadata) {\n // The characters 'x' and 'X' can be (1) a carrier code, in which case they always precede the\n // national significant number or (2) an extension sign, in which case they always precede the\n // extension number. We assume a carrier code is more than 1 digit, so the first case has to\n // have more than 1 consecutive 'x' or 'X', whereas the second case can only have exactly 1 'x'\n // or 'X'. We ignore the character if it appears as the last character of the string.\n for (var index = 0; index < candidate.length - 1; index++) {\n var charAtIndex = candidate.charAt(index);\n\n if (charAtIndex === 'x' || charAtIndex === 'X') {\n var charAtNextIndex = candidate.charAt(index + 1);\n\n if (charAtNextIndex === 'x' || charAtNextIndex === 'X') {\n // This is the carrier code case, in which the 'X's always precede the national\n // significant number.\n index++;\n\n if (util.isNumberMatch(number, candidate.substring(index)) != MatchType.NSN_MATCH) {\n return false;\n } // This is the extension sign case, in which the 'x' or 'X' should always precede the\n // extension number.\n\n } else if (parseDigits(candidate.substring(index)) !== number.ext) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nfunction isNationalPrefixPresentIfRequired(number, _metadata) {\n // First, check how we deduced the country code. If it was written in international format, then\n // the national prefix is not required.\n if (number.getCountryCodeSource() != 'FROM_DEFAULT_COUNTRY') {\n return true;\n }\n\n var phoneNumberRegion = util.getRegionCodeForCountryCode(number.getCountryCode());\n var metadata = util.getMetadataForRegion(phoneNumberRegion);\n\n if (metadata == null) {\n return true;\n } // Check if a national prefix should be present when formatting this number.\n\n\n var nationalNumber = util.getNationalSignificantNumber(number);\n var formatRule = util.chooseFormattingPatternForNumber(metadata.numberFormats(), nationalNumber); // To do this, we check that a national prefix formatting rule was present\n // and that it wasn't just the first-group symbol ($1) with punctuation.\n\n if (formatRule && formatRule.getNationalPrefixFormattingRule().length > 0) {\n if (formatRule.getNationalPrefixOptionalWhenFormatting()) {\n // The national-prefix is optional in these cases, so we don't need to check if it was\n // present.\n return true;\n }\n\n if (PhoneNumberUtil.formattingRuleHasFirstGroupOnly(formatRule.getNationalPrefixFormattingRule())) {\n // National Prefix not needed for this number.\n return true;\n } // Normalize the remainder.\n\n\n var rawInputCopy = PhoneNumberUtil.normalizeDigitsOnly(number.getRawInput()); // Check if we found a national prefix and/or carrier code at the start of the raw input, and\n // return the result.\n\n return util.maybeStripNationalPrefixAndCarrierCode(rawInputCopy, metadata, null);\n }\n\n return true;\n}\n\nexport function containsMoreThanOneSlashInNationalNumber(number, candidate) {\n var firstSlashInBodyIndex = candidate.indexOf('/');\n\n if (firstSlashInBodyIndex < 0) {\n // No slashes, this is okay.\n return false;\n } // Now look for a second one.\n\n\n var secondSlashInBodyIndex = candidate.indexOf('/', firstSlashInBodyIndex + 1);\n\n if (secondSlashInBodyIndex < 0) {\n // Only one slash, this is okay.\n return false;\n } // If the first slash is after the country calling code, this is permitted.\n\n\n var candidateHasCountryCode = number.getCountryCodeSource() === CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN || number.getCountryCodeSource() === CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN;\n\n if (candidateHasCountryCode && PhoneNumberUtil.normalizeDigitsOnly(candidate.substring(0, firstSlashInBodyIndex)) === String(number.getCountryCode())) {\n // Any more slashes and this is illegal.\n return candidate.slice(secondSlashInBodyIndex + 1).indexOf('/') >= 0;\n }\n\n return true;\n}\n\nfunction checkNumberGroupingIsValid(number, candidate, metadata, checkGroups, regExpCache) {\n var normalizedCandidate = normalizeDigits(candidate, true\n /* keep non-digits */\n );\n var formattedNumberGroups = getNationalNumberGroups(metadata, number, null);\n\n if (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) {\n return true;\n } // If this didn't pass, see if there are any alternate formats that match, and try them instead.\n\n\n var alternateFormats = MetadataManager.getAlternateFormatsForCountry(number.getCountryCode());\n var nationalSignificantNumber = util.getNationalSignificantNumber(number);\n\n if (alternateFormats) {\n for (var _iterator = _createForOfIteratorHelperLoose(alternateFormats.numberFormats()), _step; !(_step = _iterator()).done;) {\n var alternateFormat = _step.value;\n\n if (alternateFormat.leadingDigitsPatterns().length > 0) {\n // There is only one leading digits pattern for alternate formats.\n var leadingDigitsRegExp = regExpCache.getPatternForRegExp('^' + alternateFormat.leadingDigitsPatterns()[0]);\n\n if (!leadingDigitsRegExp.test(nationalSignificantNumber)) {\n // Leading digits don't match; try another one.\n continue;\n }\n }\n\n formattedNumberGroups = getNationalNumberGroups(metadata, number, alternateFormat);\n\n if (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) {\n return true;\n }\n }\n }\n\n return false;\n}\n/**\r\n * Helper method to get the national-number part of a number, formatted without any national\r\n * prefix, and return it as a set of digit blocks that would be formatted together following\r\n * standard formatting rules.\r\n */\n\n\nfunction getNationalNumberGroups(metadata, number, formattingPattern) {\n if (formattingPattern) {\n // We format the NSN only, and split that according to the separator.\n var nationalSignificantNumber = util.getNationalSignificantNumber(number);\n return util.formatNsnUsingPattern(nationalSignificantNumber, formattingPattern, 'RFC3966', metadata).split('-');\n } // This will be in the format +CC-DG1-DG2-DGX;ext=EXT where DG1..DGX represents groups of digits.\n\n\n var rfc3966Format = formatNumber(number, 'RFC3966', metadata); // We remove the extension part from the formatted string before splitting it into different\n // groups.\n\n var endIndex = rfc3966Format.indexOf(';');\n\n if (endIndex < 0) {\n endIndex = rfc3966Format.length;\n } // The country-code will have a '-' following it.\n\n\n var startIndex = rfc3966Format.indexOf('-') + 1;\n return rfc3966Format.slice(startIndex, endIndex).split('-');\n}\n\nfunction allNumberGroupsAreExactlyPresent(metadata, number, normalizedCandidate, formattedNumberGroups) {\n var candidateGroups = normalizedCandidate.split(NON_DIGITS_PATTERN); // Set this to the last group, skipping it if the number has an extension.\n\n var candidateNumberGroupIndex = number.hasExtension() ? candidateGroups.length - 2 : candidateGroups.length - 1; // First we check if the national significant number is formatted as a block.\n // We use contains and not equals, since the national significant number may be present with\n // a prefix such as a national number prefix, or the country code itself.\n\n if (candidateGroups.length == 1 || candidateGroups[candidateNumberGroupIndex].contains(util.getNationalSignificantNumber(number))) {\n return true;\n } // Starting from the end, go through in reverse, excluding the first group, and check the\n // candidate and number groups are the same.\n\n\n var formattedNumberGroupIndex = formattedNumberGroups.length - 1;\n\n while (formattedNumberGroupIndex > 0 && candidateNumberGroupIndex >= 0) {\n if (candidateGroups[candidateNumberGroupIndex] !== formattedNumberGroups[formattedNumberGroupIndex]) {\n return false;\n }\n\n formattedNumberGroupIndex--;\n candidateNumberGroupIndex--;\n } // Now check the first group. There may be a national prefix at the start, so we only check\n // that the candidate group ends with the formatted number group.\n\n\n return candidateNumberGroupIndex >= 0 && endsWith(candidateGroups[candidateNumberGroupIndex], formattedNumberGroups[0]);\n}\n\nfunction allNumberGroupsRemainGrouped(metadata, number, normalizedCandidate, formattedNumberGroups) {\n var fromIndex = 0;\n\n if (number.getCountryCodeSource() !== CountryCodeSource.FROM_DEFAULT_COUNTRY) {\n // First skip the country code if the normalized candidate contained it.\n var countryCode = String(number.getCountryCode());\n fromIndex = normalizedCandidate.indexOf(countryCode) + countryCode.length();\n } // Check each group of consecutive digits are not broken into separate groupings in the\n // {@code normalizedCandidate} string.\n\n\n for (var i = 0; i < formattedNumberGroups.length; i++) {\n // Fails if the substring of {@code normalizedCandidate} starting from {@code fromIndex}\n // doesn't contain the consecutive digits in formattedNumberGroups[i].\n fromIndex = normalizedCandidate.indexOf(formattedNumberGroups[i], fromIndex);\n\n if (fromIndex < 0) {\n return false;\n } // Moves {@code fromIndex} forward.\n\n\n fromIndex += formattedNumberGroups[i].length();\n\n if (i == 0 && fromIndex < normalizedCandidate.length()) {\n // We are at the position right after the NDC. We get the region used for formatting\n // information based on the country code in the phone number, rather than the number itself,\n // as we do not need to distinguish between different countries with the same country\n // calling code and this is faster.\n var region = util.getRegionCodeForCountryCode(number.getCountryCode());\n\n if (util.getNddPrefixForRegion(region, true) != null && Character.isDigit(normalizedCandidate.charAt(fromIndex))) {\n // This means there is no formatting symbol after the NDC. In this case, we only\n // accept the number if there is no formatting symbol at all in the number, except\n // for extensions. This is only important for countries with national prefixes.\n var nationalSignificantNumber = util.getNationalSignificantNumber(number);\n return startsWith(normalizedCandidate.slice(fromIndex - formattedNumberGroups[i].length), nationalSignificantNumber);\n }\n }\n } // The check here makes sure that we haven't mistakenly already used the extension to\n // match the last group of the subscriber number. Note the extension cannot have\n // formatting in-between digits.\n\n\n return normalizedCandidate.slice(fromIndex).contains(number.getExtension());\n}\n//# sourceMappingURL=Leniency.js.map","import { trimAfterFirstMatch } from './util.js'; // Regular expression of characters typically used to start a second phone number for the purposes\n// of parsing. This allows us to strip off parts of the number that are actually the start of\n// another number, such as for: (530) 583-6985 x302/x2303 -> the second extension here makes this\n// actually two phone numbers, (530) 583-6985 x302 and (530) 583-6985 x2303. We remove the second\n// extension so that the first number is parsed correctly.\n//\n// Matches a slash (\\ or /) followed by a space followed by an `x`.\n//\n\nvar SECOND_NUMBER_START_PATTERN = /[\\\\/] *x/;\nexport default function parsePreCandidate(candidate) {\n // Check for extra numbers at the end.\n // TODO: This is the place to start when trying to support extraction of multiple phone number\n // from split notations (+41 79 123 45 67 / 68).\n return trimAfterFirstMatch(SECOND_NUMBER_START_PATTERN, candidate);\n}\n//# sourceMappingURL=parsePreCandidate.js.map","// Matches strings that look like dates using \"/\" as a separator.\n// Examples: 3/10/2011, 31/10/96 or 08/31/95.\nvar SLASH_SEPARATED_DATES = /(?:(?:[0-3]?\\d\\/[01]?\\d)|(?:[01]?\\d\\/[0-3]?\\d))\\/(?:[12]\\d)?\\d{2}/; // Matches timestamps.\n// Examples: \"2012-01-02 08:00\".\n// Note that the reg-ex does not include the\n// trailing \":\\d\\d\" -- that is covered by TIME_STAMPS_SUFFIX.\n\nvar TIME_STAMPS = /[12]\\d{3}[-/]?[01]\\d[-/]?[0-3]\\d +[0-2]\\d$/;\nvar TIME_STAMPS_SUFFIX_LEADING = /^:[0-5]\\d/;\nexport default function isValidPreCandidate(candidate, offset, text) {\n // Skip a match that is more likely to be a date.\n if (SLASH_SEPARATED_DATES.test(candidate)) {\n return false;\n } // Skip potential time-stamps.\n\n\n if (TIME_STAMPS.test(candidate)) {\n var followingText = text.slice(offset + candidate.length);\n\n if (TIME_STAMPS_SUFFIX_LEADING.test(followingText)) {\n return false;\n }\n }\n\n return true;\n}\n//# sourceMappingURL=isValidPreCandidate.js.map","// Copy-pasted from `PhoneNumberMatcher.js`.\nimport { PLUS_CHARS } from '../constants.js';\nimport { limit } from './util.js';\nimport { isLatinLetter, isInvalidPunctuationSymbol } from './utf-8.js';\nvar OPENING_PARENS = \"(\\\\[\\uFF08\\uFF3B\";\nvar CLOSING_PARENS = \")\\\\]\\uFF09\\uFF3D\";\nvar NON_PARENS = \"[^\".concat(OPENING_PARENS).concat(CLOSING_PARENS, \"]\");\nexport var LEAD_CLASS = \"[\".concat(OPENING_PARENS).concat(PLUS_CHARS, \"]\"); // Punctuation that may be at the start of a phone number - brackets and plus signs.\n\nvar LEAD_CLASS_LEADING = new RegExp('^' + LEAD_CLASS); // Limit on the number of pairs of brackets in a phone number.\n\nvar BRACKET_PAIR_LIMIT = limit(0, 3);\n/**\r\n * Pattern to check that brackets match. Opening brackets should be closed within a phone number.\r\n * This also checks that there is something inside the brackets. Having no brackets at all is also\r\n * fine.\r\n *\r\n * An opening bracket at the beginning may not be closed, but subsequent ones should be. It's\r\n * also possible that the leading bracket was dropped, so we shouldn't be surprised if we see a\r\n * closing bracket first. We limit the sets of brackets in a phone number to four.\r\n */\n\nvar MATCHING_BRACKETS_ENTIRE = new RegExp('^' + \"(?:[\" + OPENING_PARENS + \"])?\" + \"(?:\" + NON_PARENS + \"+\" + \"[\" + CLOSING_PARENS + \"])?\" + NON_PARENS + \"+\" + \"(?:[\" + OPENING_PARENS + \"]\" + NON_PARENS + \"+[\" + CLOSING_PARENS + \"])\" + BRACKET_PAIR_LIMIT + NON_PARENS + \"*\" + '$');\n/**\r\n * Matches strings that look like publication pages. Example:\r\n *

Computing Complete Answers to Queries in the Presence of Limited Access Patterns.\r\n * Chen Li. VLDB J. 12(3): 211-227 (2003).
\r\n *\r\n * The string \"211-227 (2003)\" is not a telephone number.\r\n */\n\nvar PUB_PAGES = /\\d{1,5}-+\\d{1,5}\\s{0,4}\\(\\d{1,4}/;\nexport default function isValidCandidate(candidate, offset, text, leniency) {\n // Check the candidate doesn't contain any formatting\n // which would indicate that it really isn't a phone number.\n if (!MATCHING_BRACKETS_ENTIRE.test(candidate) || PUB_PAGES.test(candidate)) {\n return;\n } // If leniency is set to VALID or stricter, we also want to skip numbers that are surrounded\n // by Latin alphabetic characters, to skip cases like abc8005001234 or 8005001234def.\n\n\n if (leniency !== 'POSSIBLE') {\n // If the candidate is not at the start of the text,\n // and does not start with phone-number punctuation,\n // check the previous character.\n if (offset > 0 && !LEAD_CLASS_LEADING.test(candidate)) {\n var previousChar = text[offset - 1]; // We return null if it is a latin letter or an invalid punctuation symbol.\n\n if (isInvalidPunctuationSymbol(previousChar) || isLatinLetter(previousChar)) {\n return false;\n }\n }\n\n var lastCharIndex = offset + candidate.length;\n\n if (lastCharIndex < text.length) {\n var nextChar = text[lastCharIndex];\n\n if (isInvalidPunctuationSymbol(nextChar) || isLatinLetter(nextChar)) {\n return false;\n }\n }\n }\n\n return true;\n}\n//# sourceMappingURL=isValidCandidate.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/**\r\n * A port of Google's `PhoneNumberMatcher.java`.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberMatcher.java\r\n * Date: 08.03.2018.\r\n */\nimport PhoneNumber from './PhoneNumber.js';\nimport { MAX_LENGTH_FOR_NSN, MAX_LENGTH_COUNTRY_CODE, VALID_PUNCTUATION } from './constants.js';\nimport createExtensionPattern from './helpers/extension/createExtensionPattern.js';\nimport RegExpCache from './findNumbers/RegExpCache.js';\nimport { limit, trimAfterFirstMatch } from './findNumbers/util.js';\nimport { _pL, _pN, pZ, PZ, pNd } from './findNumbers/utf-8.js';\nimport Leniency from './findNumbers/Leniency.js';\nimport parsePreCandidate from './findNumbers/parsePreCandidate.js';\nimport isValidPreCandidate from './findNumbers/isValidPreCandidate.js';\nimport isValidCandidate, { LEAD_CLASS } from './findNumbers/isValidCandidate.js';\nimport { isSupportedCountry } from './metadata.js';\nimport parseNumber from './parse_.js';\nvar EXTN_PATTERNS_FOR_MATCHING = createExtensionPattern('matching');\n/**\r\n * Patterns used to extract phone numbers from a larger phone-number-like pattern. These are\r\n * ordered according to specificity. For example, white-space is last since that is frequently\r\n * used in numbers, not just to separate two numbers. We have separate patterns since we don't\r\n * want to break up the phone-number-like text on more than one different kind of symbol at one\r\n * time, although symbols of the same type (e.g. space) can be safely grouped together.\r\n *\r\n * Note that if there is a match, we will always check any text found up to the first match as\r\n * well.\r\n */\n\nvar INNER_MATCHES = [// Breaks on the slash - e.g. \"651-234-2345/332-445-1234\"\n'\\\\/+(.*)/', // Note that the bracket here is inside the capturing group, since we consider it part of the\n// phone number. Will match a pattern like \"(650) 223 3345 (754) 223 3321\".\n'(\\\\([^(]*)', // Breaks on a hyphen - e.g. \"12345 - 332-445-1234 is my number.\"\n// We require a space on either side of the hyphen for it to be considered a separator.\n\"(?:\".concat(pZ, \"-|-\").concat(pZ, \")\").concat(pZ, \"*(.+)\"), // Various types of wide hyphens. Note we have decided not to enforce a space here, since it's\n// possible that it's supposed to be used to break two numbers without spaces, and we haven't\n// seen many instances of it used within a number.\n\"[\\u2012-\\u2015\\uFF0D]\".concat(pZ, \"*(.+)\"), // Breaks on a full stop - e.g. \"12345. 332-445-1234 is my number.\"\n\"\\\\.+\".concat(pZ, \"*([^.]+)\"), // Breaks on space - e.g. \"3324451234 8002341234\"\n\"\".concat(pZ, \"+(\").concat(PZ, \"+)\")]; // Limit on the number of leading (plus) characters.\n\nvar leadLimit = limit(0, 2); // Limit on the number of consecutive punctuation characters.\n\nvar punctuationLimit = limit(0, 4);\n/* The maximum number of digits allowed in a digit-separated block. As we allow all digits in a\r\n * single block, set high enough to accommodate the entire national number and the international\r\n * country code. */\n\nvar digitBlockLimit = MAX_LENGTH_FOR_NSN + MAX_LENGTH_COUNTRY_CODE; // Limit on the number of blocks separated by punctuation.\n// Uses digitBlockLimit since some formats use spaces to separate each digit.\n\nvar blockLimit = limit(0, digitBlockLimit);\n/* A punctuation sequence allowing white space. */\n\nvar punctuation = \"[\".concat(VALID_PUNCTUATION, \"]\") + punctuationLimit; // A digits block without punctuation.\n\nvar digitSequence = pNd + limit(1, digitBlockLimit);\n/**\r\n * Phone number pattern allowing optional punctuation.\r\n * The phone number pattern used by `find()`, similar to\r\n * VALID_PHONE_NUMBER, but with the following differences:\r\n *
    \r\n *
  • All captures are limited in order to place an upper bound to the text matched by the\r\n * pattern.\r\n *
      \r\n *
    • Leading punctuation / plus signs are limited.\r\n *
    • Consecutive occurrences of punctuation are limited.\r\n *
    • Number of digits is limited.\r\n *
    \r\n *
  • No whitespace is allowed at the start or end.\r\n *
  • No alpha digits (vanity numbers such as 1-800-SIX-FLAGS) are currently supported.\r\n *
\r\n */\n\nvar PATTERN = '(?:' + LEAD_CLASS + punctuation + ')' + leadLimit + digitSequence + '(?:' + punctuation + digitSequence + ')' + blockLimit + '(?:' + EXTN_PATTERNS_FOR_MATCHING + ')?'; // Regular expression of trailing characters that we want to remove.\n// We remove all characters that are not alpha or numerical characters.\n// The hash character is retained here, as it may signify\n// the previous block was an extension.\n//\n// // Don't know what does '&&' mean here.\n// const UNWANTED_END_CHAR_PATTERN = new RegExp(`[[\\\\P{N}&&\\\\P{L}]&&[^#]]+$`)\n//\n\nvar UNWANTED_END_CHAR_PATTERN = new RegExp(\"[^\".concat(_pN).concat(_pL, \"#]+$\"));\nvar NON_DIGITS_PATTERN = /(\\D+)/;\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1;\n/**\r\n * A stateful class that finds and extracts telephone numbers from {@linkplain CharSequence text}.\r\n * Instances can be created using the {@linkplain PhoneNumberUtil#findNumbers factory methods} in\r\n * {@link PhoneNumberUtil}.\r\n *\r\n *

Vanity numbers (phone numbers using alphabetic digits such as 1-800-SIX-FLAGS are\r\n * not found.\r\n *\r\n *

This class is not thread-safe.\r\n */\n\nvar PhoneNumberMatcher = /*#__PURE__*/function () {\n /**\r\n * Creates a new instance. See the factory methods in {@link PhoneNumberUtil} on how to obtain a\r\n * new instance.\r\n *\r\n * @param util the phone number util to use\r\n * @param text the character sequence that we will search, null for no text\r\n * @param country the country to assume for phone numbers not written in international format\r\n * (with a leading plus, or with the international dialing prefix of the specified region).\r\n * May be null or \"ZZ\" if only numbers with a leading plus should be\r\n * considered.\r\n * @param leniency the leniency to use when evaluating candidate phone numbers\r\n * @param maxTries the maximum number of invalid numbers to try before giving up on the text.\r\n * This is to cover degenerate cases where the text has a lot of false positives in it. Must\r\n * be {@code >= 0}.\r\n */\n function PhoneNumberMatcher() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var metadata = arguments.length > 2 ? arguments[2] : undefined;\n\n _classCallCheck(this, PhoneNumberMatcher);\n\n options = _objectSpread(_objectSpread({}, options), {}, {\n defaultCallingCode: options.defaultCallingCode,\n defaultCountry: options.defaultCountry && isSupportedCountry(options.defaultCountry, metadata) ? options.defaultCountry : undefined,\n leniency: options.leniency || options.extended ? 'POSSIBLE' : 'VALID',\n maxTries: options.maxTries || MAX_SAFE_INTEGER\n });\n\n if (!options.leniency) {\n throw new TypeError('`Leniency` not supplied');\n }\n\n if (options.maxTries < 0) {\n throw new TypeError('`maxTries` not supplied');\n }\n\n this.text = text;\n this.options = options;\n this.metadata = metadata;\n /** The degree of validation requested. */\n\n this.leniency = Leniency[options.leniency];\n\n if (!this.leniency) {\n throw new TypeError(\"Unknown leniency: \".concat(options.leniency, \".\"));\n }\n /** The maximum number of retries after matching an invalid number. */\n\n\n this.maxTries = options.maxTries;\n this.PATTERN = new RegExp(PATTERN, 'ig');\n /** The iteration tristate. */\n\n this.state = 'NOT_READY';\n /** The next index to start searching at. Undefined in {@link State#DONE}. */\n\n this.searchIndex = 0; // A cache for frequently used country-specific regular expressions. Set to 32 to cover ~2-3\n // countries being used for the same doc with ~10 patterns for each country. Some pages will have\n // a lot more countries in use, but typically fewer numbers for each so expanding the cache for\n // that use-case won't have a lot of benefit.\n\n this.regExpCache = new RegExpCache(32);\n }\n /**\r\n * Attempts to find the next subsequence in the searched sequence on or after {@code searchIndex}\r\n * that represents a phone number. Returns the next match, null if none was found.\r\n *\r\n * @param index the search index to start searching at\r\n * @return the phone number match found, null if none can be found\r\n */\n\n\n _createClass(PhoneNumberMatcher, [{\n key: \"find\",\n value: function find() {\n // // Reset the regular expression.\n // this.PATTERN.lastIndex = index\n var matches;\n\n while (this.maxTries > 0 && (matches = this.PATTERN.exec(this.text)) !== null) {\n var candidate = matches[0];\n var offset = matches.index;\n candidate = parsePreCandidate(candidate);\n\n if (isValidPreCandidate(candidate, offset, this.text)) {\n var match = // Try to come up with a valid match given the entire candidate.\n this.parseAndVerify(candidate, offset, this.text) // If that failed, try to find an \"inner match\" -\n // there might be a phone number within this candidate.\n || this.extractInnerMatch(candidate, offset, this.text);\n\n if (match) {\n if (this.options.v2) {\n var phoneNumber = new PhoneNumber(match.country || match.countryCallingCode, match.phone, this.metadata);\n\n if (match.ext) {\n phoneNumber.ext = match.ext;\n }\n\n return {\n startsAt: match.startsAt,\n endsAt: match.endsAt,\n number: phoneNumber\n };\n }\n\n return match;\n }\n }\n\n this.maxTries--;\n }\n }\n /**\r\n * Attempts to extract a match from `substring`\r\n * if the substring itself does not qualify as a match.\r\n */\n\n }, {\n key: \"extractInnerMatch\",\n value: function extractInnerMatch(substring, offset, text) {\n for (var _iterator = _createForOfIteratorHelperLoose(INNER_MATCHES), _step; !(_step = _iterator()).done;) {\n var innerMatchPattern = _step.value;\n var isFirstMatch = true;\n var candidateMatch = void 0;\n var innerMatchRegExp = new RegExp(innerMatchPattern, 'g');\n\n while (this.maxTries > 0 && (candidateMatch = innerMatchRegExp.exec(substring)) !== null) {\n if (isFirstMatch) {\n // We should handle any group before this one too.\n var _candidate = trimAfterFirstMatch(UNWANTED_END_CHAR_PATTERN, substring.slice(0, candidateMatch.index));\n\n var _match = this.parseAndVerify(_candidate, offset, text);\n\n if (_match) {\n return _match;\n }\n\n this.maxTries--;\n isFirstMatch = false;\n }\n\n var candidate = trimAfterFirstMatch(UNWANTED_END_CHAR_PATTERN, candidateMatch[1]); // Java code does `groupMatcher.start(1)` here,\n // but there's no way in javascript to get a `candidate` start index,\n // therefore resort to using this kind of an approximation.\n // (`groupMatcher` is called `candidateInSubstringMatch` in this javascript port)\n // https://stackoverflow.com/questions/15934353/get-index-of-each-capture-in-a-javascript-regex\n\n var candidateIndexGuess = substring.indexOf(candidate, candidateMatch.index);\n var match = this.parseAndVerify(candidate, offset + candidateIndexGuess, text);\n\n if (match) {\n return match;\n }\n\n this.maxTries--;\n }\n }\n }\n /**\r\n * Parses a phone number from the `candidate` using `parseNumber` and\r\n * verifies it matches the requested `leniency`. If parsing and verification succeed,\r\n * a corresponding `PhoneNumberMatch` is returned, otherwise this method returns `null`.\r\n *\r\n * @param candidate the candidate match\r\n * @param offset the offset of {@code candidate} within {@link #text}\r\n * @return the parsed and validated phone number match, or null\r\n */\n\n }, {\n key: \"parseAndVerify\",\n value: function parseAndVerify(candidate, offset, text) {\n if (!isValidCandidate(candidate, offset, text, this.options.leniency)) {\n return;\n }\n\n var number = parseNumber(candidate, {\n extended: true,\n defaultCountry: this.options.defaultCountry,\n defaultCallingCode: this.options.defaultCallingCode\n }, this.metadata);\n\n if (!number.possible) {\n return;\n }\n\n if (this.leniency(number, candidate, this.metadata, this.regExpCache)) {\n // // We used parseAndKeepRawInput to create this number,\n // // but for now we don't return the extra values parsed.\n // // TODO: stop clearing all values here and switch all users over\n // // to using rawInput() rather than the rawString() of PhoneNumberMatch.\n // number.clearCountryCodeSource()\n // number.clearRawInput()\n // number.clearPreferredDomesticCarrierCode()\n var result = {\n startsAt: offset,\n endsAt: offset + candidate.length,\n phone: number.phone\n };\n\n if (number.country && number.country !== '001') {\n result.country = number.country;\n } else {\n result.countryCallingCode = number.countryCallingCode;\n }\n\n if (number.ext) {\n result.ext = number.ext;\n }\n\n return result;\n }\n }\n }, {\n key: \"hasNext\",\n value: function hasNext() {\n if (this.state === 'NOT_READY') {\n this.lastMatch = this.find(); // (this.searchIndex)\n\n if (this.lastMatch) {\n // this.searchIndex = this.lastMatch.endsAt\n this.state = 'READY';\n } else {\n this.state = 'DONE';\n }\n }\n\n return this.state === 'READY';\n }\n }, {\n key: \"next\",\n value: function next() {\n // Check the state and find the next match as a side-effect if necessary.\n if (!this.hasNext()) {\n throw new Error('No next element');\n } // Don't retain that memory any longer than necessary.\n\n\n var result = this.lastMatch;\n this.lastMatch = null;\n this.state = 'NOT_READY';\n return result;\n }\n }]);\n\n return PhoneNumberMatcher;\n}();\n\nexport { PhoneNumberMatcher as default };\n//# sourceMappingURL=PhoneNumberMatcher.js.map","import PhoneNumberMatcher from './PhoneNumberMatcher.js';\nexport default function findNumbers(text, options, metadata) {\n var matcher = new PhoneNumberMatcher(text, options, metadata);\n var results = [];\n\n while (matcher.hasNext()) {\n results.push(matcher.next());\n }\n\n return results;\n}\n//# sourceMappingURL=findNumbers_.js.map","import _findNumbers from './findNumbers_.js';\nimport { normalizeArguments } from './parsePhoneNumber.js';\nexport default function findNumbers() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return _findNumbers(text, options, metadata);\n}\n//# sourceMappingURL=findNumbers.js.map","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { normalizeArguments } from './parsePhoneNumber.js';\nimport PhoneNumberMatcher from './PhoneNumberMatcher.js';\n/**\r\n * @return ES6 `for ... of` iterator.\r\n */\n\nexport default function searchNumbers() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n var matcher = new PhoneNumberMatcher(text, options, metadata);\n return _defineProperty({}, Symbol.iterator, function () {\n return {\n next: function next() {\n if (matcher.hasNext()) {\n return {\n done: false,\n value: matcher.next()\n };\n }\n\n return {\n done: true\n };\n }\n };\n });\n}\n//# sourceMappingURL=searchNumbers.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport findNumbers from './findNumbers.js';\nexport default function findPhoneNumbersInText(text, defaultCountry, options, metadata) {\n var args = getArguments(defaultCountry, options, metadata);\n return findNumbers(text, args.options, args.metadata);\n}\nexport function getArguments(defaultCountry, options, metadata) {\n if (metadata) {\n if (defaultCountry) {\n options = _objectSpread(_objectSpread({}, options), {}, {\n defaultCountry: defaultCountry\n });\n }\n } else {\n if (options) {\n metadata = options;\n\n if (defaultCountry) {\n if (is_object(defaultCountry)) {\n options = defaultCountry;\n } else {\n options = {\n defaultCountry: defaultCountry\n };\n }\n } else {\n options = undefined;\n }\n } else {\n metadata = defaultCountry;\n options = undefined;\n }\n }\n\n return {\n options: _objectSpread(_objectSpread({}, options), {}, {\n v2: true\n }),\n metadata: metadata\n };\n} // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\nvar is_object = function is_object(_) {\n return _typeof(_) === 'object';\n};\n//# sourceMappingURL=findPhoneNumbersInText.js.map","import searchNumbers from './searchNumbers.js';\nimport { getArguments } from './findPhoneNumbersInText.js';\nexport default function searchPhoneNumbersInText(text, defaultCountry, options, metadata) {\n var args = getArguments(defaultCountry, options, metadata);\n return searchNumbers(text, args.options, args.metadata);\n}\n//# sourceMappingURL=searchPhoneNumbersInText.js.map","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nvar AsYouTypeState = /*#__PURE__*/function () {\n function AsYouTypeState(_ref) {\n var onCountryChange = _ref.onCountryChange,\n onCallingCodeChange = _ref.onCallingCodeChange;\n\n _classCallCheck(this, AsYouTypeState);\n\n this.onCountryChange = onCountryChange;\n this.onCallingCodeChange = onCallingCodeChange;\n }\n\n _createClass(AsYouTypeState, [{\n key: \"reset\",\n value: function reset(defaultCountry, defaultCallingCode) {\n this.international = false;\n this.IDDPrefix = undefined;\n this.missingPlus = undefined;\n this.callingCode = undefined;\n this.digits = '';\n this.resetNationalSignificantNumber();\n this.initCountryAndCallingCode(defaultCountry, defaultCallingCode);\n }\n }, {\n key: \"resetNationalSignificantNumber\",\n value: function resetNationalSignificantNumber() {\n this.nationalSignificantNumber = this.getNationalDigits();\n this.nationalSignificantNumberMatchesInput = true;\n this.nationalPrefix = undefined;\n this.carrierCode = undefined;\n this.complexPrefixBeforeNationalSignificantNumber = undefined;\n }\n }, {\n key: \"update\",\n value: function update(properties) {\n for (var _i = 0, _Object$keys = Object.keys(properties); _i < _Object$keys.length; _i++) {\n var key = _Object$keys[_i];\n this[key] = properties[key];\n }\n }\n }, {\n key: \"initCountryAndCallingCode\",\n value: function initCountryAndCallingCode(country, callingCode) {\n this.setCountry(country);\n this.setCallingCode(callingCode);\n }\n }, {\n key: \"setCountry\",\n value: function setCountry(country) {\n this.country = country;\n this.onCountryChange(country);\n }\n }, {\n key: \"setCallingCode\",\n value: function setCallingCode(callingCode) {\n this.callingCode = callingCode;\n this.onCallingCodeChange(callingCode, this.country);\n }\n }, {\n key: \"startInternationalNumber\",\n value: function startInternationalNumber(country, callingCode) {\n // Prepend the `+` to parsed input.\n this.international = true; // If a default country was set then reset it\n // because an explicitly international phone\n // number is being entered.\n\n this.initCountryAndCallingCode(country, callingCode);\n }\n }, {\n key: \"appendDigits\",\n value: function appendDigits(nextDigits) {\n this.digits += nextDigits;\n }\n }, {\n key: \"appendNationalSignificantNumberDigits\",\n value: function appendNationalSignificantNumberDigits(nextDigits) {\n this.nationalSignificantNumber += nextDigits;\n }\n /**\r\n * Returns the part of `this.digits` that corresponds to the national number.\r\n * Basically, all digits that have been input by the user, except for the\r\n * international prefix and the country calling code part\r\n * (if the number is an international one).\r\n * @return {string}\r\n */\n\n }, {\n key: \"getNationalDigits\",\n value: function getNationalDigits() {\n if (this.international) {\n return this.digits.slice((this.IDDPrefix ? this.IDDPrefix.length : 0) + (this.callingCode ? this.callingCode.length : 0));\n }\n\n return this.digits;\n }\n }, {\n key: \"getDigitsWithoutInternationalPrefix\",\n value: function getDigitsWithoutInternationalPrefix() {\n if (this.international) {\n if (this.IDDPrefix) {\n return this.digits.slice(this.IDDPrefix.length);\n }\n }\n\n return this.digits;\n }\n }]);\n\n return AsYouTypeState;\n}();\n\nexport { AsYouTypeState as default };\n//# sourceMappingURL=AsYouTypeState.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n// Should be the same as `DIGIT_PLACEHOLDER` in `libphonenumber-metadata-generator`.\nexport var DIGIT_PLACEHOLDER = 'x'; // '\\u2008' (punctuation space)\n\nvar DIGIT_PLACEHOLDER_MATCHER = new RegExp(DIGIT_PLACEHOLDER); // Counts all occurences of a symbol in a string.\n// Unicode-unsafe (because using `.split()`).\n\nexport function countOccurences(symbol, string) {\n var count = 0; // Using `.split('')` to iterate through a string here\n // to avoid requiring `Symbol.iterator` polyfill.\n // `.split('')` is generally not safe for Unicode,\n // but in this particular case for counting brackets it is safe.\n // for (const character of string)\n\n for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) {\n var character = _step.value;\n\n if (character === symbol) {\n count++;\n }\n }\n\n return count;\n} // Repeats a string (or a symbol) N times.\n// http://stackoverflow.com/questions/202605/repeat-string-javascript\n\nexport function repeat(string, times) {\n if (times < 1) {\n return '';\n }\n\n var result = '';\n\n while (times > 1) {\n if (times & 1) {\n result += string;\n }\n\n times >>= 1;\n string += string;\n }\n\n return result + string;\n}\nexport function cutAndStripNonPairedParens(string, cutBeforeIndex) {\n if (string[cutBeforeIndex] === ')') {\n cutBeforeIndex++;\n }\n\n return stripNonPairedParens(string.slice(0, cutBeforeIndex));\n}\nexport function closeNonPairedParens(template, cut_before) {\n var retained_template = template.slice(0, cut_before);\n var opening_braces = countOccurences('(', retained_template);\n var closing_braces = countOccurences(')', retained_template);\n var dangling_braces = opening_braces - closing_braces;\n\n while (dangling_braces > 0 && cut_before < template.length) {\n if (template[cut_before] === ')') {\n dangling_braces--;\n }\n\n cut_before++;\n }\n\n return template.slice(0, cut_before);\n}\nexport function stripNonPairedParens(string) {\n var dangling_braces = [];\n var i = 0;\n\n while (i < string.length) {\n if (string[i] === '(') {\n dangling_braces.push(i);\n } else if (string[i] === ')') {\n dangling_braces.pop();\n }\n\n i++;\n }\n\n var start = 0;\n var cleared_string = '';\n dangling_braces.push(string.length);\n\n for (var _i = 0, _dangling_braces = dangling_braces; _i < _dangling_braces.length; _i++) {\n var index = _dangling_braces[_i];\n cleared_string += string.slice(start, index);\n start = index + 1;\n }\n\n return cleared_string;\n}\nexport function populateTemplateWithDigits(template, position, digits) {\n // Using `.split('')` to iterate through a string here\n // to avoid requiring `Symbol.iterator` polyfill.\n // `.split('')` is generally not safe for Unicode,\n // but in this particular case for `digits` it is safe.\n // for (const digit of digits)\n for (var _iterator2 = _createForOfIteratorHelperLoose(digits.split('')), _step2; !(_step2 = _iterator2()).done;) {\n var digit = _step2.value;\n\n // If there is room for more digits in current `template`,\n // then set the next digit in the `template`,\n // and return the formatted digits so far.\n // If more digits are entered than the current format could handle.\n if (template.slice(position + 1).search(DIGIT_PLACEHOLDER_MATCHER) < 0) {\n return;\n }\n\n position = template.search(DIGIT_PLACEHOLDER_MATCHER);\n template = template.replace(DIGIT_PLACEHOLDER_MATCHER, digit);\n }\n\n return [template, position];\n}\n//# sourceMappingURL=AsYouTypeFormatter.util.js.map","import checkNumberLength from './helpers/checkNumberLength.js';\nimport parseDigits from './helpers/parseDigits.js';\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js';\nexport default function formatCompleteNumber(state, format, _ref) {\n var metadata = _ref.metadata,\n shouldTryNationalPrefixFormattingRule = _ref.shouldTryNationalPrefixFormattingRule,\n getSeparatorAfterNationalPrefix = _ref.getSeparatorAfterNationalPrefix;\n var matcher = new RegExp(\"^(?:\".concat(format.pattern(), \")$\"));\n\n if (matcher.test(state.nationalSignificantNumber)) {\n return formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(state, format, {\n metadata: metadata,\n shouldTryNationalPrefixFormattingRule: shouldTryNationalPrefixFormattingRule,\n getSeparatorAfterNationalPrefix: getSeparatorAfterNationalPrefix\n });\n }\n}\nexport function canFormatCompleteNumber(nationalSignificantNumber, metadata) {\n return checkNumberLength(nationalSignificantNumber, metadata) === 'IS_POSSIBLE';\n}\n\nfunction formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(state, format, _ref2) {\n var metadata = _ref2.metadata,\n shouldTryNationalPrefixFormattingRule = _ref2.shouldTryNationalPrefixFormattingRule,\n getSeparatorAfterNationalPrefix = _ref2.getSeparatorAfterNationalPrefix;\n // `format` has already been checked for `nationalPrefix` requirement.\n var nationalSignificantNumber = state.nationalSignificantNumber,\n international = state.international,\n nationalPrefix = state.nationalPrefix,\n carrierCode = state.carrierCode; // Format the number with using `national_prefix_formatting_rule`.\n // If the resulting formatted number is a valid formatted number, then return it.\n //\n // Google's AsYouType formatter is different in a way that it doesn't try\n // to format using the \"national prefix formatting rule\", and instead it\n // simply prepends a national prefix followed by a \" \" character.\n // This code does that too, but as a fallback.\n // The reason is that \"national prefix formatting rule\" may use parentheses,\n // which wouldn't be included has it used the simpler Google's way.\n //\n\n if (shouldTryNationalPrefixFormattingRule(format)) {\n var formattedNumber = formatNationalNumber(state, format, {\n useNationalPrefixFormattingRule: true,\n getSeparatorAfterNationalPrefix: getSeparatorAfterNationalPrefix,\n metadata: metadata\n });\n\n if (formattedNumber) {\n return formattedNumber;\n }\n } // Format the number without using `national_prefix_formatting_rule`.\n\n\n return formatNationalNumber(state, format, {\n useNationalPrefixFormattingRule: false,\n getSeparatorAfterNationalPrefix: getSeparatorAfterNationalPrefix,\n metadata: metadata\n });\n}\n\nfunction formatNationalNumber(state, format, _ref3) {\n var metadata = _ref3.metadata,\n useNationalPrefixFormattingRule = _ref3.useNationalPrefixFormattingRule,\n getSeparatorAfterNationalPrefix = _ref3.getSeparatorAfterNationalPrefix;\n var formattedNationalNumber = formatNationalNumberUsingFormat(state.nationalSignificantNumber, format, {\n carrierCode: state.carrierCode,\n useInternationalFormat: state.international,\n withNationalPrefix: useNationalPrefixFormattingRule,\n metadata: metadata\n });\n\n if (!useNationalPrefixFormattingRule) {\n if (state.nationalPrefix) {\n // If a national prefix was extracted, then just prepend it,\n // followed by a \" \" character.\n formattedNationalNumber = state.nationalPrefix + getSeparatorAfterNationalPrefix(format) + formattedNationalNumber;\n } else if (state.complexPrefixBeforeNationalSignificantNumber) {\n formattedNationalNumber = state.complexPrefixBeforeNationalSignificantNumber + ' ' + formattedNationalNumber;\n }\n }\n\n if (isValidFormattedNationalNumber(formattedNationalNumber, state)) {\n return formattedNationalNumber;\n }\n} // Check that the formatted phone number contains exactly\n// the same digits that have been input by the user.\n// For example, when \"0111523456789\" is input for `AR` country,\n// the extracted `this.nationalSignificantNumber` is \"91123456789\",\n// which means that the national part of `this.digits` isn't simply equal to\n// `this.nationalPrefix` + `this.nationalSignificantNumber`.\n//\n// Also, a `format` can add extra digits to the `this.nationalSignificantNumber`\n// being formatted via `metadata[country].national_prefix_transform_rule`.\n// For example, for `VI` country, it prepends `340` to the national number,\n// and if this check hasn't been implemented, then there would be a bug\n// when `340` \"area coude\" is \"duplicated\" during input for `VI` country:\n// https://github.com/catamphetamine/libphonenumber-js/issues/318\n//\n// So, all these \"gotchas\" are filtered out.\n//\n// In the original Google's code, the comments say:\n// \"Check that we didn't remove nor add any extra digits when we matched\n// this formatting pattern. This usually happens after we entered the last\n// digit during AYTF. Eg: In case of MX, we swallow mobile token (1) when\n// formatted but AYTF should retain all the number entered and not change\n// in order to match a format (of same leading digits and length) display\n// in that way.\"\n// \"If it's the same (i.e entered number and format is same), then it's\n// safe to return this in formatted number as nothing is lost / added.\"\n// Otherwise, don't use this format.\n// https://github.com/google/libphonenumber/commit/3e7c1f04f5e7200f87fb131e6f85c6e99d60f510#diff-9149457fa9f5d608a11bb975c6ef4bc5\n// https://github.com/google/libphonenumber/commit/3ac88c7106e7dcb553bcc794b15f19185928a1c6#diff-2dcb77e833422ee304da348b905cde0b\n//\n\n\nfunction isValidFormattedNationalNumber(formattedNationalNumber, state) {\n return parseDigits(formattedNationalNumber) === state.getNationalDigits();\n}\n//# sourceMappingURL=AsYouTypeFormatter.complete.js.map","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nvar PatternParser = /*#__PURE__*/function () {\n function PatternParser() {\n _classCallCheck(this, PatternParser);\n }\n\n _createClass(PatternParser, [{\n key: \"parse\",\n value: function parse(pattern) {\n this.context = [{\n or: true,\n instructions: []\n }];\n this.parsePattern(pattern);\n\n if (this.context.length !== 1) {\n throw new Error('Non-finalized contexts left when pattern parse ended');\n }\n\n var _this$context$ = this.context[0],\n branches = _this$context$.branches,\n instructions = _this$context$.instructions;\n\n if (branches) {\n return {\n op: '|',\n args: branches.concat([expandSingleElementArray(instructions)])\n };\n }\n /* istanbul ignore if */\n\n\n if (instructions.length === 0) {\n throw new Error('Pattern is required');\n }\n\n if (instructions.length === 1) {\n return instructions[0];\n }\n\n return instructions;\n }\n }, {\n key: \"startContext\",\n value: function startContext(context) {\n this.context.push(context);\n }\n }, {\n key: \"endContext\",\n value: function endContext() {\n this.context.pop();\n }\n }, {\n key: \"getContext\",\n value: function getContext() {\n return this.context[this.context.length - 1];\n }\n }, {\n key: \"parsePattern\",\n value: function parsePattern(pattern) {\n if (!pattern) {\n throw new Error('Pattern is required');\n }\n\n var match = pattern.match(OPERATOR);\n\n if (!match) {\n if (ILLEGAL_CHARACTER_REGEXP.test(pattern)) {\n throw new Error(\"Illegal characters found in a pattern: \".concat(pattern));\n }\n\n this.getContext().instructions = this.getContext().instructions.concat(pattern.split(''));\n return;\n }\n\n var operator = match[1];\n var before = pattern.slice(0, match.index);\n var rightPart = pattern.slice(match.index + operator.length);\n\n switch (operator) {\n case '(?:':\n if (before) {\n this.parsePattern(before);\n }\n\n this.startContext({\n or: true,\n instructions: [],\n branches: []\n });\n break;\n\n case ')':\n if (!this.getContext().or) {\n throw new Error('\")\" operator must be preceded by \"(?:\" operator');\n }\n\n if (before) {\n this.parsePattern(before);\n }\n\n if (this.getContext().instructions.length === 0) {\n throw new Error('No instructions found after \"|\" operator in an \"or\" group');\n }\n\n var _this$getContext = this.getContext(),\n branches = _this$getContext.branches;\n\n branches.push(expandSingleElementArray(this.getContext().instructions));\n this.endContext();\n this.getContext().instructions.push({\n op: '|',\n args: branches\n });\n break;\n\n case '|':\n if (!this.getContext().or) {\n throw new Error('\"|\" operator can only be used inside \"or\" groups');\n }\n\n if (before) {\n this.parsePattern(before);\n } // The top-level is an implicit \"or\" group, if required.\n\n\n if (!this.getContext().branches) {\n // `branches` are not defined only for the root implicit \"or\" operator.\n\n /* istanbul ignore else */\n if (this.context.length === 1) {\n this.getContext().branches = [];\n } else {\n throw new Error('\"branches\" not found in an \"or\" group context');\n }\n }\n\n this.getContext().branches.push(expandSingleElementArray(this.getContext().instructions));\n this.getContext().instructions = [];\n break;\n\n case '[':\n if (before) {\n this.parsePattern(before);\n }\n\n this.startContext({\n oneOfSet: true\n });\n break;\n\n case ']':\n if (!this.getContext().oneOfSet) {\n throw new Error('\"]\" operator must be preceded by \"[\" operator');\n }\n\n this.endContext();\n this.getContext().instructions.push({\n op: '[]',\n args: parseOneOfSet(before)\n });\n break;\n\n /* istanbul ignore next */\n\n default:\n throw new Error(\"Unknown operator: \".concat(operator));\n }\n\n if (rightPart) {\n this.parsePattern(rightPart);\n }\n }\n }]);\n\n return PatternParser;\n}();\n\nexport { PatternParser as default };\n\nfunction parseOneOfSet(pattern) {\n var values = [];\n var i = 0;\n\n while (i < pattern.length) {\n if (pattern[i] === '-') {\n if (i === 0 || i === pattern.length - 1) {\n throw new Error(\"Couldn't parse a one-of set pattern: \".concat(pattern));\n }\n\n var prevValue = pattern[i - 1].charCodeAt(0) + 1;\n var nextValue = pattern[i + 1].charCodeAt(0) - 1;\n var value = prevValue;\n\n while (value <= nextValue) {\n values.push(String.fromCharCode(value));\n value++;\n }\n } else {\n values.push(pattern[i]);\n }\n\n i++;\n }\n\n return values;\n}\n\nvar ILLEGAL_CHARACTER_REGEXP = /[\\(\\)\\[\\]\\?\\:\\|]/;\nvar OPERATOR = new RegExp( // any of:\n'(' + // or operator\n'\\\\|' + // or\n'|' + // or group start\n'\\\\(\\\\?\\\\:' + // or\n'|' + // or group end\n'\\\\)' + // or\n'|' + // one-of set start\n'\\\\[' + // or\n'|' + // one-of set end\n'\\\\]' + ')');\n\nfunction expandSingleElementArray(array) {\n if (array.length === 1) {\n return array[0];\n }\n\n return array;\n}\n//# sourceMappingURL=AsYouTypeFormatter.PatternParser.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport PatternParser from './AsYouTypeFormatter.PatternParser.js';\n\nvar PatternMatcher = /*#__PURE__*/function () {\n function PatternMatcher(pattern) {\n _classCallCheck(this, PatternMatcher);\n\n this.matchTree = new PatternParser().parse(pattern);\n }\n\n _createClass(PatternMatcher, [{\n key: \"match\",\n value: function match(string) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n allowOverflow = _ref.allowOverflow;\n\n if (!string) {\n throw new Error('String is required');\n }\n\n var result = _match(string.split(''), this.matchTree, true);\n\n if (result && result.match) {\n delete result.matchedChars;\n }\n\n if (result && result.overflow) {\n if (!allowOverflow) {\n return;\n }\n }\n\n return result;\n }\n }]);\n\n return PatternMatcher;\n}();\n/**\r\n * Matches `characters` against a pattern compiled into a `tree`.\r\n * @param {string[]} characters\r\n * @param {Tree} tree — A pattern compiled into a `tree`. See the `*.d.ts` file for the description of the `tree` structure.\r\n * @param {boolean} last — Whether it's the last (rightmost) subtree on its level of the match tree.\r\n * @return {object} See the `*.d.ts` file for the description of the result object.\r\n */\n\n\nexport { PatternMatcher as default };\n\nfunction _match(characters, tree, last) {\n // If `tree` is a string, then `tree` is a single character.\n // That's because when a pattern is parsed, multi-character-string parts\n // of a pattern are compiled into arrays of single characters.\n // I still wrote this piece of code for a \"general\" hypothetical case\n // when `tree` could be a string of several characters, even though\n // such case is not possible with the current implementation.\n if (typeof tree === 'string') {\n var characterString = characters.join('');\n\n if (tree.indexOf(characterString) === 0) {\n // `tree` is always a single character.\n // If `tree.indexOf(characterString) === 0`\n // then `characters.length === tree.length`.\n\n /* istanbul ignore else */\n if (characters.length === tree.length) {\n return {\n match: true,\n matchedChars: characters\n };\n } // `tree` is always a single character.\n // If `tree.indexOf(characterString) === 0`\n // then `characters.length === tree.length`.\n\n /* istanbul ignore next */\n\n\n return {\n partialMatch: true // matchedChars: characters\n\n };\n }\n\n if (characterString.indexOf(tree) === 0) {\n if (last) {\n // The `else` path is not possible because `tree` is always a single character.\n // The `else` case for `characters.length > tree.length` would be\n // `characters.length <= tree.length` which means `characters.length <= 1`.\n // `characters` array can't be empty, so that means `characters === [tree]`,\n // which would also mean `tree.indexOf(characterString) === 0` and that'd mean\n // that the `if (tree.indexOf(characterString) === 0)` condition before this\n // `if` condition would be entered, and returned from there, not reaching this code.\n\n /* istanbul ignore else */\n if (characters.length > tree.length) {\n return {\n overflow: true\n };\n }\n }\n\n return {\n match: true,\n matchedChars: characters.slice(0, tree.length)\n };\n }\n\n return;\n }\n\n if (Array.isArray(tree)) {\n var restCharacters = characters.slice();\n var i = 0;\n\n while (i < tree.length) {\n var subtree = tree[i];\n\n var result = _match(restCharacters, subtree, last && i === tree.length - 1);\n\n if (!result) {\n return;\n } else if (result.overflow) {\n return result;\n } else if (result.match) {\n // Continue with the next subtree with the rest of the characters.\n restCharacters = restCharacters.slice(result.matchedChars.length);\n\n if (restCharacters.length === 0) {\n if (i === tree.length - 1) {\n return {\n match: true,\n matchedChars: characters\n };\n } else {\n return {\n partialMatch: true // matchedChars: characters\n\n };\n }\n }\n } else {\n /* istanbul ignore else */\n if (result.partialMatch) {\n return {\n partialMatch: true // matchedChars: characters\n\n };\n } else {\n throw new Error(\"Unsupported match result:\\n\".concat(JSON.stringify(result, null, 2)));\n }\n }\n\n i++;\n } // If `last` then overflow has already been checked\n // by the last element of the `tree` array.\n\n /* istanbul ignore if */\n\n\n if (last) {\n return {\n overflow: true\n };\n }\n\n return {\n match: true,\n matchedChars: characters.slice(0, characters.length - restCharacters.length)\n };\n }\n\n switch (tree.op) {\n case '|':\n var partialMatch;\n\n for (var _iterator = _createForOfIteratorHelperLoose(tree.args), _step; !(_step = _iterator()).done;) {\n var branch = _step.value;\n\n var _result = _match(characters, branch, last);\n\n if (_result) {\n if (_result.overflow) {\n return _result;\n } else if (_result.match) {\n return {\n match: true,\n matchedChars: _result.matchedChars\n };\n } else {\n /* istanbul ignore else */\n if (_result.partialMatch) {\n partialMatch = true;\n } else {\n throw new Error(\"Unsupported match result:\\n\".concat(JSON.stringify(_result, null, 2)));\n }\n }\n }\n }\n\n if (partialMatch) {\n return {\n partialMatch: true // matchedChars: ...\n\n };\n } // Not even a partial match.\n\n\n return;\n\n case '[]':\n for (var _iterator2 = _createForOfIteratorHelperLoose(tree.args), _step2; !(_step2 = _iterator2()).done;) {\n var _char = _step2.value;\n\n if (characters[0] === _char) {\n if (characters.length === 1) {\n return {\n match: true,\n matchedChars: characters\n };\n }\n\n if (last) {\n return {\n overflow: true\n };\n }\n\n return {\n match: true,\n matchedChars: [_char]\n };\n }\n } // No character matches.\n\n\n return;\n\n /* istanbul ignore next */\n\n default:\n throw new Error(\"Unsupported instruction tree: \".concat(tree));\n }\n}\n//# sourceMappingURL=AsYouTypeFormatter.PatternMatcher.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport { DIGIT_PLACEHOLDER, countOccurences, repeat, cutAndStripNonPairedParens, closeNonPairedParens, stripNonPairedParens, populateTemplateWithDigits } from './AsYouTypeFormatter.util.js';\nimport formatCompleteNumber, { canFormatCompleteNumber } from './AsYouTypeFormatter.complete.js';\nimport PatternMatcher from './AsYouTypeFormatter.PatternMatcher.js';\nimport parseDigits from './helpers/parseDigits.js';\nexport { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.util.js';\nimport { FIRST_GROUP_PATTERN } from './helpers/formatNationalNumberUsingFormat.js';\nimport { VALID_PUNCTUATION } from './constants.js';\nimport applyInternationalSeparatorStyle from './helpers/applyInternationalSeparatorStyle.js'; // Used in phone number format template creation.\n// Could be any digit, I guess.\n\nvar DUMMY_DIGIT = '9'; // I don't know why is it exactly `15`\n\nvar LONGEST_NATIONAL_PHONE_NUMBER_LENGTH = 15; // Create a phone number consisting only of the digit 9 that matches the\n// `number_pattern` by applying the pattern to the \"longest phone number\" string.\n\nvar LONGEST_DUMMY_PHONE_NUMBER = repeat(DUMMY_DIGIT, LONGEST_NATIONAL_PHONE_NUMBER_LENGTH); // A set of characters that, if found in a national prefix formatting rules, are an indicator to\n// us that we should separate the national prefix from the number when formatting.\n\nvar NATIONAL_PREFIX_SEPARATORS_PATTERN = /[- ]/; // Deprecated: Google has removed some formatting pattern related code from their repo.\n// https://github.com/googlei18n/libphonenumber/commit/a395b4fef3caf57c4bc5f082e1152a4d2bd0ba4c\n// \"We no longer have numbers in formatting matching patterns, only \\d.\"\n// Because this library supports generating custom metadata\n// some users may still be using old metadata so the relevant\n// code seems to stay until some next major version update.\n\nvar SUPPORT_LEGACY_FORMATTING_PATTERNS = true; // A pattern that is used to match character classes in regular expressions.\n// An example of a character class is \"[1-4]\".\n\nvar CREATE_CHARACTER_CLASS_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && function () {\n return /\\[([^\\[\\]])*\\]/g;\n}; // Any digit in a regular expression that actually denotes a digit. For\n// example, in the regular expression \"80[0-2]\\d{6,10}\", the first 2 digits\n// (8 and 0) are standalone digits, but the rest are not.\n// Two look-aheads are needed because the number following \\\\d could be a\n// two-digit number, since the phone number can be as long as 15 digits.\n\n\nvar CREATE_STANDALONE_DIGIT_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && function () {\n return /\\d(?=[^,}][^,}])/g;\n}; // A regular expression that is used to determine if a `format` is\n// suitable to be used in the \"as you type formatter\".\n// A `format` is suitable when the resulting formatted number has\n// the same digits as the user has entered.\n//\n// In the simplest case, that would mean that the format\n// doesn't add any additional digits when formatting a number.\n// Google says that it also shouldn't add \"star\" (`*`) characters,\n// like it does in some Israeli formats.\n// Such basic format would only contain \"valid punctuation\"\n// and \"captured group\" identifiers ($1, $2, etc).\n//\n// An example of a format that adds additional digits:\n//\n// Country: `AR` (Argentina).\n// Format:\n// {\n// \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\n// \"leading_digits_patterns\": [\"91\"],\n// \"national_prefix_formatting_rule\": \"0$1\",\n// \"format\": \"$2 15-$3-$4\",\n// \"international_format\": \"$1 $2 $3-$4\"\n// }\n//\n// In the format above, the `format` adds `15` to the digits when formatting a number.\n// A sidenote: this format actually is suitable because `national_prefix_for_parsing`\n// has previously removed `15` from a national number, so re-adding `15` in `format`\n// doesn't actually result in any extra digits added to user's input.\n// But verifying that would be a complex procedure, so the code chooses a simpler path:\n// it simply filters out all `format`s that contain anything but \"captured group\" ids.\n//\n// This regular expression is called `ELIGIBLE_FORMAT_PATTERN` in Google's\n// `libphonenumber` code.\n//\n\n\nvar NON_ALTERING_FORMAT_REG_EXP = new RegExp('[' + VALID_PUNCTUATION + ']*' + // Google developers say:\n// \"We require that the first matching group is present in the\n// output pattern to ensure no data is lost while formatting.\"\n'\\\\$1' + '[' + VALID_PUNCTUATION + ']*' + '(\\\\$\\\\d[' + VALID_PUNCTUATION + ']*)*' + '$'); // This is the minimum length of the leading digits of a phone number\n// to guarantee the first \"leading digits pattern\" for a phone number format\n// to be preemptive.\n\nvar MIN_LEADING_DIGITS_LENGTH = 3;\n\nvar AsYouTypeFormatter = /*#__PURE__*/function () {\n function AsYouTypeFormatter(_ref) {\n var state = _ref.state,\n metadata = _ref.metadata;\n\n _classCallCheck(this, AsYouTypeFormatter);\n\n this.metadata = metadata;\n this.resetFormat();\n }\n\n _createClass(AsYouTypeFormatter, [{\n key: \"resetFormat\",\n value: function resetFormat() {\n this.chosenFormat = undefined;\n this.template = undefined;\n this.nationalNumberTemplate = undefined;\n this.populatedNationalNumberTemplate = undefined;\n this.populatedNationalNumberTemplatePosition = -1;\n }\n }, {\n key: \"reset\",\n value: function reset(numberingPlan, state) {\n this.resetFormat();\n\n if (numberingPlan) {\n this.isNANP = numberingPlan.callingCode() === '1';\n this.matchingFormats = numberingPlan.formats();\n\n if (state.nationalSignificantNumber) {\n this.narrowDownMatchingFormats(state);\n }\n } else {\n this.isNANP = undefined;\n this.matchingFormats = [];\n }\n }\n /**\r\n * Formats an updated phone number.\r\n * @param {string} nextDigits — Additional phone number digits.\r\n * @param {object} state — `AsYouType` state.\r\n * @return {[string]} Returns undefined if the updated phone number can't be formatted using any of the available formats.\r\n */\n\n }, {\n key: \"format\",\n value: function format(nextDigits, state) {\n var _this = this;\n\n // See if the phone number digits can be formatted as a complete phone number.\n // If not, use the results from `formatNationalNumberWithNextDigits()`,\n // which formats based on the chosen formatting pattern.\n //\n // Attempting to format complete phone number first is how it's done\n // in Google's `libphonenumber`, so this library just follows it.\n // Google's `libphonenumber` code doesn't explain in detail why does it\n // attempt to format digits as a complete phone number\n // instead of just going with a previoulsy (or newly) chosen `format`:\n //\n // \"Checks to see if there is an exact pattern match for these digits.\n // If so, we should use this instead of any other formatting template\n // whose leadingDigitsPattern also matches the input.\"\n //\n if (canFormatCompleteNumber(state.nationalSignificantNumber, this.metadata)) {\n for (var _iterator = _createForOfIteratorHelperLoose(this.matchingFormats), _step; !(_step = _iterator()).done;) {\n var format = _step.value;\n var formattedCompleteNumber = formatCompleteNumber(state, format, {\n metadata: this.metadata,\n shouldTryNationalPrefixFormattingRule: function shouldTryNationalPrefixFormattingRule(format) {\n return _this.shouldTryNationalPrefixFormattingRule(format, {\n international: state.international,\n nationalPrefix: state.nationalPrefix\n });\n },\n getSeparatorAfterNationalPrefix: function getSeparatorAfterNationalPrefix(format) {\n return _this.getSeparatorAfterNationalPrefix(format);\n }\n });\n\n if (formattedCompleteNumber) {\n this.resetFormat();\n this.chosenFormat = format;\n this.setNationalNumberTemplate(formattedCompleteNumber.replace(/\\d/g, DIGIT_PLACEHOLDER), state);\n this.populatedNationalNumberTemplate = formattedCompleteNumber; // With a new formatting template, the matched position\n // using the old template needs to be reset.\n\n this.populatedNationalNumberTemplatePosition = this.template.lastIndexOf(DIGIT_PLACEHOLDER);\n return formattedCompleteNumber;\n }\n }\n } // Format the digits as a partial (incomplete) phone number\n // using the previously chosen formatting pattern (or a newly chosen one).\n\n\n return this.formatNationalNumberWithNextDigits(nextDigits, state);\n } // Formats the next phone number digits.\n\n }, {\n key: \"formatNationalNumberWithNextDigits\",\n value: function formatNationalNumberWithNextDigits(nextDigits, state) {\n var previouslyChosenFormat = this.chosenFormat; // Choose a format from the list of matching ones.\n\n var newlyChosenFormat = this.chooseFormat(state);\n\n if (newlyChosenFormat) {\n if (newlyChosenFormat === previouslyChosenFormat) {\n // If it can format the next (current) digits\n // using the previously chosen phone number format\n // then return the updated formatted number.\n return this.formatNextNationalNumberDigits(nextDigits);\n } else {\n // If a more appropriate phone number format\n // has been chosen for these \"leading digits\",\n // then re-format the national phone number part\n // using the newly selected format.\n return this.formatNextNationalNumberDigits(state.getNationalDigits());\n }\n }\n }\n }, {\n key: \"narrowDownMatchingFormats\",\n value: function narrowDownMatchingFormats(_ref2) {\n var _this2 = this;\n\n var nationalSignificantNumber = _ref2.nationalSignificantNumber,\n nationalPrefix = _ref2.nationalPrefix,\n international = _ref2.international;\n var leadingDigits = nationalSignificantNumber; // \"leading digits\" pattern list starts with a\n // \"leading digits\" pattern fitting a maximum of 3 leading digits.\n // So, after a user inputs 3 digits of a national (significant) phone number\n // this national (significant) number can already be formatted.\n // The next \"leading digits\" pattern is for 4 leading digits max,\n // and the \"leading digits\" pattern after it is for 5 leading digits max, etc.\n // This implementation is different from Google's\n // in that it searches for a fitting format\n // even if the user has entered less than\n // `MIN_LEADING_DIGITS_LENGTH` digits of a national number.\n // Because some leading digit patterns already match for a single first digit.\n\n var leadingDigitsPatternIndex = leadingDigits.length - MIN_LEADING_DIGITS_LENGTH;\n\n if (leadingDigitsPatternIndex < 0) {\n leadingDigitsPatternIndex = 0;\n }\n\n this.matchingFormats = this.matchingFormats.filter(function (format) {\n return _this2.formatSuits(format, international, nationalPrefix) && _this2.formatMatches(format, leadingDigits, leadingDigitsPatternIndex);\n }); // If there was a phone number format chosen\n // and it no longer holds given the new leading digits then reset it.\n // The test for this `if` condition is marked as:\n // \"Reset a chosen format when it no longer holds given the new leading digits\".\n // To construct a valid test case for this one can find a country\n // in `PhoneNumberMetadata.xml` yielding one format for 3 ``\n // and yielding another format for 4 `` (Australia in this case).\n\n if (this.chosenFormat && this.matchingFormats.indexOf(this.chosenFormat) === -1) {\n this.resetFormat();\n }\n }\n }, {\n key: \"formatSuits\",\n value: function formatSuits(format, international, nationalPrefix) {\n // When a prefix before a national (significant) number is\n // simply a national prefix, then it's parsed as `this.nationalPrefix`.\n // In more complex cases, a prefix before national (significant) number\n // could include a national prefix as well as some \"capturing groups\",\n // and in that case there's no info whether a national prefix has been parsed.\n // If national prefix is not used when formatting a phone number\n // using this format, but a national prefix has been entered by the user,\n // and was extracted, then discard such phone number format.\n // In Google's \"AsYouType\" formatter code, the equivalent would be this part:\n // https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L175-L184\n if (nationalPrefix && !format.usesNationalPrefix() && // !format.domesticCarrierCodeFormattingRule() &&\n !format.nationalPrefixIsOptionalWhenFormattingInNationalFormat()) {\n return false;\n } // If national prefix is mandatory for this phone number format\n // and there're no guarantees that a national prefix is present in user input\n // then discard this phone number format as not suitable.\n // In Google's \"AsYouType\" formatter code, the equivalent would be this part:\n // https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L185-L193\n\n\n if (!international && !nationalPrefix && format.nationalPrefixIsMandatoryWhenFormattingInNationalFormat()) {\n return false;\n }\n\n return true;\n }\n }, {\n key: \"formatMatches\",\n value: function formatMatches(format, leadingDigits, leadingDigitsPatternIndex) {\n var leadingDigitsPatternsCount = format.leadingDigitsPatterns().length; // If this format is not restricted to a certain\n // leading digits pattern then it fits.\n // The test case could be found by searching for \"leadingDigitsPatternsCount === 0\".\n\n if (leadingDigitsPatternsCount === 0) {\n return true;\n } // Start narrowing down the list of possible formats based on the leading digits.\n // (only previously matched formats take part in the narrowing down process)\n // `leading_digits_patterns` start with 3 digits min\n // and then go up from there one digit at a time.\n\n\n leadingDigitsPatternIndex = Math.min(leadingDigitsPatternIndex, leadingDigitsPatternsCount - 1);\n var leadingDigitsPattern = format.leadingDigitsPatterns()[leadingDigitsPatternIndex]; // Google imposes a requirement on the leading digits\n // to be minimum 3 digits long in order to be eligible\n // for checking those with a leading digits pattern.\n //\n // Since `leading_digits_patterns` start with 3 digits min,\n // Google's original `libphonenumber` library only starts\n // excluding any non-matching formats only when the\n // national number entered so far is at least 3 digits long,\n // otherwise format matching would give false negatives.\n //\n // For example, when the digits entered so far are `2`\n // and the leading digits pattern is `21` –\n // it's quite obvious in this case that the format could be the one\n // but due to the absence of further digits it would give false negative.\n //\n // Also, `leading_digits_patterns` doesn't always correspond to a single\n // digits count. For example, `60|8` pattern would already match `8`\n // but the `60` part would require having at least two leading digits,\n // so the whole pattern would require inputting two digits first in order to\n // decide on whether it matches the input, even when the input is \"80\".\n //\n // This library — `libphonenumber-js` — allows filtering by `leading_digits_patterns`\n // even when there's only 1 or 2 digits of the national (significant) number.\n // To do that, it uses a non-strict pattern matcher written specifically for that.\n //\n\n if (leadingDigits.length < MIN_LEADING_DIGITS_LENGTH) {\n // Before leading digits < 3 matching was implemented:\n // return true\n //\n // After leading digits < 3 matching was implemented:\n try {\n return new PatternMatcher(leadingDigitsPattern).match(leadingDigits, {\n allowOverflow: true\n }) !== undefined;\n } catch (error)\n /* istanbul ignore next */\n {\n // There's a slight possibility that there could be some undiscovered bug\n // in the pattern matcher code. Since the \"leading digits < 3 matching\"\n // feature is not \"essential\" for operation, it can fall back to the old way\n // in case of any issues rather than halting the application's execution.\n console.error(error);\n return true;\n }\n } // If at least `MIN_LEADING_DIGITS_LENGTH` digits of a national number are\n // available then use the usual regular expression matching.\n //\n // The whole pattern is wrapped in round brackets (`()`) because\n // the pattern can use \"or\" operator (`|`) at the top level of the pattern.\n //\n\n\n return new RegExp(\"^(\".concat(leadingDigitsPattern, \")\")).test(leadingDigits);\n }\n }, {\n key: \"getFormatFormat\",\n value: function getFormatFormat(format, international) {\n return international ? format.internationalFormat() : format.format();\n }\n }, {\n key: \"chooseFormat\",\n value: function chooseFormat(state) {\n var _this3 = this;\n\n var _loop = function _loop() {\n var format = _step2.value;\n\n // If this format is currently being used\n // and is still suitable, then stick to it.\n if (_this3.chosenFormat === format) {\n return \"break\";\n } // Sometimes, a formatting rule inserts additional digits in a phone number,\n // and \"as you type\" formatter can't do that: it should only use the digits\n // that the user has input.\n //\n // For example, in Argentina, there's a format for mobile phone numbers:\n //\n // {\n // \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\n // \"leading_digits_patterns\": [\"91\"],\n // \"national_prefix_formatting_rule\": \"0$1\",\n // \"format\": \"$2 15-$3-$4\",\n // \"international_format\": \"$1 $2 $3-$4\"\n // }\n //\n // In that format, `international_format` is used instead of `format`\n // because `format` inserts `15` in the formatted number,\n // and `AsYouType` formatter should only use the digits\n // the user has actually input, without adding any extra digits.\n // In this case, it wouldn't make a difference, because the `15`\n // is first stripped when applying `national_prefix_for_parsing`\n // and then re-added when using `format`, so in reality it doesn't\n // add any new digits to the number, but to detect that, the code\n // would have to be more complex: it would have to try formatting\n // the digits using the format and then see if any digits have\n // actually been added or removed, and then, every time a new digit\n // is input, it should re-check whether the chosen format doesn't\n // alter the digits.\n //\n // Google's code doesn't go that far, and so does this library:\n // it simply requires that a `format` doesn't add any additonal\n // digits to user's input.\n //\n // Also, people in general should move from inputting phone numbers\n // in national format (possibly with national prefixes)\n // and use international phone number format instead:\n // it's a logical thing in the modern age of mobile phones,\n // globalization and the internet.\n //\n\n /* istanbul ignore if */\n\n\n if (!NON_ALTERING_FORMAT_REG_EXP.test(_this3.getFormatFormat(format, state.international))) {\n return \"continue\";\n }\n\n if (!_this3.createTemplateForFormat(format, state)) {\n // Remove the format if it can't generate a template.\n _this3.matchingFormats = _this3.matchingFormats.filter(function (_) {\n return _ !== format;\n });\n return \"continue\";\n }\n\n _this3.chosenFormat = format;\n return \"break\";\n };\n\n // When there are multiple available formats, the formatter uses the first\n // format where a formatting template could be created.\n //\n // For some weird reason, `istanbul` says \"else path not taken\"\n // for the `for of` line below. Supposedly that means that\n // the loop doesn't ever go over the last element in the list.\n // That's true because there always is `this.chosenFormat`\n // when `this.matchingFormats` is non-empty.\n // And, for some weird reason, it doesn't think that the case\n // with empty `this.matchingFormats` qualifies for a valid \"else\" path.\n // So simply muting this `istanbul` warning.\n // It doesn't skip the contents of the `for of` loop,\n // it just skips the `for of` line.\n //\n\n /* istanbul ignore next */\n for (var _iterator2 = _createForOfIteratorHelperLoose(this.matchingFormats.slice()), _step2; !(_step2 = _iterator2()).done;) {\n var _ret = _loop();\n\n if (_ret === \"break\") break;\n if (_ret === \"continue\") continue;\n }\n\n if (!this.chosenFormat) {\n // No format matches the national (significant) phone number.\n this.resetFormat();\n }\n\n return this.chosenFormat;\n }\n }, {\n key: \"createTemplateForFormat\",\n value: function createTemplateForFormat(format, state) {\n // The formatter doesn't format numbers when numberPattern contains '|', e.g.\n // (20|3)\\d{4}. In those cases we quickly return.\n // (Though there's no such format in current metadata)\n\n /* istanbul ignore if */\n if (SUPPORT_LEGACY_FORMATTING_PATTERNS && format.pattern().indexOf('|') >= 0) {\n return;\n } // Get formatting template for this phone number format\n\n\n var template = this.getTemplateForFormat(format, state); // If the national number entered is too long\n // for any phone number format, then abort.\n\n if (template) {\n this.setNationalNumberTemplate(template, state);\n return true;\n }\n }\n }, {\n key: \"getSeparatorAfterNationalPrefix\",\n value: function getSeparatorAfterNationalPrefix(format) {\n // `US` metadata doesn't have a `national_prefix_formatting_rule`,\n // so the `if` condition below doesn't apply to `US`,\n // but in reality there shoudl be a separator\n // between a national prefix and a national (significant) number.\n // So `US` national prefix separator is a \"special\" \"hardcoded\" case.\n if (this.isNANP) {\n return ' ';\n } // If a `format` has a `national_prefix_formatting_rule`\n // and that rule has a separator after a national prefix,\n // then it means that there should be a separator\n // between a national prefix and a national (significant) number.\n\n\n if (format && format.nationalPrefixFormattingRule() && NATIONAL_PREFIX_SEPARATORS_PATTERN.test(format.nationalPrefixFormattingRule())) {\n return ' ';\n } // At this point, there seems to be no clear evidence that\n // there should be a separator between a national prefix\n // and a national (significant) number. So don't insert one.\n\n\n return '';\n }\n }, {\n key: \"getInternationalPrefixBeforeCountryCallingCode\",\n value: function getInternationalPrefixBeforeCountryCallingCode(_ref3, options) {\n var IDDPrefix = _ref3.IDDPrefix,\n missingPlus = _ref3.missingPlus;\n\n if (IDDPrefix) {\n return options && options.spacing === false ? IDDPrefix : IDDPrefix + ' ';\n }\n\n if (missingPlus) {\n return '';\n }\n\n return '+';\n }\n }, {\n key: \"getTemplate\",\n value: function getTemplate(state) {\n if (!this.template) {\n return;\n } // `this.template` holds the template for a \"complete\" phone number.\n // The currently entered phone number is most likely not \"complete\",\n // so trim all non-populated digits.\n\n\n var index = -1;\n var i = 0;\n var internationalPrefix = state.international ? this.getInternationalPrefixBeforeCountryCallingCode(state, {\n spacing: false\n }) : '';\n\n while (i < internationalPrefix.length + state.getDigitsWithoutInternationalPrefix().length) {\n index = this.template.indexOf(DIGIT_PLACEHOLDER, index + 1);\n i++;\n }\n\n return cutAndStripNonPairedParens(this.template, index + 1);\n }\n }, {\n key: \"setNationalNumberTemplate\",\n value: function setNationalNumberTemplate(template, state) {\n this.nationalNumberTemplate = template;\n this.populatedNationalNumberTemplate = template; // With a new formatting template, the matched position\n // using the old template needs to be reset.\n\n this.populatedNationalNumberTemplatePosition = -1; // For convenience, the public `.template` property\n // contains the whole international number\n // if the phone number being input is international:\n // 'x' for the '+' sign, 'x'es for the country phone code,\n // a spacebar and then the template for the formatted national number.\n\n if (state.international) {\n this.template = this.getInternationalPrefixBeforeCountryCallingCode(state).replace(/[\\d\\+]/g, DIGIT_PLACEHOLDER) + repeat(DIGIT_PLACEHOLDER, state.callingCode.length) + ' ' + template;\n } else {\n this.template = template;\n }\n }\n /**\r\n * Generates formatting template for a national phone number,\r\n * optionally containing a national prefix, for a format.\r\n * @param {Format} format\r\n * @param {string} nationalPrefix\r\n * @return {string}\r\n */\n\n }, {\n key: \"getTemplateForFormat\",\n value: function getTemplateForFormat(format, _ref4) {\n var nationalSignificantNumber = _ref4.nationalSignificantNumber,\n international = _ref4.international,\n nationalPrefix = _ref4.nationalPrefix,\n complexPrefixBeforeNationalSignificantNumber = _ref4.complexPrefixBeforeNationalSignificantNumber;\n var pattern = format.pattern();\n /* istanbul ignore else */\n\n if (SUPPORT_LEGACY_FORMATTING_PATTERNS) {\n pattern = pattern // Replace anything in the form of [..] with \\d\n .replace(CREATE_CHARACTER_CLASS_PATTERN(), '\\\\d') // Replace any standalone digit (not the one in `{}`) with \\d\n .replace(CREATE_STANDALONE_DIGIT_PATTERN(), '\\\\d');\n } // Generate a dummy national number (consisting of `9`s)\n // that fits this format's `pattern`.\n //\n // This match will always succeed,\n // because the \"longest dummy phone number\"\n // has enough length to accomodate any possible\n // national phone number format pattern.\n //\n\n\n var digits = LONGEST_DUMMY_PHONE_NUMBER.match(pattern)[0]; // If the national number entered is too long\n // for any phone number format, then abort.\n\n if (nationalSignificantNumber.length > digits.length) {\n return;\n } // Get a formatting template which can be used to efficiently format\n // a partial number where digits are added one by one.\n // Below `strictPattern` is used for the\n // regular expression (with `^` and `$`).\n // This wasn't originally in Google's `libphonenumber`\n // and I guess they don't really need it\n // because they're not using \"templates\" to format phone numbers\n // but I added `strictPattern` after encountering\n // South Korean phone number formatting bug.\n //\n // Non-strict regular expression bug demonstration:\n //\n // this.nationalSignificantNumber : `111111111` (9 digits)\n //\n // pattern : (\\d{2})(\\d{3,4})(\\d{4})\n // format : `$1 $2 $3`\n // digits : `9999999999` (10 digits)\n //\n // '9999999999'.replace(new RegExp(/(\\d{2})(\\d{3,4})(\\d{4})/g), '$1 $2 $3') = \"99 9999 9999\"\n //\n // template : xx xxxx xxxx\n //\n // But the correct template in this case is `xx xxx xxxx`.\n // The template was generated incorrectly because of the\n // `{3,4}` variability in the `pattern`.\n //\n // The fix is, if `this.nationalSignificantNumber` has already sufficient length\n // to satisfy the `pattern` completely then `this.nationalSignificantNumber`\n // is used instead of `digits`.\n\n\n var strictPattern = new RegExp('^' + pattern + '$');\n var nationalNumberDummyDigits = nationalSignificantNumber.replace(/\\d/g, DUMMY_DIGIT); // If `this.nationalSignificantNumber` has already sufficient length\n // to satisfy the `pattern` completely then use it\n // instead of `digits`.\n\n if (strictPattern.test(nationalNumberDummyDigits)) {\n digits = nationalNumberDummyDigits;\n }\n\n var numberFormat = this.getFormatFormat(format, international);\n var nationalPrefixIncludedInTemplate; // If a user did input a national prefix (and that's guaranteed),\n // and if a `format` does have a national prefix formatting rule,\n // then see if that national prefix formatting rule\n // prepends exactly the same national prefix the user has input.\n // If that's the case, then use the `format` with the national prefix formatting rule.\n // Otherwise, use the `format` without the national prefix formatting rule,\n // and prepend a national prefix manually to it.\n\n if (this.shouldTryNationalPrefixFormattingRule(format, {\n international: international,\n nationalPrefix: nationalPrefix\n })) {\n var numberFormatWithNationalPrefix = numberFormat.replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()); // If `national_prefix_formatting_rule` of a `format` simply prepends\n // national prefix at the start of a national (significant) number,\n // then such formatting can be used with `AsYouType` formatter.\n // There seems to be no `else` case: everywhere in metadata,\n // national prefix formatting rule is national prefix + $1,\n // or `($1)`, in which case such format isn't even considered\n // when the user has input a national prefix.\n\n /* istanbul ignore else */\n\n if (parseDigits(format.nationalPrefixFormattingRule()) === (nationalPrefix || '') + parseDigits('$1')) {\n numberFormat = numberFormatWithNationalPrefix;\n nationalPrefixIncludedInTemplate = true; // Replace all digits of the national prefix in the formatting template\n // with `DIGIT_PLACEHOLDER`s.\n\n if (nationalPrefix) {\n var i = nationalPrefix.length;\n\n while (i > 0) {\n numberFormat = numberFormat.replace(/\\d/, DIGIT_PLACEHOLDER);\n i--;\n }\n }\n }\n } // Generate formatting template for this phone number format.\n\n\n var template = digits // Format the dummy phone number according to the format.\n .replace(new RegExp(pattern), numberFormat) // Replace each dummy digit with a DIGIT_PLACEHOLDER.\n .replace(new RegExp(DUMMY_DIGIT, 'g'), DIGIT_PLACEHOLDER); // If a prefix of a national (significant) number is not as simple\n // as just a basic national prefix, then just prepend such prefix\n // before the national (significant) number, optionally spacing\n // the two with a whitespace.\n\n if (!nationalPrefixIncludedInTemplate) {\n if (complexPrefixBeforeNationalSignificantNumber) {\n // Prepend the prefix to the template manually.\n template = repeat(DIGIT_PLACEHOLDER, complexPrefixBeforeNationalSignificantNumber.length) + ' ' + template;\n } else if (nationalPrefix) {\n // Prepend national prefix to the template manually.\n template = repeat(DIGIT_PLACEHOLDER, nationalPrefix.length) + this.getSeparatorAfterNationalPrefix(format) + template;\n }\n }\n\n if (international) {\n template = applyInternationalSeparatorStyle(template);\n }\n\n return template;\n }\n }, {\n key: \"formatNextNationalNumberDigits\",\n value: function formatNextNationalNumberDigits(digits) {\n var result = populateTemplateWithDigits(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition, digits);\n\n if (!result) {\n // Reset the format.\n this.resetFormat();\n return;\n }\n\n this.populatedNationalNumberTemplate = result[0];\n this.populatedNationalNumberTemplatePosition = result[1]; // Return the formatted phone number so far.\n\n return cutAndStripNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1); // The old way which was good for `input-format` but is not so good\n // for `react-phone-number-input`'s default input (`InputBasic`).\n // return closeNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1)\n // \t.replace(new RegExp(DIGIT_PLACEHOLDER, 'g'), ' ')\n }\n }, {\n key: \"shouldTryNationalPrefixFormattingRule\",\n value: function shouldTryNationalPrefixFormattingRule(format, _ref5) {\n var international = _ref5.international,\n nationalPrefix = _ref5.nationalPrefix;\n\n if (format.nationalPrefixFormattingRule()) {\n // In some countries, `national_prefix_formatting_rule` is `($1)`,\n // so it applies even if the user hasn't input a national prefix.\n // `format.usesNationalPrefix()` detects such cases.\n var usesNationalPrefix = format.usesNationalPrefix();\n\n if (usesNationalPrefix && nationalPrefix || !usesNationalPrefix && !international) {\n return true;\n }\n }\n }\n }]);\n\n return AsYouTypeFormatter;\n}();\n\nexport { AsYouTypeFormatter as default };\n//# sourceMappingURL=AsYouTypeFormatter.js.map","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport _extractCountryCallingCode from './helpers/extractCountryCallingCode.js';\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js';\nimport extractNationalNumberFromPossiblyIncompleteNumber from './helpers/extractNationalNumberFromPossiblyIncompleteNumber.js';\nimport stripIddPrefix from './helpers/stripIddPrefix.js';\nimport parseDigits from './helpers/parseDigits.js';\nimport { VALID_DIGITS, VALID_PUNCTUATION, PLUS_CHARS } from './constants.js';\nvar VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART = '[' + VALID_PUNCTUATION + VALID_DIGITS + ']+';\nvar VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN = new RegExp('^' + VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART + '$', 'i');\nvar VALID_FORMATTED_PHONE_NUMBER_PART = '(?:' + '[' + PLUS_CHARS + ']' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*' + '|' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']+' + ')';\nvar AFTER_PHONE_NUMBER_DIGITS_END_PATTERN = new RegExp('[^' + VALID_PUNCTUATION + VALID_DIGITS + ']+' + '.*' + '$'); // Tests whether `national_prefix_for_parsing` could match\n// different national prefixes.\n// Matches anything that's not a digit or a square bracket.\n\nvar COMPLEX_NATIONAL_PREFIX = /[^\\d\\[\\]]/;\n\nvar AsYouTypeParser = /*#__PURE__*/function () {\n function AsYouTypeParser(_ref) {\n var defaultCountry = _ref.defaultCountry,\n defaultCallingCode = _ref.defaultCallingCode,\n metadata = _ref.metadata,\n onNationalSignificantNumberChange = _ref.onNationalSignificantNumberChange;\n\n _classCallCheck(this, AsYouTypeParser);\n\n this.defaultCountry = defaultCountry;\n this.defaultCallingCode = defaultCallingCode;\n this.metadata = metadata;\n this.onNationalSignificantNumberChange = onNationalSignificantNumberChange;\n }\n\n _createClass(AsYouTypeParser, [{\n key: \"input\",\n value: function input(text, state) {\n var _extractFormattedDigi = extractFormattedDigitsAndPlus(text),\n _extractFormattedDigi2 = _slicedToArray(_extractFormattedDigi, 2),\n formattedDigits = _extractFormattedDigi2[0],\n hasPlus = _extractFormattedDigi2[1];\n\n var digits = parseDigits(formattedDigits); // Checks for a special case: just a leading `+` has been entered.\n\n var justLeadingPlus;\n\n if (hasPlus) {\n if (!state.digits) {\n state.startInternationalNumber();\n\n if (!digits) {\n justLeadingPlus = true;\n }\n }\n }\n\n if (digits) {\n this.inputDigits(digits, state);\n }\n\n return {\n digits: digits,\n justLeadingPlus: justLeadingPlus\n };\n }\n /**\r\n * Inputs \"next\" phone number digits.\r\n * @param {string} digits\r\n * @return {string} [formattedNumber] Formatted national phone number (if it can be formatted at this stage). Returning `undefined` means \"don't format the national phone number at this stage\".\r\n */\n\n }, {\n key: \"inputDigits\",\n value: function inputDigits(nextDigits, state) {\n var digits = state.digits;\n var hasReceivedThreeLeadingDigits = digits.length < 3 && digits.length + nextDigits.length >= 3; // Append phone number digits.\n\n state.appendDigits(nextDigits); // Attempt to extract IDD prefix:\n // Some users input their phone number in international format,\n // but in an \"out-of-country\" dialing format instead of using the leading `+`.\n // https://github.com/catamphetamine/libphonenumber-js/issues/185\n // Detect such numbers as soon as there're at least 3 digits.\n // Google's library attempts to extract IDD prefix at 3 digits,\n // so this library just copies that behavior.\n // I guess that's because the most commot IDD prefixes are\n // `00` (Europe) and `011` (US).\n // There exist really long IDD prefixes too:\n // for example, in Australia the default IDD prefix is `0011`,\n // and it could even be as long as `14880011`.\n // An IDD prefix is extracted here, and then every time when\n // there's a new digit and the number couldn't be formatted.\n\n if (hasReceivedThreeLeadingDigits) {\n this.extractIddPrefix(state);\n }\n\n if (this.isWaitingForCountryCallingCode(state)) {\n if (!this.extractCountryCallingCode(state)) {\n return;\n }\n } else {\n state.appendNationalSignificantNumberDigits(nextDigits);\n } // If a phone number is being input in international format,\n // then it's not valid for it to have a national prefix.\n // Still, some people incorrectly input such numbers with a national prefix.\n // In such cases, only attempt to strip a national prefix if the number becomes too long.\n // (but that is done later, not here)\n\n\n if (!state.international) {\n if (!this.hasExtractedNationalSignificantNumber) {\n this.extractNationalSignificantNumber(state.getNationalDigits(), function (stateUpdate) {\n return state.update(stateUpdate);\n });\n }\n }\n }\n }, {\n key: \"isWaitingForCountryCallingCode\",\n value: function isWaitingForCountryCallingCode(_ref2) {\n var international = _ref2.international,\n callingCode = _ref2.callingCode;\n return international && !callingCode;\n } // Extracts a country calling code from a number\n // being entered in internatonal format.\n\n }, {\n key: \"extractCountryCallingCode\",\n value: function extractCountryCallingCode(state) {\n var _extractCountryCallin = _extractCountryCallingCode('+' + state.getDigitsWithoutInternationalPrefix(), this.defaultCountry, this.defaultCallingCode, this.metadata.metadata),\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n number = _extractCountryCallin.number;\n\n if (countryCallingCode) {\n state.setCallingCode(countryCallingCode);\n state.update({\n nationalSignificantNumber: number\n });\n return true;\n }\n }\n }, {\n key: \"reset\",\n value: function reset(numberingPlan) {\n if (numberingPlan) {\n this.hasSelectedNumberingPlan = true;\n\n var nationalPrefixForParsing = numberingPlan._nationalPrefixForParsing();\n\n this.couldPossiblyExtractAnotherNationalSignificantNumber = nationalPrefixForParsing && COMPLEX_NATIONAL_PREFIX.test(nationalPrefixForParsing);\n } else {\n this.hasSelectedNumberingPlan = undefined;\n this.couldPossiblyExtractAnotherNationalSignificantNumber = undefined;\n }\n }\n /**\r\n * Extracts a national (significant) number from user input.\r\n * Google's library is different in that it only applies `national_prefix_for_parsing`\r\n * and doesn't apply `national_prefix_transform_rule` after that.\r\n * https://github.com/google/libphonenumber/blob/a3d70b0487875475e6ad659af404943211d26456/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L539\r\n * @return {boolean} [extracted]\r\n */\n\n }, {\n key: \"extractNationalSignificantNumber\",\n value: function extractNationalSignificantNumber(nationalDigits, setState) {\n if (!this.hasSelectedNumberingPlan) {\n return;\n }\n\n var _extractNationalNumbe = extractNationalNumberFromPossiblyIncompleteNumber(nationalDigits, this.metadata),\n nationalPrefix = _extractNationalNumbe.nationalPrefix,\n nationalNumber = _extractNationalNumbe.nationalNumber,\n carrierCode = _extractNationalNumbe.carrierCode;\n\n if (nationalNumber === nationalDigits) {\n return;\n }\n\n this.onExtractedNationalNumber(nationalPrefix, carrierCode, nationalNumber, nationalDigits, setState);\n return true;\n }\n /**\r\n * In Google's code this function is called \"attempt to extract longer NDD\".\r\n * \"Some national prefixes are a substring of others\", they say.\r\n * @return {boolean} [result] — Returns `true` if extracting a national prefix produced different results from what they were.\r\n */\n\n }, {\n key: \"extractAnotherNationalSignificantNumber\",\n value: function extractAnotherNationalSignificantNumber(nationalDigits, prevNationalSignificantNumber, setState) {\n if (!this.hasExtractedNationalSignificantNumber) {\n return this.extractNationalSignificantNumber(nationalDigits, setState);\n }\n\n if (!this.couldPossiblyExtractAnotherNationalSignificantNumber) {\n return;\n }\n\n var _extractNationalNumbe2 = extractNationalNumberFromPossiblyIncompleteNumber(nationalDigits, this.metadata),\n nationalPrefix = _extractNationalNumbe2.nationalPrefix,\n nationalNumber = _extractNationalNumbe2.nationalNumber,\n carrierCode = _extractNationalNumbe2.carrierCode; // If a national prefix has been extracted previously,\n // then it's always extracted as additional digits are added.\n // That's assuming `extractNationalNumberFromPossiblyIncompleteNumber()`\n // doesn't do anything different from what it currently does.\n // So, just in case, here's this check, though it doesn't occur.\n\n /* istanbul ignore if */\n\n\n if (nationalNumber === prevNationalSignificantNumber) {\n return;\n }\n\n this.onExtractedNationalNumber(nationalPrefix, carrierCode, nationalNumber, nationalDigits, setState);\n return true;\n }\n }, {\n key: \"onExtractedNationalNumber\",\n value: function onExtractedNationalNumber(nationalPrefix, carrierCode, nationalSignificantNumber, nationalDigits, setState) {\n var complexPrefixBeforeNationalSignificantNumber;\n var nationalSignificantNumberMatchesInput; // This check also works with empty `this.nationalSignificantNumber`.\n\n var nationalSignificantNumberIndex = nationalDigits.lastIndexOf(nationalSignificantNumber); // If the extracted national (significant) number is the\n // last substring of the `digits`, then it means that it hasn't been altered:\n // no digits have been removed from the national (significant) number\n // while applying `national_prefix_transform_rule`.\n // https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\n\n if (nationalSignificantNumberIndex >= 0 && nationalSignificantNumberIndex === nationalDigits.length - nationalSignificantNumber.length) {\n nationalSignificantNumberMatchesInput = true; // If a prefix of a national (significant) number is not as simple\n // as just a basic national prefix, then such prefix is stored in\n // `this.complexPrefixBeforeNationalSignificantNumber` property and will be\n // prepended \"as is\" to the national (significant) number to produce\n // a formatted result.\n\n var prefixBeforeNationalNumber = nationalDigits.slice(0, nationalSignificantNumberIndex); // `prefixBeforeNationalNumber` is always non-empty,\n // because `onExtractedNationalNumber()` isn't called\n // when a national (significant) number hasn't been actually \"extracted\":\n // when a national (significant) number is equal to the national part of `digits`,\n // then `onExtractedNationalNumber()` doesn't get called.\n\n if (prefixBeforeNationalNumber !== nationalPrefix) {\n complexPrefixBeforeNationalSignificantNumber = prefixBeforeNationalNumber;\n }\n }\n\n setState({\n nationalPrefix: nationalPrefix,\n carrierCode: carrierCode,\n nationalSignificantNumber: nationalSignificantNumber,\n nationalSignificantNumberMatchesInput: nationalSignificantNumberMatchesInput,\n complexPrefixBeforeNationalSignificantNumber: complexPrefixBeforeNationalSignificantNumber\n }); // `onExtractedNationalNumber()` is only called when\n // the national (significant) number actually did change.\n\n this.hasExtractedNationalSignificantNumber = true;\n this.onNationalSignificantNumberChange();\n }\n }, {\n key: \"reExtractNationalSignificantNumber\",\n value: function reExtractNationalSignificantNumber(state) {\n // Attempt to extract a national prefix.\n //\n // Some people incorrectly input national prefix\n // in an international phone number.\n // For example, some people write British phone numbers as `+44(0)...`.\n //\n // Also, in some rare cases, it is valid for a national prefix\n // to be a part of an international phone number.\n // For example, mobile phone numbers in Mexico are supposed to be\n // dialled internationally using a `1` national prefix,\n // so the national prefix will be part of an international number.\n //\n // Quote from:\n // https://www.mexperience.com/dialing-cell-phones-in-mexico/\n //\n // \"Dialing a Mexican cell phone from abroad\n // When you are calling a cell phone number in Mexico from outside Mexico,\n // it’s necessary to dial an additional “1” after Mexico’s country code\n // (which is “52”) and before the area code.\n // You also ignore the 045, and simply dial the area code and the\n // cell phone’s number.\n //\n // If you don’t add the “1”, you’ll receive a recorded announcement\n // asking you to redial using it.\n //\n // For example, if you are calling from the USA to a cell phone\n // in Mexico City, you would dial +52 – 1 – 55 – 1234 5678.\n // (Note that this is different to calling a land line in Mexico City\n // from abroad, where the number dialed would be +52 – 55 – 1234 5678)\".\n //\n // Google's demo output:\n // https://libphonenumber.appspot.com/phonenumberparser?number=%2b5215512345678&country=MX\n //\n if (this.extractAnotherNationalSignificantNumber(state.getNationalDigits(), state.nationalSignificantNumber, function (stateUpdate) {\n return state.update(stateUpdate);\n })) {\n return true;\n } // If no format matches the phone number, then it could be\n // \"a really long IDD\" (quote from a comment in Google's library).\n // An IDD prefix is first extracted when the user has entered at least 3 digits,\n // and then here — every time when there's a new digit and the number\n // couldn't be formatted.\n // For example, in Australia the default IDD prefix is `0011`,\n // and it could even be as long as `14880011`.\n //\n // Could also check `!hasReceivedThreeLeadingDigits` here\n // to filter out the case when this check duplicates the one\n // already performed when there're 3 leading digits,\n // but it's not a big deal, and in most cases there\n // will be a suitable `format` when there're 3 leading digits.\n //\n\n\n if (this.extractIddPrefix(state)) {\n this.extractCallingCodeAndNationalSignificantNumber(state);\n return true;\n } // Google's AsYouType formatter supports sort of an \"autocorrection\" feature\n // when it \"autocorrects\" numbers that have been input for a country\n // with that country's calling code.\n // Such \"autocorrection\" feature looks weird, but different people have been requesting it:\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n // https://github.com/catamphetamine/libphonenumber-js/issues/375\n // https://github.com/catamphetamine/libphonenumber-js/issues/316\n\n\n if (this.fixMissingPlus(state)) {\n this.extractCallingCodeAndNationalSignificantNumber(state);\n return true;\n }\n }\n }, {\n key: \"extractIddPrefix\",\n value: function extractIddPrefix(state) {\n // An IDD prefix can't be present in a number written with a `+`.\n // Also, don't re-extract an IDD prefix if has already been extracted.\n var international = state.international,\n IDDPrefix = state.IDDPrefix,\n digits = state.digits,\n nationalSignificantNumber = state.nationalSignificantNumber;\n\n if (international || IDDPrefix) {\n return;\n } // Some users input their phone number in \"out-of-country\"\n // dialing format instead of using the leading `+`.\n // https://github.com/catamphetamine/libphonenumber-js/issues/185\n // Detect such numbers.\n\n\n var numberWithoutIDD = stripIddPrefix(digits, this.defaultCountry, this.defaultCallingCode, this.metadata.metadata);\n\n if (numberWithoutIDD !== undefined && numberWithoutIDD !== digits) {\n // If an IDD prefix was stripped then convert the IDD-prefixed number\n // to international number for subsequent parsing.\n state.update({\n IDDPrefix: digits.slice(0, digits.length - numberWithoutIDD.length)\n });\n this.startInternationalNumber(state, {\n country: undefined,\n callingCode: undefined\n });\n return true;\n }\n }\n }, {\n key: \"fixMissingPlus\",\n value: function fixMissingPlus(state) {\n if (!state.international) {\n var _extractCountryCallin2 = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(state.digits, this.defaultCountry, this.defaultCallingCode, this.metadata.metadata),\n newCallingCode = _extractCountryCallin2.countryCallingCode,\n number = _extractCountryCallin2.number;\n\n if (newCallingCode) {\n state.update({\n missingPlus: true\n });\n this.startInternationalNumber(state, {\n country: state.country,\n callingCode: newCallingCode\n });\n return true;\n }\n }\n }\n }, {\n key: \"startInternationalNumber\",\n value: function startInternationalNumber(state, _ref3) {\n var country = _ref3.country,\n callingCode = _ref3.callingCode;\n state.startInternationalNumber(country, callingCode); // If a national (significant) number has been extracted before, reset it.\n\n if (state.nationalSignificantNumber) {\n state.resetNationalSignificantNumber();\n this.onNationalSignificantNumberChange();\n this.hasExtractedNationalSignificantNumber = undefined;\n }\n }\n }, {\n key: \"extractCallingCodeAndNationalSignificantNumber\",\n value: function extractCallingCodeAndNationalSignificantNumber(state) {\n if (this.extractCountryCallingCode(state)) {\n // `this.extractCallingCode()` is currently called when the number\n // couldn't be formatted during the standard procedure.\n // Normally, the national prefix would be re-extracted\n // for an international number if such number couldn't be formatted,\n // but since it's already not able to be formatted,\n // there won't be yet another retry, so also extract national prefix here.\n this.extractNationalSignificantNumber(state.getNationalDigits(), function (stateUpdate) {\n return state.update(stateUpdate);\n });\n }\n }\n }]);\n\n return AsYouTypeParser;\n}();\n/**\r\n * Extracts formatted phone number from text (if there's any).\r\n * @param {string} text\r\n * @return {string} [formattedPhoneNumber]\r\n */\n\n\nexport { AsYouTypeParser as default };\n\nfunction extractFormattedPhoneNumber(text) {\n // Attempt to extract a possible number from the string passed in.\n var startsAt = text.search(VALID_FORMATTED_PHONE_NUMBER_PART);\n\n if (startsAt < 0) {\n return;\n } // Trim everything to the left of the phone number.\n\n\n text = text.slice(startsAt); // Trim the `+`.\n\n var hasPlus;\n\n if (text[0] === '+') {\n hasPlus = true;\n text = text.slice('+'.length);\n } // Trim everything to the right of the phone number.\n\n\n text = text.replace(AFTER_PHONE_NUMBER_DIGITS_END_PATTERN, ''); // Re-add the previously trimmed `+`.\n\n if (hasPlus) {\n text = '+' + text;\n }\n\n return text;\n}\n/**\r\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\r\n * @param {string} text\r\n * @return {any[]}\r\n */\n\n\nfunction _extractFormattedDigitsAndPlus(text) {\n // Extract a formatted phone number part from text.\n var extractedNumber = extractFormattedPhoneNumber(text) || ''; // Trim a `+`.\n\n if (extractedNumber[0] === '+') {\n return [extractedNumber.slice('+'.length), true];\n }\n\n return [extractedNumber];\n}\n/**\r\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\r\n * @param {string} text\r\n * @return {any[]}\r\n */\n\n\nexport function extractFormattedDigitsAndPlus(text) {\n var _extractFormattedDigi3 = _extractFormattedDigitsAndPlus(text),\n _extractFormattedDigi4 = _slicedToArray(_extractFormattedDigi3, 2),\n formattedDigits = _extractFormattedDigi4[0],\n hasPlus = _extractFormattedDigi4[1]; // If the extracted phone number part\n // can possibly be a part of some valid phone number\n // then parse phone number characters from a formatted phone number.\n\n\n if (!VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN.test(formattedDigits)) {\n formattedDigits = '';\n }\n\n return [formattedDigits, hasPlus];\n}\n//# sourceMappingURL=AsYouTypeParser.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport Metadata from './metadata.js';\nimport PhoneNumber from './PhoneNumber.js';\nimport AsYouTypeState from './AsYouTypeState.js';\nimport AsYouTypeFormatter, { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.js';\nimport AsYouTypeParser, { extractFormattedDigitsAndPlus } from './AsYouTypeParser.js';\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\n\nvar AsYouType = /*#__PURE__*/function () {\n /**\r\n * @param {(string|object)?} [optionsOrDefaultCountry] - The default country used for parsing non-international phone numbers. Can also be an `options` object.\r\n * @param {Object} metadata\r\n */\n function AsYouType(optionsOrDefaultCountry, metadata) {\n _classCallCheck(this, AsYouType);\n\n this.metadata = new Metadata(metadata);\n\n var _this$getCountryAndCa = this.getCountryAndCallingCode(optionsOrDefaultCountry),\n _this$getCountryAndCa2 = _slicedToArray(_this$getCountryAndCa, 2),\n defaultCountry = _this$getCountryAndCa2[0],\n defaultCallingCode = _this$getCountryAndCa2[1];\n\n this.defaultCountry = defaultCountry;\n this.defaultCallingCode = defaultCallingCode;\n this.reset();\n }\n\n _createClass(AsYouType, [{\n key: \"getCountryAndCallingCode\",\n value: function getCountryAndCallingCode(optionsOrDefaultCountry) {\n // Set `defaultCountry` and `defaultCallingCode` options.\n var defaultCountry;\n var defaultCallingCode; // Turns out `null` also has type \"object\". Weird.\n\n if (optionsOrDefaultCountry) {\n if (_typeof(optionsOrDefaultCountry) === 'object') {\n defaultCountry = optionsOrDefaultCountry.defaultCountry;\n defaultCallingCode = optionsOrDefaultCountry.defaultCallingCode;\n } else {\n defaultCountry = optionsOrDefaultCountry;\n }\n }\n\n if (defaultCountry && !this.metadata.hasCountry(defaultCountry)) {\n defaultCountry = undefined;\n }\n\n if (defaultCallingCode) {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (this.metadata.isNonGeographicCallingCode(defaultCallingCode)) {\n defaultCountry = '001';\n }\n }\n }\n\n return [defaultCountry, defaultCallingCode];\n }\n /**\r\n * Inputs \"next\" phone number characters.\r\n * @param {string} text\r\n * @return {string} Formatted phone number characters that have been input so far.\r\n */\n\n }, {\n key: \"input\",\n value: function input(text) {\n var _this$parser$input = this.parser.input(text, this.state),\n digits = _this$parser$input.digits,\n justLeadingPlus = _this$parser$input.justLeadingPlus;\n\n if (justLeadingPlus) {\n this.formattedOutput = '+';\n } else if (digits) {\n this.determineTheCountryIfNeeded(); // Match the available formats by the currently available leading digits.\n\n if (this.state.nationalSignificantNumber) {\n this.formatter.narrowDownMatchingFormats(this.state);\n }\n\n var formattedNationalNumber;\n\n if (this.metadata.hasSelectedNumberingPlan()) {\n formattedNationalNumber = this.formatter.format(digits, this.state);\n }\n\n if (formattedNationalNumber === undefined) {\n // See if another national (significant) number could be re-extracted.\n if (this.parser.reExtractNationalSignificantNumber(this.state)) {\n this.determineTheCountryIfNeeded(); // If it could, then re-try formatting the new national (significant) number.\n\n var nationalDigits = this.state.getNationalDigits();\n\n if (nationalDigits) {\n formattedNationalNumber = this.formatter.format(nationalDigits, this.state);\n }\n }\n }\n\n this.formattedOutput = formattedNationalNumber ? this.getFullNumber(formattedNationalNumber) : this.getNonFormattedNumber();\n }\n\n return this.formattedOutput;\n }\n }, {\n key: \"reset\",\n value: function reset() {\n var _this = this;\n\n this.state = new AsYouTypeState({\n onCountryChange: function onCountryChange(country) {\n // Before version `1.6.0`, the official `AsYouType` formatter API\n // included the `.country` property of an `AsYouType` instance.\n // Since that property (along with the others) have been moved to\n // `this.state`, `this.country` property is emulated for compatibility\n // with the old versions.\n _this.country = country;\n },\n onCallingCodeChange: function onCallingCodeChange(callingCode, country) {\n _this.metadata.selectNumberingPlan(country, callingCode);\n\n _this.formatter.reset(_this.metadata.numberingPlan, _this.state);\n\n _this.parser.reset(_this.metadata.numberingPlan);\n }\n });\n this.formatter = new AsYouTypeFormatter({\n state: this.state,\n metadata: this.metadata\n });\n this.parser = new AsYouTypeParser({\n defaultCountry: this.defaultCountry,\n defaultCallingCode: this.defaultCallingCode,\n metadata: this.metadata,\n state: this.state,\n onNationalSignificantNumberChange: function onNationalSignificantNumberChange() {\n _this.determineTheCountryIfNeeded();\n\n _this.formatter.reset(_this.metadata.numberingPlan, _this.state);\n }\n });\n this.state.reset(this.defaultCountry, this.defaultCallingCode);\n this.formattedOutput = '';\n return this;\n }\n /**\r\n * Returns `true` if the phone number is being input in international format.\r\n * In other words, returns `true` if and only if the parsed phone number starts with a `\"+\"`.\r\n * @return {boolean}\r\n */\n\n }, {\n key: \"isInternational\",\n value: function isInternational() {\n return this.state.international;\n }\n /**\r\n * Returns the \"calling code\" part of the phone number when it's being input\r\n * in an international format.\r\n * If no valid calling code has been entered so far, returns `undefined`.\r\n * @return {string} [callingCode]\r\n */\n\n }, {\n key: \"getCallingCode\",\n value: function getCallingCode() {\n // If the number is being input in national format and some \"default calling code\"\n // has been passed to `AsYouType` constructor, then `this.state.callingCode`\n // is equal to that \"default calling code\".\n //\n // If the number is being input in national format and no \"default calling code\"\n // has been passed to `AsYouType` constructor, then returns `undefined`,\n // even if a \"default country\" has been passed to `AsYouType` constructor.\n //\n if (this.isInternational()) {\n return this.state.callingCode;\n }\n } // A legacy alias.\n\n }, {\n key: \"getCountryCallingCode\",\n value: function getCountryCallingCode() {\n return this.getCallingCode();\n }\n /**\r\n * Returns a two-letter country code of the phone number.\r\n * Returns `undefined` for \"non-geographic\" phone numbering plans.\r\n * Returns `undefined` if no phone number has been input yet.\r\n * @return {string} [country]\r\n */\n\n }, {\n key: \"getCountry\",\n value: function getCountry() {\n var digits = this.state.digits; // Return `undefined` if no digits have been input yet.\n\n if (digits) {\n return this._getCountry();\n }\n }\n /**\r\n * Returns a two-letter country code of the phone number.\r\n * Returns `undefined` for \"non-geographic\" phone numbering plans.\r\n * @return {string} [country]\r\n */\n\n }, {\n key: \"_getCountry\",\n value: function _getCountry() {\n var country = this.state.country;\n /* istanbul ignore if */\n\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n // `AsYouType.getCountry()` returns `undefined`\n // for \"non-geographic\" phone numbering plans.\n if (country === '001') {\n return;\n }\n }\n\n return country;\n }\n }, {\n key: \"determineTheCountryIfNeeded\",\n value: function determineTheCountryIfNeeded() {\n // Suppose a user enters a phone number in international format,\n // and there're several countries corresponding to that country calling code,\n // and a country has been derived from the number, and then\n // a user enters one more digit and the number is no longer\n // valid for the derived country, so the country should be re-derived\n // on every new digit in those cases.\n //\n // If the phone number is being input in national format,\n // then it could be a case when `defaultCountry` wasn't specified\n // when creating `AsYouType` instance, and just `defaultCallingCode` was specified,\n // and that \"calling code\" could correspond to a \"non-geographic entity\",\n // or there could be several countries corresponding to that country calling code.\n // In those cases, `this.country` is `undefined` and should be derived\n // from the number. Again, if country calling code is ambiguous, then\n // `this.country` should be re-derived with each new digit.\n //\n if (!this.state.country || this.isCountryCallingCodeAmbiguous()) {\n this.determineTheCountry();\n }\n } // Prepends `+CountryCode ` in case of an international phone number\n\n }, {\n key: \"getFullNumber\",\n value: function getFullNumber(formattedNationalNumber) {\n var _this2 = this;\n\n if (this.isInternational()) {\n var prefix = function prefix(text) {\n return _this2.formatter.getInternationalPrefixBeforeCountryCallingCode(_this2.state, {\n spacing: text ? true : false\n }) + text;\n };\n\n var callingCode = this.state.callingCode;\n\n if (!callingCode) {\n return prefix(\"\".concat(this.state.getDigitsWithoutInternationalPrefix()));\n }\n\n if (!formattedNationalNumber) {\n return prefix(callingCode);\n }\n\n return prefix(\"\".concat(callingCode, \" \").concat(formattedNationalNumber));\n }\n\n return formattedNationalNumber;\n }\n }, {\n key: \"getNonFormattedNationalNumberWithPrefix\",\n value: function getNonFormattedNationalNumberWithPrefix() {\n var _this$state = this.state,\n nationalSignificantNumber = _this$state.nationalSignificantNumber,\n complexPrefixBeforeNationalSignificantNumber = _this$state.complexPrefixBeforeNationalSignificantNumber,\n nationalPrefix = _this$state.nationalPrefix;\n var number = nationalSignificantNumber;\n var prefix = complexPrefixBeforeNationalSignificantNumber || nationalPrefix;\n\n if (prefix) {\n number = prefix + number;\n }\n\n return number;\n }\n }, {\n key: \"getNonFormattedNumber\",\n value: function getNonFormattedNumber() {\n var nationalSignificantNumberMatchesInput = this.state.nationalSignificantNumberMatchesInput;\n return this.getFullNumber(nationalSignificantNumberMatchesInput ? this.getNonFormattedNationalNumberWithPrefix() : this.state.getNationalDigits());\n }\n }, {\n key: \"getNonFormattedTemplate\",\n value: function getNonFormattedTemplate() {\n var number = this.getNonFormattedNumber();\n\n if (number) {\n return number.replace(/[\\+\\d]/g, DIGIT_PLACEHOLDER);\n }\n }\n }, {\n key: \"isCountryCallingCodeAmbiguous\",\n value: function isCountryCallingCodeAmbiguous() {\n var callingCode = this.state.callingCode;\n var countryCodes = this.metadata.getCountryCodesForCallingCode(callingCode);\n return countryCodes && countryCodes.length > 1;\n } // Determines the country of the phone number\n // entered so far based on the country phone code\n // and the national phone number.\n\n }, {\n key: \"determineTheCountry\",\n value: function determineTheCountry() {\n this.state.setCountry(getCountryByCallingCode(this.isInternational() ? this.state.callingCode : this.defaultCallingCode, this.state.nationalSignificantNumber, this.metadata));\n }\n /**\r\n * Returns a E.164 phone number value for the user's input.\r\n *\r\n * For example, for country `\"US\"` and input `\"(222) 333-4444\"`\r\n * it will return `\"+12223334444\"`.\r\n *\r\n * For international phone number input, it will also auto-correct\r\n * some minor errors such as using a national prefix when writing\r\n * an international phone number. For example, if the user inputs\r\n * `\"+44 0 7400 000000\"` then it will return an auto-corrected\r\n * `\"+447400000000\"` phone number value.\r\n *\r\n * Will return `undefined` if no digits have been input,\r\n * or when inputting a phone number in national format and no\r\n * default country or default \"country calling code\" have been set.\r\n *\r\n * @return {string} [value]\r\n */\n\n }, {\n key: \"getNumberValue\",\n value: function getNumberValue() {\n var _this$state2 = this.state,\n digits = _this$state2.digits,\n callingCode = _this$state2.callingCode,\n country = _this$state2.country,\n nationalSignificantNumber = _this$state2.nationalSignificantNumber; // Will return `undefined` if no digits have been input.\n\n if (!digits) {\n return;\n }\n\n if (this.isInternational()) {\n if (callingCode) {\n return '+' + callingCode + nationalSignificantNumber;\n } else {\n return '+' + digits;\n }\n } else {\n if (country || callingCode) {\n var callingCode_ = country ? this.metadata.countryCallingCode() : callingCode;\n return '+' + callingCode_ + nationalSignificantNumber;\n }\n }\n }\n /**\r\n * Returns an instance of `PhoneNumber` class.\r\n * Will return `undefined` if no national (significant) number\r\n * digits have been entered so far, or if no `defaultCountry` has been\r\n * set and the user enters a phone number not in international format.\r\n */\n\n }, {\n key: \"getNumber\",\n value: function getNumber() {\n var _this$state3 = this.state,\n nationalSignificantNumber = _this$state3.nationalSignificantNumber,\n carrierCode = _this$state3.carrierCode,\n callingCode = _this$state3.callingCode; // `this._getCountry()` is basically same as `this.state.country`\n // with the only change that it return `undefined` in case of a\n // \"non-geographic\" numbering plan instead of `\"001\"` \"internal use\" value.\n\n var country = this._getCountry();\n\n if (!nationalSignificantNumber) {\n return;\n }\n\n if (!country && !callingCode) {\n return;\n }\n\n var phoneNumber = new PhoneNumber(country || callingCode, nationalSignificantNumber, this.metadata.metadata);\n\n if (carrierCode) {\n phoneNumber.carrierCode = carrierCode;\n } // Phone number extensions are not supported by \"As You Type\" formatter.\n\n\n return phoneNumber;\n }\n /**\r\n * Returns `true` if the phone number is \"possible\".\r\n * Is just a shortcut for `PhoneNumber.isPossible()`.\r\n * @return {boolean}\r\n */\n\n }, {\n key: \"isPossible\",\n value: function isPossible() {\n var phoneNumber = this.getNumber();\n\n if (!phoneNumber) {\n return false;\n }\n\n return phoneNumber.isPossible();\n }\n /**\r\n * Returns `true` if the phone number is \"valid\".\r\n * Is just a shortcut for `PhoneNumber.isValid()`.\r\n * @return {boolean}\r\n */\n\n }, {\n key: \"isValid\",\n value: function isValid() {\n var phoneNumber = this.getNumber();\n\n if (!phoneNumber) {\n return false;\n }\n\n return phoneNumber.isValid();\n }\n /**\r\n * @deprecated\r\n * This method is used in `react-phone-number-input/source/input-control.js`\r\n * in versions before `3.0.16`.\r\n */\n\n }, {\n key: \"getNationalNumber\",\n value: function getNationalNumber() {\n return this.state.nationalSignificantNumber;\n }\n /**\r\n * Returns the phone number characters entered by the user.\r\n * @return {string}\r\n */\n\n }, {\n key: \"getChars\",\n value: function getChars() {\n return (this.state.international ? '+' : '') + this.state.digits;\n }\n /**\r\n * Returns the template for the formatted phone number.\r\n * @return {string}\r\n */\n\n }, {\n key: \"getTemplate\",\n value: function getTemplate() {\n return this.formatter.getTemplate(this.state) || this.getNonFormattedTemplate() || '';\n }\n }]);\n\n return AsYouType;\n}();\n\nexport { AsYouType as default };\n//# sourceMappingURL=AsYouType.js.map","import Metadata from './metadata.js';\nexport default function getCountries(metadata) {\n return new Metadata(metadata).getCountries();\n}\n//# sourceMappingURL=getCountries.js.map","import PhoneNumber from './PhoneNumber.js';\nexport default function getExampleNumber(country, examples, metadata) {\n if (examples[country]) {\n return new PhoneNumber(country, examples[country], metadata);\n }\n}\n//# sourceMappingURL=getExampleNumber.js.map","import AsYouType from './AsYouType.js';\n/**\r\n * Formats a (possibly incomplete) phone number.\r\n * The phone number can be either in E.164 format\r\n * or in a form of national number digits.\r\n * @param {string} value - A possibly incomplete phone number. Either in E.164 format or in a form of national number digits.\r\n * @param {string?} country - Two-letter (\"ISO 3166-1 alpha-2\") country code.\r\n * @return {string} Formatted (possibly incomplete) phone number.\r\n */\n\nexport default function formatIncompletePhoneNumber(value, country, metadata) {\n if (!metadata) {\n metadata = country;\n country = undefined;\n }\n\n return new AsYouType(country, metadata).input(value);\n}\n//# sourceMappingURL=formatIncompletePhoneNumber.js.map","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { parsePhoneNumberWithError as _parsePhoneNumberWithError } from '../../core/index.js'\r\n\r\nexport function parsePhoneNumberWithError() {\r\n\treturn withMetadataArgument(_parsePhoneNumberWithError, arguments)\r\n}\r\n","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { parsePhoneNumberFromString as _parsePhoneNumberFromString } from '../../core/index.js'\r\n\r\nexport function parsePhoneNumberFromString() {\r\n\treturn withMetadataArgument(_parsePhoneNumberFromString, arguments)\r\n}","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\r\n// importing system which is even uncapable of importing \"*.json\" files.\r\nimport metadata from '../../metadata.max.json.js'\r\n\r\nimport { PhoneNumberMatcher as _PhoneNumberMatcher } from '../../core/index.js'\r\n\r\nexport function PhoneNumberMatcher(text, options) {\r\n\treturn _PhoneNumberMatcher.call(this, text, options, metadata)\r\n}\r\nPhoneNumberMatcher.prototype = Object.create(_PhoneNumberMatcher.prototype, {})\r\nPhoneNumberMatcher.prototype.constructor = PhoneNumberMatcher\r\n","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\r\n// importing system which is even uncapable of importing \"*.json\" files.\r\nimport metadata from '../../metadata.max.json.js'\r\n\r\nimport { AsYouType as _AsYouType } from '../../core/index.js'\r\n\r\nexport function AsYouType(country) {\r\n\treturn _AsYouType.call(this, country, metadata)\r\n}\r\n\r\nAsYouType.prototype = Object.create(_AsYouType.prototype, {})\r\nAsYouType.prototype.constructor = AsYouType","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\r\n// importing system which is even uncapable of importing \"*.json\" files.\r\nimport metadata from '../../metadata.max.json.js'\r\n\r\nimport { Metadata as _Metadata } from '../../core/index.js'\r\n\r\nexport function Metadata() {\r\n\treturn _Metadata.call(this, metadata)\r\n}\r\n\r\nMetadata.prototype = Object.create(_Metadata.prototype, {})\r\nMetadata.prototype.constructor = Metadata","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { findNumbers as _findNumbers } from '../../core/index.js'\r\n\r\nexport function findNumbers() {\r\n\treturn withMetadataArgument(_findNumbers, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { findPhoneNumbersInText as _findPhoneNumbersInText } from '../../core/index.js'\r\n\r\nexport function findPhoneNumbersInText() {\r\n\treturn withMetadataArgument(_findPhoneNumbersInText, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { formatIncompletePhoneNumber as _formatIncompletePhoneNumber } from '../../core/index.js'\r\n\r\nexport function formatIncompletePhoneNumber() {\r\n\treturn withMetadataArgument(_formatIncompletePhoneNumber, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { getCountries as _getCountries } from '../../core/index.js'\r\n\r\nexport function getCountries() {\r\n\treturn withMetadataArgument(_getCountries, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { getCountryCallingCode as _getCountryCallingCode } from '../../core/index.js'\r\n\r\nexport function getCountryCallingCode() {\r\n\treturn withMetadataArgument(_getCountryCallingCode, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { getExampleNumber as _getExampleNumber } from '../../core/index.js'\r\n\r\nexport function getExampleNumber() {\r\n\treturn withMetadataArgument(_getExampleNumber, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { getExtPrefix as _getExtPrefix } from '../../core/index.js'\r\n\r\nexport function getExtPrefix() {\r\n\treturn withMetadataArgument(_getExtPrefix, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { isPossiblePhoneNumber as _isPossiblePhoneNumber } from '../../core/index.js'\r\n\r\nexport function isPossiblePhoneNumber() {\r\n\treturn withMetadataArgument(_isPossiblePhoneNumber, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { isSupportedCountry as _isSupportedCountry } from '../../core/index.js'\r\n\r\nexport function isSupportedCountry() {\r\n\treturn withMetadataArgument(_isSupportedCountry, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { isValidPhoneNumber as _isValidPhoneNumber } from '../../core/index.js'\r\n\r\nexport function isValidPhoneNumber() {\r\n\treturn withMetadataArgument(_isValidPhoneNumber, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { searchNumbers as _searchNumbers } from '../../core/index.js'\r\n\r\nexport function searchNumbers() {\r\n\treturn withMetadataArgument(_searchNumbers, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { searchPhoneNumbersInText as _searchPhoneNumbersInText } from '../../core/index.js'\r\n\r\nexport function searchPhoneNumbersInText() {\r\n\treturn withMetadataArgument(_searchPhoneNumbersInText, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { validatePhoneNumberLength as _validatePhoneNumberLength } from '../../core/index.js'\r\n\r\nexport function validatePhoneNumberLength() {\r\n\treturn withMetadataArgument(_validatePhoneNumberLength, arguments)\r\n}"],"names":["metadata","version","country_calling_codes","countries","AC","AD","AE","AF","AG","AI","AL","AM","AO","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GT","GU","GW","GY","HK","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TA","TC","TD","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","YE","YT","ZA","ZM","ZW","nonGeographic","withMetadataArgument","func","_arguments","args","Array","prototype","slice","call","push","apply","this","_typeof","obj","Symbol","iterator","constructor","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_possibleConstructorReturn","self","TypeError","_assertThisInitialized","ReferenceError","_wrapNativeSuper","Class","_cache","Map","undefined","fn","Function","toString","indexOf","has","get","set","Wrapper","_construct","arguments","_getPrototypeOf","create","value","_setPrototypeOf","Parent","_isNativeReflectConstruct","Reflect","construct","a","instance","bind","sham","Proxy","Boolean","valueOf","e","o","p","setPrototypeOf","__proto__","getPrototypeOf","ParseError","_Error","subClass","superClass","_inherits","Derived","hasNativeReflectConstruct","Constructor","protoProps","staticProps","_super","result","Super","NewTarget","code","_this","_classCallCheck","name","Error","VALID_DIGITS","VALID_PUNCTUATION","concat","PLUS_CHARS","compare","b","split","pa","pb","na","Number","nb","isNaN","_createClass","DEFAULT_EXT_PREFIX","CALLING_CODE_REG_EXP","Metadata","is_object","keys","join","type_of","validateMetadata","setVersion","filter","_","countryCode","v1","v2","v3","nonGeographical","country","getCountryMetadata","callingCode","getCountryCodesForCallingCode","countryCodes","countryCallingCodes","selectNumberingPlan","test","hasCountry","numberingPlan","NumberingPlan","hasCallingCode","getNumberingPlanMetadata","getCountryCodeForCallingCode","IDDPrefix","defaultIDDPrefix","nationalNumberPattern","possibleLengths","formats","nationalPrefixForParsing","nationalPrefixTransformRule","leadingDigits","hasTypes","_type","type","ext","country_phone_code_to_countries","globalMetadataObject","_getFormats","getDefaultCountryMetadataForRegion","map","Format","_getNationalPrefixFormattingRule","_nationalPrefixForParsing","nationalPrefix","_getNationalPrefixIsOptionalWhenFormatting","types","_type2","getType","Type","format","_format","nationalPrefixFormattingRule","nationalPrefixIsOptionalWhenFormattingInNationalFormat","usesNationalPrefix","FIRST_GROUP_ONLY_PREFIX_PATTERN","getExtPrefix","getCountryCallingCode","countryCallingCode","isSupportedCountry","v4","getExtensionDigitsPattern","maxLength","createExtensionPattern","purpose","optionalExtnSuffix","possibleSeparatorsBetweenNumberAndExtLabel","possibleSeparatorsNumberExtLabelNoComma","VALID_PHONE_NUMBER","VALID_PHONE_NUMBER_START_REG_EXP","RegExp","VALID_PHONE_NUMBER_WITH_EXTENSION","VALID_PHONE_NUMBER_PATTERN","isViablePhoneNumber","number","EXTN_PATTERN","_createForOfIteratorHelperLoose","allowArrayLike","it","next","isArray","minLen","_arrayLikeToArray","n","from","_unsupportedIterableToArray","done","arr","len","arr2","DIGITS","parseDigit","character","parseDigits","string","_step","_iterator","digit","parseIncompletePhoneNumber","parsePhoneNumberCharacter","prevParsedCharacters","checkNumberLength","nationalNumber","checkNumberLengthForType","type_info","possible_lengths","mobile_type","merged","element","sort","mergeArrays","actual_length","minimum_length","isPossibleNumber","_slicedToArray","_arrayWithHoles","_i","_s","_e","_arr","_n","_d","err","_iterableToArrayLimit","_nonIterableRest","parseRFC3966","text","replace","_part$split2","formatRFC3966","_ref","matchesEntirely","regular_expression","NON_FIXED_LINE_PHONE_TYPES","getNumberType","input","options","phone","isNumberTypeEqualTo","pattern","isValidNumber","applyInternationalSeparatorStyle","formattedNumber","trim","FIRST_GROUP_PATTERN","formatNationalNumberUsingFormat","useInternationalFormat","withNationalPrefix","carrierCode","internationalFormat","SINGLE_IDD_PREFIX_REG_EXP","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","DEFAULT_OPTIONS","formatExtension","extension","formatNumber","addExtension","formatNationalNumber","fromCountry","iddPrefix","countryMetadata","getIddPrefix","formatIDD","formatAs","availableFormats","nationalNnumber","leadingDigitsPatterns","lastLeadingDigitsPattern","search","chooseFormatForNumber","PhoneNumber","_metadata","isCountryCode","isNonGeographicCallingCode","phoneNumber","CAPTURING_DIGIT_PATTERN","stripIddPrefix","IDDPrefixPattern","matchedGroups","match","extractNationalNumberFromPossiblyIncompleteNumber","prefixPattern","prefixMatch","exec","capturedGroupsCount","hasCapturedGroups","prefixBeforeNationalNumber","possiblePositionOfTheFirstCapturedGroup","extractNationalNumber","_extractNationalNumbe","nationalNumberBefore","nationalNumberAfter","shouldHaveExtractedNationalPrefix","isPossibleIncompleteNationalNumber","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","possibleShorterNumber","possibleShorterNationalNumber","extractCountryCallingCode","numberWithoutIDD","_extractCountryCallin","shorterNumber","_countryCallingCode","getCountryByCallingCode","nationalPhoneNumber","possibleCountries","selectCountryFromList","PHONE_NUMBER_START_PATTERN","AFTER_PHONE_NUMBER_END_PATTERN","parse","defaultCountry","_parseInput","extract","throwOnError","startsAt","extractFormattedPhoneNumber","isViablePhoneNumberStart","error","withExtensionStripped","start","numberWithoutExtension","matches","extractExtension","parseInput","formattedPhoneNumber","_parsePhoneNumber","defaultCallingCode","exactCountry","parsePhoneNumber","hasSelectedNumberingPlan","valid","extended","possible","parseNumber","_normalizeArguments","normalizeArguments","parsePhoneNumber_","_Array$prototype$slic2","arg_1","arg_2","arg_3","arg_4","isObject","parsePhoneNumberFromString","parsePhoneNumberFromString_","isValidPhoneNumber","isValid","isPossiblePhoneNumber","isPossible","validatePhoneNumberLength","message","Node","prev","LRUCache","limit","size","head","tail","cache","ensureLimit","node","remove","put","console","log","RegExpCache","regExp","lower","upper","trimAfterFirstMatch","regexp","index","_pZ","pZ","PZ","pNd","_pL","pL","pL_regexp","pSc","pSc_regexp","pMn","pMn_regexp","latinLetterRegexp","isLatinLetter","letter","isInvalidPunctuationSymbol","Leniency","POSSIBLE","candidate","VALID","containsOnlyValidXChars","STRICT_GROUPING","regExpCache","candidateString","containsMoreThanOneSlashInNationalNumber","isNationalPrefixPresentIfRequired","checkNumberGroupingIsValid","allNumberGroupsRemainGrouped","EXACT_GROUPING","allNumberGroupsAreExactlyPresent","charAtIndex","charAt","charAtNextIndex","util","isNumberMatch","substring","MatchType","NSN_MATCH","getCountryCodeSource","phoneNumberRegion","getRegionCodeForCountryCode","getCountryCode","getMetadataForRegion","getNationalSignificantNumber","formatRule","chooseFormattingPatternForNumber","numberFormats","getNationalPrefixFormattingRule","getNationalPrefixOptionalWhenFormatting","PhoneNumberUtil","formattingRuleHasFirstGroupOnly","rawInputCopy","normalizeDigitsOnly","getRawInput","maybeStripNationalPrefixAndCarrierCode","firstSlashInBodyIndex","secondSlashInBodyIndex","CountryCodeSource","FROM_NUMBER_WITH_PLUS_SIGN","FROM_NUMBER_WITHOUT_PLUS_SIGN","String","checkGroups","normalizedCandidate","normalizeDigits","formattedNumberGroups","getNationalNumberGroups","alternateFormats","MetadataManager","getAlternateFormatsForCountry","nationalSignificantNumber","alternateFormat","getPatternForRegExp","formattingPattern","formatNsnUsingPattern","rfc3966Format","endIndex","startIndex","candidateGroups","NON_DIGITS_PATTERN","candidateNumberGroupIndex","hasExtension","contains","formattedNumberGroupIndex","fromIndex","FROM_DEFAULT_COUNTRY","region","getNddPrefixForRegion","Character","isDigit","getExtension","SECOND_NUMBER_START_PATTERN","parsePreCandidate","SLASH_SEPARATED_DATES","TIME_STAMPS","TIME_STAMPS_SUFFIX_LEADING","isValidPreCandidate","offset","followingText","OPENING_PARENS","CLOSING_PARENS","NON_PARENS","LEAD_CLASS","LEAD_CLASS_LEADING","BRACKET_PAIR_LIMIT","MATCHING_BRACKETS_ENTIRE","PUB_PAGES","EXTN_PATTERNS_FOR_MATCHING","INNER_MATCHES","leadLimit","punctuationLimit","blockLimit","MAX_LENGTH_FOR_NSN","punctuation","digitSequence","PATTERN","UNWANTED_END_CHAR_PATTERN","MAX_SAFE_INTEGER","Math","pow","PhoneNumberMatcher","leniency","maxTries","state","searchIndex","parseAndVerify","extractInnerMatch","endsAt","innerMatchPattern","isFirstMatch","candidateMatch","innerMatchRegExp","_candidate","_match","candidateIndexGuess","previousChar","lastCharIndex","nextChar","isValidCandidate","lastMatch","find","hasNext","findNumbers","matcher","results","_findNumbers","searchNumbers","findPhoneNumbersInText","getArguments","searchPhoneNumbersInText","AsYouTypeState","onCountryChange","onCallingCodeChange","international","missingPlus","digits","resetNationalSignificantNumber","initCountryAndCallingCode","getNationalDigits","nationalSignificantNumberMatchesInput","complexPrefixBeforeNationalSignificantNumber","properties","_Object$keys","setCountry","setCallingCode","nextDigits","DIGIT_PLACEHOLDER","DIGIT_PLACEHOLDER_MATCHER","repeat","times","cutAndStripNonPairedParens","cutBeforeIndex","dangling_braces","pop","cleared_string","_dangling_braces","stripNonPairedParens","formatCompleteNumber","shouldTryNationalPrefixFormattingRule","getSeparatorAfterNationalPrefix","_ref2","useNationalPrefixFormattingRule","formatNationalNumberWithAndWithoutNationalPrefixFormattingRule","_ref3","formattedNationalNumber","isValidFormattedNationalNumber","PatternParser","context","or","instructions","parsePattern","_this$context$","branches","op","expandSingleElementArray","OPERATOR","operator","before","rightPart","startContext","getContext","endContext","oneOfSet","parseOneOfSet","ILLEGAL_CHARACTER_REGEXP","values","prevValue","charCodeAt","nextValue","fromCharCode","array","PatternMatcher","matchTree","allowOverflow","matchedChars","overflow","characters","tree","last","characterString","partialMatch","restCharacters","JSON","stringify","_result","_step2","_iterator2","_char","LONGEST_DUMMY_PHONE_NUMBER","NATIONAL_PREFIX_SEPARATORS_PATTERN","NON_ALTERING_FORMAT_REG_EXP","AsYouTypeFormatter","resetFormat","chosenFormat","template","nationalNumberTemplate","populatedNationalNumberTemplate","populatedNationalNumberTemplatePosition","isNANP","matchingFormats","narrowDownMatchingFormats","canFormatCompleteNumber","formattedCompleteNumber","setNationalNumberTemplate","lastIndexOf","formatNationalNumberWithNextDigits","previouslyChosenFormat","newlyChosenFormat","chooseFormat","formatNextNationalNumberDigits","_this2","leadingDigitsPatternIndex","formatSuits","formatMatches","nationalPrefixIsMandatoryWhenFormattingInNationalFormat","leadingDigitsPatternsCount","min","leadingDigitsPattern","_this3","_loop","getFormatFormat","createTemplateForFormat","_ret","getTemplateForFormat","spacing","internationalPrefix","getInternationalPrefixBeforeCountryCallingCode","getDigitsWithoutInternationalPrefix","_ref4","strictPattern","nationalNumberDummyDigits","nationalPrefixIncludedInTemplate","numberFormat","numberFormatWithNationalPrefix","position","populateTemplateWithDigits","_ref5","VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN","VALID_FORMATTED_PHONE_NUMBER_PART","AFTER_PHONE_NUMBER_DIGITS_END_PATTERN","COMPLEX_NATIONAL_PREFIX","AsYouTypeParser","onNationalSignificantNumberChange","justLeadingPlus","_extractFormattedDigi","_extractFormattedDigi4","extractedNumber","hasPlus","_extractFormattedDigitsAndPlus","formattedDigits","extractFormattedDigitsAndPlus","_extractFormattedDigi2","startInternationalNumber","inputDigits","hasReceivedThreeLeadingDigits","appendDigits","extractIddPrefix","isWaitingForCountryCallingCode","appendNationalSignificantNumberDigits","hasExtractedNationalSignificantNumber","extractNationalSignificantNumber","stateUpdate","update","_extractCountryCallingCode","couldPossiblyExtractAnotherNationalSignificantNumber","nationalDigits","setState","onExtractedNationalNumber","prevNationalSignificantNumber","_extractNationalNumbe2","nationalSignificantNumberIndex","extractAnotherNationalSignificantNumber","fixMissingPlus","extractCallingCodeAndNationalSignificantNumber","_extractCountryCallin2","newCallingCode","AsYouType","optionsOrDefaultCountry","_this$getCountryAndCa2","getCountryAndCallingCode","reset","_this$parser$input","parser","formattedOutput","determineTheCountryIfNeeded","formatter","reExtractNationalSignificantNumber","getFullNumber","getNonFormattedNumber","isInternational","getCallingCode","_getCountry","isCountryCallingCodeAmbiguous","determineTheCountry","prefix","_this$state","getNonFormattedNationalNumberWithPrefix","_this$state2","_this$state3","getNumber","getTemplate","getNonFormattedTemplate","getCountries","getExampleNumber","examples","formatIncompletePhoneNumber","parsePhoneNumberWithError","_parsePhoneNumberWithError","_parsePhoneNumberFromString","_PhoneNumberMatcher","_AsYouType","_Metadata","_findPhoneNumbersInText","_formatIncompletePhoneNumber","_getCountries","_getCountryCallingCode","_getExampleNumber","_getExtPrefix","_isPossiblePhoneNumber","_isSupportedCountry","_isValidPhoneNumber","_searchNumbers","_searchPhoneNumbersInText","_validatePhoneNumberLength"],"mappings":"sPAGe,IAAAA,EAAA,CAACC,QAAU,EAAEC,sBAAwB,CAAC,EAAI,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,EAAI,CAAC,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,KAAK,KAAK,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,KAAK,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-min.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-min.js new file mode 100644 index 00000000..fbaeae6f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-min.js @@ -0,0 +1,2 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).libphonenumber={})}(this,(function(t){"use strict";var e={version:4,country_calling_codes:{1:["US","AG","AI","AS","BB","BM","BS","CA","DM","DO","GD","GU","JM","KN","KY","LC","MP","MS","PR","SX","TC","TT","VC","VG","VI"],7:["RU","KZ"],20:["EG"],27:["ZA"],30:["GR"],31:["NL"],32:["BE"],33:["FR"],34:["ES"],36:["HU"],39:["IT","VA"],40:["RO"],41:["CH"],43:["AT"],44:["GB","GG","IM","JE"],45:["DK"],46:["SE"],47:["NO","SJ"],48:["PL"],49:["DE"],51:["PE"],52:["MX"],53:["CU"],54:["AR"],55:["BR"],56:["CL"],57:["CO"],58:["VE"],60:["MY"],61:["AU","CC","CX"],62:["ID"],63:["PH"],64:["NZ"],65:["SG"],66:["TH"],81:["JP"],82:["KR"],84:["VN"],86:["CN"],90:["TR"],91:["IN"],92:["PK"],93:["AF"],94:["LK"],95:["MM"],98:["IR"],211:["SS"],212:["MA","EH"],213:["DZ"],216:["TN"],218:["LY"],220:["GM"],221:["SN"],222:["MR"],223:["ML"],224:["GN"],225:["CI"],226:["BF"],227:["NE"],228:["TG"],229:["BJ"],230:["MU"],231:["LR"],232:["SL"],233:["GH"],234:["NG"],235:["TD"],236:["CF"],237:["CM"],238:["CV"],239:["ST"],240:["GQ"],241:["GA"],242:["CG"],243:["CD"],244:["AO"],245:["GW"],246:["IO"],247:["AC"],248:["SC"],249:["SD"],250:["RW"],251:["ET"],252:["SO"],253:["DJ"],254:["KE"],255:["TZ"],256:["UG"],257:["BI"],258:["MZ"],260:["ZM"],261:["MG"],262:["RE","YT"],263:["ZW"],264:["NA"],265:["MW"],266:["LS"],267:["BW"],268:["SZ"],269:["KM"],290:["SH","TA"],291:["ER"],297:["AW"],298:["FO"],299:["GL"],350:["GI"],351:["PT"],352:["LU"],353:["IE"],354:["IS"],355:["AL"],356:["MT"],357:["CY"],358:["FI","AX"],359:["BG"],370:["LT"],371:["LV"],372:["EE"],373:["MD"],374:["AM"],375:["BY"],376:["AD"],377:["MC"],378:["SM"],380:["UA"],381:["RS"],382:["ME"],383:["XK"],385:["HR"],386:["SI"],387:["BA"],389:["MK"],420:["CZ"],421:["SK"],423:["LI"],500:["FK"],501:["BZ"],502:["GT"],503:["SV"],504:["HN"],505:["NI"],506:["CR"],507:["PA"],508:["PM"],509:["HT"],590:["GP","BL","MF"],591:["BO"],592:["GY"],593:["EC"],594:["GF"],595:["PY"],596:["MQ"],597:["SR"],598:["UY"],599:["CW","BQ"],670:["TL"],672:["NF"],673:["BN"],674:["NR"],675:["PG"],676:["TO"],677:["SB"],678:["VU"],679:["FJ"],680:["PW"],681:["WF"],682:["CK"],683:["NU"],685:["WS"],686:["KI"],687:["NC"],688:["TV"],689:["PF"],690:["TK"],691:["FM"],692:["MH"],850:["KP"],852:["HK"],853:["MO"],855:["KH"],856:["LA"],880:["BD"],886:["TW"],960:["MV"],961:["LB"],962:["JO"],963:["SY"],964:["IQ"],965:["KW"],966:["SA"],967:["YE"],968:["OM"],970:["PS"],971:["AE"],972:["IL"],973:["BH"],974:["QA"],975:["BT"],976:["MN"],977:["NP"],992:["TJ"],993:["TM"],994:["AZ"],995:["GE"],996:["KG"],998:["UZ"]},countries:{AC:["247","00","(?:[01589]\\d|[46])\\d{4}",[5,6]],AD:["376","00","(?:1|6\\d)\\d{7}|[135-9]\\d{5}",[6,8,9],[["(\\d{3})(\\d{3})","$1 $2",["[135-9]"]],["(\\d{4})(\\d{4})","$1 $2",["1"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]]],AE:["971","00","(?:[4-7]\\d|9[0-689])\\d{7}|800\\d{2,9}|[2-4679]\\d{7}",[5,6,7,8,9,10,11,12],[["(\\d{3})(\\d{2,9})","$1 $2",["60|8"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[236]|[479][2-8]"],"0$1"],["(\\d{3})(\\d)(\\d{5})","$1 $2 $3",["[479]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"]],"0"],AF:["93","00","[2-7]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"]],"0"],AG:["1","011","(?:268|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([457]\\d{6})$","268$1",0,"268"],AI:["1","011","(?:264|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2457]\\d{6})$","264$1",0,"264"],AL:["355","00","(?:700\\d\\d|900)\\d{3}|8\\d{5,7}|(?:[2-5]|6\\d)\\d{7}",[6,7,8,9],[["(\\d{3})(\\d{3,4})","$1 $2",["80|9"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["4[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2358][2-5]|4"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["[23578]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["6"],"0$1"]],"0"],AM:["374","00","(?:[1-489]\\d|55|60|77)\\d{6}",[8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[89]0"],"0 $1"],["(\\d{3})(\\d{5})","$1 $2",["2|3[12]"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["1|47"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[3-9]"],"0$1"]],"0"],AO:["244","00","[29]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[29]"]]]],AR:["54","00","(?:11|[89]\\d\\d)\\d{8}|[2368]\\d{9}",[10,11],[["(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])","2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["1"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2-$3",["[23]"],"0$1",1],["(\\d)(\\d{4})(\\d{2})(\\d{4})","$2 15-$3-$4",["9(?:2[2-469]|3[3-578])","9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))","9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",0,"$1 $2 $3-$4"],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 15-$3-$4",["91"],"0$1",0,"$1 $2 $3-$4"],["(\\d{3})(\\d{3})(\\d{5})","$1-$2-$3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 15-$3-$4",["9"],"0$1",0,"$1 $2 $3-$4"]],"0",0,"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?","9$1"],AS:["1","011","(?:[58]\\d\\d|684|900)\\d{7}",[10],0,"1",0,"1|([267]\\d{6})$","684$1",0,"684"],AT:["43","00","1\\d{3,12}|2\\d{6,12}|43(?:(?:0\\d|5[02-9])\\d{3,9}|2\\d{4,5}|[3467]\\d{4}|8\\d{4,6}|9\\d{4,7})|5\\d{4,12}|8\\d{7,12}|9\\d{8,12}|(?:[367]\\d|4[0-24-9])\\d{4,11}",[4,5,6,7,8,9,10,11,12,13],[["(\\d)(\\d{3,12})","$1 $2",["1(?:11|[2-9])"],"0$1"],["(\\d{3})(\\d{2})","$1 $2",["517"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["5[079]"],"0$1"],["(\\d{3})(\\d{3,10})","$1 $2",["(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]"],"0$1"],["(\\d{4})(\\d{3,9})","$1 $2",["[2-467]|5[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["5"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,7})","$1 $2 $3",["5"],"0$1"]],"0"],AU:["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{7}(?:\\d(?:\\d{2})?)?|8[0-24-9]\\d{7})|[2-478]\\d{8}|1\\d{4,7}",[5,6,7,8,9,10,12],[["(\\d{2})(\\d{3,4})","$1 $2",["16"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,4})","$1 $2 $3",["16"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["14|4"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[2378]"],"(0$1)"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:30|[89])"]]],"0",0,"0|(183[12])",0,0,0,[["(?:(?:2(?:[0-26-9]\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\d|2[0-8]))\\d{3}|8(?:51(?:0(?:0[03-9]|[12479]\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\d|7[89]|9[0-4]))|(?:6[0-8]|[78]\\d)\\d{3}|9(?:[02-9]\\d{3}|1(?:(?:[0-58]\\d|6[0135-9])\\d|7(?:0[0-24-9]|[1-9]\\d)|9(?:[0-46-9]\\d|5[0-79])))))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,["163\\d{2,6}",[5,6,7,8,9]],["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],AW:["297","00","(?:[25-79]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[25-9]"]]]],AX:["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","2\\d{4,9}|35\\d{4,5}|(?:60\\d\\d|800)\\d{4,6}|7\\d{5,11}|(?:[14]\\d|3[0-46-9]|50)\\d{4,8}",[5,6,7,8,9,10,11,12],0,"0",0,0,0,0,"18",0,"00"],AZ:["994","00","365\\d{6}|(?:[124579]\\d|60|88)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[28]|2|365|46","1[28]|2|365[45]|46","1[28]|2|365(?:4|5[02])|46"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[13-9]"],"0$1"]],"0"],BA:["387","00","6\\d{8}|(?:[35689]\\d|49|70)\\d{6}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["6[1-3]|[7-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2-$3",["[3-5]|6[56]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["6"],"0$1"]],"0"],BB:["1","011","(?:246|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","246$1",0,"246"],BD:["880","00","[1-469]\\d{9}|8[0-79]\\d{7,8}|[2-79]\\d{8}|[2-9]\\d{7}|[3-9]\\d{6}|[57-9]\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{4,6})","$1-$2",["31[5-8]|[459]1"],"0$1"],["(\\d{3})(\\d{3,7})","$1-$2",["3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:28|4[14]|5)|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]"],"0$1"],["(\\d{4})(\\d{3,6})","$1-$2",["[13-9]|22"],"0$1"],["(\\d)(\\d{7,8})","$1-$2",["2"],"0$1"]],"0"],BE:["32","00","4\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:80|9)0"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[239]|4[23]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[15-8]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4"],"0$1"]],"0"],BF:["226","00","[025-7]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[025-7]"]]]],BG:["359","00","[2-7]\\d{6,7}|[89]\\d{6,8}|2\\d{5}",[6,7,8,9],[["(\\d)(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["43[1-6]|70[1-9]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:70|8)0"],"0$1"],["(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3",["43[1-7]|7"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[48]|9[08]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"]],"0"],BH:["973","00","[136-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[13679]|8[047]"]]]],BI:["257","00","(?:[267]\\d|31)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2367]"]]]],BJ:["229","00","(?:[25689]\\d|40)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24-689]"]]]],BL:["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[["590(?:2[7-9]|5[12]|87)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],BM:["1","011","(?:441|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","441$1",0,"441"],BN:["673","00","[2-578]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-578]"]]]],BO:["591","00(?:1\\d)?","(?:[2-467]\\d\\d|8001)\\d{5}",[8,9],[["(\\d)(\\d{7})","$1 $2",["[23]|4[46]"]],["(\\d{8})","$1",["[67]"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["8"]]],"0",0,"0(1\\d)?"],BQ:["599","00","(?:[34]1|7\\d)\\d{5}",[7],0,0,0,0,0,0,"[347]"],BR:["55","00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)","(?:[1-46-9]\\d\\d|5(?:[0-46-9]\\d|5[0-46-9]))\\d{8}|[1-9]\\d{9}|[3589]\\d{8}|[34]\\d{7}",[8,9,10,11],[["(\\d{4})(\\d{4})","$1-$2",["300|4(?:0[02]|37)","4(?:02|37)0|[34]00"]],["(\\d{3})(\\d{2,3})(\\d{4})","$1 $2 $3",["(?:[358]|90)0"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]"],"($1)"],["(\\d{2})(\\d{5})(\\d{4})","$1 $2-$3",["[16][1-9]|[2-57-9]"],"($1)"]],"0",0,"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\d{10,11}))?","$2"],BS:["1","011","(?:242|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([3-8]\\d{6})$","242$1",0,"242"],BT:["975","00","[17]\\d{7}|[2-8]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[2-68]|7[246]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[67]|7"]]]],BW:["267","00","(?:0800|(?:[37]|800)\\d)\\d{6}|(?:[2-6]\\d|90)\\d{5}",[7,8,10],[["(\\d{2})(\\d{5})","$1 $2",["90"]],["(\\d{3})(\\d{4})","$1 $2",["[24-6]|3[15-79]"]],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37]"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["8"]]]],BY:["375","810","(?:[12]\\d|33|44|902)\\d{7}|8(?:0[0-79]\\d{5,7}|[1-7]\\d{9})|8(?:1[0-489]|[5-79]\\d)\\d{7}|8[1-79]\\d{6,7}|8[0-79]\\d{5}|8\\d{5}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3})","$1 $2",["800"],"8 $1"],["(\\d{3})(\\d{2})(\\d{2,4})","$1 $2 $3",["800"],"8 $1"],["(\\d{4})(\\d{2})(\\d{3})","$1 $2-$3",["1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])","1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])"],"8 0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["1(?:[56]|7[467])|2[1-3]"],"8 0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-4]"],"8 0$1"],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["[89]"],"8 $1"]],"8",0,"0|80?",0,0,0,0,"8~10"],BZ:["501","00","(?:0800\\d|[2-8])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1-$2",["[2-8]"]],["(\\d)(\\d{3})(\\d{4})(\\d{3})","$1-$2-$3-$4",["0"]]]],CA:["1","011","(?:[2-8]\\d|90)\\d{8}|3\\d{6}",[7,10],0,"1",0,0,0,0,0,[["(?:2(?:04|[23]6|[48]9|50|63)|3(?:06|43|6[578])|4(?:03|1[68]|3[178]|50|68|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|13|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\d{6}",[10]],["",[10]],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",[10]],["900[2-9]\\d{6}",[10]],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|(?:5(?:00|2[125-7]|33|44|66|77|88)|622)[2-9]\\d{6}",[10]],0,["310\\d{4}",[7]],0,["600[2-9]\\d{6}",[10]]]],CC:["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[["8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\d|70[23]|959))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,0,["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],CD:["243","00","[189]\\d{8}|[1-68]\\d{6}",[7,9],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[1-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]"],"0$1"]],"0"],CF:["236","00","(?:[27]\\d{3}|8776)\\d{4}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[278]"]]]],CG:["242","00","222\\d{6}|(?:0\\d|80)\\d{7}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["8"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[02]"]]]],CH:["41","00","8\\d{11}|[2-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8[047]|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-79]|81"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["8"],"0$1"]],"0"],CI:["225","00","[02]\\d{9}",[10],[["(\\d{2})(\\d{2})(\\d)(\\d{5})","$1 $2 $3 $4",["2"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3 $4",["0"]]]],CK:["682","00","[2-578]\\d{4}",[5],[["(\\d{2})(\\d{3})","$1 $2",["[2-578]"]]]],CL:["56","(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0","12300\\d{6}|6\\d{9,10}|[2-9]\\d{8}",[9,10,11],[["(\\d{5})(\\d{4})","$1 $2",["219","2196"],"($1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["44"]],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2[1-36]"],"($1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["9[2-9]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])"],"($1)"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["60|8"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{3})(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3 $4",["60"]]]],CM:["237","00","[26]\\d{8}|88\\d{6,7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["88"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[26]|88"]]]],CN:["86","00|1(?:[12]\\d|79)\\d\\d00","1[127]\\d{8,9}|2\\d{9}(?:\\d{2})?|[12]\\d{6,7}|86\\d{6}|(?:1[03-689]\\d|6)\\d{7,9}|(?:[3-579]\\d|8[0-57-9])\\d{6,9}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5,6})","$1 $2",["(?:10|2[0-57-9])[19]","(?:10|2[0-57-9])(?:10|9[56])","(?:10|2[0-57-9])(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{5,6})","$1 $2",["3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]","(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))[19]","85[23](?:10|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:10|9[56])","85[23](?:100|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["(?:4|80)0"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["10|2(?:[02-57-9]|1[1-9])","10|2(?:[02-57-9]|1[1-9])","10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]"],"0$1",1],["(\\d{3})(\\d{7,8})","$1 $2",["9"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["80"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[3-578]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["1[3-9]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3 $4",["[12]"],"0$1",1]],"0",0,"0|(1(?:[12]\\d|79)\\d\\d)",0,0,0,0,"00"],CO:["57","00(?:4(?:[14]4|56)|[579])","(?:60\\d\\d|9101)\\d{6}|(?:1\\d|3)\\d{9}",[10,11],[["(\\d{3})(\\d{7})","$1 $2",["6"],"($1)"],["(\\d{3})(\\d{7})","$1 $2",["3[0-357]|91"]],["(\\d)(\\d{3})(\\d{7})","$1-$2-$3",["1"],"0$1",0,"$1 $2 $3"]],"0",0,"0(4(?:[14]4|56)|[579])?"],CR:["506","00","(?:8\\d|90)\\d{8}|(?:[24-8]\\d{3}|3005)\\d{4}",[8,10],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[3-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[89]"]]],0,0,"(19(?:0[0-2468]|1[09]|20|66|77|99))"],CU:["53","119","[27]\\d{6,7}|[34]\\d{5,7}|(?:5|8\\d\\d)\\d{7}",[6,7,8,10],[["(\\d{2})(\\d{4,6})","$1 $2",["2[1-4]|[34]"],"(0$1)"],["(\\d)(\\d{6,7})","$1 $2",["7"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["5"],"0$1"],["(\\d{3})(\\d{7})","$1 $2",["8"],"0$1"]],"0"],CV:["238","0","(?:[2-59]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[2-589]"]]]],CW:["599","00","(?:[34]1|60|(?:7|9\\d)\\d)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[3467]"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["9[4-8]"]]],0,0,0,0,0,"[69]"],CX:["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[["8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\d|7(?:0[01]|1[0-2])|958))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,0,["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],CY:["357","00","(?:[279]\\d|[58]0)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[257-9]"]]]],CZ:["420","00","(?:[2-578]\\d|60)\\d{7}|9\\d{8,11}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]|9[015-7]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3 $4",["96"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]]],DE:["49","00","[2579]\\d{5,14}|49(?:[34]0|69|8\\d)\\d\\d?|49(?:37|49|60|7[089]|9\\d)\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\d{1,8}|(?:1|[368]\\d|4[0-8])\\d{3,13}|49(?:[015]\\d|2[13]|31|[46][1-8])\\d{1,9}",[4,5,6,7,8,9,10,11,12,13,14,15],[["(\\d{2})(\\d{3,13})","$1 $2",["3[02]|40|[68]9"],"0$1"],["(\\d{3})(\\d{3,12})","$1 $2",["2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1","2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1"],"0$1"],["(\\d{4})(\\d{2,11})","$1 $2",["[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]","[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["138"],"0$1"],["(\\d{5})(\\d{2,10})","$1 $2",["3"],"0$1"],["(\\d{3})(\\d{5,11})","$1 $2",["181"],"0$1"],["(\\d{3})(\\d)(\\d{4,10})","$1 $2 $3",["1(?:3|80)|9"],"0$1"],["(\\d{3})(\\d{7,8})","$1 $2",["1[67]"],"0$1"],["(\\d{3})(\\d{7,12})","$1 $2",["8"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["185","1850","18500"],"0$1"],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["18[68]"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["15[0568]"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["15[1279]"],"0$1"],["(\\d{3})(\\d{8})","$1 $2",["18"],"0$1"],["(\\d{3})(\\d{2})(\\d{7,8})","$1 $2 $3",["1(?:6[023]|7)"],"0$1"],["(\\d{4})(\\d{2})(\\d{7})","$1 $2 $3",["15[279]"],"0$1"],["(\\d{3})(\\d{2})(\\d{8})","$1 $2 $3",["15"],"0$1"]],"0"],DJ:["253","00","(?:2\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[27]"]]]],DK:["45","00","[2-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-9]"]]]],DM:["1","011","(?:[58]\\d\\d|767|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","767$1",0,"767"],DO:["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,0,0,0,"8001|8[024]9"],DZ:["213","00","(?:[1-4]|[5-79]\\d|80)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["9"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-8]"],"0$1"]],"0"],EC:["593","00","1\\d{9,10}|(?:[2-7]|9\\d)\\d{7}",[8,9,10,11],[["(\\d)(\\d{3})(\\d{4})","$1 $2-$3",["[2-7]"],"(0$1)",0,"$1-$2-$3"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{3})(\\d{3,4})","$1 $2 $3",["1"]]],"0"],EE:["372","00","8\\d{9}|[4578]\\d{7}|(?:[3-8]\\d|90)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88","[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88"]],["(\\d{4})(\\d{3,4})","$1 $2",["[45]|8(?:00|[1-49])","[45]|8(?:00[1-9]|[1-49])"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]]],EG:["20","00","[189]\\d{8,9}|[24-6]\\d{8}|[135]\\d{7}",[8,9,10],[["(\\d)(\\d{7,8})","$1 $2",["[23]"],"0$1"],["(\\d{2})(\\d{6,7})","$1 $2",["1[35]|[4-6]|8[2468]|9[235-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[189]"],"0$1"]],"0"],EH:["212","00","[5-8]\\d{8}",[9],0,"0",0,0,0,0,"528[89]"],ER:["291","00","[178]\\d{6}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[178]"],"0$1"]],"0"],ES:["34","00","[5-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]00"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-9]"]]]],ET:["251","00","(?:11|[2-579]\\d)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-579]"],"0$1"]],"0"],FI:["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","[1-35689]\\d{4}|7\\d{10,11}|(?:[124-7]\\d|3[0-46-9])\\d{8}|[1-9]\\d{5,8}",[5,6,7,8,9,10,11,12],[["(\\d)(\\d{4,9})","$1 $2",["[2568][1-8]|3(?:0[1-9]|[1-9])|9"],"0$1"],["(\\d{3})(\\d{3,7})","$1 $2",["[12]00|[368]|70[07-9]"],"0$1"],["(\\d{2})(\\d{4,8})","$1 $2",["[1245]|7[135]"],"0$1"],["(\\d{2})(\\d{6,10})","$1 $2",["7"],"0$1"]],"0",0,0,0,0,"1[03-79]|[2-9]",0,"00"],FJ:["679","0(?:0|52)","45\\d{5}|(?:0800\\d|[235-9])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1 $2",["[235-9]|45"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]]],0,0,0,0,0,0,0,"00"],FK:["500","00","[2-7]\\d{4}",[5]],FM:["691","00","(?:[39]\\d\\d|820)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[389]"]]]],FO:["298","00","[2-9]\\d{5}",[6],[["(\\d{6})","$1",["[2-9]"]]],0,0,"(10(?:01|[12]0|88))"],FR:["33","00","[1-9]\\d{8}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0 $1"],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[1-79]"],"0$1"]],"0"],GA:["241","00","(?:[067]\\d|11)\\d{6}|[2-7]\\d{6}",[7,8],[["(\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-7]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["11|[67]"],"0$1"]],0,0,"0(11\\d{6}|60\\d{6}|61\\d{6}|6[256]\\d{6}|7[467]\\d{6})","$1"],GB:["44","00","[1-357-9]\\d{9}|[18]\\d{8}|8\\d{6}",[7,9,10],[["(\\d{3})(\\d{4})","$1 $2",["800","8001","80011","800111","8001111"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["845","8454","84546","845464"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["800"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["1(?:38|5[23]|69|76|94)","1(?:(?:38|69)7|5(?:24|39)|768|946)","1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["1(?:[2-69][02-9]|[78])"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[25]|7(?:0|6[02-9])","[25]|7(?:0|6(?:[03-9]|2[356]))"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[1389]"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:1(?:3(?:[0-58]\\d\\d|73[0235])|4(?:[0-5]\\d\\d|69[7-9]|70[013579])|(?:(?:5[0-26-9]|[78][0-49])\\d|6(?:[0-4]\\d|50))\\d)|2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\d)\\d\\d|1(?:[0-7]\\d\\d|8(?:[02]\\d|1[0-246-9])))|(?:3(?:0\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\d\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\d{3})\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\d)|76\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\d|7[4-79])|295[5-7]|35[34]\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\d{3}",[9,10]],["7(?:457[0-57-9]|700[01]|911[028])\\d{5}|7(?:[1-3]\\d\\d|4(?:[0-46-9]\\d|5[0-689])|5(?:0[0-8]|[13-9]\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\d|8[02-9]|9[0-689])|8(?:[014-9]\\d|[23][0-8])|9(?:[024-9]\\d|1[02-9]|3[0-689]))\\d{6}",[10]],["80[08]\\d{7}|800\\d{6}|8001111"],["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[2-49]))\\d{7}|845464\\d",[7,10]],["70\\d{8}",[10]],0,["(?:3[0347]|55)\\d{8}",[10]],["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}",[10]],["56\\d{8}",[10]]],0," x"],GD:["1","011","(?:473|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","473$1",0,"473"],GE:["995","00","(?:[3-57]\\d\\d|800)\\d{6}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["32"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[57]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[348]"],"0$1"]],"0"],GF:["594","00","(?:[56]94|80\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0"],GG:["44","00","(?:1481|[357-9]\\d{3})\\d{6}|8\\d{6}(?:\\d{2})?",[7,9,10],0,"0",0,"0|([25-9]\\d{5})$","1481$1",0,0,[["1481[25-9]\\d{5}",[10]],["7(?:(?:781|839)\\d|911[17])\\d{5}",[10]],["80[08]\\d{7}|800\\d{6}|8001111"],["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[0-3]))\\d{7}|845464\\d",[7,10]],["70\\d{8}",[10]],0,["(?:3[0347]|55)\\d{8}",[10]],["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}",[10]],["56\\d{8}",[10]]]],GH:["233","00","(?:[235]\\d{3}|800)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[235]"],"0$1"]],"0"],GI:["350","00","(?:[25]\\d\\d|606)\\d{5}",[8],[["(\\d{3})(\\d{5})","$1 $2",["2"]]]],GL:["299","00","(?:19|[2-689]\\d|70)\\d{4}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["19|[2-9]"]]]],GM:["220","00","[2-9]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]]],GN:["224","00","722\\d{6}|(?:3|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["3"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[67]"]]]],GP:["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["590(?:0[1-68]|[14][0-24-9]|2[0-68]|3[1289]|5[3-579]|6[0-289]|7[08]|8[0-689]|9\\d)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],GQ:["240","00","222\\d{6}|(?:3\\d|55|[89]0)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235]"]],["(\\d{3})(\\d{6})","$1 $2",["[89]"]]]],GR:["30","00","5005000\\d{3}|8\\d{9,11}|(?:[269]\\d|70)\\d{8}",[10,11,12],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["21|7"]],["(\\d{4})(\\d{6})","$1 $2",["2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2689]"]],["(\\d{3})(\\d{3,4})(\\d{5})","$1 $2 $3",["8"]]]],GT:["502","00","(?:1\\d{3}|[2-7])\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]]],GU:["1","011","(?:[58]\\d\\d|671|900)\\d{7}",[10],0,"1",0,"1|([3-9]\\d{6})$","671$1",0,"671"],GW:["245","00","[49]\\d{8}|4\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["40"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"]]]],GY:["592","001","9008\\d{3}|(?:[2-467]\\d\\d|862)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-46-9]"]]]],HK:["852","00(?:30|5[09]|[126-9]?)","8[0-46-9]\\d{6,7}|9\\d{4,7}|(?:[2-7]|9\\d{3})\\d{7}",[5,6,7,8,9,11],[["(\\d{3})(\\d{2,5})","$1 $2",["900","9003"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[1-4]|9(?:0[1-9]|[1-8])"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]],["(\\d{3})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]],0,0,0,0,0,0,0,"00"],HN:["504","00","8\\d{10}|[237-9]\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1-$2",["[237-9]"]]]],HR:["385","00","(?:[24-69]\\d|3[0-79])\\d{7}|80\\d{5,7}|[1-79]\\d{7}|6\\d{5,6}",[6,7,8,9],[["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["6[01]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{4})(\\d{3})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-5]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"]],"0"],HT:["509","00","[2-489]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[2-489]"]]]],HU:["36","00","[235-7]\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"06 $1"]],"06"],ID:["62","00[89]","(?:(?:00[1-9]|8\\d)\\d{4}|[1-36])\\d{6}|00\\d{10}|[1-9]\\d{8,10}|[2-9]\\d{7}",[7,8,9,10,11,12,13],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["15"]],["(\\d{2})(\\d{5,9})","$1 $2",["2[124]|[36]1"],"(0$1)"],["(\\d{3})(\\d{5,7})","$1 $2",["800"],"0$1"],["(\\d{3})(\\d{5,8})","$1 $2",["[2-79]"],"(0$1)"],["(\\d{3})(\\d{3,4})(\\d{3})","$1-$2-$3",["8[1-35-9]"],"0$1"],["(\\d{3})(\\d{6,8})","$1 $2",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["804"],"0$1"],["(\\d{3})(\\d)(\\d{3})(\\d{3})","$1 $2 $3 $4",["80"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1-$2-$3",["8"],"0$1"]],"0"],IE:["353","00","(?:1\\d|[2569])\\d{6,8}|4\\d{6,9}|7\\d{8}|8\\d{8,9}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["2[24-9]|47|58|6[237-9]|9[35-9]"],"(0$1)"],["(\\d{3})(\\d{5})","$1 $2",["[45]0"],"(0$1)"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["1"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2569]|4[1-69]|7[14]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["81"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[78]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["4"],"(0$1)"],["(\\d{2})(\\d)(\\d{3})(\\d{4})","$1 $2 $3 $4",["8"],"0$1"]],"0"],IL:["972","0(?:0|1[2-9])","1\\d{6}(?:\\d{3,5})?|[57]\\d{8}|[1-489]\\d{7}",[7,8,9,10,11,12],[["(\\d{4})(\\d{3})","$1-$2",["125"]],["(\\d{4})(\\d{2})(\\d{2})","$1-$2-$3",["121"]],["(\\d)(\\d{3})(\\d{4})","$1-$2-$3",["[2-489]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1-$2-$3",["12"]],["(\\d{4})(\\d{6})","$1-$2",["159"]],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3-$4",["1[7-9]"]],["(\\d{3})(\\d{1,2})(\\d{3})(\\d{4})","$1-$2 $3-$4",["15"]]],"0"],IM:["44","00","1624\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([25-8]\\d{5})$","1624$1",0,"74576|(?:16|7[56])24"],IN:["91","00","(?:000800|[2-9]\\d\\d)\\d{7}|1\\d{7,12}",[8,9,10,11,12,13],[["(\\d{8})","$1",["5(?:0|2[23]|3[03]|[67]1|88)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)"],0,1],["(\\d{4})(\\d{4,5})","$1 $2",["180","1800"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["140"],0,1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["11|2[02]|33|4[04]|79[1-7]|80[2-46]","11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])","11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]"],"0$1",1],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807","1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]","1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\d|7(?:1(?:[013-8]\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\d|5[0-367])|70[13-7]))[2-7]"],"0$1",1],["(\\d{5})(\\d{5})","$1 $2",["[6-9]"],"0$1",1],["(\\d{4})(\\d{2,4})(\\d{4})","$1 $2 $3",["1(?:6|8[06])","1(?:6|8[06]0)"],0,1],["(\\d{4})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["18"],0,1]],"0"],IO:["246","00","3\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["3"]]]],IQ:["964","00","(?:1|7\\d\\d)\\d{7}|[2-6]\\d{7,8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-6]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0"],IR:["98","00","[1-9]\\d{9}|(?:[1-8]\\d\\d|9)\\d{3,4}",[4,5,6,7,10],[["(\\d{4,5})","$1",["96"],"0$1"],["(\\d{2})(\\d{4,5})","$1 $2",["(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[1-8]"],"0$1"]],"0"],IS:["354","00|1(?:0(?:01|[12]0)|100)","(?:38\\d|[4-9])\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["[4-9]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["3"]]],0,0,0,0,0,0,0,"00"],IT:["39","00","0\\d{5,10}|1\\d{8,10}|3(?:[0-8]\\d{7,10}|9\\d{7,8})|(?:55|70)\\d{8}|8\\d{5}(?:\\d{2,4})?",[6,7,8,9,10,11],[["(\\d{2})(\\d{4,6})","$1 $2",["0[26]"]],["(\\d{3})(\\d{3,6})","$1 $2",["0[13-57-9][0159]|8(?:03|4[17]|9[2-5])","0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))"]],["(\\d{4})(\\d{2,6})","$1 $2",["0(?:[13-579][2-46-8]|8[236-8])"]],["(\\d{4})(\\d{4})","$1 $2",["894"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[26]|5"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["1(?:44|[679])|[378]"]],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[13-57-9][0159]|14"]],["(\\d{2})(\\d{4})(\\d{5})","$1 $2 $3",["0[26]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["3"]]],0,0,0,0,0,0,[["0669[0-79]\\d{1,6}|0(?:1(?:[0159]\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\d\\d|3(?:[0159]\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\d|6[0-8])|7(?:[0159]\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\d{2,7}"],["3[1-9]\\d{8}|3[2-9]\\d{7}",[9,10]],["80(?:0\\d{3}|3)\\d{3}",[6,9]],["(?:0878\\d{3}|89(?:2\\d|3[04]|4(?:[0-4]|[5-9]\\d\\d)|5[0-4]))\\d\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\d{6}",[6,8,9,10]],["1(?:78\\d|99)\\d{6}",[9,10]],0,0,0,["55\\d{8}",[10]],["84(?:[08]\\d{3}|[17])\\d{3}",[6,9]]]],JE:["44","00","1534\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([0-24-8]\\d{5})$","1534$1",0,0,[["1534[0-24-8]\\d{5}"],["7(?:(?:(?:50|82)9|937)\\d|7(?:00[378]|97[7-9]))\\d{5}"],["80(?:07(?:35|81)|8901)\\d{4}"],["(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\d{4}"],["701511\\d{4}"],0,["(?:3(?:0(?:07(?:35|81)|8901)|3\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\d{4})\\d{4}"],["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}"],["56\\d{8}"]]],JM:["1","011","(?:[58]\\d\\d|658|900)\\d{7}",[10],0,"1",0,0,0,0,"658|876"],JO:["962","00","(?:(?:[2689]|7\\d)\\d|32|53)\\d{6}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2356]|87"],"(0$1)"],["(\\d{3})(\\d{5,6})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["70"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0"],JP:["81","010","00[1-9]\\d{6,14}|[257-9]\\d{9}|(?:00|[1-9]\\d\\d)\\d{6}",[8,9,10,11,12,13,14,15,16,17],[["(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3",["(?:12|57|99)0"],"0$1"],["(\\d{4})(\\d)(\\d{4})","$1-$2-$3",["1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:80|9[16])","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2-$3",["[36]|4(?:2[09]|7[01])","[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]"],"0$1"],["(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3",["[14]|[289][2-9]|5[3-9]|7[2-4679]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["800"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[257-9]"],"0$1"]],"0"],KE:["254","000","(?:[17]\\d\\d|900)\\d{6}|(?:2|80)0\\d{6,7}|[4-6]\\d{6,8}",[7,8,9,10],[["(\\d{2})(\\d{5,7})","$1 $2",["[24-6]"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[17]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0"],KG:["996","00","8\\d{9}|(?:[235-8]\\d|99)\\d{7}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["3(?:1[346]|[24-79])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235-79]|88"],"0$1"],["(\\d{3})(\\d{3})(\\d)(\\d{2,3})","$1 $2 $3 $4",["8"],"0$1"]],"0"],KH:["855","00[14-9]","1\\d{9}|[1-9]\\d{7,8}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0"],KI:["686","00","(?:[37]\\d|6[0-79])\\d{6}|(?:[2-48]\\d|50)\\d{3}",[5,8],0,"0"],KM:["269","00","[3478]\\d{6}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[3478]"]]]],KN:["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","869$1",0,"869"],KP:["850","00|99","85\\d{6}|(?:19\\d|[2-7])\\d{7}",[8,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"]],"0"],KR:["82","00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))","00[1-9]\\d{8,11}|(?:[12]|5\\d{3})\\d{7}|[13-6]\\d{9}|(?:[1-6]\\d|80)\\d{7}|[3-6]\\d{4,5}|(?:00|7)0\\d{8}",[5,6,8,9,10,11,12,13,14],[["(\\d{2})(\\d{3,4})","$1-$2",["(?:3[1-3]|[46][1-4]|5[1-5])1"],"0$1"],["(\\d{4})(\\d{4})","$1-$2",["1"]],["(\\d)(\\d{3,4})(\\d{4})","$1-$2-$3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60|8"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1-$2-$3",["[1346]|5[1-5]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{2})(\\d{5})(\\d{4})","$1-$2-$3",["5"],"0$1"]],"0",0,"0(8(?:[1-46-8]|5\\d\\d))?"],KW:["965","00","18\\d{5}|(?:[2569]\\d|41)\\d{6}",[7,8],[["(\\d{4})(\\d{3,4})","$1 $2",["[169]|2(?:[235]|4[1-35-9])|52"]],["(\\d{3})(\\d{5})","$1 $2",["[245]"]]]],KY:["1","011","(?:345|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","345$1",0,"345"],KZ:["7","810","(?:33622|8\\d{8})\\d{5}|[78]\\d{9}",[10,14],0,"8",0,0,0,0,"33|7",0,"8~10"],LA:["856","00","[23]\\d{9}|3\\d{8}|(?:[235-8]\\d|41)\\d{6}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2[13]|3[14]|[4-8]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["30[013-9]"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[23]"],"0$1"]],"0"],LB:["961","00","[27-9]\\d{7}|[13-9]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27-9]"]]],"0"],LC:["1","011","(?:[58]\\d\\d|758|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","758$1",0,"758"],LI:["423","00","[68]\\d{8}|(?:[2378]\\d|90)\\d{5}",[7,9],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[2379]|8(?:0[09]|7)","[2379]|8(?:0(?:02|9)|7)"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["69"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]],"0",0,"0|(1001)"],LK:["94","00","[1-9]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[1-689]"],"0$1"]],"0"],LR:["231","00","(?:2|33|5\\d|77|88)\\d{7}|[4-6]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[4-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3578]"],"0$1"]],"0"],LS:["266","00","(?:[256]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2568]"]]]],LT:["370","00","(?:[3469]\\d|52|[78]0)\\d{6}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["52[0-7]"],"(8-$1)",1],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[7-9]"],"8 $1",1],["(\\d{2})(\\d{6})","$1 $2",["37|4(?:[15]|6[1-8])"],"(8-$1)",1],["(\\d{3})(\\d{5})","$1 $2",["[3-6]"],"(8-$1)",1]],"8",0,"[08]"],LU:["352","00","35[013-9]\\d{4,8}|6\\d{8}|35\\d{2,4}|(?:[2457-9]\\d|3[0-46-9])\\d{2,9}",[4,5,6,7,8,9,10,11],[["(\\d{2})(\\d{3})","$1 $2",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["20[2-689]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4",["2(?:[0367]|4[3-8])"]],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["80[01]|90[015]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["20"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4 $5",["2(?:[0367]|4[3-8])"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,5})","$1 $2 $3 $4",["[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]"]]],0,0,"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\d)"],LV:["371","00","(?:[268]\\d|90)\\d{6}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[269]|8[01]"]]]],LY:["218","00","[2-9]\\d{8}",[9],[["(\\d{2})(\\d{7})","$1-$2",["[2-9]"],"0$1"]],"0"],MA:["212","00","[5-8]\\d{8}",[9],[["(\\d{5})(\\d{4})","$1-$2",["5(?:29|38)","5(?:29[89]|389)","5(?:29[89]|389)0"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5[45]"],"0$1"],["(\\d{4})(\\d{5})","$1-$2",["5(?:2[2-489]|3[5-9]|9)|892","5(?:2(?:[2-49]|8[235-9])|3[5-9]|9)|892"],"0$1"],["(\\d{2})(\\d{7})","$1-$2",["8"],"0$1"],["(\\d{3})(\\d{6})","$1-$2",["[5-7]"],"0$1"]],"0",0,0,0,0,0,[["5(?:29(?:[189][05]|2[29]|3[01])|389[05])\\d{4}|5(?:2(?:[0-25-7]\\d|3[1-578]|4[02-46-8]|8[0235-7]|90)|3(?:[0-47]\\d|5[02-9]|6[02-8]|8[08]|9[3-9])|(?:4[067]|5[03])\\d)\\d{5}"],["(?:6(?:[0-79]\\d|8[0-247-9])|7(?:[017]\\d|2[0-2]|6[0-8]|8[0-3]))\\d{6}"],["80\\d{7}"],["89\\d{7}"],0,0,0,0,["592(?:4[0-2]|93)\\d{4}"]]],MC:["377","00","(?:[3489]|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["4"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[389]"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["6"],"0$1"]],"0"],MD:["373","00","(?:[235-7]\\d|[89]0)\\d{6}",[8],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["22|3"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[25-7]"],"0$1"]],"0"],ME:["382","00","(?:20|[3-79]\\d)\\d{6}|80\\d{6,7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"0$1"]],"0"],MF:["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[["590(?:0[079]|[14]3|[27][79]|30|5[0-268]|87)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],MG:["261","00","[23]\\d{8}",[9],[["(\\d{2})(\\d{2})(\\d{3})(\\d{2})","$1 $2 $3 $4",["[23]"],"0$1"]],"0",0,"0|([24-9]\\d{6})$","20$1"],MH:["692","011","329\\d{4}|(?:[256]\\d|45)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1-$2",["[2-6]"]]],"1"],MK:["389","00","[2-578]\\d{7}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2|34[47]|4(?:[37]7|5[47]|64)"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[347]"],"0$1"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["[58]"],"0$1"]],"0"],ML:["223","00","[24-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24-9]"]]]],MM:["95","00","1\\d{5,7}|95\\d{6}|(?:[4-7]|9[0-46-9])\\d{6,8}|(?:2|8\\d)\\d{5,8}",[6,7,8,9,10],[["(\\d)(\\d{2})(\\d{3})","$1 $2 $3",["16|2"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[4-7]|8[1-35]"],"0$1"],["(\\d)(\\d{3})(\\d{4,6})","$1 $2 $3",["9(?:2[0-4]|[35-9]|4[137-9])"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["92"],"0$1"],["(\\d)(\\d{5})(\\d{4})","$1 $2 $3",["9"],"0$1"]],"0"],MN:["976","001","[12]\\d{7,9}|[5-9]\\d{7}",[8,9,10],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[12]1"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[5-9]"]],["(\\d{3})(\\d{5,6})","$1 $2",["[12]2[1-3]"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["[12](?:27|3[2-8]|4[2-68]|5[1-4689])","[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["[12]"],"0$1"]],"0"],MO:["853","00","0800\\d{3}|(?:28|[68]\\d)\\d{6}",[7,8],[["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{4})(\\d{4})","$1 $2",["[268]"]]]],MP:["1","011","[58]\\d{9}|(?:67|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","670$1",0,"670"],MQ:["596","00","(?:69|80)\\d{7}|(?:59|97)6\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0"],MR:["222","00","(?:[2-4]\\d\\d|800)\\d{5}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-48]"]]]],MS:["1","011","(?:[58]\\d\\d|664|900)\\d{7}",[10],0,"1",0,"1|([34]\\d{6})$","664$1",0,"664"],MT:["356","00","3550\\d{4}|(?:[2579]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2357-9]"]]]],MU:["230","0(?:0|[24-7]0|3[03])","(?:5|8\\d\\d)\\d{7}|[2-468]\\d{6}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[2-46]|8[013]"]],["(\\d{4})(\\d{4})","$1 $2",["5"]],["(\\d{5})(\\d{5})","$1 $2",["8"]]],0,0,0,0,0,0,0,"020"],MV:["960","0(?:0|19)","(?:800|9[0-57-9]\\d)\\d{7}|[34679]\\d{6}",[7,10],[["(\\d{3})(\\d{4})","$1-$2",["[3467]|9[13-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"]]],0,0,0,0,0,0,0,"00"],MW:["265","00","(?:[1289]\\d|31|77)\\d{7}|1\\d{6}",[7,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["1[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[137-9]"],"0$1"]],"0"],MX:["52","0[09]","1(?:(?:44|99)[1-9]|65[0-689])\\d{7}|(?:1(?:[017]\\d|[235][1-9]|4[0-35-9]|6[0-46-9]|8[1-79]|9[1-8])|[2-9]\\d)\\d{8}",[10,11],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["33|5[56]|81"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2-9]"],0,1],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 $3 $4",["1(?:33|5[56]|81)"],0,1],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 $3 $4",["1"],0,1]],"01",0,"0(?:[12]|4[45])|1",0,0,0,0,"00"],MY:["60","00","1\\d{8,9}|(?:3\\d|[4-9])\\d{7}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1-$2 $3",["[4-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1-$2 $3",["1(?:[02469]|[378][1-9]|53)|8","1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2 $3",["3"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3-$4",["1(?:[367]|80)"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2 $3",["15"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2 $3",["1"],"0$1"]],"0"],MZ:["258","00","(?:2|8\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2|8[2-79]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]]],NA:["264","00","[68]\\d{7,8}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["87"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0"],NC:["687","00","(?:050|[2-57-9]\\d\\d)\\d{3}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1.$2.$3",["[02-57-9]"]]]],NE:["227","00","[027-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["08"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[089]|2[013]|7[04]"]]]],NF:["672","00","[13]\\d{5}",[6],[["(\\d{2})(\\d{4})","$1 $2",["1[0-3]"]],["(\\d)(\\d{5})","$1 $2",["[13]"]]],0,0,"([0-258]\\d{4})$","3$1"],NG:["234","009","(?:[124-7]|9\\d{3})\\d{6}|[1-9]\\d{7}|[78]\\d{9,13}",[7,8,10,11,12,13,14],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["78"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]|9(?:0[3-9]|[1-9])"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[3-7]|8[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["[78]"],"0$1"],["(\\d{3})(\\d{5})(\\d{5,6})","$1 $2 $3",["[78]"],"0$1"]],"0"],NI:["505","00","(?:1800|[25-8]\\d{3})\\d{4}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[125-8]"]]]],NL:["31","00","(?:[124-7]\\d\\d|3(?:[02-9]\\d|1[0-8]))\\d{6}|8\\d{6,9}|9\\d{6,10}|1\\d{4,5}",[5,6,7,8,9,10,11],[["(\\d{3})(\\d{4,7})","$1 $2",["[89]0"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["66"],"0$1"],["(\\d)(\\d{8})","$1 $2",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["1[16-8]|2[259]|3[124]|4[17-9]|5[124679]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-578]|91"],"0$1"],["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3",["9"],"0$1"]],"0"],NO:["47","00","(?:0|[2-9]\\d{3})\\d{4}",[5,8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[489]|59"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[235-7]"]]],0,0,0,0,0,"[02-689]|7[0-8]"],NP:["977","00","(?:1\\d|9)\\d{9}|[1-9]\\d{7}",[8,10,11],[["(\\d)(\\d{7})","$1-$2",["1[2-6]"],"0$1"],["(\\d{2})(\\d{6})","$1-$2",["1[01]|[2-8]|9(?:[1-59]|[67][2-6])"],"0$1"],["(\\d{3})(\\d{7})","$1-$2",["9"]]],"0"],NR:["674","00","(?:444|(?:55|8\\d)\\d|666)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[4-68]"]]]],NU:["683","00","(?:[47]|888\\d)\\d{3}",[4,7],[["(\\d{3})(\\d{4})","$1 $2",["8"]]]],NZ:["64","0(?:0|161)","[29]\\d{7,9}|50\\d{5}(?:\\d{2,3})?|6[0-35-9]\\d{6}|7\\d{7,8}|8\\d{4,9}|(?:11\\d|[34])\\d{7}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,8})","$1 $2",["8[1-579]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["50[036-8]|[89]0","50(?:[0367]|88)|[89]0"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["24|[346]|7[2-57-9]|9[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:10|74)|[59]|80"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1|2[028]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,5})","$1 $2 $3",["2(?:[169]|7[0-35-9])|7|86"],"0$1"]],"0",0,0,0,0,0,0,"00"],OM:["968","00","(?:1505|[279]\\d{3}|500)\\d{4}|800\\d{5,6}",[7,8,9],[["(\\d{3})(\\d{4,6})","$1 $2",["[58]"]],["(\\d{2})(\\d{6})","$1 $2",["2"]],["(\\d{4})(\\d{4})","$1 $2",["[179]"]]]],PA:["507","00","(?:00800|8\\d{3})\\d{6}|[68]\\d{7}|[1-57-9]\\d{6}",[7,8,10,11],[["(\\d{3})(\\d{4})","$1-$2",["[1-57-9]"]],["(\\d{4})(\\d{4})","$1-$2",["[68]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]]],PE:["51","00|19(?:1[124]|77|90)00","(?:[14-8]|9\\d)\\d{7}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["80"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["1"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[4-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"]]],"0",0,0,0,0,0,0,"00"," Anexo "],PF:["689","00","4\\d{5}(?:\\d{2})?|8\\d{7,8}",[6,8,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["44"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4|8[7-9]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]]],PG:["675","00|140[1-3]","(?:180|[78]\\d{3})\\d{4}|(?:[2-589]\\d|64)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["18|[2-69]|85"]],["(\\d{4})(\\d{4})","$1 $2",["[78]"]]],0,0,0,0,0,0,0,"00"],PH:["63","00","(?:[2-7]|9\\d)\\d{8}|2\\d{5}|(?:1800|8)\\d{7,9}",[6,8,9,10,11,12,13],[["(\\d)(\\d{5})","$1 $2",["2"],"(0$1)"],["(\\d{4})(\\d{4,6})","$1 $2",["3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2","3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))"],"(0$1)"],["(\\d{5})(\\d{4})","$1 $2",["346|4(?:27|9[35])|883","3469|4(?:279|9(?:30|56))|8834"],"(0$1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3-7]|8[2-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{4})(\\d{1,2})(\\d{3})(\\d{4})","$1 $2 $3 $4",["1"]]],"0"],PK:["92","00","122\\d{6}|[24-8]\\d{10,11}|9(?:[013-9]\\d{8,10}|2(?:[01]\\d\\d|2(?:[06-8]\\d|1[01]))\\d{7})|(?:[2-8]\\d{3}|92(?:[0-7]\\d|8[1-9]))\\d{6}|[24-9]\\d{8}|[89]\\d{7}",[8,9,10,11,12],[["(\\d{3})(\\d{3})(\\d{2,7})","$1 $2 $3",["[89]0"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["1"]],["(\\d{3})(\\d{6,7})","$1 $2",["2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])","9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]"],"(0$1)"],["(\\d{2})(\\d{7,8})","$1 $2",["(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]"],"(0$1)"],["(\\d{5})(\\d{5})","$1 $2",["58"],"(0$1)"],["(\\d{3})(\\d{7})","$1 $2",["3"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[24-9]"],"(0$1)"]],"0"],PL:["48","00","(?:6|8\\d\\d)\\d{7}|[1-9]\\d{6}(?:\\d{2})?|[26]\\d{5}",[6,7,8,9,10],[["(\\d{5})","$1",["19"]],["(\\d{3})(\\d{3})","$1 $2",["11|20|64"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1","(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19"]],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["64"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[2-8]|[2-7]|8[1-79]|9[145]"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["8"]]]],PM:["508","00","(?:[45]|80\\d\\d)\\d{5}",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[45]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0"],PR:["1","011","(?:[589]\\d\\d|787)\\d{7}",[10],0,"1",0,0,0,0,"787|939"],PS:["970","00","[2489]2\\d{6}|(?:1\\d|5)\\d{8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2489]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["5"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0"],PT:["351","00","1693\\d{5}|(?:[26-9]\\d|30)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["2[12]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["16|[236-9]"]]]],PW:["680","01[12]","(?:[24-8]\\d\\d|345|900)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]]],PY:["595","00","59\\d{4,6}|9\\d{5,10}|(?:[2-46-8]\\d|5[0-8])\\d{4,7}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3,6})","$1 $2",["[2-9]0"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]"],"(0$1)"],["(\\d{3})(\\d{4,5})","$1 $2",["2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["87"]],["(\\d{3})(\\d{6})","$1 $2",["9(?:[5-79]|8[1-6])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["9"]]],"0"],QA:["974","00","[2-7]\\d{7}|800\\d{4}(?:\\d{2})?|2\\d{6}",[7,8,9],[["(\\d{3})(\\d{4})","$1 $2",["2[126]|8"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]]]],RE:["262","00","976\\d{6}|(?:26|[68]\\d)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2689]"],"0$1"]],"0",0,0,0,0,"26[23]|69|[89]"],RO:["40","00","(?:[2378]\\d|90)\\d{7}|[23]\\d{5}",[6,9],[["(\\d{3})(\\d{3})","$1 $2",["2[3-6]","2[3-6]\\d9"],"0$1"],["(\\d{2})(\\d{4})","$1 $2",["219|31"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[23]1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[237-9]"],"0$1"]],"0",0,0,0,0,0,0,0," int "],RS:["381","00","38[02-9]\\d{6,9}|6\\d{7,9}|90\\d{4,8}|38\\d{5,6}|(?:7\\d\\d|800)\\d{3,9}|(?:[12]\\d|3[0-79])\\d{5,10}",[6,7,8,9,10,11,12],[["(\\d{3})(\\d{3,9})","$1 $2",["(?:2[389]|39)0|[7-9]"],"0$1"],["(\\d{2})(\\d{5,10})","$1 $2",["[1-36]"],"0$1"]],"0"],RU:["7","810","8\\d{13}|[347-9]\\d{9}",[10,14],[["(\\d{4})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-8]|2[1-9])","7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))","7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2"],"8 ($1)",1],["(\\d{5})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-68]|2[1-9])","7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))","7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[349]|8(?:[02-7]|1[1-8])"],"8 ($1)",1],["(\\d{4})(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3 $4",["8"],"8 ($1)"]],"8",0,0,0,0,"3[04-689]|[489]",0,"8~10"],RW:["250","00","(?:06|[27]\\d\\d|[89]00)\\d{6}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"]]],"0"],SA:["966","00","92\\d{7}|(?:[15]|8\\d)\\d{8}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["9"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["81"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]],"0"],SB:["677","0[01]","(?:[1-6]|[7-9]\\d\\d)\\d{4}",[5,7],[["(\\d{2})(\\d{5})","$1 $2",["7|8[4-9]|9(?:[1-8]|9[0-8])"]]]],SC:["248","010|0[0-2]","800\\d{4}|(?:[249]\\d|64)\\d{5}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[246]|9[57]"]]],0,0,0,0,0,0,0,"00"],SD:["249","00","[19]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[19]"],"0$1"]],"0"],SE:["46","00","(?:[26]\\d\\d|9)\\d{9}|[1-9]\\d{8}|[1-689]\\d{7}|[1-4689]\\d{6}|2\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{2,3})(\\d{2})","$1-$2 $3",["20"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{4})","$1-$2",["9(?:00|39|44|9)"],"0$1",0,"$1 $2"],["(\\d{2})(\\d{3})(\\d{2})","$1-$2 $3",["[12][136]|3[356]|4[0246]|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3"],["(\\d)(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2,3})(\\d{2})","$1-$2 $3",["1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{2,3})(\\d{3})","$1-$2 $3",["9(?:00|39|44)"],"0$1",0,"$1 $2 $3"],["(\\d{2})(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3 $4"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["10|7"],"0$1",0,"$1 $2 $3 $4"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1-$2 $3 $4",["[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{3})","$1-$2 $3 $4",["9"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4 $5",["[26]"],"0$1",0,"$1 $2 $3 $4 $5"]],"0"],SG:["65","0[0-3]\\d","(?:(?:1\\d|8)\\d\\d|7000)\\d{7}|[3689]\\d{7}",[8,10,11],[["(\\d{4})(\\d{4})","$1 $2",["[369]|8(?:0[1-5]|[1-9])"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]],["(\\d{4})(\\d{4})(\\d{3})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]]],SH:["290","00","(?:[256]\\d|8)\\d{3}",[4,5],0,0,0,0,0,0,"[256]"],SI:["386","00|10(?:22|66|88|99)","[1-7]\\d{7}|8\\d{4,7}|90\\d{4,6}",[5,6,7,8],[["(\\d{2})(\\d{3,6})","$1 $2",["8[09]|9"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["59|8"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37][01]|4[0139]|51|6"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-57]"],"(0$1)"]],"0",0,0,0,0,0,0,"00"],SJ:["47","00","0\\d{4}|(?:[489]\\d|[57]9)\\d{6}",[5,8],0,0,0,0,0,0,"79"],SK:["421","00","[2-689]\\d{8}|[2-59]\\d{6}|[2-5]\\d{5}",[6,7,9],[["(\\d)(\\d{2})(\\d{3,4})","$1 $2 $3",["21"],"0$1"],["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["[3-5][1-8]1","[3-5][1-8]1[67]"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1/$2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[689]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1/$2 $3 $4",["[3-5]"],"0$1"]],"0"],SL:["232","00","(?:[237-9]\\d|66)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[236-9]"],"(0$1)"]],"0"],SM:["378","00","(?:0549|[5-7]\\d)\\d{6}",[8,10],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-7]"]],["(\\d{4})(\\d{6})","$1 $2",["0"]]],0,0,"([89]\\d{5})$","0549$1"],SN:["221","00","(?:[378]\\d|93)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[379]"]]]],SO:["252","00","[346-9]\\d{8}|[12679]\\d{7}|[1-5]\\d{6}|[1348]\\d{5}",[6,7,8,9],[["(\\d{2})(\\d{4})","$1 $2",["8[125]"]],["(\\d{6})","$1",["[134]"]],["(\\d)(\\d{6})","$1 $2",["[15]|2[0-79]|3[0-46-8]|4[0-7]"]],["(\\d)(\\d{7})","$1 $2",["24|[67]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3478]|64|90"]],["(\\d{2})(\\d{5,7})","$1 $2",["1|28|6(?:0[5-7]|[1-35-9])|9[2-9]"]]],"0"],SR:["597","00","(?:[2-5]|68|[78]\\d)\\d{5}",[6,7],[["(\\d{2})(\\d{2})(\\d{2})","$1-$2-$3",["56"]],["(\\d{3})(\\d{3})","$1-$2",["[2-5]"]],["(\\d{3})(\\d{4})","$1-$2",["[6-8]"]]]],SS:["211","00","[19]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[19]"],"0$1"]],"0"],ST:["239","00","(?:22|9\\d)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[29]"]]]],SV:["503","00","[267]\\d{7}|[89]00\\d{4}(?:\\d{4})?",[7,8,11],[["(\\d{3})(\\d{4})","$1 $2",["[89]"]],["(\\d{4})(\\d{4})","$1 $2",["[267]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[89]"]]]],SX:["1","011","7215\\d{6}|(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|(5\\d{6})$","721$1",0,"721"],SY:["963","00","[1-39]\\d{8}|[1-5]\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-5]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1",1]],"0"],SZ:["268","00","0800\\d{4}|(?:[237]\\d|900)\\d{6}",[8,9],[["(\\d{4})(\\d{4})","$1 $2",["[0237]"]],["(\\d{5})(\\d{4})","$1 $2",["9"]]]],TA:["290","00","8\\d{3}",[4],0,0,0,0,0,0,"8"],TC:["1","011","(?:[58]\\d\\d|649|900)\\d{7}",[10],0,"1",0,"1|([2-479]\\d{6})$","649$1",0,"649"],TD:["235","00|16","(?:22|[69]\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2679]"]]],0,0,0,0,0,0,0,"00"],TG:["228","00","[279]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[279]"]]]],TH:["66","00[1-9]","(?:001800|[2-57]|[689]\\d)\\d{7}|1\\d{7,9}",[8,9,10,13],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[13-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0"],TJ:["992","810","(?:00|[1-57-9]\\d)\\d{7}",[9],[["(\\d{6})(\\d)(\\d{2})","$1 $2 $3",["331","3317"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[34]7|91[78]"]],["(\\d{4})(\\d)(\\d{4})","$1 $2 $3",["3[1-5]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[0-57-9]"]]],0,0,0,0,0,0,0,"8~10"],TK:["690","00","[2-47]\\d{3,6}",[4,5,6,7]],TL:["670","00","7\\d{7}|(?:[2-47]\\d|[89]0)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[2-489]|70"]],["(\\d{4})(\\d{4})","$1 $2",["7"]]]],TM:["993","810","[1-6]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["12"],"(8 $1)"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-5]"],"(8 $1)"],["(\\d{2})(\\d{6})","$1 $2",["6"],"8 $1"]],"8",0,0,0,0,0,0,"8~10"],TN:["216","00","[2-57-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-57-9]"]]]],TO:["676","00","(?:0800|(?:[5-8]\\d\\d|999)\\d)\\d{3}|[2-8]\\d{4}",[5,7],[["(\\d{2})(\\d{3})","$1-$2",["[2-4]|50|6[09]|7[0-24-69]|8[05]"]],["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{3})(\\d{4})","$1 $2",["[5-9]"]]]],TR:["90","00","4\\d{6}|8\\d{11,12}|(?:[2-58]\\d\\d|900)\\d{7}",[7,10,12,13],[["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["512|8[01589]|90"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5(?:[0-59]|61)","5(?:[0-59]|616)","5(?:[0-59]|6161)"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24][1-8]|3[1-9]"],"(0$1)",1],["(\\d{3})(\\d{3})(\\d{6,7})","$1 $2 $3",["80"],"0$1",1]],"0"],TT:["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-46-8]\\d{6})$","868$1",0,"868"],TV:["688","00","(?:2|7\\d\\d|90)\\d{4}",[5,6,7],[["(\\d{2})(\\d{3})","$1 $2",["2"]],["(\\d{2})(\\d{4})","$1 $2",["90"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]]],TW:["886","0(?:0[25-79]|19)","[2-689]\\d{8}|7\\d{9,10}|[2-8]\\d{7}|2\\d{6}",[7,8,9,10,11],[["(\\d{2})(\\d)(\\d{4})","$1 $2 $3",["202"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[258]0"],"0$1"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]","[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,5})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,0,0,"#"],TZ:["255","00[056]","(?:[25-8]\\d|41|90)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[24]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["5"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[67]"],"0$1"]],"0"],UA:["380","00","[89]\\d{9}|[3-9]\\d{8}",[9,10],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]","6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])","3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3-7]|89|9[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,0,"0~0"],UG:["256","00[057]","800\\d{6}|(?:[29]0|[347]\\d)\\d{7}",[9],[["(\\d{4})(\\d{5})","$1 $2",["202","2024"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[27-9]|4(?:6[45]|[7-9])"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[34]"],"0$1"]],"0"],US:["1","011","[2-9]\\d{9}|3\\d{6}",[10],[["(\\d{3})(\\d{4})","$1-$2",["310"],0,1],["(\\d{3})(\\d{3})(\\d{4})","($1) $2-$3",["[2-9]"],0,1,"$1-$2-$3"]],"1",0,0,0,0,0,[["505(?:[2-57-9]\\d\\d|6(?:[0-35-9]\\d|44))\\d{4}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[01679]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[068]|3[0-289]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-389]|8[04-69]))[2-9]\\d{6}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],UY:["598","0(?:0|1[3-9]\\d)","4\\d{9}|[1249]\\d{7}|(?:[49]\\d|80)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["405|8|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[124]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["4"],"0$1"]],"0",0,0,0,0,0,0,"00"," int. "],UZ:["998","810","(?:33|55|[679]\\d|88)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[35-9]"],"8 $1"]],"8",0,0,0,0,0,0,"8~10"],VA:["39","00","0\\d{5,10}|3[0-8]\\d{7,10}|55\\d{8}|8\\d{5}(?:\\d{2,4})?|(?:1\\d|39)\\d{7,8}",[6,7,8,9,10,11],0,0,0,0,0,0,"06698"],VC:["1","011","(?:[58]\\d\\d|784|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","784$1",0,"784"],VE:["58","00","[68]00\\d{7}|(?:[24]\\d|[59]0)\\d{8}",[10],[["(\\d{3})(\\d{7})","$1-$2",["[24-689]"],"0$1"]],"0"],VG:["1","011","(?:284|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-578]\\d{6})$","284$1",0,"284"],VI:["1","011","[58]\\d{9}|(?:34|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","340$1",0,"340"],VN:["84","00","[12]\\d{9}|[135-9]\\d{8}|[16]\\d{7}|[16-8]\\d{6}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["80"],"0$1",1],["(\\d{4})(\\d{4,6})","$1 $2",["1"],0,1],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[69]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3578]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["2[48]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["2"],"0$1",1]],"0"],VU:["678","00","[57-9]\\d{6}|(?:[238]\\d|48)\\d{3}",[5,7],[["(\\d{3})(\\d{4})","$1 $2",["[57-9]"]]]],WF:["681","00","(?:40|72)\\d{4}|8\\d{5}(?:\\d{3})?",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[478]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]]],WS:["685","0","(?:[2-6]|8\\d{5})\\d{4}|[78]\\d{6}|[68]\\d{5}",[5,6,7,10],[["(\\d{5})","$1",["[2-5]|6[1-9]"]],["(\\d{3})(\\d{3,7})","$1 $2",["[68]"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]]],XK:["383","00","[23]\\d{7,8}|(?:4\\d\\d|[89]00)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[23]"],"0$1"]],"0"],YE:["967","00","(?:1|7\\d)\\d{7}|[1-7]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-6]|7[24-68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["7"],"0$1"]],"0"],YT:["262","00","80\\d{7}|(?:26|63)9\\d{6}",[9],0,"0",0,0,0,0,"269|63"],ZA:["27","00","[1-79]\\d{8}|8\\d{4,9}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,4})","$1 $2",["8[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["8[1-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["860"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0"],ZM:["260","00","800\\d{6}|(?:21|63|[79]\\d)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[28]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[79]"],"0$1"]],"0"],ZW:["263","00","2(?:[0-57-9]\\d{6,8}|6[0-24-9]\\d{6,7})|[38]\\d{9}|[35-8]\\d{8}|[3-6]\\d{7}|[1-689]\\d{6}|[1-3569]\\d{5}|[1356]\\d{4}",[5,6,7,8,9,10],[["(\\d{3})(\\d{3,5})","$1 $2",["2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]"],"0$1"],["(\\d)(\\d{3})(\\d{2,4})","$1 $2 $3",["[49]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["80"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2","2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)","2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["29[013-9]|39|54"],"0$1"],["(\\d{4})(\\d{3,5})","$1 $2",["(?:25|54)8","258|5483"],"0$1"]],"0"]},nonGeographic:{800:["800",0,"(?:00|[1-9]\\d)\\d{6}",[8],[["(\\d{4})(\\d{4})","$1 $2",["\\d"]]],0,0,0,0,0,0,[0,0,["(?:00|[1-9]\\d)\\d{6}"]]],808:["808",0,"[1-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[1-9]"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,["[1-9]\\d{7}"]]],870:["870",0,"7\\d{11}|[35-7]\\d{8}",[9,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[35-7]"]]],0,0,0,0,0,0,[0,["(?:[356]|774[45])\\d{8}|7[6-8]\\d{7}"]]],878:["878",0,"10\\d{10}",[12],[["(\\d{2})(\\d{5})(\\d{5})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["10\\d{10}"]]],881:["881",0,"[0-36-9]\\d{8}",[9],[["(\\d)(\\d{3})(\\d{5})","$1 $2 $3",["[0-36-9]"]]],0,0,0,0,0,0,[0,["[0-36-9]\\d{8}"]]],882:["882",0,"[13]\\d{6}(?:\\d{2,5})?|285\\d{9}|(?:[19]\\d|49)\\d{6}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5})","$1 $2",["16|342"]],["(\\d{2})(\\d{6})","$1 $2",["4"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[19]"]],["(\\d{2})(\\d{4})(\\d{3})","$1 $2 $3",["3[23]"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["34[57]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["34"]],["(\\d{2})(\\d{4,5})(\\d{5})","$1 $2 $3",["[1-3]"]]],0,0,0,0,0,0,[0,["342\\d{4}|(?:337|49)\\d{6}|3(?:2|47|7\\d{3})\\d{7}",[7,8,9,10,12]],0,0,0,0,0,0,["1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\d{4}|6\\d{5,10})|(?:(?:285\\d\\d|3(?:45|[69]\\d{3}))\\d|9[89])\\d{6}"]]],883:["883",0,"(?:210|370\\d\\d)\\d{7}|51\\d{7}(?:\\d{3})?",[9,10,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["510"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["2"]],["(\\d{4})(\\d{4})(\\d{4})","$1 $2 $3",["51[13]"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[35]"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["(?:210|(?:370[1-9]|51[013]0)\\d)\\d{7}|5100\\d{5}"]]],888:["888",0,"\\d{11}",[11],[["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3"]],0,0,0,0,0,0,[0,0,0,0,0,0,["\\d{11}"]]],979:["979",0,"[1359]\\d{8}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[1359]"]]],0,0,0,0,0,0,[0,0,0,["[1359]\\d{8}"]]]}};function n(t,n){var r=Array.prototype.slice.call(n);return r.push(e),t.apply(this,r)}function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function d(t,e){for(var n=0;na)return 1;if(a>i)return-1;if(!isNaN(i)&&isNaN(a))return 1;if(isNaN(i)&&!isNaN(a))return-1}return t[1]&&e[1]?t[1]>e[1]?1:t[1]=2&&G.test(t)}var U=new RegExp("(?:"+R()+")$","i");function W(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(n)return(n=n.call(t)).next.bind(n);if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return V(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return V(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0;return function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function V(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function X(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function q(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);na?"TOO_SHORT":d[d.length-1]=0?"IS_POSSIBLE":"INVALID_LENGTH"}function nt(t,e){return"IS_POSSIBLE"===tt(t,e)}function rt(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null==n)return;var r,d,i=[],a=!0,o=!1;try{for(n=n.call(t);!(a=(r=n.next()).done)&&(i.push(r.value),!e||i.length!==e);a=!0);}catch(t){o=!0,d=t}finally{try{a||null==n.return||n.return()}finally{if(o)throw d}}return i}(t,e)||dt(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function dt(t,e){if(t){if("string"==typeof t)return it(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?it(t,e):void 0}}function it(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}((t=t.replace(/^tel:/,"tel=")).split(";"));!(r=d()).done;){var i=rt(r.value.split("="),2),a=i[0],o=i[1];switch(a){case"tel":e=o;break;case"ext":n=o;break;case"phone-context":"+"===o[0]&&(e=o+e)}}if(!B(e))return{};var $={number:e};return n&&($.ext=n),$}function ot(t){var e=t.number,n=t.ext;if(!e)return"";if("+"!==e[0])throw new Error('"formatRFC3966()" expects "number" to be in E.164 format.');return"tel:".concat(e).concat(n?";ext="+n:"")}function $t(t,e){return t=t||"",new RegExp("^(?:"+e+")$").test(t)}function ut(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(n)return(n=n.call(t)).next.bind(n);if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return lt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return lt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0;return function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function lt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function vt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0){var i=d.leadingDigitsPatterns()[d.leadingDigitsPatterns().length-1];if(0!==e.search(i))continue}if($t(e,d.pattern()))return d}}(r.formats(),t);return i?mt(t,i,{useInternationalFormat:"INTERNATIONAL"===n,withNationalPrefix:!i.nationalPrefixIsOptionalWhenFormattingInNationalFormat()||!d||!1!==d.nationalPrefix,carrierCode:e,metadata:r}):t}function St(t,e,n,r){return e?r(t,e,n):t}function Et(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function It(t){for(var e=1;e0&&"0"===a[1]))return t}}}function Rt(t,e){if(t&&e.numberingPlan.nationalPrefixForParsing()){var n=new RegExp("^(?:"+e.numberingPlan.nationalPrefixForParsing()+")"),r=n.exec(t);if(r){var d,i,a,o=r.length-1,$=o>0&&r[o];if(e.nationalPrefixTransformRule()&&$)d=t.replace(n,e.nationalPrefixTransformRule()),o>1&&(i=r[1]);else{var u=r[0];d=t.slice(u.length),$&&(i=r[1])}if($){var l=t.indexOf(r[1]);t.slice(0,l)===e.numberingPlan.nationalPrefix()&&(a=e.numberingPlan.nationalPrefix())}else a=r[0];return{nationalNumber:d,nationalPrefix:a,carrierCode:i}}}return{nationalNumber:t}}function Mt(t,e){var n=Rt(t,e),r=n.carrierCode,d=n.nationalNumber;if(d!==t){if(!function(t,e,n){if($t(t,n.nationalNumberPattern())&&!$t(e,n.nationalNumberPattern()))return!1;return!0}(t,d,e))return{nationalNumber:t};if(e.possibleLengths()&&!function(t,e){switch(tt(t,e)){case"TOO_SHORT":case"INVALID_LENGTH":return!1;default:return!0}}(d,e))return{nationalNumber:t}}return{nationalNumber:d,carrierCode:r}}function Lt(t,e,n,r){var d=e?j(e,r):n;if(0===t.indexOf(d)){(r=new P(r)).selectNumberingPlan(e,n);var i=t.slice(d.length),a=Mt(i,r).nationalNumber,o=Mt(t,r).nationalNumber;if(!$t(o,r.nationalNumberPattern())&&$t(a,r.nationalNumberPattern())||"TOO_LONG"===tt(o,r))return{countryCallingCode:d,number:i}}return{number:t}}function _t(t,e,n,r){if(!t)return{};if("+"!==t[0]){var d=Dt(t,e,n,r);if(!d||d===t){if(e||n){var i=Lt(t,e,n,r),a=i.countryCallingCode,o=i.number;if(a)return{countryCallingCode:a,number:o}}return{number:t}}t="+"+d}if("0"===t[1])return{};r=new P(r);for(var $=2;$-1<=3&&$<=t.length;){var u=t.slice(1,$);if(r.hasCallingCode(u))return r.selectNumberingPlan(u),{countryCallingCode:u,number:t.slice($)};$++}return{}}function Gt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(n)return(n=n.call(t)).next.bind(n);if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return Bt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Bt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0;return function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Bt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n250){if(n)throw new s("TOO_LONG");return}if(!1===e)return t;var r=t.search(Wt);if(r<0)return;return t.slice(r).replace(Vt,"")}(t,n,e);if(!r)return{};if(!B(r))return function(t){return L.test(t)}(r)?{error:"TOO_SHORT"}:{};var d=function(t){var e=t.search(U);if(e<0)return{};for(var n=t.slice(0,e),r=t.match(U),d=1;d17){if(e.v2)throw new s("TOO_LONG");return{}}if(e.v2){var f=new jt(l,u,n.metadata);return $&&(f.country=$),c&&(f.carrierCode=c),i&&(f.ext=i),f}var h=!!(e.extended?n.hasSelectedNumberingPlan():$)&&$t(u,n.nationalNumberPattern());return e.extended?{country:$,countryCallingCode:l,carrierCode:c,valid:h,possible:!!h||!(!0!==e.extended||!n.possibleLengths()||!nt(u,n)),phone:u,ext:i}:h?function(t,e,n){var r={country:t,phone:e};n&&(r.ext=n);return r}($,u,i):{}}function Kt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Yt(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,r=new Array(e);n2&&void 0!==arguments[2]?arguments[2]:null,d=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;Pe(this,t),this.key=e,this.value=n,this.next=r,this.prev=d})),xe=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10;Pe(this,t),this.size=0,this.limit=e,this.head=null,this.tail=null,this.cache={}}return Ne(t,[{key:"put",value:function(t,e){if(this.ensureLimit(),this.head){var n=new Oe(t,e,this.head);this.head.prev=n,this.head=n}else this.head=this.tail=new Oe(t,e);this.cache[t]=this.head,this.size++}},{key:"get",value:function(t){if(this.cache[t]){var e=this.cache[t].value;return this.remove(t),this.put(t,e),e}console.log("Item not available in cache for key ".concat(t))}},{key:"ensureLimit",value:function(){this.size===this.limit&&this.remove(this.tail.key)}},{key:"remove",value:function(t){var e=this.cache[t];null!==e.prev?e.prev.next=e.next:this.head=e.next,null!==e.next?e.next.prev=e.prev:this.tail=e.prev,delete this.cache[t],this.size--}},{key:"clear",value:function(){this.head=null,this.tail=null,this.size=0,this.cache={}}}]),t}();function we(t,e){for(var n=0;n=0?e.slice(0,n):e}var Ae="   ᠎ - \u2028\u2029   ",Te="[".concat(Ae,"]"),je="[^".concat(Ae,"]"),Fe="[".concat("0-9٠-٩۰-۹߀-߉०-९০-৯੦-੯૦-૯୦-୯௦-௯౦-౯೦-೯൦-൯๐-๙໐-໙༠-༩၀-၉႐-႙០-៩᠐-᠙᥆-᥏᧐-᧙᪀-᪉᪐-᪙᭐-᭙᮰-᮹᱀-᱉᱐-᱙꘠-꘩꣐-꣙꤀-꤉꧐-꧙꩐-꩙꯰-꯹0-9","]"),ke="A-Za-zªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎↃↄⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々〆〱-〵〻〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛥꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ",De="[".concat(ke,"]"),Re=new RegExp(De),Me="[".concat("$¢-¥֏؋৲৳৻૱௹฿៛₠-₹꠸﷼﹩$¢£¥₩","]"),Le=new RegExp(Me),_e="[".concat("̀-ͯ҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-ٰٟۖ-ۜ۟-۪ۤۧۨ-ܑۭܰ-݊ަ-ް߫-߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛ࣤ-ࣾऀ-ंऺ़ु-ै्॑-ॗॢॣঁ়ু-ৄ্ৢৣਁਂ਼ੁੂੇੈੋ-੍ੑੰੱੵઁં઼ુ-ૅેૈ્ૢૣଁ଼ିୁ-ୄ୍ୖୢୣஂீ்ా-ీె-ైొ-్ౕౖౢౣ಼ಿೆೌ್ೢೣു-ൄ്ൢൣ්ි-ුූัิ-ฺ็-๎ັິ-ູົຼ່-ໍཱ༹༘༙༵༷-ཾྀ-྄྆྇ྍ-ྗྙ-ྼ࿆ိ-ူဲ-့္်ွှၘၙၞ-ၠၱ-ၴႂႅႆႍႝ፝-፟ᜒ-᜔ᜲ-᜴ᝒᝓᝲᝳ឴឵ិ-ួំ៉-៓៝᠋-᠍ᢩᤠ-ᤢᤧᤨᤲ᤹-᤻ᨘᨗᩖᩘ-ᩞ᩠ᩢᩥ-ᩬᩳ-᩿᩼ᬀ-ᬃ᬴ᬶ-ᬺᬼᭂ᭫-᭳ᮀᮁᮢ-ᮥᮨᮩ᯦᮫ᯨᯩᯭᯯ-ᯱᰬ-ᰳᰶ᰷᳐-᳔᳒-᳢᳠-᳨᳭᳴᷀-ᷦ᷼-᷿⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〭꙯ꙴ-꙽ꚟ꛰꛱ꠂ꠆ꠋꠥꠦ꣄꣠-꣱ꤦ-꤭ꥇ-ꥑꦀ-ꦂ꦳ꦶ-ꦹꦼꨩ-ꨮꨱꨲꨵꨶꩃꩌꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫬꫭ꫶ꯥꯨ꯭ﬞ︀-️︠-︦","]"),Ge=new RegExp(_e),Be=new RegExp("[\0-€-ÿĀ-ſḀ-ỿƀ-ɏ̀-ͯ]");function Ue(t){return!(!Re.test(t)&&!Ge.test(t))&&Be.test(t)}function We(t){return"%"===t||Le.test(t)}function Ve(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(n)return(n=n.call(t)).next.bind(n);if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return He(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return He(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0;return function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function He(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0){if(i.getNationalPrefixOptionalWhenFormatting())return!0;if(PhoneNumberUtil.formattingRuleHasFirstGroupOnly(i.getNationalPrefixFormattingRule()))return!0;var a=PhoneNumberUtil.normalizeDigitsOnly(t.getRawInput());return util.maybeStripNationalPrefixAndCarrierCode(a,r,null)}return!0}function Xe(t,e){var n=e.indexOf("/");if(n<0)return!1;var r=e.indexOf("/",n+1);return!(r<0)&&(!(t.getCountryCodeSource()===CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN||t.getCountryCodeSource()===CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN)||PhoneNumberUtil.normalizeDigitsOnly(e.substring(0,n))!==String(t.getCountryCode())||e.slice(r+1).indexOf("/")>=0)}function Je(t,e,n,r,d){var i=normalizeDigits(e,!0),a=ze(n,t,null);if(r(n,t,i,a))return!0;var o=MetadataManager.getAlternateFormatsForCountry(t.getCountryCode()),$=util.getNationalSignificantNumber(t);if(o)for(var u,l=Ve(o.numberFormats());!(u=l()).done;){var c=u.value;if(c.leadingDigitsPatterns().length>0)if(!d.getPatternForRegExp("^"+c.leadingDigitsPatterns()[0]).test($))continue;if(r(n,t,i,a=ze(n,t,c)))return!0}return!1}function ze(t,e,n){if(n){var r=util.getNationalSignificantNumber(e);return util.formatNsnUsingPattern(r,n,"RFC3966",t).split("-")}var d=formatNumber(e,"RFC3966",t),i=d.indexOf(";");i<0&&(i=d.length);var a=d.indexOf("-")+1;return d.slice(a,i).split("-")}function Qe(t,e,n,r){var d=n.split(NON_DIGITS_PATTERN),i=e.hasExtension()?d.length-2:d.length-1;if(1==d.length||d[i].contains(util.getNationalSignificantNumber(e)))return!0;for(var a,o,$=r.length-1;$>0&&i>=0;){if(d[i]!==r[$])return!1;$--,i--}return i>=0&&(a=d[i],o=r[0],a.indexOf(o,a.length-o.length)===a.length-o.length)}function qe(t,e,n,r){var d,i,a=0;if(e.getCountryCodeSource()!==CountryCodeSource.FROM_DEFAULT_COUNTRY){var o=String(e.getCountryCode());a=n.indexOf(o)+o.length()}for(var $=0;$=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function gn(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0;if(vn(this,t),!(n=pn(pn({},n),{},{defaultCallingCode:n.defaultCallingCode,defaultCountry:n.defaultCountry&&F(n.defaultCountry,r)?n.defaultCountry:void 0,leniency:n.leniency||n.extended?"POSSIBLE":"VALID",maxTries:n.maxTries||Tn})).leniency)throw new TypeError("`Leniency` not supplied");if(n.maxTries<0)throw new TypeError("`maxTries` not supplied");if(this.text=e,this.options=n,this.metadata=r,this.leniency=Ke[n.leniency],!this.leniency)throw new TypeError("Unknown leniency: ".concat(n.leniency,"."));this.maxTries=n.maxTries,this.PATTERN=new RegExp(In,"ig"),this.state="NOT_READY",this.searchIndex=0,this.regExpCache=new Se(32)}var e,n,r;return e=t,n=[{key:"find",value:function(){for(var t;this.maxTries>0&&null!==(t=this.PATTERN.exec(this.text));){var e=t[0],n=t.index;if(an(e=en(e),n,this.text)){var r=this.parseAndVerify(e,n,this.text)||this.extractInnerMatch(e,n,this.text);if(r){if(this.options.v2){var d=new jt(r.country||r.countryCallingCode,r.phone,this.metadata);return r.ext&&(d.ext=r.ext),{startsAt:r.startsAt,endsAt:r.endsAt,number:d}}return r}}this.maxTries--}}},{key:"extractInnerMatch",value:function(t,e,n){for(var r,d=yn(Pn);!(r=d()).done;)for(var i=r.value,a=!0,o=void 0,$=new RegExp(i,"g");this.maxTries>0&&null!==(o=$.exec(t));){if(a){var u=Ie(An,t.slice(0,o.index)),l=this.parseAndVerify(u,e,n);if(l)return l;this.maxTries--,a=!1}var c=Ie(An,o[1]),s=t.indexOf(c,o.index),f=this.parseAndVerify(c,e+s,n);if(f)return f;this.maxTries--}}},{key:"parseAndVerify",value:function(t,e,n){if(function(t,e,n,r){if(fn.test(t)&&!hn.test(t)){if("POSSIBLE"!==r){if(e>0&&!cn.test(t)){var d=n[e-1];if(We(d)||Ue(d))return!1}var i=e+t.length;if(i=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Zn(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1;)1&e&&(n+=t),e>>=1,t+=t;return n+t}function Qn(t,e){return")"===t[e]&&e++,function(t){var e=[],n=0;for(;n=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function $r(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&void 0!==arguments[1]?arguments[1]:{},n=e.allowOverflow;if(!t)throw new Error("String is required");var r=cr(t.split(""),this.matchTree,!0);if(r&&r.match&&delete r.matchedChars,!r||!r.overflow||n)return r}}],n&&ur(e.prototype,n),r&&ur(e,r),Object.defineProperty(e,"prototype",{writable:!1}),t}();function cr(t,e,n){if("string"==typeof e){var r=t.join("");return 0===e.indexOf(r)?t.length===e.length?{match:!0,matchedChars:t}:{partialMatch:!0}:0===r.indexOf(e)?n&&t.length>e.length?{overflow:!0}:{match:!0,matchedChars:t.slice(0,e.length)}:void 0}if(Array.isArray(e)){for(var d=t.slice(),i=0;i=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function fr(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=0)){var n=this.getTemplateForFormat(t,e);return n?(this.setNationalNumberTemplate(n,e),!0):void 0}}},{key:"getSeparatorAfterNationalPrefix",value:function(t){return this.isNANP||t&&t.nationalPrefixFormattingRule()&&gr.test(t.nationalPrefixFormattingRule())?" ":""}},{key:"getInternationalPrefixBeforeCountryCallingCode",value:function(t,e){var n=t.IDDPrefix,r=t.missingPlus;return n?e&&!1===e.spacing?n:n+" ":r?"":"+"}},{key:"getTemplate",value:function(t){if(this.template){for(var e=-1,n=0,r=t.international?this.getInternationalPrefixBeforeCountryCallingCode(t,{spacing:!1}):"";no.length)){var $=new RegExp("^"+a+"$"),u=n.replace(/\d/g,"9");$.test(u)&&(o=u);var l,c=this.getFormatFormat(t,r);if(this.shouldTryNationalPrefixFormattingRule(t,{international:r,nationalPrefix:d})){var s=c.replace(gt,t.nationalPrefixFormattingRule());if(Y(t.nationalPrefixFormattingRule())===(d||"")+Y("$1")&&(c=s,l=!0,d))for(var f=d.length;f>0;)c=c.replace(/\d/,Xn),f--}var h=o.replace(new RegExp(a),c).replace(new RegExp("9","g"),Xn);return l||(i?h=zn(Xn,i.length)+" "+h:d&&(h=zn(Xn,d.length)+this.getSeparatorAfterNationalPrefix(t)+h)),r&&(h=yt(h)),h}}},{key:"formatNextNationalNumberDigits",value:function(t){var e=function(t,e,n){for(var r,d=Yn(n.split(""));!(r=d()).done;){var i=r.value;if(t.slice(e+1).search(Jn)<0)return;e=t.search(Jn),t=t.replace(Jn,i)}return[t,e]}(this.populatedNationalNumberTemplate,this.populatedNationalNumberTemplatePosition,t);if(e)return this.populatedNationalNumberTemplate=e[0],this.populatedNationalNumberTemplatePosition=e[1],Qn(this.populatedNationalNumberTemplate,this.populatedNationalNumberTemplatePosition+1);this.resetFormat()}},{key:"shouldTryNationalPrefixFormattingRule",value:function(t,e){var n=e.international,r=e.nationalPrefix;if(t.nationalPrefixFormattingRule()){var d=t.usesNationalPrefix();if(d&&r||!d&&!n)return!0}}}],n&&hr(e.prototype,n),r&&hr(e,r),Object.defineProperty(e,"prototype",{writable:!1}),t}();function br(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null==n)return;var r,d,i=[],a=!0,o=!1;try{for(n=n.call(t);!(a=(r=n.next()).done)&&(i.push(r.value),!e||i.length!==e);a=!0);}catch(t){o=!0,d=t}finally{try{a||null==n.return||n.return()}finally{if(o)throw d}}return i}(t,e)||function(t,e){if(!t)return;if("string"==typeof t)return vr(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return vr(t,e)}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function vr(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=3;if(e.appendDigits(t),r&&this.extractIddPrefix(e),this.isWaitingForCountryCallingCode(e)){if(!this.extractCountryCallingCode(e))return}else e.appendNationalSignificantNumberDigits(t);e.international||this.hasExtractedNationalSignificantNumber||this.extractNationalSignificantNumber(e.getNationalDigits(),(function(t){return e.update(t)}))}},{key:"isWaitingForCountryCallingCode",value:function(t){var e=t.international,n=t.callingCode;return e&&!n}},{key:"extractCountryCallingCode",value:function(t){var e=_t("+"+t.getDigitsWithoutInternationalPrefix(),this.defaultCountry,this.defaultCallingCode,this.metadata.metadata),n=e.countryCallingCode,r=e.number;if(n)return t.setCallingCode(n),t.update({nationalSignificantNumber:r}),!0}},{key:"reset",value:function(t){if(t){this.hasSelectedNumberingPlan=!0;var e=t._nationalPrefixForParsing();this.couldPossiblyExtractAnotherNationalSignificantNumber=e&&xr.test(e)}else this.hasSelectedNumberingPlan=void 0,this.couldPossiblyExtractAnotherNationalSignificantNumber=void 0}},{key:"extractNationalSignificantNumber",value:function(t,e){if(this.hasSelectedNumberingPlan){var n=Rt(t,this.metadata),r=n.nationalPrefix,d=n.nationalNumber,i=n.carrierCode;if(d!==t)return this.onExtractedNationalNumber(r,i,d,t,e),!0}}},{key:"extractAnotherNationalSignificantNumber",value:function(t,e,n){if(!this.hasExtractedNationalSignificantNumber)return this.extractNationalSignificantNumber(t,n);if(this.couldPossiblyExtractAnotherNationalSignificantNumber){var r=Rt(t,this.metadata),d=r.nationalPrefix,i=r.nationalNumber,a=r.carrierCode;if(i!==e)return this.onExtractedNationalNumber(d,a,i,t,n),!0}}},{key:"onExtractedNationalNumber",value:function(t,e,n,r,d){var i,a,o=r.lastIndexOf(n);if(o>=0&&o===r.length-n.length){a=!0;var $=r.slice(0,o);$!==t&&(i=$)}d({nationalPrefix:t,carrierCode:e,nationalSignificantNumber:n,nationalSignificantNumberMatchesInput:a,complexPrefixBeforeNationalSignificantNumber:i}),this.hasExtractedNationalSignificantNumber=!0,this.onNationalSignificantNumberChange()}},{key:"reExtractNationalSignificantNumber",value:function(t){return!!this.extractAnotherNationalSignificantNumber(t.getNationalDigits(),t.nationalSignificantNumber,(function(e){return t.update(e)}))||(this.extractIddPrefix(t)||this.fixMissingPlus(t)?(this.extractCallingCodeAndNationalSignificantNumber(t),!0):void 0)}},{key:"extractIddPrefix",value:function(t){var e=t.international,n=t.IDDPrefix,r=t.digits;if(t.nationalSignificantNumber,!e&&!n){var d=Dt(r,this.defaultCountry,this.defaultCallingCode,this.metadata.metadata);return void 0!==d&&d!==r?(t.update({IDDPrefix:r.slice(0,r.length-d.length)}),this.startInternationalNumber(t,{country:void 0,callingCode:void 0}),!0):void 0}}},{key:"fixMissingPlus",value:function(t){if(!t.international){var e=Lt(t.digits,this.defaultCountry,this.defaultCallingCode,this.metadata.metadata),n=e.countryCallingCode;if(e.number,n)return t.update({missingPlus:!0}),this.startInternationalNumber(t,{country:t.country,callingCode:n}),!0}}},{key:"startInternationalNumber",value:function(t,e){var n=e.country,r=e.callingCode;t.startInternationalNumber(n,r),t.nationalSignificantNumber&&(t.resetNationalSignificantNumber(),this.onNationalSignificantNumberChange(),this.hasExtractedNationalSignificantNumber=void 0)}},{key:"extractCallingCodeAndNationalSignificantNumber",value:function(t){this.extractCountryCallingCode(t)&&this.extractNationalSignificantNumber(t.getNationalDigits(),(function(e){return t.update(e)}))}}])&&Cr(e.prototype,n),r&&Cr(e,r),Object.defineProperty(e,"prototype",{writable:!1}),t}();function Sr(t){return Sr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Sr(t)}function Er(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null==n)return;var r,d,i=[],a=!0,o=!1;try{for(n=n.call(t);!(a=(r=n.next()).done)&&(i.push(r.value),!e||i.length!==e);a=!0);}catch(t){o=!0,d=t}finally{try{a||null==n.return||n.return()}finally{if(o)throw d}}return i}(t,e)||function(t,e){if(!t)return;if("string"==typeof t)return Ir(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Ir(t,e)}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ir(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1}},{key:"determineTheCountry",value:function(){this.state.setCountry(Ut(this.isInternational()?this.state.callingCode:this.defaultCallingCode,this.state.nationalSignificantNumber,this.metadata))}},{key:"getNumberValue",value:function(){var t=this.state,e=t.digits,n=t.callingCode,r=t.country,d=t.nationalSignificantNumber;if(e)return this.isInternational()?n?"+"+n+d:"+"+e:r||n?"+"+(r?this.metadata.countryCallingCode():n)+d:void 0}},{key:"getNumber",value:function(){var t=this.state,e=t.nationalSignificantNumber,n=t.carrierCode,r=t.callingCode,d=this._getCountry();if(e&&(d||r)){var i=new jt(d||r,e,this.metadata.metadata);return n&&(i.carrierCode=n),i}}},{key:"isPossible",value:function(){var t=this.getNumber();return!!t&&t.isPossible()}},{key:"isValid",value:function(){var t=this.getNumber();return!!t&&t.isValid()}},{key:"getNationalNumber",value:function(){return this.state.nationalSignificantNumber}},{key:"getChars",value:function(){return(this.state.international?"+":"")+this.state.digits}},{key:"getTemplate",value:function(){return this.formatter.getTemplate(this.state)||this.getNonFormattedTemplate()||""}}])&&Ar(e.prototype,n),r&&Ar(e,r),Object.defineProperty(e,"prototype",{writable:!1}),t}();function jr(t){return new P(t).getCountries()}function Fr(t,e,n){if(e[t])return new jt(t,e[t],n)}function kr(t,e,n){return n||(n=e,e=void 0),new Tr(e,n).input(t)}function Dr(){return n(ee,arguments)}function Rr(){return n($e,arguments)}function Mr(t,n){return jn.call(this,t,n,e)}function Lr(t){return Tr.call(this,t,e)}function _r(){return P.call(this,e)}Mr.prototype=Object.create(jn.prototype,{}),Mr.prototype.constructor=Mr,Lr.prototype=Object.create(Tr.prototype,{}),Lr.prototype.constructor=Lr,_r.prototype=Object.create(P.prototype,{}),_r.prototype.constructor=_r,t.AsYouType=Lr,t.DIGIT_PLACEHOLDER=Xn,t.Metadata=_r,t.ParseError=s,t.PhoneNumberMatcher=Mr,t.default=Rr,t.findNumbers=function(){return n(kn,arguments)},t.findPhoneNumbersInText=function(){return n(Bn,arguments)},t.formatIncompletePhoneNumber=function(){return n(kr,arguments)},t.formatRFC3966=ot,t.getCountries=function(){return n(jr,arguments)},t.getCountryCallingCode=function(){return n(j,arguments)},t.getExampleNumber=function(){return n(Fr,arguments)},t.getExtPrefix=function(){return n(T,arguments)},t.isPossiblePhoneNumber=function(){return n(ge,arguments)},t.isSupportedCountry=function(){return n(F,arguments)},t.isValidPhoneNumber=function(){return n(se,arguments)},t.parseDigits=Y,t.parseIncompletePhoneNumber=J,t.parsePhoneNumber=Dr,t.parsePhoneNumberCharacter=z,t.parsePhoneNumberFromString=Rr,t.parsePhoneNumberWithError=Dr,t.parseRFC3966=at,t.searchNumbers=function(){return n(Rn,arguments)},t.searchPhoneNumbersInText=function(){return n(Vn,arguments)},t.validatePhoneNumberLength=function(){return n(ve,arguments)},Object.defineProperty(t,"__esModule",{value:!0})})); +//# sourceMappingURL=libphonenumber-min.js.map diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-min.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-min.js.map new file mode 100644 index 00000000..3d23bc96 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"libphonenumber-min.js","sources":["../metadata.min.json.js","../min/exports/withMetadataArgument.js","../es6/ParseError.js","../es6/constants.js","../es6/tools/semver-compare.js","../es6/metadata.js","../es6/helpers/extension/createExtensionPattern.js","../es6/helpers/isViablePhoneNumber.js","../es6/helpers/extension/extractExtension.js","../es6/helpers/parseDigits.js","../es6/parseIncompletePhoneNumber.js","../es6/helpers/mergeArrays.js","../es6/helpers/checkNumberLength.js","../es6/isPossibleNumber_.js","../es6/helpers/RFC3966.js","../es6/helpers/matchesEntirely.js","../es6/helpers/getNumberType.js","../es6/validate_.js","../es6/helpers/applyInternationalSeparatorStyle.js","../es6/helpers/formatNationalNumberUsingFormat.js","../es6/helpers/getIddPrefix.js","../es6/format_.js","../es6/PhoneNumber.js","../es6/helpers/stripIddPrefix.js","../es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js","../es6/helpers/extractNationalNumber.js","../es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js","../es6/helpers/extractCountryCallingCode.js","../es6/helpers/getCountryByCallingCode.js","../es6/parse_.js","../es6/parsePhoneNumber_.js","../es6/parsePhoneNumber.js","../es6/parsePhoneNumberFromString_.js","../es6/parsePhoneNumberFromString.js","../es6/isValidPhoneNumber.js","../es6/isPossiblePhoneNumber.js","../es6/validatePhoneNumberLength.js","../es6/findNumbers/LRUCache.js","../es6/findNumbers/RegExpCache.js","../es6/findNumbers/util.js","../es6/findNumbers/utf-8.js","../es6/findNumbers/Leniency.js","../es6/findNumbers/parsePreCandidate.js","../es6/findNumbers/isValidPreCandidate.js","../es6/findNumbers/isValidCandidate.js","../es6/PhoneNumberMatcher.js","../es6/findNumbers_.js","../es6/findNumbers.js","../es6/searchNumbers.js","../es6/findPhoneNumbersInText.js","../es6/searchPhoneNumbersInText.js","../es6/AsYouTypeState.js","../es6/AsYouTypeFormatter.util.js","../es6/AsYouTypeFormatter.complete.js","../es6/AsYouTypeFormatter.PatternParser.js","../es6/AsYouTypeFormatter.PatternMatcher.js","../es6/AsYouTypeFormatter.js","../es6/AsYouTypeParser.js","../es6/AsYouType.js","../es6/getCountries.js","../es6/getExampleNumber.js","../es6/formatIncompletePhoneNumber.js","../min/exports/parsePhoneNumberWithError.js","../min/exports/parsePhoneNumberFromString.js","../min/exports/PhoneNumberMatcher.js","../min/exports/AsYouType.js","../min/exports/Metadata.js","../min/exports/findNumbers.js","../min/exports/findPhoneNumbersInText.js","../min/exports/formatIncompletePhoneNumber.js","../min/exports/getCountries.js","../min/exports/getCountryCallingCode.js","../min/exports/getExampleNumber.js","../min/exports/getExtPrefix.js","../min/exports/isPossiblePhoneNumber.js","../min/exports/isSupportedCountry.js","../min/exports/isValidPhoneNumber.js","../min/exports/searchNumbers.js","../min/exports/searchPhoneNumbersInText.js","../min/exports/validatePhoneNumberLength.js"],"sourcesContent":["// This file is a workaround for a bug in web browsers' \"native\"\n// ES6 importing system which is uncapable of importing \"*.json\" files.\n// https://github.com/catamphetamine/libphonenumber-js/issues/239\nexport default {\"version\":4,\"country_calling_codes\":{\"1\":[\"US\",\"AG\",\"AI\",\"AS\",\"BB\",\"BM\",\"BS\",\"CA\",\"DM\",\"DO\",\"GD\",\"GU\",\"JM\",\"KN\",\"KY\",\"LC\",\"MP\",\"MS\",\"PR\",\"SX\",\"TC\",\"TT\",\"VC\",\"VG\",\"VI\"],\"7\":[\"RU\",\"KZ\"],\"20\":[\"EG\"],\"27\":[\"ZA\"],\"30\":[\"GR\"],\"31\":[\"NL\"],\"32\":[\"BE\"],\"33\":[\"FR\"],\"34\":[\"ES\"],\"36\":[\"HU\"],\"39\":[\"IT\",\"VA\"],\"40\":[\"RO\"],\"41\":[\"CH\"],\"43\":[\"AT\"],\"44\":[\"GB\",\"GG\",\"IM\",\"JE\"],\"45\":[\"DK\"],\"46\":[\"SE\"],\"47\":[\"NO\",\"SJ\"],\"48\":[\"PL\"],\"49\":[\"DE\"],\"51\":[\"PE\"],\"52\":[\"MX\"],\"53\":[\"CU\"],\"54\":[\"AR\"],\"55\":[\"BR\"],\"56\":[\"CL\"],\"57\":[\"CO\"],\"58\":[\"VE\"],\"60\":[\"MY\"],\"61\":[\"AU\",\"CC\",\"CX\"],\"62\":[\"ID\"],\"63\":[\"PH\"],\"64\":[\"NZ\"],\"65\":[\"SG\"],\"66\":[\"TH\"],\"81\":[\"JP\"],\"82\":[\"KR\"],\"84\":[\"VN\"],\"86\":[\"CN\"],\"90\":[\"TR\"],\"91\":[\"IN\"],\"92\":[\"PK\"],\"93\":[\"AF\"],\"94\":[\"LK\"],\"95\":[\"MM\"],\"98\":[\"IR\"],\"211\":[\"SS\"],\"212\":[\"MA\",\"EH\"],\"213\":[\"DZ\"],\"216\":[\"TN\"],\"218\":[\"LY\"],\"220\":[\"GM\"],\"221\":[\"SN\"],\"222\":[\"MR\"],\"223\":[\"ML\"],\"224\":[\"GN\"],\"225\":[\"CI\"],\"226\":[\"BF\"],\"227\":[\"NE\"],\"228\":[\"TG\"],\"229\":[\"BJ\"],\"230\":[\"MU\"],\"231\":[\"LR\"],\"232\":[\"SL\"],\"233\":[\"GH\"],\"234\":[\"NG\"],\"235\":[\"TD\"],\"236\":[\"CF\"],\"237\":[\"CM\"],\"238\":[\"CV\"],\"239\":[\"ST\"],\"240\":[\"GQ\"],\"241\":[\"GA\"],\"242\":[\"CG\"],\"243\":[\"CD\"],\"244\":[\"AO\"],\"245\":[\"GW\"],\"246\":[\"IO\"],\"247\":[\"AC\"],\"248\":[\"SC\"],\"249\":[\"SD\"],\"250\":[\"RW\"],\"251\":[\"ET\"],\"252\":[\"SO\"],\"253\":[\"DJ\"],\"254\":[\"KE\"],\"255\":[\"TZ\"],\"256\":[\"UG\"],\"257\":[\"BI\"],\"258\":[\"MZ\"],\"260\":[\"ZM\"],\"261\":[\"MG\"],\"262\":[\"RE\",\"YT\"],\"263\":[\"ZW\"],\"264\":[\"NA\"],\"265\":[\"MW\"],\"266\":[\"LS\"],\"267\":[\"BW\"],\"268\":[\"SZ\"],\"269\":[\"KM\"],\"290\":[\"SH\",\"TA\"],\"291\":[\"ER\"],\"297\":[\"AW\"],\"298\":[\"FO\"],\"299\":[\"GL\"],\"350\":[\"GI\"],\"351\":[\"PT\"],\"352\":[\"LU\"],\"353\":[\"IE\"],\"354\":[\"IS\"],\"355\":[\"AL\"],\"356\":[\"MT\"],\"357\":[\"CY\"],\"358\":[\"FI\",\"AX\"],\"359\":[\"BG\"],\"370\":[\"LT\"],\"371\":[\"LV\"],\"372\":[\"EE\"],\"373\":[\"MD\"],\"374\":[\"AM\"],\"375\":[\"BY\"],\"376\":[\"AD\"],\"377\":[\"MC\"],\"378\":[\"SM\"],\"380\":[\"UA\"],\"381\":[\"RS\"],\"382\":[\"ME\"],\"383\":[\"XK\"],\"385\":[\"HR\"],\"386\":[\"SI\"],\"387\":[\"BA\"],\"389\":[\"MK\"],\"420\":[\"CZ\"],\"421\":[\"SK\"],\"423\":[\"LI\"],\"500\":[\"FK\"],\"501\":[\"BZ\"],\"502\":[\"GT\"],\"503\":[\"SV\"],\"504\":[\"HN\"],\"505\":[\"NI\"],\"506\":[\"CR\"],\"507\":[\"PA\"],\"508\":[\"PM\"],\"509\":[\"HT\"],\"590\":[\"GP\",\"BL\",\"MF\"],\"591\":[\"BO\"],\"592\":[\"GY\"],\"593\":[\"EC\"],\"594\":[\"GF\"],\"595\":[\"PY\"],\"596\":[\"MQ\"],\"597\":[\"SR\"],\"598\":[\"UY\"],\"599\":[\"CW\",\"BQ\"],\"670\":[\"TL\"],\"672\":[\"NF\"],\"673\":[\"BN\"],\"674\":[\"NR\"],\"675\":[\"PG\"],\"676\":[\"TO\"],\"677\":[\"SB\"],\"678\":[\"VU\"],\"679\":[\"FJ\"],\"680\":[\"PW\"],\"681\":[\"WF\"],\"682\":[\"CK\"],\"683\":[\"NU\"],\"685\":[\"WS\"],\"686\":[\"KI\"],\"687\":[\"NC\"],\"688\":[\"TV\"],\"689\":[\"PF\"],\"690\":[\"TK\"],\"691\":[\"FM\"],\"692\":[\"MH\"],\"850\":[\"KP\"],\"852\":[\"HK\"],\"853\":[\"MO\"],\"855\":[\"KH\"],\"856\":[\"LA\"],\"880\":[\"BD\"],\"886\":[\"TW\"],\"960\":[\"MV\"],\"961\":[\"LB\"],\"962\":[\"JO\"],\"963\":[\"SY\"],\"964\":[\"IQ\"],\"965\":[\"KW\"],\"966\":[\"SA\"],\"967\":[\"YE\"],\"968\":[\"OM\"],\"970\":[\"PS\"],\"971\":[\"AE\"],\"972\":[\"IL\"],\"973\":[\"BH\"],\"974\":[\"QA\"],\"975\":[\"BT\"],\"976\":[\"MN\"],\"977\":[\"NP\"],\"992\":[\"TJ\"],\"993\":[\"TM\"],\"994\":[\"AZ\"],\"995\":[\"GE\"],\"996\":[\"KG\"],\"998\":[\"UZ\"]},\"countries\":{\"AC\":[\"247\",\"00\",\"(?:[01589]\\\\d|[46])\\\\d{4}\",[5,6]],\"AD\":[\"376\",\"00\",\"(?:1|6\\\\d)\\\\d{7}|[135-9]\\\\d{5}\",[6,8,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[135-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]]],\"AE\":[\"971\",\"00\",\"(?:[4-7]\\\\d|9[0-689])\\\\d{7}|800\\\\d{2,9}|[2-4679]\\\\d{7}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{2,9})\",\"$1 $2\",[\"60|8\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[236]|[479][2-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{5})\",\"$1 $2 $3\",[\"[479]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],\"AF\":[\"93\",\"00\",\"[2-7]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"]],\"0\"],\"AG\":[\"1\",\"011\",\"(?:268|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([457]\\\\d{6})$\",\"268$1\",0,\"268\"],\"AI\":[\"1\",\"011\",\"(?:264|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2457]\\\\d{6})$\",\"264$1\",0,\"264\"],\"AL\":[\"355\",\"00\",\"(?:700\\\\d\\\\d|900)\\\\d{3}|8\\\\d{5,7}|(?:[2-5]|6\\\\d)\\\\d{7}\",[6,7,8,9],[[\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"80|9\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2358][2-5]|4\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[23578]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"]],\"0\"],\"AM\":[\"374\",\"00\",\"(?:[1-489]\\\\d|55|60|77)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]0\"],\"0 $1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2|3[12]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"1|47\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[3-9]\"],\"0$1\"]],\"0\"],\"AO\":[\"244\",\"00\",\"[29]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[29]\"]]]],\"AR\":[\"54\",\"00\",\"(?:11|[89]\\\\d\\\\d)\\\\d{8}|[2368]\\\\d{9}\",[10,11],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2-$3\",[\"2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])\",\"2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"1\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[68]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[23]\"],\"0$1\",1],[\"(\\\\d)(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9(?:2[2-469]|3[3-578])\",\"9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))\",\"9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 15-$3-$4\",[\"91\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9\"],\"0$1\",0,\"$1 $2 $3-$4\"]],\"0\",0,\"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?\",\"9$1\"],\"AS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|684|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([267]\\\\d{6})$\",\"684$1\",0,\"684\"],\"AT\":[\"43\",\"00\",\"1\\\\d{3,12}|2\\\\d{6,12}|43(?:(?:0\\\\d|5[02-9])\\\\d{3,9}|2\\\\d{4,5}|[3467]\\\\d{4}|8\\\\d{4,6}|9\\\\d{4,7})|5\\\\d{4,12}|8\\\\d{7,12}|9\\\\d{8,12}|(?:[367]\\\\d|4[0-24-9])\\\\d{4,11}\",[4,5,6,7,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{3,12})\",\"$1 $2\",[\"1(?:11|[2-9])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})\",\"$1 $2\",[\"517\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"5[079]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,10})\",\"$1 $2\",[\"(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,9})\",\"$1 $2\",[\"[2-467]|5[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,7})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],\"AU\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{7}(?:\\\\d(?:\\\\d{2})?)?|8[0-24-9]\\\\d{7})|[2-478]\\\\d{8}|1\\\\d{4,7}\",[5,6,7,8,9,10,12],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"16\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"16\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"14|4\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[2378]\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:30|[89])\"]]],\"0\",0,\"0|(183[12])\",0,0,0,[[\"(?:(?:2(?:[0-26-9]\\\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\\\d|2[0-8]))\\\\d{3}|8(?:51(?:0(?:0[03-9]|[12479]\\\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\\\d|7[89]|9[0-4]))|(?:6[0-8]|[78]\\\\d)\\\\d{3}|9(?:[02-9]\\\\d{3}|1(?:(?:[0-58]\\\\d|6[0135-9])\\\\d|7(?:0[0-24-9]|[1-9]\\\\d)|9(?:[0-46-9]\\\\d|5[0-79])))))\\\\d{3}\",[9]],[\"4(?:83[0-38]|93[0-6])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,[\"163\\\\d{2,6}\",[5,6,7,8,9]],[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"AW\":[\"297\",\"00\",\"(?:[25-79]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[25-9]\"]]]],\"AX\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"2\\\\d{4,9}|35\\\\d{4,5}|(?:60\\\\d\\\\d|800)\\\\d{4,6}|7\\\\d{5,11}|(?:[14]\\\\d|3[0-46-9]|50)\\\\d{4,8}\",[5,6,7,8,9,10,11,12],0,\"0\",0,0,0,0,\"18\",0,\"00\"],\"AZ\":[\"994\",\"00\",\"365\\\\d{6}|(?:[124579]\\\\d|60|88)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[28]|2|365|46\",\"1[28]|2|365[45]|46\",\"1[28]|2|365(?:4|5[02])|46\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[13-9]\"],\"0$1\"]],\"0\"],\"BA\":[\"387\",\"00\",\"6\\\\d{8}|(?:[35689]\\\\d|49|70)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[1-3]|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2-$3\",[\"[3-5]|6[56]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\"]],\"0\"],\"BB\":[\"1\",\"011\",\"(?:246|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"246$1\",0,\"246\"],\"BD\":[\"880\",\"00\",\"[1-469]\\\\d{9}|8[0-79]\\\\d{7,8}|[2-79]\\\\d{8}|[2-9]\\\\d{7}|[3-9]\\\\d{6}|[57-9]\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1-$2\",[\"31[5-8]|[459]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1-$2\",[\"3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:28|4[14]|5)|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,6})\",\"$1-$2\",[\"[13-9]|22\"],\"0$1\"],[\"(\\\\d)(\\\\d{7,8})\",\"$1-$2\",[\"2\"],\"0$1\"]],\"0\"],\"BE\":[\"32\",\"00\",\"4\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:80|9)0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[239]|4[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[15-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4\"],\"0$1\"]],\"0\"],\"BF\":[\"226\",\"00\",\"[025-7]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[025-7]\"]]]],\"BG\":[\"359\",\"00\",\"[2-7]\\\\d{6,7}|[89]\\\\d{6,8}|2\\\\d{5}\",[6,7,8,9],[[\"(\\\\d)(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"43[1-6]|70[1-9]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:70|8)0\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"43[1-7]|7\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[48]|9[08]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"BH\":[\"973\",\"00\",\"[136-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[13679]|8[047]\"]]]],\"BI\":[\"257\",\"00\",\"(?:[267]\\\\d|31)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2367]\"]]]],\"BJ\":[\"229\",\"00\",\"(?:[25689]\\\\d|40)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-689]\"]]]],\"BL\":[\"590\",\"00\",\"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:2[7-9]|5[12]|87)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"976[01]\\\\d{5}\"]]],\"BM\":[\"1\",\"011\",\"(?:441|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-8]\\\\d{6})$\",\"441$1\",0,\"441\"],\"BN\":[\"673\",\"00\",\"[2-578]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-578]\"]]]],\"BO\":[\"591\",\"00(?:1\\\\d)?\",\"(?:[2-467]\\\\d\\\\d|8001)\\\\d{5}\",[8,9],[[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[23]|4[46]\"]],[\"(\\\\d{8})\",\"$1\",[\"[67]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\",0,\"0(1\\\\d)?\"],\"BQ\":[\"599\",\"00\",\"(?:[34]1|7\\\\d)\\\\d{5}\",[7],0,0,0,0,0,0,\"[347]\"],\"BR\":[\"55\",\"00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)\",\"(?:[1-46-9]\\\\d\\\\d|5(?:[0-46-9]\\\\d|5[0-46-9]))\\\\d{8}|[1-9]\\\\d{9}|[3589]\\\\d{8}|[34]\\\\d{7}\",[8,9,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"300|4(?:0[02]|37)\",\"4(?:02|37)0|[34]00\"]],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:[358]|90)0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1 $2-$3\",[\"[16][1-9]|[2-57-9]\"],\"($1)\"]],\"0\",0,\"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\\\d{10,11}))?\",\"$2\"],\"BS\":[\"1\",\"011\",\"(?:242|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([3-8]\\\\d{6})$\",\"242$1\",0,\"242\"],\"BT\":[\"975\",\"00\",\"[17]\\\\d{7}|[2-8]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-68]|7[246]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[67]|7\"]]]],\"BW\":[\"267\",\"00\",\"(?:0800|(?:[37]|800)\\\\d)\\\\d{6}|(?:[2-6]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[24-6]|3[15-79]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"BY\":[\"375\",\"810\",\"(?:[12]\\\\d|33|44|902)\\\\d{7}|8(?:0[0-79]\\\\d{5,7}|[1-7]\\\\d{9})|8(?:1[0-489]|[5-79]\\\\d)\\\\d{7}|8[1-79]\\\\d{6,7}|8[0-79]\\\\d{5}|8\\\\d{5}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"800\"],\"8 $1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,4})\",\"$1 $2 $3\",[\"800\"],\"8 $1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{3})\",\"$1 $2-$3\",[\"1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])\",\"1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"1(?:[56]|7[467])|2[1-3]\"],\"8 0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-4]\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"8 $1\"]],\"8\",0,\"0|80?\",0,0,0,0,\"8~10\"],\"BZ\":[\"501\",\"00\",\"(?:0800\\\\d|[2-8])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-8]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"0\"]]]],\"CA\":[\"1\",\"011\",\"(?:[2-8]\\\\d|90)\\\\d{8}|3\\\\d{6}\",[7,10],0,\"1\",0,0,0,0,0,[[\"(?:2(?:04|[23]6|[48]9|50|63)|3(?:06|43|6[578])|4(?:03|1[68]|3[178]|50|68|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|13|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\\\d{6}\",[10]],[\"\",[10]],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",[10]],[\"900[2-9]\\\\d{6}\",[10]],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|(?:5(?:00|2[125-7]|33|44|66|77|88)|622)[2-9]\\\\d{6}\",[10]],0,[\"310\\\\d{4}\",[7]],0,[\"600[2-9]\\\\d{6}\",[10]]]],\"CC\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"0|([59]\\\\d{7})$\",\"8$1\",0,0,[[\"8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\\\d|70[23]|959))\\\\d{3}\",[9]],[\"4(?:83[0-38]|93[0-6])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"CD\":[\"243\",\"00\",\"[189]\\\\d{8}|[1-68]\\\\d{6}\",[7,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[1-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\"],\"CF\":[\"236\",\"00\",\"(?:[27]\\\\d{3}|8776)\\\\d{4}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[278]\"]]]],\"CG\":[\"242\",\"00\",\"222\\\\d{6}|(?:0\\\\d|80)\\\\d{7}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[02]\"]]]],\"CH\":[\"41\",\"00\",\"8\\\\d{11}|[2-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8[047]|90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]|81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"8\"],\"0$1\"]],\"0\"],\"CI\":[\"225\",\"00\",\"[02]\\\\d{9}\",[10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d)(\\\\d{5})\",\"$1 $2 $3 $4\",[\"2\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"0\"]]]],\"CK\":[\"682\",\"00\",\"[2-578]\\\\d{4}\",[5],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"[2-578]\"]]]],\"CL\":[\"56\",\"(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0\",\"12300\\\\d{6}|6\\\\d{9,10}|[2-9]\\\\d{8}\",[9,10,11],[[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"219\",\"2196\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[1-36]\"],\"($1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9[2-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"60|8\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"60\"]]]],\"CM\":[\"237\",\"00\",\"[26]\\\\d{8}|88\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"88\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[26]|88\"]]]],\"CN\":[\"86\",\"00|1(?:[12]\\\\d|79)\\\\d\\\\d00\",\"1[127]\\\\d{8,9}|2\\\\d{9}(?:\\\\d{2})?|[12]\\\\d{6,7}|86\\\\d{6}|(?:1[03-689]\\\\d|6)\\\\d{7,9}|(?:[3-579]\\\\d|8[0-57-9])\\\\d{6,9}\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5,6})\",\"$1 $2\",[\"(?:10|2[0-57-9])[19]\",\"(?:10|2[0-57-9])(?:10|9[56])\",\"(?:10|2[0-57-9])(?:100|9[56])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]\",\"(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))[19]\",\"85[23](?:10|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:10|9[56])\",\"85[23](?:100|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100|9[56])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:4|80)0\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|2(?:[02-57-9]|1[1-9])\",\"10|2(?:[02-57-9]|1[1-9])\",\"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-578]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"1[3-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"[12]\"],\"0$1\",1]],\"0\",0,\"0|(1(?:[12]\\\\d|79)\\\\d\\\\d)\",0,0,0,0,\"00\"],\"CO\":[\"57\",\"00(?:4(?:[14]4|56)|[579])\",\"(?:60\\\\d\\\\d|9101)\\\\d{6}|(?:1\\\\d|3)\\\\d{9}\",[10,11],[[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"6\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3[0-357]|91\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{7})\",\"$1-$2-$3\",[\"1\"],\"0$1\",0,\"$1 $2 $3\"]],\"0\",0,\"0(4(?:[14]4|56)|[579])?\"],\"CR\":[\"506\",\"00\",\"(?:8\\\\d|90)\\\\d{8}|(?:[24-8]\\\\d{3}|3005)\\\\d{4}\",[8,10],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[3-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[89]\"]]],0,0,\"(19(?:0[0-2468]|1[09]|20|66|77|99))\"],\"CU\":[\"53\",\"119\",\"[27]\\\\d{6,7}|[34]\\\\d{5,7}|(?:5|8\\\\d\\\\d)\\\\d{7}\",[6,7,8,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"2[1-4]|[34]\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{6,7})\",\"$1 $2\",[\"7\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"5\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"8\"],\"0$1\"]],\"0\"],\"CV\":[\"238\",\"0\",\"(?:[2-59]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2-589]\"]]]],\"CW\":[\"599\",\"00\",\"(?:[34]1|60|(?:7|9\\\\d)\\\\d)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[3467]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9[4-8]\"]]],0,0,0,0,0,\"[69]\"],\"CX\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"0|([59]\\\\d{7})$\",\"8$1\",0,0,[[\"8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\\\d|7(?:0[01]|1[0-2])|958))\\\\d{3}\",[9]],[\"4(?:83[0-38]|93[0-6])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"CY\":[\"357\",\"00\",\"(?:[279]\\\\d|[58]0)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[257-9]\"]]]],\"CZ\":[\"420\",\"00\",\"(?:[2-578]\\\\d|60)\\\\d{7}|9\\\\d{8,11}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]|9[015-7]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"96\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]]],\"DE\":[\"49\",\"00\",\"[2579]\\\\d{5,14}|49(?:[34]0|69|8\\\\d)\\\\d\\\\d?|49(?:37|49|60|7[089]|9\\\\d)\\\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\\\d{1,8}|(?:1|[368]\\\\d|4[0-8])\\\\d{3,13}|49(?:[015]\\\\d|2[13]|31|[46][1-8])\\\\d{1,9}\",[4,5,6,7,8,9,10,11,12,13,14,15],[[\"(\\\\d{2})(\\\\d{3,13})\",\"$1 $2\",[\"3[02]|40|[68]9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,12})\",\"$1 $2\",[\"2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\",\"2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2,11})\",\"$1 $2\",[\"[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]\",\"[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"138\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{2,10})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,11})\",\"$1 $2\",[\"181\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{4,10})\",\"$1 $2 $3\",[\"1(?:3|80)|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"1[67]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,12})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"185\",\"1850\",\"18500\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"18[68]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"15[0568]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"15[1279]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{8})\",\"$1 $2\",[\"18\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{7,8})\",\"$1 $2 $3\",[\"1(?:6[023]|7)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{7})\",\"$1 $2 $3\",[\"15[279]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{8})\",\"$1 $2 $3\",[\"15\"],\"0$1\"]],\"0\"],\"DJ\":[\"253\",\"00\",\"(?:2\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[27]\"]]]],\"DK\":[\"45\",\"00\",\"[2-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-9]\"]]]],\"DM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|767|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-7]\\\\d{6})$\",\"767$1\",0,\"767\"],\"DO\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"8001|8[024]9\"],\"DZ\":[\"213\",\"00\",\"(?:[1-4]|[5-79]\\\\d|80)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-8]\"],\"0$1\"]],\"0\"],\"EC\":[\"593\",\"00\",\"1\\\\d{9,10}|(?:[2-7]|9\\\\d)\\\\d{7}\",[8,9,10,11],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[2-7]\"],\"(0$1)\",0,\"$1-$2-$3\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"EE\":[\"372\",\"00\",\"8\\\\d{9}|[4578]\\\\d{7}|(?:[3-8]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88\",\"[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88\"]],[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[45]|8(?:00|[1-49])\",\"[45]|8(?:00[1-9]|[1-49])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"EG\":[\"20\",\"00\",\"[189]\\\\d{8,9}|[24-6]\\\\d{8}|[135]\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{7,8})\",\"$1 $2\",[\"[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,7})\",\"$1 $2\",[\"1[35]|[4-6]|8[2468]|9[235-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[189]\"],\"0$1\"]],\"0\"],\"EH\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],0,\"0\",0,0,0,0,\"528[89]\"],\"ER\":[\"291\",\"00\",\"[178]\\\\d{6}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[178]\"],\"0$1\"]],\"0\"],\"ES\":[\"34\",\"00\",\"[5-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]00\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-9]\"]]]],\"ET\":[\"251\",\"00\",\"(?:11|[2-579]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-579]\"],\"0$1\"]],\"0\"],\"FI\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"[1-35689]\\\\d{4}|7\\\\d{10,11}|(?:[124-7]\\\\d|3[0-46-9])\\\\d{8}|[1-9]\\\\d{5,8}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d)(\\\\d{4,9})\",\"$1 $2\",[\"[2568][1-8]|3(?:0[1-9]|[1-9])|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[12]00|[368]|70[07-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,8})\",\"$1 $2\",[\"[1245]|7[135]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,10})\",\"$1 $2\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,\"1[03-79]|[2-9]\",0,\"00\"],\"FJ\":[\"679\",\"0(?:0|52)\",\"45\\\\d{5}|(?:0800\\\\d|[235-9])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[235-9]|45\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]]],0,0,0,0,0,0,0,\"00\"],\"FK\":[\"500\",\"00\",\"[2-7]\\\\d{4}\",[5]],\"FM\":[\"691\",\"00\",\"(?:[39]\\\\d\\\\d|820)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[389]\"]]]],\"FO\":[\"298\",\"00\",\"[2-9]\\\\d{5}\",[6],[[\"(\\\\d{6})\",\"$1\",[\"[2-9]\"]]],0,0,\"(10(?:01|[12]0|88))\"],\"FR\":[\"33\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0 $1\"],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[1-79]\"],\"0$1\"]],\"0\"],\"GA\":[\"241\",\"00\",\"(?:[067]\\\\d|11)\\\\d{6}|[2-7]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"11|[67]\"],\"0$1\"]],0,0,\"0(11\\\\d{6}|60\\\\d{6}|61\\\\d{6}|6[256]\\\\d{6}|7[467]\\\\d{6})\",\"$1\"],\"GB\":[\"44\",\"00\",\"[1-357-9]\\\\d{9}|[18]\\\\d{8}|8\\\\d{6}\",[7,9,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"800\",\"8001\",\"80011\",\"800111\",\"8001111\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"845\",\"8454\",\"84546\",\"845464\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"1(?:38|5[23]|69|76|94)\",\"1(?:(?:38|69)7|5(?:24|39)|768|946)\",\"1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"1(?:[2-69][02-9]|[78])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[25]|7(?:0|6[02-9])\",\"[25]|7(?:0|6(?:[03-9]|2[356]))\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1389]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:1(?:1(?:3(?:[0-58]\\\\d\\\\d|73[0235])|4(?:[0-5]\\\\d\\\\d|69[7-9]|70[013579])|(?:(?:5[0-26-9]|[78][0-49])\\\\d|6(?:[0-4]\\\\d|50))\\\\d)|2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\\\d)\\\\d\\\\d|1(?:[0-7]\\\\d\\\\d|8(?:[02]\\\\d|1[0-246-9])))|(?:3(?:0\\\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\\\d\\\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\\\d{3})\\\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\\\d)|76\\\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\\\d|7[4-79])|295[5-7]|35[34]\\\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\\\d{3}\",[9,10]],[\"7(?:457[0-57-9]|700[01]|911[028])\\\\d{5}|7(?:[1-3]\\\\d\\\\d|4(?:[0-46-9]\\\\d|5[0-689])|5(?:0[0-8]|[13-9]\\\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\\\d|8[02-9]|9[0-689])|8(?:[014-9]\\\\d|[23][0-8])|9(?:[024-9]\\\\d|1[02-9]|3[0-689]))\\\\d{6}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[2-49]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]],0,\" x\"],\"GD\":[\"1\",\"011\",\"(?:473|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"473$1\",0,\"473\"],\"GE\":[\"995\",\"00\",\"(?:[3-57]\\\\d\\\\d|800)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"32\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[57]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[348]\"],\"0$1\"]],\"0\"],\"GF\":[\"594\",\"00\",\"(?:[56]94|80\\\\d|976)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"GG\":[\"44\",\"00\",\"(?:1481|[357-9]\\\\d{3})\\\\d{6}|8\\\\d{6}(?:\\\\d{2})?\",[7,9,10],0,\"0\",0,\"0|([25-9]\\\\d{5})$\",\"1481$1\",0,0,[[\"1481[25-9]\\\\d{5}\",[10]],[\"7(?:(?:781|839)\\\\d|911[17])\\\\d{5}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[0-3]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]]],\"GH\":[\"233\",\"00\",\"(?:[235]\\\\d{3}|800)\\\\d{5}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[235]\"],\"0$1\"]],\"0\"],\"GI\":[\"350\",\"00\",\"(?:[25]\\\\d\\\\d|606)\\\\d{5}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2\"]]]],\"GL\":[\"299\",\"00\",\"(?:19|[2-689]\\\\d|70)\\\\d{4}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"19|[2-9]\"]]]],\"GM\":[\"220\",\"00\",\"[2-9]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"GN\":[\"224\",\"00\",\"722\\\\d{6}|(?:3|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"3\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[67]\"]]]],\"GP\":[\"590\",\"00\",\"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"590(?:0[1-68]|[14][0-24-9]|2[0-68]|3[1289]|5[3-579]|6[0-289]|7[08]|8[0-689]|9\\\\d)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"976[01]\\\\d{5}\"]]],\"GQ\":[\"240\",\"00\",\"222\\\\d{6}|(?:3\\\\d|55|[89]0)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235]\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[89]\"]]]],\"GR\":[\"30\",\"00\",\"5005000\\\\d{3}|8\\\\d{9,11}|(?:[269]\\\\d|70)\\\\d{8}\",[10,11,12],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"21|7\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2689]\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{5})\",\"$1 $2 $3\",[\"8\"]]]],\"GT\":[\"502\",\"00\",\"(?:1\\\\d{3}|[2-7])\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],\"GU\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|671|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([3-9]\\\\d{6})$\",\"671$1\",0,\"671\"],\"GW\":[\"245\",\"00\",\"[49]\\\\d{8}|4\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"40\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"]]]],\"GY\":[\"592\",\"001\",\"9008\\\\d{3}|(?:[2-467]\\\\d\\\\d|862)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46-9]\"]]]],\"HK\":[\"852\",\"00(?:30|5[09]|[126-9]?)\",\"8[0-46-9]\\\\d{6,7}|9\\\\d{4,7}|(?:[2-7]|9\\\\d{3})\\\\d{7}\",[5,6,7,8,9,11],[[\"(\\\\d{3})(\\\\d{2,5})\",\"$1 $2\",[\"900\",\"9003\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[1-4]|9(?:0[1-9]|[1-8])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]],0,0,0,0,0,0,0,\"00\"],\"HN\":[\"504\",\"00\",\"8\\\\d{10}|[237-9]\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[237-9]\"]]]],\"HR\":[\"385\",\"00\",\"(?:[24-69]\\\\d|3[0-79])\\\\d{7}|80\\\\d{5,7}|[1-79]\\\\d{7}|6\\\\d{5,6}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"6[01]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-5]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"HT\":[\"509\",\"00\",\"[2-489]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-489]\"]]]],\"HU\":[\"36\",\"00\",\"[235-7]\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"06 $1\"]],\"06\"],\"ID\":[\"62\",\"00[89]\",\"(?:(?:00[1-9]|8\\\\d)\\\\d{4}|[1-36])\\\\d{6}|00\\\\d{10}|[1-9]\\\\d{8,10}|[2-9]\\\\d{7}\",[7,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"15\"]],[\"(\\\\d{2})(\\\\d{5,9})\",\"$1 $2\",[\"2[124]|[36]1\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,7})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,8})\",\"$1 $2\",[\"[2-79]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{3})\",\"$1-$2-$3\",[\"8[1-35-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6,8})\",\"$1 $2\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"804\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"80\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"]],\"0\"],\"IE\":[\"353\",\"00\",\"(?:1\\\\d|[2569])\\\\d{6,8}|4\\\\d{6,9}|7\\\\d{8}|8\\\\d{8,9}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"2[24-9]|47|58|6[237-9]|9[35-9]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[45]0\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2569]|4[1-69]|7[14]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"81\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"4\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"IL\":[\"972\",\"0(?:0|1[2-9])\",\"1\\\\d{6}(?:\\\\d{3,5})?|[57]\\\\d{8}|[1-489]\\\\d{7}\",[7,8,9,10,11,12],[[\"(\\\\d{4})(\\\\d{3})\",\"$1-$2\",[\"125\"]],[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"121\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-489]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"12\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1-$2\",[\"159\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"1[7-9]\"]],[\"(\\\\d{3})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3-$4\",[\"15\"]]],\"0\"],\"IM\":[\"44\",\"00\",\"1624\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"0|([25-8]\\\\d{5})$\",\"1624$1\",0,\"74576|(?:16|7[56])24\"],\"IN\":[\"91\",\"00\",\"(?:000800|[2-9]\\\\d\\\\d)\\\\d{7}|1\\\\d{7,12}\",[8,9,10,11,12,13],[[\"(\\\\d{8})\",\"$1\",[\"5(?:0|2[23]|3[03]|[67]1|88)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)\"],0,1],[\"(\\\\d{4})(\\\\d{4,5})\",\"$1 $2\",[\"180\",\"1800\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"140\"],0,1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"11|2[02]|33|4[04]|79[1-7]|80[2-46]\",\"11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])\",\"11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807\",\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]\",\"1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\\\d|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]))[2-7]\"],\"0$1\",1],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"[6-9]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{2,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:6|8[06])\",\"1(?:6|8[06]0)\"],0,1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"18\"],0,1]],\"0\"],\"IO\":[\"246\",\"00\",\"3\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"3\"]]]],\"IQ\":[\"964\",\"00\",\"(?:1|7\\\\d\\\\d)\\\\d{7}|[2-6]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"IR\":[\"98\",\"00\",\"[1-9]\\\\d{9}|(?:[1-8]\\\\d\\\\d|9)\\\\d{3,4}\",[4,5,6,7,10],[[\"(\\\\d{4,5})\",\"$1\",[\"96\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,5})\",\"$1 $2\",[\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-8]\"],\"0$1\"]],\"0\"],\"IS\":[\"354\",\"00|1(?:0(?:01|[12]0)|100)\",\"(?:38\\\\d|[4-9])\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,0,\"00\"],\"IT\":[\"39\",\"00\",\"0\\\\d{5,10}|1\\\\d{8,10}|3(?:[0-8]\\\\d{7,10}|9\\\\d{7,8})|(?:55|70)\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?\",[6,7,8,9,10,11],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"0[26]\"]],[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"0[13-57-9][0159]|8(?:03|4[17]|9[2-5])\",\"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))\"]],[\"(\\\\d{4})(\\\\d{2,6})\",\"$1 $2\",[\"0(?:[13-579][2-46-8]|8[236-8])\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"894\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[26]|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1(?:44|[679])|[378]\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[13-57-9][0159]|14\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{5})\",\"$1 $2 $3\",[\"0[26]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,[[\"0669[0-79]\\\\d{1,6}|0(?:1(?:[0159]\\\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\\\d\\\\d|3(?:[0159]\\\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\\\d|6[0-8])|7(?:[0159]\\\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\\\d{2,7}\"],[\"3[1-9]\\\\d{8}|3[2-9]\\\\d{7}\",[9,10]],[\"80(?:0\\\\d{3}|3)\\\\d{3}\",[6,9]],[\"(?:0878\\\\d{3}|89(?:2\\\\d|3[04]|4(?:[0-4]|[5-9]\\\\d\\\\d)|5[0-4]))\\\\d\\\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\\\d{6}\",[6,8,9,10]],[\"1(?:78\\\\d|99)\\\\d{6}\",[9,10]],0,0,0,[\"55\\\\d{8}\",[10]],[\"84(?:[08]\\\\d{3}|[17])\\\\d{3}\",[6,9]]]],\"JE\":[\"44\",\"00\",\"1534\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"0|([0-24-8]\\\\d{5})$\",\"1534$1\",0,0,[[\"1534[0-24-8]\\\\d{5}\"],[\"7(?:(?:(?:50|82)9|937)\\\\d|7(?:00[378]|97[7-9]))\\\\d{5}\"],[\"80(?:07(?:35|81)|8901)\\\\d{4}\"],[\"(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\\\d{4}\"],[\"701511\\\\d{4}\"],0,[\"(?:3(?:0(?:07(?:35|81)|8901)|3\\\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\\\d{4})\\\\d{4}\"],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\"],[\"56\\\\d{8}\"]]],\"JM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|658|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"658|876\"],\"JO\":[\"962\",\"00\",\"(?:(?:[2689]|7\\\\d)\\\\d|32|53)\\\\d{6}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2356]|87\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"70\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"JP\":[\"81\",\"010\",\"00[1-9]\\\\d{6,14}|[257-9]\\\\d{9}|(?:00|[1-9]\\\\d\\\\d)\\\\d{6}\",[8,9,10,11,12,13,14,15,16,17],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"(?:12|57|99)0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:80|9[16])\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[36]|4(?:2[09]|7[01])\",\"[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"[14]|[289][2-9]|5[3-9]|7[2-4679]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"800\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[257-9]\"],\"0$1\"]],\"0\"],\"KE\":[\"254\",\"000\",\"(?:[17]\\\\d\\\\d|900)\\\\d{6}|(?:2|80)0\\\\d{6,7}|[4-6]\\\\d{6,8}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"[24-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[17]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\"],\"KG\":[\"996\",\"00\",\"8\\\\d{9}|(?:[235-8]\\\\d|99)\\\\d{7}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3(?:1[346]|[24-79])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235-79]|88\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d)(\\\\d{2,3})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"KH\":[\"855\",\"00[14-9]\",\"1\\\\d{9}|[1-9]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"KI\":[\"686\",\"00\",\"(?:[37]\\\\d|6[0-79])\\\\d{6}|(?:[2-48]\\\\d|50)\\\\d{3}\",[5,8],0,\"0\"],\"KM\":[\"269\",\"00\",\"[3478]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[3478]\"]]]],\"KN\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-7]\\\\d{6})$\",\"869$1\",0,\"869\"],\"KP\":[\"850\",\"00|99\",\"85\\\\d{6}|(?:19\\\\d|[2-7])\\\\d{7}\",[8,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"]],\"0\"],\"KR\":[\"82\",\"00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))\",\"00[1-9]\\\\d{8,11}|(?:[12]|5\\\\d{3})\\\\d{7}|[13-6]\\\\d{9}|(?:[1-6]\\\\d|80)\\\\d{7}|[3-6]\\\\d{4,5}|(?:00|7)0\\\\d{8}\",[5,6,8,9,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1-$2\",[\"(?:3[1-3]|[46][1-4]|5[1-5])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"1\"]],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"[1346]|5[1-5]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1-$2-$3\",[\"5\"],\"0$1\"]],\"0\",0,\"0(8(?:[1-46-8]|5\\\\d\\\\d))?\"],\"KW\":[\"965\",\"00\",\"18\\\\d{5}|(?:[2569]\\\\d|41)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[169]|2(?:[235]|4[1-35-9])|52\"]],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[245]\"]]]],\"KY\":[\"1\",\"011\",\"(?:345|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"345$1\",0,\"345\"],\"KZ\":[\"7\",\"810\",\"(?:33622|8\\\\d{8})\\\\d{5}|[78]\\\\d{9}\",[10,14],0,\"8\",0,0,0,0,\"33|7\",0,\"8~10\"],\"LA\":[\"856\",\"00\",\"[23]\\\\d{9}|3\\\\d{8}|(?:[235-8]\\\\d|41)\\\\d{6}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2[13]|3[14]|[4-8]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"30[013-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\"],\"LB\":[\"961\",\"00\",\"[27-9]\\\\d{7}|[13-9]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27-9]\"]]],\"0\"],\"LC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|758|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-8]\\\\d{6})$\",\"758$1\",0,\"758\"],\"LI\":[\"423\",\"00\",\"[68]\\\\d{8}|(?:[2378]\\\\d|90)\\\\d{5}\",[7,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2379]|8(?:0[09]|7)\",\"[2379]|8(?:0(?:02|9)|7)\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"69\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]],\"0\",0,\"0|(1001)\"],\"LK\":[\"94\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[1-689]\"],\"0$1\"]],\"0\"],\"LR\":[\"231\",\"00\",\"(?:2|33|5\\\\d|77|88)\\\\d{7}|[4-6]\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[4-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3578]\"],\"0$1\"]],\"0\"],\"LS\":[\"266\",\"00\",\"(?:[256]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2568]\"]]]],\"LT\":[\"370\",\"00\",\"(?:[3469]\\\\d|52|[78]0)\\\\d{6}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"52[0-7]\"],\"(8-$1)\",1],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"8 $1\",1],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"37|4(?:[15]|6[1-8])\"],\"(8-$1)\",1],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[3-6]\"],\"(8-$1)\",1]],\"8\",0,\"[08]\"],\"LU\":[\"352\",\"00\",\"35[013-9]\\\\d{4,8}|6\\\\d{8}|35\\\\d{2,4}|(?:[2457-9]\\\\d|3[0-46-9])\\\\d{2,9}\",[4,5,6,7,8,9,10,11],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"20[2-689]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4\",[\"2(?:[0367]|4[3-8])\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"80[01]|90[015]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"20\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4 $5\",[\"2(?:[0367]|4[3-8])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,5})\",\"$1 $2 $3 $4\",[\"[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]\"]]],0,0,\"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\\\d)\"],\"LV\":[\"371\",\"00\",\"(?:[268]\\\\d|90)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[269]|8[01]\"]]]],\"LY\":[\"218\",\"00\",\"[2-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"[2-9]\"],\"0$1\"]],\"0\"],\"MA\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],[[\"(\\\\d{5})(\\\\d{4})\",\"$1-$2\",[\"5(?:29|38)\",\"5(?:29[89]|389)\",\"5(?:29[89]|389)0\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5[45]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1-$2\",[\"5(?:2[2-489]|3[5-9]|9)|892\",\"5(?:2(?:[2-49]|8[235-9])|3[5-9]|9)|892\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"8\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1-$2\",[\"[5-7]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"5(?:29(?:[189][05]|2[29]|3[01])|389[05])\\\\d{4}|5(?:2(?:[0-25-7]\\\\d|3[1-578]|4[02-46-8]|8[0235-7]|90)|3(?:[0-47]\\\\d|5[02-9]|6[02-8]|8[08]|9[3-9])|(?:4[067]|5[03])\\\\d)\\\\d{5}\"],[\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:[017]\\\\d|2[0-2]|6[0-8]|8[0-3]))\\\\d{6}\"],[\"80\\\\d{7}\"],[\"89\\\\d{7}\"],0,0,0,0,[\"592(?:4[0-2]|93)\\\\d{4}\"]]],\"MC\":[\"377\",\"00\",\"(?:[3489]|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[389]\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"6\"],\"0$1\"]],\"0\"],\"MD\":[\"373\",\"00\",\"(?:[235-7]\\\\d|[89]0)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"22|3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[25-7]\"],\"0$1\"]],\"0\"],\"ME\":[\"382\",\"00\",\"(?:20|[3-79]\\\\d)\\\\d{6}|80\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"0$1\"]],\"0\"],\"MF\":[\"590\",\"00\",\"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:0[079]|[14]3|[27][79]|30|5[0-268]|87)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"976[01]\\\\d{5}\"]]],\"MG\":[\"261\",\"00\",\"[23]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\",0,\"0|([24-9]\\\\d{6})$\",\"20$1\"],\"MH\":[\"692\",\"011\",\"329\\\\d{4}|(?:[256]\\\\d|45)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-6]\"]]],\"1\"],\"MK\":[\"389\",\"00\",\"[2-578]\\\\d{7}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2|34[47]|4(?:[37]7|5[47]|64)\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[347]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[58]\"],\"0$1\"]],\"0\"],\"ML\":[\"223\",\"00\",\"[24-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-9]\"]]]],\"MM\":[\"95\",\"00\",\"1\\\\d{5,7}|95\\\\d{6}|(?:[4-7]|9[0-46-9])\\\\d{6,8}|(?:2|8\\\\d)\\\\d{5,8}\",[6,7,8,9,10],[[\"(\\\\d)(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"16|2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[4-7]|8[1-35]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4,6})\",\"$1 $2 $3\",[\"9(?:2[0-4]|[35-9]|4[137-9])\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"92\"],\"0$1\"],[\"(\\\\d)(\\\\d{5})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"MN\":[\"976\",\"001\",\"[12]\\\\d{7,9}|[5-9]\\\\d{7}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[12]1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[12]2[1-3]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])\",\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"[12]\"],\"0$1\"]],\"0\"],\"MO\":[\"853\",\"00\",\"0800\\\\d{3}|(?:28|[68]\\\\d)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[268]\"]]]],\"MP\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:67|90)0\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"670$1\",0,\"670\"],\"MQ\":[\"596\",\"00\",\"(?:69|80)\\\\d{7}|(?:59|97)6\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"MR\":[\"222\",\"00\",\"(?:[2-4]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-48]\"]]]],\"MS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|664|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([34]\\\\d{6})$\",\"664$1\",0,\"664\"],\"MT\":[\"356\",\"00\",\"3550\\\\d{4}|(?:[2579]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2357-9]\"]]]],\"MU\":[\"230\",\"0(?:0|[24-7]0|3[03])\",\"(?:5|8\\\\d\\\\d)\\\\d{7}|[2-468]\\\\d{6}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46]|8[013]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"5\"]],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"8\"]]],0,0,0,0,0,0,0,\"020\"],\"MV\":[\"960\",\"0(?:0|19)\",\"(?:800|9[0-57-9]\\\\d)\\\\d{7}|[34679]\\\\d{6}\",[7,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[3467]|9[13-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],0,0,0,0,0,0,0,\"00\"],\"MW\":[\"265\",\"00\",\"(?:[1289]\\\\d|31|77)\\\\d{7}|1\\\\d{6}\",[7,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[137-9]\"],\"0$1\"]],\"0\"],\"MX\":[\"52\",\"0[09]\",\"1(?:(?:44|99)[1-9]|65[0-689])\\\\d{7}|(?:1(?:[017]\\\\d|[235][1-9]|4[0-35-9]|6[0-46-9]|8[1-79]|9[1-8])|[2-9]\\\\d)\\\\d{8}\",[10,11],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"33|5[56]|81\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-9]\"],0,1],[\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 $3 $4\",[\"1(?:33|5[56]|81)\"],0,1],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 $3 $4\",[\"1\"],0,1]],\"01\",0,\"0(?:[12]|4[45])|1\",0,0,0,0,\"00\"],\"MY\":[\"60\",\"00\",\"1\\\\d{8,9}|(?:3\\\\d|[4-9])\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"[4-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1-$2 $3\",[\"1(?:[02469]|[378][1-9]|53)|8\",\"1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"3\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3-$4\",[\"1(?:[367]|80)\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"15\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"1\"],\"0$1\"]],\"0\"],\"MZ\":[\"258\",\"00\",\"(?:2|8\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2|8[2-79]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"NA\":[\"264\",\"00\",\"[68]\\\\d{7,8}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"87\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"NC\":[\"687\",\"00\",\"(?:050|[2-57-9]\\\\d\\\\d)\\\\d{3}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1.$2.$3\",[\"[02-57-9]\"]]]],\"NE\":[\"227\",\"00\",\"[027-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"08\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[089]|2[013]|7[04]\"]]]],\"NF\":[\"672\",\"00\",\"[13]\\\\d{5}\",[6],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"1[0-3]\"]],[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"[13]\"]]],0,0,\"([0-258]\\\\d{4})$\",\"3$1\"],\"NG\":[\"234\",\"009\",\"(?:[124-7]|9\\\\d{3})\\\\d{6}|[1-9]\\\\d{7}|[78]\\\\d{9,13}\",[7,8,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"78\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]|9(?:0[3-9]|[1-9])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-7]|8[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})(\\\\d{5,6})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"]],\"0\"],\"NI\":[\"505\",\"00\",\"(?:1800|[25-8]\\\\d{3})\\\\d{4}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[125-8]\"]]]],\"NL\":[\"31\",\"00\",\"(?:[124-7]\\\\d\\\\d|3(?:[02-9]\\\\d|1[0-8]))\\\\d{6}|8\\\\d{6,9}|9\\\\d{6,10}|1\\\\d{4,5}\",[5,6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{4,7})\",\"$1 $2\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"66\"],\"0$1\"],[\"(\\\\d)(\\\\d{8})\",\"$1 $2\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-578]|91\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"NO\":[\"47\",\"00\",\"(?:0|[2-9]\\\\d{3})\\\\d{4}\",[5,8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[489]|59\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[235-7]\"]]],0,0,0,0,0,\"[02-689]|7[0-8]\"],\"NP\":[\"977\",\"00\",\"(?:1\\\\d|9)\\\\d{9}|[1-9]\\\\d{7}\",[8,10,11],[[\"(\\\\d)(\\\\d{7})\",\"$1-$2\",[\"1[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1-$2\",[\"1[01]|[2-8]|9(?:[1-59]|[67][2-6])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"9\"]]],\"0\"],\"NR\":[\"674\",\"00\",\"(?:444|(?:55|8\\\\d)\\\\d|666)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-68]\"]]]],\"NU\":[\"683\",\"00\",\"(?:[47]|888\\\\d)\\\\d{3}\",[4,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"8\"]]]],\"NZ\":[\"64\",\"0(?:0|161)\",\"[29]\\\\d{7,9}|50\\\\d{5}(?:\\\\d{2,3})?|6[0-35-9]\\\\d{6}|7\\\\d{7,8}|8\\\\d{4,9}|(?:11\\\\d|[34])\\\\d{7}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,8})\",\"$1 $2\",[\"8[1-579]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"50[036-8]|[89]0\",\"50(?:[0367]|88)|[89]0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"24|[346]|7[2-57-9]|9[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:10|74)|[59]|80\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1|2[028]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,5})\",\"$1 $2 $3\",[\"2(?:[169]|7[0-35-9])|7|86\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"00\"],\"OM\":[\"968\",\"00\",\"(?:1505|[279]\\\\d{3}|500)\\\\d{4}|800\\\\d{5,6}\",[7,8,9],[[\"(\\\\d{3})(\\\\d{4,6})\",\"$1 $2\",[\"[58]\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[179]\"]]]],\"PA\":[\"507\",\"00\",\"(?:00800|8\\\\d{3})\\\\d{6}|[68]\\\\d{7}|[1-57-9]\\\\d{6}\",[7,8,10,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[1-57-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[68]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]]],\"PE\":[\"51\",\"00|19(?:1[124]|77|90)00\",\"(?:[14-8]|9\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[4-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"]]],\"0\",0,0,0,0,0,0,\"00\",\" Anexo \"],\"PF\":[\"689\",\"00\",\"4\\\\d{5}(?:\\\\d{2})?|8\\\\d{7,8}\",[6,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4|8[7-9]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]]],\"PG\":[\"675\",\"00|140[1-3]\",\"(?:180|[78]\\\\d{3})\\\\d{4}|(?:[2-589]\\\\d|64)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"18|[2-69]|85\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[78]\"]]],0,0,0,0,0,0,0,\"00\"],\"PH\":[\"63\",\"00\",\"(?:[2-7]|9\\\\d)\\\\d{8}|2\\\\d{5}|(?:1800|8)\\\\d{7,9}\",[6,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"2\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2\",\"3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"346|4(?:27|9[35])|883\",\"3469|4(?:279|9(?:30|56))|8834\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|8[2-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{4})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"1\"]]],\"0\"],\"PK\":[\"92\",\"00\",\"122\\\\d{6}|[24-8]\\\\d{10,11}|9(?:[013-9]\\\\d{8,10}|2(?:[01]\\\\d\\\\d|2(?:[06-8]\\\\d|1[01]))\\\\d{7})|(?:[2-8]\\\\d{3}|92(?:[0-7]\\\\d|8[1-9]))\\\\d{6}|[24-9]\\\\d{8}|[89]\\\\d{7}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,7})\",\"$1 $2 $3\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{6,7})\",\"$1 $2\",[\"2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])\",\"9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{7,8})\",\"$1 $2\",[\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"58\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[24-9]\"],\"(0$1)\"]],\"0\"],\"PL\":[\"48\",\"00\",\"(?:6|8\\\\d\\\\d)\\\\d{7}|[1-9]\\\\d{6}(?:\\\\d{2})?|[26]\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{5})\",\"$1\",[\"19\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"11|20|64\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1\",\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"64\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[2-8]|[2-7]|8[1-79]|9[145]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"8\"]]]],\"PM\":[\"508\",\"00\",\"(?:[45]|80\\\\d\\\\d)\\\\d{5}\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[45]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"PR\":[\"1\",\"011\",\"(?:[589]\\\\d\\\\d|787)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"787|939\"],\"PS\":[\"970\",\"00\",\"[2489]2\\\\d{6}|(?:1\\\\d|5)\\\\d{8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2489]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"PT\":[\"351\",\"00\",\"1693\\\\d{5}|(?:[26-9]\\\\d|30)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2[12]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"16|[236-9]\"]]]],\"PW\":[\"680\",\"01[12]\",\"(?:[24-8]\\\\d\\\\d|345|900)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"PY\":[\"595\",\"00\",\"59\\\\d{4,6}|9\\\\d{5,10}|(?:[2-46-8]\\\\d|5[0-8])\\\\d{4,7}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"[2-9]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{4,5})\",\"$1 $2\",[\"2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"87\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"9(?:[5-79]|8[1-6])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"]]],\"0\"],\"QA\":[\"974\",\"00\",\"[2-7]\\\\d{7}|800\\\\d{4}(?:\\\\d{2})?|2\\\\d{6}\",[7,8,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"2[126]|8\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]\"]]]],\"RE\":[\"262\",\"00\",\"976\\\\d{6}|(?:26|[68]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2689]\"],\"0$1\"]],\"0\",0,0,0,0,\"26[23]|69|[89]\"],\"RO\":[\"40\",\"00\",\"(?:[2378]\\\\d|90)\\\\d{7}|[23]\\\\d{5}\",[6,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"2[3-6]\",\"2[3-6]\\\\d9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"219|31\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[23]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[237-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\" int \"],\"RS\":[\"381\",\"00\",\"38[02-9]\\\\d{6,9}|6\\\\d{7,9}|90\\\\d{4,8}|38\\\\d{5,6}|(?:7\\\\d\\\\d|800)\\\\d{3,9}|(?:[12]\\\\d|3[0-79])\\\\d{5,10}\",[6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3,9})\",\"$1 $2\",[\"(?:2[389]|39)0|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5,10})\",\"$1 $2\",[\"[1-36]\"],\"0$1\"]],\"0\"],\"RU\":[\"7\",\"810\",\"8\\\\d{13}|[347-9]\\\\d{9}\",[10,14],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-8]|2[1-9])\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2\"],\"8 ($1)\",1],[\"(\\\\d{5})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-68]|2[1-9])\",\"7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))\",\"7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[349]|8(?:[02-7]|1[1-8])\"],\"8 ($1)\",1],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"8\"],\"8 ($1)\"]],\"8\",0,0,0,0,\"3[04-689]|[489]\",0,\"8~10\"],\"RW\":[\"250\",\"00\",\"(?:06|[27]\\\\d\\\\d|[89]00)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"]]],\"0\"],\"SA\":[\"966\",\"00\",\"92\\\\d{7}|(?:[15]|8\\\\d)\\\\d{8}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\"],\"SB\":[\"677\",\"0[01]\",\"(?:[1-6]|[7-9]\\\\d\\\\d)\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7|8[4-9]|9(?:[1-8]|9[0-8])\"]]]],\"SC\":[\"248\",\"010|0[0-2]\",\"800\\\\d{4}|(?:[249]\\\\d|64)\\\\d{5}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[246]|9[57]\"]]],0,0,0,0,0,0,0,\"00\"],\"SD\":[\"249\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],\"SE\":[\"46\",\"00\",\"(?:[26]\\\\d\\\\d|9)\\\\d{9}|[1-9]\\\\d{8}|[1-689]\\\\d{7}|[1-4689]\\\\d{6}|2\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"20\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"9(?:00|39|44|9)\"],\"0$1\",0,\"$1 $2\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3\",[\"[12][136]|3[356]|4[0246]|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{3})\",\"$1-$2 $3\",[\"9(?:00|39|44)\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"10|7\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1-$2 $3 $4\",[\"9\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4 $5\",[\"[26]\"],\"0$1\",0,\"$1 $2 $3 $4 $5\"]],\"0\"],\"SG\":[\"65\",\"0[0-3]\\\\d\",\"(?:(?:1\\\\d|8)\\\\d\\\\d|7000)\\\\d{7}|[3689]\\\\d{7}\",[8,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[369]|8(?:0[1-5]|[1-9])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],\"SH\":[\"290\",\"00\",\"(?:[256]\\\\d|8)\\\\d{3}\",[4,5],0,0,0,0,0,0,\"[256]\"],\"SI\":[\"386\",\"00|10(?:22|66|88|99)\",\"[1-7]\\\\d{7}|8\\\\d{4,7}|90\\\\d{4,6}\",[5,6,7,8],[[\"(\\\\d{2})(\\\\d{3,6})\",\"$1 $2\",[\"8[09]|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"59|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37][01]|4[0139]|51|6\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-57]\"],\"(0$1)\"]],\"0\",0,0,0,0,0,0,\"00\"],\"SJ\":[\"47\",\"00\",\"0\\\\d{4}|(?:[489]\\\\d|[57]9)\\\\d{6}\",[5,8],0,0,0,0,0,0,\"79\"],\"SK\":[\"421\",\"00\",\"[2-689]\\\\d{8}|[2-59]\\\\d{6}|[2-5]\\\\d{5}\",[6,7,9],[[\"(\\\\d)(\\\\d{2})(\\\\d{3,4})\",\"$1 $2 $3\",[\"21\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-5][1-8]1\",\"[3-5][1-8]1[67]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[689]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"[3-5]\"],\"0$1\"]],\"0\"],\"SL\":[\"232\",\"00\",\"(?:[237-9]\\\\d|66)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[236-9]\"],\"(0$1)\"]],\"0\"],\"SM\":[\"378\",\"00\",\"(?:0549|[5-7]\\\\d)\\\\d{6}\",[8,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"0\"]]],0,0,\"([89]\\\\d{5})$\",\"0549$1\"],\"SN\":[\"221\",\"00\",\"(?:[378]\\\\d|93)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[379]\"]]]],\"SO\":[\"252\",\"00\",\"[346-9]\\\\d{8}|[12679]\\\\d{7}|[1-5]\\\\d{6}|[1348]\\\\d{5}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"8[125]\"]],[\"(\\\\d{6})\",\"$1\",[\"[134]\"]],[\"(\\\\d)(\\\\d{6})\",\"$1 $2\",[\"[15]|2[0-79]|3[0-46-8]|4[0-7]\"]],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"24|[67]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[3478]|64|90\"]],[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"1|28|6(?:0[5-7]|[1-35-9])|9[2-9]\"]]],\"0\"],\"SR\":[\"597\",\"00\",\"(?:[2-5]|68|[78]\\\\d)\\\\d{5}\",[6,7],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"56\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1-$2\",[\"[2-5]\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[6-8]\"]]]],\"SS\":[\"211\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],\"ST\":[\"239\",\"00\",\"(?:22|9\\\\d)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[29]\"]]]],\"SV\":[\"503\",\"00\",\"[267]\\\\d{7}|[89]00\\\\d{4}(?:\\\\d{4})?\",[7,8,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[89]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[267]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]]],\"SX\":[\"1\",\"011\",\"7215\\\\d{6}|(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|(5\\\\d{6})$\",\"721$1\",0,\"721\"],\"SY\":[\"963\",\"00\",\"[1-39]\\\\d{8}|[1-5]\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-5]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\",1]],\"0\"],\"SZ\":[\"268\",\"00\",\"0800\\\\d{4}|(?:[237]\\\\d|900)\\\\d{6}\",[8,9],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[0237]\"]],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"9\"]]]],\"TA\":[\"290\",\"00\",\"8\\\\d{3}\",[4],0,0,0,0,0,0,\"8\"],\"TC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|649|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-479]\\\\d{6})$\",\"649$1\",0,\"649\"],\"TD\":[\"235\",\"00|16\",\"(?:22|[69]\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2679]\"]]],0,0,0,0,0,0,0,\"00\"],\"TG\":[\"228\",\"00\",\"[279]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[279]\"]]]],\"TH\":[\"66\",\"00[1-9]\",\"(?:001800|[2-57]|[689]\\\\d)\\\\d{7}|1\\\\d{7,9}\",[8,9,10,13],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[13-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"TJ\":[\"992\",\"810\",\"(?:00|[1-57-9]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{6})(\\\\d)(\\\\d{2})\",\"$1 $2 $3\",[\"331\",\"3317\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[34]7|91[78]\"]],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"3[1-5]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[0-57-9]\"]]],0,0,0,0,0,0,0,\"8~10\"],\"TK\":[\"690\",\"00\",\"[2-47]\\\\d{3,6}\",[4,5,6,7]],\"TL\":[\"670\",\"00\",\"7\\\\d{7}|(?:[2-47]\\\\d|[89]0)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-489]|70\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"7\"]]]],\"TM\":[\"993\",\"810\",\"[1-6]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"12\"],\"(8 $1)\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-5]\"],\"(8 $1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"6\"],\"8 $1\"]],\"8\",0,0,0,0,0,0,\"8~10\"],\"TN\":[\"216\",\"00\",\"[2-57-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-57-9]\"]]]],\"TO\":[\"676\",\"00\",\"(?:0800|(?:[5-8]\\\\d\\\\d|999)\\\\d)\\\\d{3}|[2-8]\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1-$2\",[\"[2-4]|50|6[09]|7[0-24-69]|8[05]\"]],[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]]]],\"TR\":[\"90\",\"00\",\"4\\\\d{6}|8\\\\d{11,12}|(?:[2-58]\\\\d\\\\d|900)\\\\d{7}\",[7,10,12,13],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"512|8[01589]|90\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5(?:[0-59]|61)\",\"5(?:[0-59]|616)\",\"5(?:[0-59]|6161)\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24][1-8]|3[1-9]\"],\"(0$1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{6,7})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1]],\"0\"],\"TT\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-46-8]\\\\d{6})$\",\"868$1\",0,\"868\"],\"TV\":[\"688\",\"00\",\"(?:2|7\\\\d\\\\d|90)\\\\d{4}\",[5,6,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]]],\"TW\":[\"886\",\"0(?:0[25-79]|19)\",\"[2-689]\\\\d{8}|7\\\\d{9,10}|[2-8]\\\\d{7}|2\\\\d{6}\",[7,8,9,10,11],[[\"(\\\\d{2})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"202\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[258]0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]\",\"[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\"#\"],\"TZ\":[\"255\",\"00[056]\",\"(?:[25-8]\\\\d|41|90)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[24]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"]],\"0\"],\"UA\":[\"380\",\"00\",\"[89]\\\\d{9}|[3-9]\\\\d{8}\",[9,10],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]\",\"6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])\",\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|89|9[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"0~0\"],\"UG\":[\"256\",\"00[057]\",\"800\\\\d{6}|(?:[29]0|[347]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"202\",\"2024\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[27-9]|4(?:6[45]|[7-9])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[34]\"],\"0$1\"]],\"0\"],\"US\":[\"1\",\"011\",\"[2-9]\\\\d{9}|3\\\\d{6}\",[10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"310\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"($1) $2-$3\",[\"[2-9]\"],0,1,\"$1-$2-$3\"]],\"1\",0,0,0,0,0,[[\"505(?:[2-57-9]\\\\d\\\\d|6(?:[0-35-9]\\\\d|44))\\\\d{4}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[01679]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[068]|3[0-289]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-389]|8[04-69]))[2-9]\\\\d{6}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\\\d{6}\"]]],\"UY\":[\"598\",\"0(?:0|1[3-9]\\\\d)\",\"4\\\\d{9}|[1249]\\\\d{7}|(?:[49]\\\\d|80)\\\\d{5}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"405|8|90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[124]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"00\",\" int. \"],\"UZ\":[\"998\",\"810\",\"(?:33|55|[679]\\\\d|88)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[35-9]\"],\"8 $1\"]],\"8\",0,0,0,0,0,0,\"8~10\"],\"VA\":[\"39\",\"00\",\"0\\\\d{5,10}|3[0-8]\\\\d{7,10}|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?|(?:1\\\\d|39)\\\\d{7,8}\",[6,7,8,9,10,11],0,0,0,0,0,0,\"06698\"],\"VC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|784|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-7]\\\\d{6})$\",\"784$1\",0,\"784\"],\"VE\":[\"58\",\"00\",\"[68]00\\\\d{7}|(?:[24]\\\\d|[59]0)\\\\d{8}\",[10],[[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"[24-689]\"],\"0$1\"]],\"0\"],\"VG\":[\"1\",\"011\",\"(?:284|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-578]\\\\d{6})$\",\"284$1\",0,\"284\"],\"VI\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:34|90)0\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"340$1\",0,\"340\"],\"VN\":[\"84\",\"00\",\"[12]\\\\d{9}|[135-9]\\\\d{8}|[16]\\\\d{7}|[16-8]\\\\d{6}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"1\"],0,1],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[69]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[3578]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[48]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\",1]],\"0\"],\"VU\":[\"678\",\"00\",\"[57-9]\\\\d{6}|(?:[238]\\\\d|48)\\\\d{3}\",[5,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"]]]],\"WF\":[\"681\",\"00\",\"(?:40|72)\\\\d{4}|8\\\\d{5}(?:\\\\d{3})?\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[478]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]]],\"WS\":[\"685\",\"0\",\"(?:[2-6]|8\\\\d{5})\\\\d{4}|[78]\\\\d{6}|[68]\\\\d{5}\",[5,6,7,10],[[\"(\\\\d{5})\",\"$1\",[\"[2-5]|6[1-9]\"]],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[68]\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]]],\"XK\":[\"383\",\"00\",\"[23]\\\\d{7,8}|(?:4\\\\d\\\\d|[89]00)\\\\d{5}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[23]\"],\"0$1\"]],\"0\"],\"YE\":[\"967\",\"00\",\"(?:1|7\\\\d)\\\\d{7}|[1-7]\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-6]|7[24-68]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"YT\":[\"262\",\"00\",\"80\\\\d{7}|(?:26|63)9\\\\d{6}\",[9],0,\"0\",0,0,0,0,\"269|63\"],\"ZA\":[\"27\",\"00\",\"[1-79]\\\\d{8}|8\\\\d{4,9}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"860\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"ZM\":[\"260\",\"00\",\"800\\\\d{6}|(?:21|63|[79]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[28]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[79]\"],\"0$1\"]],\"0\"],\"ZW\":[\"263\",\"00\",\"2(?:[0-57-9]\\\\d{6,8}|6[0-24-9]\\\\d{6,7})|[38]\\\\d{9}|[35-8]\\\\d{8}|[3-6]\\\\d{7}|[1-689]\\\\d{6}|[1-3569]\\\\d{5}|[1356]\\\\d{4}\",[5,6,7,8,9,10],[[\"(\\\\d{3})(\\\\d{3,5})\",\"$1 $2\",[\"2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"80\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2\",\"2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)\",\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"29[013-9]|39|54\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,5})\",\"$1 $2\",[\"(?:25|54)8\",\"258|5483\"],\"0$1\"]],\"0\"]},\"nonGeographic\":{\"800\":[\"800\",0,\"(?:00|[1-9]\\\\d)\\\\d{6}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"\\\\d\"]]],0,0,0,0,0,0,[0,0,[\"(?:00|[1-9]\\\\d)\\\\d{6}\"]]],\"808\":[\"808\",0,\"[1-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,[\"[1-9]\\\\d{7}\"]]],\"870\":[\"870\",0,\"7\\\\d{11}|[35-7]\\\\d{8}\",[9,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[35-7]\"]]],0,0,0,0,0,0,[0,[\"(?:[356]|774[45])\\\\d{8}|7[6-8]\\\\d{7}\"]]],\"878\":[\"878\",0,\"10\\\\d{10}\",[12],[[\"(\\\\d{2})(\\\\d{5})(\\\\d{5})\",\"$1 $2 $3\",[\"1\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"10\\\\d{10}\"]]],\"881\":[\"881\",0,\"[0-36-9]\\\\d{8}\",[9],[[\"(\\\\d)(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"[0-36-9]\"]]],0,0,0,0,0,0,[0,[\"[0-36-9]\\\\d{8}\"]]],\"882\":[\"882\",0,\"[13]\\\\d{6}(?:\\\\d{2,5})?|285\\\\d{9}|(?:[19]\\\\d|49)\\\\d{6}\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"16|342\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"4\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"3[23]\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"34[57]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"34\"]],[\"(\\\\d{2})(\\\\d{4,5})(\\\\d{5})\",\"$1 $2 $3\",[\"[1-3]\"]]],0,0,0,0,0,0,[0,[\"342\\\\d{4}|(?:337|49)\\\\d{6}|3(?:2|47|7\\\\d{3})\\\\d{7}\",[7,8,9,10,12]],0,0,0,0,0,0,[\"1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\\\d{4}|6\\\\d{5,10})|(?:(?:285\\\\d\\\\d|3(?:45|[69]\\\\d{3}))\\\\d|9[89])\\\\d{6}\"]]],\"883\":[\"883\",0,\"(?:210|370\\\\d\\\\d)\\\\d{7}|51\\\\d{7}(?:\\\\d{3})?\",[9,10,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"510\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"51[13]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[35]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"(?:210|(?:370[1-9]|51[013]0)\\\\d)\\\\d{7}|5100\\\\d{5}\"]]],\"888\":[\"888\",0,\"\\\\d{11}\",[11],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\"]],0,0,0,0,0,0,[0,0,0,0,0,0,[\"\\\\d{11}\"]]],\"979\":[\"979\",0,\"[1359]\\\\d{8}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1359]\"]]],0,0,0,0,0,0,[0,0,0,[\"[1359]\\\\d{8}\"]]]}}","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\r\n// importing system which is even uncapable of importing \"*.json\" files.\r\nimport metadata from '../../metadata.min.json.js'\r\n\r\nexport default function withMetadataArgument(func, _arguments) {\r\n\tvar args = Array.prototype.slice.call(_arguments)\r\n\targs.push(metadata)\r\n\treturn func.apply(this, args)\r\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n// https://stackoverflow.com/a/46971044/970769\n// \"Breaking changes in Typescript 2.1\"\n// \"Extending built-ins like Error, Array, and Map may no longer work.\"\n// \"As a recommendation, you can manually adjust the prototype immediately after any super(...) calls.\"\n// https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\nvar ParseError = /*#__PURE__*/function (_Error) {\n _inherits(ParseError, _Error);\n\n var _super = _createSuper(ParseError);\n\n function ParseError(code) {\n var _this;\n\n _classCallCheck(this, ParseError);\n\n _this = _super.call(this, code); // Set the prototype explicitly.\n // Any subclass of FooError will have to manually set the prototype as well.\n\n Object.setPrototypeOf(_assertThisInitialized(_this), ParseError.prototype);\n _this.name = _this.constructor.name;\n return _this;\n }\n\n return _createClass(ParseError);\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nexport { ParseError as default };\n//# sourceMappingURL=ParseError.js.map","// The minimum length of the national significant number.\nexport var MIN_LENGTH_FOR_NSN = 2; // The ITU says the maximum length should be 15,\n// but one can find longer numbers in Germany.\n\nexport var MAX_LENGTH_FOR_NSN = 17; // The maximum length of the country calling code.\n\nexport var MAX_LENGTH_COUNTRY_CODE = 3; // Digits accepted in phone numbers\n// (ascii, fullwidth, arabic-indic, and eastern arabic digits).\n\nexport var VALID_DIGITS = \"0-9\\uFF10-\\uFF19\\u0660-\\u0669\\u06F0-\\u06F9\"; // `DASHES` will be right after the opening square bracket of the \"character class\"\n\nvar DASHES = \"-\\u2010-\\u2015\\u2212\\u30FC\\uFF0D\";\nvar SLASHES = \"\\uFF0F/\";\nvar DOTS = \"\\uFF0E.\";\nexport var WHITESPACE = \" \\xA0\\xAD\\u200B\\u2060\\u3000\";\nvar BRACKETS = \"()\\uFF08\\uFF09\\uFF3B\\uFF3D\\\\[\\\\]\"; // export const OPENING_BRACKETS = '(\\uFF08\\uFF3B\\\\\\['\n\nvar TILDES = \"~\\u2053\\u223C\\uFF5E\"; // Regular expression of acceptable punctuation found in phone numbers. This\n// excludes punctuation found as a leading character only. This consists of dash\n// characters, white space characters, full stops, slashes, square brackets,\n// parentheses and tildes. Full-width variants are also present.\n\nexport var VALID_PUNCTUATION = \"\".concat(DASHES).concat(SLASHES).concat(DOTS).concat(WHITESPACE).concat(BRACKETS).concat(TILDES);\nexport var PLUS_CHARS = \"+\\uFF0B\"; // const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+')\n//# sourceMappingURL=constants.js.map","// Copy-pasted from:\n// https://github.com/substack/semver-compare/blob/master/index.js\n//\n// Inlining this function because some users reported issues with\n// importing from `semver-compare` in a browser with ES6 \"native\" modules.\n//\n// Fixes `semver-compare` not being able to compare versions with alpha/beta/etc \"tags\".\n// https://github.com/catamphetamine/libphonenumber-js/issues/381\nexport default function (a, b) {\n a = a.split('-');\n b = b.split('-');\n var pa = a[0].split('.');\n var pb = b[0].split('.');\n\n for (var i = 0; i < 3; i++) {\n var na = Number(pa[i]);\n var nb = Number(pb[i]);\n if (na > nb) return 1;\n if (nb > na) return -1;\n if (!isNaN(na) && isNaN(nb)) return 1;\n if (isNaN(na) && !isNaN(nb)) return -1;\n }\n\n if (a[1] && b[1]) {\n return a[1] > b[1] ? 1 : a[1] < b[1] ? -1 : 0;\n }\n\n return !a[1] && b[1] ? 1 : a[1] && !b[1] ? -1 : 0;\n}\n//# sourceMappingURL=semver-compare.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport compare from './tools/semver-compare.js'; // Added \"possibleLengths\" and renamed\n// \"country_phone_code_to_countries\" to \"country_calling_codes\".\n\nvar V2 = '1.0.18'; // Added \"idd_prefix\" and \"default_idd_prefix\".\n\nvar V3 = '1.2.0'; // Moved `001` country code to \"nonGeographic\" section of metadata.\n\nvar V4 = '1.7.35';\nvar DEFAULT_EXT_PREFIX = ' ext. ';\nvar CALLING_CODE_REG_EXP = /^\\d+$/;\n/**\r\n * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md\r\n */\n\nvar Metadata = /*#__PURE__*/function () {\n function Metadata(metadata) {\n _classCallCheck(this, Metadata);\n\n validateMetadata(metadata);\n this.metadata = metadata;\n setVersion.call(this, metadata);\n }\n\n _createClass(Metadata, [{\n key: \"getCountries\",\n value: function getCountries() {\n return Object.keys(this.metadata.countries).filter(function (_) {\n return _ !== '001';\n });\n }\n }, {\n key: \"getCountryMetadata\",\n value: function getCountryMetadata(countryCode) {\n return this.metadata.countries[countryCode];\n }\n }, {\n key: \"nonGeographic\",\n value: function nonGeographic() {\n if (this.v1 || this.v2 || this.v3) return; // `nonGeographical` was a typo.\n // It's present in metadata generated from `1.7.35` to `1.7.37`.\n // The test case could be found by searching for \"nonGeographical\".\n\n return this.metadata.nonGeographic || this.metadata.nonGeographical;\n }\n }, {\n key: \"hasCountry\",\n value: function hasCountry(country) {\n return this.getCountryMetadata(country) !== undefined;\n }\n }, {\n key: \"hasCallingCode\",\n value: function hasCallingCode(callingCode) {\n if (this.getCountryCodesForCallingCode(callingCode)) {\n return true;\n }\n\n if (this.nonGeographic()) {\n if (this.nonGeographic()[callingCode]) {\n return true;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return true;\n }\n }\n }\n }, {\n key: \"isNonGeographicCallingCode\",\n value: function isNonGeographicCallingCode(callingCode) {\n if (this.nonGeographic()) {\n return this.nonGeographic()[callingCode] ? true : false;\n } else {\n return this.getCountryCodesForCallingCode(callingCode) ? false : true;\n }\n } // Deprecated.\n\n }, {\n key: \"country\",\n value: function country(countryCode) {\n return this.selectNumberingPlan(countryCode);\n }\n }, {\n key: \"selectNumberingPlan\",\n value: function selectNumberingPlan(countryCode, callingCode) {\n // Supports just passing `callingCode` as the first argument.\n if (countryCode && CALLING_CODE_REG_EXP.test(countryCode)) {\n callingCode = countryCode;\n countryCode = null;\n }\n\n if (countryCode && countryCode !== '001') {\n if (!this.hasCountry(countryCode)) {\n throw new Error(\"Unknown country: \".concat(countryCode));\n }\n\n this.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this);\n } else if (callingCode) {\n if (!this.hasCallingCode(callingCode)) {\n throw new Error(\"Unknown calling code: \".concat(callingCode));\n }\n\n this.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this);\n } else {\n this.numberingPlan = undefined;\n }\n\n return this;\n }\n }, {\n key: \"getCountryCodesForCallingCode\",\n value: function getCountryCodesForCallingCode(callingCode) {\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes) {\n // Metadata before V4 included \"non-geographic entity\" calling codes\n // inside `country_calling_codes` (for example, `\"881\":[\"001\"]`).\n // Now the semantics of `country_calling_codes` has changed:\n // it's specifically for \"countries\" now.\n // Older versions of custom metadata will simply skip parsing\n // \"non-geographic entity\" phone numbers with new versions\n // of this library: it's not considered a bug,\n // because such numbers are extremely rare,\n // and developers extremely rarely use custom metadata.\n if (countryCodes.length === 1 && countryCodes[0].length === 3) {\n return;\n }\n\n return countryCodes;\n }\n }\n }, {\n key: \"getCountryCodeForCallingCode\",\n value: function getCountryCodeForCallingCode(callingCode) {\n var countryCodes = this.getCountryCodesForCallingCode(callingCode);\n\n if (countryCodes) {\n return countryCodes[0];\n }\n }\n }, {\n key: \"getNumberingPlanMetadata\",\n value: function getNumberingPlanMetadata(callingCode) {\n var countryCode = this.getCountryCodeForCallingCode(callingCode);\n\n if (countryCode) {\n return this.getCountryMetadata(countryCode);\n }\n\n if (this.nonGeographic()) {\n var metadata = this.nonGeographic()[callingCode];\n\n if (metadata) {\n return metadata;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n // In that metadata, there was no concept of \"non-geographic\" metadata\n // so metadata for `001` country code was stored along with other countries.\n // The test case can be found by searching for:\n // \"should work around `nonGeographic` metadata not existing\".\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return this.metadata.countries['001'];\n }\n }\n } // Deprecated.\n\n }, {\n key: \"countryCallingCode\",\n value: function countryCallingCode() {\n return this.numberingPlan.callingCode();\n } // Deprecated.\n\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n return this.numberingPlan.IDDPrefix();\n } // Deprecated.\n\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n return this.numberingPlan.defaultIDDPrefix();\n } // Deprecated.\n\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n return this.numberingPlan.nationalNumberPattern();\n } // Deprecated.\n\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n return this.numberingPlan.possibleLengths();\n } // Deprecated.\n\n }, {\n key: \"formats\",\n value: function formats() {\n return this.numberingPlan.formats();\n } // Deprecated.\n\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n return this.numberingPlan.nationalPrefixForParsing();\n } // Deprecated.\n\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.numberingPlan.nationalPrefixTransformRule();\n } // Deprecated.\n\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.numberingPlan.leadingDigits();\n } // Deprecated.\n\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n return this.numberingPlan.hasTypes();\n } // Deprecated.\n\n }, {\n key: \"type\",\n value: function type(_type) {\n return this.numberingPlan.type(_type);\n } // Deprecated.\n\n }, {\n key: \"ext\",\n value: function ext() {\n return this.numberingPlan.ext();\n }\n }, {\n key: \"countryCallingCodes\",\n value: function countryCallingCodes() {\n if (this.v1) return this.metadata.country_phone_code_to_countries;\n return this.metadata.country_calling_codes;\n } // Deprecated.\n\n }, {\n key: \"chooseCountryByCountryCallingCode\",\n value: function chooseCountryByCountryCallingCode(callingCode) {\n return this.selectNumberingPlan(callingCode);\n }\n }, {\n key: \"hasSelectedNumberingPlan\",\n value: function hasSelectedNumberingPlan() {\n return this.numberingPlan !== undefined;\n }\n }]);\n\n return Metadata;\n}();\n\nexport { Metadata as default };\n\nvar NumberingPlan = /*#__PURE__*/function () {\n function NumberingPlan(metadata, globalMetadataObject) {\n _classCallCheck(this, NumberingPlan);\n\n this.globalMetadataObject = globalMetadataObject;\n this.metadata = metadata;\n setVersion.call(this, globalMetadataObject.metadata);\n }\n\n _createClass(NumberingPlan, [{\n key: \"callingCode\",\n value: function callingCode() {\n return this.metadata[0];\n } // Formatting information for regions which share\n // a country calling code is contained by only one region\n // for performance reasons. For example, for NANPA region\n // (\"North American Numbering Plan Administration\",\n // which includes USA, Canada, Cayman Islands, Bahamas, etc)\n // it will be contained in the metadata for `US`.\n\n }, {\n key: \"getDefaultCountryMetadataForRegion\",\n value: function getDefaultCountryMetadataForRegion() {\n return this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode());\n } // Is always present.\n\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[1];\n } // Is only present when a country supports multiple IDD prefixes.\n\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[12];\n }\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n if (this.v1 || this.v2) return this.metadata[1];\n return this.metadata[2];\n } // \"possible length\" data is always present in Google's metadata.\n\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.v1) return;\n return this.metadata[this.v2 ? 2 : 3];\n }\n }, {\n key: \"_getFormats\",\n value: function _getFormats(metadata) {\n return metadata[this.v1 ? 2 : this.v2 ? 3 : 4];\n } // For countries of the same region (e.g. NANPA)\n // formats are all stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"formats\",\n value: function formats() {\n var _this = this;\n\n var formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || [];\n return formats.map(function (_) {\n return new Format(_, _this);\n });\n }\n }, {\n key: \"nationalPrefix\",\n value: function nationalPrefix() {\n return this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5];\n }\n }, {\n key: \"_getNationalPrefixFormattingRule\",\n value: function _getNationalPrefixFormattingRule(metadata) {\n return metadata[this.v1 ? 4 : this.v2 ? 5 : 6];\n } // For countries of the same region (e.g. NANPA)\n // national prefix formatting rule is stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"_nationalPrefixForParsing\",\n value: function _nationalPrefixForParsing() {\n return this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7];\n }\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n // If `national_prefix_for_parsing` is not set explicitly,\n // then infer it from `national_prefix` (if any)\n return this._nationalPrefixForParsing() || this.nationalPrefix();\n }\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8];\n }\n }, {\n key: \"_getNationalPrefixIsOptionalWhenFormatting\",\n value: function _getNationalPrefixIsOptionalWhenFormatting() {\n return !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9];\n } // For countries of the same region (e.g. NANPA)\n // \"national prefix is optional when formatting\" flag is\n // stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) || this._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10];\n }\n }, {\n key: \"types\",\n value: function types() {\n return this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11];\n }\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n // Versions 1.2.0 - 1.2.4: can be `[]`.\n\n /* istanbul ignore next */\n if (this.types() && this.types().length === 0) {\n return false;\n } // Versions <= 1.2.4: can be `undefined`.\n // Version >= 1.2.5: can be `0`.\n\n\n return !!this.types();\n }\n }, {\n key: \"type\",\n value: function type(_type2) {\n if (this.hasTypes() && getType(this.types(), _type2)) {\n return new Type(getType(this.types(), _type2), this);\n }\n }\n }, {\n key: \"ext\",\n value: function ext() {\n if (this.v1 || this.v2) return DEFAULT_EXT_PREFIX;\n return this.metadata[13] || DEFAULT_EXT_PREFIX;\n }\n }]);\n\n return NumberingPlan;\n}();\n\nvar Format = /*#__PURE__*/function () {\n function Format(format, metadata) {\n _classCallCheck(this, Format);\n\n this._format = format;\n this.metadata = metadata;\n }\n\n _createClass(Format, [{\n key: \"pattern\",\n value: function pattern() {\n return this._format[0];\n }\n }, {\n key: \"format\",\n value: function format() {\n return this._format[1];\n }\n }, {\n key: \"leadingDigitsPatterns\",\n value: function leadingDigitsPatterns() {\n return this._format[2] || [];\n }\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._format[3] || this.metadata.nationalPrefixFormattingRule();\n }\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n }\n }, {\n key: \"nationalPrefixIsMandatoryWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsMandatoryWhenFormattingInNationalFormat() {\n // National prefix is omitted if there's no national prefix formatting rule\n // set for this country, or when the national prefix formatting rule\n // contains no national prefix itself, or when this rule is set but\n // national prefix is optional for this phone number format\n // (and it is not enforced explicitly)\n return this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n } // Checks whether national prefix formatting rule contains national prefix.\n\n }, {\n key: \"usesNationalPrefix\",\n value: function usesNationalPrefix() {\n return this.nationalPrefixFormattingRule() && // Check that national prefix formatting rule is not a \"dummy\" one.\n !FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule()) // In compressed metadata, `this.nationalPrefixFormattingRule()` is `0`\n // when `national_prefix_formatting_rule` is not present.\n // So, `true` or `false` are returned explicitly here, so that\n // `0` number isn't returned.\n ? true : false;\n }\n }, {\n key: \"internationalFormat\",\n value: function internationalFormat() {\n return this._format[5] || this.format();\n }\n }]);\n\n return Format;\n}();\n/**\r\n * A pattern that is used to determine if the national prefix formatting rule\r\n * has the first group only, i.e., does not start with the national prefix.\r\n * Note that the pattern explicitly allows for unbalanced parentheses.\r\n */\n\n\nvar FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\\(?\\$1\\)?$/;\n\nvar Type = /*#__PURE__*/function () {\n function Type(type, metadata) {\n _classCallCheck(this, Type);\n\n this.type = type;\n this.metadata = metadata;\n }\n\n _createClass(Type, [{\n key: \"pattern\",\n value: function pattern() {\n if (this.metadata.v1) return this.type;\n return this.type[0];\n }\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.metadata.v1) return;\n return this.type[1] || this.metadata.possibleLengths();\n }\n }]);\n\n return Type;\n}();\n\nfunction getType(types, type) {\n switch (type) {\n case 'FIXED_LINE':\n return types[0];\n\n case 'MOBILE':\n return types[1];\n\n case 'TOLL_FREE':\n return types[2];\n\n case 'PREMIUM_RATE':\n return types[3];\n\n case 'PERSONAL_NUMBER':\n return types[4];\n\n case 'VOICEMAIL':\n return types[5];\n\n case 'UAN':\n return types[6];\n\n case 'PAGER':\n return types[7];\n\n case 'VOIP':\n return types[8];\n\n case 'SHARED_COST':\n return types[9];\n }\n}\n\nexport function validateMetadata(metadata) {\n if (!metadata) {\n throw new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.');\n } // `country_phone_code_to_countries` was renamed to\n // `country_calling_codes` in `1.0.18`.\n\n\n if (!is_object(metadata) || !is_object(metadata.countries)) {\n throw new Error(\"[libphonenumber-js] `metadata` argument was passed but it's not a valid metadata. Must be an object having `.countries` child object property. Got \".concat(is_object(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + type_of(metadata) + ': ' + metadata, \".\"));\n }\n} // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\nvar is_object = function is_object(_) {\n return _typeof(_) === 'object';\n}; // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\n\nvar type_of = function type_of(_) {\n return _typeof(_);\n};\n/**\r\n * Returns extension prefix for a country.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string?}\r\n * @example\r\n * // Returns \" ext. \"\r\n * getExtPrefix(\"US\")\r\n */\n\n\nexport function getExtPrefix(country, metadata) {\n metadata = new Metadata(metadata);\n\n if (metadata.hasCountry(country)) {\n return metadata.country(country).ext();\n }\n\n return DEFAULT_EXT_PREFIX;\n}\n/**\r\n * Returns \"country calling code\" for a country.\r\n * Throws an error if the country doesn't exist or isn't supported by this library.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string}\r\n * @example\r\n * // Returns \"44\"\r\n * getCountryCallingCode(\"GB\")\r\n */\n\nexport function getCountryCallingCode(country, metadata) {\n metadata = new Metadata(metadata);\n\n if (metadata.hasCountry(country)) {\n return metadata.country(country).countryCallingCode();\n }\n\n throw new Error(\"Unknown country: \".concat(country));\n}\nexport function isSupportedCountry(country, metadata) {\n // metadata = new Metadata(metadata)\n // return metadata.hasCountry(country)\n return metadata.countries[country] !== undefined;\n}\n\nfunction setVersion(metadata) {\n var version = metadata.version;\n\n if (typeof version === 'number') {\n this.v1 = version === 1;\n this.v2 = version === 2;\n this.v3 = version === 3;\n this.v4 = version === 4;\n } else {\n if (!version) {\n this.v1 = true;\n } else if (compare(version, V3) === -1) {\n this.v2 = true;\n } else if (compare(version, V4) === -1) {\n this.v3 = true;\n } else {\n this.v4 = true;\n }\n }\n} // const ISO_COUNTRY_CODE = /^[A-Z]{2}$/\n// function isCountryCode(countryCode) {\n// \treturn ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode)\n// }\n//# sourceMappingURL=metadata.js.map","import { VALID_DIGITS } from '../../constants.js'; // The RFC 3966 format for extensions.\n\nvar RFC3966_EXTN_PREFIX = ';ext=';\n/**\r\n * Helper method for constructing regular expressions for parsing. Creates\r\n * an expression that captures up to max_length digits.\r\n * @return {string} RegEx pattern to capture extension digits.\r\n */\n\nvar getExtensionDigitsPattern = function getExtensionDigitsPattern(maxLength) {\n return \"([\".concat(VALID_DIGITS, \"]{1,\").concat(maxLength, \"})\");\n};\n/**\r\n * Helper initialiser method to create the regular-expression pattern to match\r\n * extensions.\r\n * Copy-pasted from Google's `libphonenumber`:\r\n * https://github.com/google/libphonenumber/blob/55b2646ec9393f4d3d6661b9c82ef9e258e8b829/javascript/i18n/phonenumbers/phonenumberutil.js#L759-L766\r\n * @return {string} RegEx pattern to capture extensions.\r\n */\n\n\nexport default function createExtensionPattern(purpose) {\n // We cap the maximum length of an extension based on the ambiguity of the way\n // the extension is prefixed. As per ITU, the officially allowed length for\n // extensions is actually 40, but we don't support this since we haven't seen real\n // examples and this introduces many false interpretations as the extension labels\n // are not standardized.\n\n /** @type {string} */\n var extLimitAfterExplicitLabel = '20';\n /** @type {string} */\n\n var extLimitAfterLikelyLabel = '15';\n /** @type {string} */\n\n var extLimitAfterAmbiguousChar = '9';\n /** @type {string} */\n\n var extLimitWhenNotSure = '6';\n /** @type {string} */\n\n var possibleSeparatorsBetweenNumberAndExtLabel = \"[ \\xA0\\\\t,]*\"; // Optional full stop (.) or colon, followed by zero or more spaces/tabs/commas.\n\n /** @type {string} */\n\n var possibleCharsAfterExtLabel = \"[:\\\\.\\uFF0E]?[ \\xA0\\\\t,-]*\";\n /** @type {string} */\n\n var optionalExtnSuffix = \"#?\"; // Here the extension is called out in more explicit way, i.e mentioning it obvious\n // patterns like \"ext.\".\n\n /** @type {string} */\n\n var explicitExtLabels = \"(?:e?xt(?:ensi(?:o\\u0301?|\\xF3))?n?|\\uFF45?\\uFF58\\uFF54\\uFF4E?|\\u0434\\u043E\\u0431|anexo)\"; // One-character symbols that can be used to indicate an extension, and less\n // commonly used or more ambiguous extension labels.\n\n /** @type {string} */\n\n var ambiguousExtLabels = \"(?:[x\\uFF58#\\uFF03~\\uFF5E]|int|\\uFF49\\uFF4E\\uFF54)\"; // When extension is not separated clearly.\n\n /** @type {string} */\n\n var ambiguousSeparator = \"[- ]+\"; // This is the same as possibleSeparatorsBetweenNumberAndExtLabel, but not matching\n // comma as extension label may have it.\n\n /** @type {string} */\n\n var possibleSeparatorsNumberExtLabelNoComma = \"[ \\xA0\\\\t]*\"; // \",,\" is commonly used for auto dialling the extension when connected. First\n // comma is matched through possibleSeparatorsBetweenNumberAndExtLabel, so we do\n // not repeat it here. Semi-colon works in Iphone and Android also to pop up a\n // button with the extension number following.\n\n /** @type {string} */\n\n var autoDiallingAndExtLabelsFound = \"(?:,{2}|;)\";\n /** @type {string} */\n\n var rfcExtn = RFC3966_EXTN_PREFIX + getExtensionDigitsPattern(extLimitAfterExplicitLabel);\n /** @type {string} */\n\n var explicitExtn = possibleSeparatorsBetweenNumberAndExtLabel + explicitExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterExplicitLabel) + optionalExtnSuffix;\n /** @type {string} */\n\n var ambiguousExtn = possibleSeparatorsBetweenNumberAndExtLabel + ambiguousExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix;\n /** @type {string} */\n\n var americanStyleExtnWithSuffix = ambiguousSeparator + getExtensionDigitsPattern(extLimitWhenNotSure) + \"#\";\n /** @type {string} */\n\n var autoDiallingExtn = possibleSeparatorsNumberExtLabelNoComma + autoDiallingAndExtLabelsFound + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterLikelyLabel) + optionalExtnSuffix;\n /** @type {string} */\n\n var onlyCommasExtn = possibleSeparatorsNumberExtLabelNoComma + \"(?:,)+\" + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix; // The first regular expression covers RFC 3966 format, where the extension is added\n // using \";ext=\". The second more generic where extension is mentioned with explicit\n // labels like \"ext:\". In both the above cases we allow more numbers in extension than\n // any other extension labels. The third one captures when single character extension\n // labels or less commonly used labels are used. In such cases we capture fewer\n // extension digits in order to reduce the chance of falsely interpreting two\n // numbers beside each other as a number + extension. The fourth one covers the\n // special case of American numbers where the extension is written with a hash\n // at the end, such as \"- 503#\". The fifth one is exclusively for extension\n // autodialling formats which are used when dialling and in this case we accept longer\n // extensions. The last one is more liberal on the number of commas that acts as\n // extension labels, so we have a strict cap on the number of digits in such extensions.\n\n return rfcExtn + \"|\" + explicitExtn + \"|\" + ambiguousExtn + \"|\" + americanStyleExtnWithSuffix + \"|\" + autoDiallingExtn + \"|\" + onlyCommasExtn;\n}\n//# sourceMappingURL=createExtensionPattern.js.map","import { MIN_LENGTH_FOR_NSN, VALID_DIGITS, VALID_PUNCTUATION, PLUS_CHARS } from '../constants.js';\nimport createExtensionPattern from './extension/createExtensionPattern.js'; // Regular expression of viable phone numbers. This is location independent.\n// Checks we have at least three leading digits, and only valid punctuation,\n// alpha characters and digits in the phone number. Does not include extension\n// data. The symbol 'x' is allowed here as valid punctuation since it is often\n// used as a placeholder for carrier codes, for example in Brazilian phone\n// numbers. We also allow multiple '+' characters at the start.\n//\n// Corresponds to the following:\n// [digits]{minLengthNsn}|\n// plus_sign*\n// (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])*\n//\n// The first reg-ex is to allow short numbers (two digits long) to be parsed if\n// they are entered as \"15\" etc, but only if there is no punctuation in them.\n// The second expression restricts the number of digits to three or more, but\n// then allows them to be in international form, and to have alpha-characters\n// and punctuation. We split up the two reg-exes here and combine them when\n// creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it\n// with ^ and append $ to each branch.\n//\n// \"Note VALID_PUNCTUATION starts with a -,\n// so must be the first in the range\" (c) Google devs.\n// (wtf did they mean by saying that; probably nothing)\n//\n\nvar MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + VALID_DIGITS + ']{' + MIN_LENGTH_FOR_NSN + '}'; //\n// And this is the second reg-exp:\n// (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp)\n//\n\nexport var VALID_PHONE_NUMBER = '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){3,}' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*'; // This regular expression isn't present in Google's `libphonenumber`\n// and is only used to determine whether the phone number being input\n// is too short for it to even consider it a \"valid\" number.\n// This is just a way to differentiate between a really invalid phone\n// number like \"abcde\" and a valid phone number that a user has just\n// started inputting, like \"+1\" or \"1\": both these cases would be\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\n// library can provide a more detailed error message — whether it's\n// really \"not a number\", or is it just a start of a valid phone number.\n\nvar VALID_PHONE_NUMBER_START_REG_EXP = new RegExp('^' + '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){1,2}' + '$', 'i');\nexport var VALID_PHONE_NUMBER_WITH_EXTENSION = VALID_PHONE_NUMBER + // Phone number extensions\n'(?:' + createExtensionPattern() + ')?'; // The combined regular expression for valid phone numbers:\n//\n\nvar VALID_PHONE_NUMBER_PATTERN = new RegExp( // Either a short two-digit-only phone number\n'^' + MIN_LENGTH_PHONE_NUMBER_PATTERN + '$' + '|' + // Or a longer fully parsed phone number (min 3 characters)\n'^' + VALID_PHONE_NUMBER_WITH_EXTENSION + '$', 'i'); // Checks to see if the string of characters could possibly be a phone number at\n// all. At the moment, checks to see that the string begins with at least 2\n// digits, ignoring any punctuation commonly found in phone numbers. This method\n// does not require the number to be normalized in advance - but does assume\n// that leading non-number symbols have been removed, such as by the method\n// `extract_possible_number`.\n//\n\nexport default function isViablePhoneNumber(number) {\n return number.length >= MIN_LENGTH_FOR_NSN && VALID_PHONE_NUMBER_PATTERN.test(number);\n} // This is just a way to differentiate between a really invalid phone\n// number like \"abcde\" and a valid phone number that a user has just\n// started inputting, like \"+1\" or \"1\": both these cases would be\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\n// library can provide a more detailed error message — whether it's\n// really \"not a number\", or is it just a start of a valid phone number.\n\nexport function isViablePhoneNumberStart(number) {\n return VALID_PHONE_NUMBER_START_REG_EXP.test(number);\n}\n//# sourceMappingURL=isViablePhoneNumber.js.map","import createExtensionPattern from './createExtensionPattern.js'; // Regexp of all known extension prefixes used by different regions followed by\n// 1 or more valid digits, for use when parsing.\n\nvar EXTN_PATTERN = new RegExp('(?:' + createExtensionPattern() + ')$', 'i'); // Strips any extension (as in, the part of the number dialled after the call is\n// connected, usually indicated with extn, ext, x or similar) from the end of\n// the number, and returns it.\n\nexport default function extractExtension(number) {\n var start = number.search(EXTN_PATTERN);\n\n if (start < 0) {\n return {};\n } // If we find a potential extension, and the number preceding this is a viable\n // number, we assume it is an extension.\n\n\n var numberWithoutExtension = number.slice(0, start);\n var matches = number.match(EXTN_PATTERN);\n var i = 1;\n\n while (i < matches.length) {\n if (matches[i]) {\n return {\n number: numberWithoutExtension,\n ext: matches[i]\n };\n }\n\n i++;\n }\n}\n//# sourceMappingURL=extractExtension.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n// These mappings map a character (key) to a specific digit that should\n// replace it for normalization purposes. Non-European digits that\n// may be used in phone numbers are mapped to a European equivalent.\n//\n// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\n//\nexport var DIGITS = {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n \"\\uFF10\": '0',\n // Fullwidth digit 0\n \"\\uFF11\": '1',\n // Fullwidth digit 1\n \"\\uFF12\": '2',\n // Fullwidth digit 2\n \"\\uFF13\": '3',\n // Fullwidth digit 3\n \"\\uFF14\": '4',\n // Fullwidth digit 4\n \"\\uFF15\": '5',\n // Fullwidth digit 5\n \"\\uFF16\": '6',\n // Fullwidth digit 6\n \"\\uFF17\": '7',\n // Fullwidth digit 7\n \"\\uFF18\": '8',\n // Fullwidth digit 8\n \"\\uFF19\": '9',\n // Fullwidth digit 9\n \"\\u0660\": '0',\n // Arabic-indic digit 0\n \"\\u0661\": '1',\n // Arabic-indic digit 1\n \"\\u0662\": '2',\n // Arabic-indic digit 2\n \"\\u0663\": '3',\n // Arabic-indic digit 3\n \"\\u0664\": '4',\n // Arabic-indic digit 4\n \"\\u0665\": '5',\n // Arabic-indic digit 5\n \"\\u0666\": '6',\n // Arabic-indic digit 6\n \"\\u0667\": '7',\n // Arabic-indic digit 7\n \"\\u0668\": '8',\n // Arabic-indic digit 8\n \"\\u0669\": '9',\n // Arabic-indic digit 9\n \"\\u06F0\": '0',\n // Eastern-Arabic digit 0\n \"\\u06F1\": '1',\n // Eastern-Arabic digit 1\n \"\\u06F2\": '2',\n // Eastern-Arabic digit 2\n \"\\u06F3\": '3',\n // Eastern-Arabic digit 3\n \"\\u06F4\": '4',\n // Eastern-Arabic digit 4\n \"\\u06F5\": '5',\n // Eastern-Arabic digit 5\n \"\\u06F6\": '6',\n // Eastern-Arabic digit 6\n \"\\u06F7\": '7',\n // Eastern-Arabic digit 7\n \"\\u06F8\": '8',\n // Eastern-Arabic digit 8\n \"\\u06F9\": '9' // Eastern-Arabic digit 9\n\n};\nexport function parseDigit(character) {\n return DIGITS[character];\n}\n/**\r\n * Parses phone number digits from a string.\r\n * Drops all punctuation leaving only digits.\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * parseDigits('8 (800) 555')\r\n * // Outputs '8800555'.\r\n * ```\r\n */\n\nexport default function parseDigits(string) {\n var result = ''; // Using `.split('')` here instead of normal `for ... of`\n // because the importing application doesn't neccessarily include an ES6 polyfill.\n // The `.split('')` approach discards \"exotic\" UTF-8 characters\n // (the ones consisting of four bytes) but digits\n // (including non-European ones) don't fall into that range\n // so such \"exotic\" characters would be discarded anyway.\n\n for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) {\n var character = _step.value;\n var digit = parseDigit(character);\n\n if (digit) {\n result += digit;\n }\n }\n\n return result;\n}\n//# sourceMappingURL=parseDigits.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { parseDigit } from './helpers/parseDigits.js';\n/**\r\n * Parses phone number characters from a string.\r\n * Drops all punctuation leaving only digits and the leading `+` sign (if any).\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * // Outputs '8800555'.\r\n * parseIncompletePhoneNumber('8 (800) 555')\r\n * // Outputs '+7800555'.\r\n * parseIncompletePhoneNumber('+7 800 555')\r\n * ```\r\n */\n\nexport default function parseIncompletePhoneNumber(string) {\n var result = ''; // Using `.split('')` here instead of normal `for ... of`\n // because the importing application doesn't neccessarily include an ES6 polyfill.\n // The `.split('')` approach discards \"exotic\" UTF-8 characters\n // (the ones consisting of four bytes) but digits\n // (including non-European ones) don't fall into that range\n // so such \"exotic\" characters would be discarded anyway.\n\n for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) {\n var character = _step.value;\n result += parsePhoneNumberCharacter(character, result) || '';\n }\n\n return result;\n}\n/**\r\n * Parses next character while parsing phone number digits (including a `+`)\r\n * from text: discards everything except `+` and digits, and `+` is only allowed\r\n * at the start of a phone number.\r\n * For example, is used in `react-phone-number-input` where it uses\r\n * [`input-format`](https://gitlab.com/catamphetamine/input-format).\r\n * @param {string} character - Yet another character from raw input string.\r\n * @param {string?} prevParsedCharacters - Previous parsed characters.\r\n * @param {object} meta - Optional custom use-case-specific metadata.\r\n * @return {string?} The parsed character.\r\n */\n\nexport function parsePhoneNumberCharacter(character, prevParsedCharacters) {\n // Only allow a leading `+`.\n if (character === '+') {\n // If this `+` is not the first parsed character\n // then discard it.\n if (prevParsedCharacters) {\n return;\n }\n\n return '+';\n } // Allow digits.\n\n\n return parseDigit(character);\n}\n//# sourceMappingURL=parseIncompletePhoneNumber.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/**\r\n * Merges two arrays.\r\n * @param {*} a\r\n * @param {*} b\r\n * @return {*}\r\n */\nexport default function mergeArrays(a, b) {\n var merged = a.slice();\n\n for (var _iterator = _createForOfIteratorHelperLoose(b), _step; !(_step = _iterator()).done;) {\n var element = _step.value;\n\n if (a.indexOf(element) < 0) {\n merged.push(element);\n }\n }\n\n return merged.sort(function (a, b) {\n return a - b;\n }); // ES6 version, requires Set polyfill.\n // let merged = new Set(a)\n // for (const element of b) {\n // \tmerged.add(i)\n // }\n // return Array.from(merged).sort((a, b) => a - b)\n}\n//# sourceMappingURL=mergeArrays.js.map","import mergeArrays from './mergeArrays.js';\nexport default function checkNumberLength(nationalNumber, metadata) {\n return checkNumberLengthForType(nationalNumber, undefined, metadata);\n} // Checks whether a number is possible for the country based on its length.\n// Should only be called for the \"new\" metadata which has \"possible lengths\".\n\nexport function checkNumberLengthForType(nationalNumber, type, metadata) {\n var type_info = metadata.type(type); // There should always be \"\" set for every type element.\n // This is declared in the XML schema.\n // For size efficiency, where a sub-description (e.g. fixed-line)\n // has the same \"\" as the \"general description\", this is missing,\n // so we fall back to the \"general description\". Where no numbers of the type\n // exist at all, there is one possible length (-1) which is guaranteed\n // not to match the length of any real phone number.\n\n var possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths(); // let local_lengths = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal()\n // Metadata before version `1.0.18` didn't contain `possible_lengths`.\n\n if (!possible_lengths) {\n return 'IS_POSSIBLE';\n }\n\n if (type === 'FIXED_LINE_OR_MOBILE') {\n // No such country in metadata.\n\n /* istanbul ignore next */\n if (!metadata.type('FIXED_LINE')) {\n // The rare case has been encountered where no fixedLine data is available\n // (true for some non-geographic entities), so we just check mobile.\n return checkNumberLengthForType(nationalNumber, 'MOBILE', metadata);\n }\n\n var mobile_type = metadata.type('MOBILE');\n\n if (mobile_type) {\n // Merge the mobile data in if there was any. \"Concat\" creates a new\n // array, it doesn't edit possible_lengths in place, so we don't need a copy.\n // Note that when adding the possible lengths from mobile, we have\n // to again check they aren't empty since if they are this indicates\n // they are the same as the general desc and should be obtained from there.\n possible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths()); // The current list is sorted; we need to merge in the new list and\n // re-sort (duplicates are okay). Sorting isn't so expensive because\n // the lists are very small.\n // if (local_lengths) {\n // \tlocal_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal())\n // } else {\n // \tlocal_lengths = mobile_type.possibleLengthsLocal()\n // }\n }\n } // If the type doesn't exist then return 'INVALID_LENGTH'.\n else if (type && !type_info) {\n return 'INVALID_LENGTH';\n }\n\n var actual_length = nationalNumber.length; // In `libphonenumber-js` all \"local-only\" formats are dropped for simplicity.\n // // This is safe because there is never an overlap beween the possible lengths\n // // and the local-only lengths; this is checked at build time.\n // if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0)\n // {\n // \treturn 'IS_POSSIBLE_LOCAL_ONLY'\n // }\n\n var minimum_length = possible_lengths[0];\n\n if (minimum_length === actual_length) {\n return 'IS_POSSIBLE';\n }\n\n if (minimum_length > actual_length) {\n return 'TOO_SHORT';\n }\n\n if (possible_lengths[possible_lengths.length - 1] < actual_length) {\n return 'TOO_LONG';\n } // We skip the first element since we've already checked it.\n\n\n return possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH';\n}\n//# sourceMappingURL=checkNumberLength.js.map","import Metadata from './metadata.js';\nimport checkNumberLength from './helpers/checkNumberLength.js';\nexport default function isPossiblePhoneNumber(input, options, metadata) {\n /* istanbul ignore if */\n if (options === undefined) {\n options = {};\n }\n\n metadata = new Metadata(metadata);\n\n if (options.v2) {\n if (!input.countryCallingCode) {\n throw new Error('Invalid phone number object passed');\n }\n\n metadata.selectNumberingPlan(input.countryCallingCode);\n } else {\n if (!input.phone) {\n return false;\n }\n\n if (input.country) {\n if (!metadata.hasCountry(input.country)) {\n throw new Error(\"Unknown country: \".concat(input.country));\n }\n\n metadata.country(input.country);\n } else {\n if (!input.countryCallingCode) {\n throw new Error('Invalid phone number object passed');\n }\n\n metadata.selectNumberingPlan(input.countryCallingCode);\n }\n } // Old metadata (< 1.0.18) had no \"possible length\" data.\n\n\n if (metadata.possibleLengths()) {\n return isPossibleNumber(input.phone || input.nationalNumber, metadata);\n } else {\n // There was a bug between `1.7.35` and `1.7.37` where \"possible_lengths\"\n // were missing for \"non-geographical\" numbering plans.\n // Just assume the number is possible in such cases:\n // it's unlikely that anyone generated their custom metadata\n // in that short period of time (one day).\n // This code can be removed in some future major version update.\n if (input.countryCallingCode && metadata.isNonGeographicCallingCode(input.countryCallingCode)) {\n // \"Non-geographic entities\" did't have `possibleLengths`\n // due to a bug in metadata generation process.\n return true;\n } else {\n throw new Error('Missing \"possibleLengths\" in metadata. Perhaps the metadata has been generated before v1.0.18.');\n }\n }\n}\nexport function isPossibleNumber(nationalNumber, metadata) {\n //, isInternational) {\n switch (checkNumberLength(nationalNumber, metadata)) {\n case 'IS_POSSIBLE':\n return true;\n // This library ignores \"local-only\" phone numbers (for simplicity).\n // See the readme for more info on what are \"local-only\" phone numbers.\n // case 'IS_POSSIBLE_LOCAL_ONLY':\n // \treturn !isInternational\n\n default:\n return false;\n }\n}\n//# sourceMappingURL=isPossibleNumber_.js.map","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport isViablePhoneNumber from './isViablePhoneNumber.js'; // https://www.ietf.org/rfc/rfc3966.txt\n\n/**\r\n * @param {string} text - Phone URI (RFC 3966).\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\n\nexport function parseRFC3966(text) {\n var number;\n var ext; // Replace \"tel:\" with \"tel=\" for parsing convenience.\n\n text = text.replace(/^tel:/, 'tel=');\n\n for (var _iterator = _createForOfIteratorHelperLoose(text.split(';')), _step; !(_step = _iterator()).done;) {\n var part = _step.value;\n\n var _part$split = part.split('='),\n _part$split2 = _slicedToArray(_part$split, 2),\n name = _part$split2[0],\n value = _part$split2[1];\n\n switch (name) {\n case 'tel':\n number = value;\n break;\n\n case 'ext':\n ext = value;\n break;\n\n case 'phone-context':\n // Only \"country contexts\" are supported.\n // \"Domain contexts\" are ignored.\n if (value[0] === '+') {\n number = value + number;\n }\n\n break;\n }\n } // If the phone number is not viable, then abort.\n\n\n if (!isViablePhoneNumber(number)) {\n return {};\n }\n\n var result = {\n number: number\n };\n\n if (ext) {\n result.ext = ext;\n }\n\n return result;\n}\n/**\r\n * @param {object} - `{ ?number, ?extension }`.\r\n * @return {string} Phone URI (RFC 3966).\r\n */\n\nexport function formatRFC3966(_ref) {\n var number = _ref.number,\n ext = _ref.ext;\n\n if (!number) {\n return '';\n }\n\n if (number[0] !== '+') {\n throw new Error(\"\\\"formatRFC3966()\\\" expects \\\"number\\\" to be in E.164 format.\");\n }\n\n return \"tel:\".concat(number).concat(ext ? ';ext=' + ext : '');\n}\n//# sourceMappingURL=RFC3966.js.map","/**\r\n * Checks whether the entire input sequence can be matched\r\n * against the regular expression.\r\n * @return {boolean}\r\n */\nexport default function matchesEntirely(text, regular_expression) {\n // If assigning the `''` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n text = text || '';\n return new RegExp('^(?:' + regular_expression + ')$').test(text);\n}\n//# sourceMappingURL=matchesEntirely.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport Metadata from '../metadata.js';\nimport matchesEntirely from './matchesEntirely.js';\nvar NON_FIXED_LINE_PHONE_TYPES = ['MOBILE', 'PREMIUM_RATE', 'TOLL_FREE', 'SHARED_COST', 'VOIP', 'PERSONAL_NUMBER', 'PAGER', 'UAN', 'VOICEMAIL']; // Finds out national phone number type (fixed line, mobile, etc)\n\nexport default function getNumberType(input, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {}; // When `parse()` returned `{}`\n // meaning that the phone number is not a valid one.\n\n if (!input.country) {\n return;\n }\n\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(input.country, input.countryCallingCode);\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // The following is copy-pasted from the original function:\n // https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835\n // Is this national number even valid for this country\n\n if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) {\n return;\n } // Is it fixed line number\n\n\n if (isNumberTypeEqualTo(nationalNumber, 'FIXED_LINE', metadata)) {\n // Because duplicate regular expressions are removed\n // to reduce metadata size, if \"mobile\" pattern is \"\"\n // then it means it was removed due to being a duplicate of the fixed-line pattern.\n //\n if (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') {\n return 'FIXED_LINE_OR_MOBILE';\n } // `MOBILE` type pattern isn't included if it matched `FIXED_LINE` one.\n // For example, for \"US\" country.\n // Old metadata (< `1.0.18`) had a specific \"types\" data structure\n // that happened to be `undefined` for `MOBILE` in that case.\n // Newer metadata (>= `1.0.18`) has another data structure that is\n // not `undefined` for `MOBILE` in that case (it's just an empty array).\n // So this `if` is just for backwards compatibility with old metadata.\n\n\n if (!metadata.type('MOBILE')) {\n return 'FIXED_LINE_OR_MOBILE';\n } // Check if the number happens to qualify as both fixed line and mobile.\n // (no such country in the minimal metadata set)\n\n /* istanbul ignore if */\n\n\n if (isNumberTypeEqualTo(nationalNumber, 'MOBILE', metadata)) {\n return 'FIXED_LINE_OR_MOBILE';\n }\n\n return 'FIXED_LINE';\n }\n\n for (var _iterator = _createForOfIteratorHelperLoose(NON_FIXED_LINE_PHONE_TYPES), _step; !(_step = _iterator()).done;) {\n var type = _step.value;\n\n if (isNumberTypeEqualTo(nationalNumber, type, metadata)) {\n return type;\n }\n }\n}\nexport function isNumberTypeEqualTo(nationalNumber, type, metadata) {\n type = metadata.type(type);\n\n if (!type || !type.pattern()) {\n return false;\n } // Check if any possible number lengths are present;\n // if so, we use them to avoid checking\n // the validation pattern if they don't match.\n // If they are absent, this means they match\n // the general description, which we have\n // already checked before a specific number type.\n\n\n if (type.possibleLengths() && type.possibleLengths().indexOf(nationalNumber.length) < 0) {\n return false;\n }\n\n return matchesEntirely(nationalNumber, type.pattern());\n}\n//# sourceMappingURL=getNumberType.js.map","import Metadata from './metadata.js';\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport getNumberType from './helpers/getNumberType.js';\n/**\r\n * Checks if a given phone number is valid.\r\n *\r\n * If the `number` is a string, it will be parsed to an object,\r\n * but only if it contains only valid phone number characters (including punctuation).\r\n * If the `number` is an object, it is used as is.\r\n *\r\n * The optional `defaultCountry` argument is the default country.\r\n * I.e. it does not restrict to just that country,\r\n * e.g. in those cases where several countries share\r\n * the same phone numbering rules (NANPA, Britain, etc).\r\n * For example, even though the number `07624 369230`\r\n * belongs to the Isle of Man (\"IM\" country code)\r\n * calling `isValidNumber('07624369230', 'GB', metadata)`\r\n * still returns `true` because the country is not restricted to `GB`,\r\n * it's just that `GB` is the default one for the phone numbering rules.\r\n * For restricting the country see `isValidNumberForRegion()`\r\n * though restricting a country might not be a good idea.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n *\r\n * Examples:\r\n *\r\n * ```js\r\n * isValidNumber('+78005553535', metadata)\r\n * isValidNumber('8005553535', 'RU', metadata)\r\n * isValidNumber('88005553535', 'RU', metadata)\r\n * isValidNumber({ phone: '8005553535', country: 'RU' }, metadata)\r\n * ```\r\n */\n\nexport default function isValidNumber(input, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {};\n metadata = new Metadata(metadata); // This is just to support `isValidNumber({})`\n // for cases when `parseNumber()` returns `{}`.\n\n if (!input.country) {\n return false;\n }\n\n metadata.selectNumberingPlan(input.country, input.countryCallingCode); // By default, countries only have type regexps when it's required for\n // distinguishing different countries having the same `countryCallingCode`.\n\n if (metadata.hasTypes()) {\n return getNumberType(input, options, metadata.metadata) !== undefined;\n } // If there are no type regexps for this country in metadata then use\n // `nationalNumberPattern` as a \"better than nothing\" replacement.\n\n\n var national_number = options.v2 ? input.nationalNumber : input.phone;\n return matchesEntirely(national_number, metadata.nationalNumberPattern());\n}\n//# sourceMappingURL=validate_.js.map","import { VALID_PUNCTUATION } from '../constants.js'; // Removes brackets and replaces dashes with spaces.\n//\n// E.g. \"(999) 111-22-33\" -> \"999 111 22 33\"\n//\n// For some reason Google's metadata contains ``s with brackets and dashes.\n// Meanwhile, there's no single opinion about using punctuation in international phone numbers.\n//\n// For example, Google's `` for USA is `+1 213-373-4253`.\n// And here's a quote from WikiPedia's \"North American Numbering Plan\" page:\n// https://en.wikipedia.org/wiki/North_American_Numbering_Plan\n//\n// \"The country calling code for all countries participating in the NANP is 1.\n// In international format, an NANP number should be listed as +1 301 555 01 00,\n// where 301 is an area code (Maryland).\"\n//\n// I personally prefer the international format without any punctuation.\n// For example, brackets are remnants of the old age, meaning that the\n// phone number part in brackets (so called \"area code\") can be omitted\n// if dialing within the same \"area\".\n// And hyphens were clearly introduced for splitting local numbers into memorizable groups.\n// For example, remembering \"5553535\" is difficult but \"555-35-35\" is much simpler.\n// Imagine a man taking a bus from home to work and seeing an ad with a phone number.\n// He has a couple of seconds to memorize that number until it passes by.\n// If it were spaces instead of hyphens the man wouldn't necessarily get it,\n// but with hyphens instead of spaces the grouping is more explicit.\n// I personally think that hyphens introduce visual clutter,\n// so I prefer replacing them with spaces in international numbers.\n// In the modern age all output is done on displays where spaces are clearly distinguishable\n// so hyphens can be safely replaced with spaces without losing any legibility.\n//\n\nexport default function applyInternationalSeparatorStyle(formattedNumber) {\n return formattedNumber.replace(new RegExp(\"[\".concat(VALID_PUNCTUATION, \"]+\"), 'g'), ' ').trim();\n}\n//# sourceMappingURL=applyInternationalSeparatorStyle.js.map","import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle.js'; // This was originally set to $1 but there are some countries for which the\n// first group is not used in the national pattern (e.g. Argentina) so the $1\n// group does not match correctly. Therefore, we use `\\d`, so that the first\n// group actually used in the pattern will be matched.\n\nexport var FIRST_GROUP_PATTERN = /(\\$\\d)/;\nexport default function formatNationalNumberUsingFormat(number, format, _ref) {\n var useInternationalFormat = _ref.useInternationalFormat,\n withNationalPrefix = _ref.withNationalPrefix,\n carrierCode = _ref.carrierCode,\n metadata = _ref.metadata;\n var formattedNumber = number.replace(new RegExp(format.pattern()), useInternationalFormat ? format.internationalFormat() : // This library doesn't use `domestic_carrier_code_formatting_rule`,\n // because that one is only used when formatting phone numbers\n // for dialing from a mobile phone, and this is not a dialing library.\n // carrierCode && format.domesticCarrierCodeFormattingRule()\n // \t// First, replace the $CC in the formatting rule with the desired carrier code.\n // \t// Then, replace the $FG in the formatting rule with the first group\n // \t// and the carrier code combined in the appropriate way.\n // \t? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode))\n // \t: (\n // \t\twithNationalPrefix && format.nationalPrefixFormattingRule()\n // \t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\n // \t\t\t: format.format()\n // \t)\n withNationalPrefix && format.nationalPrefixFormattingRule() ? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()) : format.format());\n\n if (useInternationalFormat) {\n return applyInternationalSeparatorStyle(formattedNumber);\n }\n\n return formattedNumber;\n}\n//# sourceMappingURL=formatNationalNumberUsingFormat.js.map","import Metadata from '../metadata.js';\n/**\r\n * Pattern that makes it easy to distinguish whether a region has a single\r\n * international dialing prefix or not. If a region has a single international\r\n * prefix (e.g. 011 in USA), it will be represented as a string that contains\r\n * a sequence of ASCII digits, and possibly a tilde, which signals waiting for\r\n * the tone. If there are multiple available international prefixes in a\r\n * region, they will be represented as a regex string that always contains one\r\n * or more characters that are not ASCII digits or a tilde.\r\n */\n\nvar SINGLE_IDD_PREFIX_REG_EXP = /^[\\d]+(?:[~\\u2053\\u223C\\uFF5E][\\d]+)?$/; // For regions that have multiple IDD prefixes\n// a preferred IDD prefix is returned.\n\nexport default function getIddPrefix(country, callingCode, metadata) {\n var countryMetadata = new Metadata(metadata);\n countryMetadata.selectNumberingPlan(country, callingCode);\n\n if (countryMetadata.defaultIDDPrefix()) {\n return countryMetadata.defaultIDDPrefix();\n }\n\n if (SINGLE_IDD_PREFIX_REG_EXP.test(countryMetadata.IDDPrefix())) {\n return countryMetadata.IDDPrefix();\n }\n}\n//# sourceMappingURL=getIddPrefix.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js';\nimport Metadata, { getCountryCallingCode } from './metadata.js';\nimport getIddPrefix from './helpers/getIddPrefix.js';\nimport { formatRFC3966 } from './helpers/RFC3966.js';\nvar DEFAULT_OPTIONS = {\n formatExtension: function formatExtension(formattedNumber, extension, metadata) {\n return \"\".concat(formattedNumber).concat(metadata.ext()).concat(extension);\n }\n}; // Formats a phone number\n//\n// Example use cases:\n//\n// ```js\n// formatNumber('8005553535', 'RU', 'INTERNATIONAL')\n// formatNumber('8005553535', 'RU', 'INTERNATIONAL', metadata)\n// formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL')\n// formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL', metadata)\n// formatNumber('+78005553535', 'NATIONAL')\n// formatNumber('+78005553535', 'NATIONAL', metadata)\n// ```\n//\n\nexport default function formatNumber(input, format, options, metadata) {\n // Apply default options.\n if (options) {\n options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);\n } else {\n options = DEFAULT_OPTIONS;\n }\n\n metadata = new Metadata(metadata);\n\n if (input.country && input.country !== '001') {\n // Validate `input.country`.\n if (!metadata.hasCountry(input.country)) {\n throw new Error(\"Unknown country: \".concat(input.country));\n }\n\n metadata.country(input.country);\n } else if (input.countryCallingCode) {\n metadata.selectNumberingPlan(input.countryCallingCode);\n } else return input.phone || '';\n\n var countryCallingCode = metadata.countryCallingCode();\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // This variable should have been declared inside `case`s\n // but Babel has a bug and it says \"duplicate variable declaration\".\n\n var number;\n\n switch (format) {\n case 'NATIONAL':\n // Legacy argument support.\n // (`{ country: ..., phone: '' }`)\n if (!nationalNumber) {\n return '';\n }\n\n number = formatNationalNumber(nationalNumber, input.carrierCode, 'NATIONAL', metadata, options);\n return addExtension(number, input.ext, metadata, options.formatExtension);\n\n case 'INTERNATIONAL':\n // Legacy argument support.\n // (`{ country: ..., phone: '' }`)\n if (!nationalNumber) {\n return \"+\".concat(countryCallingCode);\n }\n\n number = formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata, options);\n number = \"+\".concat(countryCallingCode, \" \").concat(number);\n return addExtension(number, input.ext, metadata, options.formatExtension);\n\n case 'E.164':\n // `E.164` doesn't define \"phone number extensions\".\n return \"+\".concat(countryCallingCode).concat(nationalNumber);\n\n case 'RFC3966':\n return formatRFC3966({\n number: \"+\".concat(countryCallingCode).concat(nationalNumber),\n ext: input.ext\n });\n // For reference, here's Google's IDD formatter:\n // https://github.com/google/libphonenumber/blob/32719cf74e68796788d1ca45abc85dcdc63ba5b9/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L1546\n // Not saying that this IDD formatter replicates it 1:1, but it seems to work.\n // Who would even need to format phone numbers in IDD format anyway?\n\n case 'IDD':\n if (!options.fromCountry) {\n return; // throw new Error('`fromCountry` option not passed for IDD-prefixed formatting.')\n }\n\n var formattedNumber = formatIDD(nationalNumber, input.carrierCode, countryCallingCode, options.fromCountry, metadata);\n return addExtension(formattedNumber, input.ext, metadata, options.formatExtension);\n\n default:\n throw new Error(\"Unknown \\\"format\\\" argument passed to \\\"formatNumber()\\\": \\\"\".concat(format, \"\\\"\"));\n }\n}\n\nfunction formatNationalNumber(number, carrierCode, formatAs, metadata, options) {\n var format = chooseFormatForNumber(metadata.formats(), number);\n\n if (!format) {\n return number;\n }\n\n return formatNationalNumberUsingFormat(number, format, {\n useInternationalFormat: formatAs === 'INTERNATIONAL',\n withNationalPrefix: format.nationalPrefixIsOptionalWhenFormattingInNationalFormat() && options && options.nationalPrefix === false ? false : true,\n carrierCode: carrierCode,\n metadata: metadata\n });\n}\n\nfunction chooseFormatForNumber(availableFormats, nationalNnumber) {\n for (var _iterator = _createForOfIteratorHelperLoose(availableFormats), _step; !(_step = _iterator()).done;) {\n var format = _step.value;\n\n // Validate leading digits.\n // The test case for \"else path\" could be found by searching for\n // \"format.leadingDigitsPatterns().length === 0\".\n if (format.leadingDigitsPatterns().length > 0) {\n // The last leading_digits_pattern is used here, as it is the most detailed\n var lastLeadingDigitsPattern = format.leadingDigitsPatterns()[format.leadingDigitsPatterns().length - 1]; // If leading digits don't match then move on to the next phone number format\n\n if (nationalNnumber.search(lastLeadingDigitsPattern) !== 0) {\n continue;\n }\n } // Check that the national number matches the phone number format regular expression\n\n\n if (matchesEntirely(nationalNnumber, format.pattern())) {\n return format;\n }\n }\n}\n\nfunction addExtension(formattedNumber, ext, metadata, formatExtension) {\n return ext ? formatExtension(formattedNumber, ext, metadata) : formattedNumber;\n}\n\nfunction formatIDD(nationalNumber, carrierCode, countryCallingCode, fromCountry, metadata) {\n var fromCountryCallingCode = getCountryCallingCode(fromCountry, metadata.metadata); // When calling within the same country calling code.\n\n if (fromCountryCallingCode === countryCallingCode) {\n var formattedNumber = formatNationalNumber(nationalNumber, carrierCode, 'NATIONAL', metadata); // For NANPA regions, return the national format for these regions\n // but prefix it with the country calling code.\n\n if (countryCallingCode === '1') {\n return countryCallingCode + ' ' + formattedNumber;\n } // If regions share a country calling code, the country calling code need\n // not be dialled. This also applies when dialling within a region, so this\n // if clause covers both these cases. Technically this is the case for\n // dialling from La Reunion to other overseas departments of France (French\n // Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover\n // this edge case for now and for those cases return the version including\n // country calling code. Details here:\n // http://www.petitfute.com/voyage/225-info-pratiques-reunion\n //\n\n\n return formattedNumber;\n }\n\n var iddPrefix = getIddPrefix(fromCountry, undefined, metadata.metadata);\n\n if (iddPrefix) {\n return \"\".concat(iddPrefix, \" \").concat(countryCallingCode, \" \").concat(formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata));\n }\n}\n//# sourceMappingURL=format_.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport Metadata from './metadata.js';\nimport isPossibleNumber from './isPossibleNumber_.js';\nimport isValidNumber from './validate_.js';\nimport isValidNumberForRegion from './isValidNumberForRegion_.js';\nimport getNumberType from './helpers/getNumberType.js';\nimport formatNumber from './format_.js';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\n\nvar PhoneNumber = /*#__PURE__*/function () {\n function PhoneNumber(countryCallingCode, nationalNumber, metadata) {\n _classCallCheck(this, PhoneNumber);\n\n if (!countryCallingCode) {\n throw new TypeError('`country` or `countryCallingCode` not passed');\n }\n\n if (!nationalNumber) {\n throw new TypeError('`nationalNumber` not passed');\n }\n\n if (!metadata) {\n throw new TypeError('`metadata` not passed');\n }\n\n var _metadata = new Metadata(metadata); // If country code is passed then derive `countryCallingCode` from it.\n // Also store the country code as `.country`.\n\n\n if (isCountryCode(countryCallingCode)) {\n this.country = countryCallingCode;\n\n _metadata.country(countryCallingCode);\n\n countryCallingCode = _metadata.countryCallingCode();\n } else {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (_metadata.isNonGeographicCallingCode(countryCallingCode)) {\n this.country = '001';\n }\n }\n }\n\n this.countryCallingCode = countryCallingCode;\n this.nationalNumber = nationalNumber;\n this.number = '+' + this.countryCallingCode + this.nationalNumber;\n this.metadata = metadata;\n }\n\n _createClass(PhoneNumber, [{\n key: \"setExt\",\n value: function setExt(ext) {\n this.ext = ext;\n }\n }, {\n key: \"isPossible\",\n value: function isPossible() {\n return isPossibleNumber(this, {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"isValid\",\n value: function isValid() {\n return isValidNumber(this, {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"isNonGeographic\",\n value: function isNonGeographic() {\n var metadata = new Metadata(this.metadata);\n return metadata.isNonGeographicCallingCode(this.countryCallingCode);\n }\n }, {\n key: \"isEqual\",\n value: function isEqual(phoneNumber) {\n return this.number === phoneNumber.number && this.ext === phoneNumber.ext;\n } // // Is just an alias for `this.isValid() && this.country === country`.\n // // https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\n // isValidForRegion(country) {\n // \treturn isValidNumberForRegion(this, country, { v2: true }, this.metadata)\n // }\n\n }, {\n key: \"getType\",\n value: function getType() {\n return getNumberType(this, {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"format\",\n value: function format(_format, options) {\n return formatNumber(this, _format, options ? _objectSpread(_objectSpread({}, options), {}, {\n v2: true\n }) : {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"formatNational\",\n value: function formatNational(options) {\n return this.format('NATIONAL', options);\n }\n }, {\n key: \"formatInternational\",\n value: function formatInternational(options) {\n return this.format('INTERNATIONAL', options);\n }\n }, {\n key: \"getURI\",\n value: function getURI(options) {\n return this.format('RFC3966', options);\n }\n }]);\n\n return PhoneNumber;\n}();\n\nexport { PhoneNumber as default };\n\nvar isCountryCode = function isCountryCode(value) {\n return /^[A-Z]{2}$/.test(value);\n};\n//# sourceMappingURL=PhoneNumber.js.map","import Metadata from '../metadata.js';\nimport { VALID_DIGITS } from '../constants.js';\nvar CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])');\nexport default function stripIddPrefix(number, country, callingCode, metadata) {\n if (!country) {\n return;\n } // Check if the number is IDD-prefixed.\n\n\n var countryMetadata = new Metadata(metadata);\n countryMetadata.selectNumberingPlan(country, callingCode);\n var IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix());\n\n if (number.search(IDDPrefixPattern) !== 0) {\n return;\n } // Strip IDD prefix.\n\n\n number = number.slice(number.match(IDDPrefixPattern)[0].length); // If there're any digits after an IDD prefix,\n // then those digits are a country calling code.\n // Since no country code starts with a `0`,\n // the code below validates that the next digit (if present) is not `0`.\n\n var matchedGroups = number.match(CAPTURING_DIGIT_PATTERN);\n\n if (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) {\n if (matchedGroups[1] === '0') {\n return;\n }\n }\n\n return number;\n}\n//# sourceMappingURL=stripIddPrefix.js.map","/**\r\n * Strips any national prefix (such as 0, 1) present in a\r\n * (possibly incomplete) number provided.\r\n * \"Carrier codes\" are only used in Colombia and Brazil,\r\n * and only when dialing within those countries from a mobile phone to a fixed line number.\r\n * Sometimes it won't actually strip national prefix\r\n * and will instead prepend some digits to the `number`:\r\n * for example, when number `2345678` is passed with `VI` country selected,\r\n * it will return `{ number: \"3402345678\" }`, because `340` area code is prepended.\r\n * @param {string} number — National number digits.\r\n * @param {object} metadata — Metadata with country selected.\r\n * @return {object} `{ nationalNumber: string, nationalPrefix: string? carrierCode: string? }`. Even if a national prefix was extracted, it's not necessarily present in the returned object, so don't rely on its presence in the returned object in order to find out whether a national prefix has been extracted or not.\r\n */\nexport default function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) {\n if (number && metadata.numberingPlan.nationalPrefixForParsing()) {\n // See METADATA.md for the description of\n // `national_prefix_for_parsing` and `national_prefix_transform_rule`.\n // Attempt to parse the first digits as a national prefix.\n var prefixPattern = new RegExp('^(?:' + metadata.numberingPlan.nationalPrefixForParsing() + ')');\n var prefixMatch = prefixPattern.exec(number);\n\n if (prefixMatch) {\n var nationalNumber;\n var carrierCode; // https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\n // If a `national_prefix_for_parsing` has any \"capturing groups\"\n // then it means that the national (significant) number is equal to\n // those \"capturing groups\" transformed via `national_prefix_transform_rule`,\n // and nothing could be said about the actual national prefix:\n // what is it and was it even there.\n // If a `national_prefix_for_parsing` doesn't have any \"capturing groups\",\n // then everything it matches is a national prefix.\n // To determine whether `national_prefix_for_parsing` matched any\n // \"capturing groups\", the value of the result of calling `.exec()`\n // is looked at, and if it has non-undefined values where there're\n // \"capturing groups\" in the regular expression, then it means\n // that \"capturing groups\" have been matched.\n // It's not possible to tell whether there'll be any \"capturing gropus\"\n // before the matching process, because a `national_prefix_for_parsing`\n // could exhibit both behaviors.\n\n var capturedGroupsCount = prefixMatch.length - 1;\n var hasCapturedGroups = capturedGroupsCount > 0 && prefixMatch[capturedGroupsCount];\n\n if (metadata.nationalPrefixTransformRule() && hasCapturedGroups) {\n nationalNumber = number.replace(prefixPattern, metadata.nationalPrefixTransformRule()); // If there's more than one captured group,\n // then carrier code is the second one.\n\n if (capturedGroupsCount > 1) {\n carrierCode = prefixMatch[1];\n }\n } // If there're no \"capturing groups\",\n // or if there're \"capturing groups\" but no\n // `national_prefix_transform_rule`,\n // then just strip the national prefix from the number,\n // and possibly a carrier code.\n // Seems like there could be more.\n else {\n // `prefixBeforeNationalNumber` is the whole substring matched by\n // the `national_prefix_for_parsing` regular expression.\n // There seem to be no guarantees that it's just a national prefix.\n // For example, if there's a carrier code, it's gonna be a\n // part of `prefixBeforeNationalNumber` too.\n var prefixBeforeNationalNumber = prefixMatch[0];\n nationalNumber = number.slice(prefixBeforeNationalNumber.length); // If there's at least one captured group,\n // then carrier code is the first one.\n\n if (hasCapturedGroups) {\n carrierCode = prefixMatch[1];\n }\n } // Tries to guess whether a national prefix was present in the input.\n // This is not something copy-pasted from Google's library:\n // they don't seem to have an equivalent for that.\n // So this isn't an \"officially approved\" way of doing something like that.\n // But since there seems no other existing method, this library uses it.\n\n\n var nationalPrefix;\n\n if (hasCapturedGroups) {\n var possiblePositionOfTheFirstCapturedGroup = number.indexOf(prefixMatch[1]);\n var possibleNationalPrefix = number.slice(0, possiblePositionOfTheFirstCapturedGroup); // Example: an Argentinian (AR) phone number `0111523456789`.\n // `prefixMatch[0]` is `01115`, and `$1` is `11`,\n // and the rest of the phone number is `23456789`.\n // The national number is transformed via `9$1` to `91123456789`.\n // National prefix `0` is detected being present at the start.\n // if (possibleNationalPrefix.indexOf(metadata.numberingPlan.nationalPrefix()) === 0) {\n\n if (possibleNationalPrefix === metadata.numberingPlan.nationalPrefix()) {\n nationalPrefix = metadata.numberingPlan.nationalPrefix();\n }\n } else {\n nationalPrefix = prefixMatch[0];\n }\n\n return {\n nationalNumber: nationalNumber,\n nationalPrefix: nationalPrefix,\n carrierCode: carrierCode\n };\n }\n }\n\n return {\n nationalNumber: number\n };\n}\n//# sourceMappingURL=extractNationalNumberFromPossiblyIncompleteNumber.js.map","import extractNationalNumberFromPossiblyIncompleteNumber from './extractNationalNumberFromPossiblyIncompleteNumber.js';\nimport matchesEntirely from './matchesEntirely.js';\nimport checkNumberLength from './checkNumberLength.js';\n/**\r\n * Strips national prefix and carrier code from a complete phone number.\r\n * The difference from the non-\"FromCompleteNumber\" function is that\r\n * it won't extract national prefix if the resultant number is too short\r\n * to be a complete number for the selected phone numbering plan.\r\n * @param {string} number — Complete phone number digits.\r\n * @param {Metadata} metadata — Metadata with a phone numbering plan selected.\r\n * @return {object} `{ nationalNumber: string, carrierCode: string? }`.\r\n */\n\nexport default function extractNationalNumber(number, metadata) {\n // Parsing national prefixes and carrier codes\n // is only required for local phone numbers\n // but some people don't understand that\n // and sometimes write international phone numbers\n // with national prefixes (or maybe even carrier codes).\n // http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html\n // Google's original library forgives such mistakes\n // and so does this library, because it has been requested:\n // https://github.com/catamphetamine/libphonenumber-js/issues/127\n var _extractNationalNumbe = extractNationalNumberFromPossiblyIncompleteNumber(number, metadata),\n carrierCode = _extractNationalNumbe.carrierCode,\n nationalNumber = _extractNationalNumbe.nationalNumber;\n\n if (nationalNumber !== number) {\n if (!shouldHaveExtractedNationalPrefix(number, nationalNumber, metadata)) {\n // Don't strip the national prefix.\n return {\n nationalNumber: number\n };\n } // Check the national (significant) number length after extracting national prefix and carrier code.\n // Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature.\n\n\n if (metadata.possibleLengths()) {\n // The number remaining after stripping the national prefix and carrier code\n // should be long enough to have a possible length for the country.\n // Otherwise, don't strip the national prefix and carrier code,\n // since the original number could be a valid number.\n // This check has been copy-pasted \"as is\" from Google's original library:\n // https://github.com/google/libphonenumber/blob/876268eb1ad6cdc1b7b5bef17fc5e43052702d57/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3236-L3250\n // It doesn't check for the \"possibility\" of the original `number`.\n // I guess it's fine not checking that one. It works as is anyway.\n if (!isPossibleIncompleteNationalNumber(nationalNumber, metadata)) {\n // Don't strip the national prefix.\n return {\n nationalNumber: number\n };\n }\n }\n }\n\n return {\n nationalNumber: nationalNumber,\n carrierCode: carrierCode\n };\n} // In some countries, the same digit could be a national prefix\n// or a leading digit of a valid phone number.\n// For example, in Russia, national prefix is `8`,\n// and also `800 555 35 35` is a valid number\n// in which `8` is not a national prefix, but the first digit\n// of a national (significant) number.\n// Same's with Belarus:\n// `82004910060` is a valid national (significant) number,\n// but `2004910060` is not.\n// To support such cases (to prevent the code from always stripping\n// national prefix), a condition is imposed: a national prefix\n// is not extracted when the original number is \"viable\" and the\n// resultant number is not, a \"viable\" national number being the one\n// that matches `national_number_pattern`.\n\nfunction shouldHaveExtractedNationalPrefix(nationalNumberBefore, nationalNumberAfter, metadata) {\n // The equivalent in Google's code is:\n // https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L2969-L3004\n if (matchesEntirely(nationalNumberBefore, metadata.nationalNumberPattern()) && !matchesEntirely(nationalNumberAfter, metadata.nationalNumberPattern())) {\n return false;\n } // This \"is possible\" national number (length) check has been commented out\n // because it's superceded by the (effectively) same check done in the\n // `extractNationalNumber()` function after it calls `shouldHaveExtractedNationalPrefix()`.\n // In other words, why run the same check twice if it could only be run once.\n // // Check the national (significant) number length after extracting national prefix and carrier code.\n // // Fixes a minor \"weird behavior\" bug: https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/57\n // // (Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature).\n // if (metadata.possibleLengths()) {\n // \tif (isPossibleIncompleteNationalNumber(nationalNumberBefore, metadata) &&\n // \t\t!isPossibleIncompleteNationalNumber(nationalNumberAfter, metadata)) {\n // \t\treturn false\n // \t}\n // }\n\n\n return true;\n}\n\nfunction isPossibleIncompleteNationalNumber(nationalNumber, metadata) {\n switch (checkNumberLength(nationalNumber, metadata)) {\n case 'TOO_SHORT':\n case 'INVALID_LENGTH':\n // This library ignores \"local-only\" phone numbers (for simplicity).\n // See the readme for more info on what are \"local-only\" phone numbers.\n // case 'IS_POSSIBLE_LOCAL_ONLY':\n return false;\n\n default:\n return true;\n }\n}\n//# sourceMappingURL=extractNationalNumber.js.map","import Metadata from '../metadata.js';\nimport matchesEntirely from './matchesEntirely.js';\nimport extractNationalNumber from './extractNationalNumber.js';\nimport checkNumberLength from './checkNumberLength.js';\nimport getCountryCallingCode from '../getCountryCallingCode.js';\n/**\r\n * Sometimes some people incorrectly input international phone numbers\r\n * without the leading `+`. This function corrects such input.\r\n * @param {string} number — Phone number digits.\r\n * @param {string?} country\r\n * @param {string?} callingCode\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`.\r\n */\n\nexport default function extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, callingCode, metadata) {\n var countryCallingCode = country ? getCountryCallingCode(country, metadata) : callingCode;\n\n if (number.indexOf(countryCallingCode) === 0) {\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(country, callingCode);\n var possibleShorterNumber = number.slice(countryCallingCode.length);\n\n var _extractNationalNumbe = extractNationalNumber(possibleShorterNumber, metadata),\n possibleShorterNationalNumber = _extractNationalNumbe.nationalNumber;\n\n var _extractNationalNumbe2 = extractNationalNumber(number, metadata),\n nationalNumber = _extractNationalNumbe2.nationalNumber; // If the number was not valid before but is valid now,\n // or if it was too long before, we consider the number\n // with the country calling code stripped to be a better result\n // and keep that instead.\n // For example, in Germany (+49), `49` is a valid area code,\n // so if a number starts with `49`, it could be both a valid\n // national German number or an international number without\n // a leading `+`.\n\n\n if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) && matchesEntirely(possibleShorterNationalNumber, metadata.nationalNumberPattern()) || checkNumberLength(nationalNumber, metadata) === 'TOO_LONG') {\n return {\n countryCallingCode: countryCallingCode,\n number: possibleShorterNumber\n };\n }\n }\n\n return {\n number: number\n };\n}\n//# sourceMappingURL=extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js.map","import stripIddPrefix from './stripIddPrefix.js';\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js';\nimport Metadata from '../metadata.js';\nimport { MAX_LENGTH_COUNTRY_CODE } from '../constants.js';\n/**\r\n * Converts a phone number digits (possibly with a `+`)\r\n * into a calling code and the rest phone number digits.\r\n * The \"rest phone number digits\" could include\r\n * a national prefix, carrier code, and national\r\n * (significant) number.\r\n * @param {string} number — Phone number digits (possibly with a `+`).\r\n * @param {string} [country] — Default country.\r\n * @param {string} [callingCode] — Default calling code (some phone numbering plans are non-geographic).\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`\r\n * @example\r\n * // Returns `{ countryCallingCode: \"1\", number: \"2133734253\" }`.\r\n * extractCountryCallingCode('2133734253', 'US', null, metadata)\r\n * extractCountryCallingCode('2133734253', null, '1', metadata)\r\n * extractCountryCallingCode('+12133734253', null, null, metadata)\r\n * extractCountryCallingCode('+12133734253', 'RU', null, metadata)\r\n */\n\nexport default function extractCountryCallingCode(number, country, callingCode, metadata) {\n if (!number) {\n return {};\n } // If this is not an international phone number,\n // then either extract an \"IDD\" prefix, or extract a\n // country calling code from a number by autocorrecting it\n // by prepending a leading `+` in cases when it starts\n // with the country calling code.\n // https://wikitravel.org/en/International_dialling_prefix\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n\n\n if (number[0] !== '+') {\n // Convert an \"out-of-country\" dialing phone number\n // to a proper international phone number.\n var numberWithoutIDD = stripIddPrefix(number, country, callingCode, metadata); // If an IDD prefix was stripped then\n // convert the number to international one\n // for subsequent parsing.\n\n if (numberWithoutIDD && numberWithoutIDD !== number) {\n number = '+' + numberWithoutIDD;\n } else {\n // Check to see if the number starts with the country calling code\n // for the default country. If so, we remove the country calling code,\n // and do some checks on the validity of the number before and after.\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n if (country || callingCode) {\n var _extractCountryCallin = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, callingCode, metadata),\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n shorterNumber = _extractCountryCallin.number;\n\n if (countryCallingCode) {\n return {\n countryCallingCode: countryCallingCode,\n number: shorterNumber\n };\n }\n }\n\n return {\n number: number\n };\n }\n } // Fast abortion: country codes do not begin with a '0'\n\n\n if (number[1] === '0') {\n return {};\n }\n\n metadata = new Metadata(metadata); // The thing with country phone codes\n // is that they are orthogonal to each other\n // i.e. there's no such country phone code A\n // for which country phone code B exists\n // where B starts with A.\n // Therefore, while scanning digits,\n // if a valid country code is found,\n // that means that it is the country code.\n //\n\n var i = 2;\n\n while (i - 1 <= MAX_LENGTH_COUNTRY_CODE && i <= number.length) {\n var _countryCallingCode = number.slice(1, i);\n\n if (metadata.hasCallingCode(_countryCallingCode)) {\n metadata.selectNumberingPlan(_countryCallingCode);\n return {\n countryCallingCode: _countryCallingCode,\n number: number.slice(i)\n };\n }\n\n i++;\n }\n\n return {};\n}\n//# sourceMappingURL=extractCountryCallingCode.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport Metadata from '../metadata.js';\nimport getNumberType from './getNumberType.js';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\nexport default function getCountryByCallingCode(callingCode, nationalPhoneNumber, metadata) {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(callingCode)) {\n return '001';\n }\n } // Is always non-empty, because `callingCode` is always valid\n\n\n var possibleCountries = metadata.getCountryCodesForCallingCode(callingCode);\n\n if (!possibleCountries) {\n return;\n } // If there's just one country corresponding to the country code,\n // then just return it, without further phone number digits validation.\n\n\n if (possibleCountries.length === 1) {\n return possibleCountries[0];\n }\n\n return selectCountryFromList(possibleCountries, nationalPhoneNumber, metadata.metadata);\n}\n\nfunction selectCountryFromList(possibleCountries, nationalPhoneNumber, metadata) {\n // Re-create `metadata` because it will be selecting a `country`.\n metadata = new Metadata(metadata);\n\n for (var _iterator = _createForOfIteratorHelperLoose(possibleCountries), _step; !(_step = _iterator()).done;) {\n var country = _step.value;\n metadata.country(country); // Leading digits check would be the simplest and fastest one.\n // Leading digits patterns are only defined for about 20% of all countries.\n // https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits\n // Matching \"leading digits\" is a sufficient but not necessary condition.\n\n if (metadata.leadingDigits()) {\n if (nationalPhoneNumber && nationalPhoneNumber.search(metadata.leadingDigits()) === 0) {\n return country;\n }\n } // Else perform full validation with all of those\n // fixed-line/mobile/etc regular expressions.\n else if (getNumberType({\n phone: nationalPhoneNumber,\n country: country\n }, undefined, metadata.metadata)) {\n return country;\n }\n }\n}\n//# sourceMappingURL=getCountryByCallingCode.js.map","// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\nimport { VALID_DIGITS, PLUS_CHARS, MIN_LENGTH_FOR_NSN, MAX_LENGTH_FOR_NSN } from './constants.js';\nimport ParseError from './ParseError.js';\nimport Metadata from './metadata.js';\nimport isViablePhoneNumber, { isViablePhoneNumberStart } from './helpers/isViablePhoneNumber.js';\nimport extractExtension from './helpers/extension/extractExtension.js';\nimport parseIncompletePhoneNumber from './parseIncompletePhoneNumber.js';\nimport getCountryCallingCode from './getCountryCallingCode.js';\nimport { isPossibleNumber } from './isPossibleNumber_.js';\nimport { parseRFC3966 } from './helpers/RFC3966.js';\nimport PhoneNumber from './PhoneNumber.js';\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport extractCountryCallingCode from './helpers/extractCountryCallingCode.js';\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js';\nimport extractNationalNumber from './helpers/extractNationalNumber.js';\nimport stripIddPrefix from './helpers/stripIddPrefix.js';\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js'; // We don't allow input strings for parsing to be longer than 250 chars.\n// This prevents malicious input from consuming CPU.\n\nvar MAX_INPUT_STRING_LENGTH = 250; // This consists of the plus symbol, digits, and arabic-indic digits.\n\nvar PHONE_NUMBER_START_PATTERN = new RegExp('[' + PLUS_CHARS + VALID_DIGITS + ']'); // Regular expression of trailing characters that we want to remove.\n// A trailing `#` is sometimes used when writing phone numbers with extensions in US.\n// Example: \"+1 (645) 123 1234-910#\" number has extension \"910\".\n\nvar AFTER_PHONE_NUMBER_END_PATTERN = new RegExp('[^' + VALID_DIGITS + '#' + ']+$');\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false; // Examples:\n//\n// ```js\n// parse('8 (800) 555-35-35', 'RU')\n// parse('8 (800) 555-35-35', 'RU', metadata)\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } })\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata)\n// parse('+7 800 555 35 35')\n// parse('+7 800 555 35 35', metadata)\n// ```\n//\n\nexport default function parse(text, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {};\n metadata = new Metadata(metadata); // Validate `defaultCountry`.\n\n if (options.defaultCountry && !metadata.hasCountry(options.defaultCountry)) {\n if (options.v2) {\n throw new ParseError('INVALID_COUNTRY');\n }\n\n throw new Error(\"Unknown country: \".concat(options.defaultCountry));\n } // Parse the phone number.\n\n\n var _parseInput = parseInput(text, options.v2, options.extract),\n formattedPhoneNumber = _parseInput.number,\n ext = _parseInput.ext,\n error = _parseInput.error; // If the phone number is not viable then return nothing.\n\n\n if (!formattedPhoneNumber) {\n if (options.v2) {\n if (error === 'TOO_SHORT') {\n throw new ParseError('TOO_SHORT');\n }\n\n throw new ParseError('NOT_A_NUMBER');\n }\n\n return {};\n }\n\n var _parsePhoneNumber = parsePhoneNumber(formattedPhoneNumber, options.defaultCountry, options.defaultCallingCode, metadata),\n country = _parsePhoneNumber.country,\n nationalNumber = _parsePhoneNumber.nationalNumber,\n countryCallingCode = _parsePhoneNumber.countryCallingCode,\n carrierCode = _parsePhoneNumber.carrierCode;\n\n if (!metadata.hasSelectedNumberingPlan()) {\n if (options.v2) {\n throw new ParseError('INVALID_COUNTRY');\n }\n\n return {};\n } // Validate national (significant) number length.\n\n\n if (!nationalNumber || nationalNumber.length < MIN_LENGTH_FOR_NSN) {\n // Won't throw here because the regexp already demands length > 1.\n\n /* istanbul ignore if */\n if (options.v2) {\n throw new ParseError('TOO_SHORT');\n } // Google's demo just throws an error in this case.\n\n\n return {};\n } // Validate national (significant) number length.\n //\n // A sidenote:\n //\n // They say that sometimes national (significant) numbers\n // can be longer than `MAX_LENGTH_FOR_NSN` (e.g. in Germany).\n // https://github.com/googlei18n/libphonenumber/blob/7e1748645552da39c4e1ba731e47969d97bdb539/resources/phonenumber.proto#L36\n // Such numbers will just be discarded.\n //\n\n\n if (nationalNumber.length > MAX_LENGTH_FOR_NSN) {\n if (options.v2) {\n throw new ParseError('TOO_LONG');\n } // Google's demo just throws an error in this case.\n\n\n return {};\n }\n\n if (options.v2) {\n var phoneNumber = new PhoneNumber(countryCallingCode, nationalNumber, metadata.metadata);\n\n if (country) {\n phoneNumber.country = country;\n }\n\n if (carrierCode) {\n phoneNumber.carrierCode = carrierCode;\n }\n\n if (ext) {\n phoneNumber.ext = ext;\n }\n\n return phoneNumber;\n } // Check if national phone number pattern matches the number.\n // National number pattern is different for each country,\n // even for those ones which are part of the \"NANPA\" group.\n\n\n var valid = (options.extended ? metadata.hasSelectedNumberingPlan() : country) ? matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) : false;\n\n if (!options.extended) {\n return valid ? result(country, nationalNumber, ext) : {};\n } // isInternational: countryCallingCode !== undefined\n\n\n return {\n country: country,\n countryCallingCode: countryCallingCode,\n carrierCode: carrierCode,\n valid: valid,\n possible: valid ? true : options.extended === true && metadata.possibleLengths() && isPossibleNumber(nationalNumber, metadata) ? true : false,\n phone: nationalNumber,\n ext: ext\n };\n}\n/**\r\n * Extracts a formatted phone number from text.\r\n * Doesn't guarantee that the extracted phone number\r\n * is a valid phone number (for example, doesn't validate its length).\r\n * @param {string} text\r\n * @param {boolean} [extract] — If `false`, then will parse the entire `text` as a phone number.\r\n * @param {boolean} [throwOnError] — By default, it won't throw if the text is too long.\r\n * @return {string}\r\n * @example\r\n * // Returns \"(213) 373-4253\".\r\n * extractFormattedPhoneNumber(\"Call (213) 373-4253 for assistance.\")\r\n */\n\nfunction extractFormattedPhoneNumber(text, extract, throwOnError) {\n if (!text) {\n return;\n }\n\n if (text.length > MAX_INPUT_STRING_LENGTH) {\n if (throwOnError) {\n throw new ParseError('TOO_LONG');\n }\n\n return;\n }\n\n if (extract === false) {\n return text;\n } // Attempt to extract a possible number from the string passed in\n\n\n var startsAt = text.search(PHONE_NUMBER_START_PATTERN);\n\n if (startsAt < 0) {\n return;\n }\n\n return text // Trim everything to the left of the phone number\n .slice(startsAt) // Remove trailing non-numerical characters\n .replace(AFTER_PHONE_NUMBER_END_PATTERN, '');\n}\n/**\r\n * @param {string} text - Input.\r\n * @param {boolean} v2 - Legacy API functions don't pass `v2: true` flag.\r\n * @param {boolean} [extract] - Whether to extract a phone number from `text`, or attempt to parse the entire text as a phone number.\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\n\n\nfunction parseInput(text, v2, extract) {\n // Parse RFC 3966 phone number URI.\n if (text && text.indexOf('tel:') === 0) {\n return parseRFC3966(text);\n }\n\n var number = extractFormattedPhoneNumber(text, extract, v2); // If the phone number is not viable, then abort.\n\n if (!number) {\n return {};\n }\n\n if (!isViablePhoneNumber(number)) {\n if (isViablePhoneNumberStart(number)) {\n return {\n error: 'TOO_SHORT'\n };\n }\n\n return {};\n } // Attempt to parse extension first, since it doesn't require region-specific\n // data and we want to have the non-normalised number here.\n\n\n var withExtensionStripped = extractExtension(number);\n\n if (withExtensionStripped.ext) {\n return withExtensionStripped;\n }\n\n return {\n number: number\n };\n}\n/**\r\n * Creates `parse()` result object.\r\n */\n\n\nfunction result(country, nationalNumber, ext) {\n var result = {\n country: country,\n phone: nationalNumber\n };\n\n if (ext) {\n result.ext = ext;\n }\n\n return result;\n}\n/**\r\n * Parses a viable phone number.\r\n * @param {string} formattedPhoneNumber — Example: \"(213) 373-4253\".\r\n * @param {string} [defaultCountry]\r\n * @param {string} [defaultCallingCode]\r\n * @param {Metadata} metadata\r\n * @return {object} Returns `{ country: string?, countryCallingCode: string?, nationalNumber: string? }`.\r\n */\n\n\nfunction parsePhoneNumber(formattedPhoneNumber, defaultCountry, defaultCallingCode, metadata) {\n // Extract calling code from phone number.\n var _extractCountryCallin = extractCountryCallingCode(parseIncompletePhoneNumber(formattedPhoneNumber), defaultCountry, defaultCallingCode, metadata.metadata),\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n number = _extractCountryCallin.number; // Choose a country by `countryCallingCode`.\n\n\n var country;\n\n if (countryCallingCode) {\n metadata.selectNumberingPlan(countryCallingCode);\n } // If `formattedPhoneNumber` is in \"national\" format\n // then `number` is defined and `countryCallingCode` isn't.\n else if (number && (defaultCountry || defaultCallingCode)) {\n metadata.selectNumberingPlan(defaultCountry, defaultCallingCode);\n\n if (defaultCountry) {\n country = defaultCountry;\n } else {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(defaultCallingCode)) {\n country = '001';\n }\n }\n }\n\n countryCallingCode = defaultCallingCode || getCountryCallingCode(defaultCountry, metadata.metadata);\n } else return {};\n\n if (!number) {\n return {\n countryCallingCode: countryCallingCode\n };\n }\n\n var _extractNationalNumbe = extractNationalNumber(parseIncompletePhoneNumber(number), metadata),\n nationalNumber = _extractNationalNumbe.nationalNumber,\n carrierCode = _extractNationalNumbe.carrierCode; // Sometimes there are several countries\n // corresponding to the same country phone code\n // (e.g. NANPA countries all having `1` country phone code).\n // Therefore, to reliably determine the exact country,\n // national (significant) number should have been parsed first.\n //\n // When `metadata.json` is generated, all \"ambiguous\" country phone codes\n // get their countries populated with the full set of\n // \"phone number type\" regular expressions.\n //\n\n\n var exactCountry = getCountryByCallingCode(countryCallingCode, nationalNumber, metadata);\n\n if (exactCountry) {\n country = exactCountry;\n /* istanbul ignore if */\n\n if (exactCountry === '001') {// Can't happen with `USE_NON_GEOGRAPHIC_COUNTRY_CODE` being `false`.\n // If `USE_NON_GEOGRAPHIC_COUNTRY_CODE` is set to `true` for some reason,\n // then remove the \"istanbul ignore if\".\n } else {\n metadata.country(country);\n }\n }\n\n return {\n country: country,\n countryCallingCode: countryCallingCode,\n nationalNumber: nationalNumber,\n carrierCode: carrierCode\n };\n}\n//# sourceMappingURL=parse_.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport parseNumber from './parse_.js';\nexport default function parsePhoneNumber(text, options, metadata) {\n return parseNumber(text, _objectSpread(_objectSpread({}, options), {}, {\n v2: true\n }), metadata);\n}\n//# sourceMappingURL=parsePhoneNumber_.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport parsePhoneNumber_ from './parsePhoneNumber_.js';\nexport default function parsePhoneNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return parsePhoneNumber_(text, options, metadata);\n}\nexport function normalizeArguments(args) {\n var _Array$prototype$slic = Array.prototype.slice.call(args),\n _Array$prototype$slic2 = _slicedToArray(_Array$prototype$slic, 4),\n arg_1 = _Array$prototype$slic2[0],\n arg_2 = _Array$prototype$slic2[1],\n arg_3 = _Array$prototype$slic2[2],\n arg_4 = _Array$prototype$slic2[3];\n\n var text;\n var options;\n var metadata; // If the phone number is passed as a string.\n // `parsePhoneNumber('88005553535', ...)`.\n\n if (typeof arg_1 === 'string') {\n text = arg_1;\n } else throw new TypeError('A text for parsing must be a string.'); // If \"default country\" argument is being passed then move it to `options`.\n // `parsePhoneNumber('88005553535', 'RU', [options], metadata)`.\n\n\n if (!arg_2 || typeof arg_2 === 'string') {\n if (arg_4) {\n options = arg_3;\n metadata = arg_4;\n } else {\n options = undefined;\n metadata = arg_3;\n }\n\n if (arg_2) {\n options = _objectSpread({\n defaultCountry: arg_2\n }, options);\n }\n } // `defaultCountry` is not passed.\n // Example: `parsePhoneNumber('+78005553535', [options], metadata)`.\n else if (isObject(arg_2)) {\n if (arg_3) {\n options = arg_2;\n metadata = arg_3;\n } else {\n metadata = arg_2;\n }\n } else throw new Error(\"Invalid second argument: \".concat(arg_2));\n\n return {\n text: text,\n options: options,\n metadata: metadata\n };\n} // Otherwise istanbul would show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\nvar isObject = function isObject(_) {\n return _typeof(_) === 'object';\n};\n//# sourceMappingURL=parsePhoneNumber.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport parsePhoneNumber from './parsePhoneNumber_.js';\nimport ParseError from './ParseError.js';\nimport { isSupportedCountry } from './metadata.js';\nexport default function parsePhoneNumberFromString(text, options, metadata) {\n // Validate `defaultCountry`.\n if (options && options.defaultCountry && !isSupportedCountry(options.defaultCountry, metadata)) {\n options = _objectSpread(_objectSpread({}, options), {}, {\n defaultCountry: undefined\n });\n } // Parse phone number.\n\n\n try {\n return parsePhoneNumber(text, options, metadata);\n } catch (error) {\n /* istanbul ignore else */\n if (error instanceof ParseError) {//\n } else {\n throw error;\n }\n }\n}\n//# sourceMappingURL=parsePhoneNumberFromString_.js.map","import { normalizeArguments } from './parsePhoneNumber.js';\nimport parsePhoneNumberFromString_ from './parsePhoneNumberFromString_.js';\nexport default function parsePhoneNumberFromString() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return parsePhoneNumberFromString_(text, options, metadata);\n}\n//# sourceMappingURL=parsePhoneNumberFromString.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { normalizeArguments } from './parsePhoneNumber.js';\nimport parsePhoneNumberFromString from './parsePhoneNumberFromString_.js';\nexport default function isValidPhoneNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n options = _objectSpread(_objectSpread({}, options), {}, {\n extract: false\n });\n var phoneNumber = parsePhoneNumberFromString(text, options, metadata);\n return phoneNumber && phoneNumber.isValid() || false;\n}\n//# sourceMappingURL=isValidPhoneNumber.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { normalizeArguments } from './parsePhoneNumber.js';\nimport parsePhoneNumberFromString from './parsePhoneNumberFromString_.js';\nexport default function isPossiblePhoneNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n options = _objectSpread(_objectSpread({}, options), {}, {\n extract: false\n });\n var phoneNumber = parsePhoneNumberFromString(text, options, metadata);\n return phoneNumber && phoneNumber.isPossible() || false;\n}\n//# sourceMappingURL=isPossiblePhoneNumber.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { normalizeArguments } from './parsePhoneNumber.js';\nimport parsePhoneNumber from './parsePhoneNumber_.js';\nimport ParseError from './ParseError.js';\nimport Metadata from './metadata.js';\nimport checkNumberLength from './helpers/checkNumberLength.js';\nexport default function validatePhoneNumberLength() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n options = _objectSpread(_objectSpread({}, options), {}, {\n extract: false\n }); // Parse phone number.\n\n try {\n var phoneNumber = parsePhoneNumber(text, options, metadata);\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(phoneNumber.countryCallingCode);\n var result = checkNumberLength(phoneNumber.nationalNumber, metadata);\n\n if (result !== 'IS_POSSIBLE') {\n return result;\n }\n } catch (error) {\n /* istanbul ignore else */\n if (error instanceof ParseError) {\n return error.message;\n } else {\n throw error;\n }\n }\n}\n//# sourceMappingURL=validatePhoneNumberLength.js.map","function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// https://medium.com/dsinjs/implementing-lru-cache-in-javascript-94ba6755cda9\nvar Node = /*#__PURE__*/_createClass(function Node(key, value) {\n var next = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var prev = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n _classCallCheck(this, Node);\n\n this.key = key;\n this.value = value;\n this.next = next;\n this.prev = prev;\n});\n\nvar LRUCache = /*#__PURE__*/function () {\n //set default limit of 10 if limit is not passed.\n function LRUCache() {\n var limit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;\n\n _classCallCheck(this, LRUCache);\n\n this.size = 0;\n this.limit = limit;\n this.head = null;\n this.tail = null;\n this.cache = {};\n } // Write Node to head of LinkedList\n // update cache with Node key and Node reference\n\n\n _createClass(LRUCache, [{\n key: \"put\",\n value: function put(key, value) {\n this.ensureLimit();\n\n if (!this.head) {\n this.head = this.tail = new Node(key, value);\n } else {\n var node = new Node(key, value, this.head);\n this.head.prev = node;\n this.head = node;\n } //Update the cache map\n\n\n this.cache[key] = this.head;\n this.size++;\n } // Read from cache map and make that node as new Head of LinkedList\n\n }, {\n key: \"get\",\n value: function get(key) {\n if (this.cache[key]) {\n var value = this.cache[key].value; // node removed from it's position and cache\n\n this.remove(key); // write node again to the head of LinkedList to make it most recently used\n\n this.put(key, value);\n return value;\n }\n\n console.log(\"Item not available in cache for key \".concat(key));\n }\n }, {\n key: \"ensureLimit\",\n value: function ensureLimit() {\n if (this.size === this.limit) {\n this.remove(this.tail.key);\n }\n }\n }, {\n key: \"remove\",\n value: function remove(key) {\n var node = this.cache[key];\n\n if (node.prev !== null) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n\n if (node.next !== null) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n\n delete this.cache[key];\n this.size--;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = null;\n this.tail = null;\n this.size = 0;\n this.cache = {};\n } // // Invokes the callback function with every node of the chain and the index of the node.\n // forEach(fn) {\n // let node = this.head;\n // let counter = 0;\n // while (node) {\n // fn(node, counter);\n // node = node.next;\n // counter++;\n // }\n // }\n // // To iterate over LRU with a 'for...of' loop\n // *[Symbol.iterator]() {\n // let node = this.head;\n // while (node) {\n // yield node;\n // node = node.next;\n // }\n // }\n\n }]);\n\n return LRUCache;\n}();\n\nexport { LRUCache as default };\n//# sourceMappingURL=LRUCache.js.map","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport LRUCache from './LRUCache.js'; // A cache for frequently used country-specific regular expressions. Set to 32 to cover ~2-3\n// countries being used for the same doc with ~10 patterns for each country. Some pages will have\n// a lot more countries in use, but typically fewer numbers for each so expanding the cache for\n// that use-case won't have a lot of benefit.\n\nvar RegExpCache = /*#__PURE__*/function () {\n function RegExpCache(size) {\n _classCallCheck(this, RegExpCache);\n\n this.cache = new LRUCache(size);\n }\n\n _createClass(RegExpCache, [{\n key: \"getPatternForRegExp\",\n value: function getPatternForRegExp(pattern) {\n var regExp = this.cache.get(pattern);\n\n if (!regExp) {\n regExp = new RegExp('^' + pattern);\n this.cache.put(pattern, regExp);\n }\n\n return regExp;\n }\n }]);\n\n return RegExpCache;\n}();\n\nexport { RegExpCache as default };\n//# sourceMappingURL=RegExpCache.js.map","/** Returns a regular expression quantifier with an upper and lower limit. */\nexport function limit(lower, upper) {\n if (lower < 0 || upper <= 0 || upper < lower) {\n throw new TypeError();\n }\n\n return \"{\".concat(lower, \",\").concat(upper, \"}\");\n}\n/**\r\n * Trims away any characters after the first match of {@code pattern} in {@code candidate},\r\n * returning the trimmed version.\r\n */\n\nexport function trimAfterFirstMatch(regexp, string) {\n var index = string.search(regexp);\n\n if (index >= 0) {\n return string.slice(0, index);\n }\n\n return string;\n}\nexport function startsWith(string, substring) {\n return string.indexOf(substring) === 0;\n}\nexport function endsWith(string, substring) {\n return string.indexOf(substring, string.length - substring.length) === string.length - substring.length;\n}\n//# sourceMappingURL=util.js.map","// Javascript doesn't support UTF-8 regular expressions.\n// So mimicking them here.\n// Copy-pasted from `PhoneNumberMatcher.js`.\n\n/**\r\n * \"\\p{Z}\" is any kind of whitespace or invisible separator (\"Separator\").\r\n * http://www.regular-expressions.info/unicode.html\r\n * \"\\P{Z}\" is the reverse of \"\\p{Z}\".\r\n * \"\\p{N}\" is any kind of numeric character in any script (\"Number\").\r\n * \"\\p{Nd}\" is a digit zero through nine in any script except \"ideographic scripts\" (\"Decimal_Digit_Number\").\r\n * \"\\p{Sc}\" is a currency symbol (\"Currency_Symbol\").\r\n * \"\\p{L}\" is any kind of letter from any language (\"Letter\").\r\n * \"\\p{Mn}\" is \"non-spacing mark\".\r\n *\r\n * Javascript doesn't support Unicode Regular Expressions\r\n * so substituting it with this explicit set of characters.\r\n *\r\n * https://stackoverflow.com/questions/13210194/javascript-regex-equivalent-of-a-za-z-using-pl\r\n * https://github.com/danielberndt/babel-plugin-utf-8-regex/blob/master/src/transformer.js\r\n */\nvar _pZ = \" \\xA0\\u1680\\u180E\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\";\nexport var pZ = \"[\".concat(_pZ, \"]\");\nexport var PZ = \"[^\".concat(_pZ, \"]\");\nexport var _pN = \"0-9\\xB2\\xB3\\xB9\\xBC-\\xBE\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u09F4-\\u09F9\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0B72-\\u0B77\\u0BE6-\\u0BF2\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0CE6-\\u0CEF\\u0D66-\\u0D75\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F33\\u1040-\\u1049\\u1090-\\u1099\\u1369-\\u137C\\u16EE-\\u16F0\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19DA\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u2182\\u2185-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3007\\u3021-\\u3029\\u3038-\\u303A\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA620-\\uA629\\uA6E6-\\uA6EF\\uA830-\\uA835\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19\"; // const pN = `[${_pN}]`\n\nvar _pNd = \"0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19\";\nexport var pNd = \"[\".concat(_pNd, \"]\");\nexport var _pL = \"A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\";\nvar pL = \"[\".concat(_pL, \"]\");\nvar pL_regexp = new RegExp(pL);\nvar _pSc = \"$\\xA2-\\xA5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20B9\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6\";\nvar pSc = \"[\".concat(_pSc, \"]\");\nvar pSc_regexp = new RegExp(pSc);\nvar _pMn = \"\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u08FE\\u0900-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1DC0-\\u1DE6\\u1DFC-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26\";\nvar pMn = \"[\".concat(_pMn, \"]\");\nvar pMn_regexp = new RegExp(pMn);\nvar _InBasic_Latin = \"\\0-\\x7F\";\nvar _InLatin_1_Supplement = \"\\x80-\\xFF\";\nvar _InLatin_Extended_A = \"\\u0100-\\u017F\";\nvar _InLatin_Extended_Additional = \"\\u1E00-\\u1EFF\";\nvar _InLatin_Extended_B = \"\\u0180-\\u024F\";\nvar _InCombining_Diacritical_Marks = \"\\u0300-\\u036F\";\nvar latinLetterRegexp = new RegExp('[' + _InBasic_Latin + _InLatin_1_Supplement + _InLatin_Extended_A + _InLatin_Extended_Additional + _InLatin_Extended_B + _InCombining_Diacritical_Marks + ']');\n/**\r\n * Helper method to determine if a character is a Latin-script letter or not.\r\n * For our purposes, combining marks should also return true since we assume\r\n * they have been added to a preceding Latin character.\r\n */\n\nexport function isLatinLetter(letter) {\n // Combining marks are a subset of non-spacing-mark.\n if (!pL_regexp.test(letter) && !pMn_regexp.test(letter)) {\n return false;\n }\n\n return latinLetterRegexp.test(letter);\n}\nexport function isInvalidPunctuationSymbol(character) {\n return character === '%' || pSc_regexp.test(character);\n}\n//# sourceMappingURL=utf-8.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport isValidNumber from '../validate_.js';\nimport parseDigits from '../helpers/parseDigits.js';\nimport { startsWith, endsWith } from './util.js';\n/**\r\n * Leniency when finding potential phone numbers in text segments\r\n * The levels here are ordered in increasing strictness.\r\n */\n\nexport default {\n /**\r\n * Phone numbers accepted are \"possible\", but not necessarily \"valid\".\r\n */\n POSSIBLE: function POSSIBLE(number, candidate, metadata) {\n return true;\n },\n\n /**\r\n * Phone numbers accepted are \"possible\" and \"valid\".\r\n * Numbers written in national format must have their national-prefix\r\n * present if it is usually written for a number of this type.\r\n */\n VALID: function VALID(number, candidate, metadata) {\n if (!isValidNumber(number, undefined, metadata) || !containsOnlyValidXChars(number, candidate.toString(), metadata)) {\n return false;\n } // Skipped for simplicity.\n // return isNationalPrefixPresentIfRequired(number, metadata)\n\n\n return true;\n },\n\n /**\r\n * Phone numbers accepted are \"valid\" and\r\n * are grouped in a possible way for this locale. For example, a US number written as\r\n * \"65 02 53 00 00\" and \"650253 0000\" are not accepted at this leniency level, whereas\r\n * \"650 253 0000\", \"650 2530000\" or \"6502530000\" are.\r\n * Numbers with more than one '/' symbol in the national significant number\r\n * are also dropped at this level.\r\n *\r\n * Warning: This level might result in lower coverage especially for regions outside of\r\n * country code \"+1\". If you are not sure about which level to use,\r\n * email the discussion group libphonenumber-discuss@googlegroups.com.\r\n */\n STRICT_GROUPING: function STRICT_GROUPING(number, candidate, metadata, regExpCache) {\n var candidateString = candidate.toString();\n\n if (!isValidNumber(number, undefined, metadata) || !containsOnlyValidXChars(number, candidateString, metadata) || containsMoreThanOneSlashInNationalNumber(number, candidateString) || !isNationalPrefixPresentIfRequired(number, metadata)) {\n return false;\n }\n\n return checkNumberGroupingIsValid(number, candidate, metadata, allNumberGroupsRemainGrouped, regExpCache);\n },\n\n /**\r\n * Phone numbers accepted are {@linkplain PhoneNumberUtil#isValidNumber(PhoneNumber) valid} and\r\n * are grouped in the same way that we would have formatted it, or as a single block. For\r\n * example, a US number written as \"650 2530000\" is not accepted at this leniency level, whereas\r\n * \"650 253 0000\" or \"6502530000\" are.\r\n * Numbers with more than one '/' symbol are also dropped at this level.\r\n *

\r\n * Warning: This level might result in lower coverage especially for regions outside of country\r\n * code \"+1\". If you are not sure about which level to use, email the discussion group\r\n * libphonenumber-discuss@googlegroups.com.\r\n */\n EXACT_GROUPING: function EXACT_GROUPING(number, candidate, metadata, regExpCache) {\n var candidateString = candidate.toString();\n\n if (!isValidNumber(number, undefined, metadata) || !containsOnlyValidXChars(number, candidateString, metadata) || containsMoreThanOneSlashInNationalNumber(number, candidateString) || !isNationalPrefixPresentIfRequired(number, metadata)) {\n return false;\n }\n\n return checkNumberGroupingIsValid(number, candidate, metadata, allNumberGroupsAreExactlyPresent, regExpCache);\n }\n};\n\nfunction containsOnlyValidXChars(number, candidate, metadata) {\n // The characters 'x' and 'X' can be (1) a carrier code, in which case they always precede the\n // national significant number or (2) an extension sign, in which case they always precede the\n // extension number. We assume a carrier code is more than 1 digit, so the first case has to\n // have more than 1 consecutive 'x' or 'X', whereas the second case can only have exactly 1 'x'\n // or 'X'. We ignore the character if it appears as the last character of the string.\n for (var index = 0; index < candidate.length - 1; index++) {\n var charAtIndex = candidate.charAt(index);\n\n if (charAtIndex === 'x' || charAtIndex === 'X') {\n var charAtNextIndex = candidate.charAt(index + 1);\n\n if (charAtNextIndex === 'x' || charAtNextIndex === 'X') {\n // This is the carrier code case, in which the 'X's always precede the national\n // significant number.\n index++;\n\n if (util.isNumberMatch(number, candidate.substring(index)) != MatchType.NSN_MATCH) {\n return false;\n } // This is the extension sign case, in which the 'x' or 'X' should always precede the\n // extension number.\n\n } else if (parseDigits(candidate.substring(index)) !== number.ext) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nfunction isNationalPrefixPresentIfRequired(number, _metadata) {\n // First, check how we deduced the country code. If it was written in international format, then\n // the national prefix is not required.\n if (number.getCountryCodeSource() != 'FROM_DEFAULT_COUNTRY') {\n return true;\n }\n\n var phoneNumberRegion = util.getRegionCodeForCountryCode(number.getCountryCode());\n var metadata = util.getMetadataForRegion(phoneNumberRegion);\n\n if (metadata == null) {\n return true;\n } // Check if a national prefix should be present when formatting this number.\n\n\n var nationalNumber = util.getNationalSignificantNumber(number);\n var formatRule = util.chooseFormattingPatternForNumber(metadata.numberFormats(), nationalNumber); // To do this, we check that a national prefix formatting rule was present\n // and that it wasn't just the first-group symbol ($1) with punctuation.\n\n if (formatRule && formatRule.getNationalPrefixFormattingRule().length > 0) {\n if (formatRule.getNationalPrefixOptionalWhenFormatting()) {\n // The national-prefix is optional in these cases, so we don't need to check if it was\n // present.\n return true;\n }\n\n if (PhoneNumberUtil.formattingRuleHasFirstGroupOnly(formatRule.getNationalPrefixFormattingRule())) {\n // National Prefix not needed for this number.\n return true;\n } // Normalize the remainder.\n\n\n var rawInputCopy = PhoneNumberUtil.normalizeDigitsOnly(number.getRawInput()); // Check if we found a national prefix and/or carrier code at the start of the raw input, and\n // return the result.\n\n return util.maybeStripNationalPrefixAndCarrierCode(rawInputCopy, metadata, null);\n }\n\n return true;\n}\n\nexport function containsMoreThanOneSlashInNationalNumber(number, candidate) {\n var firstSlashInBodyIndex = candidate.indexOf('/');\n\n if (firstSlashInBodyIndex < 0) {\n // No slashes, this is okay.\n return false;\n } // Now look for a second one.\n\n\n var secondSlashInBodyIndex = candidate.indexOf('/', firstSlashInBodyIndex + 1);\n\n if (secondSlashInBodyIndex < 0) {\n // Only one slash, this is okay.\n return false;\n } // If the first slash is after the country calling code, this is permitted.\n\n\n var candidateHasCountryCode = number.getCountryCodeSource() === CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN || number.getCountryCodeSource() === CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN;\n\n if (candidateHasCountryCode && PhoneNumberUtil.normalizeDigitsOnly(candidate.substring(0, firstSlashInBodyIndex)) === String(number.getCountryCode())) {\n // Any more slashes and this is illegal.\n return candidate.slice(secondSlashInBodyIndex + 1).indexOf('/') >= 0;\n }\n\n return true;\n}\n\nfunction checkNumberGroupingIsValid(number, candidate, metadata, checkGroups, regExpCache) {\n var normalizedCandidate = normalizeDigits(candidate, true\n /* keep non-digits */\n );\n var formattedNumberGroups = getNationalNumberGroups(metadata, number, null);\n\n if (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) {\n return true;\n } // If this didn't pass, see if there are any alternate formats that match, and try them instead.\n\n\n var alternateFormats = MetadataManager.getAlternateFormatsForCountry(number.getCountryCode());\n var nationalSignificantNumber = util.getNationalSignificantNumber(number);\n\n if (alternateFormats) {\n for (var _iterator = _createForOfIteratorHelperLoose(alternateFormats.numberFormats()), _step; !(_step = _iterator()).done;) {\n var alternateFormat = _step.value;\n\n if (alternateFormat.leadingDigitsPatterns().length > 0) {\n // There is only one leading digits pattern for alternate formats.\n var leadingDigitsRegExp = regExpCache.getPatternForRegExp('^' + alternateFormat.leadingDigitsPatterns()[0]);\n\n if (!leadingDigitsRegExp.test(nationalSignificantNumber)) {\n // Leading digits don't match; try another one.\n continue;\n }\n }\n\n formattedNumberGroups = getNationalNumberGroups(metadata, number, alternateFormat);\n\n if (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) {\n return true;\n }\n }\n }\n\n return false;\n}\n/**\r\n * Helper method to get the national-number part of a number, formatted without any national\r\n * prefix, and return it as a set of digit blocks that would be formatted together following\r\n * standard formatting rules.\r\n */\n\n\nfunction getNationalNumberGroups(metadata, number, formattingPattern) {\n if (formattingPattern) {\n // We format the NSN only, and split that according to the separator.\n var nationalSignificantNumber = util.getNationalSignificantNumber(number);\n return util.formatNsnUsingPattern(nationalSignificantNumber, formattingPattern, 'RFC3966', metadata).split('-');\n } // This will be in the format +CC-DG1-DG2-DGX;ext=EXT where DG1..DGX represents groups of digits.\n\n\n var rfc3966Format = formatNumber(number, 'RFC3966', metadata); // We remove the extension part from the formatted string before splitting it into different\n // groups.\n\n var endIndex = rfc3966Format.indexOf(';');\n\n if (endIndex < 0) {\n endIndex = rfc3966Format.length;\n } // The country-code will have a '-' following it.\n\n\n var startIndex = rfc3966Format.indexOf('-') + 1;\n return rfc3966Format.slice(startIndex, endIndex).split('-');\n}\n\nfunction allNumberGroupsAreExactlyPresent(metadata, number, normalizedCandidate, formattedNumberGroups) {\n var candidateGroups = normalizedCandidate.split(NON_DIGITS_PATTERN); // Set this to the last group, skipping it if the number has an extension.\n\n var candidateNumberGroupIndex = number.hasExtension() ? candidateGroups.length - 2 : candidateGroups.length - 1; // First we check if the national significant number is formatted as a block.\n // We use contains and not equals, since the national significant number may be present with\n // a prefix such as a national number prefix, or the country code itself.\n\n if (candidateGroups.length == 1 || candidateGroups[candidateNumberGroupIndex].contains(util.getNationalSignificantNumber(number))) {\n return true;\n } // Starting from the end, go through in reverse, excluding the first group, and check the\n // candidate and number groups are the same.\n\n\n var formattedNumberGroupIndex = formattedNumberGroups.length - 1;\n\n while (formattedNumberGroupIndex > 0 && candidateNumberGroupIndex >= 0) {\n if (candidateGroups[candidateNumberGroupIndex] !== formattedNumberGroups[formattedNumberGroupIndex]) {\n return false;\n }\n\n formattedNumberGroupIndex--;\n candidateNumberGroupIndex--;\n } // Now check the first group. There may be a national prefix at the start, so we only check\n // that the candidate group ends with the formatted number group.\n\n\n return candidateNumberGroupIndex >= 0 && endsWith(candidateGroups[candidateNumberGroupIndex], formattedNumberGroups[0]);\n}\n\nfunction allNumberGroupsRemainGrouped(metadata, number, normalizedCandidate, formattedNumberGroups) {\n var fromIndex = 0;\n\n if (number.getCountryCodeSource() !== CountryCodeSource.FROM_DEFAULT_COUNTRY) {\n // First skip the country code if the normalized candidate contained it.\n var countryCode = String(number.getCountryCode());\n fromIndex = normalizedCandidate.indexOf(countryCode) + countryCode.length();\n } // Check each group of consecutive digits are not broken into separate groupings in the\n // {@code normalizedCandidate} string.\n\n\n for (var i = 0; i < formattedNumberGroups.length; i++) {\n // Fails if the substring of {@code normalizedCandidate} starting from {@code fromIndex}\n // doesn't contain the consecutive digits in formattedNumberGroups[i].\n fromIndex = normalizedCandidate.indexOf(formattedNumberGroups[i], fromIndex);\n\n if (fromIndex < 0) {\n return false;\n } // Moves {@code fromIndex} forward.\n\n\n fromIndex += formattedNumberGroups[i].length();\n\n if (i == 0 && fromIndex < normalizedCandidate.length()) {\n // We are at the position right after the NDC. We get the region used for formatting\n // information based on the country code in the phone number, rather than the number itself,\n // as we do not need to distinguish between different countries with the same country\n // calling code and this is faster.\n var region = util.getRegionCodeForCountryCode(number.getCountryCode());\n\n if (util.getNddPrefixForRegion(region, true) != null && Character.isDigit(normalizedCandidate.charAt(fromIndex))) {\n // This means there is no formatting symbol after the NDC. In this case, we only\n // accept the number if there is no formatting symbol at all in the number, except\n // for extensions. This is only important for countries with national prefixes.\n var nationalSignificantNumber = util.getNationalSignificantNumber(number);\n return startsWith(normalizedCandidate.slice(fromIndex - formattedNumberGroups[i].length), nationalSignificantNumber);\n }\n }\n } // The check here makes sure that we haven't mistakenly already used the extension to\n // match the last group of the subscriber number. Note the extension cannot have\n // formatting in-between digits.\n\n\n return normalizedCandidate.slice(fromIndex).contains(number.getExtension());\n}\n//# sourceMappingURL=Leniency.js.map","import { trimAfterFirstMatch } from './util.js'; // Regular expression of characters typically used to start a second phone number for the purposes\n// of parsing. This allows us to strip off parts of the number that are actually the start of\n// another number, such as for: (530) 583-6985 x302/x2303 -> the second extension here makes this\n// actually two phone numbers, (530) 583-6985 x302 and (530) 583-6985 x2303. We remove the second\n// extension so that the first number is parsed correctly.\n//\n// Matches a slash (\\ or /) followed by a space followed by an `x`.\n//\n\nvar SECOND_NUMBER_START_PATTERN = /[\\\\/] *x/;\nexport default function parsePreCandidate(candidate) {\n // Check for extra numbers at the end.\n // TODO: This is the place to start when trying to support extraction of multiple phone number\n // from split notations (+41 79 123 45 67 / 68).\n return trimAfterFirstMatch(SECOND_NUMBER_START_PATTERN, candidate);\n}\n//# sourceMappingURL=parsePreCandidate.js.map","// Matches strings that look like dates using \"/\" as a separator.\n// Examples: 3/10/2011, 31/10/96 or 08/31/95.\nvar SLASH_SEPARATED_DATES = /(?:(?:[0-3]?\\d\\/[01]?\\d)|(?:[01]?\\d\\/[0-3]?\\d))\\/(?:[12]\\d)?\\d{2}/; // Matches timestamps.\n// Examples: \"2012-01-02 08:00\".\n// Note that the reg-ex does not include the\n// trailing \":\\d\\d\" -- that is covered by TIME_STAMPS_SUFFIX.\n\nvar TIME_STAMPS = /[12]\\d{3}[-/]?[01]\\d[-/]?[0-3]\\d +[0-2]\\d$/;\nvar TIME_STAMPS_SUFFIX_LEADING = /^:[0-5]\\d/;\nexport default function isValidPreCandidate(candidate, offset, text) {\n // Skip a match that is more likely to be a date.\n if (SLASH_SEPARATED_DATES.test(candidate)) {\n return false;\n } // Skip potential time-stamps.\n\n\n if (TIME_STAMPS.test(candidate)) {\n var followingText = text.slice(offset + candidate.length);\n\n if (TIME_STAMPS_SUFFIX_LEADING.test(followingText)) {\n return false;\n }\n }\n\n return true;\n}\n//# sourceMappingURL=isValidPreCandidate.js.map","// Copy-pasted from `PhoneNumberMatcher.js`.\nimport { PLUS_CHARS } from '../constants.js';\nimport { limit } from './util.js';\nimport { isLatinLetter, isInvalidPunctuationSymbol } from './utf-8.js';\nvar OPENING_PARENS = \"(\\\\[\\uFF08\\uFF3B\";\nvar CLOSING_PARENS = \")\\\\]\\uFF09\\uFF3D\";\nvar NON_PARENS = \"[^\".concat(OPENING_PARENS).concat(CLOSING_PARENS, \"]\");\nexport var LEAD_CLASS = \"[\".concat(OPENING_PARENS).concat(PLUS_CHARS, \"]\"); // Punctuation that may be at the start of a phone number - brackets and plus signs.\n\nvar LEAD_CLASS_LEADING = new RegExp('^' + LEAD_CLASS); // Limit on the number of pairs of brackets in a phone number.\n\nvar BRACKET_PAIR_LIMIT = limit(0, 3);\n/**\r\n * Pattern to check that brackets match. Opening brackets should be closed within a phone number.\r\n * This also checks that there is something inside the brackets. Having no brackets at all is also\r\n * fine.\r\n *\r\n * An opening bracket at the beginning may not be closed, but subsequent ones should be. It's\r\n * also possible that the leading bracket was dropped, so we shouldn't be surprised if we see a\r\n * closing bracket first. We limit the sets of brackets in a phone number to four.\r\n */\n\nvar MATCHING_BRACKETS_ENTIRE = new RegExp('^' + \"(?:[\" + OPENING_PARENS + \"])?\" + \"(?:\" + NON_PARENS + \"+\" + \"[\" + CLOSING_PARENS + \"])?\" + NON_PARENS + \"+\" + \"(?:[\" + OPENING_PARENS + \"]\" + NON_PARENS + \"+[\" + CLOSING_PARENS + \"])\" + BRACKET_PAIR_LIMIT + NON_PARENS + \"*\" + '$');\n/**\r\n * Matches strings that look like publication pages. Example:\r\n *

Computing Complete Answers to Queries in the Presence of Limited Access Patterns.\r\n * Chen Li. VLDB J. 12(3): 211-227 (2003).
\r\n *\r\n * The string \"211-227 (2003)\" is not a telephone number.\r\n */\n\nvar PUB_PAGES = /\\d{1,5}-+\\d{1,5}\\s{0,4}\\(\\d{1,4}/;\nexport default function isValidCandidate(candidate, offset, text, leniency) {\n // Check the candidate doesn't contain any formatting\n // which would indicate that it really isn't a phone number.\n if (!MATCHING_BRACKETS_ENTIRE.test(candidate) || PUB_PAGES.test(candidate)) {\n return;\n } // If leniency is set to VALID or stricter, we also want to skip numbers that are surrounded\n // by Latin alphabetic characters, to skip cases like abc8005001234 or 8005001234def.\n\n\n if (leniency !== 'POSSIBLE') {\n // If the candidate is not at the start of the text,\n // and does not start with phone-number punctuation,\n // check the previous character.\n if (offset > 0 && !LEAD_CLASS_LEADING.test(candidate)) {\n var previousChar = text[offset - 1]; // We return null if it is a latin letter or an invalid punctuation symbol.\n\n if (isInvalidPunctuationSymbol(previousChar) || isLatinLetter(previousChar)) {\n return false;\n }\n }\n\n var lastCharIndex = offset + candidate.length;\n\n if (lastCharIndex < text.length) {\n var nextChar = text[lastCharIndex];\n\n if (isInvalidPunctuationSymbol(nextChar) || isLatinLetter(nextChar)) {\n return false;\n }\n }\n }\n\n return true;\n}\n//# sourceMappingURL=isValidCandidate.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/**\r\n * A port of Google's `PhoneNumberMatcher.java`.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberMatcher.java\r\n * Date: 08.03.2018.\r\n */\nimport PhoneNumber from './PhoneNumber.js';\nimport { MAX_LENGTH_FOR_NSN, MAX_LENGTH_COUNTRY_CODE, VALID_PUNCTUATION } from './constants.js';\nimport createExtensionPattern from './helpers/extension/createExtensionPattern.js';\nimport RegExpCache from './findNumbers/RegExpCache.js';\nimport { limit, trimAfterFirstMatch } from './findNumbers/util.js';\nimport { _pL, _pN, pZ, PZ, pNd } from './findNumbers/utf-8.js';\nimport Leniency from './findNumbers/Leniency.js';\nimport parsePreCandidate from './findNumbers/parsePreCandidate.js';\nimport isValidPreCandidate from './findNumbers/isValidPreCandidate.js';\nimport isValidCandidate, { LEAD_CLASS } from './findNumbers/isValidCandidate.js';\nimport { isSupportedCountry } from './metadata.js';\nimport parseNumber from './parse_.js';\nvar EXTN_PATTERNS_FOR_MATCHING = createExtensionPattern('matching');\n/**\r\n * Patterns used to extract phone numbers from a larger phone-number-like pattern. These are\r\n * ordered according to specificity. For example, white-space is last since that is frequently\r\n * used in numbers, not just to separate two numbers. We have separate patterns since we don't\r\n * want to break up the phone-number-like text on more than one different kind of symbol at one\r\n * time, although symbols of the same type (e.g. space) can be safely grouped together.\r\n *\r\n * Note that if there is a match, we will always check any text found up to the first match as\r\n * well.\r\n */\n\nvar INNER_MATCHES = [// Breaks on the slash - e.g. \"651-234-2345/332-445-1234\"\n'\\\\/+(.*)/', // Note that the bracket here is inside the capturing group, since we consider it part of the\n// phone number. Will match a pattern like \"(650) 223 3345 (754) 223 3321\".\n'(\\\\([^(]*)', // Breaks on a hyphen - e.g. \"12345 - 332-445-1234 is my number.\"\n// We require a space on either side of the hyphen for it to be considered a separator.\n\"(?:\".concat(pZ, \"-|-\").concat(pZ, \")\").concat(pZ, \"*(.+)\"), // Various types of wide hyphens. Note we have decided not to enforce a space here, since it's\n// possible that it's supposed to be used to break two numbers without spaces, and we haven't\n// seen many instances of it used within a number.\n\"[\\u2012-\\u2015\\uFF0D]\".concat(pZ, \"*(.+)\"), // Breaks on a full stop - e.g. \"12345. 332-445-1234 is my number.\"\n\"\\\\.+\".concat(pZ, \"*([^.]+)\"), // Breaks on space - e.g. \"3324451234 8002341234\"\n\"\".concat(pZ, \"+(\").concat(PZ, \"+)\")]; // Limit on the number of leading (plus) characters.\n\nvar leadLimit = limit(0, 2); // Limit on the number of consecutive punctuation characters.\n\nvar punctuationLimit = limit(0, 4);\n/* The maximum number of digits allowed in a digit-separated block. As we allow all digits in a\r\n * single block, set high enough to accommodate the entire national number and the international\r\n * country code. */\n\nvar digitBlockLimit = MAX_LENGTH_FOR_NSN + MAX_LENGTH_COUNTRY_CODE; // Limit on the number of blocks separated by punctuation.\n// Uses digitBlockLimit since some formats use spaces to separate each digit.\n\nvar blockLimit = limit(0, digitBlockLimit);\n/* A punctuation sequence allowing white space. */\n\nvar punctuation = \"[\".concat(VALID_PUNCTUATION, \"]\") + punctuationLimit; // A digits block without punctuation.\n\nvar digitSequence = pNd + limit(1, digitBlockLimit);\n/**\r\n * Phone number pattern allowing optional punctuation.\r\n * The phone number pattern used by `find()`, similar to\r\n * VALID_PHONE_NUMBER, but with the following differences:\r\n *
    \r\n *
  • All captures are limited in order to place an upper bound to the text matched by the\r\n * pattern.\r\n *
      \r\n *
    • Leading punctuation / plus signs are limited.\r\n *
    • Consecutive occurrences of punctuation are limited.\r\n *
    • Number of digits is limited.\r\n *
    \r\n *
  • No whitespace is allowed at the start or end.\r\n *
  • No alpha digits (vanity numbers such as 1-800-SIX-FLAGS) are currently supported.\r\n *
\r\n */\n\nvar PATTERN = '(?:' + LEAD_CLASS + punctuation + ')' + leadLimit + digitSequence + '(?:' + punctuation + digitSequence + ')' + blockLimit + '(?:' + EXTN_PATTERNS_FOR_MATCHING + ')?'; // Regular expression of trailing characters that we want to remove.\n// We remove all characters that are not alpha or numerical characters.\n// The hash character is retained here, as it may signify\n// the previous block was an extension.\n//\n// // Don't know what does '&&' mean here.\n// const UNWANTED_END_CHAR_PATTERN = new RegExp(`[[\\\\P{N}&&\\\\P{L}]&&[^#]]+$`)\n//\n\nvar UNWANTED_END_CHAR_PATTERN = new RegExp(\"[^\".concat(_pN).concat(_pL, \"#]+$\"));\nvar NON_DIGITS_PATTERN = /(\\D+)/;\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1;\n/**\r\n * A stateful class that finds and extracts telephone numbers from {@linkplain CharSequence text}.\r\n * Instances can be created using the {@linkplain PhoneNumberUtil#findNumbers factory methods} in\r\n * {@link PhoneNumberUtil}.\r\n *\r\n *

Vanity numbers (phone numbers using alphabetic digits such as 1-800-SIX-FLAGS are\r\n * not found.\r\n *\r\n *

This class is not thread-safe.\r\n */\n\nvar PhoneNumberMatcher = /*#__PURE__*/function () {\n /**\r\n * Creates a new instance. See the factory methods in {@link PhoneNumberUtil} on how to obtain a\r\n * new instance.\r\n *\r\n * @param util the phone number util to use\r\n * @param text the character sequence that we will search, null for no text\r\n * @param country the country to assume for phone numbers not written in international format\r\n * (with a leading plus, or with the international dialing prefix of the specified region).\r\n * May be null or \"ZZ\" if only numbers with a leading plus should be\r\n * considered.\r\n * @param leniency the leniency to use when evaluating candidate phone numbers\r\n * @param maxTries the maximum number of invalid numbers to try before giving up on the text.\r\n * This is to cover degenerate cases where the text has a lot of false positives in it. Must\r\n * be {@code >= 0}.\r\n */\n function PhoneNumberMatcher() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var metadata = arguments.length > 2 ? arguments[2] : undefined;\n\n _classCallCheck(this, PhoneNumberMatcher);\n\n options = _objectSpread(_objectSpread({}, options), {}, {\n defaultCallingCode: options.defaultCallingCode,\n defaultCountry: options.defaultCountry && isSupportedCountry(options.defaultCountry, metadata) ? options.defaultCountry : undefined,\n leniency: options.leniency || options.extended ? 'POSSIBLE' : 'VALID',\n maxTries: options.maxTries || MAX_SAFE_INTEGER\n });\n\n if (!options.leniency) {\n throw new TypeError('`Leniency` not supplied');\n }\n\n if (options.maxTries < 0) {\n throw new TypeError('`maxTries` not supplied');\n }\n\n this.text = text;\n this.options = options;\n this.metadata = metadata;\n /** The degree of validation requested. */\n\n this.leniency = Leniency[options.leniency];\n\n if (!this.leniency) {\n throw new TypeError(\"Unknown leniency: \".concat(options.leniency, \".\"));\n }\n /** The maximum number of retries after matching an invalid number. */\n\n\n this.maxTries = options.maxTries;\n this.PATTERN = new RegExp(PATTERN, 'ig');\n /** The iteration tristate. */\n\n this.state = 'NOT_READY';\n /** The next index to start searching at. Undefined in {@link State#DONE}. */\n\n this.searchIndex = 0; // A cache for frequently used country-specific regular expressions. Set to 32 to cover ~2-3\n // countries being used for the same doc with ~10 patterns for each country. Some pages will have\n // a lot more countries in use, but typically fewer numbers for each so expanding the cache for\n // that use-case won't have a lot of benefit.\n\n this.regExpCache = new RegExpCache(32);\n }\n /**\r\n * Attempts to find the next subsequence in the searched sequence on or after {@code searchIndex}\r\n * that represents a phone number. Returns the next match, null if none was found.\r\n *\r\n * @param index the search index to start searching at\r\n * @return the phone number match found, null if none can be found\r\n */\n\n\n _createClass(PhoneNumberMatcher, [{\n key: \"find\",\n value: function find() {\n // // Reset the regular expression.\n // this.PATTERN.lastIndex = index\n var matches;\n\n while (this.maxTries > 0 && (matches = this.PATTERN.exec(this.text)) !== null) {\n var candidate = matches[0];\n var offset = matches.index;\n candidate = parsePreCandidate(candidate);\n\n if (isValidPreCandidate(candidate, offset, this.text)) {\n var match = // Try to come up with a valid match given the entire candidate.\n this.parseAndVerify(candidate, offset, this.text) // If that failed, try to find an \"inner match\" -\n // there might be a phone number within this candidate.\n || this.extractInnerMatch(candidate, offset, this.text);\n\n if (match) {\n if (this.options.v2) {\n var phoneNumber = new PhoneNumber(match.country || match.countryCallingCode, match.phone, this.metadata);\n\n if (match.ext) {\n phoneNumber.ext = match.ext;\n }\n\n return {\n startsAt: match.startsAt,\n endsAt: match.endsAt,\n number: phoneNumber\n };\n }\n\n return match;\n }\n }\n\n this.maxTries--;\n }\n }\n /**\r\n * Attempts to extract a match from `substring`\r\n * if the substring itself does not qualify as a match.\r\n */\n\n }, {\n key: \"extractInnerMatch\",\n value: function extractInnerMatch(substring, offset, text) {\n for (var _iterator = _createForOfIteratorHelperLoose(INNER_MATCHES), _step; !(_step = _iterator()).done;) {\n var innerMatchPattern = _step.value;\n var isFirstMatch = true;\n var candidateMatch = void 0;\n var innerMatchRegExp = new RegExp(innerMatchPattern, 'g');\n\n while (this.maxTries > 0 && (candidateMatch = innerMatchRegExp.exec(substring)) !== null) {\n if (isFirstMatch) {\n // We should handle any group before this one too.\n var _candidate = trimAfterFirstMatch(UNWANTED_END_CHAR_PATTERN, substring.slice(0, candidateMatch.index));\n\n var _match = this.parseAndVerify(_candidate, offset, text);\n\n if (_match) {\n return _match;\n }\n\n this.maxTries--;\n isFirstMatch = false;\n }\n\n var candidate = trimAfterFirstMatch(UNWANTED_END_CHAR_PATTERN, candidateMatch[1]); // Java code does `groupMatcher.start(1)` here,\n // but there's no way in javascript to get a `candidate` start index,\n // therefore resort to using this kind of an approximation.\n // (`groupMatcher` is called `candidateInSubstringMatch` in this javascript port)\n // https://stackoverflow.com/questions/15934353/get-index-of-each-capture-in-a-javascript-regex\n\n var candidateIndexGuess = substring.indexOf(candidate, candidateMatch.index);\n var match = this.parseAndVerify(candidate, offset + candidateIndexGuess, text);\n\n if (match) {\n return match;\n }\n\n this.maxTries--;\n }\n }\n }\n /**\r\n * Parses a phone number from the `candidate` using `parseNumber` and\r\n * verifies it matches the requested `leniency`. If parsing and verification succeed,\r\n * a corresponding `PhoneNumberMatch` is returned, otherwise this method returns `null`.\r\n *\r\n * @param candidate the candidate match\r\n * @param offset the offset of {@code candidate} within {@link #text}\r\n * @return the parsed and validated phone number match, or null\r\n */\n\n }, {\n key: \"parseAndVerify\",\n value: function parseAndVerify(candidate, offset, text) {\n if (!isValidCandidate(candidate, offset, text, this.options.leniency)) {\n return;\n }\n\n var number = parseNumber(candidate, {\n extended: true,\n defaultCountry: this.options.defaultCountry,\n defaultCallingCode: this.options.defaultCallingCode\n }, this.metadata);\n\n if (!number.possible) {\n return;\n }\n\n if (this.leniency(number, candidate, this.metadata, this.regExpCache)) {\n // // We used parseAndKeepRawInput to create this number,\n // // but for now we don't return the extra values parsed.\n // // TODO: stop clearing all values here and switch all users over\n // // to using rawInput() rather than the rawString() of PhoneNumberMatch.\n // number.clearCountryCodeSource()\n // number.clearRawInput()\n // number.clearPreferredDomesticCarrierCode()\n var result = {\n startsAt: offset,\n endsAt: offset + candidate.length,\n phone: number.phone\n };\n\n if (number.country && number.country !== '001') {\n result.country = number.country;\n } else {\n result.countryCallingCode = number.countryCallingCode;\n }\n\n if (number.ext) {\n result.ext = number.ext;\n }\n\n return result;\n }\n }\n }, {\n key: \"hasNext\",\n value: function hasNext() {\n if (this.state === 'NOT_READY') {\n this.lastMatch = this.find(); // (this.searchIndex)\n\n if (this.lastMatch) {\n // this.searchIndex = this.lastMatch.endsAt\n this.state = 'READY';\n } else {\n this.state = 'DONE';\n }\n }\n\n return this.state === 'READY';\n }\n }, {\n key: \"next\",\n value: function next() {\n // Check the state and find the next match as a side-effect if necessary.\n if (!this.hasNext()) {\n throw new Error('No next element');\n } // Don't retain that memory any longer than necessary.\n\n\n var result = this.lastMatch;\n this.lastMatch = null;\n this.state = 'NOT_READY';\n return result;\n }\n }]);\n\n return PhoneNumberMatcher;\n}();\n\nexport { PhoneNumberMatcher as default };\n//# sourceMappingURL=PhoneNumberMatcher.js.map","import PhoneNumberMatcher from './PhoneNumberMatcher.js';\nexport default function findNumbers(text, options, metadata) {\n var matcher = new PhoneNumberMatcher(text, options, metadata);\n var results = [];\n\n while (matcher.hasNext()) {\n results.push(matcher.next());\n }\n\n return results;\n}\n//# sourceMappingURL=findNumbers_.js.map","import _findNumbers from './findNumbers_.js';\nimport { normalizeArguments } from './parsePhoneNumber.js';\nexport default function findNumbers() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return _findNumbers(text, options, metadata);\n}\n//# sourceMappingURL=findNumbers.js.map","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { normalizeArguments } from './parsePhoneNumber.js';\nimport PhoneNumberMatcher from './PhoneNumberMatcher.js';\n/**\r\n * @return ES6 `for ... of` iterator.\r\n */\n\nexport default function searchNumbers() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n var matcher = new PhoneNumberMatcher(text, options, metadata);\n return _defineProperty({}, Symbol.iterator, function () {\n return {\n next: function next() {\n if (matcher.hasNext()) {\n return {\n done: false,\n value: matcher.next()\n };\n }\n\n return {\n done: true\n };\n }\n };\n });\n}\n//# sourceMappingURL=searchNumbers.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport findNumbers from './findNumbers.js';\nexport default function findPhoneNumbersInText(text, defaultCountry, options, metadata) {\n var args = getArguments(defaultCountry, options, metadata);\n return findNumbers(text, args.options, args.metadata);\n}\nexport function getArguments(defaultCountry, options, metadata) {\n if (metadata) {\n if (defaultCountry) {\n options = _objectSpread(_objectSpread({}, options), {}, {\n defaultCountry: defaultCountry\n });\n }\n } else {\n if (options) {\n metadata = options;\n\n if (defaultCountry) {\n if (is_object(defaultCountry)) {\n options = defaultCountry;\n } else {\n options = {\n defaultCountry: defaultCountry\n };\n }\n } else {\n options = undefined;\n }\n } else {\n metadata = defaultCountry;\n options = undefined;\n }\n }\n\n return {\n options: _objectSpread(_objectSpread({}, options), {}, {\n v2: true\n }),\n metadata: metadata\n };\n} // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\nvar is_object = function is_object(_) {\n return _typeof(_) === 'object';\n};\n//# sourceMappingURL=findPhoneNumbersInText.js.map","import searchNumbers from './searchNumbers.js';\nimport { getArguments } from './findPhoneNumbersInText.js';\nexport default function searchPhoneNumbersInText(text, defaultCountry, options, metadata) {\n var args = getArguments(defaultCountry, options, metadata);\n return searchNumbers(text, args.options, args.metadata);\n}\n//# sourceMappingURL=searchPhoneNumbersInText.js.map","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nvar AsYouTypeState = /*#__PURE__*/function () {\n function AsYouTypeState(_ref) {\n var onCountryChange = _ref.onCountryChange,\n onCallingCodeChange = _ref.onCallingCodeChange;\n\n _classCallCheck(this, AsYouTypeState);\n\n this.onCountryChange = onCountryChange;\n this.onCallingCodeChange = onCallingCodeChange;\n }\n\n _createClass(AsYouTypeState, [{\n key: \"reset\",\n value: function reset(defaultCountry, defaultCallingCode) {\n this.international = false;\n this.IDDPrefix = undefined;\n this.missingPlus = undefined;\n this.callingCode = undefined;\n this.digits = '';\n this.resetNationalSignificantNumber();\n this.initCountryAndCallingCode(defaultCountry, defaultCallingCode);\n }\n }, {\n key: \"resetNationalSignificantNumber\",\n value: function resetNationalSignificantNumber() {\n this.nationalSignificantNumber = this.getNationalDigits();\n this.nationalSignificantNumberMatchesInput = true;\n this.nationalPrefix = undefined;\n this.carrierCode = undefined;\n this.complexPrefixBeforeNationalSignificantNumber = undefined;\n }\n }, {\n key: \"update\",\n value: function update(properties) {\n for (var _i = 0, _Object$keys = Object.keys(properties); _i < _Object$keys.length; _i++) {\n var key = _Object$keys[_i];\n this[key] = properties[key];\n }\n }\n }, {\n key: \"initCountryAndCallingCode\",\n value: function initCountryAndCallingCode(country, callingCode) {\n this.setCountry(country);\n this.setCallingCode(callingCode);\n }\n }, {\n key: \"setCountry\",\n value: function setCountry(country) {\n this.country = country;\n this.onCountryChange(country);\n }\n }, {\n key: \"setCallingCode\",\n value: function setCallingCode(callingCode) {\n this.callingCode = callingCode;\n this.onCallingCodeChange(callingCode, this.country);\n }\n }, {\n key: \"startInternationalNumber\",\n value: function startInternationalNumber(country, callingCode) {\n // Prepend the `+` to parsed input.\n this.international = true; // If a default country was set then reset it\n // because an explicitly international phone\n // number is being entered.\n\n this.initCountryAndCallingCode(country, callingCode);\n }\n }, {\n key: \"appendDigits\",\n value: function appendDigits(nextDigits) {\n this.digits += nextDigits;\n }\n }, {\n key: \"appendNationalSignificantNumberDigits\",\n value: function appendNationalSignificantNumberDigits(nextDigits) {\n this.nationalSignificantNumber += nextDigits;\n }\n /**\r\n * Returns the part of `this.digits` that corresponds to the national number.\r\n * Basically, all digits that have been input by the user, except for the\r\n * international prefix and the country calling code part\r\n * (if the number is an international one).\r\n * @return {string}\r\n */\n\n }, {\n key: \"getNationalDigits\",\n value: function getNationalDigits() {\n if (this.international) {\n return this.digits.slice((this.IDDPrefix ? this.IDDPrefix.length : 0) + (this.callingCode ? this.callingCode.length : 0));\n }\n\n return this.digits;\n }\n }, {\n key: \"getDigitsWithoutInternationalPrefix\",\n value: function getDigitsWithoutInternationalPrefix() {\n if (this.international) {\n if (this.IDDPrefix) {\n return this.digits.slice(this.IDDPrefix.length);\n }\n }\n\n return this.digits;\n }\n }]);\n\n return AsYouTypeState;\n}();\n\nexport { AsYouTypeState as default };\n//# sourceMappingURL=AsYouTypeState.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n// Should be the same as `DIGIT_PLACEHOLDER` in `libphonenumber-metadata-generator`.\nexport var DIGIT_PLACEHOLDER = 'x'; // '\\u2008' (punctuation space)\n\nvar DIGIT_PLACEHOLDER_MATCHER = new RegExp(DIGIT_PLACEHOLDER); // Counts all occurences of a symbol in a string.\n// Unicode-unsafe (because using `.split()`).\n\nexport function countOccurences(symbol, string) {\n var count = 0; // Using `.split('')` to iterate through a string here\n // to avoid requiring `Symbol.iterator` polyfill.\n // `.split('')` is generally not safe for Unicode,\n // but in this particular case for counting brackets it is safe.\n // for (const character of string)\n\n for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) {\n var character = _step.value;\n\n if (character === symbol) {\n count++;\n }\n }\n\n return count;\n} // Repeats a string (or a symbol) N times.\n// http://stackoverflow.com/questions/202605/repeat-string-javascript\n\nexport function repeat(string, times) {\n if (times < 1) {\n return '';\n }\n\n var result = '';\n\n while (times > 1) {\n if (times & 1) {\n result += string;\n }\n\n times >>= 1;\n string += string;\n }\n\n return result + string;\n}\nexport function cutAndStripNonPairedParens(string, cutBeforeIndex) {\n if (string[cutBeforeIndex] === ')') {\n cutBeforeIndex++;\n }\n\n return stripNonPairedParens(string.slice(0, cutBeforeIndex));\n}\nexport function closeNonPairedParens(template, cut_before) {\n var retained_template = template.slice(0, cut_before);\n var opening_braces = countOccurences('(', retained_template);\n var closing_braces = countOccurences(')', retained_template);\n var dangling_braces = opening_braces - closing_braces;\n\n while (dangling_braces > 0 && cut_before < template.length) {\n if (template[cut_before] === ')') {\n dangling_braces--;\n }\n\n cut_before++;\n }\n\n return template.slice(0, cut_before);\n}\nexport function stripNonPairedParens(string) {\n var dangling_braces = [];\n var i = 0;\n\n while (i < string.length) {\n if (string[i] === '(') {\n dangling_braces.push(i);\n } else if (string[i] === ')') {\n dangling_braces.pop();\n }\n\n i++;\n }\n\n var start = 0;\n var cleared_string = '';\n dangling_braces.push(string.length);\n\n for (var _i = 0, _dangling_braces = dangling_braces; _i < _dangling_braces.length; _i++) {\n var index = _dangling_braces[_i];\n cleared_string += string.slice(start, index);\n start = index + 1;\n }\n\n return cleared_string;\n}\nexport function populateTemplateWithDigits(template, position, digits) {\n // Using `.split('')` to iterate through a string here\n // to avoid requiring `Symbol.iterator` polyfill.\n // `.split('')` is generally not safe for Unicode,\n // but in this particular case for `digits` it is safe.\n // for (const digit of digits)\n for (var _iterator2 = _createForOfIteratorHelperLoose(digits.split('')), _step2; !(_step2 = _iterator2()).done;) {\n var digit = _step2.value;\n\n // If there is room for more digits in current `template`,\n // then set the next digit in the `template`,\n // and return the formatted digits so far.\n // If more digits are entered than the current format could handle.\n if (template.slice(position + 1).search(DIGIT_PLACEHOLDER_MATCHER) < 0) {\n return;\n }\n\n position = template.search(DIGIT_PLACEHOLDER_MATCHER);\n template = template.replace(DIGIT_PLACEHOLDER_MATCHER, digit);\n }\n\n return [template, position];\n}\n//# sourceMappingURL=AsYouTypeFormatter.util.js.map","import checkNumberLength from './helpers/checkNumberLength.js';\nimport parseDigits from './helpers/parseDigits.js';\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js';\nexport default function formatCompleteNumber(state, format, _ref) {\n var metadata = _ref.metadata,\n shouldTryNationalPrefixFormattingRule = _ref.shouldTryNationalPrefixFormattingRule,\n getSeparatorAfterNationalPrefix = _ref.getSeparatorAfterNationalPrefix;\n var matcher = new RegExp(\"^(?:\".concat(format.pattern(), \")$\"));\n\n if (matcher.test(state.nationalSignificantNumber)) {\n return formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(state, format, {\n metadata: metadata,\n shouldTryNationalPrefixFormattingRule: shouldTryNationalPrefixFormattingRule,\n getSeparatorAfterNationalPrefix: getSeparatorAfterNationalPrefix\n });\n }\n}\nexport function canFormatCompleteNumber(nationalSignificantNumber, metadata) {\n return checkNumberLength(nationalSignificantNumber, metadata) === 'IS_POSSIBLE';\n}\n\nfunction formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(state, format, _ref2) {\n var metadata = _ref2.metadata,\n shouldTryNationalPrefixFormattingRule = _ref2.shouldTryNationalPrefixFormattingRule,\n getSeparatorAfterNationalPrefix = _ref2.getSeparatorAfterNationalPrefix;\n // `format` has already been checked for `nationalPrefix` requirement.\n var nationalSignificantNumber = state.nationalSignificantNumber,\n international = state.international,\n nationalPrefix = state.nationalPrefix,\n carrierCode = state.carrierCode; // Format the number with using `national_prefix_formatting_rule`.\n // If the resulting formatted number is a valid formatted number, then return it.\n //\n // Google's AsYouType formatter is different in a way that it doesn't try\n // to format using the \"national prefix formatting rule\", and instead it\n // simply prepends a national prefix followed by a \" \" character.\n // This code does that too, but as a fallback.\n // The reason is that \"national prefix formatting rule\" may use parentheses,\n // which wouldn't be included has it used the simpler Google's way.\n //\n\n if (shouldTryNationalPrefixFormattingRule(format)) {\n var formattedNumber = formatNationalNumber(state, format, {\n useNationalPrefixFormattingRule: true,\n getSeparatorAfterNationalPrefix: getSeparatorAfterNationalPrefix,\n metadata: metadata\n });\n\n if (formattedNumber) {\n return formattedNumber;\n }\n } // Format the number without using `national_prefix_formatting_rule`.\n\n\n return formatNationalNumber(state, format, {\n useNationalPrefixFormattingRule: false,\n getSeparatorAfterNationalPrefix: getSeparatorAfterNationalPrefix,\n metadata: metadata\n });\n}\n\nfunction formatNationalNumber(state, format, _ref3) {\n var metadata = _ref3.metadata,\n useNationalPrefixFormattingRule = _ref3.useNationalPrefixFormattingRule,\n getSeparatorAfterNationalPrefix = _ref3.getSeparatorAfterNationalPrefix;\n var formattedNationalNumber = formatNationalNumberUsingFormat(state.nationalSignificantNumber, format, {\n carrierCode: state.carrierCode,\n useInternationalFormat: state.international,\n withNationalPrefix: useNationalPrefixFormattingRule,\n metadata: metadata\n });\n\n if (!useNationalPrefixFormattingRule) {\n if (state.nationalPrefix) {\n // If a national prefix was extracted, then just prepend it,\n // followed by a \" \" character.\n formattedNationalNumber = state.nationalPrefix + getSeparatorAfterNationalPrefix(format) + formattedNationalNumber;\n } else if (state.complexPrefixBeforeNationalSignificantNumber) {\n formattedNationalNumber = state.complexPrefixBeforeNationalSignificantNumber + ' ' + formattedNationalNumber;\n }\n }\n\n if (isValidFormattedNationalNumber(formattedNationalNumber, state)) {\n return formattedNationalNumber;\n }\n} // Check that the formatted phone number contains exactly\n// the same digits that have been input by the user.\n// For example, when \"0111523456789\" is input for `AR` country,\n// the extracted `this.nationalSignificantNumber` is \"91123456789\",\n// which means that the national part of `this.digits` isn't simply equal to\n// `this.nationalPrefix` + `this.nationalSignificantNumber`.\n//\n// Also, a `format` can add extra digits to the `this.nationalSignificantNumber`\n// being formatted via `metadata[country].national_prefix_transform_rule`.\n// For example, for `VI` country, it prepends `340` to the national number,\n// and if this check hasn't been implemented, then there would be a bug\n// when `340` \"area coude\" is \"duplicated\" during input for `VI` country:\n// https://github.com/catamphetamine/libphonenumber-js/issues/318\n//\n// So, all these \"gotchas\" are filtered out.\n//\n// In the original Google's code, the comments say:\n// \"Check that we didn't remove nor add any extra digits when we matched\n// this formatting pattern. This usually happens after we entered the last\n// digit during AYTF. Eg: In case of MX, we swallow mobile token (1) when\n// formatted but AYTF should retain all the number entered and not change\n// in order to match a format (of same leading digits and length) display\n// in that way.\"\n// \"If it's the same (i.e entered number and format is same), then it's\n// safe to return this in formatted number as nothing is lost / added.\"\n// Otherwise, don't use this format.\n// https://github.com/google/libphonenumber/commit/3e7c1f04f5e7200f87fb131e6f85c6e99d60f510#diff-9149457fa9f5d608a11bb975c6ef4bc5\n// https://github.com/google/libphonenumber/commit/3ac88c7106e7dcb553bcc794b15f19185928a1c6#diff-2dcb77e833422ee304da348b905cde0b\n//\n\n\nfunction isValidFormattedNationalNumber(formattedNationalNumber, state) {\n return parseDigits(formattedNationalNumber) === state.getNationalDigits();\n}\n//# sourceMappingURL=AsYouTypeFormatter.complete.js.map","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nvar PatternParser = /*#__PURE__*/function () {\n function PatternParser() {\n _classCallCheck(this, PatternParser);\n }\n\n _createClass(PatternParser, [{\n key: \"parse\",\n value: function parse(pattern) {\n this.context = [{\n or: true,\n instructions: []\n }];\n this.parsePattern(pattern);\n\n if (this.context.length !== 1) {\n throw new Error('Non-finalized contexts left when pattern parse ended');\n }\n\n var _this$context$ = this.context[0],\n branches = _this$context$.branches,\n instructions = _this$context$.instructions;\n\n if (branches) {\n return {\n op: '|',\n args: branches.concat([expandSingleElementArray(instructions)])\n };\n }\n /* istanbul ignore if */\n\n\n if (instructions.length === 0) {\n throw new Error('Pattern is required');\n }\n\n if (instructions.length === 1) {\n return instructions[0];\n }\n\n return instructions;\n }\n }, {\n key: \"startContext\",\n value: function startContext(context) {\n this.context.push(context);\n }\n }, {\n key: \"endContext\",\n value: function endContext() {\n this.context.pop();\n }\n }, {\n key: \"getContext\",\n value: function getContext() {\n return this.context[this.context.length - 1];\n }\n }, {\n key: \"parsePattern\",\n value: function parsePattern(pattern) {\n if (!pattern) {\n throw new Error('Pattern is required');\n }\n\n var match = pattern.match(OPERATOR);\n\n if (!match) {\n if (ILLEGAL_CHARACTER_REGEXP.test(pattern)) {\n throw new Error(\"Illegal characters found in a pattern: \".concat(pattern));\n }\n\n this.getContext().instructions = this.getContext().instructions.concat(pattern.split(''));\n return;\n }\n\n var operator = match[1];\n var before = pattern.slice(0, match.index);\n var rightPart = pattern.slice(match.index + operator.length);\n\n switch (operator) {\n case '(?:':\n if (before) {\n this.parsePattern(before);\n }\n\n this.startContext({\n or: true,\n instructions: [],\n branches: []\n });\n break;\n\n case ')':\n if (!this.getContext().or) {\n throw new Error('\")\" operator must be preceded by \"(?:\" operator');\n }\n\n if (before) {\n this.parsePattern(before);\n }\n\n if (this.getContext().instructions.length === 0) {\n throw new Error('No instructions found after \"|\" operator in an \"or\" group');\n }\n\n var _this$getContext = this.getContext(),\n branches = _this$getContext.branches;\n\n branches.push(expandSingleElementArray(this.getContext().instructions));\n this.endContext();\n this.getContext().instructions.push({\n op: '|',\n args: branches\n });\n break;\n\n case '|':\n if (!this.getContext().or) {\n throw new Error('\"|\" operator can only be used inside \"or\" groups');\n }\n\n if (before) {\n this.parsePattern(before);\n } // The top-level is an implicit \"or\" group, if required.\n\n\n if (!this.getContext().branches) {\n // `branches` are not defined only for the root implicit \"or\" operator.\n\n /* istanbul ignore else */\n if (this.context.length === 1) {\n this.getContext().branches = [];\n } else {\n throw new Error('\"branches\" not found in an \"or\" group context');\n }\n }\n\n this.getContext().branches.push(expandSingleElementArray(this.getContext().instructions));\n this.getContext().instructions = [];\n break;\n\n case '[':\n if (before) {\n this.parsePattern(before);\n }\n\n this.startContext({\n oneOfSet: true\n });\n break;\n\n case ']':\n if (!this.getContext().oneOfSet) {\n throw new Error('\"]\" operator must be preceded by \"[\" operator');\n }\n\n this.endContext();\n this.getContext().instructions.push({\n op: '[]',\n args: parseOneOfSet(before)\n });\n break;\n\n /* istanbul ignore next */\n\n default:\n throw new Error(\"Unknown operator: \".concat(operator));\n }\n\n if (rightPart) {\n this.parsePattern(rightPart);\n }\n }\n }]);\n\n return PatternParser;\n}();\n\nexport { PatternParser as default };\n\nfunction parseOneOfSet(pattern) {\n var values = [];\n var i = 0;\n\n while (i < pattern.length) {\n if (pattern[i] === '-') {\n if (i === 0 || i === pattern.length - 1) {\n throw new Error(\"Couldn't parse a one-of set pattern: \".concat(pattern));\n }\n\n var prevValue = pattern[i - 1].charCodeAt(0) + 1;\n var nextValue = pattern[i + 1].charCodeAt(0) - 1;\n var value = prevValue;\n\n while (value <= nextValue) {\n values.push(String.fromCharCode(value));\n value++;\n }\n } else {\n values.push(pattern[i]);\n }\n\n i++;\n }\n\n return values;\n}\n\nvar ILLEGAL_CHARACTER_REGEXP = /[\\(\\)\\[\\]\\?\\:\\|]/;\nvar OPERATOR = new RegExp( // any of:\n'(' + // or operator\n'\\\\|' + // or\n'|' + // or group start\n'\\\\(\\\\?\\\\:' + // or\n'|' + // or group end\n'\\\\)' + // or\n'|' + // one-of set start\n'\\\\[' + // or\n'|' + // one-of set end\n'\\\\]' + ')');\n\nfunction expandSingleElementArray(array) {\n if (array.length === 1) {\n return array[0];\n }\n\n return array;\n}\n//# sourceMappingURL=AsYouTypeFormatter.PatternParser.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport PatternParser from './AsYouTypeFormatter.PatternParser.js';\n\nvar PatternMatcher = /*#__PURE__*/function () {\n function PatternMatcher(pattern) {\n _classCallCheck(this, PatternMatcher);\n\n this.matchTree = new PatternParser().parse(pattern);\n }\n\n _createClass(PatternMatcher, [{\n key: \"match\",\n value: function match(string) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n allowOverflow = _ref.allowOverflow;\n\n if (!string) {\n throw new Error('String is required');\n }\n\n var result = _match(string.split(''), this.matchTree, true);\n\n if (result && result.match) {\n delete result.matchedChars;\n }\n\n if (result && result.overflow) {\n if (!allowOverflow) {\n return;\n }\n }\n\n return result;\n }\n }]);\n\n return PatternMatcher;\n}();\n/**\r\n * Matches `characters` against a pattern compiled into a `tree`.\r\n * @param {string[]} characters\r\n * @param {Tree} tree — A pattern compiled into a `tree`. See the `*.d.ts` file for the description of the `tree` structure.\r\n * @param {boolean} last — Whether it's the last (rightmost) subtree on its level of the match tree.\r\n * @return {object} See the `*.d.ts` file for the description of the result object.\r\n */\n\n\nexport { PatternMatcher as default };\n\nfunction _match(characters, tree, last) {\n // If `tree` is a string, then `tree` is a single character.\n // That's because when a pattern is parsed, multi-character-string parts\n // of a pattern are compiled into arrays of single characters.\n // I still wrote this piece of code for a \"general\" hypothetical case\n // when `tree` could be a string of several characters, even though\n // such case is not possible with the current implementation.\n if (typeof tree === 'string') {\n var characterString = characters.join('');\n\n if (tree.indexOf(characterString) === 0) {\n // `tree` is always a single character.\n // If `tree.indexOf(characterString) === 0`\n // then `characters.length === tree.length`.\n\n /* istanbul ignore else */\n if (characters.length === tree.length) {\n return {\n match: true,\n matchedChars: characters\n };\n } // `tree` is always a single character.\n // If `tree.indexOf(characterString) === 0`\n // then `characters.length === tree.length`.\n\n /* istanbul ignore next */\n\n\n return {\n partialMatch: true // matchedChars: characters\n\n };\n }\n\n if (characterString.indexOf(tree) === 0) {\n if (last) {\n // The `else` path is not possible because `tree` is always a single character.\n // The `else` case for `characters.length > tree.length` would be\n // `characters.length <= tree.length` which means `characters.length <= 1`.\n // `characters` array can't be empty, so that means `characters === [tree]`,\n // which would also mean `tree.indexOf(characterString) === 0` and that'd mean\n // that the `if (tree.indexOf(characterString) === 0)` condition before this\n // `if` condition would be entered, and returned from there, not reaching this code.\n\n /* istanbul ignore else */\n if (characters.length > tree.length) {\n return {\n overflow: true\n };\n }\n }\n\n return {\n match: true,\n matchedChars: characters.slice(0, tree.length)\n };\n }\n\n return;\n }\n\n if (Array.isArray(tree)) {\n var restCharacters = characters.slice();\n var i = 0;\n\n while (i < tree.length) {\n var subtree = tree[i];\n\n var result = _match(restCharacters, subtree, last && i === tree.length - 1);\n\n if (!result) {\n return;\n } else if (result.overflow) {\n return result;\n } else if (result.match) {\n // Continue with the next subtree with the rest of the characters.\n restCharacters = restCharacters.slice(result.matchedChars.length);\n\n if (restCharacters.length === 0) {\n if (i === tree.length - 1) {\n return {\n match: true,\n matchedChars: characters\n };\n } else {\n return {\n partialMatch: true // matchedChars: characters\n\n };\n }\n }\n } else {\n /* istanbul ignore else */\n if (result.partialMatch) {\n return {\n partialMatch: true // matchedChars: characters\n\n };\n } else {\n throw new Error(\"Unsupported match result:\\n\".concat(JSON.stringify(result, null, 2)));\n }\n }\n\n i++;\n } // If `last` then overflow has already been checked\n // by the last element of the `tree` array.\n\n /* istanbul ignore if */\n\n\n if (last) {\n return {\n overflow: true\n };\n }\n\n return {\n match: true,\n matchedChars: characters.slice(0, characters.length - restCharacters.length)\n };\n }\n\n switch (tree.op) {\n case '|':\n var partialMatch;\n\n for (var _iterator = _createForOfIteratorHelperLoose(tree.args), _step; !(_step = _iterator()).done;) {\n var branch = _step.value;\n\n var _result = _match(characters, branch, last);\n\n if (_result) {\n if (_result.overflow) {\n return _result;\n } else if (_result.match) {\n return {\n match: true,\n matchedChars: _result.matchedChars\n };\n } else {\n /* istanbul ignore else */\n if (_result.partialMatch) {\n partialMatch = true;\n } else {\n throw new Error(\"Unsupported match result:\\n\".concat(JSON.stringify(_result, null, 2)));\n }\n }\n }\n }\n\n if (partialMatch) {\n return {\n partialMatch: true // matchedChars: ...\n\n };\n } // Not even a partial match.\n\n\n return;\n\n case '[]':\n for (var _iterator2 = _createForOfIteratorHelperLoose(tree.args), _step2; !(_step2 = _iterator2()).done;) {\n var _char = _step2.value;\n\n if (characters[0] === _char) {\n if (characters.length === 1) {\n return {\n match: true,\n matchedChars: characters\n };\n }\n\n if (last) {\n return {\n overflow: true\n };\n }\n\n return {\n match: true,\n matchedChars: [_char]\n };\n }\n } // No character matches.\n\n\n return;\n\n /* istanbul ignore next */\n\n default:\n throw new Error(\"Unsupported instruction tree: \".concat(tree));\n }\n}\n//# sourceMappingURL=AsYouTypeFormatter.PatternMatcher.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport { DIGIT_PLACEHOLDER, countOccurences, repeat, cutAndStripNonPairedParens, closeNonPairedParens, stripNonPairedParens, populateTemplateWithDigits } from './AsYouTypeFormatter.util.js';\nimport formatCompleteNumber, { canFormatCompleteNumber } from './AsYouTypeFormatter.complete.js';\nimport PatternMatcher from './AsYouTypeFormatter.PatternMatcher.js';\nimport parseDigits from './helpers/parseDigits.js';\nexport { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.util.js';\nimport { FIRST_GROUP_PATTERN } from './helpers/formatNationalNumberUsingFormat.js';\nimport { VALID_PUNCTUATION } from './constants.js';\nimport applyInternationalSeparatorStyle from './helpers/applyInternationalSeparatorStyle.js'; // Used in phone number format template creation.\n// Could be any digit, I guess.\n\nvar DUMMY_DIGIT = '9'; // I don't know why is it exactly `15`\n\nvar LONGEST_NATIONAL_PHONE_NUMBER_LENGTH = 15; // Create a phone number consisting only of the digit 9 that matches the\n// `number_pattern` by applying the pattern to the \"longest phone number\" string.\n\nvar LONGEST_DUMMY_PHONE_NUMBER = repeat(DUMMY_DIGIT, LONGEST_NATIONAL_PHONE_NUMBER_LENGTH); // A set of characters that, if found in a national prefix formatting rules, are an indicator to\n// us that we should separate the national prefix from the number when formatting.\n\nvar NATIONAL_PREFIX_SEPARATORS_PATTERN = /[- ]/; // Deprecated: Google has removed some formatting pattern related code from their repo.\n// https://github.com/googlei18n/libphonenumber/commit/a395b4fef3caf57c4bc5f082e1152a4d2bd0ba4c\n// \"We no longer have numbers in formatting matching patterns, only \\d.\"\n// Because this library supports generating custom metadata\n// some users may still be using old metadata so the relevant\n// code seems to stay until some next major version update.\n\nvar SUPPORT_LEGACY_FORMATTING_PATTERNS = true; // A pattern that is used to match character classes in regular expressions.\n// An example of a character class is \"[1-4]\".\n\nvar CREATE_CHARACTER_CLASS_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && function () {\n return /\\[([^\\[\\]])*\\]/g;\n}; // Any digit in a regular expression that actually denotes a digit. For\n// example, in the regular expression \"80[0-2]\\d{6,10}\", the first 2 digits\n// (8 and 0) are standalone digits, but the rest are not.\n// Two look-aheads are needed because the number following \\\\d could be a\n// two-digit number, since the phone number can be as long as 15 digits.\n\n\nvar CREATE_STANDALONE_DIGIT_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && function () {\n return /\\d(?=[^,}][^,}])/g;\n}; // A regular expression that is used to determine if a `format` is\n// suitable to be used in the \"as you type formatter\".\n// A `format` is suitable when the resulting formatted number has\n// the same digits as the user has entered.\n//\n// In the simplest case, that would mean that the format\n// doesn't add any additional digits when formatting a number.\n// Google says that it also shouldn't add \"star\" (`*`) characters,\n// like it does in some Israeli formats.\n// Such basic format would only contain \"valid punctuation\"\n// and \"captured group\" identifiers ($1, $2, etc).\n//\n// An example of a format that adds additional digits:\n//\n// Country: `AR` (Argentina).\n// Format:\n// {\n// \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\n// \"leading_digits_patterns\": [\"91\"],\n// \"national_prefix_formatting_rule\": \"0$1\",\n// \"format\": \"$2 15-$3-$4\",\n// \"international_format\": \"$1 $2 $3-$4\"\n// }\n//\n// In the format above, the `format` adds `15` to the digits when formatting a number.\n// A sidenote: this format actually is suitable because `national_prefix_for_parsing`\n// has previously removed `15` from a national number, so re-adding `15` in `format`\n// doesn't actually result in any extra digits added to user's input.\n// But verifying that would be a complex procedure, so the code chooses a simpler path:\n// it simply filters out all `format`s that contain anything but \"captured group\" ids.\n//\n// This regular expression is called `ELIGIBLE_FORMAT_PATTERN` in Google's\n// `libphonenumber` code.\n//\n\n\nvar NON_ALTERING_FORMAT_REG_EXP = new RegExp('[' + VALID_PUNCTUATION + ']*' + // Google developers say:\n// \"We require that the first matching group is present in the\n// output pattern to ensure no data is lost while formatting.\"\n'\\\\$1' + '[' + VALID_PUNCTUATION + ']*' + '(\\\\$\\\\d[' + VALID_PUNCTUATION + ']*)*' + '$'); // This is the minimum length of the leading digits of a phone number\n// to guarantee the first \"leading digits pattern\" for a phone number format\n// to be preemptive.\n\nvar MIN_LEADING_DIGITS_LENGTH = 3;\n\nvar AsYouTypeFormatter = /*#__PURE__*/function () {\n function AsYouTypeFormatter(_ref) {\n var state = _ref.state,\n metadata = _ref.metadata;\n\n _classCallCheck(this, AsYouTypeFormatter);\n\n this.metadata = metadata;\n this.resetFormat();\n }\n\n _createClass(AsYouTypeFormatter, [{\n key: \"resetFormat\",\n value: function resetFormat() {\n this.chosenFormat = undefined;\n this.template = undefined;\n this.nationalNumberTemplate = undefined;\n this.populatedNationalNumberTemplate = undefined;\n this.populatedNationalNumberTemplatePosition = -1;\n }\n }, {\n key: \"reset\",\n value: function reset(numberingPlan, state) {\n this.resetFormat();\n\n if (numberingPlan) {\n this.isNANP = numberingPlan.callingCode() === '1';\n this.matchingFormats = numberingPlan.formats();\n\n if (state.nationalSignificantNumber) {\n this.narrowDownMatchingFormats(state);\n }\n } else {\n this.isNANP = undefined;\n this.matchingFormats = [];\n }\n }\n /**\r\n * Formats an updated phone number.\r\n * @param {string} nextDigits — Additional phone number digits.\r\n * @param {object} state — `AsYouType` state.\r\n * @return {[string]} Returns undefined if the updated phone number can't be formatted using any of the available formats.\r\n */\n\n }, {\n key: \"format\",\n value: function format(nextDigits, state) {\n var _this = this;\n\n // See if the phone number digits can be formatted as a complete phone number.\n // If not, use the results from `formatNationalNumberWithNextDigits()`,\n // which formats based on the chosen formatting pattern.\n //\n // Attempting to format complete phone number first is how it's done\n // in Google's `libphonenumber`, so this library just follows it.\n // Google's `libphonenumber` code doesn't explain in detail why does it\n // attempt to format digits as a complete phone number\n // instead of just going with a previoulsy (or newly) chosen `format`:\n //\n // \"Checks to see if there is an exact pattern match for these digits.\n // If so, we should use this instead of any other formatting template\n // whose leadingDigitsPattern also matches the input.\"\n //\n if (canFormatCompleteNumber(state.nationalSignificantNumber, this.metadata)) {\n for (var _iterator = _createForOfIteratorHelperLoose(this.matchingFormats), _step; !(_step = _iterator()).done;) {\n var format = _step.value;\n var formattedCompleteNumber = formatCompleteNumber(state, format, {\n metadata: this.metadata,\n shouldTryNationalPrefixFormattingRule: function shouldTryNationalPrefixFormattingRule(format) {\n return _this.shouldTryNationalPrefixFormattingRule(format, {\n international: state.international,\n nationalPrefix: state.nationalPrefix\n });\n },\n getSeparatorAfterNationalPrefix: function getSeparatorAfterNationalPrefix(format) {\n return _this.getSeparatorAfterNationalPrefix(format);\n }\n });\n\n if (formattedCompleteNumber) {\n this.resetFormat();\n this.chosenFormat = format;\n this.setNationalNumberTemplate(formattedCompleteNumber.replace(/\\d/g, DIGIT_PLACEHOLDER), state);\n this.populatedNationalNumberTemplate = formattedCompleteNumber; // With a new formatting template, the matched position\n // using the old template needs to be reset.\n\n this.populatedNationalNumberTemplatePosition = this.template.lastIndexOf(DIGIT_PLACEHOLDER);\n return formattedCompleteNumber;\n }\n }\n } // Format the digits as a partial (incomplete) phone number\n // using the previously chosen formatting pattern (or a newly chosen one).\n\n\n return this.formatNationalNumberWithNextDigits(nextDigits, state);\n } // Formats the next phone number digits.\n\n }, {\n key: \"formatNationalNumberWithNextDigits\",\n value: function formatNationalNumberWithNextDigits(nextDigits, state) {\n var previouslyChosenFormat = this.chosenFormat; // Choose a format from the list of matching ones.\n\n var newlyChosenFormat = this.chooseFormat(state);\n\n if (newlyChosenFormat) {\n if (newlyChosenFormat === previouslyChosenFormat) {\n // If it can format the next (current) digits\n // using the previously chosen phone number format\n // then return the updated formatted number.\n return this.formatNextNationalNumberDigits(nextDigits);\n } else {\n // If a more appropriate phone number format\n // has been chosen for these \"leading digits\",\n // then re-format the national phone number part\n // using the newly selected format.\n return this.formatNextNationalNumberDigits(state.getNationalDigits());\n }\n }\n }\n }, {\n key: \"narrowDownMatchingFormats\",\n value: function narrowDownMatchingFormats(_ref2) {\n var _this2 = this;\n\n var nationalSignificantNumber = _ref2.nationalSignificantNumber,\n nationalPrefix = _ref2.nationalPrefix,\n international = _ref2.international;\n var leadingDigits = nationalSignificantNumber; // \"leading digits\" pattern list starts with a\n // \"leading digits\" pattern fitting a maximum of 3 leading digits.\n // So, after a user inputs 3 digits of a national (significant) phone number\n // this national (significant) number can already be formatted.\n // The next \"leading digits\" pattern is for 4 leading digits max,\n // and the \"leading digits\" pattern after it is for 5 leading digits max, etc.\n // This implementation is different from Google's\n // in that it searches for a fitting format\n // even if the user has entered less than\n // `MIN_LEADING_DIGITS_LENGTH` digits of a national number.\n // Because some leading digit patterns already match for a single first digit.\n\n var leadingDigitsPatternIndex = leadingDigits.length - MIN_LEADING_DIGITS_LENGTH;\n\n if (leadingDigitsPatternIndex < 0) {\n leadingDigitsPatternIndex = 0;\n }\n\n this.matchingFormats = this.matchingFormats.filter(function (format) {\n return _this2.formatSuits(format, international, nationalPrefix) && _this2.formatMatches(format, leadingDigits, leadingDigitsPatternIndex);\n }); // If there was a phone number format chosen\n // and it no longer holds given the new leading digits then reset it.\n // The test for this `if` condition is marked as:\n // \"Reset a chosen format when it no longer holds given the new leading digits\".\n // To construct a valid test case for this one can find a country\n // in `PhoneNumberMetadata.xml` yielding one format for 3 ``\n // and yielding another format for 4 `` (Australia in this case).\n\n if (this.chosenFormat && this.matchingFormats.indexOf(this.chosenFormat) === -1) {\n this.resetFormat();\n }\n }\n }, {\n key: \"formatSuits\",\n value: function formatSuits(format, international, nationalPrefix) {\n // When a prefix before a national (significant) number is\n // simply a national prefix, then it's parsed as `this.nationalPrefix`.\n // In more complex cases, a prefix before national (significant) number\n // could include a national prefix as well as some \"capturing groups\",\n // and in that case there's no info whether a national prefix has been parsed.\n // If national prefix is not used when formatting a phone number\n // using this format, but a national prefix has been entered by the user,\n // and was extracted, then discard such phone number format.\n // In Google's \"AsYouType\" formatter code, the equivalent would be this part:\n // https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L175-L184\n if (nationalPrefix && !format.usesNationalPrefix() && // !format.domesticCarrierCodeFormattingRule() &&\n !format.nationalPrefixIsOptionalWhenFormattingInNationalFormat()) {\n return false;\n } // If national prefix is mandatory for this phone number format\n // and there're no guarantees that a national prefix is present in user input\n // then discard this phone number format as not suitable.\n // In Google's \"AsYouType\" formatter code, the equivalent would be this part:\n // https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L185-L193\n\n\n if (!international && !nationalPrefix && format.nationalPrefixIsMandatoryWhenFormattingInNationalFormat()) {\n return false;\n }\n\n return true;\n }\n }, {\n key: \"formatMatches\",\n value: function formatMatches(format, leadingDigits, leadingDigitsPatternIndex) {\n var leadingDigitsPatternsCount = format.leadingDigitsPatterns().length; // If this format is not restricted to a certain\n // leading digits pattern then it fits.\n // The test case could be found by searching for \"leadingDigitsPatternsCount === 0\".\n\n if (leadingDigitsPatternsCount === 0) {\n return true;\n } // Start narrowing down the list of possible formats based on the leading digits.\n // (only previously matched formats take part in the narrowing down process)\n // `leading_digits_patterns` start with 3 digits min\n // and then go up from there one digit at a time.\n\n\n leadingDigitsPatternIndex = Math.min(leadingDigitsPatternIndex, leadingDigitsPatternsCount - 1);\n var leadingDigitsPattern = format.leadingDigitsPatterns()[leadingDigitsPatternIndex]; // Google imposes a requirement on the leading digits\n // to be minimum 3 digits long in order to be eligible\n // for checking those with a leading digits pattern.\n //\n // Since `leading_digits_patterns` start with 3 digits min,\n // Google's original `libphonenumber` library only starts\n // excluding any non-matching formats only when the\n // national number entered so far is at least 3 digits long,\n // otherwise format matching would give false negatives.\n //\n // For example, when the digits entered so far are `2`\n // and the leading digits pattern is `21` –\n // it's quite obvious in this case that the format could be the one\n // but due to the absence of further digits it would give false negative.\n //\n // Also, `leading_digits_patterns` doesn't always correspond to a single\n // digits count. For example, `60|8` pattern would already match `8`\n // but the `60` part would require having at least two leading digits,\n // so the whole pattern would require inputting two digits first in order to\n // decide on whether it matches the input, even when the input is \"80\".\n //\n // This library — `libphonenumber-js` — allows filtering by `leading_digits_patterns`\n // even when there's only 1 or 2 digits of the national (significant) number.\n // To do that, it uses a non-strict pattern matcher written specifically for that.\n //\n\n if (leadingDigits.length < MIN_LEADING_DIGITS_LENGTH) {\n // Before leading digits < 3 matching was implemented:\n // return true\n //\n // After leading digits < 3 matching was implemented:\n try {\n return new PatternMatcher(leadingDigitsPattern).match(leadingDigits, {\n allowOverflow: true\n }) !== undefined;\n } catch (error)\n /* istanbul ignore next */\n {\n // There's a slight possibility that there could be some undiscovered bug\n // in the pattern matcher code. Since the \"leading digits < 3 matching\"\n // feature is not \"essential\" for operation, it can fall back to the old way\n // in case of any issues rather than halting the application's execution.\n console.error(error);\n return true;\n }\n } // If at least `MIN_LEADING_DIGITS_LENGTH` digits of a national number are\n // available then use the usual regular expression matching.\n //\n // The whole pattern is wrapped in round brackets (`()`) because\n // the pattern can use \"or\" operator (`|`) at the top level of the pattern.\n //\n\n\n return new RegExp(\"^(\".concat(leadingDigitsPattern, \")\")).test(leadingDigits);\n }\n }, {\n key: \"getFormatFormat\",\n value: function getFormatFormat(format, international) {\n return international ? format.internationalFormat() : format.format();\n }\n }, {\n key: \"chooseFormat\",\n value: function chooseFormat(state) {\n var _this3 = this;\n\n var _loop = function _loop() {\n var format = _step2.value;\n\n // If this format is currently being used\n // and is still suitable, then stick to it.\n if (_this3.chosenFormat === format) {\n return \"break\";\n } // Sometimes, a formatting rule inserts additional digits in a phone number,\n // and \"as you type\" formatter can't do that: it should only use the digits\n // that the user has input.\n //\n // For example, in Argentina, there's a format for mobile phone numbers:\n //\n // {\n // \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\n // \"leading_digits_patterns\": [\"91\"],\n // \"national_prefix_formatting_rule\": \"0$1\",\n // \"format\": \"$2 15-$3-$4\",\n // \"international_format\": \"$1 $2 $3-$4\"\n // }\n //\n // In that format, `international_format` is used instead of `format`\n // because `format` inserts `15` in the formatted number,\n // and `AsYouType` formatter should only use the digits\n // the user has actually input, without adding any extra digits.\n // In this case, it wouldn't make a difference, because the `15`\n // is first stripped when applying `national_prefix_for_parsing`\n // and then re-added when using `format`, so in reality it doesn't\n // add any new digits to the number, but to detect that, the code\n // would have to be more complex: it would have to try formatting\n // the digits using the format and then see if any digits have\n // actually been added or removed, and then, every time a new digit\n // is input, it should re-check whether the chosen format doesn't\n // alter the digits.\n //\n // Google's code doesn't go that far, and so does this library:\n // it simply requires that a `format` doesn't add any additonal\n // digits to user's input.\n //\n // Also, people in general should move from inputting phone numbers\n // in national format (possibly with national prefixes)\n // and use international phone number format instead:\n // it's a logical thing in the modern age of mobile phones,\n // globalization and the internet.\n //\n\n /* istanbul ignore if */\n\n\n if (!NON_ALTERING_FORMAT_REG_EXP.test(_this3.getFormatFormat(format, state.international))) {\n return \"continue\";\n }\n\n if (!_this3.createTemplateForFormat(format, state)) {\n // Remove the format if it can't generate a template.\n _this3.matchingFormats = _this3.matchingFormats.filter(function (_) {\n return _ !== format;\n });\n return \"continue\";\n }\n\n _this3.chosenFormat = format;\n return \"break\";\n };\n\n // When there are multiple available formats, the formatter uses the first\n // format where a formatting template could be created.\n //\n // For some weird reason, `istanbul` says \"else path not taken\"\n // for the `for of` line below. Supposedly that means that\n // the loop doesn't ever go over the last element in the list.\n // That's true because there always is `this.chosenFormat`\n // when `this.matchingFormats` is non-empty.\n // And, for some weird reason, it doesn't think that the case\n // with empty `this.matchingFormats` qualifies for a valid \"else\" path.\n // So simply muting this `istanbul` warning.\n // It doesn't skip the contents of the `for of` loop,\n // it just skips the `for of` line.\n //\n\n /* istanbul ignore next */\n for (var _iterator2 = _createForOfIteratorHelperLoose(this.matchingFormats.slice()), _step2; !(_step2 = _iterator2()).done;) {\n var _ret = _loop();\n\n if (_ret === \"break\") break;\n if (_ret === \"continue\") continue;\n }\n\n if (!this.chosenFormat) {\n // No format matches the national (significant) phone number.\n this.resetFormat();\n }\n\n return this.chosenFormat;\n }\n }, {\n key: \"createTemplateForFormat\",\n value: function createTemplateForFormat(format, state) {\n // The formatter doesn't format numbers when numberPattern contains '|', e.g.\n // (20|3)\\d{4}. In those cases we quickly return.\n // (Though there's no such format in current metadata)\n\n /* istanbul ignore if */\n if (SUPPORT_LEGACY_FORMATTING_PATTERNS && format.pattern().indexOf('|') >= 0) {\n return;\n } // Get formatting template for this phone number format\n\n\n var template = this.getTemplateForFormat(format, state); // If the national number entered is too long\n // for any phone number format, then abort.\n\n if (template) {\n this.setNationalNumberTemplate(template, state);\n return true;\n }\n }\n }, {\n key: \"getSeparatorAfterNationalPrefix\",\n value: function getSeparatorAfterNationalPrefix(format) {\n // `US` metadata doesn't have a `national_prefix_formatting_rule`,\n // so the `if` condition below doesn't apply to `US`,\n // but in reality there shoudl be a separator\n // between a national prefix and a national (significant) number.\n // So `US` national prefix separator is a \"special\" \"hardcoded\" case.\n if (this.isNANP) {\n return ' ';\n } // If a `format` has a `national_prefix_formatting_rule`\n // and that rule has a separator after a national prefix,\n // then it means that there should be a separator\n // between a national prefix and a national (significant) number.\n\n\n if (format && format.nationalPrefixFormattingRule() && NATIONAL_PREFIX_SEPARATORS_PATTERN.test(format.nationalPrefixFormattingRule())) {\n return ' ';\n } // At this point, there seems to be no clear evidence that\n // there should be a separator between a national prefix\n // and a national (significant) number. So don't insert one.\n\n\n return '';\n }\n }, {\n key: \"getInternationalPrefixBeforeCountryCallingCode\",\n value: function getInternationalPrefixBeforeCountryCallingCode(_ref3, options) {\n var IDDPrefix = _ref3.IDDPrefix,\n missingPlus = _ref3.missingPlus;\n\n if (IDDPrefix) {\n return options && options.spacing === false ? IDDPrefix : IDDPrefix + ' ';\n }\n\n if (missingPlus) {\n return '';\n }\n\n return '+';\n }\n }, {\n key: \"getTemplate\",\n value: function getTemplate(state) {\n if (!this.template) {\n return;\n } // `this.template` holds the template for a \"complete\" phone number.\n // The currently entered phone number is most likely not \"complete\",\n // so trim all non-populated digits.\n\n\n var index = -1;\n var i = 0;\n var internationalPrefix = state.international ? this.getInternationalPrefixBeforeCountryCallingCode(state, {\n spacing: false\n }) : '';\n\n while (i < internationalPrefix.length + state.getDigitsWithoutInternationalPrefix().length) {\n index = this.template.indexOf(DIGIT_PLACEHOLDER, index + 1);\n i++;\n }\n\n return cutAndStripNonPairedParens(this.template, index + 1);\n }\n }, {\n key: \"setNationalNumberTemplate\",\n value: function setNationalNumberTemplate(template, state) {\n this.nationalNumberTemplate = template;\n this.populatedNationalNumberTemplate = template; // With a new formatting template, the matched position\n // using the old template needs to be reset.\n\n this.populatedNationalNumberTemplatePosition = -1; // For convenience, the public `.template` property\n // contains the whole international number\n // if the phone number being input is international:\n // 'x' for the '+' sign, 'x'es for the country phone code,\n // a spacebar and then the template for the formatted national number.\n\n if (state.international) {\n this.template = this.getInternationalPrefixBeforeCountryCallingCode(state).replace(/[\\d\\+]/g, DIGIT_PLACEHOLDER) + repeat(DIGIT_PLACEHOLDER, state.callingCode.length) + ' ' + template;\n } else {\n this.template = template;\n }\n }\n /**\r\n * Generates formatting template for a national phone number,\r\n * optionally containing a national prefix, for a format.\r\n * @param {Format} format\r\n * @param {string} nationalPrefix\r\n * @return {string}\r\n */\n\n }, {\n key: \"getTemplateForFormat\",\n value: function getTemplateForFormat(format, _ref4) {\n var nationalSignificantNumber = _ref4.nationalSignificantNumber,\n international = _ref4.international,\n nationalPrefix = _ref4.nationalPrefix,\n complexPrefixBeforeNationalSignificantNumber = _ref4.complexPrefixBeforeNationalSignificantNumber;\n var pattern = format.pattern();\n /* istanbul ignore else */\n\n if (SUPPORT_LEGACY_FORMATTING_PATTERNS) {\n pattern = pattern // Replace anything in the form of [..] with \\d\n .replace(CREATE_CHARACTER_CLASS_PATTERN(), '\\\\d') // Replace any standalone digit (not the one in `{}`) with \\d\n .replace(CREATE_STANDALONE_DIGIT_PATTERN(), '\\\\d');\n } // Generate a dummy national number (consisting of `9`s)\n // that fits this format's `pattern`.\n //\n // This match will always succeed,\n // because the \"longest dummy phone number\"\n // has enough length to accomodate any possible\n // national phone number format pattern.\n //\n\n\n var digits = LONGEST_DUMMY_PHONE_NUMBER.match(pattern)[0]; // If the national number entered is too long\n // for any phone number format, then abort.\n\n if (nationalSignificantNumber.length > digits.length) {\n return;\n } // Get a formatting template which can be used to efficiently format\n // a partial number where digits are added one by one.\n // Below `strictPattern` is used for the\n // regular expression (with `^` and `$`).\n // This wasn't originally in Google's `libphonenumber`\n // and I guess they don't really need it\n // because they're not using \"templates\" to format phone numbers\n // but I added `strictPattern` after encountering\n // South Korean phone number formatting bug.\n //\n // Non-strict regular expression bug demonstration:\n //\n // this.nationalSignificantNumber : `111111111` (9 digits)\n //\n // pattern : (\\d{2})(\\d{3,4})(\\d{4})\n // format : `$1 $2 $3`\n // digits : `9999999999` (10 digits)\n //\n // '9999999999'.replace(new RegExp(/(\\d{2})(\\d{3,4})(\\d{4})/g), '$1 $2 $3') = \"99 9999 9999\"\n //\n // template : xx xxxx xxxx\n //\n // But the correct template in this case is `xx xxx xxxx`.\n // The template was generated incorrectly because of the\n // `{3,4}` variability in the `pattern`.\n //\n // The fix is, if `this.nationalSignificantNumber` has already sufficient length\n // to satisfy the `pattern` completely then `this.nationalSignificantNumber`\n // is used instead of `digits`.\n\n\n var strictPattern = new RegExp('^' + pattern + '$');\n var nationalNumberDummyDigits = nationalSignificantNumber.replace(/\\d/g, DUMMY_DIGIT); // If `this.nationalSignificantNumber` has already sufficient length\n // to satisfy the `pattern` completely then use it\n // instead of `digits`.\n\n if (strictPattern.test(nationalNumberDummyDigits)) {\n digits = nationalNumberDummyDigits;\n }\n\n var numberFormat = this.getFormatFormat(format, international);\n var nationalPrefixIncludedInTemplate; // If a user did input a national prefix (and that's guaranteed),\n // and if a `format` does have a national prefix formatting rule,\n // then see if that national prefix formatting rule\n // prepends exactly the same national prefix the user has input.\n // If that's the case, then use the `format` with the national prefix formatting rule.\n // Otherwise, use the `format` without the national prefix formatting rule,\n // and prepend a national prefix manually to it.\n\n if (this.shouldTryNationalPrefixFormattingRule(format, {\n international: international,\n nationalPrefix: nationalPrefix\n })) {\n var numberFormatWithNationalPrefix = numberFormat.replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()); // If `national_prefix_formatting_rule` of a `format` simply prepends\n // national prefix at the start of a national (significant) number,\n // then such formatting can be used with `AsYouType` formatter.\n // There seems to be no `else` case: everywhere in metadata,\n // national prefix formatting rule is national prefix + $1,\n // or `($1)`, in which case such format isn't even considered\n // when the user has input a national prefix.\n\n /* istanbul ignore else */\n\n if (parseDigits(format.nationalPrefixFormattingRule()) === (nationalPrefix || '') + parseDigits('$1')) {\n numberFormat = numberFormatWithNationalPrefix;\n nationalPrefixIncludedInTemplate = true; // Replace all digits of the national prefix in the formatting template\n // with `DIGIT_PLACEHOLDER`s.\n\n if (nationalPrefix) {\n var i = nationalPrefix.length;\n\n while (i > 0) {\n numberFormat = numberFormat.replace(/\\d/, DIGIT_PLACEHOLDER);\n i--;\n }\n }\n }\n } // Generate formatting template for this phone number format.\n\n\n var template = digits // Format the dummy phone number according to the format.\n .replace(new RegExp(pattern), numberFormat) // Replace each dummy digit with a DIGIT_PLACEHOLDER.\n .replace(new RegExp(DUMMY_DIGIT, 'g'), DIGIT_PLACEHOLDER); // If a prefix of a national (significant) number is not as simple\n // as just a basic national prefix, then just prepend such prefix\n // before the national (significant) number, optionally spacing\n // the two with a whitespace.\n\n if (!nationalPrefixIncludedInTemplate) {\n if (complexPrefixBeforeNationalSignificantNumber) {\n // Prepend the prefix to the template manually.\n template = repeat(DIGIT_PLACEHOLDER, complexPrefixBeforeNationalSignificantNumber.length) + ' ' + template;\n } else if (nationalPrefix) {\n // Prepend national prefix to the template manually.\n template = repeat(DIGIT_PLACEHOLDER, nationalPrefix.length) + this.getSeparatorAfterNationalPrefix(format) + template;\n }\n }\n\n if (international) {\n template = applyInternationalSeparatorStyle(template);\n }\n\n return template;\n }\n }, {\n key: \"formatNextNationalNumberDigits\",\n value: function formatNextNationalNumberDigits(digits) {\n var result = populateTemplateWithDigits(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition, digits);\n\n if (!result) {\n // Reset the format.\n this.resetFormat();\n return;\n }\n\n this.populatedNationalNumberTemplate = result[0];\n this.populatedNationalNumberTemplatePosition = result[1]; // Return the formatted phone number so far.\n\n return cutAndStripNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1); // The old way which was good for `input-format` but is not so good\n // for `react-phone-number-input`'s default input (`InputBasic`).\n // return closeNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1)\n // \t.replace(new RegExp(DIGIT_PLACEHOLDER, 'g'), ' ')\n }\n }, {\n key: \"shouldTryNationalPrefixFormattingRule\",\n value: function shouldTryNationalPrefixFormattingRule(format, _ref5) {\n var international = _ref5.international,\n nationalPrefix = _ref5.nationalPrefix;\n\n if (format.nationalPrefixFormattingRule()) {\n // In some countries, `national_prefix_formatting_rule` is `($1)`,\n // so it applies even if the user hasn't input a national prefix.\n // `format.usesNationalPrefix()` detects such cases.\n var usesNationalPrefix = format.usesNationalPrefix();\n\n if (usesNationalPrefix && nationalPrefix || !usesNationalPrefix && !international) {\n return true;\n }\n }\n }\n }]);\n\n return AsYouTypeFormatter;\n}();\n\nexport { AsYouTypeFormatter as default };\n//# sourceMappingURL=AsYouTypeFormatter.js.map","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport _extractCountryCallingCode from './helpers/extractCountryCallingCode.js';\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js';\nimport extractNationalNumberFromPossiblyIncompleteNumber from './helpers/extractNationalNumberFromPossiblyIncompleteNumber.js';\nimport stripIddPrefix from './helpers/stripIddPrefix.js';\nimport parseDigits from './helpers/parseDigits.js';\nimport { VALID_DIGITS, VALID_PUNCTUATION, PLUS_CHARS } from './constants.js';\nvar VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART = '[' + VALID_PUNCTUATION + VALID_DIGITS + ']+';\nvar VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN = new RegExp('^' + VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART + '$', 'i');\nvar VALID_FORMATTED_PHONE_NUMBER_PART = '(?:' + '[' + PLUS_CHARS + ']' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*' + '|' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']+' + ')';\nvar AFTER_PHONE_NUMBER_DIGITS_END_PATTERN = new RegExp('[^' + VALID_PUNCTUATION + VALID_DIGITS + ']+' + '.*' + '$'); // Tests whether `national_prefix_for_parsing` could match\n// different national prefixes.\n// Matches anything that's not a digit or a square bracket.\n\nvar COMPLEX_NATIONAL_PREFIX = /[^\\d\\[\\]]/;\n\nvar AsYouTypeParser = /*#__PURE__*/function () {\n function AsYouTypeParser(_ref) {\n var defaultCountry = _ref.defaultCountry,\n defaultCallingCode = _ref.defaultCallingCode,\n metadata = _ref.metadata,\n onNationalSignificantNumberChange = _ref.onNationalSignificantNumberChange;\n\n _classCallCheck(this, AsYouTypeParser);\n\n this.defaultCountry = defaultCountry;\n this.defaultCallingCode = defaultCallingCode;\n this.metadata = metadata;\n this.onNationalSignificantNumberChange = onNationalSignificantNumberChange;\n }\n\n _createClass(AsYouTypeParser, [{\n key: \"input\",\n value: function input(text, state) {\n var _extractFormattedDigi = extractFormattedDigitsAndPlus(text),\n _extractFormattedDigi2 = _slicedToArray(_extractFormattedDigi, 2),\n formattedDigits = _extractFormattedDigi2[0],\n hasPlus = _extractFormattedDigi2[1];\n\n var digits = parseDigits(formattedDigits); // Checks for a special case: just a leading `+` has been entered.\n\n var justLeadingPlus;\n\n if (hasPlus) {\n if (!state.digits) {\n state.startInternationalNumber();\n\n if (!digits) {\n justLeadingPlus = true;\n }\n }\n }\n\n if (digits) {\n this.inputDigits(digits, state);\n }\n\n return {\n digits: digits,\n justLeadingPlus: justLeadingPlus\n };\n }\n /**\r\n * Inputs \"next\" phone number digits.\r\n * @param {string} digits\r\n * @return {string} [formattedNumber] Formatted national phone number (if it can be formatted at this stage). Returning `undefined` means \"don't format the national phone number at this stage\".\r\n */\n\n }, {\n key: \"inputDigits\",\n value: function inputDigits(nextDigits, state) {\n var digits = state.digits;\n var hasReceivedThreeLeadingDigits = digits.length < 3 && digits.length + nextDigits.length >= 3; // Append phone number digits.\n\n state.appendDigits(nextDigits); // Attempt to extract IDD prefix:\n // Some users input their phone number in international format,\n // but in an \"out-of-country\" dialing format instead of using the leading `+`.\n // https://github.com/catamphetamine/libphonenumber-js/issues/185\n // Detect such numbers as soon as there're at least 3 digits.\n // Google's library attempts to extract IDD prefix at 3 digits,\n // so this library just copies that behavior.\n // I guess that's because the most commot IDD prefixes are\n // `00` (Europe) and `011` (US).\n // There exist really long IDD prefixes too:\n // for example, in Australia the default IDD prefix is `0011`,\n // and it could even be as long as `14880011`.\n // An IDD prefix is extracted here, and then every time when\n // there's a new digit and the number couldn't be formatted.\n\n if (hasReceivedThreeLeadingDigits) {\n this.extractIddPrefix(state);\n }\n\n if (this.isWaitingForCountryCallingCode(state)) {\n if (!this.extractCountryCallingCode(state)) {\n return;\n }\n } else {\n state.appendNationalSignificantNumberDigits(nextDigits);\n } // If a phone number is being input in international format,\n // then it's not valid for it to have a national prefix.\n // Still, some people incorrectly input such numbers with a national prefix.\n // In such cases, only attempt to strip a national prefix if the number becomes too long.\n // (but that is done later, not here)\n\n\n if (!state.international) {\n if (!this.hasExtractedNationalSignificantNumber) {\n this.extractNationalSignificantNumber(state.getNationalDigits(), function (stateUpdate) {\n return state.update(stateUpdate);\n });\n }\n }\n }\n }, {\n key: \"isWaitingForCountryCallingCode\",\n value: function isWaitingForCountryCallingCode(_ref2) {\n var international = _ref2.international,\n callingCode = _ref2.callingCode;\n return international && !callingCode;\n } // Extracts a country calling code from a number\n // being entered in internatonal format.\n\n }, {\n key: \"extractCountryCallingCode\",\n value: function extractCountryCallingCode(state) {\n var _extractCountryCallin = _extractCountryCallingCode('+' + state.getDigitsWithoutInternationalPrefix(), this.defaultCountry, this.defaultCallingCode, this.metadata.metadata),\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n number = _extractCountryCallin.number;\n\n if (countryCallingCode) {\n state.setCallingCode(countryCallingCode);\n state.update({\n nationalSignificantNumber: number\n });\n return true;\n }\n }\n }, {\n key: \"reset\",\n value: function reset(numberingPlan) {\n if (numberingPlan) {\n this.hasSelectedNumberingPlan = true;\n\n var nationalPrefixForParsing = numberingPlan._nationalPrefixForParsing();\n\n this.couldPossiblyExtractAnotherNationalSignificantNumber = nationalPrefixForParsing && COMPLEX_NATIONAL_PREFIX.test(nationalPrefixForParsing);\n } else {\n this.hasSelectedNumberingPlan = undefined;\n this.couldPossiblyExtractAnotherNationalSignificantNumber = undefined;\n }\n }\n /**\r\n * Extracts a national (significant) number from user input.\r\n * Google's library is different in that it only applies `national_prefix_for_parsing`\r\n * and doesn't apply `national_prefix_transform_rule` after that.\r\n * https://github.com/google/libphonenumber/blob/a3d70b0487875475e6ad659af404943211d26456/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L539\r\n * @return {boolean} [extracted]\r\n */\n\n }, {\n key: \"extractNationalSignificantNumber\",\n value: function extractNationalSignificantNumber(nationalDigits, setState) {\n if (!this.hasSelectedNumberingPlan) {\n return;\n }\n\n var _extractNationalNumbe = extractNationalNumberFromPossiblyIncompleteNumber(nationalDigits, this.metadata),\n nationalPrefix = _extractNationalNumbe.nationalPrefix,\n nationalNumber = _extractNationalNumbe.nationalNumber,\n carrierCode = _extractNationalNumbe.carrierCode;\n\n if (nationalNumber === nationalDigits) {\n return;\n }\n\n this.onExtractedNationalNumber(nationalPrefix, carrierCode, nationalNumber, nationalDigits, setState);\n return true;\n }\n /**\r\n * In Google's code this function is called \"attempt to extract longer NDD\".\r\n * \"Some national prefixes are a substring of others\", they say.\r\n * @return {boolean} [result] — Returns `true` if extracting a national prefix produced different results from what they were.\r\n */\n\n }, {\n key: \"extractAnotherNationalSignificantNumber\",\n value: function extractAnotherNationalSignificantNumber(nationalDigits, prevNationalSignificantNumber, setState) {\n if (!this.hasExtractedNationalSignificantNumber) {\n return this.extractNationalSignificantNumber(nationalDigits, setState);\n }\n\n if (!this.couldPossiblyExtractAnotherNationalSignificantNumber) {\n return;\n }\n\n var _extractNationalNumbe2 = extractNationalNumberFromPossiblyIncompleteNumber(nationalDigits, this.metadata),\n nationalPrefix = _extractNationalNumbe2.nationalPrefix,\n nationalNumber = _extractNationalNumbe2.nationalNumber,\n carrierCode = _extractNationalNumbe2.carrierCode; // If a national prefix has been extracted previously,\n // then it's always extracted as additional digits are added.\n // That's assuming `extractNationalNumberFromPossiblyIncompleteNumber()`\n // doesn't do anything different from what it currently does.\n // So, just in case, here's this check, though it doesn't occur.\n\n /* istanbul ignore if */\n\n\n if (nationalNumber === prevNationalSignificantNumber) {\n return;\n }\n\n this.onExtractedNationalNumber(nationalPrefix, carrierCode, nationalNumber, nationalDigits, setState);\n return true;\n }\n }, {\n key: \"onExtractedNationalNumber\",\n value: function onExtractedNationalNumber(nationalPrefix, carrierCode, nationalSignificantNumber, nationalDigits, setState) {\n var complexPrefixBeforeNationalSignificantNumber;\n var nationalSignificantNumberMatchesInput; // This check also works with empty `this.nationalSignificantNumber`.\n\n var nationalSignificantNumberIndex = nationalDigits.lastIndexOf(nationalSignificantNumber); // If the extracted national (significant) number is the\n // last substring of the `digits`, then it means that it hasn't been altered:\n // no digits have been removed from the national (significant) number\n // while applying `national_prefix_transform_rule`.\n // https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\n\n if (nationalSignificantNumberIndex >= 0 && nationalSignificantNumberIndex === nationalDigits.length - nationalSignificantNumber.length) {\n nationalSignificantNumberMatchesInput = true; // If a prefix of a national (significant) number is not as simple\n // as just a basic national prefix, then such prefix is stored in\n // `this.complexPrefixBeforeNationalSignificantNumber` property and will be\n // prepended \"as is\" to the national (significant) number to produce\n // a formatted result.\n\n var prefixBeforeNationalNumber = nationalDigits.slice(0, nationalSignificantNumberIndex); // `prefixBeforeNationalNumber` is always non-empty,\n // because `onExtractedNationalNumber()` isn't called\n // when a national (significant) number hasn't been actually \"extracted\":\n // when a national (significant) number is equal to the national part of `digits`,\n // then `onExtractedNationalNumber()` doesn't get called.\n\n if (prefixBeforeNationalNumber !== nationalPrefix) {\n complexPrefixBeforeNationalSignificantNumber = prefixBeforeNationalNumber;\n }\n }\n\n setState({\n nationalPrefix: nationalPrefix,\n carrierCode: carrierCode,\n nationalSignificantNumber: nationalSignificantNumber,\n nationalSignificantNumberMatchesInput: nationalSignificantNumberMatchesInput,\n complexPrefixBeforeNationalSignificantNumber: complexPrefixBeforeNationalSignificantNumber\n }); // `onExtractedNationalNumber()` is only called when\n // the national (significant) number actually did change.\n\n this.hasExtractedNationalSignificantNumber = true;\n this.onNationalSignificantNumberChange();\n }\n }, {\n key: \"reExtractNationalSignificantNumber\",\n value: function reExtractNationalSignificantNumber(state) {\n // Attempt to extract a national prefix.\n //\n // Some people incorrectly input national prefix\n // in an international phone number.\n // For example, some people write British phone numbers as `+44(0)...`.\n //\n // Also, in some rare cases, it is valid for a national prefix\n // to be a part of an international phone number.\n // For example, mobile phone numbers in Mexico are supposed to be\n // dialled internationally using a `1` national prefix,\n // so the national prefix will be part of an international number.\n //\n // Quote from:\n // https://www.mexperience.com/dialing-cell-phones-in-mexico/\n //\n // \"Dialing a Mexican cell phone from abroad\n // When you are calling a cell phone number in Mexico from outside Mexico,\n // it’s necessary to dial an additional “1” after Mexico’s country code\n // (which is “52”) and before the area code.\n // You also ignore the 045, and simply dial the area code and the\n // cell phone’s number.\n //\n // If you don’t add the “1”, you’ll receive a recorded announcement\n // asking you to redial using it.\n //\n // For example, if you are calling from the USA to a cell phone\n // in Mexico City, you would dial +52 – 1 – 55 – 1234 5678.\n // (Note that this is different to calling a land line in Mexico City\n // from abroad, where the number dialed would be +52 – 55 – 1234 5678)\".\n //\n // Google's demo output:\n // https://libphonenumber.appspot.com/phonenumberparser?number=%2b5215512345678&country=MX\n //\n if (this.extractAnotherNationalSignificantNumber(state.getNationalDigits(), state.nationalSignificantNumber, function (stateUpdate) {\n return state.update(stateUpdate);\n })) {\n return true;\n } // If no format matches the phone number, then it could be\n // \"a really long IDD\" (quote from a comment in Google's library).\n // An IDD prefix is first extracted when the user has entered at least 3 digits,\n // and then here — every time when there's a new digit and the number\n // couldn't be formatted.\n // For example, in Australia the default IDD prefix is `0011`,\n // and it could even be as long as `14880011`.\n //\n // Could also check `!hasReceivedThreeLeadingDigits` here\n // to filter out the case when this check duplicates the one\n // already performed when there're 3 leading digits,\n // but it's not a big deal, and in most cases there\n // will be a suitable `format` when there're 3 leading digits.\n //\n\n\n if (this.extractIddPrefix(state)) {\n this.extractCallingCodeAndNationalSignificantNumber(state);\n return true;\n } // Google's AsYouType formatter supports sort of an \"autocorrection\" feature\n // when it \"autocorrects\" numbers that have been input for a country\n // with that country's calling code.\n // Such \"autocorrection\" feature looks weird, but different people have been requesting it:\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n // https://github.com/catamphetamine/libphonenumber-js/issues/375\n // https://github.com/catamphetamine/libphonenumber-js/issues/316\n\n\n if (this.fixMissingPlus(state)) {\n this.extractCallingCodeAndNationalSignificantNumber(state);\n return true;\n }\n }\n }, {\n key: \"extractIddPrefix\",\n value: function extractIddPrefix(state) {\n // An IDD prefix can't be present in a number written with a `+`.\n // Also, don't re-extract an IDD prefix if has already been extracted.\n var international = state.international,\n IDDPrefix = state.IDDPrefix,\n digits = state.digits,\n nationalSignificantNumber = state.nationalSignificantNumber;\n\n if (international || IDDPrefix) {\n return;\n } // Some users input their phone number in \"out-of-country\"\n // dialing format instead of using the leading `+`.\n // https://github.com/catamphetamine/libphonenumber-js/issues/185\n // Detect such numbers.\n\n\n var numberWithoutIDD = stripIddPrefix(digits, this.defaultCountry, this.defaultCallingCode, this.metadata.metadata);\n\n if (numberWithoutIDD !== undefined && numberWithoutIDD !== digits) {\n // If an IDD prefix was stripped then convert the IDD-prefixed number\n // to international number for subsequent parsing.\n state.update({\n IDDPrefix: digits.slice(0, digits.length - numberWithoutIDD.length)\n });\n this.startInternationalNumber(state, {\n country: undefined,\n callingCode: undefined\n });\n return true;\n }\n }\n }, {\n key: \"fixMissingPlus\",\n value: function fixMissingPlus(state) {\n if (!state.international) {\n var _extractCountryCallin2 = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(state.digits, this.defaultCountry, this.defaultCallingCode, this.metadata.metadata),\n newCallingCode = _extractCountryCallin2.countryCallingCode,\n number = _extractCountryCallin2.number;\n\n if (newCallingCode) {\n state.update({\n missingPlus: true\n });\n this.startInternationalNumber(state, {\n country: state.country,\n callingCode: newCallingCode\n });\n return true;\n }\n }\n }\n }, {\n key: \"startInternationalNumber\",\n value: function startInternationalNumber(state, _ref3) {\n var country = _ref3.country,\n callingCode = _ref3.callingCode;\n state.startInternationalNumber(country, callingCode); // If a national (significant) number has been extracted before, reset it.\n\n if (state.nationalSignificantNumber) {\n state.resetNationalSignificantNumber();\n this.onNationalSignificantNumberChange();\n this.hasExtractedNationalSignificantNumber = undefined;\n }\n }\n }, {\n key: \"extractCallingCodeAndNationalSignificantNumber\",\n value: function extractCallingCodeAndNationalSignificantNumber(state) {\n if (this.extractCountryCallingCode(state)) {\n // `this.extractCallingCode()` is currently called when the number\n // couldn't be formatted during the standard procedure.\n // Normally, the national prefix would be re-extracted\n // for an international number if such number couldn't be formatted,\n // but since it's already not able to be formatted,\n // there won't be yet another retry, so also extract national prefix here.\n this.extractNationalSignificantNumber(state.getNationalDigits(), function (stateUpdate) {\n return state.update(stateUpdate);\n });\n }\n }\n }]);\n\n return AsYouTypeParser;\n}();\n/**\r\n * Extracts formatted phone number from text (if there's any).\r\n * @param {string} text\r\n * @return {string} [formattedPhoneNumber]\r\n */\n\n\nexport { AsYouTypeParser as default };\n\nfunction extractFormattedPhoneNumber(text) {\n // Attempt to extract a possible number from the string passed in.\n var startsAt = text.search(VALID_FORMATTED_PHONE_NUMBER_PART);\n\n if (startsAt < 0) {\n return;\n } // Trim everything to the left of the phone number.\n\n\n text = text.slice(startsAt); // Trim the `+`.\n\n var hasPlus;\n\n if (text[0] === '+') {\n hasPlus = true;\n text = text.slice('+'.length);\n } // Trim everything to the right of the phone number.\n\n\n text = text.replace(AFTER_PHONE_NUMBER_DIGITS_END_PATTERN, ''); // Re-add the previously trimmed `+`.\n\n if (hasPlus) {\n text = '+' + text;\n }\n\n return text;\n}\n/**\r\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\r\n * @param {string} text\r\n * @return {any[]}\r\n */\n\n\nfunction _extractFormattedDigitsAndPlus(text) {\n // Extract a formatted phone number part from text.\n var extractedNumber = extractFormattedPhoneNumber(text) || ''; // Trim a `+`.\n\n if (extractedNumber[0] === '+') {\n return [extractedNumber.slice('+'.length), true];\n }\n\n return [extractedNumber];\n}\n/**\r\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\r\n * @param {string} text\r\n * @return {any[]}\r\n */\n\n\nexport function extractFormattedDigitsAndPlus(text) {\n var _extractFormattedDigi3 = _extractFormattedDigitsAndPlus(text),\n _extractFormattedDigi4 = _slicedToArray(_extractFormattedDigi3, 2),\n formattedDigits = _extractFormattedDigi4[0],\n hasPlus = _extractFormattedDigi4[1]; // If the extracted phone number part\n // can possibly be a part of some valid phone number\n // then parse phone number characters from a formatted phone number.\n\n\n if (!VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN.test(formattedDigits)) {\n formattedDigits = '';\n }\n\n return [formattedDigits, hasPlus];\n}\n//# sourceMappingURL=AsYouTypeParser.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport Metadata from './metadata.js';\nimport PhoneNumber from './PhoneNumber.js';\nimport AsYouTypeState from './AsYouTypeState.js';\nimport AsYouTypeFormatter, { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.js';\nimport AsYouTypeParser, { extractFormattedDigitsAndPlus } from './AsYouTypeParser.js';\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\n\nvar AsYouType = /*#__PURE__*/function () {\n /**\r\n * @param {(string|object)?} [optionsOrDefaultCountry] - The default country used for parsing non-international phone numbers. Can also be an `options` object.\r\n * @param {Object} metadata\r\n */\n function AsYouType(optionsOrDefaultCountry, metadata) {\n _classCallCheck(this, AsYouType);\n\n this.metadata = new Metadata(metadata);\n\n var _this$getCountryAndCa = this.getCountryAndCallingCode(optionsOrDefaultCountry),\n _this$getCountryAndCa2 = _slicedToArray(_this$getCountryAndCa, 2),\n defaultCountry = _this$getCountryAndCa2[0],\n defaultCallingCode = _this$getCountryAndCa2[1];\n\n this.defaultCountry = defaultCountry;\n this.defaultCallingCode = defaultCallingCode;\n this.reset();\n }\n\n _createClass(AsYouType, [{\n key: \"getCountryAndCallingCode\",\n value: function getCountryAndCallingCode(optionsOrDefaultCountry) {\n // Set `defaultCountry` and `defaultCallingCode` options.\n var defaultCountry;\n var defaultCallingCode; // Turns out `null` also has type \"object\". Weird.\n\n if (optionsOrDefaultCountry) {\n if (_typeof(optionsOrDefaultCountry) === 'object') {\n defaultCountry = optionsOrDefaultCountry.defaultCountry;\n defaultCallingCode = optionsOrDefaultCountry.defaultCallingCode;\n } else {\n defaultCountry = optionsOrDefaultCountry;\n }\n }\n\n if (defaultCountry && !this.metadata.hasCountry(defaultCountry)) {\n defaultCountry = undefined;\n }\n\n if (defaultCallingCode) {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (this.metadata.isNonGeographicCallingCode(defaultCallingCode)) {\n defaultCountry = '001';\n }\n }\n }\n\n return [defaultCountry, defaultCallingCode];\n }\n /**\r\n * Inputs \"next\" phone number characters.\r\n * @param {string} text\r\n * @return {string} Formatted phone number characters that have been input so far.\r\n */\n\n }, {\n key: \"input\",\n value: function input(text) {\n var _this$parser$input = this.parser.input(text, this.state),\n digits = _this$parser$input.digits,\n justLeadingPlus = _this$parser$input.justLeadingPlus;\n\n if (justLeadingPlus) {\n this.formattedOutput = '+';\n } else if (digits) {\n this.determineTheCountryIfNeeded(); // Match the available formats by the currently available leading digits.\n\n if (this.state.nationalSignificantNumber) {\n this.formatter.narrowDownMatchingFormats(this.state);\n }\n\n var formattedNationalNumber;\n\n if (this.metadata.hasSelectedNumberingPlan()) {\n formattedNationalNumber = this.formatter.format(digits, this.state);\n }\n\n if (formattedNationalNumber === undefined) {\n // See if another national (significant) number could be re-extracted.\n if (this.parser.reExtractNationalSignificantNumber(this.state)) {\n this.determineTheCountryIfNeeded(); // If it could, then re-try formatting the new national (significant) number.\n\n var nationalDigits = this.state.getNationalDigits();\n\n if (nationalDigits) {\n formattedNationalNumber = this.formatter.format(nationalDigits, this.state);\n }\n }\n }\n\n this.formattedOutput = formattedNationalNumber ? this.getFullNumber(formattedNationalNumber) : this.getNonFormattedNumber();\n }\n\n return this.formattedOutput;\n }\n }, {\n key: \"reset\",\n value: function reset() {\n var _this = this;\n\n this.state = new AsYouTypeState({\n onCountryChange: function onCountryChange(country) {\n // Before version `1.6.0`, the official `AsYouType` formatter API\n // included the `.country` property of an `AsYouType` instance.\n // Since that property (along with the others) have been moved to\n // `this.state`, `this.country` property is emulated for compatibility\n // with the old versions.\n _this.country = country;\n },\n onCallingCodeChange: function onCallingCodeChange(callingCode, country) {\n _this.metadata.selectNumberingPlan(country, callingCode);\n\n _this.formatter.reset(_this.metadata.numberingPlan, _this.state);\n\n _this.parser.reset(_this.metadata.numberingPlan);\n }\n });\n this.formatter = new AsYouTypeFormatter({\n state: this.state,\n metadata: this.metadata\n });\n this.parser = new AsYouTypeParser({\n defaultCountry: this.defaultCountry,\n defaultCallingCode: this.defaultCallingCode,\n metadata: this.metadata,\n state: this.state,\n onNationalSignificantNumberChange: function onNationalSignificantNumberChange() {\n _this.determineTheCountryIfNeeded();\n\n _this.formatter.reset(_this.metadata.numberingPlan, _this.state);\n }\n });\n this.state.reset(this.defaultCountry, this.defaultCallingCode);\n this.formattedOutput = '';\n return this;\n }\n /**\r\n * Returns `true` if the phone number is being input in international format.\r\n * In other words, returns `true` if and only if the parsed phone number starts with a `\"+\"`.\r\n * @return {boolean}\r\n */\n\n }, {\n key: \"isInternational\",\n value: function isInternational() {\n return this.state.international;\n }\n /**\r\n * Returns the \"calling code\" part of the phone number when it's being input\r\n * in an international format.\r\n * If no valid calling code has been entered so far, returns `undefined`.\r\n * @return {string} [callingCode]\r\n */\n\n }, {\n key: \"getCallingCode\",\n value: function getCallingCode() {\n // If the number is being input in national format and some \"default calling code\"\n // has been passed to `AsYouType` constructor, then `this.state.callingCode`\n // is equal to that \"default calling code\".\n //\n // If the number is being input in national format and no \"default calling code\"\n // has been passed to `AsYouType` constructor, then returns `undefined`,\n // even if a \"default country\" has been passed to `AsYouType` constructor.\n //\n if (this.isInternational()) {\n return this.state.callingCode;\n }\n } // A legacy alias.\n\n }, {\n key: \"getCountryCallingCode\",\n value: function getCountryCallingCode() {\n return this.getCallingCode();\n }\n /**\r\n * Returns a two-letter country code of the phone number.\r\n * Returns `undefined` for \"non-geographic\" phone numbering plans.\r\n * Returns `undefined` if no phone number has been input yet.\r\n * @return {string} [country]\r\n */\n\n }, {\n key: \"getCountry\",\n value: function getCountry() {\n var digits = this.state.digits; // Return `undefined` if no digits have been input yet.\n\n if (digits) {\n return this._getCountry();\n }\n }\n /**\r\n * Returns a two-letter country code of the phone number.\r\n * Returns `undefined` for \"non-geographic\" phone numbering plans.\r\n * @return {string} [country]\r\n */\n\n }, {\n key: \"_getCountry\",\n value: function _getCountry() {\n var country = this.state.country;\n /* istanbul ignore if */\n\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n // `AsYouType.getCountry()` returns `undefined`\n // for \"non-geographic\" phone numbering plans.\n if (country === '001') {\n return;\n }\n }\n\n return country;\n }\n }, {\n key: \"determineTheCountryIfNeeded\",\n value: function determineTheCountryIfNeeded() {\n // Suppose a user enters a phone number in international format,\n // and there're several countries corresponding to that country calling code,\n // and a country has been derived from the number, and then\n // a user enters one more digit and the number is no longer\n // valid for the derived country, so the country should be re-derived\n // on every new digit in those cases.\n //\n // If the phone number is being input in national format,\n // then it could be a case when `defaultCountry` wasn't specified\n // when creating `AsYouType` instance, and just `defaultCallingCode` was specified,\n // and that \"calling code\" could correspond to a \"non-geographic entity\",\n // or there could be several countries corresponding to that country calling code.\n // In those cases, `this.country` is `undefined` and should be derived\n // from the number. Again, if country calling code is ambiguous, then\n // `this.country` should be re-derived with each new digit.\n //\n if (!this.state.country || this.isCountryCallingCodeAmbiguous()) {\n this.determineTheCountry();\n }\n } // Prepends `+CountryCode ` in case of an international phone number\n\n }, {\n key: \"getFullNumber\",\n value: function getFullNumber(formattedNationalNumber) {\n var _this2 = this;\n\n if (this.isInternational()) {\n var prefix = function prefix(text) {\n return _this2.formatter.getInternationalPrefixBeforeCountryCallingCode(_this2.state, {\n spacing: text ? true : false\n }) + text;\n };\n\n var callingCode = this.state.callingCode;\n\n if (!callingCode) {\n return prefix(\"\".concat(this.state.getDigitsWithoutInternationalPrefix()));\n }\n\n if (!formattedNationalNumber) {\n return prefix(callingCode);\n }\n\n return prefix(\"\".concat(callingCode, \" \").concat(formattedNationalNumber));\n }\n\n return formattedNationalNumber;\n }\n }, {\n key: \"getNonFormattedNationalNumberWithPrefix\",\n value: function getNonFormattedNationalNumberWithPrefix() {\n var _this$state = this.state,\n nationalSignificantNumber = _this$state.nationalSignificantNumber,\n complexPrefixBeforeNationalSignificantNumber = _this$state.complexPrefixBeforeNationalSignificantNumber,\n nationalPrefix = _this$state.nationalPrefix;\n var number = nationalSignificantNumber;\n var prefix = complexPrefixBeforeNationalSignificantNumber || nationalPrefix;\n\n if (prefix) {\n number = prefix + number;\n }\n\n return number;\n }\n }, {\n key: \"getNonFormattedNumber\",\n value: function getNonFormattedNumber() {\n var nationalSignificantNumberMatchesInput = this.state.nationalSignificantNumberMatchesInput;\n return this.getFullNumber(nationalSignificantNumberMatchesInput ? this.getNonFormattedNationalNumberWithPrefix() : this.state.getNationalDigits());\n }\n }, {\n key: \"getNonFormattedTemplate\",\n value: function getNonFormattedTemplate() {\n var number = this.getNonFormattedNumber();\n\n if (number) {\n return number.replace(/[\\+\\d]/g, DIGIT_PLACEHOLDER);\n }\n }\n }, {\n key: \"isCountryCallingCodeAmbiguous\",\n value: function isCountryCallingCodeAmbiguous() {\n var callingCode = this.state.callingCode;\n var countryCodes = this.metadata.getCountryCodesForCallingCode(callingCode);\n return countryCodes && countryCodes.length > 1;\n } // Determines the country of the phone number\n // entered so far based on the country phone code\n // and the national phone number.\n\n }, {\n key: \"determineTheCountry\",\n value: function determineTheCountry() {\n this.state.setCountry(getCountryByCallingCode(this.isInternational() ? this.state.callingCode : this.defaultCallingCode, this.state.nationalSignificantNumber, this.metadata));\n }\n /**\r\n * Returns a E.164 phone number value for the user's input.\r\n *\r\n * For example, for country `\"US\"` and input `\"(222) 333-4444\"`\r\n * it will return `\"+12223334444\"`.\r\n *\r\n * For international phone number input, it will also auto-correct\r\n * some minor errors such as using a national prefix when writing\r\n * an international phone number. For example, if the user inputs\r\n * `\"+44 0 7400 000000\"` then it will return an auto-corrected\r\n * `\"+447400000000\"` phone number value.\r\n *\r\n * Will return `undefined` if no digits have been input,\r\n * or when inputting a phone number in national format and no\r\n * default country or default \"country calling code\" have been set.\r\n *\r\n * @return {string} [value]\r\n */\n\n }, {\n key: \"getNumberValue\",\n value: function getNumberValue() {\n var _this$state2 = this.state,\n digits = _this$state2.digits,\n callingCode = _this$state2.callingCode,\n country = _this$state2.country,\n nationalSignificantNumber = _this$state2.nationalSignificantNumber; // Will return `undefined` if no digits have been input.\n\n if (!digits) {\n return;\n }\n\n if (this.isInternational()) {\n if (callingCode) {\n return '+' + callingCode + nationalSignificantNumber;\n } else {\n return '+' + digits;\n }\n } else {\n if (country || callingCode) {\n var callingCode_ = country ? this.metadata.countryCallingCode() : callingCode;\n return '+' + callingCode_ + nationalSignificantNumber;\n }\n }\n }\n /**\r\n * Returns an instance of `PhoneNumber` class.\r\n * Will return `undefined` if no national (significant) number\r\n * digits have been entered so far, or if no `defaultCountry` has been\r\n * set and the user enters a phone number not in international format.\r\n */\n\n }, {\n key: \"getNumber\",\n value: function getNumber() {\n var _this$state3 = this.state,\n nationalSignificantNumber = _this$state3.nationalSignificantNumber,\n carrierCode = _this$state3.carrierCode,\n callingCode = _this$state3.callingCode; // `this._getCountry()` is basically same as `this.state.country`\n // with the only change that it return `undefined` in case of a\n // \"non-geographic\" numbering plan instead of `\"001\"` \"internal use\" value.\n\n var country = this._getCountry();\n\n if (!nationalSignificantNumber) {\n return;\n }\n\n if (!country && !callingCode) {\n return;\n }\n\n var phoneNumber = new PhoneNumber(country || callingCode, nationalSignificantNumber, this.metadata.metadata);\n\n if (carrierCode) {\n phoneNumber.carrierCode = carrierCode;\n } // Phone number extensions are not supported by \"As You Type\" formatter.\n\n\n return phoneNumber;\n }\n /**\r\n * Returns `true` if the phone number is \"possible\".\r\n * Is just a shortcut for `PhoneNumber.isPossible()`.\r\n * @return {boolean}\r\n */\n\n }, {\n key: \"isPossible\",\n value: function isPossible() {\n var phoneNumber = this.getNumber();\n\n if (!phoneNumber) {\n return false;\n }\n\n return phoneNumber.isPossible();\n }\n /**\r\n * Returns `true` if the phone number is \"valid\".\r\n * Is just a shortcut for `PhoneNumber.isValid()`.\r\n * @return {boolean}\r\n */\n\n }, {\n key: \"isValid\",\n value: function isValid() {\n var phoneNumber = this.getNumber();\n\n if (!phoneNumber) {\n return false;\n }\n\n return phoneNumber.isValid();\n }\n /**\r\n * @deprecated\r\n * This method is used in `react-phone-number-input/source/input-control.js`\r\n * in versions before `3.0.16`.\r\n */\n\n }, {\n key: \"getNationalNumber\",\n value: function getNationalNumber() {\n return this.state.nationalSignificantNumber;\n }\n /**\r\n * Returns the phone number characters entered by the user.\r\n * @return {string}\r\n */\n\n }, {\n key: \"getChars\",\n value: function getChars() {\n return (this.state.international ? '+' : '') + this.state.digits;\n }\n /**\r\n * Returns the template for the formatted phone number.\r\n * @return {string}\r\n */\n\n }, {\n key: \"getTemplate\",\n value: function getTemplate() {\n return this.formatter.getTemplate(this.state) || this.getNonFormattedTemplate() || '';\n }\n }]);\n\n return AsYouType;\n}();\n\nexport { AsYouType as default };\n//# sourceMappingURL=AsYouType.js.map","import Metadata from './metadata.js';\nexport default function getCountries(metadata) {\n return new Metadata(metadata).getCountries();\n}\n//# sourceMappingURL=getCountries.js.map","import PhoneNumber from './PhoneNumber.js';\nexport default function getExampleNumber(country, examples, metadata) {\n if (examples[country]) {\n return new PhoneNumber(country, examples[country], metadata);\n }\n}\n//# sourceMappingURL=getExampleNumber.js.map","import AsYouType from './AsYouType.js';\n/**\r\n * Formats a (possibly incomplete) phone number.\r\n * The phone number can be either in E.164 format\r\n * or in a form of national number digits.\r\n * @param {string} value - A possibly incomplete phone number. Either in E.164 format or in a form of national number digits.\r\n * @param {string?} country - Two-letter (\"ISO 3166-1 alpha-2\") country code.\r\n * @return {string} Formatted (possibly incomplete) phone number.\r\n */\n\nexport default function formatIncompletePhoneNumber(value, country, metadata) {\n if (!metadata) {\n metadata = country;\n country = undefined;\n }\n\n return new AsYouType(country, metadata).input(value);\n}\n//# sourceMappingURL=formatIncompletePhoneNumber.js.map","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { parsePhoneNumberWithError as _parsePhoneNumberWithError } from '../../core/index.js'\r\n\r\nexport function parsePhoneNumberWithError() {\r\n\treturn withMetadataArgument(_parsePhoneNumberWithError, arguments)\r\n}\r\n","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { parsePhoneNumberFromString as _parsePhoneNumberFromString } from '../../core/index.js'\r\n\r\nexport function parsePhoneNumberFromString() {\r\n\treturn withMetadataArgument(_parsePhoneNumberFromString, arguments)\r\n}","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\r\n// importing system which is even uncapable of importing \"*.json\" files.\r\nimport metadata from '../../metadata.min.json.js'\r\n\r\nimport { PhoneNumberMatcher as _PhoneNumberMatcher } from '../../core/index.js'\r\n\r\nexport function PhoneNumberMatcher(text, options) {\r\n\treturn _PhoneNumberMatcher.call(this, text, options, metadata)\r\n}\r\nPhoneNumberMatcher.prototype = Object.create(_PhoneNumberMatcher.prototype, {})\r\nPhoneNumberMatcher.prototype.constructor = PhoneNumberMatcher\r\n","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\r\n// importing system which is even uncapable of importing \"*.json\" files.\r\nimport metadata from '../../metadata.min.json.js'\r\n\r\nimport { AsYouType as _AsYouType } from '../../core/index.js'\r\n\r\nexport function AsYouType(country) {\r\n\treturn _AsYouType.call(this, country, metadata)\r\n}\r\n\r\nAsYouType.prototype = Object.create(_AsYouType.prototype, {})\r\nAsYouType.prototype.constructor = AsYouType","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\r\n// importing system which is even uncapable of importing \"*.json\" files.\r\nimport metadata from '../../metadata.min.json.js'\r\n\r\nimport { Metadata as _Metadata } from '../../core/index.js'\r\n\r\nexport function Metadata() {\r\n\treturn _Metadata.call(this, metadata)\r\n}\r\n\r\nMetadata.prototype = Object.create(_Metadata.prototype, {})\r\nMetadata.prototype.constructor = Metadata","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { findNumbers as _findNumbers } from '../../core/index.js'\r\n\r\nexport function findNumbers() {\r\n\treturn withMetadataArgument(_findNumbers, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { findPhoneNumbersInText as _findPhoneNumbersInText } from '../../core/index.js'\r\n\r\nexport function findPhoneNumbersInText() {\r\n\treturn withMetadataArgument(_findPhoneNumbersInText, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { formatIncompletePhoneNumber as _formatIncompletePhoneNumber } from '../../core/index.js'\r\n\r\nexport function formatIncompletePhoneNumber() {\r\n\treturn withMetadataArgument(_formatIncompletePhoneNumber, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { getCountries as _getCountries } from '../../core/index.js'\r\n\r\nexport function getCountries() {\r\n\treturn withMetadataArgument(_getCountries, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { getCountryCallingCode as _getCountryCallingCode } from '../../core/index.js'\r\n\r\nexport function getCountryCallingCode() {\r\n\treturn withMetadataArgument(_getCountryCallingCode, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { getExampleNumber as _getExampleNumber } from '../../core/index.js'\r\n\r\nexport function getExampleNumber() {\r\n\treturn withMetadataArgument(_getExampleNumber, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { getExtPrefix as _getExtPrefix } from '../../core/index.js'\r\n\r\nexport function getExtPrefix() {\r\n\treturn withMetadataArgument(_getExtPrefix, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { isPossiblePhoneNumber as _isPossiblePhoneNumber } from '../../core/index.js'\r\n\r\nexport function isPossiblePhoneNumber() {\r\n\treturn withMetadataArgument(_isPossiblePhoneNumber, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { isSupportedCountry as _isSupportedCountry } from '../../core/index.js'\r\n\r\nexport function isSupportedCountry() {\r\n\treturn withMetadataArgument(_isSupportedCountry, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { isValidPhoneNumber as _isValidPhoneNumber } from '../../core/index.js'\r\n\r\nexport function isValidPhoneNumber() {\r\n\treturn withMetadataArgument(_isValidPhoneNumber, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { searchNumbers as _searchNumbers } from '../../core/index.js'\r\n\r\nexport function searchNumbers() {\r\n\treturn withMetadataArgument(_searchNumbers, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { searchPhoneNumbersInText as _searchPhoneNumbersInText } from '../../core/index.js'\r\n\r\nexport function searchPhoneNumbersInText() {\r\n\treturn withMetadataArgument(_searchPhoneNumbersInText, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { validatePhoneNumberLength as _validatePhoneNumberLength } from '../../core/index.js'\r\n\r\nexport function validatePhoneNumberLength() {\r\n\treturn withMetadataArgument(_validatePhoneNumberLength, arguments)\r\n}"],"names":["metadata","version","country_calling_codes","countries","AC","AD","AE","AF","AG","AI","AL","AM","AO","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GT","GU","GW","GY","HK","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TA","TC","TD","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","YE","YT","ZA","ZM","ZW","nonGeographic","withMetadataArgument","func","_arguments","args","Array","prototype","slice","call","push","apply","this","_typeof","obj","Symbol","iterator","constructor","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_possibleConstructorReturn","self","TypeError","_assertThisInitialized","ReferenceError","_wrapNativeSuper","Class","_cache","Map","undefined","fn","Function","toString","indexOf","has","get","set","Wrapper","_construct","arguments","_getPrototypeOf","create","value","_setPrototypeOf","Parent","_isNativeReflectConstruct","Reflect","construct","a","instance","bind","sham","Proxy","Boolean","valueOf","e","o","p","setPrototypeOf","__proto__","getPrototypeOf","ParseError","_Error","subClass","superClass","_inherits","Derived","hasNativeReflectConstruct","Constructor","protoProps","staticProps","_super","result","Super","NewTarget","code","_this","_classCallCheck","name","Error","VALID_DIGITS","VALID_PUNCTUATION","concat","PLUS_CHARS","compare","b","split","pa","pb","na","Number","nb","isNaN","_createClass","DEFAULT_EXT_PREFIX","CALLING_CODE_REG_EXP","Metadata","is_object","keys","join","type_of","validateMetadata","setVersion","filter","_","countryCode","v1","v2","v3","nonGeographical","country","getCountryMetadata","callingCode","getCountryCodesForCallingCode","countryCodes","countryCallingCodes","selectNumberingPlan","test","hasCountry","numberingPlan","NumberingPlan","hasCallingCode","getNumberingPlanMetadata","getCountryCodeForCallingCode","IDDPrefix","defaultIDDPrefix","nationalNumberPattern","possibleLengths","formats","nationalPrefixForParsing","nationalPrefixTransformRule","leadingDigits","hasTypes","_type","type","ext","country_phone_code_to_countries","globalMetadataObject","_getFormats","getDefaultCountryMetadataForRegion","map","Format","_getNationalPrefixFormattingRule","_nationalPrefixForParsing","nationalPrefix","_getNationalPrefixIsOptionalWhenFormatting","types","_type2","getType","Type","format","_format","nationalPrefixFormattingRule","nationalPrefixIsOptionalWhenFormattingInNationalFormat","usesNationalPrefix","FIRST_GROUP_ONLY_PREFIX_PATTERN","getExtPrefix","getCountryCallingCode","countryCallingCode","isSupportedCountry","v4","getExtensionDigitsPattern","maxLength","createExtensionPattern","purpose","optionalExtnSuffix","possibleSeparatorsBetweenNumberAndExtLabel","possibleSeparatorsNumberExtLabelNoComma","VALID_PHONE_NUMBER","VALID_PHONE_NUMBER_START_REG_EXP","RegExp","VALID_PHONE_NUMBER_WITH_EXTENSION","VALID_PHONE_NUMBER_PATTERN","isViablePhoneNumber","number","EXTN_PATTERN","_createForOfIteratorHelperLoose","allowArrayLike","it","next","isArray","minLen","_arrayLikeToArray","n","from","_unsupportedIterableToArray","done","arr","len","arr2","DIGITS","parseDigit","character","parseDigits","string","_step","_iterator","digit","parseIncompletePhoneNumber","parsePhoneNumberCharacter","prevParsedCharacters","checkNumberLength","nationalNumber","checkNumberLengthForType","type_info","possible_lengths","mobile_type","merged","element","sort","mergeArrays","actual_length","minimum_length","isPossibleNumber","_slicedToArray","_arrayWithHoles","_i","_s","_e","_arr","_n","_d","err","_iterableToArrayLimit","_nonIterableRest","parseRFC3966","text","replace","_part$split2","formatRFC3966","_ref","matchesEntirely","regular_expression","NON_FIXED_LINE_PHONE_TYPES","getNumberType","input","options","phone","isNumberTypeEqualTo","pattern","isValidNumber","applyInternationalSeparatorStyle","formattedNumber","trim","FIRST_GROUP_PATTERN","formatNationalNumberUsingFormat","useInternationalFormat","withNationalPrefix","carrierCode","internationalFormat","SINGLE_IDD_PREFIX_REG_EXP","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","DEFAULT_OPTIONS","formatExtension","extension","formatNumber","addExtension","formatNationalNumber","fromCountry","iddPrefix","countryMetadata","getIddPrefix","formatIDD","formatAs","availableFormats","nationalNnumber","leadingDigitsPatterns","lastLeadingDigitsPattern","search","chooseFormatForNumber","PhoneNumber","_metadata","isCountryCode","isNonGeographicCallingCode","phoneNumber","CAPTURING_DIGIT_PATTERN","stripIddPrefix","IDDPrefixPattern","matchedGroups","match","extractNationalNumberFromPossiblyIncompleteNumber","prefixPattern","prefixMatch","exec","capturedGroupsCount","hasCapturedGroups","prefixBeforeNationalNumber","possiblePositionOfTheFirstCapturedGroup","extractNationalNumber","_extractNationalNumbe","nationalNumberBefore","nationalNumberAfter","shouldHaveExtractedNationalPrefix","isPossibleIncompleteNationalNumber","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","possibleShorterNumber","possibleShorterNationalNumber","extractCountryCallingCode","numberWithoutIDD","_extractCountryCallin","shorterNumber","_countryCallingCode","getCountryByCallingCode","nationalPhoneNumber","possibleCountries","selectCountryFromList","PHONE_NUMBER_START_PATTERN","AFTER_PHONE_NUMBER_END_PATTERN","parse","defaultCountry","_parseInput","extract","throwOnError","startsAt","extractFormattedPhoneNumber","isViablePhoneNumberStart","error","withExtensionStripped","start","numberWithoutExtension","matches","extractExtension","parseInput","formattedPhoneNumber","_parsePhoneNumber","defaultCallingCode","exactCountry","parsePhoneNumber","hasSelectedNumberingPlan","valid","extended","possible","parseNumber","_normalizeArguments","normalizeArguments","parsePhoneNumber_","_Array$prototype$slic2","arg_1","arg_2","arg_3","arg_4","isObject","parsePhoneNumberFromString","parsePhoneNumberFromString_","isValidPhoneNumber","isValid","isPossiblePhoneNumber","isPossible","validatePhoneNumberLength","message","Node","prev","LRUCache","limit","size","head","tail","cache","ensureLimit","node","remove","put","console","log","RegExpCache","regExp","lower","upper","trimAfterFirstMatch","regexp","index","_pZ","pZ","PZ","pNd","_pL","pL","pL_regexp","pSc","pSc_regexp","pMn","pMn_regexp","latinLetterRegexp","isLatinLetter","letter","isInvalidPunctuationSymbol","Leniency","POSSIBLE","candidate","VALID","containsOnlyValidXChars","STRICT_GROUPING","regExpCache","candidateString","containsMoreThanOneSlashInNationalNumber","isNationalPrefixPresentIfRequired","checkNumberGroupingIsValid","allNumberGroupsRemainGrouped","EXACT_GROUPING","allNumberGroupsAreExactlyPresent","charAtIndex","charAt","charAtNextIndex","util","isNumberMatch","substring","MatchType","NSN_MATCH","getCountryCodeSource","phoneNumberRegion","getRegionCodeForCountryCode","getCountryCode","getMetadataForRegion","getNationalSignificantNumber","formatRule","chooseFormattingPatternForNumber","numberFormats","getNationalPrefixFormattingRule","getNationalPrefixOptionalWhenFormatting","PhoneNumberUtil","formattingRuleHasFirstGroupOnly","rawInputCopy","normalizeDigitsOnly","getRawInput","maybeStripNationalPrefixAndCarrierCode","firstSlashInBodyIndex","secondSlashInBodyIndex","CountryCodeSource","FROM_NUMBER_WITH_PLUS_SIGN","FROM_NUMBER_WITHOUT_PLUS_SIGN","String","checkGroups","normalizedCandidate","normalizeDigits","formattedNumberGroups","getNationalNumberGroups","alternateFormats","MetadataManager","getAlternateFormatsForCountry","nationalSignificantNumber","alternateFormat","getPatternForRegExp","formattingPattern","formatNsnUsingPattern","rfc3966Format","endIndex","startIndex","candidateGroups","NON_DIGITS_PATTERN","candidateNumberGroupIndex","hasExtension","contains","formattedNumberGroupIndex","fromIndex","FROM_DEFAULT_COUNTRY","region","getNddPrefixForRegion","Character","isDigit","getExtension","SECOND_NUMBER_START_PATTERN","parsePreCandidate","SLASH_SEPARATED_DATES","TIME_STAMPS","TIME_STAMPS_SUFFIX_LEADING","isValidPreCandidate","offset","followingText","OPENING_PARENS","CLOSING_PARENS","NON_PARENS","LEAD_CLASS","LEAD_CLASS_LEADING","BRACKET_PAIR_LIMIT","MATCHING_BRACKETS_ENTIRE","PUB_PAGES","EXTN_PATTERNS_FOR_MATCHING","INNER_MATCHES","leadLimit","punctuationLimit","blockLimit","MAX_LENGTH_FOR_NSN","punctuation","digitSequence","PATTERN","UNWANTED_END_CHAR_PATTERN","MAX_SAFE_INTEGER","Math","pow","PhoneNumberMatcher","leniency","maxTries","state","searchIndex","parseAndVerify","extractInnerMatch","endsAt","innerMatchPattern","isFirstMatch","candidateMatch","innerMatchRegExp","_candidate","_match","candidateIndexGuess","previousChar","lastCharIndex","nextChar","isValidCandidate","lastMatch","find","hasNext","findNumbers","matcher","results","_findNumbers","searchNumbers","findPhoneNumbersInText","getArguments","searchPhoneNumbersInText","AsYouTypeState","onCountryChange","onCallingCodeChange","international","missingPlus","digits","resetNationalSignificantNumber","initCountryAndCallingCode","getNationalDigits","nationalSignificantNumberMatchesInput","complexPrefixBeforeNationalSignificantNumber","properties","_Object$keys","setCountry","setCallingCode","nextDigits","DIGIT_PLACEHOLDER","DIGIT_PLACEHOLDER_MATCHER","repeat","times","cutAndStripNonPairedParens","cutBeforeIndex","dangling_braces","pop","cleared_string","_dangling_braces","stripNonPairedParens","formatCompleteNumber","shouldTryNationalPrefixFormattingRule","getSeparatorAfterNationalPrefix","_ref2","useNationalPrefixFormattingRule","formatNationalNumberWithAndWithoutNationalPrefixFormattingRule","_ref3","formattedNationalNumber","isValidFormattedNationalNumber","PatternParser","context","or","instructions","parsePattern","_this$context$","branches","op","expandSingleElementArray","OPERATOR","operator","before","rightPart","startContext","getContext","endContext","oneOfSet","parseOneOfSet","ILLEGAL_CHARACTER_REGEXP","values","prevValue","charCodeAt","nextValue","fromCharCode","array","PatternMatcher","matchTree","allowOverflow","matchedChars","overflow","characters","tree","last","characterString","partialMatch","restCharacters","JSON","stringify","_result","_step2","_iterator2","_char","LONGEST_DUMMY_PHONE_NUMBER","NATIONAL_PREFIX_SEPARATORS_PATTERN","NON_ALTERING_FORMAT_REG_EXP","AsYouTypeFormatter","resetFormat","chosenFormat","template","nationalNumberTemplate","populatedNationalNumberTemplate","populatedNationalNumberTemplatePosition","isNANP","matchingFormats","narrowDownMatchingFormats","canFormatCompleteNumber","formattedCompleteNumber","setNationalNumberTemplate","lastIndexOf","formatNationalNumberWithNextDigits","previouslyChosenFormat","newlyChosenFormat","chooseFormat","formatNextNationalNumberDigits","_this2","leadingDigitsPatternIndex","formatSuits","formatMatches","nationalPrefixIsMandatoryWhenFormattingInNationalFormat","leadingDigitsPatternsCount","min","leadingDigitsPattern","_this3","_loop","getFormatFormat","createTemplateForFormat","_ret","getTemplateForFormat","spacing","internationalPrefix","getInternationalPrefixBeforeCountryCallingCode","getDigitsWithoutInternationalPrefix","_ref4","strictPattern","nationalNumberDummyDigits","nationalPrefixIncludedInTemplate","numberFormat","numberFormatWithNationalPrefix","position","populateTemplateWithDigits","_ref5","VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN","VALID_FORMATTED_PHONE_NUMBER_PART","AFTER_PHONE_NUMBER_DIGITS_END_PATTERN","COMPLEX_NATIONAL_PREFIX","AsYouTypeParser","onNationalSignificantNumberChange","justLeadingPlus","_extractFormattedDigi","_extractFormattedDigi4","extractedNumber","hasPlus","_extractFormattedDigitsAndPlus","formattedDigits","extractFormattedDigitsAndPlus","_extractFormattedDigi2","startInternationalNumber","inputDigits","hasReceivedThreeLeadingDigits","appendDigits","extractIddPrefix","isWaitingForCountryCallingCode","appendNationalSignificantNumberDigits","hasExtractedNationalSignificantNumber","extractNationalSignificantNumber","stateUpdate","update","_extractCountryCallingCode","couldPossiblyExtractAnotherNationalSignificantNumber","nationalDigits","setState","onExtractedNationalNumber","prevNationalSignificantNumber","_extractNationalNumbe2","nationalSignificantNumberIndex","extractAnotherNationalSignificantNumber","fixMissingPlus","extractCallingCodeAndNationalSignificantNumber","_extractCountryCallin2","newCallingCode","AsYouType","optionsOrDefaultCountry","_this$getCountryAndCa2","getCountryAndCallingCode","reset","_this$parser$input","parser","formattedOutput","determineTheCountryIfNeeded","formatter","reExtractNationalSignificantNumber","getFullNumber","getNonFormattedNumber","isInternational","getCallingCode","_getCountry","isCountryCallingCodeAmbiguous","determineTheCountry","prefix","_this$state","getNonFormattedNationalNumberWithPrefix","_this$state2","_this$state3","getNumber","getTemplate","getNonFormattedTemplate","getCountries","getExampleNumber","examples","formatIncompletePhoneNumber","parsePhoneNumberWithError","_parsePhoneNumberWithError","_parsePhoneNumberFromString","_PhoneNumberMatcher","_AsYouType","_Metadata","_findPhoneNumbersInText","_formatIncompletePhoneNumber","_getCountries","_getCountryCallingCode","_getExampleNumber","_getExtPrefix","_isPossiblePhoneNumber","_isSupportedCountry","_isValidPhoneNumber","_searchNumbers","_searchPhoneNumbersInText","_validatePhoneNumberLength"],"mappings":"sPAGe,IAAAA,EAAA,CAACC,QAAU,EAAEC,sBAAwB,CAAC,EAAI,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,EAAI,CAAC,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,KAAK,KAAK,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,KAAK,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-mobile.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-mobile.js new file mode 100644 index 00000000..f25ee725 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-mobile.js @@ -0,0 +1,2 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).libphonenumber={})}(this,(function(t){"use strict";var e={version:4,country_calling_codes:{1:["US","AG","AI","AS","BB","BM","BS","CA","DM","DO","GD","GU","JM","KN","KY","LC","MP","MS","PR","SX","TC","TT","VC","VG","VI"],7:["RU","KZ"],20:["EG"],27:["ZA"],30:["GR"],31:["NL"],32:["BE"],33:["FR"],34:["ES"],36:["HU"],39:["IT","VA"],40:["RO"],41:["CH"],43:["AT"],44:["GB","GG","IM","JE"],45:["DK"],46:["SE"],47:["NO","SJ"],48:["PL"],49:["DE"],51:["PE"],52:["MX"],53:["CU"],54:["AR"],55:["BR"],56:["CL"],57:["CO"],58:["VE"],60:["MY"],61:["AU","CC","CX"],62:["ID"],63:["PH"],64:["NZ"],65:["SG"],66:["TH"],81:["JP"],82:["KR"],84:["VN"],86:["CN"],90:["TR"],91:["IN"],92:["PK"],93:["AF"],94:["LK"],95:["MM"],98:["IR"],211:["SS"],212:["MA","EH"],213:["DZ"],216:["TN"],218:["LY"],220:["GM"],221:["SN"],222:["MR"],223:["ML"],224:["GN"],225:["CI"],226:["BF"],227:["NE"],228:["TG"],229:["BJ"],230:["MU"],231:["LR"],232:["SL"],233:["GH"],234:["NG"],235:["TD"],236:["CF"],237:["CM"],238:["CV"],239:["ST"],240:["GQ"],241:["GA"],242:["CG"],243:["CD"],244:["AO"],245:["GW"],246:["IO"],247:["AC"],248:["SC"],249:["SD"],250:["RW"],251:["ET"],252:["SO"],253:["DJ"],254:["KE"],255:["TZ"],256:["UG"],257:["BI"],258:["MZ"],260:["ZM"],261:["MG"],262:["RE","YT"],263:["ZW"],264:["NA"],265:["MW"],266:["LS"],267:["BW"],268:["SZ"],269:["KM"],290:["SH","TA"],291:["ER"],297:["AW"],298:["FO"],299:["GL"],350:["GI"],351:["PT"],352:["LU"],353:["IE"],354:["IS"],355:["AL"],356:["MT"],357:["CY"],358:["FI","AX"],359:["BG"],370:["LT"],371:["LV"],372:["EE"],373:["MD"],374:["AM"],375:["BY"],376:["AD"],377:["MC"],378:["SM"],380:["UA"],381:["RS"],382:["ME"],383:["XK"],385:["HR"],386:["SI"],387:["BA"],389:["MK"],420:["CZ"],421:["SK"],423:["LI"],500:["FK"],501:["BZ"],502:["GT"],503:["SV"],504:["HN"],505:["NI"],506:["CR"],507:["PA"],508:["PM"],509:["HT"],590:["GP","BL","MF"],591:["BO"],592:["GY"],593:["EC"],594:["GF"],595:["PY"],596:["MQ"],597:["SR"],598:["UY"],599:["CW","BQ"],670:["TL"],672:["NF"],673:["BN"],674:["NR"],675:["PG"],676:["TO"],677:["SB"],678:["VU"],679:["FJ"],680:["PW"],681:["WF"],682:["CK"],683:["NU"],685:["WS"],686:["KI"],687:["NC"],688:["TV"],689:["PF"],690:["TK"],691:["FM"],692:["MH"],850:["KP"],852:["HK"],853:["MO"],855:["KH"],856:["LA"],880:["BD"],886:["TW"],960:["MV"],961:["LB"],962:["JO"],963:["SY"],964:["IQ"],965:["KW"],966:["SA"],967:["YE"],968:["OM"],970:["PS"],971:["AE"],972:["IL"],973:["BH"],974:["QA"],975:["BT"],976:["MN"],977:["NP"],992:["TJ"],993:["TM"],994:["AZ"],995:["GE"],996:["KG"],998:["UZ"]},countries:{AC:["247","00","(?:[01589]\\d|[46])\\d{4}",[5,6],0,0,0,0,0,0,0,[0,["4\\d{4}",[5]]]],AD:["376","00","(?:1|6\\d)\\d{7}|[135-9]\\d{5}",[6,8,9],[["(\\d{3})(\\d{3})","$1 $2",["[135-9]"]],["(\\d{4})(\\d{4})","$1 $2",["1"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]],0,0,0,0,0,0,[0,["690\\d{6}|[356]\\d{5}",[6,9]]]],AE:["971","00","(?:[4-7]\\d|9[0-689])\\d{7}|800\\d{2,9}|[2-4679]\\d{7}",[5,6,7,8,9,10,11,12],[["(\\d{3})(\\d{2,9})","$1 $2",["60|8"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[236]|[479][2-8]"],"0$1"],["(\\d{3})(\\d)(\\d{5})","$1 $2 $3",["[479]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"]],"0",0,0,0,0,0,[0,["5[024-68]\\d{7}",[9]]]],AF:["93","00","[2-7]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"]],"0",0,0,0,0,0,[0,["7\\d{8}"]]],AG:["1","011","(?:268|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([457]\\d{6})$","268$1",0,"268",[0,["268(?:464|7(?:1[3-9]|[28]\\d|3[0246]|64|7[0-689]))\\d{4}"]]],AI:["1","011","(?:264|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2457]\\d{6})$","264$1",0,"264",[0,["264(?:235|4(?:69|76)|5(?:3[6-9]|8[1-4])|7(?:29|72))\\d{4}"]]],AL:["355","00","(?:700\\d\\d|900)\\d{3}|8\\d{5,7}|(?:[2-5]|6\\d)\\d{7}",[6,7,8,9],[["(\\d{3})(\\d{3,4})","$1 $2",["80|9"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["4[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2358][2-5]|4"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["[23578]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["6"],"0$1"]],"0",0,0,0,0,0,[0,["6(?:[78][2-9]|9\\d)\\d{6}",[9]]]],AM:["374","00","(?:[1-489]\\d|55|60|77)\\d{6}",[8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[89]0"],"0 $1"],["(\\d{3})(\\d{5})","$1 $2",["2|3[12]"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["1|47"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[3-9]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:33|4[1349]|55|77|88|9[13-9])\\d{6}"]]],AO:["244","00","[29]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[29]"]]],0,0,0,0,0,0,[0,["9[1-59]\\d{7}"]]],AR:["54","00","(?:11|[89]\\d\\d)\\d{8}|[2368]\\d{9}",[10,11],[["(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])","2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["1"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2-$3",["[23]"],"0$1",1],["(\\d)(\\d{4})(\\d{2})(\\d{4})","$2 15-$3-$4",["9(?:2[2-469]|3[3-578])","9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))","9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",0,"$1 $2 $3-$4"],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 15-$3-$4",["91"],"0$1",0,"$1 $2 $3-$4"],["(\\d{3})(\\d{3})(\\d{5})","$1-$2-$3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 15-$3-$4",["9"],"0$1",0,"$1 $2 $3-$4"]],"0",0,"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?","9$1",0,0,[0,["93(?:7(?:1[15]|81)[46]|8(?:(?:21|4[16]|69|9[12])[46]|88[013-9]))\\d{5}|9(?:29(?:54|66)|3(?:7(?:55|77)|865))[2-8]\\d{5}|9(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|473|9(?:[07]2|2[26]|34|46))|3327)[45]\\d{5}|9(?:2(?:284|3(?:02|23)|657|920)|3(?:4(?:8[27]|92)|541|878))[2-7]\\d{5}|9(?:2(?:(?:26|62)2|320|477|9(?:42|83))|3(?:329|4(?:[47]6|62|89)|564))[2-6]\\d{5}|(?:675\\d|9(?:11[1-8]\\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-7]|[235][4-6]|84)|5(?:1[2-9]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:0[45]|[17][2-6]|3[4-6]|[58][3-6]))))\\d{6}|92(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|475|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\d{5}|9(?:2(?:2(?:57|81)|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|71)|5(?:25|37|4[347]|71)|7(?:18|5[17])))[3-6]\\d{5}|9(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[03-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[145]|4[13]|5[468]|7[2-5]|8[26])|8(?:2[5-7]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\d{5}"]]],AS:["1","011","(?:[58]\\d\\d|684|900)\\d{7}",[10],0,"1",0,"1|([267]\\d{6})$","684$1",0,"684",[0,["684(?:2(?:48|5[2468]|72)|7(?:3[13]|70|82))\\d{4}"]]],AT:["43","00","1\\d{3,12}|2\\d{6,12}|43(?:(?:0\\d|5[02-9])\\d{3,9}|2\\d{4,5}|[3467]\\d{4}|8\\d{4,6}|9\\d{4,7})|5\\d{4,12}|8\\d{7,12}|9\\d{8,12}|(?:[367]\\d|4[0-24-9])\\d{4,11}",[4,5,6,7,8,9,10,11,12,13],[["(\\d)(\\d{3,12})","$1 $2",["1(?:11|[2-9])"],"0$1"],["(\\d{3})(\\d{2})","$1 $2",["517"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["5[079]"],"0$1"],["(\\d{3})(\\d{3,10})","$1 $2",["(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]"],"0$1"],["(\\d{4})(\\d{3,9})","$1 $2",["[2-467]|5[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["5"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,7})","$1 $2 $3",["5"],"0$1"]],"0",0,0,0,0,0,[0,["6(?:5[0-3579]|6[013-9]|[7-9]\\d)\\d{4,10}",[7,8,9,10,11,12,13]]]],AU:["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{7}(?:\\d(?:\\d{2})?)?|8[0-24-9]\\d{7})|[2-478]\\d{8}|1\\d{4,7}",[5,6,7,8,9,10,12],[["(\\d{2})(\\d{3,4})","$1 $2",["16"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,4})","$1 $2 $3",["16"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["14|4"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[2378]"],"(0$1)"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:30|[89])"]]],"0",0,"0|(183[12])",0,0,0,[0,["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]]],"0011"],AW:["297","00","(?:[25-79]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[25-9]"]]],0,0,0,0,0,0,[0,["(?:290|5[69]\\d|6(?:[03]0|22|4[0-2]|[69]\\d)|7(?:[34]\\d|7[07])|9(?:6[45]|9[4-8]))\\d{4}"]]],AX:["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","2\\d{4,9}|35\\d{4,5}|(?:60\\d\\d|800)\\d{4,6}|7\\d{5,11}|(?:[14]\\d|3[0-46-9]|50)\\d{4,8}",[5,6,7,8,9,10,11,12],0,"0",0,0,0,0,"18",[0,["4946\\d{2,6}|(?:4[0-8]|50)\\d{4,8}",[6,7,8,9,10]]],"00"],AZ:["994","00","365\\d{6}|(?:[124579]\\d|60|88)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[28]|2|365|46","1[28]|2|365[45]|46","1[28]|2|365(?:4|5[02])|46"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[13-9]"],"0$1"]],"0",0,0,0,0,0,[0,["36554\\d{4}|(?:[16]0|4[04]|5[015]|7[07]|99)\\d{7}"]]],BA:["387","00","6\\d{8}|(?:[35689]\\d|49|70)\\d{6}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["6[1-3]|[7-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2-$3",["[3-5]|6[56]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["6"],"0$1"]],"0",0,0,0,0,0,[0,["6040\\d{5}|6(?:03|[1-356]|44|7\\d)\\d{6}"]]],BB:["1","011","(?:246|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","246$1",0,"246",[0,["246(?:(?:2(?:[3568]\\d|4[0-57-9])|3(?:5[2-9]|6[0-6])|4(?:46|5\\d)|69[5-7]|8(?:[2-5]\\d|83))\\d|52(?:1[147]|20))\\d{3}"]]],BD:["880","00","[1-469]\\d{9}|8[0-79]\\d{7,8}|[2-79]\\d{8}|[2-9]\\d{7}|[3-9]\\d{6}|[57-9]\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{4,6})","$1-$2",["31[5-8]|[459]1"],"0$1"],["(\\d{3})(\\d{3,7})","$1-$2",["3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:28|4[14]|5)|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]"],"0$1"],["(\\d{4})(\\d{3,6})","$1-$2",["[13-9]|22"],"0$1"],["(\\d)(\\d{7,8})","$1-$2",["2"],"0$1"]],"0",0,0,0,0,0,[0,["(?:1[13-9]\\d|644)\\d{7}|(?:3[78]|44|66)[02-9]\\d{7}",[10]]]],BE:["32","00","4\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:80|9)0"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[239]|4[23]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[15-8]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4"],"0$1"]],"0",0,0,0,0,0,[0,["4[5-9]\\d{7}",[9]]]],BF:["226","00","[025-7]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[025-7]"]]],0,0,0,0,0,0,[0,["(?:0[1-35-7]|5[1-8]|[67]\\d)\\d{6}"]]],BG:["359","00","[2-7]\\d{6,7}|[89]\\d{6,8}|2\\d{5}",[6,7,8,9],[["(\\d)(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["43[1-6]|70[1-9]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:70|8)0"],"0$1"],["(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3",["43[1-7]|7"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[48]|9[08]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"]],"0",0,0,0,0,0,[0,["(?:43[07-9]|99[69]\\d)\\d{5}|(?:8[7-9]|98)\\d{7}",[8,9]]]],BH:["973","00","[136-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[13679]|8[047]"]]],0,0,0,0,0,0,[0,["(?:3(?:[1-79]\\d|8[0-47-9])\\d|6(?:3(?:00|33|6[16])|6(?:3[03-9]|[69]\\d|7[0-6])))\\d{4}"]]],BI:["257","00","(?:[267]\\d|31)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2367]"]]],0,0,0,0,0,0,[0,["(?:29|6[1257-9]|7[125-9])\\d{6}"]]],BJ:["229","00","(?:[25689]\\d|40)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24-689]"]]],0,0,0,0,0,0,[0,["(?:40|5[1-9]|6\\d|9[013-9])\\d{6}"]]],BL:["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[0,["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"]]],BM:["1","011","(?:441|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","441$1",0,"441",[0,["441(?:[2378]\\d|5[0-39])\\d{5}"]]],BN:["673","00","[2-578]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-578]"]]],0,0,0,0,0,0,[0,["(?:22[89]|[78]\\d\\d)\\d{4}"]]],BO:["591","00(?:1\\d)?","(?:[2-467]\\d\\d|8001)\\d{5}",[8,9],[["(\\d)(\\d{7})","$1 $2",["[23]|4[46]"]],["(\\d{8})","$1",["[67]"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["8"]]],"0",0,"0(1\\d)?",0,0,0,[0,["[67]\\d{7}",[8]]]],BQ:["599","00","(?:[34]1|7\\d)\\d{5}",[7],0,0,0,0,0,0,"[347]",[0,["(?:31(?:8[14-8]|9[14578])|416[14-9]|7(?:0[01]|7[07]|8\\d|9[056])\\d)\\d{3}"]]],BR:["55","00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)","(?:[1-46-9]\\d\\d|5(?:[0-46-9]\\d|5[0-46-9]))\\d{8}|[1-9]\\d{9}|[3589]\\d{8}|[34]\\d{7}",[8,9,10,11],[["(\\d{4})(\\d{4})","$1-$2",["300|4(?:0[02]|37)","4(?:02|37)0|[34]00"]],["(\\d{3})(\\d{2,3})(\\d{4})","$1 $2 $3",["(?:[358]|90)0"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]"],"($1)"],["(\\d{2})(\\d{5})(\\d{4})","$1 $2-$3",["[16][1-9]|[2-57-9]"],"($1)"]],"0",0,"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\d{10,11}))?","$2",0,0,[0,["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])(?:7|9\\d)\\d{7}",[10,11]]]],BS:["1","011","(?:242|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([3-8]\\d{6})$","242$1",0,"242",[0,["242(?:3(?:5[79]|7[56]|95)|4(?:[23][1-9]|4[1-35-9]|5[1-8]|6[2-8]|7\\d|81)|5(?:2[45]|3[35]|44|5[1-46-9]|65|77)|6[34]6|7(?:27|38)|8(?:0[1-9]|1[02-9]|2\\d|[89]9))\\d{4}"]]],BT:["975","00","[17]\\d{7}|[2-8]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[2-68]|7[246]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[67]|7"]]],0,0,0,0,0,0,[0,["(?:1[67]|77)\\d{6}",[8]]]],BW:["267","00","(?:0800|(?:[37]|800)\\d)\\d{6}|(?:[2-6]\\d|90)\\d{5}",[7,8,10],[["(\\d{2})(\\d{5})","$1 $2",["90"]],["(\\d{3})(\\d{4})","$1 $2",["[24-6]|3[15-79]"]],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37]"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[0,["(?:321|7(?:[1-7]\\d|8[01]))\\d{5}",[8]]]],BY:["375","810","(?:[12]\\d|33|44|902)\\d{7}|8(?:0[0-79]\\d{5,7}|[1-7]\\d{9})|8(?:1[0-489]|[5-79]\\d)\\d{7}|8[1-79]\\d{6,7}|8[0-79]\\d{5}|8\\d{5}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3})","$1 $2",["800"],"8 $1"],["(\\d{3})(\\d{2})(\\d{2,4})","$1 $2 $3",["800"],"8 $1"],["(\\d{4})(\\d{2})(\\d{3})","$1 $2-$3",["1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])","1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])"],"8 0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["1(?:[56]|7[467])|2[1-3]"],"8 0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-4]"],"8 0$1"],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["[89]"],"8 $1"]],"8",0,"0|80?",0,0,0,[0,["(?:2(?:5[5-79]|9[1-9])|(?:33|44)\\d)\\d{6}",[9]]],"8~10"],BZ:["501","00","(?:0800\\d|[2-8])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1-$2",["[2-8]"]],["(\\d)(\\d{3})(\\d{4})(\\d{3})","$1-$2-$3-$4",["0"]]],0,0,0,0,0,0,[0,["6[0-35-7]\\d{5}",[7]]]],CA:["1","011","(?:[2-8]\\d|90)\\d{8}|3\\d{6}",[7,10],0,"1",0,0,0,0,0,[0,["(?:2(?:04|[23]6|[48]9|50|63)|3(?:06|43|6[578])|4(?:03|1[68]|3[178]|50|68|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|13|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\d{6}",[10]]]],CC:["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[0,["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]]],"0011"],CD:["243","00","[189]\\d{8}|[1-68]\\d{6}",[7,9],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[1-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,[0,["88\\d{5}|(?:8[0-59]|9[017-9])\\d{7}"]]],CF:["236","00","(?:[27]\\d{3}|8776)\\d{4}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[278]"]]],0,0,0,0,0,0,[0,["7[02457]\\d{6}"]]],CG:["242","00","222\\d{6}|(?:0\\d|80)\\d{7}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["8"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[02]"]]],0,0,0,0,0,0,[0,["026(?:1[0-5]|6[6-9])\\d{4}|0(?:[14-6]\\d\\d|2(?:40|5[5-8]|6[07-9]))\\d{5}"]]],CH:["41","00","8\\d{11}|[2-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8[047]|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-79]|81"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["8"],"0$1"]],"0",0,0,0,0,0,[0,["7[35-9]\\d{7}"]]],CI:["225","00","[02]\\d{9}",[10],[["(\\d{2})(\\d{2})(\\d)(\\d{5})","$1 $2 $3 $4",["2"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3 $4",["0"]]],0,0,0,0,0,0,[0,["0704[0-7]\\d{5}|0(?:[15]\\d\\d|7(?:0[0-37-9]|[4-9][7-9]))\\d{6}"]]],CK:["682","00","[2-578]\\d{4}",[5],[["(\\d{2})(\\d{3})","$1 $2",["[2-578]"]]],0,0,0,0,0,0,[0,["[578]\\d{4}"]]],CL:["56","(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0","12300\\d{6}|6\\d{9,10}|[2-9]\\d{8}",[9,10,11],[["(\\d{5})(\\d{4})","$1 $2",["219","2196"],"($1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["44"]],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2[1-36]"],"($1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["9[2-9]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])"],"($1)"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["60|8"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{3})(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3 $4",["60"]]],0,0,0,0,0,0,[0,["2(?:1982[0-6]|3314[05-9])\\d{3}|(?:2(?:1(?:160|962)|3(?:2\\d\\d|3(?:[0346]\\d|1[0-35-9]|2[1-9]|5[0-24-9]|7[0-3])|600)|646[59])|80[1-9]\\d\\d|9(?:3(?:[0-57-9]\\d\\d|6(?:0[02-9]|[1-9]\\d))|6(?:[0-8]\\d\\d|9(?:[02-79]\\d|1[05-9]))|7[1-9]\\d\\d|9(?:[03-9]\\d\\d|1(?:[0235-9]\\d|4[0-24-9])|2(?:[0-79]\\d|8[0-46-9]))))\\d{4}|(?:22|3[2-5]|[47][1-35]|5[1-3578]|6[13-57]|8[1-9]|9[2458])\\d{7}",[9]]]],CM:["237","00","[26]\\d{8}|88\\d{6,7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["88"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[26]|88"]]],0,0,0,0,0,0,[0,["(?:24[23]|6[25-9]\\d)\\d{6}",[9]]]],CN:["86","00|1(?:[12]\\d|79)\\d\\d00","1[127]\\d{8,9}|2\\d{9}(?:\\d{2})?|[12]\\d{6,7}|86\\d{6}|(?:1[03-689]\\d|6)\\d{7,9}|(?:[3-579]\\d|8[0-57-9])\\d{6,9}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5,6})","$1 $2",["(?:10|2[0-57-9])[19]","(?:10|2[0-57-9])(?:10|9[56])","(?:10|2[0-57-9])(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{5,6})","$1 $2",["3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]","(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))[19]","85[23](?:10|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:10|9[56])","85[23](?:100|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["(?:4|80)0"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["10|2(?:[02-57-9]|1[1-9])","10|2(?:[02-57-9]|1[1-9])","10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]"],"0$1",1],["(\\d{3})(\\d{7,8})","$1 $2",["9"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["80"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[3-578]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["1[3-9]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3 $4",["[12]"],"0$1",1]],"0",0,"0|(1(?:[12]\\d|79)\\d\\d)",0,0,0,[0,["1740[0-5]\\d{6}|1(?:[38]\\d|4[57]|[59][0-35-9]|6[25-7]|7[0-35-8])\\d{8}",[11]]],"00"],CO:["57","00(?:4(?:[14]4|56)|[579])","(?:60\\d\\d|9101)\\d{6}|(?:1\\d|3)\\d{9}",[10,11],[["(\\d{3})(\\d{7})","$1 $2",["6"],"($1)"],["(\\d{3})(\\d{7})","$1 $2",["3[0-357]|91"]],["(\\d)(\\d{3})(\\d{7})","$1-$2-$3",["1"],"0$1",0,"$1 $2 $3"]],"0",0,"0(4(?:[14]4|56)|[579])?",0,0,0,[0,["3333(?:0(?:0\\d|1[0-5])|[4-9]\\d\\d)\\d{3}|(?:3(?:24[1-9]|3(?:00|3[0-24-9]))|9101)\\d{6}|3(?:0[0-5]|1\\d|2[0-3]|5[01]|70)\\d{7}",[10]]]],CR:["506","00","(?:8\\d|90)\\d{8}|(?:[24-8]\\d{3}|3005)\\d{4}",[8,10],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[3-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[89]"]]],0,0,"(19(?:0[0-2468]|1[09]|20|66|77|99))",0,0,0,[0,["(?:3005\\d|6500[01])\\d{3}|(?:5[07]|6[0-4]|7[0-3]|8[3-9])\\d{6}",[8]]]],CU:["53","119","[27]\\d{6,7}|[34]\\d{5,7}|(?:5|8\\d\\d)\\d{7}",[6,7,8,10],[["(\\d{2})(\\d{4,6})","$1 $2",["2[1-4]|[34]"],"(0$1)"],["(\\d)(\\d{6,7})","$1 $2",["7"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["5"],"0$1"],["(\\d{3})(\\d{7})","$1 $2",["8"],"0$1"]],"0",0,0,0,0,0,[0,["5\\d{7}",[8]]]],CV:["238","0","(?:[2-59]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[2-589]"]]],0,0,0,0,0,0,[0,["(?:36|5[1-389]|9\\d)\\d{5}"]]],CW:["599","00","(?:[34]1|60|(?:7|9\\d)\\d)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[3467]"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["9[4-8]"]]],0,0,0,0,0,"[69]",[0,["953[01]\\d{4}|9(?:5[12467]|6[5-9])\\d{5}"]]],CX:["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[0,["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]]],"0011"],CY:["357","00","(?:[279]\\d|[58]0)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[257-9]"]]],0,0,0,0,0,0,[0,["9[4-79]\\d{6}"]]],CZ:["420","00","(?:[2-578]\\d|60)\\d{7}|9\\d{8,11}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]|9[015-7]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3 $4",["96"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]],0,0,0,0,0,0,[0,["(?:60[1-8]|7(?:0[2-5]|[2379]\\d))\\d{6}"]]],DE:["49","00","[2579]\\d{5,14}|49(?:[34]0|69|8\\d)\\d\\d?|49(?:37|49|60|7[089]|9\\d)\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\d{1,8}|(?:1|[368]\\d|4[0-8])\\d{3,13}|49(?:[015]\\d|2[13]|31|[46][1-8])\\d{1,9}",[4,5,6,7,8,9,10,11,12,13,14,15],[["(\\d{2})(\\d{3,13})","$1 $2",["3[02]|40|[68]9"],"0$1"],["(\\d{3})(\\d{3,12})","$1 $2",["2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1","2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1"],"0$1"],["(\\d{4})(\\d{2,11})","$1 $2",["[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]","[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["138"],"0$1"],["(\\d{5})(\\d{2,10})","$1 $2",["3"],"0$1"],["(\\d{3})(\\d{5,11})","$1 $2",["181"],"0$1"],["(\\d{3})(\\d)(\\d{4,10})","$1 $2 $3",["1(?:3|80)|9"],"0$1"],["(\\d{3})(\\d{7,8})","$1 $2",["1[67]"],"0$1"],["(\\d{3})(\\d{7,12})","$1 $2",["8"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["185","1850","18500"],"0$1"],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["18[68]"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["15[0568]"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["15[1279]"],"0$1"],["(\\d{3})(\\d{8})","$1 $2",["18"],"0$1"],["(\\d{3})(\\d{2})(\\d{7,8})","$1 $2 $3",["1(?:6[023]|7)"],"0$1"],["(\\d{4})(\\d{2})(\\d{7})","$1 $2 $3",["15[279]"],"0$1"],["(\\d{3})(\\d{2})(\\d{8})","$1 $2 $3",["15"],"0$1"]],"0",0,0,0,0,0,[0,["15[0-25-9]\\d{8}|1(?:6[023]|7\\d)\\d{7,8}",[10,11]]]],DJ:["253","00","(?:2\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[27]"]]],0,0,0,0,0,0,[0,["77\\d{6}"]]],DK:["45","00","[2-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-9]"]]],0,0,0,0,0,0,[0,["(?:[2-7]\\d|8[126-9]|9[1-46-9])\\d{6}"]]],DM:["1","011","(?:[58]\\d\\d|767|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","767$1",0,"767",[0,["767(?:2(?:[2-4689]5|7[5-7])|31[5-7]|61[1-8]|70[1-6])\\d{4}"]]],DO:["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,0,0,0,"8001|8[024]9",[0,["8[024]9[2-9]\\d{6}"]]],DZ:["213","00","(?:[1-4]|[5-79]\\d|80)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["9"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-8]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:5(?:4[0-29]|5\\d|6[0-2])|6(?:[569]\\d|7[0-6])|7[7-9]\\d)\\d{6}",[9]]]],EC:["593","00","1\\d{9,10}|(?:[2-7]|9\\d)\\d{7}",[8,9,10,11],[["(\\d)(\\d{3})(\\d{4})","$1 $2-$3",["[2-7]"],"(0$1)",0,"$1-$2-$3"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{3})(\\d{3,4})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[0,["964[0-2]\\d{5}|9(?:39|[57][89]|6[0-36-9]|[89]\\d)\\d{6}",[9]]]],EE:["372","00","8\\d{9}|[4578]\\d{7}|(?:[3-8]\\d|90)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88","[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88"]],["(\\d{4})(\\d{3,4})","$1 $2",["[45]|8(?:00|[1-49])","[45]|8(?:00[1-9]|[1-49])"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[0,["(?:5\\d{5}|8(?:1(?:0(?:000|[3-9]\\d\\d)|(?:1(?:0[236]|1\\d)|(?:23|[3-79]\\d)\\d)\\d)|2(?:0(?:000|(?:19|[2-7]\\d)\\d)|(?:(?:[124-6]\\d|3[5-9])\\d|7(?:[3679]\\d|8[13-9])|8(?:[2-6]\\d|7[01]))\\d)|[349]\\d{4}))\\d\\d|5(?:(?:[02]\\d|5[0-478])\\d|1(?:[0-8]\\d|95)|6(?:4[0-4]|5[1-589]))\\d{3}",[7,8]]]],EG:["20","00","[189]\\d{8,9}|[24-6]\\d{8}|[135]\\d{7}",[8,9,10],[["(\\d)(\\d{7,8})","$1 $2",["[23]"],"0$1"],["(\\d{2})(\\d{6,7})","$1 $2",["1[35]|[4-6]|8[2468]|9[235-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[189]"],"0$1"]],"0",0,0,0,0,0,[0,["1[0-25]\\d{8}",[10]]]],EH:["212","00","[5-8]\\d{8}",[9],0,"0",0,0,0,0,"528[89]",[0,["(?:6(?:[0-79]\\d|8[0-247-9])|7(?:[017]\\d|2[0-2]|6[0-8]|8[0-3]))\\d{6}"]]],ER:["291","00","[178]\\d{6}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[178]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:17[1-3]|7\\d\\d)\\d{4}"]]],ES:["34","00","[5-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]00"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-9]"]]],0,0,0,0,0,0,[0,["(?:590[16]00\\d|9(?:6906(?:09|10)|7390\\d\\d))\\d\\d|(?:6\\d|7[1-48])\\d{7}"]]],ET:["251","00","(?:11|[2-579]\\d)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-579]"],"0$1"]],"0",0,0,0,0,0,[0,["7001\\d{5}|(?:7(?:0[1-9]|1[01]|77|86|99)|9\\d\\d)\\d{6}"]]],FI:["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","[1-35689]\\d{4}|7\\d{10,11}|(?:[124-7]\\d|3[0-46-9])\\d{8}|[1-9]\\d{5,8}",[5,6,7,8,9,10,11,12],[["(\\d)(\\d{4,9})","$1 $2",["[2568][1-8]|3(?:0[1-9]|[1-9])|9"],"0$1"],["(\\d{3})(\\d{3,7})","$1 $2",["[12]00|[368]|70[07-9]"],"0$1"],["(\\d{2})(\\d{4,8})","$1 $2",["[1245]|7[135]"],"0$1"],["(\\d{2})(\\d{6,10})","$1 $2",["7"],"0$1"]],"0",0,0,0,0,"1[03-79]|[2-9]",[0,["4946\\d{2,6}|(?:4[0-8]|50)\\d{4,8}",[6,7,8,9,10]]],"00"],FJ:["679","0(?:0|52)","45\\d{5}|(?:0800\\d|[235-9])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1 $2",["[235-9]|45"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]]],0,0,0,0,0,0,[0,["(?:[279]\\d|45|5[01568]|8[034679])\\d{5}",[7]]],"00"],FK:["500","00","[2-7]\\d{4}",[5],0,0,0,0,0,0,0,[0,["[56]\\d{4}"]]],FM:["691","00","(?:[39]\\d\\d|820)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[389]"]]],0,0,0,0,0,0,[0,["31(?:00[67]|208|309)\\d\\d|(?:3(?:[2357]0[1-9]|602|804|905)|(?:820|9[2-7]\\d)\\d)\\d{3}"]]],FO:["298","00","[2-9]\\d{5}",[6],[["(\\d{6})","$1",["[2-9]"]]],0,0,"(10(?:01|[12]0|88))",0,0,0,[0,["(?:[27][1-9]|5\\d|9[16])\\d{4}"]]],FR:["33","00","[1-9]\\d{8}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0 $1"],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[1-79]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:6(?:[0-24-8]\\d|3[0-8]|9[589])|7(?:00|[3-9]\\d))\\d{6}"]]],GA:["241","00","(?:[067]\\d|11)\\d{6}|[2-7]\\d{6}",[7,8],[["(\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-7]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["11|[67]"],"0$1"]],0,0,"0(11\\d{6}|60\\d{6}|61\\d{6}|6[256]\\d{6}|7[467]\\d{6})","$1",0,0,[0,["(?:(?:0[2-7]|7[467])\\d|6(?:0[0-4]|10|[256]\\d))\\d{5}|[2-7]\\d{6}"]]],GB:["44","00","[1-357-9]\\d{9}|[18]\\d{8}|8\\d{6}",[7,9,10],[["(\\d{3})(\\d{4})","$1 $2",["800","8001","80011","800111","8001111"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["845","8454","84546","845464"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["800"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["1(?:38|5[23]|69|76|94)","1(?:(?:38|69)7|5(?:24|39)|768|946)","1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["1(?:[2-69][02-9]|[78])"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[25]|7(?:0|6[02-9])","[25]|7(?:0|6(?:[03-9]|2[356]))"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[1389]"],"0$1"]],"0",0,0,0,0,0,[0,["7(?:457[0-57-9]|700[01]|911[028])\\d{5}|7(?:[1-3]\\d\\d|4(?:[0-46-9]\\d|5[0-689])|5(?:0[0-8]|[13-9]\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\d|8[02-9]|9[0-689])|8(?:[014-9]\\d|[23][0-8])|9(?:[024-9]\\d|1[02-9]|3[0-689]))\\d{6}",[10]]],0," x"],GD:["1","011","(?:473|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","473$1",0,"473",[0,["473(?:4(?:0[2-79]|1[04-9]|2[0-5]|58)|5(?:2[01]|3[3-8])|901)\\d{4}"]]],GE:["995","00","(?:[3-57]\\d\\d|800)\\d{6}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["32"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[57]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[348]"],"0$1"]],"0",0,0,0,0,0,[0,["5(?:(?:0555|1(?:[17]77|555))[5-9]|757(?:7[7-9]|8[01]))\\d{3}|5(?:0070|11(?:33|51)|[25]222|3333)[0-4]\\d{3}|5(?:00(?:0\\d|5[05])|11(?:00|[124]\\d|3[01])|5200|75(?:00|[57]5)|8(?:0(?:[01]\\d|2[0-4])|58[89]|8(?:55|88)))\\d{4}|(?:5(?:[14]4|5[0157-9]|68|7[0147-9]|9[1-35-9])|790)\\d{6}"]]],GF:["594","00","(?:[56]94|80\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[0,["694(?:[0-249]\\d|3[0-8])\\d{4}"]]],GG:["44","00","(?:1481|[357-9]\\d{3})\\d{6}|8\\d{6}(?:\\d{2})?",[7,9,10],0,"0",0,"0|([25-9]\\d{5})$","1481$1",0,0,[0,["7(?:(?:781|839)\\d|911[17])\\d{5}",[10]]]],GH:["233","00","(?:[235]\\d{3}|800)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[235]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:2(?:[0346-9]\\d|5[67])|5(?:[0457]\\d|6[01]|9[1-9]))\\d{6}",[9]]]],GI:["350","00","(?:[25]\\d\\d|606)\\d{5}",[8],[["(\\d{3})(\\d{5})","$1 $2",["2"]]],0,0,0,0,0,0,[0,["(?:5[146-8]\\d|606)\\d{5}"]]],GL:["299","00","(?:19|[2-689]\\d|70)\\d{4}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["19|[2-9]"]]],0,0,0,0,0,0,[0,["[245]\\d{5}"]]],GM:["220","00","[2-9]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]],0,0,0,0,0,0,[0,["(?:[23679]\\d|5[0-389])\\d{5}"]]],GN:["224","00","722\\d{6}|(?:3|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["3"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[67]"]]],0,0,0,0,0,0,[0,["6[0-356]\\d{7}",[9]]]],GP:["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[0,["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"]]],GQ:["240","00","222\\d{6}|(?:3\\d|55|[89]0)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235]"]],["(\\d{3})(\\d{6})","$1 $2",["[89]"]]],0,0,0,0,0,0,[0,["(?:222|55\\d)\\d{6}"]]],GR:["30","00","5005000\\d{3}|8\\d{9,11}|(?:[269]\\d|70)\\d{8}",[10,11,12],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["21|7"]],["(\\d{4})(\\d{6})","$1 $2",["2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2689]"]],["(\\d{3})(\\d{3,4})(\\d{5})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[0,["68[57-9]\\d{7}|(?:69|94)\\d{8}",[10]]]],GT:["502","00","(?:1\\d{3}|[2-7])\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[0,["[3-5]\\d{7}",[8]]]],GU:["1","011","(?:[58]\\d\\d|671|900)\\d{7}",[10],0,"1",0,"1|([3-9]\\d{6})$","671$1",0,"671",[0,["671(?:3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[0236-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[0479]7|2[0167]|3[45]|8[7-9])|8(?:[2-57-9]8|6[48])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[78]))\\d{4}"]]],GW:["245","00","[49]\\d{8}|4\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["40"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"]]],0,0,0,0,0,0,[0,["9(?:5\\d|6[569]|77)\\d{6}",[9]]]],GY:["592","001","9008\\d{3}|(?:[2-467]\\d\\d|862)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-46-9]"]]],0,0,0,0,0,0,[0,["(?:6\\d\\d|70[015-7])\\d{4}"]]],HK:["852","00(?:30|5[09]|[126-9]?)","8[0-46-9]\\d{6,7}|9\\d{4,7}|(?:[2-7]|9\\d{3})\\d{7}",[5,6,7,8,9,11],[["(\\d{3})(\\d{2,5})","$1 $2",["900","9003"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[1-4]|9(?:0[1-9]|[1-8])"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]],["(\\d{3})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]],0,0,0,0,0,0,[0,["(?:4(?:44[5-9]|6(?:0[0-7]|1[0-6]|4[0-57-9]|6[0-4]|7[0-8]))|573[0-6]|6(?:26[013-8]|66[0-3])|70(?:7[1-5]|8[0-4])|848[015-9]|9(?:29[013-9]|59[0-4]))\\d{4}|(?:4(?:4[01]|6[2358])|5(?:[1-59][0-46-9]|6[0-4689]|7[0-246-9])|6(?:0[1-9]|[13-59]\\d|[268][0-57-9]|7[0-79])|84[09]|9(?:0[1-9]|1[02-9]|[2358][0-8]|[467]\\d))\\d{5}",[8]]],"00"],HN:["504","00","8\\d{10}|[237-9]\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1-$2",["[237-9]"]]],0,0,0,0,0,0,[0,["[37-9]\\d{7}",[8]]]],HR:["385","00","(?:[24-69]\\d|3[0-79])\\d{7}|80\\d{5,7}|[1-79]\\d{7}|6\\d{5,6}",[6,7,8,9],[["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["6[01]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{4})(\\d{3})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-5]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"]],"0",0,0,0,0,0,[0,["98\\d{6,7}|975(?:1\\d|77|9[67])\\d{4}|9(?:0[1-9]|[1259]\\d|7[0679])\\d{6}",[8,9]]]],HT:["509","00","[2-489]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[2-489]"]]],0,0,0,0,0,0,[0,["[34]\\d{7}"]]],HU:["36","00","[235-7]\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"06 $1"]],"06",0,0,0,0,0,[0,["(?:[257]0|3[01])\\d{7}",[9]]]],ID:["62","00[89]","(?:(?:00[1-9]|8\\d)\\d{4}|[1-36])\\d{6}|00\\d{10}|[1-9]\\d{8,10}|[2-9]\\d{7}",[7,8,9,10,11,12,13],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["15"]],["(\\d{2})(\\d{5,9})","$1 $2",["2[124]|[36]1"],"(0$1)"],["(\\d{3})(\\d{5,7})","$1 $2",["800"],"0$1"],["(\\d{3})(\\d{5,8})","$1 $2",["[2-79]"],"(0$1)"],["(\\d{3})(\\d{3,4})(\\d{3})","$1-$2-$3",["8[1-35-9]"],"0$1"],["(\\d{3})(\\d{6,8})","$1 $2",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["804"],"0$1"],["(\\d{3})(\\d)(\\d{3})(\\d{3})","$1 $2 $3 $4",["80"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1-$2-$3",["8"],"0$1"]],"0",0,0,0,0,0,[0,["8[1-35-9]\\d{7,10}",[9,10,11,12]]]],IE:["353","00","(?:1\\d|[2569])\\d{6,8}|4\\d{6,9}|7\\d{8}|8\\d{8,9}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["2[24-9]|47|58|6[237-9]|9[35-9]"],"(0$1)"],["(\\d{3})(\\d{5})","$1 $2",["[45]0"],"(0$1)"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["1"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2569]|4[1-69]|7[14]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["81"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[78]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["4"],"(0$1)"],["(\\d{2})(\\d)(\\d{3})(\\d{4})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[0,["8(?:22|[35-9]\\d)\\d{6}",[9]]]],IL:["972","0(?:0|1[2-9])","1\\d{6}(?:\\d{3,5})?|[57]\\d{8}|[1-489]\\d{7}",[7,8,9,10,11,12],[["(\\d{4})(\\d{3})","$1-$2",["125"]],["(\\d{4})(\\d{2})(\\d{2})","$1-$2-$3",["121"]],["(\\d)(\\d{3})(\\d{4})","$1-$2-$3",["[2-489]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1-$2-$3",["12"]],["(\\d{4})(\\d{6})","$1-$2",["159"]],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3-$4",["1[7-9]"]],["(\\d{3})(\\d{1,2})(\\d{3})(\\d{4})","$1-$2 $3-$4",["15"]]],"0",0,0,0,0,0,[0,["5(?:(?:[02368]\\d|[19][2-9]|4[1-9])\\d|5(?:01|1[79]|2[2-9]|3[0-3]|4[34]|5[015689]|6[6-8]|7[0-267]|8[7-9]|9[1-9]))\\d{5}",[9]]]],IM:["44","00","1624\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([25-8]\\d{5})$","1624$1",0,"74576|(?:16|7[56])24",[0,["76245[06]\\d{4}|7(?:4576|[59]24\\d|624[0-4689])\\d{5}"]]],IN:["91","00","(?:000800|[2-9]\\d\\d)\\d{7}|1\\d{7,12}",[8,9,10,11,12,13],[["(\\d{8})","$1",["5(?:0|2[23]|3[03]|[67]1|88)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)"],0,1],["(\\d{4})(\\d{4,5})","$1 $2",["180","1800"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["140"],0,1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["11|2[02]|33|4[04]|79[1-7]|80[2-46]","11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])","11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]"],"0$1",1],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807","1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]","1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\d|7(?:1(?:[013-8]\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\d|5[0-367])|70[13-7]))[2-7]"],"0$1",1],["(\\d{5})(\\d{5})","$1 $2",["[6-9]"],"0$1",1],["(\\d{4})(\\d{2,4})(\\d{4})","$1 $2 $3",["1(?:6|8[06])","1(?:6|8[06]0)"],0,1],["(\\d{4})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["18"],0,1]],"0",0,0,0,0,0,[0,["(?:61279|7(?:887[02-9]|9(?:313|79[07-9]))|8(?:079[04-9]|(?:84|91)7[02-8]))\\d{5}|(?:6(?:12|[2-47]1|5[17]|6[13]|80)[0189]|7(?:1(?:2[0189]|9[0-5])|2(?:[14][017-9]|8[0-59])|3(?:2[5-8]|[34][017-9]|9[016-9])|4(?:1[015-9]|[29][89]|39|8[389])|5(?:[15][017-9]|2[04-9]|9[7-9])|6(?:0[0-47]|1[0-257-9]|2[0-4]|3[19]|5[4589])|70[0289]|88[089]|97[02-8])|8(?:0(?:6[67]|7[02-8])|70[017-9]|84[01489]|91[0-289]))\\d{6}|(?:7(?:31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[0189]\\d|7[02-8])\\d{5}|(?:6(?:[09]\\d|1[04679]|2[03689]|3[05-9]|4[0489]|50|6[069]|7[07]|8[7-9])|7(?:0\\d|2[0235-79]|3[05-8]|40|5[0346-8]|6[6-9]|7[1-9]|8[0-79]|9[089])|8(?:0[01589]|1[0-57-9]|2[235-9]|3[03-57-9]|[45]\\d|6[02457-9]|7[1-69]|8[0-25-9]|9[02-9])|9\\d\\d)\\d{7}|(?:6(?:(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|8[124-6])\\d|7(?:[235689]\\d|4[0189]))|7(?:1(?:[013-8]\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-5])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\d|5[0-367])|70[13-7]|881))[0189]\\d{5}",[10]]]],IO:["246","00","3\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["3"]]],0,0,0,0,0,0,[0,["38\\d{5}"]]],IQ:["964","00","(?:1|7\\d\\d)\\d{7}|[2-6]\\d{7,8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-6]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[0,["7[3-9]\\d{8}",[10]]]],IR:["98","00","[1-9]\\d{9}|(?:[1-8]\\d\\d|9)\\d{3,4}",[4,5,6,7,10],[["(\\d{4,5})","$1",["96"],"0$1"],["(\\d{2})(\\d{4,5})","$1 $2",["(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[1-8]"],"0$1"]],"0",0,0,0,0,0,[0,["9(?:(?:0(?:[0-35]\\d|4[4-6])|(?:[13]\\d|2[0-3])\\d)\\d|9(?:[0-46]\\d\\d|5[15]0|8(?:1\\d|88)|9(?:0[0-3]|[19]\\d|21|77|8[7-9])))\\d{5}",[10]]]],IS:["354","00|1(?:0(?:01|[12]0)|100)","(?:38\\d|[4-9])\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["[4-9]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["3"]]],0,0,0,0,0,0,[0,["(?:38[589]\\d\\d|6(?:1[1-8]|2[0-6]|3[026-9]|4[014679]|5[0159]|6[0-69]|70|8[06-8]|9\\d)|7(?:5[057]|[6-9]\\d)|8(?:2[0-59]|[3-69]\\d|8[238]))\\d{4}"]],"00"],IT:["39","00","0\\d{5,10}|1\\d{8,10}|3(?:[0-8]\\d{7,10}|9\\d{7,8})|(?:55|70)\\d{8}|8\\d{5}(?:\\d{2,4})?",[6,7,8,9,10,11],[["(\\d{2})(\\d{4,6})","$1 $2",["0[26]"]],["(\\d{3})(\\d{3,6})","$1 $2",["0[13-57-9][0159]|8(?:03|4[17]|9[2-5])","0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))"]],["(\\d{4})(\\d{2,6})","$1 $2",["0(?:[13-579][2-46-8]|8[236-8])"]],["(\\d{4})(\\d{4})","$1 $2",["894"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[26]|5"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["1(?:44|[679])|[378]"]],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[13-57-9][0159]|14"]],["(\\d{2})(\\d{4})(\\d{5})","$1 $2 $3",["0[26]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["3"]]],0,0,0,0,0,0,[0,["3[1-9]\\d{8}|3[2-9]\\d{7}",[9,10]]]],JE:["44","00","1534\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([0-24-8]\\d{5})$","1534$1",0,0,[0,["7(?:(?:(?:50|82)9|937)\\d|7(?:00[378]|97[7-9]))\\d{5}"]]],JM:["1","011","(?:[58]\\d\\d|658|900)\\d{7}",[10],0,"1",0,0,0,0,"658|876",[0,["(?:658295|876(?:2(?:0[1-9]|[13-9]\\d|2[013-9])|[348]\\d\\d|5(?:0[1-9]|[1-9]\\d)|6(?:4[89]|6[67])|7(?:0[07]|7\\d|8[1-47-9]|9[0-36-9])|9(?:[01]9|9[0579])))\\d{4}"]]],JO:["962","00","(?:(?:[2689]|7\\d)\\d|32|53)\\d{6}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2356]|87"],"(0$1)"],["(\\d{3})(\\d{5,6})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["70"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[0,["7(?:[78][0-25-9]|9\\d)\\d{6}",[9]]]],JP:["81","010","00[1-9]\\d{6,14}|[257-9]\\d{9}|(?:00|[1-9]\\d\\d)\\d{6}",[8,9,10,11,12,13,14,15,16,17],[["(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3",["(?:12|57|99)0"],"0$1"],["(\\d{4})(\\d)(\\d{4})","$1-$2-$3",["1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:80|9[16])","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2-$3",["[36]|4(?:2[09]|7[01])","[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]"],"0$1"],["(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3",["[14]|[289][2-9]|5[3-9]|7[2-4679]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["800"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[257-9]"],"0$1"]],"0",0,0,0,0,0,[0,["[7-9]0[1-9]\\d{7}",[10]]]],KE:["254","000","(?:[17]\\d\\d|900)\\d{6}|(?:2|80)0\\d{6,7}|[4-6]\\d{6,8}",[7,8,9,10],[["(\\d{2})(\\d{5,7})","$1 $2",["[24-6]"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[17]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:1(?:0[0-6]|1[0-5]|2[014]|30)|7\\d\\d)\\d{6}",[9]]]],KG:["996","00","8\\d{9}|(?:[235-8]\\d|99)\\d{7}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["3(?:1[346]|[24-79])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235-79]|88"],"0$1"],["(\\d{3})(\\d{3})(\\d)(\\d{2,3})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[0,["312(?:58\\d|973)\\d{3}|(?:2(?:0[0-35]|2\\d)|5[0-24-7]\\d|7(?:[07]\\d|55)|88[08]|99[05-9])\\d{6}",[9]]]],KH:["855","00[14-9]","1\\d{9}|[1-9]\\d{7,8}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[0,["(?:(?:1[28]|3[18]|9[67])\\d|6[016-9]|7(?:[07-9]|[16]\\d)|8(?:[013-79]|8\\d))\\d{6}|(?:1\\d|9[0-57-9])\\d{6}|(?:2[3-6]|3[2-6]|4[2-4]|[5-7][2-5])48\\d{5}",[8,9]]]],KI:["686","00","(?:[37]\\d|6[0-79])\\d{6}|(?:[2-48]\\d|50)\\d{3}",[5,8],0,"0",0,0,0,0,0,[0,["(?:63\\d{3}|73(?:0[0-5]\\d|140))\\d{3}|[67]200[01]\\d{3}",[8]]]],KM:["269","00","[3478]\\d{6}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[3478]"]]],0,0,0,0,0,0,[0,["[34]\\d{6}"]]],KN:["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","869$1",0,"869",[0,["869(?:48[89]|55[6-8]|66\\d|76[02-7])\\d{4}"]]],KP:["850","00|99","85\\d{6}|(?:19\\d|[2-7])\\d{7}",[8,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"]],"0",0,0,0,0,0,[0,["19[1-3]\\d{7}",[10]]]],KR:["82","00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))","00[1-9]\\d{8,11}|(?:[12]|5\\d{3})\\d{7}|[13-6]\\d{9}|(?:[1-6]\\d|80)\\d{7}|[3-6]\\d{4,5}|(?:00|7)0\\d{8}",[5,6,8,9,10,11,12,13,14],[["(\\d{2})(\\d{3,4})","$1-$2",["(?:3[1-3]|[46][1-4]|5[1-5])1"],"0$1"],["(\\d{4})(\\d{4})","$1-$2",["1"]],["(\\d)(\\d{3,4})(\\d{4})","$1-$2-$3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60|8"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1-$2-$3",["[1346]|5[1-5]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{2})(\\d{5})(\\d{4})","$1-$2-$3",["5"],"0$1"]],"0",0,"0(8(?:[1-46-8]|5\\d\\d))?",0,0,0,[0,["1(?:05(?:[0-8]\\d|9[0-6])|22[13]\\d)\\d{4,5}|1(?:0[1-46-9]|[16-9]\\d|2[013-9])\\d{6,7}",[9,10]]]],KW:["965","00","18\\d{5}|(?:[2569]\\d|41)\\d{6}",[7,8],[["(\\d{4})(\\d{3,4})","$1 $2",["[169]|2(?:[235]|4[1-35-9])|52"]],["(\\d{3})(\\d{5})","$1 $2",["[245]"]]],0,0,0,0,0,0,[0,["(?:41\\d\\d|5(?:(?:[05]\\d|1[0-7]|6[56])\\d|2(?:22|5[25])|7(?:55|77)|88[58])|6(?:(?:0[034679]|5[015-9]|6\\d)\\d|1(?:00|11|66)|222|3[36]3|444|7(?:0[013-9]|[67]\\d)|888|9(?:[069]\\d|3[039]))|9(?:(?:0[09]|22|[4679]\\d|8[057-9])\\d|1(?:1[01]|99)|3(?:00|33)|5(?:00|5\\d)))\\d{4}",[8]]]],KY:["1","011","(?:345|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","345$1",0,"345",[0,["345(?:32[1-9]|42[0-4]|5(?:1[67]|2[5-79]|4[6-9]|50|76)|649|82[56]|9(?:1[679]|2[2-9]|3[06-9]|90))\\d{4}"]]],KZ:["7","810","(?:33622|8\\d{8})\\d{5}|[78]\\d{9}",[10,14],0,"8",0,0,0,0,"33|7",[0,["7(?:0[0-25-8]|47|6[0-4]|7[15-8]|85)\\d{7}",[10]]],"8~10"],LA:["856","00","[23]\\d{9}|3\\d{8}|(?:[235-8]\\d|41)\\d{6}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2[13]|3[14]|[4-8]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["30[013-9]"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[23]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:20(?:[239]\\d|5[24-9]|7[6-8]|88)|302\\d)\\d{6}",[10]]]],LB:["961","00","[27-9]\\d{7}|[13-9]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27-9]"]]],"0",0,0,0,0,0,[0,["793(?:[01]\\d|2[0-4])\\d{3}|(?:(?:3|81)\\d|7(?:[01]\\d|6[013-9]|8[89]|9[12]))\\d{5}"]]],LC:["1","011","(?:[58]\\d\\d|758|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","758$1",0,"758",[0,["758(?:28[4-7]|384|4(?:6[01]|8[4-9])|5(?:1[89]|20|84)|7(?:1[2-9]|2\\d|3[0-3])|812)\\d{4}"]]],LI:["423","00","[68]\\d{8}|(?:[2378]\\d|90)\\d{5}",[7,9],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[2379]|8(?:0[09]|7)","[2379]|8(?:0(?:02|9)|7)"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["69"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]],"0",0,"0|(1001)",0,0,0,[0,["(?:6(?:(?:4[5-9]|5[0-4])\\d|6(?:[0245]\\d|[17]0|3[7-9]))\\d|7(?:[37-9]\\d|42|56))\\d{4}"]]],LK:["94","00","[1-9]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[1-689]"],"0$1"]],"0",0,0,0,0,0,[0,["7(?:[0-25-8]\\d|4[0-4])\\d{6}"]]],LR:["231","00","(?:2|33|5\\d|77|88)\\d{7}|[4-6]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[4-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3578]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:(?:330|555|(?:77|88)\\d)\\d|4[67])\\d{5}|[56]\\d{6}",[7,9]]]],LS:["266","00","(?:[256]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2568]"]]],0,0,0,0,0,0,[0,["[56]\\d{7}"]]],LT:["370","00","(?:[3469]\\d|52|[78]0)\\d{6}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["52[0-7]"],"(8-$1)",1],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[7-9]"],"8 $1",1],["(\\d{2})(\\d{6})","$1 $2",["37|4(?:[15]|6[1-8])"],"(8-$1)",1],["(\\d{3})(\\d{5})","$1 $2",["[3-6]"],"(8-$1)",1]],"8",0,"[08]",0,0,0,[0,["6\\d{7}"]]],LU:["352","00","35[013-9]\\d{4,8}|6\\d{8}|35\\d{2,4}|(?:[2457-9]\\d|3[0-46-9])\\d{2,9}",[4,5,6,7,8,9,10,11],[["(\\d{2})(\\d{3})","$1 $2",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["20[2-689]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4",["2(?:[0367]|4[3-8])"]],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["80[01]|90[015]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["20"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4 $5",["2(?:[0367]|4[3-8])"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,5})","$1 $2 $3 $4",["[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]"]]],0,0,"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\d)",0,0,0,[0,["6(?:[269][18]|5[1568]|7[189]|81)\\d{6}",[9]]]],LV:["371","00","(?:[268]\\d|90)\\d{6}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[269]|8[01]"]]],0,0,0,0,0,0,[0,["23(?:23[0-57-9]|33[0238])\\d{3}|2(?:[0-24-9]\\d\\d|3(?:0[07]|[14-9]\\d|2[024-9]|3[0-24-9]))\\d{4}"]]],LY:["218","00","[2-9]\\d{8}",[9],[["(\\d{2})(\\d{7})","$1-$2",["[2-9]"],"0$1"]],"0",0,0,0,0,0,[0,["9[1-6]\\d{7}"]]],MA:["212","00","[5-8]\\d{8}",[9],[["(\\d{5})(\\d{4})","$1-$2",["5(?:29|38)","5(?:29[89]|389)","5(?:29[89]|389)0"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5[45]"],"0$1"],["(\\d{4})(\\d{5})","$1-$2",["5(?:2[2-489]|3[5-9]|9)|892","5(?:2(?:[2-49]|8[235-9])|3[5-9]|9)|892"],"0$1"],["(\\d{2})(\\d{7})","$1-$2",["8"],"0$1"],["(\\d{3})(\\d{6})","$1-$2",["[5-7]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:6(?:[0-79]\\d|8[0-247-9])|7(?:[017]\\d|2[0-2]|6[0-8]|8[0-3]))\\d{6}"]]],MC:["377","00","(?:[3489]|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["4"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[389]"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["6"],"0$1"]],"0",0,0,0,0,0,[0,["4(?:[46]\\d|5[1-9])\\d{5}|(?:3|6\\d)\\d{7}"]]],MD:["373","00","(?:[235-7]\\d|[89]0)\\d{6}",[8],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["22|3"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[25-7]"],"0$1"]],"0",0,0,0,0,0,[0,["562\\d{5}|(?:6\\d|7[16-9])\\d{6}"]]],ME:["382","00","(?:20|[3-79]\\d)\\d{6}|80\\d{6,7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"0$1"]],"0",0,0,0,0,0,[0,["6(?:[07-9]\\d|3[024]|6[0-25])\\d{5}",[8]]]],MF:["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[0,["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"]]],MG:["261","00","[23]\\d{8}",[9],[["(\\d{2})(\\d{2})(\\d{3})(\\d{2})","$1 $2 $3 $4",["[23]"],"0$1"]],"0",0,"0|([24-9]\\d{6})$","20$1",0,0,[0,["3[2-489]\\d{7}"]]],MH:["692","011","329\\d{4}|(?:[256]\\d|45)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1-$2",["[2-6]"]]],"1",0,0,0,0,0,[0,["(?:(?:23|54)5|329|45[356])\\d{4}"]]],MK:["389","00","[2-578]\\d{7}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2|34[47]|4(?:[37]7|5[47]|64)"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[347]"],"0$1"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["[58]"],"0$1"]],"0",0,0,0,0,0,[0,["7(?:3555|4747|9(?:[019]77|42[0-4]))\\d{3}|7(?:[0-25-8]\\d\\d|3(?:[1-4]\\d|7[01578])|4(?:2\\d|60|7[01578])|9(?:[23]\\d|4[01]|7[015]))\\d{4}"]]],ML:["223","00","[24-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24-9]"]]],0,0,0,0,0,0,[0,["2(?:0(?:01|79)|17\\d)\\d{4}|(?:5[01]|[679]\\d|8[2-49])\\d{6}"]]],MM:["95","00","1\\d{5,7}|95\\d{6}|(?:[4-7]|9[0-46-9])\\d{6,8}|(?:2|8\\d)\\d{5,8}",[6,7,8,9,10],[["(\\d)(\\d{2})(\\d{3})","$1 $2 $3",["16|2"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[4-7]|8[1-35]"],"0$1"],["(\\d)(\\d{3})(\\d{4,6})","$1 $2 $3",["9(?:2[0-4]|[35-9]|4[137-9])"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["92"],"0$1"],["(\\d)(\\d{5})(\\d{4})","$1 $2 $3",["9"],"0$1"]],"0",0,0,0,0,0,[0,["(?:17[01]|9(?:2(?:[0-4]|[56]\\d\\d)|(?:3(?:[0-36]|4\\d)|(?:6\\d|9[4-8])\\d|7(?:3|40|[5-9]\\d)|8(?:78|[89]\\d))\\d|4(?:(?:[0245]\\d|[1379])\\d|88)|5[0-6])\\d)\\d{4}|9[69]1\\d{6}|9(?:[68]\\d|9[089])\\d{5}",[7,8,9,10]]]],MN:["976","001","[12]\\d{7,9}|[5-9]\\d{7}",[8,9,10],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[12]1"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[5-9]"]],["(\\d{3})(\\d{5,6})","$1 $2",["[12]2[1-3]"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["[12](?:27|3[2-8]|4[2-68]|5[1-4689])","[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["[12]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:83[01]|920)\\d{5}|(?:5[05]|6[06]|8[015689]|9[013-9])\\d{6}",[8]]]],MO:["853","00","0800\\d{3}|(?:28|[68]\\d)\\d{6}",[7,8],[["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{4})(\\d{4})","$1 $2",["[268]"]]],0,0,0,0,0,0,[0,["6800[0-79]\\d{3}|6(?:[235]\\d\\d|6(?:0[0-5]|[1-9]\\d)|8(?:0[1-9]|[14-8]\\d|2[5-9]|[39][0-4]))\\d{4}",[8]]]],MP:["1","011","[58]\\d{9}|(?:67|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","670$1",0,"670",[0,["670(?:2(?:3[3-7]|56|8[4-8])|32[1-38]|4(?:33|8[348])|5(?:32|55|88)|6(?:64|70|82)|78[3589]|8[3-9]8|989)\\d{4}"]]],MQ:["596","00","(?:69|80)\\d{7}|(?:59|97)6\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[0,["69(?:6(?:[0-46-9]\\d|5[0-6])|727)\\d{4}"]]],MR:["222","00","(?:[2-4]\\d\\d|800)\\d{5}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-48]"]]],0,0,0,0,0,0,[0,["[2-4][0-46-9]\\d{6}"]]],MS:["1","011","(?:[58]\\d\\d|664|900)\\d{7}",[10],0,"1",0,"1|([34]\\d{6})$","664$1",0,"664",[0,["664(?:3(?:49|9[1-6])|49[2-6])\\d{4}"]]],MT:["356","00","3550\\d{4}|(?:[2579]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2357-9]"]]],0,0,0,0,0,0,[0,["(?:7(?:210|[79]\\d\\d)|9(?:[29]\\d\\d|69[67]|8(?:1[1-3]|89|97)))\\d{4}"]]],MU:["230","0(?:0|[24-7]0|3[03])","(?:5|8\\d\\d)\\d{7}|[2-468]\\d{6}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[2-46]|8[013]"]],["(\\d{4})(\\d{4})","$1 $2",["5"]],["(\\d{5})(\\d{5})","$1 $2",["8"]]],0,0,0,0,0,0,[0,["5(?:4(?:2[1-389]|7[1-9])|87[15-8])\\d{4}|5(?:2[5-9]|4[3-689]|[57]\\d|8[0-689]|9[0-8])\\d{5}",[8]]],"020"],MV:["960","0(?:0|19)","(?:800|9[0-57-9]\\d)\\d{7}|[34679]\\d{6}",[7,10],[["(\\d{3})(\\d{4})","$1-$2",["[3467]|9[13-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"]]],0,0,0,0,0,0,[0,["46[46]\\d{4}|(?:7\\d|9[13-9])\\d{5}",[7]]],"00"],MW:["265","00","(?:[1289]\\d|31|77)\\d{7}|1\\d{6}",[7,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["1[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[137-9]"],"0$1"]],"0",0,0,0,0,0,[0,["111\\d{6}|(?:31|77|[89][89])\\d{7}",[9]]]],MX:["52","0[09]","1(?:(?:44|99)[1-9]|65[0-689])\\d{7}|(?:1(?:[017]\\d|[235][1-9]|4[0-35-9]|6[0-46-9]|8[1-79]|9[1-8])|[2-9]\\d)\\d{8}",[10,11],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["33|5[56]|81"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2-9]"],0,1],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 $3 $4",["1(?:33|5[56]|81)"],0,1],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 $3 $4",["1"],0,1]],"01",0,"0(?:[12]|4[45])|1",0,0,0,[0,["657[12]\\d{6}|(?:1(?:2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-7][1-9]|3[1-8]|8[1-35-9]|9[2-689])|5(?:[56]\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))|2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[25-7][1-9]|3[1-8]|4\\d|8[1-35-9]|9[2-689])|5(?:[56]\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|6[1-9]|7[12]|8[1-8]|9\\d))\\d{7}"]],"00"],MY:["60","00","1\\d{8,9}|(?:3\\d|[4-9])\\d{7}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1-$2 $3",["[4-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1-$2 $3",["1(?:[02469]|[378][1-9]|53)|8","1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2 $3",["3"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3-$4",["1(?:[367]|80)"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2 $3",["15"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2 $3",["1"],"0$1"]],"0",0,0,0,0,0,[0,["1(?:1888[689]|4400|8(?:47|8[27])[0-4])\\d{4}|1(?:0(?:[23568]\\d|4[0-6]|7[016-9]|9[0-8])|1(?:[1-5]\\d\\d|6(?:0[5-9]|[1-9]\\d)|7(?:[0134]\\d|2[1-9]|5[0-6]))|(?:[269]\\d|[37][1-9]|4[235-9])\\d|5(?:31|9\\d\\d)|8(?:1[23]|[236]\\d|4[06]|5(?:46|[7-9])|7[016-9]|8[01]|9[0-8]))\\d{5}",[9,10]]]],MZ:["258","00","(?:2|8\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2|8[2-79]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[0,["8[2-79]\\d{7}",[9]]]],NA:["264","00","[68]\\d{7,8}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["87"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0",0,0,0,0,0,[0,["(?:60|8[1245])\\d{7}",[9]]]],NC:["687","00","(?:050|[2-57-9]\\d\\d)\\d{3}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1.$2.$3",["[02-57-9]"]]],0,0,0,0,0,0,[0,["(?:5[0-4]|[79]\\d|8[0-79])\\d{4}"]]],NE:["227","00","[027-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["08"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[089]|2[013]|7[04]"]]],0,0,0,0,0,0,[0,["(?:23|7[04]|[89]\\d)\\d{6}"]]],NF:["672","00","[13]\\d{5}",[6],[["(\\d{2})(\\d{4})","$1 $2",["1[0-3]"]],["(\\d)(\\d{5})","$1 $2",["[13]"]]],0,0,"([0-258]\\d{4})$","3$1",0,0,[0,["(?:14|3[58])\\d{4}"]]],NG:["234","009","(?:[124-7]|9\\d{3})\\d{6}|[1-9]\\d{7}|[78]\\d{9,13}",[7,8,10,11,12,13,14],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["78"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]|9(?:0[3-9]|[1-9])"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[3-7]|8[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["[78]"],"0$1"],["(\\d{3})(\\d{5})(\\d{5,6})","$1 $2 $3",["[78]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:702[0-24-9]|8(?:01|19)[01])\\d{6}|(?:70[13-689]|8(?:0[2-9]|1[0-8])|9(?:0[1-9]|1[2356]))\\d{7}",[10]]]],NI:["505","00","(?:1800|[25-8]\\d{3})\\d{4}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[125-8]"]]],0,0,0,0,0,0,[0,["(?:5(?:5[0-7]|[78]\\d)|6(?:20|3[035]|4[045]|5[05]|77|8[1-9]|9[059])|(?:7[5-8]|8\\d)\\d)\\d{5}"]]],NL:["31","00","(?:[124-7]\\d\\d|3(?:[02-9]\\d|1[0-8]))\\d{6}|8\\d{6,9}|9\\d{6,10}|1\\d{4,5}",[5,6,7,8,9,10,11],[["(\\d{3})(\\d{4,7})","$1 $2",["[89]0"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["66"],"0$1"],["(\\d)(\\d{8})","$1 $2",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["1[16-8]|2[259]|3[124]|4[17-9]|5[124679]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-578]|91"],"0$1"],["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3",["9"],"0$1"]],"0",0,0,0,0,0,[0,["(?:6[1-58]|970\\d)\\d{7}",[9,11]]]],NO:["47","00","(?:0|[2-9]\\d{3})\\d{4}",[5,8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[489]|59"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[235-7]"]]],0,0,0,0,0,"[02-689]|7[0-8]",[0,["(?:4[015-8]|59|9\\d)\\d{6}",[8]]]],NP:["977","00","(?:1\\d|9)\\d{9}|[1-9]\\d{7}",[8,10,11],[["(\\d)(\\d{7})","$1-$2",["1[2-6]"],"0$1"],["(\\d{2})(\\d{6})","$1-$2",["1[01]|[2-8]|9(?:[1-59]|[67][2-6])"],"0$1"],["(\\d{3})(\\d{7})","$1-$2",["9"]]],"0",0,0,0,0,0,[0,["9(?:6[0-3]|7[024-6]|8[0-24-68])\\d{7}",[10]]]],NR:["674","00","(?:444|(?:55|8\\d)\\d|666)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[4-68]"]]],0,0,0,0,0,0,[0,["(?:55[3-9]|666|8\\d\\d)\\d{4}"]]],NU:["683","00","(?:[47]|888\\d)\\d{3}",[4,7],[["(\\d{3})(\\d{4})","$1 $2",["8"]]],0,0,0,0,0,0,[0,["888[4-9]\\d{3}",[7]]]],NZ:["64","0(?:0|161)","[29]\\d{7,9}|50\\d{5}(?:\\d{2,3})?|6[0-35-9]\\d{6}|7\\d{7,8}|8\\d{4,9}|(?:11\\d|[34])\\d{7}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,8})","$1 $2",["8[1-579]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["50[036-8]|[89]0","50(?:[0367]|88)|[89]0"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["24|[346]|7[2-57-9]|9[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:10|74)|[59]|80"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1|2[028]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,5})","$1 $2 $3",["2(?:[169]|7[0-35-9])|7|86"],"0$1"]],"0",0,0,0,0,0,[0,["2[0-27-9]\\d{7,8}|21\\d{6}",[8,9,10]]],"00"],OM:["968","00","(?:1505|[279]\\d{3}|500)\\d{4}|800\\d{5,6}",[7,8,9],[["(\\d{3})(\\d{4,6})","$1 $2",["[58]"]],["(\\d{2})(\\d{6})","$1 $2",["2"]],["(\\d{4})(\\d{4})","$1 $2",["[179]"]]],0,0,0,0,0,0,[0,["1505\\d{4}|(?:7(?:[1289]\\d|7[0-4])|9(?:0[1-9]|[1-9]\\d))\\d{5}",[8]]]],PA:["507","00","(?:00800|8\\d{3})\\d{6}|[68]\\d{7}|[1-57-9]\\d{6}",[7,8,10,11],[["(\\d{3})(\\d{4})","$1-$2",["[1-57-9]"]],["(\\d{4})(\\d{4})","$1-$2",["[68]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[0,["(?:1[16]1|21[89]|6\\d{3}|8(?:1[01]|7[23]))\\d{4}",[7,8]]]],PE:["51","00|19(?:1[124]|77|90)00","(?:[14-8]|9\\d)\\d{7}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["80"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["1"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[4-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"]]],"0",0,0,0,0,0,[0,["9\\d{8}",[9]]],"00"," Anexo "],PF:["689","00","4\\d{5}(?:\\d{2})?|8\\d{7,8}",[6,8,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["44"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4|8[7-9]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]],0,0,0,0,0,0,[0,["8[7-9]\\d{6}",[8]]]],PG:["675","00|140[1-3]","(?:180|[78]\\d{3})\\d{4}|(?:[2-589]\\d|64)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["18|[2-69]|85"]],["(\\d{4})(\\d{4})","$1 $2",["[78]"]]],0,0,0,0,0,0,[0,["(?:7\\d|8[128])\\d{6}",[8]]],"00"],PH:["63","00","(?:[2-7]|9\\d)\\d{8}|2\\d{5}|(?:1800|8)\\d{7,9}",[6,8,9,10,11,12,13],[["(\\d)(\\d{5})","$1 $2",["2"],"(0$1)"],["(\\d{4})(\\d{4,6})","$1 $2",["3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2","3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))"],"(0$1)"],["(\\d{5})(\\d{4})","$1 $2",["346|4(?:27|9[35])|883","3469|4(?:279|9(?:30|56))|8834"],"(0$1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3-7]|8[2-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{4})(\\d{1,2})(\\d{3})(\\d{4})","$1 $2 $3 $4",["1"]]],"0",0,0,0,0,0,[0,["(?:8(?:1[37]|9[5-8])|9(?:0[5-9]|1[0-24-9]|[235-7]\\d|4[2-9]|8[135-9]|9[1-9]))\\d{7}",[10]]]],PK:["92","00","122\\d{6}|[24-8]\\d{10,11}|9(?:[013-9]\\d{8,10}|2(?:[01]\\d\\d|2(?:[06-8]\\d|1[01]))\\d{7})|(?:[2-8]\\d{3}|92(?:[0-7]\\d|8[1-9]))\\d{6}|[24-9]\\d{8}|[89]\\d{7}",[8,9,10,11,12],[["(\\d{3})(\\d{3})(\\d{2,7})","$1 $2 $3",["[89]0"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["1"]],["(\\d{3})(\\d{6,7})","$1 $2",["2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])","9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]"],"(0$1)"],["(\\d{2})(\\d{7,8})","$1 $2",["(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]"],"(0$1)"],["(\\d{5})(\\d{5})","$1 $2",["58"],"(0$1)"],["(\\d{3})(\\d{7})","$1 $2",["3"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[24-9]"],"(0$1)"]],"0",0,0,0,0,0,[0,["3(?:[0-24]\\d|3[0-7]|55|64)\\d{7}",[10]]]],PL:["48","00","(?:6|8\\d\\d)\\d{7}|[1-9]\\d{6}(?:\\d{2})?|[26]\\d{5}",[6,7,8,9,10],[["(\\d{5})","$1",["19"]],["(\\d{3})(\\d{3})","$1 $2",["11|20|64"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1","(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19"]],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["64"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[2-8]|[2-7]|8[1-79]|9[145]"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[0,["21(?:1(?:[145]\\d|3[1-5])|2[0-4]\\d)\\d{4}|(?:45|5[0137]|6[069]|7[2389]|88)\\d{7}",[9]]]],PM:["508","00","(?:[45]|80\\d\\d)\\d{5}",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[45]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[0,["(?:4[02-4]|5[056])\\d{4}",[6]]]],PR:["1","011","(?:[589]\\d\\d|787)\\d{7}",[10],0,"1",0,0,0,0,"787|939",[0,["(?:787|939)[2-9]\\d{6}"]]],PS:["970","00","[2489]2\\d{6}|(?:1\\d|5)\\d{8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2489]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["5"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[0,["5[69]\\d{7}",[9]]]],PT:["351","00","1693\\d{5}|(?:[26-9]\\d|30)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["2[12]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["16|[236-9]"]]],0,0,0,0,0,0,[0,["6(?:[06]92(?:30|9\\d)|[35]92(?:3[03]|9\\d))\\d{3}|(?:(?:16|6[0356])93|9(?:[1-36]\\d\\d|480))\\d{5}"]]],PW:["680","01[12]","(?:[24-8]\\d\\d|345|900)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]],0,0,0,0,0,0,[0,["(?:(?:46|83)[0-5]|6[2-4689]0)\\d{4}|(?:45|77|88)\\d{5}"]]],PY:["595","00","59\\d{4,6}|9\\d{5,10}|(?:[2-46-8]\\d|5[0-8])\\d{4,7}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3,6})","$1 $2",["[2-9]0"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]"],"(0$1)"],["(\\d{3})(\\d{4,5})","$1 $2",["2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["87"]],["(\\d{3})(\\d{6})","$1 $2",["9(?:[5-79]|8[1-6])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["9"]]],"0",0,0,0,0,0,[0,["9(?:51|6[129]|[78][1-6]|9[1-5])\\d{6}",[9]]]],QA:["974","00","[2-7]\\d{7}|800\\d{4}(?:\\d{2})?|2\\d{6}",[7,8,9],[["(\\d{3})(\\d{4})","$1 $2",["2[126]|8"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]]],0,0,0,0,0,0,[0,["(?:2[89]|[35-7]\\d)\\d{6}",[8]]]],RE:["262","00","976\\d{6}|(?:26|[68]\\d)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2689]"],"0$1"]],"0",0,0,0,0,"26[23]|69|[89]",[0,["(?:69(?:2\\d\\d|3(?:0[0-46]|1[013]|2[0-2]|3[0-39]|4\\d|5[0-5]|6[0-6]|7[0-27]|8[0-8]|9[0-479]))|976(?:2[27]|3[0-37]|9\\d))\\d{4}"]]],RO:["40","00","(?:[2378]\\d|90)\\d{7}|[23]\\d{5}",[6,9],[["(\\d{3})(\\d{3})","$1 $2",["2[3-6]","2[3-6]\\d9"],"0$1"],["(\\d{2})(\\d{4})","$1 $2",["219|31"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[23]1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[237-9]"],"0$1"]],"0",0,0,0,0,0,[0,["7020\\d{5}|7(?:0[013-9]|1[0-3]|[2-7]\\d|8[03-8]|9[019])\\d{6}",[9]]],0," int "],RS:["381","00","38[02-9]\\d{6,9}|6\\d{7,9}|90\\d{4,8}|38\\d{5,6}|(?:7\\d\\d|800)\\d{3,9}|(?:[12]\\d|3[0-79])\\d{5,10}",[6,7,8,9,10,11,12],[["(\\d{3})(\\d{3,9})","$1 $2",["(?:2[389]|39)0|[7-9]"],"0$1"],["(\\d{2})(\\d{5,10})","$1 $2",["[1-36]"],"0$1"]],"0",0,0,0,0,0,[0,["6(?:[0-689]|7\\d)\\d{6,7}",[8,9,10]]]],RU:["7","810","8\\d{13}|[347-9]\\d{9}",[10,14],[["(\\d{4})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-8]|2[1-9])","7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))","7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2"],"8 ($1)",1],["(\\d{5})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-68]|2[1-9])","7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))","7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[349]|8(?:[02-7]|1[1-8])"],"8 ($1)",1],["(\\d{4})(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3 $4",["8"],"8 ($1)"]],"8",0,0,0,0,"3[04-689]|[489]",[0,["9\\d{9}",[10]]],"8~10"],RW:["250","00","(?:06|[27]\\d\\d|[89]00)\\d{6}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"]]],"0",0,0,0,0,0,[0,["7[2389]\\d{7}",[9]]]],SA:["966","00","92\\d{7}|(?:[15]|8\\d)\\d{8}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["9"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["81"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]],"0",0,0,0,0,0,[0,["579[01]\\d{5}|5(?:[013-689]\\d|7[0-35-8])\\d{6}",[9]]]],SB:["677","0[01]","(?:[1-6]|[7-9]\\d\\d)\\d{4}",[5,7],[["(\\d{2})(\\d{5})","$1 $2",["7|8[4-9]|9(?:[1-8]|9[0-8])"]]],0,0,0,0,0,0,[0,["48\\d{3}|(?:(?:7[1-9]|8[4-9])\\d|9(?:1[2-9]|2[013-9]|3[0-2]|[46]\\d|5[0-46-9]|7[0-689]|8[0-79]|9[0-8]))\\d{4}"]]],SC:["248","010|0[0-2]","800\\d{4}|(?:[249]\\d|64)\\d{5}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[246]|9[57]"]]],0,0,0,0,0,0,[0,["2[125-8]\\d{5}"]],"00"],SD:["249","00","[19]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[19]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:1[0-2]|9[0-3569])\\d{7}"]]],SE:["46","00","(?:[26]\\d\\d|9)\\d{9}|[1-9]\\d{8}|[1-689]\\d{7}|[1-4689]\\d{6}|2\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{2,3})(\\d{2})","$1-$2 $3",["20"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{4})","$1-$2",["9(?:00|39|44|9)"],"0$1",0,"$1 $2"],["(\\d{2})(\\d{3})(\\d{2})","$1-$2 $3",["[12][136]|3[356]|4[0246]|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3"],["(\\d)(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2,3})(\\d{2})","$1-$2 $3",["1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{2,3})(\\d{3})","$1-$2 $3",["9(?:00|39|44)"],"0$1",0,"$1 $2 $3"],["(\\d{2})(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3 $4"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["10|7"],"0$1",0,"$1 $2 $3 $4"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1-$2 $3 $4",["[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{3})","$1-$2 $3 $4",["9"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4 $5",["[26]"],"0$1",0,"$1 $2 $3 $4 $5"]],"0",0,0,0,0,0,[0,["7[02369]\\d{7}",[9]]]],SG:["65","0[0-3]\\d","(?:(?:1\\d|8)\\d\\d|7000)\\d{7}|[3689]\\d{7}",[8,10,11],[["(\\d{4})(\\d{4})","$1 $2",["[369]|8(?:0[1-5]|[1-9])"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]],["(\\d{4})(\\d{4})(\\d{3})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[0,["8(?:05[0-7]|95[0-2])\\d{4}|(?:8(?:0[1-4]|[1-8]\\d|9[0-4])|9[0-8]\\d)\\d{5}",[8]]]],SH:["290","00","(?:[256]\\d|8)\\d{3}",[4,5],0,0,0,0,0,0,"[256]",[0,["[56]\\d{4}",[5]]]],SI:["386","00|10(?:22|66|88|99)","[1-7]\\d{7}|8\\d{4,7}|90\\d{4,6}",[5,6,7,8],[["(\\d{2})(\\d{3,6})","$1 $2",["8[09]|9"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["59|8"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37][01]|4[0139]|51|6"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-57]"],"(0$1)"]],"0",0,0,0,0,0,[0,["65(?:1\\d|55|6[01]|70)\\d{4}|(?:[37][01]|4[0139]|51|6[489])\\d{6}",[8]]],"00"],SJ:["47","00","0\\d{4}|(?:[489]\\d|[57]9)\\d{6}",[5,8],0,0,0,0,0,0,"79",[0,["(?:4[015-8]|59|9\\d)\\d{6}",[8]]]],SK:["421","00","[2-689]\\d{8}|[2-59]\\d{6}|[2-5]\\d{5}",[6,7,9],[["(\\d)(\\d{2})(\\d{3,4})","$1 $2 $3",["21"],"0$1"],["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["[3-5][1-8]1","[3-5][1-8]1[67]"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1/$2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[689]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1/$2 $3 $4",["[3-5]"],"0$1"]],"0",0,0,0,0,0,[0,["909[1-9]\\d{5}|9(?:0[1-8]|1[0-24-9]|4[03-57-9]|5\\d)\\d{6}",[9]]]],SL:["232","00","(?:[237-9]\\d|66)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[236-9]"],"(0$1)"]],"0",0,0,0,0,0,[0,["(?:25|3[0-5]|66|7[2-9]|8[08]|9[09])\\d{6}"]]],SM:["378","00","(?:0549|[5-7]\\d)\\d{6}",[8,10],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-7]"]],["(\\d{4})(\\d{6})","$1 $2",["0"]]],0,0,"([89]\\d{5})$","0549$1",0,0,[0,["6[16]\\d{6}",[8]]]],SN:["221","00","(?:[378]\\d|93)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[379]"]]],0,0,0,0,0,0,[0,["7(?:(?:[06-8]\\d|21|90)\\d|5(?:01|[19]0|25|[38]3|[4-7]\\d))\\d{5}"]]],SO:["252","00","[346-9]\\d{8}|[12679]\\d{7}|[1-5]\\d{6}|[1348]\\d{5}",[6,7,8,9],[["(\\d{2})(\\d{4})","$1 $2",["8[125]"]],["(\\d{6})","$1",["[134]"]],["(\\d)(\\d{6})","$1 $2",["[15]|2[0-79]|3[0-46-8]|4[0-7]"]],["(\\d)(\\d{7})","$1 $2",["24|[67]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3478]|64|90"]],["(\\d{2})(\\d{5,7})","$1 $2",["1|28|6(?:0[5-7]|[1-35-9])|9[2-9]"]]],"0",0,0,0,0,0,[0,["(?:(?:15|(?:3[59]|4[89]|79|8[08])\\d|6(?:0[5-7]|[1-9]\\d)|9(?:0\\d|[2-9]))\\d|2(?:4\\d|8))\\d{5}|[67]\\d{7}",[7,8,9]]]],SR:["597","00","(?:[2-5]|68|[78]\\d)\\d{5}",[6,7],[["(\\d{2})(\\d{2})(\\d{2})","$1-$2-$3",["56"]],["(\\d{3})(\\d{3})","$1-$2",["[2-5]"]],["(\\d{3})(\\d{4})","$1-$2",["[6-8]"]]],0,0,0,0,0,0,[0,["(?:7[124-7]|8[124-9])\\d{5}",[7]]]],SS:["211","00","[19]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[19]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:12|9[1257-9])\\d{7}"]]],ST:["239","00","(?:22|9\\d)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[29]"]]],0,0,0,0,0,0,[0,["900[5-9]\\d{3}|9(?:0[1-9]|[89]\\d)\\d{4}"]]],SV:["503","00","[267]\\d{7}|[89]00\\d{4}(?:\\d{4})?",[7,8,11],[["(\\d{3})(\\d{4})","$1 $2",["[89]"]],["(\\d{4})(\\d{4})","$1 $2",["[267]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[89]"]]],0,0,0,0,0,0,[0,["66(?:[02-9]\\d\\d|1(?:[02-9]\\d|16))\\d{3}|(?:6[0-57-9]|7\\d)\\d{6}",[8]]]],SX:["1","011","7215\\d{6}|(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|(5\\d{6})$","721$1",0,"721",[0,["7215(?:1[02]|2\\d|5[034679]|8[014-8])\\d{4}"]]],SY:["963","00","[1-39]\\d{8}|[1-5]\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-5]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1",1]],"0",0,0,0,0,0,[0,["9[1-689]\\d{7}",[9]]]],SZ:["268","00","0800\\d{4}|(?:[237]\\d|900)\\d{6}",[8,9],[["(\\d{4})(\\d{4})","$1 $2",["[0237]"]],["(\\d{5})(\\d{4})","$1 $2",["9"]]],0,0,0,0,0,0,[0,["7[6-9]\\d{6}",[8]]]],TA:["290","00","8\\d{3}",[4],0,0,0,0,0,0,"8"],TC:["1","011","(?:[58]\\d\\d|649|900)\\d{7}",[10],0,"1",0,"1|([2-479]\\d{6})$","649$1",0,"649",[0,["649(?:2(?:3[129]|4[1-79])|3\\d\\d|4[34][1-3])\\d{4}"]]],TD:["235","00|16","(?:22|[69]\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2679]"]]],0,0,0,0,0,0,[0,["(?:6[023568]|77|9\\d)\\d{6}"]],"00"],TG:["228","00","[279]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[279]"]]],0,0,0,0,0,0,[0,["(?:7[09]|9[0-36-9])\\d{6}"]]],TH:["66","00[1-9]","(?:001800|[2-57]|[689]\\d)\\d{7}|1\\d{7,9}",[8,9,10,13],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[13-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[0,["671[0-8]\\d{5}|(?:14|6[1-6]|[89]\\d)\\d{7}",[9]]]],TJ:["992","810","(?:00|[1-57-9]\\d)\\d{7}",[9],[["(\\d{6})(\\d)(\\d{2})","$1 $2 $3",["331","3317"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[34]7|91[78]"]],["(\\d{4})(\\d)(\\d{4})","$1 $2 $3",["3[1-5]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[0-57-9]"]]],0,0,0,0,0,0,[0,["41[18]\\d{6}|(?:[034]0|[17][017]|2[02]|5[05]|8[08]|9\\d)\\d{7}"]],"8~10"],TK:["690","00","[2-47]\\d{3,6}",[4,5,6,7],0,0,0,0,0,0,0,[0,["7[2-4]\\d{2,5}"]]],TL:["670","00","7\\d{7}|(?:[2-47]\\d|[89]0)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[2-489]|70"]],["(\\d{4})(\\d{4})","$1 $2",["7"]]],0,0,0,0,0,0,[0,["7[2-8]\\d{6}",[8]]]],TM:["993","810","[1-6]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["12"],"(8 $1)"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-5]"],"(8 $1)"],["(\\d{2})(\\d{6})","$1 $2",["6"],"8 $1"]],"8",0,0,0,0,0,[0,["6\\d{7}"]],"8~10"],TN:["216","00","[2-57-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-57-9]"]]],0,0,0,0,0,0,[0,["3(?:001|[12]40)\\d{4}|(?:(?:[259]\\d|4[0-7])\\d|3(?:1[1-35]|6[0-4]|91))\\d{5}"]]],TO:["676","00","(?:0800|(?:[5-8]\\d\\d|999)\\d)\\d{3}|[2-8]\\d{4}",[5,7],[["(\\d{2})(\\d{3})","$1-$2",["[2-4]|50|6[09]|7[0-24-69]|8[05]"]],["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{3})(\\d{4})","$1 $2",["[5-9]"]]],0,0,0,0,0,0,[0,["(?:55[4-6]|6(?:[09]\\d|3[02]|8[15-9])|(?:7\\d|8[46-9])\\d|999)\\d{4}",[7]]]],TR:["90","00","4\\d{6}|8\\d{11,12}|(?:[2-58]\\d\\d|900)\\d{7}",[7,10,12,13],[["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["512|8[01589]|90"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5(?:[0-59]|61)","5(?:[0-59]|616)","5(?:[0-59]|6161)"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24][1-8]|3[1-9]"],"(0$1)",1],["(\\d{3})(\\d{3})(\\d{6,7})","$1 $2 $3",["80"],"0$1",1]],"0",0,0,0,0,0,[0,["56161\\d{5}|5(?:0[15-7]|1[06]|24|[34]\\d|5[1-59]|9[46])\\d{7}",[10]]]],TT:["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-46-8]\\d{6})$","868$1",0,"868",[0,["868(?:(?:2[5-9]|3\\d)\\d|4(?:3[0-6]|[6-9]\\d)|6(?:20|78|8\\d)|7(?:0[1-9]|1[02-9]|[2-9]\\d))\\d{4}"]]],TV:["688","00","(?:2|7\\d\\d|90)\\d{4}",[5,6,7],[["(\\d{2})(\\d{3})","$1 $2",["2"]],["(\\d{2})(\\d{4})","$1 $2",["90"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]],0,0,0,0,0,0,[0,["(?:7[01]\\d|90)\\d{4}",[6,7]]]],TW:["886","0(?:0[25-79]|19)","[2-689]\\d{8}|7\\d{9,10}|[2-8]\\d{7}|2\\d{6}",[7,8,9,10,11],[["(\\d{2})(\\d)(\\d{4})","$1 $2 $3",["202"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[258]0"],"0$1"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]","[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,5})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[0,["(?:40001[0-2]|9[0-8]\\d{4})\\d{3}",[9]]],0,"#"],TZ:["255","00[056]","(?:[25-8]\\d|41|90)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[24]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["5"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[67]"],"0$1"]],"0",0,0,0,0,0,[0,["77[2-9]\\d{6}|(?:6[125-9]|7[13-689])\\d{7}"]]],UA:["380","00","[89]\\d{9}|[3-9]\\d{8}",[9,10],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]","6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])","3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3-7]|89|9[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:39|50|6[36-8]|7[1-3]|9[1-9])\\d{7}",[9]]],"0~0"],UG:["256","00[057]","800\\d{6}|(?:[29]0|[347]\\d)\\d{7}",[9],[["(\\d{4})(\\d{5})","$1 $2",["202","2024"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[27-9]|4(?:6[45]|[7-9])"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[34]"],"0$1"]],"0",0,0,0,0,0,[0,["726[01]\\d{5}|7(?:[01578]\\d|20|36|[46][0-4]|9[89])\\d{6}"]]],US:["1","011","[2-9]\\d{9}|3\\d{6}",[10],[["(\\d{3})(\\d{4})","$1-$2",["310"],0,1],["(\\d{3})(\\d{3})(\\d{4})","($1) $2-$3",["[2-9]"],0,1,"$1-$2-$3"]],"1",0,0,0,0,0,[0,["505(?:[2-57-9]\\d\\d|6(?:[0-35-9]\\d|44))\\d{4}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[01679]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[068]|3[0-289]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-389]|8[04-69]))[2-9]\\d{6}"]]],UY:["598","0(?:0|1[3-9]\\d)","4\\d{9}|[1249]\\d{7}|(?:[49]\\d|80)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["405|8|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[124]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["4"],"0$1"]],"0",0,0,0,0,0,[0,["9[1-9]\\d{6}",[8]]],"00"," int. "],UZ:["998","810","(?:33|55|[679]\\d|88)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[35-9]"],"8 $1"]],"8",0,0,0,0,0,[0,["(?:(?:33|88|9[0-57-9])\\d{3}|55(?:50[013]|90\\d)|6(?:1(?:2(?:2[01]|98)|35[0-4]|50\\d|61[23]|7(?:[01][017]|4\\d|55|9[5-9]))|2(?:(?:11|7\\d)\\d|2(?:[12]1|9[01379])|5(?:[126]\\d|3[0-4]))|5(?:19[01]|2(?:27|9[26])|(?:30|59|7\\d)\\d)|6(?:2(?:1[5-9]|2[0367]|38|41|52|60)|(?:3[79]|9[0-3])\\d|4(?:56|83)|7(?:[07]\\d|1[017]|3[07]|4[047]|5[057]|67|8[0178]|9[79]))|7(?:2(?:24|3[237]|4[5-9]|7[15-8])|5(?:7[12]|8[0589])|7(?:0\\d|[39][07])|9(?:0\\d|7[079]))|9(?:2(?:1[1267]|3[01]|5\\d|7[0-4])|(?:5[67]|7\\d)\\d|6(?:2[0-26]|8\\d)))|7(?:[07]\\d{3}|1(?:13[01]|6(?:0[47]|1[67]|66)|71[3-69]|98\\d)|2(?:2(?:2[79]|95)|3(?:2[5-9]|6[0-6])|57\\d|7(?:0\\d|1[17]|2[27]|3[37]|44|5[057]|66|88))|3(?:2(?:1[0-6]|21|3[469]|7[159])|(?:33|9[4-6])\\d|5(?:0[0-4]|5[579]|9\\d)|7(?:[0-3579]\\d|4[0467]|6[67]|8[078]))|4(?:2(?:29|5[0257]|6[0-7]|7[1-57])|5(?:1[0-4]|8\\d|9[5-9])|7(?:0\\d|1[024589]|2[0-27]|3[0137]|[46][07]|5[01]|7[5-9]|9[079])|9(?:7[015-9]|[89]\\d))|5(?:112|2(?:0\\d|2[29]|[49]4)|3[1568]\\d|52[6-9]|7(?:0[01578]|1[017]|[23]7|4[047]|[5-7]\\d|8[78]|9[079]))|6(?:2(?:2[1245]|4[2-4])|39\\d|41[179]|5(?:[349]\\d|5[0-2])|7(?:0[017]|[13]\\d|22|44|55|67|88))|9(?:22[128]|3(?:2[0-4]|7\\d)|57[02569]|7(?:2[05-9]|3[37]|4\\d|60|7[2579]|87|9[07]))))\\d{4}"]],"8~10"],VA:["39","00","0\\d{5,10}|3[0-8]\\d{7,10}|55\\d{8}|8\\d{5}(?:\\d{2,4})?|(?:1\\d|39)\\d{7,8}",[6,7,8,9,10,11],0,0,0,0,0,0,"06698",[0,["3[1-9]\\d{8}|3[2-9]\\d{7}",[9,10]]]],VC:["1","011","(?:[58]\\d\\d|784|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","784$1",0,"784",[0,["784(?:4(?:3[0-5]|5[45]|89|9[0-8])|5(?:2[6-9]|3[0-4])|720)\\d{4}"]]],VE:["58","00","[68]00\\d{7}|(?:[24]\\d|[59]0)\\d{8}",[10],[["(\\d{3})(\\d{7})","$1-$2",["[24-689]"],"0$1"]],"0",0,0,0,0,0,[0,["4(?:1[24-8]|2[46])\\d{7}"]]],VG:["1","011","(?:284|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-578]\\d{6})$","284$1",0,"284",[0,["284496[6-9]\\d{3}|284(?:245|3(?:0[0-3]|4[0-7]|68|9[34])|4(?:4[0-6]|68|99)|5(?:4[0-7]|68|9[69]))\\d{4}"]]],VI:["1","011","[58]\\d{9}|(?:34|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","340$1",0,"340",[0,["340(?:2(?:0[0-38]|2[06-8]|4[49]|77)|3(?:32|44)|4(?:2[23]|44|7[34]|89)|5(?:1[34]|55)|6(?:2[56]|4[23]|77|9[023])|7(?:1[2-57-9]|2[57]|7\\d)|884|998)\\d{4}"]]],VN:["84","00","[12]\\d{9}|[135-9]\\d{8}|[16]\\d{7}|[16-8]\\d{6}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["80"],"0$1",1],["(\\d{4})(\\d{4,6})","$1 $2",["1"],0,1],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[69]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3578]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["2[48]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["2"],"0$1",1]],"0",0,0,0,0,0,[0,["(?:5(?:2[238]|59)|89[6-9]|99[013-9])\\d{6}|(?:3\\d|5[689]|7[06-9]|8[1-8]|9[0-8])\\d{7}",[9]]]],VU:["678","00","[57-9]\\d{6}|(?:[238]\\d|48)\\d{3}",[5,7],[["(\\d{3})(\\d{4})","$1 $2",["[57-9]"]]],0,0,0,0,0,0,[0,["(?:[58]\\d|7[013-7])\\d{5}",[7]]]],WF:["681","00","(?:40|72)\\d{4}|8\\d{5}(?:\\d{3})?",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[478]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]],0,0,0,0,0,0,[0,["(?:72|8[23])\\d{4}",[6]]]],WS:["685","0","(?:[2-6]|8\\d{5})\\d{4}|[78]\\d{6}|[68]\\d{5}",[5,6,7,10],[["(\\d{5})","$1",["[2-5]|6[1-9]"]],["(\\d{3})(\\d{3,7})","$1 $2",["[68]"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]],0,0,0,0,0,0,[0,["(?:7[1-35-7]|8(?:[3-7]|9\\d{3}))\\d{5}",[7,10]]]],XK:["383","00","[23]\\d{7,8}|(?:4\\d\\d|[89]00)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[23]"],"0$1"]],"0",0,0,0,0,0,[0,["4[3-9]\\d{6}",[8]]]],YE:["967","00","(?:1|7\\d)\\d{7}|[1-7]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-6]|7[24-68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[0,["7[0137]\\d{7}",[9]]]],YT:["262","00","80\\d{7}|(?:26|63)9\\d{6}",[9],0,"0",0,0,0,0,"269|63",[0,["639(?:0[0-79]|1[019]|[267]\\d|3[09]|40|5[05-9]|9[04-79])\\d{4}"]]],ZA:["27","00","[1-79]\\d{8}|8\\d{4,9}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,4})","$1 $2",["8[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["8[1-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["860"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0",0,0,0,0,0,[0,["(?:1(?:3492[0-25]|4495[0235]|549(?:20|5[01]))|4[34]492[01])\\d{3}|8[1-4]\\d{3,7}|(?:2[27]|47|54)4950\\d{3}|(?:1(?:049[2-4]|9[12]\\d\\d)|(?:6\\d|7[0-46-9])\\d{3}|8(?:5\\d{3}|7(?:08[67]|158|28[5-9]|310)))\\d{4}|(?:1[6-8]|28|3[2-69]|4[025689]|5[36-8])4920\\d{3}|(?:12|[2-5]1)492\\d{4}",[5,6,7,8,9]]]],ZM:["260","00","800\\d{6}|(?:21|63|[79]\\d)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[28]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[79]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:7[5-79]|9[5-8])\\d{7}"]]],ZW:["263","00","2(?:[0-57-9]\\d{6,8}|6[0-24-9]\\d{6,7})|[38]\\d{9}|[35-8]\\d{8}|[3-6]\\d{7}|[1-689]\\d{6}|[1-3569]\\d{5}|[1356]\\d{4}",[5,6,7,8,9,10],[["(\\d{3})(\\d{3,5})","$1 $2",["2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]"],"0$1"],["(\\d)(\\d{3})(\\d{2,4})","$1 $2 $3",["[49]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["80"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2","2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)","2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["29[013-9]|39|54"],"0$1"],["(\\d{4})(\\d{3,5})","$1 $2",["(?:25|54)8","258|5483"],"0$1"]],"0",0,0,0,0,0,[0,["7(?:[178]\\d|3[1-9])\\d{6}",[9]]]]},nonGeographic:{800:["800",0,"(?:00|[1-9]\\d)\\d{6}",[8],[["(\\d{4})(\\d{4})","$1 $2",["\\d"]]],0,0,0,0,0,0,[0,0,["(?:00|[1-9]\\d)\\d{6}"]]],808:["808",0,"[1-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[1-9]"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,["[1-9]\\d{7}"]]],870:["870",0,"7\\d{11}|[35-7]\\d{8}",[9,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[35-7]"]]],0,0,0,0,0,0,[0,["(?:[356]|774[45])\\d{8}|7[6-8]\\d{7}"]]],878:["878",0,"10\\d{10}",[12],[["(\\d{2})(\\d{5})(\\d{5})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["10\\d{10}"]]],881:["881",0,"[0-36-9]\\d{8}",[9],[["(\\d)(\\d{3})(\\d{5})","$1 $2 $3",["[0-36-9]"]]],0,0,0,0,0,0,[0,["[0-36-9]\\d{8}"]]],882:["882",0,"[13]\\d{6}(?:\\d{2,5})?|285\\d{9}|(?:[19]\\d|49)\\d{6}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5})","$1 $2",["16|342"]],["(\\d{2})(\\d{6})","$1 $2",["4"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[19]"]],["(\\d{2})(\\d{4})(\\d{3})","$1 $2 $3",["3[23]"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["34[57]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["34"]],["(\\d{2})(\\d{4,5})(\\d{5})","$1 $2 $3",["[1-3]"]]],0,0,0,0,0,0,[0,["342\\d{4}|(?:337|49)\\d{6}|3(?:2|47|7\\d{3})\\d{7}",[7,8,9,10,12]],0,0,0,0,0,0,["1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\d{4}|6\\d{5,10})|(?:(?:285\\d\\d|3(?:45|[69]\\d{3}))\\d|9[89])\\d{6}"]]],883:["883",0,"(?:210|370\\d\\d)\\d{7}|51\\d{7}(?:\\d{3})?",[9,10,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["510"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["2"]],["(\\d{4})(\\d{4})(\\d{4})","$1 $2 $3",["51[13]"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[35]"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["(?:210|(?:370[1-9]|51[013]0)\\d)\\d{7}|5100\\d{5}"]]],888:["888",0,"\\d{11}",[11],[["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3"]],0,0,0,0,0,0,[0,0,0,0,0,0,["\\d{11}"]]],979:["979",0,"[1359]\\d{8}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[1359]"]]],0,0,0,0,0,0,[0,0,0,["[1359]\\d{8}"]]]}};function n(t,n){var d=Array.prototype.slice.call(n);return d.push(e),t.apply(this,d)}function d(t){return d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},d(t)}function r(t,e){for(var n=0;na)return 1;if(a>i)return-1;if(!isNaN(i)&&isNaN(a))return 1;if(isNaN(i)&&!isNaN(a))return-1}return t[1]&&e[1]?t[1]>e[1]?1:t[1]=2&&G.test(t)}var U=new RegExp("(?:"+R()+")$","i");function W(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(n)return(n=n.call(t)).next.bind(n);if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return V(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return V(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var d=0;return function(){return d>=t.length?{done:!0}:{done:!1,value:t[d++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function V(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,d=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[d++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function X(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,d=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[d++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function q(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,d=new Array(e);na?"TOO_SHORT":r[r.length-1]=0?"IS_POSSIBLE":"INVALID_LENGTH"}function nt(t,e){return"IS_POSSIBLE"===tt(t,e)}function dt(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null==n)return;var d,r,i=[],a=!0,o=!1;try{for(n=n.call(t);!(a=(d=n.next()).done)&&(i.push(d.value),!e||i.length!==e);a=!0);}catch(t){o=!0,r=t}finally{try{a||null==n.return||n.return()}finally{if(o)throw r}}return i}(t,e)||rt(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function rt(t,e){if(t){if("string"==typeof t)return it(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?it(t,e):void 0}}function it(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,d=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[d++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}((t=t.replace(/^tel:/,"tel=")).split(";"));!(d=r()).done;){var i=dt(d.value.split("="),2),a=i[0],o=i[1];switch(a){case"tel":e=o;break;case"ext":n=o;break;case"phone-context":"+"===o[0]&&(e=o+e)}}if(!B(e))return{};var $={number:e};return n&&($.ext=n),$}function ot(t){var e=t.number,n=t.ext;if(!e)return"";if("+"!==e[0])throw new Error('"formatRFC3966()" expects "number" to be in E.164 format.');return"tel:".concat(e).concat(n?";ext="+n:"")}function $t(t,e){return t=t||"",new RegExp("^(?:"+e+")$").test(t)}function ut(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(n)return(n=n.call(t)).next.bind(n);if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return lt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return lt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var d=0;return function(){return d>=t.length?{done:!0}:{done:!1,value:t[d++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function lt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,d=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[d++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function vt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,d=new Array(e);n0){var i=r.leadingDigitsPatterns()[r.leadingDigitsPatterns().length-1];if(0!==e.search(i))continue}if($t(e,r.pattern()))return r}}(d.formats(),t);return i?mt(t,i,{useInternationalFormat:"INTERNATIONAL"===n,withNationalPrefix:!i.nationalPrefixIsOptionalWhenFormattingInNationalFormat()||!r||!1!==r.nationalPrefix,carrierCode:e,metadata:d}):t}function St(t,e,n,d){return e?d(t,e,n):t}function Et(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(t);e&&(d=d.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,d)}return n}function It(t){for(var e=1;e0&&"0"===a[1]))return t}}}function Rt(t,e){if(t&&e.numberingPlan.nationalPrefixForParsing()){var n=new RegExp("^(?:"+e.numberingPlan.nationalPrefixForParsing()+")"),d=n.exec(t);if(d){var r,i,a,o=d.length-1,$=o>0&&d[o];if(e.nationalPrefixTransformRule()&&$)r=t.replace(n,e.nationalPrefixTransformRule()),o>1&&(i=d[1]);else{var u=d[0];r=t.slice(u.length),$&&(i=d[1])}if($){var l=t.indexOf(d[1]);t.slice(0,l)===e.numberingPlan.nationalPrefix()&&(a=e.numberingPlan.nationalPrefix())}else a=d[0];return{nationalNumber:r,nationalPrefix:a,carrierCode:i}}}return{nationalNumber:t}}function Mt(t,e){var n=Rt(t,e),d=n.carrierCode,r=n.nationalNumber;if(r!==t){if(!function(t,e,n){if($t(t,n.nationalNumberPattern())&&!$t(e,n.nationalNumberPattern()))return!1;return!0}(t,r,e))return{nationalNumber:t};if(e.possibleLengths()&&!function(t,e){switch(tt(t,e)){case"TOO_SHORT":case"INVALID_LENGTH":return!1;default:return!0}}(r,e))return{nationalNumber:t}}return{nationalNumber:r,carrierCode:d}}function Lt(t,e,n,d){var r=e?j(e,d):n;if(0===t.indexOf(r)){(d=new P(d)).selectNumberingPlan(e,n);var i=t.slice(r.length),a=Mt(i,d).nationalNumber,o=Mt(t,d).nationalNumber;if(!$t(o,d.nationalNumberPattern())&&$t(a,d.nationalNumberPattern())||"TOO_LONG"===tt(o,d))return{countryCallingCode:r,number:i}}return{number:t}}function _t(t,e,n,d){if(!t)return{};if("+"!==t[0]){var r=Dt(t,e,n,d);if(!r||r===t){if(e||n){var i=Lt(t,e,n,d),a=i.countryCallingCode,o=i.number;if(a)return{countryCallingCode:a,number:o}}return{number:t}}t="+"+r}if("0"===t[1])return{};d=new P(d);for(var $=2;$-1<=3&&$<=t.length;){var u=t.slice(1,$);if(d.hasCallingCode(u))return d.selectNumberingPlan(u),{countryCallingCode:u,number:t.slice($)};$++}return{}}function Gt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(n)return(n=n.call(t)).next.bind(n);if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return Bt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Bt(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var d=0;return function(){return d>=t.length?{done:!0}:{done:!1,value:t[d++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Bt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,d=new Array(e);n250){if(n)throw new s("TOO_LONG");return}if(!1===e)return t;var d=t.search(Wt);if(d<0)return;return t.slice(d).replace(Vt,"")}(t,n,e);if(!d)return{};if(!B(d))return function(t){return L.test(t)}(d)?{error:"TOO_SHORT"}:{};var r=function(t){var e=t.search(U);if(e<0)return{};for(var n=t.slice(0,e),d=t.match(U),r=1;r17){if(e.v2)throw new s("TOO_LONG");return{}}if(e.v2){var f=new jt(l,u,n.metadata);return $&&(f.country=$),c&&(f.carrierCode=c),i&&(f.ext=i),f}var h=!!(e.extended?n.hasSelectedNumberingPlan():$)&&$t(u,n.nationalNumberPattern());return e.extended?{country:$,countryCallingCode:l,carrierCode:c,valid:h,possible:!!h||!(!0!==e.extended||!n.possibleLengths()||!nt(u,n)),phone:u,ext:i}:h?function(t,e,n){var d={country:t,phone:e};n&&(d.ext=n);return d}($,u,i):{}}function Kt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(t);e&&(d=d.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,d)}return n}function Yt(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,d=new Array(e);n2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;Pe(this,t),this.key=e,this.value=n,this.next=d,this.prev=r})),xe=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10;Pe(this,t),this.size=0,this.limit=e,this.head=null,this.tail=null,this.cache={}}return Ne(t,[{key:"put",value:function(t,e){if(this.ensureLimit(),this.head){var n=new Oe(t,e,this.head);this.head.prev=n,this.head=n}else this.head=this.tail=new Oe(t,e);this.cache[t]=this.head,this.size++}},{key:"get",value:function(t){if(this.cache[t]){var e=this.cache[t].value;return this.remove(t),this.put(t,e),e}console.log("Item not available in cache for key ".concat(t))}},{key:"ensureLimit",value:function(){this.size===this.limit&&this.remove(this.tail.key)}},{key:"remove",value:function(t){var e=this.cache[t];null!==e.prev?e.prev.next=e.next:this.head=e.next,null!==e.next?e.next.prev=e.prev:this.tail=e.prev,delete this.cache[t],this.size--}},{key:"clear",value:function(){this.head=null,this.tail=null,this.size=0,this.cache={}}}]),t}();function we(t,e){for(var n=0;n=0?e.slice(0,n):e}var Ae="   ᠎ - \u2028\u2029   ",Te="[".concat(Ae,"]"),je="[^".concat(Ae,"]"),Fe="[".concat("0-9٠-٩۰-۹߀-߉०-९০-৯੦-੯૦-૯୦-୯௦-௯౦-౯೦-೯൦-൯๐-๙໐-໙༠-༩၀-၉႐-႙០-៩᠐-᠙᥆-᥏᧐-᧙᪀-᪉᪐-᪙᭐-᭙᮰-᮹᱀-᱉᱐-᱙꘠-꘩꣐-꣙꤀-꤉꧐-꧙꩐-꩙꯰-꯹0-9","]"),ke="A-Za-zªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎↃↄⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々〆〱-〵〻〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛥꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ",De="[".concat(ke,"]"),Re=new RegExp(De),Me="[".concat("$¢-¥֏؋৲৳৻૱௹฿៛₠-₹꠸﷼﹩$¢£¥₩","]"),Le=new RegExp(Me),_e="[".concat("̀-ͯ҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-ٰٟۖ-ۜ۟-۪ۤۧۨ-ܑۭܰ-݊ަ-ް߫-߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛ࣤ-ࣾऀ-ंऺ़ु-ै्॑-ॗॢॣঁ়ু-ৄ্ৢৣਁਂ਼ੁੂੇੈੋ-੍ੑੰੱੵઁં઼ુ-ૅેૈ્ૢૣଁ଼ିୁ-ୄ୍ୖୢୣஂீ்ా-ీె-ైొ-్ౕౖౢౣ಼ಿೆೌ್ೢೣു-ൄ്ൢൣ්ි-ුූัิ-ฺ็-๎ັິ-ູົຼ່-ໍཱ༹༘༙༵༷-ཾྀ-྄྆྇ྍ-ྗྙ-ྼ࿆ိ-ူဲ-့္်ွှၘၙၞ-ၠၱ-ၴႂႅႆႍႝ፝-፟ᜒ-᜔ᜲ-᜴ᝒᝓᝲᝳ឴឵ិ-ួំ៉-៓៝᠋-᠍ᢩᤠ-ᤢᤧᤨᤲ᤹-᤻ᨘᨗᩖᩘ-ᩞ᩠ᩢᩥ-ᩬᩳ-᩿᩼ᬀ-ᬃ᬴ᬶ-ᬺᬼᭂ᭫-᭳ᮀᮁᮢ-ᮥᮨᮩ᯦᮫ᯨᯩᯭᯯ-ᯱᰬ-ᰳᰶ᰷᳐-᳔᳒-᳢᳠-᳨᳭᳴᷀-ᷦ᷼-᷿⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〭꙯ꙴ-꙽ꚟ꛰꛱ꠂ꠆ꠋꠥꠦ꣄꣠-꣱ꤦ-꤭ꥇ-ꥑꦀ-ꦂ꦳ꦶ-ꦹꦼꨩ-ꨮꨱꨲꨵꨶꩃꩌꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫬꫭ꫶ꯥꯨ꯭ﬞ︀-️︠-︦","]"),Ge=new RegExp(_e),Be=new RegExp("[\0-€-ÿĀ-ſḀ-ỿƀ-ɏ̀-ͯ]");function Ue(t){return!(!Re.test(t)&&!Ge.test(t))&&Be.test(t)}function We(t){return"%"===t||Le.test(t)}function Ve(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(n)return(n=n.call(t)).next.bind(n);if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return He(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return He(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var d=0;return function(){return d>=t.length?{done:!0}:{done:!1,value:t[d++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function He(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,d=new Array(e);n0){if(i.getNationalPrefixOptionalWhenFormatting())return!0;if(PhoneNumberUtil.formattingRuleHasFirstGroupOnly(i.getNationalPrefixFormattingRule()))return!0;var a=PhoneNumberUtil.normalizeDigitsOnly(t.getRawInput());return util.maybeStripNationalPrefixAndCarrierCode(a,d,null)}return!0}function Xe(t,e){var n=e.indexOf("/");if(n<0)return!1;var d=e.indexOf("/",n+1);return!(d<0)&&(!(t.getCountryCodeSource()===CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN||t.getCountryCodeSource()===CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN)||PhoneNumberUtil.normalizeDigitsOnly(e.substring(0,n))!==String(t.getCountryCode())||e.slice(d+1).indexOf("/")>=0)}function Je(t,e,n,d,r){var i=normalizeDigits(e,!0),a=ze(n,t,null);if(d(n,t,i,a))return!0;var o=MetadataManager.getAlternateFormatsForCountry(t.getCountryCode()),$=util.getNationalSignificantNumber(t);if(o)for(var u,l=Ve(o.numberFormats());!(u=l()).done;){var c=u.value;if(c.leadingDigitsPatterns().length>0)if(!r.getPatternForRegExp("^"+c.leadingDigitsPatterns()[0]).test($))continue;if(d(n,t,i,a=ze(n,t,c)))return!0}return!1}function ze(t,e,n){if(n){var d=util.getNationalSignificantNumber(e);return util.formatNsnUsingPattern(d,n,"RFC3966",t).split("-")}var r=formatNumber(e,"RFC3966",t),i=r.indexOf(";");i<0&&(i=r.length);var a=r.indexOf("-")+1;return r.slice(a,i).split("-")}function Qe(t,e,n,d){var r=n.split(NON_DIGITS_PATTERN),i=e.hasExtension()?r.length-2:r.length-1;if(1==r.length||r[i].contains(util.getNationalSignificantNumber(e)))return!0;for(var a,o,$=d.length-1;$>0&&i>=0;){if(r[i]!==d[$])return!1;$--,i--}return i>=0&&(a=r[i],o=d[0],a.indexOf(o,a.length-o.length)===a.length-o.length)}function qe(t,e,n,d){var r,i,a=0;if(e.getCountryCodeSource()!==CountryCodeSource.FROM_DEFAULT_COUNTRY){var o=String(e.getCountryCode());a=n.indexOf(o)+o.length()}for(var $=0;$=t.length?{done:!0}:{done:!1,value:t[d++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function gn(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,d=new Array(e);n0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},d=arguments.length>2?arguments[2]:void 0;if(vn(this,t),!(n=pn(pn({},n),{},{defaultCallingCode:n.defaultCallingCode,defaultCountry:n.defaultCountry&&F(n.defaultCountry,d)?n.defaultCountry:void 0,leniency:n.leniency||n.extended?"POSSIBLE":"VALID",maxTries:n.maxTries||Tn})).leniency)throw new TypeError("`Leniency` not supplied");if(n.maxTries<0)throw new TypeError("`maxTries` not supplied");if(this.text=e,this.options=n,this.metadata=d,this.leniency=Ke[n.leniency],!this.leniency)throw new TypeError("Unknown leniency: ".concat(n.leniency,"."));this.maxTries=n.maxTries,this.PATTERN=new RegExp(In,"ig"),this.state="NOT_READY",this.searchIndex=0,this.regExpCache=new Se(32)}var e,n,d;return e=t,n=[{key:"find",value:function(){for(var t;this.maxTries>0&&null!==(t=this.PATTERN.exec(this.text));){var e=t[0],n=t.index;if(an(e=en(e),n,this.text)){var d=this.parseAndVerify(e,n,this.text)||this.extractInnerMatch(e,n,this.text);if(d){if(this.options.v2){var r=new jt(d.country||d.countryCallingCode,d.phone,this.metadata);return d.ext&&(r.ext=d.ext),{startsAt:d.startsAt,endsAt:d.endsAt,number:r}}return d}}this.maxTries--}}},{key:"extractInnerMatch",value:function(t,e,n){for(var d,r=yn(Pn);!(d=r()).done;)for(var i=d.value,a=!0,o=void 0,$=new RegExp(i,"g");this.maxTries>0&&null!==(o=$.exec(t));){if(a){var u=Ie(An,t.slice(0,o.index)),l=this.parseAndVerify(u,e,n);if(l)return l;this.maxTries--,a=!1}var c=Ie(An,o[1]),s=t.indexOf(c,o.index),f=this.parseAndVerify(c,e+s,n);if(f)return f;this.maxTries--}}},{key:"parseAndVerify",value:function(t,e,n){if(function(t,e,n,d){if(fn.test(t)&&!hn.test(t)){if("POSSIBLE"!==d){if(e>0&&!cn.test(t)){var r=n[e-1];if(We(r)||Ue(r))return!1}var i=e+t.length;if(i=t.length?{done:!0}:{done:!1,value:t[d++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Zn(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,d=new Array(e);n1;)1&e&&(n+=t),e>>=1,t+=t;return n+t}function Qn(t,e){return")"===t[e]&&e++,function(t){var e=[],n=0;for(;n=t.length?{done:!0}:{done:!1,value:t[d++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function $d(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,d=new Array(e);n1&&void 0!==arguments[1]?arguments[1]:{},n=e.allowOverflow;if(!t)throw new Error("String is required");var d=cd(t.split(""),this.matchTree,!0);if(d&&d.match&&delete d.matchedChars,!d||!d.overflow||n)return d}}],n&&ud(e.prototype,n),d&&ud(e,d),Object.defineProperty(e,"prototype",{writable:!1}),t}();function cd(t,e,n){if("string"==typeof e){var d=t.join("");return 0===e.indexOf(d)?t.length===e.length?{match:!0,matchedChars:t}:{partialMatch:!0}:0===d.indexOf(e)?n&&t.length>e.length?{overflow:!0}:{match:!0,matchedChars:t.slice(0,e.length)}:void 0}if(Array.isArray(e)){for(var r=t.slice(),i=0;i=t.length?{done:!0}:{done:!1,value:t[d++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function fd(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,d=new Array(e);n=0)){var n=this.getTemplateForFormat(t,e);return n?(this.setNationalNumberTemplate(n,e),!0):void 0}}},{key:"getSeparatorAfterNationalPrefix",value:function(t){return this.isNANP||t&&t.nationalPrefixFormattingRule()&&gd.test(t.nationalPrefixFormattingRule())?" ":""}},{key:"getInternationalPrefixBeforeCountryCallingCode",value:function(t,e){var n=t.IDDPrefix,d=t.missingPlus;return n?e&&!1===e.spacing?n:n+" ":d?"":"+"}},{key:"getTemplate",value:function(t){if(this.template){for(var e=-1,n=0,d=t.international?this.getInternationalPrefixBeforeCountryCallingCode(t,{spacing:!1}):"";no.length)){var $=new RegExp("^"+a+"$"),u=n.replace(/\d/g,"9");$.test(u)&&(o=u);var l,c=this.getFormatFormat(t,d);if(this.shouldTryNationalPrefixFormattingRule(t,{international:d,nationalPrefix:r})){var s=c.replace(gt,t.nationalPrefixFormattingRule());if(Y(t.nationalPrefixFormattingRule())===(r||"")+Y("$1")&&(c=s,l=!0,r))for(var f=r.length;f>0;)c=c.replace(/\d/,Xn),f--}var h=o.replace(new RegExp(a),c).replace(new RegExp("9","g"),Xn);return l||(i?h=zn(Xn,i.length)+" "+h:r&&(h=zn(Xn,r.length)+this.getSeparatorAfterNationalPrefix(t)+h)),d&&(h=yt(h)),h}}},{key:"formatNextNationalNumberDigits",value:function(t){var e=function(t,e,n){for(var d,r=Yn(n.split(""));!(d=r()).done;){var i=d.value;if(t.slice(e+1).search(Jn)<0)return;e=t.search(Jn),t=t.replace(Jn,i)}return[t,e]}(this.populatedNationalNumberTemplate,this.populatedNationalNumberTemplatePosition,t);if(e)return this.populatedNationalNumberTemplate=e[0],this.populatedNationalNumberTemplatePosition=e[1],Qn(this.populatedNationalNumberTemplate,this.populatedNationalNumberTemplatePosition+1);this.resetFormat()}},{key:"shouldTryNationalPrefixFormattingRule",value:function(t,e){var n=e.international,d=e.nationalPrefix;if(t.nationalPrefixFormattingRule()){var r=t.usesNationalPrefix();if(r&&d||!r&&!n)return!0}}}],n&&hd(e.prototype,n),d&&hd(e,d),Object.defineProperty(e,"prototype",{writable:!1}),t}();function bd(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null==n)return;var d,r,i=[],a=!0,o=!1;try{for(n=n.call(t);!(a=(d=n.next()).done)&&(i.push(d.value),!e||i.length!==e);a=!0);}catch(t){o=!0,r=t}finally{try{a||null==n.return||n.return()}finally{if(o)throw r}}return i}(t,e)||function(t,e){if(!t)return;if("string"==typeof t)return vd(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return vd(t,e)}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function vd(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,d=new Array(e);n=3;if(e.appendDigits(t),d&&this.extractIddPrefix(e),this.isWaitingForCountryCallingCode(e)){if(!this.extractCountryCallingCode(e))return}else e.appendNationalSignificantNumberDigits(t);e.international||this.hasExtractedNationalSignificantNumber||this.extractNationalSignificantNumber(e.getNationalDigits(),(function(t){return e.update(t)}))}},{key:"isWaitingForCountryCallingCode",value:function(t){var e=t.international,n=t.callingCode;return e&&!n}},{key:"extractCountryCallingCode",value:function(t){var e=_t("+"+t.getDigitsWithoutInternationalPrefix(),this.defaultCountry,this.defaultCallingCode,this.metadata.metadata),n=e.countryCallingCode,d=e.number;if(n)return t.setCallingCode(n),t.update({nationalSignificantNumber:d}),!0}},{key:"reset",value:function(t){if(t){this.hasSelectedNumberingPlan=!0;var e=t._nationalPrefixForParsing();this.couldPossiblyExtractAnotherNationalSignificantNumber=e&&xd.test(e)}else this.hasSelectedNumberingPlan=void 0,this.couldPossiblyExtractAnotherNationalSignificantNumber=void 0}},{key:"extractNationalSignificantNumber",value:function(t,e){if(this.hasSelectedNumberingPlan){var n=Rt(t,this.metadata),d=n.nationalPrefix,r=n.nationalNumber,i=n.carrierCode;if(r!==t)return this.onExtractedNationalNumber(d,i,r,t,e),!0}}},{key:"extractAnotherNationalSignificantNumber",value:function(t,e,n){if(!this.hasExtractedNationalSignificantNumber)return this.extractNationalSignificantNumber(t,n);if(this.couldPossiblyExtractAnotherNationalSignificantNumber){var d=Rt(t,this.metadata),r=d.nationalPrefix,i=d.nationalNumber,a=d.carrierCode;if(i!==e)return this.onExtractedNationalNumber(r,a,i,t,n),!0}}},{key:"onExtractedNationalNumber",value:function(t,e,n,d,r){var i,a,o=d.lastIndexOf(n);if(o>=0&&o===d.length-n.length){a=!0;var $=d.slice(0,o);$!==t&&(i=$)}r({nationalPrefix:t,carrierCode:e,nationalSignificantNumber:n,nationalSignificantNumberMatchesInput:a,complexPrefixBeforeNationalSignificantNumber:i}),this.hasExtractedNationalSignificantNumber=!0,this.onNationalSignificantNumberChange()}},{key:"reExtractNationalSignificantNumber",value:function(t){return!!this.extractAnotherNationalSignificantNumber(t.getNationalDigits(),t.nationalSignificantNumber,(function(e){return t.update(e)}))||(this.extractIddPrefix(t)||this.fixMissingPlus(t)?(this.extractCallingCodeAndNationalSignificantNumber(t),!0):void 0)}},{key:"extractIddPrefix",value:function(t){var e=t.international,n=t.IDDPrefix,d=t.digits;if(t.nationalSignificantNumber,!e&&!n){var r=Dt(d,this.defaultCountry,this.defaultCallingCode,this.metadata.metadata);return void 0!==r&&r!==d?(t.update({IDDPrefix:d.slice(0,d.length-r.length)}),this.startInternationalNumber(t,{country:void 0,callingCode:void 0}),!0):void 0}}},{key:"fixMissingPlus",value:function(t){if(!t.international){var e=Lt(t.digits,this.defaultCountry,this.defaultCallingCode,this.metadata.metadata),n=e.countryCallingCode;if(e.number,n)return t.update({missingPlus:!0}),this.startInternationalNumber(t,{country:t.country,callingCode:n}),!0}}},{key:"startInternationalNumber",value:function(t,e){var n=e.country,d=e.callingCode;t.startInternationalNumber(n,d),t.nationalSignificantNumber&&(t.resetNationalSignificantNumber(),this.onNationalSignificantNumberChange(),this.hasExtractedNationalSignificantNumber=void 0)}},{key:"extractCallingCodeAndNationalSignificantNumber",value:function(t){this.extractCountryCallingCode(t)&&this.extractNationalSignificantNumber(t.getNationalDigits(),(function(e){return t.update(e)}))}}])&&Cd(e.prototype,n),d&&Cd(e,d),Object.defineProperty(e,"prototype",{writable:!1}),t}();function Sd(t){return Sd="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Sd(t)}function Ed(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null==n)return;var d,r,i=[],a=!0,o=!1;try{for(n=n.call(t);!(a=(d=n.next()).done)&&(i.push(d.value),!e||i.length!==e);a=!0);}catch(t){o=!0,r=t}finally{try{a||null==n.return||n.return()}finally{if(o)throw r}}return i}(t,e)||function(t,e){if(!t)return;if("string"==typeof t)return Id(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Id(t,e)}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Id(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,d=new Array(e);n1}},{key:"determineTheCountry",value:function(){this.state.setCountry(Ut(this.isInternational()?this.state.callingCode:this.defaultCallingCode,this.state.nationalSignificantNumber,this.metadata))}},{key:"getNumberValue",value:function(){var t=this.state,e=t.digits,n=t.callingCode,d=t.country,r=t.nationalSignificantNumber;if(e)return this.isInternational()?n?"+"+n+r:"+"+e:d||n?"+"+(d?this.metadata.countryCallingCode():n)+r:void 0}},{key:"getNumber",value:function(){var t=this.state,e=t.nationalSignificantNumber,n=t.carrierCode,d=t.callingCode,r=this._getCountry();if(e&&(r||d)){var i=new jt(r||d,e,this.metadata.metadata);return n&&(i.carrierCode=n),i}}},{key:"isPossible",value:function(){var t=this.getNumber();return!!t&&t.isPossible()}},{key:"isValid",value:function(){var t=this.getNumber();return!!t&&t.isValid()}},{key:"getNationalNumber",value:function(){return this.state.nationalSignificantNumber}},{key:"getChars",value:function(){return(this.state.international?"+":"")+this.state.digits}},{key:"getTemplate",value:function(){return this.formatter.getTemplate(this.state)||this.getNonFormattedTemplate()||""}}])&&Ad(e.prototype,n),d&&Ad(e,d),Object.defineProperty(e,"prototype",{writable:!1}),t}();function jd(t){return new P(t).getCountries()}function Fd(t,e,n){if(e[t])return new jt(t,e[t],n)}function kd(t,e,n){return n||(n=e,e=void 0),new Td(e,n).input(t)}function Dd(){return n(ee,arguments)}function Rd(){return n($e,arguments)}function Md(t,n){return jn.call(this,t,n,e)}function Ld(t){return Td.call(this,t,e)}function _d(){return P.call(this,e)}Md.prototype=Object.create(jn.prototype,{}),Md.prototype.constructor=Md,Ld.prototype=Object.create(Td.prototype,{}),Ld.prototype.constructor=Ld,_d.prototype=Object.create(P.prototype,{}),_d.prototype.constructor=_d,t.AsYouType=Ld,t.DIGIT_PLACEHOLDER=Xn,t.Metadata=_d,t.ParseError=s,t.PhoneNumberMatcher=Md,t.default=Rd,t.findNumbers=function(){return n(kn,arguments)},t.findPhoneNumbersInText=function(){return n(Bn,arguments)},t.formatIncompletePhoneNumber=function(){return n(kd,arguments)},t.formatRFC3966=ot,t.getCountries=function(){return n(jd,arguments)},t.getCountryCallingCode=function(){return n(j,arguments)},t.getExampleNumber=function(){return n(Fd,arguments)},t.getExtPrefix=function(){return n(T,arguments)},t.isPossiblePhoneNumber=function(){return n(ge,arguments)},t.isSupportedCountry=function(){return n(F,arguments)},t.isValidPhoneNumber=function(){return n(se,arguments)},t.parseDigits=Y,t.parseIncompletePhoneNumber=J,t.parsePhoneNumber=Dd,t.parsePhoneNumberCharacter=z,t.parsePhoneNumberFromString=Rd,t.parsePhoneNumberWithError=Dd,t.parseRFC3966=at,t.searchNumbers=function(){return n(Rn,arguments)},t.searchPhoneNumbersInText=function(){return n(Vn,arguments)},t.validatePhoneNumberLength=function(){return n(ve,arguments)},Object.defineProperty(t,"__esModule",{value:!0})})); +//# sourceMappingURL=libphonenumber-mobile.js.map diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-mobile.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-mobile.js.map new file mode 100644 index 00000000..6ec86ee2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/bundle/libphonenumber-mobile.js.map @@ -0,0 +1 @@ +{"version":3,"file":"libphonenumber-mobile.js","sources":["../metadata.mobile.json.js","../mobile/exports/withMetadataArgument.js","../es6/ParseError.js","../es6/constants.js","../es6/tools/semver-compare.js","../es6/metadata.js","../es6/helpers/extension/createExtensionPattern.js","../es6/helpers/isViablePhoneNumber.js","../es6/helpers/extension/extractExtension.js","../es6/helpers/parseDigits.js","../es6/parseIncompletePhoneNumber.js","../es6/helpers/mergeArrays.js","../es6/helpers/checkNumberLength.js","../es6/isPossibleNumber_.js","../es6/helpers/RFC3966.js","../es6/helpers/matchesEntirely.js","../es6/helpers/getNumberType.js","../es6/validate_.js","../es6/helpers/applyInternationalSeparatorStyle.js","../es6/helpers/formatNationalNumberUsingFormat.js","../es6/helpers/getIddPrefix.js","../es6/format_.js","../es6/PhoneNumber.js","../es6/helpers/stripIddPrefix.js","../es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js","../es6/helpers/extractNationalNumber.js","../es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js","../es6/helpers/extractCountryCallingCode.js","../es6/helpers/getCountryByCallingCode.js","../es6/parse_.js","../es6/parsePhoneNumber_.js","../es6/parsePhoneNumber.js","../es6/parsePhoneNumberFromString_.js","../es6/parsePhoneNumberFromString.js","../es6/isValidPhoneNumber.js","../es6/isPossiblePhoneNumber.js","../es6/validatePhoneNumberLength.js","../es6/findNumbers/LRUCache.js","../es6/findNumbers/RegExpCache.js","../es6/findNumbers/util.js","../es6/findNumbers/utf-8.js","../es6/findNumbers/Leniency.js","../es6/findNumbers/parsePreCandidate.js","../es6/findNumbers/isValidPreCandidate.js","../es6/findNumbers/isValidCandidate.js","../es6/PhoneNumberMatcher.js","../es6/findNumbers_.js","../es6/findNumbers.js","../es6/searchNumbers.js","../es6/findPhoneNumbersInText.js","../es6/searchPhoneNumbersInText.js","../es6/AsYouTypeState.js","../es6/AsYouTypeFormatter.util.js","../es6/AsYouTypeFormatter.complete.js","../es6/AsYouTypeFormatter.PatternParser.js","../es6/AsYouTypeFormatter.PatternMatcher.js","../es6/AsYouTypeFormatter.js","../es6/AsYouTypeParser.js","../es6/AsYouType.js","../es6/getCountries.js","../es6/getExampleNumber.js","../es6/formatIncompletePhoneNumber.js","../mobile/exports/parsePhoneNumberWithError.js","../mobile/exports/parsePhoneNumberFromString.js","../mobile/exports/PhoneNumberMatcher.js","../mobile/exports/AsYouType.js","../mobile/exports/Metadata.js","../mobile/exports/findNumbers.js","../mobile/exports/findPhoneNumbersInText.js","../mobile/exports/formatIncompletePhoneNumber.js","../mobile/exports/getCountries.js","../mobile/exports/getCountryCallingCode.js","../mobile/exports/getExampleNumber.js","../mobile/exports/getExtPrefix.js","../mobile/exports/isPossiblePhoneNumber.js","../mobile/exports/isSupportedCountry.js","../mobile/exports/isValidPhoneNumber.js","../mobile/exports/searchNumbers.js","../mobile/exports/searchPhoneNumbersInText.js","../mobile/exports/validatePhoneNumberLength.js"],"sourcesContent":["// This file is a workaround for a bug in web browsers' \"native\"\n// ES6 importing system which is uncapable of importing \"*.json\" files.\n// https://github.com/catamphetamine/libphonenumber-js/issues/239\nexport default {\"version\":4,\"country_calling_codes\":{\"1\":[\"US\",\"AG\",\"AI\",\"AS\",\"BB\",\"BM\",\"BS\",\"CA\",\"DM\",\"DO\",\"GD\",\"GU\",\"JM\",\"KN\",\"KY\",\"LC\",\"MP\",\"MS\",\"PR\",\"SX\",\"TC\",\"TT\",\"VC\",\"VG\",\"VI\"],\"7\":[\"RU\",\"KZ\"],\"20\":[\"EG\"],\"27\":[\"ZA\"],\"30\":[\"GR\"],\"31\":[\"NL\"],\"32\":[\"BE\"],\"33\":[\"FR\"],\"34\":[\"ES\"],\"36\":[\"HU\"],\"39\":[\"IT\",\"VA\"],\"40\":[\"RO\"],\"41\":[\"CH\"],\"43\":[\"AT\"],\"44\":[\"GB\",\"GG\",\"IM\",\"JE\"],\"45\":[\"DK\"],\"46\":[\"SE\"],\"47\":[\"NO\",\"SJ\"],\"48\":[\"PL\"],\"49\":[\"DE\"],\"51\":[\"PE\"],\"52\":[\"MX\"],\"53\":[\"CU\"],\"54\":[\"AR\"],\"55\":[\"BR\"],\"56\":[\"CL\"],\"57\":[\"CO\"],\"58\":[\"VE\"],\"60\":[\"MY\"],\"61\":[\"AU\",\"CC\",\"CX\"],\"62\":[\"ID\"],\"63\":[\"PH\"],\"64\":[\"NZ\"],\"65\":[\"SG\"],\"66\":[\"TH\"],\"81\":[\"JP\"],\"82\":[\"KR\"],\"84\":[\"VN\"],\"86\":[\"CN\"],\"90\":[\"TR\"],\"91\":[\"IN\"],\"92\":[\"PK\"],\"93\":[\"AF\"],\"94\":[\"LK\"],\"95\":[\"MM\"],\"98\":[\"IR\"],\"211\":[\"SS\"],\"212\":[\"MA\",\"EH\"],\"213\":[\"DZ\"],\"216\":[\"TN\"],\"218\":[\"LY\"],\"220\":[\"GM\"],\"221\":[\"SN\"],\"222\":[\"MR\"],\"223\":[\"ML\"],\"224\":[\"GN\"],\"225\":[\"CI\"],\"226\":[\"BF\"],\"227\":[\"NE\"],\"228\":[\"TG\"],\"229\":[\"BJ\"],\"230\":[\"MU\"],\"231\":[\"LR\"],\"232\":[\"SL\"],\"233\":[\"GH\"],\"234\":[\"NG\"],\"235\":[\"TD\"],\"236\":[\"CF\"],\"237\":[\"CM\"],\"238\":[\"CV\"],\"239\":[\"ST\"],\"240\":[\"GQ\"],\"241\":[\"GA\"],\"242\":[\"CG\"],\"243\":[\"CD\"],\"244\":[\"AO\"],\"245\":[\"GW\"],\"246\":[\"IO\"],\"247\":[\"AC\"],\"248\":[\"SC\"],\"249\":[\"SD\"],\"250\":[\"RW\"],\"251\":[\"ET\"],\"252\":[\"SO\"],\"253\":[\"DJ\"],\"254\":[\"KE\"],\"255\":[\"TZ\"],\"256\":[\"UG\"],\"257\":[\"BI\"],\"258\":[\"MZ\"],\"260\":[\"ZM\"],\"261\":[\"MG\"],\"262\":[\"RE\",\"YT\"],\"263\":[\"ZW\"],\"264\":[\"NA\"],\"265\":[\"MW\"],\"266\":[\"LS\"],\"267\":[\"BW\"],\"268\":[\"SZ\"],\"269\":[\"KM\"],\"290\":[\"SH\",\"TA\"],\"291\":[\"ER\"],\"297\":[\"AW\"],\"298\":[\"FO\"],\"299\":[\"GL\"],\"350\":[\"GI\"],\"351\":[\"PT\"],\"352\":[\"LU\"],\"353\":[\"IE\"],\"354\":[\"IS\"],\"355\":[\"AL\"],\"356\":[\"MT\"],\"357\":[\"CY\"],\"358\":[\"FI\",\"AX\"],\"359\":[\"BG\"],\"370\":[\"LT\"],\"371\":[\"LV\"],\"372\":[\"EE\"],\"373\":[\"MD\"],\"374\":[\"AM\"],\"375\":[\"BY\"],\"376\":[\"AD\"],\"377\":[\"MC\"],\"378\":[\"SM\"],\"380\":[\"UA\"],\"381\":[\"RS\"],\"382\":[\"ME\"],\"383\":[\"XK\"],\"385\":[\"HR\"],\"386\":[\"SI\"],\"387\":[\"BA\"],\"389\":[\"MK\"],\"420\":[\"CZ\"],\"421\":[\"SK\"],\"423\":[\"LI\"],\"500\":[\"FK\"],\"501\":[\"BZ\"],\"502\":[\"GT\"],\"503\":[\"SV\"],\"504\":[\"HN\"],\"505\":[\"NI\"],\"506\":[\"CR\"],\"507\":[\"PA\"],\"508\":[\"PM\"],\"509\":[\"HT\"],\"590\":[\"GP\",\"BL\",\"MF\"],\"591\":[\"BO\"],\"592\":[\"GY\"],\"593\":[\"EC\"],\"594\":[\"GF\"],\"595\":[\"PY\"],\"596\":[\"MQ\"],\"597\":[\"SR\"],\"598\":[\"UY\"],\"599\":[\"CW\",\"BQ\"],\"670\":[\"TL\"],\"672\":[\"NF\"],\"673\":[\"BN\"],\"674\":[\"NR\"],\"675\":[\"PG\"],\"676\":[\"TO\"],\"677\":[\"SB\"],\"678\":[\"VU\"],\"679\":[\"FJ\"],\"680\":[\"PW\"],\"681\":[\"WF\"],\"682\":[\"CK\"],\"683\":[\"NU\"],\"685\":[\"WS\"],\"686\":[\"KI\"],\"687\":[\"NC\"],\"688\":[\"TV\"],\"689\":[\"PF\"],\"690\":[\"TK\"],\"691\":[\"FM\"],\"692\":[\"MH\"],\"850\":[\"KP\"],\"852\":[\"HK\"],\"853\":[\"MO\"],\"855\":[\"KH\"],\"856\":[\"LA\"],\"880\":[\"BD\"],\"886\":[\"TW\"],\"960\":[\"MV\"],\"961\":[\"LB\"],\"962\":[\"JO\"],\"963\":[\"SY\"],\"964\":[\"IQ\"],\"965\":[\"KW\"],\"966\":[\"SA\"],\"967\":[\"YE\"],\"968\":[\"OM\"],\"970\":[\"PS\"],\"971\":[\"AE\"],\"972\":[\"IL\"],\"973\":[\"BH\"],\"974\":[\"QA\"],\"975\":[\"BT\"],\"976\":[\"MN\"],\"977\":[\"NP\"],\"992\":[\"TJ\"],\"993\":[\"TM\"],\"994\":[\"AZ\"],\"995\":[\"GE\"],\"996\":[\"KG\"],\"998\":[\"UZ\"]},\"countries\":{\"AC\":[\"247\",\"00\",\"(?:[01589]\\\\d|[46])\\\\d{4}\",[5,6],0,0,0,0,0,0,0,[0,[\"4\\\\d{4}\",[5]]]],\"AD\":[\"376\",\"00\",\"(?:1|6\\\\d)\\\\d{7}|[135-9]\\\\d{5}\",[6,8,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[135-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]],0,0,0,0,0,0,[0,[\"690\\\\d{6}|[356]\\\\d{5}\",[6,9]]]],\"AE\":[\"971\",\"00\",\"(?:[4-7]\\\\d|9[0-689])\\\\d{7}|800\\\\d{2,9}|[2-4679]\\\\d{7}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{2,9})\",\"$1 $2\",[\"60|8\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[236]|[479][2-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{5})\",\"$1 $2 $3\",[\"[479]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"5[024-68]\\\\d{7}\",[9]]]],\"AF\":[\"93\",\"00\",\"[2-7]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"7\\\\d{8}\"]]],\"AG\":[\"1\",\"011\",\"(?:268|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([457]\\\\d{6})$\",\"268$1\",0,\"268\",[0,[\"268(?:464|7(?:1[3-9]|[28]\\\\d|3[0246]|64|7[0-689]))\\\\d{4}\"]]],\"AI\":[\"1\",\"011\",\"(?:264|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2457]\\\\d{6})$\",\"264$1\",0,\"264\",[0,[\"264(?:235|4(?:69|76)|5(?:3[6-9]|8[1-4])|7(?:29|72))\\\\d{4}\"]]],\"AL\":[\"355\",\"00\",\"(?:700\\\\d\\\\d|900)\\\\d{3}|8\\\\d{5,7}|(?:[2-5]|6\\\\d)\\\\d{7}\",[6,7,8,9],[[\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"80|9\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2358][2-5]|4\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[23578]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"6(?:[78][2-9]|9\\\\d)\\\\d{6}\",[9]]]],\"AM\":[\"374\",\"00\",\"(?:[1-489]\\\\d|55|60|77)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]0\"],\"0 $1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2|3[12]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"1|47\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[3-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"(?:33|4[1349]|55|77|88|9[13-9])\\\\d{6}\"]]],\"AO\":[\"244\",\"00\",\"[29]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[29]\"]]],0,0,0,0,0,0,[0,[\"9[1-59]\\\\d{7}\"]]],\"AR\":[\"54\",\"00\",\"(?:11|[89]\\\\d\\\\d)\\\\d{8}|[2368]\\\\d{9}\",[10,11],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2-$3\",[\"2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])\",\"2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"1\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[68]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[23]\"],\"0$1\",1],[\"(\\\\d)(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9(?:2[2-469]|3[3-578])\",\"9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))\",\"9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 15-$3-$4\",[\"91\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9\"],\"0$1\",0,\"$1 $2 $3-$4\"]],\"0\",0,\"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?\",\"9$1\",0,0,[0,[\"93(?:7(?:1[15]|81)[46]|8(?:(?:21|4[16]|69|9[12])[46]|88[013-9]))\\\\d{5}|9(?:29(?:54|66)|3(?:7(?:55|77)|865))[2-8]\\\\d{5}|9(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|473|9(?:[07]2|2[26]|34|46))|3327)[45]\\\\d{5}|9(?:2(?:284|3(?:02|23)|657|920)|3(?:4(?:8[27]|92)|541|878))[2-7]\\\\d{5}|9(?:2(?:(?:26|62)2|320|477|9(?:42|83))|3(?:329|4(?:[47]6|62|89)|564))[2-6]\\\\d{5}|(?:675\\\\d|9(?:11[1-8]\\\\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-7]|[235][4-6]|84)|5(?:1[2-9]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:0[45]|[17][2-6]|3[4-6]|[58][3-6]))))\\\\d{6}|92(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|475|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\\\d{5}|9(?:2(?:2(?:57|81)|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|71)|5(?:25|37|4[347]|71)|7(?:18|5[17])))[3-6]\\\\d{5}|9(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[03-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[145]|4[13]|5[468]|7[2-5]|8[26])|8(?:2[5-7]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\\\d{5}\"]]],\"AS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|684|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([267]\\\\d{6})$\",\"684$1\",0,\"684\",[0,[\"684(?:2(?:48|5[2468]|72)|7(?:3[13]|70|82))\\\\d{4}\"]]],\"AT\":[\"43\",\"00\",\"1\\\\d{3,12}|2\\\\d{6,12}|43(?:(?:0\\\\d|5[02-9])\\\\d{3,9}|2\\\\d{4,5}|[3467]\\\\d{4}|8\\\\d{4,6}|9\\\\d{4,7})|5\\\\d{4,12}|8\\\\d{7,12}|9\\\\d{8,12}|(?:[367]\\\\d|4[0-24-9])\\\\d{4,11}\",[4,5,6,7,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{3,12})\",\"$1 $2\",[\"1(?:11|[2-9])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})\",\"$1 $2\",[\"517\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"5[079]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,10})\",\"$1 $2\",[\"(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,9})\",\"$1 $2\",[\"[2-467]|5[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,7})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"6(?:5[0-3579]|6[013-9]|[7-9]\\\\d)\\\\d{4,10}\",[7,8,9,10,11,12,13]]]],\"AU\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{7}(?:\\\\d(?:\\\\d{2})?)?|8[0-24-9]\\\\d{7})|[2-478]\\\\d{8}|1\\\\d{4,7}\",[5,6,7,8,9,10,12],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"16\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"16\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"14|4\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[2378]\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:30|[89])\"]]],\"0\",0,\"0|(183[12])\",0,0,0,[0,[\"4(?:83[0-38]|93[0-6])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\",[9]]],\"0011\"],\"AW\":[\"297\",\"00\",\"(?:[25-79]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[25-9]\"]]],0,0,0,0,0,0,[0,[\"(?:290|5[69]\\\\d|6(?:[03]0|22|4[0-2]|[69]\\\\d)|7(?:[34]\\\\d|7[07])|9(?:6[45]|9[4-8]))\\\\d{4}\"]]],\"AX\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"2\\\\d{4,9}|35\\\\d{4,5}|(?:60\\\\d\\\\d|800)\\\\d{4,6}|7\\\\d{5,11}|(?:[14]\\\\d|3[0-46-9]|50)\\\\d{4,8}\",[5,6,7,8,9,10,11,12],0,\"0\",0,0,0,0,\"18\",[0,[\"4946\\\\d{2,6}|(?:4[0-8]|50)\\\\d{4,8}\",[6,7,8,9,10]]],\"00\"],\"AZ\":[\"994\",\"00\",\"365\\\\d{6}|(?:[124579]\\\\d|60|88)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[28]|2|365|46\",\"1[28]|2|365[45]|46\",\"1[28]|2|365(?:4|5[02])|46\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[13-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"36554\\\\d{4}|(?:[16]0|4[04]|5[015]|7[07]|99)\\\\d{7}\"]]],\"BA\":[\"387\",\"00\",\"6\\\\d{8}|(?:[35689]\\\\d|49|70)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[1-3]|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2-$3\",[\"[3-5]|6[56]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"6040\\\\d{5}|6(?:03|[1-356]|44|7\\\\d)\\\\d{6}\"]]],\"BB\":[\"1\",\"011\",\"(?:246|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"246$1\",0,\"246\",[0,[\"246(?:(?:2(?:[3568]\\\\d|4[0-57-9])|3(?:5[2-9]|6[0-6])|4(?:46|5\\\\d)|69[5-7]|8(?:[2-5]\\\\d|83))\\\\d|52(?:1[147]|20))\\\\d{3}\"]]],\"BD\":[\"880\",\"00\",\"[1-469]\\\\d{9}|8[0-79]\\\\d{7,8}|[2-79]\\\\d{8}|[2-9]\\\\d{7}|[3-9]\\\\d{6}|[57-9]\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1-$2\",[\"31[5-8]|[459]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1-$2\",[\"3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:28|4[14]|5)|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,6})\",\"$1-$2\",[\"[13-9]|22\"],\"0$1\"],[\"(\\\\d)(\\\\d{7,8})\",\"$1-$2\",[\"2\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"(?:1[13-9]\\\\d|644)\\\\d{7}|(?:3[78]|44|66)[02-9]\\\\d{7}\",[10]]]],\"BE\":[\"32\",\"00\",\"4\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:80|9)0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[239]|4[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[15-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"4[5-9]\\\\d{7}\",[9]]]],\"BF\":[\"226\",\"00\",\"[025-7]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[025-7]\"]]],0,0,0,0,0,0,[0,[\"(?:0[1-35-7]|5[1-8]|[67]\\\\d)\\\\d{6}\"]]],\"BG\":[\"359\",\"00\",\"[2-7]\\\\d{6,7}|[89]\\\\d{6,8}|2\\\\d{5}\",[6,7,8,9],[[\"(\\\\d)(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"43[1-6]|70[1-9]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:70|8)0\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"43[1-7]|7\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[48]|9[08]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"(?:43[07-9]|99[69]\\\\d)\\\\d{5}|(?:8[7-9]|98)\\\\d{7}\",[8,9]]]],\"BH\":[\"973\",\"00\",\"[136-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[13679]|8[047]\"]]],0,0,0,0,0,0,[0,[\"(?:3(?:[1-79]\\\\d|8[0-47-9])\\\\d|6(?:3(?:00|33|6[16])|6(?:3[03-9]|[69]\\\\d|7[0-6])))\\\\d{4}\"]]],\"BI\":[\"257\",\"00\",\"(?:[267]\\\\d|31)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2367]\"]]],0,0,0,0,0,0,[0,[\"(?:29|6[1257-9]|7[125-9])\\\\d{6}\"]]],\"BJ\":[\"229\",\"00\",\"(?:[25689]\\\\d|40)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-689]\"]]],0,0,0,0,0,0,[0,[\"(?:40|5[1-9]|6\\\\d|9[013-9])\\\\d{6}\"]]],\"BL\":[\"590\",\"00\",\"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\",[9],0,\"0\",0,0,0,0,0,[0,[\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\"]]],\"BM\":[\"1\",\"011\",\"(?:441|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-8]\\\\d{6})$\",\"441$1\",0,\"441\",[0,[\"441(?:[2378]\\\\d|5[0-39])\\\\d{5}\"]]],\"BN\":[\"673\",\"00\",\"[2-578]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-578]\"]]],0,0,0,0,0,0,[0,[\"(?:22[89]|[78]\\\\d\\\\d)\\\\d{4}\"]]],\"BO\":[\"591\",\"00(?:1\\\\d)?\",\"(?:[2-467]\\\\d\\\\d|8001)\\\\d{5}\",[8,9],[[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[23]|4[46]\"]],[\"(\\\\d{8})\",\"$1\",[\"[67]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\",0,\"0(1\\\\d)?\",0,0,0,[0,[\"[67]\\\\d{7}\",[8]]]],\"BQ\":[\"599\",\"00\",\"(?:[34]1|7\\\\d)\\\\d{5}\",[7],0,0,0,0,0,0,\"[347]\",[0,[\"(?:31(?:8[14-8]|9[14578])|416[14-9]|7(?:0[01]|7[07]|8\\\\d|9[056])\\\\d)\\\\d{3}\"]]],\"BR\":[\"55\",\"00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)\",\"(?:[1-46-9]\\\\d\\\\d|5(?:[0-46-9]\\\\d|5[0-46-9]))\\\\d{8}|[1-9]\\\\d{9}|[3589]\\\\d{8}|[34]\\\\d{7}\",[8,9,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"300|4(?:0[02]|37)\",\"4(?:02|37)0|[34]00\"]],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:[358]|90)0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1 $2-$3\",[\"[16][1-9]|[2-57-9]\"],\"($1)\"]],\"0\",0,\"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\\\d{10,11}))?\",\"$2\",0,0,[0,[\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])(?:7|9\\\\d)\\\\d{7}\",[10,11]]]],\"BS\":[\"1\",\"011\",\"(?:242|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([3-8]\\\\d{6})$\",\"242$1\",0,\"242\",[0,[\"242(?:3(?:5[79]|7[56]|95)|4(?:[23][1-9]|4[1-35-9]|5[1-8]|6[2-8]|7\\\\d|81)|5(?:2[45]|3[35]|44|5[1-46-9]|65|77)|6[34]6|7(?:27|38)|8(?:0[1-9]|1[02-9]|2\\\\d|[89]9))\\\\d{4}\"]]],\"BT\":[\"975\",\"00\",\"[17]\\\\d{7}|[2-8]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-68]|7[246]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[67]|7\"]]],0,0,0,0,0,0,[0,[\"(?:1[67]|77)\\\\d{6}\",[8]]]],\"BW\":[\"267\",\"00\",\"(?:0800|(?:[37]|800)\\\\d)\\\\d{6}|(?:[2-6]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[24-6]|3[15-79]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]],0,0,0,0,0,0,[0,[\"(?:321|7(?:[1-7]\\\\d|8[01]))\\\\d{5}\",[8]]]],\"BY\":[\"375\",\"810\",\"(?:[12]\\\\d|33|44|902)\\\\d{7}|8(?:0[0-79]\\\\d{5,7}|[1-7]\\\\d{9})|8(?:1[0-489]|[5-79]\\\\d)\\\\d{7}|8[1-79]\\\\d{6,7}|8[0-79]\\\\d{5}|8\\\\d{5}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"800\"],\"8 $1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,4})\",\"$1 $2 $3\",[\"800\"],\"8 $1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{3})\",\"$1 $2-$3\",[\"1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])\",\"1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"1(?:[56]|7[467])|2[1-3]\"],\"8 0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-4]\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"8 $1\"]],\"8\",0,\"0|80?\",0,0,0,[0,[\"(?:2(?:5[5-79]|9[1-9])|(?:33|44)\\\\d)\\\\d{6}\",[9]]],\"8~10\"],\"BZ\":[\"501\",\"00\",\"(?:0800\\\\d|[2-8])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-8]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"0\"]]],0,0,0,0,0,0,[0,[\"6[0-35-7]\\\\d{5}\",[7]]]],\"CA\":[\"1\",\"011\",\"(?:[2-8]\\\\d|90)\\\\d{8}|3\\\\d{6}\",[7,10],0,\"1\",0,0,0,0,0,[0,[\"(?:2(?:04|[23]6|[48]9|50|63)|3(?:06|43|6[578])|4(?:03|1[68]|3[178]|50|68|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|13|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\\\d{6}\",[10]]]],\"CC\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"0|([59]\\\\d{7})$\",\"8$1\",0,0,[0,[\"4(?:83[0-38]|93[0-6])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\",[9]]],\"0011\"],\"CD\":[\"243\",\"00\",\"[189]\\\\d{8}|[1-68]\\\\d{6}\",[7,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[1-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"88\\\\d{5}|(?:8[0-59]|9[017-9])\\\\d{7}\"]]],\"CF\":[\"236\",\"00\",\"(?:[27]\\\\d{3}|8776)\\\\d{4}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[278]\"]]],0,0,0,0,0,0,[0,[\"7[02457]\\\\d{6}\"]]],\"CG\":[\"242\",\"00\",\"222\\\\d{6}|(?:0\\\\d|80)\\\\d{7}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[02]\"]]],0,0,0,0,0,0,[0,[\"026(?:1[0-5]|6[6-9])\\\\d{4}|0(?:[14-6]\\\\d\\\\d|2(?:40|5[5-8]|6[07-9]))\\\\d{5}\"]]],\"CH\":[\"41\",\"00\",\"8\\\\d{11}|[2-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8[047]|90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]|81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"7[35-9]\\\\d{7}\"]]],\"CI\":[\"225\",\"00\",\"[02]\\\\d{9}\",[10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d)(\\\\d{5})\",\"$1 $2 $3 $4\",[\"2\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"0\"]]],0,0,0,0,0,0,[0,[\"0704[0-7]\\\\d{5}|0(?:[15]\\\\d\\\\d|7(?:0[0-37-9]|[4-9][7-9]))\\\\d{6}\"]]],\"CK\":[\"682\",\"00\",\"[2-578]\\\\d{4}\",[5],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"[2-578]\"]]],0,0,0,0,0,0,[0,[\"[578]\\\\d{4}\"]]],\"CL\":[\"56\",\"(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0\",\"12300\\\\d{6}|6\\\\d{9,10}|[2-9]\\\\d{8}\",[9,10,11],[[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"219\",\"2196\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[1-36]\"],\"($1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9[2-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"60|8\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"60\"]]],0,0,0,0,0,0,[0,[\"2(?:1982[0-6]|3314[05-9])\\\\d{3}|(?:2(?:1(?:160|962)|3(?:2\\\\d\\\\d|3(?:[0346]\\\\d|1[0-35-9]|2[1-9]|5[0-24-9]|7[0-3])|600)|646[59])|80[1-9]\\\\d\\\\d|9(?:3(?:[0-57-9]\\\\d\\\\d|6(?:0[02-9]|[1-9]\\\\d))|6(?:[0-8]\\\\d\\\\d|9(?:[02-79]\\\\d|1[05-9]))|7[1-9]\\\\d\\\\d|9(?:[03-9]\\\\d\\\\d|1(?:[0235-9]\\\\d|4[0-24-9])|2(?:[0-79]\\\\d|8[0-46-9]))))\\\\d{4}|(?:22|3[2-5]|[47][1-35]|5[1-3578]|6[13-57]|8[1-9]|9[2458])\\\\d{7}\",[9]]]],\"CM\":[\"237\",\"00\",\"[26]\\\\d{8}|88\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"88\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[26]|88\"]]],0,0,0,0,0,0,[0,[\"(?:24[23]|6[25-9]\\\\d)\\\\d{6}\",[9]]]],\"CN\":[\"86\",\"00|1(?:[12]\\\\d|79)\\\\d\\\\d00\",\"1[127]\\\\d{8,9}|2\\\\d{9}(?:\\\\d{2})?|[12]\\\\d{6,7}|86\\\\d{6}|(?:1[03-689]\\\\d|6)\\\\d{7,9}|(?:[3-579]\\\\d|8[0-57-9])\\\\d{6,9}\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5,6})\",\"$1 $2\",[\"(?:10|2[0-57-9])[19]\",\"(?:10|2[0-57-9])(?:10|9[56])\",\"(?:10|2[0-57-9])(?:100|9[56])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]\",\"(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))[19]\",\"85[23](?:10|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:10|9[56])\",\"85[23](?:100|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100|9[56])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:4|80)0\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|2(?:[02-57-9]|1[1-9])\",\"10|2(?:[02-57-9]|1[1-9])\",\"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-578]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"1[3-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"[12]\"],\"0$1\",1]],\"0\",0,\"0|(1(?:[12]\\\\d|79)\\\\d\\\\d)\",0,0,0,[0,[\"1740[0-5]\\\\d{6}|1(?:[38]\\\\d|4[57]|[59][0-35-9]|6[25-7]|7[0-35-8])\\\\d{8}\",[11]]],\"00\"],\"CO\":[\"57\",\"00(?:4(?:[14]4|56)|[579])\",\"(?:60\\\\d\\\\d|9101)\\\\d{6}|(?:1\\\\d|3)\\\\d{9}\",[10,11],[[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"6\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3[0-357]|91\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{7})\",\"$1-$2-$3\",[\"1\"],\"0$1\",0,\"$1 $2 $3\"]],\"0\",0,\"0(4(?:[14]4|56)|[579])?\",0,0,0,[0,[\"3333(?:0(?:0\\\\d|1[0-5])|[4-9]\\\\d\\\\d)\\\\d{3}|(?:3(?:24[1-9]|3(?:00|3[0-24-9]))|9101)\\\\d{6}|3(?:0[0-5]|1\\\\d|2[0-3]|5[01]|70)\\\\d{7}\",[10]]]],\"CR\":[\"506\",\"00\",\"(?:8\\\\d|90)\\\\d{8}|(?:[24-8]\\\\d{3}|3005)\\\\d{4}\",[8,10],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[3-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[89]\"]]],0,0,\"(19(?:0[0-2468]|1[09]|20|66|77|99))\",0,0,0,[0,[\"(?:3005\\\\d|6500[01])\\\\d{3}|(?:5[07]|6[0-4]|7[0-3]|8[3-9])\\\\d{6}\",[8]]]],\"CU\":[\"53\",\"119\",\"[27]\\\\d{6,7}|[34]\\\\d{5,7}|(?:5|8\\\\d\\\\d)\\\\d{7}\",[6,7,8,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"2[1-4]|[34]\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{6,7})\",\"$1 $2\",[\"7\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"5\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"5\\\\d{7}\",[8]]]],\"CV\":[\"238\",\"0\",\"(?:[2-59]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2-589]\"]]],0,0,0,0,0,0,[0,[\"(?:36|5[1-389]|9\\\\d)\\\\d{5}\"]]],\"CW\":[\"599\",\"00\",\"(?:[34]1|60|(?:7|9\\\\d)\\\\d)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[3467]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9[4-8]\"]]],0,0,0,0,0,\"[69]\",[0,[\"953[01]\\\\d{4}|9(?:5[12467]|6[5-9])\\\\d{5}\"]]],\"CX\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"0|([59]\\\\d{7})$\",\"8$1\",0,0,[0,[\"4(?:83[0-38]|93[0-6])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\",[9]]],\"0011\"],\"CY\":[\"357\",\"00\",\"(?:[279]\\\\d|[58]0)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[257-9]\"]]],0,0,0,0,0,0,[0,[\"9[4-79]\\\\d{6}\"]]],\"CZ\":[\"420\",\"00\",\"(?:[2-578]\\\\d|60)\\\\d{7}|9\\\\d{8,11}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]|9[015-7]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"96\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]],0,0,0,0,0,0,[0,[\"(?:60[1-8]|7(?:0[2-5]|[2379]\\\\d))\\\\d{6}\"]]],\"DE\":[\"49\",\"00\",\"[2579]\\\\d{5,14}|49(?:[34]0|69|8\\\\d)\\\\d\\\\d?|49(?:37|49|60|7[089]|9\\\\d)\\\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\\\d{1,8}|(?:1|[368]\\\\d|4[0-8])\\\\d{3,13}|49(?:[015]\\\\d|2[13]|31|[46][1-8])\\\\d{1,9}\",[4,5,6,7,8,9,10,11,12,13,14,15],[[\"(\\\\d{2})(\\\\d{3,13})\",\"$1 $2\",[\"3[02]|40|[68]9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,12})\",\"$1 $2\",[\"2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\",\"2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2,11})\",\"$1 $2\",[\"[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]\",\"[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"138\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{2,10})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,11})\",\"$1 $2\",[\"181\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{4,10})\",\"$1 $2 $3\",[\"1(?:3|80)|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"1[67]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,12})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"185\",\"1850\",\"18500\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"18[68]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"15[0568]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"15[1279]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{8})\",\"$1 $2\",[\"18\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{7,8})\",\"$1 $2 $3\",[\"1(?:6[023]|7)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{7})\",\"$1 $2 $3\",[\"15[279]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{8})\",\"$1 $2 $3\",[\"15\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"15[0-25-9]\\\\d{8}|1(?:6[023]|7\\\\d)\\\\d{7,8}\",[10,11]]]],\"DJ\":[\"253\",\"00\",\"(?:2\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[27]\"]]],0,0,0,0,0,0,[0,[\"77\\\\d{6}\"]]],\"DK\":[\"45\",\"00\",\"[2-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-9]\"]]],0,0,0,0,0,0,[0,[\"(?:[2-7]\\\\d|8[126-9]|9[1-46-9])\\\\d{6}\"]]],\"DM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|767|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-7]\\\\d{6})$\",\"767$1\",0,\"767\",[0,[\"767(?:2(?:[2-4689]5|7[5-7])|31[5-7]|61[1-8]|70[1-6])\\\\d{4}\"]]],\"DO\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"8001|8[024]9\",[0,[\"8[024]9[2-9]\\\\d{6}\"]]],\"DZ\":[\"213\",\"00\",\"(?:[1-4]|[5-79]\\\\d|80)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-8]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"(?:5(?:4[0-29]|5\\\\d|6[0-2])|6(?:[569]\\\\d|7[0-6])|7[7-9]\\\\d)\\\\d{6}\",[9]]]],\"EC\":[\"593\",\"00\",\"1\\\\d{9,10}|(?:[2-7]|9\\\\d)\\\\d{7}\",[8,9,10,11],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[2-7]\"],\"(0$1)\",0,\"$1-$2-$3\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1\"]]],\"0\",0,0,0,0,0,[0,[\"964[0-2]\\\\d{5}|9(?:39|[57][89]|6[0-36-9]|[89]\\\\d)\\\\d{6}\",[9]]]],\"EE\":[\"372\",\"00\",\"8\\\\d{9}|[4578]\\\\d{7}|(?:[3-8]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88\",\"[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88\"]],[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[45]|8(?:00|[1-49])\",\"[45]|8(?:00[1-9]|[1-49])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]],0,0,0,0,0,0,[0,[\"(?:5\\\\d{5}|8(?:1(?:0(?:000|[3-9]\\\\d\\\\d)|(?:1(?:0[236]|1\\\\d)|(?:23|[3-79]\\\\d)\\\\d)\\\\d)|2(?:0(?:000|(?:19|[2-7]\\\\d)\\\\d)|(?:(?:[124-6]\\\\d|3[5-9])\\\\d|7(?:[3679]\\\\d|8[13-9])|8(?:[2-6]\\\\d|7[01]))\\\\d)|[349]\\\\d{4}))\\\\d\\\\d|5(?:(?:[02]\\\\d|5[0-478])\\\\d|1(?:[0-8]\\\\d|95)|6(?:4[0-4]|5[1-589]))\\\\d{3}\",[7,8]]]],\"EG\":[\"20\",\"00\",\"[189]\\\\d{8,9}|[24-6]\\\\d{8}|[135]\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{7,8})\",\"$1 $2\",[\"[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,7})\",\"$1 $2\",[\"1[35]|[4-6]|8[2468]|9[235-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[189]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"1[0-25]\\\\d{8}\",[10]]]],\"EH\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],0,\"0\",0,0,0,0,\"528[89]\",[0,[\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:[017]\\\\d|2[0-2]|6[0-8]|8[0-3]))\\\\d{6}\"]]],\"ER\":[\"291\",\"00\",\"[178]\\\\d{6}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[178]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"(?:17[1-3]|7\\\\d\\\\d)\\\\d{4}\"]]],\"ES\":[\"34\",\"00\",\"[5-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]00\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-9]\"]]],0,0,0,0,0,0,[0,[\"(?:590[16]00\\\\d|9(?:6906(?:09|10)|7390\\\\d\\\\d))\\\\d\\\\d|(?:6\\\\d|7[1-48])\\\\d{7}\"]]],\"ET\":[\"251\",\"00\",\"(?:11|[2-579]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-579]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"7001\\\\d{5}|(?:7(?:0[1-9]|1[01]|77|86|99)|9\\\\d\\\\d)\\\\d{6}\"]]],\"FI\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"[1-35689]\\\\d{4}|7\\\\d{10,11}|(?:[124-7]\\\\d|3[0-46-9])\\\\d{8}|[1-9]\\\\d{5,8}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d)(\\\\d{4,9})\",\"$1 $2\",[\"[2568][1-8]|3(?:0[1-9]|[1-9])|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[12]00|[368]|70[07-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,8})\",\"$1 $2\",[\"[1245]|7[135]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,10})\",\"$1 $2\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,\"1[03-79]|[2-9]\",[0,[\"4946\\\\d{2,6}|(?:4[0-8]|50)\\\\d{4,8}\",[6,7,8,9,10]]],\"00\"],\"FJ\":[\"679\",\"0(?:0|52)\",\"45\\\\d{5}|(?:0800\\\\d|[235-9])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[235-9]|45\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]]],0,0,0,0,0,0,[0,[\"(?:[279]\\\\d|45|5[01568]|8[034679])\\\\d{5}\",[7]]],\"00\"],\"FK\":[\"500\",\"00\",\"[2-7]\\\\d{4}\",[5],0,0,0,0,0,0,0,[0,[\"[56]\\\\d{4}\"]]],\"FM\":[\"691\",\"00\",\"(?:[39]\\\\d\\\\d|820)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[389]\"]]],0,0,0,0,0,0,[0,[\"31(?:00[67]|208|309)\\\\d\\\\d|(?:3(?:[2357]0[1-9]|602|804|905)|(?:820|9[2-7]\\\\d)\\\\d)\\\\d{3}\"]]],\"FO\":[\"298\",\"00\",\"[2-9]\\\\d{5}\",[6],[[\"(\\\\d{6})\",\"$1\",[\"[2-9]\"]]],0,0,\"(10(?:01|[12]0|88))\",0,0,0,[0,[\"(?:[27][1-9]|5\\\\d|9[16])\\\\d{4}\"]]],\"FR\":[\"33\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0 $1\"],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[1-79]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"(?:6(?:[0-24-8]\\\\d|3[0-8]|9[589])|7(?:00|[3-9]\\\\d))\\\\d{6}\"]]],\"GA\":[\"241\",\"00\",\"(?:[067]\\\\d|11)\\\\d{6}|[2-7]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"11|[67]\"],\"0$1\"]],0,0,\"0(11\\\\d{6}|60\\\\d{6}|61\\\\d{6}|6[256]\\\\d{6}|7[467]\\\\d{6})\",\"$1\",0,0,[0,[\"(?:(?:0[2-7]|7[467])\\\\d|6(?:0[0-4]|10|[256]\\\\d))\\\\d{5}|[2-7]\\\\d{6}\"]]],\"GB\":[\"44\",\"00\",\"[1-357-9]\\\\d{9}|[18]\\\\d{8}|8\\\\d{6}\",[7,9,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"800\",\"8001\",\"80011\",\"800111\",\"8001111\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"845\",\"8454\",\"84546\",\"845464\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"1(?:38|5[23]|69|76|94)\",\"1(?:(?:38|69)7|5(?:24|39)|768|946)\",\"1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"1(?:[2-69][02-9]|[78])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[25]|7(?:0|6[02-9])\",\"[25]|7(?:0|6(?:[03-9]|2[356]))\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1389]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"7(?:457[0-57-9]|700[01]|911[028])\\\\d{5}|7(?:[1-3]\\\\d\\\\d|4(?:[0-46-9]\\\\d|5[0-689])|5(?:0[0-8]|[13-9]\\\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\\\d|8[02-9]|9[0-689])|8(?:[014-9]\\\\d|[23][0-8])|9(?:[024-9]\\\\d|1[02-9]|3[0-689]))\\\\d{6}\",[10]]],0,\" x\"],\"GD\":[\"1\",\"011\",\"(?:473|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"473$1\",0,\"473\",[0,[\"473(?:4(?:0[2-79]|1[04-9]|2[0-5]|58)|5(?:2[01]|3[3-8])|901)\\\\d{4}\"]]],\"GE\":[\"995\",\"00\",\"(?:[3-57]\\\\d\\\\d|800)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"32\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[57]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[348]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"5(?:(?:0555|1(?:[17]77|555))[5-9]|757(?:7[7-9]|8[01]))\\\\d{3}|5(?:0070|11(?:33|51)|[25]222|3333)[0-4]\\\\d{3}|5(?:00(?:0\\\\d|5[05])|11(?:00|[124]\\\\d|3[01])|5200|75(?:00|[57]5)|8(?:0(?:[01]\\\\d|2[0-4])|58[89]|8(?:55|88)))\\\\d{4}|(?:5(?:[14]4|5[0157-9]|68|7[0147-9]|9[1-35-9])|790)\\\\d{6}\"]]],\"GF\":[\"594\",\"00\",\"(?:[56]94|80\\\\d|976)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"694(?:[0-249]\\\\d|3[0-8])\\\\d{4}\"]]],\"GG\":[\"44\",\"00\",\"(?:1481|[357-9]\\\\d{3})\\\\d{6}|8\\\\d{6}(?:\\\\d{2})?\",[7,9,10],0,\"0\",0,\"0|([25-9]\\\\d{5})$\",\"1481$1\",0,0,[0,[\"7(?:(?:781|839)\\\\d|911[17])\\\\d{5}\",[10]]]],\"GH\":[\"233\",\"00\",\"(?:[235]\\\\d{3}|800)\\\\d{5}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[235]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"(?:2(?:[0346-9]\\\\d|5[67])|5(?:[0457]\\\\d|6[01]|9[1-9]))\\\\d{6}\",[9]]]],\"GI\":[\"350\",\"00\",\"(?:[25]\\\\d\\\\d|606)\\\\d{5}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2\"]]],0,0,0,0,0,0,[0,[\"(?:5[146-8]\\\\d|606)\\\\d{5}\"]]],\"GL\":[\"299\",\"00\",\"(?:19|[2-689]\\\\d|70)\\\\d{4}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"19|[2-9]\"]]],0,0,0,0,0,0,[0,[\"[245]\\\\d{5}\"]]],\"GM\":[\"220\",\"00\",\"[2-9]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]],0,0,0,0,0,0,[0,[\"(?:[23679]\\\\d|5[0-389])\\\\d{5}\"]]],\"GN\":[\"224\",\"00\",\"722\\\\d{6}|(?:3|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"3\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[67]\"]]],0,0,0,0,0,0,[0,[\"6[0-356]\\\\d{7}\",[9]]]],\"GP\":[\"590\",\"00\",\"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\"]]],\"GQ\":[\"240\",\"00\",\"222\\\\d{6}|(?:3\\\\d|55|[89]0)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235]\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[89]\"]]],0,0,0,0,0,0,[0,[\"(?:222|55\\\\d)\\\\d{6}\"]]],\"GR\":[\"30\",\"00\",\"5005000\\\\d{3}|8\\\\d{9,11}|(?:[269]\\\\d|70)\\\\d{8}\",[10,11,12],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"21|7\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2689]\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{5})\",\"$1 $2 $3\",[\"8\"]]],0,0,0,0,0,0,[0,[\"68[57-9]\\\\d{7}|(?:69|94)\\\\d{8}\",[10]]]],\"GT\":[\"502\",\"00\",\"(?:1\\\\d{3}|[2-7])\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]],0,0,0,0,0,0,[0,[\"[3-5]\\\\d{7}\",[8]]]],\"GU\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|671|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([3-9]\\\\d{6})$\",\"671$1\",0,\"671\",[0,[\"671(?:3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[0236-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[0479]7|2[0167]|3[45]|8[7-9])|8(?:[2-57-9]8|6[48])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[78]))\\\\d{4}\"]]],\"GW\":[\"245\",\"00\",\"[49]\\\\d{8}|4\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"40\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"]]],0,0,0,0,0,0,[0,[\"9(?:5\\\\d|6[569]|77)\\\\d{6}\",[9]]]],\"GY\":[\"592\",\"001\",\"9008\\\\d{3}|(?:[2-467]\\\\d\\\\d|862)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46-9]\"]]],0,0,0,0,0,0,[0,[\"(?:6\\\\d\\\\d|70[015-7])\\\\d{4}\"]]],\"HK\":[\"852\",\"00(?:30|5[09]|[126-9]?)\",\"8[0-46-9]\\\\d{6,7}|9\\\\d{4,7}|(?:[2-7]|9\\\\d{3})\\\\d{7}\",[5,6,7,8,9,11],[[\"(\\\\d{3})(\\\\d{2,5})\",\"$1 $2\",[\"900\",\"9003\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[1-4]|9(?:0[1-9]|[1-8])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]],0,0,0,0,0,0,[0,[\"(?:4(?:44[5-9]|6(?:0[0-7]|1[0-6]|4[0-57-9]|6[0-4]|7[0-8]))|573[0-6]|6(?:26[013-8]|66[0-3])|70(?:7[1-5]|8[0-4])|848[015-9]|9(?:29[013-9]|59[0-4]))\\\\d{4}|(?:4(?:4[01]|6[2358])|5(?:[1-59][0-46-9]|6[0-4689]|7[0-246-9])|6(?:0[1-9]|[13-59]\\\\d|[268][0-57-9]|7[0-79])|84[09]|9(?:0[1-9]|1[02-9]|[2358][0-8]|[467]\\\\d))\\\\d{5}\",[8]]],\"00\"],\"HN\":[\"504\",\"00\",\"8\\\\d{10}|[237-9]\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[237-9]\"]]],0,0,0,0,0,0,[0,[\"[37-9]\\\\d{7}\",[8]]]],\"HR\":[\"385\",\"00\",\"(?:[24-69]\\\\d|3[0-79])\\\\d{7}|80\\\\d{5,7}|[1-79]\\\\d{7}|6\\\\d{5,6}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"6[01]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-5]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"98\\\\d{6,7}|975(?:1\\\\d|77|9[67])\\\\d{4}|9(?:0[1-9]|[1259]\\\\d|7[0679])\\\\d{6}\",[8,9]]]],\"HT\":[\"509\",\"00\",\"[2-489]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-489]\"]]],0,0,0,0,0,0,[0,[\"[34]\\\\d{7}\"]]],\"HU\":[\"36\",\"00\",\"[235-7]\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"06 $1\"]],\"06\",0,0,0,0,0,[0,[\"(?:[257]0|3[01])\\\\d{7}\",[9]]]],\"ID\":[\"62\",\"00[89]\",\"(?:(?:00[1-9]|8\\\\d)\\\\d{4}|[1-36])\\\\d{6}|00\\\\d{10}|[1-9]\\\\d{8,10}|[2-9]\\\\d{7}\",[7,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"15\"]],[\"(\\\\d{2})(\\\\d{5,9})\",\"$1 $2\",[\"2[124]|[36]1\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,7})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,8})\",\"$1 $2\",[\"[2-79]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{3})\",\"$1-$2-$3\",[\"8[1-35-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6,8})\",\"$1 $2\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"804\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"80\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"8[1-35-9]\\\\d{7,10}\",[9,10,11,12]]]],\"IE\":[\"353\",\"00\",\"(?:1\\\\d|[2569])\\\\d{6,8}|4\\\\d{6,9}|7\\\\d{8}|8\\\\d{8,9}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"2[24-9]|47|58|6[237-9]|9[35-9]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[45]0\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2569]|4[1-69]|7[14]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"81\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"4\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"8(?:22|[35-9]\\\\d)\\\\d{6}\",[9]]]],\"IL\":[\"972\",\"0(?:0|1[2-9])\",\"1\\\\d{6}(?:\\\\d{3,5})?|[57]\\\\d{8}|[1-489]\\\\d{7}\",[7,8,9,10,11,12],[[\"(\\\\d{4})(\\\\d{3})\",\"$1-$2\",[\"125\"]],[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"121\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-489]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"12\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1-$2\",[\"159\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"1[7-9]\"]],[\"(\\\\d{3})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3-$4\",[\"15\"]]],\"0\",0,0,0,0,0,[0,[\"5(?:(?:[02368]\\\\d|[19][2-9]|4[1-9])\\\\d|5(?:01|1[79]|2[2-9]|3[0-3]|4[34]|5[015689]|6[6-8]|7[0-267]|8[7-9]|9[1-9]))\\\\d{5}\",[9]]]],\"IM\":[\"44\",\"00\",\"1624\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"0|([25-8]\\\\d{5})$\",\"1624$1\",0,\"74576|(?:16|7[56])24\",[0,[\"76245[06]\\\\d{4}|7(?:4576|[59]24\\\\d|624[0-4689])\\\\d{5}\"]]],\"IN\":[\"91\",\"00\",\"(?:000800|[2-9]\\\\d\\\\d)\\\\d{7}|1\\\\d{7,12}\",[8,9,10,11,12,13],[[\"(\\\\d{8})\",\"$1\",[\"5(?:0|2[23]|3[03]|[67]1|88)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)\"],0,1],[\"(\\\\d{4})(\\\\d{4,5})\",\"$1 $2\",[\"180\",\"1800\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"140\"],0,1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"11|2[02]|33|4[04]|79[1-7]|80[2-46]\",\"11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])\",\"11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807\",\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]\",\"1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\\\d|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]))[2-7]\"],\"0$1\",1],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"[6-9]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{2,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:6|8[06])\",\"1(?:6|8[06]0)\"],0,1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"18\"],0,1]],\"0\",0,0,0,0,0,[0,[\"(?:61279|7(?:887[02-9]|9(?:313|79[07-9]))|8(?:079[04-9]|(?:84|91)7[02-8]))\\\\d{5}|(?:6(?:12|[2-47]1|5[17]|6[13]|80)[0189]|7(?:1(?:2[0189]|9[0-5])|2(?:[14][017-9]|8[0-59])|3(?:2[5-8]|[34][017-9]|9[016-9])|4(?:1[015-9]|[29][89]|39|8[389])|5(?:[15][017-9]|2[04-9]|9[7-9])|6(?:0[0-47]|1[0-257-9]|2[0-4]|3[19]|5[4589])|70[0289]|88[089]|97[02-8])|8(?:0(?:6[67]|7[02-8])|70[017-9]|84[01489]|91[0-289]))\\\\d{6}|(?:7(?:31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[0189]\\\\d|7[02-8])\\\\d{5}|(?:6(?:[09]\\\\d|1[04679]|2[03689]|3[05-9]|4[0489]|50|6[069]|7[07]|8[7-9])|7(?:0\\\\d|2[0235-79]|3[05-8]|40|5[0346-8]|6[6-9]|7[1-9]|8[0-79]|9[089])|8(?:0[01589]|1[0-57-9]|2[235-9]|3[03-57-9]|[45]\\\\d|6[02457-9]|7[1-69]|8[0-25-9]|9[02-9])|9\\\\d\\\\d)\\\\d{7}|(?:6(?:(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|8[124-6])\\\\d|7(?:[235689]\\\\d|4[0189]))|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-5])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]|881))[0189]\\\\d{5}\",[10]]]],\"IO\":[\"246\",\"00\",\"3\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"3\"]]],0,0,0,0,0,0,[0,[\"38\\\\d{5}\"]]],\"IQ\":[\"964\",\"00\",\"(?:1|7\\\\d\\\\d)\\\\d{7}|[2-6]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"7[3-9]\\\\d{8}\",[10]]]],\"IR\":[\"98\",\"00\",\"[1-9]\\\\d{9}|(?:[1-8]\\\\d\\\\d|9)\\\\d{3,4}\",[4,5,6,7,10],[[\"(\\\\d{4,5})\",\"$1\",[\"96\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,5})\",\"$1 $2\",[\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-8]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"9(?:(?:0(?:[0-35]\\\\d|4[4-6])|(?:[13]\\\\d|2[0-3])\\\\d)\\\\d|9(?:[0-46]\\\\d\\\\d|5[15]0|8(?:1\\\\d|88)|9(?:0[0-3]|[19]\\\\d|21|77|8[7-9])))\\\\d{5}\",[10]]]],\"IS\":[\"354\",\"00|1(?:0(?:01|[12]0)|100)\",\"(?:38\\\\d|[4-9])\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,[0,[\"(?:38[589]\\\\d\\\\d|6(?:1[1-8]|2[0-6]|3[026-9]|4[014679]|5[0159]|6[0-69]|70|8[06-8]|9\\\\d)|7(?:5[057]|[6-9]\\\\d)|8(?:2[0-59]|[3-69]\\\\d|8[238]))\\\\d{4}\"]],\"00\"],\"IT\":[\"39\",\"00\",\"0\\\\d{5,10}|1\\\\d{8,10}|3(?:[0-8]\\\\d{7,10}|9\\\\d{7,8})|(?:55|70)\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?\",[6,7,8,9,10,11],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"0[26]\"]],[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"0[13-57-9][0159]|8(?:03|4[17]|9[2-5])\",\"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))\"]],[\"(\\\\d{4})(\\\\d{2,6})\",\"$1 $2\",[\"0(?:[13-579][2-46-8]|8[236-8])\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"894\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[26]|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1(?:44|[679])|[378]\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[13-57-9][0159]|14\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{5})\",\"$1 $2 $3\",[\"0[26]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,[0,[\"3[1-9]\\\\d{8}|3[2-9]\\\\d{7}\",[9,10]]]],\"JE\":[\"44\",\"00\",\"1534\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"0|([0-24-8]\\\\d{5})$\",\"1534$1\",0,0,[0,[\"7(?:(?:(?:50|82)9|937)\\\\d|7(?:00[378]|97[7-9]))\\\\d{5}\"]]],\"JM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|658|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"658|876\",[0,[\"(?:658295|876(?:2(?:0[1-9]|[13-9]\\\\d|2[013-9])|[348]\\\\d\\\\d|5(?:0[1-9]|[1-9]\\\\d)|6(?:4[89]|6[67])|7(?:0[07]|7\\\\d|8[1-47-9]|9[0-36-9])|9(?:[01]9|9[0579])))\\\\d{4}\"]]],\"JO\":[\"962\",\"00\",\"(?:(?:[2689]|7\\\\d)\\\\d|32|53)\\\\d{6}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2356]|87\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"70\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"7(?:[78][0-25-9]|9\\\\d)\\\\d{6}\",[9]]]],\"JP\":[\"81\",\"010\",\"00[1-9]\\\\d{6,14}|[257-9]\\\\d{9}|(?:00|[1-9]\\\\d\\\\d)\\\\d{6}\",[8,9,10,11,12,13,14,15,16,17],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"(?:12|57|99)0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:80|9[16])\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[36]|4(?:2[09]|7[01])\",\"[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"[14]|[289][2-9]|5[3-9]|7[2-4679]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"800\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[257-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"[7-9]0[1-9]\\\\d{7}\",[10]]]],\"KE\":[\"254\",\"000\",\"(?:[17]\\\\d\\\\d|900)\\\\d{6}|(?:2|80)0\\\\d{6,7}|[4-6]\\\\d{6,8}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"[24-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[17]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"(?:1(?:0[0-6]|1[0-5]|2[014]|30)|7\\\\d\\\\d)\\\\d{6}\",[9]]]],\"KG\":[\"996\",\"00\",\"8\\\\d{9}|(?:[235-8]\\\\d|99)\\\\d{7}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3(?:1[346]|[24-79])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235-79]|88\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d)(\\\\d{2,3})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"312(?:58\\\\d|973)\\\\d{3}|(?:2(?:0[0-35]|2\\\\d)|5[0-24-7]\\\\d|7(?:[07]\\\\d|55)|88[08]|99[05-9])\\\\d{6}\",[9]]]],\"KH\":[\"855\",\"00[14-9]\",\"1\\\\d{9}|[1-9]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\",0,0,0,0,0,[0,[\"(?:(?:1[28]|3[18]|9[67])\\\\d|6[016-9]|7(?:[07-9]|[16]\\\\d)|8(?:[013-79]|8\\\\d))\\\\d{6}|(?:1\\\\d|9[0-57-9])\\\\d{6}|(?:2[3-6]|3[2-6]|4[2-4]|[5-7][2-5])48\\\\d{5}\",[8,9]]]],\"KI\":[\"686\",\"00\",\"(?:[37]\\\\d|6[0-79])\\\\d{6}|(?:[2-48]\\\\d|50)\\\\d{3}\",[5,8],0,\"0\",0,0,0,0,0,[0,[\"(?:63\\\\d{3}|73(?:0[0-5]\\\\d|140))\\\\d{3}|[67]200[01]\\\\d{3}\",[8]]]],\"KM\":[\"269\",\"00\",\"[3478]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[3478]\"]]],0,0,0,0,0,0,[0,[\"[34]\\\\d{6}\"]]],\"KN\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-7]\\\\d{6})$\",\"869$1\",0,\"869\",[0,[\"869(?:48[89]|55[6-8]|66\\\\d|76[02-7])\\\\d{4}\"]]],\"KP\":[\"850\",\"00|99\",\"85\\\\d{6}|(?:19\\\\d|[2-7])\\\\d{7}\",[8,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"19[1-3]\\\\d{7}\",[10]]]],\"KR\":[\"82\",\"00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))\",\"00[1-9]\\\\d{8,11}|(?:[12]|5\\\\d{3})\\\\d{7}|[13-6]\\\\d{9}|(?:[1-6]\\\\d|80)\\\\d{7}|[3-6]\\\\d{4,5}|(?:00|7)0\\\\d{8}\",[5,6,8,9,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1-$2\",[\"(?:3[1-3]|[46][1-4]|5[1-5])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"1\"]],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"[1346]|5[1-5]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1-$2-$3\",[\"5\"],\"0$1\"]],\"0\",0,\"0(8(?:[1-46-8]|5\\\\d\\\\d))?\",0,0,0,[0,[\"1(?:05(?:[0-8]\\\\d|9[0-6])|22[13]\\\\d)\\\\d{4,5}|1(?:0[1-46-9]|[16-9]\\\\d|2[013-9])\\\\d{6,7}\",[9,10]]]],\"KW\":[\"965\",\"00\",\"18\\\\d{5}|(?:[2569]\\\\d|41)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[169]|2(?:[235]|4[1-35-9])|52\"]],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[245]\"]]],0,0,0,0,0,0,[0,[\"(?:41\\\\d\\\\d|5(?:(?:[05]\\\\d|1[0-7]|6[56])\\\\d|2(?:22|5[25])|7(?:55|77)|88[58])|6(?:(?:0[034679]|5[015-9]|6\\\\d)\\\\d|1(?:00|11|66)|222|3[36]3|444|7(?:0[013-9]|[67]\\\\d)|888|9(?:[069]\\\\d|3[039]))|9(?:(?:0[09]|22|[4679]\\\\d|8[057-9])\\\\d|1(?:1[01]|99)|3(?:00|33)|5(?:00|5\\\\d)))\\\\d{4}\",[8]]]],\"KY\":[\"1\",\"011\",\"(?:345|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"345$1\",0,\"345\",[0,[\"345(?:32[1-9]|42[0-4]|5(?:1[67]|2[5-79]|4[6-9]|50|76)|649|82[56]|9(?:1[679]|2[2-9]|3[06-9]|90))\\\\d{4}\"]]],\"KZ\":[\"7\",\"810\",\"(?:33622|8\\\\d{8})\\\\d{5}|[78]\\\\d{9}\",[10,14],0,\"8\",0,0,0,0,\"33|7\",[0,[\"7(?:0[0-25-8]|47|6[0-4]|7[15-8]|85)\\\\d{7}\",[10]]],\"8~10\"],\"LA\":[\"856\",\"00\",\"[23]\\\\d{9}|3\\\\d{8}|(?:[235-8]\\\\d|41)\\\\d{6}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2[13]|3[14]|[4-8]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"30[013-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"(?:20(?:[239]\\\\d|5[24-9]|7[6-8]|88)|302\\\\d)\\\\d{6}\",[10]]]],\"LB\":[\"961\",\"00\",\"[27-9]\\\\d{7}|[13-9]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27-9]\"]]],\"0\",0,0,0,0,0,[0,[\"793(?:[01]\\\\d|2[0-4])\\\\d{3}|(?:(?:3|81)\\\\d|7(?:[01]\\\\d|6[013-9]|8[89]|9[12]))\\\\d{5}\"]]],\"LC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|758|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-8]\\\\d{6})$\",\"758$1\",0,\"758\",[0,[\"758(?:28[4-7]|384|4(?:6[01]|8[4-9])|5(?:1[89]|20|84)|7(?:1[2-9]|2\\\\d|3[0-3])|812)\\\\d{4}\"]]],\"LI\":[\"423\",\"00\",\"[68]\\\\d{8}|(?:[2378]\\\\d|90)\\\\d{5}\",[7,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2379]|8(?:0[09]|7)\",\"[2379]|8(?:0(?:02|9)|7)\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"69\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]],\"0\",0,\"0|(1001)\",0,0,0,[0,[\"(?:6(?:(?:4[5-9]|5[0-4])\\\\d|6(?:[0245]\\\\d|[17]0|3[7-9]))\\\\d|7(?:[37-9]\\\\d|42|56))\\\\d{4}\"]]],\"LK\":[\"94\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[1-689]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"7(?:[0-25-8]\\\\d|4[0-4])\\\\d{6}\"]]],\"LR\":[\"231\",\"00\",\"(?:2|33|5\\\\d|77|88)\\\\d{7}|[4-6]\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[4-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3578]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"(?:(?:330|555|(?:77|88)\\\\d)\\\\d|4[67])\\\\d{5}|[56]\\\\d{6}\",[7,9]]]],\"LS\":[\"266\",\"00\",\"(?:[256]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2568]\"]]],0,0,0,0,0,0,[0,[\"[56]\\\\d{7}\"]]],\"LT\":[\"370\",\"00\",\"(?:[3469]\\\\d|52|[78]0)\\\\d{6}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"52[0-7]\"],\"(8-$1)\",1],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"8 $1\",1],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"37|4(?:[15]|6[1-8])\"],\"(8-$1)\",1],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[3-6]\"],\"(8-$1)\",1]],\"8\",0,\"[08]\",0,0,0,[0,[\"6\\\\d{7}\"]]],\"LU\":[\"352\",\"00\",\"35[013-9]\\\\d{4,8}|6\\\\d{8}|35\\\\d{2,4}|(?:[2457-9]\\\\d|3[0-46-9])\\\\d{2,9}\",[4,5,6,7,8,9,10,11],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"20[2-689]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4\",[\"2(?:[0367]|4[3-8])\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"80[01]|90[015]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"20\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4 $5\",[\"2(?:[0367]|4[3-8])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,5})\",\"$1 $2 $3 $4\",[\"[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]\"]]],0,0,\"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\\\d)\",0,0,0,[0,[\"6(?:[269][18]|5[1568]|7[189]|81)\\\\d{6}\",[9]]]],\"LV\":[\"371\",\"00\",\"(?:[268]\\\\d|90)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[269]|8[01]\"]]],0,0,0,0,0,0,[0,[\"23(?:23[0-57-9]|33[0238])\\\\d{3}|2(?:[0-24-9]\\\\d\\\\d|3(?:0[07]|[14-9]\\\\d|2[024-9]|3[0-24-9]))\\\\d{4}\"]]],\"LY\":[\"218\",\"00\",\"[2-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"[2-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"9[1-6]\\\\d{7}\"]]],\"MA\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],[[\"(\\\\d{5})(\\\\d{4})\",\"$1-$2\",[\"5(?:29|38)\",\"5(?:29[89]|389)\",\"5(?:29[89]|389)0\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5[45]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1-$2\",[\"5(?:2[2-489]|3[5-9]|9)|892\",\"5(?:2(?:[2-49]|8[235-9])|3[5-9]|9)|892\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"8\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1-$2\",[\"[5-7]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:[017]\\\\d|2[0-2]|6[0-8]|8[0-3]))\\\\d{6}\"]]],\"MC\":[\"377\",\"00\",\"(?:[3489]|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[389]\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"6\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"4(?:[46]\\\\d|5[1-9])\\\\d{5}|(?:3|6\\\\d)\\\\d{7}\"]]],\"MD\":[\"373\",\"00\",\"(?:[235-7]\\\\d|[89]0)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"22|3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[25-7]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"562\\\\d{5}|(?:6\\\\d|7[16-9])\\\\d{6}\"]]],\"ME\":[\"382\",\"00\",\"(?:20|[3-79]\\\\d)\\\\d{6}|80\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"6(?:[07-9]\\\\d|3[024]|6[0-25])\\\\d{5}\",[8]]]],\"MF\":[\"590\",\"00\",\"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\",[9],0,\"0\",0,0,0,0,0,[0,[\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\"]]],\"MG\":[\"261\",\"00\",\"[23]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\",0,\"0|([24-9]\\\\d{6})$\",\"20$1\",0,0,[0,[\"3[2-489]\\\\d{7}\"]]],\"MH\":[\"692\",\"011\",\"329\\\\d{4}|(?:[256]\\\\d|45)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-6]\"]]],\"1\",0,0,0,0,0,[0,[\"(?:(?:23|54)5|329|45[356])\\\\d{4}\"]]],\"MK\":[\"389\",\"00\",\"[2-578]\\\\d{7}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2|34[47]|4(?:[37]7|5[47]|64)\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[347]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[58]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"7(?:3555|4747|9(?:[019]77|42[0-4]))\\\\d{3}|7(?:[0-25-8]\\\\d\\\\d|3(?:[1-4]\\\\d|7[01578])|4(?:2\\\\d|60|7[01578])|9(?:[23]\\\\d|4[01]|7[015]))\\\\d{4}\"]]],\"ML\":[\"223\",\"00\",\"[24-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-9]\"]]],0,0,0,0,0,0,[0,[\"2(?:0(?:01|79)|17\\\\d)\\\\d{4}|(?:5[01]|[679]\\\\d|8[2-49])\\\\d{6}\"]]],\"MM\":[\"95\",\"00\",\"1\\\\d{5,7}|95\\\\d{6}|(?:[4-7]|9[0-46-9])\\\\d{6,8}|(?:2|8\\\\d)\\\\d{5,8}\",[6,7,8,9,10],[[\"(\\\\d)(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"16|2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[4-7]|8[1-35]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4,6})\",\"$1 $2 $3\",[\"9(?:2[0-4]|[35-9]|4[137-9])\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"92\"],\"0$1\"],[\"(\\\\d)(\\\\d{5})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"(?:17[01]|9(?:2(?:[0-4]|[56]\\\\d\\\\d)|(?:3(?:[0-36]|4\\\\d)|(?:6\\\\d|9[4-8])\\\\d|7(?:3|40|[5-9]\\\\d)|8(?:78|[89]\\\\d))\\\\d|4(?:(?:[0245]\\\\d|[1379])\\\\d|88)|5[0-6])\\\\d)\\\\d{4}|9[69]1\\\\d{6}|9(?:[68]\\\\d|9[089])\\\\d{5}\",[7,8,9,10]]]],\"MN\":[\"976\",\"001\",\"[12]\\\\d{7,9}|[5-9]\\\\d{7}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[12]1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[12]2[1-3]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])\",\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"[12]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"(?:83[01]|920)\\\\d{5}|(?:5[05]|6[06]|8[015689]|9[013-9])\\\\d{6}\",[8]]]],\"MO\":[\"853\",\"00\",\"0800\\\\d{3}|(?:28|[68]\\\\d)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[268]\"]]],0,0,0,0,0,0,[0,[\"6800[0-79]\\\\d{3}|6(?:[235]\\\\d\\\\d|6(?:0[0-5]|[1-9]\\\\d)|8(?:0[1-9]|[14-8]\\\\d|2[5-9]|[39][0-4]))\\\\d{4}\",[8]]]],\"MP\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:67|90)0\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"670$1\",0,\"670\",[0,[\"670(?:2(?:3[3-7]|56|8[4-8])|32[1-38]|4(?:33|8[348])|5(?:32|55|88)|6(?:64|70|82)|78[3589]|8[3-9]8|989)\\\\d{4}\"]]],\"MQ\":[\"596\",\"00\",\"(?:69|80)\\\\d{7}|(?:59|97)6\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"69(?:6(?:[0-46-9]\\\\d|5[0-6])|727)\\\\d{4}\"]]],\"MR\":[\"222\",\"00\",\"(?:[2-4]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-48]\"]]],0,0,0,0,0,0,[0,[\"[2-4][0-46-9]\\\\d{6}\"]]],\"MS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|664|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([34]\\\\d{6})$\",\"664$1\",0,\"664\",[0,[\"664(?:3(?:49|9[1-6])|49[2-6])\\\\d{4}\"]]],\"MT\":[\"356\",\"00\",\"3550\\\\d{4}|(?:[2579]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2357-9]\"]]],0,0,0,0,0,0,[0,[\"(?:7(?:210|[79]\\\\d\\\\d)|9(?:[29]\\\\d\\\\d|69[67]|8(?:1[1-3]|89|97)))\\\\d{4}\"]]],\"MU\":[\"230\",\"0(?:0|[24-7]0|3[03])\",\"(?:5|8\\\\d\\\\d)\\\\d{7}|[2-468]\\\\d{6}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46]|8[013]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"5\"]],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"8\"]]],0,0,0,0,0,0,[0,[\"5(?:4(?:2[1-389]|7[1-9])|87[15-8])\\\\d{4}|5(?:2[5-9]|4[3-689]|[57]\\\\d|8[0-689]|9[0-8])\\\\d{5}\",[8]]],\"020\"],\"MV\":[\"960\",\"0(?:0|19)\",\"(?:800|9[0-57-9]\\\\d)\\\\d{7}|[34679]\\\\d{6}\",[7,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[3467]|9[13-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],0,0,0,0,0,0,[0,[\"46[46]\\\\d{4}|(?:7\\\\d|9[13-9])\\\\d{5}\",[7]]],\"00\"],\"MW\":[\"265\",\"00\",\"(?:[1289]\\\\d|31|77)\\\\d{7}|1\\\\d{6}\",[7,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[137-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"111\\\\d{6}|(?:31|77|[89][89])\\\\d{7}\",[9]]]],\"MX\":[\"52\",\"0[09]\",\"1(?:(?:44|99)[1-9]|65[0-689])\\\\d{7}|(?:1(?:[017]\\\\d|[235][1-9]|4[0-35-9]|6[0-46-9]|8[1-79]|9[1-8])|[2-9]\\\\d)\\\\d{8}\",[10,11],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"33|5[56]|81\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-9]\"],0,1],[\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 $3 $4\",[\"1(?:33|5[56]|81)\"],0,1],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 $3 $4\",[\"1\"],0,1]],\"01\",0,\"0(?:[12]|4[45])|1\",0,0,0,[0,[\"657[12]\\\\d{6}|(?:1(?:2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-7][1-9]|3[1-8]|8[1-35-9]|9[2-689])|5(?:[56]\\\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))|2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[25-7][1-9]|3[1-8]|4\\\\d|8[1-35-9]|9[2-689])|5(?:[56]\\\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|6[1-9]|7[12]|8[1-8]|9\\\\d))\\\\d{7}\"]],\"00\"],\"MY\":[\"60\",\"00\",\"1\\\\d{8,9}|(?:3\\\\d|[4-9])\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"[4-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1-$2 $3\",[\"1(?:[02469]|[378][1-9]|53)|8\",\"1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"3\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3-$4\",[\"1(?:[367]|80)\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"15\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"1\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"1(?:1888[689]|4400|8(?:47|8[27])[0-4])\\\\d{4}|1(?:0(?:[23568]\\\\d|4[0-6]|7[016-9]|9[0-8])|1(?:[1-5]\\\\d\\\\d|6(?:0[5-9]|[1-9]\\\\d)|7(?:[0134]\\\\d|2[1-9]|5[0-6]))|(?:[269]\\\\d|[37][1-9]|4[235-9])\\\\d|5(?:31|9\\\\d\\\\d)|8(?:1[23]|[236]\\\\d|4[06]|5(?:46|[7-9])|7[016-9]|8[01]|9[0-8]))\\\\d{5}\",[9,10]]]],\"MZ\":[\"258\",\"00\",\"(?:2|8\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2|8[2-79]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]],0,0,0,0,0,0,[0,[\"8[2-79]\\\\d{7}\",[9]]]],\"NA\":[\"264\",\"00\",\"[68]\\\\d{7,8}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"87\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"(?:60|8[1245])\\\\d{7}\",[9]]]],\"NC\":[\"687\",\"00\",\"(?:050|[2-57-9]\\\\d\\\\d)\\\\d{3}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1.$2.$3\",[\"[02-57-9]\"]]],0,0,0,0,0,0,[0,[\"(?:5[0-4]|[79]\\\\d|8[0-79])\\\\d{4}\"]]],\"NE\":[\"227\",\"00\",\"[027-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"08\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[089]|2[013]|7[04]\"]]],0,0,0,0,0,0,[0,[\"(?:23|7[04]|[89]\\\\d)\\\\d{6}\"]]],\"NF\":[\"672\",\"00\",\"[13]\\\\d{5}\",[6],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"1[0-3]\"]],[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"[13]\"]]],0,0,\"([0-258]\\\\d{4})$\",\"3$1\",0,0,[0,[\"(?:14|3[58])\\\\d{4}\"]]],\"NG\":[\"234\",\"009\",\"(?:[124-7]|9\\\\d{3})\\\\d{6}|[1-9]\\\\d{7}|[78]\\\\d{9,13}\",[7,8,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"78\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]|9(?:0[3-9]|[1-9])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-7]|8[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})(\\\\d{5,6})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"(?:702[0-24-9]|8(?:01|19)[01])\\\\d{6}|(?:70[13-689]|8(?:0[2-9]|1[0-8])|9(?:0[1-9]|1[2356]))\\\\d{7}\",[10]]]],\"NI\":[\"505\",\"00\",\"(?:1800|[25-8]\\\\d{3})\\\\d{4}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[125-8]\"]]],0,0,0,0,0,0,[0,[\"(?:5(?:5[0-7]|[78]\\\\d)|6(?:20|3[035]|4[045]|5[05]|77|8[1-9]|9[059])|(?:7[5-8]|8\\\\d)\\\\d)\\\\d{5}\"]]],\"NL\":[\"31\",\"00\",\"(?:[124-7]\\\\d\\\\d|3(?:[02-9]\\\\d|1[0-8]))\\\\d{6}|8\\\\d{6,9}|9\\\\d{6,10}|1\\\\d{4,5}\",[5,6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{4,7})\",\"$1 $2\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"66\"],\"0$1\"],[\"(\\\\d)(\\\\d{8})\",\"$1 $2\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-578]|91\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"(?:6[1-58]|970\\\\d)\\\\d{7}\",[9,11]]]],\"NO\":[\"47\",\"00\",\"(?:0|[2-9]\\\\d{3})\\\\d{4}\",[5,8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[489]|59\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[235-7]\"]]],0,0,0,0,0,\"[02-689]|7[0-8]\",[0,[\"(?:4[015-8]|59|9\\\\d)\\\\d{6}\",[8]]]],\"NP\":[\"977\",\"00\",\"(?:1\\\\d|9)\\\\d{9}|[1-9]\\\\d{7}\",[8,10,11],[[\"(\\\\d)(\\\\d{7})\",\"$1-$2\",[\"1[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1-$2\",[\"1[01]|[2-8]|9(?:[1-59]|[67][2-6])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"9\"]]],\"0\",0,0,0,0,0,[0,[\"9(?:6[0-3]|7[024-6]|8[0-24-68])\\\\d{7}\",[10]]]],\"NR\":[\"674\",\"00\",\"(?:444|(?:55|8\\\\d)\\\\d|666)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-68]\"]]],0,0,0,0,0,0,[0,[\"(?:55[3-9]|666|8\\\\d\\\\d)\\\\d{4}\"]]],\"NU\":[\"683\",\"00\",\"(?:[47]|888\\\\d)\\\\d{3}\",[4,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"8\"]]],0,0,0,0,0,0,[0,[\"888[4-9]\\\\d{3}\",[7]]]],\"NZ\":[\"64\",\"0(?:0|161)\",\"[29]\\\\d{7,9}|50\\\\d{5}(?:\\\\d{2,3})?|6[0-35-9]\\\\d{6}|7\\\\d{7,8}|8\\\\d{4,9}|(?:11\\\\d|[34])\\\\d{7}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,8})\",\"$1 $2\",[\"8[1-579]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"50[036-8]|[89]0\",\"50(?:[0367]|88)|[89]0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"24|[346]|7[2-57-9]|9[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:10|74)|[59]|80\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1|2[028]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,5})\",\"$1 $2 $3\",[\"2(?:[169]|7[0-35-9])|7|86\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"2[0-27-9]\\\\d{7,8}|21\\\\d{6}\",[8,9,10]]],\"00\"],\"OM\":[\"968\",\"00\",\"(?:1505|[279]\\\\d{3}|500)\\\\d{4}|800\\\\d{5,6}\",[7,8,9],[[\"(\\\\d{3})(\\\\d{4,6})\",\"$1 $2\",[\"[58]\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[179]\"]]],0,0,0,0,0,0,[0,[\"1505\\\\d{4}|(?:7(?:[1289]\\\\d|7[0-4])|9(?:0[1-9]|[1-9]\\\\d))\\\\d{5}\",[8]]]],\"PA\":[\"507\",\"00\",\"(?:00800|8\\\\d{3})\\\\d{6}|[68]\\\\d{7}|[1-57-9]\\\\d{6}\",[7,8,10,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[1-57-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[68]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],0,0,0,0,0,0,[0,[\"(?:1[16]1|21[89]|6\\\\d{3}|8(?:1[01]|7[23]))\\\\d{4}\",[7,8]]]],\"PE\":[\"51\",\"00|19(?:1[124]|77|90)00\",\"(?:[14-8]|9\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[4-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"]]],\"0\",0,0,0,0,0,[0,[\"9\\\\d{8}\",[9]]],\"00\",\" Anexo \"],\"PF\":[\"689\",\"00\",\"4\\\\d{5}(?:\\\\d{2})?|8\\\\d{7,8}\",[6,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4|8[7-9]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]],0,0,0,0,0,0,[0,[\"8[7-9]\\\\d{6}\",[8]]]],\"PG\":[\"675\",\"00|140[1-3]\",\"(?:180|[78]\\\\d{3})\\\\d{4}|(?:[2-589]\\\\d|64)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"18|[2-69]|85\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[78]\"]]],0,0,0,0,0,0,[0,[\"(?:7\\\\d|8[128])\\\\d{6}\",[8]]],\"00\"],\"PH\":[\"63\",\"00\",\"(?:[2-7]|9\\\\d)\\\\d{8}|2\\\\d{5}|(?:1800|8)\\\\d{7,9}\",[6,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"2\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2\",\"3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"346|4(?:27|9[35])|883\",\"3469|4(?:279|9(?:30|56))|8834\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|8[2-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{4})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"1\"]]],\"0\",0,0,0,0,0,[0,[\"(?:8(?:1[37]|9[5-8])|9(?:0[5-9]|1[0-24-9]|[235-7]\\\\d|4[2-9]|8[135-9]|9[1-9]))\\\\d{7}\",[10]]]],\"PK\":[\"92\",\"00\",\"122\\\\d{6}|[24-8]\\\\d{10,11}|9(?:[013-9]\\\\d{8,10}|2(?:[01]\\\\d\\\\d|2(?:[06-8]\\\\d|1[01]))\\\\d{7})|(?:[2-8]\\\\d{3}|92(?:[0-7]\\\\d|8[1-9]))\\\\d{6}|[24-9]\\\\d{8}|[89]\\\\d{7}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,7})\",\"$1 $2 $3\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{6,7})\",\"$1 $2\",[\"2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])\",\"9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{7,8})\",\"$1 $2\",[\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"58\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[24-9]\"],\"(0$1)\"]],\"0\",0,0,0,0,0,[0,[\"3(?:[0-24]\\\\d|3[0-7]|55|64)\\\\d{7}\",[10]]]],\"PL\":[\"48\",\"00\",\"(?:6|8\\\\d\\\\d)\\\\d{7}|[1-9]\\\\d{6}(?:\\\\d{2})?|[26]\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{5})\",\"$1\",[\"19\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"11|20|64\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1\",\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"64\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[2-8]|[2-7]|8[1-79]|9[145]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"8\"]]],0,0,0,0,0,0,[0,[\"21(?:1(?:[145]\\\\d|3[1-5])|2[0-4]\\\\d)\\\\d{4}|(?:45|5[0137]|6[069]|7[2389]|88)\\\\d{7}\",[9]]]],\"PM\":[\"508\",\"00\",\"(?:[45]|80\\\\d\\\\d)\\\\d{5}\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[45]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"(?:4[02-4]|5[056])\\\\d{4}\",[6]]]],\"PR\":[\"1\",\"011\",\"(?:[589]\\\\d\\\\d|787)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"787|939\",[0,[\"(?:787|939)[2-9]\\\\d{6}\"]]],\"PS\":[\"970\",\"00\",\"[2489]2\\\\d{6}|(?:1\\\\d|5)\\\\d{8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2489]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\",0,0,0,0,0,[0,[\"5[69]\\\\d{7}\",[9]]]],\"PT\":[\"351\",\"00\",\"1693\\\\d{5}|(?:[26-9]\\\\d|30)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2[12]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"16|[236-9]\"]]],0,0,0,0,0,0,[0,[\"6(?:[06]92(?:30|9\\\\d)|[35]92(?:3[03]|9\\\\d))\\\\d{3}|(?:(?:16|6[0356])93|9(?:[1-36]\\\\d\\\\d|480))\\\\d{5}\"]]],\"PW\":[\"680\",\"01[12]\",\"(?:[24-8]\\\\d\\\\d|345|900)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]],0,0,0,0,0,0,[0,[\"(?:(?:46|83)[0-5]|6[2-4689]0)\\\\d{4}|(?:45|77|88)\\\\d{5}\"]]],\"PY\":[\"595\",\"00\",\"59\\\\d{4,6}|9\\\\d{5,10}|(?:[2-46-8]\\\\d|5[0-8])\\\\d{4,7}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"[2-9]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{4,5})\",\"$1 $2\",[\"2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"87\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"9(?:[5-79]|8[1-6])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"]]],\"0\",0,0,0,0,0,[0,[\"9(?:51|6[129]|[78][1-6]|9[1-5])\\\\d{6}\",[9]]]],\"QA\":[\"974\",\"00\",\"[2-7]\\\\d{7}|800\\\\d{4}(?:\\\\d{2})?|2\\\\d{6}\",[7,8,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"2[126]|8\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]\"]]],0,0,0,0,0,0,[0,[\"(?:2[89]|[35-7]\\\\d)\\\\d{6}\",[8]]]],\"RE\":[\"262\",\"00\",\"976\\\\d{6}|(?:26|[68]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2689]\"],\"0$1\"]],\"0\",0,0,0,0,\"26[23]|69|[89]\",[0,[\"(?:69(?:2\\\\d\\\\d|3(?:0[0-46]|1[013]|2[0-2]|3[0-39]|4\\\\d|5[0-5]|6[0-6]|7[0-27]|8[0-8]|9[0-479]))|976(?:2[27]|3[0-37]|9\\\\d))\\\\d{4}\"]]],\"RO\":[\"40\",\"00\",\"(?:[2378]\\\\d|90)\\\\d{7}|[23]\\\\d{5}\",[6,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"2[3-6]\",\"2[3-6]\\\\d9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"219|31\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[23]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[237-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"7020\\\\d{5}|7(?:0[013-9]|1[0-3]|[2-7]\\\\d|8[03-8]|9[019])\\\\d{6}\",[9]]],0,\" int \"],\"RS\":[\"381\",\"00\",\"38[02-9]\\\\d{6,9}|6\\\\d{7,9}|90\\\\d{4,8}|38\\\\d{5,6}|(?:7\\\\d\\\\d|800)\\\\d{3,9}|(?:[12]\\\\d|3[0-79])\\\\d{5,10}\",[6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3,9})\",\"$1 $2\",[\"(?:2[389]|39)0|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5,10})\",\"$1 $2\",[\"[1-36]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"6(?:[0-689]|7\\\\d)\\\\d{6,7}\",[8,9,10]]]],\"RU\":[\"7\",\"810\",\"8\\\\d{13}|[347-9]\\\\d{9}\",[10,14],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-8]|2[1-9])\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2\"],\"8 ($1)\",1],[\"(\\\\d{5})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-68]|2[1-9])\",\"7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))\",\"7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[349]|8(?:[02-7]|1[1-8])\"],\"8 ($1)\",1],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"8\"],\"8 ($1)\"]],\"8\",0,0,0,0,\"3[04-689]|[489]\",[0,[\"9\\\\d{9}\",[10]]],\"8~10\"],\"RW\":[\"250\",\"00\",\"(?:06|[27]\\\\d\\\\d|[89]00)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"]]],\"0\",0,0,0,0,0,[0,[\"7[2389]\\\\d{7}\",[9]]]],\"SA\":[\"966\",\"00\",\"92\\\\d{7}|(?:[15]|8\\\\d)\\\\d{8}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\",0,0,0,0,0,[0,[\"579[01]\\\\d{5}|5(?:[013-689]\\\\d|7[0-35-8])\\\\d{6}\",[9]]]],\"SB\":[\"677\",\"0[01]\",\"(?:[1-6]|[7-9]\\\\d\\\\d)\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7|8[4-9]|9(?:[1-8]|9[0-8])\"]]],0,0,0,0,0,0,[0,[\"48\\\\d{3}|(?:(?:7[1-9]|8[4-9])\\\\d|9(?:1[2-9]|2[013-9]|3[0-2]|[46]\\\\d|5[0-46-9]|7[0-689]|8[0-79]|9[0-8]))\\\\d{4}\"]]],\"SC\":[\"248\",\"010|0[0-2]\",\"800\\\\d{4}|(?:[249]\\\\d|64)\\\\d{5}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[246]|9[57]\"]]],0,0,0,0,0,0,[0,[\"2[125-8]\\\\d{5}\"]],\"00\"],\"SD\":[\"249\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"(?:1[0-2]|9[0-3569])\\\\d{7}\"]]],\"SE\":[\"46\",\"00\",\"(?:[26]\\\\d\\\\d|9)\\\\d{9}|[1-9]\\\\d{8}|[1-689]\\\\d{7}|[1-4689]\\\\d{6}|2\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"20\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"9(?:00|39|44|9)\"],\"0$1\",0,\"$1 $2\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3\",[\"[12][136]|3[356]|4[0246]|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{3})\",\"$1-$2 $3\",[\"9(?:00|39|44)\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"10|7\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1-$2 $3 $4\",[\"9\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4 $5\",[\"[26]\"],\"0$1\",0,\"$1 $2 $3 $4 $5\"]],\"0\",0,0,0,0,0,[0,[\"7[02369]\\\\d{7}\",[9]]]],\"SG\":[\"65\",\"0[0-3]\\\\d\",\"(?:(?:1\\\\d|8)\\\\d\\\\d|7000)\\\\d{7}|[3689]\\\\d{7}\",[8,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[369]|8(?:0[1-5]|[1-9])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]],0,0,0,0,0,0,[0,[\"8(?:05[0-7]|95[0-2])\\\\d{4}|(?:8(?:0[1-4]|[1-8]\\\\d|9[0-4])|9[0-8]\\\\d)\\\\d{5}\",[8]]]],\"SH\":[\"290\",\"00\",\"(?:[256]\\\\d|8)\\\\d{3}\",[4,5],0,0,0,0,0,0,\"[256]\",[0,[\"[56]\\\\d{4}\",[5]]]],\"SI\":[\"386\",\"00|10(?:22|66|88|99)\",\"[1-7]\\\\d{7}|8\\\\d{4,7}|90\\\\d{4,6}\",[5,6,7,8],[[\"(\\\\d{2})(\\\\d{3,6})\",\"$1 $2\",[\"8[09]|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"59|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37][01]|4[0139]|51|6\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-57]\"],\"(0$1)\"]],\"0\",0,0,0,0,0,[0,[\"65(?:1\\\\d|55|6[01]|70)\\\\d{4}|(?:[37][01]|4[0139]|51|6[489])\\\\d{6}\",[8]]],\"00\"],\"SJ\":[\"47\",\"00\",\"0\\\\d{4}|(?:[489]\\\\d|[57]9)\\\\d{6}\",[5,8],0,0,0,0,0,0,\"79\",[0,[\"(?:4[015-8]|59|9\\\\d)\\\\d{6}\",[8]]]],\"SK\":[\"421\",\"00\",\"[2-689]\\\\d{8}|[2-59]\\\\d{6}|[2-5]\\\\d{5}\",[6,7,9],[[\"(\\\\d)(\\\\d{2})(\\\\d{3,4})\",\"$1 $2 $3\",[\"21\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-5][1-8]1\",\"[3-5][1-8]1[67]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[689]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"[3-5]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"909[1-9]\\\\d{5}|9(?:0[1-8]|1[0-24-9]|4[03-57-9]|5\\\\d)\\\\d{6}\",[9]]]],\"SL\":[\"232\",\"00\",\"(?:[237-9]\\\\d|66)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[236-9]\"],\"(0$1)\"]],\"0\",0,0,0,0,0,[0,[\"(?:25|3[0-5]|66|7[2-9]|8[08]|9[09])\\\\d{6}\"]]],\"SM\":[\"378\",\"00\",\"(?:0549|[5-7]\\\\d)\\\\d{6}\",[8,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"0\"]]],0,0,\"([89]\\\\d{5})$\",\"0549$1\",0,0,[0,[\"6[16]\\\\d{6}\",[8]]]],\"SN\":[\"221\",\"00\",\"(?:[378]\\\\d|93)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[379]\"]]],0,0,0,0,0,0,[0,[\"7(?:(?:[06-8]\\\\d|21|90)\\\\d|5(?:01|[19]0|25|[38]3|[4-7]\\\\d))\\\\d{5}\"]]],\"SO\":[\"252\",\"00\",\"[346-9]\\\\d{8}|[12679]\\\\d{7}|[1-5]\\\\d{6}|[1348]\\\\d{5}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"8[125]\"]],[\"(\\\\d{6})\",\"$1\",[\"[134]\"]],[\"(\\\\d)(\\\\d{6})\",\"$1 $2\",[\"[15]|2[0-79]|3[0-46-8]|4[0-7]\"]],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"24|[67]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[3478]|64|90\"]],[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"1|28|6(?:0[5-7]|[1-35-9])|9[2-9]\"]]],\"0\",0,0,0,0,0,[0,[\"(?:(?:15|(?:3[59]|4[89]|79|8[08])\\\\d|6(?:0[5-7]|[1-9]\\\\d)|9(?:0\\\\d|[2-9]))\\\\d|2(?:4\\\\d|8))\\\\d{5}|[67]\\\\d{7}\",[7,8,9]]]],\"SR\":[\"597\",\"00\",\"(?:[2-5]|68|[78]\\\\d)\\\\d{5}\",[6,7],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"56\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1-$2\",[\"[2-5]\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[6-8]\"]]],0,0,0,0,0,0,[0,[\"(?:7[124-7]|8[124-9])\\\\d{5}\",[7]]]],\"SS\":[\"211\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"(?:12|9[1257-9])\\\\d{7}\"]]],\"ST\":[\"239\",\"00\",\"(?:22|9\\\\d)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[29]\"]]],0,0,0,0,0,0,[0,[\"900[5-9]\\\\d{3}|9(?:0[1-9]|[89]\\\\d)\\\\d{4}\"]]],\"SV\":[\"503\",\"00\",\"[267]\\\\d{7}|[89]00\\\\d{4}(?:\\\\d{4})?\",[7,8,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[89]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[267]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],0,0,0,0,0,0,[0,[\"66(?:[02-9]\\\\d\\\\d|1(?:[02-9]\\\\d|16))\\\\d{3}|(?:6[0-57-9]|7\\\\d)\\\\d{6}\",[8]]]],\"SX\":[\"1\",\"011\",\"7215\\\\d{6}|(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|(5\\\\d{6})$\",\"721$1\",0,\"721\",[0,[\"7215(?:1[02]|2\\\\d|5[034679]|8[014-8])\\\\d{4}\"]]],\"SY\":[\"963\",\"00\",\"[1-39]\\\\d{8}|[1-5]\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-5]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\",1]],\"0\",0,0,0,0,0,[0,[\"9[1-689]\\\\d{7}\",[9]]]],\"SZ\":[\"268\",\"00\",\"0800\\\\d{4}|(?:[237]\\\\d|900)\\\\d{6}\",[8,9],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[0237]\"]],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"9\"]]],0,0,0,0,0,0,[0,[\"7[6-9]\\\\d{6}\",[8]]]],\"TA\":[\"290\",\"00\",\"8\\\\d{3}\",[4],0,0,0,0,0,0,\"8\"],\"TC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|649|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-479]\\\\d{6})$\",\"649$1\",0,\"649\",[0,[\"649(?:2(?:3[129]|4[1-79])|3\\\\d\\\\d|4[34][1-3])\\\\d{4}\"]]],\"TD\":[\"235\",\"00|16\",\"(?:22|[69]\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2679]\"]]],0,0,0,0,0,0,[0,[\"(?:6[023568]|77|9\\\\d)\\\\d{6}\"]],\"00\"],\"TG\":[\"228\",\"00\",\"[279]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[279]\"]]],0,0,0,0,0,0,[0,[\"(?:7[09]|9[0-36-9])\\\\d{6}\"]]],\"TH\":[\"66\",\"00[1-9]\",\"(?:001800|[2-57]|[689]\\\\d)\\\\d{7}|1\\\\d{7,9}\",[8,9,10,13],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[13-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\",0,0,0,0,0,[0,[\"671[0-8]\\\\d{5}|(?:14|6[1-6]|[89]\\\\d)\\\\d{7}\",[9]]]],\"TJ\":[\"992\",\"810\",\"(?:00|[1-57-9]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{6})(\\\\d)(\\\\d{2})\",\"$1 $2 $3\",[\"331\",\"3317\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[34]7|91[78]\"]],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"3[1-5]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[0-57-9]\"]]],0,0,0,0,0,0,[0,[\"41[18]\\\\d{6}|(?:[034]0|[17][017]|2[02]|5[05]|8[08]|9\\\\d)\\\\d{7}\"]],\"8~10\"],\"TK\":[\"690\",\"00\",\"[2-47]\\\\d{3,6}\",[4,5,6,7],0,0,0,0,0,0,0,[0,[\"7[2-4]\\\\d{2,5}\"]]],\"TL\":[\"670\",\"00\",\"7\\\\d{7}|(?:[2-47]\\\\d|[89]0)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-489]|70\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"7\"]]],0,0,0,0,0,0,[0,[\"7[2-8]\\\\d{6}\",[8]]]],\"TM\":[\"993\",\"810\",\"[1-6]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"12\"],\"(8 $1)\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-5]\"],\"(8 $1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"6\"],\"8 $1\"]],\"8\",0,0,0,0,0,[0,[\"6\\\\d{7}\"]],\"8~10\"],\"TN\":[\"216\",\"00\",\"[2-57-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-57-9]\"]]],0,0,0,0,0,0,[0,[\"3(?:001|[12]40)\\\\d{4}|(?:(?:[259]\\\\d|4[0-7])\\\\d|3(?:1[1-35]|6[0-4]|91))\\\\d{5}\"]]],\"TO\":[\"676\",\"00\",\"(?:0800|(?:[5-8]\\\\d\\\\d|999)\\\\d)\\\\d{3}|[2-8]\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1-$2\",[\"[2-4]|50|6[09]|7[0-24-69]|8[05]\"]],[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]]],0,0,0,0,0,0,[0,[\"(?:55[4-6]|6(?:[09]\\\\d|3[02]|8[15-9])|(?:7\\\\d|8[46-9])\\\\d|999)\\\\d{4}\",[7]]]],\"TR\":[\"90\",\"00\",\"4\\\\d{6}|8\\\\d{11,12}|(?:[2-58]\\\\d\\\\d|900)\\\\d{7}\",[7,10,12,13],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"512|8[01589]|90\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5(?:[0-59]|61)\",\"5(?:[0-59]|616)\",\"5(?:[0-59]|6161)\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24][1-8]|3[1-9]\"],\"(0$1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{6,7})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1]],\"0\",0,0,0,0,0,[0,[\"56161\\\\d{5}|5(?:0[15-7]|1[06]|24|[34]\\\\d|5[1-59]|9[46])\\\\d{7}\",[10]]]],\"TT\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-46-8]\\\\d{6})$\",\"868$1\",0,\"868\",[0,[\"868(?:(?:2[5-9]|3\\\\d)\\\\d|4(?:3[0-6]|[6-9]\\\\d)|6(?:20|78|8\\\\d)|7(?:0[1-9]|1[02-9]|[2-9]\\\\d))\\\\d{4}\"]]],\"TV\":[\"688\",\"00\",\"(?:2|7\\\\d\\\\d|90)\\\\d{4}\",[5,6,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]],0,0,0,0,0,0,[0,[\"(?:7[01]\\\\d|90)\\\\d{4}\",[6,7]]]],\"TW\":[\"886\",\"0(?:0[25-79]|19)\",\"[2-689]\\\\d{8}|7\\\\d{9,10}|[2-8]\\\\d{7}|2\\\\d{6}\",[7,8,9,10,11],[[\"(\\\\d{2})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"202\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[258]0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]\",\"[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"(?:40001[0-2]|9[0-8]\\\\d{4})\\\\d{3}\",[9]]],0,\"#\"],\"TZ\":[\"255\",\"00[056]\",\"(?:[25-8]\\\\d|41|90)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[24]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"77[2-9]\\\\d{6}|(?:6[125-9]|7[13-689])\\\\d{7}\"]]],\"UA\":[\"380\",\"00\",\"[89]\\\\d{9}|[3-9]\\\\d{8}\",[9,10],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]\",\"6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])\",\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|89|9[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"(?:39|50|6[36-8]|7[1-3]|9[1-9])\\\\d{7}\",[9]]],\"0~0\"],\"UG\":[\"256\",\"00[057]\",\"800\\\\d{6}|(?:[29]0|[347]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"202\",\"2024\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[27-9]|4(?:6[45]|[7-9])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[34]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"726[01]\\\\d{5}|7(?:[01578]\\\\d|20|36|[46][0-4]|9[89])\\\\d{6}\"]]],\"US\":[\"1\",\"011\",\"[2-9]\\\\d{9}|3\\\\d{6}\",[10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"310\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"($1) $2-$3\",[\"[2-9]\"],0,1,\"$1-$2-$3\"]],\"1\",0,0,0,0,0,[0,[\"505(?:[2-57-9]\\\\d\\\\d|6(?:[0-35-9]\\\\d|44))\\\\d{4}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[01679]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[068]|3[0-289]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-389]|8[04-69]))[2-9]\\\\d{6}\"]]],\"UY\":[\"598\",\"0(?:0|1[3-9]\\\\d)\",\"4\\\\d{9}|[1249]\\\\d{7}|(?:[49]\\\\d|80)\\\\d{5}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"405|8|90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[124]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"9[1-9]\\\\d{6}\",[8]]],\"00\",\" int. \"],\"UZ\":[\"998\",\"810\",\"(?:33|55|[679]\\\\d|88)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[35-9]\"],\"8 $1\"]],\"8\",0,0,0,0,0,[0,[\"(?:(?:33|88|9[0-57-9])\\\\d{3}|55(?:50[013]|90\\\\d)|6(?:1(?:2(?:2[01]|98)|35[0-4]|50\\\\d|61[23]|7(?:[01][017]|4\\\\d|55|9[5-9]))|2(?:(?:11|7\\\\d)\\\\d|2(?:[12]1|9[01379])|5(?:[126]\\\\d|3[0-4]))|5(?:19[01]|2(?:27|9[26])|(?:30|59|7\\\\d)\\\\d)|6(?:2(?:1[5-9]|2[0367]|38|41|52|60)|(?:3[79]|9[0-3])\\\\d|4(?:56|83)|7(?:[07]\\\\d|1[017]|3[07]|4[047]|5[057]|67|8[0178]|9[79]))|7(?:2(?:24|3[237]|4[5-9]|7[15-8])|5(?:7[12]|8[0589])|7(?:0\\\\d|[39][07])|9(?:0\\\\d|7[079]))|9(?:2(?:1[1267]|3[01]|5\\\\d|7[0-4])|(?:5[67]|7\\\\d)\\\\d|6(?:2[0-26]|8\\\\d)))|7(?:[07]\\\\d{3}|1(?:13[01]|6(?:0[47]|1[67]|66)|71[3-69]|98\\\\d)|2(?:2(?:2[79]|95)|3(?:2[5-9]|6[0-6])|57\\\\d|7(?:0\\\\d|1[17]|2[27]|3[37]|44|5[057]|66|88))|3(?:2(?:1[0-6]|21|3[469]|7[159])|(?:33|9[4-6])\\\\d|5(?:0[0-4]|5[579]|9\\\\d)|7(?:[0-3579]\\\\d|4[0467]|6[67]|8[078]))|4(?:2(?:29|5[0257]|6[0-7]|7[1-57])|5(?:1[0-4]|8\\\\d|9[5-9])|7(?:0\\\\d|1[024589]|2[0-27]|3[0137]|[46][07]|5[01]|7[5-9]|9[079])|9(?:7[015-9]|[89]\\\\d))|5(?:112|2(?:0\\\\d|2[29]|[49]4)|3[1568]\\\\d|52[6-9]|7(?:0[01578]|1[017]|[23]7|4[047]|[5-7]\\\\d|8[78]|9[079]))|6(?:2(?:2[1245]|4[2-4])|39\\\\d|41[179]|5(?:[349]\\\\d|5[0-2])|7(?:0[017]|[13]\\\\d|22|44|55|67|88))|9(?:22[128]|3(?:2[0-4]|7\\\\d)|57[02569]|7(?:2[05-9]|3[37]|4\\\\d|60|7[2579]|87|9[07]))))\\\\d{4}\"]],\"8~10\"],\"VA\":[\"39\",\"00\",\"0\\\\d{5,10}|3[0-8]\\\\d{7,10}|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?|(?:1\\\\d|39)\\\\d{7,8}\",[6,7,8,9,10,11],0,0,0,0,0,0,\"06698\",[0,[\"3[1-9]\\\\d{8}|3[2-9]\\\\d{7}\",[9,10]]]],\"VC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|784|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-7]\\\\d{6})$\",\"784$1\",0,\"784\",[0,[\"784(?:4(?:3[0-5]|5[45]|89|9[0-8])|5(?:2[6-9]|3[0-4])|720)\\\\d{4}\"]]],\"VE\":[\"58\",\"00\",\"[68]00\\\\d{7}|(?:[24]\\\\d|[59]0)\\\\d{8}\",[10],[[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"[24-689]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"4(?:1[24-8]|2[46])\\\\d{7}\"]]],\"VG\":[\"1\",\"011\",\"(?:284|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-578]\\\\d{6})$\",\"284$1\",0,\"284\",[0,[\"284496[6-9]\\\\d{3}|284(?:245|3(?:0[0-3]|4[0-7]|68|9[34])|4(?:4[0-6]|68|99)|5(?:4[0-7]|68|9[69]))\\\\d{4}\"]]],\"VI\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:34|90)0\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"340$1\",0,\"340\",[0,[\"340(?:2(?:0[0-38]|2[06-8]|4[49]|77)|3(?:32|44)|4(?:2[23]|44|7[34]|89)|5(?:1[34]|55)|6(?:2[56]|4[23]|77|9[023])|7(?:1[2-57-9]|2[57]|7\\\\d)|884|998)\\\\d{4}\"]]],\"VN\":[\"84\",\"00\",\"[12]\\\\d{9}|[135-9]\\\\d{8}|[16]\\\\d{7}|[16-8]\\\\d{6}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"1\"],0,1],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[69]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[3578]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[48]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\",1]],\"0\",0,0,0,0,0,[0,[\"(?:5(?:2[238]|59)|89[6-9]|99[013-9])\\\\d{6}|(?:3\\\\d|5[689]|7[06-9]|8[1-8]|9[0-8])\\\\d{7}\",[9]]]],\"VU\":[\"678\",\"00\",\"[57-9]\\\\d{6}|(?:[238]\\\\d|48)\\\\d{3}\",[5,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"]]],0,0,0,0,0,0,[0,[\"(?:[58]\\\\d|7[013-7])\\\\d{5}\",[7]]]],\"WF\":[\"681\",\"00\",\"(?:40|72)\\\\d{4}|8\\\\d{5}(?:\\\\d{3})?\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[478]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]],0,0,0,0,0,0,[0,[\"(?:72|8[23])\\\\d{4}\",[6]]]],\"WS\":[\"685\",\"0\",\"(?:[2-6]|8\\\\d{5})\\\\d{4}|[78]\\\\d{6}|[68]\\\\d{5}\",[5,6,7,10],[[\"(\\\\d{5})\",\"$1\",[\"[2-5]|6[1-9]\"]],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[68]\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]],0,0,0,0,0,0,[0,[\"(?:7[1-35-7]|8(?:[3-7]|9\\\\d{3}))\\\\d{5}\",[7,10]]]],\"XK\":[\"383\",\"00\",\"[23]\\\\d{7,8}|(?:4\\\\d\\\\d|[89]00)\\\\d{5}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[23]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"4[3-9]\\\\d{6}\",[8]]]],\"YE\":[\"967\",\"00\",\"(?:1|7\\\\d)\\\\d{7}|[1-7]\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-6]|7[24-68]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"7[0137]\\\\d{7}\",[9]]]],\"YT\":[\"262\",\"00\",\"80\\\\d{7}|(?:26|63)9\\\\d{6}\",[9],0,\"0\",0,0,0,0,\"269|63\",[0,[\"639(?:0[0-79]|1[019]|[267]\\\\d|3[09]|40|5[05-9]|9[04-79])\\\\d{4}\"]]],\"ZA\":[\"27\",\"00\",\"[1-79]\\\\d{8}|8\\\\d{4,9}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"860\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"(?:1(?:3492[0-25]|4495[0235]|549(?:20|5[01]))|4[34]492[01])\\\\d{3}|8[1-4]\\\\d{3,7}|(?:2[27]|47|54)4950\\\\d{3}|(?:1(?:049[2-4]|9[12]\\\\d\\\\d)|(?:6\\\\d|7[0-46-9])\\\\d{3}|8(?:5\\\\d{3}|7(?:08[67]|158|28[5-9]|310)))\\\\d{4}|(?:1[6-8]|28|3[2-69]|4[025689]|5[36-8])4920\\\\d{3}|(?:12|[2-5]1)492\\\\d{4}\",[5,6,7,8,9]]]],\"ZM\":[\"260\",\"00\",\"800\\\\d{6}|(?:21|63|[79]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[28]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[79]\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"(?:7[5-79]|9[5-8])\\\\d{7}\"]]],\"ZW\":[\"263\",\"00\",\"2(?:[0-57-9]\\\\d{6,8}|6[0-24-9]\\\\d{6,7})|[38]\\\\d{9}|[35-8]\\\\d{8}|[3-6]\\\\d{7}|[1-689]\\\\d{6}|[1-3569]\\\\d{5}|[1356]\\\\d{4}\",[5,6,7,8,9,10],[[\"(\\\\d{3})(\\\\d{3,5})\",\"$1 $2\",[\"2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"80\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2\",\"2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)\",\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"29[013-9]|39|54\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,5})\",\"$1 $2\",[\"(?:25|54)8\",\"258|5483\"],\"0$1\"]],\"0\",0,0,0,0,0,[0,[\"7(?:[178]\\\\d|3[1-9])\\\\d{6}\",[9]]]]},\"nonGeographic\":{\"800\":[\"800\",0,\"(?:00|[1-9]\\\\d)\\\\d{6}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"\\\\d\"]]],0,0,0,0,0,0,[0,0,[\"(?:00|[1-9]\\\\d)\\\\d{6}\"]]],\"808\":[\"808\",0,\"[1-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,[\"[1-9]\\\\d{7}\"]]],\"870\":[\"870\",0,\"7\\\\d{11}|[35-7]\\\\d{8}\",[9,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[35-7]\"]]],0,0,0,0,0,0,[0,[\"(?:[356]|774[45])\\\\d{8}|7[6-8]\\\\d{7}\"]]],\"878\":[\"878\",0,\"10\\\\d{10}\",[12],[[\"(\\\\d{2})(\\\\d{5})(\\\\d{5})\",\"$1 $2 $3\",[\"1\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"10\\\\d{10}\"]]],\"881\":[\"881\",0,\"[0-36-9]\\\\d{8}\",[9],[[\"(\\\\d)(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"[0-36-9]\"]]],0,0,0,0,0,0,[0,[\"[0-36-9]\\\\d{8}\"]]],\"882\":[\"882\",0,\"[13]\\\\d{6}(?:\\\\d{2,5})?|285\\\\d{9}|(?:[19]\\\\d|49)\\\\d{6}\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"16|342\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"4\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"3[23]\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"34[57]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"34\"]],[\"(\\\\d{2})(\\\\d{4,5})(\\\\d{5})\",\"$1 $2 $3\",[\"[1-3]\"]]],0,0,0,0,0,0,[0,[\"342\\\\d{4}|(?:337|49)\\\\d{6}|3(?:2|47|7\\\\d{3})\\\\d{7}\",[7,8,9,10,12]],0,0,0,0,0,0,[\"1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\\\d{4}|6\\\\d{5,10})|(?:(?:285\\\\d\\\\d|3(?:45|[69]\\\\d{3}))\\\\d|9[89])\\\\d{6}\"]]],\"883\":[\"883\",0,\"(?:210|370\\\\d\\\\d)\\\\d{7}|51\\\\d{7}(?:\\\\d{3})?\",[9,10,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"510\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"51[13]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[35]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"(?:210|(?:370[1-9]|51[013]0)\\\\d)\\\\d{7}|5100\\\\d{5}\"]]],\"888\":[\"888\",0,\"\\\\d{11}\",[11],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\"]],0,0,0,0,0,0,[0,0,0,0,0,0,[\"\\\\d{11}\"]]],\"979\":[\"979\",0,\"[1359]\\\\d{8}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1359]\"]]],0,0,0,0,0,0,[0,0,0,[\"[1359]\\\\d{8}\"]]]}}","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\r\n// importing system which is even uncapable of importing \"*.json\" files.\r\nimport metadata from '../../metadata.mobile.json.js'\r\n\r\nexport default function withMetadataArgument(func, _arguments) {\r\n\tvar args = Array.prototype.slice.call(_arguments)\r\n\targs.push(metadata)\r\n\treturn func.apply(this, args)\r\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n// https://stackoverflow.com/a/46971044/970769\n// \"Breaking changes in Typescript 2.1\"\n// \"Extending built-ins like Error, Array, and Map may no longer work.\"\n// \"As a recommendation, you can manually adjust the prototype immediately after any super(...) calls.\"\n// https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\nvar ParseError = /*#__PURE__*/function (_Error) {\n _inherits(ParseError, _Error);\n\n var _super = _createSuper(ParseError);\n\n function ParseError(code) {\n var _this;\n\n _classCallCheck(this, ParseError);\n\n _this = _super.call(this, code); // Set the prototype explicitly.\n // Any subclass of FooError will have to manually set the prototype as well.\n\n Object.setPrototypeOf(_assertThisInitialized(_this), ParseError.prototype);\n _this.name = _this.constructor.name;\n return _this;\n }\n\n return _createClass(ParseError);\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nexport { ParseError as default };\n//# sourceMappingURL=ParseError.js.map","// The minimum length of the national significant number.\nexport var MIN_LENGTH_FOR_NSN = 2; // The ITU says the maximum length should be 15,\n// but one can find longer numbers in Germany.\n\nexport var MAX_LENGTH_FOR_NSN = 17; // The maximum length of the country calling code.\n\nexport var MAX_LENGTH_COUNTRY_CODE = 3; // Digits accepted in phone numbers\n// (ascii, fullwidth, arabic-indic, and eastern arabic digits).\n\nexport var VALID_DIGITS = \"0-9\\uFF10-\\uFF19\\u0660-\\u0669\\u06F0-\\u06F9\"; // `DASHES` will be right after the opening square bracket of the \"character class\"\n\nvar DASHES = \"-\\u2010-\\u2015\\u2212\\u30FC\\uFF0D\";\nvar SLASHES = \"\\uFF0F/\";\nvar DOTS = \"\\uFF0E.\";\nexport var WHITESPACE = \" \\xA0\\xAD\\u200B\\u2060\\u3000\";\nvar BRACKETS = \"()\\uFF08\\uFF09\\uFF3B\\uFF3D\\\\[\\\\]\"; // export const OPENING_BRACKETS = '(\\uFF08\\uFF3B\\\\\\['\n\nvar TILDES = \"~\\u2053\\u223C\\uFF5E\"; // Regular expression of acceptable punctuation found in phone numbers. This\n// excludes punctuation found as a leading character only. This consists of dash\n// characters, white space characters, full stops, slashes, square brackets,\n// parentheses and tildes. Full-width variants are also present.\n\nexport var VALID_PUNCTUATION = \"\".concat(DASHES).concat(SLASHES).concat(DOTS).concat(WHITESPACE).concat(BRACKETS).concat(TILDES);\nexport var PLUS_CHARS = \"+\\uFF0B\"; // const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+')\n//# sourceMappingURL=constants.js.map","// Copy-pasted from:\n// https://github.com/substack/semver-compare/blob/master/index.js\n//\n// Inlining this function because some users reported issues with\n// importing from `semver-compare` in a browser with ES6 \"native\" modules.\n//\n// Fixes `semver-compare` not being able to compare versions with alpha/beta/etc \"tags\".\n// https://github.com/catamphetamine/libphonenumber-js/issues/381\nexport default function (a, b) {\n a = a.split('-');\n b = b.split('-');\n var pa = a[0].split('.');\n var pb = b[0].split('.');\n\n for (var i = 0; i < 3; i++) {\n var na = Number(pa[i]);\n var nb = Number(pb[i]);\n if (na > nb) return 1;\n if (nb > na) return -1;\n if (!isNaN(na) && isNaN(nb)) return 1;\n if (isNaN(na) && !isNaN(nb)) return -1;\n }\n\n if (a[1] && b[1]) {\n return a[1] > b[1] ? 1 : a[1] < b[1] ? -1 : 0;\n }\n\n return !a[1] && b[1] ? 1 : a[1] && !b[1] ? -1 : 0;\n}\n//# sourceMappingURL=semver-compare.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport compare from './tools/semver-compare.js'; // Added \"possibleLengths\" and renamed\n// \"country_phone_code_to_countries\" to \"country_calling_codes\".\n\nvar V2 = '1.0.18'; // Added \"idd_prefix\" and \"default_idd_prefix\".\n\nvar V3 = '1.2.0'; // Moved `001` country code to \"nonGeographic\" section of metadata.\n\nvar V4 = '1.7.35';\nvar DEFAULT_EXT_PREFIX = ' ext. ';\nvar CALLING_CODE_REG_EXP = /^\\d+$/;\n/**\r\n * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md\r\n */\n\nvar Metadata = /*#__PURE__*/function () {\n function Metadata(metadata) {\n _classCallCheck(this, Metadata);\n\n validateMetadata(metadata);\n this.metadata = metadata;\n setVersion.call(this, metadata);\n }\n\n _createClass(Metadata, [{\n key: \"getCountries\",\n value: function getCountries() {\n return Object.keys(this.metadata.countries).filter(function (_) {\n return _ !== '001';\n });\n }\n }, {\n key: \"getCountryMetadata\",\n value: function getCountryMetadata(countryCode) {\n return this.metadata.countries[countryCode];\n }\n }, {\n key: \"nonGeographic\",\n value: function nonGeographic() {\n if (this.v1 || this.v2 || this.v3) return; // `nonGeographical` was a typo.\n // It's present in metadata generated from `1.7.35` to `1.7.37`.\n // The test case could be found by searching for \"nonGeographical\".\n\n return this.metadata.nonGeographic || this.metadata.nonGeographical;\n }\n }, {\n key: \"hasCountry\",\n value: function hasCountry(country) {\n return this.getCountryMetadata(country) !== undefined;\n }\n }, {\n key: \"hasCallingCode\",\n value: function hasCallingCode(callingCode) {\n if (this.getCountryCodesForCallingCode(callingCode)) {\n return true;\n }\n\n if (this.nonGeographic()) {\n if (this.nonGeographic()[callingCode]) {\n return true;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return true;\n }\n }\n }\n }, {\n key: \"isNonGeographicCallingCode\",\n value: function isNonGeographicCallingCode(callingCode) {\n if (this.nonGeographic()) {\n return this.nonGeographic()[callingCode] ? true : false;\n } else {\n return this.getCountryCodesForCallingCode(callingCode) ? false : true;\n }\n } // Deprecated.\n\n }, {\n key: \"country\",\n value: function country(countryCode) {\n return this.selectNumberingPlan(countryCode);\n }\n }, {\n key: \"selectNumberingPlan\",\n value: function selectNumberingPlan(countryCode, callingCode) {\n // Supports just passing `callingCode` as the first argument.\n if (countryCode && CALLING_CODE_REG_EXP.test(countryCode)) {\n callingCode = countryCode;\n countryCode = null;\n }\n\n if (countryCode && countryCode !== '001') {\n if (!this.hasCountry(countryCode)) {\n throw new Error(\"Unknown country: \".concat(countryCode));\n }\n\n this.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this);\n } else if (callingCode) {\n if (!this.hasCallingCode(callingCode)) {\n throw new Error(\"Unknown calling code: \".concat(callingCode));\n }\n\n this.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this);\n } else {\n this.numberingPlan = undefined;\n }\n\n return this;\n }\n }, {\n key: \"getCountryCodesForCallingCode\",\n value: function getCountryCodesForCallingCode(callingCode) {\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes) {\n // Metadata before V4 included \"non-geographic entity\" calling codes\n // inside `country_calling_codes` (for example, `\"881\":[\"001\"]`).\n // Now the semantics of `country_calling_codes` has changed:\n // it's specifically for \"countries\" now.\n // Older versions of custom metadata will simply skip parsing\n // \"non-geographic entity\" phone numbers with new versions\n // of this library: it's not considered a bug,\n // because such numbers are extremely rare,\n // and developers extremely rarely use custom metadata.\n if (countryCodes.length === 1 && countryCodes[0].length === 3) {\n return;\n }\n\n return countryCodes;\n }\n }\n }, {\n key: \"getCountryCodeForCallingCode\",\n value: function getCountryCodeForCallingCode(callingCode) {\n var countryCodes = this.getCountryCodesForCallingCode(callingCode);\n\n if (countryCodes) {\n return countryCodes[0];\n }\n }\n }, {\n key: \"getNumberingPlanMetadata\",\n value: function getNumberingPlanMetadata(callingCode) {\n var countryCode = this.getCountryCodeForCallingCode(callingCode);\n\n if (countryCode) {\n return this.getCountryMetadata(countryCode);\n }\n\n if (this.nonGeographic()) {\n var metadata = this.nonGeographic()[callingCode];\n\n if (metadata) {\n return metadata;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n // In that metadata, there was no concept of \"non-geographic\" metadata\n // so metadata for `001` country code was stored along with other countries.\n // The test case can be found by searching for:\n // \"should work around `nonGeographic` metadata not existing\".\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return this.metadata.countries['001'];\n }\n }\n } // Deprecated.\n\n }, {\n key: \"countryCallingCode\",\n value: function countryCallingCode() {\n return this.numberingPlan.callingCode();\n } // Deprecated.\n\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n return this.numberingPlan.IDDPrefix();\n } // Deprecated.\n\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n return this.numberingPlan.defaultIDDPrefix();\n } // Deprecated.\n\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n return this.numberingPlan.nationalNumberPattern();\n } // Deprecated.\n\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n return this.numberingPlan.possibleLengths();\n } // Deprecated.\n\n }, {\n key: \"formats\",\n value: function formats() {\n return this.numberingPlan.formats();\n } // Deprecated.\n\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n return this.numberingPlan.nationalPrefixForParsing();\n } // Deprecated.\n\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.numberingPlan.nationalPrefixTransformRule();\n } // Deprecated.\n\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.numberingPlan.leadingDigits();\n } // Deprecated.\n\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n return this.numberingPlan.hasTypes();\n } // Deprecated.\n\n }, {\n key: \"type\",\n value: function type(_type) {\n return this.numberingPlan.type(_type);\n } // Deprecated.\n\n }, {\n key: \"ext\",\n value: function ext() {\n return this.numberingPlan.ext();\n }\n }, {\n key: \"countryCallingCodes\",\n value: function countryCallingCodes() {\n if (this.v1) return this.metadata.country_phone_code_to_countries;\n return this.metadata.country_calling_codes;\n } // Deprecated.\n\n }, {\n key: \"chooseCountryByCountryCallingCode\",\n value: function chooseCountryByCountryCallingCode(callingCode) {\n return this.selectNumberingPlan(callingCode);\n }\n }, {\n key: \"hasSelectedNumberingPlan\",\n value: function hasSelectedNumberingPlan() {\n return this.numberingPlan !== undefined;\n }\n }]);\n\n return Metadata;\n}();\n\nexport { Metadata as default };\n\nvar NumberingPlan = /*#__PURE__*/function () {\n function NumberingPlan(metadata, globalMetadataObject) {\n _classCallCheck(this, NumberingPlan);\n\n this.globalMetadataObject = globalMetadataObject;\n this.metadata = metadata;\n setVersion.call(this, globalMetadataObject.metadata);\n }\n\n _createClass(NumberingPlan, [{\n key: \"callingCode\",\n value: function callingCode() {\n return this.metadata[0];\n } // Formatting information for regions which share\n // a country calling code is contained by only one region\n // for performance reasons. For example, for NANPA region\n // (\"North American Numbering Plan Administration\",\n // which includes USA, Canada, Cayman Islands, Bahamas, etc)\n // it will be contained in the metadata for `US`.\n\n }, {\n key: \"getDefaultCountryMetadataForRegion\",\n value: function getDefaultCountryMetadataForRegion() {\n return this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode());\n } // Is always present.\n\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[1];\n } // Is only present when a country supports multiple IDD prefixes.\n\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[12];\n }\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n if (this.v1 || this.v2) return this.metadata[1];\n return this.metadata[2];\n } // \"possible length\" data is always present in Google's metadata.\n\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.v1) return;\n return this.metadata[this.v2 ? 2 : 3];\n }\n }, {\n key: \"_getFormats\",\n value: function _getFormats(metadata) {\n return metadata[this.v1 ? 2 : this.v2 ? 3 : 4];\n } // For countries of the same region (e.g. NANPA)\n // formats are all stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"formats\",\n value: function formats() {\n var _this = this;\n\n var formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || [];\n return formats.map(function (_) {\n return new Format(_, _this);\n });\n }\n }, {\n key: \"nationalPrefix\",\n value: function nationalPrefix() {\n return this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5];\n }\n }, {\n key: \"_getNationalPrefixFormattingRule\",\n value: function _getNationalPrefixFormattingRule(metadata) {\n return metadata[this.v1 ? 4 : this.v2 ? 5 : 6];\n } // For countries of the same region (e.g. NANPA)\n // national prefix formatting rule is stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"_nationalPrefixForParsing\",\n value: function _nationalPrefixForParsing() {\n return this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7];\n }\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n // If `national_prefix_for_parsing` is not set explicitly,\n // then infer it from `national_prefix` (if any)\n return this._nationalPrefixForParsing() || this.nationalPrefix();\n }\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8];\n }\n }, {\n key: \"_getNationalPrefixIsOptionalWhenFormatting\",\n value: function _getNationalPrefixIsOptionalWhenFormatting() {\n return !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9];\n } // For countries of the same region (e.g. NANPA)\n // \"national prefix is optional when formatting\" flag is\n // stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) || this._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10];\n }\n }, {\n key: \"types\",\n value: function types() {\n return this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11];\n }\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n // Versions 1.2.0 - 1.2.4: can be `[]`.\n\n /* istanbul ignore next */\n if (this.types() && this.types().length === 0) {\n return false;\n } // Versions <= 1.2.4: can be `undefined`.\n // Version >= 1.2.5: can be `0`.\n\n\n return !!this.types();\n }\n }, {\n key: \"type\",\n value: function type(_type2) {\n if (this.hasTypes() && getType(this.types(), _type2)) {\n return new Type(getType(this.types(), _type2), this);\n }\n }\n }, {\n key: \"ext\",\n value: function ext() {\n if (this.v1 || this.v2) return DEFAULT_EXT_PREFIX;\n return this.metadata[13] || DEFAULT_EXT_PREFIX;\n }\n }]);\n\n return NumberingPlan;\n}();\n\nvar Format = /*#__PURE__*/function () {\n function Format(format, metadata) {\n _classCallCheck(this, Format);\n\n this._format = format;\n this.metadata = metadata;\n }\n\n _createClass(Format, [{\n key: \"pattern\",\n value: function pattern() {\n return this._format[0];\n }\n }, {\n key: \"format\",\n value: function format() {\n return this._format[1];\n }\n }, {\n key: \"leadingDigitsPatterns\",\n value: function leadingDigitsPatterns() {\n return this._format[2] || [];\n }\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._format[3] || this.metadata.nationalPrefixFormattingRule();\n }\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n }\n }, {\n key: \"nationalPrefixIsMandatoryWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsMandatoryWhenFormattingInNationalFormat() {\n // National prefix is omitted if there's no national prefix formatting rule\n // set for this country, or when the national prefix formatting rule\n // contains no national prefix itself, or when this rule is set but\n // national prefix is optional for this phone number format\n // (and it is not enforced explicitly)\n return this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n } // Checks whether national prefix formatting rule contains national prefix.\n\n }, {\n key: \"usesNationalPrefix\",\n value: function usesNationalPrefix() {\n return this.nationalPrefixFormattingRule() && // Check that national prefix formatting rule is not a \"dummy\" one.\n !FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule()) // In compressed metadata, `this.nationalPrefixFormattingRule()` is `0`\n // when `national_prefix_formatting_rule` is not present.\n // So, `true` or `false` are returned explicitly here, so that\n // `0` number isn't returned.\n ? true : false;\n }\n }, {\n key: \"internationalFormat\",\n value: function internationalFormat() {\n return this._format[5] || this.format();\n }\n }]);\n\n return Format;\n}();\n/**\r\n * A pattern that is used to determine if the national prefix formatting rule\r\n * has the first group only, i.e., does not start with the national prefix.\r\n * Note that the pattern explicitly allows for unbalanced parentheses.\r\n */\n\n\nvar FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\\(?\\$1\\)?$/;\n\nvar Type = /*#__PURE__*/function () {\n function Type(type, metadata) {\n _classCallCheck(this, Type);\n\n this.type = type;\n this.metadata = metadata;\n }\n\n _createClass(Type, [{\n key: \"pattern\",\n value: function pattern() {\n if (this.metadata.v1) return this.type;\n return this.type[0];\n }\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.metadata.v1) return;\n return this.type[1] || this.metadata.possibleLengths();\n }\n }]);\n\n return Type;\n}();\n\nfunction getType(types, type) {\n switch (type) {\n case 'FIXED_LINE':\n return types[0];\n\n case 'MOBILE':\n return types[1];\n\n case 'TOLL_FREE':\n return types[2];\n\n case 'PREMIUM_RATE':\n return types[3];\n\n case 'PERSONAL_NUMBER':\n return types[4];\n\n case 'VOICEMAIL':\n return types[5];\n\n case 'UAN':\n return types[6];\n\n case 'PAGER':\n return types[7];\n\n case 'VOIP':\n return types[8];\n\n case 'SHARED_COST':\n return types[9];\n }\n}\n\nexport function validateMetadata(metadata) {\n if (!metadata) {\n throw new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.');\n } // `country_phone_code_to_countries` was renamed to\n // `country_calling_codes` in `1.0.18`.\n\n\n if (!is_object(metadata) || !is_object(metadata.countries)) {\n throw new Error(\"[libphonenumber-js] `metadata` argument was passed but it's not a valid metadata. Must be an object having `.countries` child object property. Got \".concat(is_object(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + type_of(metadata) + ': ' + metadata, \".\"));\n }\n} // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\nvar is_object = function is_object(_) {\n return _typeof(_) === 'object';\n}; // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\n\nvar type_of = function type_of(_) {\n return _typeof(_);\n};\n/**\r\n * Returns extension prefix for a country.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string?}\r\n * @example\r\n * // Returns \" ext. \"\r\n * getExtPrefix(\"US\")\r\n */\n\n\nexport function getExtPrefix(country, metadata) {\n metadata = new Metadata(metadata);\n\n if (metadata.hasCountry(country)) {\n return metadata.country(country).ext();\n }\n\n return DEFAULT_EXT_PREFIX;\n}\n/**\r\n * Returns \"country calling code\" for a country.\r\n * Throws an error if the country doesn't exist or isn't supported by this library.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string}\r\n * @example\r\n * // Returns \"44\"\r\n * getCountryCallingCode(\"GB\")\r\n */\n\nexport function getCountryCallingCode(country, metadata) {\n metadata = new Metadata(metadata);\n\n if (metadata.hasCountry(country)) {\n return metadata.country(country).countryCallingCode();\n }\n\n throw new Error(\"Unknown country: \".concat(country));\n}\nexport function isSupportedCountry(country, metadata) {\n // metadata = new Metadata(metadata)\n // return metadata.hasCountry(country)\n return metadata.countries[country] !== undefined;\n}\n\nfunction setVersion(metadata) {\n var version = metadata.version;\n\n if (typeof version === 'number') {\n this.v1 = version === 1;\n this.v2 = version === 2;\n this.v3 = version === 3;\n this.v4 = version === 4;\n } else {\n if (!version) {\n this.v1 = true;\n } else if (compare(version, V3) === -1) {\n this.v2 = true;\n } else if (compare(version, V4) === -1) {\n this.v3 = true;\n } else {\n this.v4 = true;\n }\n }\n} // const ISO_COUNTRY_CODE = /^[A-Z]{2}$/\n// function isCountryCode(countryCode) {\n// \treturn ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode)\n// }\n//# sourceMappingURL=metadata.js.map","import { VALID_DIGITS } from '../../constants.js'; // The RFC 3966 format for extensions.\n\nvar RFC3966_EXTN_PREFIX = ';ext=';\n/**\r\n * Helper method for constructing regular expressions for parsing. Creates\r\n * an expression that captures up to max_length digits.\r\n * @return {string} RegEx pattern to capture extension digits.\r\n */\n\nvar getExtensionDigitsPattern = function getExtensionDigitsPattern(maxLength) {\n return \"([\".concat(VALID_DIGITS, \"]{1,\").concat(maxLength, \"})\");\n};\n/**\r\n * Helper initialiser method to create the regular-expression pattern to match\r\n * extensions.\r\n * Copy-pasted from Google's `libphonenumber`:\r\n * https://github.com/google/libphonenumber/blob/55b2646ec9393f4d3d6661b9c82ef9e258e8b829/javascript/i18n/phonenumbers/phonenumberutil.js#L759-L766\r\n * @return {string} RegEx pattern to capture extensions.\r\n */\n\n\nexport default function createExtensionPattern(purpose) {\n // We cap the maximum length of an extension based on the ambiguity of the way\n // the extension is prefixed. As per ITU, the officially allowed length for\n // extensions is actually 40, but we don't support this since we haven't seen real\n // examples and this introduces many false interpretations as the extension labels\n // are not standardized.\n\n /** @type {string} */\n var extLimitAfterExplicitLabel = '20';\n /** @type {string} */\n\n var extLimitAfterLikelyLabel = '15';\n /** @type {string} */\n\n var extLimitAfterAmbiguousChar = '9';\n /** @type {string} */\n\n var extLimitWhenNotSure = '6';\n /** @type {string} */\n\n var possibleSeparatorsBetweenNumberAndExtLabel = \"[ \\xA0\\\\t,]*\"; // Optional full stop (.) or colon, followed by zero or more spaces/tabs/commas.\n\n /** @type {string} */\n\n var possibleCharsAfterExtLabel = \"[:\\\\.\\uFF0E]?[ \\xA0\\\\t,-]*\";\n /** @type {string} */\n\n var optionalExtnSuffix = \"#?\"; // Here the extension is called out in more explicit way, i.e mentioning it obvious\n // patterns like \"ext.\".\n\n /** @type {string} */\n\n var explicitExtLabels = \"(?:e?xt(?:ensi(?:o\\u0301?|\\xF3))?n?|\\uFF45?\\uFF58\\uFF54\\uFF4E?|\\u0434\\u043E\\u0431|anexo)\"; // One-character symbols that can be used to indicate an extension, and less\n // commonly used or more ambiguous extension labels.\n\n /** @type {string} */\n\n var ambiguousExtLabels = \"(?:[x\\uFF58#\\uFF03~\\uFF5E]|int|\\uFF49\\uFF4E\\uFF54)\"; // When extension is not separated clearly.\n\n /** @type {string} */\n\n var ambiguousSeparator = \"[- ]+\"; // This is the same as possibleSeparatorsBetweenNumberAndExtLabel, but not matching\n // comma as extension label may have it.\n\n /** @type {string} */\n\n var possibleSeparatorsNumberExtLabelNoComma = \"[ \\xA0\\\\t]*\"; // \",,\" is commonly used for auto dialling the extension when connected. First\n // comma is matched through possibleSeparatorsBetweenNumberAndExtLabel, so we do\n // not repeat it here. Semi-colon works in Iphone and Android also to pop up a\n // button with the extension number following.\n\n /** @type {string} */\n\n var autoDiallingAndExtLabelsFound = \"(?:,{2}|;)\";\n /** @type {string} */\n\n var rfcExtn = RFC3966_EXTN_PREFIX + getExtensionDigitsPattern(extLimitAfterExplicitLabel);\n /** @type {string} */\n\n var explicitExtn = possibleSeparatorsBetweenNumberAndExtLabel + explicitExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterExplicitLabel) + optionalExtnSuffix;\n /** @type {string} */\n\n var ambiguousExtn = possibleSeparatorsBetweenNumberAndExtLabel + ambiguousExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix;\n /** @type {string} */\n\n var americanStyleExtnWithSuffix = ambiguousSeparator + getExtensionDigitsPattern(extLimitWhenNotSure) + \"#\";\n /** @type {string} */\n\n var autoDiallingExtn = possibleSeparatorsNumberExtLabelNoComma + autoDiallingAndExtLabelsFound + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterLikelyLabel) + optionalExtnSuffix;\n /** @type {string} */\n\n var onlyCommasExtn = possibleSeparatorsNumberExtLabelNoComma + \"(?:,)+\" + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix; // The first regular expression covers RFC 3966 format, where the extension is added\n // using \";ext=\". The second more generic where extension is mentioned with explicit\n // labels like \"ext:\". In both the above cases we allow more numbers in extension than\n // any other extension labels. The third one captures when single character extension\n // labels or less commonly used labels are used. In such cases we capture fewer\n // extension digits in order to reduce the chance of falsely interpreting two\n // numbers beside each other as a number + extension. The fourth one covers the\n // special case of American numbers where the extension is written with a hash\n // at the end, such as \"- 503#\". The fifth one is exclusively for extension\n // autodialling formats which are used when dialling and in this case we accept longer\n // extensions. The last one is more liberal on the number of commas that acts as\n // extension labels, so we have a strict cap on the number of digits in such extensions.\n\n return rfcExtn + \"|\" + explicitExtn + \"|\" + ambiguousExtn + \"|\" + americanStyleExtnWithSuffix + \"|\" + autoDiallingExtn + \"|\" + onlyCommasExtn;\n}\n//# sourceMappingURL=createExtensionPattern.js.map","import { MIN_LENGTH_FOR_NSN, VALID_DIGITS, VALID_PUNCTUATION, PLUS_CHARS } from '../constants.js';\nimport createExtensionPattern from './extension/createExtensionPattern.js'; // Regular expression of viable phone numbers. This is location independent.\n// Checks we have at least three leading digits, and only valid punctuation,\n// alpha characters and digits in the phone number. Does not include extension\n// data. The symbol 'x' is allowed here as valid punctuation since it is often\n// used as a placeholder for carrier codes, for example in Brazilian phone\n// numbers. We also allow multiple '+' characters at the start.\n//\n// Corresponds to the following:\n// [digits]{minLengthNsn}|\n// plus_sign*\n// (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])*\n//\n// The first reg-ex is to allow short numbers (two digits long) to be parsed if\n// they are entered as \"15\" etc, but only if there is no punctuation in them.\n// The second expression restricts the number of digits to three or more, but\n// then allows them to be in international form, and to have alpha-characters\n// and punctuation. We split up the two reg-exes here and combine them when\n// creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it\n// with ^ and append $ to each branch.\n//\n// \"Note VALID_PUNCTUATION starts with a -,\n// so must be the first in the range\" (c) Google devs.\n// (wtf did they mean by saying that; probably nothing)\n//\n\nvar MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + VALID_DIGITS + ']{' + MIN_LENGTH_FOR_NSN + '}'; //\n// And this is the second reg-exp:\n// (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp)\n//\n\nexport var VALID_PHONE_NUMBER = '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){3,}' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*'; // This regular expression isn't present in Google's `libphonenumber`\n// and is only used to determine whether the phone number being input\n// is too short for it to even consider it a \"valid\" number.\n// This is just a way to differentiate between a really invalid phone\n// number like \"abcde\" and a valid phone number that a user has just\n// started inputting, like \"+1\" or \"1\": both these cases would be\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\n// library can provide a more detailed error message — whether it's\n// really \"not a number\", or is it just a start of a valid phone number.\n\nvar VALID_PHONE_NUMBER_START_REG_EXP = new RegExp('^' + '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){1,2}' + '$', 'i');\nexport var VALID_PHONE_NUMBER_WITH_EXTENSION = VALID_PHONE_NUMBER + // Phone number extensions\n'(?:' + createExtensionPattern() + ')?'; // The combined regular expression for valid phone numbers:\n//\n\nvar VALID_PHONE_NUMBER_PATTERN = new RegExp( // Either a short two-digit-only phone number\n'^' + MIN_LENGTH_PHONE_NUMBER_PATTERN + '$' + '|' + // Or a longer fully parsed phone number (min 3 characters)\n'^' + VALID_PHONE_NUMBER_WITH_EXTENSION + '$', 'i'); // Checks to see if the string of characters could possibly be a phone number at\n// all. At the moment, checks to see that the string begins with at least 2\n// digits, ignoring any punctuation commonly found in phone numbers. This method\n// does not require the number to be normalized in advance - but does assume\n// that leading non-number symbols have been removed, such as by the method\n// `extract_possible_number`.\n//\n\nexport default function isViablePhoneNumber(number) {\n return number.length >= MIN_LENGTH_FOR_NSN && VALID_PHONE_NUMBER_PATTERN.test(number);\n} // This is just a way to differentiate between a really invalid phone\n// number like \"abcde\" and a valid phone number that a user has just\n// started inputting, like \"+1\" or \"1\": both these cases would be\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\n// library can provide a more detailed error message — whether it's\n// really \"not a number\", or is it just a start of a valid phone number.\n\nexport function isViablePhoneNumberStart(number) {\n return VALID_PHONE_NUMBER_START_REG_EXP.test(number);\n}\n//# sourceMappingURL=isViablePhoneNumber.js.map","import createExtensionPattern from './createExtensionPattern.js'; // Regexp of all known extension prefixes used by different regions followed by\n// 1 or more valid digits, for use when parsing.\n\nvar EXTN_PATTERN = new RegExp('(?:' + createExtensionPattern() + ')$', 'i'); // Strips any extension (as in, the part of the number dialled after the call is\n// connected, usually indicated with extn, ext, x or similar) from the end of\n// the number, and returns it.\n\nexport default function extractExtension(number) {\n var start = number.search(EXTN_PATTERN);\n\n if (start < 0) {\n return {};\n } // If we find a potential extension, and the number preceding this is a viable\n // number, we assume it is an extension.\n\n\n var numberWithoutExtension = number.slice(0, start);\n var matches = number.match(EXTN_PATTERN);\n var i = 1;\n\n while (i < matches.length) {\n if (matches[i]) {\n return {\n number: numberWithoutExtension,\n ext: matches[i]\n };\n }\n\n i++;\n }\n}\n//# sourceMappingURL=extractExtension.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n// These mappings map a character (key) to a specific digit that should\n// replace it for normalization purposes. Non-European digits that\n// may be used in phone numbers are mapped to a European equivalent.\n//\n// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\n//\nexport var DIGITS = {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n \"\\uFF10\": '0',\n // Fullwidth digit 0\n \"\\uFF11\": '1',\n // Fullwidth digit 1\n \"\\uFF12\": '2',\n // Fullwidth digit 2\n \"\\uFF13\": '3',\n // Fullwidth digit 3\n \"\\uFF14\": '4',\n // Fullwidth digit 4\n \"\\uFF15\": '5',\n // Fullwidth digit 5\n \"\\uFF16\": '6',\n // Fullwidth digit 6\n \"\\uFF17\": '7',\n // Fullwidth digit 7\n \"\\uFF18\": '8',\n // Fullwidth digit 8\n \"\\uFF19\": '9',\n // Fullwidth digit 9\n \"\\u0660\": '0',\n // Arabic-indic digit 0\n \"\\u0661\": '1',\n // Arabic-indic digit 1\n \"\\u0662\": '2',\n // Arabic-indic digit 2\n \"\\u0663\": '3',\n // Arabic-indic digit 3\n \"\\u0664\": '4',\n // Arabic-indic digit 4\n \"\\u0665\": '5',\n // Arabic-indic digit 5\n \"\\u0666\": '6',\n // Arabic-indic digit 6\n \"\\u0667\": '7',\n // Arabic-indic digit 7\n \"\\u0668\": '8',\n // Arabic-indic digit 8\n \"\\u0669\": '9',\n // Arabic-indic digit 9\n \"\\u06F0\": '0',\n // Eastern-Arabic digit 0\n \"\\u06F1\": '1',\n // Eastern-Arabic digit 1\n \"\\u06F2\": '2',\n // Eastern-Arabic digit 2\n \"\\u06F3\": '3',\n // Eastern-Arabic digit 3\n \"\\u06F4\": '4',\n // Eastern-Arabic digit 4\n \"\\u06F5\": '5',\n // Eastern-Arabic digit 5\n \"\\u06F6\": '6',\n // Eastern-Arabic digit 6\n \"\\u06F7\": '7',\n // Eastern-Arabic digit 7\n \"\\u06F8\": '8',\n // Eastern-Arabic digit 8\n \"\\u06F9\": '9' // Eastern-Arabic digit 9\n\n};\nexport function parseDigit(character) {\n return DIGITS[character];\n}\n/**\r\n * Parses phone number digits from a string.\r\n * Drops all punctuation leaving only digits.\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * parseDigits('8 (800) 555')\r\n * // Outputs '8800555'.\r\n * ```\r\n */\n\nexport default function parseDigits(string) {\n var result = ''; // Using `.split('')` here instead of normal `for ... of`\n // because the importing application doesn't neccessarily include an ES6 polyfill.\n // The `.split('')` approach discards \"exotic\" UTF-8 characters\n // (the ones consisting of four bytes) but digits\n // (including non-European ones) don't fall into that range\n // so such \"exotic\" characters would be discarded anyway.\n\n for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) {\n var character = _step.value;\n var digit = parseDigit(character);\n\n if (digit) {\n result += digit;\n }\n }\n\n return result;\n}\n//# sourceMappingURL=parseDigits.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { parseDigit } from './helpers/parseDigits.js';\n/**\r\n * Parses phone number characters from a string.\r\n * Drops all punctuation leaving only digits and the leading `+` sign (if any).\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * // Outputs '8800555'.\r\n * parseIncompletePhoneNumber('8 (800) 555')\r\n * // Outputs '+7800555'.\r\n * parseIncompletePhoneNumber('+7 800 555')\r\n * ```\r\n */\n\nexport default function parseIncompletePhoneNumber(string) {\n var result = ''; // Using `.split('')` here instead of normal `for ... of`\n // because the importing application doesn't neccessarily include an ES6 polyfill.\n // The `.split('')` approach discards \"exotic\" UTF-8 characters\n // (the ones consisting of four bytes) but digits\n // (including non-European ones) don't fall into that range\n // so such \"exotic\" characters would be discarded anyway.\n\n for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) {\n var character = _step.value;\n result += parsePhoneNumberCharacter(character, result) || '';\n }\n\n return result;\n}\n/**\r\n * Parses next character while parsing phone number digits (including a `+`)\r\n * from text: discards everything except `+` and digits, and `+` is only allowed\r\n * at the start of a phone number.\r\n * For example, is used in `react-phone-number-input` where it uses\r\n * [`input-format`](https://gitlab.com/catamphetamine/input-format).\r\n * @param {string} character - Yet another character from raw input string.\r\n * @param {string?} prevParsedCharacters - Previous parsed characters.\r\n * @param {object} meta - Optional custom use-case-specific metadata.\r\n * @return {string?} The parsed character.\r\n */\n\nexport function parsePhoneNumberCharacter(character, prevParsedCharacters) {\n // Only allow a leading `+`.\n if (character === '+') {\n // If this `+` is not the first parsed character\n // then discard it.\n if (prevParsedCharacters) {\n return;\n }\n\n return '+';\n } // Allow digits.\n\n\n return parseDigit(character);\n}\n//# sourceMappingURL=parseIncompletePhoneNumber.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/**\r\n * Merges two arrays.\r\n * @param {*} a\r\n * @param {*} b\r\n * @return {*}\r\n */\nexport default function mergeArrays(a, b) {\n var merged = a.slice();\n\n for (var _iterator = _createForOfIteratorHelperLoose(b), _step; !(_step = _iterator()).done;) {\n var element = _step.value;\n\n if (a.indexOf(element) < 0) {\n merged.push(element);\n }\n }\n\n return merged.sort(function (a, b) {\n return a - b;\n }); // ES6 version, requires Set polyfill.\n // let merged = new Set(a)\n // for (const element of b) {\n // \tmerged.add(i)\n // }\n // return Array.from(merged).sort((a, b) => a - b)\n}\n//# sourceMappingURL=mergeArrays.js.map","import mergeArrays from './mergeArrays.js';\nexport default function checkNumberLength(nationalNumber, metadata) {\n return checkNumberLengthForType(nationalNumber, undefined, metadata);\n} // Checks whether a number is possible for the country based on its length.\n// Should only be called for the \"new\" metadata which has \"possible lengths\".\n\nexport function checkNumberLengthForType(nationalNumber, type, metadata) {\n var type_info = metadata.type(type); // There should always be \"\" set for every type element.\n // This is declared in the XML schema.\n // For size efficiency, where a sub-description (e.g. fixed-line)\n // has the same \"\" as the \"general description\", this is missing,\n // so we fall back to the \"general description\". Where no numbers of the type\n // exist at all, there is one possible length (-1) which is guaranteed\n // not to match the length of any real phone number.\n\n var possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths(); // let local_lengths = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal()\n // Metadata before version `1.0.18` didn't contain `possible_lengths`.\n\n if (!possible_lengths) {\n return 'IS_POSSIBLE';\n }\n\n if (type === 'FIXED_LINE_OR_MOBILE') {\n // No such country in metadata.\n\n /* istanbul ignore next */\n if (!metadata.type('FIXED_LINE')) {\n // The rare case has been encountered where no fixedLine data is available\n // (true for some non-geographic entities), so we just check mobile.\n return checkNumberLengthForType(nationalNumber, 'MOBILE', metadata);\n }\n\n var mobile_type = metadata.type('MOBILE');\n\n if (mobile_type) {\n // Merge the mobile data in if there was any. \"Concat\" creates a new\n // array, it doesn't edit possible_lengths in place, so we don't need a copy.\n // Note that when adding the possible lengths from mobile, we have\n // to again check they aren't empty since if they are this indicates\n // they are the same as the general desc and should be obtained from there.\n possible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths()); // The current list is sorted; we need to merge in the new list and\n // re-sort (duplicates are okay). Sorting isn't so expensive because\n // the lists are very small.\n // if (local_lengths) {\n // \tlocal_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal())\n // } else {\n // \tlocal_lengths = mobile_type.possibleLengthsLocal()\n // }\n }\n } // If the type doesn't exist then return 'INVALID_LENGTH'.\n else if (type && !type_info) {\n return 'INVALID_LENGTH';\n }\n\n var actual_length = nationalNumber.length; // In `libphonenumber-js` all \"local-only\" formats are dropped for simplicity.\n // // This is safe because there is never an overlap beween the possible lengths\n // // and the local-only lengths; this is checked at build time.\n // if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0)\n // {\n // \treturn 'IS_POSSIBLE_LOCAL_ONLY'\n // }\n\n var minimum_length = possible_lengths[0];\n\n if (minimum_length === actual_length) {\n return 'IS_POSSIBLE';\n }\n\n if (minimum_length > actual_length) {\n return 'TOO_SHORT';\n }\n\n if (possible_lengths[possible_lengths.length - 1] < actual_length) {\n return 'TOO_LONG';\n } // We skip the first element since we've already checked it.\n\n\n return possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH';\n}\n//# sourceMappingURL=checkNumberLength.js.map","import Metadata from './metadata.js';\nimport checkNumberLength from './helpers/checkNumberLength.js';\nexport default function isPossiblePhoneNumber(input, options, metadata) {\n /* istanbul ignore if */\n if (options === undefined) {\n options = {};\n }\n\n metadata = new Metadata(metadata);\n\n if (options.v2) {\n if (!input.countryCallingCode) {\n throw new Error('Invalid phone number object passed');\n }\n\n metadata.selectNumberingPlan(input.countryCallingCode);\n } else {\n if (!input.phone) {\n return false;\n }\n\n if (input.country) {\n if (!metadata.hasCountry(input.country)) {\n throw new Error(\"Unknown country: \".concat(input.country));\n }\n\n metadata.country(input.country);\n } else {\n if (!input.countryCallingCode) {\n throw new Error('Invalid phone number object passed');\n }\n\n metadata.selectNumberingPlan(input.countryCallingCode);\n }\n } // Old metadata (< 1.0.18) had no \"possible length\" data.\n\n\n if (metadata.possibleLengths()) {\n return isPossibleNumber(input.phone || input.nationalNumber, metadata);\n } else {\n // There was a bug between `1.7.35` and `1.7.37` where \"possible_lengths\"\n // were missing for \"non-geographical\" numbering plans.\n // Just assume the number is possible in such cases:\n // it's unlikely that anyone generated their custom metadata\n // in that short period of time (one day).\n // This code can be removed in some future major version update.\n if (input.countryCallingCode && metadata.isNonGeographicCallingCode(input.countryCallingCode)) {\n // \"Non-geographic entities\" did't have `possibleLengths`\n // due to a bug in metadata generation process.\n return true;\n } else {\n throw new Error('Missing \"possibleLengths\" in metadata. Perhaps the metadata has been generated before v1.0.18.');\n }\n }\n}\nexport function isPossibleNumber(nationalNumber, metadata) {\n //, isInternational) {\n switch (checkNumberLength(nationalNumber, metadata)) {\n case 'IS_POSSIBLE':\n return true;\n // This library ignores \"local-only\" phone numbers (for simplicity).\n // See the readme for more info on what are \"local-only\" phone numbers.\n // case 'IS_POSSIBLE_LOCAL_ONLY':\n // \treturn !isInternational\n\n default:\n return false;\n }\n}\n//# sourceMappingURL=isPossibleNumber_.js.map","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport isViablePhoneNumber from './isViablePhoneNumber.js'; // https://www.ietf.org/rfc/rfc3966.txt\n\n/**\r\n * @param {string} text - Phone URI (RFC 3966).\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\n\nexport function parseRFC3966(text) {\n var number;\n var ext; // Replace \"tel:\" with \"tel=\" for parsing convenience.\n\n text = text.replace(/^tel:/, 'tel=');\n\n for (var _iterator = _createForOfIteratorHelperLoose(text.split(';')), _step; !(_step = _iterator()).done;) {\n var part = _step.value;\n\n var _part$split = part.split('='),\n _part$split2 = _slicedToArray(_part$split, 2),\n name = _part$split2[0],\n value = _part$split2[1];\n\n switch (name) {\n case 'tel':\n number = value;\n break;\n\n case 'ext':\n ext = value;\n break;\n\n case 'phone-context':\n // Only \"country contexts\" are supported.\n // \"Domain contexts\" are ignored.\n if (value[0] === '+') {\n number = value + number;\n }\n\n break;\n }\n } // If the phone number is not viable, then abort.\n\n\n if (!isViablePhoneNumber(number)) {\n return {};\n }\n\n var result = {\n number: number\n };\n\n if (ext) {\n result.ext = ext;\n }\n\n return result;\n}\n/**\r\n * @param {object} - `{ ?number, ?extension }`.\r\n * @return {string} Phone URI (RFC 3966).\r\n */\n\nexport function formatRFC3966(_ref) {\n var number = _ref.number,\n ext = _ref.ext;\n\n if (!number) {\n return '';\n }\n\n if (number[0] !== '+') {\n throw new Error(\"\\\"formatRFC3966()\\\" expects \\\"number\\\" to be in E.164 format.\");\n }\n\n return \"tel:\".concat(number).concat(ext ? ';ext=' + ext : '');\n}\n//# sourceMappingURL=RFC3966.js.map","/**\r\n * Checks whether the entire input sequence can be matched\r\n * against the regular expression.\r\n * @return {boolean}\r\n */\nexport default function matchesEntirely(text, regular_expression) {\n // If assigning the `''` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n text = text || '';\n return new RegExp('^(?:' + regular_expression + ')$').test(text);\n}\n//# sourceMappingURL=matchesEntirely.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport Metadata from '../metadata.js';\nimport matchesEntirely from './matchesEntirely.js';\nvar NON_FIXED_LINE_PHONE_TYPES = ['MOBILE', 'PREMIUM_RATE', 'TOLL_FREE', 'SHARED_COST', 'VOIP', 'PERSONAL_NUMBER', 'PAGER', 'UAN', 'VOICEMAIL']; // Finds out national phone number type (fixed line, mobile, etc)\n\nexport default function getNumberType(input, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {}; // When `parse()` returned `{}`\n // meaning that the phone number is not a valid one.\n\n if (!input.country) {\n return;\n }\n\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(input.country, input.countryCallingCode);\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // The following is copy-pasted from the original function:\n // https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835\n // Is this national number even valid for this country\n\n if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) {\n return;\n } // Is it fixed line number\n\n\n if (isNumberTypeEqualTo(nationalNumber, 'FIXED_LINE', metadata)) {\n // Because duplicate regular expressions are removed\n // to reduce metadata size, if \"mobile\" pattern is \"\"\n // then it means it was removed due to being a duplicate of the fixed-line pattern.\n //\n if (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') {\n return 'FIXED_LINE_OR_MOBILE';\n } // `MOBILE` type pattern isn't included if it matched `FIXED_LINE` one.\n // For example, for \"US\" country.\n // Old metadata (< `1.0.18`) had a specific \"types\" data structure\n // that happened to be `undefined` for `MOBILE` in that case.\n // Newer metadata (>= `1.0.18`) has another data structure that is\n // not `undefined` for `MOBILE` in that case (it's just an empty array).\n // So this `if` is just for backwards compatibility with old metadata.\n\n\n if (!metadata.type('MOBILE')) {\n return 'FIXED_LINE_OR_MOBILE';\n } // Check if the number happens to qualify as both fixed line and mobile.\n // (no such country in the minimal metadata set)\n\n /* istanbul ignore if */\n\n\n if (isNumberTypeEqualTo(nationalNumber, 'MOBILE', metadata)) {\n return 'FIXED_LINE_OR_MOBILE';\n }\n\n return 'FIXED_LINE';\n }\n\n for (var _iterator = _createForOfIteratorHelperLoose(NON_FIXED_LINE_PHONE_TYPES), _step; !(_step = _iterator()).done;) {\n var type = _step.value;\n\n if (isNumberTypeEqualTo(nationalNumber, type, metadata)) {\n return type;\n }\n }\n}\nexport function isNumberTypeEqualTo(nationalNumber, type, metadata) {\n type = metadata.type(type);\n\n if (!type || !type.pattern()) {\n return false;\n } // Check if any possible number lengths are present;\n // if so, we use them to avoid checking\n // the validation pattern if they don't match.\n // If they are absent, this means they match\n // the general description, which we have\n // already checked before a specific number type.\n\n\n if (type.possibleLengths() && type.possibleLengths().indexOf(nationalNumber.length) < 0) {\n return false;\n }\n\n return matchesEntirely(nationalNumber, type.pattern());\n}\n//# sourceMappingURL=getNumberType.js.map","import Metadata from './metadata.js';\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport getNumberType from './helpers/getNumberType.js';\n/**\r\n * Checks if a given phone number is valid.\r\n *\r\n * If the `number` is a string, it will be parsed to an object,\r\n * but only if it contains only valid phone number characters (including punctuation).\r\n * If the `number` is an object, it is used as is.\r\n *\r\n * The optional `defaultCountry` argument is the default country.\r\n * I.e. it does not restrict to just that country,\r\n * e.g. in those cases where several countries share\r\n * the same phone numbering rules (NANPA, Britain, etc).\r\n * For example, even though the number `07624 369230`\r\n * belongs to the Isle of Man (\"IM\" country code)\r\n * calling `isValidNumber('07624369230', 'GB', metadata)`\r\n * still returns `true` because the country is not restricted to `GB`,\r\n * it's just that `GB` is the default one for the phone numbering rules.\r\n * For restricting the country see `isValidNumberForRegion()`\r\n * though restricting a country might not be a good idea.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n *\r\n * Examples:\r\n *\r\n * ```js\r\n * isValidNumber('+78005553535', metadata)\r\n * isValidNumber('8005553535', 'RU', metadata)\r\n * isValidNumber('88005553535', 'RU', metadata)\r\n * isValidNumber({ phone: '8005553535', country: 'RU' }, metadata)\r\n * ```\r\n */\n\nexport default function isValidNumber(input, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {};\n metadata = new Metadata(metadata); // This is just to support `isValidNumber({})`\n // for cases when `parseNumber()` returns `{}`.\n\n if (!input.country) {\n return false;\n }\n\n metadata.selectNumberingPlan(input.country, input.countryCallingCode); // By default, countries only have type regexps when it's required for\n // distinguishing different countries having the same `countryCallingCode`.\n\n if (metadata.hasTypes()) {\n return getNumberType(input, options, metadata.metadata) !== undefined;\n } // If there are no type regexps for this country in metadata then use\n // `nationalNumberPattern` as a \"better than nothing\" replacement.\n\n\n var national_number = options.v2 ? input.nationalNumber : input.phone;\n return matchesEntirely(national_number, metadata.nationalNumberPattern());\n}\n//# sourceMappingURL=validate_.js.map","import { VALID_PUNCTUATION } from '../constants.js'; // Removes brackets and replaces dashes with spaces.\n//\n// E.g. \"(999) 111-22-33\" -> \"999 111 22 33\"\n//\n// For some reason Google's metadata contains ``s with brackets and dashes.\n// Meanwhile, there's no single opinion about using punctuation in international phone numbers.\n//\n// For example, Google's `` for USA is `+1 213-373-4253`.\n// And here's a quote from WikiPedia's \"North American Numbering Plan\" page:\n// https://en.wikipedia.org/wiki/North_American_Numbering_Plan\n//\n// \"The country calling code for all countries participating in the NANP is 1.\n// In international format, an NANP number should be listed as +1 301 555 01 00,\n// where 301 is an area code (Maryland).\"\n//\n// I personally prefer the international format without any punctuation.\n// For example, brackets are remnants of the old age, meaning that the\n// phone number part in brackets (so called \"area code\") can be omitted\n// if dialing within the same \"area\".\n// And hyphens were clearly introduced for splitting local numbers into memorizable groups.\n// For example, remembering \"5553535\" is difficult but \"555-35-35\" is much simpler.\n// Imagine a man taking a bus from home to work and seeing an ad with a phone number.\n// He has a couple of seconds to memorize that number until it passes by.\n// If it were spaces instead of hyphens the man wouldn't necessarily get it,\n// but with hyphens instead of spaces the grouping is more explicit.\n// I personally think that hyphens introduce visual clutter,\n// so I prefer replacing them with spaces in international numbers.\n// In the modern age all output is done on displays where spaces are clearly distinguishable\n// so hyphens can be safely replaced with spaces without losing any legibility.\n//\n\nexport default function applyInternationalSeparatorStyle(formattedNumber) {\n return formattedNumber.replace(new RegExp(\"[\".concat(VALID_PUNCTUATION, \"]+\"), 'g'), ' ').trim();\n}\n//# sourceMappingURL=applyInternationalSeparatorStyle.js.map","import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle.js'; // This was originally set to $1 but there are some countries for which the\n// first group is not used in the national pattern (e.g. Argentina) so the $1\n// group does not match correctly. Therefore, we use `\\d`, so that the first\n// group actually used in the pattern will be matched.\n\nexport var FIRST_GROUP_PATTERN = /(\\$\\d)/;\nexport default function formatNationalNumberUsingFormat(number, format, _ref) {\n var useInternationalFormat = _ref.useInternationalFormat,\n withNationalPrefix = _ref.withNationalPrefix,\n carrierCode = _ref.carrierCode,\n metadata = _ref.metadata;\n var formattedNumber = number.replace(new RegExp(format.pattern()), useInternationalFormat ? format.internationalFormat() : // This library doesn't use `domestic_carrier_code_formatting_rule`,\n // because that one is only used when formatting phone numbers\n // for dialing from a mobile phone, and this is not a dialing library.\n // carrierCode && format.domesticCarrierCodeFormattingRule()\n // \t// First, replace the $CC in the formatting rule with the desired carrier code.\n // \t// Then, replace the $FG in the formatting rule with the first group\n // \t// and the carrier code combined in the appropriate way.\n // \t? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode))\n // \t: (\n // \t\twithNationalPrefix && format.nationalPrefixFormattingRule()\n // \t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\n // \t\t\t: format.format()\n // \t)\n withNationalPrefix && format.nationalPrefixFormattingRule() ? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()) : format.format());\n\n if (useInternationalFormat) {\n return applyInternationalSeparatorStyle(formattedNumber);\n }\n\n return formattedNumber;\n}\n//# sourceMappingURL=formatNationalNumberUsingFormat.js.map","import Metadata from '../metadata.js';\n/**\r\n * Pattern that makes it easy to distinguish whether a region has a single\r\n * international dialing prefix or not. If a region has a single international\r\n * prefix (e.g. 011 in USA), it will be represented as a string that contains\r\n * a sequence of ASCII digits, and possibly a tilde, which signals waiting for\r\n * the tone. If there are multiple available international prefixes in a\r\n * region, they will be represented as a regex string that always contains one\r\n * or more characters that are not ASCII digits or a tilde.\r\n */\n\nvar SINGLE_IDD_PREFIX_REG_EXP = /^[\\d]+(?:[~\\u2053\\u223C\\uFF5E][\\d]+)?$/; // For regions that have multiple IDD prefixes\n// a preferred IDD prefix is returned.\n\nexport default function getIddPrefix(country, callingCode, metadata) {\n var countryMetadata = new Metadata(metadata);\n countryMetadata.selectNumberingPlan(country, callingCode);\n\n if (countryMetadata.defaultIDDPrefix()) {\n return countryMetadata.defaultIDDPrefix();\n }\n\n if (SINGLE_IDD_PREFIX_REG_EXP.test(countryMetadata.IDDPrefix())) {\n return countryMetadata.IDDPrefix();\n }\n}\n//# sourceMappingURL=getIddPrefix.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js';\nimport Metadata, { getCountryCallingCode } from './metadata.js';\nimport getIddPrefix from './helpers/getIddPrefix.js';\nimport { formatRFC3966 } from './helpers/RFC3966.js';\nvar DEFAULT_OPTIONS = {\n formatExtension: function formatExtension(formattedNumber, extension, metadata) {\n return \"\".concat(formattedNumber).concat(metadata.ext()).concat(extension);\n }\n}; // Formats a phone number\n//\n// Example use cases:\n//\n// ```js\n// formatNumber('8005553535', 'RU', 'INTERNATIONAL')\n// formatNumber('8005553535', 'RU', 'INTERNATIONAL', metadata)\n// formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL')\n// formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL', metadata)\n// formatNumber('+78005553535', 'NATIONAL')\n// formatNumber('+78005553535', 'NATIONAL', metadata)\n// ```\n//\n\nexport default function formatNumber(input, format, options, metadata) {\n // Apply default options.\n if (options) {\n options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);\n } else {\n options = DEFAULT_OPTIONS;\n }\n\n metadata = new Metadata(metadata);\n\n if (input.country && input.country !== '001') {\n // Validate `input.country`.\n if (!metadata.hasCountry(input.country)) {\n throw new Error(\"Unknown country: \".concat(input.country));\n }\n\n metadata.country(input.country);\n } else if (input.countryCallingCode) {\n metadata.selectNumberingPlan(input.countryCallingCode);\n } else return input.phone || '';\n\n var countryCallingCode = metadata.countryCallingCode();\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // This variable should have been declared inside `case`s\n // but Babel has a bug and it says \"duplicate variable declaration\".\n\n var number;\n\n switch (format) {\n case 'NATIONAL':\n // Legacy argument support.\n // (`{ country: ..., phone: '' }`)\n if (!nationalNumber) {\n return '';\n }\n\n number = formatNationalNumber(nationalNumber, input.carrierCode, 'NATIONAL', metadata, options);\n return addExtension(number, input.ext, metadata, options.formatExtension);\n\n case 'INTERNATIONAL':\n // Legacy argument support.\n // (`{ country: ..., phone: '' }`)\n if (!nationalNumber) {\n return \"+\".concat(countryCallingCode);\n }\n\n number = formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata, options);\n number = \"+\".concat(countryCallingCode, \" \").concat(number);\n return addExtension(number, input.ext, metadata, options.formatExtension);\n\n case 'E.164':\n // `E.164` doesn't define \"phone number extensions\".\n return \"+\".concat(countryCallingCode).concat(nationalNumber);\n\n case 'RFC3966':\n return formatRFC3966({\n number: \"+\".concat(countryCallingCode).concat(nationalNumber),\n ext: input.ext\n });\n // For reference, here's Google's IDD formatter:\n // https://github.com/google/libphonenumber/blob/32719cf74e68796788d1ca45abc85dcdc63ba5b9/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L1546\n // Not saying that this IDD formatter replicates it 1:1, but it seems to work.\n // Who would even need to format phone numbers in IDD format anyway?\n\n case 'IDD':\n if (!options.fromCountry) {\n return; // throw new Error('`fromCountry` option not passed for IDD-prefixed formatting.')\n }\n\n var formattedNumber = formatIDD(nationalNumber, input.carrierCode, countryCallingCode, options.fromCountry, metadata);\n return addExtension(formattedNumber, input.ext, metadata, options.formatExtension);\n\n default:\n throw new Error(\"Unknown \\\"format\\\" argument passed to \\\"formatNumber()\\\": \\\"\".concat(format, \"\\\"\"));\n }\n}\n\nfunction formatNationalNumber(number, carrierCode, formatAs, metadata, options) {\n var format = chooseFormatForNumber(metadata.formats(), number);\n\n if (!format) {\n return number;\n }\n\n return formatNationalNumberUsingFormat(number, format, {\n useInternationalFormat: formatAs === 'INTERNATIONAL',\n withNationalPrefix: format.nationalPrefixIsOptionalWhenFormattingInNationalFormat() && options && options.nationalPrefix === false ? false : true,\n carrierCode: carrierCode,\n metadata: metadata\n });\n}\n\nfunction chooseFormatForNumber(availableFormats, nationalNnumber) {\n for (var _iterator = _createForOfIteratorHelperLoose(availableFormats), _step; !(_step = _iterator()).done;) {\n var format = _step.value;\n\n // Validate leading digits.\n // The test case for \"else path\" could be found by searching for\n // \"format.leadingDigitsPatterns().length === 0\".\n if (format.leadingDigitsPatterns().length > 0) {\n // The last leading_digits_pattern is used here, as it is the most detailed\n var lastLeadingDigitsPattern = format.leadingDigitsPatterns()[format.leadingDigitsPatterns().length - 1]; // If leading digits don't match then move on to the next phone number format\n\n if (nationalNnumber.search(lastLeadingDigitsPattern) !== 0) {\n continue;\n }\n } // Check that the national number matches the phone number format regular expression\n\n\n if (matchesEntirely(nationalNnumber, format.pattern())) {\n return format;\n }\n }\n}\n\nfunction addExtension(formattedNumber, ext, metadata, formatExtension) {\n return ext ? formatExtension(formattedNumber, ext, metadata) : formattedNumber;\n}\n\nfunction formatIDD(nationalNumber, carrierCode, countryCallingCode, fromCountry, metadata) {\n var fromCountryCallingCode = getCountryCallingCode(fromCountry, metadata.metadata); // When calling within the same country calling code.\n\n if (fromCountryCallingCode === countryCallingCode) {\n var formattedNumber = formatNationalNumber(nationalNumber, carrierCode, 'NATIONAL', metadata); // For NANPA regions, return the national format for these regions\n // but prefix it with the country calling code.\n\n if (countryCallingCode === '1') {\n return countryCallingCode + ' ' + formattedNumber;\n } // If regions share a country calling code, the country calling code need\n // not be dialled. This also applies when dialling within a region, so this\n // if clause covers both these cases. Technically this is the case for\n // dialling from La Reunion to other overseas departments of France (French\n // Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover\n // this edge case for now and for those cases return the version including\n // country calling code. Details here:\n // http://www.petitfute.com/voyage/225-info-pratiques-reunion\n //\n\n\n return formattedNumber;\n }\n\n var iddPrefix = getIddPrefix(fromCountry, undefined, metadata.metadata);\n\n if (iddPrefix) {\n return \"\".concat(iddPrefix, \" \").concat(countryCallingCode, \" \").concat(formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata));\n }\n}\n//# sourceMappingURL=format_.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport Metadata from './metadata.js';\nimport isPossibleNumber from './isPossibleNumber_.js';\nimport isValidNumber from './validate_.js';\nimport isValidNumberForRegion from './isValidNumberForRegion_.js';\nimport getNumberType from './helpers/getNumberType.js';\nimport formatNumber from './format_.js';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\n\nvar PhoneNumber = /*#__PURE__*/function () {\n function PhoneNumber(countryCallingCode, nationalNumber, metadata) {\n _classCallCheck(this, PhoneNumber);\n\n if (!countryCallingCode) {\n throw new TypeError('`country` or `countryCallingCode` not passed');\n }\n\n if (!nationalNumber) {\n throw new TypeError('`nationalNumber` not passed');\n }\n\n if (!metadata) {\n throw new TypeError('`metadata` not passed');\n }\n\n var _metadata = new Metadata(metadata); // If country code is passed then derive `countryCallingCode` from it.\n // Also store the country code as `.country`.\n\n\n if (isCountryCode(countryCallingCode)) {\n this.country = countryCallingCode;\n\n _metadata.country(countryCallingCode);\n\n countryCallingCode = _metadata.countryCallingCode();\n } else {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (_metadata.isNonGeographicCallingCode(countryCallingCode)) {\n this.country = '001';\n }\n }\n }\n\n this.countryCallingCode = countryCallingCode;\n this.nationalNumber = nationalNumber;\n this.number = '+' + this.countryCallingCode + this.nationalNumber;\n this.metadata = metadata;\n }\n\n _createClass(PhoneNumber, [{\n key: \"setExt\",\n value: function setExt(ext) {\n this.ext = ext;\n }\n }, {\n key: \"isPossible\",\n value: function isPossible() {\n return isPossibleNumber(this, {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"isValid\",\n value: function isValid() {\n return isValidNumber(this, {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"isNonGeographic\",\n value: function isNonGeographic() {\n var metadata = new Metadata(this.metadata);\n return metadata.isNonGeographicCallingCode(this.countryCallingCode);\n }\n }, {\n key: \"isEqual\",\n value: function isEqual(phoneNumber) {\n return this.number === phoneNumber.number && this.ext === phoneNumber.ext;\n } // // Is just an alias for `this.isValid() && this.country === country`.\n // // https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\n // isValidForRegion(country) {\n // \treturn isValidNumberForRegion(this, country, { v2: true }, this.metadata)\n // }\n\n }, {\n key: \"getType\",\n value: function getType() {\n return getNumberType(this, {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"format\",\n value: function format(_format, options) {\n return formatNumber(this, _format, options ? _objectSpread(_objectSpread({}, options), {}, {\n v2: true\n }) : {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"formatNational\",\n value: function formatNational(options) {\n return this.format('NATIONAL', options);\n }\n }, {\n key: \"formatInternational\",\n value: function formatInternational(options) {\n return this.format('INTERNATIONAL', options);\n }\n }, {\n key: \"getURI\",\n value: function getURI(options) {\n return this.format('RFC3966', options);\n }\n }]);\n\n return PhoneNumber;\n}();\n\nexport { PhoneNumber as default };\n\nvar isCountryCode = function isCountryCode(value) {\n return /^[A-Z]{2}$/.test(value);\n};\n//# sourceMappingURL=PhoneNumber.js.map","import Metadata from '../metadata.js';\nimport { VALID_DIGITS } from '../constants.js';\nvar CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])');\nexport default function stripIddPrefix(number, country, callingCode, metadata) {\n if (!country) {\n return;\n } // Check if the number is IDD-prefixed.\n\n\n var countryMetadata = new Metadata(metadata);\n countryMetadata.selectNumberingPlan(country, callingCode);\n var IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix());\n\n if (number.search(IDDPrefixPattern) !== 0) {\n return;\n } // Strip IDD prefix.\n\n\n number = number.slice(number.match(IDDPrefixPattern)[0].length); // If there're any digits after an IDD prefix,\n // then those digits are a country calling code.\n // Since no country code starts with a `0`,\n // the code below validates that the next digit (if present) is not `0`.\n\n var matchedGroups = number.match(CAPTURING_DIGIT_PATTERN);\n\n if (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) {\n if (matchedGroups[1] === '0') {\n return;\n }\n }\n\n return number;\n}\n//# sourceMappingURL=stripIddPrefix.js.map","/**\r\n * Strips any national prefix (such as 0, 1) present in a\r\n * (possibly incomplete) number provided.\r\n * \"Carrier codes\" are only used in Colombia and Brazil,\r\n * and only when dialing within those countries from a mobile phone to a fixed line number.\r\n * Sometimes it won't actually strip national prefix\r\n * and will instead prepend some digits to the `number`:\r\n * for example, when number `2345678` is passed with `VI` country selected,\r\n * it will return `{ number: \"3402345678\" }`, because `340` area code is prepended.\r\n * @param {string} number — National number digits.\r\n * @param {object} metadata — Metadata with country selected.\r\n * @return {object} `{ nationalNumber: string, nationalPrefix: string? carrierCode: string? }`. Even if a national prefix was extracted, it's not necessarily present in the returned object, so don't rely on its presence in the returned object in order to find out whether a national prefix has been extracted or not.\r\n */\nexport default function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) {\n if (number && metadata.numberingPlan.nationalPrefixForParsing()) {\n // See METADATA.md for the description of\n // `national_prefix_for_parsing` and `national_prefix_transform_rule`.\n // Attempt to parse the first digits as a national prefix.\n var prefixPattern = new RegExp('^(?:' + metadata.numberingPlan.nationalPrefixForParsing() + ')');\n var prefixMatch = prefixPattern.exec(number);\n\n if (prefixMatch) {\n var nationalNumber;\n var carrierCode; // https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\n // If a `national_prefix_for_parsing` has any \"capturing groups\"\n // then it means that the national (significant) number is equal to\n // those \"capturing groups\" transformed via `national_prefix_transform_rule`,\n // and nothing could be said about the actual national prefix:\n // what is it and was it even there.\n // If a `national_prefix_for_parsing` doesn't have any \"capturing groups\",\n // then everything it matches is a national prefix.\n // To determine whether `national_prefix_for_parsing` matched any\n // \"capturing groups\", the value of the result of calling `.exec()`\n // is looked at, and if it has non-undefined values where there're\n // \"capturing groups\" in the regular expression, then it means\n // that \"capturing groups\" have been matched.\n // It's not possible to tell whether there'll be any \"capturing gropus\"\n // before the matching process, because a `national_prefix_for_parsing`\n // could exhibit both behaviors.\n\n var capturedGroupsCount = prefixMatch.length - 1;\n var hasCapturedGroups = capturedGroupsCount > 0 && prefixMatch[capturedGroupsCount];\n\n if (metadata.nationalPrefixTransformRule() && hasCapturedGroups) {\n nationalNumber = number.replace(prefixPattern, metadata.nationalPrefixTransformRule()); // If there's more than one captured group,\n // then carrier code is the second one.\n\n if (capturedGroupsCount > 1) {\n carrierCode = prefixMatch[1];\n }\n } // If there're no \"capturing groups\",\n // or if there're \"capturing groups\" but no\n // `national_prefix_transform_rule`,\n // then just strip the national prefix from the number,\n // and possibly a carrier code.\n // Seems like there could be more.\n else {\n // `prefixBeforeNationalNumber` is the whole substring matched by\n // the `national_prefix_for_parsing` regular expression.\n // There seem to be no guarantees that it's just a national prefix.\n // For example, if there's a carrier code, it's gonna be a\n // part of `prefixBeforeNationalNumber` too.\n var prefixBeforeNationalNumber = prefixMatch[0];\n nationalNumber = number.slice(prefixBeforeNationalNumber.length); // If there's at least one captured group,\n // then carrier code is the first one.\n\n if (hasCapturedGroups) {\n carrierCode = prefixMatch[1];\n }\n } // Tries to guess whether a national prefix was present in the input.\n // This is not something copy-pasted from Google's library:\n // they don't seem to have an equivalent for that.\n // So this isn't an \"officially approved\" way of doing something like that.\n // But since there seems no other existing method, this library uses it.\n\n\n var nationalPrefix;\n\n if (hasCapturedGroups) {\n var possiblePositionOfTheFirstCapturedGroup = number.indexOf(prefixMatch[1]);\n var possibleNationalPrefix = number.slice(0, possiblePositionOfTheFirstCapturedGroup); // Example: an Argentinian (AR) phone number `0111523456789`.\n // `prefixMatch[0]` is `01115`, and `$1` is `11`,\n // and the rest of the phone number is `23456789`.\n // The national number is transformed via `9$1` to `91123456789`.\n // National prefix `0` is detected being present at the start.\n // if (possibleNationalPrefix.indexOf(metadata.numberingPlan.nationalPrefix()) === 0) {\n\n if (possibleNationalPrefix === metadata.numberingPlan.nationalPrefix()) {\n nationalPrefix = metadata.numberingPlan.nationalPrefix();\n }\n } else {\n nationalPrefix = prefixMatch[0];\n }\n\n return {\n nationalNumber: nationalNumber,\n nationalPrefix: nationalPrefix,\n carrierCode: carrierCode\n };\n }\n }\n\n return {\n nationalNumber: number\n };\n}\n//# sourceMappingURL=extractNationalNumberFromPossiblyIncompleteNumber.js.map","import extractNationalNumberFromPossiblyIncompleteNumber from './extractNationalNumberFromPossiblyIncompleteNumber.js';\nimport matchesEntirely from './matchesEntirely.js';\nimport checkNumberLength from './checkNumberLength.js';\n/**\r\n * Strips national prefix and carrier code from a complete phone number.\r\n * The difference from the non-\"FromCompleteNumber\" function is that\r\n * it won't extract national prefix if the resultant number is too short\r\n * to be a complete number for the selected phone numbering plan.\r\n * @param {string} number — Complete phone number digits.\r\n * @param {Metadata} metadata — Metadata with a phone numbering plan selected.\r\n * @return {object} `{ nationalNumber: string, carrierCode: string? }`.\r\n */\n\nexport default function extractNationalNumber(number, metadata) {\n // Parsing national prefixes and carrier codes\n // is only required for local phone numbers\n // but some people don't understand that\n // and sometimes write international phone numbers\n // with national prefixes (or maybe even carrier codes).\n // http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html\n // Google's original library forgives such mistakes\n // and so does this library, because it has been requested:\n // https://github.com/catamphetamine/libphonenumber-js/issues/127\n var _extractNationalNumbe = extractNationalNumberFromPossiblyIncompleteNumber(number, metadata),\n carrierCode = _extractNationalNumbe.carrierCode,\n nationalNumber = _extractNationalNumbe.nationalNumber;\n\n if (nationalNumber !== number) {\n if (!shouldHaveExtractedNationalPrefix(number, nationalNumber, metadata)) {\n // Don't strip the national prefix.\n return {\n nationalNumber: number\n };\n } // Check the national (significant) number length after extracting national prefix and carrier code.\n // Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature.\n\n\n if (metadata.possibleLengths()) {\n // The number remaining after stripping the national prefix and carrier code\n // should be long enough to have a possible length for the country.\n // Otherwise, don't strip the national prefix and carrier code,\n // since the original number could be a valid number.\n // This check has been copy-pasted \"as is\" from Google's original library:\n // https://github.com/google/libphonenumber/blob/876268eb1ad6cdc1b7b5bef17fc5e43052702d57/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3236-L3250\n // It doesn't check for the \"possibility\" of the original `number`.\n // I guess it's fine not checking that one. It works as is anyway.\n if (!isPossibleIncompleteNationalNumber(nationalNumber, metadata)) {\n // Don't strip the national prefix.\n return {\n nationalNumber: number\n };\n }\n }\n }\n\n return {\n nationalNumber: nationalNumber,\n carrierCode: carrierCode\n };\n} // In some countries, the same digit could be a national prefix\n// or a leading digit of a valid phone number.\n// For example, in Russia, national prefix is `8`,\n// and also `800 555 35 35` is a valid number\n// in which `8` is not a national prefix, but the first digit\n// of a national (significant) number.\n// Same's with Belarus:\n// `82004910060` is a valid national (significant) number,\n// but `2004910060` is not.\n// To support such cases (to prevent the code from always stripping\n// national prefix), a condition is imposed: a national prefix\n// is not extracted when the original number is \"viable\" and the\n// resultant number is not, a \"viable\" national number being the one\n// that matches `national_number_pattern`.\n\nfunction shouldHaveExtractedNationalPrefix(nationalNumberBefore, nationalNumberAfter, metadata) {\n // The equivalent in Google's code is:\n // https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L2969-L3004\n if (matchesEntirely(nationalNumberBefore, metadata.nationalNumberPattern()) && !matchesEntirely(nationalNumberAfter, metadata.nationalNumberPattern())) {\n return false;\n } // This \"is possible\" national number (length) check has been commented out\n // because it's superceded by the (effectively) same check done in the\n // `extractNationalNumber()` function after it calls `shouldHaveExtractedNationalPrefix()`.\n // In other words, why run the same check twice if it could only be run once.\n // // Check the national (significant) number length after extracting national prefix and carrier code.\n // // Fixes a minor \"weird behavior\" bug: https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/57\n // // (Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature).\n // if (metadata.possibleLengths()) {\n // \tif (isPossibleIncompleteNationalNumber(nationalNumberBefore, metadata) &&\n // \t\t!isPossibleIncompleteNationalNumber(nationalNumberAfter, metadata)) {\n // \t\treturn false\n // \t}\n // }\n\n\n return true;\n}\n\nfunction isPossibleIncompleteNationalNumber(nationalNumber, metadata) {\n switch (checkNumberLength(nationalNumber, metadata)) {\n case 'TOO_SHORT':\n case 'INVALID_LENGTH':\n // This library ignores \"local-only\" phone numbers (for simplicity).\n // See the readme for more info on what are \"local-only\" phone numbers.\n // case 'IS_POSSIBLE_LOCAL_ONLY':\n return false;\n\n default:\n return true;\n }\n}\n//# sourceMappingURL=extractNationalNumber.js.map","import Metadata from '../metadata.js';\nimport matchesEntirely from './matchesEntirely.js';\nimport extractNationalNumber from './extractNationalNumber.js';\nimport checkNumberLength from './checkNumberLength.js';\nimport getCountryCallingCode from '../getCountryCallingCode.js';\n/**\r\n * Sometimes some people incorrectly input international phone numbers\r\n * without the leading `+`. This function corrects such input.\r\n * @param {string} number — Phone number digits.\r\n * @param {string?} country\r\n * @param {string?} callingCode\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`.\r\n */\n\nexport default function extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, callingCode, metadata) {\n var countryCallingCode = country ? getCountryCallingCode(country, metadata) : callingCode;\n\n if (number.indexOf(countryCallingCode) === 0) {\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(country, callingCode);\n var possibleShorterNumber = number.slice(countryCallingCode.length);\n\n var _extractNationalNumbe = extractNationalNumber(possibleShorterNumber, metadata),\n possibleShorterNationalNumber = _extractNationalNumbe.nationalNumber;\n\n var _extractNationalNumbe2 = extractNationalNumber(number, metadata),\n nationalNumber = _extractNationalNumbe2.nationalNumber; // If the number was not valid before but is valid now,\n // or if it was too long before, we consider the number\n // with the country calling code stripped to be a better result\n // and keep that instead.\n // For example, in Germany (+49), `49` is a valid area code,\n // so if a number starts with `49`, it could be both a valid\n // national German number or an international number without\n // a leading `+`.\n\n\n if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) && matchesEntirely(possibleShorterNationalNumber, metadata.nationalNumberPattern()) || checkNumberLength(nationalNumber, metadata) === 'TOO_LONG') {\n return {\n countryCallingCode: countryCallingCode,\n number: possibleShorterNumber\n };\n }\n }\n\n return {\n number: number\n };\n}\n//# sourceMappingURL=extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js.map","import stripIddPrefix from './stripIddPrefix.js';\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js';\nimport Metadata from '../metadata.js';\nimport { MAX_LENGTH_COUNTRY_CODE } from '../constants.js';\n/**\r\n * Converts a phone number digits (possibly with a `+`)\r\n * into a calling code and the rest phone number digits.\r\n * The \"rest phone number digits\" could include\r\n * a national prefix, carrier code, and national\r\n * (significant) number.\r\n * @param {string} number — Phone number digits (possibly with a `+`).\r\n * @param {string} [country] — Default country.\r\n * @param {string} [callingCode] — Default calling code (some phone numbering plans are non-geographic).\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`\r\n * @example\r\n * // Returns `{ countryCallingCode: \"1\", number: \"2133734253\" }`.\r\n * extractCountryCallingCode('2133734253', 'US', null, metadata)\r\n * extractCountryCallingCode('2133734253', null, '1', metadata)\r\n * extractCountryCallingCode('+12133734253', null, null, metadata)\r\n * extractCountryCallingCode('+12133734253', 'RU', null, metadata)\r\n */\n\nexport default function extractCountryCallingCode(number, country, callingCode, metadata) {\n if (!number) {\n return {};\n } // If this is not an international phone number,\n // then either extract an \"IDD\" prefix, or extract a\n // country calling code from a number by autocorrecting it\n // by prepending a leading `+` in cases when it starts\n // with the country calling code.\n // https://wikitravel.org/en/International_dialling_prefix\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n\n\n if (number[0] !== '+') {\n // Convert an \"out-of-country\" dialing phone number\n // to a proper international phone number.\n var numberWithoutIDD = stripIddPrefix(number, country, callingCode, metadata); // If an IDD prefix was stripped then\n // convert the number to international one\n // for subsequent parsing.\n\n if (numberWithoutIDD && numberWithoutIDD !== number) {\n number = '+' + numberWithoutIDD;\n } else {\n // Check to see if the number starts with the country calling code\n // for the default country. If so, we remove the country calling code,\n // and do some checks on the validity of the number before and after.\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n if (country || callingCode) {\n var _extractCountryCallin = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, callingCode, metadata),\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n shorterNumber = _extractCountryCallin.number;\n\n if (countryCallingCode) {\n return {\n countryCallingCode: countryCallingCode,\n number: shorterNumber\n };\n }\n }\n\n return {\n number: number\n };\n }\n } // Fast abortion: country codes do not begin with a '0'\n\n\n if (number[1] === '0') {\n return {};\n }\n\n metadata = new Metadata(metadata); // The thing with country phone codes\n // is that they are orthogonal to each other\n // i.e. there's no such country phone code A\n // for which country phone code B exists\n // where B starts with A.\n // Therefore, while scanning digits,\n // if a valid country code is found,\n // that means that it is the country code.\n //\n\n var i = 2;\n\n while (i - 1 <= MAX_LENGTH_COUNTRY_CODE && i <= number.length) {\n var _countryCallingCode = number.slice(1, i);\n\n if (metadata.hasCallingCode(_countryCallingCode)) {\n metadata.selectNumberingPlan(_countryCallingCode);\n return {\n countryCallingCode: _countryCallingCode,\n number: number.slice(i)\n };\n }\n\n i++;\n }\n\n return {};\n}\n//# sourceMappingURL=extractCountryCallingCode.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport Metadata from '../metadata.js';\nimport getNumberType from './getNumberType.js';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\nexport default function getCountryByCallingCode(callingCode, nationalPhoneNumber, metadata) {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(callingCode)) {\n return '001';\n }\n } // Is always non-empty, because `callingCode` is always valid\n\n\n var possibleCountries = metadata.getCountryCodesForCallingCode(callingCode);\n\n if (!possibleCountries) {\n return;\n } // If there's just one country corresponding to the country code,\n // then just return it, without further phone number digits validation.\n\n\n if (possibleCountries.length === 1) {\n return possibleCountries[0];\n }\n\n return selectCountryFromList(possibleCountries, nationalPhoneNumber, metadata.metadata);\n}\n\nfunction selectCountryFromList(possibleCountries, nationalPhoneNumber, metadata) {\n // Re-create `metadata` because it will be selecting a `country`.\n metadata = new Metadata(metadata);\n\n for (var _iterator = _createForOfIteratorHelperLoose(possibleCountries), _step; !(_step = _iterator()).done;) {\n var country = _step.value;\n metadata.country(country); // Leading digits check would be the simplest and fastest one.\n // Leading digits patterns are only defined for about 20% of all countries.\n // https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits\n // Matching \"leading digits\" is a sufficient but not necessary condition.\n\n if (metadata.leadingDigits()) {\n if (nationalPhoneNumber && nationalPhoneNumber.search(metadata.leadingDigits()) === 0) {\n return country;\n }\n } // Else perform full validation with all of those\n // fixed-line/mobile/etc regular expressions.\n else if (getNumberType({\n phone: nationalPhoneNumber,\n country: country\n }, undefined, metadata.metadata)) {\n return country;\n }\n }\n}\n//# sourceMappingURL=getCountryByCallingCode.js.map","// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\nimport { VALID_DIGITS, PLUS_CHARS, MIN_LENGTH_FOR_NSN, MAX_LENGTH_FOR_NSN } from './constants.js';\nimport ParseError from './ParseError.js';\nimport Metadata from './metadata.js';\nimport isViablePhoneNumber, { isViablePhoneNumberStart } from './helpers/isViablePhoneNumber.js';\nimport extractExtension from './helpers/extension/extractExtension.js';\nimport parseIncompletePhoneNumber from './parseIncompletePhoneNumber.js';\nimport getCountryCallingCode from './getCountryCallingCode.js';\nimport { isPossibleNumber } from './isPossibleNumber_.js';\nimport { parseRFC3966 } from './helpers/RFC3966.js';\nimport PhoneNumber from './PhoneNumber.js';\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport extractCountryCallingCode from './helpers/extractCountryCallingCode.js';\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js';\nimport extractNationalNumber from './helpers/extractNationalNumber.js';\nimport stripIddPrefix from './helpers/stripIddPrefix.js';\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js'; // We don't allow input strings for parsing to be longer than 250 chars.\n// This prevents malicious input from consuming CPU.\n\nvar MAX_INPUT_STRING_LENGTH = 250; // This consists of the plus symbol, digits, and arabic-indic digits.\n\nvar PHONE_NUMBER_START_PATTERN = new RegExp('[' + PLUS_CHARS + VALID_DIGITS + ']'); // Regular expression of trailing characters that we want to remove.\n// A trailing `#` is sometimes used when writing phone numbers with extensions in US.\n// Example: \"+1 (645) 123 1234-910#\" number has extension \"910\".\n\nvar AFTER_PHONE_NUMBER_END_PATTERN = new RegExp('[^' + VALID_DIGITS + '#' + ']+$');\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false; // Examples:\n//\n// ```js\n// parse('8 (800) 555-35-35', 'RU')\n// parse('8 (800) 555-35-35', 'RU', metadata)\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } })\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata)\n// parse('+7 800 555 35 35')\n// parse('+7 800 555 35 35', metadata)\n// ```\n//\n\nexport default function parse(text, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {};\n metadata = new Metadata(metadata); // Validate `defaultCountry`.\n\n if (options.defaultCountry && !metadata.hasCountry(options.defaultCountry)) {\n if (options.v2) {\n throw new ParseError('INVALID_COUNTRY');\n }\n\n throw new Error(\"Unknown country: \".concat(options.defaultCountry));\n } // Parse the phone number.\n\n\n var _parseInput = parseInput(text, options.v2, options.extract),\n formattedPhoneNumber = _parseInput.number,\n ext = _parseInput.ext,\n error = _parseInput.error; // If the phone number is not viable then return nothing.\n\n\n if (!formattedPhoneNumber) {\n if (options.v2) {\n if (error === 'TOO_SHORT') {\n throw new ParseError('TOO_SHORT');\n }\n\n throw new ParseError('NOT_A_NUMBER');\n }\n\n return {};\n }\n\n var _parsePhoneNumber = parsePhoneNumber(formattedPhoneNumber, options.defaultCountry, options.defaultCallingCode, metadata),\n country = _parsePhoneNumber.country,\n nationalNumber = _parsePhoneNumber.nationalNumber,\n countryCallingCode = _parsePhoneNumber.countryCallingCode,\n carrierCode = _parsePhoneNumber.carrierCode;\n\n if (!metadata.hasSelectedNumberingPlan()) {\n if (options.v2) {\n throw new ParseError('INVALID_COUNTRY');\n }\n\n return {};\n } // Validate national (significant) number length.\n\n\n if (!nationalNumber || nationalNumber.length < MIN_LENGTH_FOR_NSN) {\n // Won't throw here because the regexp already demands length > 1.\n\n /* istanbul ignore if */\n if (options.v2) {\n throw new ParseError('TOO_SHORT');\n } // Google's demo just throws an error in this case.\n\n\n return {};\n } // Validate national (significant) number length.\n //\n // A sidenote:\n //\n // They say that sometimes national (significant) numbers\n // can be longer than `MAX_LENGTH_FOR_NSN` (e.g. in Germany).\n // https://github.com/googlei18n/libphonenumber/blob/7e1748645552da39c4e1ba731e47969d97bdb539/resources/phonenumber.proto#L36\n // Such numbers will just be discarded.\n //\n\n\n if (nationalNumber.length > MAX_LENGTH_FOR_NSN) {\n if (options.v2) {\n throw new ParseError('TOO_LONG');\n } // Google's demo just throws an error in this case.\n\n\n return {};\n }\n\n if (options.v2) {\n var phoneNumber = new PhoneNumber(countryCallingCode, nationalNumber, metadata.metadata);\n\n if (country) {\n phoneNumber.country = country;\n }\n\n if (carrierCode) {\n phoneNumber.carrierCode = carrierCode;\n }\n\n if (ext) {\n phoneNumber.ext = ext;\n }\n\n return phoneNumber;\n } // Check if national phone number pattern matches the number.\n // National number pattern is different for each country,\n // even for those ones which are part of the \"NANPA\" group.\n\n\n var valid = (options.extended ? metadata.hasSelectedNumberingPlan() : country) ? matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) : false;\n\n if (!options.extended) {\n return valid ? result(country, nationalNumber, ext) : {};\n } // isInternational: countryCallingCode !== undefined\n\n\n return {\n country: country,\n countryCallingCode: countryCallingCode,\n carrierCode: carrierCode,\n valid: valid,\n possible: valid ? true : options.extended === true && metadata.possibleLengths() && isPossibleNumber(nationalNumber, metadata) ? true : false,\n phone: nationalNumber,\n ext: ext\n };\n}\n/**\r\n * Extracts a formatted phone number from text.\r\n * Doesn't guarantee that the extracted phone number\r\n * is a valid phone number (for example, doesn't validate its length).\r\n * @param {string} text\r\n * @param {boolean} [extract] — If `false`, then will parse the entire `text` as a phone number.\r\n * @param {boolean} [throwOnError] — By default, it won't throw if the text is too long.\r\n * @return {string}\r\n * @example\r\n * // Returns \"(213) 373-4253\".\r\n * extractFormattedPhoneNumber(\"Call (213) 373-4253 for assistance.\")\r\n */\n\nfunction extractFormattedPhoneNumber(text, extract, throwOnError) {\n if (!text) {\n return;\n }\n\n if (text.length > MAX_INPUT_STRING_LENGTH) {\n if (throwOnError) {\n throw new ParseError('TOO_LONG');\n }\n\n return;\n }\n\n if (extract === false) {\n return text;\n } // Attempt to extract a possible number from the string passed in\n\n\n var startsAt = text.search(PHONE_NUMBER_START_PATTERN);\n\n if (startsAt < 0) {\n return;\n }\n\n return text // Trim everything to the left of the phone number\n .slice(startsAt) // Remove trailing non-numerical characters\n .replace(AFTER_PHONE_NUMBER_END_PATTERN, '');\n}\n/**\r\n * @param {string} text - Input.\r\n * @param {boolean} v2 - Legacy API functions don't pass `v2: true` flag.\r\n * @param {boolean} [extract] - Whether to extract a phone number from `text`, or attempt to parse the entire text as a phone number.\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\n\n\nfunction parseInput(text, v2, extract) {\n // Parse RFC 3966 phone number URI.\n if (text && text.indexOf('tel:') === 0) {\n return parseRFC3966(text);\n }\n\n var number = extractFormattedPhoneNumber(text, extract, v2); // If the phone number is not viable, then abort.\n\n if (!number) {\n return {};\n }\n\n if (!isViablePhoneNumber(number)) {\n if (isViablePhoneNumberStart(number)) {\n return {\n error: 'TOO_SHORT'\n };\n }\n\n return {};\n } // Attempt to parse extension first, since it doesn't require region-specific\n // data and we want to have the non-normalised number here.\n\n\n var withExtensionStripped = extractExtension(number);\n\n if (withExtensionStripped.ext) {\n return withExtensionStripped;\n }\n\n return {\n number: number\n };\n}\n/**\r\n * Creates `parse()` result object.\r\n */\n\n\nfunction result(country, nationalNumber, ext) {\n var result = {\n country: country,\n phone: nationalNumber\n };\n\n if (ext) {\n result.ext = ext;\n }\n\n return result;\n}\n/**\r\n * Parses a viable phone number.\r\n * @param {string} formattedPhoneNumber — Example: \"(213) 373-4253\".\r\n * @param {string} [defaultCountry]\r\n * @param {string} [defaultCallingCode]\r\n * @param {Metadata} metadata\r\n * @return {object} Returns `{ country: string?, countryCallingCode: string?, nationalNumber: string? }`.\r\n */\n\n\nfunction parsePhoneNumber(formattedPhoneNumber, defaultCountry, defaultCallingCode, metadata) {\n // Extract calling code from phone number.\n var _extractCountryCallin = extractCountryCallingCode(parseIncompletePhoneNumber(formattedPhoneNumber), defaultCountry, defaultCallingCode, metadata.metadata),\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n number = _extractCountryCallin.number; // Choose a country by `countryCallingCode`.\n\n\n var country;\n\n if (countryCallingCode) {\n metadata.selectNumberingPlan(countryCallingCode);\n } // If `formattedPhoneNumber` is in \"national\" format\n // then `number` is defined and `countryCallingCode` isn't.\n else if (number && (defaultCountry || defaultCallingCode)) {\n metadata.selectNumberingPlan(defaultCountry, defaultCallingCode);\n\n if (defaultCountry) {\n country = defaultCountry;\n } else {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(defaultCallingCode)) {\n country = '001';\n }\n }\n }\n\n countryCallingCode = defaultCallingCode || getCountryCallingCode(defaultCountry, metadata.metadata);\n } else return {};\n\n if (!number) {\n return {\n countryCallingCode: countryCallingCode\n };\n }\n\n var _extractNationalNumbe = extractNationalNumber(parseIncompletePhoneNumber(number), metadata),\n nationalNumber = _extractNationalNumbe.nationalNumber,\n carrierCode = _extractNationalNumbe.carrierCode; // Sometimes there are several countries\n // corresponding to the same country phone code\n // (e.g. NANPA countries all having `1` country phone code).\n // Therefore, to reliably determine the exact country,\n // national (significant) number should have been parsed first.\n //\n // When `metadata.json` is generated, all \"ambiguous\" country phone codes\n // get their countries populated with the full set of\n // \"phone number type\" regular expressions.\n //\n\n\n var exactCountry = getCountryByCallingCode(countryCallingCode, nationalNumber, metadata);\n\n if (exactCountry) {\n country = exactCountry;\n /* istanbul ignore if */\n\n if (exactCountry === '001') {// Can't happen with `USE_NON_GEOGRAPHIC_COUNTRY_CODE` being `false`.\n // If `USE_NON_GEOGRAPHIC_COUNTRY_CODE` is set to `true` for some reason,\n // then remove the \"istanbul ignore if\".\n } else {\n metadata.country(country);\n }\n }\n\n return {\n country: country,\n countryCallingCode: countryCallingCode,\n nationalNumber: nationalNumber,\n carrierCode: carrierCode\n };\n}\n//# sourceMappingURL=parse_.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport parseNumber from './parse_.js';\nexport default function parsePhoneNumber(text, options, metadata) {\n return parseNumber(text, _objectSpread(_objectSpread({}, options), {}, {\n v2: true\n }), metadata);\n}\n//# sourceMappingURL=parsePhoneNumber_.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport parsePhoneNumber_ from './parsePhoneNumber_.js';\nexport default function parsePhoneNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return parsePhoneNumber_(text, options, metadata);\n}\nexport function normalizeArguments(args) {\n var _Array$prototype$slic = Array.prototype.slice.call(args),\n _Array$prototype$slic2 = _slicedToArray(_Array$prototype$slic, 4),\n arg_1 = _Array$prototype$slic2[0],\n arg_2 = _Array$prototype$slic2[1],\n arg_3 = _Array$prototype$slic2[2],\n arg_4 = _Array$prototype$slic2[3];\n\n var text;\n var options;\n var metadata; // If the phone number is passed as a string.\n // `parsePhoneNumber('88005553535', ...)`.\n\n if (typeof arg_1 === 'string') {\n text = arg_1;\n } else throw new TypeError('A text for parsing must be a string.'); // If \"default country\" argument is being passed then move it to `options`.\n // `parsePhoneNumber('88005553535', 'RU', [options], metadata)`.\n\n\n if (!arg_2 || typeof arg_2 === 'string') {\n if (arg_4) {\n options = arg_3;\n metadata = arg_4;\n } else {\n options = undefined;\n metadata = arg_3;\n }\n\n if (arg_2) {\n options = _objectSpread({\n defaultCountry: arg_2\n }, options);\n }\n } // `defaultCountry` is not passed.\n // Example: `parsePhoneNumber('+78005553535', [options], metadata)`.\n else if (isObject(arg_2)) {\n if (arg_3) {\n options = arg_2;\n metadata = arg_3;\n } else {\n metadata = arg_2;\n }\n } else throw new Error(\"Invalid second argument: \".concat(arg_2));\n\n return {\n text: text,\n options: options,\n metadata: metadata\n };\n} // Otherwise istanbul would show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\nvar isObject = function isObject(_) {\n return _typeof(_) === 'object';\n};\n//# sourceMappingURL=parsePhoneNumber.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport parsePhoneNumber from './parsePhoneNumber_.js';\nimport ParseError from './ParseError.js';\nimport { isSupportedCountry } from './metadata.js';\nexport default function parsePhoneNumberFromString(text, options, metadata) {\n // Validate `defaultCountry`.\n if (options && options.defaultCountry && !isSupportedCountry(options.defaultCountry, metadata)) {\n options = _objectSpread(_objectSpread({}, options), {}, {\n defaultCountry: undefined\n });\n } // Parse phone number.\n\n\n try {\n return parsePhoneNumber(text, options, metadata);\n } catch (error) {\n /* istanbul ignore else */\n if (error instanceof ParseError) {//\n } else {\n throw error;\n }\n }\n}\n//# sourceMappingURL=parsePhoneNumberFromString_.js.map","import { normalizeArguments } from './parsePhoneNumber.js';\nimport parsePhoneNumberFromString_ from './parsePhoneNumberFromString_.js';\nexport default function parsePhoneNumberFromString() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return parsePhoneNumberFromString_(text, options, metadata);\n}\n//# sourceMappingURL=parsePhoneNumberFromString.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { normalizeArguments } from './parsePhoneNumber.js';\nimport parsePhoneNumberFromString from './parsePhoneNumberFromString_.js';\nexport default function isValidPhoneNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n options = _objectSpread(_objectSpread({}, options), {}, {\n extract: false\n });\n var phoneNumber = parsePhoneNumberFromString(text, options, metadata);\n return phoneNumber && phoneNumber.isValid() || false;\n}\n//# sourceMappingURL=isValidPhoneNumber.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { normalizeArguments } from './parsePhoneNumber.js';\nimport parsePhoneNumberFromString from './parsePhoneNumberFromString_.js';\nexport default function isPossiblePhoneNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n options = _objectSpread(_objectSpread({}, options), {}, {\n extract: false\n });\n var phoneNumber = parsePhoneNumberFromString(text, options, metadata);\n return phoneNumber && phoneNumber.isPossible() || false;\n}\n//# sourceMappingURL=isPossiblePhoneNumber.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { normalizeArguments } from './parsePhoneNumber.js';\nimport parsePhoneNumber from './parsePhoneNumber_.js';\nimport ParseError from './ParseError.js';\nimport Metadata from './metadata.js';\nimport checkNumberLength from './helpers/checkNumberLength.js';\nexport default function validatePhoneNumberLength() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n options = _objectSpread(_objectSpread({}, options), {}, {\n extract: false\n }); // Parse phone number.\n\n try {\n var phoneNumber = parsePhoneNumber(text, options, metadata);\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(phoneNumber.countryCallingCode);\n var result = checkNumberLength(phoneNumber.nationalNumber, metadata);\n\n if (result !== 'IS_POSSIBLE') {\n return result;\n }\n } catch (error) {\n /* istanbul ignore else */\n if (error instanceof ParseError) {\n return error.message;\n } else {\n throw error;\n }\n }\n}\n//# sourceMappingURL=validatePhoneNumberLength.js.map","function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// https://medium.com/dsinjs/implementing-lru-cache-in-javascript-94ba6755cda9\nvar Node = /*#__PURE__*/_createClass(function Node(key, value) {\n var next = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var prev = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n _classCallCheck(this, Node);\n\n this.key = key;\n this.value = value;\n this.next = next;\n this.prev = prev;\n});\n\nvar LRUCache = /*#__PURE__*/function () {\n //set default limit of 10 if limit is not passed.\n function LRUCache() {\n var limit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;\n\n _classCallCheck(this, LRUCache);\n\n this.size = 0;\n this.limit = limit;\n this.head = null;\n this.tail = null;\n this.cache = {};\n } // Write Node to head of LinkedList\n // update cache with Node key and Node reference\n\n\n _createClass(LRUCache, [{\n key: \"put\",\n value: function put(key, value) {\n this.ensureLimit();\n\n if (!this.head) {\n this.head = this.tail = new Node(key, value);\n } else {\n var node = new Node(key, value, this.head);\n this.head.prev = node;\n this.head = node;\n } //Update the cache map\n\n\n this.cache[key] = this.head;\n this.size++;\n } // Read from cache map and make that node as new Head of LinkedList\n\n }, {\n key: \"get\",\n value: function get(key) {\n if (this.cache[key]) {\n var value = this.cache[key].value; // node removed from it's position and cache\n\n this.remove(key); // write node again to the head of LinkedList to make it most recently used\n\n this.put(key, value);\n return value;\n }\n\n console.log(\"Item not available in cache for key \".concat(key));\n }\n }, {\n key: \"ensureLimit\",\n value: function ensureLimit() {\n if (this.size === this.limit) {\n this.remove(this.tail.key);\n }\n }\n }, {\n key: \"remove\",\n value: function remove(key) {\n var node = this.cache[key];\n\n if (node.prev !== null) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n\n if (node.next !== null) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n\n delete this.cache[key];\n this.size--;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = null;\n this.tail = null;\n this.size = 0;\n this.cache = {};\n } // // Invokes the callback function with every node of the chain and the index of the node.\n // forEach(fn) {\n // let node = this.head;\n // let counter = 0;\n // while (node) {\n // fn(node, counter);\n // node = node.next;\n // counter++;\n // }\n // }\n // // To iterate over LRU with a 'for...of' loop\n // *[Symbol.iterator]() {\n // let node = this.head;\n // while (node) {\n // yield node;\n // node = node.next;\n // }\n // }\n\n }]);\n\n return LRUCache;\n}();\n\nexport { LRUCache as default };\n//# sourceMappingURL=LRUCache.js.map","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport LRUCache from './LRUCache.js'; // A cache for frequently used country-specific regular expressions. Set to 32 to cover ~2-3\n// countries being used for the same doc with ~10 patterns for each country. Some pages will have\n// a lot more countries in use, but typically fewer numbers for each so expanding the cache for\n// that use-case won't have a lot of benefit.\n\nvar RegExpCache = /*#__PURE__*/function () {\n function RegExpCache(size) {\n _classCallCheck(this, RegExpCache);\n\n this.cache = new LRUCache(size);\n }\n\n _createClass(RegExpCache, [{\n key: \"getPatternForRegExp\",\n value: function getPatternForRegExp(pattern) {\n var regExp = this.cache.get(pattern);\n\n if (!regExp) {\n regExp = new RegExp('^' + pattern);\n this.cache.put(pattern, regExp);\n }\n\n return regExp;\n }\n }]);\n\n return RegExpCache;\n}();\n\nexport { RegExpCache as default };\n//# sourceMappingURL=RegExpCache.js.map","/** Returns a regular expression quantifier with an upper and lower limit. */\nexport function limit(lower, upper) {\n if (lower < 0 || upper <= 0 || upper < lower) {\n throw new TypeError();\n }\n\n return \"{\".concat(lower, \",\").concat(upper, \"}\");\n}\n/**\r\n * Trims away any characters after the first match of {@code pattern} in {@code candidate},\r\n * returning the trimmed version.\r\n */\n\nexport function trimAfterFirstMatch(regexp, string) {\n var index = string.search(regexp);\n\n if (index >= 0) {\n return string.slice(0, index);\n }\n\n return string;\n}\nexport function startsWith(string, substring) {\n return string.indexOf(substring) === 0;\n}\nexport function endsWith(string, substring) {\n return string.indexOf(substring, string.length - substring.length) === string.length - substring.length;\n}\n//# sourceMappingURL=util.js.map","// Javascript doesn't support UTF-8 regular expressions.\n// So mimicking them here.\n// Copy-pasted from `PhoneNumberMatcher.js`.\n\n/**\r\n * \"\\p{Z}\" is any kind of whitespace or invisible separator (\"Separator\").\r\n * http://www.regular-expressions.info/unicode.html\r\n * \"\\P{Z}\" is the reverse of \"\\p{Z}\".\r\n * \"\\p{N}\" is any kind of numeric character in any script (\"Number\").\r\n * \"\\p{Nd}\" is a digit zero through nine in any script except \"ideographic scripts\" (\"Decimal_Digit_Number\").\r\n * \"\\p{Sc}\" is a currency symbol (\"Currency_Symbol\").\r\n * \"\\p{L}\" is any kind of letter from any language (\"Letter\").\r\n * \"\\p{Mn}\" is \"non-spacing mark\".\r\n *\r\n * Javascript doesn't support Unicode Regular Expressions\r\n * so substituting it with this explicit set of characters.\r\n *\r\n * https://stackoverflow.com/questions/13210194/javascript-regex-equivalent-of-a-za-z-using-pl\r\n * https://github.com/danielberndt/babel-plugin-utf-8-regex/blob/master/src/transformer.js\r\n */\nvar _pZ = \" \\xA0\\u1680\\u180E\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\";\nexport var pZ = \"[\".concat(_pZ, \"]\");\nexport var PZ = \"[^\".concat(_pZ, \"]\");\nexport var _pN = \"0-9\\xB2\\xB3\\xB9\\xBC-\\xBE\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u09F4-\\u09F9\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0B72-\\u0B77\\u0BE6-\\u0BF2\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0CE6-\\u0CEF\\u0D66-\\u0D75\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F33\\u1040-\\u1049\\u1090-\\u1099\\u1369-\\u137C\\u16EE-\\u16F0\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19DA\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u2182\\u2185-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3007\\u3021-\\u3029\\u3038-\\u303A\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA620-\\uA629\\uA6E6-\\uA6EF\\uA830-\\uA835\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19\"; // const pN = `[${_pN}]`\n\nvar _pNd = \"0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19\";\nexport var pNd = \"[\".concat(_pNd, \"]\");\nexport var _pL = \"A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\";\nvar pL = \"[\".concat(_pL, \"]\");\nvar pL_regexp = new RegExp(pL);\nvar _pSc = \"$\\xA2-\\xA5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20B9\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6\";\nvar pSc = \"[\".concat(_pSc, \"]\");\nvar pSc_regexp = new RegExp(pSc);\nvar _pMn = \"\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u08FE\\u0900-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1DC0-\\u1DE6\\u1DFC-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26\";\nvar pMn = \"[\".concat(_pMn, \"]\");\nvar pMn_regexp = new RegExp(pMn);\nvar _InBasic_Latin = \"\\0-\\x7F\";\nvar _InLatin_1_Supplement = \"\\x80-\\xFF\";\nvar _InLatin_Extended_A = \"\\u0100-\\u017F\";\nvar _InLatin_Extended_Additional = \"\\u1E00-\\u1EFF\";\nvar _InLatin_Extended_B = \"\\u0180-\\u024F\";\nvar _InCombining_Diacritical_Marks = \"\\u0300-\\u036F\";\nvar latinLetterRegexp = new RegExp('[' + _InBasic_Latin + _InLatin_1_Supplement + _InLatin_Extended_A + _InLatin_Extended_Additional + _InLatin_Extended_B + _InCombining_Diacritical_Marks + ']');\n/**\r\n * Helper method to determine if a character is a Latin-script letter or not.\r\n * For our purposes, combining marks should also return true since we assume\r\n * they have been added to a preceding Latin character.\r\n */\n\nexport function isLatinLetter(letter) {\n // Combining marks are a subset of non-spacing-mark.\n if (!pL_regexp.test(letter) && !pMn_regexp.test(letter)) {\n return false;\n }\n\n return latinLetterRegexp.test(letter);\n}\nexport function isInvalidPunctuationSymbol(character) {\n return character === '%' || pSc_regexp.test(character);\n}\n//# sourceMappingURL=utf-8.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport isValidNumber from '../validate_.js';\nimport parseDigits from '../helpers/parseDigits.js';\nimport { startsWith, endsWith } from './util.js';\n/**\r\n * Leniency when finding potential phone numbers in text segments\r\n * The levels here are ordered in increasing strictness.\r\n */\n\nexport default {\n /**\r\n * Phone numbers accepted are \"possible\", but not necessarily \"valid\".\r\n */\n POSSIBLE: function POSSIBLE(number, candidate, metadata) {\n return true;\n },\n\n /**\r\n * Phone numbers accepted are \"possible\" and \"valid\".\r\n * Numbers written in national format must have their national-prefix\r\n * present if it is usually written for a number of this type.\r\n */\n VALID: function VALID(number, candidate, metadata) {\n if (!isValidNumber(number, undefined, metadata) || !containsOnlyValidXChars(number, candidate.toString(), metadata)) {\n return false;\n } // Skipped for simplicity.\n // return isNationalPrefixPresentIfRequired(number, metadata)\n\n\n return true;\n },\n\n /**\r\n * Phone numbers accepted are \"valid\" and\r\n * are grouped in a possible way for this locale. For example, a US number written as\r\n * \"65 02 53 00 00\" and \"650253 0000\" are not accepted at this leniency level, whereas\r\n * \"650 253 0000\", \"650 2530000\" or \"6502530000\" are.\r\n * Numbers with more than one '/' symbol in the national significant number\r\n * are also dropped at this level.\r\n *\r\n * Warning: This level might result in lower coverage especially for regions outside of\r\n * country code \"+1\". If you are not sure about which level to use,\r\n * email the discussion group libphonenumber-discuss@googlegroups.com.\r\n */\n STRICT_GROUPING: function STRICT_GROUPING(number, candidate, metadata, regExpCache) {\n var candidateString = candidate.toString();\n\n if (!isValidNumber(number, undefined, metadata) || !containsOnlyValidXChars(number, candidateString, metadata) || containsMoreThanOneSlashInNationalNumber(number, candidateString) || !isNationalPrefixPresentIfRequired(number, metadata)) {\n return false;\n }\n\n return checkNumberGroupingIsValid(number, candidate, metadata, allNumberGroupsRemainGrouped, regExpCache);\n },\n\n /**\r\n * Phone numbers accepted are {@linkplain PhoneNumberUtil#isValidNumber(PhoneNumber) valid} and\r\n * are grouped in the same way that we would have formatted it, or as a single block. For\r\n * example, a US number written as \"650 2530000\" is not accepted at this leniency level, whereas\r\n * \"650 253 0000\" or \"6502530000\" are.\r\n * Numbers with more than one '/' symbol are also dropped at this level.\r\n *

\r\n * Warning: This level might result in lower coverage especially for regions outside of country\r\n * code \"+1\". If you are not sure about which level to use, email the discussion group\r\n * libphonenumber-discuss@googlegroups.com.\r\n */\n EXACT_GROUPING: function EXACT_GROUPING(number, candidate, metadata, regExpCache) {\n var candidateString = candidate.toString();\n\n if (!isValidNumber(number, undefined, metadata) || !containsOnlyValidXChars(number, candidateString, metadata) || containsMoreThanOneSlashInNationalNumber(number, candidateString) || !isNationalPrefixPresentIfRequired(number, metadata)) {\n return false;\n }\n\n return checkNumberGroupingIsValid(number, candidate, metadata, allNumberGroupsAreExactlyPresent, regExpCache);\n }\n};\n\nfunction containsOnlyValidXChars(number, candidate, metadata) {\n // The characters 'x' and 'X' can be (1) a carrier code, in which case they always precede the\n // national significant number or (2) an extension sign, in which case they always precede the\n // extension number. We assume a carrier code is more than 1 digit, so the first case has to\n // have more than 1 consecutive 'x' or 'X', whereas the second case can only have exactly 1 'x'\n // or 'X'. We ignore the character if it appears as the last character of the string.\n for (var index = 0; index < candidate.length - 1; index++) {\n var charAtIndex = candidate.charAt(index);\n\n if (charAtIndex === 'x' || charAtIndex === 'X') {\n var charAtNextIndex = candidate.charAt(index + 1);\n\n if (charAtNextIndex === 'x' || charAtNextIndex === 'X') {\n // This is the carrier code case, in which the 'X's always precede the national\n // significant number.\n index++;\n\n if (util.isNumberMatch(number, candidate.substring(index)) != MatchType.NSN_MATCH) {\n return false;\n } // This is the extension sign case, in which the 'x' or 'X' should always precede the\n // extension number.\n\n } else if (parseDigits(candidate.substring(index)) !== number.ext) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nfunction isNationalPrefixPresentIfRequired(number, _metadata) {\n // First, check how we deduced the country code. If it was written in international format, then\n // the national prefix is not required.\n if (number.getCountryCodeSource() != 'FROM_DEFAULT_COUNTRY') {\n return true;\n }\n\n var phoneNumberRegion = util.getRegionCodeForCountryCode(number.getCountryCode());\n var metadata = util.getMetadataForRegion(phoneNumberRegion);\n\n if (metadata == null) {\n return true;\n } // Check if a national prefix should be present when formatting this number.\n\n\n var nationalNumber = util.getNationalSignificantNumber(number);\n var formatRule = util.chooseFormattingPatternForNumber(metadata.numberFormats(), nationalNumber); // To do this, we check that a national prefix formatting rule was present\n // and that it wasn't just the first-group symbol ($1) with punctuation.\n\n if (formatRule && formatRule.getNationalPrefixFormattingRule().length > 0) {\n if (formatRule.getNationalPrefixOptionalWhenFormatting()) {\n // The national-prefix is optional in these cases, so we don't need to check if it was\n // present.\n return true;\n }\n\n if (PhoneNumberUtil.formattingRuleHasFirstGroupOnly(formatRule.getNationalPrefixFormattingRule())) {\n // National Prefix not needed for this number.\n return true;\n } // Normalize the remainder.\n\n\n var rawInputCopy = PhoneNumberUtil.normalizeDigitsOnly(number.getRawInput()); // Check if we found a national prefix and/or carrier code at the start of the raw input, and\n // return the result.\n\n return util.maybeStripNationalPrefixAndCarrierCode(rawInputCopy, metadata, null);\n }\n\n return true;\n}\n\nexport function containsMoreThanOneSlashInNationalNumber(number, candidate) {\n var firstSlashInBodyIndex = candidate.indexOf('/');\n\n if (firstSlashInBodyIndex < 0) {\n // No slashes, this is okay.\n return false;\n } // Now look for a second one.\n\n\n var secondSlashInBodyIndex = candidate.indexOf('/', firstSlashInBodyIndex + 1);\n\n if (secondSlashInBodyIndex < 0) {\n // Only one slash, this is okay.\n return false;\n } // If the first slash is after the country calling code, this is permitted.\n\n\n var candidateHasCountryCode = number.getCountryCodeSource() === CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN || number.getCountryCodeSource() === CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN;\n\n if (candidateHasCountryCode && PhoneNumberUtil.normalizeDigitsOnly(candidate.substring(0, firstSlashInBodyIndex)) === String(number.getCountryCode())) {\n // Any more slashes and this is illegal.\n return candidate.slice(secondSlashInBodyIndex + 1).indexOf('/') >= 0;\n }\n\n return true;\n}\n\nfunction checkNumberGroupingIsValid(number, candidate, metadata, checkGroups, regExpCache) {\n var normalizedCandidate = normalizeDigits(candidate, true\n /* keep non-digits */\n );\n var formattedNumberGroups = getNationalNumberGroups(metadata, number, null);\n\n if (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) {\n return true;\n } // If this didn't pass, see if there are any alternate formats that match, and try them instead.\n\n\n var alternateFormats = MetadataManager.getAlternateFormatsForCountry(number.getCountryCode());\n var nationalSignificantNumber = util.getNationalSignificantNumber(number);\n\n if (alternateFormats) {\n for (var _iterator = _createForOfIteratorHelperLoose(alternateFormats.numberFormats()), _step; !(_step = _iterator()).done;) {\n var alternateFormat = _step.value;\n\n if (alternateFormat.leadingDigitsPatterns().length > 0) {\n // There is only one leading digits pattern for alternate formats.\n var leadingDigitsRegExp = regExpCache.getPatternForRegExp('^' + alternateFormat.leadingDigitsPatterns()[0]);\n\n if (!leadingDigitsRegExp.test(nationalSignificantNumber)) {\n // Leading digits don't match; try another one.\n continue;\n }\n }\n\n formattedNumberGroups = getNationalNumberGroups(metadata, number, alternateFormat);\n\n if (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) {\n return true;\n }\n }\n }\n\n return false;\n}\n/**\r\n * Helper method to get the national-number part of a number, formatted without any national\r\n * prefix, and return it as a set of digit blocks that would be formatted together following\r\n * standard formatting rules.\r\n */\n\n\nfunction getNationalNumberGroups(metadata, number, formattingPattern) {\n if (formattingPattern) {\n // We format the NSN only, and split that according to the separator.\n var nationalSignificantNumber = util.getNationalSignificantNumber(number);\n return util.formatNsnUsingPattern(nationalSignificantNumber, formattingPattern, 'RFC3966', metadata).split('-');\n } // This will be in the format +CC-DG1-DG2-DGX;ext=EXT where DG1..DGX represents groups of digits.\n\n\n var rfc3966Format = formatNumber(number, 'RFC3966', metadata); // We remove the extension part from the formatted string before splitting it into different\n // groups.\n\n var endIndex = rfc3966Format.indexOf(';');\n\n if (endIndex < 0) {\n endIndex = rfc3966Format.length;\n } // The country-code will have a '-' following it.\n\n\n var startIndex = rfc3966Format.indexOf('-') + 1;\n return rfc3966Format.slice(startIndex, endIndex).split('-');\n}\n\nfunction allNumberGroupsAreExactlyPresent(metadata, number, normalizedCandidate, formattedNumberGroups) {\n var candidateGroups = normalizedCandidate.split(NON_DIGITS_PATTERN); // Set this to the last group, skipping it if the number has an extension.\n\n var candidateNumberGroupIndex = number.hasExtension() ? candidateGroups.length - 2 : candidateGroups.length - 1; // First we check if the national significant number is formatted as a block.\n // We use contains and not equals, since the national significant number may be present with\n // a prefix such as a national number prefix, or the country code itself.\n\n if (candidateGroups.length == 1 || candidateGroups[candidateNumberGroupIndex].contains(util.getNationalSignificantNumber(number))) {\n return true;\n } // Starting from the end, go through in reverse, excluding the first group, and check the\n // candidate and number groups are the same.\n\n\n var formattedNumberGroupIndex = formattedNumberGroups.length - 1;\n\n while (formattedNumberGroupIndex > 0 && candidateNumberGroupIndex >= 0) {\n if (candidateGroups[candidateNumberGroupIndex] !== formattedNumberGroups[formattedNumberGroupIndex]) {\n return false;\n }\n\n formattedNumberGroupIndex--;\n candidateNumberGroupIndex--;\n } // Now check the first group. There may be a national prefix at the start, so we only check\n // that the candidate group ends with the formatted number group.\n\n\n return candidateNumberGroupIndex >= 0 && endsWith(candidateGroups[candidateNumberGroupIndex], formattedNumberGroups[0]);\n}\n\nfunction allNumberGroupsRemainGrouped(metadata, number, normalizedCandidate, formattedNumberGroups) {\n var fromIndex = 0;\n\n if (number.getCountryCodeSource() !== CountryCodeSource.FROM_DEFAULT_COUNTRY) {\n // First skip the country code if the normalized candidate contained it.\n var countryCode = String(number.getCountryCode());\n fromIndex = normalizedCandidate.indexOf(countryCode) + countryCode.length();\n } // Check each group of consecutive digits are not broken into separate groupings in the\n // {@code normalizedCandidate} string.\n\n\n for (var i = 0; i < formattedNumberGroups.length; i++) {\n // Fails if the substring of {@code normalizedCandidate} starting from {@code fromIndex}\n // doesn't contain the consecutive digits in formattedNumberGroups[i].\n fromIndex = normalizedCandidate.indexOf(formattedNumberGroups[i], fromIndex);\n\n if (fromIndex < 0) {\n return false;\n } // Moves {@code fromIndex} forward.\n\n\n fromIndex += formattedNumberGroups[i].length();\n\n if (i == 0 && fromIndex < normalizedCandidate.length()) {\n // We are at the position right after the NDC. We get the region used for formatting\n // information based on the country code in the phone number, rather than the number itself,\n // as we do not need to distinguish between different countries with the same country\n // calling code and this is faster.\n var region = util.getRegionCodeForCountryCode(number.getCountryCode());\n\n if (util.getNddPrefixForRegion(region, true) != null && Character.isDigit(normalizedCandidate.charAt(fromIndex))) {\n // This means there is no formatting symbol after the NDC. In this case, we only\n // accept the number if there is no formatting symbol at all in the number, except\n // for extensions. This is only important for countries with national prefixes.\n var nationalSignificantNumber = util.getNationalSignificantNumber(number);\n return startsWith(normalizedCandidate.slice(fromIndex - formattedNumberGroups[i].length), nationalSignificantNumber);\n }\n }\n } // The check here makes sure that we haven't mistakenly already used the extension to\n // match the last group of the subscriber number. Note the extension cannot have\n // formatting in-between digits.\n\n\n return normalizedCandidate.slice(fromIndex).contains(number.getExtension());\n}\n//# sourceMappingURL=Leniency.js.map","import { trimAfterFirstMatch } from './util.js'; // Regular expression of characters typically used to start a second phone number for the purposes\n// of parsing. This allows us to strip off parts of the number that are actually the start of\n// another number, such as for: (530) 583-6985 x302/x2303 -> the second extension here makes this\n// actually two phone numbers, (530) 583-6985 x302 and (530) 583-6985 x2303. We remove the second\n// extension so that the first number is parsed correctly.\n//\n// Matches a slash (\\ or /) followed by a space followed by an `x`.\n//\n\nvar SECOND_NUMBER_START_PATTERN = /[\\\\/] *x/;\nexport default function parsePreCandidate(candidate) {\n // Check for extra numbers at the end.\n // TODO: This is the place to start when trying to support extraction of multiple phone number\n // from split notations (+41 79 123 45 67 / 68).\n return trimAfterFirstMatch(SECOND_NUMBER_START_PATTERN, candidate);\n}\n//# sourceMappingURL=parsePreCandidate.js.map","// Matches strings that look like dates using \"/\" as a separator.\n// Examples: 3/10/2011, 31/10/96 or 08/31/95.\nvar SLASH_SEPARATED_DATES = /(?:(?:[0-3]?\\d\\/[01]?\\d)|(?:[01]?\\d\\/[0-3]?\\d))\\/(?:[12]\\d)?\\d{2}/; // Matches timestamps.\n// Examples: \"2012-01-02 08:00\".\n// Note that the reg-ex does not include the\n// trailing \":\\d\\d\" -- that is covered by TIME_STAMPS_SUFFIX.\n\nvar TIME_STAMPS = /[12]\\d{3}[-/]?[01]\\d[-/]?[0-3]\\d +[0-2]\\d$/;\nvar TIME_STAMPS_SUFFIX_LEADING = /^:[0-5]\\d/;\nexport default function isValidPreCandidate(candidate, offset, text) {\n // Skip a match that is more likely to be a date.\n if (SLASH_SEPARATED_DATES.test(candidate)) {\n return false;\n } // Skip potential time-stamps.\n\n\n if (TIME_STAMPS.test(candidate)) {\n var followingText = text.slice(offset + candidate.length);\n\n if (TIME_STAMPS_SUFFIX_LEADING.test(followingText)) {\n return false;\n }\n }\n\n return true;\n}\n//# sourceMappingURL=isValidPreCandidate.js.map","// Copy-pasted from `PhoneNumberMatcher.js`.\nimport { PLUS_CHARS } from '../constants.js';\nimport { limit } from './util.js';\nimport { isLatinLetter, isInvalidPunctuationSymbol } from './utf-8.js';\nvar OPENING_PARENS = \"(\\\\[\\uFF08\\uFF3B\";\nvar CLOSING_PARENS = \")\\\\]\\uFF09\\uFF3D\";\nvar NON_PARENS = \"[^\".concat(OPENING_PARENS).concat(CLOSING_PARENS, \"]\");\nexport var LEAD_CLASS = \"[\".concat(OPENING_PARENS).concat(PLUS_CHARS, \"]\"); // Punctuation that may be at the start of a phone number - brackets and plus signs.\n\nvar LEAD_CLASS_LEADING = new RegExp('^' + LEAD_CLASS); // Limit on the number of pairs of brackets in a phone number.\n\nvar BRACKET_PAIR_LIMIT = limit(0, 3);\n/**\r\n * Pattern to check that brackets match. Opening brackets should be closed within a phone number.\r\n * This also checks that there is something inside the brackets. Having no brackets at all is also\r\n * fine.\r\n *\r\n * An opening bracket at the beginning may not be closed, but subsequent ones should be. It's\r\n * also possible that the leading bracket was dropped, so we shouldn't be surprised if we see a\r\n * closing bracket first. We limit the sets of brackets in a phone number to four.\r\n */\n\nvar MATCHING_BRACKETS_ENTIRE = new RegExp('^' + \"(?:[\" + OPENING_PARENS + \"])?\" + \"(?:\" + NON_PARENS + \"+\" + \"[\" + CLOSING_PARENS + \"])?\" + NON_PARENS + \"+\" + \"(?:[\" + OPENING_PARENS + \"]\" + NON_PARENS + \"+[\" + CLOSING_PARENS + \"])\" + BRACKET_PAIR_LIMIT + NON_PARENS + \"*\" + '$');\n/**\r\n * Matches strings that look like publication pages. Example:\r\n *

Computing Complete Answers to Queries in the Presence of Limited Access Patterns.\r\n * Chen Li. VLDB J. 12(3): 211-227 (2003).
\r\n *\r\n * The string \"211-227 (2003)\" is not a telephone number.\r\n */\n\nvar PUB_PAGES = /\\d{1,5}-+\\d{1,5}\\s{0,4}\\(\\d{1,4}/;\nexport default function isValidCandidate(candidate, offset, text, leniency) {\n // Check the candidate doesn't contain any formatting\n // which would indicate that it really isn't a phone number.\n if (!MATCHING_BRACKETS_ENTIRE.test(candidate) || PUB_PAGES.test(candidate)) {\n return;\n } // If leniency is set to VALID or stricter, we also want to skip numbers that are surrounded\n // by Latin alphabetic characters, to skip cases like abc8005001234 or 8005001234def.\n\n\n if (leniency !== 'POSSIBLE') {\n // If the candidate is not at the start of the text,\n // and does not start with phone-number punctuation,\n // check the previous character.\n if (offset > 0 && !LEAD_CLASS_LEADING.test(candidate)) {\n var previousChar = text[offset - 1]; // We return null if it is a latin letter or an invalid punctuation symbol.\n\n if (isInvalidPunctuationSymbol(previousChar) || isLatinLetter(previousChar)) {\n return false;\n }\n }\n\n var lastCharIndex = offset + candidate.length;\n\n if (lastCharIndex < text.length) {\n var nextChar = text[lastCharIndex];\n\n if (isInvalidPunctuationSymbol(nextChar) || isLatinLetter(nextChar)) {\n return false;\n }\n }\n }\n\n return true;\n}\n//# sourceMappingURL=isValidCandidate.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/**\r\n * A port of Google's `PhoneNumberMatcher.java`.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberMatcher.java\r\n * Date: 08.03.2018.\r\n */\nimport PhoneNumber from './PhoneNumber.js';\nimport { MAX_LENGTH_FOR_NSN, MAX_LENGTH_COUNTRY_CODE, VALID_PUNCTUATION } from './constants.js';\nimport createExtensionPattern from './helpers/extension/createExtensionPattern.js';\nimport RegExpCache from './findNumbers/RegExpCache.js';\nimport { limit, trimAfterFirstMatch } from './findNumbers/util.js';\nimport { _pL, _pN, pZ, PZ, pNd } from './findNumbers/utf-8.js';\nimport Leniency from './findNumbers/Leniency.js';\nimport parsePreCandidate from './findNumbers/parsePreCandidate.js';\nimport isValidPreCandidate from './findNumbers/isValidPreCandidate.js';\nimport isValidCandidate, { LEAD_CLASS } from './findNumbers/isValidCandidate.js';\nimport { isSupportedCountry } from './metadata.js';\nimport parseNumber from './parse_.js';\nvar EXTN_PATTERNS_FOR_MATCHING = createExtensionPattern('matching');\n/**\r\n * Patterns used to extract phone numbers from a larger phone-number-like pattern. These are\r\n * ordered according to specificity. For example, white-space is last since that is frequently\r\n * used in numbers, not just to separate two numbers. We have separate patterns since we don't\r\n * want to break up the phone-number-like text on more than one different kind of symbol at one\r\n * time, although symbols of the same type (e.g. space) can be safely grouped together.\r\n *\r\n * Note that if there is a match, we will always check any text found up to the first match as\r\n * well.\r\n */\n\nvar INNER_MATCHES = [// Breaks on the slash - e.g. \"651-234-2345/332-445-1234\"\n'\\\\/+(.*)/', // Note that the bracket here is inside the capturing group, since we consider it part of the\n// phone number. Will match a pattern like \"(650) 223 3345 (754) 223 3321\".\n'(\\\\([^(]*)', // Breaks on a hyphen - e.g. \"12345 - 332-445-1234 is my number.\"\n// We require a space on either side of the hyphen for it to be considered a separator.\n\"(?:\".concat(pZ, \"-|-\").concat(pZ, \")\").concat(pZ, \"*(.+)\"), // Various types of wide hyphens. Note we have decided not to enforce a space here, since it's\n// possible that it's supposed to be used to break two numbers without spaces, and we haven't\n// seen many instances of it used within a number.\n\"[\\u2012-\\u2015\\uFF0D]\".concat(pZ, \"*(.+)\"), // Breaks on a full stop - e.g. \"12345. 332-445-1234 is my number.\"\n\"\\\\.+\".concat(pZ, \"*([^.]+)\"), // Breaks on space - e.g. \"3324451234 8002341234\"\n\"\".concat(pZ, \"+(\").concat(PZ, \"+)\")]; // Limit on the number of leading (plus) characters.\n\nvar leadLimit = limit(0, 2); // Limit on the number of consecutive punctuation characters.\n\nvar punctuationLimit = limit(0, 4);\n/* The maximum number of digits allowed in a digit-separated block. As we allow all digits in a\r\n * single block, set high enough to accommodate the entire national number and the international\r\n * country code. */\n\nvar digitBlockLimit = MAX_LENGTH_FOR_NSN + MAX_LENGTH_COUNTRY_CODE; // Limit on the number of blocks separated by punctuation.\n// Uses digitBlockLimit since some formats use spaces to separate each digit.\n\nvar blockLimit = limit(0, digitBlockLimit);\n/* A punctuation sequence allowing white space. */\n\nvar punctuation = \"[\".concat(VALID_PUNCTUATION, \"]\") + punctuationLimit; // A digits block without punctuation.\n\nvar digitSequence = pNd + limit(1, digitBlockLimit);\n/**\r\n * Phone number pattern allowing optional punctuation.\r\n * The phone number pattern used by `find()`, similar to\r\n * VALID_PHONE_NUMBER, but with the following differences:\r\n *
    \r\n *
  • All captures are limited in order to place an upper bound to the text matched by the\r\n * pattern.\r\n *
      \r\n *
    • Leading punctuation / plus signs are limited.\r\n *
    • Consecutive occurrences of punctuation are limited.\r\n *
    • Number of digits is limited.\r\n *
    \r\n *
  • No whitespace is allowed at the start or end.\r\n *
  • No alpha digits (vanity numbers such as 1-800-SIX-FLAGS) are currently supported.\r\n *
\r\n */\n\nvar PATTERN = '(?:' + LEAD_CLASS + punctuation + ')' + leadLimit + digitSequence + '(?:' + punctuation + digitSequence + ')' + blockLimit + '(?:' + EXTN_PATTERNS_FOR_MATCHING + ')?'; // Regular expression of trailing characters that we want to remove.\n// We remove all characters that are not alpha or numerical characters.\n// The hash character is retained here, as it may signify\n// the previous block was an extension.\n//\n// // Don't know what does '&&' mean here.\n// const UNWANTED_END_CHAR_PATTERN = new RegExp(`[[\\\\P{N}&&\\\\P{L}]&&[^#]]+$`)\n//\n\nvar UNWANTED_END_CHAR_PATTERN = new RegExp(\"[^\".concat(_pN).concat(_pL, \"#]+$\"));\nvar NON_DIGITS_PATTERN = /(\\D+)/;\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1;\n/**\r\n * A stateful class that finds and extracts telephone numbers from {@linkplain CharSequence text}.\r\n * Instances can be created using the {@linkplain PhoneNumberUtil#findNumbers factory methods} in\r\n * {@link PhoneNumberUtil}.\r\n *\r\n *

Vanity numbers (phone numbers using alphabetic digits such as 1-800-SIX-FLAGS are\r\n * not found.\r\n *\r\n *

This class is not thread-safe.\r\n */\n\nvar PhoneNumberMatcher = /*#__PURE__*/function () {\n /**\r\n * Creates a new instance. See the factory methods in {@link PhoneNumberUtil} on how to obtain a\r\n * new instance.\r\n *\r\n * @param util the phone number util to use\r\n * @param text the character sequence that we will search, null for no text\r\n * @param country the country to assume for phone numbers not written in international format\r\n * (with a leading plus, or with the international dialing prefix of the specified region).\r\n * May be null or \"ZZ\" if only numbers with a leading plus should be\r\n * considered.\r\n * @param leniency the leniency to use when evaluating candidate phone numbers\r\n * @param maxTries the maximum number of invalid numbers to try before giving up on the text.\r\n * This is to cover degenerate cases where the text has a lot of false positives in it. Must\r\n * be {@code >= 0}.\r\n */\n function PhoneNumberMatcher() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var metadata = arguments.length > 2 ? arguments[2] : undefined;\n\n _classCallCheck(this, PhoneNumberMatcher);\n\n options = _objectSpread(_objectSpread({}, options), {}, {\n defaultCallingCode: options.defaultCallingCode,\n defaultCountry: options.defaultCountry && isSupportedCountry(options.defaultCountry, metadata) ? options.defaultCountry : undefined,\n leniency: options.leniency || options.extended ? 'POSSIBLE' : 'VALID',\n maxTries: options.maxTries || MAX_SAFE_INTEGER\n });\n\n if (!options.leniency) {\n throw new TypeError('`Leniency` not supplied');\n }\n\n if (options.maxTries < 0) {\n throw new TypeError('`maxTries` not supplied');\n }\n\n this.text = text;\n this.options = options;\n this.metadata = metadata;\n /** The degree of validation requested. */\n\n this.leniency = Leniency[options.leniency];\n\n if (!this.leniency) {\n throw new TypeError(\"Unknown leniency: \".concat(options.leniency, \".\"));\n }\n /** The maximum number of retries after matching an invalid number. */\n\n\n this.maxTries = options.maxTries;\n this.PATTERN = new RegExp(PATTERN, 'ig');\n /** The iteration tristate. */\n\n this.state = 'NOT_READY';\n /** The next index to start searching at. Undefined in {@link State#DONE}. */\n\n this.searchIndex = 0; // A cache for frequently used country-specific regular expressions. Set to 32 to cover ~2-3\n // countries being used for the same doc with ~10 patterns for each country. Some pages will have\n // a lot more countries in use, but typically fewer numbers for each so expanding the cache for\n // that use-case won't have a lot of benefit.\n\n this.regExpCache = new RegExpCache(32);\n }\n /**\r\n * Attempts to find the next subsequence in the searched sequence on or after {@code searchIndex}\r\n * that represents a phone number. Returns the next match, null if none was found.\r\n *\r\n * @param index the search index to start searching at\r\n * @return the phone number match found, null if none can be found\r\n */\n\n\n _createClass(PhoneNumberMatcher, [{\n key: \"find\",\n value: function find() {\n // // Reset the regular expression.\n // this.PATTERN.lastIndex = index\n var matches;\n\n while (this.maxTries > 0 && (matches = this.PATTERN.exec(this.text)) !== null) {\n var candidate = matches[0];\n var offset = matches.index;\n candidate = parsePreCandidate(candidate);\n\n if (isValidPreCandidate(candidate, offset, this.text)) {\n var match = // Try to come up with a valid match given the entire candidate.\n this.parseAndVerify(candidate, offset, this.text) // If that failed, try to find an \"inner match\" -\n // there might be a phone number within this candidate.\n || this.extractInnerMatch(candidate, offset, this.text);\n\n if (match) {\n if (this.options.v2) {\n var phoneNumber = new PhoneNumber(match.country || match.countryCallingCode, match.phone, this.metadata);\n\n if (match.ext) {\n phoneNumber.ext = match.ext;\n }\n\n return {\n startsAt: match.startsAt,\n endsAt: match.endsAt,\n number: phoneNumber\n };\n }\n\n return match;\n }\n }\n\n this.maxTries--;\n }\n }\n /**\r\n * Attempts to extract a match from `substring`\r\n * if the substring itself does not qualify as a match.\r\n */\n\n }, {\n key: \"extractInnerMatch\",\n value: function extractInnerMatch(substring, offset, text) {\n for (var _iterator = _createForOfIteratorHelperLoose(INNER_MATCHES), _step; !(_step = _iterator()).done;) {\n var innerMatchPattern = _step.value;\n var isFirstMatch = true;\n var candidateMatch = void 0;\n var innerMatchRegExp = new RegExp(innerMatchPattern, 'g');\n\n while (this.maxTries > 0 && (candidateMatch = innerMatchRegExp.exec(substring)) !== null) {\n if (isFirstMatch) {\n // We should handle any group before this one too.\n var _candidate = trimAfterFirstMatch(UNWANTED_END_CHAR_PATTERN, substring.slice(0, candidateMatch.index));\n\n var _match = this.parseAndVerify(_candidate, offset, text);\n\n if (_match) {\n return _match;\n }\n\n this.maxTries--;\n isFirstMatch = false;\n }\n\n var candidate = trimAfterFirstMatch(UNWANTED_END_CHAR_PATTERN, candidateMatch[1]); // Java code does `groupMatcher.start(1)` here,\n // but there's no way in javascript to get a `candidate` start index,\n // therefore resort to using this kind of an approximation.\n // (`groupMatcher` is called `candidateInSubstringMatch` in this javascript port)\n // https://stackoverflow.com/questions/15934353/get-index-of-each-capture-in-a-javascript-regex\n\n var candidateIndexGuess = substring.indexOf(candidate, candidateMatch.index);\n var match = this.parseAndVerify(candidate, offset + candidateIndexGuess, text);\n\n if (match) {\n return match;\n }\n\n this.maxTries--;\n }\n }\n }\n /**\r\n * Parses a phone number from the `candidate` using `parseNumber` and\r\n * verifies it matches the requested `leniency`. If parsing and verification succeed,\r\n * a corresponding `PhoneNumberMatch` is returned, otherwise this method returns `null`.\r\n *\r\n * @param candidate the candidate match\r\n * @param offset the offset of {@code candidate} within {@link #text}\r\n * @return the parsed and validated phone number match, or null\r\n */\n\n }, {\n key: \"parseAndVerify\",\n value: function parseAndVerify(candidate, offset, text) {\n if (!isValidCandidate(candidate, offset, text, this.options.leniency)) {\n return;\n }\n\n var number = parseNumber(candidate, {\n extended: true,\n defaultCountry: this.options.defaultCountry,\n defaultCallingCode: this.options.defaultCallingCode\n }, this.metadata);\n\n if (!number.possible) {\n return;\n }\n\n if (this.leniency(number, candidate, this.metadata, this.regExpCache)) {\n // // We used parseAndKeepRawInput to create this number,\n // // but for now we don't return the extra values parsed.\n // // TODO: stop clearing all values here and switch all users over\n // // to using rawInput() rather than the rawString() of PhoneNumberMatch.\n // number.clearCountryCodeSource()\n // number.clearRawInput()\n // number.clearPreferredDomesticCarrierCode()\n var result = {\n startsAt: offset,\n endsAt: offset + candidate.length,\n phone: number.phone\n };\n\n if (number.country && number.country !== '001') {\n result.country = number.country;\n } else {\n result.countryCallingCode = number.countryCallingCode;\n }\n\n if (number.ext) {\n result.ext = number.ext;\n }\n\n return result;\n }\n }\n }, {\n key: \"hasNext\",\n value: function hasNext() {\n if (this.state === 'NOT_READY') {\n this.lastMatch = this.find(); // (this.searchIndex)\n\n if (this.lastMatch) {\n // this.searchIndex = this.lastMatch.endsAt\n this.state = 'READY';\n } else {\n this.state = 'DONE';\n }\n }\n\n return this.state === 'READY';\n }\n }, {\n key: \"next\",\n value: function next() {\n // Check the state and find the next match as a side-effect if necessary.\n if (!this.hasNext()) {\n throw new Error('No next element');\n } // Don't retain that memory any longer than necessary.\n\n\n var result = this.lastMatch;\n this.lastMatch = null;\n this.state = 'NOT_READY';\n return result;\n }\n }]);\n\n return PhoneNumberMatcher;\n}();\n\nexport { PhoneNumberMatcher as default };\n//# sourceMappingURL=PhoneNumberMatcher.js.map","import PhoneNumberMatcher from './PhoneNumberMatcher.js';\nexport default function findNumbers(text, options, metadata) {\n var matcher = new PhoneNumberMatcher(text, options, metadata);\n var results = [];\n\n while (matcher.hasNext()) {\n results.push(matcher.next());\n }\n\n return results;\n}\n//# sourceMappingURL=findNumbers_.js.map","import _findNumbers from './findNumbers_.js';\nimport { normalizeArguments } from './parsePhoneNumber.js';\nexport default function findNumbers() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return _findNumbers(text, options, metadata);\n}\n//# sourceMappingURL=findNumbers.js.map","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { normalizeArguments } from './parsePhoneNumber.js';\nimport PhoneNumberMatcher from './PhoneNumberMatcher.js';\n/**\r\n * @return ES6 `for ... of` iterator.\r\n */\n\nexport default function searchNumbers() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n var matcher = new PhoneNumberMatcher(text, options, metadata);\n return _defineProperty({}, Symbol.iterator, function () {\n return {\n next: function next() {\n if (matcher.hasNext()) {\n return {\n done: false,\n value: matcher.next()\n };\n }\n\n return {\n done: true\n };\n }\n };\n });\n}\n//# sourceMappingURL=searchNumbers.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport findNumbers from './findNumbers.js';\nexport default function findPhoneNumbersInText(text, defaultCountry, options, metadata) {\n var args = getArguments(defaultCountry, options, metadata);\n return findNumbers(text, args.options, args.metadata);\n}\nexport function getArguments(defaultCountry, options, metadata) {\n if (metadata) {\n if (defaultCountry) {\n options = _objectSpread(_objectSpread({}, options), {}, {\n defaultCountry: defaultCountry\n });\n }\n } else {\n if (options) {\n metadata = options;\n\n if (defaultCountry) {\n if (is_object(defaultCountry)) {\n options = defaultCountry;\n } else {\n options = {\n defaultCountry: defaultCountry\n };\n }\n } else {\n options = undefined;\n }\n } else {\n metadata = defaultCountry;\n options = undefined;\n }\n }\n\n return {\n options: _objectSpread(_objectSpread({}, options), {}, {\n v2: true\n }),\n metadata: metadata\n };\n} // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\nvar is_object = function is_object(_) {\n return _typeof(_) === 'object';\n};\n//# sourceMappingURL=findPhoneNumbersInText.js.map","import searchNumbers from './searchNumbers.js';\nimport { getArguments } from './findPhoneNumbersInText.js';\nexport default function searchPhoneNumbersInText(text, defaultCountry, options, metadata) {\n var args = getArguments(defaultCountry, options, metadata);\n return searchNumbers(text, args.options, args.metadata);\n}\n//# sourceMappingURL=searchPhoneNumbersInText.js.map","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nvar AsYouTypeState = /*#__PURE__*/function () {\n function AsYouTypeState(_ref) {\n var onCountryChange = _ref.onCountryChange,\n onCallingCodeChange = _ref.onCallingCodeChange;\n\n _classCallCheck(this, AsYouTypeState);\n\n this.onCountryChange = onCountryChange;\n this.onCallingCodeChange = onCallingCodeChange;\n }\n\n _createClass(AsYouTypeState, [{\n key: \"reset\",\n value: function reset(defaultCountry, defaultCallingCode) {\n this.international = false;\n this.IDDPrefix = undefined;\n this.missingPlus = undefined;\n this.callingCode = undefined;\n this.digits = '';\n this.resetNationalSignificantNumber();\n this.initCountryAndCallingCode(defaultCountry, defaultCallingCode);\n }\n }, {\n key: \"resetNationalSignificantNumber\",\n value: function resetNationalSignificantNumber() {\n this.nationalSignificantNumber = this.getNationalDigits();\n this.nationalSignificantNumberMatchesInput = true;\n this.nationalPrefix = undefined;\n this.carrierCode = undefined;\n this.complexPrefixBeforeNationalSignificantNumber = undefined;\n }\n }, {\n key: \"update\",\n value: function update(properties) {\n for (var _i = 0, _Object$keys = Object.keys(properties); _i < _Object$keys.length; _i++) {\n var key = _Object$keys[_i];\n this[key] = properties[key];\n }\n }\n }, {\n key: \"initCountryAndCallingCode\",\n value: function initCountryAndCallingCode(country, callingCode) {\n this.setCountry(country);\n this.setCallingCode(callingCode);\n }\n }, {\n key: \"setCountry\",\n value: function setCountry(country) {\n this.country = country;\n this.onCountryChange(country);\n }\n }, {\n key: \"setCallingCode\",\n value: function setCallingCode(callingCode) {\n this.callingCode = callingCode;\n this.onCallingCodeChange(callingCode, this.country);\n }\n }, {\n key: \"startInternationalNumber\",\n value: function startInternationalNumber(country, callingCode) {\n // Prepend the `+` to parsed input.\n this.international = true; // If a default country was set then reset it\n // because an explicitly international phone\n // number is being entered.\n\n this.initCountryAndCallingCode(country, callingCode);\n }\n }, {\n key: \"appendDigits\",\n value: function appendDigits(nextDigits) {\n this.digits += nextDigits;\n }\n }, {\n key: \"appendNationalSignificantNumberDigits\",\n value: function appendNationalSignificantNumberDigits(nextDigits) {\n this.nationalSignificantNumber += nextDigits;\n }\n /**\r\n * Returns the part of `this.digits` that corresponds to the national number.\r\n * Basically, all digits that have been input by the user, except for the\r\n * international prefix and the country calling code part\r\n * (if the number is an international one).\r\n * @return {string}\r\n */\n\n }, {\n key: \"getNationalDigits\",\n value: function getNationalDigits() {\n if (this.international) {\n return this.digits.slice((this.IDDPrefix ? this.IDDPrefix.length : 0) + (this.callingCode ? this.callingCode.length : 0));\n }\n\n return this.digits;\n }\n }, {\n key: \"getDigitsWithoutInternationalPrefix\",\n value: function getDigitsWithoutInternationalPrefix() {\n if (this.international) {\n if (this.IDDPrefix) {\n return this.digits.slice(this.IDDPrefix.length);\n }\n }\n\n return this.digits;\n }\n }]);\n\n return AsYouTypeState;\n}();\n\nexport { AsYouTypeState as default };\n//# sourceMappingURL=AsYouTypeState.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n// Should be the same as `DIGIT_PLACEHOLDER` in `libphonenumber-metadata-generator`.\nexport var DIGIT_PLACEHOLDER = 'x'; // '\\u2008' (punctuation space)\n\nvar DIGIT_PLACEHOLDER_MATCHER = new RegExp(DIGIT_PLACEHOLDER); // Counts all occurences of a symbol in a string.\n// Unicode-unsafe (because using `.split()`).\n\nexport function countOccurences(symbol, string) {\n var count = 0; // Using `.split('')` to iterate through a string here\n // to avoid requiring `Symbol.iterator` polyfill.\n // `.split('')` is generally not safe for Unicode,\n // but in this particular case for counting brackets it is safe.\n // for (const character of string)\n\n for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) {\n var character = _step.value;\n\n if (character === symbol) {\n count++;\n }\n }\n\n return count;\n} // Repeats a string (or a symbol) N times.\n// http://stackoverflow.com/questions/202605/repeat-string-javascript\n\nexport function repeat(string, times) {\n if (times < 1) {\n return '';\n }\n\n var result = '';\n\n while (times > 1) {\n if (times & 1) {\n result += string;\n }\n\n times >>= 1;\n string += string;\n }\n\n return result + string;\n}\nexport function cutAndStripNonPairedParens(string, cutBeforeIndex) {\n if (string[cutBeforeIndex] === ')') {\n cutBeforeIndex++;\n }\n\n return stripNonPairedParens(string.slice(0, cutBeforeIndex));\n}\nexport function closeNonPairedParens(template, cut_before) {\n var retained_template = template.slice(0, cut_before);\n var opening_braces = countOccurences('(', retained_template);\n var closing_braces = countOccurences(')', retained_template);\n var dangling_braces = opening_braces - closing_braces;\n\n while (dangling_braces > 0 && cut_before < template.length) {\n if (template[cut_before] === ')') {\n dangling_braces--;\n }\n\n cut_before++;\n }\n\n return template.slice(0, cut_before);\n}\nexport function stripNonPairedParens(string) {\n var dangling_braces = [];\n var i = 0;\n\n while (i < string.length) {\n if (string[i] === '(') {\n dangling_braces.push(i);\n } else if (string[i] === ')') {\n dangling_braces.pop();\n }\n\n i++;\n }\n\n var start = 0;\n var cleared_string = '';\n dangling_braces.push(string.length);\n\n for (var _i = 0, _dangling_braces = dangling_braces; _i < _dangling_braces.length; _i++) {\n var index = _dangling_braces[_i];\n cleared_string += string.slice(start, index);\n start = index + 1;\n }\n\n return cleared_string;\n}\nexport function populateTemplateWithDigits(template, position, digits) {\n // Using `.split('')` to iterate through a string here\n // to avoid requiring `Symbol.iterator` polyfill.\n // `.split('')` is generally not safe for Unicode,\n // but in this particular case for `digits` it is safe.\n // for (const digit of digits)\n for (var _iterator2 = _createForOfIteratorHelperLoose(digits.split('')), _step2; !(_step2 = _iterator2()).done;) {\n var digit = _step2.value;\n\n // If there is room for more digits in current `template`,\n // then set the next digit in the `template`,\n // and return the formatted digits so far.\n // If more digits are entered than the current format could handle.\n if (template.slice(position + 1).search(DIGIT_PLACEHOLDER_MATCHER) < 0) {\n return;\n }\n\n position = template.search(DIGIT_PLACEHOLDER_MATCHER);\n template = template.replace(DIGIT_PLACEHOLDER_MATCHER, digit);\n }\n\n return [template, position];\n}\n//# sourceMappingURL=AsYouTypeFormatter.util.js.map","import checkNumberLength from './helpers/checkNumberLength.js';\nimport parseDigits from './helpers/parseDigits.js';\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js';\nexport default function formatCompleteNumber(state, format, _ref) {\n var metadata = _ref.metadata,\n shouldTryNationalPrefixFormattingRule = _ref.shouldTryNationalPrefixFormattingRule,\n getSeparatorAfterNationalPrefix = _ref.getSeparatorAfterNationalPrefix;\n var matcher = new RegExp(\"^(?:\".concat(format.pattern(), \")$\"));\n\n if (matcher.test(state.nationalSignificantNumber)) {\n return formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(state, format, {\n metadata: metadata,\n shouldTryNationalPrefixFormattingRule: shouldTryNationalPrefixFormattingRule,\n getSeparatorAfterNationalPrefix: getSeparatorAfterNationalPrefix\n });\n }\n}\nexport function canFormatCompleteNumber(nationalSignificantNumber, metadata) {\n return checkNumberLength(nationalSignificantNumber, metadata) === 'IS_POSSIBLE';\n}\n\nfunction formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(state, format, _ref2) {\n var metadata = _ref2.metadata,\n shouldTryNationalPrefixFormattingRule = _ref2.shouldTryNationalPrefixFormattingRule,\n getSeparatorAfterNationalPrefix = _ref2.getSeparatorAfterNationalPrefix;\n // `format` has already been checked for `nationalPrefix` requirement.\n var nationalSignificantNumber = state.nationalSignificantNumber,\n international = state.international,\n nationalPrefix = state.nationalPrefix,\n carrierCode = state.carrierCode; // Format the number with using `national_prefix_formatting_rule`.\n // If the resulting formatted number is a valid formatted number, then return it.\n //\n // Google's AsYouType formatter is different in a way that it doesn't try\n // to format using the \"national prefix formatting rule\", and instead it\n // simply prepends a national prefix followed by a \" \" character.\n // This code does that too, but as a fallback.\n // The reason is that \"national prefix formatting rule\" may use parentheses,\n // which wouldn't be included has it used the simpler Google's way.\n //\n\n if (shouldTryNationalPrefixFormattingRule(format)) {\n var formattedNumber = formatNationalNumber(state, format, {\n useNationalPrefixFormattingRule: true,\n getSeparatorAfterNationalPrefix: getSeparatorAfterNationalPrefix,\n metadata: metadata\n });\n\n if (formattedNumber) {\n return formattedNumber;\n }\n } // Format the number without using `national_prefix_formatting_rule`.\n\n\n return formatNationalNumber(state, format, {\n useNationalPrefixFormattingRule: false,\n getSeparatorAfterNationalPrefix: getSeparatorAfterNationalPrefix,\n metadata: metadata\n });\n}\n\nfunction formatNationalNumber(state, format, _ref3) {\n var metadata = _ref3.metadata,\n useNationalPrefixFormattingRule = _ref3.useNationalPrefixFormattingRule,\n getSeparatorAfterNationalPrefix = _ref3.getSeparatorAfterNationalPrefix;\n var formattedNationalNumber = formatNationalNumberUsingFormat(state.nationalSignificantNumber, format, {\n carrierCode: state.carrierCode,\n useInternationalFormat: state.international,\n withNationalPrefix: useNationalPrefixFormattingRule,\n metadata: metadata\n });\n\n if (!useNationalPrefixFormattingRule) {\n if (state.nationalPrefix) {\n // If a national prefix was extracted, then just prepend it,\n // followed by a \" \" character.\n formattedNationalNumber = state.nationalPrefix + getSeparatorAfterNationalPrefix(format) + formattedNationalNumber;\n } else if (state.complexPrefixBeforeNationalSignificantNumber) {\n formattedNationalNumber = state.complexPrefixBeforeNationalSignificantNumber + ' ' + formattedNationalNumber;\n }\n }\n\n if (isValidFormattedNationalNumber(formattedNationalNumber, state)) {\n return formattedNationalNumber;\n }\n} // Check that the formatted phone number contains exactly\n// the same digits that have been input by the user.\n// For example, when \"0111523456789\" is input for `AR` country,\n// the extracted `this.nationalSignificantNumber` is \"91123456789\",\n// which means that the national part of `this.digits` isn't simply equal to\n// `this.nationalPrefix` + `this.nationalSignificantNumber`.\n//\n// Also, a `format` can add extra digits to the `this.nationalSignificantNumber`\n// being formatted via `metadata[country].national_prefix_transform_rule`.\n// For example, for `VI` country, it prepends `340` to the national number,\n// and if this check hasn't been implemented, then there would be a bug\n// when `340` \"area coude\" is \"duplicated\" during input for `VI` country:\n// https://github.com/catamphetamine/libphonenumber-js/issues/318\n//\n// So, all these \"gotchas\" are filtered out.\n//\n// In the original Google's code, the comments say:\n// \"Check that we didn't remove nor add any extra digits when we matched\n// this formatting pattern. This usually happens after we entered the last\n// digit during AYTF. Eg: In case of MX, we swallow mobile token (1) when\n// formatted but AYTF should retain all the number entered and not change\n// in order to match a format (of same leading digits and length) display\n// in that way.\"\n// \"If it's the same (i.e entered number and format is same), then it's\n// safe to return this in formatted number as nothing is lost / added.\"\n// Otherwise, don't use this format.\n// https://github.com/google/libphonenumber/commit/3e7c1f04f5e7200f87fb131e6f85c6e99d60f510#diff-9149457fa9f5d608a11bb975c6ef4bc5\n// https://github.com/google/libphonenumber/commit/3ac88c7106e7dcb553bcc794b15f19185928a1c6#diff-2dcb77e833422ee304da348b905cde0b\n//\n\n\nfunction isValidFormattedNationalNumber(formattedNationalNumber, state) {\n return parseDigits(formattedNationalNumber) === state.getNationalDigits();\n}\n//# sourceMappingURL=AsYouTypeFormatter.complete.js.map","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nvar PatternParser = /*#__PURE__*/function () {\n function PatternParser() {\n _classCallCheck(this, PatternParser);\n }\n\n _createClass(PatternParser, [{\n key: \"parse\",\n value: function parse(pattern) {\n this.context = [{\n or: true,\n instructions: []\n }];\n this.parsePattern(pattern);\n\n if (this.context.length !== 1) {\n throw new Error('Non-finalized contexts left when pattern parse ended');\n }\n\n var _this$context$ = this.context[0],\n branches = _this$context$.branches,\n instructions = _this$context$.instructions;\n\n if (branches) {\n return {\n op: '|',\n args: branches.concat([expandSingleElementArray(instructions)])\n };\n }\n /* istanbul ignore if */\n\n\n if (instructions.length === 0) {\n throw new Error('Pattern is required');\n }\n\n if (instructions.length === 1) {\n return instructions[0];\n }\n\n return instructions;\n }\n }, {\n key: \"startContext\",\n value: function startContext(context) {\n this.context.push(context);\n }\n }, {\n key: \"endContext\",\n value: function endContext() {\n this.context.pop();\n }\n }, {\n key: \"getContext\",\n value: function getContext() {\n return this.context[this.context.length - 1];\n }\n }, {\n key: \"parsePattern\",\n value: function parsePattern(pattern) {\n if (!pattern) {\n throw new Error('Pattern is required');\n }\n\n var match = pattern.match(OPERATOR);\n\n if (!match) {\n if (ILLEGAL_CHARACTER_REGEXP.test(pattern)) {\n throw new Error(\"Illegal characters found in a pattern: \".concat(pattern));\n }\n\n this.getContext().instructions = this.getContext().instructions.concat(pattern.split(''));\n return;\n }\n\n var operator = match[1];\n var before = pattern.slice(0, match.index);\n var rightPart = pattern.slice(match.index + operator.length);\n\n switch (operator) {\n case '(?:':\n if (before) {\n this.parsePattern(before);\n }\n\n this.startContext({\n or: true,\n instructions: [],\n branches: []\n });\n break;\n\n case ')':\n if (!this.getContext().or) {\n throw new Error('\")\" operator must be preceded by \"(?:\" operator');\n }\n\n if (before) {\n this.parsePattern(before);\n }\n\n if (this.getContext().instructions.length === 0) {\n throw new Error('No instructions found after \"|\" operator in an \"or\" group');\n }\n\n var _this$getContext = this.getContext(),\n branches = _this$getContext.branches;\n\n branches.push(expandSingleElementArray(this.getContext().instructions));\n this.endContext();\n this.getContext().instructions.push({\n op: '|',\n args: branches\n });\n break;\n\n case '|':\n if (!this.getContext().or) {\n throw new Error('\"|\" operator can only be used inside \"or\" groups');\n }\n\n if (before) {\n this.parsePattern(before);\n } // The top-level is an implicit \"or\" group, if required.\n\n\n if (!this.getContext().branches) {\n // `branches` are not defined only for the root implicit \"or\" operator.\n\n /* istanbul ignore else */\n if (this.context.length === 1) {\n this.getContext().branches = [];\n } else {\n throw new Error('\"branches\" not found in an \"or\" group context');\n }\n }\n\n this.getContext().branches.push(expandSingleElementArray(this.getContext().instructions));\n this.getContext().instructions = [];\n break;\n\n case '[':\n if (before) {\n this.parsePattern(before);\n }\n\n this.startContext({\n oneOfSet: true\n });\n break;\n\n case ']':\n if (!this.getContext().oneOfSet) {\n throw new Error('\"]\" operator must be preceded by \"[\" operator');\n }\n\n this.endContext();\n this.getContext().instructions.push({\n op: '[]',\n args: parseOneOfSet(before)\n });\n break;\n\n /* istanbul ignore next */\n\n default:\n throw new Error(\"Unknown operator: \".concat(operator));\n }\n\n if (rightPart) {\n this.parsePattern(rightPart);\n }\n }\n }]);\n\n return PatternParser;\n}();\n\nexport { PatternParser as default };\n\nfunction parseOneOfSet(pattern) {\n var values = [];\n var i = 0;\n\n while (i < pattern.length) {\n if (pattern[i] === '-') {\n if (i === 0 || i === pattern.length - 1) {\n throw new Error(\"Couldn't parse a one-of set pattern: \".concat(pattern));\n }\n\n var prevValue = pattern[i - 1].charCodeAt(0) + 1;\n var nextValue = pattern[i + 1].charCodeAt(0) - 1;\n var value = prevValue;\n\n while (value <= nextValue) {\n values.push(String.fromCharCode(value));\n value++;\n }\n } else {\n values.push(pattern[i]);\n }\n\n i++;\n }\n\n return values;\n}\n\nvar ILLEGAL_CHARACTER_REGEXP = /[\\(\\)\\[\\]\\?\\:\\|]/;\nvar OPERATOR = new RegExp( // any of:\n'(' + // or operator\n'\\\\|' + // or\n'|' + // or group start\n'\\\\(\\\\?\\\\:' + // or\n'|' + // or group end\n'\\\\)' + // or\n'|' + // one-of set start\n'\\\\[' + // or\n'|' + // one-of set end\n'\\\\]' + ')');\n\nfunction expandSingleElementArray(array) {\n if (array.length === 1) {\n return array[0];\n }\n\n return array;\n}\n//# sourceMappingURL=AsYouTypeFormatter.PatternParser.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport PatternParser from './AsYouTypeFormatter.PatternParser.js';\n\nvar PatternMatcher = /*#__PURE__*/function () {\n function PatternMatcher(pattern) {\n _classCallCheck(this, PatternMatcher);\n\n this.matchTree = new PatternParser().parse(pattern);\n }\n\n _createClass(PatternMatcher, [{\n key: \"match\",\n value: function match(string) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n allowOverflow = _ref.allowOverflow;\n\n if (!string) {\n throw new Error('String is required');\n }\n\n var result = _match(string.split(''), this.matchTree, true);\n\n if (result && result.match) {\n delete result.matchedChars;\n }\n\n if (result && result.overflow) {\n if (!allowOverflow) {\n return;\n }\n }\n\n return result;\n }\n }]);\n\n return PatternMatcher;\n}();\n/**\r\n * Matches `characters` against a pattern compiled into a `tree`.\r\n * @param {string[]} characters\r\n * @param {Tree} tree — A pattern compiled into a `tree`. See the `*.d.ts` file for the description of the `tree` structure.\r\n * @param {boolean} last — Whether it's the last (rightmost) subtree on its level of the match tree.\r\n * @return {object} See the `*.d.ts` file for the description of the result object.\r\n */\n\n\nexport { PatternMatcher as default };\n\nfunction _match(characters, tree, last) {\n // If `tree` is a string, then `tree` is a single character.\n // That's because when a pattern is parsed, multi-character-string parts\n // of a pattern are compiled into arrays of single characters.\n // I still wrote this piece of code for a \"general\" hypothetical case\n // when `tree` could be a string of several characters, even though\n // such case is not possible with the current implementation.\n if (typeof tree === 'string') {\n var characterString = characters.join('');\n\n if (tree.indexOf(characterString) === 0) {\n // `tree` is always a single character.\n // If `tree.indexOf(characterString) === 0`\n // then `characters.length === tree.length`.\n\n /* istanbul ignore else */\n if (characters.length === tree.length) {\n return {\n match: true,\n matchedChars: characters\n };\n } // `tree` is always a single character.\n // If `tree.indexOf(characterString) === 0`\n // then `characters.length === tree.length`.\n\n /* istanbul ignore next */\n\n\n return {\n partialMatch: true // matchedChars: characters\n\n };\n }\n\n if (characterString.indexOf(tree) === 0) {\n if (last) {\n // The `else` path is not possible because `tree` is always a single character.\n // The `else` case for `characters.length > tree.length` would be\n // `characters.length <= tree.length` which means `characters.length <= 1`.\n // `characters` array can't be empty, so that means `characters === [tree]`,\n // which would also mean `tree.indexOf(characterString) === 0` and that'd mean\n // that the `if (tree.indexOf(characterString) === 0)` condition before this\n // `if` condition would be entered, and returned from there, not reaching this code.\n\n /* istanbul ignore else */\n if (characters.length > tree.length) {\n return {\n overflow: true\n };\n }\n }\n\n return {\n match: true,\n matchedChars: characters.slice(0, tree.length)\n };\n }\n\n return;\n }\n\n if (Array.isArray(tree)) {\n var restCharacters = characters.slice();\n var i = 0;\n\n while (i < tree.length) {\n var subtree = tree[i];\n\n var result = _match(restCharacters, subtree, last && i === tree.length - 1);\n\n if (!result) {\n return;\n } else if (result.overflow) {\n return result;\n } else if (result.match) {\n // Continue with the next subtree with the rest of the characters.\n restCharacters = restCharacters.slice(result.matchedChars.length);\n\n if (restCharacters.length === 0) {\n if (i === tree.length - 1) {\n return {\n match: true,\n matchedChars: characters\n };\n } else {\n return {\n partialMatch: true // matchedChars: characters\n\n };\n }\n }\n } else {\n /* istanbul ignore else */\n if (result.partialMatch) {\n return {\n partialMatch: true // matchedChars: characters\n\n };\n } else {\n throw new Error(\"Unsupported match result:\\n\".concat(JSON.stringify(result, null, 2)));\n }\n }\n\n i++;\n } // If `last` then overflow has already been checked\n // by the last element of the `tree` array.\n\n /* istanbul ignore if */\n\n\n if (last) {\n return {\n overflow: true\n };\n }\n\n return {\n match: true,\n matchedChars: characters.slice(0, characters.length - restCharacters.length)\n };\n }\n\n switch (tree.op) {\n case '|':\n var partialMatch;\n\n for (var _iterator = _createForOfIteratorHelperLoose(tree.args), _step; !(_step = _iterator()).done;) {\n var branch = _step.value;\n\n var _result = _match(characters, branch, last);\n\n if (_result) {\n if (_result.overflow) {\n return _result;\n } else if (_result.match) {\n return {\n match: true,\n matchedChars: _result.matchedChars\n };\n } else {\n /* istanbul ignore else */\n if (_result.partialMatch) {\n partialMatch = true;\n } else {\n throw new Error(\"Unsupported match result:\\n\".concat(JSON.stringify(_result, null, 2)));\n }\n }\n }\n }\n\n if (partialMatch) {\n return {\n partialMatch: true // matchedChars: ...\n\n };\n } // Not even a partial match.\n\n\n return;\n\n case '[]':\n for (var _iterator2 = _createForOfIteratorHelperLoose(tree.args), _step2; !(_step2 = _iterator2()).done;) {\n var _char = _step2.value;\n\n if (characters[0] === _char) {\n if (characters.length === 1) {\n return {\n match: true,\n matchedChars: characters\n };\n }\n\n if (last) {\n return {\n overflow: true\n };\n }\n\n return {\n match: true,\n matchedChars: [_char]\n };\n }\n } // No character matches.\n\n\n return;\n\n /* istanbul ignore next */\n\n default:\n throw new Error(\"Unsupported instruction tree: \".concat(tree));\n }\n}\n//# sourceMappingURL=AsYouTypeFormatter.PatternMatcher.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport { DIGIT_PLACEHOLDER, countOccurences, repeat, cutAndStripNonPairedParens, closeNonPairedParens, stripNonPairedParens, populateTemplateWithDigits } from './AsYouTypeFormatter.util.js';\nimport formatCompleteNumber, { canFormatCompleteNumber } from './AsYouTypeFormatter.complete.js';\nimport PatternMatcher from './AsYouTypeFormatter.PatternMatcher.js';\nimport parseDigits from './helpers/parseDigits.js';\nexport { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.util.js';\nimport { FIRST_GROUP_PATTERN } from './helpers/formatNationalNumberUsingFormat.js';\nimport { VALID_PUNCTUATION } from './constants.js';\nimport applyInternationalSeparatorStyle from './helpers/applyInternationalSeparatorStyle.js'; // Used in phone number format template creation.\n// Could be any digit, I guess.\n\nvar DUMMY_DIGIT = '9'; // I don't know why is it exactly `15`\n\nvar LONGEST_NATIONAL_PHONE_NUMBER_LENGTH = 15; // Create a phone number consisting only of the digit 9 that matches the\n// `number_pattern` by applying the pattern to the \"longest phone number\" string.\n\nvar LONGEST_DUMMY_PHONE_NUMBER = repeat(DUMMY_DIGIT, LONGEST_NATIONAL_PHONE_NUMBER_LENGTH); // A set of characters that, if found in a national prefix formatting rules, are an indicator to\n// us that we should separate the national prefix from the number when formatting.\n\nvar NATIONAL_PREFIX_SEPARATORS_PATTERN = /[- ]/; // Deprecated: Google has removed some formatting pattern related code from their repo.\n// https://github.com/googlei18n/libphonenumber/commit/a395b4fef3caf57c4bc5f082e1152a4d2bd0ba4c\n// \"We no longer have numbers in formatting matching patterns, only \\d.\"\n// Because this library supports generating custom metadata\n// some users may still be using old metadata so the relevant\n// code seems to stay until some next major version update.\n\nvar SUPPORT_LEGACY_FORMATTING_PATTERNS = true; // A pattern that is used to match character classes in regular expressions.\n// An example of a character class is \"[1-4]\".\n\nvar CREATE_CHARACTER_CLASS_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && function () {\n return /\\[([^\\[\\]])*\\]/g;\n}; // Any digit in a regular expression that actually denotes a digit. For\n// example, in the regular expression \"80[0-2]\\d{6,10}\", the first 2 digits\n// (8 and 0) are standalone digits, but the rest are not.\n// Two look-aheads are needed because the number following \\\\d could be a\n// two-digit number, since the phone number can be as long as 15 digits.\n\n\nvar CREATE_STANDALONE_DIGIT_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && function () {\n return /\\d(?=[^,}][^,}])/g;\n}; // A regular expression that is used to determine if a `format` is\n// suitable to be used in the \"as you type formatter\".\n// A `format` is suitable when the resulting formatted number has\n// the same digits as the user has entered.\n//\n// In the simplest case, that would mean that the format\n// doesn't add any additional digits when formatting a number.\n// Google says that it also shouldn't add \"star\" (`*`) characters,\n// like it does in some Israeli formats.\n// Such basic format would only contain \"valid punctuation\"\n// and \"captured group\" identifiers ($1, $2, etc).\n//\n// An example of a format that adds additional digits:\n//\n// Country: `AR` (Argentina).\n// Format:\n// {\n// \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\n// \"leading_digits_patterns\": [\"91\"],\n// \"national_prefix_formatting_rule\": \"0$1\",\n// \"format\": \"$2 15-$3-$4\",\n// \"international_format\": \"$1 $2 $3-$4\"\n// }\n//\n// In the format above, the `format` adds `15` to the digits when formatting a number.\n// A sidenote: this format actually is suitable because `national_prefix_for_parsing`\n// has previously removed `15` from a national number, so re-adding `15` in `format`\n// doesn't actually result in any extra digits added to user's input.\n// But verifying that would be a complex procedure, so the code chooses a simpler path:\n// it simply filters out all `format`s that contain anything but \"captured group\" ids.\n//\n// This regular expression is called `ELIGIBLE_FORMAT_PATTERN` in Google's\n// `libphonenumber` code.\n//\n\n\nvar NON_ALTERING_FORMAT_REG_EXP = new RegExp('[' + VALID_PUNCTUATION + ']*' + // Google developers say:\n// \"We require that the first matching group is present in the\n// output pattern to ensure no data is lost while formatting.\"\n'\\\\$1' + '[' + VALID_PUNCTUATION + ']*' + '(\\\\$\\\\d[' + VALID_PUNCTUATION + ']*)*' + '$'); // This is the minimum length of the leading digits of a phone number\n// to guarantee the first \"leading digits pattern\" for a phone number format\n// to be preemptive.\n\nvar MIN_LEADING_DIGITS_LENGTH = 3;\n\nvar AsYouTypeFormatter = /*#__PURE__*/function () {\n function AsYouTypeFormatter(_ref) {\n var state = _ref.state,\n metadata = _ref.metadata;\n\n _classCallCheck(this, AsYouTypeFormatter);\n\n this.metadata = metadata;\n this.resetFormat();\n }\n\n _createClass(AsYouTypeFormatter, [{\n key: \"resetFormat\",\n value: function resetFormat() {\n this.chosenFormat = undefined;\n this.template = undefined;\n this.nationalNumberTemplate = undefined;\n this.populatedNationalNumberTemplate = undefined;\n this.populatedNationalNumberTemplatePosition = -1;\n }\n }, {\n key: \"reset\",\n value: function reset(numberingPlan, state) {\n this.resetFormat();\n\n if (numberingPlan) {\n this.isNANP = numberingPlan.callingCode() === '1';\n this.matchingFormats = numberingPlan.formats();\n\n if (state.nationalSignificantNumber) {\n this.narrowDownMatchingFormats(state);\n }\n } else {\n this.isNANP = undefined;\n this.matchingFormats = [];\n }\n }\n /**\r\n * Formats an updated phone number.\r\n * @param {string} nextDigits — Additional phone number digits.\r\n * @param {object} state — `AsYouType` state.\r\n * @return {[string]} Returns undefined if the updated phone number can't be formatted using any of the available formats.\r\n */\n\n }, {\n key: \"format\",\n value: function format(nextDigits, state) {\n var _this = this;\n\n // See if the phone number digits can be formatted as a complete phone number.\n // If not, use the results from `formatNationalNumberWithNextDigits()`,\n // which formats based on the chosen formatting pattern.\n //\n // Attempting to format complete phone number first is how it's done\n // in Google's `libphonenumber`, so this library just follows it.\n // Google's `libphonenumber` code doesn't explain in detail why does it\n // attempt to format digits as a complete phone number\n // instead of just going with a previoulsy (or newly) chosen `format`:\n //\n // \"Checks to see if there is an exact pattern match for these digits.\n // If so, we should use this instead of any other formatting template\n // whose leadingDigitsPattern also matches the input.\"\n //\n if (canFormatCompleteNumber(state.nationalSignificantNumber, this.metadata)) {\n for (var _iterator = _createForOfIteratorHelperLoose(this.matchingFormats), _step; !(_step = _iterator()).done;) {\n var format = _step.value;\n var formattedCompleteNumber = formatCompleteNumber(state, format, {\n metadata: this.metadata,\n shouldTryNationalPrefixFormattingRule: function shouldTryNationalPrefixFormattingRule(format) {\n return _this.shouldTryNationalPrefixFormattingRule(format, {\n international: state.international,\n nationalPrefix: state.nationalPrefix\n });\n },\n getSeparatorAfterNationalPrefix: function getSeparatorAfterNationalPrefix(format) {\n return _this.getSeparatorAfterNationalPrefix(format);\n }\n });\n\n if (formattedCompleteNumber) {\n this.resetFormat();\n this.chosenFormat = format;\n this.setNationalNumberTemplate(formattedCompleteNumber.replace(/\\d/g, DIGIT_PLACEHOLDER), state);\n this.populatedNationalNumberTemplate = formattedCompleteNumber; // With a new formatting template, the matched position\n // using the old template needs to be reset.\n\n this.populatedNationalNumberTemplatePosition = this.template.lastIndexOf(DIGIT_PLACEHOLDER);\n return formattedCompleteNumber;\n }\n }\n } // Format the digits as a partial (incomplete) phone number\n // using the previously chosen formatting pattern (or a newly chosen one).\n\n\n return this.formatNationalNumberWithNextDigits(nextDigits, state);\n } // Formats the next phone number digits.\n\n }, {\n key: \"formatNationalNumberWithNextDigits\",\n value: function formatNationalNumberWithNextDigits(nextDigits, state) {\n var previouslyChosenFormat = this.chosenFormat; // Choose a format from the list of matching ones.\n\n var newlyChosenFormat = this.chooseFormat(state);\n\n if (newlyChosenFormat) {\n if (newlyChosenFormat === previouslyChosenFormat) {\n // If it can format the next (current) digits\n // using the previously chosen phone number format\n // then return the updated formatted number.\n return this.formatNextNationalNumberDigits(nextDigits);\n } else {\n // If a more appropriate phone number format\n // has been chosen for these \"leading digits\",\n // then re-format the national phone number part\n // using the newly selected format.\n return this.formatNextNationalNumberDigits(state.getNationalDigits());\n }\n }\n }\n }, {\n key: \"narrowDownMatchingFormats\",\n value: function narrowDownMatchingFormats(_ref2) {\n var _this2 = this;\n\n var nationalSignificantNumber = _ref2.nationalSignificantNumber,\n nationalPrefix = _ref2.nationalPrefix,\n international = _ref2.international;\n var leadingDigits = nationalSignificantNumber; // \"leading digits\" pattern list starts with a\n // \"leading digits\" pattern fitting a maximum of 3 leading digits.\n // So, after a user inputs 3 digits of a national (significant) phone number\n // this national (significant) number can already be formatted.\n // The next \"leading digits\" pattern is for 4 leading digits max,\n // and the \"leading digits\" pattern after it is for 5 leading digits max, etc.\n // This implementation is different from Google's\n // in that it searches for a fitting format\n // even if the user has entered less than\n // `MIN_LEADING_DIGITS_LENGTH` digits of a national number.\n // Because some leading digit patterns already match for a single first digit.\n\n var leadingDigitsPatternIndex = leadingDigits.length - MIN_LEADING_DIGITS_LENGTH;\n\n if (leadingDigitsPatternIndex < 0) {\n leadingDigitsPatternIndex = 0;\n }\n\n this.matchingFormats = this.matchingFormats.filter(function (format) {\n return _this2.formatSuits(format, international, nationalPrefix) && _this2.formatMatches(format, leadingDigits, leadingDigitsPatternIndex);\n }); // If there was a phone number format chosen\n // and it no longer holds given the new leading digits then reset it.\n // The test for this `if` condition is marked as:\n // \"Reset a chosen format when it no longer holds given the new leading digits\".\n // To construct a valid test case for this one can find a country\n // in `PhoneNumberMetadata.xml` yielding one format for 3 ``\n // and yielding another format for 4 `` (Australia in this case).\n\n if (this.chosenFormat && this.matchingFormats.indexOf(this.chosenFormat) === -1) {\n this.resetFormat();\n }\n }\n }, {\n key: \"formatSuits\",\n value: function formatSuits(format, international, nationalPrefix) {\n // When a prefix before a national (significant) number is\n // simply a national prefix, then it's parsed as `this.nationalPrefix`.\n // In more complex cases, a prefix before national (significant) number\n // could include a national prefix as well as some \"capturing groups\",\n // and in that case there's no info whether a national prefix has been parsed.\n // If national prefix is not used when formatting a phone number\n // using this format, but a national prefix has been entered by the user,\n // and was extracted, then discard such phone number format.\n // In Google's \"AsYouType\" formatter code, the equivalent would be this part:\n // https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L175-L184\n if (nationalPrefix && !format.usesNationalPrefix() && // !format.domesticCarrierCodeFormattingRule() &&\n !format.nationalPrefixIsOptionalWhenFormattingInNationalFormat()) {\n return false;\n } // If national prefix is mandatory for this phone number format\n // and there're no guarantees that a national prefix is present in user input\n // then discard this phone number format as not suitable.\n // In Google's \"AsYouType\" formatter code, the equivalent would be this part:\n // https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L185-L193\n\n\n if (!international && !nationalPrefix && format.nationalPrefixIsMandatoryWhenFormattingInNationalFormat()) {\n return false;\n }\n\n return true;\n }\n }, {\n key: \"formatMatches\",\n value: function formatMatches(format, leadingDigits, leadingDigitsPatternIndex) {\n var leadingDigitsPatternsCount = format.leadingDigitsPatterns().length; // If this format is not restricted to a certain\n // leading digits pattern then it fits.\n // The test case could be found by searching for \"leadingDigitsPatternsCount === 0\".\n\n if (leadingDigitsPatternsCount === 0) {\n return true;\n } // Start narrowing down the list of possible formats based on the leading digits.\n // (only previously matched formats take part in the narrowing down process)\n // `leading_digits_patterns` start with 3 digits min\n // and then go up from there one digit at a time.\n\n\n leadingDigitsPatternIndex = Math.min(leadingDigitsPatternIndex, leadingDigitsPatternsCount - 1);\n var leadingDigitsPattern = format.leadingDigitsPatterns()[leadingDigitsPatternIndex]; // Google imposes a requirement on the leading digits\n // to be minimum 3 digits long in order to be eligible\n // for checking those with a leading digits pattern.\n //\n // Since `leading_digits_patterns` start with 3 digits min,\n // Google's original `libphonenumber` library only starts\n // excluding any non-matching formats only when the\n // national number entered so far is at least 3 digits long,\n // otherwise format matching would give false negatives.\n //\n // For example, when the digits entered so far are `2`\n // and the leading digits pattern is `21` –\n // it's quite obvious in this case that the format could be the one\n // but due to the absence of further digits it would give false negative.\n //\n // Also, `leading_digits_patterns` doesn't always correspond to a single\n // digits count. For example, `60|8` pattern would already match `8`\n // but the `60` part would require having at least two leading digits,\n // so the whole pattern would require inputting two digits first in order to\n // decide on whether it matches the input, even when the input is \"80\".\n //\n // This library — `libphonenumber-js` — allows filtering by `leading_digits_patterns`\n // even when there's only 1 or 2 digits of the national (significant) number.\n // To do that, it uses a non-strict pattern matcher written specifically for that.\n //\n\n if (leadingDigits.length < MIN_LEADING_DIGITS_LENGTH) {\n // Before leading digits < 3 matching was implemented:\n // return true\n //\n // After leading digits < 3 matching was implemented:\n try {\n return new PatternMatcher(leadingDigitsPattern).match(leadingDigits, {\n allowOverflow: true\n }) !== undefined;\n } catch (error)\n /* istanbul ignore next */\n {\n // There's a slight possibility that there could be some undiscovered bug\n // in the pattern matcher code. Since the \"leading digits < 3 matching\"\n // feature is not \"essential\" for operation, it can fall back to the old way\n // in case of any issues rather than halting the application's execution.\n console.error(error);\n return true;\n }\n } // If at least `MIN_LEADING_DIGITS_LENGTH` digits of a national number are\n // available then use the usual regular expression matching.\n //\n // The whole pattern is wrapped in round brackets (`()`) because\n // the pattern can use \"or\" operator (`|`) at the top level of the pattern.\n //\n\n\n return new RegExp(\"^(\".concat(leadingDigitsPattern, \")\")).test(leadingDigits);\n }\n }, {\n key: \"getFormatFormat\",\n value: function getFormatFormat(format, international) {\n return international ? format.internationalFormat() : format.format();\n }\n }, {\n key: \"chooseFormat\",\n value: function chooseFormat(state) {\n var _this3 = this;\n\n var _loop = function _loop() {\n var format = _step2.value;\n\n // If this format is currently being used\n // and is still suitable, then stick to it.\n if (_this3.chosenFormat === format) {\n return \"break\";\n } // Sometimes, a formatting rule inserts additional digits in a phone number,\n // and \"as you type\" formatter can't do that: it should only use the digits\n // that the user has input.\n //\n // For example, in Argentina, there's a format for mobile phone numbers:\n //\n // {\n // \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\n // \"leading_digits_patterns\": [\"91\"],\n // \"national_prefix_formatting_rule\": \"0$1\",\n // \"format\": \"$2 15-$3-$4\",\n // \"international_format\": \"$1 $2 $3-$4\"\n // }\n //\n // In that format, `international_format` is used instead of `format`\n // because `format` inserts `15` in the formatted number,\n // and `AsYouType` formatter should only use the digits\n // the user has actually input, without adding any extra digits.\n // In this case, it wouldn't make a difference, because the `15`\n // is first stripped when applying `national_prefix_for_parsing`\n // and then re-added when using `format`, so in reality it doesn't\n // add any new digits to the number, but to detect that, the code\n // would have to be more complex: it would have to try formatting\n // the digits using the format and then see if any digits have\n // actually been added or removed, and then, every time a new digit\n // is input, it should re-check whether the chosen format doesn't\n // alter the digits.\n //\n // Google's code doesn't go that far, and so does this library:\n // it simply requires that a `format` doesn't add any additonal\n // digits to user's input.\n //\n // Also, people in general should move from inputting phone numbers\n // in national format (possibly with national prefixes)\n // and use international phone number format instead:\n // it's a logical thing in the modern age of mobile phones,\n // globalization and the internet.\n //\n\n /* istanbul ignore if */\n\n\n if (!NON_ALTERING_FORMAT_REG_EXP.test(_this3.getFormatFormat(format, state.international))) {\n return \"continue\";\n }\n\n if (!_this3.createTemplateForFormat(format, state)) {\n // Remove the format if it can't generate a template.\n _this3.matchingFormats = _this3.matchingFormats.filter(function (_) {\n return _ !== format;\n });\n return \"continue\";\n }\n\n _this3.chosenFormat = format;\n return \"break\";\n };\n\n // When there are multiple available formats, the formatter uses the first\n // format where a formatting template could be created.\n //\n // For some weird reason, `istanbul` says \"else path not taken\"\n // for the `for of` line below. Supposedly that means that\n // the loop doesn't ever go over the last element in the list.\n // That's true because there always is `this.chosenFormat`\n // when `this.matchingFormats` is non-empty.\n // And, for some weird reason, it doesn't think that the case\n // with empty `this.matchingFormats` qualifies for a valid \"else\" path.\n // So simply muting this `istanbul` warning.\n // It doesn't skip the contents of the `for of` loop,\n // it just skips the `for of` line.\n //\n\n /* istanbul ignore next */\n for (var _iterator2 = _createForOfIteratorHelperLoose(this.matchingFormats.slice()), _step2; !(_step2 = _iterator2()).done;) {\n var _ret = _loop();\n\n if (_ret === \"break\") break;\n if (_ret === \"continue\") continue;\n }\n\n if (!this.chosenFormat) {\n // No format matches the national (significant) phone number.\n this.resetFormat();\n }\n\n return this.chosenFormat;\n }\n }, {\n key: \"createTemplateForFormat\",\n value: function createTemplateForFormat(format, state) {\n // The formatter doesn't format numbers when numberPattern contains '|', e.g.\n // (20|3)\\d{4}. In those cases we quickly return.\n // (Though there's no such format in current metadata)\n\n /* istanbul ignore if */\n if (SUPPORT_LEGACY_FORMATTING_PATTERNS && format.pattern().indexOf('|') >= 0) {\n return;\n } // Get formatting template for this phone number format\n\n\n var template = this.getTemplateForFormat(format, state); // If the national number entered is too long\n // for any phone number format, then abort.\n\n if (template) {\n this.setNationalNumberTemplate(template, state);\n return true;\n }\n }\n }, {\n key: \"getSeparatorAfterNationalPrefix\",\n value: function getSeparatorAfterNationalPrefix(format) {\n // `US` metadata doesn't have a `national_prefix_formatting_rule`,\n // so the `if` condition below doesn't apply to `US`,\n // but in reality there shoudl be a separator\n // between a national prefix and a national (significant) number.\n // So `US` national prefix separator is a \"special\" \"hardcoded\" case.\n if (this.isNANP) {\n return ' ';\n } // If a `format` has a `national_prefix_formatting_rule`\n // and that rule has a separator after a national prefix,\n // then it means that there should be a separator\n // between a national prefix and a national (significant) number.\n\n\n if (format && format.nationalPrefixFormattingRule() && NATIONAL_PREFIX_SEPARATORS_PATTERN.test(format.nationalPrefixFormattingRule())) {\n return ' ';\n } // At this point, there seems to be no clear evidence that\n // there should be a separator between a national prefix\n // and a national (significant) number. So don't insert one.\n\n\n return '';\n }\n }, {\n key: \"getInternationalPrefixBeforeCountryCallingCode\",\n value: function getInternationalPrefixBeforeCountryCallingCode(_ref3, options) {\n var IDDPrefix = _ref3.IDDPrefix,\n missingPlus = _ref3.missingPlus;\n\n if (IDDPrefix) {\n return options && options.spacing === false ? IDDPrefix : IDDPrefix + ' ';\n }\n\n if (missingPlus) {\n return '';\n }\n\n return '+';\n }\n }, {\n key: \"getTemplate\",\n value: function getTemplate(state) {\n if (!this.template) {\n return;\n } // `this.template` holds the template for a \"complete\" phone number.\n // The currently entered phone number is most likely not \"complete\",\n // so trim all non-populated digits.\n\n\n var index = -1;\n var i = 0;\n var internationalPrefix = state.international ? this.getInternationalPrefixBeforeCountryCallingCode(state, {\n spacing: false\n }) : '';\n\n while (i < internationalPrefix.length + state.getDigitsWithoutInternationalPrefix().length) {\n index = this.template.indexOf(DIGIT_PLACEHOLDER, index + 1);\n i++;\n }\n\n return cutAndStripNonPairedParens(this.template, index + 1);\n }\n }, {\n key: \"setNationalNumberTemplate\",\n value: function setNationalNumberTemplate(template, state) {\n this.nationalNumberTemplate = template;\n this.populatedNationalNumberTemplate = template; // With a new formatting template, the matched position\n // using the old template needs to be reset.\n\n this.populatedNationalNumberTemplatePosition = -1; // For convenience, the public `.template` property\n // contains the whole international number\n // if the phone number being input is international:\n // 'x' for the '+' sign, 'x'es for the country phone code,\n // a spacebar and then the template for the formatted national number.\n\n if (state.international) {\n this.template = this.getInternationalPrefixBeforeCountryCallingCode(state).replace(/[\\d\\+]/g, DIGIT_PLACEHOLDER) + repeat(DIGIT_PLACEHOLDER, state.callingCode.length) + ' ' + template;\n } else {\n this.template = template;\n }\n }\n /**\r\n * Generates formatting template for a national phone number,\r\n * optionally containing a national prefix, for a format.\r\n * @param {Format} format\r\n * @param {string} nationalPrefix\r\n * @return {string}\r\n */\n\n }, {\n key: \"getTemplateForFormat\",\n value: function getTemplateForFormat(format, _ref4) {\n var nationalSignificantNumber = _ref4.nationalSignificantNumber,\n international = _ref4.international,\n nationalPrefix = _ref4.nationalPrefix,\n complexPrefixBeforeNationalSignificantNumber = _ref4.complexPrefixBeforeNationalSignificantNumber;\n var pattern = format.pattern();\n /* istanbul ignore else */\n\n if (SUPPORT_LEGACY_FORMATTING_PATTERNS) {\n pattern = pattern // Replace anything in the form of [..] with \\d\n .replace(CREATE_CHARACTER_CLASS_PATTERN(), '\\\\d') // Replace any standalone digit (not the one in `{}`) with \\d\n .replace(CREATE_STANDALONE_DIGIT_PATTERN(), '\\\\d');\n } // Generate a dummy national number (consisting of `9`s)\n // that fits this format's `pattern`.\n //\n // This match will always succeed,\n // because the \"longest dummy phone number\"\n // has enough length to accomodate any possible\n // national phone number format pattern.\n //\n\n\n var digits = LONGEST_DUMMY_PHONE_NUMBER.match(pattern)[0]; // If the national number entered is too long\n // for any phone number format, then abort.\n\n if (nationalSignificantNumber.length > digits.length) {\n return;\n } // Get a formatting template which can be used to efficiently format\n // a partial number where digits are added one by one.\n // Below `strictPattern` is used for the\n // regular expression (with `^` and `$`).\n // This wasn't originally in Google's `libphonenumber`\n // and I guess they don't really need it\n // because they're not using \"templates\" to format phone numbers\n // but I added `strictPattern` after encountering\n // South Korean phone number formatting bug.\n //\n // Non-strict regular expression bug demonstration:\n //\n // this.nationalSignificantNumber : `111111111` (9 digits)\n //\n // pattern : (\\d{2})(\\d{3,4})(\\d{4})\n // format : `$1 $2 $3`\n // digits : `9999999999` (10 digits)\n //\n // '9999999999'.replace(new RegExp(/(\\d{2})(\\d{3,4})(\\d{4})/g), '$1 $2 $3') = \"99 9999 9999\"\n //\n // template : xx xxxx xxxx\n //\n // But the correct template in this case is `xx xxx xxxx`.\n // The template was generated incorrectly because of the\n // `{3,4}` variability in the `pattern`.\n //\n // The fix is, if `this.nationalSignificantNumber` has already sufficient length\n // to satisfy the `pattern` completely then `this.nationalSignificantNumber`\n // is used instead of `digits`.\n\n\n var strictPattern = new RegExp('^' + pattern + '$');\n var nationalNumberDummyDigits = nationalSignificantNumber.replace(/\\d/g, DUMMY_DIGIT); // If `this.nationalSignificantNumber` has already sufficient length\n // to satisfy the `pattern` completely then use it\n // instead of `digits`.\n\n if (strictPattern.test(nationalNumberDummyDigits)) {\n digits = nationalNumberDummyDigits;\n }\n\n var numberFormat = this.getFormatFormat(format, international);\n var nationalPrefixIncludedInTemplate; // If a user did input a national prefix (and that's guaranteed),\n // and if a `format` does have a national prefix formatting rule,\n // then see if that national prefix formatting rule\n // prepends exactly the same national prefix the user has input.\n // If that's the case, then use the `format` with the national prefix formatting rule.\n // Otherwise, use the `format` without the national prefix formatting rule,\n // and prepend a national prefix manually to it.\n\n if (this.shouldTryNationalPrefixFormattingRule(format, {\n international: international,\n nationalPrefix: nationalPrefix\n })) {\n var numberFormatWithNationalPrefix = numberFormat.replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()); // If `national_prefix_formatting_rule` of a `format` simply prepends\n // national prefix at the start of a national (significant) number,\n // then such formatting can be used with `AsYouType` formatter.\n // There seems to be no `else` case: everywhere in metadata,\n // national prefix formatting rule is national prefix + $1,\n // or `($1)`, in which case such format isn't even considered\n // when the user has input a national prefix.\n\n /* istanbul ignore else */\n\n if (parseDigits(format.nationalPrefixFormattingRule()) === (nationalPrefix || '') + parseDigits('$1')) {\n numberFormat = numberFormatWithNationalPrefix;\n nationalPrefixIncludedInTemplate = true; // Replace all digits of the national prefix in the formatting template\n // with `DIGIT_PLACEHOLDER`s.\n\n if (nationalPrefix) {\n var i = nationalPrefix.length;\n\n while (i > 0) {\n numberFormat = numberFormat.replace(/\\d/, DIGIT_PLACEHOLDER);\n i--;\n }\n }\n }\n } // Generate formatting template for this phone number format.\n\n\n var template = digits // Format the dummy phone number according to the format.\n .replace(new RegExp(pattern), numberFormat) // Replace each dummy digit with a DIGIT_PLACEHOLDER.\n .replace(new RegExp(DUMMY_DIGIT, 'g'), DIGIT_PLACEHOLDER); // If a prefix of a national (significant) number is not as simple\n // as just a basic national prefix, then just prepend such prefix\n // before the national (significant) number, optionally spacing\n // the two with a whitespace.\n\n if (!nationalPrefixIncludedInTemplate) {\n if (complexPrefixBeforeNationalSignificantNumber) {\n // Prepend the prefix to the template manually.\n template = repeat(DIGIT_PLACEHOLDER, complexPrefixBeforeNationalSignificantNumber.length) + ' ' + template;\n } else if (nationalPrefix) {\n // Prepend national prefix to the template manually.\n template = repeat(DIGIT_PLACEHOLDER, nationalPrefix.length) + this.getSeparatorAfterNationalPrefix(format) + template;\n }\n }\n\n if (international) {\n template = applyInternationalSeparatorStyle(template);\n }\n\n return template;\n }\n }, {\n key: \"formatNextNationalNumberDigits\",\n value: function formatNextNationalNumberDigits(digits) {\n var result = populateTemplateWithDigits(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition, digits);\n\n if (!result) {\n // Reset the format.\n this.resetFormat();\n return;\n }\n\n this.populatedNationalNumberTemplate = result[0];\n this.populatedNationalNumberTemplatePosition = result[1]; // Return the formatted phone number so far.\n\n return cutAndStripNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1); // The old way which was good for `input-format` but is not so good\n // for `react-phone-number-input`'s default input (`InputBasic`).\n // return closeNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1)\n // \t.replace(new RegExp(DIGIT_PLACEHOLDER, 'g'), ' ')\n }\n }, {\n key: \"shouldTryNationalPrefixFormattingRule\",\n value: function shouldTryNationalPrefixFormattingRule(format, _ref5) {\n var international = _ref5.international,\n nationalPrefix = _ref5.nationalPrefix;\n\n if (format.nationalPrefixFormattingRule()) {\n // In some countries, `national_prefix_formatting_rule` is `($1)`,\n // so it applies even if the user hasn't input a national prefix.\n // `format.usesNationalPrefix()` detects such cases.\n var usesNationalPrefix = format.usesNationalPrefix();\n\n if (usesNationalPrefix && nationalPrefix || !usesNationalPrefix && !international) {\n return true;\n }\n }\n }\n }]);\n\n return AsYouTypeFormatter;\n}();\n\nexport { AsYouTypeFormatter as default };\n//# sourceMappingURL=AsYouTypeFormatter.js.map","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport _extractCountryCallingCode from './helpers/extractCountryCallingCode.js';\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js';\nimport extractNationalNumberFromPossiblyIncompleteNumber from './helpers/extractNationalNumberFromPossiblyIncompleteNumber.js';\nimport stripIddPrefix from './helpers/stripIddPrefix.js';\nimport parseDigits from './helpers/parseDigits.js';\nimport { VALID_DIGITS, VALID_PUNCTUATION, PLUS_CHARS } from './constants.js';\nvar VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART = '[' + VALID_PUNCTUATION + VALID_DIGITS + ']+';\nvar VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN = new RegExp('^' + VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART + '$', 'i');\nvar VALID_FORMATTED_PHONE_NUMBER_PART = '(?:' + '[' + PLUS_CHARS + ']' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*' + '|' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']+' + ')';\nvar AFTER_PHONE_NUMBER_DIGITS_END_PATTERN = new RegExp('[^' + VALID_PUNCTUATION + VALID_DIGITS + ']+' + '.*' + '$'); // Tests whether `national_prefix_for_parsing` could match\n// different national prefixes.\n// Matches anything that's not a digit or a square bracket.\n\nvar COMPLEX_NATIONAL_PREFIX = /[^\\d\\[\\]]/;\n\nvar AsYouTypeParser = /*#__PURE__*/function () {\n function AsYouTypeParser(_ref) {\n var defaultCountry = _ref.defaultCountry,\n defaultCallingCode = _ref.defaultCallingCode,\n metadata = _ref.metadata,\n onNationalSignificantNumberChange = _ref.onNationalSignificantNumberChange;\n\n _classCallCheck(this, AsYouTypeParser);\n\n this.defaultCountry = defaultCountry;\n this.defaultCallingCode = defaultCallingCode;\n this.metadata = metadata;\n this.onNationalSignificantNumberChange = onNationalSignificantNumberChange;\n }\n\n _createClass(AsYouTypeParser, [{\n key: \"input\",\n value: function input(text, state) {\n var _extractFormattedDigi = extractFormattedDigitsAndPlus(text),\n _extractFormattedDigi2 = _slicedToArray(_extractFormattedDigi, 2),\n formattedDigits = _extractFormattedDigi2[0],\n hasPlus = _extractFormattedDigi2[1];\n\n var digits = parseDigits(formattedDigits); // Checks for a special case: just a leading `+` has been entered.\n\n var justLeadingPlus;\n\n if (hasPlus) {\n if (!state.digits) {\n state.startInternationalNumber();\n\n if (!digits) {\n justLeadingPlus = true;\n }\n }\n }\n\n if (digits) {\n this.inputDigits(digits, state);\n }\n\n return {\n digits: digits,\n justLeadingPlus: justLeadingPlus\n };\n }\n /**\r\n * Inputs \"next\" phone number digits.\r\n * @param {string} digits\r\n * @return {string} [formattedNumber] Formatted national phone number (if it can be formatted at this stage). Returning `undefined` means \"don't format the national phone number at this stage\".\r\n */\n\n }, {\n key: \"inputDigits\",\n value: function inputDigits(nextDigits, state) {\n var digits = state.digits;\n var hasReceivedThreeLeadingDigits = digits.length < 3 && digits.length + nextDigits.length >= 3; // Append phone number digits.\n\n state.appendDigits(nextDigits); // Attempt to extract IDD prefix:\n // Some users input their phone number in international format,\n // but in an \"out-of-country\" dialing format instead of using the leading `+`.\n // https://github.com/catamphetamine/libphonenumber-js/issues/185\n // Detect such numbers as soon as there're at least 3 digits.\n // Google's library attempts to extract IDD prefix at 3 digits,\n // so this library just copies that behavior.\n // I guess that's because the most commot IDD prefixes are\n // `00` (Europe) and `011` (US).\n // There exist really long IDD prefixes too:\n // for example, in Australia the default IDD prefix is `0011`,\n // and it could even be as long as `14880011`.\n // An IDD prefix is extracted here, and then every time when\n // there's a new digit and the number couldn't be formatted.\n\n if (hasReceivedThreeLeadingDigits) {\n this.extractIddPrefix(state);\n }\n\n if (this.isWaitingForCountryCallingCode(state)) {\n if (!this.extractCountryCallingCode(state)) {\n return;\n }\n } else {\n state.appendNationalSignificantNumberDigits(nextDigits);\n } // If a phone number is being input in international format,\n // then it's not valid for it to have a national prefix.\n // Still, some people incorrectly input such numbers with a national prefix.\n // In such cases, only attempt to strip a national prefix if the number becomes too long.\n // (but that is done later, not here)\n\n\n if (!state.international) {\n if (!this.hasExtractedNationalSignificantNumber) {\n this.extractNationalSignificantNumber(state.getNationalDigits(), function (stateUpdate) {\n return state.update(stateUpdate);\n });\n }\n }\n }\n }, {\n key: \"isWaitingForCountryCallingCode\",\n value: function isWaitingForCountryCallingCode(_ref2) {\n var international = _ref2.international,\n callingCode = _ref2.callingCode;\n return international && !callingCode;\n } // Extracts a country calling code from a number\n // being entered in internatonal format.\n\n }, {\n key: \"extractCountryCallingCode\",\n value: function extractCountryCallingCode(state) {\n var _extractCountryCallin = _extractCountryCallingCode('+' + state.getDigitsWithoutInternationalPrefix(), this.defaultCountry, this.defaultCallingCode, this.metadata.metadata),\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n number = _extractCountryCallin.number;\n\n if (countryCallingCode) {\n state.setCallingCode(countryCallingCode);\n state.update({\n nationalSignificantNumber: number\n });\n return true;\n }\n }\n }, {\n key: \"reset\",\n value: function reset(numberingPlan) {\n if (numberingPlan) {\n this.hasSelectedNumberingPlan = true;\n\n var nationalPrefixForParsing = numberingPlan._nationalPrefixForParsing();\n\n this.couldPossiblyExtractAnotherNationalSignificantNumber = nationalPrefixForParsing && COMPLEX_NATIONAL_PREFIX.test(nationalPrefixForParsing);\n } else {\n this.hasSelectedNumberingPlan = undefined;\n this.couldPossiblyExtractAnotherNationalSignificantNumber = undefined;\n }\n }\n /**\r\n * Extracts a national (significant) number from user input.\r\n * Google's library is different in that it only applies `national_prefix_for_parsing`\r\n * and doesn't apply `national_prefix_transform_rule` after that.\r\n * https://github.com/google/libphonenumber/blob/a3d70b0487875475e6ad659af404943211d26456/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L539\r\n * @return {boolean} [extracted]\r\n */\n\n }, {\n key: \"extractNationalSignificantNumber\",\n value: function extractNationalSignificantNumber(nationalDigits, setState) {\n if (!this.hasSelectedNumberingPlan) {\n return;\n }\n\n var _extractNationalNumbe = extractNationalNumberFromPossiblyIncompleteNumber(nationalDigits, this.metadata),\n nationalPrefix = _extractNationalNumbe.nationalPrefix,\n nationalNumber = _extractNationalNumbe.nationalNumber,\n carrierCode = _extractNationalNumbe.carrierCode;\n\n if (nationalNumber === nationalDigits) {\n return;\n }\n\n this.onExtractedNationalNumber(nationalPrefix, carrierCode, nationalNumber, nationalDigits, setState);\n return true;\n }\n /**\r\n * In Google's code this function is called \"attempt to extract longer NDD\".\r\n * \"Some national prefixes are a substring of others\", they say.\r\n * @return {boolean} [result] — Returns `true` if extracting a national prefix produced different results from what they were.\r\n */\n\n }, {\n key: \"extractAnotherNationalSignificantNumber\",\n value: function extractAnotherNationalSignificantNumber(nationalDigits, prevNationalSignificantNumber, setState) {\n if (!this.hasExtractedNationalSignificantNumber) {\n return this.extractNationalSignificantNumber(nationalDigits, setState);\n }\n\n if (!this.couldPossiblyExtractAnotherNationalSignificantNumber) {\n return;\n }\n\n var _extractNationalNumbe2 = extractNationalNumberFromPossiblyIncompleteNumber(nationalDigits, this.metadata),\n nationalPrefix = _extractNationalNumbe2.nationalPrefix,\n nationalNumber = _extractNationalNumbe2.nationalNumber,\n carrierCode = _extractNationalNumbe2.carrierCode; // If a national prefix has been extracted previously,\n // then it's always extracted as additional digits are added.\n // That's assuming `extractNationalNumberFromPossiblyIncompleteNumber()`\n // doesn't do anything different from what it currently does.\n // So, just in case, here's this check, though it doesn't occur.\n\n /* istanbul ignore if */\n\n\n if (nationalNumber === prevNationalSignificantNumber) {\n return;\n }\n\n this.onExtractedNationalNumber(nationalPrefix, carrierCode, nationalNumber, nationalDigits, setState);\n return true;\n }\n }, {\n key: \"onExtractedNationalNumber\",\n value: function onExtractedNationalNumber(nationalPrefix, carrierCode, nationalSignificantNumber, nationalDigits, setState) {\n var complexPrefixBeforeNationalSignificantNumber;\n var nationalSignificantNumberMatchesInput; // This check also works with empty `this.nationalSignificantNumber`.\n\n var nationalSignificantNumberIndex = nationalDigits.lastIndexOf(nationalSignificantNumber); // If the extracted national (significant) number is the\n // last substring of the `digits`, then it means that it hasn't been altered:\n // no digits have been removed from the national (significant) number\n // while applying `national_prefix_transform_rule`.\n // https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\n\n if (nationalSignificantNumberIndex >= 0 && nationalSignificantNumberIndex === nationalDigits.length - nationalSignificantNumber.length) {\n nationalSignificantNumberMatchesInput = true; // If a prefix of a national (significant) number is not as simple\n // as just a basic national prefix, then such prefix is stored in\n // `this.complexPrefixBeforeNationalSignificantNumber` property and will be\n // prepended \"as is\" to the national (significant) number to produce\n // a formatted result.\n\n var prefixBeforeNationalNumber = nationalDigits.slice(0, nationalSignificantNumberIndex); // `prefixBeforeNationalNumber` is always non-empty,\n // because `onExtractedNationalNumber()` isn't called\n // when a national (significant) number hasn't been actually \"extracted\":\n // when a national (significant) number is equal to the national part of `digits`,\n // then `onExtractedNationalNumber()` doesn't get called.\n\n if (prefixBeforeNationalNumber !== nationalPrefix) {\n complexPrefixBeforeNationalSignificantNumber = prefixBeforeNationalNumber;\n }\n }\n\n setState({\n nationalPrefix: nationalPrefix,\n carrierCode: carrierCode,\n nationalSignificantNumber: nationalSignificantNumber,\n nationalSignificantNumberMatchesInput: nationalSignificantNumberMatchesInput,\n complexPrefixBeforeNationalSignificantNumber: complexPrefixBeforeNationalSignificantNumber\n }); // `onExtractedNationalNumber()` is only called when\n // the national (significant) number actually did change.\n\n this.hasExtractedNationalSignificantNumber = true;\n this.onNationalSignificantNumberChange();\n }\n }, {\n key: \"reExtractNationalSignificantNumber\",\n value: function reExtractNationalSignificantNumber(state) {\n // Attempt to extract a national prefix.\n //\n // Some people incorrectly input national prefix\n // in an international phone number.\n // For example, some people write British phone numbers as `+44(0)...`.\n //\n // Also, in some rare cases, it is valid for a national prefix\n // to be a part of an international phone number.\n // For example, mobile phone numbers in Mexico are supposed to be\n // dialled internationally using a `1` national prefix,\n // so the national prefix will be part of an international number.\n //\n // Quote from:\n // https://www.mexperience.com/dialing-cell-phones-in-mexico/\n //\n // \"Dialing a Mexican cell phone from abroad\n // When you are calling a cell phone number in Mexico from outside Mexico,\n // it’s necessary to dial an additional “1” after Mexico’s country code\n // (which is “52”) and before the area code.\n // You also ignore the 045, and simply dial the area code and the\n // cell phone’s number.\n //\n // If you don’t add the “1”, you’ll receive a recorded announcement\n // asking you to redial using it.\n //\n // For example, if you are calling from the USA to a cell phone\n // in Mexico City, you would dial +52 – 1 – 55 – 1234 5678.\n // (Note that this is different to calling a land line in Mexico City\n // from abroad, where the number dialed would be +52 – 55 – 1234 5678)\".\n //\n // Google's demo output:\n // https://libphonenumber.appspot.com/phonenumberparser?number=%2b5215512345678&country=MX\n //\n if (this.extractAnotherNationalSignificantNumber(state.getNationalDigits(), state.nationalSignificantNumber, function (stateUpdate) {\n return state.update(stateUpdate);\n })) {\n return true;\n } // If no format matches the phone number, then it could be\n // \"a really long IDD\" (quote from a comment in Google's library).\n // An IDD prefix is first extracted when the user has entered at least 3 digits,\n // and then here — every time when there's a new digit and the number\n // couldn't be formatted.\n // For example, in Australia the default IDD prefix is `0011`,\n // and it could even be as long as `14880011`.\n //\n // Could also check `!hasReceivedThreeLeadingDigits` here\n // to filter out the case when this check duplicates the one\n // already performed when there're 3 leading digits,\n // but it's not a big deal, and in most cases there\n // will be a suitable `format` when there're 3 leading digits.\n //\n\n\n if (this.extractIddPrefix(state)) {\n this.extractCallingCodeAndNationalSignificantNumber(state);\n return true;\n } // Google's AsYouType formatter supports sort of an \"autocorrection\" feature\n // when it \"autocorrects\" numbers that have been input for a country\n // with that country's calling code.\n // Such \"autocorrection\" feature looks weird, but different people have been requesting it:\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n // https://github.com/catamphetamine/libphonenumber-js/issues/375\n // https://github.com/catamphetamine/libphonenumber-js/issues/316\n\n\n if (this.fixMissingPlus(state)) {\n this.extractCallingCodeAndNationalSignificantNumber(state);\n return true;\n }\n }\n }, {\n key: \"extractIddPrefix\",\n value: function extractIddPrefix(state) {\n // An IDD prefix can't be present in a number written with a `+`.\n // Also, don't re-extract an IDD prefix if has already been extracted.\n var international = state.international,\n IDDPrefix = state.IDDPrefix,\n digits = state.digits,\n nationalSignificantNumber = state.nationalSignificantNumber;\n\n if (international || IDDPrefix) {\n return;\n } // Some users input their phone number in \"out-of-country\"\n // dialing format instead of using the leading `+`.\n // https://github.com/catamphetamine/libphonenumber-js/issues/185\n // Detect such numbers.\n\n\n var numberWithoutIDD = stripIddPrefix(digits, this.defaultCountry, this.defaultCallingCode, this.metadata.metadata);\n\n if (numberWithoutIDD !== undefined && numberWithoutIDD !== digits) {\n // If an IDD prefix was stripped then convert the IDD-prefixed number\n // to international number for subsequent parsing.\n state.update({\n IDDPrefix: digits.slice(0, digits.length - numberWithoutIDD.length)\n });\n this.startInternationalNumber(state, {\n country: undefined,\n callingCode: undefined\n });\n return true;\n }\n }\n }, {\n key: \"fixMissingPlus\",\n value: function fixMissingPlus(state) {\n if (!state.international) {\n var _extractCountryCallin2 = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(state.digits, this.defaultCountry, this.defaultCallingCode, this.metadata.metadata),\n newCallingCode = _extractCountryCallin2.countryCallingCode,\n number = _extractCountryCallin2.number;\n\n if (newCallingCode) {\n state.update({\n missingPlus: true\n });\n this.startInternationalNumber(state, {\n country: state.country,\n callingCode: newCallingCode\n });\n return true;\n }\n }\n }\n }, {\n key: \"startInternationalNumber\",\n value: function startInternationalNumber(state, _ref3) {\n var country = _ref3.country,\n callingCode = _ref3.callingCode;\n state.startInternationalNumber(country, callingCode); // If a national (significant) number has been extracted before, reset it.\n\n if (state.nationalSignificantNumber) {\n state.resetNationalSignificantNumber();\n this.onNationalSignificantNumberChange();\n this.hasExtractedNationalSignificantNumber = undefined;\n }\n }\n }, {\n key: \"extractCallingCodeAndNationalSignificantNumber\",\n value: function extractCallingCodeAndNationalSignificantNumber(state) {\n if (this.extractCountryCallingCode(state)) {\n // `this.extractCallingCode()` is currently called when the number\n // couldn't be formatted during the standard procedure.\n // Normally, the national prefix would be re-extracted\n // for an international number if such number couldn't be formatted,\n // but since it's already not able to be formatted,\n // there won't be yet another retry, so also extract national prefix here.\n this.extractNationalSignificantNumber(state.getNationalDigits(), function (stateUpdate) {\n return state.update(stateUpdate);\n });\n }\n }\n }]);\n\n return AsYouTypeParser;\n}();\n/**\r\n * Extracts formatted phone number from text (if there's any).\r\n * @param {string} text\r\n * @return {string} [formattedPhoneNumber]\r\n */\n\n\nexport { AsYouTypeParser as default };\n\nfunction extractFormattedPhoneNumber(text) {\n // Attempt to extract a possible number from the string passed in.\n var startsAt = text.search(VALID_FORMATTED_PHONE_NUMBER_PART);\n\n if (startsAt < 0) {\n return;\n } // Trim everything to the left of the phone number.\n\n\n text = text.slice(startsAt); // Trim the `+`.\n\n var hasPlus;\n\n if (text[0] === '+') {\n hasPlus = true;\n text = text.slice('+'.length);\n } // Trim everything to the right of the phone number.\n\n\n text = text.replace(AFTER_PHONE_NUMBER_DIGITS_END_PATTERN, ''); // Re-add the previously trimmed `+`.\n\n if (hasPlus) {\n text = '+' + text;\n }\n\n return text;\n}\n/**\r\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\r\n * @param {string} text\r\n * @return {any[]}\r\n */\n\n\nfunction _extractFormattedDigitsAndPlus(text) {\n // Extract a formatted phone number part from text.\n var extractedNumber = extractFormattedPhoneNumber(text) || ''; // Trim a `+`.\n\n if (extractedNumber[0] === '+') {\n return [extractedNumber.slice('+'.length), true];\n }\n\n return [extractedNumber];\n}\n/**\r\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\r\n * @param {string} text\r\n * @return {any[]}\r\n */\n\n\nexport function extractFormattedDigitsAndPlus(text) {\n var _extractFormattedDigi3 = _extractFormattedDigitsAndPlus(text),\n _extractFormattedDigi4 = _slicedToArray(_extractFormattedDigi3, 2),\n formattedDigits = _extractFormattedDigi4[0],\n hasPlus = _extractFormattedDigi4[1]; // If the extracted phone number part\n // can possibly be a part of some valid phone number\n // then parse phone number characters from a formatted phone number.\n\n\n if (!VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN.test(formattedDigits)) {\n formattedDigits = '';\n }\n\n return [formattedDigits, hasPlus];\n}\n//# sourceMappingURL=AsYouTypeParser.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport Metadata from './metadata.js';\nimport PhoneNumber from './PhoneNumber.js';\nimport AsYouTypeState from './AsYouTypeState.js';\nimport AsYouTypeFormatter, { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.js';\nimport AsYouTypeParser, { extractFormattedDigitsAndPlus } from './AsYouTypeParser.js';\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\n\nvar AsYouType = /*#__PURE__*/function () {\n /**\r\n * @param {(string|object)?} [optionsOrDefaultCountry] - The default country used for parsing non-international phone numbers. Can also be an `options` object.\r\n * @param {Object} metadata\r\n */\n function AsYouType(optionsOrDefaultCountry, metadata) {\n _classCallCheck(this, AsYouType);\n\n this.metadata = new Metadata(metadata);\n\n var _this$getCountryAndCa = this.getCountryAndCallingCode(optionsOrDefaultCountry),\n _this$getCountryAndCa2 = _slicedToArray(_this$getCountryAndCa, 2),\n defaultCountry = _this$getCountryAndCa2[0],\n defaultCallingCode = _this$getCountryAndCa2[1];\n\n this.defaultCountry = defaultCountry;\n this.defaultCallingCode = defaultCallingCode;\n this.reset();\n }\n\n _createClass(AsYouType, [{\n key: \"getCountryAndCallingCode\",\n value: function getCountryAndCallingCode(optionsOrDefaultCountry) {\n // Set `defaultCountry` and `defaultCallingCode` options.\n var defaultCountry;\n var defaultCallingCode; // Turns out `null` also has type \"object\". Weird.\n\n if (optionsOrDefaultCountry) {\n if (_typeof(optionsOrDefaultCountry) === 'object') {\n defaultCountry = optionsOrDefaultCountry.defaultCountry;\n defaultCallingCode = optionsOrDefaultCountry.defaultCallingCode;\n } else {\n defaultCountry = optionsOrDefaultCountry;\n }\n }\n\n if (defaultCountry && !this.metadata.hasCountry(defaultCountry)) {\n defaultCountry = undefined;\n }\n\n if (defaultCallingCode) {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (this.metadata.isNonGeographicCallingCode(defaultCallingCode)) {\n defaultCountry = '001';\n }\n }\n }\n\n return [defaultCountry, defaultCallingCode];\n }\n /**\r\n * Inputs \"next\" phone number characters.\r\n * @param {string} text\r\n * @return {string} Formatted phone number characters that have been input so far.\r\n */\n\n }, {\n key: \"input\",\n value: function input(text) {\n var _this$parser$input = this.parser.input(text, this.state),\n digits = _this$parser$input.digits,\n justLeadingPlus = _this$parser$input.justLeadingPlus;\n\n if (justLeadingPlus) {\n this.formattedOutput = '+';\n } else if (digits) {\n this.determineTheCountryIfNeeded(); // Match the available formats by the currently available leading digits.\n\n if (this.state.nationalSignificantNumber) {\n this.formatter.narrowDownMatchingFormats(this.state);\n }\n\n var formattedNationalNumber;\n\n if (this.metadata.hasSelectedNumberingPlan()) {\n formattedNationalNumber = this.formatter.format(digits, this.state);\n }\n\n if (formattedNationalNumber === undefined) {\n // See if another national (significant) number could be re-extracted.\n if (this.parser.reExtractNationalSignificantNumber(this.state)) {\n this.determineTheCountryIfNeeded(); // If it could, then re-try formatting the new national (significant) number.\n\n var nationalDigits = this.state.getNationalDigits();\n\n if (nationalDigits) {\n formattedNationalNumber = this.formatter.format(nationalDigits, this.state);\n }\n }\n }\n\n this.formattedOutput = formattedNationalNumber ? this.getFullNumber(formattedNationalNumber) : this.getNonFormattedNumber();\n }\n\n return this.formattedOutput;\n }\n }, {\n key: \"reset\",\n value: function reset() {\n var _this = this;\n\n this.state = new AsYouTypeState({\n onCountryChange: function onCountryChange(country) {\n // Before version `1.6.0`, the official `AsYouType` formatter API\n // included the `.country` property of an `AsYouType` instance.\n // Since that property (along with the others) have been moved to\n // `this.state`, `this.country` property is emulated for compatibility\n // with the old versions.\n _this.country = country;\n },\n onCallingCodeChange: function onCallingCodeChange(callingCode, country) {\n _this.metadata.selectNumberingPlan(country, callingCode);\n\n _this.formatter.reset(_this.metadata.numberingPlan, _this.state);\n\n _this.parser.reset(_this.metadata.numberingPlan);\n }\n });\n this.formatter = new AsYouTypeFormatter({\n state: this.state,\n metadata: this.metadata\n });\n this.parser = new AsYouTypeParser({\n defaultCountry: this.defaultCountry,\n defaultCallingCode: this.defaultCallingCode,\n metadata: this.metadata,\n state: this.state,\n onNationalSignificantNumberChange: function onNationalSignificantNumberChange() {\n _this.determineTheCountryIfNeeded();\n\n _this.formatter.reset(_this.metadata.numberingPlan, _this.state);\n }\n });\n this.state.reset(this.defaultCountry, this.defaultCallingCode);\n this.formattedOutput = '';\n return this;\n }\n /**\r\n * Returns `true` if the phone number is being input in international format.\r\n * In other words, returns `true` if and only if the parsed phone number starts with a `\"+\"`.\r\n * @return {boolean}\r\n */\n\n }, {\n key: \"isInternational\",\n value: function isInternational() {\n return this.state.international;\n }\n /**\r\n * Returns the \"calling code\" part of the phone number when it's being input\r\n * in an international format.\r\n * If no valid calling code has been entered so far, returns `undefined`.\r\n * @return {string} [callingCode]\r\n */\n\n }, {\n key: \"getCallingCode\",\n value: function getCallingCode() {\n // If the number is being input in national format and some \"default calling code\"\n // has been passed to `AsYouType` constructor, then `this.state.callingCode`\n // is equal to that \"default calling code\".\n //\n // If the number is being input in national format and no \"default calling code\"\n // has been passed to `AsYouType` constructor, then returns `undefined`,\n // even if a \"default country\" has been passed to `AsYouType` constructor.\n //\n if (this.isInternational()) {\n return this.state.callingCode;\n }\n } // A legacy alias.\n\n }, {\n key: \"getCountryCallingCode\",\n value: function getCountryCallingCode() {\n return this.getCallingCode();\n }\n /**\r\n * Returns a two-letter country code of the phone number.\r\n * Returns `undefined` for \"non-geographic\" phone numbering plans.\r\n * Returns `undefined` if no phone number has been input yet.\r\n * @return {string} [country]\r\n */\n\n }, {\n key: \"getCountry\",\n value: function getCountry() {\n var digits = this.state.digits; // Return `undefined` if no digits have been input yet.\n\n if (digits) {\n return this._getCountry();\n }\n }\n /**\r\n * Returns a two-letter country code of the phone number.\r\n * Returns `undefined` for \"non-geographic\" phone numbering plans.\r\n * @return {string} [country]\r\n */\n\n }, {\n key: \"_getCountry\",\n value: function _getCountry() {\n var country = this.state.country;\n /* istanbul ignore if */\n\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n // `AsYouType.getCountry()` returns `undefined`\n // for \"non-geographic\" phone numbering plans.\n if (country === '001') {\n return;\n }\n }\n\n return country;\n }\n }, {\n key: \"determineTheCountryIfNeeded\",\n value: function determineTheCountryIfNeeded() {\n // Suppose a user enters a phone number in international format,\n // and there're several countries corresponding to that country calling code,\n // and a country has been derived from the number, and then\n // a user enters one more digit and the number is no longer\n // valid for the derived country, so the country should be re-derived\n // on every new digit in those cases.\n //\n // If the phone number is being input in national format,\n // then it could be a case when `defaultCountry` wasn't specified\n // when creating `AsYouType` instance, and just `defaultCallingCode` was specified,\n // and that \"calling code\" could correspond to a \"non-geographic entity\",\n // or there could be several countries corresponding to that country calling code.\n // In those cases, `this.country` is `undefined` and should be derived\n // from the number. Again, if country calling code is ambiguous, then\n // `this.country` should be re-derived with each new digit.\n //\n if (!this.state.country || this.isCountryCallingCodeAmbiguous()) {\n this.determineTheCountry();\n }\n } // Prepends `+CountryCode ` in case of an international phone number\n\n }, {\n key: \"getFullNumber\",\n value: function getFullNumber(formattedNationalNumber) {\n var _this2 = this;\n\n if (this.isInternational()) {\n var prefix = function prefix(text) {\n return _this2.formatter.getInternationalPrefixBeforeCountryCallingCode(_this2.state, {\n spacing: text ? true : false\n }) + text;\n };\n\n var callingCode = this.state.callingCode;\n\n if (!callingCode) {\n return prefix(\"\".concat(this.state.getDigitsWithoutInternationalPrefix()));\n }\n\n if (!formattedNationalNumber) {\n return prefix(callingCode);\n }\n\n return prefix(\"\".concat(callingCode, \" \").concat(formattedNationalNumber));\n }\n\n return formattedNationalNumber;\n }\n }, {\n key: \"getNonFormattedNationalNumberWithPrefix\",\n value: function getNonFormattedNationalNumberWithPrefix() {\n var _this$state = this.state,\n nationalSignificantNumber = _this$state.nationalSignificantNumber,\n complexPrefixBeforeNationalSignificantNumber = _this$state.complexPrefixBeforeNationalSignificantNumber,\n nationalPrefix = _this$state.nationalPrefix;\n var number = nationalSignificantNumber;\n var prefix = complexPrefixBeforeNationalSignificantNumber || nationalPrefix;\n\n if (prefix) {\n number = prefix + number;\n }\n\n return number;\n }\n }, {\n key: \"getNonFormattedNumber\",\n value: function getNonFormattedNumber() {\n var nationalSignificantNumberMatchesInput = this.state.nationalSignificantNumberMatchesInput;\n return this.getFullNumber(nationalSignificantNumberMatchesInput ? this.getNonFormattedNationalNumberWithPrefix() : this.state.getNationalDigits());\n }\n }, {\n key: \"getNonFormattedTemplate\",\n value: function getNonFormattedTemplate() {\n var number = this.getNonFormattedNumber();\n\n if (number) {\n return number.replace(/[\\+\\d]/g, DIGIT_PLACEHOLDER);\n }\n }\n }, {\n key: \"isCountryCallingCodeAmbiguous\",\n value: function isCountryCallingCodeAmbiguous() {\n var callingCode = this.state.callingCode;\n var countryCodes = this.metadata.getCountryCodesForCallingCode(callingCode);\n return countryCodes && countryCodes.length > 1;\n } // Determines the country of the phone number\n // entered so far based on the country phone code\n // and the national phone number.\n\n }, {\n key: \"determineTheCountry\",\n value: function determineTheCountry() {\n this.state.setCountry(getCountryByCallingCode(this.isInternational() ? this.state.callingCode : this.defaultCallingCode, this.state.nationalSignificantNumber, this.metadata));\n }\n /**\r\n * Returns a E.164 phone number value for the user's input.\r\n *\r\n * For example, for country `\"US\"` and input `\"(222) 333-4444\"`\r\n * it will return `\"+12223334444\"`.\r\n *\r\n * For international phone number input, it will also auto-correct\r\n * some minor errors such as using a national prefix when writing\r\n * an international phone number. For example, if the user inputs\r\n * `\"+44 0 7400 000000\"` then it will return an auto-corrected\r\n * `\"+447400000000\"` phone number value.\r\n *\r\n * Will return `undefined` if no digits have been input,\r\n * or when inputting a phone number in national format and no\r\n * default country or default \"country calling code\" have been set.\r\n *\r\n * @return {string} [value]\r\n */\n\n }, {\n key: \"getNumberValue\",\n value: function getNumberValue() {\n var _this$state2 = this.state,\n digits = _this$state2.digits,\n callingCode = _this$state2.callingCode,\n country = _this$state2.country,\n nationalSignificantNumber = _this$state2.nationalSignificantNumber; // Will return `undefined` if no digits have been input.\n\n if (!digits) {\n return;\n }\n\n if (this.isInternational()) {\n if (callingCode) {\n return '+' + callingCode + nationalSignificantNumber;\n } else {\n return '+' + digits;\n }\n } else {\n if (country || callingCode) {\n var callingCode_ = country ? this.metadata.countryCallingCode() : callingCode;\n return '+' + callingCode_ + nationalSignificantNumber;\n }\n }\n }\n /**\r\n * Returns an instance of `PhoneNumber` class.\r\n * Will return `undefined` if no national (significant) number\r\n * digits have been entered so far, or if no `defaultCountry` has been\r\n * set and the user enters a phone number not in international format.\r\n */\n\n }, {\n key: \"getNumber\",\n value: function getNumber() {\n var _this$state3 = this.state,\n nationalSignificantNumber = _this$state3.nationalSignificantNumber,\n carrierCode = _this$state3.carrierCode,\n callingCode = _this$state3.callingCode; // `this._getCountry()` is basically same as `this.state.country`\n // with the only change that it return `undefined` in case of a\n // \"non-geographic\" numbering plan instead of `\"001\"` \"internal use\" value.\n\n var country = this._getCountry();\n\n if (!nationalSignificantNumber) {\n return;\n }\n\n if (!country && !callingCode) {\n return;\n }\n\n var phoneNumber = new PhoneNumber(country || callingCode, nationalSignificantNumber, this.metadata.metadata);\n\n if (carrierCode) {\n phoneNumber.carrierCode = carrierCode;\n } // Phone number extensions are not supported by \"As You Type\" formatter.\n\n\n return phoneNumber;\n }\n /**\r\n * Returns `true` if the phone number is \"possible\".\r\n * Is just a shortcut for `PhoneNumber.isPossible()`.\r\n * @return {boolean}\r\n */\n\n }, {\n key: \"isPossible\",\n value: function isPossible() {\n var phoneNumber = this.getNumber();\n\n if (!phoneNumber) {\n return false;\n }\n\n return phoneNumber.isPossible();\n }\n /**\r\n * Returns `true` if the phone number is \"valid\".\r\n * Is just a shortcut for `PhoneNumber.isValid()`.\r\n * @return {boolean}\r\n */\n\n }, {\n key: \"isValid\",\n value: function isValid() {\n var phoneNumber = this.getNumber();\n\n if (!phoneNumber) {\n return false;\n }\n\n return phoneNumber.isValid();\n }\n /**\r\n * @deprecated\r\n * This method is used in `react-phone-number-input/source/input-control.js`\r\n * in versions before `3.0.16`.\r\n */\n\n }, {\n key: \"getNationalNumber\",\n value: function getNationalNumber() {\n return this.state.nationalSignificantNumber;\n }\n /**\r\n * Returns the phone number characters entered by the user.\r\n * @return {string}\r\n */\n\n }, {\n key: \"getChars\",\n value: function getChars() {\n return (this.state.international ? '+' : '') + this.state.digits;\n }\n /**\r\n * Returns the template for the formatted phone number.\r\n * @return {string}\r\n */\n\n }, {\n key: \"getTemplate\",\n value: function getTemplate() {\n return this.formatter.getTemplate(this.state) || this.getNonFormattedTemplate() || '';\n }\n }]);\n\n return AsYouType;\n}();\n\nexport { AsYouType as default };\n//# sourceMappingURL=AsYouType.js.map","import Metadata from './metadata.js';\nexport default function getCountries(metadata) {\n return new Metadata(metadata).getCountries();\n}\n//# sourceMappingURL=getCountries.js.map","import PhoneNumber from './PhoneNumber.js';\nexport default function getExampleNumber(country, examples, metadata) {\n if (examples[country]) {\n return new PhoneNumber(country, examples[country], metadata);\n }\n}\n//# sourceMappingURL=getExampleNumber.js.map","import AsYouType from './AsYouType.js';\n/**\r\n * Formats a (possibly incomplete) phone number.\r\n * The phone number can be either in E.164 format\r\n * or in a form of national number digits.\r\n * @param {string} value - A possibly incomplete phone number. Either in E.164 format or in a form of national number digits.\r\n * @param {string?} country - Two-letter (\"ISO 3166-1 alpha-2\") country code.\r\n * @return {string} Formatted (possibly incomplete) phone number.\r\n */\n\nexport default function formatIncompletePhoneNumber(value, country, metadata) {\n if (!metadata) {\n metadata = country;\n country = undefined;\n }\n\n return new AsYouType(country, metadata).input(value);\n}\n//# sourceMappingURL=formatIncompletePhoneNumber.js.map","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { parsePhoneNumberWithError as _parsePhoneNumberWithError } from '../../core/index.js'\r\n\r\nexport function parsePhoneNumberWithError() {\r\n\treturn withMetadataArgument(_parsePhoneNumberWithError, arguments)\r\n}\r\n","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { parsePhoneNumberFromString as _parsePhoneNumberFromString } from '../../core/index.js'\r\n\r\nexport function parsePhoneNumberFromString() {\r\n\treturn withMetadataArgument(_parsePhoneNumberFromString, arguments)\r\n}","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\r\n// importing system which is even uncapable of importing \"*.json\" files.\r\nimport metadata from '../../metadata.mobile.json.js'\r\n\r\nimport { PhoneNumberMatcher as _PhoneNumberMatcher } from '../../core/index.js'\r\n\r\nexport function PhoneNumberMatcher(text, options) {\r\n\treturn _PhoneNumberMatcher.call(this, text, options, metadata)\r\n}\r\nPhoneNumberMatcher.prototype = Object.create(_PhoneNumberMatcher.prototype, {})\r\nPhoneNumberMatcher.prototype.constructor = PhoneNumberMatcher\r\n","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\r\n// importing system which is even uncapable of importing \"*.json\" files.\r\nimport metadata from '../../metadata.mobile.json.js'\r\n\r\nimport { AsYouType as _AsYouType } from '../../core/index.js'\r\n\r\nexport function AsYouType(country) {\r\n\treturn _AsYouType.call(this, country, metadata)\r\n}\r\n\r\nAsYouType.prototype = Object.create(_AsYouType.prototype, {})\r\nAsYouType.prototype.constructor = AsYouType","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\r\n// importing system which is even uncapable of importing \"*.json\" files.\r\nimport metadata from '../../metadata.mobile.json.js'\r\n\r\nimport { Metadata as _Metadata } from '../../core/index.js'\r\n\r\nexport function Metadata() {\r\n\treturn _Metadata.call(this, metadata)\r\n}\r\n\r\nMetadata.prototype = Object.create(_Metadata.prototype, {})\r\nMetadata.prototype.constructor = Metadata","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { findNumbers as _findNumbers } from '../../core/index.js'\r\n\r\nexport function findNumbers() {\r\n\treturn withMetadataArgument(_findNumbers, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { findPhoneNumbersInText as _findPhoneNumbersInText } from '../../core/index.js'\r\n\r\nexport function findPhoneNumbersInText() {\r\n\treturn withMetadataArgument(_findPhoneNumbersInText, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { formatIncompletePhoneNumber as _formatIncompletePhoneNumber } from '../../core/index.js'\r\n\r\nexport function formatIncompletePhoneNumber() {\r\n\treturn withMetadataArgument(_formatIncompletePhoneNumber, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { getCountries as _getCountries } from '../../core/index.js'\r\n\r\nexport function getCountries() {\r\n\treturn withMetadataArgument(_getCountries, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { getCountryCallingCode as _getCountryCallingCode } from '../../core/index.js'\r\n\r\nexport function getCountryCallingCode() {\r\n\treturn withMetadataArgument(_getCountryCallingCode, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { getExampleNumber as _getExampleNumber } from '../../core/index.js'\r\n\r\nexport function getExampleNumber() {\r\n\treturn withMetadataArgument(_getExampleNumber, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { getExtPrefix as _getExtPrefix } from '../../core/index.js'\r\n\r\nexport function getExtPrefix() {\r\n\treturn withMetadataArgument(_getExtPrefix, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { isPossiblePhoneNumber as _isPossiblePhoneNumber } from '../../core/index.js'\r\n\r\nexport function isPossiblePhoneNumber() {\r\n\treturn withMetadataArgument(_isPossiblePhoneNumber, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { isSupportedCountry as _isSupportedCountry } from '../../core/index.js'\r\n\r\nexport function isSupportedCountry() {\r\n\treturn withMetadataArgument(_isSupportedCountry, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { isValidPhoneNumber as _isValidPhoneNumber } from '../../core/index.js'\r\n\r\nexport function isValidPhoneNumber() {\r\n\treturn withMetadataArgument(_isValidPhoneNumber, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { searchNumbers as _searchNumbers } from '../../core/index.js'\r\n\r\nexport function searchNumbers() {\r\n\treturn withMetadataArgument(_searchNumbers, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { searchPhoneNumbersInText as _searchPhoneNumbersInText } from '../../core/index.js'\r\n\r\nexport function searchPhoneNumbersInText() {\r\n\treturn withMetadataArgument(_searchPhoneNumbersInText, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { validatePhoneNumberLength as _validatePhoneNumberLength } from '../../core/index.js'\r\n\r\nexport function validatePhoneNumberLength() {\r\n\treturn withMetadataArgument(_validatePhoneNumberLength, arguments)\r\n}"],"names":["metadata","version","country_calling_codes","countries","AC","AD","AE","AF","AG","AI","AL","AM","AO","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GT","GU","GW","GY","HK","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TA","TC","TD","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","YE","YT","ZA","ZM","ZW","nonGeographic","withMetadataArgument","func","_arguments","args","Array","prototype","slice","call","push","apply","this","_typeof","obj","Symbol","iterator","constructor","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_possibleConstructorReturn","self","TypeError","_assertThisInitialized","ReferenceError","_wrapNativeSuper","Class","_cache","Map","undefined","fn","Function","toString","indexOf","has","get","set","Wrapper","_construct","arguments","_getPrototypeOf","create","value","_setPrototypeOf","Parent","_isNativeReflectConstruct","Reflect","construct","a","instance","bind","sham","Proxy","Boolean","valueOf","e","o","p","setPrototypeOf","__proto__","getPrototypeOf","ParseError","_Error","subClass","superClass","_inherits","Derived","hasNativeReflectConstruct","Constructor","protoProps","staticProps","_super","result","Super","NewTarget","code","_this","_classCallCheck","name","Error","VALID_DIGITS","VALID_PUNCTUATION","concat","PLUS_CHARS","compare","b","split","pa","pb","na","Number","nb","isNaN","_createClass","DEFAULT_EXT_PREFIX","CALLING_CODE_REG_EXP","Metadata","is_object","keys","join","type_of","validateMetadata","setVersion","filter","_","countryCode","v1","v2","v3","nonGeographical","country","getCountryMetadata","callingCode","getCountryCodesForCallingCode","countryCodes","countryCallingCodes","selectNumberingPlan","test","hasCountry","numberingPlan","NumberingPlan","hasCallingCode","getNumberingPlanMetadata","getCountryCodeForCallingCode","IDDPrefix","defaultIDDPrefix","nationalNumberPattern","possibleLengths","formats","nationalPrefixForParsing","nationalPrefixTransformRule","leadingDigits","hasTypes","_type","type","ext","country_phone_code_to_countries","globalMetadataObject","_getFormats","getDefaultCountryMetadataForRegion","map","Format","_getNationalPrefixFormattingRule","_nationalPrefixForParsing","nationalPrefix","_getNationalPrefixIsOptionalWhenFormatting","types","_type2","getType","Type","format","_format","nationalPrefixFormattingRule","nationalPrefixIsOptionalWhenFormattingInNationalFormat","usesNationalPrefix","FIRST_GROUP_ONLY_PREFIX_PATTERN","getExtPrefix","getCountryCallingCode","countryCallingCode","isSupportedCountry","v4","getExtensionDigitsPattern","maxLength","createExtensionPattern","purpose","optionalExtnSuffix","possibleSeparatorsBetweenNumberAndExtLabel","possibleSeparatorsNumberExtLabelNoComma","VALID_PHONE_NUMBER","VALID_PHONE_NUMBER_START_REG_EXP","RegExp","VALID_PHONE_NUMBER_WITH_EXTENSION","VALID_PHONE_NUMBER_PATTERN","isViablePhoneNumber","number","EXTN_PATTERN","_createForOfIteratorHelperLoose","allowArrayLike","it","next","isArray","minLen","_arrayLikeToArray","n","from","_unsupportedIterableToArray","done","arr","len","arr2","DIGITS","parseDigit","character","parseDigits","string","_step","_iterator","digit","parseIncompletePhoneNumber","parsePhoneNumberCharacter","prevParsedCharacters","checkNumberLength","nationalNumber","checkNumberLengthForType","type_info","possible_lengths","mobile_type","merged","element","sort","mergeArrays","actual_length","minimum_length","isPossibleNumber","_slicedToArray","_arrayWithHoles","_i","_s","_e","_arr","_n","_d","err","_iterableToArrayLimit","_nonIterableRest","parseRFC3966","text","replace","_part$split2","formatRFC3966","_ref","matchesEntirely","regular_expression","NON_FIXED_LINE_PHONE_TYPES","getNumberType","input","options","phone","isNumberTypeEqualTo","pattern","isValidNumber","applyInternationalSeparatorStyle","formattedNumber","trim","FIRST_GROUP_PATTERN","formatNationalNumberUsingFormat","useInternationalFormat","withNationalPrefix","carrierCode","internationalFormat","SINGLE_IDD_PREFIX_REG_EXP","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","DEFAULT_OPTIONS","formatExtension","extension","formatNumber","addExtension","formatNationalNumber","fromCountry","iddPrefix","countryMetadata","getIddPrefix","formatIDD","formatAs","availableFormats","nationalNnumber","leadingDigitsPatterns","lastLeadingDigitsPattern","search","chooseFormatForNumber","PhoneNumber","_metadata","isCountryCode","isNonGeographicCallingCode","phoneNumber","CAPTURING_DIGIT_PATTERN","stripIddPrefix","IDDPrefixPattern","matchedGroups","match","extractNationalNumberFromPossiblyIncompleteNumber","prefixPattern","prefixMatch","exec","capturedGroupsCount","hasCapturedGroups","prefixBeforeNationalNumber","possiblePositionOfTheFirstCapturedGroup","extractNationalNumber","_extractNationalNumbe","nationalNumberBefore","nationalNumberAfter","shouldHaveExtractedNationalPrefix","isPossibleIncompleteNationalNumber","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","possibleShorterNumber","possibleShorterNationalNumber","extractCountryCallingCode","numberWithoutIDD","_extractCountryCallin","shorterNumber","_countryCallingCode","getCountryByCallingCode","nationalPhoneNumber","possibleCountries","selectCountryFromList","PHONE_NUMBER_START_PATTERN","AFTER_PHONE_NUMBER_END_PATTERN","parse","defaultCountry","_parseInput","extract","throwOnError","startsAt","extractFormattedPhoneNumber","isViablePhoneNumberStart","error","withExtensionStripped","start","numberWithoutExtension","matches","extractExtension","parseInput","formattedPhoneNumber","_parsePhoneNumber","defaultCallingCode","exactCountry","parsePhoneNumber","hasSelectedNumberingPlan","valid","extended","possible","parseNumber","_normalizeArguments","normalizeArguments","parsePhoneNumber_","_Array$prototype$slic2","arg_1","arg_2","arg_3","arg_4","isObject","parsePhoneNumberFromString","parsePhoneNumberFromString_","isValidPhoneNumber","isValid","isPossiblePhoneNumber","isPossible","validatePhoneNumberLength","message","Node","prev","LRUCache","limit","size","head","tail","cache","ensureLimit","node","remove","put","console","log","RegExpCache","regExp","lower","upper","trimAfterFirstMatch","regexp","index","_pZ","pZ","PZ","pNd","_pL","pL","pL_regexp","pSc","pSc_regexp","pMn","pMn_regexp","latinLetterRegexp","isLatinLetter","letter","isInvalidPunctuationSymbol","Leniency","POSSIBLE","candidate","VALID","containsOnlyValidXChars","STRICT_GROUPING","regExpCache","candidateString","containsMoreThanOneSlashInNationalNumber","isNationalPrefixPresentIfRequired","checkNumberGroupingIsValid","allNumberGroupsRemainGrouped","EXACT_GROUPING","allNumberGroupsAreExactlyPresent","charAtIndex","charAt","charAtNextIndex","util","isNumberMatch","substring","MatchType","NSN_MATCH","getCountryCodeSource","phoneNumberRegion","getRegionCodeForCountryCode","getCountryCode","getMetadataForRegion","getNationalSignificantNumber","formatRule","chooseFormattingPatternForNumber","numberFormats","getNationalPrefixFormattingRule","getNationalPrefixOptionalWhenFormatting","PhoneNumberUtil","formattingRuleHasFirstGroupOnly","rawInputCopy","normalizeDigitsOnly","getRawInput","maybeStripNationalPrefixAndCarrierCode","firstSlashInBodyIndex","secondSlashInBodyIndex","CountryCodeSource","FROM_NUMBER_WITH_PLUS_SIGN","FROM_NUMBER_WITHOUT_PLUS_SIGN","String","checkGroups","normalizedCandidate","normalizeDigits","formattedNumberGroups","getNationalNumberGroups","alternateFormats","MetadataManager","getAlternateFormatsForCountry","nationalSignificantNumber","alternateFormat","getPatternForRegExp","formattingPattern","formatNsnUsingPattern","rfc3966Format","endIndex","startIndex","candidateGroups","NON_DIGITS_PATTERN","candidateNumberGroupIndex","hasExtension","contains","formattedNumberGroupIndex","fromIndex","FROM_DEFAULT_COUNTRY","region","getNddPrefixForRegion","Character","isDigit","getExtension","SECOND_NUMBER_START_PATTERN","parsePreCandidate","SLASH_SEPARATED_DATES","TIME_STAMPS","TIME_STAMPS_SUFFIX_LEADING","isValidPreCandidate","offset","followingText","OPENING_PARENS","CLOSING_PARENS","NON_PARENS","LEAD_CLASS","LEAD_CLASS_LEADING","BRACKET_PAIR_LIMIT","MATCHING_BRACKETS_ENTIRE","PUB_PAGES","EXTN_PATTERNS_FOR_MATCHING","INNER_MATCHES","leadLimit","punctuationLimit","blockLimit","MAX_LENGTH_FOR_NSN","punctuation","digitSequence","PATTERN","UNWANTED_END_CHAR_PATTERN","MAX_SAFE_INTEGER","Math","pow","PhoneNumberMatcher","leniency","maxTries","state","searchIndex","parseAndVerify","extractInnerMatch","endsAt","innerMatchPattern","isFirstMatch","candidateMatch","innerMatchRegExp","_candidate","_match","candidateIndexGuess","previousChar","lastCharIndex","nextChar","isValidCandidate","lastMatch","find","hasNext","findNumbers","matcher","results","_findNumbers","searchNumbers","findPhoneNumbersInText","getArguments","searchPhoneNumbersInText","AsYouTypeState","onCountryChange","onCallingCodeChange","international","missingPlus","digits","resetNationalSignificantNumber","initCountryAndCallingCode","getNationalDigits","nationalSignificantNumberMatchesInput","complexPrefixBeforeNationalSignificantNumber","properties","_Object$keys","setCountry","setCallingCode","nextDigits","DIGIT_PLACEHOLDER","DIGIT_PLACEHOLDER_MATCHER","repeat","times","cutAndStripNonPairedParens","cutBeforeIndex","dangling_braces","pop","cleared_string","_dangling_braces","stripNonPairedParens","formatCompleteNumber","shouldTryNationalPrefixFormattingRule","getSeparatorAfterNationalPrefix","_ref2","useNationalPrefixFormattingRule","formatNationalNumberWithAndWithoutNationalPrefixFormattingRule","_ref3","formattedNationalNumber","isValidFormattedNationalNumber","PatternParser","context","or","instructions","parsePattern","_this$context$","branches","op","expandSingleElementArray","OPERATOR","operator","before","rightPart","startContext","getContext","endContext","oneOfSet","parseOneOfSet","ILLEGAL_CHARACTER_REGEXP","values","prevValue","charCodeAt","nextValue","fromCharCode","array","PatternMatcher","matchTree","allowOverflow","matchedChars","overflow","characters","tree","last","characterString","partialMatch","restCharacters","JSON","stringify","_result","_step2","_iterator2","_char","LONGEST_DUMMY_PHONE_NUMBER","NATIONAL_PREFIX_SEPARATORS_PATTERN","NON_ALTERING_FORMAT_REG_EXP","AsYouTypeFormatter","resetFormat","chosenFormat","template","nationalNumberTemplate","populatedNationalNumberTemplate","populatedNationalNumberTemplatePosition","isNANP","matchingFormats","narrowDownMatchingFormats","canFormatCompleteNumber","formattedCompleteNumber","setNationalNumberTemplate","lastIndexOf","formatNationalNumberWithNextDigits","previouslyChosenFormat","newlyChosenFormat","chooseFormat","formatNextNationalNumberDigits","_this2","leadingDigitsPatternIndex","formatSuits","formatMatches","nationalPrefixIsMandatoryWhenFormattingInNationalFormat","leadingDigitsPatternsCount","min","leadingDigitsPattern","_this3","_loop","getFormatFormat","createTemplateForFormat","_ret","getTemplateForFormat","spacing","internationalPrefix","getInternationalPrefixBeforeCountryCallingCode","getDigitsWithoutInternationalPrefix","_ref4","strictPattern","nationalNumberDummyDigits","nationalPrefixIncludedInTemplate","numberFormat","numberFormatWithNationalPrefix","position","populateTemplateWithDigits","_ref5","VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN","VALID_FORMATTED_PHONE_NUMBER_PART","AFTER_PHONE_NUMBER_DIGITS_END_PATTERN","COMPLEX_NATIONAL_PREFIX","AsYouTypeParser","onNationalSignificantNumberChange","justLeadingPlus","_extractFormattedDigi","_extractFormattedDigi4","extractedNumber","hasPlus","_extractFormattedDigitsAndPlus","formattedDigits","extractFormattedDigitsAndPlus","_extractFormattedDigi2","startInternationalNumber","inputDigits","hasReceivedThreeLeadingDigits","appendDigits","extractIddPrefix","isWaitingForCountryCallingCode","appendNationalSignificantNumberDigits","hasExtractedNationalSignificantNumber","extractNationalSignificantNumber","stateUpdate","update","_extractCountryCallingCode","couldPossiblyExtractAnotherNationalSignificantNumber","nationalDigits","setState","onExtractedNationalNumber","prevNationalSignificantNumber","_extractNationalNumbe2","nationalSignificantNumberIndex","extractAnotherNationalSignificantNumber","fixMissingPlus","extractCallingCodeAndNationalSignificantNumber","_extractCountryCallin2","newCallingCode","AsYouType","optionsOrDefaultCountry","_this$getCountryAndCa2","getCountryAndCallingCode","reset","_this$parser$input","parser","formattedOutput","determineTheCountryIfNeeded","formatter","reExtractNationalSignificantNumber","getFullNumber","getNonFormattedNumber","isInternational","getCallingCode","_getCountry","isCountryCallingCodeAmbiguous","determineTheCountry","prefix","_this$state","getNonFormattedNationalNumberWithPrefix","_this$state2","_this$state3","getNumber","getTemplate","getNonFormattedTemplate","getCountries","getExampleNumber","examples","formatIncompletePhoneNumber","parsePhoneNumberWithError","_parsePhoneNumberWithError","_parsePhoneNumberFromString","_PhoneNumberMatcher","_AsYouType","_Metadata","_findPhoneNumbersInText","_formatIncompletePhoneNumber","_getCountries","_getCountryCallingCode","_getExampleNumber","_getExtPrefix","_isPossiblePhoneNumber","_isSupportedCountry","_isValidPhoneNumber","_searchNumbers","_searchPhoneNumbersInText","_validatePhoneNumberLength"],"mappings":"sPAGA,IAAAA,EAAe,CAACC,QAAU,EAAEC,sBAAwB,CAAC,EAAI,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,EAAI,CAAC,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,KAAK,KAAK,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,KAAK,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/core/index.cjs b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/core/index.cjs new file mode 100644 index 00000000..47ba8ddf --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/core/index.cjs @@ -0,0 +1,50 @@ +'use strict' + +var parsePhoneNumberFromString = require('../build/parsePhoneNumberFromString.js').default + +// ES5 `require()` "default" "interoperability" hack. +// https://github.com/babel/babel/issues/2212#issuecomment-131827986 +// An alternative approach: +// https://www.npmjs.com/package/babel-plugin-add-module-exports +exports = module.exports = parsePhoneNumberFromString +exports['default'] = parsePhoneNumberFromString + +exports.ParseError = require('../build/ParseError.js').default +var parsePhoneNumberWithError = require('../build/parsePhoneNumber.js').default +// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`. +exports.parsePhoneNumberWithError = parsePhoneNumberWithError +exports.parsePhoneNumber = parsePhoneNumberWithError + +// `parsePhoneNumberFromString()` named export is now considered legacy: +// it has been promoted to a default export due to being too verbose. +exports.parsePhoneNumberFromString = parsePhoneNumberFromString + +exports.isValidPhoneNumber = require('../build/isValidPhoneNumber.js').default +exports.isPossiblePhoneNumber = require('../build/isPossiblePhoneNumber.js').default +exports.validatePhoneNumberLength = require('../build/validatePhoneNumberLength.js').default + +exports.findNumbers = require('../build/findNumbers.js').default +exports.searchNumbers = require('../build/searchNumbers.js').default +exports.findPhoneNumbersInText = require('../build/findPhoneNumbersInText.js').default +exports.searchPhoneNumbersInText = require('../build/searchPhoneNumbersInText.js').default +exports.PhoneNumberMatcher = require('../build/PhoneNumberMatcher.js').default + +exports.AsYouType = require('../build/AsYouType.js').default + +exports.Metadata = require('../build/metadata.js').default +exports.isSupportedCountry = require('../build/metadata.js').isSupportedCountry +exports.getCountries = require('../build/getCountries.js').default +exports.getCountryCallingCode = require('../build/metadata.js').getCountryCallingCode +exports.getExtPrefix = require('../build/metadata.js').getExtPrefix + +exports.getExampleNumber = require('../build/getExampleNumber.js').default + +exports.formatIncompletePhoneNumber = require('../build/formatIncompletePhoneNumber.js').default + +exports.parseIncompletePhoneNumber = require('../build/parseIncompletePhoneNumber.js').default +exports.parsePhoneNumberCharacter = require('../build/parseIncompletePhoneNumber.js').parsePhoneNumberCharacter +exports.parseDigits = require('../build/helpers/parseDigits.js').default +exports.DIGIT_PLACEHOLDER = require('../build/AsYouTypeFormatter.js').DIGIT_PLACEHOLDER + +exports.parseRFC3966 = require('../build/helpers/RFC3966.js').parseRFC3966 +exports.formatRFC3966 = require('../build/helpers/RFC3966.js').formatRFC3966 \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/core/index.cjs.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/core/index.cjs.js new file mode 100644 index 00000000..d5109054 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/core/index.cjs.js @@ -0,0 +1,55 @@ +'use strict' + +// This file is deprecated. +// It's the same as `index.cjs`, just with an added `.js` file extension. +// It only exists for compatibility with the software that doesn't like `*.cjs` file extension. +// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/61#note_950728292 + +var parsePhoneNumberFromString = require('../build/parsePhoneNumberFromString.js').default + +// ES5 `require()` "default" "interoperability" hack. +// https://github.com/babel/babel/issues/2212#issuecomment-131827986 +// An alternative approach: +// https://www.npmjs.com/package/babel-plugin-add-module-exports +exports = module.exports = parsePhoneNumberFromString +exports['default'] = parsePhoneNumberFromString + +exports.ParseError = require('../build/ParseError.js').default +var parsePhoneNumberWithError = require('../build/parsePhoneNumber.js').default +// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`. +exports.parsePhoneNumberWithError = parsePhoneNumberWithError +exports.parsePhoneNumber = parsePhoneNumberWithError + +// `parsePhoneNumberFromString()` named export is now considered legacy: +// it has been promoted to a default export due to being too verbose. +exports.parsePhoneNumberFromString = parsePhoneNumberFromString + +exports.isValidPhoneNumber = require('../build/isValidPhoneNumber.js').default +exports.isPossiblePhoneNumber = require('../build/isPossiblePhoneNumber.js').default +exports.validatePhoneNumberLength = require('../build/validatePhoneNumberLength.js').default + +exports.findNumbers = require('../build/findNumbers.js').default +exports.searchNumbers = require('../build/searchNumbers.js').default +exports.findPhoneNumbersInText = require('../build/findPhoneNumbersInText.js').default +exports.searchPhoneNumbersInText = require('../build/searchPhoneNumbersInText.js').default +exports.PhoneNumberMatcher = require('../build/PhoneNumberMatcher.js').default + +exports.AsYouType = require('../build/AsYouType.js').default + +exports.Metadata = require('../build/metadata.js').default +exports.isSupportedCountry = require('../build/metadata.js').isSupportedCountry +exports.getCountries = require('../build/getCountries.js').default +exports.getCountryCallingCode = require('../build/metadata.js').getCountryCallingCode +exports.getExtPrefix = require('../build/metadata.js').getExtPrefix + +exports.getExampleNumber = require('../build/getExampleNumber.js').default + +exports.formatIncompletePhoneNumber = require('../build/formatIncompletePhoneNumber.js').default + +exports.parseIncompletePhoneNumber = require('../build/parseIncompletePhoneNumber.js').default +exports.parsePhoneNumberCharacter = require('../build/parseIncompletePhoneNumber.js').parsePhoneNumberCharacter +exports.parseDigits = require('../build/helpers/parseDigits.js').default +exports.DIGIT_PLACEHOLDER = require('../build/AsYouTypeFormatter.js').DIGIT_PLACEHOLDER + +exports.parseRFC3966 = require('../build/helpers/RFC3966.js').parseRFC3966 +exports.formatRFC3966 = require('../build/helpers/RFC3966.js').formatRFC3966 \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/core/index.d.ts b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/core/index.d.ts new file mode 100644 index 00000000..30c16426 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/core/index.d.ts @@ -0,0 +1,115 @@ +import { + MetadataJson, + Examples, + PhoneNumber, + E164Number, + CountryCallingCode, + CountryCode, + CarrierCode, + NationalNumber, + Extension, + ParseError, + NumberFoundLegacy, + NumberFound, + NumberType, + NumberFormat, + NumberingPlan, + ValidatePhoneNumberLengthResult +} from '../types'; + +// They say this re-export is required. +// https://github.com/catamphetamine/libphonenumber-js/pull/290#issuecomment-453281180 +export { + MetadataJson, + Examples, + PhoneNumber, + E164Number, + CountryCallingCode, + CountryCode, + CarrierCode, + NationalNumber, + Extension, + ParseError, + NumberFoundLegacy, + NumberFound, + NumberType, + NumberFormat, + NumberingPlan, + ValidatePhoneNumberLengthResult +}; + +// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`. +export function parsePhoneNumber(text: string, metadata: MetadataJson): PhoneNumber; +export function parsePhoneNumber(text: string, defaultCountry: CountryCode, metadata: MetadataJson): PhoneNumber; + +export function parsePhoneNumberWithError(text: string, metadata: MetadataJson): PhoneNumber; +export function parsePhoneNumberWithError(text: string, defaultCountry: CountryCode, metadata: MetadataJson): PhoneNumber; + +// `parsePhoneNumberFromString()` named export is now considered legacy: +// it has been promoted to a default export due to being too verbose. +export function parsePhoneNumberFromString(text: string, metadata: MetadataJson): PhoneNumber | undefined; +export function parsePhoneNumberFromString(text: string, defaultCountry: CountryCode | { defaultCountry?: CountryCode, defaultCallingCode?: string, extract?: boolean }, metadata: MetadataJson): PhoneNumber | undefined; + +export default parsePhoneNumberFromString; + +export function isValidPhoneNumber(text: string, metadata: MetadataJson): boolean; +export function isValidPhoneNumber(text: string, defaultCountry: CountryCode | { defaultCountry?: CountryCode, defaultCallingCode?: string }, metadata: MetadataJson): boolean; + +export function isPossiblePhoneNumber(text: string, metadata: MetadataJson): boolean; +export function isPossiblePhoneNumber(text: string, defaultCountry: CountryCode | { defaultCountry?: CountryCode, defaultCallingCode?: string }, metadata: MetadataJson): boolean; + +export function validatePhoneNumberLength(text: string, metadata: MetadataJson): ValidatePhoneNumberLengthResult | undefined; +export function validatePhoneNumberLength(text: string, defaultCountry: CountryCode | { defaultCountry?: CountryCode, defaultCallingCode?: string }, metadata: MetadataJson): ValidatePhoneNumberLengthResult | undefined; + +export function findNumbers(text: string, metadata: MetadataJson): NumberFoundLegacy[]; +export function findNumbers(text: string, options: CountryCode | { defaultCountry?: CountryCode, v2: true }, metadata: MetadataJson): NumberFound[]; + +export function searchNumbers(text: string, metadata: MetadataJson): IterableIterator; +export function searchNumbers(text: string, options: CountryCode | { defaultCountry?: CountryCode, v2: true }, metadata: MetadataJson): IterableIterator; + +export function findPhoneNumbersInText(text: string, options: CountryCode | { defaultCountry?: CountryCode }, metadata: MetadataJson): NumberFound[]; +export function findPhoneNumbersInText(text: string, metadata: MetadataJson): NumberFound[]; + +export function searchPhoneNumbersInText(text: string, options: CountryCode | { defaultCountry?: CountryCode }, metadata: MetadataJson): IterableIterator; +export function searchPhoneNumbersInText(text: string, metadata: MetadataJson): IterableIterator; + +export class PhoneNumberMatcher { + constructor(text: string, metadata: MetadataJson); + constructor(text: string, options: { defaultCountry?: CountryCode, v2: true }, metadata: MetadataJson); + hasNext(): boolean; + next(): NumberFound | undefined; +} + +export function isSupportedCountry(countryCode: CountryCode, metadata: MetadataJson): boolean; +export function getCountries(metadata: MetadataJson): CountryCode[]; +export function getCountryCallingCode(countryCode: CountryCode, metadata: MetadataJson): CountryCallingCode; +export function getExtPrefix(countryCode: CountryCode, metadata: MetadataJson): string; + +export function getExampleNumber(country: CountryCode, examples: Examples, metadata: MetadataJson): PhoneNumber | undefined; + +export function formatIncompletePhoneNumber(number: string, metadata: MetadataJson): string; +export function formatIncompletePhoneNumber(number: string, countryCode: CountryCode, metadata: MetadataJson): string; +export function parseIncompletePhoneNumber(text: string): string; +export function parsePhoneNumberCharacter(character: string): string; +export function parseDigits(character: string): string; + +export class AsYouType { + constructor(defaultCountryCode: CountryCode | { defaultCountry?: CountryCode, defaultCallingCode?: string } | undefined, metadata: MetadataJson); + input(text: string): string; + reset(): void; + getNumber(): PhoneNumber | undefined; + getNumberValue(): E164Number | undefined; + getChars(): string; + getTemplate(): string; + getCallingCode(): string | undefined; + getCountry(): CountryCode | undefined; + isInternational(): boolean; + isPossible(): boolean; + isValid(): boolean; +} + +export class Metadata { + constructor(metadata: MetadataJson); + selectNumberingPlan(country: CountryCode): void; + numberingPlan?: NumberingPlan; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/core/index.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/core/index.js new file mode 100644 index 00000000..cea74e84 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/core/index.js @@ -0,0 +1,34 @@ +export { default as ParseError } from '../es6/ParseError.js' +// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`. +export { default as parsePhoneNumberWithError, default as parsePhoneNumber } from '../es6/parsePhoneNumber.js' + +// `parsePhoneNumberFromString()` named export is now considered legacy: +// it has been promoted to a default export due to being too verbose. +export { default as default, default as parsePhoneNumberFromString } from '../es6/parsePhoneNumberFromString.js' + +export { default as isValidPhoneNumber } from '../es6/isValidPhoneNumber.js' +export { default as isPossiblePhoneNumber } from '../es6/isPossiblePhoneNumber.js' +export { default as validatePhoneNumberLength } from '../es6/validatePhoneNumberLength.js' + +// Deprecated. +export { default as findNumbers } from '../es6/findNumbers.js' +// Deprecated. +export { default as searchNumbers } from '../es6/searchNumbers.js' + +export { default as findPhoneNumbersInText } from '../es6/findPhoneNumbersInText.js' +export { default as searchPhoneNumbersInText } from '../es6/searchPhoneNumbersInText.js' +export { default as PhoneNumberMatcher } from '../es6/PhoneNumberMatcher.js' + +export { default as AsYouType } from '../es6/AsYouType.js' +export { DIGIT_PLACEHOLDER } from '../es6/AsYouTypeFormatter.js' + +export { default as getCountries } from '../es6/getCountries.js' +export { default as Metadata, isSupportedCountry, getCountryCallingCode, getExtPrefix } from '../es6/metadata.js' + +export { default as getExampleNumber } from '../es6/getExampleNumber.js' + +export { default as formatIncompletePhoneNumber } from '../es6/formatIncompletePhoneNumber.js' +export { default as parseIncompletePhoneNumber, parsePhoneNumberCharacter } from '../es6/parseIncompletePhoneNumber.js' +export { default as parseDigits } from '../es6/helpers/parseDigits.js' + +export { parseRFC3966, formatRFC3966 } from '../es6/helpers/RFC3966.js' diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/core/package.json b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/core/package.json new file mode 100644 index 00000000..a720be1b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/core/package.json @@ -0,0 +1,15 @@ +{ + "private": true, + "name": "libphonenumber-js/core", + "main": "index.cjs", + "module": "index.js", + "type": "module", + "exports": { + ".": { + "types": "./index.d.ts", + "import": "./index.js", + "require": "./index.cjs" + } + }, + "sideEffects": false +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/custom.d.ts b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/custom.d.ts new file mode 100644 index 00000000..1f99e5f1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/custom.d.ts @@ -0,0 +1,169 @@ +// `/custom` export is deprecated. +// Use `/core` sub-package instead. + +import { + MetadataJson, + Examples, + PhoneNumber, + E164Number, + CountryCallingCode, + CountryCode, + CarrierCode, + NationalNumber, + Extension, + ParseError, + NumberFoundLegacy, + NumberFound, + NumberType, + NumberFormat, + NumberingPlan +} from './types'; + +import { + ParsedNumber, + FormatNumberOptions, + ParseNumberOptions +} from './index'; + +export { + MetadataJson, + Examples, + PhoneNumber, + E164Number, + CountryCallingCode, + CountryCode, + CarrierCode, + NationalNumber, + Extension, + FormatNumberOptions, + ParsedNumber, + ParseNumberOptions, + ParseError, + NumberFoundLegacy, + NumberFound, + NumberFormat, + NumberType, + NumberingPlan +}; + +// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`. +export function parsePhoneNumber(text: string, metadata: MetadataJson): PhoneNumber; +export function parsePhoneNumber(text: string, defaultCountry: CountryCode, metadata: MetadataJson): PhoneNumber; + +export function parsePhoneNumberWithError(text: string, metadata: MetadataJson): PhoneNumber; +export function parsePhoneNumberWithError(text: string, defaultCountry: CountryCode, metadata: MetadataJson): PhoneNumber; + +// `parsePhoneNumberFromString()` named export is now considered legacy: +// it has been promoted to a default export due to being too verbose. +export function parsePhoneNumberFromString(text: string, metadata: MetadataJson): PhoneNumber; +export function parsePhoneNumberFromString(text: string, defaultCountry: CountryCode | { defaultCountry?: CountryCode, defaultCallingCode?: string, extract?: boolean }, metadata: MetadataJson): PhoneNumber; + +export default parsePhoneNumberFromString; + +export function parse(text: string, metadata: MetadataJson): ParsedNumber; +export function parse(text: string, options: CountryCode | ParseNumberOptions, metadata: MetadataJson): ParsedNumber; + +export function parseNumber(text: string, metadata: MetadataJson): ParsedNumber | {}; +export function parseNumber(text: string, options: CountryCode | ParseNumberOptions, metadata: MetadataJson): ParsedNumber | {}; + +// `format()` and `formatCustom` are deprecated. +// Use `formatNumber()` and `formatNumberCustom()` instead. +export function format(parsedNumber: ParsedNumber, format: NumberFormat, metadata: MetadataJson): string; +export function format(phone: NationalNumber, format: NumberFormat, metadata: MetadataJson): string; +export function format(phone: NationalNumber, country: CountryCode, format: NumberFormat, metadata: MetadataJson): string; + +export function formatNumber(parsedNumber: ParsedNumber, format: NumberFormat, metadata: MetadataJson): string; +export function formatNumber(parsedNumber: ParsedNumber, format: NumberFormat, options: FormatNumberOptions, metadata: MetadataJson): string; + +export function formatNumber(phone: NationalNumber, format: NumberFormat, metadata: MetadataJson): string; +export function formatNumber(phone: NationalNumber, format: NumberFormat, options: FormatNumberOptions, metadata: MetadataJson): string; + +export function formatNumber(phone: NationalNumber, country: CountryCode, format: NumberFormat, metadata: MetadataJson): string; +export function formatNumber(phone: NationalNumber, country: CountryCode, format: NumberFormat, options: FormatNumberOptions, metadata: MetadataJson): string; + +export function getNumberType(parsedNumber: ParsedNumber, metadata: MetadataJson): NumberType; +export function getNumberType(phone: NationalNumber, metadata: MetadataJson): NumberType; +export function getNumberType(phone: NationalNumber, country: CountryCode, metadata: MetadataJson): NumberType; + +export function getExampleNumber(country: CountryCode, examples: Examples, metadata: MetadataJson): PhoneNumber | undefined; + +export function isPossibleNumber(parsedNumber: ParsedNumber, metadata: MetadataJson): boolean; +export function isPossibleNumber(phone: NationalNumber, metadata: MetadataJson): boolean; +export function isPossibleNumber(phone: NationalNumber, country: CountryCode, metadata: MetadataJson): boolean; + +export function isValidNumber(parsedNumber: ParsedNumber, metadata: MetadataJson): boolean; +export function isValidNumber(phone: NationalNumber, metadata: MetadataJson): boolean; +export function isValidNumber(phone: NationalNumber, country: CountryCode, metadata: MetadataJson): boolean; + +export function isValidNumberForRegion(phone: NationalNumber, country: CountryCode, metadata: MetadataJson): boolean; + +// Deprecated. +export function findParsedNumbers(text: string, metadata: MetadataJson): NumberFoundLegacy[]; +export function findParsedNumbers(text: string, options: CountryCode | { defaultCountry?: CountryCode }, metadata: MetadataJson): NumberFoundLegacy[]; + +// Deprecated. +export function searchParsedNumbers(text: string, metadata: MetadataJson): IterableIterator; +export function searchParsedNumbers(text: string, options: CountryCode | { defaultCountry?: CountryCode }, metadata: MetadataJson): IterableIterator; + +// Deprecated. +export class ParsedNumberSearch { + constructor(text: string, metadata: MetadataJson); + constructor(text: string, options: { defaultCountry?: CountryCode }, metadata: MetadataJson); + hasNext(): boolean; + next(): NumberFoundLegacy | undefined; +} + +export function findNumbers(text: string, metadata: MetadataJson): NumberFoundLegacy[]; +export function findNumbers(text: string, options: CountryCode | { defaultCountry?: CountryCode, v2: true }, metadata: MetadataJson): NumberFound[]; + +export function searchNumbers(text: string, metadata: MetadataJson): IterableIterator; +export function searchNumbers(text: string, options: CountryCode | { defaultCountry?: CountryCode, v2: true }, metadata: MetadataJson): IterableIterator; + +export function findPhoneNumbersInText(text: string, metadata: MetadataJson): NumberFound[]; +export function findPhoneNumbersInText(text: string, options: CountryCode | { defaultCountry?: CountryCode, defaultCallingCode?: string }, metadata: MetadataJson): NumberFound[]; + +export function searchPhoneNumbersInText(text: string, metadata: MetadataJson): IterableIterator; +export function searchPhoneNumbersInText(text: string, options: CountryCode | { defaultCountry?: CountryCode, defaultCallingCode?: string }, metadata: MetadataJson): IterableIterator; + +export class PhoneNumberMatcher { + constructor(text: string, metadata: MetadataJson); + constructor(text: string, options: { defaultCountry?: CountryCode, v2: true }, metadata: MetadataJson); + hasNext(): boolean; + next(): NumberFound | undefined; +} + +export function getCountries(metadata: MetadataJson): CountryCode[]; +export function getCountryCallingCode(countryCode: CountryCode, metadata: MetadataJson): CountryCallingCode; +// Deprecated +export function getPhoneCode(countryCode: CountryCode, metadata: MetadataJson): CountryCallingCode; +export function getExtPrefix(countryCode: CountryCode, metadata: MetadataJson): string; +export function isSupportedCountry(countryCode: CountryCode, metadata: MetadataJson): boolean; + +export function formatIncompletePhoneNumber(number: string, metadata: MetadataJson): string; +export function formatIncompletePhoneNumber(number: string, countryCode: CountryCode, metadata: MetadataJson): string; +export function parseIncompletePhoneNumber(text: string): string; +export function parsePhoneNumberCharacter(character: string): string; +export function parseDigits(character: string): string; + +export class AsYouType { + constructor(defaultCountryCode: CountryCode | { defaultCountry?: CountryCode, defaultCallingCode?: string } | undefined, metadata: MetadataJson); + input(text: string): string; + reset(): void; + country: CountryCode | undefined; + getNumber(): PhoneNumber | undefined; + getNumberValue(): E164Number | undefined; + getNationalNumber(): string; + getChars(): string; + getTemplate(): string; + getCallingCode(): string | undefined; + getCountry(): CountryCode | undefined; + isInternational(): boolean; + isPossible(): boolean; + isValid(): boolean; +} + +export class Metadata { + constructor(metadata: MetadataJson); + selectNumberingPlan(country: CountryCode): void; + numberingPlan?: NumberingPlan; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/custom.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/custom.js new file mode 100644 index 00000000..0fd406bb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/custom.js @@ -0,0 +1,79 @@ +// The `/custom` export has been long deprecated: use `/core` export instead. + +'use strict' + +var parsePhoneNumberFromString = require('./build/parsePhoneNumberFromString.js').default + +// ES5 `require()` "default" "interoperability" hack. +// https://github.com/babel/babel/issues/2212#issuecomment-131827986 +// An alternative approach: +// https://www.npmjs.com/package/babel-plugin-add-module-exports +exports = module.exports = parsePhoneNumberFromString +exports['default'] = parsePhoneNumberFromString + +exports.ParseError = require('./build/ParseError.js').default +var parsePhoneNumberWithError = require('./build/parsePhoneNumber.js').default +// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`. +exports.parsePhoneNumber = parsePhoneNumberWithError +exports.parsePhoneNumberWithError = parsePhoneNumberWithError + +// `parsePhoneNumberFromString()` named export is now considered legacy: +// it has been promoted to a default export due to being too verbose. +exports.parsePhoneNumberFromString = parsePhoneNumberFromString + +// Deprecated: remove `parse()` export in 2.0.0. +// (renamed to `parseNumber()`) +exports.parse = require('./build/parse.js').default +exports.parseNumber = require('./build/parse.js').default +// Deprecated: remove `format()` export in 2.0.0. +// (renamed to `formatNumber()`) +exports.format = require('./build/format.js').default +exports.formatNumber = require('./build/format.js').default +exports.getNumberType = require('./build/getNumberType.js').default +exports.getExampleNumber = require('./build/getExampleNumber.js').default +exports.isValidNumber = require('./build/validate.js').default +exports.isValidNumberForRegion = require('./build/isValidNumberForRegion.js').default + +// Deprecated. +exports.isPossibleNumber = require('./build/isPossibleNumber.js').default + +exports.findNumbers = require('./build/findNumbers.js').default +exports.searchNumbers = require('./build/searchNumbers.js').default +exports.findPhoneNumbersInText = require('./build/findPhoneNumbersInText.js').default +exports.searchPhoneNumbersInText = require('./build/searchPhoneNumbersInText.js').default +exports.PhoneNumberMatcher = require('./build/PhoneNumberMatcher.js').default + +// Deprecated. +exports.findPhoneNumbers = require('./build/findPhoneNumbers.js').default +exports.searchPhoneNumbers = require('./build/findPhoneNumbers.js').searchPhoneNumbers +exports.PhoneNumberSearch = require('./build/findPhoneNumbers_.js').PhoneNumberSearch + +exports.AsYouType = require('./build/AsYouType.js').default + +exports.formatIncompletePhoneNumber = require('./build/formatIncompletePhoneNumber.js').default +exports.parseIncompletePhoneNumber = require('./build/parseIncompletePhoneNumber.js').default +exports.parsePhoneNumberCharacter = require('./build/parseIncompletePhoneNumber.js').parsePhoneNumberCharacter +exports.parseDigits = require('./build/helpers/parseDigits.js').default + +// Deprecated: `DIGITS` were used by `react-phone-number-input`. +// Replaced by `parseDigits()`. +// +// Deprecated: `DIGIT_PLACEHOLDER` was used by `react-phone-number-input`. +// Not used anymore. +// +exports.DIGITS = require('./build/helpers/parseDigits.js').DIGITS +exports.DIGIT_PLACEHOLDER = require('./build/AsYouTypeFormatter.js').DIGIT_PLACEHOLDER + +exports.getCountries = require('./build/getCountries.js').default +exports.getCountryCallingCode = require('./build/getCountryCallingCode.js').default +// `getPhoneCode` name is deprecated, use `getCountryCallingCode` instead. +exports.getPhoneCode = exports.getCountryCallingCode + +exports.Metadata = require('./build/metadata.js').default +exports.isSupportedCountry = require('./build/metadata.js').isSupportedCountry +exports.getExtPrefix = require('./build/metadata.js').getExtPrefix + +exports.parseRFC3966 = require('./build/helpers/RFC3966.js').parseRFC3966 +exports.formatRFC3966 = require('./build/helpers/RFC3966.js').formatRFC3966 + +// exports['default'] = ... \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouType.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouType.js new file mode 100644 index 00000000..6c2fa6a7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouType.js @@ -0,0 +1,493 @@ +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +import Metadata from './metadata.js'; +import PhoneNumber from './PhoneNumber.js'; +import AsYouTypeState from './AsYouTypeState.js'; +import AsYouTypeFormatter, { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.js'; +import AsYouTypeParser, { extractFormattedDigitsAndPlus } from './AsYouTypeParser.js'; +import getCountryByCallingCode from './helpers/getCountryByCallingCode.js'; +var USE_NON_GEOGRAPHIC_COUNTRY_CODE = false; + +var AsYouType = /*#__PURE__*/function () { + /** + * @param {(string|object)?} [optionsOrDefaultCountry] - The default country used for parsing non-international phone numbers. Can also be an `options` object. + * @param {Object} metadata + */ + function AsYouType(optionsOrDefaultCountry, metadata) { + _classCallCheck(this, AsYouType); + + this.metadata = new Metadata(metadata); + + var _this$getCountryAndCa = this.getCountryAndCallingCode(optionsOrDefaultCountry), + _this$getCountryAndCa2 = _slicedToArray(_this$getCountryAndCa, 2), + defaultCountry = _this$getCountryAndCa2[0], + defaultCallingCode = _this$getCountryAndCa2[1]; + + this.defaultCountry = defaultCountry; + this.defaultCallingCode = defaultCallingCode; + this.reset(); + } + + _createClass(AsYouType, [{ + key: "getCountryAndCallingCode", + value: function getCountryAndCallingCode(optionsOrDefaultCountry) { + // Set `defaultCountry` and `defaultCallingCode` options. + var defaultCountry; + var defaultCallingCode; // Turns out `null` also has type "object". Weird. + + if (optionsOrDefaultCountry) { + if (_typeof(optionsOrDefaultCountry) === 'object') { + defaultCountry = optionsOrDefaultCountry.defaultCountry; + defaultCallingCode = optionsOrDefaultCountry.defaultCallingCode; + } else { + defaultCountry = optionsOrDefaultCountry; + } + } + + if (defaultCountry && !this.metadata.hasCountry(defaultCountry)) { + defaultCountry = undefined; + } + + if (defaultCallingCode) { + /* istanbul ignore if */ + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + if (this.metadata.isNonGeographicCallingCode(defaultCallingCode)) { + defaultCountry = '001'; + } + } + } + + return [defaultCountry, defaultCallingCode]; + } + /** + * Inputs "next" phone number characters. + * @param {string} text + * @return {string} Formatted phone number characters that have been input so far. + */ + + }, { + key: "input", + value: function input(text) { + var _this$parser$input = this.parser.input(text, this.state), + digits = _this$parser$input.digits, + justLeadingPlus = _this$parser$input.justLeadingPlus; + + if (justLeadingPlus) { + this.formattedOutput = '+'; + } else if (digits) { + this.determineTheCountryIfNeeded(); // Match the available formats by the currently available leading digits. + + if (this.state.nationalSignificantNumber) { + this.formatter.narrowDownMatchingFormats(this.state); + } + + var formattedNationalNumber; + + if (this.metadata.hasSelectedNumberingPlan()) { + formattedNationalNumber = this.formatter.format(digits, this.state); + } + + if (formattedNationalNumber === undefined) { + // See if another national (significant) number could be re-extracted. + if (this.parser.reExtractNationalSignificantNumber(this.state)) { + this.determineTheCountryIfNeeded(); // If it could, then re-try formatting the new national (significant) number. + + var nationalDigits = this.state.getNationalDigits(); + + if (nationalDigits) { + formattedNationalNumber = this.formatter.format(nationalDigits, this.state); + } + } + } + + this.formattedOutput = formattedNationalNumber ? this.getFullNumber(formattedNationalNumber) : this.getNonFormattedNumber(); + } + + return this.formattedOutput; + } + }, { + key: "reset", + value: function reset() { + var _this = this; + + this.state = new AsYouTypeState({ + onCountryChange: function onCountryChange(country) { + // Before version `1.6.0`, the official `AsYouType` formatter API + // included the `.country` property of an `AsYouType` instance. + // Since that property (along with the others) have been moved to + // `this.state`, `this.country` property is emulated for compatibility + // with the old versions. + _this.country = country; + }, + onCallingCodeChange: function onCallingCodeChange(callingCode, country) { + _this.metadata.selectNumberingPlan(country, callingCode); + + _this.formatter.reset(_this.metadata.numberingPlan, _this.state); + + _this.parser.reset(_this.metadata.numberingPlan); + } + }); + this.formatter = new AsYouTypeFormatter({ + state: this.state, + metadata: this.metadata + }); + this.parser = new AsYouTypeParser({ + defaultCountry: this.defaultCountry, + defaultCallingCode: this.defaultCallingCode, + metadata: this.metadata, + state: this.state, + onNationalSignificantNumberChange: function onNationalSignificantNumberChange() { + _this.determineTheCountryIfNeeded(); + + _this.formatter.reset(_this.metadata.numberingPlan, _this.state); + } + }); + this.state.reset(this.defaultCountry, this.defaultCallingCode); + this.formattedOutput = ''; + return this; + } + /** + * Returns `true` if the phone number is being input in international format. + * In other words, returns `true` if and only if the parsed phone number starts with a `"+"`. + * @return {boolean} + */ + + }, { + key: "isInternational", + value: function isInternational() { + return this.state.international; + } + /** + * Returns the "calling code" part of the phone number when it's being input + * in an international format. + * If no valid calling code has been entered so far, returns `undefined`. + * @return {string} [callingCode] + */ + + }, { + key: "getCallingCode", + value: function getCallingCode() { + // If the number is being input in national format and some "default calling code" + // has been passed to `AsYouType` constructor, then `this.state.callingCode` + // is equal to that "default calling code". + // + // If the number is being input in national format and no "default calling code" + // has been passed to `AsYouType` constructor, then returns `undefined`, + // even if a "default country" has been passed to `AsYouType` constructor. + // + if (this.isInternational()) { + return this.state.callingCode; + } + } // A legacy alias. + + }, { + key: "getCountryCallingCode", + value: function getCountryCallingCode() { + return this.getCallingCode(); + } + /** + * Returns a two-letter country code of the phone number. + * Returns `undefined` for "non-geographic" phone numbering plans. + * Returns `undefined` if no phone number has been input yet. + * @return {string} [country] + */ + + }, { + key: "getCountry", + value: function getCountry() { + var digits = this.state.digits; // Return `undefined` if no digits have been input yet. + + if (digits) { + return this._getCountry(); + } + } + /** + * Returns a two-letter country code of the phone number. + * Returns `undefined` for "non-geographic" phone numbering plans. + * @return {string} [country] + */ + + }, { + key: "_getCountry", + value: function _getCountry() { + var country = this.state.country; + /* istanbul ignore if */ + + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + // `AsYouType.getCountry()` returns `undefined` + // for "non-geographic" phone numbering plans. + if (country === '001') { + return; + } + } + + return country; + } + }, { + key: "determineTheCountryIfNeeded", + value: function determineTheCountryIfNeeded() { + // Suppose a user enters a phone number in international format, + // and there're several countries corresponding to that country calling code, + // and a country has been derived from the number, and then + // a user enters one more digit and the number is no longer + // valid for the derived country, so the country should be re-derived + // on every new digit in those cases. + // + // If the phone number is being input in national format, + // then it could be a case when `defaultCountry` wasn't specified + // when creating `AsYouType` instance, and just `defaultCallingCode` was specified, + // and that "calling code" could correspond to a "non-geographic entity", + // or there could be several countries corresponding to that country calling code. + // In those cases, `this.country` is `undefined` and should be derived + // from the number. Again, if country calling code is ambiguous, then + // `this.country` should be re-derived with each new digit. + // + if (!this.state.country || this.isCountryCallingCodeAmbiguous()) { + this.determineTheCountry(); + } + } // Prepends `+CountryCode ` in case of an international phone number + + }, { + key: "getFullNumber", + value: function getFullNumber(formattedNationalNumber) { + var _this2 = this; + + if (this.isInternational()) { + var prefix = function prefix(text) { + return _this2.formatter.getInternationalPrefixBeforeCountryCallingCode(_this2.state, { + spacing: text ? true : false + }) + text; + }; + + var callingCode = this.state.callingCode; + + if (!callingCode) { + return prefix("".concat(this.state.getDigitsWithoutInternationalPrefix())); + } + + if (!formattedNationalNumber) { + return prefix(callingCode); + } + + return prefix("".concat(callingCode, " ").concat(formattedNationalNumber)); + } + + return formattedNationalNumber; + } + }, { + key: "getNonFormattedNationalNumberWithPrefix", + value: function getNonFormattedNationalNumberWithPrefix() { + var _this$state = this.state, + nationalSignificantNumber = _this$state.nationalSignificantNumber, + complexPrefixBeforeNationalSignificantNumber = _this$state.complexPrefixBeforeNationalSignificantNumber, + nationalPrefix = _this$state.nationalPrefix; + var number = nationalSignificantNumber; + var prefix = complexPrefixBeforeNationalSignificantNumber || nationalPrefix; + + if (prefix) { + number = prefix + number; + } + + return number; + } + }, { + key: "getNonFormattedNumber", + value: function getNonFormattedNumber() { + var nationalSignificantNumberMatchesInput = this.state.nationalSignificantNumberMatchesInput; + return this.getFullNumber(nationalSignificantNumberMatchesInput ? this.getNonFormattedNationalNumberWithPrefix() : this.state.getNationalDigits()); + } + }, { + key: "getNonFormattedTemplate", + value: function getNonFormattedTemplate() { + var number = this.getNonFormattedNumber(); + + if (number) { + return number.replace(/[\+\d]/g, DIGIT_PLACEHOLDER); + } + } + }, { + key: "isCountryCallingCodeAmbiguous", + value: function isCountryCallingCodeAmbiguous() { + var callingCode = this.state.callingCode; + var countryCodes = this.metadata.getCountryCodesForCallingCode(callingCode); + return countryCodes && countryCodes.length > 1; + } // Determines the country of the phone number + // entered so far based on the country phone code + // and the national phone number. + + }, { + key: "determineTheCountry", + value: function determineTheCountry() { + this.state.setCountry(getCountryByCallingCode(this.isInternational() ? this.state.callingCode : this.defaultCallingCode, this.state.nationalSignificantNumber, this.metadata)); + } + /** + * Returns a E.164 phone number value for the user's input. + * + * For example, for country `"US"` and input `"(222) 333-4444"` + * it will return `"+12223334444"`. + * + * For international phone number input, it will also auto-correct + * some minor errors such as using a national prefix when writing + * an international phone number. For example, if the user inputs + * `"+44 0 7400 000000"` then it will return an auto-corrected + * `"+447400000000"` phone number value. + * + * Will return `undefined` if no digits have been input, + * or when inputting a phone number in national format and no + * default country or default "country calling code" have been set. + * + * @return {string} [value] + */ + + }, { + key: "getNumberValue", + value: function getNumberValue() { + var _this$state2 = this.state, + digits = _this$state2.digits, + callingCode = _this$state2.callingCode, + country = _this$state2.country, + nationalSignificantNumber = _this$state2.nationalSignificantNumber; // Will return `undefined` if no digits have been input. + + if (!digits) { + return; + } + + if (this.isInternational()) { + if (callingCode) { + return '+' + callingCode + nationalSignificantNumber; + } else { + return '+' + digits; + } + } else { + if (country || callingCode) { + var callingCode_ = country ? this.metadata.countryCallingCode() : callingCode; + return '+' + callingCode_ + nationalSignificantNumber; + } + } + } + /** + * Returns an instance of `PhoneNumber` class. + * Will return `undefined` if no national (significant) number + * digits have been entered so far, or if no `defaultCountry` has been + * set and the user enters a phone number not in international format. + */ + + }, { + key: "getNumber", + value: function getNumber() { + var _this$state3 = this.state, + nationalSignificantNumber = _this$state3.nationalSignificantNumber, + carrierCode = _this$state3.carrierCode, + callingCode = _this$state3.callingCode; // `this._getCountry()` is basically same as `this.state.country` + // with the only change that it return `undefined` in case of a + // "non-geographic" numbering plan instead of `"001"` "internal use" value. + + var country = this._getCountry(); + + if (!nationalSignificantNumber) { + return; + } + + if (!country && !callingCode) { + return; + } + + var phoneNumber = new PhoneNumber(country || callingCode, nationalSignificantNumber, this.metadata.metadata); + + if (carrierCode) { + phoneNumber.carrierCode = carrierCode; + } // Phone number extensions are not supported by "As You Type" formatter. + + + return phoneNumber; + } + /** + * Returns `true` if the phone number is "possible". + * Is just a shortcut for `PhoneNumber.isPossible()`. + * @return {boolean} + */ + + }, { + key: "isPossible", + value: function isPossible() { + var phoneNumber = this.getNumber(); + + if (!phoneNumber) { + return false; + } + + return phoneNumber.isPossible(); + } + /** + * Returns `true` if the phone number is "valid". + * Is just a shortcut for `PhoneNumber.isValid()`. + * @return {boolean} + */ + + }, { + key: "isValid", + value: function isValid() { + var phoneNumber = this.getNumber(); + + if (!phoneNumber) { + return false; + } + + return phoneNumber.isValid(); + } + /** + * @deprecated + * This method is used in `react-phone-number-input/source/input-control.js` + * in versions before `3.0.16`. + */ + + }, { + key: "getNationalNumber", + value: function getNationalNumber() { + return this.state.nationalSignificantNumber; + } + /** + * Returns the phone number characters entered by the user. + * @return {string} + */ + + }, { + key: "getChars", + value: function getChars() { + return (this.state.international ? '+' : '') + this.state.digits; + } + /** + * Returns the template for the formatted phone number. + * @return {string} + */ + + }, { + key: "getTemplate", + value: function getTemplate() { + return this.formatter.getTemplate(this.state) || this.getNonFormattedTemplate() || ''; + } + }]); + + return AsYouType; +}(); + +export { AsYouType as default }; +//# sourceMappingURL=AsYouType.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouType.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouType.js.map new file mode 100644 index 00000000..9dcd6f87 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouType.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsYouType.js","names":["Metadata","PhoneNumber","AsYouTypeState","AsYouTypeFormatter","DIGIT_PLACEHOLDER","AsYouTypeParser","extractFormattedDigitsAndPlus","getCountryByCallingCode","USE_NON_GEOGRAPHIC_COUNTRY_CODE","AsYouType","optionsOrDefaultCountry","metadata","getCountryAndCallingCode","defaultCountry","defaultCallingCode","reset","hasCountry","undefined","isNonGeographicCallingCode","text","parser","input","state","digits","justLeadingPlus","formattedOutput","determineTheCountryIfNeeded","nationalSignificantNumber","formatter","narrowDownMatchingFormats","formattedNationalNumber","hasSelectedNumberingPlan","format","reExtractNationalSignificantNumber","nationalDigits","getNationalDigits","getFullNumber","getNonFormattedNumber","onCountryChange","country","onCallingCodeChange","callingCode","selectNumberingPlan","numberingPlan","onNationalSignificantNumberChange","international","isInternational","getCallingCode","_getCountry","isCountryCallingCodeAmbiguous","determineTheCountry","prefix","getInternationalPrefixBeforeCountryCallingCode","spacing","getDigitsWithoutInternationalPrefix","complexPrefixBeforeNationalSignificantNumber","nationalPrefix","number","nationalSignificantNumberMatchesInput","getNonFormattedNationalNumberWithPrefix","replace","countryCodes","getCountryCodesForCallingCode","length","setCountry","callingCode_","countryCallingCode","carrierCode","phoneNumber","getNumber","isPossible","isValid","getTemplate","getNonFormattedTemplate"],"sources":["../source/AsYouType.js"],"sourcesContent":["import Metadata from './metadata.js'\r\nimport PhoneNumber from './PhoneNumber.js'\r\nimport AsYouTypeState from './AsYouTypeState.js'\r\nimport AsYouTypeFormatter, { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.js'\r\nimport AsYouTypeParser, { extractFormattedDigitsAndPlus } from './AsYouTypeParser.js'\r\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js'\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\nexport default class AsYouType {\r\n\t/**\r\n\t * @param {(string|object)?} [optionsOrDefaultCountry] - The default country used for parsing non-international phone numbers. Can also be an `options` object.\r\n\t * @param {Object} metadata\r\n\t */\r\n\tconstructor(optionsOrDefaultCountry, metadata) {\r\n\t\tthis.metadata = new Metadata(metadata)\r\n\t\tconst [defaultCountry, defaultCallingCode] = this.getCountryAndCallingCode(optionsOrDefaultCountry)\r\n\t\tthis.defaultCountry = defaultCountry\r\n\t\tthis.defaultCallingCode = defaultCallingCode\r\n\t\tthis.reset()\r\n\t}\r\n\r\n\tgetCountryAndCallingCode(optionsOrDefaultCountry) {\r\n\t\t// Set `defaultCountry` and `defaultCallingCode` options.\r\n\t\tlet defaultCountry\r\n\t\tlet defaultCallingCode\r\n\t\t// Turns out `null` also has type \"object\". Weird.\r\n\t\tif (optionsOrDefaultCountry) {\r\n\t\t\tif (typeof optionsOrDefaultCountry === 'object') {\r\n\t\t\t\tdefaultCountry = optionsOrDefaultCountry.defaultCountry\r\n\t\t\t\tdefaultCallingCode = optionsOrDefaultCountry.defaultCallingCode\r\n\t\t\t} else {\r\n\t\t\t\tdefaultCountry = optionsOrDefaultCountry\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (defaultCountry && !this.metadata.hasCountry(defaultCountry)) {\r\n\t\t\tdefaultCountry = undefined\r\n\t\t}\r\n\t\tif (defaultCallingCode) {\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\t\tif (this.metadata.isNonGeographicCallingCode(defaultCallingCode)) {\r\n\t\t\t\t\tdefaultCountry = '001'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn [defaultCountry, defaultCallingCode]\r\n\t}\r\n\r\n\t/**\r\n\t * Inputs \"next\" phone number characters.\r\n\t * @param {string} text\r\n\t * @return {string} Formatted phone number characters that have been input so far.\r\n\t */\r\n\tinput(text) {\r\n\t\tconst {\r\n\t\t\tdigits,\r\n\t\t\tjustLeadingPlus\r\n\t\t} = this.parser.input(text, this.state)\r\n\t\tif (justLeadingPlus) {\r\n\t\t\tthis.formattedOutput = '+'\r\n\t\t} else if (digits) {\r\n\t\t\tthis.determineTheCountryIfNeeded()\r\n\t\t\t// Match the available formats by the currently available leading digits.\r\n\t\t\tif (this.state.nationalSignificantNumber) {\r\n\t\t\t\tthis.formatter.narrowDownMatchingFormats(this.state)\r\n\t\t\t}\r\n\t\t\tlet formattedNationalNumber\r\n\t\t\tif (this.metadata.hasSelectedNumberingPlan()) {\r\n\t\t\t\tformattedNationalNumber = this.formatter.format(digits, this.state)\r\n\t\t\t}\r\n\t\t\tif (formattedNationalNumber === undefined) {\r\n\t\t\t\t// See if another national (significant) number could be re-extracted.\r\n\t\t\t\tif (this.parser.reExtractNationalSignificantNumber(this.state)) {\r\n\t\t\t\t\tthis.determineTheCountryIfNeeded()\r\n\t\t\t\t\t// If it could, then re-try formatting the new national (significant) number.\r\n\t\t\t\t\tconst nationalDigits = this.state.getNationalDigits()\r\n\t\t\t\t\tif (nationalDigits) {\r\n\t\t\t\t\t\tformattedNationalNumber = this.formatter.format(nationalDigits, this.state)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.formattedOutput = formattedNationalNumber\r\n\t\t\t\t? this.getFullNumber(formattedNationalNumber)\r\n\t\t\t\t: this.getNonFormattedNumber()\r\n\t\t}\r\n\t\treturn this.formattedOutput\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis.state = new AsYouTypeState({\r\n\t\t\tonCountryChange: (country) => {\r\n\t\t\t\t// Before version `1.6.0`, the official `AsYouType` formatter API\r\n\t\t\t\t// included the `.country` property of an `AsYouType` instance.\r\n\t\t\t\t// Since that property (along with the others) have been moved to\r\n\t\t\t\t// `this.state`, `this.country` property is emulated for compatibility\r\n\t\t\t\t// with the old versions.\r\n\t\t\t\tthis.country = country\r\n\t\t\t},\r\n\t\t\tonCallingCodeChange: (callingCode, country) => {\r\n\t\t\t\tthis.metadata.selectNumberingPlan(country, callingCode)\r\n\t\t\t\tthis.formatter.reset(this.metadata.numberingPlan, this.state)\r\n\t\t\t\tthis.parser.reset(this.metadata.numberingPlan)\r\n\t\t\t}\r\n\t\t})\r\n\t\tthis.formatter = new AsYouTypeFormatter({\r\n\t\t\tstate: this.state,\r\n\t\t\tmetadata: this.metadata\r\n\t\t})\r\n\t\tthis.parser = new AsYouTypeParser({\r\n\t\t\tdefaultCountry: this.defaultCountry,\r\n\t\t\tdefaultCallingCode: this.defaultCallingCode,\r\n\t\t\tmetadata: this.metadata,\r\n\t\t\tstate: this.state,\r\n\t\t\tonNationalSignificantNumberChange: () => {\r\n\t\t\t\tthis.determineTheCountryIfNeeded()\r\n\t\t\t\tthis.formatter.reset(this.metadata.numberingPlan, this.state)\r\n\t\t\t}\r\n\t\t})\r\n\t\tthis.state.reset(this.defaultCountry, this.defaultCallingCode)\r\n\t\tthis.formattedOutput = ''\r\n\t\treturn this\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if the phone number is being input in international format.\r\n\t * In other words, returns `true` if and only if the parsed phone number starts with a `\"+\"`.\r\n\t * @return {boolean}\r\n\t */\r\n\tisInternational() {\r\n\t\treturn this.state.international\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the \"calling code\" part of the phone number when it's being input\r\n\t * in an international format.\r\n\t * If no valid calling code has been entered so far, returns `undefined`.\r\n\t * @return {string} [callingCode]\r\n\t */\r\n\tgetCallingCode() {\r\n\t\t // If the number is being input in national format and some \"default calling code\"\r\n\t\t // has been passed to `AsYouType` constructor, then `this.state.callingCode`\r\n\t\t // is equal to that \"default calling code\".\r\n\t\t //\r\n\t\t // If the number is being input in national format and no \"default calling code\"\r\n\t\t // has been passed to `AsYouType` constructor, then returns `undefined`,\r\n\t\t // even if a \"default country\" has been passed to `AsYouType` constructor.\r\n\t\t //\r\n\t\tif (this.isInternational()) {\r\n\t\t\treturn this.state.callingCode\r\n\t\t}\r\n\t}\r\n\r\n\t// A legacy alias.\r\n\tgetCountryCallingCode() {\r\n\t\treturn this.getCallingCode()\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a two-letter country code of the phone number.\r\n\t * Returns `undefined` for \"non-geographic\" phone numbering plans.\r\n\t * Returns `undefined` if no phone number has been input yet.\r\n\t * @return {string} [country]\r\n\t */\r\n\tgetCountry() {\r\n\t\tconst { digits } = this.state\r\n\t\t// Return `undefined` if no digits have been input yet.\r\n\t\tif (digits) {\r\n\t\t\treturn this._getCountry()\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a two-letter country code of the phone number.\r\n\t * Returns `undefined` for \"non-geographic\" phone numbering plans.\r\n\t * @return {string} [country]\r\n\t */\r\n\t_getCountry() {\r\n\t\tconst { country } = this.state\r\n\t\t/* istanbul ignore if */\r\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\t// `AsYouType.getCountry()` returns `undefined`\r\n\t\t\t// for \"non-geographic\" phone numbering plans.\r\n\t\t\tif (country === '001') {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn country\r\n\t}\r\n\r\n\tdetermineTheCountryIfNeeded() {\r\n\t\t// Suppose a user enters a phone number in international format,\r\n\t\t// and there're several countries corresponding to that country calling code,\r\n\t\t// and a country has been derived from the number, and then\r\n\t\t// a user enters one more digit and the number is no longer\r\n\t\t// valid for the derived country, so the country should be re-derived\r\n\t\t// on every new digit in those cases.\r\n\t\t//\r\n\t\t// If the phone number is being input in national format,\r\n\t\t// then it could be a case when `defaultCountry` wasn't specified\r\n\t\t// when creating `AsYouType` instance, and just `defaultCallingCode` was specified,\r\n\t\t// and that \"calling code\" could correspond to a \"non-geographic entity\",\r\n\t\t// or there could be several countries corresponding to that country calling code.\r\n\t\t// In those cases, `this.country` is `undefined` and should be derived\r\n\t\t// from the number. Again, if country calling code is ambiguous, then\r\n\t\t// `this.country` should be re-derived with each new digit.\r\n\t\t//\r\n\t\tif (!this.state.country || this.isCountryCallingCodeAmbiguous()) {\r\n\t\t\tthis.determineTheCountry()\r\n\t\t}\r\n\t}\r\n\r\n\t// Prepends `+CountryCode ` in case of an international phone number\r\n\tgetFullNumber(formattedNationalNumber) {\r\n\t\tif (this.isInternational()) {\r\n\t\t\tconst prefix = (text) => this.formatter.getInternationalPrefixBeforeCountryCallingCode(this.state, {\r\n\t\t\t\tspacing: text ? true : false\r\n\t\t\t}) + text\r\n\t\t\tconst { callingCode } = this.state\r\n\t\t\tif (!callingCode) {\r\n\t\t\t\treturn prefix(`${this.state.getDigitsWithoutInternationalPrefix()}`)\r\n\t\t\t}\r\n\t\t\tif (!formattedNationalNumber) {\r\n\t\t\t\treturn prefix(callingCode)\r\n\t\t\t}\r\n\t\t\treturn prefix(`${callingCode} ${formattedNationalNumber}`)\r\n\t\t}\r\n\t\treturn formattedNationalNumber\r\n\t}\r\n\r\n\tgetNonFormattedNationalNumberWithPrefix() {\r\n\t\tconst {\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tcomplexPrefixBeforeNationalSignificantNumber,\r\n\t\t\tnationalPrefix\r\n\t\t} = this.state\r\n\t\tlet number = nationalSignificantNumber\r\n\t\tconst prefix = complexPrefixBeforeNationalSignificantNumber || nationalPrefix\r\n\t\tif (prefix) {\r\n\t\t\tnumber = prefix + number\r\n\t\t}\r\n\t\treturn number\r\n\t}\r\n\r\n\tgetNonFormattedNumber() {\r\n\t\tconst { nationalSignificantNumberMatchesInput } = this.state\r\n\t\treturn this.getFullNumber(\r\n\t\t\tnationalSignificantNumberMatchesInput\r\n\t\t\t\t? this.getNonFormattedNationalNumberWithPrefix()\r\n\t\t\t\t: this.state.getNationalDigits()\r\n\t\t)\r\n\t}\r\n\r\n\tgetNonFormattedTemplate() {\r\n\t\tconst number = this.getNonFormattedNumber()\r\n\t\tif (number) {\r\n\t\t\treturn number.replace(/[\\+\\d]/g, DIGIT_PLACEHOLDER)\r\n\t\t}\r\n\t}\r\n\r\n\tisCountryCallingCodeAmbiguous() {\r\n\t\tconst { callingCode } = this.state\r\n\t\tconst countryCodes = this.metadata.getCountryCodesForCallingCode(callingCode)\r\n\t\treturn countryCodes && countryCodes.length > 1\r\n\t}\r\n\r\n\t// Determines the country of the phone number\r\n\t// entered so far based on the country phone code\r\n\t// and the national phone number.\r\n\tdetermineTheCountry() {\r\n\t\tthis.state.setCountry(getCountryByCallingCode(\r\n\t\t\tthis.isInternational() ? this.state.callingCode : this.defaultCallingCode,\r\n\t\t\tthis.state.nationalSignificantNumber,\r\n\t\t\tthis.metadata\r\n\t\t))\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a E.164 phone number value for the user's input.\r\n\t *\r\n\t * For example, for country `\"US\"` and input `\"(222) 333-4444\"`\r\n\t * it will return `\"+12223334444\"`.\r\n\t *\r\n\t * For international phone number input, it will also auto-correct\r\n\t * some minor errors such as using a national prefix when writing\r\n\t * an international phone number. For example, if the user inputs\r\n\t * `\"+44 0 7400 000000\"` then it will return an auto-corrected\r\n\t * `\"+447400000000\"` phone number value.\r\n\t *\r\n\t * Will return `undefined` if no digits have been input,\r\n\t * or when inputting a phone number in national format and no\r\n\t * default country or default \"country calling code\" have been set.\r\n\t *\r\n\t * @return {string} [value]\r\n\t */\r\n\tgetNumberValue() {\r\n\t\tconst {\r\n\t\t\tdigits,\r\n\t\t\tcallingCode,\r\n\t\t\tcountry,\r\n\t\t\tnationalSignificantNumber\r\n\t\t} = this.state\r\n\r\n\t \t// Will return `undefined` if no digits have been input.\r\n\t\tif (!digits) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif (this.isInternational()) {\r\n\t\t\tif (callingCode) {\r\n\t\t\t\treturn '+' + callingCode + nationalSignificantNumber\r\n\t\t\t} else {\r\n\t\t\t\treturn '+' + digits\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (country || callingCode) {\r\n\t\t\t\tconst callingCode_ = country ? this.metadata.countryCallingCode() : callingCode\r\n\t\t\t\treturn '+' + callingCode_ + nationalSignificantNumber\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an instance of `PhoneNumber` class.\r\n\t * Will return `undefined` if no national (significant) number\r\n\t * digits have been entered so far, or if no `defaultCountry` has been\r\n\t * set and the user enters a phone number not in international format.\r\n\t */\r\n\tgetNumber() {\r\n\t\tconst {\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tcarrierCode,\r\n\t\t\tcallingCode\r\n\t\t} = this.state\r\n\r\n\t\t// `this._getCountry()` is basically same as `this.state.country`\r\n\t\t// with the only change that it return `undefined` in case of a\r\n\t\t// \"non-geographic\" numbering plan instead of `\"001\"` \"internal use\" value.\r\n\t\tconst country = this._getCountry()\r\n\r\n\t\tif (!nationalSignificantNumber) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif (!country && !callingCode) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tconst phoneNumber = new PhoneNumber(\r\n\t\t\tcountry || callingCode,\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tthis.metadata.metadata\r\n\t\t)\r\n\t\tif (carrierCode) {\r\n\t\t\tphoneNumber.carrierCode = carrierCode\r\n\t\t}\r\n\t\t// Phone number extensions are not supported by \"As You Type\" formatter.\r\n\t\treturn phoneNumber\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if the phone number is \"possible\".\r\n\t * Is just a shortcut for `PhoneNumber.isPossible()`.\r\n\t * @return {boolean}\r\n\t */\r\n\tisPossible() {\r\n\t\tconst phoneNumber = this.getNumber()\r\n\t\tif (!phoneNumber) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn phoneNumber.isPossible()\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if the phone number is \"valid\".\r\n\t * Is just a shortcut for `PhoneNumber.isValid()`.\r\n\t * @return {boolean}\r\n\t */\r\n\tisValid() {\r\n\t\tconst phoneNumber = this.getNumber()\r\n\t\tif (!phoneNumber) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn phoneNumber.isValid()\r\n\t}\r\n\r\n\t/**\r\n\t * @deprecated\r\n\t * This method is used in `react-phone-number-input/source/input-control.js`\r\n\t * in versions before `3.0.16`.\r\n\t */\r\n\tgetNationalNumber() {\r\n\t\treturn this.state.nationalSignificantNumber\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the phone number characters entered by the user.\r\n\t * @return {string}\r\n\t */\r\n\tgetChars() {\r\n\t\treturn (this.state.international ? '+' : '') + this.state.digits\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the template for the formatted phone number.\r\n\t * @return {string}\r\n\t */\r\n\tgetTemplate() {\r\n\t\treturn this.formatter.getTemplate(this.state) || this.getNonFormattedTemplate() || ''\r\n\t}\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouType.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouType.test.js new file mode 100644 index 00000000..9323dbbf --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouType.test.js @@ -0,0 +1,1248 @@ +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +import metadata from '../metadata.min.json' assert { type: 'json' }; +import AsYouType_ from './AsYouType.js'; + +var AsYouType = /*#__PURE__*/function (_AsYouType_) { + _inherits(AsYouType, _AsYouType_); + + var _super = _createSuper(AsYouType); + + function AsYouType(country_code) { + _classCallCheck(this, AsYouType); + + return _super.call(this, country_code, metadata); + } + + return _createClass(AsYouType); +}(AsYouType_); + +var USE_NON_GEOGRAPHIC_COUNTRY_CODE = false; +describe('AsYouType', function () { + it('should use "national_prefix_formatting_rule"', function () { + // With national prefix (full). + new AsYouType('RU').input('88005553535').should.equal('8 (800) 555-35-35'); // With national prefix (partial). + + new AsYouType('RU').input('880055535').should.equal('8 (800) 555-35'); + }); + it('should populate national number template (digit by digit)', function () { + var formatter = new AsYouType('US'); + formatter.input('1'); // formatter.formatter.template.should.equal('x (xxx) xxx-xxxx') + + formatter.formatter.template.should.equal('x xxx-xxxx'); // formatter.formatter.populatedNationalNumberTemplate.should.equal('1 (xxx) xxx-xxxx') + + formatter.formatter.populatedNationalNumberTemplate.should.equal('1 xxx-xxxx'); + formatter.input('213'); + formatter.formatter.populatedNationalNumberTemplate.should.equal('1 (213) xxx-xxxx'); + formatter.input('3734253'); + formatter.formatter.populatedNationalNumberTemplate.should.equal('1 (213) 373-4253'); + }); + it('should populate international number template (digit by digit) (default country)', function () { + var formatter = new AsYouType('US'); + expect(formatter.formatter.template).to.be.undefined; + expect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined; + formatter.input('').should.equal(''); + expect(formatter.formatter.template).to.be.undefined; + expect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined; + formatter.input('+').should.equal('+'); + formatter.getTemplate().should.equal('x'); + expect(formatter.formatter.template).to.be.undefined; + expect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined; + formatter.input('1').should.equal('+1'); + formatter.getTemplate().should.equal('xx'); // Hasn't started formatting the phone number using the template yet. + // formatter.formatter.template.should.equal('xx xxx xxx xxxx') + + formatter.formatter.template.should.equal('xx xxx xxxx'); // formatter.formatter.populatedNationalNumberTemplate.should.equal('xxx xxx xxxx') + + formatter.formatter.populatedNationalNumberTemplate.should.equal('xxx xxxx'); // Has some national number digits, starts formatting the phone number using the template. + + formatter.input('213'); + formatter.formatter.populatedNationalNumberTemplate.should.equal('213 xxx xxxx'); + formatter.input('3734253'); + formatter.formatter.populatedNationalNumberTemplate.should.equal('213 373 4253'); + }); + it('should populate international number template (digit by digit)', function () { + var formatter = new AsYouType(); + expect(formatter.formatter.template).to.be.undefined; + expect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined; + formatter.input('').should.equal(''); + expect(formatter.formatter.template).to.be.undefined; + expect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined; + formatter.input('+').should.equal('+'); + expect(formatter.formatter.template).to.be.undefined; + expect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined; + formatter.input('1').should.equal('+1'); // formatter.formatter.template.should.equal('xx xxx xxx xxxx') + + formatter.formatter.template.should.equal('xx xxx xxxx'); // Hasn't yet started formatting the phone number using the template. + // formatter.formatter.populatedNationalNumberTemplate.should.equal('xxx xxx xxxx') + + formatter.formatter.populatedNationalNumberTemplate.should.equal('xxx xxxx'); // Has some national number digits, starts formatting the phone number using the template. + + formatter.input('213'); + formatter.formatter.populatedNationalNumberTemplate.should.equal('213 xxx xxxx'); + formatter.input('3734253'); + formatter.formatter.populatedNationalNumberTemplate.should.equal('213 373 4253'); + }); + it('should populate national number template (attempt to format complete number)', function () { + var formatter = new AsYouType('US'); + formatter.input('12133734253').should.equal('1 (213) 373-4253'); + formatter.formatter.template.should.equal('x (xxx) xxx-xxxx'); + formatter.formatter.populatedNationalNumberTemplate.should.equal('1 (213) 373-4253'); + }); + it('should parse and format phone numbers as you type', function () { + // International number test + new AsYouType().input('+12133734').should.equal('+1 213 373 4'); // Local number test + + new AsYouType('US').input('2133734').should.equal('(213) 373-4'); // US national number retains national prefix. + + new AsYouType('US').input('12133734').should.equal('1 (213) 373-4'); // US national number retains national prefix (full number). + + new AsYouType('US').input('12133734253').should.equal('1 (213) 373-4253'); + var formatter; // // Should discard national prefix from a "complete" phone number. + // new AsYouType('RU').input('8800555353').should.equal('880 055-53-53') + // Shouldn't extract national prefix when inputting in international format. + + new AsYouType('RU').input('+7800555353').should.equal('+7 800 555 35 3'); + new AsYouType('CH').input('044-668-1').should.equal('044 668 1'); // Test International phone number (international) + + formatter = new AsYouType(); // formatter.valid.should.be.false + + type(formatter.getCountry()).should.equal('undefined'); + type(formatter.getCountryCallingCode()).should.equal('undefined'); + formatter.getTemplate().should.equal(''); + formatter.input('+').should.equal('+'); // formatter.valid.should.be.false + + type(formatter.getCountry()).should.equal('undefined'); + type(formatter.getCountryCallingCode()).should.equal('undefined'); + formatter.getTemplate().should.equal('x'); + formatter.input('1').should.equal('+1'); // formatter.valid.should.be.false + + type(formatter.getCountry()).should.equal('undefined'); + formatter.getCountryCallingCode().should.equal('1'); + formatter.getTemplate().should.equal('xx'); + formatter.input('2').should.equal('+1 2'); + formatter.getTemplate().should.equal('xx x'); // formatter.valid.should.be.false + + type(formatter.getCountry()).should.equal('undefined'); + formatter.input('1').should.equal('+1 21'); + formatter.input('3').should.equal('+1 213'); + formatter.input(' ').should.equal('+1 213'); + formatter.input('3').should.equal('+1 213 3'); + formatter.input('3').should.equal('+1 213 33'); + formatter.input('3').should.equal('+1 213 333'); + formatter.input('4').should.equal('+1 213 333 4'); + formatter.input('4').should.equal('+1 213 333 44'); + formatter.input('4').should.equal('+1 213 333 444'); // formatter.valid.should.be.false + + type(formatter.getCountry()).should.equal('undefined'); + formatter.input('4').should.equal('+1 213 333 4444'); // formatter.valid.should.be.true + + formatter.getCountry().should.equal('US'); // This one below contains "punctuation spaces" + // along with the regular spaces + + formatter.getTemplate().should.equal('xx xxx xxx xxxx'); + formatter.input('5').should.equal('+1 21333344445'); // formatter.valid.should.be.false + + expect(formatter.getCountry()).to.be.undefined; + formatter.getCountryCallingCode().should.equal('1'); + expect(formatter.formatter.template).to.be.undefined; // Check that clearing an international formatter + // also clears country metadata. + + formatter.reset(); + formatter.input('+').should.equal('+'); + formatter.input('7').should.equal('+7'); + formatter.input('9').should.equal('+7 9'); + formatter.input('99 111 22 33').should.equal('+7 999 111 22 33'); // Test Switzerland phone numbers + + formatter = new AsYouType('CH'); + formatter.input(' ').should.equal(''); + formatter.input('0').should.equal('0'); + formatter.input('4').should.equal('04'); + formatter.input(' ').should.equal('04'); + formatter.input('-').should.equal('04'); + formatter.input('4').should.equal('044'); + formatter.input('-').should.equal('044'); + formatter.input('6').should.equal('044 6'); + formatter.input('6').should.equal('044 66'); + formatter.input('8').should.equal('044 668'); + formatter.input('-').should.equal('044 668'); + formatter.input('1').should.equal('044 668 1'); + formatter.input('8').should.equal('044 668 18'); // formatter.valid.should.be.false + + formatter.getCountry().should.equal('CH'); + formatter.formatter.template.should.equal('xxx xxx xx xx'); + formatter.getTemplate().should.equal('xxx xxx xx'); + formatter.input(' 00').should.equal('044 668 18 00'); // formatter.valid.should.be.true + + formatter.getCountry().should.equal('CH'); + formatter.getTemplate().should.equal('xxx xxx xx xx'); + formatter.input('9').should.equal('04466818009'); // formatter.valid.should.be.false + + formatter.getCountry().should.equal('CH'); + expect(formatter.formatter.template).to.be.undefined; // Kazakhstan (non-main country for +7 country phone code) + + formatter = new AsYouType(); + formatter.input('+77172580659'); + formatter.getCountry().should.equal('KZ'); // Brazil + + formatter = new AsYouType('BR'); + formatter.input('11987654321').should.equal('(11) 98765-4321'); // UK (Jersey) (non-main country for +44 country phone code) + + formatter = new AsYouType(); + formatter.input('+447700300000').should.equal('+44 7700 300000'); + formatter.getTemplate().should.equal('xxx xxxx xxxxxx'); + formatter.getCountry().should.equal('JE'); // Braces must be part of the template. + + formatter = new AsYouType('RU'); + formatter.input('88005553535').should.equal('8 (800) 555-35-35'); + formatter.getTemplate().should.equal('x (xxx) xxx-xx-xx'); // Test Russian phone numbers + // (with optional national prefix `8`) + + formatter = new AsYouType('RU'); + formatter.input('8').should.equal('8'); + formatter.input('9').should.equal('8 9'); + formatter.input('9').should.equal('8 99'); + formatter.input('9').should.equal('8 (999)'); + formatter.input('-').should.equal('8 (999)'); + formatter.input('1234').should.equal('8 (999) 123-4'); + formatter.input('567').should.equal('8 (999) 123-45-67'); + formatter.input('8').should.equal('899912345678'); // Shouldn't strip national prefix if it is optional + // and if it's a valid phone number (international). + + formatter = new AsYouType('RU'); // formatter.input('8005553535').should.equal('(800) 555-35-35') + + formatter.input('+78005553535').should.equal('+7 800 555 35 35'); + formatter.getNationalNumber().should.equal('8005553535'); // Check that clearing an national formatter: + // * doesn't clear country metadata + // * clears all other things + + formatter.reset(); + formatter.input('8').should.equal('8'); + formatter.input('9').should.equal('8 9'); + formatter.input('9').should.equal('8 99'); + formatter.input('9').should.equal('8 (999)'); + formatter.input('-').should.equal('8 (999)'); + formatter.input('1234').should.equal('8 (999) 123-4'); + formatter.input('567').should.equal('8 (999) 123-45-67'); + formatter.input('8').should.equal('899912345678'); // National prefix should not be prepended + // when formatting local NANPA phone numbers. + + new AsYouType('US').input('1').should.equal('1'); + new AsYouType('US').input('12').should.equal('1 2'); + new AsYouType('US').input('123').should.equal('1 23'); // Bulgaria + // (should not prepend national prefix `0`) + + new AsYouType('BG').input('111 222 3').should.equal('1112223'); // Deutchland + + new AsYouType().input('+4915539898001').should.equal('+49 15539 898001'); // KZ detection + + formatter = new AsYouType(); + formatter.input('+7 702 211 1111'); + formatter.getCountry().should.equal('KZ'); // formatter.valid.should.equal(true) + // New Zealand formatting fix (issue #89) + + new AsYouType('NZ').input('0212').should.equal('021 2'); // South Korea + + formatter = new AsYouType(); + formatter.input('+82111111111').should.equal('+82 11 111 1111'); + formatter.getTemplate().should.equal('xxx xx xxx xxxx'); + }); + it('should filter out formats that require a national prefix and no national prefix has been input', function () { + // Afghanistan. + var formatter = new AsYouType('AF'); // No national prefix, and national prefix is required in the format. + // (not `"national_prefix_is_optional_when_formatting": true`) + + formatter.input('44444444').should.equal('44444444'); + expect(formatter.formatter.template).to.be.undefined; // With national prefix + + formatter.reset().input('044444444').should.equal('044 444 444'); + formatter.formatter.template.should.equal('xxx xxx xxxx'); + }); + it('should work when a digit is not a national prefix but a part of a valid national number', function () { + // In Russia, `8` could be both a valid national prefix + // and a part of a valid national number. + var formatter = new AsYouType('RU'); // The formatter could try both variants: + // with extracting national prefix + // and without extracting it, + // and then choose whichever way has `this.matchingFormats`. + // Or there could be two instances of the formatter: + // one that extracts national prefix and one that doesn't, + // and then the one that has `this.matchingFormats` would be + // used to format the phone number. + // Something like an option `extractNationalPrefix: false` + // and creating `this.withNationalPrefixFormatter = new AsYouType(this.defaultCountry || this.defaultCallingCode, { metadata, extractNationalPrefix: false })` + // and something like `this.withNationalPrefixFormatter.input(nextDigits)` in `input(nextDigits)`. + // But, for this specific case, it's not required: + // in Russia, people are used to inputting `800` numbers with national prefix `8`: + // `8 800 555 35 35`. + // formatter.input('8005553535').should.equal('(800) 555-35-35') + + formatter.input('8005553535').should.equal('8005553535'); + formatter.reset(); + formatter.input('+78005553535').should.equal('+7 800 555 35 35'); + }); + it('should match formats that require a national prefix and no national prefix has been input (national prefix is mandatory for a format)', function () { + var formatter = new AsYouType('FR'); + formatter.input('612345678').should.equal('612345678'); + formatter.reset(); + formatter.input('0612345678').should.equal('06 12 34 56 78'); + }); + it('should match formats that require a national prefix and no national prefix has been input (national prefix is not mandatory for a format)', function () { + var formatter = new AsYouType('RU'); // Without national prefix. + + formatter.input('9991234567').should.equal('999 123-45-67'); + formatter.reset(); // With national prefix. + + formatter.input('89991234567').should.equal('8 (999) 123-45-67'); + }); + it('should not use `national_prefix_formatting_rule` when formatting international phone numbers', function () { + // Brazil. + // `national_prefix_formatting_rule` is `($1)`. + // Should not add braces around `12` when being input in international format. + new AsYouType().input('+55123456789').should.equal('+55 12 3456 789'); + new AsYouType('BR').input('+55123456789').should.equal('+55 12 3456 789'); + new AsYouType('BR').input('123456789').should.equal('(12) 3456-789'); + }); + it('should support incorrectly entered international phone numbers (with a national prefix)', function () { + var formatter; + formatter = new AsYouType(); + formatter.input('+1 1 877 215 5230').should.equal('+1 1 877 215 5230'); // formatter.input('+1 1 877 215 5230').should.equal('+1 1 8772155230') + + formatter.getNationalNumber().should.equal('8772155230'); // They've added another number format that has `8` leading digit + // and 14 digits. Maybe it's something related to Kazakhstan. + // formatter = new AsYouType() + // formatter.input('+78800555353').should.equal('+7 880 055 53 53') + // formatter.input('5').should.equal('+7 8 800 555 35 35') + // formatter.getNationalNumber().should.equal('8005553535') + }); + it('should return a partial template for current value', function () { + var asYouType = new AsYouType('US'); + asYouType.input('').should.equal(''); + asYouType.getTemplate().should.equal(''); + asYouType.input('2').should.equal('2'); // asYouType.getTemplate().should.equal('x') + // Doesn't format for a single digit. + + asYouType.getTemplate().should.equal('x'); + asYouType.input('1').should.equal('21'); + asYouType.getTemplate().should.equal('xx'); + asYouType.input('3').should.equal('(213)'); + asYouType.getTemplate().should.equal('(xxx)'); + }); + it("should fall back to the default country", function () { + var formatter = new AsYouType('RU'); + formatter.input('8').should.equal('8'); + formatter.input('9').should.equal('8 9'); + formatter.input('9').should.equal('8 99'); + formatter.input('9').should.equal('8 (999)'); // formatter.valid.should.be.false + + formatter.formatter.template.should.equal('x (xxx) xxx-xx-xx'); + formatter.getCountry().should.equal('RU'); // formatter.getCountryCallingCode().should.equal('7') + + formatter.input('000000000000').should.equal('8999000000000000'); // formatter.valid.should.be.false + + expect(formatter.formatter.template).to.be.undefined; + formatter.getCountry().should.equal('RU'); // formatter.getCountryCallingCode().should.equal('7') + + formatter.reset(); // formatter.valid.should.be.false + + expect(formatter.formatter.template).to.be.undefined; + expect(formatter.getCountry()).to.be.undefined; // formatter.getCountryCallingCode().should.equal('7') + + formatter.input('+1-213-373-4253').should.equal('+1 213 373 4253'); // formatter.valid.should.be.true + + formatter.getTemplate().should.equal('xx xxx xxx xxxx'); + formatter.getCountry().should.equal('US'); + formatter.getCountryCallingCode().should.equal('1'); + }); + it('should work in edge cases', function () { + var formatter; + var thrower; // No metadata + + thrower = function thrower() { + return new AsYouType_('RU'); + }; + + thrower.should["throw"]('`metadata` argument not passed'); // Second '+' sign + + formatter = new AsYouType('RU'); + formatter.input('+').should.equal('+'); + formatter.input('7').should.equal('+7'); + formatter.input('+').should.equal('+7'); // Out-of-position '+' sign + + formatter = new AsYouType('RU'); + formatter.input('8').should.equal('8'); + formatter.input('+').should.equal('8'); // No format matched + + formatter = new AsYouType('RU'); + formatter.input('88005553535').should.equal('8 (800) 555-35-35'); + formatter.input('0').should.equal('880055535350'); // Invalid country phone code + + formatter = new AsYouType(); + formatter.input('+0123').should.equal('+0123'); // No country specified and not an international number + + formatter = new AsYouType(); + formatter.input('88005553535').should.equal('88005553535'); // Extract national prefix when no `national_prefix` is set + + formatter = new AsYouType('AD'); + formatter.input('155555').should.equal('155 555'); // Typing nonsense + + formatter = new AsYouType('RU'); + formatter.input('+1abc2').should.equal('+1'); // Should reset default country when explicitly + // typing in an international phone number + + formatter = new AsYouType('RU'); + formatter.input('+'); + type(formatter.getCountry()).should.equal('undefined'); + type(formatter.getCountryCallingCode()).should.equal('undefined'); // Country not inferrable from the phone number, + // while the phone number itself can already be formatted "completely". + + formatter = new AsYouType(); + formatter.input('+12223333333'); + type(formatter.getCountry()).should.equal('undefined'); + formatter.getCountryCallingCode().should.equal('1'); // Reset a chosen format when it no longer applies given the new leading digits. + // If Google changes metadata for England then this test might not cover the case. + + formatter = new AsYouType('GB'); + formatter.input('0845').should.equal('0845'); // New leading digits don't match the format previously chosen. + // Reset the format. + + formatter.input('0').should.equal('0845 0'); + }); + it('should choose between matching formats based on the absence or presence of a national prefix', function () { + // The first matching format: + // { + // "pattern": "(\\d{2})(\\d{5,6})", + // "leading_digits_patterns": [ + // "(?:10|2[0-57-9])[19]", + // "(?:10|2[0-57-9])(?:10|9[56])", + // "(?:10|2[0-57-9])(?:100|9[56])" + // ], + // "national_prefix_formatting_rule": "0$1", + // "format": "$1 $2", + // "domestic_carrier_code_formatting_rule": "$CC $FG" + // } + // + // The second matching format: + // { + // "pattern": "(\\d{2})(\\d{4})(\\d{4})", + // "leading_digits_patterns": [ + // "10|2(?:[02-57-9]|1[1-9])", + // "10|2(?:[02-57-9]|1[1-9])", + // "10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])" + // ], + // "national_prefix_formatting_rule": "0$1", + // "national_prefix_is_optional_when_formatting": true, + // "format": "$1 $2 $3", + // "domestic_carrier_code_formatting_rule": "$CC $FG" + // } + // + var formatter = new AsYouType('CN'); // National prefix has been input. + // Chooses the first format. + + formatter.input('01010000').should.equal('010 10000'); + formatter.reset(); // No national prefix has been input, + // and `national_prefix_for_parsing` not matched. + // The first format won't match, because it doesn't have + // `"national_prefix_is_optional_when_formatting": true`. + // The second format will match, because it does have + // `"national_prefix_is_optional_when_formatting": true`. + + formatter.input('1010000').should.equal('10 1000 0'); + }); + it('should not accept phone number extensions', function () { + new AsYouType().input('+1-213-373-4253 ext. 123').should.equal('+1 213 373 4253'); + }); + it('should parse non-European digits', function () { + new AsYouType().input('+١٢١٢٢٣٢٣٢٣٢').should.equal('+1 212 232 3232'); + }); + it('should return a PhoneNumber instance', function () { + var formatter = new AsYouType('BR'); // No country calling code. + + expect(formatter.getNumber()).to.be.undefined; + formatter.input('+1'); // No national number digits. + + expect(formatter.getNumber()).to.be.undefined; + formatter.input('213-373-4253'); + var phoneNumber = formatter.getNumber(); + phoneNumber.country.should.equal('US'); + phoneNumber.countryCallingCode.should.equal('1'); + phoneNumber.number.should.equal('+12133734253'); + phoneNumber.nationalNumber.should.equal('2133734253'); + formatter.reset(); + formatter.input('+1-113-373-4253'); + phoneNumber = formatter.getNumber(); + expect(phoneNumber.country).to.be.undefined; + phoneNumber.countryCallingCode.should.equal('1'); // An incorrect NANPA international phone number. + // (contains national prefix in an international phone number) + + formatter.reset(); + formatter.input('+1-1'); // Before leading digits < 3 matching was implemented: + // + // phoneNumber = formatter.getNumber() + // expect(phoneNumber).to.not.be.undefined + // + // formatter.input('1') + // phoneNumber = formatter.getNumber() + // expect(phoneNumber.country).to.be.undefined + // phoneNumber.countryCallingCode.should.equal('1') + // phoneNumber.number.should.equal('+111') + // After leading digits < 3 matching was implemented: + // + + phoneNumber = formatter.getNumber(); + expect(phoneNumber).to.be.undefined; // + + formatter.input('1'); + phoneNumber = formatter.getNumber(); + expect(phoneNumber.country).to.be.undefined; + phoneNumber.countryCallingCode.should.equal('1'); + phoneNumber.number.should.equal('+11'); + }); + it('should work with countries that add digits to national (significant) number', function () { + // When formatting Argentinian mobile numbers in international format, + // a `9` is prepended, when compared to national format. + var asYouType = new AsYouType('AR'); + asYouType.input('+5493435551212').should.equal('+54 9 3435 55 1212'); + asYouType.reset(); // Digits shouldn't be changed when formatting in national format. + // (no `9` is prepended). + // First parses national (significant) number by prepending `9` to it + // and stripping `15` from it. + // Then uses `$2 15-$3-$4` format that strips the leading `9` + // and adds `15`. + + asYouType.input('0343515551212').should.equal('03435 15-55-1212'); + }); + it('should return non-formatted phone number when no format matches and national (significant) number has digits added', function () { + // When formatting Argentinian mobile numbers in international format, + // a `9` is prepended, when compared to national format. + var asYouType = new AsYouType('AR'); // Digits shouldn't be changed when formatting in national format. + // (no `9` is prepended). + // First parses national (significant) number by prepending `9` to it + // and stripping `15` from it. + // Then uses `$2 15-$3-$4` format that strips the leading `9` + // and adds `15`. + // `this.nationalSignificantNumberMatchesInput` is `false` in this case, + // so `getNonFormattedNumber()` returns `getFullNumber(getNationalDigits())`. + + asYouType.input('0343515551212999').should.equal('0343515551212999'); + }); + it('should format Argentina numbers (starting with 011) (digit by digit)', function () { + // Inputting a number digit-by-digit and as a whole a two different cases + // in case of this library compared to Google's `libphonenumber` + // that always inputs a number digit-by-digit. + // https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/23 + // nextDigits 0111523456789 + // nationalNumber 91123456789 + var formatter = new AsYouType('AR'); + formatter.input('0').should.equal('0'); + formatter.getTemplate().should.equal('x'); + formatter.input('1').should.equal('01'); + formatter.getTemplate().should.equal('xx'); + formatter.input('1').should.equal('011'); + formatter.getTemplate().should.equal('xxx'); + formatter.input('1').should.equal('011 1'); + formatter.getTemplate().should.equal('xxx x'); + formatter.input('5').should.equal('011 15'); + formatter.getTemplate().should.equal('xxx xx'); + formatter.input('2').should.equal('011 152'); + formatter.getTemplate().should.equal('xxx xxx'); + formatter.input('3').should.equal('011 1523'); + formatter.getTemplate().should.equal('xxx xxxx'); + formatter.input('4').should.equal('011 1523-4'); + formatter.getTemplate().should.equal('xxx xxxx-x'); + formatter.input('5').should.equal('011 1523-45'); + formatter.getTemplate().should.equal('xxx xxxx-xx'); + formatter.input('6').should.equal('011 1523-456'); + formatter.getTemplate().should.equal('xxx xxxx-xxx'); + formatter.input('7').should.equal('011 1523-4567'); + formatter.getTemplate().should.equal('xxx xxxx-xxxx'); + formatter.input('8').should.equal('011152345678'); + formatter.getTemplate().should.equal('xxxxxxxxxxxx'); + formatter.input('9').should.equal('011 15-2345-6789'); + formatter.getTemplate().should.equal('xxx xx-xxxx-xxxx'); // Private property (not public API). + + formatter.state.nationalSignificantNumber.should.equal('91123456789'); // Private property (not public API). + // `formatter.digits` is not always `formatter.nationalPrefix` + // plus `formatter.nationalNumberDigits`. + + formatter.state.nationalPrefix.should.equal('0'); + formatter.isPossible().should.equal(true); + formatter.isValid().should.equal(true); + }); + it('should format Argentina numbers (starting with 011)', function () { + // Inputting a number digit-by-digit and as a whole a two different cases + // in case of this library compared to Google's `libphonenumber` + // that always inputs a number digit-by-digit. + // https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/23 + // nextDigits 0111523456789 + // nationalNumber 91123456789 + var formatter = new AsYouType('AR'); + formatter.input('0111523456789').should.equal('011 15-2345-6789'); // Private property (not public API). + + formatter.state.nationalSignificantNumber.should.equal('91123456789'); // Private property (not public API). + // `formatter.digits` is not always `formatter.nationalPrefix` + // plus `formatter.nationalNumberDigits`. + + expect(formatter.state.nationalPrefix).to.equal('0'); // expect(formatter.nationalPrefix).to.be.undefined + + formatter.isPossible().should.equal(true); + formatter.isValid().should.equal(true); + }); // https://gitlab.com/catamphetamine/react-phone-number-input/-/issues/93 + + it('should format Indonesian numbers', function () { + var formatter = new AsYouType('ID'); + formatter.getChars().should.equal(''); // Before leading digits < 3 matching was implemented: + // formatter.input('081').should.equal('(081)') + // After leading digits < 3 matching was implemented: + + formatter.input('081').should.equal('081'); + }); + it('should prepend `complexPrefixBeforeNationalSignificantNumber` (not a complete number)', function () { + // A country having `national_prefix_for_parsing` with a "capturing group". + // National prefix is either not used in a format or is optional. + // Input phone number without a national prefix. + var formatter = new AsYouType('AU'); + formatter.input('1831130345678').should.equal('1831 1303 456 78'); // Private property (not public API). + + formatter.state.nationalSignificantNumber.should.equal('130345678'); // Private property (not public API). + // `formatter.digits` is not always `formatter.nationalPrefix` + // plus `formatter.nationalNumberDigits`. + + expect(formatter.state.nationalPrefix).to.be.undefined; + formatter.state.complexPrefixBeforeNationalSignificantNumber.should.equal('1831'); + }); + it('should prepend `complexPrefixBeforeNationalSignificantNumber` (complete number)', function () { + // A country having `national_prefix_for_parsing` with a "capturing group". + // National prefix is either not used in a format or is optional. + // Input phone number without a national prefix. + var formatter = new AsYouType('AU'); + formatter.input('18311303456789').should.equal('1831 1303 456 789'); // Private property (not public API). + + formatter.state.nationalSignificantNumber.should.equal('1303456789'); // Private property (not public API). + // `formatter.digits` is not always `formatter.nationalPrefix` + // plus `formatter.nationalNumberDigits`. + + expect(formatter.state.nationalPrefix).to.be.undefined; + formatter.state.complexPrefixBeforeNationalSignificantNumber.should.equal('1831'); + }); + it('should work with Mexico numbers', function () { + var asYouType = new AsYouType('MX'); // Fixed line. + + asYouType.input('+52(449)978-000').should.equal('+52 449 978 000'); + asYouType.input('1').should.equal('+52 449 978 0001'); + asYouType.reset(); + asYouType.input('01449978000').should.equal('01449 978 000'); + asYouType.getTemplate().should.equal('xxxxx xxx xxx'); + asYouType.input('1').should.equal('01449 978 0001'); + asYouType.getTemplate().should.equal('xxxxx xxx xxxx'); + asYouType.reset(); + asYouType.input('(449)978-000').should.equal('449 978 000'); + asYouType.getTemplate().should.equal('xxx xxx xxx'); + asYouType.input('1').should.equal('449 978 0001'); + asYouType.getTemplate().should.equal('xxx xxx xxxx'); // Mobile. + // `1` is prepended before area code to mobile numbers in international format. + + asYouType.reset(); + asYouType.input('+521331234567').should.equal('+52 133 1234 567'); + asYouType.getTemplate().should.equal('xxx xxx xxxx xxx'); // Google's `libphonenumber` seems to not able to format this type of number. + // https://issuetracker.google.com/issues/147938979 + + asYouType.input('8').should.equal('+52 133 1234 5678'); + asYouType.getTemplate().should.equal('xxx xxx xxxx xxxx'); + asYouType.reset(); + asYouType.input('+52331234567').should.equal('+52 33 1234 567'); + asYouType.input('8').should.equal('+52 33 1234 5678'); + asYouType.reset(); + asYouType.input('044331234567').should.equal('04433 1234 567'); + asYouType.input('8').should.equal('04433 1234 5678'); + asYouType.reset(); + asYouType.input('045331234567').should.equal('04533 1234 567'); + asYouType.input('8').should.equal('04533 1234 5678'); + }); + it('should just prepend national prefix if national_prefix_formatting_rule does not produce a suitable number', function () { + // "national_prefix": "8" + // "national_prefix_for_parsing": "0|80?" + var formatter = new AsYouType('BY'); // "national_prefix_formatting_rule": "8 $1" + // That `national_prefix_formatting_rule` isn't used + // because the user didn't input national prefix `8`. + + formatter.input('0800123').should.equal('0 800 123'); + formatter.getTemplate().should.equal('x xxx xxx'); + }); + it('should not duplicate area code for certain countries', function () { + // https://github.com/catamphetamine/libphonenumber-js/issues/318 + var asYouType = new AsYouType('VI'); // Even though `parse("3406934")` would return a + // "(340) 340-6934" national number, still + // "As You Type" formatter should leave it as "(340) 6934". + + asYouType.input('340693').should.equal('(340) 693'); + asYouType.input('4').should.equal('(340) 693-4'); + asYouType.input('123').should.equal('(340) 693-4123'); + }); + it('shouldn\'t throw when passed a non-existent default country', function () { + new AsYouType('XX').input('+78005553535').should.equal('+7 800 555 35 35'); + new AsYouType('XX').input('88005553535').should.equal('88005553535'); + }); + it('should parse carrier codes', function () { + var formatter = new AsYouType('BR'); + formatter.input('0 15 21 5555-5555'); + var phoneNumber = formatter.getNumber(); + phoneNumber.carrierCode.should.equal('15'); + formatter.reset(); + formatter.input('+1-213-373-4253'); + phoneNumber = formatter.getNumber(); + expect(phoneNumber.carrierCode).to.be.undefined; + }); + it('should format when default country calling code is configured', function () { + var formatter = new AsYouType({ + defaultCallingCode: '7' + }); + formatter.input('88005553535').should.equal('8 (800) 555-35-35'); + formatter.getNumber().countryCallingCode.should.equal('7'); + formatter.getNumber().country.should.equal('RU'); + }); + it('shouldn\'t return PhoneNumber if country calling code hasn\'t been input yet', function () { + var formatter = new AsYouType(); + formatter.input('+80'); + expect(formatter.getNumber()).to.be.undefined; + }); + it('should format non-geographic numbering plan phone numbers', function () { + var formatter = new AsYouType(); + formatter.input('+').should.equal('+'); + formatter.input('8').should.equal('+8'); + formatter.input('7').should.equal('+87'); + expect(formatter.getCountry()).to.be.undefined; + formatter.input('0').should.equal('+870'); + + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + formatter.getCountry().should.equal('001'); + } else { + expect(formatter.getCountry()).to.be.undefined; + } + + formatter.input('7').should.equal('+870 7'); + formatter.input('7').should.equal('+870 77'); + formatter.input('3').should.equal('+870 773'); + formatter.input('1').should.equal('+870 773 1'); + formatter.input('1').should.equal('+870 773 11'); + formatter.input('1').should.equal('+870 773 111'); + formatter.input('6').should.equal('+870 773 111 6'); + formatter.input('3').should.equal('+870 773 111 63'); + formatter.input('2').should.equal('+870 773 111 632'); + + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + formatter.getNumber().country.should.equal('001'); + } else { + expect(formatter.getCountry()).to.be.undefined; + } + + formatter.getNumber().countryCallingCode.should.equal('870'); + }); + it('should format non-geographic numbering plan phone numbers (default country calling code)', function () { + var formatter = new AsYouType({ + defaultCallingCode: '870' + }); + + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + formatter.getNumber().country.should.equal('001'); + } else { + expect(formatter.getCountry()).to.be.undefined; + } + + formatter.input('7').should.equal('7'); + formatter.input('7').should.equal('77'); + formatter.input('3').should.equal('773'); + formatter.input('1').should.equal('773 1'); + formatter.input('1').should.equal('773 11'); + formatter.input('1').should.equal('773 111'); + formatter.input('6').should.equal('773 111 6'); + formatter.input('3').should.equal('773 111 63'); + formatter.input('2').should.equal('773 111 632'); + + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + formatter.getNumber().country.should.equal('001'); + } else { + expect(formatter.getCountry()).to.be.undefined; + } + + formatter.getNumber().countryCallingCode.should.equal('870'); + }); + it('should not format non-geographic numbering plan phone numbers (default country 001)', function () { + var formatter = new AsYouType('001'); + expect(formatter.defaultCountry).to.be.undefined; + expect(formatter.defaultCallingCode).to.be.undefined; + formatter.input('7').should.equal('7'); + formatter.input('7').should.equal('77'); + formatter.input('3').should.equal('773'); + formatter.input('1').should.equal('7731'); + formatter.input('1').should.equal('77311'); + formatter.input('1').should.equal('773111'); + formatter.input('6').should.equal('7731116'); + formatter.input('3').should.equal('77311163'); + formatter.input('2').should.equal('773111632'); + expect(formatter.getCountry()).to.be.undefined; + expect(formatter.getNumber()).to.be.undefined; + }); + it('should return PhoneNumber (should strip national prefix `1` in E.164 value)', function () { + var formatter = new AsYouType('RU'); + formatter.input('+1111'); + formatter.getNumber().number.should.equal('+111'); + }); + it('should return PhoneNumber with autocorrected international numbers without leading +', function () { + // https://github.com/catamphetamine/libphonenumber-js/issues/316 + var formatter = new AsYouType('FR'); + formatter.input('33612902554').should.equal('33 6 12 90 25 54'); + formatter.getNumber().country.should.equal('FR'); + formatter.getNumber().nationalNumber.should.equal('612902554'); + formatter.getNumber().number.should.equal('+33612902554'); // Should also strip national prefix. + + formatter.reset(); + formatter.input('330612902554').should.equal('33 06 12 90 25 54'); + formatter.getNumber().country.should.equal('FR'); + formatter.getNumber().nationalNumber.should.equal('612902554'); + formatter.getNumber().number.should.equal('+33612902554'); // On second thought, this "prepend default area code" feature won't be added, + // because when a user selects "British Virgin Islands" and inputs + // "2291234", then they see "(229) 123-4" which clearly indicates that + // they should input the complete phone number (with area code). + // So, unless a user completely doesn't understand what they're doing, + // they'd input the complete phone number (with area code). + // // Should prepend the default area code in British Virgin Islands. + // // https://github.com/catamphetamine/react-phone-number-input/issues/335 + // const formatter2 = new AsYouType('VG') + // formatter2.input('2291234').should.equal('(229) 123-4') + // formatter2.getNumber().country.should.equal('VG') + // formatter2.getNumber().nationalNumber.should.equal('2842291234') + // formatter2.getNumber().number.should.equal('+12842291234') + }); + it('should work with out-of-country dialing prefix (like 00)', function () { + var formatter = new AsYouType('DE'); + formatter.input('00498911196611').should.equal('00 49 89 11196611'); + formatter.getCountry().should.equal('DE'); + formatter.formatter.template.should.equal('xx xx xx xxxxxxxx'); + formatter.formatter.populatedNationalNumberTemplate.should.equal('89 11196611'); + formatter.getTemplate().should.equal('xx xx xx xxxxxxxx'); + formatter.getNumber().country.should.equal('DE'); + formatter.getNumber().nationalNumber.should.equal('8911196611'); + formatter.getNumber().number.should.equal('+498911196611'); + }); + it('shouldn\'t choose a format when there\'re too many digits for any of them', function () { + var formatter = new AsYouType('RU'); + formatter.input('89991112233'); + formatter.formatter.chosenFormat.format().should.equal('$1 $2-$3-$4'); + formatter.reset(); + formatter.input('899911122334'); + expect(formatter.formatter.chosenFormat).to.be.undefined; + }); + it('should get separator after national prefix', function () { + // Russia. + // Has separator after national prefix. + var formatter = new AsYouType('RU'); + var format = formatter.metadata.formats()[0]; + format.nationalPrefixFormattingRule().should.equal('8 ($1)'); + formatter.formatter.getSeparatorAfterNationalPrefix(format).should.equal(' '); // Britain. + // Has no separator after national prefix. + + var formatter2 = new AsYouType('GB'); + var format2 = formatter2.metadata.formats()[0]; + format2.nationalPrefixFormattingRule().should.equal('0$1'); + formatter2.formatter.getSeparatorAfterNationalPrefix(format2).should.equal(''); + }); + it('should return if the number is possible', function () { + // National. Russia. + var formatter = new AsYouType('RU'); + formatter.isPossible().should.equal(false); + formatter.input('8'); + formatter.isPossible().should.equal(false); + formatter.input('8005553535'); + formatter.isPossible().should.equal(true); + formatter.input('5'); + formatter.isPossible().should.equal(false); + }); + it('should return if the number is valid', function () { + // National. Russia. + var formatter = new AsYouType('RU'); + formatter.isValid().should.equal(false); + formatter.input('88005553535'); + formatter.isValid().should.equal(true); + formatter.input('5'); + formatter.isValid().should.equal(false); + }); + it('should return if the number is international', function () { + // National. Russia. + var formatter = new AsYouType('RU'); + formatter.isInternational().should.equal(false); + formatter.input('88005553535'); + formatter.isInternational().should.equal(false); // International. Russia. + + var formatterInt = new AsYouType(); + formatterInt.isInternational().should.equal(false); + formatterInt.input('+'); + formatterInt.isInternational().should.equal(true); + formatterInt.input('78005553535'); + formatterInt.isInternational().should.equal(true); + }); + it('should return country calling code part of the number', function () { + // National. Russia. + var formatter = new AsYouType('RU'); + expect(formatter.getCountryCallingCode()).to.be.undefined; + formatter.input('88005553535'); + expect(formatter.getCountryCallingCode()).to.be.undefined; // International. Russia. + + var formatterInt = new AsYouType(); + expect(formatterInt.getCountryCallingCode()).to.be.undefined; + formatterInt.input('+'); + expect(formatterInt.getCountryCallingCode()).to.be.undefined; + formatterInt.input('7'); + expect(formatterInt.getCountryCallingCode()).to.equal('7'); + formatterInt.input('8005553535'); + expect(formatterInt.getCountryCallingCode()).to.equal('7'); + }); + it('should return the country of the number', function () { + // National. Russia. + var formatter = new AsYouType('RU'); + expect(formatter.getCountry()).to.be.undefined; + formatter.input('8'); + expect(formatter.getCountry()).to.equal('RU'); + formatter.input('8005553535'); + expect(formatter.getCountry()).to.equal('RU'); // International. Austria. + + var formatterInt = new AsYouType(); + expect(formatterInt.getCountry()).to.be.undefined; + formatterInt.input('+'); + expect(formatterInt.getCountry()).to.be.undefined; + formatterInt.input('43'); + expect(formatterInt.getCountry()).to.equal('AT'); // International. USA. + + var formatterIntRu = new AsYouType(); + expect(formatterIntRu.getCountry()).to.be.undefined; + formatterIntRu.input('+'); + expect(formatterIntRu.getCountry()).to.be.undefined; + formatterIntRu.input('1'); + expect(formatterIntRu.getCountry()).to.be.undefined; + formatterIntRu.input('2133734253'); + expect(formatterIntRu.getCountry()).to.equal('US'); + formatterIntRu.input('1'); + expect(formatterIntRu.getCountry()).to.be.undefined; + }); + it('should parse a long IDD prefix', function () { + var formatter = new AsYouType('AU'); // `14880011` is a long IDD prefix in Australia. + + formatter.input('1').should.equal('1'); + formatter.input('4').should.equal('14'); + formatter.input('8').should.equal('148'); + formatter.input('8').should.equal('1488'); + formatter.input('0').should.equal('14880'); + formatter.input('0').should.equal('148800'); + formatter.input('1').should.equal('1488001'); + formatter.input('1').should.equal('14880011'); // As if were calling US using `14880011` IDD prefix, + // though that prefix could mean something else. + + formatter.input('1').should.equal('14880011 1'); + formatter.input('2').should.equal('14880011 1 2'); + formatter.input('1').should.equal('14880011 1 21'); + formatter.input('3').should.equal('14880011 1 213'); + }); + it('should return the phone number characters entered by the user', function () { + var formatter = new AsYouType('RU'); + formatter.getChars().should.equal(''); + formatter.input('+123'); + formatter.getChars().should.equal('+123'); + formatter.reset(); + formatter.input('123'); + formatter.getChars().should.equal('123'); + }); // A test confirming the case when input `"11"` for country `"US"` + // produces `value` `"+11"`. + // https://gitlab.com/catamphetamine/react-phone-number-input/-/issues/113 + + it('should determine the national (significant) part correctly when input with national prefix in US', function () { + var formatter = new AsYouType('US'); // As soon as the user has input `"11"`, no `format` matches + // those "national number" digits in the `"US"` country metadata. + // Since no `format` matches, the number doesn't seem like a valid one, + // so it attempts to see if the user "forgot" to input a `"+"` at the start. + // And it looks like they might've to. + // So it acts as if the leading `"+"` is there, + // as if the user's input is `"+11"`. + // See `AsYouType.fixMissingPlus()` function. + + formatter.input('1 122 222 2222 3').should.equal('1 1 222 222 2223'); + formatter.getNumber().nationalNumber.should.equal('2222222223'); + }); +}); +describe('AsYouType.getNumberValue()', function () { + it('should return E.164 number value (national number, with national prefix, default country: US)', function () { + var formatter = new AsYouType('US'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input(''); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('1'); + formatter.getNumberValue().should.equal('+1'); + formatter.input('2'); + formatter.getNumberValue().should.equal('+12'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+121'); + formatter.input('3'); + formatter.getNumberValue().should.equal('+1213'); + formatter.input('373-4253'); + formatter.getNumberValue().should.equal('+12133734253'); + formatter.input('4'); + formatter.getNumberValue().should.equal('+121337342534'); + }); + it('should return E.164 number value (national number, with national prefix, default calling code: 1)', function () { + var formatter = new AsYouType({ + defaultCallingCode: '1' + }); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input(''); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('1'); + formatter.getNumberValue().should.equal('+1'); + formatter.input('2'); + formatter.getNumberValue().should.equal('+12'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+121'); + formatter.input('3'); + formatter.getNumberValue().should.equal('+1213'); + formatter.input('373-4253'); + formatter.getNumberValue().should.equal('+12133734253'); + formatter.input('4'); + formatter.getNumberValue().should.equal('+121337342534'); + }); + it('should return E.164 number value (national number, default country: US)', function () { + var formatter = new AsYouType('US'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input(''); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('2'); + formatter.getNumberValue().should.equal('+12'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+121'); + formatter.input('3'); + formatter.getNumberValue().should.equal('+1213'); + formatter.input('373-4253'); + formatter.getNumberValue().should.equal('+12133734253'); + formatter.input('4'); + formatter.getNumberValue().should.equal('+121337342534'); + }); + it('should return E.164 number value (national number, default calling code: 1)', function () { + var formatter = new AsYouType({ + defaultCallingCode: '1' + }); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input(''); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('2'); + formatter.getNumberValue().should.equal('+12'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+121'); + formatter.input('3'); + formatter.getNumberValue().should.equal('+1213'); + formatter.input('373-4253'); + formatter.getNumberValue().should.equal('+12133734253'); + formatter.input('4'); + formatter.getNumberValue().should.equal('+121337342534'); + }); + it('should return E.164 number value (international number, not a valid calling code)', function () { + var formatter = new AsYouType(); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input(''); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('+'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('2150'); + formatter.getNumberValue().should.equal('+2150'); + }); + it('should return E.164 number value (international number, default country: US)', function () { + var formatter = new AsYouType('US'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input(''); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('+'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('1'); + formatter.getNumberValue().should.equal('+1'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+1'); + formatter.input('2'); + formatter.getNumberValue().should.equal('+12'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+121'); + formatter.input('3'); + formatter.getNumberValue().should.equal('+1213'); + formatter.input('373-4253'); + formatter.getNumberValue().should.equal('+12133734253'); + formatter.input('4'); + formatter.getNumberValue().should.equal('+121337342534'); + }); + it('should return E.164 number value (international number, other default country: RU)', function () { + var formatter = new AsYouType('RU'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input(''); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('+'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('1'); + formatter.getNumberValue().should.equal('+1'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+1'); + formatter.input('2'); + formatter.getNumberValue().should.equal('+12'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+121'); + formatter.input('3'); + formatter.getNumberValue().should.equal('+1213'); + formatter.input('373-4253'); + formatter.getNumberValue().should.equal('+12133734253'); + formatter.input('4'); + formatter.getNumberValue().should.equal('+121337342534'); + }); + it('should return E.164 number value (international number, default calling code: 1)', function () { + var formatter = new AsYouType('US', { + defaultCallingCode: '1' + }); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input(''); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('+'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('1'); + formatter.getNumberValue().should.equal('+1'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+1'); + formatter.input('2'); + formatter.getNumberValue().should.equal('+12'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+121'); + formatter.input('3'); + formatter.getNumberValue().should.equal('+1213'); + formatter.input('373-4253'); + formatter.getNumberValue().should.equal('+12133734253'); + formatter.input('4'); + formatter.getNumberValue().should.equal('+121337342534'); + }); + it('should return E.164 number value (international number, other default calling code: 7)', function () { + var formatter = new AsYouType('US', { + defaultCallingCode: '7' + }); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input(''); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('+'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('1'); + formatter.getNumberValue().should.equal('+1'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+1'); + formatter.input('2'); + formatter.getNumberValue().should.equal('+12'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+121'); + formatter.input('3'); + formatter.getNumberValue().should.equal('+1213'); + formatter.input('373-4253'); + formatter.getNumberValue().should.equal('+12133734253'); + formatter.input('4'); + formatter.getNumberValue().should.equal('+121337342534'); + }); + it('should return E.164 number value (international number)', function () { + var formatter = new AsYouType(); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input(''); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('+'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('1'); + formatter.getNumberValue().should.equal('+1'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+1'); + formatter.input('2'); + formatter.getNumberValue().should.equal('+12'); + formatter.input('1'); + formatter.getNumberValue().should.equal('+121'); + formatter.input('3'); + formatter.getNumberValue().should.equal('+1213'); + formatter.input('373-4253'); + formatter.getNumberValue().should.equal('+12133734253'); + formatter.input('4'); + formatter.getNumberValue().should.equal('+121337342534'); + }); + it('should return E.164 number value (national number) (no default country or calling code)', function () { + var formatter = new AsYouType(); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input(''); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('1'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('12'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('3'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('373-4253'); + expect(formatter.getNumberValue()).to.be.undefined; + formatter.input('4'); + expect(formatter.getNumberValue()).to.be.undefined; + }); + it('should not drop any input digits', function () { + // Test "+529011234567" number, proactively ensuring that no formatting is applied, + // where a format is chosen that would otherwise have led to some digits being dropped. + var formatter = new AsYouType('MX'); + formatter.input('9').should.equal('9'); + formatter.input('0').should.equal('90'); + formatter.input('1').should.equal('901'); + formatter.input('1').should.equal('901 1'); + formatter.input('2').should.equal('901 12'); + formatter.input('3').should.equal('901 123'); + formatter.input('4').should.equal('901 123 4'); + formatter.input('5').should.equal('901 123 45'); + formatter.input('6').should.equal('901 123 456'); + formatter.input('7').should.equal('901 123 4567'); + }); + it('should work for formats with no leading digits (`leadingDigitsPatternsCount === 0`)', function () { + var formatter = new AsYouType({ + defaultCallingCode: 888 + }); + formatter.input('1').should.equal('1'); + }); + it('should work for SK phone numbers', function () { + // There was a bug: "leading digits" `"2"` matched "leading digits pattern" `"90"`. + // The incorrect `.match()` function result was `{ oveflow: true }` + // while it should've been `undefined`. + // https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/66 + var formatter = new AsYouType('SK'); + formatter.input('090').should.equal('090'); + formatter.reset(); + formatter.input('080').should.equal('080'); + formatter.reset(); + formatter.input('059').should.equal('059'); + }); + it('should work for SK phone numbers (2)', function () { + // https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/69 + var formatter = new AsYouType('SK'); + formatter.input('421901222333').should.equal('421 901 222 333'); + formatter.getTemplate().should.equal('xxx xxx xxx xxx'); + }); +}); + +function type(something) { + return _typeof(something); +} +//# sourceMappingURL=AsYouType.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouType.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouType.test.js.map new file mode 100644 index 00000000..099e37bb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouType.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsYouType.test.js","names":["metadata","type","AsYouType_","AsYouType","country_code","USE_NON_GEOGRAPHIC_COUNTRY_CODE","describe","it","input","should","equal","formatter","template","populatedNationalNumberTemplate","expect","to","be","undefined","getTemplate","getCountry","getCountryCallingCode","reset","getNationalNumber","asYouType","thrower","getNumber","phoneNumber","country","countryCallingCode","number","nationalNumber","state","nationalSignificantNumber","nationalPrefix","isPossible","isValid","getChars","complexPrefixBeforeNationalSignificantNumber","carrierCode","defaultCallingCode","defaultCountry","chosenFormat","format","formats","nationalPrefixFormattingRule","getSeparatorAfterNationalPrefix","formatter2","format2","isInternational","formatterInt","formatterIntRu","getNumberValue","something"],"sources":["../source/AsYouType.test.js"],"sourcesContent":["import metadata from '../metadata.min.json' assert { type: 'json' }\r\nimport AsYouType_ from './AsYouType.js'\r\n\r\nclass AsYouType extends AsYouType_ {\r\n\tconstructor(country_code) {\r\n\t\tsuper(country_code, metadata)\r\n\t}\r\n}\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\ndescribe('AsYouType', () => {\r\n\tit('should use \"national_prefix_formatting_rule\"', () => {\r\n\t\t// With national prefix (full).\r\n\t\tnew AsYouType('RU').input('88005553535').should.equal('8 (800) 555-35-35')\r\n\t\t// With national prefix (partial).\r\n\t\tnew AsYouType('RU').input('880055535').should.equal('8 (800) 555-35')\r\n\t})\r\n\r\n\tit('should populate national number template (digit by digit)', () => {\r\n\t\tconst formatter = new AsYouType('US')\r\n\t\tformatter.input('1')\r\n\t\t// formatter.formatter.template.should.equal('x (xxx) xxx-xxxx')\r\n\t\tformatter.formatter.template.should.equal('x xxx-xxxx')\r\n\t\t// formatter.formatter.populatedNationalNumberTemplate.should.equal('1 (xxx) xxx-xxxx')\r\n\t\tformatter.formatter.populatedNationalNumberTemplate.should.equal('1 xxx-xxxx')\r\n\t\tformatter.input('213')\r\n\t\tformatter.formatter.populatedNationalNumberTemplate.should.equal('1 (213) xxx-xxxx')\r\n\t\tformatter.input('3734253')\r\n\t\tformatter.formatter.populatedNationalNumberTemplate.should.equal('1 (213) 373-4253')\r\n\t})\r\n\r\n\tit('should populate international number template (digit by digit) (default country)', () => {\r\n\t\tconst formatter = new AsYouType('US')\r\n\t\texpect(formatter.formatter.template).to.be.undefined\r\n\t\texpect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined\r\n\t\tformatter.input('').should.equal('')\r\n\t\texpect(formatter.formatter.template).to.be.undefined\r\n\t\texpect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined\r\n\t\tformatter.input('+').should.equal('+')\r\n\t\tformatter.getTemplate().should.equal('x')\r\n\t\texpect(formatter.formatter.template).to.be.undefined\r\n\t\texpect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined\r\n\t\tformatter.input('1').should.equal('+1')\r\n\t\tformatter.getTemplate().should.equal('xx')\r\n\t\t// Hasn't started formatting the phone number using the template yet.\r\n\t\t// formatter.formatter.template.should.equal('xx xxx xxx xxxx')\r\n\t\tformatter.formatter.template.should.equal('xx xxx xxxx')\r\n\t\t// formatter.formatter.populatedNationalNumberTemplate.should.equal('xxx xxx xxxx')\r\n\t\tformatter.formatter.populatedNationalNumberTemplate.should.equal('xxx xxxx')\r\n\t\t// Has some national number digits, starts formatting the phone number using the template.\r\n\t\tformatter.input('213')\r\n\t\tformatter.formatter.populatedNationalNumberTemplate.should.equal('213 xxx xxxx')\r\n\t\tformatter.input('3734253')\r\n\t\tformatter.formatter.populatedNationalNumberTemplate.should.equal('213 373 4253')\r\n\t})\r\n\r\n\tit('should populate international number template (digit by digit)', () => {\r\n\t\tconst formatter = new AsYouType()\r\n\t\texpect(formatter.formatter.template).to.be.undefined\r\n\t\texpect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined\r\n\t\tformatter.input('').should.equal('')\r\n\t\texpect(formatter.formatter.template).to.be.undefined\r\n\t\texpect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined\r\n\t\tformatter.input('+').should.equal('+')\r\n\t\texpect(formatter.formatter.template).to.be.undefined\r\n\t\texpect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined\r\n\t\tformatter.input('1').should.equal('+1')\r\n\t\t// formatter.formatter.template.should.equal('xx xxx xxx xxxx')\r\n\t\tformatter.formatter.template.should.equal('xx xxx xxxx')\r\n\t\t// Hasn't yet started formatting the phone number using the template.\r\n\t\t// formatter.formatter.populatedNationalNumberTemplate.should.equal('xxx xxx xxxx')\r\n\t\tformatter.formatter.populatedNationalNumberTemplate.should.equal('xxx xxxx')\r\n\t\t// Has some national number digits, starts formatting the phone number using the template.\r\n\t\tformatter.input('213')\r\n\t\tformatter.formatter.populatedNationalNumberTemplate.should.equal('213 xxx xxxx')\r\n\t\tformatter.input('3734253')\r\n\t\tformatter.formatter.populatedNationalNumberTemplate.should.equal('213 373 4253')\r\n\t})\r\n\r\n\tit('should populate national number template (attempt to format complete number)', () => {\r\n\t\tconst formatter = new AsYouType('US')\r\n\t\tformatter.input('12133734253').should.equal('1 (213) 373-4253')\r\n\t\tformatter.formatter.template.should.equal('x (xxx) xxx-xxxx')\r\n\t\tformatter.formatter.populatedNationalNumberTemplate.should.equal('1 (213) 373-4253')\r\n\t})\r\n\r\n\tit('should parse and format phone numbers as you type', () => {\r\n\t\t// International number test\r\n\t\tnew AsYouType().input('+12133734').should.equal('+1 213 373 4')\r\n\t\t// Local number test\r\n\t\tnew AsYouType('US').input('2133734').should.equal('(213) 373-4')\r\n\r\n\t\t// US national number retains national prefix.\r\n\t\tnew AsYouType('US').input('12133734').should.equal('1 (213) 373-4')\r\n\r\n\t\t// US national number retains national prefix (full number).\r\n\t\tnew AsYouType('US').input('12133734253').should.equal('1 (213) 373-4253')\r\n\r\n\t\tlet formatter\r\n\r\n\t\t// // Should discard national prefix from a \"complete\" phone number.\r\n\t\t// new AsYouType('RU').input('8800555353').should.equal('880 055-53-53')\r\n\r\n\t\t// Shouldn't extract national prefix when inputting in international format.\r\n\t\tnew AsYouType('RU').input('+7800555353').should.equal('+7 800 555 35 3')\r\n\r\n\t\tnew AsYouType('CH').input('044-668-1').should.equal('044 668 1')\r\n\r\n\t\t// Test International phone number (international)\r\n\r\n\t\tformatter = new AsYouType()\r\n\r\n\t\t// formatter.valid.should.be.false\r\n\t\ttype(formatter.getCountry()).should.equal('undefined')\r\n\t\ttype(formatter.getCountryCallingCode()).should.equal('undefined')\r\n\t\tformatter.getTemplate().should.equal('')\r\n\r\n\t\tformatter.input('+').should.equal('+')\r\n\r\n\t\t// formatter.valid.should.be.false\r\n\t\ttype(formatter.getCountry()).should.equal('undefined')\r\n\t\ttype(formatter.getCountryCallingCode()).should.equal('undefined')\r\n\t\tformatter.getTemplate().should.equal('x')\r\n\r\n\t\tformatter.input('1').should.equal('+1')\r\n\r\n\t\t// formatter.valid.should.be.false\r\n\t\ttype(formatter.getCountry()).should.equal('undefined')\r\n\t\tformatter.getCountryCallingCode().should.equal('1')\r\n\t\tformatter.getTemplate().should.equal('xx')\r\n\r\n\t\tformatter.input('2').should.equal('+1 2')\r\n\t\tformatter.getTemplate().should.equal('xx x')\r\n\r\n\t\t// formatter.valid.should.be.false\r\n\t\ttype(formatter.getCountry()).should.equal('undefined')\r\n\r\n\t\tformatter.input('1').should.equal('+1 21')\r\n\t\tformatter.input('3').should.equal('+1 213')\r\n\t\tformatter.input(' ').should.equal('+1 213')\r\n\t\tformatter.input('3').should.equal('+1 213 3')\r\n\t\tformatter.input('3').should.equal('+1 213 33')\r\n\t\tformatter.input('3').should.equal('+1 213 333')\r\n\t\tformatter.input('4').should.equal('+1 213 333 4')\r\n\t\tformatter.input('4').should.equal('+1 213 333 44')\r\n\t\tformatter.input('4').should.equal('+1 213 333 444')\r\n\r\n\t\t// formatter.valid.should.be.false\r\n\t\ttype(formatter.getCountry()).should.equal('undefined')\r\n\r\n\t\tformatter.input('4').should.equal('+1 213 333 4444')\r\n\r\n\t\t// formatter.valid.should.be.true\r\n\t\tformatter.getCountry().should.equal('US')\r\n\t\t// This one below contains \"punctuation spaces\"\r\n\t\t// along with the regular spaces\r\n\t\tformatter.getTemplate().should.equal('xx xxx xxx xxxx')\r\n\r\n\t\tformatter.input('5').should.equal('+1 21333344445')\r\n\r\n\t\t// formatter.valid.should.be.false\r\n\t\texpect(formatter.getCountry()).to.be.undefined\r\n\t\tformatter.getCountryCallingCode().should.equal('1')\r\n\t\texpect(formatter.formatter.template).to.be.undefined\r\n\r\n\t\t// Check that clearing an international formatter\r\n\t\t// also clears country metadata.\r\n\r\n\t\tformatter.reset()\r\n\r\n\t\tformatter.input('+').should.equal('+')\r\n\t\tformatter.input('7').should.equal('+7')\r\n\t\tformatter.input('9').should.equal('+7 9')\r\n\t\tformatter.input('99 111 22 33').should.equal('+7 999 111 22 33')\r\n\r\n\t\t// Test Switzerland phone numbers\r\n\r\n\t\tformatter = new AsYouType('CH')\r\n\r\n\t\tformatter.input(' ').should.equal('')\r\n\t\tformatter.input('0').should.equal('0')\r\n\t\tformatter.input('4').should.equal('04')\r\n\t\tformatter.input(' ').should.equal('04')\r\n\t\tformatter.input('-').should.equal('04')\r\n\t\tformatter.input('4').should.equal('044')\r\n\t\tformatter.input('-').should.equal('044')\r\n\t\tformatter.input('6').should.equal('044 6')\r\n\t\tformatter.input('6').should.equal('044 66')\r\n\t\tformatter.input('8').should.equal('044 668')\r\n\t\tformatter.input('-').should.equal('044 668')\r\n\t\tformatter.input('1').should.equal('044 668 1')\r\n\t\tformatter.input('8').should.equal('044 668 18')\r\n\r\n\t\t// formatter.valid.should.be.false\r\n\t\tformatter.getCountry().should.equal('CH')\r\n\t\tformatter.formatter.template.should.equal('xxx xxx xx xx')\r\n\t\tformatter.getTemplate().should.equal('xxx xxx xx')\r\n\r\n\t\tformatter.input(' 00').should.equal('044 668 18 00')\r\n\r\n\t\t// formatter.valid.should.be.true\r\n\t\tformatter.getCountry().should.equal('CH')\r\n\t\tformatter.getTemplate().should.equal('xxx xxx xx xx')\r\n\r\n\t\tformatter.input('9').should.equal('04466818009')\r\n\r\n\t\t// formatter.valid.should.be.false\r\n\t\tformatter.getCountry().should.equal('CH')\r\n\t\texpect(formatter.formatter.template).to.be.undefined\r\n\r\n\t\t// Kazakhstan (non-main country for +7 country phone code)\r\n\r\n\t\tformatter = new AsYouType()\r\n\r\n\t\tformatter.input('+77172580659')\r\n\t\tformatter.getCountry().should.equal('KZ')\r\n\r\n\t\t// Brazil\r\n\r\n\t\tformatter = new AsYouType('BR')\r\n\t\tformatter.input('11987654321').should.equal('(11) 98765-4321')\r\n\r\n\t\t// UK (Jersey) (non-main country for +44 country phone code)\r\n\r\n\t\tformatter = new AsYouType()\r\n\t\tformatter.input('+447700300000').should.equal('+44 7700 300000')\r\n\t\tformatter.getTemplate().should.equal('xxx xxxx xxxxxx')\r\n\t\tformatter.getCountry().should.equal('JE')\r\n\r\n\t\t// Braces must be part of the template.\r\n\t\tformatter = new AsYouType('RU')\r\n\t\tformatter.input('88005553535').should.equal('8 (800) 555-35-35')\r\n\t\tformatter.getTemplate().should.equal('x (xxx) xxx-xx-xx')\r\n\r\n\t\t// Test Russian phone numbers\r\n\t\t// (with optional national prefix `8`)\r\n\r\n\t\tformatter = new AsYouType('RU')\r\n\r\n\t\tformatter.input('8').should.equal('8')\r\n\t\tformatter.input('9').should.equal('8 9')\r\n\t\tformatter.input('9').should.equal('8 99')\r\n\t\tformatter.input('9').should.equal('8 (999)')\r\n\t\tformatter.input('-').should.equal('8 (999)')\r\n\t\tformatter.input('1234').should.equal('8 (999) 123-4')\r\n\t\tformatter.input('567').should.equal('8 (999) 123-45-67')\r\n\t\tformatter.input('8').should.equal('899912345678')\r\n\r\n\t\t// Shouldn't strip national prefix if it is optional\r\n\t\t// and if it's a valid phone number (international).\r\n\t\tformatter = new AsYouType('RU')\r\n\t\t// formatter.input('8005553535').should.equal('(800) 555-35-35')\r\n\t\tformatter.input('+78005553535').should.equal('+7 800 555 35 35')\r\n\t\tformatter.getNationalNumber().should.equal('8005553535')\r\n\r\n\t\t// Check that clearing an national formatter:\r\n\t\t// * doesn't clear country metadata\r\n\t\t// * clears all other things\r\n\r\n\t\tformatter.reset()\r\n\r\n\t\tformatter.input('8').should.equal('8')\r\n\t\tformatter.input('9').should.equal('8 9')\r\n\t\tformatter.input('9').should.equal('8 99')\r\n\t\tformatter.input('9').should.equal('8 (999)')\r\n\t\tformatter.input('-').should.equal('8 (999)')\r\n\t\tformatter.input('1234').should.equal('8 (999) 123-4')\r\n\t\tformatter.input('567').should.equal('8 (999) 123-45-67')\r\n\t\tformatter.input('8').should.equal('899912345678')\r\n\r\n\t\t// National prefix should not be prepended\r\n\t\t// when formatting local NANPA phone numbers.\r\n\t\tnew AsYouType('US').input('1').should.equal('1')\r\n\t\tnew AsYouType('US').input('12').should.equal('1 2')\r\n\t\tnew AsYouType('US').input('123').should.equal('1 23')\r\n\r\n\t\t// Bulgaria\r\n\t\t// (should not prepend national prefix `0`)\r\n\t\tnew AsYouType('BG').input('111 222 3').should.equal('1112223')\r\n\r\n\t\t// Deutchland\r\n\t\tnew AsYouType().input('+4915539898001').should.equal('+49 15539 898001')\r\n\r\n\t\t// KZ detection\r\n\t\tformatter = new AsYouType()\r\n\t\tformatter.input('+7 702 211 1111')\r\n\t\tformatter.getCountry().should.equal('KZ')\r\n\t\t// formatter.valid.should.equal(true)\r\n\r\n\t\t// New Zealand formatting fix (issue #89)\r\n\t\tnew AsYouType('NZ').input('0212').should.equal('021 2')\r\n\r\n\t\t// South Korea\r\n\t\tformatter = new AsYouType()\r\n\t\tformatter.input('+82111111111').should.equal('+82 11 111 1111')\r\n\t\tformatter.getTemplate().should.equal('xxx xx xxx xxxx')\r\n\t})\r\n\r\n\tit('should filter out formats that require a national prefix and no national prefix has been input', () => {\r\n\t\t// Afghanistan.\r\n\t\tconst formatter = new AsYouType('AF')\r\n\r\n\t\t// No national prefix, and national prefix is required in the format.\r\n\t\t// (not `\"national_prefix_is_optional_when_formatting\": true`)\r\n\t\tformatter.input('44444444').should.equal('44444444')\r\n\t\texpect(formatter.formatter.template).to.be.undefined\r\n\r\n\t\t// With national prefix\r\n\t\tformatter.reset().input('044444444').should.equal('044 444 444')\r\n\t\tformatter.formatter.template.should.equal('xxx xxx xxxx')\r\n\t})\r\n\r\n\tit('should work when a digit is not a national prefix but a part of a valid national number', () => {\r\n\t\t// In Russia, `8` could be both a valid national prefix\r\n\t\t// and a part of a valid national number.\r\n\t\tconst formatter = new AsYouType('RU')\r\n\t\t// The formatter could try both variants:\r\n\t\t// with extracting national prefix\r\n\t\t// and without extracting it,\r\n\t\t// and then choose whichever way has `this.matchingFormats`.\r\n\t\t// Or there could be two instances of the formatter:\r\n\t\t// one that extracts national prefix and one that doesn't,\r\n\t\t// and then the one that has `this.matchingFormats` would be\r\n\t\t// used to format the phone number.\r\n\t\t// Something like an option `extractNationalPrefix: false`\r\n\t\t// and creating `this.withNationalPrefixFormatter = new AsYouType(this.defaultCountry || this.defaultCallingCode, { metadata, extractNationalPrefix: false })`\r\n\t\t// and something like `this.withNationalPrefixFormatter.input(nextDigits)` in `input(nextDigits)`.\r\n\t\t// But, for this specific case, it's not required:\r\n\t\t// in Russia, people are used to inputting `800` numbers with national prefix `8`:\r\n\t\t// `8 800 555 35 35`.\r\n\t\t// formatter.input('8005553535').should.equal('(800) 555-35-35')\r\n\t\tformatter.input('8005553535').should.equal('8005553535')\r\n\t\tformatter.reset()\r\n\t\tformatter.input('+78005553535').should.equal('+7 800 555 35 35')\r\n\t})\r\n\r\n\tit('should match formats that require a national prefix and no national prefix has been input (national prefix is mandatory for a format)', () => {\r\n\t\tconst formatter = new AsYouType('FR')\r\n\t\tformatter.input('612345678').should.equal('612345678')\r\n\t\tformatter.reset()\r\n\t\tformatter.input('0612345678').should.equal('06 12 34 56 78')\r\n\t})\r\n\r\n\tit('should match formats that require a national prefix and no national prefix has been input (national prefix is not mandatory for a format)', () => {\r\n\t\tconst formatter = new AsYouType('RU')\r\n\t\t// Without national prefix.\r\n\t\tformatter.input('9991234567').should.equal('999 123-45-67')\r\n\t\tformatter.reset()\r\n\t\t// With national prefix.\r\n\t\tformatter.input('89991234567').should.equal('8 (999) 123-45-67')\r\n\t})\r\n\r\n\tit('should not use `national_prefix_formatting_rule` when formatting international phone numbers', () => {\r\n\t\t// Brazil.\r\n\t\t// `national_prefix_formatting_rule` is `($1)`.\r\n\t\t// Should not add braces around `12` when being input in international format.\r\n\t\tnew AsYouType().input('+55123456789').should.equal('+55 12 3456 789')\r\n\t\tnew AsYouType('BR').input('+55123456789').should.equal('+55 12 3456 789')\r\n\t\tnew AsYouType('BR').input('123456789').should.equal('(12) 3456-789')\r\n\t})\r\n\r\n\tit('should support incorrectly entered international phone numbers (with a national prefix)', () => {\r\n\t\tlet formatter\r\n\r\n\t\tformatter = new AsYouType()\r\n\t\tformatter.input('+1 1 877 215 5230').should.equal('+1 1 877 215 5230')\r\n\t\t// formatter.input('+1 1 877 215 5230').should.equal('+1 1 8772155230')\r\n\t\tformatter.getNationalNumber().should.equal('8772155230')\r\n\r\n\t\t// They've added another number format that has `8` leading digit\r\n\t\t// and 14 digits. Maybe it's something related to Kazakhstan.\r\n\t\t// formatter = new AsYouType()\r\n\t\t// formatter.input('+78800555353').should.equal('+7 880 055 53 53')\r\n\t\t// formatter.input('5').should.equal('+7 8 800 555 35 35')\r\n\t\t// formatter.getNationalNumber().should.equal('8005553535')\r\n\t})\r\n\r\n\tit('should return a partial template for current value', () => {\r\n\t\tconst asYouType = new AsYouType('US')\r\n\r\n\t\tasYouType.input('').should.equal('')\r\n\t\tasYouType.getTemplate().should.equal('')\r\n\r\n\t\tasYouType.input('2').should.equal('2')\r\n\t\t// asYouType.getTemplate().should.equal('x')\r\n\t\t// Doesn't format for a single digit.\r\n\t\tasYouType.getTemplate().should.equal('x')\r\n\r\n\t\tasYouType.input('1').should.equal('21')\r\n\t\tasYouType.getTemplate().should.equal('xx')\r\n\r\n\t\tasYouType.input('3').should.equal('(213)')\r\n\t\tasYouType.getTemplate().should.equal('(xxx)')\r\n\t})\r\n\r\n\tit(`should fall back to the default country`, () => {\r\n\t\tconst formatter = new AsYouType('RU')\r\n\r\n\t\tformatter.input('8').should.equal('8')\r\n\t\tformatter.input('9').should.equal('8 9')\r\n\t\tformatter.input('9').should.equal('8 99')\r\n\t\tformatter.input('9').should.equal('8 (999)')\r\n\r\n\t\t// formatter.valid.should.be.false\r\n\t\tformatter.formatter.template.should.equal('x (xxx) xxx-xx-xx')\r\n\t\tformatter.getCountry().should.equal('RU')\r\n\t\t// formatter.getCountryCallingCode().should.equal('7')\r\n\r\n\t\tformatter.input('000000000000').should.equal('8999000000000000')\r\n\r\n\t\t// formatter.valid.should.be.false\r\n\t\texpect(formatter.formatter.template).to.be.undefined\r\n\t\tformatter.getCountry().should.equal('RU')\r\n\t\t// formatter.getCountryCallingCode().should.equal('7')\r\n\r\n\t\tformatter.reset()\r\n\r\n\t\t// formatter.valid.should.be.false\r\n\t\texpect(formatter.formatter.template).to.be.undefined\r\n\t\texpect(formatter.getCountry()).to.be.undefined\r\n\t\t// formatter.getCountryCallingCode().should.equal('7')\r\n\r\n\t\tformatter.input('+1-213-373-4253').should.equal('+1 213 373 4253')\r\n\r\n\t\t// formatter.valid.should.be.true\r\n\t\tformatter.getTemplate().should.equal('xx xxx xxx xxxx')\r\n\t\tformatter.getCountry().should.equal('US')\r\n\t\tformatter.getCountryCallingCode().should.equal('1')\r\n\t})\r\n\r\n\tit('should work in edge cases', () => {\r\n\t\tlet formatter\r\n\t\tlet thrower\r\n\r\n\t\t// No metadata\r\n\t\tthrower = () => new AsYouType_('RU')\r\n\t\tthrower.should.throw('`metadata` argument not passed')\r\n\r\n\t\t// Second '+' sign\r\n\r\n\t\tformatter = new AsYouType('RU')\r\n\r\n\t\tformatter.input('+').should.equal('+')\r\n\t\tformatter.input('7').should.equal('+7')\r\n\t\tformatter.input('+').should.equal('+7')\r\n\r\n\t\t// Out-of-position '+' sign\r\n\r\n\t\tformatter = new AsYouType('RU')\r\n\r\n\t\tformatter.input('8').should.equal('8')\r\n\t\tformatter.input('+').should.equal('8')\r\n\r\n\t\t// No format matched\r\n\r\n\t\tformatter = new AsYouType('RU')\r\n\r\n\t\tformatter.input('88005553535').should.equal('8 (800) 555-35-35')\r\n\t\tformatter.input('0').should.equal('880055535350')\r\n\r\n\t\t// Invalid country phone code\r\n\r\n\t\tformatter = new AsYouType()\r\n\r\n\t\tformatter.input('+0123').should.equal('+0123')\r\n\r\n\t\t// No country specified and not an international number\r\n\r\n\t\tformatter = new AsYouType()\r\n\r\n\t\tformatter.input('88005553535').should.equal('88005553535')\r\n\r\n\t\t// Extract national prefix when no `national_prefix` is set\r\n\r\n\t\tformatter = new AsYouType('AD')\r\n\r\n\t\tformatter.input('155555').should.equal('155 555')\r\n\r\n\t\t// Typing nonsense\r\n\r\n\t\tformatter = new AsYouType('RU')\r\n\r\n\t\tformatter.input('+1abc2').should.equal('+1')\r\n\r\n\t\t// Should reset default country when explicitly\r\n\t\t// typing in an international phone number\r\n\r\n\t\tformatter = new AsYouType('RU')\r\n\r\n\t\tformatter.input('+')\r\n\t\ttype(formatter.getCountry()).should.equal('undefined')\r\n\t\ttype(formatter.getCountryCallingCode()).should.equal('undefined')\r\n\r\n\t\t// Country not inferrable from the phone number,\r\n\t\t// while the phone number itself can already be formatted \"completely\".\r\n\r\n\t\tformatter = new AsYouType()\r\n\r\n\t\tformatter.input('+12223333333')\r\n\t\ttype(formatter.getCountry()).should.equal('undefined')\r\n\t\tformatter.getCountryCallingCode().should.equal('1')\r\n\r\n\t\t// Reset a chosen format when it no longer applies given the new leading digits.\r\n\t\t// If Google changes metadata for England then this test might not cover the case.\r\n\t\tformatter = new AsYouType('GB')\r\n\t\tformatter.input('0845').should.equal('0845')\r\n\t\t// New leading digits don't match the format previously chosen.\r\n\t\t// Reset the format.\r\n\t\tformatter.input('0').should.equal('0845 0')\r\n\t})\r\n\r\n\tit('should choose between matching formats based on the absence or presence of a national prefix', () => {\r\n\t\t// The first matching format:\r\n\t\t// {\r\n\t\t// \"pattern\": \"(\\\\d{2})(\\\\d{5,6})\",\r\n\t\t// \"leading_digits_patterns\": [\r\n\t\t// \"(?:10|2[0-57-9])[19]\",\r\n\t\t// \"(?:10|2[0-57-9])(?:10|9[56])\",\r\n\t\t// \"(?:10|2[0-57-9])(?:100|9[56])\"\r\n\t\t// ],\r\n\t\t// \"national_prefix_formatting_rule\": \"0$1\",\r\n\t\t// \"format\": \"$1 $2\",\r\n\t\t// \"domestic_carrier_code_formatting_rule\": \"$CC $FG\"\r\n\t\t// }\r\n\t\t//\r\n\t\t// The second matching format:\r\n\t\t// {\r\n\t\t// \"pattern\": \"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\r\n\t\t// \"leading_digits_patterns\": [\r\n\t\t// \"10|2(?:[02-57-9]|1[1-9])\",\r\n\t\t// \"10|2(?:[02-57-9]|1[1-9])\",\r\n\t\t// \"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"\r\n\t\t// ],\r\n\t\t// \"national_prefix_formatting_rule\": \"0$1\",\r\n\t\t// \"national_prefix_is_optional_when_formatting\": true,\r\n\t\t// \"format\": \"$1 $2 $3\",\r\n\t\t// \"domestic_carrier_code_formatting_rule\": \"$CC $FG\"\r\n\t\t// }\r\n\t\t//\r\n\t\tconst formatter = new AsYouType('CN')\r\n\t\t// National prefix has been input.\r\n\t\t// Chooses the first format.\r\n\t\tformatter.input('01010000').should.equal('010 10000')\r\n\t\tformatter.reset()\r\n\t\t// No national prefix has been input,\r\n\t\t// and `national_prefix_for_parsing` not matched.\r\n\t\t// The first format won't match, because it doesn't have\r\n\t\t// `\"national_prefix_is_optional_when_formatting\": true`.\r\n\t\t// The second format will match, because it does have\r\n\t\t// `\"national_prefix_is_optional_when_formatting\": true`.\r\n\t\tformatter.input('1010000').should.equal('10 1000 0')\r\n\t})\r\n\r\n\tit('should not accept phone number extensions', () => {\r\n\t\tnew AsYouType().input('+1-213-373-4253 ext. 123').should.equal('+1 213 373 4253')\r\n\t})\r\n\r\n\tit('should parse non-European digits', () => {\r\n\t\tnew AsYouType().input('+١٢١٢٢٣٢٣٢٣٢').should.equal('+1 212 232 3232')\r\n\t})\r\n\r\n\tit('should return a PhoneNumber instance', () => {\r\n\t\tconst formatter = new AsYouType('BR')\r\n\r\n\t\t// No country calling code.\r\n\t\texpect(formatter.getNumber()).to.be.undefined\r\n\r\n\t\tformatter.input('+1')\r\n\t\t// No national number digits.\r\n\t\texpect(formatter.getNumber()).to.be.undefined\r\n\r\n\t\tformatter.input('213-373-4253')\r\n\r\n\t\tlet phoneNumber = formatter.getNumber()\r\n\t\tphoneNumber.country.should.equal('US')\r\n\t\tphoneNumber.countryCallingCode.should.equal('1')\r\n\t\tphoneNumber.number.should.equal('+12133734253')\r\n\t\tphoneNumber.nationalNumber.should.equal('2133734253')\r\n\r\n\t\tformatter.reset()\r\n\t\tformatter.input('+1-113-373-4253')\r\n\r\n\t\tphoneNumber = formatter.getNumber()\r\n\t\texpect(phoneNumber.country).to.be.undefined\r\n\t\tphoneNumber.countryCallingCode.should.equal('1')\r\n\r\n\t\t// An incorrect NANPA international phone number.\r\n\t\t// (contains national prefix in an international phone number)\r\n\r\n\t\tformatter.reset()\r\n\t\tformatter.input('+1-1')\r\n\r\n\t\t// Before leading digits < 3 matching was implemented:\r\n\t\t//\r\n\t\t// phoneNumber = formatter.getNumber()\r\n\t\t// expect(phoneNumber).to.not.be.undefined\r\n\t\t//\r\n\t\t// formatter.input('1')\r\n\t\t// phoneNumber = formatter.getNumber()\r\n\t\t// expect(phoneNumber.country).to.be.undefined\r\n\t\t// phoneNumber.countryCallingCode.should.equal('1')\r\n\t\t// phoneNumber.number.should.equal('+111')\r\n\r\n\t\t// After leading digits < 3 matching was implemented:\r\n\t\t//\r\n\t\tphoneNumber = formatter.getNumber()\r\n\t\texpect(phoneNumber).to.be.undefined\r\n\t\t//\r\n\t\tformatter.input('1')\r\n\t\tphoneNumber = formatter.getNumber()\r\n\t\texpect(phoneNumber.country).to.be.undefined\r\n\t\tphoneNumber.countryCallingCode.should.equal('1')\r\n\t\tphoneNumber.number.should.equal('+11')\r\n\t})\r\n\r\n\tit('should work with countries that add digits to national (significant) number', () => {\r\n\t\t// When formatting Argentinian mobile numbers in international format,\r\n\t\t// a `9` is prepended, when compared to national format.\r\n\t\tconst asYouType = new AsYouType('AR')\r\n\t\tasYouType.input('+5493435551212').should.equal('+54 9 3435 55 1212')\r\n\t\tasYouType.reset()\r\n\t\t// Digits shouldn't be changed when formatting in national format.\r\n\t\t// (no `9` is prepended).\r\n\t\t// First parses national (significant) number by prepending `9` to it\r\n\t\t// and stripping `15` from it.\r\n\t\t// Then uses `$2 15-$3-$4` format that strips the leading `9`\r\n\t\t// and adds `15`.\r\n\t\tasYouType.input('0343515551212').should.equal('03435 15-55-1212')\r\n\t})\r\n\r\n\tit('should return non-formatted phone number when no format matches and national (significant) number has digits added', () => {\r\n\t\t// When formatting Argentinian mobile numbers in international format,\r\n\t\t// a `9` is prepended, when compared to national format.\r\n\t\tconst asYouType = new AsYouType('AR')\r\n\t\t// Digits shouldn't be changed when formatting in national format.\r\n\t\t// (no `9` is prepended).\r\n\t\t// First parses national (significant) number by prepending `9` to it\r\n\t\t// and stripping `15` from it.\r\n\t\t// Then uses `$2 15-$3-$4` format that strips the leading `9`\r\n\t\t// and adds `15`.\r\n\t\t// `this.nationalSignificantNumberMatchesInput` is `false` in this case,\r\n\t\t// so `getNonFormattedNumber()` returns `getFullNumber(getNationalDigits())`.\r\n\t\tasYouType.input('0343515551212999').should.equal('0343515551212999')\r\n\t})\r\n\r\n\tit('should format Argentina numbers (starting with 011) (digit by digit)', () => {\r\n\t\t// Inputting a number digit-by-digit and as a whole a two different cases\r\n\t\t// in case of this library compared to Google's `libphonenumber`\r\n\t\t// that always inputs a number digit-by-digit.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/23\r\n\t\t// nextDigits 0111523456789\r\n\t\t// nationalNumber 91123456789\r\n\t\tconst formatter = new AsYouType('AR')\r\n\t\tformatter.input('0').should.equal('0')\r\n\t\tformatter.getTemplate().should.equal('x')\r\n\t\tformatter.input('1').should.equal('01')\r\n\t\tformatter.getTemplate().should.equal('xx')\r\n\t\tformatter.input('1').should.equal('011')\r\n\t\tformatter.getTemplate().should.equal('xxx')\r\n\t\tformatter.input('1').should.equal('011 1')\r\n\t\tformatter.getTemplate().should.equal('xxx x')\r\n\t\tformatter.input('5').should.equal('011 15')\r\n\t\tformatter.getTemplate().should.equal('xxx xx')\r\n\t\tformatter.input('2').should.equal('011 152')\r\n\t\tformatter.getTemplate().should.equal('xxx xxx')\r\n\t\tformatter.input('3').should.equal('011 1523')\r\n\t\tformatter.getTemplate().should.equal('xxx xxxx')\r\n\t\tformatter.input('4').should.equal('011 1523-4')\r\n\t\tformatter.getTemplate().should.equal('xxx xxxx-x')\r\n\t\tformatter.input('5').should.equal('011 1523-45')\r\n\t\tformatter.getTemplate().should.equal('xxx xxxx-xx')\r\n\t\tformatter.input('6').should.equal('011 1523-456')\r\n\t\tformatter.getTemplate().should.equal('xxx xxxx-xxx')\r\n\t\tformatter.input('7').should.equal('011 1523-4567')\r\n\t\tformatter.getTemplate().should.equal('xxx xxxx-xxxx')\r\n\t\tformatter.input('8').should.equal('011152345678')\r\n\t\tformatter.getTemplate().should.equal('xxxxxxxxxxxx')\r\n\t\tformatter.input('9').should.equal('011 15-2345-6789')\r\n\t\tformatter.getTemplate().should.equal('xxx xx-xxxx-xxxx')\r\n\t\t// Private property (not public API).\r\n\t\tformatter.state.nationalSignificantNumber.should.equal('91123456789')\r\n\t\t// Private property (not public API).\r\n\t\t// `formatter.digits` is not always `formatter.nationalPrefix`\r\n\t\t// plus `formatter.nationalNumberDigits`.\r\n\t\tformatter.state.nationalPrefix.should.equal('0')\r\n\t\tformatter.isPossible().should.equal(true)\r\n\t\tformatter.isValid().should.equal(true)\r\n\t})\r\n\r\n\tit('should format Argentina numbers (starting with 011)', () => {\r\n\t\t// Inputting a number digit-by-digit and as a whole a two different cases\r\n\t\t// in case of this library compared to Google's `libphonenumber`\r\n\t\t// that always inputs a number digit-by-digit.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/23\r\n\t\t// nextDigits 0111523456789\r\n\t\t// nationalNumber 91123456789\r\n\t\tconst formatter = new AsYouType('AR')\r\n\t\tformatter.input('0111523456789').should.equal('011 15-2345-6789')\r\n\t\t// Private property (not public API).\r\n\t\tformatter.state.nationalSignificantNumber.should.equal('91123456789')\r\n\t\t// Private property (not public API).\r\n\t\t// `formatter.digits` is not always `formatter.nationalPrefix`\r\n\t\t// plus `formatter.nationalNumberDigits`.\r\n\t\texpect(formatter.state.nationalPrefix).to.equal('0')\r\n\t\t// expect(formatter.nationalPrefix).to.be.undefined\r\n\t\tformatter.isPossible().should.equal(true)\r\n\t\tformatter.isValid().should.equal(true)\r\n\t})\r\n\r\n\t// https://gitlab.com/catamphetamine/react-phone-number-input/-/issues/93\r\n\tit('should format Indonesian numbers', () => {\r\n\t\tconst formatter = new AsYouType('ID')\r\n\t\tformatter.getChars().should.equal('')\r\n\t\t// Before leading digits < 3 matching was implemented:\r\n\t\t// formatter.input('081').should.equal('(081)')\r\n\t\t// After leading digits < 3 matching was implemented:\r\n\t\tformatter.input('081').should.equal('081')\r\n\t})\r\n\r\n\tit('should prepend `complexPrefixBeforeNationalSignificantNumber` (not a complete number)', () => {\r\n\t\t// A country having `national_prefix_for_parsing` with a \"capturing group\".\r\n\t\t// National prefix is either not used in a format or is optional.\r\n\t\t// Input phone number without a national prefix.\r\n\t\tconst formatter = new AsYouType('AU')\r\n\t\tformatter.input('1831130345678').should.equal('1831 1303 456 78')\r\n\t\t// Private property (not public API).\r\n\t\tformatter.state.nationalSignificantNumber.should.equal('130345678')\r\n\t\t// Private property (not public API).\r\n\t\t// `formatter.digits` is not always `formatter.nationalPrefix`\r\n\t\t// plus `formatter.nationalNumberDigits`.\r\n\t\texpect(formatter.state.nationalPrefix).to.be.undefined\r\n\t\tformatter.state.complexPrefixBeforeNationalSignificantNumber.should.equal('1831')\r\n\t})\r\n\r\n\tit('should prepend `complexPrefixBeforeNationalSignificantNumber` (complete number)', () => {\r\n\t\t// A country having `national_prefix_for_parsing` with a \"capturing group\".\r\n\t\t// National prefix is either not used in a format or is optional.\r\n\t\t// Input phone number without a national prefix.\r\n\t\tconst formatter = new AsYouType('AU')\r\n\t\tformatter.input('18311303456789').should.equal('1831 1303 456 789')\r\n\t\t// Private property (not public API).\r\n\t\tformatter.state.nationalSignificantNumber.should.equal('1303456789')\r\n\t\t// Private property (not public API).\r\n\t\t// `formatter.digits` is not always `formatter.nationalPrefix`\r\n\t\t// plus `formatter.nationalNumberDigits`.\r\n\t\texpect(formatter.state.nationalPrefix).to.be.undefined\r\n\t\tformatter.state.complexPrefixBeforeNationalSignificantNumber.should.equal('1831')\r\n\t})\r\n\r\n\tit('should work with Mexico numbers', () => {\r\n\t\tconst asYouType = new AsYouType('MX')\r\n\t\t// Fixed line.\r\n\t\tasYouType.input('+52(449)978-000').should.equal('+52 449 978 000')\r\n\t\tasYouType.input('1').should.equal('+52 449 978 0001')\r\n\t\tasYouType.reset()\r\n\t\tasYouType.input('01449978000').should.equal('01449 978 000')\r\n\t\tasYouType.getTemplate().should.equal('xxxxx xxx xxx')\r\n\t\tasYouType.input('1').should.equal('01449 978 0001')\r\n\t\tasYouType.getTemplate().should.equal('xxxxx xxx xxxx')\r\n\t\tasYouType.reset()\r\n\t\tasYouType.input('(449)978-000').should.equal('449 978 000')\r\n\t\tasYouType.getTemplate().should.equal('xxx xxx xxx')\r\n\t\tasYouType.input('1').should.equal('449 978 0001')\r\n\t\tasYouType.getTemplate().should.equal('xxx xxx xxxx')\r\n\t\t// Mobile.\r\n\t\t// `1` is prepended before area code to mobile numbers in international format.\r\n\t\tasYouType.reset()\r\n\t\tasYouType.input('+521331234567').should.equal('+52 133 1234 567')\r\n\t\tasYouType.getTemplate().should.equal('xxx xxx xxxx xxx')\r\n\t\t// Google's `libphonenumber` seems to not able to format this type of number.\r\n\t\t// https://issuetracker.google.com/issues/147938979\r\n\t\tasYouType.input('8').should.equal('+52 133 1234 5678')\r\n\t\tasYouType.getTemplate().should.equal('xxx xxx xxxx xxxx')\r\n\t\tasYouType.reset()\r\n\t\tasYouType.input('+52331234567').should.equal('+52 33 1234 567')\r\n\t\tasYouType.input('8').should.equal('+52 33 1234 5678')\r\n\t\tasYouType.reset()\r\n\t\tasYouType.input('044331234567').should.equal('04433 1234 567')\r\n\t\tasYouType.input('8').should.equal('04433 1234 5678')\r\n\t\tasYouType.reset()\r\n\t\tasYouType.input('045331234567').should.equal('04533 1234 567')\r\n\t\tasYouType.input('8').should.equal('04533 1234 5678')\r\n\t})\r\n\r\n\tit('should just prepend national prefix if national_prefix_formatting_rule does not produce a suitable number', () => {\r\n\t\t// \"national_prefix\": \"8\"\r\n\t\t// \"national_prefix_for_parsing\": \"0|80?\"\r\n\t\tconst formatter = new AsYouType('BY')\r\n\t\t// \"national_prefix_formatting_rule\": \"8 $1\"\r\n\t\t// That `national_prefix_formatting_rule` isn't used\r\n\t\t// because the user didn't input national prefix `8`.\r\n\t\tformatter.input('0800123').should.equal('0 800 123')\r\n\t\tformatter.getTemplate().should.equal('x xxx xxx')\r\n\t})\r\n\r\n\tit('should not duplicate area code for certain countries', () => {\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/318\r\n\t\tconst asYouType = new AsYouType('VI')\r\n\t\t// Even though `parse(\"3406934\")` would return a\r\n\t\t// \"(340) 340-6934\" national number, still\r\n\t\t// \"As You Type\" formatter should leave it as \"(340) 6934\".\r\n\t\tasYouType.input('340693').should.equal('(340) 693')\r\n\t\tasYouType.input('4').should.equal('(340) 693-4')\r\n\t\tasYouType.input('123').should.equal('(340) 693-4123')\r\n\t})\r\n\r\n\tit('shouldn\\'t throw when passed a non-existent default country', () => {\r\n\t\tnew AsYouType('XX').input('+78005553535').should.equal('+7 800 555 35 35')\r\n\t\tnew AsYouType('XX').input('88005553535').should.equal('88005553535')\r\n\t})\r\n\r\n\tit('should parse carrier codes', () => {\r\n\t\tconst formatter = new AsYouType('BR')\r\n\r\n\t\tformatter.input('0 15 21 5555-5555')\r\n\t\tlet phoneNumber = formatter.getNumber()\r\n\t\tphoneNumber.carrierCode.should.equal('15')\r\n\r\n\t\tformatter.reset()\r\n\t\tformatter.input('+1-213-373-4253')\r\n\t\tphoneNumber = formatter.getNumber()\r\n\t\texpect(phoneNumber.carrierCode).to.be.undefined\r\n\t})\r\n\r\n\tit('should format when default country calling code is configured', () => {\r\n\t\tconst formatter = new AsYouType({ defaultCallingCode: '7' })\r\n\t\tformatter.input('88005553535').should.equal('8 (800) 555-35-35')\r\n\t\tformatter.getNumber().countryCallingCode.should.equal('7')\r\n\t\tformatter.getNumber().country.should.equal('RU')\r\n\t})\r\n\r\n\tit('shouldn\\'t return PhoneNumber if country calling code hasn\\'t been input yet', () => {\r\n\t\tconst formatter = new AsYouType()\r\n\t\tformatter.input('+80')\r\n\t\texpect(formatter.getNumber()).to.be.undefined\r\n\t})\r\n\r\n\tit('should format non-geographic numbering plan phone numbers', () => {\r\n\t\tconst formatter = new AsYouType()\r\n\t\tformatter.input('+').should.equal('+')\r\n\t\tformatter.input('8').should.equal('+8')\r\n\t\tformatter.input('7').should.equal('+87')\r\n\t\texpect(formatter.getCountry()).to.be.undefined\r\n\t\tformatter.input('0').should.equal('+870')\r\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\tformatter.getCountry().should.equal('001')\r\n\t\t} else {\r\n\t\t\texpect(formatter.getCountry()).to.be.undefined\r\n\t\t}\r\n\t\tformatter.input('7').should.equal('+870 7')\r\n\t\tformatter.input('7').should.equal('+870 77')\r\n\t\tformatter.input('3').should.equal('+870 773')\r\n\t\tformatter.input('1').should.equal('+870 773 1')\r\n\t\tformatter.input('1').should.equal('+870 773 11')\r\n\t\tformatter.input('1').should.equal('+870 773 111')\r\n\t\tformatter.input('6').should.equal('+870 773 111 6')\r\n\t\tformatter.input('3').should.equal('+870 773 111 63')\r\n\t\tformatter.input('2').should.equal('+870 773 111 632')\r\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\tformatter.getNumber().country.should.equal('001')\r\n\t\t} else {\r\n\t\t\texpect(formatter.getCountry()).to.be.undefined\r\n\t\t}\r\n\t\tformatter.getNumber().countryCallingCode.should.equal('870')\r\n\t})\r\n\r\n\tit('should format non-geographic numbering plan phone numbers (default country calling code)', () => {\r\n\t\tconst formatter = new AsYouType({ defaultCallingCode: '870' })\r\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\tformatter.getNumber().country.should.equal('001')\r\n\t\t} else {\r\n\t\t\texpect(formatter.getCountry()).to.be.undefined\r\n\t\t}\r\n\t\tformatter.input('7').should.equal('7')\r\n\t\tformatter.input('7').should.equal('77')\r\n\t\tformatter.input('3').should.equal('773')\r\n\t\tformatter.input('1').should.equal('773 1')\r\n\t\tformatter.input('1').should.equal('773 11')\r\n\t\tformatter.input('1').should.equal('773 111')\r\n\t\tformatter.input('6').should.equal('773 111 6')\r\n\t\tformatter.input('3').should.equal('773 111 63')\r\n\t\tformatter.input('2').should.equal('773 111 632')\r\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\tformatter.getNumber().country.should.equal('001')\r\n\t\t} else {\r\n\t\t\texpect(formatter.getCountry()).to.be.undefined\r\n\t\t}\r\n\t\tformatter.getNumber().countryCallingCode.should.equal('870')\r\n\t})\r\n\r\n\tit('should not format non-geographic numbering plan phone numbers (default country 001)', () => {\r\n\t\tconst formatter = new AsYouType('001')\r\n\t\texpect(formatter.defaultCountry).to.be.undefined\r\n\t\texpect(formatter.defaultCallingCode).to.be.undefined\r\n\t\tformatter.input('7').should.equal('7')\r\n\t\tformatter.input('7').should.equal('77')\r\n\t\tformatter.input('3').should.equal('773')\r\n\t\tformatter.input('1').should.equal('7731')\r\n\t\tformatter.input('1').should.equal('77311')\r\n\t\tformatter.input('1').should.equal('773111')\r\n\t\tformatter.input('6').should.equal('7731116')\r\n\t\tformatter.input('3').should.equal('77311163')\r\n\t\tformatter.input('2').should.equal('773111632')\r\n\t\texpect(formatter.getCountry()).to.be.undefined\r\n\t\texpect(formatter.getNumber()).to.be.undefined\r\n\t})\r\n\r\n\tit('should return PhoneNumber (should strip national prefix `1` in E.164 value)', () => {\r\n\t\tconst formatter = new AsYouType('RU')\r\n\t\tformatter.input('+1111')\r\n\t\tformatter.getNumber().number.should.equal('+111')\r\n\t})\r\n\r\n\tit('should return PhoneNumber with autocorrected international numbers without leading +', () => {\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/316\r\n\t\tconst formatter = new AsYouType('FR')\r\n\t\tformatter.input('33612902554').should.equal('33 6 12 90 25 54')\r\n\t\tformatter.getNumber().country.should.equal('FR')\r\n\t\tformatter.getNumber().nationalNumber.should.equal('612902554')\r\n\t\tformatter.getNumber().number.should.equal('+33612902554')\r\n\t\t// Should also strip national prefix.\r\n\t\tformatter.reset()\r\n\t\tformatter.input('330612902554').should.equal('33 06 12 90 25 54')\r\n\t\tformatter.getNumber().country.should.equal('FR')\r\n\t\tformatter.getNumber().nationalNumber.should.equal('612902554')\r\n\t\tformatter.getNumber().number.should.equal('+33612902554')\r\n\t\t// On second thought, this \"prepend default area code\" feature won't be added,\r\n\t\t// because when a user selects \"British Virgin Islands\" and inputs\r\n\t\t// \"2291234\", then they see \"(229) 123-4\" which clearly indicates that\r\n\t\t// they should input the complete phone number (with area code).\r\n\t\t// So, unless a user completely doesn't understand what they're doing,\r\n\t\t// they'd input the complete phone number (with area code).\r\n\t\t// // Should prepend the default area code in British Virgin Islands.\r\n\t\t// // https://github.com/catamphetamine/react-phone-number-input/issues/335\r\n\t\t// const formatter2 = new AsYouType('VG')\r\n\t\t// formatter2.input('2291234').should.equal('(229) 123-4')\r\n\t\t// formatter2.getNumber().country.should.equal('VG')\r\n\t\t// formatter2.getNumber().nationalNumber.should.equal('2842291234')\r\n\t\t// formatter2.getNumber().number.should.equal('+12842291234')\r\n\t})\r\n\r\n\tit('should work with out-of-country dialing prefix (like 00)', () => {\r\n\t\tconst formatter = new AsYouType('DE')\r\n\t\tformatter.input('00498911196611').should.equal('00 49 89 11196611')\r\n\t\tformatter.getCountry().should.equal('DE')\r\n\t\tformatter.formatter.template.should.equal('xx xx xx xxxxxxxx')\r\n\t\tformatter.formatter.populatedNationalNumberTemplate.should.equal('89 11196611')\r\n\t\tformatter.getTemplate().should.equal('xx xx xx xxxxxxxx')\r\n\t\tformatter.getNumber().country.should.equal('DE')\r\n\t\tformatter.getNumber().nationalNumber.should.equal('8911196611')\r\n\t\tformatter.getNumber().number.should.equal('+498911196611')\r\n\t})\r\n\r\n\tit('shouldn\\'t choose a format when there\\'re too many digits for any of them', () => {\r\n\t\tconst formatter = new AsYouType('RU')\r\n\t\tformatter.input('89991112233')\r\n\t\tformatter.formatter.chosenFormat.format().should.equal('$1 $2-$3-$4')\r\n\t\tformatter.reset()\r\n\t\tformatter.input('899911122334')\r\n\t\texpect(formatter.formatter.chosenFormat).to.be.undefined\r\n\t})\r\n\r\n\tit('should get separator after national prefix', () => {\r\n\t\t// Russia.\r\n\t\t// Has separator after national prefix.\r\n\t\tconst formatter = new AsYouType('RU')\r\n\t\tconst format = formatter.metadata.formats()[0]\r\n\t\tformat.nationalPrefixFormattingRule().should.equal('8 ($1)')\r\n\t\tformatter.formatter.getSeparatorAfterNationalPrefix(format).should.equal(' ')\r\n\t\t// Britain.\r\n\t\t// Has no separator after national prefix.\r\n\t\tconst formatter2 = new AsYouType('GB')\r\n\t\tconst format2 = formatter2.metadata.formats()[0]\r\n\t\tformat2.nationalPrefixFormattingRule().should.equal('0$1')\r\n\t\tformatter2.formatter.getSeparatorAfterNationalPrefix(format2).should.equal('')\r\n\t})\r\n\r\n\tit('should return if the number is possible', () => {\r\n\t\t// National. Russia.\r\n\t\tconst formatter = new AsYouType('RU')\r\n\t\tformatter.isPossible().should.equal(false)\r\n\t\tformatter.input('8')\r\n\t\tformatter.isPossible().should.equal(false)\r\n\t\tformatter.input('8005553535')\r\n\t\tformatter.isPossible().should.equal(true)\r\n\t\tformatter.input('5')\r\n\t\tformatter.isPossible().should.equal(false)\r\n\t})\r\n\r\n\tit('should return if the number is valid', () => {\r\n\t\t// National. Russia.\r\n\t\tconst formatter = new AsYouType('RU')\r\n\t\tformatter.isValid().should.equal(false)\r\n\t\tformatter.input('88005553535')\r\n\t\tformatter.isValid().should.equal(true)\r\n\t\tformatter.input('5')\r\n\t\tformatter.isValid().should.equal(false)\r\n\t})\r\n\r\n\tit('should return if the number is international', () => {\r\n\t\t// National. Russia.\r\n\t\tconst formatter = new AsYouType('RU')\r\n\t\tformatter.isInternational().should.equal(false)\r\n\t\tformatter.input('88005553535')\r\n\t\tformatter.isInternational().should.equal(false)\r\n\t\t// International. Russia.\r\n\t\tconst formatterInt = new AsYouType()\r\n\t\tformatterInt.isInternational().should.equal(false)\r\n\t\tformatterInt.input('+')\r\n\t\tformatterInt.isInternational().should.equal(true)\r\n\t\tformatterInt.input('78005553535')\r\n\t\tformatterInt.isInternational().should.equal(true)\r\n\t})\r\n\r\n\tit('should return country calling code part of the number', () => {\r\n\t\t// National. Russia.\r\n\t\tconst formatter = new AsYouType('RU')\r\n\t\texpect(formatter.getCountryCallingCode()).to.be.undefined\r\n\t\tformatter.input('88005553535')\r\n\t\texpect(formatter.getCountryCallingCode()).to.be.undefined\r\n\t\t// International. Russia.\r\n\t\tconst formatterInt = new AsYouType()\r\n\t\texpect(formatterInt.getCountryCallingCode()).to.be.undefined\r\n\t\tformatterInt.input('+')\r\n\t\texpect(formatterInt.getCountryCallingCode()).to.be.undefined\r\n\t\tformatterInt.input('7')\r\n\t\texpect(formatterInt.getCountryCallingCode()).to.equal('7')\r\n\t\tformatterInt.input('8005553535')\r\n\t\texpect(formatterInt.getCountryCallingCode()).to.equal('7')\r\n\t})\r\n\r\n\tit('should return the country of the number', () => {\r\n\t\t// National. Russia.\r\n\t\tconst formatter = new AsYouType('RU')\r\n\t\texpect(formatter.getCountry()).to.be.undefined\r\n\t\tformatter.input('8')\r\n\t\texpect(formatter.getCountry()).to.equal('RU')\r\n\t\tformatter.input('8005553535')\r\n\t\texpect(formatter.getCountry()).to.equal('RU')\r\n\t\t// International. Austria.\r\n\t\tconst formatterInt = new AsYouType()\r\n\t\texpect(formatterInt.getCountry()).to.be.undefined\r\n\t\tformatterInt.input('+')\r\n\t\texpect(formatterInt.getCountry()).to.be.undefined\r\n\t\tformatterInt.input('43')\r\n\t\texpect(formatterInt.getCountry()).to.equal('AT')\r\n\t\t// International. USA.\r\n\t\tconst formatterIntRu = new AsYouType()\r\n\t\texpect(formatterIntRu.getCountry()).to.be.undefined\r\n\t\tformatterIntRu.input('+')\r\n\t\texpect(formatterIntRu.getCountry()).to.be.undefined\r\n\t\tformatterIntRu.input('1')\r\n\t\texpect(formatterIntRu.getCountry()).to.be.undefined\r\n\t\tformatterIntRu.input('2133734253')\r\n\t\texpect(formatterIntRu.getCountry()).to.equal('US')\r\n\t\tformatterIntRu.input('1')\r\n\t\texpect(formatterIntRu.getCountry()).to.be.undefined\r\n\t})\r\n\r\n\tit('should parse a long IDD prefix', () => {\r\n\t\tconst formatter = new AsYouType('AU')\r\n\t\t// `14880011` is a long IDD prefix in Australia.\r\n\t\tformatter.input('1').should.equal('1')\r\n\t\tformatter.input('4').should.equal('14')\r\n\t\tformatter.input('8').should.equal('148')\r\n\t\tformatter.input('8').should.equal('1488')\r\n\t\tformatter.input('0').should.equal('14880')\r\n\t\tformatter.input('0').should.equal('148800')\r\n\t\tformatter.input('1').should.equal('1488001')\r\n\t\tformatter.input('1').should.equal('14880011')\r\n\t\t// As if were calling US using `14880011` IDD prefix,\r\n\t\t// though that prefix could mean something else.\r\n\t\tformatter.input('1').should.equal('14880011 1')\r\n\t\tformatter.input('2').should.equal('14880011 1 2')\r\n\t\tformatter.input('1').should.equal('14880011 1 21')\r\n\t\tformatter.input('3').should.equal('14880011 1 213')\r\n\t})\r\n\r\n\tit('should return the phone number characters entered by the user', () => {\r\n\t\tconst formatter = new AsYouType('RU')\r\n\t\tformatter.getChars().should.equal('')\r\n\t\tformatter.input('+123')\r\n\t\tformatter.getChars().should.equal('+123')\r\n\t\tformatter.reset()\r\n\t\tformatter.input('123')\r\n\t\tformatter.getChars().should.equal('123')\r\n\t})\r\n\r\n\t// A test confirming the case when input `\"11\"` for country `\"US\"`\r\n\t// produces `value` `\"+11\"`.\r\n\t// https://gitlab.com/catamphetamine/react-phone-number-input/-/issues/113\r\n\tit('should determine the national (significant) part correctly when input with national prefix in US', () => {\r\n\t\tconst formatter = new AsYouType('US')\r\n\t\t// As soon as the user has input `\"11\"`, no `format` matches\r\n\t\t// those \"national number\" digits in the `\"US\"` country metadata.\r\n\t\t// Since no `format` matches, the number doesn't seem like a valid one,\r\n\t\t// so it attempts to see if the user \"forgot\" to input a `\"+\"` at the start.\r\n\t\t// And it looks like they might've to.\r\n\t\t// So it acts as if the leading `\"+\"` is there,\r\n\t\t// as if the user's input is `\"+11\"`.\r\n\t\t// See `AsYouType.fixMissingPlus()` function.\r\n\t\tformatter.input('1 122 222 2222 3').should.equal('1 1 222 222 2223')\r\n\t\tformatter.getNumber().nationalNumber.should.equal('2222222223')\r\n\t})\r\n})\r\n\r\ndescribe('AsYouType.getNumberValue()', () => {\r\n\tit('should return E.164 number value (national number, with national prefix, default country: US)', () => {\r\n\t\tconst formatter = new AsYouType('US')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+1')\r\n\t\tformatter.input('2')\r\n\t\tformatter.getNumberValue().should.equal('+12')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+121')\r\n\t\tformatter.input('3')\r\n\t\tformatter.getNumberValue().should.equal('+1213')\r\n\t\tformatter.input('373-4253')\r\n\t\tformatter.getNumberValue().should.equal('+12133734253')\r\n\t\tformatter.input('4')\r\n\t\tformatter.getNumberValue().should.equal('+121337342534')\r\n\t})\r\n\r\n\tit('should return E.164 number value (national number, with national prefix, default calling code: 1)', () => {\r\n\t\tconst formatter = new AsYouType({ defaultCallingCode: '1' })\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+1')\r\n\t\tformatter.input('2')\r\n\t\tformatter.getNumberValue().should.equal('+12')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+121')\r\n\t\tformatter.input('3')\r\n\t\tformatter.getNumberValue().should.equal('+1213')\r\n\t\tformatter.input('373-4253')\r\n\t\tformatter.getNumberValue().should.equal('+12133734253')\r\n\t\tformatter.input('4')\r\n\t\tformatter.getNumberValue().should.equal('+121337342534')\r\n\t})\r\n\r\n\tit('should return E.164 number value (national number, default country: US)', () => {\r\n\t\tconst formatter = new AsYouType('US')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('2')\r\n\t\tformatter.getNumberValue().should.equal('+12')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+121')\r\n\t\tformatter.input('3')\r\n\t\tformatter.getNumberValue().should.equal('+1213')\r\n\t\tformatter.input('373-4253')\r\n\t\tformatter.getNumberValue().should.equal('+12133734253')\r\n\t\tformatter.input('4')\r\n\t\tformatter.getNumberValue().should.equal('+121337342534')\r\n\t})\r\n\r\n\tit('should return E.164 number value (national number, default calling code: 1)', () => {\r\n\t\tconst formatter = new AsYouType({ defaultCallingCode: '1' })\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('2')\r\n\t\tformatter.getNumberValue().should.equal('+12')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+121')\r\n\t\tformatter.input('3')\r\n\t\tformatter.getNumberValue().should.equal('+1213')\r\n\t\tformatter.input('373-4253')\r\n\t\tformatter.getNumberValue().should.equal('+12133734253')\r\n\t\tformatter.input('4')\r\n\t\tformatter.getNumberValue().should.equal('+121337342534')\r\n\t})\r\n\r\n\tit('should return E.164 number value (international number, not a valid calling code)', () => {\r\n\t\tconst formatter = new AsYouType()\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('+')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('2150')\r\n\t\tformatter.getNumberValue().should.equal('+2150')\r\n\t})\r\n\r\n\tit('should return E.164 number value (international number, default country: US)', () => {\r\n\t\tconst formatter = new AsYouType('US')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('+')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+1')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+1')\r\n\t\tformatter.input('2')\r\n\t\tformatter.getNumberValue().should.equal('+12')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+121')\r\n\t\tformatter.input('3')\r\n\t\tformatter.getNumberValue().should.equal('+1213')\r\n\t\tformatter.input('373-4253')\r\n\t\tformatter.getNumberValue().should.equal('+12133734253')\r\n\t\tformatter.input('4')\r\n\t\tformatter.getNumberValue().should.equal('+121337342534')\r\n\t})\r\n\r\n\tit('should return E.164 number value (international number, other default country: RU)', () => {\r\n\t\tconst formatter = new AsYouType('RU')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('+')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+1')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+1')\r\n\t\tformatter.input('2')\r\n\t\tformatter.getNumberValue().should.equal('+12')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+121')\r\n\t\tformatter.input('3')\r\n\t\tformatter.getNumberValue().should.equal('+1213')\r\n\t\tformatter.input('373-4253')\r\n\t\tformatter.getNumberValue().should.equal('+12133734253')\r\n\t\tformatter.input('4')\r\n\t\tformatter.getNumberValue().should.equal('+121337342534')\r\n\t})\r\n\r\n\tit('should return E.164 number value (international number, default calling code: 1)', () => {\r\n\t\tconst formatter = new AsYouType('US', { defaultCallingCode: '1' })\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('+')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+1')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+1')\r\n\t\tformatter.input('2')\r\n\t\tformatter.getNumberValue().should.equal('+12')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+121')\r\n\t\tformatter.input('3')\r\n\t\tformatter.getNumberValue().should.equal('+1213')\r\n\t\tformatter.input('373-4253')\r\n\t\tformatter.getNumberValue().should.equal('+12133734253')\r\n\t\tformatter.input('4')\r\n\t\tformatter.getNumberValue().should.equal('+121337342534')\r\n\t})\r\n\r\n\tit('should return E.164 number value (international number, other default calling code: 7)', () => {\r\n\t\tconst formatter = new AsYouType('US', { defaultCallingCode: '7' })\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('+')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+1')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+1')\r\n\t\tformatter.input('2')\r\n\t\tformatter.getNumberValue().should.equal('+12')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+121')\r\n\t\tformatter.input('3')\r\n\t\tformatter.getNumberValue().should.equal('+1213')\r\n\t\tformatter.input('373-4253')\r\n\t\tformatter.getNumberValue().should.equal('+12133734253')\r\n\t\tformatter.input('4')\r\n\t\tformatter.getNumberValue().should.equal('+121337342534')\r\n\t})\r\n\r\n\tit('should return E.164 number value (international number)', () => {\r\n\t\tconst formatter = new AsYouType()\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('+')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+1')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+1')\r\n\t\tformatter.input('2')\r\n\t\tformatter.getNumberValue().should.equal('+12')\r\n\t\tformatter.input('1')\r\n\t\tformatter.getNumberValue().should.equal('+121')\r\n\t\tformatter.input('3')\r\n\t\tformatter.getNumberValue().should.equal('+1213')\r\n\t\tformatter.input('373-4253')\r\n\t\tformatter.getNumberValue().should.equal('+12133734253')\r\n\t\tformatter.input('4')\r\n\t\tformatter.getNumberValue().should.equal('+121337342534')\r\n\t})\r\n\r\n\tit('should return E.164 number value (national number) (no default country or calling code)', () => {\r\n\t\tconst formatter = new AsYouType()\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('1')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('12')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('3')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('373-4253')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t\tformatter.input('4')\r\n\t\texpect(formatter.getNumberValue()).to.be.undefined\r\n\t})\r\n\r\n\tit('should not drop any input digits', () => {\r\n\t\t// Test \"+529011234567\" number, proactively ensuring that no formatting is applied,\r\n\t\t// where a format is chosen that would otherwise have led to some digits being dropped.\r\n\t\tconst formatter = new AsYouType('MX')\r\n\t\tformatter.input('9').should.equal('9')\r\n\t\tformatter.input('0').should.equal('90')\r\n\t\tformatter.input('1').should.equal('901')\r\n\t\tformatter.input('1').should.equal('901 1')\r\n\t\tformatter.input('2').should.equal('901 12')\r\n\t\tformatter.input('3').should.equal('901 123')\r\n\t\tformatter.input('4').should.equal('901 123 4')\r\n\t\tformatter.input('5').should.equal('901 123 45')\r\n\t\tformatter.input('6').should.equal('901 123 456')\r\n\t\tformatter.input('7').should.equal('901 123 4567')\r\n\t})\r\n\r\n\tit('should work for formats with no leading digits (`leadingDigitsPatternsCount === 0`)', function() {\r\n\t\tconst formatter = new AsYouType({\r\n\t\t\tdefaultCallingCode: 888\r\n\t\t})\r\n\t\tformatter.input('1').should.equal('1')\r\n\t})\r\n\r\n\tit('should work for SK phone numbers', function() {\r\n\t\t// There was a bug: \"leading digits\" `\"2\"` matched \"leading digits pattern\" `\"90\"`.\r\n\t\t// The incorrect `.match()` function result was `{ oveflow: true }`\r\n\t\t// while it should've been `undefined`.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/66\r\n\t\tconst formatter = new AsYouType('SK')\r\n\t\tformatter.input('090').should.equal('090')\r\n\t\tformatter.reset()\r\n\t\tformatter.input('080').should.equal('080')\r\n\t\tformatter.reset()\r\n\t\tformatter.input('059').should.equal('059')\r\n\t})\r\n\r\n\tit('should work for SK phone numbers (2)', function() {\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/69\r\n\t\tconst formatter = new AsYouType('SK')\r\n\t\tformatter.input('421901222333').should.equal('421 901 222 333')\r\n\t\tformatter.getTemplate().should.equal('xxx xxx xxx xxx')\r\n\t})\r\n})\r\n\r\nfunction type(something) {\r\n\treturn typeof something\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternMatcher.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternMatcher.js new file mode 100644 index 00000000..e6120607 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternMatcher.js @@ -0,0 +1,255 @@ +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +import PatternParser from './AsYouTypeFormatter.PatternParser.js'; + +var PatternMatcher = /*#__PURE__*/function () { + function PatternMatcher(pattern) { + _classCallCheck(this, PatternMatcher); + + this.matchTree = new PatternParser().parse(pattern); + } + + _createClass(PatternMatcher, [{ + key: "match", + value: function match(string) { + var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + allowOverflow = _ref.allowOverflow; + + if (!string) { + throw new Error('String is required'); + } + + var result = _match(string.split(''), this.matchTree, true); + + if (result && result.match) { + delete result.matchedChars; + } + + if (result && result.overflow) { + if (!allowOverflow) { + return; + } + } + + return result; + } + }]); + + return PatternMatcher; +}(); +/** + * Matches `characters` against a pattern compiled into a `tree`. + * @param {string[]} characters + * @param {Tree} tree — A pattern compiled into a `tree`. See the `*.d.ts` file for the description of the `tree` structure. + * @param {boolean} last — Whether it's the last (rightmost) subtree on its level of the match tree. + * @return {object} See the `*.d.ts` file for the description of the result object. + */ + + +export { PatternMatcher as default }; + +function _match(characters, tree, last) { + // If `tree` is a string, then `tree` is a single character. + // That's because when a pattern is parsed, multi-character-string parts + // of a pattern are compiled into arrays of single characters. + // I still wrote this piece of code for a "general" hypothetical case + // when `tree` could be a string of several characters, even though + // such case is not possible with the current implementation. + if (typeof tree === 'string') { + var characterString = characters.join(''); + + if (tree.indexOf(characterString) === 0) { + // `tree` is always a single character. + // If `tree.indexOf(characterString) === 0` + // then `characters.length === tree.length`. + + /* istanbul ignore else */ + if (characters.length === tree.length) { + return { + match: true, + matchedChars: characters + }; + } // `tree` is always a single character. + // If `tree.indexOf(characterString) === 0` + // then `characters.length === tree.length`. + + /* istanbul ignore next */ + + + return { + partialMatch: true // matchedChars: characters + + }; + } + + if (characterString.indexOf(tree) === 0) { + if (last) { + // The `else` path is not possible because `tree` is always a single character. + // The `else` case for `characters.length > tree.length` would be + // `characters.length <= tree.length` which means `characters.length <= 1`. + // `characters` array can't be empty, so that means `characters === [tree]`, + // which would also mean `tree.indexOf(characterString) === 0` and that'd mean + // that the `if (tree.indexOf(characterString) === 0)` condition before this + // `if` condition would be entered, and returned from there, not reaching this code. + + /* istanbul ignore else */ + if (characters.length > tree.length) { + return { + overflow: true + }; + } + } + + return { + match: true, + matchedChars: characters.slice(0, tree.length) + }; + } + + return; + } + + if (Array.isArray(tree)) { + var restCharacters = characters.slice(); + var i = 0; + + while (i < tree.length) { + var subtree = tree[i]; + + var result = _match(restCharacters, subtree, last && i === tree.length - 1); + + if (!result) { + return; + } else if (result.overflow) { + return result; + } else if (result.match) { + // Continue with the next subtree with the rest of the characters. + restCharacters = restCharacters.slice(result.matchedChars.length); + + if (restCharacters.length === 0) { + if (i === tree.length - 1) { + return { + match: true, + matchedChars: characters + }; + } else { + return { + partialMatch: true // matchedChars: characters + + }; + } + } + } else { + /* istanbul ignore else */ + if (result.partialMatch) { + return { + partialMatch: true // matchedChars: characters + + }; + } else { + throw new Error("Unsupported match result:\n".concat(JSON.stringify(result, null, 2))); + } + } + + i++; + } // If `last` then overflow has already been checked + // by the last element of the `tree` array. + + /* istanbul ignore if */ + + + if (last) { + return { + overflow: true + }; + } + + return { + match: true, + matchedChars: characters.slice(0, characters.length - restCharacters.length) + }; + } + + switch (tree.op) { + case '|': + var partialMatch; + + for (var _iterator = _createForOfIteratorHelperLoose(tree.args), _step; !(_step = _iterator()).done;) { + var branch = _step.value; + + var _result = _match(characters, branch, last); + + if (_result) { + if (_result.overflow) { + return _result; + } else if (_result.match) { + return { + match: true, + matchedChars: _result.matchedChars + }; + } else { + /* istanbul ignore else */ + if (_result.partialMatch) { + partialMatch = true; + } else { + throw new Error("Unsupported match result:\n".concat(JSON.stringify(_result, null, 2))); + } + } + } + } + + if (partialMatch) { + return { + partialMatch: true // matchedChars: ... + + }; + } // Not even a partial match. + + + return; + + case '[]': + for (var _iterator2 = _createForOfIteratorHelperLoose(tree.args), _step2; !(_step2 = _iterator2()).done;) { + var _char = _step2.value; + + if (characters[0] === _char) { + if (characters.length === 1) { + return { + match: true, + matchedChars: characters + }; + } + + if (last) { + return { + overflow: true + }; + } + + return { + match: true, + matchedChars: [_char] + }; + } + } // No character matches. + + + return; + + /* istanbul ignore next */ + + default: + throw new Error("Unsupported instruction tree: ".concat(tree)); + } +} +//# sourceMappingURL=AsYouTypeFormatter.PatternMatcher.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternMatcher.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternMatcher.js.map new file mode 100644 index 00000000..d2030f58 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternMatcher.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsYouTypeFormatter.PatternMatcher.js","names":["PatternParser","PatternMatcher","pattern","matchTree","parse","string","allowOverflow","Error","result","match","split","matchedChars","overflow","characters","tree","last","characterString","join","indexOf","length","partialMatch","slice","Array","isArray","restCharacters","i","subtree","JSON","stringify","op","args","branch","char"],"sources":["../source/AsYouTypeFormatter.PatternMatcher.js"],"sourcesContent":["import PatternParser from './AsYouTypeFormatter.PatternParser.js'\r\n\r\nexport default class PatternMatcher {\r\n\tconstructor(pattern) {\r\n\t\tthis.matchTree = new PatternParser().parse(pattern)\r\n\t}\r\n\r\n\tmatch(string, { allowOverflow } = {}) {\r\n\t\tif (!string) {\r\n\t\t\tthrow new Error('String is required')\r\n\t\t}\r\n\t\tconst result = match(string.split(''), this.matchTree, true)\r\n\t\tif (result && result.match) {\r\n\t\t\tdelete result.matchedChars\r\n\t\t}\r\n\t\tif (result && result.overflow) {\r\n\t\t\tif (!allowOverflow) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result\r\n\t}\r\n}\r\n\r\n/**\r\n * Matches `characters` against a pattern compiled into a `tree`.\r\n * @param {string[]} characters\r\n * @param {Tree} tree — A pattern compiled into a `tree`. See the `*.d.ts` file for the description of the `tree` structure.\r\n * @param {boolean} last — Whether it's the last (rightmost) subtree on its level of the match tree.\r\n * @return {object} See the `*.d.ts` file for the description of the result object.\r\n */\r\nfunction match(characters, tree, last) {\r\n\t// If `tree` is a string, then `tree` is a single character.\r\n\t// That's because when a pattern is parsed, multi-character-string parts\r\n\t// of a pattern are compiled into arrays of single characters.\r\n\t// I still wrote this piece of code for a \"general\" hypothetical case\r\n\t// when `tree` could be a string of several characters, even though\r\n\t// such case is not possible with the current implementation.\r\n\tif (typeof tree === 'string') {\r\n\t\tconst characterString = characters.join('')\r\n\t\tif (tree.indexOf(characterString) === 0) {\r\n\t\t\t// `tree` is always a single character.\r\n\t\t\t// If `tree.indexOf(characterString) === 0`\r\n\t\t\t// then `characters.length === tree.length`.\r\n\t\t\t/* istanbul ignore else */\r\n\t\t\tif (characters.length === tree.length) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tmatch: true,\r\n\t\t\t\t\tmatchedChars: characters\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// `tree` is always a single character.\r\n\t\t\t// If `tree.indexOf(characterString) === 0`\r\n\t\t\t// then `characters.length === tree.length`.\r\n\t\t\t/* istanbul ignore next */\r\n\t\t\treturn {\r\n\t\t\t\tpartialMatch: true,\r\n\t\t\t\t// matchedChars: characters\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (characterString.indexOf(tree) === 0) {\r\n\t\t\tif (last) {\r\n\t\t\t\t// The `else` path is not possible because `tree` is always a single character.\r\n\t\t\t\t// The `else` case for `characters.length > tree.length` would be\r\n\t\t\t\t// `characters.length <= tree.length` which means `characters.length <= 1`.\r\n\t\t\t\t// `characters` array can't be empty, so that means `characters === [tree]`,\r\n\t\t\t\t// which would also mean `tree.indexOf(characterString) === 0` and that'd mean\r\n\t\t\t\t// that the `if (tree.indexOf(characterString) === 0)` condition before this\r\n\t\t\t\t// `if` condition would be entered, and returned from there, not reaching this code.\r\n\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\tif (characters.length > tree.length) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\toverflow: true\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\tmatch: true,\r\n\t\t\t\tmatchedChars: characters.slice(0, tree.length)\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn\r\n\t}\r\n\r\n\tif (Array.isArray(tree)) {\r\n\t\tlet restCharacters = characters.slice()\r\n\t\tlet i = 0\r\n\t\twhile (i < tree.length) {\r\n\t\t\tconst subtree = tree[i]\r\n\t\t\tconst result = match(restCharacters, subtree, last && (i === tree.length - 1))\r\n\t\t\tif (!result) {\r\n\t\t\t\treturn\r\n\t\t\t} else if (result.overflow) {\r\n\t\t\t\treturn result\r\n\t\t\t} else if (result.match) {\r\n\t\t\t\t// Continue with the next subtree with the rest of the characters.\r\n\t\t\t\trestCharacters = restCharacters.slice(result.matchedChars.length)\r\n\t\t\t\tif (restCharacters.length === 0) {\r\n\t\t\t\t\tif (i === tree.length - 1) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\t\tmatchedChars: characters\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tpartialMatch: true,\r\n\t\t\t\t\t\t\t// matchedChars: characters\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\tif (result.partialMatch) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tpartialMatch: true,\r\n\t\t\t\t\t\t// matchedChars: characters\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthrow new Error(`Unsupported match result:\\n${JSON.stringify(result, null, 2)}`)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ti++\r\n\t\t}\r\n\t\t// If `last` then overflow has already been checked\r\n\t\t// by the last element of the `tree` array.\r\n\t\t/* istanbul ignore if */\r\n\t\tif (last) {\r\n\t\t\treturn {\r\n\t\t\t\toverflow: true\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tmatch: true,\r\n\t\t\tmatchedChars: characters.slice(0, characters.length - restCharacters.length)\r\n\t\t}\r\n\t}\r\n\r\n\tswitch (tree.op) {\r\n\t\tcase '|':\r\n\t\t\tlet partialMatch\r\n\t\t\tfor (const branch of tree.args) {\r\n\t\t\t\tconst result = match(characters, branch, last)\r\n\t\t\t\tif (result) {\r\n\t\t\t\t\tif (result.overflow) {\r\n\t\t\t\t\t\treturn result\r\n\t\t\t\t\t} else if (result.match) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\t\tmatchedChars: result.matchedChars\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\t\t\tif (result.partialMatch) {\r\n\t\t\t\t\t\t\tpartialMatch = true\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthrow new Error(`Unsupported match result:\\n${JSON.stringify(result, null, 2)}`)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (partialMatch) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tpartialMatch: true,\r\n\t\t\t\t\t// matchedChars: ...\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Not even a partial match.\r\n\t\t\treturn\r\n\r\n\t\tcase '[]':\r\n\t\t\tfor (const char of tree.args) {\r\n\t\t\t\tif (characters[0] === char) {\r\n\t\t\t\t\tif (characters.length === 1) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\t\tmatchedChars: characters\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (last) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\toverflow: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\tmatchedChars: [char]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// No character matches.\r\n\t\t\treturn\r\n\r\n\t\t/* istanbul ignore next */\r\n\t\tdefault:\r\n\t\t\tthrow new Error(`Unsupported instruction tree: ${tree}`)\r\n\t}\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternMatcher.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternMatcher.test.js new file mode 100644 index 00000000..872e8a66 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternMatcher.test.js @@ -0,0 +1,497 @@ +import PatternMatcher from './AsYouTypeFormatter.PatternMatcher.js'; +describe('AsYouTypeFormatter.PatternMatcher', function () { + it('should throw when no pattern is passed', function () { + expect(function () { + return new PatternMatcher(); + }).to["throw"]('Pattern is required'); + }); + it('should throw when no string is passed', function () { + var matcher = new PatternMatcher('1'); + expect(function () { + return matcher.match(); + }).to["throw"]('String is required'); + }); + it('should throw on illegal characters', function () { + expect(function () { + return new PatternMatcher('4(5|6)7'); + }).to["throw"]('Illegal characters'); + }); + it('should throw on an illegal ] operator', function () { + expect(function () { + return new PatternMatcher('4]7'); + }).to["throw"]('"]" operator must be preceded by "[" operator'); + }); + it('should throw on an illegal - operator in a one-of set', function () { + expect(function () { + return new PatternMatcher('[-5]'); + }).to["throw"]('Couldn\'t parse a one-of set pattern: -5'); + }); + it('should throw on a non-finalized context', function () { + expect(function () { + return new PatternMatcher('4(?:5|7'); + }).to["throw"]('Non-finalized contexts left when pattern parse ended'); + }); + it('should throw on an illegal (|) operator', function () { + expect(function () { + return new PatternMatcher('4(?:5|)7'); + }).to["throw"]('No instructions found after "|" operator in an "or" group'); + }); + it('should throw on an illegal ) operator', function () { + expect(function () { + return new PatternMatcher('4[56)]7'); + }).to["throw"]('")" operator must be preceded by "(?:" operator'); + }); + it('should throw on an illegal | operator', function () { + expect(function () { + return new PatternMatcher('4[5|6]7'); + }).to["throw"]('operator can only be used inside "or" groups'); + }); + it('should match a one-digit pattern', function () { + var matcher = new PatternMatcher('4'); + expect(matcher.match('1')).to.be.undefined; + matcher.match('4').should.deep.equal({ + match: true + }); + expect(matcher.match('44')).to.be.undefined; + matcher.match('44', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + }); + it('should match a two-digit pattern', function () { + var matcher = new PatternMatcher('44'); + expect(matcher.match('1')).to.be.undefined; + matcher.match('4').should.deep.equal({ + partialMatch: true + }); + matcher.match('44').should.deep.equal({ + match: true + }); + expect(matcher.match('444')).to.be.undefined; + matcher.match('444', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + expect(matcher.match('55')).to.be.undefined; + }); + it('should match a one-digit one-of set (single digit)', function () { + var matcher = new PatternMatcher('[4]'); + expect(matcher.match('1')).to.be.undefined; + matcher.match('4').should.deep.equal({ + match: true + }); + expect(matcher.match('44')).to.be.undefined; + matcher.match('44', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + }); + it('should match a one-digit one-of set (multiple digits)', function () { + var matcher = new PatternMatcher('[479]'); + expect(matcher.match('1')).to.be.undefined; + matcher.match('4').should.deep.equal({ + match: true + }); + expect(matcher.match('44')).to.be.undefined; + matcher.match('44', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + }); + it('should match a one-digit one-of set using a dash notation (not inclusive)', function () { + var matcher = new PatternMatcher('[2-5]'); + expect(matcher.match('1')).to.be.undefined; + matcher.match('4').should.deep.equal({ + match: true + }); + expect(matcher.match('44')).to.be.undefined; + matcher.match('44', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + }); + it('should match a one-digit one-of set using a dash notation (inclusive)', function () { + var matcher = new PatternMatcher('[3-4]'); + expect(matcher.match('1')).to.be.undefined; + matcher.match('4').should.deep.equal({ + match: true + }); + expect(matcher.match('44')).to.be.undefined; + matcher.match('44', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + }); + it('should match a one-digit one-of set including a dash notation', function () { + var matcher = new PatternMatcher('[124-68]'); + expect(matcher.match('0')).to.be.undefined; + matcher.match('1').should.deep.equal({ + match: true + }); + matcher.match('2').should.deep.equal({ + match: true + }); + expect(matcher.match('3')).to.be.undefined; + matcher.match('4').should.deep.equal({ + match: true + }); + matcher.match('5').should.deep.equal({ + match: true + }); + matcher.match('6').should.deep.equal({ + match: true + }); + expect(matcher.match('7')).to.be.undefined; + matcher.match('8').should.deep.equal({ + match: true + }); + expect(matcher.match('9')).to.be.undefined; + expect(matcher.match('88')).to.be.undefined; + matcher.match('88', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + }); + it('should match a two-digit one-of set', function () { + var matcher = new PatternMatcher('[479][45]'); + expect(matcher.match('1')).to.be.undefined; + matcher.match('4').should.deep.equal({ + partialMatch: true + }); + expect(matcher.match('5')).to.be.undefined; + expect(matcher.match('55')).to.be.undefined; + matcher.match('44').should.deep.equal({ + match: true + }); + expect(matcher.match('444')).to.be.undefined; + matcher.match('444', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + }); + it('should match a two-digit one-of set (regular digit and a one-of set)', function () { + var matcher = new PatternMatcher('1[45]'); + expect(matcher.match('0')).to.be.undefined; + matcher.match('1').should.deep.equal({ + partialMatch: true + }); + matcher.match('15').should.deep.equal({ + match: true + }); + expect(matcher.match('16')).to.be.undefined; + }); + it('should match a pattern with an or group', function () { + var matcher = new PatternMatcher('7(?:1[0-68]|2[1-9])'); + expect(matcher.match('1')).to.be.undefined; + matcher.match('7').should.deep.equal({ + partialMatch: true + }); + matcher.match('71').should.deep.equal({ + partialMatch: true + }); + expect(matcher.match('73')).to.be.undefined; + matcher.match('711').should.deep.equal({ + match: true + }); + expect(matcher.match('717')).to.be.undefined; + expect(matcher.match('720')).to.be.undefined; + matcher.match('722').should.deep.equal({ + match: true + }); + expect(matcher.match('7222')).to.be.undefined; + matcher.match('7222', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + }); + it('should match an or pattern containing or groups', function () { + var matcher = new PatternMatcher('2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])'); + expect(matcher.match('1')).to.be.undefined; + matcher.match('2').should.deep.equal({ + partialMatch: true + }); + matcher.match('3').should.deep.equal({ + partialMatch: true + }); + expect(matcher.match('4')).to.be.undefined; + expect(matcher.match('21')).to.be.undefined; + matcher.match('22').should.deep.equal({ + partialMatch: true + }); + expect(matcher.match('221')).to.be.undefined; + matcher.match('222').should.deep.equal({ + match: true + }); + expect(matcher.match('2222')).to.be.undefined; + matcher.match('2222', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + matcher.match('3').should.deep.equal({ + partialMatch: true + }); + matcher.match('33').should.deep.equal({ + partialMatch: true + }); + matcher.match('332').should.deep.equal({ + match: true + }); + expect(matcher.match('333')).to.be.undefined; + }); + it('should match an or pattern', function () { + var matcher = new PatternMatcher('6|8'); + expect(matcher.match('5')).to.be.undefined; + matcher.match('6').should.deep.equal({ + match: true + }); + expect(matcher.match('7')).to.be.undefined; + matcher.match('8').should.deep.equal({ + match: true + }); + }); + it('should match an or pattern (one-of sets)', function () { + var matcher = new PatternMatcher('[123]|[5-8]'); + expect(matcher.match('0')).to.be.undefined; + matcher.match('1').should.deep.equal({ + match: true + }); + matcher.match('2').should.deep.equal({ + match: true + }); + matcher.match('3').should.deep.equal({ + match: true + }); + expect(matcher.match('4')).to.be.undefined; + matcher.match('5').should.deep.equal({ + match: true + }); + matcher.match('6').should.deep.equal({ + match: true + }); + matcher.match('7').should.deep.equal({ + match: true + }); + matcher.match('8').should.deep.equal({ + match: true + }); + expect(matcher.match('9')).to.be.undefined; + expect(matcher.match('18')).to.be.undefined; + matcher.match('18', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + }); + it('should match an or pattern (different lengths)', function () { + var matcher = new PatternMatcher('60|8'); + expect(matcher.match('5')).to.be.undefined; + matcher.match('6').should.deep.equal({ + partialMatch: true + }); + matcher.match('60').should.deep.equal({ + match: true + }); + expect(matcher.match('61')).to.be.undefined; + expect(matcher.match('7')).to.be.undefined; + matcher.match('8').should.deep.equal({ + match: true + }); + expect(matcher.match('68')).to.be.undefined; + }); + it('should match an or pattern (one-of sets) (different lengths)', function () { + var matcher = new PatternMatcher('[123]|[5-8][2-8]'); + expect(matcher.match('0')).to.be.undefined; + }); + it('should match an or pattern (one-of sets and regular digits) (different lengths)', function () { + var matcher = new PatternMatcher('[2358][2-5]|4'); + expect(matcher.match('0')).to.be.undefined; + matcher.match('2').should.deep.equal({ + partialMatch: true + }); + expect(matcher.match('21')).to.be.undefined; + matcher.match('22').should.deep.equal({ + match: true + }); + matcher.match('25').should.deep.equal({ + match: true + }); + expect(matcher.match('26')).to.be.undefined; + expect(matcher.match('222')).to.be.undefined; + matcher.match('222', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + matcher.match('3').should.deep.equal({ + partialMatch: true + }); + matcher.match('4').should.deep.equal({ + match: true + }); + expect(matcher.match('6')).to.be.undefined; + }); + it('should match an or pattern (one-of sets and regular digits mixed) (different lengths)', function () { + var matcher = new PatternMatcher('[2358]2|4'); + expect(matcher.match('0')).to.be.undefined; + matcher.match('2').should.deep.equal({ + partialMatch: true + }); + expect(matcher.match('21')).to.be.undefined; + matcher.match('22').should.deep.equal({ + match: true + }); + expect(matcher.match('222')).to.be.undefined; + matcher.match('222', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + matcher.match('3').should.deep.equal({ + partialMatch: true + }); + matcher.match('4').should.deep.equal({ + match: true + }); + expect(matcher.match('6')).to.be.undefined; + }); + it('should match an or pattern (one-of sets groups and regular digits mixed) (different lengths)', function () { + var matcher = new PatternMatcher('1(?:11|[2-9])'); + matcher.match('1').should.deep.equal({ + partialMatch: true + }); + expect(matcher.match('10')).to.be.undefined; + matcher.match('11').should.deep.equal({ + partialMatch: true + }); + matcher.match('111').should.deep.equal({ + match: true + }); + expect(matcher.match('1111')).to.be.undefined; + matcher.match('1111', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + matcher.match('12').should.deep.equal({ + match: true + }); + expect(matcher.match('122')).to.be.undefined; + matcher.match('19').should.deep.equal({ + match: true + }); + expect(matcher.match('5')).to.be.undefined; + }); + it('should match nested or groups', function () { + var matcher = new PatternMatcher('1(?:2(?:3(?:4|5)|6)|7(?:8|9))0'); + matcher.match('1').should.deep.equal({ + partialMatch: true + }); + expect(matcher.match('2')).to.be.undefined; + expect(matcher.match('11')).to.be.undefined; + matcher.match('12').should.deep.equal({ + partialMatch: true + }); + expect(matcher.match('121')).to.be.undefined; + matcher.match('123').should.deep.equal({ + partialMatch: true + }); + expect(matcher.match('1231')).to.be.undefined; + matcher.match('1234').should.deep.equal({ + partialMatch: true + }); + matcher.match('12340').should.deep.equal({ + match: true + }); + expect(matcher.match('123401')).to.be.undefined; + matcher.match('123401', { + allowOverflow: true + }).should.deep.equal({ + overflow: true + }); + matcher.match('12350').should.deep.equal({ + match: true + }); + expect(matcher.match('12360')).to.be.undefined; + matcher.match('1260').should.deep.equal({ + match: true + }); + expect(matcher.match('1270')).to.be.undefined; + expect(matcher.match('1770')).to.be.undefined; + matcher.match('1780').should.deep.equal({ + match: true + }); + matcher.match('1790').should.deep.equal({ + match: true + }); + expect(matcher.match('18')).to.be.undefined; + }); + it('should match complex patterns', function () { + var matcher = new PatternMatcher('(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]'); + expect(matcher.match('0')).to.be.undefined; + matcher.match('3').should.deep.equal({ + partialMatch: true + }); + matcher.match('31').should.deep.equal({ + partialMatch: true + }); + expect(matcher.match('32')).to.be.undefined; + matcher.match('316').should.deep.equal({ + match: true + }); + expect(matcher.match('315')).to.be.undefined; + matcher.match('4').should.deep.equal({ + partialMatch: true + }); + matcher.match('46').should.deep.equal({ + match: true + }); + expect(matcher.match('47')).to.be.undefined; + matcher.match('5').should.deep.equal({ + partialMatch: true + }); + expect(matcher.match('50')).to.be.undefined; + matcher.match('51').should.deep.equal({ + match: true + }); + matcher.match('6').should.deep.equal({ + partialMatch: true + }); + expect(matcher.match('64')).to.be.undefined; + matcher.match('65').should.deep.equal({ + partialMatch: true + }); + matcher.match('650').should.deep.equal({ + match: true + }); + expect(matcher.match('654')).to.be.undefined; + matcher.match('69').should.deep.equal({ + match: true + }); + matcher.match('8').should.deep.equal({ + match: true + }); + matcher.match('9').should.deep.equal({ + match: true + }); + }); + it('shouldn\'t match things that shouldn\'t match', function () { + // There was a bug: "leading digits" `"2"` matched "leading digits pattern" `"90"`. + // The incorrect `.match()` function result was `{ oveflow: true }` + // while it should've been `undefined`. + // https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/66 + expect(new PatternMatcher('2').match('90', { + allowOverflow: true + })).to.be.undefined; + }); +}); +//# sourceMappingURL=AsYouTypeFormatter.PatternMatcher.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternMatcher.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternMatcher.test.js.map new file mode 100644 index 00000000..d1d722d4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternMatcher.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsYouTypeFormatter.PatternMatcher.test.js","names":["PatternMatcher","describe","it","expect","to","matcher","match","be","undefined","should","deep","equal","allowOverflow","overflow","partialMatch"],"sources":["../source/AsYouTypeFormatter.PatternMatcher.test.js"],"sourcesContent":["import PatternMatcher from './AsYouTypeFormatter.PatternMatcher.js'\r\n\r\ndescribe('AsYouTypeFormatter.PatternMatcher', function() {\r\n\tit('should throw when no pattern is passed', function() {\r\n\t\texpect(() => new PatternMatcher()).to.throw('Pattern is required')\r\n\t})\r\n\r\n\tit('should throw when no string is passed', function() {\r\n\t\tconst matcher = new PatternMatcher('1')\r\n\t\texpect(() => matcher.match()).to.throw('String is required')\r\n\t})\r\n\r\n\tit('should throw on illegal characters', function() {\r\n\t\texpect(() => new PatternMatcher('4(5|6)7')).to.throw('Illegal characters')\r\n\t})\r\n\r\n\tit('should throw on an illegal ] operator', function() {\r\n\t\texpect(() => new PatternMatcher('4]7')).to.throw('\"]\" operator must be preceded by \"[\" operator')\r\n\t})\r\n\r\n\tit('should throw on an illegal - operator in a one-of set', function() {\r\n\t\texpect(() => new PatternMatcher('[-5]')).to.throw('Couldn\\'t parse a one-of set pattern: -5')\r\n\t})\r\n\r\n\tit('should throw on a non-finalized context', function() {\r\n\t\texpect(() => new PatternMatcher('4(?:5|7')).to.throw('Non-finalized contexts left when pattern parse ended')\r\n\t})\r\n\r\n\tit('should throw on an illegal (|) operator', function() {\r\n\t\texpect(() => new PatternMatcher('4(?:5|)7')).to.throw('No instructions found after \"|\" operator in an \"or\" group')\r\n\t})\r\n\r\n\tit('should throw on an illegal ) operator', function() {\r\n\t\texpect(() => new PatternMatcher('4[56)]7')).to.throw('\")\" operator must be preceded by \"(?:\" operator')\r\n\t})\r\n\r\n\tit('should throw on an illegal | operator', function() {\r\n\t\texpect(() => new PatternMatcher('4[5|6]7')).to.throw('operator can only be used inside \"or\" groups')\r\n\t})\r\n\r\n\tit('should match a one-digit pattern', function() {\r\n\t\tconst matcher = new PatternMatcher('4')\r\n\r\n\t\texpect(matcher.match('1')).to.be.undefined\r\n\r\n\t\tmatcher.match('4').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('44')).to.be.undefined\r\n\r\n\t\tmatcher.match('44', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\t})\r\n\r\n\tit('should match a two-digit pattern', function() {\r\n\t\tconst matcher = new PatternMatcher('44')\r\n\r\n\t\texpect(matcher.match('1')).to.be.undefined\r\n\r\n\t\tmatcher.match('4').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('44').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('444')).to.be.undefined\r\n\r\n\t\tmatcher.match('444', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('55')).to.be.undefined\r\n\t})\r\n\r\n\tit('should match a one-digit one-of set (single digit)', function() {\r\n\t\tconst matcher = new PatternMatcher('[4]')\r\n\r\n\t\texpect(matcher.match('1')).to.be.undefined\r\n\r\n\t\tmatcher.match('4').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('44')).to.be.undefined\r\n\r\n\t\tmatcher.match('44', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\t})\r\n\r\n\tit('should match a one-digit one-of set (multiple digits)', function() {\r\n\t\tconst matcher = new PatternMatcher('[479]')\r\n\r\n\t\texpect(matcher.match('1')).to.be.undefined\r\n\r\n\t\tmatcher.match('4').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('44')).to.be.undefined\r\n\r\n\t\tmatcher.match('44', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\t})\r\n\r\n\tit('should match a one-digit one-of set using a dash notation (not inclusive)', function() {\r\n\t\tconst matcher = new PatternMatcher('[2-5]')\r\n\r\n\t\texpect(matcher.match('1')).to.be.undefined\r\n\r\n\t\tmatcher.match('4').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('44')).to.be.undefined\r\n\r\n\t\tmatcher.match('44', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\t})\r\n\r\n\tit('should match a one-digit one-of set using a dash notation (inclusive)', function() {\r\n\t\tconst matcher = new PatternMatcher('[3-4]')\r\n\r\n\t\texpect(matcher.match('1')).to.be.undefined\r\n\r\n\t\tmatcher.match('4').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('44')).to.be.undefined\r\n\r\n\t\tmatcher.match('44', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\t})\r\n\r\n\tit('should match a one-digit one-of set including a dash notation', function() {\r\n\t\tconst matcher = new PatternMatcher('[124-68]')\r\n\r\n\t\texpect(matcher.match('0')).to.be.undefined\r\n\r\n\t\tmatcher.match('1').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('2').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('3')).to.be.undefined\r\n\r\n\t\tmatcher.match('4').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('5').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('6').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('7')).to.be.undefined\r\n\r\n\t\tmatcher.match('8').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('9')).to.be.undefined\r\n\r\n\t\texpect(matcher.match('88')).to.be.undefined\r\n\r\n\t\tmatcher.match('88', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\t})\r\n\r\n\tit('should match a two-digit one-of set', function() {\r\n\t\tconst matcher = new PatternMatcher('[479][45]')\r\n\r\n\t\texpect(matcher.match('1')).to.be.undefined\r\n\r\n\t\tmatcher.match('4').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('5')).to.be.undefined\r\n\t\texpect(matcher.match('55')).to.be.undefined\r\n\r\n\t\tmatcher.match('44').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('444')).to.be.undefined\r\n\r\n\t\tmatcher.match('444', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\t})\r\n\r\n\tit('should match a two-digit one-of set (regular digit and a one-of set)', function() {\r\n\t\tconst matcher = new PatternMatcher('1[45]')\r\n\r\n\t\texpect(matcher.match('0')).to.be.undefined\r\n\r\n\t\tmatcher.match('1').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('15').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('16')).to.be.undefined\r\n\t})\r\n\r\n\tit('should match a pattern with an or group', function() {\r\n\t\tconst matcher = new PatternMatcher('7(?:1[0-68]|2[1-9])')\r\n\r\n\t\texpect(matcher.match('1')).to.be.undefined\r\n\r\n\t\tmatcher.match('7').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('71').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('73')).to.be.undefined\r\n\r\n\t\tmatcher.match('711').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('717')).to.be.undefined\r\n\r\n\t\texpect(matcher.match('720')).to.be.undefined\r\n\r\n\t\tmatcher.match('722').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('7222')).to.be.undefined\r\n\r\n\t\tmatcher.match('7222', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\t})\r\n\r\n\tit('should match an or pattern containing or groups', function() {\r\n\t\tconst matcher = new PatternMatcher('2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])')\r\n\r\n\t\texpect(matcher.match('1')).to.be.undefined\r\n\r\n\t\tmatcher.match('2').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('3').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('4')).to.be.undefined\r\n\r\n\t\texpect(matcher.match('21')).to.be.undefined\r\n\r\n\t\tmatcher.match('22').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('221')).to.be.undefined\r\n\r\n\t\tmatcher.match('222').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('2222')).to.be.undefined\r\n\r\n\t\tmatcher.match('2222', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('3').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('33').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('332').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('333')).to.be.undefined\r\n\t})\r\n\r\n\tit('should match an or pattern', function() {\r\n\t\tconst matcher = new PatternMatcher('6|8')\r\n\r\n\t\texpect(matcher.match('5')).to.be.undefined\r\n\r\n\t\tmatcher.match('6').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('7')).to.be.undefined\r\n\r\n\t\tmatcher.match('8').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\t})\r\n\r\n\tit('should match an or pattern (one-of sets)', function() {\r\n\t\tconst matcher = new PatternMatcher('[123]|[5-8]')\r\n\r\n\t\texpect(matcher.match('0')).to.be.undefined\r\n\r\n\t\tmatcher.match('1').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('2').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('3').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('4')).to.be.undefined\r\n\r\n\t\tmatcher.match('5').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('6').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('7').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('8').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('9')).to.be.undefined\r\n\r\n\t\texpect(matcher.match('18')).to.be.undefined\r\n\r\n\t\tmatcher.match('18', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\t})\r\n\r\n\tit('should match an or pattern (different lengths)', function() {\r\n\t\tconst matcher = new PatternMatcher('60|8')\r\n\r\n\t\texpect(matcher.match('5')).to.be.undefined\r\n\r\n\t\tmatcher.match('6').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('60').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('61')).to.be.undefined\r\n\r\n\t\texpect(matcher.match('7')).to.be.undefined\r\n\r\n\t\tmatcher.match('8').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('68')).to.be.undefined\r\n\t})\r\n\r\n\tit('should match an or pattern (one-of sets) (different lengths)', function() {\r\n\t\tconst matcher = new PatternMatcher('[123]|[5-8][2-8]')\r\n\r\n\t\texpect(matcher.match('0')).to.be.undefined\r\n\t})\r\n\r\n\tit('should match an or pattern (one-of sets and regular digits) (different lengths)', function() {\r\n\t\tconst matcher = new PatternMatcher('[2358][2-5]|4')\r\n\r\n\t\texpect(matcher.match('0')).to.be.undefined\r\n\r\n\t\tmatcher.match('2').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('21')).to.be.undefined\r\n\r\n\t\tmatcher.match('22').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('25').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('26')).to.be.undefined\r\n\r\n\t\texpect(matcher.match('222')).to.be.undefined\r\n\r\n\t\tmatcher.match('222', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('3').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('4').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('6')).to.be.undefined\r\n\t})\r\n\r\n\tit('should match an or pattern (one-of sets and regular digits mixed) (different lengths)', function() {\r\n\t\tconst matcher = new PatternMatcher('[2358]2|4')\r\n\r\n\t\texpect(matcher.match('0')).to.be.undefined\r\n\r\n\t\tmatcher.match('2').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('21')).to.be.undefined\r\n\r\n\t\tmatcher.match('22').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('222')).to.be.undefined\r\n\r\n\t\tmatcher.match('222', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('3').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('4').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('6')).to.be.undefined\r\n\t})\r\n\r\n\tit('should match an or pattern (one-of sets groups and regular digits mixed) (different lengths)', function() {\r\n\t\tconst matcher = new PatternMatcher('1(?:11|[2-9])')\r\n\r\n\t\tmatcher.match('1').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('10')).to.be.undefined\r\n\r\n\t\tmatcher.match('11').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('111').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('1111')).to.be.undefined\r\n\r\n\t\tmatcher.match('1111', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('12').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('122')).to.be.undefined\r\n\r\n\t\tmatcher.match('19').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('5')).to.be.undefined\r\n\t})\r\n\r\n\tit('should match nested or groups', function() {\r\n\t\tconst matcher = new PatternMatcher('1(?:2(?:3(?:4|5)|6)|7(?:8|9))0')\r\n\r\n\t\tmatcher.match('1').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('2')).to.be.undefined\r\n\r\n\t\texpect(matcher.match('11')).to.be.undefined\r\n\r\n\t\tmatcher.match('12').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('121')).to.be.undefined\r\n\r\n\t\tmatcher.match('123').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('1231')).to.be.undefined\r\n\r\n\t\tmatcher.match('1234').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('12340').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('123401')).to.be.undefined\r\n\r\n\t\tmatcher.match('123401', { allowOverflow: true }).should.deep.equal({\r\n\t\t\toverflow: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('12350').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('12360')).to.be.undefined\r\n\r\n\t\tmatcher.match('1260').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('1270')).to.be.undefined\r\n\r\n\t\texpect(matcher.match('1770')).to.be.undefined\r\n\r\n\t\tmatcher.match('1780').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('1790').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('18')).to.be.undefined\r\n\t})\r\n\r\n\tit('should match complex patterns', function() {\r\n\t\tconst matcher = new PatternMatcher('(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]')\r\n\r\n\t\texpect(matcher.match('0')).to.be.undefined\r\n\r\n\t\tmatcher.match('3').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('31').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('32')).to.be.undefined\r\n\r\n\t\tmatcher.match('316').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('315')).to.be.undefined\r\n\r\n\t\tmatcher.match('4').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('46').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('47')).to.be.undefined\r\n\r\n\t\tmatcher.match('5').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('50')).to.be.undefined\r\n\r\n\t\tmatcher.match('51').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('6').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('64')).to.be.undefined\r\n\r\n\t\tmatcher.match('65').should.deep.equal({\r\n\t\t\tpartialMatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('650').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\texpect(matcher.match('654')).to.be.undefined\r\n\r\n\t\tmatcher.match('69').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('8').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\r\n\t\tmatcher.match('9').should.deep.equal({\r\n\t\t\tmatch: true\r\n\t\t})\r\n\t})\r\n\r\n\tit('shouldn\\'t match things that shouldn\\'t match', function() {\r\n\t\t// There was a bug: \"leading digits\" `\"2\"` matched \"leading digits pattern\" `\"90\"`.\r\n\t\t// The incorrect `.match()` function result was `{ oveflow: true }`\r\n\t\t// while it should've been `undefined`.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/66\r\n\t\texpect(new PatternMatcher('2').match('90', { allowOverflow: true })).to.be.undefined\r\n\t})\r\n})"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternParser.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternParser.js new file mode 100644 index 00000000..8293ac84 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternParser.js @@ -0,0 +1,234 @@ +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +var PatternParser = /*#__PURE__*/function () { + function PatternParser() { + _classCallCheck(this, PatternParser); + } + + _createClass(PatternParser, [{ + key: "parse", + value: function parse(pattern) { + this.context = [{ + or: true, + instructions: [] + }]; + this.parsePattern(pattern); + + if (this.context.length !== 1) { + throw new Error('Non-finalized contexts left when pattern parse ended'); + } + + var _this$context$ = this.context[0], + branches = _this$context$.branches, + instructions = _this$context$.instructions; + + if (branches) { + return { + op: '|', + args: branches.concat([expandSingleElementArray(instructions)]) + }; + } + /* istanbul ignore if */ + + + if (instructions.length === 0) { + throw new Error('Pattern is required'); + } + + if (instructions.length === 1) { + return instructions[0]; + } + + return instructions; + } + }, { + key: "startContext", + value: function startContext(context) { + this.context.push(context); + } + }, { + key: "endContext", + value: function endContext() { + this.context.pop(); + } + }, { + key: "getContext", + value: function getContext() { + return this.context[this.context.length - 1]; + } + }, { + key: "parsePattern", + value: function parsePattern(pattern) { + if (!pattern) { + throw new Error('Pattern is required'); + } + + var match = pattern.match(OPERATOR); + + if (!match) { + if (ILLEGAL_CHARACTER_REGEXP.test(pattern)) { + throw new Error("Illegal characters found in a pattern: ".concat(pattern)); + } + + this.getContext().instructions = this.getContext().instructions.concat(pattern.split('')); + return; + } + + var operator = match[1]; + var before = pattern.slice(0, match.index); + var rightPart = pattern.slice(match.index + operator.length); + + switch (operator) { + case '(?:': + if (before) { + this.parsePattern(before); + } + + this.startContext({ + or: true, + instructions: [], + branches: [] + }); + break; + + case ')': + if (!this.getContext().or) { + throw new Error('")" operator must be preceded by "(?:" operator'); + } + + if (before) { + this.parsePattern(before); + } + + if (this.getContext().instructions.length === 0) { + throw new Error('No instructions found after "|" operator in an "or" group'); + } + + var _this$getContext = this.getContext(), + branches = _this$getContext.branches; + + branches.push(expandSingleElementArray(this.getContext().instructions)); + this.endContext(); + this.getContext().instructions.push({ + op: '|', + args: branches + }); + break; + + case '|': + if (!this.getContext().or) { + throw new Error('"|" operator can only be used inside "or" groups'); + } + + if (before) { + this.parsePattern(before); + } // The top-level is an implicit "or" group, if required. + + + if (!this.getContext().branches) { + // `branches` are not defined only for the root implicit "or" operator. + + /* istanbul ignore else */ + if (this.context.length === 1) { + this.getContext().branches = []; + } else { + throw new Error('"branches" not found in an "or" group context'); + } + } + + this.getContext().branches.push(expandSingleElementArray(this.getContext().instructions)); + this.getContext().instructions = []; + break; + + case '[': + if (before) { + this.parsePattern(before); + } + + this.startContext({ + oneOfSet: true + }); + break; + + case ']': + if (!this.getContext().oneOfSet) { + throw new Error('"]" operator must be preceded by "[" operator'); + } + + this.endContext(); + this.getContext().instructions.push({ + op: '[]', + args: parseOneOfSet(before) + }); + break; + + /* istanbul ignore next */ + + default: + throw new Error("Unknown operator: ".concat(operator)); + } + + if (rightPart) { + this.parsePattern(rightPart); + } + } + }]); + + return PatternParser; +}(); + +export { PatternParser as default }; + +function parseOneOfSet(pattern) { + var values = []; + var i = 0; + + while (i < pattern.length) { + if (pattern[i] === '-') { + if (i === 0 || i === pattern.length - 1) { + throw new Error("Couldn't parse a one-of set pattern: ".concat(pattern)); + } + + var prevValue = pattern[i - 1].charCodeAt(0) + 1; + var nextValue = pattern[i + 1].charCodeAt(0) - 1; + var value = prevValue; + + while (value <= nextValue) { + values.push(String.fromCharCode(value)); + value++; + } + } else { + values.push(pattern[i]); + } + + i++; + } + + return values; +} + +var ILLEGAL_CHARACTER_REGEXP = /[\(\)\[\]\?\:\|]/; +var OPERATOR = new RegExp( // any of: +'(' + // or operator +'\\|' + // or +'|' + // or group start +'\\(\\?\\:' + // or +'|' + // or group end +'\\)' + // or +'|' + // one-of set start +'\\[' + // or +'|' + // one-of set end +'\\]' + ')'); + +function expandSingleElementArray(array) { + if (array.length === 1) { + return array[0]; + } + + return array; +} +//# sourceMappingURL=AsYouTypeFormatter.PatternParser.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternParser.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternParser.js.map new file mode 100644 index 00000000..280a779a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternParser.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsYouTypeFormatter.PatternParser.js","names":["PatternParser","pattern","context","or","instructions","parsePattern","length","Error","branches","op","args","concat","expandSingleElementArray","push","pop","match","OPERATOR","ILLEGAL_CHARACTER_REGEXP","test","getContext","split","operator","before","slice","index","rightPart","startContext","endContext","oneOfSet","parseOneOfSet","values","i","prevValue","charCodeAt","nextValue","value","String","fromCharCode","RegExp","array"],"sources":["../source/AsYouTypeFormatter.PatternParser.js"],"sourcesContent":["export default class PatternParser {\r\n\tparse(pattern) {\r\n\t\tthis.context = [{\r\n\t\t\tor: true,\r\n\t\t\tinstructions: []\r\n\t\t}]\r\n\r\n\t\tthis.parsePattern(pattern)\r\n\r\n\t\tif (this.context.length !== 1) {\r\n\t\t\tthrow new Error('Non-finalized contexts left when pattern parse ended')\r\n\t\t}\r\n\r\n\t\tconst { branches, instructions } = this.context[0]\r\n\r\n\t\tif (branches) {\r\n\t\t\treturn {\r\n\t\t\t\top: '|',\r\n\t\t\t\targs: branches.concat([\r\n\t\t\t\t\texpandSingleElementArray(instructions)\r\n\t\t\t\t])\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/* istanbul ignore if */\r\n\t\tif (instructions.length === 0) {\r\n\t\t\tthrow new Error('Pattern is required')\r\n\t\t}\r\n\r\n\t\tif (instructions.length === 1) {\r\n\t\t\treturn instructions[0]\r\n\t\t}\r\n\r\n\t\treturn instructions\r\n\t}\r\n\r\n\tstartContext(context) {\r\n\t\tthis.context.push(context)\r\n\t}\r\n\r\n\tendContext() {\r\n\t\tthis.context.pop()\r\n\t}\r\n\r\n\tgetContext() {\r\n\t\treturn this.context[this.context.length - 1]\r\n\t}\r\n\r\n\tparsePattern(pattern) {\r\n\t\tif (!pattern) {\r\n\t\t\tthrow new Error('Pattern is required')\r\n\t\t}\r\n\r\n\t\tconst match = pattern.match(OPERATOR)\r\n\t\tif (!match) {\r\n\t\t\tif (ILLEGAL_CHARACTER_REGEXP.test(pattern)) {\r\n\t\t\t\tthrow new Error(`Illegal characters found in a pattern: ${pattern}`)\r\n\t\t\t}\r\n\t\t\tthis.getContext().instructions = this.getContext().instructions.concat(\r\n\t\t\t\tpattern.split('')\r\n\t\t\t)\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tconst operator = match[1]\r\n\t\tconst before = pattern.slice(0, match.index)\r\n\t\tconst rightPart = pattern.slice(match.index + operator.length)\r\n\r\n\t\tswitch (operator) {\r\n\t\t\tcase '(?:':\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\tthis.startContext({\r\n\t\t\t\t\tor: true,\r\n\t\t\t\t\tinstructions: [],\r\n\t\t\t\t\tbranches: []\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase ')':\r\n\t\t\t\tif (!this.getContext().or) {\r\n\t\t\t\t\tthrow new Error('\")\" operator must be preceded by \"(?:\" operator')\r\n\t\t\t\t}\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\tif (this.getContext().instructions.length === 0) {\r\n\t\t\t\t\tthrow new Error('No instructions found after \"|\" operator in an \"or\" group')\r\n\t\t\t\t}\r\n\t\t\t\tconst { branches } = this.getContext()\r\n\t\t\t\tbranches.push(\r\n\t\t\t\t\texpandSingleElementArray(\r\n\t\t\t\t\t\tthis.getContext().instructions\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\t\tthis.endContext()\r\n\t\t\t\tthis.getContext().instructions.push({\r\n\t\t\t\t\top: '|',\r\n\t\t\t\t\targs: branches\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase '|':\r\n\t\t\t\tif (!this.getContext().or) {\r\n\t\t\t\t\tthrow new Error('\"|\" operator can only be used inside \"or\" groups')\r\n\t\t\t\t}\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\t// The top-level is an implicit \"or\" group, if required.\r\n\t\t\t\tif (!this.getContext().branches) {\r\n\t\t\t\t\t// `branches` are not defined only for the root implicit \"or\" operator.\r\n\t\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\t\tif (this.context.length === 1) {\r\n\t\t\t\t\t\tthis.getContext().branches = []\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthrow new Error('\"branches\" not found in an \"or\" group context')\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tthis.getContext().branches.push(\r\n\t\t\t\t\texpandSingleElementArray(\r\n\t\t\t\t\t\tthis.getContext().instructions\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\t\tthis.getContext().instructions = []\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase '[':\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\tthis.startContext({\r\n\t\t\t\t\toneOfSet: true\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase ']':\r\n\t\t\t\tif (!this.getContext().oneOfSet) {\r\n\t\t\t\t\tthrow new Error('\"]\" operator must be preceded by \"[\" operator')\r\n\t\t\t\t}\r\n\t\t\t\tthis.endContext()\r\n\t\t\t\tthis.getContext().instructions.push({\r\n\t\t\t\t\top: '[]',\r\n\t\t\t\t\targs: parseOneOfSet(before)\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\t/* istanbul ignore next */\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(`Unknown operator: ${operator}`)\r\n\t\t}\r\n\r\n\t\tif (rightPart) {\r\n\t\t\tthis.parsePattern(rightPart)\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction parseOneOfSet(pattern) {\r\n\tconst values = []\r\n\tlet i = 0\r\n\twhile (i < pattern.length) {\r\n\t\tif (pattern[i] === '-') {\r\n\t\t\tif (i === 0 || i === pattern.length - 1) {\r\n\t\t\t\tthrow new Error(`Couldn't parse a one-of set pattern: ${pattern}`)\r\n\t\t\t}\r\n\t\t\tconst prevValue = pattern[i - 1].charCodeAt(0) + 1\r\n\t\t\tconst nextValue = pattern[i + 1].charCodeAt(0) - 1\r\n\t\t\tlet value = prevValue\r\n\t\t\twhile (value <= nextValue) {\r\n\t\t\t\tvalues.push(String.fromCharCode(value))\r\n\t\t\t\tvalue++\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvalues.push(pattern[i])\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\treturn values\r\n}\r\n\r\nconst ILLEGAL_CHARACTER_REGEXP = /[\\(\\)\\[\\]\\?\\:\\|]/\r\n\r\nconst OPERATOR = new RegExp(\r\n\t// any of:\r\n\t'(' +\r\n\t\t// or operator\r\n\t\t'\\\\|' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// or group start\r\n\t\t'\\\\(\\\\?\\\\:' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// or group end\r\n\t\t'\\\\)' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// one-of set start\r\n\t\t'\\\\[' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// one-of set end\r\n\t\t'\\\\]' +\r\n\t')'\r\n)\r\n\r\nfunction expandSingleElementArray(array) {\r\n\tif (array.length === 1) {\r\n\t\treturn array[0]\r\n\t}\r\n\treturn array\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternParser.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternParser.test.js new file mode 100644 index 00000000..3f465110 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternParser.test.js @@ -0,0 +1,44 @@ +import PatternParser from './AsYouTypeFormatter.PatternParser.js'; +describe('PatternParser', function () { + it('should parse single-character patterns', function () { + new PatternParser().parse('2').should.deep.equal('2'); + }); + it('should parse string patterns', function () { + new PatternParser().parse('123').should.deep.equal(['1', '2', '3']); + }); + it('should parse "one of" patterns', function () { + new PatternParser().parse('[5-9]').should.deep.equal({ + op: '[]', + args: ['5', '6', '7', '8', '9'] + }); + }); + it('should parse "or" patterns', function () { + new PatternParser().parse('123|[5-9]').should.deep.equal({ + op: '|', + args: [['1', '2', '3'], { + op: '[]', + args: ['5', '6', '7', '8', '9'] + }] + }); + new PatternParser().parse('123|[5-9]0').should.deep.equal({ + op: '|', + args: [['1', '2', '3'], [{ + op: '[]', + args: ['5', '6', '7', '8', '9'] + }, '0']] + }); + }); + it('should parse nested "or" patterns', function () { + new PatternParser().parse('123|(?:2|34)[5-9]').should.deep.equal({ + op: '|', + args: [['1', '2', '3'], [{ + op: '|', + args: ['2', ['3', '4']] + }, { + op: '[]', + args: ['5', '6', '7', '8', '9'] + }]] + }); + }); +}); +//# sourceMappingURL=AsYouTypeFormatter.PatternParser.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternParser.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternParser.test.js.map new file mode 100644 index 00000000..1ac20e65 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternParser.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsYouTypeFormatter.PatternParser.test.js","names":["PatternParser","describe","it","parse","should","deep","equal","op","args"],"sources":["../source/AsYouTypeFormatter.PatternParser.test.js"],"sourcesContent":["import PatternParser from './AsYouTypeFormatter.PatternParser.js'\r\n\r\ndescribe('PatternParser', function() {\r\n\tit('should parse single-character patterns', function() {\r\n\t\tnew PatternParser().parse('2').should.deep.equal('2')\r\n\t})\r\n\r\n\tit('should parse string patterns', function() {\r\n\t\tnew PatternParser().parse('123').should.deep.equal(['1', '2', '3'])\r\n\t})\r\n\r\n\tit('should parse \"one of\" patterns', function() {\r\n\t\tnew PatternParser().parse('[5-9]').should.deep.equal({\r\n\t\t\top: '[]',\r\n\t\t\targs: ['5', '6', '7', '8', '9']\r\n\t\t})\r\n\t})\r\n\r\n\tit('should parse \"or\" patterns', function() {\r\n\t\tnew PatternParser().parse('123|[5-9]').should.deep.equal({\r\n\t\t\top: '|',\r\n\t\t\targs: [\r\n\t\t\t\t['1', '2', '3'],\r\n\t\t\t\t{\r\n\t\t\t\t\top: '[]',\r\n\t\t\t\t\targs: ['5', '6', '7', '8', '9']\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t})\r\n\r\n\t\tnew PatternParser().parse('123|[5-9]0').should.deep.equal({\r\n\t\t\top: '|',\r\n\t\t\targs: [\r\n\t\t\t\t['1', '2', '3'],\r\n\t\t\t\t[\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\top: '[]',\r\n\t\t\t\t\t\targs: ['5', '6', '7', '8', '9']\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'0'\r\n\t\t\t\t]\r\n\t\t\t]\r\n\t\t})\r\n\t})\r\n\r\n\tit('should parse nested \"or\" patterns', function() {\r\n\t\tnew PatternParser().parse('123|(?:2|34)[5-9]').should.deep.equal({\r\n\t\t\top: '|',\r\n\t\t\targs: [\r\n\t\t\t\t['1', '2', '3'],\r\n\t\t\t\t[\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\top: '|',\r\n\t\t\t\t\t\targs: [\r\n\t\t\t\t\t\t\t'2',\r\n\t\t\t\t\t\t\t['3', '4']\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\top: '[]',\r\n\t\t\t\t\t\targs: ['5', '6', '7', '8', '9']\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t]\r\n\t\t})\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,aAAP,MAA0B,uCAA1B;AAEAC,QAAQ,CAAC,eAAD,EAAkB,YAAW;EACpCC,EAAE,CAAC,wCAAD,EAA2C,YAAW;IACvD,IAAIF,aAAJ,GAAoBG,KAApB,CAA0B,GAA1B,EAA+BC,MAA/B,CAAsCC,IAAtC,CAA2CC,KAA3C,CAAiD,GAAjD;EACA,CAFC,CAAF;EAIAJ,EAAE,CAAC,8BAAD,EAAiC,YAAW;IAC7C,IAAIF,aAAJ,GAAoBG,KAApB,CAA0B,KAA1B,EAAiCC,MAAjC,CAAwCC,IAAxC,CAA6CC,KAA7C,CAAmD,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAAnD;EACA,CAFC,CAAF;EAIAJ,EAAE,CAAC,gCAAD,EAAmC,YAAW;IAC/C,IAAIF,aAAJ,GAAoBG,KAApB,CAA0B,OAA1B,EAAmCC,MAAnC,CAA0CC,IAA1C,CAA+CC,KAA/C,CAAqD;MACpDC,EAAE,EAAE,IADgD;MAEpDC,IAAI,EAAE,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB;IAF8C,CAArD;EAIA,CALC,CAAF;EAOAN,EAAE,CAAC,4BAAD,EAA+B,YAAW;IAC3C,IAAIF,aAAJ,GAAoBG,KAApB,CAA0B,WAA1B,EAAuCC,MAAvC,CAA8CC,IAA9C,CAAmDC,KAAnD,CAAyD;MACxDC,EAAE,EAAE,GADoD;MAExDC,IAAI,EAAE,CACL,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CADK,EAEL;QACCD,EAAE,EAAE,IADL;QAECC,IAAI,EAAE,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB;MAFP,CAFK;IAFkD,CAAzD;IAWA,IAAIR,aAAJ,GAAoBG,KAApB,CAA0B,YAA1B,EAAwCC,MAAxC,CAA+CC,IAA/C,CAAoDC,KAApD,CAA0D;MACzDC,EAAE,EAAE,GADqD;MAEzDC,IAAI,EAAE,CACL,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CADK,EAEL,CACC;QACCD,EAAE,EAAE,IADL;QAECC,IAAI,EAAE,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB;MAFP,CADD,EAKC,GALD,CAFK;IAFmD,CAA1D;EAaA,CAzBC,CAAF;EA2BAN,EAAE,CAAC,mCAAD,EAAsC,YAAW;IAClD,IAAIF,aAAJ,GAAoBG,KAApB,CAA0B,mBAA1B,EAA+CC,MAA/C,CAAsDC,IAAtD,CAA2DC,KAA3D,CAAiE;MAChEC,EAAE,EAAE,GAD4D;MAEhEC,IAAI,EAAE,CACL,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CADK,EAEL,CACC;QACCD,EAAE,EAAE,GADL;QAECC,IAAI,EAAE,CACL,GADK,EAEL,CAAC,GAAD,EAAM,GAAN,CAFK;MAFP,CADD,EAQC;QACCD,EAAE,EAAE,IADL;QAECC,IAAI,EAAE,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB;MAFP,CARD,CAFK;IAF0D,CAAjE;EAmBA,CApBC,CAAF;AAqBA,CAhEO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.complete.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.complete.js new file mode 100644 index 00000000..acb0e49d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.complete.js @@ -0,0 +1,119 @@ +import checkNumberLength from './helpers/checkNumberLength.js'; +import parseDigits from './helpers/parseDigits.js'; +import formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js'; +export default function formatCompleteNumber(state, format, _ref) { + var metadata = _ref.metadata, + shouldTryNationalPrefixFormattingRule = _ref.shouldTryNationalPrefixFormattingRule, + getSeparatorAfterNationalPrefix = _ref.getSeparatorAfterNationalPrefix; + var matcher = new RegExp("^(?:".concat(format.pattern(), ")$")); + + if (matcher.test(state.nationalSignificantNumber)) { + return formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(state, format, { + metadata: metadata, + shouldTryNationalPrefixFormattingRule: shouldTryNationalPrefixFormattingRule, + getSeparatorAfterNationalPrefix: getSeparatorAfterNationalPrefix + }); + } +} +export function canFormatCompleteNumber(nationalSignificantNumber, metadata) { + return checkNumberLength(nationalSignificantNumber, metadata) === 'IS_POSSIBLE'; +} + +function formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(state, format, _ref2) { + var metadata = _ref2.metadata, + shouldTryNationalPrefixFormattingRule = _ref2.shouldTryNationalPrefixFormattingRule, + getSeparatorAfterNationalPrefix = _ref2.getSeparatorAfterNationalPrefix; + // `format` has already been checked for `nationalPrefix` requirement. + var nationalSignificantNumber = state.nationalSignificantNumber, + international = state.international, + nationalPrefix = state.nationalPrefix, + carrierCode = state.carrierCode; // Format the number with using `national_prefix_formatting_rule`. + // If the resulting formatted number is a valid formatted number, then return it. + // + // Google's AsYouType formatter is different in a way that it doesn't try + // to format using the "national prefix formatting rule", and instead it + // simply prepends a national prefix followed by a " " character. + // This code does that too, but as a fallback. + // The reason is that "national prefix formatting rule" may use parentheses, + // which wouldn't be included has it used the simpler Google's way. + // + + if (shouldTryNationalPrefixFormattingRule(format)) { + var formattedNumber = formatNationalNumber(state, format, { + useNationalPrefixFormattingRule: true, + getSeparatorAfterNationalPrefix: getSeparatorAfterNationalPrefix, + metadata: metadata + }); + + if (formattedNumber) { + return formattedNumber; + } + } // Format the number without using `national_prefix_formatting_rule`. + + + return formatNationalNumber(state, format, { + useNationalPrefixFormattingRule: false, + getSeparatorAfterNationalPrefix: getSeparatorAfterNationalPrefix, + metadata: metadata + }); +} + +function formatNationalNumber(state, format, _ref3) { + var metadata = _ref3.metadata, + useNationalPrefixFormattingRule = _ref3.useNationalPrefixFormattingRule, + getSeparatorAfterNationalPrefix = _ref3.getSeparatorAfterNationalPrefix; + var formattedNationalNumber = formatNationalNumberUsingFormat(state.nationalSignificantNumber, format, { + carrierCode: state.carrierCode, + useInternationalFormat: state.international, + withNationalPrefix: useNationalPrefixFormattingRule, + metadata: metadata + }); + + if (!useNationalPrefixFormattingRule) { + if (state.nationalPrefix) { + // If a national prefix was extracted, then just prepend it, + // followed by a " " character. + formattedNationalNumber = state.nationalPrefix + getSeparatorAfterNationalPrefix(format) + formattedNationalNumber; + } else if (state.complexPrefixBeforeNationalSignificantNumber) { + formattedNationalNumber = state.complexPrefixBeforeNationalSignificantNumber + ' ' + formattedNationalNumber; + } + } + + if (isValidFormattedNationalNumber(formattedNationalNumber, state)) { + return formattedNationalNumber; + } +} // Check that the formatted phone number contains exactly +// the same digits that have been input by the user. +// For example, when "0111523456789" is input for `AR` country, +// the extracted `this.nationalSignificantNumber` is "91123456789", +// which means that the national part of `this.digits` isn't simply equal to +// `this.nationalPrefix` + `this.nationalSignificantNumber`. +// +// Also, a `format` can add extra digits to the `this.nationalSignificantNumber` +// being formatted via `metadata[country].national_prefix_transform_rule`. +// For example, for `VI` country, it prepends `340` to the national number, +// and if this check hasn't been implemented, then there would be a bug +// when `340` "area coude" is "duplicated" during input for `VI` country: +// https://github.com/catamphetamine/libphonenumber-js/issues/318 +// +// So, all these "gotchas" are filtered out. +// +// In the original Google's code, the comments say: +// "Check that we didn't remove nor add any extra digits when we matched +// this formatting pattern. This usually happens after we entered the last +// digit during AYTF. Eg: In case of MX, we swallow mobile token (1) when +// formatted but AYTF should retain all the number entered and not change +// in order to match a format (of same leading digits and length) display +// in that way." +// "If it's the same (i.e entered number and format is same), then it's +// safe to return this in formatted number as nothing is lost / added." +// Otherwise, don't use this format. +// https://github.com/google/libphonenumber/commit/3e7c1f04f5e7200f87fb131e6f85c6e99d60f510#diff-9149457fa9f5d608a11bb975c6ef4bc5 +// https://github.com/google/libphonenumber/commit/3ac88c7106e7dcb553bcc794b15f19185928a1c6#diff-2dcb77e833422ee304da348b905cde0b +// + + +function isValidFormattedNationalNumber(formattedNationalNumber, state) { + return parseDigits(formattedNationalNumber) === state.getNationalDigits(); +} +//# sourceMappingURL=AsYouTypeFormatter.complete.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.complete.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.complete.js.map new file mode 100644 index 00000000..db5787f5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.complete.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsYouTypeFormatter.complete.js","names":["checkNumberLength","parseDigits","formatNationalNumberUsingFormat","formatCompleteNumber","state","format","metadata","shouldTryNationalPrefixFormattingRule","getSeparatorAfterNationalPrefix","matcher","RegExp","pattern","test","nationalSignificantNumber","formatNationalNumberWithAndWithoutNationalPrefixFormattingRule","canFormatCompleteNumber","international","nationalPrefix","carrierCode","formattedNumber","formatNationalNumber","useNationalPrefixFormattingRule","formattedNationalNumber","useInternationalFormat","withNationalPrefix","complexPrefixBeforeNationalSignificantNumber","isValidFormattedNationalNumber","getNationalDigits"],"sources":["../source/AsYouTypeFormatter.complete.js"],"sourcesContent":["import checkNumberLength from './helpers/checkNumberLength.js'\r\nimport parseDigits from './helpers/parseDigits.js'\r\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js'\r\n\r\nexport default function formatCompleteNumber(state, format, {\r\n\tmetadata,\r\n\tshouldTryNationalPrefixFormattingRule,\r\n\tgetSeparatorAfterNationalPrefix\r\n}) {\r\n\tconst matcher = new RegExp(`^(?:${format.pattern()})$`)\r\n\tif (matcher.test(state.nationalSignificantNumber)) {\r\n\t\treturn formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(\r\n\t\t\tstate,\r\n\t\t\tformat,\r\n\t\t\t{\r\n\t\t\t\tmetadata,\r\n\t\t\t\tshouldTryNationalPrefixFormattingRule,\r\n\t\t\t\tgetSeparatorAfterNationalPrefix\r\n\t\t\t}\r\n\t\t)\r\n\t}\r\n}\r\n\r\nexport function canFormatCompleteNumber(nationalSignificantNumber, metadata) {\r\n\treturn checkNumberLength(nationalSignificantNumber, metadata) === 'IS_POSSIBLE'\r\n}\r\n\r\nfunction formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(state, format, {\r\n\tmetadata,\r\n\tshouldTryNationalPrefixFormattingRule,\r\n\tgetSeparatorAfterNationalPrefix\r\n}) {\r\n\t// `format` has already been checked for `nationalPrefix` requirement.\r\n\r\n\tconst {\r\n\t\tnationalSignificantNumber,\r\n\t\tinternational,\r\n\t\tnationalPrefix,\r\n\t\tcarrierCode\r\n\t} = state\r\n\r\n\t// Format the number with using `national_prefix_formatting_rule`.\r\n\t// If the resulting formatted number is a valid formatted number, then return it.\r\n\t//\r\n\t// Google's AsYouType formatter is different in a way that it doesn't try\r\n\t// to format using the \"national prefix formatting rule\", and instead it\r\n\t// simply prepends a national prefix followed by a \" \" character.\r\n\t// This code does that too, but as a fallback.\r\n\t// The reason is that \"national prefix formatting rule\" may use parentheses,\r\n\t// which wouldn't be included has it used the simpler Google's way.\r\n\t//\r\n\tif (shouldTryNationalPrefixFormattingRule(format)) {\r\n\t\tconst formattedNumber = formatNationalNumber(state, format, {\r\n\t\t\tuseNationalPrefixFormattingRule: true,\r\n\t\t\tgetSeparatorAfterNationalPrefix,\r\n\t\t\tmetadata\r\n\t\t})\r\n\t\tif (formattedNumber) {\r\n\t\t\treturn formattedNumber\r\n\t\t}\r\n\t}\r\n\r\n\t// Format the number without using `national_prefix_formatting_rule`.\r\n\treturn formatNationalNumber(state, format, {\r\n\t\tuseNationalPrefixFormattingRule: false,\r\n\t\tgetSeparatorAfterNationalPrefix,\r\n\t\tmetadata\r\n\t})\r\n}\r\n\r\nfunction formatNationalNumber(state, format, {\r\n\tmetadata,\r\n\tuseNationalPrefixFormattingRule,\r\n\tgetSeparatorAfterNationalPrefix\r\n}) {\r\n\tlet formattedNationalNumber = formatNationalNumberUsingFormat(\r\n\t\tstate.nationalSignificantNumber,\r\n\t\tformat,\r\n\t\t{\r\n\t\t\tcarrierCode: state.carrierCode,\r\n\t\t\tuseInternationalFormat: state.international,\r\n\t\t\twithNationalPrefix: useNationalPrefixFormattingRule,\r\n\t\t\tmetadata\r\n\t\t}\r\n\t)\r\n\tif (!useNationalPrefixFormattingRule) {\r\n\t\tif (state.nationalPrefix) {\r\n\t\t\t// If a national prefix was extracted, then just prepend it,\r\n\t\t\t// followed by a \" \" character.\r\n\t\t\tformattedNationalNumber = state.nationalPrefix +\r\n\t\t\t\tgetSeparatorAfterNationalPrefix(format) +\r\n\t\t\t\tformattedNationalNumber\r\n\t\t} else if (state.complexPrefixBeforeNationalSignificantNumber) {\r\n\t\t\tformattedNationalNumber = state.complexPrefixBeforeNationalSignificantNumber +\r\n\t\t\t\t' ' +\r\n\t\t\t\tformattedNationalNumber\r\n\t\t}\r\n\t}\r\n\tif (isValidFormattedNationalNumber(formattedNationalNumber, state)) {\r\n\t\treturn formattedNationalNumber\r\n\t}\r\n}\r\n\r\n// Check that the formatted phone number contains exactly\r\n// the same digits that have been input by the user.\r\n// For example, when \"0111523456789\" is input for `AR` country,\r\n// the extracted `this.nationalSignificantNumber` is \"91123456789\",\r\n// which means that the national part of `this.digits` isn't simply equal to\r\n// `this.nationalPrefix` + `this.nationalSignificantNumber`.\r\n//\r\n// Also, a `format` can add extra digits to the `this.nationalSignificantNumber`\r\n// being formatted via `metadata[country].national_prefix_transform_rule`.\r\n// For example, for `VI` country, it prepends `340` to the national number,\r\n// and if this check hasn't been implemented, then there would be a bug\r\n// when `340` \"area coude\" is \"duplicated\" during input for `VI` country:\r\n// https://github.com/catamphetamine/libphonenumber-js/issues/318\r\n//\r\n// So, all these \"gotchas\" are filtered out.\r\n//\r\n// In the original Google's code, the comments say:\r\n// \"Check that we didn't remove nor add any extra digits when we matched\r\n// this formatting pattern. This usually happens after we entered the last\r\n// digit during AYTF. Eg: In case of MX, we swallow mobile token (1) when\r\n// formatted but AYTF should retain all the number entered and not change\r\n// in order to match a format (of same leading digits and length) display\r\n// in that way.\"\r\n// \"If it's the same (i.e entered number and format is same), then it's\r\n// safe to return this in formatted number as nothing is lost / added.\"\r\n// Otherwise, don't use this format.\r\n// https://github.com/google/libphonenumber/commit/3e7c1f04f5e7200f87fb131e6f85c6e99d60f510#diff-9149457fa9f5d608a11bb975c6ef4bc5\r\n// https://github.com/google/libphonenumber/commit/3ac88c7106e7dcb553bcc794b15f19185928a1c6#diff-2dcb77e833422ee304da348b905cde0b\r\n//\r\nfunction isValidFormattedNationalNumber(formattedNationalNumber, state) {\r\n\treturn parseDigits(formattedNationalNumber) === state.getNationalDigits()\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.js new file mode 100644 index 00000000..088b53d5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.js @@ -0,0 +1,747 @@ +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +import { DIGIT_PLACEHOLDER, countOccurences, repeat, cutAndStripNonPairedParens, closeNonPairedParens, stripNonPairedParens, populateTemplateWithDigits } from './AsYouTypeFormatter.util.js'; +import formatCompleteNumber, { canFormatCompleteNumber } from './AsYouTypeFormatter.complete.js'; +import PatternMatcher from './AsYouTypeFormatter.PatternMatcher.js'; +import parseDigits from './helpers/parseDigits.js'; +export { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.util.js'; +import { FIRST_GROUP_PATTERN } from './helpers/formatNationalNumberUsingFormat.js'; +import { VALID_PUNCTUATION } from './constants.js'; +import applyInternationalSeparatorStyle from './helpers/applyInternationalSeparatorStyle.js'; // Used in phone number format template creation. +// Could be any digit, I guess. + +var DUMMY_DIGIT = '9'; // I don't know why is it exactly `15` + +var LONGEST_NATIONAL_PHONE_NUMBER_LENGTH = 15; // Create a phone number consisting only of the digit 9 that matches the +// `number_pattern` by applying the pattern to the "longest phone number" string. + +var LONGEST_DUMMY_PHONE_NUMBER = repeat(DUMMY_DIGIT, LONGEST_NATIONAL_PHONE_NUMBER_LENGTH); // A set of characters that, if found in a national prefix formatting rules, are an indicator to +// us that we should separate the national prefix from the number when formatting. + +var NATIONAL_PREFIX_SEPARATORS_PATTERN = /[- ]/; // Deprecated: Google has removed some formatting pattern related code from their repo. +// https://github.com/googlei18n/libphonenumber/commit/a395b4fef3caf57c4bc5f082e1152a4d2bd0ba4c +// "We no longer have numbers in formatting matching patterns, only \d." +// Because this library supports generating custom metadata +// some users may still be using old metadata so the relevant +// code seems to stay until some next major version update. + +var SUPPORT_LEGACY_FORMATTING_PATTERNS = true; // A pattern that is used to match character classes in regular expressions. +// An example of a character class is "[1-4]". + +var CREATE_CHARACTER_CLASS_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && function () { + return /\[([^\[\]])*\]/g; +}; // Any digit in a regular expression that actually denotes a digit. For +// example, in the regular expression "80[0-2]\d{6,10}", the first 2 digits +// (8 and 0) are standalone digits, but the rest are not. +// Two look-aheads are needed because the number following \\d could be a +// two-digit number, since the phone number can be as long as 15 digits. + + +var CREATE_STANDALONE_DIGIT_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && function () { + return /\d(?=[^,}][^,}])/g; +}; // A regular expression that is used to determine if a `format` is +// suitable to be used in the "as you type formatter". +// A `format` is suitable when the resulting formatted number has +// the same digits as the user has entered. +// +// In the simplest case, that would mean that the format +// doesn't add any additional digits when formatting a number. +// Google says that it also shouldn't add "star" (`*`) characters, +// like it does in some Israeli formats. +// Such basic format would only contain "valid punctuation" +// and "captured group" identifiers ($1, $2, etc). +// +// An example of a format that adds additional digits: +// +// Country: `AR` (Argentina). +// Format: +// { +// "pattern": "(\\d)(\\d{2})(\\d{4})(\\d{4})", +// "leading_digits_patterns": ["91"], +// "national_prefix_formatting_rule": "0$1", +// "format": "$2 15-$3-$4", +// "international_format": "$1 $2 $3-$4" +// } +// +// In the format above, the `format` adds `15` to the digits when formatting a number. +// A sidenote: this format actually is suitable because `national_prefix_for_parsing` +// has previously removed `15` from a national number, so re-adding `15` in `format` +// doesn't actually result in any extra digits added to user's input. +// But verifying that would be a complex procedure, so the code chooses a simpler path: +// it simply filters out all `format`s that contain anything but "captured group" ids. +// +// This regular expression is called `ELIGIBLE_FORMAT_PATTERN` in Google's +// `libphonenumber` code. +// + + +var NON_ALTERING_FORMAT_REG_EXP = new RegExp('[' + VALID_PUNCTUATION + ']*' + // Google developers say: +// "We require that the first matching group is present in the +// output pattern to ensure no data is lost while formatting." +'\\$1' + '[' + VALID_PUNCTUATION + ']*' + '(\\$\\d[' + VALID_PUNCTUATION + ']*)*' + '$'); // This is the minimum length of the leading digits of a phone number +// to guarantee the first "leading digits pattern" for a phone number format +// to be preemptive. + +var MIN_LEADING_DIGITS_LENGTH = 3; + +var AsYouTypeFormatter = /*#__PURE__*/function () { + function AsYouTypeFormatter(_ref) { + var state = _ref.state, + metadata = _ref.metadata; + + _classCallCheck(this, AsYouTypeFormatter); + + this.metadata = metadata; + this.resetFormat(); + } + + _createClass(AsYouTypeFormatter, [{ + key: "resetFormat", + value: function resetFormat() { + this.chosenFormat = undefined; + this.template = undefined; + this.nationalNumberTemplate = undefined; + this.populatedNationalNumberTemplate = undefined; + this.populatedNationalNumberTemplatePosition = -1; + } + }, { + key: "reset", + value: function reset(numberingPlan, state) { + this.resetFormat(); + + if (numberingPlan) { + this.isNANP = numberingPlan.callingCode() === '1'; + this.matchingFormats = numberingPlan.formats(); + + if (state.nationalSignificantNumber) { + this.narrowDownMatchingFormats(state); + } + } else { + this.isNANP = undefined; + this.matchingFormats = []; + } + } + /** + * Formats an updated phone number. + * @param {string} nextDigits — Additional phone number digits. + * @param {object} state — `AsYouType` state. + * @return {[string]} Returns undefined if the updated phone number can't be formatted using any of the available formats. + */ + + }, { + key: "format", + value: function format(nextDigits, state) { + var _this = this; + + // See if the phone number digits can be formatted as a complete phone number. + // If not, use the results from `formatNationalNumberWithNextDigits()`, + // which formats based on the chosen formatting pattern. + // + // Attempting to format complete phone number first is how it's done + // in Google's `libphonenumber`, so this library just follows it. + // Google's `libphonenumber` code doesn't explain in detail why does it + // attempt to format digits as a complete phone number + // instead of just going with a previoulsy (or newly) chosen `format`: + // + // "Checks to see if there is an exact pattern match for these digits. + // If so, we should use this instead of any other formatting template + // whose leadingDigitsPattern also matches the input." + // + if (canFormatCompleteNumber(state.nationalSignificantNumber, this.metadata)) { + for (var _iterator = _createForOfIteratorHelperLoose(this.matchingFormats), _step; !(_step = _iterator()).done;) { + var format = _step.value; + var formattedCompleteNumber = formatCompleteNumber(state, format, { + metadata: this.metadata, + shouldTryNationalPrefixFormattingRule: function shouldTryNationalPrefixFormattingRule(format) { + return _this.shouldTryNationalPrefixFormattingRule(format, { + international: state.international, + nationalPrefix: state.nationalPrefix + }); + }, + getSeparatorAfterNationalPrefix: function getSeparatorAfterNationalPrefix(format) { + return _this.getSeparatorAfterNationalPrefix(format); + } + }); + + if (formattedCompleteNumber) { + this.resetFormat(); + this.chosenFormat = format; + this.setNationalNumberTemplate(formattedCompleteNumber.replace(/\d/g, DIGIT_PLACEHOLDER), state); + this.populatedNationalNumberTemplate = formattedCompleteNumber; // With a new formatting template, the matched position + // using the old template needs to be reset. + + this.populatedNationalNumberTemplatePosition = this.template.lastIndexOf(DIGIT_PLACEHOLDER); + return formattedCompleteNumber; + } + } + } // Format the digits as a partial (incomplete) phone number + // using the previously chosen formatting pattern (or a newly chosen one). + + + return this.formatNationalNumberWithNextDigits(nextDigits, state); + } // Formats the next phone number digits. + + }, { + key: "formatNationalNumberWithNextDigits", + value: function formatNationalNumberWithNextDigits(nextDigits, state) { + var previouslyChosenFormat = this.chosenFormat; // Choose a format from the list of matching ones. + + var newlyChosenFormat = this.chooseFormat(state); + + if (newlyChosenFormat) { + if (newlyChosenFormat === previouslyChosenFormat) { + // If it can format the next (current) digits + // using the previously chosen phone number format + // then return the updated formatted number. + return this.formatNextNationalNumberDigits(nextDigits); + } else { + // If a more appropriate phone number format + // has been chosen for these "leading digits", + // then re-format the national phone number part + // using the newly selected format. + return this.formatNextNationalNumberDigits(state.getNationalDigits()); + } + } + } + }, { + key: "narrowDownMatchingFormats", + value: function narrowDownMatchingFormats(_ref2) { + var _this2 = this; + + var nationalSignificantNumber = _ref2.nationalSignificantNumber, + nationalPrefix = _ref2.nationalPrefix, + international = _ref2.international; + var leadingDigits = nationalSignificantNumber; // "leading digits" pattern list starts with a + // "leading digits" pattern fitting a maximum of 3 leading digits. + // So, after a user inputs 3 digits of a national (significant) phone number + // this national (significant) number can already be formatted. + // The next "leading digits" pattern is for 4 leading digits max, + // and the "leading digits" pattern after it is for 5 leading digits max, etc. + // This implementation is different from Google's + // in that it searches for a fitting format + // even if the user has entered less than + // `MIN_LEADING_DIGITS_LENGTH` digits of a national number. + // Because some leading digit patterns already match for a single first digit. + + var leadingDigitsPatternIndex = leadingDigits.length - MIN_LEADING_DIGITS_LENGTH; + + if (leadingDigitsPatternIndex < 0) { + leadingDigitsPatternIndex = 0; + } + + this.matchingFormats = this.matchingFormats.filter(function (format) { + return _this2.formatSuits(format, international, nationalPrefix) && _this2.formatMatches(format, leadingDigits, leadingDigitsPatternIndex); + }); // If there was a phone number format chosen + // and it no longer holds given the new leading digits then reset it. + // The test for this `if` condition is marked as: + // "Reset a chosen format when it no longer holds given the new leading digits". + // To construct a valid test case for this one can find a country + // in `PhoneNumberMetadata.xml` yielding one format for 3 `` + // and yielding another format for 4 `` (Australia in this case). + + if (this.chosenFormat && this.matchingFormats.indexOf(this.chosenFormat) === -1) { + this.resetFormat(); + } + } + }, { + key: "formatSuits", + value: function formatSuits(format, international, nationalPrefix) { + // When a prefix before a national (significant) number is + // simply a national prefix, then it's parsed as `this.nationalPrefix`. + // In more complex cases, a prefix before national (significant) number + // could include a national prefix as well as some "capturing groups", + // and in that case there's no info whether a national prefix has been parsed. + // If national prefix is not used when formatting a phone number + // using this format, but a national prefix has been entered by the user, + // and was extracted, then discard such phone number format. + // In Google's "AsYouType" formatter code, the equivalent would be this part: + // https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L175-L184 + if (nationalPrefix && !format.usesNationalPrefix() && // !format.domesticCarrierCodeFormattingRule() && + !format.nationalPrefixIsOptionalWhenFormattingInNationalFormat()) { + return false; + } // If national prefix is mandatory for this phone number format + // and there're no guarantees that a national prefix is present in user input + // then discard this phone number format as not suitable. + // In Google's "AsYouType" formatter code, the equivalent would be this part: + // https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L185-L193 + + + if (!international && !nationalPrefix && format.nationalPrefixIsMandatoryWhenFormattingInNationalFormat()) { + return false; + } + + return true; + } + }, { + key: "formatMatches", + value: function formatMatches(format, leadingDigits, leadingDigitsPatternIndex) { + var leadingDigitsPatternsCount = format.leadingDigitsPatterns().length; // If this format is not restricted to a certain + // leading digits pattern then it fits. + // The test case could be found by searching for "leadingDigitsPatternsCount === 0". + + if (leadingDigitsPatternsCount === 0) { + return true; + } // Start narrowing down the list of possible formats based on the leading digits. + // (only previously matched formats take part in the narrowing down process) + // `leading_digits_patterns` start with 3 digits min + // and then go up from there one digit at a time. + + + leadingDigitsPatternIndex = Math.min(leadingDigitsPatternIndex, leadingDigitsPatternsCount - 1); + var leadingDigitsPattern = format.leadingDigitsPatterns()[leadingDigitsPatternIndex]; // Google imposes a requirement on the leading digits + // to be minimum 3 digits long in order to be eligible + // for checking those with a leading digits pattern. + // + // Since `leading_digits_patterns` start with 3 digits min, + // Google's original `libphonenumber` library only starts + // excluding any non-matching formats only when the + // national number entered so far is at least 3 digits long, + // otherwise format matching would give false negatives. + // + // For example, when the digits entered so far are `2` + // and the leading digits pattern is `21` – + // it's quite obvious in this case that the format could be the one + // but due to the absence of further digits it would give false negative. + // + // Also, `leading_digits_patterns` doesn't always correspond to a single + // digits count. For example, `60|8` pattern would already match `8` + // but the `60` part would require having at least two leading digits, + // so the whole pattern would require inputting two digits first in order to + // decide on whether it matches the input, even when the input is "80". + // + // This library — `libphonenumber-js` — allows filtering by `leading_digits_patterns` + // even when there's only 1 or 2 digits of the national (significant) number. + // To do that, it uses a non-strict pattern matcher written specifically for that. + // + + if (leadingDigits.length < MIN_LEADING_DIGITS_LENGTH) { + // Before leading digits < 3 matching was implemented: + // return true + // + // After leading digits < 3 matching was implemented: + try { + return new PatternMatcher(leadingDigitsPattern).match(leadingDigits, { + allowOverflow: true + }) !== undefined; + } catch (error) + /* istanbul ignore next */ + { + // There's a slight possibility that there could be some undiscovered bug + // in the pattern matcher code. Since the "leading digits < 3 matching" + // feature is not "essential" for operation, it can fall back to the old way + // in case of any issues rather than halting the application's execution. + console.error(error); + return true; + } + } // If at least `MIN_LEADING_DIGITS_LENGTH` digits of a national number are + // available then use the usual regular expression matching. + // + // The whole pattern is wrapped in round brackets (`()`) because + // the pattern can use "or" operator (`|`) at the top level of the pattern. + // + + + return new RegExp("^(".concat(leadingDigitsPattern, ")")).test(leadingDigits); + } + }, { + key: "getFormatFormat", + value: function getFormatFormat(format, international) { + return international ? format.internationalFormat() : format.format(); + } + }, { + key: "chooseFormat", + value: function chooseFormat(state) { + var _this3 = this; + + var _loop = function _loop() { + var format = _step2.value; + + // If this format is currently being used + // and is still suitable, then stick to it. + if (_this3.chosenFormat === format) { + return "break"; + } // Sometimes, a formatting rule inserts additional digits in a phone number, + // and "as you type" formatter can't do that: it should only use the digits + // that the user has input. + // + // For example, in Argentina, there's a format for mobile phone numbers: + // + // { + // "pattern": "(\\d)(\\d{2})(\\d{4})(\\d{4})", + // "leading_digits_patterns": ["91"], + // "national_prefix_formatting_rule": "0$1", + // "format": "$2 15-$3-$4", + // "international_format": "$1 $2 $3-$4" + // } + // + // In that format, `international_format` is used instead of `format` + // because `format` inserts `15` in the formatted number, + // and `AsYouType` formatter should only use the digits + // the user has actually input, without adding any extra digits. + // In this case, it wouldn't make a difference, because the `15` + // is first stripped when applying `national_prefix_for_parsing` + // and then re-added when using `format`, so in reality it doesn't + // add any new digits to the number, but to detect that, the code + // would have to be more complex: it would have to try formatting + // the digits using the format and then see if any digits have + // actually been added or removed, and then, every time a new digit + // is input, it should re-check whether the chosen format doesn't + // alter the digits. + // + // Google's code doesn't go that far, and so does this library: + // it simply requires that a `format` doesn't add any additonal + // digits to user's input. + // + // Also, people in general should move from inputting phone numbers + // in national format (possibly with national prefixes) + // and use international phone number format instead: + // it's a logical thing in the modern age of mobile phones, + // globalization and the internet. + // + + /* istanbul ignore if */ + + + if (!NON_ALTERING_FORMAT_REG_EXP.test(_this3.getFormatFormat(format, state.international))) { + return "continue"; + } + + if (!_this3.createTemplateForFormat(format, state)) { + // Remove the format if it can't generate a template. + _this3.matchingFormats = _this3.matchingFormats.filter(function (_) { + return _ !== format; + }); + return "continue"; + } + + _this3.chosenFormat = format; + return "break"; + }; + + // When there are multiple available formats, the formatter uses the first + // format where a formatting template could be created. + // + // For some weird reason, `istanbul` says "else path not taken" + // for the `for of` line below. Supposedly that means that + // the loop doesn't ever go over the last element in the list. + // That's true because there always is `this.chosenFormat` + // when `this.matchingFormats` is non-empty. + // And, for some weird reason, it doesn't think that the case + // with empty `this.matchingFormats` qualifies for a valid "else" path. + // So simply muting this `istanbul` warning. + // It doesn't skip the contents of the `for of` loop, + // it just skips the `for of` line. + // + + /* istanbul ignore next */ + for (var _iterator2 = _createForOfIteratorHelperLoose(this.matchingFormats.slice()), _step2; !(_step2 = _iterator2()).done;) { + var _ret = _loop(); + + if (_ret === "break") break; + if (_ret === "continue") continue; + } + + if (!this.chosenFormat) { + // No format matches the national (significant) phone number. + this.resetFormat(); + } + + return this.chosenFormat; + } + }, { + key: "createTemplateForFormat", + value: function createTemplateForFormat(format, state) { + // The formatter doesn't format numbers when numberPattern contains '|', e.g. + // (20|3)\d{4}. In those cases we quickly return. + // (Though there's no such format in current metadata) + + /* istanbul ignore if */ + if (SUPPORT_LEGACY_FORMATTING_PATTERNS && format.pattern().indexOf('|') >= 0) { + return; + } // Get formatting template for this phone number format + + + var template = this.getTemplateForFormat(format, state); // If the national number entered is too long + // for any phone number format, then abort. + + if (template) { + this.setNationalNumberTemplate(template, state); + return true; + } + } + }, { + key: "getSeparatorAfterNationalPrefix", + value: function getSeparatorAfterNationalPrefix(format) { + // `US` metadata doesn't have a `national_prefix_formatting_rule`, + // so the `if` condition below doesn't apply to `US`, + // but in reality there shoudl be a separator + // between a national prefix and a national (significant) number. + // So `US` national prefix separator is a "special" "hardcoded" case. + if (this.isNANP) { + return ' '; + } // If a `format` has a `national_prefix_formatting_rule` + // and that rule has a separator after a national prefix, + // then it means that there should be a separator + // between a national prefix and a national (significant) number. + + + if (format && format.nationalPrefixFormattingRule() && NATIONAL_PREFIX_SEPARATORS_PATTERN.test(format.nationalPrefixFormattingRule())) { + return ' '; + } // At this point, there seems to be no clear evidence that + // there should be a separator between a national prefix + // and a national (significant) number. So don't insert one. + + + return ''; + } + }, { + key: "getInternationalPrefixBeforeCountryCallingCode", + value: function getInternationalPrefixBeforeCountryCallingCode(_ref3, options) { + var IDDPrefix = _ref3.IDDPrefix, + missingPlus = _ref3.missingPlus; + + if (IDDPrefix) { + return options && options.spacing === false ? IDDPrefix : IDDPrefix + ' '; + } + + if (missingPlus) { + return ''; + } + + return '+'; + } + }, { + key: "getTemplate", + value: function getTemplate(state) { + if (!this.template) { + return; + } // `this.template` holds the template for a "complete" phone number. + // The currently entered phone number is most likely not "complete", + // so trim all non-populated digits. + + + var index = -1; + var i = 0; + var internationalPrefix = state.international ? this.getInternationalPrefixBeforeCountryCallingCode(state, { + spacing: false + }) : ''; + + while (i < internationalPrefix.length + state.getDigitsWithoutInternationalPrefix().length) { + index = this.template.indexOf(DIGIT_PLACEHOLDER, index + 1); + i++; + } + + return cutAndStripNonPairedParens(this.template, index + 1); + } + }, { + key: "setNationalNumberTemplate", + value: function setNationalNumberTemplate(template, state) { + this.nationalNumberTemplate = template; + this.populatedNationalNumberTemplate = template; // With a new formatting template, the matched position + // using the old template needs to be reset. + + this.populatedNationalNumberTemplatePosition = -1; // For convenience, the public `.template` property + // contains the whole international number + // if the phone number being input is international: + // 'x' for the '+' sign, 'x'es for the country phone code, + // a spacebar and then the template for the formatted national number. + + if (state.international) { + this.template = this.getInternationalPrefixBeforeCountryCallingCode(state).replace(/[\d\+]/g, DIGIT_PLACEHOLDER) + repeat(DIGIT_PLACEHOLDER, state.callingCode.length) + ' ' + template; + } else { + this.template = template; + } + } + /** + * Generates formatting template for a national phone number, + * optionally containing a national prefix, for a format. + * @param {Format} format + * @param {string} nationalPrefix + * @return {string} + */ + + }, { + key: "getTemplateForFormat", + value: function getTemplateForFormat(format, _ref4) { + var nationalSignificantNumber = _ref4.nationalSignificantNumber, + international = _ref4.international, + nationalPrefix = _ref4.nationalPrefix, + complexPrefixBeforeNationalSignificantNumber = _ref4.complexPrefixBeforeNationalSignificantNumber; + var pattern = format.pattern(); + /* istanbul ignore else */ + + if (SUPPORT_LEGACY_FORMATTING_PATTERNS) { + pattern = pattern // Replace anything in the form of [..] with \d + .replace(CREATE_CHARACTER_CLASS_PATTERN(), '\\d') // Replace any standalone digit (not the one in `{}`) with \d + .replace(CREATE_STANDALONE_DIGIT_PATTERN(), '\\d'); + } // Generate a dummy national number (consisting of `9`s) + // that fits this format's `pattern`. + // + // This match will always succeed, + // because the "longest dummy phone number" + // has enough length to accomodate any possible + // national phone number format pattern. + // + + + var digits = LONGEST_DUMMY_PHONE_NUMBER.match(pattern)[0]; // If the national number entered is too long + // for any phone number format, then abort. + + if (nationalSignificantNumber.length > digits.length) { + return; + } // Get a formatting template which can be used to efficiently format + // a partial number where digits are added one by one. + // Below `strictPattern` is used for the + // regular expression (with `^` and `$`). + // This wasn't originally in Google's `libphonenumber` + // and I guess they don't really need it + // because they're not using "templates" to format phone numbers + // but I added `strictPattern` after encountering + // South Korean phone number formatting bug. + // + // Non-strict regular expression bug demonstration: + // + // this.nationalSignificantNumber : `111111111` (9 digits) + // + // pattern : (\d{2})(\d{3,4})(\d{4}) + // format : `$1 $2 $3` + // digits : `9999999999` (10 digits) + // + // '9999999999'.replace(new RegExp(/(\d{2})(\d{3,4})(\d{4})/g), '$1 $2 $3') = "99 9999 9999" + // + // template : xx xxxx xxxx + // + // But the correct template in this case is `xx xxx xxxx`. + // The template was generated incorrectly because of the + // `{3,4}` variability in the `pattern`. + // + // The fix is, if `this.nationalSignificantNumber` has already sufficient length + // to satisfy the `pattern` completely then `this.nationalSignificantNumber` + // is used instead of `digits`. + + + var strictPattern = new RegExp('^' + pattern + '$'); + var nationalNumberDummyDigits = nationalSignificantNumber.replace(/\d/g, DUMMY_DIGIT); // If `this.nationalSignificantNumber` has already sufficient length + // to satisfy the `pattern` completely then use it + // instead of `digits`. + + if (strictPattern.test(nationalNumberDummyDigits)) { + digits = nationalNumberDummyDigits; + } + + var numberFormat = this.getFormatFormat(format, international); + var nationalPrefixIncludedInTemplate; // If a user did input a national prefix (and that's guaranteed), + // and if a `format` does have a national prefix formatting rule, + // then see if that national prefix formatting rule + // prepends exactly the same national prefix the user has input. + // If that's the case, then use the `format` with the national prefix formatting rule. + // Otherwise, use the `format` without the national prefix formatting rule, + // and prepend a national prefix manually to it. + + if (this.shouldTryNationalPrefixFormattingRule(format, { + international: international, + nationalPrefix: nationalPrefix + })) { + var numberFormatWithNationalPrefix = numberFormat.replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()); // If `national_prefix_formatting_rule` of a `format` simply prepends + // national prefix at the start of a national (significant) number, + // then such formatting can be used with `AsYouType` formatter. + // There seems to be no `else` case: everywhere in metadata, + // national prefix formatting rule is national prefix + $1, + // or `($1)`, in which case such format isn't even considered + // when the user has input a national prefix. + + /* istanbul ignore else */ + + if (parseDigits(format.nationalPrefixFormattingRule()) === (nationalPrefix || '') + parseDigits('$1')) { + numberFormat = numberFormatWithNationalPrefix; + nationalPrefixIncludedInTemplate = true; // Replace all digits of the national prefix in the formatting template + // with `DIGIT_PLACEHOLDER`s. + + if (nationalPrefix) { + var i = nationalPrefix.length; + + while (i > 0) { + numberFormat = numberFormat.replace(/\d/, DIGIT_PLACEHOLDER); + i--; + } + } + } + } // Generate formatting template for this phone number format. + + + var template = digits // Format the dummy phone number according to the format. + .replace(new RegExp(pattern), numberFormat) // Replace each dummy digit with a DIGIT_PLACEHOLDER. + .replace(new RegExp(DUMMY_DIGIT, 'g'), DIGIT_PLACEHOLDER); // If a prefix of a national (significant) number is not as simple + // as just a basic national prefix, then just prepend such prefix + // before the national (significant) number, optionally spacing + // the two with a whitespace. + + if (!nationalPrefixIncludedInTemplate) { + if (complexPrefixBeforeNationalSignificantNumber) { + // Prepend the prefix to the template manually. + template = repeat(DIGIT_PLACEHOLDER, complexPrefixBeforeNationalSignificantNumber.length) + ' ' + template; + } else if (nationalPrefix) { + // Prepend national prefix to the template manually. + template = repeat(DIGIT_PLACEHOLDER, nationalPrefix.length) + this.getSeparatorAfterNationalPrefix(format) + template; + } + } + + if (international) { + template = applyInternationalSeparatorStyle(template); + } + + return template; + } + }, { + key: "formatNextNationalNumberDigits", + value: function formatNextNationalNumberDigits(digits) { + var result = populateTemplateWithDigits(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition, digits); + + if (!result) { + // Reset the format. + this.resetFormat(); + return; + } + + this.populatedNationalNumberTemplate = result[0]; + this.populatedNationalNumberTemplatePosition = result[1]; // Return the formatted phone number so far. + + return cutAndStripNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1); // The old way which was good for `input-format` but is not so good + // for `react-phone-number-input`'s default input (`InputBasic`). + // return closeNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1) + // .replace(new RegExp(DIGIT_PLACEHOLDER, 'g'), ' ') + } + }, { + key: "shouldTryNationalPrefixFormattingRule", + value: function shouldTryNationalPrefixFormattingRule(format, _ref5) { + var international = _ref5.international, + nationalPrefix = _ref5.nationalPrefix; + + if (format.nationalPrefixFormattingRule()) { + // In some countries, `national_prefix_formatting_rule` is `($1)`, + // so it applies even if the user hasn't input a national prefix. + // `format.usesNationalPrefix()` detects such cases. + var usesNationalPrefix = format.usesNationalPrefix(); + + if (usesNationalPrefix && nationalPrefix || !usesNationalPrefix && !international) { + return true; + } + } + } + }]); + + return AsYouTypeFormatter; +}(); + +export { AsYouTypeFormatter as default }; +//# sourceMappingURL=AsYouTypeFormatter.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.js.map new file mode 100644 index 00000000..cabfce64 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsYouTypeFormatter.js","names":["DIGIT_PLACEHOLDER","countOccurences","repeat","cutAndStripNonPairedParens","closeNonPairedParens","stripNonPairedParens","populateTemplateWithDigits","formatCompleteNumber","canFormatCompleteNumber","PatternMatcher","parseDigits","FIRST_GROUP_PATTERN","VALID_PUNCTUATION","applyInternationalSeparatorStyle","DUMMY_DIGIT","LONGEST_NATIONAL_PHONE_NUMBER_LENGTH","LONGEST_DUMMY_PHONE_NUMBER","NATIONAL_PREFIX_SEPARATORS_PATTERN","SUPPORT_LEGACY_FORMATTING_PATTERNS","CREATE_CHARACTER_CLASS_PATTERN","CREATE_STANDALONE_DIGIT_PATTERN","NON_ALTERING_FORMAT_REG_EXP","RegExp","MIN_LEADING_DIGITS_LENGTH","AsYouTypeFormatter","state","metadata","resetFormat","chosenFormat","undefined","template","nationalNumberTemplate","populatedNationalNumberTemplate","populatedNationalNumberTemplatePosition","numberingPlan","isNANP","callingCode","matchingFormats","formats","nationalSignificantNumber","narrowDownMatchingFormats","nextDigits","format","formattedCompleteNumber","shouldTryNationalPrefixFormattingRule","international","nationalPrefix","getSeparatorAfterNationalPrefix","setNationalNumberTemplate","replace","lastIndexOf","formatNationalNumberWithNextDigits","previouslyChosenFormat","newlyChosenFormat","chooseFormat","formatNextNationalNumberDigits","getNationalDigits","leadingDigits","leadingDigitsPatternIndex","length","filter","formatSuits","formatMatches","indexOf","usesNationalPrefix","nationalPrefixIsOptionalWhenFormattingInNationalFormat","nationalPrefixIsMandatoryWhenFormattingInNationalFormat","leadingDigitsPatternsCount","leadingDigitsPatterns","Math","min","leadingDigitsPattern","match","allowOverflow","error","console","test","internationalFormat","getFormatFormat","createTemplateForFormat","_","slice","pattern","getTemplateForFormat","nationalPrefixFormattingRule","options","IDDPrefix","missingPlus","spacing","index","i","internationalPrefix","getInternationalPrefixBeforeCountryCallingCode","getDigitsWithoutInternationalPrefix","complexPrefixBeforeNationalSignificantNumber","digits","strictPattern","nationalNumberDummyDigits","numberFormat","nationalPrefixIncludedInTemplate","numberFormatWithNationalPrefix","result"],"sources":["../source/AsYouTypeFormatter.js"],"sourcesContent":["import {\r\n\tDIGIT_PLACEHOLDER,\r\n\tcountOccurences,\r\n\trepeat,\r\n\tcutAndStripNonPairedParens,\r\n\tcloseNonPairedParens,\r\n\tstripNonPairedParens,\r\n\tpopulateTemplateWithDigits\r\n} from './AsYouTypeFormatter.util.js'\r\n\r\nimport formatCompleteNumber, {\r\n\tcanFormatCompleteNumber\r\n} from './AsYouTypeFormatter.complete.js'\r\n\r\nimport PatternMatcher from './AsYouTypeFormatter.PatternMatcher.js'\r\n\r\nimport parseDigits from './helpers/parseDigits.js'\r\nexport { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.util.js'\r\nimport { FIRST_GROUP_PATTERN } from './helpers/formatNationalNumberUsingFormat.js'\r\nimport { VALID_PUNCTUATION } from './constants.js'\r\nimport applyInternationalSeparatorStyle from './helpers/applyInternationalSeparatorStyle.js'\r\n\r\n// Used in phone number format template creation.\r\n// Could be any digit, I guess.\r\nconst DUMMY_DIGIT = '9'\r\n// I don't know why is it exactly `15`\r\nconst LONGEST_NATIONAL_PHONE_NUMBER_LENGTH = 15\r\n// Create a phone number consisting only of the digit 9 that matches the\r\n// `number_pattern` by applying the pattern to the \"longest phone number\" string.\r\nconst LONGEST_DUMMY_PHONE_NUMBER = repeat(DUMMY_DIGIT, LONGEST_NATIONAL_PHONE_NUMBER_LENGTH)\r\n\r\n// A set of characters that, if found in a national prefix formatting rules, are an indicator to\r\n// us that we should separate the national prefix from the number when formatting.\r\nconst NATIONAL_PREFIX_SEPARATORS_PATTERN = /[- ]/\r\n\r\n// Deprecated: Google has removed some formatting pattern related code from their repo.\r\n// https://github.com/googlei18n/libphonenumber/commit/a395b4fef3caf57c4bc5f082e1152a4d2bd0ba4c\r\n// \"We no longer have numbers in formatting matching patterns, only \\d.\"\r\n// Because this library supports generating custom metadata\r\n// some users may still be using old metadata so the relevant\r\n// code seems to stay until some next major version update.\r\nconst SUPPORT_LEGACY_FORMATTING_PATTERNS = true\r\n\r\n// A pattern that is used to match character classes in regular expressions.\r\n// An example of a character class is \"[1-4]\".\r\nconst CREATE_CHARACTER_CLASS_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && (() => /\\[([^\\[\\]])*\\]/g)\r\n\r\n// Any digit in a regular expression that actually denotes a digit. For\r\n// example, in the regular expression \"80[0-2]\\d{6,10}\", the first 2 digits\r\n// (8 and 0) are standalone digits, but the rest are not.\r\n// Two look-aheads are needed because the number following \\\\d could be a\r\n// two-digit number, since the phone number can be as long as 15 digits.\r\nconst CREATE_STANDALONE_DIGIT_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && (() => /\\d(?=[^,}][^,}])/g)\r\n\r\n// A regular expression that is used to determine if a `format` is\r\n// suitable to be used in the \"as you type formatter\".\r\n// A `format` is suitable when the resulting formatted number has\r\n// the same digits as the user has entered.\r\n//\r\n// In the simplest case, that would mean that the format\r\n// doesn't add any additional digits when formatting a number.\r\n// Google says that it also shouldn't add \"star\" (`*`) characters,\r\n// like it does in some Israeli formats.\r\n// Such basic format would only contain \"valid punctuation\"\r\n// and \"captured group\" identifiers ($1, $2, etc).\r\n//\r\n// An example of a format that adds additional digits:\r\n//\r\n// Country: `AR` (Argentina).\r\n// Format:\r\n// {\r\n// \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\r\n// \"leading_digits_patterns\": [\"91\"],\r\n// \"national_prefix_formatting_rule\": \"0$1\",\r\n// \"format\": \"$2 15-$3-$4\",\r\n// \"international_format\": \"$1 $2 $3-$4\"\r\n// }\r\n//\r\n// In the format above, the `format` adds `15` to the digits when formatting a number.\r\n// A sidenote: this format actually is suitable because `national_prefix_for_parsing`\r\n// has previously removed `15` from a national number, so re-adding `15` in `format`\r\n// doesn't actually result in any extra digits added to user's input.\r\n// But verifying that would be a complex procedure, so the code chooses a simpler path:\r\n// it simply filters out all `format`s that contain anything but \"captured group\" ids.\r\n//\r\n// This regular expression is called `ELIGIBLE_FORMAT_PATTERN` in Google's\r\n// `libphonenumber` code.\r\n//\r\nconst NON_ALTERING_FORMAT_REG_EXP = new RegExp(\r\n\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t// Google developers say:\r\n\t// \"We require that the first matching group is present in the\r\n\t// output pattern to ensure no data is lost while formatting.\"\r\n\t'\\\\$1' +\r\n\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t'(\\\\$\\\\d[' + VALID_PUNCTUATION + ']*)*' +\r\n\t'$'\r\n)\r\n\r\n// This is the minimum length of the leading digits of a phone number\r\n// to guarantee the first \"leading digits pattern\" for a phone number format\r\n// to be preemptive.\r\nconst MIN_LEADING_DIGITS_LENGTH = 3\r\n\r\nexport default class AsYouTypeFormatter {\r\n\tconstructor({\r\n\t\tstate,\r\n\t\tmetadata\r\n\t}) {\r\n\t\tthis.metadata = metadata\r\n\t\tthis.resetFormat()\r\n\t}\r\n\r\n\tresetFormat() {\r\n\t\tthis.chosenFormat = undefined\r\n\t\tthis.template = undefined\r\n\t\tthis.nationalNumberTemplate = undefined\r\n\t\tthis.populatedNationalNumberTemplate = undefined\r\n\t\tthis.populatedNationalNumberTemplatePosition = -1\r\n\t}\r\n\r\n\treset(numberingPlan, state) {\r\n\t\tthis.resetFormat()\r\n\t\tif (numberingPlan) {\r\n\t\t\tthis.isNANP = numberingPlan.callingCode() === '1'\r\n\t\t\tthis.matchingFormats = numberingPlan.formats()\r\n\t\t\tif (state.nationalSignificantNumber) {\r\n\t\t\t\tthis.narrowDownMatchingFormats(state)\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.isNANP = undefined\r\n\t\t\tthis.matchingFormats = []\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Formats an updated phone number.\r\n\t * @param {string} nextDigits — Additional phone number digits.\r\n\t * @param {object} state — `AsYouType` state.\r\n\t * @return {[string]} Returns undefined if the updated phone number can't be formatted using any of the available formats.\r\n\t */\r\n\tformat(nextDigits, state) {\r\n\t\t// See if the phone number digits can be formatted as a complete phone number.\r\n\t\t// If not, use the results from `formatNationalNumberWithNextDigits()`,\r\n\t\t// which formats based on the chosen formatting pattern.\r\n\t\t//\r\n\t\t// Attempting to format complete phone number first is how it's done\r\n\t\t// in Google's `libphonenumber`, so this library just follows it.\r\n\t\t// Google's `libphonenumber` code doesn't explain in detail why does it\r\n\t\t// attempt to format digits as a complete phone number\r\n\t\t// instead of just going with a previoulsy (or newly) chosen `format`:\r\n\t\t//\r\n\t\t// \"Checks to see if there is an exact pattern match for these digits.\r\n\t\t// If so, we should use this instead of any other formatting template\r\n\t\t// whose leadingDigitsPattern also matches the input.\"\r\n\t\t//\r\n\t\tif (canFormatCompleteNumber(state.nationalSignificantNumber, this.metadata)) {\r\n\t\t\tfor (const format of this.matchingFormats) {\r\n\t\t\t\tconst formattedCompleteNumber = formatCompleteNumber(\r\n\t\t\t\t\tstate,\r\n\t\t\t\t\tformat,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tmetadata: this.metadata,\r\n\t\t\t\t\t\tshouldTryNationalPrefixFormattingRule: (format) => this.shouldTryNationalPrefixFormattingRule(format, {\r\n\t\t\t\t\t\t\tinternational: state.international,\r\n\t\t\t\t\t\t\tnationalPrefix: state.nationalPrefix\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tgetSeparatorAfterNationalPrefix: (format) => this.getSeparatorAfterNationalPrefix(format)\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t\t\tif (formattedCompleteNumber) {\r\n\t\t\t\t\tthis.resetFormat()\r\n\t\t\t\t\tthis.chosenFormat = format\r\n\t\t\t\t\tthis.setNationalNumberTemplate(formattedCompleteNumber.replace(/\\d/g, DIGIT_PLACEHOLDER), state)\r\n\t\t\t\t\tthis.populatedNationalNumberTemplate = formattedCompleteNumber\r\n\t\t\t\t\t// With a new formatting template, the matched position\r\n\t\t\t\t\t// using the old template needs to be reset.\r\n\t\t\t\t\tthis.populatedNationalNumberTemplatePosition = this.template.lastIndexOf(DIGIT_PLACEHOLDER)\r\n\t\t\t\t\treturn formattedCompleteNumber\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Format the digits as a partial (incomplete) phone number\r\n\t\t// using the previously chosen formatting pattern (or a newly chosen one).\r\n\t\treturn this.formatNationalNumberWithNextDigits(nextDigits, state)\r\n\t}\r\n\r\n\t// Formats the next phone number digits.\r\n\tformatNationalNumberWithNextDigits(nextDigits, state) {\r\n\t\tconst previouslyChosenFormat = this.chosenFormat\r\n\r\n\t\t// Choose a format from the list of matching ones.\r\n\t\tconst newlyChosenFormat = this.chooseFormat(state)\r\n\r\n\t\tif (newlyChosenFormat) {\r\n\t\t\tif (newlyChosenFormat === previouslyChosenFormat) {\r\n\t\t\t\t// If it can format the next (current) digits\r\n\t\t\t\t// using the previously chosen phone number format\r\n\t\t\t\t// then return the updated formatted number.\r\n\t\t\t\treturn this.formatNextNationalNumberDigits(nextDigits)\r\n\t\t\t} else {\r\n\t\t\t\t// If a more appropriate phone number format\r\n\t\t\t\t// has been chosen for these \"leading digits\",\r\n\t\t\t\t// then re-format the national phone number part\r\n\t\t\t\t// using the newly selected format.\r\n\t\t\t\treturn this.formatNextNationalNumberDigits(state.getNationalDigits())\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tnarrowDownMatchingFormats({\r\n\t\tnationalSignificantNumber,\r\n\t\tnationalPrefix,\r\n\t\tinternational\r\n\t}) {\r\n\t\tconst leadingDigits = nationalSignificantNumber\r\n\r\n\t\t// \"leading digits\" pattern list starts with a\r\n\t\t// \"leading digits\" pattern fitting a maximum of 3 leading digits.\r\n\t\t// So, after a user inputs 3 digits of a national (significant) phone number\r\n\t\t// this national (significant) number can already be formatted.\r\n\t\t// The next \"leading digits\" pattern is for 4 leading digits max,\r\n\t\t// and the \"leading digits\" pattern after it is for 5 leading digits max, etc.\r\n\r\n\t\t// This implementation is different from Google's\r\n\t\t// in that it searches for a fitting format\r\n\t\t// even if the user has entered less than\r\n\t\t// `MIN_LEADING_DIGITS_LENGTH` digits of a national number.\r\n\t\t// Because some leading digit patterns already match for a single first digit.\r\n\t\tlet leadingDigitsPatternIndex = leadingDigits.length - MIN_LEADING_DIGITS_LENGTH\r\n\t\tif (leadingDigitsPatternIndex < 0) {\r\n\t\t\tleadingDigitsPatternIndex = 0\r\n\t\t}\r\n\r\n\t\tthis.matchingFormats = this.matchingFormats.filter(\r\n\t\t\tformat => this.formatSuits(format, international, nationalPrefix)\r\n\t\t\t\t&& this.formatMatches(format, leadingDigits, leadingDigitsPatternIndex)\r\n\t\t)\r\n\r\n\t\t// If there was a phone number format chosen\r\n\t\t// and it no longer holds given the new leading digits then reset it.\r\n\t\t// The test for this `if` condition is marked as:\r\n\t\t// \"Reset a chosen format when it no longer holds given the new leading digits\".\r\n\t\t// To construct a valid test case for this one can find a country\r\n\t\t// in `PhoneNumberMetadata.xml` yielding one format for 3 ``\r\n\t\t// and yielding another format for 4 `` (Australia in this case).\r\n\t\tif (this.chosenFormat && this.matchingFormats.indexOf(this.chosenFormat) === -1) {\r\n\t\t\tthis.resetFormat()\r\n\t\t}\r\n\t}\r\n\r\n\tformatSuits(format, international, nationalPrefix) {\r\n\t\t// When a prefix before a national (significant) number is\r\n\t\t// simply a national prefix, then it's parsed as `this.nationalPrefix`.\r\n\t\t// In more complex cases, a prefix before national (significant) number\r\n\t\t// could include a national prefix as well as some \"capturing groups\",\r\n\t\t// and in that case there's no info whether a national prefix has been parsed.\r\n\t\t// If national prefix is not used when formatting a phone number\r\n\t\t// using this format, but a national prefix has been entered by the user,\r\n\t\t// and was extracted, then discard such phone number format.\r\n\t\t// In Google's \"AsYouType\" formatter code, the equivalent would be this part:\r\n\t\t// https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L175-L184\r\n\t\tif (nationalPrefix &&\r\n\t\t\t!format.usesNationalPrefix() &&\r\n\t\t\t// !format.domesticCarrierCodeFormattingRule() &&\r\n\t\t\t!format.nationalPrefixIsOptionalWhenFormattingInNationalFormat()) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\t// If national prefix is mandatory for this phone number format\r\n\t\t// and there're no guarantees that a national prefix is present in user input\r\n\t\t// then discard this phone number format as not suitable.\r\n\t\t// In Google's \"AsYouType\" formatter code, the equivalent would be this part:\r\n\t\t// https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L185-L193\r\n\t\tif (!international &&\r\n\t\t\t!nationalPrefix &&\r\n\t\t\tformat.nationalPrefixIsMandatoryWhenFormattingInNationalFormat()) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn true\r\n\t}\r\n\r\n\tformatMatches(format, leadingDigits, leadingDigitsPatternIndex) {\r\n\t\tconst leadingDigitsPatternsCount = format.leadingDigitsPatterns().length\r\n\r\n\t\t// If this format is not restricted to a certain\r\n\t\t// leading digits pattern then it fits.\r\n\t\t// The test case could be found by searching for \"leadingDigitsPatternsCount === 0\".\r\n\t\tif (leadingDigitsPatternsCount === 0) {\r\n\t\t\treturn true\r\n\t\t}\r\n\r\n\t\t// Start narrowing down the list of possible formats based on the leading digits.\r\n\t\t// (only previously matched formats take part in the narrowing down process)\r\n\r\n\t\t// `leading_digits_patterns` start with 3 digits min\r\n\t\t// and then go up from there one digit at a time.\r\n\t\tleadingDigitsPatternIndex = Math.min(leadingDigitsPatternIndex, leadingDigitsPatternsCount - 1)\r\n\t\tconst leadingDigitsPattern = format.leadingDigitsPatterns()[leadingDigitsPatternIndex]\r\n\r\n\t\t// Google imposes a requirement on the leading digits\r\n\t\t// to be minimum 3 digits long in order to be eligible\r\n\t\t// for checking those with a leading digits pattern.\r\n\t\t//\r\n\t\t// Since `leading_digits_patterns` start with 3 digits min,\r\n\t\t// Google's original `libphonenumber` library only starts\r\n\t\t// excluding any non-matching formats only when the\r\n\t\t// national number entered so far is at least 3 digits long,\r\n\t\t// otherwise format matching would give false negatives.\r\n\t\t//\r\n\t\t// For example, when the digits entered so far are `2`\r\n\t\t// and the leading digits pattern is `21` –\r\n\t\t// it's quite obvious in this case that the format could be the one\r\n\t\t// but due to the absence of further digits it would give false negative.\r\n\t\t//\r\n\t\t// Also, `leading_digits_patterns` doesn't always correspond to a single\r\n\t\t// digits count. For example, `60|8` pattern would already match `8`\r\n\t\t// but the `60` part would require having at least two leading digits,\r\n\t\t// so the whole pattern would require inputting two digits first in order to\r\n\t\t// decide on whether it matches the input, even when the input is \"80\".\r\n\t\t//\r\n\t\t// This library — `libphonenumber-js` — allows filtering by `leading_digits_patterns`\r\n\t\t// even when there's only 1 or 2 digits of the national (significant) number.\r\n\t\t// To do that, it uses a non-strict pattern matcher written specifically for that.\r\n\t\t//\r\n\t\tif (leadingDigits.length < MIN_LEADING_DIGITS_LENGTH) {\r\n\t\t\t// Before leading digits < 3 matching was implemented:\r\n\t\t\t// return true\r\n\t\t\t//\r\n\t\t\t// After leading digits < 3 matching was implemented:\r\n\t\t\ttry {\r\n\t\t\t\treturn new PatternMatcher(leadingDigitsPattern).match(leadingDigits, { allowOverflow: true }) !== undefined\r\n\t\t\t} catch (error) /* istanbul ignore next */ {\r\n\t\t\t\t// There's a slight possibility that there could be some undiscovered bug\r\n\t\t\t\t// in the pattern matcher code. Since the \"leading digits < 3 matching\"\r\n\t\t\t\t// feature is not \"essential\" for operation, it can fall back to the old way\r\n\t\t\t\t// in case of any issues rather than halting the application's execution.\r\n\t\t\t\tconsole.error(error)\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// If at least `MIN_LEADING_DIGITS_LENGTH` digits of a national number are\r\n\t\t// available then use the usual regular expression matching.\r\n\t\t//\r\n\t\t// The whole pattern is wrapped in round brackets (`()`) because\r\n\t\t// the pattern can use \"or\" operator (`|`) at the top level of the pattern.\r\n\t\t//\r\n\t\treturn new RegExp(`^(${leadingDigitsPattern})`).test(leadingDigits)\r\n\t}\r\n\r\n\tgetFormatFormat(format, international) {\r\n\t\treturn international ? format.internationalFormat() : format.format()\r\n\t}\r\n\r\n\tchooseFormat(state) {\r\n\t\t// When there are multiple available formats, the formatter uses the first\r\n\t\t// format where a formatting template could be created.\r\n\t\t//\r\n\t\t// For some weird reason, `istanbul` says \"else path not taken\"\r\n\t\t// for the `for of` line below. Supposedly that means that\r\n\t\t// the loop doesn't ever go over the last element in the list.\r\n\t\t// That's true because there always is `this.chosenFormat`\r\n\t\t// when `this.matchingFormats` is non-empty.\r\n\t\t// And, for some weird reason, it doesn't think that the case\r\n\t\t// with empty `this.matchingFormats` qualifies for a valid \"else\" path.\r\n\t\t// So simply muting this `istanbul` warning.\r\n\t\t// It doesn't skip the contents of the `for of` loop,\r\n\t\t// it just skips the `for of` line.\r\n\t\t//\r\n\t\t/* istanbul ignore next */\r\n\t\tfor (const format of this.matchingFormats.slice()) {\r\n\t\t\t// If this format is currently being used\r\n\t\t\t// and is still suitable, then stick to it.\r\n\t\t\tif (this.chosenFormat === format) {\r\n\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t\t// Sometimes, a formatting rule inserts additional digits in a phone number,\r\n\t\t\t// and \"as you type\" formatter can't do that: it should only use the digits\r\n\t\t\t// that the user has input.\r\n\t\t\t//\r\n\t\t\t// For example, in Argentina, there's a format for mobile phone numbers:\r\n\t\t\t//\r\n\t\t\t// {\r\n\t\t\t// \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\r\n\t\t\t// \"leading_digits_patterns\": [\"91\"],\r\n\t\t\t// \"national_prefix_formatting_rule\": \"0$1\",\r\n\t\t\t// \"format\": \"$2 15-$3-$4\",\r\n\t\t\t// \"international_format\": \"$1 $2 $3-$4\"\r\n\t\t\t// }\r\n\t\t\t//\r\n\t\t\t// In that format, `international_format` is used instead of `format`\r\n\t\t\t// because `format` inserts `15` in the formatted number,\r\n\t\t\t// and `AsYouType` formatter should only use the digits\r\n\t\t\t// the user has actually input, without adding any extra digits.\r\n\t\t\t// In this case, it wouldn't make a difference, because the `15`\r\n\t\t\t// is first stripped when applying `national_prefix_for_parsing`\r\n\t\t\t// and then re-added when using `format`, so in reality it doesn't\r\n\t\t\t// add any new digits to the number, but to detect that, the code\r\n\t\t\t// would have to be more complex: it would have to try formatting\r\n\t\t\t// the digits using the format and then see if any digits have\r\n\t\t\t// actually been added or removed, and then, every time a new digit\r\n\t\t\t// is input, it should re-check whether the chosen format doesn't\r\n\t\t\t// alter the digits.\r\n\t\t\t//\r\n\t\t\t// Google's code doesn't go that far, and so does this library:\r\n\t\t\t// it simply requires that a `format` doesn't add any additonal\r\n\t\t\t// digits to user's input.\r\n\t\t\t//\r\n\t\t\t// Also, people in general should move from inputting phone numbers\r\n\t\t\t// in national format (possibly with national prefixes)\r\n\t\t\t// and use international phone number format instead:\r\n\t\t\t// it's a logical thing in the modern age of mobile phones,\r\n\t\t\t// globalization and the internet.\r\n\t\t\t//\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (!NON_ALTERING_FORMAT_REG_EXP.test(this.getFormatFormat(format, state.international))) {\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\t\t\tif (!this.createTemplateForFormat(format, state)) {\r\n\t\t\t\t// Remove the format if it can't generate a template.\r\n\t\t\t\tthis.matchingFormats = this.matchingFormats.filter(_ => _ !== format)\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\t\t\tthis.chosenFormat = format\r\n\t\t\tbreak\r\n\t\t}\r\n\t\tif (!this.chosenFormat) {\r\n\t\t\t// No format matches the national (significant) phone number.\r\n\t\t\tthis.resetFormat()\r\n\t\t}\r\n\t\treturn this.chosenFormat\r\n\t}\r\n\r\n\tcreateTemplateForFormat(format, state) {\r\n\t\t// The formatter doesn't format numbers when numberPattern contains '|', e.g.\r\n\t\t// (20|3)\\d{4}. In those cases we quickly return.\r\n\t\t// (Though there's no such format in current metadata)\r\n\t\t/* istanbul ignore if */\r\n\t\tif (SUPPORT_LEGACY_FORMATTING_PATTERNS && format.pattern().indexOf('|') >= 0) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// Get formatting template for this phone number format\r\n\t\tconst template = this.getTemplateForFormat(format, state)\r\n\t\t// If the national number entered is too long\r\n\t\t// for any phone number format, then abort.\r\n\t\tif (template) {\r\n\t\t\tthis.setNationalNumberTemplate(template, state)\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\tgetSeparatorAfterNationalPrefix(format) {\r\n\t\t// `US` metadata doesn't have a `national_prefix_formatting_rule`,\r\n\t\t// so the `if` condition below doesn't apply to `US`,\r\n\t\t// but in reality there shoudl be a separator\r\n\t\t// between a national prefix and a national (significant) number.\r\n\t\t// So `US` national prefix separator is a \"special\" \"hardcoded\" case.\r\n\t\tif (this.isNANP) {\r\n\t\t\treturn ' '\r\n\t\t}\r\n\t\t// If a `format` has a `national_prefix_formatting_rule`\r\n\t\t// and that rule has a separator after a national prefix,\r\n\t\t// then it means that there should be a separator\r\n\t\t// between a national prefix and a national (significant) number.\r\n\t\tif (format &&\r\n\t\t\tformat.nationalPrefixFormattingRule() &&\r\n\t\t\tNATIONAL_PREFIX_SEPARATORS_PATTERN.test(format.nationalPrefixFormattingRule())) {\r\n\t\t\treturn ' '\r\n\t\t}\r\n\t\t// At this point, there seems to be no clear evidence that\r\n\t\t// there should be a separator between a national prefix\r\n\t\t// and a national (significant) number. So don't insert one.\r\n\t\treturn ''\r\n\t}\r\n\r\n\tgetInternationalPrefixBeforeCountryCallingCode({ IDDPrefix, missingPlus }, options) {\r\n\t\tif (IDDPrefix) {\r\n\t\t\treturn options && options.spacing === false ? IDDPrefix : IDDPrefix + ' '\r\n\t\t}\r\n\t\tif (missingPlus) {\r\n\t\t\treturn ''\r\n\t\t}\r\n\t\treturn '+'\r\n\t}\r\n\r\n\tgetTemplate(state) {\r\n\t\tif (!this.template) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// `this.template` holds the template for a \"complete\" phone number.\r\n\t\t// The currently entered phone number is most likely not \"complete\",\r\n\t\t// so trim all non-populated digits.\r\n\t\tlet index = -1\r\n\t\tlet i = 0\r\n\t\tconst internationalPrefix = state.international ? this.getInternationalPrefixBeforeCountryCallingCode(state, { spacing: false }) : ''\r\n\t\twhile (i < internationalPrefix.length + state.getDigitsWithoutInternationalPrefix().length) {\r\n\t\t\tindex = this.template.indexOf(DIGIT_PLACEHOLDER, index + 1)\r\n\t\t\ti++\r\n\t\t}\r\n\t\treturn cutAndStripNonPairedParens(this.template, index + 1)\r\n\t}\r\n\r\n\tsetNationalNumberTemplate(template, state) {\r\n\t\tthis.nationalNumberTemplate = template\r\n\t\tthis.populatedNationalNumberTemplate = template\r\n\t\t// With a new formatting template, the matched position\r\n\t\t// using the old template needs to be reset.\r\n\t\tthis.populatedNationalNumberTemplatePosition = -1\r\n\t\t// For convenience, the public `.template` property\r\n\t\t// contains the whole international number\r\n\t\t// if the phone number being input is international:\r\n\t\t// 'x' for the '+' sign, 'x'es for the country phone code,\r\n\t\t// a spacebar and then the template for the formatted national number.\r\n\t\tif (state.international) {\r\n\t\t\tthis.template =\r\n\t\t\t\tthis.getInternationalPrefixBeforeCountryCallingCode(state).replace(/[\\d\\+]/g, DIGIT_PLACEHOLDER) +\r\n\t\t\t\trepeat(DIGIT_PLACEHOLDER, state.callingCode.length) +\r\n\t\t\t\t' ' +\r\n\t\t\t\ttemplate\r\n\t\t} else {\r\n\t\t\tthis.template = template\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Generates formatting template for a national phone number,\r\n\t * optionally containing a national prefix, for a format.\r\n\t * @param {Format} format\r\n\t * @param {string} nationalPrefix\r\n\t * @return {string}\r\n\t */\r\n\tgetTemplateForFormat(format, {\r\n\t\tnationalSignificantNumber,\r\n\t\tinternational,\r\n\t\tnationalPrefix,\r\n\t\tcomplexPrefixBeforeNationalSignificantNumber\r\n\t}) {\r\n\t\tlet pattern = format.pattern()\r\n\r\n\t\t/* istanbul ignore else */\r\n\t\tif (SUPPORT_LEGACY_FORMATTING_PATTERNS) {\r\n\t\t\tpattern = pattern\r\n\t\t\t\t// Replace anything in the form of [..] with \\d\r\n\t\t\t\t.replace(CREATE_CHARACTER_CLASS_PATTERN(), '\\\\d')\r\n\t\t\t\t// Replace any standalone digit (not the one in `{}`) with \\d\r\n\t\t\t\t.replace(CREATE_STANDALONE_DIGIT_PATTERN(), '\\\\d')\r\n\t\t}\r\n\r\n\t\t// Generate a dummy national number (consisting of `9`s)\r\n\t\t// that fits this format's `pattern`.\r\n\t\t//\r\n\t\t// This match will always succeed,\r\n\t\t// because the \"longest dummy phone number\"\r\n\t\t// has enough length to accomodate any possible\r\n\t\t// national phone number format pattern.\r\n\t\t//\r\n\t\tlet digits = LONGEST_DUMMY_PHONE_NUMBER.match(pattern)[0]\r\n\r\n\t\t// If the national number entered is too long\r\n\t\t// for any phone number format, then abort.\r\n\t\tif (nationalSignificantNumber.length > digits.length) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// Get a formatting template which can be used to efficiently format\r\n\t\t// a partial number where digits are added one by one.\r\n\r\n\t\t// Below `strictPattern` is used for the\r\n\t\t// regular expression (with `^` and `$`).\r\n\t\t// This wasn't originally in Google's `libphonenumber`\r\n\t\t// and I guess they don't really need it\r\n\t\t// because they're not using \"templates\" to format phone numbers\r\n\t\t// but I added `strictPattern` after encountering\r\n\t\t// South Korean phone number formatting bug.\r\n\t\t//\r\n\t\t// Non-strict regular expression bug demonstration:\r\n\t\t//\r\n\t\t// this.nationalSignificantNumber : `111111111` (9 digits)\r\n\t\t//\r\n\t\t// pattern : (\\d{2})(\\d{3,4})(\\d{4})\r\n\t\t// format : `$1 $2 $3`\r\n\t\t// digits : `9999999999` (10 digits)\r\n\t\t//\r\n\t\t// '9999999999'.replace(new RegExp(/(\\d{2})(\\d{3,4})(\\d{4})/g), '$1 $2 $3') = \"99 9999 9999\"\r\n\t\t//\r\n\t\t// template : xx xxxx xxxx\r\n\t\t//\r\n\t\t// But the correct template in this case is `xx xxx xxxx`.\r\n\t\t// The template was generated incorrectly because of the\r\n\t\t// `{3,4}` variability in the `pattern`.\r\n\t\t//\r\n\t\t// The fix is, if `this.nationalSignificantNumber` has already sufficient length\r\n\t\t// to satisfy the `pattern` completely then `this.nationalSignificantNumber`\r\n\t\t// is used instead of `digits`.\r\n\r\n\t\tconst strictPattern = new RegExp('^' + pattern + '$')\r\n\t\tconst nationalNumberDummyDigits = nationalSignificantNumber.replace(/\\d/g, DUMMY_DIGIT)\r\n\r\n\t\t// If `this.nationalSignificantNumber` has already sufficient length\r\n\t\t// to satisfy the `pattern` completely then use it\r\n\t\t// instead of `digits`.\r\n\t\tif (strictPattern.test(nationalNumberDummyDigits)) {\r\n\t\t\tdigits = nationalNumberDummyDigits\r\n\t\t}\r\n\r\n\t\tlet numberFormat = this.getFormatFormat(format, international)\r\n\t\tlet nationalPrefixIncludedInTemplate\r\n\r\n\t\t// If a user did input a national prefix (and that's guaranteed),\r\n\t\t// and if a `format` does have a national prefix formatting rule,\r\n\t\t// then see if that national prefix formatting rule\r\n\t\t// prepends exactly the same national prefix the user has input.\r\n\t\t// If that's the case, then use the `format` with the national prefix formatting rule.\r\n\t\t// Otherwise, use the `format` without the national prefix formatting rule,\r\n\t\t// and prepend a national prefix manually to it.\r\n\t\tif (this.shouldTryNationalPrefixFormattingRule(format, { international, nationalPrefix })) {\r\n\t\t\tconst numberFormatWithNationalPrefix = numberFormat.replace(\r\n\t\t\t\tFIRST_GROUP_PATTERN,\r\n\t\t\t\tformat.nationalPrefixFormattingRule()\r\n\t\t\t)\r\n\t\t\t// If `national_prefix_formatting_rule` of a `format` simply prepends\r\n\t\t\t// national prefix at the start of a national (significant) number,\r\n\t\t\t// then such formatting can be used with `AsYouType` formatter.\r\n\t\t\t// There seems to be no `else` case: everywhere in metadata,\r\n\t\t\t// national prefix formatting rule is national prefix + $1,\r\n\t\t\t// or `($1)`, in which case such format isn't even considered\r\n\t\t\t// when the user has input a national prefix.\r\n\t\t\t/* istanbul ignore else */\r\n\t\t\tif (parseDigits(format.nationalPrefixFormattingRule()) === (nationalPrefix || '') + parseDigits('$1')) {\r\n\t\t\t\tnumberFormat = numberFormatWithNationalPrefix\r\n\t\t\t\tnationalPrefixIncludedInTemplate = true\r\n\t\t\t\t// Replace all digits of the national prefix in the formatting template\r\n\t\t\t\t// with `DIGIT_PLACEHOLDER`s.\r\n\t\t\t\tif (nationalPrefix) {\r\n\t\t\t\t\tlet i = nationalPrefix.length\r\n\t\t\t\t\twhile (i > 0) {\r\n\t\t\t\t\t\tnumberFormat = numberFormat.replace(/\\d/, DIGIT_PLACEHOLDER)\r\n\t\t\t\t\t\ti--\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Generate formatting template for this phone number format.\r\n\t\tlet template = digits\r\n\t\t\t// Format the dummy phone number according to the format.\r\n\t\t\t.replace(new RegExp(pattern), numberFormat)\r\n\t\t\t// Replace each dummy digit with a DIGIT_PLACEHOLDER.\r\n\t\t\t.replace(new RegExp(DUMMY_DIGIT, 'g'), DIGIT_PLACEHOLDER)\r\n\r\n\t\t// If a prefix of a national (significant) number is not as simple\r\n\t\t// as just a basic national prefix, then just prepend such prefix\r\n\t\t// before the national (significant) number, optionally spacing\r\n\t\t// the two with a whitespace.\r\n\t\tif (!nationalPrefixIncludedInTemplate) {\r\n\t\t\tif (complexPrefixBeforeNationalSignificantNumber) {\r\n\t\t\t\t// Prepend the prefix to the template manually.\r\n\t\t\t\ttemplate = repeat(DIGIT_PLACEHOLDER, complexPrefixBeforeNationalSignificantNumber.length) +\r\n\t\t\t\t\t' ' +\r\n\t\t\t\t\ttemplate\r\n\t\t\t} else if (nationalPrefix) {\r\n\t\t\t\t// Prepend national prefix to the template manually.\r\n\t\t\t\ttemplate = repeat(DIGIT_PLACEHOLDER, nationalPrefix.length) +\r\n\t\t\t\t\tthis.getSeparatorAfterNationalPrefix(format) +\r\n\t\t\t\t\ttemplate\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (international) {\r\n\t\t\ttemplate = applyInternationalSeparatorStyle(template)\r\n\t\t}\r\n\r\n\t\treturn template\r\n\t}\r\n\r\n\tformatNextNationalNumberDigits(digits) {\r\n\t\tconst result = populateTemplateWithDigits(\r\n\t\t\tthis.populatedNationalNumberTemplate,\r\n\t\t\tthis.populatedNationalNumberTemplatePosition,\r\n\t\t\tdigits\r\n\t\t)\r\n\r\n\t\tif (!result) {\r\n\t\t\t// Reset the format.\r\n\t\t\tthis.resetFormat()\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tthis.populatedNationalNumberTemplate = result[0]\r\n\t\tthis.populatedNationalNumberTemplatePosition = result[1]\r\n\r\n\t\t// Return the formatted phone number so far.\r\n\t\treturn cutAndStripNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1)\r\n\r\n\t\t// The old way which was good for `input-format` but is not so good\r\n\t\t// for `react-phone-number-input`'s default input (`InputBasic`).\r\n\t\t// return closeNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1)\r\n\t\t// \t.replace(new RegExp(DIGIT_PLACEHOLDER, 'g'), ' ')\r\n\t}\r\n\r\n\tshouldTryNationalPrefixFormattingRule(format, { international, nationalPrefix }) {\r\n\t\tif (format.nationalPrefixFormattingRule()) {\r\n\t\t\t// In some countries, `national_prefix_formatting_rule` is `($1)`,\r\n\t\t\t// so it applies even if the user hasn't input a national prefix.\r\n\t\t\t// `format.usesNationalPrefix()` detects such cases.\r\n\t\t\tconst usesNationalPrefix = format.usesNationalPrefix()\r\n\t\t\tif ((usesNationalPrefix && nationalPrefix) ||\r\n\t\t\t\t(!usesNationalPrefix && !international)) {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.util.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.util.js new file mode 100644 index 00000000..97abfb48 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.util.js @@ -0,0 +1,122 @@ +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +// Should be the same as `DIGIT_PLACEHOLDER` in `libphonenumber-metadata-generator`. +export var DIGIT_PLACEHOLDER = 'x'; // '\u2008' (punctuation space) + +var DIGIT_PLACEHOLDER_MATCHER = new RegExp(DIGIT_PLACEHOLDER); // Counts all occurences of a symbol in a string. +// Unicode-unsafe (because using `.split()`). + +export function countOccurences(symbol, string) { + var count = 0; // Using `.split('')` to iterate through a string here + // to avoid requiring `Symbol.iterator` polyfill. + // `.split('')` is generally not safe for Unicode, + // but in this particular case for counting brackets it is safe. + // for (const character of string) + + for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) { + var character = _step.value; + + if (character === symbol) { + count++; + } + } + + return count; +} // Repeats a string (or a symbol) N times. +// http://stackoverflow.com/questions/202605/repeat-string-javascript + +export function repeat(string, times) { + if (times < 1) { + return ''; + } + + var result = ''; + + while (times > 1) { + if (times & 1) { + result += string; + } + + times >>= 1; + string += string; + } + + return result + string; +} +export function cutAndStripNonPairedParens(string, cutBeforeIndex) { + if (string[cutBeforeIndex] === ')') { + cutBeforeIndex++; + } + + return stripNonPairedParens(string.slice(0, cutBeforeIndex)); +} +export function closeNonPairedParens(template, cut_before) { + var retained_template = template.slice(0, cut_before); + var opening_braces = countOccurences('(', retained_template); + var closing_braces = countOccurences(')', retained_template); + var dangling_braces = opening_braces - closing_braces; + + while (dangling_braces > 0 && cut_before < template.length) { + if (template[cut_before] === ')') { + dangling_braces--; + } + + cut_before++; + } + + return template.slice(0, cut_before); +} +export function stripNonPairedParens(string) { + var dangling_braces = []; + var i = 0; + + while (i < string.length) { + if (string[i] === '(') { + dangling_braces.push(i); + } else if (string[i] === ')') { + dangling_braces.pop(); + } + + i++; + } + + var start = 0; + var cleared_string = ''; + dangling_braces.push(string.length); + + for (var _i = 0, _dangling_braces = dangling_braces; _i < _dangling_braces.length; _i++) { + var index = _dangling_braces[_i]; + cleared_string += string.slice(start, index); + start = index + 1; + } + + return cleared_string; +} +export function populateTemplateWithDigits(template, position, digits) { + // Using `.split('')` to iterate through a string here + // to avoid requiring `Symbol.iterator` polyfill. + // `.split('')` is generally not safe for Unicode, + // but in this particular case for `digits` it is safe. + // for (const digit of digits) + for (var _iterator2 = _createForOfIteratorHelperLoose(digits.split('')), _step2; !(_step2 = _iterator2()).done;) { + var digit = _step2.value; + + // If there is room for more digits in current `template`, + // then set the next digit in the `template`, + // and return the formatted digits so far. + // If more digits are entered than the current format could handle. + if (template.slice(position + 1).search(DIGIT_PLACEHOLDER_MATCHER) < 0) { + return; + } + + position = template.search(DIGIT_PLACEHOLDER_MATCHER); + template = template.replace(DIGIT_PLACEHOLDER_MATCHER, digit); + } + + return [template, position]; +} +//# sourceMappingURL=AsYouTypeFormatter.util.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.util.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.util.js.map new file mode 100644 index 00000000..17e5a126 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsYouTypeFormatter.util.js","names":["DIGIT_PLACEHOLDER","DIGIT_PLACEHOLDER_MATCHER","RegExp","countOccurences","symbol","string","count","split","character","repeat","times","result","cutAndStripNonPairedParens","cutBeforeIndex","stripNonPairedParens","slice","closeNonPairedParens","template","cut_before","retained_template","opening_braces","closing_braces","dangling_braces","length","i","push","pop","start","cleared_string","index","populateTemplateWithDigits","position","digits","digit","search","replace"],"sources":["../source/AsYouTypeFormatter.util.js"],"sourcesContent":["// Should be the same as `DIGIT_PLACEHOLDER` in `libphonenumber-metadata-generator`.\r\nexport const DIGIT_PLACEHOLDER = 'x' // '\\u2008' (punctuation space)\r\nconst DIGIT_PLACEHOLDER_MATCHER = new RegExp(DIGIT_PLACEHOLDER)\r\n\r\n// Counts all occurences of a symbol in a string.\r\n// Unicode-unsafe (because using `.split()`).\r\nexport function countOccurences(symbol, string) {\r\n\tlet count = 0\r\n\t// Using `.split('')` to iterate through a string here\r\n\t// to avoid requiring `Symbol.iterator` polyfill.\r\n\t// `.split('')` is generally not safe for Unicode,\r\n\t// but in this particular case for counting brackets it is safe.\r\n\t// for (const character of string)\r\n\tfor (const character of string.split('')) {\r\n\t\tif (character === symbol) {\r\n\t\t\tcount++\r\n\t\t}\r\n\t}\r\n\treturn count\r\n}\r\n\r\n// Repeats a string (or a symbol) N times.\r\n// http://stackoverflow.com/questions/202605/repeat-string-javascript\r\nexport function repeat(string, times) {\r\n\tif (times < 1) {\r\n\t\treturn ''\r\n\t}\r\n\tlet result = ''\r\n\twhile (times > 1) {\r\n\t\tif (times & 1) {\r\n\t\t\tresult += string\r\n\t\t}\r\n\t\ttimes >>= 1\r\n\t\tstring += string\r\n\t}\r\n\treturn result + string\r\n}\r\n\r\nexport function cutAndStripNonPairedParens(string, cutBeforeIndex) {\r\n\tif (string[cutBeforeIndex] === ')') {\r\n\t\tcutBeforeIndex++\r\n\t}\r\n\treturn stripNonPairedParens(string.slice(0, cutBeforeIndex))\r\n}\r\n\r\nexport function closeNonPairedParens(template, cut_before) {\r\n\tconst retained_template = template.slice(0, cut_before)\r\n\tconst opening_braces = countOccurences('(', retained_template)\r\n\tconst closing_braces = countOccurences(')', retained_template)\r\n\tlet dangling_braces = opening_braces - closing_braces\r\n\twhile (dangling_braces > 0 && cut_before < template.length) {\r\n\t\tif (template[cut_before] === ')') {\r\n\t\t\tdangling_braces--\r\n\t\t}\r\n\t\tcut_before++\r\n\t}\r\n\treturn template.slice(0, cut_before)\r\n}\r\n\r\nexport function stripNonPairedParens(string) {\r\n\tconst dangling_braces =[]\r\n\tlet i = 0\r\n\twhile (i < string.length) {\r\n\t\tif (string[i] === '(') {\r\n\t\t\tdangling_braces.push(i)\r\n\t\t}\r\n\t\telse if (string[i] === ')') {\r\n\t\t\tdangling_braces.pop()\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\tlet start = 0\r\n\tlet cleared_string = ''\r\n\tdangling_braces.push(string.length)\r\n\tfor (const index of dangling_braces) {\r\n\t\tcleared_string += string.slice(start, index)\r\n\t\tstart = index + 1\r\n\t}\r\n\treturn cleared_string\r\n}\r\n\r\nexport function populateTemplateWithDigits(template, position, digits) {\r\n\t// Using `.split('')` to iterate through a string here\r\n\t// to avoid requiring `Symbol.iterator` polyfill.\r\n\t// `.split('')` is generally not safe for Unicode,\r\n\t// but in this particular case for `digits` it is safe.\r\n\t// for (const digit of digits)\r\n\tfor (const digit of digits.split('')) {\r\n\t\t// If there is room for more digits in current `template`,\r\n\t\t// then set the next digit in the `template`,\r\n\t\t// and return the formatted digits so far.\r\n\t\t// If more digits are entered than the current format could handle.\r\n\t\tif (template.slice(position + 1).search(DIGIT_PLACEHOLDER_MATCHER) < 0) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tposition = template.search(DIGIT_PLACEHOLDER_MATCHER)\r\n\t\ttemplate = template.replace(DIGIT_PLACEHOLDER_MATCHER, digit)\r\n\t}\r\n\treturn [template, position]\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.util.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.util.test.js new file mode 100644 index 00000000..f0307c3f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.util.test.js @@ -0,0 +1,20 @@ +import { closeNonPairedParens, stripNonPairedParens, repeat } from './AsYouTypeFormatter.util.js'; +describe('closeNonPairedParens', function () { + it('should close non-paired braces', function () { + closeNonPairedParens('(000) 123-45 (9 )', 15).should.equal('(000) 123-45 (9 )'); + }); +}); +describe('stripNonPairedParens', function () { + it('should strip non-paired braces', function () { + stripNonPairedParens('(000) 123-45 (9').should.equal('(000) 123-45 9'); + stripNonPairedParens('(000) 123-45 (9)').should.equal('(000) 123-45 (9)'); + }); +}); +describe('repeat', function () { + it('should repeat string N times', function () { + repeat('a', 0).should.equal(''); + repeat('a', 3).should.equal('aaa'); + repeat('a', 4).should.equal('aaaa'); + }); +}); +//# sourceMappingURL=AsYouTypeFormatter.util.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.util.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.util.test.js.map new file mode 100644 index 00000000..071acd59 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.util.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsYouTypeFormatter.util.test.js","names":["closeNonPairedParens","stripNonPairedParens","repeat","describe","it","should","equal"],"sources":["../source/AsYouTypeFormatter.util.test.js"],"sourcesContent":["import { closeNonPairedParens, stripNonPairedParens, repeat } from './AsYouTypeFormatter.util.js'\r\n\r\ndescribe('closeNonPairedParens', () => {\r\n\tit('should close non-paired braces', () => {\r\n\t\tcloseNonPairedParens('(000) 123-45 (9 )', 15).should.equal('(000) 123-45 (9 )')\r\n\t})\r\n})\r\n\r\ndescribe('stripNonPairedParens', () => {\r\n\tit('should strip non-paired braces', () => {\r\n\t\tstripNonPairedParens('(000) 123-45 (9').should.equal('(000) 123-45 9')\r\n\t\tstripNonPairedParens('(000) 123-45 (9)').should.equal('(000) 123-45 (9)')\r\n\t})\r\n})\r\n\r\ndescribe('repeat', () => {\r\n\tit('should repeat string N times', () => {\r\n\t\trepeat('a', 0).should.equal('')\r\n\t\trepeat('a', 3).should.equal('aaa')\r\n\t\trepeat('a', 4).should.equal('aaaa')\r\n\t})\r\n})"],"mappings":"AAAA,SAASA,oBAAT,EAA+BC,oBAA/B,EAAqDC,MAArD,QAAmE,8BAAnE;AAEAC,QAAQ,CAAC,sBAAD,EAAyB,YAAM;EACtCC,EAAE,CAAC,gCAAD,EAAmC,YAAM;IAC1CJ,oBAAoB,CAAC,oBAAD,EAAuB,EAAvB,CAApB,CAA+CK,MAA/C,CAAsDC,KAAtD,CAA4D,oBAA5D;EACA,CAFC,CAAF;AAGA,CAJO,CAAR;AAMAH,QAAQ,CAAC,sBAAD,EAAyB,YAAM;EACtCC,EAAE,CAAC,gCAAD,EAAmC,YAAM;IAC1CH,oBAAoB,CAAC,iBAAD,CAApB,CAAwCI,MAAxC,CAA+CC,KAA/C,CAAqD,gBAArD;IACAL,oBAAoB,CAAC,kBAAD,CAApB,CAAyCI,MAAzC,CAAgDC,KAAhD,CAAsD,kBAAtD;EACA,CAHC,CAAF;AAIA,CALO,CAAR;AAOAH,QAAQ,CAAC,QAAD,EAAW,YAAM;EACxBC,EAAE,CAAC,8BAAD,EAAiC,YAAM;IACxCF,MAAM,CAAC,GAAD,EAAM,CAAN,CAAN,CAAeG,MAAf,CAAsBC,KAAtB,CAA4B,EAA5B;IACAJ,MAAM,CAAC,GAAD,EAAM,CAAN,CAAN,CAAeG,MAAf,CAAsBC,KAAtB,CAA4B,KAA5B;IACAJ,MAAM,CAAC,GAAD,EAAM,CAAN,CAAN,CAAeG,MAAf,CAAsBC,KAAtB,CAA4B,MAA5B;EACA,CAJC,CAAF;AAKA,CANO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeParser.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeParser.js new file mode 100644 index 00000000..11d616ea --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeParser.js @@ -0,0 +1,508 @@ +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +import _extractCountryCallingCode from './helpers/extractCountryCallingCode.js'; +import extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js'; +import extractNationalNumberFromPossiblyIncompleteNumber from './helpers/extractNationalNumberFromPossiblyIncompleteNumber.js'; +import stripIddPrefix from './helpers/stripIddPrefix.js'; +import parseDigits from './helpers/parseDigits.js'; +import { VALID_DIGITS, VALID_PUNCTUATION, PLUS_CHARS } from './constants.js'; +var VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART = '[' + VALID_PUNCTUATION + VALID_DIGITS + ']+'; +var VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN = new RegExp('^' + VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART + '$', 'i'); +var VALID_FORMATTED_PHONE_NUMBER_PART = '(?:' + '[' + PLUS_CHARS + ']' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*' + '|' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']+' + ')'; +var AFTER_PHONE_NUMBER_DIGITS_END_PATTERN = new RegExp('[^' + VALID_PUNCTUATION + VALID_DIGITS + ']+' + '.*' + '$'); // Tests whether `national_prefix_for_parsing` could match +// different national prefixes. +// Matches anything that's not a digit or a square bracket. + +var COMPLEX_NATIONAL_PREFIX = /[^\d\[\]]/; + +var AsYouTypeParser = /*#__PURE__*/function () { + function AsYouTypeParser(_ref) { + var defaultCountry = _ref.defaultCountry, + defaultCallingCode = _ref.defaultCallingCode, + metadata = _ref.metadata, + onNationalSignificantNumberChange = _ref.onNationalSignificantNumberChange; + + _classCallCheck(this, AsYouTypeParser); + + this.defaultCountry = defaultCountry; + this.defaultCallingCode = defaultCallingCode; + this.metadata = metadata; + this.onNationalSignificantNumberChange = onNationalSignificantNumberChange; + } + + _createClass(AsYouTypeParser, [{ + key: "input", + value: function input(text, state) { + var _extractFormattedDigi = extractFormattedDigitsAndPlus(text), + _extractFormattedDigi2 = _slicedToArray(_extractFormattedDigi, 2), + formattedDigits = _extractFormattedDigi2[0], + hasPlus = _extractFormattedDigi2[1]; + + var digits = parseDigits(formattedDigits); // Checks for a special case: just a leading `+` has been entered. + + var justLeadingPlus; + + if (hasPlus) { + if (!state.digits) { + state.startInternationalNumber(); + + if (!digits) { + justLeadingPlus = true; + } + } + } + + if (digits) { + this.inputDigits(digits, state); + } + + return { + digits: digits, + justLeadingPlus: justLeadingPlus + }; + } + /** + * Inputs "next" phone number digits. + * @param {string} digits + * @return {string} [formattedNumber] Formatted national phone number (if it can be formatted at this stage). Returning `undefined` means "don't format the national phone number at this stage". + */ + + }, { + key: "inputDigits", + value: function inputDigits(nextDigits, state) { + var digits = state.digits; + var hasReceivedThreeLeadingDigits = digits.length < 3 && digits.length + nextDigits.length >= 3; // Append phone number digits. + + state.appendDigits(nextDigits); // Attempt to extract IDD prefix: + // Some users input their phone number in international format, + // but in an "out-of-country" dialing format instead of using the leading `+`. + // https://github.com/catamphetamine/libphonenumber-js/issues/185 + // Detect such numbers as soon as there're at least 3 digits. + // Google's library attempts to extract IDD prefix at 3 digits, + // so this library just copies that behavior. + // I guess that's because the most commot IDD prefixes are + // `00` (Europe) and `011` (US). + // There exist really long IDD prefixes too: + // for example, in Australia the default IDD prefix is `0011`, + // and it could even be as long as `14880011`. + // An IDD prefix is extracted here, and then every time when + // there's a new digit and the number couldn't be formatted. + + if (hasReceivedThreeLeadingDigits) { + this.extractIddPrefix(state); + } + + if (this.isWaitingForCountryCallingCode(state)) { + if (!this.extractCountryCallingCode(state)) { + return; + } + } else { + state.appendNationalSignificantNumberDigits(nextDigits); + } // If a phone number is being input in international format, + // then it's not valid for it to have a national prefix. + // Still, some people incorrectly input such numbers with a national prefix. + // In such cases, only attempt to strip a national prefix if the number becomes too long. + // (but that is done later, not here) + + + if (!state.international) { + if (!this.hasExtractedNationalSignificantNumber) { + this.extractNationalSignificantNumber(state.getNationalDigits(), function (stateUpdate) { + return state.update(stateUpdate); + }); + } + } + } + }, { + key: "isWaitingForCountryCallingCode", + value: function isWaitingForCountryCallingCode(_ref2) { + var international = _ref2.international, + callingCode = _ref2.callingCode; + return international && !callingCode; + } // Extracts a country calling code from a number + // being entered in internatonal format. + + }, { + key: "extractCountryCallingCode", + value: function extractCountryCallingCode(state) { + var _extractCountryCallin = _extractCountryCallingCode('+' + state.getDigitsWithoutInternationalPrefix(), this.defaultCountry, this.defaultCallingCode, this.metadata.metadata), + countryCallingCode = _extractCountryCallin.countryCallingCode, + number = _extractCountryCallin.number; + + if (countryCallingCode) { + state.setCallingCode(countryCallingCode); + state.update({ + nationalSignificantNumber: number + }); + return true; + } + } + }, { + key: "reset", + value: function reset(numberingPlan) { + if (numberingPlan) { + this.hasSelectedNumberingPlan = true; + + var nationalPrefixForParsing = numberingPlan._nationalPrefixForParsing(); + + this.couldPossiblyExtractAnotherNationalSignificantNumber = nationalPrefixForParsing && COMPLEX_NATIONAL_PREFIX.test(nationalPrefixForParsing); + } else { + this.hasSelectedNumberingPlan = undefined; + this.couldPossiblyExtractAnotherNationalSignificantNumber = undefined; + } + } + /** + * Extracts a national (significant) number from user input. + * Google's library is different in that it only applies `national_prefix_for_parsing` + * and doesn't apply `national_prefix_transform_rule` after that. + * https://github.com/google/libphonenumber/blob/a3d70b0487875475e6ad659af404943211d26456/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L539 + * @return {boolean} [extracted] + */ + + }, { + key: "extractNationalSignificantNumber", + value: function extractNationalSignificantNumber(nationalDigits, setState) { + if (!this.hasSelectedNumberingPlan) { + return; + } + + var _extractNationalNumbe = extractNationalNumberFromPossiblyIncompleteNumber(nationalDigits, this.metadata), + nationalPrefix = _extractNationalNumbe.nationalPrefix, + nationalNumber = _extractNationalNumbe.nationalNumber, + carrierCode = _extractNationalNumbe.carrierCode; + + if (nationalNumber === nationalDigits) { + return; + } + + this.onExtractedNationalNumber(nationalPrefix, carrierCode, nationalNumber, nationalDigits, setState); + return true; + } + /** + * In Google's code this function is called "attempt to extract longer NDD". + * "Some national prefixes are a substring of others", they say. + * @return {boolean} [result] — Returns `true` if extracting a national prefix produced different results from what they were. + */ + + }, { + key: "extractAnotherNationalSignificantNumber", + value: function extractAnotherNationalSignificantNumber(nationalDigits, prevNationalSignificantNumber, setState) { + if (!this.hasExtractedNationalSignificantNumber) { + return this.extractNationalSignificantNumber(nationalDigits, setState); + } + + if (!this.couldPossiblyExtractAnotherNationalSignificantNumber) { + return; + } + + var _extractNationalNumbe2 = extractNationalNumberFromPossiblyIncompleteNumber(nationalDigits, this.metadata), + nationalPrefix = _extractNationalNumbe2.nationalPrefix, + nationalNumber = _extractNationalNumbe2.nationalNumber, + carrierCode = _extractNationalNumbe2.carrierCode; // If a national prefix has been extracted previously, + // then it's always extracted as additional digits are added. + // That's assuming `extractNationalNumberFromPossiblyIncompleteNumber()` + // doesn't do anything different from what it currently does. + // So, just in case, here's this check, though it doesn't occur. + + /* istanbul ignore if */ + + + if (nationalNumber === prevNationalSignificantNumber) { + return; + } + + this.onExtractedNationalNumber(nationalPrefix, carrierCode, nationalNumber, nationalDigits, setState); + return true; + } + }, { + key: "onExtractedNationalNumber", + value: function onExtractedNationalNumber(nationalPrefix, carrierCode, nationalSignificantNumber, nationalDigits, setState) { + var complexPrefixBeforeNationalSignificantNumber; + var nationalSignificantNumberMatchesInput; // This check also works with empty `this.nationalSignificantNumber`. + + var nationalSignificantNumberIndex = nationalDigits.lastIndexOf(nationalSignificantNumber); // If the extracted national (significant) number is the + // last substring of the `digits`, then it means that it hasn't been altered: + // no digits have been removed from the national (significant) number + // while applying `national_prefix_transform_rule`. + // https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule + + if (nationalSignificantNumberIndex >= 0 && nationalSignificantNumberIndex === nationalDigits.length - nationalSignificantNumber.length) { + nationalSignificantNumberMatchesInput = true; // If a prefix of a national (significant) number is not as simple + // as just a basic national prefix, then such prefix is stored in + // `this.complexPrefixBeforeNationalSignificantNumber` property and will be + // prepended "as is" to the national (significant) number to produce + // a formatted result. + + var prefixBeforeNationalNumber = nationalDigits.slice(0, nationalSignificantNumberIndex); // `prefixBeforeNationalNumber` is always non-empty, + // because `onExtractedNationalNumber()` isn't called + // when a national (significant) number hasn't been actually "extracted": + // when a national (significant) number is equal to the national part of `digits`, + // then `onExtractedNationalNumber()` doesn't get called. + + if (prefixBeforeNationalNumber !== nationalPrefix) { + complexPrefixBeforeNationalSignificantNumber = prefixBeforeNationalNumber; + } + } + + setState({ + nationalPrefix: nationalPrefix, + carrierCode: carrierCode, + nationalSignificantNumber: nationalSignificantNumber, + nationalSignificantNumberMatchesInput: nationalSignificantNumberMatchesInput, + complexPrefixBeforeNationalSignificantNumber: complexPrefixBeforeNationalSignificantNumber + }); // `onExtractedNationalNumber()` is only called when + // the national (significant) number actually did change. + + this.hasExtractedNationalSignificantNumber = true; + this.onNationalSignificantNumberChange(); + } + }, { + key: "reExtractNationalSignificantNumber", + value: function reExtractNationalSignificantNumber(state) { + // Attempt to extract a national prefix. + // + // Some people incorrectly input national prefix + // in an international phone number. + // For example, some people write British phone numbers as `+44(0)...`. + // + // Also, in some rare cases, it is valid for a national prefix + // to be a part of an international phone number. + // For example, mobile phone numbers in Mexico are supposed to be + // dialled internationally using a `1` national prefix, + // so the national prefix will be part of an international number. + // + // Quote from: + // https://www.mexperience.com/dialing-cell-phones-in-mexico/ + // + // "Dialing a Mexican cell phone from abroad + // When you are calling a cell phone number in Mexico from outside Mexico, + // it’s necessary to dial an additional “1” after Mexico’s country code + // (which is “52”) and before the area code. + // You also ignore the 045, and simply dial the area code and the + // cell phone’s number. + // + // If you don’t add the “1”, you’ll receive a recorded announcement + // asking you to redial using it. + // + // For example, if you are calling from the USA to a cell phone + // in Mexico City, you would dial +52 – 1 – 55 – 1234 5678. + // (Note that this is different to calling a land line in Mexico City + // from abroad, where the number dialed would be +52 – 55 – 1234 5678)". + // + // Google's demo output: + // https://libphonenumber.appspot.com/phonenumberparser?number=%2b5215512345678&country=MX + // + if (this.extractAnotherNationalSignificantNumber(state.getNationalDigits(), state.nationalSignificantNumber, function (stateUpdate) { + return state.update(stateUpdate); + })) { + return true; + } // If no format matches the phone number, then it could be + // "a really long IDD" (quote from a comment in Google's library). + // An IDD prefix is first extracted when the user has entered at least 3 digits, + // and then here — every time when there's a new digit and the number + // couldn't be formatted. + // For example, in Australia the default IDD prefix is `0011`, + // and it could even be as long as `14880011`. + // + // Could also check `!hasReceivedThreeLeadingDigits` here + // to filter out the case when this check duplicates the one + // already performed when there're 3 leading digits, + // but it's not a big deal, and in most cases there + // will be a suitable `format` when there're 3 leading digits. + // + + + if (this.extractIddPrefix(state)) { + this.extractCallingCodeAndNationalSignificantNumber(state); + return true; + } // Google's AsYouType formatter supports sort of an "autocorrection" feature + // when it "autocorrects" numbers that have been input for a country + // with that country's calling code. + // Such "autocorrection" feature looks weird, but different people have been requesting it: + // https://github.com/catamphetamine/libphonenumber-js/issues/376 + // https://github.com/catamphetamine/libphonenumber-js/issues/375 + // https://github.com/catamphetamine/libphonenumber-js/issues/316 + + + if (this.fixMissingPlus(state)) { + this.extractCallingCodeAndNationalSignificantNumber(state); + return true; + } + } + }, { + key: "extractIddPrefix", + value: function extractIddPrefix(state) { + // An IDD prefix can't be present in a number written with a `+`. + // Also, don't re-extract an IDD prefix if has already been extracted. + var international = state.international, + IDDPrefix = state.IDDPrefix, + digits = state.digits, + nationalSignificantNumber = state.nationalSignificantNumber; + + if (international || IDDPrefix) { + return; + } // Some users input their phone number in "out-of-country" + // dialing format instead of using the leading `+`. + // https://github.com/catamphetamine/libphonenumber-js/issues/185 + // Detect such numbers. + + + var numberWithoutIDD = stripIddPrefix(digits, this.defaultCountry, this.defaultCallingCode, this.metadata.metadata); + + if (numberWithoutIDD !== undefined && numberWithoutIDD !== digits) { + // If an IDD prefix was stripped then convert the IDD-prefixed number + // to international number for subsequent parsing. + state.update({ + IDDPrefix: digits.slice(0, digits.length - numberWithoutIDD.length) + }); + this.startInternationalNumber(state, { + country: undefined, + callingCode: undefined + }); + return true; + } + } + }, { + key: "fixMissingPlus", + value: function fixMissingPlus(state) { + if (!state.international) { + var _extractCountryCallin2 = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(state.digits, this.defaultCountry, this.defaultCallingCode, this.metadata.metadata), + newCallingCode = _extractCountryCallin2.countryCallingCode, + number = _extractCountryCallin2.number; + + if (newCallingCode) { + state.update({ + missingPlus: true + }); + this.startInternationalNumber(state, { + country: state.country, + callingCode: newCallingCode + }); + return true; + } + } + } + }, { + key: "startInternationalNumber", + value: function startInternationalNumber(state, _ref3) { + var country = _ref3.country, + callingCode = _ref3.callingCode; + state.startInternationalNumber(country, callingCode); // If a national (significant) number has been extracted before, reset it. + + if (state.nationalSignificantNumber) { + state.resetNationalSignificantNumber(); + this.onNationalSignificantNumberChange(); + this.hasExtractedNationalSignificantNumber = undefined; + } + } + }, { + key: "extractCallingCodeAndNationalSignificantNumber", + value: function extractCallingCodeAndNationalSignificantNumber(state) { + if (this.extractCountryCallingCode(state)) { + // `this.extractCallingCode()` is currently called when the number + // couldn't be formatted during the standard procedure. + // Normally, the national prefix would be re-extracted + // for an international number if such number couldn't be formatted, + // but since it's already not able to be formatted, + // there won't be yet another retry, so also extract national prefix here. + this.extractNationalSignificantNumber(state.getNationalDigits(), function (stateUpdate) { + return state.update(stateUpdate); + }); + } + } + }]); + + return AsYouTypeParser; +}(); +/** + * Extracts formatted phone number from text (if there's any). + * @param {string} text + * @return {string} [formattedPhoneNumber] + */ + + +export { AsYouTypeParser as default }; + +function extractFormattedPhoneNumber(text) { + // Attempt to extract a possible number from the string passed in. + var startsAt = text.search(VALID_FORMATTED_PHONE_NUMBER_PART); + + if (startsAt < 0) { + return; + } // Trim everything to the left of the phone number. + + + text = text.slice(startsAt); // Trim the `+`. + + var hasPlus; + + if (text[0] === '+') { + hasPlus = true; + text = text.slice('+'.length); + } // Trim everything to the right of the phone number. + + + text = text.replace(AFTER_PHONE_NUMBER_DIGITS_END_PATTERN, ''); // Re-add the previously trimmed `+`. + + if (hasPlus) { + text = '+' + text; + } + + return text; +} +/** + * Extracts formatted phone number digits (and a `+`) from text (if there're any). + * @param {string} text + * @return {any[]} + */ + + +function _extractFormattedDigitsAndPlus(text) { + // Extract a formatted phone number part from text. + var extractedNumber = extractFormattedPhoneNumber(text) || ''; // Trim a `+`. + + if (extractedNumber[0] === '+') { + return [extractedNumber.slice('+'.length), true]; + } + + return [extractedNumber]; +} +/** + * Extracts formatted phone number digits (and a `+`) from text (if there're any). + * @param {string} text + * @return {any[]} + */ + + +export function extractFormattedDigitsAndPlus(text) { + var _extractFormattedDigi3 = _extractFormattedDigitsAndPlus(text), + _extractFormattedDigi4 = _slicedToArray(_extractFormattedDigi3, 2), + formattedDigits = _extractFormattedDigi4[0], + hasPlus = _extractFormattedDigi4[1]; // If the extracted phone number part + // can possibly be a part of some valid phone number + // then parse phone number characters from a formatted phone number. + + + if (!VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN.test(formattedDigits)) { + formattedDigits = ''; + } + + return [formattedDigits, hasPlus]; +} +//# sourceMappingURL=AsYouTypeParser.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeParser.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeParser.js.map new file mode 100644 index 00000000..8c6b2937 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeParser.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsYouTypeParser.js","names":["extractCountryCallingCode","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","extractNationalNumberFromPossiblyIncompleteNumber","stripIddPrefix","parseDigits","VALID_DIGITS","VALID_PUNCTUATION","PLUS_CHARS","VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART","VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN","RegExp","VALID_FORMATTED_PHONE_NUMBER_PART","AFTER_PHONE_NUMBER_DIGITS_END_PATTERN","COMPLEX_NATIONAL_PREFIX","AsYouTypeParser","defaultCountry","defaultCallingCode","metadata","onNationalSignificantNumberChange","text","state","extractFormattedDigitsAndPlus","formattedDigits","hasPlus","digits","justLeadingPlus","startInternationalNumber","inputDigits","nextDigits","hasReceivedThreeLeadingDigits","length","appendDigits","extractIddPrefix","isWaitingForCountryCallingCode","appendNationalSignificantNumberDigits","international","hasExtractedNationalSignificantNumber","extractNationalSignificantNumber","getNationalDigits","stateUpdate","update","callingCode","getDigitsWithoutInternationalPrefix","countryCallingCode","number","setCallingCode","nationalSignificantNumber","numberingPlan","hasSelectedNumberingPlan","nationalPrefixForParsing","_nationalPrefixForParsing","couldPossiblyExtractAnotherNationalSignificantNumber","test","undefined","nationalDigits","setState","nationalPrefix","nationalNumber","carrierCode","onExtractedNationalNumber","prevNationalSignificantNumber","complexPrefixBeforeNationalSignificantNumber","nationalSignificantNumberMatchesInput","nationalSignificantNumberIndex","lastIndexOf","prefixBeforeNationalNumber","slice","extractAnotherNationalSignificantNumber","extractCallingCodeAndNationalSignificantNumber","fixMissingPlus","IDDPrefix","numberWithoutIDD","country","newCallingCode","missingPlus","resetNationalSignificantNumber","extractFormattedPhoneNumber","startsAt","search","replace","_extractFormattedDigitsAndPlus","extractedNumber"],"sources":["../source/AsYouTypeParser.js"],"sourcesContent":["import extractCountryCallingCode from './helpers/extractCountryCallingCode.js'\r\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js'\r\nimport extractNationalNumberFromPossiblyIncompleteNumber from './helpers/extractNationalNumberFromPossiblyIncompleteNumber.js'\r\nimport stripIddPrefix from './helpers/stripIddPrefix.js'\r\nimport parseDigits from './helpers/parseDigits.js'\r\n\r\nimport {\r\n\tVALID_DIGITS,\r\n\tVALID_PUNCTUATION,\r\n\tPLUS_CHARS\r\n} from './constants.js'\r\n\r\nconst VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART =\r\n\t'[' +\r\n\t\tVALID_PUNCTUATION +\r\n\t\tVALID_DIGITS +\r\n\t']+'\r\n\r\nconst VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN = new RegExp('^' + VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART + '$', 'i')\r\n\r\nconst VALID_FORMATTED_PHONE_NUMBER_PART =\r\n\t'(?:' +\r\n\t\t'[' + PLUS_CHARS + ']' +\r\n\t\t'[' +\r\n\t\t\tVALID_PUNCTUATION +\r\n\t\t\tVALID_DIGITS +\r\n\t\t']*' +\r\n\t\t'|' +\r\n\t\t'[' +\r\n\t\t\tVALID_PUNCTUATION +\r\n\t\t\tVALID_DIGITS +\r\n\t\t']+' +\r\n\t')'\r\n\r\nconst AFTER_PHONE_NUMBER_DIGITS_END_PATTERN = new RegExp(\r\n\t'[^' +\r\n\t\tVALID_PUNCTUATION +\r\n\t\tVALID_DIGITS +\r\n\t']+' +\r\n\t'.*' +\r\n\t'$'\r\n)\r\n\r\n// Tests whether `national_prefix_for_parsing` could match\r\n// different national prefixes.\r\n// Matches anything that's not a digit or a square bracket.\r\nconst COMPLEX_NATIONAL_PREFIX = /[^\\d\\[\\]]/\r\n\r\nexport default class AsYouTypeParser {\r\n\tconstructor({\r\n\t\tdefaultCountry,\r\n\t\tdefaultCallingCode,\r\n\t\tmetadata,\r\n\t\tonNationalSignificantNumberChange\r\n\t}) {\r\n\t\tthis.defaultCountry = defaultCountry\r\n\t\tthis.defaultCallingCode = defaultCallingCode\r\n\t\tthis.metadata = metadata\r\n\t\tthis.onNationalSignificantNumberChange = onNationalSignificantNumberChange\r\n\t}\r\n\r\n\tinput(text, state) {\r\n\t\tconst [formattedDigits, hasPlus] = extractFormattedDigitsAndPlus(text)\r\n\t\tconst digits = parseDigits(formattedDigits)\r\n\t\t// Checks for a special case: just a leading `+` has been entered.\r\n\t\tlet justLeadingPlus\r\n\t\tif (hasPlus) {\r\n\t\t\tif (!state.digits) {\r\n\t\t\t\tstate.startInternationalNumber()\r\n\t\t\t\tif (!digits) {\r\n\t\t\t\t\tjustLeadingPlus = true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (digits) {\r\n\t\t\tthis.inputDigits(digits, state)\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tdigits,\r\n\t\t\tjustLeadingPlus\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Inputs \"next\" phone number digits.\r\n\t * @param {string} digits\r\n\t * @return {string} [formattedNumber] Formatted national phone number (if it can be formatted at this stage). Returning `undefined` means \"don't format the national phone number at this stage\".\r\n\t */\r\n\tinputDigits(nextDigits, state) {\r\n\t\tconst { digits } = state\r\n\t\tconst hasReceivedThreeLeadingDigits = digits.length < 3 && digits.length + nextDigits.length >= 3\r\n\r\n\t\t// Append phone number digits.\r\n\t\tstate.appendDigits(nextDigits)\r\n\r\n\t\t// Attempt to extract IDD prefix:\r\n\t\t// Some users input their phone number in international format,\r\n\t\t// but in an \"out-of-country\" dialing format instead of using the leading `+`.\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/185\r\n\t\t// Detect such numbers as soon as there're at least 3 digits.\r\n\t\t// Google's library attempts to extract IDD prefix at 3 digits,\r\n\t\t// so this library just copies that behavior.\r\n\t\t// I guess that's because the most commot IDD prefixes are\r\n\t\t// `00` (Europe) and `011` (US).\r\n\t\t// There exist really long IDD prefixes too:\r\n\t\t// for example, in Australia the default IDD prefix is `0011`,\r\n\t\t// and it could even be as long as `14880011`.\r\n\t\t// An IDD prefix is extracted here, and then every time when\r\n\t\t// there's a new digit and the number couldn't be formatted.\r\n\t\tif (hasReceivedThreeLeadingDigits) {\r\n\t\t\tthis.extractIddPrefix(state)\r\n\t\t}\r\n\r\n\t\tif (this.isWaitingForCountryCallingCode(state)) {\r\n\t\t\tif (!this.extractCountryCallingCode(state)) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tstate.appendNationalSignificantNumberDigits(nextDigits)\r\n\t\t}\r\n\r\n\t\t// If a phone number is being input in international format,\r\n\t\t// then it's not valid for it to have a national prefix.\r\n\t\t// Still, some people incorrectly input such numbers with a national prefix.\r\n\t\t// In such cases, only attempt to strip a national prefix if the number becomes too long.\r\n\t\t// (but that is done later, not here)\r\n\t\tif (!state.international) {\r\n\t\t\tif (!this.hasExtractedNationalSignificantNumber) {\r\n\t\t\t\tthis.extractNationalSignificantNumber(\r\n\t\t\t\t\tstate.getNationalDigits(),\r\n\t\t\t\t\t(stateUpdate) => state.update(stateUpdate)\r\n\t\t\t\t)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisWaitingForCountryCallingCode({ international, callingCode }) {\r\n\t\treturn international && !callingCode\r\n\t}\r\n\r\n\t// Extracts a country calling code from a number\r\n\t// being entered in internatonal format.\r\n\textractCountryCallingCode(state) {\r\n\t\tconst { countryCallingCode, number } = extractCountryCallingCode(\r\n\t\t\t'+' + state.getDigitsWithoutInternationalPrefix(),\r\n\t\t\tthis.defaultCountry,\r\n\t\t\tthis.defaultCallingCode,\r\n\t\t\tthis.metadata.metadata\r\n\t\t)\r\n\t\tif (countryCallingCode) {\r\n\t\t\tstate.setCallingCode(countryCallingCode)\r\n\t\t\tstate.update({\r\n\t\t\t\tnationalSignificantNumber: number\r\n\t\t\t})\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\treset(numberingPlan) {\r\n\t\tif (numberingPlan) {\r\n\t\t\tthis.hasSelectedNumberingPlan = true\r\n\t\t\tconst nationalPrefixForParsing = numberingPlan._nationalPrefixForParsing()\r\n\t\t\tthis.couldPossiblyExtractAnotherNationalSignificantNumber = nationalPrefixForParsing && COMPLEX_NATIONAL_PREFIX.test(nationalPrefixForParsing)\r\n\t\t} else {\r\n\t\t\tthis.hasSelectedNumberingPlan = undefined\r\n\t\t\tthis.couldPossiblyExtractAnotherNationalSignificantNumber = undefined\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Extracts a national (significant) number from user input.\r\n\t * Google's library is different in that it only applies `national_prefix_for_parsing`\r\n\t * and doesn't apply `national_prefix_transform_rule` after that.\r\n\t * https://github.com/google/libphonenumber/blob/a3d70b0487875475e6ad659af404943211d26456/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L539\r\n\t * @return {boolean} [extracted]\r\n\t */\r\n\textractNationalSignificantNumber(nationalDigits, setState) {\r\n\t\tif (!this.hasSelectedNumberingPlan) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tconst {\r\n\t\t\tnationalPrefix,\r\n\t\t\tnationalNumber,\r\n\t\t\tcarrierCode\r\n\t\t} = extractNationalNumberFromPossiblyIncompleteNumber(\r\n\t\t\tnationalDigits,\r\n\t\t\tthis.metadata\r\n\t\t)\r\n\t\tif (nationalNumber === nationalDigits) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tthis.onExtractedNationalNumber(\r\n\t\t\tnationalPrefix,\r\n\t\t\tcarrierCode,\r\n\t\t\tnationalNumber,\r\n\t\t\tnationalDigits,\r\n\t\t\tsetState\r\n\t\t)\r\n\t\treturn true\r\n\t}\r\n\r\n\t/**\r\n\t * In Google's code this function is called \"attempt to extract longer NDD\".\r\n\t * \"Some national prefixes are a substring of others\", they say.\r\n\t * @return {boolean} [result] — Returns `true` if extracting a national prefix produced different results from what they were.\r\n\t */\r\n\textractAnotherNationalSignificantNumber(nationalDigits, prevNationalSignificantNumber, setState) {\r\n\t\tif (!this.hasExtractedNationalSignificantNumber) {\r\n\t\t\treturn this.extractNationalSignificantNumber(nationalDigits, setState)\r\n\t\t}\r\n\t\tif (!this.couldPossiblyExtractAnotherNationalSignificantNumber) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tconst {\r\n\t\t\tnationalPrefix,\r\n\t\t\tnationalNumber,\r\n\t\t\tcarrierCode\r\n\t\t} = extractNationalNumberFromPossiblyIncompleteNumber(\r\n\t\t\tnationalDigits,\r\n\t\t\tthis.metadata\r\n\t\t)\r\n\t\t// If a national prefix has been extracted previously,\r\n\t\t// then it's always extracted as additional digits are added.\r\n\t\t// That's assuming `extractNationalNumberFromPossiblyIncompleteNumber()`\r\n\t\t// doesn't do anything different from what it currently does.\r\n\t\t// So, just in case, here's this check, though it doesn't occur.\r\n\t\t/* istanbul ignore if */\r\n\t\tif (nationalNumber === prevNationalSignificantNumber) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tthis.onExtractedNationalNumber(\r\n\t\t\tnationalPrefix,\r\n\t\t\tcarrierCode,\r\n\t\t\tnationalNumber,\r\n\t\t\tnationalDigits,\r\n\t\t\tsetState\r\n\t\t)\r\n\t\treturn true\r\n\t}\r\n\r\n\tonExtractedNationalNumber(\r\n\t\tnationalPrefix,\r\n\t\tcarrierCode,\r\n\t\tnationalSignificantNumber,\r\n\t\tnationalDigits,\r\n\t\tsetState\r\n\t) {\r\n\t\tlet complexPrefixBeforeNationalSignificantNumber\r\n\t\tlet nationalSignificantNumberMatchesInput\r\n\t\t// This check also works with empty `this.nationalSignificantNumber`.\r\n\t\tconst nationalSignificantNumberIndex = nationalDigits.lastIndexOf(nationalSignificantNumber)\r\n\t\t// If the extracted national (significant) number is the\r\n\t\t// last substring of the `digits`, then it means that it hasn't been altered:\r\n\t\t// no digits have been removed from the national (significant) number\r\n\t\t// while applying `national_prefix_transform_rule`.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\r\n\t\tif (nationalSignificantNumberIndex >= 0 &&\r\n\t\t\tnationalSignificantNumberIndex === nationalDigits.length - nationalSignificantNumber.length) {\r\n\t\t\tnationalSignificantNumberMatchesInput = true\r\n\t\t\t// If a prefix of a national (significant) number is not as simple\r\n\t\t\t// as just a basic national prefix, then such prefix is stored in\r\n\t\t\t// `this.complexPrefixBeforeNationalSignificantNumber` property and will be\r\n\t\t\t// prepended \"as is\" to the national (significant) number to produce\r\n\t\t\t// a formatted result.\r\n\t\t\tconst prefixBeforeNationalNumber = nationalDigits.slice(0, nationalSignificantNumberIndex)\r\n\t\t\t// `prefixBeforeNationalNumber` is always non-empty,\r\n\t\t\t// because `onExtractedNationalNumber()` isn't called\r\n\t\t\t// when a national (significant) number hasn't been actually \"extracted\":\r\n\t\t\t// when a national (significant) number is equal to the national part of `digits`,\r\n\t\t\t// then `onExtractedNationalNumber()` doesn't get called.\r\n\t\t\tif (prefixBeforeNationalNumber !== nationalPrefix) {\r\n\t\t\t\tcomplexPrefixBeforeNationalSignificantNumber = prefixBeforeNationalNumber\r\n\t\t\t}\r\n\t\t}\r\n\t\tsetState({\r\n\t\t\tnationalPrefix,\r\n\t\t\tcarrierCode,\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tnationalSignificantNumberMatchesInput,\r\n\t\t\tcomplexPrefixBeforeNationalSignificantNumber\r\n\t\t})\r\n\t\t// `onExtractedNationalNumber()` is only called when\r\n\t\t// the national (significant) number actually did change.\r\n\t\tthis.hasExtractedNationalSignificantNumber = true\r\n\t\tthis.onNationalSignificantNumberChange()\r\n\t}\r\n\r\n\treExtractNationalSignificantNumber(state) {\r\n\t\t// Attempt to extract a national prefix.\r\n\t\t//\r\n\t\t// Some people incorrectly input national prefix\r\n\t\t// in an international phone number.\r\n\t\t// For example, some people write British phone numbers as `+44(0)...`.\r\n\t\t//\r\n\t\t// Also, in some rare cases, it is valid for a national prefix\r\n\t\t// to be a part of an international phone number.\r\n\t\t// For example, mobile phone numbers in Mexico are supposed to be\r\n\t\t// dialled internationally using a `1` national prefix,\r\n\t\t// so the national prefix will be part of an international number.\r\n\t\t//\r\n\t\t// Quote from:\r\n\t\t// https://www.mexperience.com/dialing-cell-phones-in-mexico/\r\n\t\t//\r\n\t\t// \"Dialing a Mexican cell phone from abroad\r\n\t\t// When you are calling a cell phone number in Mexico from outside Mexico,\r\n\t\t// it’s necessary to dial an additional “1” after Mexico’s country code\r\n\t\t// (which is “52”) and before the area code.\r\n\t\t// You also ignore the 045, and simply dial the area code and the\r\n\t\t// cell phone’s number.\r\n\t\t//\r\n\t\t// If you don’t add the “1”, you’ll receive a recorded announcement\r\n\t\t// asking you to redial using it.\r\n\t\t//\r\n\t\t// For example, if you are calling from the USA to a cell phone\r\n\t\t// in Mexico City, you would dial +52 – 1 – 55 – 1234 5678.\r\n\t\t// (Note that this is different to calling a land line in Mexico City\r\n\t\t// from abroad, where the number dialed would be +52 – 55 – 1234 5678)\".\r\n\t\t//\r\n\t\t// Google's demo output:\r\n\t\t// https://libphonenumber.appspot.com/phonenumberparser?number=%2b5215512345678&country=MX\r\n\t\t//\r\n\t\tif (this.extractAnotherNationalSignificantNumber(\r\n\t\t\tstate.getNationalDigits(),\r\n\t\t\tstate.nationalSignificantNumber,\r\n\t\t\t(stateUpdate) => state.update(stateUpdate)\r\n\t\t)) {\r\n\t\t\treturn true\r\n\t\t}\r\n\t\t// If no format matches the phone number, then it could be\r\n\t\t// \"a really long IDD\" (quote from a comment in Google's library).\r\n\t\t// An IDD prefix is first extracted when the user has entered at least 3 digits,\r\n\t\t// and then here — every time when there's a new digit and the number\r\n\t\t// couldn't be formatted.\r\n\t\t// For example, in Australia the default IDD prefix is `0011`,\r\n\t\t// and it could even be as long as `14880011`.\r\n\t\t//\r\n\t\t// Could also check `!hasReceivedThreeLeadingDigits` here\r\n\t\t// to filter out the case when this check duplicates the one\r\n\t\t// already performed when there're 3 leading digits,\r\n\t\t// but it's not a big deal, and in most cases there\r\n\t\t// will be a suitable `format` when there're 3 leading digits.\r\n\t\t//\r\n\t\tif (this.extractIddPrefix(state)) {\r\n\t\t\tthis.extractCallingCodeAndNationalSignificantNumber(state)\r\n\t\t\treturn true\r\n\t\t}\r\n\t\t// Google's AsYouType formatter supports sort of an \"autocorrection\" feature\r\n\t\t// when it \"autocorrects\" numbers that have been input for a country\r\n\t\t// with that country's calling code.\r\n\t\t// Such \"autocorrection\" feature looks weird, but different people have been requesting it:\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/375\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/316\r\n\t\tif (this.fixMissingPlus(state)) {\r\n\t\t\tthis.extractCallingCodeAndNationalSignificantNumber(state)\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\textractIddPrefix(state) {\r\n\t\t// An IDD prefix can't be present in a number written with a `+`.\r\n\t\t// Also, don't re-extract an IDD prefix if has already been extracted.\r\n\t\tconst {\r\n\t\t\tinternational,\r\n\t\t\tIDDPrefix,\r\n\t\t\tdigits,\r\n\t\t\tnationalSignificantNumber\r\n\t\t} = state\r\n\t\tif (international || IDDPrefix) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// Some users input their phone number in \"out-of-country\"\r\n\t\t// dialing format instead of using the leading `+`.\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/185\r\n\t\t// Detect such numbers.\r\n\t\tconst numberWithoutIDD = stripIddPrefix(\r\n\t\t\tdigits,\r\n\t\t\tthis.defaultCountry,\r\n\t\t\tthis.defaultCallingCode,\r\n\t\t\tthis.metadata.metadata\r\n\t\t)\r\n\t\tif (numberWithoutIDD !== undefined && numberWithoutIDD !== digits) {\r\n\t\t\t// If an IDD prefix was stripped then convert the IDD-prefixed number\r\n\t\t\t// to international number for subsequent parsing.\r\n\t\t\tstate.update({\r\n\t\t\t\tIDDPrefix: digits.slice(0, digits.length - numberWithoutIDD.length)\r\n\t\t\t})\r\n\t\t\tthis.startInternationalNumber(state, {\r\n\t\t\t\tcountry: undefined,\r\n\t\t\t\tcallingCode: undefined\r\n\t\t\t})\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\tfixMissingPlus(state) {\r\n\t\tif (!state.international) {\r\n\t\t\tconst {\r\n\t\t\t\tcountryCallingCode: newCallingCode,\r\n\t\t\t\tnumber\r\n\t\t\t} = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\r\n\t\t\t\tstate.digits,\r\n\t\t\t\tthis.defaultCountry,\r\n\t\t\t\tthis.defaultCallingCode,\r\n\t\t\t\tthis.metadata.metadata\r\n\t\t\t)\r\n\t\t\tif (newCallingCode) {\r\n\t\t\t\tstate.update({\r\n\t\t\t\t\tmissingPlus: true\r\n\t\t\t\t})\r\n\t\t\t\tthis.startInternationalNumber(state, {\r\n\t\t\t\t\tcountry: state.country,\r\n\t\t\t\t\tcallingCode: newCallingCode\r\n\t\t\t\t})\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tstartInternationalNumber(state, { country, callingCode }) {\r\n\t\tstate.startInternationalNumber(country, callingCode)\r\n\t\t// If a national (significant) number has been extracted before, reset it.\r\n\t\tif (state.nationalSignificantNumber) {\r\n\t\t\tstate.resetNationalSignificantNumber()\r\n\t\t\tthis.onNationalSignificantNumberChange()\r\n\t\t\tthis.hasExtractedNationalSignificantNumber = undefined\r\n\t\t}\r\n\t}\r\n\r\n\textractCallingCodeAndNationalSignificantNumber(state) {\r\n\t\tif (this.extractCountryCallingCode(state)) {\r\n\t\t\t// `this.extractCallingCode()` is currently called when the number\r\n\t\t\t// couldn't be formatted during the standard procedure.\r\n\t\t\t// Normally, the national prefix would be re-extracted\r\n\t\t\t// for an international number if such number couldn't be formatted,\r\n\t\t\t// but since it's already not able to be formatted,\r\n\t\t\t// there won't be yet another retry, so also extract national prefix here.\r\n\t\t\tthis.extractNationalSignificantNumber(\r\n\t\t\t\tstate.getNationalDigits(),\r\n\t\t\t\t(stateUpdate) => state.update(stateUpdate)\r\n\t\t\t)\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Extracts formatted phone number from text (if there's any).\r\n * @param {string} text\r\n * @return {string} [formattedPhoneNumber]\r\n */\r\nfunction extractFormattedPhoneNumber(text) {\r\n\t// Attempt to extract a possible number from the string passed in.\r\n\tconst startsAt = text.search(VALID_FORMATTED_PHONE_NUMBER_PART)\r\n\tif (startsAt < 0) {\r\n\t\treturn\r\n\t}\r\n\t// Trim everything to the left of the phone number.\r\n\ttext = text.slice(startsAt)\r\n\t// Trim the `+`.\r\n\tlet hasPlus\r\n\tif (text[0] === '+') {\r\n\t\thasPlus = true\r\n\t\ttext = text.slice('+'.length)\r\n\t}\r\n\t// Trim everything to the right of the phone number.\r\n\ttext = text.replace(AFTER_PHONE_NUMBER_DIGITS_END_PATTERN, '')\r\n\t// Re-add the previously trimmed `+`.\r\n\tif (hasPlus) {\r\n\t\ttext = '+' + text\r\n\t}\r\n\treturn text\r\n}\r\n\r\n/**\r\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\r\n * @param {string} text\r\n * @return {any[]}\r\n */\r\nfunction _extractFormattedDigitsAndPlus(text) {\r\n\t// Extract a formatted phone number part from text.\r\n\tconst extractedNumber = extractFormattedPhoneNumber(text) || ''\r\n\t// Trim a `+`.\r\n\tif (extractedNumber[0] === '+') {\r\n\t\treturn [extractedNumber.slice('+'.length), true]\r\n\t}\r\n\treturn [extractedNumber]\r\n}\r\n\r\n/**\r\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\r\n * @param {string} text\r\n * @return {any[]}\r\n */\r\nexport function extractFormattedDigitsAndPlus(text) {\r\n\tlet [formattedDigits, hasPlus] = _extractFormattedDigitsAndPlus(text)\r\n\t// If the extracted phone number part\r\n\t// can possibly be a part of some valid phone number\r\n\t// then parse phone number characters from a formatted phone number.\r\n\tif (!VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN.test(formattedDigits)) {\r\n\t\tformattedDigits = ''\r\n\t}\r\n\treturn [formattedDigits, hasPlus]\r\n}"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,OAAOA,0BAAP,MAAsC,wCAAtC;AACA,OAAOC,+DAAP,MAA4E,8EAA5E;AACA,OAAOC,iDAAP,MAA8D,gEAA9D;AACA,OAAOC,cAAP,MAA2B,6BAA3B;AACA,OAAOC,WAAP,MAAwB,0BAAxB;AAEA,SACCC,YADD,EAECC,iBAFD,EAGCC,UAHD,QAIO,gBAJP;AAMA,IAAMC,wCAAwC,GAC7C,MACCF,iBADD,GAECD,YAFD,GAGA,IAJD;AAMA,IAAMI,gDAAgD,GAAG,IAAIC,MAAJ,CAAW,MAAMF,wCAAN,GAAiD,GAA5D,EAAiE,GAAjE,CAAzD;AAEA,IAAMG,iCAAiC,GACtC,QACC,GADD,GACOJ,UADP,GACoB,GADpB,GAEC,GAFD,GAGED,iBAHF,GAIED,YAJF,GAKC,IALD,GAMC,GAND,GAOC,GAPD,GAQEC,iBARF,GASED,YATF,GAUC,IAVD,GAWA,GAZD;AAcA,IAAMO,qCAAqC,GAAG,IAAIF,MAAJ,CAC7C,OACCJ,iBADD,GAECD,YAFD,GAGA,IAHA,GAIA,IAJA,GAKA,GAN6C,CAA9C,C,CASA;AACA;AACA;;AACA,IAAMQ,uBAAuB,GAAG,WAAhC;;IAEqBC,e;EACpB,+BAKG;IAAA,IAJFC,cAIE,QAJFA,cAIE;IAAA,IAHFC,kBAGE,QAHFA,kBAGE;IAAA,IAFFC,QAEE,QAFFA,QAEE;IAAA,IADFC,iCACE,QADFA,iCACE;;IAAA;;IACF,KAAKH,cAAL,GAAsBA,cAAtB;IACA,KAAKC,kBAAL,GAA0BA,kBAA1B;IACA,KAAKC,QAAL,GAAgBA,QAAhB;IACA,KAAKC,iCAAL,GAAyCA,iCAAzC;EACA;;;;WAED,eAAMC,IAAN,EAAYC,KAAZ,EAAmB;MAClB,4BAAmCC,6BAA6B,CAACF,IAAD,CAAhE;MAAA;MAAA,IAAOG,eAAP;MAAA,IAAwBC,OAAxB;;MACA,IAAMC,MAAM,GAAGpB,WAAW,CAACkB,eAAD,CAA1B,CAFkB,CAGlB;;MACA,IAAIG,eAAJ;;MACA,IAAIF,OAAJ,EAAa;QACZ,IAAI,CAACH,KAAK,CAACI,MAAX,EAAmB;UAClBJ,KAAK,CAACM,wBAAN;;UACA,IAAI,CAACF,MAAL,EAAa;YACZC,eAAe,GAAG,IAAlB;UACA;QACD;MACD;;MACD,IAAID,MAAJ,EAAY;QACX,KAAKG,WAAL,CAAiBH,MAAjB,EAAyBJ,KAAzB;MACA;;MACD,OAAO;QACNI,MAAM,EAANA,MADM;QAENC,eAAe,EAAfA;MAFM,CAAP;IAIA;IAED;AACD;AACA;AACA;AACA;;;;WACC,qBAAYG,UAAZ,EAAwBR,KAAxB,EAA+B;MAC9B,IAAQI,MAAR,GAAmBJ,KAAnB,CAAQI,MAAR;MACA,IAAMK,6BAA6B,GAAGL,MAAM,CAACM,MAAP,GAAgB,CAAhB,IAAqBN,MAAM,CAACM,MAAP,GAAgBF,UAAU,CAACE,MAA3B,IAAqC,CAAhG,CAF8B,CAI9B;;MACAV,KAAK,CAACW,YAAN,CAAmBH,UAAnB,EAL8B,CAO9B;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;;MACA,IAAIC,6BAAJ,EAAmC;QAClC,KAAKG,gBAAL,CAAsBZ,KAAtB;MACA;;MAED,IAAI,KAAKa,8BAAL,CAAoCb,KAApC,CAAJ,EAAgD;QAC/C,IAAI,CAAC,KAAKpB,yBAAL,CAA+BoB,KAA/B,CAAL,EAA4C;UAC3C;QACA;MACD,CAJD,MAIO;QACNA,KAAK,CAACc,qCAAN,CAA4CN,UAA5C;MACA,CA/B6B,CAiC9B;MACA;MACA;MACA;MACA;;;MACA,IAAI,CAACR,KAAK,CAACe,aAAX,EAA0B;QACzB,IAAI,CAAC,KAAKC,qCAAV,EAAiD;UAChD,KAAKC,gCAAL,CACCjB,KAAK,CAACkB,iBAAN,EADD,EAEC,UAACC,WAAD;YAAA,OAAiBnB,KAAK,CAACoB,MAAN,CAAaD,WAAb,CAAjB;UAAA,CAFD;QAIA;MACD;IACD;;;WAED,+CAA+D;MAAA,IAA9BJ,aAA8B,SAA9BA,aAA8B;MAAA,IAAfM,WAAe,SAAfA,WAAe;MAC9D,OAAON,aAAa,IAAI,CAACM,WAAzB;IACA,C,CAED;IACA;;;;WACA,mCAA0BrB,KAA1B,EAAiC;MAChC,4BAAuCpB,0BAAyB,CAC/D,MAAMoB,KAAK,CAACsB,mCAAN,EADyD,EAE/D,KAAK3B,cAF0D,EAG/D,KAAKC,kBAH0D,EAI/D,KAAKC,QAAL,CAAcA,QAJiD,CAAhE;MAAA,IAAQ0B,kBAAR,yBAAQA,kBAAR;MAAA,IAA4BC,MAA5B,yBAA4BA,MAA5B;;MAMA,IAAID,kBAAJ,EAAwB;QACvBvB,KAAK,CAACyB,cAAN,CAAqBF,kBAArB;QACAvB,KAAK,CAACoB,MAAN,CAAa;UACZM,yBAAyB,EAAEF;QADf,CAAb;QAGA,OAAO,IAAP;MACA;IACD;;;WAED,eAAMG,aAAN,EAAqB;MACpB,IAAIA,aAAJ,EAAmB;QAClB,KAAKC,wBAAL,GAAgC,IAAhC;;QACA,IAAMC,wBAAwB,GAAGF,aAAa,CAACG,yBAAd,EAAjC;;QACA,KAAKC,oDAAL,GAA4DF,wBAAwB,IAAIpC,uBAAuB,CAACuC,IAAxB,CAA6BH,wBAA7B,CAAxF;MACA,CAJD,MAIO;QACN,KAAKD,wBAAL,GAAgCK,SAAhC;QACA,KAAKF,oDAAL,GAA4DE,SAA5D;MACA;IACD;IAED;AACD;AACA;AACA;AACA;AACA;AACA;;;;WACC,0CAAiCC,cAAjC,EAAiDC,QAAjD,EAA2D;MAC1D,IAAI,CAAC,KAAKP,wBAAV,EAAoC;QACnC;MACA;;MACD,4BAII9C,iDAAiD,CACpDoD,cADoD,EAEpD,KAAKrC,QAF+C,CAJrD;MAAA,IACCuC,cADD,yBACCA,cADD;MAAA,IAECC,cAFD,yBAECA,cAFD;MAAA,IAGCC,WAHD,yBAGCA,WAHD;;MAQA,IAAID,cAAc,KAAKH,cAAvB,EAAuC;QACtC;MACA;;MACD,KAAKK,yBAAL,CACCH,cADD,EAECE,WAFD,EAGCD,cAHD,EAICH,cAJD,EAKCC,QALD;MAOA,OAAO,IAAP;IACA;IAED;AACD;AACA;AACA;AACA;;;;WACC,iDAAwCD,cAAxC,EAAwDM,6BAAxD,EAAuFL,QAAvF,EAAiG;MAChG,IAAI,CAAC,KAAKnB,qCAAV,EAAiD;QAChD,OAAO,KAAKC,gCAAL,CAAsCiB,cAAtC,EAAsDC,QAAtD,CAAP;MACA;;MACD,IAAI,CAAC,KAAKJ,oDAAV,EAAgE;QAC/D;MACA;;MACD,6BAIIjD,iDAAiD,CACpDoD,cADoD,EAEpD,KAAKrC,QAF+C,CAJrD;MAAA,IACCuC,cADD,0BACCA,cADD;MAAA,IAECC,cAFD,0BAECA,cAFD;MAAA,IAGCC,WAHD,0BAGCA,WAHD,CAPgG,CAehG;MACA;MACA;MACA;MACA;;MACA;;;MACA,IAAID,cAAc,KAAKG,6BAAvB,EAAsD;QACrD;MACA;;MACD,KAAKD,yBAAL,CACCH,cADD,EAECE,WAFD,EAGCD,cAHD,EAICH,cAJD,EAKCC,QALD;MAOA,OAAO,IAAP;IACA;;;WAED,mCACCC,cADD,EAECE,WAFD,EAGCZ,yBAHD,EAICQ,cAJD,EAKCC,QALD,EAME;MACD,IAAIM,4CAAJ;MACA,IAAIC,qCAAJ,CAFC,CAGD;;MACA,IAAMC,8BAA8B,GAAGT,cAAc,CAACU,WAAf,CAA2BlB,yBAA3B,CAAvC,CAJC,CAKD;MACA;MACA;MACA;MACA;;MACA,IAAIiB,8BAA8B,IAAI,CAAlC,IACHA,8BAA8B,KAAKT,cAAc,CAACxB,MAAf,GAAwBgB,yBAAyB,CAAChB,MADtF,EAC8F;QAC7FgC,qCAAqC,GAAG,IAAxC,CAD6F,CAE7F;QACA;QACA;QACA;QACA;;QACA,IAAMG,0BAA0B,GAAGX,cAAc,CAACY,KAAf,CAAqB,CAArB,EAAwBH,8BAAxB,CAAnC,CAP6F,CAQ7F;QACA;QACA;QACA;QACA;;QACA,IAAIE,0BAA0B,KAAKT,cAAnC,EAAmD;UAClDK,4CAA4C,GAAGI,0BAA/C;QACA;MACD;;MACDV,QAAQ,CAAC;QACRC,cAAc,EAAdA,cADQ;QAERE,WAAW,EAAXA,WAFQ;QAGRZ,yBAAyB,EAAzBA,yBAHQ;QAIRgB,qCAAqC,EAArCA,qCAJQ;QAKRD,4CAA4C,EAA5CA;MALQ,CAAD,CAAR,CA5BC,CAmCD;MACA;;MACA,KAAKzB,qCAAL,GAA6C,IAA7C;MACA,KAAKlB,iCAAL;IACA;;;WAED,4CAAmCE,KAAnC,EAA0C;MACzC;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA,IAAI,KAAK+C,uCAAL,CACH/C,KAAK,CAACkB,iBAAN,EADG,EAEHlB,KAAK,CAAC0B,yBAFH,EAGH,UAACP,WAAD;QAAA,OAAiBnB,KAAK,CAACoB,MAAN,CAAaD,WAAb,CAAjB;MAAA,CAHG,CAAJ,EAIG;QACF,OAAO,IAAP;MACA,CAxCwC,CAyCzC;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;;;MACA,IAAI,KAAKP,gBAAL,CAAsBZ,KAAtB,CAAJ,EAAkC;QACjC,KAAKgD,8CAAL,CAAoDhD,KAApD;QACA,OAAO,IAAP;MACA,CA1DwC,CA2DzC;MACA;MACA;MACA;MACA;MACA;MACA;;;MACA,IAAI,KAAKiD,cAAL,CAAoBjD,KAApB,CAAJ,EAAgC;QAC/B,KAAKgD,8CAAL,CAAoDhD,KAApD;QACA,OAAO,IAAP;MACA;IACD;;;WAED,0BAAiBA,KAAjB,EAAwB;MACvB;MACA;MACA,IACCe,aADD,GAKIf,KALJ,CACCe,aADD;MAAA,IAECmC,SAFD,GAKIlD,KALJ,CAECkD,SAFD;MAAA,IAGC9C,MAHD,GAKIJ,KALJ,CAGCI,MAHD;MAAA,IAICsB,yBAJD,GAKI1B,KALJ,CAIC0B,yBAJD;;MAMA,IAAIX,aAAa,IAAImC,SAArB,EAAgC;QAC/B;MACA,CAXsB,CAYvB;MACA;MACA;MACA;;;MACA,IAAMC,gBAAgB,GAAGpE,cAAc,CACtCqB,MADsC,EAEtC,KAAKT,cAFiC,EAGtC,KAAKC,kBAHiC,EAItC,KAAKC,QAAL,CAAcA,QAJwB,CAAvC;;MAMA,IAAIsD,gBAAgB,KAAKlB,SAArB,IAAkCkB,gBAAgB,KAAK/C,MAA3D,EAAmE;QAClE;QACA;QACAJ,KAAK,CAACoB,MAAN,CAAa;UACZ8B,SAAS,EAAE9C,MAAM,CAAC0C,KAAP,CAAa,CAAb,EAAgB1C,MAAM,CAACM,MAAP,GAAgByC,gBAAgB,CAACzC,MAAjD;QADC,CAAb;QAGA,KAAKJ,wBAAL,CAA8BN,KAA9B,EAAqC;UACpCoD,OAAO,EAAEnB,SAD2B;UAEpCZ,WAAW,EAAEY;QAFuB,CAArC;QAIA,OAAO,IAAP;MACA;IACD;;;WAED,wBAAejC,KAAf,EAAsB;MACrB,IAAI,CAACA,KAAK,CAACe,aAAX,EAA0B;QACzB,6BAGIlC,+DAA+D,CAClEmB,KAAK,CAACI,MAD4D,EAElE,KAAKT,cAF6D,EAGlE,KAAKC,kBAH6D,EAIlE,KAAKC,QAAL,CAAcA,QAJoD,CAHnE;QAAA,IACqBwD,cADrB,0BACC9B,kBADD;QAAA,IAECC,MAFD,0BAECA,MAFD;;QASA,IAAI6B,cAAJ,EAAoB;UACnBrD,KAAK,CAACoB,MAAN,CAAa;YACZkC,WAAW,EAAE;UADD,CAAb;UAGA,KAAKhD,wBAAL,CAA8BN,KAA9B,EAAqC;YACpCoD,OAAO,EAAEpD,KAAK,CAACoD,OADqB;YAEpC/B,WAAW,EAAEgC;UAFuB,CAArC;UAIA,OAAO,IAAP;QACA;MACD;IACD;;;WAED,kCAAyBrD,KAAzB,SAA0D;MAAA,IAAxBoD,OAAwB,SAAxBA,OAAwB;MAAA,IAAf/B,WAAe,SAAfA,WAAe;MACzDrB,KAAK,CAACM,wBAAN,CAA+B8C,OAA/B,EAAwC/B,WAAxC,EADyD,CAEzD;;MACA,IAAIrB,KAAK,CAAC0B,yBAAV,EAAqC;QACpC1B,KAAK,CAACuD,8BAAN;QACA,KAAKzD,iCAAL;QACA,KAAKkB,qCAAL,GAA6CiB,SAA7C;MACA;IACD;;;WAED,wDAA+CjC,KAA/C,EAAsD;MACrD,IAAI,KAAKpB,yBAAL,CAA+BoB,KAA/B,CAAJ,EAA2C;QAC1C;QACA;QACA;QACA;QACA;QACA;QACA,KAAKiB,gCAAL,CACCjB,KAAK,CAACkB,iBAAN,EADD,EAEC,UAACC,WAAD;UAAA,OAAiBnB,KAAK,CAACoB,MAAN,CAAaD,WAAb,CAAjB;QAAA,CAFD;MAIA;IACD;;;;;AAGF;AACA;AACA;AACA;AACA;;;SAjZqBzB,e;;AAkZrB,SAAS8D,2BAAT,CAAqCzD,IAArC,EAA2C;EAC1C;EACA,IAAM0D,QAAQ,GAAG1D,IAAI,CAAC2D,MAAL,CAAYnE,iCAAZ,CAAjB;;EACA,IAAIkE,QAAQ,GAAG,CAAf,EAAkB;IACjB;EACA,CALyC,CAM1C;;;EACA1D,IAAI,GAAGA,IAAI,CAAC+C,KAAL,CAAWW,QAAX,CAAP,CAP0C,CAQ1C;;EACA,IAAItD,OAAJ;;EACA,IAAIJ,IAAI,CAAC,CAAD,CAAJ,KAAY,GAAhB,EAAqB;IACpBI,OAAO,GAAG,IAAV;IACAJ,IAAI,GAAGA,IAAI,CAAC+C,KAAL,CAAW,IAAIpC,MAAf,CAAP;EACA,CAbyC,CAc1C;;;EACAX,IAAI,GAAGA,IAAI,CAAC4D,OAAL,CAAanE,qCAAb,EAAoD,EAApD,CAAP,CAf0C,CAgB1C;;EACA,IAAIW,OAAJ,EAAa;IACZJ,IAAI,GAAG,MAAMA,IAAb;EACA;;EACD,OAAOA,IAAP;AACA;AAED;AACA;AACA;AACA;AACA;;;AACA,SAAS6D,8BAAT,CAAwC7D,IAAxC,EAA8C;EAC7C;EACA,IAAM8D,eAAe,GAAGL,2BAA2B,CAACzD,IAAD,CAA3B,IAAqC,EAA7D,CAF6C,CAG7C;;EACA,IAAI8D,eAAe,CAAC,CAAD,CAAf,KAAuB,GAA3B,EAAgC;IAC/B,OAAO,CAACA,eAAe,CAACf,KAAhB,CAAsB,IAAIpC,MAA1B,CAAD,EAAoC,IAApC,CAAP;EACA;;EACD,OAAO,CAACmD,eAAD,CAAP;AACA;AAED;AACA;AACA;AACA;AACA;;;AACA,OAAO,SAAS5D,6BAAT,CAAuCF,IAAvC,EAA6C;EACnD,6BAAiC6D,8BAA8B,CAAC7D,IAAD,CAA/D;EAAA;EAAA,IAAKG,eAAL;EAAA,IAAsBC,OAAtB,6BADmD,CAEnD;EACA;EACA;;;EACA,IAAI,CAACd,gDAAgD,CAAC2C,IAAjD,CAAsD9B,eAAtD,CAAL,EAA6E;IAC5EA,eAAe,GAAG,EAAlB;EACA;;EACD,OAAO,CAACA,eAAD,EAAkBC,OAAlB,CAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeState.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeState.js new file mode 100644 index 00000000..5192cad0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeState.js @@ -0,0 +1,118 @@ +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +var AsYouTypeState = /*#__PURE__*/function () { + function AsYouTypeState(_ref) { + var onCountryChange = _ref.onCountryChange, + onCallingCodeChange = _ref.onCallingCodeChange; + + _classCallCheck(this, AsYouTypeState); + + this.onCountryChange = onCountryChange; + this.onCallingCodeChange = onCallingCodeChange; + } + + _createClass(AsYouTypeState, [{ + key: "reset", + value: function reset(defaultCountry, defaultCallingCode) { + this.international = false; + this.IDDPrefix = undefined; + this.missingPlus = undefined; + this.callingCode = undefined; + this.digits = ''; + this.resetNationalSignificantNumber(); + this.initCountryAndCallingCode(defaultCountry, defaultCallingCode); + } + }, { + key: "resetNationalSignificantNumber", + value: function resetNationalSignificantNumber() { + this.nationalSignificantNumber = this.getNationalDigits(); + this.nationalSignificantNumberMatchesInput = true; + this.nationalPrefix = undefined; + this.carrierCode = undefined; + this.complexPrefixBeforeNationalSignificantNumber = undefined; + } + }, { + key: "update", + value: function update(properties) { + for (var _i = 0, _Object$keys = Object.keys(properties); _i < _Object$keys.length; _i++) { + var key = _Object$keys[_i]; + this[key] = properties[key]; + } + } + }, { + key: "initCountryAndCallingCode", + value: function initCountryAndCallingCode(country, callingCode) { + this.setCountry(country); + this.setCallingCode(callingCode); + } + }, { + key: "setCountry", + value: function setCountry(country) { + this.country = country; + this.onCountryChange(country); + } + }, { + key: "setCallingCode", + value: function setCallingCode(callingCode) { + this.callingCode = callingCode; + this.onCallingCodeChange(callingCode, this.country); + } + }, { + key: "startInternationalNumber", + value: function startInternationalNumber(country, callingCode) { + // Prepend the `+` to parsed input. + this.international = true; // If a default country was set then reset it + // because an explicitly international phone + // number is being entered. + + this.initCountryAndCallingCode(country, callingCode); + } + }, { + key: "appendDigits", + value: function appendDigits(nextDigits) { + this.digits += nextDigits; + } + }, { + key: "appendNationalSignificantNumberDigits", + value: function appendNationalSignificantNumberDigits(nextDigits) { + this.nationalSignificantNumber += nextDigits; + } + /** + * Returns the part of `this.digits` that corresponds to the national number. + * Basically, all digits that have been input by the user, except for the + * international prefix and the country calling code part + * (if the number is an international one). + * @return {string} + */ + + }, { + key: "getNationalDigits", + value: function getNationalDigits() { + if (this.international) { + return this.digits.slice((this.IDDPrefix ? this.IDDPrefix.length : 0) + (this.callingCode ? this.callingCode.length : 0)); + } + + return this.digits; + } + }, { + key: "getDigitsWithoutInternationalPrefix", + value: function getDigitsWithoutInternationalPrefix() { + if (this.international) { + if (this.IDDPrefix) { + return this.digits.slice(this.IDDPrefix.length); + } + } + + return this.digits; + } + }]); + + return AsYouTypeState; +}(); + +export { AsYouTypeState as default }; +//# sourceMappingURL=AsYouTypeState.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeState.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeState.js.map new file mode 100644 index 00000000..e7c593e9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/AsYouTypeState.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsYouTypeState.js","names":["AsYouTypeState","onCountryChange","onCallingCodeChange","defaultCountry","defaultCallingCode","international","IDDPrefix","undefined","missingPlus","callingCode","digits","resetNationalSignificantNumber","initCountryAndCallingCode","nationalSignificantNumber","getNationalDigits","nationalSignificantNumberMatchesInput","nationalPrefix","carrierCode","complexPrefixBeforeNationalSignificantNumber","properties","Object","keys","key","country","setCountry","setCallingCode","nextDigits","slice","length"],"sources":["../source/AsYouTypeState.js"],"sourcesContent":["export default class AsYouTypeState {\r\n\tconstructor({ onCountryChange, onCallingCodeChange }) {\r\n\t\tthis.onCountryChange = onCountryChange\r\n\t\tthis.onCallingCodeChange = onCallingCodeChange\r\n\t}\r\n\r\n\treset(defaultCountry, defaultCallingCode) {\r\n\t\tthis.international = false\r\n\t\tthis.IDDPrefix = undefined\r\n\t\tthis.missingPlus = undefined\r\n\t\tthis.callingCode = undefined\r\n\t\tthis.digits = ''\r\n\t\tthis.resetNationalSignificantNumber()\r\n\t\tthis.initCountryAndCallingCode(defaultCountry, defaultCallingCode)\r\n\t}\r\n\r\n\tresetNationalSignificantNumber() {\r\n\t\tthis.nationalSignificantNumber = this.getNationalDigits()\r\n\t\tthis.nationalSignificantNumberMatchesInput = true\r\n\t\tthis.nationalPrefix = undefined\r\n\t\tthis.carrierCode = undefined\r\n\t\tthis.complexPrefixBeforeNationalSignificantNumber = undefined\r\n\t}\r\n\r\n\tupdate(properties) {\r\n\t\tfor (const key of Object.keys(properties)) {\r\n\t\t\tthis[key] = properties[key]\r\n\t\t}\r\n\t}\r\n\r\n\tinitCountryAndCallingCode(country, callingCode) {\r\n\t\tthis.setCountry(country)\r\n\t\tthis.setCallingCode(callingCode)\r\n\t}\r\n\r\n\tsetCountry(country) {\r\n\t\tthis.country = country\r\n\t\tthis.onCountryChange(country)\r\n\t}\r\n\r\n\tsetCallingCode(callingCode) {\r\n\t\tthis.callingCode = callingCode\r\n\t\tthis.onCallingCodeChange(callingCode, this.country)\r\n\t}\r\n\r\n\tstartInternationalNumber(country, callingCode) {\r\n\t\t// Prepend the `+` to parsed input.\r\n\t\tthis.international = true\r\n\t\t// If a default country was set then reset it\r\n\t\t// because an explicitly international phone\r\n\t\t// number is being entered.\r\n\t\tthis.initCountryAndCallingCode(country, callingCode)\r\n\t}\r\n\r\n\tappendDigits(nextDigits) {\r\n\t\tthis.digits += nextDigits\r\n\t}\r\n\r\n\tappendNationalSignificantNumberDigits(nextDigits) {\r\n\t\tthis.nationalSignificantNumber += nextDigits\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the part of `this.digits` that corresponds to the national number.\r\n\t * Basically, all digits that have been input by the user, except for the\r\n\t * international prefix and the country calling code part\r\n\t * (if the number is an international one).\r\n\t * @return {string}\r\n\t */\r\n\tgetNationalDigits() {\r\n\t\tif (this.international) {\r\n\t\t\treturn this.digits.slice(\r\n\t\t\t\t(this.IDDPrefix ? this.IDDPrefix.length : 0) +\r\n\t\t\t\t(this.callingCode ? this.callingCode.length : 0)\r\n\t\t\t)\r\n\t\t}\r\n\t\treturn this.digits\r\n\t}\r\n\r\n\tgetDigitsWithoutInternationalPrefix() {\r\n\t\tif (this.international) {\r\n\t\t\tif (this.IDDPrefix) {\r\n\t\t\t\treturn this.digits.slice(this.IDDPrefix.length)\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.digits\r\n\t}\r\n}"],"mappings":";;;;;;IAAqBA,c;EACpB,8BAAsD;IAAA,IAAxCC,eAAwC,QAAxCA,eAAwC;IAAA,IAAvBC,mBAAuB,QAAvBA,mBAAuB;;IAAA;;IACrD,KAAKD,eAAL,GAAuBA,eAAvB;IACA,KAAKC,mBAAL,GAA2BA,mBAA3B;EACA;;;;WAED,eAAMC,cAAN,EAAsBC,kBAAtB,EAA0C;MACzC,KAAKC,aAAL,GAAqB,KAArB;MACA,KAAKC,SAAL,GAAiBC,SAAjB;MACA,KAAKC,WAAL,GAAmBD,SAAnB;MACA,KAAKE,WAAL,GAAmBF,SAAnB;MACA,KAAKG,MAAL,GAAc,EAAd;MACA,KAAKC,8BAAL;MACA,KAAKC,yBAAL,CAA+BT,cAA/B,EAA+CC,kBAA/C;IACA;;;WAED,0CAAiC;MAChC,KAAKS,yBAAL,GAAiC,KAAKC,iBAAL,EAAjC;MACA,KAAKC,qCAAL,GAA6C,IAA7C;MACA,KAAKC,cAAL,GAAsBT,SAAtB;MACA,KAAKU,WAAL,GAAmBV,SAAnB;MACA,KAAKW,4CAAL,GAAoDX,SAApD;IACA;;;WAED,gBAAOY,UAAP,EAAmB;MAClB,gCAAkBC,MAAM,CAACC,IAAP,CAAYF,UAAZ,CAAlB,kCAA2C;QAAtC,IAAMG,GAAG,mBAAT;QACJ,KAAKA,GAAL,IAAYH,UAAU,CAACG,GAAD,CAAtB;MACA;IACD;;;WAED,mCAA0BC,OAA1B,EAAmCd,WAAnC,EAAgD;MAC/C,KAAKe,UAAL,CAAgBD,OAAhB;MACA,KAAKE,cAAL,CAAoBhB,WAApB;IACA;;;WAED,oBAAWc,OAAX,EAAoB;MACnB,KAAKA,OAAL,GAAeA,OAAf;MACA,KAAKtB,eAAL,CAAqBsB,OAArB;IACA;;;WAED,wBAAed,WAAf,EAA4B;MAC3B,KAAKA,WAAL,GAAmBA,WAAnB;MACA,KAAKP,mBAAL,CAAyBO,WAAzB,EAAsC,KAAKc,OAA3C;IACA;;;WAED,kCAAyBA,OAAzB,EAAkCd,WAAlC,EAA+C;MAC9C;MACA,KAAKJ,aAAL,GAAqB,IAArB,CAF8C,CAG9C;MACA;MACA;;MACA,KAAKO,yBAAL,CAA+BW,OAA/B,EAAwCd,WAAxC;IACA;;;WAED,sBAAaiB,UAAb,EAAyB;MACxB,KAAKhB,MAAL,IAAegB,UAAf;IACA;;;WAED,+CAAsCA,UAAtC,EAAkD;MACjD,KAAKb,yBAAL,IAAkCa,UAAlC;IACA;IAED;AACD;AACA;AACA;AACA;AACA;AACA;;;;WACC,6BAAoB;MACnB,IAAI,KAAKrB,aAAT,EAAwB;QACvB,OAAO,KAAKK,MAAL,CAAYiB,KAAZ,CACN,CAAC,KAAKrB,SAAL,GAAiB,KAAKA,SAAL,CAAesB,MAAhC,GAAyC,CAA1C,KACC,KAAKnB,WAAL,GAAmB,KAAKA,WAAL,CAAiBmB,MAApC,GAA6C,CAD9C,CADM,CAAP;MAIA;;MACD,OAAO,KAAKlB,MAAZ;IACA;;;WAED,+CAAsC;MACrC,IAAI,KAAKL,aAAT,EAAwB;QACvB,IAAI,KAAKC,SAAT,EAAoB;UACnB,OAAO,KAAKI,MAAL,CAAYiB,KAAZ,CAAkB,KAAKrB,SAAL,CAAesB,MAAjC,CAAP;QACA;MACD;;MACD,OAAO,KAAKlB,MAAZ;IACA;;;;;;SAtFmBV,c"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/ParseError.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/ParseError.js new file mode 100644 index 00000000..6956927c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/ParseError.js @@ -0,0 +1,56 @@ +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); } + +function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +// https://stackoverflow.com/a/46971044/970769 +// "Breaking changes in Typescript 2.1" +// "Extending built-ins like Error, Array, and Map may no longer work." +// "As a recommendation, you can manually adjust the prototype immediately after any super(...) calls." +// https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work +var ParseError = /*#__PURE__*/function (_Error) { + _inherits(ParseError, _Error); + + var _super = _createSuper(ParseError); + + function ParseError(code) { + var _this; + + _classCallCheck(this, ParseError); + + _this = _super.call(this, code); // Set the prototype explicitly. + // Any subclass of FooError will have to manually set the prototype as well. + + Object.setPrototypeOf(_assertThisInitialized(_this), ParseError.prototype); + _this.name = _this.constructor.name; + return _this; + } + + return _createClass(ParseError); +}( /*#__PURE__*/_wrapNativeSuper(Error)); + +export { ParseError as default }; +//# sourceMappingURL=ParseError.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/ParseError.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/ParseError.js.map new file mode 100644 index 00000000..5c812f57 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/ParseError.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ParseError.js","names":["ParseError","code","Object","setPrototypeOf","prototype","name","constructor","Error"],"sources":["../source/ParseError.js"],"sourcesContent":["// https://stackoverflow.com/a/46971044/970769\r\n// \"Breaking changes in Typescript 2.1\"\r\n// \"Extending built-ins like Error, Array, and Map may no longer work.\"\r\n// \"As a recommendation, you can manually adjust the prototype immediately after any super(...) calls.\"\r\n// https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\r\nexport default class ParseError extends Error {\r\n constructor(code) {\r\n super(code)\r\n // Set the prototype explicitly.\r\n // Any subclass of FooError will have to manually set the prototype as well.\r\n Object.setPrototypeOf(this, ParseError.prototype)\r\n this.name = this.constructor.name\r\n }\r\n}"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;IACqBA,U;;;;;EACnB,oBAAYC,IAAZ,EAAkB;IAAA;;IAAA;;IAChB,0BAAMA,IAAN,EADgB,CAEhB;IACA;;IACAC,MAAM,CAACC,cAAP,gCAA4BH,UAAU,CAACI,SAAvC;IACA,MAAKC,IAAL,GAAY,MAAKC,WAAL,CAAiBD,IAA7B;IALgB;EAMjB;;;iCAPqCE,K;;SAAnBP,U"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumber.js new file mode 100644 index 00000000..fdd783bb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumber.js @@ -0,0 +1,138 @@ +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +import Metadata from './metadata.js'; +import isPossibleNumber from './isPossibleNumber_.js'; +import isValidNumber from './validate_.js'; +import isValidNumberForRegion from './isValidNumberForRegion_.js'; +import getNumberType from './helpers/getNumberType.js'; +import formatNumber from './format_.js'; +var USE_NON_GEOGRAPHIC_COUNTRY_CODE = false; + +var PhoneNumber = /*#__PURE__*/function () { + function PhoneNumber(countryCallingCode, nationalNumber, metadata) { + _classCallCheck(this, PhoneNumber); + + if (!countryCallingCode) { + throw new TypeError('`country` or `countryCallingCode` not passed'); + } + + if (!nationalNumber) { + throw new TypeError('`nationalNumber` not passed'); + } + + if (!metadata) { + throw new TypeError('`metadata` not passed'); + } + + var _metadata = new Metadata(metadata); // If country code is passed then derive `countryCallingCode` from it. + // Also store the country code as `.country`. + + + if (isCountryCode(countryCallingCode)) { + this.country = countryCallingCode; + + _metadata.country(countryCallingCode); + + countryCallingCode = _metadata.countryCallingCode(); + } else { + /* istanbul ignore if */ + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + if (_metadata.isNonGeographicCallingCode(countryCallingCode)) { + this.country = '001'; + } + } + } + + this.countryCallingCode = countryCallingCode; + this.nationalNumber = nationalNumber; + this.number = '+' + this.countryCallingCode + this.nationalNumber; + this.metadata = metadata; + } + + _createClass(PhoneNumber, [{ + key: "setExt", + value: function setExt(ext) { + this.ext = ext; + } + }, { + key: "isPossible", + value: function isPossible() { + return isPossibleNumber(this, { + v2: true + }, this.metadata); + } + }, { + key: "isValid", + value: function isValid() { + return isValidNumber(this, { + v2: true + }, this.metadata); + } + }, { + key: "isNonGeographic", + value: function isNonGeographic() { + var metadata = new Metadata(this.metadata); + return metadata.isNonGeographicCallingCode(this.countryCallingCode); + } + }, { + key: "isEqual", + value: function isEqual(phoneNumber) { + return this.number === phoneNumber.number && this.ext === phoneNumber.ext; + } // // Is just an alias for `this.isValid() && this.country === country`. + // // https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion + // isValidForRegion(country) { + // return isValidNumberForRegion(this, country, { v2: true }, this.metadata) + // } + + }, { + key: "getType", + value: function getType() { + return getNumberType(this, { + v2: true + }, this.metadata); + } + }, { + key: "format", + value: function format(_format, options) { + return formatNumber(this, _format, options ? _objectSpread(_objectSpread({}, options), {}, { + v2: true + }) : { + v2: true + }, this.metadata); + } + }, { + key: "formatNational", + value: function formatNational(options) { + return this.format('NATIONAL', options); + } + }, { + key: "formatInternational", + value: function formatInternational(options) { + return this.format('INTERNATIONAL', options); + } + }, { + key: "getURI", + value: function getURI(options) { + return this.format('RFC3966', options); + } + }]); + + return PhoneNumber; +}(); + +export { PhoneNumber as default }; + +var isCountryCode = function isCountryCode(value) { + return /^[A-Z]{2}$/.test(value); +}; +//# sourceMappingURL=PhoneNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumber.js.map new file mode 100644 index 00000000..f37cc89a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"PhoneNumber.js","names":["Metadata","isPossibleNumber","isValidNumber","isValidNumberForRegion","getNumberType","formatNumber","USE_NON_GEOGRAPHIC_COUNTRY_CODE","PhoneNumber","countryCallingCode","nationalNumber","metadata","TypeError","_metadata","isCountryCode","country","isNonGeographicCallingCode","number","ext","v2","phoneNumber","format","options","value","test"],"sources":["../source/PhoneNumber.js"],"sourcesContent":["import Metadata from './metadata.js'\r\nimport isPossibleNumber from './isPossibleNumber_.js'\r\nimport isValidNumber from './validate_.js'\r\nimport isValidNumberForRegion from './isValidNumberForRegion_.js'\r\nimport getNumberType from './helpers/getNumberType.js'\r\nimport formatNumber from './format_.js'\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\nexport default class PhoneNumber {\r\n\tconstructor(countryCallingCode, nationalNumber, metadata) {\r\n\t\tif (!countryCallingCode) {\r\n\t\t\tthrow new TypeError('`country` or `countryCallingCode` not passed')\r\n\t\t}\r\n\t\tif (!nationalNumber) {\r\n\t\t\tthrow new TypeError('`nationalNumber` not passed')\r\n\t\t}\r\n\t\tif (!metadata) {\r\n\t\t\tthrow new TypeError('`metadata` not passed')\r\n\t\t}\r\n\t\tconst _metadata = new Metadata(metadata)\r\n\t\t// If country code is passed then derive `countryCallingCode` from it.\r\n\t\t// Also store the country code as `.country`.\r\n\t\tif (isCountryCode(countryCallingCode)) {\r\n\t\t\tthis.country = countryCallingCode\r\n\t\t\t_metadata.country(countryCallingCode)\r\n\t\t\tcountryCallingCode = _metadata.countryCallingCode()\r\n\t\t} else {\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\t\tif (_metadata.isNonGeographicCallingCode(countryCallingCode)) {\r\n\t\t\t\t\tthis.country = '001'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.countryCallingCode = countryCallingCode\r\n\t\tthis.nationalNumber = nationalNumber\r\n\t\tthis.number = '+' + this.countryCallingCode + this.nationalNumber\r\n\t\tthis.metadata = metadata\r\n\t}\r\n\r\n\tsetExt(ext) {\r\n\t\tthis.ext = ext\r\n\t}\r\n\r\n\tisPossible() {\r\n\t\treturn isPossibleNumber(this, { v2: true }, this.metadata)\r\n\t}\r\n\r\n\tisValid() {\r\n\t\treturn isValidNumber(this, { v2: true }, this.metadata)\r\n\t}\r\n\r\n\tisNonGeographic() {\r\n\t\tconst metadata = new Metadata(this.metadata)\r\n\t\treturn metadata.isNonGeographicCallingCode(this.countryCallingCode)\r\n\t}\r\n\r\n\tisEqual(phoneNumber) {\r\n\t\treturn this.number === phoneNumber.number && this.ext === phoneNumber.ext\r\n\t}\r\n\r\n\t// // Is just an alias for `this.isValid() && this.country === country`.\r\n\t// // https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n\t// isValidForRegion(country) {\r\n\t// \treturn isValidNumberForRegion(this, country, { v2: true }, this.metadata)\r\n\t// }\r\n\r\n\tgetType() {\r\n\t\treturn getNumberType(this, { v2: true }, this.metadata)\r\n\t}\r\n\r\n\tformat(format, options) {\r\n\t\treturn formatNumber(\r\n\t\t\tthis,\r\n\t\t\tformat,\r\n\t\t\toptions ? { ...options, v2: true } : { v2: true },\r\n\t\t\tthis.metadata\r\n\t\t)\r\n\t}\r\n\r\n\tformatNational(options) {\r\n\t\treturn this.format('NATIONAL', options)\r\n\t}\r\n\r\n\tformatInternational(options) {\r\n\t\treturn this.format('INTERNATIONAL', options)\r\n\t}\r\n\r\n\tgetURI(options) {\r\n\t\treturn this.format('RFC3966', options)\r\n\t}\r\n}\r\n\r\nconst isCountryCode = (value) => /^[A-Z]{2}$/.test(value)"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumber.test.js new file mode 100644 index 00000000..2c7047b4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumber.test.js @@ -0,0 +1,46 @@ +import metadata from '../metadata.min.json' assert { type: 'json' }; +import PhoneNumber from './PhoneNumber.js'; +describe('PhoneNumber', function () { + it('should validate constructor arguments', function () { + expect(function () { + return new PhoneNumber(); + }).to["throw"]('`countryCallingCode` not passed'); + expect(function () { + return new PhoneNumber('7'); + }).to["throw"]('`nationalNumber` not passed'); + expect(function () { + return new PhoneNumber('7', '8005553535'); + }).to["throw"]('`metadata` not passed'); + }); + it('should accept country code argument', function () { + var phoneNumber = new PhoneNumber('RU', '8005553535', metadata); + phoneNumber.countryCallingCode.should.equal('7'); + phoneNumber.country.should.equal('RU'); + phoneNumber.number.should.equal('+78005553535'); + }); + it('should format number with options', function () { + var phoneNumber = new PhoneNumber('7', '8005553535', metadata); + phoneNumber.ext = '123'; + phoneNumber.format('NATIONAL', { + formatExtension: function formatExtension(number, extension) { + return "".concat(number, " \u0434\u043E\u0431. ").concat(extension); + } + }).should.equal('8 (800) 555-35-35 доб. 123'); + }); + it('should compare phone numbers', function () { + new PhoneNumber('RU', '8005553535', metadata).isEqual(new PhoneNumber('RU', '8005553535', metadata)).should.equal(true); + new PhoneNumber('RU', '8005553535', metadata).isEqual(new PhoneNumber('7', '8005553535', metadata)).should.equal(true); + new PhoneNumber('RU', '8005553535', metadata).isEqual(new PhoneNumber('RU', '8005553536', metadata)).should.equal(false); + }); + it('should tell if a number is non-geographic', function () { + new PhoneNumber('7', '8005553535', metadata).isNonGeographic().should.equal(false); + new PhoneNumber('870', '773111632', metadata).isNonGeographic().should.equal(true); + }); + it('should allow setting extension', function () { + var phoneNumber = new PhoneNumber('1', '2133734253', metadata); + phoneNumber.setExt('1234'); + phoneNumber.ext.should.equal('1234'); + phoneNumber.formatNational().should.equal('(213) 373-4253 ext. 1234'); + }); +}); +//# sourceMappingURL=PhoneNumber.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumber.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumber.test.js.map new file mode 100644 index 00000000..b9c737f9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumber.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"PhoneNumber.test.js","names":["metadata","type","PhoneNumber","describe","it","expect","to","phoneNumber","countryCallingCode","should","equal","country","number","ext","format","formatExtension","extension","isEqual","isNonGeographic","setExt","formatNational"],"sources":["../source/PhoneNumber.test.js"],"sourcesContent":["import metadata from '../metadata.min.json' assert { type: 'json' }\r\nimport PhoneNumber from './PhoneNumber.js'\r\n\r\ndescribe('PhoneNumber', () => {\r\n\tit('should validate constructor arguments', () => {\r\n\t\texpect(() => new PhoneNumber()).to.throw('`countryCallingCode` not passed')\r\n\t\texpect(() => new PhoneNumber('7')).to.throw('`nationalNumber` not passed')\r\n\t\texpect(() => new PhoneNumber('7', '8005553535')).to.throw('`metadata` not passed')\r\n\t})\r\n\r\n\tit('should accept country code argument', () => {\r\n\t\tconst phoneNumber = new PhoneNumber('RU', '8005553535', metadata)\r\n\t\tphoneNumber.countryCallingCode.should.equal('7')\r\n\t\tphoneNumber.country.should.equal('RU')\r\n\t\tphoneNumber.number.should.equal('+78005553535')\r\n\t})\r\n\r\n\tit('should format number with options', () => {\r\n\t\tconst phoneNumber = new PhoneNumber('7', '8005553535', metadata)\r\n\t\tphoneNumber.ext = '123'\r\n\t\tphoneNumber.format('NATIONAL', {\r\n\t\t\tformatExtension: (number, extension) => `${number} доб. ${extension}`\r\n\t\t})\r\n\t\t.should.equal('8 (800) 555-35-35 доб. 123')\r\n\t})\r\n\r\n\tit('should compare phone numbers', () => {\r\n\t\tnew PhoneNumber('RU', '8005553535', metadata).isEqual(new PhoneNumber('RU', '8005553535', metadata)).should.equal(true)\r\n\t\tnew PhoneNumber('RU', '8005553535', metadata).isEqual(new PhoneNumber('7', '8005553535', metadata)).should.equal(true)\r\n\t\tnew PhoneNumber('RU', '8005553535', metadata).isEqual(new PhoneNumber('RU', '8005553536', metadata)).should.equal(false)\r\n\t})\r\n\r\n\tit('should tell if a number is non-geographic', () => {\r\n\t\tnew PhoneNumber('7', '8005553535', metadata).isNonGeographic().should.equal(false)\r\n\t\tnew PhoneNumber('870', '773111632', metadata).isNonGeographic().should.equal(true)\r\n\t})\r\n\r\n\tit('should allow setting extension', () => {\r\n\t\tconst phoneNumber = new PhoneNumber('1', '2133734253', metadata)\r\n\t\tphoneNumber.setExt('1234')\r\n\t\tphoneNumber.ext.should.equal('1234')\r\n\t\tphoneNumber.formatNational().should.equal('(213) 373-4253 ext. 1234')\r\n\t})\r\n})"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumberMatcher.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumberMatcher.js new file mode 100644 index 00000000..fd03c55a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumberMatcher.js @@ -0,0 +1,366 @@ +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +/** + * A port of Google's `PhoneNumberMatcher.java`. + * https://github.com/googlei18n/libphonenumber/blob/master/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberMatcher.java + * Date: 08.03.2018. + */ +import PhoneNumber from './PhoneNumber.js'; +import { MAX_LENGTH_FOR_NSN, MAX_LENGTH_COUNTRY_CODE, VALID_PUNCTUATION } from './constants.js'; +import createExtensionPattern from './helpers/extension/createExtensionPattern.js'; +import RegExpCache from './findNumbers/RegExpCache.js'; +import { limit, trimAfterFirstMatch } from './findNumbers/util.js'; +import { _pL, _pN, pZ, PZ, pNd } from './findNumbers/utf-8.js'; +import Leniency from './findNumbers/Leniency.js'; +import parsePreCandidate from './findNumbers/parsePreCandidate.js'; +import isValidPreCandidate from './findNumbers/isValidPreCandidate.js'; +import isValidCandidate, { LEAD_CLASS } from './findNumbers/isValidCandidate.js'; +import { isSupportedCountry } from './metadata.js'; +import parseNumber from './parse_.js'; +var EXTN_PATTERNS_FOR_MATCHING = createExtensionPattern('matching'); +/** + * Patterns used to extract phone numbers from a larger phone-number-like pattern. These are + * ordered according to specificity. For example, white-space is last since that is frequently + * used in numbers, not just to separate two numbers. We have separate patterns since we don't + * want to break up the phone-number-like text on more than one different kind of symbol at one + * time, although symbols of the same type (e.g. space) can be safely grouped together. + * + * Note that if there is a match, we will always check any text found up to the first match as + * well. + */ + +var INNER_MATCHES = [// Breaks on the slash - e.g. "651-234-2345/332-445-1234" +'\\/+(.*)/', // Note that the bracket here is inside the capturing group, since we consider it part of the +// phone number. Will match a pattern like "(650) 223 3345 (754) 223 3321". +'(\\([^(]*)', // Breaks on a hyphen - e.g. "12345 - 332-445-1234 is my number." +// We require a space on either side of the hyphen for it to be considered a separator. +"(?:".concat(pZ, "-|-").concat(pZ, ")").concat(pZ, "*(.+)"), // Various types of wide hyphens. Note we have decided not to enforce a space here, since it's +// possible that it's supposed to be used to break two numbers without spaces, and we haven't +// seen many instances of it used within a number. +"[\u2012-\u2015\uFF0D]".concat(pZ, "*(.+)"), // Breaks on a full stop - e.g. "12345. 332-445-1234 is my number." +"\\.+".concat(pZ, "*([^.]+)"), // Breaks on space - e.g. "3324451234 8002341234" +"".concat(pZ, "+(").concat(PZ, "+)")]; // Limit on the number of leading (plus) characters. + +var leadLimit = limit(0, 2); // Limit on the number of consecutive punctuation characters. + +var punctuationLimit = limit(0, 4); +/* The maximum number of digits allowed in a digit-separated block. As we allow all digits in a + * single block, set high enough to accommodate the entire national number and the international + * country code. */ + +var digitBlockLimit = MAX_LENGTH_FOR_NSN + MAX_LENGTH_COUNTRY_CODE; // Limit on the number of blocks separated by punctuation. +// Uses digitBlockLimit since some formats use spaces to separate each digit. + +var blockLimit = limit(0, digitBlockLimit); +/* A punctuation sequence allowing white space. */ + +var punctuation = "[".concat(VALID_PUNCTUATION, "]") + punctuationLimit; // A digits block without punctuation. + +var digitSequence = pNd + limit(1, digitBlockLimit); +/** + * Phone number pattern allowing optional punctuation. + * The phone number pattern used by `find()`, similar to + * VALID_PHONE_NUMBER, but with the following differences: + *

    + *
  • All captures are limited in order to place an upper bound to the text matched by the + * pattern. + *
      + *
    • Leading punctuation / plus signs are limited. + *
    • Consecutive occurrences of punctuation are limited. + *
    • Number of digits is limited. + *
    + *
  • No whitespace is allowed at the start or end. + *
  • No alpha digits (vanity numbers such as 1-800-SIX-FLAGS) are currently supported. + *
+ */ + +var PATTERN = '(?:' + LEAD_CLASS + punctuation + ')' + leadLimit + digitSequence + '(?:' + punctuation + digitSequence + ')' + blockLimit + '(?:' + EXTN_PATTERNS_FOR_MATCHING + ')?'; // Regular expression of trailing characters that we want to remove. +// We remove all characters that are not alpha or numerical characters. +// The hash character is retained here, as it may signify +// the previous block was an extension. +// +// // Don't know what does '&&' mean here. +// const UNWANTED_END_CHAR_PATTERN = new RegExp(`[[\\P{N}&&\\P{L}]&&[^#]]+$`) +// + +var UNWANTED_END_CHAR_PATTERN = new RegExp("[^".concat(_pN).concat(_pL, "#]+$")); +var NON_DIGITS_PATTERN = /(\D+)/; +var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1; +/** + * A stateful class that finds and extracts telephone numbers from {@linkplain CharSequence text}. + * Instances can be created using the {@linkplain PhoneNumberUtil#findNumbers factory methods} in + * {@link PhoneNumberUtil}. + * + *

Vanity numbers (phone numbers using alphabetic digits such as 1-800-SIX-FLAGS are + * not found. + * + *

This class is not thread-safe. + */ + +var PhoneNumberMatcher = /*#__PURE__*/function () { + /** + * Creates a new instance. See the factory methods in {@link PhoneNumberUtil} on how to obtain a + * new instance. + * + * @param util the phone number util to use + * @param text the character sequence that we will search, null for no text + * @param country the country to assume for phone numbers not written in international format + * (with a leading plus, or with the international dialing prefix of the specified region). + * May be null or "ZZ" if only numbers with a leading plus should be + * considered. + * @param leniency the leniency to use when evaluating candidate phone numbers + * @param maxTries the maximum number of invalid numbers to try before giving up on the text. + * This is to cover degenerate cases where the text has a lot of false positives in it. Must + * be {@code >= 0}. + */ + function PhoneNumberMatcher() { + var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var metadata = arguments.length > 2 ? arguments[2] : undefined; + + _classCallCheck(this, PhoneNumberMatcher); + + options = _objectSpread(_objectSpread({}, options), {}, { + defaultCallingCode: options.defaultCallingCode, + defaultCountry: options.defaultCountry && isSupportedCountry(options.defaultCountry, metadata) ? options.defaultCountry : undefined, + leniency: options.leniency || options.extended ? 'POSSIBLE' : 'VALID', + maxTries: options.maxTries || MAX_SAFE_INTEGER + }); + + if (!options.leniency) { + throw new TypeError('`Leniency` not supplied'); + } + + if (options.maxTries < 0) { + throw new TypeError('`maxTries` not supplied'); + } + + this.text = text; + this.options = options; + this.metadata = metadata; + /** The degree of validation requested. */ + + this.leniency = Leniency[options.leniency]; + + if (!this.leniency) { + throw new TypeError("Unknown leniency: ".concat(options.leniency, ".")); + } + /** The maximum number of retries after matching an invalid number. */ + + + this.maxTries = options.maxTries; + this.PATTERN = new RegExp(PATTERN, 'ig'); + /** The iteration tristate. */ + + this.state = 'NOT_READY'; + /** The next index to start searching at. Undefined in {@link State#DONE}. */ + + this.searchIndex = 0; // A cache for frequently used country-specific regular expressions. Set to 32 to cover ~2-3 + // countries being used for the same doc with ~10 patterns for each country. Some pages will have + // a lot more countries in use, but typically fewer numbers for each so expanding the cache for + // that use-case won't have a lot of benefit. + + this.regExpCache = new RegExpCache(32); + } + /** + * Attempts to find the next subsequence in the searched sequence on or after {@code searchIndex} + * that represents a phone number. Returns the next match, null if none was found. + * + * @param index the search index to start searching at + * @return the phone number match found, null if none can be found + */ + + + _createClass(PhoneNumberMatcher, [{ + key: "find", + value: function find() { + // // Reset the regular expression. + // this.PATTERN.lastIndex = index + var matches; + + while (this.maxTries > 0 && (matches = this.PATTERN.exec(this.text)) !== null) { + var candidate = matches[0]; + var offset = matches.index; + candidate = parsePreCandidate(candidate); + + if (isValidPreCandidate(candidate, offset, this.text)) { + var match = // Try to come up with a valid match given the entire candidate. + this.parseAndVerify(candidate, offset, this.text) // If that failed, try to find an "inner match" - + // there might be a phone number within this candidate. + || this.extractInnerMatch(candidate, offset, this.text); + + if (match) { + if (this.options.v2) { + var phoneNumber = new PhoneNumber(match.country || match.countryCallingCode, match.phone, this.metadata); + + if (match.ext) { + phoneNumber.ext = match.ext; + } + + return { + startsAt: match.startsAt, + endsAt: match.endsAt, + number: phoneNumber + }; + } + + return match; + } + } + + this.maxTries--; + } + } + /** + * Attempts to extract a match from `substring` + * if the substring itself does not qualify as a match. + */ + + }, { + key: "extractInnerMatch", + value: function extractInnerMatch(substring, offset, text) { + for (var _iterator = _createForOfIteratorHelperLoose(INNER_MATCHES), _step; !(_step = _iterator()).done;) { + var innerMatchPattern = _step.value; + var isFirstMatch = true; + var candidateMatch = void 0; + var innerMatchRegExp = new RegExp(innerMatchPattern, 'g'); + + while (this.maxTries > 0 && (candidateMatch = innerMatchRegExp.exec(substring)) !== null) { + if (isFirstMatch) { + // We should handle any group before this one too. + var _candidate = trimAfterFirstMatch(UNWANTED_END_CHAR_PATTERN, substring.slice(0, candidateMatch.index)); + + var _match = this.parseAndVerify(_candidate, offset, text); + + if (_match) { + return _match; + } + + this.maxTries--; + isFirstMatch = false; + } + + var candidate = trimAfterFirstMatch(UNWANTED_END_CHAR_PATTERN, candidateMatch[1]); // Java code does `groupMatcher.start(1)` here, + // but there's no way in javascript to get a `candidate` start index, + // therefore resort to using this kind of an approximation. + // (`groupMatcher` is called `candidateInSubstringMatch` in this javascript port) + // https://stackoverflow.com/questions/15934353/get-index-of-each-capture-in-a-javascript-regex + + var candidateIndexGuess = substring.indexOf(candidate, candidateMatch.index); + var match = this.parseAndVerify(candidate, offset + candidateIndexGuess, text); + + if (match) { + return match; + } + + this.maxTries--; + } + } + } + /** + * Parses a phone number from the `candidate` using `parseNumber` and + * verifies it matches the requested `leniency`. If parsing and verification succeed, + * a corresponding `PhoneNumberMatch` is returned, otherwise this method returns `null`. + * + * @param candidate the candidate match + * @param offset the offset of {@code candidate} within {@link #text} + * @return the parsed and validated phone number match, or null + */ + + }, { + key: "parseAndVerify", + value: function parseAndVerify(candidate, offset, text) { + if (!isValidCandidate(candidate, offset, text, this.options.leniency)) { + return; + } + + var number = parseNumber(candidate, { + extended: true, + defaultCountry: this.options.defaultCountry, + defaultCallingCode: this.options.defaultCallingCode + }, this.metadata); + + if (!number.possible) { + return; + } + + if (this.leniency(number, candidate, this.metadata, this.regExpCache)) { + // // We used parseAndKeepRawInput to create this number, + // // but for now we don't return the extra values parsed. + // // TODO: stop clearing all values here and switch all users over + // // to using rawInput() rather than the rawString() of PhoneNumberMatch. + // number.clearCountryCodeSource() + // number.clearRawInput() + // number.clearPreferredDomesticCarrierCode() + var result = { + startsAt: offset, + endsAt: offset + candidate.length, + phone: number.phone + }; + + if (number.country && number.country !== '001') { + result.country = number.country; + } else { + result.countryCallingCode = number.countryCallingCode; + } + + if (number.ext) { + result.ext = number.ext; + } + + return result; + } + } + }, { + key: "hasNext", + value: function hasNext() { + if (this.state === 'NOT_READY') { + this.lastMatch = this.find(); // (this.searchIndex) + + if (this.lastMatch) { + // this.searchIndex = this.lastMatch.endsAt + this.state = 'READY'; + } else { + this.state = 'DONE'; + } + } + + return this.state === 'READY'; + } + }, { + key: "next", + value: function next() { + // Check the state and find the next match as a side-effect if necessary. + if (!this.hasNext()) { + throw new Error('No next element'); + } // Don't retain that memory any longer than necessary. + + + var result = this.lastMatch; + this.lastMatch = null; + this.state = 'NOT_READY'; + return result; + } + }]); + + return PhoneNumberMatcher; +}(); + +export { PhoneNumberMatcher as default }; +//# sourceMappingURL=PhoneNumberMatcher.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumberMatcher.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumberMatcher.js.map new file mode 100644 index 00000000..dd942380 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumberMatcher.js.map @@ -0,0 +1 @@ +{"version":3,"file":"PhoneNumberMatcher.js","names":["PhoneNumber","MAX_LENGTH_FOR_NSN","MAX_LENGTH_COUNTRY_CODE","VALID_PUNCTUATION","createExtensionPattern","RegExpCache","limit","trimAfterFirstMatch","_pL","_pN","pZ","PZ","pNd","Leniency","parsePreCandidate","isValidPreCandidate","isValidCandidate","LEAD_CLASS","isSupportedCountry","parseNumber","EXTN_PATTERNS_FOR_MATCHING","INNER_MATCHES","leadLimit","punctuationLimit","digitBlockLimit","blockLimit","punctuation","digitSequence","PATTERN","UNWANTED_END_CHAR_PATTERN","RegExp","NON_DIGITS_PATTERN","MAX_SAFE_INTEGER","Number","Math","pow","PhoneNumberMatcher","text","options","metadata","defaultCallingCode","defaultCountry","undefined","leniency","extended","maxTries","TypeError","state","searchIndex","regExpCache","matches","exec","candidate","offset","index","match","parseAndVerify","extractInnerMatch","v2","phoneNumber","country","countryCallingCode","phone","ext","startsAt","endsAt","number","substring","innerMatchPattern","isFirstMatch","candidateMatch","innerMatchRegExp","slice","candidateIndexGuess","indexOf","possible","result","length","lastMatch","find","hasNext","Error"],"sources":["../source/PhoneNumberMatcher.js"],"sourcesContent":["/**\r\n * A port of Google's `PhoneNumberMatcher.java`.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberMatcher.java\r\n * Date: 08.03.2018.\r\n */\r\n\r\nimport PhoneNumber from './PhoneNumber.js'\r\n\r\nimport {\r\n MAX_LENGTH_FOR_NSN,\r\n MAX_LENGTH_COUNTRY_CODE,\r\n VALID_PUNCTUATION\r\n} from './constants.js'\r\n\r\nimport createExtensionPattern from './helpers/extension/createExtensionPattern.js'\r\n\r\nimport RegExpCache from './findNumbers/RegExpCache.js'\r\n\r\nimport {\r\n\tlimit,\r\n\ttrimAfterFirstMatch\r\n} from './findNumbers/util.js'\r\n\r\nimport {\r\n\t_pL,\r\n\t_pN,\r\n\tpZ,\r\n\tPZ,\r\n\tpNd\r\n} from './findNumbers/utf-8.js'\r\n\r\nimport Leniency from './findNumbers/Leniency.js'\r\nimport parsePreCandidate from './findNumbers/parsePreCandidate.js'\r\nimport isValidPreCandidate from './findNumbers/isValidPreCandidate.js'\r\nimport isValidCandidate, { LEAD_CLASS } from './findNumbers/isValidCandidate.js'\r\n\r\nimport { isSupportedCountry } from './metadata.js'\r\n\r\nimport parseNumber from './parse_.js'\r\n\r\nconst EXTN_PATTERNS_FOR_MATCHING = createExtensionPattern('matching')\r\n\r\n/**\r\n * Patterns used to extract phone numbers from a larger phone-number-like pattern. These are\r\n * ordered according to specificity. For example, white-space is last since that is frequently\r\n * used in numbers, not just to separate two numbers. We have separate patterns since we don't\r\n * want to break up the phone-number-like text on more than one different kind of symbol at one\r\n * time, although symbols of the same type (e.g. space) can be safely grouped together.\r\n *\r\n * Note that if there is a match, we will always check any text found up to the first match as\r\n * well.\r\n */\r\nconst INNER_MATCHES =\r\n[\r\n\t// Breaks on the slash - e.g. \"651-234-2345/332-445-1234\"\r\n\t'\\\\/+(.*)/',\r\n\r\n\t// Note that the bracket here is inside the capturing group, since we consider it part of the\r\n\t// phone number. Will match a pattern like \"(650) 223 3345 (754) 223 3321\".\r\n\t'(\\\\([^(]*)',\r\n\r\n\t// Breaks on a hyphen - e.g. \"12345 - 332-445-1234 is my number.\"\r\n\t// We require a space on either side of the hyphen for it to be considered a separator.\r\n\t`(?:${pZ}-|-${pZ})${pZ}*(.+)`,\r\n\r\n\t// Various types of wide hyphens. Note we have decided not to enforce a space here, since it's\r\n\t// possible that it's supposed to be used to break two numbers without spaces, and we haven't\r\n\t// seen many instances of it used within a number.\r\n\t`[\\u2012-\\u2015\\uFF0D]${pZ}*(.+)`,\r\n\r\n\t// Breaks on a full stop - e.g. \"12345. 332-445-1234 is my number.\"\r\n\t`\\\\.+${pZ}*([^.]+)`,\r\n\r\n\t// Breaks on space - e.g. \"3324451234 8002341234\"\r\n\t`${pZ}+(${PZ}+)`\r\n]\r\n\r\n// Limit on the number of leading (plus) characters.\r\nconst leadLimit = limit(0, 2)\r\n\r\n// Limit on the number of consecutive punctuation characters.\r\nconst punctuationLimit = limit(0, 4)\r\n\r\n/* The maximum number of digits allowed in a digit-separated block. As we allow all digits in a\r\n * single block, set high enough to accommodate the entire national number and the international\r\n * country code. */\r\nconst digitBlockLimit = MAX_LENGTH_FOR_NSN + MAX_LENGTH_COUNTRY_CODE\r\n\r\n// Limit on the number of blocks separated by punctuation.\r\n// Uses digitBlockLimit since some formats use spaces to separate each digit.\r\nconst blockLimit = limit(0, digitBlockLimit)\r\n\r\n/* A punctuation sequence allowing white space. */\r\nconst punctuation = `[${VALID_PUNCTUATION}]` + punctuationLimit\r\n\r\n// A digits block without punctuation.\r\nconst digitSequence = pNd + limit(1, digitBlockLimit)\r\n\r\n/**\r\n * Phone number pattern allowing optional punctuation.\r\n * The phone number pattern used by `find()`, similar to\r\n * VALID_PHONE_NUMBER, but with the following differences:\r\n *

    \r\n *
  • All captures are limited in order to place an upper bound to the text matched by the\r\n * pattern.\r\n *
      \r\n *
    • Leading punctuation / plus signs are limited.\r\n *
    • Consecutive occurrences of punctuation are limited.\r\n *
    • Number of digits is limited.\r\n *
    \r\n *
  • No whitespace is allowed at the start or end.\r\n *
  • No alpha digits (vanity numbers such as 1-800-SIX-FLAGS) are currently supported.\r\n *
\r\n */\r\nconst PATTERN = '(?:' + LEAD_CLASS + punctuation + ')' + leadLimit\r\n\t+ digitSequence + '(?:' + punctuation + digitSequence + ')' + blockLimit\r\n\t+ '(?:' + EXTN_PATTERNS_FOR_MATCHING + ')?'\r\n\r\n// Regular expression of trailing characters that we want to remove.\r\n// We remove all characters that are not alpha or numerical characters.\r\n// The hash character is retained here, as it may signify\r\n// the previous block was an extension.\r\n//\r\n// // Don't know what does '&&' mean here.\r\n// const UNWANTED_END_CHAR_PATTERN = new RegExp(`[[\\\\P{N}&&\\\\P{L}]&&[^#]]+$`)\r\n//\r\nconst UNWANTED_END_CHAR_PATTERN = new RegExp(`[^${_pN}${_pL}#]+$`)\r\n\r\nconst NON_DIGITS_PATTERN = /(\\D+)/\r\n\r\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1\r\n\r\n/**\r\n * A stateful class that finds and extracts telephone numbers from {@linkplain CharSequence text}.\r\n * Instances can be created using the {@linkplain PhoneNumberUtil#findNumbers factory methods} in\r\n * {@link PhoneNumberUtil}.\r\n *\r\n *

Vanity numbers (phone numbers using alphabetic digits such as 1-800-SIX-FLAGS are\r\n * not found.\r\n *\r\n *

This class is not thread-safe.\r\n */\r\nexport default class PhoneNumberMatcher\r\n{\r\n /**\r\n * Creates a new instance. See the factory methods in {@link PhoneNumberUtil} on how to obtain a\r\n * new instance.\r\n *\r\n * @param util the phone number util to use\r\n * @param text the character sequence that we will search, null for no text\r\n * @param country the country to assume for phone numbers not written in international format\r\n * (with a leading plus, or with the international dialing prefix of the specified region).\r\n * May be null or \"ZZ\" if only numbers with a leading plus should be\r\n * considered.\r\n * @param leniency the leniency to use when evaluating candidate phone numbers\r\n * @param maxTries the maximum number of invalid numbers to try before giving up on the text.\r\n * This is to cover degenerate cases where the text has a lot of false positives in it. Must\r\n * be {@code >= 0}.\r\n */\r\n constructor(text = '', options = {}, metadata)\r\n {\r\n options = {\r\n ...options,\r\n defaultCallingCode: options.defaultCallingCode,\r\n defaultCountry: options.defaultCountry && isSupportedCountry(options.defaultCountry, metadata) ? options.defaultCountry : undefined,\r\n leniency: options.leniency || options.extended ? 'POSSIBLE' : 'VALID',\r\n maxTries: options.maxTries || MAX_SAFE_INTEGER\r\n }\r\n\r\n\t\tif (!options.leniency) {\r\n\t\t\tthrow new TypeError('`Leniency` not supplied')\r\n\t\t}\r\n\r\n\t\tif (options.maxTries < 0) {\r\n\t\t\tthrow new TypeError('`maxTries` not supplied')\r\n\t\t}\r\n\r\n\t\tthis.text = text\r\n\t\tthis.options = options\r\n this.metadata = metadata\r\n\r\n\t\t/** The degree of validation requested. */\r\n\t\tthis.leniency = Leniency[options.leniency]\r\n\r\n\t\tif (!this.leniency) {\r\n\t\t\tthrow new TypeError(`Unknown leniency: ${options.leniency}.`)\r\n\t\t}\r\n\r\n\t\t/** The maximum number of retries after matching an invalid number. */\r\n\t\tthis.maxTries = options.maxTries\r\n\r\n\t\tthis.PATTERN = new RegExp(PATTERN, 'ig')\r\n\r\n\r\n /** The iteration tristate. */\r\n this.state = 'NOT_READY'\r\n\r\n /** The next index to start searching at. Undefined in {@link State#DONE}. */\r\n this.searchIndex = 0\r\n\r\n // A cache for frequently used country-specific regular expressions. Set to 32 to cover ~2-3\r\n // countries being used for the same doc with ~10 patterns for each country. Some pages will have\r\n // a lot more countries in use, but typically fewer numbers for each so expanding the cache for\r\n // that use-case won't have a lot of benefit.\r\n this.regExpCache = new RegExpCache(32)\r\n }\r\n\r\n /**\r\n * Attempts to find the next subsequence in the searched sequence on or after {@code searchIndex}\r\n * that represents a phone number. Returns the next match, null if none was found.\r\n *\r\n * @param index the search index to start searching at\r\n * @return the phone number match found, null if none can be found\r\n */\r\n\tfind() {\r\n\t\t// // Reset the regular expression.\r\n\t\t// this.PATTERN.lastIndex = index\r\n\r\n\t\tlet matches\r\n\t\twhile ((this.maxTries > 0) && (matches = this.PATTERN.exec(this.text)) !== null) {\r\n\t\t\tlet candidate = matches[0]\r\n\t\t\tconst offset = matches.index\r\n\r\n\t\t\tcandidate = parsePreCandidate(candidate)\r\n\r\n\t\t\tif (isValidPreCandidate(candidate, offset, this.text)) {\r\n\t\t\t\tconst match =\r\n\t\t\t\t\t// Try to come up with a valid match given the entire candidate.\r\n\t\t\t\t\tthis.parseAndVerify(candidate, offset, this.text)\r\n\t\t\t\t\t// If that failed, try to find an \"inner match\" -\r\n\t\t\t\t\t// there might be a phone number within this candidate.\r\n\t\t\t\t\t|| this.extractInnerMatch(candidate, offset, this.text)\r\n\r\n\t\t\t\tif (match) {\r\n\t\t\t\t\tif (this.options.v2) {\r\n\t\t\t\t\t\tconst phoneNumber = new PhoneNumber(\r\n match.country || match.countryCallingCode,\r\n match.phone,\r\n this.metadata\r\n )\r\n\t\t\t\t\t\tif (match.ext) {\r\n\t\t\t\t\t\t\tphoneNumber.ext = match.ext\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tstartsAt: match.startsAt,\r\n\t\t\t\t\t\t\tendsAt: match.endsAt,\r\n\t\t\t\t\t\t\tnumber: phoneNumber\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn match\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.maxTries--\r\n\t\t}\r\n\t}\r\n\r\n /**\r\n * Attempts to extract a match from `substring`\r\n * if the substring itself does not qualify as a match.\r\n */\r\n extractInnerMatch(substring, offset, text) {\r\n for (const innerMatchPattern of INNER_MATCHES) {\r\n let isFirstMatch = true\r\n let candidateMatch\r\n const innerMatchRegExp = new RegExp(innerMatchPattern, 'g')\r\n while (this.maxTries > 0 && (candidateMatch = innerMatchRegExp.exec(substring)) !== null) {\r\n if (isFirstMatch) {\r\n // We should handle any group before this one too.\r\n const candidate = trimAfterFirstMatch(\r\n UNWANTED_END_CHAR_PATTERN,\r\n substring.slice(0, candidateMatch.index)\r\n )\r\n\r\n const match = this.parseAndVerify(candidate, offset, text)\r\n\r\n if (match) {\r\n return match\r\n }\r\n\r\n this.maxTries--\r\n isFirstMatch = false\r\n }\r\n\r\n const candidate = trimAfterFirstMatch(UNWANTED_END_CHAR_PATTERN, candidateMatch[1])\r\n\r\n // Java code does `groupMatcher.start(1)` here,\r\n // but there's no way in javascript to get a `candidate` start index,\r\n // therefore resort to using this kind of an approximation.\r\n // (`groupMatcher` is called `candidateInSubstringMatch` in this javascript port)\r\n // https://stackoverflow.com/questions/15934353/get-index-of-each-capture-in-a-javascript-regex\r\n const candidateIndexGuess = substring.indexOf(candidate, candidateMatch.index)\r\n\r\n const match = this.parseAndVerify(candidate, offset + candidateIndexGuess, text)\r\n if (match) {\r\n return match\r\n }\r\n\r\n this.maxTries--\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Parses a phone number from the `candidate` using `parseNumber` and\r\n * verifies it matches the requested `leniency`. If parsing and verification succeed,\r\n * a corresponding `PhoneNumberMatch` is returned, otherwise this method returns `null`.\r\n *\r\n * @param candidate the candidate match\r\n * @param offset the offset of {@code candidate} within {@link #text}\r\n * @return the parsed and validated phone number match, or null\r\n */\r\n parseAndVerify(candidate, offset, text) {\r\n if (!isValidCandidate(candidate, offset, text, this.options.leniency)) {\r\n return\r\n \t}\r\n\r\n const number = parseNumber(\r\n candidate, {\r\n extended: true,\r\n defaultCountry: this.options.defaultCountry,\r\n defaultCallingCode: this.options.defaultCallingCode\r\n },\r\n this.metadata\r\n )\r\n\r\n if (!number.possible) {\r\n return\r\n }\r\n\r\n if (this.leniency(number, candidate, this.metadata, this.regExpCache)) {\r\n // // We used parseAndKeepRawInput to create this number,\r\n // // but for now we don't return the extra values parsed.\r\n // // TODO: stop clearing all values here and switch all users over\r\n // // to using rawInput() rather than the rawString() of PhoneNumberMatch.\r\n // number.clearCountryCodeSource()\r\n // number.clearRawInput()\r\n // number.clearPreferredDomesticCarrierCode()\r\n\r\n const result = {\r\n startsAt: offset,\r\n endsAt: offset + candidate.length,\r\n phone: number.phone\r\n }\r\n\r\n if (number.country && number.country !== '001') {\r\n result.country = number.country\r\n } else {\r\n result.countryCallingCode = number.countryCallingCode\r\n }\r\n\r\n if (number.ext) {\r\n result.ext = number.ext\r\n }\r\n\r\n return result\r\n }\r\n }\r\n\r\n hasNext()\r\n {\r\n if (this.state === 'NOT_READY')\r\n {\r\n this.lastMatch = this.find() // (this.searchIndex)\r\n\r\n if (this.lastMatch)\r\n {\r\n // this.searchIndex = this.lastMatch.endsAt\r\n this.state = 'READY'\r\n }\r\n else\r\n {\r\n this.state = 'DONE'\r\n }\r\n }\r\n\r\n return this.state === 'READY'\r\n }\r\n\r\n next()\r\n {\r\n // Check the state and find the next match as a side-effect if necessary.\r\n if (!this.hasNext())\r\n {\r\n throw new Error('No next element')\r\n }\r\n\r\n // Don't retain that memory any longer than necessary.\r\n const result = this.lastMatch\r\n this.lastMatch = null\r\n this.state = 'NOT_READY'\r\n return result\r\n }\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumberMatcher.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumberMatcher.test.js new file mode 100644 index 00000000..e198cbf7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumberMatcher.test.js @@ -0,0 +1,74 @@ +import PhoneNumberMatcher from './PhoneNumberMatcher.js'; +import metadata from '../metadata.min.json' assert { type: 'json' }; + +function test(text, defaultCountry, expectedNumbers) { + if (typeof expectedNumbers === 'string') { + expectedNumbers = [{ + nationalNumber: expectedNumbers + }]; + } + + var matcher = new PhoneNumberMatcher(text, { + defaultCountry: defaultCountry, + v2: true + }, metadata); + + while (matcher.hasNext()) { + var number = matcher.next(); + var phoneNumber = expectedNumbers.shift(); + + if (phoneNumber.startsAt !== undefined) { + number.startsAt.should.equal(phoneNumber.startsAt); + } + + if (phoneNumber.endsAt !== undefined) { + number.endsAt.should.equal(phoneNumber.endsAt); + } + + number.number.country.should.equal(phoneNumber.country || defaultCountry); + number.number.nationalNumber.should.equal(phoneNumber.nationalNumber); + } + + expectedNumbers.length.should.equal(0); +} + +describe('PhoneNumberMatcher', function () { + it('should find phone numbers', function () { + test('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', [{ + country: 'RU', + nationalNumber: '8005553535', + startsAt: 14, + endsAt: 32 + }, { + country: 'US', + nationalNumber: '2133734253', + startsAt: 41, + endsAt: 55 + }]); + }); + it('should find phone numbers from Mexico', function () { + // Test parsing fixed-line numbers of Mexico. + test('+52 (449)978-0001', 'MX', '4499780001'); + test('01 (449)978-0001', 'MX', '4499780001'); + test('(449)978-0001', 'MX', '4499780001'); // Test parsing mobile numbers of Mexico. + + test('+52 1 33 1234-5678', 'MX', '3312345678'); + test('044 (33) 1234-5678', 'MX', '3312345678'); + test('045 33 1234-5678', 'MX', '3312345678'); + }); + it('should find phone numbers from Argentina', function () { + // Test parsing mobile numbers of Argentina. + test('+54 9 343 555 1212', 'AR', '93435551212'); + test('0343 15-555-1212', 'AR', '93435551212'); + test('+54 9 3715 65 4320', 'AR', '93715654320'); + test('03715 15 65 4320', 'AR', '93715654320'); // Test parsing fixed-line numbers of Argentina. + + test('+54 11 3797 0000', 'AR', '1137970000'); + test('011 3797 0000', 'AR', '1137970000'); + test('+54 3715 65 4321', 'AR', '3715654321'); + test('03715 65 4321', 'AR', '3715654321'); + test('+54 23 1234 0000', 'AR', '2312340000'); + test('023 1234 0000', 'AR', '2312340000'); + }); +}); +//# sourceMappingURL=PhoneNumberMatcher.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumberMatcher.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumberMatcher.test.js.map new file mode 100644 index 00000000..d4d4b256 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/PhoneNumberMatcher.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"PhoneNumberMatcher.test.js","names":["PhoneNumberMatcher","metadata","type","test","text","defaultCountry","expectedNumbers","nationalNumber","matcher","v2","hasNext","number","next","phoneNumber","shift","startsAt","undefined","should","equal","endsAt","country","length","describe","it"],"sources":["../source/PhoneNumberMatcher.test.js"],"sourcesContent":["import PhoneNumberMatcher from './PhoneNumberMatcher.js'\r\nimport metadata from '../metadata.min.json' assert { type: 'json' }\r\n\r\nfunction test(text, defaultCountry, expectedNumbers) {\r\n\tif (typeof expectedNumbers === 'string') {\r\n\t\texpectedNumbers = [{\r\n\t\t\tnationalNumber: expectedNumbers\r\n\t\t}]\r\n\t}\r\n\tconst matcher = new PhoneNumberMatcher(text, { defaultCountry, v2: true }, metadata)\r\n\twhile (matcher.hasNext()) {\r\n\t\tconst number = matcher.next()\r\n\t\tconst phoneNumber = expectedNumbers.shift()\r\n\t\tif (phoneNumber.startsAt !== undefined) {\r\n\t\t\tnumber.startsAt.should.equal(phoneNumber.startsAt)\r\n\t\t}\r\n\t\tif (phoneNumber.endsAt !== undefined) {\r\n\t\t\tnumber.endsAt.should.equal(phoneNumber.endsAt)\r\n\t\t}\r\n\t\tnumber.number.country.should.equal(phoneNumber.country || defaultCountry)\r\n\t\tnumber.number.nationalNumber.should.equal(phoneNumber.nationalNumber)\r\n\t}\r\n\texpectedNumbers.length.should.equal(0)\r\n}\r\n\r\ndescribe('PhoneNumberMatcher', () => {\r\n\tit('should find phone numbers', () => {\r\n\t\ttest(\r\n\t\t\t'The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.',\r\n\t\t\t'US',\r\n\t\t\t[{\r\n\t\t\t\tcountry: 'RU',\r\n\t\t\t\tnationalNumber: '8005553535',\r\n\t\t\t\tstartsAt: 14,\r\n\t\t\t\tendsAt: 32\r\n\t\t\t}, {\r\n\t\t\t\tcountry: 'US',\r\n\t\t\t\tnationalNumber: '2133734253',\r\n\t\t\t\tstartsAt: 41,\r\n\t\t\t\tendsAt: 55\r\n\t\t\t}]\r\n\t\t)\r\n\t})\r\n\r\n\tit('should find phone numbers from Mexico', () => {\r\n\t\t// Test parsing fixed-line numbers of Mexico.\r\n\t\ttest('+52 (449)978-0001', 'MX', '4499780001')\r\n\t\ttest('01 (449)978-0001', 'MX', '4499780001')\r\n\t\ttest('(449)978-0001', 'MX', '4499780001')\r\n\t\t// Test parsing mobile numbers of Mexico.\r\n\t\ttest('+52 1 33 1234-5678', 'MX', '3312345678')\r\n\t\ttest('044 (33) 1234-5678', 'MX', '3312345678')\r\n\t\ttest('045 33 1234-5678', 'MX', '3312345678')\r\n\t})\r\n\r\n\tit('should find phone numbers from Argentina', () => {\r\n\t\t// Test parsing mobile numbers of Argentina.\r\n\t\ttest('+54 9 343 555 1212', 'AR', '93435551212')\r\n\t\ttest('0343 15-555-1212', 'AR', '93435551212')\r\n\r\n\t\ttest('+54 9 3715 65 4320', 'AR', '93715654320')\r\n\t\ttest('03715 15 65 4320', 'AR', '93715654320')\r\n\r\n\t\t// Test parsing fixed-line numbers of Argentina.\r\n\t\ttest('+54 11 3797 0000', 'AR', '1137970000')\r\n\t\ttest('011 3797 0000', 'AR', '1137970000')\r\n\r\n\t\ttest('+54 3715 65 4321', 'AR', '3715654321')\r\n\t\ttest('03715 65 4321', 'AR', '3715654321')\r\n\r\n\t\ttest('+54 23 1234 0000', 'AR', '2312340000')\r\n\t\ttest('023 1234 0000', 'AR', '2312340000')\r\n\t})\r\n})"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/constants.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/constants.js new file mode 100644 index 00000000..1d50b699 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/constants.js @@ -0,0 +1,25 @@ +// The minimum length of the national significant number. +export var MIN_LENGTH_FOR_NSN = 2; // The ITU says the maximum length should be 15, +// but one can find longer numbers in Germany. + +export var MAX_LENGTH_FOR_NSN = 17; // The maximum length of the country calling code. + +export var MAX_LENGTH_COUNTRY_CODE = 3; // Digits accepted in phone numbers +// (ascii, fullwidth, arabic-indic, and eastern arabic digits). + +export var VALID_DIGITS = "0-9\uFF10-\uFF19\u0660-\u0669\u06F0-\u06F9"; // `DASHES` will be right after the opening square bracket of the "character class" + +var DASHES = "-\u2010-\u2015\u2212\u30FC\uFF0D"; +var SLASHES = "\uFF0F/"; +var DOTS = "\uFF0E."; +export var WHITESPACE = " \xA0\xAD\u200B\u2060\u3000"; +var BRACKETS = "()\uFF08\uFF09\uFF3B\uFF3D\\[\\]"; // export const OPENING_BRACKETS = '(\uFF08\uFF3B\\\[' + +var TILDES = "~\u2053\u223C\uFF5E"; // Regular expression of acceptable punctuation found in phone numbers. This +// excludes punctuation found as a leading character only. This consists of dash +// characters, white space characters, full stops, slashes, square brackets, +// parentheses and tildes. Full-width variants are also present. + +export var VALID_PUNCTUATION = "".concat(DASHES).concat(SLASHES).concat(DOTS).concat(WHITESPACE).concat(BRACKETS).concat(TILDES); +export var PLUS_CHARS = "+\uFF0B"; // const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+') +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/constants.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/constants.js.map new file mode 100644 index 00000000..606e5136 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","names":["MIN_LENGTH_FOR_NSN","MAX_LENGTH_FOR_NSN","MAX_LENGTH_COUNTRY_CODE","VALID_DIGITS","DASHES","SLASHES","DOTS","WHITESPACE","BRACKETS","TILDES","VALID_PUNCTUATION","PLUS_CHARS"],"sources":["../source/constants.js"],"sourcesContent":["// The minimum length of the national significant number.\r\nexport const MIN_LENGTH_FOR_NSN = 2\r\n\r\n// The ITU says the maximum length should be 15,\r\n// but one can find longer numbers in Germany.\r\nexport const MAX_LENGTH_FOR_NSN = 17\r\n\r\n// The maximum length of the country calling code.\r\nexport const MAX_LENGTH_COUNTRY_CODE = 3\r\n\r\n// Digits accepted in phone numbers\r\n// (ascii, fullwidth, arabic-indic, and eastern arabic digits).\r\nexport const VALID_DIGITS = '0-9\\uFF10-\\uFF19\\u0660-\\u0669\\u06F0-\\u06F9'\r\n\r\n// `DASHES` will be right after the opening square bracket of the \"character class\"\r\nconst DASHES = '-\\u2010-\\u2015\\u2212\\u30FC\\uFF0D'\r\nconst SLASHES = '\\uFF0F/'\r\nconst DOTS = '\\uFF0E.'\r\nexport const WHITESPACE = ' \\u00A0\\u00AD\\u200B\\u2060\\u3000'\r\nconst BRACKETS = '()\\uFF08\\uFF09\\uFF3B\\uFF3D\\\\[\\\\]'\r\n// export const OPENING_BRACKETS = '(\\uFF08\\uFF3B\\\\\\['\r\nconst TILDES = '~\\u2053\\u223C\\uFF5E'\r\n\r\n// Regular expression of acceptable punctuation found in phone numbers. This\r\n// excludes punctuation found as a leading character only. This consists of dash\r\n// characters, white space characters, full stops, slashes, square brackets,\r\n// parentheses and tildes. Full-width variants are also present.\r\nexport const VALID_PUNCTUATION = `${DASHES}${SLASHES}${DOTS}${WHITESPACE}${BRACKETS}${TILDES}`\r\n\r\nexport const PLUS_CHARS = '+\\uFF0B'\r\n// const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+')"],"mappings":"AAAA;AACA,OAAO,IAAMA,kBAAkB,GAAG,CAA3B,C,CAEP;AACA;;AACA,OAAO,IAAMC,kBAAkB,GAAG,EAA3B,C,CAEP;;AACA,OAAO,IAAMC,uBAAuB,GAAG,CAAhC,C,CAEP;AACA;;AACA,OAAO,IAAMC,YAAY,GAAG,4CAArB,C,CAEP;;AACA,IAAMC,MAAM,GAAG,kCAAf;AACA,IAAMC,OAAO,GAAG,SAAhB;AACA,IAAMC,IAAI,GAAG,SAAb;AACA,OAAO,IAAMC,UAAU,GAAG,6BAAnB;AACP,IAAMC,QAAQ,GAAG,kCAAjB,C,CACA;;AACA,IAAMC,MAAM,GAAG,qBAAf,C,CAEA;AACA;AACA;AACA;;AACA,OAAO,IAAMC,iBAAiB,aAAMN,MAAN,SAAeC,OAAf,SAAyBC,IAAzB,SAAgCC,UAAhC,SAA6CC,QAA7C,SAAwDC,MAAxD,CAAvB;AAEP,OAAO,IAAME,UAAU,GAAG,SAAnB,C,CACP"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers.js new file mode 100644 index 00000000..0060fbe6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers.js @@ -0,0 +1,11 @@ +import _findNumbers from './findNumbers_.js'; +import { normalizeArguments } from './parsePhoneNumber.js'; +export default function findNumbers() { + var _normalizeArguments = normalizeArguments(arguments), + text = _normalizeArguments.text, + options = _normalizeArguments.options, + metadata = _normalizeArguments.metadata; + + return _findNumbers(text, options, metadata); +} +//# sourceMappingURL=findNumbers.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers.js.map new file mode 100644 index 00000000..43a7699d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers.js.map @@ -0,0 +1 @@ +{"version":3,"file":"findNumbers.js","names":["_findNumbers","normalizeArguments","findNumbers","arguments","text","options","metadata"],"sources":["../source/findNumbers.js"],"sourcesContent":["import _findNumbers from './findNumbers_.js'\r\nimport { normalizeArguments } from './parsePhoneNumber.js'\r\n\r\nexport default function findNumbers() {\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\treturn _findNumbers(text, options, metadata)\r\n}"],"mappings":"AAAA,OAAOA,YAAP,MAAyB,mBAAzB;AACA,SAASC,kBAAT,QAAmC,uBAAnC;AAEA,eAAe,SAASC,WAAT,GAAuB;EACrC,0BAAoCD,kBAAkB,CAACE,SAAD,CAAtD;EAAA,IAAQC,IAAR,uBAAQA,IAAR;EAAA,IAAcC,OAAd,uBAAcA,OAAd;EAAA,IAAuBC,QAAvB,uBAAuBA,QAAvB;;EACA,OAAON,YAAY,CAACI,IAAD,EAAOC,OAAP,EAAgBC,QAAhB,CAAnB;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers.test.js new file mode 100644 index 00000000..7f7d67d3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers.test.js @@ -0,0 +1,188 @@ +import findNumbers from './findNumbers.js'; +import metadata from '../metadata.max.json' assert { type: 'json' }; +describe('findNumbers', function () { + it('should find numbers', function () { + findNumbers('2133734253', 'US', metadata).should.deep.equal([{ + phone: '2133734253', + country: 'US', + startsAt: 0, + endsAt: 10 + }]); + findNumbers('(213) 373-4253', 'US', metadata).should.deep.equal([{ + phone: '2133734253', + country: 'US', + startsAt: 0, + endsAt: 14 + }]); + findNumbers('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', metadata).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + startsAt: 14, + endsAt: 32 + }, { + phone: '2133734253', + country: 'US', + startsAt: 41, + endsAt: 55 + }]); // Opening parenthesis issue. + // https://github.com/catamphetamine/libphonenumber-js/issues/252 + + findNumbers('The number is +7 (800) 555-35-35 and not (213) 373-4253 (that\'s not even in the same country!) as written in the document.', 'US', metadata).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + startsAt: 14, + endsAt: 32 + }, { + phone: '2133734253', + country: 'US', + startsAt: 41, + endsAt: 55 + }]); // No default country. + + findNumbers('The number is +7 (800) 555-35-35 as written in the document.', metadata).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + startsAt: 14, + endsAt: 32 + }]); // Passing `options` and default country. + + findNumbers('The number is +7 (800) 555-35-35 as written in the document.', 'US', { + leniency: 'VALID' + }, metadata).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + startsAt: 14, + endsAt: 32 + }]); // Passing `options`. + + findNumbers('The number is +7 (800) 555-35-35 as written in the document.', { + leniency: 'VALID' + }, metadata).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + startsAt: 14, + endsAt: 32 + }]); // Not a phone number and a phone number. + + findNumbers('Digits 12 are not a number, but +7 (800) 555-35-35 is.', { + leniency: 'VALID' + }, metadata).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + startsAt: 32, + endsAt: 50 + }]); // Phone number extension. + + findNumbers('Date 02/17/2018 is not a number, but +7 (800) 555-35-35 ext. 123 is.', { + leniency: 'VALID' + }, metadata).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + ext: '123', + startsAt: 37, + endsAt: 64 + }]); + }); + it('should find numbers (v2)', function () { + var phoneNumbers = findNumbers('The number is +7 (800) 555-35-35 ext. 1234 and not (213) 373-4253 as written in the document.', 'US', { + v2: true + }, metadata); + phoneNumbers.length.should.equal(2); + phoneNumbers[0].startsAt.should.equal(14); + phoneNumbers[0].endsAt.should.equal(42); + phoneNumbers[0].number.number.should.equal('+78005553535'); + phoneNumbers[0].number.nationalNumber.should.equal('8005553535'); + phoneNumbers[0].number.country.should.equal('RU'); + phoneNumbers[0].number.countryCallingCode.should.equal('7'); + phoneNumbers[0].number.ext.should.equal('1234'); + phoneNumbers[1].startsAt.should.equal(51); + phoneNumbers[1].endsAt.should.equal(65); + phoneNumbers[1].number.number.should.equal('+12133734253'); + phoneNumbers[1].number.nationalNumber.should.equal('2133734253'); + phoneNumbers[1].number.country.should.equal('US'); + phoneNumbers[1].number.countryCallingCode.should.equal('1'); + }); + it('shouldn\'t find non-valid numbers', function () { + // Not a valid phone number for US. + findNumbers('1111111111', 'US', metadata).should.deep.equal([]); + }); + it('should find non-European digits', function () { + // E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`. + findNumbers('العَرَبِيَّة‎ +٤٤٣٣٣٣٣٣٣٣٣٣عَرَبِيّ‎', metadata).should.deep.equal([{ + country: 'GB', + phone: '3333333333', + startsAt: 14, + endsAt: 27 + }]); + }); + it('should work in edge cases', function () { + var thrower; // No input + + findNumbers('', metadata).should.deep.equal([]); // // No country metadata for this `require` country code + // thrower = () => findNumbers('123', 'ZZ', metadata) + // thrower.should.throw('Unknown country') + // Numerical `value` + + thrower = function thrower() { + return findNumbers(2141111111, 'US'); + }; + + thrower.should["throw"]('A text for parsing must be a string.'); // // No metadata + // thrower = () => findNumbers('') + // thrower.should.throw('`metadata` argument not passed') + // No metadata, no default country, no phone numbers. + + findNumbers('').should.deep.equal([]); + }); + it('should find international numbers when passed a non-existent default country', function () { + var numbers = findNumbers('Phone: +7 (800) 555 35 35. National: 8 (800) 555-55-55', { + defaultCountry: 'XX', + v2: true + }, metadata); + numbers.length.should.equal(1); + numbers[0].number.nationalNumber.should.equal('8005553535'); + }); + it('shouldn\'t find phone numbers which are not phone numbers', function () { + // A timestamp. + findNumbers('2012-01-02 08:00', 'US', metadata).should.deep.equal([]); // A valid number (not a complete timestamp). + + findNumbers('2012-01-02 08', 'US', metadata).should.deep.equal([{ + country: 'US', + phone: '2012010208', + startsAt: 0, + endsAt: 13 + }]); // Invalid parens. + + findNumbers('213(3734253', 'US', metadata).should.deep.equal([]); // Letters after phone number. + + findNumbers('2133734253a', 'US', metadata).should.deep.equal([]); // Valid phone (same as the one found in the UUID below). + + findNumbers('The phone number is 231354125.', 'FR', metadata).should.deep.equal([{ + country: 'FR', + phone: '231354125', + startsAt: 20, + endsAt: 29 + }]); // Not a phone number (part of a UUID). + // Should parse in `{ extended: true }` mode. + + var possibleNumbers = findNumbers('The UUID is CA801c26f98cd16e231354125ad046e40b.', 'FR', { + extended: true + }, metadata); + possibleNumbers.length.should.equal(1); + possibleNumbers[0].country.should.equal('FR'); + possibleNumbers[0].phone.should.equal('231354125'); // Not a phone number (part of a UUID). + // Shouldn't parse by default. + + findNumbers('The UUID is CA801c26f98cd16e231354125ad046e40b.', 'FR', metadata).should.deep.equal([]); + }); // https://gitlab.com/catamphetamine/libphonenumber-js/-/merge_requests/4 + + it('should return correct `startsAt` and `endsAt` when matching "inner" candidates in a could-be-a-candidate substring', function () { + findNumbers('39945926 77200596 16533084', 'ID', metadata).should.deep.equal([{ + country: 'ID', + phone: '77200596', + startsAt: 9, + endsAt: 17 + }]); + }); +}); +//# sourceMappingURL=findNumbers.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers.test.js.map new file mode 100644 index 00000000..4a89d3b5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"findNumbers.test.js","names":["findNumbers","metadata","type","describe","it","should","deep","equal","phone","country","startsAt","endsAt","leniency","ext","phoneNumbers","v2","length","number","nationalNumber","countryCallingCode","thrower","numbers","defaultCountry","possibleNumbers","extended"],"sources":["../source/findNumbers.test.js"],"sourcesContent":["import findNumbers from './findNumbers.js'\r\nimport metadata from '../metadata.max.json' assert { type: 'json' }\r\n\r\ndescribe('findNumbers', () => {\r\n\tit('should find numbers', () => {\r\n\t\tfindNumbers('2133734253', 'US', metadata).should.deep.equal([{\r\n\t\t\tphone : '2133734253',\r\n\t\t\tcountry : 'US',\r\n\t\t\tstartsAt : 0,\r\n\t\t\tendsAt : 10\r\n\t\t}])\r\n\r\n\t\tfindNumbers('(213) 373-4253', 'US', metadata).should.deep.equal([{\r\n\t\t\tphone : '2133734253',\r\n\t\t\tcountry : 'US',\r\n\t\t\tstartsAt : 0,\r\n\t\t\tendsAt : 14\r\n\t\t}])\r\n\r\n\t\tfindNumbers('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t}, {\r\n\t\t\tphone : '2133734253',\r\n\t\t\tcountry : 'US',\r\n\t\t\tstartsAt : 41,\r\n\t\t\tendsAt : 55\r\n\t\t}])\r\n\r\n\t\t// Opening parenthesis issue.\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/252\r\n\t\tfindNumbers('The number is +7 (800) 555-35-35 and not (213) 373-4253 (that\\'s not even in the same country!) as written in the document.', 'US', metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t}, {\r\n\t\t\tphone : '2133734253',\r\n\t\t\tcountry : 'US',\r\n\t\t\tstartsAt : 41,\r\n\t\t\tendsAt : 55\r\n\t\t}])\r\n\r\n\t\t// No default country.\r\n\t\tfindNumbers('The number is +7 (800) 555-35-35 as written in the document.', metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t}])\r\n\r\n\t\t// Passing `options` and default country.\r\n\t\tfindNumbers('The number is +7 (800) 555-35-35 as written in the document.', 'US', { leniency: 'VALID' }, metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t}])\r\n\r\n\t\t// Passing `options`.\r\n\t\tfindNumbers('The number is +7 (800) 555-35-35 as written in the document.', { leniency: 'VALID' }, metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t}])\r\n\r\n\t\t// Not a phone number and a phone number.\r\n\t\tfindNumbers('Digits 12 are not a number, but +7 (800) 555-35-35 is.', { leniency: 'VALID' }, metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\tstartsAt : 32,\r\n\t\t\tendsAt : 50\r\n\t\t}])\r\n\r\n\t\t// Phone number extension.\r\n\t\tfindNumbers('Date 02/17/2018 is not a number, but +7 (800) 555-35-35 ext. 123 is.', { leniency: 'VALID' }, metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\text : '123',\r\n\t\t\tstartsAt : 37,\r\n\t\t\tendsAt : 64\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should find numbers (v2)', () => {\r\n\t\tconst phoneNumbers = findNumbers('The number is +7 (800) 555-35-35 ext. 1234 and not (213) 373-4253 as written in the document.', 'US', { v2: true }, metadata)\r\n\r\n\t\tphoneNumbers.length.should.equal(2)\r\n\r\n\t\tphoneNumbers[0].startsAt.should.equal(14)\r\n\t\tphoneNumbers[0].endsAt.should.equal(42)\r\n\r\n\t\tphoneNumbers[0].number.number.should.equal('+78005553535')\r\n\t\tphoneNumbers[0].number.nationalNumber.should.equal('8005553535')\r\n\t\tphoneNumbers[0].number.country.should.equal('RU')\r\n\t\tphoneNumbers[0].number.countryCallingCode.should.equal('7')\r\n\t\tphoneNumbers[0].number.ext.should.equal('1234')\r\n\r\n\t\tphoneNumbers[1].startsAt.should.equal(51)\r\n\t\tphoneNumbers[1].endsAt.should.equal(65)\r\n\r\n\t\tphoneNumbers[1].number.number.should.equal('+12133734253')\r\n\t\tphoneNumbers[1].number.nationalNumber.should.equal('2133734253')\r\n\t\tphoneNumbers[1].number.country.should.equal('US')\r\n\t\tphoneNumbers[1].number.countryCallingCode.should.equal('1')\r\n\t})\r\n\r\n\tit('shouldn\\'t find non-valid numbers', () => {\r\n\t\t// Not a valid phone number for US.\r\n\t\tfindNumbers('1111111111', 'US', metadata).should.deep.equal([])\r\n\t})\r\n\r\n\tit('should find non-European digits', () => {\r\n\t\t// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n\t\tfindNumbers('العَرَبِيَّة‎ +٤٤٣٣٣٣٣٣٣٣٣٣عَرَبِيّ‎', metadata).should.deep.equal([{\r\n\t\t\tcountry : 'GB',\r\n\t\t\tphone : '3333333333',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 27\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should work in edge cases', () => {\r\n\t\tlet thrower\r\n\r\n\t\t// No input\r\n\t\tfindNumbers('', metadata).should.deep.equal([])\r\n\r\n\t\t// // No country metadata for this `require` country code\r\n\t\t// thrower = () => findNumbers('123', 'ZZ', metadata)\r\n\t\t// thrower.should.throw('Unknown country')\r\n\r\n\t\t// Numerical `value`\r\n\t\tthrower = () => findNumbers(2141111111, 'US')\r\n\t\tthrower.should.throw('A text for parsing must be a string.')\r\n\r\n\t\t// // No metadata\r\n\t\t// thrower = () => findNumbers('')\r\n\t\t// thrower.should.throw('`metadata` argument not passed')\r\n\r\n\t\t// No metadata, no default country, no phone numbers.\r\n\t\tfindNumbers('').should.deep.equal([])\r\n\t})\r\n\r\n\tit('should find international numbers when passed a non-existent default country', () => {\r\n\t\tconst numbers = findNumbers('Phone: +7 (800) 555 35 35. National: 8 (800) 555-55-55', { defaultCountry: 'XX', v2: true }, metadata)\r\n\t\tnumbers.length.should.equal(1)\r\n\t\tnumbers[0].number.nationalNumber.should.equal('8005553535')\r\n\t})\r\n\r\n\tit('shouldn\\'t find phone numbers which are not phone numbers', () => {\r\n\t\t// A timestamp.\r\n\t\tfindNumbers('2012-01-02 08:00', 'US', metadata).should.deep.equal([])\r\n\r\n\t\t// A valid number (not a complete timestamp).\r\n\t\tfindNumbers('2012-01-02 08', 'US', metadata).should.deep.equal([{\r\n\t\t\tcountry : 'US',\r\n\t\t\tphone : '2012010208',\r\n\t\t\tstartsAt : 0,\r\n\t\t\tendsAt : 13\r\n\t\t}])\r\n\r\n\t\t// Invalid parens.\r\n\t\tfindNumbers('213(3734253', 'US', metadata).should.deep.equal([])\r\n\r\n\t\t// Letters after phone number.\r\n\t\tfindNumbers('2133734253a', 'US', metadata).should.deep.equal([])\r\n\r\n\t\t// Valid phone (same as the one found in the UUID below).\r\n\t\tfindNumbers('The phone number is 231354125.', 'FR', metadata).should.deep.equal([{\r\n\t\t\tcountry : 'FR',\r\n\t\t\tphone : '231354125',\r\n\t\t\tstartsAt : 20,\r\n\t\t\tendsAt : 29\r\n\t\t}])\r\n\r\n\t\t// Not a phone number (part of a UUID).\r\n\t\t// Should parse in `{ extended: true }` mode.\r\n\t\tconst possibleNumbers = findNumbers('The UUID is CA801c26f98cd16e231354125ad046e40b.', 'FR', { extended: true }, metadata)\r\n\t\tpossibleNumbers.length.should.equal(1)\r\n\t\tpossibleNumbers[0].country.should.equal('FR')\r\n\t\tpossibleNumbers[0].phone.should.equal('231354125')\r\n\r\n\t\t// Not a phone number (part of a UUID).\r\n\t\t// Shouldn't parse by default.\r\n\t\tfindNumbers('The UUID is CA801c26f98cd16e231354125ad046e40b.', 'FR', metadata).should.deep.equal([])\r\n\t})\r\n\r\n\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/merge_requests/4\r\n\tit('should return correct `startsAt` and `endsAt` when matching \"inner\" candidates in a could-be-a-candidate substring', () => {\r\n\t\tfindNumbers('39945926 77200596 16533084', 'ID', metadata)\r\n\t\t\t.should\r\n\t\t\t.deep\r\n\t\t\t.equal([{\r\n\t\t\t\tcountry: 'ID',\r\n\t\t\t\tphone: '77200596',\r\n\t\t\t\tstartsAt: 9,\r\n\t\t\t\tendsAt: 17\r\n\t\t\t}])\r\n\t})\r\n})"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/LRUCache.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/LRUCache.js new file mode 100644 index 00000000..61b0e1e5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/LRUCache.js @@ -0,0 +1,127 @@ +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +// https://medium.com/dsinjs/implementing-lru-cache-in-javascript-94ba6755cda9 +var Node = /*#__PURE__*/_createClass(function Node(key, value) { + var next = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + var prev = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; + + _classCallCheck(this, Node); + + this.key = key; + this.value = value; + this.next = next; + this.prev = prev; +}); + +var LRUCache = /*#__PURE__*/function () { + //set default limit of 10 if limit is not passed. + function LRUCache() { + var limit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10; + + _classCallCheck(this, LRUCache); + + this.size = 0; + this.limit = limit; + this.head = null; + this.tail = null; + this.cache = {}; + } // Write Node to head of LinkedList + // update cache with Node key and Node reference + + + _createClass(LRUCache, [{ + key: "put", + value: function put(key, value) { + this.ensureLimit(); + + if (!this.head) { + this.head = this.tail = new Node(key, value); + } else { + var node = new Node(key, value, this.head); + this.head.prev = node; + this.head = node; + } //Update the cache map + + + this.cache[key] = this.head; + this.size++; + } // Read from cache map and make that node as new Head of LinkedList + + }, { + key: "get", + value: function get(key) { + if (this.cache[key]) { + var value = this.cache[key].value; // node removed from it's position and cache + + this.remove(key); // write node again to the head of LinkedList to make it most recently used + + this.put(key, value); + return value; + } + + console.log("Item not available in cache for key ".concat(key)); + } + }, { + key: "ensureLimit", + value: function ensureLimit() { + if (this.size === this.limit) { + this.remove(this.tail.key); + } + } + }, { + key: "remove", + value: function remove(key) { + var node = this.cache[key]; + + if (node.prev !== null) { + node.prev.next = node.next; + } else { + this.head = node.next; + } + + if (node.next !== null) { + node.next.prev = node.prev; + } else { + this.tail = node.prev; + } + + delete this.cache[key]; + this.size--; + } + }, { + key: "clear", + value: function clear() { + this.head = null; + this.tail = null; + this.size = 0; + this.cache = {}; + } // // Invokes the callback function with every node of the chain and the index of the node. + // forEach(fn) { + // let node = this.head; + // let counter = 0; + // while (node) { + // fn(node, counter); + // node = node.next; + // counter++; + // } + // } + // // To iterate over LRU with a 'for...of' loop + // *[Symbol.iterator]() { + // let node = this.head; + // while (node) { + // yield node; + // node = node.next; + // } + // } + + }]); + + return LRUCache; +}(); + +export { LRUCache as default }; +//# sourceMappingURL=LRUCache.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/LRUCache.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/LRUCache.js.map new file mode 100644 index 00000000..c54c1230 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/LRUCache.js.map @@ -0,0 +1 @@ +{"version":3,"file":"LRUCache.js","names":["Node","key","value","next","prev","LRUCache","limit","size","head","tail","cache","ensureLimit","node","remove","put","console","log"],"sources":["../../source/findNumbers/LRUCache.js"],"sourcesContent":["// https://medium.com/dsinjs/implementing-lru-cache-in-javascript-94ba6755cda9\r\n\r\nclass Node {\r\n constructor(key, value, next = null, prev = null) {\r\n this.key = key;\r\n this.value = value;\r\n this.next = next;\r\n this.prev = prev;\r\n }\r\n}\r\n\r\nexport default class LRUCache {\r\n //set default limit of 10 if limit is not passed.\r\n constructor(limit = 10) {\r\n this.size = 0;\r\n this.limit = limit;\r\n this.head = null;\r\n this.tail = null;\r\n this.cache = {};\r\n }\r\n\r\n // Write Node to head of LinkedList\r\n // update cache with Node key and Node reference\r\n put(key, value){\r\n this.ensureLimit();\r\n\r\n if(!this.head){\r\n this.head = this.tail = new Node(key, value);\r\n }else{\r\n const node = new Node(key, value, this.head);\r\n this.head.prev = node;\r\n this.head = node;\r\n }\r\n\r\n //Update the cache map\r\n this.cache[key] = this.head;\r\n this.size++;\r\n }\r\n\r\n // Read from cache map and make that node as new Head of LinkedList\r\n get(key){\r\n if(this.cache[key]){\r\n const value = this.cache[key].value;\r\n\r\n // node removed from it's position and cache\r\n this.remove(key)\r\n // write node again to the head of LinkedList to make it most recently used\r\n this.put(key, value);\r\n\r\n return value;\r\n }\r\n\r\n console.log(`Item not available in cache for key ${key}`);\r\n }\r\n\r\n ensureLimit(){\r\n if(this.size === this.limit){\r\n this.remove(this.tail.key)\r\n }\r\n }\r\n\r\n remove(key){\r\n const node = this.cache[key];\r\n\r\n if(node.prev !== null){\r\n node.prev.next = node.next;\r\n }else{\r\n this.head = node.next;\r\n }\r\n\r\n if(node.next !== null){\r\n node.next.prev = node.prev;\r\n }else{\r\n this.tail = node.prev\r\n }\r\n\r\n delete this.cache[key];\r\n this.size--;\r\n }\r\n\r\n clear() {\r\n this.head = null;\r\n this.tail = null;\r\n this.size = 0;\r\n this.cache = {};\r\n }\r\n\r\n // // Invokes the callback function with every node of the chain and the index of the node.\r\n // forEach(fn) {\r\n // let node = this.head;\r\n // let counter = 0;\r\n // while (node) {\r\n // fn(node, counter);\r\n // node = node.next;\r\n // counter++;\r\n // }\r\n // }\r\n\r\n // // To iterate over LRU with a 'for...of' loop\r\n // *[Symbol.iterator]() {\r\n // let node = this.head;\r\n // while (node) {\r\n // yield node;\r\n // node = node.next;\r\n // }\r\n // }\r\n}"],"mappings":";;;;;;AAAA;IAEMA,I,6BACJ,cAAYC,GAAZ,EAAiBC,KAAjB,EAAkD;EAAA,IAA1BC,IAA0B,uEAAnB,IAAmB;EAAA,IAAbC,IAAa,uEAAN,IAAM;;EAAA;;EAChD,KAAKH,GAAL,GAAWA,GAAX;EACA,KAAKC,KAAL,GAAaA,KAAb;EACA,KAAKC,IAAL,GAAYA,IAAZ;EACA,KAAKC,IAAL,GAAYA,IAAZ;AACD,C;;IAGkBC,Q;EACnB;EACA,oBAAwB;IAAA,IAAZC,KAAY,uEAAJ,EAAI;;IAAA;;IACtB,KAAKC,IAAL,GAAY,CAAZ;IACA,KAAKD,KAAL,GAAaA,KAAb;IACA,KAAKE,IAAL,GAAY,IAAZ;IACA,KAAKC,IAAL,GAAY,IAAZ;IACA,KAAKC,KAAL,GAAa,EAAb;EACD,C,CAED;EACA;;;;;WACA,aAAIT,GAAJ,EAASC,KAAT,EAAe;MACb,KAAKS,WAAL;;MAEA,IAAG,CAAC,KAAKH,IAAT,EAAc;QACZ,KAAKA,IAAL,GAAY,KAAKC,IAAL,GAAY,IAAIT,IAAJ,CAASC,GAAT,EAAcC,KAAd,CAAxB;MACD,CAFD,MAEK;QACH,IAAMU,IAAI,GAAG,IAAIZ,IAAJ,CAASC,GAAT,EAAcC,KAAd,EAAqB,KAAKM,IAA1B,CAAb;QACA,KAAKA,IAAL,CAAUJ,IAAV,GAAiBQ,IAAjB;QACA,KAAKJ,IAAL,GAAYI,IAAZ;MACD,CATY,CAWb;;;MACA,KAAKF,KAAL,CAAWT,GAAX,IAAkB,KAAKO,IAAvB;MACA,KAAKD,IAAL;IACD,C,CAED;;;;WACA,aAAIN,GAAJ,EAAQ;MACN,IAAG,KAAKS,KAAL,CAAWT,GAAX,CAAH,EAAmB;QACjB,IAAMC,KAAK,GAAG,KAAKQ,KAAL,CAAWT,GAAX,EAAgBC,KAA9B,CADiB,CAGjB;;QACA,KAAKW,MAAL,CAAYZ,GAAZ,EAJiB,CAKjB;;QACA,KAAKa,GAAL,CAASb,GAAT,EAAcC,KAAd;QAEA,OAAOA,KAAP;MACD;;MAEDa,OAAO,CAACC,GAAR,+CAAmDf,GAAnD;IACD;;;WAED,uBAAa;MACX,IAAG,KAAKM,IAAL,KAAc,KAAKD,KAAtB,EAA4B;QAC1B,KAAKO,MAAL,CAAY,KAAKJ,IAAL,CAAUR,GAAtB;MACD;IACF;;;WAED,gBAAOA,GAAP,EAAW;MACT,IAAMW,IAAI,GAAG,KAAKF,KAAL,CAAWT,GAAX,CAAb;;MAEA,IAAGW,IAAI,CAACR,IAAL,KAAc,IAAjB,EAAsB;QACpBQ,IAAI,CAACR,IAAL,CAAUD,IAAV,GAAiBS,IAAI,CAACT,IAAtB;MACD,CAFD,MAEK;QACH,KAAKK,IAAL,GAAYI,IAAI,CAACT,IAAjB;MACD;;MAED,IAAGS,IAAI,CAACT,IAAL,KAAc,IAAjB,EAAsB;QACpBS,IAAI,CAACT,IAAL,CAAUC,IAAV,GAAiBQ,IAAI,CAACR,IAAtB;MACD,CAFD,MAEK;QACH,KAAKK,IAAL,GAAYG,IAAI,CAACR,IAAjB;MACD;;MAED,OAAO,KAAKM,KAAL,CAAWT,GAAX,CAAP;MACA,KAAKM,IAAL;IACD;;;WAED,iBAAQ;MACN,KAAKC,IAAL,GAAY,IAAZ;MACA,KAAKC,IAAL,GAAY,IAAZ;MACA,KAAKF,IAAL,GAAY,CAAZ;MACA,KAAKG,KAAL,GAAa,EAAb;IACD,C,CAED;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;;;;;;SA9FmBL,Q"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/Leniency.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/Leniency.js new file mode 100644 index 00000000..b30ee73b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/Leniency.js @@ -0,0 +1,322 @@ +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +import isValidNumber from '../validate_.js'; +import parseDigits from '../helpers/parseDigits.js'; +import { startsWith, endsWith } from './util.js'; +/** + * Leniency when finding potential phone numbers in text segments + * The levels here are ordered in increasing strictness. + */ + +export default { + /** + * Phone numbers accepted are "possible", but not necessarily "valid". + */ + POSSIBLE: function POSSIBLE(number, candidate, metadata) { + return true; + }, + + /** + * Phone numbers accepted are "possible" and "valid". + * Numbers written in national format must have their national-prefix + * present if it is usually written for a number of this type. + */ + VALID: function VALID(number, candidate, metadata) { + if (!isValidNumber(number, undefined, metadata) || !containsOnlyValidXChars(number, candidate.toString(), metadata)) { + return false; + } // Skipped for simplicity. + // return isNationalPrefixPresentIfRequired(number, metadata) + + + return true; + }, + + /** + * Phone numbers accepted are "valid" and + * are grouped in a possible way for this locale. For example, a US number written as + * "65 02 53 00 00" and "650253 0000" are not accepted at this leniency level, whereas + * "650 253 0000", "650 2530000" or "6502530000" are. + * Numbers with more than one '/' symbol in the national significant number + * are also dropped at this level. + * + * Warning: This level might result in lower coverage especially for regions outside of + * country code "+1". If you are not sure about which level to use, + * email the discussion group libphonenumber-discuss@googlegroups.com. + */ + STRICT_GROUPING: function STRICT_GROUPING(number, candidate, metadata, regExpCache) { + var candidateString = candidate.toString(); + + if (!isValidNumber(number, undefined, metadata) || !containsOnlyValidXChars(number, candidateString, metadata) || containsMoreThanOneSlashInNationalNumber(number, candidateString) || !isNationalPrefixPresentIfRequired(number, metadata)) { + return false; + } + + return checkNumberGroupingIsValid(number, candidate, metadata, allNumberGroupsRemainGrouped, regExpCache); + }, + + /** + * Phone numbers accepted are {@linkplain PhoneNumberUtil#isValidNumber(PhoneNumber) valid} and + * are grouped in the same way that we would have formatted it, or as a single block. For + * example, a US number written as "650 2530000" is not accepted at this leniency level, whereas + * "650 253 0000" or "6502530000" are. + * Numbers with more than one '/' symbol are also dropped at this level. + *

+ * Warning: This level might result in lower coverage especially for regions outside of country + * code "+1". If you are not sure about which level to use, email the discussion group + * libphonenumber-discuss@googlegroups.com. + */ + EXACT_GROUPING: function EXACT_GROUPING(number, candidate, metadata, regExpCache) { + var candidateString = candidate.toString(); + + if (!isValidNumber(number, undefined, metadata) || !containsOnlyValidXChars(number, candidateString, metadata) || containsMoreThanOneSlashInNationalNumber(number, candidateString) || !isNationalPrefixPresentIfRequired(number, metadata)) { + return false; + } + + return checkNumberGroupingIsValid(number, candidate, metadata, allNumberGroupsAreExactlyPresent, regExpCache); + } +}; + +function containsOnlyValidXChars(number, candidate, metadata) { + // The characters 'x' and 'X' can be (1) a carrier code, in which case they always precede the + // national significant number or (2) an extension sign, in which case they always precede the + // extension number. We assume a carrier code is more than 1 digit, so the first case has to + // have more than 1 consecutive 'x' or 'X', whereas the second case can only have exactly 1 'x' + // or 'X'. We ignore the character if it appears as the last character of the string. + for (var index = 0; index < candidate.length - 1; index++) { + var charAtIndex = candidate.charAt(index); + + if (charAtIndex === 'x' || charAtIndex === 'X') { + var charAtNextIndex = candidate.charAt(index + 1); + + if (charAtNextIndex === 'x' || charAtNextIndex === 'X') { + // This is the carrier code case, in which the 'X's always precede the national + // significant number. + index++; + + if (util.isNumberMatch(number, candidate.substring(index)) != MatchType.NSN_MATCH) { + return false; + } // This is the extension sign case, in which the 'x' or 'X' should always precede the + // extension number. + + } else if (parseDigits(candidate.substring(index)) !== number.ext) { + return false; + } + } + } + + return true; +} + +function isNationalPrefixPresentIfRequired(number, _metadata) { + // First, check how we deduced the country code. If it was written in international format, then + // the national prefix is not required. + if (number.getCountryCodeSource() != 'FROM_DEFAULT_COUNTRY') { + return true; + } + + var phoneNumberRegion = util.getRegionCodeForCountryCode(number.getCountryCode()); + var metadata = util.getMetadataForRegion(phoneNumberRegion); + + if (metadata == null) { + return true; + } // Check if a national prefix should be present when formatting this number. + + + var nationalNumber = util.getNationalSignificantNumber(number); + var formatRule = util.chooseFormattingPatternForNumber(metadata.numberFormats(), nationalNumber); // To do this, we check that a national prefix formatting rule was present + // and that it wasn't just the first-group symbol ($1) with punctuation. + + if (formatRule && formatRule.getNationalPrefixFormattingRule().length > 0) { + if (formatRule.getNationalPrefixOptionalWhenFormatting()) { + // The national-prefix is optional in these cases, so we don't need to check if it was + // present. + return true; + } + + if (PhoneNumberUtil.formattingRuleHasFirstGroupOnly(formatRule.getNationalPrefixFormattingRule())) { + // National Prefix not needed for this number. + return true; + } // Normalize the remainder. + + + var rawInputCopy = PhoneNumberUtil.normalizeDigitsOnly(number.getRawInput()); // Check if we found a national prefix and/or carrier code at the start of the raw input, and + // return the result. + + return util.maybeStripNationalPrefixAndCarrierCode(rawInputCopy, metadata, null); + } + + return true; +} + +export function containsMoreThanOneSlashInNationalNumber(number, candidate) { + var firstSlashInBodyIndex = candidate.indexOf('/'); + + if (firstSlashInBodyIndex < 0) { + // No slashes, this is okay. + return false; + } // Now look for a second one. + + + var secondSlashInBodyIndex = candidate.indexOf('/', firstSlashInBodyIndex + 1); + + if (secondSlashInBodyIndex < 0) { + // Only one slash, this is okay. + return false; + } // If the first slash is after the country calling code, this is permitted. + + + var candidateHasCountryCode = number.getCountryCodeSource() === CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN || number.getCountryCodeSource() === CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN; + + if (candidateHasCountryCode && PhoneNumberUtil.normalizeDigitsOnly(candidate.substring(0, firstSlashInBodyIndex)) === String(number.getCountryCode())) { + // Any more slashes and this is illegal. + return candidate.slice(secondSlashInBodyIndex + 1).indexOf('/') >= 0; + } + + return true; +} + +function checkNumberGroupingIsValid(number, candidate, metadata, checkGroups, regExpCache) { + var normalizedCandidate = normalizeDigits(candidate, true + /* keep non-digits */ + ); + var formattedNumberGroups = getNationalNumberGroups(metadata, number, null); + + if (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) { + return true; + } // If this didn't pass, see if there are any alternate formats that match, and try them instead. + + + var alternateFormats = MetadataManager.getAlternateFormatsForCountry(number.getCountryCode()); + var nationalSignificantNumber = util.getNationalSignificantNumber(number); + + if (alternateFormats) { + for (var _iterator = _createForOfIteratorHelperLoose(alternateFormats.numberFormats()), _step; !(_step = _iterator()).done;) { + var alternateFormat = _step.value; + + if (alternateFormat.leadingDigitsPatterns().length > 0) { + // There is only one leading digits pattern for alternate formats. + var leadingDigitsRegExp = regExpCache.getPatternForRegExp('^' + alternateFormat.leadingDigitsPatterns()[0]); + + if (!leadingDigitsRegExp.test(nationalSignificantNumber)) { + // Leading digits don't match; try another one. + continue; + } + } + + formattedNumberGroups = getNationalNumberGroups(metadata, number, alternateFormat); + + if (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) { + return true; + } + } + } + + return false; +} +/** + * Helper method to get the national-number part of a number, formatted without any national + * prefix, and return it as a set of digit blocks that would be formatted together following + * standard formatting rules. + */ + + +function getNationalNumberGroups(metadata, number, formattingPattern) { + if (formattingPattern) { + // We format the NSN only, and split that according to the separator. + var nationalSignificantNumber = util.getNationalSignificantNumber(number); + return util.formatNsnUsingPattern(nationalSignificantNumber, formattingPattern, 'RFC3966', metadata).split('-'); + } // This will be in the format +CC-DG1-DG2-DGX;ext=EXT where DG1..DGX represents groups of digits. + + + var rfc3966Format = formatNumber(number, 'RFC3966', metadata); // We remove the extension part from the formatted string before splitting it into different + // groups. + + var endIndex = rfc3966Format.indexOf(';'); + + if (endIndex < 0) { + endIndex = rfc3966Format.length; + } // The country-code will have a '-' following it. + + + var startIndex = rfc3966Format.indexOf('-') + 1; + return rfc3966Format.slice(startIndex, endIndex).split('-'); +} + +function allNumberGroupsAreExactlyPresent(metadata, number, normalizedCandidate, formattedNumberGroups) { + var candidateGroups = normalizedCandidate.split(NON_DIGITS_PATTERN); // Set this to the last group, skipping it if the number has an extension. + + var candidateNumberGroupIndex = number.hasExtension() ? candidateGroups.length - 2 : candidateGroups.length - 1; // First we check if the national significant number is formatted as a block. + // We use contains and not equals, since the national significant number may be present with + // a prefix such as a national number prefix, or the country code itself. + + if (candidateGroups.length == 1 || candidateGroups[candidateNumberGroupIndex].contains(util.getNationalSignificantNumber(number))) { + return true; + } // Starting from the end, go through in reverse, excluding the first group, and check the + // candidate and number groups are the same. + + + var formattedNumberGroupIndex = formattedNumberGroups.length - 1; + + while (formattedNumberGroupIndex > 0 && candidateNumberGroupIndex >= 0) { + if (candidateGroups[candidateNumberGroupIndex] !== formattedNumberGroups[formattedNumberGroupIndex]) { + return false; + } + + formattedNumberGroupIndex--; + candidateNumberGroupIndex--; + } // Now check the first group. There may be a national prefix at the start, so we only check + // that the candidate group ends with the formatted number group. + + + return candidateNumberGroupIndex >= 0 && endsWith(candidateGroups[candidateNumberGroupIndex], formattedNumberGroups[0]); +} + +function allNumberGroupsRemainGrouped(metadata, number, normalizedCandidate, formattedNumberGroups) { + var fromIndex = 0; + + if (number.getCountryCodeSource() !== CountryCodeSource.FROM_DEFAULT_COUNTRY) { + // First skip the country code if the normalized candidate contained it. + var countryCode = String(number.getCountryCode()); + fromIndex = normalizedCandidate.indexOf(countryCode) + countryCode.length(); + } // Check each group of consecutive digits are not broken into separate groupings in the + // {@code normalizedCandidate} string. + + + for (var i = 0; i < formattedNumberGroups.length; i++) { + // Fails if the substring of {@code normalizedCandidate} starting from {@code fromIndex} + // doesn't contain the consecutive digits in formattedNumberGroups[i]. + fromIndex = normalizedCandidate.indexOf(formattedNumberGroups[i], fromIndex); + + if (fromIndex < 0) { + return false; + } // Moves {@code fromIndex} forward. + + + fromIndex += formattedNumberGroups[i].length(); + + if (i == 0 && fromIndex < normalizedCandidate.length()) { + // We are at the position right after the NDC. We get the region used for formatting + // information based on the country code in the phone number, rather than the number itself, + // as we do not need to distinguish between different countries with the same country + // calling code and this is faster. + var region = util.getRegionCodeForCountryCode(number.getCountryCode()); + + if (util.getNddPrefixForRegion(region, true) != null && Character.isDigit(normalizedCandidate.charAt(fromIndex))) { + // This means there is no formatting symbol after the NDC. In this case, we only + // accept the number if there is no formatting symbol at all in the number, except + // for extensions. This is only important for countries with national prefixes. + var nationalSignificantNumber = util.getNationalSignificantNumber(number); + return startsWith(normalizedCandidate.slice(fromIndex - formattedNumberGroups[i].length), nationalSignificantNumber); + } + } + } // The check here makes sure that we haven't mistakenly already used the extension to + // match the last group of the subscriber number. Note the extension cannot have + // formatting in-between digits. + + + return normalizedCandidate.slice(fromIndex).contains(number.getExtension()); +} +//# sourceMappingURL=Leniency.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/Leniency.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/Leniency.js.map new file mode 100644 index 00000000..da54be64 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/Leniency.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Leniency.js","names":["isValidNumber","parseDigits","startsWith","endsWith","POSSIBLE","number","candidate","metadata","VALID","undefined","containsOnlyValidXChars","toString","STRICT_GROUPING","regExpCache","candidateString","containsMoreThanOneSlashInNationalNumber","isNationalPrefixPresentIfRequired","checkNumberGroupingIsValid","allNumberGroupsRemainGrouped","EXACT_GROUPING","allNumberGroupsAreExactlyPresent","index","length","charAtIndex","charAt","charAtNextIndex","util","isNumberMatch","substring","MatchType","NSN_MATCH","ext","_metadata","getCountryCodeSource","phoneNumberRegion","getRegionCodeForCountryCode","getCountryCode","getMetadataForRegion","nationalNumber","getNationalSignificantNumber","formatRule","chooseFormattingPatternForNumber","numberFormats","getNationalPrefixFormattingRule","getNationalPrefixOptionalWhenFormatting","PhoneNumberUtil","formattingRuleHasFirstGroupOnly","rawInputCopy","normalizeDigitsOnly","getRawInput","maybeStripNationalPrefixAndCarrierCode","firstSlashInBodyIndex","indexOf","secondSlashInBodyIndex","candidateHasCountryCode","CountryCodeSource","FROM_NUMBER_WITH_PLUS_SIGN","FROM_NUMBER_WITHOUT_PLUS_SIGN","String","slice","checkGroups","normalizedCandidate","normalizeDigits","formattedNumberGroups","getNationalNumberGroups","alternateFormats","MetadataManager","getAlternateFormatsForCountry","nationalSignificantNumber","alternateFormat","leadingDigitsPatterns","leadingDigitsRegExp","getPatternForRegExp","test","formattingPattern","formatNsnUsingPattern","split","rfc3966Format","formatNumber","endIndex","startIndex","candidateGroups","NON_DIGITS_PATTERN","candidateNumberGroupIndex","hasExtension","contains","formattedNumberGroupIndex","fromIndex","FROM_DEFAULT_COUNTRY","countryCode","i","region","getNddPrefixForRegion","Character","isDigit","getExtension"],"sources":["../../source/findNumbers/Leniency.js"],"sourcesContent":["import isValidNumber from '../validate_.js'\r\nimport parseDigits from '../helpers/parseDigits.js'\r\n\r\nimport {\r\n\tstartsWith,\r\n\tendsWith\r\n} from './util.js'\r\n\r\n/**\r\n * Leniency when finding potential phone numbers in text segments\r\n * The levels here are ordered in increasing strictness.\r\n */\r\nexport default\r\n{\r\n\t/**\r\n\t * Phone numbers accepted are \"possible\", but not necessarily \"valid\".\r\n\t */\r\n\tPOSSIBLE(number, candidate, metadata)\r\n\t{\r\n\t\treturn true\r\n\t},\r\n\r\n\t/**\r\n\t * Phone numbers accepted are \"possible\" and \"valid\".\r\n\t * Numbers written in national format must have their national-prefix\r\n\t * present if it is usually written for a number of this type.\r\n\t */\r\n\tVALID(number, candidate, metadata)\r\n\t{\r\n\t\tif (!isValidNumber(number, undefined, metadata) ||\r\n\t\t\t!containsOnlyValidXChars(number, candidate.toString(), metadata))\r\n\t\t{\r\n\t\t\treturn false\r\n\t\t}\r\n\r\n // Skipped for simplicity.\r\n\t\t// return isNationalPrefixPresentIfRequired(number, metadata)\r\n return true\r\n },\r\n\r\n\t/**\r\n\t * Phone numbers accepted are \"valid\" and\r\n\t * are grouped in a possible way for this locale. For example, a US number written as\r\n\t * \"65 02 53 00 00\" and \"650253 0000\" are not accepted at this leniency level, whereas\r\n\t * \"650 253 0000\", \"650 2530000\" or \"6502530000\" are.\r\n\t * Numbers with more than one '/' symbol in the national significant number\r\n\t * are also dropped at this level.\r\n\t *\r\n\t * Warning: This level might result in lower coverage especially for regions outside of\r\n\t * country code \"+1\". If you are not sure about which level to use,\r\n\t * email the discussion group libphonenumber-discuss@googlegroups.com.\r\n\t */\r\n\tSTRICT_GROUPING(number, candidate, metadata, regExpCache)\r\n\t{\r\n\t\tconst candidateString = candidate.toString()\r\n\r\n\t\tif (!isValidNumber(number, undefined, metadata)\r\n\t\t\t|| !containsOnlyValidXChars(number, candidateString, metadata)\r\n\t\t\t|| containsMoreThanOneSlashInNationalNumber(number, candidateString)\r\n\t\t\t|| !isNationalPrefixPresentIfRequired(number, metadata))\r\n\t\t{\r\n\t\t\treturn false\r\n\t\t}\r\n\r\n\t\treturn checkNumberGroupingIsValid\r\n\t\t(\r\n\t\t\tnumber,\r\n\t\t\tcandidate,\r\n\t\t\tmetadata,\r\n\t\t\tallNumberGroupsRemainGrouped,\r\n\t\t\tregExpCache\r\n\t\t)\r\n },\r\n\r\n\t/**\r\n\t * Phone numbers accepted are {@linkplain PhoneNumberUtil#isValidNumber(PhoneNumber) valid} and\r\n\t * are grouped in the same way that we would have formatted it, or as a single block. For\r\n\t * example, a US number written as \"650 2530000\" is not accepted at this leniency level, whereas\r\n\t * \"650 253 0000\" or \"6502530000\" are.\r\n\t * Numbers with more than one '/' symbol are also dropped at this level.\r\n\t *

\r\n\t * Warning: This level might result in lower coverage especially for regions outside of country\r\n\t * code \"+1\". If you are not sure about which level to use, email the discussion group\r\n\t * libphonenumber-discuss@googlegroups.com.\r\n\t */\r\n\tEXACT_GROUPING(number, candidate, metadata, regExpCache)\r\n\t{\r\n\t\tconst candidateString = candidate.toString()\r\n\r\n\t\tif (!isValidNumber(number, undefined, metadata)\r\n\t\t\t|| !containsOnlyValidXChars(number, candidateString, metadata)\r\n\t\t\t|| containsMoreThanOneSlashInNationalNumber(number, candidateString)\r\n\t\t\t|| !isNationalPrefixPresentIfRequired(number, metadata))\r\n\t\t{\r\n\t\t\treturn false\r\n\t\t}\r\n\r\n\t\treturn checkNumberGroupingIsValid\r\n\t\t(\r\n\t\t\tnumber,\r\n\t\t\tcandidate,\r\n\t\t\tmetadata,\r\n\t\t\tallNumberGroupsAreExactlyPresent,\r\n\t\t\tregExpCache\r\n\t\t)\r\n\t}\r\n}\r\n\r\nfunction containsOnlyValidXChars(number, candidate, metadata)\r\n{\r\n // The characters 'x' and 'X' can be (1) a carrier code, in which case they always precede the\r\n // national significant number or (2) an extension sign, in which case they always precede the\r\n // extension number. We assume a carrier code is more than 1 digit, so the first case has to\r\n // have more than 1 consecutive 'x' or 'X', whereas the second case can only have exactly 1 'x'\r\n // or 'X'. We ignore the character if it appears as the last character of the string.\r\n for (let index = 0; index < candidate.length - 1; index++)\r\n {\r\n const charAtIndex = candidate.charAt(index)\r\n\r\n if (charAtIndex === 'x' || charAtIndex === 'X')\r\n {\r\n const charAtNextIndex = candidate.charAt(index + 1)\r\n\r\n if (charAtNextIndex === 'x' || charAtNextIndex === 'X')\r\n {\r\n // This is the carrier code case, in which the 'X's always precede the national\r\n // significant number.\r\n index++\r\n if (util.isNumberMatch(number, candidate.substring(index)) != MatchType.NSN_MATCH)\r\n {\r\n return false\r\n }\r\n\t // This is the extension sign case, in which the 'x' or 'X' should always precede the\r\n\t // extension number.\r\n }\r\n else if (parseDigits(candidate.substring(index)) !== number.ext)\r\n {\r\n return false\r\n }\r\n }\r\n }\r\n\r\n return true\r\n}\r\n\r\nfunction isNationalPrefixPresentIfRequired(number, _metadata)\r\n{\r\n // First, check how we deduced the country code. If it was written in international format, then\r\n // the national prefix is not required.\r\n if (number.getCountryCodeSource() != 'FROM_DEFAULT_COUNTRY')\r\n {\r\n return true\r\n }\r\n\r\n const phoneNumberRegion = util.getRegionCodeForCountryCode(number.getCountryCode())\r\n\r\n const metadata = util.getMetadataForRegion(phoneNumberRegion)\r\n if (metadata == null)\r\n {\r\n return true\r\n }\r\n\r\n // Check if a national prefix should be present when formatting this number.\r\n const nationalNumber = util.getNationalSignificantNumber(number)\r\n const formatRule = util.chooseFormattingPatternForNumber(metadata.numberFormats(), nationalNumber)\r\n\r\n // To do this, we check that a national prefix formatting rule was present\r\n // and that it wasn't just the first-group symbol ($1) with punctuation.\r\n if (formatRule && formatRule.getNationalPrefixFormattingRule().length > 0)\r\n {\r\n if (formatRule.getNationalPrefixOptionalWhenFormatting())\r\n {\r\n // The national-prefix is optional in these cases, so we don't need to check if it was\r\n // present.\r\n return true\r\n }\r\n\r\n if (PhoneNumberUtil.formattingRuleHasFirstGroupOnly(\r\n formatRule.getNationalPrefixFormattingRule()))\r\n {\r\n // National Prefix not needed for this number.\r\n return true\r\n }\r\n\r\n // Normalize the remainder.\r\n const rawInputCopy = PhoneNumberUtil.normalizeDigitsOnly(number.getRawInput())\r\n\r\n // Check if we found a national prefix and/or carrier code at the start of the raw input, and\r\n // return the result.\r\n return util.maybeStripNationalPrefixAndCarrierCode(rawInputCopy, metadata, null)\r\n }\r\n\r\n return true\r\n}\r\n\r\nexport function containsMoreThanOneSlashInNationalNumber(number, candidate)\r\n{\r\n const firstSlashInBodyIndex = candidate.indexOf('/')\r\n if (firstSlashInBodyIndex < 0)\r\n {\r\n // No slashes, this is okay.\r\n return false\r\n }\r\n\r\n // Now look for a second one.\r\n const secondSlashInBodyIndex = candidate.indexOf('/', firstSlashInBodyIndex + 1)\r\n if (secondSlashInBodyIndex < 0)\r\n {\r\n // Only one slash, this is okay.\r\n return false\r\n }\r\n\r\n // If the first slash is after the country calling code, this is permitted.\r\n const candidateHasCountryCode =\r\n (number.getCountryCodeSource() === CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN\r\n || number.getCountryCodeSource() === CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN)\r\n\r\n if (candidateHasCountryCode\r\n && PhoneNumberUtil.normalizeDigitsOnly(candidate.substring(0, firstSlashInBodyIndex))\r\n === String(number.getCountryCode()))\r\n {\r\n // Any more slashes and this is illegal.\r\n return candidate.slice(secondSlashInBodyIndex + 1).indexOf('/') >= 0\r\n }\r\n\r\n return true\r\n}\r\n\r\nfunction checkNumberGroupingIsValid(\r\n number,\r\n candidate,\r\n metadata,\r\n checkGroups,\r\n regExpCache\r\n) {\r\n const normalizedCandidate = normalizeDigits(candidate, true /* keep non-digits */)\r\n let formattedNumberGroups = getNationalNumberGroups(metadata, number, null)\r\n if (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) {\r\n return true\r\n }\r\n\r\n // If this didn't pass, see if there are any alternate formats that match, and try them instead.\r\n const alternateFormats = MetadataManager.getAlternateFormatsForCountry(number.getCountryCode())\r\n const nationalSignificantNumber = util.getNationalSignificantNumber(number)\r\n\r\n if (alternateFormats) {\r\n for (const alternateFormat of alternateFormats.numberFormats()) {\r\n if (alternateFormat.leadingDigitsPatterns().length > 0) {\r\n // There is only one leading digits pattern for alternate formats.\r\n const leadingDigitsRegExp = regExpCache.getPatternForRegExp('^' + alternateFormat.leadingDigitsPatterns()[0])\r\n if (!leadingDigitsRegExp.test(nationalSignificantNumber)) {\r\n // Leading digits don't match; try another one.\r\n continue\r\n }\r\n }\r\n formattedNumberGroups = getNationalNumberGroups(metadata, number, alternateFormat)\r\n if (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) {\r\n return true\r\n }\r\n }\r\n }\r\n\r\n return false\r\n}\r\n\r\n/**\r\n * Helper method to get the national-number part of a number, formatted without any national\r\n * prefix, and return it as a set of digit blocks that would be formatted together following\r\n * standard formatting rules.\r\n */\r\nfunction getNationalNumberGroups(\r\n\tmetadata,\r\n\tnumber,\r\n\tformattingPattern\r\n) {\r\n if (formattingPattern) {\r\n // We format the NSN only, and split that according to the separator.\r\n const nationalSignificantNumber = util.getNationalSignificantNumber(number)\r\n return util.formatNsnUsingPattern(nationalSignificantNumber,\r\n formattingPattern, 'RFC3966', metadata).split('-')\r\n\t}\r\n\r\n // This will be in the format +CC-DG1-DG2-DGX;ext=EXT where DG1..DGX represents groups of digits.\r\n const rfc3966Format = formatNumber(number, 'RFC3966', metadata)\r\n\r\n // We remove the extension part from the formatted string before splitting it into different\r\n // groups.\r\n let endIndex = rfc3966Format.indexOf(';')\r\n if (endIndex < 0) {\r\n endIndex = rfc3966Format.length\r\n }\r\n\r\n // The country-code will have a '-' following it.\r\n const startIndex = rfc3966Format.indexOf('-') + 1\r\n return rfc3966Format.slice(startIndex, endIndex).split('-')\r\n}\r\n\r\nfunction allNumberGroupsAreExactlyPresent\r\n(\r\n\tmetadata,\r\n\tnumber,\r\n\tnormalizedCandidate,\r\n\tformattedNumberGroups\r\n)\r\n{\r\n const candidateGroups = normalizedCandidate.split(NON_DIGITS_PATTERN)\r\n\r\n // Set this to the last group, skipping it if the number has an extension.\r\n let candidateNumberGroupIndex =\r\n number.hasExtension() ? candidateGroups.length - 2 : candidateGroups.length - 1\r\n\r\n // First we check if the national significant number is formatted as a block.\r\n // We use contains and not equals, since the national significant number may be present with\r\n // a prefix such as a national number prefix, or the country code itself.\r\n if (candidateGroups.length == 1\r\n || candidateGroups[candidateNumberGroupIndex].contains(\r\n util.getNationalSignificantNumber(number)))\r\n {\r\n return true\r\n }\r\n\r\n // Starting from the end, go through in reverse, excluding the first group, and check the\r\n // candidate and number groups are the same.\r\n let formattedNumberGroupIndex = (formattedNumberGroups.length - 1)\r\n while (formattedNumberGroupIndex > 0 && candidateNumberGroupIndex >= 0)\r\n {\r\n if (candidateGroups[candidateNumberGroupIndex] !== formattedNumberGroups[formattedNumberGroupIndex])\r\n {\r\n return false\r\n }\r\n formattedNumberGroupIndex--\r\n candidateNumberGroupIndex--\r\n }\r\n\r\n // Now check the first group. There may be a national prefix at the start, so we only check\r\n // that the candidate group ends with the formatted number group.\r\n return (candidateNumberGroupIndex >= 0\r\n && endsWith(candidateGroups[candidateNumberGroupIndex], formattedNumberGroups[0]))\r\n}\r\n\r\n\r\nfunction allNumberGroupsRemainGrouped\r\n(\r\n\tmetadata,\r\n\tnumber,\r\n\tnormalizedCandidate,\r\n\tformattedNumberGroups\r\n)\r\n{\r\n let fromIndex = 0\r\n if (number.getCountryCodeSource() !== CountryCodeSource.FROM_DEFAULT_COUNTRY)\r\n {\r\n // First skip the country code if the normalized candidate contained it.\r\n const countryCode = String(number.getCountryCode())\r\n fromIndex = normalizedCandidate.indexOf(countryCode) + countryCode.length()\r\n }\r\n\r\n // Check each group of consecutive digits are not broken into separate groupings in the\r\n // {@code normalizedCandidate} string.\r\n for (let i = 0; i < formattedNumberGroups.length; i++)\r\n {\r\n // Fails if the substring of {@code normalizedCandidate} starting from {@code fromIndex}\r\n // doesn't contain the consecutive digits in formattedNumberGroups[i].\r\n fromIndex = normalizedCandidate.indexOf(formattedNumberGroups[i], fromIndex)\r\n if (fromIndex < 0) {\r\n return false\r\n }\r\n // Moves {@code fromIndex} forward.\r\n fromIndex += formattedNumberGroups[i].length()\r\n if (i == 0 && fromIndex < normalizedCandidate.length())\r\n {\r\n // We are at the position right after the NDC. We get the region used for formatting\r\n // information based on the country code in the phone number, rather than the number itself,\r\n // as we do not need to distinguish between different countries with the same country\r\n // calling code and this is faster.\r\n const region = util.getRegionCodeForCountryCode(number.getCountryCode())\r\n if (util.getNddPrefixForRegion(region, true) != null\r\n && Character.isDigit(normalizedCandidate.charAt(fromIndex))) {\r\n // This means there is no formatting symbol after the NDC. In this case, we only\r\n // accept the number if there is no formatting symbol at all in the number, except\r\n // for extensions. This is only important for countries with national prefixes.\r\n const nationalSignificantNumber = util.getNationalSignificantNumber(number)\r\n return startsWith\r\n (\r\n \t normalizedCandidate.slice(fromIndex - formattedNumberGroups[i].length),\r\n nationalSignificantNumber\r\n )\r\n }\r\n }\r\n }\r\n\r\n // The check here makes sure that we haven't mistakenly already used the extension to\r\n // match the last group of the subscriber number. Note the extension cannot have\r\n // formatting in-between digits.\r\n return normalizedCandidate.slice(fromIndex).contains(number.getExtension())\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/Leniency.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/Leniency.test.js new file mode 100644 index 00000000..f44da6dd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/Leniency.test.js @@ -0,0 +1,36 @@ +/* +import { containsMoreThanOneSlashInNationalNumber } from './Leniency.js' + +describe('Leniency', () => { + it('testContainsMoreThanOneSlashInNationalNumber', () => { + // A date should return true. + number.setCountryCode(1) + number.setCountryCodeSource(CountryCodeSource.FROM_DEFAULT_COUNTRY) + containsMoreThanOneSlashInNationalNumber(number, '1/05/2013').should.equal(true) + + // Here, the country code source thinks it started with a country calling code, but this is not + // the same as the part before the slash, so it's still true. + number.setCountryCode(274) + number.setCountryCodeSource(CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN) + containsMoreThanOneSlashInNationalNumber(number, '27/4/2013').should.equal(true) + + // Now it should be false, because the first slash is after the country calling code. + number.setCountryCode(49) + number.setCountryCodeSource(CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN) + containsMoreThanOneSlashInNationalNumber(number, '49/69/2013').should.equal(false) + + number.setCountryCode(49) + number.setCountryCodeSource(CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN) + containsMoreThanOneSlashInNationalNumber(number, '+49/69/2013').should.equal(false) + containsMoreThanOneSlashInNationalNumber(number, '+ 49/69/2013').should.equal(false) + containsMoreThanOneSlashInNationalNumber(number, '+ 49/69/20/13').should.equal(true) + + // Here, the first group is not assumed to be the country calling code, even though it is the + // same as it, so this should return true. + number.setCountryCode(49) + number.setCountryCodeSource(CountryCodeSource.FROM_DEFAULT_COUNTRY) + containsMoreThanOneSlashInNationalNumber(number, '49/69/2013').should.equal(true) + }) +}) +*/ +//# sourceMappingURL=Leniency.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/Leniency.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/Leniency.test.js.map new file mode 100644 index 00000000..a69e4625 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/Leniency.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Leniency.test.js","names":[],"sources":["../../source/findNumbers/Leniency.test.js"],"sourcesContent":["/*\r\nimport { containsMoreThanOneSlashInNationalNumber } from './Leniency.js'\r\n\r\ndescribe('Leniency', () => {\r\n\tit('testContainsMoreThanOneSlashInNationalNumber', () => {\r\n\t\t// A date should return true.\r\n\t\tnumber.setCountryCode(1)\r\n\t\tnumber.setCountryCodeSource(CountryCodeSource.FROM_DEFAULT_COUNTRY)\r\n\t\tcontainsMoreThanOneSlashInNationalNumber(number, '1/05/2013').should.equal(true)\r\n\r\n\t\t// Here, the country code source thinks it started with a country calling code, but this is not\r\n\t\t// the same as the part before the slash, so it's still true.\r\n\t\tnumber.setCountryCode(274)\r\n\t\tnumber.setCountryCodeSource(CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN)\r\n\t\tcontainsMoreThanOneSlashInNationalNumber(number, '27/4/2013').should.equal(true)\r\n\r\n\t\t// Now it should be false, because the first slash is after the country calling code.\r\n\t\tnumber.setCountryCode(49)\r\n\t\tnumber.setCountryCodeSource(CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN)\r\n\t\tcontainsMoreThanOneSlashInNationalNumber(number, '49/69/2013').should.equal(false)\r\n\r\n\t\tnumber.setCountryCode(49)\r\n\t\tnumber.setCountryCodeSource(CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN)\r\n\t\tcontainsMoreThanOneSlashInNationalNumber(number, '+49/69/2013').should.equal(false)\r\n\t\tcontainsMoreThanOneSlashInNationalNumber(number, '+ 49/69/2013').should.equal(false)\r\n\t\tcontainsMoreThanOneSlashInNationalNumber(number, '+ 49/69/20/13').should.equal(true)\r\n\r\n\t\t// Here, the first group is not assumed to be the country calling code, even though it is the\r\n\t\t// same as it, so this should return true.\r\n\t\tnumber.setCountryCode(49)\r\n\t\tnumber.setCountryCodeSource(CountryCodeSource.FROM_DEFAULT_COUNTRY)\r\n\t\tcontainsMoreThanOneSlashInNationalNumber(number, '49/69/2013').should.equal(true)\r\n\t})\r\n})\r\n*/"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/RegExpCache.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/RegExpCache.js new file mode 100644 index 00000000..3f2200fc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/RegExpCache.js @@ -0,0 +1,37 @@ +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +import LRUCache from './LRUCache.js'; // A cache for frequently used country-specific regular expressions. Set to 32 to cover ~2-3 +// countries being used for the same doc with ~10 patterns for each country. Some pages will have +// a lot more countries in use, but typically fewer numbers for each so expanding the cache for +// that use-case won't have a lot of benefit. + +var RegExpCache = /*#__PURE__*/function () { + function RegExpCache(size) { + _classCallCheck(this, RegExpCache); + + this.cache = new LRUCache(size); + } + + _createClass(RegExpCache, [{ + key: "getPatternForRegExp", + value: function getPatternForRegExp(pattern) { + var regExp = this.cache.get(pattern); + + if (!regExp) { + regExp = new RegExp('^' + pattern); + this.cache.put(pattern, regExp); + } + + return regExp; + } + }]); + + return RegExpCache; +}(); + +export { RegExpCache as default }; +//# sourceMappingURL=RegExpCache.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/RegExpCache.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/RegExpCache.js.map new file mode 100644 index 00000000..f203a25e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/RegExpCache.js.map @@ -0,0 +1 @@ +{"version":3,"file":"RegExpCache.js","names":["LRUCache","RegExpCache","size","cache","pattern","regExp","get","RegExp","put"],"sources":["../../source/findNumbers/RegExpCache.js"],"sourcesContent":["import LRUCache from './LRUCache.js'\r\n\r\n// A cache for frequently used country-specific regular expressions. Set to 32 to cover ~2-3\r\n// countries being used for the same doc with ~10 patterns for each country. Some pages will have\r\n// a lot more countries in use, but typically fewer numbers for each so expanding the cache for\r\n// that use-case won't have a lot of benefit.\r\nexport default class RegExpCache {\r\n\tconstructor(size) {\r\n\t\tthis.cache = new LRUCache(size)\r\n\t}\r\n\r\n\tgetPatternForRegExp(pattern) {\r\n\t\tlet regExp = this.cache.get(pattern)\r\n\t\tif (!regExp) {\r\n\t\t\tregExp = new RegExp('^' + pattern)\r\n\t\t\tthis.cache.put(pattern, regExp)\r\n\t\t}\r\n\t\treturn regExp\r\n\t}\r\n}"],"mappings":";;;;;;AAAA,OAAOA,QAAP,MAAqB,eAArB,C,CAEA;AACA;AACA;AACA;;IACqBC,W;EACpB,qBAAYC,IAAZ,EAAkB;IAAA;;IACjB,KAAKC,KAAL,GAAa,IAAIH,QAAJ,CAAaE,IAAb,CAAb;EACA;;;;WAED,6BAAoBE,OAApB,EAA6B;MAC5B,IAAIC,MAAM,GAAG,KAAKF,KAAL,CAAWG,GAAX,CAAeF,OAAf,CAAb;;MACA,IAAI,CAACC,MAAL,EAAa;QACZA,MAAM,GAAG,IAAIE,MAAJ,CAAW,MAAMH,OAAjB,CAAT;QACA,KAAKD,KAAL,CAAWK,GAAX,CAAeJ,OAAf,EAAwBC,MAAxB;MACA;;MACD,OAAOA,MAAP;IACA;;;;;;SAZmBJ,W"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/isValidCandidate.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/isValidCandidate.js new file mode 100644 index 00000000..65ae7142 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/isValidCandidate.js @@ -0,0 +1,67 @@ +// Copy-pasted from `PhoneNumberMatcher.js`. +import { PLUS_CHARS } from '../constants.js'; +import { limit } from './util.js'; +import { isLatinLetter, isInvalidPunctuationSymbol } from './utf-8.js'; +var OPENING_PARENS = "(\\[\uFF08\uFF3B"; +var CLOSING_PARENS = ")\\]\uFF09\uFF3D"; +var NON_PARENS = "[^".concat(OPENING_PARENS).concat(CLOSING_PARENS, "]"); +export var LEAD_CLASS = "[".concat(OPENING_PARENS).concat(PLUS_CHARS, "]"); // Punctuation that may be at the start of a phone number - brackets and plus signs. + +var LEAD_CLASS_LEADING = new RegExp('^' + LEAD_CLASS); // Limit on the number of pairs of brackets in a phone number. + +var BRACKET_PAIR_LIMIT = limit(0, 3); +/** + * Pattern to check that brackets match. Opening brackets should be closed within a phone number. + * This also checks that there is something inside the brackets. Having no brackets at all is also + * fine. + * + * An opening bracket at the beginning may not be closed, but subsequent ones should be. It's + * also possible that the leading bracket was dropped, so we shouldn't be surprised if we see a + * closing bracket first. We limit the sets of brackets in a phone number to four. + */ + +var MATCHING_BRACKETS_ENTIRE = new RegExp('^' + "(?:[" + OPENING_PARENS + "])?" + "(?:" + NON_PARENS + "+" + "[" + CLOSING_PARENS + "])?" + NON_PARENS + "+" + "(?:[" + OPENING_PARENS + "]" + NON_PARENS + "+[" + CLOSING_PARENS + "])" + BRACKET_PAIR_LIMIT + NON_PARENS + "*" + '$'); +/** + * Matches strings that look like publication pages. Example: + *

Computing Complete Answers to Queries in the Presence of Limited Access Patterns.
+ * Chen Li. VLDB J. 12(3): 211-227 (2003).
+ * + * The string "211-227 (2003)" is not a telephone number. + */ + +var PUB_PAGES = /\d{1,5}-+\d{1,5}\s{0,4}\(\d{1,4}/; +export default function isValidCandidate(candidate, offset, text, leniency) { + // Check the candidate doesn't contain any formatting + // which would indicate that it really isn't a phone number. + if (!MATCHING_BRACKETS_ENTIRE.test(candidate) || PUB_PAGES.test(candidate)) { + return; + } // If leniency is set to VALID or stricter, we also want to skip numbers that are surrounded + // by Latin alphabetic characters, to skip cases like abc8005001234 or 8005001234def. + + + if (leniency !== 'POSSIBLE') { + // If the candidate is not at the start of the text, + // and does not start with phone-number punctuation, + // check the previous character. + if (offset > 0 && !LEAD_CLASS_LEADING.test(candidate)) { + var previousChar = text[offset - 1]; // We return null if it is a latin letter or an invalid punctuation symbol. + + if (isInvalidPunctuationSymbol(previousChar) || isLatinLetter(previousChar)) { + return false; + } + } + + var lastCharIndex = offset + candidate.length; + + if (lastCharIndex < text.length) { + var nextChar = text[lastCharIndex]; + + if (isInvalidPunctuationSymbol(nextChar) || isLatinLetter(nextChar)) { + return false; + } + } + } + + return true; +} +//# sourceMappingURL=isValidCandidate.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/isValidCandidate.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/isValidCandidate.js.map new file mode 100644 index 00000000..72cb721b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/isValidCandidate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isValidCandidate.js","names":["PLUS_CHARS","limit","isLatinLetter","isInvalidPunctuationSymbol","OPENING_PARENS","CLOSING_PARENS","NON_PARENS","LEAD_CLASS","LEAD_CLASS_LEADING","RegExp","BRACKET_PAIR_LIMIT","MATCHING_BRACKETS_ENTIRE","PUB_PAGES","isValidCandidate","candidate","offset","text","leniency","test","previousChar","lastCharIndex","length","nextChar"],"sources":["../../source/findNumbers/isValidCandidate.js"],"sourcesContent":["// Copy-pasted from `PhoneNumberMatcher.js`.\r\n\r\nimport { PLUS_CHARS } from '../constants.js'\r\nimport { limit } from './util.js'\r\n\r\nimport {\r\n\tisLatinLetter,\r\n\tisInvalidPunctuationSymbol\r\n} from './utf-8.js'\r\n\r\nconst OPENING_PARENS = '(\\\\[\\uFF08\\uFF3B'\r\nconst CLOSING_PARENS = ')\\\\]\\uFF09\\uFF3D'\r\nconst NON_PARENS = `[^${OPENING_PARENS}${CLOSING_PARENS}]`\r\n\r\nexport const LEAD_CLASS = `[${OPENING_PARENS}${PLUS_CHARS}]`\r\n\r\n// Punctuation that may be at the start of a phone number - brackets and plus signs.\r\nconst LEAD_CLASS_LEADING = new RegExp('^' + LEAD_CLASS)\r\n\r\n// Limit on the number of pairs of brackets in a phone number.\r\nconst BRACKET_PAIR_LIMIT = limit(0, 3)\r\n\r\n/**\r\n * Pattern to check that brackets match. Opening brackets should be closed within a phone number.\r\n * This also checks that there is something inside the brackets. Having no brackets at all is also\r\n * fine.\r\n *\r\n * An opening bracket at the beginning may not be closed, but subsequent ones should be. It's\r\n * also possible that the leading bracket was dropped, so we shouldn't be surprised if we see a\r\n * closing bracket first. We limit the sets of brackets in a phone number to four.\r\n */\r\nconst MATCHING_BRACKETS_ENTIRE = new RegExp\r\n(\r\n\t'^'\r\n\t+ \"(?:[\" + OPENING_PARENS + \"])?\" + \"(?:\" + NON_PARENS + \"+\" + \"[\" + CLOSING_PARENS + \"])?\"\r\n\t+ NON_PARENS + \"+\"\r\n\t+ \"(?:[\" + OPENING_PARENS + \"]\" + NON_PARENS + \"+[\" + CLOSING_PARENS + \"])\" + BRACKET_PAIR_LIMIT\r\n\t+ NON_PARENS + \"*\"\r\n\t+ '$'\r\n)\r\n\r\n/**\r\n * Matches strings that look like publication pages. Example:\r\n *
Computing Complete Answers to Queries in the Presence of Limited Access Patterns.\r\n * Chen Li. VLDB J. 12(3): 211-227 (2003).
\r\n *\r\n * The string \"211-227 (2003)\" is not a telephone number.\r\n */\r\nconst PUB_PAGES = /\\d{1,5}-+\\d{1,5}\\s{0,4}\\(\\d{1,4}/\r\n\r\nexport default function isValidCandidate(candidate, offset, text, leniency)\r\n{\r\n\t// Check the candidate doesn't contain any formatting\r\n\t// which would indicate that it really isn't a phone number.\r\n\tif (!MATCHING_BRACKETS_ENTIRE.test(candidate) || PUB_PAGES.test(candidate)) {\r\n\t\treturn\r\n\t}\r\n\r\n\t// If leniency is set to VALID or stricter, we also want to skip numbers that are surrounded\r\n\t// by Latin alphabetic characters, to skip cases like abc8005001234 or 8005001234def.\r\n\tif (leniency !== 'POSSIBLE')\r\n\t{\r\n\t\t// If the candidate is not at the start of the text,\r\n\t\t// and does not start with phone-number punctuation,\r\n\t\t// check the previous character.\r\n\t\tif (offset > 0 && !LEAD_CLASS_LEADING.test(candidate))\r\n\t\t{\r\n\t\t\tconst previousChar = text[offset - 1]\r\n\t\t\t// We return null if it is a latin letter or an invalid punctuation symbol.\r\n\t\t\tif (isInvalidPunctuationSymbol(previousChar) || isLatinLetter(previousChar)) {\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst lastCharIndex = offset + candidate.length\r\n\t\tif (lastCharIndex < text.length)\r\n\t\t{\r\n\t\t\tconst nextChar = text[lastCharIndex]\r\n\t\t\tif (isInvalidPunctuationSymbol(nextChar) || isLatinLetter(nextChar)) {\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn true\r\n}"],"mappings":"AAAA;AAEA,SAASA,UAAT,QAA2B,iBAA3B;AACA,SAASC,KAAT,QAAsB,WAAtB;AAEA,SACCC,aADD,EAECC,0BAFD,QAGO,YAHP;AAKA,IAAMC,cAAc,GAAG,kBAAvB;AACA,IAAMC,cAAc,GAAG,kBAAvB;AACA,IAAMC,UAAU,eAAQF,cAAR,SAAyBC,cAAzB,MAAhB;AAEA,OAAO,IAAME,UAAU,cAAOH,cAAP,SAAwBJ,UAAxB,MAAhB,C,CAEP;;AACA,IAAMQ,kBAAkB,GAAG,IAAIC,MAAJ,CAAW,MAAMF,UAAjB,CAA3B,C,CAEA;;AACA,IAAMG,kBAAkB,GAAGT,KAAK,CAAC,CAAD,EAAI,CAAJ,CAAhC;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMU,wBAAwB,GAAG,IAAIF,MAAJ,CAEhC,MACE,MADF,GACWL,cADX,GAC4B,KAD5B,GACoC,KADpC,GAC4CE,UAD5C,GACyD,GADzD,GAC+D,GAD/D,GACqED,cADrE,GACsF,KADtF,GAEEC,UAFF,GAEe,GAFf,GAGE,MAHF,GAGWF,cAHX,GAG4B,GAH5B,GAGkCE,UAHlC,GAG+C,IAH/C,GAGsDD,cAHtD,GAGuE,IAHvE,GAG8EK,kBAH9E,GAIEJ,UAJF,GAIe,GAJf,GAKE,GAP8B,CAAjC;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMM,SAAS,GAAG,kCAAlB;AAEA,eAAe,SAASC,gBAAT,CAA0BC,SAA1B,EAAqCC,MAArC,EAA6CC,IAA7C,EAAmDC,QAAnD,EACf;EACC;EACA;EACA,IAAI,CAACN,wBAAwB,CAACO,IAAzB,CAA8BJ,SAA9B,CAAD,IAA6CF,SAAS,CAACM,IAAV,CAAeJ,SAAf,CAAjD,EAA4E;IAC3E;EACA,CALF,CAOC;EACA;;;EACA,IAAIG,QAAQ,KAAK,UAAjB,EACA;IACC;IACA;IACA;IACA,IAAIF,MAAM,GAAG,CAAT,IAAc,CAACP,kBAAkB,CAACU,IAAnB,CAAwBJ,SAAxB,CAAnB,EACA;MACC,IAAMK,YAAY,GAAGH,IAAI,CAACD,MAAM,GAAG,CAAV,CAAzB,CADD,CAEC;;MACA,IAAIZ,0BAA0B,CAACgB,YAAD,CAA1B,IAA4CjB,aAAa,CAACiB,YAAD,CAA7D,EAA6E;QAC5E,OAAO,KAAP;MACA;IACD;;IAED,IAAMC,aAAa,GAAGL,MAAM,GAAGD,SAAS,CAACO,MAAzC;;IACA,IAAID,aAAa,GAAGJ,IAAI,CAACK,MAAzB,EACA;MACC,IAAMC,QAAQ,GAAGN,IAAI,CAACI,aAAD,CAArB;;MACA,IAAIjB,0BAA0B,CAACmB,QAAD,CAA1B,IAAwCpB,aAAa,CAACoB,QAAD,CAAzD,EAAqE;QACpE,OAAO,KAAP;MACA;IACD;EACD;;EAED,OAAO,IAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/isValidPreCandidate.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/isValidPreCandidate.js new file mode 100644 index 00000000..fb4bda96 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/isValidPreCandidate.js @@ -0,0 +1,27 @@ +// Matches strings that look like dates using "/" as a separator. +// Examples: 3/10/2011, 31/10/96 or 08/31/95. +var SLASH_SEPARATED_DATES = /(?:(?:[0-3]?\d\/[01]?\d)|(?:[01]?\d\/[0-3]?\d))\/(?:[12]\d)?\d{2}/; // Matches timestamps. +// Examples: "2012-01-02 08:00". +// Note that the reg-ex does not include the +// trailing ":\d\d" -- that is covered by TIME_STAMPS_SUFFIX. + +var TIME_STAMPS = /[12]\d{3}[-/]?[01]\d[-/]?[0-3]\d +[0-2]\d$/; +var TIME_STAMPS_SUFFIX_LEADING = /^:[0-5]\d/; +export default function isValidPreCandidate(candidate, offset, text) { + // Skip a match that is more likely to be a date. + if (SLASH_SEPARATED_DATES.test(candidate)) { + return false; + } // Skip potential time-stamps. + + + if (TIME_STAMPS.test(candidate)) { + var followingText = text.slice(offset + candidate.length); + + if (TIME_STAMPS_SUFFIX_LEADING.test(followingText)) { + return false; + } + } + + return true; +} +//# sourceMappingURL=isValidPreCandidate.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/isValidPreCandidate.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/isValidPreCandidate.js.map new file mode 100644 index 00000000..c27568fb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/isValidPreCandidate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isValidPreCandidate.js","names":["SLASH_SEPARATED_DATES","TIME_STAMPS","TIME_STAMPS_SUFFIX_LEADING","isValidPreCandidate","candidate","offset","text","test","followingText","slice","length"],"sources":["../../source/findNumbers/isValidPreCandidate.js"],"sourcesContent":["// Matches strings that look like dates using \"/\" as a separator.\r\n// Examples: 3/10/2011, 31/10/96 or 08/31/95.\r\nconst SLASH_SEPARATED_DATES = /(?:(?:[0-3]?\\d\\/[01]?\\d)|(?:[01]?\\d\\/[0-3]?\\d))\\/(?:[12]\\d)?\\d{2}/\r\n\r\n// Matches timestamps.\r\n// Examples: \"2012-01-02 08:00\".\r\n// Note that the reg-ex does not include the\r\n// trailing \":\\d\\d\" -- that is covered by TIME_STAMPS_SUFFIX.\r\nconst TIME_STAMPS = /[12]\\d{3}[-/]?[01]\\d[-/]?[0-3]\\d +[0-2]\\d$/\r\nconst TIME_STAMPS_SUFFIX_LEADING = /^:[0-5]\\d/\r\n\r\nexport default function isValidPreCandidate(candidate, offset, text)\r\n{\r\n\t// Skip a match that is more likely to be a date.\r\n\tif (SLASH_SEPARATED_DATES.test(candidate)) {\r\n\t\treturn false\r\n\t}\r\n\r\n\t// Skip potential time-stamps.\r\n\tif (TIME_STAMPS.test(candidate))\r\n\t{\r\n\t\tconst followingText = text.slice(offset + candidate.length)\r\n\t\tif (TIME_STAMPS_SUFFIX_LEADING.test(followingText)) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t}\r\n\r\n\treturn true\r\n}"],"mappings":"AAAA;AACA;AACA,IAAMA,qBAAqB,GAAG,mEAA9B,C,CAEA;AACA;AACA;AACA;;AACA,IAAMC,WAAW,GAAG,4CAApB;AACA,IAAMC,0BAA0B,GAAG,WAAnC;AAEA,eAAe,SAASC,mBAAT,CAA6BC,SAA7B,EAAwCC,MAAxC,EAAgDC,IAAhD,EACf;EACC;EACA,IAAIN,qBAAqB,CAACO,IAAtB,CAA2BH,SAA3B,CAAJ,EAA2C;IAC1C,OAAO,KAAP;EACA,CAJF,CAMC;;;EACA,IAAIH,WAAW,CAACM,IAAZ,CAAiBH,SAAjB,CAAJ,EACA;IACC,IAAMI,aAAa,GAAGF,IAAI,CAACG,KAAL,CAAWJ,MAAM,GAAGD,SAAS,CAACM,MAA9B,CAAtB;;IACA,IAAIR,0BAA0B,CAACK,IAA3B,CAAgCC,aAAhC,CAAJ,EAAoD;MACnD,OAAO,KAAP;IACA;EACD;;EAED,OAAO,IAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/parsePreCandidate.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/parsePreCandidate.js new file mode 100644 index 00000000..facaa585 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/parsePreCandidate.js @@ -0,0 +1,17 @@ +import { trimAfterFirstMatch } from './util.js'; // Regular expression of characters typically used to start a second phone number for the purposes +// of parsing. This allows us to strip off parts of the number that are actually the start of +// another number, such as for: (530) 583-6985 x302/x2303 -> the second extension here makes this +// actually two phone numbers, (530) 583-6985 x302 and (530) 583-6985 x2303. We remove the second +// extension so that the first number is parsed correctly. +// +// Matches a slash (\ or /) followed by a space followed by an `x`. +// + +var SECOND_NUMBER_START_PATTERN = /[\\/] *x/; +export default function parsePreCandidate(candidate) { + // Check for extra numbers at the end. + // TODO: This is the place to start when trying to support extraction of multiple phone number + // from split notations (+41 79 123 45 67 / 68). + return trimAfterFirstMatch(SECOND_NUMBER_START_PATTERN, candidate); +} +//# sourceMappingURL=parsePreCandidate.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/parsePreCandidate.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/parsePreCandidate.js.map new file mode 100644 index 00000000..fad64fb6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/parsePreCandidate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parsePreCandidate.js","names":["trimAfterFirstMatch","SECOND_NUMBER_START_PATTERN","parsePreCandidate","candidate"],"sources":["../../source/findNumbers/parsePreCandidate.js"],"sourcesContent":["import { trimAfterFirstMatch } from './util.js'\r\n\r\n// Regular expression of characters typically used to start a second phone number for the purposes\r\n// of parsing. This allows us to strip off parts of the number that are actually the start of\r\n// another number, such as for: (530) 583-6985 x302/x2303 -> the second extension here makes this\r\n// actually two phone numbers, (530) 583-6985 x302 and (530) 583-6985 x2303. We remove the second\r\n// extension so that the first number is parsed correctly.\r\n//\r\n// Matches a slash (\\ or /) followed by a space followed by an `x`.\r\n//\r\nconst SECOND_NUMBER_START_PATTERN = /[\\\\/] *x/\r\n\r\nexport default function parsePreCandidate(candidate)\r\n{\r\n\t// Check for extra numbers at the end.\r\n\t// TODO: This is the place to start when trying to support extraction of multiple phone number\r\n\t// from split notations (+41 79 123 45 67 / 68).\r\n\treturn trimAfterFirstMatch(SECOND_NUMBER_START_PATTERN, candidate)\r\n}"],"mappings":"AAAA,SAASA,mBAAT,QAAoC,WAApC,C,CAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMC,2BAA2B,GAAG,UAApC;AAEA,eAAe,SAASC,iBAAT,CAA2BC,SAA3B,EACf;EACC;EACA;EACA;EACA,OAAOH,mBAAmB,CAACC,2BAAD,EAA8BE,SAA9B,CAA1B;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/utf-8.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/utf-8.js new file mode 100644 index 00000000..318289cc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/utf-8.js @@ -0,0 +1,61 @@ +// Javascript doesn't support UTF-8 regular expressions. +// So mimicking them here. +// Copy-pasted from `PhoneNumberMatcher.js`. + +/** + * "\p{Z}" is any kind of whitespace or invisible separator ("Separator"). + * http://www.regular-expressions.info/unicode.html + * "\P{Z}" is the reverse of "\p{Z}". + * "\p{N}" is any kind of numeric character in any script ("Number"). + * "\p{Nd}" is a digit zero through nine in any script except "ideographic scripts" ("Decimal_Digit_Number"). + * "\p{Sc}" is a currency symbol ("Currency_Symbol"). + * "\p{L}" is any kind of letter from any language ("Letter"). + * "\p{Mn}" is "non-spacing mark". + * + * Javascript doesn't support Unicode Regular Expressions + * so substituting it with this explicit set of characters. + * + * https://stackoverflow.com/questions/13210194/javascript-regex-equivalent-of-a-za-z-using-pl + * https://github.com/danielberndt/babel-plugin-utf-8-regex/blob/master/src/transformer.js + */ +var _pZ = " \xA0\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000"; +export var pZ = "[".concat(_pZ, "]"); +export var PZ = "[^".concat(_pZ, "]"); +export var _pN = "0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D66-\u0D75\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19"; // const pN = `[${_pN}]` + +var _pNd = "0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19"; +export var pNd = "[".concat(_pNd, "]"); +export var _pL = "A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC"; +var pL = "[".concat(_pL, "]"); +var pL_regexp = new RegExp(pL); +var _pSc = "$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20B9\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6"; +var pSc = "[".concat(_pSc, "]"); +var pSc_regexp = new RegExp(pSc); +var _pMn = "\u0300-\u036F\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08E4-\u08FE\u0900-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2\u09E3\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B56\u0B62\u0B63\u0B82\u0BC0\u0BCD\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0CBC\u0CBF\u0CC6\u0CCC\u0CCD\u0CE2\u0CE3\u0D41-\u0D44\u0D4D\u0D62\u0D63\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1A17\u1A18\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BAB\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1DC0-\u1DE6\u1DFC-\u1DFF\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099\u309A\uA66F\uA674-\uA67D\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA825\uA826\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEC\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE26"; +var pMn = "[".concat(_pMn, "]"); +var pMn_regexp = new RegExp(pMn); +var _InBasic_Latin = "\0-\x7F"; +var _InLatin_1_Supplement = "\x80-\xFF"; +var _InLatin_Extended_A = "\u0100-\u017F"; +var _InLatin_Extended_Additional = "\u1E00-\u1EFF"; +var _InLatin_Extended_B = "\u0180-\u024F"; +var _InCombining_Diacritical_Marks = "\u0300-\u036F"; +var latinLetterRegexp = new RegExp('[' + _InBasic_Latin + _InLatin_1_Supplement + _InLatin_Extended_A + _InLatin_Extended_Additional + _InLatin_Extended_B + _InCombining_Diacritical_Marks + ']'); +/** + * Helper method to determine if a character is a Latin-script letter or not. + * For our purposes, combining marks should also return true since we assume + * they have been added to a preceding Latin character. + */ + +export function isLatinLetter(letter) { + // Combining marks are a subset of non-spacing-mark. + if (!pL_regexp.test(letter) && !pMn_regexp.test(letter)) { + return false; + } + + return latinLetterRegexp.test(letter); +} +export function isInvalidPunctuationSymbol(character) { + return character === '%' || pSc_regexp.test(character); +} +//# sourceMappingURL=utf-8.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/utf-8.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/utf-8.js.map new file mode 100644 index 00000000..80f27379 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/utf-8.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utf-8.js","names":["_pZ","pZ","PZ","_pN","_pNd","pNd","_pL","pL","pL_regexp","RegExp","_pSc","pSc","pSc_regexp","_pMn","pMn","pMn_regexp","_InBasic_Latin","_InLatin_1_Supplement","_InLatin_Extended_A","_InLatin_Extended_Additional","_InLatin_Extended_B","_InCombining_Diacritical_Marks","latinLetterRegexp","isLatinLetter","letter","test","isInvalidPunctuationSymbol","character"],"sources":["../../source/findNumbers/utf-8.js"],"sourcesContent":["// Javascript doesn't support UTF-8 regular expressions.\r\n// So mimicking them here.\r\n\r\n// Copy-pasted from `PhoneNumberMatcher.js`.\r\n\r\n/**\r\n * \"\\p{Z}\" is any kind of whitespace or invisible separator (\"Separator\").\r\n * http://www.regular-expressions.info/unicode.html\r\n * \"\\P{Z}\" is the reverse of \"\\p{Z}\".\r\n * \"\\p{N}\" is any kind of numeric character in any script (\"Number\").\r\n * \"\\p{Nd}\" is a digit zero through nine in any script except \"ideographic scripts\" (\"Decimal_Digit_Number\").\r\n * \"\\p{Sc}\" is a currency symbol (\"Currency_Symbol\").\r\n * \"\\p{L}\" is any kind of letter from any language (\"Letter\").\r\n * \"\\p{Mn}\" is \"non-spacing mark\".\r\n *\r\n * Javascript doesn't support Unicode Regular Expressions\r\n * so substituting it with this explicit set of characters.\r\n *\r\n * https://stackoverflow.com/questions/13210194/javascript-regex-equivalent-of-a-za-z-using-pl\r\n * https://github.com/danielberndt/babel-plugin-utf-8-regex/blob/master/src/transformer.js\r\n */\r\n\r\nconst _pZ = '\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000'\r\nexport const pZ = `[${_pZ}]`\r\nexport const PZ = `[^${_pZ}]`\r\n\r\nexport const _pN = '\\u0030-\\u0039\\u00B2\\u00B3\\u00B9\\u00BC-\\u00BE\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u09F4-\\u09F9\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0B72-\\u0B77\\u0BE6-\\u0BF2\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0CE6-\\u0CEF\\u0D66-\\u0D75\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F33\\u1040-\\u1049\\u1090-\\u1099\\u1369-\\u137C\\u16EE-\\u16F0\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19DA\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u2182\\u2185-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3007\\u3021-\\u3029\\u3038-\\u303A\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA620-\\uA629\\uA6E6-\\uA6EF\\uA830-\\uA835\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19'\r\n// const pN = `[${_pN}]`\r\n\r\nconst _pNd = '\\u0030-\\u0039\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19'\r\nexport const pNd = `[${_pNd}]`\r\n\r\nexport const _pL = '\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC'\r\nconst pL = `[${_pL}]`\r\nconst pL_regexp = new RegExp(pL)\r\n\r\nconst _pSc = '\\u0024\\u00A2-\\u00A5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20B9\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6'\r\nconst pSc = `[${_pSc}]`\r\nconst pSc_regexp = new RegExp(pSc)\r\n\r\nconst _pMn = '\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u08FE\\u0900-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1DC0-\\u1DE6\\u1DFC-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26'\r\nconst pMn = `[${_pMn}]`\r\nconst pMn_regexp = new RegExp(pMn)\r\n\r\nconst _InBasic_Latin = '\\u0000-\\u007F'\r\nconst _InLatin_1_Supplement = '\\u0080-\\u00FF'\r\nconst _InLatin_Extended_A = '\\u0100-\\u017F'\r\nconst _InLatin_Extended_Additional = '\\u1E00-\\u1EFF'\r\nconst _InLatin_Extended_B = '\\u0180-\\u024F'\r\nconst _InCombining_Diacritical_Marks = '\\u0300-\\u036F'\r\n\r\nconst latinLetterRegexp = new RegExp\r\n(\r\n\t'[' +\r\n\t_InBasic_Latin +\r\n\t_InLatin_1_Supplement +\r\n\t_InLatin_Extended_A +\r\n\t_InLatin_Extended_Additional +\r\n\t_InLatin_Extended_B +\r\n\t_InCombining_Diacritical_Marks +\r\n\t']'\r\n)\r\n\r\n/**\r\n * Helper method to determine if a character is a Latin-script letter or not.\r\n * For our purposes, combining marks should also return true since we assume\r\n * they have been added to a preceding Latin character.\r\n */\r\nexport function isLatinLetter(letter)\r\n{\r\n\t// Combining marks are a subset of non-spacing-mark.\r\n\tif (!pL_regexp.test(letter) && !pMn_regexp.test(letter)) {\r\n\t\treturn false\r\n\t}\r\n\r\n\treturn latinLetterRegexp.test(letter)\r\n}\r\n\r\nexport function isInvalidPunctuationSymbol(character)\r\n{\r\n\treturn character === '%' || pSc_regexp.test(character)\r\n}"],"mappings":"AAAA;AACA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMA,GAAG,GAAG,8DAAZ;AACA,OAAO,IAAMC,EAAE,cAAOD,GAAP,MAAR;AACP,OAAO,IAAME,EAAE,eAAQF,GAAR,MAAR;AAEP,OAAO,IAAMG,GAAG,GAAG,ixBAAZ,C,CACP;;AAEA,IAAMC,IAAI,GAAG,+bAAb;AACA,OAAO,IAAMC,GAAG,cAAOD,IAAP,MAAT;AAEP,OAAO,IAAME,GAAG,GAAG,+kIAAZ;AACP,IAAMC,EAAE,cAAOD,GAAP,MAAR;AACA,IAAME,SAAS,GAAG,IAAIC,MAAJ,CAAWF,EAAX,CAAlB;AAEA,IAAMG,IAAI,GAAG,+HAAb;AACA,IAAMC,GAAG,cAAOD,IAAP,MAAT;AACA,IAAME,UAAU,GAAG,IAAIH,MAAJ,CAAWE,GAAX,CAAnB;AAEA,IAAME,IAAI,GAAG,s6DAAb;AACA,IAAMC,GAAG,cAAOD,IAAP,MAAT;AACA,IAAME,UAAU,GAAG,IAAIN,MAAJ,CAAWK,GAAX,CAAnB;AAEA,IAAME,cAAc,GAAG,SAAvB;AACA,IAAMC,qBAAqB,GAAG,WAA9B;AACA,IAAMC,mBAAmB,GAAG,eAA5B;AACA,IAAMC,4BAA4B,GAAG,eAArC;AACA,IAAMC,mBAAmB,GAAG,eAA5B;AACA,IAAMC,8BAA8B,GAAG,eAAvC;AAEA,IAAMC,iBAAiB,GAAG,IAAIb,MAAJ,CAEzB,MACAO,cADA,GAEAC,qBAFA,GAGAC,mBAHA,GAIAC,4BAJA,GAKAC,mBALA,GAMAC,8BANA,GAOA,GATyB,CAA1B;AAYA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASE,aAAT,CAAuBC,MAAvB,EACP;EACC;EACA,IAAI,CAAChB,SAAS,CAACiB,IAAV,CAAeD,MAAf,CAAD,IAA2B,CAACT,UAAU,CAACU,IAAX,CAAgBD,MAAhB,CAAhC,EAAyD;IACxD,OAAO,KAAP;EACA;;EAED,OAAOF,iBAAiB,CAACG,IAAlB,CAAuBD,MAAvB,CAAP;AACA;AAED,OAAO,SAASE,0BAAT,CAAoCC,SAApC,EACP;EACC,OAAOA,SAAS,KAAK,GAAd,IAAqBf,UAAU,CAACa,IAAX,CAAgBE,SAAhB,CAA5B;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/util.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/util.js new file mode 100644 index 00000000..dadbde00 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/util.js @@ -0,0 +1,29 @@ +/** Returns a regular expression quantifier with an upper and lower limit. */ +export function limit(lower, upper) { + if (lower < 0 || upper <= 0 || upper < lower) { + throw new TypeError(); + } + + return "{".concat(lower, ",").concat(upper, "}"); +} +/** + * Trims away any characters after the first match of {@code pattern} in {@code candidate}, + * returning the trimmed version. + */ + +export function trimAfterFirstMatch(regexp, string) { + var index = string.search(regexp); + + if (index >= 0) { + return string.slice(0, index); + } + + return string; +} +export function startsWith(string, substring) { + return string.indexOf(substring) === 0; +} +export function endsWith(string, substring) { + return string.indexOf(substring, string.length - substring.length) === string.length - substring.length; +} +//# sourceMappingURL=util.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/util.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/util.js.map new file mode 100644 index 00000000..9c2b984e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"util.js","names":["limit","lower","upper","TypeError","trimAfterFirstMatch","regexp","string","index","search","slice","startsWith","substring","indexOf","endsWith","length"],"sources":["../../source/findNumbers/util.js"],"sourcesContent":["/** Returns a regular expression quantifier with an upper and lower limit. */\r\nexport function limit(lower, upper)\r\n{\r\n\tif ((lower < 0) || (upper <= 0) || (upper < lower)) {\r\n\t\tthrow new TypeError()\r\n\t}\r\n\treturn `{${lower},${upper}}`\r\n}\r\n\r\n/**\r\n * Trims away any characters after the first match of {@code pattern} in {@code candidate},\r\n * returning the trimmed version.\r\n */\r\nexport function trimAfterFirstMatch(regexp, string)\r\n{\r\n\tconst index = string.search(regexp)\r\n\r\n\tif (index >= 0) {\r\n\t\treturn string.slice(0, index)\r\n\t}\r\n\r\n\treturn string\r\n}\r\n\r\nexport function startsWith(string, substring)\r\n{\r\n\treturn string.indexOf(substring) === 0\r\n}\r\n\r\nexport function endsWith(string, substring)\r\n{\r\n\treturn string.indexOf(substring, string.length - substring.length) === string.length - substring.length\r\n}\r\n"],"mappings":"AAAA;AACA,OAAO,SAASA,KAAT,CAAeC,KAAf,EAAsBC,KAAtB,EACP;EACC,IAAKD,KAAK,GAAG,CAAT,IAAgBC,KAAK,IAAI,CAAzB,IAAgCA,KAAK,GAAGD,KAA5C,EAAoD;IACnD,MAAM,IAAIE,SAAJ,EAAN;EACA;;EACD,kBAAWF,KAAX,cAAoBC,KAApB;AACA;AAED;AACA;AACA;AACA;;AACA,OAAO,SAASE,mBAAT,CAA6BC,MAA7B,EAAqCC,MAArC,EACP;EACC,IAAMC,KAAK,GAAGD,MAAM,CAACE,MAAP,CAAcH,MAAd,CAAd;;EAEA,IAAIE,KAAK,IAAI,CAAb,EAAgB;IACf,OAAOD,MAAM,CAACG,KAAP,CAAa,CAAb,EAAgBF,KAAhB,CAAP;EACA;;EAED,OAAOD,MAAP;AACA;AAED,OAAO,SAASI,UAAT,CAAoBJ,MAApB,EAA4BK,SAA5B,EACP;EACC,OAAOL,MAAM,CAACM,OAAP,CAAeD,SAAf,MAA8B,CAArC;AACA;AAED,OAAO,SAASE,QAAT,CAAkBP,MAAlB,EAA0BK,SAA1B,EACP;EACC,OAAOL,MAAM,CAACM,OAAP,CAAeD,SAAf,EAA0BL,MAAM,CAACQ,MAAP,GAAgBH,SAAS,CAACG,MAApD,MAAgER,MAAM,CAACQ,MAAP,GAAgBH,SAAS,CAACG,MAAjG;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/util.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/util.test.js new file mode 100644 index 00000000..8ebfa327 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/util.test.js @@ -0,0 +1,35 @@ +import { limit, trimAfterFirstMatch, startsWith, endsWith } from './util.js'; +describe('findNumbers/util', function () { + it('should generate regexp limit', function () { + var thrower = function thrower() { + return limit(1, 0); + }; + + thrower.should["throw"](); + + thrower = function thrower() { + return limit(-1, 1); + }; + + thrower.should["throw"](); + + thrower = function thrower() { + return limit(0, 0); + }; + + thrower.should["throw"](); + }); + it('should trimAfterFirstMatch', function () { + trimAfterFirstMatch(/\d/, 'abc123').should.equal('abc'); + trimAfterFirstMatch(/\d/, 'abc').should.equal('abc'); + }); + it('should determine if a string starts with a substring', function () { + startsWith('𐍈123', '𐍈').should.equal(true); + startsWith('1𐍈', '𐍈').should.equal(false); + }); + it('should determine if a string ends with a substring', function () { + endsWith('123𐍈', '𐍈').should.equal(true); + endsWith('𐍈1', '𐍈').should.equal(false); + }); +}); +//# sourceMappingURL=util.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/util.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/util.test.js.map new file mode 100644 index 00000000..9f320916 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers/util.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"util.test.js","names":["limit","trimAfterFirstMatch","startsWith","endsWith","describe","it","thrower","should","equal"],"sources":["../../source/findNumbers/util.test.js"],"sourcesContent":["import {\r\n\tlimit,\r\n\ttrimAfterFirstMatch,\r\n\tstartsWith,\r\n\tendsWith\r\n} from './util.js'\r\n\r\ndescribe('findNumbers/util', () =>\r\n{\r\n\tit('should generate regexp limit', () =>\r\n\t{\r\n\t\tlet thrower = () => limit(1, 0)\r\n\t\tthrower.should.throw()\r\n\r\n\t\tthrower = () => limit(-1, 1)\r\n\t\tthrower.should.throw()\r\n\r\n\t\tthrower = () => limit(0, 0)\r\n\t\tthrower.should.throw()\r\n\t})\r\n\r\n\tit('should trimAfterFirstMatch', () =>\r\n\t{\r\n\t\ttrimAfterFirstMatch(/\\d/, 'abc123').should.equal('abc')\r\n\t\ttrimAfterFirstMatch(/\\d/, 'abc').should.equal('abc')\r\n\t})\r\n\r\n\tit('should determine if a string starts with a substring', () =>\r\n\t{\r\n\t\tstartsWith('𐍈123', '𐍈').should.equal(true)\r\n\t\tstartsWith('1𐍈', '𐍈').should.equal(false)\r\n\t})\r\n\r\n\tit('should determine if a string ends with a substring', () =>\r\n\t{\r\n\t\tendsWith('123𐍈', '𐍈').should.equal(true)\r\n\t\tendsWith('𐍈1', '𐍈').should.equal(false)\r\n\t})\r\n})"],"mappings":"AAAA,SACCA,KADD,EAECC,mBAFD,EAGCC,UAHD,EAICC,QAJD,QAKO,WALP;AAOAC,QAAQ,CAAC,kBAAD,EAAqB,YAC7B;EACCC,EAAE,CAAC,8BAAD,EAAiC,YACnC;IACC,IAAIC,OAAO,GAAG;MAAA,OAAMN,KAAK,CAAC,CAAD,EAAI,CAAJ,CAAX;IAAA,CAAd;;IACAM,OAAO,CAACC,MAAR;;IAEAD,OAAO,GAAG;MAAA,OAAMN,KAAK,CAAC,CAAC,CAAF,EAAK,CAAL,CAAX;IAAA,CAAV;;IACAM,OAAO,CAACC,MAAR;;IAEAD,OAAO,GAAG;MAAA,OAAMN,KAAK,CAAC,CAAD,EAAI,CAAJ,CAAX;IAAA,CAAV;;IACAM,OAAO,CAACC,MAAR;EACA,CAVC,CAAF;EAYAF,EAAE,CAAC,4BAAD,EAA+B,YACjC;IACCJ,mBAAmB,CAAC,IAAD,EAAO,QAAP,CAAnB,CAAoCM,MAApC,CAA2CC,KAA3C,CAAiD,KAAjD;IACAP,mBAAmB,CAAC,IAAD,EAAO,KAAP,CAAnB,CAAiCM,MAAjC,CAAwCC,KAAxC,CAA8C,KAA9C;EACA,CAJC,CAAF;EAMAH,EAAE,CAAC,sDAAD,EAAyD,YAC3D;IACCH,UAAU,CAAC,OAAD,EAAU,IAAV,CAAV,CAA0BK,MAA1B,CAAiCC,KAAjC,CAAuC,IAAvC;IACAN,UAAU,CAAC,KAAD,EAAQ,IAAR,CAAV,CAAwBK,MAAxB,CAA+BC,KAA/B,CAAqC,KAArC;EACA,CAJC,CAAF;EAMAH,EAAE,CAAC,oDAAD,EAAuD,YACzD;IACCF,QAAQ,CAAC,OAAD,EAAU,IAAV,CAAR,CAAwBI,MAAxB,CAA+BC,KAA/B,CAAqC,IAArC;IACAL,QAAQ,CAAC,KAAD,EAAQ,IAAR,CAAR,CAAsBI,MAAtB,CAA6BC,KAA7B,CAAmC,KAAnC;EACA,CAJC,CAAF;AAKA,CA/BO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers_.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers_.js new file mode 100644 index 00000000..52517e37 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers_.js @@ -0,0 +1,12 @@ +import PhoneNumberMatcher from './PhoneNumberMatcher.js'; +export default function findNumbers(text, options, metadata) { + var matcher = new PhoneNumberMatcher(text, options, metadata); + var results = []; + + while (matcher.hasNext()) { + results.push(matcher.next()); + } + + return results; +} +//# sourceMappingURL=findNumbers_.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers_.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers_.js.map new file mode 100644 index 00000000..a4241d48 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findNumbers_.js.map @@ -0,0 +1 @@ +{"version":3,"file":"findNumbers_.js","names":["PhoneNumberMatcher","findNumbers","text","options","metadata","matcher","results","hasNext","push","next"],"sources":["../source/findNumbers_.js"],"sourcesContent":["import PhoneNumberMatcher from './PhoneNumberMatcher.js'\r\n\r\nexport default function findNumbers(text, options, metadata) {\r\n\tconst matcher = new PhoneNumberMatcher(text, options, metadata)\r\n\tconst results = []\r\n\twhile (matcher.hasNext()) {\r\n\t\tresults.push(matcher.next())\r\n\t}\r\n\treturn results\r\n}"],"mappings":"AAAA,OAAOA,kBAAP,MAA+B,yBAA/B;AAEA,eAAe,SAASC,WAAT,CAAqBC,IAArB,EAA2BC,OAA3B,EAAoCC,QAApC,EAA8C;EAC5D,IAAMC,OAAO,GAAG,IAAIL,kBAAJ,CAAuBE,IAAvB,EAA6BC,OAA7B,EAAsCC,QAAtC,CAAhB;EACA,IAAME,OAAO,GAAG,EAAhB;;EACA,OAAOD,OAAO,CAACE,OAAR,EAAP,EAA0B;IACzBD,OAAO,CAACE,IAAR,CAAaH,OAAO,CAACI,IAAR,EAAb;EACA;;EACD,OAAOH,OAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbers.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbers.js new file mode 100644 index 00000000..2bb02f1b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbers.js @@ -0,0 +1,25 @@ +// This is a legacy function. +// Use `findNumbers()` instead. +import _findPhoneNumbers, { searchPhoneNumbers as _searchPhoneNumbers } from './findPhoneNumbers_.js'; +import { normalizeArguments } from './parsePhoneNumber.js'; +export default function findPhoneNumbers() { + var _normalizeArguments = normalizeArguments(arguments), + text = _normalizeArguments.text, + options = _normalizeArguments.options, + metadata = _normalizeArguments.metadata; + + return _findPhoneNumbers(text, options, metadata); +} +/** + * @return ES6 `for ... of` iterator. + */ + +export function searchPhoneNumbers() { + var _normalizeArguments2 = normalizeArguments(arguments), + text = _normalizeArguments2.text, + options = _normalizeArguments2.options, + metadata = _normalizeArguments2.metadata; + + return _searchPhoneNumbers(text, options, metadata); +} +//# sourceMappingURL=findPhoneNumbers.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbers.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbers.js.map new file mode 100644 index 00000000..38e74c82 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbers.js.map @@ -0,0 +1 @@ +{"version":3,"file":"findPhoneNumbers.js","names":["_findPhoneNumbers","searchPhoneNumbers","_searchPhoneNumbers","normalizeArguments","findPhoneNumbers","arguments","text","options","metadata"],"sources":["../source/findPhoneNumbers.js"],"sourcesContent":["// This is a legacy function.\r\n// Use `findNumbers()` instead.\r\n\r\nimport _findPhoneNumbers, { searchPhoneNumbers as _searchPhoneNumbers } from './findPhoneNumbers_.js'\r\nimport { normalizeArguments } from './parsePhoneNumber.js'\r\n\r\nexport default function findPhoneNumbers()\r\n{\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\treturn _findPhoneNumbers(text, options, metadata)\r\n}\r\n\r\n/**\r\n * @return ES6 `for ... of` iterator.\r\n */\r\nexport function searchPhoneNumbers()\r\n{\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\treturn _searchPhoneNumbers(text, options, metadata)\r\n}"],"mappings":"AAAA;AACA;AAEA,OAAOA,iBAAP,IAA4BC,kBAAkB,IAAIC,mBAAlD,QAA6E,wBAA7E;AACA,SAASC,kBAAT,QAAmC,uBAAnC;AAEA,eAAe,SAASC,gBAAT,GACf;EACC,0BAAoCD,kBAAkB,CAACE,SAAD,CAAtD;EAAA,IAAQC,IAAR,uBAAQA,IAAR;EAAA,IAAcC,OAAd,uBAAcA,OAAd;EAAA,IAAuBC,QAAvB,uBAAuBA,QAAvB;;EACA,OAAOR,iBAAiB,CAACM,IAAD,EAAOC,OAAP,EAAgBC,QAAhB,CAAxB;AACA;AAED;AACA;AACA;;AACA,OAAO,SAASP,kBAAT,GACP;EACC,2BAAoCE,kBAAkB,CAACE,SAAD,CAAtD;EAAA,IAAQC,IAAR,wBAAQA,IAAR;EAAA,IAAcC,OAAd,wBAAcA,OAAd;EAAA,IAAuBC,QAAvB,wBAAuBA,QAAvB;;EACA,OAAON,mBAAmB,CAACI,IAAD,EAAOC,OAAP,EAAgBC,QAAhB,CAA1B;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbers.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbers.test.js new file mode 100644 index 00000000..ea2381f3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbers.test.js @@ -0,0 +1,229 @@ +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +// This is a legacy function. +// Use `findNumbers()` instead. +import findNumbers, { searchPhoneNumbers } from './findPhoneNumbers.js'; +import { PhoneNumberSearch } from './findPhoneNumbers_.js'; +import metadata from '../metadata.min.json' assert { type: 'json' }; +describe('findPhoneNumbers', function () { + it('should find numbers', function () { + findNumbers('2133734253', 'US', metadata).should.deep.equal([{ + phone: '2133734253', + country: 'US', + startsAt: 0, + endsAt: 10 + }]); + findNumbers('(213) 373-4253', 'US', metadata).should.deep.equal([{ + phone: '2133734253', + country: 'US', + startsAt: 0, + endsAt: 14 + }]); + findNumbers('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', metadata).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + startsAt: 14, + endsAt: 32 + }, { + phone: '2133734253', + country: 'US', + startsAt: 41, + endsAt: 55 + }]); // Opening parenthesis issue. + // https://github.com/catamphetamine/libphonenumber-js/issues/252 + + findNumbers('The number is +7 (800) 555-35-35 and not (213) 373-4253 (that\'s not even in the same country!) as written in the document.', 'US', metadata).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + startsAt: 14, + endsAt: 32 + }, { + phone: '2133734253', + country: 'US', + startsAt: 41, + endsAt: 55 + }]); // No default country. + + findNumbers('The number is +7 (800) 555-35-35 as written in the document.', metadata).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + startsAt: 14, + endsAt: 32 + }]); // Passing `options` and default country. + + findNumbers('The number is +7 (800) 555-35-35 as written in the document.', 'US', { + leniency: 'VALID' + }, metadata).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + startsAt: 14, + endsAt: 32 + }]); // Passing `options`. + + findNumbers('The number is +7 (800) 555-35-35 as written in the document.', { + leniency: 'VALID' + }, metadata).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + startsAt: 14, + endsAt: 32 + }]); // Not a phone number and a phone number. + + findNumbers('Digits 12 are not a number, but +7 (800) 555-35-35 is.', { + leniency: 'VALID' + }, metadata).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + startsAt: 32, + endsAt: 50 + }]); // Phone number extension. + + findNumbers('Date 02/17/2018 is not a number, but +7 (800) 555-35-35 ext. 123 is.', { + leniency: 'VALID' + }, metadata).should.deep.equal([{ + phone: '8005553535', + country: 'RU', + ext: '123', + startsAt: 37, + endsAt: 64 + }]); + }); + it('shouldn\'t find non-valid numbers', function () { + // Not a valid phone number for US. + findNumbers('1111111111', 'US', metadata).should.deep.equal([]); + }); + it('should find non-European digits', function () { + // E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`. + findNumbers('العَرَبِيَّة‎ +٤٤٣٣٣٣٣٣٣٣٣٣عَرَبِيّ‎', metadata).should.deep.equal([{ + country: 'GB', + phone: '3333333333', + startsAt: 14, + endsAt: 27 + }]); + }); + it('should iterate', function () { + var expected_numbers = [{ + country: 'RU', + phone: '8005553535', + // number : '+7 (800) 555-35-35', + startsAt: 14, + endsAt: 32 + }, { + country: 'US', + phone: '2133734253', + // number : '(213) 373-4253', + startsAt: 41, + endsAt: 55 + }]; + + for (var _iterator = _createForOfIteratorHelperLoose(searchPhoneNumbers('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', metadata)), _step; !(_step = _iterator()).done;) { + var number = _step.value; + number.should.deep.equal(expected_numbers.shift()); + } + + expected_numbers.length.should.equal(0); + }); + it('should work in edge cases', function () { + var thrower; // No input + + findNumbers('', metadata).should.deep.equal([]); // No country metadata for this `require` country code + + thrower = function thrower() { + return findNumbers('123', 'ZZ', metadata); + }; + + thrower.should["throw"]('Unknown country'); // Numerical `value` + + thrower = function thrower() { + return findNumbers(2141111111, 'US'); + }; + + thrower.should["throw"]('A text for parsing must be a string.'); // // No metadata + // thrower = () => findNumbers('') + // thrower.should.throw('`metadata` argument not passed') + }); + it('shouldn\'t find phone numbers which are not phone numbers', function () { + // A timestamp. + findNumbers('2012-01-02 08:00', 'US', metadata).should.deep.equal([]); // A valid number (not a complete timestamp). + + findNumbers('2012-01-02 08', 'US', metadata).should.deep.equal([{ + country: 'US', + phone: '2012010208', + startsAt: 0, + endsAt: 13 + }]); // Invalid parens. + + findNumbers('213(3734253', 'US', metadata).should.deep.equal([]); // Letters after phone number. + + findNumbers('2133734253a', 'US', metadata).should.deep.equal([]); // Valid phone (same as the one found in the UUID below). + + findNumbers('The phone number is 231354125.', 'FR', metadata).should.deep.equal([{ + country: 'FR', + phone: '231354125', + startsAt: 20, + endsAt: 29 + }]); // Not a phone number (part of a UUID). + // Should parse in `{ extended: true }` mode. + + var possibleNumbers = findNumbers('The UUID is CA801c26f98cd16e231354125ad046e40b.', 'FR', { + extended: true + }, metadata); + possibleNumbers.length.should.equal(3); + possibleNumbers[1].country.should.equal('FR'); + possibleNumbers[1].phone.should.equal('231354125'); // Not a phone number (part of a UUID). + // Shouldn't parse by default. + + findNumbers('The UUID is CA801c26f98cd16e231354125ad046e40b.', 'FR', metadata).should.deep.equal([]); + }); +}); +describe('PhoneNumberSearch', function () { + it('should search for phone numbers', function () { + var finder = new PhoneNumberSearch('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', { + defaultCountry: 'US' + }, metadata); + finder.hasNext().should.equal(true); + finder.next().should.deep.equal({ + country: 'RU', + phone: '8005553535', + // number : '+7 (800) 555-35-35', + startsAt: 14, + endsAt: 32 + }); + finder.hasNext().should.equal(true); + finder.next().should.deep.equal({ + country: 'US', + phone: '2133734253', + // number : '(213) 373-4253', + startsAt: 41, + endsAt: 55 + }); + finder.hasNext().should.equal(false); + }); + it('should search for phone numbers (no options)', function () { + var finder = new PhoneNumberSearch('The number is +7 (800) 555-35-35', undefined, metadata); + finder.hasNext().should.equal(true); + finder.next().should.deep.equal({ + country: 'RU', + phone: '8005553535', + // number : '+7 (800) 555-35-35', + startsAt: 14, + endsAt: 32 + }); + finder.hasNext().should.equal(false); + }); + it('should work in edge cases', function () { + // No options + var search = new PhoneNumberSearch('', undefined, metadata); // No next element + + var thrower = function thrower() { + return search.next(); + }; + + thrower.should["throw"]('No next element'); + }); +}); +//# sourceMappingURL=findPhoneNumbers.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbers.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbers.test.js.map new file mode 100644 index 00000000..86c371e4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbers.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"findPhoneNumbers.test.js","names":["findNumbers","searchPhoneNumbers","PhoneNumberSearch","metadata","type","describe","it","should","deep","equal","phone","country","startsAt","endsAt","leniency","ext","expected_numbers","number","shift","length","thrower","possibleNumbers","extended","finder","defaultCountry","hasNext","next","undefined","search"],"sources":["../source/findPhoneNumbers.test.js"],"sourcesContent":["// This is a legacy function.\r\n// Use `findNumbers()` instead.\r\n\r\nimport findNumbers, { searchPhoneNumbers } from './findPhoneNumbers.js'\r\nimport { PhoneNumberSearch } from './findPhoneNumbers_.js'\r\nimport metadata from '../metadata.min.json' assert { type: 'json' }\r\n\r\ndescribe('findPhoneNumbers', () => {\r\n\tit('should find numbers', () => {\r\n\t\tfindNumbers('2133734253', 'US', metadata).should.deep.equal([{\r\n\t\t\tphone : '2133734253',\r\n\t\t\tcountry : 'US',\r\n\t\t\tstartsAt : 0,\r\n\t\t\tendsAt : 10\r\n\t\t}])\r\n\r\n\t\tfindNumbers('(213) 373-4253', 'US', metadata).should.deep.equal([{\r\n\t\t\tphone : '2133734253',\r\n\t\t\tcountry : 'US',\r\n\t\t\tstartsAt : 0,\r\n\t\t\tendsAt : 14\r\n\t\t}])\r\n\r\n\t\tfindNumbers('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t}, {\r\n\t\t\tphone : '2133734253',\r\n\t\t\tcountry : 'US',\r\n\t\t\tstartsAt : 41,\r\n\t\t\tendsAt : 55\r\n\t\t}])\r\n\r\n\t\t// Opening parenthesis issue.\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/252\r\n\t\tfindNumbers('The number is +7 (800) 555-35-35 and not (213) 373-4253 (that\\'s not even in the same country!) as written in the document.', 'US', metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t}, {\r\n\t\t\tphone : '2133734253',\r\n\t\t\tcountry : 'US',\r\n\t\t\tstartsAt : 41,\r\n\t\t\tendsAt : 55\r\n\t\t}])\r\n\r\n\t\t// No default country.\r\n\t\tfindNumbers('The number is +7 (800) 555-35-35 as written in the document.', metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t}])\r\n\r\n\t\t// Passing `options` and default country.\r\n\t\tfindNumbers('The number is +7 (800) 555-35-35 as written in the document.', 'US', { leniency: 'VALID' }, metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t}])\r\n\r\n\t\t// Passing `options`.\r\n\t\tfindNumbers('The number is +7 (800) 555-35-35 as written in the document.', { leniency: 'VALID' }, metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t}])\r\n\r\n\t\t// Not a phone number and a phone number.\r\n\t\tfindNumbers('Digits 12 are not a number, but +7 (800) 555-35-35 is.', { leniency: 'VALID' }, metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\tstartsAt : 32,\r\n\t\t\tendsAt : 50\r\n\t\t}])\r\n\r\n\t\t// Phone number extension.\r\n\t\tfindNumbers('Date 02/17/2018 is not a number, but +7 (800) 555-35-35 ext. 123 is.', { leniency: 'VALID' }, metadata).should.deep.equal([{\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\text : '123',\r\n\t\t\tstartsAt : 37,\r\n\t\t\tendsAt : 64\r\n\t\t}])\r\n\t})\r\n\r\n\tit('shouldn\\'t find non-valid numbers', () => {\r\n\t\t// Not a valid phone number for US.\r\n\t\tfindNumbers('1111111111', 'US', metadata).should.deep.equal([])\r\n\t})\r\n\r\n\tit('should find non-European digits', () => {\r\n\t\t// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n\t\tfindNumbers('العَرَبِيَّة‎ +٤٤٣٣٣٣٣٣٣٣٣٣عَرَبِيّ‎', metadata).should.deep.equal([{\r\n\t\t\tcountry : 'GB',\r\n\t\t\tphone : '3333333333',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 27\r\n\t\t}])\r\n\t})\r\n\r\n\tit('should iterate', () => {\r\n\t\tconst expected_numbers = [{\r\n\t\t\tcountry : 'RU',\r\n\t\t\tphone : '8005553535',\r\n\t\t\t// number : '+7 (800) 555-35-35',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t}, {\r\n\t\t\tcountry : 'US',\r\n\t\t\tphone : '2133734253',\r\n\t\t\t// number : '(213) 373-4253',\r\n\t\t\tstartsAt : 41,\r\n\t\t\tendsAt : 55\r\n\t\t}]\r\n\r\n\t\tfor (const number of searchPhoneNumbers('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', metadata)) {\r\n\t\t\tnumber.should.deep.equal(expected_numbers.shift())\r\n\t\t}\r\n\r\n\t\texpected_numbers.length.should.equal(0)\r\n\t})\r\n\r\n\tit('should work in edge cases', () => {\r\n\t\tlet thrower\r\n\r\n\t\t// No input\r\n\t\tfindNumbers('', metadata).should.deep.equal([])\r\n\r\n\t\t// No country metadata for this `require` country code\r\n\t\tthrower = () => findNumbers('123', 'ZZ', metadata)\r\n\t\tthrower.should.throw('Unknown country')\r\n\r\n\t\t// Numerical `value`\r\n\t\tthrower = () => findNumbers(2141111111, 'US')\r\n\t\tthrower.should.throw('A text for parsing must be a string.')\r\n\r\n\t\t// // No metadata\r\n\t\t// thrower = () => findNumbers('')\r\n\t\t// thrower.should.throw('`metadata` argument not passed')\r\n\t})\r\n\r\n\tit('shouldn\\'t find phone numbers which are not phone numbers', () => {\r\n\t\t// A timestamp.\r\n\t\tfindNumbers('2012-01-02 08:00', 'US', metadata).should.deep.equal([])\r\n\r\n\t\t// A valid number (not a complete timestamp).\r\n\t\tfindNumbers('2012-01-02 08', 'US', metadata).should.deep.equal([{\r\n\t\t\tcountry : 'US',\r\n\t\t\tphone : '2012010208',\r\n\t\t\tstartsAt : 0,\r\n\t\t\tendsAt : 13\r\n\t\t}])\r\n\r\n\t\t// Invalid parens.\r\n\t\tfindNumbers('213(3734253', 'US', metadata).should.deep.equal([])\r\n\r\n\t\t// Letters after phone number.\r\n\t\tfindNumbers('2133734253a', 'US', metadata).should.deep.equal([])\r\n\r\n\t\t// Valid phone (same as the one found in the UUID below).\r\n\t\tfindNumbers('The phone number is 231354125.', 'FR', metadata).should.deep.equal([{\r\n\t\t\tcountry : 'FR',\r\n\t\t\tphone : '231354125',\r\n\t\t\tstartsAt : 20,\r\n\t\t\tendsAt : 29\r\n\t\t}])\r\n\r\n\t\t// Not a phone number (part of a UUID).\r\n\t\t// Should parse in `{ extended: true }` mode.\r\n\t\tconst possibleNumbers = findNumbers('The UUID is CA801c26f98cd16e231354125ad046e40b.', 'FR', { extended: true }, metadata)\r\n\t\tpossibleNumbers.length.should.equal(3)\r\n\t\tpossibleNumbers[1].country.should.equal('FR')\r\n\t\tpossibleNumbers[1].phone.should.equal('231354125')\r\n\r\n\t\t// Not a phone number (part of a UUID).\r\n\t\t// Shouldn't parse by default.\r\n\t\tfindNumbers('The UUID is CA801c26f98cd16e231354125ad046e40b.', 'FR', metadata).should.deep.equal([])\r\n\t})\r\n})\r\n\r\ndescribe('PhoneNumberSearch', () => {\r\n\tit('should search for phone numbers', () => {\r\n\t\tconst finder = new PhoneNumberSearch('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', { defaultCountry: 'US' }, metadata)\r\n\r\n\t\tfinder.hasNext().should.equal(true)\r\n\t\tfinder.next().should.deep.equal({\r\n\t\t\tcountry : 'RU',\r\n\t\t\tphone : '8005553535',\r\n\t\t\t// number : '+7 (800) 555-35-35',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t})\r\n\r\n\t\tfinder.hasNext().should.equal(true)\r\n\t\tfinder.next().should.deep.equal({\r\n\t\t\tcountry : 'US',\r\n\t\t\tphone : '2133734253',\r\n\t\t\t// number : '(213) 373-4253',\r\n\t\t\tstartsAt : 41,\r\n\t\t\tendsAt : 55\r\n\t\t})\r\n\r\n\t\tfinder.hasNext().should.equal(false)\r\n\t})\r\n\r\n\tit('should search for phone numbers (no options)', () => {\r\n\t\tconst finder = new PhoneNumberSearch('The number is +7 (800) 555-35-35', undefined, metadata)\r\n\t\tfinder.hasNext().should.equal(true)\r\n\t\tfinder.next().should.deep.equal({\r\n\t\t\tcountry : 'RU',\r\n\t\t\tphone : '8005553535',\r\n\t\t\t// number : '+7 (800) 555-35-35',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t})\r\n\t\tfinder.hasNext().should.equal(false)\r\n\t})\r\n\r\n\tit('should work in edge cases', () => {\r\n\t\t// No options\r\n\t\tconst search = new PhoneNumberSearch('', undefined, metadata)\r\n\r\n\t\t// No next element\r\n\t\tlet thrower = () => search.next()\r\n\t\tthrower.should.throw('No next element')\r\n\t})\r\n})"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbersInText.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbersInText.js new file mode 100644 index 00000000..fd032b55 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbersInText.js @@ -0,0 +1,56 @@ +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import findNumbers from './findNumbers.js'; +export default function findPhoneNumbersInText(text, defaultCountry, options, metadata) { + var args = getArguments(defaultCountry, options, metadata); + return findNumbers(text, args.options, args.metadata); +} +export function getArguments(defaultCountry, options, metadata) { + if (metadata) { + if (defaultCountry) { + options = _objectSpread(_objectSpread({}, options), {}, { + defaultCountry: defaultCountry + }); + } + } else { + if (options) { + metadata = options; + + if (defaultCountry) { + if (is_object(defaultCountry)) { + options = defaultCountry; + } else { + options = { + defaultCountry: defaultCountry + }; + } + } else { + options = undefined; + } + } else { + metadata = defaultCountry; + options = undefined; + } + } + + return { + options: _objectSpread(_objectSpread({}, options), {}, { + v2: true + }), + metadata: metadata + }; +} // Babel transforms `typeof` into some "branches" +// so istanbul will show this as "branch not covered". + +/* istanbul ignore next */ + +var is_object = function is_object(_) { + return _typeof(_) === 'object'; +}; +//# sourceMappingURL=findPhoneNumbersInText.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbersInText.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbersInText.js.map new file mode 100644 index 00000000..4e2157fb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbersInText.js.map @@ -0,0 +1 @@ +{"version":3,"file":"findPhoneNumbersInText.js","names":["findNumbers","findPhoneNumbersInText","text","defaultCountry","options","metadata","args","getArguments","is_object","undefined","v2","_"],"sources":["../source/findPhoneNumbersInText.js"],"sourcesContent":["import findNumbers from './findNumbers.js'\r\n\r\nexport default function findPhoneNumbersInText(text, defaultCountry, options, metadata) {\r\n\tconst args = getArguments(defaultCountry, options, metadata)\r\n\treturn findNumbers(text, args.options, args.metadata)\r\n}\r\n\r\nexport function getArguments(defaultCountry, options, metadata) {\r\n\tif (metadata) {\r\n\t\tif (defaultCountry) {\r\n\t\t\toptions = {\r\n\t\t\t\t...options,\r\n\t\t\t\tdefaultCountry\r\n\t\t\t}\r\n\t\t}\r\n\t} else {\r\n\t\tif (options) {\r\n\t\t\tmetadata = options\r\n\t\t\tif (defaultCountry) {\r\n\t\t\t\tif (is_object(defaultCountry)) {\r\n\t\t\t\t\toptions = defaultCountry\r\n\t\t\t\t} else {\r\n\t\t\t\t\toptions = { defaultCountry }\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\toptions = undefined\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tmetadata = defaultCountry\r\n\t\t\toptions = undefined\r\n\t\t}\r\n\t}\r\n\treturn {\r\n\t\toptions: {\r\n\t\t\t...options,\r\n\t\t\tv2: true\r\n\t\t},\r\n\t\tmetadata\r\n\t}\r\n}\r\n\r\n// Babel transforms `typeof` into some \"branches\"\r\n// so istanbul will show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst is_object = _ => typeof _ === 'object'"],"mappings":";;;;;;;;AAAA,OAAOA,WAAP,MAAwB,kBAAxB;AAEA,eAAe,SAASC,sBAAT,CAAgCC,IAAhC,EAAsCC,cAAtC,EAAsDC,OAAtD,EAA+DC,QAA/D,EAAyE;EACvF,IAAMC,IAAI,GAAGC,YAAY,CAACJ,cAAD,EAAiBC,OAAjB,EAA0BC,QAA1B,CAAzB;EACA,OAAOL,WAAW,CAACE,IAAD,EAAOI,IAAI,CAACF,OAAZ,EAAqBE,IAAI,CAACD,QAA1B,CAAlB;AACA;AAED,OAAO,SAASE,YAAT,CAAsBJ,cAAtB,EAAsCC,OAAtC,EAA+CC,QAA/C,EAAyD;EAC/D,IAAIA,QAAJ,EAAc;IACb,IAAIF,cAAJ,EAAoB;MACnBC,OAAO,mCACHA,OADG;QAEND,cAAc,EAAdA;MAFM,EAAP;IAIA;EACD,CAPD,MAOO;IACN,IAAIC,OAAJ,EAAa;MACZC,QAAQ,GAAGD,OAAX;;MACA,IAAID,cAAJ,EAAoB;QACnB,IAAIK,SAAS,CAACL,cAAD,CAAb,EAA+B;UAC9BC,OAAO,GAAGD,cAAV;QACA,CAFD,MAEO;UACNC,OAAO,GAAG;YAAED,cAAc,EAAdA;UAAF,CAAV;QACA;MACD,CAND,MAMO;QACNC,OAAO,GAAGK,SAAV;MACA;IACD,CAXD,MAWO;MACNJ,QAAQ,GAAGF,cAAX;MACAC,OAAO,GAAGK,SAAV;IACA;EACD;;EACD,OAAO;IACNL,OAAO,kCACHA,OADG;MAENM,EAAE,EAAE;IAFE,EADD;IAKNL,QAAQ,EAARA;EALM,CAAP;AAOA,C,CAED;AACA;;AACA;;AACA,IAAMG,SAAS,GAAG,SAAZA,SAAY,CAAAG,CAAC;EAAA,OAAI,QAAOA,CAAP,MAAa,QAAjB;AAAA,CAAnB"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbersInText.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbersInText.test.js new file mode 100644 index 00000000..430d8cc8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbersInText.test.js @@ -0,0 +1,47 @@ +import findPhoneNumbersInText from './findPhoneNumbersInText.js'; +import metadata from '../metadata.min.json' assert { type: 'json' }; +describe('findPhoneNumbersInText', function () { + it('should find phone numbers in text (with default country)', function () { + findPhoneNumbersInText('+7 (800) 555-35-35', 'US', metadata)[0].number.number.should.equal('+78005553535'); + }); + it('should find phone numbers in text (with default country in options)', function () { + findPhoneNumbersInText('+7 (800) 555-35-35', { + defaultCountry: 'US' + }, metadata)[0].number.number.should.equal('+78005553535'); + }); + it('should find phone numbers in text (with default country and options)', function () { + findPhoneNumbersInText('+7 (800) 555-35-35', 'US', {}, metadata)[0].number.number.should.equal('+78005553535'); + }); + it('should find phone numbers in text (without default country, with options)', function () { + findPhoneNumbersInText('+7 (800) 555-35-35', undefined, {}, metadata)[0].number.number.should.equal('+78005553535'); + }); + it('should find phone numbers in text (with default country, without options)', function () { + findPhoneNumbersInText('+7 (800) 555-35-35', 'US', undefined, metadata)[0].number.number.should.equal('+78005553535'); + }); + it('should find phone numbers in text (with empty default country)', function () { + findPhoneNumbersInText('+7 (800) 555-35-35', undefined, metadata)[0].number.number.should.equal('+78005553535'); + }); + it('should find phone numbers in text', function () { + var NUMBERS = ['+78005553535', '+12133734253']; + var results = findPhoneNumbersInText('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', metadata); + var i = 0; + + while (i < results.length) { + results[i].number.number.should.equal(NUMBERS[i]); + i++; + } + }); + it('should find phone numbers in text (default country calling code)', function () { + var NUMBERS = ['+870773111632']; + var results = findPhoneNumbersInText('The number is 773 111 632', { + defaultCallingCode: '870' + }, metadata); + var i = 0; + + while (i < results.length) { + results[i].number.number.should.equal(NUMBERS[i]); + i++; + } + }); +}); +//# sourceMappingURL=findPhoneNumbersInText.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbersInText.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbersInText.test.js.map new file mode 100644 index 00000000..08f4e699 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbersInText.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"findPhoneNumbersInText.test.js","names":["findPhoneNumbersInText","metadata","type","describe","it","number","should","equal","defaultCountry","undefined","NUMBERS","results","i","length","defaultCallingCode"],"sources":["../source/findPhoneNumbersInText.test.js"],"sourcesContent":["import findPhoneNumbersInText from './findPhoneNumbersInText.js'\r\nimport metadata from '../metadata.min.json' assert { type: 'json' }\r\n\r\ndescribe('findPhoneNumbersInText', () => {\r\n\tit('should find phone numbers in text (with default country)', () => {\r\n\t\tfindPhoneNumbersInText('+7 (800) 555-35-35', 'US', metadata)[0].number.number.should.equal('+78005553535')\r\n\t})\r\n\r\n\tit('should find phone numbers in text (with default country in options)', () => {\r\n\t\tfindPhoneNumbersInText('+7 (800) 555-35-35', { defaultCountry: 'US' }, metadata)[0].number.number.should.equal('+78005553535')\r\n\t})\r\n\r\n\tit('should find phone numbers in text (with default country and options)', () => {\r\n\t\tfindPhoneNumbersInText('+7 (800) 555-35-35', 'US', {}, metadata)[0].number.number.should.equal('+78005553535')\r\n\t})\r\n\r\n\tit('should find phone numbers in text (without default country, with options)', () => {\r\n\t\tfindPhoneNumbersInText('+7 (800) 555-35-35', undefined, {}, metadata)[0].number.number.should.equal('+78005553535')\r\n\t})\r\n\r\n\tit('should find phone numbers in text (with default country, without options)', () => {\r\n\t\tfindPhoneNumbersInText('+7 (800) 555-35-35', 'US', undefined, metadata)[0].number.number.should.equal('+78005553535')\r\n\t})\r\n\r\n\tit('should find phone numbers in text (with empty default country)', () => {\r\n\t\tfindPhoneNumbersInText('+7 (800) 555-35-35', undefined, metadata)[0].number.number.should.equal('+78005553535')\r\n\t})\r\n\r\n\tit('should find phone numbers in text', () => {\r\n\t\tconst NUMBERS = ['+78005553535', '+12133734253']\r\n\t\tconst results = findPhoneNumbersInText('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', metadata)\r\n\t\tlet i = 0\r\n\t\twhile (i < results.length) {\r\n\t\t\tresults[i].number.number.should.equal(NUMBERS[i])\r\n\t\t\ti++\r\n\t\t}\r\n\t})\r\n\r\n\tit('should find phone numbers in text (default country calling code)', () => {\r\n\t\tconst NUMBERS = ['+870773111632']\r\n\t\tconst results = findPhoneNumbersInText('The number is 773 111 632', { defaultCallingCode: '870' }, metadata)\r\n\t\tlet i = 0\r\n\t\twhile (i < results.length) {\r\n\t\t\tresults[i].number.number.should.equal(NUMBERS[i])\r\n\t\t\ti++\r\n\t\t}\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,sBAAP,MAAmC,6BAAnC;AACA,OAAOC,QAAP,MAAqB,sBAArB,UAAqDC,IAAI,EAAE,MAA3D;AAEAC,QAAQ,CAAC,wBAAD,EAA2B,YAAM;EACxCC,EAAE,CAAC,0DAAD,EAA6D,YAAM;IACpEJ,sBAAsB,CAAC,oBAAD,EAAuB,IAAvB,EAA6BC,QAA7B,CAAtB,CAA6D,CAA7D,EAAgEI,MAAhE,CAAuEA,MAAvE,CAA8EC,MAA9E,CAAqFC,KAArF,CAA2F,cAA3F;EACA,CAFC,CAAF;EAIAH,EAAE,CAAC,qEAAD,EAAwE,YAAM;IAC/EJ,sBAAsB,CAAC,oBAAD,EAAuB;MAAEQ,cAAc,EAAE;IAAlB,CAAvB,EAAiDP,QAAjD,CAAtB,CAAiF,CAAjF,EAAoFI,MAApF,CAA2FA,MAA3F,CAAkGC,MAAlG,CAAyGC,KAAzG,CAA+G,cAA/G;EACA,CAFC,CAAF;EAIAH,EAAE,CAAC,sEAAD,EAAyE,YAAM;IAChFJ,sBAAsB,CAAC,oBAAD,EAAuB,IAAvB,EAA6B,EAA7B,EAAiCC,QAAjC,CAAtB,CAAiE,CAAjE,EAAoEI,MAApE,CAA2EA,MAA3E,CAAkFC,MAAlF,CAAyFC,KAAzF,CAA+F,cAA/F;EACA,CAFC,CAAF;EAIAH,EAAE,CAAC,2EAAD,EAA8E,YAAM;IACrFJ,sBAAsB,CAAC,oBAAD,EAAuBS,SAAvB,EAAkC,EAAlC,EAAsCR,QAAtC,CAAtB,CAAsE,CAAtE,EAAyEI,MAAzE,CAAgFA,MAAhF,CAAuFC,MAAvF,CAA8FC,KAA9F,CAAoG,cAApG;EACA,CAFC,CAAF;EAIAH,EAAE,CAAC,2EAAD,EAA8E,YAAM;IACrFJ,sBAAsB,CAAC,oBAAD,EAAuB,IAAvB,EAA6BS,SAA7B,EAAwCR,QAAxC,CAAtB,CAAwE,CAAxE,EAA2EI,MAA3E,CAAkFA,MAAlF,CAAyFC,MAAzF,CAAgGC,KAAhG,CAAsG,cAAtG;EACA,CAFC,CAAF;EAIAH,EAAE,CAAC,gEAAD,EAAmE,YAAM;IAC1EJ,sBAAsB,CAAC,oBAAD,EAAuBS,SAAvB,EAAkCR,QAAlC,CAAtB,CAAkE,CAAlE,EAAqEI,MAArE,CAA4EA,MAA5E,CAAmFC,MAAnF,CAA0FC,KAA1F,CAAgG,cAAhG;EACA,CAFC,CAAF;EAIAH,EAAE,CAAC,mCAAD,EAAsC,YAAM;IAC7C,IAAMM,OAAO,GAAG,CAAC,cAAD,EAAiB,cAAjB,CAAhB;IACA,IAAMC,OAAO,GAAGX,sBAAsB,CAAC,qFAAD,EAAwFC,QAAxF,CAAtC;IACA,IAAIW,CAAC,GAAG,CAAR;;IACA,OAAOA,CAAC,GAAGD,OAAO,CAACE,MAAnB,EAA2B;MAC1BF,OAAO,CAACC,CAAD,CAAP,CAAWP,MAAX,CAAkBA,MAAlB,CAAyBC,MAAzB,CAAgCC,KAAhC,CAAsCG,OAAO,CAACE,CAAD,CAA7C;MACAA,CAAC;IACD;EACD,CARC,CAAF;EAUAR,EAAE,CAAC,kEAAD,EAAqE,YAAM;IAC5E,IAAMM,OAAO,GAAG,CAAC,eAAD,CAAhB;IACA,IAAMC,OAAO,GAAGX,sBAAsB,CAAC,2BAAD,EAA8B;MAAEc,kBAAkB,EAAE;IAAtB,CAA9B,EAA6Db,QAA7D,CAAtC;IACA,IAAIW,CAAC,GAAG,CAAR;;IACA,OAAOA,CAAC,GAAGD,OAAO,CAACE,MAAnB,EAA2B;MAC1BF,OAAO,CAACC,CAAD,CAAP,CAAWP,MAAX,CAAkBA,MAAlB,CAAyBC,MAAzB,CAAgCC,KAAhC,CAAsCG,OAAO,CAACE,CAAD,CAA7C;MACAA,CAAC;IACD;EACD,CARC,CAAF;AASA,CA5CO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbers_.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbers_.js new file mode 100644 index 00000000..bda3871f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbers_.js @@ -0,0 +1,201 @@ +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +// This is a legacy function. +// Use `findNumbers()` instead. +import { PLUS_CHARS, VALID_PUNCTUATION, VALID_DIGITS, WHITESPACE } from './constants.js'; +import parse from './parse_.js'; +import { VALID_PHONE_NUMBER_WITH_EXTENSION } from './helpers/isViablePhoneNumber.js'; +import createExtensionPattern from './helpers/extension/createExtensionPattern.js'; +import parsePreCandidate from './findNumbers/parsePreCandidate.js'; +import isValidPreCandidate from './findNumbers/isValidPreCandidate.js'; +import isValidCandidate from './findNumbers/isValidCandidate.js'; +/** + * Regexp of all possible ways to write extensions, for use when parsing. This + * will be run as a case-insensitive regexp match. Wide character versions are + * also provided after each ASCII version. There are three regular expressions + * here. The first covers RFC 3966 format, where the extension is added using + * ';ext='. The second more generic one starts with optional white space and + * ends with an optional full stop (.), followed by zero or more spaces/tabs + * /commas and then the numbers themselves. The other one covers the special + * case of American numbers where the extension is written with a hash at the + * end, such as '- 503#'. Note that the only capturing groups should be around + * the digits that you want to capture as part of the extension, or else parsing + * will fail! We allow two options for representing the accented o - the + * character itself, and one in the unicode decomposed form with the combining + * acute accent. + */ + +export var EXTN_PATTERNS_FOR_PARSING = createExtensionPattern('parsing'); +var WHITESPACE_IN_THE_BEGINNING_PATTERN = new RegExp('^[' + WHITESPACE + ']+'); +var PUNCTUATION_IN_THE_END_PATTERN = new RegExp('[' + VALID_PUNCTUATION + ']+$'); // // Regular expression for getting opening brackets for a valid number +// // found using `PHONE_NUMBER_START_PATTERN` for prepending those brackets to the number. +// const BEFORE_NUMBER_DIGITS_PUNCTUATION = new RegExp('[' + OPENING_BRACKETS + ']+' + '[' + WHITESPACE + ']*' + '$') + +var VALID_PRECEDING_CHARACTER_PATTERN = /[^a-zA-Z0-9]/; +export default function findPhoneNumbers(text, options, metadata) { + /* istanbul ignore if */ + if (options === undefined) { + options = {}; + } + + var search = new PhoneNumberSearch(text, options, metadata); + var phones = []; + + while (search.hasNext()) { + phones.push(search.next()); + } + + return phones; +} +/** + * @return ES6 `for ... of` iterator. + */ + +export function searchPhoneNumbers(text, options, metadata) { + /* istanbul ignore if */ + if (options === undefined) { + options = {}; + } + + var search = new PhoneNumberSearch(text, options, metadata); + return _defineProperty({}, Symbol.iterator, function () { + return { + next: function next() { + if (search.hasNext()) { + return { + done: false, + value: search.next() + }; + } + + return { + done: true + }; + } + }; + }); +} +/** + * Extracts a parseable phone number including any opening brackets, etc. + * @param {string} text - Input. + * @return {object} `{ ?number, ?startsAt, ?endsAt }`. + */ + +export var PhoneNumberSearch = /*#__PURE__*/function () { + function PhoneNumberSearch(text, options, metadata) { + _classCallCheck(this, PhoneNumberSearch); + + this.text = text; // If assigning the `{}` default value is moved to the arguments above, + // code coverage would decrease for some weird reason. + + this.options = options || {}; + this.metadata = metadata; // Iteration tristate. + + this.state = 'NOT_READY'; + this.regexp = new RegExp(VALID_PHONE_NUMBER_WITH_EXTENSION, 'ig'); + } + + _createClass(PhoneNumberSearch, [{ + key: "find", + value: function find() { + var matches = this.regexp.exec(this.text); + + if (!matches) { + return; + } + + var number = matches[0]; + var startsAt = matches.index; + number = number.replace(WHITESPACE_IN_THE_BEGINNING_PATTERN, ''); + startsAt += matches[0].length - number.length; // Fixes not parsing numbers with whitespace in the end. + // Also fixes not parsing numbers with opening parentheses in the end. + // https://github.com/catamphetamine/libphonenumber-js/issues/252 + + number = number.replace(PUNCTUATION_IN_THE_END_PATTERN, ''); + number = parsePreCandidate(number); + var result = this.parseCandidate(number, startsAt); + + if (result) { + return result; + } // Tail recursion. + // Try the next one if this one is not a valid phone number. + + + return this.find(); + } + }, { + key: "parseCandidate", + value: function parseCandidate(number, startsAt) { + if (!isValidPreCandidate(number, startsAt, this.text)) { + return; + } // Don't parse phone numbers which are non-phone numbers + // due to being part of something else (e.g. a UUID). + // https://github.com/catamphetamine/libphonenumber-js/issues/213 + // Copy-pasted from Google's `PhoneNumberMatcher.js` (`.parseAndValidate()`). + + + if (!isValidCandidate(number, startsAt, this.text, this.options.extended ? 'POSSIBLE' : 'VALID')) { + return; + } // // Prepend any opening brackets left behind by the + // // `PHONE_NUMBER_START_PATTERN` regexp. + // const text_before_number = text.slice(this.searching_from, startsAt) + // const full_number_starts_at = text_before_number.search(BEFORE_NUMBER_DIGITS_PUNCTUATION) + // if (full_number_starts_at >= 0) + // { + // number = text_before_number.slice(full_number_starts_at) + number + // startsAt = full_number_starts_at + // } + // + // this.searching_from = matches.lastIndex + + + var result = parse(number, this.options, this.metadata); + + if (!result.phone) { + return; + } + + result.startsAt = startsAt; + result.endsAt = startsAt + number.length; + return result; + } + }, { + key: "hasNext", + value: function hasNext() { + if (this.state === 'NOT_READY') { + this.last_match = this.find(); + + if (this.last_match) { + this.state = 'READY'; + } else { + this.state = 'DONE'; + } + } + + return this.state === 'READY'; + } + }, { + key: "next", + value: function next() { + // Check the state and find the next match as a side-effect if necessary. + if (!this.hasNext()) { + throw new Error('No next element'); + } // Don't retain that memory any longer than necessary. + + + var result = this.last_match; + this.last_match = null; + this.state = 'NOT_READY'; + return result; + } + }]); + + return PhoneNumberSearch; +}(); +//# sourceMappingURL=findPhoneNumbers_.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbers_.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbers_.js.map new file mode 100644 index 00000000..3f1056ce --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/findPhoneNumbers_.js.map @@ -0,0 +1 @@ +{"version":3,"file":"findPhoneNumbers_.js","names":["PLUS_CHARS","VALID_PUNCTUATION","VALID_DIGITS","WHITESPACE","parse","VALID_PHONE_NUMBER_WITH_EXTENSION","createExtensionPattern","parsePreCandidate","isValidPreCandidate","isValidCandidate","EXTN_PATTERNS_FOR_PARSING","WHITESPACE_IN_THE_BEGINNING_PATTERN","RegExp","PUNCTUATION_IN_THE_END_PATTERN","VALID_PRECEDING_CHARACTER_PATTERN","findPhoneNumbers","text","options","metadata","undefined","search","PhoneNumberSearch","phones","hasNext","push","next","searchPhoneNumbers","Symbol","iterator","done","value","state","regexp","matches","exec","number","startsAt","index","replace","length","result","parseCandidate","find","extended","phone","endsAt","last_match","Error"],"sources":["../source/findPhoneNumbers_.js"],"sourcesContent":["// This is a legacy function.\r\n// Use `findNumbers()` instead.\r\n\r\nimport {\r\n\tPLUS_CHARS,\r\n\tVALID_PUNCTUATION,\r\n\tVALID_DIGITS,\r\n\tWHITESPACE\r\n} from './constants.js'\r\n\r\nimport parse from './parse_.js'\r\nimport { VALID_PHONE_NUMBER_WITH_EXTENSION } from './helpers/isViablePhoneNumber.js'\r\nimport createExtensionPattern from './helpers/extension/createExtensionPattern.js'\r\n\r\nimport parsePreCandidate from './findNumbers/parsePreCandidate.js'\r\nimport isValidPreCandidate from './findNumbers/isValidPreCandidate.js'\r\nimport isValidCandidate from './findNumbers/isValidCandidate.js'\r\n\r\n/**\r\n * Regexp of all possible ways to write extensions, for use when parsing. This\r\n * will be run as a case-insensitive regexp match. Wide character versions are\r\n * also provided after each ASCII version. There are three regular expressions\r\n * here. The first covers RFC 3966 format, where the extension is added using\r\n * ';ext='. The second more generic one starts with optional white space and\r\n * ends with an optional full stop (.), followed by zero or more spaces/tabs\r\n * /commas and then the numbers themselves. The other one covers the special\r\n * case of American numbers where the extension is written with a hash at the\r\n * end, such as '- 503#'. Note that the only capturing groups should be around\r\n * the digits that you want to capture as part of the extension, or else parsing\r\n * will fail! We allow two options for representing the accented o - the\r\n * character itself, and one in the unicode decomposed form with the combining\r\n * acute accent.\r\n */\r\nexport const EXTN_PATTERNS_FOR_PARSING = createExtensionPattern('parsing')\r\n\r\nconst WHITESPACE_IN_THE_BEGINNING_PATTERN = new RegExp('^[' + WHITESPACE + ']+')\r\nconst PUNCTUATION_IN_THE_END_PATTERN = new RegExp('[' + VALID_PUNCTUATION + ']+$')\r\n\r\n// // Regular expression for getting opening brackets for a valid number\r\n// // found using `PHONE_NUMBER_START_PATTERN` for prepending those brackets to the number.\r\n// const BEFORE_NUMBER_DIGITS_PUNCTUATION = new RegExp('[' + OPENING_BRACKETS + ']+' + '[' + WHITESPACE + ']*' + '$')\r\n\r\nconst VALID_PRECEDING_CHARACTER_PATTERN = /[^a-zA-Z0-9]/\r\n\r\nexport default function findPhoneNumbers(text, options, metadata) {\r\n\t/* istanbul ignore if */\r\n\tif (options === undefined) {\r\n\t\toptions = {}\r\n\t}\r\n\tconst search = new PhoneNumberSearch(text, options, metadata)\r\n\tconst phones = []\r\n\twhile (search.hasNext()) {\r\n\t\tphones.push(search.next())\r\n\t}\r\n\treturn phones\r\n}\r\n\r\n/**\r\n * @return ES6 `for ... of` iterator.\r\n */\r\nexport function searchPhoneNumbers(text, options, metadata) {\r\n\t/* istanbul ignore if */\r\n\tif (options === undefined) {\r\n\t\toptions = {}\r\n\t}\r\n\tconst search = new PhoneNumberSearch(text, options, metadata)\r\n\treturn {\r\n\t\t[Symbol.iterator]() {\r\n\t\t\treturn {\r\n\t \t\tnext: () => {\r\n\t \t\t\tif (search.hasNext()) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tdone: false,\r\n\t\t\t\t\t\t\tvalue: search.next()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tdone: true\r\n\t\t\t\t\t}\r\n\t \t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Extracts a parseable phone number including any opening brackets, etc.\r\n * @param {string} text - Input.\r\n * @return {object} `{ ?number, ?startsAt, ?endsAt }`.\r\n */\r\nexport class PhoneNumberSearch {\r\n\tconstructor(text, options, metadata) {\r\n\t\tthis.text = text\r\n\t\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t\t// code coverage would decrease for some weird reason.\r\n\t\tthis.options = options || {}\r\n\t\tthis.metadata = metadata\r\n\r\n\t\t// Iteration tristate.\r\n\t\tthis.state = 'NOT_READY'\r\n\r\n\t\tthis.regexp = new RegExp(VALID_PHONE_NUMBER_WITH_EXTENSION, 'ig')\r\n\t}\r\n\r\n\tfind() {\r\n\t\tconst matches = this.regexp.exec(this.text)\r\n\t\tif (!matches) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tlet number = matches[0]\r\n\t\tlet startsAt = matches.index\r\n\r\n\t\tnumber = number.replace(WHITESPACE_IN_THE_BEGINNING_PATTERN, '')\r\n\t\tstartsAt += matches[0].length - number.length\r\n\t\t// Fixes not parsing numbers with whitespace in the end.\r\n\t\t// Also fixes not parsing numbers with opening parentheses in the end.\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/252\r\n\t\tnumber = number.replace(PUNCTUATION_IN_THE_END_PATTERN, '')\r\n\r\n\t\tnumber = parsePreCandidate(number)\r\n\r\n\t\tconst result = this.parseCandidate(number, startsAt)\r\n\t\tif (result) {\r\n\t\t\treturn result\r\n\t\t}\r\n\r\n\t\t// Tail recursion.\r\n\t\t// Try the next one if this one is not a valid phone number.\r\n\t\treturn this.find()\r\n\t}\r\n\r\n\tparseCandidate(number, startsAt) {\r\n\t\tif (!isValidPreCandidate(number, startsAt, this.text)) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// Don't parse phone numbers which are non-phone numbers\r\n\t\t// due to being part of something else (e.g. a UUID).\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/213\r\n\t\t// Copy-pasted from Google's `PhoneNumberMatcher.js` (`.parseAndValidate()`).\r\n\t\tif (!isValidCandidate(number, startsAt, this.text, this.options.extended ? 'POSSIBLE' : 'VALID')) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// // Prepend any opening brackets left behind by the\r\n\t\t// // `PHONE_NUMBER_START_PATTERN` regexp.\r\n\t\t// const text_before_number = text.slice(this.searching_from, startsAt)\r\n\t\t// const full_number_starts_at = text_before_number.search(BEFORE_NUMBER_DIGITS_PUNCTUATION)\r\n\t\t// if (full_number_starts_at >= 0)\r\n\t\t// {\r\n\t\t// \tnumber = text_before_number.slice(full_number_starts_at) + number\r\n\t\t// \tstartsAt = full_number_starts_at\r\n\t\t// }\r\n\t\t//\r\n\t\t// this.searching_from = matches.lastIndex\r\n\r\n\t\tconst result = parse(number, this.options, this.metadata)\r\n\t\tif (!result.phone) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tresult.startsAt = startsAt\r\n\t\tresult.endsAt = startsAt + number.length\r\n\t\treturn result\r\n\t}\r\n\r\n\thasNext() {\r\n\t\tif (this.state === 'NOT_READY') {\r\n\t\t\tthis.last_match = this.find()\r\n\t\t\tif (this.last_match) {\r\n\t\t\t\tthis.state = 'READY'\r\n\t\t\t} else {\r\n\t\t\t\tthis.state = 'DONE'\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.state === 'READY'\r\n\t}\r\n\r\n\tnext() {\r\n\t\t// Check the state and find the next match as a side-effect if necessary.\r\n\t\tif (!this.hasNext()) {\r\n\t\t\tthrow new Error('No next element')\r\n\t\t}\r\n\t\t// Don't retain that memory any longer than necessary.\r\n\t\tconst result = this.last_match\r\n\t\tthis.last_match = null\r\n\t\tthis.state = 'NOT_READY'\r\n\t\treturn result\r\n\t}\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/format.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/format.js new file mode 100644 index 00000000..6bcf0ca5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/format.js @@ -0,0 +1,116 @@ +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +import _formatNumber from './format_.js'; +import parse from './parse_.js'; +export default function formatNumber() { + var _normalizeArguments = normalizeArguments(arguments), + input = _normalizeArguments.input, + format = _normalizeArguments.format, + options = _normalizeArguments.options, + metadata = _normalizeArguments.metadata; + + return _formatNumber(input, format, options, metadata); +} // Sort out arguments + +function normalizeArguments(args) { + var _Array$prototype$slic = Array.prototype.slice.call(args), + _Array$prototype$slic2 = _slicedToArray(_Array$prototype$slic, 5), + arg_1 = _Array$prototype$slic2[0], + arg_2 = _Array$prototype$slic2[1], + arg_3 = _Array$prototype$slic2[2], + arg_4 = _Array$prototype$slic2[3], + arg_5 = _Array$prototype$slic2[4]; + + var input; + var format; + var options; + var metadata; // Sort out arguments. + // If the phone number is passed as a string. + // `format('8005553535', ...)`. + + if (typeof arg_1 === 'string') { + // If country code is supplied. + // `format('8005553535', 'RU', 'NATIONAL', [options], metadata)`. + if (typeof arg_3 === 'string') { + format = arg_3; + + if (arg_5) { + options = arg_4; + metadata = arg_5; + } else { + metadata = arg_4; + } + + input = parse(arg_1, { + defaultCountry: arg_2, + extended: true + }, metadata); + } // Just an international phone number is supplied + // `format('+78005553535', 'NATIONAL', [options], metadata)`. + else { + if (typeof arg_2 !== 'string') { + throw new Error('`format` argument not passed to `formatNumber(number, format)`'); + } + + format = arg_2; + + if (arg_4) { + options = arg_3; + metadata = arg_4; + } else { + metadata = arg_3; + } + + input = parse(arg_1, { + extended: true + }, metadata); + } + } // If the phone number is passed as a parsed number object. + // `format({ phone: '8005553535', country: 'RU' }, 'NATIONAL', [options], metadata)`. + else if (is_object(arg_1)) { + input = arg_1; + format = arg_2; + + if (arg_4) { + options = arg_3; + metadata = arg_4; + } else { + metadata = arg_3; + } + } else throw new TypeError('A phone number must either be a string or an object of shape { phone, [country] }.'); // Legacy lowercase formats. + + + if (format === 'International') { + format = 'INTERNATIONAL'; + } else if (format === 'National') { + format = 'NATIONAL'; + } + + return { + input: input, + format: format, + options: options, + metadata: metadata + }; +} // Babel transforms `typeof` into some "branches" +// so istanbul will show this as "branch not covered". + +/* istanbul ignore next */ + + +var is_object = function is_object(_) { + return _typeof(_) === 'object'; +}; +//# sourceMappingURL=format.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/format.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/format.js.map new file mode 100644 index 00000000..edec855a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/format.js.map @@ -0,0 +1 @@ +{"version":3,"file":"format.js","names":["_formatNumber","parse","formatNumber","normalizeArguments","arguments","input","format","options","metadata","args","Array","prototype","slice","call","arg_1","arg_2","arg_3","arg_4","arg_5","defaultCountry","extended","Error","is_object","TypeError","_"],"sources":["../source/format.js"],"sourcesContent":["import _formatNumber from './format_.js'\r\nimport parse from './parse_.js'\r\n\r\nexport default function formatNumber()\r\n{\r\n\tconst\r\n\t{\r\n\t\tinput,\r\n\t\tformat,\r\n\t\toptions,\r\n\t\tmetadata\r\n\t}\r\n\t= normalizeArguments(arguments)\r\n\r\n\treturn _formatNumber(input, format, options, metadata)\r\n}\r\n\r\n// Sort out arguments\r\nfunction normalizeArguments(args)\r\n{\r\n\tconst [arg_1, arg_2, arg_3, arg_4, arg_5] = Array.prototype.slice.call(args)\r\n\r\n\tlet input\r\n\tlet format\r\n\tlet options\r\n\tlet metadata\r\n\r\n\t// Sort out arguments.\r\n\r\n\t// If the phone number is passed as a string.\r\n\t// `format('8005553535', ...)`.\r\n\tif (typeof arg_1 === 'string')\r\n\t{\r\n\t\t// If country code is supplied.\r\n\t\t// `format('8005553535', 'RU', 'NATIONAL', [options], metadata)`.\r\n\t\tif (typeof arg_3 === 'string')\r\n\t\t{\r\n\t\t\tformat = arg_3\r\n\r\n\t\t\tif (arg_5)\r\n\t\t\t{\r\n\t\t\t\toptions = arg_4\r\n\t\t\t\tmetadata = arg_5\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tmetadata = arg_4\r\n\t\t\t}\r\n\r\n\t\t\tinput = parse(arg_1, { defaultCountry: arg_2, extended: true }, metadata)\r\n\t\t}\r\n\t\t// Just an international phone number is supplied\r\n\t\t// `format('+78005553535', 'NATIONAL', [options], metadata)`.\r\n\t\telse\r\n\t\t{\r\n\t\t\tif (typeof arg_2 !== 'string')\r\n\t\t\t{\r\n\t\t\t\tthrow new Error('`format` argument not passed to `formatNumber(number, format)`')\r\n\t\t\t}\r\n\r\n\t\t\tformat = arg_2\r\n\r\n\t\t\tif (arg_4)\r\n\t\t\t{\r\n\t\t\t\toptions = arg_3\r\n\t\t\t\tmetadata = arg_4\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tmetadata = arg_3\r\n\t\t\t}\r\n\r\n\t\t\tinput = parse(arg_1, { extended: true }, metadata)\r\n\t\t}\r\n\t}\r\n\t// If the phone number is passed as a parsed number object.\r\n\t// `format({ phone: '8005553535', country: 'RU' }, 'NATIONAL', [options], metadata)`.\r\n\telse if (is_object(arg_1))\r\n\t{\r\n\t\tinput = arg_1\r\n\t\tformat = arg_2\r\n\r\n\t\tif (arg_4)\r\n\t\t{\r\n\t\t\toptions = arg_3\r\n\t\t\tmetadata = arg_4\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tmetadata = arg_3\r\n\t\t}\r\n\t}\r\n\telse throw new TypeError('A phone number must either be a string or an object of shape { phone, [country] }.')\r\n\r\n\t// Legacy lowercase formats.\r\n\tif (format === 'International') {\r\n\t\tformat = 'INTERNATIONAL'\r\n\t} else if (format === 'National') {\r\n\t\tformat = 'NATIONAL'\r\n\t}\r\n\r\n\treturn {\r\n\t\tinput,\r\n\t\tformat,\r\n\t\toptions,\r\n\t\tmetadata\r\n\t}\r\n}\r\n\r\n// Babel transforms `typeof` into some \"branches\"\r\n// so istanbul will show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst is_object = _ => typeof _ === 'object'"],"mappings":";;;;;;;;;;;;;;AAAA,OAAOA,aAAP,MAA0B,cAA1B;AACA,OAAOC,KAAP,MAAkB,aAAlB;AAEA,eAAe,SAASC,YAAT,GACf;EACC,0BAOEC,kBAAkB,CAACC,SAAD,CAPpB;EAAA,IAECC,KAFD,uBAECA,KAFD;EAAA,IAGCC,MAHD,uBAGCA,MAHD;EAAA,IAICC,OAJD,uBAICA,OAJD;EAAA,IAKCC,QALD,uBAKCA,QALD;;EASA,OAAOR,aAAa,CAACK,KAAD,EAAQC,MAAR,EAAgBC,OAAhB,EAAyBC,QAAzB,CAApB;AACA,C,CAED;;AACA,SAASL,kBAAT,CAA4BM,IAA5B,EACA;EACC,4BAA4CC,KAAK,CAACC,SAAN,CAAgBC,KAAhB,CAAsBC,IAAtB,CAA2BJ,IAA3B,CAA5C;EAAA;EAAA,IAAOK,KAAP;EAAA,IAAcC,KAAd;EAAA,IAAqBC,KAArB;EAAA,IAA4BC,KAA5B;EAAA,IAAmCC,KAAnC;;EAEA,IAAIb,KAAJ;EACA,IAAIC,MAAJ;EACA,IAAIC,OAAJ;EACA,IAAIC,QAAJ,CAND,CAQC;EAEA;EACA;;EACA,IAAI,OAAOM,KAAP,KAAiB,QAArB,EACA;IACC;IACA;IACA,IAAI,OAAOE,KAAP,KAAiB,QAArB,EACA;MACCV,MAAM,GAAGU,KAAT;;MAEA,IAAIE,KAAJ,EACA;QACCX,OAAO,GAAIU,KAAX;QACAT,QAAQ,GAAGU,KAAX;MACA,CAJD,MAMA;QACCV,QAAQ,GAAGS,KAAX;MACA;;MAEDZ,KAAK,GAAGJ,KAAK,CAACa,KAAD,EAAQ;QAAEK,cAAc,EAAEJ,KAAlB;QAAyBK,QAAQ,EAAE;MAAnC,CAAR,EAAmDZ,QAAnD,CAAb;IACA,CAfD,CAgBA;IACA;IAjBA,KAmBA;MACC,IAAI,OAAOO,KAAP,KAAiB,QAArB,EACA;QACC,MAAM,IAAIM,KAAJ,CAAU,gEAAV,CAAN;MACA;;MAEDf,MAAM,GAAGS,KAAT;;MAEA,IAAIE,KAAJ,EACA;QACCV,OAAO,GAAIS,KAAX;QACAR,QAAQ,GAAGS,KAAX;MACA,CAJD,MAMA;QACCT,QAAQ,GAAGQ,KAAX;MACA;;MAEDX,KAAK,GAAGJ,KAAK,CAACa,KAAD,EAAQ;QAAEM,QAAQ,EAAE;MAAZ,CAAR,EAA4BZ,QAA5B,CAAb;IACA;EACD,CA3CD,CA4CA;EACA;EA7CA,KA8CK,IAAIc,SAAS,CAACR,KAAD,CAAb,EACL;IACCT,KAAK,GAAIS,KAAT;IACAR,MAAM,GAAGS,KAAT;;IAEA,IAAIE,KAAJ,EACA;MACCV,OAAO,GAAIS,KAAX;MACAR,QAAQ,GAAGS,KAAX;IACA,CAJD,MAMA;MACCT,QAAQ,GAAGQ,KAAX;IACA;EACD,CAdI,MAeA,MAAM,IAAIO,SAAJ,CAAc,oFAAd,CAAN,CAzEN,CA2EC;;;EACA,IAAIjB,MAAM,KAAK,eAAf,EAAgC;IAC/BA,MAAM,GAAG,eAAT;EACA,CAFD,MAEO,IAAIA,MAAM,KAAK,UAAf,EAA2B;IACjCA,MAAM,GAAG,UAAT;EACA;;EAED,OAAO;IACND,KAAK,EAALA,KADM;IAENC,MAAM,EAANA,MAFM;IAGNC,OAAO,EAAPA,OAHM;IAINC,QAAQ,EAARA;EAJM,CAAP;AAMA,C,CAED;AACA;;AACA;;;AACA,IAAMc,SAAS,GAAG,SAAZA,SAAY,CAAAE,CAAC;EAAA,OAAI,QAAOA,CAAP,MAAa,QAAjB;AAAA,CAAnB"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/format.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/format.test.js new file mode 100644 index 00000000..d8ee0004 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/format.test.js @@ -0,0 +1,279 @@ +import metadata from '../metadata.min.json' assert { type: 'json' }; +import _formatNumber from './format.js'; + +function formatNumber() { + for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) { + parameters[_key] = arguments[_key]; + } + + parameters.push(metadata); + return _formatNumber.apply(this, parameters); +} + +describe('format', function () { + it('should work with the first argument being a E.164 number', function () { + formatNumber('+12133734253', 'NATIONAL').should.equal('(213) 373-4253'); + formatNumber('+12133734253', 'INTERNATIONAL').should.equal('+1 213 373 4253'); // Invalid number. + + formatNumber('+12111111111', 'NATIONAL').should.equal('(211) 111-1111'); // Formatting invalid E.164 numbers. + + formatNumber('+11111', 'INTERNATIONAL').should.equal('+1 1111'); + formatNumber('+11111', 'NATIONAL').should.equal('1111'); + }); + it('should work with the first object argument expanded', function () { + formatNumber('2133734253', 'US', 'NATIONAL').should.equal('(213) 373-4253'); + formatNumber('2133734253', 'US', 'INTERNATIONAL').should.equal('+1 213 373 4253'); + }); + it('should support legacy "National" / "International" formats', function () { + formatNumber('2133734253', 'US', 'National').should.equal('(213) 373-4253'); + formatNumber('2133734253', 'US', 'International').should.equal('+1 213 373 4253'); + }); + it('should format using formats with no leading digits (`format.leadingDigitsPatterns().length === 0`)', function () { + formatNumber({ + phone: '12345678901', + countryCallingCode: 888 + }, 'INTERNATIONAL').should.equal('+888 123 456 78901'); + }); + it('should sort out the arguments', function () { + var options = { + formatExtension: function formatExtension(number, extension) { + return "".concat(number, " \u0434\u043E\u0431. ").concat(extension); + } + }; + formatNumber({ + phone: '8005553535', + country: 'RU', + ext: '123' + }, 'NATIONAL', options).should.equal('8 (800) 555-35-35 доб. 123'); // Parse number from string. + + formatNumber('+78005553535', 'NATIONAL', options).should.equal('8 (800) 555-35-35'); + formatNumber('8005553535', 'RU', 'NATIONAL', options).should.equal('8 (800) 555-35-35'); + }); + it('should format with national prefix when specifically instructed', function () { + // With national prefix. + formatNumber('88005553535', 'RU', 'NATIONAL').should.equal('8 (800) 555-35-35'); // Without national prefix via an explicitly set option. + + formatNumber('88005553535', 'RU', 'NATIONAL', { + nationalPrefix: false + }).should.equal('800 555-35-35'); + }); + it('should format valid phone numbers', function () { + // Switzerland + formatNumber({ + country: 'CH', + phone: '446681800' + }, 'INTERNATIONAL').should.equal('+41 44 668 18 00'); + formatNumber({ + country: 'CH', + phone: '446681800' + }, 'E.164').should.equal('+41446681800'); + formatNumber({ + country: 'CH', + phone: '446681800' + }, 'RFC3966').should.equal('tel:+41446681800'); + formatNumber({ + country: 'CH', + phone: '446681800' + }, 'NATIONAL').should.equal('044 668 18 00'); // France + + formatNumber({ + country: 'FR', + phone: '169454850' + }, 'NATIONAL').should.equal('01 69 45 48 50'); // Kazakhstan + + formatNumber('+7 702 211 1111', 'NATIONAL').should.deep.equal('8 (702) 211 1111'); + }); + it('should format national numbers with national prefix even if it\'s optional', function () { + // Russia + formatNumber({ + country: 'RU', + phone: '9991234567' + }, 'NATIONAL').should.equal('8 (999) 123-45-67'); + }); + it('should work in edge cases', function () { + var thrower; // No phone number + + formatNumber('', 'RU', 'INTERNATIONAL').should.equal(''); + formatNumber('', 'RU', 'NATIONAL').should.equal(''); + formatNumber({ + country: 'RU', + phone: '' + }, 'INTERNATIONAL').should.equal('+7'); + formatNumber({ + country: 'RU', + phone: '' + }, 'NATIONAL').should.equal(''); // No suitable format + + formatNumber('+121337342530', 'US', 'NATIONAL').should.equal('21337342530'); // No suitable format (leading digits mismatch) + + formatNumber('28199999', 'AD', 'NATIONAL').should.equal('28199999'); // Numerical `value` + + thrower = function thrower() { + return formatNumber(89150000000, 'RU', 'NATIONAL'); + }; + + thrower.should["throw"]('A phone number must either be a string or an object of shape { phone, [country] }.'); // No metadata for country + + expect(function () { + return formatNumber('+121337342530', 'USA', 'NATIONAL'); + }).to["throw"]('Unknown country'); + expect(function () { + return formatNumber('21337342530', 'USA', 'NATIONAL'); + }).to["throw"]('Unknown country'); // No format type + + thrower = function thrower() { + return formatNumber('+123'); + }; + + thrower.should["throw"]('`format` argument not passed'); // Unknown format type + + thrower = function thrower() { + return formatNumber('123', 'US', 'Gay'); + }; + + thrower.should["throw"]('Unknown "format" argument'); // No metadata + + thrower = function thrower() { + return _formatNumber('123', 'US', 'E.164'); + }; + + thrower.should["throw"]('`metadata`'); // No formats + + formatNumber('012345', 'AC', 'NATIONAL').should.equal('012345'); // No `fromCountry` for `IDD` format. + + expect(formatNumber('+78005553535', 'IDD')).to.be.undefined; // `fromCountry` has no default IDD prefix. + + expect(formatNumber('+78005553535', 'IDD', { + fromCountry: 'BO' + })).to.be.undefined; // No such country. + + expect(function () { + return formatNumber({ + phone: '123', + country: 'USA' + }, 'NATIONAL'); + }).to["throw"]('Unknown country'); + }); + it('should format phone number extensions', function () { + // National + formatNumber({ + country: 'US', + phone: '2133734253', + ext: '123' + }, 'NATIONAL').should.equal('(213) 373-4253 ext. 123'); // International + + formatNumber({ + country: 'US', + phone: '2133734253', + ext: '123' + }, 'INTERNATIONAL').should.equal('+1 213 373 4253 ext. 123'); // International + + formatNumber({ + country: 'US', + phone: '2133734253', + ext: '123' + }, 'INTERNATIONAL').should.equal('+1 213 373 4253 ext. 123'); // E.164 + + formatNumber({ + country: 'US', + phone: '2133734253', + ext: '123' + }, 'E.164').should.equal('+12133734253'); // RFC3966 + + formatNumber({ + country: 'US', + phone: '2133734253', + ext: '123' + }, 'RFC3966').should.equal('tel:+12133734253;ext=123'); // Custom ext prefix. + + formatNumber({ + country: 'GB', + phone: '7912345678', + ext: '123' + }, 'INTERNATIONAL').should.equal('+44 7912 345678 x123'); + }); + it('should work with Argentina numbers', function () { + // The same mobile number is written differently + // in different formats in Argentina: + // `9` gets prepended in international format. + formatNumber({ + country: 'AR', + phone: '3435551212' + }, 'INTERNATIONAL').should.equal('+54 3435 55 1212'); + formatNumber({ + country: 'AR', + phone: '3435551212' + }, 'NATIONAL').should.equal('03435 55-1212'); + }); + it('should work with Mexico numbers', function () { + // Fixed line. + formatNumber({ + country: 'MX', + phone: '4499780001' + }, 'INTERNATIONAL').should.equal('+52 449 978 0001'); + formatNumber({ + country: 'MX', + phone: '4499780001' + }, 'NATIONAL').should.equal('449 978 0001'); // or '(449)978-0001'. + // Mobile. + // `1` is prepended before area code to mobile numbers in international format. + + formatNumber({ + country: 'MX', + phone: '3312345678' + }, 'INTERNATIONAL').should.equal('+52 33 1234 5678'); + formatNumber({ + country: 'MX', + phone: '3312345678' + }, 'NATIONAL').should.equal('33 1234 5678'); // or '045 33 1234-5678'. + }); + it('should format possible numbers', function () { + formatNumber({ + countryCallingCode: '7', + phone: '1111111111' + }, 'E.164').should.equal('+71111111111'); + formatNumber({ + countryCallingCode: '7', + phone: '1111111111' + }, 'NATIONAL').should.equal('1111111111'); + formatNumber({ + countryCallingCode: '7', + phone: '1111111111' + }, 'INTERNATIONAL').should.equal('+7 1111111111'); + }); + it('should format IDD-prefixed number', function () { + // No `fromCountry`. + expect(formatNumber('+78005553535', 'IDD')).to.be.undefined; // No default IDD prefix. + + expect(formatNumber('+78005553535', 'IDD', { + fromCountry: 'BO' + })).to.be.undefined; // Same country calling code. + + formatNumber('+12133734253', 'IDD', { + fromCountry: 'CA', + humanReadable: true + }).should.equal('1 (213) 373-4253'); + formatNumber('+78005553535', 'IDD', { + fromCountry: 'KZ', + humanReadable: true + }).should.equal('8 (800) 555-35-35'); // formatNumber('+78005553535', 'IDD', { fromCountry: 'US' }).should.equal('01178005553535') + + formatNumber('+78005553535', 'IDD', { + fromCountry: 'US', + humanReadable: true + }).should.equal('011 7 800 555 35 35'); + }); + it('should format non-geographic numbering plan phone numbers', function () { + // https://github.com/catamphetamine/libphonenumber-js/issues/323 + formatNumber('+870773111632', 'INTERNATIONAL').should.equal('+870 773 111 632'); + formatNumber('+870773111632', 'NATIONAL').should.equal('773 111 632'); + }); + it('should use the default IDD prefix when formatting a phone number', function () { + // Testing preferred international prefixes with ~ are supported. + // ("~" designates waiting on a line until proceeding with the input). + formatNumber('+390236618300', 'IDD', { + fromCountry: 'UZ' + }).should.equal('8~10 39 02 3661 8300'); + }); +}); +//# sourceMappingURL=format.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/format.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/format.test.js.map new file mode 100644 index 00000000..f90f4dc5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/format.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"format.test.js","names":["metadata","type","_formatNumber","formatNumber","parameters","push","apply","describe","it","should","equal","phone","countryCallingCode","options","formatExtension","number","extension","country","ext","nationalPrefix","deep","thrower","expect","to","be","undefined","fromCountry","humanReadable"],"sources":["../source/format.test.js"],"sourcesContent":["import metadata from '../metadata.min.json' assert { type: 'json' }\r\nimport _formatNumber from './format.js'\r\n\r\nfunction formatNumber(...parameters) {\r\n\tparameters.push(metadata)\r\n\treturn _formatNumber.apply(this, parameters)\r\n}\r\n\r\ndescribe('format', () => {\r\n\tit('should work with the first argument being a E.164 number', () => {\r\n\t\tformatNumber('+12133734253', 'NATIONAL').should.equal('(213) 373-4253')\r\n\t\tformatNumber('+12133734253', 'INTERNATIONAL').should.equal('+1 213 373 4253')\r\n\r\n\t\t// Invalid number.\r\n\t\tformatNumber('+12111111111', 'NATIONAL').should.equal('(211) 111-1111')\r\n\r\n\t\t// Formatting invalid E.164 numbers.\r\n\t\tformatNumber('+11111', 'INTERNATIONAL').should.equal('+1 1111')\r\n\t\tformatNumber('+11111', 'NATIONAL').should.equal('1111')\r\n\t})\r\n\r\n\tit('should work with the first object argument expanded', () => {\r\n\t\tformatNumber('2133734253', 'US', 'NATIONAL').should.equal('(213) 373-4253')\r\n\t\tformatNumber('2133734253', 'US', 'INTERNATIONAL').should.equal('+1 213 373 4253')\r\n\t})\r\n\r\n\tit('should support legacy \"National\" / \"International\" formats', () => {\r\n\t\tformatNumber('2133734253', 'US', 'National').should.equal('(213) 373-4253')\r\n\t\tformatNumber('2133734253', 'US', 'International').should.equal('+1 213 373 4253')\r\n\t})\r\n\r\n\tit('should format using formats with no leading digits (`format.leadingDigitsPatterns().length === 0`)', () => {\r\n\t\tformatNumber({ phone: '12345678901', countryCallingCode: 888 }, 'INTERNATIONAL').should.equal('+888 123 456 78901')\r\n\t})\r\n\r\n\tit('should sort out the arguments', () => {\r\n\t\tconst options = {\r\n\t\t\tformatExtension: (number, extension) => `${number} доб. ${extension}`\r\n\t\t}\r\n\r\n\t\tformatNumber({\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcountry : 'RU',\r\n\t\t\text : '123'\r\n\t\t},\r\n\t\t'NATIONAL', options).should.equal('8 (800) 555-35-35 доб. 123')\r\n\r\n\t\t// Parse number from string.\r\n\t\tformatNumber('+78005553535', 'NATIONAL', options).should.equal('8 (800) 555-35-35')\r\n\t\tformatNumber('8005553535', 'RU', 'NATIONAL', options).should.equal('8 (800) 555-35-35')\r\n\t})\r\n\r\n\tit('should format with national prefix when specifically instructed', () => {\r\n\t\t// With national prefix.\r\n\t\tformatNumber('88005553535', 'RU', 'NATIONAL').should.equal('8 (800) 555-35-35')\r\n\t\t// Without national prefix via an explicitly set option.\r\n\t\tformatNumber('88005553535', 'RU', 'NATIONAL', { nationalPrefix: false }).should.equal('800 555-35-35')\r\n\t})\r\n\r\n\tit('should format valid phone numbers', () => {\r\n\t\t// Switzerland\r\n\t\tformatNumber({ country: 'CH', phone: '446681800' }, 'INTERNATIONAL').should.equal('+41 44 668 18 00')\r\n\t\tformatNumber({ country: 'CH', phone: '446681800' }, 'E.164').should.equal('+41446681800')\r\n\t\tformatNumber({ country: 'CH', phone: '446681800' }, 'RFC3966').should.equal('tel:+41446681800')\r\n\t\tformatNumber({ country: 'CH', phone: '446681800' }, 'NATIONAL').should.equal('044 668 18 00')\r\n\r\n\t\t// France\r\n\t\tformatNumber({ country: 'FR', phone: '169454850' }, 'NATIONAL').should.equal('01 69 45 48 50')\r\n\r\n\t\t// Kazakhstan\r\n\t\tformatNumber('+7 702 211 1111', 'NATIONAL').should.deep.equal('8 (702) 211 1111')\r\n\t})\r\n\r\n\tit('should format national numbers with national prefix even if it\\'s optional', () => {\r\n\t\t// Russia\r\n\t\tformatNumber({ country: 'RU', phone: '9991234567' }, 'NATIONAL').should.equal('8 (999) 123-45-67')\r\n\t})\r\n\r\n\tit('should work in edge cases', () => {\r\n\t\tlet thrower\r\n\r\n\t\t// No phone number\r\n\t\tformatNumber('', 'RU', 'INTERNATIONAL').should.equal('')\r\n\t\tformatNumber('', 'RU', 'NATIONAL').should.equal('')\r\n\r\n\t\tformatNumber({ country: 'RU', phone: '' }, 'INTERNATIONAL').should.equal('+7')\r\n\t\tformatNumber({ country: 'RU', phone: '' }, 'NATIONAL').should.equal('')\r\n\r\n\t\t// No suitable format\r\n\t\tformatNumber('+121337342530', 'US', 'NATIONAL').should.equal('21337342530')\r\n\t\t// No suitable format (leading digits mismatch)\r\n\t\tformatNumber('28199999', 'AD', 'NATIONAL').should.equal('28199999')\r\n\r\n\t\t// Numerical `value`\r\n\t\tthrower = () => formatNumber(89150000000, 'RU', 'NATIONAL')\r\n\t\tthrower.should.throw('A phone number must either be a string or an object of shape { phone, [country] }.')\r\n\r\n\t\t// No metadata for country\r\n\t\texpect(() => formatNumber('+121337342530', 'USA', 'NATIONAL')).to.throw('Unknown country')\r\n\t\texpect(() => formatNumber('21337342530', 'USA', 'NATIONAL')).to.throw('Unknown country')\r\n\r\n\t\t// No format type\r\n\t\tthrower = () => formatNumber('+123')\r\n\t\tthrower.should.throw('`format` argument not passed')\r\n\r\n\t\t// Unknown format type\r\n\t\tthrower = () => formatNumber('123', 'US', 'Gay')\r\n\t\tthrower.should.throw('Unknown \"format\" argument')\r\n\r\n\t\t// No metadata\r\n\t\tthrower = () => _formatNumber('123', 'US', 'E.164')\r\n\t\tthrower.should.throw('`metadata`')\r\n\r\n\t\t// No formats\r\n\t\tformatNumber('012345', 'AC', 'NATIONAL').should.equal('012345')\r\n\r\n\t\t// No `fromCountry` for `IDD` format.\r\n\t\texpect(formatNumber('+78005553535', 'IDD')).to.be.undefined\r\n\r\n\t\t// `fromCountry` has no default IDD prefix.\r\n\t\texpect(formatNumber('+78005553535', 'IDD', { fromCountry: 'BO' })).to.be.undefined\r\n\r\n\t\t// No such country.\r\n\t\texpect(() => formatNumber({ phone: '123', country: 'USA' }, 'NATIONAL')).to.throw('Unknown country')\r\n\t})\r\n\r\n\tit('should format phone number extensions', () => {\r\n\t\t// National\r\n\t\tformatNumber({\r\n\t\t\tcountry: 'US',\r\n\t\t\tphone: '2133734253',\r\n\t\t\text: '123'\r\n\t\t},\r\n\t\t'NATIONAL').should.equal('(213) 373-4253 ext. 123')\r\n\r\n\t\t// International\r\n\t\tformatNumber({\r\n\t\t\tcountry : 'US',\r\n\t\t\tphone : '2133734253',\r\n\t\t\text : '123'\r\n\t\t},\r\n\t\t'INTERNATIONAL').should.equal('+1 213 373 4253 ext. 123')\r\n\r\n\t\t// International\r\n\t\tformatNumber({\r\n\t\t\tcountry : 'US',\r\n\t\t\tphone : '2133734253',\r\n\t\t\text : '123'\r\n\t\t},\r\n\t\t'INTERNATIONAL').should.equal('+1 213 373 4253 ext. 123')\r\n\r\n\t\t// E.164\r\n\t\tformatNumber({\r\n\t\t\tcountry : 'US',\r\n\t\t\tphone : '2133734253',\r\n\t\t\text : '123'\r\n\t\t},\r\n\t\t'E.164').should.equal('+12133734253')\r\n\r\n\t\t// RFC3966\r\n\t\tformatNumber({\r\n\t\t\tcountry : 'US',\r\n\t\t\tphone : '2133734253',\r\n\t\t\text : '123'\r\n\t\t},\r\n\t\t'RFC3966').should.equal('tel:+12133734253;ext=123')\r\n\r\n\t\t// Custom ext prefix.\r\n\t\tformatNumber({\r\n\t\t\tcountry : 'GB',\r\n\t\t\tphone : '7912345678',\r\n\t\t\text : '123'\r\n\t\t},\r\n\t\t'INTERNATIONAL').should.equal('+44 7912 345678 x123')\r\n\t})\r\n\r\n\tit('should work with Argentina numbers', () => {\r\n\t\t// The same mobile number is written differently\r\n\t\t// in different formats in Argentina:\r\n\t\t// `9` gets prepended in international format.\r\n\t\tformatNumber({ country: 'AR', phone: '3435551212' }, 'INTERNATIONAL')\r\n\t\t\t.should.equal('+54 3435 55 1212')\r\n\t\tformatNumber({ country: 'AR', phone: '3435551212' }, 'NATIONAL')\r\n\t\t\t.should.equal('03435 55-1212')\r\n\t})\r\n\r\n\tit('should work with Mexico numbers', () => {\r\n\t\t// Fixed line.\r\n\t\tformatNumber({ country: 'MX', phone: '4499780001' }, 'INTERNATIONAL')\r\n\t\t\t.should.equal('+52 449 978 0001')\r\n\t\tformatNumber({ country: 'MX', phone: '4499780001' }, 'NATIONAL')\r\n\t\t\t.should.equal('449 978 0001')\r\n\t\t\t// or '(449)978-0001'.\r\n\t\t// Mobile.\r\n\t\t// `1` is prepended before area code to mobile numbers in international format.\r\n\t\tformatNumber({ country: 'MX', phone: '3312345678' }, 'INTERNATIONAL')\r\n\t\t\t.should.equal('+52 33 1234 5678')\r\n\t\tformatNumber({ country: 'MX', phone: '3312345678' }, 'NATIONAL')\r\n\t\t\t.should.equal('33 1234 5678')\r\n\t\t\t// or '045 33 1234-5678'.\r\n\t})\r\n\r\n\tit('should format possible numbers', () => {\r\n\t\tformatNumber({ countryCallingCode: '7', phone: '1111111111' }, 'E.164')\r\n\t\t\t.should.equal('+71111111111')\r\n\r\n\t\tformatNumber({ countryCallingCode: '7', phone: '1111111111' }, 'NATIONAL')\r\n\t\t\t.should.equal('1111111111')\r\n\r\n\t\tformatNumber({ countryCallingCode: '7', phone: '1111111111' }, 'INTERNATIONAL')\r\n\t\t\t.should.equal('+7 1111111111')\r\n\t})\r\n\r\n\tit('should format IDD-prefixed number', () => {\r\n\t\t// No `fromCountry`.\r\n\t\texpect(formatNumber('+78005553535', 'IDD')).to.be.undefined\r\n\r\n\t\t// No default IDD prefix.\r\n\t\texpect(formatNumber('+78005553535', 'IDD', { fromCountry: 'BO' })).to.be.undefined\r\n\r\n\t\t// Same country calling code.\r\n\t\tformatNumber('+12133734253', 'IDD', { fromCountry: 'CA', humanReadable: true }).should.equal('1 (213) 373-4253')\r\n\t\tformatNumber('+78005553535', 'IDD', { fromCountry: 'KZ', humanReadable: true }).should.equal('8 (800) 555-35-35')\r\n\r\n\t\t// formatNumber('+78005553535', 'IDD', { fromCountry: 'US' }).should.equal('01178005553535')\r\n\t\tformatNumber('+78005553535', 'IDD', { fromCountry: 'US', humanReadable: true }).should.equal('011 7 800 555 35 35')\r\n\t})\r\n\r\n\tit('should format non-geographic numbering plan phone numbers', () => {\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/323\r\n\t\tformatNumber('+870773111632', 'INTERNATIONAL').should.equal('+870 773 111 632')\r\n\t\tformatNumber('+870773111632', 'NATIONAL').should.equal('773 111 632')\r\n\t})\r\n\r\n\tit('should use the default IDD prefix when formatting a phone number', () => {\r\n\t\t// Testing preferred international prefixes with ~ are supported.\r\n\t\t// (\"~\" designates waiting on a line until proceeding with the input).\r\n\t\tformatNumber('+390236618300', 'IDD', { fromCountry: 'UZ' }).should.equal('8~10 39 02 3661 8300')\r\n\t})\r\n})"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatIncompletePhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatIncompletePhoneNumber.js new file mode 100644 index 00000000..1e15d9c2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatIncompletePhoneNumber.js @@ -0,0 +1,19 @@ +import AsYouType from './AsYouType.js'; +/** + * Formats a (possibly incomplete) phone number. + * The phone number can be either in E.164 format + * or in a form of national number digits. + * @param {string} value - A possibly incomplete phone number. Either in E.164 format or in a form of national number digits. + * @param {string?} country - Two-letter ("ISO 3166-1 alpha-2") country code. + * @return {string} Formatted (possibly incomplete) phone number. + */ + +export default function formatIncompletePhoneNumber(value, country, metadata) { + if (!metadata) { + metadata = country; + country = undefined; + } + + return new AsYouType(country, metadata).input(value); +} +//# sourceMappingURL=formatIncompletePhoneNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatIncompletePhoneNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatIncompletePhoneNumber.js.map new file mode 100644 index 00000000..0bc7a19f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatIncompletePhoneNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"formatIncompletePhoneNumber.js","names":["AsYouType","formatIncompletePhoneNumber","value","country","metadata","undefined","input"],"sources":["../source/formatIncompletePhoneNumber.js"],"sourcesContent":["import AsYouType from './AsYouType.js'\r\n\r\n/**\r\n * Formats a (possibly incomplete) phone number.\r\n * The phone number can be either in E.164 format\r\n * or in a form of national number digits.\r\n * @param {string} value - A possibly incomplete phone number. Either in E.164 format or in a form of national number digits.\r\n * @param {string?} country - Two-letter (\"ISO 3166-1 alpha-2\") country code.\r\n * @return {string} Formatted (possibly incomplete) phone number.\r\n */\r\nexport default function formatIncompletePhoneNumber(value, country, metadata) {\r\n\tif (!metadata) {\r\n\t\tmetadata = country\r\n\t\tcountry = undefined\r\n\t}\r\n\treturn new AsYouType(country, metadata).input(value)\r\n}"],"mappings":"AAAA,OAAOA,SAAP,MAAsB,gBAAtB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,2BAAT,CAAqCC,KAArC,EAA4CC,OAA5C,EAAqDC,QAArD,EAA+D;EAC7E,IAAI,CAACA,QAAL,EAAe;IACdA,QAAQ,GAAGD,OAAX;IACAA,OAAO,GAAGE,SAAV;EACA;;EACD,OAAO,IAAIL,SAAJ,CAAcG,OAAd,EAAuBC,QAAvB,EAAiCE,KAAjC,CAAuCJ,KAAvC,CAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatIncompletePhoneNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatIncompletePhoneNumber.test.js new file mode 100644 index 00000000..8229cadb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatIncompletePhoneNumber.test.js @@ -0,0 +1,16 @@ +import formatIncompletePhoneNumber from './formatIncompletePhoneNumber.js'; +import metadata from '../metadata.min.json' assert { type: 'json' }; +describe('formatIncompletePhoneNumber', function () { + it('should format parsed input value', function () { + var result; // National input. + + formatIncompletePhoneNumber('880055535', 'RU', metadata).should.equal('8 (800) 555-35'); // International input, no country. + + formatIncompletePhoneNumber('+780055535', null, metadata).should.equal('+7 800 555 35'); // International input, no country argument. + + formatIncompletePhoneNumber('+780055535', metadata).should.equal('+7 800 555 35'); // International input, with country. + + formatIncompletePhoneNumber('+780055535', 'RU', metadata).should.equal('+7 800 555 35'); + }); +}); +//# sourceMappingURL=formatIncompletePhoneNumber.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatIncompletePhoneNumber.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatIncompletePhoneNumber.test.js.map new file mode 100644 index 00000000..260e68c4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatIncompletePhoneNumber.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"formatIncompletePhoneNumber.test.js","names":["formatIncompletePhoneNumber","metadata","type","describe","it","result","should","equal"],"sources":["../source/formatIncompletePhoneNumber.test.js"],"sourcesContent":["import formatIncompletePhoneNumber from './formatIncompletePhoneNumber.js'\r\n\r\nimport metadata from '../metadata.min.json' assert { type: 'json' }\r\n\r\ndescribe('formatIncompletePhoneNumber', () => {\r\n\tit('should format parsed input value', () => {\r\n\t\tlet result\r\n\r\n\t\t// National input.\r\n\t\tformatIncompletePhoneNumber('880055535', 'RU', metadata).should.equal('8 (800) 555-35')\r\n\r\n\t\t// International input, no country.\r\n\t\tformatIncompletePhoneNumber('+780055535', null, metadata).should.equal('+7 800 555 35')\r\n\r\n\t\t// International input, no country argument.\r\n\t\tformatIncompletePhoneNumber('+780055535', metadata).should.equal('+7 800 555 35')\r\n\r\n\t\t// International input, with country.\r\n\t\tformatIncompletePhoneNumber('+780055535', 'RU', metadata).should.equal('+7 800 555 35')\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,2BAAP,MAAwC,kCAAxC;AAEA,OAAOC,QAAP,MAAqB,sBAArB,UAAqDC,IAAI,EAAE,MAA3D;AAEAC,QAAQ,CAAC,6BAAD,EAAgC,YAAM;EAC7CC,EAAE,CAAC,kCAAD,EAAqC,YAAM;IAC5C,IAAIC,MAAJ,CAD4C,CAG5C;;IACAL,2BAA2B,CAAC,WAAD,EAAc,IAAd,EAAoBC,QAApB,CAA3B,CAAyDK,MAAzD,CAAgEC,KAAhE,CAAsE,gBAAtE,EAJ4C,CAM5C;;IACAP,2BAA2B,CAAC,YAAD,EAAe,IAAf,EAAqBC,QAArB,CAA3B,CAA0DK,MAA1D,CAAiEC,KAAjE,CAAuE,eAAvE,EAP4C,CAS5C;;IACAP,2BAA2B,CAAC,YAAD,EAAeC,QAAf,CAA3B,CAAoDK,MAApD,CAA2DC,KAA3D,CAAiE,eAAjE,EAV4C,CAY5C;;IACAP,2BAA2B,CAAC,YAAD,EAAe,IAAf,EAAqBC,QAArB,CAA3B,CAA0DK,MAA1D,CAAiEC,KAAjE,CAAuE,eAAvE;EACA,CAdC,CAAF;AAeA,CAhBO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatNumberForMobileDialing.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatNumberForMobileDialing.js new file mode 100644 index 00000000..77cd9a85 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatNumberForMobileDialing.js @@ -0,0 +1,191 @@ +// This function is copy-pasted from +// https://github.com/googlei18n/libphonenumber/blob/master/javascript/i18n/phonenumbers/phonenumberutil.js +// It hasn't been tested. +// Carriers codes aren't part of this library. +// Send a PR if you want to add them. +import Metadata from './metadata.js'; +import format from './format_.js'; +import getNumberType from './helpers/getNumberType.js'; +import checkNumberLength from './helpers/checkNumberLength.js'; +import getCountryCallingCode from './getCountryCallingCode.js'; +var REGION_CODE_FOR_NON_GEO_ENTITY = '001'; +/** + * The prefix that needs to be inserted in front of a Colombian landline number + * when dialed from a mobile phone in Colombia. + */ + +var COLOMBIA_MOBILE_TO_FIXED_LINE_PREFIX = '3'; +/** + * Returns a number formatted in such a way that it can be dialed from a mobile + * phone in a specific region. If the number cannot be reached from the region + * (e.g. some countries block toll-free numbers from being called outside of the + * country), the method returns an empty string. + * + * @param {object} number - a `parse()`d phone number to be formatted. + * @param {string} from_country - the region where the call is being placed. + * @param {boolean} with_formatting - whether the number should be returned with + * formatting symbols, such as spaces and dashes. + * @return {string} + */ + +export default function (number, from_country, with_formatting, metadata) { + metadata = new Metadata(metadata); // Validate `from_country`. + + if (!metadata.hasCountry(from_country)) { + throw new Error("Unknown country: ".concat(from_country)); + } // Not using the extension, as that part cannot normally be dialed + // together with the main number. + + + number = { + phone: number.phone, + country: number.country + }; + var number_type = getNumberType(number, undefined, metadata.metadata); + var is_valid_number = number_type === number; + var formatted_number; + + if (country === from_country) { + var is_fixed_line_or_mobile = number_type === 'FIXED_LINE' || number_type === 'MOBILE' || number_type === 'FIXED_LINE_OR_MOBILE'; // Carrier codes may be needed in some countries. We handle this here. + + if (country === 'CO' && number_type === 'FIXED_LINE') { + formatted_number = formatNationalNumberWithCarrierCode(number, COLOMBIA_MOBILE_TO_FIXED_LINE_PREFIX); + } else if (country == 'BR' && is_fixed_line_or_mobile) { + formatted_number = carrierCode ? formatNationalNumberWithPreferredCarrierCode(number) : // Brazilian fixed line and mobile numbers need to be dialed with a + // carrier code when called within Brazil. Without that, most of the + // carriers won't connect the call. Because of that, we return an + // empty string here. + ''; + } else if (getCountryCallingCode(country, metadata.metadata) === '1') { + // For NANPA countries, we output international format for numbers that + // can be dialed internationally, since that always works, except for + // numbers which might potentially be short numbers, which are always + // dialled in national format. + // Select country for `checkNumberLength()`. + metadata.country(country); + + if (can_be_internationally_dialled(number) && checkNumberLength(number.phone, metadata) !== 'TOO_SHORT') { + formatted_number = format(number, 'INTERNATIONAL', metadata.metadata); + } else { + formatted_number = format(number, 'NATIONAL', metadata.metadata); + } + } else { + // For non-geographic countries, Mexican and Chilean fixed line and + // mobile numbers, we output international format for numbers that can be + // dialed internationally, as that always works. + if ((country === REGION_CODE_FOR_NON_GEO_ENTITY || // MX fixed line and mobile numbers should always be formatted in + // international format, even when dialed within MX. For national + // format to work, a carrier code needs to be used, and the correct + // carrier code depends on if the caller and callee are from the + // same local area. It is trickier to get that to work correctly than + // using international format, which is tested to work fine on all + // carriers. + // + // CL fixed line numbers need the national prefix when dialing in the + // national format, but don't have it when used for display. The + // reverse is true for mobile numbers. As a result, we output them in + // the international format to make it work. + // + // UZ mobile and fixed-line numbers have to be formatted in + // international format or prefixed with special codes like 03, 04 + // (for fixed-line) and 05 (for mobile) for dialling successfully + // from mobile devices. As we do not have complete information on + // special codes and to be consistent with formatting across all + // phone types we return the number in international format here. + // + (country === 'MX' || country === 'CL' || country == 'UZ') && is_fixed_line_or_mobile) && can_be_internationally_dialled(number)) { + formatted_number = format(number, 'INTERNATIONAL'); + } else { + formatted_number = format(number, 'NATIONAL'); + } + } + } else if (is_valid_number && can_be_internationally_dialled(number)) { + // We assume that short numbers are not diallable from outside their region, + // so if a number is not a valid regular length phone number, we treat it as + // if it cannot be internationally dialled. + return with_formatting ? format(number, 'INTERNATIONAL', metadata.metadata) : format(number, 'E.164', metadata.metadata); + } + + if (!with_formatting) { + return diallable_chars(formatted_number); + } + + return formatted_number; +} + +function can_be_internationally_dialled(number) { + return true; +} +/** + * A map that contains characters that are essential when dialling. That means + * any of the characters in this map must not be removed from a number when + * dialling, otherwise the call will not reach the intended destination. + */ + + +var DIALLABLE_CHARACTERS = { + '0': '0', + '1': '1', + '2': '2', + '3': '3', + '4': '4', + '5': '5', + '6': '6', + '7': '7', + '8': '8', + '9': '9', + '+': '+', + '*': '*', + '#': '#' +}; + +function diallable_chars(formatted_number) { + var result = ''; + var i = 0; + + while (i < formatted_number.length) { + var character = formatted_number[i]; + + if (DIALLABLE_CHARACTERS[character]) { + result += character; + } + + i++; + } + + return result; +} + +function getPreferredDomesticCarrierCodeOrDefault() { + throw new Error('carrier codes are not part of this library'); +} + +function formatNationalNumberWithCarrierCode() { + throw new Error('carrier codes are not part of this library'); +} +/** + * Formats a phone number in national format for dialing using the carrier as + * specified in the preferred_domestic_carrier_code field of the PhoneNumber + * object passed in. If that is missing, use the {@code fallbackCarrierCode} + * passed in instead. If there is no {@code preferred_domestic_carrier_code}, + * and the {@code fallbackCarrierCode} contains an empty string, return the + * number in national format without any carrier code. + * + *

Use {@link #formatNationalNumberWithCarrierCode} instead if the carrier + * code passed in should take precedence over the number's + * {@code preferred_domestic_carrier_code} when formatting. + * + * @param {i18n.phonenumbers.PhoneNumber} number the phone number to be + * formatted. + * @param {string} fallbackCarrierCode the carrier selection code to be used, if + * none is found in the phone number itself. + * @return {string} the formatted phone number in national format for dialing + * using the number's preferred_domestic_carrier_code, or the + * {@code fallbackCarrierCode} passed in if none is found. + */ + + +function formatNationalNumberWithPreferredCarrierCode(number) { + return formatNationalNumberWithCarrierCode(number, carrierCode); +} +//# sourceMappingURL=formatNumberForMobileDialing.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatNumberForMobileDialing.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatNumberForMobileDialing.js.map new file mode 100644 index 00000000..2004baf5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatNumberForMobileDialing.js.map @@ -0,0 +1 @@ +{"version":3,"file":"formatNumberForMobileDialing.js","names":["Metadata","format","getNumberType","checkNumberLength","getCountryCallingCode","REGION_CODE_FOR_NON_GEO_ENTITY","COLOMBIA_MOBILE_TO_FIXED_LINE_PREFIX","number","from_country","with_formatting","metadata","hasCountry","Error","phone","country","number_type","undefined","is_valid_number","formatted_number","is_fixed_line_or_mobile","formatNationalNumberWithCarrierCode","carrierCode","formatNationalNumberWithPreferredCarrierCode","can_be_internationally_dialled","diallable_chars","DIALLABLE_CHARACTERS","result","i","length","character","getPreferredDomesticCarrierCodeOrDefault"],"sources":["../source/formatNumberForMobileDialing.js"],"sourcesContent":["// This function is copy-pasted from\r\n// https://github.com/googlei18n/libphonenumber/blob/master/javascript/i18n/phonenumbers/phonenumberutil.js\r\n// It hasn't been tested.\r\n// Carriers codes aren't part of this library.\r\n// Send a PR if you want to add them.\r\n\r\nimport Metadata from './metadata.js'\r\nimport format from './format_.js'\r\nimport getNumberType from './helpers/getNumberType.js'\r\nimport checkNumberLength from './helpers/checkNumberLength.js'\r\nimport getCountryCallingCode from './getCountryCallingCode.js'\r\n\r\nconst REGION_CODE_FOR_NON_GEO_ENTITY = '001'\r\n\r\n/**\r\n * The prefix that needs to be inserted in front of a Colombian landline number\r\n * when dialed from a mobile phone in Colombia.\r\n */\r\nconst COLOMBIA_MOBILE_TO_FIXED_LINE_PREFIX = '3'\r\n\r\n/**\r\n * Returns a number formatted in such a way that it can be dialed from a mobile\r\n * phone in a specific region. If the number cannot be reached from the region\r\n * (e.g. some countries block toll-free numbers from being called outside of the\r\n * country), the method returns an empty string.\r\n *\r\n * @param {object} number - a `parse()`d phone number to be formatted.\r\n * @param {string} from_country - the region where the call is being placed.\r\n * @param {boolean} with_formatting - whether the number should be returned with\r\n * formatting symbols, such as spaces and dashes.\r\n * @return {string}\r\n */\r\nexport default function(number, from_country, with_formatting, metadata) {\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\t// Validate `from_country`.\r\n\tif (!metadata.hasCountry(from_country)) {\r\n\t\tthrow new Error(`Unknown country: ${from_country}`)\r\n\t}\r\n\r\n\t// Not using the extension, as that part cannot normally be dialed\r\n\t// together with the main number.\r\n\tnumber = {\r\n\t\tphone: number.phone,\r\n\t\tcountry: number.country\r\n\t}\r\n\r\n\tconst number_type = getNumberType(number, undefined, metadata.metadata)\r\n\tconst is_valid_number = number_type === number\r\n\r\n\tlet formatted_number\r\n\r\n\tif (country === from_country) {\r\n\t\tconst is_fixed_line_or_mobile =\r\n\t\t\tnumber_type === 'FIXED_LINE' ||\r\n\t\t\tnumber_type === 'MOBILE' ||\r\n\t\t\tnumber_type === 'FIXED_LINE_OR_MOBILE'\r\n\r\n\t\t// Carrier codes may be needed in some countries. We handle this here.\r\n\t\tif (country === 'CO' && number_type === 'FIXED_LINE') {\r\n\t\t\tformatted_number = formatNationalNumberWithCarrierCode(\r\n\t\t\t\tnumber,\r\n\t\t\t\tCOLOMBIA_MOBILE_TO_FIXED_LINE_PREFIX\r\n\t\t\t)\r\n\t\t}\r\n\t\telse if (country == 'BR' && is_fixed_line_or_mobile) {\r\n\t\t\tformatted_number =\r\n\t\t\t\tcarrierCode ?\r\n\t\t\t\tformatNationalNumberWithPreferredCarrierCode(number) :\r\n\t\t\t\t// Brazilian fixed line and mobile numbers need to be dialed with a\r\n\t\t\t\t// carrier code when called within Brazil. Without that, most of the\r\n\t\t\t\t// carriers won't connect the call. Because of that, we return an\r\n\t\t\t\t// empty string here.\r\n\t\t\t\t''\r\n\t\t} else if (getCountryCallingCode(country, metadata.metadata) === '1') {\r\n\t\t\t// For NANPA countries, we output international format for numbers that\r\n\t\t\t// can be dialed internationally, since that always works, except for\r\n\t\t\t// numbers which might potentially be short numbers, which are always\r\n\t\t\t// dialled in national format.\r\n\r\n\t\t\t// Select country for `checkNumberLength()`.\r\n\t\t\tmetadata.country(country)\r\n\r\n\t\t\tif (can_be_internationally_dialled(number) &&\r\n\t\t\t\tcheckNumberLength(number.phone, metadata) !== 'TOO_SHORT') {\r\n\t\t\t\tformatted_number = format(number, 'INTERNATIONAL', metadata.metadata)\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tformatted_number = format(number, 'NATIONAL', metadata.metadata)\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// For non-geographic countries, Mexican and Chilean fixed line and\r\n\t\t\t// mobile numbers, we output international format for numbers that can be\r\n\t\t\t// dialed internationally, as that always works.\r\n\t\t\tif (\r\n\t\t\t\t(\r\n\t\t\t\t\tcountry === REGION_CODE_FOR_NON_GEO_ENTITY\r\n\t\t\t\t\t||\r\n\t\t\t\t\t// MX fixed line and mobile numbers should always be formatted in\r\n\t\t\t\t\t// international format, even when dialed within MX. For national\r\n\t\t\t\t\t// format to work, a carrier code needs to be used, and the correct\r\n\t\t\t\t\t// carrier code depends on if the caller and callee are from the\r\n\t\t\t\t\t// same local area. It is trickier to get that to work correctly than\r\n\t\t\t\t\t// using international format, which is tested to work fine on all\r\n\t\t\t\t\t// carriers.\r\n\t\t\t\t\t//\r\n\t\t\t\t\t// CL fixed line numbers need the national prefix when dialing in the\r\n\t\t\t\t\t// national format, but don't have it when used for display. The\r\n\t\t\t\t\t// reverse is true for mobile numbers. As a result, we output them in\r\n\t\t\t\t\t// the international format to make it work.\r\n\t\t\t\t\t//\r\n\t\t\t\t\t// UZ mobile and fixed-line numbers have to be formatted in\r\n\t\t\t\t\t// international format or prefixed with special codes like 03, 04\r\n\t\t\t\t\t// (for fixed-line) and 05 (for mobile) for dialling successfully\r\n\t\t\t\t\t// from mobile devices. As we do not have complete information on\r\n\t\t\t\t\t// special codes and to be consistent with formatting across all\r\n\t\t\t\t\t// phone types we return the number in international format here.\r\n\t\t\t\t\t//\r\n\t\t\t\t\t((country === 'MX' || country === 'CL' || country == 'UZ') && is_fixed_line_or_mobile)\r\n\t\t\t\t)\r\n\t\t\t\t&&\r\n\t\t\t\tcan_be_internationally_dialled(number)\r\n\t\t\t) {\r\n\t\t\t\tformatted_number = format(number, 'INTERNATIONAL')\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tformatted_number = format(number, 'NATIONAL')\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\telse if (is_valid_number && can_be_internationally_dialled(number)) {\r\n\t\t// We assume that short numbers are not diallable from outside their region,\r\n\t\t// so if a number is not a valid regular length phone number, we treat it as\r\n\t\t// if it cannot be internationally dialled.\r\n\t\treturn with_formatting ?\r\n\t\t\tformat(number, 'INTERNATIONAL', metadata.metadata) :\r\n\t\t\tformat(number, 'E.164', metadata.metadata)\r\n\t}\r\n\r\n\tif (!with_formatting) {\r\n\t\treturn diallable_chars(formatted_number)\r\n\t}\r\n\r\n\treturn formatted_number\r\n}\r\n\r\nfunction can_be_internationally_dialled(number) {\r\n\treturn true\r\n}\r\n\r\n/**\r\n * A map that contains characters that are essential when dialling. That means\r\n * any of the characters in this map must not be removed from a number when\r\n * dialling, otherwise the call will not reach the intended destination.\r\n */\r\nconst DIALLABLE_CHARACTERS = {\r\n\t'0': '0',\r\n\t'1': '1',\r\n\t'2': '2',\r\n\t'3': '3',\r\n\t'4': '4',\r\n\t'5': '5',\r\n\t'6': '6',\r\n\t'7': '7',\r\n\t'8': '8',\r\n\t'9': '9',\r\n\t'+': '+',\r\n\t'*': '*',\r\n\t'#': '#'\r\n}\r\n\r\nfunction diallable_chars(formatted_number) {\r\n\tlet result = ''\r\n\r\n\tlet i = 0\r\n\twhile (i < formatted_number.length) {\r\n\t\tconst character = formatted_number[i]\r\n\t\tif (DIALLABLE_CHARACTERS[character]) {\r\n\t\t\tresult += character\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\r\n\treturn result\r\n}\r\n\r\nfunction getPreferredDomesticCarrierCodeOrDefault() {\r\n\tthrow new Error('carrier codes are not part of this library')\r\n}\r\n\r\nfunction formatNationalNumberWithCarrierCode() {\r\n\tthrow new Error('carrier codes are not part of this library')\r\n}\r\n\r\n/**\r\n * Formats a phone number in national format for dialing using the carrier as\r\n * specified in the preferred_domestic_carrier_code field of the PhoneNumber\r\n * object passed in. If that is missing, use the {@code fallbackCarrierCode}\r\n * passed in instead. If there is no {@code preferred_domestic_carrier_code},\r\n * and the {@code fallbackCarrierCode} contains an empty string, return the\r\n * number in national format without any carrier code.\r\n *\r\n *

Use {@link #formatNationalNumberWithCarrierCode} instead if the carrier\r\n * code passed in should take precedence over the number's\r\n * {@code preferred_domestic_carrier_code} when formatting.\r\n *\r\n * @param {i18n.phonenumbers.PhoneNumber} number the phone number to be\r\n * formatted.\r\n * @param {string} fallbackCarrierCode the carrier selection code to be used, if\r\n * none is found in the phone number itself.\r\n * @return {string} the formatted phone number in national format for dialing\r\n * using the number's preferred_domestic_carrier_code, or the\r\n * {@code fallbackCarrierCode} passed in if none is found.\r\n */\r\nfunction formatNationalNumberWithPreferredCarrierCode(number) {\r\n\treturn formatNationalNumberWithCarrierCode(\r\n\t\tnumber,\r\n\t\tcarrierCode\r\n\t);\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatNumberForMobileDialing.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatNumberForMobileDialing.test.js new file mode 100644 index 00000000..c9c32e51 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatNumberForMobileDialing.test.js @@ -0,0 +1,14 @@ +// Google's tests: +// https://github.com/googlei18n/libphonenumber/blob/597983dc4d56ed7e5337a8e74316dc7a3d02d794/javascript/i18n/phonenumbers/phonenumberutil_test.js +// import metadata from '../metadata.min.json' assert { type: 'json' } +// import formatForMobileDialing from './formatForMobileDialing' +// describe('formatForMobileDialing', () => +// { +// it('should format for mobile dialing', () => +// { +// formatForMobileDialing({ phone: '8005553535', country: 'RU' }, 'US', true, metadata).should.equal('+7 800 555 3535') +// formatForMobileDialing({ phone: '8005553535', country: 'RU' }, 'US', false, metadata).should.equal('+78005553535') +// formatForMobileDialing({ phone: '8005553535', country: 'RU' }, 'RU', false, metadata).should.equal('8005553535') +// }) +// }) +//# sourceMappingURL=formatNumberForMobileDialing.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatNumberForMobileDialing.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatNumberForMobileDialing.test.js.map new file mode 100644 index 00000000..bac4478f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/formatNumberForMobileDialing.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"formatNumberForMobileDialing.test.js","names":[],"sources":["../source/formatNumberForMobileDialing.test.js"],"sourcesContent":["// Google's tests:\r\n// https://github.com/googlei18n/libphonenumber/blob/597983dc4d56ed7e5337a8e74316dc7a3d02d794/javascript/i18n/phonenumbers/phonenumberutil_test.js\r\n\r\n// import metadata from '../metadata.min.json' assert { type: 'json' }\r\n\r\n// import formatForMobileDialing from './formatForMobileDialing'\r\n\r\n// describe('formatForMobileDialing', () =>\r\n// {\r\n// \tit('should format for mobile dialing', () =>\r\n// \t{\r\n// \t\tformatForMobileDialing({ phone: '8005553535', country: 'RU' }, 'US', true, metadata).should.equal('+7 800 555 3535')\r\n// \t\tformatForMobileDialing({ phone: '8005553535', country: 'RU' }, 'US', false, metadata).should.equal('+78005553535')\r\n// \t\tformatForMobileDialing({ phone: '8005553535', country: 'RU' }, 'RU', false, metadata).should.equal('8005553535')\r\n// \t})\r\n// })"],"mappings":"AAAA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/format_.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/format_.js new file mode 100644 index 00000000..62c65d7c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/format_.js @@ -0,0 +1,187 @@ +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +// This is a port of Google Android `libphonenumber`'s +// `phonenumberutil.js` of December 31th, 2018. +// +// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js +import matchesEntirely from './helpers/matchesEntirely.js'; +import formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js'; +import Metadata, { getCountryCallingCode } from './metadata.js'; +import getIddPrefix from './helpers/getIddPrefix.js'; +import { formatRFC3966 } from './helpers/RFC3966.js'; +var DEFAULT_OPTIONS = { + formatExtension: function formatExtension(formattedNumber, extension, metadata) { + return "".concat(formattedNumber).concat(metadata.ext()).concat(extension); + } +}; // Formats a phone number +// +// Example use cases: +// +// ```js +// formatNumber('8005553535', 'RU', 'INTERNATIONAL') +// formatNumber('8005553535', 'RU', 'INTERNATIONAL', metadata) +// formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL') +// formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL', metadata) +// formatNumber('+78005553535', 'NATIONAL') +// formatNumber('+78005553535', 'NATIONAL', metadata) +// ``` +// + +export default function formatNumber(input, format, options, metadata) { + // Apply default options. + if (options) { + options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options); + } else { + options = DEFAULT_OPTIONS; + } + + metadata = new Metadata(metadata); + + if (input.country && input.country !== '001') { + // Validate `input.country`. + if (!metadata.hasCountry(input.country)) { + throw new Error("Unknown country: ".concat(input.country)); + } + + metadata.country(input.country); + } else if (input.countryCallingCode) { + metadata.selectNumberingPlan(input.countryCallingCode); + } else return input.phone || ''; + + var countryCallingCode = metadata.countryCallingCode(); + var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // This variable should have been declared inside `case`s + // but Babel has a bug and it says "duplicate variable declaration". + + var number; + + switch (format) { + case 'NATIONAL': + // Legacy argument support. + // (`{ country: ..., phone: '' }`) + if (!nationalNumber) { + return ''; + } + + number = formatNationalNumber(nationalNumber, input.carrierCode, 'NATIONAL', metadata, options); + return addExtension(number, input.ext, metadata, options.formatExtension); + + case 'INTERNATIONAL': + // Legacy argument support. + // (`{ country: ..., phone: '' }`) + if (!nationalNumber) { + return "+".concat(countryCallingCode); + } + + number = formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata, options); + number = "+".concat(countryCallingCode, " ").concat(number); + return addExtension(number, input.ext, metadata, options.formatExtension); + + case 'E.164': + // `E.164` doesn't define "phone number extensions". + return "+".concat(countryCallingCode).concat(nationalNumber); + + case 'RFC3966': + return formatRFC3966({ + number: "+".concat(countryCallingCode).concat(nationalNumber), + ext: input.ext + }); + // For reference, here's Google's IDD formatter: + // https://github.com/google/libphonenumber/blob/32719cf74e68796788d1ca45abc85dcdc63ba5b9/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L1546 + // Not saying that this IDD formatter replicates it 1:1, but it seems to work. + // Who would even need to format phone numbers in IDD format anyway? + + case 'IDD': + if (!options.fromCountry) { + return; // throw new Error('`fromCountry` option not passed for IDD-prefixed formatting.') + } + + var formattedNumber = formatIDD(nationalNumber, input.carrierCode, countryCallingCode, options.fromCountry, metadata); + return addExtension(formattedNumber, input.ext, metadata, options.formatExtension); + + default: + throw new Error("Unknown \"format\" argument passed to \"formatNumber()\": \"".concat(format, "\"")); + } +} + +function formatNationalNumber(number, carrierCode, formatAs, metadata, options) { + var format = chooseFormatForNumber(metadata.formats(), number); + + if (!format) { + return number; + } + + return formatNationalNumberUsingFormat(number, format, { + useInternationalFormat: formatAs === 'INTERNATIONAL', + withNationalPrefix: format.nationalPrefixIsOptionalWhenFormattingInNationalFormat() && options && options.nationalPrefix === false ? false : true, + carrierCode: carrierCode, + metadata: metadata + }); +} + +function chooseFormatForNumber(availableFormats, nationalNnumber) { + for (var _iterator = _createForOfIteratorHelperLoose(availableFormats), _step; !(_step = _iterator()).done;) { + var format = _step.value; + + // Validate leading digits. + // The test case for "else path" could be found by searching for + // "format.leadingDigitsPatterns().length === 0". + if (format.leadingDigitsPatterns().length > 0) { + // The last leading_digits_pattern is used here, as it is the most detailed + var lastLeadingDigitsPattern = format.leadingDigitsPatterns()[format.leadingDigitsPatterns().length - 1]; // If leading digits don't match then move on to the next phone number format + + if (nationalNnumber.search(lastLeadingDigitsPattern) !== 0) { + continue; + } + } // Check that the national number matches the phone number format regular expression + + + if (matchesEntirely(nationalNnumber, format.pattern())) { + return format; + } + } +} + +function addExtension(formattedNumber, ext, metadata, formatExtension) { + return ext ? formatExtension(formattedNumber, ext, metadata) : formattedNumber; +} + +function formatIDD(nationalNumber, carrierCode, countryCallingCode, fromCountry, metadata) { + var fromCountryCallingCode = getCountryCallingCode(fromCountry, metadata.metadata); // When calling within the same country calling code. + + if (fromCountryCallingCode === countryCallingCode) { + var formattedNumber = formatNationalNumber(nationalNumber, carrierCode, 'NATIONAL', metadata); // For NANPA regions, return the national format for these regions + // but prefix it with the country calling code. + + if (countryCallingCode === '1') { + return countryCallingCode + ' ' + formattedNumber; + } // If regions share a country calling code, the country calling code need + // not be dialled. This also applies when dialling within a region, so this + // if clause covers both these cases. Technically this is the case for + // dialling from La Reunion to other overseas departments of France (French + // Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover + // this edge case for now and for those cases return the version including + // country calling code. Details here: + // http://www.petitfute.com/voyage/225-info-pratiques-reunion + // + + + return formattedNumber; + } + + var iddPrefix = getIddPrefix(fromCountry, undefined, metadata.metadata); + + if (iddPrefix) { + return "".concat(iddPrefix, " ").concat(countryCallingCode, " ").concat(formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata)); + } +} +//# sourceMappingURL=format_.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/format_.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/format_.js.map new file mode 100644 index 00000000..a603a7e4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/format_.js.map @@ -0,0 +1 @@ +{"version":3,"file":"format_.js","names":["matchesEntirely","formatNationalNumberUsingFormat","Metadata","getCountryCallingCode","getIddPrefix","formatRFC3966","DEFAULT_OPTIONS","formatExtension","formattedNumber","extension","metadata","ext","formatNumber","input","format","options","country","hasCountry","Error","countryCallingCode","selectNumberingPlan","phone","nationalNumber","v2","number","formatNationalNumber","carrierCode","addExtension","fromCountry","formatIDD","formatAs","chooseFormatForNumber","formats","useInternationalFormat","withNationalPrefix","nationalPrefixIsOptionalWhenFormattingInNationalFormat","nationalPrefix","availableFormats","nationalNnumber","leadingDigitsPatterns","length","lastLeadingDigitsPattern","search","pattern","fromCountryCallingCode","iddPrefix","undefined"],"sources":["../source/format_.js"],"sourcesContent":["// This is a port of Google Android `libphonenumber`'s\r\n// `phonenumberutil.js` of December 31th, 2018.\r\n//\r\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\r\n\r\nimport matchesEntirely from './helpers/matchesEntirely.js'\r\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js'\r\nimport Metadata, { getCountryCallingCode } from './metadata.js'\r\nimport getIddPrefix from './helpers/getIddPrefix.js'\r\nimport { formatRFC3966 } from './helpers/RFC3966.js'\r\n\r\nconst DEFAULT_OPTIONS = {\r\n\tformatExtension: (formattedNumber, extension, metadata) => `${formattedNumber}${metadata.ext()}${extension}`\r\n}\r\n\r\n// Formats a phone number\r\n//\r\n// Example use cases:\r\n//\r\n// ```js\r\n// formatNumber('8005553535', 'RU', 'INTERNATIONAL')\r\n// formatNumber('8005553535', 'RU', 'INTERNATIONAL', metadata)\r\n// formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL')\r\n// formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL', metadata)\r\n// formatNumber('+78005553535', 'NATIONAL')\r\n// formatNumber('+78005553535', 'NATIONAL', metadata)\r\n// ```\r\n//\r\nexport default function formatNumber(input, format, options, metadata) {\r\n\t// Apply default options.\r\n\tif (options) {\r\n\t\toptions = { ...DEFAULT_OPTIONS, ...options }\r\n\t} else {\r\n\t\toptions = DEFAULT_OPTIONS\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tif (input.country && input.country !== '001') {\r\n\t\t// Validate `input.country`.\r\n\t\tif (!metadata.hasCountry(input.country)) {\r\n\t\t\tthrow new Error(`Unknown country: ${input.country}`)\r\n\t\t}\r\n\t\tmetadata.country(input.country)\r\n\t}\r\n\telse if (input.countryCallingCode) {\r\n\t\tmetadata.selectNumberingPlan(input.countryCallingCode)\r\n\t}\r\n\telse return input.phone || ''\r\n\r\n\tconst countryCallingCode = metadata.countryCallingCode()\r\n\r\n\tconst nationalNumber = options.v2 ? input.nationalNumber : input.phone\r\n\r\n\t// This variable should have been declared inside `case`s\r\n\t// but Babel has a bug and it says \"duplicate variable declaration\".\r\n\tlet number\r\n\r\n\tswitch (format) {\r\n\t\tcase 'NATIONAL':\r\n\t\t\t// Legacy argument support.\r\n\t\t\t// (`{ country: ..., phone: '' }`)\r\n\t\t\tif (!nationalNumber) {\r\n\t\t\t\treturn ''\r\n\t\t\t}\r\n\t\t\tnumber = formatNationalNumber(nationalNumber, input.carrierCode, 'NATIONAL', metadata, options)\r\n\t\t\treturn addExtension(number, input.ext, metadata, options.formatExtension)\r\n\r\n\t\tcase 'INTERNATIONAL':\r\n\t\t\t// Legacy argument support.\r\n\t\t\t// (`{ country: ..., phone: '' }`)\r\n\t\t\tif (!nationalNumber) {\r\n\t\t\t\treturn `+${countryCallingCode}`\r\n\t\t\t}\r\n\t\t\tnumber = formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata, options)\r\n\t\t\tnumber = `+${countryCallingCode} ${number}`\r\n\t\t\treturn addExtension(number, input.ext, metadata, options.formatExtension)\r\n\r\n\t\tcase 'E.164':\r\n\t\t\t// `E.164` doesn't define \"phone number extensions\".\r\n\t\t\treturn `+${countryCallingCode}${nationalNumber}`\r\n\r\n\t\tcase 'RFC3966':\r\n\t\t\treturn formatRFC3966({\r\n\t\t\t\tnumber: `+${countryCallingCode}${nationalNumber}`,\r\n\t\t\t\text: input.ext\r\n\t\t\t})\r\n\r\n\t\t// For reference, here's Google's IDD formatter:\r\n\t\t// https://github.com/google/libphonenumber/blob/32719cf74e68796788d1ca45abc85dcdc63ba5b9/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L1546\r\n\t\t// Not saying that this IDD formatter replicates it 1:1, but it seems to work.\r\n\t\t// Who would even need to format phone numbers in IDD format anyway?\r\n\t\tcase 'IDD':\r\n\t\t\tif (!options.fromCountry) {\r\n\t\t\t\treturn\r\n\t\t\t\t// throw new Error('`fromCountry` option not passed for IDD-prefixed formatting.')\r\n\t\t\t}\r\n\t\t\tconst formattedNumber = formatIDD(\r\n\t\t\t\tnationalNumber,\r\n\t\t\t\tinput.carrierCode,\r\n\t\t\t\tcountryCallingCode,\r\n\t\t\t\toptions.fromCountry,\r\n\t\t\t\tmetadata\r\n\t\t\t)\r\n\t\t\treturn addExtension(formattedNumber, input.ext, metadata, options.formatExtension)\r\n\r\n\t\tdefault:\r\n\t\t\tthrow new Error(`Unknown \"format\" argument passed to \"formatNumber()\": \"${format}\"`)\r\n\t}\r\n}\r\n\r\nfunction formatNationalNumber(number, carrierCode, formatAs, metadata, options) {\r\n\tconst format = chooseFormatForNumber(metadata.formats(), number)\r\n\tif (!format) {\r\n\t\treturn number\r\n\t}\r\n\treturn formatNationalNumberUsingFormat(\r\n\t\tnumber,\r\n\t\tformat,\r\n\t\t{\r\n\t\t\tuseInternationalFormat: formatAs === 'INTERNATIONAL',\r\n\t\t\twithNationalPrefix: format.nationalPrefixIsOptionalWhenFormattingInNationalFormat() && (options && options.nationalPrefix === false) ? false : true,\r\n\t\t\tcarrierCode,\r\n\t\t\tmetadata\r\n\t\t}\r\n\t)\r\n}\r\n\r\nfunction chooseFormatForNumber(availableFormats, nationalNnumber) {\r\n\tfor (const format of availableFormats) {\r\n\t\t// Validate leading digits.\r\n\t\t// The test case for \"else path\" could be found by searching for\r\n\t\t// \"format.leadingDigitsPatterns().length === 0\".\r\n\t\tif (format.leadingDigitsPatterns().length > 0) {\r\n\t\t\t// The last leading_digits_pattern is used here, as it is the most detailed\r\n\t\t\tconst lastLeadingDigitsPattern = format.leadingDigitsPatterns()[format.leadingDigitsPatterns().length - 1]\r\n\t\t\t// If leading digits don't match then move on to the next phone number format\r\n\t\t\tif (nationalNnumber.search(lastLeadingDigitsPattern) !== 0) {\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Check that the national number matches the phone number format regular expression\r\n\t\tif (matchesEntirely(nationalNnumber, format.pattern())) {\r\n\t\t\treturn format\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction addExtension(formattedNumber, ext, metadata, formatExtension) {\r\n\treturn ext ? formatExtension(formattedNumber, ext, metadata) : formattedNumber\r\n}\r\n\r\nfunction formatIDD(\r\n\tnationalNumber,\r\n\tcarrierCode,\r\n\tcountryCallingCode,\r\n\tfromCountry,\r\n\tmetadata\r\n) {\r\n\tconst fromCountryCallingCode = getCountryCallingCode(fromCountry, metadata.metadata)\r\n\t// When calling within the same country calling code.\r\n\tif (fromCountryCallingCode === countryCallingCode) {\r\n\t\tconst formattedNumber = formatNationalNumber(nationalNumber, carrierCode, 'NATIONAL', metadata)\r\n\t\t// For NANPA regions, return the national format for these regions\r\n\t\t// but prefix it with the country calling code.\r\n\t\tif (countryCallingCode === '1') {\r\n\t\t\treturn countryCallingCode + ' ' + formattedNumber\r\n\t\t}\r\n\t\t// If regions share a country calling code, the country calling code need\r\n\t\t// not be dialled. This also applies when dialling within a region, so this\r\n\t\t// if clause covers both these cases. Technically this is the case for\r\n\t\t// dialling from La Reunion to other overseas departments of France (French\r\n\t\t// Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover\r\n\t\t// this edge case for now and for those cases return the version including\r\n\t\t// country calling code. Details here:\r\n\t\t// http://www.petitfute.com/voyage/225-info-pratiques-reunion\r\n\t\t//\r\n\t\treturn formattedNumber\r\n\t}\r\n\tconst iddPrefix = getIddPrefix(fromCountry, undefined, metadata.metadata)\r\n\tif (iddPrefix) {\r\n\t\treturn `${iddPrefix} ${countryCallingCode} ${formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata)}`\r\n\t}\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountries.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountries.js new file mode 100644 index 00000000..91be5816 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountries.js @@ -0,0 +1,5 @@ +import Metadata from './metadata.js'; +export default function getCountries(metadata) { + return new Metadata(metadata).getCountries(); +} +//# sourceMappingURL=getCountries.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountries.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountries.js.map new file mode 100644 index 00000000..1b5e883b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountries.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getCountries.js","names":["Metadata","getCountries","metadata"],"sources":["../source/getCountries.js"],"sourcesContent":["import Metadata from './metadata.js'\r\n\r\nexport default function getCountries(metadata) {\r\n\treturn new Metadata(metadata).getCountries()\r\n}"],"mappings":"AAAA,OAAOA,QAAP,MAAqB,eAArB;AAEA,eAAe,SAASC,YAAT,CAAsBC,QAAtB,EAAgC;EAC9C,OAAO,IAAIF,QAAJ,CAAaE,QAAb,EAAuBD,YAAvB,EAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountries.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountries.test.js new file mode 100644 index 00000000..b6f0954b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountries.test.js @@ -0,0 +1,8 @@ +import metadata from '../metadata.min.json' assert { type: 'json' }; +import getCountries from './getCountries.js'; +describe('getCountries', function () { + it('should get countries list', function () { + expect(getCountries(metadata).indexOf('RU') > 0).to.be["true"]; + }); +}); +//# sourceMappingURL=getCountries.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountries.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountries.test.js.map new file mode 100644 index 00000000..b784f079 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountries.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getCountries.test.js","names":["metadata","type","getCountries","describe","it","expect","indexOf","to","be"],"sources":["../source/getCountries.test.js"],"sourcesContent":["import metadata from '../metadata.min.json' assert { type: 'json' }\r\n\r\nimport getCountries from './getCountries.js'\r\n\r\ndescribe('getCountries', () => {\r\n\tit('should get countries list', () => {\r\n\t\texpect(getCountries(metadata).indexOf('RU') > 0).to.be.true;\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,QAAP,MAAqB,sBAArB,UAAqDC,IAAI,EAAE,MAA3D;AAEA,OAAOC,YAAP,MAAyB,mBAAzB;AAEAC,QAAQ,CAAC,cAAD,EAAiB,YAAM;EAC9BC,EAAE,CAAC,2BAAD,EAA8B,YAAM;IACrCC,MAAM,CAACH,YAAY,CAACF,QAAD,CAAZ,CAAuBM,OAAvB,CAA+B,IAA/B,IAAuC,CAAxC,CAAN,CAAiDC,EAAjD,CAAoDC,EAApD;EACA,CAFC,CAAF;AAGA,CAJO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountryCallingCode.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountryCallingCode.js new file mode 100644 index 00000000..90387251 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountryCallingCode.js @@ -0,0 +1,3 @@ +// Deprecated. Import from 'metadata.js' directly instead. +export { getCountryCallingCode as default } from './metadata.js'; +//# sourceMappingURL=getCountryCallingCode.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountryCallingCode.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountryCallingCode.js.map new file mode 100644 index 00000000..ba7b3be5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountryCallingCode.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getCountryCallingCode.js","names":["getCountryCallingCode","default"],"sources":["../source/getCountryCallingCode.js"],"sourcesContent":["// Deprecated. Import from 'metadata.js' directly instead.\r\nexport { getCountryCallingCode as default } from './metadata.js'"],"mappings":"AAAA;AACA,SAASA,qBAAqB,IAAIC,OAAlC,QAAiD,eAAjD"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountryCallingCode.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountryCallingCode.test.js new file mode 100644 index 00000000..025f28fd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountryCallingCode.test.js @@ -0,0 +1,13 @@ +import metadata from '../metadata.min.json' assert { type: 'json' }; +import getCountryCallingCode from './getCountryCallingCode.js'; +describe('getCountryCallingCode', function () { + it('should get country calling code', function () { + getCountryCallingCode('US', metadata).should.equal('1'); + }); + it('should throw if country is unknown', function () { + expect(function () { + return getCountryCallingCode('ZZ', metadata); + }).to["throw"]('Unknown country: ZZ'); + }); +}); +//# sourceMappingURL=getCountryCallingCode.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountryCallingCode.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountryCallingCode.test.js.map new file mode 100644 index 00000000..4c422b69 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getCountryCallingCode.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getCountryCallingCode.test.js","names":["metadata","type","getCountryCallingCode","describe","it","should","equal","expect","to"],"sources":["../source/getCountryCallingCode.test.js"],"sourcesContent":["import metadata from '../metadata.min.json' assert { type: 'json' }\r\n\r\nimport getCountryCallingCode from './getCountryCallingCode.js'\r\n\r\ndescribe('getCountryCallingCode', () => {\r\n\tit('should get country calling code', () => {\r\n\t\tgetCountryCallingCode('US', metadata).should.equal('1')\r\n\t})\r\n\r\n\tit('should throw if country is unknown', () => {\r\n\t\texpect(() => getCountryCallingCode('ZZ', metadata)).to.throw('Unknown country: ZZ')\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,QAAP,MAAqB,sBAArB,UAAqDC,IAAI,EAAE,MAA3D;AAEA,OAAOC,qBAAP,MAAkC,4BAAlC;AAEAC,QAAQ,CAAC,uBAAD,EAA0B,YAAM;EACvCC,EAAE,CAAC,iCAAD,EAAoC,YAAM;IAC3CF,qBAAqB,CAAC,IAAD,EAAOF,QAAP,CAArB,CAAsCK,MAAtC,CAA6CC,KAA7C,CAAmD,GAAnD;EACA,CAFC,CAAF;EAIAF,EAAE,CAAC,oCAAD,EAAuC,YAAM;IAC9CG,MAAM,CAAC;MAAA,OAAML,qBAAqB,CAAC,IAAD,EAAOF,QAAP,CAA3B;IAAA,CAAD,CAAN,CAAoDQ,EAApD,UAA6D,qBAA7D;EACA,CAFC,CAAF;AAGA,CARO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getExampleNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getExampleNumber.js new file mode 100644 index 00000000..1847e686 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getExampleNumber.js @@ -0,0 +1,7 @@ +import PhoneNumber from './PhoneNumber.js'; +export default function getExampleNumber(country, examples, metadata) { + if (examples[country]) { + return new PhoneNumber(country, examples[country], metadata); + } +} +//# sourceMappingURL=getExampleNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getExampleNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getExampleNumber.js.map new file mode 100644 index 00000000..19a1c064 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getExampleNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getExampleNumber.js","names":["PhoneNumber","getExampleNumber","country","examples","metadata"],"sources":["../source/getExampleNumber.js"],"sourcesContent":["import PhoneNumber from './PhoneNumber.js'\r\n\r\nexport default function getExampleNumber(country, examples, metadata) {\r\n\tif (examples[country]) {\r\n\t\treturn new PhoneNumber(country, examples[country], metadata)\r\n\t}\r\n}"],"mappings":"AAAA,OAAOA,WAAP,MAAwB,kBAAxB;AAEA,eAAe,SAASC,gBAAT,CAA0BC,OAA1B,EAAmCC,QAAnC,EAA6CC,QAA7C,EAAuD;EACrE,IAAID,QAAQ,CAACD,OAAD,CAAZ,EAAuB;IACtB,OAAO,IAAIF,WAAJ,CAAgBE,OAAhB,EAAyBC,QAAQ,CAACD,OAAD,CAAjC,EAA4CE,QAA5C,CAAP;EACA;AACD"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getExampleNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getExampleNumber.test.js new file mode 100644 index 00000000..947405a4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getExampleNumber.test.js @@ -0,0 +1,16 @@ +import examples from '../examples.mobile.json' assert { type: 'json' }; +import metadata from '../metadata.min.json' assert { type: 'json' }; +import getExampleNumber from './getExampleNumber.js'; +describe('getExampleNumber', function () { + it('should get an example number', function () { + var phoneNumber = getExampleNumber('RU', examples, metadata); + phoneNumber.nationalNumber.should.equal('9123456789'); + phoneNumber.number.should.equal('+79123456789'); + phoneNumber.countryCallingCode.should.equal('7'); + phoneNumber.country.should.equal('RU'); + }); + it('should handle a non-existing country', function () { + expect(getExampleNumber('XX', examples, metadata)).to.be.undefined; + }); +}); +//# sourceMappingURL=getExampleNumber.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getExampleNumber.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getExampleNumber.test.js.map new file mode 100644 index 00000000..548940c4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getExampleNumber.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getExampleNumber.test.js","names":["examples","type","metadata","getExampleNumber","describe","it","phoneNumber","nationalNumber","should","equal","number","countryCallingCode","country","expect","to","be","undefined"],"sources":["../source/getExampleNumber.test.js"],"sourcesContent":["import examples from '../examples.mobile.json' assert { type: 'json' }\r\nimport metadata from '../metadata.min.json' assert { type: 'json' }\r\nimport getExampleNumber from './getExampleNumber.js'\r\n\r\ndescribe('getExampleNumber', () => {\r\n\tit('should get an example number', () => {\r\n\t\tconst phoneNumber = getExampleNumber('RU', examples, metadata)\r\n\t\tphoneNumber.nationalNumber.should.equal('9123456789')\r\n\t\tphoneNumber.number.should.equal('+79123456789')\r\n\t\tphoneNumber.countryCallingCode.should.equal('7')\r\n\t\tphoneNumber.country.should.equal('RU')\r\n\t})\r\n\r\n\tit('should handle a non-existing country', () => {\r\n\t\texpect(getExampleNumber('XX', examples, metadata)).to.be.undefined\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,QAAP,MAAqB,yBAArB,UAAwDC,IAAI,EAAE,MAA9D;AACA,OAAOC,QAAP,MAAqB,sBAArB,UAAqDD,IAAI,EAAE,MAA3D;AACA,OAAOE,gBAAP,MAA6B,uBAA7B;AAEAC,QAAQ,CAAC,kBAAD,EAAqB,YAAM;EAClCC,EAAE,CAAC,8BAAD,EAAiC,YAAM;IACxC,IAAMC,WAAW,GAAGH,gBAAgB,CAAC,IAAD,EAAOH,QAAP,EAAiBE,QAAjB,CAApC;IACAI,WAAW,CAACC,cAAZ,CAA2BC,MAA3B,CAAkCC,KAAlC,CAAwC,YAAxC;IACAH,WAAW,CAACI,MAAZ,CAAmBF,MAAnB,CAA0BC,KAA1B,CAAgC,cAAhC;IACAH,WAAW,CAACK,kBAAZ,CAA+BH,MAA/B,CAAsCC,KAAtC,CAA4C,GAA5C;IACAH,WAAW,CAACM,OAAZ,CAAoBJ,MAApB,CAA2BC,KAA3B,CAAiC,IAAjC;EACA,CANC,CAAF;EAQAJ,EAAE,CAAC,sCAAD,EAAyC,YAAM;IAChDQ,MAAM,CAACV,gBAAgB,CAAC,IAAD,EAAOH,QAAP,EAAiBE,QAAjB,CAAjB,CAAN,CAAmDY,EAAnD,CAAsDC,EAAtD,CAAyDC,SAAzD;EACA,CAFC,CAAF;AAGA,CAZO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getNumberType.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getNumberType.js new file mode 100644 index 00000000..b12d7370 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getNumberType.js @@ -0,0 +1,113 @@ +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +import isViablePhoneNumber from './helpers/isViablePhoneNumber.js'; +import _getNumberType from './helpers/getNumberType.js'; +import parse from './parse_.js'; // Finds out national phone number type (fixed line, mobile, etc) + +export default function getNumberType() { + var _normalizeArguments = normalizeArguments(arguments), + input = _normalizeArguments.input, + options = _normalizeArguments.options, + metadata = _normalizeArguments.metadata; + + return _getNumberType(input, options, metadata); +} // Sort out arguments + +export function normalizeArguments(args) { + var _Array$prototype$slic = Array.prototype.slice.call(args), + _Array$prototype$slic2 = _slicedToArray(_Array$prototype$slic, 4), + arg_1 = _Array$prototype$slic2[0], + arg_2 = _Array$prototype$slic2[1], + arg_3 = _Array$prototype$slic2[2], + arg_4 = _Array$prototype$slic2[3]; + + var input; + var options = {}; + var metadata; // If the phone number is passed as a string. + // `getNumberType('88005553535', ...)`. + + if (typeof arg_1 === 'string') { + // If "default country" argument is being passed + // then convert it to an `options` object. + // `getNumberType('88005553535', 'RU', metadata)`. + if (_typeof(arg_2) !== 'object') { + if (arg_4) { + options = arg_3; + metadata = arg_4; + } else { + metadata = arg_3; + } // `parse` extracts phone numbers from raw text, + // therefore it will cut off all "garbage" characters, + // while this `validate` function needs to verify + // that the phone number contains no "garbage" + // therefore the explicit `isViablePhoneNumber` check. + + + if (isViablePhoneNumber(arg_1)) { + input = parse(arg_1, { + defaultCountry: arg_2 + }, metadata); + } else { + input = {}; + } + } // No "resrict country" argument is being passed. + // International phone number is passed. + // `getNumberType('+78005553535', metadata)`. + else { + if (arg_3) { + options = arg_2; + metadata = arg_3; + } else { + metadata = arg_2; + } // `parse` extracts phone numbers from raw text, + // therefore it will cut off all "garbage" characters, + // while this `validate` function needs to verify + // that the phone number contains no "garbage" + // therefore the explicit `isViablePhoneNumber` check. + + + if (isViablePhoneNumber(arg_1)) { + input = parse(arg_1, undefined, metadata); + } else { + input = {}; + } + } + } // If the phone number is passed as a parsed phone number. + // `getNumberType({ phone: '88005553535', country: 'RU' }, ...)`. + else if (is_object(arg_1)) { + input = arg_1; + + if (arg_3) { + options = arg_2; + metadata = arg_3; + } else { + metadata = arg_2; + } + } else throw new TypeError('A phone number must either be a string or an object of shape { phone, [country] }.'); + + return { + input: input, + options: options, + metadata: metadata + }; +} // Babel transforms `typeof` into some "branches" +// so istanbul will show this as "branch not covered". + +/* istanbul ignore next */ + +var is_object = function is_object(_) { + return _typeof(_) === 'object'; +}; +//# sourceMappingURL=getNumberType.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getNumberType.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getNumberType.js.map new file mode 100644 index 00000000..9aa0b3e3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getNumberType.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getNumberType.js","names":["isViablePhoneNumber","_getNumberType","parse","getNumberType","normalizeArguments","arguments","input","options","metadata","args","Array","prototype","slice","call","arg_1","arg_2","arg_3","arg_4","defaultCountry","undefined","is_object","TypeError","_"],"sources":["../source/getNumberType.js"],"sourcesContent":["import isViablePhoneNumber from './helpers/isViablePhoneNumber.js'\r\nimport _getNumberType from './helpers/getNumberType.js'\r\nimport parse from './parse_.js'\r\n\r\n// Finds out national phone number type (fixed line, mobile, etc)\r\nexport default function getNumberType()\r\n{\r\n\tconst { input, options, metadata } = normalizeArguments(arguments)\r\n\treturn _getNumberType(input, options, metadata)\r\n}\r\n\r\n// Sort out arguments\r\nexport function normalizeArguments(args)\r\n{\r\n\tconst [arg_1, arg_2, arg_3, arg_4] = Array.prototype.slice.call(args)\r\n\r\n\tlet input\r\n\tlet options = {}\r\n\tlet metadata\r\n\r\n\t// If the phone number is passed as a string.\r\n\t// `getNumberType('88005553535', ...)`.\r\n\tif (typeof arg_1 === 'string')\r\n\t{\r\n\t\t// If \"default country\" argument is being passed\r\n\t\t// then convert it to an `options` object.\r\n\t\t// `getNumberType('88005553535', 'RU', metadata)`.\r\n\t\tif (typeof arg_2 !== 'object')\r\n\t\t{\r\n\t\t\tif (arg_4)\r\n\t\t\t{\r\n\t\t\t\toptions = arg_3\r\n\t\t\t\tmetadata = arg_4\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tmetadata = arg_3\r\n\t\t\t}\r\n\r\n\t\t\t// `parse` extracts phone numbers from raw text,\r\n\t\t\t// therefore it will cut off all \"garbage\" characters,\r\n\t\t\t// while this `validate` function needs to verify\r\n\t\t\t// that the phone number contains no \"garbage\"\r\n\t\t\t// therefore the explicit `isViablePhoneNumber` check.\r\n\t\t\tif (isViablePhoneNumber(arg_1))\r\n\t\t\t{\r\n\t\t\t\tinput = parse(arg_1, { defaultCountry: arg_2 }, metadata)\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tinput = {}\r\n\t\t\t}\r\n\t\t}\r\n\t\t// No \"resrict country\" argument is being passed.\r\n\t\t// International phone number is passed.\r\n\t\t// `getNumberType('+78005553535', metadata)`.\r\n\t\telse\r\n\t\t{\r\n\t\t\tif (arg_3)\r\n\t\t\t{\r\n\t\t\t\toptions = arg_2\r\n\t\t\t\tmetadata = arg_3\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tmetadata = arg_2\r\n\t\t\t}\r\n\r\n\t\t\t// `parse` extracts phone numbers from raw text,\r\n\t\t\t// therefore it will cut off all \"garbage\" characters,\r\n\t\t\t// while this `validate` function needs to verify\r\n\t\t\t// that the phone number contains no \"garbage\"\r\n\t\t\t// therefore the explicit `isViablePhoneNumber` check.\r\n\t\t\tif (isViablePhoneNumber(arg_1))\r\n\t\t\t{\r\n\t\t\t\tinput = parse(arg_1, undefined, metadata)\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tinput = {}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t// If the phone number is passed as a parsed phone number.\r\n\t// `getNumberType({ phone: '88005553535', country: 'RU' }, ...)`.\r\n\telse if (is_object(arg_1))\r\n\t{\r\n\t\tinput = arg_1\r\n\r\n\t\tif (arg_3)\r\n\t\t{\r\n\t\t\toptions = arg_2\r\n\t\t\tmetadata = arg_3\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tmetadata = arg_2\r\n\t\t}\r\n\t}\r\n\telse throw new TypeError('A phone number must either be a string or an object of shape { phone, [country] }.')\r\n\r\n\treturn {\r\n\t\tinput,\r\n\t\toptions,\r\n\t\tmetadata\r\n\t}\r\n}\r\n\r\n// Babel transforms `typeof` into some \"branches\"\r\n// so istanbul will show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst is_object = _ => typeof _ === 'object'"],"mappings":";;;;;;;;;;;;;;AAAA,OAAOA,mBAAP,MAAgC,kCAAhC;AACA,OAAOC,cAAP,MAA2B,4BAA3B;AACA,OAAOC,KAAP,MAAkB,aAAlB,C,CAEA;;AACA,eAAe,SAASC,aAAT,GACf;EACC,0BAAqCC,kBAAkB,CAACC,SAAD,CAAvD;EAAA,IAAQC,KAAR,uBAAQA,KAAR;EAAA,IAAeC,OAAf,uBAAeA,OAAf;EAAA,IAAwBC,QAAxB,uBAAwBA,QAAxB;;EACA,OAAOP,cAAc,CAACK,KAAD,EAAQC,OAAR,EAAiBC,QAAjB,CAArB;AACA,C,CAED;;AACA,OAAO,SAASJ,kBAAT,CAA4BK,IAA5B,EACP;EACC,4BAAqCC,KAAK,CAACC,SAAN,CAAgBC,KAAhB,CAAsBC,IAAtB,CAA2BJ,IAA3B,CAArC;EAAA;EAAA,IAAOK,KAAP;EAAA,IAAcC,KAAd;EAAA,IAAqBC,KAArB;EAAA,IAA4BC,KAA5B;;EAEA,IAAIX,KAAJ;EACA,IAAIC,OAAO,GAAG,EAAd;EACA,IAAIC,QAAJ,CALD,CAOC;EACA;;EACA,IAAI,OAAOM,KAAP,KAAiB,QAArB,EACA;IACC;IACA;IACA;IACA,IAAI,QAAOC,KAAP,MAAiB,QAArB,EACA;MACC,IAAIE,KAAJ,EACA;QACCV,OAAO,GAAGS,KAAV;QACAR,QAAQ,GAAGS,KAAX;MACA,CAJD,MAMA;QACCT,QAAQ,GAAGQ,KAAX;MACA,CATF,CAWC;MACA;MACA;MACA;MACA;;;MACA,IAAIhB,mBAAmB,CAACc,KAAD,CAAvB,EACA;QACCR,KAAK,GAAGJ,KAAK,CAACY,KAAD,EAAQ;UAAEI,cAAc,EAAEH;QAAlB,CAAR,EAAmCP,QAAnC,CAAb;MACA,CAHD,MAKA;QACCF,KAAK,GAAG,EAAR;MACA;IACD,CAzBD,CA0BA;IACA;IACA;IA5BA,KA8BA;MACC,IAAIU,KAAJ,EACA;QACCT,OAAO,GAAGQ,KAAV;QACAP,QAAQ,GAAGQ,KAAX;MACA,CAJD,MAMA;QACCR,QAAQ,GAAGO,KAAX;MACA,CATF,CAWC;MACA;MACA;MACA;MACA;;;MACA,IAAIf,mBAAmB,CAACc,KAAD,CAAvB,EACA;QACCR,KAAK,GAAGJ,KAAK,CAACY,KAAD,EAAQK,SAAR,EAAmBX,QAAnB,CAAb;MACA,CAHD,MAKA;QACCF,KAAK,GAAG,EAAR;MACA;IACD;EACD,CA5DD,CA6DA;EACA;EA9DA,KA+DK,IAAIc,SAAS,CAACN,KAAD,CAAb,EACL;IACCR,KAAK,GAAGQ,KAAR;;IAEA,IAAIE,KAAJ,EACA;MACCT,OAAO,GAAGQ,KAAV;MACAP,QAAQ,GAAGQ,KAAX;IACA,CAJD,MAMA;MACCR,QAAQ,GAAGO,KAAX;IACA;EACD,CAbI,MAcA,MAAM,IAAIM,SAAJ,CAAc,oFAAd,CAAN;;EAEL,OAAO;IACNf,KAAK,EAALA,KADM;IAENC,OAAO,EAAPA,OAFM;IAGNC,QAAQ,EAARA;EAHM,CAAP;AAKA,C,CAED;AACA;;AACA;;AACA,IAAMY,SAAS,GAAG,SAAZA,SAAY,CAAAE,CAAC;EAAA,OAAI,QAAOA,CAAP,MAAa,QAAjB;AAAA,CAAnB"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getNumberType.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getNumberType.test.js new file mode 100644 index 00000000..7202cccf --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getNumberType.test.js @@ -0,0 +1,75 @@ +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +import metadata from '../metadata.max.json' assert { type: 'json' }; +import Metadata from './metadata.js'; +import _getNumberType from './getNumberType.js'; + +function getNumberType() { + for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) { + parameters[_key] = arguments[_key]; + } + + parameters.push(metadata); + return _getNumberType.apply(this, parameters); +} + +describe('getNumberType', function () { + it('should infer phone number type MOBILE', function () { + getNumberType('9150000000', 'RU').should.equal('MOBILE'); + getNumberType('7912345678', 'GB').should.equal('MOBILE'); + getNumberType('51234567', 'EE').should.equal('MOBILE'); + }); + it('should infer phone number types', function () { + getNumberType('88005553535', 'RU').should.equal('TOLL_FREE'); + getNumberType('8005553535', 'RU').should.equal('TOLL_FREE'); + getNumberType('4957777777', 'RU').should.equal('FIXED_LINE'); + getNumberType('8030000000', 'RU').should.equal('PREMIUM_RATE'); + getNumberType('2133734253', 'US').should.equal('FIXED_LINE_OR_MOBILE'); + getNumberType('5002345678', 'US').should.equal('PERSONAL_NUMBER'); + }); + it('should work when no country is passed', function () { + getNumberType('+79150000000').should.equal('MOBILE'); + }); + it('should return FIXED_LINE_OR_MOBILE when there is ambiguity', function () {// (no such country in the metadata, therefore no unit test for this `if`) + }); + it('should work in edge cases', function () { + var thrower; // // No metadata + // thrower = () => _getNumberType({ phone: '+78005553535' }) + // thrower.should.throw('`metadata` argument not passed') + // Parsed phone number + + getNumberType({ + phone: '8005553535', + country: 'RU' + }).should.equal('TOLL_FREE'); // Invalid phone number + + type(getNumberType('123', 'RU')).should.equal('undefined'); // Invalid country + + thrower = function thrower() { + return getNumberType({ + phone: '8005553535', + country: 'RUS' + }); + }; + + thrower.should["throw"]('Unknown country'); // Numerical `value` + + thrower = function thrower() { + return getNumberType(89150000000, 'RU'); + }; + + thrower.should["throw"]('A phone number must either be a string or an object of shape { phone, [country] }.'); // When `options` argument is passed. + + getNumberType('8005553535', 'RU', {}).should.equal('TOLL_FREE'); + getNumberType('+78005553535', {}).should.equal('TOLL_FREE'); + getNumberType({ + phone: '8005553535', + country: 'RU' + }, {}).should.equal('TOLL_FREE'); + }); +}); + +function type(something) { + return _typeof(something); +} +//# sourceMappingURL=getNumberType.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getNumberType.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getNumberType.test.js.map new file mode 100644 index 00000000..589f1f7d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/getNumberType.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getNumberType.test.js","names":["metadata","type","Metadata","_getNumberType","getNumberType","parameters","push","apply","describe","it","should","equal","thrower","phone","country","something"],"sources":["../source/getNumberType.test.js"],"sourcesContent":["import metadata from '../metadata.max.json' assert { type: 'json' }\r\nimport Metadata from './metadata.js'\r\nimport _getNumberType from './getNumberType.js'\r\n\r\nfunction getNumberType(...parameters) {\r\n\tparameters.push(metadata)\r\n\treturn _getNumberType.apply(this, parameters)\r\n}\r\n\r\ndescribe('getNumberType', () => {\r\n\tit('should infer phone number type MOBILE', () => {\r\n\t\tgetNumberType('9150000000', 'RU').should.equal('MOBILE')\r\n\t\tgetNumberType('7912345678', 'GB').should.equal('MOBILE')\r\n\t\tgetNumberType('51234567', 'EE').should.equal('MOBILE')\r\n\t})\r\n\r\n\tit('should infer phone number types', () => {\r\n\t\tgetNumberType('88005553535', 'RU').should.equal('TOLL_FREE')\r\n\t\tgetNumberType('8005553535', 'RU').should.equal('TOLL_FREE')\r\n\t\tgetNumberType('4957777777', 'RU').should.equal('FIXED_LINE')\r\n\t\tgetNumberType('8030000000', 'RU').should.equal('PREMIUM_RATE')\r\n\r\n\t\tgetNumberType('2133734253', 'US').should.equal('FIXED_LINE_OR_MOBILE')\r\n\t\tgetNumberType('5002345678', 'US').should.equal('PERSONAL_NUMBER')\r\n\t})\r\n\r\n\tit('should work when no country is passed', () => {\r\n\t\tgetNumberType('+79150000000').should.equal('MOBILE')\r\n\t})\r\n\r\n\tit('should return FIXED_LINE_OR_MOBILE when there is ambiguity', () => {\r\n\t\t// (no such country in the metadata, therefore no unit test for this `if`)\r\n\t})\r\n\r\n\tit('should work in edge cases', function() {\r\n\t\tlet thrower\r\n\r\n\t\t// // No metadata\r\n\t\t// thrower = () => _getNumberType({ phone: '+78005553535' })\r\n\t\t// thrower.should.throw('`metadata` argument not passed')\r\n\r\n\t\t// Parsed phone number\r\n\t\tgetNumberType({ phone: '8005553535', country: 'RU' }).should.equal('TOLL_FREE')\r\n\r\n\t\t// Invalid phone number\r\n\t\ttype(getNumberType('123', 'RU')).should.equal('undefined')\r\n\r\n\t\t// Invalid country\r\n\t\tthrower = () => getNumberType({ phone: '8005553535', country: 'RUS' })\r\n\t\tthrower.should.throw('Unknown country')\r\n\r\n\t\t// Numerical `value`\r\n\t\tthrower = () => getNumberType(89150000000, 'RU')\r\n\t\tthrower.should.throw('A phone number must either be a string or an object of shape { phone, [country] }.')\r\n\r\n\t\t// When `options` argument is passed.\r\n\t\tgetNumberType('8005553535', 'RU', {}).should.equal('TOLL_FREE')\r\n\t\tgetNumberType('+78005553535', {}).should.equal('TOLL_FREE')\r\n\t\tgetNumberType({ phone: '8005553535', country: 'RU' }, {}).should.equal('TOLL_FREE')\r\n\t})\r\n})\r\n\r\nfunction type(something) {\r\n\treturn typeof something\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/RFC3966.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/RFC3966.js new file mode 100644 index 00000000..050fe717 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/RFC3966.js @@ -0,0 +1,90 @@ +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +import isViablePhoneNumber from './isViablePhoneNumber.js'; // https://www.ietf.org/rfc/rfc3966.txt + +/** + * @param {string} text - Phone URI (RFC 3966). + * @return {object} `{ ?number, ?ext }`. + */ + +export function parseRFC3966(text) { + var number; + var ext; // Replace "tel:" with "tel=" for parsing convenience. + + text = text.replace(/^tel:/, 'tel='); + + for (var _iterator = _createForOfIteratorHelperLoose(text.split(';')), _step; !(_step = _iterator()).done;) { + var part = _step.value; + + var _part$split = part.split('='), + _part$split2 = _slicedToArray(_part$split, 2), + name = _part$split2[0], + value = _part$split2[1]; + + switch (name) { + case 'tel': + number = value; + break; + + case 'ext': + ext = value; + break; + + case 'phone-context': + // Only "country contexts" are supported. + // "Domain contexts" are ignored. + if (value[0] === '+') { + number = value + number; + } + + break; + } + } // If the phone number is not viable, then abort. + + + if (!isViablePhoneNumber(number)) { + return {}; + } + + var result = { + number: number + }; + + if (ext) { + result.ext = ext; + } + + return result; +} +/** + * @param {object} - `{ ?number, ?extension }`. + * @return {string} Phone URI (RFC 3966). + */ + +export function formatRFC3966(_ref) { + var number = _ref.number, + ext = _ref.ext; + + if (!number) { + return ''; + } + + if (number[0] !== '+') { + throw new Error("\"formatRFC3966()\" expects \"number\" to be in E.164 format."); + } + + return "tel:".concat(number).concat(ext ? ';ext=' + ext : ''); +} +//# sourceMappingURL=RFC3966.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/RFC3966.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/RFC3966.js.map new file mode 100644 index 00000000..a9d1afbc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/RFC3966.js.map @@ -0,0 +1 @@ +{"version":3,"file":"RFC3966.js","names":["isViablePhoneNumber","parseRFC3966","text","number","ext","replace","split","part","name","value","result","formatRFC3966","Error"],"sources":["../../source/helpers/RFC3966.js"],"sourcesContent":["import isViablePhoneNumber from './isViablePhoneNumber.js'\r\n\r\n// https://www.ietf.org/rfc/rfc3966.txt\r\n\r\n/**\r\n * @param {string} text - Phone URI (RFC 3966).\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\r\nexport function parseRFC3966(text) {\r\n\tlet number\r\n\tlet ext\r\n\r\n\t// Replace \"tel:\" with \"tel=\" for parsing convenience.\r\n\ttext = text.replace(/^tel:/, 'tel=')\r\n\r\n\tfor (const part of text.split(';')) {\r\n\t\tconst [name, value] = part.split('=')\r\n\t\tswitch (name) {\r\n\t\t\tcase 'tel':\r\n\t\t\t\tnumber = value\r\n\t\t\t\tbreak\r\n\t\t\tcase 'ext':\r\n\t\t\t\text = value\r\n\t\t\t\tbreak\r\n\t\t\tcase 'phone-context':\r\n\t\t\t\t// Only \"country contexts\" are supported.\r\n\t\t\t\t// \"Domain contexts\" are ignored.\r\n\t\t\t\tif (value[0] === '+') {\r\n\t\t\t\t\tnumber = value + number\r\n\t\t\t\t}\r\n\t\t\t\tbreak\r\n\t\t}\r\n\t}\r\n\r\n\t// If the phone number is not viable, then abort.\r\n\tif (!isViablePhoneNumber(number)) {\r\n\t\treturn {}\r\n\t}\r\n\r\n\tconst result = { number }\r\n\tif (ext) {\r\n\t\tresult.ext = ext\r\n\t}\r\n\treturn result\r\n}\r\n\r\n/**\r\n * @param {object} - `{ ?number, ?extension }`.\r\n * @return {string} Phone URI (RFC 3966).\r\n */\r\nexport function formatRFC3966({ number, ext }) {\r\n\tif (!number) {\r\n\t\treturn ''\r\n\t}\r\n\tif (number[0] !== '+') {\r\n\t\tthrow new Error(`\"formatRFC3966()\" expects \"number\" to be in E.164 format.`)\r\n\t}\r\n\treturn `tel:${number}${ext ? ';ext=' + ext : ''}`\r\n}"],"mappings":";;;;;;;;;;;;;;AAAA,OAAOA,mBAAP,MAAgC,0BAAhC,C,CAEA;;AAEA;AACA;AACA;AACA;;AACA,OAAO,SAASC,YAAT,CAAsBC,IAAtB,EAA4B;EAClC,IAAIC,MAAJ;EACA,IAAIC,GAAJ,CAFkC,CAIlC;;EACAF,IAAI,GAAGA,IAAI,CAACG,OAAL,CAAa,OAAb,EAAsB,MAAtB,CAAP;;EAEA,qDAAmBH,IAAI,CAACI,KAAL,CAAW,GAAX,CAAnB,wCAAoC;IAAA,IAAzBC,IAAyB;;IACnC,kBAAsBA,IAAI,CAACD,KAAL,CAAW,GAAX,CAAtB;IAAA;IAAA,IAAOE,IAAP;IAAA,IAAaC,KAAb;;IACA,QAAQD,IAAR;MACC,KAAK,KAAL;QACCL,MAAM,GAAGM,KAAT;QACA;;MACD,KAAK,KAAL;QACCL,GAAG,GAAGK,KAAN;QACA;;MACD,KAAK,eAAL;QACC;QACA;QACA,IAAIA,KAAK,CAAC,CAAD,CAAL,KAAa,GAAjB,EAAsB;UACrBN,MAAM,GAAGM,KAAK,GAAGN,MAAjB;QACA;;QACD;IAbF;EAeA,CAxBiC,CA0BlC;;;EACA,IAAI,CAACH,mBAAmB,CAACG,MAAD,CAAxB,EAAkC;IACjC,OAAO,EAAP;EACA;;EAED,IAAMO,MAAM,GAAG;IAAEP,MAAM,EAANA;EAAF,CAAf;;EACA,IAAIC,GAAJ,EAAS;IACRM,MAAM,CAACN,GAAP,GAAaA,GAAb;EACA;;EACD,OAAOM,MAAP;AACA;AAED;AACA;AACA;AACA;;AACA,OAAO,SAASC,aAAT,OAAwC;EAAA,IAAfR,MAAe,QAAfA,MAAe;EAAA,IAAPC,GAAO,QAAPA,GAAO;;EAC9C,IAAI,CAACD,MAAL,EAAa;IACZ,OAAO,EAAP;EACA;;EACD,IAAIA,MAAM,CAAC,CAAD,CAAN,KAAc,GAAlB,EAAuB;IACtB,MAAM,IAAIS,KAAJ,iEAAN;EACA;;EACD,qBAAcT,MAAd,SAAuBC,GAAG,GAAG,UAAUA,GAAb,GAAmB,EAA7C;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/RFC3966.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/RFC3966.test.js new file mode 100644 index 00000000..6c3f85f4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/RFC3966.test.js @@ -0,0 +1,38 @@ +import { parseRFC3966, formatRFC3966 } from './RFC3966.js'; +describe('RFC3966', function () { + it('should format', function () { + expect(function () { + return formatRFC3966({ + number: '123' + }); + }).to["throw"]('expects "number" to be in E.164 format'); + formatRFC3966({}).should.equal(''); + formatRFC3966({ + number: '+78005553535' + }).should.equal('tel:+78005553535'); + formatRFC3966({ + number: '+78005553535', + ext: '123' + }).should.equal('tel:+78005553535;ext=123'); + }); + it('should parse', function () { + parseRFC3966('tel:+78005553535').should.deep.equal({ + number: '+78005553535' + }); + parseRFC3966('tel:+78005553535;ext=123').should.deep.equal({ + number: '+78005553535', + ext: '123' + }); // With `phone-context` + + parseRFC3966('tel:8005553535;ext=123;phone-context=+7').should.deep.equal({ + number: '+78005553535', + ext: '123' + }); // "Domain contexts" are ignored + + parseRFC3966('tel:8005553535;ext=123;phone-context=www.leningrad.spb.ru').should.deep.equal({ + number: '8005553535', + ext: '123' + }); + }); +}); +//# sourceMappingURL=RFC3966.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/RFC3966.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/RFC3966.test.js.map new file mode 100644 index 00000000..92c2431b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/RFC3966.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"RFC3966.test.js","names":["parseRFC3966","formatRFC3966","describe","it","expect","number","to","should","equal","ext","deep"],"sources":["../../source/helpers/RFC3966.test.js"],"sourcesContent":["import { parseRFC3966, formatRFC3966 } from './RFC3966.js'\r\n\r\ndescribe('RFC3966', () => {\r\n\tit('should format', () => {\r\n\t\texpect(() => formatRFC3966({ number: '123' })).to.throw('expects \"number\" to be in E.164 format')\r\n\t\tformatRFC3966({}).should.equal('')\r\n\t\tformatRFC3966({ number: '+78005553535' }).should.equal('tel:+78005553535')\r\n\t\tformatRFC3966({ number: '+78005553535', ext: '123' }).should.equal('tel:+78005553535;ext=123')\r\n\t})\r\n\r\n\tit('should parse', () => {\r\n\t\tparseRFC3966('tel:+78005553535').should.deep.equal({\r\n\t\t\tnumber : '+78005553535'\r\n\t\t})\r\n\r\n\t\tparseRFC3966('tel:+78005553535;ext=123').should.deep.equal({\r\n\t\t\tnumber : '+78005553535',\r\n\t\t\text : '123'\r\n\t\t})\r\n\r\n\t\t// With `phone-context`\r\n\t\tparseRFC3966('tel:8005553535;ext=123;phone-context=+7').should.deep.equal({\r\n\t\t\tnumber : '+78005553535',\r\n\t\t\text : '123'\r\n\t\t})\r\n\r\n\t\t// \"Domain contexts\" are ignored\r\n\t\tparseRFC3966('tel:8005553535;ext=123;phone-context=www.leningrad.spb.ru').should.deep.equal({\r\n\t\t\tnumber : '8005553535',\r\n\t\t\text : '123'\r\n\t\t})\r\n\t})\r\n})\r\n"],"mappings":"AAAA,SAASA,YAAT,EAAuBC,aAAvB,QAA4C,cAA5C;AAEAC,QAAQ,CAAC,SAAD,EAAY,YAAM;EACzBC,EAAE,CAAC,eAAD,EAAkB,YAAM;IACzBC,MAAM,CAAC;MAAA,OAAMH,aAAa,CAAC;QAAEI,MAAM,EAAE;MAAV,CAAD,CAAnB;IAAA,CAAD,CAAN,CAA+CC,EAA/C,UAAwD,wCAAxD;IACAL,aAAa,CAAC,EAAD,CAAb,CAAkBM,MAAlB,CAAyBC,KAAzB,CAA+B,EAA/B;IACAP,aAAa,CAAC;MAAEI,MAAM,EAAE;IAAV,CAAD,CAAb,CAA0CE,MAA1C,CAAiDC,KAAjD,CAAuD,kBAAvD;IACAP,aAAa,CAAC;MAAEI,MAAM,EAAE,cAAV;MAA0BI,GAAG,EAAE;IAA/B,CAAD,CAAb,CAAsDF,MAAtD,CAA6DC,KAA7D,CAAmE,0BAAnE;EACA,CALC,CAAF;EAOAL,EAAE,CAAC,cAAD,EAAiB,YAAM;IACxBH,YAAY,CAAC,kBAAD,CAAZ,CAAiCO,MAAjC,CAAwCG,IAAxC,CAA6CF,KAA7C,CAAmD;MAClDH,MAAM,EAAG;IADyC,CAAnD;IAIAL,YAAY,CAAC,0BAAD,CAAZ,CAAyCO,MAAzC,CAAgDG,IAAhD,CAAqDF,KAArD,CAA2D;MAC1DH,MAAM,EAAG,cADiD;MAE1DI,GAAG,EAAM;IAFiD,CAA3D,EALwB,CAUxB;;IACAT,YAAY,CAAC,yCAAD,CAAZ,CAAwDO,MAAxD,CAA+DG,IAA/D,CAAoEF,KAApE,CAA0E;MACzEH,MAAM,EAAG,cADgE;MAEzEI,GAAG,EAAM;IAFgE,CAA1E,EAXwB,CAgBxB;;IACAT,YAAY,CAAC,2DAAD,CAAZ,CAA0EO,MAA1E,CAAiFG,IAAjF,CAAsFF,KAAtF,CAA4F;MAC3FH,MAAM,EAAG,YADkF;MAE3FI,GAAG,EAAM;IAFkF,CAA5F;EAIA,CArBC,CAAF;AAsBA,CA9BO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.js new file mode 100644 index 00000000..11a6ddcd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.js @@ -0,0 +1,35 @@ +import { VALID_PUNCTUATION } from '../constants.js'; // Removes brackets and replaces dashes with spaces. +// +// E.g. "(999) 111-22-33" -> "999 111 22 33" +// +// For some reason Google's metadata contains ``s with brackets and dashes. +// Meanwhile, there's no single opinion about using punctuation in international phone numbers. +// +// For example, Google's `` for USA is `+1 213-373-4253`. +// And here's a quote from WikiPedia's "North American Numbering Plan" page: +// https://en.wikipedia.org/wiki/North_American_Numbering_Plan +// +// "The country calling code for all countries participating in the NANP is 1. +// In international format, an NANP number should be listed as +1 301 555 01 00, +// where 301 is an area code (Maryland)." +// +// I personally prefer the international format without any punctuation. +// For example, brackets are remnants of the old age, meaning that the +// phone number part in brackets (so called "area code") can be omitted +// if dialing within the same "area". +// And hyphens were clearly introduced for splitting local numbers into memorizable groups. +// For example, remembering "5553535" is difficult but "555-35-35" is much simpler. +// Imagine a man taking a bus from home to work and seeing an ad with a phone number. +// He has a couple of seconds to memorize that number until it passes by. +// If it were spaces instead of hyphens the man wouldn't necessarily get it, +// but with hyphens instead of spaces the grouping is more explicit. +// I personally think that hyphens introduce visual clutter, +// so I prefer replacing them with spaces in international numbers. +// In the modern age all output is done on displays where spaces are clearly distinguishable +// so hyphens can be safely replaced with spaces without losing any legibility. +// + +export default function applyInternationalSeparatorStyle(formattedNumber) { + return formattedNumber.replace(new RegExp("[".concat(VALID_PUNCTUATION, "]+"), 'g'), ' ').trim(); +} +//# sourceMappingURL=applyInternationalSeparatorStyle.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.js.map new file mode 100644 index 00000000..f71b3daf --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.js.map @@ -0,0 +1 @@ +{"version":3,"file":"applyInternationalSeparatorStyle.js","names":["VALID_PUNCTUATION","applyInternationalSeparatorStyle","formattedNumber","replace","RegExp","trim"],"sources":["../../source/helpers/applyInternationalSeparatorStyle.js"],"sourcesContent":["import { VALID_PUNCTUATION } from '../constants.js'\r\n\r\n// Removes brackets and replaces dashes with spaces.\r\n//\r\n// E.g. \"(999) 111-22-33\" -> \"999 111 22 33\"\r\n//\r\n// For some reason Google's metadata contains ``s with brackets and dashes.\r\n// Meanwhile, there's no single opinion about using punctuation in international phone numbers.\r\n//\r\n// For example, Google's `` for USA is `+1 213-373-4253`.\r\n// And here's a quote from WikiPedia's \"North American Numbering Plan\" page:\r\n// https://en.wikipedia.org/wiki/North_American_Numbering_Plan\r\n//\r\n// \"The country calling code for all countries participating in the NANP is 1.\r\n// In international format, an NANP number should be listed as +1 301 555 01 00,\r\n// where 301 is an area code (Maryland).\"\r\n//\r\n// I personally prefer the international format without any punctuation.\r\n// For example, brackets are remnants of the old age, meaning that the\r\n// phone number part in brackets (so called \"area code\") can be omitted\r\n// if dialing within the same \"area\".\r\n// And hyphens were clearly introduced for splitting local numbers into memorizable groups.\r\n// For example, remembering \"5553535\" is difficult but \"555-35-35\" is much simpler.\r\n// Imagine a man taking a bus from home to work and seeing an ad with a phone number.\r\n// He has a couple of seconds to memorize that number until it passes by.\r\n// If it were spaces instead of hyphens the man wouldn't necessarily get it,\r\n// but with hyphens instead of spaces the grouping is more explicit.\r\n// I personally think that hyphens introduce visual clutter,\r\n// so I prefer replacing them with spaces in international numbers.\r\n// In the modern age all output is done on displays where spaces are clearly distinguishable\r\n// so hyphens can be safely replaced with spaces without losing any legibility.\r\n//\r\nexport default function applyInternationalSeparatorStyle(formattedNumber) {\r\n\treturn formattedNumber.replace(new RegExp(`[${VALID_PUNCTUATION}]+`, 'g'), ' ').trim()\r\n}"],"mappings":"AAAA,SAASA,iBAAT,QAAkC,iBAAlC,C,CAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,gCAAT,CAA0CC,eAA1C,EAA2D;EACzE,OAAOA,eAAe,CAACC,OAAhB,CAAwB,IAAIC,MAAJ,YAAeJ,iBAAf,SAAsC,GAAtC,CAAxB,EAAoE,GAApE,EAAyEK,IAAzE,EAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.test.js new file mode 100644 index 00000000..bdc633f2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.test.js @@ -0,0 +1,8 @@ +import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle.js'; +describe('applyInternationalSeparatorStyle', function () { + it('should change Google\'s international format style', function () { + applyInternationalSeparatorStyle('(xxx) xxx-xx-xx').should.equal('xxx xxx xx xx'); + applyInternationalSeparatorStyle('(xxx)xxx').should.equal('xxx xxx'); + }); +}); +//# sourceMappingURL=applyInternationalSeparatorStyle.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.test.js.map new file mode 100644 index 00000000..4ae1f110 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"applyInternationalSeparatorStyle.test.js","names":["applyInternationalSeparatorStyle","describe","it","should","equal"],"sources":["../../source/helpers/applyInternationalSeparatorStyle.test.js"],"sourcesContent":["import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle.js'\r\n\r\ndescribe('applyInternationalSeparatorStyle', () => {\r\n\tit('should change Google\\'s international format style', () => {\r\n\t\tapplyInternationalSeparatorStyle('(xxx) xxx-xx-xx').should.equal('xxx xxx xx xx')\r\n\t\tapplyInternationalSeparatorStyle('(xxx)xxx').should.equal('xxx xxx')\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,gCAAP,MAA6C,uCAA7C;AAEAC,QAAQ,CAAC,kCAAD,EAAqC,YAAM;EAClDC,EAAE,CAAC,oDAAD,EAAuD,YAAM;IAC9DF,gCAAgC,CAAC,iBAAD,CAAhC,CAAoDG,MAApD,CAA2DC,KAA3D,CAAiE,eAAjE;IACAJ,gCAAgC,CAAC,UAAD,CAAhC,CAA6CG,MAA7C,CAAoDC,KAApD,CAA0D,SAA1D;EACA,CAHC,CAAF;AAIA,CALO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/checkNumberLength.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/checkNumberLength.js new file mode 100644 index 00000000..0f3f08a2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/checkNumberLength.js @@ -0,0 +1,80 @@ +import mergeArrays from './mergeArrays.js'; +export default function checkNumberLength(nationalNumber, metadata) { + return checkNumberLengthForType(nationalNumber, undefined, metadata); +} // Checks whether a number is possible for the country based on its length. +// Should only be called for the "new" metadata which has "possible lengths". + +export function checkNumberLengthForType(nationalNumber, type, metadata) { + var type_info = metadata.type(type); // There should always be "" set for every type element. + // This is declared in the XML schema. + // For size efficiency, where a sub-description (e.g. fixed-line) + // has the same "" as the "general description", this is missing, + // so we fall back to the "general description". Where no numbers of the type + // exist at all, there is one possible length (-1) which is guaranteed + // not to match the length of any real phone number. + + var possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths(); // let local_lengths = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal() + // Metadata before version `1.0.18` didn't contain `possible_lengths`. + + if (!possible_lengths) { + return 'IS_POSSIBLE'; + } + + if (type === 'FIXED_LINE_OR_MOBILE') { + // No such country in metadata. + + /* istanbul ignore next */ + if (!metadata.type('FIXED_LINE')) { + // The rare case has been encountered where no fixedLine data is available + // (true for some non-geographic entities), so we just check mobile. + return checkNumberLengthForType(nationalNumber, 'MOBILE', metadata); + } + + var mobile_type = metadata.type('MOBILE'); + + if (mobile_type) { + // Merge the mobile data in if there was any. "Concat" creates a new + // array, it doesn't edit possible_lengths in place, so we don't need a copy. + // Note that when adding the possible lengths from mobile, we have + // to again check they aren't empty since if they are this indicates + // they are the same as the general desc and should be obtained from there. + possible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths()); // The current list is sorted; we need to merge in the new list and + // re-sort (duplicates are okay). Sorting isn't so expensive because + // the lists are very small. + // if (local_lengths) { + // local_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal()) + // } else { + // local_lengths = mobile_type.possibleLengthsLocal() + // } + } + } // If the type doesn't exist then return 'INVALID_LENGTH'. + else if (type && !type_info) { + return 'INVALID_LENGTH'; + } + + var actual_length = nationalNumber.length; // In `libphonenumber-js` all "local-only" formats are dropped for simplicity. + // // This is safe because there is never an overlap beween the possible lengths + // // and the local-only lengths; this is checked at build time. + // if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0) + // { + // return 'IS_POSSIBLE_LOCAL_ONLY' + // } + + var minimum_length = possible_lengths[0]; + + if (minimum_length === actual_length) { + return 'IS_POSSIBLE'; + } + + if (minimum_length > actual_length) { + return 'TOO_SHORT'; + } + + if (possible_lengths[possible_lengths.length - 1] < actual_length) { + return 'TOO_LONG'; + } // We skip the first element since we've already checked it. + + + return possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH'; +} +//# sourceMappingURL=checkNumberLength.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/checkNumberLength.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/checkNumberLength.js.map new file mode 100644 index 00000000..6589f07a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/checkNumberLength.js.map @@ -0,0 +1 @@ +{"version":3,"file":"checkNumberLength.js","names":["mergeArrays","checkNumberLength","nationalNumber","metadata","checkNumberLengthForType","undefined","type","type_info","possible_lengths","possibleLengths","mobile_type","actual_length","length","minimum_length","indexOf"],"sources":["../../source/helpers/checkNumberLength.js"],"sourcesContent":["import mergeArrays from './mergeArrays.js'\r\n\r\nexport default function checkNumberLength(nationalNumber, metadata) {\r\n\treturn checkNumberLengthForType(nationalNumber, undefined, metadata)\r\n}\r\n\r\n// Checks whether a number is possible for the country based on its length.\r\n// Should only be called for the \"new\" metadata which has \"possible lengths\".\r\nexport function checkNumberLengthForType(nationalNumber, type, metadata) {\r\n\tconst type_info = metadata.type(type)\r\n\r\n\t// There should always be \"\" set for every type element.\r\n\t// This is declared in the XML schema.\r\n\t// For size efficiency, where a sub-description (e.g. fixed-line)\r\n\t// has the same \"\" as the \"general description\", this is missing,\r\n\t// so we fall back to the \"general description\". Where no numbers of the type\r\n\t// exist at all, there is one possible length (-1) which is guaranteed\r\n\t// not to match the length of any real phone number.\r\n\tlet possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths()\r\n\t// let local_lengths = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal()\r\n\r\n\t// Metadata before version `1.0.18` didn't contain `possible_lengths`.\r\n\tif (!possible_lengths) {\r\n\t\treturn 'IS_POSSIBLE'\r\n\t}\r\n\r\n\tif (type === 'FIXED_LINE_OR_MOBILE') {\r\n\t\t// No such country in metadata.\r\n\t\t/* istanbul ignore next */\r\n\t\tif (!metadata.type('FIXED_LINE')) {\r\n\t\t\t// The rare case has been encountered where no fixedLine data is available\r\n\t\t\t// (true for some non-geographic entities), so we just check mobile.\r\n\t\t\treturn checkNumberLengthForType(nationalNumber, 'MOBILE', metadata)\r\n\t\t}\r\n\r\n\t\tconst mobile_type = metadata.type('MOBILE')\r\n\t\tif (mobile_type) {\r\n\t\t\t// Merge the mobile data in if there was any. \"Concat\" creates a new\r\n\t\t\t// array, it doesn't edit possible_lengths in place, so we don't need a copy.\r\n\t\t\t// Note that when adding the possible lengths from mobile, we have\r\n\t\t\t// to again check they aren't empty since if they are this indicates\r\n\t\t\t// they are the same as the general desc and should be obtained from there.\r\n\t\t\tpossible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths())\r\n\t\t\t// The current list is sorted; we need to merge in the new list and\r\n\t\t\t// re-sort (duplicates are okay). Sorting isn't so expensive because\r\n\t\t\t// the lists are very small.\r\n\r\n\t\t\t// if (local_lengths) {\r\n\t\t\t// \tlocal_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal())\r\n\t\t\t// } else {\r\n\t\t\t// \tlocal_lengths = mobile_type.possibleLengthsLocal()\r\n\t\t\t// }\r\n\t\t}\r\n\t}\r\n\t// If the type doesn't exist then return 'INVALID_LENGTH'.\r\n\telse if (type && !type_info) {\r\n\t\treturn 'INVALID_LENGTH'\r\n\t}\r\n\r\n\tconst actual_length = nationalNumber.length\r\n\r\n\t// In `libphonenumber-js` all \"local-only\" formats are dropped for simplicity.\r\n\t// // This is safe because there is never an overlap beween the possible lengths\r\n\t// // and the local-only lengths; this is checked at build time.\r\n\t// if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0)\r\n\t// {\r\n\t// \treturn 'IS_POSSIBLE_LOCAL_ONLY'\r\n\t// }\r\n\r\n\tconst minimum_length = possible_lengths[0]\r\n\r\n\tif (minimum_length === actual_length) {\r\n\t\treturn 'IS_POSSIBLE'\r\n\t}\r\n\r\n\tif (minimum_length > actual_length) {\r\n\t\treturn 'TOO_SHORT'\r\n\t}\r\n\r\n\tif (possible_lengths[possible_lengths.length - 1] < actual_length) {\r\n\t\treturn 'TOO_LONG'\r\n\t}\r\n\r\n\t// We skip the first element since we've already checked it.\r\n\treturn possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH'\r\n}"],"mappings":"AAAA,OAAOA,WAAP,MAAwB,kBAAxB;AAEA,eAAe,SAASC,iBAAT,CAA2BC,cAA3B,EAA2CC,QAA3C,EAAqD;EACnE,OAAOC,wBAAwB,CAACF,cAAD,EAAiBG,SAAjB,EAA4BF,QAA5B,CAA/B;AACA,C,CAED;AACA;;AACA,OAAO,SAASC,wBAAT,CAAkCF,cAAlC,EAAkDI,IAAlD,EAAwDH,QAAxD,EAAkE;EACxE,IAAMI,SAAS,GAAGJ,QAAQ,CAACG,IAAT,CAAcA,IAAd,CAAlB,CADwE,CAGxE;EACA;EACA;EACA;EACA;EACA;EACA;;EACA,IAAIE,gBAAgB,GAAGD,SAAS,IAAIA,SAAS,CAACE,eAAV,EAAb,IAA4CN,QAAQ,CAACM,eAAT,EAAnE,CAVwE,CAWxE;EAEA;;EACA,IAAI,CAACD,gBAAL,EAAuB;IACtB,OAAO,aAAP;EACA;;EAED,IAAIF,IAAI,KAAK,sBAAb,EAAqC;IACpC;;IACA;IACA,IAAI,CAACH,QAAQ,CAACG,IAAT,CAAc,YAAd,CAAL,EAAkC;MACjC;MACA;MACA,OAAOF,wBAAwB,CAACF,cAAD,EAAiB,QAAjB,EAA2BC,QAA3B,CAA/B;IACA;;IAED,IAAMO,WAAW,GAAGP,QAAQ,CAACG,IAAT,CAAc,QAAd,CAApB;;IACA,IAAII,WAAJ,EAAiB;MAChB;MACA;MACA;MACA;MACA;MACAF,gBAAgB,GAAGR,WAAW,CAACQ,gBAAD,EAAmBE,WAAW,CAACD,eAAZ,EAAnB,CAA9B,CANgB,CAOhB;MACA;MACA;MAEA;MACA;MACA;MACA;MACA;IACA;EACD,CA3BD,CA4BA;EA5BA,KA6BK,IAAIH,IAAI,IAAI,CAACC,SAAb,EAAwB;IAC5B,OAAO,gBAAP;EACA;;EAED,IAAMI,aAAa,GAAGT,cAAc,CAACU,MAArC,CAnDwE,CAqDxE;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA,IAAMC,cAAc,GAAGL,gBAAgB,CAAC,CAAD,CAAvC;;EAEA,IAAIK,cAAc,KAAKF,aAAvB,EAAsC;IACrC,OAAO,aAAP;EACA;;EAED,IAAIE,cAAc,GAAGF,aAArB,EAAoC;IACnC,OAAO,WAAP;EACA;;EAED,IAAIH,gBAAgB,CAACA,gBAAgB,CAACI,MAAjB,GAA0B,CAA3B,CAAhB,GAAgDD,aAApD,EAAmE;IAClE,OAAO,UAAP;EACA,CAzEuE,CA2ExE;;;EACA,OAAOH,gBAAgB,CAACM,OAAjB,CAAyBH,aAAzB,EAAwC,CAAxC,KAA8C,CAA9C,GAAkD,aAAlD,GAAkE,gBAAzE;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/checkNumberLength.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/checkNumberLength.test.js new file mode 100644 index 00000000..1072a329 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/checkNumberLength.test.js @@ -0,0 +1,40 @@ +import Metadata from '../metadata.js'; +import metadata from '../../metadata.max.json' assert { type: 'json' }; +import oldMetadata from '../../test/metadata/1.0.0/metadata.min.json' assert { type: 'json' }; +import { checkNumberLengthForType } from './checkNumberLength.js'; +describe('checkNumberLength', function () { + it('should check phone number length', function () { + // Too short. + checkNumberLength('800555353', 'FIXED_LINE', 'RU').should.equal('TOO_SHORT'); // Normal. + + checkNumberLength('8005553535', 'FIXED_LINE', 'RU').should.equal('IS_POSSIBLE'); // Too long. + + checkNumberLength('80055535355', 'FIXED_LINE', 'RU').should.equal('TOO_LONG'); // No such type. + + checkNumberLength('169454850', 'VOIP', 'AC').should.equal('INVALID_LENGTH'); // No such possible length. + + checkNumberLength('1694548', undefined, 'AD').should.equal('INVALID_LENGTH'); // FIXED_LINE_OR_MOBILE + + checkNumberLength('1694548', 'FIXED_LINE_OR_MOBILE', 'AD').should.equal('INVALID_LENGTH'); // No mobile phones. + + checkNumberLength('8123', 'FIXED_LINE_OR_MOBILE', 'TA').should.equal('IS_POSSIBLE'); // No "possible lengths" for "mobile". + + checkNumberLength('81234567', 'FIXED_LINE_OR_MOBILE', 'SZ').should.equal('IS_POSSIBLE'); + }); + it('should work for old metadata', function () { + var _oldMetadata = new Metadata(oldMetadata); + + _oldMetadata.country('RU'); + + checkNumberLengthForType('8005553535', 'FIXED_LINE', _oldMetadata).should.equal('IS_POSSIBLE'); + }); +}); + +function checkNumberLength(number, type, country) { + var _metadata = new Metadata(metadata); + + _metadata.country(country); + + return checkNumberLengthForType(number, type, _metadata); +} +//# sourceMappingURL=checkNumberLength.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/checkNumberLength.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/checkNumberLength.test.js.map new file mode 100644 index 00000000..e9d23025 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/checkNumberLength.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"checkNumberLength.test.js","names":["Metadata","metadata","type","oldMetadata","checkNumberLengthForType","describe","it","checkNumberLength","should","equal","undefined","_oldMetadata","country","number","_metadata"],"sources":["../../source/helpers/checkNumberLength.test.js"],"sourcesContent":["import Metadata from '../metadata.js'\r\nimport metadata from '../../metadata.max.json' assert { type: 'json' }\r\nimport oldMetadata from '../../test/metadata/1.0.0/metadata.min.json' assert { type: 'json' }\r\n\r\nimport { checkNumberLengthForType } from './checkNumberLength.js'\r\n\r\ndescribe('checkNumberLength', () => {\r\n\tit('should check phone number length', () => {\r\n\t\t// Too short.\r\n\t\tcheckNumberLength('800555353', 'FIXED_LINE', 'RU').should.equal('TOO_SHORT')\r\n\t\t// Normal.\r\n\t\tcheckNumberLength('8005553535', 'FIXED_LINE', 'RU').should.equal('IS_POSSIBLE')\r\n\t\t// Too long.\r\n\t\tcheckNumberLength('80055535355', 'FIXED_LINE', 'RU').should.equal('TOO_LONG')\r\n\r\n\t\t// No such type.\r\n\t\tcheckNumberLength('169454850', 'VOIP', 'AC').should.equal('INVALID_LENGTH')\r\n\t\t// No such possible length.\r\n\t\tcheckNumberLength('1694548', undefined, 'AD').should.equal('INVALID_LENGTH')\r\n\r\n\t\t// FIXED_LINE_OR_MOBILE\r\n\t\tcheckNumberLength('1694548', 'FIXED_LINE_OR_MOBILE', 'AD').should.equal('INVALID_LENGTH')\r\n\t\t// No mobile phones.\r\n\t\tcheckNumberLength('8123', 'FIXED_LINE_OR_MOBILE', 'TA').should.equal('IS_POSSIBLE')\r\n\t\t// No \"possible lengths\" for \"mobile\".\r\n\t\tcheckNumberLength('81234567', 'FIXED_LINE_OR_MOBILE', 'SZ').should.equal('IS_POSSIBLE')\r\n\t})\r\n\r\n\tit('should work for old metadata', function() {\r\n\t\tconst _oldMetadata = new Metadata(oldMetadata)\r\n\t\t_oldMetadata.country('RU')\r\n\t\tcheckNumberLengthForType('8005553535', 'FIXED_LINE', _oldMetadata).should.equal('IS_POSSIBLE')\r\n\t})\r\n})\r\n\r\nfunction checkNumberLength(number, type, country) {\r\n\tconst _metadata = new Metadata(metadata)\r\n\t_metadata.country(country)\r\n\treturn checkNumberLengthForType(number, type, _metadata)\r\n}"],"mappings":"AAAA,OAAOA,QAAP,MAAqB,gBAArB;AACA,OAAOC,QAAP,MAAqB,yBAArB,UAAwDC,IAAI,EAAE,MAA9D;AACA,OAAOC,WAAP,MAAwB,6CAAxB,UAA+ED,IAAI,EAAE,MAArF;AAEA,SAASE,wBAAT,QAAyC,wBAAzC;AAEAC,QAAQ,CAAC,mBAAD,EAAsB,YAAM;EACnCC,EAAE,CAAC,kCAAD,EAAqC,YAAM;IAC5C;IACAC,iBAAiB,CAAC,WAAD,EAAc,YAAd,EAA4B,IAA5B,CAAjB,CAAmDC,MAAnD,CAA0DC,KAA1D,CAAgE,WAAhE,EAF4C,CAG5C;;IACAF,iBAAiB,CAAC,YAAD,EAAe,YAAf,EAA6B,IAA7B,CAAjB,CAAoDC,MAApD,CAA2DC,KAA3D,CAAiE,aAAjE,EAJ4C,CAK5C;;IACAF,iBAAiB,CAAC,aAAD,EAAgB,YAAhB,EAA8B,IAA9B,CAAjB,CAAqDC,MAArD,CAA4DC,KAA5D,CAAkE,UAAlE,EAN4C,CAQ5C;;IACAF,iBAAiB,CAAC,WAAD,EAAc,MAAd,EAAsB,IAAtB,CAAjB,CAA6CC,MAA7C,CAAoDC,KAApD,CAA0D,gBAA1D,EAT4C,CAU5C;;IACAF,iBAAiB,CAAC,SAAD,EAAYG,SAAZ,EAAuB,IAAvB,CAAjB,CAA8CF,MAA9C,CAAqDC,KAArD,CAA2D,gBAA3D,EAX4C,CAa5C;;IACAF,iBAAiB,CAAC,SAAD,EAAY,sBAAZ,EAAoC,IAApC,CAAjB,CAA2DC,MAA3D,CAAkEC,KAAlE,CAAwE,gBAAxE,EAd4C,CAe5C;;IACAF,iBAAiB,CAAC,MAAD,EAAS,sBAAT,EAAiC,IAAjC,CAAjB,CAAwDC,MAAxD,CAA+DC,KAA/D,CAAqE,aAArE,EAhB4C,CAiB5C;;IACAF,iBAAiB,CAAC,UAAD,EAAa,sBAAb,EAAqC,IAArC,CAAjB,CAA4DC,MAA5D,CAAmEC,KAAnE,CAAyE,aAAzE;EACA,CAnBC,CAAF;EAqBAH,EAAE,CAAC,8BAAD,EAAiC,YAAW;IAC7C,IAAMK,YAAY,GAAG,IAAIX,QAAJ,CAAaG,WAAb,CAArB;;IACAQ,YAAY,CAACC,OAAb,CAAqB,IAArB;;IACAR,wBAAwB,CAAC,YAAD,EAAe,YAAf,EAA6BO,YAA7B,CAAxB,CAAmEH,MAAnE,CAA0EC,KAA1E,CAAgF,aAAhF;EACA,CAJC,CAAF;AAKA,CA3BO,CAAR;;AA6BA,SAASF,iBAAT,CAA2BM,MAA3B,EAAmCX,IAAnC,EAAyCU,OAAzC,EAAkD;EACjD,IAAME,SAAS,GAAG,IAAId,QAAJ,CAAaC,QAAb,CAAlB;;EACAa,SAAS,CAACF,OAAV,CAAkBA,OAAlB;;EACA,OAAOR,wBAAwB,CAACS,MAAD,EAASX,IAAT,EAAeY,SAAf,CAA/B;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extension/createExtensionPattern.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extension/createExtensionPattern.js new file mode 100644 index 00000000..84c9964b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extension/createExtensionPattern.js @@ -0,0 +1,108 @@ +import { VALID_DIGITS } from '../../constants.js'; // The RFC 3966 format for extensions. + +var RFC3966_EXTN_PREFIX = ';ext='; +/** + * Helper method for constructing regular expressions for parsing. Creates + * an expression that captures up to max_length digits. + * @return {string} RegEx pattern to capture extension digits. + */ + +var getExtensionDigitsPattern = function getExtensionDigitsPattern(maxLength) { + return "([".concat(VALID_DIGITS, "]{1,").concat(maxLength, "})"); +}; +/** + * Helper initialiser method to create the regular-expression pattern to match + * extensions. + * Copy-pasted from Google's `libphonenumber`: + * https://github.com/google/libphonenumber/blob/55b2646ec9393f4d3d6661b9c82ef9e258e8b829/javascript/i18n/phonenumbers/phonenumberutil.js#L759-L766 + * @return {string} RegEx pattern to capture extensions. + */ + + +export default function createExtensionPattern(purpose) { + // We cap the maximum length of an extension based on the ambiguity of the way + // the extension is prefixed. As per ITU, the officially allowed length for + // extensions is actually 40, but we don't support this since we haven't seen real + // examples and this introduces many false interpretations as the extension labels + // are not standardized. + + /** @type {string} */ + var extLimitAfterExplicitLabel = '20'; + /** @type {string} */ + + var extLimitAfterLikelyLabel = '15'; + /** @type {string} */ + + var extLimitAfterAmbiguousChar = '9'; + /** @type {string} */ + + var extLimitWhenNotSure = '6'; + /** @type {string} */ + + var possibleSeparatorsBetweenNumberAndExtLabel = "[ \xA0\\t,]*"; // Optional full stop (.) or colon, followed by zero or more spaces/tabs/commas. + + /** @type {string} */ + + var possibleCharsAfterExtLabel = "[:\\.\uFF0E]?[ \xA0\\t,-]*"; + /** @type {string} */ + + var optionalExtnSuffix = "#?"; // Here the extension is called out in more explicit way, i.e mentioning it obvious + // patterns like "ext.". + + /** @type {string} */ + + var explicitExtLabels = "(?:e?xt(?:ensi(?:o\u0301?|\xF3))?n?|\uFF45?\uFF58\uFF54\uFF4E?|\u0434\u043E\u0431|anexo)"; // One-character symbols that can be used to indicate an extension, and less + // commonly used or more ambiguous extension labels. + + /** @type {string} */ + + var ambiguousExtLabels = "(?:[x\uFF58#\uFF03~\uFF5E]|int|\uFF49\uFF4E\uFF54)"; // When extension is not separated clearly. + + /** @type {string} */ + + var ambiguousSeparator = "[- ]+"; // This is the same as possibleSeparatorsBetweenNumberAndExtLabel, but not matching + // comma as extension label may have it. + + /** @type {string} */ + + var possibleSeparatorsNumberExtLabelNoComma = "[ \xA0\\t]*"; // ",," is commonly used for auto dialling the extension when connected. First + // comma is matched through possibleSeparatorsBetweenNumberAndExtLabel, so we do + // not repeat it here. Semi-colon works in Iphone and Android also to pop up a + // button with the extension number following. + + /** @type {string} */ + + var autoDiallingAndExtLabelsFound = "(?:,{2}|;)"; + /** @type {string} */ + + var rfcExtn = RFC3966_EXTN_PREFIX + getExtensionDigitsPattern(extLimitAfterExplicitLabel); + /** @type {string} */ + + var explicitExtn = possibleSeparatorsBetweenNumberAndExtLabel + explicitExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterExplicitLabel) + optionalExtnSuffix; + /** @type {string} */ + + var ambiguousExtn = possibleSeparatorsBetweenNumberAndExtLabel + ambiguousExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix; + /** @type {string} */ + + var americanStyleExtnWithSuffix = ambiguousSeparator + getExtensionDigitsPattern(extLimitWhenNotSure) + "#"; + /** @type {string} */ + + var autoDiallingExtn = possibleSeparatorsNumberExtLabelNoComma + autoDiallingAndExtLabelsFound + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterLikelyLabel) + optionalExtnSuffix; + /** @type {string} */ + + var onlyCommasExtn = possibleSeparatorsNumberExtLabelNoComma + "(?:,)+" + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix; // The first regular expression covers RFC 3966 format, where the extension is added + // using ";ext=". The second more generic where extension is mentioned with explicit + // labels like "ext:". In both the above cases we allow more numbers in extension than + // any other extension labels. The third one captures when single character extension + // labels or less commonly used labels are used. In such cases we capture fewer + // extension digits in order to reduce the chance of falsely interpreting two + // numbers beside each other as a number + extension. The fourth one covers the + // special case of American numbers where the extension is written with a hash + // at the end, such as "- 503#". The fifth one is exclusively for extension + // autodialling formats which are used when dialling and in this case we accept longer + // extensions. The last one is more liberal on the number of commas that acts as + // extension labels, so we have a strict cap on the number of digits in such extensions. + + return rfcExtn + "|" + explicitExtn + "|" + ambiguousExtn + "|" + americanStyleExtnWithSuffix + "|" + autoDiallingExtn + "|" + onlyCommasExtn; +} +//# sourceMappingURL=createExtensionPattern.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extension/createExtensionPattern.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extension/createExtensionPattern.js.map new file mode 100644 index 00000000..1ee7217f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extension/createExtensionPattern.js.map @@ -0,0 +1 @@ +{"version":3,"file":"createExtensionPattern.js","names":["VALID_DIGITS","RFC3966_EXTN_PREFIX","getExtensionDigitsPattern","maxLength","createExtensionPattern","purpose","extLimitAfterExplicitLabel","extLimitAfterLikelyLabel","extLimitAfterAmbiguousChar","extLimitWhenNotSure","possibleSeparatorsBetweenNumberAndExtLabel","possibleCharsAfterExtLabel","optionalExtnSuffix","explicitExtLabels","ambiguousExtLabels","ambiguousSeparator","possibleSeparatorsNumberExtLabelNoComma","autoDiallingAndExtLabelsFound","rfcExtn","explicitExtn","ambiguousExtn","americanStyleExtnWithSuffix","autoDiallingExtn","onlyCommasExtn"],"sources":["../../../source/helpers/extension/createExtensionPattern.js"],"sourcesContent":["import { VALID_DIGITS } from '../../constants.js'\r\n\r\n// The RFC 3966 format for extensions.\r\nconst RFC3966_EXTN_PREFIX = ';ext='\r\n\r\n/**\r\n * Helper method for constructing regular expressions for parsing. Creates\r\n * an expression that captures up to max_length digits.\r\n * @return {string} RegEx pattern to capture extension digits.\r\n */\r\nconst getExtensionDigitsPattern = (maxLength) => `([${VALID_DIGITS}]{1,${maxLength}})`\r\n\r\n/**\r\n * Helper initialiser method to create the regular-expression pattern to match\r\n * extensions.\r\n * Copy-pasted from Google's `libphonenumber`:\r\n * https://github.com/google/libphonenumber/blob/55b2646ec9393f4d3d6661b9c82ef9e258e8b829/javascript/i18n/phonenumbers/phonenumberutil.js#L759-L766\r\n * @return {string} RegEx pattern to capture extensions.\r\n */\r\nexport default function createExtensionPattern(purpose) {\r\n\t// We cap the maximum length of an extension based on the ambiguity of the way\r\n\t// the extension is prefixed. As per ITU, the officially allowed length for\r\n\t// extensions is actually 40, but we don't support this since we haven't seen real\r\n\t// examples and this introduces many false interpretations as the extension labels\r\n\t// are not standardized.\r\n\t/** @type {string} */\r\n\tvar extLimitAfterExplicitLabel = '20';\r\n\t/** @type {string} */\r\n\tvar extLimitAfterLikelyLabel = '15';\r\n\t/** @type {string} */\r\n\tvar extLimitAfterAmbiguousChar = '9';\r\n\t/** @type {string} */\r\n\tvar extLimitWhenNotSure = '6';\r\n\r\n\t/** @type {string} */\r\n\tvar possibleSeparatorsBetweenNumberAndExtLabel = \"[ \\u00A0\\\\t,]*\";\r\n\t// Optional full stop (.) or colon, followed by zero or more spaces/tabs/commas.\r\n\t/** @type {string} */\r\n\tvar possibleCharsAfterExtLabel = \"[:\\\\.\\uFF0E]?[ \\u00A0\\\\t,-]*\";\r\n\t/** @type {string} */\r\n\tvar optionalExtnSuffix = \"#?\";\r\n\r\n\t// Here the extension is called out in more explicit way, i.e mentioning it obvious\r\n\t// patterns like \"ext.\".\r\n\t/** @type {string} */\r\n\tvar explicitExtLabels =\r\n\t \"(?:e?xt(?:ensi(?:o\\u0301?|\\u00F3))?n?|\\uFF45?\\uFF58\\uFF54\\uFF4E?|\\u0434\\u043E\\u0431|anexo)\";\r\n\t// One-character symbols that can be used to indicate an extension, and less\r\n\t// commonly used or more ambiguous extension labels.\r\n\t/** @type {string} */\r\n\tvar ambiguousExtLabels = \"(?:[x\\uFF58#\\uFF03~\\uFF5E]|int|\\uFF49\\uFF4E\\uFF54)\";\r\n\t// When extension is not separated clearly.\r\n\t/** @type {string} */\r\n\tvar ambiguousSeparator = \"[- ]+\";\r\n\t// This is the same as possibleSeparatorsBetweenNumberAndExtLabel, but not matching\r\n\t// comma as extension label may have it.\r\n\t/** @type {string} */\r\n\tvar possibleSeparatorsNumberExtLabelNoComma = \"[ \\u00A0\\\\t]*\";\r\n\t// \",,\" is commonly used for auto dialling the extension when connected. First\r\n\t// comma is matched through possibleSeparatorsBetweenNumberAndExtLabel, so we do\r\n\t// not repeat it here. Semi-colon works in Iphone and Android also to pop up a\r\n\t// button with the extension number following.\r\n\t/** @type {string} */\r\n\tvar autoDiallingAndExtLabelsFound = \"(?:,{2}|;)\";\r\n\r\n\t/** @type {string} */\r\n\tvar rfcExtn = RFC3966_EXTN_PREFIX\r\n\t + getExtensionDigitsPattern(extLimitAfterExplicitLabel);\r\n\t/** @type {string} */\r\n\tvar explicitExtn = possibleSeparatorsBetweenNumberAndExtLabel + explicitExtLabels\r\n\t + possibleCharsAfterExtLabel\r\n\t + getExtensionDigitsPattern(extLimitAfterExplicitLabel)\r\n\t + optionalExtnSuffix;\r\n\t/** @type {string} */\r\n\tvar ambiguousExtn = possibleSeparatorsBetweenNumberAndExtLabel + ambiguousExtLabels\r\n\t + possibleCharsAfterExtLabel\r\n\t+ getExtensionDigitsPattern(extLimitAfterAmbiguousChar)\r\n\t+ optionalExtnSuffix;\r\n\t/** @type {string} */\r\n\tvar americanStyleExtnWithSuffix = ambiguousSeparator\r\n\t+ getExtensionDigitsPattern(extLimitWhenNotSure) + \"#\";\r\n\r\n\t/** @type {string} */\r\n\tvar autoDiallingExtn = possibleSeparatorsNumberExtLabelNoComma\r\n\t + autoDiallingAndExtLabelsFound + possibleCharsAfterExtLabel\r\n\t + getExtensionDigitsPattern(extLimitAfterLikelyLabel)\r\n\t+ optionalExtnSuffix;\r\n\t/** @type {string} */\r\n\tvar onlyCommasExtn = possibleSeparatorsNumberExtLabelNoComma\r\n\t + \"(?:,)+\" + possibleCharsAfterExtLabel\r\n\t + getExtensionDigitsPattern(extLimitAfterAmbiguousChar)\r\n\t + optionalExtnSuffix;\r\n\r\n\t// The first regular expression covers RFC 3966 format, where the extension is added\r\n\t// using \";ext=\". The second more generic where extension is mentioned with explicit\r\n\t// labels like \"ext:\". In both the above cases we allow more numbers in extension than\r\n\t// any other extension labels. The third one captures when single character extension\r\n\t// labels or less commonly used labels are used. In such cases we capture fewer\r\n\t// extension digits in order to reduce the chance of falsely interpreting two\r\n\t// numbers beside each other as a number + extension. The fourth one covers the\r\n\t// special case of American numbers where the extension is written with a hash\r\n\t// at the end, such as \"- 503#\". The fifth one is exclusively for extension\r\n\t// autodialling formats which are used when dialling and in this case we accept longer\r\n\t// extensions. The last one is more liberal on the number of commas that acts as\r\n\t// extension labels, so we have a strict cap on the number of digits in such extensions.\r\n\treturn rfcExtn + \"|\"\r\n\t + explicitExtn + \"|\"\r\n\t + ambiguousExtn + \"|\"\r\n\t + americanStyleExtnWithSuffix + \"|\"\r\n\t + autoDiallingExtn + \"|\"\r\n\t + onlyCommasExtn;\r\n}"],"mappings":"AAAA,SAASA,YAAT,QAA6B,oBAA7B,C,CAEA;;AACA,IAAMC,mBAAmB,GAAG,OAA5B;AAEA;AACA;AACA;AACA;AACA;;AACA,IAAMC,yBAAyB,GAAG,SAA5BA,yBAA4B,CAACC,SAAD;EAAA,mBAAoBH,YAApB,iBAAuCG,SAAvC;AAAA,CAAlC;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,eAAe,SAASC,sBAAT,CAAgCC,OAAhC,EAAyC;EACvD;EACA;EACA;EACA;EACA;;EACA;EACA,IAAIC,0BAA0B,GAAG,IAAjC;EACA;;EACA,IAAIC,wBAAwB,GAAG,IAA/B;EACA;;EACA,IAAIC,0BAA0B,GAAG,GAAjC;EACA;;EACA,IAAIC,mBAAmB,GAAG,GAA1B;EAEA;;EACA,IAAIC,0CAA0C,GAAG,cAAjD,CAhBuD,CAiBvD;;EACA;;EACA,IAAIC,0BAA0B,GAAG,4BAAjC;EACA;;EACA,IAAIC,kBAAkB,GAAG,IAAzB,CArBuD,CAuBvD;EACA;;EACA;;EACA,IAAIC,iBAAiB,GACnB,0FADF,CA1BuD,CA4BvD;EACA;;EACA;;EACA,IAAIC,kBAAkB,GAAG,oDAAzB,CA/BuD,CAgCvD;;EACA;;EACA,IAAIC,kBAAkB,GAAG,OAAzB,CAlCuD,CAmCvD;EACA;;EACA;;EACA,IAAIC,uCAAuC,GAAG,aAA9C,CAtCuD,CAuCvD;EACA;EACA;EACA;;EACA;;EACA,IAAIC,6BAA6B,GAAG,YAApC;EAEA;;EACA,IAAIC,OAAO,GAAGjB,mBAAmB,GAC1BC,yBAAyB,CAACI,0BAAD,CADhC;EAEA;;EACA,IAAIa,YAAY,GAAGT,0CAA0C,GAAGG,iBAA7C,GACZF,0BADY,GAEZT,yBAAyB,CAACI,0BAAD,CAFb,GAGZM,kBAHP;EAIA;;EACA,IAAIQ,aAAa,GAAGV,0CAA0C,GAAGI,kBAA7C,GACbH,0BADa,GAElBT,yBAAyB,CAACM,0BAAD,CAFP,GAGlBI,kBAHF;EAIA;;EACA,IAAIS,2BAA2B,GAAGN,kBAAkB,GAClDb,yBAAyB,CAACO,mBAAD,CADO,GACiB,GADnD;EAGA;;EACA,IAAIa,gBAAgB,GAAGN,uCAAuC,GACvDC,6BADgB,GACgBN,0BADhB,GAEhBT,yBAAyB,CAACK,wBAAD,CAFT,GAGrBK,kBAHF;EAIA;;EACA,IAAIW,cAAc,GAAGP,uCAAuC,GACtD,QADe,GACJL,0BADI,GAEfT,yBAAyB,CAACM,0BAAD,CAFV,GAGfI,kBAHN,CArEuD,CA0EvD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EACA,OAAOM,OAAO,GAAG,GAAV,GACEC,YADF,GACiB,GADjB,GAEEC,aAFF,GAEkB,GAFlB,GAGEC,2BAHF,GAGgC,GAHhC,GAIEC,gBAJF,GAIqB,GAJrB,GAKEC,cALT;AAMA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extension/extractExtension.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extension/extractExtension.js new file mode 100644 index 00000000..7b90393a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extension/extractExtension.js @@ -0,0 +1,32 @@ +import createExtensionPattern from './createExtensionPattern.js'; // Regexp of all known extension prefixes used by different regions followed by +// 1 or more valid digits, for use when parsing. + +var EXTN_PATTERN = new RegExp('(?:' + createExtensionPattern() + ')$', 'i'); // Strips any extension (as in, the part of the number dialled after the call is +// connected, usually indicated with extn, ext, x or similar) from the end of +// the number, and returns it. + +export default function extractExtension(number) { + var start = number.search(EXTN_PATTERN); + + if (start < 0) { + return {}; + } // If we find a potential extension, and the number preceding this is a viable + // number, we assume it is an extension. + + + var numberWithoutExtension = number.slice(0, start); + var matches = number.match(EXTN_PATTERN); + var i = 1; + + while (i < matches.length) { + if (matches[i]) { + return { + number: numberWithoutExtension, + ext: matches[i] + }; + } + + i++; + } +} +//# sourceMappingURL=extractExtension.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extension/extractExtension.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extension/extractExtension.js.map new file mode 100644 index 00000000..ba274c89 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extension/extractExtension.js.map @@ -0,0 +1 @@ +{"version":3,"file":"extractExtension.js","names":["createExtensionPattern","EXTN_PATTERN","RegExp","extractExtension","number","start","search","numberWithoutExtension","slice","matches","match","i","length","ext"],"sources":["../../../source/helpers/extension/extractExtension.js"],"sourcesContent":["import createExtensionPattern from './createExtensionPattern.js'\r\n\r\n// Regexp of all known extension prefixes used by different regions followed by\r\n// 1 or more valid digits, for use when parsing.\r\nconst EXTN_PATTERN = new RegExp('(?:' + createExtensionPattern() + ')$', 'i')\r\n\r\n// Strips any extension (as in, the part of the number dialled after the call is\r\n// connected, usually indicated with extn, ext, x or similar) from the end of\r\n// the number, and returns it.\r\nexport default function extractExtension(number) {\r\n\tconst start = number.search(EXTN_PATTERN)\r\n\tif (start < 0) {\r\n\t\treturn {}\r\n\t}\r\n\t// If we find a potential extension, and the number preceding this is a viable\r\n\t// number, we assume it is an extension.\r\n\tconst numberWithoutExtension = number.slice(0, start)\r\n\tconst matches = number.match(EXTN_PATTERN)\r\n\tlet i = 1\r\n\twhile (i < matches.length) {\r\n\t\tif (matches[i]) {\r\n\t\t\treturn {\r\n\t\t\t\tnumber: numberWithoutExtension,\r\n\t\t\t\text: matches[i]\r\n\t\t\t}\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n}"],"mappings":"AAAA,OAAOA,sBAAP,MAAmC,6BAAnC,C,CAEA;AACA;;AACA,IAAMC,YAAY,GAAG,IAAIC,MAAJ,CAAW,QAAQF,sBAAsB,EAA9B,GAAmC,IAA9C,EAAoD,GAApD,CAArB,C,CAEA;AACA;AACA;;AACA,eAAe,SAASG,gBAAT,CAA0BC,MAA1B,EAAkC;EAChD,IAAMC,KAAK,GAAGD,MAAM,CAACE,MAAP,CAAcL,YAAd,CAAd;;EACA,IAAII,KAAK,GAAG,CAAZ,EAAe;IACd,OAAO,EAAP;EACA,CAJ+C,CAKhD;EACA;;;EACA,IAAME,sBAAsB,GAAGH,MAAM,CAACI,KAAP,CAAa,CAAb,EAAgBH,KAAhB,CAA/B;EACA,IAAMI,OAAO,GAAGL,MAAM,CAACM,KAAP,CAAaT,YAAb,CAAhB;EACA,IAAIU,CAAC,GAAG,CAAR;;EACA,OAAOA,CAAC,GAAGF,OAAO,CAACG,MAAnB,EAA2B;IAC1B,IAAIH,OAAO,CAACE,CAAD,CAAX,EAAgB;MACf,OAAO;QACNP,MAAM,EAAEG,sBADF;QAENM,GAAG,EAAEJ,OAAO,CAACE,CAAD;MAFN,CAAP;IAIA;;IACDA,CAAC;EACD;AACD"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.js new file mode 100644 index 00000000..8617b3f3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.js @@ -0,0 +1,102 @@ +import stripIddPrefix from './stripIddPrefix.js'; +import extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js'; +import Metadata from '../metadata.js'; +import { MAX_LENGTH_COUNTRY_CODE } from '../constants.js'; +/** + * Converts a phone number digits (possibly with a `+`) + * into a calling code and the rest phone number digits. + * The "rest phone number digits" could include + * a national prefix, carrier code, and national + * (significant) number. + * @param {string} number — Phone number digits (possibly with a `+`). + * @param {string} [country] — Default country. + * @param {string} [callingCode] — Default calling code (some phone numbering plans are non-geographic). + * @param {object} metadata + * @return {object} `{ countryCallingCode: string?, number: string }` + * @example + * // Returns `{ countryCallingCode: "1", number: "2133734253" }`. + * extractCountryCallingCode('2133734253', 'US', null, metadata) + * extractCountryCallingCode('2133734253', null, '1', metadata) + * extractCountryCallingCode('+12133734253', null, null, metadata) + * extractCountryCallingCode('+12133734253', 'RU', null, metadata) + */ + +export default function extractCountryCallingCode(number, country, callingCode, metadata) { + if (!number) { + return {}; + } // If this is not an international phone number, + // then either extract an "IDD" prefix, or extract a + // country calling code from a number by autocorrecting it + // by prepending a leading `+` in cases when it starts + // with the country calling code. + // https://wikitravel.org/en/International_dialling_prefix + // https://github.com/catamphetamine/libphonenumber-js/issues/376 + + + if (number[0] !== '+') { + // Convert an "out-of-country" dialing phone number + // to a proper international phone number. + var numberWithoutIDD = stripIddPrefix(number, country, callingCode, metadata); // If an IDD prefix was stripped then + // convert the number to international one + // for subsequent parsing. + + if (numberWithoutIDD && numberWithoutIDD !== number) { + number = '+' + numberWithoutIDD; + } else { + // Check to see if the number starts with the country calling code + // for the default country. If so, we remove the country calling code, + // and do some checks on the validity of the number before and after. + // https://github.com/catamphetamine/libphonenumber-js/issues/376 + if (country || callingCode) { + var _extractCountryCallin = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, callingCode, metadata), + countryCallingCode = _extractCountryCallin.countryCallingCode, + shorterNumber = _extractCountryCallin.number; + + if (countryCallingCode) { + return { + countryCallingCode: countryCallingCode, + number: shorterNumber + }; + } + } + + return { + number: number + }; + } + } // Fast abortion: country codes do not begin with a '0' + + + if (number[1] === '0') { + return {}; + } + + metadata = new Metadata(metadata); // The thing with country phone codes + // is that they are orthogonal to each other + // i.e. there's no such country phone code A + // for which country phone code B exists + // where B starts with A. + // Therefore, while scanning digits, + // if a valid country code is found, + // that means that it is the country code. + // + + var i = 2; + + while (i - 1 <= MAX_LENGTH_COUNTRY_CODE && i <= number.length) { + var _countryCallingCode = number.slice(1, i); + + if (metadata.hasCallingCode(_countryCallingCode)) { + metadata.selectNumberingPlan(_countryCallingCode); + return { + countryCallingCode: _countryCallingCode, + number: number.slice(i) + }; + } + + i++; + } + + return {}; +} +//# sourceMappingURL=extractCountryCallingCode.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.js.map new file mode 100644 index 00000000..dc2c490d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.js.map @@ -0,0 +1 @@ +{"version":3,"file":"extractCountryCallingCode.js","names":["stripIddPrefix","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","Metadata","MAX_LENGTH_COUNTRY_CODE","extractCountryCallingCode","number","country","callingCode","metadata","numberWithoutIDD","countryCallingCode","shorterNumber","i","length","slice","hasCallingCode","selectNumberingPlan"],"sources":["../../source/helpers/extractCountryCallingCode.js"],"sourcesContent":["import stripIddPrefix from './stripIddPrefix.js'\r\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js'\r\nimport Metadata from '../metadata.js'\r\nimport { MAX_LENGTH_COUNTRY_CODE } from '../constants.js'\r\n\r\n/**\r\n * Converts a phone number digits (possibly with a `+`)\r\n * into a calling code and the rest phone number digits.\r\n * The \"rest phone number digits\" could include\r\n * a national prefix, carrier code, and national\r\n * (significant) number.\r\n * @param {string} number — Phone number digits (possibly with a `+`).\r\n * @param {string} [country] — Default country.\r\n * @param {string} [callingCode] — Default calling code (some phone numbering plans are non-geographic).\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`\r\n * @example\r\n * // Returns `{ countryCallingCode: \"1\", number: \"2133734253\" }`.\r\n * extractCountryCallingCode('2133734253', 'US', null, metadata)\r\n * extractCountryCallingCode('2133734253', null, '1', metadata)\r\n * extractCountryCallingCode('+12133734253', null, null, metadata)\r\n * extractCountryCallingCode('+12133734253', 'RU', null, metadata)\r\n */\r\nexport default function extractCountryCallingCode(\r\n\tnumber,\r\n\tcountry,\r\n\tcallingCode,\r\n\tmetadata\r\n) {\r\n\tif (!number) {\r\n\t\treturn {}\r\n\t}\r\n\r\n\t// If this is not an international phone number,\r\n\t// then either extract an \"IDD\" prefix, or extract a\r\n\t// country calling code from a number by autocorrecting it\r\n\t// by prepending a leading `+` in cases when it starts\r\n\t// with the country calling code.\r\n\t// https://wikitravel.org/en/International_dialling_prefix\r\n\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\tif (number[0] !== '+') {\r\n\t\t// Convert an \"out-of-country\" dialing phone number\r\n\t\t// to a proper international phone number.\r\n\t\tconst numberWithoutIDD = stripIddPrefix(number, country, callingCode, metadata)\r\n\t\t// If an IDD prefix was stripped then\r\n\t\t// convert the number to international one\r\n\t\t// for subsequent parsing.\r\n\t\tif (numberWithoutIDD && numberWithoutIDD !== number) {\r\n\t\t\tnumber = '+' + numberWithoutIDD\r\n\t\t} else {\r\n\t\t\t// Check to see if the number starts with the country calling code\r\n\t\t\t// for the default country. If so, we remove the country calling code,\r\n\t\t\t// and do some checks on the validity of the number before and after.\r\n\t\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\t\t\tif (country || callingCode) {\r\n\t\t\t\tconst {\r\n\t\t\t\t\tcountryCallingCode,\r\n\t\t\t\t\tnumber: shorterNumber\r\n\t\t\t\t} = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\r\n\t\t\t\t\tnumber,\r\n\t\t\t\t\tcountry,\r\n\t\t\t\t\tcallingCode,\r\n\t\t\t\t\tmetadata\r\n\t\t\t\t)\r\n\t\t\t\tif (countryCallingCode) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tcountryCallingCode,\r\n\t\t\t\t\t\tnumber: shorterNumber\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn { number }\r\n\t\t}\r\n\t}\r\n\r\n\t// Fast abortion: country codes do not begin with a '0'\r\n\tif (number[1] === '0') {\r\n\t\treturn {}\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\t// The thing with country phone codes\r\n\t// is that they are orthogonal to each other\r\n\t// i.e. there's no such country phone code A\r\n\t// for which country phone code B exists\r\n\t// where B starts with A.\r\n\t// Therefore, while scanning digits,\r\n\t// if a valid country code is found,\r\n\t// that means that it is the country code.\r\n\t//\r\n\tlet i = 2\r\n\twhile (i - 1 <= MAX_LENGTH_COUNTRY_CODE && i <= number.length) {\r\n\t\tconst countryCallingCode = number.slice(1, i)\r\n\t\tif (metadata.hasCallingCode(countryCallingCode)) {\r\n\t\t\tmetadata.selectNumberingPlan(countryCallingCode)\r\n\t\t\treturn {\r\n\t\t\t\tcountryCallingCode,\r\n\t\t\t\tnumber: number.slice(i)\r\n\t\t\t}\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\r\n\treturn {}\r\n}"],"mappings":"AAAA,OAAOA,cAAP,MAA2B,qBAA3B;AACA,OAAOC,+DAAP,MAA4E,sEAA5E;AACA,OAAOC,QAAP,MAAqB,gBAArB;AACA,SAASC,uBAAT,QAAwC,iBAAxC;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,yBAAT,CACdC,MADc,EAEdC,OAFc,EAGdC,WAHc,EAIdC,QAJc,EAKb;EACD,IAAI,CAACH,MAAL,EAAa;IACZ,OAAO,EAAP;EACA,CAHA,CAKD;EACA;EACA;EACA;EACA;EACA;EACA;;;EACA,IAAIA,MAAM,CAAC,CAAD,CAAN,KAAc,GAAlB,EAAuB;IACtB;IACA;IACA,IAAMI,gBAAgB,GAAGT,cAAc,CAACK,MAAD,EAASC,OAAT,EAAkBC,WAAlB,EAA+BC,QAA/B,CAAvC,CAHsB,CAItB;IACA;IACA;;IACA,IAAIC,gBAAgB,IAAIA,gBAAgB,KAAKJ,MAA7C,EAAqD;MACpDA,MAAM,GAAG,MAAMI,gBAAf;IACA,CAFD,MAEO;MACN;MACA;MACA;MACA;MACA,IAAIH,OAAO,IAAIC,WAAf,EAA4B;QAC3B,4BAGIN,+DAA+D,CAClEI,MADkE,EAElEC,OAFkE,EAGlEC,WAHkE,EAIlEC,QAJkE,CAHnE;QAAA,IACCE,kBADD,yBACCA,kBADD;QAAA,IAESC,aAFT,yBAECN,MAFD;;QASA,IAAIK,kBAAJ,EAAwB;UACvB,OAAO;YACNA,kBAAkB,EAAlBA,kBADM;YAENL,MAAM,EAAEM;UAFF,CAAP;QAIA;MACD;;MACD,OAAO;QAAEN,MAAM,EAANA;MAAF,CAAP;IACA;EACD,CA7CA,CA+CD;;;EACA,IAAIA,MAAM,CAAC,CAAD,CAAN,KAAc,GAAlB,EAAuB;IACtB,OAAO,EAAP;EACA;;EAEDG,QAAQ,GAAG,IAAIN,QAAJ,CAAaM,QAAb,CAAX,CApDC,CAsDD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EACA,IAAII,CAAC,GAAG,CAAR;;EACA,OAAOA,CAAC,GAAG,CAAJ,IAAST,uBAAT,IAAoCS,CAAC,IAAIP,MAAM,CAACQ,MAAvD,EAA+D;IAC9D,IAAMH,mBAAkB,GAAGL,MAAM,CAACS,KAAP,CAAa,CAAb,EAAgBF,CAAhB,CAA3B;;IACA,IAAIJ,QAAQ,CAACO,cAAT,CAAwBL,mBAAxB,CAAJ,EAAiD;MAChDF,QAAQ,CAACQ,mBAAT,CAA6BN,mBAA7B;MACA,OAAO;QACNA,kBAAkB,EAAlBA,mBADM;QAENL,MAAM,EAAEA,MAAM,CAACS,KAAP,CAAaF,CAAb;MAFF,CAAP;IAIA;;IACDA,CAAC;EACD;;EAED,OAAO,EAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.test.js new file mode 100644 index 00000000..48573eb4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.test.js @@ -0,0 +1,16 @@ +import extractCountryCallingCode from './extractCountryCallingCode.js'; +import metadata from '../../metadata.min.json' assert { type: 'json' }; +describe('extractCountryCallingCode', function () { + it('should extract country calling code from a number', function () { + extractCountryCallingCode('+78005553535', null, null, metadata).should.deep.equal({ + countryCallingCode: '7', + number: '8005553535' + }); + extractCountryCallingCode('+7800', null, null, metadata).should.deep.equal({ + countryCallingCode: '7', + number: '800' + }); + extractCountryCallingCode('', null, null, metadata).should.deep.equal({}); + }); +}); +//# sourceMappingURL=extractCountryCallingCode.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.test.js.map new file mode 100644 index 00000000..bdd8199e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"extractCountryCallingCode.test.js","names":["extractCountryCallingCode","metadata","type","describe","it","should","deep","equal","countryCallingCode","number"],"sources":["../../source/helpers/extractCountryCallingCode.test.js"],"sourcesContent":["import extractCountryCallingCode from './extractCountryCallingCode.js'\r\nimport metadata from '../../metadata.min.json' assert { type: 'json' }\r\n\r\ndescribe('extractCountryCallingCode', () => {\r\n\tit('should extract country calling code from a number', () => {\r\n\t\textractCountryCallingCode('+78005553535', null, null, metadata).should.deep.equal({\r\n\t\t\tcountryCallingCode: '7',\r\n\t\t\tnumber: '8005553535'\r\n\t\t})\r\n\r\n\t\textractCountryCallingCode('+7800', null, null, metadata).should.deep.equal({\r\n\t\t\tcountryCallingCode: '7',\r\n\t\t\tnumber: '800'\r\n\t\t})\r\n\r\n\t\textractCountryCallingCode('', null, null, metadata).should.deep.equal({})\r\n\t})\r\n})\r\n"],"mappings":"AAAA,OAAOA,yBAAP,MAAsC,gCAAtC;AACA,OAAOC,QAAP,MAAqB,yBAArB,UAAwDC,IAAI,EAAE,MAA9D;AAEAC,QAAQ,CAAC,2BAAD,EAA8B,YAAM;EAC3CC,EAAE,CAAC,mDAAD,EAAsD,YAAM;IAC7DJ,yBAAyB,CAAC,cAAD,EAAiB,IAAjB,EAAuB,IAAvB,EAA6BC,QAA7B,CAAzB,CAAgEI,MAAhE,CAAuEC,IAAvE,CAA4EC,KAA5E,CAAkF;MACjFC,kBAAkB,EAAE,GAD6D;MAEjFC,MAAM,EAAE;IAFyE,CAAlF;IAKAT,yBAAyB,CAAC,OAAD,EAAU,IAAV,EAAgB,IAAhB,EAAsBC,QAAtB,CAAzB,CAAyDI,MAAzD,CAAgEC,IAAhE,CAAqEC,KAArE,CAA2E;MAC1EC,kBAAkB,EAAE,GADsD;MAE1EC,MAAM,EAAE;IAFkE,CAA3E;IAKAT,yBAAyB,CAAC,EAAD,EAAK,IAAL,EAAW,IAAX,EAAiBC,QAAjB,CAAzB,CAAoDI,MAApD,CAA2DC,IAA3D,CAAgEC,KAAhE,CAAsE,EAAtE;EACA,CAZC,CAAF;AAaA,CAdO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js new file mode 100644 index 00000000..48e51329 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js @@ -0,0 +1,50 @@ +import Metadata from '../metadata.js'; +import matchesEntirely from './matchesEntirely.js'; +import extractNationalNumber from './extractNationalNumber.js'; +import checkNumberLength from './checkNumberLength.js'; +import getCountryCallingCode from '../getCountryCallingCode.js'; +/** + * Sometimes some people incorrectly input international phone numbers + * without the leading `+`. This function corrects such input. + * @param {string} number — Phone number digits. + * @param {string?} country + * @param {string?} callingCode + * @param {object} metadata + * @return {object} `{ countryCallingCode: string?, number: string }`. + */ + +export default function extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, callingCode, metadata) { + var countryCallingCode = country ? getCountryCallingCode(country, metadata) : callingCode; + + if (number.indexOf(countryCallingCode) === 0) { + metadata = new Metadata(metadata); + metadata.selectNumberingPlan(country, callingCode); + var possibleShorterNumber = number.slice(countryCallingCode.length); + + var _extractNationalNumbe = extractNationalNumber(possibleShorterNumber, metadata), + possibleShorterNationalNumber = _extractNationalNumbe.nationalNumber; + + var _extractNationalNumbe2 = extractNationalNumber(number, metadata), + nationalNumber = _extractNationalNumbe2.nationalNumber; // If the number was not valid before but is valid now, + // or if it was too long before, we consider the number + // with the country calling code stripped to be a better result + // and keep that instead. + // For example, in Germany (+49), `49` is a valid area code, + // so if a number starts with `49`, it could be both a valid + // national German number or an international number without + // a leading `+`. + + + if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) && matchesEntirely(possibleShorterNationalNumber, metadata.nationalNumberPattern()) || checkNumberLength(nationalNumber, metadata) === 'TOO_LONG') { + return { + countryCallingCode: countryCallingCode, + number: possibleShorterNumber + }; + } + } + + return { + number: number + }; +} +//# sourceMappingURL=extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js.map new file mode 100644 index 00000000..3c023218 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js.map @@ -0,0 +1 @@ +{"version":3,"file":"extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js","names":["Metadata","matchesEntirely","extractNationalNumber","checkNumberLength","getCountryCallingCode","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","number","country","callingCode","metadata","countryCallingCode","indexOf","selectNumberingPlan","possibleShorterNumber","slice","length","possibleShorterNationalNumber","nationalNumber","nationalNumberPattern"],"sources":["../../source/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js"],"sourcesContent":["import Metadata from '../metadata.js'\r\nimport matchesEntirely from './matchesEntirely.js'\r\nimport extractNationalNumber from './extractNationalNumber.js'\r\nimport checkNumberLength from './checkNumberLength.js'\r\nimport getCountryCallingCode from '../getCountryCallingCode.js'\r\n\r\n/**\r\n * Sometimes some people incorrectly input international phone numbers\r\n * without the leading `+`. This function corrects such input.\r\n * @param {string} number — Phone number digits.\r\n * @param {string?} country\r\n * @param {string?} callingCode\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`.\r\n */\r\nexport default function extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\r\n\tnumber,\r\n\tcountry,\r\n\tcallingCode,\r\n\tmetadata\r\n) {\r\n\tconst countryCallingCode = country ? getCountryCallingCode(country, metadata) : callingCode\r\n\tif (number.indexOf(countryCallingCode) === 0) {\r\n\t\tmetadata = new Metadata(metadata)\r\n\t\tmetadata.selectNumberingPlan(country, callingCode)\r\n\t\tconst possibleShorterNumber = number.slice(countryCallingCode.length)\r\n\t\tconst {\r\n\t\t\tnationalNumber: possibleShorterNationalNumber,\r\n\t\t} = extractNationalNumber(\r\n\t\t\tpossibleShorterNumber,\r\n\t\t\tmetadata\r\n\t\t)\r\n\t\tconst {\r\n\t\t\tnationalNumber\r\n\t\t} = extractNationalNumber(\r\n\t\t\tnumber,\r\n\t\t\tmetadata\r\n\t\t)\r\n\t\t// If the number was not valid before but is valid now,\r\n\t\t// or if it was too long before, we consider the number\r\n\t\t// with the country calling code stripped to be a better result\r\n\t\t// and keep that instead.\r\n\t\t// For example, in Germany (+49), `49` is a valid area code,\r\n\t\t// so if a number starts with `49`, it could be both a valid\r\n\t\t// national German number or an international number without\r\n\t\t// a leading `+`.\r\n\t\tif (\r\n\t\t\t(\r\n\t\t\t\t!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())\r\n\t\t\t\t&&\r\n\t\t\t\tmatchesEntirely(possibleShorterNationalNumber, metadata.nationalNumberPattern())\r\n\t\t\t)\r\n\t\t\t||\r\n\t\t\tcheckNumberLength(nationalNumber, metadata) === 'TOO_LONG'\r\n\t\t) {\r\n\t\t\treturn {\r\n\t\t\t\tcountryCallingCode,\r\n\t\t\t\tnumber: possibleShorterNumber\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn { number }\r\n}"],"mappings":"AAAA,OAAOA,QAAP,MAAqB,gBAArB;AACA,OAAOC,eAAP,MAA4B,sBAA5B;AACA,OAAOC,qBAAP,MAAkC,4BAAlC;AACA,OAAOC,iBAAP,MAA8B,wBAA9B;AACA,OAAOC,qBAAP,MAAkC,6BAAlC;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,+DAAT,CACdC,MADc,EAEdC,OAFc,EAGdC,WAHc,EAIdC,QAJc,EAKb;EACD,IAAMC,kBAAkB,GAAGH,OAAO,GAAGH,qBAAqB,CAACG,OAAD,EAAUE,QAAV,CAAxB,GAA8CD,WAAhF;;EACA,IAAIF,MAAM,CAACK,OAAP,CAAeD,kBAAf,MAAuC,CAA3C,EAA8C;IAC7CD,QAAQ,GAAG,IAAIT,QAAJ,CAAaS,QAAb,CAAX;IACAA,QAAQ,CAACG,mBAAT,CAA6BL,OAA7B,EAAsCC,WAAtC;IACA,IAAMK,qBAAqB,GAAGP,MAAM,CAACQ,KAAP,CAAaJ,kBAAkB,CAACK,MAAhC,CAA9B;;IACA,4BAEIb,qBAAqB,CACxBW,qBADwB,EAExBJ,QAFwB,CAFzB;IAAA,IACiBO,6BADjB,yBACCC,cADD;;IAMA,6BAEIf,qBAAqB,CACxBI,MADwB,EAExBG,QAFwB,CAFzB;IAAA,IACCQ,cADD,0BACCA,cADD,CAV6C,CAgB7C;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;;IACA,IAEE,CAAChB,eAAe,CAACgB,cAAD,EAAiBR,QAAQ,CAACS,qBAAT,EAAjB,CAAhB,IAEAjB,eAAe,CAACe,6BAAD,EAAgCP,QAAQ,CAACS,qBAAT,EAAhC,CAHhB,IAMAf,iBAAiB,CAACc,cAAD,EAAiBR,QAAjB,CAAjB,KAAgD,UAPjD,EAQE;MACD,OAAO;QACNC,kBAAkB,EAAlBA,kBADM;QAENJ,MAAM,EAAEO;MAFF,CAAP;IAIA;EACD;;EACD,OAAO;IAAEP,MAAM,EAANA;EAAF,CAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.js new file mode 100644 index 00000000..e186f266 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.js @@ -0,0 +1,111 @@ +import extractNationalNumberFromPossiblyIncompleteNumber from './extractNationalNumberFromPossiblyIncompleteNumber.js'; +import matchesEntirely from './matchesEntirely.js'; +import checkNumberLength from './checkNumberLength.js'; +/** + * Strips national prefix and carrier code from a complete phone number. + * The difference from the non-"FromCompleteNumber" function is that + * it won't extract national prefix if the resultant number is too short + * to be a complete number for the selected phone numbering plan. + * @param {string} number — Complete phone number digits. + * @param {Metadata} metadata — Metadata with a phone numbering plan selected. + * @return {object} `{ nationalNumber: string, carrierCode: string? }`. + */ + +export default function extractNationalNumber(number, metadata) { + // Parsing national prefixes and carrier codes + // is only required for local phone numbers + // but some people don't understand that + // and sometimes write international phone numbers + // with national prefixes (or maybe even carrier codes). + // http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html + // Google's original library forgives such mistakes + // and so does this library, because it has been requested: + // https://github.com/catamphetamine/libphonenumber-js/issues/127 + var _extractNationalNumbe = extractNationalNumberFromPossiblyIncompleteNumber(number, metadata), + carrierCode = _extractNationalNumbe.carrierCode, + nationalNumber = _extractNationalNumbe.nationalNumber; + + if (nationalNumber !== number) { + if (!shouldHaveExtractedNationalPrefix(number, nationalNumber, metadata)) { + // Don't strip the national prefix. + return { + nationalNumber: number + }; + } // Check the national (significant) number length after extracting national prefix and carrier code. + // Legacy generated metadata (before `1.0.18`) didn't support the "possible lengths" feature. + + + if (metadata.possibleLengths()) { + // The number remaining after stripping the national prefix and carrier code + // should be long enough to have a possible length for the country. + // Otherwise, don't strip the national prefix and carrier code, + // since the original number could be a valid number. + // This check has been copy-pasted "as is" from Google's original library: + // https://github.com/google/libphonenumber/blob/876268eb1ad6cdc1b7b5bef17fc5e43052702d57/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3236-L3250 + // It doesn't check for the "possibility" of the original `number`. + // I guess it's fine not checking that one. It works as is anyway. + if (!isPossibleIncompleteNationalNumber(nationalNumber, metadata)) { + // Don't strip the national prefix. + return { + nationalNumber: number + }; + } + } + } + + return { + nationalNumber: nationalNumber, + carrierCode: carrierCode + }; +} // In some countries, the same digit could be a national prefix +// or a leading digit of a valid phone number. +// For example, in Russia, national prefix is `8`, +// and also `800 555 35 35` is a valid number +// in which `8` is not a national prefix, but the first digit +// of a national (significant) number. +// Same's with Belarus: +// `82004910060` is a valid national (significant) number, +// but `2004910060` is not. +// To support such cases (to prevent the code from always stripping +// national prefix), a condition is imposed: a national prefix +// is not extracted when the original number is "viable" and the +// resultant number is not, a "viable" national number being the one +// that matches `national_number_pattern`. + +function shouldHaveExtractedNationalPrefix(nationalNumberBefore, nationalNumberAfter, metadata) { + // The equivalent in Google's code is: + // https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L2969-L3004 + if (matchesEntirely(nationalNumberBefore, metadata.nationalNumberPattern()) && !matchesEntirely(nationalNumberAfter, metadata.nationalNumberPattern())) { + return false; + } // This "is possible" national number (length) check has been commented out + // because it's superceded by the (effectively) same check done in the + // `extractNationalNumber()` function after it calls `shouldHaveExtractedNationalPrefix()`. + // In other words, why run the same check twice if it could only be run once. + // // Check the national (significant) number length after extracting national prefix and carrier code. + // // Fixes a minor "weird behavior" bug: https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/57 + // // (Legacy generated metadata (before `1.0.18`) didn't support the "possible lengths" feature). + // if (metadata.possibleLengths()) { + // if (isPossibleIncompleteNationalNumber(nationalNumberBefore, metadata) && + // !isPossibleIncompleteNationalNumber(nationalNumberAfter, metadata)) { + // return false + // } + // } + + + return true; +} + +function isPossibleIncompleteNationalNumber(nationalNumber, metadata) { + switch (checkNumberLength(nationalNumber, metadata)) { + case 'TOO_SHORT': + case 'INVALID_LENGTH': + // This library ignores "local-only" phone numbers (for simplicity). + // See the readme for more info on what are "local-only" phone numbers. + // case 'IS_POSSIBLE_LOCAL_ONLY': + return false; + + default: + return true; + } +} +//# sourceMappingURL=extractNationalNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.js.map new file mode 100644 index 00000000..18ddcdfe --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"extractNationalNumber.js","names":["extractNationalNumberFromPossiblyIncompleteNumber","matchesEntirely","checkNumberLength","extractNationalNumber","number","metadata","carrierCode","nationalNumber","shouldHaveExtractedNationalPrefix","possibleLengths","isPossibleIncompleteNationalNumber","nationalNumberBefore","nationalNumberAfter","nationalNumberPattern"],"sources":["../../source/helpers/extractNationalNumber.js"],"sourcesContent":["import extractNationalNumberFromPossiblyIncompleteNumber from './extractNationalNumberFromPossiblyIncompleteNumber.js'\r\nimport matchesEntirely from './matchesEntirely.js'\r\nimport checkNumberLength from './checkNumberLength.js'\r\n\r\n/**\r\n * Strips national prefix and carrier code from a complete phone number.\r\n * The difference from the non-\"FromCompleteNumber\" function is that\r\n * it won't extract national prefix if the resultant number is too short\r\n * to be a complete number for the selected phone numbering plan.\r\n * @param {string} number — Complete phone number digits.\r\n * @param {Metadata} metadata — Metadata with a phone numbering plan selected.\r\n * @return {object} `{ nationalNumber: string, carrierCode: string? }`.\r\n */\r\nexport default function extractNationalNumber(number, metadata) {\r\n\t// Parsing national prefixes and carrier codes\r\n\t// is only required for local phone numbers\r\n\t// but some people don't understand that\r\n\t// and sometimes write international phone numbers\r\n\t// with national prefixes (or maybe even carrier codes).\r\n\t// http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html\r\n\t// Google's original library forgives such mistakes\r\n\t// and so does this library, because it has been requested:\r\n\t// https://github.com/catamphetamine/libphonenumber-js/issues/127\r\n\tconst {\r\n\t\tcarrierCode,\r\n\t\tnationalNumber\r\n\t} = extractNationalNumberFromPossiblyIncompleteNumber(\r\n\t\tnumber,\r\n\t\tmetadata\r\n\t)\r\n\r\n\tif (nationalNumber !== number) {\r\n\t\tif (!shouldHaveExtractedNationalPrefix(number, nationalNumber, metadata)) {\r\n\t\t\t// Don't strip the national prefix.\r\n\t\t\treturn { nationalNumber: number }\r\n\t\t}\r\n\t\t// Check the national (significant) number length after extracting national prefix and carrier code.\r\n\t\t// Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature.\r\n\t\tif (metadata.possibleLengths()) {\r\n\t\t\t// The number remaining after stripping the national prefix and carrier code\r\n\t\t\t// should be long enough to have a possible length for the country.\r\n\t\t\t// Otherwise, don't strip the national prefix and carrier code,\r\n\t\t\t// since the original number could be a valid number.\r\n\t\t\t// This check has been copy-pasted \"as is\" from Google's original library:\r\n\t\t\t// https://github.com/google/libphonenumber/blob/876268eb1ad6cdc1b7b5bef17fc5e43052702d57/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3236-L3250\r\n\t\t\t// It doesn't check for the \"possibility\" of the original `number`.\r\n\t\t\t// I guess it's fine not checking that one. It works as is anyway.\r\n\t\t\tif (!isPossibleIncompleteNationalNumber(nationalNumber, metadata)) {\r\n\t\t\t\t// Don't strip the national prefix.\r\n\t\t\t\treturn { nationalNumber: number }\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn { nationalNumber, carrierCode }\r\n}\r\n\r\n// In some countries, the same digit could be a national prefix\r\n// or a leading digit of a valid phone number.\r\n// For example, in Russia, national prefix is `8`,\r\n// and also `800 555 35 35` is a valid number\r\n// in which `8` is not a national prefix, but the first digit\r\n// of a national (significant) number.\r\n// Same's with Belarus:\r\n// `82004910060` is a valid national (significant) number,\r\n// but `2004910060` is not.\r\n// To support such cases (to prevent the code from always stripping\r\n// national prefix), a condition is imposed: a national prefix\r\n// is not extracted when the original number is \"viable\" and the\r\n// resultant number is not, a \"viable\" national number being the one\r\n// that matches `national_number_pattern`.\r\nfunction shouldHaveExtractedNationalPrefix(nationalNumberBefore, nationalNumberAfter, metadata) {\r\n\t// The equivalent in Google's code is:\r\n\t// https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L2969-L3004\r\n\tif (matchesEntirely(nationalNumberBefore, metadata.nationalNumberPattern()) &&\r\n\t\t!matchesEntirely(nationalNumberAfter, metadata.nationalNumberPattern())) {\r\n\t\treturn false\r\n\t}\r\n\t// This \"is possible\" national number (length) check has been commented out\r\n\t// because it's superceded by the (effectively) same check done in the\r\n\t// `extractNationalNumber()` function after it calls `shouldHaveExtractedNationalPrefix()`.\r\n\t// In other words, why run the same check twice if it could only be run once.\r\n\t// // Check the national (significant) number length after extracting national prefix and carrier code.\r\n\t// // Fixes a minor \"weird behavior\" bug: https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/57\r\n\t// // (Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature).\r\n\t// if (metadata.possibleLengths()) {\r\n\t// \tif (isPossibleIncompleteNationalNumber(nationalNumberBefore, metadata) &&\r\n\t// \t\t!isPossibleIncompleteNationalNumber(nationalNumberAfter, metadata)) {\r\n\t// \t\treturn false\r\n\t// \t}\r\n\t// }\r\n\treturn true\r\n}\r\n\r\nfunction isPossibleIncompleteNationalNumber(nationalNumber, metadata) {\r\n\tswitch (checkNumberLength(nationalNumber, metadata)) {\r\n\t\tcase 'TOO_SHORT':\r\n\t\tcase 'INVALID_LENGTH':\r\n\t\t// This library ignores \"local-only\" phone numbers (for simplicity).\r\n\t\t// See the readme for more info on what are \"local-only\" phone numbers.\r\n\t\t// case 'IS_POSSIBLE_LOCAL_ONLY':\r\n\t\t\treturn false\r\n\t\tdefault:\r\n\t\t\treturn true\r\n\t}\r\n}"],"mappings":"AAAA,OAAOA,iDAAP,MAA8D,wDAA9D;AACA,OAAOC,eAAP,MAA4B,sBAA5B;AACA,OAAOC,iBAAP,MAA8B,wBAA9B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,qBAAT,CAA+BC,MAA/B,EAAuCC,QAAvC,EAAiD;EAC/D;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,4BAGIL,iDAAiD,CACpDI,MADoD,EAEpDC,QAFoD,CAHrD;EAAA,IACCC,WADD,yBACCA,WADD;EAAA,IAECC,cAFD,yBAECA,cAFD;;EAQA,IAAIA,cAAc,KAAKH,MAAvB,EAA+B;IAC9B,IAAI,CAACI,iCAAiC,CAACJ,MAAD,EAASG,cAAT,EAAyBF,QAAzB,CAAtC,EAA0E;MACzE;MACA,OAAO;QAAEE,cAAc,EAAEH;MAAlB,CAAP;IACA,CAJ6B,CAK9B;IACA;;;IACA,IAAIC,QAAQ,CAACI,eAAT,EAAJ,EAAgC;MAC/B;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA,IAAI,CAACC,kCAAkC,CAACH,cAAD,EAAiBF,QAAjB,CAAvC,EAAmE;QAClE;QACA,OAAO;UAAEE,cAAc,EAAEH;QAAlB,CAAP;MACA;IACD;EACD;;EAED,OAAO;IAAEG,cAAc,EAAdA,cAAF;IAAkBD,WAAW,EAAXA;EAAlB,CAAP;AACA,C,CAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASE,iCAAT,CAA2CG,oBAA3C,EAAiEC,mBAAjE,EAAsFP,QAAtF,EAAgG;EAC/F;EACA;EACA,IAAIJ,eAAe,CAACU,oBAAD,EAAuBN,QAAQ,CAACQ,qBAAT,EAAvB,CAAf,IACH,CAACZ,eAAe,CAACW,mBAAD,EAAsBP,QAAQ,CAACQ,qBAAT,EAAtB,CADjB,EAC0E;IACzE,OAAO,KAAP;EACA,CAN8F,CAO/F;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EACA,OAAO,IAAP;AACA;;AAED,SAASH,kCAAT,CAA4CH,cAA5C,EAA4DF,QAA5D,EAAsE;EACrE,QAAQH,iBAAiB,CAACK,cAAD,EAAiBF,QAAjB,CAAzB;IACC,KAAK,WAAL;IACA,KAAK,gBAAL;MACA;MACA;MACA;MACC,OAAO,KAAP;;IACD;MACC,OAAO,IAAP;EARF;AAUA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.test.js new file mode 100644 index 00000000..7d303221 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.test.js @@ -0,0 +1,16 @@ +import extractNationalNumber from './extractNationalNumber.js'; +import Metadata from '../metadata.js'; +import oldMetadata from '../../test/metadata/1.0.0/metadata.min.json' assert { type: 'json' }; +describe('extractNationalNumber', function () { + it('should extract a national number when using old metadata', function () { + var _oldMetadata = new Metadata(oldMetadata); + + _oldMetadata.selectNumberingPlan('RU'); + + extractNationalNumber('88005553535', _oldMetadata).should.deep.equal({ + nationalNumber: '8005553535', + carrierCode: undefined + }); + }); +}); +//# sourceMappingURL=extractNationalNumber.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.test.js.map new file mode 100644 index 00000000..48d31904 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"extractNationalNumber.test.js","names":["extractNationalNumber","Metadata","oldMetadata","type","describe","it","_oldMetadata","selectNumberingPlan","should","deep","equal","nationalNumber","carrierCode","undefined"],"sources":["../../source/helpers/extractNationalNumber.test.js"],"sourcesContent":["import extractNationalNumber from './extractNationalNumber.js'\r\n\r\nimport Metadata from '../metadata.js'\r\nimport oldMetadata from '../../test/metadata/1.0.0/metadata.min.json' assert { type: 'json' }\r\n\r\ndescribe('extractNationalNumber', function() {\r\n\tit('should extract a national number when using old metadata', function() {\r\n\t\tconst _oldMetadata = new Metadata(oldMetadata)\r\n\t\t_oldMetadata.selectNumberingPlan('RU')\r\n\t\textractNationalNumber('88005553535', _oldMetadata).should.deep.equal({\r\n\t\t\tnationalNumber: '8005553535',\r\n\t\t\tcarrierCode: undefined\r\n\t\t})\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,qBAAP,MAAkC,4BAAlC;AAEA,OAAOC,QAAP,MAAqB,gBAArB;AACA,OAAOC,WAAP,MAAwB,6CAAxB,UAA+EC,IAAI,EAAE,MAArF;AAEAC,QAAQ,CAAC,uBAAD,EAA0B,YAAW;EAC5CC,EAAE,CAAC,0DAAD,EAA6D,YAAW;IACzE,IAAMC,YAAY,GAAG,IAAIL,QAAJ,CAAaC,WAAb,CAArB;;IACAI,YAAY,CAACC,mBAAb,CAAiC,IAAjC;;IACAP,qBAAqB,CAAC,aAAD,EAAgBM,YAAhB,CAArB,CAAmDE,MAAnD,CAA0DC,IAA1D,CAA+DC,KAA/D,CAAqE;MACpEC,cAAc,EAAE,YADoD;MAEpEC,WAAW,EAAEC;IAFuD,CAArE;EAIA,CAPC,CAAF;AAQA,CATO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js new file mode 100644 index 00000000..82b255b0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js @@ -0,0 +1,107 @@ +/** + * Strips any national prefix (such as 0, 1) present in a + * (possibly incomplete) number provided. + * "Carrier codes" are only used in Colombia and Brazil, + * and only when dialing within those countries from a mobile phone to a fixed line number. + * Sometimes it won't actually strip national prefix + * and will instead prepend some digits to the `number`: + * for example, when number `2345678` is passed with `VI` country selected, + * it will return `{ number: "3402345678" }`, because `340` area code is prepended. + * @param {string} number — National number digits. + * @param {object} metadata — Metadata with country selected. + * @return {object} `{ nationalNumber: string, nationalPrefix: string? carrierCode: string? }`. Even if a national prefix was extracted, it's not necessarily present in the returned object, so don't rely on its presence in the returned object in order to find out whether a national prefix has been extracted or not. + */ +export default function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) { + if (number && metadata.numberingPlan.nationalPrefixForParsing()) { + // See METADATA.md for the description of + // `national_prefix_for_parsing` and `national_prefix_transform_rule`. + // Attempt to parse the first digits as a national prefix. + var prefixPattern = new RegExp('^(?:' + metadata.numberingPlan.nationalPrefixForParsing() + ')'); + var prefixMatch = prefixPattern.exec(number); + + if (prefixMatch) { + var nationalNumber; + var carrierCode; // https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule + // If a `national_prefix_for_parsing` has any "capturing groups" + // then it means that the national (significant) number is equal to + // those "capturing groups" transformed via `national_prefix_transform_rule`, + // and nothing could be said about the actual national prefix: + // what is it and was it even there. + // If a `national_prefix_for_parsing` doesn't have any "capturing groups", + // then everything it matches is a national prefix. + // To determine whether `national_prefix_for_parsing` matched any + // "capturing groups", the value of the result of calling `.exec()` + // is looked at, and if it has non-undefined values where there're + // "capturing groups" in the regular expression, then it means + // that "capturing groups" have been matched. + // It's not possible to tell whether there'll be any "capturing gropus" + // before the matching process, because a `national_prefix_for_parsing` + // could exhibit both behaviors. + + var capturedGroupsCount = prefixMatch.length - 1; + var hasCapturedGroups = capturedGroupsCount > 0 && prefixMatch[capturedGroupsCount]; + + if (metadata.nationalPrefixTransformRule() && hasCapturedGroups) { + nationalNumber = number.replace(prefixPattern, metadata.nationalPrefixTransformRule()); // If there's more than one captured group, + // then carrier code is the second one. + + if (capturedGroupsCount > 1) { + carrierCode = prefixMatch[1]; + } + } // If there're no "capturing groups", + // or if there're "capturing groups" but no + // `national_prefix_transform_rule`, + // then just strip the national prefix from the number, + // and possibly a carrier code. + // Seems like there could be more. + else { + // `prefixBeforeNationalNumber` is the whole substring matched by + // the `national_prefix_for_parsing` regular expression. + // There seem to be no guarantees that it's just a national prefix. + // For example, if there's a carrier code, it's gonna be a + // part of `prefixBeforeNationalNumber` too. + var prefixBeforeNationalNumber = prefixMatch[0]; + nationalNumber = number.slice(prefixBeforeNationalNumber.length); // If there's at least one captured group, + // then carrier code is the first one. + + if (hasCapturedGroups) { + carrierCode = prefixMatch[1]; + } + } // Tries to guess whether a national prefix was present in the input. + // This is not something copy-pasted from Google's library: + // they don't seem to have an equivalent for that. + // So this isn't an "officially approved" way of doing something like that. + // But since there seems no other existing method, this library uses it. + + + var nationalPrefix; + + if (hasCapturedGroups) { + var possiblePositionOfTheFirstCapturedGroup = number.indexOf(prefixMatch[1]); + var possibleNationalPrefix = number.slice(0, possiblePositionOfTheFirstCapturedGroup); // Example: an Argentinian (AR) phone number `0111523456789`. + // `prefixMatch[0]` is `01115`, and `$1` is `11`, + // and the rest of the phone number is `23456789`. + // The national number is transformed via `9$1` to `91123456789`. + // National prefix `0` is detected being present at the start. + // if (possibleNationalPrefix.indexOf(metadata.numberingPlan.nationalPrefix()) === 0) { + + if (possibleNationalPrefix === metadata.numberingPlan.nationalPrefix()) { + nationalPrefix = metadata.numberingPlan.nationalPrefix(); + } + } else { + nationalPrefix = prefixMatch[0]; + } + + return { + nationalNumber: nationalNumber, + nationalPrefix: nationalPrefix, + carrierCode: carrierCode + }; + } + } + + return { + nationalNumber: number + }; +} +//# sourceMappingURL=extractNationalNumberFromPossiblyIncompleteNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js.map new file mode 100644 index 00000000..8d304cf9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"extractNationalNumberFromPossiblyIncompleteNumber.js","names":["extractNationalNumberFromPossiblyIncompleteNumber","number","metadata","numberingPlan","nationalPrefixForParsing","prefixPattern","RegExp","prefixMatch","exec","nationalNumber","carrierCode","capturedGroupsCount","length","hasCapturedGroups","nationalPrefixTransformRule","replace","prefixBeforeNationalNumber","slice","nationalPrefix","possiblePositionOfTheFirstCapturedGroup","indexOf","possibleNationalPrefix"],"sources":["../../source/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js"],"sourcesContent":["/**\r\n * Strips any national prefix (such as 0, 1) present in a\r\n * (possibly incomplete) number provided.\r\n * \"Carrier codes\" are only used in Colombia and Brazil,\r\n * and only when dialing within those countries from a mobile phone to a fixed line number.\r\n * Sometimes it won't actually strip national prefix\r\n * and will instead prepend some digits to the `number`:\r\n * for example, when number `2345678` is passed with `VI` country selected,\r\n * it will return `{ number: \"3402345678\" }`, because `340` area code is prepended.\r\n * @param {string} number — National number digits.\r\n * @param {object} metadata — Metadata with country selected.\r\n * @return {object} `{ nationalNumber: string, nationalPrefix: string? carrierCode: string? }`. Even if a national prefix was extracted, it's not necessarily present in the returned object, so don't rely on its presence in the returned object in order to find out whether a national prefix has been extracted or not.\r\n */\r\nexport default function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) {\r\n\tif (number && metadata.numberingPlan.nationalPrefixForParsing()) {\r\n\t\t// See METADATA.md for the description of\r\n\t\t// `national_prefix_for_parsing` and `national_prefix_transform_rule`.\r\n\t\t// Attempt to parse the first digits as a national prefix.\r\n\t\tconst prefixPattern = new RegExp('^(?:' + metadata.numberingPlan.nationalPrefixForParsing() + ')')\r\n\t\tconst prefixMatch = prefixPattern.exec(number)\r\n\t\tif (prefixMatch) {\r\n\t\t\tlet nationalNumber\r\n\t\t\tlet carrierCode\r\n\t\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\r\n\t\t\t// If a `national_prefix_for_parsing` has any \"capturing groups\"\r\n\t\t\t// then it means that the national (significant) number is equal to\r\n\t\t\t// those \"capturing groups\" transformed via `national_prefix_transform_rule`,\r\n\t\t\t// and nothing could be said about the actual national prefix:\r\n\t\t\t// what is it and was it even there.\r\n\t\t\t// If a `national_prefix_for_parsing` doesn't have any \"capturing groups\",\r\n\t\t\t// then everything it matches is a national prefix.\r\n\t\t\t// To determine whether `national_prefix_for_parsing` matched any\r\n\t\t\t// \"capturing groups\", the value of the result of calling `.exec()`\r\n\t\t\t// is looked at, and if it has non-undefined values where there're\r\n\t\t\t// \"capturing groups\" in the regular expression, then it means\r\n\t\t\t// that \"capturing groups\" have been matched.\r\n\t\t\t// It's not possible to tell whether there'll be any \"capturing gropus\"\r\n\t\t\t// before the matching process, because a `national_prefix_for_parsing`\r\n\t\t\t// could exhibit both behaviors.\r\n\t\t\tconst capturedGroupsCount = prefixMatch.length - 1\r\n\t\t\tconst hasCapturedGroups = capturedGroupsCount > 0 && prefixMatch[capturedGroupsCount]\r\n\t\t\tif (metadata.nationalPrefixTransformRule() && hasCapturedGroups) {\r\n\t\t\t\tnationalNumber = number.replace(\r\n\t\t\t\t\tprefixPattern,\r\n\t\t\t\t\tmetadata.nationalPrefixTransformRule()\r\n\t\t\t\t)\r\n\t\t\t\t// If there's more than one captured group,\r\n\t\t\t\t// then carrier code is the second one.\r\n\t\t\t\tif (capturedGroupsCount > 1) {\r\n\t\t\t\t\tcarrierCode = prefixMatch[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// If there're no \"capturing groups\",\r\n\t\t\t// or if there're \"capturing groups\" but no\r\n\t\t\t// `national_prefix_transform_rule`,\r\n\t\t\t// then just strip the national prefix from the number,\r\n\t\t\t// and possibly a carrier code.\r\n\t\t\t// Seems like there could be more.\r\n\t\t\telse {\r\n\t\t\t\t// `prefixBeforeNationalNumber` is the whole substring matched by\r\n\t\t\t\t// the `national_prefix_for_parsing` regular expression.\r\n\t\t\t\t// There seem to be no guarantees that it's just a national prefix.\r\n\t\t\t\t// For example, if there's a carrier code, it's gonna be a\r\n\t\t\t\t// part of `prefixBeforeNationalNumber` too.\r\n\t\t\t\tconst prefixBeforeNationalNumber = prefixMatch[0]\r\n\t\t\t\tnationalNumber = number.slice(prefixBeforeNationalNumber.length)\r\n\t\t\t\t// If there's at least one captured group,\r\n\t\t\t\t// then carrier code is the first one.\r\n\t\t\t\tif (hasCapturedGroups) {\r\n\t\t\t\t\tcarrierCode = prefixMatch[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Tries to guess whether a national prefix was present in the input.\r\n\t\t\t// This is not something copy-pasted from Google's library:\r\n\t\t\t// they don't seem to have an equivalent for that.\r\n\t\t\t// So this isn't an \"officially approved\" way of doing something like that.\r\n\t\t\t// But since there seems no other existing method, this library uses it.\r\n\t\t\tlet nationalPrefix\r\n\t\t\tif (hasCapturedGroups) {\r\n\t\t\t\tconst possiblePositionOfTheFirstCapturedGroup = number.indexOf(prefixMatch[1])\r\n\t\t\t\tconst possibleNationalPrefix = number.slice(0, possiblePositionOfTheFirstCapturedGroup)\r\n\t\t\t\t// Example: an Argentinian (AR) phone number `0111523456789`.\r\n\t\t\t\t// `prefixMatch[0]` is `01115`, and `$1` is `11`,\r\n\t\t\t\t// and the rest of the phone number is `23456789`.\r\n\t\t\t\t// The national number is transformed via `9$1` to `91123456789`.\r\n\t\t\t\t// National prefix `0` is detected being present at the start.\r\n\t\t\t\t// if (possibleNationalPrefix.indexOf(metadata.numberingPlan.nationalPrefix()) === 0) {\r\n\t\t\t\tif (possibleNationalPrefix === metadata.numberingPlan.nationalPrefix()) {\r\n\t\t\t\t\tnationalPrefix = metadata.numberingPlan.nationalPrefix()\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tnationalPrefix = prefixMatch[0]\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\tnationalNumber,\r\n\t\t\t\tnationalPrefix,\r\n\t\t\t\tcarrierCode\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n return {\r\n \tnationalNumber: number\r\n }\r\n}"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASA,iDAAT,CAA2DC,MAA3D,EAAmEC,QAAnE,EAA6E;EAC3F,IAAID,MAAM,IAAIC,QAAQ,CAACC,aAAT,CAAuBC,wBAAvB,EAAd,EAAiE;IAChE;IACA;IACA;IACA,IAAMC,aAAa,GAAG,IAAIC,MAAJ,CAAW,SAASJ,QAAQ,CAACC,aAAT,CAAuBC,wBAAvB,EAAT,GAA6D,GAAxE,CAAtB;IACA,IAAMG,WAAW,GAAGF,aAAa,CAACG,IAAd,CAAmBP,MAAnB,CAApB;;IACA,IAAIM,WAAJ,EAAiB;MAChB,IAAIE,cAAJ;MACA,IAAIC,WAAJ,CAFgB,CAGhB;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;;MACA,IAAMC,mBAAmB,GAAGJ,WAAW,CAACK,MAAZ,GAAqB,CAAjD;MACA,IAAMC,iBAAiB,GAAGF,mBAAmB,GAAG,CAAtB,IAA2BJ,WAAW,CAACI,mBAAD,CAAhE;;MACA,IAAIT,QAAQ,CAACY,2BAAT,MAA0CD,iBAA9C,EAAiE;QAChEJ,cAAc,GAAGR,MAAM,CAACc,OAAP,CAChBV,aADgB,EAEhBH,QAAQ,CAACY,2BAAT,EAFgB,CAAjB,CADgE,CAKhE;QACA;;QACA,IAAIH,mBAAmB,GAAG,CAA1B,EAA6B;UAC5BD,WAAW,GAAGH,WAAW,CAAC,CAAD,CAAzB;QACA;MACD,CAVD,CAWA;MACA;MACA;MACA;MACA;MACA;MAhBA,KAiBK;QACJ;QACA;QACA;QACA;QACA;QACA,IAAMS,0BAA0B,GAAGT,WAAW,CAAC,CAAD,CAA9C;QACAE,cAAc,GAAGR,MAAM,CAACgB,KAAP,CAAaD,0BAA0B,CAACJ,MAAxC,CAAjB,CAPI,CAQJ;QACA;;QACA,IAAIC,iBAAJ,EAAuB;UACtBH,WAAW,GAAGH,WAAW,CAAC,CAAD,CAAzB;QACA;MACD,CAnDe,CAoDhB;MACA;MACA;MACA;MACA;;;MACA,IAAIW,cAAJ;;MACA,IAAIL,iBAAJ,EAAuB;QACtB,IAAMM,uCAAuC,GAAGlB,MAAM,CAACmB,OAAP,CAAeb,WAAW,CAAC,CAAD,CAA1B,CAAhD;QACA,IAAMc,sBAAsB,GAAGpB,MAAM,CAACgB,KAAP,CAAa,CAAb,EAAgBE,uCAAhB,CAA/B,CAFsB,CAGtB;QACA;QACA;QACA;QACA;QACA;;QACA,IAAIE,sBAAsB,KAAKnB,QAAQ,CAACC,aAAT,CAAuBe,cAAvB,EAA/B,EAAwE;UACvEA,cAAc,GAAGhB,QAAQ,CAACC,aAAT,CAAuBe,cAAvB,EAAjB;QACA;MACD,CAZD,MAYO;QACNA,cAAc,GAAGX,WAAW,CAAC,CAAD,CAA5B;MACA;;MACD,OAAO;QACNE,cAAc,EAAdA,cADM;QAENS,cAAc,EAAdA,cAFM;QAGNR,WAAW,EAAXA;MAHM,CAAP;IAKA;EACD;;EACC,OAAO;IACND,cAAc,EAAER;EADV,CAAP;AAGF"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.test.js new file mode 100644 index 00000000..e47c299c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.test.js @@ -0,0 +1,15 @@ +import Metadata from '../metadata.js'; +import metadata from '../../metadata.min.json' assert { type: 'json' }; +import extractNationalNumberFromPossiblyIncompleteNumber from './extractNationalNumberFromPossiblyIncompleteNumber.js'; +describe('extractNationalNumberFromPossiblyIncompleteNumber', function () { + it('should parse a carrier code when there is no national prefix transform rule', function () { + var meta = new Metadata(metadata); + meta.country('AU'); + extractNationalNumberFromPossiblyIncompleteNumber('18311800123', meta).should.deep.equal({ + nationalPrefix: undefined, + carrierCode: '1831', + nationalNumber: '1800123' + }); + }); +}); +//# sourceMappingURL=extractNationalNumberFromPossiblyIncompleteNumber.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.test.js.map new file mode 100644 index 00000000..013be165 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"extractNationalNumberFromPossiblyIncompleteNumber.test.js","names":["Metadata","metadata","type","extractNationalNumberFromPossiblyIncompleteNumber","describe","it","meta","country","should","deep","equal","nationalPrefix","undefined","carrierCode","nationalNumber"],"sources":["../../source/helpers/extractNationalNumberFromPossiblyIncompleteNumber.test.js"],"sourcesContent":["import Metadata from '../metadata.js'\r\nimport metadata from '../../metadata.min.json' assert { type: 'json' }\r\nimport extractNationalNumberFromPossiblyIncompleteNumber from './extractNationalNumberFromPossiblyIncompleteNumber.js'\r\n\r\ndescribe('extractNationalNumberFromPossiblyIncompleteNumber', () => {\r\n\tit('should parse a carrier code when there is no national prefix transform rule', () => {\r\n\t\tconst meta = new Metadata(metadata)\r\n\t\tmeta.country('AU')\r\n\t\textractNationalNumberFromPossiblyIncompleteNumber('18311800123', meta).should.deep.equal({\r\n\t\t\tnationalPrefix: undefined,\r\n\t\t\tcarrierCode: '1831',\r\n\t\t\tnationalNumber: '1800123'\r\n\t\t})\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,QAAP,MAAqB,gBAArB;AACA,OAAOC,QAAP,MAAqB,yBAArB,UAAwDC,IAAI,EAAE,MAA9D;AACA,OAAOC,iDAAP,MAA8D,wDAA9D;AAEAC,QAAQ,CAAC,mDAAD,EAAsD,YAAM;EACnEC,EAAE,CAAC,6EAAD,EAAgF,YAAM;IACvF,IAAMC,IAAI,GAAG,IAAIN,QAAJ,CAAaC,QAAb,CAAb;IACAK,IAAI,CAACC,OAAL,CAAa,IAAb;IACAJ,iDAAiD,CAAC,aAAD,EAAgBG,IAAhB,CAAjD,CAAuEE,MAAvE,CAA8EC,IAA9E,CAAmFC,KAAnF,CAAyF;MACxFC,cAAc,EAAEC,SADwE;MAExFC,WAAW,EAAE,MAF2E;MAGxFC,cAAc,EAAE;IAHwE,CAAzF;EAKA,CARC,CAAF;AASA,CAVO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/formatNationalNumberUsingFormat.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/formatNationalNumberUsingFormat.js new file mode 100644 index 00000000..9faea50e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/formatNationalNumberUsingFormat.js @@ -0,0 +1,33 @@ +import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle.js'; // This was originally set to $1 but there are some countries for which the +// first group is not used in the national pattern (e.g. Argentina) so the $1 +// group does not match correctly. Therefore, we use `\d`, so that the first +// group actually used in the pattern will be matched. + +export var FIRST_GROUP_PATTERN = /(\$\d)/; +export default function formatNationalNumberUsingFormat(number, format, _ref) { + var useInternationalFormat = _ref.useInternationalFormat, + withNationalPrefix = _ref.withNationalPrefix, + carrierCode = _ref.carrierCode, + metadata = _ref.metadata; + var formattedNumber = number.replace(new RegExp(format.pattern()), useInternationalFormat ? format.internationalFormat() : // This library doesn't use `domestic_carrier_code_formatting_rule`, + // because that one is only used when formatting phone numbers + // for dialing from a mobile phone, and this is not a dialing library. + // carrierCode && format.domesticCarrierCodeFormattingRule() + // // First, replace the $CC in the formatting rule with the desired carrier code. + // // Then, replace the $FG in the formatting rule with the first group + // // and the carrier code combined in the appropriate way. + // ? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode)) + // : ( + // withNationalPrefix && format.nationalPrefixFormattingRule() + // ? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()) + // : format.format() + // ) + withNationalPrefix && format.nationalPrefixFormattingRule() ? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()) : format.format()); + + if (useInternationalFormat) { + return applyInternationalSeparatorStyle(formattedNumber); + } + + return formattedNumber; +} +//# sourceMappingURL=formatNationalNumberUsingFormat.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/formatNationalNumberUsingFormat.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/formatNationalNumberUsingFormat.js.map new file mode 100644 index 00000000..8f296750 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/formatNationalNumberUsingFormat.js.map @@ -0,0 +1 @@ +{"version":3,"file":"formatNationalNumberUsingFormat.js","names":["applyInternationalSeparatorStyle","FIRST_GROUP_PATTERN","formatNationalNumberUsingFormat","number","format","useInternationalFormat","withNationalPrefix","carrierCode","metadata","formattedNumber","replace","RegExp","pattern","internationalFormat","nationalPrefixFormattingRule"],"sources":["../../source/helpers/formatNationalNumberUsingFormat.js"],"sourcesContent":["import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle.js'\r\n\r\n// This was originally set to $1 but there are some countries for which the\r\n// first group is not used in the national pattern (e.g. Argentina) so the $1\r\n// group does not match correctly. Therefore, we use `\\d`, so that the first\r\n// group actually used in the pattern will be matched.\r\nexport const FIRST_GROUP_PATTERN = /(\\$\\d)/\r\n\r\nexport default function formatNationalNumberUsingFormat(\r\n\tnumber,\r\n\tformat,\r\n\t{\r\n\t\tuseInternationalFormat,\r\n\t\twithNationalPrefix,\r\n\t\tcarrierCode,\r\n\t\tmetadata\r\n\t}\r\n) {\r\n\tconst formattedNumber = number.replace(\r\n\t\tnew RegExp(format.pattern()),\r\n\t\tuseInternationalFormat\r\n\t\t\t? format.internationalFormat()\r\n\t\t\t: (\r\n\t\t\t\t// This library doesn't use `domestic_carrier_code_formatting_rule`,\r\n\t\t\t\t// because that one is only used when formatting phone numbers\r\n\t\t\t\t// for dialing from a mobile phone, and this is not a dialing library.\r\n\t\t\t\t// carrierCode && format.domesticCarrierCodeFormattingRule()\r\n\t\t\t\t// \t// First, replace the $CC in the formatting rule with the desired carrier code.\r\n\t\t\t\t// \t// Then, replace the $FG in the formatting rule with the first group\r\n\t\t\t\t// \t// and the carrier code combined in the appropriate way.\r\n\t\t\t\t// \t? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode))\r\n\t\t\t\t// \t: (\r\n\t\t\t\t// \t\twithNationalPrefix && format.nationalPrefixFormattingRule()\r\n\t\t\t\t// \t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\r\n\t\t\t\t// \t\t\t: format.format()\r\n\t\t\t\t// \t)\r\n\t\t\t\twithNationalPrefix && format.nationalPrefixFormattingRule()\r\n\t\t\t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\r\n\t\t\t\t\t: format.format()\r\n\t\t\t)\r\n\t)\r\n\tif (useInternationalFormat) {\r\n\t\treturn applyInternationalSeparatorStyle(formattedNumber)\r\n\t}\r\n\treturn formattedNumber\r\n}"],"mappings":"AAAA,OAAOA,gCAAP,MAA6C,uCAA7C,C,CAEA;AACA;AACA;AACA;;AACA,OAAO,IAAMC,mBAAmB,GAAG,QAA5B;AAEP,eAAe,SAASC,+BAAT,CACdC,MADc,EAEdC,MAFc,QASb;EAAA,IALAC,sBAKA,QALAA,sBAKA;EAAA,IAJAC,kBAIA,QAJAA,kBAIA;EAAA,IAHAC,WAGA,QAHAA,WAGA;EAAA,IAFAC,QAEA,QAFAA,QAEA;EACD,IAAMC,eAAe,GAAGN,MAAM,CAACO,OAAP,CACvB,IAAIC,MAAJ,CAAWP,MAAM,CAACQ,OAAP,EAAX,CADuB,EAEvBP,sBAAsB,GACnBD,MAAM,CAACS,mBAAP,EADmB,GAGpB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACAP,kBAAkB,IAAIF,MAAM,CAACU,4BAAP,EAAtB,GACGV,MAAM,CAACA,MAAP,GAAgBM,OAAhB,CAAwBT,mBAAxB,EAA6CG,MAAM,CAACU,4BAAP,EAA7C,CADH,GAEGV,MAAM,CAACA,MAAP,EApBkB,CAAxB;;EAuBA,IAAIC,sBAAJ,EAA4B;IAC3B,OAAOL,gCAAgC,CAACS,eAAD,CAAvC;EACA;;EACD,OAAOA,eAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getCountryByCallingCode.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getCountryByCallingCode.js new file mode 100644 index 00000000..290c2567 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getCountryByCallingCode.js @@ -0,0 +1,59 @@ +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +import Metadata from '../metadata.js'; +import getNumberType from './getNumberType.js'; +var USE_NON_GEOGRAPHIC_COUNTRY_CODE = false; +export default function getCountryByCallingCode(callingCode, nationalPhoneNumber, metadata) { + /* istanbul ignore if */ + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + if (metadata.isNonGeographicCallingCode(callingCode)) { + return '001'; + } + } // Is always non-empty, because `callingCode` is always valid + + + var possibleCountries = metadata.getCountryCodesForCallingCode(callingCode); + + if (!possibleCountries) { + return; + } // If there's just one country corresponding to the country code, + // then just return it, without further phone number digits validation. + + + if (possibleCountries.length === 1) { + return possibleCountries[0]; + } + + return selectCountryFromList(possibleCountries, nationalPhoneNumber, metadata.metadata); +} + +function selectCountryFromList(possibleCountries, nationalPhoneNumber, metadata) { + // Re-create `metadata` because it will be selecting a `country`. + metadata = new Metadata(metadata); + + for (var _iterator = _createForOfIteratorHelperLoose(possibleCountries), _step; !(_step = _iterator()).done;) { + var country = _step.value; + metadata.country(country); // Leading digits check would be the simplest and fastest one. + // Leading digits patterns are only defined for about 20% of all countries. + // https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits + // Matching "leading digits" is a sufficient but not necessary condition. + + if (metadata.leadingDigits()) { + if (nationalPhoneNumber && nationalPhoneNumber.search(metadata.leadingDigits()) === 0) { + return country; + } + } // Else perform full validation with all of those + // fixed-line/mobile/etc regular expressions. + else if (getNumberType({ + phone: nationalPhoneNumber, + country: country + }, undefined, metadata.metadata)) { + return country; + } + } +} +//# sourceMappingURL=getCountryByCallingCode.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getCountryByCallingCode.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getCountryByCallingCode.js.map new file mode 100644 index 00000000..a6746167 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getCountryByCallingCode.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getCountryByCallingCode.js","names":["Metadata","getNumberType","USE_NON_GEOGRAPHIC_COUNTRY_CODE","getCountryByCallingCode","callingCode","nationalPhoneNumber","metadata","isNonGeographicCallingCode","possibleCountries","getCountryCodesForCallingCode","length","selectCountryFromList","country","leadingDigits","search","phone","undefined"],"sources":["../../source/helpers/getCountryByCallingCode.js"],"sourcesContent":["import Metadata from '../metadata.js'\r\nimport getNumberType from './getNumberType.js'\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\nexport default function getCountryByCallingCode(callingCode, nationalPhoneNumber, metadata) {\r\n\t/* istanbul ignore if */\r\n\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\tif (metadata.isNonGeographicCallingCode(callingCode)) {\r\n\t\t\treturn '001'\r\n\t\t}\r\n\t}\r\n\t// Is always non-empty, because `callingCode` is always valid\r\n\tconst possibleCountries = metadata.getCountryCodesForCallingCode(callingCode)\r\n\tif (!possibleCountries) {\r\n\t\treturn\r\n\t}\r\n\t// If there's just one country corresponding to the country code,\r\n\t// then just return it, without further phone number digits validation.\r\n\tif (possibleCountries.length === 1) {\r\n\t\treturn possibleCountries[0]\r\n\t}\r\n\treturn selectCountryFromList(possibleCountries, nationalPhoneNumber, metadata.metadata)\r\n}\r\n\r\nfunction selectCountryFromList(possibleCountries, nationalPhoneNumber, metadata) {\r\n\t// Re-create `metadata` because it will be selecting a `country`.\r\n\tmetadata = new Metadata(metadata)\r\n\tfor (const country of possibleCountries) {\r\n\t\tmetadata.country(country)\r\n\t\t// Leading digits check would be the simplest and fastest one.\r\n\t\t// Leading digits patterns are only defined for about 20% of all countries.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits\r\n\t\t// Matching \"leading digits\" is a sufficient but not necessary condition.\r\n\t\tif (metadata.leadingDigits()) {\r\n\t\t\tif (nationalPhoneNumber &&\r\n\t\t\t\tnationalPhoneNumber.search(metadata.leadingDigits()) === 0) {\r\n\t\t\t\treturn country\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Else perform full validation with all of those\r\n\t\t// fixed-line/mobile/etc regular expressions.\r\n\t\telse if (getNumberType({ phone: nationalPhoneNumber, country }, undefined, metadata.metadata)) {\r\n\t\t\treturn country\r\n\t\t}\r\n\t}\r\n}"],"mappings":";;;;;;AAAA,OAAOA,QAAP,MAAqB,gBAArB;AACA,OAAOC,aAAP,MAA0B,oBAA1B;AAEA,IAAMC,+BAA+B,GAAG,KAAxC;AAEA,eAAe,SAASC,uBAAT,CAAiCC,WAAjC,EAA8CC,mBAA9C,EAAmEC,QAAnE,EAA6E;EAC3F;EACA,IAAIJ,+BAAJ,EAAqC;IACpC,IAAII,QAAQ,CAACC,0BAAT,CAAoCH,WAApC,CAAJ,EAAsD;MACrD,OAAO,KAAP;IACA;EACD,CAN0F,CAO3F;;;EACA,IAAMI,iBAAiB,GAAGF,QAAQ,CAACG,6BAAT,CAAuCL,WAAvC,CAA1B;;EACA,IAAI,CAACI,iBAAL,EAAwB;IACvB;EACA,CAX0F,CAY3F;EACA;;;EACA,IAAIA,iBAAiB,CAACE,MAAlB,KAA6B,CAAjC,EAAoC;IACnC,OAAOF,iBAAiB,CAAC,CAAD,CAAxB;EACA;;EACD,OAAOG,qBAAqB,CAACH,iBAAD,EAAoBH,mBAApB,EAAyCC,QAAQ,CAACA,QAAlD,CAA5B;AACA;;AAED,SAASK,qBAAT,CAA+BH,iBAA/B,EAAkDH,mBAAlD,EAAuEC,QAAvE,EAAiF;EAChF;EACAA,QAAQ,GAAG,IAAIN,QAAJ,CAAaM,QAAb,CAAX;;EACA,qDAAsBE,iBAAtB,wCAAyC;IAAA,IAA9BI,OAA8B;IACxCN,QAAQ,CAACM,OAAT,CAAiBA,OAAjB,EADwC,CAExC;IACA;IACA;IACA;;IACA,IAAIN,QAAQ,CAACO,aAAT,EAAJ,EAA8B;MAC7B,IAAIR,mBAAmB,IACtBA,mBAAmB,CAACS,MAApB,CAA2BR,QAAQ,CAACO,aAAT,EAA3B,MAAyD,CAD1D,EAC6D;QAC5D,OAAOD,OAAP;MACA;IACD,CALD,CAMA;IACA;IAPA,KAQK,IAAIX,aAAa,CAAC;MAAEc,KAAK,EAAEV,mBAAT;MAA8BO,OAAO,EAAPA;IAA9B,CAAD,EAA0CI,SAA1C,EAAqDV,QAAQ,CAACA,QAA9D,CAAjB,EAA0F;MAC9F,OAAOM,OAAP;IACA;EACD;AACD"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getIddPrefix.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getIddPrefix.js new file mode 100644 index 00000000..7368d15f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getIddPrefix.js @@ -0,0 +1,27 @@ +import Metadata from '../metadata.js'; +/** + * Pattern that makes it easy to distinguish whether a region has a single + * international dialing prefix or not. If a region has a single international + * prefix (e.g. 011 in USA), it will be represented as a string that contains + * a sequence of ASCII digits, and possibly a tilde, which signals waiting for + * the tone. If there are multiple available international prefixes in a + * region, they will be represented as a regex string that always contains one + * or more characters that are not ASCII digits or a tilde. + */ + +var SINGLE_IDD_PREFIX_REG_EXP = /^[\d]+(?:[~\u2053\u223C\uFF5E][\d]+)?$/; // For regions that have multiple IDD prefixes +// a preferred IDD prefix is returned. + +export default function getIddPrefix(country, callingCode, metadata) { + var countryMetadata = new Metadata(metadata); + countryMetadata.selectNumberingPlan(country, callingCode); + + if (countryMetadata.defaultIDDPrefix()) { + return countryMetadata.defaultIDDPrefix(); + } + + if (SINGLE_IDD_PREFIX_REG_EXP.test(countryMetadata.IDDPrefix())) { + return countryMetadata.IDDPrefix(); + } +} +//# sourceMappingURL=getIddPrefix.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getIddPrefix.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getIddPrefix.js.map new file mode 100644 index 00000000..c4685ab8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getIddPrefix.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getIddPrefix.js","names":["Metadata","SINGLE_IDD_PREFIX_REG_EXP","getIddPrefix","country","callingCode","metadata","countryMetadata","selectNumberingPlan","defaultIDDPrefix","test","IDDPrefix"],"sources":["../../source/helpers/getIddPrefix.js"],"sourcesContent":["import Metadata from '../metadata.js'\r\n\r\n/**\r\n * Pattern that makes it easy to distinguish whether a region has a single\r\n * international dialing prefix or not. If a region has a single international\r\n * prefix (e.g. 011 in USA), it will be represented as a string that contains\r\n * a sequence of ASCII digits, and possibly a tilde, which signals waiting for\r\n * the tone. If there are multiple available international prefixes in a\r\n * region, they will be represented as a regex string that always contains one\r\n * or more characters that are not ASCII digits or a tilde.\r\n */\r\nconst SINGLE_IDD_PREFIX_REG_EXP = /^[\\d]+(?:[~\\u2053\\u223C\\uFF5E][\\d]+)?$/\r\n\r\n// For regions that have multiple IDD prefixes\r\n// a preferred IDD prefix is returned.\r\nexport default function getIddPrefix(country, callingCode, metadata) {\r\n\tconst countryMetadata = new Metadata(metadata)\r\n\tcountryMetadata.selectNumberingPlan(country, callingCode)\r\n\tif (countryMetadata.defaultIDDPrefix()) {\r\n\t\treturn countryMetadata.defaultIDDPrefix()\r\n\t}\r\n\tif (SINGLE_IDD_PREFIX_REG_EXP.test(countryMetadata.IDDPrefix())) {\r\n\t\treturn countryMetadata.IDDPrefix()\r\n\t}\r\n}\r\n"],"mappings":"AAAA,OAAOA,QAAP,MAAqB,gBAArB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMC,yBAAyB,GAAG,wCAAlC,C,CAEA;AACA;;AACA,eAAe,SAASC,YAAT,CAAsBC,OAAtB,EAA+BC,WAA/B,EAA4CC,QAA5C,EAAsD;EACpE,IAAMC,eAAe,GAAG,IAAIN,QAAJ,CAAaK,QAAb,CAAxB;EACAC,eAAe,CAACC,mBAAhB,CAAoCJ,OAApC,EAA6CC,WAA7C;;EACA,IAAIE,eAAe,CAACE,gBAAhB,EAAJ,EAAwC;IACvC,OAAOF,eAAe,CAACE,gBAAhB,EAAP;EACA;;EACD,IAAIP,yBAAyB,CAACQ,IAA1B,CAA+BH,eAAe,CAACI,SAAhB,EAA/B,CAAJ,EAAiE;IAChE,OAAOJ,eAAe,CAACI,SAAhB,EAAP;EACA;AACD"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getNumberType.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getNumberType.js new file mode 100644 index 00000000..d466da81 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getNumberType.js @@ -0,0 +1,90 @@ +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +import Metadata from '../metadata.js'; +import matchesEntirely from './matchesEntirely.js'; +var NON_FIXED_LINE_PHONE_TYPES = ['MOBILE', 'PREMIUM_RATE', 'TOLL_FREE', 'SHARED_COST', 'VOIP', 'PERSONAL_NUMBER', 'PAGER', 'UAN', 'VOICEMAIL']; // Finds out national phone number type (fixed line, mobile, etc) + +export default function getNumberType(input, options, metadata) { + // If assigning the `{}` default value is moved to the arguments above, + // code coverage would decrease for some weird reason. + options = options || {}; // When `parse()` returned `{}` + // meaning that the phone number is not a valid one. + + if (!input.country) { + return; + } + + metadata = new Metadata(metadata); + metadata.selectNumberingPlan(input.country, input.countryCallingCode); + var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // The following is copy-pasted from the original function: + // https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835 + // Is this national number even valid for this country + + if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) { + return; + } // Is it fixed line number + + + if (isNumberTypeEqualTo(nationalNumber, 'FIXED_LINE', metadata)) { + // Because duplicate regular expressions are removed + // to reduce metadata size, if "mobile" pattern is "" + // then it means it was removed due to being a duplicate of the fixed-line pattern. + // + if (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') { + return 'FIXED_LINE_OR_MOBILE'; + } // `MOBILE` type pattern isn't included if it matched `FIXED_LINE` one. + // For example, for "US" country. + // Old metadata (< `1.0.18`) had a specific "types" data structure + // that happened to be `undefined` for `MOBILE` in that case. + // Newer metadata (>= `1.0.18`) has another data structure that is + // not `undefined` for `MOBILE` in that case (it's just an empty array). + // So this `if` is just for backwards compatibility with old metadata. + + + if (!metadata.type('MOBILE')) { + return 'FIXED_LINE_OR_MOBILE'; + } // Check if the number happens to qualify as both fixed line and mobile. + // (no such country in the minimal metadata set) + + /* istanbul ignore if */ + + + if (isNumberTypeEqualTo(nationalNumber, 'MOBILE', metadata)) { + return 'FIXED_LINE_OR_MOBILE'; + } + + return 'FIXED_LINE'; + } + + for (var _iterator = _createForOfIteratorHelperLoose(NON_FIXED_LINE_PHONE_TYPES), _step; !(_step = _iterator()).done;) { + var type = _step.value; + + if (isNumberTypeEqualTo(nationalNumber, type, metadata)) { + return type; + } + } +} +export function isNumberTypeEqualTo(nationalNumber, type, metadata) { + type = metadata.type(type); + + if (!type || !type.pattern()) { + return false; + } // Check if any possible number lengths are present; + // if so, we use them to avoid checking + // the validation pattern if they don't match. + // If they are absent, this means they match + // the general description, which we have + // already checked before a specific number type. + + + if (type.possibleLengths() && type.possibleLengths().indexOf(nationalNumber.length) < 0) { + return false; + } + + return matchesEntirely(nationalNumber, type.pattern()); +} +//# sourceMappingURL=getNumberType.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getNumberType.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getNumberType.js.map new file mode 100644 index 00000000..0e1e66be --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getNumberType.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getNumberType.js","names":["Metadata","matchesEntirely","NON_FIXED_LINE_PHONE_TYPES","getNumberType","input","options","metadata","country","selectNumberingPlan","countryCallingCode","nationalNumber","v2","phone","nationalNumberPattern","isNumberTypeEqualTo","type","pattern","possibleLengths","indexOf","length"],"sources":["../../source/helpers/getNumberType.js"],"sourcesContent":["import Metadata from '../metadata.js'\r\nimport matchesEntirely from './matchesEntirely.js'\r\n\r\nconst NON_FIXED_LINE_PHONE_TYPES = [\r\n\t'MOBILE',\r\n\t'PREMIUM_RATE',\r\n\t'TOLL_FREE',\r\n\t'SHARED_COST',\r\n\t'VOIP',\r\n\t'PERSONAL_NUMBER',\r\n\t'PAGER',\r\n\t'UAN',\r\n\t'VOICEMAIL'\r\n]\r\n\r\n// Finds out national phone number type (fixed line, mobile, etc)\r\nexport default function getNumberType(input, options, metadata)\r\n{\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\r\n\t// When `parse()` returned `{}`\r\n\t// meaning that the phone number is not a valid one.\r\n\tif (!input.country) {\r\n\t\treturn\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tmetadata.selectNumberingPlan(input.country, input.countryCallingCode)\r\n\r\n\tconst nationalNumber = options.v2 ? input.nationalNumber : input.phone\r\n\r\n\t// The following is copy-pasted from the original function:\r\n\t// https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835\r\n\r\n\t// Is this national number even valid for this country\r\n\tif (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) {\r\n\t\treturn\r\n\t}\r\n\r\n\t// Is it fixed line number\r\n\tif (isNumberTypeEqualTo(nationalNumber, 'FIXED_LINE', metadata)) {\r\n\t\t// Because duplicate regular expressions are removed\r\n\t\t// to reduce metadata size, if \"mobile\" pattern is \"\"\r\n\t\t// then it means it was removed due to being a duplicate of the fixed-line pattern.\r\n\t\t//\r\n\t\tif (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\t// `MOBILE` type pattern isn't included if it matched `FIXED_LINE` one.\r\n\t\t// For example, for \"US\" country.\r\n\t\t// Old metadata (< `1.0.18`) had a specific \"types\" data structure\r\n\t\t// that happened to be `undefined` for `MOBILE` in that case.\r\n\t\t// Newer metadata (>= `1.0.18`) has another data structure that is\r\n\t\t// not `undefined` for `MOBILE` in that case (it's just an empty array).\r\n\t\t// So this `if` is just for backwards compatibility with old metadata.\r\n\t\tif (!metadata.type('MOBILE')) {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\t// Check if the number happens to qualify as both fixed line and mobile.\r\n\t\t// (no such country in the minimal metadata set)\r\n\t\t/* istanbul ignore if */\r\n\t\tif (isNumberTypeEqualTo(nationalNumber, 'MOBILE', metadata)) {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\treturn 'FIXED_LINE'\r\n\t}\r\n\r\n\tfor (const type of NON_FIXED_LINE_PHONE_TYPES) {\r\n\t\tif (isNumberTypeEqualTo(nationalNumber, type, metadata)) {\r\n\t\t\treturn type\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function isNumberTypeEqualTo(nationalNumber, type, metadata) {\r\n\ttype = metadata.type(type)\r\n\tif (!type || !type.pattern()) {\r\n\t\treturn false\r\n\t}\r\n\t// Check if any possible number lengths are present;\r\n\t// if so, we use them to avoid checking\r\n\t// the validation pattern if they don't match.\r\n\t// If they are absent, this means they match\r\n\t// the general description, which we have\r\n\t// already checked before a specific number type.\r\n\tif (type.possibleLengths() &&\r\n\t\ttype.possibleLengths().indexOf(nationalNumber.length) < 0) {\r\n\t\treturn false\r\n\t}\r\n\treturn matchesEntirely(nationalNumber, type.pattern())\r\n}"],"mappings":";;;;;;AAAA,OAAOA,QAAP,MAAqB,gBAArB;AACA,OAAOC,eAAP,MAA4B,sBAA5B;AAEA,IAAMC,0BAA0B,GAAG,CAClC,QADkC,EAElC,cAFkC,EAGlC,WAHkC,EAIlC,aAJkC,EAKlC,MALkC,EAMlC,iBANkC,EAOlC,OAPkC,EAQlC,KARkC,EASlC,WATkC,CAAnC,C,CAYA;;AACA,eAAe,SAASC,aAAT,CAAuBC,KAAvB,EAA8BC,OAA9B,EAAuCC,QAAvC,EACf;EACC;EACA;EACAD,OAAO,GAAGA,OAAO,IAAI,EAArB,CAHD,CAKC;EACA;;EACA,IAAI,CAACD,KAAK,CAACG,OAAX,EAAoB;IACnB;EACA;;EAEDD,QAAQ,GAAG,IAAIN,QAAJ,CAAaM,QAAb,CAAX;EAEAA,QAAQ,CAACE,mBAAT,CAA6BJ,KAAK,CAACG,OAAnC,EAA4CH,KAAK,CAACK,kBAAlD;EAEA,IAAMC,cAAc,GAAGL,OAAO,CAACM,EAAR,GAAaP,KAAK,CAACM,cAAnB,GAAoCN,KAAK,CAACQ,KAAjE,CAfD,CAiBC;EACA;EAEA;;EACA,IAAI,CAACX,eAAe,CAACS,cAAD,EAAiBJ,QAAQ,CAACO,qBAAT,EAAjB,CAApB,EAAwE;IACvE;EACA,CAvBF,CAyBC;;;EACA,IAAIC,mBAAmB,CAACJ,cAAD,EAAiB,YAAjB,EAA+BJ,QAA/B,CAAvB,EAAiE;IAChE;IACA;IACA;IACA;IACA,IAAIA,QAAQ,CAACS,IAAT,CAAc,QAAd,KAA2BT,QAAQ,CAACS,IAAT,CAAc,QAAd,EAAwBC,OAAxB,OAAsC,EAArE,EAAyE;MACxE,OAAO,sBAAP;IACA,CAP+D,CAShE;IACA;IACA;IACA;IACA;IACA;IACA;;;IACA,IAAI,CAACV,QAAQ,CAACS,IAAT,CAAc,QAAd,CAAL,EAA8B;MAC7B,OAAO,sBAAP;IACA,CAlB+D,CAoBhE;IACA;;IACA;;;IACA,IAAID,mBAAmB,CAACJ,cAAD,EAAiB,QAAjB,EAA2BJ,QAA3B,CAAvB,EAA6D;MAC5D,OAAO,sBAAP;IACA;;IAED,OAAO,YAAP;EACA;;EAED,qDAAmBJ,0BAAnB,wCAA+C;IAAA,IAApCa,IAAoC;;IAC9C,IAAID,mBAAmB,CAACJ,cAAD,EAAiBK,IAAjB,EAAuBT,QAAvB,CAAvB,EAAyD;MACxD,OAAOS,IAAP;IACA;EACD;AACD;AAED,OAAO,SAASD,mBAAT,CAA6BJ,cAA7B,EAA6CK,IAA7C,EAAmDT,QAAnD,EAA6D;EACnES,IAAI,GAAGT,QAAQ,CAACS,IAAT,CAAcA,IAAd,CAAP;;EACA,IAAI,CAACA,IAAD,IAAS,CAACA,IAAI,CAACC,OAAL,EAAd,EAA8B;IAC7B,OAAO,KAAP;EACA,CAJkE,CAKnE;EACA;EACA;EACA;EACA;EACA;;;EACA,IAAID,IAAI,CAACE,eAAL,MACHF,IAAI,CAACE,eAAL,GAAuBC,OAAvB,CAA+BR,cAAc,CAACS,MAA9C,IAAwD,CADzD,EAC4D;IAC3D,OAAO,KAAP;EACA;;EACD,OAAOlB,eAAe,CAACS,cAAD,EAAiBK,IAAI,CAACC,OAAL,EAAjB,CAAtB;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getNumberType.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getNumberType.test.js new file mode 100644 index 00000000..9bdc6682 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getNumberType.test.js @@ -0,0 +1,14 @@ +import getNumberType from './getNumberType.js'; +import oldMetadata from '../../test/metadata/1.0.0/metadata.min.json' assert { type: 'json' }; +import Metadata from '../metadata.js'; +describe('getNumberType', function () { + it('should get number type when using old metadata', function () { + getNumberType({ + nationalNumber: '2133734253', + country: 'US' + }, { + v2: true + }, oldMetadata).should.equal('FIXED_LINE_OR_MOBILE'); + }); +}); +//# sourceMappingURL=getNumberType.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getNumberType.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getNumberType.test.js.map new file mode 100644 index 00000000..f0354ef8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/getNumberType.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getNumberType.test.js","names":["getNumberType","oldMetadata","type","Metadata","describe","it","nationalNumber","country","v2","should","equal"],"sources":["../../source/helpers/getNumberType.test.js"],"sourcesContent":["import getNumberType from './getNumberType.js'\r\n\r\nimport oldMetadata from '../../test/metadata/1.0.0/metadata.min.json' assert { type: 'json' }\r\n\r\nimport Metadata from '../metadata.js'\r\n\r\n\r\ndescribe('getNumberType', function() {\r\n\tit('should get number type when using old metadata', function() {\r\n\t\tgetNumberType(\r\n\t\t\t{\r\n\t\t\t\tnationalNumber: '2133734253',\r\n\t\t\t\tcountry: 'US'\r\n\t\t\t},\r\n\t\t\t{ v2: true },\r\n\t\t\toldMetadata\r\n\t\t).should.equal('FIXED_LINE_OR_MOBILE')\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,aAAP,MAA0B,oBAA1B;AAEA,OAAOC,WAAP,MAAwB,6CAAxB,UAA+EC,IAAI,EAAE,MAArF;AAEA,OAAOC,QAAP,MAAqB,gBAArB;AAGAC,QAAQ,CAAC,eAAD,EAAkB,YAAW;EACpCC,EAAE,CAAC,gDAAD,EAAmD,YAAW;IAC/DL,aAAa,CACZ;MACCM,cAAc,EAAE,YADjB;MAECC,OAAO,EAAE;IAFV,CADY,EAKZ;MAAEC,EAAE,EAAE;IAAN,CALY,EAMZP,WANY,CAAb,CAOEQ,MAPF,CAOSC,KAPT,CAOe,sBAPf;EAQA,CATC,CAAF;AAUA,CAXO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/isViablePhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/isViablePhoneNumber.js new file mode 100644 index 00000000..2447c07d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/isViablePhoneNumber.js @@ -0,0 +1,69 @@ +import { MIN_LENGTH_FOR_NSN, VALID_DIGITS, VALID_PUNCTUATION, PLUS_CHARS } from '../constants.js'; +import createExtensionPattern from './extension/createExtensionPattern.js'; // Regular expression of viable phone numbers. This is location independent. +// Checks we have at least three leading digits, and only valid punctuation, +// alpha characters and digits in the phone number. Does not include extension +// data. The symbol 'x' is allowed here as valid punctuation since it is often +// used as a placeholder for carrier codes, for example in Brazilian phone +// numbers. We also allow multiple '+' characters at the start. +// +// Corresponds to the following: +// [digits]{minLengthNsn}| +// plus_sign* +// (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])* +// +// The first reg-ex is to allow short numbers (two digits long) to be parsed if +// they are entered as "15" etc, but only if there is no punctuation in them. +// The second expression restricts the number of digits to three or more, but +// then allows them to be in international form, and to have alpha-characters +// and punctuation. We split up the two reg-exes here and combine them when +// creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it +// with ^ and append $ to each branch. +// +// "Note VALID_PUNCTUATION starts with a -, +// so must be the first in the range" (c) Google devs. +// (wtf did they mean by saying that; probably nothing) +// + +var MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + VALID_DIGITS + ']{' + MIN_LENGTH_FOR_NSN + '}'; // +// And this is the second reg-exp: +// (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp) +// + +export var VALID_PHONE_NUMBER = '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){3,}' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*'; // This regular expression isn't present in Google's `libphonenumber` +// and is only used to determine whether the phone number being input +// is too short for it to even consider it a "valid" number. +// This is just a way to differentiate between a really invalid phone +// number like "abcde" and a valid phone number that a user has just +// started inputting, like "+1" or "1": both these cases would be +// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this +// library can provide a more detailed error message — whether it's +// really "not a number", or is it just a start of a valid phone number. + +var VALID_PHONE_NUMBER_START_REG_EXP = new RegExp('^' + '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){1,2}' + '$', 'i'); +export var VALID_PHONE_NUMBER_WITH_EXTENSION = VALID_PHONE_NUMBER + // Phone number extensions +'(?:' + createExtensionPattern() + ')?'; // The combined regular expression for valid phone numbers: +// + +var VALID_PHONE_NUMBER_PATTERN = new RegExp( // Either a short two-digit-only phone number +'^' + MIN_LENGTH_PHONE_NUMBER_PATTERN + '$' + '|' + // Or a longer fully parsed phone number (min 3 characters) +'^' + VALID_PHONE_NUMBER_WITH_EXTENSION + '$', 'i'); // Checks to see if the string of characters could possibly be a phone number at +// all. At the moment, checks to see that the string begins with at least 2 +// digits, ignoring any punctuation commonly found in phone numbers. This method +// does not require the number to be normalized in advance - but does assume +// that leading non-number symbols have been removed, such as by the method +// `extract_possible_number`. +// + +export default function isViablePhoneNumber(number) { + return number.length >= MIN_LENGTH_FOR_NSN && VALID_PHONE_NUMBER_PATTERN.test(number); +} // This is just a way to differentiate between a really invalid phone +// number like "abcde" and a valid phone number that a user has just +// started inputting, like "+1" or "1": both these cases would be +// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this +// library can provide a more detailed error message — whether it's +// really "not a number", or is it just a start of a valid phone number. + +export function isViablePhoneNumberStart(number) { + return VALID_PHONE_NUMBER_START_REG_EXP.test(number); +} +//# sourceMappingURL=isViablePhoneNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/isViablePhoneNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/isViablePhoneNumber.js.map new file mode 100644 index 00000000..1c7ed750 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/isViablePhoneNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isViablePhoneNumber.js","names":["MIN_LENGTH_FOR_NSN","VALID_DIGITS","VALID_PUNCTUATION","PLUS_CHARS","createExtensionPattern","MIN_LENGTH_PHONE_NUMBER_PATTERN","VALID_PHONE_NUMBER","VALID_PHONE_NUMBER_START_REG_EXP","RegExp","VALID_PHONE_NUMBER_WITH_EXTENSION","VALID_PHONE_NUMBER_PATTERN","isViablePhoneNumber","number","length","test","isViablePhoneNumberStart"],"sources":["../../source/helpers/isViablePhoneNumber.js"],"sourcesContent":["import {\r\n\tMIN_LENGTH_FOR_NSN,\r\n\tVALID_DIGITS,\r\n\tVALID_PUNCTUATION,\r\n\tPLUS_CHARS\r\n} from '../constants.js'\r\n\r\nimport createExtensionPattern from './extension/createExtensionPattern.js'\r\n\r\n// Regular expression of viable phone numbers. This is location independent.\r\n// Checks we have at least three leading digits, and only valid punctuation,\r\n// alpha characters and digits in the phone number. Does not include extension\r\n// data. The symbol 'x' is allowed here as valid punctuation since it is often\r\n// used as a placeholder for carrier codes, for example in Brazilian phone\r\n// numbers. We also allow multiple '+' characters at the start.\r\n//\r\n// Corresponds to the following:\r\n// [digits]{minLengthNsn}|\r\n// plus_sign*\r\n// (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])*\r\n//\r\n// The first reg-ex is to allow short numbers (two digits long) to be parsed if\r\n// they are entered as \"15\" etc, but only if there is no punctuation in them.\r\n// The second expression restricts the number of digits to three or more, but\r\n// then allows them to be in international form, and to have alpha-characters\r\n// and punctuation. We split up the two reg-exes here and combine them when\r\n// creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it\r\n// with ^ and append $ to each branch.\r\n//\r\n// \"Note VALID_PUNCTUATION starts with a -,\r\n// so must be the first in the range\" (c) Google devs.\r\n// (wtf did they mean by saying that; probably nothing)\r\n//\r\nconst MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + VALID_DIGITS + ']{' + MIN_LENGTH_FOR_NSN + '}'\r\n//\r\n// And this is the second reg-exp:\r\n// (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp)\r\n//\r\nexport const VALID_PHONE_NUMBER =\r\n\t'[' + PLUS_CHARS + ']{0,1}' +\r\n\t'(?:' +\r\n\t\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t\t'[' + VALID_DIGITS + ']' +\r\n\t'){3,}' +\r\n\t'[' +\r\n\t\tVALID_PUNCTUATION +\r\n\t\tVALID_DIGITS +\r\n\t']*'\r\n\r\n// This regular expression isn't present in Google's `libphonenumber`\r\n// and is only used to determine whether the phone number being input\r\n// is too short for it to even consider it a \"valid\" number.\r\n// This is just a way to differentiate between a really invalid phone\r\n// number like \"abcde\" and a valid phone number that a user has just\r\n// started inputting, like \"+1\" or \"1\": both these cases would be\r\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\r\n// library can provide a more detailed error message — whether it's\r\n// really \"not a number\", or is it just a start of a valid phone number.\r\nconst VALID_PHONE_NUMBER_START_REG_EXP = new RegExp(\r\n\t'^' +\r\n\t'[' + PLUS_CHARS + ']{0,1}' +\r\n\t'(?:' +\r\n\t\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t\t'[' + VALID_DIGITS + ']' +\r\n\t'){1,2}' +\r\n\t'$'\r\n, 'i')\r\n\r\nexport const VALID_PHONE_NUMBER_WITH_EXTENSION =\r\n\tVALID_PHONE_NUMBER +\r\n\t// Phone number extensions\r\n\t'(?:' + createExtensionPattern() + ')?'\r\n\r\n// The combined regular expression for valid phone numbers:\r\n//\r\nconst VALID_PHONE_NUMBER_PATTERN = new RegExp(\r\n\t// Either a short two-digit-only phone number\r\n\t'^' +\r\n\t\tMIN_LENGTH_PHONE_NUMBER_PATTERN +\r\n\t'$' +\r\n\t'|' +\r\n\t// Or a longer fully parsed phone number (min 3 characters)\r\n\t'^' +\r\n\t\tVALID_PHONE_NUMBER_WITH_EXTENSION +\r\n\t'$'\r\n, 'i')\r\n\r\n// Checks to see if the string of characters could possibly be a phone number at\r\n// all. At the moment, checks to see that the string begins with at least 2\r\n// digits, ignoring any punctuation commonly found in phone numbers. This method\r\n// does not require the number to be normalized in advance - but does assume\r\n// that leading non-number symbols have been removed, such as by the method\r\n// `extract_possible_number`.\r\n//\r\nexport default function isViablePhoneNumber(number) {\r\n\treturn number.length >= MIN_LENGTH_FOR_NSN &&\r\n\t\tVALID_PHONE_NUMBER_PATTERN.test(number)\r\n}\r\n\r\n// This is just a way to differentiate between a really invalid phone\r\n// number like \"abcde\" and a valid phone number that a user has just\r\n// started inputting, like \"+1\" or \"1\": both these cases would be\r\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\r\n// library can provide a more detailed error message — whether it's\r\n// really \"not a number\", or is it just a start of a valid phone number.\r\nexport function isViablePhoneNumberStart(number) {\r\n\treturn VALID_PHONE_NUMBER_START_REG_EXP.test(number)\r\n}"],"mappings":"AAAA,SACCA,kBADD,EAECC,YAFD,EAGCC,iBAHD,EAICC,UAJD,QAKO,iBALP;AAOA,OAAOC,sBAAP,MAAmC,uCAAnC,C,CAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMC,+BAA+B,GAAG,MAAMJ,YAAN,GAAqB,IAArB,GAA4BD,kBAA5B,GAAiD,GAAzF,C,CACA;AACA;AACA;AACA;;AACA,OAAO,IAAMM,kBAAkB,GAC9B,MAAMH,UAAN,GAAmB,QAAnB,GACA,KADA,GAEC,GAFD,GAEOD,iBAFP,GAE2B,IAF3B,GAGC,GAHD,GAGOD,YAHP,GAGsB,GAHtB,GAIA,OAJA,GAKA,GALA,GAMCC,iBAND,GAOCD,YAPD,GAQA,IATM,C,CAWP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMM,gCAAgC,GAAG,IAAIC,MAAJ,CACxC,MACA,GADA,GACML,UADN,GACmB,QADnB,GAEA,KAFA,GAGC,GAHD,GAGOD,iBAHP,GAG2B,IAH3B,GAIC,GAJD,GAIOD,YAJP,GAIsB,GAJtB,GAKA,QALA,GAMA,GAPwC,EAQvC,GARuC,CAAzC;AAUA,OAAO,IAAMQ,iCAAiC,GAC7CH,kBAAkB,GAClB;AACA,KAFA,GAEQF,sBAAsB,EAF9B,GAEmC,IAH7B,C,CAKP;AACA;;AACA,IAAMM,0BAA0B,GAAG,IAAIF,MAAJ,EAClC;AACA,MACCH,+BADD,GAEA,GAFA,GAGA,GAHA,GAIA;AACA,GALA,GAMCI,iCAND,GAOA,GATkC,EAUjC,GAViC,CAAnC,C,CAYA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASE,mBAAT,CAA6BC,MAA7B,EAAqC;EACnD,OAAOA,MAAM,CAACC,MAAP,IAAiBb,kBAAjB,IACNU,0BAA0B,CAACI,IAA3B,CAAgCF,MAAhC,CADD;AAEA,C,CAED;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASG,wBAAT,CAAkCH,MAAlC,EAA0C;EAChD,OAAOL,gCAAgC,CAACO,IAAjC,CAAsCF,MAAtC,CAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/matchesEntirely.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/matchesEntirely.js new file mode 100644 index 00000000..c2d066c4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/matchesEntirely.js @@ -0,0 +1,12 @@ +/** + * Checks whether the entire input sequence can be matched + * against the regular expression. + * @return {boolean} + */ +export default function matchesEntirely(text, regular_expression) { + // If assigning the `''` default value is moved to the arguments above, + // code coverage would decrease for some weird reason. + text = text || ''; + return new RegExp('^(?:' + regular_expression + ')$').test(text); +} +//# sourceMappingURL=matchesEntirely.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/matchesEntirely.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/matchesEntirely.js.map new file mode 100644 index 00000000..d89165bc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/matchesEntirely.js.map @@ -0,0 +1 @@ +{"version":3,"file":"matchesEntirely.js","names":["matchesEntirely","text","regular_expression","RegExp","test"],"sources":["../../source/helpers/matchesEntirely.js"],"sourcesContent":["/**\r\n * Checks whether the entire input sequence can be matched\r\n * against the regular expression.\r\n * @return {boolean}\r\n */\r\nexport default function matchesEntirely(text, regular_expression) {\r\n\t// If assigning the `''` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\ttext = text || ''\r\n\treturn new RegExp('^(?:' + regular_expression + ')$').test(text)\r\n}"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASA,eAAT,CAAyBC,IAAzB,EAA+BC,kBAA/B,EAAmD;EACjE;EACA;EACAD,IAAI,GAAGA,IAAI,IAAI,EAAf;EACA,OAAO,IAAIE,MAAJ,CAAW,SAASD,kBAAT,GAA8B,IAAzC,EAA+CE,IAA/C,CAAoDH,IAApD,CAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/matchesEntirely.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/matchesEntirely.test.js new file mode 100644 index 00000000..89157440 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/matchesEntirely.test.js @@ -0,0 +1,10 @@ +import matchesEntirely from './matchesEntirely.js'; +describe('matchesEntirely', function () { + it('should work in edge cases', function () { + // No text. + matchesEntirely(undefined, '').should.equal(true); // "OR" in regexp. + + matchesEntirely('911231231', '4\d{8}|[1-9]\d{7}').should.equal(false); + }); +}); +//# sourceMappingURL=matchesEntirely.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/matchesEntirely.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/matchesEntirely.test.js.map new file mode 100644 index 00000000..16ac2c48 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/matchesEntirely.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"matchesEntirely.test.js","names":["matchesEntirely","describe","it","undefined","should","equal"],"sources":["../../source/helpers/matchesEntirely.test.js"],"sourcesContent":["import matchesEntirely from './matchesEntirely.js'\r\n\r\ndescribe('matchesEntirely', () => {\r\n\tit('should work in edge cases', () => {\r\n\t\t// No text.\r\n\t\tmatchesEntirely(undefined, '').should.equal(true)\r\n\r\n\t\t// \"OR\" in regexp.\r\n\t\tmatchesEntirely('911231231', '4\\d{8}|[1-9]\\d{7}').should.equal(false)\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,eAAP,MAA4B,sBAA5B;AAEAC,QAAQ,CAAC,iBAAD,EAAoB,YAAM;EACjCC,EAAE,CAAC,2BAAD,EAA8B,YAAM;IACrC;IACAF,eAAe,CAACG,SAAD,EAAY,EAAZ,CAAf,CAA+BC,MAA/B,CAAsCC,KAAtC,CAA4C,IAA5C,EAFqC,CAIrC;;IACAL,eAAe,CAAC,WAAD,EAAc,mBAAd,CAAf,CAAkDI,MAAlD,CAAyDC,KAAzD,CAA+D,KAA/D;EACA,CANC,CAAF;AAOA,CARO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/mergeArrays.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/mergeArrays.js new file mode 100644 index 00000000..601976ce --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/mergeArrays.js @@ -0,0 +1,33 @@ +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +/** + * Merges two arrays. + * @param {*} a + * @param {*} b + * @return {*} + */ +export default function mergeArrays(a, b) { + var merged = a.slice(); + + for (var _iterator = _createForOfIteratorHelperLoose(b), _step; !(_step = _iterator()).done;) { + var element = _step.value; + + if (a.indexOf(element) < 0) { + merged.push(element); + } + } + + return merged.sort(function (a, b) { + return a - b; + }); // ES6 version, requires Set polyfill. + // let merged = new Set(a) + // for (const element of b) { + // merged.add(i) + // } + // return Array.from(merged).sort((a, b) => a - b) +} +//# sourceMappingURL=mergeArrays.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/mergeArrays.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/mergeArrays.js.map new file mode 100644 index 00000000..7fcf4338 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/mergeArrays.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mergeArrays.js","names":["mergeArrays","a","b","merged","slice","element","indexOf","push","sort"],"sources":["../../source/helpers/mergeArrays.js"],"sourcesContent":["/**\r\n * Merges two arrays.\r\n * @param {*} a\r\n * @param {*} b\r\n * @return {*}\r\n */\r\nexport default function mergeArrays(a, b) {\r\n\tconst merged = a.slice()\r\n\r\n\tfor (const element of b) {\r\n\t\tif (a.indexOf(element) < 0) {\r\n\t\t\tmerged.push(element)\r\n\t\t}\r\n\t}\r\n\r\n\treturn merged.sort((a, b) => a - b)\r\n\r\n\t// ES6 version, requires Set polyfill.\r\n\t// let merged = new Set(a)\r\n\t// for (const element of b) {\r\n\t// \tmerged.add(i)\r\n\t// }\r\n\t// return Array.from(merged).sort((a, b) => a - b)\r\n}"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASA,WAAT,CAAqBC,CAArB,EAAwBC,CAAxB,EAA2B;EACzC,IAAMC,MAAM,GAAGF,CAAC,CAACG,KAAF,EAAf;;EAEA,qDAAsBF,CAAtB,wCAAyB;IAAA,IAAdG,OAAc;;IACxB,IAAIJ,CAAC,CAACK,OAAF,CAAUD,OAAV,IAAqB,CAAzB,EAA4B;MAC3BF,MAAM,CAACI,IAAP,CAAYF,OAAZ;IACA;EACD;;EAED,OAAOF,MAAM,CAACK,IAAP,CAAY,UAACP,CAAD,EAAIC,CAAJ;IAAA,OAAUD,CAAC,GAAGC,CAAd;EAAA,CAAZ,CAAP,CATyC,CAWzC;EACA;EACA;EACA;EACA;EACA;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/mergeArrays.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/mergeArrays.test.js new file mode 100644 index 00000000..9fd88cbe --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/mergeArrays.test.js @@ -0,0 +1,7 @@ +import mergeArrays from './mergeArrays.js'; +describe('mergeArrays', function () { + it('should merge arrays', function () { + mergeArrays([1, 2], [2, 3]).should.deep.equal([1, 2, 3]); + }); +}); +//# sourceMappingURL=mergeArrays.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/mergeArrays.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/mergeArrays.test.js.map new file mode 100644 index 00000000..c790e7e0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/mergeArrays.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mergeArrays.test.js","names":["mergeArrays","describe","it","should","deep","equal"],"sources":["../../source/helpers/mergeArrays.test.js"],"sourcesContent":["import mergeArrays from './mergeArrays.js'\r\n\r\ndescribe('mergeArrays', () => {\r\n\tit('should merge arrays', () => {\r\n\t\tmergeArrays([1, 2], [2, 3]).should.deep.equal([1, 2, 3])\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,WAAP,MAAwB,kBAAxB;AAEAC,QAAQ,CAAC,aAAD,EAAgB,YAAM;EAC7BC,EAAE,CAAC,qBAAD,EAAwB,YAAM;IAC/BF,WAAW,CAAC,CAAC,CAAD,EAAI,CAAJ,CAAD,EAAS,CAAC,CAAD,EAAI,CAAJ,CAAT,CAAX,CAA4BG,MAA5B,CAAmCC,IAAnC,CAAwCC,KAAxC,CAA8C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAA9C;EACA,CAFC,CAAF;AAGA,CAJO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/parseDigits.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/parseDigits.js new file mode 100644 index 00000000..dd007423 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/parseDigits.js @@ -0,0 +1,121 @@ +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +// These mappings map a character (key) to a specific digit that should +// replace it for normalization purposes. Non-European digits that +// may be used in phone numbers are mapped to a European equivalent. +// +// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`. +// +export var DIGITS = { + '0': '0', + '1': '1', + '2': '2', + '3': '3', + '4': '4', + '5': '5', + '6': '6', + '7': '7', + '8': '8', + '9': '9', + "\uFF10": '0', + // Fullwidth digit 0 + "\uFF11": '1', + // Fullwidth digit 1 + "\uFF12": '2', + // Fullwidth digit 2 + "\uFF13": '3', + // Fullwidth digit 3 + "\uFF14": '4', + // Fullwidth digit 4 + "\uFF15": '5', + // Fullwidth digit 5 + "\uFF16": '6', + // Fullwidth digit 6 + "\uFF17": '7', + // Fullwidth digit 7 + "\uFF18": '8', + // Fullwidth digit 8 + "\uFF19": '9', + // Fullwidth digit 9 + "\u0660": '0', + // Arabic-indic digit 0 + "\u0661": '1', + // Arabic-indic digit 1 + "\u0662": '2', + // Arabic-indic digit 2 + "\u0663": '3', + // Arabic-indic digit 3 + "\u0664": '4', + // Arabic-indic digit 4 + "\u0665": '5', + // Arabic-indic digit 5 + "\u0666": '6', + // Arabic-indic digit 6 + "\u0667": '7', + // Arabic-indic digit 7 + "\u0668": '8', + // Arabic-indic digit 8 + "\u0669": '9', + // Arabic-indic digit 9 + "\u06F0": '0', + // Eastern-Arabic digit 0 + "\u06F1": '1', + // Eastern-Arabic digit 1 + "\u06F2": '2', + // Eastern-Arabic digit 2 + "\u06F3": '3', + // Eastern-Arabic digit 3 + "\u06F4": '4', + // Eastern-Arabic digit 4 + "\u06F5": '5', + // Eastern-Arabic digit 5 + "\u06F6": '6', + // Eastern-Arabic digit 6 + "\u06F7": '7', + // Eastern-Arabic digit 7 + "\u06F8": '8', + // Eastern-Arabic digit 8 + "\u06F9": '9' // Eastern-Arabic digit 9 + +}; +export function parseDigit(character) { + return DIGITS[character]; +} +/** + * Parses phone number digits from a string. + * Drops all punctuation leaving only digits. + * Also converts wide-ascii and arabic-indic numerals to conventional numerals. + * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`. + * @param {string} string + * @return {string} + * @example + * ```js + * parseDigits('8 (800) 555') + * // Outputs '8800555'. + * ``` + */ + +export default function parseDigits(string) { + var result = ''; // Using `.split('')` here instead of normal `for ... of` + // because the importing application doesn't neccessarily include an ES6 polyfill. + // The `.split('')` approach discards "exotic" UTF-8 characters + // (the ones consisting of four bytes) but digits + // (including non-European ones) don't fall into that range + // so such "exotic" characters would be discarded anyway. + + for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) { + var character = _step.value; + var digit = parseDigit(character); + + if (digit) { + result += digit; + } + } + + return result; +} +//# sourceMappingURL=parseDigits.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/parseDigits.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/parseDigits.js.map new file mode 100644 index 00000000..5bb39f73 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/parseDigits.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parseDigits.js","names":["DIGITS","parseDigit","character","parseDigits","string","result","split","digit"],"sources":["../../source/helpers/parseDigits.js"],"sourcesContent":["// These mappings map a character (key) to a specific digit that should\r\n// replace it for normalization purposes. Non-European digits that\r\n// may be used in phone numbers are mapped to a European equivalent.\r\n//\r\n// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n//\r\nexport const DIGITS = {\r\n\t'0': '0',\r\n\t'1': '1',\r\n\t'2': '2',\r\n\t'3': '3',\r\n\t'4': '4',\r\n\t'5': '5',\r\n\t'6': '6',\r\n\t'7': '7',\r\n\t'8': '8',\r\n\t'9': '9',\r\n\t'\\uFF10': '0', // Fullwidth digit 0\r\n\t'\\uFF11': '1', // Fullwidth digit 1\r\n\t'\\uFF12': '2', // Fullwidth digit 2\r\n\t'\\uFF13': '3', // Fullwidth digit 3\r\n\t'\\uFF14': '4', // Fullwidth digit 4\r\n\t'\\uFF15': '5', // Fullwidth digit 5\r\n\t'\\uFF16': '6', // Fullwidth digit 6\r\n\t'\\uFF17': '7', // Fullwidth digit 7\r\n\t'\\uFF18': '8', // Fullwidth digit 8\r\n\t'\\uFF19': '9', // Fullwidth digit 9\r\n\t'\\u0660': '0', // Arabic-indic digit 0\r\n\t'\\u0661': '1', // Arabic-indic digit 1\r\n\t'\\u0662': '2', // Arabic-indic digit 2\r\n\t'\\u0663': '3', // Arabic-indic digit 3\r\n\t'\\u0664': '4', // Arabic-indic digit 4\r\n\t'\\u0665': '5', // Arabic-indic digit 5\r\n\t'\\u0666': '6', // Arabic-indic digit 6\r\n\t'\\u0667': '7', // Arabic-indic digit 7\r\n\t'\\u0668': '8', // Arabic-indic digit 8\r\n\t'\\u0669': '9', // Arabic-indic digit 9\r\n\t'\\u06F0': '0', // Eastern-Arabic digit 0\r\n\t'\\u06F1': '1', // Eastern-Arabic digit 1\r\n\t'\\u06F2': '2', // Eastern-Arabic digit 2\r\n\t'\\u06F3': '3', // Eastern-Arabic digit 3\r\n\t'\\u06F4': '4', // Eastern-Arabic digit 4\r\n\t'\\u06F5': '5', // Eastern-Arabic digit 5\r\n\t'\\u06F6': '6', // Eastern-Arabic digit 6\r\n\t'\\u06F7': '7', // Eastern-Arabic digit 7\r\n\t'\\u06F8': '8', // Eastern-Arabic digit 8\r\n\t'\\u06F9': '9' // Eastern-Arabic digit 9\r\n}\r\n\r\nexport function parseDigit(character) {\r\n\treturn DIGITS[character]\r\n}\r\n\r\n/**\r\n * Parses phone number digits from a string.\r\n * Drops all punctuation leaving only digits.\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * parseDigits('8 (800) 555')\r\n * // Outputs '8800555'.\r\n * ```\r\n */\r\nexport default function parseDigits(string) {\r\n\tlet result = ''\r\n\t// Using `.split('')` here instead of normal `for ... of`\r\n\t// because the importing application doesn't neccessarily include an ES6 polyfill.\r\n\t// The `.split('')` approach discards \"exotic\" UTF-8 characters\r\n\t// (the ones consisting of four bytes) but digits\r\n\t// (including non-European ones) don't fall into that range\r\n\t// so such \"exotic\" characters would be discarded anyway.\r\n\tfor (const character of string.split('')) {\r\n\t\tconst digit = parseDigit(character)\r\n\t\tif (digit) {\r\n\t\t\tresult += digit\r\n\t\t}\r\n\t}\r\n\treturn result\r\n}"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMA,MAAM,GAAG;EACrB,KAAK,GADgB;EAErB,KAAK,GAFgB;EAGrB,KAAK,GAHgB;EAIrB,KAAK,GAJgB;EAKrB,KAAK,GALgB;EAMrB,KAAK,GANgB;EAOrB,KAAK,GAPgB;EAQrB,KAAK,GARgB;EASrB,KAAK,GATgB;EAUrB,KAAK,GAVgB;EAWrB,UAAU,GAXW;EAWN;EACf,UAAU,GAZW;EAYN;EACf,UAAU,GAbW;EAaN;EACf,UAAU,GAdW;EAcN;EACf,UAAU,GAfW;EAeN;EACf,UAAU,GAhBW;EAgBN;EACf,UAAU,GAjBW;EAiBN;EACf,UAAU,GAlBW;EAkBN;EACf,UAAU,GAnBW;EAmBN;EACf,UAAU,GApBW;EAoBN;EACf,UAAU,GArBW;EAqBN;EACf,UAAU,GAtBW;EAsBN;EACf,UAAU,GAvBW;EAuBN;EACf,UAAU,GAxBW;EAwBN;EACf,UAAU,GAzBW;EAyBN;EACf,UAAU,GA1BW;EA0BN;EACf,UAAU,GA3BW;EA2BN;EACf,UAAU,GA5BW;EA4BN;EACf,UAAU,GA7BW;EA6BN;EACf,UAAU,GA9BW;EA8BN;EACf,UAAU,GA/BW;EA+BN;EACf,UAAU,GAhCW;EAgCN;EACf,UAAU,GAjCW;EAiCN;EACf,UAAU,GAlCW;EAkCN;EACf,UAAU,GAnCW;EAmCN;EACf,UAAU,GApCW;EAoCN;EACf,UAAU,GArCW;EAqCN;EACf,UAAU,GAtCW;EAsCN;EACf,UAAU,GAvCW;EAuCN;EACf,UAAU,GAxCW,CAwCN;;AAxCM,CAAf;AA2CP,OAAO,SAASC,UAAT,CAAoBC,SAApB,EAA+B;EACrC,OAAOF,MAAM,CAACE,SAAD,CAAb;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,WAAT,CAAqBC,MAArB,EAA6B;EAC3C,IAAIC,MAAM,GAAG,EAAb,CAD2C,CAE3C;EACA;EACA;EACA;EACA;EACA;;EACA,qDAAwBD,MAAM,CAACE,KAAP,CAAa,EAAb,CAAxB,wCAA0C;IAAA,IAA/BJ,SAA+B;IACzC,IAAMK,KAAK,GAAGN,UAAU,CAACC,SAAD,CAAxB;;IACA,IAAIK,KAAJ,EAAW;MACVF,MAAM,IAAIE,KAAV;IACA;EACD;;EACD,OAAOF,MAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/parseDigits.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/parseDigits.test.js new file mode 100644 index 00000000..3f72b679 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/parseDigits.test.js @@ -0,0 +1,7 @@ +import parseDigits from './parseDigits.js'; +describe('parseDigits', function () { + it('should parse digits', function () { + parseDigits('+٤٤٢٣٢٣٢٣٤').should.equal('442323234'); + }); +}); +//# sourceMappingURL=parseDigits.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/parseDigits.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/parseDigits.test.js.map new file mode 100644 index 00000000..f3bed9ae --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/parseDigits.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parseDigits.test.js","names":["parseDigits","describe","it","should","equal"],"sources":["../../source/helpers/parseDigits.test.js"],"sourcesContent":["import parseDigits from './parseDigits.js'\r\n\r\ndescribe('parseDigits', () => {\r\n\tit('should parse digits', () => {\r\n\t\tparseDigits('+٤٤٢٣٢٣٢٣٤').should.equal('442323234')\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,WAAP,MAAwB,kBAAxB;AAEAC,QAAQ,CAAC,aAAD,EAAgB,YAAM;EAC7BC,EAAE,CAAC,qBAAD,EAAwB,YAAM;IAC/BF,WAAW,CAAC,YAAD,CAAX,CAA0BG,MAA1B,CAAiCC,KAAjC,CAAuC,WAAvC;EACA,CAFC,CAAF;AAGA,CAJO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.js new file mode 100644 index 00000000..c097b1f5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.js @@ -0,0 +1,34 @@ +import Metadata from '../metadata.js'; +import { VALID_DIGITS } from '../constants.js'; +var CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])'); +export default function stripIddPrefix(number, country, callingCode, metadata) { + if (!country) { + return; + } // Check if the number is IDD-prefixed. + + + var countryMetadata = new Metadata(metadata); + countryMetadata.selectNumberingPlan(country, callingCode); + var IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix()); + + if (number.search(IDDPrefixPattern) !== 0) { + return; + } // Strip IDD prefix. + + + number = number.slice(number.match(IDDPrefixPattern)[0].length); // If there're any digits after an IDD prefix, + // then those digits are a country calling code. + // Since no country code starts with a `0`, + // the code below validates that the next digit (if present) is not `0`. + + var matchedGroups = number.match(CAPTURING_DIGIT_PATTERN); + + if (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) { + if (matchedGroups[1] === '0') { + return; + } + } + + return number; +} +//# sourceMappingURL=stripIddPrefix.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.js.map new file mode 100644 index 00000000..cccfdd3a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.js.map @@ -0,0 +1 @@ +{"version":3,"file":"stripIddPrefix.js","names":["Metadata","VALID_DIGITS","CAPTURING_DIGIT_PATTERN","RegExp","stripIddPrefix","number","country","callingCode","metadata","countryMetadata","selectNumberingPlan","IDDPrefixPattern","IDDPrefix","search","slice","match","length","matchedGroups"],"sources":["../../source/helpers/stripIddPrefix.js"],"sourcesContent":["import Metadata from '../metadata.js'\r\nimport { VALID_DIGITS } from '../constants.js'\r\n\r\nconst CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])')\r\n\r\nexport default function stripIddPrefix(number, country, callingCode, metadata) {\r\n\tif (!country) {\r\n\t\treturn\r\n\t}\r\n\t// Check if the number is IDD-prefixed.\r\n\tconst countryMetadata = new Metadata(metadata)\r\n\tcountryMetadata.selectNumberingPlan(country, callingCode)\r\n\tconst IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix())\r\n\tif (number.search(IDDPrefixPattern) !== 0) {\r\n\t\treturn\r\n\t}\r\n\t// Strip IDD prefix.\r\n\tnumber = number.slice(number.match(IDDPrefixPattern)[0].length)\r\n\t// If there're any digits after an IDD prefix,\r\n\t// then those digits are a country calling code.\r\n\t// Since no country code starts with a `0`,\r\n\t// the code below validates that the next digit (if present) is not `0`.\r\n\tconst matchedGroups = number.match(CAPTURING_DIGIT_PATTERN)\r\n\tif (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) {\r\n\t\tif (matchedGroups[1] === '0') {\r\n\t\t\treturn\r\n\t\t}\r\n\t}\r\n\treturn number\r\n}"],"mappings":"AAAA,OAAOA,QAAP,MAAqB,gBAArB;AACA,SAASC,YAAT,QAA6B,iBAA7B;AAEA,IAAMC,uBAAuB,GAAG,IAAIC,MAAJ,CAAW,OAAOF,YAAP,GAAsB,IAAjC,CAAhC;AAEA,eAAe,SAASG,cAAT,CAAwBC,MAAxB,EAAgCC,OAAhC,EAAyCC,WAAzC,EAAsDC,QAAtD,EAAgE;EAC9E,IAAI,CAACF,OAAL,EAAc;IACb;EACA,CAH6E,CAI9E;;;EACA,IAAMG,eAAe,GAAG,IAAIT,QAAJ,CAAaQ,QAAb,CAAxB;EACAC,eAAe,CAACC,mBAAhB,CAAoCJ,OAApC,EAA6CC,WAA7C;EACA,IAAMI,gBAAgB,GAAG,IAAIR,MAAJ,CAAWM,eAAe,CAACG,SAAhB,EAAX,CAAzB;;EACA,IAAIP,MAAM,CAACQ,MAAP,CAAcF,gBAAd,MAAoC,CAAxC,EAA2C;IAC1C;EACA,CAV6E,CAW9E;;;EACAN,MAAM,GAAGA,MAAM,CAACS,KAAP,CAAaT,MAAM,CAACU,KAAP,CAAaJ,gBAAb,EAA+B,CAA/B,EAAkCK,MAA/C,CAAT,CAZ8E,CAa9E;EACA;EACA;EACA;;EACA,IAAMC,aAAa,GAAGZ,MAAM,CAACU,KAAP,CAAab,uBAAb,CAAtB;;EACA,IAAIe,aAAa,IAAIA,aAAa,CAAC,CAAD,CAAb,IAAoB,IAArC,IAA6CA,aAAa,CAAC,CAAD,CAAb,CAAiBD,MAAjB,GAA0B,CAA3E,EAA8E;IAC7E,IAAIC,aAAa,CAAC,CAAD,CAAb,KAAqB,GAAzB,EAA8B;MAC7B;IACA;EACD;;EACD,OAAOZ,MAAP;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.test.js new file mode 100644 index 00000000..12cc39a5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.test.js @@ -0,0 +1,17 @@ +import stripIddPrefix from './stripIddPrefix.js'; +import metadata from '../../metadata.min.json' assert { type: 'json' }; +describe('stripIddPrefix', function () { + it('should strip a valid IDD prefix', function () { + stripIddPrefix('01178005553535', 'US', '1', metadata).should.equal('78005553535'); + }); + it('should strip a valid IDD prefix (no country calling code)', function () { + stripIddPrefix('011', 'US', '1', metadata).should.equal(''); + }); + it('should strip a valid IDD prefix (valid country calling code)', function () { + stripIddPrefix('0117', 'US', '1', metadata).should.equal('7'); + }); + it('should strip a valid IDD prefix (not a valid country calling code)', function () { + expect(stripIddPrefix('0110', 'US', '1', metadata)).to.be.undefined; + }); +}); +//# sourceMappingURL=stripIddPrefix.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.test.js.map new file mode 100644 index 00000000..b31e23a5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"stripIddPrefix.test.js","names":["stripIddPrefix","metadata","type","describe","it","should","equal","expect","to","be","undefined"],"sources":["../../source/helpers/stripIddPrefix.test.js"],"sourcesContent":["import stripIddPrefix from './stripIddPrefix.js'\r\n\r\nimport metadata from '../../metadata.min.json' assert { type: 'json' }\r\n\r\ndescribe('stripIddPrefix', () => {\r\n\tit('should strip a valid IDD prefix', () => {\r\n\t\tstripIddPrefix('01178005553535', 'US', '1', metadata).should.equal('78005553535')\r\n\t})\r\n\r\n\tit('should strip a valid IDD prefix (no country calling code)', () => {\r\n\t\tstripIddPrefix('011', 'US', '1', metadata).should.equal('')\r\n\t})\r\n\r\n\tit('should strip a valid IDD prefix (valid country calling code)', () => {\r\n\t\tstripIddPrefix('0117', 'US', '1', metadata).should.equal('7')\r\n\t})\r\n\r\n\tit('should strip a valid IDD prefix (not a valid country calling code)', () => {\r\n\t\texpect(stripIddPrefix('0110', 'US', '1', metadata)).to.be.undefined\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,cAAP,MAA2B,qBAA3B;AAEA,OAAOC,QAAP,MAAqB,yBAArB,UAAwDC,IAAI,EAAE,MAA9D;AAEAC,QAAQ,CAAC,gBAAD,EAAmB,YAAM;EAChCC,EAAE,CAAC,iCAAD,EAAoC,YAAM;IAC3CJ,cAAc,CAAC,gBAAD,EAAmB,IAAnB,EAAyB,GAAzB,EAA8BC,QAA9B,CAAd,CAAsDI,MAAtD,CAA6DC,KAA7D,CAAmE,aAAnE;EACA,CAFC,CAAF;EAIAF,EAAE,CAAC,2DAAD,EAA8D,YAAM;IACrEJ,cAAc,CAAC,KAAD,EAAQ,IAAR,EAAc,GAAd,EAAmBC,QAAnB,CAAd,CAA2CI,MAA3C,CAAkDC,KAAlD,CAAwD,EAAxD;EACA,CAFC,CAAF;EAIAF,EAAE,CAAC,8DAAD,EAAiE,YAAM;IACxEJ,cAAc,CAAC,MAAD,EAAS,IAAT,EAAe,GAAf,EAAoBC,QAApB,CAAd,CAA4CI,MAA5C,CAAmDC,KAAnD,CAAyD,GAAzD;EACA,CAFC,CAAF;EAIAF,EAAE,CAAC,oEAAD,EAAuE,YAAM;IAC9EG,MAAM,CAACP,cAAc,CAAC,MAAD,EAAS,IAAT,EAAe,GAAf,EAAoBC,QAApB,CAAf,CAAN,CAAoDO,EAApD,CAAuDC,EAAvD,CAA0DC,SAA1D;EACA,CAFC,CAAF;AAGA,CAhBO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossibleNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossibleNumber.js new file mode 100644 index 00000000..3a526bfd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossibleNumber.js @@ -0,0 +1,26 @@ +import { normalizeArguments } from './getNumberType.js'; +import _isPossibleNumber from './isPossibleNumber_.js'; +/** + * Checks if a given phone number is possible. + * Which means it only checks phone number length + * and doesn't test any regular expressions. + * + * Examples: + * + * ```js + * isPossibleNumber('+78005553535', metadata) + * isPossibleNumber('8005553535', 'RU', metadata) + * isPossibleNumber('88005553535', 'RU', metadata) + * isPossibleNumber({ phone: '8005553535', country: 'RU' }, metadata) + * ``` + */ + +export default function isPossibleNumber() { + var _normalizeArguments = normalizeArguments(arguments), + input = _normalizeArguments.input, + options = _normalizeArguments.options, + metadata = _normalizeArguments.metadata; + + return _isPossibleNumber(input, options, metadata); +} +//# sourceMappingURL=isPossibleNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossibleNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossibleNumber.js.map new file mode 100644 index 00000000..1519c33c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossibleNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isPossibleNumber.js","names":["normalizeArguments","_isPossibleNumber","isPossibleNumber","arguments","input","options","metadata"],"sources":["../source/isPossibleNumber.js"],"sourcesContent":["import { normalizeArguments } from './getNumberType.js'\r\nimport _isPossibleNumber from './isPossibleNumber_.js'\r\n\r\n/**\r\n * Checks if a given phone number is possible.\r\n * Which means it only checks phone number length\r\n * and doesn't test any regular expressions.\r\n *\r\n * Examples:\r\n *\r\n * ```js\r\n * isPossibleNumber('+78005553535', metadata)\r\n * isPossibleNumber('8005553535', 'RU', metadata)\r\n * isPossibleNumber('88005553535', 'RU', metadata)\r\n * isPossibleNumber({ phone: '8005553535', country: 'RU' }, metadata)\r\n * ```\r\n */\r\nexport default function isPossibleNumber()\r\n{\r\n\tconst { input, options, metadata } = normalizeArguments(arguments)\r\n\treturn _isPossibleNumber(input, options, metadata)\r\n}"],"mappings":"AAAA,SAASA,kBAAT,QAAmC,oBAAnC;AACA,OAAOC,iBAAP,MAA8B,wBAA9B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,gBAAT,GACf;EACC,0BAAqCF,kBAAkB,CAACG,SAAD,CAAvD;EAAA,IAAQC,KAAR,uBAAQA,KAAR;EAAA,IAAeC,OAAf,uBAAeA,OAAf;EAAA,IAAwBC,QAAxB,uBAAwBA,QAAxB;;EACA,OAAOL,iBAAiB,CAACG,KAAD,EAAQC,OAAR,EAAiBC,QAAjB,CAAxB;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossibleNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossibleNumber.test.js new file mode 100644 index 00000000..2571f0bd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossibleNumber.test.js @@ -0,0 +1,78 @@ +import metadata from '../metadata.min.json' assert { type: 'json' }; +import _isPossibleNumber from './isPossibleNumber.js'; + +function isPossibleNumber() { + for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) { + parameters[_key] = arguments[_key]; + } + + parameters.push(metadata); + return _isPossibleNumber.apply(this, parameters); +} + +describe('isPossibleNumber', function () { + it('should work', function () { + isPossibleNumber('+79992223344').should.equal(true); + isPossibleNumber({ + phone: '1112223344', + country: 'RU' + }).should.equal(true); + isPossibleNumber({ + phone: '111222334', + country: 'RU' + }).should.equal(false); + isPossibleNumber({ + phone: '11122233445', + country: 'RU' + }).should.equal(false); + isPossibleNumber({ + phone: '1112223344', + countryCallingCode: 7 + }).should.equal(true); + }); + it('should work v2', function () { + isPossibleNumber({ + nationalNumber: '111222334', + countryCallingCode: 7 + }, { + v2: true + }).should.equal(false); + isPossibleNumber({ + nationalNumber: '1112223344', + countryCallingCode: 7 + }, { + v2: true + }).should.equal(true); + isPossibleNumber({ + nationalNumber: '11122233445', + countryCallingCode: 7 + }, { + v2: true + }).should.equal(false); + }); + it('should work in edge cases', function () { + // Invalid `PhoneNumber` argument. + expect(function () { + return isPossibleNumber({}, { + v2: true + }); + }).to["throw"]('Invalid phone number object passed'); // Empty input is passed. + // This is just to support `isValidNumber({})` + // for cases when `parseNumber()` returns `{}`. + + isPossibleNumber({}).should.equal(false); + expect(function () { + return isPossibleNumber({ + phone: '1112223344' + }); + }).to["throw"]('Invalid phone number object passed'); // Incorrect country. + + expect(function () { + return isPossibleNumber({ + phone: '1112223344', + country: 'XX' + }); + }).to["throw"]('Unknown country'); + }); +}); +//# sourceMappingURL=isPossibleNumber.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossibleNumber.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossibleNumber.test.js.map new file mode 100644 index 00000000..a5092ca4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossibleNumber.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isPossibleNumber.test.js","names":["metadata","type","_isPossibleNumber","isPossibleNumber","parameters","push","apply","describe","it","should","equal","phone","country","countryCallingCode","nationalNumber","v2","expect","to"],"sources":["../source/isPossibleNumber.test.js"],"sourcesContent":["import metadata from '../metadata.min.json' assert { type: 'json' }\r\nimport _isPossibleNumber from './isPossibleNumber.js'\r\n\r\nfunction isPossibleNumber(...parameters) {\r\n\tparameters.push(metadata)\r\n\treturn _isPossibleNumber.apply(this, parameters)\r\n}\r\n\r\ndescribe('isPossibleNumber', () => {\r\n\tit('should work', function()\r\n\t{\r\n\t\tisPossibleNumber('+79992223344').should.equal(true)\r\n\r\n\t\tisPossibleNumber({ phone: '1112223344', country: 'RU' }).should.equal(true)\r\n\t\tisPossibleNumber({ phone: '111222334', country: 'RU' }).should.equal(false)\r\n\t\tisPossibleNumber({ phone: '11122233445', country: 'RU' }).should.equal(false)\r\n\r\n\t\tisPossibleNumber({ phone: '1112223344', countryCallingCode: 7 }).should.equal(true)\r\n\t})\r\n\r\n\tit('should work v2', () => {\r\n\t\tisPossibleNumber({ nationalNumber: '111222334', countryCallingCode: 7 }, { v2: true }).should.equal(false)\r\n\t\tisPossibleNumber({ nationalNumber: '1112223344', countryCallingCode: 7 }, { v2: true }).should.equal(true)\r\n\t\tisPossibleNumber({ nationalNumber: '11122233445', countryCallingCode: 7 }, { v2: true }).should.equal(false)\r\n\t})\r\n\r\n\tit('should work in edge cases', () => {\r\n\t\t// Invalid `PhoneNumber` argument.\r\n\t\texpect(() => isPossibleNumber({}, { v2: true })).to.throw('Invalid phone number object passed')\r\n\r\n\t\t// Empty input is passed.\r\n\t\t// This is just to support `isValidNumber({})`\r\n\t\t// for cases when `parseNumber()` returns `{}`.\r\n\t\tisPossibleNumber({}).should.equal(false)\r\n\t\texpect(() => isPossibleNumber({ phone: '1112223344' })).to.throw('Invalid phone number object passed')\r\n\r\n\t\t// Incorrect country.\r\n\t\texpect(() => isPossibleNumber({ phone: '1112223344', country: 'XX' })).to.throw('Unknown country')\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,QAAP,MAAqB,sBAArB,UAAqDC,IAAI,EAAE,MAA3D;AACA,OAAOC,iBAAP,MAA8B,uBAA9B;;AAEA,SAASC,gBAAT,GAAyC;EAAA,kCAAZC,UAAY;IAAZA,UAAY;EAAA;;EACxCA,UAAU,CAACC,IAAX,CAAgBL,QAAhB;EACA,OAAOE,iBAAiB,CAACI,KAAlB,CAAwB,IAAxB,EAA8BF,UAA9B,CAAP;AACA;;AAEDG,QAAQ,CAAC,kBAAD,EAAqB,YAAM;EAClCC,EAAE,CAAC,aAAD,EAAgB,YAClB;IACCL,gBAAgB,CAAC,cAAD,CAAhB,CAAiCM,MAAjC,CAAwCC,KAAxC,CAA8C,IAA9C;IAEAP,gBAAgB,CAAC;MAAEQ,KAAK,EAAE,YAAT;MAAuBC,OAAO,EAAE;IAAhC,CAAD,CAAhB,CAAyDH,MAAzD,CAAgEC,KAAhE,CAAsE,IAAtE;IACAP,gBAAgB,CAAC;MAAEQ,KAAK,EAAE,WAAT;MAAsBC,OAAO,EAAE;IAA/B,CAAD,CAAhB,CAAwDH,MAAxD,CAA+DC,KAA/D,CAAqE,KAArE;IACAP,gBAAgB,CAAC;MAAEQ,KAAK,EAAE,aAAT;MAAwBC,OAAO,EAAE;IAAjC,CAAD,CAAhB,CAA0DH,MAA1D,CAAiEC,KAAjE,CAAuE,KAAvE;IAEAP,gBAAgB,CAAC;MAAEQ,KAAK,EAAE,YAAT;MAAuBE,kBAAkB,EAAE;IAA3C,CAAD,CAAhB,CAAiEJ,MAAjE,CAAwEC,KAAxE,CAA8E,IAA9E;EACA,CATC,CAAF;EAWAF,EAAE,CAAC,gBAAD,EAAmB,YAAM;IAC1BL,gBAAgB,CAAC;MAAEW,cAAc,EAAE,WAAlB;MAA+BD,kBAAkB,EAAE;IAAnD,CAAD,EAAyD;MAAEE,EAAE,EAAE;IAAN,CAAzD,CAAhB,CAAuFN,MAAvF,CAA8FC,KAA9F,CAAoG,KAApG;IACAP,gBAAgB,CAAC;MAAEW,cAAc,EAAE,YAAlB;MAAgCD,kBAAkB,EAAE;IAApD,CAAD,EAA0D;MAAEE,EAAE,EAAE;IAAN,CAA1D,CAAhB,CAAwFN,MAAxF,CAA+FC,KAA/F,CAAqG,IAArG;IACAP,gBAAgB,CAAC;MAAEW,cAAc,EAAE,aAAlB;MAAiCD,kBAAkB,EAAE;IAArD,CAAD,EAA2D;MAAEE,EAAE,EAAE;IAAN,CAA3D,CAAhB,CAAyFN,MAAzF,CAAgGC,KAAhG,CAAsG,KAAtG;EACA,CAJC,CAAF;EAMAF,EAAE,CAAC,2BAAD,EAA8B,YAAM;IACrC;IACAQ,MAAM,CAAC;MAAA,OAAMb,gBAAgB,CAAC,EAAD,EAAK;QAAEY,EAAE,EAAE;MAAN,CAAL,CAAtB;IAAA,CAAD,CAAN,CAAiDE,EAAjD,UAA0D,oCAA1D,EAFqC,CAIrC;IACA;IACA;;IACAd,gBAAgB,CAAC,EAAD,CAAhB,CAAqBM,MAArB,CAA4BC,KAA5B,CAAkC,KAAlC;IACAM,MAAM,CAAC;MAAA,OAAMb,gBAAgB,CAAC;QAAEQ,KAAK,EAAE;MAAT,CAAD,CAAtB;IAAA,CAAD,CAAN,CAAwDM,EAAxD,UAAiE,oCAAjE,EARqC,CAUrC;;IACAD,MAAM,CAAC;MAAA,OAAMb,gBAAgB,CAAC;QAAEQ,KAAK,EAAE,YAAT;QAAuBC,OAAO,EAAE;MAAhC,CAAD,CAAtB;IAAA,CAAD,CAAN,CAAuEK,EAAvE,UAAgF,iBAAhF;EACA,CAZC,CAAF;AAaA,CA/BO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossibleNumber_.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossibleNumber_.js new file mode 100644 index 00000000..eb560053 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossibleNumber_.js @@ -0,0 +1,70 @@ +import Metadata from './metadata.js'; +import checkNumberLength from './helpers/checkNumberLength.js'; +export default function isPossiblePhoneNumber(input, options, metadata) { + /* istanbul ignore if */ + if (options === undefined) { + options = {}; + } + + metadata = new Metadata(metadata); + + if (options.v2) { + if (!input.countryCallingCode) { + throw new Error('Invalid phone number object passed'); + } + + metadata.selectNumberingPlan(input.countryCallingCode); + } else { + if (!input.phone) { + return false; + } + + if (input.country) { + if (!metadata.hasCountry(input.country)) { + throw new Error("Unknown country: ".concat(input.country)); + } + + metadata.country(input.country); + } else { + if (!input.countryCallingCode) { + throw new Error('Invalid phone number object passed'); + } + + metadata.selectNumberingPlan(input.countryCallingCode); + } + } // Old metadata (< 1.0.18) had no "possible length" data. + + + if (metadata.possibleLengths()) { + return isPossibleNumber(input.phone || input.nationalNumber, metadata); + } else { + // There was a bug between `1.7.35` and `1.7.37` where "possible_lengths" + // were missing for "non-geographical" numbering plans. + // Just assume the number is possible in such cases: + // it's unlikely that anyone generated their custom metadata + // in that short period of time (one day). + // This code can be removed in some future major version update. + if (input.countryCallingCode && metadata.isNonGeographicCallingCode(input.countryCallingCode)) { + // "Non-geographic entities" did't have `possibleLengths` + // due to a bug in metadata generation process. + return true; + } else { + throw new Error('Missing "possibleLengths" in metadata. Perhaps the metadata has been generated before v1.0.18.'); + } + } +} +export function isPossibleNumber(nationalNumber, metadata) { + //, isInternational) { + switch (checkNumberLength(nationalNumber, metadata)) { + case 'IS_POSSIBLE': + return true; + // This library ignores "local-only" phone numbers (for simplicity). + // See the readme for more info on what are "local-only" phone numbers. + // case 'IS_POSSIBLE_LOCAL_ONLY': + // return !isInternational + + default: + return false; + } +} +//# sourceMappingURL=isPossibleNumber_.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossibleNumber_.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossibleNumber_.js.map new file mode 100644 index 00000000..3edc54d4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossibleNumber_.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isPossibleNumber_.js","names":["Metadata","checkNumberLength","isPossiblePhoneNumber","input","options","metadata","undefined","v2","countryCallingCode","Error","selectNumberingPlan","phone","country","hasCountry","possibleLengths","isPossibleNumber","nationalNumber","isNonGeographicCallingCode"],"sources":["../source/isPossibleNumber_.js"],"sourcesContent":["import Metadata from './metadata.js'\r\nimport checkNumberLength from './helpers/checkNumberLength.js'\r\n\r\nexport default function isPossiblePhoneNumber(input, options, metadata) {\r\n\t/* istanbul ignore if */\r\n\tif (options === undefined) {\r\n\t\toptions = {}\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tif (options.v2) {\r\n\t\tif (!input.countryCallingCode) {\r\n\t\t\tthrow new Error('Invalid phone number object passed')\r\n\t\t}\r\n\t\tmetadata.selectNumberingPlan(input.countryCallingCode)\r\n\t} else {\r\n\t\tif (!input.phone) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\tif (input.country) {\r\n\t\t\tif (!metadata.hasCountry(input.country)) {\r\n\t\t\t\tthrow new Error(`Unknown country: ${input.country}`)\r\n\t\t\t}\r\n\t\t\tmetadata.country(input.country)\r\n\t\t} else {\r\n\t\t\tif (!input.countryCallingCode) {\r\n\t\t\t\tthrow new Error('Invalid phone number object passed')\r\n\t\t\t}\r\n\t\t\tmetadata.selectNumberingPlan(input.countryCallingCode)\r\n\t\t}\r\n\t}\r\n\r\n\t// Old metadata (< 1.0.18) had no \"possible length\" data.\r\n\tif (metadata.possibleLengths()) {\r\n\t\treturn isPossibleNumber(input.phone || input.nationalNumber, metadata)\r\n\t} else {\r\n\t\t// There was a bug between `1.7.35` and `1.7.37` where \"possible_lengths\"\r\n\t\t// were missing for \"non-geographical\" numbering plans.\r\n\t\t// Just assume the number is possible in such cases:\r\n\t\t// it's unlikely that anyone generated their custom metadata\r\n\t\t// in that short period of time (one day).\r\n\t\t// This code can be removed in some future major version update.\r\n\t\tif (input.countryCallingCode && metadata.isNonGeographicCallingCode(input.countryCallingCode)) {\r\n\t\t\t// \"Non-geographic entities\" did't have `possibleLengths`\r\n\t\t\t// due to a bug in metadata generation process.\r\n\t\t\treturn true\r\n\t\t} else {\r\n\t\t\tthrow new Error('Missing \"possibleLengths\" in metadata. Perhaps the metadata has been generated before v1.0.18.');\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function isPossibleNumber(nationalNumber, metadata) { //, isInternational) {\r\n\tswitch (checkNumberLength(nationalNumber, metadata)) {\r\n\t\tcase 'IS_POSSIBLE':\r\n\t\t\treturn true\r\n\t\t// This library ignores \"local-only\" phone numbers (for simplicity).\r\n\t\t// See the readme for more info on what are \"local-only\" phone numbers.\r\n\t\t// case 'IS_POSSIBLE_LOCAL_ONLY':\r\n\t\t// \treturn !isInternational\r\n\t\tdefault:\r\n\t\t\treturn false\r\n\t}\r\n}"],"mappings":"AAAA,OAAOA,QAAP,MAAqB,eAArB;AACA,OAAOC,iBAAP,MAA8B,gCAA9B;AAEA,eAAe,SAASC,qBAAT,CAA+BC,KAA/B,EAAsCC,OAAtC,EAA+CC,QAA/C,EAAyD;EACvE;EACA,IAAID,OAAO,KAAKE,SAAhB,EAA2B;IAC1BF,OAAO,GAAG,EAAV;EACA;;EAEDC,QAAQ,GAAG,IAAIL,QAAJ,CAAaK,QAAb,CAAX;;EAEA,IAAID,OAAO,CAACG,EAAZ,EAAgB;IACf,IAAI,CAACJ,KAAK,CAACK,kBAAX,EAA+B;MAC9B,MAAM,IAAIC,KAAJ,CAAU,oCAAV,CAAN;IACA;;IACDJ,QAAQ,CAACK,mBAAT,CAA6BP,KAAK,CAACK,kBAAnC;EACA,CALD,MAKO;IACN,IAAI,CAACL,KAAK,CAACQ,KAAX,EAAkB;MACjB,OAAO,KAAP;IACA;;IACD,IAAIR,KAAK,CAACS,OAAV,EAAmB;MAClB,IAAI,CAACP,QAAQ,CAACQ,UAAT,CAAoBV,KAAK,CAACS,OAA1B,CAAL,EAAyC;QACxC,MAAM,IAAIH,KAAJ,4BAA8BN,KAAK,CAACS,OAApC,EAAN;MACA;;MACDP,QAAQ,CAACO,OAAT,CAAiBT,KAAK,CAACS,OAAvB;IACA,CALD,MAKO;MACN,IAAI,CAACT,KAAK,CAACK,kBAAX,EAA+B;QAC9B,MAAM,IAAIC,KAAJ,CAAU,oCAAV,CAAN;MACA;;MACDJ,QAAQ,CAACK,mBAAT,CAA6BP,KAAK,CAACK,kBAAnC;IACA;EACD,CA5BsE,CA8BvE;;;EACA,IAAIH,QAAQ,CAACS,eAAT,EAAJ,EAAgC;IAC/B,OAAOC,gBAAgB,CAACZ,KAAK,CAACQ,KAAN,IAAeR,KAAK,CAACa,cAAtB,EAAsCX,QAAtC,CAAvB;EACA,CAFD,MAEO;IACN;IACA;IACA;IACA;IACA;IACA;IACA,IAAIF,KAAK,CAACK,kBAAN,IAA4BH,QAAQ,CAACY,0BAAT,CAAoCd,KAAK,CAACK,kBAA1C,CAAhC,EAA+F;MAC9F;MACA;MACA,OAAO,IAAP;IACA,CAJD,MAIO;MACN,MAAM,IAAIC,KAAJ,CAAU,gGAAV,CAAN;IACA;EACD;AACD;AAED,OAAO,SAASM,gBAAT,CAA0BC,cAA1B,EAA0CX,QAA1C,EAAoD;EAAE;EAC5D,QAAQJ,iBAAiB,CAACe,cAAD,EAAiBX,QAAjB,CAAzB;IACC,KAAK,aAAL;MACC,OAAO,IAAP;IACD;IACA;IACA;IACA;;IACA;MACC,OAAO,KAAP;EARF;AAUA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossiblePhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossiblePhoneNumber.js new file mode 100644 index 00000000..23a6b088 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossiblePhoneNumber.js @@ -0,0 +1,21 @@ +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import { normalizeArguments } from './parsePhoneNumber.js'; +import parsePhoneNumberFromString from './parsePhoneNumberFromString_.js'; +export default function isPossiblePhoneNumber() { + var _normalizeArguments = normalizeArguments(arguments), + text = _normalizeArguments.text, + options = _normalizeArguments.options, + metadata = _normalizeArguments.metadata; + + options = _objectSpread(_objectSpread({}, options), {}, { + extract: false + }); + var phoneNumber = parsePhoneNumberFromString(text, options, metadata); + return phoneNumber && phoneNumber.isPossible() || false; +} +//# sourceMappingURL=isPossiblePhoneNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossiblePhoneNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossiblePhoneNumber.js.map new file mode 100644 index 00000000..4d196415 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossiblePhoneNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isPossiblePhoneNumber.js","names":["normalizeArguments","parsePhoneNumberFromString","isPossiblePhoneNumber","arguments","text","options","metadata","extract","phoneNumber","isPossible"],"sources":["../source/isPossiblePhoneNumber.js"],"sourcesContent":["import { normalizeArguments } from './parsePhoneNumber.js'\r\nimport parsePhoneNumberFromString from './parsePhoneNumberFromString_.js'\r\n\r\nexport default function isPossiblePhoneNumber() {\r\n\tlet { text, options, metadata } = normalizeArguments(arguments)\r\n\toptions = {\r\n\t\t...options,\r\n\t\textract: false\r\n\t}\r\n\tconst phoneNumber = parsePhoneNumberFromString(text, options, metadata)\r\n\treturn phoneNumber && phoneNumber.isPossible() || false\r\n}"],"mappings":";;;;;;AAAA,SAASA,kBAAT,QAAmC,uBAAnC;AACA,OAAOC,0BAAP,MAAuC,kCAAvC;AAEA,eAAe,SAASC,qBAAT,GAAiC;EAC/C,0BAAkCF,kBAAkB,CAACG,SAAD,CAApD;EAAA,IAAMC,IAAN,uBAAMA,IAAN;EAAA,IAAYC,OAAZ,uBAAYA,OAAZ;EAAA,IAAqBC,QAArB,uBAAqBA,QAArB;;EACAD,OAAO,mCACHA,OADG;IAENE,OAAO,EAAE;EAFH,EAAP;EAIA,IAAMC,WAAW,GAAGP,0BAA0B,CAACG,IAAD,EAAOC,OAAP,EAAgBC,QAAhB,CAA9C;EACA,OAAOE,WAAW,IAAIA,WAAW,CAACC,UAAZ,EAAf,IAA2C,KAAlD;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossiblePhoneNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossiblePhoneNumber.test.js new file mode 100644 index 00000000..8d842ae4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossiblePhoneNumber.test.js @@ -0,0 +1,35 @@ +import _isPossiblePhoneNumber from './isPossiblePhoneNumber.js'; +import metadata from '../metadata.min.json' assert { type: 'json' }; +import oldMetadata from '../test/metadata/1.0.0/metadata.min.json' assert { type: 'json' }; + +function isPossiblePhoneNumber() { + for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) { + parameters[_key] = arguments[_key]; + } + + parameters.push(metadata); + return _isPossiblePhoneNumber.apply(this, parameters); +} + +describe('isPossiblePhoneNumber', function () { + it('should detect whether a phone number is possible', function () { + isPossiblePhoneNumber('8 (800) 555 35 35', 'RU').should.equal(true); + isPossiblePhoneNumber('8 (800) 555 35 35 0', 'RU').should.equal(false); + isPossiblePhoneNumber('Call: 8 (800) 555 35 35', 'RU').should.equal(false); + isPossiblePhoneNumber('8 (800) 555 35 35', { + defaultCountry: 'RU' + }).should.equal(true); + isPossiblePhoneNumber('+7 (800) 555 35 35').should.equal(true); + isPossiblePhoneNumber('+7 1 (800) 555 35 35').should.equal(false); + isPossiblePhoneNumber(' +7 (800) 555 35 35').should.equal(false); + isPossiblePhoneNumber(' ').should.equal(false); + }); + it('should detect whether a phone number is possible when using old metadata', function () { + expect(function () { + return _isPossiblePhoneNumber('8 (800) 555 35 35', 'RU', oldMetadata); + }).to["throw"]('Missing "possibleLengths" in metadata.'); + + _isPossiblePhoneNumber('+888 123 456 78901', oldMetadata).should.equal(true); + }); +}); +//# sourceMappingURL=isPossiblePhoneNumber.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossiblePhoneNumber.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossiblePhoneNumber.test.js.map new file mode 100644 index 00000000..3fcc1bc0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isPossiblePhoneNumber.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isPossiblePhoneNumber.test.js","names":["_isPossiblePhoneNumber","metadata","type","oldMetadata","isPossiblePhoneNumber","parameters","push","apply","describe","it","should","equal","defaultCountry","expect","to"],"sources":["../source/isPossiblePhoneNumber.test.js"],"sourcesContent":["import _isPossiblePhoneNumber from './isPossiblePhoneNumber.js'\r\nimport metadata from '../metadata.min.json' assert { type: 'json' }\r\nimport oldMetadata from '../test/metadata/1.0.0/metadata.min.json' assert { type: 'json' }\r\n\r\nfunction isPossiblePhoneNumber(...parameters) {\r\n\tparameters.push(metadata)\r\n\treturn _isPossiblePhoneNumber.apply(this, parameters)\r\n}\r\n\r\ndescribe('isPossiblePhoneNumber', () => {\r\n\tit('should detect whether a phone number is possible', () => {\r\n\t\tisPossiblePhoneNumber('8 (800) 555 35 35', 'RU').should.equal(true)\r\n\t\tisPossiblePhoneNumber('8 (800) 555 35 35 0', 'RU').should.equal(false)\r\n\t\tisPossiblePhoneNumber('Call: 8 (800) 555 35 35', 'RU').should.equal(false)\r\n\t\tisPossiblePhoneNumber('8 (800) 555 35 35', { defaultCountry: 'RU' }).should.equal(true)\r\n\t\tisPossiblePhoneNumber('+7 (800) 555 35 35').should.equal(true)\r\n\t\tisPossiblePhoneNumber('+7 1 (800) 555 35 35').should.equal(false)\r\n\t\tisPossiblePhoneNumber(' +7 (800) 555 35 35').should.equal(false)\r\n\t\tisPossiblePhoneNumber(' ').should.equal(false)\r\n\t})\r\n\r\n\tit('should detect whether a phone number is possible when using old metadata', () => {\r\n\t\texpect(() => _isPossiblePhoneNumber('8 (800) 555 35 35', 'RU', oldMetadata))\r\n\t\t\t.to.throw('Missing \"possibleLengths\" in metadata.')\r\n\t\t_isPossiblePhoneNumber('+888 123 456 78901', oldMetadata).should.equal(true)\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,sBAAP,MAAmC,4BAAnC;AACA,OAAOC,QAAP,MAAqB,sBAArB,UAAqDC,IAAI,EAAE,MAA3D;AACA,OAAOC,WAAP,MAAwB,0CAAxB,UAA4ED,IAAI,EAAE,MAAlF;;AAEA,SAASE,qBAAT,GAA8C;EAAA,kCAAZC,UAAY;IAAZA,UAAY;EAAA;;EAC7CA,UAAU,CAACC,IAAX,CAAgBL,QAAhB;EACA,OAAOD,sBAAsB,CAACO,KAAvB,CAA6B,IAA7B,EAAmCF,UAAnC,CAAP;AACA;;AAEDG,QAAQ,CAAC,uBAAD,EAA0B,YAAM;EACvCC,EAAE,CAAC,kDAAD,EAAqD,YAAM;IAC5DL,qBAAqB,CAAC,mBAAD,EAAsB,IAAtB,CAArB,CAAiDM,MAAjD,CAAwDC,KAAxD,CAA8D,IAA9D;IACAP,qBAAqB,CAAC,qBAAD,EAAwB,IAAxB,CAArB,CAAmDM,MAAnD,CAA0DC,KAA1D,CAAgE,KAAhE;IACAP,qBAAqB,CAAC,yBAAD,EAA4B,IAA5B,CAArB,CAAuDM,MAAvD,CAA8DC,KAA9D,CAAoE,KAApE;IACAP,qBAAqB,CAAC,mBAAD,EAAsB;MAAEQ,cAAc,EAAE;IAAlB,CAAtB,CAArB,CAAqEF,MAArE,CAA4EC,KAA5E,CAAkF,IAAlF;IACAP,qBAAqB,CAAC,oBAAD,CAArB,CAA4CM,MAA5C,CAAmDC,KAAnD,CAAyD,IAAzD;IACAP,qBAAqB,CAAC,sBAAD,CAArB,CAA8CM,MAA9C,CAAqDC,KAArD,CAA2D,KAA3D;IACAP,qBAAqB,CAAC,qBAAD,CAArB,CAA6CM,MAA7C,CAAoDC,KAApD,CAA0D,KAA1D;IACAP,qBAAqB,CAAC,GAAD,CAArB,CAA2BM,MAA3B,CAAkCC,KAAlC,CAAwC,KAAxC;EACA,CATC,CAAF;EAWAF,EAAE,CAAC,0EAAD,EAA6E,YAAM;IACpFI,MAAM,CAAC;MAAA,OAAMb,sBAAsB,CAAC,mBAAD,EAAsB,IAAtB,EAA4BG,WAA5B,CAA5B;IAAA,CAAD,CAAN,CACEW,EADF,UACW,wCADX;;IAEAd,sBAAsB,CAAC,oBAAD,EAAuBG,WAAvB,CAAtB,CAA0DO,MAA1D,CAAiEC,KAAjE,CAAuE,IAAvE;EACA,CAJC,CAAF;AAKA,CAjBO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidNumberForRegion.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidNumberForRegion.js new file mode 100644 index 00000000..280dd11b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidNumberForRegion.js @@ -0,0 +1,30 @@ +import isViablePhoneNumber from './helpers/isViablePhoneNumber.js'; +import parseNumber from './parse_.js'; +import _isValidNumberForRegion from './isValidNumberForRegion_.js'; +export default function isValidNumberForRegion(number, country, metadata) { + if (typeof number !== 'string') { + throw new TypeError('number must be a string'); + } + + if (typeof country !== 'string') { + throw new TypeError('country must be a string'); + } // `parse` extracts phone numbers from raw text, + // therefore it will cut off all "garbage" characters, + // while this `validate` function needs to verify + // that the phone number contains no "garbage" + // therefore the explicit `isViablePhoneNumber` check. + + + var input; + + if (isViablePhoneNumber(number)) { + input = parseNumber(number, { + defaultCountry: country + }, metadata); + } else { + input = {}; + } + + return _isValidNumberForRegion(input, country, undefined, metadata); +} +//# sourceMappingURL=isValidNumberForRegion.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidNumberForRegion.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidNumberForRegion.js.map new file mode 100644 index 00000000..e4d9b854 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidNumberForRegion.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isValidNumberForRegion.js","names":["isViablePhoneNumber","parseNumber","_isValidNumberForRegion","isValidNumberForRegion","number","country","metadata","TypeError","input","defaultCountry","undefined"],"sources":["../source/isValidNumberForRegion.js"],"sourcesContent":["import isViablePhoneNumber from './helpers/isViablePhoneNumber.js'\r\nimport parseNumber from './parse_.js'\r\nimport _isValidNumberForRegion from './isValidNumberForRegion_.js'\r\n\r\nexport default function isValidNumberForRegion(number, country, metadata) {\r\n\tif (typeof number !== 'string') {\r\n\t\tthrow new TypeError('number must be a string')\r\n\t}\r\n\tif (typeof country !== 'string') {\r\n\t\tthrow new TypeError('country must be a string')\r\n\t}\r\n\t// `parse` extracts phone numbers from raw text,\r\n\t// therefore it will cut off all \"garbage\" characters,\r\n\t// while this `validate` function needs to verify\r\n\t// that the phone number contains no \"garbage\"\r\n\t// therefore the explicit `isViablePhoneNumber` check.\r\n\tlet input\r\n\tif (isViablePhoneNumber(number)) {\r\n\t\tinput = parseNumber(number, { defaultCountry: country }, metadata)\r\n\t} else {\r\n\t\tinput = {}\r\n\t}\r\n\treturn _isValidNumberForRegion(input, country, undefined, metadata)\r\n}"],"mappings":"AAAA,OAAOA,mBAAP,MAAgC,kCAAhC;AACA,OAAOC,WAAP,MAAwB,aAAxB;AACA,OAAOC,uBAAP,MAAoC,8BAApC;AAEA,eAAe,SAASC,sBAAT,CAAgCC,MAAhC,EAAwCC,OAAxC,EAAiDC,QAAjD,EAA2D;EACzE,IAAI,OAAOF,MAAP,KAAkB,QAAtB,EAAgC;IAC/B,MAAM,IAAIG,SAAJ,CAAc,yBAAd,CAAN;EACA;;EACD,IAAI,OAAOF,OAAP,KAAmB,QAAvB,EAAiC;IAChC,MAAM,IAAIE,SAAJ,CAAc,0BAAd,CAAN;EACA,CANwE,CAOzE;EACA;EACA;EACA;EACA;;;EACA,IAAIC,KAAJ;;EACA,IAAIR,mBAAmB,CAACI,MAAD,CAAvB,EAAiC;IAChCI,KAAK,GAAGP,WAAW,CAACG,MAAD,EAAS;MAAEK,cAAc,EAAEJ;IAAlB,CAAT,EAAsCC,QAAtC,CAAnB;EACA,CAFD,MAEO;IACNE,KAAK,GAAG,EAAR;EACA;;EACD,OAAON,uBAAuB,CAACM,KAAD,EAAQH,OAAR,EAAiBK,SAAjB,EAA4BJ,QAA5B,CAA9B;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidNumberForRegion.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidNumberForRegion.test.js new file mode 100644 index 00000000..920eb48b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidNumberForRegion.test.js @@ -0,0 +1,37 @@ +import metadata from '../metadata.min.json' assert { type: 'json' }; +import isValidNumberForRegionCustom from './isValidNumberForRegion.js'; +import _isValidNumberForRegion from './isValidNumberForRegion_.js'; + +function isValidNumberForRegion() { + for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) { + parameters[_key] = arguments[_key]; + } + + parameters.push(metadata); + return isValidNumberForRegionCustom.apply(this, parameters); +} + +describe('isValidNumberForRegion', function () { + it('should detect if is valid number for region', function () { + isValidNumberForRegion('07624369230', 'GB').should.equal(false); + isValidNumberForRegion('07624369230', 'IM').should.equal(true); + }); + it('should validate arguments', function () { + expect(function () { + return isValidNumberForRegion({ + phone: '7624369230', + country: 'GB' + }); + }).to["throw"]('number must be a string'); + expect(function () { + return isValidNumberForRegion('7624369230'); + }).to["throw"]('country must be a string'); + }); + it('should work in edge cases', function () { + // Not a "viable" phone number. + isValidNumberForRegion('7', 'GB').should.equal(false); // `options` argument `if/else` coverage. + + _isValidNumberForRegion('07624369230', 'GB', {}, metadata).should.equal(false); + }); +}); +//# sourceMappingURL=isValidNumberForRegion.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidNumberForRegion.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidNumberForRegion.test.js.map new file mode 100644 index 00000000..93ca1cd2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidNumberForRegion.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isValidNumberForRegion.test.js","names":["metadata","type","isValidNumberForRegionCustom","_isValidNumberForRegion","isValidNumberForRegion","parameters","push","apply","describe","it","should","equal","expect","phone","country","to"],"sources":["../source/isValidNumberForRegion.test.js"],"sourcesContent":["import metadata from '../metadata.min.json' assert { type: 'json' }\r\nimport isValidNumberForRegionCustom from './isValidNumberForRegion.js'\r\nimport _isValidNumberForRegion from './isValidNumberForRegion_.js'\r\n\r\nfunction isValidNumberForRegion(...parameters) {\r\n\tparameters.push(metadata)\r\n\treturn isValidNumberForRegionCustom.apply(this, parameters)\r\n}\r\n\r\ndescribe('isValidNumberForRegion', () => {\r\n\tit('should detect if is valid number for region', () => {\r\n\t\tisValidNumberForRegion('07624369230', 'GB').should.equal(false)\r\n\t\tisValidNumberForRegion('07624369230', 'IM').should.equal(true)\r\n\t})\r\n\r\n\tit('should validate arguments', () => {\r\n\t\texpect(() => isValidNumberForRegion({ phone: '7624369230', country: 'GB' })).to.throw('number must be a string')\r\n\t\texpect(() => isValidNumberForRegion('7624369230')).to.throw('country must be a string')\r\n\t})\r\n\r\n\tit('should work in edge cases', () => {\r\n\t\t// Not a \"viable\" phone number.\r\n\t\tisValidNumberForRegion('7', 'GB').should.equal(false)\r\n\r\n\t\t// `options` argument `if/else` coverage.\r\n\t\t_isValidNumberForRegion('07624369230', 'GB', {}, metadata).should.equal(false)\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,QAAP,MAAqB,sBAArB,UAAqDC,IAAI,EAAE,MAA3D;AACA,OAAOC,4BAAP,MAAyC,6BAAzC;AACA,OAAOC,uBAAP,MAAoC,8BAApC;;AAEA,SAASC,sBAAT,GAA+C;EAAA,kCAAZC,UAAY;IAAZA,UAAY;EAAA;;EAC9CA,UAAU,CAACC,IAAX,CAAgBN,QAAhB;EACA,OAAOE,4BAA4B,CAACK,KAA7B,CAAmC,IAAnC,EAAyCF,UAAzC,CAAP;AACA;;AAEDG,QAAQ,CAAC,wBAAD,EAA2B,YAAM;EACxCC,EAAE,CAAC,6CAAD,EAAgD,YAAM;IACvDL,sBAAsB,CAAC,aAAD,EAAgB,IAAhB,CAAtB,CAA4CM,MAA5C,CAAmDC,KAAnD,CAAyD,KAAzD;IACAP,sBAAsB,CAAC,aAAD,EAAgB,IAAhB,CAAtB,CAA4CM,MAA5C,CAAmDC,KAAnD,CAAyD,IAAzD;EACA,CAHC,CAAF;EAKAF,EAAE,CAAC,2BAAD,EAA8B,YAAM;IACrCG,MAAM,CAAC;MAAA,OAAMR,sBAAsB,CAAC;QAAES,KAAK,EAAE,YAAT;QAAuBC,OAAO,EAAE;MAAhC,CAAD,CAA5B;IAAA,CAAD,CAAN,CAA6EC,EAA7E,UAAsF,yBAAtF;IACAH,MAAM,CAAC;MAAA,OAAMR,sBAAsB,CAAC,YAAD,CAA5B;IAAA,CAAD,CAAN,CAAmDW,EAAnD,UAA4D,0BAA5D;EACA,CAHC,CAAF;EAKAN,EAAE,CAAC,2BAAD,EAA8B,YAAM;IACrC;IACAL,sBAAsB,CAAC,GAAD,EAAM,IAAN,CAAtB,CAAkCM,MAAlC,CAAyCC,KAAzC,CAA+C,KAA/C,EAFqC,CAIrC;;IACAR,uBAAuB,CAAC,aAAD,EAAgB,IAAhB,EAAsB,EAAtB,EAA0BH,QAA1B,CAAvB,CAA2DU,MAA3D,CAAkEC,KAAlE,CAAwE,KAAxE;EACA,CANC,CAAF;AAOA,CAlBO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidNumberForRegion_.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidNumberForRegion_.js new file mode 100644 index 00000000..aaaf6753 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidNumberForRegion_.js @@ -0,0 +1,14 @@ +import isValidNumber from './validate_.js'; +/** + * Checks if a given phone number is valid within a given region. + * Is just an alias for `phoneNumber.isValid() && phoneNumber.country === country`. + * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion + */ + +export default function isValidNumberForRegion(input, country, options, metadata) { + // If assigning the `{}` default value is moved to the arguments above, + // code coverage would decrease for some weird reason. + options = options || {}; + return input.country === country && isValidNumber(input, options, metadata); +} +//# sourceMappingURL=isValidNumberForRegion_.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidNumberForRegion_.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidNumberForRegion_.js.map new file mode 100644 index 00000000..af283c54 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidNumberForRegion_.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isValidNumberForRegion_.js","names":["isValidNumber","isValidNumberForRegion","input","country","options","metadata"],"sources":["../source/isValidNumberForRegion_.js"],"sourcesContent":["import isValidNumber from './validate_.js'\r\n\r\n/**\r\n * Checks if a given phone number is valid within a given region.\r\n * Is just an alias for `phoneNumber.isValid() && phoneNumber.country === country`.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n */\r\nexport default function isValidNumberForRegion(input, country, options, metadata) {\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\treturn input.country === country && isValidNumber(input, options, metadata)\r\n}"],"mappings":"AAAA,OAAOA,aAAP,MAA0B,gBAA1B;AAEA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,sBAAT,CAAgCC,KAAhC,EAAuCC,OAAvC,EAAgDC,OAAhD,EAAyDC,QAAzD,EAAmE;EACjF;EACA;EACAD,OAAO,GAAGA,OAAO,IAAI,EAArB;EACA,OAAOF,KAAK,CAACC,OAAN,KAAkBA,OAAlB,IAA6BH,aAAa,CAACE,KAAD,EAAQE,OAAR,EAAiBC,QAAjB,CAAjD;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidPhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidPhoneNumber.js new file mode 100644 index 00000000..19263405 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidPhoneNumber.js @@ -0,0 +1,21 @@ +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import { normalizeArguments } from './parsePhoneNumber.js'; +import parsePhoneNumberFromString from './parsePhoneNumberFromString_.js'; +export default function isValidPhoneNumber() { + var _normalizeArguments = normalizeArguments(arguments), + text = _normalizeArguments.text, + options = _normalizeArguments.options, + metadata = _normalizeArguments.metadata; + + options = _objectSpread(_objectSpread({}, options), {}, { + extract: false + }); + var phoneNumber = parsePhoneNumberFromString(text, options, metadata); + return phoneNumber && phoneNumber.isValid() || false; +} +//# sourceMappingURL=isValidPhoneNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidPhoneNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidPhoneNumber.js.map new file mode 100644 index 00000000..454ff736 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidPhoneNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isValidPhoneNumber.js","names":["normalizeArguments","parsePhoneNumberFromString","isValidPhoneNumber","arguments","text","options","metadata","extract","phoneNumber","isValid"],"sources":["../source/isValidPhoneNumber.js"],"sourcesContent":["import { normalizeArguments } from './parsePhoneNumber.js'\r\nimport parsePhoneNumberFromString from './parsePhoneNumberFromString_.js'\r\n\r\nexport default function isValidPhoneNumber() {\r\n\tlet { text, options, metadata } = normalizeArguments(arguments)\r\n\toptions = {\r\n\t\t...options,\r\n\t\textract: false\r\n\t}\r\n\tconst phoneNumber = parsePhoneNumberFromString(text, options, metadata)\r\n\treturn phoneNumber && phoneNumber.isValid() || false\r\n}"],"mappings":";;;;;;AAAA,SAASA,kBAAT,QAAmC,uBAAnC;AACA,OAAOC,0BAAP,MAAuC,kCAAvC;AAEA,eAAe,SAASC,kBAAT,GAA8B;EAC5C,0BAAkCF,kBAAkB,CAACG,SAAD,CAApD;EAAA,IAAMC,IAAN,uBAAMA,IAAN;EAAA,IAAYC,OAAZ,uBAAYA,OAAZ;EAAA,IAAqBC,QAArB,uBAAqBA,QAArB;;EACAD,OAAO,mCACHA,OADG;IAENE,OAAO,EAAE;EAFH,EAAP;EAIA,IAAMC,WAAW,GAAGP,0BAA0B,CAACG,IAAD,EAAOC,OAAP,EAAgBC,QAAhB,CAA9C;EACA,OAAOE,WAAW,IAAIA,WAAW,CAACC,OAAZ,EAAf,IAAwC,KAA/C;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidPhoneNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidPhoneNumber.test.js new file mode 100644 index 00000000..3e8a880b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidPhoneNumber.test.js @@ -0,0 +1,27 @@ +import _isValidPhoneNumber from './isValidPhoneNumber.js'; +import metadata from '../metadata.min.json' assert { type: 'json' }; + +function isValidPhoneNumber() { + for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) { + parameters[_key] = arguments[_key]; + } + + parameters.push(metadata); + return _isValidPhoneNumber.apply(this, parameters); +} + +describe('isValidPhoneNumber', function () { + it('should detect whether a phone number is valid', function () { + isValidPhoneNumber('8 (800) 555 35 35', 'RU').should.equal(true); + isValidPhoneNumber('8 (800) 555 35 35 0', 'RU').should.equal(false); + isValidPhoneNumber('Call: 8 (800) 555 35 35', 'RU').should.equal(false); + isValidPhoneNumber('8 (800) 555 35 35', { + defaultCountry: 'RU' + }).should.equal(true); + isValidPhoneNumber('+7 (800) 555 35 35').should.equal(true); + isValidPhoneNumber('+7 1 (800) 555 35 35').should.equal(false); + isValidPhoneNumber(' +7 (800) 555 35 35').should.equal(false); + isValidPhoneNumber(' ').should.equal(false); + }); +}); +//# sourceMappingURL=isValidPhoneNumber.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidPhoneNumber.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidPhoneNumber.test.js.map new file mode 100644 index 00000000..66745c48 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/isValidPhoneNumber.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isValidPhoneNumber.test.js","names":["_isValidPhoneNumber","metadata","type","isValidPhoneNumber","parameters","push","apply","describe","it","should","equal","defaultCountry"],"sources":["../source/isValidPhoneNumber.test.js"],"sourcesContent":["import _isValidPhoneNumber from './isValidPhoneNumber.js'\r\nimport metadata from '../metadata.min.json' assert { type: 'json' }\r\n\r\nfunction isValidPhoneNumber(...parameters) {\r\n\tparameters.push(metadata)\r\n\treturn _isValidPhoneNumber.apply(this, parameters)\r\n}\r\n\r\ndescribe('isValidPhoneNumber', () => {\r\n\tit('should detect whether a phone number is valid', () => {\r\n\t\tisValidPhoneNumber('8 (800) 555 35 35', 'RU').should.equal(true)\r\n\t\tisValidPhoneNumber('8 (800) 555 35 35 0', 'RU').should.equal(false)\r\n\t\tisValidPhoneNumber('Call: 8 (800) 555 35 35', 'RU').should.equal(false)\r\n\t\tisValidPhoneNumber('8 (800) 555 35 35', { defaultCountry: 'RU' }).should.equal(true)\r\n\t\tisValidPhoneNumber('+7 (800) 555 35 35').should.equal(true)\r\n\t\tisValidPhoneNumber('+7 1 (800) 555 35 35').should.equal(false)\r\n\t\tisValidPhoneNumber(' +7 (800) 555 35 35').should.equal(false)\r\n\t\tisValidPhoneNumber(' ').should.equal(false)\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,mBAAP,MAAgC,yBAAhC;AACA,OAAOC,QAAP,MAAqB,sBAArB,UAAqDC,IAAI,EAAE,MAA3D;;AAEA,SAASC,kBAAT,GAA2C;EAAA,kCAAZC,UAAY;IAAZA,UAAY;EAAA;;EAC1CA,UAAU,CAACC,IAAX,CAAgBJ,QAAhB;EACA,OAAOD,mBAAmB,CAACM,KAApB,CAA0B,IAA1B,EAAgCF,UAAhC,CAAP;AACA;;AAEDG,QAAQ,CAAC,oBAAD,EAAuB,YAAM;EACpCC,EAAE,CAAC,+CAAD,EAAkD,YAAM;IACzDL,kBAAkB,CAAC,mBAAD,EAAsB,IAAtB,CAAlB,CAA8CM,MAA9C,CAAqDC,KAArD,CAA2D,IAA3D;IACAP,kBAAkB,CAAC,qBAAD,EAAwB,IAAxB,CAAlB,CAAgDM,MAAhD,CAAuDC,KAAvD,CAA6D,KAA7D;IACAP,kBAAkB,CAAC,yBAAD,EAA4B,IAA5B,CAAlB,CAAoDM,MAApD,CAA2DC,KAA3D,CAAiE,KAAjE;IACAP,kBAAkB,CAAC,mBAAD,EAAsB;MAAEQ,cAAc,EAAE;IAAlB,CAAtB,CAAlB,CAAkEF,MAAlE,CAAyEC,KAAzE,CAA+E,IAA/E;IACAP,kBAAkB,CAAC,oBAAD,CAAlB,CAAyCM,MAAzC,CAAgDC,KAAhD,CAAsD,IAAtD;IACAP,kBAAkB,CAAC,sBAAD,CAAlB,CAA2CM,MAA3C,CAAkDC,KAAlD,CAAwD,KAAxD;IACAP,kBAAkB,CAAC,qBAAD,CAAlB,CAA0CM,MAA1C,CAAiDC,KAAjD,CAAuD,KAAvD;IACAP,kBAAkB,CAAC,GAAD,CAAlB,CAAwBM,MAAxB,CAA+BC,KAA/B,CAAqC,KAArC;EACA,CATC,CAAF;AAUA,CAXO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/metadata.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/metadata.js new file mode 100644 index 00000000..ef56a523 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/metadata.js @@ -0,0 +1,662 @@ +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +import compare from './tools/semver-compare.js'; // Added "possibleLengths" and renamed +// "country_phone_code_to_countries" to "country_calling_codes". + +var V2 = '1.0.18'; // Added "idd_prefix" and "default_idd_prefix". + +var V3 = '1.2.0'; // Moved `001` country code to "nonGeographic" section of metadata. + +var V4 = '1.7.35'; +var DEFAULT_EXT_PREFIX = ' ext. '; +var CALLING_CODE_REG_EXP = /^\d+$/; +/** + * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md + */ + +var Metadata = /*#__PURE__*/function () { + function Metadata(metadata) { + _classCallCheck(this, Metadata); + + validateMetadata(metadata); + this.metadata = metadata; + setVersion.call(this, metadata); + } + + _createClass(Metadata, [{ + key: "getCountries", + value: function getCountries() { + return Object.keys(this.metadata.countries).filter(function (_) { + return _ !== '001'; + }); + } + }, { + key: "getCountryMetadata", + value: function getCountryMetadata(countryCode) { + return this.metadata.countries[countryCode]; + } + }, { + key: "nonGeographic", + value: function nonGeographic() { + if (this.v1 || this.v2 || this.v3) return; // `nonGeographical` was a typo. + // It's present in metadata generated from `1.7.35` to `1.7.37`. + // The test case could be found by searching for "nonGeographical". + + return this.metadata.nonGeographic || this.metadata.nonGeographical; + } + }, { + key: "hasCountry", + value: function hasCountry(country) { + return this.getCountryMetadata(country) !== undefined; + } + }, { + key: "hasCallingCode", + value: function hasCallingCode(callingCode) { + if (this.getCountryCodesForCallingCode(callingCode)) { + return true; + } + + if (this.nonGeographic()) { + if (this.nonGeographic()[callingCode]) { + return true; + } + } else { + // A hacky workaround for old custom metadata (generated before V4). + var countryCodes = this.countryCallingCodes()[callingCode]; + + if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') { + return true; + } + } + } + }, { + key: "isNonGeographicCallingCode", + value: function isNonGeographicCallingCode(callingCode) { + if (this.nonGeographic()) { + return this.nonGeographic()[callingCode] ? true : false; + } else { + return this.getCountryCodesForCallingCode(callingCode) ? false : true; + } + } // Deprecated. + + }, { + key: "country", + value: function country(countryCode) { + return this.selectNumberingPlan(countryCode); + } + }, { + key: "selectNumberingPlan", + value: function selectNumberingPlan(countryCode, callingCode) { + // Supports just passing `callingCode` as the first argument. + if (countryCode && CALLING_CODE_REG_EXP.test(countryCode)) { + callingCode = countryCode; + countryCode = null; + } + + if (countryCode && countryCode !== '001') { + if (!this.hasCountry(countryCode)) { + throw new Error("Unknown country: ".concat(countryCode)); + } + + this.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this); + } else if (callingCode) { + if (!this.hasCallingCode(callingCode)) { + throw new Error("Unknown calling code: ".concat(callingCode)); + } + + this.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this); + } else { + this.numberingPlan = undefined; + } + + return this; + } + }, { + key: "getCountryCodesForCallingCode", + value: function getCountryCodesForCallingCode(callingCode) { + var countryCodes = this.countryCallingCodes()[callingCode]; + + if (countryCodes) { + // Metadata before V4 included "non-geographic entity" calling codes + // inside `country_calling_codes` (for example, `"881":["001"]`). + // Now the semantics of `country_calling_codes` has changed: + // it's specifically for "countries" now. + // Older versions of custom metadata will simply skip parsing + // "non-geographic entity" phone numbers with new versions + // of this library: it's not considered a bug, + // because such numbers are extremely rare, + // and developers extremely rarely use custom metadata. + if (countryCodes.length === 1 && countryCodes[0].length === 3) { + return; + } + + return countryCodes; + } + } + }, { + key: "getCountryCodeForCallingCode", + value: function getCountryCodeForCallingCode(callingCode) { + var countryCodes = this.getCountryCodesForCallingCode(callingCode); + + if (countryCodes) { + return countryCodes[0]; + } + } + }, { + key: "getNumberingPlanMetadata", + value: function getNumberingPlanMetadata(callingCode) { + var countryCode = this.getCountryCodeForCallingCode(callingCode); + + if (countryCode) { + return this.getCountryMetadata(countryCode); + } + + if (this.nonGeographic()) { + var metadata = this.nonGeographic()[callingCode]; + + if (metadata) { + return metadata; + } + } else { + // A hacky workaround for old custom metadata (generated before V4). + // In that metadata, there was no concept of "non-geographic" metadata + // so metadata for `001` country code was stored along with other countries. + // The test case can be found by searching for: + // "should work around `nonGeographic` metadata not existing". + var countryCodes = this.countryCallingCodes()[callingCode]; + + if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') { + return this.metadata.countries['001']; + } + } + } // Deprecated. + + }, { + key: "countryCallingCode", + value: function countryCallingCode() { + return this.numberingPlan.callingCode(); + } // Deprecated. + + }, { + key: "IDDPrefix", + value: function IDDPrefix() { + return this.numberingPlan.IDDPrefix(); + } // Deprecated. + + }, { + key: "defaultIDDPrefix", + value: function defaultIDDPrefix() { + return this.numberingPlan.defaultIDDPrefix(); + } // Deprecated. + + }, { + key: "nationalNumberPattern", + value: function nationalNumberPattern() { + return this.numberingPlan.nationalNumberPattern(); + } // Deprecated. + + }, { + key: "possibleLengths", + value: function possibleLengths() { + return this.numberingPlan.possibleLengths(); + } // Deprecated. + + }, { + key: "formats", + value: function formats() { + return this.numberingPlan.formats(); + } // Deprecated. + + }, { + key: "nationalPrefixForParsing", + value: function nationalPrefixForParsing() { + return this.numberingPlan.nationalPrefixForParsing(); + } // Deprecated. + + }, { + key: "nationalPrefixTransformRule", + value: function nationalPrefixTransformRule() { + return this.numberingPlan.nationalPrefixTransformRule(); + } // Deprecated. + + }, { + key: "leadingDigits", + value: function leadingDigits() { + return this.numberingPlan.leadingDigits(); + } // Deprecated. + + }, { + key: "hasTypes", + value: function hasTypes() { + return this.numberingPlan.hasTypes(); + } // Deprecated. + + }, { + key: "type", + value: function type(_type) { + return this.numberingPlan.type(_type); + } // Deprecated. + + }, { + key: "ext", + value: function ext() { + return this.numberingPlan.ext(); + } + }, { + key: "countryCallingCodes", + value: function countryCallingCodes() { + if (this.v1) return this.metadata.country_phone_code_to_countries; + return this.metadata.country_calling_codes; + } // Deprecated. + + }, { + key: "chooseCountryByCountryCallingCode", + value: function chooseCountryByCountryCallingCode(callingCode) { + return this.selectNumberingPlan(callingCode); + } + }, { + key: "hasSelectedNumberingPlan", + value: function hasSelectedNumberingPlan() { + return this.numberingPlan !== undefined; + } + }]); + + return Metadata; +}(); + +export { Metadata as default }; + +var NumberingPlan = /*#__PURE__*/function () { + function NumberingPlan(metadata, globalMetadataObject) { + _classCallCheck(this, NumberingPlan); + + this.globalMetadataObject = globalMetadataObject; + this.metadata = metadata; + setVersion.call(this, globalMetadataObject.metadata); + } + + _createClass(NumberingPlan, [{ + key: "callingCode", + value: function callingCode() { + return this.metadata[0]; + } // Formatting information for regions which share + // a country calling code is contained by only one region + // for performance reasons. For example, for NANPA region + // ("North American Numbering Plan Administration", + // which includes USA, Canada, Cayman Islands, Bahamas, etc) + // it will be contained in the metadata for `US`. + + }, { + key: "getDefaultCountryMetadataForRegion", + value: function getDefaultCountryMetadataForRegion() { + return this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode()); + } // Is always present. + + }, { + key: "IDDPrefix", + value: function IDDPrefix() { + if (this.v1 || this.v2) return; + return this.metadata[1]; + } // Is only present when a country supports multiple IDD prefixes. + + }, { + key: "defaultIDDPrefix", + value: function defaultIDDPrefix() { + if (this.v1 || this.v2) return; + return this.metadata[12]; + } + }, { + key: "nationalNumberPattern", + value: function nationalNumberPattern() { + if (this.v1 || this.v2) return this.metadata[1]; + return this.metadata[2]; + } // "possible length" data is always present in Google's metadata. + + }, { + key: "possibleLengths", + value: function possibleLengths() { + if (this.v1) return; + return this.metadata[this.v2 ? 2 : 3]; + } + }, { + key: "_getFormats", + value: function _getFormats(metadata) { + return metadata[this.v1 ? 2 : this.v2 ? 3 : 4]; + } // For countries of the same region (e.g. NANPA) + // formats are all stored in the "main" country for that region. + // E.g. "RU" and "KZ", "US" and "CA". + + }, { + key: "formats", + value: function formats() { + var _this = this; + + var formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || []; + return formats.map(function (_) { + return new Format(_, _this); + }); + } + }, { + key: "nationalPrefix", + value: function nationalPrefix() { + return this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5]; + } + }, { + key: "_getNationalPrefixFormattingRule", + value: function _getNationalPrefixFormattingRule(metadata) { + return metadata[this.v1 ? 4 : this.v2 ? 5 : 6]; + } // For countries of the same region (e.g. NANPA) + // national prefix formatting rule is stored in the "main" country for that region. + // E.g. "RU" and "KZ", "US" and "CA". + + }, { + key: "nationalPrefixFormattingRule", + value: function nationalPrefixFormattingRule() { + return this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion()); + } + }, { + key: "_nationalPrefixForParsing", + value: function _nationalPrefixForParsing() { + return this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7]; + } + }, { + key: "nationalPrefixForParsing", + value: function nationalPrefixForParsing() { + // If `national_prefix_for_parsing` is not set explicitly, + // then infer it from `national_prefix` (if any) + return this._nationalPrefixForParsing() || this.nationalPrefix(); + } + }, { + key: "nationalPrefixTransformRule", + value: function nationalPrefixTransformRule() { + return this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8]; + } + }, { + key: "_getNationalPrefixIsOptionalWhenFormatting", + value: function _getNationalPrefixIsOptionalWhenFormatting() { + return !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9]; + } // For countries of the same region (e.g. NANPA) + // "national prefix is optional when formatting" flag is + // stored in the "main" country for that region. + // E.g. "RU" and "KZ", "US" and "CA". + + }, { + key: "nationalPrefixIsOptionalWhenFormattingInNationalFormat", + value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() { + return this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) || this._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion()); + } + }, { + key: "leadingDigits", + value: function leadingDigits() { + return this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10]; + } + }, { + key: "types", + value: function types() { + return this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11]; + } + }, { + key: "hasTypes", + value: function hasTypes() { + // Versions 1.2.0 - 1.2.4: can be `[]`. + + /* istanbul ignore next */ + if (this.types() && this.types().length === 0) { + return false; + } // Versions <= 1.2.4: can be `undefined`. + // Version >= 1.2.5: can be `0`. + + + return !!this.types(); + } + }, { + key: "type", + value: function type(_type2) { + if (this.hasTypes() && getType(this.types(), _type2)) { + return new Type(getType(this.types(), _type2), this); + } + } + }, { + key: "ext", + value: function ext() { + if (this.v1 || this.v2) return DEFAULT_EXT_PREFIX; + return this.metadata[13] || DEFAULT_EXT_PREFIX; + } + }]); + + return NumberingPlan; +}(); + +var Format = /*#__PURE__*/function () { + function Format(format, metadata) { + _classCallCheck(this, Format); + + this._format = format; + this.metadata = metadata; + } + + _createClass(Format, [{ + key: "pattern", + value: function pattern() { + return this._format[0]; + } + }, { + key: "format", + value: function format() { + return this._format[1]; + } + }, { + key: "leadingDigitsPatterns", + value: function leadingDigitsPatterns() { + return this._format[2] || []; + } + }, { + key: "nationalPrefixFormattingRule", + value: function nationalPrefixFormattingRule() { + return this._format[3] || this.metadata.nationalPrefixFormattingRule(); + } + }, { + key: "nationalPrefixIsOptionalWhenFormattingInNationalFormat", + value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() { + return !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat(); + } + }, { + key: "nationalPrefixIsMandatoryWhenFormattingInNationalFormat", + value: function nationalPrefixIsMandatoryWhenFormattingInNationalFormat() { + // National prefix is omitted if there's no national prefix formatting rule + // set for this country, or when the national prefix formatting rule + // contains no national prefix itself, or when this rule is set but + // national prefix is optional for this phone number format + // (and it is not enforced explicitly) + return this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat(); + } // Checks whether national prefix formatting rule contains national prefix. + + }, { + key: "usesNationalPrefix", + value: function usesNationalPrefix() { + return this.nationalPrefixFormattingRule() && // Check that national prefix formatting rule is not a "dummy" one. + !FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule()) // In compressed metadata, `this.nationalPrefixFormattingRule()` is `0` + // when `national_prefix_formatting_rule` is not present. + // So, `true` or `false` are returned explicitly here, so that + // `0` number isn't returned. + ? true : false; + } + }, { + key: "internationalFormat", + value: function internationalFormat() { + return this._format[5] || this.format(); + } + }]); + + return Format; +}(); +/** + * A pattern that is used to determine if the national prefix formatting rule + * has the first group only, i.e., does not start with the national prefix. + * Note that the pattern explicitly allows for unbalanced parentheses. + */ + + +var FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\(?\$1\)?$/; + +var Type = /*#__PURE__*/function () { + function Type(type, metadata) { + _classCallCheck(this, Type); + + this.type = type; + this.metadata = metadata; + } + + _createClass(Type, [{ + key: "pattern", + value: function pattern() { + if (this.metadata.v1) return this.type; + return this.type[0]; + } + }, { + key: "possibleLengths", + value: function possibleLengths() { + if (this.metadata.v1) return; + return this.type[1] || this.metadata.possibleLengths(); + } + }]); + + return Type; +}(); + +function getType(types, type) { + switch (type) { + case 'FIXED_LINE': + return types[0]; + + case 'MOBILE': + return types[1]; + + case 'TOLL_FREE': + return types[2]; + + case 'PREMIUM_RATE': + return types[3]; + + case 'PERSONAL_NUMBER': + return types[4]; + + case 'VOICEMAIL': + return types[5]; + + case 'UAN': + return types[6]; + + case 'PAGER': + return types[7]; + + case 'VOIP': + return types[8]; + + case 'SHARED_COST': + return types[9]; + } +} + +export function validateMetadata(metadata) { + if (!metadata) { + throw new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.'); + } // `country_phone_code_to_countries` was renamed to + // `country_calling_codes` in `1.0.18`. + + + if (!is_object(metadata) || !is_object(metadata.countries)) { + throw new Error("[libphonenumber-js] `metadata` argument was passed but it's not a valid metadata. Must be an object having `.countries` child object property. Got ".concat(is_object(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + type_of(metadata) + ': ' + metadata, ".")); + } +} // Babel transforms `typeof` into some "branches" +// so istanbul will show this as "branch not covered". + +/* istanbul ignore next */ + +var is_object = function is_object(_) { + return _typeof(_) === 'object'; +}; // Babel transforms `typeof` into some "branches" +// so istanbul will show this as "branch not covered". + +/* istanbul ignore next */ + + +var type_of = function type_of(_) { + return _typeof(_); +}; +/** + * Returns extension prefix for a country. + * @param {string} country + * @param {object} metadata + * @return {string?} + * @example + * // Returns " ext. " + * getExtPrefix("US") + */ + + +export function getExtPrefix(country, metadata) { + metadata = new Metadata(metadata); + + if (metadata.hasCountry(country)) { + return metadata.country(country).ext(); + } + + return DEFAULT_EXT_PREFIX; +} +/** + * Returns "country calling code" for a country. + * Throws an error if the country doesn't exist or isn't supported by this library. + * @param {string} country + * @param {object} metadata + * @return {string} + * @example + * // Returns "44" + * getCountryCallingCode("GB") + */ + +export function getCountryCallingCode(country, metadata) { + metadata = new Metadata(metadata); + + if (metadata.hasCountry(country)) { + return metadata.country(country).countryCallingCode(); + } + + throw new Error("Unknown country: ".concat(country)); +} +export function isSupportedCountry(country, metadata) { + // metadata = new Metadata(metadata) + // return metadata.hasCountry(country) + return metadata.countries[country] !== undefined; +} + +function setVersion(metadata) { + var version = metadata.version; + + if (typeof version === 'number') { + this.v1 = version === 1; + this.v2 = version === 2; + this.v3 = version === 3; + this.v4 = version === 4; + } else { + if (!version) { + this.v1 = true; + } else if (compare(version, V3) === -1) { + this.v2 = true; + } else if (compare(version, V4) === -1) { + this.v3 = true; + } else { + this.v4 = true; + } + } +} // const ISO_COUNTRY_CODE = /^[A-Z]{2}$/ +// function isCountryCode(countryCode) { +// return ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode) +// } +//# sourceMappingURL=metadata.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/metadata.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/metadata.js.map new file mode 100644 index 00000000..61125d34 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/metadata.js.map @@ -0,0 +1 @@ +{"version":3,"file":"metadata.js","names":["compare","V2","V3","V4","DEFAULT_EXT_PREFIX","CALLING_CODE_REG_EXP","Metadata","metadata","validateMetadata","setVersion","call","Object","keys","countries","filter","_","countryCode","v1","v2","v3","nonGeographic","nonGeographical","country","getCountryMetadata","undefined","callingCode","getCountryCodesForCallingCode","countryCodes","countryCallingCodes","length","selectNumberingPlan","test","hasCountry","Error","numberingPlan","NumberingPlan","hasCallingCode","getNumberingPlanMetadata","getCountryCodeForCallingCode","IDDPrefix","defaultIDDPrefix","nationalNumberPattern","possibleLengths","formats","nationalPrefixForParsing","nationalPrefixTransformRule","leadingDigits","hasTypes","type","ext","country_phone_code_to_countries","country_calling_codes","globalMetadataObject","_getFormats","getDefaultCountryMetadataForRegion","map","Format","_getNationalPrefixFormattingRule","_nationalPrefixForParsing","nationalPrefix","_getNationalPrefixIsOptionalWhenFormatting","types","getType","Type","format","_format","nationalPrefixFormattingRule","nationalPrefixIsOptionalWhenFormattingInNationalFormat","usesNationalPrefix","FIRST_GROUP_ONLY_PREFIX_PATTERN","is_object","join","type_of","getExtPrefix","getCountryCallingCode","countryCallingCode","isSupportedCountry","version","v4"],"sources":["../source/metadata.js"],"sourcesContent":["import compare from './tools/semver-compare.js'\r\n\r\n// Added \"possibleLengths\" and renamed\r\n// \"country_phone_code_to_countries\" to \"country_calling_codes\".\r\nconst V2 = '1.0.18'\r\n\r\n// Added \"idd_prefix\" and \"default_idd_prefix\".\r\nconst V3 = '1.2.0'\r\n\r\n// Moved `001` country code to \"nonGeographic\" section of metadata.\r\nconst V4 = '1.7.35'\r\n\r\nconst DEFAULT_EXT_PREFIX = ' ext. '\r\n\r\nconst CALLING_CODE_REG_EXP = /^\\d+$/\r\n\r\n/**\r\n * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md\r\n */\r\nexport default class Metadata {\r\n\tconstructor(metadata) {\r\n\t\tvalidateMetadata(metadata)\r\n\t\tthis.metadata = metadata\r\n\t\tsetVersion.call(this, metadata)\r\n\t}\r\n\r\n\tgetCountries() {\r\n\t\treturn Object.keys(this.metadata.countries).filter(_ => _ !== '001')\r\n\t}\r\n\r\n\tgetCountryMetadata(countryCode) {\r\n\t\treturn this.metadata.countries[countryCode]\r\n\t}\r\n\r\n\tnonGeographic() {\r\n\t\tif (this.v1 || this.v2 || this.v3) return\r\n\t\t// `nonGeographical` was a typo.\r\n\t\t// It's present in metadata generated from `1.7.35` to `1.7.37`.\r\n\t\t// The test case could be found by searching for \"nonGeographical\".\r\n\t\treturn this.metadata.nonGeographic || this.metadata.nonGeographical\r\n\t}\r\n\r\n\thasCountry(country) {\r\n\t\treturn this.getCountryMetadata(country) !== undefined\r\n\t}\r\n\r\n\thasCallingCode(callingCode) {\r\n\t\tif (this.getCountryCodesForCallingCode(callingCode)) {\r\n\t\t\treturn true\r\n\t\t}\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\tif (this.nonGeographic()[callingCode]) {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// A hacky workaround for old custom metadata (generated before V4).\r\n\t\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\t\tif (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisNonGeographicCallingCode(callingCode) {\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\treturn this.nonGeographic()[callingCode] ? true : false\r\n\t\t} else {\r\n\t\t\treturn this.getCountryCodesForCallingCode(callingCode) ? false : true\r\n\t\t}\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tcountry(countryCode) {\r\n\t\treturn this.selectNumberingPlan(countryCode)\r\n\t}\r\n\r\n\tselectNumberingPlan(countryCode, callingCode) {\r\n\t\t// Supports just passing `callingCode` as the first argument.\r\n\t\tif (countryCode && CALLING_CODE_REG_EXP.test(countryCode)) {\r\n\t\t\tcallingCode = countryCode\r\n\t\t\tcountryCode = null\r\n\t\t}\r\n\t\tif (countryCode && countryCode !== '001') {\r\n\t\t\tif (!this.hasCountry(countryCode)) {\r\n\t\t\t\tthrow new Error(`Unknown country: ${countryCode}`)\r\n\t\t\t}\r\n\t\t\tthis.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this)\r\n\t\t} else if (callingCode) {\r\n\t\t\tif (!this.hasCallingCode(callingCode)) {\r\n\t\t\t\tthrow new Error(`Unknown calling code: ${callingCode}`)\r\n\t\t\t}\r\n\t\t\tthis.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this)\r\n\t\t} else {\r\n\t\t\tthis.numberingPlan = undefined\r\n\t\t}\r\n\t\treturn this\r\n\t}\r\n\r\n\tgetCountryCodesForCallingCode(callingCode) {\r\n\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\tif (countryCodes) {\r\n\t\t\t// Metadata before V4 included \"non-geographic entity\" calling codes\r\n\t\t\t// inside `country_calling_codes` (for example, `\"881\":[\"001\"]`).\r\n\t\t\t// Now the semantics of `country_calling_codes` has changed:\r\n\t\t\t// it's specifically for \"countries\" now.\r\n\t\t\t// Older versions of custom metadata will simply skip parsing\r\n\t\t\t// \"non-geographic entity\" phone numbers with new versions\r\n\t\t\t// of this library: it's not considered a bug,\r\n\t\t\t// because such numbers are extremely rare,\r\n\t\t\t// and developers extremely rarely use custom metadata.\r\n\t\t\tif (countryCodes.length === 1 && countryCodes[0].length === 3) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\treturn countryCodes\r\n\t\t}\r\n\t}\r\n\r\n\tgetCountryCodeForCallingCode(callingCode) {\r\n\t\tconst countryCodes = this.getCountryCodesForCallingCode(callingCode)\r\n\t\tif (countryCodes) {\r\n\t\t\treturn countryCodes[0]\r\n\t\t}\r\n\t}\r\n\r\n\tgetNumberingPlanMetadata(callingCode) {\r\n\t\tconst countryCode = this.getCountryCodeForCallingCode(callingCode)\r\n\t\tif (countryCode) {\r\n\t\t\treturn this.getCountryMetadata(countryCode)\r\n\t\t}\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\tconst metadata = this.nonGeographic()[callingCode]\r\n\t\t\tif (metadata) {\r\n\t\t\t\treturn metadata\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// A hacky workaround for old custom metadata (generated before V4).\r\n\t\t\t// In that metadata, there was no concept of \"non-geographic\" metadata\r\n\t\t\t// so metadata for `001` country code was stored along with other countries.\r\n\t\t\t// The test case can be found by searching for:\r\n\t\t\t// \"should work around `nonGeographic` metadata not existing\".\r\n\t\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\t\tif (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\r\n\t\t\t\treturn this.metadata.countries['001']\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tcountryCallingCode() {\r\n\t\treturn this.numberingPlan.callingCode()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tIDDPrefix() {\r\n\t\treturn this.numberingPlan.IDDPrefix()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tdefaultIDDPrefix() {\r\n\t\treturn this.numberingPlan.defaultIDDPrefix()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalNumberPattern() {\r\n\t\treturn this.numberingPlan.nationalNumberPattern()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tpossibleLengths() {\r\n\t\treturn this.numberingPlan.possibleLengths()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tformats() {\r\n\t\treturn this.numberingPlan.formats()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalPrefixForParsing() {\r\n\t\treturn this.numberingPlan.nationalPrefixForParsing()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalPrefixTransformRule() {\r\n\t\treturn this.numberingPlan.nationalPrefixTransformRule()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tleadingDigits() {\r\n\t\treturn this.numberingPlan.leadingDigits()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\thasTypes() {\r\n\t\treturn this.numberingPlan.hasTypes()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\ttype(type) {\r\n\t\treturn this.numberingPlan.type(type)\r\n\t}\r\n\r\n\t// Deprecated.\r\n\text() {\r\n\t\treturn this.numberingPlan.ext()\r\n\t}\r\n\r\n\tcountryCallingCodes() {\r\n\t\tif (this.v1) return this.metadata.country_phone_code_to_countries\r\n\t\treturn this.metadata.country_calling_codes\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tchooseCountryByCountryCallingCode(callingCode) {\r\n\t\treturn this.selectNumberingPlan(callingCode)\r\n\t}\r\n\r\n\thasSelectedNumberingPlan() {\r\n\t\treturn this.numberingPlan !== undefined\r\n\t}\r\n}\r\n\r\nclass NumberingPlan {\r\n\tconstructor(metadata, globalMetadataObject) {\r\n\t\tthis.globalMetadataObject = globalMetadataObject\r\n\t\tthis.metadata = metadata\r\n\t\tsetVersion.call(this, globalMetadataObject.metadata)\r\n\t}\r\n\r\n\tcallingCode() {\r\n\t\treturn this.metadata[0]\r\n\t}\r\n\r\n\t// Formatting information for regions which share\r\n\t// a country calling code is contained by only one region\r\n\t// for performance reasons. For example, for NANPA region\r\n\t// (\"North American Numbering Plan Administration\",\r\n\t// which includes USA, Canada, Cayman Islands, Bahamas, etc)\r\n\t// it will be contained in the metadata for `US`.\r\n\tgetDefaultCountryMetadataForRegion() {\r\n\t\treturn this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode())\r\n\t}\r\n\r\n\t// Is always present.\r\n\tIDDPrefix() {\r\n\t\tif (this.v1 || this.v2) return\r\n\t\treturn this.metadata[1]\r\n\t}\r\n\r\n\t// Is only present when a country supports multiple IDD prefixes.\r\n\tdefaultIDDPrefix() {\r\n\t\tif (this.v1 || this.v2) return\r\n\t\treturn this.metadata[12]\r\n\t}\r\n\r\n\tnationalNumberPattern() {\r\n\t\tif (this.v1 || this.v2) return this.metadata[1]\r\n\t\treturn this.metadata[2]\r\n\t}\r\n\r\n\t// \"possible length\" data is always present in Google's metadata.\r\n\tpossibleLengths() {\r\n\t\tif (this.v1) return\r\n\t\treturn this.metadata[this.v2 ? 2 : 3]\r\n\t}\r\n\r\n\t_getFormats(metadata) {\r\n\t\treturn metadata[this.v1 ? 2 : this.v2 ? 3 : 4]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// formats are all stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tformats() {\r\n\t\tconst formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || []\r\n\t\treturn formats.map(_ => new Format(_, this))\r\n\t}\r\n\r\n\tnationalPrefix() {\r\n\t\treturn this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5]\r\n\t}\r\n\r\n\t_getNationalPrefixFormattingRule(metadata) {\r\n\t\treturn metadata[this.v1 ? 4 : this.v2 ? 5 : 6]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// national prefix formatting rule is stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tnationalPrefixFormattingRule() {\r\n\t\treturn this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion())\r\n\t}\r\n\r\n\t_nationalPrefixForParsing() {\r\n\t\treturn this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7]\r\n\t}\r\n\r\n\tnationalPrefixForParsing() {\r\n\t\t// If `national_prefix_for_parsing` is not set explicitly,\r\n\t\t// then infer it from `national_prefix` (if any)\r\n\t\treturn this._nationalPrefixForParsing() || this.nationalPrefix()\r\n\t}\r\n\r\n\tnationalPrefixTransformRule() {\r\n\t\treturn this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8]\r\n\t}\r\n\r\n\t_getNationalPrefixIsOptionalWhenFormatting() {\r\n\t\treturn !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// \"national prefix is optional when formatting\" flag is\r\n\t// stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tnationalPrefixIsOptionalWhenFormattingInNationalFormat() {\r\n\t\treturn this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) ||\r\n\t\t\tthis._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion())\r\n\t}\r\n\r\n\tleadingDigits() {\r\n\t\treturn this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10]\r\n\t}\r\n\r\n\ttypes() {\r\n\t\treturn this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11]\r\n\t}\r\n\r\n\thasTypes() {\r\n\t\t// Versions 1.2.0 - 1.2.4: can be `[]`.\r\n\t\t/* istanbul ignore next */\r\n\t\tif (this.types() && this.types().length === 0) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\t// Versions <= 1.2.4: can be `undefined`.\r\n\t\t// Version >= 1.2.5: can be `0`.\r\n\t\treturn !!this.types()\r\n\t}\r\n\r\n\ttype(type) {\r\n\t\tif (this.hasTypes() && getType(this.types(), type)) {\r\n\t\t\treturn new Type(getType(this.types(), type), this)\r\n\t\t}\r\n\t}\r\n\r\n\text() {\r\n\t\tif (this.v1 || this.v2) return DEFAULT_EXT_PREFIX\r\n\t\treturn this.metadata[13] || DEFAULT_EXT_PREFIX\r\n\t}\r\n}\r\n\r\nclass Format {\r\n\tconstructor(format, metadata) {\r\n\t\tthis._format = format\r\n\t\tthis.metadata = metadata\r\n\t}\r\n\r\n\tpattern() {\r\n\t\treturn this._format[0]\r\n\t}\r\n\r\n\tformat() {\r\n\t\treturn this._format[1]\r\n\t}\r\n\r\n\tleadingDigitsPatterns() {\r\n\t\treturn this._format[2] || []\r\n\t}\r\n\r\n\tnationalPrefixFormattingRule() {\r\n\t\treturn this._format[3] || this.metadata.nationalPrefixFormattingRule()\r\n\t}\r\n\r\n\tnationalPrefixIsOptionalWhenFormattingInNationalFormat() {\r\n\t\treturn !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat()\r\n\t}\r\n\r\n\tnationalPrefixIsMandatoryWhenFormattingInNationalFormat() {\r\n\t\t// National prefix is omitted if there's no national prefix formatting rule\r\n\t\t// set for this country, or when the national prefix formatting rule\r\n\t\t// contains no national prefix itself, or when this rule is set but\r\n\t\t// national prefix is optional for this phone number format\r\n\t\t// (and it is not enforced explicitly)\r\n\t\treturn this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat()\r\n\t}\r\n\r\n\t// Checks whether national prefix formatting rule contains national prefix.\r\n\tusesNationalPrefix() {\r\n\t\treturn this.nationalPrefixFormattingRule() &&\r\n\t\t\t// Check that national prefix formatting rule is not a \"dummy\" one.\r\n\t\t\t!FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule())\r\n\t\t\t// In compressed metadata, `this.nationalPrefixFormattingRule()` is `0`\r\n\t\t\t// when `national_prefix_formatting_rule` is not present.\r\n\t\t\t// So, `true` or `false` are returned explicitly here, so that\r\n\t\t\t// `0` number isn't returned.\r\n\t\t\t? true\r\n\t\t\t: false\r\n\t}\r\n\r\n\tinternationalFormat() {\r\n\t\treturn this._format[5] || this.format()\r\n\t}\r\n}\r\n\r\n/**\r\n * A pattern that is used to determine if the national prefix formatting rule\r\n * has the first group only, i.e., does not start with the national prefix.\r\n * Note that the pattern explicitly allows for unbalanced parentheses.\r\n */\r\nconst FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\\(?\\$1\\)?$/\r\n\r\nclass Type {\r\n\tconstructor(type, metadata) {\r\n\t\tthis.type = type\r\n\t\tthis.metadata = metadata\r\n\t}\r\n\r\n\tpattern() {\r\n\t\tif (this.metadata.v1) return this.type\r\n\t\treturn this.type[0]\r\n\t}\r\n\r\n\tpossibleLengths() {\r\n\t\tif (this.metadata.v1) return\r\n\t\treturn this.type[1] || this.metadata.possibleLengths()\r\n\t}\r\n}\r\n\r\nfunction getType(types, type) {\r\n\tswitch (type) {\r\n\t\tcase 'FIXED_LINE':\r\n\t\t\treturn types[0]\r\n\t\tcase 'MOBILE':\r\n\t\t\treturn types[1]\r\n\t\tcase 'TOLL_FREE':\r\n\t\t\treturn types[2]\r\n\t\tcase 'PREMIUM_RATE':\r\n\t\t\treturn types[3]\r\n\t\tcase 'PERSONAL_NUMBER':\r\n\t\t\treturn types[4]\r\n\t\tcase 'VOICEMAIL':\r\n\t\t\treturn types[5]\r\n\t\tcase 'UAN':\r\n\t\t\treturn types[6]\r\n\t\tcase 'PAGER':\r\n\t\t\treturn types[7]\r\n\t\tcase 'VOIP':\r\n\t\t\treturn types[8]\r\n\t\tcase 'SHARED_COST':\r\n\t\t\treturn types[9]\r\n\t}\r\n}\r\n\r\nexport function validateMetadata(metadata) {\r\n\tif (!metadata) {\r\n\t\tthrow new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.')\r\n\t}\r\n\r\n\t// `country_phone_code_to_countries` was renamed to\r\n\t// `country_calling_codes` in `1.0.18`.\r\n\tif (!is_object(metadata) || !is_object(metadata.countries)) {\r\n\t\tthrow new Error(`[libphonenumber-js] \\`metadata\\` argument was passed but it's not a valid metadata. Must be an object having \\`.countries\\` child object property. Got ${is_object(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + type_of(metadata) + ': ' + metadata}.`)\r\n\t}\r\n}\r\n\r\n// Babel transforms `typeof` into some \"branches\"\r\n// so istanbul will show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst is_object = _ => typeof _ === 'object'\r\n\r\n// Babel transforms `typeof` into some \"branches\"\r\n// so istanbul will show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst type_of = _ => typeof _\r\n\r\n/**\r\n * Returns extension prefix for a country.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string?}\r\n * @example\r\n * // Returns \" ext. \"\r\n * getExtPrefix(\"US\")\r\n */\r\nexport function getExtPrefix(country, metadata) {\r\n\tmetadata = new Metadata(metadata)\r\n\tif (metadata.hasCountry(country)) {\r\n\t\treturn metadata.country(country).ext()\r\n\t}\r\n\treturn DEFAULT_EXT_PREFIX\r\n}\r\n\r\n/**\r\n * Returns \"country calling code\" for a country.\r\n * Throws an error if the country doesn't exist or isn't supported by this library.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string}\r\n * @example\r\n * // Returns \"44\"\r\n * getCountryCallingCode(\"GB\")\r\n */\r\nexport function getCountryCallingCode(country, metadata) {\r\n\tmetadata = new Metadata(metadata)\r\n\tif (metadata.hasCountry(country)) {\r\n\t\treturn metadata.country(country).countryCallingCode()\r\n\t}\r\n\tthrow new Error(`Unknown country: ${country}`)\r\n}\r\n\r\nexport function isSupportedCountry(country, metadata) {\r\n\t// metadata = new Metadata(metadata)\r\n\t// return metadata.hasCountry(country)\r\n\treturn metadata.countries[country] !== undefined\r\n}\r\n\r\nfunction setVersion(metadata) {\r\n\tconst { version } = metadata\r\n\tif (typeof version === 'number') {\r\n\t\tthis.v1 = version === 1\r\n\t\tthis.v2 = version === 2\r\n\t\tthis.v3 = version === 3\r\n\t\tthis.v4 = version === 4\r\n\t} else {\r\n\t\tif (!version) {\r\n\t\t\tthis.v1 = true\r\n\t\t} else if (compare(version, V3) === -1) {\r\n\t\t\tthis.v2 = true\r\n\t\t} else if (compare(version, V4) === -1) {\r\n\t\t\tthis.v3 = true\r\n\t\t} else {\r\n\t\t\tthis.v4 = true\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// const ISO_COUNTRY_CODE = /^[A-Z]{2}$/\r\n// function isCountryCode(countryCode) {\r\n// \treturn ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode)\r\n// }"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/metadata.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/metadata.test.js new file mode 100644 index 00000000..91470314 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/metadata.test.js @@ -0,0 +1,180 @@ +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +import metadata from '../metadata.min.json' assert { type: 'json' }; +import metadataV1 from '../test/metadata/1.0.0/metadata.min.json' assert { type: 'json' }; +import metadataV2 from '../test/metadata/1.1.11/metadata.min.json' assert { type: 'json' }; +import metadataV3 from '../test/metadata/1.7.34/metadata.min.json' assert { type: 'json' }; +import metadataV4 from '../test/metadata/1.7.37/metadata.min.json' assert { type: 'json' }; +import Metadata, { validateMetadata, getExtPrefix, isSupportedCountry } from './metadata.js'; +describe('metadata', function () { + it('should return undefined for non-defined types', function () { + var FR = new Metadata(metadata).country('FR'); + type(FR.type('FIXED_LINE')).should.equal('undefined'); + }); + it('should validate country', function () { + var thrower = function thrower() { + return new Metadata(metadata).country('RUS'); + }; + + thrower.should["throw"]('Unknown country'); + }); + it('should tell if a country is supported', function () { + isSupportedCountry('RU', metadata).should.equal(true); + isSupportedCountry('XX', metadata).should.equal(false); + }); + it('should return ext prefix for a country', function () { + getExtPrefix('US', metadata).should.equal(' ext. '); + getExtPrefix('CA', metadata).should.equal(' ext. '); + getExtPrefix('GB', metadata).should.equal(' x'); // expect(getExtPrefix('XX', metadata)).to.equal(undefined) + + getExtPrefix('XX', metadata).should.equal(' ext. '); + }); + it('should cover non-occuring edge cases', function () { + new Metadata(metadata).getNumberingPlanMetadata('999'); + }); + it('should support deprecated methods', function () { + new Metadata(metadata).country('US').nationalPrefixForParsing().should.equal('1'); + new Metadata(metadata).chooseCountryByCountryCallingCode('1').nationalPrefixForParsing().should.equal('1'); + }); + it('should tell if a national prefix is mandatory when formatting a national number', function () { + var meta = new Metadata(metadata); // No "national_prefix_formatting_rule". + // "national_prefix_is_optional_when_formatting": true + + meta.country('US'); + meta.numberingPlan.formats()[0].nationalPrefixIsMandatoryWhenFormattingInNationalFormat().should.equal(false); // "national_prefix_formatting_rule": "8 ($1)" + // "national_prefix_is_optional_when_formatting": true + + meta.country('RU'); + meta.numberingPlan.formats()[0].nationalPrefixIsMandatoryWhenFormattingInNationalFormat().should.equal(false); // "national_prefix": "0" + // "national_prefix_formatting_rule": "0 $1" + + meta.country('FR'); + meta.numberingPlan.formats()[0].nationalPrefixIsMandatoryWhenFormattingInNationalFormat().should.equal(true); + }); + it('should validate metadata', function () { + var thrower = function thrower() { + return validateMetadata(); + }; + + thrower.should["throw"]('`metadata` argument not passed'); + + thrower = function thrower() { + return validateMetadata(123); + }; + + thrower.should["throw"]('Got a number: 123.'); + + thrower = function thrower() { + return validateMetadata('abc'); + }; + + thrower.should["throw"]('Got a string: abc.'); + + thrower = function thrower() { + return validateMetadata({ + a: true, + b: 2 + }); + }; + + thrower.should["throw"]('Got an object of shape: { a, b }.'); + + thrower = function thrower() { + return validateMetadata({ + a: true, + countries: 2 + }); + }; + + thrower.should["throw"]('Got an object of shape: { a, countries }.'); + + thrower = function thrower() { + return validateMetadata({ + country_calling_codes: true, + countries: 2 + }); + }; + + thrower.should["throw"]('Got an object of shape'); + + thrower = function thrower() { + return validateMetadata({ + country_calling_codes: {}, + countries: 2 + }); + }; + + thrower.should["throw"]('Got an object of shape'); + validateMetadata({ + country_calling_codes: {}, + countries: {}, + b: 3 + }); + }); + it('should work around `nonGeographical` typo in metadata generated from `1.7.35` to `1.7.37`', function () { + var meta = new Metadata(metadataV4); + meta.selectNumberingPlan('888'); + type(meta.nonGeographic()).should.equal('object'); + }); + it('should work around `nonGeographic` metadata not existing before `1.7.35`', function () { + var meta = new Metadata(metadataV3); + type(meta.getNumberingPlanMetadata('800')).should.equal('object'); + type(meta.getNumberingPlanMetadata('000')).should.equal('undefined'); + }); + it('should work with metadata from version `1.1.11`', function () { + var meta = new Metadata(metadataV2); + meta.selectNumberingPlan('US'); + meta.numberingPlan.possibleLengths().should.deep.equal([10]); + meta.numberingPlan.formats().length.should.equal(1); + meta.numberingPlan.nationalPrefix().should.equal('1'); + meta.numberingPlan.nationalPrefixForParsing().should.equal('1'); + meta.numberingPlan.type('MOBILE').pattern().should.equal(''); + meta.selectNumberingPlan('AG'); + meta.numberingPlan.leadingDigits().should.equal('268'); // Should've been "268$1" but apparently there was a bug in metadata generator + // and no national prefix transform rules were written. + + expect(meta.numberingPlan.nationalPrefixTransformRule()).to.be["null"]; + meta.selectNumberingPlan('AF'); + meta.numberingPlan.formats()[0].nationalPrefixFormattingRule().should.equal('0$1'); + meta.selectNumberingPlan('RU'); + meta.numberingPlan.formats()[0].nationalPrefixIsOptionalWhenFormattingInNationalFormat().should.equal(true); + }); + it('should work with metadata from version `1.0.0`', function () { + var meta = new Metadata(metadataV1); + meta.selectNumberingPlan('US'); + meta.numberingPlan.formats().length.should.equal(1); + meta.numberingPlan.nationalPrefix().should.equal('1'); + meta.numberingPlan.nationalPrefixForParsing().should.equal('1'); + type(meta.numberingPlan.type('MOBILE')).should.equal('undefined'); + meta.selectNumberingPlan('AG'); + meta.numberingPlan.leadingDigits().should.equal('268'); // Should've been "268$1" but apparently there was a bug in metadata generator + // and no national prefix transform rules were written. + + expect(meta.numberingPlan.nationalPrefixTransformRule()).to.be["null"]; + meta.selectNumberingPlan('AF'); + meta.numberingPlan.formats()[0].nationalPrefixFormattingRule().should.equal('0$1'); + meta.selectNumberingPlan('RU'); + meta.numberingPlan.formats()[0].nationalPrefixIsOptionalWhenFormattingInNationalFormat().should.equal(true); + }); + it('should work around "ext" data not present in metadata from version `1.0.0`', function () { + var meta = new Metadata(metadataV1); + meta.selectNumberingPlan('GB'); + meta.ext().should.equal(' ext. '); + var metaNew = new Metadata(metadata); + metaNew.selectNumberingPlan('GB'); + metaNew.ext().should.equal(' x'); + }); + it('should work around "default IDD prefix" data not present in metadata from version `1.0.0`', function () { + var meta = new Metadata(metadataV1); + meta.selectNumberingPlan('AU'); + type(meta.defaultIDDPrefix()).should.equal('undefined'); + var metaNew = new Metadata(metadata); + metaNew.selectNumberingPlan('AU'); + metaNew.defaultIDDPrefix().should.equal('0011'); + }); +}); + +function type(something) { + return _typeof(something); +} +//# sourceMappingURL=metadata.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/metadata.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/metadata.test.js.map new file mode 100644 index 00000000..39857f58 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/metadata.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"metadata.test.js","names":["metadata","type","metadataV1","metadataV2","metadataV3","metadataV4","Metadata","validateMetadata","getExtPrefix","isSupportedCountry","describe","it","FR","country","should","equal","thrower","getNumberingPlanMetadata","nationalPrefixForParsing","chooseCountryByCountryCallingCode","meta","numberingPlan","formats","nationalPrefixIsMandatoryWhenFormattingInNationalFormat","a","b","countries","country_calling_codes","selectNumberingPlan","nonGeographic","possibleLengths","deep","length","nationalPrefix","pattern","leadingDigits","expect","nationalPrefixTransformRule","to","be","nationalPrefixFormattingRule","nationalPrefixIsOptionalWhenFormattingInNationalFormat","ext","metaNew","defaultIDDPrefix","something"],"sources":["../source/metadata.test.js"],"sourcesContent":["import metadata from '../metadata.min.json' assert { type: 'json' }\r\nimport metadataV1 from '../test/metadata/1.0.0/metadata.min.json' assert { type: 'json' }\r\nimport metadataV2 from '../test/metadata/1.1.11/metadata.min.json' assert { type: 'json' }\r\nimport metadataV3 from '../test/metadata/1.7.34/metadata.min.json' assert { type: 'json' }\r\nimport metadataV4 from '../test/metadata/1.7.37/metadata.min.json' assert { type: 'json' }\r\n\r\nimport Metadata, { validateMetadata, getExtPrefix, isSupportedCountry } from './metadata.js'\r\n\r\ndescribe('metadata', () => {\r\n\tit('should return undefined for non-defined types', () => {\r\n\t\tconst FR = new Metadata(metadata).country('FR')\r\n\t\ttype(FR.type('FIXED_LINE')).should.equal('undefined')\r\n\t})\r\n\r\n\tit('should validate country', () => {\r\n\t\tconst thrower = () => new Metadata(metadata).country('RUS')\r\n\t\tthrower.should.throw('Unknown country')\r\n\t})\r\n\r\n\tit('should tell if a country is supported', () => {\r\n\t\tisSupportedCountry('RU', metadata).should.equal(true)\r\n\t\tisSupportedCountry('XX', metadata).should.equal(false)\r\n\t})\r\n\r\n\tit('should return ext prefix for a country', () => {\r\n\t\tgetExtPrefix('US', metadata).should.equal(' ext. ')\r\n\t\tgetExtPrefix('CA', metadata).should.equal(' ext. ')\r\n\t\tgetExtPrefix('GB', metadata).should.equal(' x')\r\n\t\t// expect(getExtPrefix('XX', metadata)).to.equal(undefined)\r\n\t\tgetExtPrefix('XX', metadata).should.equal(' ext. ')\r\n\t})\r\n\r\n\tit('should cover non-occuring edge cases', () => {\r\n\t\tnew Metadata(metadata).getNumberingPlanMetadata('999')\r\n\t})\r\n\r\n\tit('should support deprecated methods', () => {\r\n\t\tnew Metadata(metadata).country('US').nationalPrefixForParsing().should.equal('1')\r\n\t\tnew Metadata(metadata).chooseCountryByCountryCallingCode('1').nationalPrefixForParsing().should.equal('1')\r\n\t})\r\n\r\n\tit('should tell if a national prefix is mandatory when formatting a national number', () => {\r\n\t\tconst meta = new Metadata(metadata)\r\n\t\t// No \"national_prefix_formatting_rule\".\r\n\t\t// \"national_prefix_is_optional_when_formatting\": true\r\n\t\tmeta.country('US')\r\n\t\tmeta.numberingPlan.formats()[0].nationalPrefixIsMandatoryWhenFormattingInNationalFormat().should.equal(false)\r\n\t\t// \"national_prefix_formatting_rule\": \"8 ($1)\"\r\n\t\t// \"national_prefix_is_optional_when_formatting\": true\r\n\t\tmeta.country('RU')\r\n\t\tmeta.numberingPlan.formats()[0].nationalPrefixIsMandatoryWhenFormattingInNationalFormat().should.equal(false)\r\n\t\t// \"national_prefix\": \"0\"\r\n\t\t// \"national_prefix_formatting_rule\": \"0 $1\"\r\n\t\tmeta.country('FR')\r\n\t\tmeta.numberingPlan.formats()[0].nationalPrefixIsMandatoryWhenFormattingInNationalFormat().should.equal(true)\r\n\t})\r\n\r\n\tit('should validate metadata', () => {\r\n\t\tlet thrower = () => validateMetadata()\r\n\t\tthrower.should.throw('`metadata` argument not passed')\r\n\r\n\t\tthrower = () => validateMetadata(123)\r\n\t\tthrower.should.throw('Got a number: 123.')\r\n\r\n\t\tthrower = () => validateMetadata('abc')\r\n\t\tthrower.should.throw('Got a string: abc.')\r\n\r\n\t\tthrower = () => validateMetadata({ a: true, b: 2 })\r\n\t\tthrower.should.throw('Got an object of shape: { a, b }.')\r\n\r\n\t\tthrower = () => validateMetadata({ a: true, countries: 2 })\r\n\t\tthrower.should.throw('Got an object of shape: { a, countries }.')\r\n\r\n\t\tthrower = () => validateMetadata({ country_calling_codes: true, countries: 2 })\r\n\t\tthrower.should.throw('Got an object of shape')\r\n\r\n\t\tthrower = () => validateMetadata({ country_calling_codes: {}, countries: 2 })\r\n\t\tthrower.should.throw('Got an object of shape')\r\n\r\n\t\tvalidateMetadata({ country_calling_codes: {}, countries: {}, b: 3 })\r\n\t})\r\n\r\n\tit('should work around `nonGeographical` typo in metadata generated from `1.7.35` to `1.7.37`', function() {\r\n\t\tconst meta = new Metadata(metadataV4)\r\n\t\tmeta.selectNumberingPlan('888')\r\n\t\ttype(meta.nonGeographic()).should.equal('object')\r\n\t})\r\n\r\n\tit('should work around `nonGeographic` metadata not existing before `1.7.35`', function() {\r\n\t\tconst meta = new Metadata(metadataV3)\r\n\t\ttype(meta.getNumberingPlanMetadata('800')).should.equal('object')\r\n\t\ttype(meta.getNumberingPlanMetadata('000')).should.equal('undefined')\r\n\t})\r\n\r\n\tit('should work with metadata from version `1.1.11`', function() {\r\n\t\tconst meta = new Metadata(metadataV2)\r\n\r\n\t\tmeta.selectNumberingPlan('US')\r\n\t\tmeta.numberingPlan.possibleLengths().should.deep.equal([10])\r\n\t\tmeta.numberingPlan.formats().length.should.equal(1)\r\n\t\tmeta.numberingPlan.nationalPrefix().should.equal('1')\r\n\t\tmeta.numberingPlan.nationalPrefixForParsing().should.equal('1')\r\n\t\tmeta.numberingPlan.type('MOBILE').pattern().should.equal('')\r\n\r\n\t\tmeta.selectNumberingPlan('AG')\r\n\t\tmeta.numberingPlan.leadingDigits().should.equal('268')\r\n\t\t// Should've been \"268$1\" but apparently there was a bug in metadata generator\r\n\t\t// and no national prefix transform rules were written.\r\n\t\texpect(meta.numberingPlan.nationalPrefixTransformRule()).to.be.null\r\n\r\n\t\tmeta.selectNumberingPlan('AF')\r\n\t\tmeta.numberingPlan.formats()[0].nationalPrefixFormattingRule().should.equal('0$1')\r\n\r\n\t\tmeta.selectNumberingPlan('RU')\r\n\t\tmeta.numberingPlan.formats()[0].nationalPrefixIsOptionalWhenFormattingInNationalFormat().should.equal(true)\r\n\t})\r\n\r\n\tit('should work with metadata from version `1.0.0`', function() {\r\n\t\tconst meta = new Metadata(metadataV1)\r\n\r\n\t\tmeta.selectNumberingPlan('US')\r\n\t\tmeta.numberingPlan.formats().length.should.equal(1)\r\n\t\tmeta.numberingPlan.nationalPrefix().should.equal('1')\r\n\t\tmeta.numberingPlan.nationalPrefixForParsing().should.equal('1')\r\n\t\ttype(meta.numberingPlan.type('MOBILE')).should.equal('undefined')\r\n\r\n\t\tmeta.selectNumberingPlan('AG')\r\n\t\tmeta.numberingPlan.leadingDigits().should.equal('268')\r\n\t\t// Should've been \"268$1\" but apparently there was a bug in metadata generator\r\n\t\t// and no national prefix transform rules were written.\r\n\t\texpect(meta.numberingPlan.nationalPrefixTransformRule()).to.be.null\r\n\r\n\t\tmeta.selectNumberingPlan('AF')\r\n\t\tmeta.numberingPlan.formats()[0].nationalPrefixFormattingRule().should.equal('0$1')\r\n\r\n\t\tmeta.selectNumberingPlan('RU')\r\n\t\tmeta.numberingPlan.formats()[0].nationalPrefixIsOptionalWhenFormattingInNationalFormat().should.equal(true)\r\n\t})\r\n\r\n\tit('should work around \"ext\" data not present in metadata from version `1.0.0`', function() {\r\n\t\tconst meta = new Metadata(metadataV1)\r\n\t\tmeta.selectNumberingPlan('GB')\r\n\t\tmeta.ext().should.equal(' ext. ')\r\n\r\n\t\tconst metaNew = new Metadata(metadata)\r\n\t\tmetaNew.selectNumberingPlan('GB')\r\n\t\tmetaNew.ext().should.equal(' x')\r\n\t})\r\n\r\n\tit('should work around \"default IDD prefix\" data not present in metadata from version `1.0.0`', function() {\r\n\t\tconst meta = new Metadata(metadataV1)\r\n\t\tmeta.selectNumberingPlan('AU')\r\n\t\ttype(meta.defaultIDDPrefix()).should.equal('undefined')\r\n\r\n\t\tconst metaNew = new Metadata(metadata)\r\n\t\tmetaNew.selectNumberingPlan('AU')\r\n\t\tmetaNew.defaultIDDPrefix().should.equal('0011')\r\n\t})\r\n})\r\n\r\nfunction type(something) {\r\n\treturn typeof something\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parse.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parse.js new file mode 100644 index 00000000..64029019 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parse.js @@ -0,0 +1,37 @@ +import _parseNumber from './parse_.js'; +import { normalizeArguments } from './parsePhoneNumber.js'; // `options`: +// { +// country: +// { +// restrict - (a two-letter country code) +// the phone number must be in this country +// +// default - (a two-letter country code) +// default country to use for phone number parsing and validation +// (if no country code could be derived from the phone number) +// } +// } +// +// Returns `{ country, number }` +// +// Example use cases: +// +// ```js +// parse('8 (800) 555-35-35', 'RU') +// parse('8 (800) 555-35-35', 'RU', metadata) +// parse('8 (800) 555-35-35', { country: { default: 'RU' } }) +// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata) +// parse('+7 800 555 35 35') +// parse('+7 800 555 35 35', metadata) +// ``` +// + +export default function parseNumber() { + var _normalizeArguments = normalizeArguments(arguments), + text = _normalizeArguments.text, + options = _normalizeArguments.options, + metadata = _normalizeArguments.metadata; + + return _parseNumber(text, options, metadata); +} +//# sourceMappingURL=parse.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parse.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parse.js.map new file mode 100644 index 00000000..39b0eec1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parse.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parse.js","names":["_parseNumber","normalizeArguments","parseNumber","arguments","text","options","metadata"],"sources":["../source/parse.js"],"sourcesContent":["import _parseNumber from './parse_.js'\r\nimport { normalizeArguments } from './parsePhoneNumber.js'\r\n\r\n// `options`:\r\n// {\r\n// country:\r\n// {\r\n// restrict - (a two-letter country code)\r\n// the phone number must be in this country\r\n//\r\n// default - (a two-letter country code)\r\n// default country to use for phone number parsing and validation\r\n// (if no country code could be derived from the phone number)\r\n// }\r\n// }\r\n//\r\n// Returns `{ country, number }`\r\n//\r\n// Example use cases:\r\n//\r\n// ```js\r\n// parse('8 (800) 555-35-35', 'RU')\r\n// parse('8 (800) 555-35-35', 'RU', metadata)\r\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } })\r\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata)\r\n// parse('+7 800 555 35 35')\r\n// parse('+7 800 555 35 35', metadata)\r\n// ```\r\n//\r\nexport default function parseNumber()\r\n{\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\treturn _parseNumber(text, options, metadata)\r\n}"],"mappings":"AAAA,OAAOA,YAAP,MAAyB,aAAzB;AACA,SAASC,kBAAT,QAAmC,uBAAnC,C,CAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,WAAT,GACf;EACC,0BAAoCD,kBAAkB,CAACE,SAAD,CAAtD;EAAA,IAAQC,IAAR,uBAAQA,IAAR;EAAA,IAAcC,OAAd,uBAAcA,OAAd;EAAA,IAAuBC,QAAvB,uBAAuBA,QAAvB;;EACA,OAAON,YAAY,CAACI,IAAD,EAAOC,OAAP,EAAgBC,QAAhB,CAAnB;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parse.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parse.test.js new file mode 100644 index 00000000..a4138366 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parse.test.js @@ -0,0 +1,562 @@ +import metadata from '../metadata.min.json' assert { type: 'json' }; +import _parseNumber from './parse.js'; +import Metadata from './metadata.js'; + +function parseNumber() { + for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) { + parameters[_key] = arguments[_key]; + } + + parameters.push(metadata); + return _parseNumber.apply(this, parameters); +} + +var USE_NON_GEOGRAPHIC_COUNTRY_CODE = false; +describe('parse', function () { + it('should not parse invalid phone numbers', function () { + // Too short. + parseNumber('+7 (800) 55-35-35').should.deep.equal({}); // Too long. + + parseNumber('+7 (800) 55-35-35-55').should.deep.equal({}); + parseNumber('+7 (800) 55-35-35', 'US').should.deep.equal({}); + parseNumber('(800) 55 35 35', { + defaultCountry: 'RU' + }).should.deep.equal({}); + parseNumber('+1 187 215 5230', 'US').should.deep.equal({}); + parseNumber('911231231', 'BE').should.deep.equal({}); + }); + it('should parse valid phone numbers', function () { + // Instant loans + // https://www.youtube.com/watch?v=6e1pMrYH5jI + // + // Restrict to RU + parseNumber('Phone: 8 (800) 555 35 35.', 'RU').should.deep.equal({ + country: 'RU', + phone: '8005553535' + }); // International format + + parseNumber('Phone: +7 (800) 555-35-35.').should.deep.equal({ + country: 'RU', + phone: '8005553535' + }); // // Restrict to US, but not a US country phone code supplied + // parseNumber('+7 (800) 555-35-35', 'US').should.deep.equal({}) + // Restrict to RU + + parseNumber('(800) 555 35 35', 'RU').should.deep.equal({ + country: 'RU', + phone: '8005553535' + }); // Default to RU + + parseNumber('8 (800) 555 35 35', { + defaultCountry: 'RU' + }).should.deep.equal({ + country: 'RU', + phone: '8005553535' + }); // Gangster partyline + + parseNumber('+1-213-373-4253').should.deep.equal({ + country: 'US', + phone: '2133734253' + }); // Switzerland (just in case) + + parseNumber('044 668 18 00', 'CH').should.deep.equal({ + country: 'CH', + phone: '446681800' + }); // China, Beijing + + parseNumber('010-852644821', 'CN').should.deep.equal({ + country: 'CN', + phone: '10852644821' + }); // France + + parseNumber('+33169454850').should.deep.equal({ + country: 'FR', + phone: '169454850' + }); // UK (Jersey) + + parseNumber('+44 7700 300000').should.deep.equal({ + country: 'JE', + phone: '7700300000' + }); // KZ + + parseNumber('+7 702 211 1111').should.deep.equal({ + country: 'KZ', + phone: '7022111111' + }); // Brazil + + parseNumber('11987654321', 'BR').should.deep.equal({ + country: 'BR', + phone: '11987654321' + }); // Long country phone code. + + parseNumber('+212659777777').should.deep.equal({ + country: 'MA', + phone: '659777777' + }); // No country could be derived. + // parseNumber('+212569887076').should.deep.equal({ countryPhoneCode: '212', phone: '569887076' }) + // GB. Moible numbers starting 07624* are Isle of Man. + + parseNumber('07624369230', 'GB').should.deep.equal({ + country: 'IM', + phone: '7624369230' + }); + }); + it('should parse possible numbers', function () { + // Invalid phone number for a given country. + parseNumber('1112223344', 'RU', { + extended: true + }).should.deep.equal({ + country: 'RU', + countryCallingCode: '7', + phone: '1112223344', + carrierCode: undefined, + ext: undefined, + valid: false, + possible: true + }); // International phone number. + // Several countries with the same country phone code. + + parseNumber('+71112223344').should.deep.equal({}); + parseNumber('+71112223344', { + extended: true + }).should.deep.equal({ + country: undefined, + countryCallingCode: '7', + phone: '1112223344', + carrierCode: undefined, + ext: undefined, + valid: false, + possible: true + }); // International phone number. + // Single country with the given country phone code. + + parseNumber('+33011222333', { + extended: true + }).should.deep.equal({ + country: 'FR', + countryCallingCode: '33', + phone: '011222333', + carrierCode: undefined, + ext: undefined, + valid: false, + possible: true + }); // Too short. + // Won't strip national prefix `8` because otherwise the number would be too short. + + parseNumber('+7 (800) 55-35-35', { + extended: true + }).should.deep.equal({ + country: 'RU', + countryCallingCode: '7', + phone: '800553535', + carrierCode: undefined, + ext: undefined, + valid: false, + possible: false + }); // Too long. + + parseNumber('+1 213 37342530', { + extended: true + }).should.deep.equal({ + country: undefined, + countryCallingCode: '1', + phone: '21337342530', + carrierCode: undefined, + ext: undefined, + valid: false, + possible: false + }); // No national number to be parsed. + + parseNumber('+996', { + extended: true + }).should.deep.equal({// countryCallingCode : '996' + }); // Valid number. + + parseNumber('+78005553535', { + extended: true + }).should.deep.equal({ + country: 'RU', + countryCallingCode: '7', + phone: '8005553535', + carrierCode: undefined, + ext: undefined, + valid: true, + possible: true + }); // https://github.com/catamphetamine/libphonenumber-js/issues/211 + + parseNumber('+966', { + extended: true + }).should.deep.equal({}); + parseNumber('+9664', { + extended: true + }).should.deep.equal({}); + parseNumber('+96645', { + extended: true + }).should.deep.equal({ + carrierCode: undefined, + phone: '45', + ext: undefined, + country: 'SA', + countryCallingCode: '966', + possible: false, + valid: false + }); + }); + it('should parse non-European digits', function () { + parseNumber('+١٢١٢٢٣٢٣٢٣٢').should.deep.equal({ + country: 'US', + phone: '2122323232' + }); + }); + it('should work in edge cases', function () { + var thrower; // No input + + parseNumber('').should.deep.equal({}); // No country phone code + + parseNumber('+').should.deep.equal({}); // No country at all (non international number and no explicit country code) + + parseNumber('123').should.deep.equal({}); // No country metadata for this `require` country code + + thrower = function thrower() { + return parseNumber('123', 'ZZ'); + }; + + thrower.should["throw"]('Unknown country'); // No country metadata for this `default` country code + + thrower = function thrower() { + return parseNumber('123', { + defaultCountry: 'ZZ' + }); + }; + + thrower.should["throw"]('Unknown country'); // Invalid country phone code + + parseNumber('+210').should.deep.equal({}); // Invalid country phone code (extended parsing mode) + + parseNumber('+210', { + extended: true + }).should.deep.equal({}); // Too short of a number. + + parseNumber('1', 'US', { + extended: true + }).should.deep.equal({}); // Too long of a number. + + parseNumber('1111111111111111111', 'RU', { + extended: true + }).should.deep.equal({}); // Not a number. + + parseNumber('abcdefg', 'US', { + extended: true + }).should.deep.equal({}); // Country phone code beginning with a '0' + + parseNumber('+0123').should.deep.equal({}); // Barbados NANPA phone number + + parseNumber('+12460000000').should.deep.equal({ + country: 'BB', + phone: '2460000000' + }); // // A case when country (restricted to) is not equal + // // to the one parsed out of an international number. + // parseNumber('+1-213-373-4253', 'RU').should.deep.equal({}) + // National (significant) number too short + + parseNumber('2', 'US').should.deep.equal({}); // National (significant) number too long + + parseNumber('222222222222222222', 'US').should.deep.equal({}); // No `national_prefix_for_parsing` + + parseNumber('41111', 'AC').should.deep.equal({ + country: 'AC', + phone: '41111' + }); // https://github.com/catamphetamine/libphonenumber-js/issues/235 + // `matchesEntirely()` bug fix. + + parseNumber('+4915784846111‬').should.deep.equal({ + country: 'DE', + phone: '15784846111' + }); // No metadata + + thrower = function thrower() { + return _parseNumber(''); + }; + + thrower.should["throw"]('`metadata` argument not passed'); // Numerical `value` + + thrower = function thrower() { + return parseNumber(2141111111, 'US'); + }; + + thrower.should["throw"]('A text for parsing must be a string.'); // Input string too long. + + parseNumber('8005553535 ', 'RU').should.deep.equal({}); + }); + it('should parse phone number extensions', function () { + // "ext" + parseNumber('2134567890 ext 123', 'US').should.deep.equal({ + country: 'US', + phone: '2134567890', + ext: '123' + }); // "ext." + + parseNumber('+12134567890 ext. 12345', 'US').should.deep.equal({ + country: 'US', + phone: '2134567890', + ext: '12345' + }); // "доб." + + parseNumber('+78005553535 доб. 1234', 'RU').should.deep.equal({ + country: 'RU', + phone: '8005553535', + ext: '1234' + }); // "#" + + parseNumber('+12134567890#1234').should.deep.equal({ + country: 'US', + phone: '2134567890', + ext: '1234' + }); // "x" + + parseNumber('+78005553535 x1234').should.deep.equal({ + country: 'RU', + phone: '8005553535', + ext: '1234' + }); // Not a valid extension + + parseNumber('2134567890 ext. abc', 'US').should.deep.equal({ + country: 'US', + phone: '2134567890' + }); + }); + it('should parse RFC 3966 phone numbers', function () { + parseNumber('tel:+78005553535;ext=123').should.deep.equal({ + country: 'RU', + phone: '8005553535', + ext: '123' + }); // Should parse "visual separators". + + parseNumber('tel:+7(800)555-35.35;ext=123').should.deep.equal({ + country: 'RU', + phone: '8005553535', + ext: '123' + }); // Invalid number. + + parseNumber('tel:+7x8005553535;ext=123').should.deep.equal({}); + }); + it('should parse invalid international numbers even if they are invalid', function () { + parseNumber('+7(8)8005553535', 'RU').should.deep.equal({ + country: 'RU', + phone: '8005553535' + }); + }); + it('should parse carrier codes', function () { + parseNumber('0 15 21 5555-5555', 'BR', { + extended: true + }).should.deep.equal({ + country: 'BR', + countryCallingCode: '55', + phone: '2155555555', + carrierCode: '15', + ext: undefined, + valid: true, + possible: true + }); + }); + it('should parse IDD prefixes', function () { + parseNumber('011 61 2 3456 7890', 'US').should.deep.equal({ + phone: '234567890', + country: 'AU' + }); + parseNumber('011 61 2 3456 7890', 'FR').should.deep.equal({}); + parseNumber('00 61 2 3456 7890', 'US').should.deep.equal({}); + parseNumber('810 61 2 3456 7890', 'RU').should.deep.equal({ + phone: '234567890', + country: 'AU' + }); + }); + it('should work with v2 API', function () { + parseNumber('+99989160151539'); + }); + it('should work with Argentina numbers', function () { + // The same mobile number is written differently + // in different formats in Argentina: + // `9` gets prepended in international format. + parseNumber('+54 9 3435 55 1212').should.deep.equal({ + country: 'AR', + phone: '93435551212' + }); + parseNumber('0343 15-555-1212', 'AR').should.deep.equal({ + country: 'AR', + phone: '93435551212' + }); + }); + it('should work with Mexico numbers', function () { + // Fixed line. + parseNumber('+52 449 978 0001').should.deep.equal({ + country: 'MX', + phone: '4499780001' + }); + parseNumber('01 (449)978-0001', 'MX').should.deep.equal({ + country: 'MX', + phone: '4499780001' + }); + parseNumber('(449)978-0001', 'MX').should.deep.equal({ + country: 'MX', + phone: '4499780001' + }); // Mobile. + // `1` is prepended before area code to mobile numbers in international format. + + parseNumber('+52 1 33 1234-5678', 'MX').should.deep.equal({ + country: 'MX', + phone: '3312345678' + }); + parseNumber('+52 33 1234-5678', 'MX').should.deep.equal({ + country: 'MX', + phone: '3312345678' + }); + parseNumber('044 (33) 1234-5678', 'MX').should.deep.equal({ + country: 'MX', + phone: '3312345678' + }); + parseNumber('045 33 1234-5678', 'MX').should.deep.equal({ + country: 'MX', + phone: '3312345678' + }); + }); + it('should parse non-geographic numbering plan phone numbers', function () { + parseNumber('+870773111632').should.deep.equal(USE_NON_GEOGRAPHIC_COUNTRY_CODE ? { + country: '001', + phone: '773111632' + } : {}); + }); + it('should parse non-geographic numbering plan phone numbers (default country code)', function () { + parseNumber('773111632', { + defaultCallingCode: '870' + }).should.deep.equal(USE_NON_GEOGRAPHIC_COUNTRY_CODE ? { + country: '001', + phone: '773111632' + } : {}); + }); + it('should parse non-geographic numbering plan phone numbers (extended)', function () { + parseNumber('+870773111632', { + extended: true + }).should.deep.equal({ + country: USE_NON_GEOGRAPHIC_COUNTRY_CODE ? '001' : undefined, + countryCallingCode: '870', + phone: '773111632', + carrierCode: undefined, + ext: undefined, + possible: true, + valid: true + }); + }); + it('should parse non-geographic numbering plan phone numbers (default country code) (extended)', function () { + parseNumber('773111632', { + defaultCallingCode: '870', + extended: true + }).should.deep.equal({ + country: USE_NON_GEOGRAPHIC_COUNTRY_CODE ? '001' : undefined, + countryCallingCode: '870', + phone: '773111632', + carrierCode: undefined, + ext: undefined, + possible: true, + valid: true + }); + }); + it('shouldn\'t crash when invalid `defaultCallingCode` is passed', function () { + expect(function () { + return parseNumber('773111632', { + defaultCallingCode: '999' + }); + }).to["throw"]('Unknown calling code'); + }); + it('shouldn\'t set `country` when there\'s no `defaultCountry` and `defaultCallingCode` is not of a "non-geographic entity"', function () { + parseNumber('88005553535', { + defaultCallingCode: '7' + }).should.deep.equal({ + country: 'RU', + phone: '8005553535' + }); + }); + it('should correctly parse numbers starting with the same digit as the national prefix', function () { + // https://github.com/catamphetamine/libphonenumber-js/issues/373 + // `BY`'s `national_prefix` is `8`. + parseNumber('+37582004910060').should.deep.equal({ + country: 'BY', + phone: '82004910060' + }); + }); + it('should autocorrect numbers without a leading +', function () { + // https://github.com/catamphetamine/libphonenumber-js/issues/376 + parseNumber('375447521111', 'BY').should.deep.equal({ + country: 'BY', + phone: '447521111' + }); // https://github.com/catamphetamine/libphonenumber-js/issues/316 + + parseNumber('33612902554', 'FR').should.deep.equal({ + country: 'FR', + phone: '612902554' + }); // https://github.com/catamphetamine/libphonenumber-js/issues/375 + + parseNumber('61438331999', 'AU').should.deep.equal({ + country: 'AU', + phone: '438331999' + }); // A case when `49` is a country calling code of a number without a leading `+`. + + parseNumber('4930123456', 'DE').should.deep.equal({ + country: 'DE', + phone: '30123456' + }); // A case when `49` is a valid area code. + + parseNumber('4951234567890', 'DE').should.deep.equal({ + country: 'DE', + phone: '4951234567890' + }); + }); + it('should parse extensions (long extensions with explicitl abels)', function () { + // Test lower and upper limits of extension lengths for each type of label. + // Firstly, when in RFC format: PhoneNumberUtil.extLimitAfterExplicitLabel + parseNumber('33316005 ext 0', 'NZ').ext.should.equal('0'); + parseNumber('33316005 ext 01234567890123456789', 'NZ').ext.should.equal('01234567890123456789'); // Extension too long. + + expect(parseNumber('33316005 ext 012345678901234567890', 'NZ').ext).to.be.undefined; // Explicit extension label. + + parseNumber('03 3316005ext:1', 'NZ').ext.should.equal('1'); + parseNumber('03 3316005 xtn:12345678901234567890', 'NZ').ext.should.equal('12345678901234567890'); + parseNumber('03 3316005 extension\t12345678901234567890', 'NZ').ext.should.equal('12345678901234567890'); + parseNumber('03 3316005 xtensio:12345678901234567890', 'NZ').ext.should.equal('12345678901234567890'); + parseNumber('03 3316005 xtensión, 12345678901234567890#', 'NZ').ext.should.equal('12345678901234567890'); + parseNumber('03 3316005extension.12345678901234567890', 'NZ').ext.should.equal('12345678901234567890'); + parseNumber('03 3316005 доб:12345678901234567890', 'NZ').ext.should.equal('12345678901234567890'); // Extension too long. + + expect(parseNumber('03 3316005 extension 123456789012345678901', 'NZ').ext).to.be.undefined; + }); + it('should parse extensions (long extensions with auto dialling labels)', function () { + parseNumber('+12679000000,,123456789012345#').ext.should.equal('123456789012345'); + parseNumber('+12679000000;123456789012345#').ext.should.equal('123456789012345'); + parseNumber('+442034000000,,123456789#').ext.should.equal('123456789'); // Extension too long. + + expect(parseNumber('+12679000000,,1234567890123456#').ext).to.be.undefined; + }); + it('should parse extensions (short extensions with ambiguous characters)', function () { + parseNumber('03 3316005 x 123456789', 'NZ').ext.should.equal('123456789'); + parseNumber('03 3316005 x. 123456789', 'NZ').ext.should.equal('123456789'); + parseNumber('03 3316005 #123456789#', 'NZ').ext.should.equal('123456789'); + parseNumber('03 3316005 ~ 123456789', 'NZ').ext.should.equal('123456789'); // Extension too long. + + expect(parseNumber('03 3316005 ~ 1234567890', 'NZ').ext).to.be.undefined; + }); + it('should parse extensions (short extensions when not sure of label)', function () { + parseNumber('+1123-456-7890 666666#', { + v2: true + }).ext.should.equal('666666'); + parseNumber('+11234567890-6#', { + v2: true + }).ext.should.equal('6'); // Extension too long. + + expect(function () { + return parseNumber('+1123-456-7890 7777777#', { + v2: true + }); + }).to["throw"]('NOT_A_NUMBER'); + }); +}); +//# sourceMappingURL=parse.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parse.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parse.test.js.map new file mode 100644 index 00000000..8e668bf1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parse.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parse.test.js","names":["metadata","type","_parseNumber","Metadata","parseNumber","parameters","push","apply","USE_NON_GEOGRAPHIC_COUNTRY_CODE","describe","it","should","deep","equal","defaultCountry","country","phone","extended","countryCallingCode","carrierCode","undefined","ext","valid","possible","thrower","defaultCallingCode","expect","to","be","v2"],"sources":["../source/parse.test.js"],"sourcesContent":["import metadata from '../metadata.min.json' assert { type: 'json' }\r\nimport _parseNumber from './parse.js'\r\nimport Metadata from './metadata.js'\r\n\r\nfunction parseNumber(...parameters) {\r\n\tparameters.push(metadata)\r\n\treturn _parseNumber.apply(this, parameters)\r\n}\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\ndescribe('parse', () => {\r\n\tit('should not parse invalid phone numbers', () => {\r\n\t\t// Too short.\r\n\t\tparseNumber('+7 (800) 55-35-35').should.deep.equal({})\r\n\t\t// Too long.\r\n\t\tparseNumber('+7 (800) 55-35-35-55').should.deep.equal({})\r\n\r\n\t\tparseNumber('+7 (800) 55-35-35', 'US').should.deep.equal({})\r\n\t\tparseNumber('(800) 55 35 35', { defaultCountry: 'RU' }).should.deep.equal({})\r\n\t\tparseNumber('+1 187 215 5230', 'US').should.deep.equal({})\r\n\r\n\t\tparseNumber('911231231', 'BE').should.deep.equal({})\r\n\t})\r\n\r\n\tit('should parse valid phone numbers', () => {\r\n\t\t// Instant loans\r\n\t\t// https://www.youtube.com/watch?v=6e1pMrYH5jI\r\n\t\t//\r\n\t\t// Restrict to RU\r\n\t\tparseNumber('Phone: 8 (800) 555 35 35.', 'RU').should.deep.equal({ country: 'RU', phone: '8005553535' })\r\n\t\t// International format\r\n\t\tparseNumber('Phone: +7 (800) 555-35-35.').should.deep.equal({ country: 'RU', phone: '8005553535' })\r\n\t\t// // Restrict to US, but not a US country phone code supplied\r\n\t\t// parseNumber('+7 (800) 555-35-35', 'US').should.deep.equal({})\r\n\t\t// Restrict to RU\r\n\t\tparseNumber('(800) 555 35 35', 'RU').should.deep.equal({ country: 'RU', phone: '8005553535' })\r\n\t\t// Default to RU\r\n\t\tparseNumber('8 (800) 555 35 35', { defaultCountry: 'RU' }).should.deep.equal({ country: 'RU', phone: '8005553535' })\r\n\r\n\t\t// Gangster partyline\r\n\t\tparseNumber('+1-213-373-4253').should.deep.equal({ country: 'US', phone: '2133734253' })\r\n\r\n\t\t// Switzerland (just in case)\r\n\t\tparseNumber('044 668 18 00', 'CH').should.deep.equal({ country: 'CH', phone: '446681800' })\r\n\r\n\t\t// China, Beijing\r\n\t\tparseNumber('010-852644821', 'CN').should.deep.equal({ country: 'CN', phone: '10852644821' })\r\n\r\n\t\t// France\r\n\t\tparseNumber('+33169454850').should.deep.equal({ country: 'FR', phone: '169454850' })\r\n\r\n\t\t// UK (Jersey)\r\n\t\tparseNumber('+44 7700 300000').should.deep.equal({ country: 'JE', phone: '7700300000' })\r\n\r\n\t\t// KZ\r\n\t\tparseNumber('+7 702 211 1111').should.deep.equal({ country: 'KZ', phone: '7022111111' })\r\n\r\n\t\t// Brazil\r\n\t\tparseNumber('11987654321', 'BR').should.deep.equal({ country: 'BR', phone: '11987654321' })\r\n\r\n\t\t// Long country phone code.\r\n\t\tparseNumber('+212659777777').should.deep.equal({ country: 'MA', phone: '659777777' })\r\n\r\n\t\t// No country could be derived.\r\n\t\t// parseNumber('+212569887076').should.deep.equal({ countryPhoneCode: '212', phone: '569887076' })\r\n\r\n\t\t// GB. Moible numbers starting 07624* are Isle of Man.\r\n\t\tparseNumber('07624369230', 'GB').should.deep.equal({ country: 'IM', phone: '7624369230' })\r\n\t})\r\n\r\n\tit('should parse possible numbers', () => {\r\n\t\t// Invalid phone number for a given country.\r\n\t\tparseNumber('1112223344', 'RU', { extended: true }).should.deep.equal({\r\n\t\t\tcountry : 'RU',\r\n\t\t\tcountryCallingCode : '7',\r\n\t\t\tphone : '1112223344',\r\n\t\t\tcarrierCode : undefined,\r\n\t\t\text : undefined,\r\n\t\t\tvalid : false,\r\n\t\t\tpossible : true\r\n\t\t})\r\n\r\n\t\t// International phone number.\r\n\t\t// Several countries with the same country phone code.\r\n\t\tparseNumber('+71112223344').should.deep.equal({})\r\n\t\tparseNumber('+71112223344', { extended: true }).should.deep.equal({\r\n\t\t\tcountry : undefined,\r\n\t\t\tcountryCallingCode : '7',\r\n\t\t\tphone : '1112223344',\r\n\t\t\tcarrierCode : undefined,\r\n\t\t\text : undefined,\r\n\t\t\tvalid : false,\r\n\t\t\tpossible : true\r\n\t\t})\r\n\r\n\t\t// International phone number.\r\n\t\t// Single country with the given country phone code.\r\n\t\tparseNumber('+33011222333', { extended: true }).should.deep.equal({\r\n\t\t\tcountry : 'FR',\r\n\t\t\tcountryCallingCode : '33',\r\n\t\t\tphone : '011222333',\r\n\t\t\tcarrierCode : undefined,\r\n\t\t\text : undefined,\r\n\t\t\tvalid : false,\r\n\t\t\tpossible : true\r\n\t\t})\r\n\r\n\t\t// Too short.\r\n\t\t// Won't strip national prefix `8` because otherwise the number would be too short.\r\n\t\tparseNumber('+7 (800) 55-35-35', { extended: true }).should.deep.equal({\r\n\t\t\tcountry : 'RU',\r\n\t\t\tcountryCallingCode : '7',\r\n\t\t\tphone : '800553535',\r\n\t\t\tcarrierCode : undefined,\r\n\t\t\text : undefined,\r\n\t\t\tvalid : false,\r\n\t\t\tpossible : false\r\n\t\t})\r\n\r\n\t\t// Too long.\r\n\t\tparseNumber('+1 213 37342530', { extended: true }).should.deep.equal({\r\n\t\t\tcountry : undefined,\r\n\t\t\tcountryCallingCode : '1',\r\n\t\t\tphone : '21337342530',\r\n\t\t\tcarrierCode : undefined,\r\n\t\t\text : undefined,\r\n\t\t\tvalid : false,\r\n\t\t\tpossible : false\r\n\t\t})\r\n\r\n\t\t// No national number to be parsed.\r\n\t\tparseNumber('+996', { extended: true }).should.deep.equal({\r\n\t\t\t// countryCallingCode : '996'\r\n\t\t})\r\n\r\n\t\t// Valid number.\r\n\t\tparseNumber('+78005553535', { extended: true }).should.deep.equal({\r\n\t\t\tcountry : 'RU',\r\n\t\t\tcountryCallingCode : '7',\r\n\t\t\tphone : '8005553535',\r\n\t\t\tcarrierCode : undefined,\r\n\t\t\text : undefined,\r\n\t\t\tvalid : true,\r\n\t\t\tpossible : true\r\n\t\t})\r\n\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/211\r\n\t\tparseNumber('+966', { extended: true }).should.deep.equal({})\r\n\t\tparseNumber('+9664', { extended: true }).should.deep.equal({})\r\n\t\tparseNumber('+96645', { extended: true }).should.deep.equal({\r\n\t\t\tcarrierCode : undefined,\r\n\t\t\tphone : '45',\r\n\t\t\text : undefined,\r\n\t\t\tcountry : 'SA',\r\n\t\t\tcountryCallingCode : '966',\r\n\t\t\tpossible : false,\r\n\t\t\tvalid : false\r\n\t\t})\r\n\t})\r\n\r\n\tit('should parse non-European digits', () => {\r\n\t\tparseNumber('+١٢١٢٢٣٢٣٢٣٢').should.deep.equal({ country: 'US', phone: '2122323232' })\r\n\t})\r\n\r\n\tit('should work in edge cases', () => {\r\n\t\tlet thrower\r\n\r\n\t\t// No input\r\n\t\tparseNumber('').should.deep.equal({})\r\n\r\n\t\t// No country phone code\r\n\t\tparseNumber('+').should.deep.equal({})\r\n\r\n\t\t// No country at all (non international number and no explicit country code)\r\n\t\tparseNumber('123').should.deep.equal({})\r\n\r\n\t\t// No country metadata for this `require` country code\r\n\t\tthrower = () => parseNumber('123', 'ZZ')\r\n\t\tthrower.should.throw('Unknown country')\r\n\r\n\t\t// No country metadata for this `default` country code\r\n\t\tthrower = () => parseNumber('123', { defaultCountry: 'ZZ' })\r\n\t\tthrower.should.throw('Unknown country')\r\n\r\n\t\t// Invalid country phone code\r\n\t\tparseNumber('+210').should.deep.equal({})\r\n\r\n\t\t// Invalid country phone code (extended parsing mode)\r\n\t\tparseNumber('+210', { extended: true }).should.deep.equal({})\r\n\r\n\t\t// Too short of a number.\r\n\t\tparseNumber('1', 'US', { extended: true }).should.deep.equal({})\r\n\r\n\t\t// Too long of a number.\r\n\t\tparseNumber('1111111111111111111', 'RU', { extended: true }).should.deep.equal({})\r\n\r\n\t\t// Not a number.\r\n\t\tparseNumber('abcdefg', 'US', { extended: true }).should.deep.equal({})\r\n\r\n\t\t// Country phone code beginning with a '0'\r\n\t\tparseNumber('+0123').should.deep.equal({})\r\n\r\n\t\t// Barbados NANPA phone number\r\n\t\tparseNumber('+12460000000').should.deep.equal({ country: 'BB', phone: '2460000000' })\r\n\r\n\t\t// // A case when country (restricted to) is not equal\r\n\t\t// // to the one parsed out of an international number.\r\n\t\t// parseNumber('+1-213-373-4253', 'RU').should.deep.equal({})\r\n\r\n\t\t// National (significant) number too short\r\n\t\tparseNumber('2', 'US').should.deep.equal({})\r\n\r\n\t\t// National (significant) number too long\r\n\t\tparseNumber('222222222222222222', 'US').should.deep.equal({})\r\n\r\n\t\t// No `national_prefix_for_parsing`\r\n\t\tparseNumber('41111', 'AC').should.deep.equal({ country: 'AC', phone: '41111'})\r\n\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/235\r\n\t\t// `matchesEntirely()` bug fix.\r\n\t\tparseNumber('+4915784846111‬').should.deep.equal({ country: 'DE', phone: '15784846111' })\r\n\r\n\t\t// No metadata\r\n\t\tthrower = () => _parseNumber('')\r\n\t\tthrower.should.throw('`metadata` argument not passed')\r\n\r\n\t\t// Numerical `value`\r\n\t\tthrower = () => parseNumber(2141111111, 'US')\r\n\t\tthrower.should.throw('A text for parsing must be a string.')\r\n\r\n\t\t// Input string too long.\r\n\t\tparseNumber('8005553535 ', 'RU').should.deep.equal({})\r\n\t})\r\n\r\n\tit('should parse phone number extensions', () => {\r\n\t\t// \"ext\"\r\n\t\tparseNumber('2134567890 ext 123', 'US').should.deep.equal({\r\n\t\t\tcountry : 'US',\r\n\t\t\tphone : '2134567890',\r\n\t\t\text : '123'\r\n\t\t})\r\n\r\n\t\t// \"ext.\"\r\n\t\tparseNumber('+12134567890 ext. 12345', 'US').should.deep.equal({\r\n\t\t\tcountry : 'US',\r\n\t\t\tphone : '2134567890',\r\n\t\t\text : '12345'\r\n\t\t})\r\n\r\n\t\t// \"доб.\"\r\n\t\tparseNumber('+78005553535 доб. 1234', 'RU').should.deep.equal({\r\n\t\t\tcountry : 'RU',\r\n\t\t\tphone : '8005553535',\r\n\t\t\text : '1234'\r\n\t\t})\r\n\r\n\t\t// \"#\"\r\n\t\tparseNumber('+12134567890#1234').should.deep.equal({\r\n\t\t\tcountry : 'US',\r\n\t\t\tphone : '2134567890',\r\n\t\t\text : '1234'\r\n\t\t})\r\n\r\n\t\t// \"x\"\r\n\t\tparseNumber('+78005553535 x1234').should.deep.equal({\r\n\t\t\tcountry : 'RU',\r\n\t\t\tphone : '8005553535',\r\n\t\t\text : '1234'\r\n\t\t})\r\n\r\n\t\t// Not a valid extension\r\n\t\tparseNumber('2134567890 ext. abc', 'US').should.deep.equal({\r\n\t\t\tcountry : 'US',\r\n\t\t\tphone : '2134567890'\r\n\t\t})\r\n\t})\r\n\r\n\tit('should parse RFC 3966 phone numbers', () => {\r\n\t\tparseNumber('tel:+78005553535;ext=123').should.deep.equal({\r\n\t\t\tcountry : 'RU',\r\n\t\t\tphone : '8005553535',\r\n\t\t\text : '123'\r\n\t\t})\r\n\r\n\t\t// Should parse \"visual separators\".\r\n\t\tparseNumber('tel:+7(800)555-35.35;ext=123').should.deep.equal({\r\n\t\t\tcountry : 'RU',\r\n\t\t\tphone : '8005553535',\r\n\t\t\text : '123'\r\n\t\t})\r\n\r\n\t\t// Invalid number.\r\n\t\tparseNumber('tel:+7x8005553535;ext=123').should.deep.equal({})\r\n\t})\r\n\r\n\tit('should parse invalid international numbers even if they are invalid', () => {\r\n\t\tparseNumber('+7(8)8005553535', 'RU').should.deep.equal({\r\n\t\t\tcountry : 'RU',\r\n\t\t\tphone : '8005553535'\r\n\t\t})\r\n\t})\r\n\r\n\tit('should parse carrier codes', () => {\r\n\t\tparseNumber('0 15 21 5555-5555', 'BR', { extended: true }).should.deep.equal({\r\n\t\t\tcountry : 'BR',\r\n\t\t\tcountryCallingCode : '55',\r\n\t\t\tphone : '2155555555',\r\n\t\t\tcarrierCode : '15',\r\n\t\t\text : undefined,\r\n\t\t\tvalid : true,\r\n\t\t\tpossible : true\r\n\t\t})\r\n\t})\r\n\r\n\tit('should parse IDD prefixes', () => {\r\n\t\tparseNumber('011 61 2 3456 7890', 'US').should.deep.equal({\r\n\t\t\tphone : '234567890',\r\n\t\t\tcountry : 'AU'\r\n\t\t})\r\n\r\n\t\tparseNumber('011 61 2 3456 7890', 'FR').should.deep.equal({})\r\n\r\n\t\tparseNumber('00 61 2 3456 7890', 'US').should.deep.equal({})\r\n\r\n\t\tparseNumber('810 61 2 3456 7890', 'RU').should.deep.equal({\r\n\t\t\tphone : '234567890',\r\n\t\t\tcountry : 'AU'\r\n\t\t})\r\n\t})\r\n\r\n\tit('should work with v2 API', () => {\r\n\t\tparseNumber('+99989160151539')\r\n\t})\r\n\r\n\tit('should work with Argentina numbers', () => {\r\n\t\t// The same mobile number is written differently\r\n\t\t// in different formats in Argentina:\r\n\t\t// `9` gets prepended in international format.\r\n\t\tparseNumber('+54 9 3435 55 1212').should.deep.equal({\r\n\t\t\tcountry: 'AR',\r\n\t\t\tphone: '93435551212'\r\n\t\t})\r\n\t\tparseNumber('0343 15-555-1212', 'AR').should.deep.equal({\r\n\t\t\tcountry: 'AR',\r\n\t\t\tphone: '93435551212'\r\n\t\t})\r\n\t})\r\n\r\n\tit('should work with Mexico numbers', () => {\r\n\t\t// Fixed line.\r\n\t\tparseNumber('+52 449 978 0001').should.deep.equal({\r\n\t\t\tcountry: 'MX',\r\n\t\t\tphone: '4499780001'\r\n\t\t})\r\n\t\tparseNumber('01 (449)978-0001', 'MX').should.deep.equal({\r\n\t\t\tcountry: 'MX',\r\n\t\t\tphone: '4499780001'\r\n\t\t})\r\n\t\tparseNumber('(449)978-0001', 'MX').should.deep.equal({\r\n\t\t\tcountry: 'MX',\r\n\t\t\tphone: '4499780001'\r\n\t\t})\r\n\t\t// Mobile.\r\n\t\t// `1` is prepended before area code to mobile numbers in international format.\r\n\t\tparseNumber('+52 1 33 1234-5678', 'MX').should.deep.equal({\r\n\t\t\tcountry: 'MX',\r\n\t\t\tphone: '3312345678'\r\n\t\t})\r\n\t\tparseNumber('+52 33 1234-5678', 'MX').should.deep.equal({\r\n\t\t\tcountry: 'MX',\r\n\t\t\tphone: '3312345678'\r\n\t\t})\r\n\t\tparseNumber('044 (33) 1234-5678', 'MX').should.deep.equal({\r\n\t\t\tcountry: 'MX',\r\n\t\t\tphone: '3312345678'\r\n\t\t})\r\n\t\tparseNumber('045 33 1234-5678', 'MX').should.deep.equal({\r\n\t\t\tcountry: 'MX',\r\n\t\t\tphone: '3312345678'\r\n\t\t})\r\n\t})\r\n\r\n\tit('should parse non-geographic numbering plan phone numbers', () => {\r\n\t\tparseNumber('+870773111632').should.deep.equal(\r\n\t\t\tUSE_NON_GEOGRAPHIC_COUNTRY_CODE ?\r\n\t\t\t{\r\n\t\t\t\tcountry: '001',\r\n\t\t\t\tphone: '773111632'\r\n\t\t\t} :\r\n\t\t\t{}\r\n\t\t)\r\n\t})\r\n\r\n\tit('should parse non-geographic numbering plan phone numbers (default country code)', () => {\r\n\t\tparseNumber('773111632', { defaultCallingCode: '870' }).should.deep.equal(\r\n\t\t\tUSE_NON_GEOGRAPHIC_COUNTRY_CODE ?\r\n\t\t\t{\r\n\t\t\t\tcountry: '001',\r\n\t\t\t\tphone: '773111632'\r\n\t\t\t} :\r\n\t\t\t{}\r\n\t\t)\r\n\t})\r\n\r\n\tit('should parse non-geographic numbering plan phone numbers (extended)', () => {\r\n\t\tparseNumber('+870773111632', { extended: true }).should.deep.equal({\r\n\t\t\tcountry: USE_NON_GEOGRAPHIC_COUNTRY_CODE ? '001' : undefined,\r\n\t\t\tcountryCallingCode: '870',\r\n\t\t\tphone: '773111632',\r\n\t\t\tcarrierCode: undefined,\r\n\t\t\text: undefined,\r\n\t\t\tpossible: true,\r\n\t\t\tvalid: true\r\n\t\t})\r\n\t})\r\n\r\n\tit('should parse non-geographic numbering plan phone numbers (default country code) (extended)', () => {\r\n\t\tparseNumber('773111632', { defaultCallingCode: '870', extended: true }).should.deep.equal({\r\n\t\t\tcountry: USE_NON_GEOGRAPHIC_COUNTRY_CODE ? '001' : undefined,\r\n\t\t\tcountryCallingCode: '870',\r\n\t\t\tphone: '773111632',\r\n\t\t\tcarrierCode: undefined,\r\n\t\t\text: undefined,\r\n\t\t\tpossible: true,\r\n\t\t\tvalid: true\r\n\t\t})\r\n\t})\r\n\r\n\tit('shouldn\\'t crash when invalid `defaultCallingCode` is passed', () => {\r\n\t\texpect(() => parseNumber('773111632', { defaultCallingCode: '999' }))\r\n\t\t\t.to.throw('Unknown calling code')\r\n\t})\r\n\r\n\tit('shouldn\\'t set `country` when there\\'s no `defaultCountry` and `defaultCallingCode` is not of a \"non-geographic entity\"', () => {\r\n\t\tparseNumber('88005553535', { defaultCallingCode: '7' }).should.deep.equal({\r\n\t\t\tcountry: 'RU',\r\n\t\t\tphone: '8005553535'\r\n\t\t})\r\n\t})\r\n\r\n\tit('should correctly parse numbers starting with the same digit as the national prefix', () => {\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/373\r\n\t\t// `BY`'s `national_prefix` is `8`.\r\n\t\tparseNumber('+37582004910060').should.deep.equal({\r\n\t\t\tcountry: 'BY',\r\n\t\t\tphone: '82004910060'\r\n\t\t});\r\n\t})\r\n\r\n\tit('should autocorrect numbers without a leading +', () => {\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\t\tparseNumber('375447521111', 'BY').should.deep.equal({\r\n\t\t\tcountry: 'BY',\r\n\t\t\tphone: '447521111'\r\n\t\t});\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/316\r\n\t\tparseNumber('33612902554', 'FR').should.deep.equal({\r\n\t\t\tcountry: 'FR',\r\n\t\t\tphone: '612902554'\r\n\t\t});\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/375\r\n\t\tparseNumber('61438331999', 'AU').should.deep.equal({\r\n\t\t\tcountry: 'AU',\r\n\t\t\tphone: '438331999'\r\n\t\t});\r\n\t\t// A case when `49` is a country calling code of a number without a leading `+`.\r\n\t\tparseNumber('4930123456', 'DE').should.deep.equal({\r\n\t\t\tcountry: 'DE',\r\n\t\t\tphone: '30123456'\r\n\t\t});\r\n\t\t// A case when `49` is a valid area code.\r\n\t\tparseNumber('4951234567890', 'DE').should.deep.equal({\r\n\t\t\tcountry: 'DE',\r\n\t\t\tphone: '4951234567890'\r\n\t\t});\r\n\t})\r\n\r\n\tit('should parse extensions (long extensions with explicitl abels)', () => {\r\n\t\t// Test lower and upper limits of extension lengths for each type of label.\r\n\r\n\t\t// Firstly, when in RFC format: PhoneNumberUtil.extLimitAfterExplicitLabel\r\n\t\tparseNumber('33316005 ext 0', 'NZ').ext.should.equal('0')\r\n\t\tparseNumber('33316005 ext 01234567890123456789', 'NZ').ext.should.equal('01234567890123456789')\r\n\t\t// Extension too long.\r\n\t\texpect(parseNumber('33316005 ext 012345678901234567890', 'NZ').ext).to.be.undefined\r\n\r\n\t\t// Explicit extension label.\r\n\t\tparseNumber('03 3316005ext:1', 'NZ').ext.should.equal('1')\r\n\t\tparseNumber('03 3316005 xtn:12345678901234567890', 'NZ').ext.should.equal('12345678901234567890')\r\n\t\tparseNumber('03 3316005 extension\\t12345678901234567890', 'NZ').ext.should.equal('12345678901234567890')\r\n\t\tparseNumber('03 3316005 xtensio:12345678901234567890', 'NZ').ext.should.equal('12345678901234567890')\r\n\t\tparseNumber('03 3316005 xtensión, 12345678901234567890#', 'NZ').ext.should.equal('12345678901234567890')\r\n\t\tparseNumber('03 3316005extension.12345678901234567890', 'NZ').ext.should.equal('12345678901234567890')\r\n\t\tparseNumber('03 3316005 доб:12345678901234567890', 'NZ').ext.should.equal('12345678901234567890')\r\n\r\n\t\t// Extension too long.\r\n\t\texpect(parseNumber('03 3316005 extension 123456789012345678901', 'NZ').ext).to.be.undefined\r\n\t})\r\n\r\n\tit('should parse extensions (long extensions with auto dialling labels)', () => {\r\n\t\tparseNumber('+12679000000,,123456789012345#').ext.should.equal('123456789012345')\r\n\t\tparseNumber('+12679000000;123456789012345#').ext.should.equal('123456789012345')\r\n\t\tparseNumber('+442034000000,,123456789#').ext.should.equal('123456789')\r\n\t\t// Extension too long.\r\n\t\texpect(parseNumber('+12679000000,,1234567890123456#').ext).to.be.undefined\r\n\t})\r\n\r\n\tit('should parse extensions (short extensions with ambiguous characters)', () => {\r\n\t\tparseNumber('03 3316005 x 123456789', 'NZ').ext.should.equal('123456789')\r\n\t\tparseNumber('03 3316005 x. 123456789', 'NZ').ext.should.equal('123456789')\r\n\t\tparseNumber('03 3316005 #123456789#', 'NZ').ext.should.equal('123456789')\r\n\t\tparseNumber('03 3316005 ~ 123456789', 'NZ').ext.should.equal('123456789')\r\n\t\t// Extension too long.\r\n\t\texpect(parseNumber('03 3316005 ~ 1234567890', 'NZ').ext).to.be.undefined\r\n\t})\r\n\r\n\tit('should parse extensions (short extensions when not sure of label)', () => {\r\n\t\tparseNumber('+1123-456-7890 666666#', { v2: true }).ext.should.equal('666666')\r\n\t\tparseNumber('+11234567890-6#', { v2: true }).ext.should.equal('6')\r\n\t\t// Extension too long.\r\n\t\texpect(() => parseNumber('+1123-456-7890 7777777#', { v2: true })).to.throw('NOT_A_NUMBER')\r\n\t})\r\n})"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.js new file mode 100644 index 00000000..661fe3e2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.js @@ -0,0 +1,66 @@ +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +import { parseDigit } from './helpers/parseDigits.js'; +/** + * Parses phone number characters from a string. + * Drops all punctuation leaving only digits and the leading `+` sign (if any). + * Also converts wide-ascii and arabic-indic numerals to conventional numerals. + * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`. + * @param {string} string + * @return {string} + * @example + * ```js + * // Outputs '8800555'. + * parseIncompletePhoneNumber('8 (800) 555') + * // Outputs '+7800555'. + * parseIncompletePhoneNumber('+7 800 555') + * ``` + */ + +export default function parseIncompletePhoneNumber(string) { + var result = ''; // Using `.split('')` here instead of normal `for ... of` + // because the importing application doesn't neccessarily include an ES6 polyfill. + // The `.split('')` approach discards "exotic" UTF-8 characters + // (the ones consisting of four bytes) but digits + // (including non-European ones) don't fall into that range + // so such "exotic" characters would be discarded anyway. + + for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) { + var character = _step.value; + result += parsePhoneNumberCharacter(character, result) || ''; + } + + return result; +} +/** + * Parses next character while parsing phone number digits (including a `+`) + * from text: discards everything except `+` and digits, and `+` is only allowed + * at the start of a phone number. + * For example, is used in `react-phone-number-input` where it uses + * [`input-format`](https://gitlab.com/catamphetamine/input-format). + * @param {string} character - Yet another character from raw input string. + * @param {string?} prevParsedCharacters - Previous parsed characters. + * @param {object} meta - Optional custom use-case-specific metadata. + * @return {string?} The parsed character. + */ + +export function parsePhoneNumberCharacter(character, prevParsedCharacters) { + // Only allow a leading `+`. + if (character === '+') { + // If this `+` is not the first parsed character + // then discard it. + if (prevParsedCharacters) { + return; + } + + return '+'; + } // Allow digits. + + + return parseDigit(character); +} +//# sourceMappingURL=parseIncompletePhoneNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.js.map new file mode 100644 index 00000000..3cfb298a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parseIncompletePhoneNumber.js","names":["parseDigit","parseIncompletePhoneNumber","string","result","split","character","parsePhoneNumberCharacter","prevParsedCharacters"],"sources":["../source/parseIncompletePhoneNumber.js"],"sourcesContent":["import { parseDigit } from './helpers/parseDigits.js'\r\n\r\n/**\r\n * Parses phone number characters from a string.\r\n * Drops all punctuation leaving only digits and the leading `+` sign (if any).\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * // Outputs '8800555'.\r\n * parseIncompletePhoneNumber('8 (800) 555')\r\n * // Outputs '+7800555'.\r\n * parseIncompletePhoneNumber('+7 800 555')\r\n * ```\r\n */\r\nexport default function parseIncompletePhoneNumber(string) {\r\n\tlet result = ''\r\n\t// Using `.split('')` here instead of normal `for ... of`\r\n\t// because the importing application doesn't neccessarily include an ES6 polyfill.\r\n\t// The `.split('')` approach discards \"exotic\" UTF-8 characters\r\n\t// (the ones consisting of four bytes) but digits\r\n\t// (including non-European ones) don't fall into that range\r\n\t// so such \"exotic\" characters would be discarded anyway.\r\n\tfor (const character of string.split('')) {\r\n\t\tresult += parsePhoneNumberCharacter(character, result) || ''\r\n\t}\r\n\treturn result\r\n}\r\n\r\n/**\r\n * Parses next character while parsing phone number digits (including a `+`)\r\n * from text: discards everything except `+` and digits, and `+` is only allowed\r\n * at the start of a phone number.\r\n * For example, is used in `react-phone-number-input` where it uses\r\n * [`input-format`](https://gitlab.com/catamphetamine/input-format).\r\n * @param {string} character - Yet another character from raw input string.\r\n * @param {string?} prevParsedCharacters - Previous parsed characters.\r\n * @param {object} meta - Optional custom use-case-specific metadata.\r\n * @return {string?} The parsed character.\r\n */\r\nexport function parsePhoneNumberCharacter(character, prevParsedCharacters) {\r\n\t// Only allow a leading `+`.\r\n\tif (character === '+') {\r\n\t\t// If this `+` is not the first parsed character\r\n\t\t// then discard it.\r\n\t\tif (prevParsedCharacters) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\treturn '+'\r\n\t}\r\n\t// Allow digits.\r\n\treturn parseDigit(character)\r\n}"],"mappings":";;;;;;AAAA,SAASA,UAAT,QAA2B,0BAA3B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,0BAAT,CAAoCC,MAApC,EAA4C;EAC1D,IAAIC,MAAM,GAAG,EAAb,CAD0D,CAE1D;EACA;EACA;EACA;EACA;EACA;;EACA,qDAAwBD,MAAM,CAACE,KAAP,CAAa,EAAb,CAAxB,wCAA0C;IAAA,IAA/BC,SAA+B;IACzCF,MAAM,IAAIG,yBAAyB,CAACD,SAAD,EAAYF,MAAZ,CAAzB,IAAgD,EAA1D;EACA;;EACD,OAAOA,MAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASG,yBAAT,CAAmCD,SAAnC,EAA8CE,oBAA9C,EAAoE;EAC1E;EACA,IAAIF,SAAS,KAAK,GAAlB,EAAuB;IACtB;IACA;IACA,IAAIE,oBAAJ,EAA0B;MACzB;IACA;;IACD,OAAO,GAAP;EACA,CATyE,CAU1E;;;EACA,OAAOP,UAAU,CAACK,SAAD,CAAjB;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.test.js new file mode 100644 index 00000000..9e40cd98 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.test.js @@ -0,0 +1,27 @@ +import parseIncompletePhoneNumber, { parsePhoneNumberCharacter } from './parseIncompletePhoneNumber.js'; +describe('parseIncompletePhoneNumber', function () { + it('should parse phone number character', function () { + // Accepts leading `+`. + parsePhoneNumberCharacter('+').should.equal('+'); // Doesn't accept non-leading `+`. + + expect(parsePhoneNumberCharacter('+', '+')).to.be.undefined; // Parses digits. + + parsePhoneNumberCharacter('1').should.equal('1'); // Parses non-European digits. + + parsePhoneNumberCharacter('٤').should.equal('4'); // Dismisses other characters. + + expect(parsePhoneNumberCharacter('-')).to.be.undefined; + }); + it('should parse incomplete phone number', function () { + parseIncompletePhoneNumber('').should.equal(''); // Doesn't accept non-leading `+`. + + parseIncompletePhoneNumber('++').should.equal('+'); // Accepts leading `+`. + + parseIncompletePhoneNumber('+7 800 555').should.equal('+7800555'); // Parses digits. + + parseIncompletePhoneNumber('8 (800) 555').should.equal('8800555'); // Parses non-European digits. + + parseIncompletePhoneNumber('+٤٤٢٣٢٣٢٣٤').should.equal('+442323234'); + }); +}); +//# sourceMappingURL=parseIncompletePhoneNumber.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.test.js.map new file mode 100644 index 00000000..7c046236 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parseIncompletePhoneNumber.test.js","names":["parseIncompletePhoneNumber","parsePhoneNumberCharacter","describe","it","should","equal","expect","to","be","undefined"],"sources":["../source/parseIncompletePhoneNumber.test.js"],"sourcesContent":["import parseIncompletePhoneNumber, { parsePhoneNumberCharacter } from './parseIncompletePhoneNumber.js'\r\n\r\ndescribe('parseIncompletePhoneNumber', () => {\r\n\tit('should parse phone number character', () => {\r\n\t\t// Accepts leading `+`.\r\n\t\tparsePhoneNumberCharacter('+').should.equal('+')\r\n\r\n\t\t// Doesn't accept non-leading `+`.\r\n\t\texpect(parsePhoneNumberCharacter('+', '+')).to.be.undefined\r\n\r\n\t\t// Parses digits.\r\n\t\tparsePhoneNumberCharacter('1').should.equal('1')\r\n\r\n\t\t// Parses non-European digits.\r\n\t\tparsePhoneNumberCharacter('٤').should.equal('4')\r\n\r\n\t\t// Dismisses other characters.\r\n\t\texpect(parsePhoneNumberCharacter('-')).to.be.undefined\r\n\t})\r\n\r\n\tit('should parse incomplete phone number', () => {\r\n\t\tparseIncompletePhoneNumber('').should.equal('')\r\n\r\n\t\t// Doesn't accept non-leading `+`.\r\n\t\tparseIncompletePhoneNumber('++').should.equal('+')\r\n\r\n\t\t// Accepts leading `+`.\r\n\t\tparseIncompletePhoneNumber('+7 800 555').should.equal('+7800555')\r\n\r\n\t\t// Parses digits.\r\n\t\tparseIncompletePhoneNumber('8 (800) 555').should.equal('8800555')\r\n\r\n\t\t// Parses non-European digits.\r\n\t\tparseIncompletePhoneNumber('+٤٤٢٣٢٣٢٣٤').should.equal('+442323234')\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,0BAAP,IAAqCC,yBAArC,QAAsE,iCAAtE;AAEAC,QAAQ,CAAC,4BAAD,EAA+B,YAAM;EAC5CC,EAAE,CAAC,qCAAD,EAAwC,YAAM;IAC/C;IACAF,yBAAyB,CAAC,GAAD,CAAzB,CAA+BG,MAA/B,CAAsCC,KAAtC,CAA4C,GAA5C,EAF+C,CAI/C;;IACAC,MAAM,CAACL,yBAAyB,CAAC,GAAD,EAAM,GAAN,CAA1B,CAAN,CAA4CM,EAA5C,CAA+CC,EAA/C,CAAkDC,SAAlD,CAL+C,CAO/C;;IACAR,yBAAyB,CAAC,GAAD,CAAzB,CAA+BG,MAA/B,CAAsCC,KAAtC,CAA4C,GAA5C,EAR+C,CAU/C;;IACAJ,yBAAyB,CAAC,GAAD,CAAzB,CAA+BG,MAA/B,CAAsCC,KAAtC,CAA4C,GAA5C,EAX+C,CAa/C;;IACAC,MAAM,CAACL,yBAAyB,CAAC,GAAD,CAA1B,CAAN,CAAuCM,EAAvC,CAA0CC,EAA1C,CAA6CC,SAA7C;EACA,CAfC,CAAF;EAiBAN,EAAE,CAAC,sCAAD,EAAyC,YAAM;IAChDH,0BAA0B,CAAC,EAAD,CAA1B,CAA+BI,MAA/B,CAAsCC,KAAtC,CAA4C,EAA5C,EADgD,CAGhD;;IACAL,0BAA0B,CAAC,IAAD,CAA1B,CAAiCI,MAAjC,CAAwCC,KAAxC,CAA8C,GAA9C,EAJgD,CAMhD;;IACAL,0BAA0B,CAAC,YAAD,CAA1B,CAAyCI,MAAzC,CAAgDC,KAAhD,CAAsD,UAAtD,EAPgD,CAShD;;IACAL,0BAA0B,CAAC,aAAD,CAA1B,CAA0CI,MAA1C,CAAiDC,KAAjD,CAAuD,SAAvD,EAVgD,CAYhD;;IACAL,0BAA0B,CAAC,YAAD,CAA1B,CAAyCI,MAAzC,CAAgDC,KAAhD,CAAsD,YAAtD;EACA,CAdC,CAAF;AAeA,CAjCO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumber.js new file mode 100644 index 00000000..619b9bb6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumber.js @@ -0,0 +1,86 @@ +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +import parsePhoneNumber_ from './parsePhoneNumber_.js'; +export default function parsePhoneNumber() { + var _normalizeArguments = normalizeArguments(arguments), + text = _normalizeArguments.text, + options = _normalizeArguments.options, + metadata = _normalizeArguments.metadata; + + return parsePhoneNumber_(text, options, metadata); +} +export function normalizeArguments(args) { + var _Array$prototype$slic = Array.prototype.slice.call(args), + _Array$prototype$slic2 = _slicedToArray(_Array$prototype$slic, 4), + arg_1 = _Array$prototype$slic2[0], + arg_2 = _Array$prototype$slic2[1], + arg_3 = _Array$prototype$slic2[2], + arg_4 = _Array$prototype$slic2[3]; + + var text; + var options; + var metadata; // If the phone number is passed as a string. + // `parsePhoneNumber('88005553535', ...)`. + + if (typeof arg_1 === 'string') { + text = arg_1; + } else throw new TypeError('A text for parsing must be a string.'); // If "default country" argument is being passed then move it to `options`. + // `parsePhoneNumber('88005553535', 'RU', [options], metadata)`. + + + if (!arg_2 || typeof arg_2 === 'string') { + if (arg_4) { + options = arg_3; + metadata = arg_4; + } else { + options = undefined; + metadata = arg_3; + } + + if (arg_2) { + options = _objectSpread({ + defaultCountry: arg_2 + }, options); + } + } // `defaultCountry` is not passed. + // Example: `parsePhoneNumber('+78005553535', [options], metadata)`. + else if (isObject(arg_2)) { + if (arg_3) { + options = arg_2; + metadata = arg_3; + } else { + metadata = arg_2; + } + } else throw new Error("Invalid second argument: ".concat(arg_2)); + + return { + text: text, + options: options, + metadata: metadata + }; +} // Otherwise istanbul would show this as "branch not covered". + +/* istanbul ignore next */ + +var isObject = function isObject(_) { + return _typeof(_) === 'object'; +}; +//# sourceMappingURL=parsePhoneNumber.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumber.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumber.js.map new file mode 100644 index 00000000..1a2082d8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parsePhoneNumber.js","names":["parsePhoneNumber_","parsePhoneNumber","normalizeArguments","arguments","text","options","metadata","args","Array","prototype","slice","call","arg_1","arg_2","arg_3","arg_4","TypeError","undefined","defaultCountry","isObject","Error","_"],"sources":["../source/parsePhoneNumber.js"],"sourcesContent":["import parsePhoneNumber_ from './parsePhoneNumber_.js'\r\n\r\nexport default function parsePhoneNumber() {\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\treturn parsePhoneNumber_(text, options, metadata)\r\n}\r\n\r\nexport function normalizeArguments(args)\r\n{\r\n\tconst [arg_1, arg_2, arg_3, arg_4] = Array.prototype.slice.call(args)\r\n\r\n\tlet text\r\n\tlet options\r\n\tlet metadata\r\n\r\n\t// If the phone number is passed as a string.\r\n\t// `parsePhoneNumber('88005553535', ...)`.\r\n\tif (typeof arg_1 === 'string') {\r\n\t\ttext = arg_1\r\n\t}\r\n\telse throw new TypeError('A text for parsing must be a string.')\r\n\r\n\t// If \"default country\" argument is being passed then move it to `options`.\r\n\t// `parsePhoneNumber('88005553535', 'RU', [options], metadata)`.\r\n\tif (!arg_2 || typeof arg_2 === 'string')\r\n\t{\r\n\t\tif (arg_4) {\r\n\t\t\toptions = arg_3\r\n\t\t\tmetadata = arg_4\r\n\t\t} else {\r\n\t\t\toptions = undefined\r\n\t\t\tmetadata = arg_3\r\n\t\t}\r\n\r\n\t\tif (arg_2) {\r\n\t\t\toptions = { defaultCountry: arg_2, ...options }\r\n\t\t}\r\n\t}\r\n\t// `defaultCountry` is not passed.\r\n\t// Example: `parsePhoneNumber('+78005553535', [options], metadata)`.\r\n\telse if (isObject(arg_2))\r\n\t{\r\n\t\tif (arg_3) {\r\n\t\t\toptions = arg_2\r\n\t\t\tmetadata = arg_3\r\n\t\t} else {\r\n\t\t\tmetadata = arg_2\r\n\t\t}\r\n\t}\r\n\telse throw new Error(`Invalid second argument: ${arg_2}`)\r\n\r\n\treturn {\r\n\t\ttext,\r\n\t\toptions,\r\n\t\tmetadata\r\n\t}\r\n}\r\n\r\n// Otherwise istanbul would show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst isObject = _ => typeof _ === 'object'"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,OAAOA,iBAAP,MAA8B,wBAA9B;AAEA,eAAe,SAASC,gBAAT,GAA4B;EAC1C,0BAAoCC,kBAAkB,CAACC,SAAD,CAAtD;EAAA,IAAQC,IAAR,uBAAQA,IAAR;EAAA,IAAcC,OAAd,uBAAcA,OAAd;EAAA,IAAuBC,QAAvB,uBAAuBA,QAAvB;;EACA,OAAON,iBAAiB,CAACI,IAAD,EAAOC,OAAP,EAAgBC,QAAhB,CAAxB;AACA;AAED,OAAO,SAASJ,kBAAT,CAA4BK,IAA5B,EACP;EACC,4BAAqCC,KAAK,CAACC,SAAN,CAAgBC,KAAhB,CAAsBC,IAAtB,CAA2BJ,IAA3B,CAArC;EAAA;EAAA,IAAOK,KAAP;EAAA,IAAcC,KAAd;EAAA,IAAqBC,KAArB;EAAA,IAA4BC,KAA5B;;EAEA,IAAIX,IAAJ;EACA,IAAIC,OAAJ;EACA,IAAIC,QAAJ,CALD,CAOC;EACA;;EACA,IAAI,OAAOM,KAAP,KAAiB,QAArB,EAA+B;IAC9BR,IAAI,GAAGQ,KAAP;EACA,CAFD,MAGK,MAAM,IAAII,SAAJ,CAAc,sCAAd,CAAN,CAZN,CAcC;EACA;;;EACA,IAAI,CAACH,KAAD,IAAU,OAAOA,KAAP,KAAiB,QAA/B,EACA;IACC,IAAIE,KAAJ,EAAW;MACVV,OAAO,GAAGS,KAAV;MACAR,QAAQ,GAAGS,KAAX;IACA,CAHD,MAGO;MACNV,OAAO,GAAGY,SAAV;MACAX,QAAQ,GAAGQ,KAAX;IACA;;IAED,IAAID,KAAJ,EAAW;MACVR,OAAO;QAAKa,cAAc,EAAEL;MAArB,GAA+BR,OAA/B,CAAP;IACA;EACD,CAbD,CAcA;EACA;EAfA,KAgBK,IAAIc,QAAQ,CAACN,KAAD,CAAZ,EACL;IACC,IAAIC,KAAJ,EAAW;MACVT,OAAO,GAAIQ,KAAX;MACAP,QAAQ,GAAGQ,KAAX;IACA,CAHD,MAGO;MACNR,QAAQ,GAAGO,KAAX;IACA;EACD,CARI,MASA,MAAM,IAAIO,KAAJ,oCAAsCP,KAAtC,EAAN;;EAEL,OAAO;IACNT,IAAI,EAAJA,IADM;IAENC,OAAO,EAAPA,OAFM;IAGNC,QAAQ,EAARA;EAHM,CAAP;AAKA,C,CAED;;AACA;;AACA,IAAMa,QAAQ,GAAG,SAAXA,QAAW,CAAAE,CAAC;EAAA,OAAI,QAAOA,CAAP,MAAa,QAAjB;AAAA,CAAlB"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumber.test.js new file mode 100644 index 00000000..7d8f8b56 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumber.test.js @@ -0,0 +1,136 @@ +import _parsePhoneNumber from './parsePhoneNumber.js'; +import metadata from '../metadata.min.json' assert { type: 'json' }; +import metadataFull from '../metadata.max.json' assert { type: 'json' }; + +function parsePhoneNumber() { + for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) { + parameters[_key] = arguments[_key]; + } + + parameters.push(metadata); + return _parsePhoneNumber.apply(this, parameters); +} + +function parsePhoneNumberFull() { + for (var _len2 = arguments.length, parameters = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + parameters[_key2] = arguments[_key2]; + } + + parameters.push(metadataFull); + return _parsePhoneNumber.apply(this, parameters); +} + +describe('parsePhoneNumber', function () { + it('should parse phone numbers', function () { + var phoneNumber = parsePhoneNumber('Phone: 8 (800) 555 35 35.', 'RU'); + phoneNumber.country.should.equal('RU'); + phoneNumber.countryCallingCode.should.equal('7'); + phoneNumber.nationalNumber.should.equal('8005553535'); + phoneNumber.number.should.equal('+78005553535'); + phoneNumber.isPossible().should.equal(true); + phoneNumber.isValid().should.equal(true); // phoneNumber.isValidForRegion('RU').should.equal(true) + // Russian phone type regexps aren't included in default metadata. + + parsePhoneNumberFull('Phone: 8 (800) 555 35 35.', 'RU').getType().should.equal('TOLL_FREE'); + }); + it('shouldn\'t set country when it\'s non-derivable', function () { + var phoneNumber = parsePhoneNumber('+7 111 555 35 35'); + expect(phoneNumber.country).to.be.undefined; + phoneNumber.countryCallingCode.should.equal('7'); + phoneNumber.nationalNumber.should.equal('1115553535'); + }); + it('should parse carrier code', function () { + var phoneNumber = parsePhoneNumber('0 15 21 5555-5555', 'BR'); + phoneNumber.carrierCode.should.equal('15'); + }); + it('should parse phone extension', function () { + var phoneNumber = parsePhoneNumber('Phone: 8 (800) 555 35 35 ext. 1234.', 'RU'); + phoneNumber.ext.should.equal('1234'); + }); + it('should validate numbers for countries with no type regular expressions', function () { + parsePhoneNumber('+380391234567').isValid().should.equal(true); + parsePhoneNumber('+380191234567').isValid().should.equal(false); + }); + it('should format numbers', function () { + var phoneNumber = parsePhoneNumber('Phone: 8 (800) 555 35 35.', 'RU'); + phoneNumber.format('NATIONAL').should.equal('8 (800) 555-35-35'); + phoneNumber.formatNational().should.equal('8 (800) 555-35-35'); + phoneNumber.format('INTERNATIONAL').should.equal('+7 800 555 35 35'); + phoneNumber.formatInternational().should.equal('+7 800 555 35 35'); + }); + it('should get tel: URI', function () { + var phoneNumber = parsePhoneNumber('Phone: 8 (800) 555 35 35 ext. 1234.', 'RU'); + phoneNumber.getURI().should.equal('tel:+78005553535;ext=1234'); + }); + it('should work in edge cases', function () { + expect(function () { + return parsePhoneNumber('+78005553535', -1, {}); + }).to["throw"]('Invalid second argument'); + }); + it('should throw parse errors', function () { + expect(function () { + return parsePhoneNumber('8005553535', 'XX'); + }).to["throw"]('INVALID_COUNTRY'); + expect(function () { + return parsePhoneNumber('+', 'RU'); + }).to["throw"]('NOT_A_NUMBER'); + expect(function () { + return parsePhoneNumber('a', 'RU'); + }).to["throw"]('NOT_A_NUMBER'); + expect(function () { + return parsePhoneNumber('1', 'RU'); + }).to["throw"]('TOO_SHORT'); + expect(function () { + return parsePhoneNumber('+4'); + }).to["throw"]('TOO_SHORT'); + expect(function () { + return parsePhoneNumber('+44'); + }).to["throw"]('TOO_SHORT'); + expect(function () { + return parsePhoneNumber('+443'); + }).to["throw"]('TOO_SHORT'); + expect(function () { + return parsePhoneNumber('+370'); + }).to["throw"]('TOO_SHORT'); + expect(function () { + return parsePhoneNumber('88888888888888888888', 'RU'); + }).to["throw"]('TOO_LONG'); + expect(function () { + return parsePhoneNumber('8 (800) 555 35 35'); + }).to["throw"]('INVALID_COUNTRY'); + expect(function () { + return parsePhoneNumber('+9991112233'); + }).to["throw"]('INVALID_COUNTRY'); + expect(function () { + return parsePhoneNumber('+9991112233', 'US'); + }).to["throw"]('INVALID_COUNTRY'); + expect(function () { + return parsePhoneNumber('8005553535 ', 'RU'); + }).to["throw"]('TOO_LONG'); + }); + it('should parse incorrect international phone numbers', function () { + // Parsing national prefixes and carrier codes + // is only required for local phone numbers + // but some people don't understand that + // and sometimes write international phone numbers + // with national prefixes (or maybe even carrier codes). + // http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html + // Google's original library forgives such mistakes + // and so does this library, because it has been requested: + // https://github.com/catamphetamine/libphonenumber-js/issues/127 + var phoneNumber; // For complete numbers it should strip national prefix. + + phoneNumber = parsePhoneNumber('+1 1877 215 5230'); + phoneNumber.nationalNumber.should.equal('8772155230'); + phoneNumber.country.should.equal('US'); // For complete numbers it should strip national prefix. + + phoneNumber = parsePhoneNumber('+7 8800 555 3535'); + phoneNumber.nationalNumber.should.equal('8005553535'); + phoneNumber.country.should.equal('RU'); // For incomplete numbers it shouldn't strip national prefix. + + phoneNumber = parsePhoneNumber('+7 8800 555 353'); + phoneNumber.nationalNumber.should.equal('8800555353'); + phoneNumber.country.should.equal('RU'); + }); +}); +//# sourceMappingURL=parsePhoneNumber.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumber.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumber.test.js.map new file mode 100644 index 00000000..f085a89d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumber.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parsePhoneNumber.test.js","names":["_parsePhoneNumber","metadata","type","metadataFull","parsePhoneNumber","parameters","push","apply","parsePhoneNumberFull","describe","it","phoneNumber","country","should","equal","countryCallingCode","nationalNumber","number","isPossible","isValid","getType","expect","to","be","undefined","carrierCode","ext","format","formatNational","formatInternational","getURI"],"sources":["../source/parsePhoneNumber.test.js"],"sourcesContent":["import _parsePhoneNumber from './parsePhoneNumber.js'\r\nimport metadata from '../metadata.min.json' assert { type: 'json' }\r\nimport metadataFull from '../metadata.max.json' assert { type: 'json' }\r\n\r\nfunction parsePhoneNumber(...parameters) {\r\n\tparameters.push(metadata)\r\n\treturn _parsePhoneNumber.apply(this, parameters)\r\n}\r\n\r\nfunction parsePhoneNumberFull(...parameters) {\r\n\tparameters.push(metadataFull)\r\n\treturn _parsePhoneNumber.apply(this, parameters)\r\n}\r\n\r\ndescribe('parsePhoneNumber', () => {\r\n\tit('should parse phone numbers', () => {\r\n\t\tconst phoneNumber = parsePhoneNumber('Phone: 8 (800) 555 35 35.', 'RU')\r\n\t\tphoneNumber.country.should.equal('RU')\r\n\t\tphoneNumber.countryCallingCode.should.equal('7')\r\n\t\tphoneNumber.nationalNumber.should.equal('8005553535')\r\n\t\tphoneNumber.number.should.equal('+78005553535')\r\n\t\tphoneNumber.isPossible().should.equal(true)\r\n\t\tphoneNumber.isValid().should.equal(true)\r\n\t\t// phoneNumber.isValidForRegion('RU').should.equal(true)\r\n\t\t// Russian phone type regexps aren't included in default metadata.\r\n\t\tparsePhoneNumberFull('Phone: 8 (800) 555 35 35.', 'RU').getType().should.equal('TOLL_FREE')\r\n\t})\r\n\r\n\tit('shouldn\\'t set country when it\\'s non-derivable', () => {\r\n\t\tconst phoneNumber = parsePhoneNumber('+7 111 555 35 35')\r\n\t\texpect(phoneNumber.country).to.be.undefined\r\n\t\tphoneNumber.countryCallingCode.should.equal('7')\r\n\t\tphoneNumber.nationalNumber.should.equal('1115553535')\r\n\t})\r\n\r\n\tit('should parse carrier code', () => {\r\n\t\tconst phoneNumber = parsePhoneNumber('0 15 21 5555-5555', 'BR')\r\n\t\tphoneNumber.carrierCode.should.equal('15')\r\n\t})\r\n\r\n\tit('should parse phone extension', () => {\r\n\t\tconst phoneNumber = parsePhoneNumber('Phone: 8 (800) 555 35 35 ext. 1234.', 'RU')\r\n\t\tphoneNumber.ext.should.equal('1234')\r\n\t})\r\n\r\n\tit('should validate numbers for countries with no type regular expressions', () => {\r\n\t\tparsePhoneNumber('+380391234567').isValid().should.equal(true)\r\n\t\tparsePhoneNumber('+380191234567').isValid().should.equal(false)\r\n\t})\r\n\r\n\tit('should format numbers', () => {\r\n\t\tconst phoneNumber = parsePhoneNumber('Phone: 8 (800) 555 35 35.', 'RU')\r\n\t\tphoneNumber.format('NATIONAL').should.equal('8 (800) 555-35-35')\r\n\t\tphoneNumber.formatNational().should.equal('8 (800) 555-35-35')\r\n\t\tphoneNumber.format('INTERNATIONAL').should.equal('+7 800 555 35 35')\r\n\t\tphoneNumber.formatInternational().should.equal('+7 800 555 35 35')\r\n\t})\r\n\r\n\tit('should get tel: URI', () => {\r\n\t\tconst phoneNumber = parsePhoneNumber('Phone: 8 (800) 555 35 35 ext. 1234.', 'RU')\r\n\t\tphoneNumber.getURI().should.equal('tel:+78005553535;ext=1234')\r\n\t})\r\n\r\n\tit('should work in edge cases', () => {\r\n\t\texpect(() => parsePhoneNumber('+78005553535', -1, {})).to.throw('Invalid second argument')\r\n\t})\r\n\r\n\tit('should throw parse errors', () => {\r\n\t\texpect(() => parsePhoneNumber('8005553535', 'XX')).to.throw('INVALID_COUNTRY')\r\n\t\texpect(() => parsePhoneNumber('+', 'RU')).to.throw('NOT_A_NUMBER')\r\n\t\texpect(() => parsePhoneNumber('a', 'RU')).to.throw('NOT_A_NUMBER')\r\n\t\texpect(() => parsePhoneNumber('1', 'RU')).to.throw('TOO_SHORT')\r\n\t\texpect(() => parsePhoneNumber('+4')).to.throw('TOO_SHORT')\r\n\t\texpect(() => parsePhoneNumber('+44')).to.throw('TOO_SHORT')\r\n\t\texpect(() => parsePhoneNumber('+443')).to.throw('TOO_SHORT')\r\n\t\texpect(() => parsePhoneNumber('+370')).to.throw('TOO_SHORT')\r\n\t\texpect(() => parsePhoneNumber('88888888888888888888', 'RU')).to.throw('TOO_LONG')\r\n\t\texpect(() => parsePhoneNumber('8 (800) 555 35 35')).to.throw('INVALID_COUNTRY')\r\n\t\texpect(() => parsePhoneNumber('+9991112233')).to.throw('INVALID_COUNTRY')\r\n\t\texpect(() => parsePhoneNumber('+9991112233', 'US')).to.throw('INVALID_COUNTRY')\r\n\t\texpect(() => parsePhoneNumber('8005553535 ', 'RU')).to.throw('TOO_LONG')\r\n\t})\r\n\r\n\tit('should parse incorrect international phone numbers', () => {\r\n\t\t// Parsing national prefixes and carrier codes\r\n\t\t// is only required for local phone numbers\r\n\t\t// but some people don't understand that\r\n\t\t// and sometimes write international phone numbers\r\n\t\t// with national prefixes (or maybe even carrier codes).\r\n\t\t// http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html\r\n\t\t// Google's original library forgives such mistakes\r\n\t\t// and so does this library, because it has been requested:\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/127\r\n\r\n\t\tlet phoneNumber\r\n\r\n\t\t// For complete numbers it should strip national prefix.\r\n\t\tphoneNumber = parsePhoneNumber('+1 1877 215 5230')\r\n\t\tphoneNumber.nationalNumber.should.equal('8772155230')\r\n\t\tphoneNumber.country.should.equal('US')\r\n\r\n\t\t// For complete numbers it should strip national prefix.\r\n\t\tphoneNumber = parsePhoneNumber('+7 8800 555 3535')\r\n\t\tphoneNumber.nationalNumber.should.equal('8005553535')\r\n\t\tphoneNumber.country.should.equal('RU')\r\n\r\n\t\t// For incomplete numbers it shouldn't strip national prefix.\r\n\t\tphoneNumber = parsePhoneNumber('+7 8800 555 353')\r\n\t\tphoneNumber.nationalNumber.should.equal('8800555353')\r\n\t\tphoneNumber.country.should.equal('RU')\r\n\t})\r\n})\r\n"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumberFromString.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumberFromString.js new file mode 100644 index 00000000..280140c0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumberFromString.js @@ -0,0 +1,11 @@ +import { normalizeArguments } from './parsePhoneNumber.js'; +import parsePhoneNumberFromString_ from './parsePhoneNumberFromString_.js'; +export default function parsePhoneNumberFromString() { + var _normalizeArguments = normalizeArguments(arguments), + text = _normalizeArguments.text, + options = _normalizeArguments.options, + metadata = _normalizeArguments.metadata; + + return parsePhoneNumberFromString_(text, options, metadata); +} +//# sourceMappingURL=parsePhoneNumberFromString.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumberFromString.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumberFromString.js.map new file mode 100644 index 00000000..d9e1d90a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumberFromString.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parsePhoneNumberFromString.js","names":["normalizeArguments","parsePhoneNumberFromString_","parsePhoneNumberFromString","arguments","text","options","metadata"],"sources":["../source/parsePhoneNumberFromString.js"],"sourcesContent":["import { normalizeArguments } from './parsePhoneNumber.js'\r\nimport parsePhoneNumberFromString_ from './parsePhoneNumberFromString_.js'\r\n\r\nexport default function parsePhoneNumberFromString() {\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\treturn parsePhoneNumberFromString_(text, options, metadata)\r\n}\r\n"],"mappings":"AAAA,SAASA,kBAAT,QAAmC,uBAAnC;AACA,OAAOC,2BAAP,MAAwC,kCAAxC;AAEA,eAAe,SAASC,0BAAT,GAAsC;EACpD,0BAAoCF,kBAAkB,CAACG,SAAD,CAAtD;EAAA,IAAQC,IAAR,uBAAQA,IAAR;EAAA,IAAcC,OAAd,uBAAcA,OAAd;EAAA,IAAuBC,QAAvB,uBAAuBA,QAAvB;;EACA,OAAOL,2BAA2B,CAACG,IAAD,EAAOC,OAAP,EAAgBC,QAAhB,CAAlC;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumberFromString.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumberFromString.test.js new file mode 100644 index 00000000..67d45d65 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumberFromString.test.js @@ -0,0 +1,87 @@ +import _parsePhoneNumberFromString from './parsePhoneNumberFromString.js'; +import metadata from '../metadata.min.json' assert { type: 'json' }; + +function parsePhoneNumberFromString() { + for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) { + parameters[_key] = arguments[_key]; + } + + parameters.push(metadata); + return _parsePhoneNumberFromString.apply(this, parameters); +} + +var USE_NON_GEOGRAPHIC_COUNTRY_CODE = false; +describe('parsePhoneNumberFromString', function () { + it('should parse phone numbers from string', function () { + parsePhoneNumberFromString('Phone: 8 (800) 555 35 35.', 'RU').nationalNumber.should.equal('8005553535'); + expect(parsePhoneNumberFromString('3', 'RU')).to.be.undefined; + }); + it('should work in edge cases', function () { + expect(parsePhoneNumberFromString('')).to.be.undefined; + }); + it('should parse phone numbers when invalid country code is passed', function () { + parsePhoneNumberFromString('Phone: +7 (800) 555 35 35.', 'XX').nationalNumber.should.equal('8005553535'); + expect(parsePhoneNumberFromString('Phone: 8 (800) 555-35-35.', 'XX')).to.be.undefined; + }); + it('should parse non-geographic numbering plan phone numbers (extended)', function () { + var phoneNumber = parsePhoneNumberFromString('+870773111632'); + phoneNumber.number.should.equal('+870773111632'); + + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + phoneNumber.country.should.equal('001'); + } else { + expect(phoneNumber.country).to.be.undefined; + } + + phoneNumber.countryCallingCode.should.equal('870'); + }); + it('should parse non-geographic numbering plan phone numbers (default country code) (extended)', function () { + var phoneNumber = parsePhoneNumberFromString('773111632', { + defaultCallingCode: '870' + }); + phoneNumber.number.should.equal('+870773111632'); + + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + phoneNumber.country.should.equal('001'); + } else { + expect(phoneNumber.country).to.be.undefined; + } + + phoneNumber.countryCallingCode.should.equal('870'); + }); + it('should determine the possibility of non-geographic phone numbers', function () { + var phoneNumber = parsePhoneNumberFromString('+870773111632'); + phoneNumber.isPossible().should.equal(true); + var phoneNumber2 = parsePhoneNumberFromString('+8707731116321'); + phoneNumber2.isPossible().should.equal(false); + }); + it('should support `extract: false` flag', function () { + var testCorrectness = function testCorrectness(number, expectedResult) { + var result = expect(parsePhoneNumberFromString(number, { + extract: false, + defaultCountry: 'US' + })); + + if (expectedResult) { + result.to.not.be.undefined; + } else { + result.to.be.undefined; + } + }; + + testCorrectness('Call: (213) 373-4253', false); + testCorrectness('(213) 373-4253x', false); + testCorrectness('(213) 373-4253', true); + testCorrectness('- (213) 373-4253 -', true); + testCorrectness('+1 (213) 373-4253', true); + testCorrectness(' +1 (213) 373-4253', false); + }); + it('should not prematurely strip a possible national prefix from Chinese numbers', function () { + // https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/57 + var phoneNumber = parsePhoneNumberFromString('+86123456789'); + phoneNumber.isPossible().should.equal(true); + phoneNumber.isValid().should.equal(false); + phoneNumber.nationalNumber.should.equal('123456789'); + }); +}); +//# sourceMappingURL=parsePhoneNumberFromString.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumberFromString.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumberFromString.test.js.map new file mode 100644 index 00000000..6ec1ebe7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumberFromString.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parsePhoneNumberFromString.test.js","names":["_parsePhoneNumberFromString","metadata","type","parsePhoneNumberFromString","parameters","push","apply","USE_NON_GEOGRAPHIC_COUNTRY_CODE","describe","it","nationalNumber","should","equal","expect","to","be","undefined","phoneNumber","number","country","countryCallingCode","defaultCallingCode","isPossible","phoneNumber2","testCorrectness","expectedResult","result","extract","defaultCountry","not","isValid"],"sources":["../source/parsePhoneNumberFromString.test.js"],"sourcesContent":["import _parsePhoneNumberFromString from './parsePhoneNumberFromString.js'\r\nimport metadata from '../metadata.min.json' assert { type: 'json' }\r\n\r\nfunction parsePhoneNumberFromString(...parameters) {\r\n\tparameters.push(metadata)\r\n\treturn _parsePhoneNumberFromString.apply(this, parameters)\r\n}\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\ndescribe('parsePhoneNumberFromString', () => {\r\n\tit('should parse phone numbers from string', () => {\r\n\t\tparsePhoneNumberFromString('Phone: 8 (800) 555 35 35.', 'RU').nationalNumber.should.equal('8005553535')\r\n\t\texpect(parsePhoneNumberFromString('3', 'RU')).to.be.undefined\r\n\t})\r\n\r\n\tit('should work in edge cases', () => {\r\n\t\texpect(parsePhoneNumberFromString('')).to.be.undefined\r\n\t})\r\n\r\n\tit('should parse phone numbers when invalid country code is passed', () => {\r\n\t\tparsePhoneNumberFromString('Phone: +7 (800) 555 35 35.', 'XX').nationalNumber.should.equal('8005553535')\r\n\t\texpect(parsePhoneNumberFromString('Phone: 8 (800) 555-35-35.', 'XX')).to.be.undefined\r\n\t})\r\n\r\n\r\n\tit('should parse non-geographic numbering plan phone numbers (extended)', () => {\r\n\t\tconst phoneNumber = parsePhoneNumberFromString('+870773111632')\r\n\t\tphoneNumber.number.should.equal('+870773111632')\r\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\tphoneNumber.country.should.equal('001')\r\n\t\t} else {\r\n\t\t\texpect(phoneNumber.country).to.be.undefined\r\n\t\t}\r\n\t\tphoneNumber.countryCallingCode.should.equal('870')\r\n\t})\r\n\r\n\tit('should parse non-geographic numbering plan phone numbers (default country code) (extended)', () => {\r\n\t\tconst phoneNumber = parsePhoneNumberFromString('773111632', { defaultCallingCode: '870' })\r\n\t\tphoneNumber.number.should.equal('+870773111632')\r\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\tphoneNumber.country.should.equal('001')\r\n\t\t} else {\r\n\t\t\texpect(phoneNumber.country).to.be.undefined\r\n\t\t}\r\n\t\tphoneNumber.countryCallingCode.should.equal('870')\r\n\t})\r\n\r\n\tit('should determine the possibility of non-geographic phone numbers', () => {\r\n\t\tconst phoneNumber = parsePhoneNumberFromString('+870773111632')\r\n\t\tphoneNumber.isPossible().should.equal(true)\r\n\t\tconst phoneNumber2 = parsePhoneNumberFromString('+8707731116321')\r\n\t\tphoneNumber2.isPossible().should.equal(false)\r\n\t})\r\n\r\n\tit('should support `extract: false` flag', () => {\r\n\t\tconst testCorrectness = (number, expectedResult) => {\r\n\t\t\tconst result = expect(parsePhoneNumberFromString(number, { extract: false, defaultCountry: 'US' }))\r\n\t\t\tif (expectedResult) {\r\n\t\t\t\tresult.to.not.be.undefined\r\n\t\t\t} else {\r\n\t\t\t\tresult.to.be.undefined\r\n\t\t\t}\r\n\t\t}\r\n\t\ttestCorrectness('Call: (213) 373-4253', false)\r\n\t\ttestCorrectness('(213) 373-4253x', false)\r\n\t\ttestCorrectness('(213) 373-4253', true)\r\n\t\ttestCorrectness('- (213) 373-4253 -', true)\r\n\t\ttestCorrectness('+1 (213) 373-4253', true)\r\n\t\ttestCorrectness(' +1 (213) 373-4253', false)\r\n\t})\r\n\r\n\tit('should not prematurely strip a possible national prefix from Chinese numbers', () => {\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/57\r\n\t\tconst phoneNumber = parsePhoneNumberFromString('+86123456789')\r\n\t\tphoneNumber.isPossible().should.equal(true)\r\n\t\tphoneNumber.isValid().should.equal(false)\r\n\t\tphoneNumber.nationalNumber.should.equal('123456789')\r\n\t})\r\n})\r\n"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumberFromString_.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumberFromString_.js new file mode 100644 index 00000000..f231dbcf --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumberFromString_.js @@ -0,0 +1,29 @@ +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import parsePhoneNumber from './parsePhoneNumber_.js'; +import ParseError from './ParseError.js'; +import { isSupportedCountry } from './metadata.js'; +export default function parsePhoneNumberFromString(text, options, metadata) { + // Validate `defaultCountry`. + if (options && options.defaultCountry && !isSupportedCountry(options.defaultCountry, metadata)) { + options = _objectSpread(_objectSpread({}, options), {}, { + defaultCountry: undefined + }); + } // Parse phone number. + + + try { + return parsePhoneNumber(text, options, metadata); + } catch (error) { + /* istanbul ignore else */ + if (error instanceof ParseError) {// + } else { + throw error; + } + } +} +//# sourceMappingURL=parsePhoneNumberFromString_.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumberFromString_.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumberFromString_.js.map new file mode 100644 index 00000000..8b27fc5c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumberFromString_.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parsePhoneNumberFromString_.js","names":["parsePhoneNumber","ParseError","isSupportedCountry","parsePhoneNumberFromString","text","options","metadata","defaultCountry","undefined","error"],"sources":["../source/parsePhoneNumberFromString_.js"],"sourcesContent":["import parsePhoneNumber from './parsePhoneNumber_.js'\r\nimport ParseError from './ParseError.js'\r\nimport { isSupportedCountry } from './metadata.js'\r\n\r\nexport default function parsePhoneNumberFromString(text, options, metadata) {\r\n\t// Validate `defaultCountry`.\r\n\tif (options && options.defaultCountry && !isSupportedCountry(options.defaultCountry, metadata)) {\r\n\t\toptions = {\r\n\t\t\t...options,\r\n\t\t\tdefaultCountry: undefined\r\n\t\t}\r\n\t}\r\n\t// Parse phone number.\r\n\ttry {\r\n\t\treturn parsePhoneNumber(text, options, metadata)\r\n\t} catch (error) {\r\n\t\t/* istanbul ignore else */\r\n\t\tif (error instanceof ParseError) {\r\n\t\t\t//\r\n\t\t} else {\r\n\t\t\tthrow error\r\n\t\t}\r\n\t}\r\n}\r\n"],"mappings":";;;;;;AAAA,OAAOA,gBAAP,MAA6B,wBAA7B;AACA,OAAOC,UAAP,MAAuB,iBAAvB;AACA,SAASC,kBAAT,QAAmC,eAAnC;AAEA,eAAe,SAASC,0BAAT,CAAoCC,IAApC,EAA0CC,OAA1C,EAAmDC,QAAnD,EAA6D;EAC3E;EACA,IAAID,OAAO,IAAIA,OAAO,CAACE,cAAnB,IAAqC,CAACL,kBAAkB,CAACG,OAAO,CAACE,cAAT,EAAyBD,QAAzB,CAA5D,EAAgG;IAC/FD,OAAO,mCACHA,OADG;MAENE,cAAc,EAAEC;IAFV,EAAP;EAIA,CAP0E,CAQ3E;;;EACA,IAAI;IACH,OAAOR,gBAAgB,CAACI,IAAD,EAAOC,OAAP,EAAgBC,QAAhB,CAAvB;EACA,CAFD,CAEE,OAAOG,KAAP,EAAc;IACf;IACA,IAAIA,KAAK,YAAYR,UAArB,EAAiC,CAChC;IACA,CAFD,MAEO;MACN,MAAMQ,KAAN;IACA;EACD;AACD"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumber_.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumber_.js new file mode 100644 index 00000000..20194ac5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumber_.js @@ -0,0 +1,13 @@ +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import parseNumber from './parse_.js'; +export default function parsePhoneNumber(text, options, metadata) { + return parseNumber(text, _objectSpread(_objectSpread({}, options), {}, { + v2: true + }), metadata); +} +//# sourceMappingURL=parsePhoneNumber_.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumber_.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumber_.js.map new file mode 100644 index 00000000..2fc94eba --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parsePhoneNumber_.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parsePhoneNumber_.js","names":["parseNumber","parsePhoneNumber","text","options","metadata","v2"],"sources":["../source/parsePhoneNumber_.js"],"sourcesContent":["import parseNumber from './parse_.js'\r\n\r\nexport default function parsePhoneNumber(text, options, metadata) {\r\n\treturn parseNumber(text, { ...options, v2: true }, metadata)\r\n}"],"mappings":";;;;;;AAAA,OAAOA,WAAP,MAAwB,aAAxB;AAEA,eAAe,SAASC,gBAAT,CAA0BC,IAA1B,EAAgCC,OAAhC,EAAyCC,QAAzC,EAAmD;EACjE,OAAOJ,WAAW,CAACE,IAAD,kCAAYC,OAAZ;IAAqBE,EAAE,EAAE;EAAzB,IAAiCD,QAAjC,CAAlB;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parse_.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parse_.js new file mode 100644 index 00000000..8d5570af --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parse_.js @@ -0,0 +1,339 @@ +// This is a port of Google Android `libphonenumber`'s +// `phonenumberutil.js` of December 31th, 2018. +// +// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js +import { VALID_DIGITS, PLUS_CHARS, MIN_LENGTH_FOR_NSN, MAX_LENGTH_FOR_NSN } from './constants.js'; +import ParseError from './ParseError.js'; +import Metadata from './metadata.js'; +import isViablePhoneNumber, { isViablePhoneNumberStart } from './helpers/isViablePhoneNumber.js'; +import extractExtension from './helpers/extension/extractExtension.js'; +import parseIncompletePhoneNumber from './parseIncompletePhoneNumber.js'; +import getCountryCallingCode from './getCountryCallingCode.js'; +import { isPossibleNumber } from './isPossibleNumber_.js'; +import { parseRFC3966 } from './helpers/RFC3966.js'; +import PhoneNumber from './PhoneNumber.js'; +import matchesEntirely from './helpers/matchesEntirely.js'; +import extractCountryCallingCode from './helpers/extractCountryCallingCode.js'; +import extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js'; +import extractNationalNumber from './helpers/extractNationalNumber.js'; +import stripIddPrefix from './helpers/stripIddPrefix.js'; +import getCountryByCallingCode from './helpers/getCountryByCallingCode.js'; // We don't allow input strings for parsing to be longer than 250 chars. +// This prevents malicious input from consuming CPU. + +var MAX_INPUT_STRING_LENGTH = 250; // This consists of the plus symbol, digits, and arabic-indic digits. + +var PHONE_NUMBER_START_PATTERN = new RegExp('[' + PLUS_CHARS + VALID_DIGITS + ']'); // Regular expression of trailing characters that we want to remove. +// A trailing `#` is sometimes used when writing phone numbers with extensions in US. +// Example: "+1 (645) 123 1234-910#" number has extension "910". + +var AFTER_PHONE_NUMBER_END_PATTERN = new RegExp('[^' + VALID_DIGITS + '#' + ']+$'); +var USE_NON_GEOGRAPHIC_COUNTRY_CODE = false; // Examples: +// +// ```js +// parse('8 (800) 555-35-35', 'RU') +// parse('8 (800) 555-35-35', 'RU', metadata) +// parse('8 (800) 555-35-35', { country: { default: 'RU' } }) +// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata) +// parse('+7 800 555 35 35') +// parse('+7 800 555 35 35', metadata) +// ``` +// + +export default function parse(text, options, metadata) { + // If assigning the `{}` default value is moved to the arguments above, + // code coverage would decrease for some weird reason. + options = options || {}; + metadata = new Metadata(metadata); // Validate `defaultCountry`. + + if (options.defaultCountry && !metadata.hasCountry(options.defaultCountry)) { + if (options.v2) { + throw new ParseError('INVALID_COUNTRY'); + } + + throw new Error("Unknown country: ".concat(options.defaultCountry)); + } // Parse the phone number. + + + var _parseInput = parseInput(text, options.v2, options.extract), + formattedPhoneNumber = _parseInput.number, + ext = _parseInput.ext, + error = _parseInput.error; // If the phone number is not viable then return nothing. + + + if (!formattedPhoneNumber) { + if (options.v2) { + if (error === 'TOO_SHORT') { + throw new ParseError('TOO_SHORT'); + } + + throw new ParseError('NOT_A_NUMBER'); + } + + return {}; + } + + var _parsePhoneNumber = parsePhoneNumber(formattedPhoneNumber, options.defaultCountry, options.defaultCallingCode, metadata), + country = _parsePhoneNumber.country, + nationalNumber = _parsePhoneNumber.nationalNumber, + countryCallingCode = _parsePhoneNumber.countryCallingCode, + carrierCode = _parsePhoneNumber.carrierCode; + + if (!metadata.hasSelectedNumberingPlan()) { + if (options.v2) { + throw new ParseError('INVALID_COUNTRY'); + } + + return {}; + } // Validate national (significant) number length. + + + if (!nationalNumber || nationalNumber.length < MIN_LENGTH_FOR_NSN) { + // Won't throw here because the regexp already demands length > 1. + + /* istanbul ignore if */ + if (options.v2) { + throw new ParseError('TOO_SHORT'); + } // Google's demo just throws an error in this case. + + + return {}; + } // Validate national (significant) number length. + // + // A sidenote: + // + // They say that sometimes national (significant) numbers + // can be longer than `MAX_LENGTH_FOR_NSN` (e.g. in Germany). + // https://github.com/googlei18n/libphonenumber/blob/7e1748645552da39c4e1ba731e47969d97bdb539/resources/phonenumber.proto#L36 + // Such numbers will just be discarded. + // + + + if (nationalNumber.length > MAX_LENGTH_FOR_NSN) { + if (options.v2) { + throw new ParseError('TOO_LONG'); + } // Google's demo just throws an error in this case. + + + return {}; + } + + if (options.v2) { + var phoneNumber = new PhoneNumber(countryCallingCode, nationalNumber, metadata.metadata); + + if (country) { + phoneNumber.country = country; + } + + if (carrierCode) { + phoneNumber.carrierCode = carrierCode; + } + + if (ext) { + phoneNumber.ext = ext; + } + + return phoneNumber; + } // Check if national phone number pattern matches the number. + // National number pattern is different for each country, + // even for those ones which are part of the "NANPA" group. + + + var valid = (options.extended ? metadata.hasSelectedNumberingPlan() : country) ? matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) : false; + + if (!options.extended) { + return valid ? result(country, nationalNumber, ext) : {}; + } // isInternational: countryCallingCode !== undefined + + + return { + country: country, + countryCallingCode: countryCallingCode, + carrierCode: carrierCode, + valid: valid, + possible: valid ? true : options.extended === true && metadata.possibleLengths() && isPossibleNumber(nationalNumber, metadata) ? true : false, + phone: nationalNumber, + ext: ext + }; +} +/** + * Extracts a formatted phone number from text. + * Doesn't guarantee that the extracted phone number + * is a valid phone number (for example, doesn't validate its length). + * @param {string} text + * @param {boolean} [extract] — If `false`, then will parse the entire `text` as a phone number. + * @param {boolean} [throwOnError] — By default, it won't throw if the text is too long. + * @return {string} + * @example + * // Returns "(213) 373-4253". + * extractFormattedPhoneNumber("Call (213) 373-4253 for assistance.") + */ + +function extractFormattedPhoneNumber(text, extract, throwOnError) { + if (!text) { + return; + } + + if (text.length > MAX_INPUT_STRING_LENGTH) { + if (throwOnError) { + throw new ParseError('TOO_LONG'); + } + + return; + } + + if (extract === false) { + return text; + } // Attempt to extract a possible number from the string passed in + + + var startsAt = text.search(PHONE_NUMBER_START_PATTERN); + + if (startsAt < 0) { + return; + } + + return text // Trim everything to the left of the phone number + .slice(startsAt) // Remove trailing non-numerical characters + .replace(AFTER_PHONE_NUMBER_END_PATTERN, ''); +} +/** + * @param {string} text - Input. + * @param {boolean} v2 - Legacy API functions don't pass `v2: true` flag. + * @param {boolean} [extract] - Whether to extract a phone number from `text`, or attempt to parse the entire text as a phone number. + * @return {object} `{ ?number, ?ext }`. + */ + + +function parseInput(text, v2, extract) { + // Parse RFC 3966 phone number URI. + if (text && text.indexOf('tel:') === 0) { + return parseRFC3966(text); + } + + var number = extractFormattedPhoneNumber(text, extract, v2); // If the phone number is not viable, then abort. + + if (!number) { + return {}; + } + + if (!isViablePhoneNumber(number)) { + if (isViablePhoneNumberStart(number)) { + return { + error: 'TOO_SHORT' + }; + } + + return {}; + } // Attempt to parse extension first, since it doesn't require region-specific + // data and we want to have the non-normalised number here. + + + var withExtensionStripped = extractExtension(number); + + if (withExtensionStripped.ext) { + return withExtensionStripped; + } + + return { + number: number + }; +} +/** + * Creates `parse()` result object. + */ + + +function result(country, nationalNumber, ext) { + var result = { + country: country, + phone: nationalNumber + }; + + if (ext) { + result.ext = ext; + } + + return result; +} +/** + * Parses a viable phone number. + * @param {string} formattedPhoneNumber — Example: "(213) 373-4253". + * @param {string} [defaultCountry] + * @param {string} [defaultCallingCode] + * @param {Metadata} metadata + * @return {object} Returns `{ country: string?, countryCallingCode: string?, nationalNumber: string? }`. + */ + + +function parsePhoneNumber(formattedPhoneNumber, defaultCountry, defaultCallingCode, metadata) { + // Extract calling code from phone number. + var _extractCountryCallin = extractCountryCallingCode(parseIncompletePhoneNumber(formattedPhoneNumber), defaultCountry, defaultCallingCode, metadata.metadata), + countryCallingCode = _extractCountryCallin.countryCallingCode, + number = _extractCountryCallin.number; // Choose a country by `countryCallingCode`. + + + var country; + + if (countryCallingCode) { + metadata.selectNumberingPlan(countryCallingCode); + } // If `formattedPhoneNumber` is in "national" format + // then `number` is defined and `countryCallingCode` isn't. + else if (number && (defaultCountry || defaultCallingCode)) { + metadata.selectNumberingPlan(defaultCountry, defaultCallingCode); + + if (defaultCountry) { + country = defaultCountry; + } else { + /* istanbul ignore if */ + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + if (metadata.isNonGeographicCallingCode(defaultCallingCode)) { + country = '001'; + } + } + } + + countryCallingCode = defaultCallingCode || getCountryCallingCode(defaultCountry, metadata.metadata); + } else return {}; + + if (!number) { + return { + countryCallingCode: countryCallingCode + }; + } + + var _extractNationalNumbe = extractNationalNumber(parseIncompletePhoneNumber(number), metadata), + nationalNumber = _extractNationalNumbe.nationalNumber, + carrierCode = _extractNationalNumbe.carrierCode; // Sometimes there are several countries + // corresponding to the same country phone code + // (e.g. NANPA countries all having `1` country phone code). + // Therefore, to reliably determine the exact country, + // national (significant) number should have been parsed first. + // + // When `metadata.json` is generated, all "ambiguous" country phone codes + // get their countries populated with the full set of + // "phone number type" regular expressions. + // + + + var exactCountry = getCountryByCallingCode(countryCallingCode, nationalNumber, metadata); + + if (exactCountry) { + country = exactCountry; + /* istanbul ignore if */ + + if (exactCountry === '001') {// Can't happen with `USE_NON_GEOGRAPHIC_COUNTRY_CODE` being `false`. + // If `USE_NON_GEOGRAPHIC_COUNTRY_CODE` is set to `true` for some reason, + // then remove the "istanbul ignore if". + } else { + metadata.country(country); + } + } + + return { + country: country, + countryCallingCode: countryCallingCode, + nationalNumber: nationalNumber, + carrierCode: carrierCode + }; +} +//# sourceMappingURL=parse_.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parse_.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parse_.js.map new file mode 100644 index 00000000..e72f651c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/parse_.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parse_.js","names":["VALID_DIGITS","PLUS_CHARS","MIN_LENGTH_FOR_NSN","MAX_LENGTH_FOR_NSN","ParseError","Metadata","isViablePhoneNumber","isViablePhoneNumberStart","extractExtension","parseIncompletePhoneNumber","getCountryCallingCode","isPossibleNumber","parseRFC3966","PhoneNumber","matchesEntirely","extractCountryCallingCode","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","extractNationalNumber","stripIddPrefix","getCountryByCallingCode","MAX_INPUT_STRING_LENGTH","PHONE_NUMBER_START_PATTERN","RegExp","AFTER_PHONE_NUMBER_END_PATTERN","USE_NON_GEOGRAPHIC_COUNTRY_CODE","parse","text","options","metadata","defaultCountry","hasCountry","v2","Error","parseInput","extract","formattedPhoneNumber","number","ext","error","parsePhoneNumber","defaultCallingCode","country","nationalNumber","countryCallingCode","carrierCode","hasSelectedNumberingPlan","length","phoneNumber","valid","extended","nationalNumberPattern","result","possible","possibleLengths","phone","extractFormattedPhoneNumber","throwOnError","startsAt","search","slice","replace","indexOf","withExtensionStripped","selectNumberingPlan","isNonGeographicCallingCode","exactCountry"],"sources":["../source/parse_.js"],"sourcesContent":["// This is a port of Google Android `libphonenumber`'s\r\n// `phonenumberutil.js` of December 31th, 2018.\r\n//\r\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\r\n\r\nimport {\r\n\tVALID_DIGITS,\r\n\tPLUS_CHARS,\r\n\tMIN_LENGTH_FOR_NSN,\r\n\tMAX_LENGTH_FOR_NSN\r\n} from './constants.js'\r\n\r\nimport ParseError from './ParseError.js'\r\nimport Metadata from './metadata.js'\r\nimport isViablePhoneNumber, { isViablePhoneNumberStart } from './helpers/isViablePhoneNumber.js'\r\nimport extractExtension from './helpers/extension/extractExtension.js'\r\nimport parseIncompletePhoneNumber from './parseIncompletePhoneNumber.js'\r\nimport getCountryCallingCode from './getCountryCallingCode.js'\r\nimport { isPossibleNumber } from './isPossibleNumber_.js'\r\nimport { parseRFC3966 } from './helpers/RFC3966.js'\r\nimport PhoneNumber from './PhoneNumber.js'\r\nimport matchesEntirely from './helpers/matchesEntirely.js'\r\nimport extractCountryCallingCode from './helpers/extractCountryCallingCode.js'\r\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js'\r\nimport extractNationalNumber from './helpers/extractNationalNumber.js'\r\nimport stripIddPrefix from './helpers/stripIddPrefix.js'\r\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js'\r\n\r\n// We don't allow input strings for parsing to be longer than 250 chars.\r\n// This prevents malicious input from consuming CPU.\r\nconst MAX_INPUT_STRING_LENGTH = 250\r\n\r\n// This consists of the plus symbol, digits, and arabic-indic digits.\r\nconst PHONE_NUMBER_START_PATTERN = new RegExp('[' + PLUS_CHARS + VALID_DIGITS + ']')\r\n\r\n// Regular expression of trailing characters that we want to remove.\r\n// A trailing `#` is sometimes used when writing phone numbers with extensions in US.\r\n// Example: \"+1 (645) 123 1234-910#\" number has extension \"910\".\r\nconst AFTER_PHONE_NUMBER_END_PATTERN = new RegExp('[^' + VALID_DIGITS + '#' + ']+$')\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\n// Examples:\r\n//\r\n// ```js\r\n// parse('8 (800) 555-35-35', 'RU')\r\n// parse('8 (800) 555-35-35', 'RU', metadata)\r\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } })\r\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata)\r\n// parse('+7 800 555 35 35')\r\n// parse('+7 800 555 35 35', metadata)\r\n// ```\r\n//\r\nexport default function parse(text, options, metadata) {\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\t// Validate `defaultCountry`.\r\n\tif (options.defaultCountry && !metadata.hasCountry(options.defaultCountry)) {\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('INVALID_COUNTRY')\r\n\t\t}\r\n\t\tthrow new Error(`Unknown country: ${options.defaultCountry}`)\r\n\t}\r\n\r\n\t// Parse the phone number.\r\n\tconst { number: formattedPhoneNumber, ext, error } = parseInput(text, options.v2, options.extract)\r\n\r\n\t// If the phone number is not viable then return nothing.\r\n\tif (!formattedPhoneNumber) {\r\n\t\tif (options.v2) {\r\n\t\t\tif (error === 'TOO_SHORT') {\r\n\t\t\t\tthrow new ParseError('TOO_SHORT')\r\n\t\t\t}\r\n\t\t\tthrow new ParseError('NOT_A_NUMBER')\r\n\t\t}\r\n\t\treturn {}\r\n\t}\r\n\r\n\tconst {\r\n\t\tcountry,\r\n\t\tnationalNumber,\r\n\t\tcountryCallingCode,\r\n\t\tcarrierCode\r\n\t} = parsePhoneNumber(\r\n\t\tformattedPhoneNumber,\r\n\t\toptions.defaultCountry,\r\n\t\toptions.defaultCallingCode,\r\n\t\tmetadata\r\n\t)\r\n\r\n\tif (!metadata.hasSelectedNumberingPlan()) {\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('INVALID_COUNTRY')\r\n\t\t}\r\n\t\treturn {}\r\n\t}\r\n\r\n\t// Validate national (significant) number length.\r\n\tif (!nationalNumber || nationalNumber.length < MIN_LENGTH_FOR_NSN) {\r\n\t\t// Won't throw here because the regexp already demands length > 1.\r\n\t\t/* istanbul ignore if */\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('TOO_SHORT')\r\n\t\t}\r\n\t\t// Google's demo just throws an error in this case.\r\n\t\treturn {}\r\n\t}\r\n\r\n\t// Validate national (significant) number length.\r\n\t//\r\n\t// A sidenote:\r\n\t//\r\n\t// They say that sometimes national (significant) numbers\r\n\t// can be longer than `MAX_LENGTH_FOR_NSN` (e.g. in Germany).\r\n\t// https://github.com/googlei18n/libphonenumber/blob/7e1748645552da39c4e1ba731e47969d97bdb539/resources/phonenumber.proto#L36\r\n\t// Such numbers will just be discarded.\r\n\t//\r\n\tif (nationalNumber.length > MAX_LENGTH_FOR_NSN) {\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('TOO_LONG')\r\n\t\t}\r\n\t\t// Google's demo just throws an error in this case.\r\n\t\treturn {}\r\n\t}\r\n\r\n\tif (options.v2) {\r\n\t\tconst phoneNumber = new PhoneNumber(\r\n\t\t\tcountryCallingCode,\r\n\t\t\tnationalNumber,\r\n\t\t\tmetadata.metadata\r\n\t\t)\r\n\t\tif (country) {\r\n\t\t\tphoneNumber.country = country\r\n\t\t}\r\n\t\tif (carrierCode) {\r\n\t\t\tphoneNumber.carrierCode = carrierCode\r\n\t\t}\r\n\t\tif (ext) {\r\n\t\t\tphoneNumber.ext = ext\r\n\t\t}\r\n\t\treturn phoneNumber\r\n\t}\r\n\r\n\t// Check if national phone number pattern matches the number.\r\n\t// National number pattern is different for each country,\r\n\t// even for those ones which are part of the \"NANPA\" group.\r\n\tconst valid = (options.extended ? metadata.hasSelectedNumberingPlan() : country) ?\r\n\t\tmatchesEntirely(nationalNumber, metadata.nationalNumberPattern()) :\r\n\t\tfalse\r\n\r\n\tif (!options.extended) {\r\n\t\treturn valid ? result(country, nationalNumber, ext) : {}\r\n\t}\r\n\r\n\t// isInternational: countryCallingCode !== undefined\r\n\r\n\treturn {\r\n\t\tcountry,\r\n\t\tcountryCallingCode,\r\n\t\tcarrierCode,\r\n\t\tvalid,\r\n\t\tpossible: valid ? true : (\r\n\t\t\toptions.extended === true &&\r\n\t\t\tmetadata.possibleLengths() &&\r\n\t\t\tisPossibleNumber(nationalNumber, metadata) ? true : false\r\n\t\t),\r\n\t\tphone: nationalNumber,\r\n\t\text\r\n\t}\r\n}\r\n\r\n/**\r\n * Extracts a formatted phone number from text.\r\n * Doesn't guarantee that the extracted phone number\r\n * is a valid phone number (for example, doesn't validate its length).\r\n * @param {string} text\r\n * @param {boolean} [extract] — If `false`, then will parse the entire `text` as a phone number.\r\n * @param {boolean} [throwOnError] — By default, it won't throw if the text is too long.\r\n * @return {string}\r\n * @example\r\n * // Returns \"(213) 373-4253\".\r\n * extractFormattedPhoneNumber(\"Call (213) 373-4253 for assistance.\")\r\n */\r\nfunction extractFormattedPhoneNumber(text, extract, throwOnError) {\r\n\tif (!text) {\r\n\t\treturn\r\n\t}\r\n\tif (text.length > MAX_INPUT_STRING_LENGTH) {\r\n\t\tif (throwOnError) {\r\n\t\t\tthrow new ParseError('TOO_LONG')\r\n\t\t}\r\n\t\treturn\r\n\t}\r\n\tif (extract === false) {\r\n\t\treturn text\r\n\t}\r\n\t// Attempt to extract a possible number from the string passed in\r\n\tconst startsAt = text.search(PHONE_NUMBER_START_PATTERN)\r\n\tif (startsAt < 0) {\r\n\t\treturn\r\n\t}\r\n\treturn text\r\n\t\t// Trim everything to the left of the phone number\r\n\t\t.slice(startsAt)\r\n\t\t// Remove trailing non-numerical characters\r\n\t\t.replace(AFTER_PHONE_NUMBER_END_PATTERN, '')\r\n}\r\n\r\n/**\r\n * @param {string} text - Input.\r\n * @param {boolean} v2 - Legacy API functions don't pass `v2: true` flag.\r\n * @param {boolean} [extract] - Whether to extract a phone number from `text`, or attempt to parse the entire text as a phone number.\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\r\nfunction parseInput(text, v2, extract) {\r\n\t// Parse RFC 3966 phone number URI.\r\n\tif (text && text.indexOf('tel:') === 0) {\r\n\t\treturn parseRFC3966(text)\r\n\t}\r\n\tlet number = extractFormattedPhoneNumber(text, extract, v2)\r\n\t// If the phone number is not viable, then abort.\r\n\tif (!number) {\r\n\t\treturn {}\r\n\t}\r\n\tif (!isViablePhoneNumber(number)) {\r\n\t\tif (isViablePhoneNumberStart(number)) {\r\n\t\t\treturn { error: 'TOO_SHORT' }\r\n\t\t}\r\n\t\treturn {}\r\n\t}\r\n\t// Attempt to parse extension first, since it doesn't require region-specific\r\n\t// data and we want to have the non-normalised number here.\r\n\tconst withExtensionStripped = extractExtension(number)\r\n\tif (withExtensionStripped.ext) {\r\n\t\treturn withExtensionStripped\r\n\t}\r\n\treturn { number }\r\n}\r\n\r\n/**\r\n * Creates `parse()` result object.\r\n */\r\nfunction result(country, nationalNumber, ext) {\r\n\tconst result = {\r\n\t\tcountry,\r\n\t\tphone: nationalNumber\r\n\t}\r\n\tif (ext) {\r\n\t\tresult.ext = ext\r\n\t}\r\n\treturn result\r\n}\r\n\r\n/**\r\n * Parses a viable phone number.\r\n * @param {string} formattedPhoneNumber — Example: \"(213) 373-4253\".\r\n * @param {string} [defaultCountry]\r\n * @param {string} [defaultCallingCode]\r\n * @param {Metadata} metadata\r\n * @return {object} Returns `{ country: string?, countryCallingCode: string?, nationalNumber: string? }`.\r\n */\r\nfunction parsePhoneNumber(\r\n\tformattedPhoneNumber,\r\n\tdefaultCountry,\r\n\tdefaultCallingCode,\r\n\tmetadata\r\n) {\r\n\t// Extract calling code from phone number.\r\n\tlet { countryCallingCode, number } = extractCountryCallingCode(\r\n\t\tparseIncompletePhoneNumber(formattedPhoneNumber),\r\n\t\tdefaultCountry,\r\n\t\tdefaultCallingCode,\r\n\t\tmetadata.metadata\r\n\t)\r\n\r\n\t// Choose a country by `countryCallingCode`.\r\n\tlet country\r\n\tif (countryCallingCode) {\r\n\t\tmetadata.selectNumberingPlan(countryCallingCode)\r\n\t}\r\n\t// If `formattedPhoneNumber` is in \"national\" format\r\n\t// then `number` is defined and `countryCallingCode` isn't.\r\n\telse if (number && (defaultCountry || defaultCallingCode)) {\r\n\t\tmetadata.selectNumberingPlan(defaultCountry, defaultCallingCode)\r\n\t\tif (defaultCountry) {\r\n\t\t\tcountry = defaultCountry\r\n\t\t} else {\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\t\tif (metadata.isNonGeographicCallingCode(defaultCallingCode)) {\r\n\t\t\t\t\tcountry = '001'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tcountryCallingCode = defaultCallingCode || getCountryCallingCode(defaultCountry, metadata.metadata)\r\n\t}\r\n\telse return {}\r\n\r\n\tif (!number) {\r\n\t\treturn { countryCallingCode }\r\n\t}\r\n\r\n\tconst {\r\n\t\tnationalNumber,\r\n\t\tcarrierCode\r\n\t} = extractNationalNumber(\r\n\t\tparseIncompletePhoneNumber(number),\r\n\t\tmetadata\r\n\t)\r\n\r\n\t// Sometimes there are several countries\r\n\t// corresponding to the same country phone code\r\n\t// (e.g. NANPA countries all having `1` country phone code).\r\n\t// Therefore, to reliably determine the exact country,\r\n\t// national (significant) number should have been parsed first.\r\n\t//\r\n\t// When `metadata.json` is generated, all \"ambiguous\" country phone codes\r\n\t// get their countries populated with the full set of\r\n\t// \"phone number type\" regular expressions.\r\n\t//\r\n\tconst exactCountry = getCountryByCallingCode(countryCallingCode, nationalNumber, metadata)\r\n\tif (exactCountry) {\r\n\t\tcountry = exactCountry\r\n\t\t/* istanbul ignore if */\r\n\t\tif (exactCountry === '001') {\r\n\t\t\t// Can't happen with `USE_NON_GEOGRAPHIC_COUNTRY_CODE` being `false`.\r\n\t\t\t// If `USE_NON_GEOGRAPHIC_COUNTRY_CODE` is set to `true` for some reason,\r\n\t\t\t// then remove the \"istanbul ignore if\".\r\n\t\t} else {\r\n\t\t\tmetadata.country(country)\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\tcountry,\r\n\t\tcountryCallingCode,\r\n\t\tnationalNumber,\r\n\t\tcarrierCode\r\n\t}\r\n}"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchNumbers.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchNumbers.js new file mode 100644 index 00000000..86ca7876 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchNumbers.js @@ -0,0 +1,33 @@ +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import { normalizeArguments } from './parsePhoneNumber.js'; +import PhoneNumberMatcher from './PhoneNumberMatcher.js'; +/** + * @return ES6 `for ... of` iterator. + */ + +export default function searchNumbers() { + var _normalizeArguments = normalizeArguments(arguments), + text = _normalizeArguments.text, + options = _normalizeArguments.options, + metadata = _normalizeArguments.metadata; + + var matcher = new PhoneNumberMatcher(text, options, metadata); + return _defineProperty({}, Symbol.iterator, function () { + return { + next: function next() { + if (matcher.hasNext()) { + return { + done: false, + value: matcher.next() + }; + } + + return { + done: true + }; + } + }; + }); +} +//# sourceMappingURL=searchNumbers.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchNumbers.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchNumbers.js.map new file mode 100644 index 00000000..13a43643 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchNumbers.js.map @@ -0,0 +1 @@ +{"version":3,"file":"searchNumbers.js","names":["normalizeArguments","PhoneNumberMatcher","searchNumbers","arguments","text","options","metadata","matcher","Symbol","iterator","next","hasNext","done","value"],"sources":["../source/searchNumbers.js"],"sourcesContent":["import { normalizeArguments } from './parsePhoneNumber.js'\r\nimport PhoneNumberMatcher from './PhoneNumberMatcher.js'\r\n\r\n/**\r\n * @return ES6 `for ... of` iterator.\r\n */\r\nexport default function searchNumbers()\r\n{\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\r\n\tconst matcher = new PhoneNumberMatcher(text, options, metadata)\r\n\r\n\treturn {\r\n\t\t[Symbol.iterator]() {\r\n\t\t\treturn {\r\n\t \t\tnext: () => {\r\n\t \t\t\tif (matcher.hasNext()) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tdone: false,\r\n\t\t\t\t\t\t\tvalue: matcher.next()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tdone: true\r\n\t\t\t\t\t}\r\n\t \t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"],"mappings":";;AAAA,SAASA,kBAAT,QAAmC,uBAAnC;AACA,OAAOC,kBAAP,MAA+B,yBAA/B;AAEA;AACA;AACA;;AACA,eAAe,SAASC,aAAT,GACf;EACC,0BAAoCF,kBAAkB,CAACG,SAAD,CAAtD;EAAA,IAAQC,IAAR,uBAAQA,IAAR;EAAA,IAAcC,OAAd,uBAAcA,OAAd;EAAA,IAAuBC,QAAvB,uBAAuBA,QAAvB;;EAEA,IAAMC,OAAO,GAAG,IAAIN,kBAAJ,CAAuBG,IAAvB,EAA6BC,OAA7B,EAAsCC,QAAtC,CAAhB;EAEA,2BACEE,MAAM,CAACC,QADT,cACqB;IACnB,OAAO;MACHC,IAAI,EAAE,gBAAM;QACX,IAAIH,OAAO,CAACI,OAAR,EAAJ,EAAuB;UACzB,OAAO;YACNC,IAAI,EAAE,KADA;YAENC,KAAK,EAAEN,OAAO,CAACG,IAAR;UAFD,CAAP;QAIA;;QACD,OAAO;UACNE,IAAI,EAAE;QADA,CAAP;MAGG;IAXE,CAAP;EAaA,CAfF;AAiBA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchNumbers.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchNumbers.test.js new file mode 100644 index 00000000..f9d8216b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchNumbers.test.js @@ -0,0 +1,33 @@ +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +import searchNumbers from './searchNumbers.js'; +import metadata from '../metadata.min.json' assert { type: 'json' }; +describe('searchNumbers', function () { + it('should iterate', function () { + var expectedNumbers = [{ + country: 'RU', + phone: '8005553535', + // number : '+7 (800) 555-35-35', + startsAt: 14, + endsAt: 32 + }, { + country: 'US', + phone: '2133734253', + // number : '(213) 373-4253', + startsAt: 41, + endsAt: 55 + }]; + + for (var _iterator = _createForOfIteratorHelperLoose(searchNumbers('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', metadata)), _step; !(_step = _iterator()).done;) { + var number = _step.value; + number.should.deep.equal(expectedNumbers.shift()); + } + + expectedNumbers.length.should.equal(0); + }); +}); +//# sourceMappingURL=searchNumbers.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchNumbers.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchNumbers.test.js.map new file mode 100644 index 00000000..f9c0d8cb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchNumbers.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"searchNumbers.test.js","names":["searchNumbers","metadata","type","describe","it","expectedNumbers","country","phone","startsAt","endsAt","number","should","deep","equal","shift","length"],"sources":["../source/searchNumbers.test.js"],"sourcesContent":["import searchNumbers from './searchNumbers.js'\r\nimport metadata from '../metadata.min.json' assert { type: 'json' }\r\n\r\ndescribe('searchNumbers', () => {\r\n\tit('should iterate', () => {\r\n\t\tconst expectedNumbers =[{\r\n\t\t\tcountry : 'RU',\r\n\t\t\tphone : '8005553535',\r\n\t\t\t// number : '+7 (800) 555-35-35',\r\n\t\t\tstartsAt : 14,\r\n\t\t\tendsAt : 32\r\n\t\t}, {\r\n\t\t\tcountry : 'US',\r\n\t\t\tphone : '2133734253',\r\n\t\t\t// number : '(213) 373-4253',\r\n\t\t\tstartsAt : 41,\r\n\t\t\tendsAt : 55\r\n\t\t}]\r\n\r\n\t\tfor (const number of searchNumbers('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', metadata)) {\r\n\t\t\tnumber.should.deep.equal(expectedNumbers.shift())\r\n\t\t}\r\n\r\n\t\texpectedNumbers.length.should.equal(0)\r\n\t})\r\n})"],"mappings":";;;;;;AAAA,OAAOA,aAAP,MAA0B,oBAA1B;AACA,OAAOC,QAAP,MAAqB,sBAArB,UAAqDC,IAAI,EAAE,MAA3D;AAEAC,QAAQ,CAAC,eAAD,EAAkB,YAAM;EAC/BC,EAAE,CAAC,gBAAD,EAAmB,YAAM;IAC1B,IAAMC,eAAe,GAAE,CAAC;MACvBC,OAAO,EAAG,IADa;MAEvBC,KAAK,EAAK,YAFa;MAGvB;MACAC,QAAQ,EAAG,EAJY;MAKvBC,MAAM,EAAK;IALY,CAAD,EAMpB;MACFH,OAAO,EAAG,IADR;MAEFC,KAAK,EAAK,YAFR;MAGF;MACAC,QAAQ,EAAG,EAJT;MAKFC,MAAM,EAAK;IALT,CANoB,CAAvB;;IAcA,qDAAqBT,aAAa,CAAC,qFAAD,EAAwF,IAAxF,EAA8FC,QAA9F,CAAlC,wCAA2I;MAAA,IAAhIS,MAAgI;MAC1IA,MAAM,CAACC,MAAP,CAAcC,IAAd,CAAmBC,KAAnB,CAAyBR,eAAe,CAACS,KAAhB,EAAzB;IACA;;IAEDT,eAAe,CAACU,MAAhB,CAAuBJ,MAAvB,CAA8BE,KAA9B,CAAoC,CAApC;EACA,CApBC,CAAF;AAqBA,CAtBO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchPhoneNumbersInText.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchPhoneNumbersInText.js new file mode 100644 index 00000000..89fb8c2c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchPhoneNumbersInText.js @@ -0,0 +1,7 @@ +import searchNumbers from './searchNumbers.js'; +import { getArguments } from './findPhoneNumbersInText.js'; +export default function searchPhoneNumbersInText(text, defaultCountry, options, metadata) { + var args = getArguments(defaultCountry, options, metadata); + return searchNumbers(text, args.options, args.metadata); +} +//# sourceMappingURL=searchPhoneNumbersInText.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchPhoneNumbersInText.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchPhoneNumbersInText.js.map new file mode 100644 index 00000000..0dc27162 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchPhoneNumbersInText.js.map @@ -0,0 +1 @@ +{"version":3,"file":"searchPhoneNumbersInText.js","names":["searchNumbers","getArguments","searchPhoneNumbersInText","text","defaultCountry","options","metadata","args"],"sources":["../source/searchPhoneNumbersInText.js"],"sourcesContent":["import searchNumbers from './searchNumbers.js'\r\nimport { getArguments } from './findPhoneNumbersInText.js'\r\n\r\nexport default function searchPhoneNumbersInText(text, defaultCountry, options, metadata) {\r\n\tconst args = getArguments(defaultCountry, options, metadata)\r\n\treturn searchNumbers(text, args.options, args.metadata)\r\n}"],"mappings":"AAAA,OAAOA,aAAP,MAA0B,oBAA1B;AACA,SAASC,YAAT,QAA6B,6BAA7B;AAEA,eAAe,SAASC,wBAAT,CAAkCC,IAAlC,EAAwCC,cAAxC,EAAwDC,OAAxD,EAAiEC,QAAjE,EAA2E;EACzF,IAAMC,IAAI,GAAGN,YAAY,CAACG,cAAD,EAAiBC,OAAjB,EAA0BC,QAA1B,CAAzB;EACA,OAAON,aAAa,CAACG,IAAD,EAAOI,IAAI,CAACF,OAAZ,EAAqBE,IAAI,CAACD,QAA1B,CAApB;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchPhoneNumbersInText.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchPhoneNumbersInText.test.js new file mode 100644 index 00000000..7feff89c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchPhoneNumbersInText.test.js @@ -0,0 +1,29 @@ +function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +import searchPhoneNumbersInText from './searchPhoneNumbersInText.js'; +import metadata from '../metadata.min.json' assert { type: 'json' }; +describe('searchPhoneNumbersInText', function () { + it('should find phone numbers (with default country)', function () { + var NUMBERS = ['+78005553535', '+12133734253']; + + for (var _iterator = _createForOfIteratorHelperLoose(searchPhoneNumbersInText('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', metadata)), _step; !(_step = _iterator()).done;) { + var number = _step.value; + number.number.number.should.equal(NUMBERS[0]); + NUMBERS.shift(); + } + }); + it('should find phone numbers', function () { + var NUMBERS = ['+78005553535', '+12133734253']; + + for (var _iterator2 = _createForOfIteratorHelperLoose(searchPhoneNumbersInText('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', metadata)), _step2; !(_step2 = _iterator2()).done;) { + var number = _step2.value; + number.number.number.should.equal(NUMBERS[0]); + NUMBERS.shift(); + } + }); +}); +//# sourceMappingURL=searchPhoneNumbersInText.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchPhoneNumbersInText.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchPhoneNumbersInText.test.js.map new file mode 100644 index 00000000..346e7c5b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/searchPhoneNumbersInText.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"searchPhoneNumbersInText.test.js","names":["searchPhoneNumbersInText","metadata","type","describe","it","NUMBERS","number","should","equal","shift"],"sources":["../source/searchPhoneNumbersInText.test.js"],"sourcesContent":["import searchPhoneNumbersInText from './searchPhoneNumbersInText.js'\r\nimport metadata from '../metadata.min.json' assert { type: 'json' }\r\n\r\ndescribe('searchPhoneNumbersInText', () => {\r\n\tit('should find phone numbers (with default country)', () => {\r\n\t\tconst NUMBERS = ['+78005553535', '+12133734253']\r\n\t\tfor (const number of searchPhoneNumbersInText('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', metadata)) {\r\n\t\t\tnumber.number.number.should.equal(NUMBERS[0])\r\n\t\t\tNUMBERS.shift()\r\n\t\t}\r\n\t})\r\n\r\n\tit('should find phone numbers', () => {\r\n\t\tconst NUMBERS = ['+78005553535', '+12133734253']\r\n\t\tfor (const number of searchPhoneNumbersInText('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', metadata)) {\r\n\t\t\tnumber.number.number.should.equal(NUMBERS[0])\r\n\t\t\tNUMBERS.shift()\r\n\t\t}\r\n\t})\r\n})"],"mappings":";;;;;;AAAA,OAAOA,wBAAP,MAAqC,+BAArC;AACA,OAAOC,QAAP,MAAqB,sBAArB,UAAqDC,IAAI,EAAE,MAA3D;AAEAC,QAAQ,CAAC,0BAAD,EAA6B,YAAM;EAC1CC,EAAE,CAAC,kDAAD,EAAqD,YAAM;IAC5D,IAAMC,OAAO,GAAG,CAAC,cAAD,EAAiB,cAAjB,CAAhB;;IACA,qDAAqBL,wBAAwB,CAAC,qFAAD,EAAwF,IAAxF,EAA8FC,QAA9F,CAA7C,wCAAsJ;MAAA,IAA3IK,MAA2I;MACrJA,MAAM,CAACA,MAAP,CAAcA,MAAd,CAAqBC,MAArB,CAA4BC,KAA5B,CAAkCH,OAAO,CAAC,CAAD,CAAzC;MACAA,OAAO,CAACI,KAAR;IACA;EACD,CANC,CAAF;EAQAL,EAAE,CAAC,2BAAD,EAA8B,YAAM;IACrC,IAAMC,OAAO,GAAG,CAAC,cAAD,EAAiB,cAAjB,CAAhB;;IACA,sDAAqBL,wBAAwB,CAAC,qFAAD,EAAwFC,QAAxF,CAA7C,2CAAgJ;MAAA,IAArIK,MAAqI;MAC/IA,MAAM,CAACA,MAAP,CAAcA,MAAd,CAAqBC,MAArB,CAA4BC,KAA5B,CAAkCH,OAAO,CAAC,CAAD,CAAzC;MACAA,OAAO,CAACI,KAAR;IACA;EACD,CANC,CAAF;AAOA,CAhBO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/tools/semver-compare.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/tools/semver-compare.js new file mode 100644 index 00000000..f9c0b0e3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/tools/semver-compare.js @@ -0,0 +1,30 @@ +// Copy-pasted from: +// https://github.com/substack/semver-compare/blob/master/index.js +// +// Inlining this function because some users reported issues with +// importing from `semver-compare` in a browser with ES6 "native" modules. +// +// Fixes `semver-compare` not being able to compare versions with alpha/beta/etc "tags". +// https://github.com/catamphetamine/libphonenumber-js/issues/381 +export default function (a, b) { + a = a.split('-'); + b = b.split('-'); + var pa = a[0].split('.'); + var pb = b[0].split('.'); + + for (var i = 0; i < 3; i++) { + var na = Number(pa[i]); + var nb = Number(pb[i]); + if (na > nb) return 1; + if (nb > na) return -1; + if (!isNaN(na) && isNaN(nb)) return 1; + if (isNaN(na) && !isNaN(nb)) return -1; + } + + if (a[1] && b[1]) { + return a[1] > b[1] ? 1 : a[1] < b[1] ? -1 : 0; + } + + return !a[1] && b[1] ? 1 : a[1] && !b[1] ? -1 : 0; +} +//# sourceMappingURL=semver-compare.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/tools/semver-compare.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/tools/semver-compare.js.map new file mode 100644 index 00000000..5ebc6305 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/tools/semver-compare.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semver-compare.js","names":["a","b","split","pa","pb","i","na","Number","nb","isNaN"],"sources":["../../source/tools/semver-compare.js"],"sourcesContent":["// Copy-pasted from:\r\n// https://github.com/substack/semver-compare/blob/master/index.js\r\n//\r\n// Inlining this function because some users reported issues with\r\n// importing from `semver-compare` in a browser with ES6 \"native\" modules.\r\n//\r\n// Fixes `semver-compare` not being able to compare versions with alpha/beta/etc \"tags\".\r\n// https://github.com/catamphetamine/libphonenumber-js/issues/381\r\nexport default function(a, b) {\r\n a = a.split('-')\r\n b = b.split('-')\r\n var pa = a[0].split('.')\r\n var pb = b[0].split('.')\r\n for (var i = 0; i < 3; i++) {\r\n var na = Number(pa[i])\r\n var nb = Number(pb[i])\r\n if (na > nb) return 1\r\n if (nb > na) return -1\r\n if (!isNaN(na) && isNaN(nb)) return 1\r\n if (isNaN(na) && !isNaN(nb)) return -1\r\n }\r\n if (a[1] && b[1]) {\r\n return a[1] > b[1] ? 1 : (a[1] < b[1] ? -1 : 0)\r\n }\r\n return !a[1] && b[1] ? 1 : (a[1] && !b[1] ? -1 : 0)\r\n}"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,UAASA,CAAT,EAAYC,CAAZ,EAAe;EAC1BD,CAAC,GAAGA,CAAC,CAACE,KAAF,CAAQ,GAAR,CAAJ;EACAD,CAAC,GAAGA,CAAC,CAACC,KAAF,CAAQ,GAAR,CAAJ;EACA,IAAIC,EAAE,GAAGH,CAAC,CAAC,CAAD,CAAD,CAAKE,KAAL,CAAW,GAAX,CAAT;EACA,IAAIE,EAAE,GAAGH,CAAC,CAAC,CAAD,CAAD,CAAKC,KAAL,CAAW,GAAX,CAAT;;EACA,KAAK,IAAIG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuBA,CAAC,EAAxB,EAA4B;IACxB,IAAIC,EAAE,GAAGC,MAAM,CAACJ,EAAE,CAACE,CAAD,CAAH,CAAf;IACA,IAAIG,EAAE,GAAGD,MAAM,CAACH,EAAE,CAACC,CAAD,CAAH,CAAf;IACA,IAAIC,EAAE,GAAGE,EAAT,EAAa,OAAO,CAAP;IACb,IAAIA,EAAE,GAAGF,EAAT,EAAa,OAAO,CAAC,CAAR;IACb,IAAI,CAACG,KAAK,CAACH,EAAD,CAAN,IAAcG,KAAK,CAACD,EAAD,CAAvB,EAA6B,OAAO,CAAP;IAC7B,IAAIC,KAAK,CAACH,EAAD,CAAL,IAAa,CAACG,KAAK,CAACD,EAAD,CAAvB,EAA6B,OAAO,CAAC,CAAR;EAChC;;EACD,IAAIR,CAAC,CAAC,CAAD,CAAD,IAAQC,CAAC,CAAC,CAAD,CAAb,EAAkB;IACd,OAAOD,CAAC,CAAC,CAAD,CAAD,GAAOC,CAAC,CAAC,CAAD,CAAR,GAAc,CAAd,GAAmBD,CAAC,CAAC,CAAD,CAAD,GAAOC,CAAC,CAAC,CAAD,CAAR,GAAc,CAAC,CAAf,GAAmB,CAA7C;EACH;;EACD,OAAO,CAACD,CAAC,CAAC,CAAD,CAAF,IAASC,CAAC,CAAC,CAAD,CAAV,GAAgB,CAAhB,GAAqBD,CAAC,CAAC,CAAD,CAAD,IAAQ,CAACC,CAAC,CAAC,CAAD,CAAV,GAAgB,CAAC,CAAjB,GAAqB,CAAjD;AACH"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/tools/semver-compare.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/tools/semver-compare.test.js new file mode 100644 index 00000000..15b72959 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/tools/semver-compare.test.js @@ -0,0 +1,8 @@ +import semverCompare from './semver-compare.js'; +describe('semver-compare', function () { + it('should compare versions', function () { + var versions = ['1.2.3', '4.11.6', '4.2.0', '1.5.19', '1.5.6', '1.5.4', '1.5.5-alpha.beta', '1.5.5-alpha', '1.5.5', '1.5.5-rc.1', '1.5.5-beta.0', '4.1.3', '2.3.1', '10.5.5', '11.3.0']; + versions.sort(semverCompare).should.deep.equal(['1.2.3', '1.5.4', '1.5.5-alpha', '1.5.5-alpha.beta', '1.5.5-beta.0', '1.5.5-rc.1', '1.5.5', '1.5.6', '1.5.19', '2.3.1', '4.1.3', '4.2.0', '4.11.6', '10.5.5', '11.3.0']); + }); +}); +//# sourceMappingURL=semver-compare.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/tools/semver-compare.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/tools/semver-compare.test.js.map new file mode 100644 index 00000000..eea35275 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/tools/semver-compare.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"semver-compare.test.js","names":["semverCompare","describe","it","versions","sort","should","deep","equal"],"sources":["../../source/tools/semver-compare.test.js"],"sourcesContent":["import semverCompare from './semver-compare.js'\r\n\r\ndescribe('semver-compare', () => {\r\n\tit('should compare versions', () => {\r\n\t\tconst versions = [\r\n\t\t\t'1.2.3',\r\n\t\t\t'4.11.6',\r\n\t\t\t'4.2.0',\r\n\t\t\t'1.5.19',\r\n\t\t\t'1.5.6',\r\n\t\t\t'1.5.4',\r\n\t\t\t'1.5.5-alpha.beta',\r\n\t\t\t'1.5.5-alpha',\r\n\t\t\t'1.5.5',\r\n\t\t\t'1.5.5-rc.1',\r\n\t\t\t'1.5.5-beta.0',\r\n\t\t\t'4.1.3',\r\n\t\t\t'2.3.1',\r\n\t\t\t'10.5.5',\r\n\t\t\t'11.3.0'\r\n\t\t]\r\n\t\tversions.sort(semverCompare).should.deep.equal([\r\n\t\t\t'1.2.3',\r\n\t\t\t'1.5.4',\r\n\t\t\t'1.5.5-alpha',\r\n\t\t\t'1.5.5-alpha.beta',\r\n\t\t\t'1.5.5-beta.0',\r\n\t\t\t'1.5.5-rc.1',\r\n\t\t\t'1.5.5',\r\n\t\t\t'1.5.6',\r\n\t\t\t'1.5.19',\r\n\t\t\t'2.3.1',\r\n\t\t\t'4.1.3',\r\n\t\t\t'4.2.0',\r\n\t\t\t'4.11.6',\r\n\t\t\t'10.5.5',\r\n\t\t\t'11.3.0'\r\n\t\t])\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,aAAP,MAA0B,qBAA1B;AAEAC,QAAQ,CAAC,gBAAD,EAAmB,YAAM;EAChCC,EAAE,CAAC,yBAAD,EAA4B,YAAM;IACnC,IAAMC,QAAQ,GAAG,CAChB,OADgB,EAEhB,QAFgB,EAGhB,OAHgB,EAIhB,QAJgB,EAKhB,OALgB,EAMhB,OANgB,EAOhB,kBAPgB,EAQhB,aARgB,EAShB,OATgB,EAUhB,YAVgB,EAWhB,cAXgB,EAYhB,OAZgB,EAahB,OAbgB,EAchB,QAdgB,EAehB,QAfgB,CAAjB;IAiBAA,QAAQ,CAACC,IAAT,CAAcJ,aAAd,EAA6BK,MAA7B,CAAoCC,IAApC,CAAyCC,KAAzC,CAA+C,CAC9C,OAD8C,EAE9C,OAF8C,EAG9C,aAH8C,EAI9C,kBAJ8C,EAK9C,cAL8C,EAM9C,YAN8C,EAO9C,OAP8C,EAQ9C,OAR8C,EAS9C,QAT8C,EAU9C,OAV8C,EAW9C,OAX8C,EAY9C,OAZ8C,EAa9C,QAb8C,EAc9C,QAd8C,EAe9C,QAf8C,CAA/C;EAiBA,CAnCC,CAAF;AAoCA,CArCO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validate.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validate.js new file mode 100644 index 00000000..3b008775 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validate.js @@ -0,0 +1,12 @@ +import _isValidNumber from './validate_.js'; +import { normalizeArguments } from './getNumberType.js'; // Finds out national phone number type (fixed line, mobile, etc) + +export default function isValidNumber() { + var _normalizeArguments = normalizeArguments(arguments), + input = _normalizeArguments.input, + options = _normalizeArguments.options, + metadata = _normalizeArguments.metadata; + + return _isValidNumber(input, options, metadata); +} +//# sourceMappingURL=validate.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validate.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validate.js.map new file mode 100644 index 00000000..fc03d3e1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"validate.js","names":["_isValidNumber","normalizeArguments","isValidNumber","arguments","input","options","metadata"],"sources":["../source/validate.js"],"sourcesContent":["import _isValidNumber from './validate_.js'\r\nimport { normalizeArguments } from './getNumberType.js'\r\n\r\n// Finds out national phone number type (fixed line, mobile, etc)\r\nexport default function isValidNumber()\r\n{\r\n\tconst { input, options, metadata } = normalizeArguments(arguments)\r\n\treturn _isValidNumber(input, options, metadata)\r\n}"],"mappings":"AAAA,OAAOA,cAAP,MAA2B,gBAA3B;AACA,SAASC,kBAAT,QAAmC,oBAAnC,C,CAEA;;AACA,eAAe,SAASC,aAAT,GACf;EACC,0BAAqCD,kBAAkB,CAACE,SAAD,CAAvD;EAAA,IAAQC,KAAR,uBAAQA,KAAR;EAAA,IAAeC,OAAf,uBAAeA,OAAf;EAAA,IAAwBC,QAAxB,uBAAwBA,QAAxB;;EACA,OAAON,cAAc,CAACI,KAAD,EAAQC,OAAR,EAAiBC,QAAjB,CAArB;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validate.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validate.test.js new file mode 100644 index 00000000..396ca041 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validate.test.js @@ -0,0 +1,91 @@ +import metadata from '../metadata.min.json' assert { type: 'json' }; +import _isValidNumber from './validate.js'; + +function isValidNumber() { + for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) { + parameters[_key] = arguments[_key]; + } + + parameters.push(metadata); + return _isValidNumber.apply(this, parameters); +} + +describe('validate', function () { + it('should validate phone numbers', function () { + isValidNumber('+1-213-373-4253').should.equal(true); + isValidNumber('+1-213-373').should.equal(false); + isValidNumber('+1-213-373-4253', undefined).should.equal(true); + isValidNumber('(213) 373-4253', 'US').should.equal(true); + isValidNumber('(213) 37', 'US').should.equal(false); + isValidNumber({ + country: 'US', + phone: '2133734253' + }).should.equal(true); // No "types" info: should return `true`. + + isValidNumber('+380972423740').should.equal(true); + isValidNumber('0912345678', 'TW').should.equal(true); // Moible numbers starting 07624* are Isle of Man + // which has its own "country code" "IM" + // which is in the "GB" "country calling code" zone. + // So while this number is for "IM" it's still supposed to + // be valid when passed "GB" as a default country. + + isValidNumber('07624369230', 'GB').should.equal(true); + }); + it('should refine phone number validation in case extended regular expressions are set for a country', function () { + // Germany general validation must pass + isValidNumber('961111111', 'UZ').should.equal(true); // Different regular expressions for precise national number validation. + // `types` index in compressed array is `9` for v1. + // For v2 it's 10. + // For v3 it's 11. + + metadata.countries.UZ[11] = [["(?:6(?:1(?:22|3[124]|4[1-4]|5[123578]|64)|2(?:22|3[0-57-9]|41)|5(?:22|3[3-7]|5[024-8])|6\\d{2}|7(?:[23]\\d|7[69])|9(?:22|4[1-8]|6[135]))|7(?:0(?:5[4-9]|6[0146]|7[12456]|9[135-8])|1[12]\\d|2(?:22|3[1345789]|4[123579]|5[14])|3(?:2\\d|3[1578]|4[1-35-7]|5[1-57]|61)|4(?:2\\d|3[1-579]|7[1-79])|5(?:22|5[1-9]|6[1457])|6(?:22|3[12457]|4[13-8])|9(?:22|5[1-9])))\\d{5}"], ["6(?:1(?:2(?:98|2[01])|35[0-4]|50\\d|61[23]|7(?:[01][017]|4\\d|55|9[5-9]))|2(?:11\\d|2(?:[12]1|9[01379])|5(?:[126]\\d|3[0-4])|7\\d{2})|5(?:19[01]|2(?:27|9[26])|30\\d|59\\d|7\\d{2})|6(?:2(?:1[5-9]|2[0367]|38|41|52|60)|3[79]\\d|4(?:56|83)|7(?:[07]\\d|1[017]|3[07]|4[047]|5[057]|67|8[0178]|9[79])|9[0-3]\\d)|7(?:2(?:24|3[237]|4[5-9]|7[15-8])|5(?:7[12]|8[0589])|7(?:0\\d|[39][07])|9(?:0\\d|7[079]))|9(?:2(?:1[1267]|5\\d|3[01]|7[0-4])|5[67]\\d|6(?:2[0-26]|8\\d)|7\\d{2}))\\d{4}|7(?:0\\d{3}|1(?:13[01]|6(?:0[47]|1[67]|66)|71[3-69]|98\\d)|2(?:2(?:2[79]|95)|3(?:2[5-9]|6[0-6])|57\\d|7(?:0\\d|1[17]|2[27]|3[37]|44|5[057]|66|88))|3(?:2(?:1[0-6]|21|3[469]|7[159])|33\\d|5(?:0[0-4]|5[579]|9\\d)|7(?:[0-3579]\\d|4[0467]|6[67]|8[078])|9[4-6]\\d)|4(?:2(?:29|5[0257]|6[0-7]|7[1-57])|5(?:1[0-4]|8\\d|9[5-9])|7(?:0\\d|1[024589]|2[0127]|3[0137]|[46][07]|5[01]|7[5-9]|9[079])|9(?:7[015-9]|[89]\\d))|5(?:112|2(?:0\\d|2[29]|[49]4)|3[1568]\\d|52[6-9]|7(?:0[01578]|1[017]|[23]7|4[047]|[5-7]\\d|8[78]|9[079]))|6(?:2(?:2[1245]|4[2-4])|39\\d|41[179]|5(?:[349]\\d|5[0-2])|7(?:0[017]|[13]\\d|22|44|55|67|88))|9(?:22[128]|3(?:2[0-4]|7\\d)|57[05629]|7(?:2[05-9]|3[37]|4\\d|60|7[2579]|87|9[07])))\\d{4}|9[0-57-9]\\d{7}"]]; // Extended validation must not pass for an invalid phone number + + isValidNumber('961111111', 'UZ').should.equal(false); // Extended validation must pass for a valid phone number + + isValidNumber('912345678', 'UZ').should.equal(true); + }); + it('should work in edge cases', function () { + // No metadata + var thrower = function thrower() { + return _isValidNumber('+78005553535'); + }; + + thrower.should["throw"]('`metadata` argument not passed'); // Non-phone-number characters in a phone number + + isValidNumber('+499821958a').should.equal(false); + isValidNumber('88005553535x', 'RU').should.equal(false); // Doesn't have `types` regexps in default metadata. + + isValidNumber({ + country: 'UA', + phone: '300000000' + }).should.equal(true); + isValidNumber({ + country: 'UA', + phone: '200000000' + }).should.equal(false); // Numerical `value` + + thrower = function thrower() { + return isValidNumber(88005553535, 'RU'); + }; + + thrower.should["throw"]('A phone number must either be a string or an object of shape { phone, [country] }.'); // Long country phone code + + isValidNumber('+3725555555').should.equal(true); // Invalid country + + thrower = function thrower() { + return isValidNumber({ + phone: '8005553535', + country: 'RUS' + }); + }; + + thrower.should["throw"]('Unknown country'); + }); + it('should accept phone number extensions', function () { + // International + isValidNumber('+12133734253 ext. 123').should.equal(true); // National + + isValidNumber('88005553535 x123', 'RU').should.equal(true); + }); +}); +//# sourceMappingURL=validate.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validate.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validate.test.js.map new file mode 100644 index 00000000..e3423e7c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validate.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"validate.test.js","names":["metadata","type","_isValidNumber","isValidNumber","parameters","push","apply","describe","it","should","equal","undefined","country","phone","countries","UZ","thrower"],"sources":["../source/validate.test.js"],"sourcesContent":["import metadata from '../metadata.min.json' assert { type: 'json' }\r\nimport _isValidNumber from './validate.js'\r\n\r\nfunction isValidNumber(...parameters) {\r\n\tparameters.push(metadata)\r\n\treturn _isValidNumber.apply(this, parameters)\r\n}\r\n\r\ndescribe('validate', () => {\r\n\tit('should validate phone numbers', () => {\r\n\t\tisValidNumber('+1-213-373-4253').should.equal(true)\r\n\t\tisValidNumber('+1-213-373').should.equal(false)\r\n\r\n\t\tisValidNumber('+1-213-373-4253', undefined).should.equal(true)\r\n\r\n\t\tisValidNumber('(213) 373-4253', 'US').should.equal(true)\r\n\t\tisValidNumber('(213) 37', 'US').should.equal(false)\r\n\r\n\t\tisValidNumber({ country: 'US', phone: '2133734253' }).should.equal(true)\r\n\r\n\t\t// No \"types\" info: should return `true`.\r\n\t\tisValidNumber('+380972423740').should.equal(true)\r\n\r\n\t\tisValidNumber('0912345678', 'TW').should.equal(true)\r\n\r\n\t\t// Moible numbers starting 07624* are Isle of Man\r\n\t\t// which has its own \"country code\" \"IM\"\r\n\t\t// which is in the \"GB\" \"country calling code\" zone.\r\n\t\t// So while this number is for \"IM\" it's still supposed to\r\n\t\t// be valid when passed \"GB\" as a default country.\r\n\t\tisValidNumber('07624369230', 'GB').should.equal(true)\r\n\t})\r\n\r\n\tit('should refine phone number validation in case extended regular expressions are set for a country', () => {\r\n\t\t// Germany general validation must pass\r\n\t\tisValidNumber('961111111', 'UZ').should.equal(true)\r\n\r\n\t\t// Different regular expressions for precise national number validation.\r\n\t\t// `types` index in compressed array is `9` for v1.\r\n\t\t// For v2 it's 10.\r\n\t\t// For v3 it's 11.\r\n\t\tmetadata.countries.UZ[11] =\r\n\t\t[\r\n\t\t\t[\"(?:6(?:1(?:22|3[124]|4[1-4]|5[123578]|64)|2(?:22|3[0-57-9]|41)|5(?:22|3[3-7]|5[024-8])|6\\\\d{2}|7(?:[23]\\\\d|7[69])|9(?:22|4[1-8]|6[135]))|7(?:0(?:5[4-9]|6[0146]|7[12456]|9[135-8])|1[12]\\\\d|2(?:22|3[1345789]|4[123579]|5[14])|3(?:2\\\\d|3[1578]|4[1-35-7]|5[1-57]|61)|4(?:2\\\\d|3[1-579]|7[1-79])|5(?:22|5[1-9]|6[1457])|6(?:22|3[12457]|4[13-8])|9(?:22|5[1-9])))\\\\d{5}\"],\r\n\t\t\t[\"6(?:1(?:2(?:98|2[01])|35[0-4]|50\\\\d|61[23]|7(?:[01][017]|4\\\\d|55|9[5-9]))|2(?:11\\\\d|2(?:[12]1|9[01379])|5(?:[126]\\\\d|3[0-4])|7\\\\d{2})|5(?:19[01]|2(?:27|9[26])|30\\\\d|59\\\\d|7\\\\d{2})|6(?:2(?:1[5-9]|2[0367]|38|41|52|60)|3[79]\\\\d|4(?:56|83)|7(?:[07]\\\\d|1[017]|3[07]|4[047]|5[057]|67|8[0178]|9[79])|9[0-3]\\\\d)|7(?:2(?:24|3[237]|4[5-9]|7[15-8])|5(?:7[12]|8[0589])|7(?:0\\\\d|[39][07])|9(?:0\\\\d|7[079]))|9(?:2(?:1[1267]|5\\\\d|3[01]|7[0-4])|5[67]\\\\d|6(?:2[0-26]|8\\\\d)|7\\\\d{2}))\\\\d{4}|7(?:0\\\\d{3}|1(?:13[01]|6(?:0[47]|1[67]|66)|71[3-69]|98\\\\d)|2(?:2(?:2[79]|95)|3(?:2[5-9]|6[0-6])|57\\\\d|7(?:0\\\\d|1[17]|2[27]|3[37]|44|5[057]|66|88))|3(?:2(?:1[0-6]|21|3[469]|7[159])|33\\\\d|5(?:0[0-4]|5[579]|9\\\\d)|7(?:[0-3579]\\\\d|4[0467]|6[67]|8[078])|9[4-6]\\\\d)|4(?:2(?:29|5[0257]|6[0-7]|7[1-57])|5(?:1[0-4]|8\\\\d|9[5-9])|7(?:0\\\\d|1[024589]|2[0127]|3[0137]|[46][07]|5[01]|7[5-9]|9[079])|9(?:7[015-9]|[89]\\\\d))|5(?:112|2(?:0\\\\d|2[29]|[49]4)|3[1568]\\\\d|52[6-9]|7(?:0[01578]|1[017]|[23]7|4[047]|[5-7]\\\\d|8[78]|9[079]))|6(?:2(?:2[1245]|4[2-4])|39\\\\d|41[179]|5(?:[349]\\\\d|5[0-2])|7(?:0[017]|[13]\\\\d|22|44|55|67|88))|9(?:22[128]|3(?:2[0-4]|7\\\\d)|57[05629]|7(?:2[05-9]|3[37]|4\\\\d|60|7[2579]|87|9[07])))\\\\d{4}|9[0-57-9]\\\\d{7}\"]\r\n\t\t]\r\n\r\n\t\t// Extended validation must not pass for an invalid phone number\r\n\t\tisValidNumber('961111111', 'UZ').should.equal(false)\r\n\r\n\t\t// Extended validation must pass for a valid phone number\r\n\t\tisValidNumber('912345678', 'UZ').should.equal(true)\r\n\t})\r\n\r\n\tit('should work in edge cases', () => {\r\n\t\t// No metadata\r\n\t\tlet thrower = () => _isValidNumber('+78005553535')\r\n\t\tthrower.should.throw('`metadata` argument not passed')\r\n\r\n\t\t// Non-phone-number characters in a phone number\r\n\t\tisValidNumber('+499821958a').should.equal(false)\r\n\t\tisValidNumber('88005553535x', 'RU').should.equal(false)\r\n\r\n\t\t// Doesn't have `types` regexps in default metadata.\r\n\t\tisValidNumber({ country: 'UA', phone: '300000000' }).should.equal(true)\r\n\t\tisValidNumber({ country: 'UA', phone: '200000000' }).should.equal(false)\r\n\r\n\t\t// Numerical `value`\r\n\t\tthrower = () => isValidNumber(88005553535, 'RU')\r\n\t\tthrower.should.throw('A phone number must either be a string or an object of shape { phone, [country] }.')\r\n\r\n\t\t// Long country phone code\r\n\t\tisValidNumber('+3725555555').should.equal(true)\r\n\r\n\t\t// Invalid country\r\n\t\tthrower = () => isValidNumber({ phone: '8005553535', country: 'RUS' })\r\n\t\tthrower.should.throw('Unknown country')\r\n\t})\r\n\r\n\tit('should accept phone number extensions', () => {\r\n\t\t// International\r\n\t\tisValidNumber('+12133734253 ext. 123').should.equal(true)\r\n\t\t// National\r\n\t\tisValidNumber('88005553535 x123', 'RU').should.equal(true)\r\n\t})\r\n})"],"mappings":"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"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validatePhoneNumberLength.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validatePhoneNumberLength.js new file mode 100644 index 00000000..92345a90 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validatePhoneNumberLength.js @@ -0,0 +1,40 @@ +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +import { normalizeArguments } from './parsePhoneNumber.js'; +import parsePhoneNumber from './parsePhoneNumber_.js'; +import ParseError from './ParseError.js'; +import Metadata from './metadata.js'; +import checkNumberLength from './helpers/checkNumberLength.js'; +export default function validatePhoneNumberLength() { + var _normalizeArguments = normalizeArguments(arguments), + text = _normalizeArguments.text, + options = _normalizeArguments.options, + metadata = _normalizeArguments.metadata; + + options = _objectSpread(_objectSpread({}, options), {}, { + extract: false + }); // Parse phone number. + + try { + var phoneNumber = parsePhoneNumber(text, options, metadata); + metadata = new Metadata(metadata); + metadata.selectNumberingPlan(phoneNumber.countryCallingCode); + var result = checkNumberLength(phoneNumber.nationalNumber, metadata); + + if (result !== 'IS_POSSIBLE') { + return result; + } + } catch (error) { + /* istanbul ignore else */ + if (error instanceof ParseError) { + return error.message; + } else { + throw error; + } + } +} +//# sourceMappingURL=validatePhoneNumberLength.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validatePhoneNumberLength.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validatePhoneNumberLength.js.map new file mode 100644 index 00000000..cb195530 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validatePhoneNumberLength.js.map @@ -0,0 +1 @@ +{"version":3,"file":"validatePhoneNumberLength.js","names":["normalizeArguments","parsePhoneNumber","ParseError","Metadata","checkNumberLength","validatePhoneNumberLength","arguments","text","options","metadata","extract","phoneNumber","selectNumberingPlan","countryCallingCode","result","nationalNumber","error","message"],"sources":["../source/validatePhoneNumberLength.js"],"sourcesContent":["import { normalizeArguments } from './parsePhoneNumber.js'\r\nimport parsePhoneNumber from './parsePhoneNumber_.js'\r\nimport ParseError from './ParseError.js'\r\nimport Metadata from './metadata.js'\r\nimport checkNumberLength from './helpers/checkNumberLength.js'\r\n\r\nexport default function validatePhoneNumberLength() {\r\n\tlet { text, options, metadata } = normalizeArguments(arguments)\r\n\toptions = {\r\n\t\t...options,\r\n\t\textract: false\r\n\t}\r\n\r\n\t// Parse phone number.\r\n\ttry {\r\n\t\tconst phoneNumber = parsePhoneNumber(text, options, metadata)\r\n\t\tmetadata = new Metadata(metadata)\r\n\t\tmetadata.selectNumberingPlan(phoneNumber.countryCallingCode)\r\n\t\tconst result = checkNumberLength(phoneNumber.nationalNumber, metadata)\r\n\t\tif (result !== 'IS_POSSIBLE') {\r\n\t\t\treturn result\r\n\t\t}\r\n\t} catch (error) {\r\n\t\t/* istanbul ignore else */\r\n\t\tif (error instanceof ParseError) {\r\n\t\t\treturn error.message\r\n\t\t} else {\r\n\t\t\tthrow error\r\n\t\t}\r\n\t}\r\n}"],"mappings":";;;;;;AAAA,SAASA,kBAAT,QAAmC,uBAAnC;AACA,OAAOC,gBAAP,MAA6B,wBAA7B;AACA,OAAOC,UAAP,MAAuB,iBAAvB;AACA,OAAOC,QAAP,MAAqB,eAArB;AACA,OAAOC,iBAAP,MAA8B,gCAA9B;AAEA,eAAe,SAASC,yBAAT,GAAqC;EACnD,0BAAkCL,kBAAkB,CAACM,SAAD,CAApD;EAAA,IAAMC,IAAN,uBAAMA,IAAN;EAAA,IAAYC,OAAZ,uBAAYA,OAAZ;EAAA,IAAqBC,QAArB,uBAAqBA,QAArB;;EACAD,OAAO,mCACHA,OADG;IAENE,OAAO,EAAE;EAFH,EAAP,CAFmD,CAOnD;;EACA,IAAI;IACH,IAAMC,WAAW,GAAGV,gBAAgB,CAACM,IAAD,EAAOC,OAAP,EAAgBC,QAAhB,CAApC;IACAA,QAAQ,GAAG,IAAIN,QAAJ,CAAaM,QAAb,CAAX;IACAA,QAAQ,CAACG,mBAAT,CAA6BD,WAAW,CAACE,kBAAzC;IACA,IAAMC,MAAM,GAAGV,iBAAiB,CAACO,WAAW,CAACI,cAAb,EAA6BN,QAA7B,CAAhC;;IACA,IAAIK,MAAM,KAAK,aAAf,EAA8B;MAC7B,OAAOA,MAAP;IACA;EACD,CARD,CAQE,OAAOE,KAAP,EAAc;IACf;IACA,IAAIA,KAAK,YAAYd,UAArB,EAAiC;MAChC,OAAOc,KAAK,CAACC,OAAb;IACA,CAFD,MAEO;MACN,MAAMD,KAAN;IACA;EACD;AACD"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validatePhoneNumberLength.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validatePhoneNumberLength.test.js new file mode 100644 index 00000000..ee546f91 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validatePhoneNumberLength.test.js @@ -0,0 +1,32 @@ +import _validatePhoneNumberLength from './validatePhoneNumberLength.js'; +import metadata from '../metadata.min.json' assert { type: 'json' }; + +function validatePhoneNumberLength() { + for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) { + parameters[_key] = arguments[_key]; + } + + parameters.push(metadata); + return _validatePhoneNumberLength.apply(this, parameters); +} + +describe('validatePhoneNumberLength', function () { + it('should detect whether a phone number length is valid', function () { + // Not a phone number. + validatePhoneNumberLength('+').should.equal('NOT_A_NUMBER'); + validatePhoneNumberLength('abcde').should.equal('NOT_A_NUMBER'); // No country supplied for a national number. + + validatePhoneNumberLength('123').should.equal('INVALID_COUNTRY'); // Too short while the number is not considered "viable" + // by Google's `libphonenumber`. + + validatePhoneNumberLength('2', 'US').should.equal('TOO_SHORT'); + validatePhoneNumberLength('+1', 'US').should.equal('TOO_SHORT'); + validatePhoneNumberLength('+12', 'US').should.equal('TOO_SHORT'); // Test national (significant) number length. + + validatePhoneNumberLength('444 1 44', 'TR').should.equal('TOO_SHORT'); + expect(validatePhoneNumberLength('444 1 444', 'TR')).to.be.undefined; + validatePhoneNumberLength('444 1 4444', 'TR').should.equal('INVALID_LENGTH'); + validatePhoneNumberLength('444 1 4444444444', 'TR').should.equal('TOO_LONG'); + }); +}); +//# sourceMappingURL=validatePhoneNumberLength.test.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validatePhoneNumberLength.test.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validatePhoneNumberLength.test.js.map new file mode 100644 index 00000000..e53fb132 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validatePhoneNumberLength.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"validatePhoneNumberLength.test.js","names":["_validatePhoneNumberLength","metadata","type","validatePhoneNumberLength","parameters","push","apply","describe","it","should","equal","expect","to","be","undefined"],"sources":["../source/validatePhoneNumberLength.test.js"],"sourcesContent":["import _validatePhoneNumberLength from './validatePhoneNumberLength.js'\r\nimport metadata from '../metadata.min.json' assert { type: 'json' }\r\n\r\nfunction validatePhoneNumberLength(...parameters) {\r\n\tparameters.push(metadata)\r\n\treturn _validatePhoneNumberLength.apply(this, parameters)\r\n}\r\n\r\ndescribe('validatePhoneNumberLength', () => {\r\n\tit('should detect whether a phone number length is valid', () => {\r\n\t\t// Not a phone number.\r\n\t\tvalidatePhoneNumberLength('+').should.equal('NOT_A_NUMBER')\r\n\t\tvalidatePhoneNumberLength('abcde').should.equal('NOT_A_NUMBER')\r\n\r\n\t\t// No country supplied for a national number.\r\n\t\tvalidatePhoneNumberLength('123').should.equal('INVALID_COUNTRY')\r\n\r\n\t\t// Too short while the number is not considered \"viable\"\r\n\t\t// by Google's `libphonenumber`.\r\n\t\tvalidatePhoneNumberLength('2', 'US').should.equal('TOO_SHORT')\r\n\t\tvalidatePhoneNumberLength('+1', 'US').should.equal('TOO_SHORT')\r\n\t\tvalidatePhoneNumberLength('+12', 'US').should.equal('TOO_SHORT')\r\n\r\n\t\t// Test national (significant) number length.\r\n\t\tvalidatePhoneNumberLength('444 1 44', 'TR').should.equal('TOO_SHORT')\r\n\t\texpect(validatePhoneNumberLength('444 1 444', 'TR')).to.be.undefined\r\n\t\tvalidatePhoneNumberLength('444 1 4444', 'TR').should.equal('INVALID_LENGTH')\r\n\t\tvalidatePhoneNumberLength('444 1 4444444444', 'TR').should.equal('TOO_LONG')\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,0BAAP,MAAuC,gCAAvC;AACA,OAAOC,QAAP,MAAqB,sBAArB,UAAqDC,IAAI,EAAE,MAA3D;;AAEA,SAASC,yBAAT,GAAkD;EAAA,kCAAZC,UAAY;IAAZA,UAAY;EAAA;;EACjDA,UAAU,CAACC,IAAX,CAAgBJ,QAAhB;EACA,OAAOD,0BAA0B,CAACM,KAA3B,CAAiC,IAAjC,EAAuCF,UAAvC,CAAP;AACA;;AAEDG,QAAQ,CAAC,2BAAD,EAA8B,YAAM;EAC3CC,EAAE,CAAC,sDAAD,EAAyD,YAAM;IAChE;IACAL,yBAAyB,CAAC,GAAD,CAAzB,CAA+BM,MAA/B,CAAsCC,KAAtC,CAA4C,cAA5C;IACAP,yBAAyB,CAAC,OAAD,CAAzB,CAAmCM,MAAnC,CAA0CC,KAA1C,CAAgD,cAAhD,EAHgE,CAKhE;;IACAP,yBAAyB,CAAC,KAAD,CAAzB,CAAiCM,MAAjC,CAAwCC,KAAxC,CAA8C,iBAA9C,EANgE,CAQhE;IACA;;IACAP,yBAAyB,CAAC,GAAD,EAAM,IAAN,CAAzB,CAAqCM,MAArC,CAA4CC,KAA5C,CAAkD,WAAlD;IACAP,yBAAyB,CAAC,IAAD,EAAO,IAAP,CAAzB,CAAsCM,MAAtC,CAA6CC,KAA7C,CAAmD,WAAnD;IACAP,yBAAyB,CAAC,KAAD,EAAQ,IAAR,CAAzB,CAAuCM,MAAvC,CAA8CC,KAA9C,CAAoD,WAApD,EAZgE,CAchE;;IACAP,yBAAyB,CAAC,UAAD,EAAa,IAAb,CAAzB,CAA4CM,MAA5C,CAAmDC,KAAnD,CAAyD,WAAzD;IACAC,MAAM,CAACR,yBAAyB,CAAC,WAAD,EAAc,IAAd,CAA1B,CAAN,CAAqDS,EAArD,CAAwDC,EAAxD,CAA2DC,SAA3D;IACAX,yBAAyB,CAAC,YAAD,EAAe,IAAf,CAAzB,CAA8CM,MAA9C,CAAqDC,KAArD,CAA2D,gBAA3D;IACAP,yBAAyB,CAAC,kBAAD,EAAqB,IAArB,CAAzB,CAAoDM,MAApD,CAA2DC,KAA3D,CAAiE,UAAjE;EACA,CAnBC,CAAF;AAoBA,CArBO,CAAR"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validate_.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validate_.js new file mode 100644 index 00000000..ed095a69 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validate_.js @@ -0,0 +1,57 @@ +import Metadata from './metadata.js'; +import matchesEntirely from './helpers/matchesEntirely.js'; +import getNumberType from './helpers/getNumberType.js'; +/** + * Checks if a given phone number is valid. + * + * If the `number` is a string, it will be parsed to an object, + * but only if it contains only valid phone number characters (including punctuation). + * If the `number` is an object, it is used as is. + * + * The optional `defaultCountry` argument is the default country. + * I.e. it does not restrict to just that country, + * e.g. in those cases where several countries share + * the same phone numbering rules (NANPA, Britain, etc). + * For example, even though the number `07624 369230` + * belongs to the Isle of Man ("IM" country code) + * calling `isValidNumber('07624369230', 'GB', metadata)` + * still returns `true` because the country is not restricted to `GB`, + * it's just that `GB` is the default one for the phone numbering rules. + * For restricting the country see `isValidNumberForRegion()` + * though restricting a country might not be a good idea. + * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion + * + * Examples: + * + * ```js + * isValidNumber('+78005553535', metadata) + * isValidNumber('8005553535', 'RU', metadata) + * isValidNumber('88005553535', 'RU', metadata) + * isValidNumber({ phone: '8005553535', country: 'RU' }, metadata) + * ``` + */ + +export default function isValidNumber(input, options, metadata) { + // If assigning the `{}` default value is moved to the arguments above, + // code coverage would decrease for some weird reason. + options = options || {}; + metadata = new Metadata(metadata); // This is just to support `isValidNumber({})` + // for cases when `parseNumber()` returns `{}`. + + if (!input.country) { + return false; + } + + metadata.selectNumberingPlan(input.country, input.countryCallingCode); // By default, countries only have type regexps when it's required for + // distinguishing different countries having the same `countryCallingCode`. + + if (metadata.hasTypes()) { + return getNumberType(input, options, metadata.metadata) !== undefined; + } // If there are no type regexps for this country in metadata then use + // `nationalNumberPattern` as a "better than nothing" replacement. + + + var national_number = options.v2 ? input.nationalNumber : input.phone; + return matchesEntirely(national_number, metadata.nationalNumberPattern()); +} +//# sourceMappingURL=validate_.js.map \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validate_.js.map b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validate_.js.map new file mode 100644 index 00000000..3a422de4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/es6/validate_.js.map @@ -0,0 +1 @@ +{"version":3,"file":"validate_.js","names":["Metadata","matchesEntirely","getNumberType","isValidNumber","input","options","metadata","country","selectNumberingPlan","countryCallingCode","hasTypes","undefined","national_number","v2","nationalNumber","phone","nationalNumberPattern"],"sources":["../source/validate_.js"],"sourcesContent":["import Metadata from './metadata.js'\r\nimport matchesEntirely from './helpers/matchesEntirely.js'\r\nimport getNumberType from './helpers/getNumberType.js'\r\n\r\n/**\r\n * Checks if a given phone number is valid.\r\n *\r\n * If the `number` is a string, it will be parsed to an object,\r\n * but only if it contains only valid phone number characters (including punctuation).\r\n * If the `number` is an object, it is used as is.\r\n *\r\n * The optional `defaultCountry` argument is the default country.\r\n * I.e. it does not restrict to just that country,\r\n * e.g. in those cases where several countries share\r\n * the same phone numbering rules (NANPA, Britain, etc).\r\n * For example, even though the number `07624 369230`\r\n * belongs to the Isle of Man (\"IM\" country code)\r\n * calling `isValidNumber('07624369230', 'GB', metadata)`\r\n * still returns `true` because the country is not restricted to `GB`,\r\n * it's just that `GB` is the default one for the phone numbering rules.\r\n * For restricting the country see `isValidNumberForRegion()`\r\n * though restricting a country might not be a good idea.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n *\r\n * Examples:\r\n *\r\n * ```js\r\n * isValidNumber('+78005553535', metadata)\r\n * isValidNumber('8005553535', 'RU', metadata)\r\n * isValidNumber('88005553535', 'RU', metadata)\r\n * isValidNumber({ phone: '8005553535', country: 'RU' }, metadata)\r\n * ```\r\n */\r\nexport default function isValidNumber(input, options, metadata)\r\n{\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\t// This is just to support `isValidNumber({})`\r\n\t// for cases when `parseNumber()` returns `{}`.\r\n\tif (!input.country)\r\n\t{\r\n\t\treturn false\r\n\t}\r\n\r\n\tmetadata.selectNumberingPlan(input.country, input.countryCallingCode)\r\n\r\n\t// By default, countries only have type regexps when it's required for\r\n\t// distinguishing different countries having the same `countryCallingCode`.\r\n\tif (metadata.hasTypes())\r\n\t{\r\n\t\treturn getNumberType(input, options, metadata.metadata) !== undefined\r\n\t}\r\n\r\n\t// If there are no type regexps for this country in metadata then use\r\n\t// `nationalNumberPattern` as a \"better than nothing\" replacement.\r\n\tconst national_number = options.v2 ? input.nationalNumber : input.phone\r\n\treturn matchesEntirely(national_number, metadata.nationalNumberPattern())\r\n}"],"mappings":"AAAA,OAAOA,QAAP,MAAqB,eAArB;AACA,OAAOC,eAAP,MAA4B,8BAA5B;AACA,OAAOC,aAAP,MAA0B,4BAA1B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,aAAT,CAAuBC,KAAvB,EAA8BC,OAA9B,EAAuCC,QAAvC,EACf;EACC;EACA;EACAD,OAAO,GAAGA,OAAO,IAAI,EAArB;EAEAC,QAAQ,GAAG,IAAIN,QAAJ,CAAaM,QAAb,CAAX,CALD,CAOC;EACA;;EACA,IAAI,CAACF,KAAK,CAACG,OAAX,EACA;IACC,OAAO,KAAP;EACA;;EAEDD,QAAQ,CAACE,mBAAT,CAA6BJ,KAAK,CAACG,OAAnC,EAA4CH,KAAK,CAACK,kBAAlD,EAdD,CAgBC;EACA;;EACA,IAAIH,QAAQ,CAACI,QAAT,EAAJ,EACA;IACC,OAAOR,aAAa,CAACE,KAAD,EAAQC,OAAR,EAAiBC,QAAQ,CAACA,QAA1B,CAAb,KAAqDK,SAA5D;EACA,CArBF,CAuBC;EACA;;;EACA,IAAMC,eAAe,GAAGP,OAAO,CAACQ,EAAR,GAAaT,KAAK,CAACU,cAAnB,GAAoCV,KAAK,CAACW,KAAlE;EACA,OAAOd,eAAe,CAACW,eAAD,EAAkBN,QAAQ,CAACU,qBAAT,EAAlB,CAAtB;AACA"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/examples.mobile.json b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/examples.mobile.json new file mode 100644 index 00000000..7cef6d1d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/examples.mobile.json @@ -0,0 +1 @@ +{"AC":"40123","AD":"312345","AE":"501234567","AF":"701234567","AG":"2684641234","AI":"2642351234","AL":"672123456","AM":"77123456","AO":"923123456","AR":"91123456789","AS":"6847331234","AT":"664123456","AU":"412345678","AW":"5601234","AX":"412345678","AZ":"401234567","BA":"61123456","BB":"2462501234","BD":"1812345678","BE":"470123456","BF":"70123456","BG":"43012345","BH":"36001234","BI":"79561234","BJ":"90011234","BL":"690001234","BM":"4413701234","BN":"7123456","BO":"71234567","BQ":"3181234","BR":"11961234567","BS":"2423591234","BT":"17123456","BW":"71123456","BY":"294911911","BZ":"6221234","CA":"5062345678","CC":"412345678","CD":"991234567","CF":"70012345","CG":"061234567","CH":"781234567","CI":"0123456789","CK":"71234","CL":"221234567","CM":"671234567","CN":"13123456789","CO":"3211234567","CR":"83123456","CU":"51234567","CV":"9911234","CW":"95181234","CX":"412345678","CY":"96123456","CZ":"601123456","DE":"15123456789","DJ":"77831001","DK":"32123456","DM":"7672251234","DO":"8092345678","DZ":"551234567","EC":"991234567","EE":"51234567","EG":"1001234567","EH":"650123456","ER":"7123456","ES":"612345678","ET":"911234567","FI":"412345678","FJ":"7012345","FK":"51234","FM":"3501234","FO":"211234","FR":"612345678","GA":"06031234","GB":"7400123456","GD":"4734031234","GE":"555123456","GF":"694201234","GG":"7781123456","GH":"231234567","GI":"57123456","GL":"221234","GM":"3012345","GN":"601123456","GP":"690001234","GQ":"222123456","GR":"6912345678","GT":"51234567","GU":"6713001234","GW":"955012345","GY":"6091234","HK":"51234567","HN":"91234567","HR":"921234567","HT":"34101234","HU":"201234567","ID":"812345678","IE":"850123456","IL":"502345678","IM":"7924123456","IN":"8123456789","IO":"3801234","IQ":"7912345678","IR":"9123456789","IS":"6111234","IT":"3123456789","JE":"7797712345","JM":"8762101234","JO":"790123456","JP":"9012345678","KE":"712123456","KG":"700123456","KH":"91234567","KI":"72001234","KM":"3212345","KN":"8697652917","KP":"1921234567","KR":"1020000000","KW":"50012345","KY":"3453231234","KZ":"7710009998","LA":"2023123456","LB":"71123456","LC":"7582845678","LI":"660234567","LK":"712345678","LR":"770123456","LS":"50123456","LT":"61234567","LU":"628123456","LV":"21234567","LY":"912345678","MA":"650123456","MC":"612345678","MD":"62112345","ME":"67622901","MF":"690001234","MG":"321234567","MH":"2351234","MK":"72345678","ML":"65012345","MM":"92123456","MN":"88123456","MO":"66123456","MP":"6702345678","MQ":"696201234","MR":"22123456","MS":"6644923456","MT":"96961234","MU":"52512345","MV":"7712345","MW":"991234567","MX":"12221234567","MY":"123456789","MZ":"821234567","NA":"811234567","NC":"751234","NE":"93123456","NF":"381234","NG":"8021234567","NI":"81234567","NL":"612345678","NO":"40612345","NP":"9841234567","NR":"5551234","NU":"8884012","NZ":"211234567","OM":"92123456","PA":"61234567","PE":"912345678","PF":"87123456","PG":"70123456","PH":"9051234567","PK":"3012345678","PL":"512345678","PM":"551234","PR":"7872345678","PS":"599123456","PT":"912345678","PW":"6201234","PY":"961456789","QA":"33123456","RE":"692123456","RO":"712034567","RS":"601234567","RU":"9123456789","RW":"720123456","SA":"512345678","SB":"7421234","SC":"2510123","SD":"911231234","SE":"701234567","SG":"81234567","SH":"51234","SI":"31234567","SJ":"41234567","SK":"912123456","SL":"25123456","SM":"66661212","SN":"701234567","SO":"71123456","SR":"7412345","SS":"977123456","ST":"9812345","SV":"70123456","SX":"7215205678","SY":"944567890","SZ":"76123456","TA":"8999","TC":"6492311234","TD":"63012345","TG":"90112345","TH":"812345678","TJ":"917123456","TK":"7290","TL":"77212345","TM":"66123456","TN":"20123456","TO":"7715123","TR":"5012345678","TT":"8682911234","TV":"901234","TW":"912345678","TZ":"621234567","UA":"501234567","UG":"712345678","US":"2015550123","UY":"94231234","UZ":"912345678","VA":"3123456789","VC":"7844301234","VE":"4121234567","VG":"2843001234","VI":"3406421234","VN":"912345678","VU":"5912345","WF":"821234","WS":"7212345","XK":"43201234","YE":"712345678","YT":"639012345","ZA":"711234567","ZM":"955123456","ZW":"712345678"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/examples.mobile.json.d.ts b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/examples.mobile.json.d.ts new file mode 100644 index 00000000..ec43f7a0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/examples.mobile.json.d.ts @@ -0,0 +1,4 @@ +import { Examples } from './types'; + +declare const examples: Examples; +export default examples; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/examples.mobile.json.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/examples.mobile.json.js new file mode 100644 index 00000000..95344165 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/examples.mobile.json.js @@ -0,0 +1,4 @@ +// This file is a workaround for a bug in web browsers' "native" +// ES6 importing system which is uncapable of importing "*.json" files. +// https://github.com/catamphetamine/libphonenumber-js/issues/239 +export default {"AC":"40123","AD":"312345","AE":"501234567","AF":"701234567","AG":"2684641234","AI":"2642351234","AL":"672123456","AM":"77123456","AO":"923123456","AR":"91123456789","AS":"6847331234","AT":"664123456","AU":"412345678","AW":"5601234","AX":"412345678","AZ":"401234567","BA":"61123456","BB":"2462501234","BD":"1812345678","BE":"470123456","BF":"70123456","BG":"43012345","BH":"36001234","BI":"79561234","BJ":"90011234","BL":"690001234","BM":"4413701234","BN":"7123456","BO":"71234567","BQ":"3181234","BR":"11961234567","BS":"2423591234","BT":"17123456","BW":"71123456","BY":"294911911","BZ":"6221234","CA":"5062345678","CC":"412345678","CD":"991234567","CF":"70012345","CG":"061234567","CH":"781234567","CI":"0123456789","CK":"71234","CL":"221234567","CM":"671234567","CN":"13123456789","CO":"3211234567","CR":"83123456","CU":"51234567","CV":"9911234","CW":"95181234","CX":"412345678","CY":"96123456","CZ":"601123456","DE":"15123456789","DJ":"77831001","DK":"32123456","DM":"7672251234","DO":"8092345678","DZ":"551234567","EC":"991234567","EE":"51234567","EG":"1001234567","EH":"650123456","ER":"7123456","ES":"612345678","ET":"911234567","FI":"412345678","FJ":"7012345","FK":"51234","FM":"3501234","FO":"211234","FR":"612345678","GA":"06031234","GB":"7400123456","GD":"4734031234","GE":"555123456","GF":"694201234","GG":"7781123456","GH":"231234567","GI":"57123456","GL":"221234","GM":"3012345","GN":"601123456","GP":"690001234","GQ":"222123456","GR":"6912345678","GT":"51234567","GU":"6713001234","GW":"955012345","GY":"6091234","HK":"51234567","HN":"91234567","HR":"921234567","HT":"34101234","HU":"201234567","ID":"812345678","IE":"850123456","IL":"502345678","IM":"7924123456","IN":"8123456789","IO":"3801234","IQ":"7912345678","IR":"9123456789","IS":"6111234","IT":"3123456789","JE":"7797712345","JM":"8762101234","JO":"790123456","JP":"9012345678","KE":"712123456","KG":"700123456","KH":"91234567","KI":"72001234","KM":"3212345","KN":"8697652917","KP":"1921234567","KR":"1020000000","KW":"50012345","KY":"3453231234","KZ":"7710009998","LA":"2023123456","LB":"71123456","LC":"7582845678","LI":"660234567","LK":"712345678","LR":"770123456","LS":"50123456","LT":"61234567","LU":"628123456","LV":"21234567","LY":"912345678","MA":"650123456","MC":"612345678","MD":"62112345","ME":"67622901","MF":"690001234","MG":"321234567","MH":"2351234","MK":"72345678","ML":"65012345","MM":"92123456","MN":"88123456","MO":"66123456","MP":"6702345678","MQ":"696201234","MR":"22123456","MS":"6644923456","MT":"96961234","MU":"52512345","MV":"7712345","MW":"991234567","MX":"12221234567","MY":"123456789","MZ":"821234567","NA":"811234567","NC":"751234","NE":"93123456","NF":"381234","NG":"8021234567","NI":"81234567","NL":"612345678","NO":"40612345","NP":"9841234567","NR":"5551234","NU":"8884012","NZ":"211234567","OM":"92123456","PA":"61234567","PE":"912345678","PF":"87123456","PG":"70123456","PH":"9051234567","PK":"3012345678","PL":"512345678","PM":"551234","PR":"7872345678","PS":"599123456","PT":"912345678","PW":"6201234","PY":"961456789","QA":"33123456","RE":"692123456","RO":"712034567","RS":"601234567","RU":"9123456789","RW":"720123456","SA":"512345678","SB":"7421234","SC":"2510123","SD":"911231234","SE":"701234567","SG":"81234567","SH":"51234","SI":"31234567","SJ":"41234567","SK":"912123456","SL":"25123456","SM":"66661212","SN":"701234567","SO":"71123456","SR":"7412345","SS":"977123456","ST":"9812345","SV":"70123456","SX":"7215205678","SY":"944567890","SZ":"76123456","TA":"8999","TC":"6492311234","TD":"63012345","TG":"90112345","TH":"812345678","TJ":"917123456","TK":"7290","TL":"77212345","TM":"66123456","TN":"20123456","TO":"7715123","TR":"5012345678","TT":"8682911234","TV":"901234","TW":"912345678","TZ":"621234567","UA":"501234567","UG":"712345678","US":"2015550123","UY":"94231234","UZ":"912345678","VA":"3123456789","VC":"7844301234","VE":"4121234567","VG":"2843001234","VI":"3406421234","VN":"912345678","VU":"5912345","WF":"821234","WS":"7212345","XK":"43201234","YE":"712345678","YT":"639012345","ZA":"711234567","ZM":"955123456","ZW":"712345678"} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.cjs b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.cjs new file mode 100644 index 00000000..b645707a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.cjs @@ -0,0 +1,124 @@ +'use strict' + +var min = require('./min/index.cjs') +var metadata = require('./metadata.min.json') + +function withMetadataArgument(func, _arguments) { + var args = Array.prototype.slice.call(_arguments) + args.push(metadata) + return func.apply(this, args) +} + +// ES5 `require()` "default" "interoperability" hack. +// https://github.com/babel/babel/issues/2212#issuecomment-131827986 +// An alternative approach: +// https://www.npmjs.com/package/babel-plugin-add-module-exports +exports = module.exports = min.parsePhoneNumberFromString +exports['default'] = min.parsePhoneNumberFromString + +// `parsePhoneNumberFromString()` named export is now considered legacy: +// it has been promoted to a default export due to being too verbose. +exports.parsePhoneNumberFromString = min.parsePhoneNumberFromString + +exports.ParseError = min.ParseError + +// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`. +exports.parsePhoneNumber = min.parsePhoneNumberWithError +exports.parsePhoneNumberWithError = min.parsePhoneNumberWithError + +exports.isValidPhoneNumber = min.isValidPhoneNumber +exports.isPossiblePhoneNumber = min.isPossiblePhoneNumber +exports.validatePhoneNumberLength = min.validatePhoneNumberLength + +// `parse()` and `parseNumber()` functions are deprecated. +var parse_ = require('./build/parse.js').default +exports.parse = function parse() { + return withMetadataArgument(parse_, arguments) +} +exports.parseNumber = exports.parse + +// `format()` and `formatNumber()` functions are deprecated. +var format_ = require('./build/format.js').default +exports.format = function format() { + return withMetadataArgument(format_, arguments) +} +exports.formatNumber = exports.format + +// Deprecated. +var getNumberType_ = require('./build/getNumberType.js').default +exports.getNumberType = function getNumberType() { + return withMetadataArgument(getNumberType_, arguments) +} + +// Deprecated. +var isPossibleNumber_ = require('./build/isPossibleNumber.js').default +exports.isPossibleNumber = function isPossibleNumber() { + return withMetadataArgument(isPossibleNumber_, arguments) +} + +// Deprecated. +var isValidNumber_ = require('./build/validate.js').default +exports.isValidNumber = function isValidNumber() { + return withMetadataArgument(isValidNumber_, arguments) +} + +// Deprecated. +var isValidNumberForRegion_ = require('./build/isValidNumberForRegion.js').default +exports.isValidNumberForRegion = function isValidNumberForRegion() { + return withMetadataArgument(isValidNumberForRegion_, arguments) +} + +exports.getExampleNumber = min.getExampleNumber +exports.Metadata = min.Metadata + +// Deprecated. +var findPhoneNumbers_ = require('./build/findPhoneNumbers.js').default +exports.findPhoneNumbers = function findPhoneNumbers() { + return withMetadataArgument(findPhoneNumbers_, arguments) +} + +// Deprecated. +var searchPhoneNumbers_ = require('./build/findPhoneNumbers.js').searchPhoneNumbers +exports.searchPhoneNumbers = function searchPhoneNumbers() { + return withMetadataArgument(searchPhoneNumbers_, arguments) +} + +// Deprecated. +var PhoneNumberSearch_ = require('./build/findPhoneNumbers_.js').PhoneNumberSearch +exports.PhoneNumberSearch = function PhoneNumberSearch(text, options) { + return PhoneNumberSearch_.call(this, text, options, metadata) +} +exports.PhoneNumberSearch.prototype = Object.create(PhoneNumberSearch_.prototype, {}) +exports.PhoneNumberSearch.prototype.constructor = exports.PhoneNumberSearch + +// Deprecated. +exports.findNumbers = min.findNumbers +// Deprecated. +exports.searchNumbers = min.searchNumbers + +exports.findPhoneNumbersInText = min.findPhoneNumbersInText +exports.searchPhoneNumbersInText = min.searchPhoneNumbersInText +exports.PhoneNumberMatcher = min.PhoneNumberMatcher + +exports.AsYouType = min.AsYouType + +exports.getCountries = min.getCountries +exports.getCountryCallingCode = min.getCountryCallingCode +exports.isSupportedCountry = min.isSupportedCountry +exports.getExtPrefix = min.getExtPrefix + +exports.parseRFC3966 = min.parseRFC3966 +exports.formatRFC3966 = min.formatRFC3966 + +// Deprecated: `DIGITS` were used by `react-phone-number-input`. +// Replaced by `parseDigits()`. +exports.DIGITS = require('./build/helpers/parseDigits.js').DIGITS +exports.DIGIT_PLACEHOLDER = min.DIGIT_PLACEHOLDER + +// `getPhoneCode` name is deprecated +exports.getPhoneCode = min.getCountryCallingCode + +exports.formatIncompletePhoneNumber = min.formatIncompletePhoneNumber +exports.parseIncompletePhoneNumber = min.parseIncompletePhoneNumber +exports.parsePhoneNumberCharacter = min.parsePhoneNumberCharacter +exports.parseDigits = min.parseDigits \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.cjs.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.cjs.js new file mode 100644 index 00000000..1298210b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.cjs.js @@ -0,0 +1,130 @@ +'use strict' + +// This file is deprecated. +// It's the same as `index.cjs`, just with an added `.js` file extension. +// It only exists for compatibility with the software that doesn't like `*.cjs` file extension. +// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/62 +// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/61#note_950728292 + +var min = require('./min/index.cjs') +var metadata = require('./metadata.min.json') + +function withMetadataArgument(func, _arguments) { + var args = Array.prototype.slice.call(_arguments) + args.push(metadata) + return func.apply(this, args) +} + +// ES5 `require()` "default" "interoperability" hack. +// https://github.com/babel/babel/issues/2212#issuecomment-131827986 +// An alternative approach: +// https://www.npmjs.com/package/babel-plugin-add-module-exports +exports = module.exports = min.parsePhoneNumberFromString +exports['default'] = min.parsePhoneNumberFromString + +// `parsePhoneNumberFromString()` named export is now considered legacy: +// it has been promoted to a default export due to being too verbose. +exports.parsePhoneNumberFromString = min.parsePhoneNumberFromString + +exports.ParseError = min.ParseError + +// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`. +exports.parsePhoneNumber = min.parsePhoneNumberWithError +exports.parsePhoneNumberWithError = min.parsePhoneNumberWithError + +exports.isValidPhoneNumber = min.isValidPhoneNumber +exports.isPossiblePhoneNumber = min.isPossiblePhoneNumber +exports.validatePhoneNumberLength = min.validatePhoneNumberLength + +// `parse()` and `parseNumber()` functions are deprecated. +var parse_ = require('./build/parse.js').default +exports.parse = function parse() { + return withMetadataArgument(parse_, arguments) +} +exports.parseNumber = exports.parse + +// `format()` and `formatNumber()` functions are deprecated. +var format_ = require('./build/format.js').default +exports.format = function format() { + return withMetadataArgument(format_, arguments) +} +exports.formatNumber = exports.format + +// Deprecated. +var getNumberType_ = require('./build/getNumberType.js').default +exports.getNumberType = function getNumberType() { + return withMetadataArgument(getNumberType_, arguments) +} + +// Deprecated. +var isPossibleNumber_ = require('./build/isPossibleNumber.js').default +exports.isPossibleNumber = function isPossibleNumber() { + return withMetadataArgument(isPossibleNumber_, arguments) +} + +// Deprecated. +var isValidNumber_ = require('./build/validate.js').default +exports.isValidNumber = function isValidNumber() { + return withMetadataArgument(isValidNumber_, arguments) +} + +// Deprecated. +var isValidNumberForRegion_ = require('./build/isValidNumberForRegion.js').default +exports.isValidNumberForRegion = function isValidNumberForRegion() { + return withMetadataArgument(isValidNumberForRegion_, arguments) +} + +exports.getExampleNumber = min.getExampleNumber +exports.Metadata = min.Metadata + +// Deprecated. +var findPhoneNumbers_ = require('./build/findPhoneNumbers.js').default +exports.findPhoneNumbers = function findPhoneNumbers() { + return withMetadataArgument(findPhoneNumbers_, arguments) +} + +// Deprecated. +var searchPhoneNumbers_ = require('./build/findPhoneNumbers.js').searchPhoneNumbers +exports.searchPhoneNumbers = function searchPhoneNumbers() { + return withMetadataArgument(searchPhoneNumbers_, arguments) +} + +// Deprecated. +var PhoneNumberSearch_ = require('./build/findPhoneNumbers_.js').PhoneNumberSearch +exports.PhoneNumberSearch = function PhoneNumberSearch(text, options) { + return PhoneNumberSearch_.call(this, text, options, metadata) +} +exports.PhoneNumberSearch.prototype = Object.create(PhoneNumberSearch_.prototype, {}) +exports.PhoneNumberSearch.prototype.constructor = exports.PhoneNumberSearch + +// Deprecated. +exports.findNumbers = min.findNumbers +// Deprecated. +exports.searchNumbers = min.searchNumbers + +exports.findPhoneNumbersInText = min.findPhoneNumbersInText +exports.searchPhoneNumbersInText = min.searchPhoneNumbersInText +exports.PhoneNumberMatcher = min.PhoneNumberMatcher + +exports.AsYouType = min.AsYouType + +exports.getCountries = min.getCountries +exports.getCountryCallingCode = min.getCountryCallingCode +exports.isSupportedCountry = min.isSupportedCountry +exports.getExtPrefix = min.getExtPrefix + +exports.parseRFC3966 = min.parseRFC3966 +exports.formatRFC3966 = min.formatRFC3966 + +// Deprecated: `DIGITS` were used by `react-phone-number-input`. +// Replaced by `parseDigits()`. +exports.DIGITS = require('./build/helpers/parseDigits.js').DIGITS +exports.DIGIT_PLACEHOLDER = min.DIGIT_PLACEHOLDER + +// `getPhoneCode` name is deprecated +exports.getPhoneCode = min.getCountryCallingCode + +exports.formatIncompletePhoneNumber = min.formatIncompletePhoneNumber +exports.parseIncompletePhoneNumber = min.parseIncompletePhoneNumber +exports.parsePhoneNumberCharacter = min.parsePhoneNumberCharacter +exports.parseDigits = min.parseDigits \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.d.ts b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.d.ts new file mode 100644 index 00000000..520ceb62 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.d.ts @@ -0,0 +1,170 @@ +import { + MetadataJson, + Examples, + PhoneNumber, + E164Number, + CountryCallingCode, + CountryCode, + CarrierCode, + NationalNumber, + Extension, + ParseError, + NumberFoundLegacy, + NumberFound, + NumberType, + NumberFormat, + NumberingPlan, + ValidatePhoneNumberLengthResult +} from './types'; + +export { + MetadataJson, + Examples, + PhoneNumber, + E164Number, + CountryCallingCode, + CountryCode, + CarrierCode, + NationalNumber, + Extension, + ParseError, + NumberFoundLegacy, + NumberFound, + NumberFormat, + NumberType, + NumberingPlan, + ValidatePhoneNumberLengthResult +}; + +type FormatExtension = (number: string, extension: string, metadata: MetadataJson) => string + +type FormatNumberOptionsWithoutIDD = { + v2?: boolean; + formatExtension?: FormatExtension; +}; + +export type FormatNumberOptions = { + v2?: boolean; + fromCountry?: CountryCode; + humanReadable?: boolean; + formatExtension?: FormatExtension; +}; + +// Legacy. +export type ParseNumberOptions = { + defaultCountry?: CountryCode; + extended?: boolean; +}; + +export interface ParsedNumber { + countryCallingCode?: CountryCallingCode; + country: CountryCode; + phone: NationalNumber; + ext?: Extension; + possible?: boolean; + valid?: boolean; +} + +// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`. +export function parsePhoneNumber(text: string, defaultCountry?: CountryCode): PhoneNumber; +export function parsePhoneNumberWithError(text: string, defaultCountry?: CountryCode): PhoneNumber; + +// `parsePhoneNumberFromString()` named export is now considered legacy: +// it has been promoted to a default export due to being too verbose. +export function parsePhoneNumberFromString(text: string, defaultCountry?: CountryCode | { defaultCountry?: CountryCode, defaultCallingCode?: string, extract?: boolean }): PhoneNumber | undefined; + +export default parsePhoneNumberFromString; + +export function isValidPhoneNumber(text: string, defaultCountry?: CountryCode | { defaultCountry?: CountryCode, defaultCallingCode?: string }): boolean; +export function isPossiblePhoneNumber(text: string, defaultCountry?: CountryCode | { defaultCountry?: CountryCode, defaultCallingCode?: string }): boolean; +export function validatePhoneNumberLength(text: string, defaultCountry?: CountryCode | { defaultCountry?: CountryCode, defaultCallingCode?: string }): ValidatePhoneNumberLengthResult | undefined; + +// `parse()` and `parseCustom` are deprecated. +// Use `parseNumber()` and `parseNumberCustom()` instead. +export function parse(text: string, options?: CountryCode | ParseNumberOptions): ParsedNumber; + +export function parseNumber(text: string, options?: CountryCode | ParseNumberOptions): ParsedNumber | {}; + +// `format()` and `formatCustom` are deprecated. +// Use `formatNumber()` and `formatNumberCustom()` instead. +export function format(parsedNumber: ParsedNumber, format: NumberFormat): string; +export function format(phone: NationalNumber, format: NumberFormat): string; +export function format(phone: NationalNumber, country: CountryCode, format: NumberFormat): string; + +export function formatNumber(parsedNumber: ParsedNumber, format: NumberFormat, options?: FormatNumberOptions): string; +export function formatNumber(phone: NationalNumber, format: NumberFormat, options?: FormatNumberOptions): string; +export function formatNumber(phone: NationalNumber, country: CountryCode, format: NumberFormat, options?: FormatNumberOptions): string; + +export function getNumberType(parsedNumber: ParsedNumber): NumberType; +export function getNumberType(phone: NationalNumber, country?: CountryCode): NumberType; + +export function getExampleNumber(country: CountryCode, examples: Examples): PhoneNumber | undefined; + +export function isPossibleNumber(parsedNumber: ParsedNumber): boolean; +export function isPossibleNumber(phone: NationalNumber, country?: CountryCode): boolean; + +export function isValidNumber(parsedNumber: ParsedNumber): boolean; +export function isValidNumber(phone: NationalNumber, country?: CountryCode): boolean; + +export function isValidNumberForRegion(phone: NationalNumber, country: CountryCode): boolean; + +// Deprecated. +export function findParsedNumbers(text: string, options?: CountryCode | { defaultCountry?: CountryCode }): NumberFoundLegacy[]; +export function searchParsedNumbers(text: string, options?: CountryCode | { defaultCountry?: CountryCode }): IterableIterator; + +// Deprecated. +export class ParsedNumberSearch { + constructor(text: string, options?: { defaultCountry?: CountryCode }); + hasNext(): boolean; + next(): NumberFoundLegacy | undefined; +} + +export function findNumbers(text: string, options?: CountryCode): NumberFoundLegacy[]; +export function searchNumbers(text: string, options?: CountryCode): IterableIterator; + +export function findNumbers(text: string, options?: { defaultCountry?: CountryCode, v2: true }): NumberFound[]; +export function searchNumbers(text: string, options?: { defaultCountry?: CountryCode, v2: true }): IterableIterator; + +export function findPhoneNumbersInText(text: string, options?: CountryCode | { defaultCountry?: CountryCode, defaultCallingCode?: string }): NumberFound[]; +export function searchPhoneNumbersInText(text: string, options?: CountryCode | { defaultCountry?: CountryCode, defaultCallingCode?: string }): IterableIterator; + +export class PhoneNumberMatcher { + constructor(text: string, options?: { defaultCountry?: CountryCode, v2: true }); + hasNext(): boolean; + next(): NumberFound | undefined; +} + +export function getCountries(): CountryCode[]; +export function getCountryCallingCode(countryCode: CountryCode): CountryCallingCode; +// Deprecated. +export function getPhoneCode(countryCode: CountryCode): CountryCallingCode; +export function getExtPrefix(countryCode: CountryCode): string; +export function isSupportedCountry(countryCode: string): boolean; + +export function formatIncompletePhoneNumber(number: string, countryCode?: CountryCode): string; +export function parseIncompletePhoneNumber(text: string): string; +export function parsePhoneNumberCharacter(character: string): string; +export function parseDigits(character: string): string; + +export class AsYouType { + constructor(defaultCountryCode?: CountryCode | { defaultCountry?: CountryCode, defaultCallingCode?: string }); + input(text: string): string; + reset(): void; + country: CountryCode | undefined; + getNumber(): PhoneNumber | undefined; + getNumberValue(): E164Number | undefined; + getNationalNumber(): string; + getChars(): string; + getTemplate(): string; + getCallingCode(): string | undefined; + getCountry(): CountryCode | undefined; + isInternational(): boolean; + isPossible(): boolean; + isValid(): boolean; +} + +export class Metadata { + constructor(); + selectNumberingPlan(country: CountryCode): void; + numberingPlan?: NumberingPlan; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/PhoneNumberSearch.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/PhoneNumberSearch.js new file mode 100644 index 00000000..393e58a9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/PhoneNumberSearch.js @@ -0,0 +1,13 @@ +// Importing from a ".js" file is a workaround for Node.js "ES Modules" +// importing system which is even uncapable of importing "*.json" files. +import metadata from '../metadata.min.json.js' + +import { PhoneNumberSearch as _PhoneNumberSearch } from '../es6/findPhoneNumbers_.js' + +export function PhoneNumberSearch(text, options) { + _PhoneNumberSearch.call(this, text, options, metadata) +} + +// Deprecated. +PhoneNumberSearch.prototype = Object.create(_PhoneNumberSearch.prototype, {}) +PhoneNumberSearch.prototype.constructor = PhoneNumberSearch diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/findPhoneNumbers.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/findPhoneNumbers.js new file mode 100644 index 00000000..5021e3b0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/findPhoneNumbers.js @@ -0,0 +1,7 @@ +import withMetadataArgument from '../min/exports/withMetadataArgument.js' + +import _findPhoneNumbers from '../es6/findPhoneNumbers.js' + +export function findPhoneNumbers() { + return withMetadataArgument(_findPhoneNumbers, arguments) +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/format.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/format.js new file mode 100644 index 00000000..9e3fea48 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/format.js @@ -0,0 +1,7 @@ +import withMetadataArgument from '../min/exports/withMetadataArgument.js' + +import _format from '../es6/format.js' + +export function format() { + return withMetadataArgument(_format, arguments) +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/getNumberType.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/getNumberType.js new file mode 100644 index 00000000..25f09120 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/getNumberType.js @@ -0,0 +1,7 @@ +import withMetadataArgument from '../min/exports/withMetadataArgument.js' + +import _getNumberType from '../es6/getNumberType.js' + +export function getNumberType() { + return withMetadataArgument(_getNumberType, arguments) +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/isPossibleNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/isPossibleNumber.js new file mode 100644 index 00000000..07126451 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/isPossibleNumber.js @@ -0,0 +1,9 @@ +// Deprecated. + +import withMetadataArgument from '../min/exports/withMetadataArgument.js' + +import _isPossibleNumber from '../es6/isPossibleNumber.js' + +export function isPossibleNumber() { + return withMetadataArgument(_isPossibleNumber, arguments) +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/isValidNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/isValidNumber.js new file mode 100644 index 00000000..b508dffd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/isValidNumber.js @@ -0,0 +1,9 @@ +// Deprecated. + +import withMetadataArgument from '../min/exports/withMetadataArgument.js' + +import _isValidNumber from '../es6/validate.js' + +export function isValidNumber() { + return withMetadataArgument(_isValidNumber, arguments) +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/isValidNumberForRegion.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/isValidNumberForRegion.js new file mode 100644 index 00000000..afe29c60 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/isValidNumberForRegion.js @@ -0,0 +1,7 @@ +import withMetadataArgument from '../min/exports/withMetadataArgument.js' + +import _isValidNumberForRegion from '../es6/isValidNumberForRegion.js' + +export function isValidNumberForRegion() { + return withMetadataArgument(_isValidNumberForRegion, arguments) +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/parse.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/parse.js new file mode 100644 index 00000000..84c60cae --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/parse.js @@ -0,0 +1,7 @@ +import withMetadataArgument from '../min/exports/withMetadataArgument.js' + +import _parse from '../es6/parse.js' + +export function parse() { + return withMetadataArgument(_parse, arguments) +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/searchPhoneNumbers.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/searchPhoneNumbers.js new file mode 100644 index 00000000..f2bb80c7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.exports/searchPhoneNumbers.js @@ -0,0 +1,7 @@ +import withMetadataArgument from '../min/exports/withMetadataArgument.js' + +import { searchPhoneNumbers as _searchPhoneNumbers } from '../es6/findPhoneNumbers.js' + +export function searchPhoneNumbers() { + return withMetadataArgument(_searchPhoneNumbers, arguments) +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.js new file mode 100644 index 00000000..a54683ca --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.es6.js @@ -0,0 +1,6 @@ +// This file is deprecated. +// It's only for backwards compatibility with some old code that might've imported +// the library by a full path of the old `index.es6.js` file. That file was renamed +// to `index.js`. + +export * from './index.js' \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.js new file mode 100644 index 00000000..e42b4ecd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/index.js @@ -0,0 +1,67 @@ +// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`. +export { parsePhoneNumberWithError, parsePhoneNumberWithError as parsePhoneNumber } from './min/exports/parsePhoneNumberWithError.js' +// `parsePhoneNumberFromString()` named export is now considered legacy: +// it has been promoted to a default export due to being too verbose. +export { parsePhoneNumberFromString, parsePhoneNumberFromString as default } from './min/exports/parsePhoneNumberFromString.js' + +export { isValidPhoneNumber } from './min/exports/isValidPhoneNumber.js' +export { isPossiblePhoneNumber } from './min/exports/isPossiblePhoneNumber.js' +export { validatePhoneNumberLength } from './min/exports/validatePhoneNumberLength.js' + +// Deprecated. +export { findNumbers } from './min/exports/findNumbers.js' +// Deprecated. +export { searchNumbers } from './min/exports/searchNumbers.js' + +export { findPhoneNumbersInText } from './min/exports/findPhoneNumbersInText.js' +export { searchPhoneNumbersInText } from './min/exports/searchPhoneNumbersInText.js' +export { PhoneNumberMatcher } from './min/exports/PhoneNumberMatcher.js' + +export { AsYouType } from './min/exports/AsYouType.js' +export { DIGIT_PLACEHOLDER } from './es6/AsYouTypeFormatter.js' + +export { isSupportedCountry } from './min/exports/isSupportedCountry.js' +export { getCountries } from './min/exports/getCountries.js' +// `getPhoneCode` name is deprecated, use `getCountryCallingCode` instead. +export { getCountryCallingCode, getCountryCallingCode as getPhoneCode } from './min/exports/getCountryCallingCode.js' +export { getExtPrefix } from './min/exports/getExtPrefix.js' + +export { Metadata } from './min/exports/Metadata.js' +export { getExampleNumber } from './min/exports/getExampleNumber.js' + +export { formatIncompletePhoneNumber } from './min/exports/formatIncompletePhoneNumber.js' + +export { + ParseError, + parseIncompletePhoneNumber, + parsePhoneNumberCharacter, + parseDigits, + parseRFC3966, + formatRFC3966 +} from './core/index.js' + +// Deprecated (old) exports. +export { parse as parseNumber, parse } from './index.es6.exports/parse.js' +export { format as formatNumber, format } from './index.es6.exports/format.js' +export { getNumberType } from './index.es6.exports/getNumberType.js' +export { isPossibleNumber } from './index.es6.exports/isPossibleNumber.js' +export { isValidNumber } from './index.es6.exports/isValidNumber.js' +export { isValidNumberForRegion } from './index.es6.exports/isValidNumberForRegion.js' +export { findPhoneNumbers } from './index.es6.exports/findPhoneNumbers.js' +export { searchPhoneNumbers } from './index.es6.exports/searchPhoneNumbers.js' +export { PhoneNumberSearch } from './index.es6.exports/PhoneNumberSearch.js' + +// Deprecated DIGITS export. +// (it was used in `react-phone-number-input`) +export { DIGITS } from './es6/helpers/parseDigits.js' + +// Deprecated "custom" exports. +export { default as parseCustom } from './es6/parse.js' +export { default as formatCustom } from './es6/format.js' +export { default as isValidNumberCustom } from './es6/validate.js' +export { default as findPhoneNumbersCustom } from './es6/findPhoneNumbers.js' +export { searchPhoneNumbers as searchPhoneNumbersCustom } from './es6/findPhoneNumbers.js' +export { PhoneNumberSearch as PhoneNumberSearchCustom } from './es6/findPhoneNumbers_.js' +export { default as getNumberTypeCustom } from './es6/getNumberType.js' +export { default as getCountryCallingCodeCustom, default as getPhoneCodeCustom } from './es6/getCountryCallingCode.js' +export { default as AsYouTypeCustom } from './es6/AsYouType.js' diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/AsYouType.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/AsYouType.js new file mode 100644 index 00000000..0e54546e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/AsYouType.js @@ -0,0 +1,12 @@ +// Importing from a ".js" file is a workaround for Node.js "ES Modules" +// importing system which is even uncapable of importing "*.json" files. +import metadata from '../../metadata.max.json.js' + +import { AsYouType as _AsYouType } from '../../core/index.js' + +export function AsYouType(country) { + return _AsYouType.call(this, country, metadata) +} + +AsYouType.prototype = Object.create(_AsYouType.prototype, {}) +AsYouType.prototype.constructor = AsYouType \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/Metadata.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/Metadata.js new file mode 100644 index 00000000..35a5d762 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/Metadata.js @@ -0,0 +1,12 @@ +// Importing from a ".js" file is a workaround for Node.js "ES Modules" +// importing system which is even uncapable of importing "*.json" files. +import metadata from '../../metadata.max.json.js' + +import { Metadata as _Metadata } from '../../core/index.js' + +export function Metadata() { + return _Metadata.call(this, metadata) +} + +Metadata.prototype = Object.create(_Metadata.prototype, {}) +Metadata.prototype.constructor = Metadata \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/PhoneNumberMatcher.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/PhoneNumberMatcher.js new file mode 100644 index 00000000..9fe122e6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/PhoneNumberMatcher.js @@ -0,0 +1,11 @@ +// Importing from a ".js" file is a workaround for Node.js "ES Modules" +// importing system which is even uncapable of importing "*.json" files. +import metadata from '../../metadata.max.json.js' + +import { PhoneNumberMatcher as _PhoneNumberMatcher } from '../../core/index.js' + +export function PhoneNumberMatcher(text, options) { + return _PhoneNumberMatcher.call(this, text, options, metadata) +} +PhoneNumberMatcher.prototype = Object.create(_PhoneNumberMatcher.prototype, {}) +PhoneNumberMatcher.prototype.constructor = PhoneNumberMatcher diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/findNumbers.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/findNumbers.js new file mode 100644 index 00000000..e11aa766 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/findNumbers.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { findNumbers as _findNumbers } from '../../core/index.js' + +export function findNumbers() { + return withMetadataArgument(_findNumbers, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/findPhoneNumbersInText.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/findPhoneNumbersInText.js new file mode 100644 index 00000000..3d0c29d1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/findPhoneNumbersInText.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { findPhoneNumbersInText as _findPhoneNumbersInText } from '../../core/index.js' + +export function findPhoneNumbersInText() { + return withMetadataArgument(_findPhoneNumbersInText, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/formatIncompletePhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/formatIncompletePhoneNumber.js new file mode 100644 index 00000000..8e9b5d3d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/formatIncompletePhoneNumber.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { formatIncompletePhoneNumber as _formatIncompletePhoneNumber } from '../../core/index.js' + +export function formatIncompletePhoneNumber() { + return withMetadataArgument(_formatIncompletePhoneNumber, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/getCountries.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/getCountries.js new file mode 100644 index 00000000..b43ac044 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/getCountries.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { getCountries as _getCountries } from '../../core/index.js' + +export function getCountries() { + return withMetadataArgument(_getCountries, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/getCountryCallingCode.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/getCountryCallingCode.js new file mode 100644 index 00000000..868dfd3e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/getCountryCallingCode.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { getCountryCallingCode as _getCountryCallingCode } from '../../core/index.js' + +export function getCountryCallingCode() { + return withMetadataArgument(_getCountryCallingCode, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/getExampleNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/getExampleNumber.js new file mode 100644 index 00000000..5f9e4cfc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/getExampleNumber.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { getExampleNumber as _getExampleNumber } from '../../core/index.js' + +export function getExampleNumber() { + return withMetadataArgument(_getExampleNumber, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/getExtPrefix.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/getExtPrefix.js new file mode 100644 index 00000000..59633438 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/getExtPrefix.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { getExtPrefix as _getExtPrefix } from '../../core/index.js' + +export function getExtPrefix() { + return withMetadataArgument(_getExtPrefix, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/isPossiblePhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/isPossiblePhoneNumber.js new file mode 100644 index 00000000..e53ab676 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/isPossiblePhoneNumber.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { isPossiblePhoneNumber as _isPossiblePhoneNumber } from '../../core/index.js' + +export function isPossiblePhoneNumber() { + return withMetadataArgument(_isPossiblePhoneNumber, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/isSupportedCountry.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/isSupportedCountry.js new file mode 100644 index 00000000..45074472 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/isSupportedCountry.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { isSupportedCountry as _isSupportedCountry } from '../../core/index.js' + +export function isSupportedCountry() { + return withMetadataArgument(_isSupportedCountry, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/isValidPhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/isValidPhoneNumber.js new file mode 100644 index 00000000..3b31535a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/isValidPhoneNumber.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { isValidPhoneNumber as _isValidPhoneNumber } from '../../core/index.js' + +export function isValidPhoneNumber() { + return withMetadataArgument(_isValidPhoneNumber, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/parsePhoneNumberFromString.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/parsePhoneNumberFromString.js new file mode 100644 index 00000000..b6e573f6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/parsePhoneNumberFromString.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { parsePhoneNumberFromString as _parsePhoneNumberFromString } from '../../core/index.js' + +export function parsePhoneNumberFromString() { + return withMetadataArgument(_parsePhoneNumberFromString, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/parsePhoneNumberWithError.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/parsePhoneNumberWithError.js new file mode 100644 index 00000000..130054f7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/parsePhoneNumberWithError.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { parsePhoneNumberWithError as _parsePhoneNumberWithError } from '../../core/index.js' + +export function parsePhoneNumberWithError() { + return withMetadataArgument(_parsePhoneNumberWithError, arguments) +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/searchNumbers.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/searchNumbers.js new file mode 100644 index 00000000..c1913ee6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/searchNumbers.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { searchNumbers as _searchNumbers } from '../../core/index.js' + +export function searchNumbers() { + return withMetadataArgument(_searchNumbers, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/searchPhoneNumbersInText.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/searchPhoneNumbersInText.js new file mode 100644 index 00000000..7fb02a3f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/searchPhoneNumbersInText.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { searchPhoneNumbersInText as _searchPhoneNumbersInText } from '../../core/index.js' + +export function searchPhoneNumbersInText() { + return withMetadataArgument(_searchPhoneNumbersInText, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/validatePhoneNumberLength.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/validatePhoneNumberLength.js new file mode 100644 index 00000000..d4f55fda --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/validatePhoneNumberLength.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { validatePhoneNumberLength as _validatePhoneNumberLength } from '../../core/index.js' + +export function validatePhoneNumberLength() { + return withMetadataArgument(_validatePhoneNumberLength, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/withMetadataArgument.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/withMetadataArgument.js new file mode 100644 index 00000000..f55f3cba --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/exports/withMetadataArgument.js @@ -0,0 +1,9 @@ +// Importing from a ".js" file is a workaround for Node.js "ES Modules" +// importing system which is even uncapable of importing "*.json" files. +import metadata from '../../metadata.max.json.js' + +export default function withMetadataArgument(func, _arguments) { + var args = Array.prototype.slice.call(_arguments) + args.push(metadata) + return func.apply(this, args) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/index.cjs b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/index.cjs new file mode 100644 index 00000000..81d53ff4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/index.cjs @@ -0,0 +1,107 @@ +'use strict' + +var metadata = require('../metadata.max.json') +var core = require('../core/index.cjs') + +function call(func, _arguments) { + var args = Array.prototype.slice.call(_arguments) + args.push(metadata) + return func.apply(this, args) +} + +function parsePhoneNumberFromString() { + return call(core.parsePhoneNumberFromString, arguments) +} + +// ES5 `require()` "default" "interoperability" hack. +// https://github.com/babel/babel/issues/2212#issuecomment-131827986 +// An alternative approach: +// https://www.npmjs.com/package/babel-plugin-add-module-exports +exports = module.exports = parsePhoneNumberFromString +exports['default'] = parsePhoneNumberFromString + +exports.ParseError = core.ParseError + +function parsePhoneNumberWithError() { + return call(core.parsePhoneNumberWithError, arguments) +} + +// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`. +exports.parsePhoneNumber = parsePhoneNumberWithError +exports.parsePhoneNumberWithError = parsePhoneNumberWithError + +// `parsePhoneNumberFromString()` named export is now considered legacy: +// it has been promoted to a default export due to being too verbose. +exports.parsePhoneNumberFromString = parsePhoneNumberFromString + +exports.isValidPhoneNumber = function isValidPhoneNumber() { + return call(core.isValidPhoneNumber, arguments) +} + +exports.isPossiblePhoneNumber = function isPossiblePhoneNumber() { + return call(core.isPossiblePhoneNumber, arguments) +} + +exports.validatePhoneNumberLength = function validatePhoneNumberLength() { + return call(core.validatePhoneNumberLength, arguments) +} + +exports.findNumbers = function findNumbers() { + return call(core.findNumbers, arguments) +} + +exports.searchNumbers = function searchNumbers() { + return call(core.searchNumbers, arguments) +} + +exports.findPhoneNumbersInText = function findPhoneNumbersInText() { + return call(core.findPhoneNumbersInText, arguments) +} + +exports.searchPhoneNumbersInText = function searchPhoneNumbersInText() { + return call(core.searchPhoneNumbersInText, arguments) +} + +exports.PhoneNumberMatcher = function PhoneNumberMatcher(text, options) { + return core.PhoneNumberMatcher.call(this, text, options, metadata) +} +exports.PhoneNumberMatcher.prototype = Object.create(core.PhoneNumberMatcher.prototype, {}) +exports.PhoneNumberMatcher.prototype.constructor = exports.PhoneNumberMatcher + +exports.AsYouType = function AsYouType(country) { + return core.AsYouType.call(this, country, metadata) +} +exports.AsYouType.prototype = Object.create(core.AsYouType.prototype, {}) +exports.AsYouType.prototype.constructor = exports.AsYouType + +exports.isSupportedCountry = function isSupportedCountry(country) { + return call(core.isSupportedCountry, arguments) +} + +exports.getCountries = function getCountries() { + return call(core.getCountries, arguments) +} + +exports.getCountryCallingCode = function getCountryCallingCode() { + return call(core.getCountryCallingCode, arguments) +} + +exports.getExtPrefix = function getExtPrefix(country) { + return call(core.getExtPrefix, arguments) +} + +exports.getExampleNumber = function getExampleNumber() { + return call(core.getExampleNumber, arguments) +} + +exports.formatIncompletePhoneNumber = function formatIncompletePhoneNumber() { + return call(core.formatIncompletePhoneNumber, arguments) +} + +exports.parseIncompletePhoneNumber = core.parseIncompletePhoneNumber +exports.parsePhoneNumberCharacter = core.parsePhoneNumberCharacter +exports.parseDigits = core.parseDigits +exports.DIGIT_PLACEHOLDER = core.DIGIT_PLACEHOLDER + +exports.parseRFC3966 = core.parseRFC3966 +exports.formatRFC3966 = core.formatRFC3966 \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/index.cjs.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/index.cjs.js new file mode 100644 index 00000000..6d38739f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/index.cjs.js @@ -0,0 +1,112 @@ +'use strict' + +// This file is deprecated. +// It's the same as `index.cjs`, just with an added `.js` file extension. +// It only exists for compatibility with the software that doesn't like `*.cjs` file extension. +// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/61#note_950728292 + +var metadata = require('../metadata.max.json') +var core = require('../core/index.cjs') + +function call(func, _arguments) { + var args = Array.prototype.slice.call(_arguments) + args.push(metadata) + return func.apply(this, args) +} + +function parsePhoneNumberFromString() { + return call(core.parsePhoneNumberFromString, arguments) +} + +// ES5 `require()` "default" "interoperability" hack. +// https://github.com/babel/babel/issues/2212#issuecomment-131827986 +// An alternative approach: +// https://www.npmjs.com/package/babel-plugin-add-module-exports +exports = module.exports = parsePhoneNumberFromString +exports['default'] = parsePhoneNumberFromString + +exports.ParseError = core.ParseError + +function parsePhoneNumberWithError() { + return call(core.parsePhoneNumberWithError, arguments) +} + +// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`. +exports.parsePhoneNumber = parsePhoneNumberWithError +exports.parsePhoneNumberWithError = parsePhoneNumberWithError + +// `parsePhoneNumberFromString()` named export is now considered legacy: +// it has been promoted to a default export due to being too verbose. +exports.parsePhoneNumberFromString = parsePhoneNumberFromString + +exports.isValidPhoneNumber = function isValidPhoneNumber() { + return call(core.isValidPhoneNumber, arguments) +} + +exports.isPossiblePhoneNumber = function isPossiblePhoneNumber() { + return call(core.isPossiblePhoneNumber, arguments) +} + +exports.validatePhoneNumberLength = function validatePhoneNumberLength() { + return call(core.validatePhoneNumberLength, arguments) +} + +exports.findNumbers = function findNumbers() { + return call(core.findNumbers, arguments) +} + +exports.searchNumbers = function searchNumbers() { + return call(core.searchNumbers, arguments) +} + +exports.findPhoneNumbersInText = function findPhoneNumbersInText() { + return call(core.findPhoneNumbersInText, arguments) +} + +exports.searchPhoneNumbersInText = function searchPhoneNumbersInText() { + return call(core.searchPhoneNumbersInText, arguments) +} + +exports.PhoneNumberMatcher = function PhoneNumberMatcher(text, options) { + return core.PhoneNumberMatcher.call(this, text, options, metadata) +} +exports.PhoneNumberMatcher.prototype = Object.create(core.PhoneNumberMatcher.prototype, {}) +exports.PhoneNumberMatcher.prototype.constructor = exports.PhoneNumberMatcher + +exports.AsYouType = function AsYouType(country) { + return core.AsYouType.call(this, country, metadata) +} +exports.AsYouType.prototype = Object.create(core.AsYouType.prototype, {}) +exports.AsYouType.prototype.constructor = exports.AsYouType + +exports.isSupportedCountry = function isSupportedCountry(country) { + return call(core.isSupportedCountry, arguments) +} + +exports.getCountries = function getCountries() { + return call(core.getCountries, arguments) +} + +exports.getCountryCallingCode = function getCountryCallingCode() { + return call(core.getCountryCallingCode, arguments) +} + +exports.getExtPrefix = function getExtPrefix(country) { + return call(core.getExtPrefix, arguments) +} + +exports.getExampleNumber = function getExampleNumber() { + return call(core.getExampleNumber, arguments) +} + +exports.formatIncompletePhoneNumber = function formatIncompletePhoneNumber() { + return call(core.formatIncompletePhoneNumber, arguments) +} + +exports.parseIncompletePhoneNumber = core.parseIncompletePhoneNumber +exports.parsePhoneNumberCharacter = core.parsePhoneNumberCharacter +exports.parseDigits = core.parseDigits +exports.DIGIT_PLACEHOLDER = core.DIGIT_PLACEHOLDER + +exports.parseRFC3966 = core.parseRFC3966 +exports.formatRFC3966 = core.formatRFC3966 \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/index.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/index.js new file mode 100644 index 00000000..14258901 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/index.js @@ -0,0 +1,40 @@ +// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`. +export { parsePhoneNumberWithError, parsePhoneNumberWithError as parsePhoneNumber } from './exports/parsePhoneNumberWithError.js' +// `parsePhoneNumberFromString()` named export is now considered legacy: +// it has been promoted to a default export due to being too verbose. +export { parsePhoneNumberFromString, parsePhoneNumberFromString as default } from './exports/parsePhoneNumberFromString.js' + +export { isValidPhoneNumber } from './exports/isValidPhoneNumber.js' +export { isPossiblePhoneNumber } from './exports/isPossiblePhoneNumber.js' +export { validatePhoneNumberLength } from './exports/validatePhoneNumberLength.js' + +// Deprecated. +export { findNumbers } from './exports/findNumbers.js' +// Deprecated. +export { searchNumbers } from './exports/searchNumbers.js' + +export { findPhoneNumbersInText } from './exports/findPhoneNumbersInText.js' +export { searchPhoneNumbersInText } from './exports/searchPhoneNumbersInText.js' +export { PhoneNumberMatcher } from './exports/PhoneNumberMatcher.js' + +export { AsYouType } from './exports/AsYouType.js' + +export { isSupportedCountry } from './exports/isSupportedCountry.js' +export { getCountries } from './exports/getCountries.js' +export { getCountryCallingCode } from './exports/getCountryCallingCode.js' +export { getExtPrefix } from './exports/getExtPrefix.js' + +export { Metadata } from './exports/Metadata.js' +export { getExampleNumber } from './exports/getExampleNumber.js' + +export { formatIncompletePhoneNumber } from './exports/formatIncompletePhoneNumber.js' + +export { + ParseError, + parseIncompletePhoneNumber, + parsePhoneNumberCharacter, + parseDigits, + parseRFC3966, + formatRFC3966, + DIGIT_PLACEHOLDER +} from '../core/index.js' diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/metadata/package.json b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/metadata/package.json new file mode 100644 index 00000000..aa66dc3f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/metadata/package.json @@ -0,0 +1,16 @@ +{ + "private": true, + "name": "libphonenumber-js/max/metadata", + "main": "../../metadata.max.json", + "module": "../../metadata.max.json.js", + "types": "../../metadata.max.json.d.ts", + "type": "module", + "exports": { + ".": { + "types": "../../metadata.max.json.d.ts", + "import": "../../metadata.max.json.js", + "require": "../../metadata.max.json" + } + }, + "sideEffects": false +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/package.json b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/package.json new file mode 100644 index 00000000..ce2364ae --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/max/package.json @@ -0,0 +1,16 @@ +{ + "private": true, + "name": "libphonenumber-js/max", + "main": "index.cjs", + "module": "index.js", + "types": "../min/index.d.ts", + "type": "module", + "exports": { + ".": { + "types": "../min/index.d.ts", + "import": "./index.js", + "require": "./index.cjs" + } + }, + "sideEffects": false +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.full.json b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.full.json new file mode 100644 index 00000000..32856020 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.full.json @@ -0,0 +1 @@ +{"version":4,"country_calling_codes":{"1":["US","AG","AI","AS","BB","BM","BS","CA","DM","DO","GD","GU","JM","KN","KY","LC","MP","MS","PR","SX","TC","TT","VC","VG","VI"],"7":["RU","KZ"],"20":["EG"],"27":["ZA"],"30":["GR"],"31":["NL"],"32":["BE"],"33":["FR"],"34":["ES"],"36":["HU"],"39":["IT","VA"],"40":["RO"],"41":["CH"],"43":["AT"],"44":["GB","GG","IM","JE"],"45":["DK"],"46":["SE"],"47":["NO","SJ"],"48":["PL"],"49":["DE"],"51":["PE"],"52":["MX"],"53":["CU"],"54":["AR"],"55":["BR"],"56":["CL"],"57":["CO"],"58":["VE"],"60":["MY"],"61":["AU","CC","CX"],"62":["ID"],"63":["PH"],"64":["NZ"],"65":["SG"],"66":["TH"],"81":["JP"],"82":["KR"],"84":["VN"],"86":["CN"],"90":["TR"],"91":["IN"],"92":["PK"],"93":["AF"],"94":["LK"],"95":["MM"],"98":["IR"],"211":["SS"],"212":["MA","EH"],"213":["DZ"],"216":["TN"],"218":["LY"],"220":["GM"],"221":["SN"],"222":["MR"],"223":["ML"],"224":["GN"],"225":["CI"],"226":["BF"],"227":["NE"],"228":["TG"],"229":["BJ"],"230":["MU"],"231":["LR"],"232":["SL"],"233":["GH"],"234":["NG"],"235":["TD"],"236":["CF"],"237":["CM"],"238":["CV"],"239":["ST"],"240":["GQ"],"241":["GA"],"242":["CG"],"243":["CD"],"244":["AO"],"245":["GW"],"246":["IO"],"247":["AC"],"248":["SC"],"249":["SD"],"250":["RW"],"251":["ET"],"252":["SO"],"253":["DJ"],"254":["KE"],"255":["TZ"],"256":["UG"],"257":["BI"],"258":["MZ"],"260":["ZM"],"261":["MG"],"262":["RE","YT"],"263":["ZW"],"264":["NA"],"265":["MW"],"266":["LS"],"267":["BW"],"268":["SZ"],"269":["KM"],"290":["SH","TA"],"291":["ER"],"297":["AW"],"298":["FO"],"299":["GL"],"350":["GI"],"351":["PT"],"352":["LU"],"353":["IE"],"354":["IS"],"355":["AL"],"356":["MT"],"357":["CY"],"358":["FI","AX"],"359":["BG"],"370":["LT"],"371":["LV"],"372":["EE"],"373":["MD"],"374":["AM"],"375":["BY"],"376":["AD"],"377":["MC"],"378":["SM"],"380":["UA"],"381":["RS"],"382":["ME"],"383":["XK"],"385":["HR"],"386":["SI"],"387":["BA"],"389":["MK"],"420":["CZ"],"421":["SK"],"423":["LI"],"500":["FK"],"501":["BZ"],"502":["GT"],"503":["SV"],"504":["HN"],"505":["NI"],"506":["CR"],"507":["PA"],"508":["PM"],"509":["HT"],"590":["GP","BL","MF"],"591":["BO"],"592":["GY"],"593":["EC"],"594":["GF"],"595":["PY"],"596":["MQ"],"597":["SR"],"598":["UY"],"599":["CW","BQ"],"670":["TL"],"672":["NF"],"673":["BN"],"674":["NR"],"675":["PG"],"676":["TO"],"677":["SB"],"678":["VU"],"679":["FJ"],"680":["PW"],"681":["WF"],"682":["CK"],"683":["NU"],"685":["WS"],"686":["KI"],"687":["NC"],"688":["TV"],"689":["PF"],"690":["TK"],"691":["FM"],"692":["MH"],"850":["KP"],"852":["HK"],"853":["MO"],"855":["KH"],"856":["LA"],"880":["BD"],"886":["TW"],"960":["MV"],"961":["LB"],"962":["JO"],"963":["SY"],"964":["IQ"],"965":["KW"],"966":["SA"],"967":["YE"],"968":["OM"],"970":["PS"],"971":["AE"],"972":["IL"],"973":["BH"],"974":["QA"],"975":["BT"],"976":["MN"],"977":["NP"],"992":["TJ"],"993":["TM"],"994":["AZ"],"995":["GE"],"996":["KG"],"998":["UZ"]},"countries":{"AC":["247","00","(?:[01589]\\d|[46])\\d{4}",[5,6],0,0,0,0,0,0,0,[["6[2-467]\\d{3}",[5]],["4\\d{4}",[5]],0,0,0,0,["(?:0[1-9]|[1589]\\d)\\d{4}",[6]]]],"AD":["376","00","(?:1|6\\d)\\d{7}|[135-9]\\d{5}",[6,8,9],[["(\\d{3})(\\d{3})","$1 $2",["[135-9]"]],["(\\d{4})(\\d{4})","$1 $2",["1"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]],0,0,0,0,0,0,[["[78]\\d{5}",[6]],["690\\d{6}|[356]\\d{5}",[6,9]],["180[02]\\d{4}",[8]],["[19]\\d{5}",[6]]]],"AE":["971","00","(?:[4-7]\\d|9[0-689])\\d{7}|800\\d{2,9}|[2-4679]\\d{7}",[5,6,7,8,9,10,11,12],[["(\\d{3})(\\d{2,9})","$1 $2",["60|8"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[236]|[479][2-8]"],"0$1"],["(\\d{3})(\\d)(\\d{5})","$1 $2 $3",["[479]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"]],"0",0,0,0,0,0,[["[2-4679][2-8]\\d{6}",[8]],["5[024-68]\\d{7}",[9]],["400\\d{6}|800\\d{2,9}"],["900[02]\\d{5}",[9]],0,0,["600[25]\\d{5}",[9]],0,0,["700[05]\\d{5}",[9]]]],"AF":["93","00","[2-7]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"]],"0",0,0,0,0,0,[["(?:[25][0-8]|[34][0-4]|6[0-5])[2-9]\\d{6}"],["7\\d{8}"]]],"AG":["1","011","(?:268|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([457]\\d{6})$","268$1",0,"268",[["268(?:4(?:6[0-38]|84)|56[0-2])\\d{4}"],["268(?:464|7(?:1[3-9]|[28]\\d|3[0246]|64|7[0-689]))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,0,["26840[69]\\d{4}"],["26848[01]\\d{4}"]]],"AI":["1","011","(?:264|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2457]\\d{6})$","264$1",0,"264",[["264(?:292|4(?:6[12]|9[78]))\\d{4}"],["264(?:235|4(?:69|76)|5(?:3[6-9]|8[1-4])|7(?:29|72))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,0,["264724\\d{4}"]]],"AL":["355","00","(?:700\\d\\d|900)\\d{3}|8\\d{5,7}|(?:[2-5]|6\\d)\\d{7}",[6,7,8,9],[["(\\d{3})(\\d{3,4})","$1 $2",["80|9"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["4[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2358][2-5]|4"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["[23578]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["6"],"0$1"]],"0",0,0,0,0,0,[["4505[0-2]\\d{3}|(?:[2358][16-9]\\d[2-9]|4410)\\d{4}|(?:[2358][2-5][2-9]|4(?:[2-57-9][2-9]|6\\d))\\d{5}",[8]],["6(?:[78][2-9]|9\\d)\\d{6}",[9]],["800\\d{4}",[7]],["900[1-9]\\d\\d",[6]],["700[2-9]\\d{4}",[8]],0,0,0,0,["808[1-9]\\d\\d",[6]]]],"AM":["374","00","(?:[1-489]\\d|55|60|77)\\d{6}",[8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[89]0"],"0 $1"],["(\\d{3})(\\d{5})","$1 $2",["2|3[12]"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["1|47"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[3-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:(?:1[0-25]|47)\\d|2(?:2[2-46]|3[1-8]|4[2-69]|5[2-7]|6[1-9]|8[1-7])|3[12]2)\\d{5}"],["(?:33|4[1349]|55|77|88|9[13-9])\\d{6}"],["800\\d{5}"],["90[016]\\d{5}"],0,0,0,0,["60(?:2[78]|3[5-9]|4[02-9]|5[0-46-9]|[6-8]\\d|9[01])\\d{4}"],["80[1-4]\\d{5}"]]],"AO":["244","00","[29]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[29]"]]],0,0,0,0,0,0,[["2\\d(?:[0134][25-9]|[25-9]\\d)\\d{5}"],["9[1-59]\\d{7}"]]],"AR":["54","00","(?:11|[89]\\d\\d)\\d{8}|[2368]\\d{9}",[10,11],[["(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])","2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["1"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2-$3",["[23]"],"0$1",1],["(\\d)(\\d{4})(\\d{2})(\\d{4})","$2 15-$3-$4",["9(?:2[2-469]|3[3-578])","9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))","9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",0,"$1 $2 $3-$4"],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 15-$3-$4",["91"],"0$1",0,"$1 $2 $3-$4"],["(\\d{3})(\\d{3})(\\d{5})","$1-$2-$3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 15-$3-$4",["9"],"0$1",0,"$1 $2 $3-$4"]],"0",0,"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?","9$1",0,0,[["3888[013-9]\\d{5}|3(?:7(?:1[15]|81)|8(?:21|4[16]|69|9[12]))[46]\\d{5}|(?:29(?:54|66)|3(?:7(?:55|77)|865))[2-8]\\d{5}|(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|473|9(?:[07]2|2[26]|34|46))|3327)[45]\\d{5}|(?:2(?:284|3(?:02|23)|657|920)|3(?:4(?:8[27]|92)|541|878))[2-7]\\d{5}|(?:2(?:(?:26|62)2|320|477|9(?:42|83))|3(?:329|4(?:[47]6|62|89)|564))[2-6]\\d{5}|(?:(?:11[1-8]|670)\\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-7]|[235][4-6]|84)|5(?:1[2-9]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:0[45]|[17][2-6]|3[4-6]|[58][3-6])))\\d{6}|2(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|475|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\d{5}|(?:2(?:2(?:57|81)|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|71)|5(?:25|37|4[347]|71)|7(?:18|5[17])))[3-6]\\d{5}|(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[03-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[145]|4[13]|5[468]|7[2-5]|8[26])|8(?:2[5-7]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\d{5}",[10]],["93(?:7(?:1[15]|81)[46]|8(?:(?:21|4[16]|69|9[12])[46]|88[013-9]))\\d{5}|9(?:29(?:54|66)|3(?:7(?:55|77)|865))[2-8]\\d{5}|9(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|473|9(?:[07]2|2[26]|34|46))|3327)[45]\\d{5}|9(?:2(?:284|3(?:02|23)|657|920)|3(?:4(?:8[27]|92)|541|878))[2-7]\\d{5}|9(?:2(?:(?:26|62)2|320|477|9(?:42|83))|3(?:329|4(?:[47]6|62|89)|564))[2-6]\\d{5}|(?:675\\d|9(?:11[1-8]\\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-7]|[235][4-6]|84)|5(?:1[2-9]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:0[45]|[17][2-6]|3[4-6]|[58][3-6]))))\\d{6}|92(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|475|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\d{5}|9(?:2(?:2(?:57|81)|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|71)|5(?:25|37|4[347]|71)|7(?:18|5[17])))[3-6]\\d{5}|9(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[03-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[145]|4[13]|5[468]|7[2-5]|8[26])|8(?:2[5-7]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\d{5}"],["800\\d{7,8}"],["60[04579]\\d{7}",[10]],0,0,["810\\d{7}",[10]]]],"AS":["1","011","(?:[58]\\d\\d|684|900)\\d{7}",[10],0,"1",0,"1|([267]\\d{6})$","684$1",0,"684",[["6846(?:22|33|44|55|77|88|9[19])\\d{4}"],["684(?:2(?:48|5[2468]|72)|7(?:3[13]|70|82))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"AT":["43","00","1\\d{3,12}|2\\d{6,12}|43(?:(?:0\\d|5[02-9])\\d{3,9}|2\\d{4,5}|[3467]\\d{4}|8\\d{4,6}|9\\d{4,7})|5\\d{4,12}|8\\d{7,12}|9\\d{8,12}|(?:[367]\\d|4[0-24-9])\\d{4,11}",[4,5,6,7,8,9,10,11,12,13],[["(\\d)(\\d{3,12})","$1 $2",["1(?:11|[2-9])"],"0$1"],["(\\d{3})(\\d{2})","$1 $2",["517"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["5[079]"],"0$1"],["(\\d{3})(\\d{3,10})","$1 $2",["(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]"],"0$1"],["(\\d{4})(\\d{3,9})","$1 $2",["[2-467]|5[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["5"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,7})","$1 $2 $3",["5"],"0$1"]],"0",0,0,0,0,0,[["1(?:11\\d|[2-9]\\d{3,11})|(?:316|463|(?:51|66|73)2)\\d{3,10}|(?:2(?:1[467]|2[13-8]|5[2357]|6[1-46-8]|7[1-8]|8[124-7]|9[1458])|3(?:1[1-578]|3[23568]|4[5-7]|5[1378]|6[1-38]|8[3-68])|4(?:2[1-8]|35|7[1368]|8[2457])|5(?:2[1-8]|3[357]|4[147]|5[12578]|6[37])|6(?:13|2[1-47]|4[135-8]|5[468])|7(?:2[1-8]|35|4[13478]|5[68]|6[16-8]|7[1-6]|9[45]))\\d{4,10}"],["6(?:5[0-3579]|6[013-9]|[7-9]\\d)\\d{4,10}",[7,8,9,10,11,12,13]],["800\\d{6,10}",[9,10,11,12,13]],["(?:8[69][2-68]|9(?:0[01]|3[019]))\\d{6,10}",[9,10,11,12,13]],0,0,0,0,["5(?:0[1-9]|17|[79]\\d)\\d{2,10}|7[28]0\\d{6,10}",[5,6,7,8,9,10,11,12,13]],["8(?:10|2[018])\\d{6,10}|828\\d{5}",[8,9,10,11,12,13]]]],"AU":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{7}(?:\\d(?:\\d{2})?)?|8[0-24-9]\\d{7})|[2-478]\\d{8}|1\\d{4,7}",[5,6,7,8,9,10,12],[["(\\d{2})(\\d{3,4})","$1 $2",["16"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,4})","$1 $2 $3",["16"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["14|4"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[2378]"],"(0$1)"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:30|[89])"]]],"0",0,"0|(183[12])",0,0,0,[["(?:(?:2(?:[0-26-9]\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\d|2[0-8]))\\d{3}|8(?:51(?:0(?:0[03-9]|[12479]\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\d|7[89]|9[0-4]))|(?:6[0-8]|[78]\\d)\\d{3}|9(?:[02-9]\\d{3}|1(?:(?:[0-58]\\d|6[0135-9])\\d|7(?:0[0-24-9]|[1-9]\\d)|9(?:[0-46-9]\\d|5[0-79])))))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,["163\\d{2,6}",[5,6,7,8,9]],["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],"AW":["297","00","(?:[25-79]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[25-9]"]]],0,0,0,0,0,0,[["5(?:2\\d|8[1-9])\\d{4}"],["(?:290|5[69]\\d|6(?:[03]0|22|4[0-2]|[69]\\d)|7(?:[34]\\d|7[07])|9(?:6[45]|9[4-8]))\\d{4}"],["800\\d{4}"],["900\\d{4}"],0,0,0,0,["(?:28\\d|501)\\d{4}"]]],"AX":["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","2\\d{4,9}|35\\d{4,5}|(?:60\\d\\d|800)\\d{4,6}|7\\d{5,11}|(?:[14]\\d|3[0-46-9]|50)\\d{4,8}",[5,6,7,8,9,10,11,12],0,"0",0,0,0,0,"18",[["18[1-8]\\d{3,6}",[6,7,8,9]],["4946\\d{2,6}|(?:4[0-8]|50)\\d{4,8}",[6,7,8,9,10]],["800\\d{4,6}",[7,8,9]],["[67]00\\d{5,6}",[8,9]],0,0,["20\\d{4,8}|60[12]\\d{5,6}|7(?:099\\d{4,5}|5[03-9]\\d{3,7})|20[2-59]\\d\\d|(?:606|7(?:0[78]|1|3\\d))\\d{7}|(?:10|29|3[09]|70[1-5]\\d)\\d{4,8}"]],"00"],"AZ":["994","00","365\\d{6}|(?:[124579]\\d|60|88)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[28]|2|365|46","1[28]|2|365[45]|46","1[28]|2|365(?:4|5[02])|46"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[13-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:2[12]428|3655[02])\\d{4}|(?:2(?:22[0-79]|63[0-28])|3654)\\d{5}|(?:(?:1[28]|46)\\d|2(?:[014-6]2|[23]3))\\d{6}"],["36554\\d{4}|(?:[16]0|4[04]|5[015]|7[07]|99)\\d{7}"],["88\\d{7}"],["900200\\d{3}"]]],"BA":["387","00","6\\d{8}|(?:[35689]\\d|49|70)\\d{6}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["6[1-3]|[7-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2-$3",["[3-5]|6[56]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["6"],"0$1"]],"0",0,0,0,0,0,[["(?:3(?:[05-79][2-9]|1[4579]|[23][24-9]|4[2-4689]|8[2457-9])|49[2-579]|5(?:0[2-49]|[13][2-9]|[268][2-4679]|4[4689]|5[2-79]|7[2-69]|9[2-4689]))\\d{5}",[8]],["6040\\d{5}|6(?:03|[1-356]|44|7\\d)\\d{6}"],["8[08]\\d{6}",[8]],["9[0246]\\d{6}",[8]],0,0,["703[235]0\\d{3}|70(?:2[0-5]|3[0146]|[56]0)\\d{4}",[8]],0,0,["8[12]\\d{6}",[8]]]],"BB":["1","011","(?:246|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","246$1",0,"246",[["246521[0369]\\d{3}|246(?:2(?:2[78]|7[0-4])|4(?:1[024-6]|2\\d|3[2-9])|5(?:20|[34]\\d|54|7[1-3])|6(?:2\\d|38)|7[35]7|9(?:1[89]|63))\\d{4}"],["246(?:(?:2(?:[3568]\\d|4[0-57-9])|3(?:5[2-9]|6[0-6])|4(?:46|5\\d)|69[5-7]|8(?:[2-5]\\d|83))\\d|52(?:1[147]|20))\\d{3}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["(?:246976|900[2-9]\\d\\d)\\d{4}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,["246(?:292|367|4(?:1[7-9]|3[01]|4[47-9]|67)|7(?:1[2-9]|2\\d|3[016]|53))\\d{4}"],0,["24631\\d{5}"]]],"BD":["880","00","[1-469]\\d{9}|8[0-79]\\d{7,8}|[2-79]\\d{8}|[2-9]\\d{7}|[3-9]\\d{6}|[57-9]\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{4,6})","$1-$2",["31[5-8]|[459]1"],"0$1"],["(\\d{3})(\\d{3,7})","$1-$2",["3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:28|4[14]|5)|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]"],"0$1"],["(\\d{4})(\\d{3,6})","$1-$2",["[13-9]|22"],"0$1"],["(\\d)(\\d{7,8})","$1-$2",["2"],"0$1"]],"0",0,0,0,0,0,[["(?:4(?:31\\d\\d|423)|5222)\\d{3}(?:\\d{2})?|8332[6-9]\\d\\d|(?:3(?:03[56]|224)|4(?:22[25]|653))\\d{3,4}|(?:3(?:42[47]|529|823)|4(?:027|525|65(?:28|8))|562|6257|7(?:1(?:5[3-5]|6[12]|7[156]|89)|22[589]56|32|42675|52(?:[25689](?:56|8)|[347]8)|71(?:6[1267]|75|89)|92374)|82(?:2[59]|32)56|9(?:03[23]56|23(?:256|373)|31|5(?:1|2[4589]56)))\\d{3}|(?:3(?:02[348]|22[35]|324|422)|4(?:22[67]|32[236-9]|6(?:2[46]|5[57])|953)|5526|6(?:024|6655)|81)\\d{4,5}|(?:2(?:7(?:1[0-267]|2[0-289]|3[0-29]|4[01]|5[1-3]|6[013]|7[0178]|91)|8(?:0[125]|1[1-6]|2[0157-9]|3[1-69]|41|6[1-35]|7[1-5]|8[1-8]|9[0-6])|9(?:0[0-2]|1[0-4]|2[568]|3[3-6]|5[5-7]|6[0136-9]|7[0-7]|8[014-9]))|3(?:0(?:2[025-79]|3[2-4])|181|22[12]|32[2356]|824)|4(?:02[09]|22[348]|32[045]|523|6(?:27|54))|666(?:22|53)|7(?:22[57-9]|42[56]|82[35])8|8(?:0[124-9]|2(?:181|2[02-4679]8)|4[12]|[5-7]2)|9(?:[04]2|2(?:2|328)|81))\\d{4}|(?:2(?:222|[45]\\d)\\d|3(?:1(?:2[5-7]|[5-7])|425|822)|4(?:033|1\\d|[257]1|332|4(?:2[246]|5[25])|6(?:2[35]|56|62)|8(?:23|54)|92[2-5])|5(?:02[03489]|22[457]|32[35-79]|42[46]|6(?:[18]|53)|724|826)|6(?:023|2(?:2[2-5]|5[3-5]|8)|32[3478]|42[34]|52[47]|6(?:[18]|6(?:2[34]|5[24]))|[78]2[2-5]|92[2-6])|7(?:02|21\\d|[3-589]1|6[12]|72[24])|8(?:217|3[12]|[5-7]1)|9[24]1)\\d{5}|(?:(?:3[2-8]|5[2-57-9]|6[03-589])1|4[4689][18])\\d{5}|[59]1\\d{5}"],["(?:1[13-9]\\d|644)\\d{7}|(?:3[78]|44|66)[02-9]\\d{7}",[10]],["80[03]\\d{7}",[10]],0,0,0,0,0,["96(?:0[469]|1[0-47]|3[389]|6[69]|7[78])\\d{6}",[10]]]],"BE":["32","00","4\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:80|9)0"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[239]|4[23]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[15-8]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4"],"0$1"]],"0",0,0,0,0,0,[["80[2-8]\\d{5}|(?:1[0-69]|[23][2-8]|4[23]|5\\d|6[013-57-9]|71|8[1-79]|9[2-4])\\d{6}",[8]],["4[5-9]\\d{7}",[9]],["800[1-9]\\d{4}",[8]],["(?:70(?:2[0-57]|3[04-7]|44|6[569]|7[0579])|90(?:0[0-8]|1[36]|2[0-3568]|3[0-689]|[47][2-68]|5[1-68]|6[0-378]|9[34679]))\\d{4}",[8]],0,0,["78(?:0[57]|1[014-8]|2[25]|3[15-8]|48|[56]0|7[06-8]|9\\d)\\d{4}",[8]],0,0,["7879\\d{4}",[8]]]],"BF":["226","00","[025-7]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[025-7]"]]],0,0,0,0,0,0,[["2(?:0(?:49|5[23]|6[5-7]|9[016-9])|4(?:4[569]|5[4-6]|6[5-7]|7[0179])|5(?:[34]\\d|50|6[5-7]))\\d{4}"],["(?:0[1-35-7]|5[1-8]|[67]\\d)\\d{6}"]]],"BG":["359","00","[2-7]\\d{6,7}|[89]\\d{6,8}|2\\d{5}",[6,7,8,9],[["(\\d)(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["43[1-6]|70[1-9]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:70|8)0"],"0$1"],["(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3",["43[1-7]|7"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[48]|9[08]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"]],"0",0,0,0,0,0,[["2\\d{5,7}|(?:43[1-6]|70[1-9])\\d{4,5}|(?:[36]\\d|4[124-7]|[57][1-9]|8[1-6]|9[1-7])\\d{5,6}",[6,7,8]],["(?:43[07-9]|99[69]\\d)\\d{5}|(?:8[7-9]|98)\\d{7}",[8,9]],["800\\d{5}",[8]],["90\\d{6}",[8]],0,0,0,0,0,["700\\d{5}",[8]]]],"BH":["973","00","[136-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[13679]|8[047]"]]],0,0,0,0,0,0,[["(?:1(?:3[1356]|6[0156]|7\\d)\\d|6(?:1[16]\\d|500|6(?:0\\d|3[12]|44|7[7-9]|88)|9[69][69])|7(?:1(?:11|78)|7\\d\\d))\\d{4}"],["(?:3(?:[1-79]\\d|8[0-47-9])\\d|6(?:3(?:00|33|6[16])|6(?:3[03-9]|[69]\\d|7[0-6])))\\d{4}"],["80\\d{6}"],["(?:87|9[014578])\\d{6}"],0,0,0,0,0,["84\\d{6}"]]],"BI":["257","00","(?:[267]\\d|31)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2367]"]]],0,0,0,0,0,0,[["(?:22|31)\\d{6}"],["(?:29|6[1257-9]|7[125-9])\\d{6}"]]],"BJ":["229","00","(?:[25689]\\d|40)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24-689]"]]],0,0,0,0,0,0,[["2(?:02|1[037]|2[45]|3[68]|4\\d)\\d{5}"],["(?:40|5[1-9]|6\\d|9[013-9])\\d{6}"],0,0,0,0,["81\\d{6}"],0,["857[58]\\d{4}"]]],"BL":["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[["590(?:2[7-9]|5[12]|87)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],"BM":["1","011","(?:441|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","441$1",0,"441",[["441(?:[46]\\d\\d|5(?:4\\d|60|89))\\d{4}"],["441(?:[2378]\\d|5[0-39])\\d{5}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"BN":["673","00","[2-578]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-578]"]]],0,0,0,0,0,0,[["22[0-7]\\d{4}|(?:2[013-9]|[34]\\d|5[0-25-9])\\d{5}"],["(?:22[89]|[78]\\d\\d)\\d{4}"],0,0,0,0,0,0,["5[34]\\d{5}"]]],"BO":["591","00(?:1\\d)?","(?:[2-467]\\d\\d|8001)\\d{5}",[8,9],[["(\\d)(\\d{7})","$1 $2",["[23]|4[46]"]],["(\\d{8})","$1",["[67]"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["8"]]],"0",0,"0(1\\d)?",0,0,0,[["(?:2(?:2\\d\\d|5(?:11|[258]\\d|9[67])|6(?:12|2\\d|9[34])|8(?:2[34]|39|62))|3(?:3\\d\\d|4(?:6\\d|8[24])|8(?:25|42|5[257]|86|9[25])|9(?:[27]\\d|3[2-4]|4[248]|5[24]|6[2-6]))|4(?:4\\d\\d|6(?:11|[24689]\\d|72)))\\d{4}",[8]],["[67]\\d{7}",[8]],["8001[07]\\d{4}",[9]]]],"BQ":["599","00","(?:[34]1|7\\d)\\d{5}",[7],0,0,0,0,0,0,"[347]",[["(?:318[023]|41(?:6[023]|70)|7(?:1[578]|2[05]|50)\\d)\\d{3}"],["(?:31(?:8[14-8]|9[14578])|416[14-9]|7(?:0[01]|7[07]|8\\d|9[056])\\d)\\d{3}"]]],"BR":["55","00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)","(?:[1-46-9]\\d\\d|5(?:[0-46-9]\\d|5[0-46-9]))\\d{8}|[1-9]\\d{9}|[3589]\\d{8}|[34]\\d{7}",[8,9,10,11],[["(\\d{4})(\\d{4})","$1-$2",["300|4(?:0[02]|37)","4(?:02|37)0|[34]00"]],["(\\d{3})(\\d{2,3})(\\d{4})","$1 $2 $3",["(?:[358]|90)0"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]"],"($1)"],["(\\d{2})(\\d{5})(\\d{4})","$1 $2-$3",["[16][1-9]|[2-57-9]"],"($1)"]],"0",0,"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\d{10,11}))?","$2",0,0,[["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-5]\\d{7}",[10]],["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])(?:7|9\\d)\\d{7}",[10,11]],["800\\d{6,7}",[9,10]],["300\\d{6}|[59]00\\d{6,7}",[9,10]],0,0,0,0,0,["(?:30[03]\\d{3}|4(?:0(?:0\\d|20)|370))\\d{4}|300\\d{5}",[8,10]]]],"BS":["1","011","(?:242|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([3-8]\\d{6})$","242$1",0,"242",[["242(?:3(?:02|[236][1-9]|4[0-24-9]|5[0-68]|7[347]|8[0-4]|9[2-467])|461|502|6(?:0[1-4]|12|2[013]|[45]0|7[67]|8[78]|9[89])|7(?:02|88))\\d{4}"],["242(?:3(?:5[79]|7[56]|95)|4(?:[23][1-9]|4[1-35-9]|5[1-8]|6[2-8]|7\\d|81)|5(?:2[45]|3[35]|44|5[1-46-9]|65|77)|6[34]6|7(?:27|38)|8(?:0[1-9]|1[02-9]|2\\d|[89]9))\\d{4}"],["242300\\d{4}|8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,["242225\\d{4}"]]],"BT":["975","00","[17]\\d{7}|[2-8]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[2-68]|7[246]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[67]|7"]]],0,0,0,0,0,0,[["(?:2[3-6]|[34][5-7]|5[236]|6[2-46]|7[246]|8[2-4])\\d{5}",[7]],["(?:1[67]|77)\\d{6}",[8]]]],"BW":["267","00","(?:0800|(?:[37]|800)\\d)\\d{6}|(?:[2-6]\\d|90)\\d{5}",[7,8,10],[["(\\d{2})(\\d{5})","$1 $2",["90"]],["(\\d{3})(\\d{4})","$1 $2",["[24-6]|3[15-79]"]],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37]"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["(?:2(?:4[0-48]|6[0-24]|9[0578])|3(?:1[0-35-9]|55|[69]\\d|7[013])|4(?:6[03]|7[1267]|9[0-5])|5(?:3[03489]|4[0489]|7[1-47]|88|9[0-49])|6(?:2[1-35]|5[149]|8[067]))\\d{4}",[7]],["(?:321|7(?:[1-7]\\d|8[01]))\\d{5}",[8]],["(?:0800|800\\d)\\d{6}",[10]],["90\\d{5}",[7]],0,0,0,0,["79(?:1(?:[01]\\d|2[0-7])|2[0-7]\\d)\\d{3}",[8]]]],"BY":["375","810","(?:[12]\\d|33|44|902)\\d{7}|8(?:0[0-79]\\d{5,7}|[1-7]\\d{9})|8(?:1[0-489]|[5-79]\\d)\\d{7}|8[1-79]\\d{6,7}|8[0-79]\\d{5}|8\\d{5}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3})","$1 $2",["800"],"8 $1"],["(\\d{3})(\\d{2})(\\d{2,4})","$1 $2 $3",["800"],"8 $1"],["(\\d{4})(\\d{2})(\\d{3})","$1 $2-$3",["1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])","1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])"],"8 0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["1(?:[56]|7[467])|2[1-3]"],"8 0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-4]"],"8 0$1"],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["[89]"],"8 $1"]],"8",0,"0|80?",0,0,0,[["(?:1(?:5(?:1[1-5]|[24]\\d|6[2-4]|9[1-7])|6(?:[235]\\d|4[1-7])|7\\d\\d)|2(?:1(?:[246]\\d|3[0-35-9]|5[1-9])|2(?:[235]\\d|4[0-8])|3(?:[26]\\d|3[02-79]|4[024-7]|5[03-7])))\\d{5}",[9]],["(?:2(?:5[5-79]|9[1-9])|(?:33|44)\\d)\\d{6}",[9]],["800\\d{3,7}|8(?:0[13]|20\\d)\\d{7}"],["(?:810|902)\\d{7}",[10]],0,0,0,0,["249\\d{6}",[9]]],"8~10"],"BZ":["501","00","(?:0800\\d|[2-8])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1-$2",["[2-8]"]],["(\\d)(\\d{3})(\\d{4})(\\d{3})","$1-$2-$3-$4",["0"]]],0,0,0,0,0,0,[["(?:2(?:[02]\\d|36|[68]0)|[3-58](?:[02]\\d|[68]0)|7(?:[02]\\d|32|[68]0))\\d{4}",[7]],["6[0-35-7]\\d{5}",[7]],["0800\\d{7}",[11]]]],"CA":["1","011","(?:[2-8]\\d|90)\\d{8}|3\\d{6}",[7,10],0,"1",0,0,0,0,0,[["(?:2(?:04|[23]6|[48]9|50|63)|3(?:06|43|6[578])|4(?:03|1[68]|3[178]|50|68|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|13|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\d{6}",[10]],["",[10]],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",[10]],["900[2-9]\\d{6}",[10]],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|(?:5(?:00|2[125-7]|33|44|66|77|88)|622)[2-9]\\d{6}",[10]],0,["310\\d{4}",[7]],0,["600[2-9]\\d{6}",[10]]]],"CC":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[["8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\d|70[23]|959))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,0,["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],"CD":["243","00","[189]\\d{8}|[1-68]\\d{6}",[7,9],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[1-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,[["12\\d{7}|[1-6]\\d{6}"],["88\\d{5}|(?:8[0-59]|9[017-9])\\d{7}"]]],"CF":["236","00","(?:[27]\\d{3}|8776)\\d{4}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[278]"]]],0,0,0,0,0,0,[["2[12]\\d{6}"],["7[02457]\\d{6}"],0,["8776\\d{4}"]]],"CG":["242","00","222\\d{6}|(?:0\\d|80)\\d{7}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["8"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[02]"]]],0,0,0,0,0,0,[["222[1-589]\\d{5}"],["026(?:1[0-5]|6[6-9])\\d{4}|0(?:[14-6]\\d\\d|2(?:40|5[5-8]|6[07-9]))\\d{5}"],0,["80(?:0\\d\\d|120)\\d{4}"]]],"CH":["41","00","8\\d{11}|[2-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8[047]|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-79]|81"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["8"],"0$1"]],"0",0,0,0,0,0,[["(?:2[12467]|3[1-4]|4[134]|5[256]|6[12]|[7-9]1)\\d{7}"],["7[35-9]\\d{7}"],["800\\d{6}"],["90[016]\\d{6}"],["878\\d{6}"],0,["5[18]\\d{7}"],["74[0248]\\d{6}"],0,["84[0248]\\d{6}"]]],"CI":["225","00","[02]\\d{9}",[10],[["(\\d{2})(\\d{2})(\\d)(\\d{5})","$1 $2 $3 $4",["2"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3 $4",["0"]]],0,0,0,0,0,0,[["2(?:[15]\\d{3}|7(?:2(?:0[23]|1[2357]|2[245]|3[45]|4[3-5])|3(?:06|1[69]|[2-6]7)))\\d{5}"],["0704[0-7]\\d{5}|0(?:[15]\\d\\d|7(?:0[0-37-9]|[4-9][7-9]))\\d{6}"]]],"CK":["682","00","[2-578]\\d{4}",[5],[["(\\d{2})(\\d{3})","$1 $2",["[2-578]"]]],0,0,0,0,0,0,[["(?:2\\d|3[13-7]|4[1-5])\\d{3}"],["[578]\\d{4}"]]],"CL":["56","(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0","12300\\d{6}|6\\d{9,10}|[2-9]\\d{8}",[9,10,11],[["(\\d{5})(\\d{4})","$1 $2",["219","2196"],"($1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["44"]],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2[1-36]"],"($1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["9[2-9]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])"],"($1)"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["60|8"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{3})(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3 $4",["60"]]],0,0,0,0,0,0,[["2(?:1982[0-6]|3314[05-9])\\d{3}|(?:2(?:1(?:160|962)|3(?:2\\d\\d|3(?:[0346]\\d|1[0-35-9]|2[1-9]|5[0-24-9]|7[0-3])|600)|646[59])|80[1-9]\\d\\d|9(?:3(?:[0-57-9]\\d\\d|6(?:0[02-9]|[1-9]\\d))|6(?:[0-8]\\d\\d|9(?:[02-79]\\d|1[05-9]))|7[1-9]\\d\\d|9(?:[03-9]\\d\\d|1(?:[0235-9]\\d|4[0-24-9])|2(?:[0-79]\\d|8[0-46-9]))))\\d{4}|(?:22|3[2-5]|[47][1-35]|5[1-3578]|6[13-57]|8[1-9]|9[2458])\\d{7}",[9]],["",[9]],["(?:123|8)00\\d{6}",[9,11]],0,0,0,0,0,["44\\d{7}",[9]],["600\\d{7,8}",[10,11]]]],"CM":["237","00","[26]\\d{8}|88\\d{6,7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["88"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[26]|88"]]],0,0,0,0,0,0,[["2(?:22|33)\\d{6}",[9]],["(?:24[23]|6[25-9]\\d)\\d{6}",[9]],["88\\d{6,7}"]]],"CN":["86","00|1(?:[12]\\d|79)\\d\\d00","1[127]\\d{8,9}|2\\d{9}(?:\\d{2})?|[12]\\d{6,7}|86\\d{6}|(?:1[03-689]\\d|6)\\d{7,9}|(?:[3-579]\\d|8[0-57-9])\\d{6,9}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5,6})","$1 $2",["(?:10|2[0-57-9])[19]","(?:10|2[0-57-9])(?:10|9[56])","(?:10|2[0-57-9])(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{5,6})","$1 $2",["3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]","(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))[19]","85[23](?:10|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:10|9[56])","85[23](?:100|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["(?:4|80)0"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["10|2(?:[02-57-9]|1[1-9])","10|2(?:[02-57-9]|1[1-9])","10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]"],"0$1",1],["(\\d{3})(\\d{7,8})","$1 $2",["9"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["80"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[3-578]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["1[3-9]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3 $4",["[12]"],"0$1",1]],"0",0,"0|(1(?:[12]\\d|79)\\d\\d)",0,0,0,[["(?:10(?:[02-79]\\d\\d|[18](?:0[1-9]|[1-9]\\d))|21(?:[18](?:0[1-9]|[1-9]\\d)|[2-79]\\d\\d))\\d{5}|(?:43[35]|754)\\d{7,8}|8(?:078\\d{7}|51\\d{7,8})|(?:10|(?:2|85)1|43[35]|754)(?:100\\d\\d|95\\d{3,4})|(?:2[02-57-9]|3(?:11|7[179])|4(?:[15]1|3[12])|5(?:1\\d|2[37]|3[12]|51|7[13-79]|9[15])|7(?:[39]1|5[57]|6[09])|8(?:71|98))(?:[02-8]\\d{7}|1(?:0(?:0\\d\\d(?:\\d{3})?|[1-9]\\d{5})|[1-9]\\d{6})|9(?:[0-46-9]\\d{6}|5\\d{3}(?:\\d(?:\\d{2})?)?))|(?:3(?:1[02-9]|35|49|5\\d|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|3[46-9]|5[2-9]|6[47-9]|7\\d|8[23])|5(?:3[03-9]|4[36]|5[02-9]|6[1-46]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[17]\\d|2[248]|3[04-9]|4[3-6]|5[0-3689]|6[2368]|9[02-9])|8(?:1[236-8]|2[5-7]|3\\d|5[2-9]|7[02-9]|8[36-8]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:[02-8]\\d{6}|1(?:0(?:0\\d\\d(?:\\d{2})?|[1-9]\\d{4})|[1-9]\\d{5})|9(?:[0-46-9]\\d{5}|5\\d{3,5}))",[7,8,9,10,11]],["1740[0-5]\\d{6}|1(?:[38]\\d|4[57]|[59][0-35-9]|6[25-7]|7[0-35-8])\\d{8}",[11]],["(?:(?:10|21)8|8)00\\d{7}",[10,12]],["16[08]\\d{5}",[8]],0,0,0,0,0,["400\\d{7}|950\\d{7,8}|(?:10|2[0-57-9]|3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))96\\d{3,4}",[7,8,9,10,11]]],"00"],"CO":["57","00(?:4(?:[14]4|56)|[579])","(?:60\\d\\d|9101)\\d{6}|(?:1\\d|3)\\d{9}",[10,11],[["(\\d{3})(\\d{7})","$1 $2",["6"],"($1)"],["(\\d{3})(\\d{7})","$1 $2",["3[0-357]|91"]],["(\\d)(\\d{3})(\\d{7})","$1-$2-$3",["1"],"0$1",0,"$1 $2 $3"]],"0",0,"0(4(?:[14]4|56)|[579])?",0,0,0,[["601055(?:[0-4]\\d|50)\\d\\d|6010(?:[0-4]\\d|5[0-4])\\d{4}|60[124-8][2-9]\\d{6}",[10]],["3333(?:0(?:0\\d|1[0-5])|[4-9]\\d\\d)\\d{3}|(?:3(?:24[1-9]|3(?:00|3[0-24-9]))|9101)\\d{6}|3(?:0[0-5]|1\\d|2[0-3]|5[01]|70)\\d{7}",[10]],["1800\\d{7}",[11]],["19(?:0[01]|4[78])\\d{7}",[11]]]],"CR":["506","00","(?:8\\d|90)\\d{8}|(?:[24-8]\\d{3}|3005)\\d{4}",[8,10],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[3-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[89]"]]],0,0,"(19(?:0[0-2468]|1[09]|20|66|77|99))",0,0,0,[["210[7-9]\\d{4}|2(?:[024-7]\\d|1[1-9])\\d{5}",[8]],["(?:3005\\d|6500[01])\\d{3}|(?:5[07]|6[0-4]|7[0-3]|8[3-9])\\d{6}",[8]],["800\\d{7}",[10]],["90[059]\\d{7}",[10]],0,0,0,0,["(?:210[0-6]|4\\d{3}|5100)\\d{4}",[8]]]],"CU":["53","119","[27]\\d{6,7}|[34]\\d{5,7}|(?:5|8\\d\\d)\\d{7}",[6,7,8,10],[["(\\d{2})(\\d{4,6})","$1 $2",["2[1-4]|[34]"],"(0$1)"],["(\\d)(\\d{6,7})","$1 $2",["7"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["5"],"0$1"],["(\\d{3})(\\d{7})","$1 $2",["8"],"0$1"]],"0",0,0,0,0,0,[["(?:3[23]|48)\\d{4,6}|(?:31|4[36]|8(?:0[25]|78)\\d)\\d{6}|(?:2[1-4]|4[1257]|7\\d)\\d{5,6}"],["5\\d{7}",[8]],["800\\d{7}",[10]],0,0,0,0,0,0,["807\\d{7}",[10]]]],"CV":["238","0","(?:[2-59]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[2-589]"]]],0,0,0,0,0,0,[["2(?:2[1-7]|3[0-8]|4[12]|5[1256]|6\\d|7[1-3]|8[1-5])\\d{4}"],["(?:36|5[1-389]|9\\d)\\d{5}"],["800\\d{4}"],0,0,0,0,0,["(?:3[3-5]|4[356])\\d{5}"]]],"CW":["599","00","(?:[34]1|60|(?:7|9\\d)\\d)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[3467]"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["9[4-8]"]]],0,0,0,0,0,"[69]",[["9(?:4(?:3[0-5]|4[14]|6\\d)|50\\d|7(?:2[014]|3[02-9]|4[4-9]|6[357]|77|8[7-9])|8(?:3[39]|[46]\\d|7[01]|8[57-9]))\\d{4}"],["953[01]\\d{4}|9(?:5[12467]|6[5-9])\\d{5}"],0,0,0,0,0,["955\\d{5}",[8]],0,["60[0-2]\\d{4}",[7]]]],"CX":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[["8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\d|7(?:0[01]|1[0-2])|958))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,0,["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],"CY":["357","00","(?:[279]\\d|[58]0)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[257-9]"]]],0,0,0,0,0,0,[["2[2-6]\\d{6}"],["9[4-79]\\d{6}"],["800\\d{5}"],["90[09]\\d{5}"],["700\\d{5}"],0,["(?:50|77)\\d{6}"],0,0,["80[1-9]\\d{5}"]]],"CZ":["420","00","(?:[2-578]\\d|60)\\d{7}|9\\d{8,11}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]|9[015-7]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3 $4",["96"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]],0,0,0,0,0,0,[["(?:2\\d|3[1257-9]|4[16-9]|5[13-9])\\d{7}"],["(?:60[1-8]|7(?:0[2-5]|[2379]\\d))\\d{6}"],["800\\d{6}"],["9(?:0[05689]|76)\\d{6}"],["70[01]\\d{6}"],0,["9(?:5\\d|7[2-4])\\d{6}"],0,["9[17]0\\d{6}"],["8[134]\\d{7}"]]],"DE":["49","00","[2579]\\d{5,14}|49(?:[34]0|69|8\\d)\\d\\d?|49(?:37|49|60|7[089]|9\\d)\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\d{1,8}|(?:1|[368]\\d|4[0-8])\\d{3,13}|49(?:[015]\\d|2[13]|31|[46][1-8])\\d{1,9}",[4,5,6,7,8,9,10,11,12,13,14,15],[["(\\d{2})(\\d{3,13})","$1 $2",["3[02]|40|[68]9"],"0$1"],["(\\d{3})(\\d{3,12})","$1 $2",["2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1","2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1"],"0$1"],["(\\d{4})(\\d{2,11})","$1 $2",["[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]","[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["138"],"0$1"],["(\\d{5})(\\d{2,10})","$1 $2",["3"],"0$1"],["(\\d{3})(\\d{5,11})","$1 $2",["181"],"0$1"],["(\\d{3})(\\d)(\\d{4,10})","$1 $2 $3",["1(?:3|80)|9"],"0$1"],["(\\d{3})(\\d{7,8})","$1 $2",["1[67]"],"0$1"],["(\\d{3})(\\d{7,12})","$1 $2",["8"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["185","1850","18500"],"0$1"],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["18[68]"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["15[0568]"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["15[1279]"],"0$1"],["(\\d{3})(\\d{8})","$1 $2",["18"],"0$1"],["(\\d{3})(\\d{2})(\\d{7,8})","$1 $2 $3",["1(?:6[023]|7)"],"0$1"],["(\\d{4})(\\d{2})(\\d{7})","$1 $2 $3",["15[279]"],"0$1"],["(\\d{3})(\\d{2})(\\d{8})","$1 $2 $3",["15"],"0$1"]],"0",0,0,0,0,0,[["32\\d{9,11}|49[1-6]\\d{10}|322\\d{6}|49[0-7]\\d{3,9}|(?:[34]0|[68]9)\\d{3,13}|(?:2(?:0[1-689]|[1-3569]\\d|4[0-8]|7[1-7]|8[0-7])|3(?:[3569]\\d|4[0-79]|7[1-7]|8[1-8])|4(?:1[02-9]|[2-48]\\d|5[0-6]|6[0-8]|7[0-79])|5(?:0[2-8]|[124-6]\\d|[38][0-8]|[79][0-7])|6(?:0[02-9]|[1-358]\\d|[47][0-8]|6[1-9])|7(?:0[2-8]|1[1-9]|[27][0-7]|3\\d|[4-6][0-8]|8[0-5]|9[013-7])|8(?:0[2-9]|1[0-79]|2\\d|3[0-46-9]|4[0-6]|5[013-9]|6[1-8]|7[0-8]|8[0-24-6])|9(?:0[6-9]|[1-4]\\d|[589][0-7]|6[0-8]|7[0-467]))\\d{3,12}",[5,6,7,8,9,10,11,12,13,14,15]],["15[0-25-9]\\d{8}|1(?:6[023]|7\\d)\\d{7,8}",[10,11]],["800\\d{7,12}",[10,11,12,13,14,15]],["(?:137[7-9]|900(?:[135]|9\\d))\\d{6}",[10,11]],["700\\d{8}",[11]],0,["18(?:1\\d{5,11}|[2-9]\\d{8})",[8,9,10,11,12,13,14]],["16(?:4\\d{1,10}|[89]\\d{1,11})",[4,5,6,7,8,9,10,11,12,13,14]],0,["180\\d{5,11}|13(?:7[1-6]\\d\\d|8)\\d{4}",[7,8,9,10,11,12,13,14]]]],"DJ":["253","00","(?:2\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[27]"]]],0,0,0,0,0,0,[["2(?:1[2-5]|7[45])\\d{5}"],["77\\d{6}"]]],"DK":["45","00","[2-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-9]"]]],0,0,0,0,0,0,[["(?:[2-7]\\d|8[126-9]|9[1-46-9])\\d{6}"],[""],["80\\d{6}"],["90\\d{6}"]]],"DM":["1","011","(?:[58]\\d\\d|767|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","767$1",0,"767",[["767(?:2(?:55|66)|4(?:2[01]|4[0-25-9])|50[0-4])\\d{4}"],["767(?:2(?:[2-4689]5|7[5-7])|31[5-7]|61[1-8]|70[1-6])\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"DO":["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,0,0,0,"8001|8[024]9",[["8(?:[04]9[2-9]\\d\\d|29(?:2(?:[0-59]\\d|6[04-9]|7[0-27]|8[0237-9])|3(?:[0-35-9]\\d|4[7-9])|[45]\\d\\d|6(?:[0-27-9]\\d|[3-5][1-9]|6[0135-8])|7(?:0[013-9]|[1-37]\\d|4[1-35689]|5[1-4689]|6[1-57-9]|8[1-79]|9[1-8])|8(?:0[146-9]|1[0-48]|[248]\\d|3[1-79]|5[01589]|6[013-68]|7[124-8]|9[0-8])|9(?:[0-24]\\d|3[02-46-9]|5[0-79]|60|7[0169]|8[57-9]|9[02-9])))\\d{4}"],["8[024]9[2-9]\\d{6}"],["8(?:00(?:14|[2-9]\\d)|(?:33|44|55|66|77|88)[2-9]\\d)\\d{5}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"DZ":["213","00","(?:[1-4]|[5-79]\\d|80)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["9"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-8]"],"0$1"]],"0",0,0,0,0,0,[["9619\\d{5}|(?:1\\d|2[013-79]|3[0-8]|4[013-689])\\d{6}"],["(?:5(?:4[0-29]|5\\d|6[0-2])|6(?:[569]\\d|7[0-6])|7[7-9]\\d)\\d{6}",[9]],["800\\d{6}",[9]],["80[3-689]1\\d{5}",[9]],0,0,0,0,["98[23]\\d{6}",[9]],["80[12]1\\d{5}",[9]]]],"EC":["593","00","1\\d{9,10}|(?:[2-7]|9\\d)\\d{7}",[8,9,10,11],[["(\\d)(\\d{3})(\\d{4})","$1 $2-$3",["[2-7]"],"(0$1)",0,"$1-$2-$3"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{3})(\\d{3,4})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[["[2-7][2-7]\\d{6}",[8]],["964[0-2]\\d{5}|9(?:39|[57][89]|6[0-36-9]|[89]\\d)\\d{6}",[9]],["1800\\d{7}|1[78]00\\d{6}",[10,11]],0,0,0,0,0,["[2-7]890\\d{4}",[8]]]],"EE":["372","00","8\\d{9}|[4578]\\d{7}|(?:[3-8]\\d|90)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88","[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88"]],["(\\d{4})(\\d{3,4})","$1 $2",["[45]|8(?:00|[1-49])","[45]|8(?:00[1-9]|[1-49])"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["(?:3[23589]|4[3-8]|6\\d|7[1-9]|88)\\d{5}",[7]],["(?:5\\d{5}|8(?:1(?:0(?:000|[3-9]\\d\\d)|(?:1(?:0[236]|1\\d)|(?:23|[3-79]\\d)\\d)\\d)|2(?:0(?:000|(?:19|[2-7]\\d)\\d)|(?:(?:[124-6]\\d|3[5-9])\\d|7(?:[3679]\\d|8[13-9])|8(?:[2-6]\\d|7[01]))\\d)|[349]\\d{4}))\\d\\d|5(?:(?:[02]\\d|5[0-478])\\d|1(?:[0-8]\\d|95)|6(?:4[0-4]|5[1-589]))\\d{3}",[7,8]],["800(?:(?:0\\d\\d|1)\\d|[2-9])\\d{3}"],["(?:40\\d\\d|900)\\d{4}",[7,8]],["70[0-2]\\d{5}",[8]]]],"EG":["20","00","[189]\\d{8,9}|[24-6]\\d{8}|[135]\\d{7}",[8,9,10],[["(\\d)(\\d{7,8})","$1 $2",["[23]"],"0$1"],["(\\d{2})(\\d{6,7})","$1 $2",["1[35]|[4-6]|8[2468]|9[235-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[189]"],"0$1"]],"0",0,0,0,0,0,[["13[23]\\d{6}|(?:15|57)\\d{6,7}|(?:2[2-4]|3|4[05-8]|5[05]|6[24-689]|8[2468]|9[235-7])\\d{7}",[8,9]],["1[0-25]\\d{8}",[10]],["800\\d{7}",[10]],["900\\d{7}",[10]]]],"EH":["212","00","[5-8]\\d{8}",[9],0,"0",0,0,0,0,"528[89]",[["528[89]\\d{5}"],["(?:6(?:[0-79]\\d|8[0-247-9])|7(?:[017]\\d|2[0-2]|6[0-8]|8[0-3]))\\d{6}"],["80\\d{7}"],["89\\d{7}"],0,0,0,0,["592(?:4[0-2]|93)\\d{4}"]]],"ER":["291","00","[178]\\d{6}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[178]"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:1[12568]|[24]0|55|6[146])|8\\d\\d)\\d{4}"],["(?:17[1-3]|7\\d\\d)\\d{4}"]]],"ES":["34","00","[5-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]00"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-9]"]]],0,0,0,0,0,0,[["96906(?:0[0-8]|1[1-9]|[2-9]\\d)\\d\\d|9(?:69(?:0[0-57-9]|[1-9]\\d)|73(?:[0-8]\\d|9[1-9]))\\d{4}|(?:8(?:[1356]\\d|[28][0-8]|[47][1-9])|9(?:[135]\\d|[268][0-8]|4[1-9]|7[124-9]))\\d{6}"],["(?:590[16]00\\d|9(?:6906(?:09|10)|7390\\d\\d))\\d\\d|(?:6\\d|7[1-48])\\d{7}"],["[89]00\\d{6}"],["80[367]\\d{6}"],["70\\d{7}"],0,["51\\d{7}"],0,0,["90[12]\\d{6}"]]],"ET":["251","00","(?:11|[2-579]\\d)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-579]"],"0$1"]],"0",0,0,0,0,0,[["11667[01]\\d{3}|(?:11(?:1(?:1[124]|2[2-7]|3[1-5]|5[5-8]|8[6-8])|2(?:13|3[6-8]|5[89]|7[05-9]|8[2-6])|3(?:2[01]|3[0-289]|4[1289]|7[1-4]|87)|4(?:1[69]|3[2-49]|4[0-3]|6[5-8])|5(?:1[578]|44|5[0-4])|6(?:1[78]|2[69]|39|4[5-7]|5[1-5]|6[0-59]|8[015-8]))|2(?:2(?:11[1-9]|22[0-7]|33\\d|44[1467]|66[1-68])|5(?:11[124-6]|33[2-8]|44[1467]|55[14]|66[1-3679]|77[124-79]|880))|3(?:3(?:11[0-46-8]|(?:22|55)[0-6]|33[0134689]|44[04]|66[01467])|4(?:44[0-8]|55[0-69]|66[0-3]|77[1-5]))|4(?:6(?:119|22[0-24-7]|33[1-5]|44[13-69]|55[14-689]|660|88[1-4])|7(?:(?:11|22)[1-9]|33[13-7]|44[13-6]|55[1-689]))|5(?:7(?:227|55[05]|(?:66|77)[14-8])|8(?:11[149]|22[013-79]|33[0-68]|44[013-8]|550|66[1-5]|77\\d)))\\d{4}"],["7001\\d{5}|(?:7(?:0[1-9]|1[01]|77|86|99)|9\\d\\d)\\d{6}"]]],"FI":["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","[1-35689]\\d{4}|7\\d{10,11}|(?:[124-7]\\d|3[0-46-9])\\d{8}|[1-9]\\d{5,8}",[5,6,7,8,9,10,11,12],[["(\\d)(\\d{4,9})","$1 $2",["[2568][1-8]|3(?:0[1-9]|[1-9])|9"],"0$1"],["(\\d{3})(\\d{3,7})","$1 $2",["[12]00|[368]|70[07-9]"],"0$1"],["(\\d{2})(\\d{4,8})","$1 $2",["[1245]|7[135]"],"0$1"],["(\\d{2})(\\d{6,10})","$1 $2",["7"],"0$1"]],"0",0,0,0,0,"1[03-79]|[2-9]",[["(?:1[3-79][1-8]|[235689][1-8]\\d)\\d{2,6}",[5,6,7,8,9]],["4946\\d{2,6}|(?:4[0-8]|50)\\d{4,8}",[6,7,8,9,10]],["800\\d{4,6}",[7,8,9]],["[67]00\\d{5,6}",[8,9]],0,0,["20\\d{4,8}|60[12]\\d{5,6}|7(?:099\\d{4,5}|5[03-9]\\d{3,7})|20[2-59]\\d\\d|(?:606|7(?:0[78]|1|3\\d))\\d{7}|(?:10|29|3[09]|70[1-5]\\d)\\d{4,8}"]],"00"],"FJ":["679","0(?:0|52)","45\\d{5}|(?:0800\\d|[235-9])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1 $2",["[235-9]|45"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]]],0,0,0,0,0,0,[["603\\d{4}|(?:3[0-5]|6[25-7]|8[58])\\d{5}",[7]],["(?:[279]\\d|45|5[01568]|8[034679])\\d{5}",[7]],["0800\\d{7}",[11]]],"00"],"FK":["500","00","[2-7]\\d{4}",[5],0,0,0,0,0,0,0,[["[2-47]\\d{4}"],["[56]\\d{4}"]]],"FM":["691","00","(?:[39]\\d\\d|820)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[389]"]]],0,0,0,0,0,0,[["31(?:00[67]|208|309)\\d\\d|(?:3(?:[2357]0[1-9]|602|804|905)|(?:820|9[2-6]\\d)\\d)\\d{3}"],["31(?:00[67]|208|309)\\d\\d|(?:3(?:[2357]0[1-9]|602|804|905)|(?:820|9[2-7]\\d)\\d)\\d{3}"]]],"FO":["298","00","[2-9]\\d{5}",[6],[["(\\d{6})","$1",["[2-9]"]]],0,0,"(10(?:01|[12]0|88))",0,0,0,[["(?:20|[34]\\d|8[19])\\d{4}"],["(?:[27][1-9]|5\\d|9[16])\\d{4}"],["80[257-9]\\d{3}"],["90(?:[13-5][15-7]|2[125-7]|9\\d)\\d\\d"],0,0,0,0,["(?:6[0-36]|88)\\d{4}"]]],"FR":["33","00","[1-9]\\d{8}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0 $1"],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[1-79]"],"0$1"]],"0",0,0,0,0,0,[["(?:[1-35]\\d|4[1-9])\\d{7}"],["(?:6(?:[0-24-8]\\d|3[0-8]|9[589])|7(?:00|[3-9]\\d))\\d{6}"],["80[0-5]\\d{6}"],["836(?:0[0-36-9]|[1-9]\\d)\\d{4}|8(?:1[2-9]|2[2-47-9]|3[0-57-9]|[569]\\d|8[0-35-9])\\d{6}"],0,0,["80[6-9]\\d{6}"],0,["9\\d{8}"],["8(?:1[01]|2[0156]|4[02]|84)\\d{6}"]]],"GA":["241","00","(?:[067]\\d|11)\\d{6}|[2-7]\\d{6}",[7,8],[["(\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-7]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["11|[67]"],"0$1"]],0,0,"0(11\\d{6}|60\\d{6}|61\\d{6}|6[256]\\d{6}|7[467]\\d{6})","$1",0,0,[["[01]1\\d{6}",[8]],["(?:(?:0[2-7]|7[467])\\d|6(?:0[0-4]|10|[256]\\d))\\d{5}|[2-7]\\d{6}"]]],"GB":["44","00","[1-357-9]\\d{9}|[18]\\d{8}|8\\d{6}",[7,9,10],[["(\\d{3})(\\d{4})","$1 $2",["800","8001","80011","800111","8001111"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["845","8454","84546","845464"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["800"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["1(?:38|5[23]|69|76|94)","1(?:(?:38|69)7|5(?:24|39)|768|946)","1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["1(?:[2-69][02-9]|[78])"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[25]|7(?:0|6[02-9])","[25]|7(?:0|6(?:[03-9]|2[356]))"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[1389]"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:1(?:3(?:[0-58]\\d\\d|73[0235])|4(?:[0-5]\\d\\d|69[7-9]|70[013579])|(?:(?:5[0-26-9]|[78][0-49])\\d|6(?:[0-4]\\d|50))\\d)|2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\d)\\d\\d|1(?:[0-7]\\d\\d|8(?:[02]\\d|1[0-246-9])))|(?:3(?:0\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\d\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\d{3})\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\d)|76\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\d|7[4-79])|295[5-7]|35[34]\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\d{3}",[9,10]],["7(?:457[0-57-9]|700[01]|911[028])\\d{5}|7(?:[1-3]\\d\\d|4(?:[0-46-9]\\d|5[0-689])|5(?:0[0-8]|[13-9]\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\d|8[02-9]|9[0-689])|8(?:[014-9]\\d|[23][0-8])|9(?:[024-9]\\d|1[02-9]|3[0-689]))\\d{6}",[10]],["80[08]\\d{7}|800\\d{6}|8001111"],["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[2-49]))\\d{7}|845464\\d",[7,10]],["70\\d{8}",[10]],0,["(?:3[0347]|55)\\d{8}",[10]],["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}",[10]],["56\\d{8}",[10]]],0," x"],"GD":["1","011","(?:473|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","473$1",0,"473",[["473(?:2(?:3[0-2]|69)|3(?:2[89]|86)|4(?:[06]8|3[5-9]|4[0-49]|5[5-79]|73|90)|63[68]|7(?:58|84)|800|938)\\d{4}"],["473(?:4(?:0[2-79]|1[04-9]|2[0-5]|58)|5(?:2[01]|3[3-8])|901)\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"GE":["995","00","(?:[3-57]\\d\\d|800)\\d{6}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["32"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[57]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[348]"],"0$1"]],"0",0,0,0,0,0,[["(?:3(?:[256]\\d|4[124-9]|7[0-4])|4(?:1\\d|2[2-7]|3[1-79]|4[2-8]|7[239]|9[1-7]))\\d{6}"],["5(?:(?:0555|1(?:[17]77|555))[5-9]|757(?:7[7-9]|8[01]))\\d{3}|5(?:0070|11(?:33|51)|[25]222|3333)[0-4]\\d{3}|5(?:00(?:0\\d|5[05])|11(?:00|[124]\\d|3[01])|5200|75(?:00|[57]5)|8(?:0(?:[01]\\d|2[0-4])|58[89]|8(?:55|88)))\\d{4}|(?:5(?:[14]4|5[0157-9]|68|7[0147-9]|9[1-35-9])|790)\\d{6}"],["800\\d{6}"],0,0,0,0,0,["70[67]\\d{6}"]]],"GF":["594","00","(?:[56]94|80\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["594(?:[0239]\\d|1[0-2]|4[03-9]|5[6-9]|6[0-3]|80)\\d{4}"],["694(?:[0-249]\\d|3[0-8])\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976\\d{6}"]]],"GG":["44","00","(?:1481|[357-9]\\d{3})\\d{6}|8\\d{6}(?:\\d{2})?",[7,9,10],0,"0",0,"0|([25-9]\\d{5})$","1481$1",0,0,[["1481[25-9]\\d{5}",[10]],["7(?:(?:781|839)\\d|911[17])\\d{5}",[10]],["80[08]\\d{7}|800\\d{6}|8001111"],["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[0-3]))\\d{7}|845464\\d",[7,10]],["70\\d{8}",[10]],0,["(?:3[0347]|55)\\d{8}",[10]],["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}",[10]],["56\\d{8}",[10]]]],"GH":["233","00","(?:[235]\\d{3}|800)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[235]"],"0$1"]],"0",0,0,0,0,0,[["3082[0-5]\\d{4}|3(?:0(?:[237]\\d|8[01])|[167](?:2[0-6]|7\\d|80)|2(?:2[0-5]|7\\d|80)|3(?:2[0-3]|7\\d|80)|4(?:2[013-9]|3[01]|7\\d|80)|5(?:2[0-7]|7\\d|80)|8(?:2[0-2]|7\\d|80)|9(?:[28]0|7\\d))\\d{5}",[9]],["(?:2(?:[0346-9]\\d|5[67])|5(?:[0457]\\d|6[01]|9[1-9]))\\d{6}",[9]],["800\\d{5}",[8]]]],"GI":["350","00","(?:[25]\\d\\d|606)\\d{5}",[8],[["(\\d{3})(\\d{5})","$1 $2",["2"]]],0,0,0,0,0,0,[["21(?:6[24-7]\\d|90[0-2])\\d{3}|2(?:00|2[25])\\d{5}"],["(?:5[146-8]\\d|606)\\d{5}"]]],"GL":["299","00","(?:19|[2-689]\\d|70)\\d{4}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["19|[2-9]"]]],0,0,0,0,0,0,[["(?:19|3[1-7]|6[14689]|70|8[14-79]|9\\d)\\d{4}"],["[245]\\d{5}"],["80\\d{4}"],0,0,0,0,0,["3[89]\\d{4}"]]],"GM":["220","00","[2-9]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]],0,0,0,0,0,0,[["(?:4(?:[23]\\d\\d|4(?:1[024679]|[6-9]\\d))|5(?:5(?:3\\d|4[0-7])|6[67]\\d|7(?:1[04]|2[035]|3[58]|48))|8\\d{3})\\d{3}"],["(?:[23679]\\d|5[0-389])\\d{5}"]]],"GN":["224","00","722\\d{6}|(?:3|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["3"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[67]"]]],0,0,0,0,0,0,[["3(?:0(?:24|3[12]|4[1-35-7]|5[13]|6[189]|[78]1|9[1478])|1\\d\\d)\\d{4}",[8]],["6[0-356]\\d{7}",[9]],0,0,0,0,0,0,["722\\d{6}",[9]]]],"GP":["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["590(?:0[1-68]|[14][0-24-9]|2[0-68]|3[1289]|5[3-579]|6[0-289]|7[08]|8[0-689]|9\\d)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],"GQ":["240","00","222\\d{6}|(?:3\\d|55|[89]0)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235]"]],["(\\d{3})(\\d{6})","$1 $2",["[89]"]]],0,0,0,0,0,0,[["33[0-24-9]\\d[46]\\d{4}|3(?:33|5\\d)\\d[7-9]\\d{4}"],["(?:222|55\\d)\\d{6}"],["80\\d[1-9]\\d{5}"],["90\\d[1-9]\\d{5}"]]],"GR":["30","00","5005000\\d{3}|8\\d{9,11}|(?:[269]\\d|70)\\d{8}",[10,11,12],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["21|7"]],["(\\d{4})(\\d{6})","$1 $2",["2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2689]"]],["(\\d{3})(\\d{3,4})(\\d{5})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["2(?:1\\d\\d|2(?:2[1-46-9]|[36][1-8]|4[1-7]|5[1-4]|7[1-5]|[89][1-9])|3(?:1\\d|2[1-57]|[35][1-3]|4[13]|7[1-7]|8[124-6]|9[1-79])|4(?:1\\d|2[1-8]|3[1-4]|4[13-5]|6[1-578]|9[1-5])|5(?:1\\d|[29][1-4]|3[1-5]|4[124]|5[1-6])|6(?:1\\d|[269][1-6]|3[1245]|4[1-7]|5[13-9]|7[14]|8[1-5])|7(?:1\\d|2[1-5]|3[1-6]|4[1-7]|5[1-57]|6[135]|9[125-7])|8(?:1\\d|2[1-5]|[34][1-4]|9[1-57]))\\d{6}",[10]],["68[57-9]\\d{7}|(?:69|94)\\d{8}",[10]],["800\\d{7,9}"],["90[19]\\d{7}",[10]],["70\\d{8}",[10]],0,["5005000\\d{3}",[10]],0,0,["8(?:0[16]|12|[27]5|50)\\d{7}",[10]]]],"GT":["502","00","(?:1\\d{3}|[2-7])\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[["[267][2-9]\\d{6}",[8]],["[3-5]\\d{7}",[8]],["18[01]\\d{8}",[11]],["19\\d{9}",[11]]]],"GU":["1","011","(?:[58]\\d\\d|671|900)\\d{7}",[10],0,"1",0,"1|([3-9]\\d{6})$","671$1",0,"671",[["671(?:3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[0236-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[0479]7|2[0167]|3[45]|8[7-9])|8(?:[2-57-9]8|6[48])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[78]))\\d{4}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"GW":["245","00","[49]\\d{8}|4\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["40"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"]]],0,0,0,0,0,0,[["443\\d{6}",[9]],["9(?:5\\d|6[569]|77)\\d{6}",[9]],0,0,0,0,0,0,["40\\d{5}",[7]]]],"GY":["592","001","9008\\d{3}|(?:[2-467]\\d\\d|862)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-46-9]"]]],0,0,0,0,0,0,[["(?:2(?:1[6-9]|2[0-35-9]|3[1-4]|5[3-9]|6\\d|7[0-24-79])|3(?:2[25-9]|3\\d)|4(?:4[0-24]|5[56])|77[1-57])\\d{4}"],["(?:6\\d\\d|70[015-7])\\d{4}"],["(?:289|862)\\d{4}"],["9008\\d{3}"]]],"HK":["852","00(?:30|5[09]|[126-9]?)","8[0-46-9]\\d{6,7}|9\\d{4,7}|(?:[2-7]|9\\d{3})\\d{7}",[5,6,7,8,9,11],[["(\\d{3})(\\d{2,5})","$1 $2",["900","9003"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[1-4]|9(?:0[1-9]|[1-8])"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]],["(\\d{3})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]],0,0,0,0,0,0,[["(?:2(?:[13-9]\\d|2[013-9])\\d|3(?:(?:[1569][0-24-9]|4[0-246-9]|7[0-24-69])\\d|8(?:[45][0-8]|6[01]|9\\d))|58(?:0[1-8]|1[2-9]))\\d{4}",[8]],["(?:4(?:44[5-9]|6(?:0[0-7]|1[0-6]|4[0-57-9]|6[0-4]|7[0-8]))|573[0-6]|6(?:26[013-8]|66[0-3])|70(?:7[1-5]|8[0-4])|848[015-9]|9(?:29[013-9]|59[0-4]))\\d{4}|(?:4(?:4[01]|6[2358])|5(?:[1-59][0-46-9]|6[0-4689]|7[0-246-9])|6(?:0[1-9]|[13-59]\\d|[268][0-57-9]|7[0-79])|84[09]|9(?:0[1-9]|1[02-9]|[2358][0-8]|[467]\\d))\\d{5}",[8]],["800\\d{6}",[9]],["900(?:[0-24-9]\\d{7}|3\\d{1,4})",[5,6,7,8,11]],["8(?:1[0-4679]\\d|2(?:[0-36]\\d|7[0-4])|3(?:[034]\\d|2[09]|70))\\d{4}",[8]],0,["30(?:0[1-9]|[15-7]\\d|2[047]|89)\\d{4}",[8]],["7(?:1(?:0[0-38]|1[0-3679]|3[013]|69|9[0136])|2(?:[02389]\\d|1[18]|7[27-9])|3(?:[0-38]\\d|7[0-369]|9[2357-9])|47\\d|5(?:[178]\\d|5[0-5])|6(?:0[0-7]|2[236-9]|[35]\\d)|7(?:[27]\\d|8[7-9])|8(?:[23689]\\d|7[1-9])|9(?:[025]\\d|6[0-246-8]|7[0-36-9]|8[238]))\\d{4}",[8]]],"00"],"HN":["504","00","8\\d{10}|[237-9]\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1-$2",["[237-9]"]]],0,0,0,0,0,0,[["2(?:2(?:0[0-359]|1[1-367]|[23]\\d|4[03-6]|5[57]|6[245]|7[0135689]|8[01346-9]|9[0-2])|4(?:0[78]|2[3-59]|3[13-9]|4[0-68]|5[1-35])|5(?:0[7-9]|16|4[03-5]|5\\d|6[014-6]|7[04]|80)|6(?:[056]\\d|17|2[067]|3[04]|4[0-378]|[78][0-8]|9[01])|7(?:6[46-9]|7[02-9]|8[034]|91)|8(?:79|8[0-357-9]|9[1-57-9]))\\d{4}",[8]],["[37-9]\\d{7}",[8]],["8002\\d{7}",[11]]]],"HR":["385","00","(?:[24-69]\\d|3[0-79])\\d{7}|80\\d{5,7}|[1-79]\\d{7}|6\\d{5,6}",[6,7,8,9],[["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["6[01]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{4})(\\d{3})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-5]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"]],"0",0,0,0,0,0,[["1\\d{7}|(?:2[0-3]|3[1-5]|4[02-47-9]|5[1-3])\\d{6,7}",[8,9]],["98\\d{6,7}|975(?:1\\d|77|9[67])\\d{4}|9(?:0[1-9]|[1259]\\d|7[0679])\\d{6}",[8,9]],["80[01]\\d{4,6}",[7,8,9]],["6[01459]\\d{6}|6[01]\\d{4,5}",[6,7,8]],["7[45]\\d{6}",[8]],0,["62\\d{6,7}|72\\d{6}",[8,9]]]],"HT":["509","00","[2-489]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[2-489]"]]],0,0,0,0,0,0,[["2(?:2\\d|5[1-5]|81|9[149])\\d{5}"],["[34]\\d{7}"],["8\\d{7}"],0,0,0,0,0,["9(?:[67][0-4]|8[0-3589]|9\\d)\\d{5}"]]],"HU":["36","00","[235-7]\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"06 $1"]],"06",0,0,0,0,0,[["(?:1\\d|[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6[23689]|8[2-57-9]|9[2-69])\\d{6}",[8]],["(?:[257]0|3[01])\\d{7}",[9]],["(?:[48]0\\d|680[29])\\d{5}"],["9[01]\\d{6}",[8]],0,0,["38\\d{7}",[9]],0,["21\\d{7}",[9]]]],"ID":["62","00[89]","(?:(?:00[1-9]|8\\d)\\d{4}|[1-36])\\d{6}|00\\d{10}|[1-9]\\d{8,10}|[2-9]\\d{7}",[7,8,9,10,11,12,13],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["15"]],["(\\d{2})(\\d{5,9})","$1 $2",["2[124]|[36]1"],"(0$1)"],["(\\d{3})(\\d{5,7})","$1 $2",["800"],"0$1"],["(\\d{3})(\\d{5,8})","$1 $2",["[2-79]"],"(0$1)"],["(\\d{3})(\\d{3,4})(\\d{3})","$1-$2-$3",["8[1-35-9]"],"0$1"],["(\\d{3})(\\d{6,8})","$1 $2",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["804"],"0$1"],["(\\d{3})(\\d)(\\d{3})(\\d{3})","$1 $2 $3 $4",["80"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1-$2-$3",["8"],"0$1"]],"0",0,0,0,0,0,[["2[124]\\d{7,8}|619\\d{8}|2(?:1(?:14|500)|2\\d{3})\\d{3}|61\\d{5,8}|(?:2(?:[35][1-4]|6[0-8]|7[1-6]|8\\d|9[1-8])|3(?:1|[25][1-8]|3[1-68]|4[1-3]|6[1-3568]|7[0-469]|8\\d)|4(?:0[1-589]|1[01347-9]|2[0-36-8]|3[0-24-68]|43|5[1-378]|6[1-5]|7[134]|8[1245])|5(?:1[1-35-9]|2[25-8]|3[124-9]|4[1-3589]|5[1-46]|6[1-8])|6(?:[25]\\d|3[1-69]|4[1-6])|7(?:02|[125][1-9]|[36]\\d|4[1-8]|7[0-36-9])|9(?:0[12]|1[013-8]|2[0-479]|5[125-8]|6[23679]|7[159]|8[01346]))\\d{5,8}",[7,8,9,10,11]],["8[1-35-9]\\d{7,10}",[9,10,11,12]],["00[17]803\\d{7}|(?:177\\d|800)\\d{5,7}|001803\\d{6}",[8,9,10,11,12,13]],["809\\d{7}",[10]],0,0,["(?:1500|8071\\d{3})\\d{3}",[7,10]],0,0,["804\\d{7}",[10]]]],"IE":["353","00","(?:1\\d|[2569])\\d{6,8}|4\\d{6,9}|7\\d{8}|8\\d{8,9}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["2[24-9]|47|58|6[237-9]|9[35-9]"],"(0$1)"],["(\\d{3})(\\d{5})","$1 $2",["[45]0"],"(0$1)"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["1"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2569]|4[1-69]|7[14]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["81"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[78]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["4"],"(0$1)"],["(\\d{2})(\\d)(\\d{3})(\\d{4})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["(?:1\\d|21)\\d{6,7}|(?:2[24-9]|4(?:0[24]|5\\d|7)|5(?:0[45]|1\\d|8)|6(?:1\\d|[237-9])|9(?:1\\d|[35-9]))\\d{5}|(?:23|4(?:[1-469]|8\\d)|5[23679]|6[4-6]|7[14]|9[04])\\d{7}"],["8(?:22|[35-9]\\d)\\d{6}",[9]],["1800\\d{6}",[10]],["15(?:1[2-8]|[2-8]0|9[089])\\d{6}",[10]],["700\\d{6}",[9]],0,["818\\d{6}",[9]],0,["76\\d{7}",[9]],["18[59]0\\d{6}",[10]]]],"IL":["972","0(?:0|1[2-9])","1\\d{6}(?:\\d{3,5})?|[57]\\d{8}|[1-489]\\d{7}",[7,8,9,10,11,12],[["(\\d{4})(\\d{3})","$1-$2",["125"]],["(\\d{4})(\\d{2})(\\d{2})","$1-$2-$3",["121"]],["(\\d)(\\d{3})(\\d{4})","$1-$2-$3",["[2-489]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1-$2-$3",["12"]],["(\\d{4})(\\d{6})","$1-$2",["159"]],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3-$4",["1[7-9]"]],["(\\d{3})(\\d{1,2})(\\d{3})(\\d{4})","$1-$2 $3-$4",["15"]]],"0",0,0,0,0,0,[["153\\d{8,9}|29[1-9]\\d{5}|(?:2[0-8]|[3489]\\d)\\d{6}",[8,11,12]],["5(?:(?:[02368]\\d|[19][2-9]|4[1-9])\\d|5(?:01|1[79]|2[2-9]|3[0-3]|4[34]|5[015689]|6[6-8]|7[0-267]|8[7-9]|9[1-9]))\\d{5}",[9]],["1(?:255|80[019]\\d{3})\\d{3}",[7,10]],["1212\\d{4}|1(?:200|9(?:0[0-2]|19))\\d{6}",[8,10]],0,0,["1599\\d{6}",[10]],0,["7(?:380|8(?:33|55|77|81))\\d{5}|7(?:18|2[23]|3[237]|47|6[258]|7\\d|82|9[2-9])\\d{6}",[9]],["1700\\d{6}",[10]]]],"IM":["44","00","1624\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([25-8]\\d{5})$","1624$1",0,"74576|(?:16|7[56])24",[["1624(?:230|[5-8]\\d\\d)\\d{3}"],["76245[06]\\d{4}|7(?:4576|[59]24\\d|624[0-4689])\\d{5}"],["808162\\d{4}"],["8(?:440[49]06|72299\\d)\\d{3}|(?:8(?:45|70)|90[0167])624\\d{4}"],["70\\d{8}"],0,["3440[49]06\\d{3}|(?:3(?:08162|3\\d{4}|45624|7(?:0624|2299))|55\\d{4})\\d{4}"],0,["56\\d{8}"]]],"IN":["91","00","(?:000800|[2-9]\\d\\d)\\d{7}|1\\d{7,12}",[8,9,10,11,12,13],[["(\\d{8})","$1",["5(?:0|2[23]|3[03]|[67]1|88)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)"],0,1],["(\\d{4})(\\d{4,5})","$1 $2",["180","1800"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["140"],0,1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["11|2[02]|33|4[04]|79[1-7]|80[2-46]","11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])","11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]"],"0$1",1],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807","1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]","1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\d|7(?:1(?:[013-8]\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\d|5[0-367])|70[13-7]))[2-7]"],"0$1",1],["(\\d{5})(\\d{5})","$1 $2",["[6-9]"],"0$1",1],["(\\d{4})(\\d{2,4})(\\d{4})","$1 $2 $3",["1(?:6|8[06])","1(?:6|8[06]0)"],0,1],["(\\d{4})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["18"],0,1]],"0",0,0,0,0,0,[["2717(?:[2-7]\\d|95)\\d{4}|(?:271[0-689]|782[0-6])[2-7]\\d{5}|(?:170[24]|2(?:(?:[02][2-79]|90)\\d|80[13468])|(?:3(?:23|80)|683|79[1-7])\\d|4(?:20[24]|72[2-8])|552[1-7])\\d{6}|(?:11|33|4[04]|80)[2-7]\\d{7}|(?:342|674|788)(?:[0189][2-7]|[2-7]\\d)\\d{5}|(?:1(?:2[0-249]|3[0-25]|4[145]|[59][14]|6[014]|7[1257]|8[01346])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])|3(?:26|4[13]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[014-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91))[2-7]\\d{6}|(?:1(?:2[35-8]|3[346-9]|4[236-9]|[59][0235-9]|6[235-9]|7[34689]|8[257-9])|2(?:1[134689]|3[24-8]|4[2-8]|5[25689]|6[2-4679]|7[3-79]|8[2-479]|9[235-9])|3(?:01|1[79]|2[1245]|4[5-8]|5[125689]|6[235-7]|7[157-9]|8[2-46-8])|4(?:1[14578]|2[5689]|3[2-467]|5[4-7]|6[35]|73|8[2689]|9[2389])|5(?:[16][146-9]|2[14-8]|3[1346]|4[14-69]|5[46]|7[2-4]|8[2-8]|9[246])|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])|7(?:1[013-9]|2[0235-9]|3[2679]|4[1-35689]|5[2-46-9]|[67][02-9]|8[013-7]|9[089])|8(?:1[1357-9]|2[235-8]|3[03-57-9]|4[0-24-9]|5\\d|6[2457-9]|7[1-6]|8[1256]|9[2-4]))\\d[2-7]\\d{5}",[10]],["(?:61279|7(?:887[02-9]|9(?:313|79[07-9]))|8(?:079[04-9]|(?:84|91)7[02-8]))\\d{5}|(?:6(?:12|[2-47]1|5[17]|6[13]|80)[0189]|7(?:1(?:2[0189]|9[0-5])|2(?:[14][017-9]|8[0-59])|3(?:2[5-8]|[34][017-9]|9[016-9])|4(?:1[015-9]|[29][89]|39|8[389])|5(?:[15][017-9]|2[04-9]|9[7-9])|6(?:0[0-47]|1[0-257-9]|2[0-4]|3[19]|5[4589])|70[0289]|88[089]|97[02-8])|8(?:0(?:6[67]|7[02-8])|70[017-9]|84[01489]|91[0-289]))\\d{6}|(?:7(?:31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[0189]\\d|7[02-8])\\d{5}|(?:6(?:[09]\\d|1[04679]|2[03689]|3[05-9]|4[0489]|50|6[069]|7[07]|8[7-9])|7(?:0\\d|2[0235-79]|3[05-8]|40|5[0346-8]|6[6-9]|7[1-9]|8[0-79]|9[089])|8(?:0[01589]|1[0-57-9]|2[235-9]|3[03-57-9]|[45]\\d|6[02457-9]|7[1-69]|8[0-25-9]|9[02-9])|9\\d\\d)\\d{7}|(?:6(?:(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|8[124-6])\\d|7(?:[235689]\\d|4[0189]))|7(?:1(?:[013-8]\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-5])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\d|5[0-367])|70[13-7]|881))[0189]\\d{5}",[10]],["000800\\d{7}|1(?:600\\d{6}|80(?:0\\d{4,9}|3\\d{9}))"],["186[12]\\d{9}",[13]],0,0,["140\\d{7}",[10]],0,0,["1860\\d{7}",[11]]]],"IO":["246","00","3\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["3"]]],0,0,0,0,0,0,[["37\\d{5}"],["38\\d{5}"]]],"IQ":["964","00","(?:1|7\\d\\d)\\d{7}|[2-6]\\d{7,8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-6]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[["1\\d{7}|(?:2[13-5]|3[02367]|4[023]|5[03]|6[026])\\d{6,7}",[8,9]],["7[3-9]\\d{8}",[10]]]],"IR":["98","00","[1-9]\\d{9}|(?:[1-8]\\d\\d|9)\\d{3,4}",[4,5,6,7,10],[["(\\d{4,5})","$1",["96"],"0$1"],["(\\d{2})(\\d{4,5})","$1 $2",["(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[1-8]"],"0$1"]],"0",0,0,0,0,0,[["(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])(?:[03-57]\\d{7}|[16]\\d{3}(?:\\d{4})?|[289]\\d{3}(?:\\d(?:\\d{3})?)?)|94(?:000[09]|2(?:121|[2689]0\\d)|30[0-2]\\d|4(?:111|40\\d))\\d{4}",[6,7,10]],["9(?:(?:0(?:[0-35]\\d|4[4-6])|(?:[13]\\d|2[0-3])\\d)\\d|9(?:[0-46]\\d\\d|5[15]0|8(?:1\\d|88)|9(?:0[0-3]|[19]\\d|21|77|8[7-9])))\\d{5}",[10]],0,0,0,0,["96(?:0[12]|2[16-8]|3(?:08|[14]5|[23]|66)|4(?:0|80)|5[01]|6[89]|86|9[19])",[4,5]]]],"IS":["354","00|1(?:0(?:01|[12]0)|100)","(?:38\\d|[4-9])\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["[4-9]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["3"]]],0,0,0,0,0,0,[["(?:4(?:1[0-24-69]|2[0-7]|[37][0-8]|4[0-24589]|5[0-68]|6\\d|8[0-36-8])|5(?:05|[156]\\d|2[02578]|3[0-579]|4[03-7]|7[0-2578]|8[0-35-9]|9[013-689])|872)\\d{4}",[7]],["(?:38[589]\\d\\d|6(?:1[1-8]|2[0-6]|3[026-9]|4[014679]|5[0159]|6[0-69]|70|8[06-8]|9\\d)|7(?:5[057]|[6-9]\\d)|8(?:2[0-59]|[3-69]\\d|8[238]))\\d{4}"],["80[0-8]\\d{4}",[7]],["90(?:0\\d|1[5-79]|2[015-79]|3[135-79]|4[125-7]|5[25-79]|7[1-37]|8[0-35-7])\\d{3}",[7]],0,0,["809\\d{4}",[7]],0,["49[0-24-79]\\d{4}",[7]]],"00"],"IT":["39","00","0\\d{5,10}|1\\d{8,10}|3(?:[0-8]\\d{7,10}|9\\d{7,8})|(?:55|70)\\d{8}|8\\d{5}(?:\\d{2,4})?",[6,7,8,9,10,11],[["(\\d{2})(\\d{4,6})","$1 $2",["0[26]"]],["(\\d{3})(\\d{3,6})","$1 $2",["0[13-57-9][0159]|8(?:03|4[17]|9[2-5])","0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))"]],["(\\d{4})(\\d{2,6})","$1 $2",["0(?:[13-579][2-46-8]|8[236-8])"]],["(\\d{4})(\\d{4})","$1 $2",["894"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[26]|5"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["1(?:44|[679])|[378]"]],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[13-57-9][0159]|14"]],["(\\d{2})(\\d{4})(\\d{5})","$1 $2 $3",["0[26]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["3"]]],0,0,0,0,0,0,[["0669[0-79]\\d{1,6}|0(?:1(?:[0159]\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\d\\d|3(?:[0159]\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\d|6[0-8])|7(?:[0159]\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\d{2,7}"],["3[1-9]\\d{8}|3[2-9]\\d{7}",[9,10]],["80(?:0\\d{3}|3)\\d{3}",[6,9]],["(?:0878\\d{3}|89(?:2\\d|3[04]|4(?:[0-4]|[5-9]\\d\\d)|5[0-4]))\\d\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\d{6}",[6,8,9,10]],["1(?:78\\d|99)\\d{6}",[9,10]],0,0,0,["55\\d{8}",[10]],["84(?:[08]\\d{3}|[17])\\d{3}",[6,9]]]],"JE":["44","00","1534\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([0-24-8]\\d{5})$","1534$1",0,0,[["1534[0-24-8]\\d{5}"],["7(?:(?:(?:50|82)9|937)\\d|7(?:00[378]|97[7-9]))\\d{5}"],["80(?:07(?:35|81)|8901)\\d{4}"],["(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\d{4}"],["701511\\d{4}"],0,["(?:3(?:0(?:07(?:35|81)|8901)|3\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\d{4})\\d{4}"],["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}"],["56\\d{8}"]]],"JM":["1","011","(?:[58]\\d\\d|658|900)\\d{7}",[10],0,"1",0,0,0,0,"658|876",[["8766060\\d{3}|(?:658(?:2(?:[0-8]\\d|9[0-46-9])|[3-9]\\d\\d)|876(?:52[35]|6(?:0[1-3579]|1[02357-9]|[23]\\d|40|5[06]|6[2-589]|7[025-7]|8[04]|9[4-9])|7(?:0[2-689]|[1-6]\\d|8[056]|9[45])|9(?:0[1-8]|1[02378]|[2-8]\\d|9[2-468])))\\d{4}"],["(?:658295|876(?:2(?:0[1-9]|[13-9]\\d|2[013-9])|[348]\\d\\d|5(?:0[1-9]|[1-9]\\d)|6(?:4[89]|6[67])|7(?:0[07]|7\\d|8[1-47-9]|9[0-36-9])|9(?:[01]9|9[0579])))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"JO":["962","00","(?:(?:[2689]|7\\d)\\d|32|53)\\d{6}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2356]|87"],"(0$1)"],["(\\d{3})(\\d{5,6})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["70"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[["87(?:000|90[01])\\d{3}|(?:2(?:6(?:2[0-35-9]|3[0-578]|4[24-7]|5[0-24-8]|[6-8][023]|9[0-3])|7(?:0[1-79]|10|2[014-7]|3[0-689]|4[019]|5[0-3578]))|32(?:0[1-69]|1[1-35-7]|2[024-7]|3\\d|4[0-3]|[5-7][023])|53(?:0[0-3]|[13][023]|2[0-59]|49|5[0-35-9]|6[15]|7[45]|8[1-6]|9[0-36-9])|6(?:2(?:[05]0|22)|3(?:00|33)|4(?:0[0-25]|1[2-7]|2[0569]|[38][07-9]|4[025689]|6[0-589]|7\\d|9[0-2])|5(?:[01][056]|2[034]|3[0-57-9]|4[178]|5[0-69]|6[0-35-9]|7[1-379]|8[0-68]|9[0239]))|87(?:20|7[078]|99))\\d{4}",[8]],["7(?:[78][0-25-9]|9\\d)\\d{6}",[9]],["80\\d{6}",[8]],["9\\d{7}",[8]],["70\\d{7}",[9]],0,["8(?:10|8\\d)\\d{5}",[8]],["74(?:66|77)\\d{5}",[9]],0,["85\\d{6}",[8]]]],"JP":["81","010","00[1-9]\\d{6,14}|[257-9]\\d{9}|(?:00|[1-9]\\d\\d)\\d{6}",[8,9,10,11,12,13,14,15,16,17],[["(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3",["(?:12|57|99)0"],"0$1"],["(\\d{4})(\\d)(\\d{4})","$1-$2-$3",["1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:80|9[16])","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2-$3",["[36]|4(?:2[09]|7[01])","[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]"],"0$1"],["(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3",["[14]|[289][2-9]|5[3-9]|7[2-4679]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["800"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[257-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:1[235-8]|2[3-6]|3[3-9]|4[2-6]|[58][2-8]|6[2-7]|7[2-9]|9[1-9])|(?:2[2-9]|[36][1-9])\\d|4(?:[2-578]\\d|6[02-8]|9[2-59])|5(?:[2-589]\\d|6[1-9]|7[2-8])|7(?:[25-9]\\d|3[4-9]|4[02-9])|8(?:[2679]\\d|3[2-9]|4[5-9]|5[1-9]|8[03-9])|9(?:[2-58]\\d|[679][1-9]))\\d{6}",[9]],["[7-9]0[1-9]\\d{7}",[10]],["00777(?:[01]|5\\d)\\d\\d|(?:00(?:7778|882[1245])|(?:120|800\\d)\\d\\d)\\d{4}|00(?:37|66|78)\\d{6,13}"],["990\\d{6}",[9]],["60\\d{7}",[9]],0,["570\\d{6}",[9]],["20\\d{8}",[10]],["50[1-9]\\d{7}",[10]]]],"KE":["254","000","(?:[17]\\d\\d|900)\\d{6}|(?:2|80)0\\d{6,7}|[4-6]\\d{6,8}",[7,8,9,10],[["(\\d{2})(\\d{5,7})","$1 $2",["[24-6]"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[17]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,[["(?:4[245]|5[1-79]|6[01457-9])\\d{5,7}|(?:4[136]|5[08]|62)\\d{7}|(?:[24]0|66)\\d{6,7}",[7,8,9]],["(?:1(?:0[0-6]|1[0-5]|2[014]|30)|7\\d\\d)\\d{6}",[9]],["800[2-8]\\d{5,6}",[9,10]],["900[02-9]\\d{5}",[9]]]],"KG":["996","00","8\\d{9}|(?:[235-8]\\d|99)\\d{7}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["3(?:1[346]|[24-79])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235-79]|88"],"0$1"],["(\\d{3})(\\d{3})(\\d)(\\d{2,3})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["312(?:5[0-79]\\d|9(?:[0-689]\\d|7[0-24-9]))\\d{3}|(?:3(?:1(?:2[0-46-8]|3[1-9]|47|[56]\\d)|2(?:22|3[0-479]|6[0-7])|4(?:22|5[6-9]|6\\d)|5(?:22|3[4-7]|59|6\\d)|6(?:22|5[35-7]|6\\d)|7(?:22|3[468]|4[1-9]|59|[67]\\d)|9(?:22|4[1-8]|6\\d))|6(?:09|12|2[2-4])\\d)\\d{5}",[9]],["312(?:58\\d|973)\\d{3}|(?:2(?:0[0-35]|2\\d)|5[0-24-7]\\d|7(?:[07]\\d|55)|88[08]|99[05-9])\\d{6}",[9]],["800\\d{6,7}"]]],"KH":["855","00[14-9]","1\\d{9}|[1-9]\\d{7,8}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[["23(?:4(?:[2-4]|[56]\\d)|[568]\\d\\d)\\d{4}|23[236-9]\\d{5}|(?:2[4-6]|3[2-6]|4[2-4]|[5-7][2-5])(?:(?:[237-9]|4[56]|5\\d)\\d{5}|6\\d{5,6})",[8,9]],["(?:(?:1[28]|3[18]|9[67])\\d|6[016-9]|7(?:[07-9]|[16]\\d)|8(?:[013-79]|8\\d))\\d{6}|(?:1\\d|9[0-57-9])\\d{6}|(?:2[3-6]|3[2-6]|4[2-4]|[5-7][2-5])48\\d{5}",[8,9]],["1800(?:1\\d|2[019])\\d{4}",[10]],["1900(?:1\\d|2[09])\\d{4}",[10]]]],"KI":["686","00","(?:[37]\\d|6[0-79])\\d{6}|(?:[2-48]\\d|50)\\d{3}",[5,8],0,"0",0,0,0,0,0,[["(?:[24]\\d|3[1-9]|50|65(?:02[12]|12[56]|22[89]|[3-5]00)|7(?:27\\d\\d|3100|5(?:02[12]|12[56]|22[89]|[34](?:00|81)|500))|8[0-5])\\d{3}"],["(?:63\\d{3}|73(?:0[0-5]\\d|140))\\d{3}|[67]200[01]\\d{3}",[8]],0,0,0,0,0,0,["30(?:0[01]\\d\\d|12(?:11|20))\\d\\d",[8]]]],"KM":["269","00","[3478]\\d{6}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[3478]"]]],0,0,0,0,0,0,[["7[4-7]\\d{5}"],["[34]\\d{6}"],0,["8\\d{6}"]]],"KN":["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","869$1",0,"869",[["869(?:2(?:29|36)|302|4(?:6[015-9]|70)|56[5-7])\\d{4}"],["869(?:48[89]|55[6-8]|66\\d|76[02-7])\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"KP":["850","00|99","85\\d{6}|(?:19\\d|[2-7])\\d{7}",[8,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"]],"0",0,0,0,0,0,[["(?:(?:195|2)\\d|3[19]|4[159]|5[37]|6[17]|7[39]|85)\\d{6}"],["19[1-3]\\d{7}",[10]]]],"KR":["82","00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))","00[1-9]\\d{8,11}|(?:[12]|5\\d{3})\\d{7}|[13-6]\\d{9}|(?:[1-6]\\d|80)\\d{7}|[3-6]\\d{4,5}|(?:00|7)0\\d{8}",[5,6,8,9,10,11,12,13,14],[["(\\d{2})(\\d{3,4})","$1-$2",["(?:3[1-3]|[46][1-4]|5[1-5])1"],"0$1"],["(\\d{4})(\\d{4})","$1-$2",["1"]],["(\\d)(\\d{3,4})(\\d{4})","$1-$2-$3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60|8"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1-$2-$3",["[1346]|5[1-5]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{2})(\\d{5})(\\d{4})","$1-$2-$3",["5"],"0$1"]],"0",0,"0(8(?:[1-46-8]|5\\d\\d))?",0,0,0,[["(?:2|3[1-3]|[46][1-4]|5[1-5])[1-9]\\d{6,7}|(?:3[1-3]|[46][1-4]|5[1-5])1\\d{2,3}",[5,6,8,9,10]],["1(?:05(?:[0-8]\\d|9[0-6])|22[13]\\d)\\d{4,5}|1(?:0[1-46-9]|[16-9]\\d|2[013-9])\\d{6,7}",[9,10]],["00(?:308\\d{6,7}|798\\d{7,9})|(?:00368|80)\\d{7}",[9,11,12,13,14]],["60[2-9]\\d{6}",[9]],["50\\d{8,9}",[10,11]],0,["1(?:5(?:22|33|44|66|77|88|99)|6(?:[07]0|44|6[168]|88)|8(?:00|33|55|77|99))\\d{4}",[8]],["15\\d{7,8}",[9,10]],["70\\d{8}",[10]]]],"KW":["965","00","18\\d{5}|(?:[2569]\\d|41)\\d{6}",[7,8],[["(\\d{4})(\\d{3,4})","$1 $2",["[169]|2(?:[235]|4[1-35-9])|52"]],["(\\d{3})(\\d{5})","$1 $2",["[245]"]]],0,0,0,0,0,0,[["2(?:[23]\\d\\d|4(?:[1-35-9]\\d|44)|5(?:0[034]|[2-46]\\d|5[1-3]|7[1-7]))\\d{4}",[8]],["(?:41\\d\\d|5(?:(?:[05]\\d|1[0-7]|6[56])\\d|2(?:22|5[25])|7(?:55|77)|88[58])|6(?:(?:0[034679]|5[015-9]|6\\d)\\d|1(?:00|11|66)|222|3[36]3|444|7(?:0[013-9]|[67]\\d)|888|9(?:[069]\\d|3[039]))|9(?:(?:0[09]|22|[4679]\\d|8[057-9])\\d|1(?:1[01]|99)|3(?:00|33)|5(?:00|5\\d)))\\d{4}",[8]],["18\\d{5}",[7]]]],"KY":["1","011","(?:345|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","345$1",0,"345",[["345(?:2(?:22|3[23]|44|66)|333|444|6(?:23|38|40)|7(?:30|4[35-79]|6[6-9]|77)|8(?:00|1[45]|[48]8)|9(?:14|4[035-9]))\\d{4}"],["345(?:32[1-9]|42[0-4]|5(?:1[67]|2[5-79]|4[6-9]|50|76)|649|82[56]|9(?:1[679]|2[2-9]|3[06-9]|90))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["(?:345976|900[2-9]\\d\\d)\\d{4}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,0,["345849\\d{4}"]]],"KZ":["7","810","(?:33622|8\\d{8})\\d{5}|[78]\\d{9}",[10,14],0,"8",0,0,0,0,"33|7",[["(?:33622|7(?:1(?:0(?:[23]\\d|4[0-3]|59|63)|1(?:[23]\\d|4[0-79]|59)|2(?:[23]\\d|59)|3(?:2\\d|3[0-79]|4[0-35-9]|59)|4(?:[24]\\d|3[013-9]|5[1-9])|5(?:2\\d|3[1-9]|4[0-7]|59)|6(?:[2-4]\\d|5[19]|61)|72\\d|8(?:[27]\\d|3[1-46-9]|4[0-5]))|2(?:1(?:[23]\\d|4[46-9]|5[3469])|2(?:2\\d|3[0679]|46|5[12679])|3(?:[2-4]\\d|5[139])|4(?:2\\d|3[1-35-9]|59)|5(?:[23]\\d|4[0-246-8]|59|61)|6(?:2\\d|3[1-9]|4[0-4]|59)|7(?:[2379]\\d|40|5[279])|8(?:[23]\\d|4[0-3]|59)|9(?:2\\d|3[124578]|59))))\\d{5}",[10]],["7(?:0[0-25-8]|47|6[0-4]|7[15-8]|85)\\d{7}",[10]],["8(?:00|108\\d{3})\\d{7}"],["809\\d{7}",[10]],["808\\d{7}",[10]],0,0,0,["751\\d{7}",[10]]],"8~10"],"LA":["856","00","[23]\\d{9}|3\\d{8}|(?:[235-8]\\d|41)\\d{6}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2[13]|3[14]|[4-8]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["30[013-9]"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[23]"],"0$1"]],"0",0,0,0,0,0,[["(?:2[13]|[35-7][14]|41|8[1468])\\d{6}",[8]],["(?:20(?:[239]\\d|5[24-9]|7[6-8]|88)|302\\d)\\d{6}",[10]],0,0,0,0,["30[013-9]\\d{6}",[9]]]],"LB":["961","00","[27-9]\\d{7}|[13-9]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27-9]"]]],"0",0,0,0,0,0,[["7(?:62|8[0-7]|9[04-9])\\d{4}|(?:[14-69]\\d|2(?:[14-69]\\d|[78][1-9])|7[2-57]|8[02-9])\\d{5}"],["793(?:[01]\\d|2[0-4])\\d{3}|(?:(?:3|81)\\d|7(?:[01]\\d|6[013-9]|8[89]|9[12]))\\d{5}"],0,["9[01]\\d{6}",[8]],0,0,0,0,0,["80\\d{6}",[8]]]],"LC":["1","011","(?:[58]\\d\\d|758|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","758$1",0,"758",[["758(?:234|4(?:30|5\\d|6[2-9]|8[0-2])|57[0-2]|(?:63|75)8)\\d{4}"],["758(?:28[4-7]|384|4(?:6[01]|8[4-9])|5(?:1[89]|20|84)|7(?:1[2-9]|2\\d|3[0-3])|812)\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"LI":["423","00","[68]\\d{8}|(?:[2378]\\d|90)\\d{5}",[7,9],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[2379]|8(?:0[09]|7)","[2379]|8(?:0(?:02|9)|7)"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["69"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]],"0",0,"0|(1001)",0,0,0,[["(?:2(?:01|1[27]|2[02]|3\\d|6[02-578]|96)|3(?:[24]0|33|7[0135-7]|8[048]|9[0269]))\\d{4}",[7]],["(?:6(?:(?:4[5-9]|5[0-4])\\d|6(?:[0245]\\d|[17]0|3[7-9]))\\d|7(?:[37-9]\\d|42|56))\\d{4}"],["8002[28]\\d\\d|80(?:05\\d|9)\\d{4}"],["90(?:02[258]|1(?:23|3[14])|66[136])\\d\\d",[7]],0,0,["870(?:28|87)\\d\\d",[7]]]],"LK":["94","00","[1-9]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[1-689]"],"0$1"]],"0",0,0,0,0,0,[["(?:12[2-9]|602|8[12]\\d|9(?:1\\d|22|9[245]))\\d{6}|(?:11|2[13-7]|3[1-8]|4[157]|5[12457]|6[35-7])[2-57]\\d{6}"],["7(?:[0-25-8]\\d|4[0-4])\\d{6}"],0,0,0,0,["1973\\d{5}"]]],"LR":["231","00","(?:2|33|5\\d|77|88)\\d{7}|[4-6]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[4-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3578]"],"0$1"]],"0",0,0,0,0,0,[["(?:2\\d{3}|33333)\\d{4}",[8,9]],["(?:(?:330|555|(?:77|88)\\d)\\d|4[67])\\d{5}|[56]\\d{6}",[7,9]],0,["332(?:02|[34]\\d)\\d{4}",[9]]]],"LS":["266","00","(?:[256]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2568]"]]],0,0,0,0,0,0,[["2\\d{7}"],["[56]\\d{7}"],["800[256]\\d{4}"]]],"LT":["370","00","(?:[3469]\\d|52|[78]0)\\d{6}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["52[0-7]"],"(8-$1)",1],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[7-9]"],"8 $1",1],["(\\d{2})(\\d{6})","$1 $2",["37|4(?:[15]|6[1-8])"],"(8-$1)",1],["(\\d{3})(\\d{5})","$1 $2",["[3-6]"],"(8-$1)",1]],"8",0,"[08]",0,0,0,[["(?:3[1478]|4[124-6]|52)\\d{6}"],["6\\d{7}"],["80[02]\\d{5}"],["9(?:0[0239]|10)\\d{5}"],["70[05]\\d{5}"],0,["70[67]\\d{5}"],0,["[89]01\\d{5}"],["808\\d{5}"]]],"LU":["352","00","35[013-9]\\d{4,8}|6\\d{8}|35\\d{2,4}|(?:[2457-9]\\d|3[0-46-9])\\d{2,9}",[4,5,6,7,8,9,10,11],[["(\\d{2})(\\d{3})","$1 $2",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["20[2-689]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4",["2(?:[0367]|4[3-8])"]],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["80[01]|90[015]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["20"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4 $5",["2(?:[0367]|4[3-8])"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,5})","$1 $2 $3 $4",["[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]"]]],0,0,"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\d)",0,0,0,[["(?:35[013-9]|80[2-9]|90[89])\\d{1,8}|(?:2[2-9]|3[0-46-9]|[457]\\d|8[13-9]|9[2-579])\\d{2,9}"],["6(?:[269][18]|5[1568]|7[189]|81)\\d{6}",[9]],["800\\d{5}",[8]],["90[015]\\d{5}",[8]],0,0,0,0,["20(?:1\\d{5}|[2-689]\\d{1,7})",[4,5,6,7,8,9,10]],["801\\d{5}",[8]]]],"LV":["371","00","(?:[268]\\d|90)\\d{6}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[269]|8[01]"]]],0,0,0,0,0,0,[["6\\d{7}"],["23(?:23[0-57-9]|33[0238])\\d{3}|2(?:[0-24-9]\\d\\d|3(?:0[07]|[14-9]\\d|2[024-9]|3[0-24-9]))\\d{4}"],["80\\d{6}"],["90\\d{6}"],0,0,0,0,0,["81\\d{6}"]]],"LY":["218","00","[2-9]\\d{8}",[9],[["(\\d{2})(\\d{7})","$1-$2",["[2-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:2(?:0[56]|[1-6]\\d|7[124579]|8[124])|3(?:1\\d|2[2356])|4(?:[17]\\d|2[1-357]|5[2-4]|8[124])|5(?:[1347]\\d|2[1-469]|5[13-5]|8[1-4])|6(?:[1-479]\\d|5[2-57]|8[1-5])|7(?:[13]\\d|2[13-79])|8(?:[124]\\d|5[124]|84))\\d{6}"],["9[1-6]\\d{7}"]]],"MA":["212","00","[5-8]\\d{8}",[9],[["(\\d{5})(\\d{4})","$1-$2",["5(?:29|38)","5(?:29[89]|389)","5(?:29[89]|389)0"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5[45]"],"0$1"],["(\\d{4})(\\d{5})","$1-$2",["5(?:2[2-489]|3[5-9]|9)|892","5(?:2(?:[2-49]|8[235-9])|3[5-9]|9)|892"],"0$1"],["(\\d{2})(\\d{7})","$1-$2",["8"],"0$1"],["(\\d{3})(\\d{6})","$1-$2",["[5-7]"],"0$1"]],"0",0,0,0,0,0,[["5(?:29(?:[189][05]|2[29]|3[01])|389[05])\\d{4}|5(?:2(?:[0-25-7]\\d|3[1-578]|4[02-46-8]|8[0235-7]|90)|3(?:[0-47]\\d|5[02-9]|6[02-8]|8[08]|9[3-9])|(?:4[067]|5[03])\\d)\\d{5}"],["(?:6(?:[0-79]\\d|8[0-247-9])|7(?:[017]\\d|2[0-2]|6[0-8]|8[0-3]))\\d{6}"],["80\\d{7}"],["89\\d{7}"],0,0,0,0,["592(?:4[0-2]|93)\\d{4}"]]],"MC":["377","00","(?:[3489]|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["4"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[389]"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["6"],"0$1"]],"0",0,0,0,0,0,[["(?:870|9[2-47-9]\\d)\\d{5}",[8]],["4(?:[46]\\d|5[1-9])\\d{5}|(?:3|6\\d)\\d{7}"],["(?:800|90\\d)\\d{5}",[8]]]],"MD":["373","00","(?:[235-7]\\d|[89]0)\\d{6}",[8],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["22|3"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[25-7]"],"0$1"]],"0",0,0,0,0,0,[["(?:(?:2[1-9]|3[1-79])\\d|5(?:33|5[257]))\\d{5}"],["562\\d{5}|(?:6\\d|7[16-9])\\d{6}"],["800\\d{5}"],["90[056]\\d{5}"],0,0,["803\\d{5}"],0,["3[08]\\d{6}"],["808\\d{5}"]]],"ME":["382","00","(?:20|[3-79]\\d)\\d{6}|80\\d{6,7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:20[2-8]|3(?:[0-2][2-7]|3[24-7])|4(?:0[2-467]|1[2467])|5(?:0[2467]|1[24-7]|2[2-467]))\\d{5}",[8]],["6(?:[07-9]\\d|3[024]|6[0-25])\\d{5}",[8]],["80(?:[0-2578]|9\\d)\\d{5}"],["9(?:4[1568]|5[178])\\d{5}",[8]],0,0,["77[1-9]\\d{5}",[8]],0,["78[1-49]\\d{5}",[8]]]],"MF":["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[["590(?:0[079]|[14]3|[27][79]|30|5[0-268]|87)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],"MG":["261","00","[23]\\d{8}",[9],[["(\\d{2})(\\d{2})(\\d{3})(\\d{2})","$1 $2 $3 $4",["[23]"],"0$1"]],"0",0,"0|([24-9]\\d{6})$","20$1",0,0,[["2072[29]\\d{4}|20(?:2\\d|4[47]|5[3467]|6[279]|7[35]|8[268]|9[245])\\d{5}"],["3[2-489]\\d{7}"],0,0,0,0,0,0,["22\\d{7}"]]],"MH":["692","011","329\\d{4}|(?:[256]\\d|45)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1-$2",["[2-6]"]]],"1",0,0,0,0,0,[["(?:247|528|625)\\d{4}"],["(?:(?:23|54)5|329|45[356])\\d{4}"],0,0,0,0,0,0,["635\\d{4}"]]],"MK":["389","00","[2-578]\\d{7}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2|34[47]|4(?:[37]7|5[47]|64)"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[347]"],"0$1"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["[58]"],"0$1"]],"0",0,0,0,0,0,[["(?:(?:2(?:62|77)0|3444)\\d|4[56]440)\\d{3}|(?:34|4[357])700\\d{3}|(?:2(?:[0-3]\\d|5[0-578]|6[01]|82)|3(?:1[3-68]|[23][2-68]|4[23568])|4(?:[23][2-68]|4[3-68]|5[2568]|6[25-8]|7[24-68]|8[4-68]))\\d{5}"],["7(?:3555|4747|9(?:[019]77|42[0-4]))\\d{3}|7(?:[0-25-8]\\d\\d|3(?:[1-4]\\d|7[01578])|4(?:2\\d|60|7[01578])|9(?:[23]\\d|4[01]|7[015]))\\d{4}"],["800\\d{5}"],["5\\d{7}"],0,0,0,0,0,["8(?:0[1-9]|[1-9]\\d)\\d{5}"]]],"ML":["223","00","[24-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24-9]"]]],0,0,0,0,0,0,[["2(?:07[0-8]|12[67])\\d{4}|(?:2(?:02|1[4-689])|4(?:0[0-4]|4[1-39]))\\d{5}"],["2(?:0(?:01|79)|17\\d)\\d{4}|(?:5[01]|[679]\\d|8[2-49])\\d{6}"],["80\\d{6}"]]],"MM":["95","00","1\\d{5,7}|95\\d{6}|(?:[4-7]|9[0-46-9])\\d{6,8}|(?:2|8\\d)\\d{5,8}",[6,7,8,9,10],[["(\\d)(\\d{2})(\\d{3})","$1 $2 $3",["16|2"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[4-7]|8[1-35]"],"0$1"],["(\\d)(\\d{3})(\\d{4,6})","$1 $2 $3",["9(?:2[0-4]|[35-9]|4[137-9])"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["92"],"0$1"],["(\\d)(\\d{5})(\\d{4})","$1 $2 $3",["9"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:(?:2\\d|3[56]|[89][0-6])\\d|4(?:2[2-469]|39|46|6[25]|7[0-3]|83)|6)|2(?:2(?:00|8[34])|4(?:0\\d|2[246]|39|46|62|7[0-3]|83)|51\\d\\d)|4(?:2(?:2\\d\\d|48[0-3])|3(?:20\\d|4(?:70|83)|56)|420\\d|5470)|6(?:0(?:[23]|88\\d)|(?:124|[56]2\\d)\\d|247[23]|3(?:20\\d|470)|4(?:2[04]\\d|47[23])|7(?:(?:3\\d|8[01459])\\d|4(?:39|60|7[013]))))\\d{4}|5(?:2(?:2\\d{5,6}|47[023]\\d{4})|(?:347[23]|4(?:2(?:1|86)|470)|522\\d|6(?:20\\d|483)|7(?:20\\d|48[0-2])|8(?:20\\d|47[02])|9(?:20\\d|47[01]))\\d{4})|7(?:(?:0470|4(?:25\\d|470)|5(?:202|470|96\\d))\\d{4}|1(?:20\\d{4,5}|4(?:70|83)\\d{4}))|8(?:1(?:2\\d{5,6}|4(?:10|7[01]\\d)\\d{3})|2(?:2\\d{5,6}|(?:320|490\\d)\\d{3})|(?:3(?:2\\d\\d|470)|4[24-7]|5(?:2\\d|4[1-9]|51)\\d|6[23])\\d{4})|(?:1[2-6]\\d|4(?:2[24-8]|3[2-7]|[46][2-6]|5[3-5])|5(?:[27][2-8]|3[2-68]|4[24-8]|5[23]|6[2-4]|8[24-7]|9[2-7])|6(?:[19]20|42[03-6]|(?:52|7[45])\\d)|7(?:[04][24-8]|[15][2-7]|22|3[2-4])|8(?:1[2-689]|2[2-8]|[35]2\\d))\\d{4}|25\\d{5,6}|(?:2[2-9]|6(?:1[2356]|[24][2-6]|3[24-6]|5[2-4]|6[2-8]|7[235-7]|8[245]|9[24])|8(?:3[24]|5[245]))\\d{4}",[6,7,8,9]],["(?:17[01]|9(?:2(?:[0-4]|[56]\\d\\d)|(?:3(?:[0-36]|4\\d)|(?:6\\d|9[4-8])\\d|7(?:3|40|[5-9]\\d)|8(?:78|[89]\\d))\\d|4(?:(?:[0245]\\d|[1379])\\d|88)|5[0-6])\\d)\\d{4}|9[69]1\\d{6}|9(?:[68]\\d|9[089])\\d{5}",[7,8,9,10]],["80080(?:[01][1-9]|2\\d)\\d{3}",[10]],0,0,0,0,0,["1333\\d{4}|[12]468\\d{4}",[8]]]],"MN":["976","001","[12]\\d{7,9}|[5-9]\\d{7}",[8,9,10],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[12]1"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[5-9]"]],["(\\d{3})(\\d{5,6})","$1 $2",["[12]2[1-3]"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["[12](?:27|3[2-8]|4[2-68]|5[1-4689])","[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["[12]"],"0$1"]],"0",0,0,0,0,0,[["[12]2[1-3]\\d{5,6}|7(?:0[0-5]\\d|128)\\d{4}|(?:[12](?:1|27)|5[368])\\d{6}|[12](?:3[2-8]|4[2-68]|5[1-4689])\\d{6,7}"],["(?:83[01]|920)\\d{5}|(?:5[05]|6[06]|8[015689]|9[013-9])\\d{6}",[8]],0,0,0,0,0,0,["712[0-79]\\d{4}|7(?:1[013-9]|[25-8]\\d)\\d{5}",[8]]]],"MO":["853","00","0800\\d{3}|(?:28|[68]\\d)\\d{6}",[7,8],[["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{4})(\\d{4})","$1 $2",["[268]"]]],0,0,0,0,0,0,[["(?:28[2-9]|8(?:11|[2-57-9]\\d))\\d{5}",[8]],["6800[0-79]\\d{3}|6(?:[235]\\d\\d|6(?:0[0-5]|[1-9]\\d)|8(?:0[1-9]|[14-8]\\d|2[5-9]|[39][0-4]))\\d{4}",[8]],["0800\\d{3}",[7]]]],"MP":["1","011","[58]\\d{9}|(?:67|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","670$1",0,"670",[["670(?:2(?:3[3-7]|56|8[4-8])|32[1-38]|4(?:33|8[348])|5(?:32|55|88)|6(?:64|70|82)|78[3589]|8[3-9]8|989)\\d{4}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"MQ":["596","00","(?:69|80)\\d{7}|(?:59|97)6\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["596(?:[03-7]\\d|10|2[7-9]|8[09]|9[4-9])\\d{4}"],["69(?:6(?:[0-46-9]\\d|5[0-6])|727)\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976(?:6\\d|7[0-367])\\d{4}"]]],"MR":["222","00","(?:[2-4]\\d\\d|800)\\d{5}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-48]"]]],0,0,0,0,0,0,[["(?:25[08]|35\\d|45[1-7])\\d{5}"],["[2-4][0-46-9]\\d{6}"],["800\\d{5}"]]],"MS":["1","011","(?:[58]\\d\\d|664|900)\\d{7}",[10],0,"1",0,"1|([34]\\d{6})$","664$1",0,"664",[["6644(?:1[0-3]|91)\\d{4}"],["664(?:3(?:49|9[1-6])|49[2-6])\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"MT":["356","00","3550\\d{4}|(?:[2579]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2357-9]"]]],0,0,0,0,0,0,[["20(?:3[1-4]|6[059])\\d{4}|2(?:0[19]|[1-357]\\d|60)\\d{5}"],["(?:7(?:210|[79]\\d\\d)|9(?:[29]\\d\\d|69[67]|8(?:1[1-3]|89|97)))\\d{4}"],["800(?:02|[3467]\\d)\\d{3}"],["5(?:0(?:0(?:37|43)|(?:6\\d|70|9[0168])\\d)|[12]\\d0[1-5])\\d{3}"],0,0,["501\\d{5}"],["7117\\d{4}"],["3550\\d{4}"]]],"MU":["230","0(?:0|[24-7]0|3[03])","(?:5|8\\d\\d)\\d{7}|[2-468]\\d{6}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[2-46]|8[013]"]],["(\\d{4})(\\d{4})","$1 $2",["5"]],["(\\d{5})(\\d{5})","$1 $2",["8"]]],0,0,0,0,0,0,[["(?:2(?:[0346-8]\\d|1[0-7])|4(?:[013568]\\d|2[4-7])|54(?:[3-5]\\d|71)|6\\d\\d|8(?:14|3[129]))\\d{4}",[7,8]],["5(?:4(?:2[1-389]|7[1-9])|87[15-8])\\d{4}|5(?:2[5-9]|4[3-689]|[57]\\d|8[0-689]|9[0-8])\\d{5}",[8]],["802\\d{7}|80[0-2]\\d{4}",[7,10]],["30\\d{5}",[7]],0,0,0,0,["3(?:20|9\\d)\\d{4}",[7]]],"020"],"MV":["960","0(?:0|19)","(?:800|9[0-57-9]\\d)\\d{7}|[34679]\\d{6}",[7,10],[["(\\d{3})(\\d{4})","$1-$2",["[3467]|9[13-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"]]],0,0,0,0,0,0,[["(?:3(?:0[0-3]|3[0-59])|6(?:[58][024689]|6[024-68]|7[02468]))\\d{4}",[7]],["46[46]\\d{4}|(?:7\\d|9[13-9])\\d{5}",[7]],["800\\d{7}",[10]],["900\\d{7}",[10]],0,0,["4(?:0[01]|50)\\d{4}",[7]]],"00"],"MW":["265","00","(?:[1289]\\d|31|77)\\d{7}|1\\d{6}",[7,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["1[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[137-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:1[2-9]|2[12]\\d\\d)\\d{5}"],["111\\d{6}|(?:31|77|[89][89])\\d{7}",[9]]]],"MX":["52","0[09]","1(?:(?:44|99)[1-9]|65[0-689])\\d{7}|(?:1(?:[017]\\d|[235][1-9]|4[0-35-9]|6[0-46-9]|8[1-79]|9[1-8])|[2-9]\\d)\\d{8}",[10,11],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["33|5[56]|81"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2-9]"],0,1],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 $3 $4",["1(?:33|5[56]|81)"],0,1],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 $3 $4",["1"],0,1]],"01",0,"0(?:[12]|4[45])|1",0,0,0,[["657[12]\\d{6}|(?:2(?:0[01]|2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[25-7][1-9]|3[1-8]|4\\d|8[1-35-9]|9[2-689])|5(?:[56]\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|6[1-9]|7[12]|8[1-8]|9\\d))\\d{7}",[10]],["657[12]\\d{6}|(?:1(?:2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-7][1-9]|3[1-8]|8[1-35-9]|9[2-689])|5(?:[56]\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))|2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[25-7][1-9]|3[1-8]|4\\d|8[1-35-9]|9[2-689])|5(?:[56]\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|6[1-9]|7[12]|8[1-8]|9\\d))\\d{7}"],["8(?:00|88)\\d{7}",[10]],["900\\d{7}",[10]],["500\\d{7}",[10]],0,0,0,0,["300\\d{7}",[10]]],"00"],"MY":["60","00","1\\d{8,9}|(?:3\\d|[4-9])\\d{7}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1-$2 $3",["[4-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1-$2 $3",["1(?:[02469]|[378][1-9]|53)|8","1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2 $3",["3"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3-$4",["1(?:[367]|80)"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2 $3",["15"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2 $3",["1"],"0$1"]],"0",0,0,0,0,0,[["(?:3(?:2[0-36-9]|3[0-368]|4[0-278]|5[0-24-8]|6[0-467]|7[1246-9]|8\\d|9[0-57])\\d|4(?:2[0-689]|[3-79]\\d|8[1-35689])|5(?:2[0-589]|[3468]\\d|5[0-489]|7[1-9]|9[23])|6(?:2[2-9]|3[1357-9]|[46]\\d|5[0-6]|7[0-35-9]|85|9[015-8])|7(?:[2579]\\d|3[03-68]|4[0-8]|6[5-9]|8[0-35-9])|8(?:[24][2-8]|3[2-5]|5[2-7]|6[2-589]|7[2-578]|[89][2-9])|9(?:0[57]|13|[25-7]\\d|[3489][0-8]))\\d{5}",[8,9]],["1(?:1888[689]|4400|8(?:47|8[27])[0-4])\\d{4}|1(?:0(?:[23568]\\d|4[0-6]|7[016-9]|9[0-8])|1(?:[1-5]\\d\\d|6(?:0[5-9]|[1-9]\\d)|7(?:[0134]\\d|2[1-9]|5[0-6]))|(?:[269]\\d|[37][1-9]|4[235-9])\\d|5(?:31|9\\d\\d)|8(?:1[23]|[236]\\d|4[06]|5(?:46|[7-9])|7[016-9]|8[01]|9[0-8]))\\d{5}",[9,10]],["1[378]00\\d{6}",[10]],["1600\\d{6}",[10]],0,0,0,0,["15(?:4(?:6[0-4]\\d|8(?:0[125]|[17]\\d|21|3[01]|4[01589]|5[014]|6[02]))|6(?:32[0-6]|78\\d))\\d{4}",[10]]]],"MZ":["258","00","(?:2|8\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2|8[2-79]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["2(?:[1346]\\d|5[0-2]|[78][12]|93)\\d{5}",[8]],["8[2-79]\\d{7}",[9]],["800\\d{6}",[9]]]],"NA":["264","00","[68]\\d{7,8}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["87"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0",0,0,0,0,0,[["64426\\d{3}|6(?:1(?:2[2-7]|3[01378]|4[0-4])|254|32[0237]|4(?:27|41|5[25])|52[236-8]|626|7(?:2[2-4]|30))\\d{4,5}|6(?:1(?:(?:0\\d|2[0189]|3[24-69]|4[5-9])\\d|17|69|7[014])|2(?:17|5[0-36-8]|69|70)|3(?:17|2[14-689]|34|6[289]|7[01]|81)|4(?:17|2[0-2]|4[06]|5[0137]|69|7[01])|5(?:17|2[0459]|69|7[01])|6(?:17|25|38|42|69|7[01])|7(?:17|2[569]|3[13]|6[89]|7[01]))\\d{4}"],["(?:60|8[1245])\\d{7}",[9]],["80\\d{7}",[9]],["8701\\d{5}",[9]],0,0,0,0,["8(?:3\\d\\d|86)\\d{5}"]]],"NC":["687","00","(?:050|[2-57-9]\\d\\d)\\d{3}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1.$2.$3",["[02-57-9]"]]],0,0,0,0,0,0,[["(?:2[03-9]|3[0-5]|4[1-7]|88)\\d{4}"],["(?:5[0-4]|[79]\\d|8[0-79])\\d{4}"],["050\\d{3}"],["36\\d{4}"]]],"NE":["227","00","[027-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["08"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[089]|2[013]|7[04]"]]],0,0,0,0,0,0,[["2(?:0(?:20|3[1-8]|4[13-5]|5[14]|6[14578]|7[1-578])|1(?:4[145]|5[14]|6[14-68]|7[169]|88))\\d{4}"],["(?:23|7[04]|[89]\\d)\\d{6}"],["08\\d{6}"],["09\\d{6}"]]],"NF":["672","00","[13]\\d{5}",[6],[["(\\d{2})(\\d{4})","$1 $2",["1[0-3]"]],["(\\d)(\\d{5})","$1 $2",["[13]"]]],0,0,"([0-258]\\d{4})$","3$1",0,0,[["(?:1(?:06|17|28|39)|3[0-2]\\d)\\d{3}"],["(?:14|3[58])\\d{4}"]]],"NG":["234","009","(?:[124-7]|9\\d{3})\\d{6}|[1-9]\\d{7}|[78]\\d{9,13}",[7,8,10,11,12,13,14],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["78"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]|9(?:0[3-9]|[1-9])"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[3-7]|8[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["[78]"],"0$1"],["(\\d{3})(\\d{5})(\\d{5,6})","$1 $2 $3",["[78]"],"0$1"]],"0",0,0,0,0,0,[["(?:(?:[1-356]\\d|4[02-8]|8[2-9])\\d|9(?:0[3-9]|[1-9]\\d))\\d{5}|7(?:0(?:[013-689]\\d|2[0-24-9])\\d{3,4}|[1-79]\\d{6})|(?:[12]\\d|4[147]|5[14579]|6[1578]|7[1-3578])\\d{5}",[7,8]],["(?:702[0-24-9]|8(?:01|19)[01])\\d{6}|(?:70[13-689]|8(?:0[2-9]|1[0-8])|9(?:0[1-9]|1[2356]))\\d{7}",[10]],["800\\d{7,11}",[10,11,12,13,14]],0,0,0,["700\\d{7,11}",[10,11,12,13,14]]]],"NI":["505","00","(?:1800|[25-8]\\d{3})\\d{4}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[125-8]"]]],0,0,0,0,0,0,[["2\\d{7}"],["(?:5(?:5[0-7]|[78]\\d)|6(?:20|3[035]|4[045]|5[05]|77|8[1-9]|9[059])|(?:7[5-8]|8\\d)\\d)\\d{5}"],["1800\\d{4}"]]],"NL":["31","00","(?:[124-7]\\d\\d|3(?:[02-9]\\d|1[0-8]))\\d{6}|8\\d{6,9}|9\\d{6,10}|1\\d{4,5}",[5,6,7,8,9,10,11],[["(\\d{3})(\\d{4,7})","$1 $2",["[89]0"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["66"],"0$1"],["(\\d)(\\d{8})","$1 $2",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["1[16-8]|2[259]|3[124]|4[17-9]|5[124679]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-578]|91"],"0$1"],["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3",["9"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:[035]\\d|1[13-578]|6[124-8]|7[24]|8[0-467])|2(?:[0346]\\d|2[2-46-9]|5[125]|9[479])|3(?:[03568]\\d|1[3-8]|2[01]|4[1-8])|4(?:[0356]\\d|1[1-368]|7[58]|8[15-8]|9[23579])|5(?:[0358]\\d|[19][1-9]|2[1-57-9]|4[13-8]|6[126]|7[0-3578])|7\\d\\d)\\d{6}",[9]],["(?:6[1-58]|970\\d)\\d{7}",[9,11]],["800\\d{4,7}",[7,8,9,10]],["90[069]\\d{4,7}",[7,8,9,10]],0,0,["140(?:1[035]|2[0346]|3[03568]|4[0356]|5[0358]|8[458])|(?:140(?:1[16-8]|2[259]|3[124]|4[17-9]|5[124679]|7)|8[478]\\d{6})\\d",[5,6,9]],["66\\d{7}",[9]],["(?:85|91)\\d{7}",[9]]]],"NO":["47","00","(?:0|[2-9]\\d{3})\\d{4}",[5,8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[489]|59"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[235-7]"]]],0,0,0,0,0,"[02-689]|7[0-8]",[["(?:2[1-4]|3[1-3578]|5[1-35-7]|6[1-4679]|7[0-8])\\d{6}",[8]],["(?:4[015-8]|59|9\\d)\\d{6}",[8]],["80[01]\\d{5}",[8]],["82[09]\\d{5}",[8]],["880\\d{5}",[8]],0,["(?:0[2-9]|81(?:0(?:0[7-9]|1\\d)|5\\d\\d))\\d{3}"],0,["85[0-5]\\d{5}",[8]],["810(?:0[0-6]|[2-8]\\d)\\d{3}",[8]]]],"NP":["977","00","(?:1\\d|9)\\d{9}|[1-9]\\d{7}",[8,10,11],[["(\\d)(\\d{7})","$1-$2",["1[2-6]"],"0$1"],["(\\d{2})(\\d{6})","$1-$2",["1[01]|[2-8]|9(?:[1-59]|[67][2-6])"],"0$1"],["(\\d{3})(\\d{7})","$1-$2",["9"]]],"0",0,0,0,0,0,[["(?:1[0-6]\\d|99[02-6])\\d{5}|(?:2[13-79]|3[135-8]|4[146-9]|5[135-7]|6[13-9]|7[15-9]|8[1-46-9]|9[1-7])[2-6]\\d{5}",[8]],["9(?:6[0-3]|7[024-6]|8[0-24-68])\\d{7}",[10]],["1(?:66001|800\\d\\d)\\d{5}",[11]]]],"NR":["674","00","(?:444|(?:55|8\\d)\\d|666)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[4-68]"]]],0,0,0,0,0,0,[["444\\d{4}"],["(?:55[3-9]|666|8\\d\\d)\\d{4}"]]],"NU":["683","00","(?:[47]|888\\d)\\d{3}",[4,7],[["(\\d{3})(\\d{4})","$1 $2",["8"]]],0,0,0,0,0,0,[["[47]\\d{3}",[4]],["888[4-9]\\d{3}",[7]]]],"NZ":["64","0(?:0|161)","[29]\\d{7,9}|50\\d{5}(?:\\d{2,3})?|6[0-35-9]\\d{6}|7\\d{7,8}|8\\d{4,9}|(?:11\\d|[34])\\d{7}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,8})","$1 $2",["8[1-579]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["50[036-8]|[89]0","50(?:[0367]|88)|[89]0"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["24|[346]|7[2-57-9]|9[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:10|74)|[59]|80"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1|2[028]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,5})","$1 $2 $3",["2(?:[169]|7[0-35-9])|7|86"],"0$1"]],"0",0,0,0,0,0,[["24099\\d{3}|(?:3[2-79]|[49][2-9]|6[235-9]|7[2-57-9])\\d{6}",[8]],["2[0-27-9]\\d{7,8}|21\\d{6}",[8,9,10]],["508\\d{6,7}|80\\d{6,8}",[8,9,10]],["(?:11\\d{5}|50(?:0[08]|30|66|77|88))\\d{3}|90\\d{6,8}",[7,8,9,10]],["70\\d{7}",[9]],0,["8(?:1[6-9]|22|3\\d|4[045]|5[459]|7[0-3579]|90)\\d{2,7}"],["[28]6\\d{6,7}",[8,9]]],"00"],"OM":["968","00","(?:1505|[279]\\d{3}|500)\\d{4}|800\\d{5,6}",[7,8,9],[["(\\d{3})(\\d{4,6})","$1 $2",["[58]"]],["(\\d{2})(\\d{6})","$1 $2",["2"]],["(\\d{4})(\\d{4})","$1 $2",["[179]"]]],0,0,0,0,0,0,[["2[2-6]\\d{6}",[8]],["1505\\d{4}|(?:7(?:[1289]\\d|7[0-4])|9(?:0[1-9]|[1-9]\\d))\\d{5}",[8]],["8007\\d{4,5}|(?:500|800[05])\\d{4}"],["900\\d{5}",[8]]]],"PA":["507","00","(?:00800|8\\d{3})\\d{6}|[68]\\d{7}|[1-57-9]\\d{6}",[7,8,10,11],[["(\\d{3})(\\d{4})","$1-$2",["[1-57-9]"]],["(\\d{4})(\\d{4})","$1-$2",["[68]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["(?:1(?:0\\d|1[479]|2[37]|3[0137]|4[17]|5[05]|6[58]|7[0167]|8[2358]|9[1389])|2(?:[0235-79]\\d|1[0-7]|4[013-9]|8[02-9])|3(?:[089]\\d|1[0-7]|2[0-5]|33|4[0-79]|5[0-35]|6[068]|7[0-8])|4(?:00|3[0-579]|4\\d|7[0-57-9])|5(?:[01]\\d|2[0-7]|[56]0|79)|7(?:0[09]|2[0-26-8]|3[03]|4[04]|5[05-9]|6[056]|7[0-24-9]|8[5-9]|90)|8(?:09|2[89]|3\\d|4[0-24-689]|5[014]|8[02])|9(?:0[5-9]|1[0135-8]|2[036-9]|3[35-79]|40|5[0457-9]|6[05-9]|7[04-9]|8[35-8]|9\\d))\\d{4}",[7]],["(?:1[16]1|21[89]|6\\d{3}|8(?:1[01]|7[23]))\\d{4}",[7,8]],["800\\d{4,5}|(?:00800|800\\d)\\d{6}"],["(?:8(?:22|55|60|7[78]|86)|9(?:00|81))\\d{4}",[7]]]],"PE":["51","00|19(?:1[124]|77|90)00","(?:[14-8]|9\\d)\\d{7}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["80"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["1"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[4-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"]]],"0",0,0,0,0,0,[["(?:(?:4[34]|5[14])[0-8]\\d|7(?:173|3[0-8]\\d)|8(?:10[05689]|6(?:0[06-9]|1[6-9]|29)|7(?:0[569]|[56]0)))\\d{4}|(?:1[0-8]|4[12]|5[236]|6[1-7]|7[246]|8[2-4])\\d{6}",[8]],["9\\d{8}",[9]],["800\\d{5}",[8]],["805\\d{5}",[8]],["80[24]\\d{5}",[8]],0,0,0,0,["801\\d{5}",[8]]],"00"," Anexo "],"PF":["689","00","4\\d{5}(?:\\d{2})?|8\\d{7,8}",[6,8,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["44"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4|8[7-9]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]],0,0,0,0,0,0,[["4(?:0[4-689]|9[4-68])\\d{5}",[8]],["8[7-9]\\d{6}",[8]],["80[0-5]\\d{6}",[9]],0,0,0,["44\\d{4}",[6]],0,["499\\d{5}",[8]]]],"PG":["675","00|140[1-3]","(?:180|[78]\\d{3})\\d{4}|(?:[2-589]\\d|64)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["18|[2-69]|85"]],["(\\d{4})(\\d{4})","$1 $2",["[78]"]]],0,0,0,0,0,0,[["(?:(?:3[0-2]|4[257]|5[34]|9[78])\\d|64[1-9]|85[02-46-9])\\d{4}",[7]],["(?:7\\d|8[128])\\d{6}",[8]],["180\\d{4}",[7]],0,0,0,0,["27[01]\\d{4}",[7]],["2(?:0[0-57]|7[568])\\d{4}",[7]]],"00"],"PH":["63","00","(?:[2-7]|9\\d)\\d{8}|2\\d{5}|(?:1800|8)\\d{7,9}",[6,8,9,10,11,12,13],[["(\\d)(\\d{5})","$1 $2",["2"],"(0$1)"],["(\\d{4})(\\d{4,6})","$1 $2",["3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2","3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))"],"(0$1)"],["(\\d{5})(\\d{4})","$1 $2",["346|4(?:27|9[35])|883","3469|4(?:279|9(?:30|56))|8834"],"(0$1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3-7]|8[2-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{4})(\\d{1,2})(\\d{3})(\\d{4})","$1 $2 $3 $4",["1"]]],"0",0,0,0,0,0,[["(?:(?:2[3-8]|3[2-68]|4[2-9]|5[2-6]|6[2-58]|7[24578])\\d{3}|88(?:22\\d\\d|42))\\d{4}|(?:2|8[2-8]\\d\\d)\\d{5}",[6,8,9,10]],["(?:8(?:1[37]|9[5-8])|9(?:0[5-9]|1[0-24-9]|[235-7]\\d|4[2-9]|8[135-9]|9[1-9]))\\d{7}",[10]],["1800\\d{7,9}",[11,12,13]]]],"PK":["92","00","122\\d{6}|[24-8]\\d{10,11}|9(?:[013-9]\\d{8,10}|2(?:[01]\\d\\d|2(?:[06-8]\\d|1[01]))\\d{7})|(?:[2-8]\\d{3}|92(?:[0-7]\\d|8[1-9]))\\d{6}|[24-9]\\d{8}|[89]\\d{7}",[8,9,10,11,12],[["(\\d{3})(\\d{3})(\\d{2,7})","$1 $2 $3",["[89]0"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["1"]],["(\\d{3})(\\d{6,7})","$1 $2",["2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])","9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]"],"(0$1)"],["(\\d{2})(\\d{7,8})","$1 $2",["(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]"],"(0$1)"],["(\\d{5})(\\d{5})","$1 $2",["58"],"(0$1)"],["(\\d{3})(\\d{7})","$1 $2",["3"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[24-9]"],"(0$1)"]],"0",0,0,0,0,0,[["(?:(?:21|42)[2-9]|58[126])\\d{7}|(?:2[25]|4[0146-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\\d{6,7}|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8]))[2-9]\\d{5,6}",[9,10]],["3(?:[0-24]\\d|3[0-7]|55|64)\\d{7}",[10]],["800\\d{5}(?:\\d{3})?",[8,11]],["900\\d{5}",[8]],["122\\d{6}",[9]],0,["(?:2(?:[125]|3[2358]|4[2-4]|9[2-8])|4(?:[0-246-9]|5[3479])|5(?:[1-35-7]|4[2-467])|6(?:0[468]|[1-8])|7(?:[14]|2[236])|8(?:[16]|2[2-689]|3[23578]|4[3478]|5[2356])|9(?:1|22|3[27-9]|4[2-6]|6[3569]|9[2-7]))111\\d{6}",[11,12]]]],"PL":["48","00","(?:6|8\\d\\d)\\d{7}|[1-9]\\d{6}(?:\\d{2})?|[26]\\d{5}",[6,7,8,9,10],[["(\\d{5})","$1",["19"]],["(\\d{3})(\\d{3})","$1 $2",["11|20|64"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1","(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19"]],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["64"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[2-8]|[2-7]|8[1-79]|9[145]"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["47\\d{7}|(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])(?:[02-9]\\d{6}|1(?:[0-8]\\d{5}|9\\d{3}(?:\\d{2})?))",[7,9]],["21(?:1(?:[145]\\d|3[1-5])|2[0-4]\\d)\\d{4}|(?:45|5[0137]|6[069]|7[2389]|88)\\d{7}",[9]],["800\\d{6,7}",[9,10]],["70[01346-8]\\d{6}",[9]],0,0,["804\\d{6}",[9]],["64\\d{4,7}",[6,7,8,9]],["39\\d{7}",[9]],["801\\d{6}",[9]]]],"PM":["508","00","(?:[45]|80\\d\\d)\\d{5}",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[45]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["(?:4[1-356]|50)\\d{4}",[6]],["(?:4[02-4]|5[056])\\d{4}",[6]],["80[0-5]\\d{6}",[9]]]],"PR":["1","011","(?:[589]\\d\\d|787)\\d{7}",[10],0,"1",0,0,0,0,"787|939",[["(?:787|939)[2-9]\\d{6}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"PS":["970","00","[2489]2\\d{6}|(?:1\\d|5)\\d{8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2489]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["5"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[["(?:22[2-47-9]|42[45]|82[014-68]|92[3569])\\d{5}",[8]],["5[69]\\d{7}",[9]],["1800\\d{6}",[10]],0,0,0,0,0,0,["1700\\d{6}",[10]]]],"PT":["351","00","1693\\d{5}|(?:[26-9]\\d|30)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["2[12]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["16|[236-9]"]]],0,0,0,0,0,0,[["2(?:[12]\\d|3[1-689]|4[1-59]|[57][1-9]|6[1-35689]|8[1-69]|9[1256])\\d{6}"],["6(?:[06]92(?:30|9\\d)|[35]92(?:3[03]|9\\d))\\d{3}|(?:(?:16|6[0356])93|9(?:[1-36]\\d\\d|480))\\d{5}"],["80[02]\\d{6}"],["(?:6(?:0[178]|4[68])\\d|76(?:0[1-57]|1[2-47]|2[237]))\\d{5}"],["884[0-4689]\\d{5}"],0,["70(?:7\\d|8[17])\\d{5}"],["6222\\d{5}"],["30\\d{7}"],["80(?:8\\d|9[1579])\\d{5}"]]],"PW":["680","01[12]","(?:[24-8]\\d\\d|345|900)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]],0,0,0,0,0,0,[["(?:2(?:55|77)|345|488|5(?:35|44|87)|6(?:22|54|79)|7(?:33|47)|8(?:24|55|76)|900)\\d{4}"],["(?:(?:46|83)[0-5]|6[2-4689]0)\\d{4}|(?:45|77|88)\\d{5}"]]],"PY":["595","00","59\\d{4,6}|9\\d{5,10}|(?:[2-46-8]\\d|5[0-8])\\d{4,7}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3,6})","$1 $2",["[2-9]0"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]"],"(0$1)"],["(\\d{3})(\\d{4,5})","$1 $2",["2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["87"]],["(\\d{3})(\\d{6})","$1 $2",["9(?:[5-79]|8[1-6])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["9"]]],"0",0,0,0,0,0,[["(?:[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36])\\d{5,7}|(?:2(?:2[4-68]|[4-68]\\d|7[15]|9[1-5])|3(?:18|3[167]|4[2357]|51|[67]\\d)|4(?:3[12]|5[13]|9[1-47])|5(?:[1-4]\\d|5[02-4])|6(?:3[1-3]|44|7[1-8])|7(?:4[0-4]|5\\d|6[1-578]|75|8[0-8])|858)\\d{5,6}",[7,8,9]],["9(?:51|6[129]|[78][1-6]|9[1-5])\\d{6}",[9]],["9800\\d{5,7}",[9,10,11]],0,0,0,["[2-9]0\\d{4,7}",[6,7,8,9]],0,["8700[0-4]\\d{4}",[9]]]],"QA":["974","00","[2-7]\\d{7}|800\\d{4}(?:\\d{2})?|2\\d{6}",[7,8,9],[["(\\d{3})(\\d{4})","$1 $2",["2[126]|8"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]]],0,0,0,0,0,0,[["414[1-4]\\d{4}|(?:23|4[04])\\d{6}",[8]],["(?:2[89]|[35-7]\\d)\\d{6}",[8]],["800\\d{4}(?:\\d{2})?",[7,9]],0,0,0,0,["2(?:[12]\\d|61)\\d{4}",[7]]]],"RE":["262","00","976\\d{6}|(?:26|[68]\\d)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2689]"],"0$1"]],"0",0,0,0,0,"26[23]|69|[89]",[["26(?:2\\d\\d|3(?:0\\d|1[01]))\\d{4}"],["(?:69(?:2\\d\\d|3(?:0[0-46]|1[013]|2[0-2]|3[0-39]|4\\d|5[0-5]|6[0-6]|7[0-27]|8[0-8]|9[0-479]))|976(?:2[27]|3[0-37]|9\\d))\\d{4}"],["80\\d{7}"],["89[1-37-9]\\d{6}"],0,0,0,0,0,["8(?:1[019]|2[0156]|84|90)\\d{6}"]]],"RO":["40","00","(?:[2378]\\d|90)\\d{7}|[23]\\d{5}",[6,9],[["(\\d{3})(\\d{3})","$1 $2",["2[3-6]","2[3-6]\\d9"],"0$1"],["(\\d{2})(\\d{4})","$1 $2",["219|31"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[23]1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[237-9]"],"0$1"]],"0",0,0,0,0,0,[["[23][13-6]\\d{7}|(?:2(?:19\\d|[3-6]\\d9)|31\\d\\d)\\d\\d"],["7020\\d{5}|7(?:0[013-9]|1[0-3]|[2-7]\\d|8[03-8]|9[019])\\d{6}",[9]],["800\\d{6}",[9]],["90[0136]\\d{6}",[9]],0,0,["(?:37\\d|80[578])\\d{6}",[9]],0,0,["801\\d{6}",[9]]],0," int "],"RS":["381","00","38[02-9]\\d{6,9}|6\\d{7,9}|90\\d{4,8}|38\\d{5,6}|(?:7\\d\\d|800)\\d{3,9}|(?:[12]\\d|3[0-79])\\d{5,10}",[6,7,8,9,10,11,12],[["(\\d{3})(\\d{3,9})","$1 $2",["(?:2[389]|39)0|[7-9]"],"0$1"],["(\\d{2})(\\d{5,10})","$1 $2",["[1-36]"],"0$1"]],"0",0,0,0,0,0,[["(?:11[1-9]\\d|(?:2[389]|39)(?:0[2-9]|[2-9]\\d))\\d{3,8}|(?:1[02-9]|2[0-24-7]|3[0-8])[2-9]\\d{4,9}",[7,8,9,10,11,12]],["6(?:[0-689]|7\\d)\\d{6,7}",[8,9,10]],["800\\d{3,9}"],["(?:78\\d|90[0169])\\d{3,7}",[6,7,8,9,10]],0,0,["7[06]\\d{4,10}"]]],"RU":["7","810","8\\d{13}|[347-9]\\d{9}",[10,14],[["(\\d{4})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-8]|2[1-9])","7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))","7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2"],"8 ($1)",1],["(\\d{5})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-68]|2[1-9])","7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))","7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[349]|8(?:[02-7]|1[1-8])"],"8 ($1)",1],["(\\d{4})(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3 $4",["8"],"8 ($1)"]],"8",0,0,0,0,"3[04-689]|[489]",[["(?:3(?:0[12]|4[1-35-79]|5[1-3]|65|8[1-58]|9[0145])|4(?:01|1[1356]|2[13467]|7[1-5]|8[1-7]|9[1-689])|8(?:1[1-8]|2[01]|3[13-6]|4[0-8]|5[15]|6[1-35-79]|7[1-37-9]))\\d{7}",[10]],["9\\d{9}",[10]],["8(?:0[04]|108\\d{3})\\d{7}"],["80[39]\\d{7}",[10]],["808\\d{7}",[10]]],"8~10"],"RW":["250","00","(?:06|[27]\\d\\d|[89]00)\\d{6}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"]]],"0",0,0,0,0,0,[["(?:06|2[23568]\\d)\\d{6}"],["7[2389]\\d{7}",[9]],["800\\d{6}",[9]],["900\\d{6}",[9]]]],"SA":["966","00","92\\d{7}|(?:[15]|8\\d)\\d{8}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["9"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["81"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]],"0",0,0,0,0,0,[["1(?:1\\d|2[24-8]|3[35-8]|4[3-68]|6[2-5]|7[235-7])\\d{6}",[9]],["579[01]\\d{5}|5(?:[013-689]\\d|7[0-35-8])\\d{6}",[9]],["800\\d{7}",[10]],["925\\d{6}",[9]],0,0,["811\\d{7}",[10]],0,0,["920\\d{6}",[9]]]],"SB":["677","0[01]","(?:[1-6]|[7-9]\\d\\d)\\d{4}",[5,7],[["(\\d{2})(\\d{5})","$1 $2",["7|8[4-9]|9(?:[1-8]|9[0-8])"]]],0,0,0,0,0,0,[["(?:1[4-79]|[23]\\d|4[0-2]|5[03]|6[0-37])\\d{3}",[5]],["48\\d{3}|(?:(?:7[1-9]|8[4-9])\\d|9(?:1[2-9]|2[013-9]|3[0-2]|[46]\\d|5[0-46-9]|7[0-689]|8[0-79]|9[0-8]))\\d{4}"],["1[38]\\d{3}",[5]],0,0,0,0,0,["5[12]\\d{3}",[5]]]],"SC":["248","010|0[0-2]","800\\d{4}|(?:[249]\\d|64)\\d{5}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[246]|9[57]"]]],0,0,0,0,0,0,[["4[2-46]\\d{5}"],["2[125-8]\\d{5}"],["800[08]\\d{3}"],0,0,0,0,0,["971\\d{4}|(?:64|95)\\d{5}"]],"00"],"SD":["249","00","[19]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[19]"],"0$1"]],"0",0,0,0,0,0,[["1(?:5\\d|8[35-7])\\d{6}"],["(?:1[0-2]|9[0-3569])\\d{7}"]]],"SE":["46","00","(?:[26]\\d\\d|9)\\d{9}|[1-9]\\d{8}|[1-689]\\d{7}|[1-4689]\\d{6}|2\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{2,3})(\\d{2})","$1-$2 $3",["20"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{4})","$1-$2",["9(?:00|39|44|9)"],"0$1",0,"$1 $2"],["(\\d{2})(\\d{3})(\\d{2})","$1-$2 $3",["[12][136]|3[356]|4[0246]|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3"],["(\\d)(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2,3})(\\d{2})","$1-$2 $3",["1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{2,3})(\\d{3})","$1-$2 $3",["9(?:00|39|44)"],"0$1",0,"$1 $2 $3"],["(\\d{2})(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3 $4"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["10|7"],"0$1",0,"$1 $2 $3 $4"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1-$2 $3 $4",["[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{3})","$1-$2 $3 $4",["9"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4 $5",["[26]"],"0$1",0,"$1 $2 $3 $4 $5"]],"0",0,0,0,0,0,[["(?:(?:[12][136]|3[356]|4[0246]|6[03]|8\\d)\\d|90[1-9])\\d{4,6}|(?:1(?:2[0-35]|4[0-4]|5[0-25-9]|7[13-6]|[89]\\d)|2(?:2[0-7]|4[0136-8]|5[0138]|7[018]|8[01]|9[0-57])|3(?:0[0-4]|1\\d|2[0-25]|4[056]|7[0-2]|8[0-3]|9[023])|4(?:1[013-8]|3[0135]|5[14-79]|7[0-246-9]|8[0156]|9[0-689])|5(?:0[0-6]|[15][0-5]|2[0-68]|3[0-4]|4\\d|6[03-5]|7[013]|8[0-79]|9[01])|6(?:1[1-3]|2[0-4]|4[02-57]|5[0-37]|6[0-3]|7[0-2]|8[0247]|9[0-356])|9(?:1[0-68]|2\\d|3[02-5]|4[0-3]|5[0-4]|[68][01]|7[0135-8]))\\d{5,6}",[7,8,9]],["7[02369]\\d{7}",[9]],["20\\d{4,7}",[6,7,8,9]],["649\\d{6}|99[1-59]\\d{4}(?:\\d{3})?|9(?:00|39|44)[1-8]\\d{3,6}",[7,8,9,10]],["75[1-8]\\d{6}",[9]],0,["10[1-8]\\d{6}",[9]],["74[02-9]\\d{6}",[9]],0,["77[0-7]\\d{6}",[9]]]],"SG":["65","0[0-3]\\d","(?:(?:1\\d|8)\\d\\d|7000)\\d{7}|[3689]\\d{7}",[8,10,11],[["(\\d{4})(\\d{4})","$1 $2",["[369]|8(?:0[1-5]|[1-9])"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]],["(\\d{4})(\\d{4})(\\d{3})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[["662[0-24-9]\\d{4}|6(?:[0-578]\\d|6[013-57-9]|9[0-35-9])\\d{5}",[8]],["8(?:05[0-7]|95[0-2])\\d{4}|(?:8(?:0[1-4]|[1-8]\\d|9[0-4])|9[0-8]\\d)\\d{5}",[8]],["(?:18|8)00\\d{7}",[10,11]],["1900\\d{7}",[11]],0,0,["7000\\d{7}",[11]],0,["(?:3[12]\\d|666)\\d{5}",[8]]]],"SH":["290","00","(?:[256]\\d|8)\\d{3}",[4,5],0,0,0,0,0,0,"[256]",[["2(?:[0-57-9]\\d|6[4-9])\\d\\d"],["[56]\\d{4}",[5]],0,0,0,0,0,0,["262\\d\\d",[5]]]],"SI":["386","00|10(?:22|66|88|99)","[1-7]\\d{7}|8\\d{4,7}|90\\d{4,6}",[5,6,7,8],[["(\\d{2})(\\d{3,6})","$1 $2",["8[09]|9"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["59|8"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37][01]|4[0139]|51|6"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-57]"],"(0$1)"]],"0",0,0,0,0,0,[["(?:[1-357][2-8]|4[24-8])\\d{6}",[8]],["65(?:1\\d|55|6[01]|70)\\d{4}|(?:[37][01]|4[0139]|51|6[489])\\d{6}",[8]],["80\\d{4,6}",[6,7,8]],["89[1-3]\\d{2,5}|90\\d{4,6}"],0,0,0,0,["(?:59\\d\\d|8(?:1(?:[67]\\d|8[0-589])|2(?:0\\d|2[0-37-9]|8[0-2489])|3[389]\\d))\\d{4}",[8]]],"00"],"SJ":["47","00","0\\d{4}|(?:[489]\\d|[57]9)\\d{6}",[5,8],0,0,0,0,0,0,"79",[["79\\d{6}",[8]],["(?:4[015-8]|59|9\\d)\\d{6}",[8]],["80[01]\\d{5}",[8]],["82[09]\\d{5}",[8]],["880\\d{5}",[8]],0,["(?:0[2-9]|81(?:0(?:0[7-9]|1\\d)|5\\d\\d))\\d{3}"],0,["85[0-5]\\d{5}",[8]],["810(?:0[0-6]|[2-8]\\d)\\d{3}",[8]]]],"SK":["421","00","[2-689]\\d{8}|[2-59]\\d{6}|[2-5]\\d{5}",[6,7,9],[["(\\d)(\\d{2})(\\d{3,4})","$1 $2 $3",["21"],"0$1"],["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["[3-5][1-8]1","[3-5][1-8]1[67]"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1/$2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[689]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1/$2 $3 $4",["[3-5]"],"0$1"]],"0",0,0,0,0,0,[["(?:2(?:16|[2-9]\\d{3})|(?:(?:[3-5][1-8]\\d|819)\\d|601[1-5])\\d)\\d{4}|(?:2|[3-5][1-8])1[67]\\d{3}|[3-5][1-8]16\\d\\d"],["909[1-9]\\d{5}|9(?:0[1-8]|1[0-24-9]|4[03-57-9]|5\\d)\\d{6}",[9]],["800\\d{6}",[9]],["9(?:00|[78]\\d)\\d{6}",[9]],0,0,["96\\d{7}",[9]],["9090\\d{3}",[7]],["6(?:02|5[0-4]|9[0-6])\\d{6}",[9]],["8[5-9]\\d{7}",[9]]]],"SL":["232","00","(?:[237-9]\\d|66)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[236-9]"],"(0$1)"]],"0",0,0,0,0,0,[["22[2-4][2-9]\\d{4}"],["(?:25|3[0-5]|66|7[2-9]|8[08]|9[09])\\d{6}"]]],"SM":["378","00","(?:0549|[5-7]\\d)\\d{6}",[8,10],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-7]"]],["(\\d{4})(\\d{6})","$1 $2",["0"]]],0,0,"([89]\\d{5})$","0549$1",0,0,[["0549(?:8[0157-9]|9\\d)\\d{4}",[10]],["6[16]\\d{6}",[8]],0,["7[178]\\d{6}",[8]],0,0,0,0,["5[158]\\d{6}",[8]]]],"SN":["221","00","(?:[378]\\d|93)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[379]"]]],0,0,0,0,0,0,[["3(?:0(?:1[0-2]|80)|282|3(?:8[1-9]|9[3-9])|611)\\d{5}"],["7(?:(?:[06-8]\\d|21|90)\\d|5(?:01|[19]0|25|[38]3|[4-7]\\d))\\d{5}"],["800\\d{6}"],["88[4689]\\d{6}"],0,0,0,0,["(?:3(?:392|9[01]\\d)\\d|93(?:3[13]0|929))\\d{4}"],["81[02468]\\d{6}"]]],"SO":["252","00","[346-9]\\d{8}|[12679]\\d{7}|[1-5]\\d{6}|[1348]\\d{5}",[6,7,8,9],[["(\\d{2})(\\d{4})","$1 $2",["8[125]"]],["(\\d{6})","$1",["[134]"]],["(\\d)(\\d{6})","$1 $2",["[15]|2[0-79]|3[0-46-8]|4[0-7]"]],["(\\d)(\\d{7})","$1 $2",["24|[67]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3478]|64|90"]],["(\\d{2})(\\d{5,7})","$1 $2",["1|28|6(?:0[5-7]|[1-35-9])|9[2-9]"]]],"0",0,0,0,0,0,[["(?:1\\d|2[0-79]|3[0-46-8]|4[0-7]|5[57-9])\\d{5}|(?:[134]\\d|8[125])\\d{4}",[6,7]],["(?:(?:15|(?:3[59]|4[89]|79|8[08])\\d|6(?:0[5-7]|[1-9]\\d)|9(?:0\\d|[2-9]))\\d|2(?:4\\d|8))\\d{5}|[67]\\d{7}",[7,8,9]]]],"SR":["597","00","(?:[2-5]|68|[78]\\d)\\d{5}",[6,7],[["(\\d{2})(\\d{2})(\\d{2})","$1-$2-$3",["56"]],["(\\d{3})(\\d{3})","$1-$2",["[2-5]"]],["(\\d{3})(\\d{4})","$1-$2",["[6-8]"]]],0,0,0,0,0,0,[["(?:2[1-3]|3[0-7]|(?:4|68)\\d|5[2-58])\\d{4}"],["(?:7[124-7]|8[124-9])\\d{5}",[7]],0,0,0,0,0,0,["56\\d{4}",[6]]]],"SS":["211","00","[19]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[19]"],"0$1"]],"0",0,0,0,0,0,[["1[89]\\d{7}"],["(?:12|9[1257-9])\\d{7}"]]],"ST":["239","00","(?:22|9\\d)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[29]"]]],0,0,0,0,0,0,[["22\\d{5}"],["900[5-9]\\d{3}|9(?:0[1-9]|[89]\\d)\\d{4}"]]],"SV":["503","00","[267]\\d{7}|[89]00\\d{4}(?:\\d{4})?",[7,8,11],[["(\\d{3})(\\d{4})","$1 $2",["[89]"]],["(\\d{4})(\\d{4})","$1 $2",["[267]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[89]"]]],0,0,0,0,0,0,[["2(?:[1-6]\\d{3}|[79]90[034]|890[0245])\\d{3}",[8]],["66(?:[02-9]\\d\\d|1(?:[02-9]\\d|16))\\d{3}|(?:6[0-57-9]|7\\d)\\d{6}",[8]],["800\\d{4}(?:\\d{4})?",[7,11]],["900\\d{4}(?:\\d{4})?",[7,11]]]],"SX":["1","011","7215\\d{6}|(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|(5\\d{6})$","721$1",0,"721",[["7215(?:4[2-8]|8[239]|9[056])\\d{4}"],["7215(?:1[02]|2\\d|5[034679]|8[014-8])\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"SY":["963","00","[1-39]\\d{8}|[1-5]\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-5]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1",1]],"0",0,0,0,0,0,[["21\\d{6,7}|(?:1(?:[14]\\d|[2356])|2[235]|3(?:[13]\\d|4)|4[134]|5[1-3])\\d{6}"],["9[1-689]\\d{7}",[9]]]],"SZ":["268","00","0800\\d{4}|(?:[237]\\d|900)\\d{6}",[8,9],[["(\\d{4})(\\d{4})","$1 $2",["[0237]"]],["(\\d{5})(\\d{4})","$1 $2",["9"]]],0,0,0,0,0,0,[["[23][2-5]\\d{6}",[8]],["7[6-9]\\d{6}",[8]],["0800\\d{4}",[8]],["900\\d{6}",[9]],0,0,0,0,["70\\d{6}",[8]]]],"TA":["290","00","8\\d{3}",[4],0,0,0,0,0,0,"8",[["8\\d{3}"]]],"TC":["1","011","(?:[58]\\d\\d|649|900)\\d{7}",[10],0,"1",0,"1|([2-479]\\d{6})$","649$1",0,"649",[["649(?:266|712|9(?:4\\d|50))\\d{4}"],["649(?:2(?:3[129]|4[1-79])|3\\d\\d|4[34][1-3])\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,0,0,["649(?:71[01]|966)\\d{4}"]]],"TD":["235","00|16","(?:22|[69]\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2679]"]]],0,0,0,0,0,0,[["22(?:[37-9]0|5[0-5]|6[89])\\d{4}"],["(?:6[023568]|77|9\\d)\\d{6}"]],"00"],"TG":["228","00","[279]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[279]"]]],0,0,0,0,0,0,[["2(?:2[2-7]|3[23]|4[45]|55|6[67]|77)\\d{5}"],["(?:7[09]|9[0-36-9])\\d{6}"]]],"TH":["66","00[1-9]","(?:001800|[2-57]|[689]\\d)\\d{7}|1\\d{7,9}",[8,9,10,13],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[13-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[["(?:1[0689]|2\\d|3[2-9]|4[2-5]|5[2-6]|7[3-7])\\d{6}",[8]],["671[0-8]\\d{5}|(?:14|6[1-6]|[89]\\d)\\d{7}",[9]],["(?:001800\\d|1800)\\d{6}",[10,13]],["1900\\d{6}",[10]],0,0,0,0,["6[08]\\d{7}",[9]]]],"TJ":["992","810","(?:00|[1-57-9]\\d)\\d{7}",[9],[["(\\d{6})(\\d)(\\d{2})","$1 $2 $3",["331","3317"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[34]7|91[78]"]],["(\\d{4})(\\d)(\\d{4})","$1 $2 $3",["3[1-5]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[0-57-9]"]]],0,0,0,0,0,0,[["(?:3(?:1[3-5]|2[245]|3[12]|4[24-7]|5[25]|72)|4(?:46|74|87))\\d{6}"],["41[18]\\d{6}|(?:[034]0|[17][017]|2[02]|5[05]|8[08]|9\\d)\\d{7}"]],"8~10"],"TK":["690","00","[2-47]\\d{3,6}",[4,5,6,7],0,0,0,0,0,0,0,[["(?:2[2-4]|[34]\\d)\\d{2,5}"],["7[2-4]\\d{2,5}"]]],"TL":["670","00","7\\d{7}|(?:[2-47]\\d|[89]0)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[2-489]|70"]],["(\\d{4})(\\d{4})","$1 $2",["7"]]],0,0,0,0,0,0,[["(?:2[1-5]|3[1-9]|4[1-4])\\d{5}",[7]],["7[2-8]\\d{6}",[8]],["80\\d{5}",[7]],["90\\d{5}",[7]],["70\\d{5}",[7]]]],"TM":["993","810","[1-6]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["12"],"(8 $1)"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-5]"],"(8 $1)"],["(\\d{2})(\\d{6})","$1 $2",["6"],"8 $1"]],"8",0,0,0,0,0,[["(?:1(?:2\\d|3[1-9])|2(?:22|4[0-35-8])|3(?:22|4[03-9])|4(?:22|3[128]|4\\d|6[15])|5(?:22|5[7-9]|6[014-689]))\\d{5}"],["6\\d{7}"]],"8~10"],"TN":["216","00","[2-57-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-57-9]"]]],0,0,0,0,0,0,[["81200\\d{3}|(?:3[0-2]|7\\d)\\d{6}"],["3(?:001|[12]40)\\d{4}|(?:(?:[259]\\d|4[0-7])\\d|3(?:1[1-35]|6[0-4]|91))\\d{5}"],["8010\\d{4}"],["88\\d{6}"],0,0,0,0,0,["8[12]10\\d{4}"]]],"TO":["676","00","(?:0800|(?:[5-8]\\d\\d|999)\\d)\\d{3}|[2-8]\\d{4}",[5,7],[["(\\d{2})(\\d{3})","$1-$2",["[2-4]|50|6[09]|7[0-24-69]|8[05]"]],["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{3})(\\d{4})","$1 $2",["[5-9]"]]],0,0,0,0,0,0,[["(?:2\\d|3[0-8]|4[0-4]|50|6[09]|7[0-24-69]|8[05])\\d{3}",[5]],["(?:55[4-6]|6(?:[09]\\d|3[02]|8[15-9])|(?:7\\d|8[46-9])\\d|999)\\d{4}",[7]],["0800\\d{3}",[7]],0,0,0,0,0,["55[0-37-9]\\d{4}",[7]]]],"TR":["90","00","4\\d{6}|8\\d{11,12}|(?:[2-58]\\d\\d|900)\\d{7}",[7,10,12,13],[["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["512|8[01589]|90"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5(?:[0-59]|61)","5(?:[0-59]|616)","5(?:[0-59]|6161)"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24][1-8]|3[1-9]"],"(0$1)",1],["(\\d{3})(\\d{3})(\\d{6,7})","$1 $2 $3",["80"],"0$1",1]],"0",0,0,0,0,0,[["(?:2(?:[13][26]|[28][2468]|[45][268]|[67][246])|3(?:[13][28]|[24-6][2468]|[78][02468]|92)|4(?:[16][246]|[23578][2468]|4[26]))\\d{7}",[10]],["56161\\d{5}|5(?:0[15-7]|1[06]|24|[34]\\d|5[1-59]|9[46])\\d{7}",[10]],["8(?:00\\d{7}(?:\\d{2,3})?|11\\d{7})",[10,12,13]],["(?:8[89]8|900)\\d{7}",[10]],["592(?:21[12]|461)\\d{4}",[10]],0,["444\\d{4}",[7]],["512\\d{7}",[10]],["850\\d{7}",[10]]]],"TT":["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-46-8]\\d{6})$","868$1",0,"868",[["868(?:2(?:01|1[5-9]|[23]\\d|4[0-2])|6(?:0[7-9]|1[02-8]|2[1-9]|[3-69]\\d|7[0-79])|82[124])\\d{4}"],["868(?:(?:2[5-9]|3\\d)\\d|4(?:3[0-6]|[6-9]\\d)|6(?:20|78|8\\d)|7(?:0[1-9]|1[02-9]|[2-9]\\d))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"TV":["688","00","(?:2|7\\d\\d|90)\\d{4}",[5,6,7],[["(\\d{2})(\\d{3})","$1 $2",["2"]],["(\\d{2})(\\d{4})","$1 $2",["90"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]],0,0,0,0,0,0,[["2[02-9]\\d{3}",[5]],["(?:7[01]\\d|90)\\d{4}",[6,7]]]],"TW":["886","0(?:0[25-79]|19)","[2-689]\\d{8}|7\\d{9,10}|[2-8]\\d{7}|2\\d{6}",[7,8,9,10,11],[["(\\d{2})(\\d)(\\d{4})","$1 $2 $3",["202"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[258]0"],"0$1"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]","[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,5})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[["(?:2[2-8]\\d|370|55[01]|7[1-9])\\d{6}|4(?:(?:0(?:0[1-9]|[2-48]\\d)|1[023]\\d)\\d{4,5}|(?:[239]\\d\\d|4(?:0[56]|12|49))\\d{5})|6(?:[01]\\d{7}|4(?:0[56]|12|24|4[09])\\d{4,5})|8(?:(?:2(?:3\\d|4[0-269]|[578]0|66)|36[24-9]|90\\d\\d)\\d{4}|4(?:0[56]|12|24|4[09])\\d{4,5})|(?:2(?:2(?:0\\d\\d|4(?:0[68]|[249]0|3[0-467]|5[0-25-9]|6[0235689]))|(?:3(?:[09]\\d|1[0-4])|(?:4\\d|5[0-49]|6[0-29]|7[0-5])\\d)\\d)|(?:(?:3[2-9]|5[2-8]|6[0-35-79]|8[7-9])\\d\\d|4(?:2(?:[089]\\d|7[1-9])|(?:3[0-4]|[78]\\d|9[01])\\d))\\d)\\d{3}",[8,9]],["(?:40001[0-2]|9[0-8]\\d{4})\\d{3}",[9]],["80[0-79]\\d{6}|800\\d{5}",[8,9]],["20(?:[013-9]\\d\\d|2)\\d{4}",[7,9]],["99\\d{7}",[9]],0,["50[0-46-9]\\d{6}",[9]],0,["7010(?:[0-2679]\\d|3[0-7]|8[0-5])\\d{5}|70\\d{8}",[10,11]]],0,"#"],"TZ":["255","00[056]","(?:[25-8]\\d|41|90)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[24]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["5"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[67]"],"0$1"]],"0",0,0,0,0,0,[["2[2-8]\\d{7}"],["77[2-9]\\d{6}|(?:6[125-9]|7[13-689])\\d{7}"],["80[08]\\d{6}"],["90\\d{7}"],0,0,0,0,["41\\d{7}"],["8(?:40|6[01])\\d{6}"]]],"UA":["380","00","[89]\\d{9}|[3-9]\\d{8}",[9,10],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]","6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])","3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3-7]|89|9[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,[["(?:3[1-8]|4[13-8]|5[1-7]|6[12459])\\d{7}",[9]],["(?:39|50|6[36-8]|7[1-3]|9[1-9])\\d{7}",[9]],["800[1-8]\\d{5,6}"],["900[239]\\d{5,6}"],0,0,0,0,["89[1-579]\\d{6}",[9]]],"0~0"],"UG":["256","00[057]","800\\d{6}|(?:[29]0|[347]\\d)\\d{7}",[9],[["(\\d{4})(\\d{5})","$1 $2",["202","2024"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[27-9]|4(?:6[45]|[7-9])"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[34]"],"0$1"]],"0",0,0,0,0,0,[["20(?:(?:240|30[67])\\d|6(?:00[0-2]|30[0-4]))\\d{3}|(?:20(?:[017]\\d|2[5-9]|32|5[0-4]|6[15-9])|[34]\\d{3})\\d{5}"],["726[01]\\d{5}|7(?:[01578]\\d|20|36|[46][0-4]|9[89])\\d{6}"],["800[1-3]\\d{5}"],["90[1-3]\\d{6}"]]],"US":["1","011","[2-9]\\d{9}|3\\d{6}",[10],[["(\\d{3})(\\d{4})","$1-$2",["310"],0,1],["(\\d{3})(\\d{3})(\\d{4})","($1) $2-$3",["[2-9]"],0,1,"$1-$2-$3"]],"1",0,0,0,0,0,[["505(?:[2-57-9]\\d\\d|6(?:[0-35-9]\\d|44))\\d{4}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[01679]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[068]|3[0-289]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-389]|8[04-69]))[2-9]\\d{6}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"UY":["598","0(?:0|1[3-9]\\d)","4\\d{9}|[1249]\\d{7}|(?:[49]\\d|80)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["405|8|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[124]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["4"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:770|987)|(?:2\\d|4[2-7])\\d\\d)\\d{4}",[8]],["9[1-9]\\d{6}",[8]],["(?:4\\d{5}|80[05])\\d{4}|405\\d{4}",[7,10]],["90[0-8]\\d{4}",[7]]],"00"," int. "],"UZ":["998","810","(?:33|55|[679]\\d|88)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[35-9]"],"8 $1"]],"8",0,0,0,0,0,[["(?:6(?:1(?:22|3[124]|4[1-4]|5[1-3578]|64)|2(?:22|3[0-57-9]|41)|5(?:22|3[3-7]|5[024-8])|6\\d\\d|7(?:[23]\\d|7[69])|9(?:22|4[1-8]|6[135]))|7(?:0(?:5[4-9]|6[0146]|7[124-6]|9[135-8])|(?:1[12]|8\\d)\\d|2(?:22|3[13-57-9]|4[1-3579]|5[14])|3(?:2\\d|3[1578]|4[1-35-7]|5[1-57]|61)|4(?:2\\d|3[1-579]|7[1-79])|5(?:22|5[1-9]|6[1457])|6(?:22|3[12457]|4[13-8])|9(?:22|5[1-9])))\\d{5}"],["(?:(?:33|88|9[0-57-9])\\d{3}|55(?:50[013]|90\\d)|6(?:1(?:2(?:2[01]|98)|35[0-4]|50\\d|61[23]|7(?:[01][017]|4\\d|55|9[5-9]))|2(?:(?:11|7\\d)\\d|2(?:[12]1|9[01379])|5(?:[126]\\d|3[0-4]))|5(?:19[01]|2(?:27|9[26])|(?:30|59|7\\d)\\d)|6(?:2(?:1[5-9]|2[0367]|38|41|52|60)|(?:3[79]|9[0-3])\\d|4(?:56|83)|7(?:[07]\\d|1[017]|3[07]|4[047]|5[057]|67|8[0178]|9[79]))|7(?:2(?:24|3[237]|4[5-9]|7[15-8])|5(?:7[12]|8[0589])|7(?:0\\d|[39][07])|9(?:0\\d|7[079]))|9(?:2(?:1[1267]|3[01]|5\\d|7[0-4])|(?:5[67]|7\\d)\\d|6(?:2[0-26]|8\\d)))|7(?:[07]\\d{3}|1(?:13[01]|6(?:0[47]|1[67]|66)|71[3-69]|98\\d)|2(?:2(?:2[79]|95)|3(?:2[5-9]|6[0-6])|57\\d|7(?:0\\d|1[17]|2[27]|3[37]|44|5[057]|66|88))|3(?:2(?:1[0-6]|21|3[469]|7[159])|(?:33|9[4-6])\\d|5(?:0[0-4]|5[579]|9\\d)|7(?:[0-3579]\\d|4[0467]|6[67]|8[078]))|4(?:2(?:29|5[0257]|6[0-7]|7[1-57])|5(?:1[0-4]|8\\d|9[5-9])|7(?:0\\d|1[024589]|2[0-27]|3[0137]|[46][07]|5[01]|7[5-9]|9[079])|9(?:7[015-9]|[89]\\d))|5(?:112|2(?:0\\d|2[29]|[49]4)|3[1568]\\d|52[6-9]|7(?:0[01578]|1[017]|[23]7|4[047]|[5-7]\\d|8[78]|9[079]))|6(?:2(?:2[1245]|4[2-4])|39\\d|41[179]|5(?:[349]\\d|5[0-2])|7(?:0[017]|[13]\\d|22|44|55|67|88))|9(?:22[128]|3(?:2[0-4]|7\\d)|57[02569]|7(?:2[05-9]|3[37]|4\\d|60|7[2579]|87|9[07]))))\\d{4}"]],"8~10"],"VA":["39","00","0\\d{5,10}|3[0-8]\\d{7,10}|55\\d{8}|8\\d{5}(?:\\d{2,4})?|(?:1\\d|39)\\d{7,8}",[6,7,8,9,10,11],0,0,0,0,0,0,"06698",[["06698\\d{1,6}"],["3[1-9]\\d{8}|3[2-9]\\d{7}",[9,10]],["80(?:0\\d{3}|3)\\d{3}",[6,9]],["(?:0878\\d{3}|89(?:2\\d|3[04]|4(?:[0-4]|[5-9]\\d\\d)|5[0-4]))\\d\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\d{6}",[6,8,9,10]],["1(?:78\\d|99)\\d{6}",[9,10]],0,0,0,["55\\d{8}",[10]],["84(?:[08]\\d{3}|[17])\\d{3}",[6,9]]]],"VC":["1","011","(?:[58]\\d\\d|784|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","784$1",0,"784",[["784(?:266|3(?:6[6-9]|7\\d|8[0-6])|4(?:38|5[0-36-8]|8[0-8])|5(?:55|7[0-2]|93)|638|784)\\d{4}"],["784(?:4(?:3[0-5]|5[45]|89|9[0-8])|5(?:2[6-9]|3[0-4])|720)\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,0,0,["78451[0-2]\\d{4}"]]],"VE":["58","00","[68]00\\d{7}|(?:[24]\\d|[59]0)\\d{8}",[10],[["(\\d{3})(\\d{7})","$1-$2",["[24-689]"],"0$1"]],"0",0,0,0,0,0,[["(?:2(?:12|3[457-9]|[467]\\d|[58][1-9]|9[1-6])|[4-6]00)\\d{7}"],["4(?:1[24-8]|2[46])\\d{7}"],["800\\d{7}"],["90[01]\\d{7}"],0,0,["501\\d{7}"]]],"VG":["1","011","(?:284|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-578]\\d{6})$","284$1",0,"284",[["284496[0-5]\\d{3}|284(?:229|4(?:22|9[45])|774|8(?:52|6[459]))\\d{4}"],["284496[6-9]\\d{3}|284(?:245|3(?:0[0-3]|4[0-7]|68|9[34])|4(?:4[0-6]|68|99)|5(?:4[0-7]|68|9[69]))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"VI":["1","011","[58]\\d{9}|(?:34|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","340$1",0,"340",[["340(?:2(?:0[0-38]|2[06-8]|4[49]|77)|3(?:32|44)|4(?:2[23]|44|7[34]|89)|5(?:1[34]|55)|6(?:2[56]|4[23]|77|9[023])|7(?:1[2-57-9]|2[57]|7\\d)|884|998)\\d{4}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"VN":["84","00","[12]\\d{9}|[135-9]\\d{8}|[16]\\d{7}|[16-8]\\d{6}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["80"],"0$1",1],["(\\d{4})(\\d{4,6})","$1 $2",["1"],0,1],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[69]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3578]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["2[48]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["2"],"0$1",1]],"0",0,0,0,0,0,[["2(?:0[3-9]|1[0-689]|2[0-25-9]|3[2-9]|4[2-8]|5[124-9]|6[0-39]|7[0-7]|8[2-79]|9[0-4679])\\d{7}",[10]],["(?:5(?:2[238]|59)|89[6-9]|99[013-9])\\d{6}|(?:3\\d|5[689]|7[06-9]|8[1-8]|9[0-8])\\d{7}",[9]],["1800\\d{4,6}|12(?:0[13]|28)\\d{4}",[8,9,10]],["1900\\d{4,6}",[8,9,10]],0,0,["(?:[17]99|80\\d)\\d{4}|69\\d{5,6}",[7,8]],0,["672\\d{6}",[9]]]],"VU":["678","00","[57-9]\\d{6}|(?:[238]\\d|48)\\d{3}",[5,7],[["(\\d{3})(\\d{4})","$1 $2",["[57-9]"]]],0,0,0,0,0,0,[["(?:38[0-8]|48[4-9])\\d\\d|(?:2[02-9]|3[4-7]|88)\\d{3}",[5]],["(?:[58]\\d|7[013-7])\\d{5}",[7]],["81[18]\\d\\d",[5]],0,0,0,["(?:3[03]|900\\d)\\d{3}"],0,["9(?:0[1-9]|1[01])\\d{4}",[7]]]],"WF":["681","00","(?:40|72)\\d{4}|8\\d{5}(?:\\d{3})?",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[478]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]],0,0,0,0,0,0,[["72\\d{4}",[6]],["(?:72|8[23])\\d{4}",[6]],["80[0-5]\\d{6}",[9]]]],"WS":["685","0","(?:[2-6]|8\\d{5})\\d{4}|[78]\\d{6}|[68]\\d{5}",[5,6,7,10],[["(\\d{5})","$1",["[2-5]|6[1-9]"]],["(\\d{3})(\\d{3,7})","$1 $2",["[68]"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]],0,0,0,0,0,0,[["6[1-9]\\d{3}|(?:[2-5]|60)\\d{4}",[5,6]],["(?:7[1-35-7]|8(?:[3-7]|9\\d{3}))\\d{5}",[7,10]],["800\\d{3}",[6]]]],"XK":["383","00","[23]\\d{7,8}|(?:4\\d\\d|[89]00)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[23]"],"0$1"]],"0",0,0,0,0,0,[["(?:2[89]|39)0\\d{6}|[23][89]\\d{6}"],["4[3-9]\\d{6}",[8]],["800\\d{5}",[8]],["900\\d{5}",[8]]]],"YE":["967","00","(?:1|7\\d)\\d{7}|[1-7]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-6]|7[24-68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[["78[0-7]\\d{4}|17\\d{6}|(?:[12][2-68]|3[2358]|4[2-58]|5[2-6]|6[3-58]|7[24-6])\\d{5}",[7,8]],["7[0137]\\d{7}",[9]]]],"YT":["262","00","80\\d{7}|(?:26|63)9\\d{6}",[9],0,"0",0,0,0,0,"269|63",[["269(?:0[0-367]|5[0-3]|6\\d|[78]0)\\d{4}"],["639(?:0[0-79]|1[019]|[267]\\d|3[09]|40|5[05-9]|9[04-79])\\d{4}"],["80\\d{7}"]]],"ZA":["27","00","[1-79]\\d{8}|8\\d{4,9}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,4})","$1 $2",["8[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["8[1-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["860"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0",0,0,0,0,0,[["(?:2(?:0330|4302)|52087)0\\d{3}|(?:1[0-8]|2[1-378]|3[1-69]|4\\d|5[1346-8])\\d{7}",[9]],["(?:1(?:3492[0-25]|4495[0235]|549(?:20|5[01]))|4[34]492[01])\\d{3}|8[1-4]\\d{3,7}|(?:2[27]|47|54)4950\\d{3}|(?:1(?:049[2-4]|9[12]\\d\\d)|(?:6\\d|7[0-46-9])\\d{3}|8(?:5\\d{3}|7(?:08[67]|158|28[5-9]|310)))\\d{4}|(?:1[6-8]|28|3[2-69]|4[025689]|5[36-8])4920\\d{3}|(?:12|[2-5]1)492\\d{4}",[5,6,7,8,9]],["80\\d{7}",[9]],["(?:86[2-9]|9[0-2]\\d)\\d{6}",[9]],0,0,["861\\d{6,7}",[9,10]],0,["87(?:08[0-589]|15[0-79]|28[0-4]|31[1-9])\\d{4}|87(?:[02][0-79]|1[0-46-9]|3[02-9]|[4-9]\\d)\\d{5}",[9]],["860\\d{6}",[9]]]],"ZM":["260","00","800\\d{6}|(?:21|63|[79]\\d)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[28]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[79]"],"0$1"]],"0",0,0,0,0,0,[["21[1-8]\\d{6}"],["(?:7[5-79]|9[5-8])\\d{7}"],["800\\d{6}"],0,0,0,0,0,["63\\d{7}"]]],"ZW":["263","00","2(?:[0-57-9]\\d{6,8}|6[0-24-9]\\d{6,7})|[38]\\d{9}|[35-8]\\d{8}|[3-6]\\d{7}|[1-689]\\d{6}|[1-3569]\\d{5}|[1356]\\d{4}",[5,6,7,8,9,10],[["(\\d{3})(\\d{3,5})","$1 $2",["2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]"],"0$1"],["(\\d)(\\d{3})(\\d{2,4})","$1 $2 $3",["[49]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["80"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2","2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)","2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["29[013-9]|39|54"],"0$1"],["(\\d{4})(\\d{3,5})","$1 $2",["(?:25|54)8","258|5483"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:(?:3\\d|9)\\d|[4-8])|2(?:(?:(?:0(?:2[014]|5)|(?:2[0157]|31|84|9)\\d\\d|[56](?:[14]\\d\\d|20)|7(?:[089]|2[03]|[35]\\d\\d))\\d|4(?:2\\d\\d|8))\\d|1(?:2|[39]\\d{4}))|3(?:(?:123|(?:29\\d|92)\\d)\\d\\d|7(?:[19]|[56]\\d))|5(?:0|1[2-478]|26|[37]2|4(?:2\\d{3}|83)|5(?:25\\d\\d|[78])|[689]\\d)|6(?:(?:[16-8]21|28|52[013])\\d\\d|[39])|8(?:[1349]28|523)\\d\\d)\\d{3}|(?:4\\d\\d|9[2-9])\\d{4,5}|(?:(?:2(?:(?:(?:0|8[146])\\d|7[1-7])\\d|2(?:[278]\\d|92)|58(?:2\\d|3))|3(?:[26]|9\\d{3})|5(?:4\\d|5)\\d\\d)\\d|6(?:(?:(?:[0-246]|[78]\\d)\\d|37)\\d|5[2-8]))\\d\\d|(?:2(?:[569]\\d|8[2-57-9])|3(?:[013-59]\\d|8[37])|6[89]8)\\d{3}"],["7(?:[178]\\d|3[1-9])\\d{6}",[9]],["80(?:[01]\\d|20|8[0-8])\\d{3}",[7]],0,0,0,0,0,["86(?:1[12]|22|30|44|55|77|8[368])\\d{6}",[10]]]]},"nonGeographic":{"800":["800",0,"(?:00|[1-9]\\d)\\d{6}",[8],[["(\\d{4})(\\d{4})","$1 $2",["\\d"]]],0,0,0,0,0,0,[0,0,["(?:00|[1-9]\\d)\\d{6}"]]],"808":["808",0,"[1-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[1-9]"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,["[1-9]\\d{7}"]]],"870":["870",0,"7\\d{11}|[35-7]\\d{8}",[9,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[35-7]"]]],0,0,0,0,0,0,[0,["(?:[356]|774[45])\\d{8}|7[6-8]\\d{7}"]]],"878":["878",0,"10\\d{10}",[12],[["(\\d{2})(\\d{5})(\\d{5})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["10\\d{10}"]]],"881":["881",0,"[0-36-9]\\d{8}",[9],[["(\\d)(\\d{3})(\\d{5})","$1 $2 $3",["[0-36-9]"]]],0,0,0,0,0,0,[0,["[0-36-9]\\d{8}"]]],"882":["882",0,"[13]\\d{6}(?:\\d{2,5})?|285\\d{9}|(?:[19]\\d|49)\\d{6}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5})","$1 $2",["16|342"]],["(\\d{2})(\\d{6})","$1 $2",["4"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[19]"]],["(\\d{2})(\\d{4})(\\d{3})","$1 $2 $3",["3[23]"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["34[57]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["34"]],["(\\d{2})(\\d{4,5})(\\d{5})","$1 $2 $3",["[1-3]"]]],0,0,0,0,0,0,[0,["342\\d{4}|(?:337|49)\\d{6}|3(?:2|47|7\\d{3})\\d{7}",[7,8,9,10,12]],0,0,0,0,0,0,["1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\d{4}|6\\d{5,10})|(?:(?:285\\d\\d|3(?:45|[69]\\d{3}))\\d|9[89])\\d{6}"]]],"883":["883",0,"(?:210|370\\d\\d)\\d{7}|51\\d{7}(?:\\d{3})?",[9,10,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["510"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["2"]],["(\\d{4})(\\d{4})(\\d{4})","$1 $2 $3",["51[13]"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[35]"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["(?:210|(?:370[1-9]|51[013]0)\\d)\\d{7}|5100\\d{5}"]]],"888":["888",0,"\\d{11}",[11],[["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3"]],0,0,0,0,0,0,[0,0,0,0,0,0,["\\d{11}"]]],"979":["979",0,"[1359]\\d{8}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[1359]"]]],0,0,0,0,0,0,[0,0,0,["[1359]\\d{8}"]]]}} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.full.json.d.ts b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.full.json.d.ts new file mode 100644 index 00000000..ccfebccc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.full.json.d.ts @@ -0,0 +1,4 @@ +import { MetadataJson } from './types'; + +declare const metadata: MetadataJson; +export default metadata; diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.full.json.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.full.json.js new file mode 100644 index 00000000..7c5d5b97 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.full.json.js @@ -0,0 +1,4 @@ +// This file is a workaround for a bug in web browsers' "native" +// ES6 importing system which is uncapable of importing "*.json" files. +// https://github.com/catamphetamine/libphonenumber-js/issues/239 +export default {"version":4,"country_calling_codes":{"1":["US","AG","AI","AS","BB","BM","BS","CA","DM","DO","GD","GU","JM","KN","KY","LC","MP","MS","PR","SX","TC","TT","VC","VG","VI"],"7":["RU","KZ"],"20":["EG"],"27":["ZA"],"30":["GR"],"31":["NL"],"32":["BE"],"33":["FR"],"34":["ES"],"36":["HU"],"39":["IT","VA"],"40":["RO"],"41":["CH"],"43":["AT"],"44":["GB","GG","IM","JE"],"45":["DK"],"46":["SE"],"47":["NO","SJ"],"48":["PL"],"49":["DE"],"51":["PE"],"52":["MX"],"53":["CU"],"54":["AR"],"55":["BR"],"56":["CL"],"57":["CO"],"58":["VE"],"60":["MY"],"61":["AU","CC","CX"],"62":["ID"],"63":["PH"],"64":["NZ"],"65":["SG"],"66":["TH"],"81":["JP"],"82":["KR"],"84":["VN"],"86":["CN"],"90":["TR"],"91":["IN"],"92":["PK"],"93":["AF"],"94":["LK"],"95":["MM"],"98":["IR"],"211":["SS"],"212":["MA","EH"],"213":["DZ"],"216":["TN"],"218":["LY"],"220":["GM"],"221":["SN"],"222":["MR"],"223":["ML"],"224":["GN"],"225":["CI"],"226":["BF"],"227":["NE"],"228":["TG"],"229":["BJ"],"230":["MU"],"231":["LR"],"232":["SL"],"233":["GH"],"234":["NG"],"235":["TD"],"236":["CF"],"237":["CM"],"238":["CV"],"239":["ST"],"240":["GQ"],"241":["GA"],"242":["CG"],"243":["CD"],"244":["AO"],"245":["GW"],"246":["IO"],"247":["AC"],"248":["SC"],"249":["SD"],"250":["RW"],"251":["ET"],"252":["SO"],"253":["DJ"],"254":["KE"],"255":["TZ"],"256":["UG"],"257":["BI"],"258":["MZ"],"260":["ZM"],"261":["MG"],"262":["RE","YT"],"263":["ZW"],"264":["NA"],"265":["MW"],"266":["LS"],"267":["BW"],"268":["SZ"],"269":["KM"],"290":["SH","TA"],"291":["ER"],"297":["AW"],"298":["FO"],"299":["GL"],"350":["GI"],"351":["PT"],"352":["LU"],"353":["IE"],"354":["IS"],"355":["AL"],"356":["MT"],"357":["CY"],"358":["FI","AX"],"359":["BG"],"370":["LT"],"371":["LV"],"372":["EE"],"373":["MD"],"374":["AM"],"375":["BY"],"376":["AD"],"377":["MC"],"378":["SM"],"380":["UA"],"381":["RS"],"382":["ME"],"383":["XK"],"385":["HR"],"386":["SI"],"387":["BA"],"389":["MK"],"420":["CZ"],"421":["SK"],"423":["LI"],"500":["FK"],"501":["BZ"],"502":["GT"],"503":["SV"],"504":["HN"],"505":["NI"],"506":["CR"],"507":["PA"],"508":["PM"],"509":["HT"],"590":["GP","BL","MF"],"591":["BO"],"592":["GY"],"593":["EC"],"594":["GF"],"595":["PY"],"596":["MQ"],"597":["SR"],"598":["UY"],"599":["CW","BQ"],"670":["TL"],"672":["NF"],"673":["BN"],"674":["NR"],"675":["PG"],"676":["TO"],"677":["SB"],"678":["VU"],"679":["FJ"],"680":["PW"],"681":["WF"],"682":["CK"],"683":["NU"],"685":["WS"],"686":["KI"],"687":["NC"],"688":["TV"],"689":["PF"],"690":["TK"],"691":["FM"],"692":["MH"],"850":["KP"],"852":["HK"],"853":["MO"],"855":["KH"],"856":["LA"],"880":["BD"],"886":["TW"],"960":["MV"],"961":["LB"],"962":["JO"],"963":["SY"],"964":["IQ"],"965":["KW"],"966":["SA"],"967":["YE"],"968":["OM"],"970":["PS"],"971":["AE"],"972":["IL"],"973":["BH"],"974":["QA"],"975":["BT"],"976":["MN"],"977":["NP"],"992":["TJ"],"993":["TM"],"994":["AZ"],"995":["GE"],"996":["KG"],"998":["UZ"]},"countries":{"AC":["247","00","(?:[01589]\\d|[46])\\d{4}",[5,6],0,0,0,0,0,0,0,[["6[2-467]\\d{3}",[5]],["4\\d{4}",[5]],0,0,0,0,["(?:0[1-9]|[1589]\\d)\\d{4}",[6]]]],"AD":["376","00","(?:1|6\\d)\\d{7}|[135-9]\\d{5}",[6,8,9],[["(\\d{3})(\\d{3})","$1 $2",["[135-9]"]],["(\\d{4})(\\d{4})","$1 $2",["1"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]],0,0,0,0,0,0,[["[78]\\d{5}",[6]],["690\\d{6}|[356]\\d{5}",[6,9]],["180[02]\\d{4}",[8]],["[19]\\d{5}",[6]]]],"AE":["971","00","(?:[4-7]\\d|9[0-689])\\d{7}|800\\d{2,9}|[2-4679]\\d{7}",[5,6,7,8,9,10,11,12],[["(\\d{3})(\\d{2,9})","$1 $2",["60|8"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[236]|[479][2-8]"],"0$1"],["(\\d{3})(\\d)(\\d{5})","$1 $2 $3",["[479]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"]],"0",0,0,0,0,0,[["[2-4679][2-8]\\d{6}",[8]],["5[024-68]\\d{7}",[9]],["400\\d{6}|800\\d{2,9}"],["900[02]\\d{5}",[9]],0,0,["600[25]\\d{5}",[9]],0,0,["700[05]\\d{5}",[9]]]],"AF":["93","00","[2-7]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"]],"0",0,0,0,0,0,[["(?:[25][0-8]|[34][0-4]|6[0-5])[2-9]\\d{6}"],["7\\d{8}"]]],"AG":["1","011","(?:268|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([457]\\d{6})$","268$1",0,"268",[["268(?:4(?:6[0-38]|84)|56[0-2])\\d{4}"],["268(?:464|7(?:1[3-9]|[28]\\d|3[0246]|64|7[0-689]))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,0,["26840[69]\\d{4}"],["26848[01]\\d{4}"]]],"AI":["1","011","(?:264|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2457]\\d{6})$","264$1",0,"264",[["264(?:292|4(?:6[12]|9[78]))\\d{4}"],["264(?:235|4(?:69|76)|5(?:3[6-9]|8[1-4])|7(?:29|72))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,0,["264724\\d{4}"]]],"AL":["355","00","(?:700\\d\\d|900)\\d{3}|8\\d{5,7}|(?:[2-5]|6\\d)\\d{7}",[6,7,8,9],[["(\\d{3})(\\d{3,4})","$1 $2",["80|9"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["4[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2358][2-5]|4"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["[23578]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["6"],"0$1"]],"0",0,0,0,0,0,[["4505[0-2]\\d{3}|(?:[2358][16-9]\\d[2-9]|4410)\\d{4}|(?:[2358][2-5][2-9]|4(?:[2-57-9][2-9]|6\\d))\\d{5}",[8]],["6(?:[78][2-9]|9\\d)\\d{6}",[9]],["800\\d{4}",[7]],["900[1-9]\\d\\d",[6]],["700[2-9]\\d{4}",[8]],0,0,0,0,["808[1-9]\\d\\d",[6]]]],"AM":["374","00","(?:[1-489]\\d|55|60|77)\\d{6}",[8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[89]0"],"0 $1"],["(\\d{3})(\\d{5})","$1 $2",["2|3[12]"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["1|47"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[3-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:(?:1[0-25]|47)\\d|2(?:2[2-46]|3[1-8]|4[2-69]|5[2-7]|6[1-9]|8[1-7])|3[12]2)\\d{5}"],["(?:33|4[1349]|55|77|88|9[13-9])\\d{6}"],["800\\d{5}"],["90[016]\\d{5}"],0,0,0,0,["60(?:2[78]|3[5-9]|4[02-9]|5[0-46-9]|[6-8]\\d|9[01])\\d{4}"],["80[1-4]\\d{5}"]]],"AO":["244","00","[29]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[29]"]]],0,0,0,0,0,0,[["2\\d(?:[0134][25-9]|[25-9]\\d)\\d{5}"],["9[1-59]\\d{7}"]]],"AR":["54","00","(?:11|[89]\\d\\d)\\d{8}|[2368]\\d{9}",[10,11],[["(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])","2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["1"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2-$3",["[23]"],"0$1",1],["(\\d)(\\d{4})(\\d{2})(\\d{4})","$2 15-$3-$4",["9(?:2[2-469]|3[3-578])","9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))","9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",0,"$1 $2 $3-$4"],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 15-$3-$4",["91"],"0$1",0,"$1 $2 $3-$4"],["(\\d{3})(\\d{3})(\\d{5})","$1-$2-$3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 15-$3-$4",["9"],"0$1",0,"$1 $2 $3-$4"]],"0",0,"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?","9$1",0,0,[["3888[013-9]\\d{5}|3(?:7(?:1[15]|81)|8(?:21|4[16]|69|9[12]))[46]\\d{5}|(?:29(?:54|66)|3(?:7(?:55|77)|865))[2-8]\\d{5}|(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|473|9(?:[07]2|2[26]|34|46))|3327)[45]\\d{5}|(?:2(?:284|3(?:02|23)|657|920)|3(?:4(?:8[27]|92)|541|878))[2-7]\\d{5}|(?:2(?:(?:26|62)2|320|477|9(?:42|83))|3(?:329|4(?:[47]6|62|89)|564))[2-6]\\d{5}|(?:(?:11[1-8]|670)\\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-7]|[235][4-6]|84)|5(?:1[2-9]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:0[45]|[17][2-6]|3[4-6]|[58][3-6])))\\d{6}|2(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|475|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\d{5}|(?:2(?:2(?:57|81)|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|71)|5(?:25|37|4[347]|71)|7(?:18|5[17])))[3-6]\\d{5}|(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[03-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[145]|4[13]|5[468]|7[2-5]|8[26])|8(?:2[5-7]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\d{5}",[10]],["93(?:7(?:1[15]|81)[46]|8(?:(?:21|4[16]|69|9[12])[46]|88[013-9]))\\d{5}|9(?:29(?:54|66)|3(?:7(?:55|77)|865))[2-8]\\d{5}|9(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|473|9(?:[07]2|2[26]|34|46))|3327)[45]\\d{5}|9(?:2(?:284|3(?:02|23)|657|920)|3(?:4(?:8[27]|92)|541|878))[2-7]\\d{5}|9(?:2(?:(?:26|62)2|320|477|9(?:42|83))|3(?:329|4(?:[47]6|62|89)|564))[2-6]\\d{5}|(?:675\\d|9(?:11[1-8]\\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-7]|[235][4-6]|84)|5(?:1[2-9]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:0[45]|[17][2-6]|3[4-6]|[58][3-6]))))\\d{6}|92(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|475|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\d{5}|9(?:2(?:2(?:57|81)|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|71)|5(?:25|37|4[347]|71)|7(?:18|5[17])))[3-6]\\d{5}|9(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[03-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[145]|4[13]|5[468]|7[2-5]|8[26])|8(?:2[5-7]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\d{5}"],["800\\d{7,8}"],["60[04579]\\d{7}",[10]],0,0,["810\\d{7}",[10]]]],"AS":["1","011","(?:[58]\\d\\d|684|900)\\d{7}",[10],0,"1",0,"1|([267]\\d{6})$","684$1",0,"684",[["6846(?:22|33|44|55|77|88|9[19])\\d{4}"],["684(?:2(?:48|5[2468]|72)|7(?:3[13]|70|82))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"AT":["43","00","1\\d{3,12}|2\\d{6,12}|43(?:(?:0\\d|5[02-9])\\d{3,9}|2\\d{4,5}|[3467]\\d{4}|8\\d{4,6}|9\\d{4,7})|5\\d{4,12}|8\\d{7,12}|9\\d{8,12}|(?:[367]\\d|4[0-24-9])\\d{4,11}",[4,5,6,7,8,9,10,11,12,13],[["(\\d)(\\d{3,12})","$1 $2",["1(?:11|[2-9])"],"0$1"],["(\\d{3})(\\d{2})","$1 $2",["517"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["5[079]"],"0$1"],["(\\d{3})(\\d{3,10})","$1 $2",["(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]"],"0$1"],["(\\d{4})(\\d{3,9})","$1 $2",["[2-467]|5[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["5"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,7})","$1 $2 $3",["5"],"0$1"]],"0",0,0,0,0,0,[["1(?:11\\d|[2-9]\\d{3,11})|(?:316|463|(?:51|66|73)2)\\d{3,10}|(?:2(?:1[467]|2[13-8]|5[2357]|6[1-46-8]|7[1-8]|8[124-7]|9[1458])|3(?:1[1-578]|3[23568]|4[5-7]|5[1378]|6[1-38]|8[3-68])|4(?:2[1-8]|35|7[1368]|8[2457])|5(?:2[1-8]|3[357]|4[147]|5[12578]|6[37])|6(?:13|2[1-47]|4[135-8]|5[468])|7(?:2[1-8]|35|4[13478]|5[68]|6[16-8]|7[1-6]|9[45]))\\d{4,10}"],["6(?:5[0-3579]|6[013-9]|[7-9]\\d)\\d{4,10}",[7,8,9,10,11,12,13]],["800\\d{6,10}",[9,10,11,12,13]],["(?:8[69][2-68]|9(?:0[01]|3[019]))\\d{6,10}",[9,10,11,12,13]],0,0,0,0,["5(?:0[1-9]|17|[79]\\d)\\d{2,10}|7[28]0\\d{6,10}",[5,6,7,8,9,10,11,12,13]],["8(?:10|2[018])\\d{6,10}|828\\d{5}",[8,9,10,11,12,13]]]],"AU":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{7}(?:\\d(?:\\d{2})?)?|8[0-24-9]\\d{7})|[2-478]\\d{8}|1\\d{4,7}",[5,6,7,8,9,10,12],[["(\\d{2})(\\d{3,4})","$1 $2",["16"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,4})","$1 $2 $3",["16"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["14|4"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[2378]"],"(0$1)"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:30|[89])"]]],"0",0,"0|(183[12])",0,0,0,[["(?:(?:2(?:[0-26-9]\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\d|2[0-8]))\\d{3}|8(?:51(?:0(?:0[03-9]|[12479]\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\d|7[89]|9[0-4]))|(?:6[0-8]|[78]\\d)\\d{3}|9(?:[02-9]\\d{3}|1(?:(?:[0-58]\\d|6[0135-9])\\d|7(?:0[0-24-9]|[1-9]\\d)|9(?:[0-46-9]\\d|5[0-79])))))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,["163\\d{2,6}",[5,6,7,8,9]],["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],"AW":["297","00","(?:[25-79]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[25-9]"]]],0,0,0,0,0,0,[["5(?:2\\d|8[1-9])\\d{4}"],["(?:290|5[69]\\d|6(?:[03]0|22|4[0-2]|[69]\\d)|7(?:[34]\\d|7[07])|9(?:6[45]|9[4-8]))\\d{4}"],["800\\d{4}"],["900\\d{4}"],0,0,0,0,["(?:28\\d|501)\\d{4}"]]],"AX":["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","2\\d{4,9}|35\\d{4,5}|(?:60\\d\\d|800)\\d{4,6}|7\\d{5,11}|(?:[14]\\d|3[0-46-9]|50)\\d{4,8}",[5,6,7,8,9,10,11,12],0,"0",0,0,0,0,"18",[["18[1-8]\\d{3,6}",[6,7,8,9]],["4946\\d{2,6}|(?:4[0-8]|50)\\d{4,8}",[6,7,8,9,10]],["800\\d{4,6}",[7,8,9]],["[67]00\\d{5,6}",[8,9]],0,0,["20\\d{4,8}|60[12]\\d{5,6}|7(?:099\\d{4,5}|5[03-9]\\d{3,7})|20[2-59]\\d\\d|(?:606|7(?:0[78]|1|3\\d))\\d{7}|(?:10|29|3[09]|70[1-5]\\d)\\d{4,8}"]],"00"],"AZ":["994","00","365\\d{6}|(?:[124579]\\d|60|88)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[28]|2|365|46","1[28]|2|365[45]|46","1[28]|2|365(?:4|5[02])|46"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[13-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:2[12]428|3655[02])\\d{4}|(?:2(?:22[0-79]|63[0-28])|3654)\\d{5}|(?:(?:1[28]|46)\\d|2(?:[014-6]2|[23]3))\\d{6}"],["36554\\d{4}|(?:[16]0|4[04]|5[015]|7[07]|99)\\d{7}"],["88\\d{7}"],["900200\\d{3}"]]],"BA":["387","00","6\\d{8}|(?:[35689]\\d|49|70)\\d{6}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["6[1-3]|[7-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2-$3",["[3-5]|6[56]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["6"],"0$1"]],"0",0,0,0,0,0,[["(?:3(?:[05-79][2-9]|1[4579]|[23][24-9]|4[2-4689]|8[2457-9])|49[2-579]|5(?:0[2-49]|[13][2-9]|[268][2-4679]|4[4689]|5[2-79]|7[2-69]|9[2-4689]))\\d{5}",[8]],["6040\\d{5}|6(?:03|[1-356]|44|7\\d)\\d{6}"],["8[08]\\d{6}",[8]],["9[0246]\\d{6}",[8]],0,0,["703[235]0\\d{3}|70(?:2[0-5]|3[0146]|[56]0)\\d{4}",[8]],0,0,["8[12]\\d{6}",[8]]]],"BB":["1","011","(?:246|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","246$1",0,"246",[["246521[0369]\\d{3}|246(?:2(?:2[78]|7[0-4])|4(?:1[024-6]|2\\d|3[2-9])|5(?:20|[34]\\d|54|7[1-3])|6(?:2\\d|38)|7[35]7|9(?:1[89]|63))\\d{4}"],["246(?:(?:2(?:[3568]\\d|4[0-57-9])|3(?:5[2-9]|6[0-6])|4(?:46|5\\d)|69[5-7]|8(?:[2-5]\\d|83))\\d|52(?:1[147]|20))\\d{3}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["(?:246976|900[2-9]\\d\\d)\\d{4}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,["246(?:292|367|4(?:1[7-9]|3[01]|4[47-9]|67)|7(?:1[2-9]|2\\d|3[016]|53))\\d{4}"],0,["24631\\d{5}"]]],"BD":["880","00","[1-469]\\d{9}|8[0-79]\\d{7,8}|[2-79]\\d{8}|[2-9]\\d{7}|[3-9]\\d{6}|[57-9]\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{4,6})","$1-$2",["31[5-8]|[459]1"],"0$1"],["(\\d{3})(\\d{3,7})","$1-$2",["3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:28|4[14]|5)|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]"],"0$1"],["(\\d{4})(\\d{3,6})","$1-$2",["[13-9]|22"],"0$1"],["(\\d)(\\d{7,8})","$1-$2",["2"],"0$1"]],"0",0,0,0,0,0,[["(?:4(?:31\\d\\d|423)|5222)\\d{3}(?:\\d{2})?|8332[6-9]\\d\\d|(?:3(?:03[56]|224)|4(?:22[25]|653))\\d{3,4}|(?:3(?:42[47]|529|823)|4(?:027|525|65(?:28|8))|562|6257|7(?:1(?:5[3-5]|6[12]|7[156]|89)|22[589]56|32|42675|52(?:[25689](?:56|8)|[347]8)|71(?:6[1267]|75|89)|92374)|82(?:2[59]|32)56|9(?:03[23]56|23(?:256|373)|31|5(?:1|2[4589]56)))\\d{3}|(?:3(?:02[348]|22[35]|324|422)|4(?:22[67]|32[236-9]|6(?:2[46]|5[57])|953)|5526|6(?:024|6655)|81)\\d{4,5}|(?:2(?:7(?:1[0-267]|2[0-289]|3[0-29]|4[01]|5[1-3]|6[013]|7[0178]|91)|8(?:0[125]|1[1-6]|2[0157-9]|3[1-69]|41|6[1-35]|7[1-5]|8[1-8]|9[0-6])|9(?:0[0-2]|1[0-4]|2[568]|3[3-6]|5[5-7]|6[0136-9]|7[0-7]|8[014-9]))|3(?:0(?:2[025-79]|3[2-4])|181|22[12]|32[2356]|824)|4(?:02[09]|22[348]|32[045]|523|6(?:27|54))|666(?:22|53)|7(?:22[57-9]|42[56]|82[35])8|8(?:0[124-9]|2(?:181|2[02-4679]8)|4[12]|[5-7]2)|9(?:[04]2|2(?:2|328)|81))\\d{4}|(?:2(?:222|[45]\\d)\\d|3(?:1(?:2[5-7]|[5-7])|425|822)|4(?:033|1\\d|[257]1|332|4(?:2[246]|5[25])|6(?:2[35]|56|62)|8(?:23|54)|92[2-5])|5(?:02[03489]|22[457]|32[35-79]|42[46]|6(?:[18]|53)|724|826)|6(?:023|2(?:2[2-5]|5[3-5]|8)|32[3478]|42[34]|52[47]|6(?:[18]|6(?:2[34]|5[24]))|[78]2[2-5]|92[2-6])|7(?:02|21\\d|[3-589]1|6[12]|72[24])|8(?:217|3[12]|[5-7]1)|9[24]1)\\d{5}|(?:(?:3[2-8]|5[2-57-9]|6[03-589])1|4[4689][18])\\d{5}|[59]1\\d{5}"],["(?:1[13-9]\\d|644)\\d{7}|(?:3[78]|44|66)[02-9]\\d{7}",[10]],["80[03]\\d{7}",[10]],0,0,0,0,0,["96(?:0[469]|1[0-47]|3[389]|6[69]|7[78])\\d{6}",[10]]]],"BE":["32","00","4\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:80|9)0"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[239]|4[23]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[15-8]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4"],"0$1"]],"0",0,0,0,0,0,[["80[2-8]\\d{5}|(?:1[0-69]|[23][2-8]|4[23]|5\\d|6[013-57-9]|71|8[1-79]|9[2-4])\\d{6}",[8]],["4[5-9]\\d{7}",[9]],["800[1-9]\\d{4}",[8]],["(?:70(?:2[0-57]|3[04-7]|44|6[569]|7[0579])|90(?:0[0-8]|1[36]|2[0-3568]|3[0-689]|[47][2-68]|5[1-68]|6[0-378]|9[34679]))\\d{4}",[8]],0,0,["78(?:0[57]|1[014-8]|2[25]|3[15-8]|48|[56]0|7[06-8]|9\\d)\\d{4}",[8]],0,0,["7879\\d{4}",[8]]]],"BF":["226","00","[025-7]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[025-7]"]]],0,0,0,0,0,0,[["2(?:0(?:49|5[23]|6[5-7]|9[016-9])|4(?:4[569]|5[4-6]|6[5-7]|7[0179])|5(?:[34]\\d|50|6[5-7]))\\d{4}"],["(?:0[1-35-7]|5[1-8]|[67]\\d)\\d{6}"]]],"BG":["359","00","[2-7]\\d{6,7}|[89]\\d{6,8}|2\\d{5}",[6,7,8,9],[["(\\d)(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["43[1-6]|70[1-9]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:70|8)0"],"0$1"],["(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3",["43[1-7]|7"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[48]|9[08]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"]],"0",0,0,0,0,0,[["2\\d{5,7}|(?:43[1-6]|70[1-9])\\d{4,5}|(?:[36]\\d|4[124-7]|[57][1-9]|8[1-6]|9[1-7])\\d{5,6}",[6,7,8]],["(?:43[07-9]|99[69]\\d)\\d{5}|(?:8[7-9]|98)\\d{7}",[8,9]],["800\\d{5}",[8]],["90\\d{6}",[8]],0,0,0,0,0,["700\\d{5}",[8]]]],"BH":["973","00","[136-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[13679]|8[047]"]]],0,0,0,0,0,0,[["(?:1(?:3[1356]|6[0156]|7\\d)\\d|6(?:1[16]\\d|500|6(?:0\\d|3[12]|44|7[7-9]|88)|9[69][69])|7(?:1(?:11|78)|7\\d\\d))\\d{4}"],["(?:3(?:[1-79]\\d|8[0-47-9])\\d|6(?:3(?:00|33|6[16])|6(?:3[03-9]|[69]\\d|7[0-6])))\\d{4}"],["80\\d{6}"],["(?:87|9[014578])\\d{6}"],0,0,0,0,0,["84\\d{6}"]]],"BI":["257","00","(?:[267]\\d|31)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2367]"]]],0,0,0,0,0,0,[["(?:22|31)\\d{6}"],["(?:29|6[1257-9]|7[125-9])\\d{6}"]]],"BJ":["229","00","(?:[25689]\\d|40)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24-689]"]]],0,0,0,0,0,0,[["2(?:02|1[037]|2[45]|3[68]|4\\d)\\d{5}"],["(?:40|5[1-9]|6\\d|9[013-9])\\d{6}"],0,0,0,0,["81\\d{6}"],0,["857[58]\\d{4}"]]],"BL":["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[["590(?:2[7-9]|5[12]|87)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],"BM":["1","011","(?:441|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","441$1",0,"441",[["441(?:[46]\\d\\d|5(?:4\\d|60|89))\\d{4}"],["441(?:[2378]\\d|5[0-39])\\d{5}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"BN":["673","00","[2-578]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-578]"]]],0,0,0,0,0,0,[["22[0-7]\\d{4}|(?:2[013-9]|[34]\\d|5[0-25-9])\\d{5}"],["(?:22[89]|[78]\\d\\d)\\d{4}"],0,0,0,0,0,0,["5[34]\\d{5}"]]],"BO":["591","00(?:1\\d)?","(?:[2-467]\\d\\d|8001)\\d{5}",[8,9],[["(\\d)(\\d{7})","$1 $2",["[23]|4[46]"]],["(\\d{8})","$1",["[67]"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["8"]]],"0",0,"0(1\\d)?",0,0,0,[["(?:2(?:2\\d\\d|5(?:11|[258]\\d|9[67])|6(?:12|2\\d|9[34])|8(?:2[34]|39|62))|3(?:3\\d\\d|4(?:6\\d|8[24])|8(?:25|42|5[257]|86|9[25])|9(?:[27]\\d|3[2-4]|4[248]|5[24]|6[2-6]))|4(?:4\\d\\d|6(?:11|[24689]\\d|72)))\\d{4}",[8]],["[67]\\d{7}",[8]],["8001[07]\\d{4}",[9]]]],"BQ":["599","00","(?:[34]1|7\\d)\\d{5}",[7],0,0,0,0,0,0,"[347]",[["(?:318[023]|41(?:6[023]|70)|7(?:1[578]|2[05]|50)\\d)\\d{3}"],["(?:31(?:8[14-8]|9[14578])|416[14-9]|7(?:0[01]|7[07]|8\\d|9[056])\\d)\\d{3}"]]],"BR":["55","00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)","(?:[1-46-9]\\d\\d|5(?:[0-46-9]\\d|5[0-46-9]))\\d{8}|[1-9]\\d{9}|[3589]\\d{8}|[34]\\d{7}",[8,9,10,11],[["(\\d{4})(\\d{4})","$1-$2",["300|4(?:0[02]|37)","4(?:02|37)0|[34]00"]],["(\\d{3})(\\d{2,3})(\\d{4})","$1 $2 $3",["(?:[358]|90)0"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]"],"($1)"],["(\\d{2})(\\d{5})(\\d{4})","$1 $2-$3",["[16][1-9]|[2-57-9]"],"($1)"]],"0",0,"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\d{10,11}))?","$2",0,0,[["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-5]\\d{7}",[10]],["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])(?:7|9\\d)\\d{7}",[10,11]],["800\\d{6,7}",[9,10]],["300\\d{6}|[59]00\\d{6,7}",[9,10]],0,0,0,0,0,["(?:30[03]\\d{3}|4(?:0(?:0\\d|20)|370))\\d{4}|300\\d{5}",[8,10]]]],"BS":["1","011","(?:242|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([3-8]\\d{6})$","242$1",0,"242",[["242(?:3(?:02|[236][1-9]|4[0-24-9]|5[0-68]|7[347]|8[0-4]|9[2-467])|461|502|6(?:0[1-4]|12|2[013]|[45]0|7[67]|8[78]|9[89])|7(?:02|88))\\d{4}"],["242(?:3(?:5[79]|7[56]|95)|4(?:[23][1-9]|4[1-35-9]|5[1-8]|6[2-8]|7\\d|81)|5(?:2[45]|3[35]|44|5[1-46-9]|65|77)|6[34]6|7(?:27|38)|8(?:0[1-9]|1[02-9]|2\\d|[89]9))\\d{4}"],["242300\\d{4}|8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,["242225\\d{4}"]]],"BT":["975","00","[17]\\d{7}|[2-8]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[2-68]|7[246]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[67]|7"]]],0,0,0,0,0,0,[["(?:2[3-6]|[34][5-7]|5[236]|6[2-46]|7[246]|8[2-4])\\d{5}",[7]],["(?:1[67]|77)\\d{6}",[8]]]],"BW":["267","00","(?:0800|(?:[37]|800)\\d)\\d{6}|(?:[2-6]\\d|90)\\d{5}",[7,8,10],[["(\\d{2})(\\d{5})","$1 $2",["90"]],["(\\d{3})(\\d{4})","$1 $2",["[24-6]|3[15-79]"]],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37]"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["(?:2(?:4[0-48]|6[0-24]|9[0578])|3(?:1[0-35-9]|55|[69]\\d|7[013])|4(?:6[03]|7[1267]|9[0-5])|5(?:3[03489]|4[0489]|7[1-47]|88|9[0-49])|6(?:2[1-35]|5[149]|8[067]))\\d{4}",[7]],["(?:321|7(?:[1-7]\\d|8[01]))\\d{5}",[8]],["(?:0800|800\\d)\\d{6}",[10]],["90\\d{5}",[7]],0,0,0,0,["79(?:1(?:[01]\\d|2[0-7])|2[0-7]\\d)\\d{3}",[8]]]],"BY":["375","810","(?:[12]\\d|33|44|902)\\d{7}|8(?:0[0-79]\\d{5,7}|[1-7]\\d{9})|8(?:1[0-489]|[5-79]\\d)\\d{7}|8[1-79]\\d{6,7}|8[0-79]\\d{5}|8\\d{5}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3})","$1 $2",["800"],"8 $1"],["(\\d{3})(\\d{2})(\\d{2,4})","$1 $2 $3",["800"],"8 $1"],["(\\d{4})(\\d{2})(\\d{3})","$1 $2-$3",["1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])","1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])"],"8 0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["1(?:[56]|7[467])|2[1-3]"],"8 0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-4]"],"8 0$1"],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["[89]"],"8 $1"]],"8",0,"0|80?",0,0,0,[["(?:1(?:5(?:1[1-5]|[24]\\d|6[2-4]|9[1-7])|6(?:[235]\\d|4[1-7])|7\\d\\d)|2(?:1(?:[246]\\d|3[0-35-9]|5[1-9])|2(?:[235]\\d|4[0-8])|3(?:[26]\\d|3[02-79]|4[024-7]|5[03-7])))\\d{5}",[9]],["(?:2(?:5[5-79]|9[1-9])|(?:33|44)\\d)\\d{6}",[9]],["800\\d{3,7}|8(?:0[13]|20\\d)\\d{7}"],["(?:810|902)\\d{7}",[10]],0,0,0,0,["249\\d{6}",[9]]],"8~10"],"BZ":["501","00","(?:0800\\d|[2-8])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1-$2",["[2-8]"]],["(\\d)(\\d{3})(\\d{4})(\\d{3})","$1-$2-$3-$4",["0"]]],0,0,0,0,0,0,[["(?:2(?:[02]\\d|36|[68]0)|[3-58](?:[02]\\d|[68]0)|7(?:[02]\\d|32|[68]0))\\d{4}",[7]],["6[0-35-7]\\d{5}",[7]],["0800\\d{7}",[11]]]],"CA":["1","011","(?:[2-8]\\d|90)\\d{8}|3\\d{6}",[7,10],0,"1",0,0,0,0,0,[["(?:2(?:04|[23]6|[48]9|50|63)|3(?:06|43|6[578])|4(?:03|1[68]|3[178]|50|68|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|13|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\d{6}",[10]],["",[10]],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",[10]],["900[2-9]\\d{6}",[10]],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|(?:5(?:00|2[125-7]|33|44|66|77|88)|622)[2-9]\\d{6}",[10]],0,["310\\d{4}",[7]],0,["600[2-9]\\d{6}",[10]]]],"CC":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[["8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\d|70[23]|959))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,0,["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],"CD":["243","00","[189]\\d{8}|[1-68]\\d{6}",[7,9],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[1-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,[["12\\d{7}|[1-6]\\d{6}"],["88\\d{5}|(?:8[0-59]|9[017-9])\\d{7}"]]],"CF":["236","00","(?:[27]\\d{3}|8776)\\d{4}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[278]"]]],0,0,0,0,0,0,[["2[12]\\d{6}"],["7[02457]\\d{6}"],0,["8776\\d{4}"]]],"CG":["242","00","222\\d{6}|(?:0\\d|80)\\d{7}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["8"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[02]"]]],0,0,0,0,0,0,[["222[1-589]\\d{5}"],["026(?:1[0-5]|6[6-9])\\d{4}|0(?:[14-6]\\d\\d|2(?:40|5[5-8]|6[07-9]))\\d{5}"],0,["80(?:0\\d\\d|120)\\d{4}"]]],"CH":["41","00","8\\d{11}|[2-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8[047]|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-79]|81"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["8"],"0$1"]],"0",0,0,0,0,0,[["(?:2[12467]|3[1-4]|4[134]|5[256]|6[12]|[7-9]1)\\d{7}"],["7[35-9]\\d{7}"],["800\\d{6}"],["90[016]\\d{6}"],["878\\d{6}"],0,["5[18]\\d{7}"],["74[0248]\\d{6}"],0,["84[0248]\\d{6}"]]],"CI":["225","00","[02]\\d{9}",[10],[["(\\d{2})(\\d{2})(\\d)(\\d{5})","$1 $2 $3 $4",["2"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3 $4",["0"]]],0,0,0,0,0,0,[["2(?:[15]\\d{3}|7(?:2(?:0[23]|1[2357]|2[245]|3[45]|4[3-5])|3(?:06|1[69]|[2-6]7)))\\d{5}"],["0704[0-7]\\d{5}|0(?:[15]\\d\\d|7(?:0[0-37-9]|[4-9][7-9]))\\d{6}"]]],"CK":["682","00","[2-578]\\d{4}",[5],[["(\\d{2})(\\d{3})","$1 $2",["[2-578]"]]],0,0,0,0,0,0,[["(?:2\\d|3[13-7]|4[1-5])\\d{3}"],["[578]\\d{4}"]]],"CL":["56","(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0","12300\\d{6}|6\\d{9,10}|[2-9]\\d{8}",[9,10,11],[["(\\d{5})(\\d{4})","$1 $2",["219","2196"],"($1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["44"]],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2[1-36]"],"($1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["9[2-9]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])"],"($1)"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["60|8"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{3})(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3 $4",["60"]]],0,0,0,0,0,0,[["2(?:1982[0-6]|3314[05-9])\\d{3}|(?:2(?:1(?:160|962)|3(?:2\\d\\d|3(?:[0346]\\d|1[0-35-9]|2[1-9]|5[0-24-9]|7[0-3])|600)|646[59])|80[1-9]\\d\\d|9(?:3(?:[0-57-9]\\d\\d|6(?:0[02-9]|[1-9]\\d))|6(?:[0-8]\\d\\d|9(?:[02-79]\\d|1[05-9]))|7[1-9]\\d\\d|9(?:[03-9]\\d\\d|1(?:[0235-9]\\d|4[0-24-9])|2(?:[0-79]\\d|8[0-46-9]))))\\d{4}|(?:22|3[2-5]|[47][1-35]|5[1-3578]|6[13-57]|8[1-9]|9[2458])\\d{7}",[9]],["",[9]],["(?:123|8)00\\d{6}",[9,11]],0,0,0,0,0,["44\\d{7}",[9]],["600\\d{7,8}",[10,11]]]],"CM":["237","00","[26]\\d{8}|88\\d{6,7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["88"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[26]|88"]]],0,0,0,0,0,0,[["2(?:22|33)\\d{6}",[9]],["(?:24[23]|6[25-9]\\d)\\d{6}",[9]],["88\\d{6,7}"]]],"CN":["86","00|1(?:[12]\\d|79)\\d\\d00","1[127]\\d{8,9}|2\\d{9}(?:\\d{2})?|[12]\\d{6,7}|86\\d{6}|(?:1[03-689]\\d|6)\\d{7,9}|(?:[3-579]\\d|8[0-57-9])\\d{6,9}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5,6})","$1 $2",["(?:10|2[0-57-9])[19]","(?:10|2[0-57-9])(?:10|9[56])","(?:10|2[0-57-9])(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{5,6})","$1 $2",["3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]","(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))[19]","85[23](?:10|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:10|9[56])","85[23](?:100|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["(?:4|80)0"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["10|2(?:[02-57-9]|1[1-9])","10|2(?:[02-57-9]|1[1-9])","10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]"],"0$1",1],["(\\d{3})(\\d{7,8})","$1 $2",["9"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["80"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[3-578]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["1[3-9]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3 $4",["[12]"],"0$1",1]],"0",0,"0|(1(?:[12]\\d|79)\\d\\d)",0,0,0,[["(?:10(?:[02-79]\\d\\d|[18](?:0[1-9]|[1-9]\\d))|21(?:[18](?:0[1-9]|[1-9]\\d)|[2-79]\\d\\d))\\d{5}|(?:43[35]|754)\\d{7,8}|8(?:078\\d{7}|51\\d{7,8})|(?:10|(?:2|85)1|43[35]|754)(?:100\\d\\d|95\\d{3,4})|(?:2[02-57-9]|3(?:11|7[179])|4(?:[15]1|3[12])|5(?:1\\d|2[37]|3[12]|51|7[13-79]|9[15])|7(?:[39]1|5[57]|6[09])|8(?:71|98))(?:[02-8]\\d{7}|1(?:0(?:0\\d\\d(?:\\d{3})?|[1-9]\\d{5})|[1-9]\\d{6})|9(?:[0-46-9]\\d{6}|5\\d{3}(?:\\d(?:\\d{2})?)?))|(?:3(?:1[02-9]|35|49|5\\d|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|3[46-9]|5[2-9]|6[47-9]|7\\d|8[23])|5(?:3[03-9]|4[36]|5[02-9]|6[1-46]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[17]\\d|2[248]|3[04-9]|4[3-6]|5[0-3689]|6[2368]|9[02-9])|8(?:1[236-8]|2[5-7]|3\\d|5[2-9]|7[02-9]|8[36-8]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:[02-8]\\d{6}|1(?:0(?:0\\d\\d(?:\\d{2})?|[1-9]\\d{4})|[1-9]\\d{5})|9(?:[0-46-9]\\d{5}|5\\d{3,5}))",[7,8,9,10,11]],["1740[0-5]\\d{6}|1(?:[38]\\d|4[57]|[59][0-35-9]|6[25-7]|7[0-35-8])\\d{8}",[11]],["(?:(?:10|21)8|8)00\\d{7}",[10,12]],["16[08]\\d{5}",[8]],0,0,0,0,0,["400\\d{7}|950\\d{7,8}|(?:10|2[0-57-9]|3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))96\\d{3,4}",[7,8,9,10,11]]],"00"],"CO":["57","00(?:4(?:[14]4|56)|[579])","(?:60\\d\\d|9101)\\d{6}|(?:1\\d|3)\\d{9}",[10,11],[["(\\d{3})(\\d{7})","$1 $2",["6"],"($1)"],["(\\d{3})(\\d{7})","$1 $2",["3[0-357]|91"]],["(\\d)(\\d{3})(\\d{7})","$1-$2-$3",["1"],"0$1",0,"$1 $2 $3"]],"0",0,"0(4(?:[14]4|56)|[579])?",0,0,0,[["601055(?:[0-4]\\d|50)\\d\\d|6010(?:[0-4]\\d|5[0-4])\\d{4}|60[124-8][2-9]\\d{6}",[10]],["3333(?:0(?:0\\d|1[0-5])|[4-9]\\d\\d)\\d{3}|(?:3(?:24[1-9]|3(?:00|3[0-24-9]))|9101)\\d{6}|3(?:0[0-5]|1\\d|2[0-3]|5[01]|70)\\d{7}",[10]],["1800\\d{7}",[11]],["19(?:0[01]|4[78])\\d{7}",[11]]]],"CR":["506","00","(?:8\\d|90)\\d{8}|(?:[24-8]\\d{3}|3005)\\d{4}",[8,10],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[3-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[89]"]]],0,0,"(19(?:0[0-2468]|1[09]|20|66|77|99))",0,0,0,[["210[7-9]\\d{4}|2(?:[024-7]\\d|1[1-9])\\d{5}",[8]],["(?:3005\\d|6500[01])\\d{3}|(?:5[07]|6[0-4]|7[0-3]|8[3-9])\\d{6}",[8]],["800\\d{7}",[10]],["90[059]\\d{7}",[10]],0,0,0,0,["(?:210[0-6]|4\\d{3}|5100)\\d{4}",[8]]]],"CU":["53","119","[27]\\d{6,7}|[34]\\d{5,7}|(?:5|8\\d\\d)\\d{7}",[6,7,8,10],[["(\\d{2})(\\d{4,6})","$1 $2",["2[1-4]|[34]"],"(0$1)"],["(\\d)(\\d{6,7})","$1 $2",["7"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["5"],"0$1"],["(\\d{3})(\\d{7})","$1 $2",["8"],"0$1"]],"0",0,0,0,0,0,[["(?:3[23]|48)\\d{4,6}|(?:31|4[36]|8(?:0[25]|78)\\d)\\d{6}|(?:2[1-4]|4[1257]|7\\d)\\d{5,6}"],["5\\d{7}",[8]],["800\\d{7}",[10]],0,0,0,0,0,0,["807\\d{7}",[10]]]],"CV":["238","0","(?:[2-59]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[2-589]"]]],0,0,0,0,0,0,[["2(?:2[1-7]|3[0-8]|4[12]|5[1256]|6\\d|7[1-3]|8[1-5])\\d{4}"],["(?:36|5[1-389]|9\\d)\\d{5}"],["800\\d{4}"],0,0,0,0,0,["(?:3[3-5]|4[356])\\d{5}"]]],"CW":["599","00","(?:[34]1|60|(?:7|9\\d)\\d)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[3467]"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["9[4-8]"]]],0,0,0,0,0,"[69]",[["9(?:4(?:3[0-5]|4[14]|6\\d)|50\\d|7(?:2[014]|3[02-9]|4[4-9]|6[357]|77|8[7-9])|8(?:3[39]|[46]\\d|7[01]|8[57-9]))\\d{4}"],["953[01]\\d{4}|9(?:5[12467]|6[5-9])\\d{5}"],0,0,0,0,0,["955\\d{5}",[8]],0,["60[0-2]\\d{4}",[7]]]],"CX":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[["8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\d|7(?:0[01]|1[0-2])|958))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,0,["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],"CY":["357","00","(?:[279]\\d|[58]0)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[257-9]"]]],0,0,0,0,0,0,[["2[2-6]\\d{6}"],["9[4-79]\\d{6}"],["800\\d{5}"],["90[09]\\d{5}"],["700\\d{5}"],0,["(?:50|77)\\d{6}"],0,0,["80[1-9]\\d{5}"]]],"CZ":["420","00","(?:[2-578]\\d|60)\\d{7}|9\\d{8,11}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]|9[015-7]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3 $4",["96"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]],0,0,0,0,0,0,[["(?:2\\d|3[1257-9]|4[16-9]|5[13-9])\\d{7}"],["(?:60[1-8]|7(?:0[2-5]|[2379]\\d))\\d{6}"],["800\\d{6}"],["9(?:0[05689]|76)\\d{6}"],["70[01]\\d{6}"],0,["9(?:5\\d|7[2-4])\\d{6}"],0,["9[17]0\\d{6}"],["8[134]\\d{7}"]]],"DE":["49","00","[2579]\\d{5,14}|49(?:[34]0|69|8\\d)\\d\\d?|49(?:37|49|60|7[089]|9\\d)\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\d{1,8}|(?:1|[368]\\d|4[0-8])\\d{3,13}|49(?:[015]\\d|2[13]|31|[46][1-8])\\d{1,9}",[4,5,6,7,8,9,10,11,12,13,14,15],[["(\\d{2})(\\d{3,13})","$1 $2",["3[02]|40|[68]9"],"0$1"],["(\\d{3})(\\d{3,12})","$1 $2",["2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1","2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1"],"0$1"],["(\\d{4})(\\d{2,11})","$1 $2",["[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]","[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["138"],"0$1"],["(\\d{5})(\\d{2,10})","$1 $2",["3"],"0$1"],["(\\d{3})(\\d{5,11})","$1 $2",["181"],"0$1"],["(\\d{3})(\\d)(\\d{4,10})","$1 $2 $3",["1(?:3|80)|9"],"0$1"],["(\\d{3})(\\d{7,8})","$1 $2",["1[67]"],"0$1"],["(\\d{3})(\\d{7,12})","$1 $2",["8"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["185","1850","18500"],"0$1"],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["18[68]"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["15[0568]"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["15[1279]"],"0$1"],["(\\d{3})(\\d{8})","$1 $2",["18"],"0$1"],["(\\d{3})(\\d{2})(\\d{7,8})","$1 $2 $3",["1(?:6[023]|7)"],"0$1"],["(\\d{4})(\\d{2})(\\d{7})","$1 $2 $3",["15[279]"],"0$1"],["(\\d{3})(\\d{2})(\\d{8})","$1 $2 $3",["15"],"0$1"]],"0",0,0,0,0,0,[["32\\d{9,11}|49[1-6]\\d{10}|322\\d{6}|49[0-7]\\d{3,9}|(?:[34]0|[68]9)\\d{3,13}|(?:2(?:0[1-689]|[1-3569]\\d|4[0-8]|7[1-7]|8[0-7])|3(?:[3569]\\d|4[0-79]|7[1-7]|8[1-8])|4(?:1[02-9]|[2-48]\\d|5[0-6]|6[0-8]|7[0-79])|5(?:0[2-8]|[124-6]\\d|[38][0-8]|[79][0-7])|6(?:0[02-9]|[1-358]\\d|[47][0-8]|6[1-9])|7(?:0[2-8]|1[1-9]|[27][0-7]|3\\d|[4-6][0-8]|8[0-5]|9[013-7])|8(?:0[2-9]|1[0-79]|2\\d|3[0-46-9]|4[0-6]|5[013-9]|6[1-8]|7[0-8]|8[0-24-6])|9(?:0[6-9]|[1-4]\\d|[589][0-7]|6[0-8]|7[0-467]))\\d{3,12}",[5,6,7,8,9,10,11,12,13,14,15]],["15[0-25-9]\\d{8}|1(?:6[023]|7\\d)\\d{7,8}",[10,11]],["800\\d{7,12}",[10,11,12,13,14,15]],["(?:137[7-9]|900(?:[135]|9\\d))\\d{6}",[10,11]],["700\\d{8}",[11]],0,["18(?:1\\d{5,11}|[2-9]\\d{8})",[8,9,10,11,12,13,14]],["16(?:4\\d{1,10}|[89]\\d{1,11})",[4,5,6,7,8,9,10,11,12,13,14]],0,["180\\d{5,11}|13(?:7[1-6]\\d\\d|8)\\d{4}",[7,8,9,10,11,12,13,14]]]],"DJ":["253","00","(?:2\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[27]"]]],0,0,0,0,0,0,[["2(?:1[2-5]|7[45])\\d{5}"],["77\\d{6}"]]],"DK":["45","00","[2-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-9]"]]],0,0,0,0,0,0,[["(?:[2-7]\\d|8[126-9]|9[1-46-9])\\d{6}"],[""],["80\\d{6}"],["90\\d{6}"]]],"DM":["1","011","(?:[58]\\d\\d|767|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","767$1",0,"767",[["767(?:2(?:55|66)|4(?:2[01]|4[0-25-9])|50[0-4])\\d{4}"],["767(?:2(?:[2-4689]5|7[5-7])|31[5-7]|61[1-8]|70[1-6])\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"DO":["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,0,0,0,"8001|8[024]9",[["8(?:[04]9[2-9]\\d\\d|29(?:2(?:[0-59]\\d|6[04-9]|7[0-27]|8[0237-9])|3(?:[0-35-9]\\d|4[7-9])|[45]\\d\\d|6(?:[0-27-9]\\d|[3-5][1-9]|6[0135-8])|7(?:0[013-9]|[1-37]\\d|4[1-35689]|5[1-4689]|6[1-57-9]|8[1-79]|9[1-8])|8(?:0[146-9]|1[0-48]|[248]\\d|3[1-79]|5[01589]|6[013-68]|7[124-8]|9[0-8])|9(?:[0-24]\\d|3[02-46-9]|5[0-79]|60|7[0169]|8[57-9]|9[02-9])))\\d{4}"],["8[024]9[2-9]\\d{6}"],["8(?:00(?:14|[2-9]\\d)|(?:33|44|55|66|77|88)[2-9]\\d)\\d{5}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"DZ":["213","00","(?:[1-4]|[5-79]\\d|80)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["9"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-8]"],"0$1"]],"0",0,0,0,0,0,[["9619\\d{5}|(?:1\\d|2[013-79]|3[0-8]|4[013-689])\\d{6}"],["(?:5(?:4[0-29]|5\\d|6[0-2])|6(?:[569]\\d|7[0-6])|7[7-9]\\d)\\d{6}",[9]],["800\\d{6}",[9]],["80[3-689]1\\d{5}",[9]],0,0,0,0,["98[23]\\d{6}",[9]],["80[12]1\\d{5}",[9]]]],"EC":["593","00","1\\d{9,10}|(?:[2-7]|9\\d)\\d{7}",[8,9,10,11],[["(\\d)(\\d{3})(\\d{4})","$1 $2-$3",["[2-7]"],"(0$1)",0,"$1-$2-$3"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{3})(\\d{3,4})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[["[2-7][2-7]\\d{6}",[8]],["964[0-2]\\d{5}|9(?:39|[57][89]|6[0-36-9]|[89]\\d)\\d{6}",[9]],["1800\\d{7}|1[78]00\\d{6}",[10,11]],0,0,0,0,0,["[2-7]890\\d{4}",[8]]]],"EE":["372","00","8\\d{9}|[4578]\\d{7}|(?:[3-8]\\d|90)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88","[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88"]],["(\\d{4})(\\d{3,4})","$1 $2",["[45]|8(?:00|[1-49])","[45]|8(?:00[1-9]|[1-49])"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["(?:3[23589]|4[3-8]|6\\d|7[1-9]|88)\\d{5}",[7]],["(?:5\\d{5}|8(?:1(?:0(?:000|[3-9]\\d\\d)|(?:1(?:0[236]|1\\d)|(?:23|[3-79]\\d)\\d)\\d)|2(?:0(?:000|(?:19|[2-7]\\d)\\d)|(?:(?:[124-6]\\d|3[5-9])\\d|7(?:[3679]\\d|8[13-9])|8(?:[2-6]\\d|7[01]))\\d)|[349]\\d{4}))\\d\\d|5(?:(?:[02]\\d|5[0-478])\\d|1(?:[0-8]\\d|95)|6(?:4[0-4]|5[1-589]))\\d{3}",[7,8]],["800(?:(?:0\\d\\d|1)\\d|[2-9])\\d{3}"],["(?:40\\d\\d|900)\\d{4}",[7,8]],["70[0-2]\\d{5}",[8]]]],"EG":["20","00","[189]\\d{8,9}|[24-6]\\d{8}|[135]\\d{7}",[8,9,10],[["(\\d)(\\d{7,8})","$1 $2",["[23]"],"0$1"],["(\\d{2})(\\d{6,7})","$1 $2",["1[35]|[4-6]|8[2468]|9[235-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[189]"],"0$1"]],"0",0,0,0,0,0,[["13[23]\\d{6}|(?:15|57)\\d{6,7}|(?:2[2-4]|3|4[05-8]|5[05]|6[24-689]|8[2468]|9[235-7])\\d{7}",[8,9]],["1[0-25]\\d{8}",[10]],["800\\d{7}",[10]],["900\\d{7}",[10]]]],"EH":["212","00","[5-8]\\d{8}",[9],0,"0",0,0,0,0,"528[89]",[["528[89]\\d{5}"],["(?:6(?:[0-79]\\d|8[0-247-9])|7(?:[017]\\d|2[0-2]|6[0-8]|8[0-3]))\\d{6}"],["80\\d{7}"],["89\\d{7}"],0,0,0,0,["592(?:4[0-2]|93)\\d{4}"]]],"ER":["291","00","[178]\\d{6}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[178]"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:1[12568]|[24]0|55|6[146])|8\\d\\d)\\d{4}"],["(?:17[1-3]|7\\d\\d)\\d{4}"]]],"ES":["34","00","[5-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]00"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-9]"]]],0,0,0,0,0,0,[["96906(?:0[0-8]|1[1-9]|[2-9]\\d)\\d\\d|9(?:69(?:0[0-57-9]|[1-9]\\d)|73(?:[0-8]\\d|9[1-9]))\\d{4}|(?:8(?:[1356]\\d|[28][0-8]|[47][1-9])|9(?:[135]\\d|[268][0-8]|4[1-9]|7[124-9]))\\d{6}"],["(?:590[16]00\\d|9(?:6906(?:09|10)|7390\\d\\d))\\d\\d|(?:6\\d|7[1-48])\\d{7}"],["[89]00\\d{6}"],["80[367]\\d{6}"],["70\\d{7}"],0,["51\\d{7}"],0,0,["90[12]\\d{6}"]]],"ET":["251","00","(?:11|[2-579]\\d)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-579]"],"0$1"]],"0",0,0,0,0,0,[["11667[01]\\d{3}|(?:11(?:1(?:1[124]|2[2-7]|3[1-5]|5[5-8]|8[6-8])|2(?:13|3[6-8]|5[89]|7[05-9]|8[2-6])|3(?:2[01]|3[0-289]|4[1289]|7[1-4]|87)|4(?:1[69]|3[2-49]|4[0-3]|6[5-8])|5(?:1[578]|44|5[0-4])|6(?:1[78]|2[69]|39|4[5-7]|5[1-5]|6[0-59]|8[015-8]))|2(?:2(?:11[1-9]|22[0-7]|33\\d|44[1467]|66[1-68])|5(?:11[124-6]|33[2-8]|44[1467]|55[14]|66[1-3679]|77[124-79]|880))|3(?:3(?:11[0-46-8]|(?:22|55)[0-6]|33[0134689]|44[04]|66[01467])|4(?:44[0-8]|55[0-69]|66[0-3]|77[1-5]))|4(?:6(?:119|22[0-24-7]|33[1-5]|44[13-69]|55[14-689]|660|88[1-4])|7(?:(?:11|22)[1-9]|33[13-7]|44[13-6]|55[1-689]))|5(?:7(?:227|55[05]|(?:66|77)[14-8])|8(?:11[149]|22[013-79]|33[0-68]|44[013-8]|550|66[1-5]|77\\d)))\\d{4}"],["7001\\d{5}|(?:7(?:0[1-9]|1[01]|77|86|99)|9\\d\\d)\\d{6}"]]],"FI":["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","[1-35689]\\d{4}|7\\d{10,11}|(?:[124-7]\\d|3[0-46-9])\\d{8}|[1-9]\\d{5,8}",[5,6,7,8,9,10,11,12],[["(\\d)(\\d{4,9})","$1 $2",["[2568][1-8]|3(?:0[1-9]|[1-9])|9"],"0$1"],["(\\d{3})(\\d{3,7})","$1 $2",["[12]00|[368]|70[07-9]"],"0$1"],["(\\d{2})(\\d{4,8})","$1 $2",["[1245]|7[135]"],"0$1"],["(\\d{2})(\\d{6,10})","$1 $2",["7"],"0$1"]],"0",0,0,0,0,"1[03-79]|[2-9]",[["(?:1[3-79][1-8]|[235689][1-8]\\d)\\d{2,6}",[5,6,7,8,9]],["4946\\d{2,6}|(?:4[0-8]|50)\\d{4,8}",[6,7,8,9,10]],["800\\d{4,6}",[7,8,9]],["[67]00\\d{5,6}",[8,9]],0,0,["20\\d{4,8}|60[12]\\d{5,6}|7(?:099\\d{4,5}|5[03-9]\\d{3,7})|20[2-59]\\d\\d|(?:606|7(?:0[78]|1|3\\d))\\d{7}|(?:10|29|3[09]|70[1-5]\\d)\\d{4,8}"]],"00"],"FJ":["679","0(?:0|52)","45\\d{5}|(?:0800\\d|[235-9])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1 $2",["[235-9]|45"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]]],0,0,0,0,0,0,[["603\\d{4}|(?:3[0-5]|6[25-7]|8[58])\\d{5}",[7]],["(?:[279]\\d|45|5[01568]|8[034679])\\d{5}",[7]],["0800\\d{7}",[11]]],"00"],"FK":["500","00","[2-7]\\d{4}",[5],0,0,0,0,0,0,0,[["[2-47]\\d{4}"],["[56]\\d{4}"]]],"FM":["691","00","(?:[39]\\d\\d|820)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[389]"]]],0,0,0,0,0,0,[["31(?:00[67]|208|309)\\d\\d|(?:3(?:[2357]0[1-9]|602|804|905)|(?:820|9[2-6]\\d)\\d)\\d{3}"],["31(?:00[67]|208|309)\\d\\d|(?:3(?:[2357]0[1-9]|602|804|905)|(?:820|9[2-7]\\d)\\d)\\d{3}"]]],"FO":["298","00","[2-9]\\d{5}",[6],[["(\\d{6})","$1",["[2-9]"]]],0,0,"(10(?:01|[12]0|88))",0,0,0,[["(?:20|[34]\\d|8[19])\\d{4}"],["(?:[27][1-9]|5\\d|9[16])\\d{4}"],["80[257-9]\\d{3}"],["90(?:[13-5][15-7]|2[125-7]|9\\d)\\d\\d"],0,0,0,0,["(?:6[0-36]|88)\\d{4}"]]],"FR":["33","00","[1-9]\\d{8}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0 $1"],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[1-79]"],"0$1"]],"0",0,0,0,0,0,[["(?:[1-35]\\d|4[1-9])\\d{7}"],["(?:6(?:[0-24-8]\\d|3[0-8]|9[589])|7(?:00|[3-9]\\d))\\d{6}"],["80[0-5]\\d{6}"],["836(?:0[0-36-9]|[1-9]\\d)\\d{4}|8(?:1[2-9]|2[2-47-9]|3[0-57-9]|[569]\\d|8[0-35-9])\\d{6}"],0,0,["80[6-9]\\d{6}"],0,["9\\d{8}"],["8(?:1[01]|2[0156]|4[02]|84)\\d{6}"]]],"GA":["241","00","(?:[067]\\d|11)\\d{6}|[2-7]\\d{6}",[7,8],[["(\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-7]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["11|[67]"],"0$1"]],0,0,"0(11\\d{6}|60\\d{6}|61\\d{6}|6[256]\\d{6}|7[467]\\d{6})","$1",0,0,[["[01]1\\d{6}",[8]],["(?:(?:0[2-7]|7[467])\\d|6(?:0[0-4]|10|[256]\\d))\\d{5}|[2-7]\\d{6}"]]],"GB":["44","00","[1-357-9]\\d{9}|[18]\\d{8}|8\\d{6}",[7,9,10],[["(\\d{3})(\\d{4})","$1 $2",["800","8001","80011","800111","8001111"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["845","8454","84546","845464"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["800"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["1(?:38|5[23]|69|76|94)","1(?:(?:38|69)7|5(?:24|39)|768|946)","1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["1(?:[2-69][02-9]|[78])"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[25]|7(?:0|6[02-9])","[25]|7(?:0|6(?:[03-9]|2[356]))"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[1389]"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:1(?:3(?:[0-58]\\d\\d|73[0235])|4(?:[0-5]\\d\\d|69[7-9]|70[013579])|(?:(?:5[0-26-9]|[78][0-49])\\d|6(?:[0-4]\\d|50))\\d)|2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\d)\\d\\d|1(?:[0-7]\\d\\d|8(?:[02]\\d|1[0-246-9])))|(?:3(?:0\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\d\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\d{3})\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\d)|76\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\d|7[4-79])|295[5-7]|35[34]\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\d{3}",[9,10]],["7(?:457[0-57-9]|700[01]|911[028])\\d{5}|7(?:[1-3]\\d\\d|4(?:[0-46-9]\\d|5[0-689])|5(?:0[0-8]|[13-9]\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\d|8[02-9]|9[0-689])|8(?:[014-9]\\d|[23][0-8])|9(?:[024-9]\\d|1[02-9]|3[0-689]))\\d{6}",[10]],["80[08]\\d{7}|800\\d{6}|8001111"],["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[2-49]))\\d{7}|845464\\d",[7,10]],["70\\d{8}",[10]],0,["(?:3[0347]|55)\\d{8}",[10]],["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}",[10]],["56\\d{8}",[10]]],0," x"],"GD":["1","011","(?:473|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","473$1",0,"473",[["473(?:2(?:3[0-2]|69)|3(?:2[89]|86)|4(?:[06]8|3[5-9]|4[0-49]|5[5-79]|73|90)|63[68]|7(?:58|84)|800|938)\\d{4}"],["473(?:4(?:0[2-79]|1[04-9]|2[0-5]|58)|5(?:2[01]|3[3-8])|901)\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"GE":["995","00","(?:[3-57]\\d\\d|800)\\d{6}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["32"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[57]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[348]"],"0$1"]],"0",0,0,0,0,0,[["(?:3(?:[256]\\d|4[124-9]|7[0-4])|4(?:1\\d|2[2-7]|3[1-79]|4[2-8]|7[239]|9[1-7]))\\d{6}"],["5(?:(?:0555|1(?:[17]77|555))[5-9]|757(?:7[7-9]|8[01]))\\d{3}|5(?:0070|11(?:33|51)|[25]222|3333)[0-4]\\d{3}|5(?:00(?:0\\d|5[05])|11(?:00|[124]\\d|3[01])|5200|75(?:00|[57]5)|8(?:0(?:[01]\\d|2[0-4])|58[89]|8(?:55|88)))\\d{4}|(?:5(?:[14]4|5[0157-9]|68|7[0147-9]|9[1-35-9])|790)\\d{6}"],["800\\d{6}"],0,0,0,0,0,["70[67]\\d{6}"]]],"GF":["594","00","(?:[56]94|80\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["594(?:[0239]\\d|1[0-2]|4[03-9]|5[6-9]|6[0-3]|80)\\d{4}"],["694(?:[0-249]\\d|3[0-8])\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976\\d{6}"]]],"GG":["44","00","(?:1481|[357-9]\\d{3})\\d{6}|8\\d{6}(?:\\d{2})?",[7,9,10],0,"0",0,"0|([25-9]\\d{5})$","1481$1",0,0,[["1481[25-9]\\d{5}",[10]],["7(?:(?:781|839)\\d|911[17])\\d{5}",[10]],["80[08]\\d{7}|800\\d{6}|8001111"],["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[0-3]))\\d{7}|845464\\d",[7,10]],["70\\d{8}",[10]],0,["(?:3[0347]|55)\\d{8}",[10]],["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}",[10]],["56\\d{8}",[10]]]],"GH":["233","00","(?:[235]\\d{3}|800)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[235]"],"0$1"]],"0",0,0,0,0,0,[["3082[0-5]\\d{4}|3(?:0(?:[237]\\d|8[01])|[167](?:2[0-6]|7\\d|80)|2(?:2[0-5]|7\\d|80)|3(?:2[0-3]|7\\d|80)|4(?:2[013-9]|3[01]|7\\d|80)|5(?:2[0-7]|7\\d|80)|8(?:2[0-2]|7\\d|80)|9(?:[28]0|7\\d))\\d{5}",[9]],["(?:2(?:[0346-9]\\d|5[67])|5(?:[0457]\\d|6[01]|9[1-9]))\\d{6}",[9]],["800\\d{5}",[8]]]],"GI":["350","00","(?:[25]\\d\\d|606)\\d{5}",[8],[["(\\d{3})(\\d{5})","$1 $2",["2"]]],0,0,0,0,0,0,[["21(?:6[24-7]\\d|90[0-2])\\d{3}|2(?:00|2[25])\\d{5}"],["(?:5[146-8]\\d|606)\\d{5}"]]],"GL":["299","00","(?:19|[2-689]\\d|70)\\d{4}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["19|[2-9]"]]],0,0,0,0,0,0,[["(?:19|3[1-7]|6[14689]|70|8[14-79]|9\\d)\\d{4}"],["[245]\\d{5}"],["80\\d{4}"],0,0,0,0,0,["3[89]\\d{4}"]]],"GM":["220","00","[2-9]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]],0,0,0,0,0,0,[["(?:4(?:[23]\\d\\d|4(?:1[024679]|[6-9]\\d))|5(?:5(?:3\\d|4[0-7])|6[67]\\d|7(?:1[04]|2[035]|3[58]|48))|8\\d{3})\\d{3}"],["(?:[23679]\\d|5[0-389])\\d{5}"]]],"GN":["224","00","722\\d{6}|(?:3|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["3"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[67]"]]],0,0,0,0,0,0,[["3(?:0(?:24|3[12]|4[1-35-7]|5[13]|6[189]|[78]1|9[1478])|1\\d\\d)\\d{4}",[8]],["6[0-356]\\d{7}",[9]],0,0,0,0,0,0,["722\\d{6}",[9]]]],"GP":["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["590(?:0[1-68]|[14][0-24-9]|2[0-68]|3[1289]|5[3-579]|6[0-289]|7[08]|8[0-689]|9\\d)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],"GQ":["240","00","222\\d{6}|(?:3\\d|55|[89]0)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235]"]],["(\\d{3})(\\d{6})","$1 $2",["[89]"]]],0,0,0,0,0,0,[["33[0-24-9]\\d[46]\\d{4}|3(?:33|5\\d)\\d[7-9]\\d{4}"],["(?:222|55\\d)\\d{6}"],["80\\d[1-9]\\d{5}"],["90\\d[1-9]\\d{5}"]]],"GR":["30","00","5005000\\d{3}|8\\d{9,11}|(?:[269]\\d|70)\\d{8}",[10,11,12],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["21|7"]],["(\\d{4})(\\d{6})","$1 $2",["2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2689]"]],["(\\d{3})(\\d{3,4})(\\d{5})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["2(?:1\\d\\d|2(?:2[1-46-9]|[36][1-8]|4[1-7]|5[1-4]|7[1-5]|[89][1-9])|3(?:1\\d|2[1-57]|[35][1-3]|4[13]|7[1-7]|8[124-6]|9[1-79])|4(?:1\\d|2[1-8]|3[1-4]|4[13-5]|6[1-578]|9[1-5])|5(?:1\\d|[29][1-4]|3[1-5]|4[124]|5[1-6])|6(?:1\\d|[269][1-6]|3[1245]|4[1-7]|5[13-9]|7[14]|8[1-5])|7(?:1\\d|2[1-5]|3[1-6]|4[1-7]|5[1-57]|6[135]|9[125-7])|8(?:1\\d|2[1-5]|[34][1-4]|9[1-57]))\\d{6}",[10]],["68[57-9]\\d{7}|(?:69|94)\\d{8}",[10]],["800\\d{7,9}"],["90[19]\\d{7}",[10]],["70\\d{8}",[10]],0,["5005000\\d{3}",[10]],0,0,["8(?:0[16]|12|[27]5|50)\\d{7}",[10]]]],"GT":["502","00","(?:1\\d{3}|[2-7])\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[["[267][2-9]\\d{6}",[8]],["[3-5]\\d{7}",[8]],["18[01]\\d{8}",[11]],["19\\d{9}",[11]]]],"GU":["1","011","(?:[58]\\d\\d|671|900)\\d{7}",[10],0,"1",0,"1|([3-9]\\d{6})$","671$1",0,"671",[["671(?:3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[0236-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[0479]7|2[0167]|3[45]|8[7-9])|8(?:[2-57-9]8|6[48])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[78]))\\d{4}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"GW":["245","00","[49]\\d{8}|4\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["40"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"]]],0,0,0,0,0,0,[["443\\d{6}",[9]],["9(?:5\\d|6[569]|77)\\d{6}",[9]],0,0,0,0,0,0,["40\\d{5}",[7]]]],"GY":["592","001","9008\\d{3}|(?:[2-467]\\d\\d|862)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-46-9]"]]],0,0,0,0,0,0,[["(?:2(?:1[6-9]|2[0-35-9]|3[1-4]|5[3-9]|6\\d|7[0-24-79])|3(?:2[25-9]|3\\d)|4(?:4[0-24]|5[56])|77[1-57])\\d{4}"],["(?:6\\d\\d|70[015-7])\\d{4}"],["(?:289|862)\\d{4}"],["9008\\d{3}"]]],"HK":["852","00(?:30|5[09]|[126-9]?)","8[0-46-9]\\d{6,7}|9\\d{4,7}|(?:[2-7]|9\\d{3})\\d{7}",[5,6,7,8,9,11],[["(\\d{3})(\\d{2,5})","$1 $2",["900","9003"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[1-4]|9(?:0[1-9]|[1-8])"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]],["(\\d{3})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]],0,0,0,0,0,0,[["(?:2(?:[13-9]\\d|2[013-9])\\d|3(?:(?:[1569][0-24-9]|4[0-246-9]|7[0-24-69])\\d|8(?:[45][0-8]|6[01]|9\\d))|58(?:0[1-8]|1[2-9]))\\d{4}",[8]],["(?:4(?:44[5-9]|6(?:0[0-7]|1[0-6]|4[0-57-9]|6[0-4]|7[0-8]))|573[0-6]|6(?:26[013-8]|66[0-3])|70(?:7[1-5]|8[0-4])|848[015-9]|9(?:29[013-9]|59[0-4]))\\d{4}|(?:4(?:4[01]|6[2358])|5(?:[1-59][0-46-9]|6[0-4689]|7[0-246-9])|6(?:0[1-9]|[13-59]\\d|[268][0-57-9]|7[0-79])|84[09]|9(?:0[1-9]|1[02-9]|[2358][0-8]|[467]\\d))\\d{5}",[8]],["800\\d{6}",[9]],["900(?:[0-24-9]\\d{7}|3\\d{1,4})",[5,6,7,8,11]],["8(?:1[0-4679]\\d|2(?:[0-36]\\d|7[0-4])|3(?:[034]\\d|2[09]|70))\\d{4}",[8]],0,["30(?:0[1-9]|[15-7]\\d|2[047]|89)\\d{4}",[8]],["7(?:1(?:0[0-38]|1[0-3679]|3[013]|69|9[0136])|2(?:[02389]\\d|1[18]|7[27-9])|3(?:[0-38]\\d|7[0-369]|9[2357-9])|47\\d|5(?:[178]\\d|5[0-5])|6(?:0[0-7]|2[236-9]|[35]\\d)|7(?:[27]\\d|8[7-9])|8(?:[23689]\\d|7[1-9])|9(?:[025]\\d|6[0-246-8]|7[0-36-9]|8[238]))\\d{4}",[8]]],"00"],"HN":["504","00","8\\d{10}|[237-9]\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1-$2",["[237-9]"]]],0,0,0,0,0,0,[["2(?:2(?:0[0-359]|1[1-367]|[23]\\d|4[03-6]|5[57]|6[245]|7[0135689]|8[01346-9]|9[0-2])|4(?:0[78]|2[3-59]|3[13-9]|4[0-68]|5[1-35])|5(?:0[7-9]|16|4[03-5]|5\\d|6[014-6]|7[04]|80)|6(?:[056]\\d|17|2[067]|3[04]|4[0-378]|[78][0-8]|9[01])|7(?:6[46-9]|7[02-9]|8[034]|91)|8(?:79|8[0-357-9]|9[1-57-9]))\\d{4}",[8]],["[37-9]\\d{7}",[8]],["8002\\d{7}",[11]]]],"HR":["385","00","(?:[24-69]\\d|3[0-79])\\d{7}|80\\d{5,7}|[1-79]\\d{7}|6\\d{5,6}",[6,7,8,9],[["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["6[01]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{4})(\\d{3})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-5]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"]],"0",0,0,0,0,0,[["1\\d{7}|(?:2[0-3]|3[1-5]|4[02-47-9]|5[1-3])\\d{6,7}",[8,9]],["98\\d{6,7}|975(?:1\\d|77|9[67])\\d{4}|9(?:0[1-9]|[1259]\\d|7[0679])\\d{6}",[8,9]],["80[01]\\d{4,6}",[7,8,9]],["6[01459]\\d{6}|6[01]\\d{4,5}",[6,7,8]],["7[45]\\d{6}",[8]],0,["62\\d{6,7}|72\\d{6}",[8,9]]]],"HT":["509","00","[2-489]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[2-489]"]]],0,0,0,0,0,0,[["2(?:2\\d|5[1-5]|81|9[149])\\d{5}"],["[34]\\d{7}"],["8\\d{7}"],0,0,0,0,0,["9(?:[67][0-4]|8[0-3589]|9\\d)\\d{5}"]]],"HU":["36","00","[235-7]\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"06 $1"]],"06",0,0,0,0,0,[["(?:1\\d|[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6[23689]|8[2-57-9]|9[2-69])\\d{6}",[8]],["(?:[257]0|3[01])\\d{7}",[9]],["(?:[48]0\\d|680[29])\\d{5}"],["9[01]\\d{6}",[8]],0,0,["38\\d{7}",[9]],0,["21\\d{7}",[9]]]],"ID":["62","00[89]","(?:(?:00[1-9]|8\\d)\\d{4}|[1-36])\\d{6}|00\\d{10}|[1-9]\\d{8,10}|[2-9]\\d{7}",[7,8,9,10,11,12,13],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["15"]],["(\\d{2})(\\d{5,9})","$1 $2",["2[124]|[36]1"],"(0$1)"],["(\\d{3})(\\d{5,7})","$1 $2",["800"],"0$1"],["(\\d{3})(\\d{5,8})","$1 $2",["[2-79]"],"(0$1)"],["(\\d{3})(\\d{3,4})(\\d{3})","$1-$2-$3",["8[1-35-9]"],"0$1"],["(\\d{3})(\\d{6,8})","$1 $2",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["804"],"0$1"],["(\\d{3})(\\d)(\\d{3})(\\d{3})","$1 $2 $3 $4",["80"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1-$2-$3",["8"],"0$1"]],"0",0,0,0,0,0,[["2[124]\\d{7,8}|619\\d{8}|2(?:1(?:14|500)|2\\d{3})\\d{3}|61\\d{5,8}|(?:2(?:[35][1-4]|6[0-8]|7[1-6]|8\\d|9[1-8])|3(?:1|[25][1-8]|3[1-68]|4[1-3]|6[1-3568]|7[0-469]|8\\d)|4(?:0[1-589]|1[01347-9]|2[0-36-8]|3[0-24-68]|43|5[1-378]|6[1-5]|7[134]|8[1245])|5(?:1[1-35-9]|2[25-8]|3[124-9]|4[1-3589]|5[1-46]|6[1-8])|6(?:[25]\\d|3[1-69]|4[1-6])|7(?:02|[125][1-9]|[36]\\d|4[1-8]|7[0-36-9])|9(?:0[12]|1[013-8]|2[0-479]|5[125-8]|6[23679]|7[159]|8[01346]))\\d{5,8}",[7,8,9,10,11]],["8[1-35-9]\\d{7,10}",[9,10,11,12]],["00[17]803\\d{7}|(?:177\\d|800)\\d{5,7}|001803\\d{6}",[8,9,10,11,12,13]],["809\\d{7}",[10]],0,0,["(?:1500|8071\\d{3})\\d{3}",[7,10]],0,0,["804\\d{7}",[10]]]],"IE":["353","00","(?:1\\d|[2569])\\d{6,8}|4\\d{6,9}|7\\d{8}|8\\d{8,9}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["2[24-9]|47|58|6[237-9]|9[35-9]"],"(0$1)"],["(\\d{3})(\\d{5})","$1 $2",["[45]0"],"(0$1)"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["1"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2569]|4[1-69]|7[14]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["81"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[78]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["4"],"(0$1)"],["(\\d{2})(\\d)(\\d{3})(\\d{4})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["(?:1\\d|21)\\d{6,7}|(?:2[24-9]|4(?:0[24]|5\\d|7)|5(?:0[45]|1\\d|8)|6(?:1\\d|[237-9])|9(?:1\\d|[35-9]))\\d{5}|(?:23|4(?:[1-469]|8\\d)|5[23679]|6[4-6]|7[14]|9[04])\\d{7}"],["8(?:22|[35-9]\\d)\\d{6}",[9]],["1800\\d{6}",[10]],["15(?:1[2-8]|[2-8]0|9[089])\\d{6}",[10]],["700\\d{6}",[9]],0,["818\\d{6}",[9]],0,["76\\d{7}",[9]],["18[59]0\\d{6}",[10]]]],"IL":["972","0(?:0|1[2-9])","1\\d{6}(?:\\d{3,5})?|[57]\\d{8}|[1-489]\\d{7}",[7,8,9,10,11,12],[["(\\d{4})(\\d{3})","$1-$2",["125"]],["(\\d{4})(\\d{2})(\\d{2})","$1-$2-$3",["121"]],["(\\d)(\\d{3})(\\d{4})","$1-$2-$3",["[2-489]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1-$2-$3",["12"]],["(\\d{4})(\\d{6})","$1-$2",["159"]],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3-$4",["1[7-9]"]],["(\\d{3})(\\d{1,2})(\\d{3})(\\d{4})","$1-$2 $3-$4",["15"]]],"0",0,0,0,0,0,[["153\\d{8,9}|29[1-9]\\d{5}|(?:2[0-8]|[3489]\\d)\\d{6}",[8,11,12]],["5(?:(?:[02368]\\d|[19][2-9]|4[1-9])\\d|5(?:01|1[79]|2[2-9]|3[0-3]|4[34]|5[015689]|6[6-8]|7[0-267]|8[7-9]|9[1-9]))\\d{5}",[9]],["1(?:255|80[019]\\d{3})\\d{3}",[7,10]],["1212\\d{4}|1(?:200|9(?:0[0-2]|19))\\d{6}",[8,10]],0,0,["1599\\d{6}",[10]],0,["7(?:380|8(?:33|55|77|81))\\d{5}|7(?:18|2[23]|3[237]|47|6[258]|7\\d|82|9[2-9])\\d{6}",[9]],["1700\\d{6}",[10]]]],"IM":["44","00","1624\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([25-8]\\d{5})$","1624$1",0,"74576|(?:16|7[56])24",[["1624(?:230|[5-8]\\d\\d)\\d{3}"],["76245[06]\\d{4}|7(?:4576|[59]24\\d|624[0-4689])\\d{5}"],["808162\\d{4}"],["8(?:440[49]06|72299\\d)\\d{3}|(?:8(?:45|70)|90[0167])624\\d{4}"],["70\\d{8}"],0,["3440[49]06\\d{3}|(?:3(?:08162|3\\d{4}|45624|7(?:0624|2299))|55\\d{4})\\d{4}"],0,["56\\d{8}"]]],"IN":["91","00","(?:000800|[2-9]\\d\\d)\\d{7}|1\\d{7,12}",[8,9,10,11,12,13],[["(\\d{8})","$1",["5(?:0|2[23]|3[03]|[67]1|88)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)"],0,1],["(\\d{4})(\\d{4,5})","$1 $2",["180","1800"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["140"],0,1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["11|2[02]|33|4[04]|79[1-7]|80[2-46]","11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])","11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]"],"0$1",1],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807","1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]","1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\d|7(?:1(?:[013-8]\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\d|5[0-367])|70[13-7]))[2-7]"],"0$1",1],["(\\d{5})(\\d{5})","$1 $2",["[6-9]"],"0$1",1],["(\\d{4})(\\d{2,4})(\\d{4})","$1 $2 $3",["1(?:6|8[06])","1(?:6|8[06]0)"],0,1],["(\\d{4})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["18"],0,1]],"0",0,0,0,0,0,[["2717(?:[2-7]\\d|95)\\d{4}|(?:271[0-689]|782[0-6])[2-7]\\d{5}|(?:170[24]|2(?:(?:[02][2-79]|90)\\d|80[13468])|(?:3(?:23|80)|683|79[1-7])\\d|4(?:20[24]|72[2-8])|552[1-7])\\d{6}|(?:11|33|4[04]|80)[2-7]\\d{7}|(?:342|674|788)(?:[0189][2-7]|[2-7]\\d)\\d{5}|(?:1(?:2[0-249]|3[0-25]|4[145]|[59][14]|6[014]|7[1257]|8[01346])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])|3(?:26|4[13]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[014-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91))[2-7]\\d{6}|(?:1(?:2[35-8]|3[346-9]|4[236-9]|[59][0235-9]|6[235-9]|7[34689]|8[257-9])|2(?:1[134689]|3[24-8]|4[2-8]|5[25689]|6[2-4679]|7[3-79]|8[2-479]|9[235-9])|3(?:01|1[79]|2[1245]|4[5-8]|5[125689]|6[235-7]|7[157-9]|8[2-46-8])|4(?:1[14578]|2[5689]|3[2-467]|5[4-7]|6[35]|73|8[2689]|9[2389])|5(?:[16][146-9]|2[14-8]|3[1346]|4[14-69]|5[46]|7[2-4]|8[2-8]|9[246])|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])|7(?:1[013-9]|2[0235-9]|3[2679]|4[1-35689]|5[2-46-9]|[67][02-9]|8[013-7]|9[089])|8(?:1[1357-9]|2[235-8]|3[03-57-9]|4[0-24-9]|5\\d|6[2457-9]|7[1-6]|8[1256]|9[2-4]))\\d[2-7]\\d{5}",[10]],["(?:61279|7(?:887[02-9]|9(?:313|79[07-9]))|8(?:079[04-9]|(?:84|91)7[02-8]))\\d{5}|(?:6(?:12|[2-47]1|5[17]|6[13]|80)[0189]|7(?:1(?:2[0189]|9[0-5])|2(?:[14][017-9]|8[0-59])|3(?:2[5-8]|[34][017-9]|9[016-9])|4(?:1[015-9]|[29][89]|39|8[389])|5(?:[15][017-9]|2[04-9]|9[7-9])|6(?:0[0-47]|1[0-257-9]|2[0-4]|3[19]|5[4589])|70[0289]|88[089]|97[02-8])|8(?:0(?:6[67]|7[02-8])|70[017-9]|84[01489]|91[0-289]))\\d{6}|(?:7(?:31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[0189]\\d|7[02-8])\\d{5}|(?:6(?:[09]\\d|1[04679]|2[03689]|3[05-9]|4[0489]|50|6[069]|7[07]|8[7-9])|7(?:0\\d|2[0235-79]|3[05-8]|40|5[0346-8]|6[6-9]|7[1-9]|8[0-79]|9[089])|8(?:0[01589]|1[0-57-9]|2[235-9]|3[03-57-9]|[45]\\d|6[02457-9]|7[1-69]|8[0-25-9]|9[02-9])|9\\d\\d)\\d{7}|(?:6(?:(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|8[124-6])\\d|7(?:[235689]\\d|4[0189]))|7(?:1(?:[013-8]\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-5])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\d|5[0-367])|70[13-7]|881))[0189]\\d{5}",[10]],["000800\\d{7}|1(?:600\\d{6}|80(?:0\\d{4,9}|3\\d{9}))"],["186[12]\\d{9}",[13]],0,0,["140\\d{7}",[10]],0,0,["1860\\d{7}",[11]]]],"IO":["246","00","3\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["3"]]],0,0,0,0,0,0,[["37\\d{5}"],["38\\d{5}"]]],"IQ":["964","00","(?:1|7\\d\\d)\\d{7}|[2-6]\\d{7,8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-6]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[["1\\d{7}|(?:2[13-5]|3[02367]|4[023]|5[03]|6[026])\\d{6,7}",[8,9]],["7[3-9]\\d{8}",[10]]]],"IR":["98","00","[1-9]\\d{9}|(?:[1-8]\\d\\d|9)\\d{3,4}",[4,5,6,7,10],[["(\\d{4,5})","$1",["96"],"0$1"],["(\\d{2})(\\d{4,5})","$1 $2",["(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[1-8]"],"0$1"]],"0",0,0,0,0,0,[["(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])(?:[03-57]\\d{7}|[16]\\d{3}(?:\\d{4})?|[289]\\d{3}(?:\\d(?:\\d{3})?)?)|94(?:000[09]|2(?:121|[2689]0\\d)|30[0-2]\\d|4(?:111|40\\d))\\d{4}",[6,7,10]],["9(?:(?:0(?:[0-35]\\d|4[4-6])|(?:[13]\\d|2[0-3])\\d)\\d|9(?:[0-46]\\d\\d|5[15]0|8(?:1\\d|88)|9(?:0[0-3]|[19]\\d|21|77|8[7-9])))\\d{5}",[10]],0,0,0,0,["96(?:0[12]|2[16-8]|3(?:08|[14]5|[23]|66)|4(?:0|80)|5[01]|6[89]|86|9[19])",[4,5]]]],"IS":["354","00|1(?:0(?:01|[12]0)|100)","(?:38\\d|[4-9])\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["[4-9]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["3"]]],0,0,0,0,0,0,[["(?:4(?:1[0-24-69]|2[0-7]|[37][0-8]|4[0-24589]|5[0-68]|6\\d|8[0-36-8])|5(?:05|[156]\\d|2[02578]|3[0-579]|4[03-7]|7[0-2578]|8[0-35-9]|9[013-689])|872)\\d{4}",[7]],["(?:38[589]\\d\\d|6(?:1[1-8]|2[0-6]|3[026-9]|4[014679]|5[0159]|6[0-69]|70|8[06-8]|9\\d)|7(?:5[057]|[6-9]\\d)|8(?:2[0-59]|[3-69]\\d|8[238]))\\d{4}"],["80[0-8]\\d{4}",[7]],["90(?:0\\d|1[5-79]|2[015-79]|3[135-79]|4[125-7]|5[25-79]|7[1-37]|8[0-35-7])\\d{3}",[7]],0,0,["809\\d{4}",[7]],0,["49[0-24-79]\\d{4}",[7]]],"00"],"IT":["39","00","0\\d{5,10}|1\\d{8,10}|3(?:[0-8]\\d{7,10}|9\\d{7,8})|(?:55|70)\\d{8}|8\\d{5}(?:\\d{2,4})?",[6,7,8,9,10,11],[["(\\d{2})(\\d{4,6})","$1 $2",["0[26]"]],["(\\d{3})(\\d{3,6})","$1 $2",["0[13-57-9][0159]|8(?:03|4[17]|9[2-5])","0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))"]],["(\\d{4})(\\d{2,6})","$1 $2",["0(?:[13-579][2-46-8]|8[236-8])"]],["(\\d{4})(\\d{4})","$1 $2",["894"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[26]|5"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["1(?:44|[679])|[378]"]],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[13-57-9][0159]|14"]],["(\\d{2})(\\d{4})(\\d{5})","$1 $2 $3",["0[26]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["3"]]],0,0,0,0,0,0,[["0669[0-79]\\d{1,6}|0(?:1(?:[0159]\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\d\\d|3(?:[0159]\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\d|6[0-8])|7(?:[0159]\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\d{2,7}"],["3[1-9]\\d{8}|3[2-9]\\d{7}",[9,10]],["80(?:0\\d{3}|3)\\d{3}",[6,9]],["(?:0878\\d{3}|89(?:2\\d|3[04]|4(?:[0-4]|[5-9]\\d\\d)|5[0-4]))\\d\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\d{6}",[6,8,9,10]],["1(?:78\\d|99)\\d{6}",[9,10]],0,0,0,["55\\d{8}",[10]],["84(?:[08]\\d{3}|[17])\\d{3}",[6,9]]]],"JE":["44","00","1534\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([0-24-8]\\d{5})$","1534$1",0,0,[["1534[0-24-8]\\d{5}"],["7(?:(?:(?:50|82)9|937)\\d|7(?:00[378]|97[7-9]))\\d{5}"],["80(?:07(?:35|81)|8901)\\d{4}"],["(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\d{4}"],["701511\\d{4}"],0,["(?:3(?:0(?:07(?:35|81)|8901)|3\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\d{4})\\d{4}"],["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}"],["56\\d{8}"]]],"JM":["1","011","(?:[58]\\d\\d|658|900)\\d{7}",[10],0,"1",0,0,0,0,"658|876",[["8766060\\d{3}|(?:658(?:2(?:[0-8]\\d|9[0-46-9])|[3-9]\\d\\d)|876(?:52[35]|6(?:0[1-3579]|1[02357-9]|[23]\\d|40|5[06]|6[2-589]|7[025-7]|8[04]|9[4-9])|7(?:0[2-689]|[1-6]\\d|8[056]|9[45])|9(?:0[1-8]|1[02378]|[2-8]\\d|9[2-468])))\\d{4}"],["(?:658295|876(?:2(?:0[1-9]|[13-9]\\d|2[013-9])|[348]\\d\\d|5(?:0[1-9]|[1-9]\\d)|6(?:4[89]|6[67])|7(?:0[07]|7\\d|8[1-47-9]|9[0-36-9])|9(?:[01]9|9[0579])))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"JO":["962","00","(?:(?:[2689]|7\\d)\\d|32|53)\\d{6}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2356]|87"],"(0$1)"],["(\\d{3})(\\d{5,6})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["70"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[["87(?:000|90[01])\\d{3}|(?:2(?:6(?:2[0-35-9]|3[0-578]|4[24-7]|5[0-24-8]|[6-8][023]|9[0-3])|7(?:0[1-79]|10|2[014-7]|3[0-689]|4[019]|5[0-3578]))|32(?:0[1-69]|1[1-35-7]|2[024-7]|3\\d|4[0-3]|[5-7][023])|53(?:0[0-3]|[13][023]|2[0-59]|49|5[0-35-9]|6[15]|7[45]|8[1-6]|9[0-36-9])|6(?:2(?:[05]0|22)|3(?:00|33)|4(?:0[0-25]|1[2-7]|2[0569]|[38][07-9]|4[025689]|6[0-589]|7\\d|9[0-2])|5(?:[01][056]|2[034]|3[0-57-9]|4[178]|5[0-69]|6[0-35-9]|7[1-379]|8[0-68]|9[0239]))|87(?:20|7[078]|99))\\d{4}",[8]],["7(?:[78][0-25-9]|9\\d)\\d{6}",[9]],["80\\d{6}",[8]],["9\\d{7}",[8]],["70\\d{7}",[9]],0,["8(?:10|8\\d)\\d{5}",[8]],["74(?:66|77)\\d{5}",[9]],0,["85\\d{6}",[8]]]],"JP":["81","010","00[1-9]\\d{6,14}|[257-9]\\d{9}|(?:00|[1-9]\\d\\d)\\d{6}",[8,9,10,11,12,13,14,15,16,17],[["(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3",["(?:12|57|99)0"],"0$1"],["(\\d{4})(\\d)(\\d{4})","$1-$2-$3",["1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:80|9[16])","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2-$3",["[36]|4(?:2[09]|7[01])","[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]"],"0$1"],["(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3",["[14]|[289][2-9]|5[3-9]|7[2-4679]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["800"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[257-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:1[235-8]|2[3-6]|3[3-9]|4[2-6]|[58][2-8]|6[2-7]|7[2-9]|9[1-9])|(?:2[2-9]|[36][1-9])\\d|4(?:[2-578]\\d|6[02-8]|9[2-59])|5(?:[2-589]\\d|6[1-9]|7[2-8])|7(?:[25-9]\\d|3[4-9]|4[02-9])|8(?:[2679]\\d|3[2-9]|4[5-9]|5[1-9]|8[03-9])|9(?:[2-58]\\d|[679][1-9]))\\d{6}",[9]],["[7-9]0[1-9]\\d{7}",[10]],["00777(?:[01]|5\\d)\\d\\d|(?:00(?:7778|882[1245])|(?:120|800\\d)\\d\\d)\\d{4}|00(?:37|66|78)\\d{6,13}"],["990\\d{6}",[9]],["60\\d{7}",[9]],0,["570\\d{6}",[9]],["20\\d{8}",[10]],["50[1-9]\\d{7}",[10]]]],"KE":["254","000","(?:[17]\\d\\d|900)\\d{6}|(?:2|80)0\\d{6,7}|[4-6]\\d{6,8}",[7,8,9,10],[["(\\d{2})(\\d{5,7})","$1 $2",["[24-6]"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[17]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,[["(?:4[245]|5[1-79]|6[01457-9])\\d{5,7}|(?:4[136]|5[08]|62)\\d{7}|(?:[24]0|66)\\d{6,7}",[7,8,9]],["(?:1(?:0[0-6]|1[0-5]|2[014]|30)|7\\d\\d)\\d{6}",[9]],["800[2-8]\\d{5,6}",[9,10]],["900[02-9]\\d{5}",[9]]]],"KG":["996","00","8\\d{9}|(?:[235-8]\\d|99)\\d{7}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["3(?:1[346]|[24-79])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235-79]|88"],"0$1"],["(\\d{3})(\\d{3})(\\d)(\\d{2,3})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["312(?:5[0-79]\\d|9(?:[0-689]\\d|7[0-24-9]))\\d{3}|(?:3(?:1(?:2[0-46-8]|3[1-9]|47|[56]\\d)|2(?:22|3[0-479]|6[0-7])|4(?:22|5[6-9]|6\\d)|5(?:22|3[4-7]|59|6\\d)|6(?:22|5[35-7]|6\\d)|7(?:22|3[468]|4[1-9]|59|[67]\\d)|9(?:22|4[1-8]|6\\d))|6(?:09|12|2[2-4])\\d)\\d{5}",[9]],["312(?:58\\d|973)\\d{3}|(?:2(?:0[0-35]|2\\d)|5[0-24-7]\\d|7(?:[07]\\d|55)|88[08]|99[05-9])\\d{6}",[9]],["800\\d{6,7}"]]],"KH":["855","00[14-9]","1\\d{9}|[1-9]\\d{7,8}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[["23(?:4(?:[2-4]|[56]\\d)|[568]\\d\\d)\\d{4}|23[236-9]\\d{5}|(?:2[4-6]|3[2-6]|4[2-4]|[5-7][2-5])(?:(?:[237-9]|4[56]|5\\d)\\d{5}|6\\d{5,6})",[8,9]],["(?:(?:1[28]|3[18]|9[67])\\d|6[016-9]|7(?:[07-9]|[16]\\d)|8(?:[013-79]|8\\d))\\d{6}|(?:1\\d|9[0-57-9])\\d{6}|(?:2[3-6]|3[2-6]|4[2-4]|[5-7][2-5])48\\d{5}",[8,9]],["1800(?:1\\d|2[019])\\d{4}",[10]],["1900(?:1\\d|2[09])\\d{4}",[10]]]],"KI":["686","00","(?:[37]\\d|6[0-79])\\d{6}|(?:[2-48]\\d|50)\\d{3}",[5,8],0,"0",0,0,0,0,0,[["(?:[24]\\d|3[1-9]|50|65(?:02[12]|12[56]|22[89]|[3-5]00)|7(?:27\\d\\d|3100|5(?:02[12]|12[56]|22[89]|[34](?:00|81)|500))|8[0-5])\\d{3}"],["(?:63\\d{3}|73(?:0[0-5]\\d|140))\\d{3}|[67]200[01]\\d{3}",[8]],0,0,0,0,0,0,["30(?:0[01]\\d\\d|12(?:11|20))\\d\\d",[8]]]],"KM":["269","00","[3478]\\d{6}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[3478]"]]],0,0,0,0,0,0,[["7[4-7]\\d{5}"],["[34]\\d{6}"],0,["8\\d{6}"]]],"KN":["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","869$1",0,"869",[["869(?:2(?:29|36)|302|4(?:6[015-9]|70)|56[5-7])\\d{4}"],["869(?:48[89]|55[6-8]|66\\d|76[02-7])\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"KP":["850","00|99","85\\d{6}|(?:19\\d|[2-7])\\d{7}",[8,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"]],"0",0,0,0,0,0,[["(?:(?:195|2)\\d|3[19]|4[159]|5[37]|6[17]|7[39]|85)\\d{6}"],["19[1-3]\\d{7}",[10]]]],"KR":["82","00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))","00[1-9]\\d{8,11}|(?:[12]|5\\d{3})\\d{7}|[13-6]\\d{9}|(?:[1-6]\\d|80)\\d{7}|[3-6]\\d{4,5}|(?:00|7)0\\d{8}",[5,6,8,9,10,11,12,13,14],[["(\\d{2})(\\d{3,4})","$1-$2",["(?:3[1-3]|[46][1-4]|5[1-5])1"],"0$1"],["(\\d{4})(\\d{4})","$1-$2",["1"]],["(\\d)(\\d{3,4})(\\d{4})","$1-$2-$3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60|8"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1-$2-$3",["[1346]|5[1-5]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{2})(\\d{5})(\\d{4})","$1-$2-$3",["5"],"0$1"]],"0",0,"0(8(?:[1-46-8]|5\\d\\d))?",0,0,0,[["(?:2|3[1-3]|[46][1-4]|5[1-5])[1-9]\\d{6,7}|(?:3[1-3]|[46][1-4]|5[1-5])1\\d{2,3}",[5,6,8,9,10]],["1(?:05(?:[0-8]\\d|9[0-6])|22[13]\\d)\\d{4,5}|1(?:0[1-46-9]|[16-9]\\d|2[013-9])\\d{6,7}",[9,10]],["00(?:308\\d{6,7}|798\\d{7,9})|(?:00368|80)\\d{7}",[9,11,12,13,14]],["60[2-9]\\d{6}",[9]],["50\\d{8,9}",[10,11]],0,["1(?:5(?:22|33|44|66|77|88|99)|6(?:[07]0|44|6[168]|88)|8(?:00|33|55|77|99))\\d{4}",[8]],["15\\d{7,8}",[9,10]],["70\\d{8}",[10]]]],"KW":["965","00","18\\d{5}|(?:[2569]\\d|41)\\d{6}",[7,8],[["(\\d{4})(\\d{3,4})","$1 $2",["[169]|2(?:[235]|4[1-35-9])|52"]],["(\\d{3})(\\d{5})","$1 $2",["[245]"]]],0,0,0,0,0,0,[["2(?:[23]\\d\\d|4(?:[1-35-9]\\d|44)|5(?:0[034]|[2-46]\\d|5[1-3]|7[1-7]))\\d{4}",[8]],["(?:41\\d\\d|5(?:(?:[05]\\d|1[0-7]|6[56])\\d|2(?:22|5[25])|7(?:55|77)|88[58])|6(?:(?:0[034679]|5[015-9]|6\\d)\\d|1(?:00|11|66)|222|3[36]3|444|7(?:0[013-9]|[67]\\d)|888|9(?:[069]\\d|3[039]))|9(?:(?:0[09]|22|[4679]\\d|8[057-9])\\d|1(?:1[01]|99)|3(?:00|33)|5(?:00|5\\d)))\\d{4}",[8]],["18\\d{5}",[7]]]],"KY":["1","011","(?:345|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","345$1",0,"345",[["345(?:2(?:22|3[23]|44|66)|333|444|6(?:23|38|40)|7(?:30|4[35-79]|6[6-9]|77)|8(?:00|1[45]|[48]8)|9(?:14|4[035-9]))\\d{4}"],["345(?:32[1-9]|42[0-4]|5(?:1[67]|2[5-79]|4[6-9]|50|76)|649|82[56]|9(?:1[679]|2[2-9]|3[06-9]|90))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["(?:345976|900[2-9]\\d\\d)\\d{4}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,0,["345849\\d{4}"]]],"KZ":["7","810","(?:33622|8\\d{8})\\d{5}|[78]\\d{9}",[10,14],0,"8",0,0,0,0,"33|7",[["(?:33622|7(?:1(?:0(?:[23]\\d|4[0-3]|59|63)|1(?:[23]\\d|4[0-79]|59)|2(?:[23]\\d|59)|3(?:2\\d|3[0-79]|4[0-35-9]|59)|4(?:[24]\\d|3[013-9]|5[1-9])|5(?:2\\d|3[1-9]|4[0-7]|59)|6(?:[2-4]\\d|5[19]|61)|72\\d|8(?:[27]\\d|3[1-46-9]|4[0-5]))|2(?:1(?:[23]\\d|4[46-9]|5[3469])|2(?:2\\d|3[0679]|46|5[12679])|3(?:[2-4]\\d|5[139])|4(?:2\\d|3[1-35-9]|59)|5(?:[23]\\d|4[0-246-8]|59|61)|6(?:2\\d|3[1-9]|4[0-4]|59)|7(?:[2379]\\d|40|5[279])|8(?:[23]\\d|4[0-3]|59)|9(?:2\\d|3[124578]|59))))\\d{5}",[10]],["7(?:0[0-25-8]|47|6[0-4]|7[15-8]|85)\\d{7}",[10]],["8(?:00|108\\d{3})\\d{7}"],["809\\d{7}",[10]],["808\\d{7}",[10]],0,0,0,["751\\d{7}",[10]]],"8~10"],"LA":["856","00","[23]\\d{9}|3\\d{8}|(?:[235-8]\\d|41)\\d{6}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2[13]|3[14]|[4-8]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["30[013-9]"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[23]"],"0$1"]],"0",0,0,0,0,0,[["(?:2[13]|[35-7][14]|41|8[1468])\\d{6}",[8]],["(?:20(?:[239]\\d|5[24-9]|7[6-8]|88)|302\\d)\\d{6}",[10]],0,0,0,0,["30[013-9]\\d{6}",[9]]]],"LB":["961","00","[27-9]\\d{7}|[13-9]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27-9]"]]],"0",0,0,0,0,0,[["7(?:62|8[0-7]|9[04-9])\\d{4}|(?:[14-69]\\d|2(?:[14-69]\\d|[78][1-9])|7[2-57]|8[02-9])\\d{5}"],["793(?:[01]\\d|2[0-4])\\d{3}|(?:(?:3|81)\\d|7(?:[01]\\d|6[013-9]|8[89]|9[12]))\\d{5}"],0,["9[01]\\d{6}",[8]],0,0,0,0,0,["80\\d{6}",[8]]]],"LC":["1","011","(?:[58]\\d\\d|758|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","758$1",0,"758",[["758(?:234|4(?:30|5\\d|6[2-9]|8[0-2])|57[0-2]|(?:63|75)8)\\d{4}"],["758(?:28[4-7]|384|4(?:6[01]|8[4-9])|5(?:1[89]|20|84)|7(?:1[2-9]|2\\d|3[0-3])|812)\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"LI":["423","00","[68]\\d{8}|(?:[2378]\\d|90)\\d{5}",[7,9],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[2379]|8(?:0[09]|7)","[2379]|8(?:0(?:02|9)|7)"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["69"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]],"0",0,"0|(1001)",0,0,0,[["(?:2(?:01|1[27]|2[02]|3\\d|6[02-578]|96)|3(?:[24]0|33|7[0135-7]|8[048]|9[0269]))\\d{4}",[7]],["(?:6(?:(?:4[5-9]|5[0-4])\\d|6(?:[0245]\\d|[17]0|3[7-9]))\\d|7(?:[37-9]\\d|42|56))\\d{4}"],["8002[28]\\d\\d|80(?:05\\d|9)\\d{4}"],["90(?:02[258]|1(?:23|3[14])|66[136])\\d\\d",[7]],0,0,["870(?:28|87)\\d\\d",[7]]]],"LK":["94","00","[1-9]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[1-689]"],"0$1"]],"0",0,0,0,0,0,[["(?:12[2-9]|602|8[12]\\d|9(?:1\\d|22|9[245]))\\d{6}|(?:11|2[13-7]|3[1-8]|4[157]|5[12457]|6[35-7])[2-57]\\d{6}"],["7(?:[0-25-8]\\d|4[0-4])\\d{6}"],0,0,0,0,["1973\\d{5}"]]],"LR":["231","00","(?:2|33|5\\d|77|88)\\d{7}|[4-6]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[4-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3578]"],"0$1"]],"0",0,0,0,0,0,[["(?:2\\d{3}|33333)\\d{4}",[8,9]],["(?:(?:330|555|(?:77|88)\\d)\\d|4[67])\\d{5}|[56]\\d{6}",[7,9]],0,["332(?:02|[34]\\d)\\d{4}",[9]]]],"LS":["266","00","(?:[256]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2568]"]]],0,0,0,0,0,0,[["2\\d{7}"],["[56]\\d{7}"],["800[256]\\d{4}"]]],"LT":["370","00","(?:[3469]\\d|52|[78]0)\\d{6}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["52[0-7]"],"(8-$1)",1],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[7-9]"],"8 $1",1],["(\\d{2})(\\d{6})","$1 $2",["37|4(?:[15]|6[1-8])"],"(8-$1)",1],["(\\d{3})(\\d{5})","$1 $2",["[3-6]"],"(8-$1)",1]],"8",0,"[08]",0,0,0,[["(?:3[1478]|4[124-6]|52)\\d{6}"],["6\\d{7}"],["80[02]\\d{5}"],["9(?:0[0239]|10)\\d{5}"],["70[05]\\d{5}"],0,["70[67]\\d{5}"],0,["[89]01\\d{5}"],["808\\d{5}"]]],"LU":["352","00","35[013-9]\\d{4,8}|6\\d{8}|35\\d{2,4}|(?:[2457-9]\\d|3[0-46-9])\\d{2,9}",[4,5,6,7,8,9,10,11],[["(\\d{2})(\\d{3})","$1 $2",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["20[2-689]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4",["2(?:[0367]|4[3-8])"]],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["80[01]|90[015]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["20"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4 $5",["2(?:[0367]|4[3-8])"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,5})","$1 $2 $3 $4",["[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]"]]],0,0,"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\d)",0,0,0,[["(?:35[013-9]|80[2-9]|90[89])\\d{1,8}|(?:2[2-9]|3[0-46-9]|[457]\\d|8[13-9]|9[2-579])\\d{2,9}"],["6(?:[269][18]|5[1568]|7[189]|81)\\d{6}",[9]],["800\\d{5}",[8]],["90[015]\\d{5}",[8]],0,0,0,0,["20(?:1\\d{5}|[2-689]\\d{1,7})",[4,5,6,7,8,9,10]],["801\\d{5}",[8]]]],"LV":["371","00","(?:[268]\\d|90)\\d{6}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[269]|8[01]"]]],0,0,0,0,0,0,[["6\\d{7}"],["23(?:23[0-57-9]|33[0238])\\d{3}|2(?:[0-24-9]\\d\\d|3(?:0[07]|[14-9]\\d|2[024-9]|3[0-24-9]))\\d{4}"],["80\\d{6}"],["90\\d{6}"],0,0,0,0,0,["81\\d{6}"]]],"LY":["218","00","[2-9]\\d{8}",[9],[["(\\d{2})(\\d{7})","$1-$2",["[2-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:2(?:0[56]|[1-6]\\d|7[124579]|8[124])|3(?:1\\d|2[2356])|4(?:[17]\\d|2[1-357]|5[2-4]|8[124])|5(?:[1347]\\d|2[1-469]|5[13-5]|8[1-4])|6(?:[1-479]\\d|5[2-57]|8[1-5])|7(?:[13]\\d|2[13-79])|8(?:[124]\\d|5[124]|84))\\d{6}"],["9[1-6]\\d{7}"]]],"MA":["212","00","[5-8]\\d{8}",[9],[["(\\d{5})(\\d{4})","$1-$2",["5(?:29|38)","5(?:29[89]|389)","5(?:29[89]|389)0"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5[45]"],"0$1"],["(\\d{4})(\\d{5})","$1-$2",["5(?:2[2-489]|3[5-9]|9)|892","5(?:2(?:[2-49]|8[235-9])|3[5-9]|9)|892"],"0$1"],["(\\d{2})(\\d{7})","$1-$2",["8"],"0$1"],["(\\d{3})(\\d{6})","$1-$2",["[5-7]"],"0$1"]],"0",0,0,0,0,0,[["5(?:29(?:[189][05]|2[29]|3[01])|389[05])\\d{4}|5(?:2(?:[0-25-7]\\d|3[1-578]|4[02-46-8]|8[0235-7]|90)|3(?:[0-47]\\d|5[02-9]|6[02-8]|8[08]|9[3-9])|(?:4[067]|5[03])\\d)\\d{5}"],["(?:6(?:[0-79]\\d|8[0-247-9])|7(?:[017]\\d|2[0-2]|6[0-8]|8[0-3]))\\d{6}"],["80\\d{7}"],["89\\d{7}"],0,0,0,0,["592(?:4[0-2]|93)\\d{4}"]]],"MC":["377","00","(?:[3489]|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["4"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[389]"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["6"],"0$1"]],"0",0,0,0,0,0,[["(?:870|9[2-47-9]\\d)\\d{5}",[8]],["4(?:[46]\\d|5[1-9])\\d{5}|(?:3|6\\d)\\d{7}"],["(?:800|90\\d)\\d{5}",[8]]]],"MD":["373","00","(?:[235-7]\\d|[89]0)\\d{6}",[8],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["22|3"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[25-7]"],"0$1"]],"0",0,0,0,0,0,[["(?:(?:2[1-9]|3[1-79])\\d|5(?:33|5[257]))\\d{5}"],["562\\d{5}|(?:6\\d|7[16-9])\\d{6}"],["800\\d{5}"],["90[056]\\d{5}"],0,0,["803\\d{5}"],0,["3[08]\\d{6}"],["808\\d{5}"]]],"ME":["382","00","(?:20|[3-79]\\d)\\d{6}|80\\d{6,7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:20[2-8]|3(?:[0-2][2-7]|3[24-7])|4(?:0[2-467]|1[2467])|5(?:0[2467]|1[24-7]|2[2-467]))\\d{5}",[8]],["6(?:[07-9]\\d|3[024]|6[0-25])\\d{5}",[8]],["80(?:[0-2578]|9\\d)\\d{5}"],["9(?:4[1568]|5[178])\\d{5}",[8]],0,0,["77[1-9]\\d{5}",[8]],0,["78[1-49]\\d{5}",[8]]]],"MF":["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[["590(?:0[079]|[14]3|[27][79]|30|5[0-268]|87)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],"MG":["261","00","[23]\\d{8}",[9],[["(\\d{2})(\\d{2})(\\d{3})(\\d{2})","$1 $2 $3 $4",["[23]"],"0$1"]],"0",0,"0|([24-9]\\d{6})$","20$1",0,0,[["2072[29]\\d{4}|20(?:2\\d|4[47]|5[3467]|6[279]|7[35]|8[268]|9[245])\\d{5}"],["3[2-489]\\d{7}"],0,0,0,0,0,0,["22\\d{7}"]]],"MH":["692","011","329\\d{4}|(?:[256]\\d|45)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1-$2",["[2-6]"]]],"1",0,0,0,0,0,[["(?:247|528|625)\\d{4}"],["(?:(?:23|54)5|329|45[356])\\d{4}"],0,0,0,0,0,0,["635\\d{4}"]]],"MK":["389","00","[2-578]\\d{7}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2|34[47]|4(?:[37]7|5[47]|64)"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[347]"],"0$1"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["[58]"],"0$1"]],"0",0,0,0,0,0,[["(?:(?:2(?:62|77)0|3444)\\d|4[56]440)\\d{3}|(?:34|4[357])700\\d{3}|(?:2(?:[0-3]\\d|5[0-578]|6[01]|82)|3(?:1[3-68]|[23][2-68]|4[23568])|4(?:[23][2-68]|4[3-68]|5[2568]|6[25-8]|7[24-68]|8[4-68]))\\d{5}"],["7(?:3555|4747|9(?:[019]77|42[0-4]))\\d{3}|7(?:[0-25-8]\\d\\d|3(?:[1-4]\\d|7[01578])|4(?:2\\d|60|7[01578])|9(?:[23]\\d|4[01]|7[015]))\\d{4}"],["800\\d{5}"],["5\\d{7}"],0,0,0,0,0,["8(?:0[1-9]|[1-9]\\d)\\d{5}"]]],"ML":["223","00","[24-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24-9]"]]],0,0,0,0,0,0,[["2(?:07[0-8]|12[67])\\d{4}|(?:2(?:02|1[4-689])|4(?:0[0-4]|4[1-39]))\\d{5}"],["2(?:0(?:01|79)|17\\d)\\d{4}|(?:5[01]|[679]\\d|8[2-49])\\d{6}"],["80\\d{6}"]]],"MM":["95","00","1\\d{5,7}|95\\d{6}|(?:[4-7]|9[0-46-9])\\d{6,8}|(?:2|8\\d)\\d{5,8}",[6,7,8,9,10],[["(\\d)(\\d{2})(\\d{3})","$1 $2 $3",["16|2"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[4-7]|8[1-35]"],"0$1"],["(\\d)(\\d{3})(\\d{4,6})","$1 $2 $3",["9(?:2[0-4]|[35-9]|4[137-9])"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["92"],"0$1"],["(\\d)(\\d{5})(\\d{4})","$1 $2 $3",["9"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:(?:2\\d|3[56]|[89][0-6])\\d|4(?:2[2-469]|39|46|6[25]|7[0-3]|83)|6)|2(?:2(?:00|8[34])|4(?:0\\d|2[246]|39|46|62|7[0-3]|83)|51\\d\\d)|4(?:2(?:2\\d\\d|48[0-3])|3(?:20\\d|4(?:70|83)|56)|420\\d|5470)|6(?:0(?:[23]|88\\d)|(?:124|[56]2\\d)\\d|247[23]|3(?:20\\d|470)|4(?:2[04]\\d|47[23])|7(?:(?:3\\d|8[01459])\\d|4(?:39|60|7[013]))))\\d{4}|5(?:2(?:2\\d{5,6}|47[023]\\d{4})|(?:347[23]|4(?:2(?:1|86)|470)|522\\d|6(?:20\\d|483)|7(?:20\\d|48[0-2])|8(?:20\\d|47[02])|9(?:20\\d|47[01]))\\d{4})|7(?:(?:0470|4(?:25\\d|470)|5(?:202|470|96\\d))\\d{4}|1(?:20\\d{4,5}|4(?:70|83)\\d{4}))|8(?:1(?:2\\d{5,6}|4(?:10|7[01]\\d)\\d{3})|2(?:2\\d{5,6}|(?:320|490\\d)\\d{3})|(?:3(?:2\\d\\d|470)|4[24-7]|5(?:2\\d|4[1-9]|51)\\d|6[23])\\d{4})|(?:1[2-6]\\d|4(?:2[24-8]|3[2-7]|[46][2-6]|5[3-5])|5(?:[27][2-8]|3[2-68]|4[24-8]|5[23]|6[2-4]|8[24-7]|9[2-7])|6(?:[19]20|42[03-6]|(?:52|7[45])\\d)|7(?:[04][24-8]|[15][2-7]|22|3[2-4])|8(?:1[2-689]|2[2-8]|[35]2\\d))\\d{4}|25\\d{5,6}|(?:2[2-9]|6(?:1[2356]|[24][2-6]|3[24-6]|5[2-4]|6[2-8]|7[235-7]|8[245]|9[24])|8(?:3[24]|5[245]))\\d{4}",[6,7,8,9]],["(?:17[01]|9(?:2(?:[0-4]|[56]\\d\\d)|(?:3(?:[0-36]|4\\d)|(?:6\\d|9[4-8])\\d|7(?:3|40|[5-9]\\d)|8(?:78|[89]\\d))\\d|4(?:(?:[0245]\\d|[1379])\\d|88)|5[0-6])\\d)\\d{4}|9[69]1\\d{6}|9(?:[68]\\d|9[089])\\d{5}",[7,8,9,10]],["80080(?:[01][1-9]|2\\d)\\d{3}",[10]],0,0,0,0,0,["1333\\d{4}|[12]468\\d{4}",[8]]]],"MN":["976","001","[12]\\d{7,9}|[5-9]\\d{7}",[8,9,10],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[12]1"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[5-9]"]],["(\\d{3})(\\d{5,6})","$1 $2",["[12]2[1-3]"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["[12](?:27|3[2-8]|4[2-68]|5[1-4689])","[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["[12]"],"0$1"]],"0",0,0,0,0,0,[["[12]2[1-3]\\d{5,6}|7(?:0[0-5]\\d|128)\\d{4}|(?:[12](?:1|27)|5[368])\\d{6}|[12](?:3[2-8]|4[2-68]|5[1-4689])\\d{6,7}"],["(?:83[01]|920)\\d{5}|(?:5[05]|6[06]|8[015689]|9[013-9])\\d{6}",[8]],0,0,0,0,0,0,["712[0-79]\\d{4}|7(?:1[013-9]|[25-8]\\d)\\d{5}",[8]]]],"MO":["853","00","0800\\d{3}|(?:28|[68]\\d)\\d{6}",[7,8],[["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{4})(\\d{4})","$1 $2",["[268]"]]],0,0,0,0,0,0,[["(?:28[2-9]|8(?:11|[2-57-9]\\d))\\d{5}",[8]],["6800[0-79]\\d{3}|6(?:[235]\\d\\d|6(?:0[0-5]|[1-9]\\d)|8(?:0[1-9]|[14-8]\\d|2[5-9]|[39][0-4]))\\d{4}",[8]],["0800\\d{3}",[7]]]],"MP":["1","011","[58]\\d{9}|(?:67|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","670$1",0,"670",[["670(?:2(?:3[3-7]|56|8[4-8])|32[1-38]|4(?:33|8[348])|5(?:32|55|88)|6(?:64|70|82)|78[3589]|8[3-9]8|989)\\d{4}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"MQ":["596","00","(?:69|80)\\d{7}|(?:59|97)6\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["596(?:[03-7]\\d|10|2[7-9]|8[09]|9[4-9])\\d{4}"],["69(?:6(?:[0-46-9]\\d|5[0-6])|727)\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976(?:6\\d|7[0-367])\\d{4}"]]],"MR":["222","00","(?:[2-4]\\d\\d|800)\\d{5}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-48]"]]],0,0,0,0,0,0,[["(?:25[08]|35\\d|45[1-7])\\d{5}"],["[2-4][0-46-9]\\d{6}"],["800\\d{5}"]]],"MS":["1","011","(?:[58]\\d\\d|664|900)\\d{7}",[10],0,"1",0,"1|([34]\\d{6})$","664$1",0,"664",[["6644(?:1[0-3]|91)\\d{4}"],["664(?:3(?:49|9[1-6])|49[2-6])\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"MT":["356","00","3550\\d{4}|(?:[2579]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2357-9]"]]],0,0,0,0,0,0,[["20(?:3[1-4]|6[059])\\d{4}|2(?:0[19]|[1-357]\\d|60)\\d{5}"],["(?:7(?:210|[79]\\d\\d)|9(?:[29]\\d\\d|69[67]|8(?:1[1-3]|89|97)))\\d{4}"],["800(?:02|[3467]\\d)\\d{3}"],["5(?:0(?:0(?:37|43)|(?:6\\d|70|9[0168])\\d)|[12]\\d0[1-5])\\d{3}"],0,0,["501\\d{5}"],["7117\\d{4}"],["3550\\d{4}"]]],"MU":["230","0(?:0|[24-7]0|3[03])","(?:5|8\\d\\d)\\d{7}|[2-468]\\d{6}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[2-46]|8[013]"]],["(\\d{4})(\\d{4})","$1 $2",["5"]],["(\\d{5})(\\d{5})","$1 $2",["8"]]],0,0,0,0,0,0,[["(?:2(?:[0346-8]\\d|1[0-7])|4(?:[013568]\\d|2[4-7])|54(?:[3-5]\\d|71)|6\\d\\d|8(?:14|3[129]))\\d{4}",[7,8]],["5(?:4(?:2[1-389]|7[1-9])|87[15-8])\\d{4}|5(?:2[5-9]|4[3-689]|[57]\\d|8[0-689]|9[0-8])\\d{5}",[8]],["802\\d{7}|80[0-2]\\d{4}",[7,10]],["30\\d{5}",[7]],0,0,0,0,["3(?:20|9\\d)\\d{4}",[7]]],"020"],"MV":["960","0(?:0|19)","(?:800|9[0-57-9]\\d)\\d{7}|[34679]\\d{6}",[7,10],[["(\\d{3})(\\d{4})","$1-$2",["[3467]|9[13-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"]]],0,0,0,0,0,0,[["(?:3(?:0[0-3]|3[0-59])|6(?:[58][024689]|6[024-68]|7[02468]))\\d{4}",[7]],["46[46]\\d{4}|(?:7\\d|9[13-9])\\d{5}",[7]],["800\\d{7}",[10]],["900\\d{7}",[10]],0,0,["4(?:0[01]|50)\\d{4}",[7]]],"00"],"MW":["265","00","(?:[1289]\\d|31|77)\\d{7}|1\\d{6}",[7,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["1[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[137-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:1[2-9]|2[12]\\d\\d)\\d{5}"],["111\\d{6}|(?:31|77|[89][89])\\d{7}",[9]]]],"MX":["52","0[09]","1(?:(?:44|99)[1-9]|65[0-689])\\d{7}|(?:1(?:[017]\\d|[235][1-9]|4[0-35-9]|6[0-46-9]|8[1-79]|9[1-8])|[2-9]\\d)\\d{8}",[10,11],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["33|5[56]|81"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2-9]"],0,1],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 $3 $4",["1(?:33|5[56]|81)"],0,1],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 $3 $4",["1"],0,1]],"01",0,"0(?:[12]|4[45])|1",0,0,0,[["657[12]\\d{6}|(?:2(?:0[01]|2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[25-7][1-9]|3[1-8]|4\\d|8[1-35-9]|9[2-689])|5(?:[56]\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|6[1-9]|7[12]|8[1-8]|9\\d))\\d{7}",[10]],["657[12]\\d{6}|(?:1(?:2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-7][1-9]|3[1-8]|8[1-35-9]|9[2-689])|5(?:[56]\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))|2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[25-7][1-9]|3[1-8]|4\\d|8[1-35-9]|9[2-689])|5(?:[56]\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|6[1-9]|7[12]|8[1-8]|9\\d))\\d{7}"],["8(?:00|88)\\d{7}",[10]],["900\\d{7}",[10]],["500\\d{7}",[10]],0,0,0,0,["300\\d{7}",[10]]],"00"],"MY":["60","00","1\\d{8,9}|(?:3\\d|[4-9])\\d{7}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1-$2 $3",["[4-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1-$2 $3",["1(?:[02469]|[378][1-9]|53)|8","1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2 $3",["3"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3-$4",["1(?:[367]|80)"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2 $3",["15"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2 $3",["1"],"0$1"]],"0",0,0,0,0,0,[["(?:3(?:2[0-36-9]|3[0-368]|4[0-278]|5[0-24-8]|6[0-467]|7[1246-9]|8\\d|9[0-57])\\d|4(?:2[0-689]|[3-79]\\d|8[1-35689])|5(?:2[0-589]|[3468]\\d|5[0-489]|7[1-9]|9[23])|6(?:2[2-9]|3[1357-9]|[46]\\d|5[0-6]|7[0-35-9]|85|9[015-8])|7(?:[2579]\\d|3[03-68]|4[0-8]|6[5-9]|8[0-35-9])|8(?:[24][2-8]|3[2-5]|5[2-7]|6[2-589]|7[2-578]|[89][2-9])|9(?:0[57]|13|[25-7]\\d|[3489][0-8]))\\d{5}",[8,9]],["1(?:1888[689]|4400|8(?:47|8[27])[0-4])\\d{4}|1(?:0(?:[23568]\\d|4[0-6]|7[016-9]|9[0-8])|1(?:[1-5]\\d\\d|6(?:0[5-9]|[1-9]\\d)|7(?:[0134]\\d|2[1-9]|5[0-6]))|(?:[269]\\d|[37][1-9]|4[235-9])\\d|5(?:31|9\\d\\d)|8(?:1[23]|[236]\\d|4[06]|5(?:46|[7-9])|7[016-9]|8[01]|9[0-8]))\\d{5}",[9,10]],["1[378]00\\d{6}",[10]],["1600\\d{6}",[10]],0,0,0,0,["15(?:4(?:6[0-4]\\d|8(?:0[125]|[17]\\d|21|3[01]|4[01589]|5[014]|6[02]))|6(?:32[0-6]|78\\d))\\d{4}",[10]]]],"MZ":["258","00","(?:2|8\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2|8[2-79]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["2(?:[1346]\\d|5[0-2]|[78][12]|93)\\d{5}",[8]],["8[2-79]\\d{7}",[9]],["800\\d{6}",[9]]]],"NA":["264","00","[68]\\d{7,8}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["87"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0",0,0,0,0,0,[["64426\\d{3}|6(?:1(?:2[2-7]|3[01378]|4[0-4])|254|32[0237]|4(?:27|41|5[25])|52[236-8]|626|7(?:2[2-4]|30))\\d{4,5}|6(?:1(?:(?:0\\d|2[0189]|3[24-69]|4[5-9])\\d|17|69|7[014])|2(?:17|5[0-36-8]|69|70)|3(?:17|2[14-689]|34|6[289]|7[01]|81)|4(?:17|2[0-2]|4[06]|5[0137]|69|7[01])|5(?:17|2[0459]|69|7[01])|6(?:17|25|38|42|69|7[01])|7(?:17|2[569]|3[13]|6[89]|7[01]))\\d{4}"],["(?:60|8[1245])\\d{7}",[9]],["80\\d{7}",[9]],["8701\\d{5}",[9]],0,0,0,0,["8(?:3\\d\\d|86)\\d{5}"]]],"NC":["687","00","(?:050|[2-57-9]\\d\\d)\\d{3}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1.$2.$3",["[02-57-9]"]]],0,0,0,0,0,0,[["(?:2[03-9]|3[0-5]|4[1-7]|88)\\d{4}"],["(?:5[0-4]|[79]\\d|8[0-79])\\d{4}"],["050\\d{3}"],["36\\d{4}"]]],"NE":["227","00","[027-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["08"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[089]|2[013]|7[04]"]]],0,0,0,0,0,0,[["2(?:0(?:20|3[1-8]|4[13-5]|5[14]|6[14578]|7[1-578])|1(?:4[145]|5[14]|6[14-68]|7[169]|88))\\d{4}"],["(?:23|7[04]|[89]\\d)\\d{6}"],["08\\d{6}"],["09\\d{6}"]]],"NF":["672","00","[13]\\d{5}",[6],[["(\\d{2})(\\d{4})","$1 $2",["1[0-3]"]],["(\\d)(\\d{5})","$1 $2",["[13]"]]],0,0,"([0-258]\\d{4})$","3$1",0,0,[["(?:1(?:06|17|28|39)|3[0-2]\\d)\\d{3}"],["(?:14|3[58])\\d{4}"]]],"NG":["234","009","(?:[124-7]|9\\d{3})\\d{6}|[1-9]\\d{7}|[78]\\d{9,13}",[7,8,10,11,12,13,14],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["78"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]|9(?:0[3-9]|[1-9])"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[3-7]|8[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["[78]"],"0$1"],["(\\d{3})(\\d{5})(\\d{5,6})","$1 $2 $3",["[78]"],"0$1"]],"0",0,0,0,0,0,[["(?:(?:[1-356]\\d|4[02-8]|8[2-9])\\d|9(?:0[3-9]|[1-9]\\d))\\d{5}|7(?:0(?:[013-689]\\d|2[0-24-9])\\d{3,4}|[1-79]\\d{6})|(?:[12]\\d|4[147]|5[14579]|6[1578]|7[1-3578])\\d{5}",[7,8]],["(?:702[0-24-9]|8(?:01|19)[01])\\d{6}|(?:70[13-689]|8(?:0[2-9]|1[0-8])|9(?:0[1-9]|1[2356]))\\d{7}",[10]],["800\\d{7,11}",[10,11,12,13,14]],0,0,0,["700\\d{7,11}",[10,11,12,13,14]]]],"NI":["505","00","(?:1800|[25-8]\\d{3})\\d{4}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[125-8]"]]],0,0,0,0,0,0,[["2\\d{7}"],["(?:5(?:5[0-7]|[78]\\d)|6(?:20|3[035]|4[045]|5[05]|77|8[1-9]|9[059])|(?:7[5-8]|8\\d)\\d)\\d{5}"],["1800\\d{4}"]]],"NL":["31","00","(?:[124-7]\\d\\d|3(?:[02-9]\\d|1[0-8]))\\d{6}|8\\d{6,9}|9\\d{6,10}|1\\d{4,5}",[5,6,7,8,9,10,11],[["(\\d{3})(\\d{4,7})","$1 $2",["[89]0"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["66"],"0$1"],["(\\d)(\\d{8})","$1 $2",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["1[16-8]|2[259]|3[124]|4[17-9]|5[124679]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-578]|91"],"0$1"],["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3",["9"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:[035]\\d|1[13-578]|6[124-8]|7[24]|8[0-467])|2(?:[0346]\\d|2[2-46-9]|5[125]|9[479])|3(?:[03568]\\d|1[3-8]|2[01]|4[1-8])|4(?:[0356]\\d|1[1-368]|7[58]|8[15-8]|9[23579])|5(?:[0358]\\d|[19][1-9]|2[1-57-9]|4[13-8]|6[126]|7[0-3578])|7\\d\\d)\\d{6}",[9]],["(?:6[1-58]|970\\d)\\d{7}",[9,11]],["800\\d{4,7}",[7,8,9,10]],["90[069]\\d{4,7}",[7,8,9,10]],0,0,["140(?:1[035]|2[0346]|3[03568]|4[0356]|5[0358]|8[458])|(?:140(?:1[16-8]|2[259]|3[124]|4[17-9]|5[124679]|7)|8[478]\\d{6})\\d",[5,6,9]],["66\\d{7}",[9]],["(?:85|91)\\d{7}",[9]]]],"NO":["47","00","(?:0|[2-9]\\d{3})\\d{4}",[5,8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[489]|59"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[235-7]"]]],0,0,0,0,0,"[02-689]|7[0-8]",[["(?:2[1-4]|3[1-3578]|5[1-35-7]|6[1-4679]|7[0-8])\\d{6}",[8]],["(?:4[015-8]|59|9\\d)\\d{6}",[8]],["80[01]\\d{5}",[8]],["82[09]\\d{5}",[8]],["880\\d{5}",[8]],0,["(?:0[2-9]|81(?:0(?:0[7-9]|1\\d)|5\\d\\d))\\d{3}"],0,["85[0-5]\\d{5}",[8]],["810(?:0[0-6]|[2-8]\\d)\\d{3}",[8]]]],"NP":["977","00","(?:1\\d|9)\\d{9}|[1-9]\\d{7}",[8,10,11],[["(\\d)(\\d{7})","$1-$2",["1[2-6]"],"0$1"],["(\\d{2})(\\d{6})","$1-$2",["1[01]|[2-8]|9(?:[1-59]|[67][2-6])"],"0$1"],["(\\d{3})(\\d{7})","$1-$2",["9"]]],"0",0,0,0,0,0,[["(?:1[0-6]\\d|99[02-6])\\d{5}|(?:2[13-79]|3[135-8]|4[146-9]|5[135-7]|6[13-9]|7[15-9]|8[1-46-9]|9[1-7])[2-6]\\d{5}",[8]],["9(?:6[0-3]|7[024-6]|8[0-24-68])\\d{7}",[10]],["1(?:66001|800\\d\\d)\\d{5}",[11]]]],"NR":["674","00","(?:444|(?:55|8\\d)\\d|666)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[4-68]"]]],0,0,0,0,0,0,[["444\\d{4}"],["(?:55[3-9]|666|8\\d\\d)\\d{4}"]]],"NU":["683","00","(?:[47]|888\\d)\\d{3}",[4,7],[["(\\d{3})(\\d{4})","$1 $2",["8"]]],0,0,0,0,0,0,[["[47]\\d{3}",[4]],["888[4-9]\\d{3}",[7]]]],"NZ":["64","0(?:0|161)","[29]\\d{7,9}|50\\d{5}(?:\\d{2,3})?|6[0-35-9]\\d{6}|7\\d{7,8}|8\\d{4,9}|(?:11\\d|[34])\\d{7}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,8})","$1 $2",["8[1-579]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["50[036-8]|[89]0","50(?:[0367]|88)|[89]0"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["24|[346]|7[2-57-9]|9[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:10|74)|[59]|80"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1|2[028]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,5})","$1 $2 $3",["2(?:[169]|7[0-35-9])|7|86"],"0$1"]],"0",0,0,0,0,0,[["24099\\d{3}|(?:3[2-79]|[49][2-9]|6[235-9]|7[2-57-9])\\d{6}",[8]],["2[0-27-9]\\d{7,8}|21\\d{6}",[8,9,10]],["508\\d{6,7}|80\\d{6,8}",[8,9,10]],["(?:11\\d{5}|50(?:0[08]|30|66|77|88))\\d{3}|90\\d{6,8}",[7,8,9,10]],["70\\d{7}",[9]],0,["8(?:1[6-9]|22|3\\d|4[045]|5[459]|7[0-3579]|90)\\d{2,7}"],["[28]6\\d{6,7}",[8,9]]],"00"],"OM":["968","00","(?:1505|[279]\\d{3}|500)\\d{4}|800\\d{5,6}",[7,8,9],[["(\\d{3})(\\d{4,6})","$1 $2",["[58]"]],["(\\d{2})(\\d{6})","$1 $2",["2"]],["(\\d{4})(\\d{4})","$1 $2",["[179]"]]],0,0,0,0,0,0,[["2[2-6]\\d{6}",[8]],["1505\\d{4}|(?:7(?:[1289]\\d|7[0-4])|9(?:0[1-9]|[1-9]\\d))\\d{5}",[8]],["8007\\d{4,5}|(?:500|800[05])\\d{4}"],["900\\d{5}",[8]]]],"PA":["507","00","(?:00800|8\\d{3})\\d{6}|[68]\\d{7}|[1-57-9]\\d{6}",[7,8,10,11],[["(\\d{3})(\\d{4})","$1-$2",["[1-57-9]"]],["(\\d{4})(\\d{4})","$1-$2",["[68]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["(?:1(?:0\\d|1[479]|2[37]|3[0137]|4[17]|5[05]|6[58]|7[0167]|8[2358]|9[1389])|2(?:[0235-79]\\d|1[0-7]|4[013-9]|8[02-9])|3(?:[089]\\d|1[0-7]|2[0-5]|33|4[0-79]|5[0-35]|6[068]|7[0-8])|4(?:00|3[0-579]|4\\d|7[0-57-9])|5(?:[01]\\d|2[0-7]|[56]0|79)|7(?:0[09]|2[0-26-8]|3[03]|4[04]|5[05-9]|6[056]|7[0-24-9]|8[5-9]|90)|8(?:09|2[89]|3\\d|4[0-24-689]|5[014]|8[02])|9(?:0[5-9]|1[0135-8]|2[036-9]|3[35-79]|40|5[0457-9]|6[05-9]|7[04-9]|8[35-8]|9\\d))\\d{4}",[7]],["(?:1[16]1|21[89]|6\\d{3}|8(?:1[01]|7[23]))\\d{4}",[7,8]],["800\\d{4,5}|(?:00800|800\\d)\\d{6}"],["(?:8(?:22|55|60|7[78]|86)|9(?:00|81))\\d{4}",[7]]]],"PE":["51","00|19(?:1[124]|77|90)00","(?:[14-8]|9\\d)\\d{7}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["80"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["1"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[4-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"]]],"0",0,0,0,0,0,[["(?:(?:4[34]|5[14])[0-8]\\d|7(?:173|3[0-8]\\d)|8(?:10[05689]|6(?:0[06-9]|1[6-9]|29)|7(?:0[569]|[56]0)))\\d{4}|(?:1[0-8]|4[12]|5[236]|6[1-7]|7[246]|8[2-4])\\d{6}",[8]],["9\\d{8}",[9]],["800\\d{5}",[8]],["805\\d{5}",[8]],["80[24]\\d{5}",[8]],0,0,0,0,["801\\d{5}",[8]]],"00"," Anexo "],"PF":["689","00","4\\d{5}(?:\\d{2})?|8\\d{7,8}",[6,8,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["44"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4|8[7-9]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]],0,0,0,0,0,0,[["4(?:0[4-689]|9[4-68])\\d{5}",[8]],["8[7-9]\\d{6}",[8]],["80[0-5]\\d{6}",[9]],0,0,0,["44\\d{4}",[6]],0,["499\\d{5}",[8]]]],"PG":["675","00|140[1-3]","(?:180|[78]\\d{3})\\d{4}|(?:[2-589]\\d|64)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["18|[2-69]|85"]],["(\\d{4})(\\d{4})","$1 $2",["[78]"]]],0,0,0,0,0,0,[["(?:(?:3[0-2]|4[257]|5[34]|9[78])\\d|64[1-9]|85[02-46-9])\\d{4}",[7]],["(?:7\\d|8[128])\\d{6}",[8]],["180\\d{4}",[7]],0,0,0,0,["27[01]\\d{4}",[7]],["2(?:0[0-57]|7[568])\\d{4}",[7]]],"00"],"PH":["63","00","(?:[2-7]|9\\d)\\d{8}|2\\d{5}|(?:1800|8)\\d{7,9}",[6,8,9,10,11,12,13],[["(\\d)(\\d{5})","$1 $2",["2"],"(0$1)"],["(\\d{4})(\\d{4,6})","$1 $2",["3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2","3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))"],"(0$1)"],["(\\d{5})(\\d{4})","$1 $2",["346|4(?:27|9[35])|883","3469|4(?:279|9(?:30|56))|8834"],"(0$1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3-7]|8[2-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{4})(\\d{1,2})(\\d{3})(\\d{4})","$1 $2 $3 $4",["1"]]],"0",0,0,0,0,0,[["(?:(?:2[3-8]|3[2-68]|4[2-9]|5[2-6]|6[2-58]|7[24578])\\d{3}|88(?:22\\d\\d|42))\\d{4}|(?:2|8[2-8]\\d\\d)\\d{5}",[6,8,9,10]],["(?:8(?:1[37]|9[5-8])|9(?:0[5-9]|1[0-24-9]|[235-7]\\d|4[2-9]|8[135-9]|9[1-9]))\\d{7}",[10]],["1800\\d{7,9}",[11,12,13]]]],"PK":["92","00","122\\d{6}|[24-8]\\d{10,11}|9(?:[013-9]\\d{8,10}|2(?:[01]\\d\\d|2(?:[06-8]\\d|1[01]))\\d{7})|(?:[2-8]\\d{3}|92(?:[0-7]\\d|8[1-9]))\\d{6}|[24-9]\\d{8}|[89]\\d{7}",[8,9,10,11,12],[["(\\d{3})(\\d{3})(\\d{2,7})","$1 $2 $3",["[89]0"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["1"]],["(\\d{3})(\\d{6,7})","$1 $2",["2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])","9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]"],"(0$1)"],["(\\d{2})(\\d{7,8})","$1 $2",["(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]"],"(0$1)"],["(\\d{5})(\\d{5})","$1 $2",["58"],"(0$1)"],["(\\d{3})(\\d{7})","$1 $2",["3"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[24-9]"],"(0$1)"]],"0",0,0,0,0,0,[["(?:(?:21|42)[2-9]|58[126])\\d{7}|(?:2[25]|4[0146-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\\d{6,7}|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8]))[2-9]\\d{5,6}",[9,10]],["3(?:[0-24]\\d|3[0-7]|55|64)\\d{7}",[10]],["800\\d{5}(?:\\d{3})?",[8,11]],["900\\d{5}",[8]],["122\\d{6}",[9]],0,["(?:2(?:[125]|3[2358]|4[2-4]|9[2-8])|4(?:[0-246-9]|5[3479])|5(?:[1-35-7]|4[2-467])|6(?:0[468]|[1-8])|7(?:[14]|2[236])|8(?:[16]|2[2-689]|3[23578]|4[3478]|5[2356])|9(?:1|22|3[27-9]|4[2-6]|6[3569]|9[2-7]))111\\d{6}",[11,12]]]],"PL":["48","00","(?:6|8\\d\\d)\\d{7}|[1-9]\\d{6}(?:\\d{2})?|[26]\\d{5}",[6,7,8,9,10],[["(\\d{5})","$1",["19"]],["(\\d{3})(\\d{3})","$1 $2",["11|20|64"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1","(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19"]],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["64"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[2-8]|[2-7]|8[1-79]|9[145]"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["47\\d{7}|(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])(?:[02-9]\\d{6}|1(?:[0-8]\\d{5}|9\\d{3}(?:\\d{2})?))",[7,9]],["21(?:1(?:[145]\\d|3[1-5])|2[0-4]\\d)\\d{4}|(?:45|5[0137]|6[069]|7[2389]|88)\\d{7}",[9]],["800\\d{6,7}",[9,10]],["70[01346-8]\\d{6}",[9]],0,0,["804\\d{6}",[9]],["64\\d{4,7}",[6,7,8,9]],["39\\d{7}",[9]],["801\\d{6}",[9]]]],"PM":["508","00","(?:[45]|80\\d\\d)\\d{5}",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[45]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["(?:4[1-356]|50)\\d{4}",[6]],["(?:4[02-4]|5[056])\\d{4}",[6]],["80[0-5]\\d{6}",[9]]]],"PR":["1","011","(?:[589]\\d\\d|787)\\d{7}",[10],0,"1",0,0,0,0,"787|939",[["(?:787|939)[2-9]\\d{6}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"PS":["970","00","[2489]2\\d{6}|(?:1\\d|5)\\d{8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2489]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["5"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[["(?:22[2-47-9]|42[45]|82[014-68]|92[3569])\\d{5}",[8]],["5[69]\\d{7}",[9]],["1800\\d{6}",[10]],0,0,0,0,0,0,["1700\\d{6}",[10]]]],"PT":["351","00","1693\\d{5}|(?:[26-9]\\d|30)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["2[12]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["16|[236-9]"]]],0,0,0,0,0,0,[["2(?:[12]\\d|3[1-689]|4[1-59]|[57][1-9]|6[1-35689]|8[1-69]|9[1256])\\d{6}"],["6(?:[06]92(?:30|9\\d)|[35]92(?:3[03]|9\\d))\\d{3}|(?:(?:16|6[0356])93|9(?:[1-36]\\d\\d|480))\\d{5}"],["80[02]\\d{6}"],["(?:6(?:0[178]|4[68])\\d|76(?:0[1-57]|1[2-47]|2[237]))\\d{5}"],["884[0-4689]\\d{5}"],0,["70(?:7\\d|8[17])\\d{5}"],["6222\\d{5}"],["30\\d{7}"],["80(?:8\\d|9[1579])\\d{5}"]]],"PW":["680","01[12]","(?:[24-8]\\d\\d|345|900)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]],0,0,0,0,0,0,[["(?:2(?:55|77)|345|488|5(?:35|44|87)|6(?:22|54|79)|7(?:33|47)|8(?:24|55|76)|900)\\d{4}"],["(?:(?:46|83)[0-5]|6[2-4689]0)\\d{4}|(?:45|77|88)\\d{5}"]]],"PY":["595","00","59\\d{4,6}|9\\d{5,10}|(?:[2-46-8]\\d|5[0-8])\\d{4,7}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3,6})","$1 $2",["[2-9]0"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]"],"(0$1)"],["(\\d{3})(\\d{4,5})","$1 $2",["2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["87"]],["(\\d{3})(\\d{6})","$1 $2",["9(?:[5-79]|8[1-6])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["9"]]],"0",0,0,0,0,0,[["(?:[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36])\\d{5,7}|(?:2(?:2[4-68]|[4-68]\\d|7[15]|9[1-5])|3(?:18|3[167]|4[2357]|51|[67]\\d)|4(?:3[12]|5[13]|9[1-47])|5(?:[1-4]\\d|5[02-4])|6(?:3[1-3]|44|7[1-8])|7(?:4[0-4]|5\\d|6[1-578]|75|8[0-8])|858)\\d{5,6}",[7,8,9]],["9(?:51|6[129]|[78][1-6]|9[1-5])\\d{6}",[9]],["9800\\d{5,7}",[9,10,11]],0,0,0,["[2-9]0\\d{4,7}",[6,7,8,9]],0,["8700[0-4]\\d{4}",[9]]]],"QA":["974","00","[2-7]\\d{7}|800\\d{4}(?:\\d{2})?|2\\d{6}",[7,8,9],[["(\\d{3})(\\d{4})","$1 $2",["2[126]|8"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]]],0,0,0,0,0,0,[["414[1-4]\\d{4}|(?:23|4[04])\\d{6}",[8]],["(?:2[89]|[35-7]\\d)\\d{6}",[8]],["800\\d{4}(?:\\d{2})?",[7,9]],0,0,0,0,["2(?:[12]\\d|61)\\d{4}",[7]]]],"RE":["262","00","976\\d{6}|(?:26|[68]\\d)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2689]"],"0$1"]],"0",0,0,0,0,"26[23]|69|[89]",[["26(?:2\\d\\d|3(?:0\\d|1[01]))\\d{4}"],["(?:69(?:2\\d\\d|3(?:0[0-46]|1[013]|2[0-2]|3[0-39]|4\\d|5[0-5]|6[0-6]|7[0-27]|8[0-8]|9[0-479]))|976(?:2[27]|3[0-37]|9\\d))\\d{4}"],["80\\d{7}"],["89[1-37-9]\\d{6}"],0,0,0,0,0,["8(?:1[019]|2[0156]|84|90)\\d{6}"]]],"RO":["40","00","(?:[2378]\\d|90)\\d{7}|[23]\\d{5}",[6,9],[["(\\d{3})(\\d{3})","$1 $2",["2[3-6]","2[3-6]\\d9"],"0$1"],["(\\d{2})(\\d{4})","$1 $2",["219|31"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[23]1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[237-9]"],"0$1"]],"0",0,0,0,0,0,[["[23][13-6]\\d{7}|(?:2(?:19\\d|[3-6]\\d9)|31\\d\\d)\\d\\d"],["7020\\d{5}|7(?:0[013-9]|1[0-3]|[2-7]\\d|8[03-8]|9[019])\\d{6}",[9]],["800\\d{6}",[9]],["90[0136]\\d{6}",[9]],0,0,["(?:37\\d|80[578])\\d{6}",[9]],0,0,["801\\d{6}",[9]]],0," int "],"RS":["381","00","38[02-9]\\d{6,9}|6\\d{7,9}|90\\d{4,8}|38\\d{5,6}|(?:7\\d\\d|800)\\d{3,9}|(?:[12]\\d|3[0-79])\\d{5,10}",[6,7,8,9,10,11,12],[["(\\d{3})(\\d{3,9})","$1 $2",["(?:2[389]|39)0|[7-9]"],"0$1"],["(\\d{2})(\\d{5,10})","$1 $2",["[1-36]"],"0$1"]],"0",0,0,0,0,0,[["(?:11[1-9]\\d|(?:2[389]|39)(?:0[2-9]|[2-9]\\d))\\d{3,8}|(?:1[02-9]|2[0-24-7]|3[0-8])[2-9]\\d{4,9}",[7,8,9,10,11,12]],["6(?:[0-689]|7\\d)\\d{6,7}",[8,9,10]],["800\\d{3,9}"],["(?:78\\d|90[0169])\\d{3,7}",[6,7,8,9,10]],0,0,["7[06]\\d{4,10}"]]],"RU":["7","810","8\\d{13}|[347-9]\\d{9}",[10,14],[["(\\d{4})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-8]|2[1-9])","7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))","7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2"],"8 ($1)",1],["(\\d{5})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-68]|2[1-9])","7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))","7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[349]|8(?:[02-7]|1[1-8])"],"8 ($1)",1],["(\\d{4})(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3 $4",["8"],"8 ($1)"]],"8",0,0,0,0,"3[04-689]|[489]",[["(?:3(?:0[12]|4[1-35-79]|5[1-3]|65|8[1-58]|9[0145])|4(?:01|1[1356]|2[13467]|7[1-5]|8[1-7]|9[1-689])|8(?:1[1-8]|2[01]|3[13-6]|4[0-8]|5[15]|6[1-35-79]|7[1-37-9]))\\d{7}",[10]],["9\\d{9}",[10]],["8(?:0[04]|108\\d{3})\\d{7}"],["80[39]\\d{7}",[10]],["808\\d{7}",[10]]],"8~10"],"RW":["250","00","(?:06|[27]\\d\\d|[89]00)\\d{6}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"]]],"0",0,0,0,0,0,[["(?:06|2[23568]\\d)\\d{6}"],["7[2389]\\d{7}",[9]],["800\\d{6}",[9]],["900\\d{6}",[9]]]],"SA":["966","00","92\\d{7}|(?:[15]|8\\d)\\d{8}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["9"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["81"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]],"0",0,0,0,0,0,[["1(?:1\\d|2[24-8]|3[35-8]|4[3-68]|6[2-5]|7[235-7])\\d{6}",[9]],["579[01]\\d{5}|5(?:[013-689]\\d|7[0-35-8])\\d{6}",[9]],["800\\d{7}",[10]],["925\\d{6}",[9]],0,0,["811\\d{7}",[10]],0,0,["920\\d{6}",[9]]]],"SB":["677","0[01]","(?:[1-6]|[7-9]\\d\\d)\\d{4}",[5,7],[["(\\d{2})(\\d{5})","$1 $2",["7|8[4-9]|9(?:[1-8]|9[0-8])"]]],0,0,0,0,0,0,[["(?:1[4-79]|[23]\\d|4[0-2]|5[03]|6[0-37])\\d{3}",[5]],["48\\d{3}|(?:(?:7[1-9]|8[4-9])\\d|9(?:1[2-9]|2[013-9]|3[0-2]|[46]\\d|5[0-46-9]|7[0-689]|8[0-79]|9[0-8]))\\d{4}"],["1[38]\\d{3}",[5]],0,0,0,0,0,["5[12]\\d{3}",[5]]]],"SC":["248","010|0[0-2]","800\\d{4}|(?:[249]\\d|64)\\d{5}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[246]|9[57]"]]],0,0,0,0,0,0,[["4[2-46]\\d{5}"],["2[125-8]\\d{5}"],["800[08]\\d{3}"],0,0,0,0,0,["971\\d{4}|(?:64|95)\\d{5}"]],"00"],"SD":["249","00","[19]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[19]"],"0$1"]],"0",0,0,0,0,0,[["1(?:5\\d|8[35-7])\\d{6}"],["(?:1[0-2]|9[0-3569])\\d{7}"]]],"SE":["46","00","(?:[26]\\d\\d|9)\\d{9}|[1-9]\\d{8}|[1-689]\\d{7}|[1-4689]\\d{6}|2\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{2,3})(\\d{2})","$1-$2 $3",["20"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{4})","$1-$2",["9(?:00|39|44|9)"],"0$1",0,"$1 $2"],["(\\d{2})(\\d{3})(\\d{2})","$1-$2 $3",["[12][136]|3[356]|4[0246]|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3"],["(\\d)(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2,3})(\\d{2})","$1-$2 $3",["1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{2,3})(\\d{3})","$1-$2 $3",["9(?:00|39|44)"],"0$1",0,"$1 $2 $3"],["(\\d{2})(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3 $4"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["10|7"],"0$1",0,"$1 $2 $3 $4"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1-$2 $3 $4",["[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{3})","$1-$2 $3 $4",["9"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4 $5",["[26]"],"0$1",0,"$1 $2 $3 $4 $5"]],"0",0,0,0,0,0,[["(?:(?:[12][136]|3[356]|4[0246]|6[03]|8\\d)\\d|90[1-9])\\d{4,6}|(?:1(?:2[0-35]|4[0-4]|5[0-25-9]|7[13-6]|[89]\\d)|2(?:2[0-7]|4[0136-8]|5[0138]|7[018]|8[01]|9[0-57])|3(?:0[0-4]|1\\d|2[0-25]|4[056]|7[0-2]|8[0-3]|9[023])|4(?:1[013-8]|3[0135]|5[14-79]|7[0-246-9]|8[0156]|9[0-689])|5(?:0[0-6]|[15][0-5]|2[0-68]|3[0-4]|4\\d|6[03-5]|7[013]|8[0-79]|9[01])|6(?:1[1-3]|2[0-4]|4[02-57]|5[0-37]|6[0-3]|7[0-2]|8[0247]|9[0-356])|9(?:1[0-68]|2\\d|3[02-5]|4[0-3]|5[0-4]|[68][01]|7[0135-8]))\\d{5,6}",[7,8,9]],["7[02369]\\d{7}",[9]],["20\\d{4,7}",[6,7,8,9]],["649\\d{6}|99[1-59]\\d{4}(?:\\d{3})?|9(?:00|39|44)[1-8]\\d{3,6}",[7,8,9,10]],["75[1-8]\\d{6}",[9]],0,["10[1-8]\\d{6}",[9]],["74[02-9]\\d{6}",[9]],0,["77[0-7]\\d{6}",[9]]]],"SG":["65","0[0-3]\\d","(?:(?:1\\d|8)\\d\\d|7000)\\d{7}|[3689]\\d{7}",[8,10,11],[["(\\d{4})(\\d{4})","$1 $2",["[369]|8(?:0[1-5]|[1-9])"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]],["(\\d{4})(\\d{4})(\\d{3})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[["662[0-24-9]\\d{4}|6(?:[0-578]\\d|6[013-57-9]|9[0-35-9])\\d{5}",[8]],["8(?:05[0-7]|95[0-2])\\d{4}|(?:8(?:0[1-4]|[1-8]\\d|9[0-4])|9[0-8]\\d)\\d{5}",[8]],["(?:18|8)00\\d{7}",[10,11]],["1900\\d{7}",[11]],0,0,["7000\\d{7}",[11]],0,["(?:3[12]\\d|666)\\d{5}",[8]]]],"SH":["290","00","(?:[256]\\d|8)\\d{3}",[4,5],0,0,0,0,0,0,"[256]",[["2(?:[0-57-9]\\d|6[4-9])\\d\\d"],["[56]\\d{4}",[5]],0,0,0,0,0,0,["262\\d\\d",[5]]]],"SI":["386","00|10(?:22|66|88|99)","[1-7]\\d{7}|8\\d{4,7}|90\\d{4,6}",[5,6,7,8],[["(\\d{2})(\\d{3,6})","$1 $2",["8[09]|9"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["59|8"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37][01]|4[0139]|51|6"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-57]"],"(0$1)"]],"0",0,0,0,0,0,[["(?:[1-357][2-8]|4[24-8])\\d{6}",[8]],["65(?:1\\d|55|6[01]|70)\\d{4}|(?:[37][01]|4[0139]|51|6[489])\\d{6}",[8]],["80\\d{4,6}",[6,7,8]],["89[1-3]\\d{2,5}|90\\d{4,6}"],0,0,0,0,["(?:59\\d\\d|8(?:1(?:[67]\\d|8[0-589])|2(?:0\\d|2[0-37-9]|8[0-2489])|3[389]\\d))\\d{4}",[8]]],"00"],"SJ":["47","00","0\\d{4}|(?:[489]\\d|[57]9)\\d{6}",[5,8],0,0,0,0,0,0,"79",[["79\\d{6}",[8]],["(?:4[015-8]|59|9\\d)\\d{6}",[8]],["80[01]\\d{5}",[8]],["82[09]\\d{5}",[8]],["880\\d{5}",[8]],0,["(?:0[2-9]|81(?:0(?:0[7-9]|1\\d)|5\\d\\d))\\d{3}"],0,["85[0-5]\\d{5}",[8]],["810(?:0[0-6]|[2-8]\\d)\\d{3}",[8]]]],"SK":["421","00","[2-689]\\d{8}|[2-59]\\d{6}|[2-5]\\d{5}",[6,7,9],[["(\\d)(\\d{2})(\\d{3,4})","$1 $2 $3",["21"],"0$1"],["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["[3-5][1-8]1","[3-5][1-8]1[67]"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1/$2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[689]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1/$2 $3 $4",["[3-5]"],"0$1"]],"0",0,0,0,0,0,[["(?:2(?:16|[2-9]\\d{3})|(?:(?:[3-5][1-8]\\d|819)\\d|601[1-5])\\d)\\d{4}|(?:2|[3-5][1-8])1[67]\\d{3}|[3-5][1-8]16\\d\\d"],["909[1-9]\\d{5}|9(?:0[1-8]|1[0-24-9]|4[03-57-9]|5\\d)\\d{6}",[9]],["800\\d{6}",[9]],["9(?:00|[78]\\d)\\d{6}",[9]],0,0,["96\\d{7}",[9]],["9090\\d{3}",[7]],["6(?:02|5[0-4]|9[0-6])\\d{6}",[9]],["8[5-9]\\d{7}",[9]]]],"SL":["232","00","(?:[237-9]\\d|66)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[236-9]"],"(0$1)"]],"0",0,0,0,0,0,[["22[2-4][2-9]\\d{4}"],["(?:25|3[0-5]|66|7[2-9]|8[08]|9[09])\\d{6}"]]],"SM":["378","00","(?:0549|[5-7]\\d)\\d{6}",[8,10],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-7]"]],["(\\d{4})(\\d{6})","$1 $2",["0"]]],0,0,"([89]\\d{5})$","0549$1",0,0,[["0549(?:8[0157-9]|9\\d)\\d{4}",[10]],["6[16]\\d{6}",[8]],0,["7[178]\\d{6}",[8]],0,0,0,0,["5[158]\\d{6}",[8]]]],"SN":["221","00","(?:[378]\\d|93)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[379]"]]],0,0,0,0,0,0,[["3(?:0(?:1[0-2]|80)|282|3(?:8[1-9]|9[3-9])|611)\\d{5}"],["7(?:(?:[06-8]\\d|21|90)\\d|5(?:01|[19]0|25|[38]3|[4-7]\\d))\\d{5}"],["800\\d{6}"],["88[4689]\\d{6}"],0,0,0,0,["(?:3(?:392|9[01]\\d)\\d|93(?:3[13]0|929))\\d{4}"],["81[02468]\\d{6}"]]],"SO":["252","00","[346-9]\\d{8}|[12679]\\d{7}|[1-5]\\d{6}|[1348]\\d{5}",[6,7,8,9],[["(\\d{2})(\\d{4})","$1 $2",["8[125]"]],["(\\d{6})","$1",["[134]"]],["(\\d)(\\d{6})","$1 $2",["[15]|2[0-79]|3[0-46-8]|4[0-7]"]],["(\\d)(\\d{7})","$1 $2",["24|[67]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3478]|64|90"]],["(\\d{2})(\\d{5,7})","$1 $2",["1|28|6(?:0[5-7]|[1-35-9])|9[2-9]"]]],"0",0,0,0,0,0,[["(?:1\\d|2[0-79]|3[0-46-8]|4[0-7]|5[57-9])\\d{5}|(?:[134]\\d|8[125])\\d{4}",[6,7]],["(?:(?:15|(?:3[59]|4[89]|79|8[08])\\d|6(?:0[5-7]|[1-9]\\d)|9(?:0\\d|[2-9]))\\d|2(?:4\\d|8))\\d{5}|[67]\\d{7}",[7,8,9]]]],"SR":["597","00","(?:[2-5]|68|[78]\\d)\\d{5}",[6,7],[["(\\d{2})(\\d{2})(\\d{2})","$1-$2-$3",["56"]],["(\\d{3})(\\d{3})","$1-$2",["[2-5]"]],["(\\d{3})(\\d{4})","$1-$2",["[6-8]"]]],0,0,0,0,0,0,[["(?:2[1-3]|3[0-7]|(?:4|68)\\d|5[2-58])\\d{4}"],["(?:7[124-7]|8[124-9])\\d{5}",[7]],0,0,0,0,0,0,["56\\d{4}",[6]]]],"SS":["211","00","[19]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[19]"],"0$1"]],"0",0,0,0,0,0,[["1[89]\\d{7}"],["(?:12|9[1257-9])\\d{7}"]]],"ST":["239","00","(?:22|9\\d)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[29]"]]],0,0,0,0,0,0,[["22\\d{5}"],["900[5-9]\\d{3}|9(?:0[1-9]|[89]\\d)\\d{4}"]]],"SV":["503","00","[267]\\d{7}|[89]00\\d{4}(?:\\d{4})?",[7,8,11],[["(\\d{3})(\\d{4})","$1 $2",["[89]"]],["(\\d{4})(\\d{4})","$1 $2",["[267]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[89]"]]],0,0,0,0,0,0,[["2(?:[1-6]\\d{3}|[79]90[034]|890[0245])\\d{3}",[8]],["66(?:[02-9]\\d\\d|1(?:[02-9]\\d|16))\\d{3}|(?:6[0-57-9]|7\\d)\\d{6}",[8]],["800\\d{4}(?:\\d{4})?",[7,11]],["900\\d{4}(?:\\d{4})?",[7,11]]]],"SX":["1","011","7215\\d{6}|(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|(5\\d{6})$","721$1",0,"721",[["7215(?:4[2-8]|8[239]|9[056])\\d{4}"],["7215(?:1[02]|2\\d|5[034679]|8[014-8])\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"SY":["963","00","[1-39]\\d{8}|[1-5]\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-5]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1",1]],"0",0,0,0,0,0,[["21\\d{6,7}|(?:1(?:[14]\\d|[2356])|2[235]|3(?:[13]\\d|4)|4[134]|5[1-3])\\d{6}"],["9[1-689]\\d{7}",[9]]]],"SZ":["268","00","0800\\d{4}|(?:[237]\\d|900)\\d{6}",[8,9],[["(\\d{4})(\\d{4})","$1 $2",["[0237]"]],["(\\d{5})(\\d{4})","$1 $2",["9"]]],0,0,0,0,0,0,[["[23][2-5]\\d{6}",[8]],["7[6-9]\\d{6}",[8]],["0800\\d{4}",[8]],["900\\d{6}",[9]],0,0,0,0,["70\\d{6}",[8]]]],"TA":["290","00","8\\d{3}",[4],0,0,0,0,0,0,"8",[["8\\d{3}"]]],"TC":["1","011","(?:[58]\\d\\d|649|900)\\d{7}",[10],0,"1",0,"1|([2-479]\\d{6})$","649$1",0,"649",[["649(?:266|712|9(?:4\\d|50))\\d{4}"],["649(?:2(?:3[129]|4[1-79])|3\\d\\d|4[34][1-3])\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,0,0,["649(?:71[01]|966)\\d{4}"]]],"TD":["235","00|16","(?:22|[69]\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2679]"]]],0,0,0,0,0,0,[["22(?:[37-9]0|5[0-5]|6[89])\\d{4}"],["(?:6[023568]|77|9\\d)\\d{6}"]],"00"],"TG":["228","00","[279]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[279]"]]],0,0,0,0,0,0,[["2(?:2[2-7]|3[23]|4[45]|55|6[67]|77)\\d{5}"],["(?:7[09]|9[0-36-9])\\d{6}"]]],"TH":["66","00[1-9]","(?:001800|[2-57]|[689]\\d)\\d{7}|1\\d{7,9}",[8,9,10,13],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[13-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[["(?:1[0689]|2\\d|3[2-9]|4[2-5]|5[2-6]|7[3-7])\\d{6}",[8]],["671[0-8]\\d{5}|(?:14|6[1-6]|[89]\\d)\\d{7}",[9]],["(?:001800\\d|1800)\\d{6}",[10,13]],["1900\\d{6}",[10]],0,0,0,0,["6[08]\\d{7}",[9]]]],"TJ":["992","810","(?:00|[1-57-9]\\d)\\d{7}",[9],[["(\\d{6})(\\d)(\\d{2})","$1 $2 $3",["331","3317"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[34]7|91[78]"]],["(\\d{4})(\\d)(\\d{4})","$1 $2 $3",["3[1-5]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[0-57-9]"]]],0,0,0,0,0,0,[["(?:3(?:1[3-5]|2[245]|3[12]|4[24-7]|5[25]|72)|4(?:46|74|87))\\d{6}"],["41[18]\\d{6}|(?:[034]0|[17][017]|2[02]|5[05]|8[08]|9\\d)\\d{7}"]],"8~10"],"TK":["690","00","[2-47]\\d{3,6}",[4,5,6,7],0,0,0,0,0,0,0,[["(?:2[2-4]|[34]\\d)\\d{2,5}"],["7[2-4]\\d{2,5}"]]],"TL":["670","00","7\\d{7}|(?:[2-47]\\d|[89]0)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[2-489]|70"]],["(\\d{4})(\\d{4})","$1 $2",["7"]]],0,0,0,0,0,0,[["(?:2[1-5]|3[1-9]|4[1-4])\\d{5}",[7]],["7[2-8]\\d{6}",[8]],["80\\d{5}",[7]],["90\\d{5}",[7]],["70\\d{5}",[7]]]],"TM":["993","810","[1-6]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["12"],"(8 $1)"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-5]"],"(8 $1)"],["(\\d{2})(\\d{6})","$1 $2",["6"],"8 $1"]],"8",0,0,0,0,0,[["(?:1(?:2\\d|3[1-9])|2(?:22|4[0-35-8])|3(?:22|4[03-9])|4(?:22|3[128]|4\\d|6[15])|5(?:22|5[7-9]|6[014-689]))\\d{5}"],["6\\d{7}"]],"8~10"],"TN":["216","00","[2-57-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-57-9]"]]],0,0,0,0,0,0,[["81200\\d{3}|(?:3[0-2]|7\\d)\\d{6}"],["3(?:001|[12]40)\\d{4}|(?:(?:[259]\\d|4[0-7])\\d|3(?:1[1-35]|6[0-4]|91))\\d{5}"],["8010\\d{4}"],["88\\d{6}"],0,0,0,0,0,["8[12]10\\d{4}"]]],"TO":["676","00","(?:0800|(?:[5-8]\\d\\d|999)\\d)\\d{3}|[2-8]\\d{4}",[5,7],[["(\\d{2})(\\d{3})","$1-$2",["[2-4]|50|6[09]|7[0-24-69]|8[05]"]],["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{3})(\\d{4})","$1 $2",["[5-9]"]]],0,0,0,0,0,0,[["(?:2\\d|3[0-8]|4[0-4]|50|6[09]|7[0-24-69]|8[05])\\d{3}",[5]],["(?:55[4-6]|6(?:[09]\\d|3[02]|8[15-9])|(?:7\\d|8[46-9])\\d|999)\\d{4}",[7]],["0800\\d{3}",[7]],0,0,0,0,0,["55[0-37-9]\\d{4}",[7]]]],"TR":["90","00","4\\d{6}|8\\d{11,12}|(?:[2-58]\\d\\d|900)\\d{7}",[7,10,12,13],[["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["512|8[01589]|90"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5(?:[0-59]|61)","5(?:[0-59]|616)","5(?:[0-59]|6161)"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24][1-8]|3[1-9]"],"(0$1)",1],["(\\d{3})(\\d{3})(\\d{6,7})","$1 $2 $3",["80"],"0$1",1]],"0",0,0,0,0,0,[["(?:2(?:[13][26]|[28][2468]|[45][268]|[67][246])|3(?:[13][28]|[24-6][2468]|[78][02468]|92)|4(?:[16][246]|[23578][2468]|4[26]))\\d{7}",[10]],["56161\\d{5}|5(?:0[15-7]|1[06]|24|[34]\\d|5[1-59]|9[46])\\d{7}",[10]],["8(?:00\\d{7}(?:\\d{2,3})?|11\\d{7})",[10,12,13]],["(?:8[89]8|900)\\d{7}",[10]],["592(?:21[12]|461)\\d{4}",[10]],0,["444\\d{4}",[7]],["512\\d{7}",[10]],["850\\d{7}",[10]]]],"TT":["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-46-8]\\d{6})$","868$1",0,"868",[["868(?:2(?:01|1[5-9]|[23]\\d|4[0-2])|6(?:0[7-9]|1[02-8]|2[1-9]|[3-69]\\d|7[0-79])|82[124])\\d{4}"],["868(?:(?:2[5-9]|3\\d)\\d|4(?:3[0-6]|[6-9]\\d)|6(?:20|78|8\\d)|7(?:0[1-9]|1[02-9]|[2-9]\\d))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"TV":["688","00","(?:2|7\\d\\d|90)\\d{4}",[5,6,7],[["(\\d{2})(\\d{3})","$1 $2",["2"]],["(\\d{2})(\\d{4})","$1 $2",["90"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]],0,0,0,0,0,0,[["2[02-9]\\d{3}",[5]],["(?:7[01]\\d|90)\\d{4}",[6,7]]]],"TW":["886","0(?:0[25-79]|19)","[2-689]\\d{8}|7\\d{9,10}|[2-8]\\d{7}|2\\d{6}",[7,8,9,10,11],[["(\\d{2})(\\d)(\\d{4})","$1 $2 $3",["202"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[258]0"],"0$1"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]","[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,5})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[["(?:2[2-8]\\d|370|55[01]|7[1-9])\\d{6}|4(?:(?:0(?:0[1-9]|[2-48]\\d)|1[023]\\d)\\d{4,5}|(?:[239]\\d\\d|4(?:0[56]|12|49))\\d{5})|6(?:[01]\\d{7}|4(?:0[56]|12|24|4[09])\\d{4,5})|8(?:(?:2(?:3\\d|4[0-269]|[578]0|66)|36[24-9]|90\\d\\d)\\d{4}|4(?:0[56]|12|24|4[09])\\d{4,5})|(?:2(?:2(?:0\\d\\d|4(?:0[68]|[249]0|3[0-467]|5[0-25-9]|6[0235689]))|(?:3(?:[09]\\d|1[0-4])|(?:4\\d|5[0-49]|6[0-29]|7[0-5])\\d)\\d)|(?:(?:3[2-9]|5[2-8]|6[0-35-79]|8[7-9])\\d\\d|4(?:2(?:[089]\\d|7[1-9])|(?:3[0-4]|[78]\\d|9[01])\\d))\\d)\\d{3}",[8,9]],["(?:40001[0-2]|9[0-8]\\d{4})\\d{3}",[9]],["80[0-79]\\d{6}|800\\d{5}",[8,9]],["20(?:[013-9]\\d\\d|2)\\d{4}",[7,9]],["99\\d{7}",[9]],0,["50[0-46-9]\\d{6}",[9]],0,["7010(?:[0-2679]\\d|3[0-7]|8[0-5])\\d{5}|70\\d{8}",[10,11]]],0,"#"],"TZ":["255","00[056]","(?:[25-8]\\d|41|90)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[24]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["5"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[67]"],"0$1"]],"0",0,0,0,0,0,[["2[2-8]\\d{7}"],["77[2-9]\\d{6}|(?:6[125-9]|7[13-689])\\d{7}"],["80[08]\\d{6}"],["90\\d{7}"],0,0,0,0,["41\\d{7}"],["8(?:40|6[01])\\d{6}"]]],"UA":["380","00","[89]\\d{9}|[3-9]\\d{8}",[9,10],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]","6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])","3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3-7]|89|9[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,[["(?:3[1-8]|4[13-8]|5[1-7]|6[12459])\\d{7}",[9]],["(?:39|50|6[36-8]|7[1-3]|9[1-9])\\d{7}",[9]],["800[1-8]\\d{5,6}"],["900[239]\\d{5,6}"],0,0,0,0,["89[1-579]\\d{6}",[9]]],"0~0"],"UG":["256","00[057]","800\\d{6}|(?:[29]0|[347]\\d)\\d{7}",[9],[["(\\d{4})(\\d{5})","$1 $2",["202","2024"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[27-9]|4(?:6[45]|[7-9])"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[34]"],"0$1"]],"0",0,0,0,0,0,[["20(?:(?:240|30[67])\\d|6(?:00[0-2]|30[0-4]))\\d{3}|(?:20(?:[017]\\d|2[5-9]|32|5[0-4]|6[15-9])|[34]\\d{3})\\d{5}"],["726[01]\\d{5}|7(?:[01578]\\d|20|36|[46][0-4]|9[89])\\d{6}"],["800[1-3]\\d{5}"],["90[1-3]\\d{6}"]]],"US":["1","011","[2-9]\\d{9}|3\\d{6}",[10],[["(\\d{3})(\\d{4})","$1-$2",["310"],0,1],["(\\d{3})(\\d{3})(\\d{4})","($1) $2-$3",["[2-9]"],0,1,"$1-$2-$3"]],"1",0,0,0,0,0,[["505(?:[2-57-9]\\d\\d|6(?:[0-35-9]\\d|44))\\d{4}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[01679]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[068]|3[0-289]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-389]|8[04-69]))[2-9]\\d{6}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"UY":["598","0(?:0|1[3-9]\\d)","4\\d{9}|[1249]\\d{7}|(?:[49]\\d|80)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["405|8|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[124]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["4"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:770|987)|(?:2\\d|4[2-7])\\d\\d)\\d{4}",[8]],["9[1-9]\\d{6}",[8]],["(?:4\\d{5}|80[05])\\d{4}|405\\d{4}",[7,10]],["90[0-8]\\d{4}",[7]]],"00"," int. "],"UZ":["998","810","(?:33|55|[679]\\d|88)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[35-9]"],"8 $1"]],"8",0,0,0,0,0,[["(?:6(?:1(?:22|3[124]|4[1-4]|5[1-3578]|64)|2(?:22|3[0-57-9]|41)|5(?:22|3[3-7]|5[024-8])|6\\d\\d|7(?:[23]\\d|7[69])|9(?:22|4[1-8]|6[135]))|7(?:0(?:5[4-9]|6[0146]|7[124-6]|9[135-8])|(?:1[12]|8\\d)\\d|2(?:22|3[13-57-9]|4[1-3579]|5[14])|3(?:2\\d|3[1578]|4[1-35-7]|5[1-57]|61)|4(?:2\\d|3[1-579]|7[1-79])|5(?:22|5[1-9]|6[1457])|6(?:22|3[12457]|4[13-8])|9(?:22|5[1-9])))\\d{5}"],["(?:(?:33|88|9[0-57-9])\\d{3}|55(?:50[013]|90\\d)|6(?:1(?:2(?:2[01]|98)|35[0-4]|50\\d|61[23]|7(?:[01][017]|4\\d|55|9[5-9]))|2(?:(?:11|7\\d)\\d|2(?:[12]1|9[01379])|5(?:[126]\\d|3[0-4]))|5(?:19[01]|2(?:27|9[26])|(?:30|59|7\\d)\\d)|6(?:2(?:1[5-9]|2[0367]|38|41|52|60)|(?:3[79]|9[0-3])\\d|4(?:56|83)|7(?:[07]\\d|1[017]|3[07]|4[047]|5[057]|67|8[0178]|9[79]))|7(?:2(?:24|3[237]|4[5-9]|7[15-8])|5(?:7[12]|8[0589])|7(?:0\\d|[39][07])|9(?:0\\d|7[079]))|9(?:2(?:1[1267]|3[01]|5\\d|7[0-4])|(?:5[67]|7\\d)\\d|6(?:2[0-26]|8\\d)))|7(?:[07]\\d{3}|1(?:13[01]|6(?:0[47]|1[67]|66)|71[3-69]|98\\d)|2(?:2(?:2[79]|95)|3(?:2[5-9]|6[0-6])|57\\d|7(?:0\\d|1[17]|2[27]|3[37]|44|5[057]|66|88))|3(?:2(?:1[0-6]|21|3[469]|7[159])|(?:33|9[4-6])\\d|5(?:0[0-4]|5[579]|9\\d)|7(?:[0-3579]\\d|4[0467]|6[67]|8[078]))|4(?:2(?:29|5[0257]|6[0-7]|7[1-57])|5(?:1[0-4]|8\\d|9[5-9])|7(?:0\\d|1[024589]|2[0-27]|3[0137]|[46][07]|5[01]|7[5-9]|9[079])|9(?:7[015-9]|[89]\\d))|5(?:112|2(?:0\\d|2[29]|[49]4)|3[1568]\\d|52[6-9]|7(?:0[01578]|1[017]|[23]7|4[047]|[5-7]\\d|8[78]|9[079]))|6(?:2(?:2[1245]|4[2-4])|39\\d|41[179]|5(?:[349]\\d|5[0-2])|7(?:0[017]|[13]\\d|22|44|55|67|88))|9(?:22[128]|3(?:2[0-4]|7\\d)|57[02569]|7(?:2[05-9]|3[37]|4\\d|60|7[2579]|87|9[07]))))\\d{4}"]],"8~10"],"VA":["39","00","0\\d{5,10}|3[0-8]\\d{7,10}|55\\d{8}|8\\d{5}(?:\\d{2,4})?|(?:1\\d|39)\\d{7,8}",[6,7,8,9,10,11],0,0,0,0,0,0,"06698",[["06698\\d{1,6}"],["3[1-9]\\d{8}|3[2-9]\\d{7}",[9,10]],["80(?:0\\d{3}|3)\\d{3}",[6,9]],["(?:0878\\d{3}|89(?:2\\d|3[04]|4(?:[0-4]|[5-9]\\d\\d)|5[0-4]))\\d\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\d{6}",[6,8,9,10]],["1(?:78\\d|99)\\d{6}",[9,10]],0,0,0,["55\\d{8}",[10]],["84(?:[08]\\d{3}|[17])\\d{3}",[6,9]]]],"VC":["1","011","(?:[58]\\d\\d|784|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","784$1",0,"784",[["784(?:266|3(?:6[6-9]|7\\d|8[0-6])|4(?:38|5[0-36-8]|8[0-8])|5(?:55|7[0-2]|93)|638|784)\\d{4}"],["784(?:4(?:3[0-5]|5[45]|89|9[0-8])|5(?:2[6-9]|3[0-4])|720)\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,0,0,["78451[0-2]\\d{4}"]]],"VE":["58","00","[68]00\\d{7}|(?:[24]\\d|[59]0)\\d{8}",[10],[["(\\d{3})(\\d{7})","$1-$2",["[24-689]"],"0$1"]],"0",0,0,0,0,0,[["(?:2(?:12|3[457-9]|[467]\\d|[58][1-9]|9[1-6])|[4-6]00)\\d{7}"],["4(?:1[24-8]|2[46])\\d{7}"],["800\\d{7}"],["90[01]\\d{7}"],0,0,["501\\d{7}"]]],"VG":["1","011","(?:284|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-578]\\d{6})$","284$1",0,"284",[["284496[0-5]\\d{3}|284(?:229|4(?:22|9[45])|774|8(?:52|6[459]))\\d{4}"],["284496[6-9]\\d{3}|284(?:245|3(?:0[0-3]|4[0-7]|68|9[34])|4(?:4[0-6]|68|99)|5(?:4[0-7]|68|9[69]))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"VI":["1","011","[58]\\d{9}|(?:34|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","340$1",0,"340",[["340(?:2(?:0[0-38]|2[06-8]|4[49]|77)|3(?:32|44)|4(?:2[23]|44|7[34]|89)|5(?:1[34]|55)|6(?:2[56]|4[23]|77|9[023])|7(?:1[2-57-9]|2[57]|7\\d)|884|998)\\d{4}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"VN":["84","00","[12]\\d{9}|[135-9]\\d{8}|[16]\\d{7}|[16-8]\\d{6}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["80"],"0$1",1],["(\\d{4})(\\d{4,6})","$1 $2",["1"],0,1],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[69]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3578]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["2[48]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["2"],"0$1",1]],"0",0,0,0,0,0,[["2(?:0[3-9]|1[0-689]|2[0-25-9]|3[2-9]|4[2-8]|5[124-9]|6[0-39]|7[0-7]|8[2-79]|9[0-4679])\\d{7}",[10]],["(?:5(?:2[238]|59)|89[6-9]|99[013-9])\\d{6}|(?:3\\d|5[689]|7[06-9]|8[1-8]|9[0-8])\\d{7}",[9]],["1800\\d{4,6}|12(?:0[13]|28)\\d{4}",[8,9,10]],["1900\\d{4,6}",[8,9,10]],0,0,["(?:[17]99|80\\d)\\d{4}|69\\d{5,6}",[7,8]],0,["672\\d{6}",[9]]]],"VU":["678","00","[57-9]\\d{6}|(?:[238]\\d|48)\\d{3}",[5,7],[["(\\d{3})(\\d{4})","$1 $2",["[57-9]"]]],0,0,0,0,0,0,[["(?:38[0-8]|48[4-9])\\d\\d|(?:2[02-9]|3[4-7]|88)\\d{3}",[5]],["(?:[58]\\d|7[013-7])\\d{5}",[7]],["81[18]\\d\\d",[5]],0,0,0,["(?:3[03]|900\\d)\\d{3}"],0,["9(?:0[1-9]|1[01])\\d{4}",[7]]]],"WF":["681","00","(?:40|72)\\d{4}|8\\d{5}(?:\\d{3})?",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[478]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]],0,0,0,0,0,0,[["72\\d{4}",[6]],["(?:72|8[23])\\d{4}",[6]],["80[0-5]\\d{6}",[9]]]],"WS":["685","0","(?:[2-6]|8\\d{5})\\d{4}|[78]\\d{6}|[68]\\d{5}",[5,6,7,10],[["(\\d{5})","$1",["[2-5]|6[1-9]"]],["(\\d{3})(\\d{3,7})","$1 $2",["[68]"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]],0,0,0,0,0,0,[["6[1-9]\\d{3}|(?:[2-5]|60)\\d{4}",[5,6]],["(?:7[1-35-7]|8(?:[3-7]|9\\d{3}))\\d{5}",[7,10]],["800\\d{3}",[6]]]],"XK":["383","00","[23]\\d{7,8}|(?:4\\d\\d|[89]00)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[23]"],"0$1"]],"0",0,0,0,0,0,[["(?:2[89]|39)0\\d{6}|[23][89]\\d{6}"],["4[3-9]\\d{6}",[8]],["800\\d{5}",[8]],["900\\d{5}",[8]]]],"YE":["967","00","(?:1|7\\d)\\d{7}|[1-7]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-6]|7[24-68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[["78[0-7]\\d{4}|17\\d{6}|(?:[12][2-68]|3[2358]|4[2-58]|5[2-6]|6[3-58]|7[24-6])\\d{5}",[7,8]],["7[0137]\\d{7}",[9]]]],"YT":["262","00","80\\d{7}|(?:26|63)9\\d{6}",[9],0,"0",0,0,0,0,"269|63",[["269(?:0[0-367]|5[0-3]|6\\d|[78]0)\\d{4}"],["639(?:0[0-79]|1[019]|[267]\\d|3[09]|40|5[05-9]|9[04-79])\\d{4}"],["80\\d{7}"]]],"ZA":["27","00","[1-79]\\d{8}|8\\d{4,9}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,4})","$1 $2",["8[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["8[1-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["860"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0",0,0,0,0,0,[["(?:2(?:0330|4302)|52087)0\\d{3}|(?:1[0-8]|2[1-378]|3[1-69]|4\\d|5[1346-8])\\d{7}",[9]],["(?:1(?:3492[0-25]|4495[0235]|549(?:20|5[01]))|4[34]492[01])\\d{3}|8[1-4]\\d{3,7}|(?:2[27]|47|54)4950\\d{3}|(?:1(?:049[2-4]|9[12]\\d\\d)|(?:6\\d|7[0-46-9])\\d{3}|8(?:5\\d{3}|7(?:08[67]|158|28[5-9]|310)))\\d{4}|(?:1[6-8]|28|3[2-69]|4[025689]|5[36-8])4920\\d{3}|(?:12|[2-5]1)492\\d{4}",[5,6,7,8,9]],["80\\d{7}",[9]],["(?:86[2-9]|9[0-2]\\d)\\d{6}",[9]],0,0,["861\\d{6,7}",[9,10]],0,["87(?:08[0-589]|15[0-79]|28[0-4]|31[1-9])\\d{4}|87(?:[02][0-79]|1[0-46-9]|3[02-9]|[4-9]\\d)\\d{5}",[9]],["860\\d{6}",[9]]]],"ZM":["260","00","800\\d{6}|(?:21|63|[79]\\d)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[28]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[79]"],"0$1"]],"0",0,0,0,0,0,[["21[1-8]\\d{6}"],["(?:7[5-79]|9[5-8])\\d{7}"],["800\\d{6}"],0,0,0,0,0,["63\\d{7}"]]],"ZW":["263","00","2(?:[0-57-9]\\d{6,8}|6[0-24-9]\\d{6,7})|[38]\\d{9}|[35-8]\\d{8}|[3-6]\\d{7}|[1-689]\\d{6}|[1-3569]\\d{5}|[1356]\\d{4}",[5,6,7,8,9,10],[["(\\d{3})(\\d{3,5})","$1 $2",["2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]"],"0$1"],["(\\d)(\\d{3})(\\d{2,4})","$1 $2 $3",["[49]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["80"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2","2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)","2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["29[013-9]|39|54"],"0$1"],["(\\d{4})(\\d{3,5})","$1 $2",["(?:25|54)8","258|5483"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:(?:3\\d|9)\\d|[4-8])|2(?:(?:(?:0(?:2[014]|5)|(?:2[0157]|31|84|9)\\d\\d|[56](?:[14]\\d\\d|20)|7(?:[089]|2[03]|[35]\\d\\d))\\d|4(?:2\\d\\d|8))\\d|1(?:2|[39]\\d{4}))|3(?:(?:123|(?:29\\d|92)\\d)\\d\\d|7(?:[19]|[56]\\d))|5(?:0|1[2-478]|26|[37]2|4(?:2\\d{3}|83)|5(?:25\\d\\d|[78])|[689]\\d)|6(?:(?:[16-8]21|28|52[013])\\d\\d|[39])|8(?:[1349]28|523)\\d\\d)\\d{3}|(?:4\\d\\d|9[2-9])\\d{4,5}|(?:(?:2(?:(?:(?:0|8[146])\\d|7[1-7])\\d|2(?:[278]\\d|92)|58(?:2\\d|3))|3(?:[26]|9\\d{3})|5(?:4\\d|5)\\d\\d)\\d|6(?:(?:(?:[0-246]|[78]\\d)\\d|37)\\d|5[2-8]))\\d\\d|(?:2(?:[569]\\d|8[2-57-9])|3(?:[013-59]\\d|8[37])|6[89]8)\\d{3}"],["7(?:[178]\\d|3[1-9])\\d{6}",[9]],["80(?:[01]\\d|20|8[0-8])\\d{3}",[7]],0,0,0,0,0,["86(?:1[12]|22|30|44|55|77|8[368])\\d{6}",[10]]]]},"nonGeographic":{"800":["800",0,"(?:00|[1-9]\\d)\\d{6}",[8],[["(\\d{4})(\\d{4})","$1 $2",["\\d"]]],0,0,0,0,0,0,[0,0,["(?:00|[1-9]\\d)\\d{6}"]]],"808":["808",0,"[1-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[1-9]"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,["[1-9]\\d{7}"]]],"870":["870",0,"7\\d{11}|[35-7]\\d{8}",[9,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[35-7]"]]],0,0,0,0,0,0,[0,["(?:[356]|774[45])\\d{8}|7[6-8]\\d{7}"]]],"878":["878",0,"10\\d{10}",[12],[["(\\d{2})(\\d{5})(\\d{5})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["10\\d{10}"]]],"881":["881",0,"[0-36-9]\\d{8}",[9],[["(\\d)(\\d{3})(\\d{5})","$1 $2 $3",["[0-36-9]"]]],0,0,0,0,0,0,[0,["[0-36-9]\\d{8}"]]],"882":["882",0,"[13]\\d{6}(?:\\d{2,5})?|285\\d{9}|(?:[19]\\d|49)\\d{6}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5})","$1 $2",["16|342"]],["(\\d{2})(\\d{6})","$1 $2",["4"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[19]"]],["(\\d{2})(\\d{4})(\\d{3})","$1 $2 $3",["3[23]"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["34[57]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["34"]],["(\\d{2})(\\d{4,5})(\\d{5})","$1 $2 $3",["[1-3]"]]],0,0,0,0,0,0,[0,["342\\d{4}|(?:337|49)\\d{6}|3(?:2|47|7\\d{3})\\d{7}",[7,8,9,10,12]],0,0,0,0,0,0,["1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\d{4}|6\\d{5,10})|(?:(?:285\\d\\d|3(?:45|[69]\\d{3}))\\d|9[89])\\d{6}"]]],"883":["883",0,"(?:210|370\\d\\d)\\d{7}|51\\d{7}(?:\\d{3})?",[9,10,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["510"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["2"]],["(\\d{4})(\\d{4})(\\d{4})","$1 $2 $3",["51[13]"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[35]"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["(?:210|(?:370[1-9]|51[013]0)\\d)\\d{7}|5100\\d{5}"]]],"888":["888",0,"\\d{11}",[11],[["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3"]],0,0,0,0,0,0,[0,0,0,0,0,0,["\\d{11}"]]],"979":["979",0,"[1359]\\d{8}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[1359]"]]],0,0,0,0,0,0,[0,0,0,["[1359]\\d{8}"]]]}} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.max.json b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.max.json new file mode 100644 index 00000000..32856020 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.max.json @@ -0,0 +1 @@ +{"version":4,"country_calling_codes":{"1":["US","AG","AI","AS","BB","BM","BS","CA","DM","DO","GD","GU","JM","KN","KY","LC","MP","MS","PR","SX","TC","TT","VC","VG","VI"],"7":["RU","KZ"],"20":["EG"],"27":["ZA"],"30":["GR"],"31":["NL"],"32":["BE"],"33":["FR"],"34":["ES"],"36":["HU"],"39":["IT","VA"],"40":["RO"],"41":["CH"],"43":["AT"],"44":["GB","GG","IM","JE"],"45":["DK"],"46":["SE"],"47":["NO","SJ"],"48":["PL"],"49":["DE"],"51":["PE"],"52":["MX"],"53":["CU"],"54":["AR"],"55":["BR"],"56":["CL"],"57":["CO"],"58":["VE"],"60":["MY"],"61":["AU","CC","CX"],"62":["ID"],"63":["PH"],"64":["NZ"],"65":["SG"],"66":["TH"],"81":["JP"],"82":["KR"],"84":["VN"],"86":["CN"],"90":["TR"],"91":["IN"],"92":["PK"],"93":["AF"],"94":["LK"],"95":["MM"],"98":["IR"],"211":["SS"],"212":["MA","EH"],"213":["DZ"],"216":["TN"],"218":["LY"],"220":["GM"],"221":["SN"],"222":["MR"],"223":["ML"],"224":["GN"],"225":["CI"],"226":["BF"],"227":["NE"],"228":["TG"],"229":["BJ"],"230":["MU"],"231":["LR"],"232":["SL"],"233":["GH"],"234":["NG"],"235":["TD"],"236":["CF"],"237":["CM"],"238":["CV"],"239":["ST"],"240":["GQ"],"241":["GA"],"242":["CG"],"243":["CD"],"244":["AO"],"245":["GW"],"246":["IO"],"247":["AC"],"248":["SC"],"249":["SD"],"250":["RW"],"251":["ET"],"252":["SO"],"253":["DJ"],"254":["KE"],"255":["TZ"],"256":["UG"],"257":["BI"],"258":["MZ"],"260":["ZM"],"261":["MG"],"262":["RE","YT"],"263":["ZW"],"264":["NA"],"265":["MW"],"266":["LS"],"267":["BW"],"268":["SZ"],"269":["KM"],"290":["SH","TA"],"291":["ER"],"297":["AW"],"298":["FO"],"299":["GL"],"350":["GI"],"351":["PT"],"352":["LU"],"353":["IE"],"354":["IS"],"355":["AL"],"356":["MT"],"357":["CY"],"358":["FI","AX"],"359":["BG"],"370":["LT"],"371":["LV"],"372":["EE"],"373":["MD"],"374":["AM"],"375":["BY"],"376":["AD"],"377":["MC"],"378":["SM"],"380":["UA"],"381":["RS"],"382":["ME"],"383":["XK"],"385":["HR"],"386":["SI"],"387":["BA"],"389":["MK"],"420":["CZ"],"421":["SK"],"423":["LI"],"500":["FK"],"501":["BZ"],"502":["GT"],"503":["SV"],"504":["HN"],"505":["NI"],"506":["CR"],"507":["PA"],"508":["PM"],"509":["HT"],"590":["GP","BL","MF"],"591":["BO"],"592":["GY"],"593":["EC"],"594":["GF"],"595":["PY"],"596":["MQ"],"597":["SR"],"598":["UY"],"599":["CW","BQ"],"670":["TL"],"672":["NF"],"673":["BN"],"674":["NR"],"675":["PG"],"676":["TO"],"677":["SB"],"678":["VU"],"679":["FJ"],"680":["PW"],"681":["WF"],"682":["CK"],"683":["NU"],"685":["WS"],"686":["KI"],"687":["NC"],"688":["TV"],"689":["PF"],"690":["TK"],"691":["FM"],"692":["MH"],"850":["KP"],"852":["HK"],"853":["MO"],"855":["KH"],"856":["LA"],"880":["BD"],"886":["TW"],"960":["MV"],"961":["LB"],"962":["JO"],"963":["SY"],"964":["IQ"],"965":["KW"],"966":["SA"],"967":["YE"],"968":["OM"],"970":["PS"],"971":["AE"],"972":["IL"],"973":["BH"],"974":["QA"],"975":["BT"],"976":["MN"],"977":["NP"],"992":["TJ"],"993":["TM"],"994":["AZ"],"995":["GE"],"996":["KG"],"998":["UZ"]},"countries":{"AC":["247","00","(?:[01589]\\d|[46])\\d{4}",[5,6],0,0,0,0,0,0,0,[["6[2-467]\\d{3}",[5]],["4\\d{4}",[5]],0,0,0,0,["(?:0[1-9]|[1589]\\d)\\d{4}",[6]]]],"AD":["376","00","(?:1|6\\d)\\d{7}|[135-9]\\d{5}",[6,8,9],[["(\\d{3})(\\d{3})","$1 $2",["[135-9]"]],["(\\d{4})(\\d{4})","$1 $2",["1"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]],0,0,0,0,0,0,[["[78]\\d{5}",[6]],["690\\d{6}|[356]\\d{5}",[6,9]],["180[02]\\d{4}",[8]],["[19]\\d{5}",[6]]]],"AE":["971","00","(?:[4-7]\\d|9[0-689])\\d{7}|800\\d{2,9}|[2-4679]\\d{7}",[5,6,7,8,9,10,11,12],[["(\\d{3})(\\d{2,9})","$1 $2",["60|8"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[236]|[479][2-8]"],"0$1"],["(\\d{3})(\\d)(\\d{5})","$1 $2 $3",["[479]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"]],"0",0,0,0,0,0,[["[2-4679][2-8]\\d{6}",[8]],["5[024-68]\\d{7}",[9]],["400\\d{6}|800\\d{2,9}"],["900[02]\\d{5}",[9]],0,0,["600[25]\\d{5}",[9]],0,0,["700[05]\\d{5}",[9]]]],"AF":["93","00","[2-7]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"]],"0",0,0,0,0,0,[["(?:[25][0-8]|[34][0-4]|6[0-5])[2-9]\\d{6}"],["7\\d{8}"]]],"AG":["1","011","(?:268|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([457]\\d{6})$","268$1",0,"268",[["268(?:4(?:6[0-38]|84)|56[0-2])\\d{4}"],["268(?:464|7(?:1[3-9]|[28]\\d|3[0246]|64|7[0-689]))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,0,["26840[69]\\d{4}"],["26848[01]\\d{4}"]]],"AI":["1","011","(?:264|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2457]\\d{6})$","264$1",0,"264",[["264(?:292|4(?:6[12]|9[78]))\\d{4}"],["264(?:235|4(?:69|76)|5(?:3[6-9]|8[1-4])|7(?:29|72))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,0,["264724\\d{4}"]]],"AL":["355","00","(?:700\\d\\d|900)\\d{3}|8\\d{5,7}|(?:[2-5]|6\\d)\\d{7}",[6,7,8,9],[["(\\d{3})(\\d{3,4})","$1 $2",["80|9"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["4[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2358][2-5]|4"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["[23578]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["6"],"0$1"]],"0",0,0,0,0,0,[["4505[0-2]\\d{3}|(?:[2358][16-9]\\d[2-9]|4410)\\d{4}|(?:[2358][2-5][2-9]|4(?:[2-57-9][2-9]|6\\d))\\d{5}",[8]],["6(?:[78][2-9]|9\\d)\\d{6}",[9]],["800\\d{4}",[7]],["900[1-9]\\d\\d",[6]],["700[2-9]\\d{4}",[8]],0,0,0,0,["808[1-9]\\d\\d",[6]]]],"AM":["374","00","(?:[1-489]\\d|55|60|77)\\d{6}",[8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[89]0"],"0 $1"],["(\\d{3})(\\d{5})","$1 $2",["2|3[12]"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["1|47"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[3-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:(?:1[0-25]|47)\\d|2(?:2[2-46]|3[1-8]|4[2-69]|5[2-7]|6[1-9]|8[1-7])|3[12]2)\\d{5}"],["(?:33|4[1349]|55|77|88|9[13-9])\\d{6}"],["800\\d{5}"],["90[016]\\d{5}"],0,0,0,0,["60(?:2[78]|3[5-9]|4[02-9]|5[0-46-9]|[6-8]\\d|9[01])\\d{4}"],["80[1-4]\\d{5}"]]],"AO":["244","00","[29]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[29]"]]],0,0,0,0,0,0,[["2\\d(?:[0134][25-9]|[25-9]\\d)\\d{5}"],["9[1-59]\\d{7}"]]],"AR":["54","00","(?:11|[89]\\d\\d)\\d{8}|[2368]\\d{9}",[10,11],[["(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])","2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["1"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2-$3",["[23]"],"0$1",1],["(\\d)(\\d{4})(\\d{2})(\\d{4})","$2 15-$3-$4",["9(?:2[2-469]|3[3-578])","9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))","9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",0,"$1 $2 $3-$4"],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 15-$3-$4",["91"],"0$1",0,"$1 $2 $3-$4"],["(\\d{3})(\\d{3})(\\d{5})","$1-$2-$3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 15-$3-$4",["9"],"0$1",0,"$1 $2 $3-$4"]],"0",0,"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?","9$1",0,0,[["3888[013-9]\\d{5}|3(?:7(?:1[15]|81)|8(?:21|4[16]|69|9[12]))[46]\\d{5}|(?:29(?:54|66)|3(?:7(?:55|77)|865))[2-8]\\d{5}|(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|473|9(?:[07]2|2[26]|34|46))|3327)[45]\\d{5}|(?:2(?:284|3(?:02|23)|657|920)|3(?:4(?:8[27]|92)|541|878))[2-7]\\d{5}|(?:2(?:(?:26|62)2|320|477|9(?:42|83))|3(?:329|4(?:[47]6|62|89)|564))[2-6]\\d{5}|(?:(?:11[1-8]|670)\\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-7]|[235][4-6]|84)|5(?:1[2-9]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:0[45]|[17][2-6]|3[4-6]|[58][3-6])))\\d{6}|2(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|475|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\d{5}|(?:2(?:2(?:57|81)|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|71)|5(?:25|37|4[347]|71)|7(?:18|5[17])))[3-6]\\d{5}|(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[03-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[145]|4[13]|5[468]|7[2-5]|8[26])|8(?:2[5-7]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\d{5}",[10]],["93(?:7(?:1[15]|81)[46]|8(?:(?:21|4[16]|69|9[12])[46]|88[013-9]))\\d{5}|9(?:29(?:54|66)|3(?:7(?:55|77)|865))[2-8]\\d{5}|9(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|473|9(?:[07]2|2[26]|34|46))|3327)[45]\\d{5}|9(?:2(?:284|3(?:02|23)|657|920)|3(?:4(?:8[27]|92)|541|878))[2-7]\\d{5}|9(?:2(?:(?:26|62)2|320|477|9(?:42|83))|3(?:329|4(?:[47]6|62|89)|564))[2-6]\\d{5}|(?:675\\d|9(?:11[1-8]\\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-7]|[235][4-6]|84)|5(?:1[2-9]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:0[45]|[17][2-6]|3[4-6]|[58][3-6]))))\\d{6}|92(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|475|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\d{5}|9(?:2(?:2(?:57|81)|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|71)|5(?:25|37|4[347]|71)|7(?:18|5[17])))[3-6]\\d{5}|9(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[03-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[145]|4[13]|5[468]|7[2-5]|8[26])|8(?:2[5-7]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\d{5}"],["800\\d{7,8}"],["60[04579]\\d{7}",[10]],0,0,["810\\d{7}",[10]]]],"AS":["1","011","(?:[58]\\d\\d|684|900)\\d{7}",[10],0,"1",0,"1|([267]\\d{6})$","684$1",0,"684",[["6846(?:22|33|44|55|77|88|9[19])\\d{4}"],["684(?:2(?:48|5[2468]|72)|7(?:3[13]|70|82))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"AT":["43","00","1\\d{3,12}|2\\d{6,12}|43(?:(?:0\\d|5[02-9])\\d{3,9}|2\\d{4,5}|[3467]\\d{4}|8\\d{4,6}|9\\d{4,7})|5\\d{4,12}|8\\d{7,12}|9\\d{8,12}|(?:[367]\\d|4[0-24-9])\\d{4,11}",[4,5,6,7,8,9,10,11,12,13],[["(\\d)(\\d{3,12})","$1 $2",["1(?:11|[2-9])"],"0$1"],["(\\d{3})(\\d{2})","$1 $2",["517"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["5[079]"],"0$1"],["(\\d{3})(\\d{3,10})","$1 $2",["(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]"],"0$1"],["(\\d{4})(\\d{3,9})","$1 $2",["[2-467]|5[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["5"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,7})","$1 $2 $3",["5"],"0$1"]],"0",0,0,0,0,0,[["1(?:11\\d|[2-9]\\d{3,11})|(?:316|463|(?:51|66|73)2)\\d{3,10}|(?:2(?:1[467]|2[13-8]|5[2357]|6[1-46-8]|7[1-8]|8[124-7]|9[1458])|3(?:1[1-578]|3[23568]|4[5-7]|5[1378]|6[1-38]|8[3-68])|4(?:2[1-8]|35|7[1368]|8[2457])|5(?:2[1-8]|3[357]|4[147]|5[12578]|6[37])|6(?:13|2[1-47]|4[135-8]|5[468])|7(?:2[1-8]|35|4[13478]|5[68]|6[16-8]|7[1-6]|9[45]))\\d{4,10}"],["6(?:5[0-3579]|6[013-9]|[7-9]\\d)\\d{4,10}",[7,8,9,10,11,12,13]],["800\\d{6,10}",[9,10,11,12,13]],["(?:8[69][2-68]|9(?:0[01]|3[019]))\\d{6,10}",[9,10,11,12,13]],0,0,0,0,["5(?:0[1-9]|17|[79]\\d)\\d{2,10}|7[28]0\\d{6,10}",[5,6,7,8,9,10,11,12,13]],["8(?:10|2[018])\\d{6,10}|828\\d{5}",[8,9,10,11,12,13]]]],"AU":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{7}(?:\\d(?:\\d{2})?)?|8[0-24-9]\\d{7})|[2-478]\\d{8}|1\\d{4,7}",[5,6,7,8,9,10,12],[["(\\d{2})(\\d{3,4})","$1 $2",["16"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,4})","$1 $2 $3",["16"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["14|4"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[2378]"],"(0$1)"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:30|[89])"]]],"0",0,"0|(183[12])",0,0,0,[["(?:(?:2(?:[0-26-9]\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\d|2[0-8]))\\d{3}|8(?:51(?:0(?:0[03-9]|[12479]\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\d|7[89]|9[0-4]))|(?:6[0-8]|[78]\\d)\\d{3}|9(?:[02-9]\\d{3}|1(?:(?:[0-58]\\d|6[0135-9])\\d|7(?:0[0-24-9]|[1-9]\\d)|9(?:[0-46-9]\\d|5[0-79])))))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,["163\\d{2,6}",[5,6,7,8,9]],["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],"AW":["297","00","(?:[25-79]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[25-9]"]]],0,0,0,0,0,0,[["5(?:2\\d|8[1-9])\\d{4}"],["(?:290|5[69]\\d|6(?:[03]0|22|4[0-2]|[69]\\d)|7(?:[34]\\d|7[07])|9(?:6[45]|9[4-8]))\\d{4}"],["800\\d{4}"],["900\\d{4}"],0,0,0,0,["(?:28\\d|501)\\d{4}"]]],"AX":["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","2\\d{4,9}|35\\d{4,5}|(?:60\\d\\d|800)\\d{4,6}|7\\d{5,11}|(?:[14]\\d|3[0-46-9]|50)\\d{4,8}",[5,6,7,8,9,10,11,12],0,"0",0,0,0,0,"18",[["18[1-8]\\d{3,6}",[6,7,8,9]],["4946\\d{2,6}|(?:4[0-8]|50)\\d{4,8}",[6,7,8,9,10]],["800\\d{4,6}",[7,8,9]],["[67]00\\d{5,6}",[8,9]],0,0,["20\\d{4,8}|60[12]\\d{5,6}|7(?:099\\d{4,5}|5[03-9]\\d{3,7})|20[2-59]\\d\\d|(?:606|7(?:0[78]|1|3\\d))\\d{7}|(?:10|29|3[09]|70[1-5]\\d)\\d{4,8}"]],"00"],"AZ":["994","00","365\\d{6}|(?:[124579]\\d|60|88)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[28]|2|365|46","1[28]|2|365[45]|46","1[28]|2|365(?:4|5[02])|46"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[13-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:2[12]428|3655[02])\\d{4}|(?:2(?:22[0-79]|63[0-28])|3654)\\d{5}|(?:(?:1[28]|46)\\d|2(?:[014-6]2|[23]3))\\d{6}"],["36554\\d{4}|(?:[16]0|4[04]|5[015]|7[07]|99)\\d{7}"],["88\\d{7}"],["900200\\d{3}"]]],"BA":["387","00","6\\d{8}|(?:[35689]\\d|49|70)\\d{6}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["6[1-3]|[7-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2-$3",["[3-5]|6[56]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["6"],"0$1"]],"0",0,0,0,0,0,[["(?:3(?:[05-79][2-9]|1[4579]|[23][24-9]|4[2-4689]|8[2457-9])|49[2-579]|5(?:0[2-49]|[13][2-9]|[268][2-4679]|4[4689]|5[2-79]|7[2-69]|9[2-4689]))\\d{5}",[8]],["6040\\d{5}|6(?:03|[1-356]|44|7\\d)\\d{6}"],["8[08]\\d{6}",[8]],["9[0246]\\d{6}",[8]],0,0,["703[235]0\\d{3}|70(?:2[0-5]|3[0146]|[56]0)\\d{4}",[8]],0,0,["8[12]\\d{6}",[8]]]],"BB":["1","011","(?:246|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","246$1",0,"246",[["246521[0369]\\d{3}|246(?:2(?:2[78]|7[0-4])|4(?:1[024-6]|2\\d|3[2-9])|5(?:20|[34]\\d|54|7[1-3])|6(?:2\\d|38)|7[35]7|9(?:1[89]|63))\\d{4}"],["246(?:(?:2(?:[3568]\\d|4[0-57-9])|3(?:5[2-9]|6[0-6])|4(?:46|5\\d)|69[5-7]|8(?:[2-5]\\d|83))\\d|52(?:1[147]|20))\\d{3}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["(?:246976|900[2-9]\\d\\d)\\d{4}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,["246(?:292|367|4(?:1[7-9]|3[01]|4[47-9]|67)|7(?:1[2-9]|2\\d|3[016]|53))\\d{4}"],0,["24631\\d{5}"]]],"BD":["880","00","[1-469]\\d{9}|8[0-79]\\d{7,8}|[2-79]\\d{8}|[2-9]\\d{7}|[3-9]\\d{6}|[57-9]\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{4,6})","$1-$2",["31[5-8]|[459]1"],"0$1"],["(\\d{3})(\\d{3,7})","$1-$2",["3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:28|4[14]|5)|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]"],"0$1"],["(\\d{4})(\\d{3,6})","$1-$2",["[13-9]|22"],"0$1"],["(\\d)(\\d{7,8})","$1-$2",["2"],"0$1"]],"0",0,0,0,0,0,[["(?:4(?:31\\d\\d|423)|5222)\\d{3}(?:\\d{2})?|8332[6-9]\\d\\d|(?:3(?:03[56]|224)|4(?:22[25]|653))\\d{3,4}|(?:3(?:42[47]|529|823)|4(?:027|525|65(?:28|8))|562|6257|7(?:1(?:5[3-5]|6[12]|7[156]|89)|22[589]56|32|42675|52(?:[25689](?:56|8)|[347]8)|71(?:6[1267]|75|89)|92374)|82(?:2[59]|32)56|9(?:03[23]56|23(?:256|373)|31|5(?:1|2[4589]56)))\\d{3}|(?:3(?:02[348]|22[35]|324|422)|4(?:22[67]|32[236-9]|6(?:2[46]|5[57])|953)|5526|6(?:024|6655)|81)\\d{4,5}|(?:2(?:7(?:1[0-267]|2[0-289]|3[0-29]|4[01]|5[1-3]|6[013]|7[0178]|91)|8(?:0[125]|1[1-6]|2[0157-9]|3[1-69]|41|6[1-35]|7[1-5]|8[1-8]|9[0-6])|9(?:0[0-2]|1[0-4]|2[568]|3[3-6]|5[5-7]|6[0136-9]|7[0-7]|8[014-9]))|3(?:0(?:2[025-79]|3[2-4])|181|22[12]|32[2356]|824)|4(?:02[09]|22[348]|32[045]|523|6(?:27|54))|666(?:22|53)|7(?:22[57-9]|42[56]|82[35])8|8(?:0[124-9]|2(?:181|2[02-4679]8)|4[12]|[5-7]2)|9(?:[04]2|2(?:2|328)|81))\\d{4}|(?:2(?:222|[45]\\d)\\d|3(?:1(?:2[5-7]|[5-7])|425|822)|4(?:033|1\\d|[257]1|332|4(?:2[246]|5[25])|6(?:2[35]|56|62)|8(?:23|54)|92[2-5])|5(?:02[03489]|22[457]|32[35-79]|42[46]|6(?:[18]|53)|724|826)|6(?:023|2(?:2[2-5]|5[3-5]|8)|32[3478]|42[34]|52[47]|6(?:[18]|6(?:2[34]|5[24]))|[78]2[2-5]|92[2-6])|7(?:02|21\\d|[3-589]1|6[12]|72[24])|8(?:217|3[12]|[5-7]1)|9[24]1)\\d{5}|(?:(?:3[2-8]|5[2-57-9]|6[03-589])1|4[4689][18])\\d{5}|[59]1\\d{5}"],["(?:1[13-9]\\d|644)\\d{7}|(?:3[78]|44|66)[02-9]\\d{7}",[10]],["80[03]\\d{7}",[10]],0,0,0,0,0,["96(?:0[469]|1[0-47]|3[389]|6[69]|7[78])\\d{6}",[10]]]],"BE":["32","00","4\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:80|9)0"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[239]|4[23]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[15-8]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4"],"0$1"]],"0",0,0,0,0,0,[["80[2-8]\\d{5}|(?:1[0-69]|[23][2-8]|4[23]|5\\d|6[013-57-9]|71|8[1-79]|9[2-4])\\d{6}",[8]],["4[5-9]\\d{7}",[9]],["800[1-9]\\d{4}",[8]],["(?:70(?:2[0-57]|3[04-7]|44|6[569]|7[0579])|90(?:0[0-8]|1[36]|2[0-3568]|3[0-689]|[47][2-68]|5[1-68]|6[0-378]|9[34679]))\\d{4}",[8]],0,0,["78(?:0[57]|1[014-8]|2[25]|3[15-8]|48|[56]0|7[06-8]|9\\d)\\d{4}",[8]],0,0,["7879\\d{4}",[8]]]],"BF":["226","00","[025-7]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[025-7]"]]],0,0,0,0,0,0,[["2(?:0(?:49|5[23]|6[5-7]|9[016-9])|4(?:4[569]|5[4-6]|6[5-7]|7[0179])|5(?:[34]\\d|50|6[5-7]))\\d{4}"],["(?:0[1-35-7]|5[1-8]|[67]\\d)\\d{6}"]]],"BG":["359","00","[2-7]\\d{6,7}|[89]\\d{6,8}|2\\d{5}",[6,7,8,9],[["(\\d)(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["43[1-6]|70[1-9]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:70|8)0"],"0$1"],["(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3",["43[1-7]|7"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[48]|9[08]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"]],"0",0,0,0,0,0,[["2\\d{5,7}|(?:43[1-6]|70[1-9])\\d{4,5}|(?:[36]\\d|4[124-7]|[57][1-9]|8[1-6]|9[1-7])\\d{5,6}",[6,7,8]],["(?:43[07-9]|99[69]\\d)\\d{5}|(?:8[7-9]|98)\\d{7}",[8,9]],["800\\d{5}",[8]],["90\\d{6}",[8]],0,0,0,0,0,["700\\d{5}",[8]]]],"BH":["973","00","[136-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[13679]|8[047]"]]],0,0,0,0,0,0,[["(?:1(?:3[1356]|6[0156]|7\\d)\\d|6(?:1[16]\\d|500|6(?:0\\d|3[12]|44|7[7-9]|88)|9[69][69])|7(?:1(?:11|78)|7\\d\\d))\\d{4}"],["(?:3(?:[1-79]\\d|8[0-47-9])\\d|6(?:3(?:00|33|6[16])|6(?:3[03-9]|[69]\\d|7[0-6])))\\d{4}"],["80\\d{6}"],["(?:87|9[014578])\\d{6}"],0,0,0,0,0,["84\\d{6}"]]],"BI":["257","00","(?:[267]\\d|31)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2367]"]]],0,0,0,0,0,0,[["(?:22|31)\\d{6}"],["(?:29|6[1257-9]|7[125-9])\\d{6}"]]],"BJ":["229","00","(?:[25689]\\d|40)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24-689]"]]],0,0,0,0,0,0,[["2(?:02|1[037]|2[45]|3[68]|4\\d)\\d{5}"],["(?:40|5[1-9]|6\\d|9[013-9])\\d{6}"],0,0,0,0,["81\\d{6}"],0,["857[58]\\d{4}"]]],"BL":["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[["590(?:2[7-9]|5[12]|87)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],"BM":["1","011","(?:441|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","441$1",0,"441",[["441(?:[46]\\d\\d|5(?:4\\d|60|89))\\d{4}"],["441(?:[2378]\\d|5[0-39])\\d{5}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"BN":["673","00","[2-578]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-578]"]]],0,0,0,0,0,0,[["22[0-7]\\d{4}|(?:2[013-9]|[34]\\d|5[0-25-9])\\d{5}"],["(?:22[89]|[78]\\d\\d)\\d{4}"],0,0,0,0,0,0,["5[34]\\d{5}"]]],"BO":["591","00(?:1\\d)?","(?:[2-467]\\d\\d|8001)\\d{5}",[8,9],[["(\\d)(\\d{7})","$1 $2",["[23]|4[46]"]],["(\\d{8})","$1",["[67]"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["8"]]],"0",0,"0(1\\d)?",0,0,0,[["(?:2(?:2\\d\\d|5(?:11|[258]\\d|9[67])|6(?:12|2\\d|9[34])|8(?:2[34]|39|62))|3(?:3\\d\\d|4(?:6\\d|8[24])|8(?:25|42|5[257]|86|9[25])|9(?:[27]\\d|3[2-4]|4[248]|5[24]|6[2-6]))|4(?:4\\d\\d|6(?:11|[24689]\\d|72)))\\d{4}",[8]],["[67]\\d{7}",[8]],["8001[07]\\d{4}",[9]]]],"BQ":["599","00","(?:[34]1|7\\d)\\d{5}",[7],0,0,0,0,0,0,"[347]",[["(?:318[023]|41(?:6[023]|70)|7(?:1[578]|2[05]|50)\\d)\\d{3}"],["(?:31(?:8[14-8]|9[14578])|416[14-9]|7(?:0[01]|7[07]|8\\d|9[056])\\d)\\d{3}"]]],"BR":["55","00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)","(?:[1-46-9]\\d\\d|5(?:[0-46-9]\\d|5[0-46-9]))\\d{8}|[1-9]\\d{9}|[3589]\\d{8}|[34]\\d{7}",[8,9,10,11],[["(\\d{4})(\\d{4})","$1-$2",["300|4(?:0[02]|37)","4(?:02|37)0|[34]00"]],["(\\d{3})(\\d{2,3})(\\d{4})","$1 $2 $3",["(?:[358]|90)0"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]"],"($1)"],["(\\d{2})(\\d{5})(\\d{4})","$1 $2-$3",["[16][1-9]|[2-57-9]"],"($1)"]],"0",0,"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\d{10,11}))?","$2",0,0,[["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-5]\\d{7}",[10]],["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])(?:7|9\\d)\\d{7}",[10,11]],["800\\d{6,7}",[9,10]],["300\\d{6}|[59]00\\d{6,7}",[9,10]],0,0,0,0,0,["(?:30[03]\\d{3}|4(?:0(?:0\\d|20)|370))\\d{4}|300\\d{5}",[8,10]]]],"BS":["1","011","(?:242|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([3-8]\\d{6})$","242$1",0,"242",[["242(?:3(?:02|[236][1-9]|4[0-24-9]|5[0-68]|7[347]|8[0-4]|9[2-467])|461|502|6(?:0[1-4]|12|2[013]|[45]0|7[67]|8[78]|9[89])|7(?:02|88))\\d{4}"],["242(?:3(?:5[79]|7[56]|95)|4(?:[23][1-9]|4[1-35-9]|5[1-8]|6[2-8]|7\\d|81)|5(?:2[45]|3[35]|44|5[1-46-9]|65|77)|6[34]6|7(?:27|38)|8(?:0[1-9]|1[02-9]|2\\d|[89]9))\\d{4}"],["242300\\d{4}|8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,["242225\\d{4}"]]],"BT":["975","00","[17]\\d{7}|[2-8]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[2-68]|7[246]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[67]|7"]]],0,0,0,0,0,0,[["(?:2[3-6]|[34][5-7]|5[236]|6[2-46]|7[246]|8[2-4])\\d{5}",[7]],["(?:1[67]|77)\\d{6}",[8]]]],"BW":["267","00","(?:0800|(?:[37]|800)\\d)\\d{6}|(?:[2-6]\\d|90)\\d{5}",[7,8,10],[["(\\d{2})(\\d{5})","$1 $2",["90"]],["(\\d{3})(\\d{4})","$1 $2",["[24-6]|3[15-79]"]],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37]"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["(?:2(?:4[0-48]|6[0-24]|9[0578])|3(?:1[0-35-9]|55|[69]\\d|7[013])|4(?:6[03]|7[1267]|9[0-5])|5(?:3[03489]|4[0489]|7[1-47]|88|9[0-49])|6(?:2[1-35]|5[149]|8[067]))\\d{4}",[7]],["(?:321|7(?:[1-7]\\d|8[01]))\\d{5}",[8]],["(?:0800|800\\d)\\d{6}",[10]],["90\\d{5}",[7]],0,0,0,0,["79(?:1(?:[01]\\d|2[0-7])|2[0-7]\\d)\\d{3}",[8]]]],"BY":["375","810","(?:[12]\\d|33|44|902)\\d{7}|8(?:0[0-79]\\d{5,7}|[1-7]\\d{9})|8(?:1[0-489]|[5-79]\\d)\\d{7}|8[1-79]\\d{6,7}|8[0-79]\\d{5}|8\\d{5}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3})","$1 $2",["800"],"8 $1"],["(\\d{3})(\\d{2})(\\d{2,4})","$1 $2 $3",["800"],"8 $1"],["(\\d{4})(\\d{2})(\\d{3})","$1 $2-$3",["1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])","1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])"],"8 0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["1(?:[56]|7[467])|2[1-3]"],"8 0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-4]"],"8 0$1"],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["[89]"],"8 $1"]],"8",0,"0|80?",0,0,0,[["(?:1(?:5(?:1[1-5]|[24]\\d|6[2-4]|9[1-7])|6(?:[235]\\d|4[1-7])|7\\d\\d)|2(?:1(?:[246]\\d|3[0-35-9]|5[1-9])|2(?:[235]\\d|4[0-8])|3(?:[26]\\d|3[02-79]|4[024-7]|5[03-7])))\\d{5}",[9]],["(?:2(?:5[5-79]|9[1-9])|(?:33|44)\\d)\\d{6}",[9]],["800\\d{3,7}|8(?:0[13]|20\\d)\\d{7}"],["(?:810|902)\\d{7}",[10]],0,0,0,0,["249\\d{6}",[9]]],"8~10"],"BZ":["501","00","(?:0800\\d|[2-8])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1-$2",["[2-8]"]],["(\\d)(\\d{3})(\\d{4})(\\d{3})","$1-$2-$3-$4",["0"]]],0,0,0,0,0,0,[["(?:2(?:[02]\\d|36|[68]0)|[3-58](?:[02]\\d|[68]0)|7(?:[02]\\d|32|[68]0))\\d{4}",[7]],["6[0-35-7]\\d{5}",[7]],["0800\\d{7}",[11]]]],"CA":["1","011","(?:[2-8]\\d|90)\\d{8}|3\\d{6}",[7,10],0,"1",0,0,0,0,0,[["(?:2(?:04|[23]6|[48]9|50|63)|3(?:06|43|6[578])|4(?:03|1[68]|3[178]|50|68|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|13|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\d{6}",[10]],["",[10]],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",[10]],["900[2-9]\\d{6}",[10]],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|(?:5(?:00|2[125-7]|33|44|66|77|88)|622)[2-9]\\d{6}",[10]],0,["310\\d{4}",[7]],0,["600[2-9]\\d{6}",[10]]]],"CC":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[["8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\d|70[23]|959))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,0,["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],"CD":["243","00","[189]\\d{8}|[1-68]\\d{6}",[7,9],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[1-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,[["12\\d{7}|[1-6]\\d{6}"],["88\\d{5}|(?:8[0-59]|9[017-9])\\d{7}"]]],"CF":["236","00","(?:[27]\\d{3}|8776)\\d{4}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[278]"]]],0,0,0,0,0,0,[["2[12]\\d{6}"],["7[02457]\\d{6}"],0,["8776\\d{4}"]]],"CG":["242","00","222\\d{6}|(?:0\\d|80)\\d{7}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["8"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[02]"]]],0,0,0,0,0,0,[["222[1-589]\\d{5}"],["026(?:1[0-5]|6[6-9])\\d{4}|0(?:[14-6]\\d\\d|2(?:40|5[5-8]|6[07-9]))\\d{5}"],0,["80(?:0\\d\\d|120)\\d{4}"]]],"CH":["41","00","8\\d{11}|[2-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8[047]|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-79]|81"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["8"],"0$1"]],"0",0,0,0,0,0,[["(?:2[12467]|3[1-4]|4[134]|5[256]|6[12]|[7-9]1)\\d{7}"],["7[35-9]\\d{7}"],["800\\d{6}"],["90[016]\\d{6}"],["878\\d{6}"],0,["5[18]\\d{7}"],["74[0248]\\d{6}"],0,["84[0248]\\d{6}"]]],"CI":["225","00","[02]\\d{9}",[10],[["(\\d{2})(\\d{2})(\\d)(\\d{5})","$1 $2 $3 $4",["2"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3 $4",["0"]]],0,0,0,0,0,0,[["2(?:[15]\\d{3}|7(?:2(?:0[23]|1[2357]|2[245]|3[45]|4[3-5])|3(?:06|1[69]|[2-6]7)))\\d{5}"],["0704[0-7]\\d{5}|0(?:[15]\\d\\d|7(?:0[0-37-9]|[4-9][7-9]))\\d{6}"]]],"CK":["682","00","[2-578]\\d{4}",[5],[["(\\d{2})(\\d{3})","$1 $2",["[2-578]"]]],0,0,0,0,0,0,[["(?:2\\d|3[13-7]|4[1-5])\\d{3}"],["[578]\\d{4}"]]],"CL":["56","(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0","12300\\d{6}|6\\d{9,10}|[2-9]\\d{8}",[9,10,11],[["(\\d{5})(\\d{4})","$1 $2",["219","2196"],"($1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["44"]],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2[1-36]"],"($1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["9[2-9]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])"],"($1)"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["60|8"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{3})(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3 $4",["60"]]],0,0,0,0,0,0,[["2(?:1982[0-6]|3314[05-9])\\d{3}|(?:2(?:1(?:160|962)|3(?:2\\d\\d|3(?:[0346]\\d|1[0-35-9]|2[1-9]|5[0-24-9]|7[0-3])|600)|646[59])|80[1-9]\\d\\d|9(?:3(?:[0-57-9]\\d\\d|6(?:0[02-9]|[1-9]\\d))|6(?:[0-8]\\d\\d|9(?:[02-79]\\d|1[05-9]))|7[1-9]\\d\\d|9(?:[03-9]\\d\\d|1(?:[0235-9]\\d|4[0-24-9])|2(?:[0-79]\\d|8[0-46-9]))))\\d{4}|(?:22|3[2-5]|[47][1-35]|5[1-3578]|6[13-57]|8[1-9]|9[2458])\\d{7}",[9]],["",[9]],["(?:123|8)00\\d{6}",[9,11]],0,0,0,0,0,["44\\d{7}",[9]],["600\\d{7,8}",[10,11]]]],"CM":["237","00","[26]\\d{8}|88\\d{6,7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["88"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[26]|88"]]],0,0,0,0,0,0,[["2(?:22|33)\\d{6}",[9]],["(?:24[23]|6[25-9]\\d)\\d{6}",[9]],["88\\d{6,7}"]]],"CN":["86","00|1(?:[12]\\d|79)\\d\\d00","1[127]\\d{8,9}|2\\d{9}(?:\\d{2})?|[12]\\d{6,7}|86\\d{6}|(?:1[03-689]\\d|6)\\d{7,9}|(?:[3-579]\\d|8[0-57-9])\\d{6,9}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5,6})","$1 $2",["(?:10|2[0-57-9])[19]","(?:10|2[0-57-9])(?:10|9[56])","(?:10|2[0-57-9])(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{5,6})","$1 $2",["3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]","(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))[19]","85[23](?:10|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:10|9[56])","85[23](?:100|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["(?:4|80)0"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["10|2(?:[02-57-9]|1[1-9])","10|2(?:[02-57-9]|1[1-9])","10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]"],"0$1",1],["(\\d{3})(\\d{7,8})","$1 $2",["9"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["80"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[3-578]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["1[3-9]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3 $4",["[12]"],"0$1",1]],"0",0,"0|(1(?:[12]\\d|79)\\d\\d)",0,0,0,[["(?:10(?:[02-79]\\d\\d|[18](?:0[1-9]|[1-9]\\d))|21(?:[18](?:0[1-9]|[1-9]\\d)|[2-79]\\d\\d))\\d{5}|(?:43[35]|754)\\d{7,8}|8(?:078\\d{7}|51\\d{7,8})|(?:10|(?:2|85)1|43[35]|754)(?:100\\d\\d|95\\d{3,4})|(?:2[02-57-9]|3(?:11|7[179])|4(?:[15]1|3[12])|5(?:1\\d|2[37]|3[12]|51|7[13-79]|9[15])|7(?:[39]1|5[57]|6[09])|8(?:71|98))(?:[02-8]\\d{7}|1(?:0(?:0\\d\\d(?:\\d{3})?|[1-9]\\d{5})|[1-9]\\d{6})|9(?:[0-46-9]\\d{6}|5\\d{3}(?:\\d(?:\\d{2})?)?))|(?:3(?:1[02-9]|35|49|5\\d|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|3[46-9]|5[2-9]|6[47-9]|7\\d|8[23])|5(?:3[03-9]|4[36]|5[02-9]|6[1-46]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[17]\\d|2[248]|3[04-9]|4[3-6]|5[0-3689]|6[2368]|9[02-9])|8(?:1[236-8]|2[5-7]|3\\d|5[2-9]|7[02-9]|8[36-8]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:[02-8]\\d{6}|1(?:0(?:0\\d\\d(?:\\d{2})?|[1-9]\\d{4})|[1-9]\\d{5})|9(?:[0-46-9]\\d{5}|5\\d{3,5}))",[7,8,9,10,11]],["1740[0-5]\\d{6}|1(?:[38]\\d|4[57]|[59][0-35-9]|6[25-7]|7[0-35-8])\\d{8}",[11]],["(?:(?:10|21)8|8)00\\d{7}",[10,12]],["16[08]\\d{5}",[8]],0,0,0,0,0,["400\\d{7}|950\\d{7,8}|(?:10|2[0-57-9]|3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))96\\d{3,4}",[7,8,9,10,11]]],"00"],"CO":["57","00(?:4(?:[14]4|56)|[579])","(?:60\\d\\d|9101)\\d{6}|(?:1\\d|3)\\d{9}",[10,11],[["(\\d{3})(\\d{7})","$1 $2",["6"],"($1)"],["(\\d{3})(\\d{7})","$1 $2",["3[0-357]|91"]],["(\\d)(\\d{3})(\\d{7})","$1-$2-$3",["1"],"0$1",0,"$1 $2 $3"]],"0",0,"0(4(?:[14]4|56)|[579])?",0,0,0,[["601055(?:[0-4]\\d|50)\\d\\d|6010(?:[0-4]\\d|5[0-4])\\d{4}|60[124-8][2-9]\\d{6}",[10]],["3333(?:0(?:0\\d|1[0-5])|[4-9]\\d\\d)\\d{3}|(?:3(?:24[1-9]|3(?:00|3[0-24-9]))|9101)\\d{6}|3(?:0[0-5]|1\\d|2[0-3]|5[01]|70)\\d{7}",[10]],["1800\\d{7}",[11]],["19(?:0[01]|4[78])\\d{7}",[11]]]],"CR":["506","00","(?:8\\d|90)\\d{8}|(?:[24-8]\\d{3}|3005)\\d{4}",[8,10],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[3-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[89]"]]],0,0,"(19(?:0[0-2468]|1[09]|20|66|77|99))",0,0,0,[["210[7-9]\\d{4}|2(?:[024-7]\\d|1[1-9])\\d{5}",[8]],["(?:3005\\d|6500[01])\\d{3}|(?:5[07]|6[0-4]|7[0-3]|8[3-9])\\d{6}",[8]],["800\\d{7}",[10]],["90[059]\\d{7}",[10]],0,0,0,0,["(?:210[0-6]|4\\d{3}|5100)\\d{4}",[8]]]],"CU":["53","119","[27]\\d{6,7}|[34]\\d{5,7}|(?:5|8\\d\\d)\\d{7}",[6,7,8,10],[["(\\d{2})(\\d{4,6})","$1 $2",["2[1-4]|[34]"],"(0$1)"],["(\\d)(\\d{6,7})","$1 $2",["7"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["5"],"0$1"],["(\\d{3})(\\d{7})","$1 $2",["8"],"0$1"]],"0",0,0,0,0,0,[["(?:3[23]|48)\\d{4,6}|(?:31|4[36]|8(?:0[25]|78)\\d)\\d{6}|(?:2[1-4]|4[1257]|7\\d)\\d{5,6}"],["5\\d{7}",[8]],["800\\d{7}",[10]],0,0,0,0,0,0,["807\\d{7}",[10]]]],"CV":["238","0","(?:[2-59]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[2-589]"]]],0,0,0,0,0,0,[["2(?:2[1-7]|3[0-8]|4[12]|5[1256]|6\\d|7[1-3]|8[1-5])\\d{4}"],["(?:36|5[1-389]|9\\d)\\d{5}"],["800\\d{4}"],0,0,0,0,0,["(?:3[3-5]|4[356])\\d{5}"]]],"CW":["599","00","(?:[34]1|60|(?:7|9\\d)\\d)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[3467]"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["9[4-8]"]]],0,0,0,0,0,"[69]",[["9(?:4(?:3[0-5]|4[14]|6\\d)|50\\d|7(?:2[014]|3[02-9]|4[4-9]|6[357]|77|8[7-9])|8(?:3[39]|[46]\\d|7[01]|8[57-9]))\\d{4}"],["953[01]\\d{4}|9(?:5[12467]|6[5-9])\\d{5}"],0,0,0,0,0,["955\\d{5}",[8]],0,["60[0-2]\\d{4}",[7]]]],"CX":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[["8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\d|7(?:0[01]|1[0-2])|958))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,0,["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],"CY":["357","00","(?:[279]\\d|[58]0)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[257-9]"]]],0,0,0,0,0,0,[["2[2-6]\\d{6}"],["9[4-79]\\d{6}"],["800\\d{5}"],["90[09]\\d{5}"],["700\\d{5}"],0,["(?:50|77)\\d{6}"],0,0,["80[1-9]\\d{5}"]]],"CZ":["420","00","(?:[2-578]\\d|60)\\d{7}|9\\d{8,11}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]|9[015-7]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3 $4",["96"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]],0,0,0,0,0,0,[["(?:2\\d|3[1257-9]|4[16-9]|5[13-9])\\d{7}"],["(?:60[1-8]|7(?:0[2-5]|[2379]\\d))\\d{6}"],["800\\d{6}"],["9(?:0[05689]|76)\\d{6}"],["70[01]\\d{6}"],0,["9(?:5\\d|7[2-4])\\d{6}"],0,["9[17]0\\d{6}"],["8[134]\\d{7}"]]],"DE":["49","00","[2579]\\d{5,14}|49(?:[34]0|69|8\\d)\\d\\d?|49(?:37|49|60|7[089]|9\\d)\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\d{1,8}|(?:1|[368]\\d|4[0-8])\\d{3,13}|49(?:[015]\\d|2[13]|31|[46][1-8])\\d{1,9}",[4,5,6,7,8,9,10,11,12,13,14,15],[["(\\d{2})(\\d{3,13})","$1 $2",["3[02]|40|[68]9"],"0$1"],["(\\d{3})(\\d{3,12})","$1 $2",["2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1","2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1"],"0$1"],["(\\d{4})(\\d{2,11})","$1 $2",["[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]","[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["138"],"0$1"],["(\\d{5})(\\d{2,10})","$1 $2",["3"],"0$1"],["(\\d{3})(\\d{5,11})","$1 $2",["181"],"0$1"],["(\\d{3})(\\d)(\\d{4,10})","$1 $2 $3",["1(?:3|80)|9"],"0$1"],["(\\d{3})(\\d{7,8})","$1 $2",["1[67]"],"0$1"],["(\\d{3})(\\d{7,12})","$1 $2",["8"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["185","1850","18500"],"0$1"],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["18[68]"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["15[0568]"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["15[1279]"],"0$1"],["(\\d{3})(\\d{8})","$1 $2",["18"],"0$1"],["(\\d{3})(\\d{2})(\\d{7,8})","$1 $2 $3",["1(?:6[023]|7)"],"0$1"],["(\\d{4})(\\d{2})(\\d{7})","$1 $2 $3",["15[279]"],"0$1"],["(\\d{3})(\\d{2})(\\d{8})","$1 $2 $3",["15"],"0$1"]],"0",0,0,0,0,0,[["32\\d{9,11}|49[1-6]\\d{10}|322\\d{6}|49[0-7]\\d{3,9}|(?:[34]0|[68]9)\\d{3,13}|(?:2(?:0[1-689]|[1-3569]\\d|4[0-8]|7[1-7]|8[0-7])|3(?:[3569]\\d|4[0-79]|7[1-7]|8[1-8])|4(?:1[02-9]|[2-48]\\d|5[0-6]|6[0-8]|7[0-79])|5(?:0[2-8]|[124-6]\\d|[38][0-8]|[79][0-7])|6(?:0[02-9]|[1-358]\\d|[47][0-8]|6[1-9])|7(?:0[2-8]|1[1-9]|[27][0-7]|3\\d|[4-6][0-8]|8[0-5]|9[013-7])|8(?:0[2-9]|1[0-79]|2\\d|3[0-46-9]|4[0-6]|5[013-9]|6[1-8]|7[0-8]|8[0-24-6])|9(?:0[6-9]|[1-4]\\d|[589][0-7]|6[0-8]|7[0-467]))\\d{3,12}",[5,6,7,8,9,10,11,12,13,14,15]],["15[0-25-9]\\d{8}|1(?:6[023]|7\\d)\\d{7,8}",[10,11]],["800\\d{7,12}",[10,11,12,13,14,15]],["(?:137[7-9]|900(?:[135]|9\\d))\\d{6}",[10,11]],["700\\d{8}",[11]],0,["18(?:1\\d{5,11}|[2-9]\\d{8})",[8,9,10,11,12,13,14]],["16(?:4\\d{1,10}|[89]\\d{1,11})",[4,5,6,7,8,9,10,11,12,13,14]],0,["180\\d{5,11}|13(?:7[1-6]\\d\\d|8)\\d{4}",[7,8,9,10,11,12,13,14]]]],"DJ":["253","00","(?:2\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[27]"]]],0,0,0,0,0,0,[["2(?:1[2-5]|7[45])\\d{5}"],["77\\d{6}"]]],"DK":["45","00","[2-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-9]"]]],0,0,0,0,0,0,[["(?:[2-7]\\d|8[126-9]|9[1-46-9])\\d{6}"],[""],["80\\d{6}"],["90\\d{6}"]]],"DM":["1","011","(?:[58]\\d\\d|767|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","767$1",0,"767",[["767(?:2(?:55|66)|4(?:2[01]|4[0-25-9])|50[0-4])\\d{4}"],["767(?:2(?:[2-4689]5|7[5-7])|31[5-7]|61[1-8]|70[1-6])\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"DO":["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,0,0,0,"8001|8[024]9",[["8(?:[04]9[2-9]\\d\\d|29(?:2(?:[0-59]\\d|6[04-9]|7[0-27]|8[0237-9])|3(?:[0-35-9]\\d|4[7-9])|[45]\\d\\d|6(?:[0-27-9]\\d|[3-5][1-9]|6[0135-8])|7(?:0[013-9]|[1-37]\\d|4[1-35689]|5[1-4689]|6[1-57-9]|8[1-79]|9[1-8])|8(?:0[146-9]|1[0-48]|[248]\\d|3[1-79]|5[01589]|6[013-68]|7[124-8]|9[0-8])|9(?:[0-24]\\d|3[02-46-9]|5[0-79]|60|7[0169]|8[57-9]|9[02-9])))\\d{4}"],["8[024]9[2-9]\\d{6}"],["8(?:00(?:14|[2-9]\\d)|(?:33|44|55|66|77|88)[2-9]\\d)\\d{5}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"DZ":["213","00","(?:[1-4]|[5-79]\\d|80)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["9"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-8]"],"0$1"]],"0",0,0,0,0,0,[["9619\\d{5}|(?:1\\d|2[013-79]|3[0-8]|4[013-689])\\d{6}"],["(?:5(?:4[0-29]|5\\d|6[0-2])|6(?:[569]\\d|7[0-6])|7[7-9]\\d)\\d{6}",[9]],["800\\d{6}",[9]],["80[3-689]1\\d{5}",[9]],0,0,0,0,["98[23]\\d{6}",[9]],["80[12]1\\d{5}",[9]]]],"EC":["593","00","1\\d{9,10}|(?:[2-7]|9\\d)\\d{7}",[8,9,10,11],[["(\\d)(\\d{3})(\\d{4})","$1 $2-$3",["[2-7]"],"(0$1)",0,"$1-$2-$3"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{3})(\\d{3,4})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[["[2-7][2-7]\\d{6}",[8]],["964[0-2]\\d{5}|9(?:39|[57][89]|6[0-36-9]|[89]\\d)\\d{6}",[9]],["1800\\d{7}|1[78]00\\d{6}",[10,11]],0,0,0,0,0,["[2-7]890\\d{4}",[8]]]],"EE":["372","00","8\\d{9}|[4578]\\d{7}|(?:[3-8]\\d|90)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88","[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88"]],["(\\d{4})(\\d{3,4})","$1 $2",["[45]|8(?:00|[1-49])","[45]|8(?:00[1-9]|[1-49])"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["(?:3[23589]|4[3-8]|6\\d|7[1-9]|88)\\d{5}",[7]],["(?:5\\d{5}|8(?:1(?:0(?:000|[3-9]\\d\\d)|(?:1(?:0[236]|1\\d)|(?:23|[3-79]\\d)\\d)\\d)|2(?:0(?:000|(?:19|[2-7]\\d)\\d)|(?:(?:[124-6]\\d|3[5-9])\\d|7(?:[3679]\\d|8[13-9])|8(?:[2-6]\\d|7[01]))\\d)|[349]\\d{4}))\\d\\d|5(?:(?:[02]\\d|5[0-478])\\d|1(?:[0-8]\\d|95)|6(?:4[0-4]|5[1-589]))\\d{3}",[7,8]],["800(?:(?:0\\d\\d|1)\\d|[2-9])\\d{3}"],["(?:40\\d\\d|900)\\d{4}",[7,8]],["70[0-2]\\d{5}",[8]]]],"EG":["20","00","[189]\\d{8,9}|[24-6]\\d{8}|[135]\\d{7}",[8,9,10],[["(\\d)(\\d{7,8})","$1 $2",["[23]"],"0$1"],["(\\d{2})(\\d{6,7})","$1 $2",["1[35]|[4-6]|8[2468]|9[235-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[189]"],"0$1"]],"0",0,0,0,0,0,[["13[23]\\d{6}|(?:15|57)\\d{6,7}|(?:2[2-4]|3|4[05-8]|5[05]|6[24-689]|8[2468]|9[235-7])\\d{7}",[8,9]],["1[0-25]\\d{8}",[10]],["800\\d{7}",[10]],["900\\d{7}",[10]]]],"EH":["212","00","[5-8]\\d{8}",[9],0,"0",0,0,0,0,"528[89]",[["528[89]\\d{5}"],["(?:6(?:[0-79]\\d|8[0-247-9])|7(?:[017]\\d|2[0-2]|6[0-8]|8[0-3]))\\d{6}"],["80\\d{7}"],["89\\d{7}"],0,0,0,0,["592(?:4[0-2]|93)\\d{4}"]]],"ER":["291","00","[178]\\d{6}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[178]"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:1[12568]|[24]0|55|6[146])|8\\d\\d)\\d{4}"],["(?:17[1-3]|7\\d\\d)\\d{4}"]]],"ES":["34","00","[5-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]00"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-9]"]]],0,0,0,0,0,0,[["96906(?:0[0-8]|1[1-9]|[2-9]\\d)\\d\\d|9(?:69(?:0[0-57-9]|[1-9]\\d)|73(?:[0-8]\\d|9[1-9]))\\d{4}|(?:8(?:[1356]\\d|[28][0-8]|[47][1-9])|9(?:[135]\\d|[268][0-8]|4[1-9]|7[124-9]))\\d{6}"],["(?:590[16]00\\d|9(?:6906(?:09|10)|7390\\d\\d))\\d\\d|(?:6\\d|7[1-48])\\d{7}"],["[89]00\\d{6}"],["80[367]\\d{6}"],["70\\d{7}"],0,["51\\d{7}"],0,0,["90[12]\\d{6}"]]],"ET":["251","00","(?:11|[2-579]\\d)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-579]"],"0$1"]],"0",0,0,0,0,0,[["11667[01]\\d{3}|(?:11(?:1(?:1[124]|2[2-7]|3[1-5]|5[5-8]|8[6-8])|2(?:13|3[6-8]|5[89]|7[05-9]|8[2-6])|3(?:2[01]|3[0-289]|4[1289]|7[1-4]|87)|4(?:1[69]|3[2-49]|4[0-3]|6[5-8])|5(?:1[578]|44|5[0-4])|6(?:1[78]|2[69]|39|4[5-7]|5[1-5]|6[0-59]|8[015-8]))|2(?:2(?:11[1-9]|22[0-7]|33\\d|44[1467]|66[1-68])|5(?:11[124-6]|33[2-8]|44[1467]|55[14]|66[1-3679]|77[124-79]|880))|3(?:3(?:11[0-46-8]|(?:22|55)[0-6]|33[0134689]|44[04]|66[01467])|4(?:44[0-8]|55[0-69]|66[0-3]|77[1-5]))|4(?:6(?:119|22[0-24-7]|33[1-5]|44[13-69]|55[14-689]|660|88[1-4])|7(?:(?:11|22)[1-9]|33[13-7]|44[13-6]|55[1-689]))|5(?:7(?:227|55[05]|(?:66|77)[14-8])|8(?:11[149]|22[013-79]|33[0-68]|44[013-8]|550|66[1-5]|77\\d)))\\d{4}"],["7001\\d{5}|(?:7(?:0[1-9]|1[01]|77|86|99)|9\\d\\d)\\d{6}"]]],"FI":["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","[1-35689]\\d{4}|7\\d{10,11}|(?:[124-7]\\d|3[0-46-9])\\d{8}|[1-9]\\d{5,8}",[5,6,7,8,9,10,11,12],[["(\\d)(\\d{4,9})","$1 $2",["[2568][1-8]|3(?:0[1-9]|[1-9])|9"],"0$1"],["(\\d{3})(\\d{3,7})","$1 $2",["[12]00|[368]|70[07-9]"],"0$1"],["(\\d{2})(\\d{4,8})","$1 $2",["[1245]|7[135]"],"0$1"],["(\\d{2})(\\d{6,10})","$1 $2",["7"],"0$1"]],"0",0,0,0,0,"1[03-79]|[2-9]",[["(?:1[3-79][1-8]|[235689][1-8]\\d)\\d{2,6}",[5,6,7,8,9]],["4946\\d{2,6}|(?:4[0-8]|50)\\d{4,8}",[6,7,8,9,10]],["800\\d{4,6}",[7,8,9]],["[67]00\\d{5,6}",[8,9]],0,0,["20\\d{4,8}|60[12]\\d{5,6}|7(?:099\\d{4,5}|5[03-9]\\d{3,7})|20[2-59]\\d\\d|(?:606|7(?:0[78]|1|3\\d))\\d{7}|(?:10|29|3[09]|70[1-5]\\d)\\d{4,8}"]],"00"],"FJ":["679","0(?:0|52)","45\\d{5}|(?:0800\\d|[235-9])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1 $2",["[235-9]|45"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]]],0,0,0,0,0,0,[["603\\d{4}|(?:3[0-5]|6[25-7]|8[58])\\d{5}",[7]],["(?:[279]\\d|45|5[01568]|8[034679])\\d{5}",[7]],["0800\\d{7}",[11]]],"00"],"FK":["500","00","[2-7]\\d{4}",[5],0,0,0,0,0,0,0,[["[2-47]\\d{4}"],["[56]\\d{4}"]]],"FM":["691","00","(?:[39]\\d\\d|820)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[389]"]]],0,0,0,0,0,0,[["31(?:00[67]|208|309)\\d\\d|(?:3(?:[2357]0[1-9]|602|804|905)|(?:820|9[2-6]\\d)\\d)\\d{3}"],["31(?:00[67]|208|309)\\d\\d|(?:3(?:[2357]0[1-9]|602|804|905)|(?:820|9[2-7]\\d)\\d)\\d{3}"]]],"FO":["298","00","[2-9]\\d{5}",[6],[["(\\d{6})","$1",["[2-9]"]]],0,0,"(10(?:01|[12]0|88))",0,0,0,[["(?:20|[34]\\d|8[19])\\d{4}"],["(?:[27][1-9]|5\\d|9[16])\\d{4}"],["80[257-9]\\d{3}"],["90(?:[13-5][15-7]|2[125-7]|9\\d)\\d\\d"],0,0,0,0,["(?:6[0-36]|88)\\d{4}"]]],"FR":["33","00","[1-9]\\d{8}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0 $1"],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[1-79]"],"0$1"]],"0",0,0,0,0,0,[["(?:[1-35]\\d|4[1-9])\\d{7}"],["(?:6(?:[0-24-8]\\d|3[0-8]|9[589])|7(?:00|[3-9]\\d))\\d{6}"],["80[0-5]\\d{6}"],["836(?:0[0-36-9]|[1-9]\\d)\\d{4}|8(?:1[2-9]|2[2-47-9]|3[0-57-9]|[569]\\d|8[0-35-9])\\d{6}"],0,0,["80[6-9]\\d{6}"],0,["9\\d{8}"],["8(?:1[01]|2[0156]|4[02]|84)\\d{6}"]]],"GA":["241","00","(?:[067]\\d|11)\\d{6}|[2-7]\\d{6}",[7,8],[["(\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-7]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["11|[67]"],"0$1"]],0,0,"0(11\\d{6}|60\\d{6}|61\\d{6}|6[256]\\d{6}|7[467]\\d{6})","$1",0,0,[["[01]1\\d{6}",[8]],["(?:(?:0[2-7]|7[467])\\d|6(?:0[0-4]|10|[256]\\d))\\d{5}|[2-7]\\d{6}"]]],"GB":["44","00","[1-357-9]\\d{9}|[18]\\d{8}|8\\d{6}",[7,9,10],[["(\\d{3})(\\d{4})","$1 $2",["800","8001","80011","800111","8001111"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["845","8454","84546","845464"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["800"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["1(?:38|5[23]|69|76|94)","1(?:(?:38|69)7|5(?:24|39)|768|946)","1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["1(?:[2-69][02-9]|[78])"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[25]|7(?:0|6[02-9])","[25]|7(?:0|6(?:[03-9]|2[356]))"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[1389]"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:1(?:3(?:[0-58]\\d\\d|73[0235])|4(?:[0-5]\\d\\d|69[7-9]|70[013579])|(?:(?:5[0-26-9]|[78][0-49])\\d|6(?:[0-4]\\d|50))\\d)|2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\d)\\d\\d|1(?:[0-7]\\d\\d|8(?:[02]\\d|1[0-246-9])))|(?:3(?:0\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\d\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\d{3})\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\d)|76\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\d|7[4-79])|295[5-7]|35[34]\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\d{3}",[9,10]],["7(?:457[0-57-9]|700[01]|911[028])\\d{5}|7(?:[1-3]\\d\\d|4(?:[0-46-9]\\d|5[0-689])|5(?:0[0-8]|[13-9]\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\d|8[02-9]|9[0-689])|8(?:[014-9]\\d|[23][0-8])|9(?:[024-9]\\d|1[02-9]|3[0-689]))\\d{6}",[10]],["80[08]\\d{7}|800\\d{6}|8001111"],["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[2-49]))\\d{7}|845464\\d",[7,10]],["70\\d{8}",[10]],0,["(?:3[0347]|55)\\d{8}",[10]],["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}",[10]],["56\\d{8}",[10]]],0," x"],"GD":["1","011","(?:473|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","473$1",0,"473",[["473(?:2(?:3[0-2]|69)|3(?:2[89]|86)|4(?:[06]8|3[5-9]|4[0-49]|5[5-79]|73|90)|63[68]|7(?:58|84)|800|938)\\d{4}"],["473(?:4(?:0[2-79]|1[04-9]|2[0-5]|58)|5(?:2[01]|3[3-8])|901)\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"GE":["995","00","(?:[3-57]\\d\\d|800)\\d{6}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["32"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[57]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[348]"],"0$1"]],"0",0,0,0,0,0,[["(?:3(?:[256]\\d|4[124-9]|7[0-4])|4(?:1\\d|2[2-7]|3[1-79]|4[2-8]|7[239]|9[1-7]))\\d{6}"],["5(?:(?:0555|1(?:[17]77|555))[5-9]|757(?:7[7-9]|8[01]))\\d{3}|5(?:0070|11(?:33|51)|[25]222|3333)[0-4]\\d{3}|5(?:00(?:0\\d|5[05])|11(?:00|[124]\\d|3[01])|5200|75(?:00|[57]5)|8(?:0(?:[01]\\d|2[0-4])|58[89]|8(?:55|88)))\\d{4}|(?:5(?:[14]4|5[0157-9]|68|7[0147-9]|9[1-35-9])|790)\\d{6}"],["800\\d{6}"],0,0,0,0,0,["70[67]\\d{6}"]]],"GF":["594","00","(?:[56]94|80\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["594(?:[0239]\\d|1[0-2]|4[03-9]|5[6-9]|6[0-3]|80)\\d{4}"],["694(?:[0-249]\\d|3[0-8])\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976\\d{6}"]]],"GG":["44","00","(?:1481|[357-9]\\d{3})\\d{6}|8\\d{6}(?:\\d{2})?",[7,9,10],0,"0",0,"0|([25-9]\\d{5})$","1481$1",0,0,[["1481[25-9]\\d{5}",[10]],["7(?:(?:781|839)\\d|911[17])\\d{5}",[10]],["80[08]\\d{7}|800\\d{6}|8001111"],["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[0-3]))\\d{7}|845464\\d",[7,10]],["70\\d{8}",[10]],0,["(?:3[0347]|55)\\d{8}",[10]],["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}",[10]],["56\\d{8}",[10]]]],"GH":["233","00","(?:[235]\\d{3}|800)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[235]"],"0$1"]],"0",0,0,0,0,0,[["3082[0-5]\\d{4}|3(?:0(?:[237]\\d|8[01])|[167](?:2[0-6]|7\\d|80)|2(?:2[0-5]|7\\d|80)|3(?:2[0-3]|7\\d|80)|4(?:2[013-9]|3[01]|7\\d|80)|5(?:2[0-7]|7\\d|80)|8(?:2[0-2]|7\\d|80)|9(?:[28]0|7\\d))\\d{5}",[9]],["(?:2(?:[0346-9]\\d|5[67])|5(?:[0457]\\d|6[01]|9[1-9]))\\d{6}",[9]],["800\\d{5}",[8]]]],"GI":["350","00","(?:[25]\\d\\d|606)\\d{5}",[8],[["(\\d{3})(\\d{5})","$1 $2",["2"]]],0,0,0,0,0,0,[["21(?:6[24-7]\\d|90[0-2])\\d{3}|2(?:00|2[25])\\d{5}"],["(?:5[146-8]\\d|606)\\d{5}"]]],"GL":["299","00","(?:19|[2-689]\\d|70)\\d{4}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["19|[2-9]"]]],0,0,0,0,0,0,[["(?:19|3[1-7]|6[14689]|70|8[14-79]|9\\d)\\d{4}"],["[245]\\d{5}"],["80\\d{4}"],0,0,0,0,0,["3[89]\\d{4}"]]],"GM":["220","00","[2-9]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]],0,0,0,0,0,0,[["(?:4(?:[23]\\d\\d|4(?:1[024679]|[6-9]\\d))|5(?:5(?:3\\d|4[0-7])|6[67]\\d|7(?:1[04]|2[035]|3[58]|48))|8\\d{3})\\d{3}"],["(?:[23679]\\d|5[0-389])\\d{5}"]]],"GN":["224","00","722\\d{6}|(?:3|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["3"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[67]"]]],0,0,0,0,0,0,[["3(?:0(?:24|3[12]|4[1-35-7]|5[13]|6[189]|[78]1|9[1478])|1\\d\\d)\\d{4}",[8]],["6[0-356]\\d{7}",[9]],0,0,0,0,0,0,["722\\d{6}",[9]]]],"GP":["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["590(?:0[1-68]|[14][0-24-9]|2[0-68]|3[1289]|5[3-579]|6[0-289]|7[08]|8[0-689]|9\\d)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],"GQ":["240","00","222\\d{6}|(?:3\\d|55|[89]0)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235]"]],["(\\d{3})(\\d{6})","$1 $2",["[89]"]]],0,0,0,0,0,0,[["33[0-24-9]\\d[46]\\d{4}|3(?:33|5\\d)\\d[7-9]\\d{4}"],["(?:222|55\\d)\\d{6}"],["80\\d[1-9]\\d{5}"],["90\\d[1-9]\\d{5}"]]],"GR":["30","00","5005000\\d{3}|8\\d{9,11}|(?:[269]\\d|70)\\d{8}",[10,11,12],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["21|7"]],["(\\d{4})(\\d{6})","$1 $2",["2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2689]"]],["(\\d{3})(\\d{3,4})(\\d{5})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["2(?:1\\d\\d|2(?:2[1-46-9]|[36][1-8]|4[1-7]|5[1-4]|7[1-5]|[89][1-9])|3(?:1\\d|2[1-57]|[35][1-3]|4[13]|7[1-7]|8[124-6]|9[1-79])|4(?:1\\d|2[1-8]|3[1-4]|4[13-5]|6[1-578]|9[1-5])|5(?:1\\d|[29][1-4]|3[1-5]|4[124]|5[1-6])|6(?:1\\d|[269][1-6]|3[1245]|4[1-7]|5[13-9]|7[14]|8[1-5])|7(?:1\\d|2[1-5]|3[1-6]|4[1-7]|5[1-57]|6[135]|9[125-7])|8(?:1\\d|2[1-5]|[34][1-4]|9[1-57]))\\d{6}",[10]],["68[57-9]\\d{7}|(?:69|94)\\d{8}",[10]],["800\\d{7,9}"],["90[19]\\d{7}",[10]],["70\\d{8}",[10]],0,["5005000\\d{3}",[10]],0,0,["8(?:0[16]|12|[27]5|50)\\d{7}",[10]]]],"GT":["502","00","(?:1\\d{3}|[2-7])\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[["[267][2-9]\\d{6}",[8]],["[3-5]\\d{7}",[8]],["18[01]\\d{8}",[11]],["19\\d{9}",[11]]]],"GU":["1","011","(?:[58]\\d\\d|671|900)\\d{7}",[10],0,"1",0,"1|([3-9]\\d{6})$","671$1",0,"671",[["671(?:3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[0236-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[0479]7|2[0167]|3[45]|8[7-9])|8(?:[2-57-9]8|6[48])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[78]))\\d{4}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"GW":["245","00","[49]\\d{8}|4\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["40"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"]]],0,0,0,0,0,0,[["443\\d{6}",[9]],["9(?:5\\d|6[569]|77)\\d{6}",[9]],0,0,0,0,0,0,["40\\d{5}",[7]]]],"GY":["592","001","9008\\d{3}|(?:[2-467]\\d\\d|862)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-46-9]"]]],0,0,0,0,0,0,[["(?:2(?:1[6-9]|2[0-35-9]|3[1-4]|5[3-9]|6\\d|7[0-24-79])|3(?:2[25-9]|3\\d)|4(?:4[0-24]|5[56])|77[1-57])\\d{4}"],["(?:6\\d\\d|70[015-7])\\d{4}"],["(?:289|862)\\d{4}"],["9008\\d{3}"]]],"HK":["852","00(?:30|5[09]|[126-9]?)","8[0-46-9]\\d{6,7}|9\\d{4,7}|(?:[2-7]|9\\d{3})\\d{7}",[5,6,7,8,9,11],[["(\\d{3})(\\d{2,5})","$1 $2",["900","9003"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[1-4]|9(?:0[1-9]|[1-8])"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]],["(\\d{3})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]],0,0,0,0,0,0,[["(?:2(?:[13-9]\\d|2[013-9])\\d|3(?:(?:[1569][0-24-9]|4[0-246-9]|7[0-24-69])\\d|8(?:[45][0-8]|6[01]|9\\d))|58(?:0[1-8]|1[2-9]))\\d{4}",[8]],["(?:4(?:44[5-9]|6(?:0[0-7]|1[0-6]|4[0-57-9]|6[0-4]|7[0-8]))|573[0-6]|6(?:26[013-8]|66[0-3])|70(?:7[1-5]|8[0-4])|848[015-9]|9(?:29[013-9]|59[0-4]))\\d{4}|(?:4(?:4[01]|6[2358])|5(?:[1-59][0-46-9]|6[0-4689]|7[0-246-9])|6(?:0[1-9]|[13-59]\\d|[268][0-57-9]|7[0-79])|84[09]|9(?:0[1-9]|1[02-9]|[2358][0-8]|[467]\\d))\\d{5}",[8]],["800\\d{6}",[9]],["900(?:[0-24-9]\\d{7}|3\\d{1,4})",[5,6,7,8,11]],["8(?:1[0-4679]\\d|2(?:[0-36]\\d|7[0-4])|3(?:[034]\\d|2[09]|70))\\d{4}",[8]],0,["30(?:0[1-9]|[15-7]\\d|2[047]|89)\\d{4}",[8]],["7(?:1(?:0[0-38]|1[0-3679]|3[013]|69|9[0136])|2(?:[02389]\\d|1[18]|7[27-9])|3(?:[0-38]\\d|7[0-369]|9[2357-9])|47\\d|5(?:[178]\\d|5[0-5])|6(?:0[0-7]|2[236-9]|[35]\\d)|7(?:[27]\\d|8[7-9])|8(?:[23689]\\d|7[1-9])|9(?:[025]\\d|6[0-246-8]|7[0-36-9]|8[238]))\\d{4}",[8]]],"00"],"HN":["504","00","8\\d{10}|[237-9]\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1-$2",["[237-9]"]]],0,0,0,0,0,0,[["2(?:2(?:0[0-359]|1[1-367]|[23]\\d|4[03-6]|5[57]|6[245]|7[0135689]|8[01346-9]|9[0-2])|4(?:0[78]|2[3-59]|3[13-9]|4[0-68]|5[1-35])|5(?:0[7-9]|16|4[03-5]|5\\d|6[014-6]|7[04]|80)|6(?:[056]\\d|17|2[067]|3[04]|4[0-378]|[78][0-8]|9[01])|7(?:6[46-9]|7[02-9]|8[034]|91)|8(?:79|8[0-357-9]|9[1-57-9]))\\d{4}",[8]],["[37-9]\\d{7}",[8]],["8002\\d{7}",[11]]]],"HR":["385","00","(?:[24-69]\\d|3[0-79])\\d{7}|80\\d{5,7}|[1-79]\\d{7}|6\\d{5,6}",[6,7,8,9],[["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["6[01]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{4})(\\d{3})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-5]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"]],"0",0,0,0,0,0,[["1\\d{7}|(?:2[0-3]|3[1-5]|4[02-47-9]|5[1-3])\\d{6,7}",[8,9]],["98\\d{6,7}|975(?:1\\d|77|9[67])\\d{4}|9(?:0[1-9]|[1259]\\d|7[0679])\\d{6}",[8,9]],["80[01]\\d{4,6}",[7,8,9]],["6[01459]\\d{6}|6[01]\\d{4,5}",[6,7,8]],["7[45]\\d{6}",[8]],0,["62\\d{6,7}|72\\d{6}",[8,9]]]],"HT":["509","00","[2-489]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[2-489]"]]],0,0,0,0,0,0,[["2(?:2\\d|5[1-5]|81|9[149])\\d{5}"],["[34]\\d{7}"],["8\\d{7}"],0,0,0,0,0,["9(?:[67][0-4]|8[0-3589]|9\\d)\\d{5}"]]],"HU":["36","00","[235-7]\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"06 $1"]],"06",0,0,0,0,0,[["(?:1\\d|[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6[23689]|8[2-57-9]|9[2-69])\\d{6}",[8]],["(?:[257]0|3[01])\\d{7}",[9]],["(?:[48]0\\d|680[29])\\d{5}"],["9[01]\\d{6}",[8]],0,0,["38\\d{7}",[9]],0,["21\\d{7}",[9]]]],"ID":["62","00[89]","(?:(?:00[1-9]|8\\d)\\d{4}|[1-36])\\d{6}|00\\d{10}|[1-9]\\d{8,10}|[2-9]\\d{7}",[7,8,9,10,11,12,13],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["15"]],["(\\d{2})(\\d{5,9})","$1 $2",["2[124]|[36]1"],"(0$1)"],["(\\d{3})(\\d{5,7})","$1 $2",["800"],"0$1"],["(\\d{3})(\\d{5,8})","$1 $2",["[2-79]"],"(0$1)"],["(\\d{3})(\\d{3,4})(\\d{3})","$1-$2-$3",["8[1-35-9]"],"0$1"],["(\\d{3})(\\d{6,8})","$1 $2",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["804"],"0$1"],["(\\d{3})(\\d)(\\d{3})(\\d{3})","$1 $2 $3 $4",["80"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1-$2-$3",["8"],"0$1"]],"0",0,0,0,0,0,[["2[124]\\d{7,8}|619\\d{8}|2(?:1(?:14|500)|2\\d{3})\\d{3}|61\\d{5,8}|(?:2(?:[35][1-4]|6[0-8]|7[1-6]|8\\d|9[1-8])|3(?:1|[25][1-8]|3[1-68]|4[1-3]|6[1-3568]|7[0-469]|8\\d)|4(?:0[1-589]|1[01347-9]|2[0-36-8]|3[0-24-68]|43|5[1-378]|6[1-5]|7[134]|8[1245])|5(?:1[1-35-9]|2[25-8]|3[124-9]|4[1-3589]|5[1-46]|6[1-8])|6(?:[25]\\d|3[1-69]|4[1-6])|7(?:02|[125][1-9]|[36]\\d|4[1-8]|7[0-36-9])|9(?:0[12]|1[013-8]|2[0-479]|5[125-8]|6[23679]|7[159]|8[01346]))\\d{5,8}",[7,8,9,10,11]],["8[1-35-9]\\d{7,10}",[9,10,11,12]],["00[17]803\\d{7}|(?:177\\d|800)\\d{5,7}|001803\\d{6}",[8,9,10,11,12,13]],["809\\d{7}",[10]],0,0,["(?:1500|8071\\d{3})\\d{3}",[7,10]],0,0,["804\\d{7}",[10]]]],"IE":["353","00","(?:1\\d|[2569])\\d{6,8}|4\\d{6,9}|7\\d{8}|8\\d{8,9}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["2[24-9]|47|58|6[237-9]|9[35-9]"],"(0$1)"],["(\\d{3})(\\d{5})","$1 $2",["[45]0"],"(0$1)"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["1"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2569]|4[1-69]|7[14]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["81"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[78]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["4"],"(0$1)"],["(\\d{2})(\\d)(\\d{3})(\\d{4})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["(?:1\\d|21)\\d{6,7}|(?:2[24-9]|4(?:0[24]|5\\d|7)|5(?:0[45]|1\\d|8)|6(?:1\\d|[237-9])|9(?:1\\d|[35-9]))\\d{5}|(?:23|4(?:[1-469]|8\\d)|5[23679]|6[4-6]|7[14]|9[04])\\d{7}"],["8(?:22|[35-9]\\d)\\d{6}",[9]],["1800\\d{6}",[10]],["15(?:1[2-8]|[2-8]0|9[089])\\d{6}",[10]],["700\\d{6}",[9]],0,["818\\d{6}",[9]],0,["76\\d{7}",[9]],["18[59]0\\d{6}",[10]]]],"IL":["972","0(?:0|1[2-9])","1\\d{6}(?:\\d{3,5})?|[57]\\d{8}|[1-489]\\d{7}",[7,8,9,10,11,12],[["(\\d{4})(\\d{3})","$1-$2",["125"]],["(\\d{4})(\\d{2})(\\d{2})","$1-$2-$3",["121"]],["(\\d)(\\d{3})(\\d{4})","$1-$2-$3",["[2-489]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1-$2-$3",["12"]],["(\\d{4})(\\d{6})","$1-$2",["159"]],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3-$4",["1[7-9]"]],["(\\d{3})(\\d{1,2})(\\d{3})(\\d{4})","$1-$2 $3-$4",["15"]]],"0",0,0,0,0,0,[["153\\d{8,9}|29[1-9]\\d{5}|(?:2[0-8]|[3489]\\d)\\d{6}",[8,11,12]],["5(?:(?:[02368]\\d|[19][2-9]|4[1-9])\\d|5(?:01|1[79]|2[2-9]|3[0-3]|4[34]|5[015689]|6[6-8]|7[0-267]|8[7-9]|9[1-9]))\\d{5}",[9]],["1(?:255|80[019]\\d{3})\\d{3}",[7,10]],["1212\\d{4}|1(?:200|9(?:0[0-2]|19))\\d{6}",[8,10]],0,0,["1599\\d{6}",[10]],0,["7(?:380|8(?:33|55|77|81))\\d{5}|7(?:18|2[23]|3[237]|47|6[258]|7\\d|82|9[2-9])\\d{6}",[9]],["1700\\d{6}",[10]]]],"IM":["44","00","1624\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([25-8]\\d{5})$","1624$1",0,"74576|(?:16|7[56])24",[["1624(?:230|[5-8]\\d\\d)\\d{3}"],["76245[06]\\d{4}|7(?:4576|[59]24\\d|624[0-4689])\\d{5}"],["808162\\d{4}"],["8(?:440[49]06|72299\\d)\\d{3}|(?:8(?:45|70)|90[0167])624\\d{4}"],["70\\d{8}"],0,["3440[49]06\\d{3}|(?:3(?:08162|3\\d{4}|45624|7(?:0624|2299))|55\\d{4})\\d{4}"],0,["56\\d{8}"]]],"IN":["91","00","(?:000800|[2-9]\\d\\d)\\d{7}|1\\d{7,12}",[8,9,10,11,12,13],[["(\\d{8})","$1",["5(?:0|2[23]|3[03]|[67]1|88)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)"],0,1],["(\\d{4})(\\d{4,5})","$1 $2",["180","1800"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["140"],0,1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["11|2[02]|33|4[04]|79[1-7]|80[2-46]","11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])","11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]"],"0$1",1],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807","1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]","1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\d|7(?:1(?:[013-8]\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\d|5[0-367])|70[13-7]))[2-7]"],"0$1",1],["(\\d{5})(\\d{5})","$1 $2",["[6-9]"],"0$1",1],["(\\d{4})(\\d{2,4})(\\d{4})","$1 $2 $3",["1(?:6|8[06])","1(?:6|8[06]0)"],0,1],["(\\d{4})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["18"],0,1]],"0",0,0,0,0,0,[["2717(?:[2-7]\\d|95)\\d{4}|(?:271[0-689]|782[0-6])[2-7]\\d{5}|(?:170[24]|2(?:(?:[02][2-79]|90)\\d|80[13468])|(?:3(?:23|80)|683|79[1-7])\\d|4(?:20[24]|72[2-8])|552[1-7])\\d{6}|(?:11|33|4[04]|80)[2-7]\\d{7}|(?:342|674|788)(?:[0189][2-7]|[2-7]\\d)\\d{5}|(?:1(?:2[0-249]|3[0-25]|4[145]|[59][14]|6[014]|7[1257]|8[01346])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])|3(?:26|4[13]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[014-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91))[2-7]\\d{6}|(?:1(?:2[35-8]|3[346-9]|4[236-9]|[59][0235-9]|6[235-9]|7[34689]|8[257-9])|2(?:1[134689]|3[24-8]|4[2-8]|5[25689]|6[2-4679]|7[3-79]|8[2-479]|9[235-9])|3(?:01|1[79]|2[1245]|4[5-8]|5[125689]|6[235-7]|7[157-9]|8[2-46-8])|4(?:1[14578]|2[5689]|3[2-467]|5[4-7]|6[35]|73|8[2689]|9[2389])|5(?:[16][146-9]|2[14-8]|3[1346]|4[14-69]|5[46]|7[2-4]|8[2-8]|9[246])|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])|7(?:1[013-9]|2[0235-9]|3[2679]|4[1-35689]|5[2-46-9]|[67][02-9]|8[013-7]|9[089])|8(?:1[1357-9]|2[235-8]|3[03-57-9]|4[0-24-9]|5\\d|6[2457-9]|7[1-6]|8[1256]|9[2-4]))\\d[2-7]\\d{5}",[10]],["(?:61279|7(?:887[02-9]|9(?:313|79[07-9]))|8(?:079[04-9]|(?:84|91)7[02-8]))\\d{5}|(?:6(?:12|[2-47]1|5[17]|6[13]|80)[0189]|7(?:1(?:2[0189]|9[0-5])|2(?:[14][017-9]|8[0-59])|3(?:2[5-8]|[34][017-9]|9[016-9])|4(?:1[015-9]|[29][89]|39|8[389])|5(?:[15][017-9]|2[04-9]|9[7-9])|6(?:0[0-47]|1[0-257-9]|2[0-4]|3[19]|5[4589])|70[0289]|88[089]|97[02-8])|8(?:0(?:6[67]|7[02-8])|70[017-9]|84[01489]|91[0-289]))\\d{6}|(?:7(?:31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[0189]\\d|7[02-8])\\d{5}|(?:6(?:[09]\\d|1[04679]|2[03689]|3[05-9]|4[0489]|50|6[069]|7[07]|8[7-9])|7(?:0\\d|2[0235-79]|3[05-8]|40|5[0346-8]|6[6-9]|7[1-9]|8[0-79]|9[089])|8(?:0[01589]|1[0-57-9]|2[235-9]|3[03-57-9]|[45]\\d|6[02457-9]|7[1-69]|8[0-25-9]|9[02-9])|9\\d\\d)\\d{7}|(?:6(?:(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|8[124-6])\\d|7(?:[235689]\\d|4[0189]))|7(?:1(?:[013-8]\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-5])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\d|5[0-367])|70[13-7]|881))[0189]\\d{5}",[10]],["000800\\d{7}|1(?:600\\d{6}|80(?:0\\d{4,9}|3\\d{9}))"],["186[12]\\d{9}",[13]],0,0,["140\\d{7}",[10]],0,0,["1860\\d{7}",[11]]]],"IO":["246","00","3\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["3"]]],0,0,0,0,0,0,[["37\\d{5}"],["38\\d{5}"]]],"IQ":["964","00","(?:1|7\\d\\d)\\d{7}|[2-6]\\d{7,8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-6]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[["1\\d{7}|(?:2[13-5]|3[02367]|4[023]|5[03]|6[026])\\d{6,7}",[8,9]],["7[3-9]\\d{8}",[10]]]],"IR":["98","00","[1-9]\\d{9}|(?:[1-8]\\d\\d|9)\\d{3,4}",[4,5,6,7,10],[["(\\d{4,5})","$1",["96"],"0$1"],["(\\d{2})(\\d{4,5})","$1 $2",["(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[1-8]"],"0$1"]],"0",0,0,0,0,0,[["(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])(?:[03-57]\\d{7}|[16]\\d{3}(?:\\d{4})?|[289]\\d{3}(?:\\d(?:\\d{3})?)?)|94(?:000[09]|2(?:121|[2689]0\\d)|30[0-2]\\d|4(?:111|40\\d))\\d{4}",[6,7,10]],["9(?:(?:0(?:[0-35]\\d|4[4-6])|(?:[13]\\d|2[0-3])\\d)\\d|9(?:[0-46]\\d\\d|5[15]0|8(?:1\\d|88)|9(?:0[0-3]|[19]\\d|21|77|8[7-9])))\\d{5}",[10]],0,0,0,0,["96(?:0[12]|2[16-8]|3(?:08|[14]5|[23]|66)|4(?:0|80)|5[01]|6[89]|86|9[19])",[4,5]]]],"IS":["354","00|1(?:0(?:01|[12]0)|100)","(?:38\\d|[4-9])\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["[4-9]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["3"]]],0,0,0,0,0,0,[["(?:4(?:1[0-24-69]|2[0-7]|[37][0-8]|4[0-24589]|5[0-68]|6\\d|8[0-36-8])|5(?:05|[156]\\d|2[02578]|3[0-579]|4[03-7]|7[0-2578]|8[0-35-9]|9[013-689])|872)\\d{4}",[7]],["(?:38[589]\\d\\d|6(?:1[1-8]|2[0-6]|3[026-9]|4[014679]|5[0159]|6[0-69]|70|8[06-8]|9\\d)|7(?:5[057]|[6-9]\\d)|8(?:2[0-59]|[3-69]\\d|8[238]))\\d{4}"],["80[0-8]\\d{4}",[7]],["90(?:0\\d|1[5-79]|2[015-79]|3[135-79]|4[125-7]|5[25-79]|7[1-37]|8[0-35-7])\\d{3}",[7]],0,0,["809\\d{4}",[7]],0,["49[0-24-79]\\d{4}",[7]]],"00"],"IT":["39","00","0\\d{5,10}|1\\d{8,10}|3(?:[0-8]\\d{7,10}|9\\d{7,8})|(?:55|70)\\d{8}|8\\d{5}(?:\\d{2,4})?",[6,7,8,9,10,11],[["(\\d{2})(\\d{4,6})","$1 $2",["0[26]"]],["(\\d{3})(\\d{3,6})","$1 $2",["0[13-57-9][0159]|8(?:03|4[17]|9[2-5])","0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))"]],["(\\d{4})(\\d{2,6})","$1 $2",["0(?:[13-579][2-46-8]|8[236-8])"]],["(\\d{4})(\\d{4})","$1 $2",["894"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[26]|5"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["1(?:44|[679])|[378]"]],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[13-57-9][0159]|14"]],["(\\d{2})(\\d{4})(\\d{5})","$1 $2 $3",["0[26]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["3"]]],0,0,0,0,0,0,[["0669[0-79]\\d{1,6}|0(?:1(?:[0159]\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\d\\d|3(?:[0159]\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\d|6[0-8])|7(?:[0159]\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\d{2,7}"],["3[1-9]\\d{8}|3[2-9]\\d{7}",[9,10]],["80(?:0\\d{3}|3)\\d{3}",[6,9]],["(?:0878\\d{3}|89(?:2\\d|3[04]|4(?:[0-4]|[5-9]\\d\\d)|5[0-4]))\\d\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\d{6}",[6,8,9,10]],["1(?:78\\d|99)\\d{6}",[9,10]],0,0,0,["55\\d{8}",[10]],["84(?:[08]\\d{3}|[17])\\d{3}",[6,9]]]],"JE":["44","00","1534\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([0-24-8]\\d{5})$","1534$1",0,0,[["1534[0-24-8]\\d{5}"],["7(?:(?:(?:50|82)9|937)\\d|7(?:00[378]|97[7-9]))\\d{5}"],["80(?:07(?:35|81)|8901)\\d{4}"],["(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\d{4}"],["701511\\d{4}"],0,["(?:3(?:0(?:07(?:35|81)|8901)|3\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\d{4})\\d{4}"],["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}"],["56\\d{8}"]]],"JM":["1","011","(?:[58]\\d\\d|658|900)\\d{7}",[10],0,"1",0,0,0,0,"658|876",[["8766060\\d{3}|(?:658(?:2(?:[0-8]\\d|9[0-46-9])|[3-9]\\d\\d)|876(?:52[35]|6(?:0[1-3579]|1[02357-9]|[23]\\d|40|5[06]|6[2-589]|7[025-7]|8[04]|9[4-9])|7(?:0[2-689]|[1-6]\\d|8[056]|9[45])|9(?:0[1-8]|1[02378]|[2-8]\\d|9[2-468])))\\d{4}"],["(?:658295|876(?:2(?:0[1-9]|[13-9]\\d|2[013-9])|[348]\\d\\d|5(?:0[1-9]|[1-9]\\d)|6(?:4[89]|6[67])|7(?:0[07]|7\\d|8[1-47-9]|9[0-36-9])|9(?:[01]9|9[0579])))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"JO":["962","00","(?:(?:[2689]|7\\d)\\d|32|53)\\d{6}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2356]|87"],"(0$1)"],["(\\d{3})(\\d{5,6})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["70"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[["87(?:000|90[01])\\d{3}|(?:2(?:6(?:2[0-35-9]|3[0-578]|4[24-7]|5[0-24-8]|[6-8][023]|9[0-3])|7(?:0[1-79]|10|2[014-7]|3[0-689]|4[019]|5[0-3578]))|32(?:0[1-69]|1[1-35-7]|2[024-7]|3\\d|4[0-3]|[5-7][023])|53(?:0[0-3]|[13][023]|2[0-59]|49|5[0-35-9]|6[15]|7[45]|8[1-6]|9[0-36-9])|6(?:2(?:[05]0|22)|3(?:00|33)|4(?:0[0-25]|1[2-7]|2[0569]|[38][07-9]|4[025689]|6[0-589]|7\\d|9[0-2])|5(?:[01][056]|2[034]|3[0-57-9]|4[178]|5[0-69]|6[0-35-9]|7[1-379]|8[0-68]|9[0239]))|87(?:20|7[078]|99))\\d{4}",[8]],["7(?:[78][0-25-9]|9\\d)\\d{6}",[9]],["80\\d{6}",[8]],["9\\d{7}",[8]],["70\\d{7}",[9]],0,["8(?:10|8\\d)\\d{5}",[8]],["74(?:66|77)\\d{5}",[9]],0,["85\\d{6}",[8]]]],"JP":["81","010","00[1-9]\\d{6,14}|[257-9]\\d{9}|(?:00|[1-9]\\d\\d)\\d{6}",[8,9,10,11,12,13,14,15,16,17],[["(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3",["(?:12|57|99)0"],"0$1"],["(\\d{4})(\\d)(\\d{4})","$1-$2-$3",["1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:80|9[16])","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2-$3",["[36]|4(?:2[09]|7[01])","[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]"],"0$1"],["(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3",["[14]|[289][2-9]|5[3-9]|7[2-4679]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["800"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[257-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:1[235-8]|2[3-6]|3[3-9]|4[2-6]|[58][2-8]|6[2-7]|7[2-9]|9[1-9])|(?:2[2-9]|[36][1-9])\\d|4(?:[2-578]\\d|6[02-8]|9[2-59])|5(?:[2-589]\\d|6[1-9]|7[2-8])|7(?:[25-9]\\d|3[4-9]|4[02-9])|8(?:[2679]\\d|3[2-9]|4[5-9]|5[1-9]|8[03-9])|9(?:[2-58]\\d|[679][1-9]))\\d{6}",[9]],["[7-9]0[1-9]\\d{7}",[10]],["00777(?:[01]|5\\d)\\d\\d|(?:00(?:7778|882[1245])|(?:120|800\\d)\\d\\d)\\d{4}|00(?:37|66|78)\\d{6,13}"],["990\\d{6}",[9]],["60\\d{7}",[9]],0,["570\\d{6}",[9]],["20\\d{8}",[10]],["50[1-9]\\d{7}",[10]]]],"KE":["254","000","(?:[17]\\d\\d|900)\\d{6}|(?:2|80)0\\d{6,7}|[4-6]\\d{6,8}",[7,8,9,10],[["(\\d{2})(\\d{5,7})","$1 $2",["[24-6]"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[17]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,[["(?:4[245]|5[1-79]|6[01457-9])\\d{5,7}|(?:4[136]|5[08]|62)\\d{7}|(?:[24]0|66)\\d{6,7}",[7,8,9]],["(?:1(?:0[0-6]|1[0-5]|2[014]|30)|7\\d\\d)\\d{6}",[9]],["800[2-8]\\d{5,6}",[9,10]],["900[02-9]\\d{5}",[9]]]],"KG":["996","00","8\\d{9}|(?:[235-8]\\d|99)\\d{7}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["3(?:1[346]|[24-79])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235-79]|88"],"0$1"],["(\\d{3})(\\d{3})(\\d)(\\d{2,3})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["312(?:5[0-79]\\d|9(?:[0-689]\\d|7[0-24-9]))\\d{3}|(?:3(?:1(?:2[0-46-8]|3[1-9]|47|[56]\\d)|2(?:22|3[0-479]|6[0-7])|4(?:22|5[6-9]|6\\d)|5(?:22|3[4-7]|59|6\\d)|6(?:22|5[35-7]|6\\d)|7(?:22|3[468]|4[1-9]|59|[67]\\d)|9(?:22|4[1-8]|6\\d))|6(?:09|12|2[2-4])\\d)\\d{5}",[9]],["312(?:58\\d|973)\\d{3}|(?:2(?:0[0-35]|2\\d)|5[0-24-7]\\d|7(?:[07]\\d|55)|88[08]|99[05-9])\\d{6}",[9]],["800\\d{6,7}"]]],"KH":["855","00[14-9]","1\\d{9}|[1-9]\\d{7,8}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[["23(?:4(?:[2-4]|[56]\\d)|[568]\\d\\d)\\d{4}|23[236-9]\\d{5}|(?:2[4-6]|3[2-6]|4[2-4]|[5-7][2-5])(?:(?:[237-9]|4[56]|5\\d)\\d{5}|6\\d{5,6})",[8,9]],["(?:(?:1[28]|3[18]|9[67])\\d|6[016-9]|7(?:[07-9]|[16]\\d)|8(?:[013-79]|8\\d))\\d{6}|(?:1\\d|9[0-57-9])\\d{6}|(?:2[3-6]|3[2-6]|4[2-4]|[5-7][2-5])48\\d{5}",[8,9]],["1800(?:1\\d|2[019])\\d{4}",[10]],["1900(?:1\\d|2[09])\\d{4}",[10]]]],"KI":["686","00","(?:[37]\\d|6[0-79])\\d{6}|(?:[2-48]\\d|50)\\d{3}",[5,8],0,"0",0,0,0,0,0,[["(?:[24]\\d|3[1-9]|50|65(?:02[12]|12[56]|22[89]|[3-5]00)|7(?:27\\d\\d|3100|5(?:02[12]|12[56]|22[89]|[34](?:00|81)|500))|8[0-5])\\d{3}"],["(?:63\\d{3}|73(?:0[0-5]\\d|140))\\d{3}|[67]200[01]\\d{3}",[8]],0,0,0,0,0,0,["30(?:0[01]\\d\\d|12(?:11|20))\\d\\d",[8]]]],"KM":["269","00","[3478]\\d{6}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[3478]"]]],0,0,0,0,0,0,[["7[4-7]\\d{5}"],["[34]\\d{6}"],0,["8\\d{6}"]]],"KN":["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","869$1",0,"869",[["869(?:2(?:29|36)|302|4(?:6[015-9]|70)|56[5-7])\\d{4}"],["869(?:48[89]|55[6-8]|66\\d|76[02-7])\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"KP":["850","00|99","85\\d{6}|(?:19\\d|[2-7])\\d{7}",[8,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"]],"0",0,0,0,0,0,[["(?:(?:195|2)\\d|3[19]|4[159]|5[37]|6[17]|7[39]|85)\\d{6}"],["19[1-3]\\d{7}",[10]]]],"KR":["82","00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))","00[1-9]\\d{8,11}|(?:[12]|5\\d{3})\\d{7}|[13-6]\\d{9}|(?:[1-6]\\d|80)\\d{7}|[3-6]\\d{4,5}|(?:00|7)0\\d{8}",[5,6,8,9,10,11,12,13,14],[["(\\d{2})(\\d{3,4})","$1-$2",["(?:3[1-3]|[46][1-4]|5[1-5])1"],"0$1"],["(\\d{4})(\\d{4})","$1-$2",["1"]],["(\\d)(\\d{3,4})(\\d{4})","$1-$2-$3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60|8"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1-$2-$3",["[1346]|5[1-5]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{2})(\\d{5})(\\d{4})","$1-$2-$3",["5"],"0$1"]],"0",0,"0(8(?:[1-46-8]|5\\d\\d))?",0,0,0,[["(?:2|3[1-3]|[46][1-4]|5[1-5])[1-9]\\d{6,7}|(?:3[1-3]|[46][1-4]|5[1-5])1\\d{2,3}",[5,6,8,9,10]],["1(?:05(?:[0-8]\\d|9[0-6])|22[13]\\d)\\d{4,5}|1(?:0[1-46-9]|[16-9]\\d|2[013-9])\\d{6,7}",[9,10]],["00(?:308\\d{6,7}|798\\d{7,9})|(?:00368|80)\\d{7}",[9,11,12,13,14]],["60[2-9]\\d{6}",[9]],["50\\d{8,9}",[10,11]],0,["1(?:5(?:22|33|44|66|77|88|99)|6(?:[07]0|44|6[168]|88)|8(?:00|33|55|77|99))\\d{4}",[8]],["15\\d{7,8}",[9,10]],["70\\d{8}",[10]]]],"KW":["965","00","18\\d{5}|(?:[2569]\\d|41)\\d{6}",[7,8],[["(\\d{4})(\\d{3,4})","$1 $2",["[169]|2(?:[235]|4[1-35-9])|52"]],["(\\d{3})(\\d{5})","$1 $2",["[245]"]]],0,0,0,0,0,0,[["2(?:[23]\\d\\d|4(?:[1-35-9]\\d|44)|5(?:0[034]|[2-46]\\d|5[1-3]|7[1-7]))\\d{4}",[8]],["(?:41\\d\\d|5(?:(?:[05]\\d|1[0-7]|6[56])\\d|2(?:22|5[25])|7(?:55|77)|88[58])|6(?:(?:0[034679]|5[015-9]|6\\d)\\d|1(?:00|11|66)|222|3[36]3|444|7(?:0[013-9]|[67]\\d)|888|9(?:[069]\\d|3[039]))|9(?:(?:0[09]|22|[4679]\\d|8[057-9])\\d|1(?:1[01]|99)|3(?:00|33)|5(?:00|5\\d)))\\d{4}",[8]],["18\\d{5}",[7]]]],"KY":["1","011","(?:345|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","345$1",0,"345",[["345(?:2(?:22|3[23]|44|66)|333|444|6(?:23|38|40)|7(?:30|4[35-79]|6[6-9]|77)|8(?:00|1[45]|[48]8)|9(?:14|4[035-9]))\\d{4}"],["345(?:32[1-9]|42[0-4]|5(?:1[67]|2[5-79]|4[6-9]|50|76)|649|82[56]|9(?:1[679]|2[2-9]|3[06-9]|90))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["(?:345976|900[2-9]\\d\\d)\\d{4}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,0,["345849\\d{4}"]]],"KZ":["7","810","(?:33622|8\\d{8})\\d{5}|[78]\\d{9}",[10,14],0,"8",0,0,0,0,"33|7",[["(?:33622|7(?:1(?:0(?:[23]\\d|4[0-3]|59|63)|1(?:[23]\\d|4[0-79]|59)|2(?:[23]\\d|59)|3(?:2\\d|3[0-79]|4[0-35-9]|59)|4(?:[24]\\d|3[013-9]|5[1-9])|5(?:2\\d|3[1-9]|4[0-7]|59)|6(?:[2-4]\\d|5[19]|61)|72\\d|8(?:[27]\\d|3[1-46-9]|4[0-5]))|2(?:1(?:[23]\\d|4[46-9]|5[3469])|2(?:2\\d|3[0679]|46|5[12679])|3(?:[2-4]\\d|5[139])|4(?:2\\d|3[1-35-9]|59)|5(?:[23]\\d|4[0-246-8]|59|61)|6(?:2\\d|3[1-9]|4[0-4]|59)|7(?:[2379]\\d|40|5[279])|8(?:[23]\\d|4[0-3]|59)|9(?:2\\d|3[124578]|59))))\\d{5}",[10]],["7(?:0[0-25-8]|47|6[0-4]|7[15-8]|85)\\d{7}",[10]],["8(?:00|108\\d{3})\\d{7}"],["809\\d{7}",[10]],["808\\d{7}",[10]],0,0,0,["751\\d{7}",[10]]],"8~10"],"LA":["856","00","[23]\\d{9}|3\\d{8}|(?:[235-8]\\d|41)\\d{6}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2[13]|3[14]|[4-8]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["30[013-9]"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[23]"],"0$1"]],"0",0,0,0,0,0,[["(?:2[13]|[35-7][14]|41|8[1468])\\d{6}",[8]],["(?:20(?:[239]\\d|5[24-9]|7[6-8]|88)|302\\d)\\d{6}",[10]],0,0,0,0,["30[013-9]\\d{6}",[9]]]],"LB":["961","00","[27-9]\\d{7}|[13-9]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27-9]"]]],"0",0,0,0,0,0,[["7(?:62|8[0-7]|9[04-9])\\d{4}|(?:[14-69]\\d|2(?:[14-69]\\d|[78][1-9])|7[2-57]|8[02-9])\\d{5}"],["793(?:[01]\\d|2[0-4])\\d{3}|(?:(?:3|81)\\d|7(?:[01]\\d|6[013-9]|8[89]|9[12]))\\d{5}"],0,["9[01]\\d{6}",[8]],0,0,0,0,0,["80\\d{6}",[8]]]],"LC":["1","011","(?:[58]\\d\\d|758|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","758$1",0,"758",[["758(?:234|4(?:30|5\\d|6[2-9]|8[0-2])|57[0-2]|(?:63|75)8)\\d{4}"],["758(?:28[4-7]|384|4(?:6[01]|8[4-9])|5(?:1[89]|20|84)|7(?:1[2-9]|2\\d|3[0-3])|812)\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"LI":["423","00","[68]\\d{8}|(?:[2378]\\d|90)\\d{5}",[7,9],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[2379]|8(?:0[09]|7)","[2379]|8(?:0(?:02|9)|7)"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["69"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]],"0",0,"0|(1001)",0,0,0,[["(?:2(?:01|1[27]|2[02]|3\\d|6[02-578]|96)|3(?:[24]0|33|7[0135-7]|8[048]|9[0269]))\\d{4}",[7]],["(?:6(?:(?:4[5-9]|5[0-4])\\d|6(?:[0245]\\d|[17]0|3[7-9]))\\d|7(?:[37-9]\\d|42|56))\\d{4}"],["8002[28]\\d\\d|80(?:05\\d|9)\\d{4}"],["90(?:02[258]|1(?:23|3[14])|66[136])\\d\\d",[7]],0,0,["870(?:28|87)\\d\\d",[7]]]],"LK":["94","00","[1-9]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[1-689]"],"0$1"]],"0",0,0,0,0,0,[["(?:12[2-9]|602|8[12]\\d|9(?:1\\d|22|9[245]))\\d{6}|(?:11|2[13-7]|3[1-8]|4[157]|5[12457]|6[35-7])[2-57]\\d{6}"],["7(?:[0-25-8]\\d|4[0-4])\\d{6}"],0,0,0,0,["1973\\d{5}"]]],"LR":["231","00","(?:2|33|5\\d|77|88)\\d{7}|[4-6]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[4-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3578]"],"0$1"]],"0",0,0,0,0,0,[["(?:2\\d{3}|33333)\\d{4}",[8,9]],["(?:(?:330|555|(?:77|88)\\d)\\d|4[67])\\d{5}|[56]\\d{6}",[7,9]],0,["332(?:02|[34]\\d)\\d{4}",[9]]]],"LS":["266","00","(?:[256]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2568]"]]],0,0,0,0,0,0,[["2\\d{7}"],["[56]\\d{7}"],["800[256]\\d{4}"]]],"LT":["370","00","(?:[3469]\\d|52|[78]0)\\d{6}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["52[0-7]"],"(8-$1)",1],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[7-9]"],"8 $1",1],["(\\d{2})(\\d{6})","$1 $2",["37|4(?:[15]|6[1-8])"],"(8-$1)",1],["(\\d{3})(\\d{5})","$1 $2",["[3-6]"],"(8-$1)",1]],"8",0,"[08]",0,0,0,[["(?:3[1478]|4[124-6]|52)\\d{6}"],["6\\d{7}"],["80[02]\\d{5}"],["9(?:0[0239]|10)\\d{5}"],["70[05]\\d{5}"],0,["70[67]\\d{5}"],0,["[89]01\\d{5}"],["808\\d{5}"]]],"LU":["352","00","35[013-9]\\d{4,8}|6\\d{8}|35\\d{2,4}|(?:[2457-9]\\d|3[0-46-9])\\d{2,9}",[4,5,6,7,8,9,10,11],[["(\\d{2})(\\d{3})","$1 $2",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["20[2-689]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4",["2(?:[0367]|4[3-8])"]],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["80[01]|90[015]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["20"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4 $5",["2(?:[0367]|4[3-8])"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,5})","$1 $2 $3 $4",["[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]"]]],0,0,"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\d)",0,0,0,[["(?:35[013-9]|80[2-9]|90[89])\\d{1,8}|(?:2[2-9]|3[0-46-9]|[457]\\d|8[13-9]|9[2-579])\\d{2,9}"],["6(?:[269][18]|5[1568]|7[189]|81)\\d{6}",[9]],["800\\d{5}",[8]],["90[015]\\d{5}",[8]],0,0,0,0,["20(?:1\\d{5}|[2-689]\\d{1,7})",[4,5,6,7,8,9,10]],["801\\d{5}",[8]]]],"LV":["371","00","(?:[268]\\d|90)\\d{6}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[269]|8[01]"]]],0,0,0,0,0,0,[["6\\d{7}"],["23(?:23[0-57-9]|33[0238])\\d{3}|2(?:[0-24-9]\\d\\d|3(?:0[07]|[14-9]\\d|2[024-9]|3[0-24-9]))\\d{4}"],["80\\d{6}"],["90\\d{6}"],0,0,0,0,0,["81\\d{6}"]]],"LY":["218","00","[2-9]\\d{8}",[9],[["(\\d{2})(\\d{7})","$1-$2",["[2-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:2(?:0[56]|[1-6]\\d|7[124579]|8[124])|3(?:1\\d|2[2356])|4(?:[17]\\d|2[1-357]|5[2-4]|8[124])|5(?:[1347]\\d|2[1-469]|5[13-5]|8[1-4])|6(?:[1-479]\\d|5[2-57]|8[1-5])|7(?:[13]\\d|2[13-79])|8(?:[124]\\d|5[124]|84))\\d{6}"],["9[1-6]\\d{7}"]]],"MA":["212","00","[5-8]\\d{8}",[9],[["(\\d{5})(\\d{4})","$1-$2",["5(?:29|38)","5(?:29[89]|389)","5(?:29[89]|389)0"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5[45]"],"0$1"],["(\\d{4})(\\d{5})","$1-$2",["5(?:2[2-489]|3[5-9]|9)|892","5(?:2(?:[2-49]|8[235-9])|3[5-9]|9)|892"],"0$1"],["(\\d{2})(\\d{7})","$1-$2",["8"],"0$1"],["(\\d{3})(\\d{6})","$1-$2",["[5-7]"],"0$1"]],"0",0,0,0,0,0,[["5(?:29(?:[189][05]|2[29]|3[01])|389[05])\\d{4}|5(?:2(?:[0-25-7]\\d|3[1-578]|4[02-46-8]|8[0235-7]|90)|3(?:[0-47]\\d|5[02-9]|6[02-8]|8[08]|9[3-9])|(?:4[067]|5[03])\\d)\\d{5}"],["(?:6(?:[0-79]\\d|8[0-247-9])|7(?:[017]\\d|2[0-2]|6[0-8]|8[0-3]))\\d{6}"],["80\\d{7}"],["89\\d{7}"],0,0,0,0,["592(?:4[0-2]|93)\\d{4}"]]],"MC":["377","00","(?:[3489]|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["4"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[389]"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["6"],"0$1"]],"0",0,0,0,0,0,[["(?:870|9[2-47-9]\\d)\\d{5}",[8]],["4(?:[46]\\d|5[1-9])\\d{5}|(?:3|6\\d)\\d{7}"],["(?:800|90\\d)\\d{5}",[8]]]],"MD":["373","00","(?:[235-7]\\d|[89]0)\\d{6}",[8],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["22|3"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[25-7]"],"0$1"]],"0",0,0,0,0,0,[["(?:(?:2[1-9]|3[1-79])\\d|5(?:33|5[257]))\\d{5}"],["562\\d{5}|(?:6\\d|7[16-9])\\d{6}"],["800\\d{5}"],["90[056]\\d{5}"],0,0,["803\\d{5}"],0,["3[08]\\d{6}"],["808\\d{5}"]]],"ME":["382","00","(?:20|[3-79]\\d)\\d{6}|80\\d{6,7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:20[2-8]|3(?:[0-2][2-7]|3[24-7])|4(?:0[2-467]|1[2467])|5(?:0[2467]|1[24-7]|2[2-467]))\\d{5}",[8]],["6(?:[07-9]\\d|3[024]|6[0-25])\\d{5}",[8]],["80(?:[0-2578]|9\\d)\\d{5}"],["9(?:4[1568]|5[178])\\d{5}",[8]],0,0,["77[1-9]\\d{5}",[8]],0,["78[1-49]\\d{5}",[8]]]],"MF":["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[["590(?:0[079]|[14]3|[27][79]|30|5[0-268]|87)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],"MG":["261","00","[23]\\d{8}",[9],[["(\\d{2})(\\d{2})(\\d{3})(\\d{2})","$1 $2 $3 $4",["[23]"],"0$1"]],"0",0,"0|([24-9]\\d{6})$","20$1",0,0,[["2072[29]\\d{4}|20(?:2\\d|4[47]|5[3467]|6[279]|7[35]|8[268]|9[245])\\d{5}"],["3[2-489]\\d{7}"],0,0,0,0,0,0,["22\\d{7}"]]],"MH":["692","011","329\\d{4}|(?:[256]\\d|45)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1-$2",["[2-6]"]]],"1",0,0,0,0,0,[["(?:247|528|625)\\d{4}"],["(?:(?:23|54)5|329|45[356])\\d{4}"],0,0,0,0,0,0,["635\\d{4}"]]],"MK":["389","00","[2-578]\\d{7}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2|34[47]|4(?:[37]7|5[47]|64)"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[347]"],"0$1"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["[58]"],"0$1"]],"0",0,0,0,0,0,[["(?:(?:2(?:62|77)0|3444)\\d|4[56]440)\\d{3}|(?:34|4[357])700\\d{3}|(?:2(?:[0-3]\\d|5[0-578]|6[01]|82)|3(?:1[3-68]|[23][2-68]|4[23568])|4(?:[23][2-68]|4[3-68]|5[2568]|6[25-8]|7[24-68]|8[4-68]))\\d{5}"],["7(?:3555|4747|9(?:[019]77|42[0-4]))\\d{3}|7(?:[0-25-8]\\d\\d|3(?:[1-4]\\d|7[01578])|4(?:2\\d|60|7[01578])|9(?:[23]\\d|4[01]|7[015]))\\d{4}"],["800\\d{5}"],["5\\d{7}"],0,0,0,0,0,["8(?:0[1-9]|[1-9]\\d)\\d{5}"]]],"ML":["223","00","[24-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24-9]"]]],0,0,0,0,0,0,[["2(?:07[0-8]|12[67])\\d{4}|(?:2(?:02|1[4-689])|4(?:0[0-4]|4[1-39]))\\d{5}"],["2(?:0(?:01|79)|17\\d)\\d{4}|(?:5[01]|[679]\\d|8[2-49])\\d{6}"],["80\\d{6}"]]],"MM":["95","00","1\\d{5,7}|95\\d{6}|(?:[4-7]|9[0-46-9])\\d{6,8}|(?:2|8\\d)\\d{5,8}",[6,7,8,9,10],[["(\\d)(\\d{2})(\\d{3})","$1 $2 $3",["16|2"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[4-7]|8[1-35]"],"0$1"],["(\\d)(\\d{3})(\\d{4,6})","$1 $2 $3",["9(?:2[0-4]|[35-9]|4[137-9])"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["92"],"0$1"],["(\\d)(\\d{5})(\\d{4})","$1 $2 $3",["9"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:(?:2\\d|3[56]|[89][0-6])\\d|4(?:2[2-469]|39|46|6[25]|7[0-3]|83)|6)|2(?:2(?:00|8[34])|4(?:0\\d|2[246]|39|46|62|7[0-3]|83)|51\\d\\d)|4(?:2(?:2\\d\\d|48[0-3])|3(?:20\\d|4(?:70|83)|56)|420\\d|5470)|6(?:0(?:[23]|88\\d)|(?:124|[56]2\\d)\\d|247[23]|3(?:20\\d|470)|4(?:2[04]\\d|47[23])|7(?:(?:3\\d|8[01459])\\d|4(?:39|60|7[013]))))\\d{4}|5(?:2(?:2\\d{5,6}|47[023]\\d{4})|(?:347[23]|4(?:2(?:1|86)|470)|522\\d|6(?:20\\d|483)|7(?:20\\d|48[0-2])|8(?:20\\d|47[02])|9(?:20\\d|47[01]))\\d{4})|7(?:(?:0470|4(?:25\\d|470)|5(?:202|470|96\\d))\\d{4}|1(?:20\\d{4,5}|4(?:70|83)\\d{4}))|8(?:1(?:2\\d{5,6}|4(?:10|7[01]\\d)\\d{3})|2(?:2\\d{5,6}|(?:320|490\\d)\\d{3})|(?:3(?:2\\d\\d|470)|4[24-7]|5(?:2\\d|4[1-9]|51)\\d|6[23])\\d{4})|(?:1[2-6]\\d|4(?:2[24-8]|3[2-7]|[46][2-6]|5[3-5])|5(?:[27][2-8]|3[2-68]|4[24-8]|5[23]|6[2-4]|8[24-7]|9[2-7])|6(?:[19]20|42[03-6]|(?:52|7[45])\\d)|7(?:[04][24-8]|[15][2-7]|22|3[2-4])|8(?:1[2-689]|2[2-8]|[35]2\\d))\\d{4}|25\\d{5,6}|(?:2[2-9]|6(?:1[2356]|[24][2-6]|3[24-6]|5[2-4]|6[2-8]|7[235-7]|8[245]|9[24])|8(?:3[24]|5[245]))\\d{4}",[6,7,8,9]],["(?:17[01]|9(?:2(?:[0-4]|[56]\\d\\d)|(?:3(?:[0-36]|4\\d)|(?:6\\d|9[4-8])\\d|7(?:3|40|[5-9]\\d)|8(?:78|[89]\\d))\\d|4(?:(?:[0245]\\d|[1379])\\d|88)|5[0-6])\\d)\\d{4}|9[69]1\\d{6}|9(?:[68]\\d|9[089])\\d{5}",[7,8,9,10]],["80080(?:[01][1-9]|2\\d)\\d{3}",[10]],0,0,0,0,0,["1333\\d{4}|[12]468\\d{4}",[8]]]],"MN":["976","001","[12]\\d{7,9}|[5-9]\\d{7}",[8,9,10],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[12]1"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[5-9]"]],["(\\d{3})(\\d{5,6})","$1 $2",["[12]2[1-3]"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["[12](?:27|3[2-8]|4[2-68]|5[1-4689])","[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["[12]"],"0$1"]],"0",0,0,0,0,0,[["[12]2[1-3]\\d{5,6}|7(?:0[0-5]\\d|128)\\d{4}|(?:[12](?:1|27)|5[368])\\d{6}|[12](?:3[2-8]|4[2-68]|5[1-4689])\\d{6,7}"],["(?:83[01]|920)\\d{5}|(?:5[05]|6[06]|8[015689]|9[013-9])\\d{6}",[8]],0,0,0,0,0,0,["712[0-79]\\d{4}|7(?:1[013-9]|[25-8]\\d)\\d{5}",[8]]]],"MO":["853","00","0800\\d{3}|(?:28|[68]\\d)\\d{6}",[7,8],[["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{4})(\\d{4})","$1 $2",["[268]"]]],0,0,0,0,0,0,[["(?:28[2-9]|8(?:11|[2-57-9]\\d))\\d{5}",[8]],["6800[0-79]\\d{3}|6(?:[235]\\d\\d|6(?:0[0-5]|[1-9]\\d)|8(?:0[1-9]|[14-8]\\d|2[5-9]|[39][0-4]))\\d{4}",[8]],["0800\\d{3}",[7]]]],"MP":["1","011","[58]\\d{9}|(?:67|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","670$1",0,"670",[["670(?:2(?:3[3-7]|56|8[4-8])|32[1-38]|4(?:33|8[348])|5(?:32|55|88)|6(?:64|70|82)|78[3589]|8[3-9]8|989)\\d{4}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"MQ":["596","00","(?:69|80)\\d{7}|(?:59|97)6\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["596(?:[03-7]\\d|10|2[7-9]|8[09]|9[4-9])\\d{4}"],["69(?:6(?:[0-46-9]\\d|5[0-6])|727)\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976(?:6\\d|7[0-367])\\d{4}"]]],"MR":["222","00","(?:[2-4]\\d\\d|800)\\d{5}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-48]"]]],0,0,0,0,0,0,[["(?:25[08]|35\\d|45[1-7])\\d{5}"],["[2-4][0-46-9]\\d{6}"],["800\\d{5}"]]],"MS":["1","011","(?:[58]\\d\\d|664|900)\\d{7}",[10],0,"1",0,"1|([34]\\d{6})$","664$1",0,"664",[["6644(?:1[0-3]|91)\\d{4}"],["664(?:3(?:49|9[1-6])|49[2-6])\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"MT":["356","00","3550\\d{4}|(?:[2579]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2357-9]"]]],0,0,0,0,0,0,[["20(?:3[1-4]|6[059])\\d{4}|2(?:0[19]|[1-357]\\d|60)\\d{5}"],["(?:7(?:210|[79]\\d\\d)|9(?:[29]\\d\\d|69[67]|8(?:1[1-3]|89|97)))\\d{4}"],["800(?:02|[3467]\\d)\\d{3}"],["5(?:0(?:0(?:37|43)|(?:6\\d|70|9[0168])\\d)|[12]\\d0[1-5])\\d{3}"],0,0,["501\\d{5}"],["7117\\d{4}"],["3550\\d{4}"]]],"MU":["230","0(?:0|[24-7]0|3[03])","(?:5|8\\d\\d)\\d{7}|[2-468]\\d{6}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[2-46]|8[013]"]],["(\\d{4})(\\d{4})","$1 $2",["5"]],["(\\d{5})(\\d{5})","$1 $2",["8"]]],0,0,0,0,0,0,[["(?:2(?:[0346-8]\\d|1[0-7])|4(?:[013568]\\d|2[4-7])|54(?:[3-5]\\d|71)|6\\d\\d|8(?:14|3[129]))\\d{4}",[7,8]],["5(?:4(?:2[1-389]|7[1-9])|87[15-8])\\d{4}|5(?:2[5-9]|4[3-689]|[57]\\d|8[0-689]|9[0-8])\\d{5}",[8]],["802\\d{7}|80[0-2]\\d{4}",[7,10]],["30\\d{5}",[7]],0,0,0,0,["3(?:20|9\\d)\\d{4}",[7]]],"020"],"MV":["960","0(?:0|19)","(?:800|9[0-57-9]\\d)\\d{7}|[34679]\\d{6}",[7,10],[["(\\d{3})(\\d{4})","$1-$2",["[3467]|9[13-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"]]],0,0,0,0,0,0,[["(?:3(?:0[0-3]|3[0-59])|6(?:[58][024689]|6[024-68]|7[02468]))\\d{4}",[7]],["46[46]\\d{4}|(?:7\\d|9[13-9])\\d{5}",[7]],["800\\d{7}",[10]],["900\\d{7}",[10]],0,0,["4(?:0[01]|50)\\d{4}",[7]]],"00"],"MW":["265","00","(?:[1289]\\d|31|77)\\d{7}|1\\d{6}",[7,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["1[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[137-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:1[2-9]|2[12]\\d\\d)\\d{5}"],["111\\d{6}|(?:31|77|[89][89])\\d{7}",[9]]]],"MX":["52","0[09]","1(?:(?:44|99)[1-9]|65[0-689])\\d{7}|(?:1(?:[017]\\d|[235][1-9]|4[0-35-9]|6[0-46-9]|8[1-79]|9[1-8])|[2-9]\\d)\\d{8}",[10,11],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["33|5[56]|81"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2-9]"],0,1],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 $3 $4",["1(?:33|5[56]|81)"],0,1],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 $3 $4",["1"],0,1]],"01",0,"0(?:[12]|4[45])|1",0,0,0,[["657[12]\\d{6}|(?:2(?:0[01]|2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[25-7][1-9]|3[1-8]|4\\d|8[1-35-9]|9[2-689])|5(?:[56]\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|6[1-9]|7[12]|8[1-8]|9\\d))\\d{7}",[10]],["657[12]\\d{6}|(?:1(?:2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-7][1-9]|3[1-8]|8[1-35-9]|9[2-689])|5(?:[56]\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))|2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[25-7][1-9]|3[1-8]|4\\d|8[1-35-9]|9[2-689])|5(?:[56]\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|6[1-9]|7[12]|8[1-8]|9\\d))\\d{7}"],["8(?:00|88)\\d{7}",[10]],["900\\d{7}",[10]],["500\\d{7}",[10]],0,0,0,0,["300\\d{7}",[10]]],"00"],"MY":["60","00","1\\d{8,9}|(?:3\\d|[4-9])\\d{7}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1-$2 $3",["[4-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1-$2 $3",["1(?:[02469]|[378][1-9]|53)|8","1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2 $3",["3"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3-$4",["1(?:[367]|80)"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2 $3",["15"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2 $3",["1"],"0$1"]],"0",0,0,0,0,0,[["(?:3(?:2[0-36-9]|3[0-368]|4[0-278]|5[0-24-8]|6[0-467]|7[1246-9]|8\\d|9[0-57])\\d|4(?:2[0-689]|[3-79]\\d|8[1-35689])|5(?:2[0-589]|[3468]\\d|5[0-489]|7[1-9]|9[23])|6(?:2[2-9]|3[1357-9]|[46]\\d|5[0-6]|7[0-35-9]|85|9[015-8])|7(?:[2579]\\d|3[03-68]|4[0-8]|6[5-9]|8[0-35-9])|8(?:[24][2-8]|3[2-5]|5[2-7]|6[2-589]|7[2-578]|[89][2-9])|9(?:0[57]|13|[25-7]\\d|[3489][0-8]))\\d{5}",[8,9]],["1(?:1888[689]|4400|8(?:47|8[27])[0-4])\\d{4}|1(?:0(?:[23568]\\d|4[0-6]|7[016-9]|9[0-8])|1(?:[1-5]\\d\\d|6(?:0[5-9]|[1-9]\\d)|7(?:[0134]\\d|2[1-9]|5[0-6]))|(?:[269]\\d|[37][1-9]|4[235-9])\\d|5(?:31|9\\d\\d)|8(?:1[23]|[236]\\d|4[06]|5(?:46|[7-9])|7[016-9]|8[01]|9[0-8]))\\d{5}",[9,10]],["1[378]00\\d{6}",[10]],["1600\\d{6}",[10]],0,0,0,0,["15(?:4(?:6[0-4]\\d|8(?:0[125]|[17]\\d|21|3[01]|4[01589]|5[014]|6[02]))|6(?:32[0-6]|78\\d))\\d{4}",[10]]]],"MZ":["258","00","(?:2|8\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2|8[2-79]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["2(?:[1346]\\d|5[0-2]|[78][12]|93)\\d{5}",[8]],["8[2-79]\\d{7}",[9]],["800\\d{6}",[9]]]],"NA":["264","00","[68]\\d{7,8}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["87"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0",0,0,0,0,0,[["64426\\d{3}|6(?:1(?:2[2-7]|3[01378]|4[0-4])|254|32[0237]|4(?:27|41|5[25])|52[236-8]|626|7(?:2[2-4]|30))\\d{4,5}|6(?:1(?:(?:0\\d|2[0189]|3[24-69]|4[5-9])\\d|17|69|7[014])|2(?:17|5[0-36-8]|69|70)|3(?:17|2[14-689]|34|6[289]|7[01]|81)|4(?:17|2[0-2]|4[06]|5[0137]|69|7[01])|5(?:17|2[0459]|69|7[01])|6(?:17|25|38|42|69|7[01])|7(?:17|2[569]|3[13]|6[89]|7[01]))\\d{4}"],["(?:60|8[1245])\\d{7}",[9]],["80\\d{7}",[9]],["8701\\d{5}",[9]],0,0,0,0,["8(?:3\\d\\d|86)\\d{5}"]]],"NC":["687","00","(?:050|[2-57-9]\\d\\d)\\d{3}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1.$2.$3",["[02-57-9]"]]],0,0,0,0,0,0,[["(?:2[03-9]|3[0-5]|4[1-7]|88)\\d{4}"],["(?:5[0-4]|[79]\\d|8[0-79])\\d{4}"],["050\\d{3}"],["36\\d{4}"]]],"NE":["227","00","[027-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["08"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[089]|2[013]|7[04]"]]],0,0,0,0,0,0,[["2(?:0(?:20|3[1-8]|4[13-5]|5[14]|6[14578]|7[1-578])|1(?:4[145]|5[14]|6[14-68]|7[169]|88))\\d{4}"],["(?:23|7[04]|[89]\\d)\\d{6}"],["08\\d{6}"],["09\\d{6}"]]],"NF":["672","00","[13]\\d{5}",[6],[["(\\d{2})(\\d{4})","$1 $2",["1[0-3]"]],["(\\d)(\\d{5})","$1 $2",["[13]"]]],0,0,"([0-258]\\d{4})$","3$1",0,0,[["(?:1(?:06|17|28|39)|3[0-2]\\d)\\d{3}"],["(?:14|3[58])\\d{4}"]]],"NG":["234","009","(?:[124-7]|9\\d{3})\\d{6}|[1-9]\\d{7}|[78]\\d{9,13}",[7,8,10,11,12,13,14],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["78"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]|9(?:0[3-9]|[1-9])"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[3-7]|8[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["[78]"],"0$1"],["(\\d{3})(\\d{5})(\\d{5,6})","$1 $2 $3",["[78]"],"0$1"]],"0",0,0,0,0,0,[["(?:(?:[1-356]\\d|4[02-8]|8[2-9])\\d|9(?:0[3-9]|[1-9]\\d))\\d{5}|7(?:0(?:[013-689]\\d|2[0-24-9])\\d{3,4}|[1-79]\\d{6})|(?:[12]\\d|4[147]|5[14579]|6[1578]|7[1-3578])\\d{5}",[7,8]],["(?:702[0-24-9]|8(?:01|19)[01])\\d{6}|(?:70[13-689]|8(?:0[2-9]|1[0-8])|9(?:0[1-9]|1[2356]))\\d{7}",[10]],["800\\d{7,11}",[10,11,12,13,14]],0,0,0,["700\\d{7,11}",[10,11,12,13,14]]]],"NI":["505","00","(?:1800|[25-8]\\d{3})\\d{4}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[125-8]"]]],0,0,0,0,0,0,[["2\\d{7}"],["(?:5(?:5[0-7]|[78]\\d)|6(?:20|3[035]|4[045]|5[05]|77|8[1-9]|9[059])|(?:7[5-8]|8\\d)\\d)\\d{5}"],["1800\\d{4}"]]],"NL":["31","00","(?:[124-7]\\d\\d|3(?:[02-9]\\d|1[0-8]))\\d{6}|8\\d{6,9}|9\\d{6,10}|1\\d{4,5}",[5,6,7,8,9,10,11],[["(\\d{3})(\\d{4,7})","$1 $2",["[89]0"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["66"],"0$1"],["(\\d)(\\d{8})","$1 $2",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["1[16-8]|2[259]|3[124]|4[17-9]|5[124679]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-578]|91"],"0$1"],["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3",["9"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:[035]\\d|1[13-578]|6[124-8]|7[24]|8[0-467])|2(?:[0346]\\d|2[2-46-9]|5[125]|9[479])|3(?:[03568]\\d|1[3-8]|2[01]|4[1-8])|4(?:[0356]\\d|1[1-368]|7[58]|8[15-8]|9[23579])|5(?:[0358]\\d|[19][1-9]|2[1-57-9]|4[13-8]|6[126]|7[0-3578])|7\\d\\d)\\d{6}",[9]],["(?:6[1-58]|970\\d)\\d{7}",[9,11]],["800\\d{4,7}",[7,8,9,10]],["90[069]\\d{4,7}",[7,8,9,10]],0,0,["140(?:1[035]|2[0346]|3[03568]|4[0356]|5[0358]|8[458])|(?:140(?:1[16-8]|2[259]|3[124]|4[17-9]|5[124679]|7)|8[478]\\d{6})\\d",[5,6,9]],["66\\d{7}",[9]],["(?:85|91)\\d{7}",[9]]]],"NO":["47","00","(?:0|[2-9]\\d{3})\\d{4}",[5,8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[489]|59"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[235-7]"]]],0,0,0,0,0,"[02-689]|7[0-8]",[["(?:2[1-4]|3[1-3578]|5[1-35-7]|6[1-4679]|7[0-8])\\d{6}",[8]],["(?:4[015-8]|59|9\\d)\\d{6}",[8]],["80[01]\\d{5}",[8]],["82[09]\\d{5}",[8]],["880\\d{5}",[8]],0,["(?:0[2-9]|81(?:0(?:0[7-9]|1\\d)|5\\d\\d))\\d{3}"],0,["85[0-5]\\d{5}",[8]],["810(?:0[0-6]|[2-8]\\d)\\d{3}",[8]]]],"NP":["977","00","(?:1\\d|9)\\d{9}|[1-9]\\d{7}",[8,10,11],[["(\\d)(\\d{7})","$1-$2",["1[2-6]"],"0$1"],["(\\d{2})(\\d{6})","$1-$2",["1[01]|[2-8]|9(?:[1-59]|[67][2-6])"],"0$1"],["(\\d{3})(\\d{7})","$1-$2",["9"]]],"0",0,0,0,0,0,[["(?:1[0-6]\\d|99[02-6])\\d{5}|(?:2[13-79]|3[135-8]|4[146-9]|5[135-7]|6[13-9]|7[15-9]|8[1-46-9]|9[1-7])[2-6]\\d{5}",[8]],["9(?:6[0-3]|7[024-6]|8[0-24-68])\\d{7}",[10]],["1(?:66001|800\\d\\d)\\d{5}",[11]]]],"NR":["674","00","(?:444|(?:55|8\\d)\\d|666)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[4-68]"]]],0,0,0,0,0,0,[["444\\d{4}"],["(?:55[3-9]|666|8\\d\\d)\\d{4}"]]],"NU":["683","00","(?:[47]|888\\d)\\d{3}",[4,7],[["(\\d{3})(\\d{4})","$1 $2",["8"]]],0,0,0,0,0,0,[["[47]\\d{3}",[4]],["888[4-9]\\d{3}",[7]]]],"NZ":["64","0(?:0|161)","[29]\\d{7,9}|50\\d{5}(?:\\d{2,3})?|6[0-35-9]\\d{6}|7\\d{7,8}|8\\d{4,9}|(?:11\\d|[34])\\d{7}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,8})","$1 $2",["8[1-579]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["50[036-8]|[89]0","50(?:[0367]|88)|[89]0"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["24|[346]|7[2-57-9]|9[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:10|74)|[59]|80"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1|2[028]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,5})","$1 $2 $3",["2(?:[169]|7[0-35-9])|7|86"],"0$1"]],"0",0,0,0,0,0,[["24099\\d{3}|(?:3[2-79]|[49][2-9]|6[235-9]|7[2-57-9])\\d{6}",[8]],["2[0-27-9]\\d{7,8}|21\\d{6}",[8,9,10]],["508\\d{6,7}|80\\d{6,8}",[8,9,10]],["(?:11\\d{5}|50(?:0[08]|30|66|77|88))\\d{3}|90\\d{6,8}",[7,8,9,10]],["70\\d{7}",[9]],0,["8(?:1[6-9]|22|3\\d|4[045]|5[459]|7[0-3579]|90)\\d{2,7}"],["[28]6\\d{6,7}",[8,9]]],"00"],"OM":["968","00","(?:1505|[279]\\d{3}|500)\\d{4}|800\\d{5,6}",[7,8,9],[["(\\d{3})(\\d{4,6})","$1 $2",["[58]"]],["(\\d{2})(\\d{6})","$1 $2",["2"]],["(\\d{4})(\\d{4})","$1 $2",["[179]"]]],0,0,0,0,0,0,[["2[2-6]\\d{6}",[8]],["1505\\d{4}|(?:7(?:[1289]\\d|7[0-4])|9(?:0[1-9]|[1-9]\\d))\\d{5}",[8]],["8007\\d{4,5}|(?:500|800[05])\\d{4}"],["900\\d{5}",[8]]]],"PA":["507","00","(?:00800|8\\d{3})\\d{6}|[68]\\d{7}|[1-57-9]\\d{6}",[7,8,10,11],[["(\\d{3})(\\d{4})","$1-$2",["[1-57-9]"]],["(\\d{4})(\\d{4})","$1-$2",["[68]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["(?:1(?:0\\d|1[479]|2[37]|3[0137]|4[17]|5[05]|6[58]|7[0167]|8[2358]|9[1389])|2(?:[0235-79]\\d|1[0-7]|4[013-9]|8[02-9])|3(?:[089]\\d|1[0-7]|2[0-5]|33|4[0-79]|5[0-35]|6[068]|7[0-8])|4(?:00|3[0-579]|4\\d|7[0-57-9])|5(?:[01]\\d|2[0-7]|[56]0|79)|7(?:0[09]|2[0-26-8]|3[03]|4[04]|5[05-9]|6[056]|7[0-24-9]|8[5-9]|90)|8(?:09|2[89]|3\\d|4[0-24-689]|5[014]|8[02])|9(?:0[5-9]|1[0135-8]|2[036-9]|3[35-79]|40|5[0457-9]|6[05-9]|7[04-9]|8[35-8]|9\\d))\\d{4}",[7]],["(?:1[16]1|21[89]|6\\d{3}|8(?:1[01]|7[23]))\\d{4}",[7,8]],["800\\d{4,5}|(?:00800|800\\d)\\d{6}"],["(?:8(?:22|55|60|7[78]|86)|9(?:00|81))\\d{4}",[7]]]],"PE":["51","00|19(?:1[124]|77|90)00","(?:[14-8]|9\\d)\\d{7}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["80"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["1"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[4-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"]]],"0",0,0,0,0,0,[["(?:(?:4[34]|5[14])[0-8]\\d|7(?:173|3[0-8]\\d)|8(?:10[05689]|6(?:0[06-9]|1[6-9]|29)|7(?:0[569]|[56]0)))\\d{4}|(?:1[0-8]|4[12]|5[236]|6[1-7]|7[246]|8[2-4])\\d{6}",[8]],["9\\d{8}",[9]],["800\\d{5}",[8]],["805\\d{5}",[8]],["80[24]\\d{5}",[8]],0,0,0,0,["801\\d{5}",[8]]],"00"," Anexo "],"PF":["689","00","4\\d{5}(?:\\d{2})?|8\\d{7,8}",[6,8,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["44"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4|8[7-9]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]],0,0,0,0,0,0,[["4(?:0[4-689]|9[4-68])\\d{5}",[8]],["8[7-9]\\d{6}",[8]],["80[0-5]\\d{6}",[9]],0,0,0,["44\\d{4}",[6]],0,["499\\d{5}",[8]]]],"PG":["675","00|140[1-3]","(?:180|[78]\\d{3})\\d{4}|(?:[2-589]\\d|64)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["18|[2-69]|85"]],["(\\d{4})(\\d{4})","$1 $2",["[78]"]]],0,0,0,0,0,0,[["(?:(?:3[0-2]|4[257]|5[34]|9[78])\\d|64[1-9]|85[02-46-9])\\d{4}",[7]],["(?:7\\d|8[128])\\d{6}",[8]],["180\\d{4}",[7]],0,0,0,0,["27[01]\\d{4}",[7]],["2(?:0[0-57]|7[568])\\d{4}",[7]]],"00"],"PH":["63","00","(?:[2-7]|9\\d)\\d{8}|2\\d{5}|(?:1800|8)\\d{7,9}",[6,8,9,10,11,12,13],[["(\\d)(\\d{5})","$1 $2",["2"],"(0$1)"],["(\\d{4})(\\d{4,6})","$1 $2",["3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2","3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))"],"(0$1)"],["(\\d{5})(\\d{4})","$1 $2",["346|4(?:27|9[35])|883","3469|4(?:279|9(?:30|56))|8834"],"(0$1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3-7]|8[2-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{4})(\\d{1,2})(\\d{3})(\\d{4})","$1 $2 $3 $4",["1"]]],"0",0,0,0,0,0,[["(?:(?:2[3-8]|3[2-68]|4[2-9]|5[2-6]|6[2-58]|7[24578])\\d{3}|88(?:22\\d\\d|42))\\d{4}|(?:2|8[2-8]\\d\\d)\\d{5}",[6,8,9,10]],["(?:8(?:1[37]|9[5-8])|9(?:0[5-9]|1[0-24-9]|[235-7]\\d|4[2-9]|8[135-9]|9[1-9]))\\d{7}",[10]],["1800\\d{7,9}",[11,12,13]]]],"PK":["92","00","122\\d{6}|[24-8]\\d{10,11}|9(?:[013-9]\\d{8,10}|2(?:[01]\\d\\d|2(?:[06-8]\\d|1[01]))\\d{7})|(?:[2-8]\\d{3}|92(?:[0-7]\\d|8[1-9]))\\d{6}|[24-9]\\d{8}|[89]\\d{7}",[8,9,10,11,12],[["(\\d{3})(\\d{3})(\\d{2,7})","$1 $2 $3",["[89]0"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["1"]],["(\\d{3})(\\d{6,7})","$1 $2",["2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])","9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]"],"(0$1)"],["(\\d{2})(\\d{7,8})","$1 $2",["(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]"],"(0$1)"],["(\\d{5})(\\d{5})","$1 $2",["58"],"(0$1)"],["(\\d{3})(\\d{7})","$1 $2",["3"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[24-9]"],"(0$1)"]],"0",0,0,0,0,0,[["(?:(?:21|42)[2-9]|58[126])\\d{7}|(?:2[25]|4[0146-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\\d{6,7}|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8]))[2-9]\\d{5,6}",[9,10]],["3(?:[0-24]\\d|3[0-7]|55|64)\\d{7}",[10]],["800\\d{5}(?:\\d{3})?",[8,11]],["900\\d{5}",[8]],["122\\d{6}",[9]],0,["(?:2(?:[125]|3[2358]|4[2-4]|9[2-8])|4(?:[0-246-9]|5[3479])|5(?:[1-35-7]|4[2-467])|6(?:0[468]|[1-8])|7(?:[14]|2[236])|8(?:[16]|2[2-689]|3[23578]|4[3478]|5[2356])|9(?:1|22|3[27-9]|4[2-6]|6[3569]|9[2-7]))111\\d{6}",[11,12]]]],"PL":["48","00","(?:6|8\\d\\d)\\d{7}|[1-9]\\d{6}(?:\\d{2})?|[26]\\d{5}",[6,7,8,9,10],[["(\\d{5})","$1",["19"]],["(\\d{3})(\\d{3})","$1 $2",["11|20|64"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1","(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19"]],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["64"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[2-8]|[2-7]|8[1-79]|9[145]"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["47\\d{7}|(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])(?:[02-9]\\d{6}|1(?:[0-8]\\d{5}|9\\d{3}(?:\\d{2})?))",[7,9]],["21(?:1(?:[145]\\d|3[1-5])|2[0-4]\\d)\\d{4}|(?:45|5[0137]|6[069]|7[2389]|88)\\d{7}",[9]],["800\\d{6,7}",[9,10]],["70[01346-8]\\d{6}",[9]],0,0,["804\\d{6}",[9]],["64\\d{4,7}",[6,7,8,9]],["39\\d{7}",[9]],["801\\d{6}",[9]]]],"PM":["508","00","(?:[45]|80\\d\\d)\\d{5}",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[45]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["(?:4[1-356]|50)\\d{4}",[6]],["(?:4[02-4]|5[056])\\d{4}",[6]],["80[0-5]\\d{6}",[9]]]],"PR":["1","011","(?:[589]\\d\\d|787)\\d{7}",[10],0,"1",0,0,0,0,"787|939",[["(?:787|939)[2-9]\\d{6}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"PS":["970","00","[2489]2\\d{6}|(?:1\\d|5)\\d{8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2489]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["5"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[["(?:22[2-47-9]|42[45]|82[014-68]|92[3569])\\d{5}",[8]],["5[69]\\d{7}",[9]],["1800\\d{6}",[10]],0,0,0,0,0,0,["1700\\d{6}",[10]]]],"PT":["351","00","1693\\d{5}|(?:[26-9]\\d|30)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["2[12]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["16|[236-9]"]]],0,0,0,0,0,0,[["2(?:[12]\\d|3[1-689]|4[1-59]|[57][1-9]|6[1-35689]|8[1-69]|9[1256])\\d{6}"],["6(?:[06]92(?:30|9\\d)|[35]92(?:3[03]|9\\d))\\d{3}|(?:(?:16|6[0356])93|9(?:[1-36]\\d\\d|480))\\d{5}"],["80[02]\\d{6}"],["(?:6(?:0[178]|4[68])\\d|76(?:0[1-57]|1[2-47]|2[237]))\\d{5}"],["884[0-4689]\\d{5}"],0,["70(?:7\\d|8[17])\\d{5}"],["6222\\d{5}"],["30\\d{7}"],["80(?:8\\d|9[1579])\\d{5}"]]],"PW":["680","01[12]","(?:[24-8]\\d\\d|345|900)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]],0,0,0,0,0,0,[["(?:2(?:55|77)|345|488|5(?:35|44|87)|6(?:22|54|79)|7(?:33|47)|8(?:24|55|76)|900)\\d{4}"],["(?:(?:46|83)[0-5]|6[2-4689]0)\\d{4}|(?:45|77|88)\\d{5}"]]],"PY":["595","00","59\\d{4,6}|9\\d{5,10}|(?:[2-46-8]\\d|5[0-8])\\d{4,7}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3,6})","$1 $2",["[2-9]0"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]"],"(0$1)"],["(\\d{3})(\\d{4,5})","$1 $2",["2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["87"]],["(\\d{3})(\\d{6})","$1 $2",["9(?:[5-79]|8[1-6])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["9"]]],"0",0,0,0,0,0,[["(?:[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36])\\d{5,7}|(?:2(?:2[4-68]|[4-68]\\d|7[15]|9[1-5])|3(?:18|3[167]|4[2357]|51|[67]\\d)|4(?:3[12]|5[13]|9[1-47])|5(?:[1-4]\\d|5[02-4])|6(?:3[1-3]|44|7[1-8])|7(?:4[0-4]|5\\d|6[1-578]|75|8[0-8])|858)\\d{5,6}",[7,8,9]],["9(?:51|6[129]|[78][1-6]|9[1-5])\\d{6}",[9]],["9800\\d{5,7}",[9,10,11]],0,0,0,["[2-9]0\\d{4,7}",[6,7,8,9]],0,["8700[0-4]\\d{4}",[9]]]],"QA":["974","00","[2-7]\\d{7}|800\\d{4}(?:\\d{2})?|2\\d{6}",[7,8,9],[["(\\d{3})(\\d{4})","$1 $2",["2[126]|8"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]]],0,0,0,0,0,0,[["414[1-4]\\d{4}|(?:23|4[04])\\d{6}",[8]],["(?:2[89]|[35-7]\\d)\\d{6}",[8]],["800\\d{4}(?:\\d{2})?",[7,9]],0,0,0,0,["2(?:[12]\\d|61)\\d{4}",[7]]]],"RE":["262","00","976\\d{6}|(?:26|[68]\\d)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2689]"],"0$1"]],"0",0,0,0,0,"26[23]|69|[89]",[["26(?:2\\d\\d|3(?:0\\d|1[01]))\\d{4}"],["(?:69(?:2\\d\\d|3(?:0[0-46]|1[013]|2[0-2]|3[0-39]|4\\d|5[0-5]|6[0-6]|7[0-27]|8[0-8]|9[0-479]))|976(?:2[27]|3[0-37]|9\\d))\\d{4}"],["80\\d{7}"],["89[1-37-9]\\d{6}"],0,0,0,0,0,["8(?:1[019]|2[0156]|84|90)\\d{6}"]]],"RO":["40","00","(?:[2378]\\d|90)\\d{7}|[23]\\d{5}",[6,9],[["(\\d{3})(\\d{3})","$1 $2",["2[3-6]","2[3-6]\\d9"],"0$1"],["(\\d{2})(\\d{4})","$1 $2",["219|31"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[23]1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[237-9]"],"0$1"]],"0",0,0,0,0,0,[["[23][13-6]\\d{7}|(?:2(?:19\\d|[3-6]\\d9)|31\\d\\d)\\d\\d"],["7020\\d{5}|7(?:0[013-9]|1[0-3]|[2-7]\\d|8[03-8]|9[019])\\d{6}",[9]],["800\\d{6}",[9]],["90[0136]\\d{6}",[9]],0,0,["(?:37\\d|80[578])\\d{6}",[9]],0,0,["801\\d{6}",[9]]],0," int "],"RS":["381","00","38[02-9]\\d{6,9}|6\\d{7,9}|90\\d{4,8}|38\\d{5,6}|(?:7\\d\\d|800)\\d{3,9}|(?:[12]\\d|3[0-79])\\d{5,10}",[6,7,8,9,10,11,12],[["(\\d{3})(\\d{3,9})","$1 $2",["(?:2[389]|39)0|[7-9]"],"0$1"],["(\\d{2})(\\d{5,10})","$1 $2",["[1-36]"],"0$1"]],"0",0,0,0,0,0,[["(?:11[1-9]\\d|(?:2[389]|39)(?:0[2-9]|[2-9]\\d))\\d{3,8}|(?:1[02-9]|2[0-24-7]|3[0-8])[2-9]\\d{4,9}",[7,8,9,10,11,12]],["6(?:[0-689]|7\\d)\\d{6,7}",[8,9,10]],["800\\d{3,9}"],["(?:78\\d|90[0169])\\d{3,7}",[6,7,8,9,10]],0,0,["7[06]\\d{4,10}"]]],"RU":["7","810","8\\d{13}|[347-9]\\d{9}",[10,14],[["(\\d{4})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-8]|2[1-9])","7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))","7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2"],"8 ($1)",1],["(\\d{5})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-68]|2[1-9])","7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))","7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[349]|8(?:[02-7]|1[1-8])"],"8 ($1)",1],["(\\d{4})(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3 $4",["8"],"8 ($1)"]],"8",0,0,0,0,"3[04-689]|[489]",[["(?:3(?:0[12]|4[1-35-79]|5[1-3]|65|8[1-58]|9[0145])|4(?:01|1[1356]|2[13467]|7[1-5]|8[1-7]|9[1-689])|8(?:1[1-8]|2[01]|3[13-6]|4[0-8]|5[15]|6[1-35-79]|7[1-37-9]))\\d{7}",[10]],["9\\d{9}",[10]],["8(?:0[04]|108\\d{3})\\d{7}"],["80[39]\\d{7}",[10]],["808\\d{7}",[10]]],"8~10"],"RW":["250","00","(?:06|[27]\\d\\d|[89]00)\\d{6}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"]]],"0",0,0,0,0,0,[["(?:06|2[23568]\\d)\\d{6}"],["7[2389]\\d{7}",[9]],["800\\d{6}",[9]],["900\\d{6}",[9]]]],"SA":["966","00","92\\d{7}|(?:[15]|8\\d)\\d{8}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["9"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["81"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]],"0",0,0,0,0,0,[["1(?:1\\d|2[24-8]|3[35-8]|4[3-68]|6[2-5]|7[235-7])\\d{6}",[9]],["579[01]\\d{5}|5(?:[013-689]\\d|7[0-35-8])\\d{6}",[9]],["800\\d{7}",[10]],["925\\d{6}",[9]],0,0,["811\\d{7}",[10]],0,0,["920\\d{6}",[9]]]],"SB":["677","0[01]","(?:[1-6]|[7-9]\\d\\d)\\d{4}",[5,7],[["(\\d{2})(\\d{5})","$1 $2",["7|8[4-9]|9(?:[1-8]|9[0-8])"]]],0,0,0,0,0,0,[["(?:1[4-79]|[23]\\d|4[0-2]|5[03]|6[0-37])\\d{3}",[5]],["48\\d{3}|(?:(?:7[1-9]|8[4-9])\\d|9(?:1[2-9]|2[013-9]|3[0-2]|[46]\\d|5[0-46-9]|7[0-689]|8[0-79]|9[0-8]))\\d{4}"],["1[38]\\d{3}",[5]],0,0,0,0,0,["5[12]\\d{3}",[5]]]],"SC":["248","010|0[0-2]","800\\d{4}|(?:[249]\\d|64)\\d{5}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[246]|9[57]"]]],0,0,0,0,0,0,[["4[2-46]\\d{5}"],["2[125-8]\\d{5}"],["800[08]\\d{3}"],0,0,0,0,0,["971\\d{4}|(?:64|95)\\d{5}"]],"00"],"SD":["249","00","[19]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[19]"],"0$1"]],"0",0,0,0,0,0,[["1(?:5\\d|8[35-7])\\d{6}"],["(?:1[0-2]|9[0-3569])\\d{7}"]]],"SE":["46","00","(?:[26]\\d\\d|9)\\d{9}|[1-9]\\d{8}|[1-689]\\d{7}|[1-4689]\\d{6}|2\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{2,3})(\\d{2})","$1-$2 $3",["20"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{4})","$1-$2",["9(?:00|39|44|9)"],"0$1",0,"$1 $2"],["(\\d{2})(\\d{3})(\\d{2})","$1-$2 $3",["[12][136]|3[356]|4[0246]|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3"],["(\\d)(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2,3})(\\d{2})","$1-$2 $3",["1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{2,3})(\\d{3})","$1-$2 $3",["9(?:00|39|44)"],"0$1",0,"$1 $2 $3"],["(\\d{2})(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3 $4"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["10|7"],"0$1",0,"$1 $2 $3 $4"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1-$2 $3 $4",["[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{3})","$1-$2 $3 $4",["9"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4 $5",["[26]"],"0$1",0,"$1 $2 $3 $4 $5"]],"0",0,0,0,0,0,[["(?:(?:[12][136]|3[356]|4[0246]|6[03]|8\\d)\\d|90[1-9])\\d{4,6}|(?:1(?:2[0-35]|4[0-4]|5[0-25-9]|7[13-6]|[89]\\d)|2(?:2[0-7]|4[0136-8]|5[0138]|7[018]|8[01]|9[0-57])|3(?:0[0-4]|1\\d|2[0-25]|4[056]|7[0-2]|8[0-3]|9[023])|4(?:1[013-8]|3[0135]|5[14-79]|7[0-246-9]|8[0156]|9[0-689])|5(?:0[0-6]|[15][0-5]|2[0-68]|3[0-4]|4\\d|6[03-5]|7[013]|8[0-79]|9[01])|6(?:1[1-3]|2[0-4]|4[02-57]|5[0-37]|6[0-3]|7[0-2]|8[0247]|9[0-356])|9(?:1[0-68]|2\\d|3[02-5]|4[0-3]|5[0-4]|[68][01]|7[0135-8]))\\d{5,6}",[7,8,9]],["7[02369]\\d{7}",[9]],["20\\d{4,7}",[6,7,8,9]],["649\\d{6}|99[1-59]\\d{4}(?:\\d{3})?|9(?:00|39|44)[1-8]\\d{3,6}",[7,8,9,10]],["75[1-8]\\d{6}",[9]],0,["10[1-8]\\d{6}",[9]],["74[02-9]\\d{6}",[9]],0,["77[0-7]\\d{6}",[9]]]],"SG":["65","0[0-3]\\d","(?:(?:1\\d|8)\\d\\d|7000)\\d{7}|[3689]\\d{7}",[8,10,11],[["(\\d{4})(\\d{4})","$1 $2",["[369]|8(?:0[1-5]|[1-9])"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]],["(\\d{4})(\\d{4})(\\d{3})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[["662[0-24-9]\\d{4}|6(?:[0-578]\\d|6[013-57-9]|9[0-35-9])\\d{5}",[8]],["8(?:05[0-7]|95[0-2])\\d{4}|(?:8(?:0[1-4]|[1-8]\\d|9[0-4])|9[0-8]\\d)\\d{5}",[8]],["(?:18|8)00\\d{7}",[10,11]],["1900\\d{7}",[11]],0,0,["7000\\d{7}",[11]],0,["(?:3[12]\\d|666)\\d{5}",[8]]]],"SH":["290","00","(?:[256]\\d|8)\\d{3}",[4,5],0,0,0,0,0,0,"[256]",[["2(?:[0-57-9]\\d|6[4-9])\\d\\d"],["[56]\\d{4}",[5]],0,0,0,0,0,0,["262\\d\\d",[5]]]],"SI":["386","00|10(?:22|66|88|99)","[1-7]\\d{7}|8\\d{4,7}|90\\d{4,6}",[5,6,7,8],[["(\\d{2})(\\d{3,6})","$1 $2",["8[09]|9"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["59|8"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37][01]|4[0139]|51|6"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-57]"],"(0$1)"]],"0",0,0,0,0,0,[["(?:[1-357][2-8]|4[24-8])\\d{6}",[8]],["65(?:1\\d|55|6[01]|70)\\d{4}|(?:[37][01]|4[0139]|51|6[489])\\d{6}",[8]],["80\\d{4,6}",[6,7,8]],["89[1-3]\\d{2,5}|90\\d{4,6}"],0,0,0,0,["(?:59\\d\\d|8(?:1(?:[67]\\d|8[0-589])|2(?:0\\d|2[0-37-9]|8[0-2489])|3[389]\\d))\\d{4}",[8]]],"00"],"SJ":["47","00","0\\d{4}|(?:[489]\\d|[57]9)\\d{6}",[5,8],0,0,0,0,0,0,"79",[["79\\d{6}",[8]],["(?:4[015-8]|59|9\\d)\\d{6}",[8]],["80[01]\\d{5}",[8]],["82[09]\\d{5}",[8]],["880\\d{5}",[8]],0,["(?:0[2-9]|81(?:0(?:0[7-9]|1\\d)|5\\d\\d))\\d{3}"],0,["85[0-5]\\d{5}",[8]],["810(?:0[0-6]|[2-8]\\d)\\d{3}",[8]]]],"SK":["421","00","[2-689]\\d{8}|[2-59]\\d{6}|[2-5]\\d{5}",[6,7,9],[["(\\d)(\\d{2})(\\d{3,4})","$1 $2 $3",["21"],"0$1"],["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["[3-5][1-8]1","[3-5][1-8]1[67]"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1/$2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[689]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1/$2 $3 $4",["[3-5]"],"0$1"]],"0",0,0,0,0,0,[["(?:2(?:16|[2-9]\\d{3})|(?:(?:[3-5][1-8]\\d|819)\\d|601[1-5])\\d)\\d{4}|(?:2|[3-5][1-8])1[67]\\d{3}|[3-5][1-8]16\\d\\d"],["909[1-9]\\d{5}|9(?:0[1-8]|1[0-24-9]|4[03-57-9]|5\\d)\\d{6}",[9]],["800\\d{6}",[9]],["9(?:00|[78]\\d)\\d{6}",[9]],0,0,["96\\d{7}",[9]],["9090\\d{3}",[7]],["6(?:02|5[0-4]|9[0-6])\\d{6}",[9]],["8[5-9]\\d{7}",[9]]]],"SL":["232","00","(?:[237-9]\\d|66)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[236-9]"],"(0$1)"]],"0",0,0,0,0,0,[["22[2-4][2-9]\\d{4}"],["(?:25|3[0-5]|66|7[2-9]|8[08]|9[09])\\d{6}"]]],"SM":["378","00","(?:0549|[5-7]\\d)\\d{6}",[8,10],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-7]"]],["(\\d{4})(\\d{6})","$1 $2",["0"]]],0,0,"([89]\\d{5})$","0549$1",0,0,[["0549(?:8[0157-9]|9\\d)\\d{4}",[10]],["6[16]\\d{6}",[8]],0,["7[178]\\d{6}",[8]],0,0,0,0,["5[158]\\d{6}",[8]]]],"SN":["221","00","(?:[378]\\d|93)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[379]"]]],0,0,0,0,0,0,[["3(?:0(?:1[0-2]|80)|282|3(?:8[1-9]|9[3-9])|611)\\d{5}"],["7(?:(?:[06-8]\\d|21|90)\\d|5(?:01|[19]0|25|[38]3|[4-7]\\d))\\d{5}"],["800\\d{6}"],["88[4689]\\d{6}"],0,0,0,0,["(?:3(?:392|9[01]\\d)\\d|93(?:3[13]0|929))\\d{4}"],["81[02468]\\d{6}"]]],"SO":["252","00","[346-9]\\d{8}|[12679]\\d{7}|[1-5]\\d{6}|[1348]\\d{5}",[6,7,8,9],[["(\\d{2})(\\d{4})","$1 $2",["8[125]"]],["(\\d{6})","$1",["[134]"]],["(\\d)(\\d{6})","$1 $2",["[15]|2[0-79]|3[0-46-8]|4[0-7]"]],["(\\d)(\\d{7})","$1 $2",["24|[67]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3478]|64|90"]],["(\\d{2})(\\d{5,7})","$1 $2",["1|28|6(?:0[5-7]|[1-35-9])|9[2-9]"]]],"0",0,0,0,0,0,[["(?:1\\d|2[0-79]|3[0-46-8]|4[0-7]|5[57-9])\\d{5}|(?:[134]\\d|8[125])\\d{4}",[6,7]],["(?:(?:15|(?:3[59]|4[89]|79|8[08])\\d|6(?:0[5-7]|[1-9]\\d)|9(?:0\\d|[2-9]))\\d|2(?:4\\d|8))\\d{5}|[67]\\d{7}",[7,8,9]]]],"SR":["597","00","(?:[2-5]|68|[78]\\d)\\d{5}",[6,7],[["(\\d{2})(\\d{2})(\\d{2})","$1-$2-$3",["56"]],["(\\d{3})(\\d{3})","$1-$2",["[2-5]"]],["(\\d{3})(\\d{4})","$1-$2",["[6-8]"]]],0,0,0,0,0,0,[["(?:2[1-3]|3[0-7]|(?:4|68)\\d|5[2-58])\\d{4}"],["(?:7[124-7]|8[124-9])\\d{5}",[7]],0,0,0,0,0,0,["56\\d{4}",[6]]]],"SS":["211","00","[19]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[19]"],"0$1"]],"0",0,0,0,0,0,[["1[89]\\d{7}"],["(?:12|9[1257-9])\\d{7}"]]],"ST":["239","00","(?:22|9\\d)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[29]"]]],0,0,0,0,0,0,[["22\\d{5}"],["900[5-9]\\d{3}|9(?:0[1-9]|[89]\\d)\\d{4}"]]],"SV":["503","00","[267]\\d{7}|[89]00\\d{4}(?:\\d{4})?",[7,8,11],[["(\\d{3})(\\d{4})","$1 $2",["[89]"]],["(\\d{4})(\\d{4})","$1 $2",["[267]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[89]"]]],0,0,0,0,0,0,[["2(?:[1-6]\\d{3}|[79]90[034]|890[0245])\\d{3}",[8]],["66(?:[02-9]\\d\\d|1(?:[02-9]\\d|16))\\d{3}|(?:6[0-57-9]|7\\d)\\d{6}",[8]],["800\\d{4}(?:\\d{4})?",[7,11]],["900\\d{4}(?:\\d{4})?",[7,11]]]],"SX":["1","011","7215\\d{6}|(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|(5\\d{6})$","721$1",0,"721",[["7215(?:4[2-8]|8[239]|9[056])\\d{4}"],["7215(?:1[02]|2\\d|5[034679]|8[014-8])\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"SY":["963","00","[1-39]\\d{8}|[1-5]\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-5]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1",1]],"0",0,0,0,0,0,[["21\\d{6,7}|(?:1(?:[14]\\d|[2356])|2[235]|3(?:[13]\\d|4)|4[134]|5[1-3])\\d{6}"],["9[1-689]\\d{7}",[9]]]],"SZ":["268","00","0800\\d{4}|(?:[237]\\d|900)\\d{6}",[8,9],[["(\\d{4})(\\d{4})","$1 $2",["[0237]"]],["(\\d{5})(\\d{4})","$1 $2",["9"]]],0,0,0,0,0,0,[["[23][2-5]\\d{6}",[8]],["7[6-9]\\d{6}",[8]],["0800\\d{4}",[8]],["900\\d{6}",[9]],0,0,0,0,["70\\d{6}",[8]]]],"TA":["290","00","8\\d{3}",[4],0,0,0,0,0,0,"8",[["8\\d{3}"]]],"TC":["1","011","(?:[58]\\d\\d|649|900)\\d{7}",[10],0,"1",0,"1|([2-479]\\d{6})$","649$1",0,"649",[["649(?:266|712|9(?:4\\d|50))\\d{4}"],["649(?:2(?:3[129]|4[1-79])|3\\d\\d|4[34][1-3])\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,0,0,["649(?:71[01]|966)\\d{4}"]]],"TD":["235","00|16","(?:22|[69]\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2679]"]]],0,0,0,0,0,0,[["22(?:[37-9]0|5[0-5]|6[89])\\d{4}"],["(?:6[023568]|77|9\\d)\\d{6}"]],"00"],"TG":["228","00","[279]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[279]"]]],0,0,0,0,0,0,[["2(?:2[2-7]|3[23]|4[45]|55|6[67]|77)\\d{5}"],["(?:7[09]|9[0-36-9])\\d{6}"]]],"TH":["66","00[1-9]","(?:001800|[2-57]|[689]\\d)\\d{7}|1\\d{7,9}",[8,9,10,13],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[13-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[["(?:1[0689]|2\\d|3[2-9]|4[2-5]|5[2-6]|7[3-7])\\d{6}",[8]],["671[0-8]\\d{5}|(?:14|6[1-6]|[89]\\d)\\d{7}",[9]],["(?:001800\\d|1800)\\d{6}",[10,13]],["1900\\d{6}",[10]],0,0,0,0,["6[08]\\d{7}",[9]]]],"TJ":["992","810","(?:00|[1-57-9]\\d)\\d{7}",[9],[["(\\d{6})(\\d)(\\d{2})","$1 $2 $3",["331","3317"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[34]7|91[78]"]],["(\\d{4})(\\d)(\\d{4})","$1 $2 $3",["3[1-5]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[0-57-9]"]]],0,0,0,0,0,0,[["(?:3(?:1[3-5]|2[245]|3[12]|4[24-7]|5[25]|72)|4(?:46|74|87))\\d{6}"],["41[18]\\d{6}|(?:[034]0|[17][017]|2[02]|5[05]|8[08]|9\\d)\\d{7}"]],"8~10"],"TK":["690","00","[2-47]\\d{3,6}",[4,5,6,7],0,0,0,0,0,0,0,[["(?:2[2-4]|[34]\\d)\\d{2,5}"],["7[2-4]\\d{2,5}"]]],"TL":["670","00","7\\d{7}|(?:[2-47]\\d|[89]0)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[2-489]|70"]],["(\\d{4})(\\d{4})","$1 $2",["7"]]],0,0,0,0,0,0,[["(?:2[1-5]|3[1-9]|4[1-4])\\d{5}",[7]],["7[2-8]\\d{6}",[8]],["80\\d{5}",[7]],["90\\d{5}",[7]],["70\\d{5}",[7]]]],"TM":["993","810","[1-6]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["12"],"(8 $1)"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-5]"],"(8 $1)"],["(\\d{2})(\\d{6})","$1 $2",["6"],"8 $1"]],"8",0,0,0,0,0,[["(?:1(?:2\\d|3[1-9])|2(?:22|4[0-35-8])|3(?:22|4[03-9])|4(?:22|3[128]|4\\d|6[15])|5(?:22|5[7-9]|6[014-689]))\\d{5}"],["6\\d{7}"]],"8~10"],"TN":["216","00","[2-57-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-57-9]"]]],0,0,0,0,0,0,[["81200\\d{3}|(?:3[0-2]|7\\d)\\d{6}"],["3(?:001|[12]40)\\d{4}|(?:(?:[259]\\d|4[0-7])\\d|3(?:1[1-35]|6[0-4]|91))\\d{5}"],["8010\\d{4}"],["88\\d{6}"],0,0,0,0,0,["8[12]10\\d{4}"]]],"TO":["676","00","(?:0800|(?:[5-8]\\d\\d|999)\\d)\\d{3}|[2-8]\\d{4}",[5,7],[["(\\d{2})(\\d{3})","$1-$2",["[2-4]|50|6[09]|7[0-24-69]|8[05]"]],["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{3})(\\d{4})","$1 $2",["[5-9]"]]],0,0,0,0,0,0,[["(?:2\\d|3[0-8]|4[0-4]|50|6[09]|7[0-24-69]|8[05])\\d{3}",[5]],["(?:55[4-6]|6(?:[09]\\d|3[02]|8[15-9])|(?:7\\d|8[46-9])\\d|999)\\d{4}",[7]],["0800\\d{3}",[7]],0,0,0,0,0,["55[0-37-9]\\d{4}",[7]]]],"TR":["90","00","4\\d{6}|8\\d{11,12}|(?:[2-58]\\d\\d|900)\\d{7}",[7,10,12,13],[["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["512|8[01589]|90"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5(?:[0-59]|61)","5(?:[0-59]|616)","5(?:[0-59]|6161)"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24][1-8]|3[1-9]"],"(0$1)",1],["(\\d{3})(\\d{3})(\\d{6,7})","$1 $2 $3",["80"],"0$1",1]],"0",0,0,0,0,0,[["(?:2(?:[13][26]|[28][2468]|[45][268]|[67][246])|3(?:[13][28]|[24-6][2468]|[78][02468]|92)|4(?:[16][246]|[23578][2468]|4[26]))\\d{7}",[10]],["56161\\d{5}|5(?:0[15-7]|1[06]|24|[34]\\d|5[1-59]|9[46])\\d{7}",[10]],["8(?:00\\d{7}(?:\\d{2,3})?|11\\d{7})",[10,12,13]],["(?:8[89]8|900)\\d{7}",[10]],["592(?:21[12]|461)\\d{4}",[10]],0,["444\\d{4}",[7]],["512\\d{7}",[10]],["850\\d{7}",[10]]]],"TT":["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-46-8]\\d{6})$","868$1",0,"868",[["868(?:2(?:01|1[5-9]|[23]\\d|4[0-2])|6(?:0[7-9]|1[02-8]|2[1-9]|[3-69]\\d|7[0-79])|82[124])\\d{4}"],["868(?:(?:2[5-9]|3\\d)\\d|4(?:3[0-6]|[6-9]\\d)|6(?:20|78|8\\d)|7(?:0[1-9]|1[02-9]|[2-9]\\d))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"TV":["688","00","(?:2|7\\d\\d|90)\\d{4}",[5,6,7],[["(\\d{2})(\\d{3})","$1 $2",["2"]],["(\\d{2})(\\d{4})","$1 $2",["90"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]],0,0,0,0,0,0,[["2[02-9]\\d{3}",[5]],["(?:7[01]\\d|90)\\d{4}",[6,7]]]],"TW":["886","0(?:0[25-79]|19)","[2-689]\\d{8}|7\\d{9,10}|[2-8]\\d{7}|2\\d{6}",[7,8,9,10,11],[["(\\d{2})(\\d)(\\d{4})","$1 $2 $3",["202"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[258]0"],"0$1"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]","[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,5})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[["(?:2[2-8]\\d|370|55[01]|7[1-9])\\d{6}|4(?:(?:0(?:0[1-9]|[2-48]\\d)|1[023]\\d)\\d{4,5}|(?:[239]\\d\\d|4(?:0[56]|12|49))\\d{5})|6(?:[01]\\d{7}|4(?:0[56]|12|24|4[09])\\d{4,5})|8(?:(?:2(?:3\\d|4[0-269]|[578]0|66)|36[24-9]|90\\d\\d)\\d{4}|4(?:0[56]|12|24|4[09])\\d{4,5})|(?:2(?:2(?:0\\d\\d|4(?:0[68]|[249]0|3[0-467]|5[0-25-9]|6[0235689]))|(?:3(?:[09]\\d|1[0-4])|(?:4\\d|5[0-49]|6[0-29]|7[0-5])\\d)\\d)|(?:(?:3[2-9]|5[2-8]|6[0-35-79]|8[7-9])\\d\\d|4(?:2(?:[089]\\d|7[1-9])|(?:3[0-4]|[78]\\d|9[01])\\d))\\d)\\d{3}",[8,9]],["(?:40001[0-2]|9[0-8]\\d{4})\\d{3}",[9]],["80[0-79]\\d{6}|800\\d{5}",[8,9]],["20(?:[013-9]\\d\\d|2)\\d{4}",[7,9]],["99\\d{7}",[9]],0,["50[0-46-9]\\d{6}",[9]],0,["7010(?:[0-2679]\\d|3[0-7]|8[0-5])\\d{5}|70\\d{8}",[10,11]]],0,"#"],"TZ":["255","00[056]","(?:[25-8]\\d|41|90)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[24]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["5"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[67]"],"0$1"]],"0",0,0,0,0,0,[["2[2-8]\\d{7}"],["77[2-9]\\d{6}|(?:6[125-9]|7[13-689])\\d{7}"],["80[08]\\d{6}"],["90\\d{7}"],0,0,0,0,["41\\d{7}"],["8(?:40|6[01])\\d{6}"]]],"UA":["380","00","[89]\\d{9}|[3-9]\\d{8}",[9,10],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]","6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])","3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3-7]|89|9[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,[["(?:3[1-8]|4[13-8]|5[1-7]|6[12459])\\d{7}",[9]],["(?:39|50|6[36-8]|7[1-3]|9[1-9])\\d{7}",[9]],["800[1-8]\\d{5,6}"],["900[239]\\d{5,6}"],0,0,0,0,["89[1-579]\\d{6}",[9]]],"0~0"],"UG":["256","00[057]","800\\d{6}|(?:[29]0|[347]\\d)\\d{7}",[9],[["(\\d{4})(\\d{5})","$1 $2",["202","2024"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[27-9]|4(?:6[45]|[7-9])"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[34]"],"0$1"]],"0",0,0,0,0,0,[["20(?:(?:240|30[67])\\d|6(?:00[0-2]|30[0-4]))\\d{3}|(?:20(?:[017]\\d|2[5-9]|32|5[0-4]|6[15-9])|[34]\\d{3})\\d{5}"],["726[01]\\d{5}|7(?:[01578]\\d|20|36|[46][0-4]|9[89])\\d{6}"],["800[1-3]\\d{5}"],["90[1-3]\\d{6}"]]],"US":["1","011","[2-9]\\d{9}|3\\d{6}",[10],[["(\\d{3})(\\d{4})","$1-$2",["310"],0,1],["(\\d{3})(\\d{3})(\\d{4})","($1) $2-$3",["[2-9]"],0,1,"$1-$2-$3"]],"1",0,0,0,0,0,[["505(?:[2-57-9]\\d\\d|6(?:[0-35-9]\\d|44))\\d{4}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[01679]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[068]|3[0-289]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-389]|8[04-69]))[2-9]\\d{6}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"UY":["598","0(?:0|1[3-9]\\d)","4\\d{9}|[1249]\\d{7}|(?:[49]\\d|80)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["405|8|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[124]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["4"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:770|987)|(?:2\\d|4[2-7])\\d\\d)\\d{4}",[8]],["9[1-9]\\d{6}",[8]],["(?:4\\d{5}|80[05])\\d{4}|405\\d{4}",[7,10]],["90[0-8]\\d{4}",[7]]],"00"," int. "],"UZ":["998","810","(?:33|55|[679]\\d|88)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[35-9]"],"8 $1"]],"8",0,0,0,0,0,[["(?:6(?:1(?:22|3[124]|4[1-4]|5[1-3578]|64)|2(?:22|3[0-57-9]|41)|5(?:22|3[3-7]|5[024-8])|6\\d\\d|7(?:[23]\\d|7[69])|9(?:22|4[1-8]|6[135]))|7(?:0(?:5[4-9]|6[0146]|7[124-6]|9[135-8])|(?:1[12]|8\\d)\\d|2(?:22|3[13-57-9]|4[1-3579]|5[14])|3(?:2\\d|3[1578]|4[1-35-7]|5[1-57]|61)|4(?:2\\d|3[1-579]|7[1-79])|5(?:22|5[1-9]|6[1457])|6(?:22|3[12457]|4[13-8])|9(?:22|5[1-9])))\\d{5}"],["(?:(?:33|88|9[0-57-9])\\d{3}|55(?:50[013]|90\\d)|6(?:1(?:2(?:2[01]|98)|35[0-4]|50\\d|61[23]|7(?:[01][017]|4\\d|55|9[5-9]))|2(?:(?:11|7\\d)\\d|2(?:[12]1|9[01379])|5(?:[126]\\d|3[0-4]))|5(?:19[01]|2(?:27|9[26])|(?:30|59|7\\d)\\d)|6(?:2(?:1[5-9]|2[0367]|38|41|52|60)|(?:3[79]|9[0-3])\\d|4(?:56|83)|7(?:[07]\\d|1[017]|3[07]|4[047]|5[057]|67|8[0178]|9[79]))|7(?:2(?:24|3[237]|4[5-9]|7[15-8])|5(?:7[12]|8[0589])|7(?:0\\d|[39][07])|9(?:0\\d|7[079]))|9(?:2(?:1[1267]|3[01]|5\\d|7[0-4])|(?:5[67]|7\\d)\\d|6(?:2[0-26]|8\\d)))|7(?:[07]\\d{3}|1(?:13[01]|6(?:0[47]|1[67]|66)|71[3-69]|98\\d)|2(?:2(?:2[79]|95)|3(?:2[5-9]|6[0-6])|57\\d|7(?:0\\d|1[17]|2[27]|3[37]|44|5[057]|66|88))|3(?:2(?:1[0-6]|21|3[469]|7[159])|(?:33|9[4-6])\\d|5(?:0[0-4]|5[579]|9\\d)|7(?:[0-3579]\\d|4[0467]|6[67]|8[078]))|4(?:2(?:29|5[0257]|6[0-7]|7[1-57])|5(?:1[0-4]|8\\d|9[5-9])|7(?:0\\d|1[024589]|2[0-27]|3[0137]|[46][07]|5[01]|7[5-9]|9[079])|9(?:7[015-9]|[89]\\d))|5(?:112|2(?:0\\d|2[29]|[49]4)|3[1568]\\d|52[6-9]|7(?:0[01578]|1[017]|[23]7|4[047]|[5-7]\\d|8[78]|9[079]))|6(?:2(?:2[1245]|4[2-4])|39\\d|41[179]|5(?:[349]\\d|5[0-2])|7(?:0[017]|[13]\\d|22|44|55|67|88))|9(?:22[128]|3(?:2[0-4]|7\\d)|57[02569]|7(?:2[05-9]|3[37]|4\\d|60|7[2579]|87|9[07]))))\\d{4}"]],"8~10"],"VA":["39","00","0\\d{5,10}|3[0-8]\\d{7,10}|55\\d{8}|8\\d{5}(?:\\d{2,4})?|(?:1\\d|39)\\d{7,8}",[6,7,8,9,10,11],0,0,0,0,0,0,"06698",[["06698\\d{1,6}"],["3[1-9]\\d{8}|3[2-9]\\d{7}",[9,10]],["80(?:0\\d{3}|3)\\d{3}",[6,9]],["(?:0878\\d{3}|89(?:2\\d|3[04]|4(?:[0-4]|[5-9]\\d\\d)|5[0-4]))\\d\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\d{6}",[6,8,9,10]],["1(?:78\\d|99)\\d{6}",[9,10]],0,0,0,["55\\d{8}",[10]],["84(?:[08]\\d{3}|[17])\\d{3}",[6,9]]]],"VC":["1","011","(?:[58]\\d\\d|784|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","784$1",0,"784",[["784(?:266|3(?:6[6-9]|7\\d|8[0-6])|4(?:38|5[0-36-8]|8[0-8])|5(?:55|7[0-2]|93)|638|784)\\d{4}"],["784(?:4(?:3[0-5]|5[45]|89|9[0-8])|5(?:2[6-9]|3[0-4])|720)\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,0,0,["78451[0-2]\\d{4}"]]],"VE":["58","00","[68]00\\d{7}|(?:[24]\\d|[59]0)\\d{8}",[10],[["(\\d{3})(\\d{7})","$1-$2",["[24-689]"],"0$1"]],"0",0,0,0,0,0,[["(?:2(?:12|3[457-9]|[467]\\d|[58][1-9]|9[1-6])|[4-6]00)\\d{7}"],["4(?:1[24-8]|2[46])\\d{7}"],["800\\d{7}"],["90[01]\\d{7}"],0,0,["501\\d{7}"]]],"VG":["1","011","(?:284|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-578]\\d{6})$","284$1",0,"284",[["284496[0-5]\\d{3}|284(?:229|4(?:22|9[45])|774|8(?:52|6[459]))\\d{4}"],["284496[6-9]\\d{3}|284(?:245|3(?:0[0-3]|4[0-7]|68|9[34])|4(?:4[0-6]|68|99)|5(?:4[0-7]|68|9[69]))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"VI":["1","011","[58]\\d{9}|(?:34|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","340$1",0,"340",[["340(?:2(?:0[0-38]|2[06-8]|4[49]|77)|3(?:32|44)|4(?:2[23]|44|7[34]|89)|5(?:1[34]|55)|6(?:2[56]|4[23]|77|9[023])|7(?:1[2-57-9]|2[57]|7\\d)|884|998)\\d{4}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"VN":["84","00","[12]\\d{9}|[135-9]\\d{8}|[16]\\d{7}|[16-8]\\d{6}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["80"],"0$1",1],["(\\d{4})(\\d{4,6})","$1 $2",["1"],0,1],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[69]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3578]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["2[48]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["2"],"0$1",1]],"0",0,0,0,0,0,[["2(?:0[3-9]|1[0-689]|2[0-25-9]|3[2-9]|4[2-8]|5[124-9]|6[0-39]|7[0-7]|8[2-79]|9[0-4679])\\d{7}",[10]],["(?:5(?:2[238]|59)|89[6-9]|99[013-9])\\d{6}|(?:3\\d|5[689]|7[06-9]|8[1-8]|9[0-8])\\d{7}",[9]],["1800\\d{4,6}|12(?:0[13]|28)\\d{4}",[8,9,10]],["1900\\d{4,6}",[8,9,10]],0,0,["(?:[17]99|80\\d)\\d{4}|69\\d{5,6}",[7,8]],0,["672\\d{6}",[9]]]],"VU":["678","00","[57-9]\\d{6}|(?:[238]\\d|48)\\d{3}",[5,7],[["(\\d{3})(\\d{4})","$1 $2",["[57-9]"]]],0,0,0,0,0,0,[["(?:38[0-8]|48[4-9])\\d\\d|(?:2[02-9]|3[4-7]|88)\\d{3}",[5]],["(?:[58]\\d|7[013-7])\\d{5}",[7]],["81[18]\\d\\d",[5]],0,0,0,["(?:3[03]|900\\d)\\d{3}"],0,["9(?:0[1-9]|1[01])\\d{4}",[7]]]],"WF":["681","00","(?:40|72)\\d{4}|8\\d{5}(?:\\d{3})?",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[478]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]],0,0,0,0,0,0,[["72\\d{4}",[6]],["(?:72|8[23])\\d{4}",[6]],["80[0-5]\\d{6}",[9]]]],"WS":["685","0","(?:[2-6]|8\\d{5})\\d{4}|[78]\\d{6}|[68]\\d{5}",[5,6,7,10],[["(\\d{5})","$1",["[2-5]|6[1-9]"]],["(\\d{3})(\\d{3,7})","$1 $2",["[68]"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]],0,0,0,0,0,0,[["6[1-9]\\d{3}|(?:[2-5]|60)\\d{4}",[5,6]],["(?:7[1-35-7]|8(?:[3-7]|9\\d{3}))\\d{5}",[7,10]],["800\\d{3}",[6]]]],"XK":["383","00","[23]\\d{7,8}|(?:4\\d\\d|[89]00)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[23]"],"0$1"]],"0",0,0,0,0,0,[["(?:2[89]|39)0\\d{6}|[23][89]\\d{6}"],["4[3-9]\\d{6}",[8]],["800\\d{5}",[8]],["900\\d{5}",[8]]]],"YE":["967","00","(?:1|7\\d)\\d{7}|[1-7]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-6]|7[24-68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[["78[0-7]\\d{4}|17\\d{6}|(?:[12][2-68]|3[2358]|4[2-58]|5[2-6]|6[3-58]|7[24-6])\\d{5}",[7,8]],["7[0137]\\d{7}",[9]]]],"YT":["262","00","80\\d{7}|(?:26|63)9\\d{6}",[9],0,"0",0,0,0,0,"269|63",[["269(?:0[0-367]|5[0-3]|6\\d|[78]0)\\d{4}"],["639(?:0[0-79]|1[019]|[267]\\d|3[09]|40|5[05-9]|9[04-79])\\d{4}"],["80\\d{7}"]]],"ZA":["27","00","[1-79]\\d{8}|8\\d{4,9}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,4})","$1 $2",["8[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["8[1-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["860"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0",0,0,0,0,0,[["(?:2(?:0330|4302)|52087)0\\d{3}|(?:1[0-8]|2[1-378]|3[1-69]|4\\d|5[1346-8])\\d{7}",[9]],["(?:1(?:3492[0-25]|4495[0235]|549(?:20|5[01]))|4[34]492[01])\\d{3}|8[1-4]\\d{3,7}|(?:2[27]|47|54)4950\\d{3}|(?:1(?:049[2-4]|9[12]\\d\\d)|(?:6\\d|7[0-46-9])\\d{3}|8(?:5\\d{3}|7(?:08[67]|158|28[5-9]|310)))\\d{4}|(?:1[6-8]|28|3[2-69]|4[025689]|5[36-8])4920\\d{3}|(?:12|[2-5]1)492\\d{4}",[5,6,7,8,9]],["80\\d{7}",[9]],["(?:86[2-9]|9[0-2]\\d)\\d{6}",[9]],0,0,["861\\d{6,7}",[9,10]],0,["87(?:08[0-589]|15[0-79]|28[0-4]|31[1-9])\\d{4}|87(?:[02][0-79]|1[0-46-9]|3[02-9]|[4-9]\\d)\\d{5}",[9]],["860\\d{6}",[9]]]],"ZM":["260","00","800\\d{6}|(?:21|63|[79]\\d)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[28]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[79]"],"0$1"]],"0",0,0,0,0,0,[["21[1-8]\\d{6}"],["(?:7[5-79]|9[5-8])\\d{7}"],["800\\d{6}"],0,0,0,0,0,["63\\d{7}"]]],"ZW":["263","00","2(?:[0-57-9]\\d{6,8}|6[0-24-9]\\d{6,7})|[38]\\d{9}|[35-8]\\d{8}|[3-6]\\d{7}|[1-689]\\d{6}|[1-3569]\\d{5}|[1356]\\d{4}",[5,6,7,8,9,10],[["(\\d{3})(\\d{3,5})","$1 $2",["2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]"],"0$1"],["(\\d)(\\d{3})(\\d{2,4})","$1 $2 $3",["[49]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["80"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2","2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)","2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["29[013-9]|39|54"],"0$1"],["(\\d{4})(\\d{3,5})","$1 $2",["(?:25|54)8","258|5483"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:(?:3\\d|9)\\d|[4-8])|2(?:(?:(?:0(?:2[014]|5)|(?:2[0157]|31|84|9)\\d\\d|[56](?:[14]\\d\\d|20)|7(?:[089]|2[03]|[35]\\d\\d))\\d|4(?:2\\d\\d|8))\\d|1(?:2|[39]\\d{4}))|3(?:(?:123|(?:29\\d|92)\\d)\\d\\d|7(?:[19]|[56]\\d))|5(?:0|1[2-478]|26|[37]2|4(?:2\\d{3}|83)|5(?:25\\d\\d|[78])|[689]\\d)|6(?:(?:[16-8]21|28|52[013])\\d\\d|[39])|8(?:[1349]28|523)\\d\\d)\\d{3}|(?:4\\d\\d|9[2-9])\\d{4,5}|(?:(?:2(?:(?:(?:0|8[146])\\d|7[1-7])\\d|2(?:[278]\\d|92)|58(?:2\\d|3))|3(?:[26]|9\\d{3})|5(?:4\\d|5)\\d\\d)\\d|6(?:(?:(?:[0-246]|[78]\\d)\\d|37)\\d|5[2-8]))\\d\\d|(?:2(?:[569]\\d|8[2-57-9])|3(?:[013-59]\\d|8[37])|6[89]8)\\d{3}"],["7(?:[178]\\d|3[1-9])\\d{6}",[9]],["80(?:[01]\\d|20|8[0-8])\\d{3}",[7]],0,0,0,0,0,["86(?:1[12]|22|30|44|55|77|8[368])\\d{6}",[10]]]]},"nonGeographic":{"800":["800",0,"(?:00|[1-9]\\d)\\d{6}",[8],[["(\\d{4})(\\d{4})","$1 $2",["\\d"]]],0,0,0,0,0,0,[0,0,["(?:00|[1-9]\\d)\\d{6}"]]],"808":["808",0,"[1-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[1-9]"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,["[1-9]\\d{7}"]]],"870":["870",0,"7\\d{11}|[35-7]\\d{8}",[9,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[35-7]"]]],0,0,0,0,0,0,[0,["(?:[356]|774[45])\\d{8}|7[6-8]\\d{7}"]]],"878":["878",0,"10\\d{10}",[12],[["(\\d{2})(\\d{5})(\\d{5})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["10\\d{10}"]]],"881":["881",0,"[0-36-9]\\d{8}",[9],[["(\\d)(\\d{3})(\\d{5})","$1 $2 $3",["[0-36-9]"]]],0,0,0,0,0,0,[0,["[0-36-9]\\d{8}"]]],"882":["882",0,"[13]\\d{6}(?:\\d{2,5})?|285\\d{9}|(?:[19]\\d|49)\\d{6}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5})","$1 $2",["16|342"]],["(\\d{2})(\\d{6})","$1 $2",["4"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[19]"]],["(\\d{2})(\\d{4})(\\d{3})","$1 $2 $3",["3[23]"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["34[57]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["34"]],["(\\d{2})(\\d{4,5})(\\d{5})","$1 $2 $3",["[1-3]"]]],0,0,0,0,0,0,[0,["342\\d{4}|(?:337|49)\\d{6}|3(?:2|47|7\\d{3})\\d{7}",[7,8,9,10,12]],0,0,0,0,0,0,["1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\d{4}|6\\d{5,10})|(?:(?:285\\d\\d|3(?:45|[69]\\d{3}))\\d|9[89])\\d{6}"]]],"883":["883",0,"(?:210|370\\d\\d)\\d{7}|51\\d{7}(?:\\d{3})?",[9,10,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["510"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["2"]],["(\\d{4})(\\d{4})(\\d{4})","$1 $2 $3",["51[13]"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[35]"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["(?:210|(?:370[1-9]|51[013]0)\\d)\\d{7}|5100\\d{5}"]]],"888":["888",0,"\\d{11}",[11],[["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3"]],0,0,0,0,0,0,[0,0,0,0,0,0,["\\d{11}"]]],"979":["979",0,"[1359]\\d{8}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[1359]"]]],0,0,0,0,0,0,[0,0,0,["[1359]\\d{8}"]]]}} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.max.json.d.ts b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.max.json.d.ts new file mode 100644 index 00000000..ccfebccc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.max.json.d.ts @@ -0,0 +1,4 @@ +import { MetadataJson } from './types'; + +declare const metadata: MetadataJson; +export default metadata; diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.max.json.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.max.json.js new file mode 100644 index 00000000..7c5d5b97 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.max.json.js @@ -0,0 +1,4 @@ +// This file is a workaround for a bug in web browsers' "native" +// ES6 importing system which is uncapable of importing "*.json" files. +// https://github.com/catamphetamine/libphonenumber-js/issues/239 +export default {"version":4,"country_calling_codes":{"1":["US","AG","AI","AS","BB","BM","BS","CA","DM","DO","GD","GU","JM","KN","KY","LC","MP","MS","PR","SX","TC","TT","VC","VG","VI"],"7":["RU","KZ"],"20":["EG"],"27":["ZA"],"30":["GR"],"31":["NL"],"32":["BE"],"33":["FR"],"34":["ES"],"36":["HU"],"39":["IT","VA"],"40":["RO"],"41":["CH"],"43":["AT"],"44":["GB","GG","IM","JE"],"45":["DK"],"46":["SE"],"47":["NO","SJ"],"48":["PL"],"49":["DE"],"51":["PE"],"52":["MX"],"53":["CU"],"54":["AR"],"55":["BR"],"56":["CL"],"57":["CO"],"58":["VE"],"60":["MY"],"61":["AU","CC","CX"],"62":["ID"],"63":["PH"],"64":["NZ"],"65":["SG"],"66":["TH"],"81":["JP"],"82":["KR"],"84":["VN"],"86":["CN"],"90":["TR"],"91":["IN"],"92":["PK"],"93":["AF"],"94":["LK"],"95":["MM"],"98":["IR"],"211":["SS"],"212":["MA","EH"],"213":["DZ"],"216":["TN"],"218":["LY"],"220":["GM"],"221":["SN"],"222":["MR"],"223":["ML"],"224":["GN"],"225":["CI"],"226":["BF"],"227":["NE"],"228":["TG"],"229":["BJ"],"230":["MU"],"231":["LR"],"232":["SL"],"233":["GH"],"234":["NG"],"235":["TD"],"236":["CF"],"237":["CM"],"238":["CV"],"239":["ST"],"240":["GQ"],"241":["GA"],"242":["CG"],"243":["CD"],"244":["AO"],"245":["GW"],"246":["IO"],"247":["AC"],"248":["SC"],"249":["SD"],"250":["RW"],"251":["ET"],"252":["SO"],"253":["DJ"],"254":["KE"],"255":["TZ"],"256":["UG"],"257":["BI"],"258":["MZ"],"260":["ZM"],"261":["MG"],"262":["RE","YT"],"263":["ZW"],"264":["NA"],"265":["MW"],"266":["LS"],"267":["BW"],"268":["SZ"],"269":["KM"],"290":["SH","TA"],"291":["ER"],"297":["AW"],"298":["FO"],"299":["GL"],"350":["GI"],"351":["PT"],"352":["LU"],"353":["IE"],"354":["IS"],"355":["AL"],"356":["MT"],"357":["CY"],"358":["FI","AX"],"359":["BG"],"370":["LT"],"371":["LV"],"372":["EE"],"373":["MD"],"374":["AM"],"375":["BY"],"376":["AD"],"377":["MC"],"378":["SM"],"380":["UA"],"381":["RS"],"382":["ME"],"383":["XK"],"385":["HR"],"386":["SI"],"387":["BA"],"389":["MK"],"420":["CZ"],"421":["SK"],"423":["LI"],"500":["FK"],"501":["BZ"],"502":["GT"],"503":["SV"],"504":["HN"],"505":["NI"],"506":["CR"],"507":["PA"],"508":["PM"],"509":["HT"],"590":["GP","BL","MF"],"591":["BO"],"592":["GY"],"593":["EC"],"594":["GF"],"595":["PY"],"596":["MQ"],"597":["SR"],"598":["UY"],"599":["CW","BQ"],"670":["TL"],"672":["NF"],"673":["BN"],"674":["NR"],"675":["PG"],"676":["TO"],"677":["SB"],"678":["VU"],"679":["FJ"],"680":["PW"],"681":["WF"],"682":["CK"],"683":["NU"],"685":["WS"],"686":["KI"],"687":["NC"],"688":["TV"],"689":["PF"],"690":["TK"],"691":["FM"],"692":["MH"],"850":["KP"],"852":["HK"],"853":["MO"],"855":["KH"],"856":["LA"],"880":["BD"],"886":["TW"],"960":["MV"],"961":["LB"],"962":["JO"],"963":["SY"],"964":["IQ"],"965":["KW"],"966":["SA"],"967":["YE"],"968":["OM"],"970":["PS"],"971":["AE"],"972":["IL"],"973":["BH"],"974":["QA"],"975":["BT"],"976":["MN"],"977":["NP"],"992":["TJ"],"993":["TM"],"994":["AZ"],"995":["GE"],"996":["KG"],"998":["UZ"]},"countries":{"AC":["247","00","(?:[01589]\\d|[46])\\d{4}",[5,6],0,0,0,0,0,0,0,[["6[2-467]\\d{3}",[5]],["4\\d{4}",[5]],0,0,0,0,["(?:0[1-9]|[1589]\\d)\\d{4}",[6]]]],"AD":["376","00","(?:1|6\\d)\\d{7}|[135-9]\\d{5}",[6,8,9],[["(\\d{3})(\\d{3})","$1 $2",["[135-9]"]],["(\\d{4})(\\d{4})","$1 $2",["1"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]],0,0,0,0,0,0,[["[78]\\d{5}",[6]],["690\\d{6}|[356]\\d{5}",[6,9]],["180[02]\\d{4}",[8]],["[19]\\d{5}",[6]]]],"AE":["971","00","(?:[4-7]\\d|9[0-689])\\d{7}|800\\d{2,9}|[2-4679]\\d{7}",[5,6,7,8,9,10,11,12],[["(\\d{3})(\\d{2,9})","$1 $2",["60|8"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[236]|[479][2-8]"],"0$1"],["(\\d{3})(\\d)(\\d{5})","$1 $2 $3",["[479]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"]],"0",0,0,0,0,0,[["[2-4679][2-8]\\d{6}",[8]],["5[024-68]\\d{7}",[9]],["400\\d{6}|800\\d{2,9}"],["900[02]\\d{5}",[9]],0,0,["600[25]\\d{5}",[9]],0,0,["700[05]\\d{5}",[9]]]],"AF":["93","00","[2-7]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"]],"0",0,0,0,0,0,[["(?:[25][0-8]|[34][0-4]|6[0-5])[2-9]\\d{6}"],["7\\d{8}"]]],"AG":["1","011","(?:268|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([457]\\d{6})$","268$1",0,"268",[["268(?:4(?:6[0-38]|84)|56[0-2])\\d{4}"],["268(?:464|7(?:1[3-9]|[28]\\d|3[0246]|64|7[0-689]))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,0,["26840[69]\\d{4}"],["26848[01]\\d{4}"]]],"AI":["1","011","(?:264|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2457]\\d{6})$","264$1",0,"264",[["264(?:292|4(?:6[12]|9[78]))\\d{4}"],["264(?:235|4(?:69|76)|5(?:3[6-9]|8[1-4])|7(?:29|72))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,0,["264724\\d{4}"]]],"AL":["355","00","(?:700\\d\\d|900)\\d{3}|8\\d{5,7}|(?:[2-5]|6\\d)\\d{7}",[6,7,8,9],[["(\\d{3})(\\d{3,4})","$1 $2",["80|9"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["4[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2358][2-5]|4"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["[23578]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["6"],"0$1"]],"0",0,0,0,0,0,[["4505[0-2]\\d{3}|(?:[2358][16-9]\\d[2-9]|4410)\\d{4}|(?:[2358][2-5][2-9]|4(?:[2-57-9][2-9]|6\\d))\\d{5}",[8]],["6(?:[78][2-9]|9\\d)\\d{6}",[9]],["800\\d{4}",[7]],["900[1-9]\\d\\d",[6]],["700[2-9]\\d{4}",[8]],0,0,0,0,["808[1-9]\\d\\d",[6]]]],"AM":["374","00","(?:[1-489]\\d|55|60|77)\\d{6}",[8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[89]0"],"0 $1"],["(\\d{3})(\\d{5})","$1 $2",["2|3[12]"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["1|47"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[3-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:(?:1[0-25]|47)\\d|2(?:2[2-46]|3[1-8]|4[2-69]|5[2-7]|6[1-9]|8[1-7])|3[12]2)\\d{5}"],["(?:33|4[1349]|55|77|88|9[13-9])\\d{6}"],["800\\d{5}"],["90[016]\\d{5}"],0,0,0,0,["60(?:2[78]|3[5-9]|4[02-9]|5[0-46-9]|[6-8]\\d|9[01])\\d{4}"],["80[1-4]\\d{5}"]]],"AO":["244","00","[29]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[29]"]]],0,0,0,0,0,0,[["2\\d(?:[0134][25-9]|[25-9]\\d)\\d{5}"],["9[1-59]\\d{7}"]]],"AR":["54","00","(?:11|[89]\\d\\d)\\d{8}|[2368]\\d{9}",[10,11],[["(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])","2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["1"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2-$3",["[23]"],"0$1",1],["(\\d)(\\d{4})(\\d{2})(\\d{4})","$2 15-$3-$4",["9(?:2[2-469]|3[3-578])","9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))","9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",0,"$1 $2 $3-$4"],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 15-$3-$4",["91"],"0$1",0,"$1 $2 $3-$4"],["(\\d{3})(\\d{3})(\\d{5})","$1-$2-$3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 15-$3-$4",["9"],"0$1",0,"$1 $2 $3-$4"]],"0",0,"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?","9$1",0,0,[["3888[013-9]\\d{5}|3(?:7(?:1[15]|81)|8(?:21|4[16]|69|9[12]))[46]\\d{5}|(?:29(?:54|66)|3(?:7(?:55|77)|865))[2-8]\\d{5}|(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|473|9(?:[07]2|2[26]|34|46))|3327)[45]\\d{5}|(?:2(?:284|3(?:02|23)|657|920)|3(?:4(?:8[27]|92)|541|878))[2-7]\\d{5}|(?:2(?:(?:26|62)2|320|477|9(?:42|83))|3(?:329|4(?:[47]6|62|89)|564))[2-6]\\d{5}|(?:(?:11[1-8]|670)\\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-7]|[235][4-6]|84)|5(?:1[2-9]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:0[45]|[17][2-6]|3[4-6]|[58][3-6])))\\d{6}|2(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|475|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\d{5}|(?:2(?:2(?:57|81)|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|71)|5(?:25|37|4[347]|71)|7(?:18|5[17])))[3-6]\\d{5}|(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[03-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[145]|4[13]|5[468]|7[2-5]|8[26])|8(?:2[5-7]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\d{5}",[10]],["93(?:7(?:1[15]|81)[46]|8(?:(?:21|4[16]|69|9[12])[46]|88[013-9]))\\d{5}|9(?:29(?:54|66)|3(?:7(?:55|77)|865))[2-8]\\d{5}|9(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|473|9(?:[07]2|2[26]|34|46))|3327)[45]\\d{5}|9(?:2(?:284|3(?:02|23)|657|920)|3(?:4(?:8[27]|92)|541|878))[2-7]\\d{5}|9(?:2(?:(?:26|62)2|320|477|9(?:42|83))|3(?:329|4(?:[47]6|62|89)|564))[2-6]\\d{5}|(?:675\\d|9(?:11[1-8]\\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-7]|[235][4-6]|84)|5(?:1[2-9]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:0[45]|[17][2-6]|3[4-6]|[58][3-6]))))\\d{6}|92(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|475|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\d{5}|9(?:2(?:2(?:57|81)|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|71)|5(?:25|37|4[347]|71)|7(?:18|5[17])))[3-6]\\d{5}|9(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[03-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[145]|4[13]|5[468]|7[2-5]|8[26])|8(?:2[5-7]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\d{5}"],["800\\d{7,8}"],["60[04579]\\d{7}",[10]],0,0,["810\\d{7}",[10]]]],"AS":["1","011","(?:[58]\\d\\d|684|900)\\d{7}",[10],0,"1",0,"1|([267]\\d{6})$","684$1",0,"684",[["6846(?:22|33|44|55|77|88|9[19])\\d{4}"],["684(?:2(?:48|5[2468]|72)|7(?:3[13]|70|82))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"AT":["43","00","1\\d{3,12}|2\\d{6,12}|43(?:(?:0\\d|5[02-9])\\d{3,9}|2\\d{4,5}|[3467]\\d{4}|8\\d{4,6}|9\\d{4,7})|5\\d{4,12}|8\\d{7,12}|9\\d{8,12}|(?:[367]\\d|4[0-24-9])\\d{4,11}",[4,5,6,7,8,9,10,11,12,13],[["(\\d)(\\d{3,12})","$1 $2",["1(?:11|[2-9])"],"0$1"],["(\\d{3})(\\d{2})","$1 $2",["517"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["5[079]"],"0$1"],["(\\d{3})(\\d{3,10})","$1 $2",["(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]"],"0$1"],["(\\d{4})(\\d{3,9})","$1 $2",["[2-467]|5[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["5"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,7})","$1 $2 $3",["5"],"0$1"]],"0",0,0,0,0,0,[["1(?:11\\d|[2-9]\\d{3,11})|(?:316|463|(?:51|66|73)2)\\d{3,10}|(?:2(?:1[467]|2[13-8]|5[2357]|6[1-46-8]|7[1-8]|8[124-7]|9[1458])|3(?:1[1-578]|3[23568]|4[5-7]|5[1378]|6[1-38]|8[3-68])|4(?:2[1-8]|35|7[1368]|8[2457])|5(?:2[1-8]|3[357]|4[147]|5[12578]|6[37])|6(?:13|2[1-47]|4[135-8]|5[468])|7(?:2[1-8]|35|4[13478]|5[68]|6[16-8]|7[1-6]|9[45]))\\d{4,10}"],["6(?:5[0-3579]|6[013-9]|[7-9]\\d)\\d{4,10}",[7,8,9,10,11,12,13]],["800\\d{6,10}",[9,10,11,12,13]],["(?:8[69][2-68]|9(?:0[01]|3[019]))\\d{6,10}",[9,10,11,12,13]],0,0,0,0,["5(?:0[1-9]|17|[79]\\d)\\d{2,10}|7[28]0\\d{6,10}",[5,6,7,8,9,10,11,12,13]],["8(?:10|2[018])\\d{6,10}|828\\d{5}",[8,9,10,11,12,13]]]],"AU":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{7}(?:\\d(?:\\d{2})?)?|8[0-24-9]\\d{7})|[2-478]\\d{8}|1\\d{4,7}",[5,6,7,8,9,10,12],[["(\\d{2})(\\d{3,4})","$1 $2",["16"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,4})","$1 $2 $3",["16"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["14|4"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[2378]"],"(0$1)"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:30|[89])"]]],"0",0,"0|(183[12])",0,0,0,[["(?:(?:2(?:[0-26-9]\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\d|2[0-8]))\\d{3}|8(?:51(?:0(?:0[03-9]|[12479]\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\d|7[89]|9[0-4]))|(?:6[0-8]|[78]\\d)\\d{3}|9(?:[02-9]\\d{3}|1(?:(?:[0-58]\\d|6[0135-9])\\d|7(?:0[0-24-9]|[1-9]\\d)|9(?:[0-46-9]\\d|5[0-79])))))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,["163\\d{2,6}",[5,6,7,8,9]],["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],"AW":["297","00","(?:[25-79]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[25-9]"]]],0,0,0,0,0,0,[["5(?:2\\d|8[1-9])\\d{4}"],["(?:290|5[69]\\d|6(?:[03]0|22|4[0-2]|[69]\\d)|7(?:[34]\\d|7[07])|9(?:6[45]|9[4-8]))\\d{4}"],["800\\d{4}"],["900\\d{4}"],0,0,0,0,["(?:28\\d|501)\\d{4}"]]],"AX":["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","2\\d{4,9}|35\\d{4,5}|(?:60\\d\\d|800)\\d{4,6}|7\\d{5,11}|(?:[14]\\d|3[0-46-9]|50)\\d{4,8}",[5,6,7,8,9,10,11,12],0,"0",0,0,0,0,"18",[["18[1-8]\\d{3,6}",[6,7,8,9]],["4946\\d{2,6}|(?:4[0-8]|50)\\d{4,8}",[6,7,8,9,10]],["800\\d{4,6}",[7,8,9]],["[67]00\\d{5,6}",[8,9]],0,0,["20\\d{4,8}|60[12]\\d{5,6}|7(?:099\\d{4,5}|5[03-9]\\d{3,7})|20[2-59]\\d\\d|(?:606|7(?:0[78]|1|3\\d))\\d{7}|(?:10|29|3[09]|70[1-5]\\d)\\d{4,8}"]],"00"],"AZ":["994","00","365\\d{6}|(?:[124579]\\d|60|88)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[28]|2|365|46","1[28]|2|365[45]|46","1[28]|2|365(?:4|5[02])|46"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[13-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:2[12]428|3655[02])\\d{4}|(?:2(?:22[0-79]|63[0-28])|3654)\\d{5}|(?:(?:1[28]|46)\\d|2(?:[014-6]2|[23]3))\\d{6}"],["36554\\d{4}|(?:[16]0|4[04]|5[015]|7[07]|99)\\d{7}"],["88\\d{7}"],["900200\\d{3}"]]],"BA":["387","00","6\\d{8}|(?:[35689]\\d|49|70)\\d{6}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["6[1-3]|[7-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2-$3",["[3-5]|6[56]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["6"],"0$1"]],"0",0,0,0,0,0,[["(?:3(?:[05-79][2-9]|1[4579]|[23][24-9]|4[2-4689]|8[2457-9])|49[2-579]|5(?:0[2-49]|[13][2-9]|[268][2-4679]|4[4689]|5[2-79]|7[2-69]|9[2-4689]))\\d{5}",[8]],["6040\\d{5}|6(?:03|[1-356]|44|7\\d)\\d{6}"],["8[08]\\d{6}",[8]],["9[0246]\\d{6}",[8]],0,0,["703[235]0\\d{3}|70(?:2[0-5]|3[0146]|[56]0)\\d{4}",[8]],0,0,["8[12]\\d{6}",[8]]]],"BB":["1","011","(?:246|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","246$1",0,"246",[["246521[0369]\\d{3}|246(?:2(?:2[78]|7[0-4])|4(?:1[024-6]|2\\d|3[2-9])|5(?:20|[34]\\d|54|7[1-3])|6(?:2\\d|38)|7[35]7|9(?:1[89]|63))\\d{4}"],["246(?:(?:2(?:[3568]\\d|4[0-57-9])|3(?:5[2-9]|6[0-6])|4(?:46|5\\d)|69[5-7]|8(?:[2-5]\\d|83))\\d|52(?:1[147]|20))\\d{3}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["(?:246976|900[2-9]\\d\\d)\\d{4}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,["246(?:292|367|4(?:1[7-9]|3[01]|4[47-9]|67)|7(?:1[2-9]|2\\d|3[016]|53))\\d{4}"],0,["24631\\d{5}"]]],"BD":["880","00","[1-469]\\d{9}|8[0-79]\\d{7,8}|[2-79]\\d{8}|[2-9]\\d{7}|[3-9]\\d{6}|[57-9]\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{4,6})","$1-$2",["31[5-8]|[459]1"],"0$1"],["(\\d{3})(\\d{3,7})","$1-$2",["3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:28|4[14]|5)|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]"],"0$1"],["(\\d{4})(\\d{3,6})","$1-$2",["[13-9]|22"],"0$1"],["(\\d)(\\d{7,8})","$1-$2",["2"],"0$1"]],"0",0,0,0,0,0,[["(?:4(?:31\\d\\d|423)|5222)\\d{3}(?:\\d{2})?|8332[6-9]\\d\\d|(?:3(?:03[56]|224)|4(?:22[25]|653))\\d{3,4}|(?:3(?:42[47]|529|823)|4(?:027|525|65(?:28|8))|562|6257|7(?:1(?:5[3-5]|6[12]|7[156]|89)|22[589]56|32|42675|52(?:[25689](?:56|8)|[347]8)|71(?:6[1267]|75|89)|92374)|82(?:2[59]|32)56|9(?:03[23]56|23(?:256|373)|31|5(?:1|2[4589]56)))\\d{3}|(?:3(?:02[348]|22[35]|324|422)|4(?:22[67]|32[236-9]|6(?:2[46]|5[57])|953)|5526|6(?:024|6655)|81)\\d{4,5}|(?:2(?:7(?:1[0-267]|2[0-289]|3[0-29]|4[01]|5[1-3]|6[013]|7[0178]|91)|8(?:0[125]|1[1-6]|2[0157-9]|3[1-69]|41|6[1-35]|7[1-5]|8[1-8]|9[0-6])|9(?:0[0-2]|1[0-4]|2[568]|3[3-6]|5[5-7]|6[0136-9]|7[0-7]|8[014-9]))|3(?:0(?:2[025-79]|3[2-4])|181|22[12]|32[2356]|824)|4(?:02[09]|22[348]|32[045]|523|6(?:27|54))|666(?:22|53)|7(?:22[57-9]|42[56]|82[35])8|8(?:0[124-9]|2(?:181|2[02-4679]8)|4[12]|[5-7]2)|9(?:[04]2|2(?:2|328)|81))\\d{4}|(?:2(?:222|[45]\\d)\\d|3(?:1(?:2[5-7]|[5-7])|425|822)|4(?:033|1\\d|[257]1|332|4(?:2[246]|5[25])|6(?:2[35]|56|62)|8(?:23|54)|92[2-5])|5(?:02[03489]|22[457]|32[35-79]|42[46]|6(?:[18]|53)|724|826)|6(?:023|2(?:2[2-5]|5[3-5]|8)|32[3478]|42[34]|52[47]|6(?:[18]|6(?:2[34]|5[24]))|[78]2[2-5]|92[2-6])|7(?:02|21\\d|[3-589]1|6[12]|72[24])|8(?:217|3[12]|[5-7]1)|9[24]1)\\d{5}|(?:(?:3[2-8]|5[2-57-9]|6[03-589])1|4[4689][18])\\d{5}|[59]1\\d{5}"],["(?:1[13-9]\\d|644)\\d{7}|(?:3[78]|44|66)[02-9]\\d{7}",[10]],["80[03]\\d{7}",[10]],0,0,0,0,0,["96(?:0[469]|1[0-47]|3[389]|6[69]|7[78])\\d{6}",[10]]]],"BE":["32","00","4\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:80|9)0"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[239]|4[23]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[15-8]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4"],"0$1"]],"0",0,0,0,0,0,[["80[2-8]\\d{5}|(?:1[0-69]|[23][2-8]|4[23]|5\\d|6[013-57-9]|71|8[1-79]|9[2-4])\\d{6}",[8]],["4[5-9]\\d{7}",[9]],["800[1-9]\\d{4}",[8]],["(?:70(?:2[0-57]|3[04-7]|44|6[569]|7[0579])|90(?:0[0-8]|1[36]|2[0-3568]|3[0-689]|[47][2-68]|5[1-68]|6[0-378]|9[34679]))\\d{4}",[8]],0,0,["78(?:0[57]|1[014-8]|2[25]|3[15-8]|48|[56]0|7[06-8]|9\\d)\\d{4}",[8]],0,0,["7879\\d{4}",[8]]]],"BF":["226","00","[025-7]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[025-7]"]]],0,0,0,0,0,0,[["2(?:0(?:49|5[23]|6[5-7]|9[016-9])|4(?:4[569]|5[4-6]|6[5-7]|7[0179])|5(?:[34]\\d|50|6[5-7]))\\d{4}"],["(?:0[1-35-7]|5[1-8]|[67]\\d)\\d{6}"]]],"BG":["359","00","[2-7]\\d{6,7}|[89]\\d{6,8}|2\\d{5}",[6,7,8,9],[["(\\d)(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["43[1-6]|70[1-9]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:70|8)0"],"0$1"],["(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3",["43[1-7]|7"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[48]|9[08]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"]],"0",0,0,0,0,0,[["2\\d{5,7}|(?:43[1-6]|70[1-9])\\d{4,5}|(?:[36]\\d|4[124-7]|[57][1-9]|8[1-6]|9[1-7])\\d{5,6}",[6,7,8]],["(?:43[07-9]|99[69]\\d)\\d{5}|(?:8[7-9]|98)\\d{7}",[8,9]],["800\\d{5}",[8]],["90\\d{6}",[8]],0,0,0,0,0,["700\\d{5}",[8]]]],"BH":["973","00","[136-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[13679]|8[047]"]]],0,0,0,0,0,0,[["(?:1(?:3[1356]|6[0156]|7\\d)\\d|6(?:1[16]\\d|500|6(?:0\\d|3[12]|44|7[7-9]|88)|9[69][69])|7(?:1(?:11|78)|7\\d\\d))\\d{4}"],["(?:3(?:[1-79]\\d|8[0-47-9])\\d|6(?:3(?:00|33|6[16])|6(?:3[03-9]|[69]\\d|7[0-6])))\\d{4}"],["80\\d{6}"],["(?:87|9[014578])\\d{6}"],0,0,0,0,0,["84\\d{6}"]]],"BI":["257","00","(?:[267]\\d|31)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2367]"]]],0,0,0,0,0,0,[["(?:22|31)\\d{6}"],["(?:29|6[1257-9]|7[125-9])\\d{6}"]]],"BJ":["229","00","(?:[25689]\\d|40)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24-689]"]]],0,0,0,0,0,0,[["2(?:02|1[037]|2[45]|3[68]|4\\d)\\d{5}"],["(?:40|5[1-9]|6\\d|9[013-9])\\d{6}"],0,0,0,0,["81\\d{6}"],0,["857[58]\\d{4}"]]],"BL":["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[["590(?:2[7-9]|5[12]|87)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],"BM":["1","011","(?:441|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","441$1",0,"441",[["441(?:[46]\\d\\d|5(?:4\\d|60|89))\\d{4}"],["441(?:[2378]\\d|5[0-39])\\d{5}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"BN":["673","00","[2-578]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-578]"]]],0,0,0,0,0,0,[["22[0-7]\\d{4}|(?:2[013-9]|[34]\\d|5[0-25-9])\\d{5}"],["(?:22[89]|[78]\\d\\d)\\d{4}"],0,0,0,0,0,0,["5[34]\\d{5}"]]],"BO":["591","00(?:1\\d)?","(?:[2-467]\\d\\d|8001)\\d{5}",[8,9],[["(\\d)(\\d{7})","$1 $2",["[23]|4[46]"]],["(\\d{8})","$1",["[67]"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["8"]]],"0",0,"0(1\\d)?",0,0,0,[["(?:2(?:2\\d\\d|5(?:11|[258]\\d|9[67])|6(?:12|2\\d|9[34])|8(?:2[34]|39|62))|3(?:3\\d\\d|4(?:6\\d|8[24])|8(?:25|42|5[257]|86|9[25])|9(?:[27]\\d|3[2-4]|4[248]|5[24]|6[2-6]))|4(?:4\\d\\d|6(?:11|[24689]\\d|72)))\\d{4}",[8]],["[67]\\d{7}",[8]],["8001[07]\\d{4}",[9]]]],"BQ":["599","00","(?:[34]1|7\\d)\\d{5}",[7],0,0,0,0,0,0,"[347]",[["(?:318[023]|41(?:6[023]|70)|7(?:1[578]|2[05]|50)\\d)\\d{3}"],["(?:31(?:8[14-8]|9[14578])|416[14-9]|7(?:0[01]|7[07]|8\\d|9[056])\\d)\\d{3}"]]],"BR":["55","00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)","(?:[1-46-9]\\d\\d|5(?:[0-46-9]\\d|5[0-46-9]))\\d{8}|[1-9]\\d{9}|[3589]\\d{8}|[34]\\d{7}",[8,9,10,11],[["(\\d{4})(\\d{4})","$1-$2",["300|4(?:0[02]|37)","4(?:02|37)0|[34]00"]],["(\\d{3})(\\d{2,3})(\\d{4})","$1 $2 $3",["(?:[358]|90)0"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]"],"($1)"],["(\\d{2})(\\d{5})(\\d{4})","$1 $2-$3",["[16][1-9]|[2-57-9]"],"($1)"]],"0",0,"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\d{10,11}))?","$2",0,0,[["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-5]\\d{7}",[10]],["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])(?:7|9\\d)\\d{7}",[10,11]],["800\\d{6,7}",[9,10]],["300\\d{6}|[59]00\\d{6,7}",[9,10]],0,0,0,0,0,["(?:30[03]\\d{3}|4(?:0(?:0\\d|20)|370))\\d{4}|300\\d{5}",[8,10]]]],"BS":["1","011","(?:242|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([3-8]\\d{6})$","242$1",0,"242",[["242(?:3(?:02|[236][1-9]|4[0-24-9]|5[0-68]|7[347]|8[0-4]|9[2-467])|461|502|6(?:0[1-4]|12|2[013]|[45]0|7[67]|8[78]|9[89])|7(?:02|88))\\d{4}"],["242(?:3(?:5[79]|7[56]|95)|4(?:[23][1-9]|4[1-35-9]|5[1-8]|6[2-8]|7\\d|81)|5(?:2[45]|3[35]|44|5[1-46-9]|65|77)|6[34]6|7(?:27|38)|8(?:0[1-9]|1[02-9]|2\\d|[89]9))\\d{4}"],["242300\\d{4}|8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,["242225\\d{4}"]]],"BT":["975","00","[17]\\d{7}|[2-8]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[2-68]|7[246]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[67]|7"]]],0,0,0,0,0,0,[["(?:2[3-6]|[34][5-7]|5[236]|6[2-46]|7[246]|8[2-4])\\d{5}",[7]],["(?:1[67]|77)\\d{6}",[8]]]],"BW":["267","00","(?:0800|(?:[37]|800)\\d)\\d{6}|(?:[2-6]\\d|90)\\d{5}",[7,8,10],[["(\\d{2})(\\d{5})","$1 $2",["90"]],["(\\d{3})(\\d{4})","$1 $2",["[24-6]|3[15-79]"]],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37]"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["(?:2(?:4[0-48]|6[0-24]|9[0578])|3(?:1[0-35-9]|55|[69]\\d|7[013])|4(?:6[03]|7[1267]|9[0-5])|5(?:3[03489]|4[0489]|7[1-47]|88|9[0-49])|6(?:2[1-35]|5[149]|8[067]))\\d{4}",[7]],["(?:321|7(?:[1-7]\\d|8[01]))\\d{5}",[8]],["(?:0800|800\\d)\\d{6}",[10]],["90\\d{5}",[7]],0,0,0,0,["79(?:1(?:[01]\\d|2[0-7])|2[0-7]\\d)\\d{3}",[8]]]],"BY":["375","810","(?:[12]\\d|33|44|902)\\d{7}|8(?:0[0-79]\\d{5,7}|[1-7]\\d{9})|8(?:1[0-489]|[5-79]\\d)\\d{7}|8[1-79]\\d{6,7}|8[0-79]\\d{5}|8\\d{5}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3})","$1 $2",["800"],"8 $1"],["(\\d{3})(\\d{2})(\\d{2,4})","$1 $2 $3",["800"],"8 $1"],["(\\d{4})(\\d{2})(\\d{3})","$1 $2-$3",["1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])","1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])"],"8 0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["1(?:[56]|7[467])|2[1-3]"],"8 0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-4]"],"8 0$1"],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["[89]"],"8 $1"]],"8",0,"0|80?",0,0,0,[["(?:1(?:5(?:1[1-5]|[24]\\d|6[2-4]|9[1-7])|6(?:[235]\\d|4[1-7])|7\\d\\d)|2(?:1(?:[246]\\d|3[0-35-9]|5[1-9])|2(?:[235]\\d|4[0-8])|3(?:[26]\\d|3[02-79]|4[024-7]|5[03-7])))\\d{5}",[9]],["(?:2(?:5[5-79]|9[1-9])|(?:33|44)\\d)\\d{6}",[9]],["800\\d{3,7}|8(?:0[13]|20\\d)\\d{7}"],["(?:810|902)\\d{7}",[10]],0,0,0,0,["249\\d{6}",[9]]],"8~10"],"BZ":["501","00","(?:0800\\d|[2-8])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1-$2",["[2-8]"]],["(\\d)(\\d{3})(\\d{4})(\\d{3})","$1-$2-$3-$4",["0"]]],0,0,0,0,0,0,[["(?:2(?:[02]\\d|36|[68]0)|[3-58](?:[02]\\d|[68]0)|7(?:[02]\\d|32|[68]0))\\d{4}",[7]],["6[0-35-7]\\d{5}",[7]],["0800\\d{7}",[11]]]],"CA":["1","011","(?:[2-8]\\d|90)\\d{8}|3\\d{6}",[7,10],0,"1",0,0,0,0,0,[["(?:2(?:04|[23]6|[48]9|50|63)|3(?:06|43|6[578])|4(?:03|1[68]|3[178]|50|68|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|13|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\d{6}",[10]],["",[10]],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",[10]],["900[2-9]\\d{6}",[10]],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|(?:5(?:00|2[125-7]|33|44|66|77|88)|622)[2-9]\\d{6}",[10]],0,["310\\d{4}",[7]],0,["600[2-9]\\d{6}",[10]]]],"CC":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[["8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\d|70[23]|959))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,0,["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],"CD":["243","00","[189]\\d{8}|[1-68]\\d{6}",[7,9],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[1-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,[["12\\d{7}|[1-6]\\d{6}"],["88\\d{5}|(?:8[0-59]|9[017-9])\\d{7}"]]],"CF":["236","00","(?:[27]\\d{3}|8776)\\d{4}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[278]"]]],0,0,0,0,0,0,[["2[12]\\d{6}"],["7[02457]\\d{6}"],0,["8776\\d{4}"]]],"CG":["242","00","222\\d{6}|(?:0\\d|80)\\d{7}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["8"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[02]"]]],0,0,0,0,0,0,[["222[1-589]\\d{5}"],["026(?:1[0-5]|6[6-9])\\d{4}|0(?:[14-6]\\d\\d|2(?:40|5[5-8]|6[07-9]))\\d{5}"],0,["80(?:0\\d\\d|120)\\d{4}"]]],"CH":["41","00","8\\d{11}|[2-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8[047]|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-79]|81"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["8"],"0$1"]],"0",0,0,0,0,0,[["(?:2[12467]|3[1-4]|4[134]|5[256]|6[12]|[7-9]1)\\d{7}"],["7[35-9]\\d{7}"],["800\\d{6}"],["90[016]\\d{6}"],["878\\d{6}"],0,["5[18]\\d{7}"],["74[0248]\\d{6}"],0,["84[0248]\\d{6}"]]],"CI":["225","00","[02]\\d{9}",[10],[["(\\d{2})(\\d{2})(\\d)(\\d{5})","$1 $2 $3 $4",["2"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3 $4",["0"]]],0,0,0,0,0,0,[["2(?:[15]\\d{3}|7(?:2(?:0[23]|1[2357]|2[245]|3[45]|4[3-5])|3(?:06|1[69]|[2-6]7)))\\d{5}"],["0704[0-7]\\d{5}|0(?:[15]\\d\\d|7(?:0[0-37-9]|[4-9][7-9]))\\d{6}"]]],"CK":["682","00","[2-578]\\d{4}",[5],[["(\\d{2})(\\d{3})","$1 $2",["[2-578]"]]],0,0,0,0,0,0,[["(?:2\\d|3[13-7]|4[1-5])\\d{3}"],["[578]\\d{4}"]]],"CL":["56","(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0","12300\\d{6}|6\\d{9,10}|[2-9]\\d{8}",[9,10,11],[["(\\d{5})(\\d{4})","$1 $2",["219","2196"],"($1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["44"]],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2[1-36]"],"($1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["9[2-9]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])"],"($1)"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["60|8"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{3})(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3 $4",["60"]]],0,0,0,0,0,0,[["2(?:1982[0-6]|3314[05-9])\\d{3}|(?:2(?:1(?:160|962)|3(?:2\\d\\d|3(?:[0346]\\d|1[0-35-9]|2[1-9]|5[0-24-9]|7[0-3])|600)|646[59])|80[1-9]\\d\\d|9(?:3(?:[0-57-9]\\d\\d|6(?:0[02-9]|[1-9]\\d))|6(?:[0-8]\\d\\d|9(?:[02-79]\\d|1[05-9]))|7[1-9]\\d\\d|9(?:[03-9]\\d\\d|1(?:[0235-9]\\d|4[0-24-9])|2(?:[0-79]\\d|8[0-46-9]))))\\d{4}|(?:22|3[2-5]|[47][1-35]|5[1-3578]|6[13-57]|8[1-9]|9[2458])\\d{7}",[9]],["",[9]],["(?:123|8)00\\d{6}",[9,11]],0,0,0,0,0,["44\\d{7}",[9]],["600\\d{7,8}",[10,11]]]],"CM":["237","00","[26]\\d{8}|88\\d{6,7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["88"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[26]|88"]]],0,0,0,0,0,0,[["2(?:22|33)\\d{6}",[9]],["(?:24[23]|6[25-9]\\d)\\d{6}",[9]],["88\\d{6,7}"]]],"CN":["86","00|1(?:[12]\\d|79)\\d\\d00","1[127]\\d{8,9}|2\\d{9}(?:\\d{2})?|[12]\\d{6,7}|86\\d{6}|(?:1[03-689]\\d|6)\\d{7,9}|(?:[3-579]\\d|8[0-57-9])\\d{6,9}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5,6})","$1 $2",["(?:10|2[0-57-9])[19]","(?:10|2[0-57-9])(?:10|9[56])","(?:10|2[0-57-9])(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{5,6})","$1 $2",["3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]","(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))[19]","85[23](?:10|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:10|9[56])","85[23](?:100|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["(?:4|80)0"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["10|2(?:[02-57-9]|1[1-9])","10|2(?:[02-57-9]|1[1-9])","10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]"],"0$1",1],["(\\d{3})(\\d{7,8})","$1 $2",["9"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["80"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[3-578]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["1[3-9]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3 $4",["[12]"],"0$1",1]],"0",0,"0|(1(?:[12]\\d|79)\\d\\d)",0,0,0,[["(?:10(?:[02-79]\\d\\d|[18](?:0[1-9]|[1-9]\\d))|21(?:[18](?:0[1-9]|[1-9]\\d)|[2-79]\\d\\d))\\d{5}|(?:43[35]|754)\\d{7,8}|8(?:078\\d{7}|51\\d{7,8})|(?:10|(?:2|85)1|43[35]|754)(?:100\\d\\d|95\\d{3,4})|(?:2[02-57-9]|3(?:11|7[179])|4(?:[15]1|3[12])|5(?:1\\d|2[37]|3[12]|51|7[13-79]|9[15])|7(?:[39]1|5[57]|6[09])|8(?:71|98))(?:[02-8]\\d{7}|1(?:0(?:0\\d\\d(?:\\d{3})?|[1-9]\\d{5})|[1-9]\\d{6})|9(?:[0-46-9]\\d{6}|5\\d{3}(?:\\d(?:\\d{2})?)?))|(?:3(?:1[02-9]|35|49|5\\d|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|3[46-9]|5[2-9]|6[47-9]|7\\d|8[23])|5(?:3[03-9]|4[36]|5[02-9]|6[1-46]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[17]\\d|2[248]|3[04-9]|4[3-6]|5[0-3689]|6[2368]|9[02-9])|8(?:1[236-8]|2[5-7]|3\\d|5[2-9]|7[02-9]|8[36-8]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:[02-8]\\d{6}|1(?:0(?:0\\d\\d(?:\\d{2})?|[1-9]\\d{4})|[1-9]\\d{5})|9(?:[0-46-9]\\d{5}|5\\d{3,5}))",[7,8,9,10,11]],["1740[0-5]\\d{6}|1(?:[38]\\d|4[57]|[59][0-35-9]|6[25-7]|7[0-35-8])\\d{8}",[11]],["(?:(?:10|21)8|8)00\\d{7}",[10,12]],["16[08]\\d{5}",[8]],0,0,0,0,0,["400\\d{7}|950\\d{7,8}|(?:10|2[0-57-9]|3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))96\\d{3,4}",[7,8,9,10,11]]],"00"],"CO":["57","00(?:4(?:[14]4|56)|[579])","(?:60\\d\\d|9101)\\d{6}|(?:1\\d|3)\\d{9}",[10,11],[["(\\d{3})(\\d{7})","$1 $2",["6"],"($1)"],["(\\d{3})(\\d{7})","$1 $2",["3[0-357]|91"]],["(\\d)(\\d{3})(\\d{7})","$1-$2-$3",["1"],"0$1",0,"$1 $2 $3"]],"0",0,"0(4(?:[14]4|56)|[579])?",0,0,0,[["601055(?:[0-4]\\d|50)\\d\\d|6010(?:[0-4]\\d|5[0-4])\\d{4}|60[124-8][2-9]\\d{6}",[10]],["3333(?:0(?:0\\d|1[0-5])|[4-9]\\d\\d)\\d{3}|(?:3(?:24[1-9]|3(?:00|3[0-24-9]))|9101)\\d{6}|3(?:0[0-5]|1\\d|2[0-3]|5[01]|70)\\d{7}",[10]],["1800\\d{7}",[11]],["19(?:0[01]|4[78])\\d{7}",[11]]]],"CR":["506","00","(?:8\\d|90)\\d{8}|(?:[24-8]\\d{3}|3005)\\d{4}",[8,10],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[3-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[89]"]]],0,0,"(19(?:0[0-2468]|1[09]|20|66|77|99))",0,0,0,[["210[7-9]\\d{4}|2(?:[024-7]\\d|1[1-9])\\d{5}",[8]],["(?:3005\\d|6500[01])\\d{3}|(?:5[07]|6[0-4]|7[0-3]|8[3-9])\\d{6}",[8]],["800\\d{7}",[10]],["90[059]\\d{7}",[10]],0,0,0,0,["(?:210[0-6]|4\\d{3}|5100)\\d{4}",[8]]]],"CU":["53","119","[27]\\d{6,7}|[34]\\d{5,7}|(?:5|8\\d\\d)\\d{7}",[6,7,8,10],[["(\\d{2})(\\d{4,6})","$1 $2",["2[1-4]|[34]"],"(0$1)"],["(\\d)(\\d{6,7})","$1 $2",["7"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["5"],"0$1"],["(\\d{3})(\\d{7})","$1 $2",["8"],"0$1"]],"0",0,0,0,0,0,[["(?:3[23]|48)\\d{4,6}|(?:31|4[36]|8(?:0[25]|78)\\d)\\d{6}|(?:2[1-4]|4[1257]|7\\d)\\d{5,6}"],["5\\d{7}",[8]],["800\\d{7}",[10]],0,0,0,0,0,0,["807\\d{7}",[10]]]],"CV":["238","0","(?:[2-59]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[2-589]"]]],0,0,0,0,0,0,[["2(?:2[1-7]|3[0-8]|4[12]|5[1256]|6\\d|7[1-3]|8[1-5])\\d{4}"],["(?:36|5[1-389]|9\\d)\\d{5}"],["800\\d{4}"],0,0,0,0,0,["(?:3[3-5]|4[356])\\d{5}"]]],"CW":["599","00","(?:[34]1|60|(?:7|9\\d)\\d)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[3467]"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["9[4-8]"]]],0,0,0,0,0,"[69]",[["9(?:4(?:3[0-5]|4[14]|6\\d)|50\\d|7(?:2[014]|3[02-9]|4[4-9]|6[357]|77|8[7-9])|8(?:3[39]|[46]\\d|7[01]|8[57-9]))\\d{4}"],["953[01]\\d{4}|9(?:5[12467]|6[5-9])\\d{5}"],0,0,0,0,0,["955\\d{5}",[8]],0,["60[0-2]\\d{4}",[7]]]],"CX":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[["8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\d|7(?:0[01]|1[0-2])|958))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,0,["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],"CY":["357","00","(?:[279]\\d|[58]0)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[257-9]"]]],0,0,0,0,0,0,[["2[2-6]\\d{6}"],["9[4-79]\\d{6}"],["800\\d{5}"],["90[09]\\d{5}"],["700\\d{5}"],0,["(?:50|77)\\d{6}"],0,0,["80[1-9]\\d{5}"]]],"CZ":["420","00","(?:[2-578]\\d|60)\\d{7}|9\\d{8,11}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]|9[015-7]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3 $4",["96"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]],0,0,0,0,0,0,[["(?:2\\d|3[1257-9]|4[16-9]|5[13-9])\\d{7}"],["(?:60[1-8]|7(?:0[2-5]|[2379]\\d))\\d{6}"],["800\\d{6}"],["9(?:0[05689]|76)\\d{6}"],["70[01]\\d{6}"],0,["9(?:5\\d|7[2-4])\\d{6}"],0,["9[17]0\\d{6}"],["8[134]\\d{7}"]]],"DE":["49","00","[2579]\\d{5,14}|49(?:[34]0|69|8\\d)\\d\\d?|49(?:37|49|60|7[089]|9\\d)\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\d{1,8}|(?:1|[368]\\d|4[0-8])\\d{3,13}|49(?:[015]\\d|2[13]|31|[46][1-8])\\d{1,9}",[4,5,6,7,8,9,10,11,12,13,14,15],[["(\\d{2})(\\d{3,13})","$1 $2",["3[02]|40|[68]9"],"0$1"],["(\\d{3})(\\d{3,12})","$1 $2",["2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1","2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1"],"0$1"],["(\\d{4})(\\d{2,11})","$1 $2",["[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]","[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["138"],"0$1"],["(\\d{5})(\\d{2,10})","$1 $2",["3"],"0$1"],["(\\d{3})(\\d{5,11})","$1 $2",["181"],"0$1"],["(\\d{3})(\\d)(\\d{4,10})","$1 $2 $3",["1(?:3|80)|9"],"0$1"],["(\\d{3})(\\d{7,8})","$1 $2",["1[67]"],"0$1"],["(\\d{3})(\\d{7,12})","$1 $2",["8"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["185","1850","18500"],"0$1"],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["18[68]"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["15[0568]"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["15[1279]"],"0$1"],["(\\d{3})(\\d{8})","$1 $2",["18"],"0$1"],["(\\d{3})(\\d{2})(\\d{7,8})","$1 $2 $3",["1(?:6[023]|7)"],"0$1"],["(\\d{4})(\\d{2})(\\d{7})","$1 $2 $3",["15[279]"],"0$1"],["(\\d{3})(\\d{2})(\\d{8})","$1 $2 $3",["15"],"0$1"]],"0",0,0,0,0,0,[["32\\d{9,11}|49[1-6]\\d{10}|322\\d{6}|49[0-7]\\d{3,9}|(?:[34]0|[68]9)\\d{3,13}|(?:2(?:0[1-689]|[1-3569]\\d|4[0-8]|7[1-7]|8[0-7])|3(?:[3569]\\d|4[0-79]|7[1-7]|8[1-8])|4(?:1[02-9]|[2-48]\\d|5[0-6]|6[0-8]|7[0-79])|5(?:0[2-8]|[124-6]\\d|[38][0-8]|[79][0-7])|6(?:0[02-9]|[1-358]\\d|[47][0-8]|6[1-9])|7(?:0[2-8]|1[1-9]|[27][0-7]|3\\d|[4-6][0-8]|8[0-5]|9[013-7])|8(?:0[2-9]|1[0-79]|2\\d|3[0-46-9]|4[0-6]|5[013-9]|6[1-8]|7[0-8]|8[0-24-6])|9(?:0[6-9]|[1-4]\\d|[589][0-7]|6[0-8]|7[0-467]))\\d{3,12}",[5,6,7,8,9,10,11,12,13,14,15]],["15[0-25-9]\\d{8}|1(?:6[023]|7\\d)\\d{7,8}",[10,11]],["800\\d{7,12}",[10,11,12,13,14,15]],["(?:137[7-9]|900(?:[135]|9\\d))\\d{6}",[10,11]],["700\\d{8}",[11]],0,["18(?:1\\d{5,11}|[2-9]\\d{8})",[8,9,10,11,12,13,14]],["16(?:4\\d{1,10}|[89]\\d{1,11})",[4,5,6,7,8,9,10,11,12,13,14]],0,["180\\d{5,11}|13(?:7[1-6]\\d\\d|8)\\d{4}",[7,8,9,10,11,12,13,14]]]],"DJ":["253","00","(?:2\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[27]"]]],0,0,0,0,0,0,[["2(?:1[2-5]|7[45])\\d{5}"],["77\\d{6}"]]],"DK":["45","00","[2-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-9]"]]],0,0,0,0,0,0,[["(?:[2-7]\\d|8[126-9]|9[1-46-9])\\d{6}"],[""],["80\\d{6}"],["90\\d{6}"]]],"DM":["1","011","(?:[58]\\d\\d|767|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","767$1",0,"767",[["767(?:2(?:55|66)|4(?:2[01]|4[0-25-9])|50[0-4])\\d{4}"],["767(?:2(?:[2-4689]5|7[5-7])|31[5-7]|61[1-8]|70[1-6])\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"DO":["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,0,0,0,"8001|8[024]9",[["8(?:[04]9[2-9]\\d\\d|29(?:2(?:[0-59]\\d|6[04-9]|7[0-27]|8[0237-9])|3(?:[0-35-9]\\d|4[7-9])|[45]\\d\\d|6(?:[0-27-9]\\d|[3-5][1-9]|6[0135-8])|7(?:0[013-9]|[1-37]\\d|4[1-35689]|5[1-4689]|6[1-57-9]|8[1-79]|9[1-8])|8(?:0[146-9]|1[0-48]|[248]\\d|3[1-79]|5[01589]|6[013-68]|7[124-8]|9[0-8])|9(?:[0-24]\\d|3[02-46-9]|5[0-79]|60|7[0169]|8[57-9]|9[02-9])))\\d{4}"],["8[024]9[2-9]\\d{6}"],["8(?:00(?:14|[2-9]\\d)|(?:33|44|55|66|77|88)[2-9]\\d)\\d{5}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"DZ":["213","00","(?:[1-4]|[5-79]\\d|80)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["9"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-8]"],"0$1"]],"0",0,0,0,0,0,[["9619\\d{5}|(?:1\\d|2[013-79]|3[0-8]|4[013-689])\\d{6}"],["(?:5(?:4[0-29]|5\\d|6[0-2])|6(?:[569]\\d|7[0-6])|7[7-9]\\d)\\d{6}",[9]],["800\\d{6}",[9]],["80[3-689]1\\d{5}",[9]],0,0,0,0,["98[23]\\d{6}",[9]],["80[12]1\\d{5}",[9]]]],"EC":["593","00","1\\d{9,10}|(?:[2-7]|9\\d)\\d{7}",[8,9,10,11],[["(\\d)(\\d{3})(\\d{4})","$1 $2-$3",["[2-7]"],"(0$1)",0,"$1-$2-$3"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{3})(\\d{3,4})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[["[2-7][2-7]\\d{6}",[8]],["964[0-2]\\d{5}|9(?:39|[57][89]|6[0-36-9]|[89]\\d)\\d{6}",[9]],["1800\\d{7}|1[78]00\\d{6}",[10,11]],0,0,0,0,0,["[2-7]890\\d{4}",[8]]]],"EE":["372","00","8\\d{9}|[4578]\\d{7}|(?:[3-8]\\d|90)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88","[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88"]],["(\\d{4})(\\d{3,4})","$1 $2",["[45]|8(?:00|[1-49])","[45]|8(?:00[1-9]|[1-49])"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["(?:3[23589]|4[3-8]|6\\d|7[1-9]|88)\\d{5}",[7]],["(?:5\\d{5}|8(?:1(?:0(?:000|[3-9]\\d\\d)|(?:1(?:0[236]|1\\d)|(?:23|[3-79]\\d)\\d)\\d)|2(?:0(?:000|(?:19|[2-7]\\d)\\d)|(?:(?:[124-6]\\d|3[5-9])\\d|7(?:[3679]\\d|8[13-9])|8(?:[2-6]\\d|7[01]))\\d)|[349]\\d{4}))\\d\\d|5(?:(?:[02]\\d|5[0-478])\\d|1(?:[0-8]\\d|95)|6(?:4[0-4]|5[1-589]))\\d{3}",[7,8]],["800(?:(?:0\\d\\d|1)\\d|[2-9])\\d{3}"],["(?:40\\d\\d|900)\\d{4}",[7,8]],["70[0-2]\\d{5}",[8]]]],"EG":["20","00","[189]\\d{8,9}|[24-6]\\d{8}|[135]\\d{7}",[8,9,10],[["(\\d)(\\d{7,8})","$1 $2",["[23]"],"0$1"],["(\\d{2})(\\d{6,7})","$1 $2",["1[35]|[4-6]|8[2468]|9[235-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[189]"],"0$1"]],"0",0,0,0,0,0,[["13[23]\\d{6}|(?:15|57)\\d{6,7}|(?:2[2-4]|3|4[05-8]|5[05]|6[24-689]|8[2468]|9[235-7])\\d{7}",[8,9]],["1[0-25]\\d{8}",[10]],["800\\d{7}",[10]],["900\\d{7}",[10]]]],"EH":["212","00","[5-8]\\d{8}",[9],0,"0",0,0,0,0,"528[89]",[["528[89]\\d{5}"],["(?:6(?:[0-79]\\d|8[0-247-9])|7(?:[017]\\d|2[0-2]|6[0-8]|8[0-3]))\\d{6}"],["80\\d{7}"],["89\\d{7}"],0,0,0,0,["592(?:4[0-2]|93)\\d{4}"]]],"ER":["291","00","[178]\\d{6}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[178]"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:1[12568]|[24]0|55|6[146])|8\\d\\d)\\d{4}"],["(?:17[1-3]|7\\d\\d)\\d{4}"]]],"ES":["34","00","[5-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]00"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-9]"]]],0,0,0,0,0,0,[["96906(?:0[0-8]|1[1-9]|[2-9]\\d)\\d\\d|9(?:69(?:0[0-57-9]|[1-9]\\d)|73(?:[0-8]\\d|9[1-9]))\\d{4}|(?:8(?:[1356]\\d|[28][0-8]|[47][1-9])|9(?:[135]\\d|[268][0-8]|4[1-9]|7[124-9]))\\d{6}"],["(?:590[16]00\\d|9(?:6906(?:09|10)|7390\\d\\d))\\d\\d|(?:6\\d|7[1-48])\\d{7}"],["[89]00\\d{6}"],["80[367]\\d{6}"],["70\\d{7}"],0,["51\\d{7}"],0,0,["90[12]\\d{6}"]]],"ET":["251","00","(?:11|[2-579]\\d)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-579]"],"0$1"]],"0",0,0,0,0,0,[["11667[01]\\d{3}|(?:11(?:1(?:1[124]|2[2-7]|3[1-5]|5[5-8]|8[6-8])|2(?:13|3[6-8]|5[89]|7[05-9]|8[2-6])|3(?:2[01]|3[0-289]|4[1289]|7[1-4]|87)|4(?:1[69]|3[2-49]|4[0-3]|6[5-8])|5(?:1[578]|44|5[0-4])|6(?:1[78]|2[69]|39|4[5-7]|5[1-5]|6[0-59]|8[015-8]))|2(?:2(?:11[1-9]|22[0-7]|33\\d|44[1467]|66[1-68])|5(?:11[124-6]|33[2-8]|44[1467]|55[14]|66[1-3679]|77[124-79]|880))|3(?:3(?:11[0-46-8]|(?:22|55)[0-6]|33[0134689]|44[04]|66[01467])|4(?:44[0-8]|55[0-69]|66[0-3]|77[1-5]))|4(?:6(?:119|22[0-24-7]|33[1-5]|44[13-69]|55[14-689]|660|88[1-4])|7(?:(?:11|22)[1-9]|33[13-7]|44[13-6]|55[1-689]))|5(?:7(?:227|55[05]|(?:66|77)[14-8])|8(?:11[149]|22[013-79]|33[0-68]|44[013-8]|550|66[1-5]|77\\d)))\\d{4}"],["7001\\d{5}|(?:7(?:0[1-9]|1[01]|77|86|99)|9\\d\\d)\\d{6}"]]],"FI":["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","[1-35689]\\d{4}|7\\d{10,11}|(?:[124-7]\\d|3[0-46-9])\\d{8}|[1-9]\\d{5,8}",[5,6,7,8,9,10,11,12],[["(\\d)(\\d{4,9})","$1 $2",["[2568][1-8]|3(?:0[1-9]|[1-9])|9"],"0$1"],["(\\d{3})(\\d{3,7})","$1 $2",["[12]00|[368]|70[07-9]"],"0$1"],["(\\d{2})(\\d{4,8})","$1 $2",["[1245]|7[135]"],"0$1"],["(\\d{2})(\\d{6,10})","$1 $2",["7"],"0$1"]],"0",0,0,0,0,"1[03-79]|[2-9]",[["(?:1[3-79][1-8]|[235689][1-8]\\d)\\d{2,6}",[5,6,7,8,9]],["4946\\d{2,6}|(?:4[0-8]|50)\\d{4,8}",[6,7,8,9,10]],["800\\d{4,6}",[7,8,9]],["[67]00\\d{5,6}",[8,9]],0,0,["20\\d{4,8}|60[12]\\d{5,6}|7(?:099\\d{4,5}|5[03-9]\\d{3,7})|20[2-59]\\d\\d|(?:606|7(?:0[78]|1|3\\d))\\d{7}|(?:10|29|3[09]|70[1-5]\\d)\\d{4,8}"]],"00"],"FJ":["679","0(?:0|52)","45\\d{5}|(?:0800\\d|[235-9])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1 $2",["[235-9]|45"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]]],0,0,0,0,0,0,[["603\\d{4}|(?:3[0-5]|6[25-7]|8[58])\\d{5}",[7]],["(?:[279]\\d|45|5[01568]|8[034679])\\d{5}",[7]],["0800\\d{7}",[11]]],"00"],"FK":["500","00","[2-7]\\d{4}",[5],0,0,0,0,0,0,0,[["[2-47]\\d{4}"],["[56]\\d{4}"]]],"FM":["691","00","(?:[39]\\d\\d|820)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[389]"]]],0,0,0,0,0,0,[["31(?:00[67]|208|309)\\d\\d|(?:3(?:[2357]0[1-9]|602|804|905)|(?:820|9[2-6]\\d)\\d)\\d{3}"],["31(?:00[67]|208|309)\\d\\d|(?:3(?:[2357]0[1-9]|602|804|905)|(?:820|9[2-7]\\d)\\d)\\d{3}"]]],"FO":["298","00","[2-9]\\d{5}",[6],[["(\\d{6})","$1",["[2-9]"]]],0,0,"(10(?:01|[12]0|88))",0,0,0,[["(?:20|[34]\\d|8[19])\\d{4}"],["(?:[27][1-9]|5\\d|9[16])\\d{4}"],["80[257-9]\\d{3}"],["90(?:[13-5][15-7]|2[125-7]|9\\d)\\d\\d"],0,0,0,0,["(?:6[0-36]|88)\\d{4}"]]],"FR":["33","00","[1-9]\\d{8}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0 $1"],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[1-79]"],"0$1"]],"0",0,0,0,0,0,[["(?:[1-35]\\d|4[1-9])\\d{7}"],["(?:6(?:[0-24-8]\\d|3[0-8]|9[589])|7(?:00|[3-9]\\d))\\d{6}"],["80[0-5]\\d{6}"],["836(?:0[0-36-9]|[1-9]\\d)\\d{4}|8(?:1[2-9]|2[2-47-9]|3[0-57-9]|[569]\\d|8[0-35-9])\\d{6}"],0,0,["80[6-9]\\d{6}"],0,["9\\d{8}"],["8(?:1[01]|2[0156]|4[02]|84)\\d{6}"]]],"GA":["241","00","(?:[067]\\d|11)\\d{6}|[2-7]\\d{6}",[7,8],[["(\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-7]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["11|[67]"],"0$1"]],0,0,"0(11\\d{6}|60\\d{6}|61\\d{6}|6[256]\\d{6}|7[467]\\d{6})","$1",0,0,[["[01]1\\d{6}",[8]],["(?:(?:0[2-7]|7[467])\\d|6(?:0[0-4]|10|[256]\\d))\\d{5}|[2-7]\\d{6}"]]],"GB":["44","00","[1-357-9]\\d{9}|[18]\\d{8}|8\\d{6}",[7,9,10],[["(\\d{3})(\\d{4})","$1 $2",["800","8001","80011","800111","8001111"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["845","8454","84546","845464"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["800"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["1(?:38|5[23]|69|76|94)","1(?:(?:38|69)7|5(?:24|39)|768|946)","1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["1(?:[2-69][02-9]|[78])"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[25]|7(?:0|6[02-9])","[25]|7(?:0|6(?:[03-9]|2[356]))"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[1389]"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:1(?:3(?:[0-58]\\d\\d|73[0235])|4(?:[0-5]\\d\\d|69[7-9]|70[013579])|(?:(?:5[0-26-9]|[78][0-49])\\d|6(?:[0-4]\\d|50))\\d)|2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\d)\\d\\d|1(?:[0-7]\\d\\d|8(?:[02]\\d|1[0-246-9])))|(?:3(?:0\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\d\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\d{3})\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\d)|76\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\d|7[4-79])|295[5-7]|35[34]\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\d{3}",[9,10]],["7(?:457[0-57-9]|700[01]|911[028])\\d{5}|7(?:[1-3]\\d\\d|4(?:[0-46-9]\\d|5[0-689])|5(?:0[0-8]|[13-9]\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\d|8[02-9]|9[0-689])|8(?:[014-9]\\d|[23][0-8])|9(?:[024-9]\\d|1[02-9]|3[0-689]))\\d{6}",[10]],["80[08]\\d{7}|800\\d{6}|8001111"],["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[2-49]))\\d{7}|845464\\d",[7,10]],["70\\d{8}",[10]],0,["(?:3[0347]|55)\\d{8}",[10]],["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}",[10]],["56\\d{8}",[10]]],0," x"],"GD":["1","011","(?:473|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","473$1",0,"473",[["473(?:2(?:3[0-2]|69)|3(?:2[89]|86)|4(?:[06]8|3[5-9]|4[0-49]|5[5-79]|73|90)|63[68]|7(?:58|84)|800|938)\\d{4}"],["473(?:4(?:0[2-79]|1[04-9]|2[0-5]|58)|5(?:2[01]|3[3-8])|901)\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"GE":["995","00","(?:[3-57]\\d\\d|800)\\d{6}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["32"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[57]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[348]"],"0$1"]],"0",0,0,0,0,0,[["(?:3(?:[256]\\d|4[124-9]|7[0-4])|4(?:1\\d|2[2-7]|3[1-79]|4[2-8]|7[239]|9[1-7]))\\d{6}"],["5(?:(?:0555|1(?:[17]77|555))[5-9]|757(?:7[7-9]|8[01]))\\d{3}|5(?:0070|11(?:33|51)|[25]222|3333)[0-4]\\d{3}|5(?:00(?:0\\d|5[05])|11(?:00|[124]\\d|3[01])|5200|75(?:00|[57]5)|8(?:0(?:[01]\\d|2[0-4])|58[89]|8(?:55|88)))\\d{4}|(?:5(?:[14]4|5[0157-9]|68|7[0147-9]|9[1-35-9])|790)\\d{6}"],["800\\d{6}"],0,0,0,0,0,["70[67]\\d{6}"]]],"GF":["594","00","(?:[56]94|80\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["594(?:[0239]\\d|1[0-2]|4[03-9]|5[6-9]|6[0-3]|80)\\d{4}"],["694(?:[0-249]\\d|3[0-8])\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976\\d{6}"]]],"GG":["44","00","(?:1481|[357-9]\\d{3})\\d{6}|8\\d{6}(?:\\d{2})?",[7,9,10],0,"0",0,"0|([25-9]\\d{5})$","1481$1",0,0,[["1481[25-9]\\d{5}",[10]],["7(?:(?:781|839)\\d|911[17])\\d{5}",[10]],["80[08]\\d{7}|800\\d{6}|8001111"],["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[0-3]))\\d{7}|845464\\d",[7,10]],["70\\d{8}",[10]],0,["(?:3[0347]|55)\\d{8}",[10]],["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}",[10]],["56\\d{8}",[10]]]],"GH":["233","00","(?:[235]\\d{3}|800)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[235]"],"0$1"]],"0",0,0,0,0,0,[["3082[0-5]\\d{4}|3(?:0(?:[237]\\d|8[01])|[167](?:2[0-6]|7\\d|80)|2(?:2[0-5]|7\\d|80)|3(?:2[0-3]|7\\d|80)|4(?:2[013-9]|3[01]|7\\d|80)|5(?:2[0-7]|7\\d|80)|8(?:2[0-2]|7\\d|80)|9(?:[28]0|7\\d))\\d{5}",[9]],["(?:2(?:[0346-9]\\d|5[67])|5(?:[0457]\\d|6[01]|9[1-9]))\\d{6}",[9]],["800\\d{5}",[8]]]],"GI":["350","00","(?:[25]\\d\\d|606)\\d{5}",[8],[["(\\d{3})(\\d{5})","$1 $2",["2"]]],0,0,0,0,0,0,[["21(?:6[24-7]\\d|90[0-2])\\d{3}|2(?:00|2[25])\\d{5}"],["(?:5[146-8]\\d|606)\\d{5}"]]],"GL":["299","00","(?:19|[2-689]\\d|70)\\d{4}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["19|[2-9]"]]],0,0,0,0,0,0,[["(?:19|3[1-7]|6[14689]|70|8[14-79]|9\\d)\\d{4}"],["[245]\\d{5}"],["80\\d{4}"],0,0,0,0,0,["3[89]\\d{4}"]]],"GM":["220","00","[2-9]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]],0,0,0,0,0,0,[["(?:4(?:[23]\\d\\d|4(?:1[024679]|[6-9]\\d))|5(?:5(?:3\\d|4[0-7])|6[67]\\d|7(?:1[04]|2[035]|3[58]|48))|8\\d{3})\\d{3}"],["(?:[23679]\\d|5[0-389])\\d{5}"]]],"GN":["224","00","722\\d{6}|(?:3|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["3"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[67]"]]],0,0,0,0,0,0,[["3(?:0(?:24|3[12]|4[1-35-7]|5[13]|6[189]|[78]1|9[1478])|1\\d\\d)\\d{4}",[8]],["6[0-356]\\d{7}",[9]],0,0,0,0,0,0,["722\\d{6}",[9]]]],"GP":["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["590(?:0[1-68]|[14][0-24-9]|2[0-68]|3[1289]|5[3-579]|6[0-289]|7[08]|8[0-689]|9\\d)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],"GQ":["240","00","222\\d{6}|(?:3\\d|55|[89]0)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235]"]],["(\\d{3})(\\d{6})","$1 $2",["[89]"]]],0,0,0,0,0,0,[["33[0-24-9]\\d[46]\\d{4}|3(?:33|5\\d)\\d[7-9]\\d{4}"],["(?:222|55\\d)\\d{6}"],["80\\d[1-9]\\d{5}"],["90\\d[1-9]\\d{5}"]]],"GR":["30","00","5005000\\d{3}|8\\d{9,11}|(?:[269]\\d|70)\\d{8}",[10,11,12],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["21|7"]],["(\\d{4})(\\d{6})","$1 $2",["2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2689]"]],["(\\d{3})(\\d{3,4})(\\d{5})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["2(?:1\\d\\d|2(?:2[1-46-9]|[36][1-8]|4[1-7]|5[1-4]|7[1-5]|[89][1-9])|3(?:1\\d|2[1-57]|[35][1-3]|4[13]|7[1-7]|8[124-6]|9[1-79])|4(?:1\\d|2[1-8]|3[1-4]|4[13-5]|6[1-578]|9[1-5])|5(?:1\\d|[29][1-4]|3[1-5]|4[124]|5[1-6])|6(?:1\\d|[269][1-6]|3[1245]|4[1-7]|5[13-9]|7[14]|8[1-5])|7(?:1\\d|2[1-5]|3[1-6]|4[1-7]|5[1-57]|6[135]|9[125-7])|8(?:1\\d|2[1-5]|[34][1-4]|9[1-57]))\\d{6}",[10]],["68[57-9]\\d{7}|(?:69|94)\\d{8}",[10]],["800\\d{7,9}"],["90[19]\\d{7}",[10]],["70\\d{8}",[10]],0,["5005000\\d{3}",[10]],0,0,["8(?:0[16]|12|[27]5|50)\\d{7}",[10]]]],"GT":["502","00","(?:1\\d{3}|[2-7])\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[["[267][2-9]\\d{6}",[8]],["[3-5]\\d{7}",[8]],["18[01]\\d{8}",[11]],["19\\d{9}",[11]]]],"GU":["1","011","(?:[58]\\d\\d|671|900)\\d{7}",[10],0,"1",0,"1|([3-9]\\d{6})$","671$1",0,"671",[["671(?:3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[0236-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[0479]7|2[0167]|3[45]|8[7-9])|8(?:[2-57-9]8|6[48])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[78]))\\d{4}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"GW":["245","00","[49]\\d{8}|4\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["40"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"]]],0,0,0,0,0,0,[["443\\d{6}",[9]],["9(?:5\\d|6[569]|77)\\d{6}",[9]],0,0,0,0,0,0,["40\\d{5}",[7]]]],"GY":["592","001","9008\\d{3}|(?:[2-467]\\d\\d|862)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-46-9]"]]],0,0,0,0,0,0,[["(?:2(?:1[6-9]|2[0-35-9]|3[1-4]|5[3-9]|6\\d|7[0-24-79])|3(?:2[25-9]|3\\d)|4(?:4[0-24]|5[56])|77[1-57])\\d{4}"],["(?:6\\d\\d|70[015-7])\\d{4}"],["(?:289|862)\\d{4}"],["9008\\d{3}"]]],"HK":["852","00(?:30|5[09]|[126-9]?)","8[0-46-9]\\d{6,7}|9\\d{4,7}|(?:[2-7]|9\\d{3})\\d{7}",[5,6,7,8,9,11],[["(\\d{3})(\\d{2,5})","$1 $2",["900","9003"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[1-4]|9(?:0[1-9]|[1-8])"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]],["(\\d{3})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]],0,0,0,0,0,0,[["(?:2(?:[13-9]\\d|2[013-9])\\d|3(?:(?:[1569][0-24-9]|4[0-246-9]|7[0-24-69])\\d|8(?:[45][0-8]|6[01]|9\\d))|58(?:0[1-8]|1[2-9]))\\d{4}",[8]],["(?:4(?:44[5-9]|6(?:0[0-7]|1[0-6]|4[0-57-9]|6[0-4]|7[0-8]))|573[0-6]|6(?:26[013-8]|66[0-3])|70(?:7[1-5]|8[0-4])|848[015-9]|9(?:29[013-9]|59[0-4]))\\d{4}|(?:4(?:4[01]|6[2358])|5(?:[1-59][0-46-9]|6[0-4689]|7[0-246-9])|6(?:0[1-9]|[13-59]\\d|[268][0-57-9]|7[0-79])|84[09]|9(?:0[1-9]|1[02-9]|[2358][0-8]|[467]\\d))\\d{5}",[8]],["800\\d{6}",[9]],["900(?:[0-24-9]\\d{7}|3\\d{1,4})",[5,6,7,8,11]],["8(?:1[0-4679]\\d|2(?:[0-36]\\d|7[0-4])|3(?:[034]\\d|2[09]|70))\\d{4}",[8]],0,["30(?:0[1-9]|[15-7]\\d|2[047]|89)\\d{4}",[8]],["7(?:1(?:0[0-38]|1[0-3679]|3[013]|69|9[0136])|2(?:[02389]\\d|1[18]|7[27-9])|3(?:[0-38]\\d|7[0-369]|9[2357-9])|47\\d|5(?:[178]\\d|5[0-5])|6(?:0[0-7]|2[236-9]|[35]\\d)|7(?:[27]\\d|8[7-9])|8(?:[23689]\\d|7[1-9])|9(?:[025]\\d|6[0-246-8]|7[0-36-9]|8[238]))\\d{4}",[8]]],"00"],"HN":["504","00","8\\d{10}|[237-9]\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1-$2",["[237-9]"]]],0,0,0,0,0,0,[["2(?:2(?:0[0-359]|1[1-367]|[23]\\d|4[03-6]|5[57]|6[245]|7[0135689]|8[01346-9]|9[0-2])|4(?:0[78]|2[3-59]|3[13-9]|4[0-68]|5[1-35])|5(?:0[7-9]|16|4[03-5]|5\\d|6[014-6]|7[04]|80)|6(?:[056]\\d|17|2[067]|3[04]|4[0-378]|[78][0-8]|9[01])|7(?:6[46-9]|7[02-9]|8[034]|91)|8(?:79|8[0-357-9]|9[1-57-9]))\\d{4}",[8]],["[37-9]\\d{7}",[8]],["8002\\d{7}",[11]]]],"HR":["385","00","(?:[24-69]\\d|3[0-79])\\d{7}|80\\d{5,7}|[1-79]\\d{7}|6\\d{5,6}",[6,7,8,9],[["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["6[01]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{4})(\\d{3})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-5]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"]],"0",0,0,0,0,0,[["1\\d{7}|(?:2[0-3]|3[1-5]|4[02-47-9]|5[1-3])\\d{6,7}",[8,9]],["98\\d{6,7}|975(?:1\\d|77|9[67])\\d{4}|9(?:0[1-9]|[1259]\\d|7[0679])\\d{6}",[8,9]],["80[01]\\d{4,6}",[7,8,9]],["6[01459]\\d{6}|6[01]\\d{4,5}",[6,7,8]],["7[45]\\d{6}",[8]],0,["62\\d{6,7}|72\\d{6}",[8,9]]]],"HT":["509","00","[2-489]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[2-489]"]]],0,0,0,0,0,0,[["2(?:2\\d|5[1-5]|81|9[149])\\d{5}"],["[34]\\d{7}"],["8\\d{7}"],0,0,0,0,0,["9(?:[67][0-4]|8[0-3589]|9\\d)\\d{5}"]]],"HU":["36","00","[235-7]\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"06 $1"]],"06",0,0,0,0,0,[["(?:1\\d|[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6[23689]|8[2-57-9]|9[2-69])\\d{6}",[8]],["(?:[257]0|3[01])\\d{7}",[9]],["(?:[48]0\\d|680[29])\\d{5}"],["9[01]\\d{6}",[8]],0,0,["38\\d{7}",[9]],0,["21\\d{7}",[9]]]],"ID":["62","00[89]","(?:(?:00[1-9]|8\\d)\\d{4}|[1-36])\\d{6}|00\\d{10}|[1-9]\\d{8,10}|[2-9]\\d{7}",[7,8,9,10,11,12,13],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["15"]],["(\\d{2})(\\d{5,9})","$1 $2",["2[124]|[36]1"],"(0$1)"],["(\\d{3})(\\d{5,7})","$1 $2",["800"],"0$1"],["(\\d{3})(\\d{5,8})","$1 $2",["[2-79]"],"(0$1)"],["(\\d{3})(\\d{3,4})(\\d{3})","$1-$2-$3",["8[1-35-9]"],"0$1"],["(\\d{3})(\\d{6,8})","$1 $2",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["804"],"0$1"],["(\\d{3})(\\d)(\\d{3})(\\d{3})","$1 $2 $3 $4",["80"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1-$2-$3",["8"],"0$1"]],"0",0,0,0,0,0,[["2[124]\\d{7,8}|619\\d{8}|2(?:1(?:14|500)|2\\d{3})\\d{3}|61\\d{5,8}|(?:2(?:[35][1-4]|6[0-8]|7[1-6]|8\\d|9[1-8])|3(?:1|[25][1-8]|3[1-68]|4[1-3]|6[1-3568]|7[0-469]|8\\d)|4(?:0[1-589]|1[01347-9]|2[0-36-8]|3[0-24-68]|43|5[1-378]|6[1-5]|7[134]|8[1245])|5(?:1[1-35-9]|2[25-8]|3[124-9]|4[1-3589]|5[1-46]|6[1-8])|6(?:[25]\\d|3[1-69]|4[1-6])|7(?:02|[125][1-9]|[36]\\d|4[1-8]|7[0-36-9])|9(?:0[12]|1[013-8]|2[0-479]|5[125-8]|6[23679]|7[159]|8[01346]))\\d{5,8}",[7,8,9,10,11]],["8[1-35-9]\\d{7,10}",[9,10,11,12]],["00[17]803\\d{7}|(?:177\\d|800)\\d{5,7}|001803\\d{6}",[8,9,10,11,12,13]],["809\\d{7}",[10]],0,0,["(?:1500|8071\\d{3})\\d{3}",[7,10]],0,0,["804\\d{7}",[10]]]],"IE":["353","00","(?:1\\d|[2569])\\d{6,8}|4\\d{6,9}|7\\d{8}|8\\d{8,9}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["2[24-9]|47|58|6[237-9]|9[35-9]"],"(0$1)"],["(\\d{3})(\\d{5})","$1 $2",["[45]0"],"(0$1)"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["1"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2569]|4[1-69]|7[14]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["81"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[78]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["4"],"(0$1)"],["(\\d{2})(\\d)(\\d{3})(\\d{4})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["(?:1\\d|21)\\d{6,7}|(?:2[24-9]|4(?:0[24]|5\\d|7)|5(?:0[45]|1\\d|8)|6(?:1\\d|[237-9])|9(?:1\\d|[35-9]))\\d{5}|(?:23|4(?:[1-469]|8\\d)|5[23679]|6[4-6]|7[14]|9[04])\\d{7}"],["8(?:22|[35-9]\\d)\\d{6}",[9]],["1800\\d{6}",[10]],["15(?:1[2-8]|[2-8]0|9[089])\\d{6}",[10]],["700\\d{6}",[9]],0,["818\\d{6}",[9]],0,["76\\d{7}",[9]],["18[59]0\\d{6}",[10]]]],"IL":["972","0(?:0|1[2-9])","1\\d{6}(?:\\d{3,5})?|[57]\\d{8}|[1-489]\\d{7}",[7,8,9,10,11,12],[["(\\d{4})(\\d{3})","$1-$2",["125"]],["(\\d{4})(\\d{2})(\\d{2})","$1-$2-$3",["121"]],["(\\d)(\\d{3})(\\d{4})","$1-$2-$3",["[2-489]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1-$2-$3",["12"]],["(\\d{4})(\\d{6})","$1-$2",["159"]],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3-$4",["1[7-9]"]],["(\\d{3})(\\d{1,2})(\\d{3})(\\d{4})","$1-$2 $3-$4",["15"]]],"0",0,0,0,0,0,[["153\\d{8,9}|29[1-9]\\d{5}|(?:2[0-8]|[3489]\\d)\\d{6}",[8,11,12]],["5(?:(?:[02368]\\d|[19][2-9]|4[1-9])\\d|5(?:01|1[79]|2[2-9]|3[0-3]|4[34]|5[015689]|6[6-8]|7[0-267]|8[7-9]|9[1-9]))\\d{5}",[9]],["1(?:255|80[019]\\d{3})\\d{3}",[7,10]],["1212\\d{4}|1(?:200|9(?:0[0-2]|19))\\d{6}",[8,10]],0,0,["1599\\d{6}",[10]],0,["7(?:380|8(?:33|55|77|81))\\d{5}|7(?:18|2[23]|3[237]|47|6[258]|7\\d|82|9[2-9])\\d{6}",[9]],["1700\\d{6}",[10]]]],"IM":["44","00","1624\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([25-8]\\d{5})$","1624$1",0,"74576|(?:16|7[56])24",[["1624(?:230|[5-8]\\d\\d)\\d{3}"],["76245[06]\\d{4}|7(?:4576|[59]24\\d|624[0-4689])\\d{5}"],["808162\\d{4}"],["8(?:440[49]06|72299\\d)\\d{3}|(?:8(?:45|70)|90[0167])624\\d{4}"],["70\\d{8}"],0,["3440[49]06\\d{3}|(?:3(?:08162|3\\d{4}|45624|7(?:0624|2299))|55\\d{4})\\d{4}"],0,["56\\d{8}"]]],"IN":["91","00","(?:000800|[2-9]\\d\\d)\\d{7}|1\\d{7,12}",[8,9,10,11,12,13],[["(\\d{8})","$1",["5(?:0|2[23]|3[03]|[67]1|88)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)"],0,1],["(\\d{4})(\\d{4,5})","$1 $2",["180","1800"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["140"],0,1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["11|2[02]|33|4[04]|79[1-7]|80[2-46]","11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])","11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]"],"0$1",1],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807","1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]","1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\d|7(?:1(?:[013-8]\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\d|5[0-367])|70[13-7]))[2-7]"],"0$1",1],["(\\d{5})(\\d{5})","$1 $2",["[6-9]"],"0$1",1],["(\\d{4})(\\d{2,4})(\\d{4})","$1 $2 $3",["1(?:6|8[06])","1(?:6|8[06]0)"],0,1],["(\\d{4})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["18"],0,1]],"0",0,0,0,0,0,[["2717(?:[2-7]\\d|95)\\d{4}|(?:271[0-689]|782[0-6])[2-7]\\d{5}|(?:170[24]|2(?:(?:[02][2-79]|90)\\d|80[13468])|(?:3(?:23|80)|683|79[1-7])\\d|4(?:20[24]|72[2-8])|552[1-7])\\d{6}|(?:11|33|4[04]|80)[2-7]\\d{7}|(?:342|674|788)(?:[0189][2-7]|[2-7]\\d)\\d{5}|(?:1(?:2[0-249]|3[0-25]|4[145]|[59][14]|6[014]|7[1257]|8[01346])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])|3(?:26|4[13]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[014-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91))[2-7]\\d{6}|(?:1(?:2[35-8]|3[346-9]|4[236-9]|[59][0235-9]|6[235-9]|7[34689]|8[257-9])|2(?:1[134689]|3[24-8]|4[2-8]|5[25689]|6[2-4679]|7[3-79]|8[2-479]|9[235-9])|3(?:01|1[79]|2[1245]|4[5-8]|5[125689]|6[235-7]|7[157-9]|8[2-46-8])|4(?:1[14578]|2[5689]|3[2-467]|5[4-7]|6[35]|73|8[2689]|9[2389])|5(?:[16][146-9]|2[14-8]|3[1346]|4[14-69]|5[46]|7[2-4]|8[2-8]|9[246])|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])|7(?:1[013-9]|2[0235-9]|3[2679]|4[1-35689]|5[2-46-9]|[67][02-9]|8[013-7]|9[089])|8(?:1[1357-9]|2[235-8]|3[03-57-9]|4[0-24-9]|5\\d|6[2457-9]|7[1-6]|8[1256]|9[2-4]))\\d[2-7]\\d{5}",[10]],["(?:61279|7(?:887[02-9]|9(?:313|79[07-9]))|8(?:079[04-9]|(?:84|91)7[02-8]))\\d{5}|(?:6(?:12|[2-47]1|5[17]|6[13]|80)[0189]|7(?:1(?:2[0189]|9[0-5])|2(?:[14][017-9]|8[0-59])|3(?:2[5-8]|[34][017-9]|9[016-9])|4(?:1[015-9]|[29][89]|39|8[389])|5(?:[15][017-9]|2[04-9]|9[7-9])|6(?:0[0-47]|1[0-257-9]|2[0-4]|3[19]|5[4589])|70[0289]|88[089]|97[02-8])|8(?:0(?:6[67]|7[02-8])|70[017-9]|84[01489]|91[0-289]))\\d{6}|(?:7(?:31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[0189]\\d|7[02-8])\\d{5}|(?:6(?:[09]\\d|1[04679]|2[03689]|3[05-9]|4[0489]|50|6[069]|7[07]|8[7-9])|7(?:0\\d|2[0235-79]|3[05-8]|40|5[0346-8]|6[6-9]|7[1-9]|8[0-79]|9[089])|8(?:0[01589]|1[0-57-9]|2[235-9]|3[03-57-9]|[45]\\d|6[02457-9]|7[1-69]|8[0-25-9]|9[02-9])|9\\d\\d)\\d{7}|(?:6(?:(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|8[124-6])\\d|7(?:[235689]\\d|4[0189]))|7(?:1(?:[013-8]\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-5])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\d|5[0-367])|70[13-7]|881))[0189]\\d{5}",[10]],["000800\\d{7}|1(?:600\\d{6}|80(?:0\\d{4,9}|3\\d{9}))"],["186[12]\\d{9}",[13]],0,0,["140\\d{7}",[10]],0,0,["1860\\d{7}",[11]]]],"IO":["246","00","3\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["3"]]],0,0,0,0,0,0,[["37\\d{5}"],["38\\d{5}"]]],"IQ":["964","00","(?:1|7\\d\\d)\\d{7}|[2-6]\\d{7,8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-6]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[["1\\d{7}|(?:2[13-5]|3[02367]|4[023]|5[03]|6[026])\\d{6,7}",[8,9]],["7[3-9]\\d{8}",[10]]]],"IR":["98","00","[1-9]\\d{9}|(?:[1-8]\\d\\d|9)\\d{3,4}",[4,5,6,7,10],[["(\\d{4,5})","$1",["96"],"0$1"],["(\\d{2})(\\d{4,5})","$1 $2",["(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[1-8]"],"0$1"]],"0",0,0,0,0,0,[["(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])(?:[03-57]\\d{7}|[16]\\d{3}(?:\\d{4})?|[289]\\d{3}(?:\\d(?:\\d{3})?)?)|94(?:000[09]|2(?:121|[2689]0\\d)|30[0-2]\\d|4(?:111|40\\d))\\d{4}",[6,7,10]],["9(?:(?:0(?:[0-35]\\d|4[4-6])|(?:[13]\\d|2[0-3])\\d)\\d|9(?:[0-46]\\d\\d|5[15]0|8(?:1\\d|88)|9(?:0[0-3]|[19]\\d|21|77|8[7-9])))\\d{5}",[10]],0,0,0,0,["96(?:0[12]|2[16-8]|3(?:08|[14]5|[23]|66)|4(?:0|80)|5[01]|6[89]|86|9[19])",[4,5]]]],"IS":["354","00|1(?:0(?:01|[12]0)|100)","(?:38\\d|[4-9])\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["[4-9]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["3"]]],0,0,0,0,0,0,[["(?:4(?:1[0-24-69]|2[0-7]|[37][0-8]|4[0-24589]|5[0-68]|6\\d|8[0-36-8])|5(?:05|[156]\\d|2[02578]|3[0-579]|4[03-7]|7[0-2578]|8[0-35-9]|9[013-689])|872)\\d{4}",[7]],["(?:38[589]\\d\\d|6(?:1[1-8]|2[0-6]|3[026-9]|4[014679]|5[0159]|6[0-69]|70|8[06-8]|9\\d)|7(?:5[057]|[6-9]\\d)|8(?:2[0-59]|[3-69]\\d|8[238]))\\d{4}"],["80[0-8]\\d{4}",[7]],["90(?:0\\d|1[5-79]|2[015-79]|3[135-79]|4[125-7]|5[25-79]|7[1-37]|8[0-35-7])\\d{3}",[7]],0,0,["809\\d{4}",[7]],0,["49[0-24-79]\\d{4}",[7]]],"00"],"IT":["39","00","0\\d{5,10}|1\\d{8,10}|3(?:[0-8]\\d{7,10}|9\\d{7,8})|(?:55|70)\\d{8}|8\\d{5}(?:\\d{2,4})?",[6,7,8,9,10,11],[["(\\d{2})(\\d{4,6})","$1 $2",["0[26]"]],["(\\d{3})(\\d{3,6})","$1 $2",["0[13-57-9][0159]|8(?:03|4[17]|9[2-5])","0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))"]],["(\\d{4})(\\d{2,6})","$1 $2",["0(?:[13-579][2-46-8]|8[236-8])"]],["(\\d{4})(\\d{4})","$1 $2",["894"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[26]|5"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["1(?:44|[679])|[378]"]],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[13-57-9][0159]|14"]],["(\\d{2})(\\d{4})(\\d{5})","$1 $2 $3",["0[26]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["3"]]],0,0,0,0,0,0,[["0669[0-79]\\d{1,6}|0(?:1(?:[0159]\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\d\\d|3(?:[0159]\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\d|6[0-8])|7(?:[0159]\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\d{2,7}"],["3[1-9]\\d{8}|3[2-9]\\d{7}",[9,10]],["80(?:0\\d{3}|3)\\d{3}",[6,9]],["(?:0878\\d{3}|89(?:2\\d|3[04]|4(?:[0-4]|[5-9]\\d\\d)|5[0-4]))\\d\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\d{6}",[6,8,9,10]],["1(?:78\\d|99)\\d{6}",[9,10]],0,0,0,["55\\d{8}",[10]],["84(?:[08]\\d{3}|[17])\\d{3}",[6,9]]]],"JE":["44","00","1534\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([0-24-8]\\d{5})$","1534$1",0,0,[["1534[0-24-8]\\d{5}"],["7(?:(?:(?:50|82)9|937)\\d|7(?:00[378]|97[7-9]))\\d{5}"],["80(?:07(?:35|81)|8901)\\d{4}"],["(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\d{4}"],["701511\\d{4}"],0,["(?:3(?:0(?:07(?:35|81)|8901)|3\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\d{4})\\d{4}"],["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}"],["56\\d{8}"]]],"JM":["1","011","(?:[58]\\d\\d|658|900)\\d{7}",[10],0,"1",0,0,0,0,"658|876",[["8766060\\d{3}|(?:658(?:2(?:[0-8]\\d|9[0-46-9])|[3-9]\\d\\d)|876(?:52[35]|6(?:0[1-3579]|1[02357-9]|[23]\\d|40|5[06]|6[2-589]|7[025-7]|8[04]|9[4-9])|7(?:0[2-689]|[1-6]\\d|8[056]|9[45])|9(?:0[1-8]|1[02378]|[2-8]\\d|9[2-468])))\\d{4}"],["(?:658295|876(?:2(?:0[1-9]|[13-9]\\d|2[013-9])|[348]\\d\\d|5(?:0[1-9]|[1-9]\\d)|6(?:4[89]|6[67])|7(?:0[07]|7\\d|8[1-47-9]|9[0-36-9])|9(?:[01]9|9[0579])))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"JO":["962","00","(?:(?:[2689]|7\\d)\\d|32|53)\\d{6}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2356]|87"],"(0$1)"],["(\\d{3})(\\d{5,6})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["70"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[["87(?:000|90[01])\\d{3}|(?:2(?:6(?:2[0-35-9]|3[0-578]|4[24-7]|5[0-24-8]|[6-8][023]|9[0-3])|7(?:0[1-79]|10|2[014-7]|3[0-689]|4[019]|5[0-3578]))|32(?:0[1-69]|1[1-35-7]|2[024-7]|3\\d|4[0-3]|[5-7][023])|53(?:0[0-3]|[13][023]|2[0-59]|49|5[0-35-9]|6[15]|7[45]|8[1-6]|9[0-36-9])|6(?:2(?:[05]0|22)|3(?:00|33)|4(?:0[0-25]|1[2-7]|2[0569]|[38][07-9]|4[025689]|6[0-589]|7\\d|9[0-2])|5(?:[01][056]|2[034]|3[0-57-9]|4[178]|5[0-69]|6[0-35-9]|7[1-379]|8[0-68]|9[0239]))|87(?:20|7[078]|99))\\d{4}",[8]],["7(?:[78][0-25-9]|9\\d)\\d{6}",[9]],["80\\d{6}",[8]],["9\\d{7}",[8]],["70\\d{7}",[9]],0,["8(?:10|8\\d)\\d{5}",[8]],["74(?:66|77)\\d{5}",[9]],0,["85\\d{6}",[8]]]],"JP":["81","010","00[1-9]\\d{6,14}|[257-9]\\d{9}|(?:00|[1-9]\\d\\d)\\d{6}",[8,9,10,11,12,13,14,15,16,17],[["(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3",["(?:12|57|99)0"],"0$1"],["(\\d{4})(\\d)(\\d{4})","$1-$2-$3",["1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:80|9[16])","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2-$3",["[36]|4(?:2[09]|7[01])","[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]"],"0$1"],["(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3",["[14]|[289][2-9]|5[3-9]|7[2-4679]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["800"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[257-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:1[235-8]|2[3-6]|3[3-9]|4[2-6]|[58][2-8]|6[2-7]|7[2-9]|9[1-9])|(?:2[2-9]|[36][1-9])\\d|4(?:[2-578]\\d|6[02-8]|9[2-59])|5(?:[2-589]\\d|6[1-9]|7[2-8])|7(?:[25-9]\\d|3[4-9]|4[02-9])|8(?:[2679]\\d|3[2-9]|4[5-9]|5[1-9]|8[03-9])|9(?:[2-58]\\d|[679][1-9]))\\d{6}",[9]],["[7-9]0[1-9]\\d{7}",[10]],["00777(?:[01]|5\\d)\\d\\d|(?:00(?:7778|882[1245])|(?:120|800\\d)\\d\\d)\\d{4}|00(?:37|66|78)\\d{6,13}"],["990\\d{6}",[9]],["60\\d{7}",[9]],0,["570\\d{6}",[9]],["20\\d{8}",[10]],["50[1-9]\\d{7}",[10]]]],"KE":["254","000","(?:[17]\\d\\d|900)\\d{6}|(?:2|80)0\\d{6,7}|[4-6]\\d{6,8}",[7,8,9,10],[["(\\d{2})(\\d{5,7})","$1 $2",["[24-6]"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[17]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,[["(?:4[245]|5[1-79]|6[01457-9])\\d{5,7}|(?:4[136]|5[08]|62)\\d{7}|(?:[24]0|66)\\d{6,7}",[7,8,9]],["(?:1(?:0[0-6]|1[0-5]|2[014]|30)|7\\d\\d)\\d{6}",[9]],["800[2-8]\\d{5,6}",[9,10]],["900[02-9]\\d{5}",[9]]]],"KG":["996","00","8\\d{9}|(?:[235-8]\\d|99)\\d{7}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["3(?:1[346]|[24-79])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235-79]|88"],"0$1"],["(\\d{3})(\\d{3})(\\d)(\\d{2,3})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["312(?:5[0-79]\\d|9(?:[0-689]\\d|7[0-24-9]))\\d{3}|(?:3(?:1(?:2[0-46-8]|3[1-9]|47|[56]\\d)|2(?:22|3[0-479]|6[0-7])|4(?:22|5[6-9]|6\\d)|5(?:22|3[4-7]|59|6\\d)|6(?:22|5[35-7]|6\\d)|7(?:22|3[468]|4[1-9]|59|[67]\\d)|9(?:22|4[1-8]|6\\d))|6(?:09|12|2[2-4])\\d)\\d{5}",[9]],["312(?:58\\d|973)\\d{3}|(?:2(?:0[0-35]|2\\d)|5[0-24-7]\\d|7(?:[07]\\d|55)|88[08]|99[05-9])\\d{6}",[9]],["800\\d{6,7}"]]],"KH":["855","00[14-9]","1\\d{9}|[1-9]\\d{7,8}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[["23(?:4(?:[2-4]|[56]\\d)|[568]\\d\\d)\\d{4}|23[236-9]\\d{5}|(?:2[4-6]|3[2-6]|4[2-4]|[5-7][2-5])(?:(?:[237-9]|4[56]|5\\d)\\d{5}|6\\d{5,6})",[8,9]],["(?:(?:1[28]|3[18]|9[67])\\d|6[016-9]|7(?:[07-9]|[16]\\d)|8(?:[013-79]|8\\d))\\d{6}|(?:1\\d|9[0-57-9])\\d{6}|(?:2[3-6]|3[2-6]|4[2-4]|[5-7][2-5])48\\d{5}",[8,9]],["1800(?:1\\d|2[019])\\d{4}",[10]],["1900(?:1\\d|2[09])\\d{4}",[10]]]],"KI":["686","00","(?:[37]\\d|6[0-79])\\d{6}|(?:[2-48]\\d|50)\\d{3}",[5,8],0,"0",0,0,0,0,0,[["(?:[24]\\d|3[1-9]|50|65(?:02[12]|12[56]|22[89]|[3-5]00)|7(?:27\\d\\d|3100|5(?:02[12]|12[56]|22[89]|[34](?:00|81)|500))|8[0-5])\\d{3}"],["(?:63\\d{3}|73(?:0[0-5]\\d|140))\\d{3}|[67]200[01]\\d{3}",[8]],0,0,0,0,0,0,["30(?:0[01]\\d\\d|12(?:11|20))\\d\\d",[8]]]],"KM":["269","00","[3478]\\d{6}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[3478]"]]],0,0,0,0,0,0,[["7[4-7]\\d{5}"],["[34]\\d{6}"],0,["8\\d{6}"]]],"KN":["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","869$1",0,"869",[["869(?:2(?:29|36)|302|4(?:6[015-9]|70)|56[5-7])\\d{4}"],["869(?:48[89]|55[6-8]|66\\d|76[02-7])\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"KP":["850","00|99","85\\d{6}|(?:19\\d|[2-7])\\d{7}",[8,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"]],"0",0,0,0,0,0,[["(?:(?:195|2)\\d|3[19]|4[159]|5[37]|6[17]|7[39]|85)\\d{6}"],["19[1-3]\\d{7}",[10]]]],"KR":["82","00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))","00[1-9]\\d{8,11}|(?:[12]|5\\d{3})\\d{7}|[13-6]\\d{9}|(?:[1-6]\\d|80)\\d{7}|[3-6]\\d{4,5}|(?:00|7)0\\d{8}",[5,6,8,9,10,11,12,13,14],[["(\\d{2})(\\d{3,4})","$1-$2",["(?:3[1-3]|[46][1-4]|5[1-5])1"],"0$1"],["(\\d{4})(\\d{4})","$1-$2",["1"]],["(\\d)(\\d{3,4})(\\d{4})","$1-$2-$3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60|8"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1-$2-$3",["[1346]|5[1-5]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{2})(\\d{5})(\\d{4})","$1-$2-$3",["5"],"0$1"]],"0",0,"0(8(?:[1-46-8]|5\\d\\d))?",0,0,0,[["(?:2|3[1-3]|[46][1-4]|5[1-5])[1-9]\\d{6,7}|(?:3[1-3]|[46][1-4]|5[1-5])1\\d{2,3}",[5,6,8,9,10]],["1(?:05(?:[0-8]\\d|9[0-6])|22[13]\\d)\\d{4,5}|1(?:0[1-46-9]|[16-9]\\d|2[013-9])\\d{6,7}",[9,10]],["00(?:308\\d{6,7}|798\\d{7,9})|(?:00368|80)\\d{7}",[9,11,12,13,14]],["60[2-9]\\d{6}",[9]],["50\\d{8,9}",[10,11]],0,["1(?:5(?:22|33|44|66|77|88|99)|6(?:[07]0|44|6[168]|88)|8(?:00|33|55|77|99))\\d{4}",[8]],["15\\d{7,8}",[9,10]],["70\\d{8}",[10]]]],"KW":["965","00","18\\d{5}|(?:[2569]\\d|41)\\d{6}",[7,8],[["(\\d{4})(\\d{3,4})","$1 $2",["[169]|2(?:[235]|4[1-35-9])|52"]],["(\\d{3})(\\d{5})","$1 $2",["[245]"]]],0,0,0,0,0,0,[["2(?:[23]\\d\\d|4(?:[1-35-9]\\d|44)|5(?:0[034]|[2-46]\\d|5[1-3]|7[1-7]))\\d{4}",[8]],["(?:41\\d\\d|5(?:(?:[05]\\d|1[0-7]|6[56])\\d|2(?:22|5[25])|7(?:55|77)|88[58])|6(?:(?:0[034679]|5[015-9]|6\\d)\\d|1(?:00|11|66)|222|3[36]3|444|7(?:0[013-9]|[67]\\d)|888|9(?:[069]\\d|3[039]))|9(?:(?:0[09]|22|[4679]\\d|8[057-9])\\d|1(?:1[01]|99)|3(?:00|33)|5(?:00|5\\d)))\\d{4}",[8]],["18\\d{5}",[7]]]],"KY":["1","011","(?:345|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","345$1",0,"345",[["345(?:2(?:22|3[23]|44|66)|333|444|6(?:23|38|40)|7(?:30|4[35-79]|6[6-9]|77)|8(?:00|1[45]|[48]8)|9(?:14|4[035-9]))\\d{4}"],["345(?:32[1-9]|42[0-4]|5(?:1[67]|2[5-79]|4[6-9]|50|76)|649|82[56]|9(?:1[679]|2[2-9]|3[06-9]|90))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["(?:345976|900[2-9]\\d\\d)\\d{4}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,0,["345849\\d{4}"]]],"KZ":["7","810","(?:33622|8\\d{8})\\d{5}|[78]\\d{9}",[10,14],0,"8",0,0,0,0,"33|7",[["(?:33622|7(?:1(?:0(?:[23]\\d|4[0-3]|59|63)|1(?:[23]\\d|4[0-79]|59)|2(?:[23]\\d|59)|3(?:2\\d|3[0-79]|4[0-35-9]|59)|4(?:[24]\\d|3[013-9]|5[1-9])|5(?:2\\d|3[1-9]|4[0-7]|59)|6(?:[2-4]\\d|5[19]|61)|72\\d|8(?:[27]\\d|3[1-46-9]|4[0-5]))|2(?:1(?:[23]\\d|4[46-9]|5[3469])|2(?:2\\d|3[0679]|46|5[12679])|3(?:[2-4]\\d|5[139])|4(?:2\\d|3[1-35-9]|59)|5(?:[23]\\d|4[0-246-8]|59|61)|6(?:2\\d|3[1-9]|4[0-4]|59)|7(?:[2379]\\d|40|5[279])|8(?:[23]\\d|4[0-3]|59)|9(?:2\\d|3[124578]|59))))\\d{5}",[10]],["7(?:0[0-25-8]|47|6[0-4]|7[15-8]|85)\\d{7}",[10]],["8(?:00|108\\d{3})\\d{7}"],["809\\d{7}",[10]],["808\\d{7}",[10]],0,0,0,["751\\d{7}",[10]]],"8~10"],"LA":["856","00","[23]\\d{9}|3\\d{8}|(?:[235-8]\\d|41)\\d{6}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2[13]|3[14]|[4-8]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["30[013-9]"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[23]"],"0$1"]],"0",0,0,0,0,0,[["(?:2[13]|[35-7][14]|41|8[1468])\\d{6}",[8]],["(?:20(?:[239]\\d|5[24-9]|7[6-8]|88)|302\\d)\\d{6}",[10]],0,0,0,0,["30[013-9]\\d{6}",[9]]]],"LB":["961","00","[27-9]\\d{7}|[13-9]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27-9]"]]],"0",0,0,0,0,0,[["7(?:62|8[0-7]|9[04-9])\\d{4}|(?:[14-69]\\d|2(?:[14-69]\\d|[78][1-9])|7[2-57]|8[02-9])\\d{5}"],["793(?:[01]\\d|2[0-4])\\d{3}|(?:(?:3|81)\\d|7(?:[01]\\d|6[013-9]|8[89]|9[12]))\\d{5}"],0,["9[01]\\d{6}",[8]],0,0,0,0,0,["80\\d{6}",[8]]]],"LC":["1","011","(?:[58]\\d\\d|758|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","758$1",0,"758",[["758(?:234|4(?:30|5\\d|6[2-9]|8[0-2])|57[0-2]|(?:63|75)8)\\d{4}"],["758(?:28[4-7]|384|4(?:6[01]|8[4-9])|5(?:1[89]|20|84)|7(?:1[2-9]|2\\d|3[0-3])|812)\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"LI":["423","00","[68]\\d{8}|(?:[2378]\\d|90)\\d{5}",[7,9],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[2379]|8(?:0[09]|7)","[2379]|8(?:0(?:02|9)|7)"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["69"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]],"0",0,"0|(1001)",0,0,0,[["(?:2(?:01|1[27]|2[02]|3\\d|6[02-578]|96)|3(?:[24]0|33|7[0135-7]|8[048]|9[0269]))\\d{4}",[7]],["(?:6(?:(?:4[5-9]|5[0-4])\\d|6(?:[0245]\\d|[17]0|3[7-9]))\\d|7(?:[37-9]\\d|42|56))\\d{4}"],["8002[28]\\d\\d|80(?:05\\d|9)\\d{4}"],["90(?:02[258]|1(?:23|3[14])|66[136])\\d\\d",[7]],0,0,["870(?:28|87)\\d\\d",[7]]]],"LK":["94","00","[1-9]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[1-689]"],"0$1"]],"0",0,0,0,0,0,[["(?:12[2-9]|602|8[12]\\d|9(?:1\\d|22|9[245]))\\d{6}|(?:11|2[13-7]|3[1-8]|4[157]|5[12457]|6[35-7])[2-57]\\d{6}"],["7(?:[0-25-8]\\d|4[0-4])\\d{6}"],0,0,0,0,["1973\\d{5}"]]],"LR":["231","00","(?:2|33|5\\d|77|88)\\d{7}|[4-6]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[4-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3578]"],"0$1"]],"0",0,0,0,0,0,[["(?:2\\d{3}|33333)\\d{4}",[8,9]],["(?:(?:330|555|(?:77|88)\\d)\\d|4[67])\\d{5}|[56]\\d{6}",[7,9]],0,["332(?:02|[34]\\d)\\d{4}",[9]]]],"LS":["266","00","(?:[256]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2568]"]]],0,0,0,0,0,0,[["2\\d{7}"],["[56]\\d{7}"],["800[256]\\d{4}"]]],"LT":["370","00","(?:[3469]\\d|52|[78]0)\\d{6}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["52[0-7]"],"(8-$1)",1],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[7-9]"],"8 $1",1],["(\\d{2})(\\d{6})","$1 $2",["37|4(?:[15]|6[1-8])"],"(8-$1)",1],["(\\d{3})(\\d{5})","$1 $2",["[3-6]"],"(8-$1)",1]],"8",0,"[08]",0,0,0,[["(?:3[1478]|4[124-6]|52)\\d{6}"],["6\\d{7}"],["80[02]\\d{5}"],["9(?:0[0239]|10)\\d{5}"],["70[05]\\d{5}"],0,["70[67]\\d{5}"],0,["[89]01\\d{5}"],["808\\d{5}"]]],"LU":["352","00","35[013-9]\\d{4,8}|6\\d{8}|35\\d{2,4}|(?:[2457-9]\\d|3[0-46-9])\\d{2,9}",[4,5,6,7,8,9,10,11],[["(\\d{2})(\\d{3})","$1 $2",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["20[2-689]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4",["2(?:[0367]|4[3-8])"]],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["80[01]|90[015]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["20"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4 $5",["2(?:[0367]|4[3-8])"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,5})","$1 $2 $3 $4",["[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]"]]],0,0,"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\d)",0,0,0,[["(?:35[013-9]|80[2-9]|90[89])\\d{1,8}|(?:2[2-9]|3[0-46-9]|[457]\\d|8[13-9]|9[2-579])\\d{2,9}"],["6(?:[269][18]|5[1568]|7[189]|81)\\d{6}",[9]],["800\\d{5}",[8]],["90[015]\\d{5}",[8]],0,0,0,0,["20(?:1\\d{5}|[2-689]\\d{1,7})",[4,5,6,7,8,9,10]],["801\\d{5}",[8]]]],"LV":["371","00","(?:[268]\\d|90)\\d{6}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[269]|8[01]"]]],0,0,0,0,0,0,[["6\\d{7}"],["23(?:23[0-57-9]|33[0238])\\d{3}|2(?:[0-24-9]\\d\\d|3(?:0[07]|[14-9]\\d|2[024-9]|3[0-24-9]))\\d{4}"],["80\\d{6}"],["90\\d{6}"],0,0,0,0,0,["81\\d{6}"]]],"LY":["218","00","[2-9]\\d{8}",[9],[["(\\d{2})(\\d{7})","$1-$2",["[2-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:2(?:0[56]|[1-6]\\d|7[124579]|8[124])|3(?:1\\d|2[2356])|4(?:[17]\\d|2[1-357]|5[2-4]|8[124])|5(?:[1347]\\d|2[1-469]|5[13-5]|8[1-4])|6(?:[1-479]\\d|5[2-57]|8[1-5])|7(?:[13]\\d|2[13-79])|8(?:[124]\\d|5[124]|84))\\d{6}"],["9[1-6]\\d{7}"]]],"MA":["212","00","[5-8]\\d{8}",[9],[["(\\d{5})(\\d{4})","$1-$2",["5(?:29|38)","5(?:29[89]|389)","5(?:29[89]|389)0"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5[45]"],"0$1"],["(\\d{4})(\\d{5})","$1-$2",["5(?:2[2-489]|3[5-9]|9)|892","5(?:2(?:[2-49]|8[235-9])|3[5-9]|9)|892"],"0$1"],["(\\d{2})(\\d{7})","$1-$2",["8"],"0$1"],["(\\d{3})(\\d{6})","$1-$2",["[5-7]"],"0$1"]],"0",0,0,0,0,0,[["5(?:29(?:[189][05]|2[29]|3[01])|389[05])\\d{4}|5(?:2(?:[0-25-7]\\d|3[1-578]|4[02-46-8]|8[0235-7]|90)|3(?:[0-47]\\d|5[02-9]|6[02-8]|8[08]|9[3-9])|(?:4[067]|5[03])\\d)\\d{5}"],["(?:6(?:[0-79]\\d|8[0-247-9])|7(?:[017]\\d|2[0-2]|6[0-8]|8[0-3]))\\d{6}"],["80\\d{7}"],["89\\d{7}"],0,0,0,0,["592(?:4[0-2]|93)\\d{4}"]]],"MC":["377","00","(?:[3489]|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["4"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[389]"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["6"],"0$1"]],"0",0,0,0,0,0,[["(?:870|9[2-47-9]\\d)\\d{5}",[8]],["4(?:[46]\\d|5[1-9])\\d{5}|(?:3|6\\d)\\d{7}"],["(?:800|90\\d)\\d{5}",[8]]]],"MD":["373","00","(?:[235-7]\\d|[89]0)\\d{6}",[8],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["22|3"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[25-7]"],"0$1"]],"0",0,0,0,0,0,[["(?:(?:2[1-9]|3[1-79])\\d|5(?:33|5[257]))\\d{5}"],["562\\d{5}|(?:6\\d|7[16-9])\\d{6}"],["800\\d{5}"],["90[056]\\d{5}"],0,0,["803\\d{5}"],0,["3[08]\\d{6}"],["808\\d{5}"]]],"ME":["382","00","(?:20|[3-79]\\d)\\d{6}|80\\d{6,7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:20[2-8]|3(?:[0-2][2-7]|3[24-7])|4(?:0[2-467]|1[2467])|5(?:0[2467]|1[24-7]|2[2-467]))\\d{5}",[8]],["6(?:[07-9]\\d|3[024]|6[0-25])\\d{5}",[8]],["80(?:[0-2578]|9\\d)\\d{5}"],["9(?:4[1568]|5[178])\\d{5}",[8]],0,0,["77[1-9]\\d{5}",[8]],0,["78[1-49]\\d{5}",[8]]]],"MF":["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[["590(?:0[079]|[14]3|[27][79]|30|5[0-268]|87)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],"MG":["261","00","[23]\\d{8}",[9],[["(\\d{2})(\\d{2})(\\d{3})(\\d{2})","$1 $2 $3 $4",["[23]"],"0$1"]],"0",0,"0|([24-9]\\d{6})$","20$1",0,0,[["2072[29]\\d{4}|20(?:2\\d|4[47]|5[3467]|6[279]|7[35]|8[268]|9[245])\\d{5}"],["3[2-489]\\d{7}"],0,0,0,0,0,0,["22\\d{7}"]]],"MH":["692","011","329\\d{4}|(?:[256]\\d|45)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1-$2",["[2-6]"]]],"1",0,0,0,0,0,[["(?:247|528|625)\\d{4}"],["(?:(?:23|54)5|329|45[356])\\d{4}"],0,0,0,0,0,0,["635\\d{4}"]]],"MK":["389","00","[2-578]\\d{7}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2|34[47]|4(?:[37]7|5[47]|64)"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[347]"],"0$1"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["[58]"],"0$1"]],"0",0,0,0,0,0,[["(?:(?:2(?:62|77)0|3444)\\d|4[56]440)\\d{3}|(?:34|4[357])700\\d{3}|(?:2(?:[0-3]\\d|5[0-578]|6[01]|82)|3(?:1[3-68]|[23][2-68]|4[23568])|4(?:[23][2-68]|4[3-68]|5[2568]|6[25-8]|7[24-68]|8[4-68]))\\d{5}"],["7(?:3555|4747|9(?:[019]77|42[0-4]))\\d{3}|7(?:[0-25-8]\\d\\d|3(?:[1-4]\\d|7[01578])|4(?:2\\d|60|7[01578])|9(?:[23]\\d|4[01]|7[015]))\\d{4}"],["800\\d{5}"],["5\\d{7}"],0,0,0,0,0,["8(?:0[1-9]|[1-9]\\d)\\d{5}"]]],"ML":["223","00","[24-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24-9]"]]],0,0,0,0,0,0,[["2(?:07[0-8]|12[67])\\d{4}|(?:2(?:02|1[4-689])|4(?:0[0-4]|4[1-39]))\\d{5}"],["2(?:0(?:01|79)|17\\d)\\d{4}|(?:5[01]|[679]\\d|8[2-49])\\d{6}"],["80\\d{6}"]]],"MM":["95","00","1\\d{5,7}|95\\d{6}|(?:[4-7]|9[0-46-9])\\d{6,8}|(?:2|8\\d)\\d{5,8}",[6,7,8,9,10],[["(\\d)(\\d{2})(\\d{3})","$1 $2 $3",["16|2"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[4-7]|8[1-35]"],"0$1"],["(\\d)(\\d{3})(\\d{4,6})","$1 $2 $3",["9(?:2[0-4]|[35-9]|4[137-9])"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["92"],"0$1"],["(\\d)(\\d{5})(\\d{4})","$1 $2 $3",["9"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:(?:2\\d|3[56]|[89][0-6])\\d|4(?:2[2-469]|39|46|6[25]|7[0-3]|83)|6)|2(?:2(?:00|8[34])|4(?:0\\d|2[246]|39|46|62|7[0-3]|83)|51\\d\\d)|4(?:2(?:2\\d\\d|48[0-3])|3(?:20\\d|4(?:70|83)|56)|420\\d|5470)|6(?:0(?:[23]|88\\d)|(?:124|[56]2\\d)\\d|247[23]|3(?:20\\d|470)|4(?:2[04]\\d|47[23])|7(?:(?:3\\d|8[01459])\\d|4(?:39|60|7[013]))))\\d{4}|5(?:2(?:2\\d{5,6}|47[023]\\d{4})|(?:347[23]|4(?:2(?:1|86)|470)|522\\d|6(?:20\\d|483)|7(?:20\\d|48[0-2])|8(?:20\\d|47[02])|9(?:20\\d|47[01]))\\d{4})|7(?:(?:0470|4(?:25\\d|470)|5(?:202|470|96\\d))\\d{4}|1(?:20\\d{4,5}|4(?:70|83)\\d{4}))|8(?:1(?:2\\d{5,6}|4(?:10|7[01]\\d)\\d{3})|2(?:2\\d{5,6}|(?:320|490\\d)\\d{3})|(?:3(?:2\\d\\d|470)|4[24-7]|5(?:2\\d|4[1-9]|51)\\d|6[23])\\d{4})|(?:1[2-6]\\d|4(?:2[24-8]|3[2-7]|[46][2-6]|5[3-5])|5(?:[27][2-8]|3[2-68]|4[24-8]|5[23]|6[2-4]|8[24-7]|9[2-7])|6(?:[19]20|42[03-6]|(?:52|7[45])\\d)|7(?:[04][24-8]|[15][2-7]|22|3[2-4])|8(?:1[2-689]|2[2-8]|[35]2\\d))\\d{4}|25\\d{5,6}|(?:2[2-9]|6(?:1[2356]|[24][2-6]|3[24-6]|5[2-4]|6[2-8]|7[235-7]|8[245]|9[24])|8(?:3[24]|5[245]))\\d{4}",[6,7,8,9]],["(?:17[01]|9(?:2(?:[0-4]|[56]\\d\\d)|(?:3(?:[0-36]|4\\d)|(?:6\\d|9[4-8])\\d|7(?:3|40|[5-9]\\d)|8(?:78|[89]\\d))\\d|4(?:(?:[0245]\\d|[1379])\\d|88)|5[0-6])\\d)\\d{4}|9[69]1\\d{6}|9(?:[68]\\d|9[089])\\d{5}",[7,8,9,10]],["80080(?:[01][1-9]|2\\d)\\d{3}",[10]],0,0,0,0,0,["1333\\d{4}|[12]468\\d{4}",[8]]]],"MN":["976","001","[12]\\d{7,9}|[5-9]\\d{7}",[8,9,10],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[12]1"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[5-9]"]],["(\\d{3})(\\d{5,6})","$1 $2",["[12]2[1-3]"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["[12](?:27|3[2-8]|4[2-68]|5[1-4689])","[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["[12]"],"0$1"]],"0",0,0,0,0,0,[["[12]2[1-3]\\d{5,6}|7(?:0[0-5]\\d|128)\\d{4}|(?:[12](?:1|27)|5[368])\\d{6}|[12](?:3[2-8]|4[2-68]|5[1-4689])\\d{6,7}"],["(?:83[01]|920)\\d{5}|(?:5[05]|6[06]|8[015689]|9[013-9])\\d{6}",[8]],0,0,0,0,0,0,["712[0-79]\\d{4}|7(?:1[013-9]|[25-8]\\d)\\d{5}",[8]]]],"MO":["853","00","0800\\d{3}|(?:28|[68]\\d)\\d{6}",[7,8],[["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{4})(\\d{4})","$1 $2",["[268]"]]],0,0,0,0,0,0,[["(?:28[2-9]|8(?:11|[2-57-9]\\d))\\d{5}",[8]],["6800[0-79]\\d{3}|6(?:[235]\\d\\d|6(?:0[0-5]|[1-9]\\d)|8(?:0[1-9]|[14-8]\\d|2[5-9]|[39][0-4]))\\d{4}",[8]],["0800\\d{3}",[7]]]],"MP":["1","011","[58]\\d{9}|(?:67|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","670$1",0,"670",[["670(?:2(?:3[3-7]|56|8[4-8])|32[1-38]|4(?:33|8[348])|5(?:32|55|88)|6(?:64|70|82)|78[3589]|8[3-9]8|989)\\d{4}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"MQ":["596","00","(?:69|80)\\d{7}|(?:59|97)6\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["596(?:[03-7]\\d|10|2[7-9]|8[09]|9[4-9])\\d{4}"],["69(?:6(?:[0-46-9]\\d|5[0-6])|727)\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976(?:6\\d|7[0-367])\\d{4}"]]],"MR":["222","00","(?:[2-4]\\d\\d|800)\\d{5}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-48]"]]],0,0,0,0,0,0,[["(?:25[08]|35\\d|45[1-7])\\d{5}"],["[2-4][0-46-9]\\d{6}"],["800\\d{5}"]]],"MS":["1","011","(?:[58]\\d\\d|664|900)\\d{7}",[10],0,"1",0,"1|([34]\\d{6})$","664$1",0,"664",[["6644(?:1[0-3]|91)\\d{4}"],["664(?:3(?:49|9[1-6])|49[2-6])\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"MT":["356","00","3550\\d{4}|(?:[2579]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2357-9]"]]],0,0,0,0,0,0,[["20(?:3[1-4]|6[059])\\d{4}|2(?:0[19]|[1-357]\\d|60)\\d{5}"],["(?:7(?:210|[79]\\d\\d)|9(?:[29]\\d\\d|69[67]|8(?:1[1-3]|89|97)))\\d{4}"],["800(?:02|[3467]\\d)\\d{3}"],["5(?:0(?:0(?:37|43)|(?:6\\d|70|9[0168])\\d)|[12]\\d0[1-5])\\d{3}"],0,0,["501\\d{5}"],["7117\\d{4}"],["3550\\d{4}"]]],"MU":["230","0(?:0|[24-7]0|3[03])","(?:5|8\\d\\d)\\d{7}|[2-468]\\d{6}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[2-46]|8[013]"]],["(\\d{4})(\\d{4})","$1 $2",["5"]],["(\\d{5})(\\d{5})","$1 $2",["8"]]],0,0,0,0,0,0,[["(?:2(?:[0346-8]\\d|1[0-7])|4(?:[013568]\\d|2[4-7])|54(?:[3-5]\\d|71)|6\\d\\d|8(?:14|3[129]))\\d{4}",[7,8]],["5(?:4(?:2[1-389]|7[1-9])|87[15-8])\\d{4}|5(?:2[5-9]|4[3-689]|[57]\\d|8[0-689]|9[0-8])\\d{5}",[8]],["802\\d{7}|80[0-2]\\d{4}",[7,10]],["30\\d{5}",[7]],0,0,0,0,["3(?:20|9\\d)\\d{4}",[7]]],"020"],"MV":["960","0(?:0|19)","(?:800|9[0-57-9]\\d)\\d{7}|[34679]\\d{6}",[7,10],[["(\\d{3})(\\d{4})","$1-$2",["[3467]|9[13-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"]]],0,0,0,0,0,0,[["(?:3(?:0[0-3]|3[0-59])|6(?:[58][024689]|6[024-68]|7[02468]))\\d{4}",[7]],["46[46]\\d{4}|(?:7\\d|9[13-9])\\d{5}",[7]],["800\\d{7}",[10]],["900\\d{7}",[10]],0,0,["4(?:0[01]|50)\\d{4}",[7]]],"00"],"MW":["265","00","(?:[1289]\\d|31|77)\\d{7}|1\\d{6}",[7,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["1[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[137-9]"],"0$1"]],"0",0,0,0,0,0,[["(?:1[2-9]|2[12]\\d\\d)\\d{5}"],["111\\d{6}|(?:31|77|[89][89])\\d{7}",[9]]]],"MX":["52","0[09]","1(?:(?:44|99)[1-9]|65[0-689])\\d{7}|(?:1(?:[017]\\d|[235][1-9]|4[0-35-9]|6[0-46-9]|8[1-79]|9[1-8])|[2-9]\\d)\\d{8}",[10,11],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["33|5[56]|81"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2-9]"],0,1],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 $3 $4",["1(?:33|5[56]|81)"],0,1],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 $3 $4",["1"],0,1]],"01",0,"0(?:[12]|4[45])|1",0,0,0,[["657[12]\\d{6}|(?:2(?:0[01]|2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[25-7][1-9]|3[1-8]|4\\d|8[1-35-9]|9[2-689])|5(?:[56]\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|6[1-9]|7[12]|8[1-8]|9\\d))\\d{7}",[10]],["657[12]\\d{6}|(?:1(?:2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-7][1-9]|3[1-8]|8[1-35-9]|9[2-689])|5(?:[56]\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))|2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[25-7][1-9]|3[1-8]|4\\d|8[1-35-9]|9[2-689])|5(?:[56]\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|6[1-9]|7[12]|8[1-8]|9\\d))\\d{7}"],["8(?:00|88)\\d{7}",[10]],["900\\d{7}",[10]],["500\\d{7}",[10]],0,0,0,0,["300\\d{7}",[10]]],"00"],"MY":["60","00","1\\d{8,9}|(?:3\\d|[4-9])\\d{7}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1-$2 $3",["[4-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1-$2 $3",["1(?:[02469]|[378][1-9]|53)|8","1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2 $3",["3"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3-$4",["1(?:[367]|80)"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2 $3",["15"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2 $3",["1"],"0$1"]],"0",0,0,0,0,0,[["(?:3(?:2[0-36-9]|3[0-368]|4[0-278]|5[0-24-8]|6[0-467]|7[1246-9]|8\\d|9[0-57])\\d|4(?:2[0-689]|[3-79]\\d|8[1-35689])|5(?:2[0-589]|[3468]\\d|5[0-489]|7[1-9]|9[23])|6(?:2[2-9]|3[1357-9]|[46]\\d|5[0-6]|7[0-35-9]|85|9[015-8])|7(?:[2579]\\d|3[03-68]|4[0-8]|6[5-9]|8[0-35-9])|8(?:[24][2-8]|3[2-5]|5[2-7]|6[2-589]|7[2-578]|[89][2-9])|9(?:0[57]|13|[25-7]\\d|[3489][0-8]))\\d{5}",[8,9]],["1(?:1888[689]|4400|8(?:47|8[27])[0-4])\\d{4}|1(?:0(?:[23568]\\d|4[0-6]|7[016-9]|9[0-8])|1(?:[1-5]\\d\\d|6(?:0[5-9]|[1-9]\\d)|7(?:[0134]\\d|2[1-9]|5[0-6]))|(?:[269]\\d|[37][1-9]|4[235-9])\\d|5(?:31|9\\d\\d)|8(?:1[23]|[236]\\d|4[06]|5(?:46|[7-9])|7[016-9]|8[01]|9[0-8]))\\d{5}",[9,10]],["1[378]00\\d{6}",[10]],["1600\\d{6}",[10]],0,0,0,0,["15(?:4(?:6[0-4]\\d|8(?:0[125]|[17]\\d|21|3[01]|4[01589]|5[014]|6[02]))|6(?:32[0-6]|78\\d))\\d{4}",[10]]]],"MZ":["258","00","(?:2|8\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2|8[2-79]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["2(?:[1346]\\d|5[0-2]|[78][12]|93)\\d{5}",[8]],["8[2-79]\\d{7}",[9]],["800\\d{6}",[9]]]],"NA":["264","00","[68]\\d{7,8}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["87"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0",0,0,0,0,0,[["64426\\d{3}|6(?:1(?:2[2-7]|3[01378]|4[0-4])|254|32[0237]|4(?:27|41|5[25])|52[236-8]|626|7(?:2[2-4]|30))\\d{4,5}|6(?:1(?:(?:0\\d|2[0189]|3[24-69]|4[5-9])\\d|17|69|7[014])|2(?:17|5[0-36-8]|69|70)|3(?:17|2[14-689]|34|6[289]|7[01]|81)|4(?:17|2[0-2]|4[06]|5[0137]|69|7[01])|5(?:17|2[0459]|69|7[01])|6(?:17|25|38|42|69|7[01])|7(?:17|2[569]|3[13]|6[89]|7[01]))\\d{4}"],["(?:60|8[1245])\\d{7}",[9]],["80\\d{7}",[9]],["8701\\d{5}",[9]],0,0,0,0,["8(?:3\\d\\d|86)\\d{5}"]]],"NC":["687","00","(?:050|[2-57-9]\\d\\d)\\d{3}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1.$2.$3",["[02-57-9]"]]],0,0,0,0,0,0,[["(?:2[03-9]|3[0-5]|4[1-7]|88)\\d{4}"],["(?:5[0-4]|[79]\\d|8[0-79])\\d{4}"],["050\\d{3}"],["36\\d{4}"]]],"NE":["227","00","[027-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["08"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[089]|2[013]|7[04]"]]],0,0,0,0,0,0,[["2(?:0(?:20|3[1-8]|4[13-5]|5[14]|6[14578]|7[1-578])|1(?:4[145]|5[14]|6[14-68]|7[169]|88))\\d{4}"],["(?:23|7[04]|[89]\\d)\\d{6}"],["08\\d{6}"],["09\\d{6}"]]],"NF":["672","00","[13]\\d{5}",[6],[["(\\d{2})(\\d{4})","$1 $2",["1[0-3]"]],["(\\d)(\\d{5})","$1 $2",["[13]"]]],0,0,"([0-258]\\d{4})$","3$1",0,0,[["(?:1(?:06|17|28|39)|3[0-2]\\d)\\d{3}"],["(?:14|3[58])\\d{4}"]]],"NG":["234","009","(?:[124-7]|9\\d{3})\\d{6}|[1-9]\\d{7}|[78]\\d{9,13}",[7,8,10,11,12,13,14],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["78"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]|9(?:0[3-9]|[1-9])"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[3-7]|8[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["[78]"],"0$1"],["(\\d{3})(\\d{5})(\\d{5,6})","$1 $2 $3",["[78]"],"0$1"]],"0",0,0,0,0,0,[["(?:(?:[1-356]\\d|4[02-8]|8[2-9])\\d|9(?:0[3-9]|[1-9]\\d))\\d{5}|7(?:0(?:[013-689]\\d|2[0-24-9])\\d{3,4}|[1-79]\\d{6})|(?:[12]\\d|4[147]|5[14579]|6[1578]|7[1-3578])\\d{5}",[7,8]],["(?:702[0-24-9]|8(?:01|19)[01])\\d{6}|(?:70[13-689]|8(?:0[2-9]|1[0-8])|9(?:0[1-9]|1[2356]))\\d{7}",[10]],["800\\d{7,11}",[10,11,12,13,14]],0,0,0,["700\\d{7,11}",[10,11,12,13,14]]]],"NI":["505","00","(?:1800|[25-8]\\d{3})\\d{4}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[125-8]"]]],0,0,0,0,0,0,[["2\\d{7}"],["(?:5(?:5[0-7]|[78]\\d)|6(?:20|3[035]|4[045]|5[05]|77|8[1-9]|9[059])|(?:7[5-8]|8\\d)\\d)\\d{5}"],["1800\\d{4}"]]],"NL":["31","00","(?:[124-7]\\d\\d|3(?:[02-9]\\d|1[0-8]))\\d{6}|8\\d{6,9}|9\\d{6,10}|1\\d{4,5}",[5,6,7,8,9,10,11],[["(\\d{3})(\\d{4,7})","$1 $2",["[89]0"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["66"],"0$1"],["(\\d)(\\d{8})","$1 $2",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["1[16-8]|2[259]|3[124]|4[17-9]|5[124679]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-578]|91"],"0$1"],["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3",["9"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:[035]\\d|1[13-578]|6[124-8]|7[24]|8[0-467])|2(?:[0346]\\d|2[2-46-9]|5[125]|9[479])|3(?:[03568]\\d|1[3-8]|2[01]|4[1-8])|4(?:[0356]\\d|1[1-368]|7[58]|8[15-8]|9[23579])|5(?:[0358]\\d|[19][1-9]|2[1-57-9]|4[13-8]|6[126]|7[0-3578])|7\\d\\d)\\d{6}",[9]],["(?:6[1-58]|970\\d)\\d{7}",[9,11]],["800\\d{4,7}",[7,8,9,10]],["90[069]\\d{4,7}",[7,8,9,10]],0,0,["140(?:1[035]|2[0346]|3[03568]|4[0356]|5[0358]|8[458])|(?:140(?:1[16-8]|2[259]|3[124]|4[17-9]|5[124679]|7)|8[478]\\d{6})\\d",[5,6,9]],["66\\d{7}",[9]],["(?:85|91)\\d{7}",[9]]]],"NO":["47","00","(?:0|[2-9]\\d{3})\\d{4}",[5,8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[489]|59"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[235-7]"]]],0,0,0,0,0,"[02-689]|7[0-8]",[["(?:2[1-4]|3[1-3578]|5[1-35-7]|6[1-4679]|7[0-8])\\d{6}",[8]],["(?:4[015-8]|59|9\\d)\\d{6}",[8]],["80[01]\\d{5}",[8]],["82[09]\\d{5}",[8]],["880\\d{5}",[8]],0,["(?:0[2-9]|81(?:0(?:0[7-9]|1\\d)|5\\d\\d))\\d{3}"],0,["85[0-5]\\d{5}",[8]],["810(?:0[0-6]|[2-8]\\d)\\d{3}",[8]]]],"NP":["977","00","(?:1\\d|9)\\d{9}|[1-9]\\d{7}",[8,10,11],[["(\\d)(\\d{7})","$1-$2",["1[2-6]"],"0$1"],["(\\d{2})(\\d{6})","$1-$2",["1[01]|[2-8]|9(?:[1-59]|[67][2-6])"],"0$1"],["(\\d{3})(\\d{7})","$1-$2",["9"]]],"0",0,0,0,0,0,[["(?:1[0-6]\\d|99[02-6])\\d{5}|(?:2[13-79]|3[135-8]|4[146-9]|5[135-7]|6[13-9]|7[15-9]|8[1-46-9]|9[1-7])[2-6]\\d{5}",[8]],["9(?:6[0-3]|7[024-6]|8[0-24-68])\\d{7}",[10]],["1(?:66001|800\\d\\d)\\d{5}",[11]]]],"NR":["674","00","(?:444|(?:55|8\\d)\\d|666)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[4-68]"]]],0,0,0,0,0,0,[["444\\d{4}"],["(?:55[3-9]|666|8\\d\\d)\\d{4}"]]],"NU":["683","00","(?:[47]|888\\d)\\d{3}",[4,7],[["(\\d{3})(\\d{4})","$1 $2",["8"]]],0,0,0,0,0,0,[["[47]\\d{3}",[4]],["888[4-9]\\d{3}",[7]]]],"NZ":["64","0(?:0|161)","[29]\\d{7,9}|50\\d{5}(?:\\d{2,3})?|6[0-35-9]\\d{6}|7\\d{7,8}|8\\d{4,9}|(?:11\\d|[34])\\d{7}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,8})","$1 $2",["8[1-579]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["50[036-8]|[89]0","50(?:[0367]|88)|[89]0"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["24|[346]|7[2-57-9]|9[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:10|74)|[59]|80"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1|2[028]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,5})","$1 $2 $3",["2(?:[169]|7[0-35-9])|7|86"],"0$1"]],"0",0,0,0,0,0,[["24099\\d{3}|(?:3[2-79]|[49][2-9]|6[235-9]|7[2-57-9])\\d{6}",[8]],["2[0-27-9]\\d{7,8}|21\\d{6}",[8,9,10]],["508\\d{6,7}|80\\d{6,8}",[8,9,10]],["(?:11\\d{5}|50(?:0[08]|30|66|77|88))\\d{3}|90\\d{6,8}",[7,8,9,10]],["70\\d{7}",[9]],0,["8(?:1[6-9]|22|3\\d|4[045]|5[459]|7[0-3579]|90)\\d{2,7}"],["[28]6\\d{6,7}",[8,9]]],"00"],"OM":["968","00","(?:1505|[279]\\d{3}|500)\\d{4}|800\\d{5,6}",[7,8,9],[["(\\d{3})(\\d{4,6})","$1 $2",["[58]"]],["(\\d{2})(\\d{6})","$1 $2",["2"]],["(\\d{4})(\\d{4})","$1 $2",["[179]"]]],0,0,0,0,0,0,[["2[2-6]\\d{6}",[8]],["1505\\d{4}|(?:7(?:[1289]\\d|7[0-4])|9(?:0[1-9]|[1-9]\\d))\\d{5}",[8]],["8007\\d{4,5}|(?:500|800[05])\\d{4}"],["900\\d{5}",[8]]]],"PA":["507","00","(?:00800|8\\d{3})\\d{6}|[68]\\d{7}|[1-57-9]\\d{6}",[7,8,10,11],[["(\\d{3})(\\d{4})","$1-$2",["[1-57-9]"]],["(\\d{4})(\\d{4})","$1-$2",["[68]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["(?:1(?:0\\d|1[479]|2[37]|3[0137]|4[17]|5[05]|6[58]|7[0167]|8[2358]|9[1389])|2(?:[0235-79]\\d|1[0-7]|4[013-9]|8[02-9])|3(?:[089]\\d|1[0-7]|2[0-5]|33|4[0-79]|5[0-35]|6[068]|7[0-8])|4(?:00|3[0-579]|4\\d|7[0-57-9])|5(?:[01]\\d|2[0-7]|[56]0|79)|7(?:0[09]|2[0-26-8]|3[03]|4[04]|5[05-9]|6[056]|7[0-24-9]|8[5-9]|90)|8(?:09|2[89]|3\\d|4[0-24-689]|5[014]|8[02])|9(?:0[5-9]|1[0135-8]|2[036-9]|3[35-79]|40|5[0457-9]|6[05-9]|7[04-9]|8[35-8]|9\\d))\\d{4}",[7]],["(?:1[16]1|21[89]|6\\d{3}|8(?:1[01]|7[23]))\\d{4}",[7,8]],["800\\d{4,5}|(?:00800|800\\d)\\d{6}"],["(?:8(?:22|55|60|7[78]|86)|9(?:00|81))\\d{4}",[7]]]],"PE":["51","00|19(?:1[124]|77|90)00","(?:[14-8]|9\\d)\\d{7}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["80"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["1"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[4-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"]]],"0",0,0,0,0,0,[["(?:(?:4[34]|5[14])[0-8]\\d|7(?:173|3[0-8]\\d)|8(?:10[05689]|6(?:0[06-9]|1[6-9]|29)|7(?:0[569]|[56]0)))\\d{4}|(?:1[0-8]|4[12]|5[236]|6[1-7]|7[246]|8[2-4])\\d{6}",[8]],["9\\d{8}",[9]],["800\\d{5}",[8]],["805\\d{5}",[8]],["80[24]\\d{5}",[8]],0,0,0,0,["801\\d{5}",[8]]],"00"," Anexo "],"PF":["689","00","4\\d{5}(?:\\d{2})?|8\\d{7,8}",[6,8,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["44"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4|8[7-9]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]],0,0,0,0,0,0,[["4(?:0[4-689]|9[4-68])\\d{5}",[8]],["8[7-9]\\d{6}",[8]],["80[0-5]\\d{6}",[9]],0,0,0,["44\\d{4}",[6]],0,["499\\d{5}",[8]]]],"PG":["675","00|140[1-3]","(?:180|[78]\\d{3})\\d{4}|(?:[2-589]\\d|64)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["18|[2-69]|85"]],["(\\d{4})(\\d{4})","$1 $2",["[78]"]]],0,0,0,0,0,0,[["(?:(?:3[0-2]|4[257]|5[34]|9[78])\\d|64[1-9]|85[02-46-9])\\d{4}",[7]],["(?:7\\d|8[128])\\d{6}",[8]],["180\\d{4}",[7]],0,0,0,0,["27[01]\\d{4}",[7]],["2(?:0[0-57]|7[568])\\d{4}",[7]]],"00"],"PH":["63","00","(?:[2-7]|9\\d)\\d{8}|2\\d{5}|(?:1800|8)\\d{7,9}",[6,8,9,10,11,12,13],[["(\\d)(\\d{5})","$1 $2",["2"],"(0$1)"],["(\\d{4})(\\d{4,6})","$1 $2",["3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2","3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))"],"(0$1)"],["(\\d{5})(\\d{4})","$1 $2",["346|4(?:27|9[35])|883","3469|4(?:279|9(?:30|56))|8834"],"(0$1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3-7]|8[2-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{4})(\\d{1,2})(\\d{3})(\\d{4})","$1 $2 $3 $4",["1"]]],"0",0,0,0,0,0,[["(?:(?:2[3-8]|3[2-68]|4[2-9]|5[2-6]|6[2-58]|7[24578])\\d{3}|88(?:22\\d\\d|42))\\d{4}|(?:2|8[2-8]\\d\\d)\\d{5}",[6,8,9,10]],["(?:8(?:1[37]|9[5-8])|9(?:0[5-9]|1[0-24-9]|[235-7]\\d|4[2-9]|8[135-9]|9[1-9]))\\d{7}",[10]],["1800\\d{7,9}",[11,12,13]]]],"PK":["92","00","122\\d{6}|[24-8]\\d{10,11}|9(?:[013-9]\\d{8,10}|2(?:[01]\\d\\d|2(?:[06-8]\\d|1[01]))\\d{7})|(?:[2-8]\\d{3}|92(?:[0-7]\\d|8[1-9]))\\d{6}|[24-9]\\d{8}|[89]\\d{7}",[8,9,10,11,12],[["(\\d{3})(\\d{3})(\\d{2,7})","$1 $2 $3",["[89]0"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["1"]],["(\\d{3})(\\d{6,7})","$1 $2",["2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])","9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]"],"(0$1)"],["(\\d{2})(\\d{7,8})","$1 $2",["(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]"],"(0$1)"],["(\\d{5})(\\d{5})","$1 $2",["58"],"(0$1)"],["(\\d{3})(\\d{7})","$1 $2",["3"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[24-9]"],"(0$1)"]],"0",0,0,0,0,0,[["(?:(?:21|42)[2-9]|58[126])\\d{7}|(?:2[25]|4[0146-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\\d{6,7}|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8]))[2-9]\\d{5,6}",[9,10]],["3(?:[0-24]\\d|3[0-7]|55|64)\\d{7}",[10]],["800\\d{5}(?:\\d{3})?",[8,11]],["900\\d{5}",[8]],["122\\d{6}",[9]],0,["(?:2(?:[125]|3[2358]|4[2-4]|9[2-8])|4(?:[0-246-9]|5[3479])|5(?:[1-35-7]|4[2-467])|6(?:0[468]|[1-8])|7(?:[14]|2[236])|8(?:[16]|2[2-689]|3[23578]|4[3478]|5[2356])|9(?:1|22|3[27-9]|4[2-6]|6[3569]|9[2-7]))111\\d{6}",[11,12]]]],"PL":["48","00","(?:6|8\\d\\d)\\d{7}|[1-9]\\d{6}(?:\\d{2})?|[26]\\d{5}",[6,7,8,9,10],[["(\\d{5})","$1",["19"]],["(\\d{3})(\\d{3})","$1 $2",["11|20|64"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1","(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19"]],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["64"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[2-8]|[2-7]|8[1-79]|9[145]"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[["47\\d{7}|(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])(?:[02-9]\\d{6}|1(?:[0-8]\\d{5}|9\\d{3}(?:\\d{2})?))",[7,9]],["21(?:1(?:[145]\\d|3[1-5])|2[0-4]\\d)\\d{4}|(?:45|5[0137]|6[069]|7[2389]|88)\\d{7}",[9]],["800\\d{6,7}",[9,10]],["70[01346-8]\\d{6}",[9]],0,0,["804\\d{6}",[9]],["64\\d{4,7}",[6,7,8,9]],["39\\d{7}",[9]],["801\\d{6}",[9]]]],"PM":["508","00","(?:[45]|80\\d\\d)\\d{5}",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[45]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["(?:4[1-356]|50)\\d{4}",[6]],["(?:4[02-4]|5[056])\\d{4}",[6]],["80[0-5]\\d{6}",[9]]]],"PR":["1","011","(?:[589]\\d\\d|787)\\d{7}",[10],0,"1",0,0,0,0,"787|939",[["(?:787|939)[2-9]\\d{6}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"PS":["970","00","[2489]2\\d{6}|(?:1\\d|5)\\d{8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2489]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["5"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[["(?:22[2-47-9]|42[45]|82[014-68]|92[3569])\\d{5}",[8]],["5[69]\\d{7}",[9]],["1800\\d{6}",[10]],0,0,0,0,0,0,["1700\\d{6}",[10]]]],"PT":["351","00","1693\\d{5}|(?:[26-9]\\d|30)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["2[12]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["16|[236-9]"]]],0,0,0,0,0,0,[["2(?:[12]\\d|3[1-689]|4[1-59]|[57][1-9]|6[1-35689]|8[1-69]|9[1256])\\d{6}"],["6(?:[06]92(?:30|9\\d)|[35]92(?:3[03]|9\\d))\\d{3}|(?:(?:16|6[0356])93|9(?:[1-36]\\d\\d|480))\\d{5}"],["80[02]\\d{6}"],["(?:6(?:0[178]|4[68])\\d|76(?:0[1-57]|1[2-47]|2[237]))\\d{5}"],["884[0-4689]\\d{5}"],0,["70(?:7\\d|8[17])\\d{5}"],["6222\\d{5}"],["30\\d{7}"],["80(?:8\\d|9[1579])\\d{5}"]]],"PW":["680","01[12]","(?:[24-8]\\d\\d|345|900)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]],0,0,0,0,0,0,[["(?:2(?:55|77)|345|488|5(?:35|44|87)|6(?:22|54|79)|7(?:33|47)|8(?:24|55|76)|900)\\d{4}"],["(?:(?:46|83)[0-5]|6[2-4689]0)\\d{4}|(?:45|77|88)\\d{5}"]]],"PY":["595","00","59\\d{4,6}|9\\d{5,10}|(?:[2-46-8]\\d|5[0-8])\\d{4,7}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3,6})","$1 $2",["[2-9]0"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]"],"(0$1)"],["(\\d{3})(\\d{4,5})","$1 $2",["2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["87"]],["(\\d{3})(\\d{6})","$1 $2",["9(?:[5-79]|8[1-6])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["9"]]],"0",0,0,0,0,0,[["(?:[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36])\\d{5,7}|(?:2(?:2[4-68]|[4-68]\\d|7[15]|9[1-5])|3(?:18|3[167]|4[2357]|51|[67]\\d)|4(?:3[12]|5[13]|9[1-47])|5(?:[1-4]\\d|5[02-4])|6(?:3[1-3]|44|7[1-8])|7(?:4[0-4]|5\\d|6[1-578]|75|8[0-8])|858)\\d{5,6}",[7,8,9]],["9(?:51|6[129]|[78][1-6]|9[1-5])\\d{6}",[9]],["9800\\d{5,7}",[9,10,11]],0,0,0,["[2-9]0\\d{4,7}",[6,7,8,9]],0,["8700[0-4]\\d{4}",[9]]]],"QA":["974","00","[2-7]\\d{7}|800\\d{4}(?:\\d{2})?|2\\d{6}",[7,8,9],[["(\\d{3})(\\d{4})","$1 $2",["2[126]|8"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]]],0,0,0,0,0,0,[["414[1-4]\\d{4}|(?:23|4[04])\\d{6}",[8]],["(?:2[89]|[35-7]\\d)\\d{6}",[8]],["800\\d{4}(?:\\d{2})?",[7,9]],0,0,0,0,["2(?:[12]\\d|61)\\d{4}",[7]]]],"RE":["262","00","976\\d{6}|(?:26|[68]\\d)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2689]"],"0$1"]],"0",0,0,0,0,"26[23]|69|[89]",[["26(?:2\\d\\d|3(?:0\\d|1[01]))\\d{4}"],["(?:69(?:2\\d\\d|3(?:0[0-46]|1[013]|2[0-2]|3[0-39]|4\\d|5[0-5]|6[0-6]|7[0-27]|8[0-8]|9[0-479]))|976(?:2[27]|3[0-37]|9\\d))\\d{4}"],["80\\d{7}"],["89[1-37-9]\\d{6}"],0,0,0,0,0,["8(?:1[019]|2[0156]|84|90)\\d{6}"]]],"RO":["40","00","(?:[2378]\\d|90)\\d{7}|[23]\\d{5}",[6,9],[["(\\d{3})(\\d{3})","$1 $2",["2[3-6]","2[3-6]\\d9"],"0$1"],["(\\d{2})(\\d{4})","$1 $2",["219|31"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[23]1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[237-9]"],"0$1"]],"0",0,0,0,0,0,[["[23][13-6]\\d{7}|(?:2(?:19\\d|[3-6]\\d9)|31\\d\\d)\\d\\d"],["7020\\d{5}|7(?:0[013-9]|1[0-3]|[2-7]\\d|8[03-8]|9[019])\\d{6}",[9]],["800\\d{6}",[9]],["90[0136]\\d{6}",[9]],0,0,["(?:37\\d|80[578])\\d{6}",[9]],0,0,["801\\d{6}",[9]]],0," int "],"RS":["381","00","38[02-9]\\d{6,9}|6\\d{7,9}|90\\d{4,8}|38\\d{5,6}|(?:7\\d\\d|800)\\d{3,9}|(?:[12]\\d|3[0-79])\\d{5,10}",[6,7,8,9,10,11,12],[["(\\d{3})(\\d{3,9})","$1 $2",["(?:2[389]|39)0|[7-9]"],"0$1"],["(\\d{2})(\\d{5,10})","$1 $2",["[1-36]"],"0$1"]],"0",0,0,0,0,0,[["(?:11[1-9]\\d|(?:2[389]|39)(?:0[2-9]|[2-9]\\d))\\d{3,8}|(?:1[02-9]|2[0-24-7]|3[0-8])[2-9]\\d{4,9}",[7,8,9,10,11,12]],["6(?:[0-689]|7\\d)\\d{6,7}",[8,9,10]],["800\\d{3,9}"],["(?:78\\d|90[0169])\\d{3,7}",[6,7,8,9,10]],0,0,["7[06]\\d{4,10}"]]],"RU":["7","810","8\\d{13}|[347-9]\\d{9}",[10,14],[["(\\d{4})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-8]|2[1-9])","7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))","7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2"],"8 ($1)",1],["(\\d{5})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-68]|2[1-9])","7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))","7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[349]|8(?:[02-7]|1[1-8])"],"8 ($1)",1],["(\\d{4})(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3 $4",["8"],"8 ($1)"]],"8",0,0,0,0,"3[04-689]|[489]",[["(?:3(?:0[12]|4[1-35-79]|5[1-3]|65|8[1-58]|9[0145])|4(?:01|1[1356]|2[13467]|7[1-5]|8[1-7]|9[1-689])|8(?:1[1-8]|2[01]|3[13-6]|4[0-8]|5[15]|6[1-35-79]|7[1-37-9]))\\d{7}",[10]],["9\\d{9}",[10]],["8(?:0[04]|108\\d{3})\\d{7}"],["80[39]\\d{7}",[10]],["808\\d{7}",[10]]],"8~10"],"RW":["250","00","(?:06|[27]\\d\\d|[89]00)\\d{6}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"]]],"0",0,0,0,0,0,[["(?:06|2[23568]\\d)\\d{6}"],["7[2389]\\d{7}",[9]],["800\\d{6}",[9]],["900\\d{6}",[9]]]],"SA":["966","00","92\\d{7}|(?:[15]|8\\d)\\d{8}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["9"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["81"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]],"0",0,0,0,0,0,[["1(?:1\\d|2[24-8]|3[35-8]|4[3-68]|6[2-5]|7[235-7])\\d{6}",[9]],["579[01]\\d{5}|5(?:[013-689]\\d|7[0-35-8])\\d{6}",[9]],["800\\d{7}",[10]],["925\\d{6}",[9]],0,0,["811\\d{7}",[10]],0,0,["920\\d{6}",[9]]]],"SB":["677","0[01]","(?:[1-6]|[7-9]\\d\\d)\\d{4}",[5,7],[["(\\d{2})(\\d{5})","$1 $2",["7|8[4-9]|9(?:[1-8]|9[0-8])"]]],0,0,0,0,0,0,[["(?:1[4-79]|[23]\\d|4[0-2]|5[03]|6[0-37])\\d{3}",[5]],["48\\d{3}|(?:(?:7[1-9]|8[4-9])\\d|9(?:1[2-9]|2[013-9]|3[0-2]|[46]\\d|5[0-46-9]|7[0-689]|8[0-79]|9[0-8]))\\d{4}"],["1[38]\\d{3}",[5]],0,0,0,0,0,["5[12]\\d{3}",[5]]]],"SC":["248","010|0[0-2]","800\\d{4}|(?:[249]\\d|64)\\d{5}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[246]|9[57]"]]],0,0,0,0,0,0,[["4[2-46]\\d{5}"],["2[125-8]\\d{5}"],["800[08]\\d{3}"],0,0,0,0,0,["971\\d{4}|(?:64|95)\\d{5}"]],"00"],"SD":["249","00","[19]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[19]"],"0$1"]],"0",0,0,0,0,0,[["1(?:5\\d|8[35-7])\\d{6}"],["(?:1[0-2]|9[0-3569])\\d{7}"]]],"SE":["46","00","(?:[26]\\d\\d|9)\\d{9}|[1-9]\\d{8}|[1-689]\\d{7}|[1-4689]\\d{6}|2\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{2,3})(\\d{2})","$1-$2 $3",["20"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{4})","$1-$2",["9(?:00|39|44|9)"],"0$1",0,"$1 $2"],["(\\d{2})(\\d{3})(\\d{2})","$1-$2 $3",["[12][136]|3[356]|4[0246]|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3"],["(\\d)(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2,3})(\\d{2})","$1-$2 $3",["1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{2,3})(\\d{3})","$1-$2 $3",["9(?:00|39|44)"],"0$1",0,"$1 $2 $3"],["(\\d{2})(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3 $4"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["10|7"],"0$1",0,"$1 $2 $3 $4"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1-$2 $3 $4",["[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{3})","$1-$2 $3 $4",["9"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4 $5",["[26]"],"0$1",0,"$1 $2 $3 $4 $5"]],"0",0,0,0,0,0,[["(?:(?:[12][136]|3[356]|4[0246]|6[03]|8\\d)\\d|90[1-9])\\d{4,6}|(?:1(?:2[0-35]|4[0-4]|5[0-25-9]|7[13-6]|[89]\\d)|2(?:2[0-7]|4[0136-8]|5[0138]|7[018]|8[01]|9[0-57])|3(?:0[0-4]|1\\d|2[0-25]|4[056]|7[0-2]|8[0-3]|9[023])|4(?:1[013-8]|3[0135]|5[14-79]|7[0-246-9]|8[0156]|9[0-689])|5(?:0[0-6]|[15][0-5]|2[0-68]|3[0-4]|4\\d|6[03-5]|7[013]|8[0-79]|9[01])|6(?:1[1-3]|2[0-4]|4[02-57]|5[0-37]|6[0-3]|7[0-2]|8[0247]|9[0-356])|9(?:1[0-68]|2\\d|3[02-5]|4[0-3]|5[0-4]|[68][01]|7[0135-8]))\\d{5,6}",[7,8,9]],["7[02369]\\d{7}",[9]],["20\\d{4,7}",[6,7,8,9]],["649\\d{6}|99[1-59]\\d{4}(?:\\d{3})?|9(?:00|39|44)[1-8]\\d{3,6}",[7,8,9,10]],["75[1-8]\\d{6}",[9]],0,["10[1-8]\\d{6}",[9]],["74[02-9]\\d{6}",[9]],0,["77[0-7]\\d{6}",[9]]]],"SG":["65","0[0-3]\\d","(?:(?:1\\d|8)\\d\\d|7000)\\d{7}|[3689]\\d{7}",[8,10,11],[["(\\d{4})(\\d{4})","$1 $2",["[369]|8(?:0[1-5]|[1-9])"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]],["(\\d{4})(\\d{4})(\\d{3})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[["662[0-24-9]\\d{4}|6(?:[0-578]\\d|6[013-57-9]|9[0-35-9])\\d{5}",[8]],["8(?:05[0-7]|95[0-2])\\d{4}|(?:8(?:0[1-4]|[1-8]\\d|9[0-4])|9[0-8]\\d)\\d{5}",[8]],["(?:18|8)00\\d{7}",[10,11]],["1900\\d{7}",[11]],0,0,["7000\\d{7}",[11]],0,["(?:3[12]\\d|666)\\d{5}",[8]]]],"SH":["290","00","(?:[256]\\d|8)\\d{3}",[4,5],0,0,0,0,0,0,"[256]",[["2(?:[0-57-9]\\d|6[4-9])\\d\\d"],["[56]\\d{4}",[5]],0,0,0,0,0,0,["262\\d\\d",[5]]]],"SI":["386","00|10(?:22|66|88|99)","[1-7]\\d{7}|8\\d{4,7}|90\\d{4,6}",[5,6,7,8],[["(\\d{2})(\\d{3,6})","$1 $2",["8[09]|9"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["59|8"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37][01]|4[0139]|51|6"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-57]"],"(0$1)"]],"0",0,0,0,0,0,[["(?:[1-357][2-8]|4[24-8])\\d{6}",[8]],["65(?:1\\d|55|6[01]|70)\\d{4}|(?:[37][01]|4[0139]|51|6[489])\\d{6}",[8]],["80\\d{4,6}",[6,7,8]],["89[1-3]\\d{2,5}|90\\d{4,6}"],0,0,0,0,["(?:59\\d\\d|8(?:1(?:[67]\\d|8[0-589])|2(?:0\\d|2[0-37-9]|8[0-2489])|3[389]\\d))\\d{4}",[8]]],"00"],"SJ":["47","00","0\\d{4}|(?:[489]\\d|[57]9)\\d{6}",[5,8],0,0,0,0,0,0,"79",[["79\\d{6}",[8]],["(?:4[015-8]|59|9\\d)\\d{6}",[8]],["80[01]\\d{5}",[8]],["82[09]\\d{5}",[8]],["880\\d{5}",[8]],0,["(?:0[2-9]|81(?:0(?:0[7-9]|1\\d)|5\\d\\d))\\d{3}"],0,["85[0-5]\\d{5}",[8]],["810(?:0[0-6]|[2-8]\\d)\\d{3}",[8]]]],"SK":["421","00","[2-689]\\d{8}|[2-59]\\d{6}|[2-5]\\d{5}",[6,7,9],[["(\\d)(\\d{2})(\\d{3,4})","$1 $2 $3",["21"],"0$1"],["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["[3-5][1-8]1","[3-5][1-8]1[67]"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1/$2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[689]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1/$2 $3 $4",["[3-5]"],"0$1"]],"0",0,0,0,0,0,[["(?:2(?:16|[2-9]\\d{3})|(?:(?:[3-5][1-8]\\d|819)\\d|601[1-5])\\d)\\d{4}|(?:2|[3-5][1-8])1[67]\\d{3}|[3-5][1-8]16\\d\\d"],["909[1-9]\\d{5}|9(?:0[1-8]|1[0-24-9]|4[03-57-9]|5\\d)\\d{6}",[9]],["800\\d{6}",[9]],["9(?:00|[78]\\d)\\d{6}",[9]],0,0,["96\\d{7}",[9]],["9090\\d{3}",[7]],["6(?:02|5[0-4]|9[0-6])\\d{6}",[9]],["8[5-9]\\d{7}",[9]]]],"SL":["232","00","(?:[237-9]\\d|66)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[236-9]"],"(0$1)"]],"0",0,0,0,0,0,[["22[2-4][2-9]\\d{4}"],["(?:25|3[0-5]|66|7[2-9]|8[08]|9[09])\\d{6}"]]],"SM":["378","00","(?:0549|[5-7]\\d)\\d{6}",[8,10],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-7]"]],["(\\d{4})(\\d{6})","$1 $2",["0"]]],0,0,"([89]\\d{5})$","0549$1",0,0,[["0549(?:8[0157-9]|9\\d)\\d{4}",[10]],["6[16]\\d{6}",[8]],0,["7[178]\\d{6}",[8]],0,0,0,0,["5[158]\\d{6}",[8]]]],"SN":["221","00","(?:[378]\\d|93)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[379]"]]],0,0,0,0,0,0,[["3(?:0(?:1[0-2]|80)|282|3(?:8[1-9]|9[3-9])|611)\\d{5}"],["7(?:(?:[06-8]\\d|21|90)\\d|5(?:01|[19]0|25|[38]3|[4-7]\\d))\\d{5}"],["800\\d{6}"],["88[4689]\\d{6}"],0,0,0,0,["(?:3(?:392|9[01]\\d)\\d|93(?:3[13]0|929))\\d{4}"],["81[02468]\\d{6}"]]],"SO":["252","00","[346-9]\\d{8}|[12679]\\d{7}|[1-5]\\d{6}|[1348]\\d{5}",[6,7,8,9],[["(\\d{2})(\\d{4})","$1 $2",["8[125]"]],["(\\d{6})","$1",["[134]"]],["(\\d)(\\d{6})","$1 $2",["[15]|2[0-79]|3[0-46-8]|4[0-7]"]],["(\\d)(\\d{7})","$1 $2",["24|[67]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3478]|64|90"]],["(\\d{2})(\\d{5,7})","$1 $2",["1|28|6(?:0[5-7]|[1-35-9])|9[2-9]"]]],"0",0,0,0,0,0,[["(?:1\\d|2[0-79]|3[0-46-8]|4[0-7]|5[57-9])\\d{5}|(?:[134]\\d|8[125])\\d{4}",[6,7]],["(?:(?:15|(?:3[59]|4[89]|79|8[08])\\d|6(?:0[5-7]|[1-9]\\d)|9(?:0\\d|[2-9]))\\d|2(?:4\\d|8))\\d{5}|[67]\\d{7}",[7,8,9]]]],"SR":["597","00","(?:[2-5]|68|[78]\\d)\\d{5}",[6,7],[["(\\d{2})(\\d{2})(\\d{2})","$1-$2-$3",["56"]],["(\\d{3})(\\d{3})","$1-$2",["[2-5]"]],["(\\d{3})(\\d{4})","$1-$2",["[6-8]"]]],0,0,0,0,0,0,[["(?:2[1-3]|3[0-7]|(?:4|68)\\d|5[2-58])\\d{4}"],["(?:7[124-7]|8[124-9])\\d{5}",[7]],0,0,0,0,0,0,["56\\d{4}",[6]]]],"SS":["211","00","[19]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[19]"],"0$1"]],"0",0,0,0,0,0,[["1[89]\\d{7}"],["(?:12|9[1257-9])\\d{7}"]]],"ST":["239","00","(?:22|9\\d)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[29]"]]],0,0,0,0,0,0,[["22\\d{5}"],["900[5-9]\\d{3}|9(?:0[1-9]|[89]\\d)\\d{4}"]]],"SV":["503","00","[267]\\d{7}|[89]00\\d{4}(?:\\d{4})?",[7,8,11],[["(\\d{3})(\\d{4})","$1 $2",["[89]"]],["(\\d{4})(\\d{4})","$1 $2",["[267]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[89]"]]],0,0,0,0,0,0,[["2(?:[1-6]\\d{3}|[79]90[034]|890[0245])\\d{3}",[8]],["66(?:[02-9]\\d\\d|1(?:[02-9]\\d|16))\\d{3}|(?:6[0-57-9]|7\\d)\\d{6}",[8]],["800\\d{4}(?:\\d{4})?",[7,11]],["900\\d{4}(?:\\d{4})?",[7,11]]]],"SX":["1","011","7215\\d{6}|(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|(5\\d{6})$","721$1",0,"721",[["7215(?:4[2-8]|8[239]|9[056])\\d{4}"],["7215(?:1[02]|2\\d|5[034679]|8[014-8])\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"SY":["963","00","[1-39]\\d{8}|[1-5]\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-5]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1",1]],"0",0,0,0,0,0,[["21\\d{6,7}|(?:1(?:[14]\\d|[2356])|2[235]|3(?:[13]\\d|4)|4[134]|5[1-3])\\d{6}"],["9[1-689]\\d{7}",[9]]]],"SZ":["268","00","0800\\d{4}|(?:[237]\\d|900)\\d{6}",[8,9],[["(\\d{4})(\\d{4})","$1 $2",["[0237]"]],["(\\d{5})(\\d{4})","$1 $2",["9"]]],0,0,0,0,0,0,[["[23][2-5]\\d{6}",[8]],["7[6-9]\\d{6}",[8]],["0800\\d{4}",[8]],["900\\d{6}",[9]],0,0,0,0,["70\\d{6}",[8]]]],"TA":["290","00","8\\d{3}",[4],0,0,0,0,0,0,"8",[["8\\d{3}"]]],"TC":["1","011","(?:[58]\\d\\d|649|900)\\d{7}",[10],0,"1",0,"1|([2-479]\\d{6})$","649$1",0,"649",[["649(?:266|712|9(?:4\\d|50))\\d{4}"],["649(?:2(?:3[129]|4[1-79])|3\\d\\d|4[34][1-3])\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,0,0,["649(?:71[01]|966)\\d{4}"]]],"TD":["235","00|16","(?:22|[69]\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2679]"]]],0,0,0,0,0,0,[["22(?:[37-9]0|5[0-5]|6[89])\\d{4}"],["(?:6[023568]|77|9\\d)\\d{6}"]],"00"],"TG":["228","00","[279]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[279]"]]],0,0,0,0,0,0,[["2(?:2[2-7]|3[23]|4[45]|55|6[67]|77)\\d{5}"],["(?:7[09]|9[0-36-9])\\d{6}"]]],"TH":["66","00[1-9]","(?:001800|[2-57]|[689]\\d)\\d{7}|1\\d{7,9}",[8,9,10,13],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[13-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[["(?:1[0689]|2\\d|3[2-9]|4[2-5]|5[2-6]|7[3-7])\\d{6}",[8]],["671[0-8]\\d{5}|(?:14|6[1-6]|[89]\\d)\\d{7}",[9]],["(?:001800\\d|1800)\\d{6}",[10,13]],["1900\\d{6}",[10]],0,0,0,0,["6[08]\\d{7}",[9]]]],"TJ":["992","810","(?:00|[1-57-9]\\d)\\d{7}",[9],[["(\\d{6})(\\d)(\\d{2})","$1 $2 $3",["331","3317"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[34]7|91[78]"]],["(\\d{4})(\\d)(\\d{4})","$1 $2 $3",["3[1-5]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[0-57-9]"]]],0,0,0,0,0,0,[["(?:3(?:1[3-5]|2[245]|3[12]|4[24-7]|5[25]|72)|4(?:46|74|87))\\d{6}"],["41[18]\\d{6}|(?:[034]0|[17][017]|2[02]|5[05]|8[08]|9\\d)\\d{7}"]],"8~10"],"TK":["690","00","[2-47]\\d{3,6}",[4,5,6,7],0,0,0,0,0,0,0,[["(?:2[2-4]|[34]\\d)\\d{2,5}"],["7[2-4]\\d{2,5}"]]],"TL":["670","00","7\\d{7}|(?:[2-47]\\d|[89]0)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[2-489]|70"]],["(\\d{4})(\\d{4})","$1 $2",["7"]]],0,0,0,0,0,0,[["(?:2[1-5]|3[1-9]|4[1-4])\\d{5}",[7]],["7[2-8]\\d{6}",[8]],["80\\d{5}",[7]],["90\\d{5}",[7]],["70\\d{5}",[7]]]],"TM":["993","810","[1-6]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["12"],"(8 $1)"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-5]"],"(8 $1)"],["(\\d{2})(\\d{6})","$1 $2",["6"],"8 $1"]],"8",0,0,0,0,0,[["(?:1(?:2\\d|3[1-9])|2(?:22|4[0-35-8])|3(?:22|4[03-9])|4(?:22|3[128]|4\\d|6[15])|5(?:22|5[7-9]|6[014-689]))\\d{5}"],["6\\d{7}"]],"8~10"],"TN":["216","00","[2-57-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-57-9]"]]],0,0,0,0,0,0,[["81200\\d{3}|(?:3[0-2]|7\\d)\\d{6}"],["3(?:001|[12]40)\\d{4}|(?:(?:[259]\\d|4[0-7])\\d|3(?:1[1-35]|6[0-4]|91))\\d{5}"],["8010\\d{4}"],["88\\d{6}"],0,0,0,0,0,["8[12]10\\d{4}"]]],"TO":["676","00","(?:0800|(?:[5-8]\\d\\d|999)\\d)\\d{3}|[2-8]\\d{4}",[5,7],[["(\\d{2})(\\d{3})","$1-$2",["[2-4]|50|6[09]|7[0-24-69]|8[05]"]],["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{3})(\\d{4})","$1 $2",["[5-9]"]]],0,0,0,0,0,0,[["(?:2\\d|3[0-8]|4[0-4]|50|6[09]|7[0-24-69]|8[05])\\d{3}",[5]],["(?:55[4-6]|6(?:[09]\\d|3[02]|8[15-9])|(?:7\\d|8[46-9])\\d|999)\\d{4}",[7]],["0800\\d{3}",[7]],0,0,0,0,0,["55[0-37-9]\\d{4}",[7]]]],"TR":["90","00","4\\d{6}|8\\d{11,12}|(?:[2-58]\\d\\d|900)\\d{7}",[7,10,12,13],[["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["512|8[01589]|90"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5(?:[0-59]|61)","5(?:[0-59]|616)","5(?:[0-59]|6161)"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24][1-8]|3[1-9]"],"(0$1)",1],["(\\d{3})(\\d{3})(\\d{6,7})","$1 $2 $3",["80"],"0$1",1]],"0",0,0,0,0,0,[["(?:2(?:[13][26]|[28][2468]|[45][268]|[67][246])|3(?:[13][28]|[24-6][2468]|[78][02468]|92)|4(?:[16][246]|[23578][2468]|4[26]))\\d{7}",[10]],["56161\\d{5}|5(?:0[15-7]|1[06]|24|[34]\\d|5[1-59]|9[46])\\d{7}",[10]],["8(?:00\\d{7}(?:\\d{2,3})?|11\\d{7})",[10,12,13]],["(?:8[89]8|900)\\d{7}",[10]],["592(?:21[12]|461)\\d{4}",[10]],0,["444\\d{4}",[7]],["512\\d{7}",[10]],["850\\d{7}",[10]]]],"TT":["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-46-8]\\d{6})$","868$1",0,"868",[["868(?:2(?:01|1[5-9]|[23]\\d|4[0-2])|6(?:0[7-9]|1[02-8]|2[1-9]|[3-69]\\d|7[0-79])|82[124])\\d{4}"],["868(?:(?:2[5-9]|3\\d)\\d|4(?:3[0-6]|[6-9]\\d)|6(?:20|78|8\\d)|7(?:0[1-9]|1[02-9]|[2-9]\\d))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"TV":["688","00","(?:2|7\\d\\d|90)\\d{4}",[5,6,7],[["(\\d{2})(\\d{3})","$1 $2",["2"]],["(\\d{2})(\\d{4})","$1 $2",["90"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]],0,0,0,0,0,0,[["2[02-9]\\d{3}",[5]],["(?:7[01]\\d|90)\\d{4}",[6,7]]]],"TW":["886","0(?:0[25-79]|19)","[2-689]\\d{8}|7\\d{9,10}|[2-8]\\d{7}|2\\d{6}",[7,8,9,10,11],[["(\\d{2})(\\d)(\\d{4})","$1 $2 $3",["202"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[258]0"],"0$1"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]","[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,5})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[["(?:2[2-8]\\d|370|55[01]|7[1-9])\\d{6}|4(?:(?:0(?:0[1-9]|[2-48]\\d)|1[023]\\d)\\d{4,5}|(?:[239]\\d\\d|4(?:0[56]|12|49))\\d{5})|6(?:[01]\\d{7}|4(?:0[56]|12|24|4[09])\\d{4,5})|8(?:(?:2(?:3\\d|4[0-269]|[578]0|66)|36[24-9]|90\\d\\d)\\d{4}|4(?:0[56]|12|24|4[09])\\d{4,5})|(?:2(?:2(?:0\\d\\d|4(?:0[68]|[249]0|3[0-467]|5[0-25-9]|6[0235689]))|(?:3(?:[09]\\d|1[0-4])|(?:4\\d|5[0-49]|6[0-29]|7[0-5])\\d)\\d)|(?:(?:3[2-9]|5[2-8]|6[0-35-79]|8[7-9])\\d\\d|4(?:2(?:[089]\\d|7[1-9])|(?:3[0-4]|[78]\\d|9[01])\\d))\\d)\\d{3}",[8,9]],["(?:40001[0-2]|9[0-8]\\d{4})\\d{3}",[9]],["80[0-79]\\d{6}|800\\d{5}",[8,9]],["20(?:[013-9]\\d\\d|2)\\d{4}",[7,9]],["99\\d{7}",[9]],0,["50[0-46-9]\\d{6}",[9]],0,["7010(?:[0-2679]\\d|3[0-7]|8[0-5])\\d{5}|70\\d{8}",[10,11]]],0,"#"],"TZ":["255","00[056]","(?:[25-8]\\d|41|90)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[24]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["5"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[67]"],"0$1"]],"0",0,0,0,0,0,[["2[2-8]\\d{7}"],["77[2-9]\\d{6}|(?:6[125-9]|7[13-689])\\d{7}"],["80[08]\\d{6}"],["90\\d{7}"],0,0,0,0,["41\\d{7}"],["8(?:40|6[01])\\d{6}"]]],"UA":["380","00","[89]\\d{9}|[3-9]\\d{8}",[9,10],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]","6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])","3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3-7]|89|9[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,[["(?:3[1-8]|4[13-8]|5[1-7]|6[12459])\\d{7}",[9]],["(?:39|50|6[36-8]|7[1-3]|9[1-9])\\d{7}",[9]],["800[1-8]\\d{5,6}"],["900[239]\\d{5,6}"],0,0,0,0,["89[1-579]\\d{6}",[9]]],"0~0"],"UG":["256","00[057]","800\\d{6}|(?:[29]0|[347]\\d)\\d{7}",[9],[["(\\d{4})(\\d{5})","$1 $2",["202","2024"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[27-9]|4(?:6[45]|[7-9])"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[34]"],"0$1"]],"0",0,0,0,0,0,[["20(?:(?:240|30[67])\\d|6(?:00[0-2]|30[0-4]))\\d{3}|(?:20(?:[017]\\d|2[5-9]|32|5[0-4]|6[15-9])|[34]\\d{3})\\d{5}"],["726[01]\\d{5}|7(?:[01578]\\d|20|36|[46][0-4]|9[89])\\d{6}"],["800[1-3]\\d{5}"],["90[1-3]\\d{6}"]]],"US":["1","011","[2-9]\\d{9}|3\\d{6}",[10],[["(\\d{3})(\\d{4})","$1-$2",["310"],0,1],["(\\d{3})(\\d{3})(\\d{4})","($1) $2-$3",["[2-9]"],0,1,"$1-$2-$3"]],"1",0,0,0,0,0,[["505(?:[2-57-9]\\d\\d|6(?:[0-35-9]\\d|44))\\d{4}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[01679]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[068]|3[0-289]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-389]|8[04-69]))[2-9]\\d{6}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"UY":["598","0(?:0|1[3-9]\\d)","4\\d{9}|[1249]\\d{7}|(?:[49]\\d|80)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["405|8|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[124]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["4"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:770|987)|(?:2\\d|4[2-7])\\d\\d)\\d{4}",[8]],["9[1-9]\\d{6}",[8]],["(?:4\\d{5}|80[05])\\d{4}|405\\d{4}",[7,10]],["90[0-8]\\d{4}",[7]]],"00"," int. "],"UZ":["998","810","(?:33|55|[679]\\d|88)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[35-9]"],"8 $1"]],"8",0,0,0,0,0,[["(?:6(?:1(?:22|3[124]|4[1-4]|5[1-3578]|64)|2(?:22|3[0-57-9]|41)|5(?:22|3[3-7]|5[024-8])|6\\d\\d|7(?:[23]\\d|7[69])|9(?:22|4[1-8]|6[135]))|7(?:0(?:5[4-9]|6[0146]|7[124-6]|9[135-8])|(?:1[12]|8\\d)\\d|2(?:22|3[13-57-9]|4[1-3579]|5[14])|3(?:2\\d|3[1578]|4[1-35-7]|5[1-57]|61)|4(?:2\\d|3[1-579]|7[1-79])|5(?:22|5[1-9]|6[1457])|6(?:22|3[12457]|4[13-8])|9(?:22|5[1-9])))\\d{5}"],["(?:(?:33|88|9[0-57-9])\\d{3}|55(?:50[013]|90\\d)|6(?:1(?:2(?:2[01]|98)|35[0-4]|50\\d|61[23]|7(?:[01][017]|4\\d|55|9[5-9]))|2(?:(?:11|7\\d)\\d|2(?:[12]1|9[01379])|5(?:[126]\\d|3[0-4]))|5(?:19[01]|2(?:27|9[26])|(?:30|59|7\\d)\\d)|6(?:2(?:1[5-9]|2[0367]|38|41|52|60)|(?:3[79]|9[0-3])\\d|4(?:56|83)|7(?:[07]\\d|1[017]|3[07]|4[047]|5[057]|67|8[0178]|9[79]))|7(?:2(?:24|3[237]|4[5-9]|7[15-8])|5(?:7[12]|8[0589])|7(?:0\\d|[39][07])|9(?:0\\d|7[079]))|9(?:2(?:1[1267]|3[01]|5\\d|7[0-4])|(?:5[67]|7\\d)\\d|6(?:2[0-26]|8\\d)))|7(?:[07]\\d{3}|1(?:13[01]|6(?:0[47]|1[67]|66)|71[3-69]|98\\d)|2(?:2(?:2[79]|95)|3(?:2[5-9]|6[0-6])|57\\d|7(?:0\\d|1[17]|2[27]|3[37]|44|5[057]|66|88))|3(?:2(?:1[0-6]|21|3[469]|7[159])|(?:33|9[4-6])\\d|5(?:0[0-4]|5[579]|9\\d)|7(?:[0-3579]\\d|4[0467]|6[67]|8[078]))|4(?:2(?:29|5[0257]|6[0-7]|7[1-57])|5(?:1[0-4]|8\\d|9[5-9])|7(?:0\\d|1[024589]|2[0-27]|3[0137]|[46][07]|5[01]|7[5-9]|9[079])|9(?:7[015-9]|[89]\\d))|5(?:112|2(?:0\\d|2[29]|[49]4)|3[1568]\\d|52[6-9]|7(?:0[01578]|1[017]|[23]7|4[047]|[5-7]\\d|8[78]|9[079]))|6(?:2(?:2[1245]|4[2-4])|39\\d|41[179]|5(?:[349]\\d|5[0-2])|7(?:0[017]|[13]\\d|22|44|55|67|88))|9(?:22[128]|3(?:2[0-4]|7\\d)|57[02569]|7(?:2[05-9]|3[37]|4\\d|60|7[2579]|87|9[07]))))\\d{4}"]],"8~10"],"VA":["39","00","0\\d{5,10}|3[0-8]\\d{7,10}|55\\d{8}|8\\d{5}(?:\\d{2,4})?|(?:1\\d|39)\\d{7,8}",[6,7,8,9,10,11],0,0,0,0,0,0,"06698",[["06698\\d{1,6}"],["3[1-9]\\d{8}|3[2-9]\\d{7}",[9,10]],["80(?:0\\d{3}|3)\\d{3}",[6,9]],["(?:0878\\d{3}|89(?:2\\d|3[04]|4(?:[0-4]|[5-9]\\d\\d)|5[0-4]))\\d\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\d{6}",[6,8,9,10]],["1(?:78\\d|99)\\d{6}",[9,10]],0,0,0,["55\\d{8}",[10]],["84(?:[08]\\d{3}|[17])\\d{3}",[6,9]]]],"VC":["1","011","(?:[58]\\d\\d|784|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","784$1",0,"784",[["784(?:266|3(?:6[6-9]|7\\d|8[0-6])|4(?:38|5[0-36-8]|8[0-8])|5(?:55|7[0-2]|93)|638|784)\\d{4}"],["784(?:4(?:3[0-5]|5[45]|89|9[0-8])|5(?:2[6-9]|3[0-4])|720)\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"],0,0,0,["78451[0-2]\\d{4}"]]],"VE":["58","00","[68]00\\d{7}|(?:[24]\\d|[59]0)\\d{8}",[10],[["(\\d{3})(\\d{7})","$1-$2",["[24-689]"],"0$1"]],"0",0,0,0,0,0,[["(?:2(?:12|3[457-9]|[467]\\d|[58][1-9]|9[1-6])|[4-6]00)\\d{7}"],["4(?:1[24-8]|2[46])\\d{7}"],["800\\d{7}"],["90[01]\\d{7}"],0,0,["501\\d{7}"]]],"VG":["1","011","(?:284|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-578]\\d{6})$","284$1",0,"284",[["284496[0-5]\\d{3}|284(?:229|4(?:22|9[45])|774|8(?:52|6[459]))\\d{4}"],["284496[6-9]\\d{3}|284(?:245|3(?:0[0-3]|4[0-7]|68|9[34])|4(?:4[0-6]|68|99)|5(?:4[0-7]|68|9[69]))\\d{4}"],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"VI":["1","011","[58]\\d{9}|(?:34|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","340$1",0,"340",[["340(?:2(?:0[0-38]|2[06-8]|4[49]|77)|3(?:32|44)|4(?:2[23]|44|7[34]|89)|5(?:1[34]|55)|6(?:2[56]|4[23]|77|9[023])|7(?:1[2-57-9]|2[57]|7\\d)|884|998)\\d{4}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"VN":["84","00","[12]\\d{9}|[135-9]\\d{8}|[16]\\d{7}|[16-8]\\d{6}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["80"],"0$1",1],["(\\d{4})(\\d{4,6})","$1 $2",["1"],0,1],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[69]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3578]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["2[48]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["2"],"0$1",1]],"0",0,0,0,0,0,[["2(?:0[3-9]|1[0-689]|2[0-25-9]|3[2-9]|4[2-8]|5[124-9]|6[0-39]|7[0-7]|8[2-79]|9[0-4679])\\d{7}",[10]],["(?:5(?:2[238]|59)|89[6-9]|99[013-9])\\d{6}|(?:3\\d|5[689]|7[06-9]|8[1-8]|9[0-8])\\d{7}",[9]],["1800\\d{4,6}|12(?:0[13]|28)\\d{4}",[8,9,10]],["1900\\d{4,6}",[8,9,10]],0,0,["(?:[17]99|80\\d)\\d{4}|69\\d{5,6}",[7,8]],0,["672\\d{6}",[9]]]],"VU":["678","00","[57-9]\\d{6}|(?:[238]\\d|48)\\d{3}",[5,7],[["(\\d{3})(\\d{4})","$1 $2",["[57-9]"]]],0,0,0,0,0,0,[["(?:38[0-8]|48[4-9])\\d\\d|(?:2[02-9]|3[4-7]|88)\\d{3}",[5]],["(?:[58]\\d|7[013-7])\\d{5}",[7]],["81[18]\\d\\d",[5]],0,0,0,["(?:3[03]|900\\d)\\d{3}"],0,["9(?:0[1-9]|1[01])\\d{4}",[7]]]],"WF":["681","00","(?:40|72)\\d{4}|8\\d{5}(?:\\d{3})?",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[478]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]],0,0,0,0,0,0,[["72\\d{4}",[6]],["(?:72|8[23])\\d{4}",[6]],["80[0-5]\\d{6}",[9]]]],"WS":["685","0","(?:[2-6]|8\\d{5})\\d{4}|[78]\\d{6}|[68]\\d{5}",[5,6,7,10],[["(\\d{5})","$1",["[2-5]|6[1-9]"]],["(\\d{3})(\\d{3,7})","$1 $2",["[68]"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]],0,0,0,0,0,0,[["6[1-9]\\d{3}|(?:[2-5]|60)\\d{4}",[5,6]],["(?:7[1-35-7]|8(?:[3-7]|9\\d{3}))\\d{5}",[7,10]],["800\\d{3}",[6]]]],"XK":["383","00","[23]\\d{7,8}|(?:4\\d\\d|[89]00)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[23]"],"0$1"]],"0",0,0,0,0,0,[["(?:2[89]|39)0\\d{6}|[23][89]\\d{6}"],["4[3-9]\\d{6}",[8]],["800\\d{5}",[8]],["900\\d{5}",[8]]]],"YE":["967","00","(?:1|7\\d)\\d{7}|[1-7]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-6]|7[24-68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[["78[0-7]\\d{4}|17\\d{6}|(?:[12][2-68]|3[2358]|4[2-58]|5[2-6]|6[3-58]|7[24-6])\\d{5}",[7,8]],["7[0137]\\d{7}",[9]]]],"YT":["262","00","80\\d{7}|(?:26|63)9\\d{6}",[9],0,"0",0,0,0,0,"269|63",[["269(?:0[0-367]|5[0-3]|6\\d|[78]0)\\d{4}"],["639(?:0[0-79]|1[019]|[267]\\d|3[09]|40|5[05-9]|9[04-79])\\d{4}"],["80\\d{7}"]]],"ZA":["27","00","[1-79]\\d{8}|8\\d{4,9}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,4})","$1 $2",["8[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["8[1-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["860"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0",0,0,0,0,0,[["(?:2(?:0330|4302)|52087)0\\d{3}|(?:1[0-8]|2[1-378]|3[1-69]|4\\d|5[1346-8])\\d{7}",[9]],["(?:1(?:3492[0-25]|4495[0235]|549(?:20|5[01]))|4[34]492[01])\\d{3}|8[1-4]\\d{3,7}|(?:2[27]|47|54)4950\\d{3}|(?:1(?:049[2-4]|9[12]\\d\\d)|(?:6\\d|7[0-46-9])\\d{3}|8(?:5\\d{3}|7(?:08[67]|158|28[5-9]|310)))\\d{4}|(?:1[6-8]|28|3[2-69]|4[025689]|5[36-8])4920\\d{3}|(?:12|[2-5]1)492\\d{4}",[5,6,7,8,9]],["80\\d{7}",[9]],["(?:86[2-9]|9[0-2]\\d)\\d{6}",[9]],0,0,["861\\d{6,7}",[9,10]],0,["87(?:08[0-589]|15[0-79]|28[0-4]|31[1-9])\\d{4}|87(?:[02][0-79]|1[0-46-9]|3[02-9]|[4-9]\\d)\\d{5}",[9]],["860\\d{6}",[9]]]],"ZM":["260","00","800\\d{6}|(?:21|63|[79]\\d)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[28]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[79]"],"0$1"]],"0",0,0,0,0,0,[["21[1-8]\\d{6}"],["(?:7[5-79]|9[5-8])\\d{7}"],["800\\d{6}"],0,0,0,0,0,["63\\d{7}"]]],"ZW":["263","00","2(?:[0-57-9]\\d{6,8}|6[0-24-9]\\d{6,7})|[38]\\d{9}|[35-8]\\d{8}|[3-6]\\d{7}|[1-689]\\d{6}|[1-3569]\\d{5}|[1356]\\d{4}",[5,6,7,8,9,10],[["(\\d{3})(\\d{3,5})","$1 $2",["2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]"],"0$1"],["(\\d)(\\d{3})(\\d{2,4})","$1 $2 $3",["[49]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["80"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2","2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)","2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["29[013-9]|39|54"],"0$1"],["(\\d{4})(\\d{3,5})","$1 $2",["(?:25|54)8","258|5483"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:(?:3\\d|9)\\d|[4-8])|2(?:(?:(?:0(?:2[014]|5)|(?:2[0157]|31|84|9)\\d\\d|[56](?:[14]\\d\\d|20)|7(?:[089]|2[03]|[35]\\d\\d))\\d|4(?:2\\d\\d|8))\\d|1(?:2|[39]\\d{4}))|3(?:(?:123|(?:29\\d|92)\\d)\\d\\d|7(?:[19]|[56]\\d))|5(?:0|1[2-478]|26|[37]2|4(?:2\\d{3}|83)|5(?:25\\d\\d|[78])|[689]\\d)|6(?:(?:[16-8]21|28|52[013])\\d\\d|[39])|8(?:[1349]28|523)\\d\\d)\\d{3}|(?:4\\d\\d|9[2-9])\\d{4,5}|(?:(?:2(?:(?:(?:0|8[146])\\d|7[1-7])\\d|2(?:[278]\\d|92)|58(?:2\\d|3))|3(?:[26]|9\\d{3})|5(?:4\\d|5)\\d\\d)\\d|6(?:(?:(?:[0-246]|[78]\\d)\\d|37)\\d|5[2-8]))\\d\\d|(?:2(?:[569]\\d|8[2-57-9])|3(?:[013-59]\\d|8[37])|6[89]8)\\d{3}"],["7(?:[178]\\d|3[1-9])\\d{6}",[9]],["80(?:[01]\\d|20|8[0-8])\\d{3}",[7]],0,0,0,0,0,["86(?:1[12]|22|30|44|55|77|8[368])\\d{6}",[10]]]]},"nonGeographic":{"800":["800",0,"(?:00|[1-9]\\d)\\d{6}",[8],[["(\\d{4})(\\d{4})","$1 $2",["\\d"]]],0,0,0,0,0,0,[0,0,["(?:00|[1-9]\\d)\\d{6}"]]],"808":["808",0,"[1-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[1-9]"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,["[1-9]\\d{7}"]]],"870":["870",0,"7\\d{11}|[35-7]\\d{8}",[9,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[35-7]"]]],0,0,0,0,0,0,[0,["(?:[356]|774[45])\\d{8}|7[6-8]\\d{7}"]]],"878":["878",0,"10\\d{10}",[12],[["(\\d{2})(\\d{5})(\\d{5})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["10\\d{10}"]]],"881":["881",0,"[0-36-9]\\d{8}",[9],[["(\\d)(\\d{3})(\\d{5})","$1 $2 $3",["[0-36-9]"]]],0,0,0,0,0,0,[0,["[0-36-9]\\d{8}"]]],"882":["882",0,"[13]\\d{6}(?:\\d{2,5})?|285\\d{9}|(?:[19]\\d|49)\\d{6}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5})","$1 $2",["16|342"]],["(\\d{2})(\\d{6})","$1 $2",["4"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[19]"]],["(\\d{2})(\\d{4})(\\d{3})","$1 $2 $3",["3[23]"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["34[57]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["34"]],["(\\d{2})(\\d{4,5})(\\d{5})","$1 $2 $3",["[1-3]"]]],0,0,0,0,0,0,[0,["342\\d{4}|(?:337|49)\\d{6}|3(?:2|47|7\\d{3})\\d{7}",[7,8,9,10,12]],0,0,0,0,0,0,["1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\d{4}|6\\d{5,10})|(?:(?:285\\d\\d|3(?:45|[69]\\d{3}))\\d|9[89])\\d{6}"]]],"883":["883",0,"(?:210|370\\d\\d)\\d{7}|51\\d{7}(?:\\d{3})?",[9,10,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["510"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["2"]],["(\\d{4})(\\d{4})(\\d{4})","$1 $2 $3",["51[13]"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[35]"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["(?:210|(?:370[1-9]|51[013]0)\\d)\\d{7}|5100\\d{5}"]]],"888":["888",0,"\\d{11}",[11],[["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3"]],0,0,0,0,0,0,[0,0,0,0,0,0,["\\d{11}"]]],"979":["979",0,"[1359]\\d{8}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[1359]"]]],0,0,0,0,0,0,[0,0,0,["[1359]\\d{8}"]]]}} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.min.json b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.min.json new file mode 100644 index 00000000..147db33f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.min.json @@ -0,0 +1 @@ +{"version":4,"country_calling_codes":{"1":["US","AG","AI","AS","BB","BM","BS","CA","DM","DO","GD","GU","JM","KN","KY","LC","MP","MS","PR","SX","TC","TT","VC","VG","VI"],"7":["RU","KZ"],"20":["EG"],"27":["ZA"],"30":["GR"],"31":["NL"],"32":["BE"],"33":["FR"],"34":["ES"],"36":["HU"],"39":["IT","VA"],"40":["RO"],"41":["CH"],"43":["AT"],"44":["GB","GG","IM","JE"],"45":["DK"],"46":["SE"],"47":["NO","SJ"],"48":["PL"],"49":["DE"],"51":["PE"],"52":["MX"],"53":["CU"],"54":["AR"],"55":["BR"],"56":["CL"],"57":["CO"],"58":["VE"],"60":["MY"],"61":["AU","CC","CX"],"62":["ID"],"63":["PH"],"64":["NZ"],"65":["SG"],"66":["TH"],"81":["JP"],"82":["KR"],"84":["VN"],"86":["CN"],"90":["TR"],"91":["IN"],"92":["PK"],"93":["AF"],"94":["LK"],"95":["MM"],"98":["IR"],"211":["SS"],"212":["MA","EH"],"213":["DZ"],"216":["TN"],"218":["LY"],"220":["GM"],"221":["SN"],"222":["MR"],"223":["ML"],"224":["GN"],"225":["CI"],"226":["BF"],"227":["NE"],"228":["TG"],"229":["BJ"],"230":["MU"],"231":["LR"],"232":["SL"],"233":["GH"],"234":["NG"],"235":["TD"],"236":["CF"],"237":["CM"],"238":["CV"],"239":["ST"],"240":["GQ"],"241":["GA"],"242":["CG"],"243":["CD"],"244":["AO"],"245":["GW"],"246":["IO"],"247":["AC"],"248":["SC"],"249":["SD"],"250":["RW"],"251":["ET"],"252":["SO"],"253":["DJ"],"254":["KE"],"255":["TZ"],"256":["UG"],"257":["BI"],"258":["MZ"],"260":["ZM"],"261":["MG"],"262":["RE","YT"],"263":["ZW"],"264":["NA"],"265":["MW"],"266":["LS"],"267":["BW"],"268":["SZ"],"269":["KM"],"290":["SH","TA"],"291":["ER"],"297":["AW"],"298":["FO"],"299":["GL"],"350":["GI"],"351":["PT"],"352":["LU"],"353":["IE"],"354":["IS"],"355":["AL"],"356":["MT"],"357":["CY"],"358":["FI","AX"],"359":["BG"],"370":["LT"],"371":["LV"],"372":["EE"],"373":["MD"],"374":["AM"],"375":["BY"],"376":["AD"],"377":["MC"],"378":["SM"],"380":["UA"],"381":["RS"],"382":["ME"],"383":["XK"],"385":["HR"],"386":["SI"],"387":["BA"],"389":["MK"],"420":["CZ"],"421":["SK"],"423":["LI"],"500":["FK"],"501":["BZ"],"502":["GT"],"503":["SV"],"504":["HN"],"505":["NI"],"506":["CR"],"507":["PA"],"508":["PM"],"509":["HT"],"590":["GP","BL","MF"],"591":["BO"],"592":["GY"],"593":["EC"],"594":["GF"],"595":["PY"],"596":["MQ"],"597":["SR"],"598":["UY"],"599":["CW","BQ"],"670":["TL"],"672":["NF"],"673":["BN"],"674":["NR"],"675":["PG"],"676":["TO"],"677":["SB"],"678":["VU"],"679":["FJ"],"680":["PW"],"681":["WF"],"682":["CK"],"683":["NU"],"685":["WS"],"686":["KI"],"687":["NC"],"688":["TV"],"689":["PF"],"690":["TK"],"691":["FM"],"692":["MH"],"850":["KP"],"852":["HK"],"853":["MO"],"855":["KH"],"856":["LA"],"880":["BD"],"886":["TW"],"960":["MV"],"961":["LB"],"962":["JO"],"963":["SY"],"964":["IQ"],"965":["KW"],"966":["SA"],"967":["YE"],"968":["OM"],"970":["PS"],"971":["AE"],"972":["IL"],"973":["BH"],"974":["QA"],"975":["BT"],"976":["MN"],"977":["NP"],"992":["TJ"],"993":["TM"],"994":["AZ"],"995":["GE"],"996":["KG"],"998":["UZ"]},"countries":{"AC":["247","00","(?:[01589]\\d|[46])\\d{4}",[5,6]],"AD":["376","00","(?:1|6\\d)\\d{7}|[135-9]\\d{5}",[6,8,9],[["(\\d{3})(\\d{3})","$1 $2",["[135-9]"]],["(\\d{4})(\\d{4})","$1 $2",["1"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]]],"AE":["971","00","(?:[4-7]\\d|9[0-689])\\d{7}|800\\d{2,9}|[2-4679]\\d{7}",[5,6,7,8,9,10,11,12],[["(\\d{3})(\\d{2,9})","$1 $2",["60|8"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[236]|[479][2-8]"],"0$1"],["(\\d{3})(\\d)(\\d{5})","$1 $2 $3",["[479]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"]],"0"],"AF":["93","00","[2-7]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"]],"0"],"AG":["1","011","(?:268|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([457]\\d{6})$","268$1",0,"268"],"AI":["1","011","(?:264|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2457]\\d{6})$","264$1",0,"264"],"AL":["355","00","(?:700\\d\\d|900)\\d{3}|8\\d{5,7}|(?:[2-5]|6\\d)\\d{7}",[6,7,8,9],[["(\\d{3})(\\d{3,4})","$1 $2",["80|9"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["4[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2358][2-5]|4"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["[23578]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["6"],"0$1"]],"0"],"AM":["374","00","(?:[1-489]\\d|55|60|77)\\d{6}",[8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[89]0"],"0 $1"],["(\\d{3})(\\d{5})","$1 $2",["2|3[12]"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["1|47"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[3-9]"],"0$1"]],"0"],"AO":["244","00","[29]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[29]"]]]],"AR":["54","00","(?:11|[89]\\d\\d)\\d{8}|[2368]\\d{9}",[10,11],[["(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])","2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["1"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2-$3",["[23]"],"0$1",1],["(\\d)(\\d{4})(\\d{2})(\\d{4})","$2 15-$3-$4",["9(?:2[2-469]|3[3-578])","9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))","9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",0,"$1 $2 $3-$4"],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 15-$3-$4",["91"],"0$1",0,"$1 $2 $3-$4"],["(\\d{3})(\\d{3})(\\d{5})","$1-$2-$3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 15-$3-$4",["9"],"0$1",0,"$1 $2 $3-$4"]],"0",0,"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?","9$1"],"AS":["1","011","(?:[58]\\d\\d|684|900)\\d{7}",[10],0,"1",0,"1|([267]\\d{6})$","684$1",0,"684"],"AT":["43","00","1\\d{3,12}|2\\d{6,12}|43(?:(?:0\\d|5[02-9])\\d{3,9}|2\\d{4,5}|[3467]\\d{4}|8\\d{4,6}|9\\d{4,7})|5\\d{4,12}|8\\d{7,12}|9\\d{8,12}|(?:[367]\\d|4[0-24-9])\\d{4,11}",[4,5,6,7,8,9,10,11,12,13],[["(\\d)(\\d{3,12})","$1 $2",["1(?:11|[2-9])"],"0$1"],["(\\d{3})(\\d{2})","$1 $2",["517"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["5[079]"],"0$1"],["(\\d{3})(\\d{3,10})","$1 $2",["(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]"],"0$1"],["(\\d{4})(\\d{3,9})","$1 $2",["[2-467]|5[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["5"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,7})","$1 $2 $3",["5"],"0$1"]],"0"],"AU":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{7}(?:\\d(?:\\d{2})?)?|8[0-24-9]\\d{7})|[2-478]\\d{8}|1\\d{4,7}",[5,6,7,8,9,10,12],[["(\\d{2})(\\d{3,4})","$1 $2",["16"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,4})","$1 $2 $3",["16"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["14|4"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[2378]"],"(0$1)"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:30|[89])"]]],"0",0,"0|(183[12])",0,0,0,[["(?:(?:2(?:[0-26-9]\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\d|2[0-8]))\\d{3}|8(?:51(?:0(?:0[03-9]|[12479]\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\d|7[89]|9[0-4]))|(?:6[0-8]|[78]\\d)\\d{3}|9(?:[02-9]\\d{3}|1(?:(?:[0-58]\\d|6[0135-9])\\d|7(?:0[0-24-9]|[1-9]\\d)|9(?:[0-46-9]\\d|5[0-79])))))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,["163\\d{2,6}",[5,6,7,8,9]],["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],"AW":["297","00","(?:[25-79]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[25-9]"]]]],"AX":["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","2\\d{4,9}|35\\d{4,5}|(?:60\\d\\d|800)\\d{4,6}|7\\d{5,11}|(?:[14]\\d|3[0-46-9]|50)\\d{4,8}",[5,6,7,8,9,10,11,12],0,"0",0,0,0,0,"18",0,"00"],"AZ":["994","00","365\\d{6}|(?:[124579]\\d|60|88)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[28]|2|365|46","1[28]|2|365[45]|46","1[28]|2|365(?:4|5[02])|46"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[13-9]"],"0$1"]],"0"],"BA":["387","00","6\\d{8}|(?:[35689]\\d|49|70)\\d{6}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["6[1-3]|[7-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2-$3",["[3-5]|6[56]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["6"],"0$1"]],"0"],"BB":["1","011","(?:246|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","246$1",0,"246"],"BD":["880","00","[1-469]\\d{9}|8[0-79]\\d{7,8}|[2-79]\\d{8}|[2-9]\\d{7}|[3-9]\\d{6}|[57-9]\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{4,6})","$1-$2",["31[5-8]|[459]1"],"0$1"],["(\\d{3})(\\d{3,7})","$1-$2",["3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:28|4[14]|5)|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]"],"0$1"],["(\\d{4})(\\d{3,6})","$1-$2",["[13-9]|22"],"0$1"],["(\\d)(\\d{7,8})","$1-$2",["2"],"0$1"]],"0"],"BE":["32","00","4\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:80|9)0"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[239]|4[23]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[15-8]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4"],"0$1"]],"0"],"BF":["226","00","[025-7]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[025-7]"]]]],"BG":["359","00","[2-7]\\d{6,7}|[89]\\d{6,8}|2\\d{5}",[6,7,8,9],[["(\\d)(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["43[1-6]|70[1-9]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:70|8)0"],"0$1"],["(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3",["43[1-7]|7"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[48]|9[08]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"]],"0"],"BH":["973","00","[136-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[13679]|8[047]"]]]],"BI":["257","00","(?:[267]\\d|31)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2367]"]]]],"BJ":["229","00","(?:[25689]\\d|40)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24-689]"]]]],"BL":["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[["590(?:2[7-9]|5[12]|87)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],"BM":["1","011","(?:441|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","441$1",0,"441"],"BN":["673","00","[2-578]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-578]"]]]],"BO":["591","00(?:1\\d)?","(?:[2-467]\\d\\d|8001)\\d{5}",[8,9],[["(\\d)(\\d{7})","$1 $2",["[23]|4[46]"]],["(\\d{8})","$1",["[67]"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["8"]]],"0",0,"0(1\\d)?"],"BQ":["599","00","(?:[34]1|7\\d)\\d{5}",[7],0,0,0,0,0,0,"[347]"],"BR":["55","00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)","(?:[1-46-9]\\d\\d|5(?:[0-46-9]\\d|5[0-46-9]))\\d{8}|[1-9]\\d{9}|[3589]\\d{8}|[34]\\d{7}",[8,9,10,11],[["(\\d{4})(\\d{4})","$1-$2",["300|4(?:0[02]|37)","4(?:02|37)0|[34]00"]],["(\\d{3})(\\d{2,3})(\\d{4})","$1 $2 $3",["(?:[358]|90)0"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]"],"($1)"],["(\\d{2})(\\d{5})(\\d{4})","$1 $2-$3",["[16][1-9]|[2-57-9]"],"($1)"]],"0",0,"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\d{10,11}))?","$2"],"BS":["1","011","(?:242|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([3-8]\\d{6})$","242$1",0,"242"],"BT":["975","00","[17]\\d{7}|[2-8]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[2-68]|7[246]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[67]|7"]]]],"BW":["267","00","(?:0800|(?:[37]|800)\\d)\\d{6}|(?:[2-6]\\d|90)\\d{5}",[7,8,10],[["(\\d{2})(\\d{5})","$1 $2",["90"]],["(\\d{3})(\\d{4})","$1 $2",["[24-6]|3[15-79]"]],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37]"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["8"]]]],"BY":["375","810","(?:[12]\\d|33|44|902)\\d{7}|8(?:0[0-79]\\d{5,7}|[1-7]\\d{9})|8(?:1[0-489]|[5-79]\\d)\\d{7}|8[1-79]\\d{6,7}|8[0-79]\\d{5}|8\\d{5}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3})","$1 $2",["800"],"8 $1"],["(\\d{3})(\\d{2})(\\d{2,4})","$1 $2 $3",["800"],"8 $1"],["(\\d{4})(\\d{2})(\\d{3})","$1 $2-$3",["1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])","1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])"],"8 0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["1(?:[56]|7[467])|2[1-3]"],"8 0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-4]"],"8 0$1"],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["[89]"],"8 $1"]],"8",0,"0|80?",0,0,0,0,"8~10"],"BZ":["501","00","(?:0800\\d|[2-8])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1-$2",["[2-8]"]],["(\\d)(\\d{3})(\\d{4})(\\d{3})","$1-$2-$3-$4",["0"]]]],"CA":["1","011","(?:[2-8]\\d|90)\\d{8}|3\\d{6}",[7,10],0,"1",0,0,0,0,0,[["(?:2(?:04|[23]6|[48]9|50|63)|3(?:06|43|6[578])|4(?:03|1[68]|3[178]|50|68|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|13|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\d{6}",[10]],["",[10]],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",[10]],["900[2-9]\\d{6}",[10]],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|(?:5(?:00|2[125-7]|33|44|66|77|88)|622)[2-9]\\d{6}",[10]],0,["310\\d{4}",[7]],0,["600[2-9]\\d{6}",[10]]]],"CC":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[["8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\d|70[23]|959))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,0,["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],"CD":["243","00","[189]\\d{8}|[1-68]\\d{6}",[7,9],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[1-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]"],"0$1"]],"0"],"CF":["236","00","(?:[27]\\d{3}|8776)\\d{4}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[278]"]]]],"CG":["242","00","222\\d{6}|(?:0\\d|80)\\d{7}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["8"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[02]"]]]],"CH":["41","00","8\\d{11}|[2-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8[047]|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-79]|81"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["8"],"0$1"]],"0"],"CI":["225","00","[02]\\d{9}",[10],[["(\\d{2})(\\d{2})(\\d)(\\d{5})","$1 $2 $3 $4",["2"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3 $4",["0"]]]],"CK":["682","00","[2-578]\\d{4}",[5],[["(\\d{2})(\\d{3})","$1 $2",["[2-578]"]]]],"CL":["56","(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0","12300\\d{6}|6\\d{9,10}|[2-9]\\d{8}",[9,10,11],[["(\\d{5})(\\d{4})","$1 $2",["219","2196"],"($1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["44"]],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2[1-36]"],"($1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["9[2-9]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])"],"($1)"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["60|8"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{3})(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3 $4",["60"]]]],"CM":["237","00","[26]\\d{8}|88\\d{6,7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["88"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[26]|88"]]]],"CN":["86","00|1(?:[12]\\d|79)\\d\\d00","1[127]\\d{8,9}|2\\d{9}(?:\\d{2})?|[12]\\d{6,7}|86\\d{6}|(?:1[03-689]\\d|6)\\d{7,9}|(?:[3-579]\\d|8[0-57-9])\\d{6,9}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5,6})","$1 $2",["(?:10|2[0-57-9])[19]","(?:10|2[0-57-9])(?:10|9[56])","(?:10|2[0-57-9])(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{5,6})","$1 $2",["3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]","(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))[19]","85[23](?:10|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:10|9[56])","85[23](?:100|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["(?:4|80)0"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["10|2(?:[02-57-9]|1[1-9])","10|2(?:[02-57-9]|1[1-9])","10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]"],"0$1",1],["(\\d{3})(\\d{7,8})","$1 $2",["9"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["80"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[3-578]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["1[3-9]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3 $4",["[12]"],"0$1",1]],"0",0,"0|(1(?:[12]\\d|79)\\d\\d)",0,0,0,0,"00"],"CO":["57","00(?:4(?:[14]4|56)|[579])","(?:60\\d\\d|9101)\\d{6}|(?:1\\d|3)\\d{9}",[10,11],[["(\\d{3})(\\d{7})","$1 $2",["6"],"($1)"],["(\\d{3})(\\d{7})","$1 $2",["3[0-357]|91"]],["(\\d)(\\d{3})(\\d{7})","$1-$2-$3",["1"],"0$1",0,"$1 $2 $3"]],"0",0,"0(4(?:[14]4|56)|[579])?"],"CR":["506","00","(?:8\\d|90)\\d{8}|(?:[24-8]\\d{3}|3005)\\d{4}",[8,10],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[3-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[89]"]]],0,0,"(19(?:0[0-2468]|1[09]|20|66|77|99))"],"CU":["53","119","[27]\\d{6,7}|[34]\\d{5,7}|(?:5|8\\d\\d)\\d{7}",[6,7,8,10],[["(\\d{2})(\\d{4,6})","$1 $2",["2[1-4]|[34]"],"(0$1)"],["(\\d)(\\d{6,7})","$1 $2",["7"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["5"],"0$1"],["(\\d{3})(\\d{7})","$1 $2",["8"],"0$1"]],"0"],"CV":["238","0","(?:[2-59]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[2-589]"]]]],"CW":["599","00","(?:[34]1|60|(?:7|9\\d)\\d)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[3467]"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["9[4-8]"]]],0,0,0,0,0,"[69]"],"CX":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[["8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\d|7(?:0[01]|1[0-2])|958))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,0,["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],"CY":["357","00","(?:[279]\\d|[58]0)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[257-9]"]]]],"CZ":["420","00","(?:[2-578]\\d|60)\\d{7}|9\\d{8,11}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]|9[015-7]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3 $4",["96"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]]],"DE":["49","00","[2579]\\d{5,14}|49(?:[34]0|69|8\\d)\\d\\d?|49(?:37|49|60|7[089]|9\\d)\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\d{1,8}|(?:1|[368]\\d|4[0-8])\\d{3,13}|49(?:[015]\\d|2[13]|31|[46][1-8])\\d{1,9}",[4,5,6,7,8,9,10,11,12,13,14,15],[["(\\d{2})(\\d{3,13})","$1 $2",["3[02]|40|[68]9"],"0$1"],["(\\d{3})(\\d{3,12})","$1 $2",["2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1","2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1"],"0$1"],["(\\d{4})(\\d{2,11})","$1 $2",["[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]","[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["138"],"0$1"],["(\\d{5})(\\d{2,10})","$1 $2",["3"],"0$1"],["(\\d{3})(\\d{5,11})","$1 $2",["181"],"0$1"],["(\\d{3})(\\d)(\\d{4,10})","$1 $2 $3",["1(?:3|80)|9"],"0$1"],["(\\d{3})(\\d{7,8})","$1 $2",["1[67]"],"0$1"],["(\\d{3})(\\d{7,12})","$1 $2",["8"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["185","1850","18500"],"0$1"],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["18[68]"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["15[0568]"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["15[1279]"],"0$1"],["(\\d{3})(\\d{8})","$1 $2",["18"],"0$1"],["(\\d{3})(\\d{2})(\\d{7,8})","$1 $2 $3",["1(?:6[023]|7)"],"0$1"],["(\\d{4})(\\d{2})(\\d{7})","$1 $2 $3",["15[279]"],"0$1"],["(\\d{3})(\\d{2})(\\d{8})","$1 $2 $3",["15"],"0$1"]],"0"],"DJ":["253","00","(?:2\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[27]"]]]],"DK":["45","00","[2-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-9]"]]]],"DM":["1","011","(?:[58]\\d\\d|767|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","767$1",0,"767"],"DO":["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,0,0,0,"8001|8[024]9"],"DZ":["213","00","(?:[1-4]|[5-79]\\d|80)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["9"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-8]"],"0$1"]],"0"],"EC":["593","00","1\\d{9,10}|(?:[2-7]|9\\d)\\d{7}",[8,9,10,11],[["(\\d)(\\d{3})(\\d{4})","$1 $2-$3",["[2-7]"],"(0$1)",0,"$1-$2-$3"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{3})(\\d{3,4})","$1 $2 $3",["1"]]],"0"],"EE":["372","00","8\\d{9}|[4578]\\d{7}|(?:[3-8]\\d|90)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88","[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88"]],["(\\d{4})(\\d{3,4})","$1 $2",["[45]|8(?:00|[1-49])","[45]|8(?:00[1-9]|[1-49])"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]]],"EG":["20","00","[189]\\d{8,9}|[24-6]\\d{8}|[135]\\d{7}",[8,9,10],[["(\\d)(\\d{7,8})","$1 $2",["[23]"],"0$1"],["(\\d{2})(\\d{6,7})","$1 $2",["1[35]|[4-6]|8[2468]|9[235-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[189]"],"0$1"]],"0"],"EH":["212","00","[5-8]\\d{8}",[9],0,"0",0,0,0,0,"528[89]"],"ER":["291","00","[178]\\d{6}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[178]"],"0$1"]],"0"],"ES":["34","00","[5-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]00"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-9]"]]]],"ET":["251","00","(?:11|[2-579]\\d)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-579]"],"0$1"]],"0"],"FI":["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","[1-35689]\\d{4}|7\\d{10,11}|(?:[124-7]\\d|3[0-46-9])\\d{8}|[1-9]\\d{5,8}",[5,6,7,8,9,10,11,12],[["(\\d)(\\d{4,9})","$1 $2",["[2568][1-8]|3(?:0[1-9]|[1-9])|9"],"0$1"],["(\\d{3})(\\d{3,7})","$1 $2",["[12]00|[368]|70[07-9]"],"0$1"],["(\\d{2})(\\d{4,8})","$1 $2",["[1245]|7[135]"],"0$1"],["(\\d{2})(\\d{6,10})","$1 $2",["7"],"0$1"]],"0",0,0,0,0,"1[03-79]|[2-9]",0,"00"],"FJ":["679","0(?:0|52)","45\\d{5}|(?:0800\\d|[235-9])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1 $2",["[235-9]|45"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]]],0,0,0,0,0,0,0,"00"],"FK":["500","00","[2-7]\\d{4}",[5]],"FM":["691","00","(?:[39]\\d\\d|820)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[389]"]]]],"FO":["298","00","[2-9]\\d{5}",[6],[["(\\d{6})","$1",["[2-9]"]]],0,0,"(10(?:01|[12]0|88))"],"FR":["33","00","[1-9]\\d{8}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0 $1"],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[1-79]"],"0$1"]],"0"],"GA":["241","00","(?:[067]\\d|11)\\d{6}|[2-7]\\d{6}",[7,8],[["(\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-7]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["11|[67]"],"0$1"]],0,0,"0(11\\d{6}|60\\d{6}|61\\d{6}|6[256]\\d{6}|7[467]\\d{6})","$1"],"GB":["44","00","[1-357-9]\\d{9}|[18]\\d{8}|8\\d{6}",[7,9,10],[["(\\d{3})(\\d{4})","$1 $2",["800","8001","80011","800111","8001111"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["845","8454","84546","845464"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["800"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["1(?:38|5[23]|69|76|94)","1(?:(?:38|69)7|5(?:24|39)|768|946)","1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["1(?:[2-69][02-9]|[78])"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[25]|7(?:0|6[02-9])","[25]|7(?:0|6(?:[03-9]|2[356]))"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[1389]"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:1(?:3(?:[0-58]\\d\\d|73[0235])|4(?:[0-5]\\d\\d|69[7-9]|70[013579])|(?:(?:5[0-26-9]|[78][0-49])\\d|6(?:[0-4]\\d|50))\\d)|2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\d)\\d\\d|1(?:[0-7]\\d\\d|8(?:[02]\\d|1[0-246-9])))|(?:3(?:0\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\d\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\d{3})\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\d)|76\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\d|7[4-79])|295[5-7]|35[34]\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\d{3}",[9,10]],["7(?:457[0-57-9]|700[01]|911[028])\\d{5}|7(?:[1-3]\\d\\d|4(?:[0-46-9]\\d|5[0-689])|5(?:0[0-8]|[13-9]\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\d|8[02-9]|9[0-689])|8(?:[014-9]\\d|[23][0-8])|9(?:[024-9]\\d|1[02-9]|3[0-689]))\\d{6}",[10]],["80[08]\\d{7}|800\\d{6}|8001111"],["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[2-49]))\\d{7}|845464\\d",[7,10]],["70\\d{8}",[10]],0,["(?:3[0347]|55)\\d{8}",[10]],["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}",[10]],["56\\d{8}",[10]]],0," x"],"GD":["1","011","(?:473|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","473$1",0,"473"],"GE":["995","00","(?:[3-57]\\d\\d|800)\\d{6}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["32"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[57]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[348]"],"0$1"]],"0"],"GF":["594","00","(?:[56]94|80\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0"],"GG":["44","00","(?:1481|[357-9]\\d{3})\\d{6}|8\\d{6}(?:\\d{2})?",[7,9,10],0,"0",0,"0|([25-9]\\d{5})$","1481$1",0,0,[["1481[25-9]\\d{5}",[10]],["7(?:(?:781|839)\\d|911[17])\\d{5}",[10]],["80[08]\\d{7}|800\\d{6}|8001111"],["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[0-3]))\\d{7}|845464\\d",[7,10]],["70\\d{8}",[10]],0,["(?:3[0347]|55)\\d{8}",[10]],["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}",[10]],["56\\d{8}",[10]]]],"GH":["233","00","(?:[235]\\d{3}|800)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[235]"],"0$1"]],"0"],"GI":["350","00","(?:[25]\\d\\d|606)\\d{5}",[8],[["(\\d{3})(\\d{5})","$1 $2",["2"]]]],"GL":["299","00","(?:19|[2-689]\\d|70)\\d{4}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["19|[2-9]"]]]],"GM":["220","00","[2-9]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]]],"GN":["224","00","722\\d{6}|(?:3|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["3"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[67]"]]]],"GP":["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["590(?:0[1-68]|[14][0-24-9]|2[0-68]|3[1289]|5[3-579]|6[0-289]|7[08]|8[0-689]|9\\d)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],"GQ":["240","00","222\\d{6}|(?:3\\d|55|[89]0)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235]"]],["(\\d{3})(\\d{6})","$1 $2",["[89]"]]]],"GR":["30","00","5005000\\d{3}|8\\d{9,11}|(?:[269]\\d|70)\\d{8}",[10,11,12],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["21|7"]],["(\\d{4})(\\d{6})","$1 $2",["2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2689]"]],["(\\d{3})(\\d{3,4})(\\d{5})","$1 $2 $3",["8"]]]],"GT":["502","00","(?:1\\d{3}|[2-7])\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]]],"GU":["1","011","(?:[58]\\d\\d|671|900)\\d{7}",[10],0,"1",0,"1|([3-9]\\d{6})$","671$1",0,"671"],"GW":["245","00","[49]\\d{8}|4\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["40"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"]]]],"GY":["592","001","9008\\d{3}|(?:[2-467]\\d\\d|862)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-46-9]"]]]],"HK":["852","00(?:30|5[09]|[126-9]?)","8[0-46-9]\\d{6,7}|9\\d{4,7}|(?:[2-7]|9\\d{3})\\d{7}",[5,6,7,8,9,11],[["(\\d{3})(\\d{2,5})","$1 $2",["900","9003"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[1-4]|9(?:0[1-9]|[1-8])"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]],["(\\d{3})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]],0,0,0,0,0,0,0,"00"],"HN":["504","00","8\\d{10}|[237-9]\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1-$2",["[237-9]"]]]],"HR":["385","00","(?:[24-69]\\d|3[0-79])\\d{7}|80\\d{5,7}|[1-79]\\d{7}|6\\d{5,6}",[6,7,8,9],[["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["6[01]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{4})(\\d{3})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-5]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"]],"0"],"HT":["509","00","[2-489]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[2-489]"]]]],"HU":["36","00","[235-7]\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"06 $1"]],"06"],"ID":["62","00[89]","(?:(?:00[1-9]|8\\d)\\d{4}|[1-36])\\d{6}|00\\d{10}|[1-9]\\d{8,10}|[2-9]\\d{7}",[7,8,9,10,11,12,13],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["15"]],["(\\d{2})(\\d{5,9})","$1 $2",["2[124]|[36]1"],"(0$1)"],["(\\d{3})(\\d{5,7})","$1 $2",["800"],"0$1"],["(\\d{3})(\\d{5,8})","$1 $2",["[2-79]"],"(0$1)"],["(\\d{3})(\\d{3,4})(\\d{3})","$1-$2-$3",["8[1-35-9]"],"0$1"],["(\\d{3})(\\d{6,8})","$1 $2",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["804"],"0$1"],["(\\d{3})(\\d)(\\d{3})(\\d{3})","$1 $2 $3 $4",["80"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1-$2-$3",["8"],"0$1"]],"0"],"IE":["353","00","(?:1\\d|[2569])\\d{6,8}|4\\d{6,9}|7\\d{8}|8\\d{8,9}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["2[24-9]|47|58|6[237-9]|9[35-9]"],"(0$1)"],["(\\d{3})(\\d{5})","$1 $2",["[45]0"],"(0$1)"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["1"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2569]|4[1-69]|7[14]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["81"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[78]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["4"],"(0$1)"],["(\\d{2})(\\d)(\\d{3})(\\d{4})","$1 $2 $3 $4",["8"],"0$1"]],"0"],"IL":["972","0(?:0|1[2-9])","1\\d{6}(?:\\d{3,5})?|[57]\\d{8}|[1-489]\\d{7}",[7,8,9,10,11,12],[["(\\d{4})(\\d{3})","$1-$2",["125"]],["(\\d{4})(\\d{2})(\\d{2})","$1-$2-$3",["121"]],["(\\d)(\\d{3})(\\d{4})","$1-$2-$3",["[2-489]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1-$2-$3",["12"]],["(\\d{4})(\\d{6})","$1-$2",["159"]],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3-$4",["1[7-9]"]],["(\\d{3})(\\d{1,2})(\\d{3})(\\d{4})","$1-$2 $3-$4",["15"]]],"0"],"IM":["44","00","1624\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([25-8]\\d{5})$","1624$1",0,"74576|(?:16|7[56])24"],"IN":["91","00","(?:000800|[2-9]\\d\\d)\\d{7}|1\\d{7,12}",[8,9,10,11,12,13],[["(\\d{8})","$1",["5(?:0|2[23]|3[03]|[67]1|88)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)"],0,1],["(\\d{4})(\\d{4,5})","$1 $2",["180","1800"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["140"],0,1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["11|2[02]|33|4[04]|79[1-7]|80[2-46]","11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])","11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]"],"0$1",1],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807","1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]","1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\d|7(?:1(?:[013-8]\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\d|5[0-367])|70[13-7]))[2-7]"],"0$1",1],["(\\d{5})(\\d{5})","$1 $2",["[6-9]"],"0$1",1],["(\\d{4})(\\d{2,4})(\\d{4})","$1 $2 $3",["1(?:6|8[06])","1(?:6|8[06]0)"],0,1],["(\\d{4})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["18"],0,1]],"0"],"IO":["246","00","3\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["3"]]]],"IQ":["964","00","(?:1|7\\d\\d)\\d{7}|[2-6]\\d{7,8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-6]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0"],"IR":["98","00","[1-9]\\d{9}|(?:[1-8]\\d\\d|9)\\d{3,4}",[4,5,6,7,10],[["(\\d{4,5})","$1",["96"],"0$1"],["(\\d{2})(\\d{4,5})","$1 $2",["(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[1-8]"],"0$1"]],"0"],"IS":["354","00|1(?:0(?:01|[12]0)|100)","(?:38\\d|[4-9])\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["[4-9]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["3"]]],0,0,0,0,0,0,0,"00"],"IT":["39","00","0\\d{5,10}|1\\d{8,10}|3(?:[0-8]\\d{7,10}|9\\d{7,8})|(?:55|70)\\d{8}|8\\d{5}(?:\\d{2,4})?",[6,7,8,9,10,11],[["(\\d{2})(\\d{4,6})","$1 $2",["0[26]"]],["(\\d{3})(\\d{3,6})","$1 $2",["0[13-57-9][0159]|8(?:03|4[17]|9[2-5])","0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))"]],["(\\d{4})(\\d{2,6})","$1 $2",["0(?:[13-579][2-46-8]|8[236-8])"]],["(\\d{4})(\\d{4})","$1 $2",["894"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[26]|5"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["1(?:44|[679])|[378]"]],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[13-57-9][0159]|14"]],["(\\d{2})(\\d{4})(\\d{5})","$1 $2 $3",["0[26]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["3"]]],0,0,0,0,0,0,[["0669[0-79]\\d{1,6}|0(?:1(?:[0159]\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\d\\d|3(?:[0159]\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\d|6[0-8])|7(?:[0159]\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\d{2,7}"],["3[1-9]\\d{8}|3[2-9]\\d{7}",[9,10]],["80(?:0\\d{3}|3)\\d{3}",[6,9]],["(?:0878\\d{3}|89(?:2\\d|3[04]|4(?:[0-4]|[5-9]\\d\\d)|5[0-4]))\\d\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\d{6}",[6,8,9,10]],["1(?:78\\d|99)\\d{6}",[9,10]],0,0,0,["55\\d{8}",[10]],["84(?:[08]\\d{3}|[17])\\d{3}",[6,9]]]],"JE":["44","00","1534\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([0-24-8]\\d{5})$","1534$1",0,0,[["1534[0-24-8]\\d{5}"],["7(?:(?:(?:50|82)9|937)\\d|7(?:00[378]|97[7-9]))\\d{5}"],["80(?:07(?:35|81)|8901)\\d{4}"],["(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\d{4}"],["701511\\d{4}"],0,["(?:3(?:0(?:07(?:35|81)|8901)|3\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\d{4})\\d{4}"],["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}"],["56\\d{8}"]]],"JM":["1","011","(?:[58]\\d\\d|658|900)\\d{7}",[10],0,"1",0,0,0,0,"658|876"],"JO":["962","00","(?:(?:[2689]|7\\d)\\d|32|53)\\d{6}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2356]|87"],"(0$1)"],["(\\d{3})(\\d{5,6})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["70"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0"],"JP":["81","010","00[1-9]\\d{6,14}|[257-9]\\d{9}|(?:00|[1-9]\\d\\d)\\d{6}",[8,9,10,11,12,13,14,15,16,17],[["(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3",["(?:12|57|99)0"],"0$1"],["(\\d{4})(\\d)(\\d{4})","$1-$2-$3",["1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:80|9[16])","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2-$3",["[36]|4(?:2[09]|7[01])","[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]"],"0$1"],["(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3",["[14]|[289][2-9]|5[3-9]|7[2-4679]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["800"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[257-9]"],"0$1"]],"0"],"KE":["254","000","(?:[17]\\d\\d|900)\\d{6}|(?:2|80)0\\d{6,7}|[4-6]\\d{6,8}",[7,8,9,10],[["(\\d{2})(\\d{5,7})","$1 $2",["[24-6]"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[17]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0"],"KG":["996","00","8\\d{9}|(?:[235-8]\\d|99)\\d{7}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["3(?:1[346]|[24-79])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235-79]|88"],"0$1"],["(\\d{3})(\\d{3})(\\d)(\\d{2,3})","$1 $2 $3 $4",["8"],"0$1"]],"0"],"KH":["855","00[14-9]","1\\d{9}|[1-9]\\d{7,8}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0"],"KI":["686","00","(?:[37]\\d|6[0-79])\\d{6}|(?:[2-48]\\d|50)\\d{3}",[5,8],0,"0"],"KM":["269","00","[3478]\\d{6}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[3478]"]]]],"KN":["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","869$1",0,"869"],"KP":["850","00|99","85\\d{6}|(?:19\\d|[2-7])\\d{7}",[8,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"]],"0"],"KR":["82","00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))","00[1-9]\\d{8,11}|(?:[12]|5\\d{3})\\d{7}|[13-6]\\d{9}|(?:[1-6]\\d|80)\\d{7}|[3-6]\\d{4,5}|(?:00|7)0\\d{8}",[5,6,8,9,10,11,12,13,14],[["(\\d{2})(\\d{3,4})","$1-$2",["(?:3[1-3]|[46][1-4]|5[1-5])1"],"0$1"],["(\\d{4})(\\d{4})","$1-$2",["1"]],["(\\d)(\\d{3,4})(\\d{4})","$1-$2-$3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60|8"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1-$2-$3",["[1346]|5[1-5]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{2})(\\d{5})(\\d{4})","$1-$2-$3",["5"],"0$1"]],"0",0,"0(8(?:[1-46-8]|5\\d\\d))?"],"KW":["965","00","18\\d{5}|(?:[2569]\\d|41)\\d{6}",[7,8],[["(\\d{4})(\\d{3,4})","$1 $2",["[169]|2(?:[235]|4[1-35-9])|52"]],["(\\d{3})(\\d{5})","$1 $2",["[245]"]]]],"KY":["1","011","(?:345|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","345$1",0,"345"],"KZ":["7","810","(?:33622|8\\d{8})\\d{5}|[78]\\d{9}",[10,14],0,"8",0,0,0,0,"33|7",0,"8~10"],"LA":["856","00","[23]\\d{9}|3\\d{8}|(?:[235-8]\\d|41)\\d{6}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2[13]|3[14]|[4-8]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["30[013-9]"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[23]"],"0$1"]],"0"],"LB":["961","00","[27-9]\\d{7}|[13-9]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27-9]"]]],"0"],"LC":["1","011","(?:[58]\\d\\d|758|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","758$1",0,"758"],"LI":["423","00","[68]\\d{8}|(?:[2378]\\d|90)\\d{5}",[7,9],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[2379]|8(?:0[09]|7)","[2379]|8(?:0(?:02|9)|7)"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["69"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]],"0",0,"0|(1001)"],"LK":["94","00","[1-9]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[1-689]"],"0$1"]],"0"],"LR":["231","00","(?:2|33|5\\d|77|88)\\d{7}|[4-6]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[4-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3578]"],"0$1"]],"0"],"LS":["266","00","(?:[256]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2568]"]]]],"LT":["370","00","(?:[3469]\\d|52|[78]0)\\d{6}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["52[0-7]"],"(8-$1)",1],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[7-9]"],"8 $1",1],["(\\d{2})(\\d{6})","$1 $2",["37|4(?:[15]|6[1-8])"],"(8-$1)",1],["(\\d{3})(\\d{5})","$1 $2",["[3-6]"],"(8-$1)",1]],"8",0,"[08]"],"LU":["352","00","35[013-9]\\d{4,8}|6\\d{8}|35\\d{2,4}|(?:[2457-9]\\d|3[0-46-9])\\d{2,9}",[4,5,6,7,8,9,10,11],[["(\\d{2})(\\d{3})","$1 $2",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["20[2-689]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4",["2(?:[0367]|4[3-8])"]],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["80[01]|90[015]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["20"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4 $5",["2(?:[0367]|4[3-8])"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,5})","$1 $2 $3 $4",["[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]"]]],0,0,"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\d)"],"LV":["371","00","(?:[268]\\d|90)\\d{6}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[269]|8[01]"]]]],"LY":["218","00","[2-9]\\d{8}",[9],[["(\\d{2})(\\d{7})","$1-$2",["[2-9]"],"0$1"]],"0"],"MA":["212","00","[5-8]\\d{8}",[9],[["(\\d{5})(\\d{4})","$1-$2",["5(?:29|38)","5(?:29[89]|389)","5(?:29[89]|389)0"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5[45]"],"0$1"],["(\\d{4})(\\d{5})","$1-$2",["5(?:2[2-489]|3[5-9]|9)|892","5(?:2(?:[2-49]|8[235-9])|3[5-9]|9)|892"],"0$1"],["(\\d{2})(\\d{7})","$1-$2",["8"],"0$1"],["(\\d{3})(\\d{6})","$1-$2",["[5-7]"],"0$1"]],"0",0,0,0,0,0,[["5(?:29(?:[189][05]|2[29]|3[01])|389[05])\\d{4}|5(?:2(?:[0-25-7]\\d|3[1-578]|4[02-46-8]|8[0235-7]|90)|3(?:[0-47]\\d|5[02-9]|6[02-8]|8[08]|9[3-9])|(?:4[067]|5[03])\\d)\\d{5}"],["(?:6(?:[0-79]\\d|8[0-247-9])|7(?:[017]\\d|2[0-2]|6[0-8]|8[0-3]))\\d{6}"],["80\\d{7}"],["89\\d{7}"],0,0,0,0,["592(?:4[0-2]|93)\\d{4}"]]],"MC":["377","00","(?:[3489]|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["4"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[389]"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["6"],"0$1"]],"0"],"MD":["373","00","(?:[235-7]\\d|[89]0)\\d{6}",[8],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["22|3"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[25-7]"],"0$1"]],"0"],"ME":["382","00","(?:20|[3-79]\\d)\\d{6}|80\\d{6,7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"0$1"]],"0"],"MF":["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[["590(?:0[079]|[14]3|[27][79]|30|5[0-268]|87)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],"MG":["261","00","[23]\\d{8}",[9],[["(\\d{2})(\\d{2})(\\d{3})(\\d{2})","$1 $2 $3 $4",["[23]"],"0$1"]],"0",0,"0|([24-9]\\d{6})$","20$1"],"MH":["692","011","329\\d{4}|(?:[256]\\d|45)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1-$2",["[2-6]"]]],"1"],"MK":["389","00","[2-578]\\d{7}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2|34[47]|4(?:[37]7|5[47]|64)"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[347]"],"0$1"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["[58]"],"0$1"]],"0"],"ML":["223","00","[24-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24-9]"]]]],"MM":["95","00","1\\d{5,7}|95\\d{6}|(?:[4-7]|9[0-46-9])\\d{6,8}|(?:2|8\\d)\\d{5,8}",[6,7,8,9,10],[["(\\d)(\\d{2})(\\d{3})","$1 $2 $3",["16|2"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[4-7]|8[1-35]"],"0$1"],["(\\d)(\\d{3})(\\d{4,6})","$1 $2 $3",["9(?:2[0-4]|[35-9]|4[137-9])"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["92"],"0$1"],["(\\d)(\\d{5})(\\d{4})","$1 $2 $3",["9"],"0$1"]],"0"],"MN":["976","001","[12]\\d{7,9}|[5-9]\\d{7}",[8,9,10],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[12]1"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[5-9]"]],["(\\d{3})(\\d{5,6})","$1 $2",["[12]2[1-3]"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["[12](?:27|3[2-8]|4[2-68]|5[1-4689])","[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["[12]"],"0$1"]],"0"],"MO":["853","00","0800\\d{3}|(?:28|[68]\\d)\\d{6}",[7,8],[["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{4})(\\d{4})","$1 $2",["[268]"]]]],"MP":["1","011","[58]\\d{9}|(?:67|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","670$1",0,"670"],"MQ":["596","00","(?:69|80)\\d{7}|(?:59|97)6\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0"],"MR":["222","00","(?:[2-4]\\d\\d|800)\\d{5}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-48]"]]]],"MS":["1","011","(?:[58]\\d\\d|664|900)\\d{7}",[10],0,"1",0,"1|([34]\\d{6})$","664$1",0,"664"],"MT":["356","00","3550\\d{4}|(?:[2579]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2357-9]"]]]],"MU":["230","0(?:0|[24-7]0|3[03])","(?:5|8\\d\\d)\\d{7}|[2-468]\\d{6}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[2-46]|8[013]"]],["(\\d{4})(\\d{4})","$1 $2",["5"]],["(\\d{5})(\\d{5})","$1 $2",["8"]]],0,0,0,0,0,0,0,"020"],"MV":["960","0(?:0|19)","(?:800|9[0-57-9]\\d)\\d{7}|[34679]\\d{6}",[7,10],[["(\\d{3})(\\d{4})","$1-$2",["[3467]|9[13-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"]]],0,0,0,0,0,0,0,"00"],"MW":["265","00","(?:[1289]\\d|31|77)\\d{7}|1\\d{6}",[7,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["1[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[137-9]"],"0$1"]],"0"],"MX":["52","0[09]","1(?:(?:44|99)[1-9]|65[0-689])\\d{7}|(?:1(?:[017]\\d|[235][1-9]|4[0-35-9]|6[0-46-9]|8[1-79]|9[1-8])|[2-9]\\d)\\d{8}",[10,11],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["33|5[56]|81"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2-9]"],0,1],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 $3 $4",["1(?:33|5[56]|81)"],0,1],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 $3 $4",["1"],0,1]],"01",0,"0(?:[12]|4[45])|1",0,0,0,0,"00"],"MY":["60","00","1\\d{8,9}|(?:3\\d|[4-9])\\d{7}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1-$2 $3",["[4-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1-$2 $3",["1(?:[02469]|[378][1-9]|53)|8","1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2 $3",["3"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3-$4",["1(?:[367]|80)"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2 $3",["15"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2 $3",["1"],"0$1"]],"0"],"MZ":["258","00","(?:2|8\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2|8[2-79]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]]],"NA":["264","00","[68]\\d{7,8}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["87"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0"],"NC":["687","00","(?:050|[2-57-9]\\d\\d)\\d{3}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1.$2.$3",["[02-57-9]"]]]],"NE":["227","00","[027-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["08"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[089]|2[013]|7[04]"]]]],"NF":["672","00","[13]\\d{5}",[6],[["(\\d{2})(\\d{4})","$1 $2",["1[0-3]"]],["(\\d)(\\d{5})","$1 $2",["[13]"]]],0,0,"([0-258]\\d{4})$","3$1"],"NG":["234","009","(?:[124-7]|9\\d{3})\\d{6}|[1-9]\\d{7}|[78]\\d{9,13}",[7,8,10,11,12,13,14],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["78"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]|9(?:0[3-9]|[1-9])"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[3-7]|8[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["[78]"],"0$1"],["(\\d{3})(\\d{5})(\\d{5,6})","$1 $2 $3",["[78]"],"0$1"]],"0"],"NI":["505","00","(?:1800|[25-8]\\d{3})\\d{4}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[125-8]"]]]],"NL":["31","00","(?:[124-7]\\d\\d|3(?:[02-9]\\d|1[0-8]))\\d{6}|8\\d{6,9}|9\\d{6,10}|1\\d{4,5}",[5,6,7,8,9,10,11],[["(\\d{3})(\\d{4,7})","$1 $2",["[89]0"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["66"],"0$1"],["(\\d)(\\d{8})","$1 $2",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["1[16-8]|2[259]|3[124]|4[17-9]|5[124679]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-578]|91"],"0$1"],["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3",["9"],"0$1"]],"0"],"NO":["47","00","(?:0|[2-9]\\d{3})\\d{4}",[5,8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[489]|59"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[235-7]"]]],0,0,0,0,0,"[02-689]|7[0-8]"],"NP":["977","00","(?:1\\d|9)\\d{9}|[1-9]\\d{7}",[8,10,11],[["(\\d)(\\d{7})","$1-$2",["1[2-6]"],"0$1"],["(\\d{2})(\\d{6})","$1-$2",["1[01]|[2-8]|9(?:[1-59]|[67][2-6])"],"0$1"],["(\\d{3})(\\d{7})","$1-$2",["9"]]],"0"],"NR":["674","00","(?:444|(?:55|8\\d)\\d|666)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[4-68]"]]]],"NU":["683","00","(?:[47]|888\\d)\\d{3}",[4,7],[["(\\d{3})(\\d{4})","$1 $2",["8"]]]],"NZ":["64","0(?:0|161)","[29]\\d{7,9}|50\\d{5}(?:\\d{2,3})?|6[0-35-9]\\d{6}|7\\d{7,8}|8\\d{4,9}|(?:11\\d|[34])\\d{7}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,8})","$1 $2",["8[1-579]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["50[036-8]|[89]0","50(?:[0367]|88)|[89]0"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["24|[346]|7[2-57-9]|9[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:10|74)|[59]|80"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1|2[028]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,5})","$1 $2 $3",["2(?:[169]|7[0-35-9])|7|86"],"0$1"]],"0",0,0,0,0,0,0,"00"],"OM":["968","00","(?:1505|[279]\\d{3}|500)\\d{4}|800\\d{5,6}",[7,8,9],[["(\\d{3})(\\d{4,6})","$1 $2",["[58]"]],["(\\d{2})(\\d{6})","$1 $2",["2"]],["(\\d{4})(\\d{4})","$1 $2",["[179]"]]]],"PA":["507","00","(?:00800|8\\d{3})\\d{6}|[68]\\d{7}|[1-57-9]\\d{6}",[7,8,10,11],[["(\\d{3})(\\d{4})","$1-$2",["[1-57-9]"]],["(\\d{4})(\\d{4})","$1-$2",["[68]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]]],"PE":["51","00|19(?:1[124]|77|90)00","(?:[14-8]|9\\d)\\d{7}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["80"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["1"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[4-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"]]],"0",0,0,0,0,0,0,"00"," Anexo "],"PF":["689","00","4\\d{5}(?:\\d{2})?|8\\d{7,8}",[6,8,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["44"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4|8[7-9]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]]],"PG":["675","00|140[1-3]","(?:180|[78]\\d{3})\\d{4}|(?:[2-589]\\d|64)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["18|[2-69]|85"]],["(\\d{4})(\\d{4})","$1 $2",["[78]"]]],0,0,0,0,0,0,0,"00"],"PH":["63","00","(?:[2-7]|9\\d)\\d{8}|2\\d{5}|(?:1800|8)\\d{7,9}",[6,8,9,10,11,12,13],[["(\\d)(\\d{5})","$1 $2",["2"],"(0$1)"],["(\\d{4})(\\d{4,6})","$1 $2",["3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2","3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))"],"(0$1)"],["(\\d{5})(\\d{4})","$1 $2",["346|4(?:27|9[35])|883","3469|4(?:279|9(?:30|56))|8834"],"(0$1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3-7]|8[2-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{4})(\\d{1,2})(\\d{3})(\\d{4})","$1 $2 $3 $4",["1"]]],"0"],"PK":["92","00","122\\d{6}|[24-8]\\d{10,11}|9(?:[013-9]\\d{8,10}|2(?:[01]\\d\\d|2(?:[06-8]\\d|1[01]))\\d{7})|(?:[2-8]\\d{3}|92(?:[0-7]\\d|8[1-9]))\\d{6}|[24-9]\\d{8}|[89]\\d{7}",[8,9,10,11,12],[["(\\d{3})(\\d{3})(\\d{2,7})","$1 $2 $3",["[89]0"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["1"]],["(\\d{3})(\\d{6,7})","$1 $2",["2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])","9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]"],"(0$1)"],["(\\d{2})(\\d{7,8})","$1 $2",["(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]"],"(0$1)"],["(\\d{5})(\\d{5})","$1 $2",["58"],"(0$1)"],["(\\d{3})(\\d{7})","$1 $2",["3"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[24-9]"],"(0$1)"]],"0"],"PL":["48","00","(?:6|8\\d\\d)\\d{7}|[1-9]\\d{6}(?:\\d{2})?|[26]\\d{5}",[6,7,8,9,10],[["(\\d{5})","$1",["19"]],["(\\d{3})(\\d{3})","$1 $2",["11|20|64"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1","(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19"]],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["64"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[2-8]|[2-7]|8[1-79]|9[145]"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["8"]]]],"PM":["508","00","(?:[45]|80\\d\\d)\\d{5}",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[45]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0"],"PR":["1","011","(?:[589]\\d\\d|787)\\d{7}",[10],0,"1",0,0,0,0,"787|939"],"PS":["970","00","[2489]2\\d{6}|(?:1\\d|5)\\d{8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2489]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["5"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0"],"PT":["351","00","1693\\d{5}|(?:[26-9]\\d|30)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["2[12]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["16|[236-9]"]]]],"PW":["680","01[12]","(?:[24-8]\\d\\d|345|900)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]]],"PY":["595","00","59\\d{4,6}|9\\d{5,10}|(?:[2-46-8]\\d|5[0-8])\\d{4,7}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3,6})","$1 $2",["[2-9]0"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]"],"(0$1)"],["(\\d{3})(\\d{4,5})","$1 $2",["2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["87"]],["(\\d{3})(\\d{6})","$1 $2",["9(?:[5-79]|8[1-6])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["9"]]],"0"],"QA":["974","00","[2-7]\\d{7}|800\\d{4}(?:\\d{2})?|2\\d{6}",[7,8,9],[["(\\d{3})(\\d{4})","$1 $2",["2[126]|8"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]]]],"RE":["262","00","976\\d{6}|(?:26|[68]\\d)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2689]"],"0$1"]],"0",0,0,0,0,"26[23]|69|[89]"],"RO":["40","00","(?:[2378]\\d|90)\\d{7}|[23]\\d{5}",[6,9],[["(\\d{3})(\\d{3})","$1 $2",["2[3-6]","2[3-6]\\d9"],"0$1"],["(\\d{2})(\\d{4})","$1 $2",["219|31"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[23]1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[237-9]"],"0$1"]],"0",0,0,0,0,0,0,0," int "],"RS":["381","00","38[02-9]\\d{6,9}|6\\d{7,9}|90\\d{4,8}|38\\d{5,6}|(?:7\\d\\d|800)\\d{3,9}|(?:[12]\\d|3[0-79])\\d{5,10}",[6,7,8,9,10,11,12],[["(\\d{3})(\\d{3,9})","$1 $2",["(?:2[389]|39)0|[7-9]"],"0$1"],["(\\d{2})(\\d{5,10})","$1 $2",["[1-36]"],"0$1"]],"0"],"RU":["7","810","8\\d{13}|[347-9]\\d{9}",[10,14],[["(\\d{4})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-8]|2[1-9])","7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))","7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2"],"8 ($1)",1],["(\\d{5})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-68]|2[1-9])","7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))","7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[349]|8(?:[02-7]|1[1-8])"],"8 ($1)",1],["(\\d{4})(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3 $4",["8"],"8 ($1)"]],"8",0,0,0,0,"3[04-689]|[489]",0,"8~10"],"RW":["250","00","(?:06|[27]\\d\\d|[89]00)\\d{6}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"]]],"0"],"SA":["966","00","92\\d{7}|(?:[15]|8\\d)\\d{8}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["9"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["81"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]],"0"],"SB":["677","0[01]","(?:[1-6]|[7-9]\\d\\d)\\d{4}",[5,7],[["(\\d{2})(\\d{5})","$1 $2",["7|8[4-9]|9(?:[1-8]|9[0-8])"]]]],"SC":["248","010|0[0-2]","800\\d{4}|(?:[249]\\d|64)\\d{5}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[246]|9[57]"]]],0,0,0,0,0,0,0,"00"],"SD":["249","00","[19]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[19]"],"0$1"]],"0"],"SE":["46","00","(?:[26]\\d\\d|9)\\d{9}|[1-9]\\d{8}|[1-689]\\d{7}|[1-4689]\\d{6}|2\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{2,3})(\\d{2})","$1-$2 $3",["20"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{4})","$1-$2",["9(?:00|39|44|9)"],"0$1",0,"$1 $2"],["(\\d{2})(\\d{3})(\\d{2})","$1-$2 $3",["[12][136]|3[356]|4[0246]|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3"],["(\\d)(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2,3})(\\d{2})","$1-$2 $3",["1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{2,3})(\\d{3})","$1-$2 $3",["9(?:00|39|44)"],"0$1",0,"$1 $2 $3"],["(\\d{2})(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3 $4"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["10|7"],"0$1",0,"$1 $2 $3 $4"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1-$2 $3 $4",["[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{3})","$1-$2 $3 $4",["9"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4 $5",["[26]"],"0$1",0,"$1 $2 $3 $4 $5"]],"0"],"SG":["65","0[0-3]\\d","(?:(?:1\\d|8)\\d\\d|7000)\\d{7}|[3689]\\d{7}",[8,10,11],[["(\\d{4})(\\d{4})","$1 $2",["[369]|8(?:0[1-5]|[1-9])"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]],["(\\d{4})(\\d{4})(\\d{3})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]]],"SH":["290","00","(?:[256]\\d|8)\\d{3}",[4,5],0,0,0,0,0,0,"[256]"],"SI":["386","00|10(?:22|66|88|99)","[1-7]\\d{7}|8\\d{4,7}|90\\d{4,6}",[5,6,7,8],[["(\\d{2})(\\d{3,6})","$1 $2",["8[09]|9"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["59|8"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37][01]|4[0139]|51|6"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-57]"],"(0$1)"]],"0",0,0,0,0,0,0,"00"],"SJ":["47","00","0\\d{4}|(?:[489]\\d|[57]9)\\d{6}",[5,8],0,0,0,0,0,0,"79"],"SK":["421","00","[2-689]\\d{8}|[2-59]\\d{6}|[2-5]\\d{5}",[6,7,9],[["(\\d)(\\d{2})(\\d{3,4})","$1 $2 $3",["21"],"0$1"],["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["[3-5][1-8]1","[3-5][1-8]1[67]"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1/$2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[689]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1/$2 $3 $4",["[3-5]"],"0$1"]],"0"],"SL":["232","00","(?:[237-9]\\d|66)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[236-9]"],"(0$1)"]],"0"],"SM":["378","00","(?:0549|[5-7]\\d)\\d{6}",[8,10],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-7]"]],["(\\d{4})(\\d{6})","$1 $2",["0"]]],0,0,"([89]\\d{5})$","0549$1"],"SN":["221","00","(?:[378]\\d|93)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[379]"]]]],"SO":["252","00","[346-9]\\d{8}|[12679]\\d{7}|[1-5]\\d{6}|[1348]\\d{5}",[6,7,8,9],[["(\\d{2})(\\d{4})","$1 $2",["8[125]"]],["(\\d{6})","$1",["[134]"]],["(\\d)(\\d{6})","$1 $2",["[15]|2[0-79]|3[0-46-8]|4[0-7]"]],["(\\d)(\\d{7})","$1 $2",["24|[67]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3478]|64|90"]],["(\\d{2})(\\d{5,7})","$1 $2",["1|28|6(?:0[5-7]|[1-35-9])|9[2-9]"]]],"0"],"SR":["597","00","(?:[2-5]|68|[78]\\d)\\d{5}",[6,7],[["(\\d{2})(\\d{2})(\\d{2})","$1-$2-$3",["56"]],["(\\d{3})(\\d{3})","$1-$2",["[2-5]"]],["(\\d{3})(\\d{4})","$1-$2",["[6-8]"]]]],"SS":["211","00","[19]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[19]"],"0$1"]],"0"],"ST":["239","00","(?:22|9\\d)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[29]"]]]],"SV":["503","00","[267]\\d{7}|[89]00\\d{4}(?:\\d{4})?",[7,8,11],[["(\\d{3})(\\d{4})","$1 $2",["[89]"]],["(\\d{4})(\\d{4})","$1 $2",["[267]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[89]"]]]],"SX":["1","011","7215\\d{6}|(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|(5\\d{6})$","721$1",0,"721"],"SY":["963","00","[1-39]\\d{8}|[1-5]\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-5]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1",1]],"0"],"SZ":["268","00","0800\\d{4}|(?:[237]\\d|900)\\d{6}",[8,9],[["(\\d{4})(\\d{4})","$1 $2",["[0237]"]],["(\\d{5})(\\d{4})","$1 $2",["9"]]]],"TA":["290","00","8\\d{3}",[4],0,0,0,0,0,0,"8"],"TC":["1","011","(?:[58]\\d\\d|649|900)\\d{7}",[10],0,"1",0,"1|([2-479]\\d{6})$","649$1",0,"649"],"TD":["235","00|16","(?:22|[69]\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2679]"]]],0,0,0,0,0,0,0,"00"],"TG":["228","00","[279]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[279]"]]]],"TH":["66","00[1-9]","(?:001800|[2-57]|[689]\\d)\\d{7}|1\\d{7,9}",[8,9,10,13],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[13-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0"],"TJ":["992","810","(?:00|[1-57-9]\\d)\\d{7}",[9],[["(\\d{6})(\\d)(\\d{2})","$1 $2 $3",["331","3317"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[34]7|91[78]"]],["(\\d{4})(\\d)(\\d{4})","$1 $2 $3",["3[1-5]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[0-57-9]"]]],0,0,0,0,0,0,0,"8~10"],"TK":["690","00","[2-47]\\d{3,6}",[4,5,6,7]],"TL":["670","00","7\\d{7}|(?:[2-47]\\d|[89]0)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[2-489]|70"]],["(\\d{4})(\\d{4})","$1 $2",["7"]]]],"TM":["993","810","[1-6]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["12"],"(8 $1)"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-5]"],"(8 $1)"],["(\\d{2})(\\d{6})","$1 $2",["6"],"8 $1"]],"8",0,0,0,0,0,0,"8~10"],"TN":["216","00","[2-57-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-57-9]"]]]],"TO":["676","00","(?:0800|(?:[5-8]\\d\\d|999)\\d)\\d{3}|[2-8]\\d{4}",[5,7],[["(\\d{2})(\\d{3})","$1-$2",["[2-4]|50|6[09]|7[0-24-69]|8[05]"]],["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{3})(\\d{4})","$1 $2",["[5-9]"]]]],"TR":["90","00","4\\d{6}|8\\d{11,12}|(?:[2-58]\\d\\d|900)\\d{7}",[7,10,12,13],[["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["512|8[01589]|90"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5(?:[0-59]|61)","5(?:[0-59]|616)","5(?:[0-59]|6161)"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24][1-8]|3[1-9]"],"(0$1)",1],["(\\d{3})(\\d{3})(\\d{6,7})","$1 $2 $3",["80"],"0$1",1]],"0"],"TT":["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-46-8]\\d{6})$","868$1",0,"868"],"TV":["688","00","(?:2|7\\d\\d|90)\\d{4}",[5,6,7],[["(\\d{2})(\\d{3})","$1 $2",["2"]],["(\\d{2})(\\d{4})","$1 $2",["90"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]]],"TW":["886","0(?:0[25-79]|19)","[2-689]\\d{8}|7\\d{9,10}|[2-8]\\d{7}|2\\d{6}",[7,8,9,10,11],[["(\\d{2})(\\d)(\\d{4})","$1 $2 $3",["202"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[258]0"],"0$1"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]","[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,5})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,0,0,"#"],"TZ":["255","00[056]","(?:[25-8]\\d|41|90)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[24]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["5"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[67]"],"0$1"]],"0"],"UA":["380","00","[89]\\d{9}|[3-9]\\d{8}",[9,10],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]","6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])","3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3-7]|89|9[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,0,"0~0"],"UG":["256","00[057]","800\\d{6}|(?:[29]0|[347]\\d)\\d{7}",[9],[["(\\d{4})(\\d{5})","$1 $2",["202","2024"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[27-9]|4(?:6[45]|[7-9])"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[34]"],"0$1"]],"0"],"US":["1","011","[2-9]\\d{9}|3\\d{6}",[10],[["(\\d{3})(\\d{4})","$1-$2",["310"],0,1],["(\\d{3})(\\d{3})(\\d{4})","($1) $2-$3",["[2-9]"],0,1,"$1-$2-$3"]],"1",0,0,0,0,0,[["505(?:[2-57-9]\\d\\d|6(?:[0-35-9]\\d|44))\\d{4}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[01679]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[068]|3[0-289]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-389]|8[04-69]))[2-9]\\d{6}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"UY":["598","0(?:0|1[3-9]\\d)","4\\d{9}|[1249]\\d{7}|(?:[49]\\d|80)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["405|8|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[124]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["4"],"0$1"]],"0",0,0,0,0,0,0,"00"," int. "],"UZ":["998","810","(?:33|55|[679]\\d|88)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[35-9]"],"8 $1"]],"8",0,0,0,0,0,0,"8~10"],"VA":["39","00","0\\d{5,10}|3[0-8]\\d{7,10}|55\\d{8}|8\\d{5}(?:\\d{2,4})?|(?:1\\d|39)\\d{7,8}",[6,7,8,9,10,11],0,0,0,0,0,0,"06698"],"VC":["1","011","(?:[58]\\d\\d|784|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","784$1",0,"784"],"VE":["58","00","[68]00\\d{7}|(?:[24]\\d|[59]0)\\d{8}",[10],[["(\\d{3})(\\d{7})","$1-$2",["[24-689]"],"0$1"]],"0"],"VG":["1","011","(?:284|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-578]\\d{6})$","284$1",0,"284"],"VI":["1","011","[58]\\d{9}|(?:34|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","340$1",0,"340"],"VN":["84","00","[12]\\d{9}|[135-9]\\d{8}|[16]\\d{7}|[16-8]\\d{6}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["80"],"0$1",1],["(\\d{4})(\\d{4,6})","$1 $2",["1"],0,1],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[69]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3578]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["2[48]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["2"],"0$1",1]],"0"],"VU":["678","00","[57-9]\\d{6}|(?:[238]\\d|48)\\d{3}",[5,7],[["(\\d{3})(\\d{4})","$1 $2",["[57-9]"]]]],"WF":["681","00","(?:40|72)\\d{4}|8\\d{5}(?:\\d{3})?",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[478]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]]],"WS":["685","0","(?:[2-6]|8\\d{5})\\d{4}|[78]\\d{6}|[68]\\d{5}",[5,6,7,10],[["(\\d{5})","$1",["[2-5]|6[1-9]"]],["(\\d{3})(\\d{3,7})","$1 $2",["[68]"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]]],"XK":["383","00","[23]\\d{7,8}|(?:4\\d\\d|[89]00)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[23]"],"0$1"]],"0"],"YE":["967","00","(?:1|7\\d)\\d{7}|[1-7]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-6]|7[24-68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["7"],"0$1"]],"0"],"YT":["262","00","80\\d{7}|(?:26|63)9\\d{6}",[9],0,"0",0,0,0,0,"269|63"],"ZA":["27","00","[1-79]\\d{8}|8\\d{4,9}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,4})","$1 $2",["8[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["8[1-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["860"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0"],"ZM":["260","00","800\\d{6}|(?:21|63|[79]\\d)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[28]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[79]"],"0$1"]],"0"],"ZW":["263","00","2(?:[0-57-9]\\d{6,8}|6[0-24-9]\\d{6,7})|[38]\\d{9}|[35-8]\\d{8}|[3-6]\\d{7}|[1-689]\\d{6}|[1-3569]\\d{5}|[1356]\\d{4}",[5,6,7,8,9,10],[["(\\d{3})(\\d{3,5})","$1 $2",["2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]"],"0$1"],["(\\d)(\\d{3})(\\d{2,4})","$1 $2 $3",["[49]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["80"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2","2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)","2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["29[013-9]|39|54"],"0$1"],["(\\d{4})(\\d{3,5})","$1 $2",["(?:25|54)8","258|5483"],"0$1"]],"0"]},"nonGeographic":{"800":["800",0,"(?:00|[1-9]\\d)\\d{6}",[8],[["(\\d{4})(\\d{4})","$1 $2",["\\d"]]],0,0,0,0,0,0,[0,0,["(?:00|[1-9]\\d)\\d{6}"]]],"808":["808",0,"[1-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[1-9]"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,["[1-9]\\d{7}"]]],"870":["870",0,"7\\d{11}|[35-7]\\d{8}",[9,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[35-7]"]]],0,0,0,0,0,0,[0,["(?:[356]|774[45])\\d{8}|7[6-8]\\d{7}"]]],"878":["878",0,"10\\d{10}",[12],[["(\\d{2})(\\d{5})(\\d{5})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["10\\d{10}"]]],"881":["881",0,"[0-36-9]\\d{8}",[9],[["(\\d)(\\d{3})(\\d{5})","$1 $2 $3",["[0-36-9]"]]],0,0,0,0,0,0,[0,["[0-36-9]\\d{8}"]]],"882":["882",0,"[13]\\d{6}(?:\\d{2,5})?|285\\d{9}|(?:[19]\\d|49)\\d{6}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5})","$1 $2",["16|342"]],["(\\d{2})(\\d{6})","$1 $2",["4"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[19]"]],["(\\d{2})(\\d{4})(\\d{3})","$1 $2 $3",["3[23]"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["34[57]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["34"]],["(\\d{2})(\\d{4,5})(\\d{5})","$1 $2 $3",["[1-3]"]]],0,0,0,0,0,0,[0,["342\\d{4}|(?:337|49)\\d{6}|3(?:2|47|7\\d{3})\\d{7}",[7,8,9,10,12]],0,0,0,0,0,0,["1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\d{4}|6\\d{5,10})|(?:(?:285\\d\\d|3(?:45|[69]\\d{3}))\\d|9[89])\\d{6}"]]],"883":["883",0,"(?:210|370\\d\\d)\\d{7}|51\\d{7}(?:\\d{3})?",[9,10,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["510"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["2"]],["(\\d{4})(\\d{4})(\\d{4})","$1 $2 $3",["51[13]"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[35]"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["(?:210|(?:370[1-9]|51[013]0)\\d)\\d{7}|5100\\d{5}"]]],"888":["888",0,"\\d{11}",[11],[["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3"]],0,0,0,0,0,0,[0,0,0,0,0,0,["\\d{11}"]]],"979":["979",0,"[1359]\\d{8}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[1359]"]]],0,0,0,0,0,0,[0,0,0,["[1359]\\d{8}"]]]}} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.min.json.d.ts b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.min.json.d.ts new file mode 100644 index 00000000..ccfebccc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.min.json.d.ts @@ -0,0 +1,4 @@ +import { MetadataJson } from './types'; + +declare const metadata: MetadataJson; +export default metadata; diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.min.json.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.min.json.js new file mode 100644 index 00000000..886efd49 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.min.json.js @@ -0,0 +1,4 @@ +// This file is a workaround for a bug in web browsers' "native" +// ES6 importing system which is uncapable of importing "*.json" files. +// https://github.com/catamphetamine/libphonenumber-js/issues/239 +export default {"version":4,"country_calling_codes":{"1":["US","AG","AI","AS","BB","BM","BS","CA","DM","DO","GD","GU","JM","KN","KY","LC","MP","MS","PR","SX","TC","TT","VC","VG","VI"],"7":["RU","KZ"],"20":["EG"],"27":["ZA"],"30":["GR"],"31":["NL"],"32":["BE"],"33":["FR"],"34":["ES"],"36":["HU"],"39":["IT","VA"],"40":["RO"],"41":["CH"],"43":["AT"],"44":["GB","GG","IM","JE"],"45":["DK"],"46":["SE"],"47":["NO","SJ"],"48":["PL"],"49":["DE"],"51":["PE"],"52":["MX"],"53":["CU"],"54":["AR"],"55":["BR"],"56":["CL"],"57":["CO"],"58":["VE"],"60":["MY"],"61":["AU","CC","CX"],"62":["ID"],"63":["PH"],"64":["NZ"],"65":["SG"],"66":["TH"],"81":["JP"],"82":["KR"],"84":["VN"],"86":["CN"],"90":["TR"],"91":["IN"],"92":["PK"],"93":["AF"],"94":["LK"],"95":["MM"],"98":["IR"],"211":["SS"],"212":["MA","EH"],"213":["DZ"],"216":["TN"],"218":["LY"],"220":["GM"],"221":["SN"],"222":["MR"],"223":["ML"],"224":["GN"],"225":["CI"],"226":["BF"],"227":["NE"],"228":["TG"],"229":["BJ"],"230":["MU"],"231":["LR"],"232":["SL"],"233":["GH"],"234":["NG"],"235":["TD"],"236":["CF"],"237":["CM"],"238":["CV"],"239":["ST"],"240":["GQ"],"241":["GA"],"242":["CG"],"243":["CD"],"244":["AO"],"245":["GW"],"246":["IO"],"247":["AC"],"248":["SC"],"249":["SD"],"250":["RW"],"251":["ET"],"252":["SO"],"253":["DJ"],"254":["KE"],"255":["TZ"],"256":["UG"],"257":["BI"],"258":["MZ"],"260":["ZM"],"261":["MG"],"262":["RE","YT"],"263":["ZW"],"264":["NA"],"265":["MW"],"266":["LS"],"267":["BW"],"268":["SZ"],"269":["KM"],"290":["SH","TA"],"291":["ER"],"297":["AW"],"298":["FO"],"299":["GL"],"350":["GI"],"351":["PT"],"352":["LU"],"353":["IE"],"354":["IS"],"355":["AL"],"356":["MT"],"357":["CY"],"358":["FI","AX"],"359":["BG"],"370":["LT"],"371":["LV"],"372":["EE"],"373":["MD"],"374":["AM"],"375":["BY"],"376":["AD"],"377":["MC"],"378":["SM"],"380":["UA"],"381":["RS"],"382":["ME"],"383":["XK"],"385":["HR"],"386":["SI"],"387":["BA"],"389":["MK"],"420":["CZ"],"421":["SK"],"423":["LI"],"500":["FK"],"501":["BZ"],"502":["GT"],"503":["SV"],"504":["HN"],"505":["NI"],"506":["CR"],"507":["PA"],"508":["PM"],"509":["HT"],"590":["GP","BL","MF"],"591":["BO"],"592":["GY"],"593":["EC"],"594":["GF"],"595":["PY"],"596":["MQ"],"597":["SR"],"598":["UY"],"599":["CW","BQ"],"670":["TL"],"672":["NF"],"673":["BN"],"674":["NR"],"675":["PG"],"676":["TO"],"677":["SB"],"678":["VU"],"679":["FJ"],"680":["PW"],"681":["WF"],"682":["CK"],"683":["NU"],"685":["WS"],"686":["KI"],"687":["NC"],"688":["TV"],"689":["PF"],"690":["TK"],"691":["FM"],"692":["MH"],"850":["KP"],"852":["HK"],"853":["MO"],"855":["KH"],"856":["LA"],"880":["BD"],"886":["TW"],"960":["MV"],"961":["LB"],"962":["JO"],"963":["SY"],"964":["IQ"],"965":["KW"],"966":["SA"],"967":["YE"],"968":["OM"],"970":["PS"],"971":["AE"],"972":["IL"],"973":["BH"],"974":["QA"],"975":["BT"],"976":["MN"],"977":["NP"],"992":["TJ"],"993":["TM"],"994":["AZ"],"995":["GE"],"996":["KG"],"998":["UZ"]},"countries":{"AC":["247","00","(?:[01589]\\d|[46])\\d{4}",[5,6]],"AD":["376","00","(?:1|6\\d)\\d{7}|[135-9]\\d{5}",[6,8,9],[["(\\d{3})(\\d{3})","$1 $2",["[135-9]"]],["(\\d{4})(\\d{4})","$1 $2",["1"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]]],"AE":["971","00","(?:[4-7]\\d|9[0-689])\\d{7}|800\\d{2,9}|[2-4679]\\d{7}",[5,6,7,8,9,10,11,12],[["(\\d{3})(\\d{2,9})","$1 $2",["60|8"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[236]|[479][2-8]"],"0$1"],["(\\d{3})(\\d)(\\d{5})","$1 $2 $3",["[479]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"]],"0"],"AF":["93","00","[2-7]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"]],"0"],"AG":["1","011","(?:268|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([457]\\d{6})$","268$1",0,"268"],"AI":["1","011","(?:264|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2457]\\d{6})$","264$1",0,"264"],"AL":["355","00","(?:700\\d\\d|900)\\d{3}|8\\d{5,7}|(?:[2-5]|6\\d)\\d{7}",[6,7,8,9],[["(\\d{3})(\\d{3,4})","$1 $2",["80|9"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["4[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2358][2-5]|4"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["[23578]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["6"],"0$1"]],"0"],"AM":["374","00","(?:[1-489]\\d|55|60|77)\\d{6}",[8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[89]0"],"0 $1"],["(\\d{3})(\\d{5})","$1 $2",["2|3[12]"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["1|47"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[3-9]"],"0$1"]],"0"],"AO":["244","00","[29]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[29]"]]]],"AR":["54","00","(?:11|[89]\\d\\d)\\d{8}|[2368]\\d{9}",[10,11],[["(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])","2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["1"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2-$3",["[23]"],"0$1",1],["(\\d)(\\d{4})(\\d{2})(\\d{4})","$2 15-$3-$4",["9(?:2[2-469]|3[3-578])","9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))","9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",0,"$1 $2 $3-$4"],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 15-$3-$4",["91"],"0$1",0,"$1 $2 $3-$4"],["(\\d{3})(\\d{3})(\\d{5})","$1-$2-$3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 15-$3-$4",["9"],"0$1",0,"$1 $2 $3-$4"]],"0",0,"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?","9$1"],"AS":["1","011","(?:[58]\\d\\d|684|900)\\d{7}",[10],0,"1",0,"1|([267]\\d{6})$","684$1",0,"684"],"AT":["43","00","1\\d{3,12}|2\\d{6,12}|43(?:(?:0\\d|5[02-9])\\d{3,9}|2\\d{4,5}|[3467]\\d{4}|8\\d{4,6}|9\\d{4,7})|5\\d{4,12}|8\\d{7,12}|9\\d{8,12}|(?:[367]\\d|4[0-24-9])\\d{4,11}",[4,5,6,7,8,9,10,11,12,13],[["(\\d)(\\d{3,12})","$1 $2",["1(?:11|[2-9])"],"0$1"],["(\\d{3})(\\d{2})","$1 $2",["517"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["5[079]"],"0$1"],["(\\d{3})(\\d{3,10})","$1 $2",["(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]"],"0$1"],["(\\d{4})(\\d{3,9})","$1 $2",["[2-467]|5[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["5"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,7})","$1 $2 $3",["5"],"0$1"]],"0"],"AU":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{7}(?:\\d(?:\\d{2})?)?|8[0-24-9]\\d{7})|[2-478]\\d{8}|1\\d{4,7}",[5,6,7,8,9,10,12],[["(\\d{2})(\\d{3,4})","$1 $2",["16"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,4})","$1 $2 $3",["16"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["14|4"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[2378]"],"(0$1)"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:30|[89])"]]],"0",0,"0|(183[12])",0,0,0,[["(?:(?:2(?:[0-26-9]\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\d|2[0-8]))\\d{3}|8(?:51(?:0(?:0[03-9]|[12479]\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\d|7[89]|9[0-4]))|(?:6[0-8]|[78]\\d)\\d{3}|9(?:[02-9]\\d{3}|1(?:(?:[0-58]\\d|6[0135-9])\\d|7(?:0[0-24-9]|[1-9]\\d)|9(?:[0-46-9]\\d|5[0-79])))))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,["163\\d{2,6}",[5,6,7,8,9]],["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],"AW":["297","00","(?:[25-79]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[25-9]"]]]],"AX":["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","2\\d{4,9}|35\\d{4,5}|(?:60\\d\\d|800)\\d{4,6}|7\\d{5,11}|(?:[14]\\d|3[0-46-9]|50)\\d{4,8}",[5,6,7,8,9,10,11,12],0,"0",0,0,0,0,"18",0,"00"],"AZ":["994","00","365\\d{6}|(?:[124579]\\d|60|88)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[28]|2|365|46","1[28]|2|365[45]|46","1[28]|2|365(?:4|5[02])|46"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[13-9]"],"0$1"]],"0"],"BA":["387","00","6\\d{8}|(?:[35689]\\d|49|70)\\d{6}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["6[1-3]|[7-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2-$3",["[3-5]|6[56]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["6"],"0$1"]],"0"],"BB":["1","011","(?:246|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","246$1",0,"246"],"BD":["880","00","[1-469]\\d{9}|8[0-79]\\d{7,8}|[2-79]\\d{8}|[2-9]\\d{7}|[3-9]\\d{6}|[57-9]\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{4,6})","$1-$2",["31[5-8]|[459]1"],"0$1"],["(\\d{3})(\\d{3,7})","$1-$2",["3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:28|4[14]|5)|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]"],"0$1"],["(\\d{4})(\\d{3,6})","$1-$2",["[13-9]|22"],"0$1"],["(\\d)(\\d{7,8})","$1-$2",["2"],"0$1"]],"0"],"BE":["32","00","4\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:80|9)0"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[239]|4[23]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[15-8]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4"],"0$1"]],"0"],"BF":["226","00","[025-7]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[025-7]"]]]],"BG":["359","00","[2-7]\\d{6,7}|[89]\\d{6,8}|2\\d{5}",[6,7,8,9],[["(\\d)(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["43[1-6]|70[1-9]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:70|8)0"],"0$1"],["(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3",["43[1-7]|7"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[48]|9[08]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"]],"0"],"BH":["973","00","[136-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[13679]|8[047]"]]]],"BI":["257","00","(?:[267]\\d|31)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2367]"]]]],"BJ":["229","00","(?:[25689]\\d|40)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24-689]"]]]],"BL":["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[["590(?:2[7-9]|5[12]|87)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],"BM":["1","011","(?:441|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","441$1",0,"441"],"BN":["673","00","[2-578]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-578]"]]]],"BO":["591","00(?:1\\d)?","(?:[2-467]\\d\\d|8001)\\d{5}",[8,9],[["(\\d)(\\d{7})","$1 $2",["[23]|4[46]"]],["(\\d{8})","$1",["[67]"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["8"]]],"0",0,"0(1\\d)?"],"BQ":["599","00","(?:[34]1|7\\d)\\d{5}",[7],0,0,0,0,0,0,"[347]"],"BR":["55","00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)","(?:[1-46-9]\\d\\d|5(?:[0-46-9]\\d|5[0-46-9]))\\d{8}|[1-9]\\d{9}|[3589]\\d{8}|[34]\\d{7}",[8,9,10,11],[["(\\d{4})(\\d{4})","$1-$2",["300|4(?:0[02]|37)","4(?:02|37)0|[34]00"]],["(\\d{3})(\\d{2,3})(\\d{4})","$1 $2 $3",["(?:[358]|90)0"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]"],"($1)"],["(\\d{2})(\\d{5})(\\d{4})","$1 $2-$3",["[16][1-9]|[2-57-9]"],"($1)"]],"0",0,"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\d{10,11}))?","$2"],"BS":["1","011","(?:242|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([3-8]\\d{6})$","242$1",0,"242"],"BT":["975","00","[17]\\d{7}|[2-8]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[2-68]|7[246]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[67]|7"]]]],"BW":["267","00","(?:0800|(?:[37]|800)\\d)\\d{6}|(?:[2-6]\\d|90)\\d{5}",[7,8,10],[["(\\d{2})(\\d{5})","$1 $2",["90"]],["(\\d{3})(\\d{4})","$1 $2",["[24-6]|3[15-79]"]],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37]"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["8"]]]],"BY":["375","810","(?:[12]\\d|33|44|902)\\d{7}|8(?:0[0-79]\\d{5,7}|[1-7]\\d{9})|8(?:1[0-489]|[5-79]\\d)\\d{7}|8[1-79]\\d{6,7}|8[0-79]\\d{5}|8\\d{5}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3})","$1 $2",["800"],"8 $1"],["(\\d{3})(\\d{2})(\\d{2,4})","$1 $2 $3",["800"],"8 $1"],["(\\d{4})(\\d{2})(\\d{3})","$1 $2-$3",["1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])","1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])"],"8 0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["1(?:[56]|7[467])|2[1-3]"],"8 0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-4]"],"8 0$1"],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["[89]"],"8 $1"]],"8",0,"0|80?",0,0,0,0,"8~10"],"BZ":["501","00","(?:0800\\d|[2-8])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1-$2",["[2-8]"]],["(\\d)(\\d{3})(\\d{4})(\\d{3})","$1-$2-$3-$4",["0"]]]],"CA":["1","011","(?:[2-8]\\d|90)\\d{8}|3\\d{6}",[7,10],0,"1",0,0,0,0,0,[["(?:2(?:04|[23]6|[48]9|50|63)|3(?:06|43|6[578])|4(?:03|1[68]|3[178]|50|68|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|13|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\d{6}",[10]],["",[10]],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",[10]],["900[2-9]\\d{6}",[10]],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|(?:5(?:00|2[125-7]|33|44|66|77|88)|622)[2-9]\\d{6}",[10]],0,["310\\d{4}",[7]],0,["600[2-9]\\d{6}",[10]]]],"CC":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[["8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\d|70[23]|959))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,0,["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],"CD":["243","00","[189]\\d{8}|[1-68]\\d{6}",[7,9],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[1-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]"],"0$1"]],"0"],"CF":["236","00","(?:[27]\\d{3}|8776)\\d{4}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[278]"]]]],"CG":["242","00","222\\d{6}|(?:0\\d|80)\\d{7}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["8"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[02]"]]]],"CH":["41","00","8\\d{11}|[2-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8[047]|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-79]|81"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["8"],"0$1"]],"0"],"CI":["225","00","[02]\\d{9}",[10],[["(\\d{2})(\\d{2})(\\d)(\\d{5})","$1 $2 $3 $4",["2"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3 $4",["0"]]]],"CK":["682","00","[2-578]\\d{4}",[5],[["(\\d{2})(\\d{3})","$1 $2",["[2-578]"]]]],"CL":["56","(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0","12300\\d{6}|6\\d{9,10}|[2-9]\\d{8}",[9,10,11],[["(\\d{5})(\\d{4})","$1 $2",["219","2196"],"($1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["44"]],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2[1-36]"],"($1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["9[2-9]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])"],"($1)"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["60|8"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{3})(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3 $4",["60"]]]],"CM":["237","00","[26]\\d{8}|88\\d{6,7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["88"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[26]|88"]]]],"CN":["86","00|1(?:[12]\\d|79)\\d\\d00","1[127]\\d{8,9}|2\\d{9}(?:\\d{2})?|[12]\\d{6,7}|86\\d{6}|(?:1[03-689]\\d|6)\\d{7,9}|(?:[3-579]\\d|8[0-57-9])\\d{6,9}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5,6})","$1 $2",["(?:10|2[0-57-9])[19]","(?:10|2[0-57-9])(?:10|9[56])","(?:10|2[0-57-9])(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{5,6})","$1 $2",["3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]","(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))[19]","85[23](?:10|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:10|9[56])","85[23](?:100|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["(?:4|80)0"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["10|2(?:[02-57-9]|1[1-9])","10|2(?:[02-57-9]|1[1-9])","10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]"],"0$1",1],["(\\d{3})(\\d{7,8})","$1 $2",["9"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["80"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[3-578]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["1[3-9]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3 $4",["[12]"],"0$1",1]],"0",0,"0|(1(?:[12]\\d|79)\\d\\d)",0,0,0,0,"00"],"CO":["57","00(?:4(?:[14]4|56)|[579])","(?:60\\d\\d|9101)\\d{6}|(?:1\\d|3)\\d{9}",[10,11],[["(\\d{3})(\\d{7})","$1 $2",["6"],"($1)"],["(\\d{3})(\\d{7})","$1 $2",["3[0-357]|91"]],["(\\d)(\\d{3})(\\d{7})","$1-$2-$3",["1"],"0$1",0,"$1 $2 $3"]],"0",0,"0(4(?:[14]4|56)|[579])?"],"CR":["506","00","(?:8\\d|90)\\d{8}|(?:[24-8]\\d{3}|3005)\\d{4}",[8,10],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[3-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[89]"]]],0,0,"(19(?:0[0-2468]|1[09]|20|66|77|99))"],"CU":["53","119","[27]\\d{6,7}|[34]\\d{5,7}|(?:5|8\\d\\d)\\d{7}",[6,7,8,10],[["(\\d{2})(\\d{4,6})","$1 $2",["2[1-4]|[34]"],"(0$1)"],["(\\d)(\\d{6,7})","$1 $2",["7"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["5"],"0$1"],["(\\d{3})(\\d{7})","$1 $2",["8"],"0$1"]],"0"],"CV":["238","0","(?:[2-59]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[2-589]"]]]],"CW":["599","00","(?:[34]1|60|(?:7|9\\d)\\d)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[3467]"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["9[4-8]"]]],0,0,0,0,0,"[69]"],"CX":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[["8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\d|7(?:0[01]|1[0-2])|958))\\d{3}",[9]],["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]],["180(?:0\\d{3}|2)\\d{3}",[7,10]],["190[0-26]\\d{6}",[10]],0,0,0,0,["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}",[9]],["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}",[6,8,10,12]]],"0011"],"CY":["357","00","(?:[279]\\d|[58]0)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[257-9]"]]]],"CZ":["420","00","(?:[2-578]\\d|60)\\d{7}|9\\d{8,11}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]|9[015-7]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3 $4",["96"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]]],"DE":["49","00","[2579]\\d{5,14}|49(?:[34]0|69|8\\d)\\d\\d?|49(?:37|49|60|7[089]|9\\d)\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\d{1,8}|(?:1|[368]\\d|4[0-8])\\d{3,13}|49(?:[015]\\d|2[13]|31|[46][1-8])\\d{1,9}",[4,5,6,7,8,9,10,11,12,13,14,15],[["(\\d{2})(\\d{3,13})","$1 $2",["3[02]|40|[68]9"],"0$1"],["(\\d{3})(\\d{3,12})","$1 $2",["2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1","2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1"],"0$1"],["(\\d{4})(\\d{2,11})","$1 $2",["[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]","[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["138"],"0$1"],["(\\d{5})(\\d{2,10})","$1 $2",["3"],"0$1"],["(\\d{3})(\\d{5,11})","$1 $2",["181"],"0$1"],["(\\d{3})(\\d)(\\d{4,10})","$1 $2 $3",["1(?:3|80)|9"],"0$1"],["(\\d{3})(\\d{7,8})","$1 $2",["1[67]"],"0$1"],["(\\d{3})(\\d{7,12})","$1 $2",["8"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["185","1850","18500"],"0$1"],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["18[68]"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["15[0568]"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["15[1279]"],"0$1"],["(\\d{3})(\\d{8})","$1 $2",["18"],"0$1"],["(\\d{3})(\\d{2})(\\d{7,8})","$1 $2 $3",["1(?:6[023]|7)"],"0$1"],["(\\d{4})(\\d{2})(\\d{7})","$1 $2 $3",["15[279]"],"0$1"],["(\\d{3})(\\d{2})(\\d{8})","$1 $2 $3",["15"],"0$1"]],"0"],"DJ":["253","00","(?:2\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[27]"]]]],"DK":["45","00","[2-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-9]"]]]],"DM":["1","011","(?:[58]\\d\\d|767|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","767$1",0,"767"],"DO":["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,0,0,0,"8001|8[024]9"],"DZ":["213","00","(?:[1-4]|[5-79]\\d|80)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["9"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-8]"],"0$1"]],"0"],"EC":["593","00","1\\d{9,10}|(?:[2-7]|9\\d)\\d{7}",[8,9,10,11],[["(\\d)(\\d{3})(\\d{4})","$1 $2-$3",["[2-7]"],"(0$1)",0,"$1-$2-$3"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{3})(\\d{3,4})","$1 $2 $3",["1"]]],"0"],"EE":["372","00","8\\d{9}|[4578]\\d{7}|(?:[3-8]\\d|90)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88","[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88"]],["(\\d{4})(\\d{3,4})","$1 $2",["[45]|8(?:00|[1-49])","[45]|8(?:00[1-9]|[1-49])"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]]],"EG":["20","00","[189]\\d{8,9}|[24-6]\\d{8}|[135]\\d{7}",[8,9,10],[["(\\d)(\\d{7,8})","$1 $2",["[23]"],"0$1"],["(\\d{2})(\\d{6,7})","$1 $2",["1[35]|[4-6]|8[2468]|9[235-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[189]"],"0$1"]],"0"],"EH":["212","00","[5-8]\\d{8}",[9],0,"0",0,0,0,0,"528[89]"],"ER":["291","00","[178]\\d{6}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[178]"],"0$1"]],"0"],"ES":["34","00","[5-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]00"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-9]"]]]],"ET":["251","00","(?:11|[2-579]\\d)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-579]"],"0$1"]],"0"],"FI":["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","[1-35689]\\d{4}|7\\d{10,11}|(?:[124-7]\\d|3[0-46-9])\\d{8}|[1-9]\\d{5,8}",[5,6,7,8,9,10,11,12],[["(\\d)(\\d{4,9})","$1 $2",["[2568][1-8]|3(?:0[1-9]|[1-9])|9"],"0$1"],["(\\d{3})(\\d{3,7})","$1 $2",["[12]00|[368]|70[07-9]"],"0$1"],["(\\d{2})(\\d{4,8})","$1 $2",["[1245]|7[135]"],"0$1"],["(\\d{2})(\\d{6,10})","$1 $2",["7"],"0$1"]],"0",0,0,0,0,"1[03-79]|[2-9]",0,"00"],"FJ":["679","0(?:0|52)","45\\d{5}|(?:0800\\d|[235-9])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1 $2",["[235-9]|45"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]]],0,0,0,0,0,0,0,"00"],"FK":["500","00","[2-7]\\d{4}",[5]],"FM":["691","00","(?:[39]\\d\\d|820)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[389]"]]]],"FO":["298","00","[2-9]\\d{5}",[6],[["(\\d{6})","$1",["[2-9]"]]],0,0,"(10(?:01|[12]0|88))"],"FR":["33","00","[1-9]\\d{8}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0 $1"],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[1-79]"],"0$1"]],"0"],"GA":["241","00","(?:[067]\\d|11)\\d{6}|[2-7]\\d{6}",[7,8],[["(\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-7]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["11|[67]"],"0$1"]],0,0,"0(11\\d{6}|60\\d{6}|61\\d{6}|6[256]\\d{6}|7[467]\\d{6})","$1"],"GB":["44","00","[1-357-9]\\d{9}|[18]\\d{8}|8\\d{6}",[7,9,10],[["(\\d{3})(\\d{4})","$1 $2",["800","8001","80011","800111","8001111"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["845","8454","84546","845464"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["800"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["1(?:38|5[23]|69|76|94)","1(?:(?:38|69)7|5(?:24|39)|768|946)","1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["1(?:[2-69][02-9]|[78])"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[25]|7(?:0|6[02-9])","[25]|7(?:0|6(?:[03-9]|2[356]))"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[1389]"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:1(?:3(?:[0-58]\\d\\d|73[0235])|4(?:[0-5]\\d\\d|69[7-9]|70[013579])|(?:(?:5[0-26-9]|[78][0-49])\\d|6(?:[0-4]\\d|50))\\d)|2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\d)\\d\\d|1(?:[0-7]\\d\\d|8(?:[02]\\d|1[0-246-9])))|(?:3(?:0\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\d\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\d{3})\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\d)|76\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\d|7[4-79])|295[5-7]|35[34]\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\d{3}",[9,10]],["7(?:457[0-57-9]|700[01]|911[028])\\d{5}|7(?:[1-3]\\d\\d|4(?:[0-46-9]\\d|5[0-689])|5(?:0[0-8]|[13-9]\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\d|8[02-9]|9[0-689])|8(?:[014-9]\\d|[23][0-8])|9(?:[024-9]\\d|1[02-9]|3[0-689]))\\d{6}",[10]],["80[08]\\d{7}|800\\d{6}|8001111"],["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[2-49]))\\d{7}|845464\\d",[7,10]],["70\\d{8}",[10]],0,["(?:3[0347]|55)\\d{8}",[10]],["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}",[10]],["56\\d{8}",[10]]],0," x"],"GD":["1","011","(?:473|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","473$1",0,"473"],"GE":["995","00","(?:[3-57]\\d\\d|800)\\d{6}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["32"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[57]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[348]"],"0$1"]],"0"],"GF":["594","00","(?:[56]94|80\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0"],"GG":["44","00","(?:1481|[357-9]\\d{3})\\d{6}|8\\d{6}(?:\\d{2})?",[7,9,10],0,"0",0,"0|([25-9]\\d{5})$","1481$1",0,0,[["1481[25-9]\\d{5}",[10]],["7(?:(?:781|839)\\d|911[17])\\d{5}",[10]],["80[08]\\d{7}|800\\d{6}|8001111"],["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[0-3]))\\d{7}|845464\\d",[7,10]],["70\\d{8}",[10]],0,["(?:3[0347]|55)\\d{8}",[10]],["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}",[10]],["56\\d{8}",[10]]]],"GH":["233","00","(?:[235]\\d{3}|800)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[235]"],"0$1"]],"0"],"GI":["350","00","(?:[25]\\d\\d|606)\\d{5}",[8],[["(\\d{3})(\\d{5})","$1 $2",["2"]]]],"GL":["299","00","(?:19|[2-689]\\d|70)\\d{4}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["19|[2-9]"]]]],"GM":["220","00","[2-9]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]]],"GN":["224","00","722\\d{6}|(?:3|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["3"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[67]"]]]],"GP":["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[["590(?:0[1-68]|[14][0-24-9]|2[0-68]|3[1289]|5[3-579]|6[0-289]|7[08]|8[0-689]|9\\d)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],"GQ":["240","00","222\\d{6}|(?:3\\d|55|[89]0)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235]"]],["(\\d{3})(\\d{6})","$1 $2",["[89]"]]]],"GR":["30","00","5005000\\d{3}|8\\d{9,11}|(?:[269]\\d|70)\\d{8}",[10,11,12],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["21|7"]],["(\\d{4})(\\d{6})","$1 $2",["2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2689]"]],["(\\d{3})(\\d{3,4})(\\d{5})","$1 $2 $3",["8"]]]],"GT":["502","00","(?:1\\d{3}|[2-7])\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]]],"GU":["1","011","(?:[58]\\d\\d|671|900)\\d{7}",[10],0,"1",0,"1|([3-9]\\d{6})$","671$1",0,"671"],"GW":["245","00","[49]\\d{8}|4\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["40"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"]]]],"GY":["592","001","9008\\d{3}|(?:[2-467]\\d\\d|862)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-46-9]"]]]],"HK":["852","00(?:30|5[09]|[126-9]?)","8[0-46-9]\\d{6,7}|9\\d{4,7}|(?:[2-7]|9\\d{3})\\d{7}",[5,6,7,8,9,11],[["(\\d{3})(\\d{2,5})","$1 $2",["900","9003"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[1-4]|9(?:0[1-9]|[1-8])"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]],["(\\d{3})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]],0,0,0,0,0,0,0,"00"],"HN":["504","00","8\\d{10}|[237-9]\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1-$2",["[237-9]"]]]],"HR":["385","00","(?:[24-69]\\d|3[0-79])\\d{7}|80\\d{5,7}|[1-79]\\d{7}|6\\d{5,6}",[6,7,8,9],[["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["6[01]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{4})(\\d{3})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-5]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"]],"0"],"HT":["509","00","[2-489]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[2-489]"]]]],"HU":["36","00","[235-7]\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"06 $1"]],"06"],"ID":["62","00[89]","(?:(?:00[1-9]|8\\d)\\d{4}|[1-36])\\d{6}|00\\d{10}|[1-9]\\d{8,10}|[2-9]\\d{7}",[7,8,9,10,11,12,13],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["15"]],["(\\d{2})(\\d{5,9})","$1 $2",["2[124]|[36]1"],"(0$1)"],["(\\d{3})(\\d{5,7})","$1 $2",["800"],"0$1"],["(\\d{3})(\\d{5,8})","$1 $2",["[2-79]"],"(0$1)"],["(\\d{3})(\\d{3,4})(\\d{3})","$1-$2-$3",["8[1-35-9]"],"0$1"],["(\\d{3})(\\d{6,8})","$1 $2",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["804"],"0$1"],["(\\d{3})(\\d)(\\d{3})(\\d{3})","$1 $2 $3 $4",["80"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1-$2-$3",["8"],"0$1"]],"0"],"IE":["353","00","(?:1\\d|[2569])\\d{6,8}|4\\d{6,9}|7\\d{8}|8\\d{8,9}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["2[24-9]|47|58|6[237-9]|9[35-9]"],"(0$1)"],["(\\d{3})(\\d{5})","$1 $2",["[45]0"],"(0$1)"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["1"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2569]|4[1-69]|7[14]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["81"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[78]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["4"],"(0$1)"],["(\\d{2})(\\d)(\\d{3})(\\d{4})","$1 $2 $3 $4",["8"],"0$1"]],"0"],"IL":["972","0(?:0|1[2-9])","1\\d{6}(?:\\d{3,5})?|[57]\\d{8}|[1-489]\\d{7}",[7,8,9,10,11,12],[["(\\d{4})(\\d{3})","$1-$2",["125"]],["(\\d{4})(\\d{2})(\\d{2})","$1-$2-$3",["121"]],["(\\d)(\\d{3})(\\d{4})","$1-$2-$3",["[2-489]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1-$2-$3",["12"]],["(\\d{4})(\\d{6})","$1-$2",["159"]],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3-$4",["1[7-9]"]],["(\\d{3})(\\d{1,2})(\\d{3})(\\d{4})","$1-$2 $3-$4",["15"]]],"0"],"IM":["44","00","1624\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([25-8]\\d{5})$","1624$1",0,"74576|(?:16|7[56])24"],"IN":["91","00","(?:000800|[2-9]\\d\\d)\\d{7}|1\\d{7,12}",[8,9,10,11,12,13],[["(\\d{8})","$1",["5(?:0|2[23]|3[03]|[67]1|88)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)"],0,1],["(\\d{4})(\\d{4,5})","$1 $2",["180","1800"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["140"],0,1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["11|2[02]|33|4[04]|79[1-7]|80[2-46]","11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])","11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]"],"0$1",1],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807","1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]","1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\d|7(?:1(?:[013-8]\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\d|5[0-367])|70[13-7]))[2-7]"],"0$1",1],["(\\d{5})(\\d{5})","$1 $2",["[6-9]"],"0$1",1],["(\\d{4})(\\d{2,4})(\\d{4})","$1 $2 $3",["1(?:6|8[06])","1(?:6|8[06]0)"],0,1],["(\\d{4})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["18"],0,1]],"0"],"IO":["246","00","3\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["3"]]]],"IQ":["964","00","(?:1|7\\d\\d)\\d{7}|[2-6]\\d{7,8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-6]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0"],"IR":["98","00","[1-9]\\d{9}|(?:[1-8]\\d\\d|9)\\d{3,4}",[4,5,6,7,10],[["(\\d{4,5})","$1",["96"],"0$1"],["(\\d{2})(\\d{4,5})","$1 $2",["(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[1-8]"],"0$1"]],"0"],"IS":["354","00|1(?:0(?:01|[12]0)|100)","(?:38\\d|[4-9])\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["[4-9]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["3"]]],0,0,0,0,0,0,0,"00"],"IT":["39","00","0\\d{5,10}|1\\d{8,10}|3(?:[0-8]\\d{7,10}|9\\d{7,8})|(?:55|70)\\d{8}|8\\d{5}(?:\\d{2,4})?",[6,7,8,9,10,11],[["(\\d{2})(\\d{4,6})","$1 $2",["0[26]"]],["(\\d{3})(\\d{3,6})","$1 $2",["0[13-57-9][0159]|8(?:03|4[17]|9[2-5])","0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))"]],["(\\d{4})(\\d{2,6})","$1 $2",["0(?:[13-579][2-46-8]|8[236-8])"]],["(\\d{4})(\\d{4})","$1 $2",["894"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[26]|5"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["1(?:44|[679])|[378]"]],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[13-57-9][0159]|14"]],["(\\d{2})(\\d{4})(\\d{5})","$1 $2 $3",["0[26]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["3"]]],0,0,0,0,0,0,[["0669[0-79]\\d{1,6}|0(?:1(?:[0159]\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\d\\d|3(?:[0159]\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\d|6[0-8])|7(?:[0159]\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\d{2,7}"],["3[1-9]\\d{8}|3[2-9]\\d{7}",[9,10]],["80(?:0\\d{3}|3)\\d{3}",[6,9]],["(?:0878\\d{3}|89(?:2\\d|3[04]|4(?:[0-4]|[5-9]\\d\\d)|5[0-4]))\\d\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\d{6}",[6,8,9,10]],["1(?:78\\d|99)\\d{6}",[9,10]],0,0,0,["55\\d{8}",[10]],["84(?:[08]\\d{3}|[17])\\d{3}",[6,9]]]],"JE":["44","00","1534\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([0-24-8]\\d{5})$","1534$1",0,0,[["1534[0-24-8]\\d{5}"],["7(?:(?:(?:50|82)9|937)\\d|7(?:00[378]|97[7-9]))\\d{5}"],["80(?:07(?:35|81)|8901)\\d{4}"],["(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\d{4}"],["701511\\d{4}"],0,["(?:3(?:0(?:07(?:35|81)|8901)|3\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\d{4})\\d{4}"],["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}"],["56\\d{8}"]]],"JM":["1","011","(?:[58]\\d\\d|658|900)\\d{7}",[10],0,"1",0,0,0,0,"658|876"],"JO":["962","00","(?:(?:[2689]|7\\d)\\d|32|53)\\d{6}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2356]|87"],"(0$1)"],["(\\d{3})(\\d{5,6})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["70"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0"],"JP":["81","010","00[1-9]\\d{6,14}|[257-9]\\d{9}|(?:00|[1-9]\\d\\d)\\d{6}",[8,9,10,11,12,13,14,15,16,17],[["(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3",["(?:12|57|99)0"],"0$1"],["(\\d{4})(\\d)(\\d{4})","$1-$2-$3",["1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:80|9[16])","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2-$3",["[36]|4(?:2[09]|7[01])","[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]"],"0$1"],["(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3",["[14]|[289][2-9]|5[3-9]|7[2-4679]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["800"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[257-9]"],"0$1"]],"0"],"KE":["254","000","(?:[17]\\d\\d|900)\\d{6}|(?:2|80)0\\d{6,7}|[4-6]\\d{6,8}",[7,8,9,10],[["(\\d{2})(\\d{5,7})","$1 $2",["[24-6]"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[17]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0"],"KG":["996","00","8\\d{9}|(?:[235-8]\\d|99)\\d{7}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["3(?:1[346]|[24-79])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235-79]|88"],"0$1"],["(\\d{3})(\\d{3})(\\d)(\\d{2,3})","$1 $2 $3 $4",["8"],"0$1"]],"0"],"KH":["855","00[14-9]","1\\d{9}|[1-9]\\d{7,8}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0"],"KI":["686","00","(?:[37]\\d|6[0-79])\\d{6}|(?:[2-48]\\d|50)\\d{3}",[5,8],0,"0"],"KM":["269","00","[3478]\\d{6}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[3478]"]]]],"KN":["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","869$1",0,"869"],"KP":["850","00|99","85\\d{6}|(?:19\\d|[2-7])\\d{7}",[8,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"]],"0"],"KR":["82","00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))","00[1-9]\\d{8,11}|(?:[12]|5\\d{3})\\d{7}|[13-6]\\d{9}|(?:[1-6]\\d|80)\\d{7}|[3-6]\\d{4,5}|(?:00|7)0\\d{8}",[5,6,8,9,10,11,12,13,14],[["(\\d{2})(\\d{3,4})","$1-$2",["(?:3[1-3]|[46][1-4]|5[1-5])1"],"0$1"],["(\\d{4})(\\d{4})","$1-$2",["1"]],["(\\d)(\\d{3,4})(\\d{4})","$1-$2-$3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60|8"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1-$2-$3",["[1346]|5[1-5]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{2})(\\d{5})(\\d{4})","$1-$2-$3",["5"],"0$1"]],"0",0,"0(8(?:[1-46-8]|5\\d\\d))?"],"KW":["965","00","18\\d{5}|(?:[2569]\\d|41)\\d{6}",[7,8],[["(\\d{4})(\\d{3,4})","$1 $2",["[169]|2(?:[235]|4[1-35-9])|52"]],["(\\d{3})(\\d{5})","$1 $2",["[245]"]]]],"KY":["1","011","(?:345|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","345$1",0,"345"],"KZ":["7","810","(?:33622|8\\d{8})\\d{5}|[78]\\d{9}",[10,14],0,"8",0,0,0,0,"33|7",0,"8~10"],"LA":["856","00","[23]\\d{9}|3\\d{8}|(?:[235-8]\\d|41)\\d{6}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2[13]|3[14]|[4-8]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["30[013-9]"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[23]"],"0$1"]],"0"],"LB":["961","00","[27-9]\\d{7}|[13-9]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27-9]"]]],"0"],"LC":["1","011","(?:[58]\\d\\d|758|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","758$1",0,"758"],"LI":["423","00","[68]\\d{8}|(?:[2378]\\d|90)\\d{5}",[7,9],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[2379]|8(?:0[09]|7)","[2379]|8(?:0(?:02|9)|7)"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["69"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]],"0",0,"0|(1001)"],"LK":["94","00","[1-9]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[1-689]"],"0$1"]],"0"],"LR":["231","00","(?:2|33|5\\d|77|88)\\d{7}|[4-6]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[4-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3578]"],"0$1"]],"0"],"LS":["266","00","(?:[256]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2568]"]]]],"LT":["370","00","(?:[3469]\\d|52|[78]0)\\d{6}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["52[0-7]"],"(8-$1)",1],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[7-9]"],"8 $1",1],["(\\d{2})(\\d{6})","$1 $2",["37|4(?:[15]|6[1-8])"],"(8-$1)",1],["(\\d{3})(\\d{5})","$1 $2",["[3-6]"],"(8-$1)",1]],"8",0,"[08]"],"LU":["352","00","35[013-9]\\d{4,8}|6\\d{8}|35\\d{2,4}|(?:[2457-9]\\d|3[0-46-9])\\d{2,9}",[4,5,6,7,8,9,10,11],[["(\\d{2})(\\d{3})","$1 $2",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["20[2-689]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4",["2(?:[0367]|4[3-8])"]],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["80[01]|90[015]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["20"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4 $5",["2(?:[0367]|4[3-8])"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,5})","$1 $2 $3 $4",["[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]"]]],0,0,"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\d)"],"LV":["371","00","(?:[268]\\d|90)\\d{6}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[269]|8[01]"]]]],"LY":["218","00","[2-9]\\d{8}",[9],[["(\\d{2})(\\d{7})","$1-$2",["[2-9]"],"0$1"]],"0"],"MA":["212","00","[5-8]\\d{8}",[9],[["(\\d{5})(\\d{4})","$1-$2",["5(?:29|38)","5(?:29[89]|389)","5(?:29[89]|389)0"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5[45]"],"0$1"],["(\\d{4})(\\d{5})","$1-$2",["5(?:2[2-489]|3[5-9]|9)|892","5(?:2(?:[2-49]|8[235-9])|3[5-9]|9)|892"],"0$1"],["(\\d{2})(\\d{7})","$1-$2",["8"],"0$1"],["(\\d{3})(\\d{6})","$1-$2",["[5-7]"],"0$1"]],"0",0,0,0,0,0,[["5(?:29(?:[189][05]|2[29]|3[01])|389[05])\\d{4}|5(?:2(?:[0-25-7]\\d|3[1-578]|4[02-46-8]|8[0235-7]|90)|3(?:[0-47]\\d|5[02-9]|6[02-8]|8[08]|9[3-9])|(?:4[067]|5[03])\\d)\\d{5}"],["(?:6(?:[0-79]\\d|8[0-247-9])|7(?:[017]\\d|2[0-2]|6[0-8]|8[0-3]))\\d{6}"],["80\\d{7}"],["89\\d{7}"],0,0,0,0,["592(?:4[0-2]|93)\\d{4}"]]],"MC":["377","00","(?:[3489]|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["4"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[389]"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["6"],"0$1"]],"0"],"MD":["373","00","(?:[235-7]\\d|[89]0)\\d{6}",[8],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["22|3"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[25-7]"],"0$1"]],"0"],"ME":["382","00","(?:20|[3-79]\\d)\\d{6}|80\\d{6,7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"0$1"]],"0"],"MF":["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[["590(?:0[079]|[14]3|[27][79]|30|5[0-268]|87)\\d{4}"],["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"],["80[0-5]\\d{6}"],0,0,0,0,0,["976[01]\\d{5}"]]],"MG":["261","00","[23]\\d{8}",[9],[["(\\d{2})(\\d{2})(\\d{3})(\\d{2})","$1 $2 $3 $4",["[23]"],"0$1"]],"0",0,"0|([24-9]\\d{6})$","20$1"],"MH":["692","011","329\\d{4}|(?:[256]\\d|45)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1-$2",["[2-6]"]]],"1"],"MK":["389","00","[2-578]\\d{7}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2|34[47]|4(?:[37]7|5[47]|64)"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[347]"],"0$1"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["[58]"],"0$1"]],"0"],"ML":["223","00","[24-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24-9]"]]]],"MM":["95","00","1\\d{5,7}|95\\d{6}|(?:[4-7]|9[0-46-9])\\d{6,8}|(?:2|8\\d)\\d{5,8}",[6,7,8,9,10],[["(\\d)(\\d{2})(\\d{3})","$1 $2 $3",["16|2"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[4-7]|8[1-35]"],"0$1"],["(\\d)(\\d{3})(\\d{4,6})","$1 $2 $3",["9(?:2[0-4]|[35-9]|4[137-9])"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["92"],"0$1"],["(\\d)(\\d{5})(\\d{4})","$1 $2 $3",["9"],"0$1"]],"0"],"MN":["976","001","[12]\\d{7,9}|[5-9]\\d{7}",[8,9,10],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[12]1"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[5-9]"]],["(\\d{3})(\\d{5,6})","$1 $2",["[12]2[1-3]"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["[12](?:27|3[2-8]|4[2-68]|5[1-4689])","[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["[12]"],"0$1"]],"0"],"MO":["853","00","0800\\d{3}|(?:28|[68]\\d)\\d{6}",[7,8],[["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{4})(\\d{4})","$1 $2",["[268]"]]]],"MP":["1","011","[58]\\d{9}|(?:67|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","670$1",0,"670"],"MQ":["596","00","(?:69|80)\\d{7}|(?:59|97)6\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0"],"MR":["222","00","(?:[2-4]\\d\\d|800)\\d{5}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-48]"]]]],"MS":["1","011","(?:[58]\\d\\d|664|900)\\d{7}",[10],0,"1",0,"1|([34]\\d{6})$","664$1",0,"664"],"MT":["356","00","3550\\d{4}|(?:[2579]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2357-9]"]]]],"MU":["230","0(?:0|[24-7]0|3[03])","(?:5|8\\d\\d)\\d{7}|[2-468]\\d{6}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[2-46]|8[013]"]],["(\\d{4})(\\d{4})","$1 $2",["5"]],["(\\d{5})(\\d{5})","$1 $2",["8"]]],0,0,0,0,0,0,0,"020"],"MV":["960","0(?:0|19)","(?:800|9[0-57-9]\\d)\\d{7}|[34679]\\d{6}",[7,10],[["(\\d{3})(\\d{4})","$1-$2",["[3467]|9[13-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"]]],0,0,0,0,0,0,0,"00"],"MW":["265","00","(?:[1289]\\d|31|77)\\d{7}|1\\d{6}",[7,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["1[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[137-9]"],"0$1"]],"0"],"MX":["52","0[09]","1(?:(?:44|99)[1-9]|65[0-689])\\d{7}|(?:1(?:[017]\\d|[235][1-9]|4[0-35-9]|6[0-46-9]|8[1-79]|9[1-8])|[2-9]\\d)\\d{8}",[10,11],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["33|5[56]|81"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2-9]"],0,1],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 $3 $4",["1(?:33|5[56]|81)"],0,1],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 $3 $4",["1"],0,1]],"01",0,"0(?:[12]|4[45])|1",0,0,0,0,"00"],"MY":["60","00","1\\d{8,9}|(?:3\\d|[4-9])\\d{7}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1-$2 $3",["[4-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1-$2 $3",["1(?:[02469]|[378][1-9]|53)|8","1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2 $3",["3"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3-$4",["1(?:[367]|80)"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2 $3",["15"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2 $3",["1"],"0$1"]],"0"],"MZ":["258","00","(?:2|8\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2|8[2-79]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]]],"NA":["264","00","[68]\\d{7,8}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["87"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0"],"NC":["687","00","(?:050|[2-57-9]\\d\\d)\\d{3}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1.$2.$3",["[02-57-9]"]]]],"NE":["227","00","[027-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["08"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[089]|2[013]|7[04]"]]]],"NF":["672","00","[13]\\d{5}",[6],[["(\\d{2})(\\d{4})","$1 $2",["1[0-3]"]],["(\\d)(\\d{5})","$1 $2",["[13]"]]],0,0,"([0-258]\\d{4})$","3$1"],"NG":["234","009","(?:[124-7]|9\\d{3})\\d{6}|[1-9]\\d{7}|[78]\\d{9,13}",[7,8,10,11,12,13,14],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["78"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]|9(?:0[3-9]|[1-9])"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[3-7]|8[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["[78]"],"0$1"],["(\\d{3})(\\d{5})(\\d{5,6})","$1 $2 $3",["[78]"],"0$1"]],"0"],"NI":["505","00","(?:1800|[25-8]\\d{3})\\d{4}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[125-8]"]]]],"NL":["31","00","(?:[124-7]\\d\\d|3(?:[02-9]\\d|1[0-8]))\\d{6}|8\\d{6,9}|9\\d{6,10}|1\\d{4,5}",[5,6,7,8,9,10,11],[["(\\d{3})(\\d{4,7})","$1 $2",["[89]0"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["66"],"0$1"],["(\\d)(\\d{8})","$1 $2",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["1[16-8]|2[259]|3[124]|4[17-9]|5[124679]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-578]|91"],"0$1"],["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3",["9"],"0$1"]],"0"],"NO":["47","00","(?:0|[2-9]\\d{3})\\d{4}",[5,8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[489]|59"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[235-7]"]]],0,0,0,0,0,"[02-689]|7[0-8]"],"NP":["977","00","(?:1\\d|9)\\d{9}|[1-9]\\d{7}",[8,10,11],[["(\\d)(\\d{7})","$1-$2",["1[2-6]"],"0$1"],["(\\d{2})(\\d{6})","$1-$2",["1[01]|[2-8]|9(?:[1-59]|[67][2-6])"],"0$1"],["(\\d{3})(\\d{7})","$1-$2",["9"]]],"0"],"NR":["674","00","(?:444|(?:55|8\\d)\\d|666)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[4-68]"]]]],"NU":["683","00","(?:[47]|888\\d)\\d{3}",[4,7],[["(\\d{3})(\\d{4})","$1 $2",["8"]]]],"NZ":["64","0(?:0|161)","[29]\\d{7,9}|50\\d{5}(?:\\d{2,3})?|6[0-35-9]\\d{6}|7\\d{7,8}|8\\d{4,9}|(?:11\\d|[34])\\d{7}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,8})","$1 $2",["8[1-579]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["50[036-8]|[89]0","50(?:[0367]|88)|[89]0"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["24|[346]|7[2-57-9]|9[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:10|74)|[59]|80"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1|2[028]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,5})","$1 $2 $3",["2(?:[169]|7[0-35-9])|7|86"],"0$1"]],"0",0,0,0,0,0,0,"00"],"OM":["968","00","(?:1505|[279]\\d{3}|500)\\d{4}|800\\d{5,6}",[7,8,9],[["(\\d{3})(\\d{4,6})","$1 $2",["[58]"]],["(\\d{2})(\\d{6})","$1 $2",["2"]],["(\\d{4})(\\d{4})","$1 $2",["[179]"]]]],"PA":["507","00","(?:00800|8\\d{3})\\d{6}|[68]\\d{7}|[1-57-9]\\d{6}",[7,8,10,11],[["(\\d{3})(\\d{4})","$1-$2",["[1-57-9]"]],["(\\d{4})(\\d{4})","$1-$2",["[68]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]]],"PE":["51","00|19(?:1[124]|77|90)00","(?:[14-8]|9\\d)\\d{7}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["80"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["1"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[4-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"]]],"0",0,0,0,0,0,0,"00"," Anexo "],"PF":["689","00","4\\d{5}(?:\\d{2})?|8\\d{7,8}",[6,8,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["44"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4|8[7-9]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]]],"PG":["675","00|140[1-3]","(?:180|[78]\\d{3})\\d{4}|(?:[2-589]\\d|64)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["18|[2-69]|85"]],["(\\d{4})(\\d{4})","$1 $2",["[78]"]]],0,0,0,0,0,0,0,"00"],"PH":["63","00","(?:[2-7]|9\\d)\\d{8}|2\\d{5}|(?:1800|8)\\d{7,9}",[6,8,9,10,11,12,13],[["(\\d)(\\d{5})","$1 $2",["2"],"(0$1)"],["(\\d{4})(\\d{4,6})","$1 $2",["3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2","3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))"],"(0$1)"],["(\\d{5})(\\d{4})","$1 $2",["346|4(?:27|9[35])|883","3469|4(?:279|9(?:30|56))|8834"],"(0$1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3-7]|8[2-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{4})(\\d{1,2})(\\d{3})(\\d{4})","$1 $2 $3 $4",["1"]]],"0"],"PK":["92","00","122\\d{6}|[24-8]\\d{10,11}|9(?:[013-9]\\d{8,10}|2(?:[01]\\d\\d|2(?:[06-8]\\d|1[01]))\\d{7})|(?:[2-8]\\d{3}|92(?:[0-7]\\d|8[1-9]))\\d{6}|[24-9]\\d{8}|[89]\\d{7}",[8,9,10,11,12],[["(\\d{3})(\\d{3})(\\d{2,7})","$1 $2 $3",["[89]0"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["1"]],["(\\d{3})(\\d{6,7})","$1 $2",["2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])","9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]"],"(0$1)"],["(\\d{2})(\\d{7,8})","$1 $2",["(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]"],"(0$1)"],["(\\d{5})(\\d{5})","$1 $2",["58"],"(0$1)"],["(\\d{3})(\\d{7})","$1 $2",["3"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[24-9]"],"(0$1)"]],"0"],"PL":["48","00","(?:6|8\\d\\d)\\d{7}|[1-9]\\d{6}(?:\\d{2})?|[26]\\d{5}",[6,7,8,9,10],[["(\\d{5})","$1",["19"]],["(\\d{3})(\\d{3})","$1 $2",["11|20|64"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1","(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19"]],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["64"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[2-8]|[2-7]|8[1-79]|9[145]"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["8"]]]],"PM":["508","00","(?:[45]|80\\d\\d)\\d{5}",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[45]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0"],"PR":["1","011","(?:[589]\\d\\d|787)\\d{7}",[10],0,"1",0,0,0,0,"787|939"],"PS":["970","00","[2489]2\\d{6}|(?:1\\d|5)\\d{8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2489]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["5"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0"],"PT":["351","00","1693\\d{5}|(?:[26-9]\\d|30)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["2[12]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["16|[236-9]"]]]],"PW":["680","01[12]","(?:[24-8]\\d\\d|345|900)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]]],"PY":["595","00","59\\d{4,6}|9\\d{5,10}|(?:[2-46-8]\\d|5[0-8])\\d{4,7}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3,6})","$1 $2",["[2-9]0"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]"],"(0$1)"],["(\\d{3})(\\d{4,5})","$1 $2",["2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["87"]],["(\\d{3})(\\d{6})","$1 $2",["9(?:[5-79]|8[1-6])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["9"]]],"0"],"QA":["974","00","[2-7]\\d{7}|800\\d{4}(?:\\d{2})?|2\\d{6}",[7,8,9],[["(\\d{3})(\\d{4})","$1 $2",["2[126]|8"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]]]],"RE":["262","00","976\\d{6}|(?:26|[68]\\d)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2689]"],"0$1"]],"0",0,0,0,0,"26[23]|69|[89]"],"RO":["40","00","(?:[2378]\\d|90)\\d{7}|[23]\\d{5}",[6,9],[["(\\d{3})(\\d{3})","$1 $2",["2[3-6]","2[3-6]\\d9"],"0$1"],["(\\d{2})(\\d{4})","$1 $2",["219|31"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[23]1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[237-9]"],"0$1"]],"0",0,0,0,0,0,0,0," int "],"RS":["381","00","38[02-9]\\d{6,9}|6\\d{7,9}|90\\d{4,8}|38\\d{5,6}|(?:7\\d\\d|800)\\d{3,9}|(?:[12]\\d|3[0-79])\\d{5,10}",[6,7,8,9,10,11,12],[["(\\d{3})(\\d{3,9})","$1 $2",["(?:2[389]|39)0|[7-9]"],"0$1"],["(\\d{2})(\\d{5,10})","$1 $2",["[1-36]"],"0$1"]],"0"],"RU":["7","810","8\\d{13}|[347-9]\\d{9}",[10,14],[["(\\d{4})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-8]|2[1-9])","7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))","7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2"],"8 ($1)",1],["(\\d{5})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-68]|2[1-9])","7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))","7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[349]|8(?:[02-7]|1[1-8])"],"8 ($1)",1],["(\\d{4})(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3 $4",["8"],"8 ($1)"]],"8",0,0,0,0,"3[04-689]|[489]",0,"8~10"],"RW":["250","00","(?:06|[27]\\d\\d|[89]00)\\d{6}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"]]],"0"],"SA":["966","00","92\\d{7}|(?:[15]|8\\d)\\d{8}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["9"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["81"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]],"0"],"SB":["677","0[01]","(?:[1-6]|[7-9]\\d\\d)\\d{4}",[5,7],[["(\\d{2})(\\d{5})","$1 $2",["7|8[4-9]|9(?:[1-8]|9[0-8])"]]]],"SC":["248","010|0[0-2]","800\\d{4}|(?:[249]\\d|64)\\d{5}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[246]|9[57]"]]],0,0,0,0,0,0,0,"00"],"SD":["249","00","[19]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[19]"],"0$1"]],"0"],"SE":["46","00","(?:[26]\\d\\d|9)\\d{9}|[1-9]\\d{8}|[1-689]\\d{7}|[1-4689]\\d{6}|2\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{2,3})(\\d{2})","$1-$2 $3",["20"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{4})","$1-$2",["9(?:00|39|44|9)"],"0$1",0,"$1 $2"],["(\\d{2})(\\d{3})(\\d{2})","$1-$2 $3",["[12][136]|3[356]|4[0246]|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3"],["(\\d)(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2,3})(\\d{2})","$1-$2 $3",["1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{2,3})(\\d{3})","$1-$2 $3",["9(?:00|39|44)"],"0$1",0,"$1 $2 $3"],["(\\d{2})(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3 $4"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["10|7"],"0$1",0,"$1 $2 $3 $4"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1-$2 $3 $4",["[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{3})","$1-$2 $3 $4",["9"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4 $5",["[26]"],"0$1",0,"$1 $2 $3 $4 $5"]],"0"],"SG":["65","0[0-3]\\d","(?:(?:1\\d|8)\\d\\d|7000)\\d{7}|[3689]\\d{7}",[8,10,11],[["(\\d{4})(\\d{4})","$1 $2",["[369]|8(?:0[1-5]|[1-9])"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]],["(\\d{4})(\\d{4})(\\d{3})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]]],"SH":["290","00","(?:[256]\\d|8)\\d{3}",[4,5],0,0,0,0,0,0,"[256]"],"SI":["386","00|10(?:22|66|88|99)","[1-7]\\d{7}|8\\d{4,7}|90\\d{4,6}",[5,6,7,8],[["(\\d{2})(\\d{3,6})","$1 $2",["8[09]|9"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["59|8"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37][01]|4[0139]|51|6"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-57]"],"(0$1)"]],"0",0,0,0,0,0,0,"00"],"SJ":["47","00","0\\d{4}|(?:[489]\\d|[57]9)\\d{6}",[5,8],0,0,0,0,0,0,"79"],"SK":["421","00","[2-689]\\d{8}|[2-59]\\d{6}|[2-5]\\d{5}",[6,7,9],[["(\\d)(\\d{2})(\\d{3,4})","$1 $2 $3",["21"],"0$1"],["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["[3-5][1-8]1","[3-5][1-8]1[67]"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1/$2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[689]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1/$2 $3 $4",["[3-5]"],"0$1"]],"0"],"SL":["232","00","(?:[237-9]\\d|66)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[236-9]"],"(0$1)"]],"0"],"SM":["378","00","(?:0549|[5-7]\\d)\\d{6}",[8,10],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-7]"]],["(\\d{4})(\\d{6})","$1 $2",["0"]]],0,0,"([89]\\d{5})$","0549$1"],"SN":["221","00","(?:[378]\\d|93)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[379]"]]]],"SO":["252","00","[346-9]\\d{8}|[12679]\\d{7}|[1-5]\\d{6}|[1348]\\d{5}",[6,7,8,9],[["(\\d{2})(\\d{4})","$1 $2",["8[125]"]],["(\\d{6})","$1",["[134]"]],["(\\d)(\\d{6})","$1 $2",["[15]|2[0-79]|3[0-46-8]|4[0-7]"]],["(\\d)(\\d{7})","$1 $2",["24|[67]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3478]|64|90"]],["(\\d{2})(\\d{5,7})","$1 $2",["1|28|6(?:0[5-7]|[1-35-9])|9[2-9]"]]],"0"],"SR":["597","00","(?:[2-5]|68|[78]\\d)\\d{5}",[6,7],[["(\\d{2})(\\d{2})(\\d{2})","$1-$2-$3",["56"]],["(\\d{3})(\\d{3})","$1-$2",["[2-5]"]],["(\\d{3})(\\d{4})","$1-$2",["[6-8]"]]]],"SS":["211","00","[19]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[19]"],"0$1"]],"0"],"ST":["239","00","(?:22|9\\d)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[29]"]]]],"SV":["503","00","[267]\\d{7}|[89]00\\d{4}(?:\\d{4})?",[7,8,11],[["(\\d{3})(\\d{4})","$1 $2",["[89]"]],["(\\d{4})(\\d{4})","$1 $2",["[267]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[89]"]]]],"SX":["1","011","7215\\d{6}|(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|(5\\d{6})$","721$1",0,"721"],"SY":["963","00","[1-39]\\d{8}|[1-5]\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-5]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1",1]],"0"],"SZ":["268","00","0800\\d{4}|(?:[237]\\d|900)\\d{6}",[8,9],[["(\\d{4})(\\d{4})","$1 $2",["[0237]"]],["(\\d{5})(\\d{4})","$1 $2",["9"]]]],"TA":["290","00","8\\d{3}",[4],0,0,0,0,0,0,"8"],"TC":["1","011","(?:[58]\\d\\d|649|900)\\d{7}",[10],0,"1",0,"1|([2-479]\\d{6})$","649$1",0,"649"],"TD":["235","00|16","(?:22|[69]\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2679]"]]],0,0,0,0,0,0,0,"00"],"TG":["228","00","[279]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[279]"]]]],"TH":["66","00[1-9]","(?:001800|[2-57]|[689]\\d)\\d{7}|1\\d{7,9}",[8,9,10,13],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[13-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0"],"TJ":["992","810","(?:00|[1-57-9]\\d)\\d{7}",[9],[["(\\d{6})(\\d)(\\d{2})","$1 $2 $3",["331","3317"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[34]7|91[78]"]],["(\\d{4})(\\d)(\\d{4})","$1 $2 $3",["3[1-5]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[0-57-9]"]]],0,0,0,0,0,0,0,"8~10"],"TK":["690","00","[2-47]\\d{3,6}",[4,5,6,7]],"TL":["670","00","7\\d{7}|(?:[2-47]\\d|[89]0)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[2-489]|70"]],["(\\d{4})(\\d{4})","$1 $2",["7"]]]],"TM":["993","810","[1-6]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["12"],"(8 $1)"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-5]"],"(8 $1)"],["(\\d{2})(\\d{6})","$1 $2",["6"],"8 $1"]],"8",0,0,0,0,0,0,"8~10"],"TN":["216","00","[2-57-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-57-9]"]]]],"TO":["676","00","(?:0800|(?:[5-8]\\d\\d|999)\\d)\\d{3}|[2-8]\\d{4}",[5,7],[["(\\d{2})(\\d{3})","$1-$2",["[2-4]|50|6[09]|7[0-24-69]|8[05]"]],["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{3})(\\d{4})","$1 $2",["[5-9]"]]]],"TR":["90","00","4\\d{6}|8\\d{11,12}|(?:[2-58]\\d\\d|900)\\d{7}",[7,10,12,13],[["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["512|8[01589]|90"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5(?:[0-59]|61)","5(?:[0-59]|616)","5(?:[0-59]|6161)"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24][1-8]|3[1-9]"],"(0$1)",1],["(\\d{3})(\\d{3})(\\d{6,7})","$1 $2 $3",["80"],"0$1",1]],"0"],"TT":["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-46-8]\\d{6})$","868$1",0,"868"],"TV":["688","00","(?:2|7\\d\\d|90)\\d{4}",[5,6,7],[["(\\d{2})(\\d{3})","$1 $2",["2"]],["(\\d{2})(\\d{4})","$1 $2",["90"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]]],"TW":["886","0(?:0[25-79]|19)","[2-689]\\d{8}|7\\d{9,10}|[2-8]\\d{7}|2\\d{6}",[7,8,9,10,11],[["(\\d{2})(\\d)(\\d{4})","$1 $2 $3",["202"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[258]0"],"0$1"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]","[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,5})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,0,0,"#"],"TZ":["255","00[056]","(?:[25-8]\\d|41|90)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[24]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["5"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[67]"],"0$1"]],"0"],"UA":["380","00","[89]\\d{9}|[3-9]\\d{8}",[9,10],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]","6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])","3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3-7]|89|9[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,0,"0~0"],"UG":["256","00[057]","800\\d{6}|(?:[29]0|[347]\\d)\\d{7}",[9],[["(\\d{4})(\\d{5})","$1 $2",["202","2024"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[27-9]|4(?:6[45]|[7-9])"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[34]"],"0$1"]],"0"],"US":["1","011","[2-9]\\d{9}|3\\d{6}",[10],[["(\\d{3})(\\d{4})","$1-$2",["310"],0,1],["(\\d{3})(\\d{3})(\\d{4})","($1) $2-$3",["[2-9]"],0,1,"$1-$2-$3"]],"1",0,0,0,0,0,[["505(?:[2-57-9]\\d\\d|6(?:[0-35-9]\\d|44))\\d{4}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[01679]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[068]|3[0-289]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-389]|8[04-69]))[2-9]\\d{6}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"],["900[2-9]\\d{6}"],["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-7]|33|44|66|77|88)[2-9]\\d{6}"]]],"UY":["598","0(?:0|1[3-9]\\d)","4\\d{9}|[1249]\\d{7}|(?:[49]\\d|80)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["405|8|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[124]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["4"],"0$1"]],"0",0,0,0,0,0,0,"00"," int. "],"UZ":["998","810","(?:33|55|[679]\\d|88)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[35-9]"],"8 $1"]],"8",0,0,0,0,0,0,"8~10"],"VA":["39","00","0\\d{5,10}|3[0-8]\\d{7,10}|55\\d{8}|8\\d{5}(?:\\d{2,4})?|(?:1\\d|39)\\d{7,8}",[6,7,8,9,10,11],0,0,0,0,0,0,"06698"],"VC":["1","011","(?:[58]\\d\\d|784|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","784$1",0,"784"],"VE":["58","00","[68]00\\d{7}|(?:[24]\\d|[59]0)\\d{8}",[10],[["(\\d{3})(\\d{7})","$1-$2",["[24-689]"],"0$1"]],"0"],"VG":["1","011","(?:284|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-578]\\d{6})$","284$1",0,"284"],"VI":["1","011","[58]\\d{9}|(?:34|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","340$1",0,"340"],"VN":["84","00","[12]\\d{9}|[135-9]\\d{8}|[16]\\d{7}|[16-8]\\d{6}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["80"],"0$1",1],["(\\d{4})(\\d{4,6})","$1 $2",["1"],0,1],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[69]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3578]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["2[48]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["2"],"0$1",1]],"0"],"VU":["678","00","[57-9]\\d{6}|(?:[238]\\d|48)\\d{3}",[5,7],[["(\\d{3})(\\d{4})","$1 $2",["[57-9]"]]]],"WF":["681","00","(?:40|72)\\d{4}|8\\d{5}(?:\\d{3})?",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[478]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]]],"WS":["685","0","(?:[2-6]|8\\d{5})\\d{4}|[78]\\d{6}|[68]\\d{5}",[5,6,7,10],[["(\\d{5})","$1",["[2-5]|6[1-9]"]],["(\\d{3})(\\d{3,7})","$1 $2",["[68]"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]]],"XK":["383","00","[23]\\d{7,8}|(?:4\\d\\d|[89]00)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[23]"],"0$1"]],"0"],"YE":["967","00","(?:1|7\\d)\\d{7}|[1-7]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-6]|7[24-68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["7"],"0$1"]],"0"],"YT":["262","00","80\\d{7}|(?:26|63)9\\d{6}",[9],0,"0",0,0,0,0,"269|63"],"ZA":["27","00","[1-79]\\d{8}|8\\d{4,9}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,4})","$1 $2",["8[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["8[1-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["860"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0"],"ZM":["260","00","800\\d{6}|(?:21|63|[79]\\d)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[28]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[79]"],"0$1"]],"0"],"ZW":["263","00","2(?:[0-57-9]\\d{6,8}|6[0-24-9]\\d{6,7})|[38]\\d{9}|[35-8]\\d{8}|[3-6]\\d{7}|[1-689]\\d{6}|[1-3569]\\d{5}|[1356]\\d{4}",[5,6,7,8,9,10],[["(\\d{3})(\\d{3,5})","$1 $2",["2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]"],"0$1"],["(\\d)(\\d{3})(\\d{2,4})","$1 $2 $3",["[49]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["80"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2","2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)","2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["29[013-9]|39|54"],"0$1"],["(\\d{4})(\\d{3,5})","$1 $2",["(?:25|54)8","258|5483"],"0$1"]],"0"]},"nonGeographic":{"800":["800",0,"(?:00|[1-9]\\d)\\d{6}",[8],[["(\\d{4})(\\d{4})","$1 $2",["\\d"]]],0,0,0,0,0,0,[0,0,["(?:00|[1-9]\\d)\\d{6}"]]],"808":["808",0,"[1-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[1-9]"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,["[1-9]\\d{7}"]]],"870":["870",0,"7\\d{11}|[35-7]\\d{8}",[9,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[35-7]"]]],0,0,0,0,0,0,[0,["(?:[356]|774[45])\\d{8}|7[6-8]\\d{7}"]]],"878":["878",0,"10\\d{10}",[12],[["(\\d{2})(\\d{5})(\\d{5})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["10\\d{10}"]]],"881":["881",0,"[0-36-9]\\d{8}",[9],[["(\\d)(\\d{3})(\\d{5})","$1 $2 $3",["[0-36-9]"]]],0,0,0,0,0,0,[0,["[0-36-9]\\d{8}"]]],"882":["882",0,"[13]\\d{6}(?:\\d{2,5})?|285\\d{9}|(?:[19]\\d|49)\\d{6}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5})","$1 $2",["16|342"]],["(\\d{2})(\\d{6})","$1 $2",["4"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[19]"]],["(\\d{2})(\\d{4})(\\d{3})","$1 $2 $3",["3[23]"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["34[57]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["34"]],["(\\d{2})(\\d{4,5})(\\d{5})","$1 $2 $3",["[1-3]"]]],0,0,0,0,0,0,[0,["342\\d{4}|(?:337|49)\\d{6}|3(?:2|47|7\\d{3})\\d{7}",[7,8,9,10,12]],0,0,0,0,0,0,["1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\d{4}|6\\d{5,10})|(?:(?:285\\d\\d|3(?:45|[69]\\d{3}))\\d|9[89])\\d{6}"]]],"883":["883",0,"(?:210|370\\d\\d)\\d{7}|51\\d{7}(?:\\d{3})?",[9,10,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["510"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["2"]],["(\\d{4})(\\d{4})(\\d{4})","$1 $2 $3",["51[13]"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[35]"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["(?:210|(?:370[1-9]|51[013]0)\\d)\\d{7}|5100\\d{5}"]]],"888":["888",0,"\\d{11}",[11],[["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3"]],0,0,0,0,0,0,[0,0,0,0,0,0,["\\d{11}"]]],"979":["979",0,"[1359]\\d{8}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[1359]"]]],0,0,0,0,0,0,[0,0,0,["[1359]\\d{8}"]]]}} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.mobile.json b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.mobile.json new file mode 100644 index 00000000..c5057261 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.mobile.json @@ -0,0 +1 @@ +{"version":4,"country_calling_codes":{"1":["US","AG","AI","AS","BB","BM","BS","CA","DM","DO","GD","GU","JM","KN","KY","LC","MP","MS","PR","SX","TC","TT","VC","VG","VI"],"7":["RU","KZ"],"20":["EG"],"27":["ZA"],"30":["GR"],"31":["NL"],"32":["BE"],"33":["FR"],"34":["ES"],"36":["HU"],"39":["IT","VA"],"40":["RO"],"41":["CH"],"43":["AT"],"44":["GB","GG","IM","JE"],"45":["DK"],"46":["SE"],"47":["NO","SJ"],"48":["PL"],"49":["DE"],"51":["PE"],"52":["MX"],"53":["CU"],"54":["AR"],"55":["BR"],"56":["CL"],"57":["CO"],"58":["VE"],"60":["MY"],"61":["AU","CC","CX"],"62":["ID"],"63":["PH"],"64":["NZ"],"65":["SG"],"66":["TH"],"81":["JP"],"82":["KR"],"84":["VN"],"86":["CN"],"90":["TR"],"91":["IN"],"92":["PK"],"93":["AF"],"94":["LK"],"95":["MM"],"98":["IR"],"211":["SS"],"212":["MA","EH"],"213":["DZ"],"216":["TN"],"218":["LY"],"220":["GM"],"221":["SN"],"222":["MR"],"223":["ML"],"224":["GN"],"225":["CI"],"226":["BF"],"227":["NE"],"228":["TG"],"229":["BJ"],"230":["MU"],"231":["LR"],"232":["SL"],"233":["GH"],"234":["NG"],"235":["TD"],"236":["CF"],"237":["CM"],"238":["CV"],"239":["ST"],"240":["GQ"],"241":["GA"],"242":["CG"],"243":["CD"],"244":["AO"],"245":["GW"],"246":["IO"],"247":["AC"],"248":["SC"],"249":["SD"],"250":["RW"],"251":["ET"],"252":["SO"],"253":["DJ"],"254":["KE"],"255":["TZ"],"256":["UG"],"257":["BI"],"258":["MZ"],"260":["ZM"],"261":["MG"],"262":["RE","YT"],"263":["ZW"],"264":["NA"],"265":["MW"],"266":["LS"],"267":["BW"],"268":["SZ"],"269":["KM"],"290":["SH","TA"],"291":["ER"],"297":["AW"],"298":["FO"],"299":["GL"],"350":["GI"],"351":["PT"],"352":["LU"],"353":["IE"],"354":["IS"],"355":["AL"],"356":["MT"],"357":["CY"],"358":["FI","AX"],"359":["BG"],"370":["LT"],"371":["LV"],"372":["EE"],"373":["MD"],"374":["AM"],"375":["BY"],"376":["AD"],"377":["MC"],"378":["SM"],"380":["UA"],"381":["RS"],"382":["ME"],"383":["XK"],"385":["HR"],"386":["SI"],"387":["BA"],"389":["MK"],"420":["CZ"],"421":["SK"],"423":["LI"],"500":["FK"],"501":["BZ"],"502":["GT"],"503":["SV"],"504":["HN"],"505":["NI"],"506":["CR"],"507":["PA"],"508":["PM"],"509":["HT"],"590":["GP","BL","MF"],"591":["BO"],"592":["GY"],"593":["EC"],"594":["GF"],"595":["PY"],"596":["MQ"],"597":["SR"],"598":["UY"],"599":["CW","BQ"],"670":["TL"],"672":["NF"],"673":["BN"],"674":["NR"],"675":["PG"],"676":["TO"],"677":["SB"],"678":["VU"],"679":["FJ"],"680":["PW"],"681":["WF"],"682":["CK"],"683":["NU"],"685":["WS"],"686":["KI"],"687":["NC"],"688":["TV"],"689":["PF"],"690":["TK"],"691":["FM"],"692":["MH"],"850":["KP"],"852":["HK"],"853":["MO"],"855":["KH"],"856":["LA"],"880":["BD"],"886":["TW"],"960":["MV"],"961":["LB"],"962":["JO"],"963":["SY"],"964":["IQ"],"965":["KW"],"966":["SA"],"967":["YE"],"968":["OM"],"970":["PS"],"971":["AE"],"972":["IL"],"973":["BH"],"974":["QA"],"975":["BT"],"976":["MN"],"977":["NP"],"992":["TJ"],"993":["TM"],"994":["AZ"],"995":["GE"],"996":["KG"],"998":["UZ"]},"countries":{"AC":["247","00","(?:[01589]\\d|[46])\\d{4}",[5,6],0,0,0,0,0,0,0,[0,["4\\d{4}",[5]]]],"AD":["376","00","(?:1|6\\d)\\d{7}|[135-9]\\d{5}",[6,8,9],[["(\\d{3})(\\d{3})","$1 $2",["[135-9]"]],["(\\d{4})(\\d{4})","$1 $2",["1"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]],0,0,0,0,0,0,[0,["690\\d{6}|[356]\\d{5}",[6,9]]]],"AE":["971","00","(?:[4-7]\\d|9[0-689])\\d{7}|800\\d{2,9}|[2-4679]\\d{7}",[5,6,7,8,9,10,11,12],[["(\\d{3})(\\d{2,9})","$1 $2",["60|8"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[236]|[479][2-8]"],"0$1"],["(\\d{3})(\\d)(\\d{5})","$1 $2 $3",["[479]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"]],"0",0,0,0,0,0,[0,["5[024-68]\\d{7}",[9]]]],"AF":["93","00","[2-7]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"]],"0",0,0,0,0,0,[0,["7\\d{8}"]]],"AG":["1","011","(?:268|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([457]\\d{6})$","268$1",0,"268",[0,["268(?:464|7(?:1[3-9]|[28]\\d|3[0246]|64|7[0-689]))\\d{4}"]]],"AI":["1","011","(?:264|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2457]\\d{6})$","264$1",0,"264",[0,["264(?:235|4(?:69|76)|5(?:3[6-9]|8[1-4])|7(?:29|72))\\d{4}"]]],"AL":["355","00","(?:700\\d\\d|900)\\d{3}|8\\d{5,7}|(?:[2-5]|6\\d)\\d{7}",[6,7,8,9],[["(\\d{3})(\\d{3,4})","$1 $2",["80|9"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["4[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2358][2-5]|4"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["[23578]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["6"],"0$1"]],"0",0,0,0,0,0,[0,["6(?:[78][2-9]|9\\d)\\d{6}",[9]]]],"AM":["374","00","(?:[1-489]\\d|55|60|77)\\d{6}",[8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[89]0"],"0 $1"],["(\\d{3})(\\d{5})","$1 $2",["2|3[12]"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["1|47"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[3-9]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:33|4[1349]|55|77|88|9[13-9])\\d{6}"]]],"AO":["244","00","[29]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[29]"]]],0,0,0,0,0,0,[0,["9[1-59]\\d{7}"]]],"AR":["54","00","(?:11|[89]\\d\\d)\\d{8}|[2368]\\d{9}",[10,11],[["(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])","2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["1"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2-$3",["[23]"],"0$1",1],["(\\d)(\\d{4})(\\d{2})(\\d{4})","$2 15-$3-$4",["9(?:2[2-469]|3[3-578])","9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))","9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",0,"$1 $2 $3-$4"],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 15-$3-$4",["91"],"0$1",0,"$1 $2 $3-$4"],["(\\d{3})(\\d{3})(\\d{5})","$1-$2-$3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 15-$3-$4",["9"],"0$1",0,"$1 $2 $3-$4"]],"0",0,"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?","9$1",0,0,[0,["93(?:7(?:1[15]|81)[46]|8(?:(?:21|4[16]|69|9[12])[46]|88[013-9]))\\d{5}|9(?:29(?:54|66)|3(?:7(?:55|77)|865))[2-8]\\d{5}|9(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|473|9(?:[07]2|2[26]|34|46))|3327)[45]\\d{5}|9(?:2(?:284|3(?:02|23)|657|920)|3(?:4(?:8[27]|92)|541|878))[2-7]\\d{5}|9(?:2(?:(?:26|62)2|320|477|9(?:42|83))|3(?:329|4(?:[47]6|62|89)|564))[2-6]\\d{5}|(?:675\\d|9(?:11[1-8]\\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-7]|[235][4-6]|84)|5(?:1[2-9]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:0[45]|[17][2-6]|3[4-6]|[58][3-6]))))\\d{6}|92(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|475|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\d{5}|9(?:2(?:2(?:57|81)|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|71)|5(?:25|37|4[347]|71)|7(?:18|5[17])))[3-6]\\d{5}|9(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[03-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[145]|4[13]|5[468]|7[2-5]|8[26])|8(?:2[5-7]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\d{5}"]]],"AS":["1","011","(?:[58]\\d\\d|684|900)\\d{7}",[10],0,"1",0,"1|([267]\\d{6})$","684$1",0,"684",[0,["684(?:2(?:48|5[2468]|72)|7(?:3[13]|70|82))\\d{4}"]]],"AT":["43","00","1\\d{3,12}|2\\d{6,12}|43(?:(?:0\\d|5[02-9])\\d{3,9}|2\\d{4,5}|[3467]\\d{4}|8\\d{4,6}|9\\d{4,7})|5\\d{4,12}|8\\d{7,12}|9\\d{8,12}|(?:[367]\\d|4[0-24-9])\\d{4,11}",[4,5,6,7,8,9,10,11,12,13],[["(\\d)(\\d{3,12})","$1 $2",["1(?:11|[2-9])"],"0$1"],["(\\d{3})(\\d{2})","$1 $2",["517"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["5[079]"],"0$1"],["(\\d{3})(\\d{3,10})","$1 $2",["(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]"],"0$1"],["(\\d{4})(\\d{3,9})","$1 $2",["[2-467]|5[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["5"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,7})","$1 $2 $3",["5"],"0$1"]],"0",0,0,0,0,0,[0,["6(?:5[0-3579]|6[013-9]|[7-9]\\d)\\d{4,10}",[7,8,9,10,11,12,13]]]],"AU":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{7}(?:\\d(?:\\d{2})?)?|8[0-24-9]\\d{7})|[2-478]\\d{8}|1\\d{4,7}",[5,6,7,8,9,10,12],[["(\\d{2})(\\d{3,4})","$1 $2",["16"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,4})","$1 $2 $3",["16"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["14|4"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[2378]"],"(0$1)"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:30|[89])"]]],"0",0,"0|(183[12])",0,0,0,[0,["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]]],"0011"],"AW":["297","00","(?:[25-79]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[25-9]"]]],0,0,0,0,0,0,[0,["(?:290|5[69]\\d|6(?:[03]0|22|4[0-2]|[69]\\d)|7(?:[34]\\d|7[07])|9(?:6[45]|9[4-8]))\\d{4}"]]],"AX":["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","2\\d{4,9}|35\\d{4,5}|(?:60\\d\\d|800)\\d{4,6}|7\\d{5,11}|(?:[14]\\d|3[0-46-9]|50)\\d{4,8}",[5,6,7,8,9,10,11,12],0,"0",0,0,0,0,"18",[0,["4946\\d{2,6}|(?:4[0-8]|50)\\d{4,8}",[6,7,8,9,10]]],"00"],"AZ":["994","00","365\\d{6}|(?:[124579]\\d|60|88)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[28]|2|365|46","1[28]|2|365[45]|46","1[28]|2|365(?:4|5[02])|46"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[13-9]"],"0$1"]],"0",0,0,0,0,0,[0,["36554\\d{4}|(?:[16]0|4[04]|5[015]|7[07]|99)\\d{7}"]]],"BA":["387","00","6\\d{8}|(?:[35689]\\d|49|70)\\d{6}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["6[1-3]|[7-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2-$3",["[3-5]|6[56]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["6"],"0$1"]],"0",0,0,0,0,0,[0,["6040\\d{5}|6(?:03|[1-356]|44|7\\d)\\d{6}"]]],"BB":["1","011","(?:246|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","246$1",0,"246",[0,["246(?:(?:2(?:[3568]\\d|4[0-57-9])|3(?:5[2-9]|6[0-6])|4(?:46|5\\d)|69[5-7]|8(?:[2-5]\\d|83))\\d|52(?:1[147]|20))\\d{3}"]]],"BD":["880","00","[1-469]\\d{9}|8[0-79]\\d{7,8}|[2-79]\\d{8}|[2-9]\\d{7}|[3-9]\\d{6}|[57-9]\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{4,6})","$1-$2",["31[5-8]|[459]1"],"0$1"],["(\\d{3})(\\d{3,7})","$1-$2",["3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:28|4[14]|5)|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]"],"0$1"],["(\\d{4})(\\d{3,6})","$1-$2",["[13-9]|22"],"0$1"],["(\\d)(\\d{7,8})","$1-$2",["2"],"0$1"]],"0",0,0,0,0,0,[0,["(?:1[13-9]\\d|644)\\d{7}|(?:3[78]|44|66)[02-9]\\d{7}",[10]]]],"BE":["32","00","4\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:80|9)0"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[239]|4[23]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[15-8]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4"],"0$1"]],"0",0,0,0,0,0,[0,["4[5-9]\\d{7}",[9]]]],"BF":["226","00","[025-7]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[025-7]"]]],0,0,0,0,0,0,[0,["(?:0[1-35-7]|5[1-8]|[67]\\d)\\d{6}"]]],"BG":["359","00","[2-7]\\d{6,7}|[89]\\d{6,8}|2\\d{5}",[6,7,8,9],[["(\\d)(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["43[1-6]|70[1-9]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:70|8)0"],"0$1"],["(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3",["43[1-7]|7"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[48]|9[08]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"]],"0",0,0,0,0,0,[0,["(?:43[07-9]|99[69]\\d)\\d{5}|(?:8[7-9]|98)\\d{7}",[8,9]]]],"BH":["973","00","[136-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[13679]|8[047]"]]],0,0,0,0,0,0,[0,["(?:3(?:[1-79]\\d|8[0-47-9])\\d|6(?:3(?:00|33|6[16])|6(?:3[03-9]|[69]\\d|7[0-6])))\\d{4}"]]],"BI":["257","00","(?:[267]\\d|31)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2367]"]]],0,0,0,0,0,0,[0,["(?:29|6[1257-9]|7[125-9])\\d{6}"]]],"BJ":["229","00","(?:[25689]\\d|40)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24-689]"]]],0,0,0,0,0,0,[0,["(?:40|5[1-9]|6\\d|9[013-9])\\d{6}"]]],"BL":["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[0,["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"]]],"BM":["1","011","(?:441|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","441$1",0,"441",[0,["441(?:[2378]\\d|5[0-39])\\d{5}"]]],"BN":["673","00","[2-578]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-578]"]]],0,0,0,0,0,0,[0,["(?:22[89]|[78]\\d\\d)\\d{4}"]]],"BO":["591","00(?:1\\d)?","(?:[2-467]\\d\\d|8001)\\d{5}",[8,9],[["(\\d)(\\d{7})","$1 $2",["[23]|4[46]"]],["(\\d{8})","$1",["[67]"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["8"]]],"0",0,"0(1\\d)?",0,0,0,[0,["[67]\\d{7}",[8]]]],"BQ":["599","00","(?:[34]1|7\\d)\\d{5}",[7],0,0,0,0,0,0,"[347]",[0,["(?:31(?:8[14-8]|9[14578])|416[14-9]|7(?:0[01]|7[07]|8\\d|9[056])\\d)\\d{3}"]]],"BR":["55","00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)","(?:[1-46-9]\\d\\d|5(?:[0-46-9]\\d|5[0-46-9]))\\d{8}|[1-9]\\d{9}|[3589]\\d{8}|[34]\\d{7}",[8,9,10,11],[["(\\d{4})(\\d{4})","$1-$2",["300|4(?:0[02]|37)","4(?:02|37)0|[34]00"]],["(\\d{3})(\\d{2,3})(\\d{4})","$1 $2 $3",["(?:[358]|90)0"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]"],"($1)"],["(\\d{2})(\\d{5})(\\d{4})","$1 $2-$3",["[16][1-9]|[2-57-9]"],"($1)"]],"0",0,"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\d{10,11}))?","$2",0,0,[0,["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])(?:7|9\\d)\\d{7}",[10,11]]]],"BS":["1","011","(?:242|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([3-8]\\d{6})$","242$1",0,"242",[0,["242(?:3(?:5[79]|7[56]|95)|4(?:[23][1-9]|4[1-35-9]|5[1-8]|6[2-8]|7\\d|81)|5(?:2[45]|3[35]|44|5[1-46-9]|65|77)|6[34]6|7(?:27|38)|8(?:0[1-9]|1[02-9]|2\\d|[89]9))\\d{4}"]]],"BT":["975","00","[17]\\d{7}|[2-8]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[2-68]|7[246]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[67]|7"]]],0,0,0,0,0,0,[0,["(?:1[67]|77)\\d{6}",[8]]]],"BW":["267","00","(?:0800|(?:[37]|800)\\d)\\d{6}|(?:[2-6]\\d|90)\\d{5}",[7,8,10],[["(\\d{2})(\\d{5})","$1 $2",["90"]],["(\\d{3})(\\d{4})","$1 $2",["[24-6]|3[15-79]"]],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37]"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[0,["(?:321|7(?:[1-7]\\d|8[01]))\\d{5}",[8]]]],"BY":["375","810","(?:[12]\\d|33|44|902)\\d{7}|8(?:0[0-79]\\d{5,7}|[1-7]\\d{9})|8(?:1[0-489]|[5-79]\\d)\\d{7}|8[1-79]\\d{6,7}|8[0-79]\\d{5}|8\\d{5}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3})","$1 $2",["800"],"8 $1"],["(\\d{3})(\\d{2})(\\d{2,4})","$1 $2 $3",["800"],"8 $1"],["(\\d{4})(\\d{2})(\\d{3})","$1 $2-$3",["1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])","1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])"],"8 0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["1(?:[56]|7[467])|2[1-3]"],"8 0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-4]"],"8 0$1"],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["[89]"],"8 $1"]],"8",0,"0|80?",0,0,0,[0,["(?:2(?:5[5-79]|9[1-9])|(?:33|44)\\d)\\d{6}",[9]]],"8~10"],"BZ":["501","00","(?:0800\\d|[2-8])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1-$2",["[2-8]"]],["(\\d)(\\d{3})(\\d{4})(\\d{3})","$1-$2-$3-$4",["0"]]],0,0,0,0,0,0,[0,["6[0-35-7]\\d{5}",[7]]]],"CA":["1","011","(?:[2-8]\\d|90)\\d{8}|3\\d{6}",[7,10],0,"1",0,0,0,0,0,[0,["(?:2(?:04|[23]6|[48]9|50|63)|3(?:06|43|6[578])|4(?:03|1[68]|3[178]|50|68|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|13|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\d{6}",[10]]]],"CC":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[0,["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]]],"0011"],"CD":["243","00","[189]\\d{8}|[1-68]\\d{6}",[7,9],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[1-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,[0,["88\\d{5}|(?:8[0-59]|9[017-9])\\d{7}"]]],"CF":["236","00","(?:[27]\\d{3}|8776)\\d{4}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[278]"]]],0,0,0,0,0,0,[0,["7[02457]\\d{6}"]]],"CG":["242","00","222\\d{6}|(?:0\\d|80)\\d{7}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["8"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[02]"]]],0,0,0,0,0,0,[0,["026(?:1[0-5]|6[6-9])\\d{4}|0(?:[14-6]\\d\\d|2(?:40|5[5-8]|6[07-9]))\\d{5}"]]],"CH":["41","00","8\\d{11}|[2-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8[047]|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-79]|81"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["8"],"0$1"]],"0",0,0,0,0,0,[0,["7[35-9]\\d{7}"]]],"CI":["225","00","[02]\\d{9}",[10],[["(\\d{2})(\\d{2})(\\d)(\\d{5})","$1 $2 $3 $4",["2"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3 $4",["0"]]],0,0,0,0,0,0,[0,["0704[0-7]\\d{5}|0(?:[15]\\d\\d|7(?:0[0-37-9]|[4-9][7-9]))\\d{6}"]]],"CK":["682","00","[2-578]\\d{4}",[5],[["(\\d{2})(\\d{3})","$1 $2",["[2-578]"]]],0,0,0,0,0,0,[0,["[578]\\d{4}"]]],"CL":["56","(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0","12300\\d{6}|6\\d{9,10}|[2-9]\\d{8}",[9,10,11],[["(\\d{5})(\\d{4})","$1 $2",["219","2196"],"($1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["44"]],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2[1-36]"],"($1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["9[2-9]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])"],"($1)"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["60|8"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{3})(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3 $4",["60"]]],0,0,0,0,0,0,[0,["2(?:1982[0-6]|3314[05-9])\\d{3}|(?:2(?:1(?:160|962)|3(?:2\\d\\d|3(?:[0346]\\d|1[0-35-9]|2[1-9]|5[0-24-9]|7[0-3])|600)|646[59])|80[1-9]\\d\\d|9(?:3(?:[0-57-9]\\d\\d|6(?:0[02-9]|[1-9]\\d))|6(?:[0-8]\\d\\d|9(?:[02-79]\\d|1[05-9]))|7[1-9]\\d\\d|9(?:[03-9]\\d\\d|1(?:[0235-9]\\d|4[0-24-9])|2(?:[0-79]\\d|8[0-46-9]))))\\d{4}|(?:22|3[2-5]|[47][1-35]|5[1-3578]|6[13-57]|8[1-9]|9[2458])\\d{7}",[9]]]],"CM":["237","00","[26]\\d{8}|88\\d{6,7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["88"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[26]|88"]]],0,0,0,0,0,0,[0,["(?:24[23]|6[25-9]\\d)\\d{6}",[9]]]],"CN":["86","00|1(?:[12]\\d|79)\\d\\d00","1[127]\\d{8,9}|2\\d{9}(?:\\d{2})?|[12]\\d{6,7}|86\\d{6}|(?:1[03-689]\\d|6)\\d{7,9}|(?:[3-579]\\d|8[0-57-9])\\d{6,9}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5,6})","$1 $2",["(?:10|2[0-57-9])[19]","(?:10|2[0-57-9])(?:10|9[56])","(?:10|2[0-57-9])(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{5,6})","$1 $2",["3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]","(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))[19]","85[23](?:10|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:10|9[56])","85[23](?:100|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["(?:4|80)0"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["10|2(?:[02-57-9]|1[1-9])","10|2(?:[02-57-9]|1[1-9])","10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]"],"0$1",1],["(\\d{3})(\\d{7,8})","$1 $2",["9"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["80"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[3-578]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["1[3-9]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3 $4",["[12]"],"0$1",1]],"0",0,"0|(1(?:[12]\\d|79)\\d\\d)",0,0,0,[0,["1740[0-5]\\d{6}|1(?:[38]\\d|4[57]|[59][0-35-9]|6[25-7]|7[0-35-8])\\d{8}",[11]]],"00"],"CO":["57","00(?:4(?:[14]4|56)|[579])","(?:60\\d\\d|9101)\\d{6}|(?:1\\d|3)\\d{9}",[10,11],[["(\\d{3})(\\d{7})","$1 $2",["6"],"($1)"],["(\\d{3})(\\d{7})","$1 $2",["3[0-357]|91"]],["(\\d)(\\d{3})(\\d{7})","$1-$2-$3",["1"],"0$1",0,"$1 $2 $3"]],"0",0,"0(4(?:[14]4|56)|[579])?",0,0,0,[0,["3333(?:0(?:0\\d|1[0-5])|[4-9]\\d\\d)\\d{3}|(?:3(?:24[1-9]|3(?:00|3[0-24-9]))|9101)\\d{6}|3(?:0[0-5]|1\\d|2[0-3]|5[01]|70)\\d{7}",[10]]]],"CR":["506","00","(?:8\\d|90)\\d{8}|(?:[24-8]\\d{3}|3005)\\d{4}",[8,10],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[3-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[89]"]]],0,0,"(19(?:0[0-2468]|1[09]|20|66|77|99))",0,0,0,[0,["(?:3005\\d|6500[01])\\d{3}|(?:5[07]|6[0-4]|7[0-3]|8[3-9])\\d{6}",[8]]]],"CU":["53","119","[27]\\d{6,7}|[34]\\d{5,7}|(?:5|8\\d\\d)\\d{7}",[6,7,8,10],[["(\\d{2})(\\d{4,6})","$1 $2",["2[1-4]|[34]"],"(0$1)"],["(\\d)(\\d{6,7})","$1 $2",["7"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["5"],"0$1"],["(\\d{3})(\\d{7})","$1 $2",["8"],"0$1"]],"0",0,0,0,0,0,[0,["5\\d{7}",[8]]]],"CV":["238","0","(?:[2-59]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[2-589]"]]],0,0,0,0,0,0,[0,["(?:36|5[1-389]|9\\d)\\d{5}"]]],"CW":["599","00","(?:[34]1|60|(?:7|9\\d)\\d)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[3467]"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["9[4-8]"]]],0,0,0,0,0,"[69]",[0,["953[01]\\d{4}|9(?:5[12467]|6[5-9])\\d{5}"]]],"CX":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[0,["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]]],"0011"],"CY":["357","00","(?:[279]\\d|[58]0)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[257-9]"]]],0,0,0,0,0,0,[0,["9[4-79]\\d{6}"]]],"CZ":["420","00","(?:[2-578]\\d|60)\\d{7}|9\\d{8,11}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]|9[015-7]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3 $4",["96"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]],0,0,0,0,0,0,[0,["(?:60[1-8]|7(?:0[2-5]|[2379]\\d))\\d{6}"]]],"DE":["49","00","[2579]\\d{5,14}|49(?:[34]0|69|8\\d)\\d\\d?|49(?:37|49|60|7[089]|9\\d)\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\d{1,8}|(?:1|[368]\\d|4[0-8])\\d{3,13}|49(?:[015]\\d|2[13]|31|[46][1-8])\\d{1,9}",[4,5,6,7,8,9,10,11,12,13,14,15],[["(\\d{2})(\\d{3,13})","$1 $2",["3[02]|40|[68]9"],"0$1"],["(\\d{3})(\\d{3,12})","$1 $2",["2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1","2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1"],"0$1"],["(\\d{4})(\\d{2,11})","$1 $2",["[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]","[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["138"],"0$1"],["(\\d{5})(\\d{2,10})","$1 $2",["3"],"0$1"],["(\\d{3})(\\d{5,11})","$1 $2",["181"],"0$1"],["(\\d{3})(\\d)(\\d{4,10})","$1 $2 $3",["1(?:3|80)|9"],"0$1"],["(\\d{3})(\\d{7,8})","$1 $2",["1[67]"],"0$1"],["(\\d{3})(\\d{7,12})","$1 $2",["8"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["185","1850","18500"],"0$1"],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["18[68]"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["15[0568]"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["15[1279]"],"0$1"],["(\\d{3})(\\d{8})","$1 $2",["18"],"0$1"],["(\\d{3})(\\d{2})(\\d{7,8})","$1 $2 $3",["1(?:6[023]|7)"],"0$1"],["(\\d{4})(\\d{2})(\\d{7})","$1 $2 $3",["15[279]"],"0$1"],["(\\d{3})(\\d{2})(\\d{8})","$1 $2 $3",["15"],"0$1"]],"0",0,0,0,0,0,[0,["15[0-25-9]\\d{8}|1(?:6[023]|7\\d)\\d{7,8}",[10,11]]]],"DJ":["253","00","(?:2\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[27]"]]],0,0,0,0,0,0,[0,["77\\d{6}"]]],"DK":["45","00","[2-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-9]"]]],0,0,0,0,0,0,[0,["(?:[2-7]\\d|8[126-9]|9[1-46-9])\\d{6}"]]],"DM":["1","011","(?:[58]\\d\\d|767|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","767$1",0,"767",[0,["767(?:2(?:[2-4689]5|7[5-7])|31[5-7]|61[1-8]|70[1-6])\\d{4}"]]],"DO":["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,0,0,0,"8001|8[024]9",[0,["8[024]9[2-9]\\d{6}"]]],"DZ":["213","00","(?:[1-4]|[5-79]\\d|80)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["9"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-8]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:5(?:4[0-29]|5\\d|6[0-2])|6(?:[569]\\d|7[0-6])|7[7-9]\\d)\\d{6}",[9]]]],"EC":["593","00","1\\d{9,10}|(?:[2-7]|9\\d)\\d{7}",[8,9,10,11],[["(\\d)(\\d{3})(\\d{4})","$1 $2-$3",["[2-7]"],"(0$1)",0,"$1-$2-$3"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{3})(\\d{3,4})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[0,["964[0-2]\\d{5}|9(?:39|[57][89]|6[0-36-9]|[89]\\d)\\d{6}",[9]]]],"EE":["372","00","8\\d{9}|[4578]\\d{7}|(?:[3-8]\\d|90)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88","[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88"]],["(\\d{4})(\\d{3,4})","$1 $2",["[45]|8(?:00|[1-49])","[45]|8(?:00[1-9]|[1-49])"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[0,["(?:5\\d{5}|8(?:1(?:0(?:000|[3-9]\\d\\d)|(?:1(?:0[236]|1\\d)|(?:23|[3-79]\\d)\\d)\\d)|2(?:0(?:000|(?:19|[2-7]\\d)\\d)|(?:(?:[124-6]\\d|3[5-9])\\d|7(?:[3679]\\d|8[13-9])|8(?:[2-6]\\d|7[01]))\\d)|[349]\\d{4}))\\d\\d|5(?:(?:[02]\\d|5[0-478])\\d|1(?:[0-8]\\d|95)|6(?:4[0-4]|5[1-589]))\\d{3}",[7,8]]]],"EG":["20","00","[189]\\d{8,9}|[24-6]\\d{8}|[135]\\d{7}",[8,9,10],[["(\\d)(\\d{7,8})","$1 $2",["[23]"],"0$1"],["(\\d{2})(\\d{6,7})","$1 $2",["1[35]|[4-6]|8[2468]|9[235-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[189]"],"0$1"]],"0",0,0,0,0,0,[0,["1[0-25]\\d{8}",[10]]]],"EH":["212","00","[5-8]\\d{8}",[9],0,"0",0,0,0,0,"528[89]",[0,["(?:6(?:[0-79]\\d|8[0-247-9])|7(?:[017]\\d|2[0-2]|6[0-8]|8[0-3]))\\d{6}"]]],"ER":["291","00","[178]\\d{6}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[178]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:17[1-3]|7\\d\\d)\\d{4}"]]],"ES":["34","00","[5-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]00"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-9]"]]],0,0,0,0,0,0,[0,["(?:590[16]00\\d|9(?:6906(?:09|10)|7390\\d\\d))\\d\\d|(?:6\\d|7[1-48])\\d{7}"]]],"ET":["251","00","(?:11|[2-579]\\d)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-579]"],"0$1"]],"0",0,0,0,0,0,[0,["7001\\d{5}|(?:7(?:0[1-9]|1[01]|77|86|99)|9\\d\\d)\\d{6}"]]],"FI":["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","[1-35689]\\d{4}|7\\d{10,11}|(?:[124-7]\\d|3[0-46-9])\\d{8}|[1-9]\\d{5,8}",[5,6,7,8,9,10,11,12],[["(\\d)(\\d{4,9})","$1 $2",["[2568][1-8]|3(?:0[1-9]|[1-9])|9"],"0$1"],["(\\d{3})(\\d{3,7})","$1 $2",["[12]00|[368]|70[07-9]"],"0$1"],["(\\d{2})(\\d{4,8})","$1 $2",["[1245]|7[135]"],"0$1"],["(\\d{2})(\\d{6,10})","$1 $2",["7"],"0$1"]],"0",0,0,0,0,"1[03-79]|[2-9]",[0,["4946\\d{2,6}|(?:4[0-8]|50)\\d{4,8}",[6,7,8,9,10]]],"00"],"FJ":["679","0(?:0|52)","45\\d{5}|(?:0800\\d|[235-9])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1 $2",["[235-9]|45"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]]],0,0,0,0,0,0,[0,["(?:[279]\\d|45|5[01568]|8[034679])\\d{5}",[7]]],"00"],"FK":["500","00","[2-7]\\d{4}",[5],0,0,0,0,0,0,0,[0,["[56]\\d{4}"]]],"FM":["691","00","(?:[39]\\d\\d|820)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[389]"]]],0,0,0,0,0,0,[0,["31(?:00[67]|208|309)\\d\\d|(?:3(?:[2357]0[1-9]|602|804|905)|(?:820|9[2-7]\\d)\\d)\\d{3}"]]],"FO":["298","00","[2-9]\\d{5}",[6],[["(\\d{6})","$1",["[2-9]"]]],0,0,"(10(?:01|[12]0|88))",0,0,0,[0,["(?:[27][1-9]|5\\d|9[16])\\d{4}"]]],"FR":["33","00","[1-9]\\d{8}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0 $1"],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[1-79]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:6(?:[0-24-8]\\d|3[0-8]|9[589])|7(?:00|[3-9]\\d))\\d{6}"]]],"GA":["241","00","(?:[067]\\d|11)\\d{6}|[2-7]\\d{6}",[7,8],[["(\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-7]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["11|[67]"],"0$1"]],0,0,"0(11\\d{6}|60\\d{6}|61\\d{6}|6[256]\\d{6}|7[467]\\d{6})","$1",0,0,[0,["(?:(?:0[2-7]|7[467])\\d|6(?:0[0-4]|10|[256]\\d))\\d{5}|[2-7]\\d{6}"]]],"GB":["44","00","[1-357-9]\\d{9}|[18]\\d{8}|8\\d{6}",[7,9,10],[["(\\d{3})(\\d{4})","$1 $2",["800","8001","80011","800111","8001111"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["845","8454","84546","845464"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["800"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["1(?:38|5[23]|69|76|94)","1(?:(?:38|69)7|5(?:24|39)|768|946)","1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["1(?:[2-69][02-9]|[78])"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[25]|7(?:0|6[02-9])","[25]|7(?:0|6(?:[03-9]|2[356]))"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[1389]"],"0$1"]],"0",0,0,0,0,0,[0,["7(?:457[0-57-9]|700[01]|911[028])\\d{5}|7(?:[1-3]\\d\\d|4(?:[0-46-9]\\d|5[0-689])|5(?:0[0-8]|[13-9]\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\d|8[02-9]|9[0-689])|8(?:[014-9]\\d|[23][0-8])|9(?:[024-9]\\d|1[02-9]|3[0-689]))\\d{6}",[10]]],0," x"],"GD":["1","011","(?:473|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","473$1",0,"473",[0,["473(?:4(?:0[2-79]|1[04-9]|2[0-5]|58)|5(?:2[01]|3[3-8])|901)\\d{4}"]]],"GE":["995","00","(?:[3-57]\\d\\d|800)\\d{6}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["32"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[57]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[348]"],"0$1"]],"0",0,0,0,0,0,[0,["5(?:(?:0555|1(?:[17]77|555))[5-9]|757(?:7[7-9]|8[01]))\\d{3}|5(?:0070|11(?:33|51)|[25]222|3333)[0-4]\\d{3}|5(?:00(?:0\\d|5[05])|11(?:00|[124]\\d|3[01])|5200|75(?:00|[57]5)|8(?:0(?:[01]\\d|2[0-4])|58[89]|8(?:55|88)))\\d{4}|(?:5(?:[14]4|5[0157-9]|68|7[0147-9]|9[1-35-9])|790)\\d{6}"]]],"GF":["594","00","(?:[56]94|80\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[0,["694(?:[0-249]\\d|3[0-8])\\d{4}"]]],"GG":["44","00","(?:1481|[357-9]\\d{3})\\d{6}|8\\d{6}(?:\\d{2})?",[7,9,10],0,"0",0,"0|([25-9]\\d{5})$","1481$1",0,0,[0,["7(?:(?:781|839)\\d|911[17])\\d{5}",[10]]]],"GH":["233","00","(?:[235]\\d{3}|800)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[235]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:2(?:[0346-9]\\d|5[67])|5(?:[0457]\\d|6[01]|9[1-9]))\\d{6}",[9]]]],"GI":["350","00","(?:[25]\\d\\d|606)\\d{5}",[8],[["(\\d{3})(\\d{5})","$1 $2",["2"]]],0,0,0,0,0,0,[0,["(?:5[146-8]\\d|606)\\d{5}"]]],"GL":["299","00","(?:19|[2-689]\\d|70)\\d{4}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["19|[2-9]"]]],0,0,0,0,0,0,[0,["[245]\\d{5}"]]],"GM":["220","00","[2-9]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]],0,0,0,0,0,0,[0,["(?:[23679]\\d|5[0-389])\\d{5}"]]],"GN":["224","00","722\\d{6}|(?:3|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["3"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[67]"]]],0,0,0,0,0,0,[0,["6[0-356]\\d{7}",[9]]]],"GP":["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[0,["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"]]],"GQ":["240","00","222\\d{6}|(?:3\\d|55|[89]0)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235]"]],["(\\d{3})(\\d{6})","$1 $2",["[89]"]]],0,0,0,0,0,0,[0,["(?:222|55\\d)\\d{6}"]]],"GR":["30","00","5005000\\d{3}|8\\d{9,11}|(?:[269]\\d|70)\\d{8}",[10,11,12],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["21|7"]],["(\\d{4})(\\d{6})","$1 $2",["2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2689]"]],["(\\d{3})(\\d{3,4})(\\d{5})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[0,["68[57-9]\\d{7}|(?:69|94)\\d{8}",[10]]]],"GT":["502","00","(?:1\\d{3}|[2-7])\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[0,["[3-5]\\d{7}",[8]]]],"GU":["1","011","(?:[58]\\d\\d|671|900)\\d{7}",[10],0,"1",0,"1|([3-9]\\d{6})$","671$1",0,"671",[0,["671(?:3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[0236-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[0479]7|2[0167]|3[45]|8[7-9])|8(?:[2-57-9]8|6[48])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[78]))\\d{4}"]]],"GW":["245","00","[49]\\d{8}|4\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["40"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"]]],0,0,0,0,0,0,[0,["9(?:5\\d|6[569]|77)\\d{6}",[9]]]],"GY":["592","001","9008\\d{3}|(?:[2-467]\\d\\d|862)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-46-9]"]]],0,0,0,0,0,0,[0,["(?:6\\d\\d|70[015-7])\\d{4}"]]],"HK":["852","00(?:30|5[09]|[126-9]?)","8[0-46-9]\\d{6,7}|9\\d{4,7}|(?:[2-7]|9\\d{3})\\d{7}",[5,6,7,8,9,11],[["(\\d{3})(\\d{2,5})","$1 $2",["900","9003"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[1-4]|9(?:0[1-9]|[1-8])"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]],["(\\d{3})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]],0,0,0,0,0,0,[0,["(?:4(?:44[5-9]|6(?:0[0-7]|1[0-6]|4[0-57-9]|6[0-4]|7[0-8]))|573[0-6]|6(?:26[013-8]|66[0-3])|70(?:7[1-5]|8[0-4])|848[015-9]|9(?:29[013-9]|59[0-4]))\\d{4}|(?:4(?:4[01]|6[2358])|5(?:[1-59][0-46-9]|6[0-4689]|7[0-246-9])|6(?:0[1-9]|[13-59]\\d|[268][0-57-9]|7[0-79])|84[09]|9(?:0[1-9]|1[02-9]|[2358][0-8]|[467]\\d))\\d{5}",[8]]],"00"],"HN":["504","00","8\\d{10}|[237-9]\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1-$2",["[237-9]"]]],0,0,0,0,0,0,[0,["[37-9]\\d{7}",[8]]]],"HR":["385","00","(?:[24-69]\\d|3[0-79])\\d{7}|80\\d{5,7}|[1-79]\\d{7}|6\\d{5,6}",[6,7,8,9],[["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["6[01]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{4})(\\d{3})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-5]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"]],"0",0,0,0,0,0,[0,["98\\d{6,7}|975(?:1\\d|77|9[67])\\d{4}|9(?:0[1-9]|[1259]\\d|7[0679])\\d{6}",[8,9]]]],"HT":["509","00","[2-489]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[2-489]"]]],0,0,0,0,0,0,[0,["[34]\\d{7}"]]],"HU":["36","00","[235-7]\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"06 $1"]],"06",0,0,0,0,0,[0,["(?:[257]0|3[01])\\d{7}",[9]]]],"ID":["62","00[89]","(?:(?:00[1-9]|8\\d)\\d{4}|[1-36])\\d{6}|00\\d{10}|[1-9]\\d{8,10}|[2-9]\\d{7}",[7,8,9,10,11,12,13],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["15"]],["(\\d{2})(\\d{5,9})","$1 $2",["2[124]|[36]1"],"(0$1)"],["(\\d{3})(\\d{5,7})","$1 $2",["800"],"0$1"],["(\\d{3})(\\d{5,8})","$1 $2",["[2-79]"],"(0$1)"],["(\\d{3})(\\d{3,4})(\\d{3})","$1-$2-$3",["8[1-35-9]"],"0$1"],["(\\d{3})(\\d{6,8})","$1 $2",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["804"],"0$1"],["(\\d{3})(\\d)(\\d{3})(\\d{3})","$1 $2 $3 $4",["80"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1-$2-$3",["8"],"0$1"]],"0",0,0,0,0,0,[0,["8[1-35-9]\\d{7,10}",[9,10,11,12]]]],"IE":["353","00","(?:1\\d|[2569])\\d{6,8}|4\\d{6,9}|7\\d{8}|8\\d{8,9}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["2[24-9]|47|58|6[237-9]|9[35-9]"],"(0$1)"],["(\\d{3})(\\d{5})","$1 $2",["[45]0"],"(0$1)"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["1"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2569]|4[1-69]|7[14]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["81"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[78]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["4"],"(0$1)"],["(\\d{2})(\\d)(\\d{3})(\\d{4})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[0,["8(?:22|[35-9]\\d)\\d{6}",[9]]]],"IL":["972","0(?:0|1[2-9])","1\\d{6}(?:\\d{3,5})?|[57]\\d{8}|[1-489]\\d{7}",[7,8,9,10,11,12],[["(\\d{4})(\\d{3})","$1-$2",["125"]],["(\\d{4})(\\d{2})(\\d{2})","$1-$2-$3",["121"]],["(\\d)(\\d{3})(\\d{4})","$1-$2-$3",["[2-489]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1-$2-$3",["12"]],["(\\d{4})(\\d{6})","$1-$2",["159"]],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3-$4",["1[7-9]"]],["(\\d{3})(\\d{1,2})(\\d{3})(\\d{4})","$1-$2 $3-$4",["15"]]],"0",0,0,0,0,0,[0,["5(?:(?:[02368]\\d|[19][2-9]|4[1-9])\\d|5(?:01|1[79]|2[2-9]|3[0-3]|4[34]|5[015689]|6[6-8]|7[0-267]|8[7-9]|9[1-9]))\\d{5}",[9]]]],"IM":["44","00","1624\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([25-8]\\d{5})$","1624$1",0,"74576|(?:16|7[56])24",[0,["76245[06]\\d{4}|7(?:4576|[59]24\\d|624[0-4689])\\d{5}"]]],"IN":["91","00","(?:000800|[2-9]\\d\\d)\\d{7}|1\\d{7,12}",[8,9,10,11,12,13],[["(\\d{8})","$1",["5(?:0|2[23]|3[03]|[67]1|88)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)"],0,1],["(\\d{4})(\\d{4,5})","$1 $2",["180","1800"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["140"],0,1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["11|2[02]|33|4[04]|79[1-7]|80[2-46]","11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])","11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]"],"0$1",1],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807","1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]","1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\d|7(?:1(?:[013-8]\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\d|5[0-367])|70[13-7]))[2-7]"],"0$1",1],["(\\d{5})(\\d{5})","$1 $2",["[6-9]"],"0$1",1],["(\\d{4})(\\d{2,4})(\\d{4})","$1 $2 $3",["1(?:6|8[06])","1(?:6|8[06]0)"],0,1],["(\\d{4})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["18"],0,1]],"0",0,0,0,0,0,[0,["(?:61279|7(?:887[02-9]|9(?:313|79[07-9]))|8(?:079[04-9]|(?:84|91)7[02-8]))\\d{5}|(?:6(?:12|[2-47]1|5[17]|6[13]|80)[0189]|7(?:1(?:2[0189]|9[0-5])|2(?:[14][017-9]|8[0-59])|3(?:2[5-8]|[34][017-9]|9[016-9])|4(?:1[015-9]|[29][89]|39|8[389])|5(?:[15][017-9]|2[04-9]|9[7-9])|6(?:0[0-47]|1[0-257-9]|2[0-4]|3[19]|5[4589])|70[0289]|88[089]|97[02-8])|8(?:0(?:6[67]|7[02-8])|70[017-9]|84[01489]|91[0-289]))\\d{6}|(?:7(?:31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[0189]\\d|7[02-8])\\d{5}|(?:6(?:[09]\\d|1[04679]|2[03689]|3[05-9]|4[0489]|50|6[069]|7[07]|8[7-9])|7(?:0\\d|2[0235-79]|3[05-8]|40|5[0346-8]|6[6-9]|7[1-9]|8[0-79]|9[089])|8(?:0[01589]|1[0-57-9]|2[235-9]|3[03-57-9]|[45]\\d|6[02457-9]|7[1-69]|8[0-25-9]|9[02-9])|9\\d\\d)\\d{7}|(?:6(?:(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|8[124-6])\\d|7(?:[235689]\\d|4[0189]))|7(?:1(?:[013-8]\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-5])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\d|5[0-367])|70[13-7]|881))[0189]\\d{5}",[10]]]],"IO":["246","00","3\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["3"]]],0,0,0,0,0,0,[0,["38\\d{5}"]]],"IQ":["964","00","(?:1|7\\d\\d)\\d{7}|[2-6]\\d{7,8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-6]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[0,["7[3-9]\\d{8}",[10]]]],"IR":["98","00","[1-9]\\d{9}|(?:[1-8]\\d\\d|9)\\d{3,4}",[4,5,6,7,10],[["(\\d{4,5})","$1",["96"],"0$1"],["(\\d{2})(\\d{4,5})","$1 $2",["(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[1-8]"],"0$1"]],"0",0,0,0,0,0,[0,["9(?:(?:0(?:[0-35]\\d|4[4-6])|(?:[13]\\d|2[0-3])\\d)\\d|9(?:[0-46]\\d\\d|5[15]0|8(?:1\\d|88)|9(?:0[0-3]|[19]\\d|21|77|8[7-9])))\\d{5}",[10]]]],"IS":["354","00|1(?:0(?:01|[12]0)|100)","(?:38\\d|[4-9])\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["[4-9]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["3"]]],0,0,0,0,0,0,[0,["(?:38[589]\\d\\d|6(?:1[1-8]|2[0-6]|3[026-9]|4[014679]|5[0159]|6[0-69]|70|8[06-8]|9\\d)|7(?:5[057]|[6-9]\\d)|8(?:2[0-59]|[3-69]\\d|8[238]))\\d{4}"]],"00"],"IT":["39","00","0\\d{5,10}|1\\d{8,10}|3(?:[0-8]\\d{7,10}|9\\d{7,8})|(?:55|70)\\d{8}|8\\d{5}(?:\\d{2,4})?",[6,7,8,9,10,11],[["(\\d{2})(\\d{4,6})","$1 $2",["0[26]"]],["(\\d{3})(\\d{3,6})","$1 $2",["0[13-57-9][0159]|8(?:03|4[17]|9[2-5])","0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))"]],["(\\d{4})(\\d{2,6})","$1 $2",["0(?:[13-579][2-46-8]|8[236-8])"]],["(\\d{4})(\\d{4})","$1 $2",["894"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[26]|5"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["1(?:44|[679])|[378]"]],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[13-57-9][0159]|14"]],["(\\d{2})(\\d{4})(\\d{5})","$1 $2 $3",["0[26]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["3"]]],0,0,0,0,0,0,[0,["3[1-9]\\d{8}|3[2-9]\\d{7}",[9,10]]]],"JE":["44","00","1534\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([0-24-8]\\d{5})$","1534$1",0,0,[0,["7(?:(?:(?:50|82)9|937)\\d|7(?:00[378]|97[7-9]))\\d{5}"]]],"JM":["1","011","(?:[58]\\d\\d|658|900)\\d{7}",[10],0,"1",0,0,0,0,"658|876",[0,["(?:658295|876(?:2(?:0[1-9]|[13-9]\\d|2[013-9])|[348]\\d\\d|5(?:0[1-9]|[1-9]\\d)|6(?:4[89]|6[67])|7(?:0[07]|7\\d|8[1-47-9]|9[0-36-9])|9(?:[01]9|9[0579])))\\d{4}"]]],"JO":["962","00","(?:(?:[2689]|7\\d)\\d|32|53)\\d{6}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2356]|87"],"(0$1)"],["(\\d{3})(\\d{5,6})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["70"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[0,["7(?:[78][0-25-9]|9\\d)\\d{6}",[9]]]],"JP":["81","010","00[1-9]\\d{6,14}|[257-9]\\d{9}|(?:00|[1-9]\\d\\d)\\d{6}",[8,9,10,11,12,13,14,15,16,17],[["(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3",["(?:12|57|99)0"],"0$1"],["(\\d{4})(\\d)(\\d{4})","$1-$2-$3",["1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:80|9[16])","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2-$3",["[36]|4(?:2[09]|7[01])","[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]"],"0$1"],["(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3",["[14]|[289][2-9]|5[3-9]|7[2-4679]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["800"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[257-9]"],"0$1"]],"0",0,0,0,0,0,[0,["[7-9]0[1-9]\\d{7}",[10]]]],"KE":["254","000","(?:[17]\\d\\d|900)\\d{6}|(?:2|80)0\\d{6,7}|[4-6]\\d{6,8}",[7,8,9,10],[["(\\d{2})(\\d{5,7})","$1 $2",["[24-6]"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[17]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:1(?:0[0-6]|1[0-5]|2[014]|30)|7\\d\\d)\\d{6}",[9]]]],"KG":["996","00","8\\d{9}|(?:[235-8]\\d|99)\\d{7}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["3(?:1[346]|[24-79])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235-79]|88"],"0$1"],["(\\d{3})(\\d{3})(\\d)(\\d{2,3})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[0,["312(?:58\\d|973)\\d{3}|(?:2(?:0[0-35]|2\\d)|5[0-24-7]\\d|7(?:[07]\\d|55)|88[08]|99[05-9])\\d{6}",[9]]]],"KH":["855","00[14-9]","1\\d{9}|[1-9]\\d{7,8}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[0,["(?:(?:1[28]|3[18]|9[67])\\d|6[016-9]|7(?:[07-9]|[16]\\d)|8(?:[013-79]|8\\d))\\d{6}|(?:1\\d|9[0-57-9])\\d{6}|(?:2[3-6]|3[2-6]|4[2-4]|[5-7][2-5])48\\d{5}",[8,9]]]],"KI":["686","00","(?:[37]\\d|6[0-79])\\d{6}|(?:[2-48]\\d|50)\\d{3}",[5,8],0,"0",0,0,0,0,0,[0,["(?:63\\d{3}|73(?:0[0-5]\\d|140))\\d{3}|[67]200[01]\\d{3}",[8]]]],"KM":["269","00","[3478]\\d{6}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[3478]"]]],0,0,0,0,0,0,[0,["[34]\\d{6}"]]],"KN":["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","869$1",0,"869",[0,["869(?:48[89]|55[6-8]|66\\d|76[02-7])\\d{4}"]]],"KP":["850","00|99","85\\d{6}|(?:19\\d|[2-7])\\d{7}",[8,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"]],"0",0,0,0,0,0,[0,["19[1-3]\\d{7}",[10]]]],"KR":["82","00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))","00[1-9]\\d{8,11}|(?:[12]|5\\d{3})\\d{7}|[13-6]\\d{9}|(?:[1-6]\\d|80)\\d{7}|[3-6]\\d{4,5}|(?:00|7)0\\d{8}",[5,6,8,9,10,11,12,13,14],[["(\\d{2})(\\d{3,4})","$1-$2",["(?:3[1-3]|[46][1-4]|5[1-5])1"],"0$1"],["(\\d{4})(\\d{4})","$1-$2",["1"]],["(\\d)(\\d{3,4})(\\d{4})","$1-$2-$3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60|8"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1-$2-$3",["[1346]|5[1-5]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{2})(\\d{5})(\\d{4})","$1-$2-$3",["5"],"0$1"]],"0",0,"0(8(?:[1-46-8]|5\\d\\d))?",0,0,0,[0,["1(?:05(?:[0-8]\\d|9[0-6])|22[13]\\d)\\d{4,5}|1(?:0[1-46-9]|[16-9]\\d|2[013-9])\\d{6,7}",[9,10]]]],"KW":["965","00","18\\d{5}|(?:[2569]\\d|41)\\d{6}",[7,8],[["(\\d{4})(\\d{3,4})","$1 $2",["[169]|2(?:[235]|4[1-35-9])|52"]],["(\\d{3})(\\d{5})","$1 $2",["[245]"]]],0,0,0,0,0,0,[0,["(?:41\\d\\d|5(?:(?:[05]\\d|1[0-7]|6[56])\\d|2(?:22|5[25])|7(?:55|77)|88[58])|6(?:(?:0[034679]|5[015-9]|6\\d)\\d|1(?:00|11|66)|222|3[36]3|444|7(?:0[013-9]|[67]\\d)|888|9(?:[069]\\d|3[039]))|9(?:(?:0[09]|22|[4679]\\d|8[057-9])\\d|1(?:1[01]|99)|3(?:00|33)|5(?:00|5\\d)))\\d{4}",[8]]]],"KY":["1","011","(?:345|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","345$1",0,"345",[0,["345(?:32[1-9]|42[0-4]|5(?:1[67]|2[5-79]|4[6-9]|50|76)|649|82[56]|9(?:1[679]|2[2-9]|3[06-9]|90))\\d{4}"]]],"KZ":["7","810","(?:33622|8\\d{8})\\d{5}|[78]\\d{9}",[10,14],0,"8",0,0,0,0,"33|7",[0,["7(?:0[0-25-8]|47|6[0-4]|7[15-8]|85)\\d{7}",[10]]],"8~10"],"LA":["856","00","[23]\\d{9}|3\\d{8}|(?:[235-8]\\d|41)\\d{6}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2[13]|3[14]|[4-8]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["30[013-9]"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[23]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:20(?:[239]\\d|5[24-9]|7[6-8]|88)|302\\d)\\d{6}",[10]]]],"LB":["961","00","[27-9]\\d{7}|[13-9]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27-9]"]]],"0",0,0,0,0,0,[0,["793(?:[01]\\d|2[0-4])\\d{3}|(?:(?:3|81)\\d|7(?:[01]\\d|6[013-9]|8[89]|9[12]))\\d{5}"]]],"LC":["1","011","(?:[58]\\d\\d|758|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","758$1",0,"758",[0,["758(?:28[4-7]|384|4(?:6[01]|8[4-9])|5(?:1[89]|20|84)|7(?:1[2-9]|2\\d|3[0-3])|812)\\d{4}"]]],"LI":["423","00","[68]\\d{8}|(?:[2378]\\d|90)\\d{5}",[7,9],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[2379]|8(?:0[09]|7)","[2379]|8(?:0(?:02|9)|7)"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["69"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]],"0",0,"0|(1001)",0,0,0,[0,["(?:6(?:(?:4[5-9]|5[0-4])\\d|6(?:[0245]\\d|[17]0|3[7-9]))\\d|7(?:[37-9]\\d|42|56))\\d{4}"]]],"LK":["94","00","[1-9]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[1-689]"],"0$1"]],"0",0,0,0,0,0,[0,["7(?:[0-25-8]\\d|4[0-4])\\d{6}"]]],"LR":["231","00","(?:2|33|5\\d|77|88)\\d{7}|[4-6]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[4-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3578]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:(?:330|555|(?:77|88)\\d)\\d|4[67])\\d{5}|[56]\\d{6}",[7,9]]]],"LS":["266","00","(?:[256]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2568]"]]],0,0,0,0,0,0,[0,["[56]\\d{7}"]]],"LT":["370","00","(?:[3469]\\d|52|[78]0)\\d{6}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["52[0-7]"],"(8-$1)",1],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[7-9]"],"8 $1",1],["(\\d{2})(\\d{6})","$1 $2",["37|4(?:[15]|6[1-8])"],"(8-$1)",1],["(\\d{3})(\\d{5})","$1 $2",["[3-6]"],"(8-$1)",1]],"8",0,"[08]",0,0,0,[0,["6\\d{7}"]]],"LU":["352","00","35[013-9]\\d{4,8}|6\\d{8}|35\\d{2,4}|(?:[2457-9]\\d|3[0-46-9])\\d{2,9}",[4,5,6,7,8,9,10,11],[["(\\d{2})(\\d{3})","$1 $2",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["20[2-689]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4",["2(?:[0367]|4[3-8])"]],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["80[01]|90[015]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["20"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4 $5",["2(?:[0367]|4[3-8])"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,5})","$1 $2 $3 $4",["[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]"]]],0,0,"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\d)",0,0,0,[0,["6(?:[269][18]|5[1568]|7[189]|81)\\d{6}",[9]]]],"LV":["371","00","(?:[268]\\d|90)\\d{6}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[269]|8[01]"]]],0,0,0,0,0,0,[0,["23(?:23[0-57-9]|33[0238])\\d{3}|2(?:[0-24-9]\\d\\d|3(?:0[07]|[14-9]\\d|2[024-9]|3[0-24-9]))\\d{4}"]]],"LY":["218","00","[2-9]\\d{8}",[9],[["(\\d{2})(\\d{7})","$1-$2",["[2-9]"],"0$1"]],"0",0,0,0,0,0,[0,["9[1-6]\\d{7}"]]],"MA":["212","00","[5-8]\\d{8}",[9],[["(\\d{5})(\\d{4})","$1-$2",["5(?:29|38)","5(?:29[89]|389)","5(?:29[89]|389)0"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5[45]"],"0$1"],["(\\d{4})(\\d{5})","$1-$2",["5(?:2[2-489]|3[5-9]|9)|892","5(?:2(?:[2-49]|8[235-9])|3[5-9]|9)|892"],"0$1"],["(\\d{2})(\\d{7})","$1-$2",["8"],"0$1"],["(\\d{3})(\\d{6})","$1-$2",["[5-7]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:6(?:[0-79]\\d|8[0-247-9])|7(?:[017]\\d|2[0-2]|6[0-8]|8[0-3]))\\d{6}"]]],"MC":["377","00","(?:[3489]|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["4"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[389]"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["6"],"0$1"]],"0",0,0,0,0,0,[0,["4(?:[46]\\d|5[1-9])\\d{5}|(?:3|6\\d)\\d{7}"]]],"MD":["373","00","(?:[235-7]\\d|[89]0)\\d{6}",[8],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["22|3"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[25-7]"],"0$1"]],"0",0,0,0,0,0,[0,["562\\d{5}|(?:6\\d|7[16-9])\\d{6}"]]],"ME":["382","00","(?:20|[3-79]\\d)\\d{6}|80\\d{6,7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"0$1"]],"0",0,0,0,0,0,[0,["6(?:[07-9]\\d|3[024]|6[0-25])\\d{5}",[8]]]],"MF":["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[0,["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"]]],"MG":["261","00","[23]\\d{8}",[9],[["(\\d{2})(\\d{2})(\\d{3})(\\d{2})","$1 $2 $3 $4",["[23]"],"0$1"]],"0",0,"0|([24-9]\\d{6})$","20$1",0,0,[0,["3[2-489]\\d{7}"]]],"MH":["692","011","329\\d{4}|(?:[256]\\d|45)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1-$2",["[2-6]"]]],"1",0,0,0,0,0,[0,["(?:(?:23|54)5|329|45[356])\\d{4}"]]],"MK":["389","00","[2-578]\\d{7}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2|34[47]|4(?:[37]7|5[47]|64)"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[347]"],"0$1"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["[58]"],"0$1"]],"0",0,0,0,0,0,[0,["7(?:3555|4747|9(?:[019]77|42[0-4]))\\d{3}|7(?:[0-25-8]\\d\\d|3(?:[1-4]\\d|7[01578])|4(?:2\\d|60|7[01578])|9(?:[23]\\d|4[01]|7[015]))\\d{4}"]]],"ML":["223","00","[24-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24-9]"]]],0,0,0,0,0,0,[0,["2(?:0(?:01|79)|17\\d)\\d{4}|(?:5[01]|[679]\\d|8[2-49])\\d{6}"]]],"MM":["95","00","1\\d{5,7}|95\\d{6}|(?:[4-7]|9[0-46-9])\\d{6,8}|(?:2|8\\d)\\d{5,8}",[6,7,8,9,10],[["(\\d)(\\d{2})(\\d{3})","$1 $2 $3",["16|2"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[4-7]|8[1-35]"],"0$1"],["(\\d)(\\d{3})(\\d{4,6})","$1 $2 $3",["9(?:2[0-4]|[35-9]|4[137-9])"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["92"],"0$1"],["(\\d)(\\d{5})(\\d{4})","$1 $2 $3",["9"],"0$1"]],"0",0,0,0,0,0,[0,["(?:17[01]|9(?:2(?:[0-4]|[56]\\d\\d)|(?:3(?:[0-36]|4\\d)|(?:6\\d|9[4-8])\\d|7(?:3|40|[5-9]\\d)|8(?:78|[89]\\d))\\d|4(?:(?:[0245]\\d|[1379])\\d|88)|5[0-6])\\d)\\d{4}|9[69]1\\d{6}|9(?:[68]\\d|9[089])\\d{5}",[7,8,9,10]]]],"MN":["976","001","[12]\\d{7,9}|[5-9]\\d{7}",[8,9,10],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[12]1"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[5-9]"]],["(\\d{3})(\\d{5,6})","$1 $2",["[12]2[1-3]"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["[12](?:27|3[2-8]|4[2-68]|5[1-4689])","[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["[12]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:83[01]|920)\\d{5}|(?:5[05]|6[06]|8[015689]|9[013-9])\\d{6}",[8]]]],"MO":["853","00","0800\\d{3}|(?:28|[68]\\d)\\d{6}",[7,8],[["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{4})(\\d{4})","$1 $2",["[268]"]]],0,0,0,0,0,0,[0,["6800[0-79]\\d{3}|6(?:[235]\\d\\d|6(?:0[0-5]|[1-9]\\d)|8(?:0[1-9]|[14-8]\\d|2[5-9]|[39][0-4]))\\d{4}",[8]]]],"MP":["1","011","[58]\\d{9}|(?:67|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","670$1",0,"670",[0,["670(?:2(?:3[3-7]|56|8[4-8])|32[1-38]|4(?:33|8[348])|5(?:32|55|88)|6(?:64|70|82)|78[3589]|8[3-9]8|989)\\d{4}"]]],"MQ":["596","00","(?:69|80)\\d{7}|(?:59|97)6\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[0,["69(?:6(?:[0-46-9]\\d|5[0-6])|727)\\d{4}"]]],"MR":["222","00","(?:[2-4]\\d\\d|800)\\d{5}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-48]"]]],0,0,0,0,0,0,[0,["[2-4][0-46-9]\\d{6}"]]],"MS":["1","011","(?:[58]\\d\\d|664|900)\\d{7}",[10],0,"1",0,"1|([34]\\d{6})$","664$1",0,"664",[0,["664(?:3(?:49|9[1-6])|49[2-6])\\d{4}"]]],"MT":["356","00","3550\\d{4}|(?:[2579]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2357-9]"]]],0,0,0,0,0,0,[0,["(?:7(?:210|[79]\\d\\d)|9(?:[29]\\d\\d|69[67]|8(?:1[1-3]|89|97)))\\d{4}"]]],"MU":["230","0(?:0|[24-7]0|3[03])","(?:5|8\\d\\d)\\d{7}|[2-468]\\d{6}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[2-46]|8[013]"]],["(\\d{4})(\\d{4})","$1 $2",["5"]],["(\\d{5})(\\d{5})","$1 $2",["8"]]],0,0,0,0,0,0,[0,["5(?:4(?:2[1-389]|7[1-9])|87[15-8])\\d{4}|5(?:2[5-9]|4[3-689]|[57]\\d|8[0-689]|9[0-8])\\d{5}",[8]]],"020"],"MV":["960","0(?:0|19)","(?:800|9[0-57-9]\\d)\\d{7}|[34679]\\d{6}",[7,10],[["(\\d{3})(\\d{4})","$1-$2",["[3467]|9[13-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"]]],0,0,0,0,0,0,[0,["46[46]\\d{4}|(?:7\\d|9[13-9])\\d{5}",[7]]],"00"],"MW":["265","00","(?:[1289]\\d|31|77)\\d{7}|1\\d{6}",[7,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["1[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[137-9]"],"0$1"]],"0",0,0,0,0,0,[0,["111\\d{6}|(?:31|77|[89][89])\\d{7}",[9]]]],"MX":["52","0[09]","1(?:(?:44|99)[1-9]|65[0-689])\\d{7}|(?:1(?:[017]\\d|[235][1-9]|4[0-35-9]|6[0-46-9]|8[1-79]|9[1-8])|[2-9]\\d)\\d{8}",[10,11],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["33|5[56]|81"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2-9]"],0,1],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 $3 $4",["1(?:33|5[56]|81)"],0,1],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 $3 $4",["1"],0,1]],"01",0,"0(?:[12]|4[45])|1",0,0,0,[0,["657[12]\\d{6}|(?:1(?:2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-7][1-9]|3[1-8]|8[1-35-9]|9[2-689])|5(?:[56]\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))|2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[25-7][1-9]|3[1-8]|4\\d|8[1-35-9]|9[2-689])|5(?:[56]\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|6[1-9]|7[12]|8[1-8]|9\\d))\\d{7}"]],"00"],"MY":["60","00","1\\d{8,9}|(?:3\\d|[4-9])\\d{7}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1-$2 $3",["[4-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1-$2 $3",["1(?:[02469]|[378][1-9]|53)|8","1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2 $3",["3"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3-$4",["1(?:[367]|80)"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2 $3",["15"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2 $3",["1"],"0$1"]],"0",0,0,0,0,0,[0,["1(?:1888[689]|4400|8(?:47|8[27])[0-4])\\d{4}|1(?:0(?:[23568]\\d|4[0-6]|7[016-9]|9[0-8])|1(?:[1-5]\\d\\d|6(?:0[5-9]|[1-9]\\d)|7(?:[0134]\\d|2[1-9]|5[0-6]))|(?:[269]\\d|[37][1-9]|4[235-9])\\d|5(?:31|9\\d\\d)|8(?:1[23]|[236]\\d|4[06]|5(?:46|[7-9])|7[016-9]|8[01]|9[0-8]))\\d{5}",[9,10]]]],"MZ":["258","00","(?:2|8\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2|8[2-79]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[0,["8[2-79]\\d{7}",[9]]]],"NA":["264","00","[68]\\d{7,8}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["87"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0",0,0,0,0,0,[0,["(?:60|8[1245])\\d{7}",[9]]]],"NC":["687","00","(?:050|[2-57-9]\\d\\d)\\d{3}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1.$2.$3",["[02-57-9]"]]],0,0,0,0,0,0,[0,["(?:5[0-4]|[79]\\d|8[0-79])\\d{4}"]]],"NE":["227","00","[027-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["08"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[089]|2[013]|7[04]"]]],0,0,0,0,0,0,[0,["(?:23|7[04]|[89]\\d)\\d{6}"]]],"NF":["672","00","[13]\\d{5}",[6],[["(\\d{2})(\\d{4})","$1 $2",["1[0-3]"]],["(\\d)(\\d{5})","$1 $2",["[13]"]]],0,0,"([0-258]\\d{4})$","3$1",0,0,[0,["(?:14|3[58])\\d{4}"]]],"NG":["234","009","(?:[124-7]|9\\d{3})\\d{6}|[1-9]\\d{7}|[78]\\d{9,13}",[7,8,10,11,12,13,14],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["78"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]|9(?:0[3-9]|[1-9])"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[3-7]|8[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["[78]"],"0$1"],["(\\d{3})(\\d{5})(\\d{5,6})","$1 $2 $3",["[78]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:702[0-24-9]|8(?:01|19)[01])\\d{6}|(?:70[13-689]|8(?:0[2-9]|1[0-8])|9(?:0[1-9]|1[2356]))\\d{7}",[10]]]],"NI":["505","00","(?:1800|[25-8]\\d{3})\\d{4}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[125-8]"]]],0,0,0,0,0,0,[0,["(?:5(?:5[0-7]|[78]\\d)|6(?:20|3[035]|4[045]|5[05]|77|8[1-9]|9[059])|(?:7[5-8]|8\\d)\\d)\\d{5}"]]],"NL":["31","00","(?:[124-7]\\d\\d|3(?:[02-9]\\d|1[0-8]))\\d{6}|8\\d{6,9}|9\\d{6,10}|1\\d{4,5}",[5,6,7,8,9,10,11],[["(\\d{3})(\\d{4,7})","$1 $2",["[89]0"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["66"],"0$1"],["(\\d)(\\d{8})","$1 $2",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["1[16-8]|2[259]|3[124]|4[17-9]|5[124679]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-578]|91"],"0$1"],["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3",["9"],"0$1"]],"0",0,0,0,0,0,[0,["(?:6[1-58]|970\\d)\\d{7}",[9,11]]]],"NO":["47","00","(?:0|[2-9]\\d{3})\\d{4}",[5,8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[489]|59"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[235-7]"]]],0,0,0,0,0,"[02-689]|7[0-8]",[0,["(?:4[015-8]|59|9\\d)\\d{6}",[8]]]],"NP":["977","00","(?:1\\d|9)\\d{9}|[1-9]\\d{7}",[8,10,11],[["(\\d)(\\d{7})","$1-$2",["1[2-6]"],"0$1"],["(\\d{2})(\\d{6})","$1-$2",["1[01]|[2-8]|9(?:[1-59]|[67][2-6])"],"0$1"],["(\\d{3})(\\d{7})","$1-$2",["9"]]],"0",0,0,0,0,0,[0,["9(?:6[0-3]|7[024-6]|8[0-24-68])\\d{7}",[10]]]],"NR":["674","00","(?:444|(?:55|8\\d)\\d|666)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[4-68]"]]],0,0,0,0,0,0,[0,["(?:55[3-9]|666|8\\d\\d)\\d{4}"]]],"NU":["683","00","(?:[47]|888\\d)\\d{3}",[4,7],[["(\\d{3})(\\d{4})","$1 $2",["8"]]],0,0,0,0,0,0,[0,["888[4-9]\\d{3}",[7]]]],"NZ":["64","0(?:0|161)","[29]\\d{7,9}|50\\d{5}(?:\\d{2,3})?|6[0-35-9]\\d{6}|7\\d{7,8}|8\\d{4,9}|(?:11\\d|[34])\\d{7}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,8})","$1 $2",["8[1-579]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["50[036-8]|[89]0","50(?:[0367]|88)|[89]0"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["24|[346]|7[2-57-9]|9[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:10|74)|[59]|80"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1|2[028]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,5})","$1 $2 $3",["2(?:[169]|7[0-35-9])|7|86"],"0$1"]],"0",0,0,0,0,0,[0,["2[0-27-9]\\d{7,8}|21\\d{6}",[8,9,10]]],"00"],"OM":["968","00","(?:1505|[279]\\d{3}|500)\\d{4}|800\\d{5,6}",[7,8,9],[["(\\d{3})(\\d{4,6})","$1 $2",["[58]"]],["(\\d{2})(\\d{6})","$1 $2",["2"]],["(\\d{4})(\\d{4})","$1 $2",["[179]"]]],0,0,0,0,0,0,[0,["1505\\d{4}|(?:7(?:[1289]\\d|7[0-4])|9(?:0[1-9]|[1-9]\\d))\\d{5}",[8]]]],"PA":["507","00","(?:00800|8\\d{3})\\d{6}|[68]\\d{7}|[1-57-9]\\d{6}",[7,8,10,11],[["(\\d{3})(\\d{4})","$1-$2",["[1-57-9]"]],["(\\d{4})(\\d{4})","$1-$2",["[68]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[0,["(?:1[16]1|21[89]|6\\d{3}|8(?:1[01]|7[23]))\\d{4}",[7,8]]]],"PE":["51","00|19(?:1[124]|77|90)00","(?:[14-8]|9\\d)\\d{7}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["80"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["1"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[4-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"]]],"0",0,0,0,0,0,[0,["9\\d{8}",[9]]],"00"," Anexo "],"PF":["689","00","4\\d{5}(?:\\d{2})?|8\\d{7,8}",[6,8,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["44"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4|8[7-9]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]],0,0,0,0,0,0,[0,["8[7-9]\\d{6}",[8]]]],"PG":["675","00|140[1-3]","(?:180|[78]\\d{3})\\d{4}|(?:[2-589]\\d|64)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["18|[2-69]|85"]],["(\\d{4})(\\d{4})","$1 $2",["[78]"]]],0,0,0,0,0,0,[0,["(?:7\\d|8[128])\\d{6}",[8]]],"00"],"PH":["63","00","(?:[2-7]|9\\d)\\d{8}|2\\d{5}|(?:1800|8)\\d{7,9}",[6,8,9,10,11,12,13],[["(\\d)(\\d{5})","$1 $2",["2"],"(0$1)"],["(\\d{4})(\\d{4,6})","$1 $2",["3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2","3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))"],"(0$1)"],["(\\d{5})(\\d{4})","$1 $2",["346|4(?:27|9[35])|883","3469|4(?:279|9(?:30|56))|8834"],"(0$1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3-7]|8[2-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{4})(\\d{1,2})(\\d{3})(\\d{4})","$1 $2 $3 $4",["1"]]],"0",0,0,0,0,0,[0,["(?:8(?:1[37]|9[5-8])|9(?:0[5-9]|1[0-24-9]|[235-7]\\d|4[2-9]|8[135-9]|9[1-9]))\\d{7}",[10]]]],"PK":["92","00","122\\d{6}|[24-8]\\d{10,11}|9(?:[013-9]\\d{8,10}|2(?:[01]\\d\\d|2(?:[06-8]\\d|1[01]))\\d{7})|(?:[2-8]\\d{3}|92(?:[0-7]\\d|8[1-9]))\\d{6}|[24-9]\\d{8}|[89]\\d{7}",[8,9,10,11,12],[["(\\d{3})(\\d{3})(\\d{2,7})","$1 $2 $3",["[89]0"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["1"]],["(\\d{3})(\\d{6,7})","$1 $2",["2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])","9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]"],"(0$1)"],["(\\d{2})(\\d{7,8})","$1 $2",["(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]"],"(0$1)"],["(\\d{5})(\\d{5})","$1 $2",["58"],"(0$1)"],["(\\d{3})(\\d{7})","$1 $2",["3"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[24-9]"],"(0$1)"]],"0",0,0,0,0,0,[0,["3(?:[0-24]\\d|3[0-7]|55|64)\\d{7}",[10]]]],"PL":["48","00","(?:6|8\\d\\d)\\d{7}|[1-9]\\d{6}(?:\\d{2})?|[26]\\d{5}",[6,7,8,9,10],[["(\\d{5})","$1",["19"]],["(\\d{3})(\\d{3})","$1 $2",["11|20|64"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1","(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19"]],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["64"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[2-8]|[2-7]|8[1-79]|9[145]"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[0,["21(?:1(?:[145]\\d|3[1-5])|2[0-4]\\d)\\d{4}|(?:45|5[0137]|6[069]|7[2389]|88)\\d{7}",[9]]]],"PM":["508","00","(?:[45]|80\\d\\d)\\d{5}",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[45]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[0,["(?:4[02-4]|5[056])\\d{4}",[6]]]],"PR":["1","011","(?:[589]\\d\\d|787)\\d{7}",[10],0,"1",0,0,0,0,"787|939",[0,["(?:787|939)[2-9]\\d{6}"]]],"PS":["970","00","[2489]2\\d{6}|(?:1\\d|5)\\d{8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2489]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["5"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[0,["5[69]\\d{7}",[9]]]],"PT":["351","00","1693\\d{5}|(?:[26-9]\\d|30)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["2[12]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["16|[236-9]"]]],0,0,0,0,0,0,[0,["6(?:[06]92(?:30|9\\d)|[35]92(?:3[03]|9\\d))\\d{3}|(?:(?:16|6[0356])93|9(?:[1-36]\\d\\d|480))\\d{5}"]]],"PW":["680","01[12]","(?:[24-8]\\d\\d|345|900)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]],0,0,0,0,0,0,[0,["(?:(?:46|83)[0-5]|6[2-4689]0)\\d{4}|(?:45|77|88)\\d{5}"]]],"PY":["595","00","59\\d{4,6}|9\\d{5,10}|(?:[2-46-8]\\d|5[0-8])\\d{4,7}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3,6})","$1 $2",["[2-9]0"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]"],"(0$1)"],["(\\d{3})(\\d{4,5})","$1 $2",["2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["87"]],["(\\d{3})(\\d{6})","$1 $2",["9(?:[5-79]|8[1-6])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["9"]]],"0",0,0,0,0,0,[0,["9(?:51|6[129]|[78][1-6]|9[1-5])\\d{6}",[9]]]],"QA":["974","00","[2-7]\\d{7}|800\\d{4}(?:\\d{2})?|2\\d{6}",[7,8,9],[["(\\d{3})(\\d{4})","$1 $2",["2[126]|8"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]]],0,0,0,0,0,0,[0,["(?:2[89]|[35-7]\\d)\\d{6}",[8]]]],"RE":["262","00","976\\d{6}|(?:26|[68]\\d)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2689]"],"0$1"]],"0",0,0,0,0,"26[23]|69|[89]",[0,["(?:69(?:2\\d\\d|3(?:0[0-46]|1[013]|2[0-2]|3[0-39]|4\\d|5[0-5]|6[0-6]|7[0-27]|8[0-8]|9[0-479]))|976(?:2[27]|3[0-37]|9\\d))\\d{4}"]]],"RO":["40","00","(?:[2378]\\d|90)\\d{7}|[23]\\d{5}",[6,9],[["(\\d{3})(\\d{3})","$1 $2",["2[3-6]","2[3-6]\\d9"],"0$1"],["(\\d{2})(\\d{4})","$1 $2",["219|31"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[23]1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[237-9]"],"0$1"]],"0",0,0,0,0,0,[0,["7020\\d{5}|7(?:0[013-9]|1[0-3]|[2-7]\\d|8[03-8]|9[019])\\d{6}",[9]]],0," int "],"RS":["381","00","38[02-9]\\d{6,9}|6\\d{7,9}|90\\d{4,8}|38\\d{5,6}|(?:7\\d\\d|800)\\d{3,9}|(?:[12]\\d|3[0-79])\\d{5,10}",[6,7,8,9,10,11,12],[["(\\d{3})(\\d{3,9})","$1 $2",["(?:2[389]|39)0|[7-9]"],"0$1"],["(\\d{2})(\\d{5,10})","$1 $2",["[1-36]"],"0$1"]],"0",0,0,0,0,0,[0,["6(?:[0-689]|7\\d)\\d{6,7}",[8,9,10]]]],"RU":["7","810","8\\d{13}|[347-9]\\d{9}",[10,14],[["(\\d{4})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-8]|2[1-9])","7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))","7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2"],"8 ($1)",1],["(\\d{5})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-68]|2[1-9])","7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))","7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[349]|8(?:[02-7]|1[1-8])"],"8 ($1)",1],["(\\d{4})(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3 $4",["8"],"8 ($1)"]],"8",0,0,0,0,"3[04-689]|[489]",[0,["9\\d{9}",[10]]],"8~10"],"RW":["250","00","(?:06|[27]\\d\\d|[89]00)\\d{6}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"]]],"0",0,0,0,0,0,[0,["7[2389]\\d{7}",[9]]]],"SA":["966","00","92\\d{7}|(?:[15]|8\\d)\\d{8}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["9"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["81"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]],"0",0,0,0,0,0,[0,["579[01]\\d{5}|5(?:[013-689]\\d|7[0-35-8])\\d{6}",[9]]]],"SB":["677","0[01]","(?:[1-6]|[7-9]\\d\\d)\\d{4}",[5,7],[["(\\d{2})(\\d{5})","$1 $2",["7|8[4-9]|9(?:[1-8]|9[0-8])"]]],0,0,0,0,0,0,[0,["48\\d{3}|(?:(?:7[1-9]|8[4-9])\\d|9(?:1[2-9]|2[013-9]|3[0-2]|[46]\\d|5[0-46-9]|7[0-689]|8[0-79]|9[0-8]))\\d{4}"]]],"SC":["248","010|0[0-2]","800\\d{4}|(?:[249]\\d|64)\\d{5}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[246]|9[57]"]]],0,0,0,0,0,0,[0,["2[125-8]\\d{5}"]],"00"],"SD":["249","00","[19]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[19]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:1[0-2]|9[0-3569])\\d{7}"]]],"SE":["46","00","(?:[26]\\d\\d|9)\\d{9}|[1-9]\\d{8}|[1-689]\\d{7}|[1-4689]\\d{6}|2\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{2,3})(\\d{2})","$1-$2 $3",["20"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{4})","$1-$2",["9(?:00|39|44|9)"],"0$1",0,"$1 $2"],["(\\d{2})(\\d{3})(\\d{2})","$1-$2 $3",["[12][136]|3[356]|4[0246]|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3"],["(\\d)(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2,3})(\\d{2})","$1-$2 $3",["1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{2,3})(\\d{3})","$1-$2 $3",["9(?:00|39|44)"],"0$1",0,"$1 $2 $3"],["(\\d{2})(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3 $4"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["10|7"],"0$1",0,"$1 $2 $3 $4"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1-$2 $3 $4",["[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{3})","$1-$2 $3 $4",["9"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4 $5",["[26]"],"0$1",0,"$1 $2 $3 $4 $5"]],"0",0,0,0,0,0,[0,["7[02369]\\d{7}",[9]]]],"SG":["65","0[0-3]\\d","(?:(?:1\\d|8)\\d\\d|7000)\\d{7}|[3689]\\d{7}",[8,10,11],[["(\\d{4})(\\d{4})","$1 $2",["[369]|8(?:0[1-5]|[1-9])"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]],["(\\d{4})(\\d{4})(\\d{3})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[0,["8(?:05[0-7]|95[0-2])\\d{4}|(?:8(?:0[1-4]|[1-8]\\d|9[0-4])|9[0-8]\\d)\\d{5}",[8]]]],"SH":["290","00","(?:[256]\\d|8)\\d{3}",[4,5],0,0,0,0,0,0,"[256]",[0,["[56]\\d{4}",[5]]]],"SI":["386","00|10(?:22|66|88|99)","[1-7]\\d{7}|8\\d{4,7}|90\\d{4,6}",[5,6,7,8],[["(\\d{2})(\\d{3,6})","$1 $2",["8[09]|9"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["59|8"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37][01]|4[0139]|51|6"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-57]"],"(0$1)"]],"0",0,0,0,0,0,[0,["65(?:1\\d|55|6[01]|70)\\d{4}|(?:[37][01]|4[0139]|51|6[489])\\d{6}",[8]]],"00"],"SJ":["47","00","0\\d{4}|(?:[489]\\d|[57]9)\\d{6}",[5,8],0,0,0,0,0,0,"79",[0,["(?:4[015-8]|59|9\\d)\\d{6}",[8]]]],"SK":["421","00","[2-689]\\d{8}|[2-59]\\d{6}|[2-5]\\d{5}",[6,7,9],[["(\\d)(\\d{2})(\\d{3,4})","$1 $2 $3",["21"],"0$1"],["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["[3-5][1-8]1","[3-5][1-8]1[67]"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1/$2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[689]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1/$2 $3 $4",["[3-5]"],"0$1"]],"0",0,0,0,0,0,[0,["909[1-9]\\d{5}|9(?:0[1-8]|1[0-24-9]|4[03-57-9]|5\\d)\\d{6}",[9]]]],"SL":["232","00","(?:[237-9]\\d|66)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[236-9]"],"(0$1)"]],"0",0,0,0,0,0,[0,["(?:25|3[0-5]|66|7[2-9]|8[08]|9[09])\\d{6}"]]],"SM":["378","00","(?:0549|[5-7]\\d)\\d{6}",[8,10],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-7]"]],["(\\d{4})(\\d{6})","$1 $2",["0"]]],0,0,"([89]\\d{5})$","0549$1",0,0,[0,["6[16]\\d{6}",[8]]]],"SN":["221","00","(?:[378]\\d|93)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[379]"]]],0,0,0,0,0,0,[0,["7(?:(?:[06-8]\\d|21|90)\\d|5(?:01|[19]0|25|[38]3|[4-7]\\d))\\d{5}"]]],"SO":["252","00","[346-9]\\d{8}|[12679]\\d{7}|[1-5]\\d{6}|[1348]\\d{5}",[6,7,8,9],[["(\\d{2})(\\d{4})","$1 $2",["8[125]"]],["(\\d{6})","$1",["[134]"]],["(\\d)(\\d{6})","$1 $2",["[15]|2[0-79]|3[0-46-8]|4[0-7]"]],["(\\d)(\\d{7})","$1 $2",["24|[67]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3478]|64|90"]],["(\\d{2})(\\d{5,7})","$1 $2",["1|28|6(?:0[5-7]|[1-35-9])|9[2-9]"]]],"0",0,0,0,0,0,[0,["(?:(?:15|(?:3[59]|4[89]|79|8[08])\\d|6(?:0[5-7]|[1-9]\\d)|9(?:0\\d|[2-9]))\\d|2(?:4\\d|8))\\d{5}|[67]\\d{7}",[7,8,9]]]],"SR":["597","00","(?:[2-5]|68|[78]\\d)\\d{5}",[6,7],[["(\\d{2})(\\d{2})(\\d{2})","$1-$2-$3",["56"]],["(\\d{3})(\\d{3})","$1-$2",["[2-5]"]],["(\\d{3})(\\d{4})","$1-$2",["[6-8]"]]],0,0,0,0,0,0,[0,["(?:7[124-7]|8[124-9])\\d{5}",[7]]]],"SS":["211","00","[19]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[19]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:12|9[1257-9])\\d{7}"]]],"ST":["239","00","(?:22|9\\d)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[29]"]]],0,0,0,0,0,0,[0,["900[5-9]\\d{3}|9(?:0[1-9]|[89]\\d)\\d{4}"]]],"SV":["503","00","[267]\\d{7}|[89]00\\d{4}(?:\\d{4})?",[7,8,11],[["(\\d{3})(\\d{4})","$1 $2",["[89]"]],["(\\d{4})(\\d{4})","$1 $2",["[267]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[89]"]]],0,0,0,0,0,0,[0,["66(?:[02-9]\\d\\d|1(?:[02-9]\\d|16))\\d{3}|(?:6[0-57-9]|7\\d)\\d{6}",[8]]]],"SX":["1","011","7215\\d{6}|(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|(5\\d{6})$","721$1",0,"721",[0,["7215(?:1[02]|2\\d|5[034679]|8[014-8])\\d{4}"]]],"SY":["963","00","[1-39]\\d{8}|[1-5]\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-5]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1",1]],"0",0,0,0,0,0,[0,["9[1-689]\\d{7}",[9]]]],"SZ":["268","00","0800\\d{4}|(?:[237]\\d|900)\\d{6}",[8,9],[["(\\d{4})(\\d{4})","$1 $2",["[0237]"]],["(\\d{5})(\\d{4})","$1 $2",["9"]]],0,0,0,0,0,0,[0,["7[6-9]\\d{6}",[8]]]],"TA":["290","00","8\\d{3}",[4],0,0,0,0,0,0,"8"],"TC":["1","011","(?:[58]\\d\\d|649|900)\\d{7}",[10],0,"1",0,"1|([2-479]\\d{6})$","649$1",0,"649",[0,["649(?:2(?:3[129]|4[1-79])|3\\d\\d|4[34][1-3])\\d{4}"]]],"TD":["235","00|16","(?:22|[69]\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2679]"]]],0,0,0,0,0,0,[0,["(?:6[023568]|77|9\\d)\\d{6}"]],"00"],"TG":["228","00","[279]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[279]"]]],0,0,0,0,0,0,[0,["(?:7[09]|9[0-36-9])\\d{6}"]]],"TH":["66","00[1-9]","(?:001800|[2-57]|[689]\\d)\\d{7}|1\\d{7,9}",[8,9,10,13],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[13-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[0,["671[0-8]\\d{5}|(?:14|6[1-6]|[89]\\d)\\d{7}",[9]]]],"TJ":["992","810","(?:00|[1-57-9]\\d)\\d{7}",[9],[["(\\d{6})(\\d)(\\d{2})","$1 $2 $3",["331","3317"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[34]7|91[78]"]],["(\\d{4})(\\d)(\\d{4})","$1 $2 $3",["3[1-5]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[0-57-9]"]]],0,0,0,0,0,0,[0,["41[18]\\d{6}|(?:[034]0|[17][017]|2[02]|5[05]|8[08]|9\\d)\\d{7}"]],"8~10"],"TK":["690","00","[2-47]\\d{3,6}",[4,5,6,7],0,0,0,0,0,0,0,[0,["7[2-4]\\d{2,5}"]]],"TL":["670","00","7\\d{7}|(?:[2-47]\\d|[89]0)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[2-489]|70"]],["(\\d{4})(\\d{4})","$1 $2",["7"]]],0,0,0,0,0,0,[0,["7[2-8]\\d{6}",[8]]]],"TM":["993","810","[1-6]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["12"],"(8 $1)"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-5]"],"(8 $1)"],["(\\d{2})(\\d{6})","$1 $2",["6"],"8 $1"]],"8",0,0,0,0,0,[0,["6\\d{7}"]],"8~10"],"TN":["216","00","[2-57-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-57-9]"]]],0,0,0,0,0,0,[0,["3(?:001|[12]40)\\d{4}|(?:(?:[259]\\d|4[0-7])\\d|3(?:1[1-35]|6[0-4]|91))\\d{5}"]]],"TO":["676","00","(?:0800|(?:[5-8]\\d\\d|999)\\d)\\d{3}|[2-8]\\d{4}",[5,7],[["(\\d{2})(\\d{3})","$1-$2",["[2-4]|50|6[09]|7[0-24-69]|8[05]"]],["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{3})(\\d{4})","$1 $2",["[5-9]"]]],0,0,0,0,0,0,[0,["(?:55[4-6]|6(?:[09]\\d|3[02]|8[15-9])|(?:7\\d|8[46-9])\\d|999)\\d{4}",[7]]]],"TR":["90","00","4\\d{6}|8\\d{11,12}|(?:[2-58]\\d\\d|900)\\d{7}",[7,10,12,13],[["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["512|8[01589]|90"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5(?:[0-59]|61)","5(?:[0-59]|616)","5(?:[0-59]|6161)"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24][1-8]|3[1-9]"],"(0$1)",1],["(\\d{3})(\\d{3})(\\d{6,7})","$1 $2 $3",["80"],"0$1",1]],"0",0,0,0,0,0,[0,["56161\\d{5}|5(?:0[15-7]|1[06]|24|[34]\\d|5[1-59]|9[46])\\d{7}",[10]]]],"TT":["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-46-8]\\d{6})$","868$1",0,"868",[0,["868(?:(?:2[5-9]|3\\d)\\d|4(?:3[0-6]|[6-9]\\d)|6(?:20|78|8\\d)|7(?:0[1-9]|1[02-9]|[2-9]\\d))\\d{4}"]]],"TV":["688","00","(?:2|7\\d\\d|90)\\d{4}",[5,6,7],[["(\\d{2})(\\d{3})","$1 $2",["2"]],["(\\d{2})(\\d{4})","$1 $2",["90"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]],0,0,0,0,0,0,[0,["(?:7[01]\\d|90)\\d{4}",[6,7]]]],"TW":["886","0(?:0[25-79]|19)","[2-689]\\d{8}|7\\d{9,10}|[2-8]\\d{7}|2\\d{6}",[7,8,9,10,11],[["(\\d{2})(\\d)(\\d{4})","$1 $2 $3",["202"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[258]0"],"0$1"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]","[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,5})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[0,["(?:40001[0-2]|9[0-8]\\d{4})\\d{3}",[9]]],0,"#"],"TZ":["255","00[056]","(?:[25-8]\\d|41|90)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[24]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["5"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[67]"],"0$1"]],"0",0,0,0,0,0,[0,["77[2-9]\\d{6}|(?:6[125-9]|7[13-689])\\d{7}"]]],"UA":["380","00","[89]\\d{9}|[3-9]\\d{8}",[9,10],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]","6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])","3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3-7]|89|9[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:39|50|6[36-8]|7[1-3]|9[1-9])\\d{7}",[9]]],"0~0"],"UG":["256","00[057]","800\\d{6}|(?:[29]0|[347]\\d)\\d{7}",[9],[["(\\d{4})(\\d{5})","$1 $2",["202","2024"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[27-9]|4(?:6[45]|[7-9])"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[34]"],"0$1"]],"0",0,0,0,0,0,[0,["726[01]\\d{5}|7(?:[01578]\\d|20|36|[46][0-4]|9[89])\\d{6}"]]],"US":["1","011","[2-9]\\d{9}|3\\d{6}",[10],[["(\\d{3})(\\d{4})","$1-$2",["310"],0,1],["(\\d{3})(\\d{3})(\\d{4})","($1) $2-$3",["[2-9]"],0,1,"$1-$2-$3"]],"1",0,0,0,0,0,[0,["505(?:[2-57-9]\\d\\d|6(?:[0-35-9]\\d|44))\\d{4}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[01679]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[068]|3[0-289]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-389]|8[04-69]))[2-9]\\d{6}"]]],"UY":["598","0(?:0|1[3-9]\\d)","4\\d{9}|[1249]\\d{7}|(?:[49]\\d|80)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["405|8|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[124]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["4"],"0$1"]],"0",0,0,0,0,0,[0,["9[1-9]\\d{6}",[8]]],"00"," int. "],"UZ":["998","810","(?:33|55|[679]\\d|88)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[35-9]"],"8 $1"]],"8",0,0,0,0,0,[0,["(?:(?:33|88|9[0-57-9])\\d{3}|55(?:50[013]|90\\d)|6(?:1(?:2(?:2[01]|98)|35[0-4]|50\\d|61[23]|7(?:[01][017]|4\\d|55|9[5-9]))|2(?:(?:11|7\\d)\\d|2(?:[12]1|9[01379])|5(?:[126]\\d|3[0-4]))|5(?:19[01]|2(?:27|9[26])|(?:30|59|7\\d)\\d)|6(?:2(?:1[5-9]|2[0367]|38|41|52|60)|(?:3[79]|9[0-3])\\d|4(?:56|83)|7(?:[07]\\d|1[017]|3[07]|4[047]|5[057]|67|8[0178]|9[79]))|7(?:2(?:24|3[237]|4[5-9]|7[15-8])|5(?:7[12]|8[0589])|7(?:0\\d|[39][07])|9(?:0\\d|7[079]))|9(?:2(?:1[1267]|3[01]|5\\d|7[0-4])|(?:5[67]|7\\d)\\d|6(?:2[0-26]|8\\d)))|7(?:[07]\\d{3}|1(?:13[01]|6(?:0[47]|1[67]|66)|71[3-69]|98\\d)|2(?:2(?:2[79]|95)|3(?:2[5-9]|6[0-6])|57\\d|7(?:0\\d|1[17]|2[27]|3[37]|44|5[057]|66|88))|3(?:2(?:1[0-6]|21|3[469]|7[159])|(?:33|9[4-6])\\d|5(?:0[0-4]|5[579]|9\\d)|7(?:[0-3579]\\d|4[0467]|6[67]|8[078]))|4(?:2(?:29|5[0257]|6[0-7]|7[1-57])|5(?:1[0-4]|8\\d|9[5-9])|7(?:0\\d|1[024589]|2[0-27]|3[0137]|[46][07]|5[01]|7[5-9]|9[079])|9(?:7[015-9]|[89]\\d))|5(?:112|2(?:0\\d|2[29]|[49]4)|3[1568]\\d|52[6-9]|7(?:0[01578]|1[017]|[23]7|4[047]|[5-7]\\d|8[78]|9[079]))|6(?:2(?:2[1245]|4[2-4])|39\\d|41[179]|5(?:[349]\\d|5[0-2])|7(?:0[017]|[13]\\d|22|44|55|67|88))|9(?:22[128]|3(?:2[0-4]|7\\d)|57[02569]|7(?:2[05-9]|3[37]|4\\d|60|7[2579]|87|9[07]))))\\d{4}"]],"8~10"],"VA":["39","00","0\\d{5,10}|3[0-8]\\d{7,10}|55\\d{8}|8\\d{5}(?:\\d{2,4})?|(?:1\\d|39)\\d{7,8}",[6,7,8,9,10,11],0,0,0,0,0,0,"06698",[0,["3[1-9]\\d{8}|3[2-9]\\d{7}",[9,10]]]],"VC":["1","011","(?:[58]\\d\\d|784|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","784$1",0,"784",[0,["784(?:4(?:3[0-5]|5[45]|89|9[0-8])|5(?:2[6-9]|3[0-4])|720)\\d{4}"]]],"VE":["58","00","[68]00\\d{7}|(?:[24]\\d|[59]0)\\d{8}",[10],[["(\\d{3})(\\d{7})","$1-$2",["[24-689]"],"0$1"]],"0",0,0,0,0,0,[0,["4(?:1[24-8]|2[46])\\d{7}"]]],"VG":["1","011","(?:284|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-578]\\d{6})$","284$1",0,"284",[0,["284496[6-9]\\d{3}|284(?:245|3(?:0[0-3]|4[0-7]|68|9[34])|4(?:4[0-6]|68|99)|5(?:4[0-7]|68|9[69]))\\d{4}"]]],"VI":["1","011","[58]\\d{9}|(?:34|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","340$1",0,"340",[0,["340(?:2(?:0[0-38]|2[06-8]|4[49]|77)|3(?:32|44)|4(?:2[23]|44|7[34]|89)|5(?:1[34]|55)|6(?:2[56]|4[23]|77|9[023])|7(?:1[2-57-9]|2[57]|7\\d)|884|998)\\d{4}"]]],"VN":["84","00","[12]\\d{9}|[135-9]\\d{8}|[16]\\d{7}|[16-8]\\d{6}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["80"],"0$1",1],["(\\d{4})(\\d{4,6})","$1 $2",["1"],0,1],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[69]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3578]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["2[48]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["2"],"0$1",1]],"0",0,0,0,0,0,[0,["(?:5(?:2[238]|59)|89[6-9]|99[013-9])\\d{6}|(?:3\\d|5[689]|7[06-9]|8[1-8]|9[0-8])\\d{7}",[9]]]],"VU":["678","00","[57-9]\\d{6}|(?:[238]\\d|48)\\d{3}",[5,7],[["(\\d{3})(\\d{4})","$1 $2",["[57-9]"]]],0,0,0,0,0,0,[0,["(?:[58]\\d|7[013-7])\\d{5}",[7]]]],"WF":["681","00","(?:40|72)\\d{4}|8\\d{5}(?:\\d{3})?",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[478]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]],0,0,0,0,0,0,[0,["(?:72|8[23])\\d{4}",[6]]]],"WS":["685","0","(?:[2-6]|8\\d{5})\\d{4}|[78]\\d{6}|[68]\\d{5}",[5,6,7,10],[["(\\d{5})","$1",["[2-5]|6[1-9]"]],["(\\d{3})(\\d{3,7})","$1 $2",["[68]"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]],0,0,0,0,0,0,[0,["(?:7[1-35-7]|8(?:[3-7]|9\\d{3}))\\d{5}",[7,10]]]],"XK":["383","00","[23]\\d{7,8}|(?:4\\d\\d|[89]00)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[23]"],"0$1"]],"0",0,0,0,0,0,[0,["4[3-9]\\d{6}",[8]]]],"YE":["967","00","(?:1|7\\d)\\d{7}|[1-7]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-6]|7[24-68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[0,["7[0137]\\d{7}",[9]]]],"YT":["262","00","80\\d{7}|(?:26|63)9\\d{6}",[9],0,"0",0,0,0,0,"269|63",[0,["639(?:0[0-79]|1[019]|[267]\\d|3[09]|40|5[05-9]|9[04-79])\\d{4}"]]],"ZA":["27","00","[1-79]\\d{8}|8\\d{4,9}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,4})","$1 $2",["8[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["8[1-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["860"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0",0,0,0,0,0,[0,["(?:1(?:3492[0-25]|4495[0235]|549(?:20|5[01]))|4[34]492[01])\\d{3}|8[1-4]\\d{3,7}|(?:2[27]|47|54)4950\\d{3}|(?:1(?:049[2-4]|9[12]\\d\\d)|(?:6\\d|7[0-46-9])\\d{3}|8(?:5\\d{3}|7(?:08[67]|158|28[5-9]|310)))\\d{4}|(?:1[6-8]|28|3[2-69]|4[025689]|5[36-8])4920\\d{3}|(?:12|[2-5]1)492\\d{4}",[5,6,7,8,9]]]],"ZM":["260","00","800\\d{6}|(?:21|63|[79]\\d)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[28]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[79]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:7[5-79]|9[5-8])\\d{7}"]]],"ZW":["263","00","2(?:[0-57-9]\\d{6,8}|6[0-24-9]\\d{6,7})|[38]\\d{9}|[35-8]\\d{8}|[3-6]\\d{7}|[1-689]\\d{6}|[1-3569]\\d{5}|[1356]\\d{4}",[5,6,7,8,9,10],[["(\\d{3})(\\d{3,5})","$1 $2",["2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]"],"0$1"],["(\\d)(\\d{3})(\\d{2,4})","$1 $2 $3",["[49]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["80"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2","2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)","2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["29[013-9]|39|54"],"0$1"],["(\\d{4})(\\d{3,5})","$1 $2",["(?:25|54)8","258|5483"],"0$1"]],"0",0,0,0,0,0,[0,["7(?:[178]\\d|3[1-9])\\d{6}",[9]]]]},"nonGeographic":{"800":["800",0,"(?:00|[1-9]\\d)\\d{6}",[8],[["(\\d{4})(\\d{4})","$1 $2",["\\d"]]],0,0,0,0,0,0,[0,0,["(?:00|[1-9]\\d)\\d{6}"]]],"808":["808",0,"[1-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[1-9]"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,["[1-9]\\d{7}"]]],"870":["870",0,"7\\d{11}|[35-7]\\d{8}",[9,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[35-7]"]]],0,0,0,0,0,0,[0,["(?:[356]|774[45])\\d{8}|7[6-8]\\d{7}"]]],"878":["878",0,"10\\d{10}",[12],[["(\\d{2})(\\d{5})(\\d{5})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["10\\d{10}"]]],"881":["881",0,"[0-36-9]\\d{8}",[9],[["(\\d)(\\d{3})(\\d{5})","$1 $2 $3",["[0-36-9]"]]],0,0,0,0,0,0,[0,["[0-36-9]\\d{8}"]]],"882":["882",0,"[13]\\d{6}(?:\\d{2,5})?|285\\d{9}|(?:[19]\\d|49)\\d{6}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5})","$1 $2",["16|342"]],["(\\d{2})(\\d{6})","$1 $2",["4"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[19]"]],["(\\d{2})(\\d{4})(\\d{3})","$1 $2 $3",["3[23]"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["34[57]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["34"]],["(\\d{2})(\\d{4,5})(\\d{5})","$1 $2 $3",["[1-3]"]]],0,0,0,0,0,0,[0,["342\\d{4}|(?:337|49)\\d{6}|3(?:2|47|7\\d{3})\\d{7}",[7,8,9,10,12]],0,0,0,0,0,0,["1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\d{4}|6\\d{5,10})|(?:(?:285\\d\\d|3(?:45|[69]\\d{3}))\\d|9[89])\\d{6}"]]],"883":["883",0,"(?:210|370\\d\\d)\\d{7}|51\\d{7}(?:\\d{3})?",[9,10,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["510"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["2"]],["(\\d{4})(\\d{4})(\\d{4})","$1 $2 $3",["51[13]"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[35]"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["(?:210|(?:370[1-9]|51[013]0)\\d)\\d{7}|5100\\d{5}"]]],"888":["888",0,"\\d{11}",[11],[["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3"]],0,0,0,0,0,0,[0,0,0,0,0,0,["\\d{11}"]]],"979":["979",0,"[1359]\\d{8}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[1359]"]]],0,0,0,0,0,0,[0,0,0,["[1359]\\d{8}"]]]}} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.mobile.json.d.ts b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.mobile.json.d.ts new file mode 100644 index 00000000..ccfebccc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.mobile.json.d.ts @@ -0,0 +1,4 @@ +import { MetadataJson } from './types'; + +declare const metadata: MetadataJson; +export default metadata; diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.mobile.json.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.mobile.json.js new file mode 100644 index 00000000..169caaff --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/metadata.mobile.json.js @@ -0,0 +1,4 @@ +// This file is a workaround for a bug in web browsers' "native" +// ES6 importing system which is uncapable of importing "*.json" files. +// https://github.com/catamphetamine/libphonenumber-js/issues/239 +export default {"version":4,"country_calling_codes":{"1":["US","AG","AI","AS","BB","BM","BS","CA","DM","DO","GD","GU","JM","KN","KY","LC","MP","MS","PR","SX","TC","TT","VC","VG","VI"],"7":["RU","KZ"],"20":["EG"],"27":["ZA"],"30":["GR"],"31":["NL"],"32":["BE"],"33":["FR"],"34":["ES"],"36":["HU"],"39":["IT","VA"],"40":["RO"],"41":["CH"],"43":["AT"],"44":["GB","GG","IM","JE"],"45":["DK"],"46":["SE"],"47":["NO","SJ"],"48":["PL"],"49":["DE"],"51":["PE"],"52":["MX"],"53":["CU"],"54":["AR"],"55":["BR"],"56":["CL"],"57":["CO"],"58":["VE"],"60":["MY"],"61":["AU","CC","CX"],"62":["ID"],"63":["PH"],"64":["NZ"],"65":["SG"],"66":["TH"],"81":["JP"],"82":["KR"],"84":["VN"],"86":["CN"],"90":["TR"],"91":["IN"],"92":["PK"],"93":["AF"],"94":["LK"],"95":["MM"],"98":["IR"],"211":["SS"],"212":["MA","EH"],"213":["DZ"],"216":["TN"],"218":["LY"],"220":["GM"],"221":["SN"],"222":["MR"],"223":["ML"],"224":["GN"],"225":["CI"],"226":["BF"],"227":["NE"],"228":["TG"],"229":["BJ"],"230":["MU"],"231":["LR"],"232":["SL"],"233":["GH"],"234":["NG"],"235":["TD"],"236":["CF"],"237":["CM"],"238":["CV"],"239":["ST"],"240":["GQ"],"241":["GA"],"242":["CG"],"243":["CD"],"244":["AO"],"245":["GW"],"246":["IO"],"247":["AC"],"248":["SC"],"249":["SD"],"250":["RW"],"251":["ET"],"252":["SO"],"253":["DJ"],"254":["KE"],"255":["TZ"],"256":["UG"],"257":["BI"],"258":["MZ"],"260":["ZM"],"261":["MG"],"262":["RE","YT"],"263":["ZW"],"264":["NA"],"265":["MW"],"266":["LS"],"267":["BW"],"268":["SZ"],"269":["KM"],"290":["SH","TA"],"291":["ER"],"297":["AW"],"298":["FO"],"299":["GL"],"350":["GI"],"351":["PT"],"352":["LU"],"353":["IE"],"354":["IS"],"355":["AL"],"356":["MT"],"357":["CY"],"358":["FI","AX"],"359":["BG"],"370":["LT"],"371":["LV"],"372":["EE"],"373":["MD"],"374":["AM"],"375":["BY"],"376":["AD"],"377":["MC"],"378":["SM"],"380":["UA"],"381":["RS"],"382":["ME"],"383":["XK"],"385":["HR"],"386":["SI"],"387":["BA"],"389":["MK"],"420":["CZ"],"421":["SK"],"423":["LI"],"500":["FK"],"501":["BZ"],"502":["GT"],"503":["SV"],"504":["HN"],"505":["NI"],"506":["CR"],"507":["PA"],"508":["PM"],"509":["HT"],"590":["GP","BL","MF"],"591":["BO"],"592":["GY"],"593":["EC"],"594":["GF"],"595":["PY"],"596":["MQ"],"597":["SR"],"598":["UY"],"599":["CW","BQ"],"670":["TL"],"672":["NF"],"673":["BN"],"674":["NR"],"675":["PG"],"676":["TO"],"677":["SB"],"678":["VU"],"679":["FJ"],"680":["PW"],"681":["WF"],"682":["CK"],"683":["NU"],"685":["WS"],"686":["KI"],"687":["NC"],"688":["TV"],"689":["PF"],"690":["TK"],"691":["FM"],"692":["MH"],"850":["KP"],"852":["HK"],"853":["MO"],"855":["KH"],"856":["LA"],"880":["BD"],"886":["TW"],"960":["MV"],"961":["LB"],"962":["JO"],"963":["SY"],"964":["IQ"],"965":["KW"],"966":["SA"],"967":["YE"],"968":["OM"],"970":["PS"],"971":["AE"],"972":["IL"],"973":["BH"],"974":["QA"],"975":["BT"],"976":["MN"],"977":["NP"],"992":["TJ"],"993":["TM"],"994":["AZ"],"995":["GE"],"996":["KG"],"998":["UZ"]},"countries":{"AC":["247","00","(?:[01589]\\d|[46])\\d{4}",[5,6],0,0,0,0,0,0,0,[0,["4\\d{4}",[5]]]],"AD":["376","00","(?:1|6\\d)\\d{7}|[135-9]\\d{5}",[6,8,9],[["(\\d{3})(\\d{3})","$1 $2",["[135-9]"]],["(\\d{4})(\\d{4})","$1 $2",["1"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]],0,0,0,0,0,0,[0,["690\\d{6}|[356]\\d{5}",[6,9]]]],"AE":["971","00","(?:[4-7]\\d|9[0-689])\\d{7}|800\\d{2,9}|[2-4679]\\d{7}",[5,6,7,8,9,10,11,12],[["(\\d{3})(\\d{2,9})","$1 $2",["60|8"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[236]|[479][2-8]"],"0$1"],["(\\d{3})(\\d)(\\d{5})","$1 $2 $3",["[479]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"]],"0",0,0,0,0,0,[0,["5[024-68]\\d{7}",[9]]]],"AF":["93","00","[2-7]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"]],"0",0,0,0,0,0,[0,["7\\d{8}"]]],"AG":["1","011","(?:268|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([457]\\d{6})$","268$1",0,"268",[0,["268(?:464|7(?:1[3-9]|[28]\\d|3[0246]|64|7[0-689]))\\d{4}"]]],"AI":["1","011","(?:264|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2457]\\d{6})$","264$1",0,"264",[0,["264(?:235|4(?:69|76)|5(?:3[6-9]|8[1-4])|7(?:29|72))\\d{4}"]]],"AL":["355","00","(?:700\\d\\d|900)\\d{3}|8\\d{5,7}|(?:[2-5]|6\\d)\\d{7}",[6,7,8,9],[["(\\d{3})(\\d{3,4})","$1 $2",["80|9"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["4[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2358][2-5]|4"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["[23578]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["6"],"0$1"]],"0",0,0,0,0,0,[0,["6(?:[78][2-9]|9\\d)\\d{6}",[9]]]],"AM":["374","00","(?:[1-489]\\d|55|60|77)\\d{6}",[8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[89]0"],"0 $1"],["(\\d{3})(\\d{5})","$1 $2",["2|3[12]"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["1|47"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[3-9]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:33|4[1349]|55|77|88|9[13-9])\\d{6}"]]],"AO":["244","00","[29]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[29]"]]],0,0,0,0,0,0,[0,["9[1-59]\\d{7}"]]],"AR":["54","00","(?:11|[89]\\d\\d)\\d{8}|[2368]\\d{9}",[10,11],[["(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])","2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["1"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2-$3",["[23]"],"0$1",1],["(\\d)(\\d{4})(\\d{2})(\\d{4})","$2 15-$3-$4",["9(?:2[2-469]|3[3-578])","9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))","9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",0,"$1 $2 $3-$4"],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 15-$3-$4",["91"],"0$1",0,"$1 $2 $3-$4"],["(\\d{3})(\\d{3})(\\d{5})","$1-$2-$3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 15-$3-$4",["9"],"0$1",0,"$1 $2 $3-$4"]],"0",0,"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?","9$1",0,0,[0,["93(?:7(?:1[15]|81)[46]|8(?:(?:21|4[16]|69|9[12])[46]|88[013-9]))\\d{5}|9(?:29(?:54|66)|3(?:7(?:55|77)|865))[2-8]\\d{5}|9(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|473|9(?:[07]2|2[26]|34|46))|3327)[45]\\d{5}|9(?:2(?:284|3(?:02|23)|657|920)|3(?:4(?:8[27]|92)|541|878))[2-7]\\d{5}|9(?:2(?:(?:26|62)2|320|477|9(?:42|83))|3(?:329|4(?:[47]6|62|89)|564))[2-6]\\d{5}|(?:675\\d|9(?:11[1-8]\\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-7]|[235][4-6]|84)|5(?:1[2-9]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:0[45]|[17][2-6]|3[4-6]|[58][3-6]))))\\d{6}|92(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|475|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\d{5}|9(?:2(?:2(?:57|81)|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|71)|5(?:25|37|4[347]|71)|7(?:18|5[17])))[3-6]\\d{5}|9(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[03-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[145]|4[13]|5[468]|7[2-5]|8[26])|8(?:2[5-7]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\d{5}"]]],"AS":["1","011","(?:[58]\\d\\d|684|900)\\d{7}",[10],0,"1",0,"1|([267]\\d{6})$","684$1",0,"684",[0,["684(?:2(?:48|5[2468]|72)|7(?:3[13]|70|82))\\d{4}"]]],"AT":["43","00","1\\d{3,12}|2\\d{6,12}|43(?:(?:0\\d|5[02-9])\\d{3,9}|2\\d{4,5}|[3467]\\d{4}|8\\d{4,6}|9\\d{4,7})|5\\d{4,12}|8\\d{7,12}|9\\d{8,12}|(?:[367]\\d|4[0-24-9])\\d{4,11}",[4,5,6,7,8,9,10,11,12,13],[["(\\d)(\\d{3,12})","$1 $2",["1(?:11|[2-9])"],"0$1"],["(\\d{3})(\\d{2})","$1 $2",["517"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["5[079]"],"0$1"],["(\\d{3})(\\d{3,10})","$1 $2",["(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]"],"0$1"],["(\\d{4})(\\d{3,9})","$1 $2",["[2-467]|5[2-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["5"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,7})","$1 $2 $3",["5"],"0$1"]],"0",0,0,0,0,0,[0,["6(?:5[0-3579]|6[013-9]|[7-9]\\d)\\d{4,10}",[7,8,9,10,11,12,13]]]],"AU":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{7}(?:\\d(?:\\d{2})?)?|8[0-24-9]\\d{7})|[2-478]\\d{8}|1\\d{4,7}",[5,6,7,8,9,10,12],[["(\\d{2})(\\d{3,4})","$1 $2",["16"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,4})","$1 $2 $3",["16"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["14|4"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[2378]"],"(0$1)"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:30|[89])"]]],"0",0,"0|(183[12])",0,0,0,[0,["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]]],"0011"],"AW":["297","00","(?:[25-79]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[25-9]"]]],0,0,0,0,0,0,[0,["(?:290|5[69]\\d|6(?:[03]0|22|4[0-2]|[69]\\d)|7(?:[34]\\d|7[07])|9(?:6[45]|9[4-8]))\\d{4}"]]],"AX":["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","2\\d{4,9}|35\\d{4,5}|(?:60\\d\\d|800)\\d{4,6}|7\\d{5,11}|(?:[14]\\d|3[0-46-9]|50)\\d{4,8}",[5,6,7,8,9,10,11,12],0,"0",0,0,0,0,"18",[0,["4946\\d{2,6}|(?:4[0-8]|50)\\d{4,8}",[6,7,8,9,10]]],"00"],"AZ":["994","00","365\\d{6}|(?:[124579]\\d|60|88)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[28]|2|365|46","1[28]|2|365[45]|46","1[28]|2|365(?:4|5[02])|46"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[13-9]"],"0$1"]],"0",0,0,0,0,0,[0,["36554\\d{4}|(?:[16]0|4[04]|5[015]|7[07]|99)\\d{7}"]]],"BA":["387","00","6\\d{8}|(?:[35689]\\d|49|70)\\d{6}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["6[1-3]|[7-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2-$3",["[3-5]|6[56]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["6"],"0$1"]],"0",0,0,0,0,0,[0,["6040\\d{5}|6(?:03|[1-356]|44|7\\d)\\d{6}"]]],"BB":["1","011","(?:246|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","246$1",0,"246",[0,["246(?:(?:2(?:[3568]\\d|4[0-57-9])|3(?:5[2-9]|6[0-6])|4(?:46|5\\d)|69[5-7]|8(?:[2-5]\\d|83))\\d|52(?:1[147]|20))\\d{3}"]]],"BD":["880","00","[1-469]\\d{9}|8[0-79]\\d{7,8}|[2-79]\\d{8}|[2-9]\\d{7}|[3-9]\\d{6}|[57-9]\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{4,6})","$1-$2",["31[5-8]|[459]1"],"0$1"],["(\\d{3})(\\d{3,7})","$1-$2",["3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:28|4[14]|5)|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]"],"0$1"],["(\\d{4})(\\d{3,6})","$1-$2",["[13-9]|22"],"0$1"],["(\\d)(\\d{7,8})","$1-$2",["2"],"0$1"]],"0",0,0,0,0,0,[0,["(?:1[13-9]\\d|644)\\d{7}|(?:3[78]|44|66)[02-9]\\d{7}",[10]]]],"BE":["32","00","4\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:80|9)0"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[239]|4[23]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[15-8]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4"],"0$1"]],"0",0,0,0,0,0,[0,["4[5-9]\\d{7}",[9]]]],"BF":["226","00","[025-7]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[025-7]"]]],0,0,0,0,0,0,[0,["(?:0[1-35-7]|5[1-8]|[67]\\d)\\d{6}"]]],"BG":["359","00","[2-7]\\d{6,7}|[89]\\d{6,8}|2\\d{5}",[6,7,8,9],[["(\\d)(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["43[1-6]|70[1-9]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:70|8)0"],"0$1"],["(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3",["43[1-7]|7"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[48]|9[08]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"]],"0",0,0,0,0,0,[0,["(?:43[07-9]|99[69]\\d)\\d{5}|(?:8[7-9]|98)\\d{7}",[8,9]]]],"BH":["973","00","[136-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[13679]|8[047]"]]],0,0,0,0,0,0,[0,["(?:3(?:[1-79]\\d|8[0-47-9])\\d|6(?:3(?:00|33|6[16])|6(?:3[03-9]|[69]\\d|7[0-6])))\\d{4}"]]],"BI":["257","00","(?:[267]\\d|31)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2367]"]]],0,0,0,0,0,0,[0,["(?:29|6[1257-9]|7[125-9])\\d{6}"]]],"BJ":["229","00","(?:[25689]\\d|40)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24-689]"]]],0,0,0,0,0,0,[0,["(?:40|5[1-9]|6\\d|9[013-9])\\d{6}"]]],"BL":["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[0,["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"]]],"BM":["1","011","(?:441|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","441$1",0,"441",[0,["441(?:[2378]\\d|5[0-39])\\d{5}"]]],"BN":["673","00","[2-578]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-578]"]]],0,0,0,0,0,0,[0,["(?:22[89]|[78]\\d\\d)\\d{4}"]]],"BO":["591","00(?:1\\d)?","(?:[2-467]\\d\\d|8001)\\d{5}",[8,9],[["(\\d)(\\d{7})","$1 $2",["[23]|4[46]"]],["(\\d{8})","$1",["[67]"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["8"]]],"0",0,"0(1\\d)?",0,0,0,[0,["[67]\\d{7}",[8]]]],"BQ":["599","00","(?:[34]1|7\\d)\\d{5}",[7],0,0,0,0,0,0,"[347]",[0,["(?:31(?:8[14-8]|9[14578])|416[14-9]|7(?:0[01]|7[07]|8\\d|9[056])\\d)\\d{3}"]]],"BR":["55","00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)","(?:[1-46-9]\\d\\d|5(?:[0-46-9]\\d|5[0-46-9]))\\d{8}|[1-9]\\d{9}|[3589]\\d{8}|[34]\\d{7}",[8,9,10,11],[["(\\d{4})(\\d{4})","$1-$2",["300|4(?:0[02]|37)","4(?:02|37)0|[34]00"]],["(\\d{3})(\\d{2,3})(\\d{4})","$1 $2 $3",["(?:[358]|90)0"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]"],"($1)"],["(\\d{2})(\\d{5})(\\d{4})","$1 $2-$3",["[16][1-9]|[2-57-9]"],"($1)"]],"0",0,"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\d{10,11}))?","$2",0,0,[0,["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])(?:7|9\\d)\\d{7}",[10,11]]]],"BS":["1","011","(?:242|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([3-8]\\d{6})$","242$1",0,"242",[0,["242(?:3(?:5[79]|7[56]|95)|4(?:[23][1-9]|4[1-35-9]|5[1-8]|6[2-8]|7\\d|81)|5(?:2[45]|3[35]|44|5[1-46-9]|65|77)|6[34]6|7(?:27|38)|8(?:0[1-9]|1[02-9]|2\\d|[89]9))\\d{4}"]]],"BT":["975","00","[17]\\d{7}|[2-8]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[2-68]|7[246]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[67]|7"]]],0,0,0,0,0,0,[0,["(?:1[67]|77)\\d{6}",[8]]]],"BW":["267","00","(?:0800|(?:[37]|800)\\d)\\d{6}|(?:[2-6]\\d|90)\\d{5}",[7,8,10],[["(\\d{2})(\\d{5})","$1 $2",["90"]],["(\\d{3})(\\d{4})","$1 $2",["[24-6]|3[15-79]"]],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37]"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[0,["(?:321|7(?:[1-7]\\d|8[01]))\\d{5}",[8]]]],"BY":["375","810","(?:[12]\\d|33|44|902)\\d{7}|8(?:0[0-79]\\d{5,7}|[1-7]\\d{9})|8(?:1[0-489]|[5-79]\\d)\\d{7}|8[1-79]\\d{6,7}|8[0-79]\\d{5}|8\\d{5}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3})","$1 $2",["800"],"8 $1"],["(\\d{3})(\\d{2})(\\d{2,4})","$1 $2 $3",["800"],"8 $1"],["(\\d{4})(\\d{2})(\\d{3})","$1 $2-$3",["1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])","1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])"],"8 0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["1(?:[56]|7[467])|2[1-3]"],"8 0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-4]"],"8 0$1"],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["[89]"],"8 $1"]],"8",0,"0|80?",0,0,0,[0,["(?:2(?:5[5-79]|9[1-9])|(?:33|44)\\d)\\d{6}",[9]]],"8~10"],"BZ":["501","00","(?:0800\\d|[2-8])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1-$2",["[2-8]"]],["(\\d)(\\d{3})(\\d{4})(\\d{3})","$1-$2-$3-$4",["0"]]],0,0,0,0,0,0,[0,["6[0-35-7]\\d{5}",[7]]]],"CA":["1","011","(?:[2-8]\\d|90)\\d{8}|3\\d{6}",[7,10],0,"1",0,0,0,0,0,[0,["(?:2(?:04|[23]6|[48]9|50|63)|3(?:06|43|6[578])|4(?:03|1[68]|3[178]|50|68|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|13|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\d{6}",[10]]]],"CC":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[0,["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]]],"0011"],"CD":["243","00","[189]\\d{8}|[1-68]\\d{6}",[7,9],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[1-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,[0,["88\\d{5}|(?:8[0-59]|9[017-9])\\d{7}"]]],"CF":["236","00","(?:[27]\\d{3}|8776)\\d{4}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[278]"]]],0,0,0,0,0,0,[0,["7[02457]\\d{6}"]]],"CG":["242","00","222\\d{6}|(?:0\\d|80)\\d{7}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["8"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[02]"]]],0,0,0,0,0,0,[0,["026(?:1[0-5]|6[6-9])\\d{4}|0(?:[14-6]\\d\\d|2(?:40|5[5-8]|6[07-9]))\\d{5}"]]],"CH":["41","00","8\\d{11}|[2-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8[047]|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-79]|81"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["8"],"0$1"]],"0",0,0,0,0,0,[0,["7[35-9]\\d{7}"]]],"CI":["225","00","[02]\\d{9}",[10],[["(\\d{2})(\\d{2})(\\d)(\\d{5})","$1 $2 $3 $4",["2"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3 $4",["0"]]],0,0,0,0,0,0,[0,["0704[0-7]\\d{5}|0(?:[15]\\d\\d|7(?:0[0-37-9]|[4-9][7-9]))\\d{6}"]]],"CK":["682","00","[2-578]\\d{4}",[5],[["(\\d{2})(\\d{3})","$1 $2",["[2-578]"]]],0,0,0,0,0,0,[0,["[578]\\d{4}"]]],"CL":["56","(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0","12300\\d{6}|6\\d{9,10}|[2-9]\\d{8}",[9,10,11],[["(\\d{5})(\\d{4})","$1 $2",["219","2196"],"($1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["44"]],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2[1-36]"],"($1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["9[2-9]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])"],"($1)"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["60|8"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{3})(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3 $4",["60"]]],0,0,0,0,0,0,[0,["2(?:1982[0-6]|3314[05-9])\\d{3}|(?:2(?:1(?:160|962)|3(?:2\\d\\d|3(?:[0346]\\d|1[0-35-9]|2[1-9]|5[0-24-9]|7[0-3])|600)|646[59])|80[1-9]\\d\\d|9(?:3(?:[0-57-9]\\d\\d|6(?:0[02-9]|[1-9]\\d))|6(?:[0-8]\\d\\d|9(?:[02-79]\\d|1[05-9]))|7[1-9]\\d\\d|9(?:[03-9]\\d\\d|1(?:[0235-9]\\d|4[0-24-9])|2(?:[0-79]\\d|8[0-46-9]))))\\d{4}|(?:22|3[2-5]|[47][1-35]|5[1-3578]|6[13-57]|8[1-9]|9[2458])\\d{7}",[9]]]],"CM":["237","00","[26]\\d{8}|88\\d{6,7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["88"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[26]|88"]]],0,0,0,0,0,0,[0,["(?:24[23]|6[25-9]\\d)\\d{6}",[9]]]],"CN":["86","00|1(?:[12]\\d|79)\\d\\d00","1[127]\\d{8,9}|2\\d{9}(?:\\d{2})?|[12]\\d{6,7}|86\\d{6}|(?:1[03-689]\\d|6)\\d{7,9}|(?:[3-579]\\d|8[0-57-9])\\d{6,9}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5,6})","$1 $2",["(?:10|2[0-57-9])[19]","(?:10|2[0-57-9])(?:10|9[56])","(?:10|2[0-57-9])(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{5,6})","$1 $2",["3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]","(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))[19]","85[23](?:10|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:10|9[56])","85[23](?:100|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:100|9[56])"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["(?:4|80)0"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["10|2(?:[02-57-9]|1[1-9])","10|2(?:[02-57-9]|1[1-9])","10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]"],"0$1",1],["(\\d{3})(\\d{7,8})","$1 $2",["9"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["80"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[3-578]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["1[3-9]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3 $4",["[12]"],"0$1",1]],"0",0,"0|(1(?:[12]\\d|79)\\d\\d)",0,0,0,[0,["1740[0-5]\\d{6}|1(?:[38]\\d|4[57]|[59][0-35-9]|6[25-7]|7[0-35-8])\\d{8}",[11]]],"00"],"CO":["57","00(?:4(?:[14]4|56)|[579])","(?:60\\d\\d|9101)\\d{6}|(?:1\\d|3)\\d{9}",[10,11],[["(\\d{3})(\\d{7})","$1 $2",["6"],"($1)"],["(\\d{3})(\\d{7})","$1 $2",["3[0-357]|91"]],["(\\d)(\\d{3})(\\d{7})","$1-$2-$3",["1"],"0$1",0,"$1 $2 $3"]],"0",0,"0(4(?:[14]4|56)|[579])?",0,0,0,[0,["3333(?:0(?:0\\d|1[0-5])|[4-9]\\d\\d)\\d{3}|(?:3(?:24[1-9]|3(?:00|3[0-24-9]))|9101)\\d{6}|3(?:0[0-5]|1\\d|2[0-3]|5[01]|70)\\d{7}",[10]]]],"CR":["506","00","(?:8\\d|90)\\d{8}|(?:[24-8]\\d{3}|3005)\\d{4}",[8,10],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[3-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[89]"]]],0,0,"(19(?:0[0-2468]|1[09]|20|66|77|99))",0,0,0,[0,["(?:3005\\d|6500[01])\\d{3}|(?:5[07]|6[0-4]|7[0-3]|8[3-9])\\d{6}",[8]]]],"CU":["53","119","[27]\\d{6,7}|[34]\\d{5,7}|(?:5|8\\d\\d)\\d{7}",[6,7,8,10],[["(\\d{2})(\\d{4,6})","$1 $2",["2[1-4]|[34]"],"(0$1)"],["(\\d)(\\d{6,7})","$1 $2",["7"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["5"],"0$1"],["(\\d{3})(\\d{7})","$1 $2",["8"],"0$1"]],"0",0,0,0,0,0,[0,["5\\d{7}",[8]]]],"CV":["238","0","(?:[2-59]\\d\\d|800)\\d{4}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[2-589]"]]],0,0,0,0,0,0,[0,["(?:36|5[1-389]|9\\d)\\d{5}"]]],"CW":["599","00","(?:[34]1|60|(?:7|9\\d)\\d)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[3467]"]],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["9[4-8]"]]],0,0,0,0,0,"[69]",[0,["953[01]\\d{4}|9(?:5[12467]|6[5-9])\\d{5}"]]],"CX":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}",[6,7,8,9,10,12],0,"0",0,"0|([59]\\d{7})$","8$1",0,0,[0,["4(?:83[0-38]|93[0-6])\\d{5}|4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[016-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\d{6}",[9]]],"0011"],"CY":["357","00","(?:[279]\\d|[58]0)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[257-9]"]]],0,0,0,0,0,0,[0,["9[4-79]\\d{6}"]]],"CZ":["420","00","(?:[2-578]\\d|60)\\d{7}|9\\d{8,11}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]|9[015-7]"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3 $4",["96"]],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]],0,0,0,0,0,0,[0,["(?:60[1-8]|7(?:0[2-5]|[2379]\\d))\\d{6}"]]],"DE":["49","00","[2579]\\d{5,14}|49(?:[34]0|69|8\\d)\\d\\d?|49(?:37|49|60|7[089]|9\\d)\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\d{1,8}|(?:1|[368]\\d|4[0-8])\\d{3,13}|49(?:[015]\\d|2[13]|31|[46][1-8])\\d{1,9}",[4,5,6,7,8,9,10,11,12,13,14,15],[["(\\d{2})(\\d{3,13})","$1 $2",["3[02]|40|[68]9"],"0$1"],["(\\d{3})(\\d{3,12})","$1 $2",["2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1","2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1"],"0$1"],["(\\d{4})(\\d{2,11})","$1 $2",["[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]","[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["138"],"0$1"],["(\\d{5})(\\d{2,10})","$1 $2",["3"],"0$1"],["(\\d{3})(\\d{5,11})","$1 $2",["181"],"0$1"],["(\\d{3})(\\d)(\\d{4,10})","$1 $2 $3",["1(?:3|80)|9"],"0$1"],["(\\d{3})(\\d{7,8})","$1 $2",["1[67]"],"0$1"],["(\\d{3})(\\d{7,12})","$1 $2",["8"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["185","1850","18500"],"0$1"],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["18[68]"],"0$1"],["(\\d{5})(\\d{6})","$1 $2",["15[0568]"],"0$1"],["(\\d{4})(\\d{7})","$1 $2",["15[1279]"],"0$1"],["(\\d{3})(\\d{8})","$1 $2",["18"],"0$1"],["(\\d{3})(\\d{2})(\\d{7,8})","$1 $2 $3",["1(?:6[023]|7)"],"0$1"],["(\\d{4})(\\d{2})(\\d{7})","$1 $2 $3",["15[279]"],"0$1"],["(\\d{3})(\\d{2})(\\d{8})","$1 $2 $3",["15"],"0$1"]],"0",0,0,0,0,0,[0,["15[0-25-9]\\d{8}|1(?:6[023]|7\\d)\\d{7,8}",[10,11]]]],"DJ":["253","00","(?:2\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[27]"]]],0,0,0,0,0,0,[0,["77\\d{6}"]]],"DK":["45","00","[2-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-9]"]]],0,0,0,0,0,0,[0,["(?:[2-7]\\d|8[126-9]|9[1-46-9])\\d{6}"]]],"DM":["1","011","(?:[58]\\d\\d|767|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","767$1",0,"767",[0,["767(?:2(?:[2-4689]5|7[5-7])|31[5-7]|61[1-8]|70[1-6])\\d{4}"]]],"DO":["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,0,0,0,"8001|8[024]9",[0,["8[024]9[2-9]\\d{6}"]]],"DZ":["213","00","(?:[1-4]|[5-79]\\d|80)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["9"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-8]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:5(?:4[0-29]|5\\d|6[0-2])|6(?:[569]\\d|7[0-6])|7[7-9]\\d)\\d{6}",[9]]]],"EC":["593","00","1\\d{9,10}|(?:[2-7]|9\\d)\\d{7}",[8,9,10,11],[["(\\d)(\\d{3})(\\d{4})","$1 $2-$3",["[2-7]"],"(0$1)",0,"$1-$2-$3"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{3})(\\d{3,4})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[0,["964[0-2]\\d{5}|9(?:39|[57][89]|6[0-36-9]|[89]\\d)\\d{6}",[9]]]],"EE":["372","00","8\\d{9}|[4578]\\d{7}|(?:[3-8]\\d|90)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88","[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88"]],["(\\d{4})(\\d{3,4})","$1 $2",["[45]|8(?:00|[1-49])","[45]|8(?:00[1-9]|[1-49])"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[0,["(?:5\\d{5}|8(?:1(?:0(?:000|[3-9]\\d\\d)|(?:1(?:0[236]|1\\d)|(?:23|[3-79]\\d)\\d)\\d)|2(?:0(?:000|(?:19|[2-7]\\d)\\d)|(?:(?:[124-6]\\d|3[5-9])\\d|7(?:[3679]\\d|8[13-9])|8(?:[2-6]\\d|7[01]))\\d)|[349]\\d{4}))\\d\\d|5(?:(?:[02]\\d|5[0-478])\\d|1(?:[0-8]\\d|95)|6(?:4[0-4]|5[1-589]))\\d{3}",[7,8]]]],"EG":["20","00","[189]\\d{8,9}|[24-6]\\d{8}|[135]\\d{7}",[8,9,10],[["(\\d)(\\d{7,8})","$1 $2",["[23]"],"0$1"],["(\\d{2})(\\d{6,7})","$1 $2",["1[35]|[4-6]|8[2468]|9[235-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[189]"],"0$1"]],"0",0,0,0,0,0,[0,["1[0-25]\\d{8}",[10]]]],"EH":["212","00","[5-8]\\d{8}",[9],0,"0",0,0,0,0,"528[89]",[0,["(?:6(?:[0-79]\\d|8[0-247-9])|7(?:[017]\\d|2[0-2]|6[0-8]|8[0-3]))\\d{6}"]]],"ER":["291","00","[178]\\d{6}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[178]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:17[1-3]|7\\d\\d)\\d{4}"]]],"ES":["34","00","[5-9]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[89]00"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-9]"]]],0,0,0,0,0,0,[0,["(?:590[16]00\\d|9(?:6906(?:09|10)|7390\\d\\d))\\d\\d|(?:6\\d|7[1-48])\\d{7}"]]],"ET":["251","00","(?:11|[2-579]\\d)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-579]"],"0$1"]],"0",0,0,0,0,0,[0,["7001\\d{5}|(?:7(?:0[1-9]|1[01]|77|86|99)|9\\d\\d)\\d{6}"]]],"FI":["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","[1-35689]\\d{4}|7\\d{10,11}|(?:[124-7]\\d|3[0-46-9])\\d{8}|[1-9]\\d{5,8}",[5,6,7,8,9,10,11,12],[["(\\d)(\\d{4,9})","$1 $2",["[2568][1-8]|3(?:0[1-9]|[1-9])|9"],"0$1"],["(\\d{3})(\\d{3,7})","$1 $2",["[12]00|[368]|70[07-9]"],"0$1"],["(\\d{2})(\\d{4,8})","$1 $2",["[1245]|7[135]"],"0$1"],["(\\d{2})(\\d{6,10})","$1 $2",["7"],"0$1"]],"0",0,0,0,0,"1[03-79]|[2-9]",[0,["4946\\d{2,6}|(?:4[0-8]|50)\\d{4,8}",[6,7,8,9,10]]],"00"],"FJ":["679","0(?:0|52)","45\\d{5}|(?:0800\\d|[235-9])\\d{6}",[7,11],[["(\\d{3})(\\d{4})","$1 $2",["[235-9]|45"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]]],0,0,0,0,0,0,[0,["(?:[279]\\d|45|5[01568]|8[034679])\\d{5}",[7]]],"00"],"FK":["500","00","[2-7]\\d{4}",[5],0,0,0,0,0,0,0,[0,["[56]\\d{4}"]]],"FM":["691","00","(?:[39]\\d\\d|820)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[389]"]]],0,0,0,0,0,0,[0,["31(?:00[67]|208|309)\\d\\d|(?:3(?:[2357]0[1-9]|602|804|905)|(?:820|9[2-7]\\d)\\d)\\d{3}"]]],"FO":["298","00","[2-9]\\d{5}",[6],[["(\\d{6})","$1",["[2-9]"]]],0,0,"(10(?:01|[12]0|88))",0,0,0,[0,["(?:[27][1-9]|5\\d|9[16])\\d{4}"]]],"FR":["33","00","[1-9]\\d{8}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0 $1"],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[1-79]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:6(?:[0-24-8]\\d|3[0-8]|9[589])|7(?:00|[3-9]\\d))\\d{6}"]]],"GA":["241","00","(?:[067]\\d|11)\\d{6}|[2-7]\\d{6}",[7,8],[["(\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-7]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["11|[67]"],"0$1"]],0,0,"0(11\\d{6}|60\\d{6}|61\\d{6}|6[256]\\d{6}|7[467]\\d{6})","$1",0,0,[0,["(?:(?:0[2-7]|7[467])\\d|6(?:0[0-4]|10|[256]\\d))\\d{5}|[2-7]\\d{6}"]]],"GB":["44","00","[1-357-9]\\d{9}|[18]\\d{8}|8\\d{6}",[7,9,10],[["(\\d{3})(\\d{4})","$1 $2",["800","8001","80011","800111","8001111"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["845","8454","84546","845464"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["800"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["1(?:38|5[23]|69|76|94)","1(?:(?:38|69)7|5(?:24|39)|768|946)","1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["1(?:[2-69][02-9]|[78])"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[25]|7(?:0|6[02-9])","[25]|7(?:0|6(?:[03-9]|2[356]))"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[1389]"],"0$1"]],"0",0,0,0,0,0,[0,["7(?:457[0-57-9]|700[01]|911[028])\\d{5}|7(?:[1-3]\\d\\d|4(?:[0-46-9]\\d|5[0-689])|5(?:0[0-8]|[13-9]\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\d|8[02-9]|9[0-689])|8(?:[014-9]\\d|[23][0-8])|9(?:[024-9]\\d|1[02-9]|3[0-689]))\\d{6}",[10]]],0," x"],"GD":["1","011","(?:473|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","473$1",0,"473",[0,["473(?:4(?:0[2-79]|1[04-9]|2[0-5]|58)|5(?:2[01]|3[3-8])|901)\\d{4}"]]],"GE":["995","00","(?:[3-57]\\d\\d|800)\\d{6}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["32"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[57]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[348]"],"0$1"]],"0",0,0,0,0,0,[0,["5(?:(?:0555|1(?:[17]77|555))[5-9]|757(?:7[7-9]|8[01]))\\d{3}|5(?:0070|11(?:33|51)|[25]222|3333)[0-4]\\d{3}|5(?:00(?:0\\d|5[05])|11(?:00|[124]\\d|3[01])|5200|75(?:00|[57]5)|8(?:0(?:[01]\\d|2[0-4])|58[89]|8(?:55|88)))\\d{4}|(?:5(?:[14]4|5[0157-9]|68|7[0147-9]|9[1-35-9])|790)\\d{6}"]]],"GF":["594","00","(?:[56]94|80\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[0,["694(?:[0-249]\\d|3[0-8])\\d{4}"]]],"GG":["44","00","(?:1481|[357-9]\\d{3})\\d{6}|8\\d{6}(?:\\d{2})?",[7,9,10],0,"0",0,"0|([25-9]\\d{5})$","1481$1",0,0,[0,["7(?:(?:781|839)\\d|911[17])\\d{5}",[10]]]],"GH":["233","00","(?:[235]\\d{3}|800)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[235]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:2(?:[0346-9]\\d|5[67])|5(?:[0457]\\d|6[01]|9[1-9]))\\d{6}",[9]]]],"GI":["350","00","(?:[25]\\d\\d|606)\\d{5}",[8],[["(\\d{3})(\\d{5})","$1 $2",["2"]]],0,0,0,0,0,0,[0,["(?:5[146-8]\\d|606)\\d{5}"]]],"GL":["299","00","(?:19|[2-689]\\d|70)\\d{4}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["19|[2-9]"]]],0,0,0,0,0,0,[0,["[245]\\d{5}"]]],"GM":["220","00","[2-9]\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]],0,0,0,0,0,0,[0,["(?:[23679]\\d|5[0-389])\\d{5}"]]],"GN":["224","00","722\\d{6}|(?:3|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["3"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[67]"]]],0,0,0,0,0,0,[0,["6[0-356]\\d{7}",[9]]]],"GP":["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[0,["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"]]],"GQ":["240","00","222\\d{6}|(?:3\\d|55|[89]0)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235]"]],["(\\d{3})(\\d{6})","$1 $2",["[89]"]]],0,0,0,0,0,0,[0,["(?:222|55\\d)\\d{6}"]]],"GR":["30","00","5005000\\d{3}|8\\d{9,11}|(?:[269]\\d|70)\\d{8}",[10,11,12],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["21|7"]],["(\\d{4})(\\d{6})","$1 $2",["2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2689]"]],["(\\d{3})(\\d{3,4})(\\d{5})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[0,["68[57-9]\\d{7}|(?:69|94)\\d{8}",[10]]]],"GT":["502","00","(?:1\\d{3}|[2-7])\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[0,["[3-5]\\d{7}",[8]]]],"GU":["1","011","(?:[58]\\d\\d|671|900)\\d{7}",[10],0,"1",0,"1|([3-9]\\d{6})$","671$1",0,"671",[0,["671(?:3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[0236-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[0479]7|2[0167]|3[45]|8[7-9])|8(?:[2-57-9]8|6[48])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[78]))\\d{4}"]]],"GW":["245","00","[49]\\d{8}|4\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["40"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"]]],0,0,0,0,0,0,[0,["9(?:5\\d|6[569]|77)\\d{6}",[9]]]],"GY":["592","001","9008\\d{3}|(?:[2-467]\\d\\d|862)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-46-9]"]]],0,0,0,0,0,0,[0,["(?:6\\d\\d|70[015-7])\\d{4}"]]],"HK":["852","00(?:30|5[09]|[126-9]?)","8[0-46-9]\\d{6,7}|9\\d{4,7}|(?:[2-7]|9\\d{3})\\d{7}",[5,6,7,8,9,11],[["(\\d{3})(\\d{2,5})","$1 $2",["900","9003"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]|8[1-4]|9(?:0[1-9]|[1-8])"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]],["(\\d{3})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]]],0,0,0,0,0,0,[0,["(?:4(?:44[5-9]|6(?:0[0-7]|1[0-6]|4[0-57-9]|6[0-4]|7[0-8]))|573[0-6]|6(?:26[013-8]|66[0-3])|70(?:7[1-5]|8[0-4])|848[015-9]|9(?:29[013-9]|59[0-4]))\\d{4}|(?:4(?:4[01]|6[2358])|5(?:[1-59][0-46-9]|6[0-4689]|7[0-246-9])|6(?:0[1-9]|[13-59]\\d|[268][0-57-9]|7[0-79])|84[09]|9(?:0[1-9]|1[02-9]|[2358][0-8]|[467]\\d))\\d{5}",[8]]],"00"],"HN":["504","00","8\\d{10}|[237-9]\\d{7}",[8,11],[["(\\d{4})(\\d{4})","$1-$2",["[237-9]"]]],0,0,0,0,0,0,[0,["[37-9]\\d{7}",[8]]]],"HR":["385","00","(?:[24-69]\\d|3[0-79])\\d{7}|80\\d{5,7}|[1-79]\\d{7}|6\\d{5,6}",[6,7,8,9],[["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["6[01]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{4})(\\d{3})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-5]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"]],"0",0,0,0,0,0,[0,["98\\d{6,7}|975(?:1\\d|77|9[67])\\d{4}|9(?:0[1-9]|[1259]\\d|7[0679])\\d{6}",[8,9]]]],"HT":["509","00","[2-489]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[2-489]"]]],0,0,0,0,0,0,[0,["[34]\\d{7}"]]],"HU":["36","00","[235-7]\\d{8}|[1-9]\\d{7}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]"],"(06 $1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"06 $1"]],"06",0,0,0,0,0,[0,["(?:[257]0|3[01])\\d{7}",[9]]]],"ID":["62","00[89]","(?:(?:00[1-9]|8\\d)\\d{4}|[1-36])\\d{6}|00\\d{10}|[1-9]\\d{8,10}|[2-9]\\d{7}",[7,8,9,10,11,12,13],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["15"]],["(\\d{2})(\\d{5,9})","$1 $2",["2[124]|[36]1"],"(0$1)"],["(\\d{3})(\\d{5,7})","$1 $2",["800"],"0$1"],["(\\d{3})(\\d{5,8})","$1 $2",["[2-79]"],"(0$1)"],["(\\d{3})(\\d{3,4})(\\d{3})","$1-$2-$3",["8[1-35-9]"],"0$1"],["(\\d{3})(\\d{6,8})","$1 $2",["1"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["804"],"0$1"],["(\\d{3})(\\d)(\\d{3})(\\d{3})","$1 $2 $3 $4",["80"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1-$2-$3",["8"],"0$1"]],"0",0,0,0,0,0,[0,["8[1-35-9]\\d{7,10}",[9,10,11,12]]]],"IE":["353","00","(?:1\\d|[2569])\\d{6,8}|4\\d{6,9}|7\\d{8}|8\\d{8,9}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["2[24-9]|47|58|6[237-9]|9[35-9]"],"(0$1)"],["(\\d{3})(\\d{5})","$1 $2",["[45]0"],"(0$1)"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["1"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2569]|4[1-69]|7[14]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["81"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[78]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["4"],"(0$1)"],["(\\d{2})(\\d)(\\d{3})(\\d{4})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[0,["8(?:22|[35-9]\\d)\\d{6}",[9]]]],"IL":["972","0(?:0|1[2-9])","1\\d{6}(?:\\d{3,5})?|[57]\\d{8}|[1-489]\\d{7}",[7,8,9,10,11,12],[["(\\d{4})(\\d{3})","$1-$2",["125"]],["(\\d{4})(\\d{2})(\\d{2})","$1-$2-$3",["121"]],["(\\d)(\\d{3})(\\d{4})","$1-$2-$3",["[2-489]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1-$2-$3",["12"]],["(\\d{4})(\\d{6})","$1-$2",["159"]],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3-$4",["1[7-9]"]],["(\\d{3})(\\d{1,2})(\\d{3})(\\d{4})","$1-$2 $3-$4",["15"]]],"0",0,0,0,0,0,[0,["5(?:(?:[02368]\\d|[19][2-9]|4[1-9])\\d|5(?:01|1[79]|2[2-9]|3[0-3]|4[34]|5[015689]|6[6-8]|7[0-267]|8[7-9]|9[1-9]))\\d{5}",[9]]]],"IM":["44","00","1624\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([25-8]\\d{5})$","1624$1",0,"74576|(?:16|7[56])24",[0,["76245[06]\\d{4}|7(?:4576|[59]24\\d|624[0-4689])\\d{5}"]]],"IN":["91","00","(?:000800|[2-9]\\d\\d)\\d{7}|1\\d{7,12}",[8,9,10,11,12,13],[["(\\d{8})","$1",["5(?:0|2[23]|3[03]|[67]1|88)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)"],0,1],["(\\d{4})(\\d{4,5})","$1 $2",["180","1800"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["140"],0,1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["11|2[02]|33|4[04]|79[1-7]|80[2-46]","11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])","11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])"],"0$1",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]"],"0$1",1],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807","1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]","1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\d|7(?:1(?:[013-8]\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\d|5[0-367])|70[13-7]))[2-7]"],"0$1",1],["(\\d{5})(\\d{5})","$1 $2",["[6-9]"],"0$1",1],["(\\d{4})(\\d{2,4})(\\d{4})","$1 $2 $3",["1(?:6|8[06])","1(?:6|8[06]0)"],0,1],["(\\d{4})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["18"],0,1]],"0",0,0,0,0,0,[0,["(?:61279|7(?:887[02-9]|9(?:313|79[07-9]))|8(?:079[04-9]|(?:84|91)7[02-8]))\\d{5}|(?:6(?:12|[2-47]1|5[17]|6[13]|80)[0189]|7(?:1(?:2[0189]|9[0-5])|2(?:[14][017-9]|8[0-59])|3(?:2[5-8]|[34][017-9]|9[016-9])|4(?:1[015-9]|[29][89]|39|8[389])|5(?:[15][017-9]|2[04-9]|9[7-9])|6(?:0[0-47]|1[0-257-9]|2[0-4]|3[19]|5[4589])|70[0289]|88[089]|97[02-8])|8(?:0(?:6[67]|7[02-8])|70[017-9]|84[01489]|91[0-289]))\\d{6}|(?:7(?:31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[0189]\\d|7[02-8])\\d{5}|(?:6(?:[09]\\d|1[04679]|2[03689]|3[05-9]|4[0489]|50|6[069]|7[07]|8[7-9])|7(?:0\\d|2[0235-79]|3[05-8]|40|5[0346-8]|6[6-9]|7[1-9]|8[0-79]|9[089])|8(?:0[01589]|1[0-57-9]|2[235-9]|3[03-57-9]|[45]\\d|6[02457-9]|7[1-69]|8[0-25-9]|9[02-9])|9\\d\\d)\\d{7}|(?:6(?:(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|8[124-6])\\d|7(?:[235689]\\d|4[0189]))|7(?:1(?:[013-8]\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-5])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\d|5[0-367])|70[13-7]|881))[0189]\\d{5}",[10]]]],"IO":["246","00","3\\d{6}",[7],[["(\\d{3})(\\d{4})","$1 $2",["3"]]],0,0,0,0,0,0,[0,["38\\d{5}"]]],"IQ":["964","00","(?:1|7\\d\\d)\\d{7}|[2-6]\\d{7,8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-6]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[0,["7[3-9]\\d{8}",[10]]]],"IR":["98","00","[1-9]\\d{9}|(?:[1-8]\\d\\d|9)\\d{3,4}",[4,5,6,7,10],[["(\\d{4,5})","$1",["96"],"0$1"],["(\\d{2})(\\d{4,5})","$1 $2",["(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[1-8]"],"0$1"]],"0",0,0,0,0,0,[0,["9(?:(?:0(?:[0-35]\\d|4[4-6])|(?:[13]\\d|2[0-3])\\d)\\d|9(?:[0-46]\\d\\d|5[15]0|8(?:1\\d|88)|9(?:0[0-3]|[19]\\d|21|77|8[7-9])))\\d{5}",[10]]]],"IS":["354","00|1(?:0(?:01|[12]0)|100)","(?:38\\d|[4-9])\\d{6}",[7,9],[["(\\d{3})(\\d{4})","$1 $2",["[4-9]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["3"]]],0,0,0,0,0,0,[0,["(?:38[589]\\d\\d|6(?:1[1-8]|2[0-6]|3[026-9]|4[014679]|5[0159]|6[0-69]|70|8[06-8]|9\\d)|7(?:5[057]|[6-9]\\d)|8(?:2[0-59]|[3-69]\\d|8[238]))\\d{4}"]],"00"],"IT":["39","00","0\\d{5,10}|1\\d{8,10}|3(?:[0-8]\\d{7,10}|9\\d{7,8})|(?:55|70)\\d{8}|8\\d{5}(?:\\d{2,4})?",[6,7,8,9,10,11],[["(\\d{2})(\\d{4,6})","$1 $2",["0[26]"]],["(\\d{3})(\\d{3,6})","$1 $2",["0[13-57-9][0159]|8(?:03|4[17]|9[2-5])","0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))"]],["(\\d{4})(\\d{2,6})","$1 $2",["0(?:[13-579][2-46-8]|8[236-8])"]],["(\\d{4})(\\d{4})","$1 $2",["894"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[26]|5"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["1(?:44|[679])|[378]"]],["(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[13-57-9][0159]|14"]],["(\\d{2})(\\d{4})(\\d{5})","$1 $2 $3",["0[26]"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["3"]]],0,0,0,0,0,0,[0,["3[1-9]\\d{8}|3[2-9]\\d{7}",[9,10]]]],"JE":["44","00","1534\\d{6}|(?:[3578]\\d|90)\\d{8}",[10],0,"0",0,"0|([0-24-8]\\d{5})$","1534$1",0,0,[0,["7(?:(?:(?:50|82)9|937)\\d|7(?:00[378]|97[7-9]))\\d{5}"]]],"JM":["1","011","(?:[58]\\d\\d|658|900)\\d{7}",[10],0,"1",0,0,0,0,"658|876",[0,["(?:658295|876(?:2(?:0[1-9]|[13-9]\\d|2[013-9])|[348]\\d\\d|5(?:0[1-9]|[1-9]\\d)|6(?:4[89]|6[67])|7(?:0[07]|7\\d|8[1-47-9]|9[0-36-9])|9(?:[01]9|9[0579])))\\d{4}"]]],"JO":["962","00","(?:(?:[2689]|7\\d)\\d|32|53)\\d{6}",[8,9],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2356]|87"],"(0$1)"],["(\\d{3})(\\d{5,6})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["70"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[0,["7(?:[78][0-25-9]|9\\d)\\d{6}",[9]]]],"JP":["81","010","00[1-9]\\d{6,14}|[257-9]\\d{9}|(?:00|[1-9]\\d\\d)\\d{6}",[8,9,10,11,12,13,14,15,16,17],[["(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3",["(?:12|57|99)0"],"0$1"],["(\\d{4})(\\d)(\\d{4})","$1-$2-$3",["1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:80|9[16])","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2-$3",["[36]|4(?:2[09]|7[01])","[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]"],"0$1"],["(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3",["[14]|[289][2-9]|5[3-9]|7[2-4679]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["800"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[257-9]"],"0$1"]],"0",0,0,0,0,0,[0,["[7-9]0[1-9]\\d{7}",[10]]]],"KE":["254","000","(?:[17]\\d\\d|900)\\d{6}|(?:2|80)0\\d{6,7}|[4-6]\\d{6,8}",[7,8,9,10],[["(\\d{2})(\\d{5,7})","$1 $2",["[24-6]"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[17]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:1(?:0[0-6]|1[0-5]|2[014]|30)|7\\d\\d)\\d{6}",[9]]]],"KG":["996","00","8\\d{9}|(?:[235-8]\\d|99)\\d{7}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["3(?:1[346]|[24-79])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235-79]|88"],"0$1"],["(\\d{3})(\\d{3})(\\d)(\\d{2,3})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[0,["312(?:58\\d|973)\\d{3}|(?:2(?:0[0-35]|2\\d)|5[0-24-7]\\d|7(?:[07]\\d|55)|88[08]|99[05-9])\\d{6}",[9]]]],"KH":["855","00[14-9]","1\\d{9}|[1-9]\\d{7,8}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[0,["(?:(?:1[28]|3[18]|9[67])\\d|6[016-9]|7(?:[07-9]|[16]\\d)|8(?:[013-79]|8\\d))\\d{6}|(?:1\\d|9[0-57-9])\\d{6}|(?:2[3-6]|3[2-6]|4[2-4]|[5-7][2-5])48\\d{5}",[8,9]]]],"KI":["686","00","(?:[37]\\d|6[0-79])\\d{6}|(?:[2-48]\\d|50)\\d{3}",[5,8],0,"0",0,0,0,0,0,[0,["(?:63\\d{3}|73(?:0[0-5]\\d|140))\\d{3}|[67]200[01]\\d{3}",[8]]]],"KM":["269","00","[3478]\\d{6}",[7],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[3478]"]]],0,0,0,0,0,0,[0,["[34]\\d{6}"]]],"KN":["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","869$1",0,"869",[0,["869(?:48[89]|55[6-8]|66\\d|76[02-7])\\d{4}"]]],"KP":["850","00|99","85\\d{6}|(?:19\\d|[2-7])\\d{7}",[8,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"]],"0",0,0,0,0,0,[0,["19[1-3]\\d{7}",[10]]]],"KR":["82","00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))","00[1-9]\\d{8,11}|(?:[12]|5\\d{3})\\d{7}|[13-6]\\d{9}|(?:[1-6]\\d|80)\\d{7}|[3-6]\\d{4,5}|(?:00|7)0\\d{8}",[5,6,8,9,10,11,12,13,14],[["(\\d{2})(\\d{3,4})","$1-$2",["(?:3[1-3]|[46][1-4]|5[1-5])1"],"0$1"],["(\\d{4})(\\d{4})","$1-$2",["1"]],["(\\d)(\\d{3,4})(\\d{4})","$1-$2-$3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["60|8"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1-$2-$3",["[1346]|5[1-5]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\d{2})(\\d{5})(\\d{4})","$1-$2-$3",["5"],"0$1"]],"0",0,"0(8(?:[1-46-8]|5\\d\\d))?",0,0,0,[0,["1(?:05(?:[0-8]\\d|9[0-6])|22[13]\\d)\\d{4,5}|1(?:0[1-46-9]|[16-9]\\d|2[013-9])\\d{6,7}",[9,10]]]],"KW":["965","00","18\\d{5}|(?:[2569]\\d|41)\\d{6}",[7,8],[["(\\d{4})(\\d{3,4})","$1 $2",["[169]|2(?:[235]|4[1-35-9])|52"]],["(\\d{3})(\\d{5})","$1 $2",["[245]"]]],0,0,0,0,0,0,[0,["(?:41\\d\\d|5(?:(?:[05]\\d|1[0-7]|6[56])\\d|2(?:22|5[25])|7(?:55|77)|88[58])|6(?:(?:0[034679]|5[015-9]|6\\d)\\d|1(?:00|11|66)|222|3[36]3|444|7(?:0[013-9]|[67]\\d)|888|9(?:[069]\\d|3[039]))|9(?:(?:0[09]|22|[4679]\\d|8[057-9])\\d|1(?:1[01]|99)|3(?:00|33)|5(?:00|5\\d)))\\d{4}",[8]]]],"KY":["1","011","(?:345|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","345$1",0,"345",[0,["345(?:32[1-9]|42[0-4]|5(?:1[67]|2[5-79]|4[6-9]|50|76)|649|82[56]|9(?:1[679]|2[2-9]|3[06-9]|90))\\d{4}"]]],"KZ":["7","810","(?:33622|8\\d{8})\\d{5}|[78]\\d{9}",[10,14],0,"8",0,0,0,0,"33|7",[0,["7(?:0[0-25-8]|47|6[0-4]|7[15-8]|85)\\d{7}",[10]]],"8~10"],"LA":["856","00","[23]\\d{9}|3\\d{8}|(?:[235-8]\\d|41)\\d{6}",[8,9,10],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2[13]|3[14]|[4-8]"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["30[013-9]"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[23]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:20(?:[239]\\d|5[24-9]|7[6-8]|88)|302\\d)\\d{6}",[10]]]],"LB":["961","00","[27-9]\\d{7}|[13-9]\\d{6}",[7,8],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[27-9]"]]],"0",0,0,0,0,0,[0,["793(?:[01]\\d|2[0-4])\\d{3}|(?:(?:3|81)\\d|7(?:[01]\\d|6[013-9]|8[89]|9[12]))\\d{5}"]]],"LC":["1","011","(?:[58]\\d\\d|758|900)\\d{7}",[10],0,"1",0,"1|([2-8]\\d{6})$","758$1",0,"758",[0,["758(?:28[4-7]|384|4(?:6[01]|8[4-9])|5(?:1[89]|20|84)|7(?:1[2-9]|2\\d|3[0-3])|812)\\d{4}"]]],"LI":["423","00","[68]\\d{8}|(?:[2378]\\d|90)\\d{5}",[7,9],[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[2379]|8(?:0[09]|7)","[2379]|8(?:0(?:02|9)|7)"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["69"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]],"0",0,"0|(1001)",0,0,0,[0,["(?:6(?:(?:4[5-9]|5[0-4])\\d|6(?:[0245]\\d|[17]0|3[7-9]))\\d|7(?:[37-9]\\d|42|56))\\d{4}"]]],"LK":["94","00","[1-9]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[1-689]"],"0$1"]],"0",0,0,0,0,0,[0,["7(?:[0-25-8]\\d|4[0-4])\\d{6}"]]],"LR":["231","00","(?:2|33|5\\d|77|88)\\d{7}|[4-6]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[4-6]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3578]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:(?:330|555|(?:77|88)\\d)\\d|4[67])\\d{5}|[56]\\d{6}",[7,9]]]],"LS":["266","00","(?:[256]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2568]"]]],0,0,0,0,0,0,[0,["[56]\\d{7}"]]],"LT":["370","00","(?:[3469]\\d|52|[78]0)\\d{6}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["52[0-7]"],"(8-$1)",1],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[7-9]"],"8 $1",1],["(\\d{2})(\\d{6})","$1 $2",["37|4(?:[15]|6[1-8])"],"(8-$1)",1],["(\\d{3})(\\d{5})","$1 $2",["[3-6]"],"(8-$1)",1]],"8",0,"[08]",0,0,0,[0,["6\\d{7}"]]],"LU":["352","00","35[013-9]\\d{4,8}|6\\d{8}|35\\d{2,4}|(?:[2457-9]\\d|3[0-46-9])\\d{2,9}",[4,5,6,7,8,9,10,11],[["(\\d{2})(\\d{3})","$1 $2",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["20[2-689]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4",["2(?:[0367]|4[3-8])"]],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["80[01]|90[015]"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["20"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4 $5",["2(?:[0367]|4[3-8])"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,5})","$1 $2 $3 $4",["[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]"]]],0,0,"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\d)",0,0,0,[0,["6(?:[269][18]|5[1568]|7[189]|81)\\d{6}",[9]]]],"LV":["371","00","(?:[268]\\d|90)\\d{6}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[269]|8[01]"]]],0,0,0,0,0,0,[0,["23(?:23[0-57-9]|33[0238])\\d{3}|2(?:[0-24-9]\\d\\d|3(?:0[07]|[14-9]\\d|2[024-9]|3[0-24-9]))\\d{4}"]]],"LY":["218","00","[2-9]\\d{8}",[9],[["(\\d{2})(\\d{7})","$1-$2",["[2-9]"],"0$1"]],"0",0,0,0,0,0,[0,["9[1-6]\\d{7}"]]],"MA":["212","00","[5-8]\\d{8}",[9],[["(\\d{5})(\\d{4})","$1-$2",["5(?:29|38)","5(?:29[89]|389)","5(?:29[89]|389)0"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5[45]"],"0$1"],["(\\d{4})(\\d{5})","$1-$2",["5(?:2[2-489]|3[5-9]|9)|892","5(?:2(?:[2-49]|8[235-9])|3[5-9]|9)|892"],"0$1"],["(\\d{2})(\\d{7})","$1-$2",["8"],"0$1"],["(\\d{3})(\\d{6})","$1-$2",["[5-7]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:6(?:[0-79]\\d|8[0-247-9])|7(?:[017]\\d|2[0-2]|6[0-8]|8[0-3]))\\d{6}"]]],"MC":["377","00","(?:[3489]|6\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["4"],"0$1"],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[389]"]],["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["6"],"0$1"]],"0",0,0,0,0,0,[0,["4(?:[46]\\d|5[1-9])\\d{5}|(?:3|6\\d)\\d{7}"]]],"MD":["373","00","(?:[235-7]\\d|[89]0)\\d{6}",[8],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["22|3"],"0$1"],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[25-7]"],"0$1"]],"0",0,0,0,0,0,[0,["562\\d{5}|(?:6\\d|7[16-9])\\d{6}"]]],"ME":["382","00","(?:20|[3-79]\\d)\\d{6}|80\\d{6,7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"],"0$1"]],"0",0,0,0,0,0,[0,["6(?:[07-9]\\d|3[024]|6[0-25])\\d{5}",[8]]]],"MF":["590","00","(?:590|(?:69|80)\\d|976)\\d{6}",[9],0,"0",0,0,0,0,0,[0,["69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))\\d{4}"]]],"MG":["261","00","[23]\\d{8}",[9],[["(\\d{2})(\\d{2})(\\d{3})(\\d{2})","$1 $2 $3 $4",["[23]"],"0$1"]],"0",0,"0|([24-9]\\d{6})$","20$1",0,0,[0,["3[2-489]\\d{7}"]]],"MH":["692","011","329\\d{4}|(?:[256]\\d|45)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1-$2",["[2-6]"]]],"1",0,0,0,0,0,[0,["(?:(?:23|54)5|329|45[356])\\d{4}"]]],"MK":["389","00","[2-578]\\d{7}",[8],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2|34[47]|4(?:[37]7|5[47]|64)"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[347]"],"0$1"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["[58]"],"0$1"]],"0",0,0,0,0,0,[0,["7(?:3555|4747|9(?:[019]77|42[0-4]))\\d{3}|7(?:[0-25-8]\\d\\d|3(?:[1-4]\\d|7[01578])|4(?:2\\d|60|7[01578])|9(?:[23]\\d|4[01]|7[015]))\\d{4}"]]],"ML":["223","00","[24-9]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24-9]"]]],0,0,0,0,0,0,[0,["2(?:0(?:01|79)|17\\d)\\d{4}|(?:5[01]|[679]\\d|8[2-49])\\d{6}"]]],"MM":["95","00","1\\d{5,7}|95\\d{6}|(?:[4-7]|9[0-46-9])\\d{6,8}|(?:2|8\\d)\\d{5,8}",[6,7,8,9,10],[["(\\d)(\\d{2})(\\d{3})","$1 $2 $3",["16|2"],"0$1"],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[4-7]|8[1-35]"],"0$1"],["(\\d)(\\d{3})(\\d{4,6})","$1 $2 $3",["9(?:2[0-4]|[35-9]|4[137-9])"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["92"],"0$1"],["(\\d)(\\d{5})(\\d{4})","$1 $2 $3",["9"],"0$1"]],"0",0,0,0,0,0,[0,["(?:17[01]|9(?:2(?:[0-4]|[56]\\d\\d)|(?:3(?:[0-36]|4\\d)|(?:6\\d|9[4-8])\\d|7(?:3|40|[5-9]\\d)|8(?:78|[89]\\d))\\d|4(?:(?:[0245]\\d|[1379])\\d|88)|5[0-6])\\d)\\d{4}|9[69]1\\d{6}|9(?:[68]\\d|9[089])\\d{5}",[7,8,9,10]]]],"MN":["976","001","[12]\\d{7,9}|[5-9]\\d{7}",[8,9,10],[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[12]1"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[5-9]"]],["(\\d{3})(\\d{5,6})","$1 $2",["[12]2[1-3]"],"0$1"],["(\\d{4})(\\d{5,6})","$1 $2",["[12](?:27|3[2-8]|4[2-68]|5[1-4689])","[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]"],"0$1"],["(\\d{5})(\\d{4,5})","$1 $2",["[12]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:83[01]|920)\\d{5}|(?:5[05]|6[06]|8[015689]|9[013-9])\\d{6}",[8]]]],"MO":["853","00","0800\\d{3}|(?:28|[68]\\d)\\d{6}",[7,8],[["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{4})(\\d{4})","$1 $2",["[268]"]]],0,0,0,0,0,0,[0,["6800[0-79]\\d{3}|6(?:[235]\\d\\d|6(?:0[0-5]|[1-9]\\d)|8(?:0[1-9]|[14-8]\\d|2[5-9]|[39][0-4]))\\d{4}",[8]]]],"MP":["1","011","[58]\\d{9}|(?:67|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","670$1",0,"670",[0,["670(?:2(?:3[3-7]|56|8[4-8])|32[1-38]|4(?:33|8[348])|5(?:32|55|88)|6(?:64|70|82)|78[3589]|8[3-9]8|989)\\d{4}"]]],"MQ":["596","00","(?:69|80)\\d{7}|(?:59|97)6\\d{6}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[0,["69(?:6(?:[0-46-9]\\d|5[0-6])|727)\\d{4}"]]],"MR":["222","00","(?:[2-4]\\d\\d|800)\\d{5}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-48]"]]],0,0,0,0,0,0,[0,["[2-4][0-46-9]\\d{6}"]]],"MS":["1","011","(?:[58]\\d\\d|664|900)\\d{7}",[10],0,"1",0,"1|([34]\\d{6})$","664$1",0,"664",[0,["664(?:3(?:49|9[1-6])|49[2-6])\\d{4}"]]],"MT":["356","00","3550\\d{4}|(?:[2579]\\d\\d|800)\\d{5}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[2357-9]"]]],0,0,0,0,0,0,[0,["(?:7(?:210|[79]\\d\\d)|9(?:[29]\\d\\d|69[67]|8(?:1[1-3]|89|97)))\\d{4}"]]],"MU":["230","0(?:0|[24-7]0|3[03])","(?:5|8\\d\\d)\\d{7}|[2-468]\\d{6}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["[2-46]|8[013]"]],["(\\d{4})(\\d{4})","$1 $2",["5"]],["(\\d{5})(\\d{5})","$1 $2",["8"]]],0,0,0,0,0,0,[0,["5(?:4(?:2[1-389]|7[1-9])|87[15-8])\\d{4}|5(?:2[5-9]|4[3-689]|[57]\\d|8[0-689]|9[0-8])\\d{5}",[8]]],"020"],"MV":["960","0(?:0|19)","(?:800|9[0-57-9]\\d)\\d{7}|[34679]\\d{6}",[7,10],[["(\\d{3})(\\d{4})","$1-$2",["[3467]|9[13-9]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"]]],0,0,0,0,0,0,[0,["46[46]\\d{4}|(?:7\\d|9[13-9])\\d{5}",[7]]],"00"],"MW":["265","00","(?:[1289]\\d|31|77)\\d{7}|1\\d{6}",[7,9],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["1[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[137-9]"],"0$1"]],"0",0,0,0,0,0,[0,["111\\d{6}|(?:31|77|[89][89])\\d{7}",[9]]]],"MX":["52","0[09]","1(?:(?:44|99)[1-9]|65[0-689])\\d{7}|(?:1(?:[017]\\d|[235][1-9]|4[0-35-9]|6[0-46-9]|8[1-79]|9[1-8])|[2-9]\\d)\\d{8}",[10,11],[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["33|5[56]|81"],0,1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2-9]"],0,1],["(\\d)(\\d{2})(\\d{4})(\\d{4})","$2 $3 $4",["1(?:33|5[56]|81)"],0,1],["(\\d)(\\d{3})(\\d{3})(\\d{4})","$2 $3 $4",["1"],0,1]],"01",0,"0(?:[12]|4[45])|1",0,0,0,[0,["657[12]\\d{6}|(?:1(?:2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-7][1-9]|3[1-8]|8[1-35-9]|9[2-689])|5(?:[56]\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))|2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[25-7][1-9]|3[1-8]|4\\d|8[1-35-9]|9[2-689])|5(?:[56]\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|6[1-9]|7[12]|8[1-8]|9\\d))\\d{7}"]],"00"],"MY":["60","00","1\\d{8,9}|(?:3\\d|[4-9])\\d{7}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1-$2 $3",["[4-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1-$2 $3",["1(?:[02469]|[378][1-9]|53)|8","1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8"],"0$1"],["(\\d)(\\d{4})(\\d{4})","$1-$2 $3",["3"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3-$4",["1(?:[367]|80)"]],["(\\d{3})(\\d{3})(\\d{4})","$1-$2 $3",["15"],"0$1"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2 $3",["1"],"0$1"]],"0",0,0,0,0,0,[0,["1(?:1888[689]|4400|8(?:47|8[27])[0-4])\\d{4}|1(?:0(?:[23568]\\d|4[0-6]|7[016-9]|9[0-8])|1(?:[1-5]\\d\\d|6(?:0[5-9]|[1-9]\\d)|7(?:[0134]\\d|2[1-9]|5[0-6]))|(?:[269]\\d|[37][1-9]|4[235-9])\\d|5(?:31|9\\d\\d)|8(?:1[23]|[236]\\d|4[06]|5(?:46|[7-9])|7[016-9]|8[01]|9[0-8]))\\d{5}",[9,10]]]],"MZ":["258","00","(?:2|8\\d)\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2|8[2-79]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[0,["8[2-79]\\d{7}",[9]]]],"NA":["264","00","[68]\\d{7,8}",[8,9],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["87"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0",0,0,0,0,0,[0,["(?:60|8[1245])\\d{7}",[9]]]],"NC":["687","00","(?:050|[2-57-9]\\d\\d)\\d{3}",[6],[["(\\d{2})(\\d{2})(\\d{2})","$1.$2.$3",["[02-57-9]"]]],0,0,0,0,0,0,[0,["(?:5[0-4]|[79]\\d|8[0-79])\\d{4}"]]],"NE":["227","00","[027-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["08"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[089]|2[013]|7[04]"]]],0,0,0,0,0,0,[0,["(?:23|7[04]|[89]\\d)\\d{6}"]]],"NF":["672","00","[13]\\d{5}",[6],[["(\\d{2})(\\d{4})","$1 $2",["1[0-3]"]],["(\\d)(\\d{5})","$1 $2",["[13]"]]],0,0,"([0-258]\\d{4})$","3$1",0,0,[0,["(?:14|3[58])\\d{4}"]]],"NG":["234","009","(?:[124-7]|9\\d{3})\\d{6}|[1-9]\\d{7}|[78]\\d{9,13}",[7,8,10,11,12,13,14],[["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["78"],"0$1"],["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]|9(?:0[3-9]|[1-9])"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[3-7]|8[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{4})(\\d{4,5})","$1 $2 $3",["[78]"],"0$1"],["(\\d{3})(\\d{5})(\\d{5,6})","$1 $2 $3",["[78]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:702[0-24-9]|8(?:01|19)[01])\\d{6}|(?:70[13-689]|8(?:0[2-9]|1[0-8])|9(?:0[1-9]|1[2356]))\\d{7}",[10]]]],"NI":["505","00","(?:1800|[25-8]\\d{3})\\d{4}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[125-8]"]]],0,0,0,0,0,0,[0,["(?:5(?:5[0-7]|[78]\\d)|6(?:20|3[035]|4[045]|5[05]|77|8[1-9]|9[059])|(?:7[5-8]|8\\d)\\d)\\d{5}"]]],"NL":["31","00","(?:[124-7]\\d\\d|3(?:[02-9]\\d|1[0-8]))\\d{6}|8\\d{6,9}|9\\d{6,10}|1\\d{4,5}",[5,6,7,8,9,10,11],[["(\\d{3})(\\d{4,7})","$1 $2",["[89]0"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["66"],"0$1"],["(\\d)(\\d{8})","$1 $2",["6"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["1[16-8]|2[259]|3[124]|4[17-9]|5[124679]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-578]|91"],"0$1"],["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3",["9"],"0$1"]],"0",0,0,0,0,0,[0,["(?:6[1-58]|970\\d)\\d{7}",[9,11]]]],"NO":["47","00","(?:0|[2-9]\\d{3})\\d{4}",[5,8],[["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[489]|59"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[235-7]"]]],0,0,0,0,0,"[02-689]|7[0-8]",[0,["(?:4[015-8]|59|9\\d)\\d{6}",[8]]]],"NP":["977","00","(?:1\\d|9)\\d{9}|[1-9]\\d{7}",[8,10,11],[["(\\d)(\\d{7})","$1-$2",["1[2-6]"],"0$1"],["(\\d{2})(\\d{6})","$1-$2",["1[01]|[2-8]|9(?:[1-59]|[67][2-6])"],"0$1"],["(\\d{3})(\\d{7})","$1-$2",["9"]]],"0",0,0,0,0,0,[0,["9(?:6[0-3]|7[024-6]|8[0-24-68])\\d{7}",[10]]]],"NR":["674","00","(?:444|(?:55|8\\d)\\d|666)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[4-68]"]]],0,0,0,0,0,0,[0,["(?:55[3-9]|666|8\\d\\d)\\d{4}"]]],"NU":["683","00","(?:[47]|888\\d)\\d{3}",[4,7],[["(\\d{3})(\\d{4})","$1 $2",["8"]]],0,0,0,0,0,0,[0,["888[4-9]\\d{3}",[7]]]],"NZ":["64","0(?:0|161)","[29]\\d{7,9}|50\\d{5}(?:\\d{2,3})?|6[0-35-9]\\d{6}|7\\d{7,8}|8\\d{4,9}|(?:11\\d|[34])\\d{7}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,8})","$1 $2",["8[1-579]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["50[036-8]|[89]0","50(?:[0367]|88)|[89]0"],"0$1"],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["24|[346]|7[2-57-9]|9[2-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:10|74)|[59]|80"],"0$1"],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1|2[028]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,5})","$1 $2 $3",["2(?:[169]|7[0-35-9])|7|86"],"0$1"]],"0",0,0,0,0,0,[0,["2[0-27-9]\\d{7,8}|21\\d{6}",[8,9,10]]],"00"],"OM":["968","00","(?:1505|[279]\\d{3}|500)\\d{4}|800\\d{5,6}",[7,8,9],[["(\\d{3})(\\d{4,6})","$1 $2",["[58]"]],["(\\d{2})(\\d{6})","$1 $2",["2"]],["(\\d{4})(\\d{4})","$1 $2",["[179]"]]],0,0,0,0,0,0,[0,["1505\\d{4}|(?:7(?:[1289]\\d|7[0-4])|9(?:0[1-9]|[1-9]\\d))\\d{5}",[8]]]],"PA":["507","00","(?:00800|8\\d{3})\\d{6}|[68]\\d{7}|[1-57-9]\\d{6}",[7,8,10,11],[["(\\d{3})(\\d{4})","$1-$2",["[1-57-9]"]],["(\\d{4})(\\d{4})","$1-$2",["[68]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[0,["(?:1[16]1|21[89]|6\\d{3}|8(?:1[01]|7[23]))\\d{4}",[7,8]]]],"PE":["51","00|19(?:1[124]|77|90)00","(?:[14-8]|9\\d)\\d{7}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["80"],"(0$1)"],["(\\d)(\\d{7})","$1 $2",["1"],"(0$1)"],["(\\d{2})(\\d{6})","$1 $2",["[4-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"]]],"0",0,0,0,0,0,[0,["9\\d{8}",[9]]],"00"," Anexo "],"PF":["689","00","4\\d{5}(?:\\d{2})?|8\\d{7,8}",[6,8,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["44"]],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4|8[7-9]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]],0,0,0,0,0,0,[0,["8[7-9]\\d{6}",[8]]]],"PG":["675","00|140[1-3]","(?:180|[78]\\d{3})\\d{4}|(?:[2-589]\\d|64)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["18|[2-69]|85"]],["(\\d{4})(\\d{4})","$1 $2",["[78]"]]],0,0,0,0,0,0,[0,["(?:7\\d|8[128])\\d{6}",[8]]],"00"],"PH":["63","00","(?:[2-7]|9\\d)\\d{8}|2\\d{5}|(?:1800|8)\\d{7,9}",[6,8,9,10,11,12,13],[["(\\d)(\\d{5})","$1 $2",["2"],"(0$1)"],["(\\d{4})(\\d{4,6})","$1 $2",["3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2","3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))"],"(0$1)"],["(\\d{5})(\\d{4})","$1 $2",["346|4(?:27|9[35])|883","3469|4(?:279|9(?:30|56))|8834"],"(0$1)"],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3-7]|8[2-8]"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]],["(\\d{4})(\\d{1,2})(\\d{3})(\\d{4})","$1 $2 $3 $4",["1"]]],"0",0,0,0,0,0,[0,["(?:8(?:1[37]|9[5-8])|9(?:0[5-9]|1[0-24-9]|[235-7]\\d|4[2-9]|8[135-9]|9[1-9]))\\d{7}",[10]]]],"PK":["92","00","122\\d{6}|[24-8]\\d{10,11}|9(?:[013-9]\\d{8,10}|2(?:[01]\\d\\d|2(?:[06-8]\\d|1[01]))\\d{7})|(?:[2-8]\\d{3}|92(?:[0-7]\\d|8[1-9]))\\d{6}|[24-9]\\d{8}|[89]\\d{7}",[8,9,10,11,12],[["(\\d{3})(\\d{3})(\\d{2,7})","$1 $2 $3",["[89]0"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["1"]],["(\\d{3})(\\d{6,7})","$1 $2",["2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])","9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]"],"(0$1)"],["(\\d{2})(\\d{7,8})","$1 $2",["(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]"],"(0$1)"],["(\\d{5})(\\d{5})","$1 $2",["58"],"(0$1)"],["(\\d{3})(\\d{7})","$1 $2",["3"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91"],"(0$1)"],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[24-9]"],"(0$1)"]],"0",0,0,0,0,0,[0,["3(?:[0-24]\\d|3[0-7]|55|64)\\d{7}",[10]]]],"PL":["48","00","(?:6|8\\d\\d)\\d{7}|[1-9]\\d{6}(?:\\d{2})?|[26]\\d{5}",[6,7,8,9,10],[["(\\d{5})","$1",["19"]],["(\\d{3})(\\d{3})","$1 $2",["11|20|64"]],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1","(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19"]],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["64"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[2-8]|[2-7]|8[1-79]|9[145]"]],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["8"]]],0,0,0,0,0,0,[0,["21(?:1(?:[145]\\d|3[1-5])|2[0-4]\\d)\\d{4}|(?:45|5[0137]|6[069]|7[2389]|88)\\d{7}",[9]]]],"PM":["508","00","(?:[45]|80\\d\\d)\\d{5}",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[45]"],"0$1"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0$1"]],"0",0,0,0,0,0,[0,["(?:4[02-4]|5[056])\\d{4}",[6]]]],"PR":["1","011","(?:[589]\\d\\d|787)\\d{7}",[10],0,"1",0,0,0,0,"787|939",[0,["(?:787|939)[2-9]\\d{6}"]]],"PS":["970","00","[2489]2\\d{6}|(?:1\\d|5)\\d{8}",[8,9,10],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2489]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["5"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[0,["5[69]\\d{7}",[9]]]],"PT":["351","00","1693\\d{5}|(?:[26-9]\\d|30)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["2[12]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["16|[236-9]"]]],0,0,0,0,0,0,[0,["6(?:[06]92(?:30|9\\d)|[35]92(?:3[03]|9\\d))\\d{3}|(?:(?:16|6[0356])93|9(?:[1-36]\\d\\d|480))\\d{5}"]]],"PW":["680","01[12]","(?:[24-8]\\d\\d|345|900)\\d{4}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[2-9]"]]],0,0,0,0,0,0,[0,["(?:(?:46|83)[0-5]|6[2-4689]0)\\d{4}|(?:45|77|88)\\d{5}"]]],"PY":["595","00","59\\d{4,6}|9\\d{5,10}|(?:[2-46-8]\\d|5[0-8])\\d{4,7}",[6,7,8,9,10,11],[["(\\d{3})(\\d{3,6})","$1 $2",["[2-9]0"],"0$1"],["(\\d{2})(\\d{5})","$1 $2",["[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]"],"(0$1)"],["(\\d{3})(\\d{4,5})","$1 $2",["2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["87"]],["(\\d{3})(\\d{6})","$1 $2",["9(?:[5-79]|8[1-6])"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]"],"0$1"],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["9"]]],"0",0,0,0,0,0,[0,["9(?:51|6[129]|[78][1-6]|9[1-5])\\d{6}",[9]]]],"QA":["974","00","[2-7]\\d{7}|800\\d{4}(?:\\d{2})?|2\\d{6}",[7,8,9],[["(\\d{3})(\\d{4})","$1 $2",["2[126]|8"]],["(\\d{4})(\\d{4})","$1 $2",["[2-7]"]]],0,0,0,0,0,0,[0,["(?:2[89]|[35-7]\\d)\\d{6}",[8]]]],"RE":["262","00","976\\d{6}|(?:26|[68]\\d)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2689]"],"0$1"]],"0",0,0,0,0,"26[23]|69|[89]",[0,["(?:69(?:2\\d\\d|3(?:0[0-46]|1[013]|2[0-2]|3[0-39]|4\\d|5[0-5]|6[0-6]|7[0-27]|8[0-8]|9[0-479]))|976(?:2[27]|3[0-37]|9\\d))\\d{4}"]]],"RO":["40","00","(?:[2378]\\d|90)\\d{7}|[23]\\d{5}",[6,9],[["(\\d{3})(\\d{3})","$1 $2",["2[3-6]","2[3-6]\\d9"],"0$1"],["(\\d{2})(\\d{4})","$1 $2",["219|31"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[23]1"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[237-9]"],"0$1"]],"0",0,0,0,0,0,[0,["7020\\d{5}|7(?:0[013-9]|1[0-3]|[2-7]\\d|8[03-8]|9[019])\\d{6}",[9]]],0," int "],"RS":["381","00","38[02-9]\\d{6,9}|6\\d{7,9}|90\\d{4,8}|38\\d{5,6}|(?:7\\d\\d|800)\\d{3,9}|(?:[12]\\d|3[0-79])\\d{5,10}",[6,7,8,9,10,11,12],[["(\\d{3})(\\d{3,9})","$1 $2",["(?:2[389]|39)0|[7-9]"],"0$1"],["(\\d{2})(\\d{5,10})","$1 $2",["[1-36]"],"0$1"]],"0",0,0,0,0,0,[0,["6(?:[0-689]|7\\d)\\d{6,7}",[8,9,10]]]],"RU":["7","810","8\\d{13}|[347-9]\\d{9}",[10,14],[["(\\d{4})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-8]|2[1-9])","7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))","7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2"],"8 ($1)",1],["(\\d{5})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["7(?:1[0-68]|2[1-9])","7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))","7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"8 ($1)",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[349]|8(?:[02-7]|1[1-8])"],"8 ($1)",1],["(\\d{4})(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3 $4",["8"],"8 ($1)"]],"8",0,0,0,0,"3[04-689]|[489]",[0,["9\\d{9}",[10]]],"8~10"],"RW":["250","00","(?:06|[27]\\d\\d|[89]00)\\d{6}",[8,9],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[7-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["2"]]],"0",0,0,0,0,0,[0,["7[2389]\\d{7}",[9]]]],"SA":["966","00","92\\d{7}|(?:[15]|8\\d)\\d{8}",[9,10],[["(\\d{4})(\\d{5})","$1 $2",["9"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["81"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]]],"0",0,0,0,0,0,[0,["579[01]\\d{5}|5(?:[013-689]\\d|7[0-35-8])\\d{6}",[9]]]],"SB":["677","0[01]","(?:[1-6]|[7-9]\\d\\d)\\d{4}",[5,7],[["(\\d{2})(\\d{5})","$1 $2",["7|8[4-9]|9(?:[1-8]|9[0-8])"]]],0,0,0,0,0,0,[0,["48\\d{3}|(?:(?:7[1-9]|8[4-9])\\d|9(?:1[2-9]|2[013-9]|3[0-2]|[46]\\d|5[0-46-9]|7[0-689]|8[0-79]|9[0-8]))\\d{4}"]]],"SC":["248","010|0[0-2]","800\\d{4}|(?:[249]\\d|64)\\d{5}",[7],[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[246]|9[57]"]]],0,0,0,0,0,0,[0,["2[125-8]\\d{5}"]],"00"],"SD":["249","00","[19]\\d{8}",[9],[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[19]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:1[0-2]|9[0-3569])\\d{7}"]]],"SE":["46","00","(?:[26]\\d\\d|9)\\d{9}|[1-9]\\d{8}|[1-689]\\d{7}|[1-4689]\\d{6}|2\\d{5}",[6,7,8,9,10],[["(\\d{2})(\\d{2,3})(\\d{2})","$1-$2 $3",["20"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{4})","$1-$2",["9(?:00|39|44|9)"],"0$1",0,"$1 $2"],["(\\d{2})(\\d{3})(\\d{2})","$1-$2 $3",["[12][136]|3[356]|4[0246]|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3"],["(\\d)(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2,3})(\\d{2})","$1-$2 $3",["1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3"],["(\\d{3})(\\d{2,3})(\\d{3})","$1-$2 $3",["9(?:00|39|44)"],"0$1",0,"$1 $2 $3"],["(\\d{2})(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3 $4"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["10|7"],"0$1",0,"$1 $2 $3 $4"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1-$2 $3 $4",["[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{2})(\\d{3})","$1-$2 $3 $4",["9"],"0$1",0,"$1 $2 $3 $4"],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4 $5",["[26]"],"0$1",0,"$1 $2 $3 $4 $5"]],"0",0,0,0,0,0,[0,["7[02369]\\d{7}",[9]]]],"SG":["65","0[0-3]\\d","(?:(?:1\\d|8)\\d\\d|7000)\\d{7}|[3689]\\d{7}",[8,10,11],[["(\\d{4})(\\d{4})","$1 $2",["[369]|8(?:0[1-5]|[1-9])"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"]],["(\\d{4})(\\d{4})(\\d{3})","$1 $2 $3",["7"]],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[0,["8(?:05[0-7]|95[0-2])\\d{4}|(?:8(?:0[1-4]|[1-8]\\d|9[0-4])|9[0-8]\\d)\\d{5}",[8]]]],"SH":["290","00","(?:[256]\\d|8)\\d{3}",[4,5],0,0,0,0,0,0,"[256]",[0,["[56]\\d{4}",[5]]]],"SI":["386","00|10(?:22|66|88|99)","[1-7]\\d{7}|8\\d{4,7}|90\\d{4,6}",[5,6,7,8],[["(\\d{2})(\\d{3,6})","$1 $2",["8[09]|9"],"0$1"],["(\\d{3})(\\d{5})","$1 $2",["59|8"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[37][01]|4[0139]|51|6"],"0$1"],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-57]"],"(0$1)"]],"0",0,0,0,0,0,[0,["65(?:1\\d|55|6[01]|70)\\d{4}|(?:[37][01]|4[0139]|51|6[489])\\d{6}",[8]]],"00"],"SJ":["47","00","0\\d{4}|(?:[489]\\d|[57]9)\\d{6}",[5,8],0,0,0,0,0,0,"79",[0,["(?:4[015-8]|59|9\\d)\\d{6}",[8]]]],"SK":["421","00","[2-689]\\d{8}|[2-59]\\d{6}|[2-5]\\d{5}",[6,7,9],[["(\\d)(\\d{2})(\\d{3,4})","$1 $2 $3",["21"],"0$1"],["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["[3-5][1-8]1","[3-5][1-8]1[67]"],"0$1"],["(\\d)(\\d{3})(\\d{3})(\\d{2})","$1/$2 $3 $4",["2"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[689]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1/$2 $3 $4",["[3-5]"],"0$1"]],"0",0,0,0,0,0,[0,["909[1-9]\\d{5}|9(?:0[1-8]|1[0-24-9]|4[03-57-9]|5\\d)\\d{6}",[9]]]],"SL":["232","00","(?:[237-9]\\d|66)\\d{6}",[8],[["(\\d{2})(\\d{6})","$1 $2",["[236-9]"],"(0$1)"]],"0",0,0,0,0,0,[0,["(?:25|3[0-5]|66|7[2-9]|8[08]|9[09])\\d{6}"]]],"SM":["378","00","(?:0549|[5-7]\\d)\\d{6}",[8,10],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-7]"]],["(\\d{4})(\\d{6})","$1 $2",["0"]]],0,0,"([89]\\d{5})$","0549$1",0,0,[0,["6[16]\\d{6}",[8]]]],"SN":["221","00","(?:[378]\\d|93)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[379]"]]],0,0,0,0,0,0,[0,["7(?:(?:[06-8]\\d|21|90)\\d|5(?:01|[19]0|25|[38]3|[4-7]\\d))\\d{5}"]]],"SO":["252","00","[346-9]\\d{8}|[12679]\\d{7}|[1-5]\\d{6}|[1348]\\d{5}",[6,7,8,9],[["(\\d{2})(\\d{4})","$1 $2",["8[125]"]],["(\\d{6})","$1",["[134]"]],["(\\d)(\\d{6})","$1 $2",["[15]|2[0-79]|3[0-46-8]|4[0-7]"]],["(\\d)(\\d{7})","$1 $2",["24|[67]"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3478]|64|90"]],["(\\d{2})(\\d{5,7})","$1 $2",["1|28|6(?:0[5-7]|[1-35-9])|9[2-9]"]]],"0",0,0,0,0,0,[0,["(?:(?:15|(?:3[59]|4[89]|79|8[08])\\d|6(?:0[5-7]|[1-9]\\d)|9(?:0\\d|[2-9]))\\d|2(?:4\\d|8))\\d{5}|[67]\\d{7}",[7,8,9]]]],"SR":["597","00","(?:[2-5]|68|[78]\\d)\\d{5}",[6,7],[["(\\d{2})(\\d{2})(\\d{2})","$1-$2-$3",["56"]],["(\\d{3})(\\d{3})","$1-$2",["[2-5]"]],["(\\d{3})(\\d{4})","$1-$2",["[6-8]"]]],0,0,0,0,0,0,[0,["(?:7[124-7]|8[124-9])\\d{5}",[7]]]],"SS":["211","00","[19]\\d{8}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[19]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:12|9[1257-9])\\d{7}"]]],"ST":["239","00","(?:22|9\\d)\\d{5}",[7],[["(\\d{3})(\\d{4})","$1 $2",["[29]"]]],0,0,0,0,0,0,[0,["900[5-9]\\d{3}|9(?:0[1-9]|[89]\\d)\\d{4}"]]],"SV":["503","00","[267]\\d{7}|[89]00\\d{4}(?:\\d{4})?",[7,8,11],[["(\\d{3})(\\d{4})","$1 $2",["[89]"]],["(\\d{4})(\\d{4})","$1 $2",["[267]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[89]"]]],0,0,0,0,0,0,[0,["66(?:[02-9]\\d\\d|1(?:[02-9]\\d|16))\\d{3}|(?:6[0-57-9]|7\\d)\\d{6}",[8]]]],"SX":["1","011","7215\\d{6}|(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|(5\\d{6})$","721$1",0,"721",[0,["7215(?:1[02]|2\\d|5[034679]|8[014-8])\\d{4}"]]],"SY":["963","00","[1-39]\\d{8}|[1-5]\\d{7}",[8,9],[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-5]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1",1]],"0",0,0,0,0,0,[0,["9[1-689]\\d{7}",[9]]]],"SZ":["268","00","0800\\d{4}|(?:[237]\\d|900)\\d{6}",[8,9],[["(\\d{4})(\\d{4})","$1 $2",["[0237]"]],["(\\d{5})(\\d{4})","$1 $2",["9"]]],0,0,0,0,0,0,[0,["7[6-9]\\d{6}",[8]]]],"TA":["290","00","8\\d{3}",[4],0,0,0,0,0,0,"8"],"TC":["1","011","(?:[58]\\d\\d|649|900)\\d{7}",[10],0,"1",0,"1|([2-479]\\d{6})$","649$1",0,"649",[0,["649(?:2(?:3[129]|4[1-79])|3\\d\\d|4[34][1-3])\\d{4}"]]],"TD":["235","00|16","(?:22|[69]\\d|77)\\d{6}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2679]"]]],0,0,0,0,0,0,[0,["(?:6[023568]|77|9\\d)\\d{6}"]],"00"],"TG":["228","00","[279]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[279]"]]],0,0,0,0,0,0,[0,["(?:7[09]|9[0-36-9])\\d{6}"]]],"TH":["66","00[1-9]","(?:001800|[2-57]|[689]\\d)\\d{7}|1\\d{7,9}",[8,9,10,13],[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[13-9]"],"0$1"],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"]]],"0",0,0,0,0,0,[0,["671[0-8]\\d{5}|(?:14|6[1-6]|[89]\\d)\\d{7}",[9]]]],"TJ":["992","810","(?:00|[1-57-9]\\d)\\d{7}",[9],[["(\\d{6})(\\d)(\\d{2})","$1 $2 $3",["331","3317"]],["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[34]7|91[78]"]],["(\\d{4})(\\d)(\\d{4})","$1 $2 $3",["3[1-5]"]],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[0-57-9]"]]],0,0,0,0,0,0,[0,["41[18]\\d{6}|(?:[034]0|[17][017]|2[02]|5[05]|8[08]|9\\d)\\d{7}"]],"8~10"],"TK":["690","00","[2-47]\\d{3,6}",[4,5,6,7],0,0,0,0,0,0,0,[0,["7[2-4]\\d{2,5}"]]],"TL":["670","00","7\\d{7}|(?:[2-47]\\d|[89]0)\\d{5}",[7,8],[["(\\d{3})(\\d{4})","$1 $2",["[2-489]|70"]],["(\\d{4})(\\d{4})","$1 $2",["7"]]],0,0,0,0,0,0,[0,["7[2-8]\\d{6}",[8]]]],"TM":["993","810","[1-6]\\d{7}",[8],[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["12"],"(8 $1)"],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2-$3-$4",["[1-5]"],"(8 $1)"],["(\\d{2})(\\d{6})","$1 $2",["6"],"8 $1"]],"8",0,0,0,0,0,[0,["6\\d{7}"]],"8~10"],"TN":["216","00","[2-57-9]\\d{7}",[8],[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-57-9]"]]],0,0,0,0,0,0,[0,["3(?:001|[12]40)\\d{4}|(?:(?:[259]\\d|4[0-7])\\d|3(?:1[1-35]|6[0-4]|91))\\d{5}"]]],"TO":["676","00","(?:0800|(?:[5-8]\\d\\d|999)\\d)\\d{3}|[2-8]\\d{4}",[5,7],[["(\\d{2})(\\d{3})","$1-$2",["[2-4]|50|6[09]|7[0-24-69]|8[05]"]],["(\\d{4})(\\d{3})","$1 $2",["0"]],["(\\d{3})(\\d{4})","$1 $2",["[5-9]"]]],0,0,0,0,0,0,[0,["(?:55[4-6]|6(?:[09]\\d|3[02]|8[15-9])|(?:7\\d|8[46-9])\\d|999)\\d{4}",[7]]]],"TR":["90","00","4\\d{6}|8\\d{11,12}|(?:[2-58]\\d\\d|900)\\d{7}",[7,10,12,13],[["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["512|8[01589]|90"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5(?:[0-59]|61)","5(?:[0-59]|616)","5(?:[0-59]|6161)"],"0$1",1],["(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24][1-8]|3[1-9]"],"(0$1)",1],["(\\d{3})(\\d{3})(\\d{6,7})","$1 $2 $3",["80"],"0$1",1]],"0",0,0,0,0,0,[0,["56161\\d{5}|5(?:0[15-7]|1[06]|24|[34]\\d|5[1-59]|9[46])\\d{7}",[10]]]],"TT":["1","011","(?:[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-46-8]\\d{6})$","868$1",0,"868",[0,["868(?:(?:2[5-9]|3\\d)\\d|4(?:3[0-6]|[6-9]\\d)|6(?:20|78|8\\d)|7(?:0[1-9]|1[02-9]|[2-9]\\d))\\d{4}"]]],"TV":["688","00","(?:2|7\\d\\d|90)\\d{4}",[5,6,7],[["(\\d{2})(\\d{3})","$1 $2",["2"]],["(\\d{2})(\\d{4})","$1 $2",["90"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]],0,0,0,0,0,0,[0,["(?:7[01]\\d|90)\\d{4}",[6,7]]]],"TW":["886","0(?:0[25-79]|19)","[2-689]\\d{8}|7\\d{9,10}|[2-8]\\d{7}|2\\d{6}",[7,8,9,10,11],[["(\\d{2})(\\d)(\\d{4})","$1 $2 $3",["202"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[258]0"],"0$1"],["(\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]","[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[49]"],"0$1"],["(\\d{2})(\\d{4})(\\d{4,5})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[0,["(?:40001[0-2]|9[0-8]\\d{4})\\d{3}",[9]]],0,"#"],"TZ":["255","00[056]","(?:[25-8]\\d|41|90)\\d{7}",[9],[["(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[24]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["5"]],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[67]"],"0$1"]],"0",0,0,0,0,0,[0,["77[2-9]\\d{6}|(?:6[125-9]|7[13-689])\\d{7}"]]],"UA":["380","00","[89]\\d{9}|[3-9]\\d{8}",[9,10],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]","6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]"],"0$1"],["(\\d{4})(\\d{5})","$1 $2",["3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])","3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[3-7]|89|9[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:39|50|6[36-8]|7[1-3]|9[1-9])\\d{7}",[9]]],"0~0"],"UG":["256","00[057]","800\\d{6}|(?:[29]0|[347]\\d)\\d{7}",[9],[["(\\d{4})(\\d{5})","$1 $2",["202","2024"],"0$1"],["(\\d{3})(\\d{6})","$1 $2",["[27-9]|4(?:6[45]|[7-9])"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[34]"],"0$1"]],"0",0,0,0,0,0,[0,["726[01]\\d{5}|7(?:[01578]\\d|20|36|[46][0-4]|9[89])\\d{6}"]]],"US":["1","011","[2-9]\\d{9}|3\\d{6}",[10],[["(\\d{3})(\\d{4})","$1-$2",["310"],0,1],["(\\d{3})(\\d{3})(\\d{4})","($1) $2-$3",["[2-9]"],0,1,"$1-$2-$3"]],"1",0,0,0,0,0,[0,["505(?:[2-57-9]\\d\\d|6(?:[0-35-9]\\d|44))\\d{4}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[01679]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[068]|3[0-289]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-389]|8[04-69]))[2-9]\\d{6}"]]],"UY":["598","0(?:0|1[3-9]\\d)","4\\d{9}|[1249]\\d{7}|(?:[49]\\d|80)\\d{5}",[7,8,10],[["(\\d{3})(\\d{4})","$1 $2",["405|8|90"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1"],["(\\d{4})(\\d{4})","$1 $2",["[124]"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["4"],"0$1"]],"0",0,0,0,0,0,[0,["9[1-9]\\d{6}",[8]]],"00"," int. "],"UZ":["998","810","(?:33|55|[679]\\d|88)\\d{7}",[9],[["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[35-9]"],"8 $1"]],"8",0,0,0,0,0,[0,["(?:(?:33|88|9[0-57-9])\\d{3}|55(?:50[013]|90\\d)|6(?:1(?:2(?:2[01]|98)|35[0-4]|50\\d|61[23]|7(?:[01][017]|4\\d|55|9[5-9]))|2(?:(?:11|7\\d)\\d|2(?:[12]1|9[01379])|5(?:[126]\\d|3[0-4]))|5(?:19[01]|2(?:27|9[26])|(?:30|59|7\\d)\\d)|6(?:2(?:1[5-9]|2[0367]|38|41|52|60)|(?:3[79]|9[0-3])\\d|4(?:56|83)|7(?:[07]\\d|1[017]|3[07]|4[047]|5[057]|67|8[0178]|9[79]))|7(?:2(?:24|3[237]|4[5-9]|7[15-8])|5(?:7[12]|8[0589])|7(?:0\\d|[39][07])|9(?:0\\d|7[079]))|9(?:2(?:1[1267]|3[01]|5\\d|7[0-4])|(?:5[67]|7\\d)\\d|6(?:2[0-26]|8\\d)))|7(?:[07]\\d{3}|1(?:13[01]|6(?:0[47]|1[67]|66)|71[3-69]|98\\d)|2(?:2(?:2[79]|95)|3(?:2[5-9]|6[0-6])|57\\d|7(?:0\\d|1[17]|2[27]|3[37]|44|5[057]|66|88))|3(?:2(?:1[0-6]|21|3[469]|7[159])|(?:33|9[4-6])\\d|5(?:0[0-4]|5[579]|9\\d)|7(?:[0-3579]\\d|4[0467]|6[67]|8[078]))|4(?:2(?:29|5[0257]|6[0-7]|7[1-57])|5(?:1[0-4]|8\\d|9[5-9])|7(?:0\\d|1[024589]|2[0-27]|3[0137]|[46][07]|5[01]|7[5-9]|9[079])|9(?:7[015-9]|[89]\\d))|5(?:112|2(?:0\\d|2[29]|[49]4)|3[1568]\\d|52[6-9]|7(?:0[01578]|1[017]|[23]7|4[047]|[5-7]\\d|8[78]|9[079]))|6(?:2(?:2[1245]|4[2-4])|39\\d|41[179]|5(?:[349]\\d|5[0-2])|7(?:0[017]|[13]\\d|22|44|55|67|88))|9(?:22[128]|3(?:2[0-4]|7\\d)|57[02569]|7(?:2[05-9]|3[37]|4\\d|60|7[2579]|87|9[07]))))\\d{4}"]],"8~10"],"VA":["39","00","0\\d{5,10}|3[0-8]\\d{7,10}|55\\d{8}|8\\d{5}(?:\\d{2,4})?|(?:1\\d|39)\\d{7,8}",[6,7,8,9,10,11],0,0,0,0,0,0,"06698",[0,["3[1-9]\\d{8}|3[2-9]\\d{7}",[9,10]]]],"VC":["1","011","(?:[58]\\d\\d|784|900)\\d{7}",[10],0,"1",0,"1|([2-7]\\d{6})$","784$1",0,"784",[0,["784(?:4(?:3[0-5]|5[45]|89|9[0-8])|5(?:2[6-9]|3[0-4])|720)\\d{4}"]]],"VE":["58","00","[68]00\\d{7}|(?:[24]\\d|[59]0)\\d{8}",[10],[["(\\d{3})(\\d{7})","$1-$2",["[24-689]"],"0$1"]],"0",0,0,0,0,0,[0,["4(?:1[24-8]|2[46])\\d{7}"]]],"VG":["1","011","(?:284|[58]\\d\\d|900)\\d{7}",[10],0,"1",0,"1|([2-578]\\d{6})$","284$1",0,"284",[0,["284496[6-9]\\d{3}|284(?:245|3(?:0[0-3]|4[0-7]|68|9[34])|4(?:4[0-6]|68|99)|5(?:4[0-7]|68|9[69]))\\d{4}"]]],"VI":["1","011","[58]\\d{9}|(?:34|90)0\\d{7}",[10],0,"1",0,"1|([2-9]\\d{6})$","340$1",0,"340",[0,["340(?:2(?:0[0-38]|2[06-8]|4[49]|77)|3(?:32|44)|4(?:2[23]|44|7[34]|89)|5(?:1[34]|55)|6(?:2[56]|4[23]|77|9[023])|7(?:1[2-57-9]|2[57]|7\\d)|884|998)\\d{4}"]]],"VN":["84","00","[12]\\d{9}|[135-9]\\d{8}|[16]\\d{7}|[16-8]\\d{6}",[7,8,9,10],[["(\\d{2})(\\d{5})","$1 $2",["80"],"0$1",1],["(\\d{4})(\\d{4,6})","$1 $2",["1"],0,1],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[69]"],"0$1",1],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[3578]"],"0$1",1],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["2[48]"],"0$1",1],["(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["2"],"0$1",1]],"0",0,0,0,0,0,[0,["(?:5(?:2[238]|59)|89[6-9]|99[013-9])\\d{6}|(?:3\\d|5[689]|7[06-9]|8[1-8]|9[0-8])\\d{7}",[9]]]],"VU":["678","00","[57-9]\\d{6}|(?:[238]\\d|48)\\d{3}",[5,7],[["(\\d{3})(\\d{4})","$1 $2",["[57-9]"]]],0,0,0,0,0,0,[0,["(?:[58]\\d|7[013-7])\\d{5}",[7]]]],"WF":["681","00","(?:40|72)\\d{4}|8\\d{5}(?:\\d{3})?",[6,9],[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[478]"]],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]],0,0,0,0,0,0,[0,["(?:72|8[23])\\d{4}",[6]]]],"WS":["685","0","(?:[2-6]|8\\d{5})\\d{4}|[78]\\d{6}|[68]\\d{5}",[5,6,7,10],[["(\\d{5})","$1",["[2-5]|6[1-9]"]],["(\\d{3})(\\d{3,7})","$1 $2",["[68]"]],["(\\d{2})(\\d{5})","$1 $2",["7"]]],0,0,0,0,0,0,[0,["(?:7[1-35-7]|8(?:[3-7]|9\\d{3}))\\d{5}",[7,10]]]],"XK":["383","00","[23]\\d{7,8}|(?:4\\d\\d|[89]00)\\d{5}",[8,9],[["(\\d{3})(\\d{5})","$1 $2",["[89]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[23]"],"0$1"]],"0",0,0,0,0,0,[0,["4[3-9]\\d{6}",[8]]]],"YE":["967","00","(?:1|7\\d)\\d{7}|[1-7]\\d{6}",[7,8,9],[["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-6]|7[24-68]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,[0,["7[0137]\\d{7}",[9]]]],"YT":["262","00","80\\d{7}|(?:26|63)9\\d{6}",[9],0,"0",0,0,0,0,"269|63",[0,["639(?:0[0-79]|1[019]|[267]\\d|3[09]|40|5[05-9]|9[04-79])\\d{4}"]]],"ZA":["27","00","[1-79]\\d{8}|8\\d{4,9}",[5,6,7,8,9,10],[["(\\d{2})(\\d{3,4})","$1 $2",["8[1-4]"],"0$1"],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["8[1-4]"],"0$1"],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["860"],"0$1"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8"],"0$1"]],"0",0,0,0,0,0,[0,["(?:1(?:3492[0-25]|4495[0235]|549(?:20|5[01]))|4[34]492[01])\\d{3}|8[1-4]\\d{3,7}|(?:2[27]|47|54)4950\\d{3}|(?:1(?:049[2-4]|9[12]\\d\\d)|(?:6\\d|7[0-46-9])\\d{3}|8(?:5\\d{3}|7(?:08[67]|158|28[5-9]|310)))\\d{4}|(?:1[6-8]|28|3[2-69]|4[025689]|5[36-8])4920\\d{3}|(?:12|[2-5]1)492\\d{4}",[5,6,7,8,9]]]],"ZM":["260","00","800\\d{6}|(?:21|63|[79]\\d)\\d{7}",[9],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[28]"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["[79]"],"0$1"]],"0",0,0,0,0,0,[0,["(?:7[5-79]|9[5-8])\\d{7}"]]],"ZW":["263","00","2(?:[0-57-9]\\d{6,8}|6[0-24-9]\\d{6,7})|[38]\\d{9}|[35-8]\\d{8}|[3-6]\\d{7}|[1-689]\\d{6}|[1-3569]\\d{5}|[1356]\\d{4}",[5,6,7,8,9,10],[["(\\d{3})(\\d{3,5})","$1 $2",["2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]"],"0$1"],["(\\d)(\\d{3})(\\d{2,4})","$1 $2 $3",["[49]"],"0$1"],["(\\d{3})(\\d{4})","$1 $2",["80"],"0$1"],["(\\d{2})(\\d{7})","$1 $2",["24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2","2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]"],"(0$1)"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)","2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)"],"0$1"],["(\\d{4})(\\d{6})","$1 $2",["8"],"0$1"],["(\\d{2})(\\d{3,5})","$1 $2",["1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]"],"0$1"],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["29[013-9]|39|54"],"0$1"],["(\\d{4})(\\d{3,5})","$1 $2",["(?:25|54)8","258|5483"],"0$1"]],"0",0,0,0,0,0,[0,["7(?:[178]\\d|3[1-9])\\d{6}",[9]]]]},"nonGeographic":{"800":["800",0,"(?:00|[1-9]\\d)\\d{6}",[8],[["(\\d{4})(\\d{4})","$1 $2",["\\d"]]],0,0,0,0,0,0,[0,0,["(?:00|[1-9]\\d)\\d{6}"]]],"808":["808",0,"[1-9]\\d{7}",[8],[["(\\d{4})(\\d{4})","$1 $2",["[1-9]"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,["[1-9]\\d{7}"]]],"870":["870",0,"7\\d{11}|[35-7]\\d{8}",[9,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[35-7]"]]],0,0,0,0,0,0,[0,["(?:[356]|774[45])\\d{8}|7[6-8]\\d{7}"]]],"878":["878",0,"10\\d{10}",[12],[["(\\d{2})(\\d{5})(\\d{5})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["10\\d{10}"]]],"881":["881",0,"[0-36-9]\\d{8}",[9],[["(\\d)(\\d{3})(\\d{5})","$1 $2 $3",["[0-36-9]"]]],0,0,0,0,0,0,[0,["[0-36-9]\\d{8}"]]],"882":["882",0,"[13]\\d{6}(?:\\d{2,5})?|285\\d{9}|(?:[19]\\d|49)\\d{6}",[7,8,9,10,11,12],[["(\\d{2})(\\d{5})","$1 $2",["16|342"]],["(\\d{2})(\\d{6})","$1 $2",["4"]],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[19]"]],["(\\d{2})(\\d{4})(\\d{3})","$1 $2 $3",["3[23]"]],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1"]],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["34[57]"]],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["34"]],["(\\d{2})(\\d{4,5})(\\d{5})","$1 $2 $3",["[1-3]"]]],0,0,0,0,0,0,[0,["342\\d{4}|(?:337|49)\\d{6}|3(?:2|47|7\\d{3})\\d{7}",[7,8,9,10,12]],0,0,0,0,0,0,["1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\d{4}|6\\d{5,10})|(?:(?:285\\d\\d|3(?:45|[69]\\d{3}))\\d|9[89])\\d{6}"]]],"883":["883",0,"(?:210|370\\d\\d)\\d{7}|51\\d{7}(?:\\d{3})?",[9,10,12],[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["510"]],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["2"]],["(\\d{4})(\\d{4})(\\d{4})","$1 $2 $3",["51[13]"]],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["[35]"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["(?:210|(?:370[1-9]|51[013]0)\\d)\\d{7}|5100\\d{5}"]]],"888":["888",0,"\\d{11}",[11],[["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3"]],0,0,0,0,0,0,[0,0,0,0,0,0,["\\d{11}"]]],"979":["979",0,"[1359]\\d{8}",[9],[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[1359]"]]],0,0,0,0,0,0,[0,0,0,["[1359]\\d{8}"]]]}} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/AsYouType.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/AsYouType.js new file mode 100644 index 00000000..6c2eb656 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/AsYouType.js @@ -0,0 +1,12 @@ +// Importing from a ".js" file is a workaround for Node.js "ES Modules" +// importing system which is even uncapable of importing "*.json" files. +import metadata from '../../metadata.min.json.js' + +import { AsYouType as _AsYouType } from '../../core/index.js' + +export function AsYouType(country) { + return _AsYouType.call(this, country, metadata) +} + +AsYouType.prototype = Object.create(_AsYouType.prototype, {}) +AsYouType.prototype.constructor = AsYouType \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/Metadata.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/Metadata.js new file mode 100644 index 00000000..01dc04e1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/Metadata.js @@ -0,0 +1,12 @@ +// Importing from a ".js" file is a workaround for Node.js "ES Modules" +// importing system which is even uncapable of importing "*.json" files. +import metadata from '../../metadata.min.json.js' + +import { Metadata as _Metadata } from '../../core/index.js' + +export function Metadata() { + return _Metadata.call(this, metadata) +} + +Metadata.prototype = Object.create(_Metadata.prototype, {}) +Metadata.prototype.constructor = Metadata \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/PhoneNumberMatcher.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/PhoneNumberMatcher.js new file mode 100644 index 00000000..a5242e24 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/PhoneNumberMatcher.js @@ -0,0 +1,11 @@ +// Importing from a ".js" file is a workaround for Node.js "ES Modules" +// importing system which is even uncapable of importing "*.json" files. +import metadata from '../../metadata.min.json.js' + +import { PhoneNumberMatcher as _PhoneNumberMatcher } from '../../core/index.js' + +export function PhoneNumberMatcher(text, options) { + return _PhoneNumberMatcher.call(this, text, options, metadata) +} +PhoneNumberMatcher.prototype = Object.create(_PhoneNumberMatcher.prototype, {}) +PhoneNumberMatcher.prototype.constructor = PhoneNumberMatcher diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/findNumbers.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/findNumbers.js new file mode 100644 index 00000000..e11aa766 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/findNumbers.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { findNumbers as _findNumbers } from '../../core/index.js' + +export function findNumbers() { + return withMetadataArgument(_findNumbers, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/findPhoneNumbersInText.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/findPhoneNumbersInText.js new file mode 100644 index 00000000..3d0c29d1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/findPhoneNumbersInText.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { findPhoneNumbersInText as _findPhoneNumbersInText } from '../../core/index.js' + +export function findPhoneNumbersInText() { + return withMetadataArgument(_findPhoneNumbersInText, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/formatIncompletePhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/formatIncompletePhoneNumber.js new file mode 100644 index 00000000..8e9b5d3d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/formatIncompletePhoneNumber.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { formatIncompletePhoneNumber as _formatIncompletePhoneNumber } from '../../core/index.js' + +export function formatIncompletePhoneNumber() { + return withMetadataArgument(_formatIncompletePhoneNumber, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/getCountries.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/getCountries.js new file mode 100644 index 00000000..b43ac044 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/getCountries.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { getCountries as _getCountries } from '../../core/index.js' + +export function getCountries() { + return withMetadataArgument(_getCountries, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/getCountryCallingCode.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/getCountryCallingCode.js new file mode 100644 index 00000000..868dfd3e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/getCountryCallingCode.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { getCountryCallingCode as _getCountryCallingCode } from '../../core/index.js' + +export function getCountryCallingCode() { + return withMetadataArgument(_getCountryCallingCode, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/getExampleNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/getExampleNumber.js new file mode 100644 index 00000000..5f9e4cfc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/getExampleNumber.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { getExampleNumber as _getExampleNumber } from '../../core/index.js' + +export function getExampleNumber() { + return withMetadataArgument(_getExampleNumber, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/getExtPrefix.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/getExtPrefix.js new file mode 100644 index 00000000..59633438 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/getExtPrefix.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { getExtPrefix as _getExtPrefix } from '../../core/index.js' + +export function getExtPrefix() { + return withMetadataArgument(_getExtPrefix, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/isPossiblePhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/isPossiblePhoneNumber.js new file mode 100644 index 00000000..e53ab676 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/isPossiblePhoneNumber.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { isPossiblePhoneNumber as _isPossiblePhoneNumber } from '../../core/index.js' + +export function isPossiblePhoneNumber() { + return withMetadataArgument(_isPossiblePhoneNumber, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/isSupportedCountry.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/isSupportedCountry.js new file mode 100644 index 00000000..45074472 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/isSupportedCountry.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { isSupportedCountry as _isSupportedCountry } from '../../core/index.js' + +export function isSupportedCountry() { + return withMetadataArgument(_isSupportedCountry, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/isValidPhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/isValidPhoneNumber.js new file mode 100644 index 00000000..3b31535a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/isValidPhoneNumber.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { isValidPhoneNumber as _isValidPhoneNumber } from '../../core/index.js' + +export function isValidPhoneNumber() { + return withMetadataArgument(_isValidPhoneNumber, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/parsePhoneNumberFromString.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/parsePhoneNumberFromString.js new file mode 100644 index 00000000..b6e573f6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/parsePhoneNumberFromString.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { parsePhoneNumberFromString as _parsePhoneNumberFromString } from '../../core/index.js' + +export function parsePhoneNumberFromString() { + return withMetadataArgument(_parsePhoneNumberFromString, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/parsePhoneNumberWithError.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/parsePhoneNumberWithError.js new file mode 100644 index 00000000..130054f7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/parsePhoneNumberWithError.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { parsePhoneNumberWithError as _parsePhoneNumberWithError } from '../../core/index.js' + +export function parsePhoneNumberWithError() { + return withMetadataArgument(_parsePhoneNumberWithError, arguments) +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/searchNumbers.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/searchNumbers.js new file mode 100644 index 00000000..c1913ee6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/searchNumbers.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { searchNumbers as _searchNumbers } from '../../core/index.js' + +export function searchNumbers() { + return withMetadataArgument(_searchNumbers, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/searchPhoneNumbersInText.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/searchPhoneNumbersInText.js new file mode 100644 index 00000000..7fb02a3f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/searchPhoneNumbersInText.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { searchPhoneNumbersInText as _searchPhoneNumbersInText } from '../../core/index.js' + +export function searchPhoneNumbersInText() { + return withMetadataArgument(_searchPhoneNumbersInText, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/validatePhoneNumberLength.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/validatePhoneNumberLength.js new file mode 100644 index 00000000..d4f55fda --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/validatePhoneNumberLength.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { validatePhoneNumberLength as _validatePhoneNumberLength } from '../../core/index.js' + +export function validatePhoneNumberLength() { + return withMetadataArgument(_validatePhoneNumberLength, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/withMetadataArgument.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/withMetadataArgument.js new file mode 100644 index 00000000..11bd9dc6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/exports/withMetadataArgument.js @@ -0,0 +1,9 @@ +// Importing from a ".js" file is a workaround for Node.js "ES Modules" +// importing system which is even uncapable of importing "*.json" files. +import metadata from '../../metadata.min.json.js' + +export default function withMetadataArgument(func, _arguments) { + var args = Array.prototype.slice.call(_arguments) + args.push(metadata) + return func.apply(this, args) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/index.cjs b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/index.cjs new file mode 100644 index 00000000..f62526de --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/index.cjs @@ -0,0 +1,113 @@ +'use strict' + +var metadata = require('../metadata.min.json') +var core = require('../core/index.cjs') + +function call(func, _arguments) { + var args = Array.prototype.slice.call(_arguments) + args.push(metadata) + return func.apply(this, args) +} + +function parsePhoneNumberFromString() { + return call(core.parsePhoneNumberFromString, arguments) +} + +// ES5 `require()` "default" "interoperability" hack. +// https://github.com/babel/babel/issues/2212#issuecomment-131827986 +// An alternative approach: +// https://www.npmjs.com/package/babel-plugin-add-module-exports +exports = module.exports = parsePhoneNumberFromString +exports['default'] = parsePhoneNumberFromString + +exports.ParseError = core.ParseError + +function parsePhoneNumberWithError() { + return call(core.parsePhoneNumberWithError, arguments) +} + +// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`. +exports.parsePhoneNumber = parsePhoneNumberWithError +exports.parsePhoneNumberWithError = parsePhoneNumberWithError + +// `parsePhoneNumberFromString()` named export is now considered legacy: +// it has been promoted to a default export due to being too verbose. +exports.parsePhoneNumberFromString = parsePhoneNumberFromString + +exports.isValidPhoneNumber = function isValidPhoneNumber() { + return call(core.isValidPhoneNumber, arguments) +} + +exports.isPossiblePhoneNumber = function isPossiblePhoneNumber() { + return call(core.isPossiblePhoneNumber, arguments) +} + +exports.validatePhoneNumberLength = function validatePhoneNumberLength() { + return call(core.validatePhoneNumberLength, arguments) +} + +exports.findNumbers = function findNumbers() { + return call(core.findNumbers, arguments) +} + +exports.searchNumbers = function searchNumbers() { + return call(core.searchNumbers, arguments) +} + +exports.findPhoneNumbersInText = function findPhoneNumbersInText() { + return call(core.findPhoneNumbersInText, arguments) +} + +exports.searchPhoneNumbersInText = function searchPhoneNumbersInText() { + return call(core.searchPhoneNumbersInText, arguments) +} + +exports.PhoneNumberMatcher = function PhoneNumberMatcher(text, options) { + return core.PhoneNumberMatcher.call(this, text, options, metadata) +} +exports.PhoneNumberMatcher.prototype = Object.create(core.PhoneNumberMatcher.prototype, {}) +exports.PhoneNumberMatcher.prototype.constructor = exports.PhoneNumberMatcher + +exports.AsYouType = function AsYouType(country) { + return core.AsYouType.call(this, country, metadata) +} +exports.AsYouType.prototype = Object.create(core.AsYouType.prototype, {}) +exports.AsYouType.prototype.constructor = exports.AsYouType + +exports.isSupportedCountry = function isSupportedCountry(country) { + return call(core.isSupportedCountry, arguments) +} + +exports.getCountries = function getCountries() { + return call(core.getCountries, arguments) +} + +exports.getCountryCallingCode = function getCountryCallingCode() { + return call(core.getCountryCallingCode, arguments) +} + +exports.getExtPrefix = function getExtPrefix(country) { + return call(core.getExtPrefix, arguments) +} + +exports.getExampleNumber = function getExampleNumber() { + return call(core.getExampleNumber, arguments) +} + +exports.Metadata = function Metadata() { + return core.Metadata.call(this, metadata) +} +exports.Metadata.prototype = Object.create(core.Metadata.prototype, {}) +exports.Metadata.prototype.constructor = exports.Metadata + +exports.formatIncompletePhoneNumber = function formatIncompletePhoneNumber() { + return call(core.formatIncompletePhoneNumber, arguments) +} + +exports.parseIncompletePhoneNumber = core.parseIncompletePhoneNumber +exports.parsePhoneNumberCharacter = core.parsePhoneNumberCharacter +exports.parseDigits = core.parseDigits +exports.DIGIT_PLACEHOLDER = core.DIGIT_PLACEHOLDER + +exports.parseRFC3966 = core.parseRFC3966 +exports.formatRFC3966 = core.formatRFC3966 \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/index.cjs.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/index.cjs.js new file mode 100644 index 00000000..48bedf02 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/index.cjs.js @@ -0,0 +1,118 @@ +'use strict' + +// This file is deprecated. +// It's the same as `index.cjs`, just with an added `.js` file extension. +// It only exists for compatibility with the software that doesn't like `*.cjs` file extension. +// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/61#note_950728292 + +var metadata = require('../metadata.min.json') +var core = require('../core/index.cjs') + +function call(func, _arguments) { + var args = Array.prototype.slice.call(_arguments) + args.push(metadata) + return func.apply(this, args) +} + +function parsePhoneNumberFromString() { + return call(core.parsePhoneNumberFromString, arguments) +} + +// ES5 `require()` "default" "interoperability" hack. +// https://github.com/babel/babel/issues/2212#issuecomment-131827986 +// An alternative approach: +// https://www.npmjs.com/package/babel-plugin-add-module-exports +exports = module.exports = parsePhoneNumberFromString +exports['default'] = parsePhoneNumberFromString + +exports.ParseError = core.ParseError + +function parsePhoneNumberWithError() { + return call(core.parsePhoneNumberWithError, arguments) +} + +// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`. +exports.parsePhoneNumber = parsePhoneNumberWithError +exports.parsePhoneNumberWithError = parsePhoneNumberWithError + +// `parsePhoneNumberFromString()` named export is now considered legacy: +// it has been promoted to a default export due to being too verbose. +exports.parsePhoneNumberFromString = parsePhoneNumberFromString + +exports.isValidPhoneNumber = function isValidPhoneNumber() { + return call(core.isValidPhoneNumber, arguments) +} + +exports.isPossiblePhoneNumber = function isPossiblePhoneNumber() { + return call(core.isPossiblePhoneNumber, arguments) +} + +exports.validatePhoneNumberLength = function validatePhoneNumberLength() { + return call(core.validatePhoneNumberLength, arguments) +} + +exports.findNumbers = function findNumbers() { + return call(core.findNumbers, arguments) +} + +exports.searchNumbers = function searchNumbers() { + return call(core.searchNumbers, arguments) +} + +exports.findPhoneNumbersInText = function findPhoneNumbersInText() { + return call(core.findPhoneNumbersInText, arguments) +} + +exports.searchPhoneNumbersInText = function searchPhoneNumbersInText() { + return call(core.searchPhoneNumbersInText, arguments) +} + +exports.PhoneNumberMatcher = function PhoneNumberMatcher(text, options) { + return core.PhoneNumberMatcher.call(this, text, options, metadata) +} +exports.PhoneNumberMatcher.prototype = Object.create(core.PhoneNumberMatcher.prototype, {}) +exports.PhoneNumberMatcher.prototype.constructor = exports.PhoneNumberMatcher + +exports.AsYouType = function AsYouType(country) { + return core.AsYouType.call(this, country, metadata) +} +exports.AsYouType.prototype = Object.create(core.AsYouType.prototype, {}) +exports.AsYouType.prototype.constructor = exports.AsYouType + +exports.isSupportedCountry = function isSupportedCountry(country) { + return call(core.isSupportedCountry, arguments) +} + +exports.getCountries = function getCountries() { + return call(core.getCountries, arguments) +} + +exports.getCountryCallingCode = function getCountryCallingCode() { + return call(core.getCountryCallingCode, arguments) +} + +exports.getExtPrefix = function getExtPrefix(country) { + return call(core.getExtPrefix, arguments) +} + +exports.getExampleNumber = function getExampleNumber() { + return call(core.getExampleNumber, arguments) +} + +exports.Metadata = function Metadata() { + return core.Metadata.call(this, metadata) +} +exports.Metadata.prototype = Object.create(core.Metadata.prototype, {}) +exports.Metadata.prototype.constructor = exports.Metadata + +exports.formatIncompletePhoneNumber = function formatIncompletePhoneNumber() { + return call(core.formatIncompletePhoneNumber, arguments) +} + +exports.parseIncompletePhoneNumber = core.parseIncompletePhoneNumber +exports.parsePhoneNumberCharacter = core.parsePhoneNumberCharacter +exports.parseDigits = core.parseDigits +exports.DIGIT_PLACEHOLDER = core.DIGIT_PLACEHOLDER + +exports.parseRFC3966 = core.parseRFC3966 +exports.formatRFC3966 = core.formatRFC3966 \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/index.d.ts b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/index.d.ts new file mode 100644 index 00000000..7dc00eb5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/index.d.ts @@ -0,0 +1,102 @@ +import { + MetadataJson, + Examples, + PhoneNumber, + E164Number, + CountryCallingCode, + CountryCode, + CarrierCode, + NationalNumber, + Extension, + ParseError, + NumberFoundLegacy, + NumberFound, + NumberType, + NumberFormat, + NumberingPlan, + ValidatePhoneNumberLengthResult +} from '../types'; + +// They say this re-export is required. +// https://github.com/catamphetamine/libphonenumber-js/pull/290#issuecomment-453281180 +export { + MetadataJson, + Examples, + PhoneNumber, + E164Number, + CountryCallingCode, + CountryCode, + CarrierCode, + NationalNumber, + Extension, + ParseError, + NumberFoundLegacy, + NumberFound, + NumberType, + NumberFormat, + NumberingPlan, + ValidatePhoneNumberLengthResult +}; + +// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`. +export function parsePhoneNumber(text: string, defaultCountry?: CountryCode): PhoneNumber; + +export function parsePhoneNumberWithError(text: string, defaultCountry?: CountryCode): PhoneNumber; + +// `parsePhoneNumberFromString()` named export is now considered legacy: +// it has been promoted to a default export due to being too verbose. +export function parsePhoneNumberFromString(text: string, defaultCountry?: CountryCode | { defaultCountry?: CountryCode, defaultCallingCode?: string, extract?: boolean }): PhoneNumber | undefined; + +export default parsePhoneNumberFromString; + +export function isValidPhoneNumber(text: string, defaultCountry?: CountryCode | { defaultCountry?: CountryCode, defaultCallingCode?: string }): boolean; +export function isPossiblePhoneNumber(text: string, defaultCountry?: CountryCode | { defaultCountry?: CountryCode, defaultCallingCode?: string }): boolean; +export function validatePhoneNumberLength(text: string, defaultCountry?: CountryCode | { defaultCountry?: CountryCode, defaultCallingCode?: string }): ValidatePhoneNumberLengthResult | undefined; + +export function findNumbers(text: string, options?: CountryCode): NumberFoundLegacy[]; +export function searchNumbers(text: string, options?: CountryCode): IterableIterator; + +export function findNumbers(text: string, options?: { defaultCountry?: CountryCode, v2: true }): NumberFound[]; +export function searchNumbers(text: string, options?: { defaultCountry?: CountryCode, v2: true }): IterableIterator; + +export function findPhoneNumbersInText(text: string, options?: CountryCode | { defaultCountry?: CountryCode, defaultCallingCode?: string }): NumberFound[]; +export function searchPhoneNumbersInText(text: string, options?: CountryCode | { defaultCountry?: CountryCode, defaultCallingCode?: string }): IterableIterator; + +export class PhoneNumberMatcher { + constructor(text: string, options?: { defaultCountry?: CountryCode, v2: true }); + hasNext(): boolean; + next(): NumberFound | undefined; +} + +export function isSupportedCountry(countryCode: CountryCode): boolean; +export function getCountries(): CountryCode[]; +export function getCountryCallingCode(countryCode: CountryCode): CountryCallingCode; +export function getExtPrefix(countryCode: CountryCode): string; + +export function getExampleNumber(country: CountryCode, examples: Examples): PhoneNumber | undefined; + +export function formatIncompletePhoneNumber(number: string, countryCode?: CountryCode): string; +export function parseIncompletePhoneNumber(text: string): string; +export function parsePhoneNumberCharacter(character: string): string; +export function parseDigits(character: string): string; + +export class AsYouType { + constructor(defaultCountryCode?: CountryCode | { defaultCountry?: CountryCode, defaultCallingCode?: string }); + input(text: string): string; + reset(): void; + getNumber(): PhoneNumber | undefined; + getNumberValue(): E164Number | undefined; + getChars(): string; + getTemplate(): string; + getCallingCode(): string | undefined; + getCountry(): CountryCode | undefined; + isInternational(): boolean; + isPossible(): boolean; + isValid(): boolean; +} + +export class Metadata { + constructor(); + selectNumberingPlan(country: CountryCode): void; + numberingPlan?: NumberingPlan; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/index.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/index.js new file mode 100644 index 00000000..14258901 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/index.js @@ -0,0 +1,40 @@ +// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`. +export { parsePhoneNumberWithError, parsePhoneNumberWithError as parsePhoneNumber } from './exports/parsePhoneNumberWithError.js' +// `parsePhoneNumberFromString()` named export is now considered legacy: +// it has been promoted to a default export due to being too verbose. +export { parsePhoneNumberFromString, parsePhoneNumberFromString as default } from './exports/parsePhoneNumberFromString.js' + +export { isValidPhoneNumber } from './exports/isValidPhoneNumber.js' +export { isPossiblePhoneNumber } from './exports/isPossiblePhoneNumber.js' +export { validatePhoneNumberLength } from './exports/validatePhoneNumberLength.js' + +// Deprecated. +export { findNumbers } from './exports/findNumbers.js' +// Deprecated. +export { searchNumbers } from './exports/searchNumbers.js' + +export { findPhoneNumbersInText } from './exports/findPhoneNumbersInText.js' +export { searchPhoneNumbersInText } from './exports/searchPhoneNumbersInText.js' +export { PhoneNumberMatcher } from './exports/PhoneNumberMatcher.js' + +export { AsYouType } from './exports/AsYouType.js' + +export { isSupportedCountry } from './exports/isSupportedCountry.js' +export { getCountries } from './exports/getCountries.js' +export { getCountryCallingCode } from './exports/getCountryCallingCode.js' +export { getExtPrefix } from './exports/getExtPrefix.js' + +export { Metadata } from './exports/Metadata.js' +export { getExampleNumber } from './exports/getExampleNumber.js' + +export { formatIncompletePhoneNumber } from './exports/formatIncompletePhoneNumber.js' + +export { + ParseError, + parseIncompletePhoneNumber, + parsePhoneNumberCharacter, + parseDigits, + parseRFC3966, + formatRFC3966, + DIGIT_PLACEHOLDER +} from '../core/index.js' diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/metadata/package.json b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/metadata/package.json new file mode 100644 index 00000000..9471258a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/metadata/package.json @@ -0,0 +1,16 @@ +{ + "private": true, + "name": "libphonenumber-js/min/metadata", + "main": "../../metadata.min.json", + "module": "../../metadata.min.json.js", + "types": "../../metadata.min.json.d.ts", + "type": "module", + "exports": { + ".": { + "types": "../../metadata.min.json.d.ts", + "import": "../../metadata.min.json.js", + "require": "../../metadata.min.json" + } + }, + "sideEffects": false +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/package.json b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/package.json new file mode 100644 index 00000000..4fe58cd4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/min/package.json @@ -0,0 +1,15 @@ +{ + "private": true, + "name": "libphonenumber-js/min", + "main": "index.cjs", + "module": "index.js", + "type": "module", + "exports": { + ".": { + "types": "../min/index.d.ts", + "import": "./index.js", + "require": "./index.cjs" + } + }, + "sideEffects": false +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/examples/package.json b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/examples/package.json new file mode 100644 index 00000000..5c641c85 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/examples/package.json @@ -0,0 +1,16 @@ +{ + "private": true, + "name": "libphonenumber-js/mobile/examples", + "main": "../../examples.mobile.json", + "module": "../../examples.mobile.json.js", + "types": "../../examples.mobile.json.d.ts", + "type": "module", + "exports": { + ".": { + "types": "../../examples.mobile.json.d.ts", + "import": "../../examples.mobile.json.js", + "require": "../../examples.mobile.json" + } + }, + "sideEffects": false +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/AsYouType.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/AsYouType.js new file mode 100644 index 00000000..87f3b09b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/AsYouType.js @@ -0,0 +1,12 @@ +// Importing from a ".js" file is a workaround for Node.js "ES Modules" +// importing system which is even uncapable of importing "*.json" files. +import metadata from '../../metadata.mobile.json.js' + +import { AsYouType as _AsYouType } from '../../core/index.js' + +export function AsYouType(country) { + return _AsYouType.call(this, country, metadata) +} + +AsYouType.prototype = Object.create(_AsYouType.prototype, {}) +AsYouType.prototype.constructor = AsYouType \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/Metadata.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/Metadata.js new file mode 100644 index 00000000..ed281303 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/Metadata.js @@ -0,0 +1,12 @@ +// Importing from a ".js" file is a workaround for Node.js "ES Modules" +// importing system which is even uncapable of importing "*.json" files. +import metadata from '../../metadata.mobile.json.js' + +import { Metadata as _Metadata } from '../../core/index.js' + +export function Metadata() { + return _Metadata.call(this, metadata) +} + +Metadata.prototype = Object.create(_Metadata.prototype, {}) +Metadata.prototype.constructor = Metadata \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/PhoneNumberMatcher.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/PhoneNumberMatcher.js new file mode 100644 index 00000000..681876cd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/PhoneNumberMatcher.js @@ -0,0 +1,11 @@ +// Importing from a ".js" file is a workaround for Node.js "ES Modules" +// importing system which is even uncapable of importing "*.json" files. +import metadata from '../../metadata.mobile.json.js' + +import { PhoneNumberMatcher as _PhoneNumberMatcher } from '../../core/index.js' + +export function PhoneNumberMatcher(text, options) { + return _PhoneNumberMatcher.call(this, text, options, metadata) +} +PhoneNumberMatcher.prototype = Object.create(_PhoneNumberMatcher.prototype, {}) +PhoneNumberMatcher.prototype.constructor = PhoneNumberMatcher diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/findNumbers.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/findNumbers.js new file mode 100644 index 00000000..e11aa766 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/findNumbers.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { findNumbers as _findNumbers } from '../../core/index.js' + +export function findNumbers() { + return withMetadataArgument(_findNumbers, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/findPhoneNumbersInText.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/findPhoneNumbersInText.js new file mode 100644 index 00000000..3d0c29d1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/findPhoneNumbersInText.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { findPhoneNumbersInText as _findPhoneNumbersInText } from '../../core/index.js' + +export function findPhoneNumbersInText() { + return withMetadataArgument(_findPhoneNumbersInText, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/formatIncompletePhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/formatIncompletePhoneNumber.js new file mode 100644 index 00000000..8e9b5d3d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/formatIncompletePhoneNumber.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { formatIncompletePhoneNumber as _formatIncompletePhoneNumber } from '../../core/index.js' + +export function formatIncompletePhoneNumber() { + return withMetadataArgument(_formatIncompletePhoneNumber, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/getCountries.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/getCountries.js new file mode 100644 index 00000000..b43ac044 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/getCountries.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { getCountries as _getCountries } from '../../core/index.js' + +export function getCountries() { + return withMetadataArgument(_getCountries, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/getCountryCallingCode.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/getCountryCallingCode.js new file mode 100644 index 00000000..868dfd3e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/getCountryCallingCode.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { getCountryCallingCode as _getCountryCallingCode } from '../../core/index.js' + +export function getCountryCallingCode() { + return withMetadataArgument(_getCountryCallingCode, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/getExampleNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/getExampleNumber.js new file mode 100644 index 00000000..5f9e4cfc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/getExampleNumber.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { getExampleNumber as _getExampleNumber } from '../../core/index.js' + +export function getExampleNumber() { + return withMetadataArgument(_getExampleNumber, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/getExtPrefix.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/getExtPrefix.js new file mode 100644 index 00000000..59633438 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/getExtPrefix.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { getExtPrefix as _getExtPrefix } from '../../core/index.js' + +export function getExtPrefix() { + return withMetadataArgument(_getExtPrefix, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/isPossiblePhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/isPossiblePhoneNumber.js new file mode 100644 index 00000000..e53ab676 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/isPossiblePhoneNumber.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { isPossiblePhoneNumber as _isPossiblePhoneNumber } from '../../core/index.js' + +export function isPossiblePhoneNumber() { + return withMetadataArgument(_isPossiblePhoneNumber, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/isSupportedCountry.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/isSupportedCountry.js new file mode 100644 index 00000000..45074472 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/isSupportedCountry.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { isSupportedCountry as _isSupportedCountry } from '../../core/index.js' + +export function isSupportedCountry() { + return withMetadataArgument(_isSupportedCountry, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/isValidPhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/isValidPhoneNumber.js new file mode 100644 index 00000000..3b31535a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/isValidPhoneNumber.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { isValidPhoneNumber as _isValidPhoneNumber } from '../../core/index.js' + +export function isValidPhoneNumber() { + return withMetadataArgument(_isValidPhoneNumber, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/parsePhoneNumberFromString.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/parsePhoneNumberFromString.js new file mode 100644 index 00000000..b6e573f6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/parsePhoneNumberFromString.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { parsePhoneNumberFromString as _parsePhoneNumberFromString } from '../../core/index.js' + +export function parsePhoneNumberFromString() { + return withMetadataArgument(_parsePhoneNumberFromString, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/parsePhoneNumberWithError.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/parsePhoneNumberWithError.js new file mode 100644 index 00000000..130054f7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/parsePhoneNumberWithError.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { parsePhoneNumberWithError as _parsePhoneNumberWithError } from '../../core/index.js' + +export function parsePhoneNumberWithError() { + return withMetadataArgument(_parsePhoneNumberWithError, arguments) +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/searchNumbers.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/searchNumbers.js new file mode 100644 index 00000000..c1913ee6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/searchNumbers.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { searchNumbers as _searchNumbers } from '../../core/index.js' + +export function searchNumbers() { + return withMetadataArgument(_searchNumbers, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/searchPhoneNumbersInText.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/searchPhoneNumbersInText.js new file mode 100644 index 00000000..7fb02a3f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/searchPhoneNumbersInText.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { searchPhoneNumbersInText as _searchPhoneNumbersInText } from '../../core/index.js' + +export function searchPhoneNumbersInText() { + return withMetadataArgument(_searchPhoneNumbersInText, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/validatePhoneNumberLength.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/validatePhoneNumberLength.js new file mode 100644 index 00000000..d4f55fda --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/validatePhoneNumberLength.js @@ -0,0 +1,6 @@ +import withMetadataArgument from './withMetadataArgument.js' +import { validatePhoneNumberLength as _validatePhoneNumberLength } from '../../core/index.js' + +export function validatePhoneNumberLength() { + return withMetadataArgument(_validatePhoneNumberLength, arguments) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/withMetadataArgument.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/withMetadataArgument.js new file mode 100644 index 00000000..13657ecd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/exports/withMetadataArgument.js @@ -0,0 +1,9 @@ +// Importing from a ".js" file is a workaround for Node.js "ES Modules" +// importing system which is even uncapable of importing "*.json" files. +import metadata from '../../metadata.mobile.json.js' + +export default function withMetadataArgument(func, _arguments) { + var args = Array.prototype.slice.call(_arguments) + args.push(metadata) + return func.apply(this, args) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/index.cjs b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/index.cjs new file mode 100644 index 00000000..25e50246 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/index.cjs @@ -0,0 +1,107 @@ +'use strict' + +var metadata = require('../metadata.mobile.json') +var core = require('../core/index.cjs') + +function call(func, _arguments) { + var args = Array.prototype.slice.call(_arguments) + args.push(metadata) + return func.apply(this, args) +} + +function parsePhoneNumberFromString() { + return call(core.parsePhoneNumberFromString, arguments) +} + +// ES5 `require()` "default" "interoperability" hack. +// https://github.com/babel/babel/issues/2212#issuecomment-131827986 +// An alternative approach: +// https://www.npmjs.com/package/babel-plugin-add-module-exports +exports = module.exports = parsePhoneNumberFromString +exports['default'] = parsePhoneNumberFromString + +exports.ParseError = core.ParseError + +function parsePhoneNumberWithError() { + return call(core.parsePhoneNumberWithError, arguments) +} + +// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`. +exports.parsePhoneNumber = parsePhoneNumberWithError +exports.parsePhoneNumberWithError = parsePhoneNumberWithError + +// `parsePhoneNumberFromString()` named export is now considered legacy: +// it has been promoted to a default export due to being too verbose. +exports.parsePhoneNumberFromString = parsePhoneNumberFromString + +exports.isValidPhoneNumber = function isValidPhoneNumber() { + return call(core.isValidPhoneNumber, arguments) +} + +exports.isPossiblePhoneNumber = function isPossiblePhoneNumber() { + return call(core.isPossiblePhoneNumber, arguments) +} + +exports.validatePhoneNumberLength = function validatePhoneNumberLength() { + return call(core.validatePhoneNumberLength, arguments) +} + +exports.findNumbers = function findNumbers() { + return call(core.findNumbers, arguments) +} + +exports.searchNumbers = function searchNumbers() { + return call(core.searchNumbers, arguments) +} + +exports.findPhoneNumbersInText = function findPhoneNumbersInText() { + return call(core.findPhoneNumbersInText, arguments) +} + +exports.searchPhoneNumbersInText = function searchPhoneNumbersInText() { + return call(core.searchPhoneNumbersInText, arguments) +} + +exports.PhoneNumberMatcher = function PhoneNumberMatcher(text, options) { + return core.PhoneNumberMatcher.call(this, text, options, metadata) +} +exports.PhoneNumberMatcher.prototype = Object.create(core.PhoneNumberMatcher.prototype, {}) +exports.PhoneNumberMatcher.prototype.constructor = exports.PhoneNumberMatcher + +exports.AsYouType = function AsYouType(country) { + return core.AsYouType.call(this, country, metadata) +} +exports.AsYouType.prototype = Object.create(core.AsYouType.prototype, {}) +exports.AsYouType.prototype.constructor = exports.AsYouType + +exports.isSupportedCountry = function isSupportedCountry(country) { + return call(core.isSupportedCountry, arguments) +} + +exports.getCountries = function getCountries() { + return call(core.getCountries, arguments) +} + +exports.getCountryCallingCode = function getCountryCallingCode() { + return call(core.getCountryCallingCode, arguments) +} + +exports.getExtPrefix = function getExtPrefix(country) { + return call(core.getExtPrefix, arguments) +} + +exports.getExampleNumber = function getExampleNumber() { + return call(core.getExampleNumber, arguments) +} + +exports.formatIncompletePhoneNumber = function formatIncompletePhoneNumber() { + return call(core.formatIncompletePhoneNumber, arguments) +} + +exports.parseIncompletePhoneNumber = core.parseIncompletePhoneNumber +exports.parsePhoneNumberCharacter = core.parsePhoneNumberCharacter +exports.parseDigits = core.parseDigits +exports.DIGIT_PLACEHOLDER = core.DIGIT_PLACEHOLDER + +exports.parseRFC3966 = core.parseRFC3966 +exports.formatRFC3966 = core.formatRFC3966 \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/index.cjs.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/index.cjs.js new file mode 100644 index 00000000..354918ef --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/index.cjs.js @@ -0,0 +1,112 @@ +'use strict' + +// This file is deprecated. +// It's the same as `index.cjs`, just with an added `.js` file extension. +// It only exists for compatibility with the software that doesn't like `*.cjs` file extension. +// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/61#note_950728292 + +var metadata = require('../metadata.mobile.json') +var core = require('../core/index.cjs') + +function call(func, _arguments) { + var args = Array.prototype.slice.call(_arguments) + args.push(metadata) + return func.apply(this, args) +} + +function parsePhoneNumberFromString() { + return call(core.parsePhoneNumberFromString, arguments) +} + +// ES5 `require()` "default" "interoperability" hack. +// https://github.com/babel/babel/issues/2212#issuecomment-131827986 +// An alternative approach: +// https://www.npmjs.com/package/babel-plugin-add-module-exports +exports = module.exports = parsePhoneNumberFromString +exports['default'] = parsePhoneNumberFromString + +exports.ParseError = core.ParseError + +function parsePhoneNumberWithError() { + return call(core.parsePhoneNumberWithError, arguments) +} + +// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`. +exports.parsePhoneNumber = parsePhoneNumberWithError +exports.parsePhoneNumberWithError = parsePhoneNumberWithError + +// `parsePhoneNumberFromString()` named export is now considered legacy: +// it has been promoted to a default export due to being too verbose. +exports.parsePhoneNumberFromString = parsePhoneNumberFromString + +exports.isValidPhoneNumber = function isValidPhoneNumber() { + return call(core.isValidPhoneNumber, arguments) +} + +exports.isPossiblePhoneNumber = function isPossiblePhoneNumber() { + return call(core.isPossiblePhoneNumber, arguments) +} + +exports.validatePhoneNumberLength = function validatePhoneNumberLength() { + return call(core.validatePhoneNumberLength, arguments) +} + +exports.findNumbers = function findNumbers() { + return call(core.findNumbers, arguments) +} + +exports.searchNumbers = function searchNumbers() { + return call(core.searchNumbers, arguments) +} + +exports.findPhoneNumbersInText = function findPhoneNumbersInText() { + return call(core.findPhoneNumbersInText, arguments) +} + +exports.searchPhoneNumbersInText = function searchPhoneNumbersInText() { + return call(core.searchPhoneNumbersInText, arguments) +} + +exports.PhoneNumberMatcher = function PhoneNumberMatcher(text, options) { + return core.PhoneNumberMatcher.call(this, text, options, metadata) +} +exports.PhoneNumberMatcher.prototype = Object.create(core.PhoneNumberMatcher.prototype, {}) +exports.PhoneNumberMatcher.prototype.constructor = exports.PhoneNumberMatcher + +exports.AsYouType = function AsYouType(country) { + return core.AsYouType.call(this, country, metadata) +} +exports.AsYouType.prototype = Object.create(core.AsYouType.prototype, {}) +exports.AsYouType.prototype.constructor = exports.AsYouType + +exports.isSupportedCountry = function isSupportedCountry(country) { + return call(core.isSupportedCountry, arguments) +} + +exports.getCountries = function getCountries() { + return call(core.getCountries, arguments) +} + +exports.getCountryCallingCode = function getCountryCallingCode() { + return call(core.getCountryCallingCode, arguments) +} + +exports.getExtPrefix = function getExtPrefix(country) { + return call(core.getExtPrefix, arguments) +} + +exports.getExampleNumber = function getExampleNumber() { + return call(core.getExampleNumber, arguments) +} + +exports.formatIncompletePhoneNumber = function formatIncompletePhoneNumber() { + return call(core.formatIncompletePhoneNumber, arguments) +} + +exports.parseIncompletePhoneNumber = core.parseIncompletePhoneNumber +exports.parsePhoneNumberCharacter = core.parsePhoneNumberCharacter +exports.parseDigits = core.parseDigits +exports.DIGIT_PLACEHOLDER = core.DIGIT_PLACEHOLDER + +exports.parseRFC3966 = core.parseRFC3966 +exports.formatRFC3966 = core.formatRFC3966 \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/index.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/index.js new file mode 100644 index 00000000..14258901 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/index.js @@ -0,0 +1,40 @@ +// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`. +export { parsePhoneNumberWithError, parsePhoneNumberWithError as parsePhoneNumber } from './exports/parsePhoneNumberWithError.js' +// `parsePhoneNumberFromString()` named export is now considered legacy: +// it has been promoted to a default export due to being too verbose. +export { parsePhoneNumberFromString, parsePhoneNumberFromString as default } from './exports/parsePhoneNumberFromString.js' + +export { isValidPhoneNumber } from './exports/isValidPhoneNumber.js' +export { isPossiblePhoneNumber } from './exports/isPossiblePhoneNumber.js' +export { validatePhoneNumberLength } from './exports/validatePhoneNumberLength.js' + +// Deprecated. +export { findNumbers } from './exports/findNumbers.js' +// Deprecated. +export { searchNumbers } from './exports/searchNumbers.js' + +export { findPhoneNumbersInText } from './exports/findPhoneNumbersInText.js' +export { searchPhoneNumbersInText } from './exports/searchPhoneNumbersInText.js' +export { PhoneNumberMatcher } from './exports/PhoneNumberMatcher.js' + +export { AsYouType } from './exports/AsYouType.js' + +export { isSupportedCountry } from './exports/isSupportedCountry.js' +export { getCountries } from './exports/getCountries.js' +export { getCountryCallingCode } from './exports/getCountryCallingCode.js' +export { getExtPrefix } from './exports/getExtPrefix.js' + +export { Metadata } from './exports/Metadata.js' +export { getExampleNumber } from './exports/getExampleNumber.js' + +export { formatIncompletePhoneNumber } from './exports/formatIncompletePhoneNumber.js' + +export { + ParseError, + parseIncompletePhoneNumber, + parsePhoneNumberCharacter, + parseDigits, + parseRFC3966, + formatRFC3966, + DIGIT_PLACEHOLDER +} from '../core/index.js' diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/metadata/package.json b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/metadata/package.json new file mode 100644 index 00000000..a78d4fa8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/metadata/package.json @@ -0,0 +1,16 @@ +{ + "private": true, + "name": "libphonenumber-js/mobile/metadata", + "main": "../../metadata.mobile.json", + "module": "../../metadata.mobile.json.js", + "types": "../../metadata.mobile.json.d.ts", + "type": "module", + "exports": { + ".": { + "types": "../../metadata.mobile.json.d.ts", + "import": "../../metadata.mobile.json.js", + "require": "../../metadata.mobile.json" + } + }, + "sideEffects": false +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/package.json b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/package.json new file mode 100644 index 00000000..7afc703a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/mobile/package.json @@ -0,0 +1,16 @@ +{ + "private": true, + "name": "libphonenumber-js/mobile", + "main": "index.cjs", + "module": "index.js", + "types": "../min/index.d.ts", + "type": "module", + "exports": { + ".": { + "types": "../min/index.d.ts", + "import": "./index.js", + "require": "./index.cjs" + } + }, + "sideEffects": false +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/package.json b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/package.json new file mode 100644 index 00000000..99fab278 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/package.json @@ -0,0 +1,185 @@ +{ + "name": "libphonenumber-js", + "version": "1.10.14", + "description": "A simpler (and smaller) rewrite of Google Android's libphonenumber library in javascript", + "main": "index.cjs", + "module": "index.js", + "type": "module", + "exports": { + ".": { + "types": "./index.d.ts", + "import": "./index.js", + "require": "./index.cjs" + }, + "./min": { + "types": "./min/index.d.ts", + "import": "./min/index.js", + "require": "./min/index.cjs" + }, + "./max": { + "types": "./min/index.d.ts", + "import": "./max/index.js", + "require": "./max/index.cjs" + }, + "./mobile": { + "types": "./min/index.d.ts", + "import": "./mobile/index.js", + "require": "./mobile/index.cjs" + }, + "./core": { + "types": "./core/index.d.ts", + "import": "./core/index.js", + "require": "./core/index.cjs" + }, + "./min/metadata": { + "types": "./metadata.min.json.d.ts", + "import": "./metadata.min.json.js", + "require": "./metadata.min.json" + }, + "./metadata.min": { + "types": "./metadata.min.json.d.ts", + "import": "./metadata.min.json.js", + "require": "./metadata.min.json" + }, + "./metadata.min.json": { + "types": "./metadata.min.json.d.ts", + "import": "./metadata.min.json.js", + "require": "./metadata.min.json" + }, + "./metadata.full": { + "types": "./metadata.max.json.d.ts", + "import": "./metadata.max.json.js", + "require": "./metadata.max.json" + }, + "./metadata.full.json": { + "types": "./metadata.max.json.d.ts", + "import": "./metadata.max.json.js", + "require": "./metadata.max.json" + }, + "./max/metadata": { + "types": "./metadata.max.json.d.ts", + "import": "./metadata.max.json.js", + "require": "./metadata.max.json" + }, + "./metadata.max": { + "types": "./metadata.max.json.d.ts", + "import": "./metadata.max.json.js", + "require": "./metadata.max.json" + }, + "./metadata.max.json": { + "types": "./metadata.max.json.d.ts", + "import": "./metadata.max.json.js", + "require": "./metadata.max.json" + }, + "./mobile/metadata": { + "types": "./metadata.mobile.json.d.ts", + "import": "./metadata.mobile.json.js", + "require": "./metadata.mobile.json" + }, + "./metadata.mobile": { + "types": "./metadata.mobile.json.d.ts", + "import": "./metadata.mobile.json.js", + "require": "./metadata.mobile.json" + }, + "./metadata.mobile.json": { + "types": "./metadata.mobile.json.d.ts", + "import": "./metadata.mobile.json.js", + "require": "./metadata.mobile.json" + }, + "./mobile/examples": { + "types": "./examples.mobile.json.d.ts", + "import": "./examples.mobile.json.js", + "require": "./examples.mobile.json" + }, + "./examples.mobile": { + "types": "./examples.mobile.json.d.ts", + "import": "./examples.mobile.json.js", + "require": "./examples.mobile.json" + }, + "./examples.mobile.json": { + "types": "./examples.mobile.json.d.ts", + "import": "./examples.mobile.json.js", + "require": "./examples.mobile.json" + }, + "./package.json": "./package.json" + }, + "sideEffects": false, + "devDependencies": { + "@babel/cli": "^7.17.10", + "@babel/core": "^7.17.12", + "@babel/plugin-syntax-import-assertions": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.17.12", + "@babel/preset-env": "^7.17.12", + "@babel/register": "^7.17.7", + "babel-plugin-istanbul": "^6.1.1", + "chai": "^4.3.6", + "crlf": "^1.1.1", + "cross-env": "^7.0.3", + "istanbul": "^1.1.0-alpha.1", + "libphonenumber-metadata-generator": "^1.0.1", + "minimist": "^1.2.6", + "mocha": "^10.0.0", + "npm-run-all": "^4.1.5", + "nyc": "^15.1.0", + "rimraf": "^3.0.2", + "rollup": "^2.73.0", + "rollup-plugin-json": "^4.0.0", + "rollup-plugin-terser": "^7.0.2" + }, + "scripts": { + "metadata:update:job": "git reset --hard && git pull && npm install && npm run metadata:update:release", + "metadata:pull-request": "node runnable/metadata-pull-request", + "metadata:branch": "node runnable/metadata-branch", + "metadata:unbranch": "node runnable/metadata-unbranch", + "metadata:publish": "npm version patch && npm publish && git push", + "metadata:update:release": "npm run metadata:download && node runnable/metadata-update-and-release", + "metadata:update:branch": "npm run metadata:branch && npm run metadata:download && node runnable/metadata-update-and-push", + "metadata:update:pull-request": "npm run metadata:branch && npm run metadata:download && node runnable/metadata-update-and-push-and-pull-request", + "metadata:generate": "npm-run-all metadata:generate:min metadata:generate:full metadata:generate:max metadata:generate:mobile metadata:generate:min:js metadata:generate:full:js metadata:generate:max:js metadata:generate:mobile:js metadata:generate:mobile:examples:js", + "metadata:generate:min": "node runnable/generate ../PhoneNumberMetadata.xml ../metadata.min.json --examples mobile", + "metadata:generate:full": "node runnable/generate ../PhoneNumberMetadata.xml ../metadata.full.json --extended --debug", + "metadata:generate:max": "node runnable/generate ../PhoneNumberMetadata.xml ../metadata.max.json --extended --debug", + "metadata:generate:mobile": "node runnable/generate ../PhoneNumberMetadata.xml ../metadata.mobile.json --types mobile", + "metadata:generate:min:js": "node runnable/json-to-js ./metadata.min.json", + "metadata:generate:full:js": "node runnable/json-to-js ./metadata.full.json", + "metadata:generate:max:js": "node runnable/json-to-js ./metadata.max.json", + "metadata:generate:mobile:js": "node runnable/json-to-js ./metadata.mobile.json", + "metadata:generate:mobile:examples:js": "node runnable/json-to-js ./examples.mobile.json", + "metadata:download": "node runnable/download https://raw.githubusercontent.com/googlei18n/libphonenumber/master/resources/PhoneNumberMetadata.xml PhoneNumberMetadata.xml", + "generate-country-codes": "node --experimental-json-modules runnable/generate-country-codes", + "test": "node --experimental-json-modules node_modules/mocha/bin/_mocha --colors --bail --reporter spec --require ./test/setup.js \"source/**/*.test.js\" \"test/**/*.test.js\" --recursive", + "test-coverage": "npm-run-all build:commonjs test-coverage:commonjs", + "test-coverage:commonjs": "node --experimental-json-modules node_modules/istanbul/lib/cli.js cover -x \"*.test.js\" -x \"build/findNumbers/Leniency.js\" -x \"build/findNumbers/RegExpCache.js\" -x \"build/findNumbers/LRUCache.js\" -x \"build/PhoneNumberMatcher.js\" -x \"build/tools/semver-compare.js\" node_modules/mocha/bin/_mocha -- --colors --reporter dot --require ./test/setup.js \"build/**/*.test.js\" --recursive", + "test-coverage--does-not-work-with-es-modules": "node --experimental-json-modules node_modules/istanbul/lib/cli.js cover -x \"build/**\" -x \"es6/**\" -x \"*.test.js\" -x \"source/findNumbers/Leniency.js\" -x \"source/findNumbers/RegExpCache.js\" -x \"source/findNumbers/LRUCache.js\" -x \"source/PhoneNumberMatcher.js\" -x \"source/tools/semver-compare.js\" node_modules/mocha/bin/_mocha -- --colors --reporter dot --require ./test/setup.js \"source/**/*.test.js\" \"test/**/*.test.js\" --recursive", + "test-coverage--nyc--does-not-work-with-es-modules": "cross-env nyc node --experimental-json-modules node_modules/mocha/bin/_mocha --bail --require @babel/register --require ./test/setup.js \"source/**/*.test.js\" \"test/**/*.test.js\"", + "coveralls--nyc-is-very-slow-and-is-not-used": "nyc report --reporter=text-lcov | coveralls", + "test-travis": "node --experimental-json-modules node_modules/istanbul/lib/cli.js cover -x \"build/**\" -x \"es6/**\" -x \"*.test.js\" -x \"source/findNumbers/Leniency.js\" -x \"source/findNumbers/RegExpCache.js\" -x \"source/findNumbers/LRUCache.js\" -x \"source/PhoneNumberMatcher.js\" -x \"source/tools/semver-compare.js\" node_modules/mocha/bin/_mocha --report lcovonly -- --colors --reporter spec --require ./test/setup.js \"source/**/*.test.js\" \"test/**/*.test.js\" --recursive", + "clean": "rimraf ./build/**/* ./es6/**/*", + "build:commonjs": "npm-run-all build:commonjs:with-tests build:commonjs:package.json", + "build:commonjs:before-es-modules": "cross-env BABEL_ENV=commonjs babel ./source --out-dir ./build --source-maps --ignore test.js", + "build:commonjs:with-tests": "cross-env BABEL_ENV=commonjs babel ./source --out-dir ./build --source-maps", + "build:commonjs:package.json": "node runnable/create-commonjs-package-json.js", + "build:modules": "cross-env BABEL_ENV=es6 babel ./source --out-dir ./es6 --source-maps --ignore test.js", + "build:bundle": "rollup --config rollup.config.mjs", + "build": "npm-run-all clean build:commonjs build:modules build:bundle", + "prepublishOnly": "npm run metadata:generate && npm run generate-country-codes && crlf --set=LF metadata.*.json && npm-run-all build test" + }, + "repository": { + "type": "git", + "url": "git+https://gitlab.com/catamphetamine/libphonenumber-js.git" + }, + "keywords": [ + "telephone", + "phone", + "number", + "input", + "mobile", + "libphonenumber" + ], + "author": "catamphetamine ", + "license": "MIT", + "bugs": { + "url": "https://gitlab.com/catamphetamine/libphonenumber-js/issues" + }, + "homepage": "https://gitlab.com/catamphetamine/libphonenumber-js#readme" +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/rollup.config.mjs b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/rollup.config.mjs new file mode 100644 index 00000000..ece0f060 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/rollup.config.mjs @@ -0,0 +1,57 @@ +import json from 'rollup-plugin-json' +import { terser } from 'rollup-plugin-terser' + +export default [ + { + input: 'min/index.js', + plugins: [ + json(), + terser() + ], + output: { + format: 'umd', + name: 'libphonenumber', + file: 'bundle/libphonenumber-min.js', + sourcemap: true + } + }, + { + input: 'mobile/index.js', + plugins: [ + json(), + terser() + ], + output: { + format: 'umd', + name: 'libphonenumber', + file: 'bundle/libphonenumber-mobile.js', + sourcemap: true + } + }, + { + input: 'max/index.js', + plugins: [ + json(), + terser() + ], + output: { + format: 'umd', + name: 'libphonenumber', + file: 'bundle/libphonenumber-max.js', + sourcemap: true + } + }, + { + input: 'index.es6', + plugins: [ + json(), + terser() + ], + output: { + format: 'umd', + name: 'libphonenumber', + file: 'bundle/libphonenumber-js.min.js', + sourcemap: true + } + } +] \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/create-commonjs-package-json.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/create-commonjs-package-json.js new file mode 100644 index 00000000..679e828d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/create-commonjs-package-json.js @@ -0,0 +1,11 @@ +// Creates a `package.json` file in the CommonJS `build` folder. +// That marks that whole folder as CommonJS so that Node.js doesn't complain +// about `require()`-ing those files. + +import fs from 'fs' + +fs.writeFileSync('./build/package.json', JSON.stringify({ + name: 'libphonenumber-js/build', + type: 'commonjs', + private: true +}, null, 2), 'utf8') \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/download.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/download.js new file mode 100644 index 00000000..335f07c4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/download.js @@ -0,0 +1,12 @@ +import fs from 'fs' +import { download } from 'libphonenumber-metadata-generator' + +const url = process.argv[2] +const outputPath = process.argv[3] + +download(url).then((contents) => { + fs.writeFileSync(outputPath, contents) +}).catch((error) => { + console.error(error) + process.exit(1) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/generate-country-codes.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/generate-country-codes.js new file mode 100644 index 00000000..e02dacb9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/generate-country-codes.js @@ -0,0 +1,13 @@ +import metadata from '../metadata.min.json' assert { type: 'json' } +import fs from 'fs' + +const countryCodes = Object.keys(metadata.countries) + +fs.writeFileSync( + './types.d.ts', + fs.readFileSync('./types.d.ts', 'utf-8').replace( + /export type CountryCode = .*;/, + `export type CountryCode = ${countryCodes.map(_ => `'${_}'`).join(' | ')};` + ), + 'utf-8' +) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/generate.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/generate.js new file mode 100644 index 00000000..2257ba52 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/generate.js @@ -0,0 +1,81 @@ +import minimist from 'minimist' +import path from 'path' +import fs from 'fs' + +import { version, generate, compress } from 'libphonenumber-metadata-generator' + +// https://ru.stackoverflow.com/questions/1281148/referenceerror-dirname-is-not-defined +import { fileURLToPath } from 'url' +import { dirname } from 'path' +const __filename = fileURLToPath(import.meta.url) +const __dirname = dirname(__filename) + +// const REGION_CODE_FOR_NON_GEO_ENTITY = '001' + +const input = fs.readFileSync(path.join(__dirname, process.argv[2]), 'utf8') +const output_file = process.argv[3] + +const command_line_arguments = minimist(process.argv.slice(4)) + +// Included countries +let included_countries +if (command_line_arguments.countries) { + included_countries = command_line_arguments.countries.split(',') + console.log('Included countries:', included_countries) + included_countries = new Set(included_countries) +} + +// Include all regular expressions +let extended = false +if (command_line_arguments.extended) { + console.log('Include extra validation regular expressions') + extended = true +} + +// Included phone number types +let included_phone_number_types +if (command_line_arguments.types) { + included_phone_number_types = command_line_arguments.types.split(',') + console.log('Included phone number types:', included_phone_number_types) + included_phone_number_types = new Set(included_phone_number_types) +} + +// Generate and compress metadata +generate(input, version, included_countries, extended, included_phone_number_types).then((output) => { + // Write uncompressed metadata into a file for easier debugging + if (command_line_arguments.debug) { + console.log('Output uncompressed JSON for debugging') + fs.writeFileSync(path.join(__dirname, '../metadata.json'), JSON.stringify(output, undefined, 3)) + } + + // Compress the generated metadata + fs.writeFileSync(path.join(__dirname, output_file), JSON.stringify(compress(output))) + + // Output mobile phone number type examples + if (command_line_arguments.examples === 'mobile') { + var examples = Object.keys(output.countries).reduce(function(out, country_code) { + // if (country_code === REGION_CODE_FOR_NON_GEO_ENTITY) { + // return out + // } + var mobile = output.countries[country_code].examples.mobile + var fixed_line = output.countries[country_code].examples.fixed_line + if (mobile) { + out[country_code] = mobile + } + // "TA" country doesn't have any mobile phone number example + else if (fixed_line) { + console.warn(`Country ${country_code} doesn't have a mobile phone number example. Substituting with a fixed line phone number example.`) + out[country_code] = fixed_line + } else { + console.error(`Country ${country_code} doesn't have neither a mobile phone number example nor a fixed line phone number example.`) + // `async` errors aren't being caught at the top level in Node.js + process.exit(1) + } + return out + }, {}) + fs.writeFileSync( + path.join(__dirname, '../examples.mobile.json'), + JSON.stringify(examples) + ) + } +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/json-to-js.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/json-to-js.js new file mode 100644 index 00000000..6b1cd349 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/json-to-js.js @@ -0,0 +1,14 @@ +import fs from 'fs' + +const COMMENT = '// This file is a workaround for a bug in web browsers\' "native"' + '\n' + + '// ES6 importing system which is uncapable of importing "*.json" files.' + '\n' + + '// https://github.com/catamphetamine/libphonenumber-js/issues/239' + +const path = process.argv[2] +jsonToJs(path) + +function jsonToJs(path) { + let contents = fs.readFileSync(path, 'utf-8') + contents = COMMENT + '\n' + 'export default ' + contents + fs.writeFileSync(path + '.js', contents) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/metadata-branch.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/metadata-branch.js new file mode 100644 index 00000000..ee2754f3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/metadata-branch.js @@ -0,0 +1,26 @@ +import exec from './modules/exec.js' + +let metadata_branch_exists = false + +try +{ + exec('git rev-parse --verify update-metadata') + metadata_branch_exists = true +} +catch (error) +{ + if (error.message.indexOf('fatal: Needed a single revision') === -1) + { + throw error + } +} + +if (metadata_branch_exists) +{ + console.log(exec('git checkout master')) + console.log(exec('git branch -D update-metadata')) +} + +console.log(exec('git pull')) +console.log(exec('git branch update-metadata origin/master')) +console.log(exec('git checkout update-metadata')) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/metadata-update-and-push-and-pull-request.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/metadata-update-and-push-and-pull-request.js new file mode 100644 index 00000000..1241d65b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/metadata-update-and-push-and-pull-request.js @@ -0,0 +1,47 @@ +// In order for this script to work: +// +// * Install `hub` command line tool: `brew install hub` +// * Create a "Personal Access Token" in GitHub account settings (just "repo_public" would be enough) +// * Tell `hub` to use the token for creating GitHub pull requests: `echo "---\ngithub.com:\n- protocol: https\n user: GITHUB_USERNAME\n oauth_token: TOKEN" >> ~/.config/hub` + +import update_metadata from './modules/update-metadata.js' +import commit from './modules/commit.js' +import exec from './modules/exec.js' + +if (update_metadata()) +{ + commit() + + console.log() + console.log('========================================') + console.log('= Pushing changes =') + console.log('========================================') + console.log() + + // Delete previous `update-metadata` remote branch + // (if it already exists) + if (exec('git ls-remote --heads origin update-metadata')) + { + console.log(exec('git push origin update-metadata --delete')) + } + + // Push the local `update-metadata` branch to GitHub + console.log(exec('git push origin update-metadata')) + + console.log() + console.log('========================================') + console.log('= Pushed. Creating Pull Request. =') + console.log('========================================') + console.log() + + console.log(exec('hub pull-request -m "Updated metadata" -b catamphetamine/libphonenumber-js:master -h update-metadata')) + + console.log() + console.log('========================================') + console.log('= Pull Request created =') + console.log('========================================') + console.log() + + console.log(exec('git checkout master')) + console.log(exec('git branch -D update-metadata')) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/metadata-update-and-push.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/metadata-update-and-push.js new file mode 100644 index 00000000..9d414275 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/metadata-update-and-push.js @@ -0,0 +1,30 @@ +import update_metadata from './modules/update-metadata.js' +import commit from './modules/commit.js' +import exec from './modules/exec.js' + +if (update_metadata()) +{ + commit() + + console.log() + console.log('========================================') + console.log('= Pushing changes =') + console.log('========================================') + console.log() + + // Delete previous `update-metadata` remote branch + // (if it already exists) + if (exec('git ls-remote --heads origin update-metadata')) + { + console.log(exec('git push origin update-metadata --delete')) + } + + // Push the local `update-metadata` branch to GitHub + console.log(exec('git push origin update-metadata')) + + console.log() + console.log('==========================================') + console.log('= Pushed. Create Pull Request on GitHub. =') + console.log('==========================================') + console.log() +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/metadata-update-and-release.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/metadata-update-and-release.js new file mode 100644 index 00000000..c7922b80 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/metadata-update-and-release.js @@ -0,0 +1,32 @@ +import update_metadata from './modules/update-metadata.js' +import commit from './modules/commit.js' +import exec from './modules/exec.js' + +if (update_metadata()) +{ + commit() + + console.log() + console.log('========================================') + console.log('= Pushing changes =') + console.log('========================================') + console.log() + + console.log(exec('git push')) + + console.log() + console.log('========================================') + console.log('= Pushed. Releasing. =') + console.log('========================================') + console.log() + + console.log(exec('npm version patch')) + console.log(exec('npm publish')) + console.log(exec('git push')) + + console.log() + console.log('========================================') + console.log('= Released =') + console.log('========================================') + console.log() +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/modules/commit.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/modules/commit.js new file mode 100644 index 00000000..825db839 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/modules/commit.js @@ -0,0 +1,14 @@ +import exec from './exec.js' + +export default function() +{ + console.log() + console.log('========================================') + console.log('= Committing changes =') + console.log('========================================') + console.log() + + console.log(exec('git add .')) + + console.log(exec('git commit -m "Updated metadata"')) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/modules/exec.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/modules/exec.js new file mode 100644 index 00000000..349a15cc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/modules/exec.js @@ -0,0 +1,6 @@ +import child_process from 'child_process' + +export default function exec(command) +{ + return child_process.execSync(command).toString().trim() +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/modules/update-metadata.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/modules/update-metadata.js new file mode 100644 index 00000000..2253f745 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/runnable/modules/update-metadata.js @@ -0,0 +1,88 @@ +import exec from './exec.js' + +export default function() +{ + var metadata_changed = exec('git ls-files --modified PhoneNumberMetadata.xml') + + if (!metadata_changed) + { + console.log() + console.log('========================================') + console.log('= Metadata is up-to-date. Exiting. =') + console.log('========================================') + console.log() + + return + } + + console.log() + console.log('========================================') + console.log('= Metadata has changed, updating files =') + console.log('========================================') + console.log() + + console.log(exec('npm run metadata:generate')) + + console.log() + console.log('========================================') + console.log('= Running tests =') + console.log('========================================') + console.log() + + // console.log('* Actually not running tests because if they fail then it won\'t be reported in any way, and if instead tests fail for the Pull Request on github then the repo owner will be notified by Travis CI about that.') + console.log(exec('npm run build')) + console.log(exec('npm test')) + + var modified_files = exec('git ls-files --modified').split(/\s/) + + var unexpected_modified_files = modified_files.filter(function(file) + { + return file !== 'PhoneNumberMetadata.xml' && + !/^metadata\.[a-z]+\.json$/.test(file) && + !/^examples\.[a-z]+\.json$/.test(file) + }) + + // Turned off this "modified files" check + // because on Windows random files constantly got "modified" + // without actually being modified. + // (perhaps something related to line endings) + if (false && unexpected_modified_files.length > 0) + { + var error + + error += 'Only `PhoneNumberMetadata.xml`, `metadata.*.json` and `examples.*.json` files should be modified. Unexpected modified files:' + error += '\n' + error += '\n' + error += unexpected_modified_files.join('\n') + + console.log() + console.log('========================================') + console.log('= Error =') + console.log('========================================') + console.log() + console.log(error) + + throw new Error(error) + } + + // Doesn't work + // + // // http://stackoverflow.com/questions/33610682/git-list-of-staged-files + // var staged_files = exec('git diff --name-only --cached').split(/\s/) + // + // if (staged_files.length > 0) + // { + // console.log() + // console.log('========================================') + // console.log('= Error =') + // console.log('========================================') + // console.log() + // console.log('There are some staged files already. Aborting metadata update process.') + // console.log() + // console.log(staged_files.join('\n')) + // + // process.exit(1) + // } + + return true +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouType.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouType.js new file mode 100644 index 00000000..7da71df5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouType.js @@ -0,0 +1,411 @@ +import Metadata from './metadata.js' +import PhoneNumber from './PhoneNumber.js' +import AsYouTypeState from './AsYouTypeState.js' +import AsYouTypeFormatter, { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.js' +import AsYouTypeParser, { extractFormattedDigitsAndPlus } from './AsYouTypeParser.js' +import getCountryByCallingCode from './helpers/getCountryByCallingCode.js' + +const USE_NON_GEOGRAPHIC_COUNTRY_CODE = false + +export default class AsYouType { + /** + * @param {(string|object)?} [optionsOrDefaultCountry] - The default country used for parsing non-international phone numbers. Can also be an `options` object. + * @param {Object} metadata + */ + constructor(optionsOrDefaultCountry, metadata) { + this.metadata = new Metadata(metadata) + const [defaultCountry, defaultCallingCode] = this.getCountryAndCallingCode(optionsOrDefaultCountry) + this.defaultCountry = defaultCountry + this.defaultCallingCode = defaultCallingCode + this.reset() + } + + getCountryAndCallingCode(optionsOrDefaultCountry) { + // Set `defaultCountry` and `defaultCallingCode` options. + let defaultCountry + let defaultCallingCode + // Turns out `null` also has type "object". Weird. + if (optionsOrDefaultCountry) { + if (typeof optionsOrDefaultCountry === 'object') { + defaultCountry = optionsOrDefaultCountry.defaultCountry + defaultCallingCode = optionsOrDefaultCountry.defaultCallingCode + } else { + defaultCountry = optionsOrDefaultCountry + } + } + if (defaultCountry && !this.metadata.hasCountry(defaultCountry)) { + defaultCountry = undefined + } + if (defaultCallingCode) { + /* istanbul ignore if */ + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + if (this.metadata.isNonGeographicCallingCode(defaultCallingCode)) { + defaultCountry = '001' + } + } + } + return [defaultCountry, defaultCallingCode] + } + + /** + * Inputs "next" phone number characters. + * @param {string} text + * @return {string} Formatted phone number characters that have been input so far. + */ + input(text) { + const { + digits, + justLeadingPlus + } = this.parser.input(text, this.state) + if (justLeadingPlus) { + this.formattedOutput = '+' + } else if (digits) { + this.determineTheCountryIfNeeded() + // Match the available formats by the currently available leading digits. + if (this.state.nationalSignificantNumber) { + this.formatter.narrowDownMatchingFormats(this.state) + } + let formattedNationalNumber + if (this.metadata.hasSelectedNumberingPlan()) { + formattedNationalNumber = this.formatter.format(digits, this.state) + } + if (formattedNationalNumber === undefined) { + // See if another national (significant) number could be re-extracted. + if (this.parser.reExtractNationalSignificantNumber(this.state)) { + this.determineTheCountryIfNeeded() + // If it could, then re-try formatting the new national (significant) number. + const nationalDigits = this.state.getNationalDigits() + if (nationalDigits) { + formattedNationalNumber = this.formatter.format(nationalDigits, this.state) + } + } + } + this.formattedOutput = formattedNationalNumber + ? this.getFullNumber(formattedNationalNumber) + : this.getNonFormattedNumber() + } + return this.formattedOutput + } + + reset() { + this.state = new AsYouTypeState({ + onCountryChange: (country) => { + // Before version `1.6.0`, the official `AsYouType` formatter API + // included the `.country` property of an `AsYouType` instance. + // Since that property (along with the others) have been moved to + // `this.state`, `this.country` property is emulated for compatibility + // with the old versions. + this.country = country + }, + onCallingCodeChange: (callingCode, country) => { + this.metadata.selectNumberingPlan(country, callingCode) + this.formatter.reset(this.metadata.numberingPlan, this.state) + this.parser.reset(this.metadata.numberingPlan) + } + }) + this.formatter = new AsYouTypeFormatter({ + state: this.state, + metadata: this.metadata + }) + this.parser = new AsYouTypeParser({ + defaultCountry: this.defaultCountry, + defaultCallingCode: this.defaultCallingCode, + metadata: this.metadata, + state: this.state, + onNationalSignificantNumberChange: () => { + this.determineTheCountryIfNeeded() + this.formatter.reset(this.metadata.numberingPlan, this.state) + } + }) + this.state.reset(this.defaultCountry, this.defaultCallingCode) + this.formattedOutput = '' + return this + } + + /** + * Returns `true` if the phone number is being input in international format. + * In other words, returns `true` if and only if the parsed phone number starts with a `"+"`. + * @return {boolean} + */ + isInternational() { + return this.state.international + } + + /** + * Returns the "calling code" part of the phone number when it's being input + * in an international format. + * If no valid calling code has been entered so far, returns `undefined`. + * @return {string} [callingCode] + */ + getCallingCode() { + // If the number is being input in national format and some "default calling code" + // has been passed to `AsYouType` constructor, then `this.state.callingCode` + // is equal to that "default calling code". + // + // If the number is being input in national format and no "default calling code" + // has been passed to `AsYouType` constructor, then returns `undefined`, + // even if a "default country" has been passed to `AsYouType` constructor. + // + if (this.isInternational()) { + return this.state.callingCode + } + } + + // A legacy alias. + getCountryCallingCode() { + return this.getCallingCode() + } + + /** + * Returns a two-letter country code of the phone number. + * Returns `undefined` for "non-geographic" phone numbering plans. + * Returns `undefined` if no phone number has been input yet. + * @return {string} [country] + */ + getCountry() { + const { digits } = this.state + // Return `undefined` if no digits have been input yet. + if (digits) { + return this._getCountry() + } + } + + /** + * Returns a two-letter country code of the phone number. + * Returns `undefined` for "non-geographic" phone numbering plans. + * @return {string} [country] + */ + _getCountry() { + const { country } = this.state + /* istanbul ignore if */ + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + // `AsYouType.getCountry()` returns `undefined` + // for "non-geographic" phone numbering plans. + if (country === '001') { + return + } + } + return country + } + + determineTheCountryIfNeeded() { + // Suppose a user enters a phone number in international format, + // and there're several countries corresponding to that country calling code, + // and a country has been derived from the number, and then + // a user enters one more digit and the number is no longer + // valid for the derived country, so the country should be re-derived + // on every new digit in those cases. + // + // If the phone number is being input in national format, + // then it could be a case when `defaultCountry` wasn't specified + // when creating `AsYouType` instance, and just `defaultCallingCode` was specified, + // and that "calling code" could correspond to a "non-geographic entity", + // or there could be several countries corresponding to that country calling code. + // In those cases, `this.country` is `undefined` and should be derived + // from the number. Again, if country calling code is ambiguous, then + // `this.country` should be re-derived with each new digit. + // + if (!this.state.country || this.isCountryCallingCodeAmbiguous()) { + this.determineTheCountry() + } + } + + // Prepends `+CountryCode ` in case of an international phone number + getFullNumber(formattedNationalNumber) { + if (this.isInternational()) { + const prefix = (text) => this.formatter.getInternationalPrefixBeforeCountryCallingCode(this.state, { + spacing: text ? true : false + }) + text + const { callingCode } = this.state + if (!callingCode) { + return prefix(`${this.state.getDigitsWithoutInternationalPrefix()}`) + } + if (!formattedNationalNumber) { + return prefix(callingCode) + } + return prefix(`${callingCode} ${formattedNationalNumber}`) + } + return formattedNationalNumber + } + + getNonFormattedNationalNumberWithPrefix() { + const { + nationalSignificantNumber, + complexPrefixBeforeNationalSignificantNumber, + nationalPrefix + } = this.state + let number = nationalSignificantNumber + const prefix = complexPrefixBeforeNationalSignificantNumber || nationalPrefix + if (prefix) { + number = prefix + number + } + return number + } + + getNonFormattedNumber() { + const { nationalSignificantNumberMatchesInput } = this.state + return this.getFullNumber( + nationalSignificantNumberMatchesInput + ? this.getNonFormattedNationalNumberWithPrefix() + : this.state.getNationalDigits() + ) + } + + getNonFormattedTemplate() { + const number = this.getNonFormattedNumber() + if (number) { + return number.replace(/[\+\d]/g, DIGIT_PLACEHOLDER) + } + } + + isCountryCallingCodeAmbiguous() { + const { callingCode } = this.state + const countryCodes = this.metadata.getCountryCodesForCallingCode(callingCode) + return countryCodes && countryCodes.length > 1 + } + + // Determines the country of the phone number + // entered so far based on the country phone code + // and the national phone number. + determineTheCountry() { + this.state.setCountry(getCountryByCallingCode( + this.isInternational() ? this.state.callingCode : this.defaultCallingCode, + this.state.nationalSignificantNumber, + this.metadata + )) + } + + /** + * Returns a E.164 phone number value for the user's input. + * + * For example, for country `"US"` and input `"(222) 333-4444"` + * it will return `"+12223334444"`. + * + * For international phone number input, it will also auto-correct + * some minor errors such as using a national prefix when writing + * an international phone number. For example, if the user inputs + * `"+44 0 7400 000000"` then it will return an auto-corrected + * `"+447400000000"` phone number value. + * + * Will return `undefined` if no digits have been input, + * or when inputting a phone number in national format and no + * default country or default "country calling code" have been set. + * + * @return {string} [value] + */ + getNumberValue() { + const { + digits, + callingCode, + country, + nationalSignificantNumber + } = this.state + + // Will return `undefined` if no digits have been input. + if (!digits) { + return + } + + if (this.isInternational()) { + if (callingCode) { + return '+' + callingCode + nationalSignificantNumber + } else { + return '+' + digits + } + } else { + if (country || callingCode) { + const callingCode_ = country ? this.metadata.countryCallingCode() : callingCode + return '+' + callingCode_ + nationalSignificantNumber + } + } + } + + /** + * Returns an instance of `PhoneNumber` class. + * Will return `undefined` if no national (significant) number + * digits have been entered so far, or if no `defaultCountry` has been + * set and the user enters a phone number not in international format. + */ + getNumber() { + const { + nationalSignificantNumber, + carrierCode, + callingCode + } = this.state + + // `this._getCountry()` is basically same as `this.state.country` + // with the only change that it return `undefined` in case of a + // "non-geographic" numbering plan instead of `"001"` "internal use" value. + const country = this._getCountry() + + if (!nationalSignificantNumber) { + return + } + + if (!country && !callingCode) { + return + } + + const phoneNumber = new PhoneNumber( + country || callingCode, + nationalSignificantNumber, + this.metadata.metadata + ) + if (carrierCode) { + phoneNumber.carrierCode = carrierCode + } + // Phone number extensions are not supported by "As You Type" formatter. + return phoneNumber + } + + /** + * Returns `true` if the phone number is "possible". + * Is just a shortcut for `PhoneNumber.isPossible()`. + * @return {boolean} + */ + isPossible() { + const phoneNumber = this.getNumber() + if (!phoneNumber) { + return false + } + return phoneNumber.isPossible() + } + + /** + * Returns `true` if the phone number is "valid". + * Is just a shortcut for `PhoneNumber.isValid()`. + * @return {boolean} + */ + isValid() { + const phoneNumber = this.getNumber() + if (!phoneNumber) { + return false + } + return phoneNumber.isValid() + } + + /** + * @deprecated + * This method is used in `react-phone-number-input/source/input-control.js` + * in versions before `3.0.16`. + */ + getNationalNumber() { + return this.state.nationalSignificantNumber + } + + /** + * Returns the phone number characters entered by the user. + * @return {string} + */ + getChars() { + return (this.state.international ? '+' : '') + this.state.digits + } + + /** + * Returns the template for the formatted phone number. + * @return {string} + */ + getTemplate() { + return this.formatter.getTemplate(this.state) || this.getNonFormattedTemplate() || '' + } +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouType.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouType.test.js new file mode 100644 index 00000000..83c166ce --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouType.test.js @@ -0,0 +1,1370 @@ +import metadata from '../metadata.min.json' assert { type: 'json' } +import AsYouType_ from './AsYouType.js' + +class AsYouType extends AsYouType_ { + constructor(country_code) { + super(country_code, metadata) + } +} + +const USE_NON_GEOGRAPHIC_COUNTRY_CODE = false + +describe('AsYouType', () => { + it('should use "national_prefix_formatting_rule"', () => { + // With national prefix (full). + new AsYouType('RU').input('88005553535').should.equal('8 (800) 555-35-35') + // With national prefix (partial). + new AsYouType('RU').input('880055535').should.equal('8 (800) 555-35') + }) + + it('should populate national number template (digit by digit)', () => { + const formatter = new AsYouType('US') + formatter.input('1') + // formatter.formatter.template.should.equal('x (xxx) xxx-xxxx') + formatter.formatter.template.should.equal('x xxx-xxxx') + // formatter.formatter.populatedNationalNumberTemplate.should.equal('1 (xxx) xxx-xxxx') + formatter.formatter.populatedNationalNumberTemplate.should.equal('1 xxx-xxxx') + formatter.input('213') + formatter.formatter.populatedNationalNumberTemplate.should.equal('1 (213) xxx-xxxx') + formatter.input('3734253') + formatter.formatter.populatedNationalNumberTemplate.should.equal('1 (213) 373-4253') + }) + + it('should populate international number template (digit by digit) (default country)', () => { + const formatter = new AsYouType('US') + expect(formatter.formatter.template).to.be.undefined + expect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined + formatter.input('').should.equal('') + expect(formatter.formatter.template).to.be.undefined + expect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined + formatter.input('+').should.equal('+') + formatter.getTemplate().should.equal('x') + expect(formatter.formatter.template).to.be.undefined + expect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined + formatter.input('1').should.equal('+1') + formatter.getTemplate().should.equal('xx') + // Hasn't started formatting the phone number using the template yet. + // formatter.formatter.template.should.equal('xx xxx xxx xxxx') + formatter.formatter.template.should.equal('xx xxx xxxx') + // formatter.formatter.populatedNationalNumberTemplate.should.equal('xxx xxx xxxx') + formatter.formatter.populatedNationalNumberTemplate.should.equal('xxx xxxx') + // Has some national number digits, starts formatting the phone number using the template. + formatter.input('213') + formatter.formatter.populatedNationalNumberTemplate.should.equal('213 xxx xxxx') + formatter.input('3734253') + formatter.formatter.populatedNationalNumberTemplate.should.equal('213 373 4253') + }) + + it('should populate international number template (digit by digit)', () => { + const formatter = new AsYouType() + expect(formatter.formatter.template).to.be.undefined + expect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined + formatter.input('').should.equal('') + expect(formatter.formatter.template).to.be.undefined + expect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined + formatter.input('+').should.equal('+') + expect(formatter.formatter.template).to.be.undefined + expect(formatter.formatter.populatedNationalNumberTemplate).to.be.undefined + formatter.input('1').should.equal('+1') + // formatter.formatter.template.should.equal('xx xxx xxx xxxx') + formatter.formatter.template.should.equal('xx xxx xxxx') + // Hasn't yet started formatting the phone number using the template. + // formatter.formatter.populatedNationalNumberTemplate.should.equal('xxx xxx xxxx') + formatter.formatter.populatedNationalNumberTemplate.should.equal('xxx xxxx') + // Has some national number digits, starts formatting the phone number using the template. + formatter.input('213') + formatter.formatter.populatedNationalNumberTemplate.should.equal('213 xxx xxxx') + formatter.input('3734253') + formatter.formatter.populatedNationalNumberTemplate.should.equal('213 373 4253') + }) + + it('should populate national number template (attempt to format complete number)', () => { + const formatter = new AsYouType('US') + formatter.input('12133734253').should.equal('1 (213) 373-4253') + formatter.formatter.template.should.equal('x (xxx) xxx-xxxx') + formatter.formatter.populatedNationalNumberTemplate.should.equal('1 (213) 373-4253') + }) + + it('should parse and format phone numbers as you type', () => { + // International number test + new AsYouType().input('+12133734').should.equal('+1 213 373 4') + // Local number test + new AsYouType('US').input('2133734').should.equal('(213) 373-4') + + // US national number retains national prefix. + new AsYouType('US').input('12133734').should.equal('1 (213) 373-4') + + // US national number retains national prefix (full number). + new AsYouType('US').input('12133734253').should.equal('1 (213) 373-4253') + + let formatter + + // // Should discard national prefix from a "complete" phone number. + // new AsYouType('RU').input('8800555353').should.equal('880 055-53-53') + + // Shouldn't extract national prefix when inputting in international format. + new AsYouType('RU').input('+7800555353').should.equal('+7 800 555 35 3') + + new AsYouType('CH').input('044-668-1').should.equal('044 668 1') + + // Test International phone number (international) + + formatter = new AsYouType() + + // formatter.valid.should.be.false + type(formatter.getCountry()).should.equal('undefined') + type(formatter.getCountryCallingCode()).should.equal('undefined') + formatter.getTemplate().should.equal('') + + formatter.input('+').should.equal('+') + + // formatter.valid.should.be.false + type(formatter.getCountry()).should.equal('undefined') + type(formatter.getCountryCallingCode()).should.equal('undefined') + formatter.getTemplate().should.equal('x') + + formatter.input('1').should.equal('+1') + + // formatter.valid.should.be.false + type(formatter.getCountry()).should.equal('undefined') + formatter.getCountryCallingCode().should.equal('1') + formatter.getTemplate().should.equal('xx') + + formatter.input('2').should.equal('+1 2') + formatter.getTemplate().should.equal('xx x') + + // formatter.valid.should.be.false + type(formatter.getCountry()).should.equal('undefined') + + formatter.input('1').should.equal('+1 21') + formatter.input('3').should.equal('+1 213') + formatter.input(' ').should.equal('+1 213') + formatter.input('3').should.equal('+1 213 3') + formatter.input('3').should.equal('+1 213 33') + formatter.input('3').should.equal('+1 213 333') + formatter.input('4').should.equal('+1 213 333 4') + formatter.input('4').should.equal('+1 213 333 44') + formatter.input('4').should.equal('+1 213 333 444') + + // formatter.valid.should.be.false + type(formatter.getCountry()).should.equal('undefined') + + formatter.input('4').should.equal('+1 213 333 4444') + + // formatter.valid.should.be.true + formatter.getCountry().should.equal('US') + // This one below contains "punctuation spaces" + // along with the regular spaces + formatter.getTemplate().should.equal('xx xxx xxx xxxx') + + formatter.input('5').should.equal('+1 21333344445') + + // formatter.valid.should.be.false + expect(formatter.getCountry()).to.be.undefined + formatter.getCountryCallingCode().should.equal('1') + expect(formatter.formatter.template).to.be.undefined + + // Check that clearing an international formatter + // also clears country metadata. + + formatter.reset() + + formatter.input('+').should.equal('+') + formatter.input('7').should.equal('+7') + formatter.input('9').should.equal('+7 9') + formatter.input('99 111 22 33').should.equal('+7 999 111 22 33') + + // Test Switzerland phone numbers + + formatter = new AsYouType('CH') + + formatter.input(' ').should.equal('') + formatter.input('0').should.equal('0') + formatter.input('4').should.equal('04') + formatter.input(' ').should.equal('04') + formatter.input('-').should.equal('04') + formatter.input('4').should.equal('044') + formatter.input('-').should.equal('044') + formatter.input('6').should.equal('044 6') + formatter.input('6').should.equal('044 66') + formatter.input('8').should.equal('044 668') + formatter.input('-').should.equal('044 668') + formatter.input('1').should.equal('044 668 1') + formatter.input('8').should.equal('044 668 18') + + // formatter.valid.should.be.false + formatter.getCountry().should.equal('CH') + formatter.formatter.template.should.equal('xxx xxx xx xx') + formatter.getTemplate().should.equal('xxx xxx xx') + + formatter.input(' 00').should.equal('044 668 18 00') + + // formatter.valid.should.be.true + formatter.getCountry().should.equal('CH') + formatter.getTemplate().should.equal('xxx xxx xx xx') + + formatter.input('9').should.equal('04466818009') + + // formatter.valid.should.be.false + formatter.getCountry().should.equal('CH') + expect(formatter.formatter.template).to.be.undefined + + // Kazakhstan (non-main country for +7 country phone code) + + formatter = new AsYouType() + + formatter.input('+77172580659') + formatter.getCountry().should.equal('KZ') + + // Brazil + + formatter = new AsYouType('BR') + formatter.input('11987654321').should.equal('(11) 98765-4321') + + // UK (Jersey) (non-main country for +44 country phone code) + + formatter = new AsYouType() + formatter.input('+447700300000').should.equal('+44 7700 300000') + formatter.getTemplate().should.equal('xxx xxxx xxxxxx') + formatter.getCountry().should.equal('JE') + + // Braces must be part of the template. + formatter = new AsYouType('RU') + formatter.input('88005553535').should.equal('8 (800) 555-35-35') + formatter.getTemplate().should.equal('x (xxx) xxx-xx-xx') + + // Test Russian phone numbers + // (with optional national prefix `8`) + + formatter = new AsYouType('RU') + + formatter.input('8').should.equal('8') + formatter.input('9').should.equal('8 9') + formatter.input('9').should.equal('8 99') + formatter.input('9').should.equal('8 (999)') + formatter.input('-').should.equal('8 (999)') + formatter.input('1234').should.equal('8 (999) 123-4') + formatter.input('567').should.equal('8 (999) 123-45-67') + formatter.input('8').should.equal('899912345678') + + // Shouldn't strip national prefix if it is optional + // and if it's a valid phone number (international). + formatter = new AsYouType('RU') + // formatter.input('8005553535').should.equal('(800) 555-35-35') + formatter.input('+78005553535').should.equal('+7 800 555 35 35') + formatter.getNationalNumber().should.equal('8005553535') + + // Check that clearing an national formatter: + // * doesn't clear country metadata + // * clears all other things + + formatter.reset() + + formatter.input('8').should.equal('8') + formatter.input('9').should.equal('8 9') + formatter.input('9').should.equal('8 99') + formatter.input('9').should.equal('8 (999)') + formatter.input('-').should.equal('8 (999)') + formatter.input('1234').should.equal('8 (999) 123-4') + formatter.input('567').should.equal('8 (999) 123-45-67') + formatter.input('8').should.equal('899912345678') + + // National prefix should not be prepended + // when formatting local NANPA phone numbers. + new AsYouType('US').input('1').should.equal('1') + new AsYouType('US').input('12').should.equal('1 2') + new AsYouType('US').input('123').should.equal('1 23') + + // Bulgaria + // (should not prepend national prefix `0`) + new AsYouType('BG').input('111 222 3').should.equal('1112223') + + // Deutchland + new AsYouType().input('+4915539898001').should.equal('+49 15539 898001') + + // KZ detection + formatter = new AsYouType() + formatter.input('+7 702 211 1111') + formatter.getCountry().should.equal('KZ') + // formatter.valid.should.equal(true) + + // New Zealand formatting fix (issue #89) + new AsYouType('NZ').input('0212').should.equal('021 2') + + // South Korea + formatter = new AsYouType() + formatter.input('+82111111111').should.equal('+82 11 111 1111') + formatter.getTemplate().should.equal('xxx xx xxx xxxx') + }) + + it('should filter out formats that require a national prefix and no national prefix has been input', () => { + // Afghanistan. + const formatter = new AsYouType('AF') + + // No national prefix, and national prefix is required in the format. + // (not `"national_prefix_is_optional_when_formatting": true`) + formatter.input('44444444').should.equal('44444444') + expect(formatter.formatter.template).to.be.undefined + + // With national prefix + formatter.reset().input('044444444').should.equal('044 444 444') + formatter.formatter.template.should.equal('xxx xxx xxxx') + }) + + it('should work when a digit is not a national prefix but a part of a valid national number', () => { + // In Russia, `8` could be both a valid national prefix + // and a part of a valid national number. + const formatter = new AsYouType('RU') + // The formatter could try both variants: + // with extracting national prefix + // and without extracting it, + // and then choose whichever way has `this.matchingFormats`. + // Or there could be two instances of the formatter: + // one that extracts national prefix and one that doesn't, + // and then the one that has `this.matchingFormats` would be + // used to format the phone number. + // Something like an option `extractNationalPrefix: false` + // and creating `this.withNationalPrefixFormatter = new AsYouType(this.defaultCountry || this.defaultCallingCode, { metadata, extractNationalPrefix: false })` + // and something like `this.withNationalPrefixFormatter.input(nextDigits)` in `input(nextDigits)`. + // But, for this specific case, it's not required: + // in Russia, people are used to inputting `800` numbers with national prefix `8`: + // `8 800 555 35 35`. + // formatter.input('8005553535').should.equal('(800) 555-35-35') + formatter.input('8005553535').should.equal('8005553535') + formatter.reset() + formatter.input('+78005553535').should.equal('+7 800 555 35 35') + }) + + it('should match formats that require a national prefix and no national prefix has been input (national prefix is mandatory for a format)', () => { + const formatter = new AsYouType('FR') + formatter.input('612345678').should.equal('612345678') + formatter.reset() + formatter.input('0612345678').should.equal('06 12 34 56 78') + }) + + it('should match formats that require a national prefix and no national prefix has been input (national prefix is not mandatory for a format)', () => { + const formatter = new AsYouType('RU') + // Without national prefix. + formatter.input('9991234567').should.equal('999 123-45-67') + formatter.reset() + // With national prefix. + formatter.input('89991234567').should.equal('8 (999) 123-45-67') + }) + + it('should not use `national_prefix_formatting_rule` when formatting international phone numbers', () => { + // Brazil. + // `national_prefix_formatting_rule` is `($1)`. + // Should not add braces around `12` when being input in international format. + new AsYouType().input('+55123456789').should.equal('+55 12 3456 789') + new AsYouType('BR').input('+55123456789').should.equal('+55 12 3456 789') + new AsYouType('BR').input('123456789').should.equal('(12) 3456-789') + }) + + it('should support incorrectly entered international phone numbers (with a national prefix)', () => { + let formatter + + formatter = new AsYouType() + formatter.input('+1 1 877 215 5230').should.equal('+1 1 877 215 5230') + // formatter.input('+1 1 877 215 5230').should.equal('+1 1 8772155230') + formatter.getNationalNumber().should.equal('8772155230') + + // They've added another number format that has `8` leading digit + // and 14 digits. Maybe it's something related to Kazakhstan. + // formatter = new AsYouType() + // formatter.input('+78800555353').should.equal('+7 880 055 53 53') + // formatter.input('5').should.equal('+7 8 800 555 35 35') + // formatter.getNationalNumber().should.equal('8005553535') + }) + + it('should return a partial template for current value', () => { + const asYouType = new AsYouType('US') + + asYouType.input('').should.equal('') + asYouType.getTemplate().should.equal('') + + asYouType.input('2').should.equal('2') + // asYouType.getTemplate().should.equal('x') + // Doesn't format for a single digit. + asYouType.getTemplate().should.equal('x') + + asYouType.input('1').should.equal('21') + asYouType.getTemplate().should.equal('xx') + + asYouType.input('3').should.equal('(213)') + asYouType.getTemplate().should.equal('(xxx)') + }) + + it(`should fall back to the default country`, () => { + const formatter = new AsYouType('RU') + + formatter.input('8').should.equal('8') + formatter.input('9').should.equal('8 9') + formatter.input('9').should.equal('8 99') + formatter.input('9').should.equal('8 (999)') + + // formatter.valid.should.be.false + formatter.formatter.template.should.equal('x (xxx) xxx-xx-xx') + formatter.getCountry().should.equal('RU') + // formatter.getCountryCallingCode().should.equal('7') + + formatter.input('000000000000').should.equal('8999000000000000') + + // formatter.valid.should.be.false + expect(formatter.formatter.template).to.be.undefined + formatter.getCountry().should.equal('RU') + // formatter.getCountryCallingCode().should.equal('7') + + formatter.reset() + + // formatter.valid.should.be.false + expect(formatter.formatter.template).to.be.undefined + expect(formatter.getCountry()).to.be.undefined + // formatter.getCountryCallingCode().should.equal('7') + + formatter.input('+1-213-373-4253').should.equal('+1 213 373 4253') + + // formatter.valid.should.be.true + formatter.getTemplate().should.equal('xx xxx xxx xxxx') + formatter.getCountry().should.equal('US') + formatter.getCountryCallingCode().should.equal('1') + }) + + it('should work in edge cases', () => { + let formatter + let thrower + + // No metadata + thrower = () => new AsYouType_('RU') + thrower.should.throw('`metadata` argument not passed') + + // Second '+' sign + + formatter = new AsYouType('RU') + + formatter.input('+').should.equal('+') + formatter.input('7').should.equal('+7') + formatter.input('+').should.equal('+7') + + // Out-of-position '+' sign + + formatter = new AsYouType('RU') + + formatter.input('8').should.equal('8') + formatter.input('+').should.equal('8') + + // No format matched + + formatter = new AsYouType('RU') + + formatter.input('88005553535').should.equal('8 (800) 555-35-35') + formatter.input('0').should.equal('880055535350') + + // Invalid country phone code + + formatter = new AsYouType() + + formatter.input('+0123').should.equal('+0123') + + // No country specified and not an international number + + formatter = new AsYouType() + + formatter.input('88005553535').should.equal('88005553535') + + // Extract national prefix when no `national_prefix` is set + + formatter = new AsYouType('AD') + + formatter.input('155555').should.equal('155 555') + + // Typing nonsense + + formatter = new AsYouType('RU') + + formatter.input('+1abc2').should.equal('+1') + + // Should reset default country when explicitly + // typing in an international phone number + + formatter = new AsYouType('RU') + + formatter.input('+') + type(formatter.getCountry()).should.equal('undefined') + type(formatter.getCountryCallingCode()).should.equal('undefined') + + // Country not inferrable from the phone number, + // while the phone number itself can already be formatted "completely". + + formatter = new AsYouType() + + formatter.input('+12223333333') + type(formatter.getCountry()).should.equal('undefined') + formatter.getCountryCallingCode().should.equal('1') + + // Reset a chosen format when it no longer applies given the new leading digits. + // If Google changes metadata for England then this test might not cover the case. + formatter = new AsYouType('GB') + formatter.input('0845').should.equal('0845') + // New leading digits don't match the format previously chosen. + // Reset the format. + formatter.input('0').should.equal('0845 0') + }) + + it('should choose between matching formats based on the absence or presence of a national prefix', () => { + // The first matching format: + // { + // "pattern": "(\\d{2})(\\d{5,6})", + // "leading_digits_patterns": [ + // "(?:10|2[0-57-9])[19]", + // "(?:10|2[0-57-9])(?:10|9[56])", + // "(?:10|2[0-57-9])(?:100|9[56])" + // ], + // "national_prefix_formatting_rule": "0$1", + // "format": "$1 $2", + // "domestic_carrier_code_formatting_rule": "$CC $FG" + // } + // + // The second matching format: + // { + // "pattern": "(\\d{2})(\\d{4})(\\d{4})", + // "leading_digits_patterns": [ + // "10|2(?:[02-57-9]|1[1-9])", + // "10|2(?:[02-57-9]|1[1-9])", + // "10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])" + // ], + // "national_prefix_formatting_rule": "0$1", + // "national_prefix_is_optional_when_formatting": true, + // "format": "$1 $2 $3", + // "domestic_carrier_code_formatting_rule": "$CC $FG" + // } + // + const formatter = new AsYouType('CN') + // National prefix has been input. + // Chooses the first format. + formatter.input('01010000').should.equal('010 10000') + formatter.reset() + // No national prefix has been input, + // and `national_prefix_for_parsing` not matched. + // The first format won't match, because it doesn't have + // `"national_prefix_is_optional_when_formatting": true`. + // The second format will match, because it does have + // `"national_prefix_is_optional_when_formatting": true`. + formatter.input('1010000').should.equal('10 1000 0') + }) + + it('should not accept phone number extensions', () => { + new AsYouType().input('+1-213-373-4253 ext. 123').should.equal('+1 213 373 4253') + }) + + it('should parse non-European digits', () => { + new AsYouType().input('+١٢١٢٢٣٢٣٢٣٢').should.equal('+1 212 232 3232') + }) + + it('should return a PhoneNumber instance', () => { + const formatter = new AsYouType('BR') + + // No country calling code. + expect(formatter.getNumber()).to.be.undefined + + formatter.input('+1') + // No national number digits. + expect(formatter.getNumber()).to.be.undefined + + formatter.input('213-373-4253') + + let phoneNumber = formatter.getNumber() + phoneNumber.country.should.equal('US') + phoneNumber.countryCallingCode.should.equal('1') + phoneNumber.number.should.equal('+12133734253') + phoneNumber.nationalNumber.should.equal('2133734253') + + formatter.reset() + formatter.input('+1-113-373-4253') + + phoneNumber = formatter.getNumber() + expect(phoneNumber.country).to.be.undefined + phoneNumber.countryCallingCode.should.equal('1') + + // An incorrect NANPA international phone number. + // (contains national prefix in an international phone number) + + formatter.reset() + formatter.input('+1-1') + + // Before leading digits < 3 matching was implemented: + // + // phoneNumber = formatter.getNumber() + // expect(phoneNumber).to.not.be.undefined + // + // formatter.input('1') + // phoneNumber = formatter.getNumber() + // expect(phoneNumber.country).to.be.undefined + // phoneNumber.countryCallingCode.should.equal('1') + // phoneNumber.number.should.equal('+111') + + // After leading digits < 3 matching was implemented: + // + phoneNumber = formatter.getNumber() + expect(phoneNumber).to.be.undefined + // + formatter.input('1') + phoneNumber = formatter.getNumber() + expect(phoneNumber.country).to.be.undefined + phoneNumber.countryCallingCode.should.equal('1') + phoneNumber.number.should.equal('+11') + }) + + it('should work with countries that add digits to national (significant) number', () => { + // When formatting Argentinian mobile numbers in international format, + // a `9` is prepended, when compared to national format. + const asYouType = new AsYouType('AR') + asYouType.input('+5493435551212').should.equal('+54 9 3435 55 1212') + asYouType.reset() + // Digits shouldn't be changed when formatting in national format. + // (no `9` is prepended). + // First parses national (significant) number by prepending `9` to it + // and stripping `15` from it. + // Then uses `$2 15-$3-$4` format that strips the leading `9` + // and adds `15`. + asYouType.input('0343515551212').should.equal('03435 15-55-1212') + }) + + it('should return non-formatted phone number when no format matches and national (significant) number has digits added', () => { + // When formatting Argentinian mobile numbers in international format, + // a `9` is prepended, when compared to national format. + const asYouType = new AsYouType('AR') + // Digits shouldn't be changed when formatting in national format. + // (no `9` is prepended). + // First parses national (significant) number by prepending `9` to it + // and stripping `15` from it. + // Then uses `$2 15-$3-$4` format that strips the leading `9` + // and adds `15`. + // `this.nationalSignificantNumberMatchesInput` is `false` in this case, + // so `getNonFormattedNumber()` returns `getFullNumber(getNationalDigits())`. + asYouType.input('0343515551212999').should.equal('0343515551212999') + }) + + it('should format Argentina numbers (starting with 011) (digit by digit)', () => { + // Inputting a number digit-by-digit and as a whole a two different cases + // in case of this library compared to Google's `libphonenumber` + // that always inputs a number digit-by-digit. + // https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/23 + // nextDigits 0111523456789 + // nationalNumber 91123456789 + const formatter = new AsYouType('AR') + formatter.input('0').should.equal('0') + formatter.getTemplate().should.equal('x') + formatter.input('1').should.equal('01') + formatter.getTemplate().should.equal('xx') + formatter.input('1').should.equal('011') + formatter.getTemplate().should.equal('xxx') + formatter.input('1').should.equal('011 1') + formatter.getTemplate().should.equal('xxx x') + formatter.input('5').should.equal('011 15') + formatter.getTemplate().should.equal('xxx xx') + formatter.input('2').should.equal('011 152') + formatter.getTemplate().should.equal('xxx xxx') + formatter.input('3').should.equal('011 1523') + formatter.getTemplate().should.equal('xxx xxxx') + formatter.input('4').should.equal('011 1523-4') + formatter.getTemplate().should.equal('xxx xxxx-x') + formatter.input('5').should.equal('011 1523-45') + formatter.getTemplate().should.equal('xxx xxxx-xx') + formatter.input('6').should.equal('011 1523-456') + formatter.getTemplate().should.equal('xxx xxxx-xxx') + formatter.input('7').should.equal('011 1523-4567') + formatter.getTemplate().should.equal('xxx xxxx-xxxx') + formatter.input('8').should.equal('011152345678') + formatter.getTemplate().should.equal('xxxxxxxxxxxx') + formatter.input('9').should.equal('011 15-2345-6789') + formatter.getTemplate().should.equal('xxx xx-xxxx-xxxx') + // Private property (not public API). + formatter.state.nationalSignificantNumber.should.equal('91123456789') + // Private property (not public API). + // `formatter.digits` is not always `formatter.nationalPrefix` + // plus `formatter.nationalNumberDigits`. + formatter.state.nationalPrefix.should.equal('0') + formatter.isPossible().should.equal(true) + formatter.isValid().should.equal(true) + }) + + it('should format Argentina numbers (starting with 011)', () => { + // Inputting a number digit-by-digit and as a whole a two different cases + // in case of this library compared to Google's `libphonenumber` + // that always inputs a number digit-by-digit. + // https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/23 + // nextDigits 0111523456789 + // nationalNumber 91123456789 + const formatter = new AsYouType('AR') + formatter.input('0111523456789').should.equal('011 15-2345-6789') + // Private property (not public API). + formatter.state.nationalSignificantNumber.should.equal('91123456789') + // Private property (not public API). + // `formatter.digits` is not always `formatter.nationalPrefix` + // plus `formatter.nationalNumberDigits`. + expect(formatter.state.nationalPrefix).to.equal('0') + // expect(formatter.nationalPrefix).to.be.undefined + formatter.isPossible().should.equal(true) + formatter.isValid().should.equal(true) + }) + + // https://gitlab.com/catamphetamine/react-phone-number-input/-/issues/93 + it('should format Indonesian numbers', () => { + const formatter = new AsYouType('ID') + formatter.getChars().should.equal('') + // Before leading digits < 3 matching was implemented: + // formatter.input('081').should.equal('(081)') + // After leading digits < 3 matching was implemented: + formatter.input('081').should.equal('081') + }) + + it('should prepend `complexPrefixBeforeNationalSignificantNumber` (not a complete number)', () => { + // A country having `national_prefix_for_parsing` with a "capturing group". + // National prefix is either not used in a format or is optional. + // Input phone number without a national prefix. + const formatter = new AsYouType('AU') + formatter.input('1831130345678').should.equal('1831 1303 456 78') + // Private property (not public API). + formatter.state.nationalSignificantNumber.should.equal('130345678') + // Private property (not public API). + // `formatter.digits` is not always `formatter.nationalPrefix` + // plus `formatter.nationalNumberDigits`. + expect(formatter.state.nationalPrefix).to.be.undefined + formatter.state.complexPrefixBeforeNationalSignificantNumber.should.equal('1831') + }) + + it('should prepend `complexPrefixBeforeNationalSignificantNumber` (complete number)', () => { + // A country having `national_prefix_for_parsing` with a "capturing group". + // National prefix is either not used in a format or is optional. + // Input phone number without a national prefix. + const formatter = new AsYouType('AU') + formatter.input('18311303456789').should.equal('1831 1303 456 789') + // Private property (not public API). + formatter.state.nationalSignificantNumber.should.equal('1303456789') + // Private property (not public API). + // `formatter.digits` is not always `formatter.nationalPrefix` + // plus `formatter.nationalNumberDigits`. + expect(formatter.state.nationalPrefix).to.be.undefined + formatter.state.complexPrefixBeforeNationalSignificantNumber.should.equal('1831') + }) + + it('should work with Mexico numbers', () => { + const asYouType = new AsYouType('MX') + // Fixed line. + asYouType.input('+52(449)978-000').should.equal('+52 449 978 000') + asYouType.input('1').should.equal('+52 449 978 0001') + asYouType.reset() + asYouType.input('01449978000').should.equal('01449 978 000') + asYouType.getTemplate().should.equal('xxxxx xxx xxx') + asYouType.input('1').should.equal('01449 978 0001') + asYouType.getTemplate().should.equal('xxxxx xxx xxxx') + asYouType.reset() + asYouType.input('(449)978-000').should.equal('449 978 000') + asYouType.getTemplate().should.equal('xxx xxx xxx') + asYouType.input('1').should.equal('449 978 0001') + asYouType.getTemplate().should.equal('xxx xxx xxxx') + // Mobile. + // `1` is prepended before area code to mobile numbers in international format. + asYouType.reset() + asYouType.input('+521331234567').should.equal('+52 133 1234 567') + asYouType.getTemplate().should.equal('xxx xxx xxxx xxx') + // Google's `libphonenumber` seems to not able to format this type of number. + // https://issuetracker.google.com/issues/147938979 + asYouType.input('8').should.equal('+52 133 1234 5678') + asYouType.getTemplate().should.equal('xxx xxx xxxx xxxx') + asYouType.reset() + asYouType.input('+52331234567').should.equal('+52 33 1234 567') + asYouType.input('8').should.equal('+52 33 1234 5678') + asYouType.reset() + asYouType.input('044331234567').should.equal('04433 1234 567') + asYouType.input('8').should.equal('04433 1234 5678') + asYouType.reset() + asYouType.input('045331234567').should.equal('04533 1234 567') + asYouType.input('8').should.equal('04533 1234 5678') + }) + + it('should just prepend national prefix if national_prefix_formatting_rule does not produce a suitable number', () => { + // "national_prefix": "8" + // "national_prefix_for_parsing": "0|80?" + const formatter = new AsYouType('BY') + // "national_prefix_formatting_rule": "8 $1" + // That `national_prefix_formatting_rule` isn't used + // because the user didn't input national prefix `8`. + formatter.input('0800123').should.equal('0 800 123') + formatter.getTemplate().should.equal('x xxx xxx') + }) + + it('should not duplicate area code for certain countries', () => { + // https://github.com/catamphetamine/libphonenumber-js/issues/318 + const asYouType = new AsYouType('VI') + // Even though `parse("3406934")` would return a + // "(340) 340-6934" national number, still + // "As You Type" formatter should leave it as "(340) 6934". + asYouType.input('340693').should.equal('(340) 693') + asYouType.input('4').should.equal('(340) 693-4') + asYouType.input('123').should.equal('(340) 693-4123') + }) + + it('shouldn\'t throw when passed a non-existent default country', () => { + new AsYouType('XX').input('+78005553535').should.equal('+7 800 555 35 35') + new AsYouType('XX').input('88005553535').should.equal('88005553535') + }) + + it('should parse carrier codes', () => { + const formatter = new AsYouType('BR') + + formatter.input('0 15 21 5555-5555') + let phoneNumber = formatter.getNumber() + phoneNumber.carrierCode.should.equal('15') + + formatter.reset() + formatter.input('+1-213-373-4253') + phoneNumber = formatter.getNumber() + expect(phoneNumber.carrierCode).to.be.undefined + }) + + it('should format when default country calling code is configured', () => { + const formatter = new AsYouType({ defaultCallingCode: '7' }) + formatter.input('88005553535').should.equal('8 (800) 555-35-35') + formatter.getNumber().countryCallingCode.should.equal('7') + formatter.getNumber().country.should.equal('RU') + }) + + it('shouldn\'t return PhoneNumber if country calling code hasn\'t been input yet', () => { + const formatter = new AsYouType() + formatter.input('+80') + expect(formatter.getNumber()).to.be.undefined + }) + + it('should format non-geographic numbering plan phone numbers', () => { + const formatter = new AsYouType() + formatter.input('+').should.equal('+') + formatter.input('8').should.equal('+8') + formatter.input('7').should.equal('+87') + expect(formatter.getCountry()).to.be.undefined + formatter.input('0').should.equal('+870') + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + formatter.getCountry().should.equal('001') + } else { + expect(formatter.getCountry()).to.be.undefined + } + formatter.input('7').should.equal('+870 7') + formatter.input('7').should.equal('+870 77') + formatter.input('3').should.equal('+870 773') + formatter.input('1').should.equal('+870 773 1') + formatter.input('1').should.equal('+870 773 11') + formatter.input('1').should.equal('+870 773 111') + formatter.input('6').should.equal('+870 773 111 6') + formatter.input('3').should.equal('+870 773 111 63') + formatter.input('2').should.equal('+870 773 111 632') + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + formatter.getNumber().country.should.equal('001') + } else { + expect(formatter.getCountry()).to.be.undefined + } + formatter.getNumber().countryCallingCode.should.equal('870') + }) + + it('should format non-geographic numbering plan phone numbers (default country calling code)', () => { + const formatter = new AsYouType({ defaultCallingCode: '870' }) + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + formatter.getNumber().country.should.equal('001') + } else { + expect(formatter.getCountry()).to.be.undefined + } + formatter.input('7').should.equal('7') + formatter.input('7').should.equal('77') + formatter.input('3').should.equal('773') + formatter.input('1').should.equal('773 1') + formatter.input('1').should.equal('773 11') + formatter.input('1').should.equal('773 111') + formatter.input('6').should.equal('773 111 6') + formatter.input('3').should.equal('773 111 63') + formatter.input('2').should.equal('773 111 632') + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + formatter.getNumber().country.should.equal('001') + } else { + expect(formatter.getCountry()).to.be.undefined + } + formatter.getNumber().countryCallingCode.should.equal('870') + }) + + it('should not format non-geographic numbering plan phone numbers (default country 001)', () => { + const formatter = new AsYouType('001') + expect(formatter.defaultCountry).to.be.undefined + expect(formatter.defaultCallingCode).to.be.undefined + formatter.input('7').should.equal('7') + formatter.input('7').should.equal('77') + formatter.input('3').should.equal('773') + formatter.input('1').should.equal('7731') + formatter.input('1').should.equal('77311') + formatter.input('1').should.equal('773111') + formatter.input('6').should.equal('7731116') + formatter.input('3').should.equal('77311163') + formatter.input('2').should.equal('773111632') + expect(formatter.getCountry()).to.be.undefined + expect(formatter.getNumber()).to.be.undefined + }) + + it('should return PhoneNumber (should strip national prefix `1` in E.164 value)', () => { + const formatter = new AsYouType('RU') + formatter.input('+1111') + formatter.getNumber().number.should.equal('+111') + }) + + it('should return PhoneNumber with autocorrected international numbers without leading +', () => { + // https://github.com/catamphetamine/libphonenumber-js/issues/316 + const formatter = new AsYouType('FR') + formatter.input('33612902554').should.equal('33 6 12 90 25 54') + formatter.getNumber().country.should.equal('FR') + formatter.getNumber().nationalNumber.should.equal('612902554') + formatter.getNumber().number.should.equal('+33612902554') + // Should also strip national prefix. + formatter.reset() + formatter.input('330612902554').should.equal('33 06 12 90 25 54') + formatter.getNumber().country.should.equal('FR') + formatter.getNumber().nationalNumber.should.equal('612902554') + formatter.getNumber().number.should.equal('+33612902554') + // On second thought, this "prepend default area code" feature won't be added, + // because when a user selects "British Virgin Islands" and inputs + // "2291234", then they see "(229) 123-4" which clearly indicates that + // they should input the complete phone number (with area code). + // So, unless a user completely doesn't understand what they're doing, + // they'd input the complete phone number (with area code). + // // Should prepend the default area code in British Virgin Islands. + // // https://github.com/catamphetamine/react-phone-number-input/issues/335 + // const formatter2 = new AsYouType('VG') + // formatter2.input('2291234').should.equal('(229) 123-4') + // formatter2.getNumber().country.should.equal('VG') + // formatter2.getNumber().nationalNumber.should.equal('2842291234') + // formatter2.getNumber().number.should.equal('+12842291234') + }) + + it('should work with out-of-country dialing prefix (like 00)', () => { + const formatter = new AsYouType('DE') + formatter.input('00498911196611').should.equal('00 49 89 11196611') + formatter.getCountry().should.equal('DE') + formatter.formatter.template.should.equal('xx xx xx xxxxxxxx') + formatter.formatter.populatedNationalNumberTemplate.should.equal('89 11196611') + formatter.getTemplate().should.equal('xx xx xx xxxxxxxx') + formatter.getNumber().country.should.equal('DE') + formatter.getNumber().nationalNumber.should.equal('8911196611') + formatter.getNumber().number.should.equal('+498911196611') + }) + + it('shouldn\'t choose a format when there\'re too many digits for any of them', () => { + const formatter = new AsYouType('RU') + formatter.input('89991112233') + formatter.formatter.chosenFormat.format().should.equal('$1 $2-$3-$4') + formatter.reset() + formatter.input('899911122334') + expect(formatter.formatter.chosenFormat).to.be.undefined + }) + + it('should get separator after national prefix', () => { + // Russia. + // Has separator after national prefix. + const formatter = new AsYouType('RU') + const format = formatter.metadata.formats()[0] + format.nationalPrefixFormattingRule().should.equal('8 ($1)') + formatter.formatter.getSeparatorAfterNationalPrefix(format).should.equal(' ') + // Britain. + // Has no separator after national prefix. + const formatter2 = new AsYouType('GB') + const format2 = formatter2.metadata.formats()[0] + format2.nationalPrefixFormattingRule().should.equal('0$1') + formatter2.formatter.getSeparatorAfterNationalPrefix(format2).should.equal('') + }) + + it('should return if the number is possible', () => { + // National. Russia. + const formatter = new AsYouType('RU') + formatter.isPossible().should.equal(false) + formatter.input('8') + formatter.isPossible().should.equal(false) + formatter.input('8005553535') + formatter.isPossible().should.equal(true) + formatter.input('5') + formatter.isPossible().should.equal(false) + }) + + it('should return if the number is valid', () => { + // National. Russia. + const formatter = new AsYouType('RU') + formatter.isValid().should.equal(false) + formatter.input('88005553535') + formatter.isValid().should.equal(true) + formatter.input('5') + formatter.isValid().should.equal(false) + }) + + it('should return if the number is international', () => { + // National. Russia. + const formatter = new AsYouType('RU') + formatter.isInternational().should.equal(false) + formatter.input('88005553535') + formatter.isInternational().should.equal(false) + // International. Russia. + const formatterInt = new AsYouType() + formatterInt.isInternational().should.equal(false) + formatterInt.input('+') + formatterInt.isInternational().should.equal(true) + formatterInt.input('78005553535') + formatterInt.isInternational().should.equal(true) + }) + + it('should return country calling code part of the number', () => { + // National. Russia. + const formatter = new AsYouType('RU') + expect(formatter.getCountryCallingCode()).to.be.undefined + formatter.input('88005553535') + expect(formatter.getCountryCallingCode()).to.be.undefined + // International. Russia. + const formatterInt = new AsYouType() + expect(formatterInt.getCountryCallingCode()).to.be.undefined + formatterInt.input('+') + expect(formatterInt.getCountryCallingCode()).to.be.undefined + formatterInt.input('7') + expect(formatterInt.getCountryCallingCode()).to.equal('7') + formatterInt.input('8005553535') + expect(formatterInt.getCountryCallingCode()).to.equal('7') + }) + + it('should return the country of the number', () => { + // National. Russia. + const formatter = new AsYouType('RU') + expect(formatter.getCountry()).to.be.undefined + formatter.input('8') + expect(formatter.getCountry()).to.equal('RU') + formatter.input('8005553535') + expect(formatter.getCountry()).to.equal('RU') + // International. Austria. + const formatterInt = new AsYouType() + expect(formatterInt.getCountry()).to.be.undefined + formatterInt.input('+') + expect(formatterInt.getCountry()).to.be.undefined + formatterInt.input('43') + expect(formatterInt.getCountry()).to.equal('AT') + // International. USA. + const formatterIntRu = new AsYouType() + expect(formatterIntRu.getCountry()).to.be.undefined + formatterIntRu.input('+') + expect(formatterIntRu.getCountry()).to.be.undefined + formatterIntRu.input('1') + expect(formatterIntRu.getCountry()).to.be.undefined + formatterIntRu.input('2133734253') + expect(formatterIntRu.getCountry()).to.equal('US') + formatterIntRu.input('1') + expect(formatterIntRu.getCountry()).to.be.undefined + }) + + it('should parse a long IDD prefix', () => { + const formatter = new AsYouType('AU') + // `14880011` is a long IDD prefix in Australia. + formatter.input('1').should.equal('1') + formatter.input('4').should.equal('14') + formatter.input('8').should.equal('148') + formatter.input('8').should.equal('1488') + formatter.input('0').should.equal('14880') + formatter.input('0').should.equal('148800') + formatter.input('1').should.equal('1488001') + formatter.input('1').should.equal('14880011') + // As if were calling US using `14880011` IDD prefix, + // though that prefix could mean something else. + formatter.input('1').should.equal('14880011 1') + formatter.input('2').should.equal('14880011 1 2') + formatter.input('1').should.equal('14880011 1 21') + formatter.input('3').should.equal('14880011 1 213') + }) + + it('should return the phone number characters entered by the user', () => { + const formatter = new AsYouType('RU') + formatter.getChars().should.equal('') + formatter.input('+123') + formatter.getChars().should.equal('+123') + formatter.reset() + formatter.input('123') + formatter.getChars().should.equal('123') + }) + + // A test confirming the case when input `"11"` for country `"US"` + // produces `value` `"+11"`. + // https://gitlab.com/catamphetamine/react-phone-number-input/-/issues/113 + it('should determine the national (significant) part correctly when input with national prefix in US', () => { + const formatter = new AsYouType('US') + // As soon as the user has input `"11"`, no `format` matches + // those "national number" digits in the `"US"` country metadata. + // Since no `format` matches, the number doesn't seem like a valid one, + // so it attempts to see if the user "forgot" to input a `"+"` at the start. + // And it looks like they might've to. + // So it acts as if the leading `"+"` is there, + // as if the user's input is `"+11"`. + // See `AsYouType.fixMissingPlus()` function. + formatter.input('1 122 222 2222 3').should.equal('1 1 222 222 2223') + formatter.getNumber().nationalNumber.should.equal('2222222223') + }) +}) + +describe('AsYouType.getNumberValue()', () => { + it('should return E.164 number value (national number, with national prefix, default country: US)', () => { + const formatter = new AsYouType('US') + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('') + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('1') + formatter.getNumberValue().should.equal('+1') + formatter.input('2') + formatter.getNumberValue().should.equal('+12') + formatter.input('1') + formatter.getNumberValue().should.equal('+121') + formatter.input('3') + formatter.getNumberValue().should.equal('+1213') + formatter.input('373-4253') + formatter.getNumberValue().should.equal('+12133734253') + formatter.input('4') + formatter.getNumberValue().should.equal('+121337342534') + }) + + it('should return E.164 number value (national number, with national prefix, default calling code: 1)', () => { + const formatter = new AsYouType({ defaultCallingCode: '1' }) + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('') + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('1') + formatter.getNumberValue().should.equal('+1') + formatter.input('2') + formatter.getNumberValue().should.equal('+12') + formatter.input('1') + formatter.getNumberValue().should.equal('+121') + formatter.input('3') + formatter.getNumberValue().should.equal('+1213') + formatter.input('373-4253') + formatter.getNumberValue().should.equal('+12133734253') + formatter.input('4') + formatter.getNumberValue().should.equal('+121337342534') + }) + + it('should return E.164 number value (national number, default country: US)', () => { + const formatter = new AsYouType('US') + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('') + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('2') + formatter.getNumberValue().should.equal('+12') + formatter.input('1') + formatter.getNumberValue().should.equal('+121') + formatter.input('3') + formatter.getNumberValue().should.equal('+1213') + formatter.input('373-4253') + formatter.getNumberValue().should.equal('+12133734253') + formatter.input('4') + formatter.getNumberValue().should.equal('+121337342534') + }) + + it('should return E.164 number value (national number, default calling code: 1)', () => { + const formatter = new AsYouType({ defaultCallingCode: '1' }) + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('') + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('2') + formatter.getNumberValue().should.equal('+12') + formatter.input('1') + formatter.getNumberValue().should.equal('+121') + formatter.input('3') + formatter.getNumberValue().should.equal('+1213') + formatter.input('373-4253') + formatter.getNumberValue().should.equal('+12133734253') + formatter.input('4') + formatter.getNumberValue().should.equal('+121337342534') + }) + + it('should return E.164 number value (international number, not a valid calling code)', () => { + const formatter = new AsYouType() + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('') + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('+') + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('2150') + formatter.getNumberValue().should.equal('+2150') + }) + + it('should return E.164 number value (international number, default country: US)', () => { + const formatter = new AsYouType('US') + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('') + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('+') + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('1') + formatter.getNumberValue().should.equal('+1') + formatter.input('1') + formatter.getNumberValue().should.equal('+1') + formatter.input('2') + formatter.getNumberValue().should.equal('+12') + formatter.input('1') + formatter.getNumberValue().should.equal('+121') + formatter.input('3') + formatter.getNumberValue().should.equal('+1213') + formatter.input('373-4253') + formatter.getNumberValue().should.equal('+12133734253') + formatter.input('4') + formatter.getNumberValue().should.equal('+121337342534') + }) + + it('should return E.164 number value (international number, other default country: RU)', () => { + const formatter = new AsYouType('RU') + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('') + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('+') + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('1') + formatter.getNumberValue().should.equal('+1') + formatter.input('1') + formatter.getNumberValue().should.equal('+1') + formatter.input('2') + formatter.getNumberValue().should.equal('+12') + formatter.input('1') + formatter.getNumberValue().should.equal('+121') + formatter.input('3') + formatter.getNumberValue().should.equal('+1213') + formatter.input('373-4253') + formatter.getNumberValue().should.equal('+12133734253') + formatter.input('4') + formatter.getNumberValue().should.equal('+121337342534') + }) + + it('should return E.164 number value (international number, default calling code: 1)', () => { + const formatter = new AsYouType('US', { defaultCallingCode: '1' }) + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('') + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('+') + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('1') + formatter.getNumberValue().should.equal('+1') + formatter.input('1') + formatter.getNumberValue().should.equal('+1') + formatter.input('2') + formatter.getNumberValue().should.equal('+12') + formatter.input('1') + formatter.getNumberValue().should.equal('+121') + formatter.input('3') + formatter.getNumberValue().should.equal('+1213') + formatter.input('373-4253') + formatter.getNumberValue().should.equal('+12133734253') + formatter.input('4') + formatter.getNumberValue().should.equal('+121337342534') + }) + + it('should return E.164 number value (international number, other default calling code: 7)', () => { + const formatter = new AsYouType('US', { defaultCallingCode: '7' }) + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('') + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('+') + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('1') + formatter.getNumberValue().should.equal('+1') + formatter.input('1') + formatter.getNumberValue().should.equal('+1') + formatter.input('2') + formatter.getNumberValue().should.equal('+12') + formatter.input('1') + formatter.getNumberValue().should.equal('+121') + formatter.input('3') + formatter.getNumberValue().should.equal('+1213') + formatter.input('373-4253') + formatter.getNumberValue().should.equal('+12133734253') + formatter.input('4') + formatter.getNumberValue().should.equal('+121337342534') + }) + + it('should return E.164 number value (international number)', () => { + const formatter = new AsYouType() + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('') + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('+') + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('1') + formatter.getNumberValue().should.equal('+1') + formatter.input('1') + formatter.getNumberValue().should.equal('+1') + formatter.input('2') + formatter.getNumberValue().should.equal('+12') + formatter.input('1') + formatter.getNumberValue().should.equal('+121') + formatter.input('3') + formatter.getNumberValue().should.equal('+1213') + formatter.input('373-4253') + formatter.getNumberValue().should.equal('+12133734253') + formatter.input('4') + formatter.getNumberValue().should.equal('+121337342534') + }) + + it('should return E.164 number value (national number) (no default country or calling code)', () => { + const formatter = new AsYouType() + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('') + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('1') + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('12') + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('3') + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('373-4253') + expect(formatter.getNumberValue()).to.be.undefined + formatter.input('4') + expect(formatter.getNumberValue()).to.be.undefined + }) + + it('should not drop any input digits', () => { + // Test "+529011234567" number, proactively ensuring that no formatting is applied, + // where a format is chosen that would otherwise have led to some digits being dropped. + const formatter = new AsYouType('MX') + formatter.input('9').should.equal('9') + formatter.input('0').should.equal('90') + formatter.input('1').should.equal('901') + formatter.input('1').should.equal('901 1') + formatter.input('2').should.equal('901 12') + formatter.input('3').should.equal('901 123') + formatter.input('4').should.equal('901 123 4') + formatter.input('5').should.equal('901 123 45') + formatter.input('6').should.equal('901 123 456') + formatter.input('7').should.equal('901 123 4567') + }) + + it('should work for formats with no leading digits (`leadingDigitsPatternsCount === 0`)', function() { + const formatter = new AsYouType({ + defaultCallingCode: 888 + }) + formatter.input('1').should.equal('1') + }) + + it('should work for SK phone numbers', function() { + // There was a bug: "leading digits" `"2"` matched "leading digits pattern" `"90"`. + // The incorrect `.match()` function result was `{ oveflow: true }` + // while it should've been `undefined`. + // https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/66 + const formatter = new AsYouType('SK') + formatter.input('090').should.equal('090') + formatter.reset() + formatter.input('080').should.equal('080') + formatter.reset() + formatter.input('059').should.equal('059') + }) + + it('should work for SK phone numbers (2)', function() { + // https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/69 + const formatter = new AsYouType('SK') + formatter.input('421901222333').should.equal('421 901 222 333') + formatter.getTemplate().should.equal('xxx xxx xxx xxx') + }) +}) + +function type(something) { + return typeof something +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternMatcher.d.ts b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternMatcher.d.ts new file mode 100644 index 00000000..34472739 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternMatcher.d.ts @@ -0,0 +1,66 @@ +import { + character, + MatchTree +} from './AsYouTypeFormatter.PatternParser' + +interface MatchOptions { + allowOverflow?: boolean; +} + +// An "overflow" match is when the string matches the pattern +// and there're still some characters left in it. +// +// For example, "12345" matches "12[0-5]|78" pattern with an overflow +// because "123" matches the "12[0-5]" variant of the pattern +// and there're still "45" characters left. +// +// This type of match is only returned when `allowOverflow` option is `true`. +// By default, `allowOverflow` is `false` and `undefined` ("no match" result) +// is returned in case of an "overflow" match. +// +interface MatchResultOverflow { + overflow: true; +} + +// When there's a ("full") match, returns a match result. +// +// A ("full") match is when the string matches the entire pattern. +// +// For example, "123" fully matches "12[0-5]|78" pattern. +// +interface MatchResultFullMatch { + match: true; + matchedChars: character[]; +} + +// When there's a "partial" match, returns a "partial" match result. +// +// A "partial" match is when the string is not long enough +// to match the whole matching tree. +// +// For example, "123" is a partial match for "12[0-5]4|78" pattern, +// because "123" matched the "12[0-5]" part and the "4" part of the pattern +// is left uninvolved. +// +interface MatchResultPartialMatch { + partialMatch: true; +} + +// When there's no match, returns `undefined`. +// +// For example, "123" doesn't match "456|789" pattern. +// +type MatchResultNoMatch = undefined; + +type MatchResult = + MatchResultOverflow | + MatchResultFullMatch | + MatchResultPartialMatch | + MatchResultNoMatch; + +export default class PatternMatcher { + constructor(pattern: string); + match(string: string, options?: MatchOptions): MatchResult; +} + +function match(characters: character[], tree: MatchTree, last?: boolean); diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternMatcher.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternMatcher.js new file mode 100644 index 00000000..0051c70c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternMatcher.js @@ -0,0 +1,197 @@ +import PatternParser from './AsYouTypeFormatter.PatternParser.js' + +export default class PatternMatcher { + constructor(pattern) { + this.matchTree = new PatternParser().parse(pattern) + } + + match(string, { allowOverflow } = {}) { + if (!string) { + throw new Error('String is required') + } + const result = match(string.split(''), this.matchTree, true) + if (result && result.match) { + delete result.matchedChars + } + if (result && result.overflow) { + if (!allowOverflow) { + return + } + } + return result + } +} + +/** + * Matches `characters` against a pattern compiled into a `tree`. + * @param {string[]} characters + * @param {Tree} tree — A pattern compiled into a `tree`. See the `*.d.ts` file for the description of the `tree` structure. + * @param {boolean} last — Whether it's the last (rightmost) subtree on its level of the match tree. + * @return {object} See the `*.d.ts` file for the description of the result object. + */ +function match(characters, tree, last) { + // If `tree` is a string, then `tree` is a single character. + // That's because when a pattern is parsed, multi-character-string parts + // of a pattern are compiled into arrays of single characters. + // I still wrote this piece of code for a "general" hypothetical case + // when `tree` could be a string of several characters, even though + // such case is not possible with the current implementation. + if (typeof tree === 'string') { + const characterString = characters.join('') + if (tree.indexOf(characterString) === 0) { + // `tree` is always a single character. + // If `tree.indexOf(characterString) === 0` + // then `characters.length === tree.length`. + /* istanbul ignore else */ + if (characters.length === tree.length) { + return { + match: true, + matchedChars: characters + } + } + // `tree` is always a single character. + // If `tree.indexOf(characterString) === 0` + // then `characters.length === tree.length`. + /* istanbul ignore next */ + return { + partialMatch: true, + // matchedChars: characters + } + } + if (characterString.indexOf(tree) === 0) { + if (last) { + // The `else` path is not possible because `tree` is always a single character. + // The `else` case for `characters.length > tree.length` would be + // `characters.length <= tree.length` which means `characters.length <= 1`. + // `characters` array can't be empty, so that means `characters === [tree]`, + // which would also mean `tree.indexOf(characterString) === 0` and that'd mean + // that the `if (tree.indexOf(characterString) === 0)` condition before this + // `if` condition would be entered, and returned from there, not reaching this code. + /* istanbul ignore else */ + if (characters.length > tree.length) { + return { + overflow: true + } + } + } + return { + match: true, + matchedChars: characters.slice(0, tree.length) + } + } + return + } + + if (Array.isArray(tree)) { + let restCharacters = characters.slice() + let i = 0 + while (i < tree.length) { + const subtree = tree[i] + const result = match(restCharacters, subtree, last && (i === tree.length - 1)) + if (!result) { + return + } else if (result.overflow) { + return result + } else if (result.match) { + // Continue with the next subtree with the rest of the characters. + restCharacters = restCharacters.slice(result.matchedChars.length) + if (restCharacters.length === 0) { + if (i === tree.length - 1) { + return { + match: true, + matchedChars: characters + } + } else { + return { + partialMatch: true, + // matchedChars: characters + } + } + } + } else { + /* istanbul ignore else */ + if (result.partialMatch) { + return { + partialMatch: true, + // matchedChars: characters + } + } else { + throw new Error(`Unsupported match result:\n${JSON.stringify(result, null, 2)}`) + } + } + i++ + } + // If `last` then overflow has already been checked + // by the last element of the `tree` array. + /* istanbul ignore if */ + if (last) { + return { + overflow: true + } + } + return { + match: true, + matchedChars: characters.slice(0, characters.length - restCharacters.length) + } + } + + switch (tree.op) { + case '|': + let partialMatch + for (const branch of tree.args) { + const result = match(characters, branch, last) + if (result) { + if (result.overflow) { + return result + } else if (result.match) { + return { + match: true, + matchedChars: result.matchedChars + } + } else { + /* istanbul ignore else */ + if (result.partialMatch) { + partialMatch = true + } else { + throw new Error(`Unsupported match result:\n${JSON.stringify(result, null, 2)}`) + } + } + } + } + if (partialMatch) { + return { + partialMatch: true, + // matchedChars: ... + } + } + // Not even a partial match. + return + + case '[]': + for (const char of tree.args) { + if (characters[0] === char) { + if (characters.length === 1) { + return { + match: true, + matchedChars: characters + } + } + if (last) { + return { + overflow: true + } + } + return { + match: true, + matchedChars: [char] + } + } + } + // No character matches. + return + + /* istanbul ignore next */ + default: + throw new Error(`Unsupported instruction tree: ${tree}`) + } +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternMatcher.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternMatcher.test.js new file mode 100644 index 00000000..ab3db4fa --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternMatcher.test.js @@ -0,0 +1,641 @@ +import PatternMatcher from './AsYouTypeFormatter.PatternMatcher.js' + +describe('AsYouTypeFormatter.PatternMatcher', function() { + it('should throw when no pattern is passed', function() { + expect(() => new PatternMatcher()).to.throw('Pattern is required') + }) + + it('should throw when no string is passed', function() { + const matcher = new PatternMatcher('1') + expect(() => matcher.match()).to.throw('String is required') + }) + + it('should throw on illegal characters', function() { + expect(() => new PatternMatcher('4(5|6)7')).to.throw('Illegal characters') + }) + + it('should throw on an illegal ] operator', function() { + expect(() => new PatternMatcher('4]7')).to.throw('"]" operator must be preceded by "[" operator') + }) + + it('should throw on an illegal - operator in a one-of set', function() { + expect(() => new PatternMatcher('[-5]')).to.throw('Couldn\'t parse a one-of set pattern: -5') + }) + + it('should throw on a non-finalized context', function() { + expect(() => new PatternMatcher('4(?:5|7')).to.throw('Non-finalized contexts left when pattern parse ended') + }) + + it('should throw on an illegal (|) operator', function() { + expect(() => new PatternMatcher('4(?:5|)7')).to.throw('No instructions found after "|" operator in an "or" group') + }) + + it('should throw on an illegal ) operator', function() { + expect(() => new PatternMatcher('4[56)]7')).to.throw('")" operator must be preceded by "(?:" operator') + }) + + it('should throw on an illegal | operator', function() { + expect(() => new PatternMatcher('4[5|6]7')).to.throw('operator can only be used inside "or" groups') + }) + + it('should match a one-digit pattern', function() { + const matcher = new PatternMatcher('4') + + expect(matcher.match('1')).to.be.undefined + + matcher.match('4').should.deep.equal({ + match: true + }) + + expect(matcher.match('44')).to.be.undefined + + matcher.match('44', { allowOverflow: true }).should.deep.equal({ + overflow: true + }) + }) + + it('should match a two-digit pattern', function() { + const matcher = new PatternMatcher('44') + + expect(matcher.match('1')).to.be.undefined + + matcher.match('4').should.deep.equal({ + partialMatch: true + }) + + matcher.match('44').should.deep.equal({ + match: true + }) + + expect(matcher.match('444')).to.be.undefined + + matcher.match('444', { allowOverflow: true }).should.deep.equal({ + overflow: true + }) + + expect(matcher.match('55')).to.be.undefined + }) + + it('should match a one-digit one-of set (single digit)', function() { + const matcher = new PatternMatcher('[4]') + + expect(matcher.match('1')).to.be.undefined + + matcher.match('4').should.deep.equal({ + match: true + }) + + expect(matcher.match('44')).to.be.undefined + + matcher.match('44', { allowOverflow: true }).should.deep.equal({ + overflow: true + }) + }) + + it('should match a one-digit one-of set (multiple digits)', function() { + const matcher = new PatternMatcher('[479]') + + expect(matcher.match('1')).to.be.undefined + + matcher.match('4').should.deep.equal({ + match: true + }) + + expect(matcher.match('44')).to.be.undefined + + matcher.match('44', { allowOverflow: true }).should.deep.equal({ + overflow: true + }) + }) + + it('should match a one-digit one-of set using a dash notation (not inclusive)', function() { + const matcher = new PatternMatcher('[2-5]') + + expect(matcher.match('1')).to.be.undefined + + matcher.match('4').should.deep.equal({ + match: true + }) + + expect(matcher.match('44')).to.be.undefined + + matcher.match('44', { allowOverflow: true }).should.deep.equal({ + overflow: true + }) + }) + + it('should match a one-digit one-of set using a dash notation (inclusive)', function() { + const matcher = new PatternMatcher('[3-4]') + + expect(matcher.match('1')).to.be.undefined + + matcher.match('4').should.deep.equal({ + match: true + }) + + expect(matcher.match('44')).to.be.undefined + + matcher.match('44', { allowOverflow: true }).should.deep.equal({ + overflow: true + }) + }) + + it('should match a one-digit one-of set including a dash notation', function() { + const matcher = new PatternMatcher('[124-68]') + + expect(matcher.match('0')).to.be.undefined + + matcher.match('1').should.deep.equal({ + match: true + }) + + matcher.match('2').should.deep.equal({ + match: true + }) + + expect(matcher.match('3')).to.be.undefined + + matcher.match('4').should.deep.equal({ + match: true + }) + + matcher.match('5').should.deep.equal({ + match: true + }) + + matcher.match('6').should.deep.equal({ + match: true + }) + + expect(matcher.match('7')).to.be.undefined + + matcher.match('8').should.deep.equal({ + match: true + }) + + expect(matcher.match('9')).to.be.undefined + + expect(matcher.match('88')).to.be.undefined + + matcher.match('88', { allowOverflow: true }).should.deep.equal({ + overflow: true + }) + }) + + it('should match a two-digit one-of set', function() { + const matcher = new PatternMatcher('[479][45]') + + expect(matcher.match('1')).to.be.undefined + + matcher.match('4').should.deep.equal({ + partialMatch: true + }) + + expect(matcher.match('5')).to.be.undefined + expect(matcher.match('55')).to.be.undefined + + matcher.match('44').should.deep.equal({ + match: true + }) + + expect(matcher.match('444')).to.be.undefined + + matcher.match('444', { allowOverflow: true }).should.deep.equal({ + overflow: true + }) + }) + + it('should match a two-digit one-of set (regular digit and a one-of set)', function() { + const matcher = new PatternMatcher('1[45]') + + expect(matcher.match('0')).to.be.undefined + + matcher.match('1').should.deep.equal({ + partialMatch: true + }) + + matcher.match('15').should.deep.equal({ + match: true + }) + + expect(matcher.match('16')).to.be.undefined + }) + + it('should match a pattern with an or group', function() { + const matcher = new PatternMatcher('7(?:1[0-68]|2[1-9])') + + expect(matcher.match('1')).to.be.undefined + + matcher.match('7').should.deep.equal({ + partialMatch: true + }) + + matcher.match('71').should.deep.equal({ + partialMatch: true + }) + + expect(matcher.match('73')).to.be.undefined + + matcher.match('711').should.deep.equal({ + match: true + }) + + expect(matcher.match('717')).to.be.undefined + + expect(matcher.match('720')).to.be.undefined + + matcher.match('722').should.deep.equal({ + match: true + }) + + expect(matcher.match('7222')).to.be.undefined + + matcher.match('7222', { allowOverflow: true }).should.deep.equal({ + overflow: true + }) + }) + + it('should match an or pattern containing or groups', function() { + const matcher = new PatternMatcher('2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])') + + expect(matcher.match('1')).to.be.undefined + + matcher.match('2').should.deep.equal({ + partialMatch: true + }) + + matcher.match('3').should.deep.equal({ + partialMatch: true + }) + + expect(matcher.match('4')).to.be.undefined + + expect(matcher.match('21')).to.be.undefined + + matcher.match('22').should.deep.equal({ + partialMatch: true + }) + + expect(matcher.match('221')).to.be.undefined + + matcher.match('222').should.deep.equal({ + match: true + }) + + expect(matcher.match('2222')).to.be.undefined + + matcher.match('2222', { allowOverflow: true }).should.deep.equal({ + overflow: true + }) + + matcher.match('3').should.deep.equal({ + partialMatch: true + }) + + matcher.match('33').should.deep.equal({ + partialMatch: true + }) + + matcher.match('332').should.deep.equal({ + match: true + }) + + expect(matcher.match('333')).to.be.undefined + }) + + it('should match an or pattern', function() { + const matcher = new PatternMatcher('6|8') + + expect(matcher.match('5')).to.be.undefined + + matcher.match('6').should.deep.equal({ + match: true + }) + + expect(matcher.match('7')).to.be.undefined + + matcher.match('8').should.deep.equal({ + match: true + }) + }) + + it('should match an or pattern (one-of sets)', function() { + const matcher = new PatternMatcher('[123]|[5-8]') + + expect(matcher.match('0')).to.be.undefined + + matcher.match('1').should.deep.equal({ + match: true + }) + + matcher.match('2').should.deep.equal({ + match: true + }) + + matcher.match('3').should.deep.equal({ + match: true + }) + + expect(matcher.match('4')).to.be.undefined + + matcher.match('5').should.deep.equal({ + match: true + }) + + matcher.match('6').should.deep.equal({ + match: true + }) + + matcher.match('7').should.deep.equal({ + match: true + }) + + matcher.match('8').should.deep.equal({ + match: true + }) + + expect(matcher.match('9')).to.be.undefined + + expect(matcher.match('18')).to.be.undefined + + matcher.match('18', { allowOverflow: true }).should.deep.equal({ + overflow: true + }) + }) + + it('should match an or pattern (different lengths)', function() { + const matcher = new PatternMatcher('60|8') + + expect(matcher.match('5')).to.be.undefined + + matcher.match('6').should.deep.equal({ + partialMatch: true + }) + + matcher.match('60').should.deep.equal({ + match: true + }) + + expect(matcher.match('61')).to.be.undefined + + expect(matcher.match('7')).to.be.undefined + + matcher.match('8').should.deep.equal({ + match: true + }) + + expect(matcher.match('68')).to.be.undefined + }) + + it('should match an or pattern (one-of sets) (different lengths)', function() { + const matcher = new PatternMatcher('[123]|[5-8][2-8]') + + expect(matcher.match('0')).to.be.undefined + }) + + it('should match an or pattern (one-of sets and regular digits) (different lengths)', function() { + const matcher = new PatternMatcher('[2358][2-5]|4') + + expect(matcher.match('0')).to.be.undefined + + matcher.match('2').should.deep.equal({ + partialMatch: true + }) + + expect(matcher.match('21')).to.be.undefined + + matcher.match('22').should.deep.equal({ + match: true + }) + + matcher.match('25').should.deep.equal({ + match: true + }) + + expect(matcher.match('26')).to.be.undefined + + expect(matcher.match('222')).to.be.undefined + + matcher.match('222', { allowOverflow: true }).should.deep.equal({ + overflow: true + }) + + matcher.match('3').should.deep.equal({ + partialMatch: true + }) + + matcher.match('4').should.deep.equal({ + match: true + }) + + expect(matcher.match('6')).to.be.undefined + }) + + it('should match an or pattern (one-of sets and regular digits mixed) (different lengths)', function() { + const matcher = new PatternMatcher('[2358]2|4') + + expect(matcher.match('0')).to.be.undefined + + matcher.match('2').should.deep.equal({ + partialMatch: true + }) + + expect(matcher.match('21')).to.be.undefined + + matcher.match('22').should.deep.equal({ + match: true + }) + + expect(matcher.match('222')).to.be.undefined + + matcher.match('222', { allowOverflow: true }).should.deep.equal({ + overflow: true + }) + + matcher.match('3').should.deep.equal({ + partialMatch: true + }) + + matcher.match('4').should.deep.equal({ + match: true + }) + + expect(matcher.match('6')).to.be.undefined + }) + + it('should match an or pattern (one-of sets groups and regular digits mixed) (different lengths)', function() { + const matcher = new PatternMatcher('1(?:11|[2-9])') + + matcher.match('1').should.deep.equal({ + partialMatch: true + }) + + expect(matcher.match('10')).to.be.undefined + + matcher.match('11').should.deep.equal({ + partialMatch: true + }) + + matcher.match('111').should.deep.equal({ + match: true + }) + + expect(matcher.match('1111')).to.be.undefined + + matcher.match('1111', { allowOverflow: true }).should.deep.equal({ + overflow: true + }) + + matcher.match('12').should.deep.equal({ + match: true + }) + + expect(matcher.match('122')).to.be.undefined + + matcher.match('19').should.deep.equal({ + match: true + }) + + expect(matcher.match('5')).to.be.undefined + }) + + it('should match nested or groups', function() { + const matcher = new PatternMatcher('1(?:2(?:3(?:4|5)|6)|7(?:8|9))0') + + matcher.match('1').should.deep.equal({ + partialMatch: true + }) + + expect(matcher.match('2')).to.be.undefined + + expect(matcher.match('11')).to.be.undefined + + matcher.match('12').should.deep.equal({ + partialMatch: true + }) + + expect(matcher.match('121')).to.be.undefined + + matcher.match('123').should.deep.equal({ + partialMatch: true + }) + + expect(matcher.match('1231')).to.be.undefined + + matcher.match('1234').should.deep.equal({ + partialMatch: true + }) + + matcher.match('12340').should.deep.equal({ + match: true + }) + + expect(matcher.match('123401')).to.be.undefined + + matcher.match('123401', { allowOverflow: true }).should.deep.equal({ + overflow: true + }) + + matcher.match('12350').should.deep.equal({ + match: true + }) + + expect(matcher.match('12360')).to.be.undefined + + matcher.match('1260').should.deep.equal({ + match: true + }) + + expect(matcher.match('1270')).to.be.undefined + + expect(matcher.match('1770')).to.be.undefined + + matcher.match('1780').should.deep.equal({ + match: true + }) + + matcher.match('1790').should.deep.equal({ + match: true + }) + + expect(matcher.match('18')).to.be.undefined + }) + + it('should match complex patterns', function() { + const matcher = new PatternMatcher('(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]') + + expect(matcher.match('0')).to.be.undefined + + matcher.match('3').should.deep.equal({ + partialMatch: true + }) + + matcher.match('31').should.deep.equal({ + partialMatch: true + }) + + expect(matcher.match('32')).to.be.undefined + + matcher.match('316').should.deep.equal({ + match: true + }) + + expect(matcher.match('315')).to.be.undefined + + matcher.match('4').should.deep.equal({ + partialMatch: true + }) + + matcher.match('46').should.deep.equal({ + match: true + }) + + expect(matcher.match('47')).to.be.undefined + + matcher.match('5').should.deep.equal({ + partialMatch: true + }) + + expect(matcher.match('50')).to.be.undefined + + matcher.match('51').should.deep.equal({ + match: true + }) + + matcher.match('6').should.deep.equal({ + partialMatch: true + }) + + expect(matcher.match('64')).to.be.undefined + + matcher.match('65').should.deep.equal({ + partialMatch: true + }) + + matcher.match('650').should.deep.equal({ + match: true + }) + + expect(matcher.match('654')).to.be.undefined + + matcher.match('69').should.deep.equal({ + match: true + }) + + matcher.match('8').should.deep.equal({ + match: true + }) + + matcher.match('9').should.deep.equal({ + match: true + }) + }) + + it('shouldn\'t match things that shouldn\'t match', function() { + // There was a bug: "leading digits" `"2"` matched "leading digits pattern" `"90"`. + // The incorrect `.match()` function result was `{ oveflow: true }` + // while it should've been `undefined`. + // https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/66 + expect(new PatternMatcher('2').match('90', { allowOverflow: true })).to.be.undefined + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternParser.d.ts b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternParser.d.ts new file mode 100644 index 00000000..ef4791e4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternParser.d.ts @@ -0,0 +1,58 @@ +// A string of length `1`. +// +// Example: "3". +// +export type character = string; + +// Matches any character. +// +// Example: +// +// String pattern "123" compiles into 3 characters: +// +// ["1", "2", "3"] +// +type Character = character; + +// Matches one of characters. +// +// Example: +// +// String pattern "[5-9]" compiles into: +// +// { op: "[]", args: ["5", "6", "7", "8", "9"] } +// +interface OneOfCharacters { + op: '[]'; + args: character[]; +} + +// Matches any of the subtrees. +// +// Example: +// +// String pattern "123|[5-9]0" compiles into: +// +// { +// op: "|", +// args: [ +// // First subtree: +// ["1", "2", "3"], +// // Second subtree: +// [ +// { op: "[]", args: ["5", "6", "7", "8", "9"] }, +// "0" +// ] +// ] +// } +// +interface OrCondition { + op: '|'; + args: MatchTree[]; +} + +export type MatchTree = Character | OneOfCharacters | MatchTree[] | OrCondition; + +export default class PatternParser { + parse(pattern: string): MatchTree; +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternParser.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternParser.js new file mode 100644 index 00000000..2f7f5ce6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternParser.js @@ -0,0 +1,214 @@ +export default class PatternParser { + parse(pattern) { + this.context = [{ + or: true, + instructions: [] + }] + + this.parsePattern(pattern) + + if (this.context.length !== 1) { + throw new Error('Non-finalized contexts left when pattern parse ended') + } + + const { branches, instructions } = this.context[0] + + if (branches) { + return { + op: '|', + args: branches.concat([ + expandSingleElementArray(instructions) + ]) + } + } + + /* istanbul ignore if */ + if (instructions.length === 0) { + throw new Error('Pattern is required') + } + + if (instructions.length === 1) { + return instructions[0] + } + + return instructions + } + + startContext(context) { + this.context.push(context) + } + + endContext() { + this.context.pop() + } + + getContext() { + return this.context[this.context.length - 1] + } + + parsePattern(pattern) { + if (!pattern) { + throw new Error('Pattern is required') + } + + const match = pattern.match(OPERATOR) + if (!match) { + if (ILLEGAL_CHARACTER_REGEXP.test(pattern)) { + throw new Error(`Illegal characters found in a pattern: ${pattern}`) + } + this.getContext().instructions = this.getContext().instructions.concat( + pattern.split('') + ) + return + } + + const operator = match[1] + const before = pattern.slice(0, match.index) + const rightPart = pattern.slice(match.index + operator.length) + + switch (operator) { + case '(?:': + if (before) { + this.parsePattern(before) + } + this.startContext({ + or: true, + instructions: [], + branches: [] + }) + break + + case ')': + if (!this.getContext().or) { + throw new Error('")" operator must be preceded by "(?:" operator') + } + if (before) { + this.parsePattern(before) + } + if (this.getContext().instructions.length === 0) { + throw new Error('No instructions found after "|" operator in an "or" group') + } + const { branches } = this.getContext() + branches.push( + expandSingleElementArray( + this.getContext().instructions + ) + ) + this.endContext() + this.getContext().instructions.push({ + op: '|', + args: branches + }) + break + + case '|': + if (!this.getContext().or) { + throw new Error('"|" operator can only be used inside "or" groups') + } + if (before) { + this.parsePattern(before) + } + // The top-level is an implicit "or" group, if required. + if (!this.getContext().branches) { + // `branches` are not defined only for the root implicit "or" operator. + /* istanbul ignore else */ + if (this.context.length === 1) { + this.getContext().branches = [] + } else { + throw new Error('"branches" not found in an "or" group context') + } + } + this.getContext().branches.push( + expandSingleElementArray( + this.getContext().instructions + ) + ) + this.getContext().instructions = [] + break + + case '[': + if (before) { + this.parsePattern(before) + } + this.startContext({ + oneOfSet: true + }) + break + + case ']': + if (!this.getContext().oneOfSet) { + throw new Error('"]" operator must be preceded by "[" operator') + } + this.endContext() + this.getContext().instructions.push({ + op: '[]', + args: parseOneOfSet(before) + }) + break + + /* istanbul ignore next */ + default: + throw new Error(`Unknown operator: ${operator}`) + } + + if (rightPart) { + this.parsePattern(rightPart) + } + } +} + +function parseOneOfSet(pattern) { + const values = [] + let i = 0 + while (i < pattern.length) { + if (pattern[i] === '-') { + if (i === 0 || i === pattern.length - 1) { + throw new Error(`Couldn't parse a one-of set pattern: ${pattern}`) + } + const prevValue = pattern[i - 1].charCodeAt(0) + 1 + const nextValue = pattern[i + 1].charCodeAt(0) - 1 + let value = prevValue + while (value <= nextValue) { + values.push(String.fromCharCode(value)) + value++ + } + } else { + values.push(pattern[i]) + } + i++ + } + return values +} + +const ILLEGAL_CHARACTER_REGEXP = /[\(\)\[\]\?\:\|]/ + +const OPERATOR = new RegExp( + // any of: + '(' + + // or operator + '\\|' + + // or + '|' + + // or group start + '\\(\\?\\:' + + // or + '|' + + // or group end + '\\)' + + // or + '|' + + // one-of set start + '\\[' + + // or + '|' + + // one-of set end + '\\]' + + ')' +) + +function expandSingleElementArray(array) { + if (array.length === 1) { + return array[0] + } + return array +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternParser.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternParser.test.js new file mode 100644 index 00000000..f79f33c1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternParser.test.js @@ -0,0 +1,67 @@ +import PatternParser from './AsYouTypeFormatter.PatternParser.js' + +describe('PatternParser', function() { + it('should parse single-character patterns', function() { + new PatternParser().parse('2').should.deep.equal('2') + }) + + it('should parse string patterns', function() { + new PatternParser().parse('123').should.deep.equal(['1', '2', '3']) + }) + + it('should parse "one of" patterns', function() { + new PatternParser().parse('[5-9]').should.deep.equal({ + op: '[]', + args: ['5', '6', '7', '8', '9'] + }) + }) + + it('should parse "or" patterns', function() { + new PatternParser().parse('123|[5-9]').should.deep.equal({ + op: '|', + args: [ + ['1', '2', '3'], + { + op: '[]', + args: ['5', '6', '7', '8', '9'] + } + ] + }) + + new PatternParser().parse('123|[5-9]0').should.deep.equal({ + op: '|', + args: [ + ['1', '2', '3'], + [ + { + op: '[]', + args: ['5', '6', '7', '8', '9'] + }, + '0' + ] + ] + }) + }) + + it('should parse nested "or" patterns', function() { + new PatternParser().parse('123|(?:2|34)[5-9]').should.deep.equal({ + op: '|', + args: [ + ['1', '2', '3'], + [ + { + op: '|', + args: [ + '2', + ['3', '4'] + ] + }, + { + op: '[]', + args: ['5', '6', '7', '8', '9'] + } + ] + ] + }) + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.complete.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.complete.js new file mode 100644 index 00000000..f47b9261 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.complete.js @@ -0,0 +1,135 @@ +import checkNumberLength from './helpers/checkNumberLength.js' +import parseDigits from './helpers/parseDigits.js' +import formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js' + +export default function formatCompleteNumber(state, format, { + metadata, + shouldTryNationalPrefixFormattingRule, + getSeparatorAfterNationalPrefix +}) { + const matcher = new RegExp(`^(?:${format.pattern()})$`) + if (matcher.test(state.nationalSignificantNumber)) { + return formatNationalNumberWithAndWithoutNationalPrefixFormattingRule( + state, + format, + { + metadata, + shouldTryNationalPrefixFormattingRule, + getSeparatorAfterNationalPrefix + } + ) + } +} + +export function canFormatCompleteNumber(nationalSignificantNumber, metadata) { + return checkNumberLength(nationalSignificantNumber, metadata) === 'IS_POSSIBLE' +} + +function formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(state, format, { + metadata, + shouldTryNationalPrefixFormattingRule, + getSeparatorAfterNationalPrefix +}) { + // `format` has already been checked for `nationalPrefix` requirement. + + const { + nationalSignificantNumber, + international, + nationalPrefix, + carrierCode + } = state + + // Format the number with using `national_prefix_formatting_rule`. + // If the resulting formatted number is a valid formatted number, then return it. + // + // Google's AsYouType formatter is different in a way that it doesn't try + // to format using the "national prefix formatting rule", and instead it + // simply prepends a national prefix followed by a " " character. + // This code does that too, but as a fallback. + // The reason is that "national prefix formatting rule" may use parentheses, + // which wouldn't be included has it used the simpler Google's way. + // + if (shouldTryNationalPrefixFormattingRule(format)) { + const formattedNumber = formatNationalNumber(state, format, { + useNationalPrefixFormattingRule: true, + getSeparatorAfterNationalPrefix, + metadata + }) + if (formattedNumber) { + return formattedNumber + } + } + + // Format the number without using `national_prefix_formatting_rule`. + return formatNationalNumber(state, format, { + useNationalPrefixFormattingRule: false, + getSeparatorAfterNationalPrefix, + metadata + }) +} + +function formatNationalNumber(state, format, { + metadata, + useNationalPrefixFormattingRule, + getSeparatorAfterNationalPrefix +}) { + let formattedNationalNumber = formatNationalNumberUsingFormat( + state.nationalSignificantNumber, + format, + { + carrierCode: state.carrierCode, + useInternationalFormat: state.international, + withNationalPrefix: useNationalPrefixFormattingRule, + metadata + } + ) + if (!useNationalPrefixFormattingRule) { + if (state.nationalPrefix) { + // If a national prefix was extracted, then just prepend it, + // followed by a " " character. + formattedNationalNumber = state.nationalPrefix + + getSeparatorAfterNationalPrefix(format) + + formattedNationalNumber + } else if (state.complexPrefixBeforeNationalSignificantNumber) { + formattedNationalNumber = state.complexPrefixBeforeNationalSignificantNumber + + ' ' + + formattedNationalNumber + } + } + if (isValidFormattedNationalNumber(formattedNationalNumber, state)) { + return formattedNationalNumber + } +} + +// Check that the formatted phone number contains exactly +// the same digits that have been input by the user. +// For example, when "0111523456789" is input for `AR` country, +// the extracted `this.nationalSignificantNumber` is "91123456789", +// which means that the national part of `this.digits` isn't simply equal to +// `this.nationalPrefix` + `this.nationalSignificantNumber`. +// +// Also, a `format` can add extra digits to the `this.nationalSignificantNumber` +// being formatted via `metadata[country].national_prefix_transform_rule`. +// For example, for `VI` country, it prepends `340` to the national number, +// and if this check hasn't been implemented, then there would be a bug +// when `340` "area coude" is "duplicated" during input for `VI` country: +// https://github.com/catamphetamine/libphonenumber-js/issues/318 +// +// So, all these "gotchas" are filtered out. +// +// In the original Google's code, the comments say: +// "Check that we didn't remove nor add any extra digits when we matched +// this formatting pattern. This usually happens after we entered the last +// digit during AYTF. Eg: In case of MX, we swallow mobile token (1) when +// formatted but AYTF should retain all the number entered and not change +// in order to match a format (of same leading digits and length) display +// in that way." +// "If it's the same (i.e entered number and format is same), then it's +// safe to return this in formatted number as nothing is lost / added." +// Otherwise, don't use this format. +// https://github.com/google/libphonenumber/commit/3e7c1f04f5e7200f87fb131e6f85c6e99d60f510#diff-9149457fa9f5d608a11bb975c6ef4bc5 +// https://github.com/google/libphonenumber/commit/3ac88c7106e7dcb553bcc794b15f19185928a1c6#diff-2dcb77e833422ee304da348b905cde0b +// +function isValidFormattedNationalNumber(formattedNationalNumber, state) { + return parseDigits(formattedNationalNumber) === state.getNationalDigits() +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.js new file mode 100644 index 00000000..a4d3a139 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.js @@ -0,0 +1,714 @@ +import { + DIGIT_PLACEHOLDER, + countOccurences, + repeat, + cutAndStripNonPairedParens, + closeNonPairedParens, + stripNonPairedParens, + populateTemplateWithDigits +} from './AsYouTypeFormatter.util.js' + +import formatCompleteNumber, { + canFormatCompleteNumber +} from './AsYouTypeFormatter.complete.js' + +import PatternMatcher from './AsYouTypeFormatter.PatternMatcher.js' + +import parseDigits from './helpers/parseDigits.js' +export { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.util.js' +import { FIRST_GROUP_PATTERN } from './helpers/formatNationalNumberUsingFormat.js' +import { VALID_PUNCTUATION } from './constants.js' +import applyInternationalSeparatorStyle from './helpers/applyInternationalSeparatorStyle.js' + +// Used in phone number format template creation. +// Could be any digit, I guess. +const DUMMY_DIGIT = '9' +// I don't know why is it exactly `15` +const LONGEST_NATIONAL_PHONE_NUMBER_LENGTH = 15 +// Create a phone number consisting only of the digit 9 that matches the +// `number_pattern` by applying the pattern to the "longest phone number" string. +const LONGEST_DUMMY_PHONE_NUMBER = repeat(DUMMY_DIGIT, LONGEST_NATIONAL_PHONE_NUMBER_LENGTH) + +// A set of characters that, if found in a national prefix formatting rules, are an indicator to +// us that we should separate the national prefix from the number when formatting. +const NATIONAL_PREFIX_SEPARATORS_PATTERN = /[- ]/ + +// Deprecated: Google has removed some formatting pattern related code from their repo. +// https://github.com/googlei18n/libphonenumber/commit/a395b4fef3caf57c4bc5f082e1152a4d2bd0ba4c +// "We no longer have numbers in formatting matching patterns, only \d." +// Because this library supports generating custom metadata +// some users may still be using old metadata so the relevant +// code seems to stay until some next major version update. +const SUPPORT_LEGACY_FORMATTING_PATTERNS = true + +// A pattern that is used to match character classes in regular expressions. +// An example of a character class is "[1-4]". +const CREATE_CHARACTER_CLASS_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && (() => /\[([^\[\]])*\]/g) + +// Any digit in a regular expression that actually denotes a digit. For +// example, in the regular expression "80[0-2]\d{6,10}", the first 2 digits +// (8 and 0) are standalone digits, but the rest are not. +// Two look-aheads are needed because the number following \\d could be a +// two-digit number, since the phone number can be as long as 15 digits. +const CREATE_STANDALONE_DIGIT_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && (() => /\d(?=[^,}][^,}])/g) + +// A regular expression that is used to determine if a `format` is +// suitable to be used in the "as you type formatter". +// A `format` is suitable when the resulting formatted number has +// the same digits as the user has entered. +// +// In the simplest case, that would mean that the format +// doesn't add any additional digits when formatting a number. +// Google says that it also shouldn't add "star" (`*`) characters, +// like it does in some Israeli formats. +// Such basic format would only contain "valid punctuation" +// and "captured group" identifiers ($1, $2, etc). +// +// An example of a format that adds additional digits: +// +// Country: `AR` (Argentina). +// Format: +// { +// "pattern": "(\\d)(\\d{2})(\\d{4})(\\d{4})", +// "leading_digits_patterns": ["91"], +// "national_prefix_formatting_rule": "0$1", +// "format": "$2 15-$3-$4", +// "international_format": "$1 $2 $3-$4" +// } +// +// In the format above, the `format` adds `15` to the digits when formatting a number. +// A sidenote: this format actually is suitable because `national_prefix_for_parsing` +// has previously removed `15` from a national number, so re-adding `15` in `format` +// doesn't actually result in any extra digits added to user's input. +// But verifying that would be a complex procedure, so the code chooses a simpler path: +// it simply filters out all `format`s that contain anything but "captured group" ids. +// +// This regular expression is called `ELIGIBLE_FORMAT_PATTERN` in Google's +// `libphonenumber` code. +// +const NON_ALTERING_FORMAT_REG_EXP = new RegExp( + '[' + VALID_PUNCTUATION + ']*' + + // Google developers say: + // "We require that the first matching group is present in the + // output pattern to ensure no data is lost while formatting." + '\\$1' + + '[' + VALID_PUNCTUATION + ']*' + + '(\\$\\d[' + VALID_PUNCTUATION + ']*)*' + + '$' +) + +// This is the minimum length of the leading digits of a phone number +// to guarantee the first "leading digits pattern" for a phone number format +// to be preemptive. +const MIN_LEADING_DIGITS_LENGTH = 3 + +export default class AsYouTypeFormatter { + constructor({ + state, + metadata + }) { + this.metadata = metadata + this.resetFormat() + } + + resetFormat() { + this.chosenFormat = undefined + this.template = undefined + this.nationalNumberTemplate = undefined + this.populatedNationalNumberTemplate = undefined + this.populatedNationalNumberTemplatePosition = -1 + } + + reset(numberingPlan, state) { + this.resetFormat() + if (numberingPlan) { + this.isNANP = numberingPlan.callingCode() === '1' + this.matchingFormats = numberingPlan.formats() + if (state.nationalSignificantNumber) { + this.narrowDownMatchingFormats(state) + } + } else { + this.isNANP = undefined + this.matchingFormats = [] + } + } + + /** + * Formats an updated phone number. + * @param {string} nextDigits — Additional phone number digits. + * @param {object} state — `AsYouType` state. + * @return {[string]} Returns undefined if the updated phone number can't be formatted using any of the available formats. + */ + format(nextDigits, state) { + // See if the phone number digits can be formatted as a complete phone number. + // If not, use the results from `formatNationalNumberWithNextDigits()`, + // which formats based on the chosen formatting pattern. + // + // Attempting to format complete phone number first is how it's done + // in Google's `libphonenumber`, so this library just follows it. + // Google's `libphonenumber` code doesn't explain in detail why does it + // attempt to format digits as a complete phone number + // instead of just going with a previoulsy (or newly) chosen `format`: + // + // "Checks to see if there is an exact pattern match for these digits. + // If so, we should use this instead of any other formatting template + // whose leadingDigitsPattern also matches the input." + // + if (canFormatCompleteNumber(state.nationalSignificantNumber, this.metadata)) { + for (const format of this.matchingFormats) { + const formattedCompleteNumber = formatCompleteNumber( + state, + format, + { + metadata: this.metadata, + shouldTryNationalPrefixFormattingRule: (format) => this.shouldTryNationalPrefixFormattingRule(format, { + international: state.international, + nationalPrefix: state.nationalPrefix + }), + getSeparatorAfterNationalPrefix: (format) => this.getSeparatorAfterNationalPrefix(format) + } + ) + if (formattedCompleteNumber) { + this.resetFormat() + this.chosenFormat = format + this.setNationalNumberTemplate(formattedCompleteNumber.replace(/\d/g, DIGIT_PLACEHOLDER), state) + this.populatedNationalNumberTemplate = formattedCompleteNumber + // With a new formatting template, the matched position + // using the old template needs to be reset. + this.populatedNationalNumberTemplatePosition = this.template.lastIndexOf(DIGIT_PLACEHOLDER) + return formattedCompleteNumber + } + + } + } + // Format the digits as a partial (incomplete) phone number + // using the previously chosen formatting pattern (or a newly chosen one). + return this.formatNationalNumberWithNextDigits(nextDigits, state) + } + + // Formats the next phone number digits. + formatNationalNumberWithNextDigits(nextDigits, state) { + const previouslyChosenFormat = this.chosenFormat + + // Choose a format from the list of matching ones. + const newlyChosenFormat = this.chooseFormat(state) + + if (newlyChosenFormat) { + if (newlyChosenFormat === previouslyChosenFormat) { + // If it can format the next (current) digits + // using the previously chosen phone number format + // then return the updated formatted number. + return this.formatNextNationalNumberDigits(nextDigits) + } else { + // If a more appropriate phone number format + // has been chosen for these "leading digits", + // then re-format the national phone number part + // using the newly selected format. + return this.formatNextNationalNumberDigits(state.getNationalDigits()) + } + } + } + + narrowDownMatchingFormats({ + nationalSignificantNumber, + nationalPrefix, + international + }) { + const leadingDigits = nationalSignificantNumber + + // "leading digits" pattern list starts with a + // "leading digits" pattern fitting a maximum of 3 leading digits. + // So, after a user inputs 3 digits of a national (significant) phone number + // this national (significant) number can already be formatted. + // The next "leading digits" pattern is for 4 leading digits max, + // and the "leading digits" pattern after it is for 5 leading digits max, etc. + + // This implementation is different from Google's + // in that it searches for a fitting format + // even if the user has entered less than + // `MIN_LEADING_DIGITS_LENGTH` digits of a national number. + // Because some leading digit patterns already match for a single first digit. + let leadingDigitsPatternIndex = leadingDigits.length - MIN_LEADING_DIGITS_LENGTH + if (leadingDigitsPatternIndex < 0) { + leadingDigitsPatternIndex = 0 + } + + this.matchingFormats = this.matchingFormats.filter( + format => this.formatSuits(format, international, nationalPrefix) + && this.formatMatches(format, leadingDigits, leadingDigitsPatternIndex) + ) + + // If there was a phone number format chosen + // and it no longer holds given the new leading digits then reset it. + // The test for this `if` condition is marked as: + // "Reset a chosen format when it no longer holds given the new leading digits". + // To construct a valid test case for this one can find a country + // in `PhoneNumberMetadata.xml` yielding one format for 3 `` + // and yielding another format for 4 `` (Australia in this case). + if (this.chosenFormat && this.matchingFormats.indexOf(this.chosenFormat) === -1) { + this.resetFormat() + } + } + + formatSuits(format, international, nationalPrefix) { + // When a prefix before a national (significant) number is + // simply a national prefix, then it's parsed as `this.nationalPrefix`. + // In more complex cases, a prefix before national (significant) number + // could include a national prefix as well as some "capturing groups", + // and in that case there's no info whether a national prefix has been parsed. + // If national prefix is not used when formatting a phone number + // using this format, but a national prefix has been entered by the user, + // and was extracted, then discard such phone number format. + // In Google's "AsYouType" formatter code, the equivalent would be this part: + // https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L175-L184 + if (nationalPrefix && + !format.usesNationalPrefix() && + // !format.domesticCarrierCodeFormattingRule() && + !format.nationalPrefixIsOptionalWhenFormattingInNationalFormat()) { + return false + } + // If national prefix is mandatory for this phone number format + // and there're no guarantees that a national prefix is present in user input + // then discard this phone number format as not suitable. + // In Google's "AsYouType" formatter code, the equivalent would be this part: + // https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L185-L193 + if (!international && + !nationalPrefix && + format.nationalPrefixIsMandatoryWhenFormattingInNationalFormat()) { + return false + } + return true + } + + formatMatches(format, leadingDigits, leadingDigitsPatternIndex) { + const leadingDigitsPatternsCount = format.leadingDigitsPatterns().length + + // If this format is not restricted to a certain + // leading digits pattern then it fits. + // The test case could be found by searching for "leadingDigitsPatternsCount === 0". + if (leadingDigitsPatternsCount === 0) { + return true + } + + // Start narrowing down the list of possible formats based on the leading digits. + // (only previously matched formats take part in the narrowing down process) + + // `leading_digits_patterns` start with 3 digits min + // and then go up from there one digit at a time. + leadingDigitsPatternIndex = Math.min(leadingDigitsPatternIndex, leadingDigitsPatternsCount - 1) + const leadingDigitsPattern = format.leadingDigitsPatterns()[leadingDigitsPatternIndex] + + // Google imposes a requirement on the leading digits + // to be minimum 3 digits long in order to be eligible + // for checking those with a leading digits pattern. + // + // Since `leading_digits_patterns` start with 3 digits min, + // Google's original `libphonenumber` library only starts + // excluding any non-matching formats only when the + // national number entered so far is at least 3 digits long, + // otherwise format matching would give false negatives. + // + // For example, when the digits entered so far are `2` + // and the leading digits pattern is `21` – + // it's quite obvious in this case that the format could be the one + // but due to the absence of further digits it would give false negative. + // + // Also, `leading_digits_patterns` doesn't always correspond to a single + // digits count. For example, `60|8` pattern would already match `8` + // but the `60` part would require having at least two leading digits, + // so the whole pattern would require inputting two digits first in order to + // decide on whether it matches the input, even when the input is "80". + // + // This library — `libphonenumber-js` — allows filtering by `leading_digits_patterns` + // even when there's only 1 or 2 digits of the national (significant) number. + // To do that, it uses a non-strict pattern matcher written specifically for that. + // + if (leadingDigits.length < MIN_LEADING_DIGITS_LENGTH) { + // Before leading digits < 3 matching was implemented: + // return true + // + // After leading digits < 3 matching was implemented: + try { + return new PatternMatcher(leadingDigitsPattern).match(leadingDigits, { allowOverflow: true }) !== undefined + } catch (error) /* istanbul ignore next */ { + // There's a slight possibility that there could be some undiscovered bug + // in the pattern matcher code. Since the "leading digits < 3 matching" + // feature is not "essential" for operation, it can fall back to the old way + // in case of any issues rather than halting the application's execution. + console.error(error) + return true + } + } + + // If at least `MIN_LEADING_DIGITS_LENGTH` digits of a national number are + // available then use the usual regular expression matching. + // + // The whole pattern is wrapped in round brackets (`()`) because + // the pattern can use "or" operator (`|`) at the top level of the pattern. + // + return new RegExp(`^(${leadingDigitsPattern})`).test(leadingDigits) + } + + getFormatFormat(format, international) { + return international ? format.internationalFormat() : format.format() + } + + chooseFormat(state) { + // When there are multiple available formats, the formatter uses the first + // format where a formatting template could be created. + // + // For some weird reason, `istanbul` says "else path not taken" + // for the `for of` line below. Supposedly that means that + // the loop doesn't ever go over the last element in the list. + // That's true because there always is `this.chosenFormat` + // when `this.matchingFormats` is non-empty. + // And, for some weird reason, it doesn't think that the case + // with empty `this.matchingFormats` qualifies for a valid "else" path. + // So simply muting this `istanbul` warning. + // It doesn't skip the contents of the `for of` loop, + // it just skips the `for of` line. + // + /* istanbul ignore next */ + for (const format of this.matchingFormats.slice()) { + // If this format is currently being used + // and is still suitable, then stick to it. + if (this.chosenFormat === format) { + break + } + // Sometimes, a formatting rule inserts additional digits in a phone number, + // and "as you type" formatter can't do that: it should only use the digits + // that the user has input. + // + // For example, in Argentina, there's a format for mobile phone numbers: + // + // { + // "pattern": "(\\d)(\\d{2})(\\d{4})(\\d{4})", + // "leading_digits_patterns": ["91"], + // "national_prefix_formatting_rule": "0$1", + // "format": "$2 15-$3-$4", + // "international_format": "$1 $2 $3-$4" + // } + // + // In that format, `international_format` is used instead of `format` + // because `format` inserts `15` in the formatted number, + // and `AsYouType` formatter should only use the digits + // the user has actually input, without adding any extra digits. + // In this case, it wouldn't make a difference, because the `15` + // is first stripped when applying `national_prefix_for_parsing` + // and then re-added when using `format`, so in reality it doesn't + // add any new digits to the number, but to detect that, the code + // would have to be more complex: it would have to try formatting + // the digits using the format and then see if any digits have + // actually been added or removed, and then, every time a new digit + // is input, it should re-check whether the chosen format doesn't + // alter the digits. + // + // Google's code doesn't go that far, and so does this library: + // it simply requires that a `format` doesn't add any additonal + // digits to user's input. + // + // Also, people in general should move from inputting phone numbers + // in national format (possibly with national prefixes) + // and use international phone number format instead: + // it's a logical thing in the modern age of mobile phones, + // globalization and the internet. + // + /* istanbul ignore if */ + if (!NON_ALTERING_FORMAT_REG_EXP.test(this.getFormatFormat(format, state.international))) { + continue + } + if (!this.createTemplateForFormat(format, state)) { + // Remove the format if it can't generate a template. + this.matchingFormats = this.matchingFormats.filter(_ => _ !== format) + continue + } + this.chosenFormat = format + break + } + if (!this.chosenFormat) { + // No format matches the national (significant) phone number. + this.resetFormat() + } + return this.chosenFormat + } + + createTemplateForFormat(format, state) { + // The formatter doesn't format numbers when numberPattern contains '|', e.g. + // (20|3)\d{4}. In those cases we quickly return. + // (Though there's no such format in current metadata) + /* istanbul ignore if */ + if (SUPPORT_LEGACY_FORMATTING_PATTERNS && format.pattern().indexOf('|') >= 0) { + return + } + // Get formatting template for this phone number format + const template = this.getTemplateForFormat(format, state) + // If the national number entered is too long + // for any phone number format, then abort. + if (template) { + this.setNationalNumberTemplate(template, state) + return true + } + } + + getSeparatorAfterNationalPrefix(format) { + // `US` metadata doesn't have a `national_prefix_formatting_rule`, + // so the `if` condition below doesn't apply to `US`, + // but in reality there shoudl be a separator + // between a national prefix and a national (significant) number. + // So `US` national prefix separator is a "special" "hardcoded" case. + if (this.isNANP) { + return ' ' + } + // If a `format` has a `national_prefix_formatting_rule` + // and that rule has a separator after a national prefix, + // then it means that there should be a separator + // between a national prefix and a national (significant) number. + if (format && + format.nationalPrefixFormattingRule() && + NATIONAL_PREFIX_SEPARATORS_PATTERN.test(format.nationalPrefixFormattingRule())) { + return ' ' + } + // At this point, there seems to be no clear evidence that + // there should be a separator between a national prefix + // and a national (significant) number. So don't insert one. + return '' + } + + getInternationalPrefixBeforeCountryCallingCode({ IDDPrefix, missingPlus }, options) { + if (IDDPrefix) { + return options && options.spacing === false ? IDDPrefix : IDDPrefix + ' ' + } + if (missingPlus) { + return '' + } + return '+' + } + + getTemplate(state) { + if (!this.template) { + return + } + // `this.template` holds the template for a "complete" phone number. + // The currently entered phone number is most likely not "complete", + // so trim all non-populated digits. + let index = -1 + let i = 0 + const internationalPrefix = state.international ? this.getInternationalPrefixBeforeCountryCallingCode(state, { spacing: false }) : '' + while (i < internationalPrefix.length + state.getDigitsWithoutInternationalPrefix().length) { + index = this.template.indexOf(DIGIT_PLACEHOLDER, index + 1) + i++ + } + return cutAndStripNonPairedParens(this.template, index + 1) + } + + setNationalNumberTemplate(template, state) { + this.nationalNumberTemplate = template + this.populatedNationalNumberTemplate = template + // With a new formatting template, the matched position + // using the old template needs to be reset. + this.populatedNationalNumberTemplatePosition = -1 + // For convenience, the public `.template` property + // contains the whole international number + // if the phone number being input is international: + // 'x' for the '+' sign, 'x'es for the country phone code, + // a spacebar and then the template for the formatted national number. + if (state.international) { + this.template = + this.getInternationalPrefixBeforeCountryCallingCode(state).replace(/[\d\+]/g, DIGIT_PLACEHOLDER) + + repeat(DIGIT_PLACEHOLDER, state.callingCode.length) + + ' ' + + template + } else { + this.template = template + } + } + + /** + * Generates formatting template for a national phone number, + * optionally containing a national prefix, for a format. + * @param {Format} format + * @param {string} nationalPrefix + * @return {string} + */ + getTemplateForFormat(format, { + nationalSignificantNumber, + international, + nationalPrefix, + complexPrefixBeforeNationalSignificantNumber + }) { + let pattern = format.pattern() + + /* istanbul ignore else */ + if (SUPPORT_LEGACY_FORMATTING_PATTERNS) { + pattern = pattern + // Replace anything in the form of [..] with \d + .replace(CREATE_CHARACTER_CLASS_PATTERN(), '\\d') + // Replace any standalone digit (not the one in `{}`) with \d + .replace(CREATE_STANDALONE_DIGIT_PATTERN(), '\\d') + } + + // Generate a dummy national number (consisting of `9`s) + // that fits this format's `pattern`. + // + // This match will always succeed, + // because the "longest dummy phone number" + // has enough length to accomodate any possible + // national phone number format pattern. + // + let digits = LONGEST_DUMMY_PHONE_NUMBER.match(pattern)[0] + + // If the national number entered is too long + // for any phone number format, then abort. + if (nationalSignificantNumber.length > digits.length) { + return + } + + // Get a formatting template which can be used to efficiently format + // a partial number where digits are added one by one. + + // Below `strictPattern` is used for the + // regular expression (with `^` and `$`). + // This wasn't originally in Google's `libphonenumber` + // and I guess they don't really need it + // because they're not using "templates" to format phone numbers + // but I added `strictPattern` after encountering + // South Korean phone number formatting bug. + // + // Non-strict regular expression bug demonstration: + // + // this.nationalSignificantNumber : `111111111` (9 digits) + // + // pattern : (\d{2})(\d{3,4})(\d{4}) + // format : `$1 $2 $3` + // digits : `9999999999` (10 digits) + // + // '9999999999'.replace(new RegExp(/(\d{2})(\d{3,4})(\d{4})/g), '$1 $2 $3') = "99 9999 9999" + // + // template : xx xxxx xxxx + // + // But the correct template in this case is `xx xxx xxxx`. + // The template was generated incorrectly because of the + // `{3,4}` variability in the `pattern`. + // + // The fix is, if `this.nationalSignificantNumber` has already sufficient length + // to satisfy the `pattern` completely then `this.nationalSignificantNumber` + // is used instead of `digits`. + + const strictPattern = new RegExp('^' + pattern + '$') + const nationalNumberDummyDigits = nationalSignificantNumber.replace(/\d/g, DUMMY_DIGIT) + + // If `this.nationalSignificantNumber` has already sufficient length + // to satisfy the `pattern` completely then use it + // instead of `digits`. + if (strictPattern.test(nationalNumberDummyDigits)) { + digits = nationalNumberDummyDigits + } + + let numberFormat = this.getFormatFormat(format, international) + let nationalPrefixIncludedInTemplate + + // If a user did input a national prefix (and that's guaranteed), + // and if a `format` does have a national prefix formatting rule, + // then see if that national prefix formatting rule + // prepends exactly the same national prefix the user has input. + // If that's the case, then use the `format` with the national prefix formatting rule. + // Otherwise, use the `format` without the national prefix formatting rule, + // and prepend a national prefix manually to it. + if (this.shouldTryNationalPrefixFormattingRule(format, { international, nationalPrefix })) { + const numberFormatWithNationalPrefix = numberFormat.replace( + FIRST_GROUP_PATTERN, + format.nationalPrefixFormattingRule() + ) + // If `national_prefix_formatting_rule` of a `format` simply prepends + // national prefix at the start of a national (significant) number, + // then such formatting can be used with `AsYouType` formatter. + // There seems to be no `else` case: everywhere in metadata, + // national prefix formatting rule is national prefix + $1, + // or `($1)`, in which case such format isn't even considered + // when the user has input a national prefix. + /* istanbul ignore else */ + if (parseDigits(format.nationalPrefixFormattingRule()) === (nationalPrefix || '') + parseDigits('$1')) { + numberFormat = numberFormatWithNationalPrefix + nationalPrefixIncludedInTemplate = true + // Replace all digits of the national prefix in the formatting template + // with `DIGIT_PLACEHOLDER`s. + if (nationalPrefix) { + let i = nationalPrefix.length + while (i > 0) { + numberFormat = numberFormat.replace(/\d/, DIGIT_PLACEHOLDER) + i-- + } + } + } + } + + // Generate formatting template for this phone number format. + let template = digits + // Format the dummy phone number according to the format. + .replace(new RegExp(pattern), numberFormat) + // Replace each dummy digit with a DIGIT_PLACEHOLDER. + .replace(new RegExp(DUMMY_DIGIT, 'g'), DIGIT_PLACEHOLDER) + + // If a prefix of a national (significant) number is not as simple + // as just a basic national prefix, then just prepend such prefix + // before the national (significant) number, optionally spacing + // the two with a whitespace. + if (!nationalPrefixIncludedInTemplate) { + if (complexPrefixBeforeNationalSignificantNumber) { + // Prepend the prefix to the template manually. + template = repeat(DIGIT_PLACEHOLDER, complexPrefixBeforeNationalSignificantNumber.length) + + ' ' + + template + } else if (nationalPrefix) { + // Prepend national prefix to the template manually. + template = repeat(DIGIT_PLACEHOLDER, nationalPrefix.length) + + this.getSeparatorAfterNationalPrefix(format) + + template + } + } + + if (international) { + template = applyInternationalSeparatorStyle(template) + } + + return template + } + + formatNextNationalNumberDigits(digits) { + const result = populateTemplateWithDigits( + this.populatedNationalNumberTemplate, + this.populatedNationalNumberTemplatePosition, + digits + ) + + if (!result) { + // Reset the format. + this.resetFormat() + return + } + + this.populatedNationalNumberTemplate = result[0] + this.populatedNationalNumberTemplatePosition = result[1] + + // Return the formatted phone number so far. + return cutAndStripNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1) + + // The old way which was good for `input-format` but is not so good + // for `react-phone-number-input`'s default input (`InputBasic`). + // return closeNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1) + // .replace(new RegExp(DIGIT_PLACEHOLDER, 'g'), ' ') + } + + shouldTryNationalPrefixFormattingRule(format, { international, nationalPrefix }) { + if (format.nationalPrefixFormattingRule()) { + // In some countries, `national_prefix_formatting_rule` is `($1)`, + // so it applies even if the user hasn't input a national prefix. + // `format.usesNationalPrefix()` detects such cases. + const usesNationalPrefix = format.usesNationalPrefix() + if ((usesNationalPrefix && nationalPrefix) || + (!usesNationalPrefix && !international)) { + return true + } + } + } +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.util.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.util.js new file mode 100644 index 00000000..d847c9c9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.util.js @@ -0,0 +1,100 @@ +// Should be the same as `DIGIT_PLACEHOLDER` in `libphonenumber-metadata-generator`. +export const DIGIT_PLACEHOLDER = 'x' // '\u2008' (punctuation space) +const DIGIT_PLACEHOLDER_MATCHER = new RegExp(DIGIT_PLACEHOLDER) + +// Counts all occurences of a symbol in a string. +// Unicode-unsafe (because using `.split()`). +export function countOccurences(symbol, string) { + let count = 0 + // Using `.split('')` to iterate through a string here + // to avoid requiring `Symbol.iterator` polyfill. + // `.split('')` is generally not safe for Unicode, + // but in this particular case for counting brackets it is safe. + // for (const character of string) + for (const character of string.split('')) { + if (character === symbol) { + count++ + } + } + return count +} + +// Repeats a string (or a symbol) N times. +// http://stackoverflow.com/questions/202605/repeat-string-javascript +export function repeat(string, times) { + if (times < 1) { + return '' + } + let result = '' + while (times > 1) { + if (times & 1) { + result += string + } + times >>= 1 + string += string + } + return result + string +} + +export function cutAndStripNonPairedParens(string, cutBeforeIndex) { + if (string[cutBeforeIndex] === ')') { + cutBeforeIndex++ + } + return stripNonPairedParens(string.slice(0, cutBeforeIndex)) +} + +export function closeNonPairedParens(template, cut_before) { + const retained_template = template.slice(0, cut_before) + const opening_braces = countOccurences('(', retained_template) + const closing_braces = countOccurences(')', retained_template) + let dangling_braces = opening_braces - closing_braces + while (dangling_braces > 0 && cut_before < template.length) { + if (template[cut_before] === ')') { + dangling_braces-- + } + cut_before++ + } + return template.slice(0, cut_before) +} + +export function stripNonPairedParens(string) { + const dangling_braces =[] + let i = 0 + while (i < string.length) { + if (string[i] === '(') { + dangling_braces.push(i) + } + else if (string[i] === ')') { + dangling_braces.pop() + } + i++ + } + let start = 0 + let cleared_string = '' + dangling_braces.push(string.length) + for (const index of dangling_braces) { + cleared_string += string.slice(start, index) + start = index + 1 + } + return cleared_string +} + +export function populateTemplateWithDigits(template, position, digits) { + // Using `.split('')` to iterate through a string here + // to avoid requiring `Symbol.iterator` polyfill. + // `.split('')` is generally not safe for Unicode, + // but in this particular case for `digits` it is safe. + // for (const digit of digits) + for (const digit of digits.split('')) { + // If there is room for more digits in current `template`, + // then set the next digit in the `template`, + // and return the formatted digits so far. + // If more digits are entered than the current format could handle. + if (template.slice(position + 1).search(DIGIT_PLACEHOLDER_MATCHER) < 0) { + return + } + position = template.search(DIGIT_PLACEHOLDER_MATCHER) + template = template.replace(DIGIT_PLACEHOLDER_MATCHER, digit) + } + return [template, position] +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.util.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.util.test.js new file mode 100644 index 00000000..c0b95578 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeFormatter.util.test.js @@ -0,0 +1,22 @@ +import { closeNonPairedParens, stripNonPairedParens, repeat } from './AsYouTypeFormatter.util.js' + +describe('closeNonPairedParens', () => { + it('should close non-paired braces', () => { + closeNonPairedParens('(000) 123-45 (9 )', 15).should.equal('(000) 123-45 (9 )') + }) +}) + +describe('stripNonPairedParens', () => { + it('should strip non-paired braces', () => { + stripNonPairedParens('(000) 123-45 (9').should.equal('(000) 123-45 9') + stripNonPairedParens('(000) 123-45 (9)').should.equal('(000) 123-45 (9)') + }) +}) + +describe('repeat', () => { + it('should repeat string N times', () => { + repeat('a', 0).should.equal('') + repeat('a', 3).should.equal('aaa') + repeat('a', 4).should.equal('aaaa') + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeParser.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeParser.js new file mode 100644 index 00000000..db6ac8b7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeParser.js @@ -0,0 +1,503 @@ +import extractCountryCallingCode from './helpers/extractCountryCallingCode.js' +import extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js' +import extractNationalNumberFromPossiblyIncompleteNumber from './helpers/extractNationalNumberFromPossiblyIncompleteNumber.js' +import stripIddPrefix from './helpers/stripIddPrefix.js' +import parseDigits from './helpers/parseDigits.js' + +import { + VALID_DIGITS, + VALID_PUNCTUATION, + PLUS_CHARS +} from './constants.js' + +const VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART = + '[' + + VALID_PUNCTUATION + + VALID_DIGITS + + ']+' + +const VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN = new RegExp('^' + VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART + '$', 'i') + +const VALID_FORMATTED_PHONE_NUMBER_PART = + '(?:' + + '[' + PLUS_CHARS + ']' + + '[' + + VALID_PUNCTUATION + + VALID_DIGITS + + ']*' + + '|' + + '[' + + VALID_PUNCTUATION + + VALID_DIGITS + + ']+' + + ')' + +const AFTER_PHONE_NUMBER_DIGITS_END_PATTERN = new RegExp( + '[^' + + VALID_PUNCTUATION + + VALID_DIGITS + + ']+' + + '.*' + + '$' +) + +// Tests whether `national_prefix_for_parsing` could match +// different national prefixes. +// Matches anything that's not a digit or a square bracket. +const COMPLEX_NATIONAL_PREFIX = /[^\d\[\]]/ + +export default class AsYouTypeParser { + constructor({ + defaultCountry, + defaultCallingCode, + metadata, + onNationalSignificantNumberChange + }) { + this.defaultCountry = defaultCountry + this.defaultCallingCode = defaultCallingCode + this.metadata = metadata + this.onNationalSignificantNumberChange = onNationalSignificantNumberChange + } + + input(text, state) { + const [formattedDigits, hasPlus] = extractFormattedDigitsAndPlus(text) + const digits = parseDigits(formattedDigits) + // Checks for a special case: just a leading `+` has been entered. + let justLeadingPlus + if (hasPlus) { + if (!state.digits) { + state.startInternationalNumber() + if (!digits) { + justLeadingPlus = true + } + } + } + if (digits) { + this.inputDigits(digits, state) + } + return { + digits, + justLeadingPlus + } + } + + /** + * Inputs "next" phone number digits. + * @param {string} digits + * @return {string} [formattedNumber] Formatted national phone number (if it can be formatted at this stage). Returning `undefined` means "don't format the national phone number at this stage". + */ + inputDigits(nextDigits, state) { + const { digits } = state + const hasReceivedThreeLeadingDigits = digits.length < 3 && digits.length + nextDigits.length >= 3 + + // Append phone number digits. + state.appendDigits(nextDigits) + + // Attempt to extract IDD prefix: + // Some users input their phone number in international format, + // but in an "out-of-country" dialing format instead of using the leading `+`. + // https://github.com/catamphetamine/libphonenumber-js/issues/185 + // Detect such numbers as soon as there're at least 3 digits. + // Google's library attempts to extract IDD prefix at 3 digits, + // so this library just copies that behavior. + // I guess that's because the most commot IDD prefixes are + // `00` (Europe) and `011` (US). + // There exist really long IDD prefixes too: + // for example, in Australia the default IDD prefix is `0011`, + // and it could even be as long as `14880011`. + // An IDD prefix is extracted here, and then every time when + // there's a new digit and the number couldn't be formatted. + if (hasReceivedThreeLeadingDigits) { + this.extractIddPrefix(state) + } + + if (this.isWaitingForCountryCallingCode(state)) { + if (!this.extractCountryCallingCode(state)) { + return + } + } else { + state.appendNationalSignificantNumberDigits(nextDigits) + } + + // If a phone number is being input in international format, + // then it's not valid for it to have a national prefix. + // Still, some people incorrectly input such numbers with a national prefix. + // In such cases, only attempt to strip a national prefix if the number becomes too long. + // (but that is done later, not here) + if (!state.international) { + if (!this.hasExtractedNationalSignificantNumber) { + this.extractNationalSignificantNumber( + state.getNationalDigits(), + (stateUpdate) => state.update(stateUpdate) + ) + } + } + } + + isWaitingForCountryCallingCode({ international, callingCode }) { + return international && !callingCode + } + + // Extracts a country calling code from a number + // being entered in internatonal format. + extractCountryCallingCode(state) { + const { countryCallingCode, number } = extractCountryCallingCode( + '+' + state.getDigitsWithoutInternationalPrefix(), + this.defaultCountry, + this.defaultCallingCode, + this.metadata.metadata + ) + if (countryCallingCode) { + state.setCallingCode(countryCallingCode) + state.update({ + nationalSignificantNumber: number + }) + return true + } + } + + reset(numberingPlan) { + if (numberingPlan) { + this.hasSelectedNumberingPlan = true + const nationalPrefixForParsing = numberingPlan._nationalPrefixForParsing() + this.couldPossiblyExtractAnotherNationalSignificantNumber = nationalPrefixForParsing && COMPLEX_NATIONAL_PREFIX.test(nationalPrefixForParsing) + } else { + this.hasSelectedNumberingPlan = undefined + this.couldPossiblyExtractAnotherNationalSignificantNumber = undefined + } + } + + /** + * Extracts a national (significant) number from user input. + * Google's library is different in that it only applies `national_prefix_for_parsing` + * and doesn't apply `national_prefix_transform_rule` after that. + * https://github.com/google/libphonenumber/blob/a3d70b0487875475e6ad659af404943211d26456/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L539 + * @return {boolean} [extracted] + */ + extractNationalSignificantNumber(nationalDigits, setState) { + if (!this.hasSelectedNumberingPlan) { + return + } + const { + nationalPrefix, + nationalNumber, + carrierCode + } = extractNationalNumberFromPossiblyIncompleteNumber( + nationalDigits, + this.metadata + ) + if (nationalNumber === nationalDigits) { + return + } + this.onExtractedNationalNumber( + nationalPrefix, + carrierCode, + nationalNumber, + nationalDigits, + setState + ) + return true + } + + /** + * In Google's code this function is called "attempt to extract longer NDD". + * "Some national prefixes are a substring of others", they say. + * @return {boolean} [result] — Returns `true` if extracting a national prefix produced different results from what they were. + */ + extractAnotherNationalSignificantNumber(nationalDigits, prevNationalSignificantNumber, setState) { + if (!this.hasExtractedNationalSignificantNumber) { + return this.extractNationalSignificantNumber(nationalDigits, setState) + } + if (!this.couldPossiblyExtractAnotherNationalSignificantNumber) { + return + } + const { + nationalPrefix, + nationalNumber, + carrierCode + } = extractNationalNumberFromPossiblyIncompleteNumber( + nationalDigits, + this.metadata + ) + // If a national prefix has been extracted previously, + // then it's always extracted as additional digits are added. + // That's assuming `extractNationalNumberFromPossiblyIncompleteNumber()` + // doesn't do anything different from what it currently does. + // So, just in case, here's this check, though it doesn't occur. + /* istanbul ignore if */ + if (nationalNumber === prevNationalSignificantNumber) { + return + } + this.onExtractedNationalNumber( + nationalPrefix, + carrierCode, + nationalNumber, + nationalDigits, + setState + ) + return true + } + + onExtractedNationalNumber( + nationalPrefix, + carrierCode, + nationalSignificantNumber, + nationalDigits, + setState + ) { + let complexPrefixBeforeNationalSignificantNumber + let nationalSignificantNumberMatchesInput + // This check also works with empty `this.nationalSignificantNumber`. + const nationalSignificantNumberIndex = nationalDigits.lastIndexOf(nationalSignificantNumber) + // If the extracted national (significant) number is the + // last substring of the `digits`, then it means that it hasn't been altered: + // no digits have been removed from the national (significant) number + // while applying `national_prefix_transform_rule`. + // https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule + if (nationalSignificantNumberIndex >= 0 && + nationalSignificantNumberIndex === nationalDigits.length - nationalSignificantNumber.length) { + nationalSignificantNumberMatchesInput = true + // If a prefix of a national (significant) number is not as simple + // as just a basic national prefix, then such prefix is stored in + // `this.complexPrefixBeforeNationalSignificantNumber` property and will be + // prepended "as is" to the national (significant) number to produce + // a formatted result. + const prefixBeforeNationalNumber = nationalDigits.slice(0, nationalSignificantNumberIndex) + // `prefixBeforeNationalNumber` is always non-empty, + // because `onExtractedNationalNumber()` isn't called + // when a national (significant) number hasn't been actually "extracted": + // when a national (significant) number is equal to the national part of `digits`, + // then `onExtractedNationalNumber()` doesn't get called. + if (prefixBeforeNationalNumber !== nationalPrefix) { + complexPrefixBeforeNationalSignificantNumber = prefixBeforeNationalNumber + } + } + setState({ + nationalPrefix, + carrierCode, + nationalSignificantNumber, + nationalSignificantNumberMatchesInput, + complexPrefixBeforeNationalSignificantNumber + }) + // `onExtractedNationalNumber()` is only called when + // the national (significant) number actually did change. + this.hasExtractedNationalSignificantNumber = true + this.onNationalSignificantNumberChange() + } + + reExtractNationalSignificantNumber(state) { + // Attempt to extract a national prefix. + // + // Some people incorrectly input national prefix + // in an international phone number. + // For example, some people write British phone numbers as `+44(0)...`. + // + // Also, in some rare cases, it is valid for a national prefix + // to be a part of an international phone number. + // For example, mobile phone numbers in Mexico are supposed to be + // dialled internationally using a `1` national prefix, + // so the national prefix will be part of an international number. + // + // Quote from: + // https://www.mexperience.com/dialing-cell-phones-in-mexico/ + // + // "Dialing a Mexican cell phone from abroad + // When you are calling a cell phone number in Mexico from outside Mexico, + // it’s necessary to dial an additional “1” after Mexico’s country code + // (which is “52”) and before the area code. + // You also ignore the 045, and simply dial the area code and the + // cell phone’s number. + // + // If you don’t add the “1”, you’ll receive a recorded announcement + // asking you to redial using it. + // + // For example, if you are calling from the USA to a cell phone + // in Mexico City, you would dial +52 – 1 – 55 – 1234 5678. + // (Note that this is different to calling a land line in Mexico City + // from abroad, where the number dialed would be +52 – 55 – 1234 5678)". + // + // Google's demo output: + // https://libphonenumber.appspot.com/phonenumberparser?number=%2b5215512345678&country=MX + // + if (this.extractAnotherNationalSignificantNumber( + state.getNationalDigits(), + state.nationalSignificantNumber, + (stateUpdate) => state.update(stateUpdate) + )) { + return true + } + // If no format matches the phone number, then it could be + // "a really long IDD" (quote from a comment in Google's library). + // An IDD prefix is first extracted when the user has entered at least 3 digits, + // and then here — every time when there's a new digit and the number + // couldn't be formatted. + // For example, in Australia the default IDD prefix is `0011`, + // and it could even be as long as `14880011`. + // + // Could also check `!hasReceivedThreeLeadingDigits` here + // to filter out the case when this check duplicates the one + // already performed when there're 3 leading digits, + // but it's not a big deal, and in most cases there + // will be a suitable `format` when there're 3 leading digits. + // + if (this.extractIddPrefix(state)) { + this.extractCallingCodeAndNationalSignificantNumber(state) + return true + } + // Google's AsYouType formatter supports sort of an "autocorrection" feature + // when it "autocorrects" numbers that have been input for a country + // with that country's calling code. + // Such "autocorrection" feature looks weird, but different people have been requesting it: + // https://github.com/catamphetamine/libphonenumber-js/issues/376 + // https://github.com/catamphetamine/libphonenumber-js/issues/375 + // https://github.com/catamphetamine/libphonenumber-js/issues/316 + if (this.fixMissingPlus(state)) { + this.extractCallingCodeAndNationalSignificantNumber(state) + return true + } + } + + extractIddPrefix(state) { + // An IDD prefix can't be present in a number written with a `+`. + // Also, don't re-extract an IDD prefix if has already been extracted. + const { + international, + IDDPrefix, + digits, + nationalSignificantNumber + } = state + if (international || IDDPrefix) { + return + } + // Some users input their phone number in "out-of-country" + // dialing format instead of using the leading `+`. + // https://github.com/catamphetamine/libphonenumber-js/issues/185 + // Detect such numbers. + const numberWithoutIDD = stripIddPrefix( + digits, + this.defaultCountry, + this.defaultCallingCode, + this.metadata.metadata + ) + if (numberWithoutIDD !== undefined && numberWithoutIDD !== digits) { + // If an IDD prefix was stripped then convert the IDD-prefixed number + // to international number for subsequent parsing. + state.update({ + IDDPrefix: digits.slice(0, digits.length - numberWithoutIDD.length) + }) + this.startInternationalNumber(state, { + country: undefined, + callingCode: undefined + }) + return true + } + } + + fixMissingPlus(state) { + if (!state.international) { + const { + countryCallingCode: newCallingCode, + number + } = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign( + state.digits, + this.defaultCountry, + this.defaultCallingCode, + this.metadata.metadata + ) + if (newCallingCode) { + state.update({ + missingPlus: true + }) + this.startInternationalNumber(state, { + country: state.country, + callingCode: newCallingCode + }) + return true + } + } + } + + startInternationalNumber(state, { country, callingCode }) { + state.startInternationalNumber(country, callingCode) + // If a national (significant) number has been extracted before, reset it. + if (state.nationalSignificantNumber) { + state.resetNationalSignificantNumber() + this.onNationalSignificantNumberChange() + this.hasExtractedNationalSignificantNumber = undefined + } + } + + extractCallingCodeAndNationalSignificantNumber(state) { + if (this.extractCountryCallingCode(state)) { + // `this.extractCallingCode()` is currently called when the number + // couldn't be formatted during the standard procedure. + // Normally, the national prefix would be re-extracted + // for an international number if such number couldn't be formatted, + // but since it's already not able to be formatted, + // there won't be yet another retry, so also extract national prefix here. + this.extractNationalSignificantNumber( + state.getNationalDigits(), + (stateUpdate) => state.update(stateUpdate) + ) + } + } +} + +/** + * Extracts formatted phone number from text (if there's any). + * @param {string} text + * @return {string} [formattedPhoneNumber] + */ +function extractFormattedPhoneNumber(text) { + // Attempt to extract a possible number from the string passed in. + const startsAt = text.search(VALID_FORMATTED_PHONE_NUMBER_PART) + if (startsAt < 0) { + return + } + // Trim everything to the left of the phone number. + text = text.slice(startsAt) + // Trim the `+`. + let hasPlus + if (text[0] === '+') { + hasPlus = true + text = text.slice('+'.length) + } + // Trim everything to the right of the phone number. + text = text.replace(AFTER_PHONE_NUMBER_DIGITS_END_PATTERN, '') + // Re-add the previously trimmed `+`. + if (hasPlus) { + text = '+' + text + } + return text +} + +/** + * Extracts formatted phone number digits (and a `+`) from text (if there're any). + * @param {string} text + * @return {any[]} + */ +function _extractFormattedDigitsAndPlus(text) { + // Extract a formatted phone number part from text. + const extractedNumber = extractFormattedPhoneNumber(text) || '' + // Trim a `+`. + if (extractedNumber[0] === '+') { + return [extractedNumber.slice('+'.length), true] + } + return [extractedNumber] +} + +/** + * Extracts formatted phone number digits (and a `+`) from text (if there're any). + * @param {string} text + * @return {any[]} + */ +export function extractFormattedDigitsAndPlus(text) { + let [formattedDigits, hasPlus] = _extractFormattedDigitsAndPlus(text) + // If the extracted phone number part + // can possibly be a part of some valid phone number + // then parse phone number characters from a formatted phone number. + if (!VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN.test(formattedDigits)) { + formattedDigits = '' + } + return [formattedDigits, hasPlus] +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeState.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeState.js new file mode 100644 index 00000000..c5bdb808 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/AsYouTypeState.js @@ -0,0 +1,88 @@ +export default class AsYouTypeState { + constructor({ onCountryChange, onCallingCodeChange }) { + this.onCountryChange = onCountryChange + this.onCallingCodeChange = onCallingCodeChange + } + + reset(defaultCountry, defaultCallingCode) { + this.international = false + this.IDDPrefix = undefined + this.missingPlus = undefined + this.callingCode = undefined + this.digits = '' + this.resetNationalSignificantNumber() + this.initCountryAndCallingCode(defaultCountry, defaultCallingCode) + } + + resetNationalSignificantNumber() { + this.nationalSignificantNumber = this.getNationalDigits() + this.nationalSignificantNumberMatchesInput = true + this.nationalPrefix = undefined + this.carrierCode = undefined + this.complexPrefixBeforeNationalSignificantNumber = undefined + } + + update(properties) { + for (const key of Object.keys(properties)) { + this[key] = properties[key] + } + } + + initCountryAndCallingCode(country, callingCode) { + this.setCountry(country) + this.setCallingCode(callingCode) + } + + setCountry(country) { + this.country = country + this.onCountryChange(country) + } + + setCallingCode(callingCode) { + this.callingCode = callingCode + this.onCallingCodeChange(callingCode, this.country) + } + + startInternationalNumber(country, callingCode) { + // Prepend the `+` to parsed input. + this.international = true + // If a default country was set then reset it + // because an explicitly international phone + // number is being entered. + this.initCountryAndCallingCode(country, callingCode) + } + + appendDigits(nextDigits) { + this.digits += nextDigits + } + + appendNationalSignificantNumberDigits(nextDigits) { + this.nationalSignificantNumber += nextDigits + } + + /** + * Returns the part of `this.digits` that corresponds to the national number. + * Basically, all digits that have been input by the user, except for the + * international prefix and the country calling code part + * (if the number is an international one). + * @return {string} + */ + getNationalDigits() { + if (this.international) { + return this.digits.slice( + (this.IDDPrefix ? this.IDDPrefix.length : 0) + + (this.callingCode ? this.callingCode.length : 0) + ) + } + return this.digits + } + + getDigitsWithoutInternationalPrefix() { + if (this.international) { + if (this.IDDPrefix) { + return this.digits.slice(this.IDDPrefix.length) + } + } + return this.digits + } +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/ParseError.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/ParseError.js new file mode 100644 index 00000000..fa92f02c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/ParseError.js @@ -0,0 +1,14 @@ +// https://stackoverflow.com/a/46971044/970769 +// "Breaking changes in Typescript 2.1" +// "Extending built-ins like Error, Array, and Map may no longer work." +// "As a recommendation, you can manually adjust the prototype immediately after any super(...) calls." +// https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work +export default class ParseError extends Error { + constructor(code) { + super(code) + // Set the prototype explicitly. + // Any subclass of FooError will have to manually set the prototype as well. + Object.setPrototypeOf(this, ParseError.prototype) + this.name = this.constructor.name + } +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/PhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/PhoneNumber.js new file mode 100644 index 00000000..ea933783 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/PhoneNumber.js @@ -0,0 +1,95 @@ +import Metadata from './metadata.js' +import isPossibleNumber from './isPossibleNumber_.js' +import isValidNumber from './validate_.js' +import isValidNumberForRegion from './isValidNumberForRegion_.js' +import getNumberType from './helpers/getNumberType.js' +import formatNumber from './format_.js' + +const USE_NON_GEOGRAPHIC_COUNTRY_CODE = false + +export default class PhoneNumber { + constructor(countryCallingCode, nationalNumber, metadata) { + if (!countryCallingCode) { + throw new TypeError('`country` or `countryCallingCode` not passed') + } + if (!nationalNumber) { + throw new TypeError('`nationalNumber` not passed') + } + if (!metadata) { + throw new TypeError('`metadata` not passed') + } + const _metadata = new Metadata(metadata) + // If country code is passed then derive `countryCallingCode` from it. + // Also store the country code as `.country`. + if (isCountryCode(countryCallingCode)) { + this.country = countryCallingCode + _metadata.country(countryCallingCode) + countryCallingCode = _metadata.countryCallingCode() + } else { + /* istanbul ignore if */ + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + if (_metadata.isNonGeographicCallingCode(countryCallingCode)) { + this.country = '001' + } + } + } + this.countryCallingCode = countryCallingCode + this.nationalNumber = nationalNumber + this.number = '+' + this.countryCallingCode + this.nationalNumber + this.metadata = metadata + } + + setExt(ext) { + this.ext = ext + } + + isPossible() { + return isPossibleNumber(this, { v2: true }, this.metadata) + } + + isValid() { + return isValidNumber(this, { v2: true }, this.metadata) + } + + isNonGeographic() { + const metadata = new Metadata(this.metadata) + return metadata.isNonGeographicCallingCode(this.countryCallingCode) + } + + isEqual(phoneNumber) { + return this.number === phoneNumber.number && this.ext === phoneNumber.ext + } + + // // Is just an alias for `this.isValid() && this.country === country`. + // // https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion + // isValidForRegion(country) { + // return isValidNumberForRegion(this, country, { v2: true }, this.metadata) + // } + + getType() { + return getNumberType(this, { v2: true }, this.metadata) + } + + format(format, options) { + return formatNumber( + this, + format, + options ? { ...options, v2: true } : { v2: true }, + this.metadata + ) + } + + formatNational(options) { + return this.format('NATIONAL', options) + } + + formatInternational(options) { + return this.format('INTERNATIONAL', options) + } + + getURI(options) { + return this.format('RFC3966', options) + } +} + +const isCountryCode = (value) => /^[A-Z]{2}$/.test(value) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/PhoneNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/PhoneNumber.test.js new file mode 100644 index 00000000..23c6ee91 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/PhoneNumber.test.js @@ -0,0 +1,44 @@ +import metadata from '../metadata.min.json' assert { type: 'json' } +import PhoneNumber from './PhoneNumber.js' + +describe('PhoneNumber', () => { + it('should validate constructor arguments', () => { + expect(() => new PhoneNumber()).to.throw('`countryCallingCode` not passed') + expect(() => new PhoneNumber('7')).to.throw('`nationalNumber` not passed') + expect(() => new PhoneNumber('7', '8005553535')).to.throw('`metadata` not passed') + }) + + it('should accept country code argument', () => { + const phoneNumber = new PhoneNumber('RU', '8005553535', metadata) + phoneNumber.countryCallingCode.should.equal('7') + phoneNumber.country.should.equal('RU') + phoneNumber.number.should.equal('+78005553535') + }) + + it('should format number with options', () => { + const phoneNumber = new PhoneNumber('7', '8005553535', metadata) + phoneNumber.ext = '123' + phoneNumber.format('NATIONAL', { + formatExtension: (number, extension) => `${number} доб. ${extension}` + }) + .should.equal('8 (800) 555-35-35 доб. 123') + }) + + it('should compare phone numbers', () => { + new PhoneNumber('RU', '8005553535', metadata).isEqual(new PhoneNumber('RU', '8005553535', metadata)).should.equal(true) + new PhoneNumber('RU', '8005553535', metadata).isEqual(new PhoneNumber('7', '8005553535', metadata)).should.equal(true) + new PhoneNumber('RU', '8005553535', metadata).isEqual(new PhoneNumber('RU', '8005553536', metadata)).should.equal(false) + }) + + it('should tell if a number is non-geographic', () => { + new PhoneNumber('7', '8005553535', metadata).isNonGeographic().should.equal(false) + new PhoneNumber('870', '773111632', metadata).isNonGeographic().should.equal(true) + }) + + it('should allow setting extension', () => { + const phoneNumber = new PhoneNumber('1', '2133734253', metadata) + phoneNumber.setExt('1234') + phoneNumber.ext.should.equal('1234') + phoneNumber.formatNational().should.equal('(213) 373-4253 ext. 1234') + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/PhoneNumberMatcher.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/PhoneNumberMatcher.js new file mode 100644 index 00000000..cae42bf6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/PhoneNumberMatcher.js @@ -0,0 +1,394 @@ +/** + * A port of Google's `PhoneNumberMatcher.java`. + * https://github.com/googlei18n/libphonenumber/blob/master/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberMatcher.java + * Date: 08.03.2018. + */ + +import PhoneNumber from './PhoneNumber.js' + +import { + MAX_LENGTH_FOR_NSN, + MAX_LENGTH_COUNTRY_CODE, + VALID_PUNCTUATION +} from './constants.js' + +import createExtensionPattern from './helpers/extension/createExtensionPattern.js' + +import RegExpCache from './findNumbers/RegExpCache.js' + +import { + limit, + trimAfterFirstMatch +} from './findNumbers/util.js' + +import { + _pL, + _pN, + pZ, + PZ, + pNd +} from './findNumbers/utf-8.js' + +import Leniency from './findNumbers/Leniency.js' +import parsePreCandidate from './findNumbers/parsePreCandidate.js' +import isValidPreCandidate from './findNumbers/isValidPreCandidate.js' +import isValidCandidate, { LEAD_CLASS } from './findNumbers/isValidCandidate.js' + +import { isSupportedCountry } from './metadata.js' + +import parseNumber from './parse_.js' + +const EXTN_PATTERNS_FOR_MATCHING = createExtensionPattern('matching') + +/** + * Patterns used to extract phone numbers from a larger phone-number-like pattern. These are + * ordered according to specificity. For example, white-space is last since that is frequently + * used in numbers, not just to separate two numbers. We have separate patterns since we don't + * want to break up the phone-number-like text on more than one different kind of symbol at one + * time, although symbols of the same type (e.g. space) can be safely grouped together. + * + * Note that if there is a match, we will always check any text found up to the first match as + * well. + */ +const INNER_MATCHES = +[ + // Breaks on the slash - e.g. "651-234-2345/332-445-1234" + '\\/+(.*)/', + + // Note that the bracket here is inside the capturing group, since we consider it part of the + // phone number. Will match a pattern like "(650) 223 3345 (754) 223 3321". + '(\\([^(]*)', + + // Breaks on a hyphen - e.g. "12345 - 332-445-1234 is my number." + // We require a space on either side of the hyphen for it to be considered a separator. + `(?:${pZ}-|-${pZ})${pZ}*(.+)`, + + // Various types of wide hyphens. Note we have decided not to enforce a space here, since it's + // possible that it's supposed to be used to break two numbers without spaces, and we haven't + // seen many instances of it used within a number. + `[\u2012-\u2015\uFF0D]${pZ}*(.+)`, + + // Breaks on a full stop - e.g. "12345. 332-445-1234 is my number." + `\\.+${pZ}*([^.]+)`, + + // Breaks on space - e.g. "3324451234 8002341234" + `${pZ}+(${PZ}+)` +] + +// Limit on the number of leading (plus) characters. +const leadLimit = limit(0, 2) + +// Limit on the number of consecutive punctuation characters. +const punctuationLimit = limit(0, 4) + +/* The maximum number of digits allowed in a digit-separated block. As we allow all digits in a + * single block, set high enough to accommodate the entire national number and the international + * country code. */ +const digitBlockLimit = MAX_LENGTH_FOR_NSN + MAX_LENGTH_COUNTRY_CODE + +// Limit on the number of blocks separated by punctuation. +// Uses digitBlockLimit since some formats use spaces to separate each digit. +const blockLimit = limit(0, digitBlockLimit) + +/* A punctuation sequence allowing white space. */ +const punctuation = `[${VALID_PUNCTUATION}]` + punctuationLimit + +// A digits block without punctuation. +const digitSequence = pNd + limit(1, digitBlockLimit) + +/** + * Phone number pattern allowing optional punctuation. + * The phone number pattern used by `find()`, similar to + * VALID_PHONE_NUMBER, but with the following differences: + *

    + *
  • All captures are limited in order to place an upper bound to the text matched by the + * pattern. + *
      + *
    • Leading punctuation / plus signs are limited. + *
    • Consecutive occurrences of punctuation are limited. + *
    • Number of digits is limited. + *
    + *
  • No whitespace is allowed at the start or end. + *
  • No alpha digits (vanity numbers such as 1-800-SIX-FLAGS) are currently supported. + *
+ */ +const PATTERN = '(?:' + LEAD_CLASS + punctuation + ')' + leadLimit + + digitSequence + '(?:' + punctuation + digitSequence + ')' + blockLimit + + '(?:' + EXTN_PATTERNS_FOR_MATCHING + ')?' + +// Regular expression of trailing characters that we want to remove. +// We remove all characters that are not alpha or numerical characters. +// The hash character is retained here, as it may signify +// the previous block was an extension. +// +// // Don't know what does '&&' mean here. +// const UNWANTED_END_CHAR_PATTERN = new RegExp(`[[\\P{N}&&\\P{L}]&&[^#]]+$`) +// +const UNWANTED_END_CHAR_PATTERN = new RegExp(`[^${_pN}${_pL}#]+$`) + +const NON_DIGITS_PATTERN = /(\D+)/ + +const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1 + +/** + * A stateful class that finds and extracts telephone numbers from {@linkplain CharSequence text}. + * Instances can be created using the {@linkplain PhoneNumberUtil#findNumbers factory methods} in + * {@link PhoneNumberUtil}. + * + *

Vanity numbers (phone numbers using alphabetic digits such as 1-800-SIX-FLAGS are + * not found. + * + *

This class is not thread-safe. + */ +export default class PhoneNumberMatcher +{ + /** + * Creates a new instance. See the factory methods in {@link PhoneNumberUtil} on how to obtain a + * new instance. + * + * @param util the phone number util to use + * @param text the character sequence that we will search, null for no text + * @param country the country to assume for phone numbers not written in international format + * (with a leading plus, or with the international dialing prefix of the specified region). + * May be null or "ZZ" if only numbers with a leading plus should be + * considered. + * @param leniency the leniency to use when evaluating candidate phone numbers + * @param maxTries the maximum number of invalid numbers to try before giving up on the text. + * This is to cover degenerate cases where the text has a lot of false positives in it. Must + * be {@code >= 0}. + */ + constructor(text = '', options = {}, metadata) + { + options = { + ...options, + defaultCallingCode: options.defaultCallingCode, + defaultCountry: options.defaultCountry && isSupportedCountry(options.defaultCountry, metadata) ? options.defaultCountry : undefined, + leniency: options.leniency || options.extended ? 'POSSIBLE' : 'VALID', + maxTries: options.maxTries || MAX_SAFE_INTEGER + } + + if (!options.leniency) { + throw new TypeError('`Leniency` not supplied') + } + + if (options.maxTries < 0) { + throw new TypeError('`maxTries` not supplied') + } + + this.text = text + this.options = options + this.metadata = metadata + + /** The degree of validation requested. */ + this.leniency = Leniency[options.leniency] + + if (!this.leniency) { + throw new TypeError(`Unknown leniency: ${options.leniency}.`) + } + + /** The maximum number of retries after matching an invalid number. */ + this.maxTries = options.maxTries + + this.PATTERN = new RegExp(PATTERN, 'ig') + + + /** The iteration tristate. */ + this.state = 'NOT_READY' + + /** The next index to start searching at. Undefined in {@link State#DONE}. */ + this.searchIndex = 0 + + // A cache for frequently used country-specific regular expressions. Set to 32 to cover ~2-3 + // countries being used for the same doc with ~10 patterns for each country. Some pages will have + // a lot more countries in use, but typically fewer numbers for each so expanding the cache for + // that use-case won't have a lot of benefit. + this.regExpCache = new RegExpCache(32) + } + + /** + * Attempts to find the next subsequence in the searched sequence on or after {@code searchIndex} + * that represents a phone number. Returns the next match, null if none was found. + * + * @param index the search index to start searching at + * @return the phone number match found, null if none can be found + */ + find() { + // // Reset the regular expression. + // this.PATTERN.lastIndex = index + + let matches + while ((this.maxTries > 0) && (matches = this.PATTERN.exec(this.text)) !== null) { + let candidate = matches[0] + const offset = matches.index + + candidate = parsePreCandidate(candidate) + + if (isValidPreCandidate(candidate, offset, this.text)) { + const match = + // Try to come up with a valid match given the entire candidate. + this.parseAndVerify(candidate, offset, this.text) + // If that failed, try to find an "inner match" - + // there might be a phone number within this candidate. + || this.extractInnerMatch(candidate, offset, this.text) + + if (match) { + if (this.options.v2) { + const phoneNumber = new PhoneNumber( + match.country || match.countryCallingCode, + match.phone, + this.metadata + ) + if (match.ext) { + phoneNumber.ext = match.ext + } + return { + startsAt: match.startsAt, + endsAt: match.endsAt, + number: phoneNumber + } + } + return match + } + } + + this.maxTries-- + } + } + + /** + * Attempts to extract a match from `substring` + * if the substring itself does not qualify as a match. + */ + extractInnerMatch(substring, offset, text) { + for (const innerMatchPattern of INNER_MATCHES) { + let isFirstMatch = true + let candidateMatch + const innerMatchRegExp = new RegExp(innerMatchPattern, 'g') + while (this.maxTries > 0 && (candidateMatch = innerMatchRegExp.exec(substring)) !== null) { + if (isFirstMatch) { + // We should handle any group before this one too. + const candidate = trimAfterFirstMatch( + UNWANTED_END_CHAR_PATTERN, + substring.slice(0, candidateMatch.index) + ) + + const match = this.parseAndVerify(candidate, offset, text) + + if (match) { + return match + } + + this.maxTries-- + isFirstMatch = false + } + + const candidate = trimAfterFirstMatch(UNWANTED_END_CHAR_PATTERN, candidateMatch[1]) + + // Java code does `groupMatcher.start(1)` here, + // but there's no way in javascript to get a `candidate` start index, + // therefore resort to using this kind of an approximation. + // (`groupMatcher` is called `candidateInSubstringMatch` in this javascript port) + // https://stackoverflow.com/questions/15934353/get-index-of-each-capture-in-a-javascript-regex + const candidateIndexGuess = substring.indexOf(candidate, candidateMatch.index) + + const match = this.parseAndVerify(candidate, offset + candidateIndexGuess, text) + if (match) { + return match + } + + this.maxTries-- + } + } + } + + /** + * Parses a phone number from the `candidate` using `parseNumber` and + * verifies it matches the requested `leniency`. If parsing and verification succeed, + * a corresponding `PhoneNumberMatch` is returned, otherwise this method returns `null`. + * + * @param candidate the candidate match + * @param offset the offset of {@code candidate} within {@link #text} + * @return the parsed and validated phone number match, or null + */ + parseAndVerify(candidate, offset, text) { + if (!isValidCandidate(candidate, offset, text, this.options.leniency)) { + return + } + + const number = parseNumber( + candidate, { + extended: true, + defaultCountry: this.options.defaultCountry, + defaultCallingCode: this.options.defaultCallingCode + }, + this.metadata + ) + + if (!number.possible) { + return + } + + if (this.leniency(number, candidate, this.metadata, this.regExpCache)) { + // // We used parseAndKeepRawInput to create this number, + // // but for now we don't return the extra values parsed. + // // TODO: stop clearing all values here and switch all users over + // // to using rawInput() rather than the rawString() of PhoneNumberMatch. + // number.clearCountryCodeSource() + // number.clearRawInput() + // number.clearPreferredDomesticCarrierCode() + + const result = { + startsAt: offset, + endsAt: offset + candidate.length, + phone: number.phone + } + + if (number.country && number.country !== '001') { + result.country = number.country + } else { + result.countryCallingCode = number.countryCallingCode + } + + if (number.ext) { + result.ext = number.ext + } + + return result + } + } + + hasNext() + { + if (this.state === 'NOT_READY') + { + this.lastMatch = this.find() // (this.searchIndex) + + if (this.lastMatch) + { + // this.searchIndex = this.lastMatch.endsAt + this.state = 'READY' + } + else + { + this.state = 'DONE' + } + } + + return this.state === 'READY' + } + + next() + { + // Check the state and find the next match as a side-effect if necessary. + if (!this.hasNext()) + { + throw new Error('No next element') + } + + // Don't retain that memory any longer than necessary. + const result = this.lastMatch + this.lastMatch = null + this.state = 'NOT_READY' + return result + } +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/PhoneNumberMatcher.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/PhoneNumberMatcher.test.js new file mode 100644 index 00000000..ab98688f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/PhoneNumberMatcher.test.js @@ -0,0 +1,74 @@ +import PhoneNumberMatcher from './PhoneNumberMatcher.js' +import metadata from '../metadata.min.json' assert { type: 'json' } + +function test(text, defaultCountry, expectedNumbers) { + if (typeof expectedNumbers === 'string') { + expectedNumbers = [{ + nationalNumber: expectedNumbers + }] + } + const matcher = new PhoneNumberMatcher(text, { defaultCountry, v2: true }, metadata) + while (matcher.hasNext()) { + const number = matcher.next() + const phoneNumber = expectedNumbers.shift() + if (phoneNumber.startsAt !== undefined) { + number.startsAt.should.equal(phoneNumber.startsAt) + } + if (phoneNumber.endsAt !== undefined) { + number.endsAt.should.equal(phoneNumber.endsAt) + } + number.number.country.should.equal(phoneNumber.country || defaultCountry) + number.number.nationalNumber.should.equal(phoneNumber.nationalNumber) + } + expectedNumbers.length.should.equal(0) +} + +describe('PhoneNumberMatcher', () => { + it('should find phone numbers', () => { + test( + 'The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', + 'US', + [{ + country: 'RU', + nationalNumber: '8005553535', + startsAt: 14, + endsAt: 32 + }, { + country: 'US', + nationalNumber: '2133734253', + startsAt: 41, + endsAt: 55 + }] + ) + }) + + it('should find phone numbers from Mexico', () => { + // Test parsing fixed-line numbers of Mexico. + test('+52 (449)978-0001', 'MX', '4499780001') + test('01 (449)978-0001', 'MX', '4499780001') + test('(449)978-0001', 'MX', '4499780001') + // Test parsing mobile numbers of Mexico. + test('+52 1 33 1234-5678', 'MX', '3312345678') + test('044 (33) 1234-5678', 'MX', '3312345678') + test('045 33 1234-5678', 'MX', '3312345678') + }) + + it('should find phone numbers from Argentina', () => { + // Test parsing mobile numbers of Argentina. + test('+54 9 343 555 1212', 'AR', '93435551212') + test('0343 15-555-1212', 'AR', '93435551212') + + test('+54 9 3715 65 4320', 'AR', '93715654320') + test('03715 15 65 4320', 'AR', '93715654320') + + // Test parsing fixed-line numbers of Argentina. + test('+54 11 3797 0000', 'AR', '1137970000') + test('011 3797 0000', 'AR', '1137970000') + + test('+54 3715 65 4321', 'AR', '3715654321') + test('03715 65 4321', 'AR', '3715654321') + + test('+54 23 1234 0000', 'AR', '2312340000') + test('023 1234 0000', 'AR', '2312340000') + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/constants.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/constants.js new file mode 100644 index 00000000..5c1f1fc1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/constants.js @@ -0,0 +1,31 @@ +// The minimum length of the national significant number. +export const MIN_LENGTH_FOR_NSN = 2 + +// The ITU says the maximum length should be 15, +// but one can find longer numbers in Germany. +export const MAX_LENGTH_FOR_NSN = 17 + +// The maximum length of the country calling code. +export const MAX_LENGTH_COUNTRY_CODE = 3 + +// Digits accepted in phone numbers +// (ascii, fullwidth, arabic-indic, and eastern arabic digits). +export const VALID_DIGITS = '0-9\uFF10-\uFF19\u0660-\u0669\u06F0-\u06F9' + +// `DASHES` will be right after the opening square bracket of the "character class" +const DASHES = '-\u2010-\u2015\u2212\u30FC\uFF0D' +const SLASHES = '\uFF0F/' +const DOTS = '\uFF0E.' +export const WHITESPACE = ' \u00A0\u00AD\u200B\u2060\u3000' +const BRACKETS = '()\uFF08\uFF09\uFF3B\uFF3D\\[\\]' +// export const OPENING_BRACKETS = '(\uFF08\uFF3B\\\[' +const TILDES = '~\u2053\u223C\uFF5E' + +// Regular expression of acceptable punctuation found in phone numbers. This +// excludes punctuation found as a leading character only. This consists of dash +// characters, white space characters, full stops, slashes, square brackets, +// parentheses and tildes. Full-width variants are also present. +export const VALID_PUNCTUATION = `${DASHES}${SLASHES}${DOTS}${WHITESPACE}${BRACKETS}${TILDES}` + +export const PLUS_CHARS = '+\uFF0B' +// const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+') \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers.js new file mode 100644 index 00000000..f57cf400 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers.js @@ -0,0 +1,7 @@ +import _findNumbers from './findNumbers_.js' +import { normalizeArguments } from './parsePhoneNumber.js' + +export default function findNumbers() { + const { text, options, metadata } = normalizeArguments(arguments) + return _findNumbers(text, options, metadata) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers.test.js new file mode 100644 index 00000000..80f92c36 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers.test.js @@ -0,0 +1,204 @@ +import findNumbers from './findNumbers.js' +import metadata from '../metadata.max.json' assert { type: 'json' } + +describe('findNumbers', () => { + it('should find numbers', () => { + findNumbers('2133734253', 'US', metadata).should.deep.equal([{ + phone : '2133734253', + country : 'US', + startsAt : 0, + endsAt : 10 + }]) + + findNumbers('(213) 373-4253', 'US', metadata).should.deep.equal([{ + phone : '2133734253', + country : 'US', + startsAt : 0, + endsAt : 14 + }]) + + findNumbers('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', metadata).should.deep.equal([{ + phone : '8005553535', + country : 'RU', + startsAt : 14, + endsAt : 32 + }, { + phone : '2133734253', + country : 'US', + startsAt : 41, + endsAt : 55 + }]) + + // Opening parenthesis issue. + // https://github.com/catamphetamine/libphonenumber-js/issues/252 + findNumbers('The number is +7 (800) 555-35-35 and not (213) 373-4253 (that\'s not even in the same country!) as written in the document.', 'US', metadata).should.deep.equal([{ + phone : '8005553535', + country : 'RU', + startsAt : 14, + endsAt : 32 + }, { + phone : '2133734253', + country : 'US', + startsAt : 41, + endsAt : 55 + }]) + + // No default country. + findNumbers('The number is +7 (800) 555-35-35 as written in the document.', metadata).should.deep.equal([{ + phone : '8005553535', + country : 'RU', + startsAt : 14, + endsAt : 32 + }]) + + // Passing `options` and default country. + findNumbers('The number is +7 (800) 555-35-35 as written in the document.', 'US', { leniency: 'VALID' }, metadata).should.deep.equal([{ + phone : '8005553535', + country : 'RU', + startsAt : 14, + endsAt : 32 + }]) + + // Passing `options`. + findNumbers('The number is +7 (800) 555-35-35 as written in the document.', { leniency: 'VALID' }, metadata).should.deep.equal([{ + phone : '8005553535', + country : 'RU', + startsAt : 14, + endsAt : 32 + }]) + + // Not a phone number and a phone number. + findNumbers('Digits 12 are not a number, but +7 (800) 555-35-35 is.', { leniency: 'VALID' }, metadata).should.deep.equal([{ + phone : '8005553535', + country : 'RU', + startsAt : 32, + endsAt : 50 + }]) + + // Phone number extension. + findNumbers('Date 02/17/2018 is not a number, but +7 (800) 555-35-35 ext. 123 is.', { leniency: 'VALID' }, metadata).should.deep.equal([{ + phone : '8005553535', + country : 'RU', + ext : '123', + startsAt : 37, + endsAt : 64 + }]) + }) + + it('should find numbers (v2)', () => { + const phoneNumbers = findNumbers('The number is +7 (800) 555-35-35 ext. 1234 and not (213) 373-4253 as written in the document.', 'US', { v2: true }, metadata) + + phoneNumbers.length.should.equal(2) + + phoneNumbers[0].startsAt.should.equal(14) + phoneNumbers[0].endsAt.should.equal(42) + + phoneNumbers[0].number.number.should.equal('+78005553535') + phoneNumbers[0].number.nationalNumber.should.equal('8005553535') + phoneNumbers[0].number.country.should.equal('RU') + phoneNumbers[0].number.countryCallingCode.should.equal('7') + phoneNumbers[0].number.ext.should.equal('1234') + + phoneNumbers[1].startsAt.should.equal(51) + phoneNumbers[1].endsAt.should.equal(65) + + phoneNumbers[1].number.number.should.equal('+12133734253') + phoneNumbers[1].number.nationalNumber.should.equal('2133734253') + phoneNumbers[1].number.country.should.equal('US') + phoneNumbers[1].number.countryCallingCode.should.equal('1') + }) + + it('shouldn\'t find non-valid numbers', () => { + // Not a valid phone number for US. + findNumbers('1111111111', 'US', metadata).should.deep.equal([]) + }) + + it('should find non-European digits', () => { + // E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`. + findNumbers('العَرَبِيَّة‎ +٤٤٣٣٣٣٣٣٣٣٣٣عَرَبِيّ‎', metadata).should.deep.equal([{ + country : 'GB', + phone : '3333333333', + startsAt : 14, + endsAt : 27 + }]) + }) + + it('should work in edge cases', () => { + let thrower + + // No input + findNumbers('', metadata).should.deep.equal([]) + + // // No country metadata for this `require` country code + // thrower = () => findNumbers('123', 'ZZ', metadata) + // thrower.should.throw('Unknown country') + + // Numerical `value` + thrower = () => findNumbers(2141111111, 'US') + thrower.should.throw('A text for parsing must be a string.') + + // // No metadata + // thrower = () => findNumbers('') + // thrower.should.throw('`metadata` argument not passed') + + // No metadata, no default country, no phone numbers. + findNumbers('').should.deep.equal([]) + }) + + it('should find international numbers when passed a non-existent default country', () => { + const numbers = findNumbers('Phone: +7 (800) 555 35 35. National: 8 (800) 555-55-55', { defaultCountry: 'XX', v2: true }, metadata) + numbers.length.should.equal(1) + numbers[0].number.nationalNumber.should.equal('8005553535') + }) + + it('shouldn\'t find phone numbers which are not phone numbers', () => { + // A timestamp. + findNumbers('2012-01-02 08:00', 'US', metadata).should.deep.equal([]) + + // A valid number (not a complete timestamp). + findNumbers('2012-01-02 08', 'US', metadata).should.deep.equal([{ + country : 'US', + phone : '2012010208', + startsAt : 0, + endsAt : 13 + }]) + + // Invalid parens. + findNumbers('213(3734253', 'US', metadata).should.deep.equal([]) + + // Letters after phone number. + findNumbers('2133734253a', 'US', metadata).should.deep.equal([]) + + // Valid phone (same as the one found in the UUID below). + findNumbers('The phone number is 231354125.', 'FR', metadata).should.deep.equal([{ + country : 'FR', + phone : '231354125', + startsAt : 20, + endsAt : 29 + }]) + + // Not a phone number (part of a UUID). + // Should parse in `{ extended: true }` mode. + const possibleNumbers = findNumbers('The UUID is CA801c26f98cd16e231354125ad046e40b.', 'FR', { extended: true }, metadata) + possibleNumbers.length.should.equal(1) + possibleNumbers[0].country.should.equal('FR') + possibleNumbers[0].phone.should.equal('231354125') + + // Not a phone number (part of a UUID). + // Shouldn't parse by default. + findNumbers('The UUID is CA801c26f98cd16e231354125ad046e40b.', 'FR', metadata).should.deep.equal([]) + }) + + // https://gitlab.com/catamphetamine/libphonenumber-js/-/merge_requests/4 + it('should return correct `startsAt` and `endsAt` when matching "inner" candidates in a could-be-a-candidate substring', () => { + findNumbers('39945926 77200596 16533084', 'ID', metadata) + .should + .deep + .equal([{ + country: 'ID', + phone: '77200596', + startsAt: 9, + endsAt: 17 + }]) + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/LRUCache.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/LRUCache.js new file mode 100644 index 00000000..ff4757d6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/LRUCache.js @@ -0,0 +1,107 @@ +// https://medium.com/dsinjs/implementing-lru-cache-in-javascript-94ba6755cda9 + +class Node { + constructor(key, value, next = null, prev = null) { + this.key = key; + this.value = value; + this.next = next; + this.prev = prev; + } +} + +export default class LRUCache { + //set default limit of 10 if limit is not passed. + constructor(limit = 10) { + this.size = 0; + this.limit = limit; + this.head = null; + this.tail = null; + this.cache = {}; + } + + // Write Node to head of LinkedList + // update cache with Node key and Node reference + put(key, value){ + this.ensureLimit(); + + if(!this.head){ + this.head = this.tail = new Node(key, value); + }else{ + const node = new Node(key, value, this.head); + this.head.prev = node; + this.head = node; + } + + //Update the cache map + this.cache[key] = this.head; + this.size++; + } + + // Read from cache map and make that node as new Head of LinkedList + get(key){ + if(this.cache[key]){ + const value = this.cache[key].value; + + // node removed from it's position and cache + this.remove(key) + // write node again to the head of LinkedList to make it most recently used + this.put(key, value); + + return value; + } + + console.log(`Item not available in cache for key ${key}`); + } + + ensureLimit(){ + if(this.size === this.limit){ + this.remove(this.tail.key) + } + } + + remove(key){ + const node = this.cache[key]; + + if(node.prev !== null){ + node.prev.next = node.next; + }else{ + this.head = node.next; + } + + if(node.next !== null){ + node.next.prev = node.prev; + }else{ + this.tail = node.prev + } + + delete this.cache[key]; + this.size--; + } + + clear() { + this.head = null; + this.tail = null; + this.size = 0; + this.cache = {}; + } + + // // Invokes the callback function with every node of the chain and the index of the node. + // forEach(fn) { + // let node = this.head; + // let counter = 0; + // while (node) { + // fn(node, counter); + // node = node.next; + // counter++; + // } + // } + + // // To iterate over LRU with a 'for...of' loop + // *[Symbol.iterator]() { + // let node = this.head; + // while (node) { + // yield node; + // node = node.next; + // } + // } +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/Leniency.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/Leniency.js new file mode 100644 index 00000000..1bde64c5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/Leniency.js @@ -0,0 +1,396 @@ +import isValidNumber from '../validate_.js' +import parseDigits from '../helpers/parseDigits.js' + +import { + startsWith, + endsWith +} from './util.js' + +/** + * Leniency when finding potential phone numbers in text segments + * The levels here are ordered in increasing strictness. + */ +export default +{ + /** + * Phone numbers accepted are "possible", but not necessarily "valid". + */ + POSSIBLE(number, candidate, metadata) + { + return true + }, + + /** + * Phone numbers accepted are "possible" and "valid". + * Numbers written in national format must have their national-prefix + * present if it is usually written for a number of this type. + */ + VALID(number, candidate, metadata) + { + if (!isValidNumber(number, undefined, metadata) || + !containsOnlyValidXChars(number, candidate.toString(), metadata)) + { + return false + } + + // Skipped for simplicity. + // return isNationalPrefixPresentIfRequired(number, metadata) + return true + }, + + /** + * Phone numbers accepted are "valid" and + * are grouped in a possible way for this locale. For example, a US number written as + * "65 02 53 00 00" and "650253 0000" are not accepted at this leniency level, whereas + * "650 253 0000", "650 2530000" or "6502530000" are. + * Numbers with more than one '/' symbol in the national significant number + * are also dropped at this level. + * + * Warning: This level might result in lower coverage especially for regions outside of + * country code "+1". If you are not sure about which level to use, + * email the discussion group libphonenumber-discuss@googlegroups.com. + */ + STRICT_GROUPING(number, candidate, metadata, regExpCache) + { + const candidateString = candidate.toString() + + if (!isValidNumber(number, undefined, metadata) + || !containsOnlyValidXChars(number, candidateString, metadata) + || containsMoreThanOneSlashInNationalNumber(number, candidateString) + || !isNationalPrefixPresentIfRequired(number, metadata)) + { + return false + } + + return checkNumberGroupingIsValid + ( + number, + candidate, + metadata, + allNumberGroupsRemainGrouped, + regExpCache + ) + }, + + /** + * Phone numbers accepted are {@linkplain PhoneNumberUtil#isValidNumber(PhoneNumber) valid} and + * are grouped in the same way that we would have formatted it, or as a single block. For + * example, a US number written as "650 2530000" is not accepted at this leniency level, whereas + * "650 253 0000" or "6502530000" are. + * Numbers with more than one '/' symbol are also dropped at this level. + *

+ * Warning: This level might result in lower coverage especially for regions outside of country + * code "+1". If you are not sure about which level to use, email the discussion group + * libphonenumber-discuss@googlegroups.com. + */ + EXACT_GROUPING(number, candidate, metadata, regExpCache) + { + const candidateString = candidate.toString() + + if (!isValidNumber(number, undefined, metadata) + || !containsOnlyValidXChars(number, candidateString, metadata) + || containsMoreThanOneSlashInNationalNumber(number, candidateString) + || !isNationalPrefixPresentIfRequired(number, metadata)) + { + return false + } + + return checkNumberGroupingIsValid + ( + number, + candidate, + metadata, + allNumberGroupsAreExactlyPresent, + regExpCache + ) + } +} + +function containsOnlyValidXChars(number, candidate, metadata) +{ + // The characters 'x' and 'X' can be (1) a carrier code, in which case they always precede the + // national significant number or (2) an extension sign, in which case they always precede the + // extension number. We assume a carrier code is more than 1 digit, so the first case has to + // have more than 1 consecutive 'x' or 'X', whereas the second case can only have exactly 1 'x' + // or 'X'. We ignore the character if it appears as the last character of the string. + for (let index = 0; index < candidate.length - 1; index++) + { + const charAtIndex = candidate.charAt(index) + + if (charAtIndex === 'x' || charAtIndex === 'X') + { + const charAtNextIndex = candidate.charAt(index + 1) + + if (charAtNextIndex === 'x' || charAtNextIndex === 'X') + { + // This is the carrier code case, in which the 'X's always precede the national + // significant number. + index++ + if (util.isNumberMatch(number, candidate.substring(index)) != MatchType.NSN_MATCH) + { + return false + } + // This is the extension sign case, in which the 'x' or 'X' should always precede the + // extension number. + } + else if (parseDigits(candidate.substring(index)) !== number.ext) + { + return false + } + } + } + + return true +} + +function isNationalPrefixPresentIfRequired(number, _metadata) +{ + // First, check how we deduced the country code. If it was written in international format, then + // the national prefix is not required. + if (number.getCountryCodeSource() != 'FROM_DEFAULT_COUNTRY') + { + return true + } + + const phoneNumberRegion = util.getRegionCodeForCountryCode(number.getCountryCode()) + + const metadata = util.getMetadataForRegion(phoneNumberRegion) + if (metadata == null) + { + return true + } + + // Check if a national prefix should be present when formatting this number. + const nationalNumber = util.getNationalSignificantNumber(number) + const formatRule = util.chooseFormattingPatternForNumber(metadata.numberFormats(), nationalNumber) + + // To do this, we check that a national prefix formatting rule was present + // and that it wasn't just the first-group symbol ($1) with punctuation. + if (formatRule && formatRule.getNationalPrefixFormattingRule().length > 0) + { + if (formatRule.getNationalPrefixOptionalWhenFormatting()) + { + // The national-prefix is optional in these cases, so we don't need to check if it was + // present. + return true + } + + if (PhoneNumberUtil.formattingRuleHasFirstGroupOnly( + formatRule.getNationalPrefixFormattingRule())) + { + // National Prefix not needed for this number. + return true + } + + // Normalize the remainder. + const rawInputCopy = PhoneNumberUtil.normalizeDigitsOnly(number.getRawInput()) + + // Check if we found a national prefix and/or carrier code at the start of the raw input, and + // return the result. + return util.maybeStripNationalPrefixAndCarrierCode(rawInputCopy, metadata, null) + } + + return true +} + +export function containsMoreThanOneSlashInNationalNumber(number, candidate) +{ + const firstSlashInBodyIndex = candidate.indexOf('/') + if (firstSlashInBodyIndex < 0) + { + // No slashes, this is okay. + return false + } + + // Now look for a second one. + const secondSlashInBodyIndex = candidate.indexOf('/', firstSlashInBodyIndex + 1) + if (secondSlashInBodyIndex < 0) + { + // Only one slash, this is okay. + return false + } + + // If the first slash is after the country calling code, this is permitted. + const candidateHasCountryCode = + (number.getCountryCodeSource() === CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN + || number.getCountryCodeSource() === CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN) + + if (candidateHasCountryCode + && PhoneNumberUtil.normalizeDigitsOnly(candidate.substring(0, firstSlashInBodyIndex)) + === String(number.getCountryCode())) + { + // Any more slashes and this is illegal. + return candidate.slice(secondSlashInBodyIndex + 1).indexOf('/') >= 0 + } + + return true +} + +function checkNumberGroupingIsValid( + number, + candidate, + metadata, + checkGroups, + regExpCache +) { + const normalizedCandidate = normalizeDigits(candidate, true /* keep non-digits */) + let formattedNumberGroups = getNationalNumberGroups(metadata, number, null) + if (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) { + return true + } + + // If this didn't pass, see if there are any alternate formats that match, and try them instead. + const alternateFormats = MetadataManager.getAlternateFormatsForCountry(number.getCountryCode()) + const nationalSignificantNumber = util.getNationalSignificantNumber(number) + + if (alternateFormats) { + for (const alternateFormat of alternateFormats.numberFormats()) { + if (alternateFormat.leadingDigitsPatterns().length > 0) { + // There is only one leading digits pattern for alternate formats. + const leadingDigitsRegExp = regExpCache.getPatternForRegExp('^' + alternateFormat.leadingDigitsPatterns()[0]) + if (!leadingDigitsRegExp.test(nationalSignificantNumber)) { + // Leading digits don't match; try another one. + continue + } + } + formattedNumberGroups = getNationalNumberGroups(metadata, number, alternateFormat) + if (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) { + return true + } + } + } + + return false +} + +/** + * Helper method to get the national-number part of a number, formatted without any national + * prefix, and return it as a set of digit blocks that would be formatted together following + * standard formatting rules. + */ +function getNationalNumberGroups( + metadata, + number, + formattingPattern +) { + if (formattingPattern) { + // We format the NSN only, and split that according to the separator. + const nationalSignificantNumber = util.getNationalSignificantNumber(number) + return util.formatNsnUsingPattern(nationalSignificantNumber, + formattingPattern, 'RFC3966', metadata).split('-') + } + + // This will be in the format +CC-DG1-DG2-DGX;ext=EXT where DG1..DGX represents groups of digits. + const rfc3966Format = formatNumber(number, 'RFC3966', metadata) + + // We remove the extension part from the formatted string before splitting it into different + // groups. + let endIndex = rfc3966Format.indexOf(';') + if (endIndex < 0) { + endIndex = rfc3966Format.length + } + + // The country-code will have a '-' following it. + const startIndex = rfc3966Format.indexOf('-') + 1 + return rfc3966Format.slice(startIndex, endIndex).split('-') +} + +function allNumberGroupsAreExactlyPresent +( + metadata, + number, + normalizedCandidate, + formattedNumberGroups +) +{ + const candidateGroups = normalizedCandidate.split(NON_DIGITS_PATTERN) + + // Set this to the last group, skipping it if the number has an extension. + let candidateNumberGroupIndex = + number.hasExtension() ? candidateGroups.length - 2 : candidateGroups.length - 1 + + // First we check if the national significant number is formatted as a block. + // We use contains and not equals, since the national significant number may be present with + // a prefix such as a national number prefix, or the country code itself. + if (candidateGroups.length == 1 + || candidateGroups[candidateNumberGroupIndex].contains( + util.getNationalSignificantNumber(number))) + { + return true + } + + // Starting from the end, go through in reverse, excluding the first group, and check the + // candidate and number groups are the same. + let formattedNumberGroupIndex = (formattedNumberGroups.length - 1) + while (formattedNumberGroupIndex > 0 && candidateNumberGroupIndex >= 0) + { + if (candidateGroups[candidateNumberGroupIndex] !== formattedNumberGroups[formattedNumberGroupIndex]) + { + return false + } + formattedNumberGroupIndex-- + candidateNumberGroupIndex-- + } + + // Now check the first group. There may be a national prefix at the start, so we only check + // that the candidate group ends with the formatted number group. + return (candidateNumberGroupIndex >= 0 + && endsWith(candidateGroups[candidateNumberGroupIndex], formattedNumberGroups[0])) +} + + +function allNumberGroupsRemainGrouped +( + metadata, + number, + normalizedCandidate, + formattedNumberGroups +) +{ + let fromIndex = 0 + if (number.getCountryCodeSource() !== CountryCodeSource.FROM_DEFAULT_COUNTRY) + { + // First skip the country code if the normalized candidate contained it. + const countryCode = String(number.getCountryCode()) + fromIndex = normalizedCandidate.indexOf(countryCode) + countryCode.length() + } + + // Check each group of consecutive digits are not broken into separate groupings in the + // {@code normalizedCandidate} string. + for (let i = 0; i < formattedNumberGroups.length; i++) + { + // Fails if the substring of {@code normalizedCandidate} starting from {@code fromIndex} + // doesn't contain the consecutive digits in formattedNumberGroups[i]. + fromIndex = normalizedCandidate.indexOf(formattedNumberGroups[i], fromIndex) + if (fromIndex < 0) { + return false + } + // Moves {@code fromIndex} forward. + fromIndex += formattedNumberGroups[i].length() + if (i == 0 && fromIndex < normalizedCandidate.length()) + { + // We are at the position right after the NDC. We get the region used for formatting + // information based on the country code in the phone number, rather than the number itself, + // as we do not need to distinguish between different countries with the same country + // calling code and this is faster. + const region = util.getRegionCodeForCountryCode(number.getCountryCode()) + if (util.getNddPrefixForRegion(region, true) != null + && Character.isDigit(normalizedCandidate.charAt(fromIndex))) { + // This means there is no formatting symbol after the NDC. In this case, we only + // accept the number if there is no formatting symbol at all in the number, except + // for extensions. This is only important for countries with national prefixes. + const nationalSignificantNumber = util.getNationalSignificantNumber(number) + return startsWith + ( + normalizedCandidate.slice(fromIndex - formattedNumberGroups[i].length), + nationalSignificantNumber + ) + } + } + } + + // The check here makes sure that we haven't mistakenly already used the extension to + // match the last group of the subscriber number. Note the extension cannot have + // formatting in-between digits. + return normalizedCandidate.slice(fromIndex).contains(number.getExtension()) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/Leniency.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/Leniency.test.js new file mode 100644 index 00000000..bb756f85 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/Leniency.test.js @@ -0,0 +1,35 @@ +/* +import { containsMoreThanOneSlashInNationalNumber } from './Leniency.js' + +describe('Leniency', () => { + it('testContainsMoreThanOneSlashInNationalNumber', () => { + // A date should return true. + number.setCountryCode(1) + number.setCountryCodeSource(CountryCodeSource.FROM_DEFAULT_COUNTRY) + containsMoreThanOneSlashInNationalNumber(number, '1/05/2013').should.equal(true) + + // Here, the country code source thinks it started with a country calling code, but this is not + // the same as the part before the slash, so it's still true. + number.setCountryCode(274) + number.setCountryCodeSource(CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN) + containsMoreThanOneSlashInNationalNumber(number, '27/4/2013').should.equal(true) + + // Now it should be false, because the first slash is after the country calling code. + number.setCountryCode(49) + number.setCountryCodeSource(CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN) + containsMoreThanOneSlashInNationalNumber(number, '49/69/2013').should.equal(false) + + number.setCountryCode(49) + number.setCountryCodeSource(CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN) + containsMoreThanOneSlashInNationalNumber(number, '+49/69/2013').should.equal(false) + containsMoreThanOneSlashInNationalNumber(number, '+ 49/69/2013').should.equal(false) + containsMoreThanOneSlashInNationalNumber(number, '+ 49/69/20/13').should.equal(true) + + // Here, the first group is not assumed to be the country calling code, even though it is the + // same as it, so this should return true. + number.setCountryCode(49) + number.setCountryCodeSource(CountryCodeSource.FROM_DEFAULT_COUNTRY) + containsMoreThanOneSlashInNationalNumber(number, '49/69/2013').should.equal(true) + }) +}) +*/ \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/RegExpCache.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/RegExpCache.js new file mode 100644 index 00000000..7c96ad1f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/RegExpCache.js @@ -0,0 +1,20 @@ +import LRUCache from './LRUCache.js' + +// A cache for frequently used country-specific regular expressions. Set to 32 to cover ~2-3 +// countries being used for the same doc with ~10 patterns for each country. Some pages will have +// a lot more countries in use, but typically fewer numbers for each so expanding the cache for +// that use-case won't have a lot of benefit. +export default class RegExpCache { + constructor(size) { + this.cache = new LRUCache(size) + } + + getPatternForRegExp(pattern) { + let regExp = this.cache.get(pattern) + if (!regExp) { + regExp = new RegExp('^' + pattern) + this.cache.put(pattern, regExp) + } + return regExp + } +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/isValidCandidate.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/isValidCandidate.js new file mode 100644 index 00000000..abc94305 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/isValidCandidate.js @@ -0,0 +1,86 @@ +// Copy-pasted from `PhoneNumberMatcher.js`. + +import { PLUS_CHARS } from '../constants.js' +import { limit } from './util.js' + +import { + isLatinLetter, + isInvalidPunctuationSymbol +} from './utf-8.js' + +const OPENING_PARENS = '(\\[\uFF08\uFF3B' +const CLOSING_PARENS = ')\\]\uFF09\uFF3D' +const NON_PARENS = `[^${OPENING_PARENS}${CLOSING_PARENS}]` + +export const LEAD_CLASS = `[${OPENING_PARENS}${PLUS_CHARS}]` + +// Punctuation that may be at the start of a phone number - brackets and plus signs. +const LEAD_CLASS_LEADING = new RegExp('^' + LEAD_CLASS) + +// Limit on the number of pairs of brackets in a phone number. +const BRACKET_PAIR_LIMIT = limit(0, 3) + +/** + * Pattern to check that brackets match. Opening brackets should be closed within a phone number. + * This also checks that there is something inside the brackets. Having no brackets at all is also + * fine. + * + * An opening bracket at the beginning may not be closed, but subsequent ones should be. It's + * also possible that the leading bracket was dropped, so we shouldn't be surprised if we see a + * closing bracket first. We limit the sets of brackets in a phone number to four. + */ +const MATCHING_BRACKETS_ENTIRE = new RegExp +( + '^' + + "(?:[" + OPENING_PARENS + "])?" + "(?:" + NON_PARENS + "+" + "[" + CLOSING_PARENS + "])?" + + NON_PARENS + "+" + + "(?:[" + OPENING_PARENS + "]" + NON_PARENS + "+[" + CLOSING_PARENS + "])" + BRACKET_PAIR_LIMIT + + NON_PARENS + "*" + + '$' +) + +/** + * Matches strings that look like publication pages. Example: + *

Computing Complete Answers to Queries in the Presence of Limited Access Patterns.
+ * Chen Li. VLDB J. 12(3): 211-227 (2003).
+ * + * The string "211-227 (2003)" is not a telephone number. + */ +const PUB_PAGES = /\d{1,5}-+\d{1,5}\s{0,4}\(\d{1,4}/ + +export default function isValidCandidate(candidate, offset, text, leniency) +{ + // Check the candidate doesn't contain any formatting + // which would indicate that it really isn't a phone number. + if (!MATCHING_BRACKETS_ENTIRE.test(candidate) || PUB_PAGES.test(candidate)) { + return + } + + // If leniency is set to VALID or stricter, we also want to skip numbers that are surrounded + // by Latin alphabetic characters, to skip cases like abc8005001234 or 8005001234def. + if (leniency !== 'POSSIBLE') + { + // If the candidate is not at the start of the text, + // and does not start with phone-number punctuation, + // check the previous character. + if (offset > 0 && !LEAD_CLASS_LEADING.test(candidate)) + { + const previousChar = text[offset - 1] + // We return null if it is a latin letter or an invalid punctuation symbol. + if (isInvalidPunctuationSymbol(previousChar) || isLatinLetter(previousChar)) { + return false + } + } + + const lastCharIndex = offset + candidate.length + if (lastCharIndex < text.length) + { + const nextChar = text[lastCharIndex] + if (isInvalidPunctuationSymbol(nextChar) || isLatinLetter(nextChar)) { + return false + } + } + } + + return true +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/isValidPreCandidate.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/isValidPreCandidate.js new file mode 100644 index 00000000..504b200c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/isValidPreCandidate.js @@ -0,0 +1,29 @@ +// Matches strings that look like dates using "/" as a separator. +// Examples: 3/10/2011, 31/10/96 or 08/31/95. +const SLASH_SEPARATED_DATES = /(?:(?:[0-3]?\d\/[01]?\d)|(?:[01]?\d\/[0-3]?\d))\/(?:[12]\d)?\d{2}/ + +// Matches timestamps. +// Examples: "2012-01-02 08:00". +// Note that the reg-ex does not include the +// trailing ":\d\d" -- that is covered by TIME_STAMPS_SUFFIX. +const TIME_STAMPS = /[12]\d{3}[-/]?[01]\d[-/]?[0-3]\d +[0-2]\d$/ +const TIME_STAMPS_SUFFIX_LEADING = /^:[0-5]\d/ + +export default function isValidPreCandidate(candidate, offset, text) +{ + // Skip a match that is more likely to be a date. + if (SLASH_SEPARATED_DATES.test(candidate)) { + return false + } + + // Skip potential time-stamps. + if (TIME_STAMPS.test(candidate)) + { + const followingText = text.slice(offset + candidate.length) + if (TIME_STAMPS_SUFFIX_LEADING.test(followingText)) { + return false + } + } + + return true +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/parsePreCandidate.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/parsePreCandidate.js new file mode 100644 index 00000000..5adf44e9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/parsePreCandidate.js @@ -0,0 +1,19 @@ +import { trimAfterFirstMatch } from './util.js' + +// Regular expression of characters typically used to start a second phone number for the purposes +// of parsing. This allows us to strip off parts of the number that are actually the start of +// another number, such as for: (530) 583-6985 x302/x2303 -> the second extension here makes this +// actually two phone numbers, (530) 583-6985 x302 and (530) 583-6985 x2303. We remove the second +// extension so that the first number is parsed correctly. +// +// Matches a slash (\ or /) followed by a space followed by an `x`. +// +const SECOND_NUMBER_START_PATTERN = /[\\/] *x/ + +export default function parsePreCandidate(candidate) +{ + // Check for extra numbers at the end. + // TODO: This is the place to start when trying to support extraction of multiple phone number + // from split notations (+41 79 123 45 67 / 68). + return trimAfterFirstMatch(SECOND_NUMBER_START_PATTERN, candidate) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/utf-8.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/utf-8.js new file mode 100644 index 00000000..2e7edac5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/utf-8.js @@ -0,0 +1,82 @@ +// Javascript doesn't support UTF-8 regular expressions. +// So mimicking them here. + +// Copy-pasted from `PhoneNumberMatcher.js`. + +/** + * "\p{Z}" is any kind of whitespace or invisible separator ("Separator"). + * http://www.regular-expressions.info/unicode.html + * "\P{Z}" is the reverse of "\p{Z}". + * "\p{N}" is any kind of numeric character in any script ("Number"). + * "\p{Nd}" is a digit zero through nine in any script except "ideographic scripts" ("Decimal_Digit_Number"). + * "\p{Sc}" is a currency symbol ("Currency_Symbol"). + * "\p{L}" is any kind of letter from any language ("Letter"). + * "\p{Mn}" is "non-spacing mark". + * + * Javascript doesn't support Unicode Regular Expressions + * so substituting it with this explicit set of characters. + * + * https://stackoverflow.com/questions/13210194/javascript-regex-equivalent-of-a-za-z-using-pl + * https://github.com/danielberndt/babel-plugin-utf-8-regex/blob/master/src/transformer.js + */ + +const _pZ = '\u0020\u00A0\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000' +export const pZ = `[${_pZ}]` +export const PZ = `[^${_pZ}]` + +export const _pN = '\u0030-\u0039\u00B2\u00B3\u00B9\u00BC-\u00BE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D66-\u0D75\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19' +// const pN = `[${_pN}]` + +const _pNd = '\u0030-\u0039\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19' +export const pNd = `[${_pNd}]` + +export const _pL = '\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC' +const pL = `[${_pL}]` +const pL_regexp = new RegExp(pL) + +const _pSc = '\u0024\u00A2-\u00A5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20B9\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6' +const pSc = `[${_pSc}]` +const pSc_regexp = new RegExp(pSc) + +const _pMn = '\u0300-\u036F\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08E4-\u08FE\u0900-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2\u09E3\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B56\u0B62\u0B63\u0B82\u0BC0\u0BCD\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0CBC\u0CBF\u0CC6\u0CCC\u0CCD\u0CE2\u0CE3\u0D41-\u0D44\u0D4D\u0D62\u0D63\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1A17\u1A18\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BAB\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1DC0-\u1DE6\u1DFC-\u1DFF\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099\u309A\uA66F\uA674-\uA67D\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA825\uA826\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEC\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE26' +const pMn = `[${_pMn}]` +const pMn_regexp = new RegExp(pMn) + +const _InBasic_Latin = '\u0000-\u007F' +const _InLatin_1_Supplement = '\u0080-\u00FF' +const _InLatin_Extended_A = '\u0100-\u017F' +const _InLatin_Extended_Additional = '\u1E00-\u1EFF' +const _InLatin_Extended_B = '\u0180-\u024F' +const _InCombining_Diacritical_Marks = '\u0300-\u036F' + +const latinLetterRegexp = new RegExp +( + '[' + + _InBasic_Latin + + _InLatin_1_Supplement + + _InLatin_Extended_A + + _InLatin_Extended_Additional + + _InLatin_Extended_B + + _InCombining_Diacritical_Marks + + ']' +) + +/** + * Helper method to determine if a character is a Latin-script letter or not. + * For our purposes, combining marks should also return true since we assume + * they have been added to a preceding Latin character. + */ +export function isLatinLetter(letter) +{ + // Combining marks are a subset of non-spacing-mark. + if (!pL_regexp.test(letter) && !pMn_regexp.test(letter)) { + return false + } + + return latinLetterRegexp.test(letter) +} + +export function isInvalidPunctuationSymbol(character) +{ + return character === '%' || pSc_regexp.test(character) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/util.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/util.js new file mode 100644 index 00000000..80505031 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/util.js @@ -0,0 +1,33 @@ +/** Returns a regular expression quantifier with an upper and lower limit. */ +export function limit(lower, upper) +{ + if ((lower < 0) || (upper <= 0) || (upper < lower)) { + throw new TypeError() + } + return `{${lower},${upper}}` +} + +/** + * Trims away any characters after the first match of {@code pattern} in {@code candidate}, + * returning the trimmed version. + */ +export function trimAfterFirstMatch(regexp, string) +{ + const index = string.search(regexp) + + if (index >= 0) { + return string.slice(0, index) + } + + return string +} + +export function startsWith(string, substring) +{ + return string.indexOf(substring) === 0 +} + +export function endsWith(string, substring) +{ + return string.indexOf(substring, string.length - substring.length) === string.length - substring.length +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/util.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/util.test.js new file mode 100644 index 00000000..0b1db84e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers/util.test.js @@ -0,0 +1,39 @@ +import { + limit, + trimAfterFirstMatch, + startsWith, + endsWith +} from './util.js' + +describe('findNumbers/util', () => +{ + it('should generate regexp limit', () => + { + let thrower = () => limit(1, 0) + thrower.should.throw() + + thrower = () => limit(-1, 1) + thrower.should.throw() + + thrower = () => limit(0, 0) + thrower.should.throw() + }) + + it('should trimAfterFirstMatch', () => + { + trimAfterFirstMatch(/\d/, 'abc123').should.equal('abc') + trimAfterFirstMatch(/\d/, 'abc').should.equal('abc') + }) + + it('should determine if a string starts with a substring', () => + { + startsWith('𐍈123', '𐍈').should.equal(true) + startsWith('1𐍈', '𐍈').should.equal(false) + }) + + it('should determine if a string ends with a substring', () => + { + endsWith('123𐍈', '𐍈').should.equal(true) + endsWith('𐍈1', '𐍈').should.equal(false) + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers_.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers_.js new file mode 100644 index 00000000..2d607790 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findNumbers_.js @@ -0,0 +1,10 @@ +import PhoneNumberMatcher from './PhoneNumberMatcher.js' + +export default function findNumbers(text, options, metadata) { + const matcher = new PhoneNumberMatcher(text, options, metadata) + const results = [] + while (matcher.hasNext()) { + results.push(matcher.next()) + } + return results +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findPhoneNumbers.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findPhoneNumbers.js new file mode 100644 index 00000000..a17fbe68 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findPhoneNumbers.js @@ -0,0 +1,20 @@ +// This is a legacy function. +// Use `findNumbers()` instead. + +import _findPhoneNumbers, { searchPhoneNumbers as _searchPhoneNumbers } from './findPhoneNumbers_.js' +import { normalizeArguments } from './parsePhoneNumber.js' + +export default function findPhoneNumbers() +{ + const { text, options, metadata } = normalizeArguments(arguments) + return _findPhoneNumbers(text, options, metadata) +} + +/** + * @return ES6 `for ... of` iterator. + */ +export function searchPhoneNumbers() +{ + const { text, options, metadata } = normalizeArguments(arguments) + return _searchPhoneNumbers(text, options, metadata) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findPhoneNumbers.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findPhoneNumbers.test.js new file mode 100644 index 00000000..f0be7100 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findPhoneNumbers.test.js @@ -0,0 +1,233 @@ +// This is a legacy function. +// Use `findNumbers()` instead. + +import findNumbers, { searchPhoneNumbers } from './findPhoneNumbers.js' +import { PhoneNumberSearch } from './findPhoneNumbers_.js' +import metadata from '../metadata.min.json' assert { type: 'json' } + +describe('findPhoneNumbers', () => { + it('should find numbers', () => { + findNumbers('2133734253', 'US', metadata).should.deep.equal([{ + phone : '2133734253', + country : 'US', + startsAt : 0, + endsAt : 10 + }]) + + findNumbers('(213) 373-4253', 'US', metadata).should.deep.equal([{ + phone : '2133734253', + country : 'US', + startsAt : 0, + endsAt : 14 + }]) + + findNumbers('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', metadata).should.deep.equal([{ + phone : '8005553535', + country : 'RU', + startsAt : 14, + endsAt : 32 + }, { + phone : '2133734253', + country : 'US', + startsAt : 41, + endsAt : 55 + }]) + + // Opening parenthesis issue. + // https://github.com/catamphetamine/libphonenumber-js/issues/252 + findNumbers('The number is +7 (800) 555-35-35 and not (213) 373-4253 (that\'s not even in the same country!) as written in the document.', 'US', metadata).should.deep.equal([{ + phone : '8005553535', + country : 'RU', + startsAt : 14, + endsAt : 32 + }, { + phone : '2133734253', + country : 'US', + startsAt : 41, + endsAt : 55 + }]) + + // No default country. + findNumbers('The number is +7 (800) 555-35-35 as written in the document.', metadata).should.deep.equal([{ + phone : '8005553535', + country : 'RU', + startsAt : 14, + endsAt : 32 + }]) + + // Passing `options` and default country. + findNumbers('The number is +7 (800) 555-35-35 as written in the document.', 'US', { leniency: 'VALID' }, metadata).should.deep.equal([{ + phone : '8005553535', + country : 'RU', + startsAt : 14, + endsAt : 32 + }]) + + // Passing `options`. + findNumbers('The number is +7 (800) 555-35-35 as written in the document.', { leniency: 'VALID' }, metadata).should.deep.equal([{ + phone : '8005553535', + country : 'RU', + startsAt : 14, + endsAt : 32 + }]) + + // Not a phone number and a phone number. + findNumbers('Digits 12 are not a number, but +7 (800) 555-35-35 is.', { leniency: 'VALID' }, metadata).should.deep.equal([{ + phone : '8005553535', + country : 'RU', + startsAt : 32, + endsAt : 50 + }]) + + // Phone number extension. + findNumbers('Date 02/17/2018 is not a number, but +7 (800) 555-35-35 ext. 123 is.', { leniency: 'VALID' }, metadata).should.deep.equal([{ + phone : '8005553535', + country : 'RU', + ext : '123', + startsAt : 37, + endsAt : 64 + }]) + }) + + it('shouldn\'t find non-valid numbers', () => { + // Not a valid phone number for US. + findNumbers('1111111111', 'US', metadata).should.deep.equal([]) + }) + + it('should find non-European digits', () => { + // E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`. + findNumbers('العَرَبِيَّة‎ +٤٤٣٣٣٣٣٣٣٣٣٣عَرَبِيّ‎', metadata).should.deep.equal([{ + country : 'GB', + phone : '3333333333', + startsAt : 14, + endsAt : 27 + }]) + }) + + it('should iterate', () => { + const expected_numbers = [{ + country : 'RU', + phone : '8005553535', + // number : '+7 (800) 555-35-35', + startsAt : 14, + endsAt : 32 + }, { + country : 'US', + phone : '2133734253', + // number : '(213) 373-4253', + startsAt : 41, + endsAt : 55 + }] + + for (const number of searchPhoneNumbers('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', metadata)) { + number.should.deep.equal(expected_numbers.shift()) + } + + expected_numbers.length.should.equal(0) + }) + + it('should work in edge cases', () => { + let thrower + + // No input + findNumbers('', metadata).should.deep.equal([]) + + // No country metadata for this `require` country code + thrower = () => findNumbers('123', 'ZZ', metadata) + thrower.should.throw('Unknown country') + + // Numerical `value` + thrower = () => findNumbers(2141111111, 'US') + thrower.should.throw('A text for parsing must be a string.') + + // // No metadata + // thrower = () => findNumbers('') + // thrower.should.throw('`metadata` argument not passed') + }) + + it('shouldn\'t find phone numbers which are not phone numbers', () => { + // A timestamp. + findNumbers('2012-01-02 08:00', 'US', metadata).should.deep.equal([]) + + // A valid number (not a complete timestamp). + findNumbers('2012-01-02 08', 'US', metadata).should.deep.equal([{ + country : 'US', + phone : '2012010208', + startsAt : 0, + endsAt : 13 + }]) + + // Invalid parens. + findNumbers('213(3734253', 'US', metadata).should.deep.equal([]) + + // Letters after phone number. + findNumbers('2133734253a', 'US', metadata).should.deep.equal([]) + + // Valid phone (same as the one found in the UUID below). + findNumbers('The phone number is 231354125.', 'FR', metadata).should.deep.equal([{ + country : 'FR', + phone : '231354125', + startsAt : 20, + endsAt : 29 + }]) + + // Not a phone number (part of a UUID). + // Should parse in `{ extended: true }` mode. + const possibleNumbers = findNumbers('The UUID is CA801c26f98cd16e231354125ad046e40b.', 'FR', { extended: true }, metadata) + possibleNumbers.length.should.equal(3) + possibleNumbers[1].country.should.equal('FR') + possibleNumbers[1].phone.should.equal('231354125') + + // Not a phone number (part of a UUID). + // Shouldn't parse by default. + findNumbers('The UUID is CA801c26f98cd16e231354125ad046e40b.', 'FR', metadata).should.deep.equal([]) + }) +}) + +describe('PhoneNumberSearch', () => { + it('should search for phone numbers', () => { + const finder = new PhoneNumberSearch('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', { defaultCountry: 'US' }, metadata) + + finder.hasNext().should.equal(true) + finder.next().should.deep.equal({ + country : 'RU', + phone : '8005553535', + // number : '+7 (800) 555-35-35', + startsAt : 14, + endsAt : 32 + }) + + finder.hasNext().should.equal(true) + finder.next().should.deep.equal({ + country : 'US', + phone : '2133734253', + // number : '(213) 373-4253', + startsAt : 41, + endsAt : 55 + }) + + finder.hasNext().should.equal(false) + }) + + it('should search for phone numbers (no options)', () => { + const finder = new PhoneNumberSearch('The number is +7 (800) 555-35-35', undefined, metadata) + finder.hasNext().should.equal(true) + finder.next().should.deep.equal({ + country : 'RU', + phone : '8005553535', + // number : '+7 (800) 555-35-35', + startsAt : 14, + endsAt : 32 + }) + finder.hasNext().should.equal(false) + }) + + it('should work in edge cases', () => { + // No options + const search = new PhoneNumberSearch('', undefined, metadata) + + // No next element + let thrower = () => search.next() + thrower.should.throw('No next element') + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findPhoneNumbersInText.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findPhoneNumbersInText.js new file mode 100644 index 00000000..279f189e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findPhoneNumbersInText.js @@ -0,0 +1,45 @@ +import findNumbers from './findNumbers.js' + +export default function findPhoneNumbersInText(text, defaultCountry, options, metadata) { + const args = getArguments(defaultCountry, options, metadata) + return findNumbers(text, args.options, args.metadata) +} + +export function getArguments(defaultCountry, options, metadata) { + if (metadata) { + if (defaultCountry) { + options = { + ...options, + defaultCountry + } + } + } else { + if (options) { + metadata = options + if (defaultCountry) { + if (is_object(defaultCountry)) { + options = defaultCountry + } else { + options = { defaultCountry } + } + } else { + options = undefined + } + } else { + metadata = defaultCountry + options = undefined + } + } + return { + options: { + ...options, + v2: true + }, + metadata + } +} + +// Babel transforms `typeof` into some "branches" +// so istanbul will show this as "branch not covered". +/* istanbul ignore next */ +const is_object = _ => typeof _ === 'object' \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findPhoneNumbersInText.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findPhoneNumbersInText.test.js new file mode 100644 index 00000000..a2360653 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findPhoneNumbersInText.test.js @@ -0,0 +1,48 @@ +import findPhoneNumbersInText from './findPhoneNumbersInText.js' +import metadata from '../metadata.min.json' assert { type: 'json' } + +describe('findPhoneNumbersInText', () => { + it('should find phone numbers in text (with default country)', () => { + findPhoneNumbersInText('+7 (800) 555-35-35', 'US', metadata)[0].number.number.should.equal('+78005553535') + }) + + it('should find phone numbers in text (with default country in options)', () => { + findPhoneNumbersInText('+7 (800) 555-35-35', { defaultCountry: 'US' }, metadata)[0].number.number.should.equal('+78005553535') + }) + + it('should find phone numbers in text (with default country and options)', () => { + findPhoneNumbersInText('+7 (800) 555-35-35', 'US', {}, metadata)[0].number.number.should.equal('+78005553535') + }) + + it('should find phone numbers in text (without default country, with options)', () => { + findPhoneNumbersInText('+7 (800) 555-35-35', undefined, {}, metadata)[0].number.number.should.equal('+78005553535') + }) + + it('should find phone numbers in text (with default country, without options)', () => { + findPhoneNumbersInText('+7 (800) 555-35-35', 'US', undefined, metadata)[0].number.number.should.equal('+78005553535') + }) + + it('should find phone numbers in text (with empty default country)', () => { + findPhoneNumbersInText('+7 (800) 555-35-35', undefined, metadata)[0].number.number.should.equal('+78005553535') + }) + + it('should find phone numbers in text', () => { + const NUMBERS = ['+78005553535', '+12133734253'] + const results = findPhoneNumbersInText('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', metadata) + let i = 0 + while (i < results.length) { + results[i].number.number.should.equal(NUMBERS[i]) + i++ + } + }) + + it('should find phone numbers in text (default country calling code)', () => { + const NUMBERS = ['+870773111632'] + const results = findPhoneNumbersInText('The number is 773 111 632', { defaultCallingCode: '870' }, metadata) + let i = 0 + while (i < results.length) { + results[i].number.number.should.equal(NUMBERS[i]) + i++ + } + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findPhoneNumbers_.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findPhoneNumbers_.js new file mode 100644 index 00000000..db20ab2c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/findPhoneNumbers_.js @@ -0,0 +1,191 @@ +// This is a legacy function. +// Use `findNumbers()` instead. + +import { + PLUS_CHARS, + VALID_PUNCTUATION, + VALID_DIGITS, + WHITESPACE +} from './constants.js' + +import parse from './parse_.js' +import { VALID_PHONE_NUMBER_WITH_EXTENSION } from './helpers/isViablePhoneNumber.js' +import createExtensionPattern from './helpers/extension/createExtensionPattern.js' + +import parsePreCandidate from './findNumbers/parsePreCandidate.js' +import isValidPreCandidate from './findNumbers/isValidPreCandidate.js' +import isValidCandidate from './findNumbers/isValidCandidate.js' + +/** + * Regexp of all possible ways to write extensions, for use when parsing. This + * will be run as a case-insensitive regexp match. Wide character versions are + * also provided after each ASCII version. There are three regular expressions + * here. The first covers RFC 3966 format, where the extension is added using + * ';ext='. The second more generic one starts with optional white space and + * ends with an optional full stop (.), followed by zero or more spaces/tabs + * /commas and then the numbers themselves. The other one covers the special + * case of American numbers where the extension is written with a hash at the + * end, such as '- 503#'. Note that the only capturing groups should be around + * the digits that you want to capture as part of the extension, or else parsing + * will fail! We allow two options for representing the accented o - the + * character itself, and one in the unicode decomposed form with the combining + * acute accent. + */ +export const EXTN_PATTERNS_FOR_PARSING = createExtensionPattern('parsing') + +const WHITESPACE_IN_THE_BEGINNING_PATTERN = new RegExp('^[' + WHITESPACE + ']+') +const PUNCTUATION_IN_THE_END_PATTERN = new RegExp('[' + VALID_PUNCTUATION + ']+$') + +// // Regular expression for getting opening brackets for a valid number +// // found using `PHONE_NUMBER_START_PATTERN` for prepending those brackets to the number. +// const BEFORE_NUMBER_DIGITS_PUNCTUATION = new RegExp('[' + OPENING_BRACKETS + ']+' + '[' + WHITESPACE + ']*' + '$') + +const VALID_PRECEDING_CHARACTER_PATTERN = /[^a-zA-Z0-9]/ + +export default function findPhoneNumbers(text, options, metadata) { + /* istanbul ignore if */ + if (options === undefined) { + options = {} + } + const search = new PhoneNumberSearch(text, options, metadata) + const phones = [] + while (search.hasNext()) { + phones.push(search.next()) + } + return phones +} + +/** + * @return ES6 `for ... of` iterator. + */ +export function searchPhoneNumbers(text, options, metadata) { + /* istanbul ignore if */ + if (options === undefined) { + options = {} + } + const search = new PhoneNumberSearch(text, options, metadata) + return { + [Symbol.iterator]() { + return { + next: () => { + if (search.hasNext()) { + return { + done: false, + value: search.next() + } + } + return { + done: true + } + } + } + } + } +} + +/** + * Extracts a parseable phone number including any opening brackets, etc. + * @param {string} text - Input. + * @return {object} `{ ?number, ?startsAt, ?endsAt }`. + */ +export class PhoneNumberSearch { + constructor(text, options, metadata) { + this.text = text + // If assigning the `{}` default value is moved to the arguments above, + // code coverage would decrease for some weird reason. + this.options = options || {} + this.metadata = metadata + + // Iteration tristate. + this.state = 'NOT_READY' + + this.regexp = new RegExp(VALID_PHONE_NUMBER_WITH_EXTENSION, 'ig') + } + + find() { + const matches = this.regexp.exec(this.text) + if (!matches) { + return + } + + let number = matches[0] + let startsAt = matches.index + + number = number.replace(WHITESPACE_IN_THE_BEGINNING_PATTERN, '') + startsAt += matches[0].length - number.length + // Fixes not parsing numbers with whitespace in the end. + // Also fixes not parsing numbers with opening parentheses in the end. + // https://github.com/catamphetamine/libphonenumber-js/issues/252 + number = number.replace(PUNCTUATION_IN_THE_END_PATTERN, '') + + number = parsePreCandidate(number) + + const result = this.parseCandidate(number, startsAt) + if (result) { + return result + } + + // Tail recursion. + // Try the next one if this one is not a valid phone number. + return this.find() + } + + parseCandidate(number, startsAt) { + if (!isValidPreCandidate(number, startsAt, this.text)) { + return + } + + // Don't parse phone numbers which are non-phone numbers + // due to being part of something else (e.g. a UUID). + // https://github.com/catamphetamine/libphonenumber-js/issues/213 + // Copy-pasted from Google's `PhoneNumberMatcher.js` (`.parseAndValidate()`). + if (!isValidCandidate(number, startsAt, this.text, this.options.extended ? 'POSSIBLE' : 'VALID')) { + return + } + + // // Prepend any opening brackets left behind by the + // // `PHONE_NUMBER_START_PATTERN` regexp. + // const text_before_number = text.slice(this.searching_from, startsAt) + // const full_number_starts_at = text_before_number.search(BEFORE_NUMBER_DIGITS_PUNCTUATION) + // if (full_number_starts_at >= 0) + // { + // number = text_before_number.slice(full_number_starts_at) + number + // startsAt = full_number_starts_at + // } + // + // this.searching_from = matches.lastIndex + + const result = parse(number, this.options, this.metadata) + if (!result.phone) { + return + } + + result.startsAt = startsAt + result.endsAt = startsAt + number.length + return result + } + + hasNext() { + if (this.state === 'NOT_READY') { + this.last_match = this.find() + if (this.last_match) { + this.state = 'READY' + } else { + this.state = 'DONE' + } + } + return this.state === 'READY' + } + + next() { + // Check the state and find the next match as a side-effect if necessary. + if (!this.hasNext()) { + throw new Error('No next element') + } + // Don't retain that memory any longer than necessary. + const result = this.last_match + this.last_match = null + this.state = 'NOT_READY' + return result + } +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/format.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/format.js new file mode 100644 index 00000000..7b8d8cbe --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/format.js @@ -0,0 +1,113 @@ +import _formatNumber from './format_.js' +import parse from './parse_.js' + +export default function formatNumber() +{ + const + { + input, + format, + options, + metadata + } + = normalizeArguments(arguments) + + return _formatNumber(input, format, options, metadata) +} + +// Sort out arguments +function normalizeArguments(args) +{ + const [arg_1, arg_2, arg_3, arg_4, arg_5] = Array.prototype.slice.call(args) + + let input + let format + let options + let metadata + + // Sort out arguments. + + // If the phone number is passed as a string. + // `format('8005553535', ...)`. + if (typeof arg_1 === 'string') + { + // If country code is supplied. + // `format('8005553535', 'RU', 'NATIONAL', [options], metadata)`. + if (typeof arg_3 === 'string') + { + format = arg_3 + + if (arg_5) + { + options = arg_4 + metadata = arg_5 + } + else + { + metadata = arg_4 + } + + input = parse(arg_1, { defaultCountry: arg_2, extended: true }, metadata) + } + // Just an international phone number is supplied + // `format('+78005553535', 'NATIONAL', [options], metadata)`. + else + { + if (typeof arg_2 !== 'string') + { + throw new Error('`format` argument not passed to `formatNumber(number, format)`') + } + + format = arg_2 + + if (arg_4) + { + options = arg_3 + metadata = arg_4 + } + else + { + metadata = arg_3 + } + + input = parse(arg_1, { extended: true }, metadata) + } + } + // If the phone number is passed as a parsed number object. + // `format({ phone: '8005553535', country: 'RU' }, 'NATIONAL', [options], metadata)`. + else if (is_object(arg_1)) + { + input = arg_1 + format = arg_2 + + if (arg_4) + { + options = arg_3 + metadata = arg_4 + } + else + { + metadata = arg_3 + } + } + else throw new TypeError('A phone number must either be a string or an object of shape { phone, [country] }.') + + // Legacy lowercase formats. + if (format === 'International') { + format = 'INTERNATIONAL' + } else if (format === 'National') { + format = 'NATIONAL' + } + + return { + input, + format, + options, + metadata + } +} + +// Babel transforms `typeof` into some "branches" +// so istanbul will show this as "branch not covered". +/* istanbul ignore next */ +const is_object = _ => typeof _ === 'object' \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/format.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/format.test.js new file mode 100644 index 00000000..d7d0df77 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/format.test.js @@ -0,0 +1,240 @@ +import metadata from '../metadata.min.json' assert { type: 'json' } +import _formatNumber from './format.js' + +function formatNumber(...parameters) { + parameters.push(metadata) + return _formatNumber.apply(this, parameters) +} + +describe('format', () => { + it('should work with the first argument being a E.164 number', () => { + formatNumber('+12133734253', 'NATIONAL').should.equal('(213) 373-4253') + formatNumber('+12133734253', 'INTERNATIONAL').should.equal('+1 213 373 4253') + + // Invalid number. + formatNumber('+12111111111', 'NATIONAL').should.equal('(211) 111-1111') + + // Formatting invalid E.164 numbers. + formatNumber('+11111', 'INTERNATIONAL').should.equal('+1 1111') + formatNumber('+11111', 'NATIONAL').should.equal('1111') + }) + + it('should work with the first object argument expanded', () => { + formatNumber('2133734253', 'US', 'NATIONAL').should.equal('(213) 373-4253') + formatNumber('2133734253', 'US', 'INTERNATIONAL').should.equal('+1 213 373 4253') + }) + + it('should support legacy "National" / "International" formats', () => { + formatNumber('2133734253', 'US', 'National').should.equal('(213) 373-4253') + formatNumber('2133734253', 'US', 'International').should.equal('+1 213 373 4253') + }) + + it('should format using formats with no leading digits (`format.leadingDigitsPatterns().length === 0`)', () => { + formatNumber({ phone: '12345678901', countryCallingCode: 888 }, 'INTERNATIONAL').should.equal('+888 123 456 78901') + }) + + it('should sort out the arguments', () => { + const options = { + formatExtension: (number, extension) => `${number} доб. ${extension}` + } + + formatNumber({ + phone : '8005553535', + country : 'RU', + ext : '123' + }, + 'NATIONAL', options).should.equal('8 (800) 555-35-35 доб. 123') + + // Parse number from string. + formatNumber('+78005553535', 'NATIONAL', options).should.equal('8 (800) 555-35-35') + formatNumber('8005553535', 'RU', 'NATIONAL', options).should.equal('8 (800) 555-35-35') + }) + + it('should format with national prefix when specifically instructed', () => { + // With national prefix. + formatNumber('88005553535', 'RU', 'NATIONAL').should.equal('8 (800) 555-35-35') + // Without national prefix via an explicitly set option. + formatNumber('88005553535', 'RU', 'NATIONAL', { nationalPrefix: false }).should.equal('800 555-35-35') + }) + + it('should format valid phone numbers', () => { + // Switzerland + formatNumber({ country: 'CH', phone: '446681800' }, 'INTERNATIONAL').should.equal('+41 44 668 18 00') + formatNumber({ country: 'CH', phone: '446681800' }, 'E.164').should.equal('+41446681800') + formatNumber({ country: 'CH', phone: '446681800' }, 'RFC3966').should.equal('tel:+41446681800') + formatNumber({ country: 'CH', phone: '446681800' }, 'NATIONAL').should.equal('044 668 18 00') + + // France + formatNumber({ country: 'FR', phone: '169454850' }, 'NATIONAL').should.equal('01 69 45 48 50') + + // Kazakhstan + formatNumber('+7 702 211 1111', 'NATIONAL').should.deep.equal('8 (702) 211 1111') + }) + + it('should format national numbers with national prefix even if it\'s optional', () => { + // Russia + formatNumber({ country: 'RU', phone: '9991234567' }, 'NATIONAL').should.equal('8 (999) 123-45-67') + }) + + it('should work in edge cases', () => { + let thrower + + // No phone number + formatNumber('', 'RU', 'INTERNATIONAL').should.equal('') + formatNumber('', 'RU', 'NATIONAL').should.equal('') + + formatNumber({ country: 'RU', phone: '' }, 'INTERNATIONAL').should.equal('+7') + formatNumber({ country: 'RU', phone: '' }, 'NATIONAL').should.equal('') + + // No suitable format + formatNumber('+121337342530', 'US', 'NATIONAL').should.equal('21337342530') + // No suitable format (leading digits mismatch) + formatNumber('28199999', 'AD', 'NATIONAL').should.equal('28199999') + + // Numerical `value` + thrower = () => formatNumber(89150000000, 'RU', 'NATIONAL') + thrower.should.throw('A phone number must either be a string or an object of shape { phone, [country] }.') + + // No metadata for country + expect(() => formatNumber('+121337342530', 'USA', 'NATIONAL')).to.throw('Unknown country') + expect(() => formatNumber('21337342530', 'USA', 'NATIONAL')).to.throw('Unknown country') + + // No format type + thrower = () => formatNumber('+123') + thrower.should.throw('`format` argument not passed') + + // Unknown format type + thrower = () => formatNumber('123', 'US', 'Gay') + thrower.should.throw('Unknown "format" argument') + + // No metadata + thrower = () => _formatNumber('123', 'US', 'E.164') + thrower.should.throw('`metadata`') + + // No formats + formatNumber('012345', 'AC', 'NATIONAL').should.equal('012345') + + // No `fromCountry` for `IDD` format. + expect(formatNumber('+78005553535', 'IDD')).to.be.undefined + + // `fromCountry` has no default IDD prefix. + expect(formatNumber('+78005553535', 'IDD', { fromCountry: 'BO' })).to.be.undefined + + // No such country. + expect(() => formatNumber({ phone: '123', country: 'USA' }, 'NATIONAL')).to.throw('Unknown country') + }) + + it('should format phone number extensions', () => { + // National + formatNumber({ + country: 'US', + phone: '2133734253', + ext: '123' + }, + 'NATIONAL').should.equal('(213) 373-4253 ext. 123') + + // International + formatNumber({ + country : 'US', + phone : '2133734253', + ext : '123' + }, + 'INTERNATIONAL').should.equal('+1 213 373 4253 ext. 123') + + // International + formatNumber({ + country : 'US', + phone : '2133734253', + ext : '123' + }, + 'INTERNATIONAL').should.equal('+1 213 373 4253 ext. 123') + + // E.164 + formatNumber({ + country : 'US', + phone : '2133734253', + ext : '123' + }, + 'E.164').should.equal('+12133734253') + + // RFC3966 + formatNumber({ + country : 'US', + phone : '2133734253', + ext : '123' + }, + 'RFC3966').should.equal('tel:+12133734253;ext=123') + + // Custom ext prefix. + formatNumber({ + country : 'GB', + phone : '7912345678', + ext : '123' + }, + 'INTERNATIONAL').should.equal('+44 7912 345678 x123') + }) + + it('should work with Argentina numbers', () => { + // The same mobile number is written differently + // in different formats in Argentina: + // `9` gets prepended in international format. + formatNumber({ country: 'AR', phone: '3435551212' }, 'INTERNATIONAL') + .should.equal('+54 3435 55 1212') + formatNumber({ country: 'AR', phone: '3435551212' }, 'NATIONAL') + .should.equal('03435 55-1212') + }) + + it('should work with Mexico numbers', () => { + // Fixed line. + formatNumber({ country: 'MX', phone: '4499780001' }, 'INTERNATIONAL') + .should.equal('+52 449 978 0001') + formatNumber({ country: 'MX', phone: '4499780001' }, 'NATIONAL') + .should.equal('449 978 0001') + // or '(449)978-0001'. + // Mobile. + // `1` is prepended before area code to mobile numbers in international format. + formatNumber({ country: 'MX', phone: '3312345678' }, 'INTERNATIONAL') + .should.equal('+52 33 1234 5678') + formatNumber({ country: 'MX', phone: '3312345678' }, 'NATIONAL') + .should.equal('33 1234 5678') + // or '045 33 1234-5678'. + }) + + it('should format possible numbers', () => { + formatNumber({ countryCallingCode: '7', phone: '1111111111' }, 'E.164') + .should.equal('+71111111111') + + formatNumber({ countryCallingCode: '7', phone: '1111111111' }, 'NATIONAL') + .should.equal('1111111111') + + formatNumber({ countryCallingCode: '7', phone: '1111111111' }, 'INTERNATIONAL') + .should.equal('+7 1111111111') + }) + + it('should format IDD-prefixed number', () => { + // No `fromCountry`. + expect(formatNumber('+78005553535', 'IDD')).to.be.undefined + + // No default IDD prefix. + expect(formatNumber('+78005553535', 'IDD', { fromCountry: 'BO' })).to.be.undefined + + // Same country calling code. + formatNumber('+12133734253', 'IDD', { fromCountry: 'CA', humanReadable: true }).should.equal('1 (213) 373-4253') + formatNumber('+78005553535', 'IDD', { fromCountry: 'KZ', humanReadable: true }).should.equal('8 (800) 555-35-35') + + // formatNumber('+78005553535', 'IDD', { fromCountry: 'US' }).should.equal('01178005553535') + formatNumber('+78005553535', 'IDD', { fromCountry: 'US', humanReadable: true }).should.equal('011 7 800 555 35 35') + }) + + it('should format non-geographic numbering plan phone numbers', () => { + // https://github.com/catamphetamine/libphonenumber-js/issues/323 + formatNumber('+870773111632', 'INTERNATIONAL').should.equal('+870 773 111 632') + formatNumber('+870773111632', 'NATIONAL').should.equal('773 111 632') + }) + + it('should use the default IDD prefix when formatting a phone number', () => { + // Testing preferred international prefixes with ~ are supported. + // ("~" designates waiting on a line until proceeding with the input). + formatNumber('+390236618300', 'IDD', { fromCountry: 'UZ' }).should.equal('8~10 39 02 3661 8300') + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/formatIncompletePhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/formatIncompletePhoneNumber.js new file mode 100644 index 00000000..d155e8cb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/formatIncompletePhoneNumber.js @@ -0,0 +1,17 @@ +import AsYouType from './AsYouType.js' + +/** + * Formats a (possibly incomplete) phone number. + * The phone number can be either in E.164 format + * or in a form of national number digits. + * @param {string} value - A possibly incomplete phone number. Either in E.164 format or in a form of national number digits. + * @param {string?} country - Two-letter ("ISO 3166-1 alpha-2") country code. + * @return {string} Formatted (possibly incomplete) phone number. + */ +export default function formatIncompletePhoneNumber(value, country, metadata) { + if (!metadata) { + metadata = country + country = undefined + } + return new AsYouType(country, metadata).input(value) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/formatIncompletePhoneNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/formatIncompletePhoneNumber.test.js new file mode 100644 index 00000000..7f8047fe --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/formatIncompletePhoneNumber.test.js @@ -0,0 +1,21 @@ +import formatIncompletePhoneNumber from './formatIncompletePhoneNumber.js' + +import metadata from '../metadata.min.json' assert { type: 'json' } + +describe('formatIncompletePhoneNumber', () => { + it('should format parsed input value', () => { + let result + + // National input. + formatIncompletePhoneNumber('880055535', 'RU', metadata).should.equal('8 (800) 555-35') + + // International input, no country. + formatIncompletePhoneNumber('+780055535', null, metadata).should.equal('+7 800 555 35') + + // International input, no country argument. + formatIncompletePhoneNumber('+780055535', metadata).should.equal('+7 800 555 35') + + // International input, with country. + formatIncompletePhoneNumber('+780055535', 'RU', metadata).should.equal('+7 800 555 35') + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/formatNumberForMobileDialing.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/formatNumberForMobileDialing.js new file mode 100644 index 00000000..500e1f7e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/formatNumberForMobileDialing.js @@ -0,0 +1,221 @@ +// This function is copy-pasted from +// https://github.com/googlei18n/libphonenumber/blob/master/javascript/i18n/phonenumbers/phonenumberutil.js +// It hasn't been tested. +// Carriers codes aren't part of this library. +// Send a PR if you want to add them. + +import Metadata from './metadata.js' +import format from './format_.js' +import getNumberType from './helpers/getNumberType.js' +import checkNumberLength from './helpers/checkNumberLength.js' +import getCountryCallingCode from './getCountryCallingCode.js' + +const REGION_CODE_FOR_NON_GEO_ENTITY = '001' + +/** + * The prefix that needs to be inserted in front of a Colombian landline number + * when dialed from a mobile phone in Colombia. + */ +const COLOMBIA_MOBILE_TO_FIXED_LINE_PREFIX = '3' + +/** + * Returns a number formatted in such a way that it can be dialed from a mobile + * phone in a specific region. If the number cannot be reached from the region + * (e.g. some countries block toll-free numbers from being called outside of the + * country), the method returns an empty string. + * + * @param {object} number - a `parse()`d phone number to be formatted. + * @param {string} from_country - the region where the call is being placed. + * @param {boolean} with_formatting - whether the number should be returned with + * formatting symbols, such as spaces and dashes. + * @return {string} + */ +export default function(number, from_country, with_formatting, metadata) { + metadata = new Metadata(metadata) + + // Validate `from_country`. + if (!metadata.hasCountry(from_country)) { + throw new Error(`Unknown country: ${from_country}`) + } + + // Not using the extension, as that part cannot normally be dialed + // together with the main number. + number = { + phone: number.phone, + country: number.country + } + + const number_type = getNumberType(number, undefined, metadata.metadata) + const is_valid_number = number_type === number + + let formatted_number + + if (country === from_country) { + const is_fixed_line_or_mobile = + number_type === 'FIXED_LINE' || + number_type === 'MOBILE' || + number_type === 'FIXED_LINE_OR_MOBILE' + + // Carrier codes may be needed in some countries. We handle this here. + if (country === 'CO' && number_type === 'FIXED_LINE') { + formatted_number = formatNationalNumberWithCarrierCode( + number, + COLOMBIA_MOBILE_TO_FIXED_LINE_PREFIX + ) + } + else if (country == 'BR' && is_fixed_line_or_mobile) { + formatted_number = + carrierCode ? + formatNationalNumberWithPreferredCarrierCode(number) : + // Brazilian fixed line and mobile numbers need to be dialed with a + // carrier code when called within Brazil. Without that, most of the + // carriers won't connect the call. Because of that, we return an + // empty string here. + '' + } else if (getCountryCallingCode(country, metadata.metadata) === '1') { + // For NANPA countries, we output international format for numbers that + // can be dialed internationally, since that always works, except for + // numbers which might potentially be short numbers, which are always + // dialled in national format. + + // Select country for `checkNumberLength()`. + metadata.country(country) + + if (can_be_internationally_dialled(number) && + checkNumberLength(number.phone, metadata) !== 'TOO_SHORT') { + formatted_number = format(number, 'INTERNATIONAL', metadata.metadata) + } + else { + formatted_number = format(number, 'NATIONAL', metadata.metadata) + } + } + else { + // For non-geographic countries, Mexican and Chilean fixed line and + // mobile numbers, we output international format for numbers that can be + // dialed internationally, as that always works. + if ( + ( + country === REGION_CODE_FOR_NON_GEO_ENTITY + || + // MX fixed line and mobile numbers should always be formatted in + // international format, even when dialed within MX. For national + // format to work, a carrier code needs to be used, and the correct + // carrier code depends on if the caller and callee are from the + // same local area. It is trickier to get that to work correctly than + // using international format, which is tested to work fine on all + // carriers. + // + // CL fixed line numbers need the national prefix when dialing in the + // national format, but don't have it when used for display. The + // reverse is true for mobile numbers. As a result, we output them in + // the international format to make it work. + // + // UZ mobile and fixed-line numbers have to be formatted in + // international format or prefixed with special codes like 03, 04 + // (for fixed-line) and 05 (for mobile) for dialling successfully + // from mobile devices. As we do not have complete information on + // special codes and to be consistent with formatting across all + // phone types we return the number in international format here. + // + ((country === 'MX' || country === 'CL' || country == 'UZ') && is_fixed_line_or_mobile) + ) + && + can_be_internationally_dialled(number) + ) { + formatted_number = format(number, 'INTERNATIONAL') + } + else { + formatted_number = format(number, 'NATIONAL') + } + } + } + else if (is_valid_number && can_be_internationally_dialled(number)) { + // We assume that short numbers are not diallable from outside their region, + // so if a number is not a valid regular length phone number, we treat it as + // if it cannot be internationally dialled. + return with_formatting ? + format(number, 'INTERNATIONAL', metadata.metadata) : + format(number, 'E.164', metadata.metadata) + } + + if (!with_formatting) { + return diallable_chars(formatted_number) + } + + return formatted_number +} + +function can_be_internationally_dialled(number) { + return true +} + +/** + * A map that contains characters that are essential when dialling. That means + * any of the characters in this map must not be removed from a number when + * dialling, otherwise the call will not reach the intended destination. + */ +const DIALLABLE_CHARACTERS = { + '0': '0', + '1': '1', + '2': '2', + '3': '3', + '4': '4', + '5': '5', + '6': '6', + '7': '7', + '8': '8', + '9': '9', + '+': '+', + '*': '*', + '#': '#' +} + +function diallable_chars(formatted_number) { + let result = '' + + let i = 0 + while (i < formatted_number.length) { + const character = formatted_number[i] + if (DIALLABLE_CHARACTERS[character]) { + result += character + } + i++ + } + + return result +} + +function getPreferredDomesticCarrierCodeOrDefault() { + throw new Error('carrier codes are not part of this library') +} + +function formatNationalNumberWithCarrierCode() { + throw new Error('carrier codes are not part of this library') +} + +/** + * Formats a phone number in national format for dialing using the carrier as + * specified in the preferred_domestic_carrier_code field of the PhoneNumber + * object passed in. If that is missing, use the {@code fallbackCarrierCode} + * passed in instead. If there is no {@code preferred_domestic_carrier_code}, + * and the {@code fallbackCarrierCode} contains an empty string, return the + * number in national format without any carrier code. + * + *

Use {@link #formatNationalNumberWithCarrierCode} instead if the carrier + * code passed in should take precedence over the number's + * {@code preferred_domestic_carrier_code} when formatting. + * + * @param {i18n.phonenumbers.PhoneNumber} number the phone number to be + * formatted. + * @param {string} fallbackCarrierCode the carrier selection code to be used, if + * none is found in the phone number itself. + * @return {string} the formatted phone number in national format for dialing + * using the number's preferred_domestic_carrier_code, or the + * {@code fallbackCarrierCode} passed in if none is found. + */ +function formatNationalNumberWithPreferredCarrierCode(number) { + return formatNationalNumberWithCarrierCode( + number, + carrierCode + ); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/formatNumberForMobileDialing.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/formatNumberForMobileDialing.test.js new file mode 100644 index 00000000..bdadd94c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/formatNumberForMobileDialing.test.js @@ -0,0 +1,16 @@ +// Google's tests: +// https://github.com/googlei18n/libphonenumber/blob/597983dc4d56ed7e5337a8e74316dc7a3d02d794/javascript/i18n/phonenumbers/phonenumberutil_test.js + +// import metadata from '../metadata.min.json' assert { type: 'json' } + +// import formatForMobileDialing from './formatForMobileDialing' + +// describe('formatForMobileDialing', () => +// { +// it('should format for mobile dialing', () => +// { +// formatForMobileDialing({ phone: '8005553535', country: 'RU' }, 'US', true, metadata).should.equal('+7 800 555 3535') +// formatForMobileDialing({ phone: '8005553535', country: 'RU' }, 'US', false, metadata).should.equal('+78005553535') +// formatForMobileDialing({ phone: '8005553535', country: 'RU' }, 'RU', false, metadata).should.equal('8005553535') +// }) +// }) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/format_.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/format_.js new file mode 100644 index 00000000..b0089098 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/format_.js @@ -0,0 +1,184 @@ +// This is a port of Google Android `libphonenumber`'s +// `phonenumberutil.js` of December 31th, 2018. +// +// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js + +import matchesEntirely from './helpers/matchesEntirely.js' +import formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js' +import Metadata, { getCountryCallingCode } from './metadata.js' +import getIddPrefix from './helpers/getIddPrefix.js' +import { formatRFC3966 } from './helpers/RFC3966.js' + +const DEFAULT_OPTIONS = { + formatExtension: (formattedNumber, extension, metadata) => `${formattedNumber}${metadata.ext()}${extension}` +} + +// Formats a phone number +// +// Example use cases: +// +// ```js +// formatNumber('8005553535', 'RU', 'INTERNATIONAL') +// formatNumber('8005553535', 'RU', 'INTERNATIONAL', metadata) +// formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL') +// formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL', metadata) +// formatNumber('+78005553535', 'NATIONAL') +// formatNumber('+78005553535', 'NATIONAL', metadata) +// ``` +// +export default function formatNumber(input, format, options, metadata) { + // Apply default options. + if (options) { + options = { ...DEFAULT_OPTIONS, ...options } + } else { + options = DEFAULT_OPTIONS + } + + metadata = new Metadata(metadata) + + if (input.country && input.country !== '001') { + // Validate `input.country`. + if (!metadata.hasCountry(input.country)) { + throw new Error(`Unknown country: ${input.country}`) + } + metadata.country(input.country) + } + else if (input.countryCallingCode) { + metadata.selectNumberingPlan(input.countryCallingCode) + } + else return input.phone || '' + + const countryCallingCode = metadata.countryCallingCode() + + const nationalNumber = options.v2 ? input.nationalNumber : input.phone + + // This variable should have been declared inside `case`s + // but Babel has a bug and it says "duplicate variable declaration". + let number + + switch (format) { + case 'NATIONAL': + // Legacy argument support. + // (`{ country: ..., phone: '' }`) + if (!nationalNumber) { + return '' + } + number = formatNationalNumber(nationalNumber, input.carrierCode, 'NATIONAL', metadata, options) + return addExtension(number, input.ext, metadata, options.formatExtension) + + case 'INTERNATIONAL': + // Legacy argument support. + // (`{ country: ..., phone: '' }`) + if (!nationalNumber) { + return `+${countryCallingCode}` + } + number = formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata, options) + number = `+${countryCallingCode} ${number}` + return addExtension(number, input.ext, metadata, options.formatExtension) + + case 'E.164': + // `E.164` doesn't define "phone number extensions". + return `+${countryCallingCode}${nationalNumber}` + + case 'RFC3966': + return formatRFC3966({ + number: `+${countryCallingCode}${nationalNumber}`, + ext: input.ext + }) + + // For reference, here's Google's IDD formatter: + // https://github.com/google/libphonenumber/blob/32719cf74e68796788d1ca45abc85dcdc63ba5b9/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L1546 + // Not saying that this IDD formatter replicates it 1:1, but it seems to work. + // Who would even need to format phone numbers in IDD format anyway? + case 'IDD': + if (!options.fromCountry) { + return + // throw new Error('`fromCountry` option not passed for IDD-prefixed formatting.') + } + const formattedNumber = formatIDD( + nationalNumber, + input.carrierCode, + countryCallingCode, + options.fromCountry, + metadata + ) + return addExtension(formattedNumber, input.ext, metadata, options.formatExtension) + + default: + throw new Error(`Unknown "format" argument passed to "formatNumber()": "${format}"`) + } +} + +function formatNationalNumber(number, carrierCode, formatAs, metadata, options) { + const format = chooseFormatForNumber(metadata.formats(), number) + if (!format) { + return number + } + return formatNationalNumberUsingFormat( + number, + format, + { + useInternationalFormat: formatAs === 'INTERNATIONAL', + withNationalPrefix: format.nationalPrefixIsOptionalWhenFormattingInNationalFormat() && (options && options.nationalPrefix === false) ? false : true, + carrierCode, + metadata + } + ) +} + +function chooseFormatForNumber(availableFormats, nationalNnumber) { + for (const format of availableFormats) { + // Validate leading digits. + // The test case for "else path" could be found by searching for + // "format.leadingDigitsPatterns().length === 0". + if (format.leadingDigitsPatterns().length > 0) { + // The last leading_digits_pattern is used here, as it is the most detailed + const lastLeadingDigitsPattern = format.leadingDigitsPatterns()[format.leadingDigitsPatterns().length - 1] + // If leading digits don't match then move on to the next phone number format + if (nationalNnumber.search(lastLeadingDigitsPattern) !== 0) { + continue + } + } + // Check that the national number matches the phone number format regular expression + if (matchesEntirely(nationalNnumber, format.pattern())) { + return format + } + } +} + +function addExtension(formattedNumber, ext, metadata, formatExtension) { + return ext ? formatExtension(formattedNumber, ext, metadata) : formattedNumber +} + +function formatIDD( + nationalNumber, + carrierCode, + countryCallingCode, + fromCountry, + metadata +) { + const fromCountryCallingCode = getCountryCallingCode(fromCountry, metadata.metadata) + // When calling within the same country calling code. + if (fromCountryCallingCode === countryCallingCode) { + const formattedNumber = formatNationalNumber(nationalNumber, carrierCode, 'NATIONAL', metadata) + // For NANPA regions, return the national format for these regions + // but prefix it with the country calling code. + if (countryCallingCode === '1') { + return countryCallingCode + ' ' + formattedNumber + } + // If regions share a country calling code, the country calling code need + // not be dialled. This also applies when dialling within a region, so this + // if clause covers both these cases. Technically this is the case for + // dialling from La Reunion to other overseas departments of France (French + // Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover + // this edge case for now and for those cases return the version including + // country calling code. Details here: + // http://www.petitfute.com/voyage/225-info-pratiques-reunion + // + return formattedNumber + } + const iddPrefix = getIddPrefix(fromCountry, undefined, metadata.metadata) + if (iddPrefix) { + return `${iddPrefix} ${countryCallingCode} ${formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata)}` + } +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getCountries.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getCountries.js new file mode 100644 index 00000000..5b5d9613 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getCountries.js @@ -0,0 +1,5 @@ +import Metadata from './metadata.js' + +export default function getCountries(metadata) { + return new Metadata(metadata).getCountries() +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getCountries.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getCountries.test.js new file mode 100644 index 00000000..87b12eb9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getCountries.test.js @@ -0,0 +1,9 @@ +import metadata from '../metadata.min.json' assert { type: 'json' } + +import getCountries from './getCountries.js' + +describe('getCountries', () => { + it('should get countries list', () => { + expect(getCountries(metadata).indexOf('RU') > 0).to.be.true; + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getCountryCallingCode.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getCountryCallingCode.js new file mode 100644 index 00000000..5fb8ef7c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getCountryCallingCode.js @@ -0,0 +1,2 @@ +// Deprecated. Import from 'metadata.js' directly instead. +export { getCountryCallingCode as default } from './metadata.js' \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getCountryCallingCode.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getCountryCallingCode.test.js new file mode 100644 index 00000000..622fe23c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getCountryCallingCode.test.js @@ -0,0 +1,13 @@ +import metadata from '../metadata.min.json' assert { type: 'json' } + +import getCountryCallingCode from './getCountryCallingCode.js' + +describe('getCountryCallingCode', () => { + it('should get country calling code', () => { + getCountryCallingCode('US', metadata).should.equal('1') + }) + + it('should throw if country is unknown', () => { + expect(() => getCountryCallingCode('ZZ', metadata)).to.throw('Unknown country: ZZ') + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getExampleNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getExampleNumber.js new file mode 100644 index 00000000..02ba85bb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getExampleNumber.js @@ -0,0 +1,7 @@ +import PhoneNumber from './PhoneNumber.js' + +export default function getExampleNumber(country, examples, metadata) { + if (examples[country]) { + return new PhoneNumber(country, examples[country], metadata) + } +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getExampleNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getExampleNumber.test.js new file mode 100644 index 00000000..ed9e7167 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getExampleNumber.test.js @@ -0,0 +1,17 @@ +import examples from '../examples.mobile.json' assert { type: 'json' } +import metadata from '../metadata.min.json' assert { type: 'json' } +import getExampleNumber from './getExampleNumber.js' + +describe('getExampleNumber', () => { + it('should get an example number', () => { + const phoneNumber = getExampleNumber('RU', examples, metadata) + phoneNumber.nationalNumber.should.equal('9123456789') + phoneNumber.number.should.equal('+79123456789') + phoneNumber.countryCallingCode.should.equal('7') + phoneNumber.country.should.equal('RU') + }) + + it('should handle a non-existing country', () => { + expect(getExampleNumber('XX', examples, metadata)).to.be.undefined + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getNumberType.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getNumberType.js new file mode 100644 index 00000000..35a01c65 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getNumberType.js @@ -0,0 +1,112 @@ +import isViablePhoneNumber from './helpers/isViablePhoneNumber.js' +import _getNumberType from './helpers/getNumberType.js' +import parse from './parse_.js' + +// Finds out national phone number type (fixed line, mobile, etc) +export default function getNumberType() +{ + const { input, options, metadata } = normalizeArguments(arguments) + return _getNumberType(input, options, metadata) +} + +// Sort out arguments +export function normalizeArguments(args) +{ + const [arg_1, arg_2, arg_3, arg_4] = Array.prototype.slice.call(args) + + let input + let options = {} + let metadata + + // If the phone number is passed as a string. + // `getNumberType('88005553535', ...)`. + if (typeof arg_1 === 'string') + { + // If "default country" argument is being passed + // then convert it to an `options` object. + // `getNumberType('88005553535', 'RU', metadata)`. + if (typeof arg_2 !== 'object') + { + if (arg_4) + { + options = arg_3 + metadata = arg_4 + } + else + { + metadata = arg_3 + } + + // `parse` extracts phone numbers from raw text, + // therefore it will cut off all "garbage" characters, + // while this `validate` function needs to verify + // that the phone number contains no "garbage" + // therefore the explicit `isViablePhoneNumber` check. + if (isViablePhoneNumber(arg_1)) + { + input = parse(arg_1, { defaultCountry: arg_2 }, metadata) + } + else + { + input = {} + } + } + // No "resrict country" argument is being passed. + // International phone number is passed. + // `getNumberType('+78005553535', metadata)`. + else + { + if (arg_3) + { + options = arg_2 + metadata = arg_3 + } + else + { + metadata = arg_2 + } + + // `parse` extracts phone numbers from raw text, + // therefore it will cut off all "garbage" characters, + // while this `validate` function needs to verify + // that the phone number contains no "garbage" + // therefore the explicit `isViablePhoneNumber` check. + if (isViablePhoneNumber(arg_1)) + { + input = parse(arg_1, undefined, metadata) + } + else + { + input = {} + } + } + } + // If the phone number is passed as a parsed phone number. + // `getNumberType({ phone: '88005553535', country: 'RU' }, ...)`. + else if (is_object(arg_1)) + { + input = arg_1 + + if (arg_3) + { + options = arg_2 + metadata = arg_3 + } + else + { + metadata = arg_2 + } + } + else throw new TypeError('A phone number must either be a string or an object of shape { phone, [country] }.') + + return { + input, + options, + metadata + } +} + +// Babel transforms `typeof` into some "branches" +// so istanbul will show this as "branch not covered". +/* istanbul ignore next */ +const is_object = _ => typeof _ === 'object' \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getNumberType.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getNumberType.test.js new file mode 100644 index 00000000..1dcc9c8b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/getNumberType.test.js @@ -0,0 +1,65 @@ +import metadata from '../metadata.max.json' assert { type: 'json' } +import Metadata from './metadata.js' +import _getNumberType from './getNumberType.js' + +function getNumberType(...parameters) { + parameters.push(metadata) + return _getNumberType.apply(this, parameters) +} + +describe('getNumberType', () => { + it('should infer phone number type MOBILE', () => { + getNumberType('9150000000', 'RU').should.equal('MOBILE') + getNumberType('7912345678', 'GB').should.equal('MOBILE') + getNumberType('51234567', 'EE').should.equal('MOBILE') + }) + + it('should infer phone number types', () => { + getNumberType('88005553535', 'RU').should.equal('TOLL_FREE') + getNumberType('8005553535', 'RU').should.equal('TOLL_FREE') + getNumberType('4957777777', 'RU').should.equal('FIXED_LINE') + getNumberType('8030000000', 'RU').should.equal('PREMIUM_RATE') + + getNumberType('2133734253', 'US').should.equal('FIXED_LINE_OR_MOBILE') + getNumberType('5002345678', 'US').should.equal('PERSONAL_NUMBER') + }) + + it('should work when no country is passed', () => { + getNumberType('+79150000000').should.equal('MOBILE') + }) + + it('should return FIXED_LINE_OR_MOBILE when there is ambiguity', () => { + // (no such country in the metadata, therefore no unit test for this `if`) + }) + + it('should work in edge cases', function() { + let thrower + + // // No metadata + // thrower = () => _getNumberType({ phone: '+78005553535' }) + // thrower.should.throw('`metadata` argument not passed') + + // Parsed phone number + getNumberType({ phone: '8005553535', country: 'RU' }).should.equal('TOLL_FREE') + + // Invalid phone number + type(getNumberType('123', 'RU')).should.equal('undefined') + + // Invalid country + thrower = () => getNumberType({ phone: '8005553535', country: 'RUS' }) + thrower.should.throw('Unknown country') + + // Numerical `value` + thrower = () => getNumberType(89150000000, 'RU') + thrower.should.throw('A phone number must either be a string or an object of shape { phone, [country] }.') + + // When `options` argument is passed. + getNumberType('8005553535', 'RU', {}).should.equal('TOLL_FREE') + getNumberType('+78005553535', {}).should.equal('TOLL_FREE') + getNumberType({ phone: '8005553535', country: 'RU' }, {}).should.equal('TOLL_FREE') + }) +}) + +function type(something) { + return typeof something +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/RFC3966.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/RFC3966.js new file mode 100644 index 00000000..846347d9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/RFC3966.js @@ -0,0 +1,59 @@ +import isViablePhoneNumber from './isViablePhoneNumber.js' + +// https://www.ietf.org/rfc/rfc3966.txt + +/** + * @param {string} text - Phone URI (RFC 3966). + * @return {object} `{ ?number, ?ext }`. + */ +export function parseRFC3966(text) { + let number + let ext + + // Replace "tel:" with "tel=" for parsing convenience. + text = text.replace(/^tel:/, 'tel=') + + for (const part of text.split(';')) { + const [name, value] = part.split('=') + switch (name) { + case 'tel': + number = value + break + case 'ext': + ext = value + break + case 'phone-context': + // Only "country contexts" are supported. + // "Domain contexts" are ignored. + if (value[0] === '+') { + number = value + number + } + break + } + } + + // If the phone number is not viable, then abort. + if (!isViablePhoneNumber(number)) { + return {} + } + + const result = { number } + if (ext) { + result.ext = ext + } + return result +} + +/** + * @param {object} - `{ ?number, ?extension }`. + * @return {string} Phone URI (RFC 3966). + */ +export function formatRFC3966({ number, ext }) { + if (!number) { + return '' + } + if (number[0] !== '+') { + throw new Error(`"formatRFC3966()" expects "number" to be in E.164 format.`) + } + return `tel:${number}${ext ? ';ext=' + ext : ''}` +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/RFC3966.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/RFC3966.test.js new file mode 100644 index 00000000..9b21c330 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/RFC3966.test.js @@ -0,0 +1,33 @@ +import { parseRFC3966, formatRFC3966 } from './RFC3966.js' + +describe('RFC3966', () => { + it('should format', () => { + expect(() => formatRFC3966({ number: '123' })).to.throw('expects "number" to be in E.164 format') + formatRFC3966({}).should.equal('') + formatRFC3966({ number: '+78005553535' }).should.equal('tel:+78005553535') + formatRFC3966({ number: '+78005553535', ext: '123' }).should.equal('tel:+78005553535;ext=123') + }) + + it('should parse', () => { + parseRFC3966('tel:+78005553535').should.deep.equal({ + number : '+78005553535' + }) + + parseRFC3966('tel:+78005553535;ext=123').should.deep.equal({ + number : '+78005553535', + ext : '123' + }) + + // With `phone-context` + parseRFC3966('tel:8005553535;ext=123;phone-context=+7').should.deep.equal({ + number : '+78005553535', + ext : '123' + }) + + // "Domain contexts" are ignored + parseRFC3966('tel:8005553535;ext=123;phone-context=www.leningrad.spb.ru').should.deep.equal({ + number : '8005553535', + ext : '123' + }) + }) +}) diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/applyInternationalSeparatorStyle.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/applyInternationalSeparatorStyle.js new file mode 100644 index 00000000..d502bd30 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/applyInternationalSeparatorStyle.js @@ -0,0 +1,35 @@ +import { VALID_PUNCTUATION } from '../constants.js' + +// Removes brackets and replaces dashes with spaces. +// +// E.g. "(999) 111-22-33" -> "999 111 22 33" +// +// For some reason Google's metadata contains ``s with brackets and dashes. +// Meanwhile, there's no single opinion about using punctuation in international phone numbers. +// +// For example, Google's `` for USA is `+1 213-373-4253`. +// And here's a quote from WikiPedia's "North American Numbering Plan" page: +// https://en.wikipedia.org/wiki/North_American_Numbering_Plan +// +// "The country calling code for all countries participating in the NANP is 1. +// In international format, an NANP number should be listed as +1 301 555 01 00, +// where 301 is an area code (Maryland)." +// +// I personally prefer the international format without any punctuation. +// For example, brackets are remnants of the old age, meaning that the +// phone number part in brackets (so called "area code") can be omitted +// if dialing within the same "area". +// And hyphens were clearly introduced for splitting local numbers into memorizable groups. +// For example, remembering "5553535" is difficult but "555-35-35" is much simpler. +// Imagine a man taking a bus from home to work and seeing an ad with a phone number. +// He has a couple of seconds to memorize that number until it passes by. +// If it were spaces instead of hyphens the man wouldn't necessarily get it, +// but with hyphens instead of spaces the grouping is more explicit. +// I personally think that hyphens introduce visual clutter, +// so I prefer replacing them with spaces in international numbers. +// In the modern age all output is done on displays where spaces are clearly distinguishable +// so hyphens can be safely replaced with spaces without losing any legibility. +// +export default function applyInternationalSeparatorStyle(formattedNumber) { + return formattedNumber.replace(new RegExp(`[${VALID_PUNCTUATION}]+`, 'g'), ' ').trim() +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/applyInternationalSeparatorStyle.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/applyInternationalSeparatorStyle.test.js new file mode 100644 index 00000000..215563e3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/applyInternationalSeparatorStyle.test.js @@ -0,0 +1,8 @@ +import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle.js' + +describe('applyInternationalSeparatorStyle', () => { + it('should change Google\'s international format style', () => { + applyInternationalSeparatorStyle('(xxx) xxx-xx-xx').should.equal('xxx xxx xx xx') + applyInternationalSeparatorStyle('(xxx)xxx').should.equal('xxx xxx') + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/checkNumberLength.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/checkNumberLength.js new file mode 100644 index 00000000..6e7386ab --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/checkNumberLength.js @@ -0,0 +1,86 @@ +import mergeArrays from './mergeArrays.js' + +export default function checkNumberLength(nationalNumber, metadata) { + return checkNumberLengthForType(nationalNumber, undefined, metadata) +} + +// Checks whether a number is possible for the country based on its length. +// Should only be called for the "new" metadata which has "possible lengths". +export function checkNumberLengthForType(nationalNumber, type, metadata) { + const type_info = metadata.type(type) + + // There should always be "" set for every type element. + // This is declared in the XML schema. + // For size efficiency, where a sub-description (e.g. fixed-line) + // has the same "" as the "general description", this is missing, + // so we fall back to the "general description". Where no numbers of the type + // exist at all, there is one possible length (-1) which is guaranteed + // not to match the length of any real phone number. + let possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths() + // let local_lengths = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal() + + // Metadata before version `1.0.18` didn't contain `possible_lengths`. + if (!possible_lengths) { + return 'IS_POSSIBLE' + } + + if (type === 'FIXED_LINE_OR_MOBILE') { + // No such country in metadata. + /* istanbul ignore next */ + if (!metadata.type('FIXED_LINE')) { + // The rare case has been encountered where no fixedLine data is available + // (true for some non-geographic entities), so we just check mobile. + return checkNumberLengthForType(nationalNumber, 'MOBILE', metadata) + } + + const mobile_type = metadata.type('MOBILE') + if (mobile_type) { + // Merge the mobile data in if there was any. "Concat" creates a new + // array, it doesn't edit possible_lengths in place, so we don't need a copy. + // Note that when adding the possible lengths from mobile, we have + // to again check they aren't empty since if they are this indicates + // they are the same as the general desc and should be obtained from there. + possible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths()) + // The current list is sorted; we need to merge in the new list and + // re-sort (duplicates are okay). Sorting isn't so expensive because + // the lists are very small. + + // if (local_lengths) { + // local_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal()) + // } else { + // local_lengths = mobile_type.possibleLengthsLocal() + // } + } + } + // If the type doesn't exist then return 'INVALID_LENGTH'. + else if (type && !type_info) { + return 'INVALID_LENGTH' + } + + const actual_length = nationalNumber.length + + // In `libphonenumber-js` all "local-only" formats are dropped for simplicity. + // // This is safe because there is never an overlap beween the possible lengths + // // and the local-only lengths; this is checked at build time. + // if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0) + // { + // return 'IS_POSSIBLE_LOCAL_ONLY' + // } + + const minimum_length = possible_lengths[0] + + if (minimum_length === actual_length) { + return 'IS_POSSIBLE' + } + + if (minimum_length > actual_length) { + return 'TOO_SHORT' + } + + if (possible_lengths[possible_lengths.length - 1] < actual_length) { + return 'TOO_LONG' + } + + // We skip the first element since we've already checked it. + return possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH' +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/checkNumberLength.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/checkNumberLength.test.js new file mode 100644 index 00000000..d290670e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/checkNumberLength.test.js @@ -0,0 +1,40 @@ +import Metadata from '../metadata.js' +import metadata from '../../metadata.max.json' assert { type: 'json' } +import oldMetadata from '../../test/metadata/1.0.0/metadata.min.json' assert { type: 'json' } + +import { checkNumberLengthForType } from './checkNumberLength.js' + +describe('checkNumberLength', () => { + it('should check phone number length', () => { + // Too short. + checkNumberLength('800555353', 'FIXED_LINE', 'RU').should.equal('TOO_SHORT') + // Normal. + checkNumberLength('8005553535', 'FIXED_LINE', 'RU').should.equal('IS_POSSIBLE') + // Too long. + checkNumberLength('80055535355', 'FIXED_LINE', 'RU').should.equal('TOO_LONG') + + // No such type. + checkNumberLength('169454850', 'VOIP', 'AC').should.equal('INVALID_LENGTH') + // No such possible length. + checkNumberLength('1694548', undefined, 'AD').should.equal('INVALID_LENGTH') + + // FIXED_LINE_OR_MOBILE + checkNumberLength('1694548', 'FIXED_LINE_OR_MOBILE', 'AD').should.equal('INVALID_LENGTH') + // No mobile phones. + checkNumberLength('8123', 'FIXED_LINE_OR_MOBILE', 'TA').should.equal('IS_POSSIBLE') + // No "possible lengths" for "mobile". + checkNumberLength('81234567', 'FIXED_LINE_OR_MOBILE', 'SZ').should.equal('IS_POSSIBLE') + }) + + it('should work for old metadata', function() { + const _oldMetadata = new Metadata(oldMetadata) + _oldMetadata.country('RU') + checkNumberLengthForType('8005553535', 'FIXED_LINE', _oldMetadata).should.equal('IS_POSSIBLE') + }) +}) + +function checkNumberLength(number, type, country) { + const _metadata = new Metadata(metadata) + _metadata.country(country) + return checkNumberLengthForType(number, type, _metadata) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extension/createExtensionPattern.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extension/createExtensionPattern.js new file mode 100644 index 00000000..a923e9f2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extension/createExtensionPattern.js @@ -0,0 +1,112 @@ +import { VALID_DIGITS } from '../../constants.js' + +// The RFC 3966 format for extensions. +const RFC3966_EXTN_PREFIX = ';ext=' + +/** + * Helper method for constructing regular expressions for parsing. Creates + * an expression that captures up to max_length digits. + * @return {string} RegEx pattern to capture extension digits. + */ +const getExtensionDigitsPattern = (maxLength) => `([${VALID_DIGITS}]{1,${maxLength}})` + +/** + * Helper initialiser method to create the regular-expression pattern to match + * extensions. + * Copy-pasted from Google's `libphonenumber`: + * https://github.com/google/libphonenumber/blob/55b2646ec9393f4d3d6661b9c82ef9e258e8b829/javascript/i18n/phonenumbers/phonenumberutil.js#L759-L766 + * @return {string} RegEx pattern to capture extensions. + */ +export default function createExtensionPattern(purpose) { + // We cap the maximum length of an extension based on the ambiguity of the way + // the extension is prefixed. As per ITU, the officially allowed length for + // extensions is actually 40, but we don't support this since we haven't seen real + // examples and this introduces many false interpretations as the extension labels + // are not standardized. + /** @type {string} */ + var extLimitAfterExplicitLabel = '20'; + /** @type {string} */ + var extLimitAfterLikelyLabel = '15'; + /** @type {string} */ + var extLimitAfterAmbiguousChar = '9'; + /** @type {string} */ + var extLimitWhenNotSure = '6'; + + /** @type {string} */ + var possibleSeparatorsBetweenNumberAndExtLabel = "[ \u00A0\\t,]*"; + // Optional full stop (.) or colon, followed by zero or more spaces/tabs/commas. + /** @type {string} */ + var possibleCharsAfterExtLabel = "[:\\.\uFF0E]?[ \u00A0\\t,-]*"; + /** @type {string} */ + var optionalExtnSuffix = "#?"; + + // Here the extension is called out in more explicit way, i.e mentioning it obvious + // patterns like "ext.". + /** @type {string} */ + var explicitExtLabels = + "(?:e?xt(?:ensi(?:o\u0301?|\u00F3))?n?|\uFF45?\uFF58\uFF54\uFF4E?|\u0434\u043E\u0431|anexo)"; + // One-character symbols that can be used to indicate an extension, and less + // commonly used or more ambiguous extension labels. + /** @type {string} */ + var ambiguousExtLabels = "(?:[x\uFF58#\uFF03~\uFF5E]|int|\uFF49\uFF4E\uFF54)"; + // When extension is not separated clearly. + /** @type {string} */ + var ambiguousSeparator = "[- ]+"; + // This is the same as possibleSeparatorsBetweenNumberAndExtLabel, but not matching + // comma as extension label may have it. + /** @type {string} */ + var possibleSeparatorsNumberExtLabelNoComma = "[ \u00A0\\t]*"; + // ",," is commonly used for auto dialling the extension when connected. First + // comma is matched through possibleSeparatorsBetweenNumberAndExtLabel, so we do + // not repeat it here. Semi-colon works in Iphone and Android also to pop up a + // button with the extension number following. + /** @type {string} */ + var autoDiallingAndExtLabelsFound = "(?:,{2}|;)"; + + /** @type {string} */ + var rfcExtn = RFC3966_EXTN_PREFIX + + getExtensionDigitsPattern(extLimitAfterExplicitLabel); + /** @type {string} */ + var explicitExtn = possibleSeparatorsBetweenNumberAndExtLabel + explicitExtLabels + + possibleCharsAfterExtLabel + + getExtensionDigitsPattern(extLimitAfterExplicitLabel) + + optionalExtnSuffix; + /** @type {string} */ + var ambiguousExtn = possibleSeparatorsBetweenNumberAndExtLabel + ambiguousExtLabels + + possibleCharsAfterExtLabel + + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + + optionalExtnSuffix; + /** @type {string} */ + var americanStyleExtnWithSuffix = ambiguousSeparator + + getExtensionDigitsPattern(extLimitWhenNotSure) + "#"; + + /** @type {string} */ + var autoDiallingExtn = possibleSeparatorsNumberExtLabelNoComma + + autoDiallingAndExtLabelsFound + possibleCharsAfterExtLabel + + getExtensionDigitsPattern(extLimitAfterLikelyLabel) + + optionalExtnSuffix; + /** @type {string} */ + var onlyCommasExtn = possibleSeparatorsNumberExtLabelNoComma + + "(?:,)+" + possibleCharsAfterExtLabel + + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + + optionalExtnSuffix; + + // The first regular expression covers RFC 3966 format, where the extension is added + // using ";ext=". The second more generic where extension is mentioned with explicit + // labels like "ext:". In both the above cases we allow more numbers in extension than + // any other extension labels. The third one captures when single character extension + // labels or less commonly used labels are used. In such cases we capture fewer + // extension digits in order to reduce the chance of falsely interpreting two + // numbers beside each other as a number + extension. The fourth one covers the + // special case of American numbers where the extension is written with a hash + // at the end, such as "- 503#". The fifth one is exclusively for extension + // autodialling formats which are used when dialling and in this case we accept longer + // extensions. The last one is more liberal on the number of commas that acts as + // extension labels, so we have a strict cap on the number of digits in such extensions. + return rfcExtn + "|" + + explicitExtn + "|" + + ambiguousExtn + "|" + + americanStyleExtnWithSuffix + "|" + + autoDiallingExtn + "|" + + onlyCommasExtn; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extension/extractExtension.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extension/extractExtension.js new file mode 100644 index 00000000..2b9eb2af --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extension/extractExtension.js @@ -0,0 +1,29 @@ +import createExtensionPattern from './createExtensionPattern.js' + +// Regexp of all known extension prefixes used by different regions followed by +// 1 or more valid digits, for use when parsing. +const EXTN_PATTERN = new RegExp('(?:' + createExtensionPattern() + ')$', 'i') + +// Strips any extension (as in, the part of the number dialled after the call is +// connected, usually indicated with extn, ext, x or similar) from the end of +// the number, and returns it. +export default function extractExtension(number) { + const start = number.search(EXTN_PATTERN) + if (start < 0) { + return {} + } + // If we find a potential extension, and the number preceding this is a viable + // number, we assume it is an extension. + const numberWithoutExtension = number.slice(0, start) + const matches = number.match(EXTN_PATTERN) + let i = 1 + while (i < matches.length) { + if (matches[i]) { + return { + number: numberWithoutExtension, + ext: matches[i] + } + } + i++ + } +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractCountryCallingCode.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractCountryCallingCode.js new file mode 100644 index 00000000..69c80b75 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractCountryCallingCode.js @@ -0,0 +1,106 @@ +import stripIddPrefix from './stripIddPrefix.js' +import extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js' +import Metadata from '../metadata.js' +import { MAX_LENGTH_COUNTRY_CODE } from '../constants.js' + +/** + * Converts a phone number digits (possibly with a `+`) + * into a calling code and the rest phone number digits. + * The "rest phone number digits" could include + * a national prefix, carrier code, and national + * (significant) number. + * @param {string} number — Phone number digits (possibly with a `+`). + * @param {string} [country] — Default country. + * @param {string} [callingCode] — Default calling code (some phone numbering plans are non-geographic). + * @param {object} metadata + * @return {object} `{ countryCallingCode: string?, number: string }` + * @example + * // Returns `{ countryCallingCode: "1", number: "2133734253" }`. + * extractCountryCallingCode('2133734253', 'US', null, metadata) + * extractCountryCallingCode('2133734253', null, '1', metadata) + * extractCountryCallingCode('+12133734253', null, null, metadata) + * extractCountryCallingCode('+12133734253', 'RU', null, metadata) + */ +export default function extractCountryCallingCode( + number, + country, + callingCode, + metadata +) { + if (!number) { + return {} + } + + // If this is not an international phone number, + // then either extract an "IDD" prefix, or extract a + // country calling code from a number by autocorrecting it + // by prepending a leading `+` in cases when it starts + // with the country calling code. + // https://wikitravel.org/en/International_dialling_prefix + // https://github.com/catamphetamine/libphonenumber-js/issues/376 + if (number[0] !== '+') { + // Convert an "out-of-country" dialing phone number + // to a proper international phone number. + const numberWithoutIDD = stripIddPrefix(number, country, callingCode, metadata) + // If an IDD prefix was stripped then + // convert the number to international one + // for subsequent parsing. + if (numberWithoutIDD && numberWithoutIDD !== number) { + number = '+' + numberWithoutIDD + } else { + // Check to see if the number starts with the country calling code + // for the default country. If so, we remove the country calling code, + // and do some checks on the validity of the number before and after. + // https://github.com/catamphetamine/libphonenumber-js/issues/376 + if (country || callingCode) { + const { + countryCallingCode, + number: shorterNumber + } = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign( + number, + country, + callingCode, + metadata + ) + if (countryCallingCode) { + return { + countryCallingCode, + number: shorterNumber + } + } + } + return { number } + } + } + + // Fast abortion: country codes do not begin with a '0' + if (number[1] === '0') { + return {} + } + + metadata = new Metadata(metadata) + + // The thing with country phone codes + // is that they are orthogonal to each other + // i.e. there's no such country phone code A + // for which country phone code B exists + // where B starts with A. + // Therefore, while scanning digits, + // if a valid country code is found, + // that means that it is the country code. + // + let i = 2 + while (i - 1 <= MAX_LENGTH_COUNTRY_CODE && i <= number.length) { + const countryCallingCode = number.slice(1, i) + if (metadata.hasCallingCode(countryCallingCode)) { + metadata.selectNumberingPlan(countryCallingCode) + return { + countryCallingCode, + number: number.slice(i) + } + } + i++ + } + + return {} +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractCountryCallingCode.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractCountryCallingCode.test.js new file mode 100644 index 00000000..d8d3f897 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractCountryCallingCode.test.js @@ -0,0 +1,18 @@ +import extractCountryCallingCode from './extractCountryCallingCode.js' +import metadata from '../../metadata.min.json' assert { type: 'json' } + +describe('extractCountryCallingCode', () => { + it('should extract country calling code from a number', () => { + extractCountryCallingCode('+78005553535', null, null, metadata).should.deep.equal({ + countryCallingCode: '7', + number: '8005553535' + }) + + extractCountryCallingCode('+7800', null, null, metadata).should.deep.equal({ + countryCallingCode: '7', + number: '800' + }) + + extractCountryCallingCode('', null, null, metadata).should.deep.equal({}) + }) +}) diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js new file mode 100644 index 00000000..3c7ebb17 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js @@ -0,0 +1,63 @@ +import Metadata from '../metadata.js' +import matchesEntirely from './matchesEntirely.js' +import extractNationalNumber from './extractNationalNumber.js' +import checkNumberLength from './checkNumberLength.js' +import getCountryCallingCode from '../getCountryCallingCode.js' + +/** + * Sometimes some people incorrectly input international phone numbers + * without the leading `+`. This function corrects such input. + * @param {string} number — Phone number digits. + * @param {string?} country + * @param {string?} callingCode + * @param {object} metadata + * @return {object} `{ countryCallingCode: string?, number: string }`. + */ +export default function extractCountryCallingCodeFromInternationalNumberWithoutPlusSign( + number, + country, + callingCode, + metadata +) { + const countryCallingCode = country ? getCountryCallingCode(country, metadata) : callingCode + if (number.indexOf(countryCallingCode) === 0) { + metadata = new Metadata(metadata) + metadata.selectNumberingPlan(country, callingCode) + const possibleShorterNumber = number.slice(countryCallingCode.length) + const { + nationalNumber: possibleShorterNationalNumber, + } = extractNationalNumber( + possibleShorterNumber, + metadata + ) + const { + nationalNumber + } = extractNationalNumber( + number, + metadata + ) + // If the number was not valid before but is valid now, + // or if it was too long before, we consider the number + // with the country calling code stripped to be a better result + // and keep that instead. + // For example, in Germany (+49), `49` is a valid area code, + // so if a number starts with `49`, it could be both a valid + // national German number or an international number without + // a leading `+`. + if ( + ( + !matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) + && + matchesEntirely(possibleShorterNationalNumber, metadata.nationalNumberPattern()) + ) + || + checkNumberLength(nationalNumber, metadata) === 'TOO_LONG' + ) { + return { + countryCallingCode, + number: possibleShorterNumber + } + } + } + return { number } +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractNationalNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractNationalNumber.js new file mode 100644 index 00000000..67af0aed --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractNationalNumber.js @@ -0,0 +1,106 @@ +import extractNationalNumberFromPossiblyIncompleteNumber from './extractNationalNumberFromPossiblyIncompleteNumber.js' +import matchesEntirely from './matchesEntirely.js' +import checkNumberLength from './checkNumberLength.js' + +/** + * Strips national prefix and carrier code from a complete phone number. + * The difference from the non-"FromCompleteNumber" function is that + * it won't extract national prefix if the resultant number is too short + * to be a complete number for the selected phone numbering plan. + * @param {string} number — Complete phone number digits. + * @param {Metadata} metadata — Metadata with a phone numbering plan selected. + * @return {object} `{ nationalNumber: string, carrierCode: string? }`. + */ +export default function extractNationalNumber(number, metadata) { + // Parsing national prefixes and carrier codes + // is only required for local phone numbers + // but some people don't understand that + // and sometimes write international phone numbers + // with national prefixes (or maybe even carrier codes). + // http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html + // Google's original library forgives such mistakes + // and so does this library, because it has been requested: + // https://github.com/catamphetamine/libphonenumber-js/issues/127 + const { + carrierCode, + nationalNumber + } = extractNationalNumberFromPossiblyIncompleteNumber( + number, + metadata + ) + + if (nationalNumber !== number) { + if (!shouldHaveExtractedNationalPrefix(number, nationalNumber, metadata)) { + // Don't strip the national prefix. + return { nationalNumber: number } + } + // Check the national (significant) number length after extracting national prefix and carrier code. + // Legacy generated metadata (before `1.0.18`) didn't support the "possible lengths" feature. + if (metadata.possibleLengths()) { + // The number remaining after stripping the national prefix and carrier code + // should be long enough to have a possible length for the country. + // Otherwise, don't strip the national prefix and carrier code, + // since the original number could be a valid number. + // This check has been copy-pasted "as is" from Google's original library: + // https://github.com/google/libphonenumber/blob/876268eb1ad6cdc1b7b5bef17fc5e43052702d57/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3236-L3250 + // It doesn't check for the "possibility" of the original `number`. + // I guess it's fine not checking that one. It works as is anyway. + if (!isPossibleIncompleteNationalNumber(nationalNumber, metadata)) { + // Don't strip the national prefix. + return { nationalNumber: number } + } + } + } + + return { nationalNumber, carrierCode } +} + +// In some countries, the same digit could be a national prefix +// or a leading digit of a valid phone number. +// For example, in Russia, national prefix is `8`, +// and also `800 555 35 35` is a valid number +// in which `8` is not a national prefix, but the first digit +// of a national (significant) number. +// Same's with Belarus: +// `82004910060` is a valid national (significant) number, +// but `2004910060` is not. +// To support such cases (to prevent the code from always stripping +// national prefix), a condition is imposed: a national prefix +// is not extracted when the original number is "viable" and the +// resultant number is not, a "viable" national number being the one +// that matches `national_number_pattern`. +function shouldHaveExtractedNationalPrefix(nationalNumberBefore, nationalNumberAfter, metadata) { + // The equivalent in Google's code is: + // https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L2969-L3004 + if (matchesEntirely(nationalNumberBefore, metadata.nationalNumberPattern()) && + !matchesEntirely(nationalNumberAfter, metadata.nationalNumberPattern())) { + return false + } + // This "is possible" national number (length) check has been commented out + // because it's superceded by the (effectively) same check done in the + // `extractNationalNumber()` function after it calls `shouldHaveExtractedNationalPrefix()`. + // In other words, why run the same check twice if it could only be run once. + // // Check the national (significant) number length after extracting national prefix and carrier code. + // // Fixes a minor "weird behavior" bug: https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/57 + // // (Legacy generated metadata (before `1.0.18`) didn't support the "possible lengths" feature). + // if (metadata.possibleLengths()) { + // if (isPossibleIncompleteNationalNumber(nationalNumberBefore, metadata) && + // !isPossibleIncompleteNationalNumber(nationalNumberAfter, metadata)) { + // return false + // } + // } + return true +} + +function isPossibleIncompleteNationalNumber(nationalNumber, metadata) { + switch (checkNumberLength(nationalNumber, metadata)) { + case 'TOO_SHORT': + case 'INVALID_LENGTH': + // This library ignores "local-only" phone numbers (for simplicity). + // See the readme for more info on what are "local-only" phone numbers. + // case 'IS_POSSIBLE_LOCAL_ONLY': + return false + default: + return true + } +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractNationalNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractNationalNumber.test.js new file mode 100644 index 00000000..f4bb66cb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractNationalNumber.test.js @@ -0,0 +1,15 @@ +import extractNationalNumber from './extractNationalNumber.js' + +import Metadata from '../metadata.js' +import oldMetadata from '../../test/metadata/1.0.0/metadata.min.json' assert { type: 'json' } + +describe('extractNationalNumber', function() { + it('should extract a national number when using old metadata', function() { + const _oldMetadata = new Metadata(oldMetadata) + _oldMetadata.selectNumberingPlan('RU') + extractNationalNumber('88005553535', _oldMetadata).should.deep.equal({ + nationalNumber: '8005553535', + carrierCode: undefined + }) + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js new file mode 100644 index 00000000..bc6f0440 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js @@ -0,0 +1,104 @@ +/** + * Strips any national prefix (such as 0, 1) present in a + * (possibly incomplete) number provided. + * "Carrier codes" are only used in Colombia and Brazil, + * and only when dialing within those countries from a mobile phone to a fixed line number. + * Sometimes it won't actually strip national prefix + * and will instead prepend some digits to the `number`: + * for example, when number `2345678` is passed with `VI` country selected, + * it will return `{ number: "3402345678" }`, because `340` area code is prepended. + * @param {string} number — National number digits. + * @param {object} metadata — Metadata with country selected. + * @return {object} `{ nationalNumber: string, nationalPrefix: string? carrierCode: string? }`. Even if a national prefix was extracted, it's not necessarily present in the returned object, so don't rely on its presence in the returned object in order to find out whether a national prefix has been extracted or not. + */ +export default function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) { + if (number && metadata.numberingPlan.nationalPrefixForParsing()) { + // See METADATA.md for the description of + // `national_prefix_for_parsing` and `national_prefix_transform_rule`. + // Attempt to parse the first digits as a national prefix. + const prefixPattern = new RegExp('^(?:' + metadata.numberingPlan.nationalPrefixForParsing() + ')') + const prefixMatch = prefixPattern.exec(number) + if (prefixMatch) { + let nationalNumber + let carrierCode + // https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule + // If a `national_prefix_for_parsing` has any "capturing groups" + // then it means that the national (significant) number is equal to + // those "capturing groups" transformed via `national_prefix_transform_rule`, + // and nothing could be said about the actual national prefix: + // what is it and was it even there. + // If a `national_prefix_for_parsing` doesn't have any "capturing groups", + // then everything it matches is a national prefix. + // To determine whether `national_prefix_for_parsing` matched any + // "capturing groups", the value of the result of calling `.exec()` + // is looked at, and if it has non-undefined values where there're + // "capturing groups" in the regular expression, then it means + // that "capturing groups" have been matched. + // It's not possible to tell whether there'll be any "capturing gropus" + // before the matching process, because a `national_prefix_for_parsing` + // could exhibit both behaviors. + const capturedGroupsCount = prefixMatch.length - 1 + const hasCapturedGroups = capturedGroupsCount > 0 && prefixMatch[capturedGroupsCount] + if (metadata.nationalPrefixTransformRule() && hasCapturedGroups) { + nationalNumber = number.replace( + prefixPattern, + metadata.nationalPrefixTransformRule() + ) + // If there's more than one captured group, + // then carrier code is the second one. + if (capturedGroupsCount > 1) { + carrierCode = prefixMatch[1] + } + } + // If there're no "capturing groups", + // or if there're "capturing groups" but no + // `national_prefix_transform_rule`, + // then just strip the national prefix from the number, + // and possibly a carrier code. + // Seems like there could be more. + else { + // `prefixBeforeNationalNumber` is the whole substring matched by + // the `national_prefix_for_parsing` regular expression. + // There seem to be no guarantees that it's just a national prefix. + // For example, if there's a carrier code, it's gonna be a + // part of `prefixBeforeNationalNumber` too. + const prefixBeforeNationalNumber = prefixMatch[0] + nationalNumber = number.slice(prefixBeforeNationalNumber.length) + // If there's at least one captured group, + // then carrier code is the first one. + if (hasCapturedGroups) { + carrierCode = prefixMatch[1] + } + } + // Tries to guess whether a national prefix was present in the input. + // This is not something copy-pasted from Google's library: + // they don't seem to have an equivalent for that. + // So this isn't an "officially approved" way of doing something like that. + // But since there seems no other existing method, this library uses it. + let nationalPrefix + if (hasCapturedGroups) { + const possiblePositionOfTheFirstCapturedGroup = number.indexOf(prefixMatch[1]) + const possibleNationalPrefix = number.slice(0, possiblePositionOfTheFirstCapturedGroup) + // Example: an Argentinian (AR) phone number `0111523456789`. + // `prefixMatch[0]` is `01115`, and `$1` is `11`, + // and the rest of the phone number is `23456789`. + // The national number is transformed via `9$1` to `91123456789`. + // National prefix `0` is detected being present at the start. + // if (possibleNationalPrefix.indexOf(metadata.numberingPlan.nationalPrefix()) === 0) { + if (possibleNationalPrefix === metadata.numberingPlan.nationalPrefix()) { + nationalPrefix = metadata.numberingPlan.nationalPrefix() + } + } else { + nationalPrefix = prefixMatch[0] + } + return { + nationalNumber, + nationalPrefix, + carrierCode + } + } + } + return { + nationalNumber: number + } +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractNationalNumberFromPossiblyIncompleteNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractNationalNumberFromPossiblyIncompleteNumber.test.js new file mode 100644 index 00000000..816ba1c6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/extractNationalNumberFromPossiblyIncompleteNumber.test.js @@ -0,0 +1,15 @@ +import Metadata from '../metadata.js' +import metadata from '../../metadata.min.json' assert { type: 'json' } +import extractNationalNumberFromPossiblyIncompleteNumber from './extractNationalNumberFromPossiblyIncompleteNumber.js' + +describe('extractNationalNumberFromPossiblyIncompleteNumber', () => { + it('should parse a carrier code when there is no national prefix transform rule', () => { + const meta = new Metadata(metadata) + meta.country('AU') + extractNationalNumberFromPossiblyIncompleteNumber('18311800123', meta).should.deep.equal({ + nationalPrefix: undefined, + carrierCode: '1831', + nationalNumber: '1800123' + }) + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/formatNationalNumberUsingFormat.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/formatNationalNumberUsingFormat.js new file mode 100644 index 00000000..42f5424c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/formatNationalNumberUsingFormat.js @@ -0,0 +1,46 @@ +import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle.js' + +// This was originally set to $1 but there are some countries for which the +// first group is not used in the national pattern (e.g. Argentina) so the $1 +// group does not match correctly. Therefore, we use `\d`, so that the first +// group actually used in the pattern will be matched. +export const FIRST_GROUP_PATTERN = /(\$\d)/ + +export default function formatNationalNumberUsingFormat( + number, + format, + { + useInternationalFormat, + withNationalPrefix, + carrierCode, + metadata + } +) { + const formattedNumber = number.replace( + new RegExp(format.pattern()), + useInternationalFormat + ? format.internationalFormat() + : ( + // This library doesn't use `domestic_carrier_code_formatting_rule`, + // because that one is only used when formatting phone numbers + // for dialing from a mobile phone, and this is not a dialing library. + // carrierCode && format.domesticCarrierCodeFormattingRule() + // // First, replace the $CC in the formatting rule with the desired carrier code. + // // Then, replace the $FG in the formatting rule with the first group + // // and the carrier code combined in the appropriate way. + // ? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode)) + // : ( + // withNationalPrefix && format.nationalPrefixFormattingRule() + // ? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()) + // : format.format() + // ) + withNationalPrefix && format.nationalPrefixFormattingRule() + ? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()) + : format.format() + ) + ) + if (useInternationalFormat) { + return applyInternationalSeparatorStyle(formattedNumber) + } + return formattedNumber +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/getCountryByCallingCode.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/getCountryByCallingCode.js new file mode 100644 index 00000000..1981be48 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/getCountryByCallingCode.js @@ -0,0 +1,47 @@ +import Metadata from '../metadata.js' +import getNumberType from './getNumberType.js' + +const USE_NON_GEOGRAPHIC_COUNTRY_CODE = false + +export default function getCountryByCallingCode(callingCode, nationalPhoneNumber, metadata) { + /* istanbul ignore if */ + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + if (metadata.isNonGeographicCallingCode(callingCode)) { + return '001' + } + } + // Is always non-empty, because `callingCode` is always valid + const possibleCountries = metadata.getCountryCodesForCallingCode(callingCode) + if (!possibleCountries) { + return + } + // If there's just one country corresponding to the country code, + // then just return it, without further phone number digits validation. + if (possibleCountries.length === 1) { + return possibleCountries[0] + } + return selectCountryFromList(possibleCountries, nationalPhoneNumber, metadata.metadata) +} + +function selectCountryFromList(possibleCountries, nationalPhoneNumber, metadata) { + // Re-create `metadata` because it will be selecting a `country`. + metadata = new Metadata(metadata) + for (const country of possibleCountries) { + metadata.country(country) + // Leading digits check would be the simplest and fastest one. + // Leading digits patterns are only defined for about 20% of all countries. + // https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits + // Matching "leading digits" is a sufficient but not necessary condition. + if (metadata.leadingDigits()) { + if (nationalPhoneNumber && + nationalPhoneNumber.search(metadata.leadingDigits()) === 0) { + return country + } + } + // Else perform full validation with all of those + // fixed-line/mobile/etc regular expressions. + else if (getNumberType({ phone: nationalPhoneNumber, country }, undefined, metadata.metadata)) { + return country + } + } +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/getIddPrefix.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/getIddPrefix.js new file mode 100644 index 00000000..10ebb5ae --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/getIddPrefix.js @@ -0,0 +1,25 @@ +import Metadata from '../metadata.js' + +/** + * Pattern that makes it easy to distinguish whether a region has a single + * international dialing prefix or not. If a region has a single international + * prefix (e.g. 011 in USA), it will be represented as a string that contains + * a sequence of ASCII digits, and possibly a tilde, which signals waiting for + * the tone. If there are multiple available international prefixes in a + * region, they will be represented as a regex string that always contains one + * or more characters that are not ASCII digits or a tilde. + */ +const SINGLE_IDD_PREFIX_REG_EXP = /^[\d]+(?:[~\u2053\u223C\uFF5E][\d]+)?$/ + +// For regions that have multiple IDD prefixes +// a preferred IDD prefix is returned. +export default function getIddPrefix(country, callingCode, metadata) { + const countryMetadata = new Metadata(metadata) + countryMetadata.selectNumberingPlan(country, callingCode) + if (countryMetadata.defaultIDDPrefix()) { + return countryMetadata.defaultIDDPrefix() + } + if (SINGLE_IDD_PREFIX_REG_EXP.test(countryMetadata.IDDPrefix())) { + return countryMetadata.IDDPrefix() + } +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/getNumberType.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/getNumberType.js new file mode 100644 index 00000000..99d4f97d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/getNumberType.js @@ -0,0 +1,97 @@ +import Metadata from '../metadata.js' +import matchesEntirely from './matchesEntirely.js' + +const NON_FIXED_LINE_PHONE_TYPES = [ + 'MOBILE', + 'PREMIUM_RATE', + 'TOLL_FREE', + 'SHARED_COST', + 'VOIP', + 'PERSONAL_NUMBER', + 'PAGER', + 'UAN', + 'VOICEMAIL' +] + +// Finds out national phone number type (fixed line, mobile, etc) +export default function getNumberType(input, options, metadata) +{ + // If assigning the `{}` default value is moved to the arguments above, + // code coverage would decrease for some weird reason. + options = options || {} + + // When `parse()` returned `{}` + // meaning that the phone number is not a valid one. + if (!input.country) { + return + } + + metadata = new Metadata(metadata) + + metadata.selectNumberingPlan(input.country, input.countryCallingCode) + + const nationalNumber = options.v2 ? input.nationalNumber : input.phone + + // The following is copy-pasted from the original function: + // https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835 + + // Is this national number even valid for this country + if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) { + return + } + + // Is it fixed line number + if (isNumberTypeEqualTo(nationalNumber, 'FIXED_LINE', metadata)) { + // Because duplicate regular expressions are removed + // to reduce metadata size, if "mobile" pattern is "" + // then it means it was removed due to being a duplicate of the fixed-line pattern. + // + if (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') { + return 'FIXED_LINE_OR_MOBILE' + } + + // `MOBILE` type pattern isn't included if it matched `FIXED_LINE` one. + // For example, for "US" country. + // Old metadata (< `1.0.18`) had a specific "types" data structure + // that happened to be `undefined` for `MOBILE` in that case. + // Newer metadata (>= `1.0.18`) has another data structure that is + // not `undefined` for `MOBILE` in that case (it's just an empty array). + // So this `if` is just for backwards compatibility with old metadata. + if (!metadata.type('MOBILE')) { + return 'FIXED_LINE_OR_MOBILE' + } + + // Check if the number happens to qualify as both fixed line and mobile. + // (no such country in the minimal metadata set) + /* istanbul ignore if */ + if (isNumberTypeEqualTo(nationalNumber, 'MOBILE', metadata)) { + return 'FIXED_LINE_OR_MOBILE' + } + + return 'FIXED_LINE' + } + + for (const type of NON_FIXED_LINE_PHONE_TYPES) { + if (isNumberTypeEqualTo(nationalNumber, type, metadata)) { + return type + } + } +} + +export function isNumberTypeEqualTo(nationalNumber, type, metadata) { + type = metadata.type(type) + if (!type || !type.pattern()) { + return false + } + // Check if any possible number lengths are present; + // if so, we use them to avoid checking + // the validation pattern if they don't match. + // If they are absent, this means they match + // the general description, which we have + // already checked before a specific number type. + if (type.possibleLengths() && + type.possibleLengths().indexOf(nationalNumber.length) < 0) { + return false + } + return matchesEntirely(nationalNumber, type.pattern()) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/getNumberType.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/getNumberType.test.js new file mode 100644 index 00000000..17f661b6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/getNumberType.test.js @@ -0,0 +1,19 @@ +import getNumberType from './getNumberType.js' + +import oldMetadata from '../../test/metadata/1.0.0/metadata.min.json' assert { type: 'json' } + +import Metadata from '../metadata.js' + + +describe('getNumberType', function() { + it('should get number type when using old metadata', function() { + getNumberType( + { + nationalNumber: '2133734253', + country: 'US' + }, + { v2: true }, + oldMetadata + ).should.equal('FIXED_LINE_OR_MOBILE') + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/isViablePhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/isViablePhoneNumber.js new file mode 100644 index 00000000..7092d284 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/isViablePhoneNumber.js @@ -0,0 +1,108 @@ +import { + MIN_LENGTH_FOR_NSN, + VALID_DIGITS, + VALID_PUNCTUATION, + PLUS_CHARS +} from '../constants.js' + +import createExtensionPattern from './extension/createExtensionPattern.js' + +// Regular expression of viable phone numbers. This is location independent. +// Checks we have at least three leading digits, and only valid punctuation, +// alpha characters and digits in the phone number. Does not include extension +// data. The symbol 'x' is allowed here as valid punctuation since it is often +// used as a placeholder for carrier codes, for example in Brazilian phone +// numbers. We also allow multiple '+' characters at the start. +// +// Corresponds to the following: +// [digits]{minLengthNsn}| +// plus_sign* +// (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])* +// +// The first reg-ex is to allow short numbers (two digits long) to be parsed if +// they are entered as "15" etc, but only if there is no punctuation in them. +// The second expression restricts the number of digits to three or more, but +// then allows them to be in international form, and to have alpha-characters +// and punctuation. We split up the two reg-exes here and combine them when +// creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it +// with ^ and append $ to each branch. +// +// "Note VALID_PUNCTUATION starts with a -, +// so must be the first in the range" (c) Google devs. +// (wtf did they mean by saying that; probably nothing) +// +const MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + VALID_DIGITS + ']{' + MIN_LENGTH_FOR_NSN + '}' +// +// And this is the second reg-exp: +// (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp) +// +export const VALID_PHONE_NUMBER = + '[' + PLUS_CHARS + ']{0,1}' + + '(?:' + + '[' + VALID_PUNCTUATION + ']*' + + '[' + VALID_DIGITS + ']' + + '){3,}' + + '[' + + VALID_PUNCTUATION + + VALID_DIGITS + + ']*' + +// This regular expression isn't present in Google's `libphonenumber` +// and is only used to determine whether the phone number being input +// is too short for it to even consider it a "valid" number. +// This is just a way to differentiate between a really invalid phone +// number like "abcde" and a valid phone number that a user has just +// started inputting, like "+1" or "1": both these cases would be +// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this +// library can provide a more detailed error message — whether it's +// really "not a number", or is it just a start of a valid phone number. +const VALID_PHONE_NUMBER_START_REG_EXP = new RegExp( + '^' + + '[' + PLUS_CHARS + ']{0,1}' + + '(?:' + + '[' + VALID_PUNCTUATION + ']*' + + '[' + VALID_DIGITS + ']' + + '){1,2}' + + '$' +, 'i') + +export const VALID_PHONE_NUMBER_WITH_EXTENSION = + VALID_PHONE_NUMBER + + // Phone number extensions + '(?:' + createExtensionPattern() + ')?' + +// The combined regular expression for valid phone numbers: +// +const VALID_PHONE_NUMBER_PATTERN = new RegExp( + // Either a short two-digit-only phone number + '^' + + MIN_LENGTH_PHONE_NUMBER_PATTERN + + '$' + + '|' + + // Or a longer fully parsed phone number (min 3 characters) + '^' + + VALID_PHONE_NUMBER_WITH_EXTENSION + + '$' +, 'i') + +// Checks to see if the string of characters could possibly be a phone number at +// all. At the moment, checks to see that the string begins with at least 2 +// digits, ignoring any punctuation commonly found in phone numbers. This method +// does not require the number to be normalized in advance - but does assume +// that leading non-number symbols have been removed, such as by the method +// `extract_possible_number`. +// +export default function isViablePhoneNumber(number) { + return number.length >= MIN_LENGTH_FOR_NSN && + VALID_PHONE_NUMBER_PATTERN.test(number) +} + +// This is just a way to differentiate between a really invalid phone +// number like "abcde" and a valid phone number that a user has just +// started inputting, like "+1" or "1": both these cases would be +// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this +// library can provide a more detailed error message — whether it's +// really "not a number", or is it just a start of a valid phone number. +export function isViablePhoneNumberStart(number) { + return VALID_PHONE_NUMBER_START_REG_EXP.test(number) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/matchesEntirely.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/matchesEntirely.js new file mode 100644 index 00000000..d57fdfaa --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/matchesEntirely.js @@ -0,0 +1,11 @@ +/** + * Checks whether the entire input sequence can be matched + * against the regular expression. + * @return {boolean} + */ +export default function matchesEntirely(text, regular_expression) { + // If assigning the `''` default value is moved to the arguments above, + // code coverage would decrease for some weird reason. + text = text || '' + return new RegExp('^(?:' + regular_expression + ')$').test(text) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/matchesEntirely.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/matchesEntirely.test.js new file mode 100644 index 00000000..d3550b4f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/matchesEntirely.test.js @@ -0,0 +1,11 @@ +import matchesEntirely from './matchesEntirely.js' + +describe('matchesEntirely', () => { + it('should work in edge cases', () => { + // No text. + matchesEntirely(undefined, '').should.equal(true) + + // "OR" in regexp. + matchesEntirely('911231231', '4\d{8}|[1-9]\d{7}').should.equal(false) + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/mergeArrays.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/mergeArrays.js new file mode 100644 index 00000000..afd13815 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/mergeArrays.js @@ -0,0 +1,24 @@ +/** + * Merges two arrays. + * @param {*} a + * @param {*} b + * @return {*} + */ +export default function mergeArrays(a, b) { + const merged = a.slice() + + for (const element of b) { + if (a.indexOf(element) < 0) { + merged.push(element) + } + } + + return merged.sort((a, b) => a - b) + + // ES6 version, requires Set polyfill. + // let merged = new Set(a) + // for (const element of b) { + // merged.add(i) + // } + // return Array.from(merged).sort((a, b) => a - b) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/mergeArrays.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/mergeArrays.test.js new file mode 100644 index 00000000..1d0eb1ab --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/mergeArrays.test.js @@ -0,0 +1,7 @@ +import mergeArrays from './mergeArrays.js' + +describe('mergeArrays', () => { + it('should merge arrays', () => { + mergeArrays([1, 2], [2, 3]).should.deep.equal([1, 2, 3]) + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/parseDigits.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/parseDigits.js new file mode 100644 index 00000000..8a4df1d4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/parseDigits.js @@ -0,0 +1,82 @@ +// These mappings map a character (key) to a specific digit that should +// replace it for normalization purposes. Non-European digits that +// may be used in phone numbers are mapped to a European equivalent. +// +// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`. +// +export const DIGITS = { + '0': '0', + '1': '1', + '2': '2', + '3': '3', + '4': '4', + '5': '5', + '6': '6', + '7': '7', + '8': '8', + '9': '9', + '\uFF10': '0', // Fullwidth digit 0 + '\uFF11': '1', // Fullwidth digit 1 + '\uFF12': '2', // Fullwidth digit 2 + '\uFF13': '3', // Fullwidth digit 3 + '\uFF14': '4', // Fullwidth digit 4 + '\uFF15': '5', // Fullwidth digit 5 + '\uFF16': '6', // Fullwidth digit 6 + '\uFF17': '7', // Fullwidth digit 7 + '\uFF18': '8', // Fullwidth digit 8 + '\uFF19': '9', // Fullwidth digit 9 + '\u0660': '0', // Arabic-indic digit 0 + '\u0661': '1', // Arabic-indic digit 1 + '\u0662': '2', // Arabic-indic digit 2 + '\u0663': '3', // Arabic-indic digit 3 + '\u0664': '4', // Arabic-indic digit 4 + '\u0665': '5', // Arabic-indic digit 5 + '\u0666': '6', // Arabic-indic digit 6 + '\u0667': '7', // Arabic-indic digit 7 + '\u0668': '8', // Arabic-indic digit 8 + '\u0669': '9', // Arabic-indic digit 9 + '\u06F0': '0', // Eastern-Arabic digit 0 + '\u06F1': '1', // Eastern-Arabic digit 1 + '\u06F2': '2', // Eastern-Arabic digit 2 + '\u06F3': '3', // Eastern-Arabic digit 3 + '\u06F4': '4', // Eastern-Arabic digit 4 + '\u06F5': '5', // Eastern-Arabic digit 5 + '\u06F6': '6', // Eastern-Arabic digit 6 + '\u06F7': '7', // Eastern-Arabic digit 7 + '\u06F8': '8', // Eastern-Arabic digit 8 + '\u06F9': '9' // Eastern-Arabic digit 9 +} + +export function parseDigit(character) { + return DIGITS[character] +} + +/** + * Parses phone number digits from a string. + * Drops all punctuation leaving only digits. + * Also converts wide-ascii and arabic-indic numerals to conventional numerals. + * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`. + * @param {string} string + * @return {string} + * @example + * ```js + * parseDigits('8 (800) 555') + * // Outputs '8800555'. + * ``` + */ +export default function parseDigits(string) { + let result = '' + // Using `.split('')` here instead of normal `for ... of` + // because the importing application doesn't neccessarily include an ES6 polyfill. + // The `.split('')` approach discards "exotic" UTF-8 characters + // (the ones consisting of four bytes) but digits + // (including non-European ones) don't fall into that range + // so such "exotic" characters would be discarded anyway. + for (const character of string.split('')) { + const digit = parseDigit(character) + if (digit) { + result += digit + } + } + return result +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/parseDigits.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/parseDigits.test.js new file mode 100644 index 00000000..7dc130b8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/parseDigits.test.js @@ -0,0 +1,7 @@ +import parseDigits from './parseDigits.js' + +describe('parseDigits', () => { + it('should parse digits', () => { + parseDigits('+٤٤٢٣٢٣٢٣٤').should.equal('442323234') + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/stripIddPrefix.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/stripIddPrefix.js new file mode 100644 index 00000000..f8753e38 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/stripIddPrefix.js @@ -0,0 +1,30 @@ +import Metadata from '../metadata.js' +import { VALID_DIGITS } from '../constants.js' + +const CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])') + +export default function stripIddPrefix(number, country, callingCode, metadata) { + if (!country) { + return + } + // Check if the number is IDD-prefixed. + const countryMetadata = new Metadata(metadata) + countryMetadata.selectNumberingPlan(country, callingCode) + const IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix()) + if (number.search(IDDPrefixPattern) !== 0) { + return + } + // Strip IDD prefix. + number = number.slice(number.match(IDDPrefixPattern)[0].length) + // If there're any digits after an IDD prefix, + // then those digits are a country calling code. + // Since no country code starts with a `0`, + // the code below validates that the next digit (if present) is not `0`. + const matchedGroups = number.match(CAPTURING_DIGIT_PATTERN) + if (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) { + if (matchedGroups[1] === '0') { + return + } + } + return number +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/stripIddPrefix.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/stripIddPrefix.test.js new file mode 100644 index 00000000..b4c8cd6f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/helpers/stripIddPrefix.test.js @@ -0,0 +1,21 @@ +import stripIddPrefix from './stripIddPrefix.js' + +import metadata from '../../metadata.min.json' assert { type: 'json' } + +describe('stripIddPrefix', () => { + it('should strip a valid IDD prefix', () => { + stripIddPrefix('01178005553535', 'US', '1', metadata).should.equal('78005553535') + }) + + it('should strip a valid IDD prefix (no country calling code)', () => { + stripIddPrefix('011', 'US', '1', metadata).should.equal('') + }) + + it('should strip a valid IDD prefix (valid country calling code)', () => { + stripIddPrefix('0117', 'US', '1', metadata).should.equal('7') + }) + + it('should strip a valid IDD prefix (not a valid country calling code)', () => { + expect(stripIddPrefix('0110', 'US', '1', metadata)).to.be.undefined + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isPossibleNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isPossibleNumber.js new file mode 100644 index 00000000..12728921 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isPossibleNumber.js @@ -0,0 +1,22 @@ +import { normalizeArguments } from './getNumberType.js' +import _isPossibleNumber from './isPossibleNumber_.js' + +/** + * Checks if a given phone number is possible. + * Which means it only checks phone number length + * and doesn't test any regular expressions. + * + * Examples: + * + * ```js + * isPossibleNumber('+78005553535', metadata) + * isPossibleNumber('8005553535', 'RU', metadata) + * isPossibleNumber('88005553535', 'RU', metadata) + * isPossibleNumber({ phone: '8005553535', country: 'RU' }, metadata) + * ``` + */ +export default function isPossibleNumber() +{ + const { input, options, metadata } = normalizeArguments(arguments) + return _isPossibleNumber(input, options, metadata) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isPossibleNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isPossibleNumber.test.js new file mode 100644 index 00000000..afd70303 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isPossibleNumber.test.js @@ -0,0 +1,40 @@ +import metadata from '../metadata.min.json' assert { type: 'json' } +import _isPossibleNumber from './isPossibleNumber.js' + +function isPossibleNumber(...parameters) { + parameters.push(metadata) + return _isPossibleNumber.apply(this, parameters) +} + +describe('isPossibleNumber', () => { + it('should work', function() + { + isPossibleNumber('+79992223344').should.equal(true) + + isPossibleNumber({ phone: '1112223344', country: 'RU' }).should.equal(true) + isPossibleNumber({ phone: '111222334', country: 'RU' }).should.equal(false) + isPossibleNumber({ phone: '11122233445', country: 'RU' }).should.equal(false) + + isPossibleNumber({ phone: '1112223344', countryCallingCode: 7 }).should.equal(true) + }) + + it('should work v2', () => { + isPossibleNumber({ nationalNumber: '111222334', countryCallingCode: 7 }, { v2: true }).should.equal(false) + isPossibleNumber({ nationalNumber: '1112223344', countryCallingCode: 7 }, { v2: true }).should.equal(true) + isPossibleNumber({ nationalNumber: '11122233445', countryCallingCode: 7 }, { v2: true }).should.equal(false) + }) + + it('should work in edge cases', () => { + // Invalid `PhoneNumber` argument. + expect(() => isPossibleNumber({}, { v2: true })).to.throw('Invalid phone number object passed') + + // Empty input is passed. + // This is just to support `isValidNumber({})` + // for cases when `parseNumber()` returns `{}`. + isPossibleNumber({}).should.equal(false) + expect(() => isPossibleNumber({ phone: '1112223344' })).to.throw('Invalid phone number object passed') + + // Incorrect country. + expect(() => isPossibleNumber({ phone: '1112223344', country: 'XX' })).to.throw('Unknown country') + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isPossibleNumber_.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isPossibleNumber_.js new file mode 100644 index 00000000..7da05acd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isPossibleNumber_.js @@ -0,0 +1,65 @@ +import Metadata from './metadata.js' +import checkNumberLength from './helpers/checkNumberLength.js' + +export default function isPossiblePhoneNumber(input, options, metadata) { + /* istanbul ignore if */ + if (options === undefined) { + options = {} + } + + metadata = new Metadata(metadata) + + if (options.v2) { + if (!input.countryCallingCode) { + throw new Error('Invalid phone number object passed') + } + metadata.selectNumberingPlan(input.countryCallingCode) + } else { + if (!input.phone) { + return false + } + if (input.country) { + if (!metadata.hasCountry(input.country)) { + throw new Error(`Unknown country: ${input.country}`) + } + metadata.country(input.country) + } else { + if (!input.countryCallingCode) { + throw new Error('Invalid phone number object passed') + } + metadata.selectNumberingPlan(input.countryCallingCode) + } + } + + // Old metadata (< 1.0.18) had no "possible length" data. + if (metadata.possibleLengths()) { + return isPossibleNumber(input.phone || input.nationalNumber, metadata) + } else { + // There was a bug between `1.7.35` and `1.7.37` where "possible_lengths" + // were missing for "non-geographical" numbering plans. + // Just assume the number is possible in such cases: + // it's unlikely that anyone generated their custom metadata + // in that short period of time (one day). + // This code can be removed in some future major version update. + if (input.countryCallingCode && metadata.isNonGeographicCallingCode(input.countryCallingCode)) { + // "Non-geographic entities" did't have `possibleLengths` + // due to a bug in metadata generation process. + return true + } else { + throw new Error('Missing "possibleLengths" in metadata. Perhaps the metadata has been generated before v1.0.18.'); + } + } +} + +export function isPossibleNumber(nationalNumber, metadata) { //, isInternational) { + switch (checkNumberLength(nationalNumber, metadata)) { + case 'IS_POSSIBLE': + return true + // This library ignores "local-only" phone numbers (for simplicity). + // See the readme for more info on what are "local-only" phone numbers. + // case 'IS_POSSIBLE_LOCAL_ONLY': + // return !isInternational + default: + return false + } +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isPossiblePhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isPossiblePhoneNumber.js new file mode 100644 index 00000000..4abf3f5f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isPossiblePhoneNumber.js @@ -0,0 +1,12 @@ +import { normalizeArguments } from './parsePhoneNumber.js' +import parsePhoneNumberFromString from './parsePhoneNumberFromString_.js' + +export default function isPossiblePhoneNumber() { + let { text, options, metadata } = normalizeArguments(arguments) + options = { + ...options, + extract: false + } + const phoneNumber = parsePhoneNumberFromString(text, options, metadata) + return phoneNumber && phoneNumber.isPossible() || false +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isPossiblePhoneNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isPossiblePhoneNumber.test.js new file mode 100644 index 00000000..8c51828e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isPossiblePhoneNumber.test.js @@ -0,0 +1,27 @@ +import _isPossiblePhoneNumber from './isPossiblePhoneNumber.js' +import metadata from '../metadata.min.json' assert { type: 'json' } +import oldMetadata from '../test/metadata/1.0.0/metadata.min.json' assert { type: 'json' } + +function isPossiblePhoneNumber(...parameters) { + parameters.push(metadata) + return _isPossiblePhoneNumber.apply(this, parameters) +} + +describe('isPossiblePhoneNumber', () => { + it('should detect whether a phone number is possible', () => { + isPossiblePhoneNumber('8 (800) 555 35 35', 'RU').should.equal(true) + isPossiblePhoneNumber('8 (800) 555 35 35 0', 'RU').should.equal(false) + isPossiblePhoneNumber('Call: 8 (800) 555 35 35', 'RU').should.equal(false) + isPossiblePhoneNumber('8 (800) 555 35 35', { defaultCountry: 'RU' }).should.equal(true) + isPossiblePhoneNumber('+7 (800) 555 35 35').should.equal(true) + isPossiblePhoneNumber('+7 1 (800) 555 35 35').should.equal(false) + isPossiblePhoneNumber(' +7 (800) 555 35 35').should.equal(false) + isPossiblePhoneNumber(' ').should.equal(false) + }) + + it('should detect whether a phone number is possible when using old metadata', () => { + expect(() => _isPossiblePhoneNumber('8 (800) 555 35 35', 'RU', oldMetadata)) + .to.throw('Missing "possibleLengths" in metadata.') + _isPossiblePhoneNumber('+888 123 456 78901', oldMetadata).should.equal(true) + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isValidNumberForRegion.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isValidNumberForRegion.js new file mode 100644 index 00000000..a5088d13 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isValidNumberForRegion.js @@ -0,0 +1,24 @@ +import isViablePhoneNumber from './helpers/isViablePhoneNumber.js' +import parseNumber from './parse_.js' +import _isValidNumberForRegion from './isValidNumberForRegion_.js' + +export default function isValidNumberForRegion(number, country, metadata) { + if (typeof number !== 'string') { + throw new TypeError('number must be a string') + } + if (typeof country !== 'string') { + throw new TypeError('country must be a string') + } + // `parse` extracts phone numbers from raw text, + // therefore it will cut off all "garbage" characters, + // while this `validate` function needs to verify + // that the phone number contains no "garbage" + // therefore the explicit `isViablePhoneNumber` check. + let input + if (isViablePhoneNumber(number)) { + input = parseNumber(number, { defaultCountry: country }, metadata) + } else { + input = {} + } + return _isValidNumberForRegion(input, country, undefined, metadata) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isValidNumberForRegion.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isValidNumberForRegion.test.js new file mode 100644 index 00000000..e7ceb2a9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isValidNumberForRegion.test.js @@ -0,0 +1,28 @@ +import metadata from '../metadata.min.json' assert { type: 'json' } +import isValidNumberForRegionCustom from './isValidNumberForRegion.js' +import _isValidNumberForRegion from './isValidNumberForRegion_.js' + +function isValidNumberForRegion(...parameters) { + parameters.push(metadata) + return isValidNumberForRegionCustom.apply(this, parameters) +} + +describe('isValidNumberForRegion', () => { + it('should detect if is valid number for region', () => { + isValidNumberForRegion('07624369230', 'GB').should.equal(false) + isValidNumberForRegion('07624369230', 'IM').should.equal(true) + }) + + it('should validate arguments', () => { + expect(() => isValidNumberForRegion({ phone: '7624369230', country: 'GB' })).to.throw('number must be a string') + expect(() => isValidNumberForRegion('7624369230')).to.throw('country must be a string') + }) + + it('should work in edge cases', () => { + // Not a "viable" phone number. + isValidNumberForRegion('7', 'GB').should.equal(false) + + // `options` argument `if/else` coverage. + _isValidNumberForRegion('07624369230', 'GB', {}, metadata).should.equal(false) + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isValidNumberForRegion_.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isValidNumberForRegion_.js new file mode 100644 index 00000000..b69d94ce --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isValidNumberForRegion_.js @@ -0,0 +1,13 @@ +import isValidNumber from './validate_.js' + +/** + * Checks if a given phone number is valid within a given region. + * Is just an alias for `phoneNumber.isValid() && phoneNumber.country === country`. + * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion + */ +export default function isValidNumberForRegion(input, country, options, metadata) { + // If assigning the `{}` default value is moved to the arguments above, + // code coverage would decrease for some weird reason. + options = options || {} + return input.country === country && isValidNumber(input, options, metadata) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isValidPhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isValidPhoneNumber.js new file mode 100644 index 00000000..f41a1158 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isValidPhoneNumber.js @@ -0,0 +1,12 @@ +import { normalizeArguments } from './parsePhoneNumber.js' +import parsePhoneNumberFromString from './parsePhoneNumberFromString_.js' + +export default function isValidPhoneNumber() { + let { text, options, metadata } = normalizeArguments(arguments) + options = { + ...options, + extract: false + } + const phoneNumber = parsePhoneNumberFromString(text, options, metadata) + return phoneNumber && phoneNumber.isValid() || false +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isValidPhoneNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isValidPhoneNumber.test.js new file mode 100644 index 00000000..7a869d92 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/isValidPhoneNumber.test.js @@ -0,0 +1,20 @@ +import _isValidPhoneNumber from './isValidPhoneNumber.js' +import metadata from '../metadata.min.json' assert { type: 'json' } + +function isValidPhoneNumber(...parameters) { + parameters.push(metadata) + return _isValidPhoneNumber.apply(this, parameters) +} + +describe('isValidPhoneNumber', () => { + it('should detect whether a phone number is valid', () => { + isValidPhoneNumber('8 (800) 555 35 35', 'RU').should.equal(true) + isValidPhoneNumber('8 (800) 555 35 35 0', 'RU').should.equal(false) + isValidPhoneNumber('Call: 8 (800) 555 35 35', 'RU').should.equal(false) + isValidPhoneNumber('8 (800) 555 35 35', { defaultCountry: 'RU' }).should.equal(true) + isValidPhoneNumber('+7 (800) 555 35 35').should.equal(true) + isValidPhoneNumber('+7 1 (800) 555 35 35').should.equal(false) + isValidPhoneNumber(' +7 (800) 555 35 35').should.equal(false) + isValidPhoneNumber(' ').should.equal(false) + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/metadata.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/metadata.js new file mode 100644 index 00000000..c355838c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/metadata.js @@ -0,0 +1,540 @@ +import compare from './tools/semver-compare.js' + +// Added "possibleLengths" and renamed +// "country_phone_code_to_countries" to "country_calling_codes". +const V2 = '1.0.18' + +// Added "idd_prefix" and "default_idd_prefix". +const V3 = '1.2.0' + +// Moved `001` country code to "nonGeographic" section of metadata. +const V4 = '1.7.35' + +const DEFAULT_EXT_PREFIX = ' ext. ' + +const CALLING_CODE_REG_EXP = /^\d+$/ + +/** + * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md + */ +export default class Metadata { + constructor(metadata) { + validateMetadata(metadata) + this.metadata = metadata + setVersion.call(this, metadata) + } + + getCountries() { + return Object.keys(this.metadata.countries).filter(_ => _ !== '001') + } + + getCountryMetadata(countryCode) { + return this.metadata.countries[countryCode] + } + + nonGeographic() { + if (this.v1 || this.v2 || this.v3) return + // `nonGeographical` was a typo. + // It's present in metadata generated from `1.7.35` to `1.7.37`. + // The test case could be found by searching for "nonGeographical". + return this.metadata.nonGeographic || this.metadata.nonGeographical + } + + hasCountry(country) { + return this.getCountryMetadata(country) !== undefined + } + + hasCallingCode(callingCode) { + if (this.getCountryCodesForCallingCode(callingCode)) { + return true + } + if (this.nonGeographic()) { + if (this.nonGeographic()[callingCode]) { + return true + } + } else { + // A hacky workaround for old custom metadata (generated before V4). + const countryCodes = this.countryCallingCodes()[callingCode] + if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') { + return true + } + } + } + + isNonGeographicCallingCode(callingCode) { + if (this.nonGeographic()) { + return this.nonGeographic()[callingCode] ? true : false + } else { + return this.getCountryCodesForCallingCode(callingCode) ? false : true + } + } + + // Deprecated. + country(countryCode) { + return this.selectNumberingPlan(countryCode) + } + + selectNumberingPlan(countryCode, callingCode) { + // Supports just passing `callingCode` as the first argument. + if (countryCode && CALLING_CODE_REG_EXP.test(countryCode)) { + callingCode = countryCode + countryCode = null + } + if (countryCode && countryCode !== '001') { + if (!this.hasCountry(countryCode)) { + throw new Error(`Unknown country: ${countryCode}`) + } + this.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this) + } else if (callingCode) { + if (!this.hasCallingCode(callingCode)) { + throw new Error(`Unknown calling code: ${callingCode}`) + } + this.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this) + } else { + this.numberingPlan = undefined + } + return this + } + + getCountryCodesForCallingCode(callingCode) { + const countryCodes = this.countryCallingCodes()[callingCode] + if (countryCodes) { + // Metadata before V4 included "non-geographic entity" calling codes + // inside `country_calling_codes` (for example, `"881":["001"]`). + // Now the semantics of `country_calling_codes` has changed: + // it's specifically for "countries" now. + // Older versions of custom metadata will simply skip parsing + // "non-geographic entity" phone numbers with new versions + // of this library: it's not considered a bug, + // because such numbers are extremely rare, + // and developers extremely rarely use custom metadata. + if (countryCodes.length === 1 && countryCodes[0].length === 3) { + return + } + return countryCodes + } + } + + getCountryCodeForCallingCode(callingCode) { + const countryCodes = this.getCountryCodesForCallingCode(callingCode) + if (countryCodes) { + return countryCodes[0] + } + } + + getNumberingPlanMetadata(callingCode) { + const countryCode = this.getCountryCodeForCallingCode(callingCode) + if (countryCode) { + return this.getCountryMetadata(countryCode) + } + if (this.nonGeographic()) { + const metadata = this.nonGeographic()[callingCode] + if (metadata) { + return metadata + } + } else { + // A hacky workaround for old custom metadata (generated before V4). + // In that metadata, there was no concept of "non-geographic" metadata + // so metadata for `001` country code was stored along with other countries. + // The test case can be found by searching for: + // "should work around `nonGeographic` metadata not existing". + const countryCodes = this.countryCallingCodes()[callingCode] + if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') { + return this.metadata.countries['001'] + } + } + } + + // Deprecated. + countryCallingCode() { + return this.numberingPlan.callingCode() + } + + // Deprecated. + IDDPrefix() { + return this.numberingPlan.IDDPrefix() + } + + // Deprecated. + defaultIDDPrefix() { + return this.numberingPlan.defaultIDDPrefix() + } + + // Deprecated. + nationalNumberPattern() { + return this.numberingPlan.nationalNumberPattern() + } + + // Deprecated. + possibleLengths() { + return this.numberingPlan.possibleLengths() + } + + // Deprecated. + formats() { + return this.numberingPlan.formats() + } + + // Deprecated. + nationalPrefixForParsing() { + return this.numberingPlan.nationalPrefixForParsing() + } + + // Deprecated. + nationalPrefixTransformRule() { + return this.numberingPlan.nationalPrefixTransformRule() + } + + // Deprecated. + leadingDigits() { + return this.numberingPlan.leadingDigits() + } + + // Deprecated. + hasTypes() { + return this.numberingPlan.hasTypes() + } + + // Deprecated. + type(type) { + return this.numberingPlan.type(type) + } + + // Deprecated. + ext() { + return this.numberingPlan.ext() + } + + countryCallingCodes() { + if (this.v1) return this.metadata.country_phone_code_to_countries + return this.metadata.country_calling_codes + } + + // Deprecated. + chooseCountryByCountryCallingCode(callingCode) { + return this.selectNumberingPlan(callingCode) + } + + hasSelectedNumberingPlan() { + return this.numberingPlan !== undefined + } +} + +class NumberingPlan { + constructor(metadata, globalMetadataObject) { + this.globalMetadataObject = globalMetadataObject + this.metadata = metadata + setVersion.call(this, globalMetadataObject.metadata) + } + + callingCode() { + return this.metadata[0] + } + + // Formatting information for regions which share + // a country calling code is contained by only one region + // for performance reasons. For example, for NANPA region + // ("North American Numbering Plan Administration", + // which includes USA, Canada, Cayman Islands, Bahamas, etc) + // it will be contained in the metadata for `US`. + getDefaultCountryMetadataForRegion() { + return this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode()) + } + + // Is always present. + IDDPrefix() { + if (this.v1 || this.v2) return + return this.metadata[1] + } + + // Is only present when a country supports multiple IDD prefixes. + defaultIDDPrefix() { + if (this.v1 || this.v2) return + return this.metadata[12] + } + + nationalNumberPattern() { + if (this.v1 || this.v2) return this.metadata[1] + return this.metadata[2] + } + + // "possible length" data is always present in Google's metadata. + possibleLengths() { + if (this.v1) return + return this.metadata[this.v2 ? 2 : 3] + } + + _getFormats(metadata) { + return metadata[this.v1 ? 2 : this.v2 ? 3 : 4] + } + + // For countries of the same region (e.g. NANPA) + // formats are all stored in the "main" country for that region. + // E.g. "RU" and "KZ", "US" and "CA". + formats() { + const formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || [] + return formats.map(_ => new Format(_, this)) + } + + nationalPrefix() { + return this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5] + } + + _getNationalPrefixFormattingRule(metadata) { + return metadata[this.v1 ? 4 : this.v2 ? 5 : 6] + } + + // For countries of the same region (e.g. NANPA) + // national prefix formatting rule is stored in the "main" country for that region. + // E.g. "RU" and "KZ", "US" and "CA". + nationalPrefixFormattingRule() { + return this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion()) + } + + _nationalPrefixForParsing() { + return this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7] + } + + nationalPrefixForParsing() { + // If `national_prefix_for_parsing` is not set explicitly, + // then infer it from `national_prefix` (if any) + return this._nationalPrefixForParsing() || this.nationalPrefix() + } + + nationalPrefixTransformRule() { + return this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8] + } + + _getNationalPrefixIsOptionalWhenFormatting() { + return !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9] + } + + // For countries of the same region (e.g. NANPA) + // "national prefix is optional when formatting" flag is + // stored in the "main" country for that region. + // E.g. "RU" and "KZ", "US" and "CA". + nationalPrefixIsOptionalWhenFormattingInNationalFormat() { + return this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) || + this._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion()) + } + + leadingDigits() { + return this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10] + } + + types() { + return this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11] + } + + hasTypes() { + // Versions 1.2.0 - 1.2.4: can be `[]`. + /* istanbul ignore next */ + if (this.types() && this.types().length === 0) { + return false + } + // Versions <= 1.2.4: can be `undefined`. + // Version >= 1.2.5: can be `0`. + return !!this.types() + } + + type(type) { + if (this.hasTypes() && getType(this.types(), type)) { + return new Type(getType(this.types(), type), this) + } + } + + ext() { + if (this.v1 || this.v2) return DEFAULT_EXT_PREFIX + return this.metadata[13] || DEFAULT_EXT_PREFIX + } +} + +class Format { + constructor(format, metadata) { + this._format = format + this.metadata = metadata + } + + pattern() { + return this._format[0] + } + + format() { + return this._format[1] + } + + leadingDigitsPatterns() { + return this._format[2] || [] + } + + nationalPrefixFormattingRule() { + return this._format[3] || this.metadata.nationalPrefixFormattingRule() + } + + nationalPrefixIsOptionalWhenFormattingInNationalFormat() { + return !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat() + } + + nationalPrefixIsMandatoryWhenFormattingInNationalFormat() { + // National prefix is omitted if there's no national prefix formatting rule + // set for this country, or when the national prefix formatting rule + // contains no national prefix itself, or when this rule is set but + // national prefix is optional for this phone number format + // (and it is not enforced explicitly) + return this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat() + } + + // Checks whether national prefix formatting rule contains national prefix. + usesNationalPrefix() { + return this.nationalPrefixFormattingRule() && + // Check that national prefix formatting rule is not a "dummy" one. + !FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule()) + // In compressed metadata, `this.nationalPrefixFormattingRule()` is `0` + // when `national_prefix_formatting_rule` is not present. + // So, `true` or `false` are returned explicitly here, so that + // `0` number isn't returned. + ? true + : false + } + + internationalFormat() { + return this._format[5] || this.format() + } +} + +/** + * A pattern that is used to determine if the national prefix formatting rule + * has the first group only, i.e., does not start with the national prefix. + * Note that the pattern explicitly allows for unbalanced parentheses. + */ +const FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\(?\$1\)?$/ + +class Type { + constructor(type, metadata) { + this.type = type + this.metadata = metadata + } + + pattern() { + if (this.metadata.v1) return this.type + return this.type[0] + } + + possibleLengths() { + if (this.metadata.v1) return + return this.type[1] || this.metadata.possibleLengths() + } +} + +function getType(types, type) { + switch (type) { + case 'FIXED_LINE': + return types[0] + case 'MOBILE': + return types[1] + case 'TOLL_FREE': + return types[2] + case 'PREMIUM_RATE': + return types[3] + case 'PERSONAL_NUMBER': + return types[4] + case 'VOICEMAIL': + return types[5] + case 'UAN': + return types[6] + case 'PAGER': + return types[7] + case 'VOIP': + return types[8] + case 'SHARED_COST': + return types[9] + } +} + +export function validateMetadata(metadata) { + if (!metadata) { + throw new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.') + } + + // `country_phone_code_to_countries` was renamed to + // `country_calling_codes` in `1.0.18`. + if (!is_object(metadata) || !is_object(metadata.countries)) { + throw new Error(`[libphonenumber-js] \`metadata\` argument was passed but it's not a valid metadata. Must be an object having \`.countries\` child object property. Got ${is_object(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + type_of(metadata) + ': ' + metadata}.`) + } +} + +// Babel transforms `typeof` into some "branches" +// so istanbul will show this as "branch not covered". +/* istanbul ignore next */ +const is_object = _ => typeof _ === 'object' + +// Babel transforms `typeof` into some "branches" +// so istanbul will show this as "branch not covered". +/* istanbul ignore next */ +const type_of = _ => typeof _ + +/** + * Returns extension prefix for a country. + * @param {string} country + * @param {object} metadata + * @return {string?} + * @example + * // Returns " ext. " + * getExtPrefix("US") + */ +export function getExtPrefix(country, metadata) { + metadata = new Metadata(metadata) + if (metadata.hasCountry(country)) { + return metadata.country(country).ext() + } + return DEFAULT_EXT_PREFIX +} + +/** + * Returns "country calling code" for a country. + * Throws an error if the country doesn't exist or isn't supported by this library. + * @param {string} country + * @param {object} metadata + * @return {string} + * @example + * // Returns "44" + * getCountryCallingCode("GB") + */ +export function getCountryCallingCode(country, metadata) { + metadata = new Metadata(metadata) + if (metadata.hasCountry(country)) { + return metadata.country(country).countryCallingCode() + } + throw new Error(`Unknown country: ${country}`) +} + +export function isSupportedCountry(country, metadata) { + // metadata = new Metadata(metadata) + // return metadata.hasCountry(country) + return metadata.countries[country] !== undefined +} + +function setVersion(metadata) { + const { version } = metadata + if (typeof version === 'number') { + this.v1 = version === 1 + this.v2 = version === 2 + this.v3 = version === 3 + this.v4 = version === 4 + } else { + if (!version) { + this.v1 = true + } else if (compare(version, V3) === -1) { + this.v2 = true + } else if (compare(version, V4) === -1) { + this.v3 = true + } else { + this.v4 = true + } + } +} + +// const ISO_COUNTRY_CODE = /^[A-Z]{2}$/ +// function isCountryCode(countryCode) { +// return ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode) +// } \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/metadata.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/metadata.test.js new file mode 100644 index 00000000..51086cb0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/metadata.test.js @@ -0,0 +1,163 @@ +import metadata from '../metadata.min.json' assert { type: 'json' } +import metadataV1 from '../test/metadata/1.0.0/metadata.min.json' assert { type: 'json' } +import metadataV2 from '../test/metadata/1.1.11/metadata.min.json' assert { type: 'json' } +import metadataV3 from '../test/metadata/1.7.34/metadata.min.json' assert { type: 'json' } +import metadataV4 from '../test/metadata/1.7.37/metadata.min.json' assert { type: 'json' } + +import Metadata, { validateMetadata, getExtPrefix, isSupportedCountry } from './metadata.js' + +describe('metadata', () => { + it('should return undefined for non-defined types', () => { + const FR = new Metadata(metadata).country('FR') + type(FR.type('FIXED_LINE')).should.equal('undefined') + }) + + it('should validate country', () => { + const thrower = () => new Metadata(metadata).country('RUS') + thrower.should.throw('Unknown country') + }) + + it('should tell if a country is supported', () => { + isSupportedCountry('RU', metadata).should.equal(true) + isSupportedCountry('XX', metadata).should.equal(false) + }) + + it('should return ext prefix for a country', () => { + getExtPrefix('US', metadata).should.equal(' ext. ') + getExtPrefix('CA', metadata).should.equal(' ext. ') + getExtPrefix('GB', metadata).should.equal(' x') + // expect(getExtPrefix('XX', metadata)).to.equal(undefined) + getExtPrefix('XX', metadata).should.equal(' ext. ') + }) + + it('should cover non-occuring edge cases', () => { + new Metadata(metadata).getNumberingPlanMetadata('999') + }) + + it('should support deprecated methods', () => { + new Metadata(metadata).country('US').nationalPrefixForParsing().should.equal('1') + new Metadata(metadata).chooseCountryByCountryCallingCode('1').nationalPrefixForParsing().should.equal('1') + }) + + it('should tell if a national prefix is mandatory when formatting a national number', () => { + const meta = new Metadata(metadata) + // No "national_prefix_formatting_rule". + // "national_prefix_is_optional_when_formatting": true + meta.country('US') + meta.numberingPlan.formats()[0].nationalPrefixIsMandatoryWhenFormattingInNationalFormat().should.equal(false) + // "national_prefix_formatting_rule": "8 ($1)" + // "national_prefix_is_optional_when_formatting": true + meta.country('RU') + meta.numberingPlan.formats()[0].nationalPrefixIsMandatoryWhenFormattingInNationalFormat().should.equal(false) + // "national_prefix": "0" + // "national_prefix_formatting_rule": "0 $1" + meta.country('FR') + meta.numberingPlan.formats()[0].nationalPrefixIsMandatoryWhenFormattingInNationalFormat().should.equal(true) + }) + + it('should validate metadata', () => { + let thrower = () => validateMetadata() + thrower.should.throw('`metadata` argument not passed') + + thrower = () => validateMetadata(123) + thrower.should.throw('Got a number: 123.') + + thrower = () => validateMetadata('abc') + thrower.should.throw('Got a string: abc.') + + thrower = () => validateMetadata({ a: true, b: 2 }) + thrower.should.throw('Got an object of shape: { a, b }.') + + thrower = () => validateMetadata({ a: true, countries: 2 }) + thrower.should.throw('Got an object of shape: { a, countries }.') + + thrower = () => validateMetadata({ country_calling_codes: true, countries: 2 }) + thrower.should.throw('Got an object of shape') + + thrower = () => validateMetadata({ country_calling_codes: {}, countries: 2 }) + thrower.should.throw('Got an object of shape') + + validateMetadata({ country_calling_codes: {}, countries: {}, b: 3 }) + }) + + it('should work around `nonGeographical` typo in metadata generated from `1.7.35` to `1.7.37`', function() { + const meta = new Metadata(metadataV4) + meta.selectNumberingPlan('888') + type(meta.nonGeographic()).should.equal('object') + }) + + it('should work around `nonGeographic` metadata not existing before `1.7.35`', function() { + const meta = new Metadata(metadataV3) + type(meta.getNumberingPlanMetadata('800')).should.equal('object') + type(meta.getNumberingPlanMetadata('000')).should.equal('undefined') + }) + + it('should work with metadata from version `1.1.11`', function() { + const meta = new Metadata(metadataV2) + + meta.selectNumberingPlan('US') + meta.numberingPlan.possibleLengths().should.deep.equal([10]) + meta.numberingPlan.formats().length.should.equal(1) + meta.numberingPlan.nationalPrefix().should.equal('1') + meta.numberingPlan.nationalPrefixForParsing().should.equal('1') + meta.numberingPlan.type('MOBILE').pattern().should.equal('') + + meta.selectNumberingPlan('AG') + meta.numberingPlan.leadingDigits().should.equal('268') + // Should've been "268$1" but apparently there was a bug in metadata generator + // and no national prefix transform rules were written. + expect(meta.numberingPlan.nationalPrefixTransformRule()).to.be.null + + meta.selectNumberingPlan('AF') + meta.numberingPlan.formats()[0].nationalPrefixFormattingRule().should.equal('0$1') + + meta.selectNumberingPlan('RU') + meta.numberingPlan.formats()[0].nationalPrefixIsOptionalWhenFormattingInNationalFormat().should.equal(true) + }) + + it('should work with metadata from version `1.0.0`', function() { + const meta = new Metadata(metadataV1) + + meta.selectNumberingPlan('US') + meta.numberingPlan.formats().length.should.equal(1) + meta.numberingPlan.nationalPrefix().should.equal('1') + meta.numberingPlan.nationalPrefixForParsing().should.equal('1') + type(meta.numberingPlan.type('MOBILE')).should.equal('undefined') + + meta.selectNumberingPlan('AG') + meta.numberingPlan.leadingDigits().should.equal('268') + // Should've been "268$1" but apparently there was a bug in metadata generator + // and no national prefix transform rules were written. + expect(meta.numberingPlan.nationalPrefixTransformRule()).to.be.null + + meta.selectNumberingPlan('AF') + meta.numberingPlan.formats()[0].nationalPrefixFormattingRule().should.equal('0$1') + + meta.selectNumberingPlan('RU') + meta.numberingPlan.formats()[0].nationalPrefixIsOptionalWhenFormattingInNationalFormat().should.equal(true) + }) + + it('should work around "ext" data not present in metadata from version `1.0.0`', function() { + const meta = new Metadata(metadataV1) + meta.selectNumberingPlan('GB') + meta.ext().should.equal(' ext. ') + + const metaNew = new Metadata(metadata) + metaNew.selectNumberingPlan('GB') + metaNew.ext().should.equal(' x') + }) + + it('should work around "default IDD prefix" data not present in metadata from version `1.0.0`', function() { + const meta = new Metadata(metadataV1) + meta.selectNumberingPlan('AU') + type(meta.defaultIDDPrefix()).should.equal('undefined') + + const metaNew = new Metadata(metadata) + metaNew.selectNumberingPlan('AU') + metaNew.defaultIDDPrefix().should.equal('0011') + }) +}) + +function type(something) { + return typeof something +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parse.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parse.js new file mode 100644 index 00000000..50fadd9f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parse.js @@ -0,0 +1,34 @@ +import _parseNumber from './parse_.js' +import { normalizeArguments } from './parsePhoneNumber.js' + +// `options`: +// { +// country: +// { +// restrict - (a two-letter country code) +// the phone number must be in this country +// +// default - (a two-letter country code) +// default country to use for phone number parsing and validation +// (if no country code could be derived from the phone number) +// } +// } +// +// Returns `{ country, number }` +// +// Example use cases: +// +// ```js +// parse('8 (800) 555-35-35', 'RU') +// parse('8 (800) 555-35-35', 'RU', metadata) +// parse('8 (800) 555-35-35', { country: { default: 'RU' } }) +// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata) +// parse('+7 800 555 35 35') +// parse('+7 800 555 35 35', metadata) +// ``` +// +export default function parseNumber() +{ + const { text, options, metadata } = normalizeArguments(arguments) + return _parseNumber(text, options, metadata) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parse.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parse.test.js new file mode 100644 index 00000000..828f8f4e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parse.test.js @@ -0,0 +1,524 @@ +import metadata from '../metadata.min.json' assert { type: 'json' } +import _parseNumber from './parse.js' +import Metadata from './metadata.js' + +function parseNumber(...parameters) { + parameters.push(metadata) + return _parseNumber.apply(this, parameters) +} + +const USE_NON_GEOGRAPHIC_COUNTRY_CODE = false + +describe('parse', () => { + it('should not parse invalid phone numbers', () => { + // Too short. + parseNumber('+7 (800) 55-35-35').should.deep.equal({}) + // Too long. + parseNumber('+7 (800) 55-35-35-55').should.deep.equal({}) + + parseNumber('+7 (800) 55-35-35', 'US').should.deep.equal({}) + parseNumber('(800) 55 35 35', { defaultCountry: 'RU' }).should.deep.equal({}) + parseNumber('+1 187 215 5230', 'US').should.deep.equal({}) + + parseNumber('911231231', 'BE').should.deep.equal({}) + }) + + it('should parse valid phone numbers', () => { + // Instant loans + // https://www.youtube.com/watch?v=6e1pMrYH5jI + // + // Restrict to RU + parseNumber('Phone: 8 (800) 555 35 35.', 'RU').should.deep.equal({ country: 'RU', phone: '8005553535' }) + // International format + parseNumber('Phone: +7 (800) 555-35-35.').should.deep.equal({ country: 'RU', phone: '8005553535' }) + // // Restrict to US, but not a US country phone code supplied + // parseNumber('+7 (800) 555-35-35', 'US').should.deep.equal({}) + // Restrict to RU + parseNumber('(800) 555 35 35', 'RU').should.deep.equal({ country: 'RU', phone: '8005553535' }) + // Default to RU + parseNumber('8 (800) 555 35 35', { defaultCountry: 'RU' }).should.deep.equal({ country: 'RU', phone: '8005553535' }) + + // Gangster partyline + parseNumber('+1-213-373-4253').should.deep.equal({ country: 'US', phone: '2133734253' }) + + // Switzerland (just in case) + parseNumber('044 668 18 00', 'CH').should.deep.equal({ country: 'CH', phone: '446681800' }) + + // China, Beijing + parseNumber('010-852644821', 'CN').should.deep.equal({ country: 'CN', phone: '10852644821' }) + + // France + parseNumber('+33169454850').should.deep.equal({ country: 'FR', phone: '169454850' }) + + // UK (Jersey) + parseNumber('+44 7700 300000').should.deep.equal({ country: 'JE', phone: '7700300000' }) + + // KZ + parseNumber('+7 702 211 1111').should.deep.equal({ country: 'KZ', phone: '7022111111' }) + + // Brazil + parseNumber('11987654321', 'BR').should.deep.equal({ country: 'BR', phone: '11987654321' }) + + // Long country phone code. + parseNumber('+212659777777').should.deep.equal({ country: 'MA', phone: '659777777' }) + + // No country could be derived. + // parseNumber('+212569887076').should.deep.equal({ countryPhoneCode: '212', phone: '569887076' }) + + // GB. Moible numbers starting 07624* are Isle of Man. + parseNumber('07624369230', 'GB').should.deep.equal({ country: 'IM', phone: '7624369230' }) + }) + + it('should parse possible numbers', () => { + // Invalid phone number for a given country. + parseNumber('1112223344', 'RU', { extended: true }).should.deep.equal({ + country : 'RU', + countryCallingCode : '7', + phone : '1112223344', + carrierCode : undefined, + ext : undefined, + valid : false, + possible : true + }) + + // International phone number. + // Several countries with the same country phone code. + parseNumber('+71112223344').should.deep.equal({}) + parseNumber('+71112223344', { extended: true }).should.deep.equal({ + country : undefined, + countryCallingCode : '7', + phone : '1112223344', + carrierCode : undefined, + ext : undefined, + valid : false, + possible : true + }) + + // International phone number. + // Single country with the given country phone code. + parseNumber('+33011222333', { extended: true }).should.deep.equal({ + country : 'FR', + countryCallingCode : '33', + phone : '011222333', + carrierCode : undefined, + ext : undefined, + valid : false, + possible : true + }) + + // Too short. + // Won't strip national prefix `8` because otherwise the number would be too short. + parseNumber('+7 (800) 55-35-35', { extended: true }).should.deep.equal({ + country : 'RU', + countryCallingCode : '7', + phone : '800553535', + carrierCode : undefined, + ext : undefined, + valid : false, + possible : false + }) + + // Too long. + parseNumber('+1 213 37342530', { extended: true }).should.deep.equal({ + country : undefined, + countryCallingCode : '1', + phone : '21337342530', + carrierCode : undefined, + ext : undefined, + valid : false, + possible : false + }) + + // No national number to be parsed. + parseNumber('+996', { extended: true }).should.deep.equal({ + // countryCallingCode : '996' + }) + + // Valid number. + parseNumber('+78005553535', { extended: true }).should.deep.equal({ + country : 'RU', + countryCallingCode : '7', + phone : '8005553535', + carrierCode : undefined, + ext : undefined, + valid : true, + possible : true + }) + + // https://github.com/catamphetamine/libphonenumber-js/issues/211 + parseNumber('+966', { extended: true }).should.deep.equal({}) + parseNumber('+9664', { extended: true }).should.deep.equal({}) + parseNumber('+96645', { extended: true }).should.deep.equal({ + carrierCode : undefined, + phone : '45', + ext : undefined, + country : 'SA', + countryCallingCode : '966', + possible : false, + valid : false + }) + }) + + it('should parse non-European digits', () => { + parseNumber('+١٢١٢٢٣٢٣٢٣٢').should.deep.equal({ country: 'US', phone: '2122323232' }) + }) + + it('should work in edge cases', () => { + let thrower + + // No input + parseNumber('').should.deep.equal({}) + + // No country phone code + parseNumber('+').should.deep.equal({}) + + // No country at all (non international number and no explicit country code) + parseNumber('123').should.deep.equal({}) + + // No country metadata for this `require` country code + thrower = () => parseNumber('123', 'ZZ') + thrower.should.throw('Unknown country') + + // No country metadata for this `default` country code + thrower = () => parseNumber('123', { defaultCountry: 'ZZ' }) + thrower.should.throw('Unknown country') + + // Invalid country phone code + parseNumber('+210').should.deep.equal({}) + + // Invalid country phone code (extended parsing mode) + parseNumber('+210', { extended: true }).should.deep.equal({}) + + // Too short of a number. + parseNumber('1', 'US', { extended: true }).should.deep.equal({}) + + // Too long of a number. + parseNumber('1111111111111111111', 'RU', { extended: true }).should.deep.equal({}) + + // Not a number. + parseNumber('abcdefg', 'US', { extended: true }).should.deep.equal({}) + + // Country phone code beginning with a '0' + parseNumber('+0123').should.deep.equal({}) + + // Barbados NANPA phone number + parseNumber('+12460000000').should.deep.equal({ country: 'BB', phone: '2460000000' }) + + // // A case when country (restricted to) is not equal + // // to the one parsed out of an international number. + // parseNumber('+1-213-373-4253', 'RU').should.deep.equal({}) + + // National (significant) number too short + parseNumber('2', 'US').should.deep.equal({}) + + // National (significant) number too long + parseNumber('222222222222222222', 'US').should.deep.equal({}) + + // No `national_prefix_for_parsing` + parseNumber('41111', 'AC').should.deep.equal({ country: 'AC', phone: '41111'}) + + // https://github.com/catamphetamine/libphonenumber-js/issues/235 + // `matchesEntirely()` bug fix. + parseNumber('+4915784846111‬').should.deep.equal({ country: 'DE', phone: '15784846111' }) + + // No metadata + thrower = () => _parseNumber('') + thrower.should.throw('`metadata` argument not passed') + + // Numerical `value` + thrower = () => parseNumber(2141111111, 'US') + thrower.should.throw('A text for parsing must be a string.') + + // Input string too long. + parseNumber('8005553535 ', 'RU').should.deep.equal({}) + }) + + it('should parse phone number extensions', () => { + // "ext" + parseNumber('2134567890 ext 123', 'US').should.deep.equal({ + country : 'US', + phone : '2134567890', + ext : '123' + }) + + // "ext." + parseNumber('+12134567890 ext. 12345', 'US').should.deep.equal({ + country : 'US', + phone : '2134567890', + ext : '12345' + }) + + // "доб." + parseNumber('+78005553535 доб. 1234', 'RU').should.deep.equal({ + country : 'RU', + phone : '8005553535', + ext : '1234' + }) + + // "#" + parseNumber('+12134567890#1234').should.deep.equal({ + country : 'US', + phone : '2134567890', + ext : '1234' + }) + + // "x" + parseNumber('+78005553535 x1234').should.deep.equal({ + country : 'RU', + phone : '8005553535', + ext : '1234' + }) + + // Not a valid extension + parseNumber('2134567890 ext. abc', 'US').should.deep.equal({ + country : 'US', + phone : '2134567890' + }) + }) + + it('should parse RFC 3966 phone numbers', () => { + parseNumber('tel:+78005553535;ext=123').should.deep.equal({ + country : 'RU', + phone : '8005553535', + ext : '123' + }) + + // Should parse "visual separators". + parseNumber('tel:+7(800)555-35.35;ext=123').should.deep.equal({ + country : 'RU', + phone : '8005553535', + ext : '123' + }) + + // Invalid number. + parseNumber('tel:+7x8005553535;ext=123').should.deep.equal({}) + }) + + it('should parse invalid international numbers even if they are invalid', () => { + parseNumber('+7(8)8005553535', 'RU').should.deep.equal({ + country : 'RU', + phone : '8005553535' + }) + }) + + it('should parse carrier codes', () => { + parseNumber('0 15 21 5555-5555', 'BR', { extended: true }).should.deep.equal({ + country : 'BR', + countryCallingCode : '55', + phone : '2155555555', + carrierCode : '15', + ext : undefined, + valid : true, + possible : true + }) + }) + + it('should parse IDD prefixes', () => { + parseNumber('011 61 2 3456 7890', 'US').should.deep.equal({ + phone : '234567890', + country : 'AU' + }) + + parseNumber('011 61 2 3456 7890', 'FR').should.deep.equal({}) + + parseNumber('00 61 2 3456 7890', 'US').should.deep.equal({}) + + parseNumber('810 61 2 3456 7890', 'RU').should.deep.equal({ + phone : '234567890', + country : 'AU' + }) + }) + + it('should work with v2 API', () => { + parseNumber('+99989160151539') + }) + + it('should work with Argentina numbers', () => { + // The same mobile number is written differently + // in different formats in Argentina: + // `9` gets prepended in international format. + parseNumber('+54 9 3435 55 1212').should.deep.equal({ + country: 'AR', + phone: '93435551212' + }) + parseNumber('0343 15-555-1212', 'AR').should.deep.equal({ + country: 'AR', + phone: '93435551212' + }) + }) + + it('should work with Mexico numbers', () => { + // Fixed line. + parseNumber('+52 449 978 0001').should.deep.equal({ + country: 'MX', + phone: '4499780001' + }) + parseNumber('01 (449)978-0001', 'MX').should.deep.equal({ + country: 'MX', + phone: '4499780001' + }) + parseNumber('(449)978-0001', 'MX').should.deep.equal({ + country: 'MX', + phone: '4499780001' + }) + // Mobile. + // `1` is prepended before area code to mobile numbers in international format. + parseNumber('+52 1 33 1234-5678', 'MX').should.deep.equal({ + country: 'MX', + phone: '3312345678' + }) + parseNumber('+52 33 1234-5678', 'MX').should.deep.equal({ + country: 'MX', + phone: '3312345678' + }) + parseNumber('044 (33) 1234-5678', 'MX').should.deep.equal({ + country: 'MX', + phone: '3312345678' + }) + parseNumber('045 33 1234-5678', 'MX').should.deep.equal({ + country: 'MX', + phone: '3312345678' + }) + }) + + it('should parse non-geographic numbering plan phone numbers', () => { + parseNumber('+870773111632').should.deep.equal( + USE_NON_GEOGRAPHIC_COUNTRY_CODE ? + { + country: '001', + phone: '773111632' + } : + {} + ) + }) + + it('should parse non-geographic numbering plan phone numbers (default country code)', () => { + parseNumber('773111632', { defaultCallingCode: '870' }).should.deep.equal( + USE_NON_GEOGRAPHIC_COUNTRY_CODE ? + { + country: '001', + phone: '773111632' + } : + {} + ) + }) + + it('should parse non-geographic numbering plan phone numbers (extended)', () => { + parseNumber('+870773111632', { extended: true }).should.deep.equal({ + country: USE_NON_GEOGRAPHIC_COUNTRY_CODE ? '001' : undefined, + countryCallingCode: '870', + phone: '773111632', + carrierCode: undefined, + ext: undefined, + possible: true, + valid: true + }) + }) + + it('should parse non-geographic numbering plan phone numbers (default country code) (extended)', () => { + parseNumber('773111632', { defaultCallingCode: '870', extended: true }).should.deep.equal({ + country: USE_NON_GEOGRAPHIC_COUNTRY_CODE ? '001' : undefined, + countryCallingCode: '870', + phone: '773111632', + carrierCode: undefined, + ext: undefined, + possible: true, + valid: true + }) + }) + + it('shouldn\'t crash when invalid `defaultCallingCode` is passed', () => { + expect(() => parseNumber('773111632', { defaultCallingCode: '999' })) + .to.throw('Unknown calling code') + }) + + it('shouldn\'t set `country` when there\'s no `defaultCountry` and `defaultCallingCode` is not of a "non-geographic entity"', () => { + parseNumber('88005553535', { defaultCallingCode: '7' }).should.deep.equal({ + country: 'RU', + phone: '8005553535' + }) + }) + + it('should correctly parse numbers starting with the same digit as the national prefix', () => { + // https://github.com/catamphetamine/libphonenumber-js/issues/373 + // `BY`'s `national_prefix` is `8`. + parseNumber('+37582004910060').should.deep.equal({ + country: 'BY', + phone: '82004910060' + }); + }) + + it('should autocorrect numbers without a leading +', () => { + // https://github.com/catamphetamine/libphonenumber-js/issues/376 + parseNumber('375447521111', 'BY').should.deep.equal({ + country: 'BY', + phone: '447521111' + }); + // https://github.com/catamphetamine/libphonenumber-js/issues/316 + parseNumber('33612902554', 'FR').should.deep.equal({ + country: 'FR', + phone: '612902554' + }); + // https://github.com/catamphetamine/libphonenumber-js/issues/375 + parseNumber('61438331999', 'AU').should.deep.equal({ + country: 'AU', + phone: '438331999' + }); + // A case when `49` is a country calling code of a number without a leading `+`. + parseNumber('4930123456', 'DE').should.deep.equal({ + country: 'DE', + phone: '30123456' + }); + // A case when `49` is a valid area code. + parseNumber('4951234567890', 'DE').should.deep.equal({ + country: 'DE', + phone: '4951234567890' + }); + }) + + it('should parse extensions (long extensions with explicitl abels)', () => { + // Test lower and upper limits of extension lengths for each type of label. + + // Firstly, when in RFC format: PhoneNumberUtil.extLimitAfterExplicitLabel + parseNumber('33316005 ext 0', 'NZ').ext.should.equal('0') + parseNumber('33316005 ext 01234567890123456789', 'NZ').ext.should.equal('01234567890123456789') + // Extension too long. + expect(parseNumber('33316005 ext 012345678901234567890', 'NZ').ext).to.be.undefined + + // Explicit extension label. + parseNumber('03 3316005ext:1', 'NZ').ext.should.equal('1') + parseNumber('03 3316005 xtn:12345678901234567890', 'NZ').ext.should.equal('12345678901234567890') + parseNumber('03 3316005 extension\t12345678901234567890', 'NZ').ext.should.equal('12345678901234567890') + parseNumber('03 3316005 xtensio:12345678901234567890', 'NZ').ext.should.equal('12345678901234567890') + parseNumber('03 3316005 xtensión, 12345678901234567890#', 'NZ').ext.should.equal('12345678901234567890') + parseNumber('03 3316005extension.12345678901234567890', 'NZ').ext.should.equal('12345678901234567890') + parseNumber('03 3316005 доб:12345678901234567890', 'NZ').ext.should.equal('12345678901234567890') + + // Extension too long. + expect(parseNumber('03 3316005 extension 123456789012345678901', 'NZ').ext).to.be.undefined + }) + + it('should parse extensions (long extensions with auto dialling labels)', () => { + parseNumber('+12679000000,,123456789012345#').ext.should.equal('123456789012345') + parseNumber('+12679000000;123456789012345#').ext.should.equal('123456789012345') + parseNumber('+442034000000,,123456789#').ext.should.equal('123456789') + // Extension too long. + expect(parseNumber('+12679000000,,1234567890123456#').ext).to.be.undefined + }) + + it('should parse extensions (short extensions with ambiguous characters)', () => { + parseNumber('03 3316005 x 123456789', 'NZ').ext.should.equal('123456789') + parseNumber('03 3316005 x. 123456789', 'NZ').ext.should.equal('123456789') + parseNumber('03 3316005 #123456789#', 'NZ').ext.should.equal('123456789') + parseNumber('03 3316005 ~ 123456789', 'NZ').ext.should.equal('123456789') + // Extension too long. + expect(parseNumber('03 3316005 ~ 1234567890', 'NZ').ext).to.be.undefined + }) + + it('should parse extensions (short extensions when not sure of label)', () => { + parseNumber('+1123-456-7890 666666#', { v2: true }).ext.should.equal('666666') + parseNumber('+11234567890-6#', { v2: true }).ext.should.equal('6') + // Extension too long. + expect(() => parseNumber('+1123-456-7890 7777777#', { v2: true })).to.throw('NOT_A_NUMBER') + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parseIncompletePhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parseIncompletePhoneNumber.js new file mode 100644 index 00000000..6db4a840 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parseIncompletePhoneNumber.js @@ -0,0 +1,55 @@ +import { parseDigit } from './helpers/parseDigits.js' + +/** + * Parses phone number characters from a string. + * Drops all punctuation leaving only digits and the leading `+` sign (if any). + * Also converts wide-ascii and arabic-indic numerals to conventional numerals. + * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`. + * @param {string} string + * @return {string} + * @example + * ```js + * // Outputs '8800555'. + * parseIncompletePhoneNumber('8 (800) 555') + * // Outputs '+7800555'. + * parseIncompletePhoneNumber('+7 800 555') + * ``` + */ +export default function parseIncompletePhoneNumber(string) { + let result = '' + // Using `.split('')` here instead of normal `for ... of` + // because the importing application doesn't neccessarily include an ES6 polyfill. + // The `.split('')` approach discards "exotic" UTF-8 characters + // (the ones consisting of four bytes) but digits + // (including non-European ones) don't fall into that range + // so such "exotic" characters would be discarded anyway. + for (const character of string.split('')) { + result += parsePhoneNumberCharacter(character, result) || '' + } + return result +} + +/** + * Parses next character while parsing phone number digits (including a `+`) + * from text: discards everything except `+` and digits, and `+` is only allowed + * at the start of a phone number. + * For example, is used in `react-phone-number-input` where it uses + * [`input-format`](https://gitlab.com/catamphetamine/input-format). + * @param {string} character - Yet another character from raw input string. + * @param {string?} prevParsedCharacters - Previous parsed characters. + * @param {object} meta - Optional custom use-case-specific metadata. + * @return {string?} The parsed character. + */ +export function parsePhoneNumberCharacter(character, prevParsedCharacters) { + // Only allow a leading `+`. + if (character === '+') { + // If this `+` is not the first parsed character + // then discard it. + if (prevParsedCharacters) { + return + } + return '+' + } + // Allow digits. + return parseDigit(character) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parseIncompletePhoneNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parseIncompletePhoneNumber.test.js new file mode 100644 index 00000000..b196019a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parseIncompletePhoneNumber.test.js @@ -0,0 +1,36 @@ +import parseIncompletePhoneNumber, { parsePhoneNumberCharacter } from './parseIncompletePhoneNumber.js' + +describe('parseIncompletePhoneNumber', () => { + it('should parse phone number character', () => { + // Accepts leading `+`. + parsePhoneNumberCharacter('+').should.equal('+') + + // Doesn't accept non-leading `+`. + expect(parsePhoneNumberCharacter('+', '+')).to.be.undefined + + // Parses digits. + parsePhoneNumberCharacter('1').should.equal('1') + + // Parses non-European digits. + parsePhoneNumberCharacter('٤').should.equal('4') + + // Dismisses other characters. + expect(parsePhoneNumberCharacter('-')).to.be.undefined + }) + + it('should parse incomplete phone number', () => { + parseIncompletePhoneNumber('').should.equal('') + + // Doesn't accept non-leading `+`. + parseIncompletePhoneNumber('++').should.equal('+') + + // Accepts leading `+`. + parseIncompletePhoneNumber('+7 800 555').should.equal('+7800555') + + // Parses digits. + parseIncompletePhoneNumber('8 (800) 555').should.equal('8800555') + + // Parses non-European digits. + parseIncompletePhoneNumber('+٤٤٢٣٢٣٢٣٤').should.equal('+442323234') + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parsePhoneNumber.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parsePhoneNumber.js new file mode 100644 index 00000000..83dd2cb8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parsePhoneNumber.js @@ -0,0 +1,61 @@ +import parsePhoneNumber_ from './parsePhoneNumber_.js' + +export default function parsePhoneNumber() { + const { text, options, metadata } = normalizeArguments(arguments) + return parsePhoneNumber_(text, options, metadata) +} + +export function normalizeArguments(args) +{ + const [arg_1, arg_2, arg_3, arg_4] = Array.prototype.slice.call(args) + + let text + let options + let metadata + + // If the phone number is passed as a string. + // `parsePhoneNumber('88005553535', ...)`. + if (typeof arg_1 === 'string') { + text = arg_1 + } + else throw new TypeError('A text for parsing must be a string.') + + // If "default country" argument is being passed then move it to `options`. + // `parsePhoneNumber('88005553535', 'RU', [options], metadata)`. + if (!arg_2 || typeof arg_2 === 'string') + { + if (arg_4) { + options = arg_3 + metadata = arg_4 + } else { + options = undefined + metadata = arg_3 + } + + if (arg_2) { + options = { defaultCountry: arg_2, ...options } + } + } + // `defaultCountry` is not passed. + // Example: `parsePhoneNumber('+78005553535', [options], metadata)`. + else if (isObject(arg_2)) + { + if (arg_3) { + options = arg_2 + metadata = arg_3 + } else { + metadata = arg_2 + } + } + else throw new Error(`Invalid second argument: ${arg_2}`) + + return { + text, + options, + metadata + } +} + +// Otherwise istanbul would show this as "branch not covered". +/* istanbul ignore next */ +const isObject = _ => typeof _ === 'object' \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parsePhoneNumber.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parsePhoneNumber.test.js new file mode 100644 index 00000000..1094213d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parsePhoneNumber.test.js @@ -0,0 +1,112 @@ +import _parsePhoneNumber from './parsePhoneNumber.js' +import metadata from '../metadata.min.json' assert { type: 'json' } +import metadataFull from '../metadata.max.json' assert { type: 'json' } + +function parsePhoneNumber(...parameters) { + parameters.push(metadata) + return _parsePhoneNumber.apply(this, parameters) +} + +function parsePhoneNumberFull(...parameters) { + parameters.push(metadataFull) + return _parsePhoneNumber.apply(this, parameters) +} + +describe('parsePhoneNumber', () => { + it('should parse phone numbers', () => { + const phoneNumber = parsePhoneNumber('Phone: 8 (800) 555 35 35.', 'RU') + phoneNumber.country.should.equal('RU') + phoneNumber.countryCallingCode.should.equal('7') + phoneNumber.nationalNumber.should.equal('8005553535') + phoneNumber.number.should.equal('+78005553535') + phoneNumber.isPossible().should.equal(true) + phoneNumber.isValid().should.equal(true) + // phoneNumber.isValidForRegion('RU').should.equal(true) + // Russian phone type regexps aren't included in default metadata. + parsePhoneNumberFull('Phone: 8 (800) 555 35 35.', 'RU').getType().should.equal('TOLL_FREE') + }) + + it('shouldn\'t set country when it\'s non-derivable', () => { + const phoneNumber = parsePhoneNumber('+7 111 555 35 35') + expect(phoneNumber.country).to.be.undefined + phoneNumber.countryCallingCode.should.equal('7') + phoneNumber.nationalNumber.should.equal('1115553535') + }) + + it('should parse carrier code', () => { + const phoneNumber = parsePhoneNumber('0 15 21 5555-5555', 'BR') + phoneNumber.carrierCode.should.equal('15') + }) + + it('should parse phone extension', () => { + const phoneNumber = parsePhoneNumber('Phone: 8 (800) 555 35 35 ext. 1234.', 'RU') + phoneNumber.ext.should.equal('1234') + }) + + it('should validate numbers for countries with no type regular expressions', () => { + parsePhoneNumber('+380391234567').isValid().should.equal(true) + parsePhoneNumber('+380191234567').isValid().should.equal(false) + }) + + it('should format numbers', () => { + const phoneNumber = parsePhoneNumber('Phone: 8 (800) 555 35 35.', 'RU') + phoneNumber.format('NATIONAL').should.equal('8 (800) 555-35-35') + phoneNumber.formatNational().should.equal('8 (800) 555-35-35') + phoneNumber.format('INTERNATIONAL').should.equal('+7 800 555 35 35') + phoneNumber.formatInternational().should.equal('+7 800 555 35 35') + }) + + it('should get tel: URI', () => { + const phoneNumber = parsePhoneNumber('Phone: 8 (800) 555 35 35 ext. 1234.', 'RU') + phoneNumber.getURI().should.equal('tel:+78005553535;ext=1234') + }) + + it('should work in edge cases', () => { + expect(() => parsePhoneNumber('+78005553535', -1, {})).to.throw('Invalid second argument') + }) + + it('should throw parse errors', () => { + expect(() => parsePhoneNumber('8005553535', 'XX')).to.throw('INVALID_COUNTRY') + expect(() => parsePhoneNumber('+', 'RU')).to.throw('NOT_A_NUMBER') + expect(() => parsePhoneNumber('a', 'RU')).to.throw('NOT_A_NUMBER') + expect(() => parsePhoneNumber('1', 'RU')).to.throw('TOO_SHORT') + expect(() => parsePhoneNumber('+4')).to.throw('TOO_SHORT') + expect(() => parsePhoneNumber('+44')).to.throw('TOO_SHORT') + expect(() => parsePhoneNumber('+443')).to.throw('TOO_SHORT') + expect(() => parsePhoneNumber('+370')).to.throw('TOO_SHORT') + expect(() => parsePhoneNumber('88888888888888888888', 'RU')).to.throw('TOO_LONG') + expect(() => parsePhoneNumber('8 (800) 555 35 35')).to.throw('INVALID_COUNTRY') + expect(() => parsePhoneNumber('+9991112233')).to.throw('INVALID_COUNTRY') + expect(() => parsePhoneNumber('+9991112233', 'US')).to.throw('INVALID_COUNTRY') + expect(() => parsePhoneNumber('8005553535 ', 'RU')).to.throw('TOO_LONG') + }) + + it('should parse incorrect international phone numbers', () => { + // Parsing national prefixes and carrier codes + // is only required for local phone numbers + // but some people don't understand that + // and sometimes write international phone numbers + // with national prefixes (or maybe even carrier codes). + // http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html + // Google's original library forgives such mistakes + // and so does this library, because it has been requested: + // https://github.com/catamphetamine/libphonenumber-js/issues/127 + + let phoneNumber + + // For complete numbers it should strip national prefix. + phoneNumber = parsePhoneNumber('+1 1877 215 5230') + phoneNumber.nationalNumber.should.equal('8772155230') + phoneNumber.country.should.equal('US') + + // For complete numbers it should strip national prefix. + phoneNumber = parsePhoneNumber('+7 8800 555 3535') + phoneNumber.nationalNumber.should.equal('8005553535') + phoneNumber.country.should.equal('RU') + + // For incomplete numbers it shouldn't strip national prefix. + phoneNumber = parsePhoneNumber('+7 8800 555 353') + phoneNumber.nationalNumber.should.equal('8800555353') + phoneNumber.country.should.equal('RU') + }) +}) diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parsePhoneNumberFromString.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parsePhoneNumberFromString.js new file mode 100644 index 00000000..eb2e8cf1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parsePhoneNumberFromString.js @@ -0,0 +1,7 @@ +import { normalizeArguments } from './parsePhoneNumber.js' +import parsePhoneNumberFromString_ from './parsePhoneNumberFromString_.js' + +export default function parsePhoneNumberFromString() { + const { text, options, metadata } = normalizeArguments(arguments) + return parsePhoneNumberFromString_(text, options, metadata) +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parsePhoneNumberFromString.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parsePhoneNumberFromString.test.js new file mode 100644 index 00000000..af60a1ff --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parsePhoneNumberFromString.test.js @@ -0,0 +1,80 @@ +import _parsePhoneNumberFromString from './parsePhoneNumberFromString.js' +import metadata from '../metadata.min.json' assert { type: 'json' } + +function parsePhoneNumberFromString(...parameters) { + parameters.push(metadata) + return _parsePhoneNumberFromString.apply(this, parameters) +} + +const USE_NON_GEOGRAPHIC_COUNTRY_CODE = false + +describe('parsePhoneNumberFromString', () => { + it('should parse phone numbers from string', () => { + parsePhoneNumberFromString('Phone: 8 (800) 555 35 35.', 'RU').nationalNumber.should.equal('8005553535') + expect(parsePhoneNumberFromString('3', 'RU')).to.be.undefined + }) + + it('should work in edge cases', () => { + expect(parsePhoneNumberFromString('')).to.be.undefined + }) + + it('should parse phone numbers when invalid country code is passed', () => { + parsePhoneNumberFromString('Phone: +7 (800) 555 35 35.', 'XX').nationalNumber.should.equal('8005553535') + expect(parsePhoneNumberFromString('Phone: 8 (800) 555-35-35.', 'XX')).to.be.undefined + }) + + + it('should parse non-geographic numbering plan phone numbers (extended)', () => { + const phoneNumber = parsePhoneNumberFromString('+870773111632') + phoneNumber.number.should.equal('+870773111632') + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + phoneNumber.country.should.equal('001') + } else { + expect(phoneNumber.country).to.be.undefined + } + phoneNumber.countryCallingCode.should.equal('870') + }) + + it('should parse non-geographic numbering plan phone numbers (default country code) (extended)', () => { + const phoneNumber = parsePhoneNumberFromString('773111632', { defaultCallingCode: '870' }) + phoneNumber.number.should.equal('+870773111632') + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + phoneNumber.country.should.equal('001') + } else { + expect(phoneNumber.country).to.be.undefined + } + phoneNumber.countryCallingCode.should.equal('870') + }) + + it('should determine the possibility of non-geographic phone numbers', () => { + const phoneNumber = parsePhoneNumberFromString('+870773111632') + phoneNumber.isPossible().should.equal(true) + const phoneNumber2 = parsePhoneNumberFromString('+8707731116321') + phoneNumber2.isPossible().should.equal(false) + }) + + it('should support `extract: false` flag', () => { + const testCorrectness = (number, expectedResult) => { + const result = expect(parsePhoneNumberFromString(number, { extract: false, defaultCountry: 'US' })) + if (expectedResult) { + result.to.not.be.undefined + } else { + result.to.be.undefined + } + } + testCorrectness('Call: (213) 373-4253', false) + testCorrectness('(213) 373-4253x', false) + testCorrectness('(213) 373-4253', true) + testCorrectness('- (213) 373-4253 -', true) + testCorrectness('+1 (213) 373-4253', true) + testCorrectness(' +1 (213) 373-4253', false) + }) + + it('should not prematurely strip a possible national prefix from Chinese numbers', () => { + // https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/57 + const phoneNumber = parsePhoneNumberFromString('+86123456789') + phoneNumber.isPossible().should.equal(true) + phoneNumber.isValid().should.equal(false) + phoneNumber.nationalNumber.should.equal('123456789') + }) +}) diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parsePhoneNumberFromString_.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parsePhoneNumberFromString_.js new file mode 100644 index 00000000..fe7a7d40 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parsePhoneNumberFromString_.js @@ -0,0 +1,24 @@ +import parsePhoneNumber from './parsePhoneNumber_.js' +import ParseError from './ParseError.js' +import { isSupportedCountry } from './metadata.js' + +export default function parsePhoneNumberFromString(text, options, metadata) { + // Validate `defaultCountry`. + if (options && options.defaultCountry && !isSupportedCountry(options.defaultCountry, metadata)) { + options = { + ...options, + defaultCountry: undefined + } + } + // Parse phone number. + try { + return parsePhoneNumber(text, options, metadata) + } catch (error) { + /* istanbul ignore else */ + if (error instanceof ParseError) { + // + } else { + throw error + } + } +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parsePhoneNumber_.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parsePhoneNumber_.js new file mode 100644 index 00000000..990930ac --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parsePhoneNumber_.js @@ -0,0 +1,5 @@ +import parseNumber from './parse_.js' + +export default function parsePhoneNumber(text, options, metadata) { + return parseNumber(text, { ...options, v2: true }, metadata) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parse_.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parse_.js new file mode 100644 index 00000000..b4612e61 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/parse_.js @@ -0,0 +1,344 @@ +// This is a port of Google Android `libphonenumber`'s +// `phonenumberutil.js` of December 31th, 2018. +// +// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js + +import { + VALID_DIGITS, + PLUS_CHARS, + MIN_LENGTH_FOR_NSN, + MAX_LENGTH_FOR_NSN +} from './constants.js' + +import ParseError from './ParseError.js' +import Metadata from './metadata.js' +import isViablePhoneNumber, { isViablePhoneNumberStart } from './helpers/isViablePhoneNumber.js' +import extractExtension from './helpers/extension/extractExtension.js' +import parseIncompletePhoneNumber from './parseIncompletePhoneNumber.js' +import getCountryCallingCode from './getCountryCallingCode.js' +import { isPossibleNumber } from './isPossibleNumber_.js' +import { parseRFC3966 } from './helpers/RFC3966.js' +import PhoneNumber from './PhoneNumber.js' +import matchesEntirely from './helpers/matchesEntirely.js' +import extractCountryCallingCode from './helpers/extractCountryCallingCode.js' +import extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js' +import extractNationalNumber from './helpers/extractNationalNumber.js' +import stripIddPrefix from './helpers/stripIddPrefix.js' +import getCountryByCallingCode from './helpers/getCountryByCallingCode.js' + +// We don't allow input strings for parsing to be longer than 250 chars. +// This prevents malicious input from consuming CPU. +const MAX_INPUT_STRING_LENGTH = 250 + +// This consists of the plus symbol, digits, and arabic-indic digits. +const PHONE_NUMBER_START_PATTERN = new RegExp('[' + PLUS_CHARS + VALID_DIGITS + ']') + +// Regular expression of trailing characters that we want to remove. +// A trailing `#` is sometimes used when writing phone numbers with extensions in US. +// Example: "+1 (645) 123 1234-910#" number has extension "910". +const AFTER_PHONE_NUMBER_END_PATTERN = new RegExp('[^' + VALID_DIGITS + '#' + ']+$') + +const USE_NON_GEOGRAPHIC_COUNTRY_CODE = false + +// Examples: +// +// ```js +// parse('8 (800) 555-35-35', 'RU') +// parse('8 (800) 555-35-35', 'RU', metadata) +// parse('8 (800) 555-35-35', { country: { default: 'RU' } }) +// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata) +// parse('+7 800 555 35 35') +// parse('+7 800 555 35 35', metadata) +// ``` +// +export default function parse(text, options, metadata) { + // If assigning the `{}` default value is moved to the arguments above, + // code coverage would decrease for some weird reason. + options = options || {} + + metadata = new Metadata(metadata) + + // Validate `defaultCountry`. + if (options.defaultCountry && !metadata.hasCountry(options.defaultCountry)) { + if (options.v2) { + throw new ParseError('INVALID_COUNTRY') + } + throw new Error(`Unknown country: ${options.defaultCountry}`) + } + + // Parse the phone number. + const { number: formattedPhoneNumber, ext, error } = parseInput(text, options.v2, options.extract) + + // If the phone number is not viable then return nothing. + if (!formattedPhoneNumber) { + if (options.v2) { + if (error === 'TOO_SHORT') { + throw new ParseError('TOO_SHORT') + } + throw new ParseError('NOT_A_NUMBER') + } + return {} + } + + const { + country, + nationalNumber, + countryCallingCode, + carrierCode + } = parsePhoneNumber( + formattedPhoneNumber, + options.defaultCountry, + options.defaultCallingCode, + metadata + ) + + if (!metadata.hasSelectedNumberingPlan()) { + if (options.v2) { + throw new ParseError('INVALID_COUNTRY') + } + return {} + } + + // Validate national (significant) number length. + if (!nationalNumber || nationalNumber.length < MIN_LENGTH_FOR_NSN) { + // Won't throw here because the regexp already demands length > 1. + /* istanbul ignore if */ + if (options.v2) { + throw new ParseError('TOO_SHORT') + } + // Google's demo just throws an error in this case. + return {} + } + + // Validate national (significant) number length. + // + // A sidenote: + // + // They say that sometimes national (significant) numbers + // can be longer than `MAX_LENGTH_FOR_NSN` (e.g. in Germany). + // https://github.com/googlei18n/libphonenumber/blob/7e1748645552da39c4e1ba731e47969d97bdb539/resources/phonenumber.proto#L36 + // Such numbers will just be discarded. + // + if (nationalNumber.length > MAX_LENGTH_FOR_NSN) { + if (options.v2) { + throw new ParseError('TOO_LONG') + } + // Google's demo just throws an error in this case. + return {} + } + + if (options.v2) { + const phoneNumber = new PhoneNumber( + countryCallingCode, + nationalNumber, + metadata.metadata + ) + if (country) { + phoneNumber.country = country + } + if (carrierCode) { + phoneNumber.carrierCode = carrierCode + } + if (ext) { + phoneNumber.ext = ext + } + return phoneNumber + } + + // Check if national phone number pattern matches the number. + // National number pattern is different for each country, + // even for those ones which are part of the "NANPA" group. + const valid = (options.extended ? metadata.hasSelectedNumberingPlan() : country) ? + matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) : + false + + if (!options.extended) { + return valid ? result(country, nationalNumber, ext) : {} + } + + // isInternational: countryCallingCode !== undefined + + return { + country, + countryCallingCode, + carrierCode, + valid, + possible: valid ? true : ( + options.extended === true && + metadata.possibleLengths() && + isPossibleNumber(nationalNumber, metadata) ? true : false + ), + phone: nationalNumber, + ext + } +} + +/** + * Extracts a formatted phone number from text. + * Doesn't guarantee that the extracted phone number + * is a valid phone number (for example, doesn't validate its length). + * @param {string} text + * @param {boolean} [extract] — If `false`, then will parse the entire `text` as a phone number. + * @param {boolean} [throwOnError] — By default, it won't throw if the text is too long. + * @return {string} + * @example + * // Returns "(213) 373-4253". + * extractFormattedPhoneNumber("Call (213) 373-4253 for assistance.") + */ +function extractFormattedPhoneNumber(text, extract, throwOnError) { + if (!text) { + return + } + if (text.length > MAX_INPUT_STRING_LENGTH) { + if (throwOnError) { + throw new ParseError('TOO_LONG') + } + return + } + if (extract === false) { + return text + } + // Attempt to extract a possible number from the string passed in + const startsAt = text.search(PHONE_NUMBER_START_PATTERN) + if (startsAt < 0) { + return + } + return text + // Trim everything to the left of the phone number + .slice(startsAt) + // Remove trailing non-numerical characters + .replace(AFTER_PHONE_NUMBER_END_PATTERN, '') +} + +/** + * @param {string} text - Input. + * @param {boolean} v2 - Legacy API functions don't pass `v2: true` flag. + * @param {boolean} [extract] - Whether to extract a phone number from `text`, or attempt to parse the entire text as a phone number. + * @return {object} `{ ?number, ?ext }`. + */ +function parseInput(text, v2, extract) { + // Parse RFC 3966 phone number URI. + if (text && text.indexOf('tel:') === 0) { + return parseRFC3966(text) + } + let number = extractFormattedPhoneNumber(text, extract, v2) + // If the phone number is not viable, then abort. + if (!number) { + return {} + } + if (!isViablePhoneNumber(number)) { + if (isViablePhoneNumberStart(number)) { + return { error: 'TOO_SHORT' } + } + return {} + } + // Attempt to parse extension first, since it doesn't require region-specific + // data and we want to have the non-normalised number here. + const withExtensionStripped = extractExtension(number) + if (withExtensionStripped.ext) { + return withExtensionStripped + } + return { number } +} + +/** + * Creates `parse()` result object. + */ +function result(country, nationalNumber, ext) { + const result = { + country, + phone: nationalNumber + } + if (ext) { + result.ext = ext + } + return result +} + +/** + * Parses a viable phone number. + * @param {string} formattedPhoneNumber — Example: "(213) 373-4253". + * @param {string} [defaultCountry] + * @param {string} [defaultCallingCode] + * @param {Metadata} metadata + * @return {object} Returns `{ country: string?, countryCallingCode: string?, nationalNumber: string? }`. + */ +function parsePhoneNumber( + formattedPhoneNumber, + defaultCountry, + defaultCallingCode, + metadata +) { + // Extract calling code from phone number. + let { countryCallingCode, number } = extractCountryCallingCode( + parseIncompletePhoneNumber(formattedPhoneNumber), + defaultCountry, + defaultCallingCode, + metadata.metadata + ) + + // Choose a country by `countryCallingCode`. + let country + if (countryCallingCode) { + metadata.selectNumberingPlan(countryCallingCode) + } + // If `formattedPhoneNumber` is in "national" format + // then `number` is defined and `countryCallingCode` isn't. + else if (number && (defaultCountry || defaultCallingCode)) { + metadata.selectNumberingPlan(defaultCountry, defaultCallingCode) + if (defaultCountry) { + country = defaultCountry + } else { + /* istanbul ignore if */ + if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) { + if (metadata.isNonGeographicCallingCode(defaultCallingCode)) { + country = '001' + } + } + } + countryCallingCode = defaultCallingCode || getCountryCallingCode(defaultCountry, metadata.metadata) + } + else return {} + + if (!number) { + return { countryCallingCode } + } + + const { + nationalNumber, + carrierCode + } = extractNationalNumber( + parseIncompletePhoneNumber(number), + metadata + ) + + // Sometimes there are several countries + // corresponding to the same country phone code + // (e.g. NANPA countries all having `1` country phone code). + // Therefore, to reliably determine the exact country, + // national (significant) number should have been parsed first. + // + // When `metadata.json` is generated, all "ambiguous" country phone codes + // get their countries populated with the full set of + // "phone number type" regular expressions. + // + const exactCountry = getCountryByCallingCode(countryCallingCode, nationalNumber, metadata) + if (exactCountry) { + country = exactCountry + /* istanbul ignore if */ + if (exactCountry === '001') { + // Can't happen with `USE_NON_GEOGRAPHIC_COUNTRY_CODE` being `false`. + // If `USE_NON_GEOGRAPHIC_COUNTRY_CODE` is set to `true` for some reason, + // then remove the "istanbul ignore if". + } else { + metadata.country(country) + } + } + + return { + country, + countryCallingCode, + nationalNumber, + carrierCode + } +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/searchNumbers.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/searchNumbers.js new file mode 100644 index 00000000..a7b3a840 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/searchNumbers.js @@ -0,0 +1,30 @@ +import { normalizeArguments } from './parsePhoneNumber.js' +import PhoneNumberMatcher from './PhoneNumberMatcher.js' + +/** + * @return ES6 `for ... of` iterator. + */ +export default function searchNumbers() +{ + const { text, options, metadata } = normalizeArguments(arguments) + + const matcher = new PhoneNumberMatcher(text, options, metadata) + + return { + [Symbol.iterator]() { + return { + next: () => { + if (matcher.hasNext()) { + return { + done: false, + value: matcher.next() + } + } + return { + done: true + } + } + } + } + } +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/searchNumbers.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/searchNumbers.test.js new file mode 100644 index 00000000..cac32d44 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/searchNumbers.test.js @@ -0,0 +1,26 @@ +import searchNumbers from './searchNumbers.js' +import metadata from '../metadata.min.json' assert { type: 'json' } + +describe('searchNumbers', () => { + it('should iterate', () => { + const expectedNumbers =[{ + country : 'RU', + phone : '8005553535', + // number : '+7 (800) 555-35-35', + startsAt : 14, + endsAt : 32 + }, { + country : 'US', + phone : '2133734253', + // number : '(213) 373-4253', + startsAt : 41, + endsAt : 55 + }] + + for (const number of searchNumbers('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', metadata)) { + number.should.deep.equal(expectedNumbers.shift()) + } + + expectedNumbers.length.should.equal(0) + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/searchPhoneNumbersInText.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/searchPhoneNumbersInText.js new file mode 100644 index 00000000..ca54139a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/searchPhoneNumbersInText.js @@ -0,0 +1,7 @@ +import searchNumbers from './searchNumbers.js' +import { getArguments } from './findPhoneNumbersInText.js' + +export default function searchPhoneNumbersInText(text, defaultCountry, options, metadata) { + const args = getArguments(defaultCountry, options, metadata) + return searchNumbers(text, args.options, args.metadata) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/searchPhoneNumbersInText.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/searchPhoneNumbersInText.test.js new file mode 100644 index 00000000..7fb75b60 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/searchPhoneNumbersInText.test.js @@ -0,0 +1,20 @@ +import searchPhoneNumbersInText from './searchPhoneNumbersInText.js' +import metadata from '../metadata.min.json' assert { type: 'json' } + +describe('searchPhoneNumbersInText', () => { + it('should find phone numbers (with default country)', () => { + const NUMBERS = ['+78005553535', '+12133734253'] + for (const number of searchPhoneNumbersInText('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', 'US', metadata)) { + number.number.number.should.equal(NUMBERS[0]) + NUMBERS.shift() + } + }) + + it('should find phone numbers', () => { + const NUMBERS = ['+78005553535', '+12133734253'] + for (const number of searchPhoneNumbersInText('The number is +7 (800) 555-35-35 and not (213) 373-4253 as written in the document.', metadata)) { + number.number.number.should.equal(NUMBERS[0]) + NUMBERS.shift() + } + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/tools/semver-compare.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/tools/semver-compare.js new file mode 100644 index 00000000..37acf79e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/tools/semver-compare.js @@ -0,0 +1,26 @@ +// Copy-pasted from: +// https://github.com/substack/semver-compare/blob/master/index.js +// +// Inlining this function because some users reported issues with +// importing from `semver-compare` in a browser with ES6 "native" modules. +// +// Fixes `semver-compare` not being able to compare versions with alpha/beta/etc "tags". +// https://github.com/catamphetamine/libphonenumber-js/issues/381 +export default function(a, b) { + a = a.split('-') + b = b.split('-') + var pa = a[0].split('.') + var pb = b[0].split('.') + for (var i = 0; i < 3; i++) { + var na = Number(pa[i]) + var nb = Number(pb[i]) + if (na > nb) return 1 + if (nb > na) return -1 + if (!isNaN(na) && isNaN(nb)) return 1 + if (isNaN(na) && !isNaN(nb)) return -1 + } + if (a[1] && b[1]) { + return a[1] > b[1] ? 1 : (a[1] < b[1] ? -1 : 0) + } + return !a[1] && b[1] ? 1 : (a[1] && !b[1] ? -1 : 0) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/tools/semver-compare.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/tools/semver-compare.test.js new file mode 100644 index 00000000..4612e296 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/tools/semver-compare.test.js @@ -0,0 +1,40 @@ +import semverCompare from './semver-compare.js' + +describe('semver-compare', () => { + it('should compare versions', () => { + const versions = [ + '1.2.3', + '4.11.6', + '4.2.0', + '1.5.19', + '1.5.6', + '1.5.4', + '1.5.5-alpha.beta', + '1.5.5-alpha', + '1.5.5', + '1.5.5-rc.1', + '1.5.5-beta.0', + '4.1.3', + '2.3.1', + '10.5.5', + '11.3.0' + ] + versions.sort(semverCompare).should.deep.equal([ + '1.2.3', + '1.5.4', + '1.5.5-alpha', + '1.5.5-alpha.beta', + '1.5.5-beta.0', + '1.5.5-rc.1', + '1.5.5', + '1.5.6', + '1.5.19', + '2.3.1', + '4.1.3', + '4.2.0', + '4.11.6', + '10.5.5', + '11.3.0' + ]) + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/validate.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/validate.js new file mode 100644 index 00000000..52bfa472 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/validate.js @@ -0,0 +1,9 @@ +import _isValidNumber from './validate_.js' +import { normalizeArguments } from './getNumberType.js' + +// Finds out national phone number type (fixed line, mobile, etc) +export default function isValidNumber() +{ + const { input, options, metadata } = normalizeArguments(arguments) + return _isValidNumber(input, options, metadata) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/validate.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/validate.test.js new file mode 100644 index 00000000..aff8d7bc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/validate.test.js @@ -0,0 +1,86 @@ +import metadata from '../metadata.min.json' assert { type: 'json' } +import _isValidNumber from './validate.js' + +function isValidNumber(...parameters) { + parameters.push(metadata) + return _isValidNumber.apply(this, parameters) +} + +describe('validate', () => { + it('should validate phone numbers', () => { + isValidNumber('+1-213-373-4253').should.equal(true) + isValidNumber('+1-213-373').should.equal(false) + + isValidNumber('+1-213-373-4253', undefined).should.equal(true) + + isValidNumber('(213) 373-4253', 'US').should.equal(true) + isValidNumber('(213) 37', 'US').should.equal(false) + + isValidNumber({ country: 'US', phone: '2133734253' }).should.equal(true) + + // No "types" info: should return `true`. + isValidNumber('+380972423740').should.equal(true) + + isValidNumber('0912345678', 'TW').should.equal(true) + + // Moible numbers starting 07624* are Isle of Man + // which has its own "country code" "IM" + // which is in the "GB" "country calling code" zone. + // So while this number is for "IM" it's still supposed to + // be valid when passed "GB" as a default country. + isValidNumber('07624369230', 'GB').should.equal(true) + }) + + it('should refine phone number validation in case extended regular expressions are set for a country', () => { + // Germany general validation must pass + isValidNumber('961111111', 'UZ').should.equal(true) + + // Different regular expressions for precise national number validation. + // `types` index in compressed array is `9` for v1. + // For v2 it's 10. + // For v3 it's 11. + metadata.countries.UZ[11] = + [ + ["(?:6(?:1(?:22|3[124]|4[1-4]|5[123578]|64)|2(?:22|3[0-57-9]|41)|5(?:22|3[3-7]|5[024-8])|6\\d{2}|7(?:[23]\\d|7[69])|9(?:22|4[1-8]|6[135]))|7(?:0(?:5[4-9]|6[0146]|7[12456]|9[135-8])|1[12]\\d|2(?:22|3[1345789]|4[123579]|5[14])|3(?:2\\d|3[1578]|4[1-35-7]|5[1-57]|61)|4(?:2\\d|3[1-579]|7[1-79])|5(?:22|5[1-9]|6[1457])|6(?:22|3[12457]|4[13-8])|9(?:22|5[1-9])))\\d{5}"], + ["6(?:1(?:2(?:98|2[01])|35[0-4]|50\\d|61[23]|7(?:[01][017]|4\\d|55|9[5-9]))|2(?:11\\d|2(?:[12]1|9[01379])|5(?:[126]\\d|3[0-4])|7\\d{2})|5(?:19[01]|2(?:27|9[26])|30\\d|59\\d|7\\d{2})|6(?:2(?:1[5-9]|2[0367]|38|41|52|60)|3[79]\\d|4(?:56|83)|7(?:[07]\\d|1[017]|3[07]|4[047]|5[057]|67|8[0178]|9[79])|9[0-3]\\d)|7(?:2(?:24|3[237]|4[5-9]|7[15-8])|5(?:7[12]|8[0589])|7(?:0\\d|[39][07])|9(?:0\\d|7[079]))|9(?:2(?:1[1267]|5\\d|3[01]|7[0-4])|5[67]\\d|6(?:2[0-26]|8\\d)|7\\d{2}))\\d{4}|7(?:0\\d{3}|1(?:13[01]|6(?:0[47]|1[67]|66)|71[3-69]|98\\d)|2(?:2(?:2[79]|95)|3(?:2[5-9]|6[0-6])|57\\d|7(?:0\\d|1[17]|2[27]|3[37]|44|5[057]|66|88))|3(?:2(?:1[0-6]|21|3[469]|7[159])|33\\d|5(?:0[0-4]|5[579]|9\\d)|7(?:[0-3579]\\d|4[0467]|6[67]|8[078])|9[4-6]\\d)|4(?:2(?:29|5[0257]|6[0-7]|7[1-57])|5(?:1[0-4]|8\\d|9[5-9])|7(?:0\\d|1[024589]|2[0127]|3[0137]|[46][07]|5[01]|7[5-9]|9[079])|9(?:7[015-9]|[89]\\d))|5(?:112|2(?:0\\d|2[29]|[49]4)|3[1568]\\d|52[6-9]|7(?:0[01578]|1[017]|[23]7|4[047]|[5-7]\\d|8[78]|9[079]))|6(?:2(?:2[1245]|4[2-4])|39\\d|41[179]|5(?:[349]\\d|5[0-2])|7(?:0[017]|[13]\\d|22|44|55|67|88))|9(?:22[128]|3(?:2[0-4]|7\\d)|57[05629]|7(?:2[05-9]|3[37]|4\\d|60|7[2579]|87|9[07])))\\d{4}|9[0-57-9]\\d{7}"] + ] + + // Extended validation must not pass for an invalid phone number + isValidNumber('961111111', 'UZ').should.equal(false) + + // Extended validation must pass for a valid phone number + isValidNumber('912345678', 'UZ').should.equal(true) + }) + + it('should work in edge cases', () => { + // No metadata + let thrower = () => _isValidNumber('+78005553535') + thrower.should.throw('`metadata` argument not passed') + + // Non-phone-number characters in a phone number + isValidNumber('+499821958a').should.equal(false) + isValidNumber('88005553535x', 'RU').should.equal(false) + + // Doesn't have `types` regexps in default metadata. + isValidNumber({ country: 'UA', phone: '300000000' }).should.equal(true) + isValidNumber({ country: 'UA', phone: '200000000' }).should.equal(false) + + // Numerical `value` + thrower = () => isValidNumber(88005553535, 'RU') + thrower.should.throw('A phone number must either be a string or an object of shape { phone, [country] }.') + + // Long country phone code + isValidNumber('+3725555555').should.equal(true) + + // Invalid country + thrower = () => isValidNumber({ phone: '8005553535', country: 'RUS' }) + thrower.should.throw('Unknown country') + }) + + it('should accept phone number extensions', () => { + // International + isValidNumber('+12133734253 ext. 123').should.equal(true) + // National + isValidNumber('88005553535 x123', 'RU').should.equal(true) + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/validatePhoneNumberLength.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/validatePhoneNumberLength.js new file mode 100644 index 00000000..b41b82e3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/validatePhoneNumberLength.js @@ -0,0 +1,31 @@ +import { normalizeArguments } from './parsePhoneNumber.js' +import parsePhoneNumber from './parsePhoneNumber_.js' +import ParseError from './ParseError.js' +import Metadata from './metadata.js' +import checkNumberLength from './helpers/checkNumberLength.js' + +export default function validatePhoneNumberLength() { + let { text, options, metadata } = normalizeArguments(arguments) + options = { + ...options, + extract: false + } + + // Parse phone number. + try { + const phoneNumber = parsePhoneNumber(text, options, metadata) + metadata = new Metadata(metadata) + metadata.selectNumberingPlan(phoneNumber.countryCallingCode) + const result = checkNumberLength(phoneNumber.nationalNumber, metadata) + if (result !== 'IS_POSSIBLE') { + return result + } + } catch (error) { + /* istanbul ignore else */ + if (error instanceof ParseError) { + return error.message + } else { + throw error + } + } +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/validatePhoneNumberLength.test.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/validatePhoneNumberLength.test.js new file mode 100644 index 00000000..40750f1a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/validatePhoneNumberLength.test.js @@ -0,0 +1,30 @@ +import _validatePhoneNumberLength from './validatePhoneNumberLength.js' +import metadata from '../metadata.min.json' assert { type: 'json' } + +function validatePhoneNumberLength(...parameters) { + parameters.push(metadata) + return _validatePhoneNumberLength.apply(this, parameters) +} + +describe('validatePhoneNumberLength', () => { + it('should detect whether a phone number length is valid', () => { + // Not a phone number. + validatePhoneNumberLength('+').should.equal('NOT_A_NUMBER') + validatePhoneNumberLength('abcde').should.equal('NOT_A_NUMBER') + + // No country supplied for a national number. + validatePhoneNumberLength('123').should.equal('INVALID_COUNTRY') + + // Too short while the number is not considered "viable" + // by Google's `libphonenumber`. + validatePhoneNumberLength('2', 'US').should.equal('TOO_SHORT') + validatePhoneNumberLength('+1', 'US').should.equal('TOO_SHORT') + validatePhoneNumberLength('+12', 'US').should.equal('TOO_SHORT') + + // Test national (significant) number length. + validatePhoneNumberLength('444 1 44', 'TR').should.equal('TOO_SHORT') + expect(validatePhoneNumberLength('444 1 444', 'TR')).to.be.undefined + validatePhoneNumberLength('444 1 4444', 'TR').should.equal('INVALID_LENGTH') + validatePhoneNumberLength('444 1 4444444444', 'TR').should.equal('TOO_LONG') + }) +}) \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/validate_.js b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/validate_.js new file mode 100644 index 00000000..21ceeb6a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/source/validate_.js @@ -0,0 +1,62 @@ +import Metadata from './metadata.js' +import matchesEntirely from './helpers/matchesEntirely.js' +import getNumberType from './helpers/getNumberType.js' + +/** + * Checks if a given phone number is valid. + * + * If the `number` is a string, it will be parsed to an object, + * but only if it contains only valid phone number characters (including punctuation). + * If the `number` is an object, it is used as is. + * + * The optional `defaultCountry` argument is the default country. + * I.e. it does not restrict to just that country, + * e.g. in those cases where several countries share + * the same phone numbering rules (NANPA, Britain, etc). + * For example, even though the number `07624 369230` + * belongs to the Isle of Man ("IM" country code) + * calling `isValidNumber('07624369230', 'GB', metadata)` + * still returns `true` because the country is not restricted to `GB`, + * it's just that `GB` is the default one for the phone numbering rules. + * For restricting the country see `isValidNumberForRegion()` + * though restricting a country might not be a good idea. + * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion + * + * Examples: + * + * ```js + * isValidNumber('+78005553535', metadata) + * isValidNumber('8005553535', 'RU', metadata) + * isValidNumber('88005553535', 'RU', metadata) + * isValidNumber({ phone: '8005553535', country: 'RU' }, metadata) + * ``` + */ +export default function isValidNumber(input, options, metadata) +{ + // If assigning the `{}` default value is moved to the arguments above, + // code coverage would decrease for some weird reason. + options = options || {} + + metadata = new Metadata(metadata) + + // This is just to support `isValidNumber({})` + // for cases when `parseNumber()` returns `{}`. + if (!input.country) + { + return false + } + + metadata.selectNumberingPlan(input.country, input.countryCallingCode) + + // By default, countries only have type regexps when it's required for + // distinguishing different countries having the same `countryCallingCode`. + if (metadata.hasTypes()) + { + return getNumberType(input, options, metadata.metadata) !== undefined + } + + // If there are no type regexps for this country in metadata then use + // `nationalNumberPattern` as a "better than nothing" replacement. + const national_number = options.v2 ? input.nationalNumber : input.phone + return matchesEntirely(national_number, metadata.nationalNumberPattern()) +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/types.d.ts b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/types.d.ts new file mode 100644 index 00000000..cf9b8aa6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/libphonenumber-js/types.d.ts @@ -0,0 +1,115 @@ +// The rationale for having a separate `CountryCode` type instead of just a `string`: +// https://github.com/catamphetamine/libphonenumber-js/issues/170#issuecomment-363156068 +export type CountryCode = 'AC' | 'AD' | 'AE' | 'AF' | 'AG' | 'AI' | 'AL' | 'AM' | 'AO' | 'AR' | 'AS' | 'AT' | 'AU' | 'AW' | 'AX' | 'AZ' | 'BA' | 'BB' | 'BD' | 'BE' | 'BF' | 'BG' | 'BH' | 'BI' | 'BJ' | 'BL' | 'BM' | 'BN' | 'BO' | 'BQ' | 'BR' | 'BS' | 'BT' | 'BW' | 'BY' | 'BZ' | 'CA' | 'CC' | 'CD' | 'CF' | 'CG' | 'CH' | 'CI' | 'CK' | 'CL' | 'CM' | 'CN' | 'CO' | 'CR' | 'CU' | 'CV' | 'CW' | 'CX' | 'CY' | 'CZ' | 'DE' | 'DJ' | 'DK' | 'DM' | 'DO' | 'DZ' | 'EC' | 'EE' | 'EG' | 'EH' | 'ER' | 'ES' | 'ET' | 'FI' | 'FJ' | 'FK' | 'FM' | 'FO' | 'FR' | 'GA' | 'GB' | 'GD' | 'GE' | 'GF' | 'GG' | 'GH' | 'GI' | 'GL' | 'GM' | 'GN' | 'GP' | 'GQ' | 'GR' | 'GT' | 'GU' | 'GW' | 'GY' | 'HK' | 'HN' | 'HR' | 'HT' | 'HU' | 'ID' | 'IE' | 'IL' | 'IM' | 'IN' | 'IO' | 'IQ' | 'IR' | 'IS' | 'IT' | 'JE' | 'JM' | 'JO' | 'JP' | 'KE' | 'KG' | 'KH' | 'KI' | 'KM' | 'KN' | 'KP' | 'KR' | 'KW' | 'KY' | 'KZ' | 'LA' | 'LB' | 'LC' | 'LI' | 'LK' | 'LR' | 'LS' | 'LT' | 'LU' | 'LV' | 'LY' | 'MA' | 'MC' | 'MD' | 'ME' | 'MF' | 'MG' | 'MH' | 'MK' | 'ML' | 'MM' | 'MN' | 'MO' | 'MP' | 'MQ' | 'MR' | 'MS' | 'MT' | 'MU' | 'MV' | 'MW' | 'MX' | 'MY' | 'MZ' | 'NA' | 'NC' | 'NE' | 'NF' | 'NG' | 'NI' | 'NL' | 'NO' | 'NP' | 'NR' | 'NU' | 'NZ' | 'OM' | 'PA' | 'PE' | 'PF' | 'PG' | 'PH' | 'PK' | 'PL' | 'PM' | 'PR' | 'PS' | 'PT' | 'PW' | 'PY' | 'QA' | 'RE' | 'RO' | 'RS' | 'RU' | 'RW' | 'SA' | 'SB' | 'SC' | 'SD' | 'SE' | 'SG' | 'SH' | 'SI' | 'SJ' | 'SK' | 'SL' | 'SM' | 'SN' | 'SO' | 'SR' | 'SS' | 'ST' | 'SV' | 'SX' | 'SY' | 'SZ' | 'TA' | 'TC' | 'TD' | 'TG' | 'TH' | 'TJ' | 'TK' | 'TL' | 'TM' | 'TN' | 'TO' | 'TR' | 'TT' | 'TV' | 'TW' | 'TZ' | 'UA' | 'UG' | 'US' | 'UY' | 'UZ' | 'VA' | 'VC' | 'VE' | 'VG' | 'VI' | 'VN' | 'VU' | 'WF' | 'WS' | 'XK' | 'YE' | 'YT' | 'ZA' | 'ZM' | 'ZW'; + +export type CountryCallingCodes = { + [countryCallingCode: string]: CountryCode[]; +}; + +export type Countries = { + // Metadata here is a compressed one, + // so a country's data is just an array of some properties + // instead of a JSON object of shape: + // { + // phone_code: string, + // idd_prefix: string, + // national_number_pattern: string, + // types: object, + // examples: object, + // formats: object[]?, + // possible_lengths: number[], + // ... + // } + // + // `in` operator docs: + // https://www.typescriptlang.org/docs/handbook/advanced-types.html#mapped-types + // `country in CountryCode` means "for each and every CountryCode". + [country in CountryCode]?: any[]; +}; + +export type MetadataJson = { + country_calling_codes: CountryCallingCodes; + countries: Countries; +}; + +export type Examples = { + // `in` operator docs: + // https://www.typescriptlang.org/docs/handbook/advanced-types.html#mapped-types + // `country in CountryCode` means "for each and every CountryCode". + [country in CountryCode]: NationalNumber; +}; + +export type NumberFormat = 'NATIONAL' | 'INTERNATIONAL' | 'E.164' | 'RFC3966' | 'IDD'; +export type NumberType = undefined | 'PREMIUM_RATE' | 'TOLL_FREE' | 'SHARED_COST' | 'VOIP' | 'PERSONAL_NUMBER' | 'PAGER' | 'UAN' | 'VOICEMAIL' | 'FIXED_LINE_OR_MOBILE' | 'FIXED_LINE' | 'MOBILE'; + +type Tagged = A & { __tag?: T }; + +type E164Number = Tagged; +type NationalNumber = Tagged; +type Extension = Tagged; +type CarrierCode = Tagged; +type CountryCallingCode = Tagged; + +type FormatExtension = (formattedNumber: string, extension: Extension, metadata: MetadataJson) => string + +type FormatNumberOptionsWithoutIDD = { + v2?: boolean; + formatExtension?: FormatExtension; +}; + +type FormatNumberOptions = { + v2?: boolean; + fromCountry?: CountryCode; + humanReadable?: boolean; + nationalPrefix?: boolean; + formatExtension?: FormatExtension; +}; + +export class PhoneNumber { + constructor(countryCallingCodeOrCountry: CountryCallingCode | CountryCode, nationalNumber: NationalNumber, metadata: MetadataJson); + countryCallingCode: CountryCallingCode; + country?: CountryCode; + nationalNumber: NationalNumber; + number: E164Number; + carrierCode?: CarrierCode; + ext?: Extension; + setExt(ext: Extension): void; + isPossible(): boolean; + isValid(): boolean; + getType(): NumberType; + format(format: NumberFormat, options?: FormatNumberOptions): string; + formatNational(options?: FormatNumberOptionsWithoutIDD): string; + formatInternational(options?: FormatNumberOptionsWithoutIDD): string; + getURI(options?: FormatNumberOptionsWithoutIDD): string; + isNonGeographic(): boolean; + isEqual(phoneNumber: PhoneNumber): boolean; +} + +export interface NumberFound { + number: PhoneNumber; + startsAt: number; + endsAt: number; +} + +export interface NumberFoundLegacy { + country: CountryCode; + phone: NationalNumber; + ext?: Extension; + startsAt: number; + endsAt: number; +} + +export class ParseError { + message: string; +} + +export interface NumberingPlan { + leadingDigits(): string | undefined; + possibleLengths(): number[]; + IDDPrefix(): string; + defaultIDDPrefix(): string | undefined; +} + +// The rationale for having a separate type for the result "enum" instead of just a `string`: +// https://github.com/catamphetamine/libphonenumber-js/issues/170#issuecomment-363156068 +export type ValidatePhoneNumberLengthResult = 'INVALID_COUNTRY' | 'NOT_A_NUMBER' | 'TOO_SHORT' | 'TOO_LONG' | 'INVALID_LENGTH'; diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/LICENSE b/srcs/requirements/nestjs/api_back/node_modules/validator/LICENSE new file mode 100644 index 00000000..4e49a384 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2018 Chris O'Hara + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/README.md b/srcs/requirements/nestjs/api_back/node_modules/validator/README.md new file mode 100644 index 00000000..2cf6505b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/README.md @@ -0,0 +1,274 @@ +# validator.js + +[![NPM version][npm-image]][npm-url] +[![CI][ci-image]][ci-url] +[![Coverage][codecov-image]][codecov-url] +[![Downloads][downloads-image]][npm-url] +[![Backers on Open Collective](https://opencollective.com/validatorjs/backers/badge.svg)](#backers) +[![Sponsors on Open Collective](https://opencollective.com/validatorjs/sponsors/badge.svg)](#sponsors) +[![Gitter](https://badges.gitter.im/validatorjs/community.svg)](https://gitter.im/validatorjs/community) + +A library of string validators and sanitizers. + +## Strings only + +**This library validates and sanitizes strings only.** + +If you're not sure if your input is a string, coerce it using `input + ''`. +Passing anything other than a string will result in an error. + +## Installation and Usage + +### Server-side usage + +Install the library with `npm install validator` + +#### No ES6 + +```javascript +var validator = require('validator'); + +validator.isEmail('foo@bar.com'); //=> true +``` + +#### ES6 + +```javascript +import validator from 'validator'; +``` + +Or, import only a subset of the library: + +```javascript +import isEmail from 'validator/lib/isEmail'; +``` + +#### Tree-shakeable ES imports + +```javascript +import isEmail from 'validator/es/lib/isEmail'; +``` + +### Client-side usage + +The library can be loaded either as a standalone script, or through an [AMD][amd]-compatible loader + +```html + + +``` + +The library can also be installed through [bower][bower] + +```bash +$ bower install validator-js +``` + +CDN + +```html + +``` + +## Contributors + +[Become a backer](https://opencollective.com/validatorjs#backer) + +[Become a sponsor](https://opencollective.com/validatorjs#sponsor) + +Thank you to the people who have already contributed: + + + +## Validators + +Here is a list of the validators currently available. + +Validator | Description +--------------------------------------- | -------------------------------------- +**contains(str, seed [, options ])** | check if the string contains the seed.

`options` is an object that defaults to `{ ignoreCase: false, minOccurrences: 1 }`.
Options:
`ignoreCase`: Ignore case when doing comparison, default false
`minOccurences`: Minimum number of occurrences for the seed in the string. Defaults to 1. +**equals(str, comparison)** | check if the string matches the comparison. +**isAfter(str [, date])** | check if the string is a date that's after the specified date (defaults to now). +**isAlpha(str [, locale, options])** | check if the string contains only letters (a-zA-Z).

Locale is one of `['ar', 'ar-AE', 'ar-BH', 'ar-DZ', 'ar-EG', 'ar-IQ', 'ar-JO', 'ar-KW', 'ar-LB', 'ar-LY', 'ar-MA', 'ar-QA', 'ar-QM', 'ar-SA', 'ar-SD', 'ar-SY', 'ar-TN', 'ar-YE', 'bg-BG', 'cs-CZ', 'da-DK', 'de-DE', 'el-GR', 'en-AU', 'en-GB', 'en-HK', 'en-IN', 'en-NZ', 'en-US', 'en-ZA', 'en-ZM', 'es-ES', 'fa-IR', 'fi-FI', 'fr-CA', 'fr-FR', 'he', 'hi-IN', 'hu-HU', 'it-IT', 'ku-IQ', 'nb-NO', 'nl-NL', 'nn-NO', 'pl-PL', 'pt-BR', 'pt-PT', 'ru-RU', 'sl-SI', 'sk-SK', 'sr-RS', 'sr-RS@latin', 'sv-SE', 'tr-TR', 'uk-UA']`) and defaults to `en-US`. Locale list is `validator.isAlphaLocales`. options is an optional object that can be supplied with the following key(s): ignore which can either be a String or RegExp of characters to be ignored e.g. " -" will ignore spaces and -'s. +**isAlphanumeric(str [, locale, options])** | check if the string contains only letters and numbers (a-zA-Z0-9).

Locale is one of `['ar', 'ar-AE', 'ar-BH', 'ar-DZ', 'ar-EG', 'ar-IQ', 'ar-JO', 'ar-KW', 'ar-LB', 'ar-LY', 'ar-MA', 'ar-QA', 'ar-QM', 'ar-SA', 'ar-SD', 'ar-SY', 'ar-TN', 'ar-YE', 'bg-BG', 'cs-CZ', 'da-DK', 'de-DE', 'el-GR', 'en-AU', 'en-GB', 'en-HK', 'en-IN', 'en-NZ', 'en-US', 'en-ZA', 'en-ZM', 'es-ES', 'fa-IR', 'fi-FI', 'fr-CA', 'fr-FR', 'he', 'hi-IN', 'hu-HU', 'it-IT', 'ku-IQ', 'nb-NO', 'nl-NL', 'nn-NO', 'pl-PL', 'pt-BR', 'pt-PT', 'ru-RU', 'sl-SI', 'sk-SK', 'sr-RS', 'sr-RS@latin', 'sv-SE', 'tr-TR', 'uk-UA']`) and defaults to `en-US`. Locale list is `validator.isAlphanumericLocales`. options is an optional object that can be supplied with the following key(s): ignore which can either be a String or RegExp of characters to be ignored e.g. " -" will ignore spaces and -'s. +**isAscii(str)** | check if the string contains ASCII chars only. +**isBase32(str)** | check if a string is base32 encoded. +**isBase58(str)** | check if a string is base58 encoded. +**isBase64(str [, options])** | check if a string is base64 encoded. options is optional and defaults to `{urlSafe: false}`
when `urlSafe` is true it tests the given base64 encoded string is [url safe](https://base64.guru/standards/base64url) +**isBefore(str [, date])** | check if the string is a date that's before the specified date. +**isBIC(str)** | check if a string is a BIC (Bank Identification Code) or SWIFT code. +**isBoolean(str [, options])** | check if a string is a boolean.
`options` is an object which defaults to `{ loose: false }`. If loose is is set to false, the validator will strictly match ['true', 'false', '0', '1']. If loose is set to true, the validator will also match 'yes', 'no', and will match a valid boolean string of any case. (eg: ['true', 'True', 'TRUE']). +**isBtcAddress(str)** | check if the string is a valid BTC address. +**isByteLength(str [, options])** | check if the string's length (in UTF-8 bytes) falls in a range.

`options` is an object which defaults to `{min:0, max: undefined}`. +**isCreditCard(str)** | check if the string is a credit card. +**isCurrency(str [, options])** | check if the string is a valid currency amount.

`options` is an object which defaults to `{symbol: '$', require_symbol: false, allow_space_after_symbol: false, symbol_after_digits: false, allow_negatives: true, parens_for_negatives: false, negative_sign_before_digits: false, negative_sign_after_digits: false, allow_negative_sign_placeholder: false, thousands_separator: ',', decimal_separator: '.', allow_decimal: true, require_decimal: false, digits_after_decimal: [2], allow_space_after_digits: false}`.
**Note:** The array `digits_after_decimal` is filled with the exact number of digits allowed not a range, for example a range 1 to 3 will be given as [1, 2, 3]. +**isDataURI(str)** | check if the string is a [data uri format](https://developer.mozilla.org/en-US/docs/Web/HTTP/data_URIs). +**isDate(input [, options])** | Check if the input is a valid date. e.g. [`2002-07-15`, new Date()].

`options` is an object which can contain the keys `format`, `strictMode` and/or `delimiters`

`format` is a string and defaults to `YYYY/MM/DD`.

`strictMode` is a boolean and defaults to `false`. If `strictMode` is set to true, the validator will reject inputs different from `format`.

`delimiters` is an array of allowed date delimiters and defaults to `['/', '-']`. +**isDecimal(str [, options])** | check if the string represents a decimal number, such as 0.1, .3, 1.1, 1.00003, 4.0, etc.

`options` is an object which defaults to `{force_decimal: false, decimal_digits: '1,', locale: 'en-US'}`

`locale` determine the decimal separator and is one of `['ar', 'ar-AE', 'ar-BH', 'ar-DZ', 'ar-EG', 'ar-IQ', 'ar-JO', 'ar-KW', 'ar-LB', 'ar-LY', 'ar-MA', 'ar-QA', 'ar-QM', 'ar-SA', 'ar-SD', 'ar-SY', 'ar-TN', 'ar-YE', 'bg-BG', 'cs-CZ', 'da-DK', 'de-DE', 'el-GR', 'en-AU', 'en-GB', 'en-HK', 'en-IN', 'en-NZ', 'en-US', 'en-ZA', 'en-ZM', 'es-ES', 'fa', 'fa-AF', 'fa-IR', 'fr-FR', 'fr-CA', 'hu-HU', 'id-ID', 'it-IT', 'ku-IQ', 'nb-NO', 'nl-NL', 'nn-NO', 'pl-PL', 'pl-Pl', 'pt-BR', 'pt-PT', 'ru-RU', 'sl-SI', 'sr-RS', 'sr-RS@latin', 'sv-SE', 'tr-TR', 'uk-UA', 'vi-VN']`.
**Note:** `decimal_digits` is given as a range like '1,3', a specific value like '3' or min like '1,'. +**isDivisibleBy(str, number)** | check if the string is a number that's divisible by another. +**isEAN(str)** | check if the string is an EAN (European Article Number). +**isEmail(str [, options])** | check if the string is an email.

`options` is an object which defaults to `{ allow_display_name: false, require_display_name: false, allow_utf8_local_part: true, require_tld: true, allow_ip_domain: false, domain_specific_validation: false, blacklisted_chars: '', host_blacklist: [] }`. If `allow_display_name` is set to true, the validator will also match `Display Name `. If `require_display_name` is set to true, the validator will reject strings without the format `Display Name `. If `allow_utf8_local_part` is set to false, the validator will not allow any non-English UTF8 character in email address' local part. If `require_tld` is set to false, e-mail addresses without having TLD in their domain will also be matched. If `ignore_max_length` is set to true, the validator will not check for the standard max length of an email. If `allow_ip_domain` is set to true, the validator will allow IP addresses in the host part. If `domain_specific_validation` is true, some additional validation will be enabled, e.g. disallowing certain syntactically valid email addresses that are rejected by GMail. If `blacklisted_chars` receives a string, then the validator will reject emails that include any of the characters in the string, in the name part. If `host_blacklist` is set to an array of strings and the part of the email after the `@` symbol matches one of the strings defined in it, the validation fails. +**isEmpty(str [, options])** | check if the string has a length of zero.

`options` is an object which defaults to `{ ignore_whitespace:false }`. +**isEthereumAddress(str)** | check if the string is an [Ethereum](https://ethereum.org/) address using basic regex. Does not validate address checksums. +**isFloat(str [, options])** | check if the string is a float.

`options` is an object which can contain the keys `min`, `max`, `gt`, and/or `lt` to validate the float is within boundaries (e.g. `{ min: 7.22, max: 9.55 }`) it also has `locale` as an option.

`min` and `max` are equivalent to 'greater or equal' and 'less or equal', respectively while `gt` and `lt` are their strict counterparts.

`locale` determine the decimal separator and is one of `['ar', 'ar-AE', 'ar-BH', 'ar-DZ', 'ar-EG', 'ar-IQ', 'ar-JO', 'ar-KW', 'ar-LB', 'ar-LY', 'ar-MA', 'ar-QA', 'ar-QM', 'ar-SA', 'ar-SD', 'ar-SY', 'ar-TN', 'ar-YE', 'bg-BG', 'cs-CZ', 'da-DK', 'de-DE', 'en-AU', 'en-GB', 'en-HK', 'en-IN', 'en-NZ', 'en-US', 'en-ZA', 'en-ZM', 'es-ES', 'fr-CA', 'fr-FR', 'hu-HU', 'it-IT', 'nb-NO', 'nl-NL', 'nn-NO', 'pl-PL', 'pt-BR', 'pt-PT', 'ru-RU', 'sl-SI', 'sr-RS', 'sr-RS@latin', 'sv-SE', 'tr-TR', 'uk-UA']`. Locale list is `validator.isFloatLocales`. +**isFQDN(str [, options])** | check if the string is a fully qualified domain name (e.g. domain.com).

`options` is an object which defaults to `{ require_tld: true, allow_underscores: false, allow_trailing_dot: false, allow_numeric_tld: false, allow_wildcard: false }`. If `allow_wildcard` is set to true, the validator will allow domain starting with `*.` (e.g. `*.example.com` or `*.shop.example.com`). +**isFullWidth(str)** | check if the string contains any full-width chars. +**isHalfWidth(str)** | check if the string contains any half-width chars. +**isHash(str, algorithm)** | check if the string is a hash of type algorithm.

Algorithm is one of `['md4', 'md5', 'sha1', 'sha256', 'sha384', 'sha512', 'ripemd128', 'ripemd160', 'tiger128', 'tiger160', 'tiger192', 'crc32', 'crc32b']` +**isHexadecimal(str)** | check if the string is a hexadecimal number. +**isHexColor(str)** | check if the string is a hexadecimal color. +**isHSL(str)** | check if the string is an HSL (hue, saturation, lightness, optional alpha) color based on [CSS Colors Level 4 specification](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value).

Comma-separated format supported. Space-separated format supported with the exception of a few edge cases (ex: `hsl(200grad+.1%62%/1)`). +**isIBAN(str)** | check if a string is a IBAN (International Bank Account Number). +**isIdentityCard(str [, locale])** | check if the string is a valid identity card code.

`locale` is one of `['LK', 'PL', 'ES', 'FI', 'IN', 'IT', 'IR', 'MZ', 'NO', 'TH', 'zh-TW', 'he-IL', 'ar-LY', 'ar-TN', 'zh-CN']` OR `'any'`. If 'any' is used, function will check if any of the locals match.

Defaults to 'any'. +**isIMEI(str [, options]))** | check if the string is a valid IMEI number. Imei should be of format `###############` or `##-######-######-#`.

`options` is an object which can contain the keys `allow_hyphens`. Defaults to first format . If allow_hyphens is set to true, the validator will validate the second format. +**isIn(str, values)** | check if the string is in a array of allowed values. +**isInt(str [, options])** | check if the string is an integer.

`options` is an object which can contain the keys `min` and/or `max` to check the integer is within boundaries (e.g. `{ min: 10, max: 99 }`). `options` can also contain the key `allow_leading_zeroes`, which when set to false will disallow integer values with leading zeroes (e.g. `{ allow_leading_zeroes: false }`). Finally, `options` can contain the keys `gt` and/or `lt` which will enforce integers being greater than or less than, respectively, the value provided (e.g. `{gt: 1, lt: 4}` for a number between 1 and 4). +**isIP(str [, version])** | check if the string is an IP (version 4 or 6). +**isIPRange(str [, version])** | check if the string is an IP Range (version 4 or 6). +**isISBN(str [, version])** | check if the string is an ISBN (version 10 or 13). +**isISIN(str)** | check if the string is an [ISIN][ISIN] (stock/security identifier). +**isISO8601(str)** | check if the string is a valid [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date.
`options` is an object which defaults to `{ strict: false, strictSeparator: false }`. If `strict` is true, date strings with invalid dates like `2009-02-29` will be invalid. If `strictSeparator` is true, date strings with date and time separated by anything other than a T will be invalid. +**isISO31661Alpha2(str)** | 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. +**isISO31661Alpha3(str)** | 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. +**isISO4217(str)** | check if the string is a valid [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) officially assigned currency code. +**isISRC(str)** | check if the string is a [ISRC](https://en.wikipedia.org/wiki/International_Standard_Recording_Code). +**isISSN(str [, options])** | check if the string is an [ISSN](https://en.wikipedia.org/wiki/International_Standard_Serial_Number).

`options` is an object which defaults to `{ case_sensitive: false, require_hyphen: false }`. If `case_sensitive` is true, ISSNs with a lowercase `'x'` as the check digit are rejected. +**isJSON(str [, options])** | check if the string is valid JSON (note: uses JSON.parse).

`options` is an object which defaults to `{ allow_primitives: false }`. If `allow_primitives` is true, the primitives 'true', 'false' and 'null' are accepted as valid JSON values. +**isJWT(str)** | check if the string is valid JWT token. +**isLatLong(str [, options])** | check if the string is a valid latitude-longitude coordinate in the format `lat,long` or `lat, long`.

`options` is an object that defaults to `{ checkDMS: false }`. Pass `checkDMS` as `true` to validate DMS(degrees, minutes, and seconds) latitude-longitude format. +**isLength(str [, options])** | check if the string's length falls in a range.

`options` is an object which defaults to `{min:0, max: undefined}`. Note: this function takes into account surrogate pairs. +**isLicensePlate(str [, locale])** | check if string matches the format of a country's license plate.

(locale is one of `['cs-CZ', 'de-DE', 'de-LI', 'fi-FI', pt-PT', 'sq-AL', 'pt-BR']` or `any`) +**isLocale(str)** | check if the string is a locale +**isLowercase(str)** | check if the string is lowercase. +**isMACAddress(str)** | check if the string is a MAC address.

`options` is an object which defaults to `{no_separators: false}`. If `no_separators` is true, the validator will allow MAC addresses without separators. Also, it allows the use of hyphens, spaces or dots e.g '01 02 03 04 05 ab', '01-02-03-04-05-ab' or '0102.0304.05ab'. +**isMagnetURI(str)** | check if the string is a [magnet uri format](https://en.wikipedia.org/wiki/Magnet_URI_scheme). +**isMD5(str)** | check if the string is a MD5 hash.

Please note that you can also use the `isHash(str, 'md5')` function. Keep in mind that MD5 has some collision weaknesses compared to other algorithms (e.g., SHA). +**isMimeType(str)** | check if the string matches to a valid [MIME type](https://en.wikipedia.org/wiki/Media_type) format +**isMobilePhone(str [, locale [, options]])** | check if the string is a mobile phone number,

(locale is either an array of locales (e.g `['sk-SK', 'sr-RS']`) OR one of `['am-Am', 'ar-AE', 'ar-BH', 'ar-DZ', 'ar-EG', 'ar-IQ', ar-JO', 'ar-KW', 'ar-PS', 'ar-SA', 'ar-SY', 'ar-TN', 'az-AZ', 'az-LY', 'az-LB', 'bs-BA', 'be-BY', 'bg-BG', 'bn-BD', 'ca-AD', 'cs-CZ', 'da-DK', 'de-DE', 'de-AT', 'de-CH', 'de-LU', 'dv-MV', 'el-GR', 'en-AU', 'en-BM', 'en-BW', 'en-CA', 'en-GB', 'en-GG', 'en-GH', 'en-GY', 'en-HK', 'en-MO', 'en-IE', 'en-IN', 'en-KE', 'en-KI', 'en-MT', 'en-MU', 'en-NG', 'en-NZ', 'en-PK', 'en-PH', 'en-RW', 'en-SG', 'en-SL', 'en-UG', 'en-US', 'en-TZ', 'en-ZA', 'en-ZM', 'en-ZW', 'es-AR', 'es-BO', 'es-CL', 'es-CO', 'es-CR', 'es-CU', 'es-DO', 'es-HN', 'es-PE', 'es-EC', 'es-ES', 'es-MX', 'es-PA', 'es-PY', 'es-SV', 'es-UY', 'es-VE', 'et-EE', 'fa-IR', 'fi-FI', 'fj-FJ', 'fo-FO', 'fr-BE', 'fr-BF', 'fr-FR', 'fr-GF', 'fr-GP', 'fr-MQ', 'fr-PF', 'fr-RE', 'ga-IE', 'he-IL', 'hu-HU', 'id-ID', 'it-IT', 'it-SM', 'ja-JP', 'ka-GE', 'kk-KZ', 'kl-GL', 'ko-KR', 'lt-LT', 'ms-MY', ''mz-MZ', nb-NO', 'ne-NP', 'nl-BE', 'nl-NL', 'nn-NO', 'pl-PL', 'pt-BR', 'pt-PT', 'pt-AO', 'ro-RO', 'ru-RU', 'si-LK' 'sl-SI', 'sk-SK', 'sq-AL', 'sr-RS', 'sv-SE', 'tg-TJ', 'th-TH', 'tk-TM', 'tr-TR', 'uk-UA', 'uz-UZ', 'vi-VN', 'zh-CN', 'zh-HK', 'zh-MO', 'zh-TW', 'dz-BT']` OR defaults to 'any'. If 'any' or a falsey value is used, function will check if any of the locales match).

`options` is an optional object that can be supplied with the following keys: `strictMode`, if this is set to `true`, the mobile phone number must be supplied with the country code and therefore must start with `+`. Locale list is `validator.isMobilePhoneLocales`. +**isMongoId(str)** | check if the string is a valid hex-encoded representation of a [MongoDB ObjectId][mongoid]. +**isMultibyte(str)** | check if the string contains one or more multibyte chars. +**isNumeric(str [, options])** | check if the string contains only numbers.

`options` is an object which defaults to `{no_symbols: false}` it also has locale as an option. If `no_symbols` is true, the validator will reject numeric strings that feature a symbol (e.g. `+`, `-`, or `.`).

`locale` determine the decimal separator and is one of `['ar', 'ar-AE', 'ar-BH', 'ar-DZ', 'ar-EG', 'ar-IQ', 'ar-JO', 'ar-KW', 'ar-LB', 'ar-LY', 'ar-MA', 'ar-QA', 'ar-QM', 'ar-SA', 'ar-SD', 'ar-SY', 'ar-TN', 'ar-YE', 'bg-BG', 'cs-CZ', 'da-DK', 'de-DE', 'en-AU', 'en-GB', 'en-HK', 'en-IN', 'en-NZ', 'en-US', 'en-ZA', 'en-ZM', 'es-ES', 'fr-FR', 'fr-CA', 'hu-HU', 'it-IT', 'nb-NO', 'nl-NL', 'nn-NO', 'pl-PL', 'pt-BR', 'pt-PT', 'ru-RU', 'sl-SI', 'sr-RS', 'sr-RS@latin', 'sv-SE', 'tr-TR', 'uk-UA']`. +**isOctal(str)** | check if the string is a valid octal number. +**isPassportNumber(str, countryCode)** | check if the string is a valid passport number.

(countryCode is one of `[ 'AM', 'AR', 'AT', 'AU', 'BE', 'BG', 'BY', 'BR', 'CA', 'CH', 'CN', 'CY', 'CZ', 'DE', 'DK', 'DZ', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'IE' 'IN', 'IR', 'ID', 'IS', 'IT', 'JP', 'KR', 'LT', 'LU', 'LV', 'LY', 'MT', 'MY', 'MZ', 'NL', 'PL', 'PT', 'RO', 'RU', 'SE', 'SL', 'SK', 'TR', 'UA', 'US' ]`. +**isPort(str)** | check if the string is a valid port number. +**isPostalCode(str, locale)** | check if the string is a postal code,

(locale is one of `[ 'AD', 'AT', 'AU', 'AZ', 'BE', 'BG', 'BR', 'BY', 'CA', 'CH', 'CN', 'CZ', 'DE', 'DK', 'DO', 'DZ', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HT', 'HU', 'ID', 'IE' 'IL', 'IN', 'IR', 'IS', 'IT', 'JP', 'KE', 'KR', 'LI', 'LK', 'LT', 'LU', 'LV', 'MT', 'MX', 'MY', 'NL', 'NO', 'NP', 'NZ', 'PL', 'PR', 'PT', 'RO', 'RU', 'SA', 'SE', 'SG', 'SI', 'TH', 'TN', 'TW', 'UA', 'US', 'ZA', 'ZM' ]` OR 'any'. If 'any' is used, function will check if any of the locals match. Locale list is `validator.isPostalCodeLocales`.). +**isRFC3339(str)** | check if the string is a valid [RFC 3339](https://tools.ietf.org/html/rfc3339) date. +**isRgbColor(str [, includePercentValues])** | check if the string is a rgb or rgba color.

`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. +**isSemVer(str)** | check if the string is a Semantic Versioning Specification (SemVer). +**isSurrogatePair(str)** | check if the string contains any surrogate pairs chars. +**isUppercase(str)** | check if the string is uppercase. +**isSlug** | Check if the string is of type slug. `Options` allow a single hyphen between string. e.g. [`cn-cn`, `cn-c-c`] +**isStrongPassword(str [, options])** | Check if a password is strong or not. Allows for custom requirements or scoring rules. If `returnScore` is true, then the function returns an integer score for the password rather than a boolean.
Default options:
`{ minLength: 8, minLowercase: 1, minUppercase: 1, minNumbers: 1, minSymbols: 1, returnScore: false, pointsPerUnique: 1, pointsPerRepeat: 0.5, pointsForContainingLower: 10, pointsForContainingUpper: 10, pointsForContainingNumber: 10, pointsForContainingSymbol: 10 }` +**isTaxID(str, locale)** | Check if the given value is a valid Tax Identification Number. Default locale is `en-US`.

More info about exact TIN support can be found in `src/lib/isTaxID.js`

Supported locales: `[ 'bg-BG', 'cs-CZ', 'de-AT', 'de-DE', 'dk-DK', 'el-CY', 'el-GR', 'en-GB', 'en-IE', 'en-US', 'es-ES', 'et-EE', 'fi-FI', 'fr-BE', 'fr-FR', 'fr-LU', 'hr-HR', 'hu-HU', 'it-IT', 'lb-LU', 'lt-LT', 'lv-LV' 'mt-MT', 'nl-BE', 'nl-NL', 'pl-PL', 'pt-BR', 'pt-PT', 'ro-RO', 'sk-SK', 'sl-SI', 'sv-SE' ]` +**isURL(str [, options])** | check if the string is an URL.

`options` is an object which defaults to `{ protocols: ['http','https','ftp'], require_tld: true, require_protocol: false, require_host: true, require_port: false, require_valid_protocol: true, allow_underscores: false, host_whitelist: false, host_blacklist: false, allow_trailing_dot: false, allow_protocol_relative_urls: false, allow_fragments: true, allow_query_components: true, disallow_auth: false, validate_length: true }`.

require_protocol - if set as true isURL will return false if protocol is not present in the URL.
require_valid_protocol - isURL will check if the URL's protocol is present in the protocols option.
protocols - valid protocols can be modified with this option.
require_host - if set as false isURL will not check if host is present in the URL.
require_port - if set as true isURL will check if port is present in the URL.
allow_protocol_relative_urls - if set as true protocol relative URLs will be allowed.
allow_fragments - if set as false isURL will return false if fragments are present.
allow_query_components - if set as false isURL will return false if query components are present.
validate_length - if set as false isURL will skip string length validation (2083 characters is IE max URL length). +**isUUID(str [, version])** | check if the string is a UUID (version 1, 2, 3, 4 or 5). +**isVariableWidth(str)** | check if the string contains a mixture of full and half-width chars. +**isVAT(str, countryCode)** | checks that the string is a [valid VAT number](https://en.wikipedia.org/wiki/VAT_identification_number) if validation is available for the given country code matching [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).

Available country codes: `[ 'GB', 'IT','NL' ]`. +**isWhitelisted(str, chars)** | checks characters if they appear in the whitelist. +**matches(str, pattern [, modifiers])** | check if string matches the pattern.

Either `matches('foo', /foo/i)` or `matches('foo', 'foo', 'i')`. + +## Sanitizers + +Here is a list of the sanitizers currently available. + +Sanitizer | Description +-------------------------------------- | ------------------------------- +**blacklist(input, chars)** | remove characters that appear in the blacklist. The characters are used in a RegExp and so you will need to escape some chars, e.g. `blacklist(input, '\\[\\]')`. +**escape(input)** | replace `<`, `>`, `&`, `'`, `"` and `/` with HTML entities. +**ltrim(input [, chars])** | trim characters from the left-side of the input. +**normalizeEmail(email [, options])** | canonicalizes an email address. (This doesn't validate that the input is an email, if you want to validate the email use isEmail beforehand)

`options` is an object with the following keys and default values:

  • *all_lowercase: true* - Transforms the local part (before the @ symbol) of all email addresses to lowercase. Please note that this may violate RFC 5321, which gives providers the possibility to treat the local part of email addresses in a case sensitive way (although in practice most - yet not all - providers don't). The domain part of the email address is always lowercased, as it's case insensitive per RFC 1035.
  • *gmail_lowercase: true* - GMail addresses are known to be case-insensitive, so this switch allows lowercasing them even when *all_lowercase* is set to false. Please note that when *all_lowercase* is true, GMail addresses are lowercased regardless of the value of this setting.
  • *gmail_remove_dots: true*: Removes dots from the local part of the email address, as GMail ignores them (e.g. "john.doe" and "johndoe" are considered equal).
  • *gmail_remove_subaddress: true*: Normalizes addresses by removing "sub-addresses", which is the part following a "+" sign (e.g. "foo+bar@gmail.com" becomes "foo@gmail.com").
  • *gmail_convert_googlemaildotcom: true*: Converts addresses with domain @googlemail.com to @gmail.com, as they're equivalent.
  • *outlookdotcom_lowercase: true* - Outlook.com addresses (including Windows Live and Hotmail) are known to be case-insensitive, so this switch allows lowercasing them even when *all_lowercase* is set to false. Please note that when *all_lowercase* is true, Outlook.com addresses are lowercased regardless of the value of this setting.
  • *outlookdotcom_remove_subaddress: true*: Normalizes addresses by removing "sub-addresses", which is the part following a "+" sign (e.g. "foo+bar@outlook.com" becomes "foo@outlook.com").
  • *yahoo_lowercase: true* - Yahoo Mail addresses are known to be case-insensitive, so this switch allows lowercasing them even when *all_lowercase* is set to false. Please note that when *all_lowercase* is true, Yahoo Mail addresses are lowercased regardless of the value of this setting.
  • *yahoo_remove_subaddress: true*: Normalizes addresses by removing "sub-addresses", which is the part following a "-" sign (e.g. "foo-bar@yahoo.com" becomes "foo@yahoo.com").
  • *icloud_lowercase: true* - iCloud addresses (including MobileMe) are known to be case-insensitive, so this switch allows lowercasing them even when *all_lowercase* is set to false. Please note that when *all_lowercase* is true, iCloud addresses are lowercased regardless of the value of this setting.
  • *icloud_remove_subaddress: true*: Normalizes addresses by removing "sub-addresses", which is the part following a "+" sign (e.g. "foo+bar@icloud.com" becomes "foo@icloud.com").
+**rtrim(input [, chars])** | trim characters from the right-side of the input. +**stripLow(input [, keep_new_lines])** | remove characters with a numerical value < 32 and 127, mostly control characters. If `keep_new_lines` is `true`, newline characters are preserved (`\n` and `\r`, hex `0xA` and `0xD`). Unicode-safe in JavaScript. +**toBoolean(input [, strict])** | convert the input string to a boolean. Everything except for `'0'`, `'false'` and `''` returns `true`. In strict mode only `'1'` and `'true'` return `true`. +**toDate(input)** | convert the input string to a date, or `null` if the input is not a date. +**toFloat(input)** | convert the input string to a float, or `NaN` if the input is not a float. +**toInt(input [, radix])** | convert the input string to an integer, or `NaN` if the input is not an integer. +**trim(input [, chars])** | trim characters (whitespace by default) from both sides of the input. +**unescape(input)** | replaces HTML encoded entities with `<`, `>`, `&`, `'`, `"` and `/`. +**whitelist(input, chars)** | remove characters that do not appear in the whitelist. The characters are used in a RegExp and so you will need to escape some chars, e.g. `whitelist(input, '\\[\\]')`. + +### XSS Sanitization + +XSS sanitization was removed from the library in [2d5d6999](https://github.com/validatorjs/validator.js/commit/2d5d6999541add350fb396ef02dc42ca3215049e). + +For an alternative, have a look at Yahoo's [xss-filters library](https://github.com/yahoo/xss-filters) or at [DOMPurify](https://github.com/cure53/DOMPurify). + +## Contributing + +In general, we follow the "fork-and-pull" Git workflow. + +1. Fork the repo on GitHub +2. Clone the project to your own machine +3. Work on your fork + 1. Make your changes and additions + - Most of your changes should be focused on `src/` and `test/` folders and/or `README.md`. + - Files such as `validator.js`, `validator.min.js` and files in `lib/` folder are autogenerated when running tests (`npm test`) and need not to be changed **manually**. + 2. Change or add tests if needed + 3. Run tests and make sure they pass + 4. Add changes to README.md if needed +4. Commit changes to your own branch +5. **Make sure** you merge the latest from "upstream" and resolve conflicts if there is any +6. Repeat step 3(3) above +7. Push your work back up to your fork +8. Submit a Pull request so that we can review your changes + +## Tests + +Tests are using mocha, to run the tests use: + +```sh +$ npm test +``` + +## Maintainers + +- [chriso](https://github.com/chriso) - **Chris O'Hara** (author) +- [profnandaa](https://github.com/profnandaa) - **Anthony Nandaa** + +## Reading + +Remember, validating can be troublesome sometimes. See [A list of articles about programming assumptions commonly made that aren't true](https://github.com/jameslk/awesome-falsehoods). + +## License (MIT) + +``` +Copyright (c) 2018 Chris O'Hara + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +``` + +[downloads-image]: http://img.shields.io/npm/dm/validator.svg + +[npm-url]: https://npmjs.org/package/validator +[npm-image]: http://img.shields.io/npm/v/validator.svg + +[codecov-url]: https://codecov.io/gh/validatorjs/validator.js +[codecov-image]: https://codecov.io/gh/validatorjs/validator.js/branch/master/graph/badge.svg + +[ci-url]: https://github.com/validatorjs/validator.js/actions?query=workflow%3ACI +[ci-image]: https://github.com/validatorjs/validator.js/workflows/CI/badge.svg?branch=master + +[amd]: http://requirejs.org/docs/whyamd.html +[bower]: http://bower.io/ + +[mongoid]: http://docs.mongodb.org/manual/reference/object-id/ +[ISIN]: https://en.wikipedia.org/wiki/International_Securities_Identification_Number diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/index.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/index.js new file mode 100644 index 00000000..ed4eb790 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/index.js @@ -0,0 +1,198 @@ +import toDate from './lib/toDate'; +import toFloat from './lib/toFloat'; +import toInt from './lib/toInt'; +import toBoolean from './lib/toBoolean'; +import equals from './lib/equals'; +import contains from './lib/contains'; +import matches from './lib/matches'; +import isEmail from './lib/isEmail'; +import isURL from './lib/isURL'; +import isMACAddress from './lib/isMACAddress'; +import isIP from './lib/isIP'; +import isIPRange from './lib/isIPRange'; +import isFQDN from './lib/isFQDN'; +import isDate from './lib/isDate'; +import isBoolean from './lib/isBoolean'; +import isLocale from './lib/isLocale'; +import isAlpha, { locales as isAlphaLocales } from './lib/isAlpha'; +import isAlphanumeric, { locales as isAlphanumericLocales } from './lib/isAlphanumeric'; +import isNumeric from './lib/isNumeric'; +import isPassportNumber from './lib/isPassportNumber'; +import isPort from './lib/isPort'; +import isLowercase from './lib/isLowercase'; +import isUppercase from './lib/isUppercase'; +import isIMEI from './lib/isIMEI'; +import isAscii from './lib/isAscii'; +import isFullWidth from './lib/isFullWidth'; +import isHalfWidth from './lib/isHalfWidth'; +import isVariableWidth from './lib/isVariableWidth'; +import isMultibyte from './lib/isMultibyte'; +import isSemVer from './lib/isSemVer'; +import isSurrogatePair from './lib/isSurrogatePair'; +import isInt from './lib/isInt'; +import isFloat, { locales as isFloatLocales } from './lib/isFloat'; +import isDecimal from './lib/isDecimal'; +import isHexadecimal from './lib/isHexadecimal'; +import isOctal from './lib/isOctal'; +import isDivisibleBy from './lib/isDivisibleBy'; +import isHexColor from './lib/isHexColor'; +import isRgbColor from './lib/isRgbColor'; +import isHSL from './lib/isHSL'; +import isISRC from './lib/isISRC'; +import isIBAN, { locales as ibanLocales } from './lib/isIBAN'; +import isBIC from './lib/isBIC'; +import isMD5 from './lib/isMD5'; +import isHash from './lib/isHash'; +import isJWT from './lib/isJWT'; +import isJSON from './lib/isJSON'; +import isEmpty from './lib/isEmpty'; +import isLength from './lib/isLength'; +import isByteLength from './lib/isByteLength'; +import isUUID from './lib/isUUID'; +import isMongoId from './lib/isMongoId'; +import isAfter from './lib/isAfter'; +import isBefore from './lib/isBefore'; +import isIn from './lib/isIn'; +import isCreditCard from './lib/isCreditCard'; +import isIdentityCard from './lib/isIdentityCard'; +import isEAN from './lib/isEAN'; +import isISIN from './lib/isISIN'; +import isISBN from './lib/isISBN'; +import isISSN from './lib/isISSN'; +import isTaxID from './lib/isTaxID'; +import isMobilePhone, { locales as isMobilePhoneLocales } from './lib/isMobilePhone'; +import isEthereumAddress from './lib/isEthereumAddress'; +import isCurrency from './lib/isCurrency'; +import isBtcAddress from './lib/isBtcAddress'; +import isISO8601 from './lib/isISO8601'; +import isRFC3339 from './lib/isRFC3339'; +import isISO31661Alpha2 from './lib/isISO31661Alpha2'; +import isISO31661Alpha3 from './lib/isISO31661Alpha3'; +import isISO4217 from './lib/isISO4217'; +import isBase32 from './lib/isBase32'; +import isBase58 from './lib/isBase58'; +import isBase64 from './lib/isBase64'; +import isDataURI from './lib/isDataURI'; +import isMagnetURI from './lib/isMagnetURI'; +import isMimeType from './lib/isMimeType'; +import isLatLong from './lib/isLatLong'; +import isPostalCode, { locales as isPostalCodeLocales } from './lib/isPostalCode'; +import ltrim from './lib/ltrim'; +import rtrim from './lib/rtrim'; +import trim from './lib/trim'; +import escape from './lib/escape'; +import unescape from './lib/unescape'; +import stripLow from './lib/stripLow'; +import whitelist from './lib/whitelist'; +import blacklist from './lib/blacklist'; +import isWhitelisted from './lib/isWhitelisted'; +import normalizeEmail from './lib/normalizeEmail'; +import isSlug from './lib/isSlug'; +import isLicensePlate from './lib/isLicensePlate'; +import isStrongPassword from './lib/isStrongPassword'; +import isVAT from './lib/isVAT'; +var version = '13.7.0'; +var validator = { + version: version, + toDate: toDate, + toFloat: toFloat, + toInt: toInt, + toBoolean: toBoolean, + equals: equals, + contains: contains, + matches: matches, + isEmail: isEmail, + isURL: isURL, + isMACAddress: isMACAddress, + isIP: isIP, + isIPRange: isIPRange, + isFQDN: isFQDN, + isBoolean: isBoolean, + isIBAN: isIBAN, + isBIC: isBIC, + isAlpha: isAlpha, + isAlphaLocales: isAlphaLocales, + isAlphanumeric: isAlphanumeric, + isAlphanumericLocales: isAlphanumericLocales, + isNumeric: isNumeric, + isPassportNumber: isPassportNumber, + isPort: isPort, + isLowercase: isLowercase, + isUppercase: isUppercase, + isAscii: isAscii, + isFullWidth: isFullWidth, + isHalfWidth: isHalfWidth, + isVariableWidth: isVariableWidth, + isMultibyte: isMultibyte, + isSemVer: isSemVer, + isSurrogatePair: isSurrogatePair, + isInt: isInt, + isIMEI: isIMEI, + isFloat: isFloat, + isFloatLocales: isFloatLocales, + isDecimal: isDecimal, + isHexadecimal: isHexadecimal, + isOctal: isOctal, + isDivisibleBy: isDivisibleBy, + isHexColor: isHexColor, + isRgbColor: isRgbColor, + isHSL: isHSL, + isISRC: isISRC, + isMD5: isMD5, + isHash: isHash, + isJWT: isJWT, + isJSON: isJSON, + isEmpty: isEmpty, + isLength: isLength, + isLocale: isLocale, + isByteLength: isByteLength, + isUUID: isUUID, + isMongoId: isMongoId, + isAfter: isAfter, + isBefore: isBefore, + isIn: isIn, + isCreditCard: isCreditCard, + isIdentityCard: isIdentityCard, + isEAN: isEAN, + isISIN: isISIN, + isISBN: isISBN, + isISSN: isISSN, + isMobilePhone: isMobilePhone, + isMobilePhoneLocales: isMobilePhoneLocales, + isPostalCode: isPostalCode, + isPostalCodeLocales: isPostalCodeLocales, + isEthereumAddress: isEthereumAddress, + isCurrency: isCurrency, + isBtcAddress: isBtcAddress, + isISO8601: isISO8601, + isRFC3339: isRFC3339, + isISO31661Alpha2: isISO31661Alpha2, + isISO31661Alpha3: isISO31661Alpha3, + isISO4217: isISO4217, + isBase32: isBase32, + isBase58: isBase58, + isBase64: isBase64, + isDataURI: isDataURI, + isMagnetURI: isMagnetURI, + isMimeType: isMimeType, + isLatLong: isLatLong, + ltrim: ltrim, + rtrim: rtrim, + trim: trim, + escape: escape, + unescape: unescape, + stripLow: stripLow, + whitelist: whitelist, + blacklist: blacklist, + isWhitelisted: isWhitelisted, + normalizeEmail: normalizeEmail, + toString: toString, + isSlug: isSlug, + isStrongPassword: isStrongPassword, + isTaxID: isTaxID, + isDate: isDate, + isLicensePlate: isLicensePlate, + isVAT: isVAT, + ibanLocales: ibanLocales +}; +export default validator; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/alpha.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/alpha.js new file mode 100644 index 00000000..a1a9a76e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/alpha.js @@ -0,0 +1,123 @@ +export var alpha = { + 'en-US': /^[A-Z]+$/i, + 'az-AZ': /^[A-VXYZÇƏĞİıÖŞÜ]+$/i, + 'bg-BG': /^[А-Я]+$/i, + 'cs-CZ': /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i, + 'da-DK': /^[A-ZÆØÅ]+$/i, + 'de-DE': /^[A-ZÄÖÜß]+$/i, + 'el-GR': /^[Α-ώ]+$/i, + 'es-ES': /^[A-ZÁÉÍÑÓÚÜ]+$/i, + 'fa-IR': /^[ابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهی]+$/i, + 'fi-FI': /^[A-ZÅÄÖ]+$/i, + 'fr-FR': /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i, + 'it-IT': /^[A-ZÀÉÈÌÎÓÒÙ]+$/i, + 'nb-NO': /^[A-ZÆØÅ]+$/i, + 'nl-NL': /^[A-ZÁÉËÏÓÖÜÚ]+$/i, + 'nn-NO': /^[A-ZÆØÅ]+$/i, + 'hu-HU': /^[A-ZÁÉÍÓÖŐÚÜŰ]+$/i, + 'pl-PL': /^[A-ZĄĆĘŚŁŃÓŻŹ]+$/i, + 'pt-PT': /^[A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i, + 'ru-RU': /^[А-ЯЁ]+$/i, + 'sl-SI': /^[A-ZČĆĐŠŽ]+$/i, + 'sk-SK': /^[A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i, + 'sr-RS@latin': /^[A-ZČĆŽŠĐ]+$/i, + 'sr-RS': /^[А-ЯЂЈЉЊЋЏ]+$/i, + 'sv-SE': /^[A-ZÅÄÖ]+$/i, + 'th-TH': /^[ก-๐\s]+$/i, + 'tr-TR': /^[A-ZÇĞİıÖŞÜ]+$/i, + 'uk-UA': /^[А-ЩЬЮЯЄIЇҐі]+$/i, + 'vi-VN': /^[A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i, + 'ku-IQ': /^[ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i, + ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/, + he: /^[א-ת]+$/, + fa: /^['آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی']+$/i, + 'hi-IN': /^[\u0900-\u0961]+[\u0972-\u097F]*$/i +}; +export var alphanumeric = { + 'en-US': /^[0-9A-Z]+$/i, + 'az-AZ': /^[0-9A-VXYZÇƏĞİıÖŞÜ]+$/i, + 'bg-BG': /^[0-9А-Я]+$/i, + 'cs-CZ': /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i, + 'da-DK': /^[0-9A-ZÆØÅ]+$/i, + 'de-DE': /^[0-9A-ZÄÖÜß]+$/i, + 'el-GR': /^[0-9Α-ω]+$/i, + 'es-ES': /^[0-9A-ZÁÉÍÑÓÚÜ]+$/i, + 'fi-FI': /^[0-9A-ZÅÄÖ]+$/i, + 'fr-FR': /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i, + 'it-IT': /^[0-9A-ZÀÉÈÌÎÓÒÙ]+$/i, + 'hu-HU': /^[0-9A-ZÁÉÍÓÖŐÚÜŰ]+$/i, + 'nb-NO': /^[0-9A-ZÆØÅ]+$/i, + 'nl-NL': /^[0-9A-ZÁÉËÏÓÖÜÚ]+$/i, + 'nn-NO': /^[0-9A-ZÆØÅ]+$/i, + 'pl-PL': /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]+$/i, + 'pt-PT': /^[0-9A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i, + 'ru-RU': /^[0-9А-ЯЁ]+$/i, + 'sl-SI': /^[0-9A-ZČĆĐŠŽ]+$/i, + 'sk-SK': /^[0-9A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i, + 'sr-RS@latin': /^[0-9A-ZČĆŽŠĐ]+$/i, + 'sr-RS': /^[0-9А-ЯЂЈЉЊЋЏ]+$/i, + 'sv-SE': /^[0-9A-ZÅÄÖ]+$/i, + 'th-TH': /^[ก-๙\s]+$/i, + 'tr-TR': /^[0-9A-ZÇĞİıÖŞÜ]+$/i, + 'uk-UA': /^[0-9А-ЩЬЮЯЄIЇҐі]+$/i, + 'ku-IQ': /^[٠١٢٣٤٥٦٧٨٩0-9ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i, + 'vi-VN': /^[0-9A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i, + ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/, + he: /^[0-9א-ת]+$/, + fa: /^['0-9آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی۱۲۳۴۵۶۷۸۹۰']+$/i, + 'hi-IN': /^[\u0900-\u0963]+[\u0966-\u097F]*$/i +}; +export var decimal = { + 'en-US': '.', + ar: '٫' +}; +export var englishLocales = ['AU', 'GB', 'HK', 'IN', 'NZ', 'ZA', 'ZM']; + +for (var locale, i = 0; i < englishLocales.length; i++) { + locale = "en-".concat(englishLocales[i]); + alpha[locale] = alpha['en-US']; + alphanumeric[locale] = alphanumeric['en-US']; + decimal[locale] = decimal['en-US']; +} // Source: http://www.localeplanet.com/java/ + + +export var arabicLocales = ['AE', 'BH', 'DZ', 'EG', 'IQ', 'JO', 'KW', 'LB', 'LY', 'MA', 'QM', 'QA', 'SA', 'SD', 'SY', 'TN', 'YE']; + +for (var _locale, _i = 0; _i < arabicLocales.length; _i++) { + _locale = "ar-".concat(arabicLocales[_i]); + alpha[_locale] = alpha.ar; + alphanumeric[_locale] = alphanumeric.ar; + decimal[_locale] = decimal.ar; +} + +export var farsiLocales = ['IR', 'AF']; + +for (var _locale2, _i2 = 0; _i2 < farsiLocales.length; _i2++) { + _locale2 = "fa-".concat(farsiLocales[_i2]); + alphanumeric[_locale2] = alphanumeric.fa; + decimal[_locale2] = decimal.ar; +} // Source: https://en.wikipedia.org/wiki/Decimal_mark + + +export var dotDecimal = ['ar-EG', 'ar-LB', 'ar-LY']; +export var commaDecimal = ['bg-BG', 'cs-CZ', 'da-DK', 'de-DE', 'el-GR', 'en-ZM', 'es-ES', 'fr-CA', 'fr-FR', 'id-ID', 'it-IT', 'ku-IQ', 'hi-IN', 'hu-HU', 'nb-NO', 'nn-NO', 'nl-NL', 'pl-PL', 'pt-PT', 'ru-RU', 'sl-SI', 'sr-RS@latin', 'sr-RS', 'sv-SE', 'tr-TR', 'uk-UA', 'vi-VN']; + +for (var _i3 = 0; _i3 < dotDecimal.length; _i3++) { + decimal[dotDecimal[_i3]] = decimal['en-US']; +} + +for (var _i4 = 0; _i4 < commaDecimal.length; _i4++) { + decimal[commaDecimal[_i4]] = ','; +} + +alpha['fr-CA'] = alpha['fr-FR']; +alphanumeric['fr-CA'] = alphanumeric['fr-FR']; +alpha['pt-BR'] = alpha['pt-PT']; +alphanumeric['pt-BR'] = alphanumeric['pt-PT']; +decimal['pt-BR'] = decimal['pt-PT']; // see #862 + +alpha['pl-Pl'] = alpha['pl-PL']; +alphanumeric['pl-Pl'] = alphanumeric['pl-PL']; +decimal['pl-Pl'] = decimal['pl-PL']; // see #1455 + +alpha['fa-AF'] = alpha.fa; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/blacklist.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/blacklist.js new file mode 100644 index 00000000..77c0e5cf --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/blacklist.js @@ -0,0 +1,5 @@ +import assertString from './util/assertString'; +export default function blacklist(str, chars) { + assertString(str); + return str.replace(new RegExp("[".concat(chars, "]+"), 'g'), ''); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/contains.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/contains.js new file mode 100644 index 00000000..bf654b8f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/contains.js @@ -0,0 +1,17 @@ +import assertString from './util/assertString'; +import toString from './util/toString'; +import merge from './util/merge'; +var defaulContainsOptions = { + ignoreCase: false, + minOccurrences: 1 +}; +export default function contains(str, elem, options) { + assertString(str); + options = merge(options, defaulContainsOptions); + + if (options.ignoreCase) { + return str.toLowerCase().split(toString(elem).toLowerCase()).length > options.minOccurrences; + } + + return str.split(toString(elem)).length > options.minOccurrences; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/equals.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/equals.js new file mode 100644 index 00000000..87a9ded0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/equals.js @@ -0,0 +1,5 @@ +import assertString from './util/assertString'; +export default function equals(str, comparison) { + assertString(str); + return str === comparison; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/escape.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/escape.js new file mode 100644 index 00000000..e9bb6de3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/escape.js @@ -0,0 +1,5 @@ +import assertString from './util/assertString'; +export default function escape(str) { + assertString(str); + return str.replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''').replace(//g, '>').replace(/\//g, '/').replace(/\\/g, '\').replace(/`/g, '`'); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isAfter.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isAfter.js new file mode 100644 index 00000000..b99cfa42 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isAfter.js @@ -0,0 +1,9 @@ +import assertString from './util/assertString'; +import toDate from './toDate'; +export default function isAfter(str) { + var date = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : String(new Date()); + assertString(str); + var comparison = toDate(date); + var original = toDate(str); + return !!(original && comparison && original > comparison); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isAlpha.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isAlpha.js new file mode 100644 index 00000000..5214b74d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isAlpha.js @@ -0,0 +1,26 @@ +import assertString from './util/assertString'; +import { alpha } from './alpha'; +export default function isAlpha(_str) { + var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US'; + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + assertString(_str); + var str = _str; + var ignore = options.ignore; + + if (ignore) { + if (ignore instanceof RegExp) { + str = str.replace(ignore, ''); + } else if (typeof ignore === 'string') { + str = str.replace(new RegExp("[".concat(ignore.replace(/[-[\]{}()*+?.,\\^$|#\\s]/g, '\\$&'), "]"), 'g'), ''); // escape regex for ignore + } else { + throw new Error('ignore should be instance of a String or RegExp'); + } + } + + if (locale in alpha) { + return alpha[locale].test(str); + } + + throw new Error("Invalid locale '".concat(locale, "'")); +} +export var locales = Object.keys(alpha); \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isAlphanumeric.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isAlphanumeric.js new file mode 100644 index 00000000..b0556e5d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isAlphanumeric.js @@ -0,0 +1,26 @@ +import assertString from './util/assertString'; +import { alphanumeric } from './alpha'; +export default function isAlphanumeric(_str) { + var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US'; + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + assertString(_str); + var str = _str; + var ignore = options.ignore; + + if (ignore) { + if (ignore instanceof RegExp) { + str = str.replace(ignore, ''); + } else if (typeof ignore === 'string') { + str = str.replace(new RegExp("[".concat(ignore.replace(/[-[\]{}()*+?.,\\^$|#\\s]/g, '\\$&'), "]"), 'g'), ''); // escape regex for ignore + } else { + throw new Error('ignore should be instance of a String or RegExp'); + } + } + + if (locale in alphanumeric) { + return alphanumeric[locale].test(str); + } + + throw new Error("Invalid locale '".concat(locale, "'")); +} +export var locales = Object.keys(alphanumeric); \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isAscii.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isAscii.js new file mode 100644 index 00000000..e322121f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isAscii.js @@ -0,0 +1,10 @@ +import assertString from './util/assertString'; +/* eslint-disable no-control-regex */ + +var ascii = /^[\x00-\x7F]+$/; +/* eslint-enable no-control-regex */ + +export default function isAscii(str) { + assertString(str); + return ascii.test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBIC.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBIC.js new file mode 100644 index 00000000..8434a71e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBIC.js @@ -0,0 +1,14 @@ +import assertString from './util/assertString'; +import { CountryCodes } from './isISO31661Alpha2'; // https://en.wikipedia.org/wiki/ISO_9362 + +var isBICReg = /^[A-Za-z]{6}[A-Za-z0-9]{2}([A-Za-z0-9]{3})?$/; +export default function isBIC(str) { + assertString(str); // toUpperCase() should be removed when a new major version goes out that changes + // the regex to [A-Z] (per the spec). + + if (!CountryCodes.has(str.slice(4, 6).toUpperCase())) { + return false; + } + + return isBICReg.test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBase32.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBase32.js new file mode 100644 index 00000000..d018f804 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBase32.js @@ -0,0 +1,12 @@ +import assertString from './util/assertString'; +var base32 = /^[A-Z2-7]+=*$/; +export default function isBase32(str) { + assertString(str); + var len = str.length; + + if (len % 8 === 0 && base32.test(str)) { + return true; + } + + return false; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBase58.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBase58.js new file mode 100644 index 00000000..863bbe9a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBase58.js @@ -0,0 +1,12 @@ +import assertString from './util/assertString'; // Accepted chars - 123456789ABCDEFGH JKLMN PQRSTUVWXYZabcdefghijk mnopqrstuvwxyz + +var base58Reg = /^[A-HJ-NP-Za-km-z1-9]*$/; +export default function isBase58(str) { + assertString(str); + + if (base58Reg.test(str)) { + return true; + } + + return false; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBase64.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBase64.js new file mode 100644 index 00000000..04467fc8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBase64.js @@ -0,0 +1,23 @@ +import assertString from './util/assertString'; +import merge from './util/merge'; +var notBase64 = /[^A-Z0-9+\/=]/i; +var urlSafeBase64 = /^[A-Z0-9_\-]*$/i; +var defaultBase64Options = { + urlSafe: false +}; +export default function isBase64(str, options) { + assertString(str); + options = merge(options, defaultBase64Options); + var len = str.length; + + if (options.urlSafe) { + return urlSafeBase64.test(str); + } + + if (len % 4 !== 0 || notBase64.test(str)) { + return false; + } + + var firstPaddingChar = str.indexOf('='); + return firstPaddingChar === -1 || firstPaddingChar === len - 1 || firstPaddingChar === len - 2 && str[len - 1] === '='; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBefore.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBefore.js new file mode 100644 index 00000000..794dbaba --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBefore.js @@ -0,0 +1,9 @@ +import assertString from './util/assertString'; +import toDate from './toDate'; +export default function isBefore(str) { + var date = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : String(new Date()); + assertString(str); + var comparison = toDate(date); + var original = toDate(str); + return !!(original && comparison && original < comparison); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBoolean.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBoolean.js new file mode 100644 index 00000000..c0be07ab --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBoolean.js @@ -0,0 +1,16 @@ +import assertString from './util/assertString'; +var defaultOptions = { + loose: false +}; +var strictBooleans = ['true', 'false', '1', '0']; +var looseBooleans = [].concat(strictBooleans, ['yes', 'no']); +export default function isBoolean(str) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultOptions; + assertString(str); + + if (options.loose) { + return looseBooleans.includes(str.toLowerCase()); + } + + return strictBooleans.includes(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBtcAddress.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBtcAddress.js new file mode 100644 index 00000000..e29c912f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isBtcAddress.js @@ -0,0 +1,13 @@ +import assertString from './util/assertString'; // supports Bech32 addresses + +var bech32 = /^(bc1)[a-z0-9]{25,39}$/; +var base58 = /^(1|3)[A-HJ-NP-Za-km-z1-9]{25,39}$/; +export default function isBtcAddress(str) { + assertString(str); // check for bech32 + + if (str.startsWith('bc1')) { + return bech32.test(str); + } + + return base58.test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isByteLength.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isByteLength.js new file mode 100644 index 00000000..eee2543a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isByteLength.js @@ -0,0 +1,22 @@ +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +import assertString from './util/assertString'; +/* eslint-disable prefer-rest-params */ + +export default function isByteLength(str, options) { + assertString(str); + var min; + var max; + + if (_typeof(options) === 'object') { + min = options.min || 0; + max = options.max; + } else { + // backwards compatibility: isByteLength(str, min [, max]) + min = arguments[1]; + max = arguments[2]; + } + + var len = encodeURI(str).split(/%..|./).length - 1; + return len >= min && (typeof max === 'undefined' || len <= max); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isCreditCard.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isCreditCard.js new file mode 100644 index 00000000..f1beb2d0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isCreditCard.js @@ -0,0 +1,40 @@ +import assertString from './util/assertString'; +/* eslint-disable max-len */ + +var creditCard = /^(?:4[0-9]{12}(?:[0-9]{3,6})?|5[1-5][0-9]{14}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12,15}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11}|6[27][0-9]{14}|^(81[0-9]{14,17}))$/; +/* eslint-enable max-len */ + +export default function isCreditCard(str) { + assertString(str); + var sanitized = str.replace(/[- ]+/g, ''); + + if (!creditCard.test(sanitized)) { + return false; + } + + var sum = 0; + var digit; + var tmpNum; + var shouldDouble; + + for (var i = sanitized.length - 1; i >= 0; i--) { + digit = sanitized.substring(i, i + 1); + tmpNum = parseInt(digit, 10); + + if (shouldDouble) { + tmpNum *= 2; + + if (tmpNum >= 10) { + sum += tmpNum % 10 + 1; + } else { + sum += tmpNum; + } + } else { + sum += tmpNum; + } + + shouldDouble = !shouldDouble; + } + + return !!(sum % 10 === 0 ? sanitized : false); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isCurrency.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isCurrency.js new file mode 100755 index 00000000..519ee194 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isCurrency.js @@ -0,0 +1,77 @@ +import merge from './util/merge'; +import assertString from './util/assertString'; + +function currencyRegex(options) { + var decimal_digits = "\\d{".concat(options.digits_after_decimal[0], "}"); + options.digits_after_decimal.forEach(function (digit, index) { + if (index !== 0) decimal_digits = "".concat(decimal_digits, "|\\d{").concat(digit, "}"); + }); + var symbol = "(".concat(options.symbol.replace(/\W/, function (m) { + return "\\".concat(m); + }), ")").concat(options.require_symbol ? '' : '?'), + negative = '-?', + whole_dollar_amount_without_sep = '[1-9]\\d*', + whole_dollar_amount_with_sep = "[1-9]\\d{0,2}(\\".concat(options.thousands_separator, "\\d{3})*"), + valid_whole_dollar_amounts = ['0', whole_dollar_amount_without_sep, whole_dollar_amount_with_sep], + whole_dollar_amount = "(".concat(valid_whole_dollar_amounts.join('|'), ")?"), + decimal_amount = "(\\".concat(options.decimal_separator, "(").concat(decimal_digits, "))").concat(options.require_decimal ? '' : '?'); + var pattern = whole_dollar_amount + (options.allow_decimal || options.require_decimal ? decimal_amount : ''); // default is negative sign before symbol, but there are two other options (besides parens) + + if (options.allow_negatives && !options.parens_for_negatives) { + if (options.negative_sign_after_digits) { + pattern += negative; + } else if (options.negative_sign_before_digits) { + pattern = negative + pattern; + } + } // South African Rand, for example, uses R 123 (space) and R-123 (no space) + + + if (options.allow_negative_sign_placeholder) { + pattern = "( (?!\\-))?".concat(pattern); + } else if (options.allow_space_after_symbol) { + pattern = " ?".concat(pattern); + } else if (options.allow_space_after_digits) { + pattern += '( (?!$))?'; + } + + if (options.symbol_after_digits) { + pattern += symbol; + } else { + pattern = symbol + pattern; + } + + if (options.allow_negatives) { + if (options.parens_for_negatives) { + pattern = "(\\(".concat(pattern, "\\)|").concat(pattern, ")"); + } else if (!(options.negative_sign_before_digits || options.negative_sign_after_digits)) { + pattern = negative + pattern; + } + } // ensure there's a dollar and/or decimal amount, and that + // it doesn't start with a space or a negative sign followed by a space + + + return new RegExp("^(?!-? )(?=.*\\d)".concat(pattern, "$")); +} + +var default_currency_options = { + symbol: '$', + require_symbol: false, + allow_space_after_symbol: false, + symbol_after_digits: false, + allow_negatives: true, + parens_for_negatives: false, + negative_sign_before_digits: false, + negative_sign_after_digits: false, + allow_negative_sign_placeholder: false, + thousands_separator: ',', + decimal_separator: '.', + allow_decimal: true, + require_decimal: false, + digits_after_decimal: [2], + allow_space_after_digits: false +}; +export default function isCurrency(str, options) { + assertString(str); + options = merge(options, default_currency_options); + return currencyRegex(options).test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isDataURI.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isDataURI.js new file mode 100644 index 00000000..a32d05ee --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isDataURI.js @@ -0,0 +1,39 @@ +import assertString from './util/assertString'; +var validMediaType = /^[a-z]+\/[a-z0-9\-\+]+$/i; +var validAttribute = /^[a-z\-]+=[a-z0-9\-]+$/i; +var validData = /^[a-z0-9!\$&'\(\)\*\+,;=\-\._~:@\/\?%\s]*$/i; +export default function isDataURI(str) { + assertString(str); + var data = str.split(','); + + if (data.length < 2) { + return false; + } + + var attributes = data.shift().trim().split(';'); + var schemeAndMediaType = attributes.shift(); + + if (schemeAndMediaType.substr(0, 5) !== 'data:') { + return false; + } + + var mediaType = schemeAndMediaType.substr(5); + + if (mediaType !== '' && !validMediaType.test(mediaType)) { + return false; + } + + for (var i = 0; i < attributes.length; i++) { + if (!(i === attributes.length - 1 && attributes[i].toLowerCase() === 'base64') && !validAttribute.test(attributes[i])) { + return false; + } + } + + for (var _i = 0; _i < data.length; _i++) { + if (!validData.test(data[_i])) { + return false; + } + } + + return true; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isDate.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isDate.js new file mode 100644 index 00000000..c4d0d08c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isDate.js @@ -0,0 +1,86 @@ +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +import merge from './util/merge'; +var default_date_options = { + format: 'YYYY/MM/DD', + delimiters: ['/', '-'], + strictMode: false +}; + +function isValidFormat(format) { + return /(^(y{4}|y{2})[.\/-](m{1,2})[.\/-](d{1,2})$)|(^(m{1,2})[.\/-](d{1,2})[.\/-]((y{4}|y{2})$))|(^(d{1,2})[.\/-](m{1,2})[.\/-]((y{4}|y{2})$))/gi.test(format); +} + +function zip(date, format) { + var zippedArr = [], + len = Math.min(date.length, format.length); + + for (var i = 0; i < len; i++) { + zippedArr.push([date[i], format[i]]); + } + + return zippedArr; +} + +export default function isDate(input, options) { + if (typeof options === 'string') { + // Allow backward compatbility for old format isDate(input [, format]) + options = merge({ + format: options + }, default_date_options); + } else { + options = merge(options, default_date_options); + } + + if (typeof input === 'string' && isValidFormat(options.format)) { + var formatDelimiter = options.delimiters.find(function (delimiter) { + return options.format.indexOf(delimiter) !== -1; + }); + var dateDelimiter = options.strictMode ? formatDelimiter : options.delimiters.find(function (delimiter) { + return input.indexOf(delimiter) !== -1; + }); + var dateAndFormat = zip(input.split(dateDelimiter), options.format.toLowerCase().split(formatDelimiter)); + var dateObj = {}; + + var _iterator = _createForOfIteratorHelper(dateAndFormat), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var _step$value = _slicedToArray(_step.value, 2), + dateWord = _step$value[0], + formatWord = _step$value[1]; + + if (dateWord.length !== formatWord.length) { + return false; + } + + dateObj[formatWord.charAt(0)] = dateWord; + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return new Date("".concat(dateObj.m, "/").concat(dateObj.d, "/").concat(dateObj.y)).getDate() === +dateObj.d; + } + + if (!options.strictMode) { + return Object.prototype.toString.call(input) === '[object Date]' && isFinite(input); + } + + return false; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isDecimal.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isDecimal.js new file mode 100644 index 00000000..597f42c5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isDecimal.js @@ -0,0 +1,26 @@ +import merge from './util/merge'; +import assertString from './util/assertString'; +import includes from './util/includes'; +import { decimal } from './alpha'; + +function decimalRegExp(options) { + var regExp = new RegExp("^[-+]?([0-9]+)?(\\".concat(decimal[options.locale], "[0-9]{").concat(options.decimal_digits, "})").concat(options.force_decimal ? '' : '?', "$")); + return regExp; +} + +var default_decimal_options = { + force_decimal: false, + decimal_digits: '1,', + locale: 'en-US' +}; +var blacklist = ['', '-', '+']; +export default function isDecimal(str, options) { + assertString(str); + options = merge(options, default_decimal_options); + + if (options.locale in decimal) { + return !includes(blacklist, str.replace(/ /g, '')) && decimalRegExp(options).test(str); + } + + throw new Error("Invalid locale '".concat(options.locale, "'")); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isDivisibleBy.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isDivisibleBy.js new file mode 100644 index 00000000..f71d5f4e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isDivisibleBy.js @@ -0,0 +1,6 @@ +import assertString from './util/assertString'; +import toFloat from './toFloat'; +export default function isDivisibleBy(str, num) { + assertString(str); + return toFloat(str) % parseInt(num, 10) === 0; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isEAN.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isEAN.js new file mode 100644 index 00000000..246db932 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isEAN.js @@ -0,0 +1,72 @@ +/** + * The most commonly used EAN standard is + * the thirteen-digit EAN-13, while the + * less commonly used 8-digit EAN-8 barcode was + * introduced for use on small packages. + * Also EAN/UCC-14 is used for Grouping of individual + * trade items above unit level(Intermediate, Carton or Pallet). + * For more info about EAN-14 checkout: https://www.gtin.info/itf-14-barcodes/ + * EAN consists of: + * GS1 prefix, manufacturer code, product code and check digit + * Reference: https://en.wikipedia.org/wiki/International_Article_Number + * Reference: https://www.gtin.info/ + */ +import assertString from './util/assertString'; +/** + * Define EAN Lenghts; 8 for EAN-8; 13 for EAN-13; 14 for EAN-14 + * and Regular Expression for valid EANs (EAN-8, EAN-13, EAN-14), + * with exact numberic matching of 8 or 13 or 14 digits [0-9] + */ + +var LENGTH_EAN_8 = 8; +var LENGTH_EAN_14 = 14; +var validEanRegex = /^(\d{8}|\d{13}|\d{14})$/; +/** + * Get position weight given: + * EAN length and digit index/position + * + * @param {number} length + * @param {number} index + * @return {number} + */ + +function getPositionWeightThroughLengthAndIndex(length, index) { + if (length === LENGTH_EAN_8 || length === LENGTH_EAN_14) { + return index % 2 === 0 ? 3 : 1; + } + + return index % 2 === 0 ? 1 : 3; +} +/** + * Calculate EAN Check Digit + * Reference: https://en.wikipedia.org/wiki/International_Article_Number#Calculation_of_checksum_digit + * + * @param {string} ean + * @return {number} + */ + + +function calculateCheckDigit(ean) { + var checksum = ean.slice(0, -1).split('').map(function (_char, index) { + return Number(_char) * getPositionWeightThroughLengthAndIndex(ean.length, index); + }).reduce(function (acc, partialSum) { + return acc + partialSum; + }, 0); + var remainder = 10 - checksum % 10; + return remainder < 10 ? remainder : 0; +} +/** + * Check if string is valid EAN: + * Matches EAN-8/EAN-13/EAN-14 regex + * Has valid check digit. + * + * @param {string} str + * @return {boolean} + */ + + +export default function isEAN(str) { + assertString(str); + var actualCheckDigit = Number(str.slice(-1)); + return validEanRegex.test(str) && actualCheckDigit === calculateCheckDigit(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isEmail.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isEmail.js new file mode 100644 index 00000000..d44c1ac2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isEmail.js @@ -0,0 +1,180 @@ +import assertString from './util/assertString'; +import merge from './util/merge'; +import isByteLength from './isByteLength'; +import isFQDN from './isFQDN'; +import isIP from './isIP'; +var default_email_options = { + allow_display_name: false, + require_display_name: false, + allow_utf8_local_part: true, + require_tld: true, + blacklisted_chars: '', + ignore_max_length: false, + host_blacklist: [] +}; +/* eslint-disable max-len */ + +/* eslint-disable no-control-regex */ + +var splitNameAddress = /^([^\x00-\x1F\x7F-\x9F\cX]+)]/.test(display_name_without_quotes); + + if (contains_illegal) { + // if contains illegal characters, + // must to be enclosed in double-quotes, otherwise it's not a valid display name + if (display_name_without_quotes === display_name) { + return false; + } // the quotes in display name must start with character symbol \ + + + var all_start_with_back_slash = display_name_without_quotes.split('"').length === display_name_without_quotes.split('\\"').length; + + if (!all_start_with_back_slash) { + return false; + } + } + + return true; +} + +export default function isEmail(str, options) { + assertString(str); + options = merge(options, default_email_options); + + if (options.require_display_name || options.allow_display_name) { + var display_email = str.match(splitNameAddress); + + if (display_email) { + var display_name = display_email[1]; // Remove display name and angle brackets to get email address + // Can be done in the regex but will introduce a ReDOS (See #1597 for more info) + + str = str.replace(display_name, '').replace(/(^<|>$)/g, ''); // sometimes need to trim the last space to get the display name + // because there may be a space between display name and email address + // eg. myname + // the display name is `myname` instead of `myname `, so need to trim the last space + + if (display_name.endsWith(' ')) { + display_name = display_name.substr(0, display_name.length - 1); + } + + if (!validateDisplayName(display_name)) { + return false; + } + } else if (options.require_display_name) { + return false; + } + } + + if (!options.ignore_max_length && str.length > defaultMaxEmailLength) { + return false; + } + + var parts = str.split('@'); + var domain = parts.pop(); + var lower_domain = domain.toLowerCase(); + + if (options.host_blacklist.includes(lower_domain)) { + return false; + } + + var user = parts.join('@'); + + if (options.domain_specific_validation && (lower_domain === 'gmail.com' || lower_domain === 'googlemail.com')) { + /* + Previously we removed dots for gmail addresses before validating. + This was removed because it allows `multiple..dots@gmail.com` + to be reported as valid, but it is not. + Gmail only normalizes single dots, removing them from here is pointless, + should be done in normalizeEmail + */ + user = user.toLowerCase(); // Removing sub-address from username before gmail validation + + var username = user.split('+')[0]; // Dots are not included in gmail length restriction + + if (!isByteLength(username.replace(/\./g, ''), { + min: 6, + max: 30 + })) { + return false; + } + + var _user_parts = username.split('.'); + + for (var i = 0; i < _user_parts.length; i++) { + if (!gmailUserPart.test(_user_parts[i])) { + return false; + } + } + } + + if (options.ignore_max_length === false && (!isByteLength(user, { + max: 64 + }) || !isByteLength(domain, { + max: 254 + }))) { + return false; + } + + if (!isFQDN(domain, { + require_tld: options.require_tld + })) { + if (!options.allow_ip_domain) { + return false; + } + + if (!isIP(domain)) { + if (!domain.startsWith('[') || !domain.endsWith(']')) { + return false; + } + + var noBracketdomain = domain.substr(1, domain.length - 2); + + if (noBracketdomain.length === 0 || !isIP(noBracketdomain)) { + return false; + } + } + } + + if (user[0] === '"') { + user = user.slice(1, user.length - 1); + return options.allow_utf8_local_part ? quotedEmailUserUtf8.test(user) : quotedEmailUser.test(user); + } + + var pattern = options.allow_utf8_local_part ? emailUserUtf8Part : emailUserPart; + var user_parts = user.split('.'); + + for (var _i = 0; _i < user_parts.length; _i++) { + if (!pattern.test(user_parts[_i])) { + return false; + } + } + + if (options.blacklisted_chars) { + if (user.search(new RegExp("[".concat(options.blacklisted_chars, "]+"), 'g')) !== -1) return false; + } + + return true; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isEmpty.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isEmpty.js new file mode 100644 index 00000000..79e29f74 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isEmpty.js @@ -0,0 +1,10 @@ +import assertString from './util/assertString'; +import merge from './util/merge'; +var default_is_empty_options = { + ignore_whitespace: false +}; +export default function isEmpty(str, options) { + assertString(str); + options = merge(options, default_is_empty_options); + return (options.ignore_whitespace ? str.trim().length : str.length) === 0; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isEthereumAddress.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isEthereumAddress.js new file mode 100644 index 00000000..9c70f64c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isEthereumAddress.js @@ -0,0 +1,6 @@ +import assertString from './util/assertString'; +var eth = /^(0x)[0-9a-f]{40}$/i; +export default function isEthereumAddress(str) { + assertString(str); + return eth.test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isFQDN.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isFQDN.js new file mode 100644 index 00000000..b63f737f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isFQDN.js @@ -0,0 +1,74 @@ +import assertString from './util/assertString'; +import merge from './util/merge'; +var default_fqdn_options = { + require_tld: true, + allow_underscores: false, + allow_trailing_dot: false, + allow_numeric_tld: false, + allow_wildcard: false +}; +export default function isFQDN(str, options) { + assertString(str); + options = merge(options, default_fqdn_options); + /* Remove the optional trailing dot before checking validity */ + + if (options.allow_trailing_dot && str[str.length - 1] === '.') { + str = str.substring(0, str.length - 1); + } + /* Remove the optional wildcard before checking validity */ + + + if (options.allow_wildcard === true && str.indexOf('*.') === 0) { + str = str.substring(2); + } + + var parts = str.split('.'); + var tld = parts[parts.length - 1]; + + if (options.require_tld) { + // disallow fqdns without tld + if (parts.length < 2) { + return false; + } + + if (!/^([a-z\u00A1-\u00A8\u00AA-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}|xn[a-z0-9-]{2,})$/i.test(tld)) { + return false; + } // disallow spaces + + + if (/\s/.test(tld)) { + return false; + } + } // reject numeric TLDs + + + if (!options.allow_numeric_tld && /^\d+$/.test(tld)) { + return false; + } + + return parts.every(function (part) { + if (part.length > 63) { + return false; + } + + if (!/^[a-z_\u00a1-\uffff0-9-]+$/i.test(part)) { + return false; + } // disallow full-width chars + + + if (/[\uff01-\uff5e]/.test(part)) { + return false; + } // disallow parts starting or ending with hyphen + + + if (/^-|-$/.test(part)) { + return false; + } + + if (!options.allow_underscores && /_/.test(part)) { + return false; + } + + return true; + }); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isFloat.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isFloat.js new file mode 100644 index 00000000..069873b2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isFloat.js @@ -0,0 +1,16 @@ +import assertString from './util/assertString'; +import { decimal } from './alpha'; +export default function isFloat(str, options) { + assertString(str); + options = options || {}; + + var _float = new RegExp("^(?:[-+])?(?:[0-9]+)?(?:\\".concat(options.locale ? decimal[options.locale] : '.', "[0-9]*)?(?:[eE][\\+\\-]?(?:[0-9]+))?$")); + + if (str === '' || str === '.' || str === '-' || str === '+') { + return false; + } + + var value = parseFloat(str.replace(',', '.')); + return _float.test(str) && (!options.hasOwnProperty('min') || value >= options.min) && (!options.hasOwnProperty('max') || value <= options.max) && (!options.hasOwnProperty('lt') || value < options.lt) && (!options.hasOwnProperty('gt') || value > options.gt); +} +export var locales = Object.keys(decimal); \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isFullWidth.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isFullWidth.js new file mode 100644 index 00000000..ae546295 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isFullWidth.js @@ -0,0 +1,6 @@ +import assertString from './util/assertString'; +export var fullWidth = /[^\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/; +export default function isFullWidth(str) { + assertString(str); + return fullWidth.test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isHSL.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isHSL.js new file mode 100644 index 00000000..7efe8e90 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isHSL.js @@ -0,0 +1,14 @@ +import assertString from './util/assertString'; +var hslComma = /^hsla?\(((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn)?(,(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}(,((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?))?\)$/i; +var hslSpace = /^hsla?\(((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn)?(\s(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}\s?(\/\s((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?)\s?)?\)$/i; +export default function isHSL(str) { + assertString(str); // Strip duplicate spaces before calling the validation regex (See #1598 for more info) + + var strippedStr = str.replace(/\s+/g, ' ').replace(/\s?(hsla?\(|\)|,)\s?/ig, '$1'); + + if (strippedStr.indexOf(',') !== -1) { + return hslComma.test(strippedStr); + } + + return hslSpace.test(strippedStr); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isHalfWidth.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isHalfWidth.js new file mode 100644 index 00000000..b0c87957 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isHalfWidth.js @@ -0,0 +1,6 @@ +import assertString from './util/assertString'; +export var halfWidth = /[\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/; +export default function isHalfWidth(str) { + assertString(str); + return halfWidth.test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isHash.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isHash.js new file mode 100644 index 00000000..3495486a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isHash.js @@ -0,0 +1,21 @@ +import assertString from './util/assertString'; +var lengths = { + md5: 32, + md4: 32, + sha1: 40, + sha256: 64, + sha384: 96, + sha512: 128, + ripemd128: 32, + ripemd160: 40, + tiger128: 32, + tiger160: 40, + tiger192: 48, + crc32: 8, + crc32b: 8 +}; +export default function isHash(str, algorithm) { + assertString(str); + var hash = new RegExp("^[a-fA-F0-9]{".concat(lengths[algorithm], "}$")); + return hash.test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isHexColor.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isHexColor.js new file mode 100644 index 00000000..72eab2c8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isHexColor.js @@ -0,0 +1,6 @@ +import assertString from './util/assertString'; +var hexcolor = /^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$/i; +export default function isHexColor(str) { + assertString(str); + return hexcolor.test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isHexadecimal.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isHexadecimal.js new file mode 100644 index 00000000..6654de40 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isHexadecimal.js @@ -0,0 +1,6 @@ +import assertString from './util/assertString'; +var hexadecimal = /^(0x|0h)?[0-9A-F]+$/i; +export default function isHexadecimal(str) { + assertString(str); + return hexadecimal.test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isIBAN.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isIBAN.js new file mode 100644 index 00000000..0c97a012 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isIBAN.js @@ -0,0 +1,138 @@ +import assertString from './util/assertString'; +/** + * List of country codes with + * corresponding IBAN regular expression + * Reference: https://en.wikipedia.org/wiki/International_Bank_Account_Number + */ + +var ibanRegexThroughCountryCode = { + AD: /^(AD[0-9]{2})\d{8}[A-Z0-9]{12}$/, + AE: /^(AE[0-9]{2})\d{3}\d{16}$/, + AL: /^(AL[0-9]{2})\d{8}[A-Z0-9]{16}$/, + AT: /^(AT[0-9]{2})\d{16}$/, + AZ: /^(AZ[0-9]{2})[A-Z0-9]{4}\d{20}$/, + BA: /^(BA[0-9]{2})\d{16}$/, + BE: /^(BE[0-9]{2})\d{12}$/, + BG: /^(BG[0-9]{2})[A-Z]{4}\d{6}[A-Z0-9]{8}$/, + BH: /^(BH[0-9]{2})[A-Z]{4}[A-Z0-9]{14}$/, + BR: /^(BR[0-9]{2})\d{23}[A-Z]{1}[A-Z0-9]{1}$/, + BY: /^(BY[0-9]{2})[A-Z0-9]{4}\d{20}$/, + CH: /^(CH[0-9]{2})\d{5}[A-Z0-9]{12}$/, + CR: /^(CR[0-9]{2})\d{18}$/, + CY: /^(CY[0-9]{2})\d{8}[A-Z0-9]{16}$/, + CZ: /^(CZ[0-9]{2})\d{20}$/, + DE: /^(DE[0-9]{2})\d{18}$/, + DK: /^(DK[0-9]{2})\d{14}$/, + DO: /^(DO[0-9]{2})[A-Z]{4}\d{20}$/, + EE: /^(EE[0-9]{2})\d{16}$/, + EG: /^(EG[0-9]{2})\d{25}$/, + ES: /^(ES[0-9]{2})\d{20}$/, + FI: /^(FI[0-9]{2})\d{14}$/, + FO: /^(FO[0-9]{2})\d{14}$/, + FR: /^(FR[0-9]{2})\d{10}[A-Z0-9]{11}\d{2}$/, + GB: /^(GB[0-9]{2})[A-Z]{4}\d{14}$/, + GE: /^(GE[0-9]{2})[A-Z0-9]{2}\d{16}$/, + GI: /^(GI[0-9]{2})[A-Z]{4}[A-Z0-9]{15}$/, + GL: /^(GL[0-9]{2})\d{14}$/, + GR: /^(GR[0-9]{2})\d{7}[A-Z0-9]{16}$/, + GT: /^(GT[0-9]{2})[A-Z0-9]{4}[A-Z0-9]{20}$/, + HR: /^(HR[0-9]{2})\d{17}$/, + HU: /^(HU[0-9]{2})\d{24}$/, + IE: /^(IE[0-9]{2})[A-Z0-9]{4}\d{14}$/, + IL: /^(IL[0-9]{2})\d{19}$/, + IQ: /^(IQ[0-9]{2})[A-Z]{4}\d{15}$/, + IR: /^(IR[0-9]{2})0\d{2}0\d{18}$/, + IS: /^(IS[0-9]{2})\d{22}$/, + IT: /^(IT[0-9]{2})[A-Z]{1}\d{10}[A-Z0-9]{12}$/, + JO: /^(JO[0-9]{2})[A-Z]{4}\d{22}$/, + KW: /^(KW[0-9]{2})[A-Z]{4}[A-Z0-9]{22}$/, + KZ: /^(KZ[0-9]{2})\d{3}[A-Z0-9]{13}$/, + LB: /^(LB[0-9]{2})\d{4}[A-Z0-9]{20}$/, + LC: /^(LC[0-9]{2})[A-Z]{4}[A-Z0-9]{24}$/, + LI: /^(LI[0-9]{2})\d{5}[A-Z0-9]{12}$/, + LT: /^(LT[0-9]{2})\d{16}$/, + LU: /^(LU[0-9]{2})\d{3}[A-Z0-9]{13}$/, + LV: /^(LV[0-9]{2})[A-Z]{4}[A-Z0-9]{13}$/, + MC: /^(MC[0-9]{2})\d{10}[A-Z0-9]{11}\d{2}$/, + MD: /^(MD[0-9]{2})[A-Z0-9]{20}$/, + ME: /^(ME[0-9]{2})\d{18}$/, + MK: /^(MK[0-9]{2})\d{3}[A-Z0-9]{10}\d{2}$/, + MR: /^(MR[0-9]{2})\d{23}$/, + MT: /^(MT[0-9]{2})[A-Z]{4}\d{5}[A-Z0-9]{18}$/, + MU: /^(MU[0-9]{2})[A-Z]{4}\d{19}[A-Z]{3}$/, + MZ: /^(MZ[0-9]{2})\d{21}$/, + NL: /^(NL[0-9]{2})[A-Z]{4}\d{10}$/, + NO: /^(NO[0-9]{2})\d{11}$/, + PK: /^(PK[0-9]{2})[A-Z0-9]{4}\d{16}$/, + PL: /^(PL[0-9]{2})\d{24}$/, + PS: /^(PS[0-9]{2})[A-Z0-9]{4}\d{21}$/, + PT: /^(PT[0-9]{2})\d{21}$/, + QA: /^(QA[0-9]{2})[A-Z]{4}[A-Z0-9]{21}$/, + RO: /^(RO[0-9]{2})[A-Z]{4}[A-Z0-9]{16}$/, + RS: /^(RS[0-9]{2})\d{18}$/, + SA: /^(SA[0-9]{2})\d{2}[A-Z0-9]{18}$/, + SC: /^(SC[0-9]{2})[A-Z]{4}\d{20}[A-Z]{3}$/, + SE: /^(SE[0-9]{2})\d{20}$/, + SI: /^(SI[0-9]{2})\d{15}$/, + SK: /^(SK[0-9]{2})\d{20}$/, + SM: /^(SM[0-9]{2})[A-Z]{1}\d{10}[A-Z0-9]{12}$/, + SV: /^(SV[0-9]{2})[A-Z0-9]{4}\d{20}$/, + TL: /^(TL[0-9]{2})\d{19}$/, + TN: /^(TN[0-9]{2})\d{20}$/, + TR: /^(TR[0-9]{2})\d{5}[A-Z0-9]{17}$/, + UA: /^(UA[0-9]{2})\d{6}[A-Z0-9]{19}$/, + VA: /^(VA[0-9]{2})\d{18}$/, + VG: /^(VG[0-9]{2})[A-Z0-9]{4}\d{16}$/, + XK: /^(XK[0-9]{2})\d{16}$/ +}; +/** + * Check whether string has correct universal IBAN format + * The IBAN consists of up to 34 alphanumeric characters, as follows: + * Country Code using ISO 3166-1 alpha-2, two letters + * check digits, two digits and + * Basic Bank Account Number (BBAN), up to 30 alphanumeric characters. + * NOTE: Permitted IBAN characters are: digits [0-9] and the 26 latin alphabetic [A-Z] + * + * @param {string} str - string under validation + * @return {boolean} + */ + +function hasValidIbanFormat(str) { + // Strip white spaces and hyphens + var strippedStr = str.replace(/[\s\-]+/gi, '').toUpperCase(); + var isoCountryCode = strippedStr.slice(0, 2).toUpperCase(); + return isoCountryCode in ibanRegexThroughCountryCode && ibanRegexThroughCountryCode[isoCountryCode].test(strippedStr); +} +/** + * Check whether string has valid IBAN Checksum + * by performing basic mod-97 operation and + * the remainder should equal 1 + * -- Start by rearranging the IBAN by moving the four initial characters to the end of the string + * -- Replace each letter in the string with two digits, A -> 10, B = 11, Z = 35 + * -- Interpret the string as a decimal integer and + * -- compute the remainder on division by 97 (mod 97) + * Reference: https://en.wikipedia.org/wiki/International_Bank_Account_Number + * + * @param {string} str + * @return {boolean} + */ + + +function hasValidIbanChecksum(str) { + var strippedStr = str.replace(/[^A-Z0-9]+/gi, '').toUpperCase(); // Keep only digits and A-Z latin alphabetic + + var rearranged = strippedStr.slice(4) + strippedStr.slice(0, 4); + var alphaCapsReplacedWithDigits = rearranged.replace(/[A-Z]/g, function (_char) { + return _char.charCodeAt(0) - 55; + }); + var remainder = alphaCapsReplacedWithDigits.match(/\d{1,7}/g).reduce(function (acc, value) { + return Number(acc + value) % 97; + }, ''); + return remainder === 1; +} + +export default function isIBAN(str) { + assertString(str); + return hasValidIbanFormat(str) && hasValidIbanChecksum(str); +} +export var locales = Object.keys(ibanRegexThroughCountryCode); \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isIMEI.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isIMEI.js new file mode 100644 index 00000000..27bd09db --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isIMEI.js @@ -0,0 +1,47 @@ +import assertString from './util/assertString'; +var imeiRegexWithoutHypens = /^[0-9]{15}$/; +var imeiRegexWithHypens = /^\d{2}-\d{6}-\d{6}-\d{1}$/; +export default function isIMEI(str, options) { + assertString(str); + options = options || {}; // default regex for checking imei is the one without hyphens + + var imeiRegex = imeiRegexWithoutHypens; + + if (options.allow_hyphens) { + imeiRegex = imeiRegexWithHypens; + } + + if (!imeiRegex.test(str)) { + return false; + } + + str = str.replace(/-/g, ''); + var sum = 0, + mul = 2, + l = 14; + + for (var i = 0; i < l; i++) { + var digit = str.substring(l - i - 1, l - i); + var tp = parseInt(digit, 10) * mul; + + if (tp >= 10) { + sum += tp % 10 + 1; + } else { + sum += tp; + } + + if (mul === 1) { + mul += 1; + } else { + mul -= 1; + } + } + + var chk = (10 - sum % 10) % 10; + + if (chk !== parseInt(str.substring(14, 15), 10)) { + return false; + } + + return true; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isIP.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isIP.js new file mode 100644 index 00000000..5cf3fd2b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isIP.js @@ -0,0 +1,62 @@ +import assertString from './util/assertString'; +/** +11.3. Examples + + The following addresses + + fe80::1234 (on the 1st link of the node) + ff02::5678 (on the 5th link of the node) + ff08::9abc (on the 10th organization of the node) + + would be represented as follows: + + fe80::1234%1 + ff02::5678%5 + ff08::9abc%10 + + (Here we assume a natural translation from a zone index to the + part, where the Nth zone of any scope is translated into + "N".) + + If we use interface names as , those addresses could also be + represented as follows: + + fe80::1234%ne0 + ff02::5678%pvc1.3 + ff08::9abc%interface10 + + where the interface "ne0" belongs to the 1st link, "pvc1.3" belongs + to the 5th link, and "interface10" belongs to the 10th organization. + * * */ + +var IPv4SegmentFormat = '(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'; +var IPv4AddressFormat = "(".concat(IPv4SegmentFormat, "[.]){3}").concat(IPv4SegmentFormat); +var IPv4AddressRegExp = new RegExp("^".concat(IPv4AddressFormat, "$")); +var IPv6SegmentFormat = '(?:[0-9a-fA-F]{1,4})'; +var IPv6AddressRegExp = new RegExp('^(' + "(?:".concat(IPv6SegmentFormat, ":){7}(?:").concat(IPv6SegmentFormat, "|:)|") + "(?:".concat(IPv6SegmentFormat, ":){6}(?:").concat(IPv4AddressFormat, "|:").concat(IPv6SegmentFormat, "|:)|") + "(?:".concat(IPv6SegmentFormat, ":){5}(?::").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,2}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){4}(?:(:").concat(IPv6SegmentFormat, "){0,1}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,3}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){3}(?:(:").concat(IPv6SegmentFormat, "){0,2}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,4}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){2}(?:(:").concat(IPv6SegmentFormat, "){0,3}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,5}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){1}(?:(:").concat(IPv6SegmentFormat, "){0,4}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,6}|:)|") + "(?::((?::".concat(IPv6SegmentFormat, "){0,5}:").concat(IPv4AddressFormat, "|(?::").concat(IPv6SegmentFormat, "){1,7}|:))") + ')(%[0-9a-zA-Z-.:]{1,})?$'); +export default function isIP(str) { + var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + assertString(str); + version = String(version); + + if (!version) { + return isIP(str, 4) || isIP(str, 6); + } + + if (version === '4') { + if (!IPv4AddressRegExp.test(str)) { + return false; + } + + var parts = str.split('.').sort(function (a, b) { + return a - b; + }); + return parts[3] <= 255; + } + + if (version === '6') { + return !!IPv6AddressRegExp.test(str); + } + + return false; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isIPRange.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isIPRange.js new file mode 100644 index 00000000..209efddf --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isIPRange.js @@ -0,0 +1,47 @@ +import assertString from './util/assertString'; +import isIP from './isIP'; +var subnetMaybe = /^\d{1,3}$/; +var v4Subnet = 32; +var v6Subnet = 128; +export default function isIPRange(str) { + var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + assertString(str); + var parts = str.split('/'); // parts[0] -> ip, parts[1] -> subnet + + if (parts.length !== 2) { + return false; + } + + if (!subnetMaybe.test(parts[1])) { + return false; + } // Disallow preceding 0 i.e. 01, 02, ... + + + if (parts[1].length > 1 && parts[1].startsWith('0')) { + return false; + } + + var isValidIP = isIP(parts[0], version); + + if (!isValidIP) { + return false; + } // Define valid subnet according to IP's version + + + var expectedSubnet = null; + + switch (String(version)) { + case '4': + expectedSubnet = v4Subnet; + break; + + case '6': + expectedSubnet = v6Subnet; + break; + + default: + expectedSubnet = isIP(parts[0], '6') ? v6Subnet : v4Subnet; + } + + return parts[1] <= expectedSubnet && parts[1] >= 0; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISBN.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISBN.js new file mode 100644 index 00000000..da2c435b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISBN.js @@ -0,0 +1,51 @@ +import assertString from './util/assertString'; +var isbn10Maybe = /^(?:[0-9]{9}X|[0-9]{10})$/; +var isbn13Maybe = /^(?:[0-9]{13})$/; +var factor = [1, 3]; +export default function isISBN(str) { + var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + assertString(str); + version = String(version); + + if (!version) { + return isISBN(str, 10) || isISBN(str, 13); + } + + var sanitized = str.replace(/[\s-]+/g, ''); + var checksum = 0; + var i; + + if (version === '10') { + if (!isbn10Maybe.test(sanitized)) { + return false; + } + + for (i = 0; i < 9; i++) { + checksum += (i + 1) * sanitized.charAt(i); + } + + if (sanitized.charAt(9) === 'X') { + checksum += 10 * 10; + } else { + checksum += 10 * sanitized.charAt(9); + } + + if (checksum % 11 === 0) { + return !!sanitized; + } + } else if (version === '13') { + if (!isbn13Maybe.test(sanitized)) { + return false; + } + + for (i = 0; i < 12; i++) { + checksum += factor[i % 2] * sanitized.charAt(i); + } + + if (sanitized.charAt(12) - (10 - checksum % 10) % 10 === 0) { + return !!sanitized; + } + } + + return false; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISIN.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISIN.js new file mode 100644 index 00000000..8e5b8266 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISIN.js @@ -0,0 +1,60 @@ +import assertString from './util/assertString'; +var isin = /^[A-Z]{2}[0-9A-Z]{9}[0-9]$/; // this link details how the check digit is calculated: +// https://www.isin.org/isin-format/. it is a little bit +// odd in that it works with digits, not numbers. in order +// to make only one pass through the ISIN characters, the +// each alpha character is handled as 2 characters within +// the loop. + +export default function isISIN(str) { + assertString(str); + + if (!isin.test(str)) { + return false; + } + + var _double = true; + var sum = 0; // convert values + + for (var i = str.length - 2; i >= 0; i--) { + if (str[i] >= 'A' && str[i] <= 'Z') { + var value = str[i].charCodeAt(0) - 55; + var lo = value % 10; + var hi = Math.trunc(value / 10); // letters have two digits, so handle the low order + // and high order digits separately. + + for (var _i = 0, _arr = [lo, hi]; _i < _arr.length; _i++) { + var digit = _arr[_i]; + + if (_double) { + if (digit >= 5) { + sum += 1 + (digit - 5) * 2; + } else { + sum += digit * 2; + } + } else { + sum += digit; + } + + _double = !_double; + } + } else { + var _digit = str[i].charCodeAt(0) - '0'.charCodeAt(0); + + if (_double) { + if (_digit >= 5) { + sum += 1 + (_digit - 5) * 2; + } else { + sum += _digit * 2; + } + } else { + sum += _digit; + } + + _double = !_double; + } + } + + var check = Math.trunc((sum + 9) / 10) * 10 - sum; + return +str[str.length - 1] === check; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISO31661Alpha2.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISO31661Alpha2.js new file mode 100644 index 00000000..e8db93e7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISO31661Alpha2.js @@ -0,0 +1,8 @@ +import assertString from './util/assertString'; // from https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 + +var validISO31661Alpha2CountriesCodes = new Set(['AD', 'AE', 'AF', 'AG', 'AI', 'AL', 'AM', 'AO', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AW', 'AX', 'AZ', 'BA', 'BB', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BL', 'BM', 'BN', 'BO', 'BQ', 'BR', 'BS', 'BT', 'BV', 'BW', 'BY', 'BZ', 'CA', 'CC', 'CD', 'CF', 'CG', 'CH', 'CI', 'CK', 'CL', 'CM', 'CN', 'CO', 'CR', 'CU', 'CV', 'CW', 'CX', 'CY', 'CZ', 'DE', 'DJ', 'DK', 'DM', 'DO', 'DZ', 'EC', 'EE', 'EG', 'EH', 'ER', 'ES', 'ET', 'FI', 'FJ', 'FK', 'FM', 'FO', 'FR', 'GA', 'GB', 'GD', 'GE', 'GF', 'GG', 'GH', 'GI', 'GL', 'GM', 'GN', 'GP', 'GQ', 'GR', 'GS', 'GT', 'GU', 'GW', 'GY', 'HK', 'HM', 'HN', 'HR', 'HT', 'HU', 'ID', 'IE', 'IL', 'IM', 'IN', 'IO', 'IQ', 'IR', 'IS', 'IT', 'JE', 'JM', 'JO', 'JP', 'KE', 'KG', 'KH', 'KI', 'KM', 'KN', 'KP', 'KR', 'KW', 'KY', 'KZ', 'LA', 'LB', 'LC', 'LI', 'LK', 'LR', 'LS', 'LT', 'LU', 'LV', 'LY', 'MA', 'MC', 'MD', 'ME', 'MF', 'MG', 'MH', 'MK', 'ML', 'MM', 'MN', 'MO', 'MP', 'MQ', 'MR', 'MS', 'MT', 'MU', 'MV', 'MW', 'MX', 'MY', 'MZ', 'NA', 'NC', 'NE', 'NF', 'NG', 'NI', 'NL', 'NO', 'NP', 'NR', 'NU', 'NZ', 'OM', 'PA', 'PE', 'PF', 'PG', 'PH', 'PK', 'PL', 'PM', 'PN', 'PR', 'PS', 'PT', 'PW', 'PY', 'QA', 'RE', 'RO', 'RS', 'RU', 'RW', 'SA', 'SB', 'SC', 'SD', 'SE', 'SG', 'SH', 'SI', 'SJ', 'SK', 'SL', 'SM', 'SN', 'SO', 'SR', 'SS', 'ST', 'SV', 'SX', 'SY', 'SZ', 'TC', 'TD', 'TF', 'TG', 'TH', 'TJ', 'TK', 'TL', 'TM', 'TN', 'TO', 'TR', 'TT', 'TV', 'TW', 'TZ', 'UA', 'UG', 'UM', 'US', 'UY', 'UZ', 'VA', 'VC', 'VE', 'VG', 'VI', 'VN', 'VU', 'WF', 'WS', 'YE', 'YT', 'ZA', 'ZM', 'ZW']); +export default function isISO31661Alpha2(str) { + assertString(str); + return validISO31661Alpha2CountriesCodes.has(str.toUpperCase()); +} +export var CountryCodes = validISO31661Alpha2CountriesCodes; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISO31661Alpha3.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISO31661Alpha3.js new file mode 100644 index 00000000..41a615b2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISO31661Alpha3.js @@ -0,0 +1,7 @@ +import assertString from './util/assertString'; // from https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3 + +var validISO31661Alpha3CountriesCodes = new Set(['AFG', 'ALA', 'ALB', 'DZA', 'ASM', 'AND', 'AGO', 'AIA', 'ATA', 'ATG', 'ARG', 'ARM', 'ABW', 'AUS', 'AUT', 'AZE', 'BHS', 'BHR', 'BGD', 'BRB', 'BLR', 'BEL', 'BLZ', 'BEN', 'BMU', 'BTN', 'BOL', 'BES', 'BIH', 'BWA', 'BVT', 'BRA', 'IOT', 'BRN', 'BGR', 'BFA', 'BDI', 'KHM', 'CMR', 'CAN', 'CPV', 'CYM', 'CAF', 'TCD', 'CHL', 'CHN', 'CXR', 'CCK', 'COL', 'COM', 'COG', 'COD', 'COK', 'CRI', 'CIV', 'HRV', 'CUB', 'CUW', 'CYP', 'CZE', 'DNK', 'DJI', 'DMA', 'DOM', 'ECU', 'EGY', 'SLV', 'GNQ', 'ERI', 'EST', 'ETH', 'FLK', 'FRO', 'FJI', 'FIN', 'FRA', 'GUF', 'PYF', 'ATF', 'GAB', 'GMB', 'GEO', 'DEU', 'GHA', 'GIB', 'GRC', 'GRL', 'GRD', 'GLP', 'GUM', 'GTM', 'GGY', 'GIN', 'GNB', 'GUY', 'HTI', 'HMD', 'VAT', 'HND', 'HKG', 'HUN', 'ISL', 'IND', 'IDN', 'IRN', 'IRQ', 'IRL', 'IMN', 'ISR', 'ITA', 'JAM', 'JPN', 'JEY', 'JOR', 'KAZ', 'KEN', 'KIR', 'PRK', 'KOR', 'KWT', 'KGZ', 'LAO', 'LVA', 'LBN', 'LSO', 'LBR', 'LBY', 'LIE', 'LTU', 'LUX', 'MAC', 'MKD', 'MDG', 'MWI', 'MYS', 'MDV', 'MLI', 'MLT', 'MHL', 'MTQ', 'MRT', 'MUS', 'MYT', 'MEX', 'FSM', 'MDA', 'MCO', 'MNG', 'MNE', 'MSR', 'MAR', 'MOZ', 'MMR', 'NAM', 'NRU', 'NPL', 'NLD', 'NCL', 'NZL', 'NIC', 'NER', 'NGA', 'NIU', 'NFK', 'MNP', 'NOR', 'OMN', 'PAK', 'PLW', 'PSE', 'PAN', 'PNG', 'PRY', 'PER', 'PHL', 'PCN', 'POL', 'PRT', 'PRI', 'QAT', 'REU', 'ROU', 'RUS', 'RWA', 'BLM', 'SHN', 'KNA', 'LCA', 'MAF', 'SPM', 'VCT', 'WSM', 'SMR', 'STP', 'SAU', 'SEN', 'SRB', 'SYC', 'SLE', 'SGP', 'SXM', 'SVK', 'SVN', 'SLB', 'SOM', 'ZAF', 'SGS', 'SSD', 'ESP', 'LKA', 'SDN', 'SUR', 'SJM', 'SWZ', 'SWE', 'CHE', 'SYR', 'TWN', 'TJK', 'TZA', 'THA', 'TLS', 'TGO', 'TKL', 'TON', 'TTO', 'TUN', 'TUR', 'TKM', 'TCA', 'TUV', 'UGA', 'UKR', 'ARE', 'GBR', 'USA', 'UMI', 'URY', 'UZB', 'VUT', 'VEN', 'VNM', 'VGB', 'VIR', 'WLF', 'ESH', 'YEM', 'ZMB', 'ZWE']); +export default function isISO31661Alpha3(str) { + assertString(str); + return validISO31661Alpha3CountriesCodes.has(str.toUpperCase()); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISO4217.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISO4217.js new file mode 100644 index 00000000..3033a04d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISO4217.js @@ -0,0 +1,8 @@ +import assertString from './util/assertString'; // from https://en.wikipedia.org/wiki/ISO_4217 + +var validISO4217CurrencyCodes = new Set(['AED', 'AFN', 'ALL', 'AMD', 'ANG', 'AOA', 'ARS', 'AUD', 'AWG', 'AZN', 'BAM', 'BBD', 'BDT', 'BGN', 'BHD', 'BIF', 'BMD', 'BND', 'BOB', 'BOV', 'BRL', 'BSD', 'BTN', 'BWP', 'BYN', 'BZD', 'CAD', 'CDF', 'CHE', 'CHF', 'CHW', 'CLF', 'CLP', 'CNY', 'COP', 'COU', 'CRC', 'CUC', 'CUP', 'CVE', 'CZK', 'DJF', 'DKK', 'DOP', 'DZD', 'EGP', 'ERN', 'ETB', 'EUR', 'FJD', 'FKP', 'GBP', 'GEL', 'GHS', 'GIP', 'GMD', 'GNF', 'GTQ', 'GYD', 'HKD', 'HNL', 'HRK', 'HTG', 'HUF', 'IDR', 'ILS', 'INR', 'IQD', 'IRR', 'ISK', 'JMD', 'JOD', 'JPY', 'KES', 'KGS', 'KHR', 'KMF', 'KPW', 'KRW', 'KWD', 'KYD', 'KZT', 'LAK', 'LBP', 'LKR', 'LRD', 'LSL', 'LYD', 'MAD', 'MDL', 'MGA', 'MKD', 'MMK', 'MNT', 'MOP', 'MRU', 'MUR', 'MVR', 'MWK', 'MXN', 'MXV', 'MYR', 'MZN', 'NAD', 'NGN', 'NIO', 'NOK', 'NPR', 'NZD', 'OMR', 'PAB', 'PEN', 'PGK', 'PHP', 'PKR', 'PLN', 'PYG', 'QAR', 'RON', 'RSD', 'RUB', 'RWF', 'SAR', 'SBD', 'SCR', 'SDG', 'SEK', 'SGD', 'SHP', 'SLL', 'SOS', 'SRD', 'SSP', 'STN', 'SVC', 'SYP', 'SZL', 'THB', 'TJS', 'TMT', 'TND', 'TOP', 'TRY', 'TTD', 'TWD', 'TZS', 'UAH', 'UGX', 'USD', 'USN', 'UYI', 'UYU', 'UYW', 'UZS', 'VES', 'VND', 'VUV', 'WST', 'XAF', 'XAG', 'XAU', 'XBA', 'XBB', 'XBC', 'XBD', 'XCD', 'XDR', 'XOF', 'XPD', 'XPF', 'XPT', 'XSU', 'XTS', 'XUA', 'XXX', 'YER', 'ZAR', 'ZMW', 'ZWL']); +export default function isISO4217(str) { + assertString(str); + return validISO4217CurrencyCodes.has(str.toUpperCase()); +} +export var CurrencyCodes = validISO4217CurrencyCodes; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISO8601.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISO8601.js new file mode 100644 index 00000000..8e712158 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISO8601.js @@ -0,0 +1,47 @@ +import assertString from './util/assertString'; +/* eslint-disable max-len */ +// from http://goo.gl/0ejHHW + +var iso8601 = /^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/; // same as above, except with a strict 'T' separator between date and time + +var iso8601StrictSeparator = /^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T]((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/; +/* eslint-enable max-len */ + +var isValidDate = function isValidDate(str) { + // str must have passed the ISO8601 check + // this check is meant to catch invalid dates + // like 2009-02-31 + // first check for ordinal dates + var ordinalMatch = str.match(/^(\d{4})-?(\d{3})([ T]{1}\.*|$)/); + + if (ordinalMatch) { + var oYear = Number(ordinalMatch[1]); + var oDay = Number(ordinalMatch[2]); // if is leap year + + if (oYear % 4 === 0 && oYear % 100 !== 0 || oYear % 400 === 0) return oDay <= 366; + return oDay <= 365; + } + + var match = str.match(/(\d{4})-?(\d{0,2})-?(\d*)/).map(Number); + var year = match[1]; + var month = match[2]; + var day = match[3]; + var monthString = month ? "0".concat(month).slice(-2) : month; + var dayString = day ? "0".concat(day).slice(-2) : day; // create a date object and compare + + var d = new Date("".concat(year, "-").concat(monthString || '01', "-").concat(dayString || '01')); + + if (month && day) { + return d.getUTCFullYear() === year && d.getUTCMonth() + 1 === month && d.getUTCDate() === day; + } + + return true; +}; + +export default function isISO8601(str) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + assertString(str); + var check = options.strictSeparator ? iso8601StrictSeparator.test(str) : iso8601.test(str); + if (check && options.strict) return isValidDate(str); + return check; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISRC.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISRC.js new file mode 100644 index 00000000..275c10a9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISRC.js @@ -0,0 +1,7 @@ +import assertString from './util/assertString'; // see http://isrc.ifpi.org/en/isrc-standard/code-syntax + +var isrc = /^[A-Z]{2}[0-9A-Z]{3}\d{2}\d{5}$/; +export default function isISRC(str) { + assertString(str); + return isrc.test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISSN.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISSN.js new file mode 100644 index 00000000..bebfa9ee --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isISSN.js @@ -0,0 +1,23 @@ +import assertString from './util/assertString'; +var issn = '^\\d{4}-?\\d{3}[\\dX]$'; +export default function isISSN(str) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + assertString(str); + var testIssn = issn; + testIssn = options.require_hyphen ? testIssn.replace('?', '') : testIssn; + testIssn = options.case_sensitive ? new RegExp(testIssn) : new RegExp(testIssn, 'i'); + + if (!testIssn.test(str)) { + return false; + } + + var digits = str.replace('-', '').toUpperCase(); + var checksum = 0; + + for (var i = 0; i < digits.length; i++) { + var digit = digits[i]; + checksum += (digit === 'X' ? 10 : +digit) * (8 - i); + } + + return checksum % 11 === 0; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isIdentityCard.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isIdentityCard.js new file mode 100644 index 00000000..3be4a974 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isIdentityCard.js @@ -0,0 +1,369 @@ +import assertString from './util/assertString'; +import isInt from './isInt'; +var validators = { + PL: function PL(str) { + assertString(str); + var weightOfDigits = { + 1: 1, + 2: 3, + 3: 7, + 4: 9, + 5: 1, + 6: 3, + 7: 7, + 8: 9, + 9: 1, + 10: 3, + 11: 0 + }; + + if (str != null && str.length === 11 && isInt(str, { + allow_leading_zeroes: true + })) { + var digits = str.split('').slice(0, -1); + var sum = digits.reduce(function (acc, digit, index) { + return acc + Number(digit) * weightOfDigits[index + 1]; + }, 0); + var modulo = sum % 10; + var lastDigit = Number(str.charAt(str.length - 1)); + + if (modulo === 0 && lastDigit === 0 || lastDigit === 10 - modulo) { + return true; + } + } + + return false; + }, + ES: function ES(str) { + assertString(str); + var DNI = /^[0-9X-Z][0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKE]$/; + var charsValue = { + X: 0, + Y: 1, + Z: 2 + }; + var controlDigits = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E']; // sanitize user input + + var sanitized = str.trim().toUpperCase(); // validate the data structure + + if (!DNI.test(sanitized)) { + return false; + } // validate the control digit + + + var number = sanitized.slice(0, -1).replace(/[X,Y,Z]/g, function (_char) { + return charsValue[_char]; + }); + return sanitized.endsWith(controlDigits[number % 23]); + }, + FI: function FI(str) { + // https://dvv.fi/en/personal-identity-code#:~:text=control%20character%20for%20a-,personal,-identity%20code%20calculated + assertString(str); + + if (str.length !== 11) { + return false; + } + + if (!str.match(/^\d{6}[\-A\+]\d{3}[0-9ABCDEFHJKLMNPRSTUVWXY]{1}$/)) { + return false; + } + + var checkDigits = '0123456789ABCDEFHJKLMNPRSTUVWXY'; + var idAsNumber = parseInt(str.slice(0, 6), 10) * 1000 + parseInt(str.slice(7, 10), 10); + var remainder = idAsNumber % 31; + var checkDigit = checkDigits[remainder]; + return checkDigit === str.slice(10, 11); + }, + IN: function IN(str) { + var DNI = /^[1-9]\d{3}\s?\d{4}\s?\d{4}$/; // multiplication table + + var d = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 0, 6, 7, 8, 9, 5], [2, 3, 4, 0, 1, 7, 8, 9, 5, 6], [3, 4, 0, 1, 2, 8, 9, 5, 6, 7], [4, 0, 1, 2, 3, 9, 5, 6, 7, 8], [5, 9, 8, 7, 6, 0, 4, 3, 2, 1], [6, 5, 9, 8, 7, 1, 0, 4, 3, 2], [7, 6, 5, 9, 8, 2, 1, 0, 4, 3], [8, 7, 6, 5, 9, 3, 2, 1, 0, 4], [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]]; // permutation table + + var p = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 5, 7, 6, 2, 8, 3, 0, 9, 4], [5, 8, 0, 3, 7, 9, 6, 1, 4, 2], [8, 9, 1, 6, 0, 4, 3, 5, 2, 7], [9, 4, 5, 3, 1, 2, 6, 8, 7, 0], [4, 2, 8, 6, 5, 7, 3, 9, 0, 1], [2, 7, 9, 3, 8, 0, 6, 4, 1, 5], [7, 0, 4, 6, 9, 1, 3, 2, 5, 8]]; // sanitize user input + + var sanitized = str.trim(); // validate the data structure + + if (!DNI.test(sanitized)) { + return false; + } + + var c = 0; + var invertedArray = sanitized.replace(/\s/g, '').split('').map(Number).reverse(); + invertedArray.forEach(function (val, i) { + c = d[c][p[i % 8][val]]; + }); + return c === 0; + }, + IR: function IR(str) { + if (!str.match(/^\d{10}$/)) return false; + str = "0000".concat(str).substr(str.length - 6); + if (parseInt(str.substr(3, 6), 10) === 0) return false; + var lastNumber = parseInt(str.substr(9, 1), 10); + var sum = 0; + + for (var i = 0; i < 9; i++) { + sum += parseInt(str.substr(i, 1), 10) * (10 - i); + } + + sum %= 11; + return sum < 2 && lastNumber === sum || sum >= 2 && lastNumber === 11 - sum; + }, + IT: function IT(str) { + if (str.length !== 9) return false; + if (str === 'CA00000AA') return false; // https://it.wikipedia.org/wiki/Carta_d%27identit%C3%A0_elettronica_italiana + + return str.search(/C[A-Z][0-9]{5}[A-Z]{2}/i) > -1; + }, + NO: function NO(str) { + var sanitized = str.trim(); + if (isNaN(Number(sanitized))) return false; + if (sanitized.length !== 11) return false; + if (sanitized === '00000000000') return false; // https://no.wikipedia.org/wiki/F%C3%B8dselsnummer + + var f = sanitized.split('').map(Number); + var k1 = (11 - (3 * f[0] + 7 * f[1] + 6 * f[2] + 1 * f[3] + 8 * f[4] + 9 * f[5] + 4 * f[6] + 5 * f[7] + 2 * f[8]) % 11) % 11; + var k2 = (11 - (5 * f[0] + 4 * f[1] + 3 * f[2] + 2 * f[3] + 7 * f[4] + 6 * f[5] + 5 * f[6] + 4 * f[7] + 3 * f[8] + 2 * k1) % 11) % 11; + if (k1 !== f[9] || k2 !== f[10]) return false; + return true; + }, + TH: function TH(str) { + if (!str.match(/^[1-8]\d{12}$/)) return false; // validate check digit + + var sum = 0; + + for (var i = 0; i < 12; i++) { + sum += parseInt(str[i], 10) * (13 - i); + } + + return str[12] === ((11 - sum % 11) % 10).toString(); + }, + LK: function LK(str) { + var old_nic = /^[1-9]\d{8}[vx]$/i; + var new_nic = /^[1-9]\d{11}$/i; + if (str.length === 10 && old_nic.test(str)) return true;else if (str.length === 12 && new_nic.test(str)) return true; + return false; + }, + 'he-IL': function heIL(str) { + var DNI = /^\d{9}$/; // sanitize user input + + var sanitized = str.trim(); // validate the data structure + + if (!DNI.test(sanitized)) { + return false; + } + + var id = sanitized; + var sum = 0, + incNum; + + for (var i = 0; i < id.length; i++) { + incNum = Number(id[i]) * (i % 2 + 1); // Multiply number by 1 or 2 + + sum += incNum > 9 ? incNum - 9 : incNum; // Sum the digits up and add to total + } + + return sum % 10 === 0; + }, + 'ar-LY': function arLY(str) { + // Libya National Identity Number NIN is 12 digits, the first digit is either 1 or 2 + var NIN = /^(1|2)\d{11}$/; // sanitize user input + + var sanitized = str.trim(); // validate the data structure + + if (!NIN.test(sanitized)) { + return false; + } + + return true; + }, + 'ar-TN': function arTN(str) { + var DNI = /^\d{8}$/; // sanitize user input + + var sanitized = str.trim(); // validate the data structure + + if (!DNI.test(sanitized)) { + return false; + } + + return true; + }, + 'zh-CN': function zhCN(str) { + var provincesAndCities = ['11', // 北京 + '12', // 天津 + '13', // 河北 + '14', // 山西 + '15', // 内蒙古 + '21', // 辽宁 + '22', // 吉林 + '23', // 黑龙江 + '31', // 上海 + '32', // 江苏 + '33', // 浙江 + '34', // 安徽 + '35', // 福建 + '36', // 江西 + '37', // 山东 + '41', // 河南 + '42', // 湖北 + '43', // 湖南 + '44', // 广东 + '45', // 广西 + '46', // 海南 + '50', // 重庆 + '51', // 四川 + '52', // 贵州 + '53', // 云南 + '54', // 西藏 + '61', // 陕西 + '62', // 甘肃 + '63', // 青海 + '64', // 宁夏 + '65', // 新疆 + '71', // 台湾 + '81', // 香港 + '82', // 澳门 + '91' // 国外 + ]; + var powers = ['7', '9', '10', '5', '8', '4', '2', '1', '6', '3', '7', '9', '10', '5', '8', '4', '2']; + var parityBit = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']; + + var checkAddressCode = function checkAddressCode(addressCode) { + return provincesAndCities.includes(addressCode); + }; + + var checkBirthDayCode = function checkBirthDayCode(birDayCode) { + var yyyy = parseInt(birDayCode.substring(0, 4), 10); + var mm = parseInt(birDayCode.substring(4, 6), 10); + var dd = parseInt(birDayCode.substring(6), 10); + var xdata = new Date(yyyy, mm - 1, dd); + + if (xdata > new Date()) { + return false; // eslint-disable-next-line max-len + } else if (xdata.getFullYear() === yyyy && xdata.getMonth() === mm - 1 && xdata.getDate() === dd) { + return true; + } + + return false; + }; + + var getParityBit = function getParityBit(idCardNo) { + var id17 = idCardNo.substring(0, 17); + var power = 0; + + for (var i = 0; i < 17; i++) { + power += parseInt(id17.charAt(i), 10) * parseInt(powers[i], 10); + } + + var mod = power % 11; + return parityBit[mod]; + }; + + var checkParityBit = function checkParityBit(idCardNo) { + return getParityBit(idCardNo) === idCardNo.charAt(17).toUpperCase(); + }; + + var check15IdCardNo = function check15IdCardNo(idCardNo) { + var check = /^[1-9]\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}$/.test(idCardNo); + if (!check) return false; + var addressCode = idCardNo.substring(0, 2); + check = checkAddressCode(addressCode); + if (!check) return false; + var birDayCode = "19".concat(idCardNo.substring(6, 12)); + check = checkBirthDayCode(birDayCode); + if (!check) return false; + return true; + }; + + var check18IdCardNo = function check18IdCardNo(idCardNo) { + var check = /^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}(\d|x|X)$/.test(idCardNo); + if (!check) return false; + var addressCode = idCardNo.substring(0, 2); + check = checkAddressCode(addressCode); + if (!check) return false; + var birDayCode = idCardNo.substring(6, 14); + check = checkBirthDayCode(birDayCode); + if (!check) return false; + return checkParityBit(idCardNo); + }; + + var checkIdCardNo = function checkIdCardNo(idCardNo) { + var check = /^\d{15}|(\d{17}(\d|x|X))$/.test(idCardNo); + if (!check) return false; + + if (idCardNo.length === 15) { + return check15IdCardNo(idCardNo); + } + + return check18IdCardNo(idCardNo); + }; + + return checkIdCardNo(str); + }, + 'zh-TW': function zhTW(str) { + var ALPHABET_CODES = { + A: 10, + B: 11, + C: 12, + D: 13, + E: 14, + F: 15, + G: 16, + H: 17, + I: 34, + J: 18, + K: 19, + L: 20, + M: 21, + N: 22, + O: 35, + P: 23, + Q: 24, + R: 25, + S: 26, + T: 27, + U: 28, + V: 29, + W: 32, + X: 30, + Y: 31, + Z: 33 + }; + var sanitized = str.trim().toUpperCase(); + if (!/^[A-Z][0-9]{9}$/.test(sanitized)) return false; + return Array.from(sanitized).reduce(function (sum, number, index) { + if (index === 0) { + var code = ALPHABET_CODES[number]; + return code % 10 * 9 + Math.floor(code / 10); + } + + if (index === 9) { + return (10 - sum % 10 - Number(number)) % 10 === 0; + } + + return sum + Number(number) * (9 - index); + }, 0); + } +}; +export default function isIdentityCard(str, locale) { + assertString(str); + + if (locale in validators) { + return validators[locale](str); + } else if (locale === 'any') { + for (var key in validators) { + // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes + // istanbul ignore else + if (validators.hasOwnProperty(key)) { + var validator = validators[key]; + + if (validator(str)) { + return true; + } + } + } + + return false; + } + + throw new Error("Invalid locale '".concat(locale, "'")); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isIn.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isIn.js new file mode 100644 index 00000000..452429d8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isIn.js @@ -0,0 +1,28 @@ +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +import assertString from './util/assertString'; +import toString from './util/toString'; +export default function isIn(str, options) { + assertString(str); + var i; + + if (Object.prototype.toString.call(options) === '[object Array]') { + var array = []; + + for (i in options) { + // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes + // istanbul ignore else + if ({}.hasOwnProperty.call(options, i)) { + array[i] = toString(options[i]); + } + } + + return array.indexOf(str) >= 0; + } else if (_typeof(options) === 'object') { + return options.hasOwnProperty(str); + } else if (options && typeof options.indexOf === 'function') { + return options.indexOf(str) >= 0; + } + + return false; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isInt.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isInt.js new file mode 100644 index 00000000..b58dab40 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isInt.js @@ -0,0 +1,16 @@ +import assertString from './util/assertString'; +var _int = /^(?:[-+]?(?:0|[1-9][0-9]*))$/; +var intLeadingZeroes = /^[-+]?[0-9]+$/; +export default function isInt(str, options) { + assertString(str); + options = options || {}; // Get the regex to use for testing, based on whether + // leading zeroes are allowed or not. + + var regex = options.hasOwnProperty('allow_leading_zeroes') && !options.allow_leading_zeroes ? _int : intLeadingZeroes; // Check min/max/lt/gt + + var minCheckPassed = !options.hasOwnProperty('min') || str >= options.min; + var maxCheckPassed = !options.hasOwnProperty('max') || str <= options.max; + var ltCheckPassed = !options.hasOwnProperty('lt') || str < options.lt; + var gtCheckPassed = !options.hasOwnProperty('gt') || str > options.gt; + return regex.test(str) && minCheckPassed && maxCheckPassed && ltCheckPassed && gtCheckPassed; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isJSON.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isJSON.js new file mode 100644 index 00000000..bd110cc0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isJSON.js @@ -0,0 +1,26 @@ +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +import assertString from './util/assertString'; +import merge from './util/merge'; +var default_json_options = { + allow_primitives: false +}; +export default function isJSON(str, options) { + assertString(str); + + try { + options = merge(options, default_json_options); + var primitives = []; + + if (options.allow_primitives) { + primitives = [null, false, true]; + } + + var obj = JSON.parse(str); + return primitives.includes(obj) || !!obj && _typeof(obj) === 'object'; + } catch (e) { + /* ignore */ + } + + return false; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isJWT.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isJWT.js new file mode 100644 index 00000000..c1afb7b6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isJWT.js @@ -0,0 +1,17 @@ +import assertString from './util/assertString'; +import isBase64 from './isBase64'; +export default function isJWT(str) { + assertString(str); + var dotSplit = str.split('.'); + var len = dotSplit.length; + + if (len > 3 || len < 2) { + return false; + } + + return dotSplit.reduce(function (acc, currElem) { + return acc && isBase64(currElem, { + urlSafe: true + }); + }, true); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isLatLong.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isLatLong.js new file mode 100644 index 00000000..7362c1d0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isLatLong.js @@ -0,0 +1,22 @@ +import assertString from './util/assertString'; +import merge from './util/merge'; +var lat = /^\(?[+-]?(90(\.0+)?|[1-8]?\d(\.\d+)?)$/; +var _long = /^\s?[+-]?(180(\.0+)?|1[0-7]\d(\.\d+)?|\d{1,2}(\.\d+)?)\)?$/; +var latDMS = /^(([1-8]?\d)\D+([1-5]?\d|60)\D+([1-5]?\d|60)(\.\d+)?|90\D+0\D+0)\D+[NSns]?$/i; +var longDMS = /^\s*([1-7]?\d{1,2}\D+([1-5]?\d|60)\D+([1-5]?\d|60)(\.\d+)?|180\D+0\D+0)\D+[EWew]?$/i; +var defaultLatLongOptions = { + checkDMS: false +}; +export default function isLatLong(str, options) { + assertString(str); + options = merge(options, defaultLatLongOptions); + if (!str.includes(',')) return false; + var pair = str.split(','); + if (pair[0].startsWith('(') && !pair[1].endsWith(')') || pair[1].endsWith(')') && !pair[0].startsWith('(')) return false; + + if (options.checkDMS) { + return latDMS.test(pair[0]) && longDMS.test(pair[1]); + } + + return lat.test(pair[0]) && _long.test(pair[1]); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isLength.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isLength.js new file mode 100644 index 00000000..3b1a5fdd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isLength.js @@ -0,0 +1,23 @@ +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +import assertString from './util/assertString'; +/* eslint-disable prefer-rest-params */ + +export default function isLength(str, options) { + assertString(str); + var min; + var max; + + if (_typeof(options) === 'object') { + min = options.min || 0; + max = options.max; + } else { + // backwards compatibility: isLength(str, min [, max]) + min = arguments[1] || 0; + max = arguments[2]; + } + + var surrogatePairs = str.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g) || []; + var len = str.length - surrogatePairs.length; + return len >= min && (typeof max === 'undefined' || len <= max); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isLicensePlate.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isLicensePlate.js new file mode 100644 index 00000000..c2a26bfb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isLicensePlate.js @@ -0,0 +1,44 @@ +import assertString from './util/assertString'; +var validators = { + 'cs-CZ': function csCZ(str) { + return /^(([ABCDEFHKIJKLMNPRSTUVXYZ]|[0-9])-?){5,8}$/.test(str); + }, + 'de-DE': function deDE(str) { + return /^((AW|UL|AK|GA|AÖ|LF|AZ|AM|AS|ZE|AN|AB|A|KG|KH|BA|EW|BZ|HY|KM|BT|HP|B|BC|BI|BO|FN|TT|ÜB|BN|AH|BS|FR|HB|ZZ|BB|BK|BÖ|OC|OK|CW|CE|C|CO|LH|CB|KW|LC|LN|DA|DI|DE|DH|SY|NÖ|DO|DD|DU|DN|D|EI|EA|EE|FI|EM|EL|EN|PF|ED|EF|ER|AU|ZP|E|ES|NT|EU|FL|FO|FT|FF|F|FS|FD|FÜ|GE|G|GI|GF|GS|ZR|GG|GP|GR|NY|ZI|GÖ|GZ|GT|HA|HH|HM|HU|WL|HZ|WR|RN|HK|HD|HN|HS|GK|HE|HF|RZ|HI|HG|HO|HX|IK|IL|IN|J|JL|KL|KA|KS|KF|KE|KI|KT|KO|KN|KR|KC|KU|K|LD|LL|LA|L|OP|LM|LI|LB|LU|LÖ|HL|LG|MD|GN|MZ|MA|ML|MR|MY|AT|DM|MC|NZ|RM|RG|MM|ME|MB|MI|FG|DL|HC|MW|RL|MK|MG|MÜ|WS|MH|M|MS|NU|NB|ND|NM|NK|NW|NR|NI|NF|DZ|EB|OZ|TG|TO|N|OA|GM|OB|CA|EH|FW|OF|OL|OE|OG|BH|LR|OS|AA|GD|OH|KY|NP|WK|PB|PA|PE|PI|PS|P|PM|PR|RA|RV|RE|R|H|SB|WN|RS|RD|RT|BM|NE|GV|RP|SU|GL|RO|GÜ|RH|EG|RW|PN|SK|MQ|RU|SZ|RI|SL|SM|SC|HR|FZ|VS|SW|SN|CR|SE|SI|SO|LP|SG|NH|SP|IZ|ST|BF|TE|HV|OD|SR|S|AC|DW|ZW|TF|TS|TR|TÜ|UM|PZ|TP|UE|UN|UH|MN|KK|VB|V|AE|PL|RC|VG|GW|PW|VR|VK|KB|WA|WT|BE|WM|WE|AP|MO|WW|FB|WZ|WI|WB|JE|WF|WO|W|WÜ|BL|Z|GC)[- ]?[A-Z]{1,2}[- ]?\d{1,4}|(AIC|FDB|ABG|SLN|SAW|KLZ|BUL|ESB|NAB|SUL|WST|ABI|AZE|BTF|KÖT|DKB|FEU|ROT|ALZ|SMÜ|WER|AUR|NOR|DÜW|BRK|HAB|TÖL|WOR|BAD|BAR|BER|BIW|EBS|KEM|MÜB|PEG|BGL|BGD|REI|WIL|BKS|BIR|WAT|BOR|BOH|BOT|BRB|BLK|HHM|NEB|NMB|WSF|LEO|HDL|WMS|WZL|BÜS|CHA|KÖZ|ROD|WÜM|CLP|NEC|COC|ZEL|COE|CUX|DAH|LDS|DEG|DEL|RSL|DLG|DGF|LAN|HEI|MED|DON|KIB|ROK|JÜL|MON|SLE|EBE|EIC|HIG|WBS|BIT|PRÜ|LIB|EMD|WIT|ERH|HÖS|ERZ|ANA|ASZ|MAB|MEK|STL|SZB|FDS|HCH|HOR|WOL|FRG|GRA|WOS|FRI|FFB|GAP|GER|BRL|CLZ|GTH|NOH|HGW|GRZ|LÖB|NOL|WSW|DUD|HMÜ|OHA|KRU|HAL|HAM|HBS|QLB|HVL|NAU|HAS|EBN|GEO|HOH|HDH|ERK|HER|WAN|HEF|ROF|HBN|ALF|HSK|USI|NAI|REH|SAN|KÜN|ÖHR|HOL|WAR|ARN|BRG|GNT|HOG|WOH|KEH|MAI|PAR|RID|ROL|KLE|GEL|KUS|KYF|ART|SDH|LDK|DIL|MAL|VIB|LER|BNA|GHA|GRM|MTL|WUR|LEV|LIF|STE|WEL|LIP|VAI|LUP|HGN|LBZ|LWL|PCH|STB|DAN|MKK|SLÜ|MSP|TBB|MGH|MTK|BIN|MSH|EIL|HET|SGH|BID|MYK|MSE|MST|MÜR|WRN|MEI|GRH|RIE|MZG|MIL|OBB|BED|FLÖ|MOL|FRW|SEE|SRB|AIB|MOS|BCH|ILL|SOB|NMS|NEA|SEF|UFF|NEW|VOH|NDH|TDO|NWM|GDB|GVM|WIS|NOM|EIN|GAN|LAU|HEB|OHV|OSL|SFB|ERB|LOS|BSK|KEL|BSB|MEL|WTL|OAL|FÜS|MOD|OHZ|OPR|BÜR|PAF|PLÖ|CAS|GLA|REG|VIT|ECK|SIM|GOA|EMS|DIZ|GOH|RÜD|SWA|NES|KÖN|MET|LRO|BÜZ|DBR|ROS|TET|HRO|ROW|BRV|HIP|PAN|GRI|SHK|EIS|SRO|SOK|LBS|SCZ|MER|QFT|SLF|SLS|HOM|SLK|ASL|BBG|SBK|SFT|SHG|MGN|MEG|ZIG|SAD|NEN|OVI|SHA|BLB|SIG|SON|SPN|FOR|GUB|SPB|IGB|WND|STD|STA|SDL|OBG|HST|BOG|SHL|PIR|FTL|SEB|SÖM|SÜW|TIR|SAB|TUT|ANG|SDT|LÜN|LSZ|MHL|VEC|VER|VIE|OVL|ANK|OVP|SBG|UEM|UER|WLG|GMN|NVP|RDG|RÜG|DAU|FKB|WAF|WAK|SLZ|WEN|SOG|APD|WUG|GUN|ESW|WIZ|WES|DIN|BRA|BÜD|WHV|HWI|GHC|WTM|WOB|WUN|MAK|SEL|OCH|HOT|WDA)[- ]?(([A-Z][- ]?\d{1,4})|([A-Z]{2}[- ]?\d{1,3})))[- ]?(E|H)?$/.test(str); + }, + 'de-LI': function deLI(str) { + return /^FL[- ]?\d{1,5}[UZ]?$/.test(str); + }, + 'fi-FI': function fiFI(str) { + return /^(?=.{4,7})(([A-Z]{1,3}|[0-9]{1,3})[\s-]?([A-Z]{1,3}|[0-9]{1,5}))$/.test(str); + }, + 'pt-PT': function ptPT(str) { + return /^([A-Z]{2}|[0-9]{2})[ -·]?([A-Z]{2}|[0-9]{2})[ -·]?([A-Z]{2}|[0-9]{2})$/.test(str); + }, + 'sq-AL': function sqAL(str) { + return /^[A-Z]{2}[- ]?((\d{3}[- ]?(([A-Z]{2})|T))|(R[- ]?\d{3}))$/.test(str); + }, + 'pt-BR': function ptBR(str) { + return /^[A-Z]{3}[ -]?[0-9][A-Z][0-9]{2}|[A-Z]{3}[ -]?[0-9]{4}$/.test(str); + } +}; +export default function isLicensePlate(str, locale) { + assertString(str); + + if (locale in validators) { + return validators[locale](str); + } else if (locale === 'any') { + for (var key in validators) { + /* eslint guard-for-in: 0 */ + var validator = validators[key]; + + if (validator(str)) { + return true; + } + } + + return false; + } + + throw new Error("Invalid locale '".concat(locale, "'")); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isLocale.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isLocale.js new file mode 100644 index 00000000..5033392a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isLocale.js @@ -0,0 +1,11 @@ +import assertString from './util/assertString'; +var localeReg = /^[A-Za-z]{2,4}([_-]([A-Za-z]{4}|[\d]{3}))?([_-]([A-Za-z]{2}|[\d]{3}))?$/; +export default function isLocale(str) { + assertString(str); + + if (str === 'en_US_POSIX' || str === 'ca_ES_VALENCIA') { + return true; + } + + return localeReg.test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isLowercase.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isLowercase.js new file mode 100644 index 00000000..03478564 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isLowercase.js @@ -0,0 +1,5 @@ +import assertString from './util/assertString'; +export default function isLowercase(str) { + assertString(str); + return str === str.toLowerCase(); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMACAddress.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMACAddress.js new file mode 100644 index 00000000..ac23503d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMACAddress.js @@ -0,0 +1,16 @@ +import assertString from './util/assertString'; +var macAddress = /^(?:[0-9a-fA-F]{2}([-:\s]))([0-9a-fA-F]{2}\1){4}([0-9a-fA-F]{2})$/; +var macAddressNoSeparators = /^([0-9a-fA-F]){12}$/; +var macAddressWithDots = /^([0-9a-fA-F]{4}\.){2}([0-9a-fA-F]{4})$/; +export default function isMACAddress(str, options) { + assertString(str); + /** + * @deprecated `no_colons` TODO: remove it in the next major + */ + + if (options && (options.no_colons || options.no_separators)) { + return macAddressNoSeparators.test(str); + } + + return macAddress.test(str) || macAddressWithDots.test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMD5.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMD5.js new file mode 100644 index 00000000..701ed7b3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMD5.js @@ -0,0 +1,6 @@ +import assertString from './util/assertString'; +var md5 = /^[a-f0-9]{32}$/; +export default function isMD5(str) { + assertString(str); + return md5.test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMagnetURI.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMagnetURI.js new file mode 100644 index 00000000..ee4c120a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMagnetURI.js @@ -0,0 +1,6 @@ +import assertString from './util/assertString'; +var magnetURI = /^magnet:\?xt(?:\.1)?=urn:(?:aich|bitprint|btih|ed2k|ed2khash|kzhash|md5|sha1|tree:tiger):[a-z0-9]{32}(?:[a-z0-9]{8})?($|&)/i; +export default function isMagnetURI(url) { + assertString(url); + return magnetURI.test(url.trim()); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMimeType.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMimeType.js new file mode 100644 index 00000000..cddaf00a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMimeType.js @@ -0,0 +1,39 @@ +import assertString from './util/assertString'; +/* + Checks if the provided string matches to a correct Media type format (MIME type) + + This function only checks is the string format follows the + etablished rules by the according RFC specifications. + This function supports 'charset' in textual media types + (https://tools.ietf.org/html/rfc6657). + + This function does not check against all the media types listed + by the IANA (https://www.iana.org/assignments/media-types/media-types.xhtml) + because of lightness purposes : it would require to include + all these MIME types in this librairy, which would weigh it + significantly. This kind of effort maybe is not worth for the use that + this function has in this entire librairy. + + More informations in the RFC specifications : + - https://tools.ietf.org/html/rfc2045 + - https://tools.ietf.org/html/rfc2046 + - https://tools.ietf.org/html/rfc7231#section-3.1.1.1 + - https://tools.ietf.org/html/rfc7231#section-3.1.1.5 +*/ +// Match simple MIME types +// NB : +// Subtype length must not exceed 100 characters. +// This rule does not comply to the RFC specs (what is the max length ?). + +var mimeTypeSimple = /^(application|audio|font|image|message|model|multipart|text|video)\/[a-zA-Z0-9\.\-\+]{1,100}$/i; // eslint-disable-line max-len +// Handle "charset" in "text/*" + +var mimeTypeText = /^text\/[a-zA-Z0-9\.\-\+]{1,100};\s?charset=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?$/i; // eslint-disable-line max-len +// Handle "boundary" in "multipart/*" + +var mimeTypeMultipart = /^multipart\/[a-zA-Z0-9\.\-\+]{1,100}(;\s?(boundary|charset)=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?){0,2}$/i; // eslint-disable-line max-len + +export default function isMimeType(str) { + assertString(str); + return mimeTypeSimple.test(str) || mimeTypeText.test(str) || mimeTypeMultipart.test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMobilePhone.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMobilePhone.js new file mode 100644 index 00000000..ae0f04fa --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMobilePhone.js @@ -0,0 +1,187 @@ +import assertString from './util/assertString'; +/* eslint-disable max-len */ + +var phones = { + 'am-AM': /^(\+?374|0)((10|[9|7][0-9])\d{6}$|[2-4]\d{7}$)/, + 'ar-AE': /^((\+?971)|0)?5[024568]\d{7}$/, + 'ar-BH': /^(\+?973)?(3|6)\d{7}$/, + 'ar-DZ': /^(\+?213|0)(5|6|7)\d{8}$/, + 'ar-LB': /^(\+?961)?((3|81)\d{6}|7\d{7})$/, + 'ar-EG': /^((\+?20)|0)?1[0125]\d{8}$/, + 'ar-IQ': /^(\+?964|0)?7[0-9]\d{8}$/, + 'ar-JO': /^(\+?962|0)?7[789]\d{7}$/, + 'ar-KW': /^(\+?965)[569]\d{7}$/, + 'ar-LY': /^((\+?218)|0)?(9[1-6]\d{7}|[1-8]\d{7,9})$/, + 'ar-MA': /^(?:(?:\+|00)212|0)[5-7]\d{8}$/, + 'ar-OM': /^((\+|00)968)?(9[1-9])\d{6}$/, + 'ar-PS': /^(\+?970|0)5[6|9](\d{7})$/, + 'ar-SA': /^(!?(\+?966)|0)?5\d{8}$/, + 'ar-SY': /^(!?(\+?963)|0)?9\d{8}$/, + 'ar-TN': /^(\+?216)?[2459]\d{7}$/, + 'az-AZ': /^(\+994|0)(5[015]|7[07]|99)\d{7}$/, + 'bs-BA': /^((((\+|00)3876)|06))((([0-3]|[5-6])\d{6})|(4\d{7}))$/, + 'be-BY': /^(\+?375)?(24|25|29|33|44)\d{7}$/, + 'bg-BG': /^(\+?359|0)?8[789]\d{7}$/, + 'bn-BD': /^(\+?880|0)1[13456789][0-9]{8}$/, + 'ca-AD': /^(\+376)?[346]\d{5}$/, + 'cs-CZ': /^(\+?420)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/, + 'da-DK': /^(\+?45)?\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{2}$/, + 'de-DE': /^((\+49|0)[1|3])([0|5][0-45-9]\d|6([23]|0\d?)|7([0-57-9]|6\d))\d{7,9}$/, + 'de-AT': /^(\+43|0)\d{1,4}\d{3,12}$/, + 'de-CH': /^(\+41|0)([1-9])\d{1,9}$/, + 'de-LU': /^(\+352)?((6\d1)\d{6})$/, + 'dv-MV': /^(\+?960)?(7[2-9]|91|9[3-9])\d{7}$/, + 'el-GR': /^(\+?30|0)?(69\d{8})$/, + 'en-AU': /^(\+?61|0)4\d{8}$/, + 'en-BM': /^(\+?1)?441(((3|7)\d{6}$)|(5[0-3][0-9]\d{4}$)|(59\d{5}))/, + 'en-GB': /^(\+?44|0)7\d{9}$/, + 'en-GG': /^(\+?44|0)1481\d{6}$/, + 'en-GH': /^(\+233|0)(20|50|24|54|27|57|26|56|23|28|55|59)\d{7}$/, + 'en-GY': /^(\+592|0)6\d{6}$/, + 'en-HK': /^(\+?852[-\s]?)?[456789]\d{3}[-\s]?\d{4}$/, + 'en-MO': /^(\+?853[-\s]?)?[6]\d{3}[-\s]?\d{4}$/, + 'en-IE': /^(\+?353|0)8[356789]\d{7}$/, + 'en-IN': /^(\+?91|0)?[6789]\d{9}$/, + 'en-KE': /^(\+?254|0)(7|1)\d{8}$/, + 'en-KI': /^((\+686|686)?)?( )?((6|7)(2|3|8)[0-9]{6})$/, + 'en-MT': /^(\+?356|0)?(99|79|77|21|27|22|25)[0-9]{6}$/, + 'en-MU': /^(\+?230|0)?\d{8}$/, + 'en-NA': /^(\+?264|0)(6|8)\d{7}$/, + 'en-NG': /^(\+?234|0)?[789]\d{9}$/, + 'en-NZ': /^(\+?64|0)[28]\d{7,9}$/, + 'en-PK': /^((00|\+)?92|0)3[0-6]\d{8}$/, + 'en-PH': /^(09|\+639)\d{9}$/, + 'en-RW': /^(\+?250|0)?[7]\d{8}$/, + 'en-SG': /^(\+65)?[3689]\d{7}$/, + 'en-SL': /^(\+?232|0)\d{8}$/, + 'en-TZ': /^(\+?255|0)?[67]\d{8}$/, + 'en-UG': /^(\+?256|0)?[7]\d{8}$/, + 'en-US': /^((\+1|1)?( |-)?)?(\([2-9][0-9]{2}\)|[2-9][0-9]{2})( |-)?([2-9][0-9]{2}( |-)?[0-9]{4})$/, + 'en-ZA': /^(\+?27|0)\d{9}$/, + 'en-ZM': /^(\+?26)?09[567]\d{7}$/, + 'en-ZW': /^(\+263)[0-9]{9}$/, + 'en-BW': /^(\+?267)?(7[1-8]{1})\d{6}$/, + 'es-AR': /^\+?549(11|[2368]\d)\d{8}$/, + 'es-BO': /^(\+?591)?(6|7)\d{7}$/, + 'es-CO': /^(\+?57)?3(0(0|1|2|4|5)|1\d|2[0-4]|5(0|1))\d{7}$/, + 'es-CL': /^(\+?56|0)[2-9]\d{1}\d{7}$/, + 'es-CR': /^(\+506)?[2-8]\d{7}$/, + 'es-CU': /^(\+53|0053)?5\d{7}/, + 'es-DO': /^(\+?1)?8[024]9\d{7}$/, + 'es-HN': /^(\+?504)?[9|8]\d{7}$/, + 'es-EC': /^(\+?593|0)([2-7]|9[2-9])\d{7}$/, + 'es-ES': /^(\+?34)?[6|7]\d{8}$/, + 'es-PE': /^(\+?51)?9\d{8}$/, + 'es-MX': /^(\+?52)?(1|01)?\d{10,11}$/, + 'es-PA': /^(\+?507)\d{7,8}$/, + 'es-PY': /^(\+?595|0)9[9876]\d{7}$/, + 'es-SV': /^(\+?503)?[67]\d{7}$/, + 'es-UY': /^(\+598|0)9[1-9][\d]{6}$/, + 'es-VE': /^(\+?58)?(2|4)\d{9}$/, + 'et-EE': /^(\+?372)?\s?(5|8[1-4])\s?([0-9]\s?){6,7}$/, + 'fa-IR': /^(\+?98[\-\s]?|0)9[0-39]\d[\-\s]?\d{3}[\-\s]?\d{4}$/, + 'fi-FI': /^(\+?358|0)\s?(4(0|1|2|4|5|6)?|50)\s?(\d\s?){4,8}\d$/, + 'fj-FJ': /^(\+?679)?\s?\d{3}\s?\d{4}$/, + 'fo-FO': /^(\+?298)?\s?\d{2}\s?\d{2}\s?\d{2}$/, + 'fr-BF': /^(\+226|0)[67]\d{7}$/, + 'fr-CM': /^(\+?237)6[0-9]{8}$/, + 'fr-FR': /^(\+?33|0)[67]\d{8}$/, + 'fr-GF': /^(\+?594|0|00594)[67]\d{8}$/, + 'fr-GP': /^(\+?590|0|00590)[67]\d{8}$/, + 'fr-MQ': /^(\+?596|0|00596)[67]\d{8}$/, + 'fr-PF': /^(\+?689)?8[789]\d{6}$/, + 'fr-RE': /^(\+?262|0|00262)[67]\d{8}$/, + 'he-IL': /^(\+972|0)([23489]|5[012345689]|77)[1-9]\d{6}$/, + 'hu-HU': /^(\+?36|06)(20|30|31|50|70)\d{7}$/, + 'id-ID': /^(\+?62|0)8(1[123456789]|2[1238]|3[1238]|5[12356789]|7[78]|9[56789]|8[123456789])([\s?|\d]{5,11})$/, + 'it-IT': /^(\+?39)?\s?3\d{2} ?\d{6,7}$/, + 'it-SM': /^((\+378)|(0549)|(\+390549)|(\+3780549))?6\d{5,9}$/, + 'ja-JP': /^(\+81[ \-]?(\(0\))?|0)[6789]0[ \-]?\d{4}[ \-]?\d{4}$/, + 'ka-GE': /^(\+?995)?(5|79)\d{7}$/, + 'kk-KZ': /^(\+?7|8)?7\d{9}$/, + 'kl-GL': /^(\+?299)?\s?\d{2}\s?\d{2}\s?\d{2}$/, + 'ko-KR': /^((\+?82)[ \-]?)?0?1([0|1|6|7|8|9]{1})[ \-]?\d{3,4}[ \-]?\d{4}$/, + 'lt-LT': /^(\+370|8)\d{8}$/, + 'lv-LV': /^(\+?371)2\d{7}$/, + 'ms-MY': /^(\+?6?01){1}(([0145]{1}(\-|\s)?\d{7,8})|([236789]{1}(\s|\-)?\d{7}))$/, + 'mz-MZ': /^(\+?258)?8[234567]\d{7}$/, + 'nb-NO': /^(\+?47)?[49]\d{7}$/, + 'ne-NP': /^(\+?977)?9[78]\d{8}$/, + 'nl-BE': /^(\+?32|0)4\d{8}$/, + 'nl-NL': /^(((\+|00)?31\(0\))|((\+|00)?31)|0)6{1}\d{8}$/, + 'nn-NO': /^(\+?47)?[49]\d{7}$/, + 'pl-PL': /^(\+?48)? ?[5-8]\d ?\d{3} ?\d{2} ?\d{2}$/, + 'pt-BR': /^((\+?55\ ?[1-9]{2}\ ?)|(\+?55\ ?\([1-9]{2}\)\ ?)|(0[1-9]{2}\ ?)|(\([1-9]{2}\)\ ?)|([1-9]{2}\ ?))((\d{4}\-?\d{4})|(9[2-9]{1}\d{3}\-?\d{4}))$/, + 'pt-PT': /^(\+?351)?9[1236]\d{7}$/, + 'pt-AO': /^(\+244)\d{9}$/, + 'ro-RO': /^(\+?4?0)\s?7\d{2}(\/|\s|\.|\-)?\d{3}(\s|\.|\-)?\d{3}$/, + 'ru-RU': /^(\+?7|8)?9\d{9}$/, + 'si-LK': /^(?:0|94|\+94)?(7(0|1|2|4|5|6|7|8)( |-)?)\d{7}$/, + 'sl-SI': /^(\+386\s?|0)(\d{1}\s?\d{3}\s?\d{2}\s?\d{2}|\d{2}\s?\d{3}\s?\d{3})$/, + 'sk-SK': /^(\+?421)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/, + 'sq-AL': /^(\+355|0)6[789]\d{6}$/, + 'sr-RS': /^(\+3816|06)[- \d]{5,9}$/, + 'sv-SE': /^(\+?46|0)[\s\-]?7[\s\-]?[02369]([\s\-]?\d){7}$/, + 'tg-TJ': /^(\+?992)?[5][5]\d{7}$/, + 'th-TH': /^(\+66|66|0)\d{9}$/, + 'tr-TR': /^(\+?90|0)?5\d{9}$/, + 'tk-TM': /^(\+993|993|8)\d{8}$/, + 'uk-UA': /^(\+?38|8)?0\d{9}$/, + 'uz-UZ': /^(\+?998)?(6[125-79]|7[1-69]|88|9\d)\d{7}$/, + 'vi-VN': /^((\+?84)|0)((3([2-9]))|(5([25689]))|(7([0|6-9]))|(8([1-9]))|(9([0-9])))([0-9]{7})$/, + 'zh-CN': /^((\+|00)86)?(1[3-9]|9[28])\d{9}$/, + 'zh-TW': /^(\+?886\-?|0)?9\d{8}$/, + 'dz-BT': /^(\+?975|0)?(17|16|77|02)\d{6}$/ +}; +/* eslint-enable max-len */ +// aliases + +phones['en-CA'] = phones['en-US']; +phones['fr-CA'] = phones['en-CA']; +phones['fr-BE'] = phones['nl-BE']; +phones['zh-HK'] = phones['en-HK']; +phones['zh-MO'] = phones['en-MO']; +phones['ga-IE'] = phones['en-IE']; +phones['fr-CH'] = phones['de-CH']; +phones['it-CH'] = phones['fr-CH']; +export default function isMobilePhone(str, locale, options) { + assertString(str); + + if (options && options.strictMode && !str.startsWith('+')) { + return false; + } + + if (Array.isArray(locale)) { + return locale.some(function (key) { + // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes + // istanbul ignore else + if (phones.hasOwnProperty(key)) { + var phone = phones[key]; + + if (phone.test(str)) { + return true; + } + } + + return false; + }); + } else if (locale in phones) { + return phones[locale].test(str); // alias falsey locale as 'any' + } else if (!locale || locale === 'any') { + for (var key in phones) { + // istanbul ignore else + if (phones.hasOwnProperty(key)) { + var phone = phones[key]; + + if (phone.test(str)) { + return true; + } + } + } + + return false; + } + + throw new Error("Invalid locale '".concat(locale, "'")); +} +export var locales = Object.keys(phones); \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMongoId.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMongoId.js new file mode 100644 index 00000000..fc87b89e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMongoId.js @@ -0,0 +1,6 @@ +import assertString from './util/assertString'; +import isHexadecimal from './isHexadecimal'; +export default function isMongoId(str) { + assertString(str); + return isHexadecimal(str) && str.length === 24; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMultibyte.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMultibyte.js new file mode 100644 index 00000000..7a13857f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isMultibyte.js @@ -0,0 +1,10 @@ +import assertString from './util/assertString'; +/* eslint-disable no-control-regex */ + +var multibyte = /[^\x00-\x7F]/; +/* eslint-enable no-control-regex */ + +export default function isMultibyte(str) { + assertString(str); + return multibyte.test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isNumeric.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isNumeric.js new file mode 100644 index 00000000..398fb82b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isNumeric.js @@ -0,0 +1,12 @@ +import assertString from './util/assertString'; +import { decimal } from './alpha'; +var numericNoSymbols = /^[0-9]+$/; +export default function isNumeric(str, options) { + assertString(str); + + if (options && options.no_symbols) { + return numericNoSymbols.test(str); + } + + return new RegExp("^[+-]?([0-9]*[".concat((options || {}).locale ? decimal[options.locale] : '.', "])?[0-9]+$")).test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isOctal.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isOctal.js new file mode 100644 index 00000000..3ec51dd9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isOctal.js @@ -0,0 +1,6 @@ +import assertString from './util/assertString'; +var octal = /^(0o)?[0-7]+$/i; +export default function isOctal(str) { + assertString(str); + return octal.test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isPassportNumber.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isPassportNumber.js new file mode 100644 index 00000000..f626e841 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isPassportNumber.js @@ -0,0 +1,126 @@ +import assertString from './util/assertString'; +/** + * Reference: + * https://en.wikipedia.org/ -- Wikipedia + * https://docs.microsoft.com/en-us/microsoft-365/compliance/eu-passport-number -- EU Passport Number + * https://countrycode.org/ -- Country Codes + */ + +var passportRegexByCountryCode = { + AM: /^[A-Z]{2}\d{7}$/, + // ARMENIA + AR: /^[A-Z]{3}\d{6}$/, + // ARGENTINA + AT: /^[A-Z]\d{7}$/, + // AUSTRIA + AU: /^[A-Z]\d{7}$/, + // AUSTRALIA + BE: /^[A-Z]{2}\d{6}$/, + // BELGIUM + BG: /^\d{9}$/, + // BULGARIA + BR: /^[A-Z]{2}\d{6}$/, + // BRAZIL + BY: /^[A-Z]{2}\d{7}$/, + // BELARUS + CA: /^[A-Z]{2}\d{6}$/, + // CANADA + CH: /^[A-Z]\d{7}$/, + // SWITZERLAND + CN: /^G\d{8}$|^E(?![IO])[A-Z0-9]\d{7}$/, + // CHINA [G=Ordinary, E=Electronic] followed by 8-digits, or E followed by any UPPERCASE letter (except I and O) followed by 7 digits + CY: /^[A-Z](\d{6}|\d{8})$/, + // CYPRUS + CZ: /^\d{8}$/, + // CZECH REPUBLIC + DE: /^[CFGHJKLMNPRTVWXYZ0-9]{9}$/, + // GERMANY + DK: /^\d{9}$/, + // DENMARK + DZ: /^\d{9}$/, + // ALGERIA + EE: /^([A-Z]\d{7}|[A-Z]{2}\d{7})$/, + // ESTONIA (K followed by 7-digits), e-passports have 2 UPPERCASE followed by 7 digits + ES: /^[A-Z0-9]{2}([A-Z0-9]?)\d{6}$/, + // SPAIN + FI: /^[A-Z]{2}\d{7}$/, + // FINLAND + FR: /^\d{2}[A-Z]{2}\d{5}$/, + // FRANCE + GB: /^\d{9}$/, + // UNITED KINGDOM + GR: /^[A-Z]{2}\d{7}$/, + // GREECE + HR: /^\d{9}$/, + // CROATIA + HU: /^[A-Z]{2}(\d{6}|\d{7})$/, + // HUNGARY + IE: /^[A-Z0-9]{2}\d{7}$/, + // IRELAND + IN: /^[A-Z]{1}-?\d{7}$/, + // INDIA + ID: /^[A-C]\d{7}$/, + // INDONESIA + IR: /^[A-Z]\d{8}$/, + // IRAN + IS: /^(A)\d{7}$/, + // ICELAND + IT: /^[A-Z0-9]{2}\d{7}$/, + // ITALY + JP: /^[A-Z]{2}\d{7}$/, + // JAPAN + KR: /^[MS]\d{8}$/, + // SOUTH KOREA, REPUBLIC OF KOREA, [S=PS Passports, M=PM Passports] + LT: /^[A-Z0-9]{8}$/, + // LITHUANIA + LU: /^[A-Z0-9]{8}$/, + // LUXEMBURG + LV: /^[A-Z0-9]{2}\d{7}$/, + // LATVIA + LY: /^[A-Z0-9]{8}$/, + // LIBYA + MT: /^\d{7}$/, + // MALTA + MZ: /^([A-Z]{2}\d{7})|(\d{2}[A-Z]{2}\d{5})$/, + // MOZAMBIQUE + MY: /^[AHK]\d{8}$/, + // MALAYSIA + NL: /^[A-Z]{2}[A-Z0-9]{6}\d$/, + // NETHERLANDS + PL: /^[A-Z]{2}\d{7}$/, + // POLAND + PT: /^[A-Z]\d{6}$/, + // PORTUGAL + RO: /^\d{8,9}$/, + // ROMANIA + RU: /^\d{9}$/, + // RUSSIAN FEDERATION + SE: /^\d{8}$/, + // SWEDEN + SL: /^(P)[A-Z]\d{7}$/, + // SLOVANIA + SK: /^[0-9A-Z]\d{7}$/, + // SLOVAKIA + TR: /^[A-Z]\d{8}$/, + // TURKEY + UA: /^[A-Z]{2}\d{6}$/, + // UKRAINE + US: /^\d{9}$/ // UNITED STATES + +}; +/** + * Check if str is a valid passport number + * relative to provided ISO Country Code. + * + * @param {string} str + * @param {string} countryCode + * @return {boolean} + */ + +export default function isPassportNumber(str, countryCode) { + assertString(str); + /** Remove All Whitespaces, Convert to UPPERCASE */ + + var normalizedStr = str.replace(/\s/g, '').toUpperCase(); + return countryCode.toUpperCase() in passportRegexByCountryCode && passportRegexByCountryCode[countryCode].test(normalizedStr); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isPort.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isPort.js new file mode 100644 index 00000000..6490cad2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isPort.js @@ -0,0 +1,7 @@ +import isInt from './isInt'; +export default function isPort(str) { + return isInt(str, { + min: 0, + max: 65535 + }); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isPostalCode.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isPostalCode.js new file mode 100644 index 00000000..359fa8f8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isPostalCode.js @@ -0,0 +1,96 @@ +import assertString from './util/assertString'; // common patterns + +var threeDigit = /^\d{3}$/; +var fourDigit = /^\d{4}$/; +var fiveDigit = /^\d{5}$/; +var sixDigit = /^\d{6}$/; +var patterns = { + AD: /^AD\d{3}$/, + AT: fourDigit, + AU: fourDigit, + AZ: /^AZ\d{4}$/, + BE: fourDigit, + BG: fourDigit, + BR: /^\d{5}-\d{3}$/, + BY: /2[1-4]{1}\d{4}$/, + CA: /^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJ-NPRSTV-Z][\s\-]?\d[ABCEGHJ-NPRSTV-Z]\d$/i, + CH: fourDigit, + CN: /^(0[1-7]|1[012356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[1-5]|8[1345]|9[09])\d{4}$/, + CZ: /^\d{3}\s?\d{2}$/, + DE: fiveDigit, + DK: fourDigit, + DO: fiveDigit, + DZ: fiveDigit, + EE: fiveDigit, + ES: /^(5[0-2]{1}|[0-4]{1}\d{1})\d{3}$/, + FI: fiveDigit, + FR: /^\d{2}\s?\d{3}$/, + GB: /^(gir\s?0aa|[a-z]{1,2}\d[\da-z]?\s?(\d[a-z]{2})?)$/i, + GR: /^\d{3}\s?\d{2}$/, + HR: /^([1-5]\d{4}$)/, + HT: /^HT\d{4}$/, + HU: fourDigit, + ID: fiveDigit, + IE: /^(?!.*(?:o))[A-Za-z]\d[\dw]\s\w{4}$/i, + IL: /^(\d{5}|\d{7})$/, + IN: /^((?!10|29|35|54|55|65|66|86|87|88|89)[1-9][0-9]{5})$/, + IR: /\b(?!(\d)\1{3})[13-9]{4}[1346-9][013-9]{5}\b/, + IS: threeDigit, + IT: fiveDigit, + JP: /^\d{3}\-\d{4}$/, + KE: fiveDigit, + KR: /^(\d{5}|\d{6})$/, + LI: /^(948[5-9]|949[0-7])$/, + LT: /^LT\-\d{5}$/, + LU: fourDigit, + LV: /^LV\-\d{4}$/, + LK: fiveDigit, + MX: fiveDigit, + MT: /^[A-Za-z]{3}\s{0,1}\d{4}$/, + MY: fiveDigit, + NL: /^\d{4}\s?[a-z]{2}$/i, + NO: fourDigit, + NP: /^(10|21|22|32|33|34|44|45|56|57)\d{3}$|^(977)$/i, + NZ: fourDigit, + PL: /^\d{2}\-\d{3}$/, + PR: /^00[679]\d{2}([ -]\d{4})?$/, + PT: /^\d{4}\-\d{3}?$/, + RO: sixDigit, + RU: sixDigit, + SA: fiveDigit, + SE: /^[1-9]\d{2}\s?\d{2}$/, + SG: sixDigit, + SI: fourDigit, + SK: /^\d{3}\s?\d{2}$/, + TH: fiveDigit, + TN: fourDigit, + TW: /^\d{3}(\d{2})?$/, + UA: fiveDigit, + US: /^\d{5}(-\d{4})?$/, + ZA: fourDigit, + ZM: fiveDigit +}; +export var locales = Object.keys(patterns); +export default function isPostalCode(str, locale) { + assertString(str); + + if (locale in patterns) { + return patterns[locale].test(str); + } else if (locale === 'any') { + for (var key in patterns) { + // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes + // istanbul ignore else + if (patterns.hasOwnProperty(key)) { + var pattern = patterns[key]; + + if (pattern.test(str)) { + return true; + } + } + } + + return false; + } + + throw new Error("Invalid locale '".concat(locale, "'")); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isRFC3339.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isRFC3339.js new file mode 100644 index 00000000..b9926ed9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isRFC3339.js @@ -0,0 +1,20 @@ +import assertString from './util/assertString'; +/* Based on https://tools.ietf.org/html/rfc3339#section-5.6 */ + +var dateFullYear = /[0-9]{4}/; +var dateMonth = /(0[1-9]|1[0-2])/; +var dateMDay = /([12]\d|0[1-9]|3[01])/; +var timeHour = /([01][0-9]|2[0-3])/; +var timeMinute = /[0-5][0-9]/; +var timeSecond = /([0-5][0-9]|60)/; +var timeSecFrac = /(\.[0-9]+)?/; +var timeNumOffset = new RegExp("[-+]".concat(timeHour.source, ":").concat(timeMinute.source)); +var timeOffset = new RegExp("([zZ]|".concat(timeNumOffset.source, ")")); +var partialTime = new RegExp("".concat(timeHour.source, ":").concat(timeMinute.source, ":").concat(timeSecond.source).concat(timeSecFrac.source)); +var fullDate = new RegExp("".concat(dateFullYear.source, "-").concat(dateMonth.source, "-").concat(dateMDay.source)); +var fullTime = new RegExp("".concat(partialTime.source).concat(timeOffset.source)); +var rfc3339 = new RegExp("^".concat(fullDate.source, "[ tT]").concat(fullTime.source, "$")); +export default function isRFC3339(str) { + assertString(str); + return rfc3339.test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isRgbColor.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isRgbColor.js new file mode 100644 index 00000000..2fe2fbb7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isRgbColor.js @@ -0,0 +1,15 @@ +import assertString from './util/assertString'; +var rgbColor = /^rgb\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){2}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\)$/; +var rgbaColor = /^rgba\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){3}(0?\.\d|1(\.0)?|0(\.0)?)\)$/; +var rgbColorPercent = /^rgb\((([0-9]%|[1-9][0-9]%|100%),){2}([0-9]%|[1-9][0-9]%|100%)\)/; +var rgbaColorPercent = /^rgba\((([0-9]%|[1-9][0-9]%|100%),){3}(0?\.\d|1(\.0)?|0(\.0)?)\)/; +export default function isRgbColor(str) { + var includePercentValues = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + assertString(str); + + if (!includePercentValues) { + return rgbColor.test(str) || rgbaColor.test(str); + } + + return rgbColor.test(str) || rgbaColor.test(str) || rgbColorPercent.test(str) || rgbaColorPercent.test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isSemVer.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isSemVer.js new file mode 100644 index 00000000..f6dd9bd7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isSemVer.js @@ -0,0 +1,14 @@ +import assertString from './util/assertString'; +import multilineRegexp from './util/multilineRegex'; +/** + * Regular Expression to match + * semantic versioning (SemVer) + * built from multi-line, multi-parts regexp + * Reference: https://semver.org/ + */ + +var semanticVersioningRegex = multilineRegexp(['^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)', '(?:-((?:0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*))*))', '?(?:\\+([0-9a-z-]+(?:\\.[0-9a-z-]+)*))?$'], 'i'); +export default function isSemVer(str) { + assertString(str); + return semanticVersioningRegex.test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isSlug.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isSlug.js new file mode 100644 index 00000000..b9659ef3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isSlug.js @@ -0,0 +1,6 @@ +import assertString from './util/assertString'; +var charsetRegex = /^[^\s-_](?!.*?[-_]{2,})[a-z0-9-\\][^\s]*[^-_\s]$/; +export default function isSlug(str) { + assertString(str); + return charsetRegex.test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isStrongPassword.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isStrongPassword.js new file mode 100644 index 00000000..0d556330 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isStrongPassword.js @@ -0,0 +1,101 @@ +import merge from './util/merge'; +import assertString from './util/assertString'; +var upperCaseRegex = /^[A-Z]$/; +var lowerCaseRegex = /^[a-z]$/; +var numberRegex = /^[0-9]$/; +var symbolRegex = /^[-#!$@%^&*()_+|~=`{}\[\]:";'<>?,.\/ ]$/; +var defaultOptions = { + minLength: 8, + minLowercase: 1, + minUppercase: 1, + minNumbers: 1, + minSymbols: 1, + returnScore: false, + pointsPerUnique: 1, + pointsPerRepeat: 0.5, + pointsForContainingLower: 10, + pointsForContainingUpper: 10, + pointsForContainingNumber: 10, + pointsForContainingSymbol: 10 +}; +/* Counts number of occurrences of each char in a string + * could be moved to util/ ? +*/ + +function countChars(str) { + var result = {}; + Array.from(str).forEach(function (_char) { + var curVal = result[_char]; + + if (curVal) { + result[_char] += 1; + } else { + result[_char] = 1; + } + }); + return result; +} +/* Return information about a password */ + + +function analyzePassword(password) { + var charMap = countChars(password); + var analysis = { + length: password.length, + uniqueChars: Object.keys(charMap).length, + uppercaseCount: 0, + lowercaseCount: 0, + numberCount: 0, + symbolCount: 0 + }; + Object.keys(charMap).forEach(function (_char2) { + /* istanbul ignore else */ + if (upperCaseRegex.test(_char2)) { + analysis.uppercaseCount += charMap[_char2]; + } else if (lowerCaseRegex.test(_char2)) { + analysis.lowercaseCount += charMap[_char2]; + } else if (numberRegex.test(_char2)) { + analysis.numberCount += charMap[_char2]; + } else if (symbolRegex.test(_char2)) { + analysis.symbolCount += charMap[_char2]; + } + }); + return analysis; +} + +function scorePassword(analysis, scoringOptions) { + var points = 0; + points += analysis.uniqueChars * scoringOptions.pointsPerUnique; + points += (analysis.length - analysis.uniqueChars) * scoringOptions.pointsPerRepeat; + + if (analysis.lowercaseCount > 0) { + points += scoringOptions.pointsForContainingLower; + } + + if (analysis.uppercaseCount > 0) { + points += scoringOptions.pointsForContainingUpper; + } + + if (analysis.numberCount > 0) { + points += scoringOptions.pointsForContainingNumber; + } + + if (analysis.symbolCount > 0) { + points += scoringOptions.pointsForContainingSymbol; + } + + return points; +} + +export default function isStrongPassword(str) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + assertString(str); + var analysis = analyzePassword(str); + options = merge(options || {}, defaultOptions); + + if (options.returnScore) { + return scorePassword(analysis, options); + } + + return analysis.length >= options.minLength && analysis.lowercaseCount >= options.minLowercase && analysis.uppercaseCount >= options.minUppercase && analysis.numberCount >= options.minNumbers && analysis.symbolCount >= options.minSymbols; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isSurrogatePair.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isSurrogatePair.js new file mode 100644 index 00000000..1e0efb2f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isSurrogatePair.js @@ -0,0 +1,6 @@ +import assertString from './util/assertString'; +var surrogatePair = /[\uD800-\uDBFF][\uDC00-\uDFFF]/; +export default function isSurrogatePair(str) { + assertString(str); + return surrogatePair.test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isTaxID.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isTaxID.js new file mode 100644 index 00000000..1107cc0a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isTaxID.js @@ -0,0 +1,1508 @@ +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +import assertString from './util/assertString'; +import * as algorithms from './util/algorithms'; +import isDate from './isDate'; +/** + * TIN Validation + * Validates Tax Identification Numbers (TINs) from the US, EU member states and the United Kingdom. + * + * EU-UK: + * National TIN validity is calculated using public algorithms as made available by DG TAXUD. + * + * See `https://ec.europa.eu/taxation_customs/tin/specs/FS-TIN%20Algorithms-Public.docx` for more information. + * + * US: + * An Employer Identification Number (EIN), also known as a Federal Tax Identification Number, + * is used to identify a business entity. + * + * NOTES: + * - Prefix 47 is being reserved for future use + * - Prefixes 26, 27, 45, 46 and 47 were previously assigned by the Philadelphia campus. + * + * See `http://www.irs.gov/Businesses/Small-Businesses-&-Self-Employed/How-EINs-are-Assigned-and-Valid-EIN-Prefixes` + * for more information. + */ +// Locale functions + +/* + * bg-BG validation function + * (Edinen graždanski nomer (EGN/ЕГН), persons only) + * Checks if birth date (first six digits) is valid and calculates check (last) digit + */ + +function bgBgCheck(tin) { + // Extract full year, normalize month and check birth date validity + var century_year = tin.slice(0, 2); + var month = parseInt(tin.slice(2, 4), 10); + + if (month > 40) { + month -= 40; + century_year = "20".concat(century_year); + } else if (month > 20) { + month -= 20; + century_year = "18".concat(century_year); + } else { + century_year = "19".concat(century_year); + } + + if (month < 10) { + month = "0".concat(month); + } + + var date = "".concat(century_year, "/").concat(month, "/").concat(tin.slice(4, 6)); + + if (!isDate(date, 'YYYY/MM/DD')) { + return false; + } // split digits into an array for further processing + + + var digits = tin.split('').map(function (a) { + return parseInt(a, 10); + }); // Calculate checksum by multiplying digits with fixed values + + var multip_lookup = [2, 4, 8, 5, 10, 9, 7, 3, 6]; + var checksum = 0; + + for (var i = 0; i < multip_lookup.length; i++) { + checksum += digits[i] * multip_lookup[i]; + } + + checksum = checksum % 11 === 10 ? 0 : checksum % 11; + return checksum === digits[9]; +} +/* + * cs-CZ validation function + * (Rodné číslo (RČ), persons only) + * Checks if birth date (first six digits) is valid and divisibility by 11 + * Material not in DG TAXUD document sourced from: + * -`https://lorenc.info/3MA381/overeni-spravnosti-rodneho-cisla.htm` + * -`https://www.mvcr.cz/clanek/rady-a-sluzby-dokumenty-rodne-cislo.aspx` + */ + + +function csCzCheck(tin) { + tin = tin.replace(/\W/, ''); // Extract full year from TIN length + + var full_year = parseInt(tin.slice(0, 2), 10); + + if (tin.length === 10) { + if (full_year < 54) { + full_year = "20".concat(full_year); + } else { + full_year = "19".concat(full_year); + } + } else { + if (tin.slice(6) === '000') { + return false; + } // Three-zero serial not assigned before 1954 + + + if (full_year < 54) { + full_year = "19".concat(full_year); + } else { + return false; // No 18XX years seen in any of the resources + } + } // Add missing zero if needed + + + if (full_year.length === 3) { + full_year = [full_year.slice(0, 2), '0', full_year.slice(2)].join(''); + } // Extract month from TIN and normalize + + + var month = parseInt(tin.slice(2, 4), 10); + + if (month > 50) { + month -= 50; + } + + if (month > 20) { + // Month-plus-twenty was only introduced in 2004 + if (parseInt(full_year, 10) < 2004) { + return false; + } + + month -= 20; + } + + if (month < 10) { + month = "0".concat(month); + } // Check date validity + + + var date = "".concat(full_year, "/").concat(month, "/").concat(tin.slice(4, 6)); + + if (!isDate(date, 'YYYY/MM/DD')) { + return false; + } // Verify divisibility by 11 + + + if (tin.length === 10) { + if (parseInt(tin, 10) % 11 !== 0) { + // Some numbers up to and including 1985 are still valid if + // check (last) digit equals 0 and modulo of first 9 digits equals 10 + var checkdigit = parseInt(tin.slice(0, 9), 10) % 11; + + if (parseInt(full_year, 10) < 1986 && checkdigit === 10) { + if (parseInt(tin.slice(9), 10) !== 0) { + return false; + } + } else { + return false; + } + } + } + + return true; +} +/* + * de-AT validation function + * (Abgabenkontonummer, persons/entities) + * Verify TIN validity by calling luhnCheck() + */ + + +function deAtCheck(tin) { + return algorithms.luhnCheck(tin); +} +/* + * de-DE validation function + * (Steueridentifikationsnummer (Steuer-IdNr.), persons only) + * Tests for single duplicate/triplicate value, then calculates ISO 7064 check (last) digit + * Partial implementation of spec (same result with both algorithms always) + */ + + +function deDeCheck(tin) { + // Split digits into an array for further processing + var digits = tin.split('').map(function (a) { + return parseInt(a, 10); + }); // Fill array with strings of number positions + + var occurences = []; + + for (var i = 0; i < digits.length - 1; i++) { + occurences.push(''); + + for (var j = 0; j < digits.length - 1; j++) { + if (digits[i] === digits[j]) { + occurences[i] += j; + } + } + } // Remove digits with one occurence and test for only one duplicate/triplicate + + + occurences = occurences.filter(function (a) { + return a.length > 1; + }); + + if (occurences.length !== 2 && occurences.length !== 3) { + return false; + } // In case of triplicate value only two digits are allowed next to each other + + + if (occurences[0].length === 3) { + var trip_locations = occurences[0].split('').map(function (a) { + return parseInt(a, 10); + }); + var recurrent = 0; // Amount of neighbour occurences + + for (var _i = 0; _i < trip_locations.length - 1; _i++) { + if (trip_locations[_i] + 1 === trip_locations[_i + 1]) { + recurrent += 1; + } + } + + if (recurrent === 2) { + return false; + } + } + + return algorithms.iso7064Check(tin); +} +/* + * dk-DK validation function + * (CPR-nummer (personnummer), persons only) + * Checks if birth date (first six digits) is valid and assigned to century (seventh) digit, + * and calculates check (last) digit + */ + + +function dkDkCheck(tin) { + tin = tin.replace(/\W/, ''); // Extract year, check if valid for given century digit and add century + + var year = parseInt(tin.slice(4, 6), 10); + var century_digit = tin.slice(6, 7); + + switch (century_digit) { + case '0': + case '1': + case '2': + case '3': + year = "19".concat(year); + break; + + case '4': + case '9': + if (year < 37) { + year = "20".concat(year); + } else { + year = "19".concat(year); + } + + break; + + default: + if (year < 37) { + year = "20".concat(year); + } else if (year > 58) { + year = "18".concat(year); + } else { + return false; + } + + break; + } // Add missing zero if needed + + + if (year.length === 3) { + year = [year.slice(0, 2), '0', year.slice(2)].join(''); + } // Check date validity + + + var date = "".concat(year, "/").concat(tin.slice(2, 4), "/").concat(tin.slice(0, 2)); + + if (!isDate(date, 'YYYY/MM/DD')) { + return false; + } // Split digits into an array for further processing + + + var digits = tin.split('').map(function (a) { + return parseInt(a, 10); + }); + var checksum = 0; + var weight = 4; // Multiply by weight and add to checksum + + for (var i = 0; i < 9; i++) { + checksum += digits[i] * weight; + weight -= 1; + + if (weight === 1) { + weight = 7; + } + } + + checksum %= 11; + + if (checksum === 1) { + return false; + } + + return checksum === 0 ? digits[9] === 0 : digits[9] === 11 - checksum; +} +/* + * el-CY validation function + * (Arithmos Forologikou Mitroou (AFM/ΑΦΜ), persons only) + * Verify TIN validity by calculating ASCII value of check (last) character + */ + + +function elCyCheck(tin) { + // split digits into an array for further processing + var digits = tin.slice(0, 8).split('').map(function (a) { + return parseInt(a, 10); + }); + var checksum = 0; // add digits in even places + + for (var i = 1; i < digits.length; i += 2) { + checksum += digits[i]; + } // add digits in odd places + + + for (var _i2 = 0; _i2 < digits.length; _i2 += 2) { + if (digits[_i2] < 2) { + checksum += 1 - digits[_i2]; + } else { + checksum += 2 * (digits[_i2] - 2) + 5; + + if (digits[_i2] > 4) { + checksum += 2; + } + } + } + + return String.fromCharCode(checksum % 26 + 65) === tin.charAt(8); +} +/* + * el-GR validation function + * (Arithmos Forologikou Mitroou (AFM/ΑΦΜ), persons/entities) + * Verify TIN validity by calculating check (last) digit + * Algorithm not in DG TAXUD document- sourced from: + * - `http://epixeirisi.gr/%CE%9A%CE%A1%CE%99%CE%A3%CE%99%CE%9C%CE%91-%CE%98%CE%95%CE%9C%CE%91%CE%A4%CE%91-%CE%A6%CE%9F%CE%A1%CE%9F%CE%9B%CE%9F%CE%93%CE%99%CE%91%CE%A3-%CE%9A%CE%91%CE%99-%CE%9B%CE%9F%CE%93%CE%99%CE%A3%CE%A4%CE%99%CE%9A%CE%97%CE%A3/23791/%CE%91%CF%81%CE%B9%CE%B8%CE%BC%CF%8C%CF%82-%CE%A6%CE%BF%CF%81%CE%BF%CE%BB%CE%BF%CE%B3%CE%B9%CE%BA%CE%BF%CF%8D-%CE%9C%CE%B7%CF%84%CF%81%CF%8E%CE%BF%CF%85` + */ + + +function elGrCheck(tin) { + // split digits into an array for further processing + var digits = tin.split('').map(function (a) { + return parseInt(a, 10); + }); + var checksum = 0; + + for (var i = 0; i < 8; i++) { + checksum += digits[i] * Math.pow(2, 8 - i); + } + + return checksum % 11 % 10 === digits[8]; +} +/* + * en-GB validation function (should go here if needed) + * (National Insurance Number (NINO) or Unique Taxpayer Reference (UTR), + * persons/entities respectively) + */ + +/* + * en-IE validation function + * (Personal Public Service Number (PPS No), persons only) + * Verify TIN validity by calculating check (second to last) character + */ + + +function enIeCheck(tin) { + var checksum = algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 7).map(function (a) { + return parseInt(a, 10); + }), 8); + + if (tin.length === 9 && tin[8] !== 'W') { + checksum += (tin[8].charCodeAt(0) - 64) * 9; + } + + checksum %= 23; + + if (checksum === 0) { + return tin[7].toUpperCase() === 'W'; + } + + return tin[7].toUpperCase() === String.fromCharCode(64 + checksum); +} // Valid US IRS campus prefixes + + +var enUsCampusPrefix = { + andover: ['10', '12'], + atlanta: ['60', '67'], + austin: ['50', '53'], + brookhaven: ['01', '02', '03', '04', '05', '06', '11', '13', '14', '16', '21', '22', '23', '25', '34', '51', '52', '54', '55', '56', '57', '58', '59', '65'], + cincinnati: ['30', '32', '35', '36', '37', '38', '61'], + fresno: ['15', '24'], + internet: ['20', '26', '27', '45', '46', '47'], + kansas: ['40', '44'], + memphis: ['94', '95'], + ogden: ['80', '90'], + philadelphia: ['33', '39', '41', '42', '43', '46', '48', '62', '63', '64', '66', '68', '71', '72', '73', '74', '75', '76', '77', '81', '82', '83', '84', '85', '86', '87', '88', '91', '92', '93', '98', '99'], + sba: ['31'] +}; // Return an array of all US IRS campus prefixes + +function enUsGetPrefixes() { + var prefixes = []; + + for (var location in enUsCampusPrefix) { + // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes + // istanbul ignore else + if (enUsCampusPrefix.hasOwnProperty(location)) { + prefixes.push.apply(prefixes, _toConsumableArray(enUsCampusPrefix[location])); + } + } + + return prefixes; +} +/* + * en-US validation function + * Verify that the TIN starts with a valid IRS campus prefix + */ + + +function enUsCheck(tin) { + return enUsGetPrefixes().indexOf(tin.substr(0, 2)) !== -1; +} +/* + * es-ES validation function + * (Documento Nacional de Identidad (DNI) + * or Número de Identificación de Extranjero (NIE), persons only) + * Verify TIN validity by calculating check (last) character + */ + + +function esEsCheck(tin) { + // Split characters into an array for further processing + var chars = tin.toUpperCase().split(''); // Replace initial letter if needed + + if (isNaN(parseInt(chars[0], 10)) && chars.length > 1) { + var lead_replace = 0; + + switch (chars[0]) { + case 'Y': + lead_replace = 1; + break; + + case 'Z': + lead_replace = 2; + break; + + default: + } + + chars.splice(0, 1, lead_replace); // Fill with zeros if smaller than proper + } else { + while (chars.length < 9) { + chars.unshift(0); + } + } // Calculate checksum and check according to lookup + + + var lookup = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E']; + chars = chars.join(''); + var checksum = parseInt(chars.slice(0, 8), 10) % 23; + return chars[8] === lookup[checksum]; +} +/* + * et-EE validation function + * (Isikukood (IK), persons only) + * Checks if birth date (century digit and six following) is valid and calculates check (last) digit + * Material not in DG TAXUD document sourced from: + * - `https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Estonia-TIN.pdf` + */ + + +function etEeCheck(tin) { + // Extract year and add century + var full_year = tin.slice(1, 3); + var century_digit = tin.slice(0, 1); + + switch (century_digit) { + case '1': + case '2': + full_year = "18".concat(full_year); + break; + + case '3': + case '4': + full_year = "19".concat(full_year); + break; + + default: + full_year = "20".concat(full_year); + break; + } // Check date validity + + + var date = "".concat(full_year, "/").concat(tin.slice(3, 5), "/").concat(tin.slice(5, 7)); + + if (!isDate(date, 'YYYY/MM/DD')) { + return false; + } // Split digits into an array for further processing + + + var digits = tin.split('').map(function (a) { + return parseInt(a, 10); + }); + var checksum = 0; + var weight = 1; // Multiply by weight and add to checksum + + for (var i = 0; i < 10; i++) { + checksum += digits[i] * weight; + weight += 1; + + if (weight === 10) { + weight = 1; + } + } // Do again if modulo 11 of checksum is 10 + + + if (checksum % 11 === 10) { + checksum = 0; + weight = 3; + + for (var _i3 = 0; _i3 < 10; _i3++) { + checksum += digits[_i3] * weight; + weight += 1; + + if (weight === 10) { + weight = 1; + } + } + + if (checksum % 11 === 10) { + return digits[10] === 0; + } + } + + return checksum % 11 === digits[10]; +} +/* + * fi-FI validation function + * (Henkilötunnus (HETU), persons only) + * Checks if birth date (first six digits plus century symbol) is valid + * and calculates check (last) digit + */ + + +function fiFiCheck(tin) { + // Extract year and add century + var full_year = tin.slice(4, 6); + var century_symbol = tin.slice(6, 7); + + switch (century_symbol) { + case '+': + full_year = "18".concat(full_year); + break; + + case '-': + full_year = "19".concat(full_year); + break; + + default: + full_year = "20".concat(full_year); + break; + } // Check date validity + + + var date = "".concat(full_year, "/").concat(tin.slice(2, 4), "/").concat(tin.slice(0, 2)); + + if (!isDate(date, 'YYYY/MM/DD')) { + return false; + } // Calculate check character + + + var checksum = parseInt(tin.slice(0, 6) + tin.slice(7, 10), 10) % 31; + + if (checksum < 10) { + return checksum === parseInt(tin.slice(10), 10); + } + + checksum -= 10; + var letters_lookup = ['A', 'B', 'C', 'D', 'E', 'F', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y']; + return letters_lookup[checksum] === tin.slice(10); +} +/* + * fr/nl-BE validation function + * (Numéro national (N.N.), persons only) + * Checks if birth date (first six digits) is valid and calculates check (last two) digits + */ + + +function frBeCheck(tin) { + // Zero month/day value is acceptable + if (tin.slice(2, 4) !== '00' || tin.slice(4, 6) !== '00') { + // Extract date from first six digits of TIN + var date = "".concat(tin.slice(0, 2), "/").concat(tin.slice(2, 4), "/").concat(tin.slice(4, 6)); + + if (!isDate(date, 'YY/MM/DD')) { + return false; + } + } + + var checksum = 97 - parseInt(tin.slice(0, 9), 10) % 97; + var checkdigits = parseInt(tin.slice(9, 11), 10); + + if (checksum !== checkdigits) { + checksum = 97 - parseInt("2".concat(tin.slice(0, 9)), 10) % 97; + + if (checksum !== checkdigits) { + return false; + } + } + + return true; +} +/* + * fr-FR validation function + * (Numéro fiscal de référence (numéro SPI), persons only) + * Verify TIN validity by calculating check (last three) digits + */ + + +function frFrCheck(tin) { + tin = tin.replace(/\s/g, ''); + var checksum = parseInt(tin.slice(0, 10), 10) % 511; + var checkdigits = parseInt(tin.slice(10, 13), 10); + return checksum === checkdigits; +} +/* + * fr/lb-LU validation function + * (numéro d’identification personnelle, persons only) + * Verify birth date validity and run Luhn and Verhoeff checks + */ + + +function frLuCheck(tin) { + // Extract date and check validity + var date = "".concat(tin.slice(0, 4), "/").concat(tin.slice(4, 6), "/").concat(tin.slice(6, 8)); + + if (!isDate(date, 'YYYY/MM/DD')) { + return false; + } // Run Luhn check + + + if (!algorithms.luhnCheck(tin.slice(0, 12))) { + return false; + } // Remove Luhn check digit and run Verhoeff check + + + return algorithms.verhoeffCheck("".concat(tin.slice(0, 11)).concat(tin[12])); +} +/* + * hr-HR validation function + * (Osobni identifikacijski broj (OIB), persons/entities) + * Verify TIN validity by calling iso7064Check(digits) + */ + + +function hrHrCheck(tin) { + return algorithms.iso7064Check(tin); +} +/* + * hu-HU validation function + * (Adóazonosító jel, persons only) + * Verify TIN validity by calculating check (last) digit + */ + + +function huHuCheck(tin) { + // split digits into an array for further processing + var digits = tin.split('').map(function (a) { + return parseInt(a, 10); + }); + var checksum = 8; + + for (var i = 1; i < 9; i++) { + checksum += digits[i] * (i + 1); + } + + return checksum % 11 === digits[9]; +} +/* + * lt-LT validation function (should go here if needed) + * (Asmens kodas, persons/entities respectively) + * Current validation check is alias of etEeCheck- same format applies + */ + +/* + * it-IT first/last name validity check + * Accepts it-IT TIN-encoded names as a three-element character array and checks their validity + * Due to lack of clarity between resources ("Are only Italian consonants used? + * What happens if a person has X in their name?" etc.) only two test conditions + * have been implemented: + * Vowels may only be followed by other vowels or an X character + * and X characters after vowels may only be followed by other X characters. + */ + + +function itItNameCheck(name) { + // true at the first occurence of a vowel + var vowelflag = false; // true at the first occurence of an X AFTER vowel + // (to properly handle last names with X as consonant) + + var xflag = false; + + for (var i = 0; i < 3; i++) { + if (!vowelflag && /[AEIOU]/.test(name[i])) { + vowelflag = true; + } else if (!xflag && vowelflag && name[i] === 'X') { + xflag = true; + } else if (i > 0) { + if (vowelflag && !xflag) { + if (!/[AEIOU]/.test(name[i])) { + return false; + } + } + + if (xflag) { + if (!/X/.test(name[i])) { + return false; + } + } + } + } + + return true; +} +/* + * it-IT validation function + * (Codice fiscale (TIN-IT), persons only) + * Verify name, birth date and codice catastale validity + * and calculate check character. + * Material not in DG-TAXUD document sourced from: + * `https://en.wikipedia.org/wiki/Italian_fiscal_code` + */ + + +function itItCheck(tin) { + // Capitalize and split characters into an array for further processing + var chars = tin.toUpperCase().split(''); // Check first and last name validity calling itItNameCheck() + + if (!itItNameCheck(chars.slice(0, 3))) { + return false; + } + + if (!itItNameCheck(chars.slice(3, 6))) { + return false; + } // Convert letters in number spaces back to numbers if any + + + var number_locations = [6, 7, 9, 10, 12, 13, 14]; + var number_replace = { + L: '0', + M: '1', + N: '2', + P: '3', + Q: '4', + R: '5', + S: '6', + T: '7', + U: '8', + V: '9' + }; + + for (var _i4 = 0, _number_locations = number_locations; _i4 < _number_locations.length; _i4++) { + var i = _number_locations[_i4]; + + if (chars[i] in number_replace) { + chars.splice(i, 1, number_replace[chars[i]]); + } + } // Extract month and day, and check date validity + + + var month_replace = { + A: '01', + B: '02', + C: '03', + D: '04', + E: '05', + H: '06', + L: '07', + M: '08', + P: '09', + R: '10', + S: '11', + T: '12' + }; + var month = month_replace[chars[8]]; + var day = parseInt(chars[9] + chars[10], 10); + + if (day > 40) { + day -= 40; + } + + if (day < 10) { + day = "0".concat(day); + } + + var date = "".concat(chars[6]).concat(chars[7], "/").concat(month, "/").concat(day); + + if (!isDate(date, 'YY/MM/DD')) { + return false; + } // Calculate check character by adding up even and odd characters as numbers + + + var checksum = 0; + + for (var _i5 = 1; _i5 < chars.length - 1; _i5 += 2) { + var char_to_int = parseInt(chars[_i5], 10); + + if (isNaN(char_to_int)) { + char_to_int = chars[_i5].charCodeAt(0) - 65; + } + + checksum += char_to_int; + } + + var odd_convert = { + // Maps of characters at odd places + A: 1, + B: 0, + C: 5, + D: 7, + E: 9, + F: 13, + G: 15, + H: 17, + I: 19, + J: 21, + K: 2, + L: 4, + M: 18, + N: 20, + O: 11, + P: 3, + Q: 6, + R: 8, + S: 12, + T: 14, + U: 16, + V: 10, + W: 22, + X: 25, + Y: 24, + Z: 23, + 0: 1, + 1: 0 + }; + + for (var _i6 = 0; _i6 < chars.length - 1; _i6 += 2) { + var _char_to_int = 0; + + if (chars[_i6] in odd_convert) { + _char_to_int = odd_convert[chars[_i6]]; + } else { + var multiplier = parseInt(chars[_i6], 10); + _char_to_int = 2 * multiplier + 1; + + if (multiplier > 4) { + _char_to_int += 2; + } + } + + checksum += _char_to_int; + } + + if (String.fromCharCode(65 + checksum % 26) !== chars[15]) { + return false; + } + + return true; +} +/* + * lv-LV validation function + * (Personas kods (PK), persons only) + * Check validity of birth date and calculate check (last) digit + * Support only for old format numbers (not starting with '32', issued before 2017/07/01) + * Material not in DG TAXUD document sourced from: + * `https://boot.ritakafija.lv/forums/index.php?/topic/88314-personas-koda-algoritms-%C4%8Deksumma/` + */ + + +function lvLvCheck(tin) { + tin = tin.replace(/\W/, ''); // Extract date from TIN + + var day = tin.slice(0, 2); + + if (day !== '32') { + // No date/checksum check if new format + var month = tin.slice(2, 4); + + if (month !== '00') { + // No date check if unknown month + var full_year = tin.slice(4, 6); + + switch (tin[6]) { + case '0': + full_year = "18".concat(full_year); + break; + + case '1': + full_year = "19".concat(full_year); + break; + + default: + full_year = "20".concat(full_year); + break; + } // Check date validity + + + var date = "".concat(full_year, "/").concat(tin.slice(2, 4), "/").concat(day); + + if (!isDate(date, 'YYYY/MM/DD')) { + return false; + } + } // Calculate check digit + + + var checksum = 1101; + var multip_lookup = [1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; + + for (var i = 0; i < tin.length - 1; i++) { + checksum -= parseInt(tin[i], 10) * multip_lookup[i]; + } + + return parseInt(tin[10], 10) === checksum % 11; + } + + return true; +} +/* + * mt-MT validation function + * (Identity Card Number or Unique Taxpayer Reference, persons/entities) + * Verify Identity Card Number structure (no other tests found) + */ + + +function mtMtCheck(tin) { + if (tin.length !== 9) { + // No tests for UTR + var chars = tin.toUpperCase().split(''); // Fill with zeros if smaller than proper + + while (chars.length < 8) { + chars.unshift(0); + } // Validate format according to last character + + + switch (tin[7]) { + case 'A': + case 'P': + if (parseInt(chars[6], 10) === 0) { + return false; + } + + break; + + default: + { + var first_part = parseInt(chars.join('').slice(0, 5), 10); + + if (first_part > 32000) { + return false; + } + + var second_part = parseInt(chars.join('').slice(5, 7), 10); + + if (first_part === second_part) { + return false; + } + } + } + } + + return true; +} +/* + * nl-NL validation function + * (Burgerservicenummer (BSN) or Rechtspersonen Samenwerkingsverbanden Informatie Nummer (RSIN), + * persons/entities respectively) + * Verify TIN validity by calculating check (last) digit (variant of MOD 11) + */ + + +function nlNlCheck(tin) { + return algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 8).map(function (a) { + return parseInt(a, 10); + }), 9) % 11 === parseInt(tin[8], 10); +} +/* + * pl-PL validation function + * (Powszechny Elektroniczny System Ewidencji Ludności (PESEL) + * or Numer identyfikacji podatkowej (NIP), persons/entities) + * Verify TIN validity by validating birth date (PESEL) and calculating check (last) digit + */ + + +function plPlCheck(tin) { + // NIP + if (tin.length === 10) { + // Calculate last digit by multiplying with lookup + var lookup = [6, 5, 7, 2, 3, 4, 5, 6, 7]; + var _checksum = 0; + + for (var i = 0; i < lookup.length; i++) { + _checksum += parseInt(tin[i], 10) * lookup[i]; + } + + _checksum %= 11; + + if (_checksum === 10) { + return false; + } + + return _checksum === parseInt(tin[9], 10); + } // PESEL + // Extract full year using month + + + var full_year = tin.slice(0, 2); + var month = parseInt(tin.slice(2, 4), 10); + + if (month > 80) { + full_year = "18".concat(full_year); + month -= 80; + } else if (month > 60) { + full_year = "22".concat(full_year); + month -= 60; + } else if (month > 40) { + full_year = "21".concat(full_year); + month -= 40; + } else if (month > 20) { + full_year = "20".concat(full_year); + month -= 20; + } else { + full_year = "19".concat(full_year); + } // Add leading zero to month if needed + + + if (month < 10) { + month = "0".concat(month); + } // Check date validity + + + var date = "".concat(full_year, "/").concat(month, "/").concat(tin.slice(4, 6)); + + if (!isDate(date, 'YYYY/MM/DD')) { + return false; + } // Calculate last digit by mulitplying with odd one-digit numbers except 5 + + + var checksum = 0; + var multiplier = 1; + + for (var _i7 = 0; _i7 < tin.length - 1; _i7++) { + checksum += parseInt(tin[_i7], 10) * multiplier % 10; + multiplier += 2; + + if (multiplier > 10) { + multiplier = 1; + } else if (multiplier === 5) { + multiplier += 2; + } + } + + checksum = 10 - checksum % 10; + return checksum === parseInt(tin[10], 10); +} +/* +* pt-BR validation function +* (Cadastro de Pessoas Físicas (CPF, persons) +* Cadastro Nacional de Pessoas Jurídicas (CNPJ, entities) +* Both inputs will be validated +*/ + + +function ptBrCheck(tin) { + if (tin.length === 11) { + var _sum; + + var remainder; + _sum = 0; + if ( // Reject known invalid CPFs + tin === '11111111111' || tin === '22222222222' || tin === '33333333333' || tin === '44444444444' || tin === '55555555555' || tin === '66666666666' || tin === '77777777777' || tin === '88888888888' || tin === '99999999999' || tin === '00000000000') return false; + + for (var i = 1; i <= 9; i++) { + _sum += parseInt(tin.substring(i - 1, i), 10) * (11 - i); + } + + remainder = _sum * 10 % 11; + if (remainder === 10) remainder = 0; + if (remainder !== parseInt(tin.substring(9, 10), 10)) return false; + _sum = 0; + + for (var _i8 = 1; _i8 <= 10; _i8++) { + _sum += parseInt(tin.substring(_i8 - 1, _i8), 10) * (12 - _i8); + } + + remainder = _sum * 10 % 11; + if (remainder === 10) remainder = 0; + if (remainder !== parseInt(tin.substring(10, 11), 10)) return false; + return true; + } + + if ( // Reject know invalid CNPJs + tin === '00000000000000' || tin === '11111111111111' || tin === '22222222222222' || tin === '33333333333333' || tin === '44444444444444' || tin === '55555555555555' || tin === '66666666666666' || tin === '77777777777777' || tin === '88888888888888' || tin === '99999999999999') { + return false; + } + + var length = tin.length - 2; + var identifiers = tin.substring(0, length); + var verificators = tin.substring(length); + var sum = 0; + var pos = length - 7; + + for (var _i9 = length; _i9 >= 1; _i9--) { + sum += identifiers.charAt(length - _i9) * pos; + pos -= 1; + + if (pos < 2) { + pos = 9; + } + } + + var result = sum % 11 < 2 ? 0 : 11 - sum % 11; + + if (result !== parseInt(verificators.charAt(0), 10)) { + return false; + } + + length += 1; + identifiers = tin.substring(0, length); + sum = 0; + pos = length - 7; + + for (var _i10 = length; _i10 >= 1; _i10--) { + sum += identifiers.charAt(length - _i10) * pos; + pos -= 1; + + if (pos < 2) { + pos = 9; + } + } + + result = sum % 11 < 2 ? 0 : 11 - sum % 11; + + if (result !== parseInt(verificators.charAt(1), 10)) { + return false; + } + + return true; +} +/* + * pt-PT validation function + * (Número de identificação fiscal (NIF), persons/entities) + * Verify TIN validity by calculating check (last) digit (variant of MOD 11) + */ + + +function ptPtCheck(tin) { + var checksum = 11 - algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 8).map(function (a) { + return parseInt(a, 10); + }), 9) % 11; + + if (checksum > 9) { + return parseInt(tin[8], 10) === 0; + } + + return checksum === parseInt(tin[8], 10); +} +/* + * ro-RO validation function + * (Cod Numeric Personal (CNP) or Cod de înregistrare fiscală (CIF), + * persons only) + * Verify CNP validity by calculating check (last) digit (test not found for CIF) + * Material not in DG TAXUD document sourced from: + * `https://en.wikipedia.org/wiki/National_identification_number#Romania` + */ + + +function roRoCheck(tin) { + if (tin.slice(0, 4) !== '9000') { + // No test found for this format + // Extract full year using century digit if possible + var full_year = tin.slice(1, 3); + + switch (tin[0]) { + case '1': + case '2': + full_year = "19".concat(full_year); + break; + + case '3': + case '4': + full_year = "18".concat(full_year); + break; + + case '5': + case '6': + full_year = "20".concat(full_year); + break; + + default: + } // Check date validity + + + var date = "".concat(full_year, "/").concat(tin.slice(3, 5), "/").concat(tin.slice(5, 7)); + + if (date.length === 8) { + if (!isDate(date, 'YY/MM/DD')) { + return false; + } + } else if (!isDate(date, 'YYYY/MM/DD')) { + return false; + } // Calculate check digit + + + var digits = tin.split('').map(function (a) { + return parseInt(a, 10); + }); + var multipliers = [2, 7, 9, 1, 4, 6, 3, 5, 8, 2, 7, 9]; + var checksum = 0; + + for (var i = 0; i < multipliers.length; i++) { + checksum += digits[i] * multipliers[i]; + } + + if (checksum % 11 === 10) { + return digits[12] === 1; + } + + return digits[12] === checksum % 11; + } + + return true; +} +/* + * sk-SK validation function + * (Rodné číslo (RČ) or bezvýznamové identifikačné číslo (BIČ), persons only) + * Checks validity of pre-1954 birth numbers (rodné číslo) only + * Due to the introduction of the pseudo-random BIČ it is not possible to test + * post-1954 birth numbers without knowing whether they are BIČ or RČ beforehand + */ + + +function skSkCheck(tin) { + if (tin.length === 9) { + tin = tin.replace(/\W/, ''); + + if (tin.slice(6) === '000') { + return false; + } // Three-zero serial not assigned before 1954 + // Extract full year from TIN length + + + var full_year = parseInt(tin.slice(0, 2), 10); + + if (full_year > 53) { + return false; + } + + if (full_year < 10) { + full_year = "190".concat(full_year); + } else { + full_year = "19".concat(full_year); + } // Extract month from TIN and normalize + + + var month = parseInt(tin.slice(2, 4), 10); + + if (month > 50) { + month -= 50; + } + + if (month < 10) { + month = "0".concat(month); + } // Check date validity + + + var date = "".concat(full_year, "/").concat(month, "/").concat(tin.slice(4, 6)); + + if (!isDate(date, 'YYYY/MM/DD')) { + return false; + } + } + + return true; +} +/* + * sl-SI validation function + * (Davčna številka, persons/entities) + * Verify TIN validity by calculating check (last) digit (variant of MOD 11) + */ + + +function slSiCheck(tin) { + var checksum = 11 - algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 7).map(function (a) { + return parseInt(a, 10); + }), 8) % 11; + + if (checksum === 10) { + return parseInt(tin[7], 10) === 0; + } + + return checksum === parseInt(tin[7], 10); +} +/* + * sv-SE validation function + * (Personnummer or samordningsnummer, persons only) + * Checks validity of birth date and calls luhnCheck() to validate check (last) digit + */ + + +function svSeCheck(tin) { + // Make copy of TIN and normalize to two-digit year form + var tin_copy = tin.slice(0); + + if (tin.length > 11) { + tin_copy = tin_copy.slice(2); + } // Extract date of birth + + + var full_year = ''; + var month = tin_copy.slice(2, 4); + var day = parseInt(tin_copy.slice(4, 6), 10); + + if (tin.length > 11) { + full_year = tin.slice(0, 4); + } else { + full_year = tin.slice(0, 2); + + if (tin.length === 11 && day < 60) { + // Extract full year from centenarian symbol + // Should work just fine until year 10000 or so + var current_year = new Date().getFullYear().toString(); + var current_century = parseInt(current_year.slice(0, 2), 10); + current_year = parseInt(current_year, 10); + + if (tin[6] === '-') { + if (parseInt("".concat(current_century).concat(full_year), 10) > current_year) { + full_year = "".concat(current_century - 1).concat(full_year); + } else { + full_year = "".concat(current_century).concat(full_year); + } + } else { + full_year = "".concat(current_century - 1).concat(full_year); + + if (current_year - parseInt(full_year, 10) < 100) { + return false; + } + } + } + } // Normalize day and check date validity + + + if (day > 60) { + day -= 60; + } + + if (day < 10) { + day = "0".concat(day); + } + + var date = "".concat(full_year, "/").concat(month, "/").concat(day); + + if (date.length === 8) { + if (!isDate(date, 'YY/MM/DD')) { + return false; + } + } else if (!isDate(date, 'YYYY/MM/DD')) { + return false; + } + + return algorithms.luhnCheck(tin.replace(/\W/, '')); +} // Locale lookup objects + +/* + * Tax id regex formats for various locales + * + * Where not explicitly specified in DG-TAXUD document both + * uppercase and lowercase letters are acceptable. + */ + + +var taxIdFormat = { + 'bg-BG': /^\d{10}$/, + 'cs-CZ': /^\d{6}\/{0,1}\d{3,4}$/, + 'de-AT': /^\d{9}$/, + 'de-DE': /^[1-9]\d{10}$/, + 'dk-DK': /^\d{6}-{0,1}\d{4}$/, + 'el-CY': /^[09]\d{7}[A-Z]$/, + 'el-GR': /^([0-4]|[7-9])\d{8}$/, + 'en-GB': /^\d{10}$|^(?!GB|NK|TN|ZZ)(?![DFIQUV])[A-Z](?![DFIQUVO])[A-Z]\d{6}[ABCD ]$/i, + 'en-IE': /^\d{7}[A-W][A-IW]{0,1}$/i, + 'en-US': /^\d{2}[- ]{0,1}\d{7}$/, + 'es-ES': /^(\d{0,8}|[XYZKLM]\d{7})[A-HJ-NP-TV-Z]$/i, + 'et-EE': /^[1-6]\d{6}(00[1-9]|0[1-9][0-9]|[1-6][0-9]{2}|70[0-9]|710)\d$/, + 'fi-FI': /^\d{6}[-+A]\d{3}[0-9A-FHJ-NPR-Y]$/i, + 'fr-BE': /^\d{11}$/, + 'fr-FR': /^[0-3]\d{12}$|^[0-3]\d\s\d{2}(\s\d{3}){3}$/, + // Conforms both to official spec and provided example + 'fr-LU': /^\d{13}$/, + 'hr-HR': /^\d{11}$/, + 'hu-HU': /^8\d{9}$/, + 'it-IT': /^[A-Z]{6}[L-NP-V0-9]{2}[A-EHLMPRST][L-NP-V0-9]{2}[A-ILMZ][L-NP-V0-9]{3}[A-Z]$/i, + 'lv-LV': /^\d{6}-{0,1}\d{5}$/, + // Conforms both to DG TAXUD spec and original research + 'mt-MT': /^\d{3,7}[APMGLHBZ]$|^([1-8])\1\d{7}$/i, + 'nl-NL': /^\d{9}$/, + 'pl-PL': /^\d{10,11}$/, + 'pt-BR': /(?:^\d{11}$)|(?:^\d{14}$)/, + 'pt-PT': /^\d{9}$/, + 'ro-RO': /^\d{13}$/, + 'sk-SK': /^\d{6}\/{0,1}\d{3,4}$/, + 'sl-SI': /^[1-9]\d{7}$/, + 'sv-SE': /^(\d{6}[-+]{0,1}\d{4}|(18|19|20)\d{6}[-+]{0,1}\d{4})$/ +}; // taxIdFormat locale aliases + +taxIdFormat['lb-LU'] = taxIdFormat['fr-LU']; +taxIdFormat['lt-LT'] = taxIdFormat['et-EE']; +taxIdFormat['nl-BE'] = taxIdFormat['fr-BE']; // Algorithmic tax id check functions for various locales + +var taxIdCheck = { + 'bg-BG': bgBgCheck, + 'cs-CZ': csCzCheck, + 'de-AT': deAtCheck, + 'de-DE': deDeCheck, + 'dk-DK': dkDkCheck, + 'el-CY': elCyCheck, + 'el-GR': elGrCheck, + 'en-IE': enIeCheck, + 'en-US': enUsCheck, + 'es-ES': esEsCheck, + 'et-EE': etEeCheck, + 'fi-FI': fiFiCheck, + 'fr-BE': frBeCheck, + 'fr-FR': frFrCheck, + 'fr-LU': frLuCheck, + 'hr-HR': hrHrCheck, + 'hu-HU': huHuCheck, + 'it-IT': itItCheck, + 'lv-LV': lvLvCheck, + 'mt-MT': mtMtCheck, + 'nl-NL': nlNlCheck, + 'pl-PL': plPlCheck, + 'pt-BR': ptBrCheck, + 'pt-PT': ptPtCheck, + 'ro-RO': roRoCheck, + 'sk-SK': skSkCheck, + 'sl-SI': slSiCheck, + 'sv-SE': svSeCheck +}; // taxIdCheck locale aliases + +taxIdCheck['lb-LU'] = taxIdCheck['fr-LU']; +taxIdCheck['lt-LT'] = taxIdCheck['et-EE']; +taxIdCheck['nl-BE'] = taxIdCheck['fr-BE']; // Regexes for locales where characters should be omitted before checking format + +var allsymbols = /[-\\\/!@#$%\^&\*\(\)\+\=\[\]]+/g; +var sanitizeRegexes = { + 'de-AT': allsymbols, + 'de-DE': /[\/\\]/g, + 'fr-BE': allsymbols +}; // sanitizeRegexes locale aliases + +sanitizeRegexes['nl-BE'] = sanitizeRegexes['fr-BE']; +/* + * Validator function + * Return true if the passed string is a valid tax identification number + * for the specified locale. + * Throw an error exception if the locale is not supported. + */ + +export default function isTaxID(str) { + var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US'; + assertString(str); // Copy TIN to avoid replacement if sanitized + + var strcopy = str.slice(0); + + if (locale in taxIdFormat) { + if (locale in sanitizeRegexes) { + strcopy = strcopy.replace(sanitizeRegexes[locale], ''); + } + + if (!taxIdFormat[locale].test(strcopy)) { + return false; + } + + if (locale in taxIdCheck) { + return taxIdCheck[locale](strcopy); + } // Fallthrough; not all locales have algorithmic checks + + + return true; + } + + throw new Error("Invalid locale '".concat(locale, "'")); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isURL.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isURL.js new file mode 100644 index 00000000..e73d25dd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isURL.js @@ -0,0 +1,193 @@ +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +import assertString from './util/assertString'; +import isFQDN from './isFQDN'; +import isIP from './isIP'; +import merge from './util/merge'; +/* +options for isURL method + +require_protocol - if set as true isURL will return false if protocol is not present in the URL +require_valid_protocol - isURL will check if the URL's protocol is present in the protocols option +protocols - valid protocols can be modified with this option +require_host - if set as false isURL will not check if host is present in the URL +require_port - if set as true isURL will check if port is present in the URL +allow_protocol_relative_urls - if set as true protocol relative URLs will be allowed +validate_length - if set as false isURL will skip string length validation (IE maximum is 2083) + +*/ + +var default_url_options = { + protocols: ['http', 'https', 'ftp'], + require_tld: true, + require_protocol: false, + require_host: true, + require_port: false, + require_valid_protocol: true, + allow_underscores: false, + allow_trailing_dot: false, + allow_protocol_relative_urls: false, + allow_fragments: true, + allow_query_components: true, + validate_length: true +}; +var wrapped_ipv6 = /^\[([^\]]+)\](?::([0-9]+))?$/; + +function isRegExp(obj) { + return Object.prototype.toString.call(obj) === '[object RegExp]'; +} + +function checkHost(host, matches) { + for (var i = 0; i < matches.length; i++) { + var match = matches[i]; + + if (host === match || isRegExp(match) && match.test(host)) { + return true; + } + } + + return false; +} + +export default function isURL(url, options) { + assertString(url); + + if (!url || /[\s<>]/.test(url)) { + return false; + } + + if (url.indexOf('mailto:') === 0) { + return false; + } + + options = merge(options, default_url_options); + + if (options.validate_length && url.length >= 2083) { + return false; + } + + if (!options.allow_fragments && url.includes('#')) { + return false; + } + + if (!options.allow_query_components && (url.includes('?') || url.includes('&'))) { + return false; + } + + var protocol, auth, host, hostname, port, port_str, split, ipv6; + split = url.split('#'); + url = split.shift(); + split = url.split('?'); + url = split.shift(); + split = url.split('://'); + + if (split.length > 1) { + protocol = split.shift().toLowerCase(); + + if (options.require_valid_protocol && options.protocols.indexOf(protocol) === -1) { + return false; + } + } else if (options.require_protocol) { + return false; + } else if (url.substr(0, 2) === '//') { + if (!options.allow_protocol_relative_urls) { + return false; + } + + split[0] = url.substr(2); + } + + url = split.join('://'); + + if (url === '') { + return false; + } + + split = url.split('/'); + url = split.shift(); + + if (url === '' && !options.require_host) { + return true; + } + + split = url.split('@'); + + if (split.length > 1) { + if (options.disallow_auth) { + return false; + } + + if (split[0] === '') { + return false; + } + + auth = split.shift(); + + if (auth.indexOf(':') >= 0 && auth.split(':').length > 2) { + return false; + } + + var _auth$split = auth.split(':'), + _auth$split2 = _slicedToArray(_auth$split, 2), + user = _auth$split2[0], + password = _auth$split2[1]; + + if (user === '' && password === '') { + return false; + } + } + + hostname = split.join('@'); + port_str = null; + ipv6 = null; + var ipv6_match = hostname.match(wrapped_ipv6); + + if (ipv6_match) { + host = ''; + ipv6 = ipv6_match[1]; + port_str = ipv6_match[2] || null; + } else { + split = hostname.split(':'); + host = split.shift(); + + if (split.length) { + port_str = split.join(':'); + } + } + + if (port_str !== null && port_str.length > 0) { + port = parseInt(port_str, 10); + + if (!/^[0-9]+$/.test(port_str) || port <= 0 || port > 65535) { + return false; + } + } else if (options.require_port) { + return false; + } + + if (options.host_whitelist) { + return checkHost(host, options.host_whitelist); + } + + if (!isIP(host) && !isFQDN(host, options) && (!ipv6 || !isIP(ipv6, 6))) { + return false; + } + + host = host || ipv6; + + if (options.host_blacklist && checkHost(host, options.host_blacklist)) { + return false; + } + + return true; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isUUID.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isUUID.js new file mode 100644 index 00000000..33ea1463 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isUUID.js @@ -0,0 +1,14 @@ +import assertString from './util/assertString'; +var uuid = { + 1: /^[0-9A-F]{8}-[0-9A-F]{4}-1[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i, + 2: /^[0-9A-F]{8}-[0-9A-F]{4}-2[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i, + 3: /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i, + 4: /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i, + 5: /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i, + all: /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i +}; +export default function isUUID(str, version) { + assertString(str); + var pattern = uuid[![undefined, null].includes(version) ? version : 'all']; + return !!pattern && pattern.test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isUppercase.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isUppercase.js new file mode 100644 index 00000000..fca87907 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isUppercase.js @@ -0,0 +1,5 @@ +import assertString from './util/assertString'; +export default function isUppercase(str) { + assertString(str); + return str === str.toUpperCase(); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isVAT.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isVAT.js new file mode 100644 index 00000000..a2112745 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isVAT.js @@ -0,0 +1,16 @@ +import assertString from './util/assertString'; +export var vatMatchers = { + GB: /^GB((\d{3} \d{4} ([0-8][0-9]|9[0-6]))|(\d{9} \d{3})|(((GD[0-4])|(HA[5-9]))[0-9]{2}))$/, + IT: /^(IT)?[0-9]{11}$/, + NL: /^(NL)?[0-9]{9}B[0-9]{2}$/ +}; +export default function isVAT(str, countryCode) { + assertString(str); + assertString(countryCode); + + if (countryCode in vatMatchers) { + return vatMatchers[countryCode].test(str); + } + + throw new Error("Invalid country code: '".concat(countryCode, "'")); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isVariableWidth.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isVariableWidth.js new file mode 100644 index 00000000..890119ea --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isVariableWidth.js @@ -0,0 +1,7 @@ +import assertString from './util/assertString'; +import { fullWidth } from './isFullWidth'; +import { halfWidth } from './isHalfWidth'; +export default function isVariableWidth(str) { + assertString(str); + return fullWidth.test(str) && halfWidth.test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isWhitelisted.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isWhitelisted.js new file mode 100644 index 00000000..2cbb95ce --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/isWhitelisted.js @@ -0,0 +1,12 @@ +import assertString from './util/assertString'; +export default function isWhitelisted(str, chars) { + assertString(str); + + for (var i = str.length - 1; i >= 0; i--) { + if (chars.indexOf(str[i]) === -1) { + return false; + } + } + + return true; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/ltrim.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/ltrim.js new file mode 100644 index 00000000..0ca3abb9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/ltrim.js @@ -0,0 +1,7 @@ +import assertString from './util/assertString'; +export default function ltrim(str, chars) { + assertString(str); // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping + + var pattern = chars ? new RegExp("^[".concat(chars.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), "]+"), 'g') : /^\s+/g; + return str.replace(pattern, ''); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/matches.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/matches.js new file mode 100644 index 00000000..7840b1c4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/matches.js @@ -0,0 +1,10 @@ +import assertString from './util/assertString'; +export default function matches(str, pattern, modifiers) { + assertString(str); + + if (Object.prototype.toString.call(pattern) !== '[object RegExp]') { + pattern = new RegExp(pattern, modifiers); + } + + return pattern.test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/normalizeEmail.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/normalizeEmail.js new file mode 100644 index 00000000..3563982f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/normalizeEmail.js @@ -0,0 +1,138 @@ +import merge from './util/merge'; +var default_normalize_email_options = { + // The following options apply to all email addresses + // Lowercases the local part of the email address. + // Please note this may violate RFC 5321 as per http://stackoverflow.com/a/9808332/192024). + // The domain is always lowercased, as per RFC 1035 + all_lowercase: true, + // The following conversions are specific to GMail + // Lowercases the local part of the GMail address (known to be case-insensitive) + gmail_lowercase: true, + // Removes dots from the local part of the email address, as that's ignored by GMail + gmail_remove_dots: true, + // Removes the subaddress (e.g. "+foo") from the email address + gmail_remove_subaddress: true, + // Conversts the googlemail.com domain to gmail.com + gmail_convert_googlemaildotcom: true, + // The following conversions are specific to Outlook.com / Windows Live / Hotmail + // Lowercases the local part of the Outlook.com address (known to be case-insensitive) + outlookdotcom_lowercase: true, + // Removes the subaddress (e.g. "+foo") from the email address + outlookdotcom_remove_subaddress: true, + // The following conversions are specific to Yahoo + // Lowercases the local part of the Yahoo address (known to be case-insensitive) + yahoo_lowercase: true, + // Removes the subaddress (e.g. "-foo") from the email address + yahoo_remove_subaddress: true, + // The following conversions are specific to Yandex + // Lowercases the local part of the Yandex address (known to be case-insensitive) + yandex_lowercase: true, + // The following conversions are specific to iCloud + // Lowercases the local part of the iCloud address (known to be case-insensitive) + icloud_lowercase: true, + // Removes the subaddress (e.g. "+foo") from the email address + icloud_remove_subaddress: true +}; // List of domains used by iCloud + +var icloud_domains = ['icloud.com', 'me.com']; // List of domains used by Outlook.com and its predecessors +// This list is likely incomplete. +// Partial reference: +// https://blogs.office.com/2013/04/17/outlook-com-gets-two-step-verification-sign-in-by-alias-and-new-international-domains/ + +var outlookdotcom_domains = ['hotmail.at', 'hotmail.be', 'hotmail.ca', 'hotmail.cl', 'hotmail.co.il', 'hotmail.co.nz', 'hotmail.co.th', 'hotmail.co.uk', 'hotmail.com', 'hotmail.com.ar', 'hotmail.com.au', 'hotmail.com.br', 'hotmail.com.gr', 'hotmail.com.mx', 'hotmail.com.pe', 'hotmail.com.tr', 'hotmail.com.vn', 'hotmail.cz', 'hotmail.de', 'hotmail.dk', 'hotmail.es', 'hotmail.fr', 'hotmail.hu', 'hotmail.id', 'hotmail.ie', 'hotmail.in', 'hotmail.it', 'hotmail.jp', 'hotmail.kr', 'hotmail.lv', 'hotmail.my', 'hotmail.ph', 'hotmail.pt', 'hotmail.sa', 'hotmail.sg', 'hotmail.sk', 'live.be', 'live.co.uk', 'live.com', 'live.com.ar', 'live.com.mx', 'live.de', 'live.es', 'live.eu', 'live.fr', 'live.it', 'live.nl', 'msn.com', 'outlook.at', 'outlook.be', 'outlook.cl', 'outlook.co.il', 'outlook.co.nz', 'outlook.co.th', 'outlook.com', 'outlook.com.ar', 'outlook.com.au', 'outlook.com.br', 'outlook.com.gr', 'outlook.com.pe', 'outlook.com.tr', 'outlook.com.vn', 'outlook.cz', 'outlook.de', 'outlook.dk', 'outlook.es', 'outlook.fr', 'outlook.hu', 'outlook.id', 'outlook.ie', 'outlook.in', 'outlook.it', 'outlook.jp', 'outlook.kr', 'outlook.lv', 'outlook.my', 'outlook.ph', 'outlook.pt', 'outlook.sa', 'outlook.sg', 'outlook.sk', 'passport.com']; // List of domains used by Yahoo Mail +// This list is likely incomplete + +var yahoo_domains = ['rocketmail.com', 'yahoo.ca', 'yahoo.co.uk', 'yahoo.com', 'yahoo.de', 'yahoo.fr', 'yahoo.in', 'yahoo.it', 'ymail.com']; // List of domains used by yandex.ru + +var yandex_domains = ['yandex.ru', 'yandex.ua', 'yandex.kz', 'yandex.com', 'yandex.by', 'ya.ru']; // replace single dots, but not multiple consecutive dots + +function dotsReplacer(match) { + if (match.length > 1) { + return match; + } + + return ''; +} + +export default function normalizeEmail(email, options) { + options = merge(options, default_normalize_email_options); + var raw_parts = email.split('@'); + var domain = raw_parts.pop(); + var user = raw_parts.join('@'); + var parts = [user, domain]; // The domain is always lowercased, as it's case-insensitive per RFC 1035 + + parts[1] = parts[1].toLowerCase(); + + if (parts[1] === 'gmail.com' || parts[1] === 'googlemail.com') { + // Address is GMail + if (options.gmail_remove_subaddress) { + parts[0] = parts[0].split('+')[0]; + } + + if (options.gmail_remove_dots) { + // this does not replace consecutive dots like example..email@gmail.com + parts[0] = parts[0].replace(/\.+/g, dotsReplacer); + } + + if (!parts[0].length) { + return false; + } + + if (options.all_lowercase || options.gmail_lowercase) { + parts[0] = parts[0].toLowerCase(); + } + + parts[1] = options.gmail_convert_googlemaildotcom ? 'gmail.com' : parts[1]; + } else if (icloud_domains.indexOf(parts[1]) >= 0) { + // Address is iCloud + if (options.icloud_remove_subaddress) { + parts[0] = parts[0].split('+')[0]; + } + + if (!parts[0].length) { + return false; + } + + if (options.all_lowercase || options.icloud_lowercase) { + parts[0] = parts[0].toLowerCase(); + } + } else if (outlookdotcom_domains.indexOf(parts[1]) >= 0) { + // Address is Outlook.com + if (options.outlookdotcom_remove_subaddress) { + parts[0] = parts[0].split('+')[0]; + } + + if (!parts[0].length) { + return false; + } + + if (options.all_lowercase || options.outlookdotcom_lowercase) { + parts[0] = parts[0].toLowerCase(); + } + } else if (yahoo_domains.indexOf(parts[1]) >= 0) { + // Address is Yahoo + if (options.yahoo_remove_subaddress) { + var components = parts[0].split('-'); + parts[0] = components.length > 1 ? components.slice(0, -1).join('-') : components[0]; + } + + if (!parts[0].length) { + return false; + } + + if (options.all_lowercase || options.yahoo_lowercase) { + parts[0] = parts[0].toLowerCase(); + } + } else if (yandex_domains.indexOf(parts[1]) >= 0) { + if (options.all_lowercase || options.yandex_lowercase) { + parts[0] = parts[0].toLowerCase(); + } + + parts[1] = 'yandex.ru'; // all yandex domains are equal, 1st preferred + } else if (options.all_lowercase) { + // Any other address + parts[0] = parts[0].toLowerCase(); + } + + return parts.join('@'); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/rtrim.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/rtrim.js new file mode 100644 index 00000000..a02f5c41 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/rtrim.js @@ -0,0 +1,19 @@ +import assertString from './util/assertString'; +export default function rtrim(str, chars) { + assertString(str); + + if (chars) { + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping + var pattern = new RegExp("[".concat(chars.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), "]+$"), 'g'); + return str.replace(pattern, ''); + } // Use a faster and more safe than regex trim method https://blog.stevenlevithan.com/archives/faster-trim-javascript + + + var strIndex = str.length - 1; + + while (/\s/.test(str.charAt(strIndex))) { + strIndex -= 1; + } + + return str.slice(0, strIndex + 1); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/stripLow.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/stripLow.js new file mode 100644 index 00000000..c7984255 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/stripLow.js @@ -0,0 +1,7 @@ +import assertString from './util/assertString'; +import blacklist from './blacklist'; +export default function stripLow(str, keep_new_lines) { + assertString(str); + var chars = keep_new_lines ? '\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F\\x7F' : '\\x00-\\x1F\\x7F'; + return blacklist(str, chars); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/toBoolean.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/toBoolean.js new file mode 100644 index 00000000..25e1eac7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/toBoolean.js @@ -0,0 +1,10 @@ +import assertString from './util/assertString'; +export default function toBoolean(str, strict) { + assertString(str); + + if (strict) { + return str === '1' || /^true$/i.test(str); + } + + return str !== '0' && !/^false$/i.test(str) && str !== ''; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/toDate.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/toDate.js new file mode 100644 index 00000000..62422a31 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/toDate.js @@ -0,0 +1,6 @@ +import assertString from './util/assertString'; +export default function toDate(date) { + assertString(date); + date = Date.parse(date); + return !isNaN(date) ? new Date(date) : null; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/toFloat.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/toFloat.js new file mode 100644 index 00000000..f21163df --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/toFloat.js @@ -0,0 +1,5 @@ +import isFloat from './isFloat'; +export default function toFloat(str) { + if (!isFloat(str)) return NaN; + return parseFloat(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/toInt.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/toInt.js new file mode 100644 index 00000000..22d566e7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/toInt.js @@ -0,0 +1,5 @@ +import assertString from './util/assertString'; +export default function toInt(str, radix) { + assertString(str); + return parseInt(str, radix || 10); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/trim.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/trim.js new file mode 100644 index 00000000..b9b8fa0d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/trim.js @@ -0,0 +1,5 @@ +import rtrim from './rtrim'; +import ltrim from './ltrim'; +export default function trim(str, chars) { + return rtrim(ltrim(str, chars), chars); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/unescape.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/unescape.js new file mode 100644 index 00000000..8ff45f58 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/unescape.js @@ -0,0 +1,7 @@ +import assertString from './util/assertString'; +export default function unescape(str) { + assertString(str); + return str.replace(/"/g, '"').replace(/'/g, "'").replace(/</g, '<').replace(/>/g, '>').replace(///g, '/').replace(/\/g, '\\').replace(/`/g, '`').replace(/&/g, '&'); // & replacement has to be the last one to prevent + // bugs with intermediate strings containing escape sequences + // See: https://github.com/validatorjs/validator.js/issues/1827 +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/algorithms.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/algorithms.js new file mode 100644 index 00000000..eca8d6dc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/algorithms.js @@ -0,0 +1,88 @@ +/** + * Algorithmic validation functions + * May be used as is or implemented in the workflow of other validators. + */ + +/* + * ISO 7064 validation function + * Called with a string of numbers (incl. check digit) + * to validate according to ISO 7064 (MOD 11, 10). + */ +export function iso7064Check(str) { + var checkvalue = 10; + + for (var i = 0; i < str.length - 1; i++) { + checkvalue = (parseInt(str[i], 10) + checkvalue) % 10 === 0 ? 10 * 2 % 11 : (parseInt(str[i], 10) + checkvalue) % 10 * 2 % 11; + } + + checkvalue = checkvalue === 1 ? 0 : 11 - checkvalue; + return checkvalue === parseInt(str[10], 10); +} +/* + * Luhn (mod 10) validation function + * Called with a string of numbers (incl. check digit) + * to validate according to the Luhn algorithm. + */ + +export function luhnCheck(str) { + var checksum = 0; + var second = false; + + for (var i = str.length - 1; i >= 0; i--) { + if (second) { + var product = parseInt(str[i], 10) * 2; + + if (product > 9) { + // sum digits of product and add to checksum + checksum += product.toString().split('').map(function (a) { + return parseInt(a, 10); + }).reduce(function (a, b) { + return a + b; + }, 0); + } else { + checksum += product; + } + } else { + checksum += parseInt(str[i], 10); + } + + second = !second; + } + + return checksum % 10 === 0; +} +/* + * Reverse TIN multiplication and summation helper function + * Called with an array of single-digit integers and a base multiplier + * to calculate the sum of the digits multiplied in reverse. + * Normally used in variations of MOD 11 algorithmic checks. + */ + +export function reverseMultiplyAndSum(digits, base) { + var total = 0; + + for (var i = 0; i < digits.length; i++) { + total += digits[i] * (base - i); + } + + return total; +} +/* + * Verhoeff validation helper function + * Called with a string of numbers + * to validate according to the Verhoeff algorithm. + */ + +export function verhoeffCheck(str) { + var d_table = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 0, 6, 7, 8, 9, 5], [2, 3, 4, 0, 1, 7, 8, 9, 5, 6], [3, 4, 0, 1, 2, 8, 9, 5, 6, 7], [4, 0, 1, 2, 3, 9, 5, 6, 7, 8], [5, 9, 8, 7, 6, 0, 4, 3, 2, 1], [6, 5, 9, 8, 7, 1, 0, 4, 3, 2], [7, 6, 5, 9, 8, 2, 1, 0, 4, 3], [8, 7, 6, 5, 9, 3, 2, 1, 0, 4], [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]]; + var p_table = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 5, 7, 6, 2, 8, 3, 0, 9, 4], [5, 8, 0, 3, 7, 9, 6, 1, 4, 2], [8, 9, 1, 6, 0, 4, 3, 5, 2, 7], [9, 4, 5, 3, 1, 2, 6, 8, 7, 0], [4, 2, 8, 6, 5, 7, 3, 9, 0, 1], [2, 7, 9, 3, 8, 0, 6, 4, 1, 5], [7, 0, 4, 6, 9, 1, 3, 2, 5, 8]]; // Copy (to prevent replacement) and reverse + + var str_copy = str.split('').reverse().join(''); + var checksum = 0; + + for (var i = 0; i < str_copy.length; i++) { + checksum = d_table[checksum][p_table[i % 8][parseInt(str_copy[i], 10)]]; + } + + return checksum === 0; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/assertString.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/assertString.js new file mode 100644 index 00000000..f7eced53 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/assertString.js @@ -0,0 +1,12 @@ +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +export default function assertString(input) { + var isString = typeof input === 'string' || input instanceof String; + + if (!isString) { + var invalidType = _typeof(input); + + if (input === null) invalidType = 'null';else if (invalidType === 'object') invalidType = input.constructor.name; + throw new TypeError("Expected a string but received a ".concat(invalidType)); + } +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/includes.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/includes.js new file mode 100644 index 00000000..b01c6924 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/includes.js @@ -0,0 +1,7 @@ +var includes = function includes(arr, val) { + return arr.some(function (arrVal) { + return val === arrVal; + }); +}; + +export default includes; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/merge.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/merge.js new file mode 100644 index 00000000..0d1f6997 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/merge.js @@ -0,0 +1,12 @@ +export default function merge() { + var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var defaults = arguments.length > 1 ? arguments[1] : undefined; + + for (var key in defaults) { + if (typeof obj[key] === 'undefined') { + obj[key] = defaults[key]; + } + } + + return obj; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/multilineRegex.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/multilineRegex.js new file mode 100644 index 00000000..fed25a37 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/multilineRegex.js @@ -0,0 +1,12 @@ +/** + * Build RegExp object from an array + * of multiple/multi-line regexp parts + * + * @param {string[]} parts + * @param {string} flags + * @return {object} - RegExp object + */ +export default function multilineRegexp(parts, flags) { + var regexpAsStringLiteral = parts.join(''); + return new RegExp(regexpAsStringLiteral, flags); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/toString.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/toString.js new file mode 100644 index 00000000..f483fa4f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/toString.js @@ -0,0 +1,15 @@ +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +export default function toString(input) { + if (_typeof(input) === 'object' && input !== null) { + if (typeof input.toString === 'function') { + input = input.toString(); + } else { + input = '[object Object]'; + } + } else if (input === null || typeof input === 'undefined' || isNaN(input) && !input.length) { + input = ''; + } + + return String(input); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/typeOf.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/typeOf.js new file mode 100644 index 00000000..b2ce41ab --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/util/typeOf.js @@ -0,0 +1,10 @@ +/** + * Better way to handle type checking + * null, {}, array and date are objects, which confuses + */ +export default function typeOf(input) { + var rawObject = Object.prototype.toString.call(input).toLowerCase(); + var typeOfRegex = /\[object (.*)]/g; + var type = typeOfRegex.exec(rawObject)[1]; + return type; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/whitelist.js b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/whitelist.js new file mode 100644 index 00000000..244881b4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/es/lib/whitelist.js @@ -0,0 +1,5 @@ +import assertString from './util/assertString'; +export default function whitelist(str, chars) { + assertString(str); + return str.replace(new RegExp("[^".concat(chars, "]+"), 'g'), ''); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/index.js b/srcs/requirements/nestjs/api_back/node_modules/validator/index.js new file mode 100644 index 00000000..36e33a09 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/index.js @@ -0,0 +1,309 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _toDate = _interopRequireDefault(require("./lib/toDate")); + +var _toFloat = _interopRequireDefault(require("./lib/toFloat")); + +var _toInt = _interopRequireDefault(require("./lib/toInt")); + +var _toBoolean = _interopRequireDefault(require("./lib/toBoolean")); + +var _equals = _interopRequireDefault(require("./lib/equals")); + +var _contains = _interopRequireDefault(require("./lib/contains")); + +var _matches = _interopRequireDefault(require("./lib/matches")); + +var _isEmail = _interopRequireDefault(require("./lib/isEmail")); + +var _isURL = _interopRequireDefault(require("./lib/isURL")); + +var _isMACAddress = _interopRequireDefault(require("./lib/isMACAddress")); + +var _isIP = _interopRequireDefault(require("./lib/isIP")); + +var _isIPRange = _interopRequireDefault(require("./lib/isIPRange")); + +var _isFQDN = _interopRequireDefault(require("./lib/isFQDN")); + +var _isDate = _interopRequireDefault(require("./lib/isDate")); + +var _isBoolean = _interopRequireDefault(require("./lib/isBoolean")); + +var _isLocale = _interopRequireDefault(require("./lib/isLocale")); + +var _isAlpha = _interopRequireWildcard(require("./lib/isAlpha")); + +var _isAlphanumeric = _interopRequireWildcard(require("./lib/isAlphanumeric")); + +var _isNumeric = _interopRequireDefault(require("./lib/isNumeric")); + +var _isPassportNumber = _interopRequireDefault(require("./lib/isPassportNumber")); + +var _isPort = _interopRequireDefault(require("./lib/isPort")); + +var _isLowercase = _interopRequireDefault(require("./lib/isLowercase")); + +var _isUppercase = _interopRequireDefault(require("./lib/isUppercase")); + +var _isIMEI = _interopRequireDefault(require("./lib/isIMEI")); + +var _isAscii = _interopRequireDefault(require("./lib/isAscii")); + +var _isFullWidth = _interopRequireDefault(require("./lib/isFullWidth")); + +var _isHalfWidth = _interopRequireDefault(require("./lib/isHalfWidth")); + +var _isVariableWidth = _interopRequireDefault(require("./lib/isVariableWidth")); + +var _isMultibyte = _interopRequireDefault(require("./lib/isMultibyte")); + +var _isSemVer = _interopRequireDefault(require("./lib/isSemVer")); + +var _isSurrogatePair = _interopRequireDefault(require("./lib/isSurrogatePair")); + +var _isInt = _interopRequireDefault(require("./lib/isInt")); + +var _isFloat = _interopRequireWildcard(require("./lib/isFloat")); + +var _isDecimal = _interopRequireDefault(require("./lib/isDecimal")); + +var _isHexadecimal = _interopRequireDefault(require("./lib/isHexadecimal")); + +var _isOctal = _interopRequireDefault(require("./lib/isOctal")); + +var _isDivisibleBy = _interopRequireDefault(require("./lib/isDivisibleBy")); + +var _isHexColor = _interopRequireDefault(require("./lib/isHexColor")); + +var _isRgbColor = _interopRequireDefault(require("./lib/isRgbColor")); + +var _isHSL = _interopRequireDefault(require("./lib/isHSL")); + +var _isISRC = _interopRequireDefault(require("./lib/isISRC")); + +var _isIBAN = _interopRequireWildcard(require("./lib/isIBAN")); + +var _isBIC = _interopRequireDefault(require("./lib/isBIC")); + +var _isMD = _interopRequireDefault(require("./lib/isMD5")); + +var _isHash = _interopRequireDefault(require("./lib/isHash")); + +var _isJWT = _interopRequireDefault(require("./lib/isJWT")); + +var _isJSON = _interopRequireDefault(require("./lib/isJSON")); + +var _isEmpty = _interopRequireDefault(require("./lib/isEmpty")); + +var _isLength = _interopRequireDefault(require("./lib/isLength")); + +var _isByteLength = _interopRequireDefault(require("./lib/isByteLength")); + +var _isUUID = _interopRequireDefault(require("./lib/isUUID")); + +var _isMongoId = _interopRequireDefault(require("./lib/isMongoId")); + +var _isAfter = _interopRequireDefault(require("./lib/isAfter")); + +var _isBefore = _interopRequireDefault(require("./lib/isBefore")); + +var _isIn = _interopRequireDefault(require("./lib/isIn")); + +var _isCreditCard = _interopRequireDefault(require("./lib/isCreditCard")); + +var _isIdentityCard = _interopRequireDefault(require("./lib/isIdentityCard")); + +var _isEAN = _interopRequireDefault(require("./lib/isEAN")); + +var _isISIN = _interopRequireDefault(require("./lib/isISIN")); + +var _isISBN = _interopRequireDefault(require("./lib/isISBN")); + +var _isISSN = _interopRequireDefault(require("./lib/isISSN")); + +var _isTaxID = _interopRequireDefault(require("./lib/isTaxID")); + +var _isMobilePhone = _interopRequireWildcard(require("./lib/isMobilePhone")); + +var _isEthereumAddress = _interopRequireDefault(require("./lib/isEthereumAddress")); + +var _isCurrency = _interopRequireDefault(require("./lib/isCurrency")); + +var _isBtcAddress = _interopRequireDefault(require("./lib/isBtcAddress")); + +var _isISO = _interopRequireDefault(require("./lib/isISO8601")); + +var _isRFC = _interopRequireDefault(require("./lib/isRFC3339")); + +var _isISO31661Alpha = _interopRequireDefault(require("./lib/isISO31661Alpha2")); + +var _isISO31661Alpha2 = _interopRequireDefault(require("./lib/isISO31661Alpha3")); + +var _isISO2 = _interopRequireDefault(require("./lib/isISO4217")); + +var _isBase = _interopRequireDefault(require("./lib/isBase32")); + +var _isBase2 = _interopRequireDefault(require("./lib/isBase58")); + +var _isBase3 = _interopRequireDefault(require("./lib/isBase64")); + +var _isDataURI = _interopRequireDefault(require("./lib/isDataURI")); + +var _isMagnetURI = _interopRequireDefault(require("./lib/isMagnetURI")); + +var _isMimeType = _interopRequireDefault(require("./lib/isMimeType")); + +var _isLatLong = _interopRequireDefault(require("./lib/isLatLong")); + +var _isPostalCode = _interopRequireWildcard(require("./lib/isPostalCode")); + +var _ltrim = _interopRequireDefault(require("./lib/ltrim")); + +var _rtrim = _interopRequireDefault(require("./lib/rtrim")); + +var _trim = _interopRequireDefault(require("./lib/trim")); + +var _escape = _interopRequireDefault(require("./lib/escape")); + +var _unescape = _interopRequireDefault(require("./lib/unescape")); + +var _stripLow = _interopRequireDefault(require("./lib/stripLow")); + +var _whitelist = _interopRequireDefault(require("./lib/whitelist")); + +var _blacklist = _interopRequireDefault(require("./lib/blacklist")); + +var _isWhitelisted = _interopRequireDefault(require("./lib/isWhitelisted")); + +var _normalizeEmail = _interopRequireDefault(require("./lib/normalizeEmail")); + +var _isSlug = _interopRequireDefault(require("./lib/isSlug")); + +var _isLicensePlate = _interopRequireDefault(require("./lib/isLicensePlate")); + +var _isStrongPassword = _interopRequireDefault(require("./lib/isStrongPassword")); + +var _isVAT = _interopRequireDefault(require("./lib/isVAT")); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var version = '13.7.0'; +var validator = { + version: version, + toDate: _toDate.default, + toFloat: _toFloat.default, + toInt: _toInt.default, + toBoolean: _toBoolean.default, + equals: _equals.default, + contains: _contains.default, + matches: _matches.default, + isEmail: _isEmail.default, + isURL: _isURL.default, + isMACAddress: _isMACAddress.default, + isIP: _isIP.default, + isIPRange: _isIPRange.default, + isFQDN: _isFQDN.default, + isBoolean: _isBoolean.default, + isIBAN: _isIBAN.default, + isBIC: _isBIC.default, + isAlpha: _isAlpha.default, + isAlphaLocales: _isAlpha.locales, + isAlphanumeric: _isAlphanumeric.default, + isAlphanumericLocales: _isAlphanumeric.locales, + isNumeric: _isNumeric.default, + isPassportNumber: _isPassportNumber.default, + isPort: _isPort.default, + isLowercase: _isLowercase.default, + isUppercase: _isUppercase.default, + isAscii: _isAscii.default, + isFullWidth: _isFullWidth.default, + isHalfWidth: _isHalfWidth.default, + isVariableWidth: _isVariableWidth.default, + isMultibyte: _isMultibyte.default, + isSemVer: _isSemVer.default, + isSurrogatePair: _isSurrogatePair.default, + isInt: _isInt.default, + isIMEI: _isIMEI.default, + isFloat: _isFloat.default, + isFloatLocales: _isFloat.locales, + isDecimal: _isDecimal.default, + isHexadecimal: _isHexadecimal.default, + isOctal: _isOctal.default, + isDivisibleBy: _isDivisibleBy.default, + isHexColor: _isHexColor.default, + isRgbColor: _isRgbColor.default, + isHSL: _isHSL.default, + isISRC: _isISRC.default, + isMD5: _isMD.default, + isHash: _isHash.default, + isJWT: _isJWT.default, + isJSON: _isJSON.default, + isEmpty: _isEmpty.default, + isLength: _isLength.default, + isLocale: _isLocale.default, + isByteLength: _isByteLength.default, + isUUID: _isUUID.default, + isMongoId: _isMongoId.default, + isAfter: _isAfter.default, + isBefore: _isBefore.default, + isIn: _isIn.default, + isCreditCard: _isCreditCard.default, + isIdentityCard: _isIdentityCard.default, + isEAN: _isEAN.default, + isISIN: _isISIN.default, + isISBN: _isISBN.default, + isISSN: _isISSN.default, + isMobilePhone: _isMobilePhone.default, + isMobilePhoneLocales: _isMobilePhone.locales, + isPostalCode: _isPostalCode.default, + isPostalCodeLocales: _isPostalCode.locales, + isEthereumAddress: _isEthereumAddress.default, + isCurrency: _isCurrency.default, + isBtcAddress: _isBtcAddress.default, + isISO8601: _isISO.default, + isRFC3339: _isRFC.default, + isISO31661Alpha2: _isISO31661Alpha.default, + isISO31661Alpha3: _isISO31661Alpha2.default, + isISO4217: _isISO2.default, + isBase32: _isBase.default, + isBase58: _isBase2.default, + isBase64: _isBase3.default, + isDataURI: _isDataURI.default, + isMagnetURI: _isMagnetURI.default, + isMimeType: _isMimeType.default, + isLatLong: _isLatLong.default, + ltrim: _ltrim.default, + rtrim: _rtrim.default, + trim: _trim.default, + escape: _escape.default, + unescape: _unescape.default, + stripLow: _stripLow.default, + whitelist: _whitelist.default, + blacklist: _blacklist.default, + isWhitelisted: _isWhitelisted.default, + normalizeEmail: _normalizeEmail.default, + toString: toString, + isSlug: _isSlug.default, + isStrongPassword: _isStrongPassword.default, + isTaxID: _isTaxID.default, + isDate: _isDate.default, + isLicensePlate: _isLicensePlate.default, + isVAT: _isVAT.default, + ibanLocales: _isIBAN.locales +}; +var _default = validator; +exports.default = _default; +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/alpha.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/alpha.js new file mode 100644 index 00000000..7dacc73e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/alpha.js @@ -0,0 +1,137 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.commaDecimal = exports.dotDecimal = exports.farsiLocales = exports.arabicLocales = exports.englishLocales = exports.decimal = exports.alphanumeric = exports.alpha = void 0; +var alpha = { + 'en-US': /^[A-Z]+$/i, + 'az-AZ': /^[A-VXYZÇƏĞİıÖŞÜ]+$/i, + 'bg-BG': /^[А-Я]+$/i, + 'cs-CZ': /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i, + 'da-DK': /^[A-ZÆØÅ]+$/i, + 'de-DE': /^[A-ZÄÖÜß]+$/i, + 'el-GR': /^[Α-ώ]+$/i, + 'es-ES': /^[A-ZÁÉÍÑÓÚÜ]+$/i, + 'fa-IR': /^[ابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهی]+$/i, + 'fi-FI': /^[A-ZÅÄÖ]+$/i, + 'fr-FR': /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i, + 'it-IT': /^[A-ZÀÉÈÌÎÓÒÙ]+$/i, + 'nb-NO': /^[A-ZÆØÅ]+$/i, + 'nl-NL': /^[A-ZÁÉËÏÓÖÜÚ]+$/i, + 'nn-NO': /^[A-ZÆØÅ]+$/i, + 'hu-HU': /^[A-ZÁÉÍÓÖŐÚÜŰ]+$/i, + 'pl-PL': /^[A-ZĄĆĘŚŁŃÓŻŹ]+$/i, + 'pt-PT': /^[A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i, + 'ru-RU': /^[А-ЯЁ]+$/i, + 'sl-SI': /^[A-ZČĆĐŠŽ]+$/i, + 'sk-SK': /^[A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i, + 'sr-RS@latin': /^[A-ZČĆŽŠĐ]+$/i, + 'sr-RS': /^[А-ЯЂЈЉЊЋЏ]+$/i, + 'sv-SE': /^[A-ZÅÄÖ]+$/i, + 'th-TH': /^[ก-๐\s]+$/i, + 'tr-TR': /^[A-ZÇĞİıÖŞÜ]+$/i, + 'uk-UA': /^[А-ЩЬЮЯЄIЇҐі]+$/i, + 'vi-VN': /^[A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i, + 'ku-IQ': /^[ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i, + ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/, + he: /^[א-ת]+$/, + fa: /^['آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی']+$/i, + 'hi-IN': /^[\u0900-\u0961]+[\u0972-\u097F]*$/i +}; +exports.alpha = alpha; +var alphanumeric = { + 'en-US': /^[0-9A-Z]+$/i, + 'az-AZ': /^[0-9A-VXYZÇƏĞİıÖŞÜ]+$/i, + 'bg-BG': /^[0-9А-Я]+$/i, + 'cs-CZ': /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i, + 'da-DK': /^[0-9A-ZÆØÅ]+$/i, + 'de-DE': /^[0-9A-ZÄÖÜß]+$/i, + 'el-GR': /^[0-9Α-ω]+$/i, + 'es-ES': /^[0-9A-ZÁÉÍÑÓÚÜ]+$/i, + 'fi-FI': /^[0-9A-ZÅÄÖ]+$/i, + 'fr-FR': /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i, + 'it-IT': /^[0-9A-ZÀÉÈÌÎÓÒÙ]+$/i, + 'hu-HU': /^[0-9A-ZÁÉÍÓÖŐÚÜŰ]+$/i, + 'nb-NO': /^[0-9A-ZÆØÅ]+$/i, + 'nl-NL': /^[0-9A-ZÁÉËÏÓÖÜÚ]+$/i, + 'nn-NO': /^[0-9A-ZÆØÅ]+$/i, + 'pl-PL': /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]+$/i, + 'pt-PT': /^[0-9A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i, + 'ru-RU': /^[0-9А-ЯЁ]+$/i, + 'sl-SI': /^[0-9A-ZČĆĐŠŽ]+$/i, + 'sk-SK': /^[0-9A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i, + 'sr-RS@latin': /^[0-9A-ZČĆŽŠĐ]+$/i, + 'sr-RS': /^[0-9А-ЯЂЈЉЊЋЏ]+$/i, + 'sv-SE': /^[0-9A-ZÅÄÖ]+$/i, + 'th-TH': /^[ก-๙\s]+$/i, + 'tr-TR': /^[0-9A-ZÇĞİıÖŞÜ]+$/i, + 'uk-UA': /^[0-9А-ЩЬЮЯЄIЇҐі]+$/i, + 'ku-IQ': /^[٠١٢٣٤٥٦٧٨٩0-9ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i, + 'vi-VN': /^[0-9A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i, + ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/, + he: /^[0-9א-ת]+$/, + fa: /^['0-9آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی۱۲۳۴۵۶۷۸۹۰']+$/i, + 'hi-IN': /^[\u0900-\u0963]+[\u0966-\u097F]*$/i +}; +exports.alphanumeric = alphanumeric; +var decimal = { + 'en-US': '.', + ar: '٫' +}; +exports.decimal = decimal; +var englishLocales = ['AU', 'GB', 'HK', 'IN', 'NZ', 'ZA', 'ZM']; +exports.englishLocales = englishLocales; + +for (var locale, i = 0; i < englishLocales.length; i++) { + locale = "en-".concat(englishLocales[i]); + alpha[locale] = alpha['en-US']; + alphanumeric[locale] = alphanumeric['en-US']; + decimal[locale] = decimal['en-US']; +} // Source: http://www.localeplanet.com/java/ + + +var arabicLocales = ['AE', 'BH', 'DZ', 'EG', 'IQ', 'JO', 'KW', 'LB', 'LY', 'MA', 'QM', 'QA', 'SA', 'SD', 'SY', 'TN', 'YE']; +exports.arabicLocales = arabicLocales; + +for (var _locale, _i = 0; _i < arabicLocales.length; _i++) { + _locale = "ar-".concat(arabicLocales[_i]); + alpha[_locale] = alpha.ar; + alphanumeric[_locale] = alphanumeric.ar; + decimal[_locale] = decimal.ar; +} + +var farsiLocales = ['IR', 'AF']; +exports.farsiLocales = farsiLocales; + +for (var _locale2, _i2 = 0; _i2 < farsiLocales.length; _i2++) { + _locale2 = "fa-".concat(farsiLocales[_i2]); + alphanumeric[_locale2] = alphanumeric.fa; + decimal[_locale2] = decimal.ar; +} // Source: https://en.wikipedia.org/wiki/Decimal_mark + + +var dotDecimal = ['ar-EG', 'ar-LB', 'ar-LY']; +exports.dotDecimal = dotDecimal; +var commaDecimal = ['bg-BG', 'cs-CZ', 'da-DK', 'de-DE', 'el-GR', 'en-ZM', 'es-ES', 'fr-CA', 'fr-FR', 'id-ID', 'it-IT', 'ku-IQ', 'hi-IN', 'hu-HU', 'nb-NO', 'nn-NO', 'nl-NL', 'pl-PL', 'pt-PT', 'ru-RU', 'sl-SI', 'sr-RS@latin', 'sr-RS', 'sv-SE', 'tr-TR', 'uk-UA', 'vi-VN']; +exports.commaDecimal = commaDecimal; + +for (var _i3 = 0; _i3 < dotDecimal.length; _i3++) { + decimal[dotDecimal[_i3]] = decimal['en-US']; +} + +for (var _i4 = 0; _i4 < commaDecimal.length; _i4++) { + decimal[commaDecimal[_i4]] = ','; +} + +alpha['fr-CA'] = alpha['fr-FR']; +alphanumeric['fr-CA'] = alphanumeric['fr-FR']; +alpha['pt-BR'] = alpha['pt-PT']; +alphanumeric['pt-BR'] = alphanumeric['pt-PT']; +decimal['pt-BR'] = decimal['pt-PT']; // see #862 + +alpha['pl-Pl'] = alpha['pl-PL']; +alphanumeric['pl-Pl'] = alphanumeric['pl-PL']; +decimal['pl-Pl'] = decimal['pl-PL']; // see #1455 + +alpha['fa-AF'] = alpha.fa; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/blacklist.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/blacklist.js new file mode 100644 index 00000000..5dd42ed2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/blacklist.js @@ -0,0 +1,18 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = blacklist; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function blacklist(str, chars) { + (0, _assertString.default)(str); + return str.replace(new RegExp("[".concat(chars, "]+"), 'g'), ''); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/contains.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/contains.js new file mode 100644 index 00000000..ee3843bb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/contains.js @@ -0,0 +1,33 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = contains; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +var _toString = _interopRequireDefault(require("./util/toString")); + +var _merge = _interopRequireDefault(require("./util/merge")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var defaulContainsOptions = { + ignoreCase: false, + minOccurrences: 1 +}; + +function contains(str, elem, options) { + (0, _assertString.default)(str); + options = (0, _merge.default)(options, defaulContainsOptions); + + if (options.ignoreCase) { + return str.toLowerCase().split((0, _toString.default)(elem).toLowerCase()).length > options.minOccurrences; + } + + return str.split((0, _toString.default)(elem)).length > options.minOccurrences; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/equals.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/equals.js new file mode 100644 index 00000000..a33c5ab2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/equals.js @@ -0,0 +1,18 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = equals; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function equals(str, comparison) { + (0, _assertString.default)(str); + return str === comparison; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/escape.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/escape.js new file mode 100644 index 00000000..05e42203 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/escape.js @@ -0,0 +1,18 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = escape; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function escape(str) { + (0, _assertString.default)(str); + return str.replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''').replace(//g, '>').replace(/\//g, '/').replace(/\\/g, '\').replace(/`/g, '`'); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isAfter.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isAfter.js new file mode 100644 index 00000000..1fa18adb --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isAfter.js @@ -0,0 +1,23 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isAfter; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +var _toDate = _interopRequireDefault(require("./toDate")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function isAfter(str) { + var date = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : String(new Date()); + (0, _assertString.default)(str); + var comparison = (0, _toDate.default)(date); + var original = (0, _toDate.default)(str); + return !!(original && comparison && original > comparison); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isAlpha.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isAlpha.js new file mode 100644 index 00000000..bfb0c176 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isAlpha.js @@ -0,0 +1,40 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isAlpha; +exports.locales = void 0; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +var _alpha = require("./alpha"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function isAlpha(_str) { + var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US'; + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + (0, _assertString.default)(_str); + var str = _str; + var ignore = options.ignore; + + if (ignore) { + if (ignore instanceof RegExp) { + str = str.replace(ignore, ''); + } else if (typeof ignore === 'string') { + str = str.replace(new RegExp("[".concat(ignore.replace(/[-[\]{}()*+?.,\\^$|#\\s]/g, '\\$&'), "]"), 'g'), ''); // escape regex for ignore + } else { + throw new Error('ignore should be instance of a String or RegExp'); + } + } + + if (locale in _alpha.alpha) { + return _alpha.alpha[locale].test(str); + } + + throw new Error("Invalid locale '".concat(locale, "'")); +} + +var locales = Object.keys(_alpha.alpha); +exports.locales = locales; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isAlphanumeric.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isAlphanumeric.js new file mode 100644 index 00000000..e4d1d44a --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isAlphanumeric.js @@ -0,0 +1,40 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isAlphanumeric; +exports.locales = void 0; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +var _alpha = require("./alpha"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function isAlphanumeric(_str) { + var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US'; + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + (0, _assertString.default)(_str); + var str = _str; + var ignore = options.ignore; + + if (ignore) { + if (ignore instanceof RegExp) { + str = str.replace(ignore, ''); + } else if (typeof ignore === 'string') { + str = str.replace(new RegExp("[".concat(ignore.replace(/[-[\]{}()*+?.,\\^$|#\\s]/g, '\\$&'), "]"), 'g'), ''); // escape regex for ignore + } else { + throw new Error('ignore should be instance of a String or RegExp'); + } + } + + if (locale in _alpha.alphanumeric) { + return _alpha.alphanumeric[locale].test(str); + } + + throw new Error("Invalid locale '".concat(locale, "'")); +} + +var locales = Object.keys(_alpha.alphanumeric); +exports.locales = locales; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isAscii.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isAscii.js new file mode 100644 index 00000000..3c622717 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isAscii.js @@ -0,0 +1,22 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isAscii; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/* eslint-disable no-control-regex */ +var ascii = /^[\x00-\x7F]+$/; +/* eslint-enable no-control-regex */ + +function isAscii(str) { + (0, _assertString.default)(str); + return ascii.test(str); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBIC.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBIC.js new file mode 100644 index 00000000..a776707d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBIC.js @@ -0,0 +1,29 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isBIC; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +var _isISO31661Alpha = require("./isISO31661Alpha2"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// https://en.wikipedia.org/wiki/ISO_9362 +var isBICReg = /^[A-Za-z]{6}[A-Za-z0-9]{2}([A-Za-z0-9]{3})?$/; + +function isBIC(str) { + (0, _assertString.default)(str); // toUpperCase() should be removed when a new major version goes out that changes + // the regex to [A-Z] (per the spec). + + if (!_isISO31661Alpha.CountryCodes.has(str.slice(4, 6).toUpperCase())) { + return false; + } + + return isBICReg.test(str); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBase32.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBase32.js new file mode 100644 index 00000000..293449f7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBase32.js @@ -0,0 +1,26 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isBase32; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var base32 = /^[A-Z2-7]+=*$/; + +function isBase32(str) { + (0, _assertString.default)(str); + var len = str.length; + + if (len % 8 === 0 && base32.test(str)) { + return true; + } + + return false; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBase58.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBase58.js new file mode 100644 index 00000000..a98c82ca --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBase58.js @@ -0,0 +1,26 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isBase58; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// Accepted chars - 123456789ABCDEFGH JKLMN PQRSTUVWXYZabcdefghijk mnopqrstuvwxyz +var base58Reg = /^[A-HJ-NP-Za-km-z1-9]*$/; + +function isBase58(str) { + (0, _assertString.default)(str); + + if (base58Reg.test(str)) { + return true; + } + + return false; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBase64.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBase64.js new file mode 100644 index 00000000..6863683b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBase64.js @@ -0,0 +1,38 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isBase64; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +var _merge = _interopRequireDefault(require("./util/merge")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var notBase64 = /[^A-Z0-9+\/=]/i; +var urlSafeBase64 = /^[A-Z0-9_\-]*$/i; +var defaultBase64Options = { + urlSafe: false +}; + +function isBase64(str, options) { + (0, _assertString.default)(str); + options = (0, _merge.default)(options, defaultBase64Options); + var len = str.length; + + if (options.urlSafe) { + return urlSafeBase64.test(str); + } + + if (len % 4 !== 0 || notBase64.test(str)) { + return false; + } + + var firstPaddingChar = str.indexOf('='); + return firstPaddingChar === -1 || firstPaddingChar === len - 1 || firstPaddingChar === len - 2 && str[len - 1] === '='; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBefore.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBefore.js new file mode 100644 index 00000000..a54eda8f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBefore.js @@ -0,0 +1,23 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isBefore; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +var _toDate = _interopRequireDefault(require("./toDate")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function isBefore(str) { + var date = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : String(new Date()); + (0, _assertString.default)(str); + var comparison = (0, _toDate.default)(date); + var original = (0, _toDate.default)(str); + return !!(original && comparison && original < comparison); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBoolean.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBoolean.js new file mode 100644 index 00000000..e89a0e4f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBoolean.js @@ -0,0 +1,30 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isBoolean; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var defaultOptions = { + loose: false +}; +var strictBooleans = ['true', 'false', '1', '0']; +var looseBooleans = [].concat(strictBooleans, ['yes', 'no']); + +function isBoolean(str) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultOptions; + (0, _assertString.default)(str); + + if (options.loose) { + return looseBooleans.includes(str.toLowerCase()); + } + + return strictBooleans.includes(str); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBtcAddress.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBtcAddress.js new file mode 100644 index 00000000..d1cb45c3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isBtcAddress.js @@ -0,0 +1,27 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isBtcAddress; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// supports Bech32 addresses +var bech32 = /^(bc1)[a-z0-9]{25,39}$/; +var base58 = /^(1|3)[A-HJ-NP-Za-km-z1-9]{25,39}$/; + +function isBtcAddress(str) { + (0, _assertString.default)(str); // check for bech32 + + if (str.startsWith('bc1')) { + return bech32.test(str); + } + + return base58.test(str); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isByteLength.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isByteLength.js new file mode 100644 index 00000000..c1370eae --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isByteLength.js @@ -0,0 +1,34 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isByteLength; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +/* eslint-disable prefer-rest-params */ +function isByteLength(str, options) { + (0, _assertString.default)(str); + var min; + var max; + + if (_typeof(options) === 'object') { + min = options.min || 0; + max = options.max; + } else { + // backwards compatibility: isByteLength(str, min [, max]) + min = arguments[1]; + max = arguments[2]; + } + + var len = encodeURI(str).split(/%..|./).length - 1; + return len >= min && (typeof max === 'undefined' || len <= max); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isCreditCard.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isCreditCard.js new file mode 100644 index 00000000..c7ab3151 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isCreditCard.js @@ -0,0 +1,52 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isCreditCard; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/* eslint-disable max-len */ +var creditCard = /^(?:4[0-9]{12}(?:[0-9]{3,6})?|5[1-5][0-9]{14}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12,15}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11}|6[27][0-9]{14}|^(81[0-9]{14,17}))$/; +/* eslint-enable max-len */ + +function isCreditCard(str) { + (0, _assertString.default)(str); + var sanitized = str.replace(/[- ]+/g, ''); + + if (!creditCard.test(sanitized)) { + return false; + } + + var sum = 0; + var digit; + var tmpNum; + var shouldDouble; + + for (var i = sanitized.length - 1; i >= 0; i--) { + digit = sanitized.substring(i, i + 1); + tmpNum = parseInt(digit, 10); + + if (shouldDouble) { + tmpNum *= 2; + + if (tmpNum >= 10) { + sum += tmpNum % 10 + 1; + } else { + sum += tmpNum; + } + } else { + sum += tmpNum; + } + + shouldDouble = !shouldDouble; + } + + return !!(sum % 10 === 0 ? sanitized : false); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isCurrency.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isCurrency.js new file mode 100755 index 00000000..cd7def66 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isCurrency.js @@ -0,0 +1,91 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isCurrency; + +var _merge = _interopRequireDefault(require("./util/merge")); + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function currencyRegex(options) { + var decimal_digits = "\\d{".concat(options.digits_after_decimal[0], "}"); + options.digits_after_decimal.forEach(function (digit, index) { + if (index !== 0) decimal_digits = "".concat(decimal_digits, "|\\d{").concat(digit, "}"); + }); + var symbol = "(".concat(options.symbol.replace(/\W/, function (m) { + return "\\".concat(m); + }), ")").concat(options.require_symbol ? '' : '?'), + negative = '-?', + whole_dollar_amount_without_sep = '[1-9]\\d*', + whole_dollar_amount_with_sep = "[1-9]\\d{0,2}(\\".concat(options.thousands_separator, "\\d{3})*"), + valid_whole_dollar_amounts = ['0', whole_dollar_amount_without_sep, whole_dollar_amount_with_sep], + whole_dollar_amount = "(".concat(valid_whole_dollar_amounts.join('|'), ")?"), + decimal_amount = "(\\".concat(options.decimal_separator, "(").concat(decimal_digits, "))").concat(options.require_decimal ? '' : '?'); + var pattern = whole_dollar_amount + (options.allow_decimal || options.require_decimal ? decimal_amount : ''); // default is negative sign before symbol, but there are two other options (besides parens) + + if (options.allow_negatives && !options.parens_for_negatives) { + if (options.negative_sign_after_digits) { + pattern += negative; + } else if (options.negative_sign_before_digits) { + pattern = negative + pattern; + } + } // South African Rand, for example, uses R 123 (space) and R-123 (no space) + + + if (options.allow_negative_sign_placeholder) { + pattern = "( (?!\\-))?".concat(pattern); + } else if (options.allow_space_after_symbol) { + pattern = " ?".concat(pattern); + } else if (options.allow_space_after_digits) { + pattern += '( (?!$))?'; + } + + if (options.symbol_after_digits) { + pattern += symbol; + } else { + pattern = symbol + pattern; + } + + if (options.allow_negatives) { + if (options.parens_for_negatives) { + pattern = "(\\(".concat(pattern, "\\)|").concat(pattern, ")"); + } else if (!(options.negative_sign_before_digits || options.negative_sign_after_digits)) { + pattern = negative + pattern; + } + } // ensure there's a dollar and/or decimal amount, and that + // it doesn't start with a space or a negative sign followed by a space + + + return new RegExp("^(?!-? )(?=.*\\d)".concat(pattern, "$")); +} + +var default_currency_options = { + symbol: '$', + require_symbol: false, + allow_space_after_symbol: false, + symbol_after_digits: false, + allow_negatives: true, + parens_for_negatives: false, + negative_sign_before_digits: false, + negative_sign_after_digits: false, + allow_negative_sign_placeholder: false, + thousands_separator: ',', + decimal_separator: '.', + allow_decimal: true, + require_decimal: false, + digits_after_decimal: [2], + allow_space_after_digits: false +}; + +function isCurrency(str, options) { + (0, _assertString.default)(str); + options = (0, _merge.default)(options, default_currency_options); + return currencyRegex(options).test(str); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isDataURI.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isDataURI.js new file mode 100644 index 00000000..78dc3098 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isDataURI.js @@ -0,0 +1,53 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isDataURI; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var validMediaType = /^[a-z]+\/[a-z0-9\-\+]+$/i; +var validAttribute = /^[a-z\-]+=[a-z0-9\-]+$/i; +var validData = /^[a-z0-9!\$&'\(\)\*\+,;=\-\._~:@\/\?%\s]*$/i; + +function isDataURI(str) { + (0, _assertString.default)(str); + var data = str.split(','); + + if (data.length < 2) { + return false; + } + + var attributes = data.shift().trim().split(';'); + var schemeAndMediaType = attributes.shift(); + + if (schemeAndMediaType.substr(0, 5) !== 'data:') { + return false; + } + + var mediaType = schemeAndMediaType.substr(5); + + if (mediaType !== '' && !validMediaType.test(mediaType)) { + return false; + } + + for (var i = 0; i < attributes.length; i++) { + if (!(i === attributes.length - 1 && attributes[i].toLowerCase() === 'base64') && !validAttribute.test(attributes[i])) { + return false; + } + } + + for (var _i = 0; _i < data.length; _i++) { + if (!validData.test(data[_i])) { + return false; + } + } + + return true; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isDate.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isDate.js new file mode 100644 index 00000000..b3d80100 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isDate.js @@ -0,0 +1,99 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isDate; + +var _merge = _interopRequireDefault(require("./util/merge")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +var default_date_options = { + format: 'YYYY/MM/DD', + delimiters: ['/', '-'], + strictMode: false +}; + +function isValidFormat(format) { + return /(^(y{4}|y{2})[.\/-](m{1,2})[.\/-](d{1,2})$)|(^(m{1,2})[.\/-](d{1,2})[.\/-]((y{4}|y{2})$))|(^(d{1,2})[.\/-](m{1,2})[.\/-]((y{4}|y{2})$))/gi.test(format); +} + +function zip(date, format) { + var zippedArr = [], + len = Math.min(date.length, format.length); + + for (var i = 0; i < len; i++) { + zippedArr.push([date[i], format[i]]); + } + + return zippedArr; +} + +function isDate(input, options) { + if (typeof options === 'string') { + // Allow backward compatbility for old format isDate(input [, format]) + options = (0, _merge.default)({ + format: options + }, default_date_options); + } else { + options = (0, _merge.default)(options, default_date_options); + } + + if (typeof input === 'string' && isValidFormat(options.format)) { + var formatDelimiter = options.delimiters.find(function (delimiter) { + return options.format.indexOf(delimiter) !== -1; + }); + var dateDelimiter = options.strictMode ? formatDelimiter : options.delimiters.find(function (delimiter) { + return input.indexOf(delimiter) !== -1; + }); + var dateAndFormat = zip(input.split(dateDelimiter), options.format.toLowerCase().split(formatDelimiter)); + var dateObj = {}; + + var _iterator = _createForOfIteratorHelper(dateAndFormat), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var _step$value = _slicedToArray(_step.value, 2), + dateWord = _step$value[0], + formatWord = _step$value[1]; + + if (dateWord.length !== formatWord.length) { + return false; + } + + dateObj[formatWord.charAt(0)] = dateWord; + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return new Date("".concat(dateObj.m, "/").concat(dateObj.d, "/").concat(dateObj.y)).getDate() === +dateObj.d; + } + + if (!options.strictMode) { + return Object.prototype.toString.call(input) === '[object Date]' && isFinite(input); + } + + return false; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isDecimal.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isDecimal.js new file mode 100644 index 00000000..d45b05f6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isDecimal.js @@ -0,0 +1,42 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isDecimal; + +var _merge = _interopRequireDefault(require("./util/merge")); + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +var _includes = _interopRequireDefault(require("./util/includes")); + +var _alpha = require("./alpha"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function decimalRegExp(options) { + var regExp = new RegExp("^[-+]?([0-9]+)?(\\".concat(_alpha.decimal[options.locale], "[0-9]{").concat(options.decimal_digits, "})").concat(options.force_decimal ? '' : '?', "$")); + return regExp; +} + +var default_decimal_options = { + force_decimal: false, + decimal_digits: '1,', + locale: 'en-US' +}; +var blacklist = ['', '-', '+']; + +function isDecimal(str, options) { + (0, _assertString.default)(str); + options = (0, _merge.default)(options, default_decimal_options); + + if (options.locale in _alpha.decimal) { + return !(0, _includes.default)(blacklist, str.replace(/ /g, '')) && decimalRegExp(options).test(str); + } + + throw new Error("Invalid locale '".concat(options.locale, "'")); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isDivisibleBy.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isDivisibleBy.js new file mode 100644 index 00000000..02408b37 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isDivisibleBy.js @@ -0,0 +1,20 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isDivisibleBy; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +var _toFloat = _interopRequireDefault(require("./toFloat")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function isDivisibleBy(str, num) { + (0, _assertString.default)(str); + return (0, _toFloat.default)(str) % parseInt(num, 10) === 0; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isEAN.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isEAN.js new file mode 100644 index 00000000..d08d78bd --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isEAN.js @@ -0,0 +1,85 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isEAN; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The most commonly used EAN standard is + * the thirteen-digit EAN-13, while the + * less commonly used 8-digit EAN-8 barcode was + * introduced for use on small packages. + * Also EAN/UCC-14 is used for Grouping of individual + * trade items above unit level(Intermediate, Carton or Pallet). + * For more info about EAN-14 checkout: https://www.gtin.info/itf-14-barcodes/ + * EAN consists of: + * GS1 prefix, manufacturer code, product code and check digit + * Reference: https://en.wikipedia.org/wiki/International_Article_Number + * Reference: https://www.gtin.info/ + */ + +/** + * Define EAN Lenghts; 8 for EAN-8; 13 for EAN-13; 14 for EAN-14 + * and Regular Expression for valid EANs (EAN-8, EAN-13, EAN-14), + * with exact numberic matching of 8 or 13 or 14 digits [0-9] + */ +var LENGTH_EAN_8 = 8; +var LENGTH_EAN_14 = 14; +var validEanRegex = /^(\d{8}|\d{13}|\d{14})$/; +/** + * Get position weight given: + * EAN length and digit index/position + * + * @param {number} length + * @param {number} index + * @return {number} + */ + +function getPositionWeightThroughLengthAndIndex(length, index) { + if (length === LENGTH_EAN_8 || length === LENGTH_EAN_14) { + return index % 2 === 0 ? 3 : 1; + } + + return index % 2 === 0 ? 1 : 3; +} +/** + * Calculate EAN Check Digit + * Reference: https://en.wikipedia.org/wiki/International_Article_Number#Calculation_of_checksum_digit + * + * @param {string} ean + * @return {number} + */ + + +function calculateCheckDigit(ean) { + var checksum = ean.slice(0, -1).split('').map(function (char, index) { + return Number(char) * getPositionWeightThroughLengthAndIndex(ean.length, index); + }).reduce(function (acc, partialSum) { + return acc + partialSum; + }, 0); + var remainder = 10 - checksum % 10; + return remainder < 10 ? remainder : 0; +} +/** + * Check if string is valid EAN: + * Matches EAN-8/EAN-13/EAN-14 regex + * Has valid check digit. + * + * @param {string} str + * @return {boolean} + */ + + +function isEAN(str) { + (0, _assertString.default)(str); + var actualCheckDigit = Number(str.slice(-1)); + return validEanRegex.test(str) && actualCheckDigit === calculateCheckDigit(str); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isEmail.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isEmail.js new file mode 100644 index 00000000..bf08492d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isEmail.js @@ -0,0 +1,197 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isEmail; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +var _merge = _interopRequireDefault(require("./util/merge")); + +var _isByteLength = _interopRequireDefault(require("./isByteLength")); + +var _isFQDN = _interopRequireDefault(require("./isFQDN")); + +var _isIP = _interopRequireDefault(require("./isIP")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var default_email_options = { + allow_display_name: false, + require_display_name: false, + allow_utf8_local_part: true, + require_tld: true, + blacklisted_chars: '', + ignore_max_length: false, + host_blacklist: [] +}; +/* eslint-disable max-len */ + +/* eslint-disable no-control-regex */ + +var splitNameAddress = /^([^\x00-\x1F\x7F-\x9F\cX]+)]/.test(display_name_without_quotes); + + if (contains_illegal) { + // if contains illegal characters, + // must to be enclosed in double-quotes, otherwise it's not a valid display name + if (display_name_without_quotes === display_name) { + return false; + } // the quotes in display name must start with character symbol \ + + + var all_start_with_back_slash = display_name_without_quotes.split('"').length === display_name_without_quotes.split('\\"').length; + + if (!all_start_with_back_slash) { + return false; + } + } + + return true; +} + +function isEmail(str, options) { + (0, _assertString.default)(str); + options = (0, _merge.default)(options, default_email_options); + + if (options.require_display_name || options.allow_display_name) { + var display_email = str.match(splitNameAddress); + + if (display_email) { + var display_name = display_email[1]; // Remove display name and angle brackets to get email address + // Can be done in the regex but will introduce a ReDOS (See #1597 for more info) + + str = str.replace(display_name, '').replace(/(^<|>$)/g, ''); // sometimes need to trim the last space to get the display name + // because there may be a space between display name and email address + // eg. myname + // the display name is `myname` instead of `myname `, so need to trim the last space + + if (display_name.endsWith(' ')) { + display_name = display_name.substr(0, display_name.length - 1); + } + + if (!validateDisplayName(display_name)) { + return false; + } + } else if (options.require_display_name) { + return false; + } + } + + if (!options.ignore_max_length && str.length > defaultMaxEmailLength) { + return false; + } + + var parts = str.split('@'); + var domain = parts.pop(); + var lower_domain = domain.toLowerCase(); + + if (options.host_blacklist.includes(lower_domain)) { + return false; + } + + var user = parts.join('@'); + + if (options.domain_specific_validation && (lower_domain === 'gmail.com' || lower_domain === 'googlemail.com')) { + /* + Previously we removed dots for gmail addresses before validating. + This was removed because it allows `multiple..dots@gmail.com` + to be reported as valid, but it is not. + Gmail only normalizes single dots, removing them from here is pointless, + should be done in normalizeEmail + */ + user = user.toLowerCase(); // Removing sub-address from username before gmail validation + + var username = user.split('+')[0]; // Dots are not included in gmail length restriction + + if (!(0, _isByteLength.default)(username.replace(/\./g, ''), { + min: 6, + max: 30 + })) { + return false; + } + + var _user_parts = username.split('.'); + + for (var i = 0; i < _user_parts.length; i++) { + if (!gmailUserPart.test(_user_parts[i])) { + return false; + } + } + } + + if (options.ignore_max_length === false && (!(0, _isByteLength.default)(user, { + max: 64 + }) || !(0, _isByteLength.default)(domain, { + max: 254 + }))) { + return false; + } + + if (!(0, _isFQDN.default)(domain, { + require_tld: options.require_tld + })) { + if (!options.allow_ip_domain) { + return false; + } + + if (!(0, _isIP.default)(domain)) { + if (!domain.startsWith('[') || !domain.endsWith(']')) { + return false; + } + + var noBracketdomain = domain.substr(1, domain.length - 2); + + if (noBracketdomain.length === 0 || !(0, _isIP.default)(noBracketdomain)) { + return false; + } + } + } + + if (user[0] === '"') { + user = user.slice(1, user.length - 1); + return options.allow_utf8_local_part ? quotedEmailUserUtf8.test(user) : quotedEmailUser.test(user); + } + + var pattern = options.allow_utf8_local_part ? emailUserUtf8Part : emailUserPart; + var user_parts = user.split('.'); + + for (var _i = 0; _i < user_parts.length; _i++) { + if (!pattern.test(user_parts[_i])) { + return false; + } + } + + if (options.blacklisted_chars) { + if (user.search(new RegExp("[".concat(options.blacklisted_chars, "]+"), 'g')) !== -1) return false; + } + + return true; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isEmpty.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isEmpty.js new file mode 100644 index 00000000..26766d5e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isEmpty.js @@ -0,0 +1,25 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isEmpty; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +var _merge = _interopRequireDefault(require("./util/merge")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var default_is_empty_options = { + ignore_whitespace: false +}; + +function isEmpty(str, options) { + (0, _assertString.default)(str); + options = (0, _merge.default)(options, default_is_empty_options); + return (options.ignore_whitespace ? str.trim().length : str.length) === 0; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isEthereumAddress.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isEthereumAddress.js new file mode 100644 index 00000000..e6999b98 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isEthereumAddress.js @@ -0,0 +1,20 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isEthereumAddress; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var eth = /^(0x)[0-9a-f]{40}$/i; + +function isEthereumAddress(str) { + (0, _assertString.default)(str); + return eth.test(str); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isFQDN.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isFQDN.js new file mode 100644 index 00000000..73ce134c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isFQDN.js @@ -0,0 +1,89 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isFQDN; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +var _merge = _interopRequireDefault(require("./util/merge")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var default_fqdn_options = { + require_tld: true, + allow_underscores: false, + allow_trailing_dot: false, + allow_numeric_tld: false, + allow_wildcard: false +}; + +function isFQDN(str, options) { + (0, _assertString.default)(str); + options = (0, _merge.default)(options, default_fqdn_options); + /* Remove the optional trailing dot before checking validity */ + + if (options.allow_trailing_dot && str[str.length - 1] === '.') { + str = str.substring(0, str.length - 1); + } + /* Remove the optional wildcard before checking validity */ + + + if (options.allow_wildcard === true && str.indexOf('*.') === 0) { + str = str.substring(2); + } + + var parts = str.split('.'); + var tld = parts[parts.length - 1]; + + if (options.require_tld) { + // disallow fqdns without tld + if (parts.length < 2) { + return false; + } + + if (!/^([a-z\u00A1-\u00A8\u00AA-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}|xn[a-z0-9-]{2,})$/i.test(tld)) { + return false; + } // disallow spaces + + + if (/\s/.test(tld)) { + return false; + } + } // reject numeric TLDs + + + if (!options.allow_numeric_tld && /^\d+$/.test(tld)) { + return false; + } + + return parts.every(function (part) { + if (part.length > 63) { + return false; + } + + if (!/^[a-z_\u00a1-\uffff0-9-]+$/i.test(part)) { + return false; + } // disallow full-width chars + + + if (/[\uff01-\uff5e]/.test(part)) { + return false; + } // disallow parts starting or ending with hyphen + + + if (/^-|-$/.test(part)) { + return false; + } + + if (!options.allow_underscores && /_/.test(part)) { + return false; + } + + return true; + }); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isFloat.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isFloat.js new file mode 100644 index 00000000..3fdab860 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isFloat.js @@ -0,0 +1,29 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isFloat; +exports.locales = void 0; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +var _alpha = require("./alpha"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function isFloat(str, options) { + (0, _assertString.default)(str); + options = options || {}; + var float = new RegExp("^(?:[-+])?(?:[0-9]+)?(?:\\".concat(options.locale ? _alpha.decimal[options.locale] : '.', "[0-9]*)?(?:[eE][\\+\\-]?(?:[0-9]+))?$")); + + if (str === '' || str === '.' || str === '-' || str === '+') { + return false; + } + + var value = parseFloat(str.replace(',', '.')); + return float.test(str) && (!options.hasOwnProperty('min') || value >= options.min) && (!options.hasOwnProperty('max') || value <= options.max) && (!options.hasOwnProperty('lt') || value < options.lt) && (!options.hasOwnProperty('gt') || value > options.gt); +} + +var locales = Object.keys(_alpha.decimal); +exports.locales = locales; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isFullWidth.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isFullWidth.js new file mode 100644 index 00000000..1960f13c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isFullWidth.js @@ -0,0 +1,19 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isFullWidth; +exports.fullWidth = void 0; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var fullWidth = /[^\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/; +exports.fullWidth = fullWidth; + +function isFullWidth(str) { + (0, _assertString.default)(str); + return fullWidth.test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isHSL.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isHSL.js new file mode 100644 index 00000000..0590b3e4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isHSL.js @@ -0,0 +1,28 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isHSL; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var hslComma = /^hsla?\(((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn)?(,(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}(,((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?))?\)$/i; +var hslSpace = /^hsla?\(((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn)?(\s(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}\s?(\/\s((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?)\s?)?\)$/i; + +function isHSL(str) { + (0, _assertString.default)(str); // Strip duplicate spaces before calling the validation regex (See #1598 for more info) + + var strippedStr = str.replace(/\s+/g, ' ').replace(/\s?(hsla?\(|\)|,)\s?/ig, '$1'); + + if (strippedStr.indexOf(',') !== -1) { + return hslComma.test(strippedStr); + } + + return hslSpace.test(strippedStr); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isHalfWidth.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isHalfWidth.js new file mode 100644 index 00000000..55a9e1a4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isHalfWidth.js @@ -0,0 +1,19 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isHalfWidth; +exports.halfWidth = void 0; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var halfWidth = /[\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/; +exports.halfWidth = halfWidth; + +function isHalfWidth(str) { + (0, _assertString.default)(str); + return halfWidth.test(str); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isHash.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isHash.js new file mode 100644 index 00000000..1083966f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isHash.js @@ -0,0 +1,35 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isHash; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var lengths = { + md5: 32, + md4: 32, + sha1: 40, + sha256: 64, + sha384: 96, + sha512: 128, + ripemd128: 32, + ripemd160: 40, + tiger128: 32, + tiger160: 40, + tiger192: 48, + crc32: 8, + crc32b: 8 +}; + +function isHash(str, algorithm) { + (0, _assertString.default)(str); + var hash = new RegExp("^[a-fA-F0-9]{".concat(lengths[algorithm], "}$")); + return hash.test(str); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isHexColor.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isHexColor.js new file mode 100644 index 00000000..7af38890 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isHexColor.js @@ -0,0 +1,20 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isHexColor; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var hexcolor = /^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$/i; + +function isHexColor(str) { + (0, _assertString.default)(str); + return hexcolor.test(str); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isHexadecimal.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isHexadecimal.js new file mode 100644 index 00000000..a1cf7381 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isHexadecimal.js @@ -0,0 +1,20 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isHexadecimal; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var hexadecimal = /^(0x|0h)?[0-9A-F]+$/i; + +function isHexadecimal(str) { + (0, _assertString.default)(str); + return hexadecimal.test(str); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isIBAN.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isIBAN.js new file mode 100644 index 00000000..ef804f27 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isIBAN.js @@ -0,0 +1,150 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isIBAN; +exports.locales = void 0; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * List of country codes with + * corresponding IBAN regular expression + * Reference: https://en.wikipedia.org/wiki/International_Bank_Account_Number + */ +var ibanRegexThroughCountryCode = { + AD: /^(AD[0-9]{2})\d{8}[A-Z0-9]{12}$/, + AE: /^(AE[0-9]{2})\d{3}\d{16}$/, + AL: /^(AL[0-9]{2})\d{8}[A-Z0-9]{16}$/, + AT: /^(AT[0-9]{2})\d{16}$/, + AZ: /^(AZ[0-9]{2})[A-Z0-9]{4}\d{20}$/, + BA: /^(BA[0-9]{2})\d{16}$/, + BE: /^(BE[0-9]{2})\d{12}$/, + BG: /^(BG[0-9]{2})[A-Z]{4}\d{6}[A-Z0-9]{8}$/, + BH: /^(BH[0-9]{2})[A-Z]{4}[A-Z0-9]{14}$/, + BR: /^(BR[0-9]{2})\d{23}[A-Z]{1}[A-Z0-9]{1}$/, + BY: /^(BY[0-9]{2})[A-Z0-9]{4}\d{20}$/, + CH: /^(CH[0-9]{2})\d{5}[A-Z0-9]{12}$/, + CR: /^(CR[0-9]{2})\d{18}$/, + CY: /^(CY[0-9]{2})\d{8}[A-Z0-9]{16}$/, + CZ: /^(CZ[0-9]{2})\d{20}$/, + DE: /^(DE[0-9]{2})\d{18}$/, + DK: /^(DK[0-9]{2})\d{14}$/, + DO: /^(DO[0-9]{2})[A-Z]{4}\d{20}$/, + EE: /^(EE[0-9]{2})\d{16}$/, + EG: /^(EG[0-9]{2})\d{25}$/, + ES: /^(ES[0-9]{2})\d{20}$/, + FI: /^(FI[0-9]{2})\d{14}$/, + FO: /^(FO[0-9]{2})\d{14}$/, + FR: /^(FR[0-9]{2})\d{10}[A-Z0-9]{11}\d{2}$/, + GB: /^(GB[0-9]{2})[A-Z]{4}\d{14}$/, + GE: /^(GE[0-9]{2})[A-Z0-9]{2}\d{16}$/, + GI: /^(GI[0-9]{2})[A-Z]{4}[A-Z0-9]{15}$/, + GL: /^(GL[0-9]{2})\d{14}$/, + GR: /^(GR[0-9]{2})\d{7}[A-Z0-9]{16}$/, + GT: /^(GT[0-9]{2})[A-Z0-9]{4}[A-Z0-9]{20}$/, + HR: /^(HR[0-9]{2})\d{17}$/, + HU: /^(HU[0-9]{2})\d{24}$/, + IE: /^(IE[0-9]{2})[A-Z0-9]{4}\d{14}$/, + IL: /^(IL[0-9]{2})\d{19}$/, + IQ: /^(IQ[0-9]{2})[A-Z]{4}\d{15}$/, + IR: /^(IR[0-9]{2})0\d{2}0\d{18}$/, + IS: /^(IS[0-9]{2})\d{22}$/, + IT: /^(IT[0-9]{2})[A-Z]{1}\d{10}[A-Z0-9]{12}$/, + JO: /^(JO[0-9]{2})[A-Z]{4}\d{22}$/, + KW: /^(KW[0-9]{2})[A-Z]{4}[A-Z0-9]{22}$/, + KZ: /^(KZ[0-9]{2})\d{3}[A-Z0-9]{13}$/, + LB: /^(LB[0-9]{2})\d{4}[A-Z0-9]{20}$/, + LC: /^(LC[0-9]{2})[A-Z]{4}[A-Z0-9]{24}$/, + LI: /^(LI[0-9]{2})\d{5}[A-Z0-9]{12}$/, + LT: /^(LT[0-9]{2})\d{16}$/, + LU: /^(LU[0-9]{2})\d{3}[A-Z0-9]{13}$/, + LV: /^(LV[0-9]{2})[A-Z]{4}[A-Z0-9]{13}$/, + MC: /^(MC[0-9]{2})\d{10}[A-Z0-9]{11}\d{2}$/, + MD: /^(MD[0-9]{2})[A-Z0-9]{20}$/, + ME: /^(ME[0-9]{2})\d{18}$/, + MK: /^(MK[0-9]{2})\d{3}[A-Z0-9]{10}\d{2}$/, + MR: /^(MR[0-9]{2})\d{23}$/, + MT: /^(MT[0-9]{2})[A-Z]{4}\d{5}[A-Z0-9]{18}$/, + MU: /^(MU[0-9]{2})[A-Z]{4}\d{19}[A-Z]{3}$/, + MZ: /^(MZ[0-9]{2})\d{21}$/, + NL: /^(NL[0-9]{2})[A-Z]{4}\d{10}$/, + NO: /^(NO[0-9]{2})\d{11}$/, + PK: /^(PK[0-9]{2})[A-Z0-9]{4}\d{16}$/, + PL: /^(PL[0-9]{2})\d{24}$/, + PS: /^(PS[0-9]{2})[A-Z0-9]{4}\d{21}$/, + PT: /^(PT[0-9]{2})\d{21}$/, + QA: /^(QA[0-9]{2})[A-Z]{4}[A-Z0-9]{21}$/, + RO: /^(RO[0-9]{2})[A-Z]{4}[A-Z0-9]{16}$/, + RS: /^(RS[0-9]{2})\d{18}$/, + SA: /^(SA[0-9]{2})\d{2}[A-Z0-9]{18}$/, + SC: /^(SC[0-9]{2})[A-Z]{4}\d{20}[A-Z]{3}$/, + SE: /^(SE[0-9]{2})\d{20}$/, + SI: /^(SI[0-9]{2})\d{15}$/, + SK: /^(SK[0-9]{2})\d{20}$/, + SM: /^(SM[0-9]{2})[A-Z]{1}\d{10}[A-Z0-9]{12}$/, + SV: /^(SV[0-9]{2})[A-Z0-9]{4}\d{20}$/, + TL: /^(TL[0-9]{2})\d{19}$/, + TN: /^(TN[0-9]{2})\d{20}$/, + TR: /^(TR[0-9]{2})\d{5}[A-Z0-9]{17}$/, + UA: /^(UA[0-9]{2})\d{6}[A-Z0-9]{19}$/, + VA: /^(VA[0-9]{2})\d{18}$/, + VG: /^(VG[0-9]{2})[A-Z0-9]{4}\d{16}$/, + XK: /^(XK[0-9]{2})\d{16}$/ +}; +/** + * Check whether string has correct universal IBAN format + * The IBAN consists of up to 34 alphanumeric characters, as follows: + * Country Code using ISO 3166-1 alpha-2, two letters + * check digits, two digits and + * Basic Bank Account Number (BBAN), up to 30 alphanumeric characters. + * NOTE: Permitted IBAN characters are: digits [0-9] and the 26 latin alphabetic [A-Z] + * + * @param {string} str - string under validation + * @return {boolean} + */ + +function hasValidIbanFormat(str) { + // Strip white spaces and hyphens + var strippedStr = str.replace(/[\s\-]+/gi, '').toUpperCase(); + var isoCountryCode = strippedStr.slice(0, 2).toUpperCase(); + return isoCountryCode in ibanRegexThroughCountryCode && ibanRegexThroughCountryCode[isoCountryCode].test(strippedStr); +} +/** + * Check whether string has valid IBAN Checksum + * by performing basic mod-97 operation and + * the remainder should equal 1 + * -- Start by rearranging the IBAN by moving the four initial characters to the end of the string + * -- Replace each letter in the string with two digits, A -> 10, B = 11, Z = 35 + * -- Interpret the string as a decimal integer and + * -- compute the remainder on division by 97 (mod 97) + * Reference: https://en.wikipedia.org/wiki/International_Bank_Account_Number + * + * @param {string} str + * @return {boolean} + */ + + +function hasValidIbanChecksum(str) { + var strippedStr = str.replace(/[^A-Z0-9]+/gi, '').toUpperCase(); // Keep only digits and A-Z latin alphabetic + + var rearranged = strippedStr.slice(4) + strippedStr.slice(0, 4); + var alphaCapsReplacedWithDigits = rearranged.replace(/[A-Z]/g, function (char) { + return char.charCodeAt(0) - 55; + }); + var remainder = alphaCapsReplacedWithDigits.match(/\d{1,7}/g).reduce(function (acc, value) { + return Number(acc + value) % 97; + }, ''); + return remainder === 1; +} + +function isIBAN(str) { + (0, _assertString.default)(str); + return hasValidIbanFormat(str) && hasValidIbanChecksum(str); +} + +var locales = Object.keys(ibanRegexThroughCountryCode); +exports.locales = locales; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isIMEI.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isIMEI.js new file mode 100644 index 00000000..aa05178b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isIMEI.js @@ -0,0 +1,61 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isIMEI; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var imeiRegexWithoutHypens = /^[0-9]{15}$/; +var imeiRegexWithHypens = /^\d{2}-\d{6}-\d{6}-\d{1}$/; + +function isIMEI(str, options) { + (0, _assertString.default)(str); + options = options || {}; // default regex for checking imei is the one without hyphens + + var imeiRegex = imeiRegexWithoutHypens; + + if (options.allow_hyphens) { + imeiRegex = imeiRegexWithHypens; + } + + if (!imeiRegex.test(str)) { + return false; + } + + str = str.replace(/-/g, ''); + var sum = 0, + mul = 2, + l = 14; + + for (var i = 0; i < l; i++) { + var digit = str.substring(l - i - 1, l - i); + var tp = parseInt(digit, 10) * mul; + + if (tp >= 10) { + sum += tp % 10 + 1; + } else { + sum += tp; + } + + if (mul === 1) { + mul += 1; + } else { + mul -= 1; + } + } + + var chk = (10 - sum % 10) % 10; + + if (chk !== parseInt(str.substring(14, 15), 10)) { + return false; + } + + return true; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isIP.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isIP.js new file mode 100644 index 00000000..2b470aff --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isIP.js @@ -0,0 +1,75 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isIP; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** +11.3. Examples + + The following addresses + + fe80::1234 (on the 1st link of the node) + ff02::5678 (on the 5th link of the node) + ff08::9abc (on the 10th organization of the node) + + would be represented as follows: + + fe80::1234%1 + ff02::5678%5 + ff08::9abc%10 + + (Here we assume a natural translation from a zone index to the + part, where the Nth zone of any scope is translated into + "N".) + + If we use interface names as , those addresses could also be + represented as follows: + + fe80::1234%ne0 + ff02::5678%pvc1.3 + ff08::9abc%interface10 + + where the interface "ne0" belongs to the 1st link, "pvc1.3" belongs + to the 5th link, and "interface10" belongs to the 10th organization. + * * */ +var IPv4SegmentFormat = '(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'; +var IPv4AddressFormat = "(".concat(IPv4SegmentFormat, "[.]){3}").concat(IPv4SegmentFormat); +var IPv4AddressRegExp = new RegExp("^".concat(IPv4AddressFormat, "$")); +var IPv6SegmentFormat = '(?:[0-9a-fA-F]{1,4})'; +var IPv6AddressRegExp = new RegExp('^(' + "(?:".concat(IPv6SegmentFormat, ":){7}(?:").concat(IPv6SegmentFormat, "|:)|") + "(?:".concat(IPv6SegmentFormat, ":){6}(?:").concat(IPv4AddressFormat, "|:").concat(IPv6SegmentFormat, "|:)|") + "(?:".concat(IPv6SegmentFormat, ":){5}(?::").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,2}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){4}(?:(:").concat(IPv6SegmentFormat, "){0,1}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,3}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){3}(?:(:").concat(IPv6SegmentFormat, "){0,2}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,4}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){2}(?:(:").concat(IPv6SegmentFormat, "){0,3}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,5}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){1}(?:(:").concat(IPv6SegmentFormat, "){0,4}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,6}|:)|") + "(?::((?::".concat(IPv6SegmentFormat, "){0,5}:").concat(IPv4AddressFormat, "|(?::").concat(IPv6SegmentFormat, "){1,7}|:))") + ')(%[0-9a-zA-Z-.:]{1,})?$'); + +function isIP(str) { + var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + (0, _assertString.default)(str); + version = String(version); + + if (!version) { + return isIP(str, 4) || isIP(str, 6); + } + + if (version === '4') { + if (!IPv4AddressRegExp.test(str)) { + return false; + } + + var parts = str.split('.').sort(function (a, b) { + return a - b; + }); + return parts[3] <= 255; + } + + if (version === '6') { + return !!IPv6AddressRegExp.test(str); + } + + return false; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isIPRange.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isIPRange.js new file mode 100644 index 00000000..293a1a20 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isIPRange.js @@ -0,0 +1,62 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isIPRange; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +var _isIP = _interopRequireDefault(require("./isIP")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var subnetMaybe = /^\d{1,3}$/; +var v4Subnet = 32; +var v6Subnet = 128; + +function isIPRange(str) { + var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + (0, _assertString.default)(str); + var parts = str.split('/'); // parts[0] -> ip, parts[1] -> subnet + + if (parts.length !== 2) { + return false; + } + + if (!subnetMaybe.test(parts[1])) { + return false; + } // Disallow preceding 0 i.e. 01, 02, ... + + + if (parts[1].length > 1 && parts[1].startsWith('0')) { + return false; + } + + var isValidIP = (0, _isIP.default)(parts[0], version); + + if (!isValidIP) { + return false; + } // Define valid subnet according to IP's version + + + var expectedSubnet = null; + + switch (String(version)) { + case '4': + expectedSubnet = v4Subnet; + break; + + case '6': + expectedSubnet = v6Subnet; + break; + + default: + expectedSubnet = (0, _isIP.default)(parts[0], '6') ? v6Subnet : v4Subnet; + } + + return parts[1] <= expectedSubnet && parts[1] >= 0; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISBN.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISBN.js new file mode 100644 index 00000000..f00bb7a9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISBN.js @@ -0,0 +1,65 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isISBN; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var isbn10Maybe = /^(?:[0-9]{9}X|[0-9]{10})$/; +var isbn13Maybe = /^(?:[0-9]{13})$/; +var factor = [1, 3]; + +function isISBN(str) { + var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + (0, _assertString.default)(str); + version = String(version); + + if (!version) { + return isISBN(str, 10) || isISBN(str, 13); + } + + var sanitized = str.replace(/[\s-]+/g, ''); + var checksum = 0; + var i; + + if (version === '10') { + if (!isbn10Maybe.test(sanitized)) { + return false; + } + + for (i = 0; i < 9; i++) { + checksum += (i + 1) * sanitized.charAt(i); + } + + if (sanitized.charAt(9) === 'X') { + checksum += 10 * 10; + } else { + checksum += 10 * sanitized.charAt(9); + } + + if (checksum % 11 === 0) { + return !!sanitized; + } + } else if (version === '13') { + if (!isbn13Maybe.test(sanitized)) { + return false; + } + + for (i = 0; i < 12; i++) { + checksum += factor[i % 2] * sanitized.charAt(i); + } + + if (sanitized.charAt(12) - (10 - checksum % 10) % 10 === 0) { + return !!sanitized; + } + } + + return false; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISIN.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISIN.js new file mode 100644 index 00000000..39438906 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISIN.js @@ -0,0 +1,73 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isISIN; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var isin = /^[A-Z]{2}[0-9A-Z]{9}[0-9]$/; // this link details how the check digit is calculated: +// https://www.isin.org/isin-format/. it is a little bit +// odd in that it works with digits, not numbers. in order +// to make only one pass through the ISIN characters, the +// each alpha character is handled as 2 characters within +// the loop. + +function isISIN(str) { + (0, _assertString.default)(str); + + if (!isin.test(str)) { + return false; + } + + var double = true; + var sum = 0; // convert values + + for (var i = str.length - 2; i >= 0; i--) { + if (str[i] >= 'A' && str[i] <= 'Z') { + var value = str[i].charCodeAt(0) - 55; + var lo = value % 10; + var hi = Math.trunc(value / 10); // letters have two digits, so handle the low order + // and high order digits separately. + + for (var _i = 0, _arr = [lo, hi]; _i < _arr.length; _i++) { + var digit = _arr[_i]; + + if (double) { + if (digit >= 5) { + sum += 1 + (digit - 5) * 2; + } else { + sum += digit * 2; + } + } else { + sum += digit; + } + + double = !double; + } + } else { + var _digit = str[i].charCodeAt(0) - '0'.charCodeAt(0); + + if (double) { + if (_digit >= 5) { + sum += 1 + (_digit - 5) * 2; + } else { + sum += _digit * 2; + } + } else { + sum += _digit; + } + + double = !double; + } + } + + var check = Math.trunc((sum + 9) / 10) * 10 - sum; + return +str[str.length - 1] === check; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISO31661Alpha2.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISO31661Alpha2.js new file mode 100644 index 00000000..d15bb5be --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISO31661Alpha2.js @@ -0,0 +1,22 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isISO31661Alpha2; +exports.CountryCodes = void 0; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// from https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 +var validISO31661Alpha2CountriesCodes = new Set(['AD', 'AE', 'AF', 'AG', 'AI', 'AL', 'AM', 'AO', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AW', 'AX', 'AZ', 'BA', 'BB', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BL', 'BM', 'BN', 'BO', 'BQ', 'BR', 'BS', 'BT', 'BV', 'BW', 'BY', 'BZ', 'CA', 'CC', 'CD', 'CF', 'CG', 'CH', 'CI', 'CK', 'CL', 'CM', 'CN', 'CO', 'CR', 'CU', 'CV', 'CW', 'CX', 'CY', 'CZ', 'DE', 'DJ', 'DK', 'DM', 'DO', 'DZ', 'EC', 'EE', 'EG', 'EH', 'ER', 'ES', 'ET', 'FI', 'FJ', 'FK', 'FM', 'FO', 'FR', 'GA', 'GB', 'GD', 'GE', 'GF', 'GG', 'GH', 'GI', 'GL', 'GM', 'GN', 'GP', 'GQ', 'GR', 'GS', 'GT', 'GU', 'GW', 'GY', 'HK', 'HM', 'HN', 'HR', 'HT', 'HU', 'ID', 'IE', 'IL', 'IM', 'IN', 'IO', 'IQ', 'IR', 'IS', 'IT', 'JE', 'JM', 'JO', 'JP', 'KE', 'KG', 'KH', 'KI', 'KM', 'KN', 'KP', 'KR', 'KW', 'KY', 'KZ', 'LA', 'LB', 'LC', 'LI', 'LK', 'LR', 'LS', 'LT', 'LU', 'LV', 'LY', 'MA', 'MC', 'MD', 'ME', 'MF', 'MG', 'MH', 'MK', 'ML', 'MM', 'MN', 'MO', 'MP', 'MQ', 'MR', 'MS', 'MT', 'MU', 'MV', 'MW', 'MX', 'MY', 'MZ', 'NA', 'NC', 'NE', 'NF', 'NG', 'NI', 'NL', 'NO', 'NP', 'NR', 'NU', 'NZ', 'OM', 'PA', 'PE', 'PF', 'PG', 'PH', 'PK', 'PL', 'PM', 'PN', 'PR', 'PS', 'PT', 'PW', 'PY', 'QA', 'RE', 'RO', 'RS', 'RU', 'RW', 'SA', 'SB', 'SC', 'SD', 'SE', 'SG', 'SH', 'SI', 'SJ', 'SK', 'SL', 'SM', 'SN', 'SO', 'SR', 'SS', 'ST', 'SV', 'SX', 'SY', 'SZ', 'TC', 'TD', 'TF', 'TG', 'TH', 'TJ', 'TK', 'TL', 'TM', 'TN', 'TO', 'TR', 'TT', 'TV', 'TW', 'TZ', 'UA', 'UG', 'UM', 'US', 'UY', 'UZ', 'VA', 'VC', 'VE', 'VG', 'VI', 'VN', 'VU', 'WF', 'WS', 'YE', 'YT', 'ZA', 'ZM', 'ZW']); + +function isISO31661Alpha2(str) { + (0, _assertString.default)(str); + return validISO31661Alpha2CountriesCodes.has(str.toUpperCase()); +} + +var CountryCodes = validISO31661Alpha2CountriesCodes; +exports.CountryCodes = CountryCodes; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISO31661Alpha3.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISO31661Alpha3.js new file mode 100644 index 00000000..cdb774fa --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISO31661Alpha3.js @@ -0,0 +1,21 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isISO31661Alpha3; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// from https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3 +var validISO31661Alpha3CountriesCodes = new Set(['AFG', 'ALA', 'ALB', 'DZA', 'ASM', 'AND', 'AGO', 'AIA', 'ATA', 'ATG', 'ARG', 'ARM', 'ABW', 'AUS', 'AUT', 'AZE', 'BHS', 'BHR', 'BGD', 'BRB', 'BLR', 'BEL', 'BLZ', 'BEN', 'BMU', 'BTN', 'BOL', 'BES', 'BIH', 'BWA', 'BVT', 'BRA', 'IOT', 'BRN', 'BGR', 'BFA', 'BDI', 'KHM', 'CMR', 'CAN', 'CPV', 'CYM', 'CAF', 'TCD', 'CHL', 'CHN', 'CXR', 'CCK', 'COL', 'COM', 'COG', 'COD', 'COK', 'CRI', 'CIV', 'HRV', 'CUB', 'CUW', 'CYP', 'CZE', 'DNK', 'DJI', 'DMA', 'DOM', 'ECU', 'EGY', 'SLV', 'GNQ', 'ERI', 'EST', 'ETH', 'FLK', 'FRO', 'FJI', 'FIN', 'FRA', 'GUF', 'PYF', 'ATF', 'GAB', 'GMB', 'GEO', 'DEU', 'GHA', 'GIB', 'GRC', 'GRL', 'GRD', 'GLP', 'GUM', 'GTM', 'GGY', 'GIN', 'GNB', 'GUY', 'HTI', 'HMD', 'VAT', 'HND', 'HKG', 'HUN', 'ISL', 'IND', 'IDN', 'IRN', 'IRQ', 'IRL', 'IMN', 'ISR', 'ITA', 'JAM', 'JPN', 'JEY', 'JOR', 'KAZ', 'KEN', 'KIR', 'PRK', 'KOR', 'KWT', 'KGZ', 'LAO', 'LVA', 'LBN', 'LSO', 'LBR', 'LBY', 'LIE', 'LTU', 'LUX', 'MAC', 'MKD', 'MDG', 'MWI', 'MYS', 'MDV', 'MLI', 'MLT', 'MHL', 'MTQ', 'MRT', 'MUS', 'MYT', 'MEX', 'FSM', 'MDA', 'MCO', 'MNG', 'MNE', 'MSR', 'MAR', 'MOZ', 'MMR', 'NAM', 'NRU', 'NPL', 'NLD', 'NCL', 'NZL', 'NIC', 'NER', 'NGA', 'NIU', 'NFK', 'MNP', 'NOR', 'OMN', 'PAK', 'PLW', 'PSE', 'PAN', 'PNG', 'PRY', 'PER', 'PHL', 'PCN', 'POL', 'PRT', 'PRI', 'QAT', 'REU', 'ROU', 'RUS', 'RWA', 'BLM', 'SHN', 'KNA', 'LCA', 'MAF', 'SPM', 'VCT', 'WSM', 'SMR', 'STP', 'SAU', 'SEN', 'SRB', 'SYC', 'SLE', 'SGP', 'SXM', 'SVK', 'SVN', 'SLB', 'SOM', 'ZAF', 'SGS', 'SSD', 'ESP', 'LKA', 'SDN', 'SUR', 'SJM', 'SWZ', 'SWE', 'CHE', 'SYR', 'TWN', 'TJK', 'TZA', 'THA', 'TLS', 'TGO', 'TKL', 'TON', 'TTO', 'TUN', 'TUR', 'TKM', 'TCA', 'TUV', 'UGA', 'UKR', 'ARE', 'GBR', 'USA', 'UMI', 'URY', 'UZB', 'VUT', 'VEN', 'VNM', 'VGB', 'VIR', 'WLF', 'ESH', 'YEM', 'ZMB', 'ZWE']); + +function isISO31661Alpha3(str) { + (0, _assertString.default)(str); + return validISO31661Alpha3CountriesCodes.has(str.toUpperCase()); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISO4217.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISO4217.js new file mode 100644 index 00000000..fd052f38 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISO4217.js @@ -0,0 +1,22 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isISO4217; +exports.CurrencyCodes = void 0; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// from https://en.wikipedia.org/wiki/ISO_4217 +var validISO4217CurrencyCodes = new Set(['AED', 'AFN', 'ALL', 'AMD', 'ANG', 'AOA', 'ARS', 'AUD', 'AWG', 'AZN', 'BAM', 'BBD', 'BDT', 'BGN', 'BHD', 'BIF', 'BMD', 'BND', 'BOB', 'BOV', 'BRL', 'BSD', 'BTN', 'BWP', 'BYN', 'BZD', 'CAD', 'CDF', 'CHE', 'CHF', 'CHW', 'CLF', 'CLP', 'CNY', 'COP', 'COU', 'CRC', 'CUC', 'CUP', 'CVE', 'CZK', 'DJF', 'DKK', 'DOP', 'DZD', 'EGP', 'ERN', 'ETB', 'EUR', 'FJD', 'FKP', 'GBP', 'GEL', 'GHS', 'GIP', 'GMD', 'GNF', 'GTQ', 'GYD', 'HKD', 'HNL', 'HRK', 'HTG', 'HUF', 'IDR', 'ILS', 'INR', 'IQD', 'IRR', 'ISK', 'JMD', 'JOD', 'JPY', 'KES', 'KGS', 'KHR', 'KMF', 'KPW', 'KRW', 'KWD', 'KYD', 'KZT', 'LAK', 'LBP', 'LKR', 'LRD', 'LSL', 'LYD', 'MAD', 'MDL', 'MGA', 'MKD', 'MMK', 'MNT', 'MOP', 'MRU', 'MUR', 'MVR', 'MWK', 'MXN', 'MXV', 'MYR', 'MZN', 'NAD', 'NGN', 'NIO', 'NOK', 'NPR', 'NZD', 'OMR', 'PAB', 'PEN', 'PGK', 'PHP', 'PKR', 'PLN', 'PYG', 'QAR', 'RON', 'RSD', 'RUB', 'RWF', 'SAR', 'SBD', 'SCR', 'SDG', 'SEK', 'SGD', 'SHP', 'SLL', 'SOS', 'SRD', 'SSP', 'STN', 'SVC', 'SYP', 'SZL', 'THB', 'TJS', 'TMT', 'TND', 'TOP', 'TRY', 'TTD', 'TWD', 'TZS', 'UAH', 'UGX', 'USD', 'USN', 'UYI', 'UYU', 'UYW', 'UZS', 'VES', 'VND', 'VUV', 'WST', 'XAF', 'XAG', 'XAU', 'XBA', 'XBB', 'XBC', 'XBD', 'XCD', 'XDR', 'XOF', 'XPD', 'XPF', 'XPT', 'XSU', 'XTS', 'XUA', 'XXX', 'YER', 'ZAR', 'ZMW', 'ZWL']); + +function isISO4217(str) { + (0, _assertString.default)(str); + return validISO4217CurrencyCodes.has(str.toUpperCase()); +} + +var CurrencyCodes = validISO4217CurrencyCodes; +exports.CurrencyCodes = CurrencyCodes; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISO8601.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISO8601.js new file mode 100644 index 00000000..b7396061 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISO8601.js @@ -0,0 +1,59 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isISO8601; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/* eslint-disable max-len */ +// from http://goo.gl/0ejHHW +var iso8601 = /^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/; // same as above, except with a strict 'T' separator between date and time + +var iso8601StrictSeparator = /^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T]((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/; +/* eslint-enable max-len */ + +var isValidDate = function isValidDate(str) { + // str must have passed the ISO8601 check + // this check is meant to catch invalid dates + // like 2009-02-31 + // first check for ordinal dates + var ordinalMatch = str.match(/^(\d{4})-?(\d{3})([ T]{1}\.*|$)/); + + if (ordinalMatch) { + var oYear = Number(ordinalMatch[1]); + var oDay = Number(ordinalMatch[2]); // if is leap year + + if (oYear % 4 === 0 && oYear % 100 !== 0 || oYear % 400 === 0) return oDay <= 366; + return oDay <= 365; + } + + var match = str.match(/(\d{4})-?(\d{0,2})-?(\d*)/).map(Number); + var year = match[1]; + var month = match[2]; + var day = match[3]; + var monthString = month ? "0".concat(month).slice(-2) : month; + var dayString = day ? "0".concat(day).slice(-2) : day; // create a date object and compare + + var d = new Date("".concat(year, "-").concat(monthString || '01', "-").concat(dayString || '01')); + + if (month && day) { + return d.getUTCFullYear() === year && d.getUTCMonth() + 1 === month && d.getUTCDate() === day; + } + + return true; +}; + +function isISO8601(str) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + (0, _assertString.default)(str); + var check = options.strictSeparator ? iso8601StrictSeparator.test(str) : iso8601.test(str); + if (check && options.strict) return isValidDate(str); + return check; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISRC.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISRC.js new file mode 100644 index 00000000..c5ce1e21 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISRC.js @@ -0,0 +1,21 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isISRC; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// see http://isrc.ifpi.org/en/isrc-standard/code-syntax +var isrc = /^[A-Z]{2}[0-9A-Z]{3}\d{2}\d{5}$/; + +function isISRC(str) { + (0, _assertString.default)(str); + return isrc.test(str); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISSN.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISSN.js new file mode 100644 index 00000000..eee87b35 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isISSN.js @@ -0,0 +1,37 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isISSN; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var issn = '^\\d{4}-?\\d{3}[\\dX]$'; + +function isISSN(str) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + (0, _assertString.default)(str); + var testIssn = issn; + testIssn = options.require_hyphen ? testIssn.replace('?', '') : testIssn; + testIssn = options.case_sensitive ? new RegExp(testIssn) : new RegExp(testIssn, 'i'); + + if (!testIssn.test(str)) { + return false; + } + + var digits = str.replace('-', '').toUpperCase(); + var checksum = 0; + + for (var i = 0; i < digits.length; i++) { + var digit = digits[i]; + checksum += (digit === 'X' ? 10 : +digit) * (8 - i); + } + + return checksum % 11 === 0; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isIdentityCard.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isIdentityCard.js new file mode 100644 index 00000000..993f2adc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isIdentityCard.js @@ -0,0 +1,384 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isIdentityCard; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +var _isInt = _interopRequireDefault(require("./isInt")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var validators = { + PL: function PL(str) { + (0, _assertString.default)(str); + var weightOfDigits = { + 1: 1, + 2: 3, + 3: 7, + 4: 9, + 5: 1, + 6: 3, + 7: 7, + 8: 9, + 9: 1, + 10: 3, + 11: 0 + }; + + if (str != null && str.length === 11 && (0, _isInt.default)(str, { + allow_leading_zeroes: true + })) { + var digits = str.split('').slice(0, -1); + var sum = digits.reduce(function (acc, digit, index) { + return acc + Number(digit) * weightOfDigits[index + 1]; + }, 0); + var modulo = sum % 10; + var lastDigit = Number(str.charAt(str.length - 1)); + + if (modulo === 0 && lastDigit === 0 || lastDigit === 10 - modulo) { + return true; + } + } + + return false; + }, + ES: function ES(str) { + (0, _assertString.default)(str); + var DNI = /^[0-9X-Z][0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKE]$/; + var charsValue = { + X: 0, + Y: 1, + Z: 2 + }; + var controlDigits = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E']; // sanitize user input + + var sanitized = str.trim().toUpperCase(); // validate the data structure + + if (!DNI.test(sanitized)) { + return false; + } // validate the control digit + + + var number = sanitized.slice(0, -1).replace(/[X,Y,Z]/g, function (char) { + return charsValue[char]; + }); + return sanitized.endsWith(controlDigits[number % 23]); + }, + FI: function FI(str) { + // https://dvv.fi/en/personal-identity-code#:~:text=control%20character%20for%20a-,personal,-identity%20code%20calculated + (0, _assertString.default)(str); + + if (str.length !== 11) { + return false; + } + + if (!str.match(/^\d{6}[\-A\+]\d{3}[0-9ABCDEFHJKLMNPRSTUVWXY]{1}$/)) { + return false; + } + + var checkDigits = '0123456789ABCDEFHJKLMNPRSTUVWXY'; + var idAsNumber = parseInt(str.slice(0, 6), 10) * 1000 + parseInt(str.slice(7, 10), 10); + var remainder = idAsNumber % 31; + var checkDigit = checkDigits[remainder]; + return checkDigit === str.slice(10, 11); + }, + IN: function IN(str) { + var DNI = /^[1-9]\d{3}\s?\d{4}\s?\d{4}$/; // multiplication table + + var d = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 0, 6, 7, 8, 9, 5], [2, 3, 4, 0, 1, 7, 8, 9, 5, 6], [3, 4, 0, 1, 2, 8, 9, 5, 6, 7], [4, 0, 1, 2, 3, 9, 5, 6, 7, 8], [5, 9, 8, 7, 6, 0, 4, 3, 2, 1], [6, 5, 9, 8, 7, 1, 0, 4, 3, 2], [7, 6, 5, 9, 8, 2, 1, 0, 4, 3], [8, 7, 6, 5, 9, 3, 2, 1, 0, 4], [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]]; // permutation table + + var p = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 5, 7, 6, 2, 8, 3, 0, 9, 4], [5, 8, 0, 3, 7, 9, 6, 1, 4, 2], [8, 9, 1, 6, 0, 4, 3, 5, 2, 7], [9, 4, 5, 3, 1, 2, 6, 8, 7, 0], [4, 2, 8, 6, 5, 7, 3, 9, 0, 1], [2, 7, 9, 3, 8, 0, 6, 4, 1, 5], [7, 0, 4, 6, 9, 1, 3, 2, 5, 8]]; // sanitize user input + + var sanitized = str.trim(); // validate the data structure + + if (!DNI.test(sanitized)) { + return false; + } + + var c = 0; + var invertedArray = sanitized.replace(/\s/g, '').split('').map(Number).reverse(); + invertedArray.forEach(function (val, i) { + c = d[c][p[i % 8][val]]; + }); + return c === 0; + }, + IR: function IR(str) { + if (!str.match(/^\d{10}$/)) return false; + str = "0000".concat(str).substr(str.length - 6); + if (parseInt(str.substr(3, 6), 10) === 0) return false; + var lastNumber = parseInt(str.substr(9, 1), 10); + var sum = 0; + + for (var i = 0; i < 9; i++) { + sum += parseInt(str.substr(i, 1), 10) * (10 - i); + } + + sum %= 11; + return sum < 2 && lastNumber === sum || sum >= 2 && lastNumber === 11 - sum; + }, + IT: function IT(str) { + if (str.length !== 9) return false; + if (str === 'CA00000AA') return false; // https://it.wikipedia.org/wiki/Carta_d%27identit%C3%A0_elettronica_italiana + + return str.search(/C[A-Z][0-9]{5}[A-Z]{2}/i) > -1; + }, + NO: function NO(str) { + var sanitized = str.trim(); + if (isNaN(Number(sanitized))) return false; + if (sanitized.length !== 11) return false; + if (sanitized === '00000000000') return false; // https://no.wikipedia.org/wiki/F%C3%B8dselsnummer + + var f = sanitized.split('').map(Number); + var k1 = (11 - (3 * f[0] + 7 * f[1] + 6 * f[2] + 1 * f[3] + 8 * f[4] + 9 * f[5] + 4 * f[6] + 5 * f[7] + 2 * f[8]) % 11) % 11; + var k2 = (11 - (5 * f[0] + 4 * f[1] + 3 * f[2] + 2 * f[3] + 7 * f[4] + 6 * f[5] + 5 * f[6] + 4 * f[7] + 3 * f[8] + 2 * k1) % 11) % 11; + if (k1 !== f[9] || k2 !== f[10]) return false; + return true; + }, + TH: function TH(str) { + if (!str.match(/^[1-8]\d{12}$/)) return false; // validate check digit + + var sum = 0; + + for (var i = 0; i < 12; i++) { + sum += parseInt(str[i], 10) * (13 - i); + } + + return str[12] === ((11 - sum % 11) % 10).toString(); + }, + LK: function LK(str) { + var old_nic = /^[1-9]\d{8}[vx]$/i; + var new_nic = /^[1-9]\d{11}$/i; + if (str.length === 10 && old_nic.test(str)) return true;else if (str.length === 12 && new_nic.test(str)) return true; + return false; + }, + 'he-IL': function heIL(str) { + var DNI = /^\d{9}$/; // sanitize user input + + var sanitized = str.trim(); // validate the data structure + + if (!DNI.test(sanitized)) { + return false; + } + + var id = sanitized; + var sum = 0, + incNum; + + for (var i = 0; i < id.length; i++) { + incNum = Number(id[i]) * (i % 2 + 1); // Multiply number by 1 or 2 + + sum += incNum > 9 ? incNum - 9 : incNum; // Sum the digits up and add to total + } + + return sum % 10 === 0; + }, + 'ar-LY': function arLY(str) { + // Libya National Identity Number NIN is 12 digits, the first digit is either 1 or 2 + var NIN = /^(1|2)\d{11}$/; // sanitize user input + + var sanitized = str.trim(); // validate the data structure + + if (!NIN.test(sanitized)) { + return false; + } + + return true; + }, + 'ar-TN': function arTN(str) { + var DNI = /^\d{8}$/; // sanitize user input + + var sanitized = str.trim(); // validate the data structure + + if (!DNI.test(sanitized)) { + return false; + } + + return true; + }, + 'zh-CN': function zhCN(str) { + var provincesAndCities = ['11', // 北京 + '12', // 天津 + '13', // 河北 + '14', // 山西 + '15', // 内蒙古 + '21', // 辽宁 + '22', // 吉林 + '23', // 黑龙江 + '31', // 上海 + '32', // 江苏 + '33', // 浙江 + '34', // 安徽 + '35', // 福建 + '36', // 江西 + '37', // 山东 + '41', // 河南 + '42', // 湖北 + '43', // 湖南 + '44', // 广东 + '45', // 广西 + '46', // 海南 + '50', // 重庆 + '51', // 四川 + '52', // 贵州 + '53', // 云南 + '54', // 西藏 + '61', // 陕西 + '62', // 甘肃 + '63', // 青海 + '64', // 宁夏 + '65', // 新疆 + '71', // 台湾 + '81', // 香港 + '82', // 澳门 + '91' // 国外 + ]; + var powers = ['7', '9', '10', '5', '8', '4', '2', '1', '6', '3', '7', '9', '10', '5', '8', '4', '2']; + var parityBit = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']; + + var checkAddressCode = function checkAddressCode(addressCode) { + return provincesAndCities.includes(addressCode); + }; + + var checkBirthDayCode = function checkBirthDayCode(birDayCode) { + var yyyy = parseInt(birDayCode.substring(0, 4), 10); + var mm = parseInt(birDayCode.substring(4, 6), 10); + var dd = parseInt(birDayCode.substring(6), 10); + var xdata = new Date(yyyy, mm - 1, dd); + + if (xdata > new Date()) { + return false; // eslint-disable-next-line max-len + } else if (xdata.getFullYear() === yyyy && xdata.getMonth() === mm - 1 && xdata.getDate() === dd) { + return true; + } + + return false; + }; + + var getParityBit = function getParityBit(idCardNo) { + var id17 = idCardNo.substring(0, 17); + var power = 0; + + for (var i = 0; i < 17; i++) { + power += parseInt(id17.charAt(i), 10) * parseInt(powers[i], 10); + } + + var mod = power % 11; + return parityBit[mod]; + }; + + var checkParityBit = function checkParityBit(idCardNo) { + return getParityBit(idCardNo) === idCardNo.charAt(17).toUpperCase(); + }; + + var check15IdCardNo = function check15IdCardNo(idCardNo) { + var check = /^[1-9]\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}$/.test(idCardNo); + if (!check) return false; + var addressCode = idCardNo.substring(0, 2); + check = checkAddressCode(addressCode); + if (!check) return false; + var birDayCode = "19".concat(idCardNo.substring(6, 12)); + check = checkBirthDayCode(birDayCode); + if (!check) return false; + return true; + }; + + var check18IdCardNo = function check18IdCardNo(idCardNo) { + var check = /^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}(\d|x|X)$/.test(idCardNo); + if (!check) return false; + var addressCode = idCardNo.substring(0, 2); + check = checkAddressCode(addressCode); + if (!check) return false; + var birDayCode = idCardNo.substring(6, 14); + check = checkBirthDayCode(birDayCode); + if (!check) return false; + return checkParityBit(idCardNo); + }; + + var checkIdCardNo = function checkIdCardNo(idCardNo) { + var check = /^\d{15}|(\d{17}(\d|x|X))$/.test(idCardNo); + if (!check) return false; + + if (idCardNo.length === 15) { + return check15IdCardNo(idCardNo); + } + + return check18IdCardNo(idCardNo); + }; + + return checkIdCardNo(str); + }, + 'zh-TW': function zhTW(str) { + var ALPHABET_CODES = { + A: 10, + B: 11, + C: 12, + D: 13, + E: 14, + F: 15, + G: 16, + H: 17, + I: 34, + J: 18, + K: 19, + L: 20, + M: 21, + N: 22, + O: 35, + P: 23, + Q: 24, + R: 25, + S: 26, + T: 27, + U: 28, + V: 29, + W: 32, + X: 30, + Y: 31, + Z: 33 + }; + var sanitized = str.trim().toUpperCase(); + if (!/^[A-Z][0-9]{9}$/.test(sanitized)) return false; + return Array.from(sanitized).reduce(function (sum, number, index) { + if (index === 0) { + var code = ALPHABET_CODES[number]; + return code % 10 * 9 + Math.floor(code / 10); + } + + if (index === 9) { + return (10 - sum % 10 - Number(number)) % 10 === 0; + } + + return sum + Number(number) * (9 - index); + }, 0); + } +}; + +function isIdentityCard(str, locale) { + (0, _assertString.default)(str); + + if (locale in validators) { + return validators[locale](str); + } else if (locale === 'any') { + for (var key in validators) { + // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes + // istanbul ignore else + if (validators.hasOwnProperty(key)) { + var validator = validators[key]; + + if (validator(str)) { + return true; + } + } + } + + return false; + } + + throw new Error("Invalid locale '".concat(locale, "'")); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isIn.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isIn.js new file mode 100644 index 00000000..62c5a4d3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isIn.js @@ -0,0 +1,42 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isIn; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +var _toString = _interopRequireDefault(require("./util/toString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function isIn(str, options) { + (0, _assertString.default)(str); + var i; + + if (Object.prototype.toString.call(options) === '[object Array]') { + var array = []; + + for (i in options) { + // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes + // istanbul ignore else + if ({}.hasOwnProperty.call(options, i)) { + array[i] = (0, _toString.default)(options[i]); + } + } + + return array.indexOf(str) >= 0; + } else if (_typeof(options) === 'object') { + return options.hasOwnProperty(str); + } else if (options && typeof options.indexOf === 'function') { + return options.indexOf(str) >= 0; + } + + return false; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isInt.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isInt.js new file mode 100644 index 00000000..40f776c3 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isInt.js @@ -0,0 +1,30 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isInt; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var int = /^(?:[-+]?(?:0|[1-9][0-9]*))$/; +var intLeadingZeroes = /^[-+]?[0-9]+$/; + +function isInt(str, options) { + (0, _assertString.default)(str); + options = options || {}; // Get the regex to use for testing, based on whether + // leading zeroes are allowed or not. + + var regex = options.hasOwnProperty('allow_leading_zeroes') && !options.allow_leading_zeroes ? int : intLeadingZeroes; // Check min/max/lt/gt + + var minCheckPassed = !options.hasOwnProperty('min') || str >= options.min; + var maxCheckPassed = !options.hasOwnProperty('max') || str <= options.max; + var ltCheckPassed = !options.hasOwnProperty('lt') || str < options.lt; + var gtCheckPassed = !options.hasOwnProperty('gt') || str > options.gt; + return regex.test(str) && minCheckPassed && maxCheckPassed && ltCheckPassed && gtCheckPassed; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isJSON.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isJSON.js new file mode 100644 index 00000000..78c09ef0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isJSON.js @@ -0,0 +1,41 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isJSON; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +var _merge = _interopRequireDefault(require("./util/merge")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +var default_json_options = { + allow_primitives: false +}; + +function isJSON(str, options) { + (0, _assertString.default)(str); + + try { + options = (0, _merge.default)(options, default_json_options); + var primitives = []; + + if (options.allow_primitives) { + primitives = [null, false, true]; + } + + var obj = JSON.parse(str); + return primitives.includes(obj) || !!obj && _typeof(obj) === 'object'; + } catch (e) { + /* ignore */ + } + + return false; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isJWT.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isJWT.js new file mode 100644 index 00000000..65d89fc4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isJWT.js @@ -0,0 +1,31 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isJWT; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +var _isBase = _interopRequireDefault(require("./isBase64")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function isJWT(str) { + (0, _assertString.default)(str); + var dotSplit = str.split('.'); + var len = dotSplit.length; + + if (len > 3 || len < 2) { + return false; + } + + return dotSplit.reduce(function (acc, currElem) { + return acc && (0, _isBase.default)(currElem, { + urlSafe: true + }); + }, true); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isLatLong.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isLatLong.js new file mode 100644 index 00000000..e288812b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isLatLong.js @@ -0,0 +1,37 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isLatLong; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +var _merge = _interopRequireDefault(require("./util/merge")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var lat = /^\(?[+-]?(90(\.0+)?|[1-8]?\d(\.\d+)?)$/; +var long = /^\s?[+-]?(180(\.0+)?|1[0-7]\d(\.\d+)?|\d{1,2}(\.\d+)?)\)?$/; +var latDMS = /^(([1-8]?\d)\D+([1-5]?\d|60)\D+([1-5]?\d|60)(\.\d+)?|90\D+0\D+0)\D+[NSns]?$/i; +var longDMS = /^\s*([1-7]?\d{1,2}\D+([1-5]?\d|60)\D+([1-5]?\d|60)(\.\d+)?|180\D+0\D+0)\D+[EWew]?$/i; +var defaultLatLongOptions = { + checkDMS: false +}; + +function isLatLong(str, options) { + (0, _assertString.default)(str); + options = (0, _merge.default)(options, defaultLatLongOptions); + if (!str.includes(',')) return false; + var pair = str.split(','); + if (pair[0].startsWith('(') && !pair[1].endsWith(')') || pair[1].endsWith(')') && !pair[0].startsWith('(')) return false; + + if (options.checkDMS) { + return latDMS.test(pair[0]) && longDMS.test(pair[1]); + } + + return lat.test(pair[0]) && long.test(pair[1]); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isLength.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isLength.js new file mode 100644 index 00000000..39b7597b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isLength.js @@ -0,0 +1,35 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isLength; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +/* eslint-disable prefer-rest-params */ +function isLength(str, options) { + (0, _assertString.default)(str); + var min; + var max; + + if (_typeof(options) === 'object') { + min = options.min || 0; + max = options.max; + } else { + // backwards compatibility: isLength(str, min [, max]) + min = arguments[1] || 0; + max = arguments[2]; + } + + var surrogatePairs = str.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g) || []; + var len = str.length - surrogatePairs.length; + return len >= min && (typeof max === 'undefined' || len <= max); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isLicensePlate.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isLicensePlate.js new file mode 100644 index 00000000..e65428ec --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isLicensePlate.js @@ -0,0 +1,58 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isLicensePlate; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var validators = { + 'cs-CZ': function csCZ(str) { + return /^(([ABCDEFHKIJKLMNPRSTUVXYZ]|[0-9])-?){5,8}$/.test(str); + }, + 'de-DE': function deDE(str) { + return /^((AW|UL|AK|GA|AÖ|LF|AZ|AM|AS|ZE|AN|AB|A|KG|KH|BA|EW|BZ|HY|KM|BT|HP|B|BC|BI|BO|FN|TT|ÜB|BN|AH|BS|FR|HB|ZZ|BB|BK|BÖ|OC|OK|CW|CE|C|CO|LH|CB|KW|LC|LN|DA|DI|DE|DH|SY|NÖ|DO|DD|DU|DN|D|EI|EA|EE|FI|EM|EL|EN|PF|ED|EF|ER|AU|ZP|E|ES|NT|EU|FL|FO|FT|FF|F|FS|FD|FÜ|GE|G|GI|GF|GS|ZR|GG|GP|GR|NY|ZI|GÖ|GZ|GT|HA|HH|HM|HU|WL|HZ|WR|RN|HK|HD|HN|HS|GK|HE|HF|RZ|HI|HG|HO|HX|IK|IL|IN|J|JL|KL|KA|KS|KF|KE|KI|KT|KO|KN|KR|KC|KU|K|LD|LL|LA|L|OP|LM|LI|LB|LU|LÖ|HL|LG|MD|GN|MZ|MA|ML|MR|MY|AT|DM|MC|NZ|RM|RG|MM|ME|MB|MI|FG|DL|HC|MW|RL|MK|MG|MÜ|WS|MH|M|MS|NU|NB|ND|NM|NK|NW|NR|NI|NF|DZ|EB|OZ|TG|TO|N|OA|GM|OB|CA|EH|FW|OF|OL|OE|OG|BH|LR|OS|AA|GD|OH|KY|NP|WK|PB|PA|PE|PI|PS|P|PM|PR|RA|RV|RE|R|H|SB|WN|RS|RD|RT|BM|NE|GV|RP|SU|GL|RO|GÜ|RH|EG|RW|PN|SK|MQ|RU|SZ|RI|SL|SM|SC|HR|FZ|VS|SW|SN|CR|SE|SI|SO|LP|SG|NH|SP|IZ|ST|BF|TE|HV|OD|SR|S|AC|DW|ZW|TF|TS|TR|TÜ|UM|PZ|TP|UE|UN|UH|MN|KK|VB|V|AE|PL|RC|VG|GW|PW|VR|VK|KB|WA|WT|BE|WM|WE|AP|MO|WW|FB|WZ|WI|WB|JE|WF|WO|W|WÜ|BL|Z|GC)[- ]?[A-Z]{1,2}[- ]?\d{1,4}|(AIC|FDB|ABG|SLN|SAW|KLZ|BUL|ESB|NAB|SUL|WST|ABI|AZE|BTF|KÖT|DKB|FEU|ROT|ALZ|SMÜ|WER|AUR|NOR|DÜW|BRK|HAB|TÖL|WOR|BAD|BAR|BER|BIW|EBS|KEM|MÜB|PEG|BGL|BGD|REI|WIL|BKS|BIR|WAT|BOR|BOH|BOT|BRB|BLK|HHM|NEB|NMB|WSF|LEO|HDL|WMS|WZL|BÜS|CHA|KÖZ|ROD|WÜM|CLP|NEC|COC|ZEL|COE|CUX|DAH|LDS|DEG|DEL|RSL|DLG|DGF|LAN|HEI|MED|DON|KIB|ROK|JÜL|MON|SLE|EBE|EIC|HIG|WBS|BIT|PRÜ|LIB|EMD|WIT|ERH|HÖS|ERZ|ANA|ASZ|MAB|MEK|STL|SZB|FDS|HCH|HOR|WOL|FRG|GRA|WOS|FRI|FFB|GAP|GER|BRL|CLZ|GTH|NOH|HGW|GRZ|LÖB|NOL|WSW|DUD|HMÜ|OHA|KRU|HAL|HAM|HBS|QLB|HVL|NAU|HAS|EBN|GEO|HOH|HDH|ERK|HER|WAN|HEF|ROF|HBN|ALF|HSK|USI|NAI|REH|SAN|KÜN|ÖHR|HOL|WAR|ARN|BRG|GNT|HOG|WOH|KEH|MAI|PAR|RID|ROL|KLE|GEL|KUS|KYF|ART|SDH|LDK|DIL|MAL|VIB|LER|BNA|GHA|GRM|MTL|WUR|LEV|LIF|STE|WEL|LIP|VAI|LUP|HGN|LBZ|LWL|PCH|STB|DAN|MKK|SLÜ|MSP|TBB|MGH|MTK|BIN|MSH|EIL|HET|SGH|BID|MYK|MSE|MST|MÜR|WRN|MEI|GRH|RIE|MZG|MIL|OBB|BED|FLÖ|MOL|FRW|SEE|SRB|AIB|MOS|BCH|ILL|SOB|NMS|NEA|SEF|UFF|NEW|VOH|NDH|TDO|NWM|GDB|GVM|WIS|NOM|EIN|GAN|LAU|HEB|OHV|OSL|SFB|ERB|LOS|BSK|KEL|BSB|MEL|WTL|OAL|FÜS|MOD|OHZ|OPR|BÜR|PAF|PLÖ|CAS|GLA|REG|VIT|ECK|SIM|GOA|EMS|DIZ|GOH|RÜD|SWA|NES|KÖN|MET|LRO|BÜZ|DBR|ROS|TET|HRO|ROW|BRV|HIP|PAN|GRI|SHK|EIS|SRO|SOK|LBS|SCZ|MER|QFT|SLF|SLS|HOM|SLK|ASL|BBG|SBK|SFT|SHG|MGN|MEG|ZIG|SAD|NEN|OVI|SHA|BLB|SIG|SON|SPN|FOR|GUB|SPB|IGB|WND|STD|STA|SDL|OBG|HST|BOG|SHL|PIR|FTL|SEB|SÖM|SÜW|TIR|SAB|TUT|ANG|SDT|LÜN|LSZ|MHL|VEC|VER|VIE|OVL|ANK|OVP|SBG|UEM|UER|WLG|GMN|NVP|RDG|RÜG|DAU|FKB|WAF|WAK|SLZ|WEN|SOG|APD|WUG|GUN|ESW|WIZ|WES|DIN|BRA|BÜD|WHV|HWI|GHC|WTM|WOB|WUN|MAK|SEL|OCH|HOT|WDA)[- ]?(([A-Z][- ]?\d{1,4})|([A-Z]{2}[- ]?\d{1,3})))[- ]?(E|H)?$/.test(str); + }, + 'de-LI': function deLI(str) { + return /^FL[- ]?\d{1,5}[UZ]?$/.test(str); + }, + 'fi-FI': function fiFI(str) { + return /^(?=.{4,7})(([A-Z]{1,3}|[0-9]{1,3})[\s-]?([A-Z]{1,3}|[0-9]{1,5}))$/.test(str); + }, + 'pt-PT': function ptPT(str) { + return /^([A-Z]{2}|[0-9]{2})[ -·]?([A-Z]{2}|[0-9]{2})[ -·]?([A-Z]{2}|[0-9]{2})$/.test(str); + }, + 'sq-AL': function sqAL(str) { + return /^[A-Z]{2}[- ]?((\d{3}[- ]?(([A-Z]{2})|T))|(R[- ]?\d{3}))$/.test(str); + }, + 'pt-BR': function ptBR(str) { + return /^[A-Z]{3}[ -]?[0-9][A-Z][0-9]{2}|[A-Z]{3}[ -]?[0-9]{4}$/.test(str); + } +}; + +function isLicensePlate(str, locale) { + (0, _assertString.default)(str); + + if (locale in validators) { + return validators[locale](str); + } else if (locale === 'any') { + for (var key in validators) { + /* eslint guard-for-in: 0 */ + var validator = validators[key]; + + if (validator(str)) { + return true; + } + } + + return false; + } + + throw new Error("Invalid locale '".concat(locale, "'")); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isLocale.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isLocale.js new file mode 100644 index 00000000..1a4f6098 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isLocale.js @@ -0,0 +1,25 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isLocale; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var localeReg = /^[A-Za-z]{2,4}([_-]([A-Za-z]{4}|[\d]{3}))?([_-]([A-Za-z]{2}|[\d]{3}))?$/; + +function isLocale(str) { + (0, _assertString.default)(str); + + if (str === 'en_US_POSIX' || str === 'ca_ES_VALENCIA') { + return true; + } + + return localeReg.test(str); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isLowercase.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isLowercase.js new file mode 100644 index 00000000..7f412d90 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isLowercase.js @@ -0,0 +1,18 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isLowercase; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function isLowercase(str) { + (0, _assertString.default)(str); + return str === str.toLowerCase(); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMACAddress.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMACAddress.js new file mode 100644 index 00000000..125ea805 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMACAddress.js @@ -0,0 +1,30 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isMACAddress; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var macAddress = /^(?:[0-9a-fA-F]{2}([-:\s]))([0-9a-fA-F]{2}\1){4}([0-9a-fA-F]{2})$/; +var macAddressNoSeparators = /^([0-9a-fA-F]){12}$/; +var macAddressWithDots = /^([0-9a-fA-F]{4}\.){2}([0-9a-fA-F]{4})$/; + +function isMACAddress(str, options) { + (0, _assertString.default)(str); + /** + * @deprecated `no_colons` TODO: remove it in the next major + */ + + if (options && (options.no_colons || options.no_separators)) { + return macAddressNoSeparators.test(str); + } + + return macAddress.test(str) || macAddressWithDots.test(str); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMD5.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMD5.js new file mode 100644 index 00000000..57f2b0e4 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMD5.js @@ -0,0 +1,20 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isMD5; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var md5 = /^[a-f0-9]{32}$/; + +function isMD5(str) { + (0, _assertString.default)(str); + return md5.test(str); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMagnetURI.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMagnetURI.js new file mode 100644 index 00000000..7477e4c9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMagnetURI.js @@ -0,0 +1,20 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isMagnetURI; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var magnetURI = /^magnet:\?xt(?:\.1)?=urn:(?:aich|bitprint|btih|ed2k|ed2khash|kzhash|md5|sha1|tree:tiger):[a-z0-9]{32}(?:[a-z0-9]{8})?($|&)/i; + +function isMagnetURI(url) { + (0, _assertString.default)(url); + return magnetURI.test(url.trim()); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMimeType.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMimeType.js new file mode 100644 index 00000000..917aef2c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMimeType.js @@ -0,0 +1,51 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isMimeType; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/* + Checks if the provided string matches to a correct Media type format (MIME type) + + This function only checks is the string format follows the + etablished rules by the according RFC specifications. + This function supports 'charset' in textual media types + (https://tools.ietf.org/html/rfc6657). + + This function does not check against all the media types listed + by the IANA (https://www.iana.org/assignments/media-types/media-types.xhtml) + because of lightness purposes : it would require to include + all these MIME types in this librairy, which would weigh it + significantly. This kind of effort maybe is not worth for the use that + this function has in this entire librairy. + + More informations in the RFC specifications : + - https://tools.ietf.org/html/rfc2045 + - https://tools.ietf.org/html/rfc2046 + - https://tools.ietf.org/html/rfc7231#section-3.1.1.1 + - https://tools.ietf.org/html/rfc7231#section-3.1.1.5 +*/ +// Match simple MIME types +// NB : +// Subtype length must not exceed 100 characters. +// This rule does not comply to the RFC specs (what is the max length ?). +var mimeTypeSimple = /^(application|audio|font|image|message|model|multipart|text|video)\/[a-zA-Z0-9\.\-\+]{1,100}$/i; // eslint-disable-line max-len +// Handle "charset" in "text/*" + +var mimeTypeText = /^text\/[a-zA-Z0-9\.\-\+]{1,100};\s?charset=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?$/i; // eslint-disable-line max-len +// Handle "boundary" in "multipart/*" + +var mimeTypeMultipart = /^multipart\/[a-zA-Z0-9\.\-\+]{1,100}(;\s?(boundary|charset)=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?){0,2}$/i; // eslint-disable-line max-len + +function isMimeType(str) { + (0, _assertString.default)(str); + return mimeTypeSimple.test(str) || mimeTypeText.test(str) || mimeTypeMultipart.test(str); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMobilePhone.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMobilePhone.js new file mode 100644 index 00000000..a349f06f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMobilePhone.js @@ -0,0 +1,200 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isMobilePhone; +exports.locales = void 0; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/* eslint-disable max-len */ +var phones = { + 'am-AM': /^(\+?374|0)((10|[9|7][0-9])\d{6}$|[2-4]\d{7}$)/, + 'ar-AE': /^((\+?971)|0)?5[024568]\d{7}$/, + 'ar-BH': /^(\+?973)?(3|6)\d{7}$/, + 'ar-DZ': /^(\+?213|0)(5|6|7)\d{8}$/, + 'ar-LB': /^(\+?961)?((3|81)\d{6}|7\d{7})$/, + 'ar-EG': /^((\+?20)|0)?1[0125]\d{8}$/, + 'ar-IQ': /^(\+?964|0)?7[0-9]\d{8}$/, + 'ar-JO': /^(\+?962|0)?7[789]\d{7}$/, + 'ar-KW': /^(\+?965)[569]\d{7}$/, + 'ar-LY': /^((\+?218)|0)?(9[1-6]\d{7}|[1-8]\d{7,9})$/, + 'ar-MA': /^(?:(?:\+|00)212|0)[5-7]\d{8}$/, + 'ar-OM': /^((\+|00)968)?(9[1-9])\d{6}$/, + 'ar-PS': /^(\+?970|0)5[6|9](\d{7})$/, + 'ar-SA': /^(!?(\+?966)|0)?5\d{8}$/, + 'ar-SY': /^(!?(\+?963)|0)?9\d{8}$/, + 'ar-TN': /^(\+?216)?[2459]\d{7}$/, + 'az-AZ': /^(\+994|0)(5[015]|7[07]|99)\d{7}$/, + 'bs-BA': /^((((\+|00)3876)|06))((([0-3]|[5-6])\d{6})|(4\d{7}))$/, + 'be-BY': /^(\+?375)?(24|25|29|33|44)\d{7}$/, + 'bg-BG': /^(\+?359|0)?8[789]\d{7}$/, + 'bn-BD': /^(\+?880|0)1[13456789][0-9]{8}$/, + 'ca-AD': /^(\+376)?[346]\d{5}$/, + 'cs-CZ': /^(\+?420)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/, + 'da-DK': /^(\+?45)?\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{2}$/, + 'de-DE': /^((\+49|0)[1|3])([0|5][0-45-9]\d|6([23]|0\d?)|7([0-57-9]|6\d))\d{7,9}$/, + 'de-AT': /^(\+43|0)\d{1,4}\d{3,12}$/, + 'de-CH': /^(\+41|0)([1-9])\d{1,9}$/, + 'de-LU': /^(\+352)?((6\d1)\d{6})$/, + 'dv-MV': /^(\+?960)?(7[2-9]|91|9[3-9])\d{7}$/, + 'el-GR': /^(\+?30|0)?(69\d{8})$/, + 'en-AU': /^(\+?61|0)4\d{8}$/, + 'en-BM': /^(\+?1)?441(((3|7)\d{6}$)|(5[0-3][0-9]\d{4}$)|(59\d{5}))/, + 'en-GB': /^(\+?44|0)7\d{9}$/, + 'en-GG': /^(\+?44|0)1481\d{6}$/, + 'en-GH': /^(\+233|0)(20|50|24|54|27|57|26|56|23|28|55|59)\d{7}$/, + 'en-GY': /^(\+592|0)6\d{6}$/, + 'en-HK': /^(\+?852[-\s]?)?[456789]\d{3}[-\s]?\d{4}$/, + 'en-MO': /^(\+?853[-\s]?)?[6]\d{3}[-\s]?\d{4}$/, + 'en-IE': /^(\+?353|0)8[356789]\d{7}$/, + 'en-IN': /^(\+?91|0)?[6789]\d{9}$/, + 'en-KE': /^(\+?254|0)(7|1)\d{8}$/, + 'en-KI': /^((\+686|686)?)?( )?((6|7)(2|3|8)[0-9]{6})$/, + 'en-MT': /^(\+?356|0)?(99|79|77|21|27|22|25)[0-9]{6}$/, + 'en-MU': /^(\+?230|0)?\d{8}$/, + 'en-NA': /^(\+?264|0)(6|8)\d{7}$/, + 'en-NG': /^(\+?234|0)?[789]\d{9}$/, + 'en-NZ': /^(\+?64|0)[28]\d{7,9}$/, + 'en-PK': /^((00|\+)?92|0)3[0-6]\d{8}$/, + 'en-PH': /^(09|\+639)\d{9}$/, + 'en-RW': /^(\+?250|0)?[7]\d{8}$/, + 'en-SG': /^(\+65)?[3689]\d{7}$/, + 'en-SL': /^(\+?232|0)\d{8}$/, + 'en-TZ': /^(\+?255|0)?[67]\d{8}$/, + 'en-UG': /^(\+?256|0)?[7]\d{8}$/, + 'en-US': /^((\+1|1)?( |-)?)?(\([2-9][0-9]{2}\)|[2-9][0-9]{2})( |-)?([2-9][0-9]{2}( |-)?[0-9]{4})$/, + 'en-ZA': /^(\+?27|0)\d{9}$/, + 'en-ZM': /^(\+?26)?09[567]\d{7}$/, + 'en-ZW': /^(\+263)[0-9]{9}$/, + 'en-BW': /^(\+?267)?(7[1-8]{1})\d{6}$/, + 'es-AR': /^\+?549(11|[2368]\d)\d{8}$/, + 'es-BO': /^(\+?591)?(6|7)\d{7}$/, + 'es-CO': /^(\+?57)?3(0(0|1|2|4|5)|1\d|2[0-4]|5(0|1))\d{7}$/, + 'es-CL': /^(\+?56|0)[2-9]\d{1}\d{7}$/, + 'es-CR': /^(\+506)?[2-8]\d{7}$/, + 'es-CU': /^(\+53|0053)?5\d{7}/, + 'es-DO': /^(\+?1)?8[024]9\d{7}$/, + 'es-HN': /^(\+?504)?[9|8]\d{7}$/, + 'es-EC': /^(\+?593|0)([2-7]|9[2-9])\d{7}$/, + 'es-ES': /^(\+?34)?[6|7]\d{8}$/, + 'es-PE': /^(\+?51)?9\d{8}$/, + 'es-MX': /^(\+?52)?(1|01)?\d{10,11}$/, + 'es-PA': /^(\+?507)\d{7,8}$/, + 'es-PY': /^(\+?595|0)9[9876]\d{7}$/, + 'es-SV': /^(\+?503)?[67]\d{7}$/, + 'es-UY': /^(\+598|0)9[1-9][\d]{6}$/, + 'es-VE': /^(\+?58)?(2|4)\d{9}$/, + 'et-EE': /^(\+?372)?\s?(5|8[1-4])\s?([0-9]\s?){6,7}$/, + 'fa-IR': /^(\+?98[\-\s]?|0)9[0-39]\d[\-\s]?\d{3}[\-\s]?\d{4}$/, + 'fi-FI': /^(\+?358|0)\s?(4(0|1|2|4|5|6)?|50)\s?(\d\s?){4,8}\d$/, + 'fj-FJ': /^(\+?679)?\s?\d{3}\s?\d{4}$/, + 'fo-FO': /^(\+?298)?\s?\d{2}\s?\d{2}\s?\d{2}$/, + 'fr-BF': /^(\+226|0)[67]\d{7}$/, + 'fr-CM': /^(\+?237)6[0-9]{8}$/, + 'fr-FR': /^(\+?33|0)[67]\d{8}$/, + 'fr-GF': /^(\+?594|0|00594)[67]\d{8}$/, + 'fr-GP': /^(\+?590|0|00590)[67]\d{8}$/, + 'fr-MQ': /^(\+?596|0|00596)[67]\d{8}$/, + 'fr-PF': /^(\+?689)?8[789]\d{6}$/, + 'fr-RE': /^(\+?262|0|00262)[67]\d{8}$/, + 'he-IL': /^(\+972|0)([23489]|5[012345689]|77)[1-9]\d{6}$/, + 'hu-HU': /^(\+?36|06)(20|30|31|50|70)\d{7}$/, + 'id-ID': /^(\+?62|0)8(1[123456789]|2[1238]|3[1238]|5[12356789]|7[78]|9[56789]|8[123456789])([\s?|\d]{5,11})$/, + 'it-IT': /^(\+?39)?\s?3\d{2} ?\d{6,7}$/, + 'it-SM': /^((\+378)|(0549)|(\+390549)|(\+3780549))?6\d{5,9}$/, + 'ja-JP': /^(\+81[ \-]?(\(0\))?|0)[6789]0[ \-]?\d{4}[ \-]?\d{4}$/, + 'ka-GE': /^(\+?995)?(5|79)\d{7}$/, + 'kk-KZ': /^(\+?7|8)?7\d{9}$/, + 'kl-GL': /^(\+?299)?\s?\d{2}\s?\d{2}\s?\d{2}$/, + 'ko-KR': /^((\+?82)[ \-]?)?0?1([0|1|6|7|8|9]{1})[ \-]?\d{3,4}[ \-]?\d{4}$/, + 'lt-LT': /^(\+370|8)\d{8}$/, + 'lv-LV': /^(\+?371)2\d{7}$/, + 'ms-MY': /^(\+?6?01){1}(([0145]{1}(\-|\s)?\d{7,8})|([236789]{1}(\s|\-)?\d{7}))$/, + 'mz-MZ': /^(\+?258)?8[234567]\d{7}$/, + 'nb-NO': /^(\+?47)?[49]\d{7}$/, + 'ne-NP': /^(\+?977)?9[78]\d{8}$/, + 'nl-BE': /^(\+?32|0)4\d{8}$/, + 'nl-NL': /^(((\+|00)?31\(0\))|((\+|00)?31)|0)6{1}\d{8}$/, + 'nn-NO': /^(\+?47)?[49]\d{7}$/, + 'pl-PL': /^(\+?48)? ?[5-8]\d ?\d{3} ?\d{2} ?\d{2}$/, + 'pt-BR': /^((\+?55\ ?[1-9]{2}\ ?)|(\+?55\ ?\([1-9]{2}\)\ ?)|(0[1-9]{2}\ ?)|(\([1-9]{2}\)\ ?)|([1-9]{2}\ ?))((\d{4}\-?\d{4})|(9[2-9]{1}\d{3}\-?\d{4}))$/, + 'pt-PT': /^(\+?351)?9[1236]\d{7}$/, + 'pt-AO': /^(\+244)\d{9}$/, + 'ro-RO': /^(\+?4?0)\s?7\d{2}(\/|\s|\.|\-)?\d{3}(\s|\.|\-)?\d{3}$/, + 'ru-RU': /^(\+?7|8)?9\d{9}$/, + 'si-LK': /^(?:0|94|\+94)?(7(0|1|2|4|5|6|7|8)( |-)?)\d{7}$/, + 'sl-SI': /^(\+386\s?|0)(\d{1}\s?\d{3}\s?\d{2}\s?\d{2}|\d{2}\s?\d{3}\s?\d{3})$/, + 'sk-SK': /^(\+?421)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/, + 'sq-AL': /^(\+355|0)6[789]\d{6}$/, + 'sr-RS': /^(\+3816|06)[- \d]{5,9}$/, + 'sv-SE': /^(\+?46|0)[\s\-]?7[\s\-]?[02369]([\s\-]?\d){7}$/, + 'tg-TJ': /^(\+?992)?[5][5]\d{7}$/, + 'th-TH': /^(\+66|66|0)\d{9}$/, + 'tr-TR': /^(\+?90|0)?5\d{9}$/, + 'tk-TM': /^(\+993|993|8)\d{8}$/, + 'uk-UA': /^(\+?38|8)?0\d{9}$/, + 'uz-UZ': /^(\+?998)?(6[125-79]|7[1-69]|88|9\d)\d{7}$/, + 'vi-VN': /^((\+?84)|0)((3([2-9]))|(5([25689]))|(7([0|6-9]))|(8([1-9]))|(9([0-9])))([0-9]{7})$/, + 'zh-CN': /^((\+|00)86)?(1[3-9]|9[28])\d{9}$/, + 'zh-TW': /^(\+?886\-?|0)?9\d{8}$/, + 'dz-BT': /^(\+?975|0)?(17|16|77|02)\d{6}$/ +}; +/* eslint-enable max-len */ +// aliases + +phones['en-CA'] = phones['en-US']; +phones['fr-CA'] = phones['en-CA']; +phones['fr-BE'] = phones['nl-BE']; +phones['zh-HK'] = phones['en-HK']; +phones['zh-MO'] = phones['en-MO']; +phones['ga-IE'] = phones['en-IE']; +phones['fr-CH'] = phones['de-CH']; +phones['it-CH'] = phones['fr-CH']; + +function isMobilePhone(str, locale, options) { + (0, _assertString.default)(str); + + if (options && options.strictMode && !str.startsWith('+')) { + return false; + } + + if (Array.isArray(locale)) { + return locale.some(function (key) { + // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes + // istanbul ignore else + if (phones.hasOwnProperty(key)) { + var phone = phones[key]; + + if (phone.test(str)) { + return true; + } + } + + return false; + }); + } else if (locale in phones) { + return phones[locale].test(str); // alias falsey locale as 'any' + } else if (!locale || locale === 'any') { + for (var key in phones) { + // istanbul ignore else + if (phones.hasOwnProperty(key)) { + var phone = phones[key]; + + if (phone.test(str)) { + return true; + } + } + } + + return false; + } + + throw new Error("Invalid locale '".concat(locale, "'")); +} + +var locales = Object.keys(phones); +exports.locales = locales; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMongoId.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMongoId.js new file mode 100644 index 00000000..2e9884de --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMongoId.js @@ -0,0 +1,20 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isMongoId; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +var _isHexadecimal = _interopRequireDefault(require("./isHexadecimal")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function isMongoId(str) { + (0, _assertString.default)(str); + return (0, _isHexadecimal.default)(str) && str.length === 24; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMultibyte.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMultibyte.js new file mode 100644 index 00000000..3b4477e9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isMultibyte.js @@ -0,0 +1,22 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isMultibyte; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/* eslint-disable no-control-regex */ +var multibyte = /[^\x00-\x7F]/; +/* eslint-enable no-control-regex */ + +function isMultibyte(str) { + (0, _assertString.default)(str); + return multibyte.test(str); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isNumeric.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isNumeric.js new file mode 100644 index 00000000..441f30f1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isNumeric.js @@ -0,0 +1,27 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isNumeric; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +var _alpha = require("./alpha"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var numericNoSymbols = /^[0-9]+$/; + +function isNumeric(str, options) { + (0, _assertString.default)(str); + + if (options && options.no_symbols) { + return numericNoSymbols.test(str); + } + + return new RegExp("^[+-]?([0-9]*[".concat((options || {}).locale ? _alpha.decimal[options.locale] : '.', "])?[0-9]+$")).test(str); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isOctal.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isOctal.js new file mode 100644 index 00000000..8d3a1c77 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isOctal.js @@ -0,0 +1,20 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isOctal; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var octal = /^(0o)?[0-7]+$/i; + +function isOctal(str) { + (0, _assertString.default)(str); + return octal.test(str); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isPassportNumber.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isPassportNumber.js new file mode 100644 index 00000000..192414ed --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isPassportNumber.js @@ -0,0 +1,138 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isPassportNumber; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Reference: + * https://en.wikipedia.org/ -- Wikipedia + * https://docs.microsoft.com/en-us/microsoft-365/compliance/eu-passport-number -- EU Passport Number + * https://countrycode.org/ -- Country Codes + */ +var passportRegexByCountryCode = { + AM: /^[A-Z]{2}\d{7}$/, + // ARMENIA + AR: /^[A-Z]{3}\d{6}$/, + // ARGENTINA + AT: /^[A-Z]\d{7}$/, + // AUSTRIA + AU: /^[A-Z]\d{7}$/, + // AUSTRALIA + BE: /^[A-Z]{2}\d{6}$/, + // BELGIUM + BG: /^\d{9}$/, + // BULGARIA + BR: /^[A-Z]{2}\d{6}$/, + // BRAZIL + BY: /^[A-Z]{2}\d{7}$/, + // BELARUS + CA: /^[A-Z]{2}\d{6}$/, + // CANADA + CH: /^[A-Z]\d{7}$/, + // SWITZERLAND + CN: /^G\d{8}$|^E(?![IO])[A-Z0-9]\d{7}$/, + // CHINA [G=Ordinary, E=Electronic] followed by 8-digits, or E followed by any UPPERCASE letter (except I and O) followed by 7 digits + CY: /^[A-Z](\d{6}|\d{8})$/, + // CYPRUS + CZ: /^\d{8}$/, + // CZECH REPUBLIC + DE: /^[CFGHJKLMNPRTVWXYZ0-9]{9}$/, + // GERMANY + DK: /^\d{9}$/, + // DENMARK + DZ: /^\d{9}$/, + // ALGERIA + EE: /^([A-Z]\d{7}|[A-Z]{2}\d{7})$/, + // ESTONIA (K followed by 7-digits), e-passports have 2 UPPERCASE followed by 7 digits + ES: /^[A-Z0-9]{2}([A-Z0-9]?)\d{6}$/, + // SPAIN + FI: /^[A-Z]{2}\d{7}$/, + // FINLAND + FR: /^\d{2}[A-Z]{2}\d{5}$/, + // FRANCE + GB: /^\d{9}$/, + // UNITED KINGDOM + GR: /^[A-Z]{2}\d{7}$/, + // GREECE + HR: /^\d{9}$/, + // CROATIA + HU: /^[A-Z]{2}(\d{6}|\d{7})$/, + // HUNGARY + IE: /^[A-Z0-9]{2}\d{7}$/, + // IRELAND + IN: /^[A-Z]{1}-?\d{7}$/, + // INDIA + ID: /^[A-C]\d{7}$/, + // INDONESIA + IR: /^[A-Z]\d{8}$/, + // IRAN + IS: /^(A)\d{7}$/, + // ICELAND + IT: /^[A-Z0-9]{2}\d{7}$/, + // ITALY + JP: /^[A-Z]{2}\d{7}$/, + // JAPAN + KR: /^[MS]\d{8}$/, + // SOUTH KOREA, REPUBLIC OF KOREA, [S=PS Passports, M=PM Passports] + LT: /^[A-Z0-9]{8}$/, + // LITHUANIA + LU: /^[A-Z0-9]{8}$/, + // LUXEMBURG + LV: /^[A-Z0-9]{2}\d{7}$/, + // LATVIA + LY: /^[A-Z0-9]{8}$/, + // LIBYA + MT: /^\d{7}$/, + // MALTA + MZ: /^([A-Z]{2}\d{7})|(\d{2}[A-Z]{2}\d{5})$/, + // MOZAMBIQUE + MY: /^[AHK]\d{8}$/, + // MALAYSIA + NL: /^[A-Z]{2}[A-Z0-9]{6}\d$/, + // NETHERLANDS + PL: /^[A-Z]{2}\d{7}$/, + // POLAND + PT: /^[A-Z]\d{6}$/, + // PORTUGAL + RO: /^\d{8,9}$/, + // ROMANIA + RU: /^\d{9}$/, + // RUSSIAN FEDERATION + SE: /^\d{8}$/, + // SWEDEN + SL: /^(P)[A-Z]\d{7}$/, + // SLOVANIA + SK: /^[0-9A-Z]\d{7}$/, + // SLOVAKIA + TR: /^[A-Z]\d{8}$/, + // TURKEY + UA: /^[A-Z]{2}\d{6}$/, + // UKRAINE + US: /^\d{9}$/ // UNITED STATES + +}; +/** + * Check if str is a valid passport number + * relative to provided ISO Country Code. + * + * @param {string} str + * @param {string} countryCode + * @return {boolean} + */ + +function isPassportNumber(str, countryCode) { + (0, _assertString.default)(str); + /** Remove All Whitespaces, Convert to UPPERCASE */ + + var normalizedStr = str.replace(/\s/g, '').toUpperCase(); + return countryCode.toUpperCase() in passportRegexByCountryCode && passportRegexByCountryCode[countryCode].test(normalizedStr); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isPort.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isPort.js new file mode 100644 index 00000000..9274a4c0 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isPort.js @@ -0,0 +1,20 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isPort; + +var _isInt = _interopRequireDefault(require("./isInt")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function isPort(str) { + return (0, _isInt.default)(str, { + min: 0, + max: 65535 + }); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isPostalCode.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isPostalCode.js new file mode 100644 index 00000000..17c5318e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isPostalCode.js @@ -0,0 +1,109 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isPostalCode; +exports.locales = void 0; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// common patterns +var threeDigit = /^\d{3}$/; +var fourDigit = /^\d{4}$/; +var fiveDigit = /^\d{5}$/; +var sixDigit = /^\d{6}$/; +var patterns = { + AD: /^AD\d{3}$/, + AT: fourDigit, + AU: fourDigit, + AZ: /^AZ\d{4}$/, + BE: fourDigit, + BG: fourDigit, + BR: /^\d{5}-\d{3}$/, + BY: /2[1-4]{1}\d{4}$/, + CA: /^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJ-NPRSTV-Z][\s\-]?\d[ABCEGHJ-NPRSTV-Z]\d$/i, + CH: fourDigit, + CN: /^(0[1-7]|1[012356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[1-5]|8[1345]|9[09])\d{4}$/, + CZ: /^\d{3}\s?\d{2}$/, + DE: fiveDigit, + DK: fourDigit, + DO: fiveDigit, + DZ: fiveDigit, + EE: fiveDigit, + ES: /^(5[0-2]{1}|[0-4]{1}\d{1})\d{3}$/, + FI: fiveDigit, + FR: /^\d{2}\s?\d{3}$/, + GB: /^(gir\s?0aa|[a-z]{1,2}\d[\da-z]?\s?(\d[a-z]{2})?)$/i, + GR: /^\d{3}\s?\d{2}$/, + HR: /^([1-5]\d{4}$)/, + HT: /^HT\d{4}$/, + HU: fourDigit, + ID: fiveDigit, + IE: /^(?!.*(?:o))[A-Za-z]\d[\dw]\s\w{4}$/i, + IL: /^(\d{5}|\d{7})$/, + IN: /^((?!10|29|35|54|55|65|66|86|87|88|89)[1-9][0-9]{5})$/, + IR: /\b(?!(\d)\1{3})[13-9]{4}[1346-9][013-9]{5}\b/, + IS: threeDigit, + IT: fiveDigit, + JP: /^\d{3}\-\d{4}$/, + KE: fiveDigit, + KR: /^(\d{5}|\d{6})$/, + LI: /^(948[5-9]|949[0-7])$/, + LT: /^LT\-\d{5}$/, + LU: fourDigit, + LV: /^LV\-\d{4}$/, + LK: fiveDigit, + MX: fiveDigit, + MT: /^[A-Za-z]{3}\s{0,1}\d{4}$/, + MY: fiveDigit, + NL: /^\d{4}\s?[a-z]{2}$/i, + NO: fourDigit, + NP: /^(10|21|22|32|33|34|44|45|56|57)\d{3}$|^(977)$/i, + NZ: fourDigit, + PL: /^\d{2}\-\d{3}$/, + PR: /^00[679]\d{2}([ -]\d{4})?$/, + PT: /^\d{4}\-\d{3}?$/, + RO: sixDigit, + RU: sixDigit, + SA: fiveDigit, + SE: /^[1-9]\d{2}\s?\d{2}$/, + SG: sixDigit, + SI: fourDigit, + SK: /^\d{3}\s?\d{2}$/, + TH: fiveDigit, + TN: fourDigit, + TW: /^\d{3}(\d{2})?$/, + UA: fiveDigit, + US: /^\d{5}(-\d{4})?$/, + ZA: fourDigit, + ZM: fiveDigit +}; +var locales = Object.keys(patterns); +exports.locales = locales; + +function isPostalCode(str, locale) { + (0, _assertString.default)(str); + + if (locale in patterns) { + return patterns[locale].test(str); + } else if (locale === 'any') { + for (var key in patterns) { + // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes + // istanbul ignore else + if (patterns.hasOwnProperty(key)) { + var pattern = patterns[key]; + + if (pattern.test(str)) { + return true; + } + } + } + + return false; + } + + throw new Error("Invalid locale '".concat(locale, "'")); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isRFC3339.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isRFC3339.js new file mode 100644 index 00000000..da107908 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isRFC3339.js @@ -0,0 +1,33 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isRFC3339; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/* Based on https://tools.ietf.org/html/rfc3339#section-5.6 */ +var dateFullYear = /[0-9]{4}/; +var dateMonth = /(0[1-9]|1[0-2])/; +var dateMDay = /([12]\d|0[1-9]|3[01])/; +var timeHour = /([01][0-9]|2[0-3])/; +var timeMinute = /[0-5][0-9]/; +var timeSecond = /([0-5][0-9]|60)/; +var timeSecFrac = /(\.[0-9]+)?/; +var timeNumOffset = new RegExp("[-+]".concat(timeHour.source, ":").concat(timeMinute.source)); +var timeOffset = new RegExp("([zZ]|".concat(timeNumOffset.source, ")")); +var partialTime = new RegExp("".concat(timeHour.source, ":").concat(timeMinute.source, ":").concat(timeSecond.source).concat(timeSecFrac.source)); +var fullDate = new RegExp("".concat(dateFullYear.source, "-").concat(dateMonth.source, "-").concat(dateMDay.source)); +var fullTime = new RegExp("".concat(partialTime.source).concat(timeOffset.source)); +var rfc3339 = new RegExp("^".concat(fullDate.source, "[ tT]").concat(fullTime.source, "$")); + +function isRFC3339(str) { + (0, _assertString.default)(str); + return rfc3339.test(str); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isRgbColor.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isRgbColor.js new file mode 100644 index 00000000..96222913 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isRgbColor.js @@ -0,0 +1,29 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isRgbColor; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var rgbColor = /^rgb\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){2}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\)$/; +var rgbaColor = /^rgba\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){3}(0?\.\d|1(\.0)?|0(\.0)?)\)$/; +var rgbColorPercent = /^rgb\((([0-9]%|[1-9][0-9]%|100%),){2}([0-9]%|[1-9][0-9]%|100%)\)/; +var rgbaColorPercent = /^rgba\((([0-9]%|[1-9][0-9]%|100%),){3}(0?\.\d|1(\.0)?|0(\.0)?)\)/; + +function isRgbColor(str) { + var includePercentValues = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + (0, _assertString.default)(str); + + if (!includePercentValues) { + return rgbColor.test(str) || rgbaColor.test(str); + } + + return rgbColor.test(str) || rgbaColor.test(str) || rgbColorPercent.test(str) || rgbaColorPercent.test(str); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isSemVer.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isSemVer.js new file mode 100644 index 00000000..27355cd1 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isSemVer.js @@ -0,0 +1,28 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isSemVer; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +var _multilineRegex = _interopRequireDefault(require("./util/multilineRegex")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Regular Expression to match + * semantic versioning (SemVer) + * built from multi-line, multi-parts regexp + * Reference: https://semver.org/ + */ +var semanticVersioningRegex = (0, _multilineRegex.default)(['^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)', '(?:-((?:0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*))*))', '?(?:\\+([0-9a-z-]+(?:\\.[0-9a-z-]+)*))?$'], 'i'); + +function isSemVer(str) { + (0, _assertString.default)(str); + return semanticVersioningRegex.test(str); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isSlug.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isSlug.js new file mode 100644 index 00000000..c40e6ada --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isSlug.js @@ -0,0 +1,20 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isSlug; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var charsetRegex = /^[^\s-_](?!.*?[-_]{2,})[a-z0-9-\\][^\s]*[^-_\s]$/; + +function isSlug(str) { + (0, _assertString.default)(str); + return charsetRegex.test(str); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isStrongPassword.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isStrongPassword.js new file mode 100644 index 00000000..a6a5a33c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isStrongPassword.js @@ -0,0 +1,115 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isStrongPassword; + +var _merge = _interopRequireDefault(require("./util/merge")); + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var upperCaseRegex = /^[A-Z]$/; +var lowerCaseRegex = /^[a-z]$/; +var numberRegex = /^[0-9]$/; +var symbolRegex = /^[-#!$@%^&*()_+|~=`{}\[\]:";'<>?,.\/ ]$/; +var defaultOptions = { + minLength: 8, + minLowercase: 1, + minUppercase: 1, + minNumbers: 1, + minSymbols: 1, + returnScore: false, + pointsPerUnique: 1, + pointsPerRepeat: 0.5, + pointsForContainingLower: 10, + pointsForContainingUpper: 10, + pointsForContainingNumber: 10, + pointsForContainingSymbol: 10 +}; +/* Counts number of occurrences of each char in a string + * could be moved to util/ ? +*/ + +function countChars(str) { + var result = {}; + Array.from(str).forEach(function (char) { + var curVal = result[char]; + + if (curVal) { + result[char] += 1; + } else { + result[char] = 1; + } + }); + return result; +} +/* Return information about a password */ + + +function analyzePassword(password) { + var charMap = countChars(password); + var analysis = { + length: password.length, + uniqueChars: Object.keys(charMap).length, + uppercaseCount: 0, + lowercaseCount: 0, + numberCount: 0, + symbolCount: 0 + }; + Object.keys(charMap).forEach(function (char) { + /* istanbul ignore else */ + if (upperCaseRegex.test(char)) { + analysis.uppercaseCount += charMap[char]; + } else if (lowerCaseRegex.test(char)) { + analysis.lowercaseCount += charMap[char]; + } else if (numberRegex.test(char)) { + analysis.numberCount += charMap[char]; + } else if (symbolRegex.test(char)) { + analysis.symbolCount += charMap[char]; + } + }); + return analysis; +} + +function scorePassword(analysis, scoringOptions) { + var points = 0; + points += analysis.uniqueChars * scoringOptions.pointsPerUnique; + points += (analysis.length - analysis.uniqueChars) * scoringOptions.pointsPerRepeat; + + if (analysis.lowercaseCount > 0) { + points += scoringOptions.pointsForContainingLower; + } + + if (analysis.uppercaseCount > 0) { + points += scoringOptions.pointsForContainingUpper; + } + + if (analysis.numberCount > 0) { + points += scoringOptions.pointsForContainingNumber; + } + + if (analysis.symbolCount > 0) { + points += scoringOptions.pointsForContainingSymbol; + } + + return points; +} + +function isStrongPassword(str) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + (0, _assertString.default)(str); + var analysis = analyzePassword(str); + options = (0, _merge.default)(options || {}, defaultOptions); + + if (options.returnScore) { + return scorePassword(analysis, options); + } + + return analysis.length >= options.minLength && analysis.lowercaseCount >= options.minLowercase && analysis.uppercaseCount >= options.minUppercase && analysis.numberCount >= options.minNumbers && analysis.symbolCount >= options.minSymbols; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isSurrogatePair.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isSurrogatePair.js new file mode 100644 index 00000000..ee5678bc --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isSurrogatePair.js @@ -0,0 +1,20 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isSurrogatePair; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var surrogatePair = /[\uD800-\uDBFF][\uDC00-\uDFFF]/; + +function isSurrogatePair(str) { + (0, _assertString.default)(str); + return surrogatePair.test(str); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isTaxID.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isTaxID.js new file mode 100644 index 00000000..2a893b75 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isTaxID.js @@ -0,0 +1,1528 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isTaxID; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +var algorithms = _interopRequireWildcard(require("./util/algorithms")); + +var _isDate = _interopRequireDefault(require("./isDate")); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +/** + * TIN Validation + * Validates Tax Identification Numbers (TINs) from the US, EU member states and the United Kingdom. + * + * EU-UK: + * National TIN validity is calculated using public algorithms as made available by DG TAXUD. + * + * See `https://ec.europa.eu/taxation_customs/tin/specs/FS-TIN%20Algorithms-Public.docx` for more information. + * + * US: + * An Employer Identification Number (EIN), also known as a Federal Tax Identification Number, + * is used to identify a business entity. + * + * NOTES: + * - Prefix 47 is being reserved for future use + * - Prefixes 26, 27, 45, 46 and 47 were previously assigned by the Philadelphia campus. + * + * See `http://www.irs.gov/Businesses/Small-Businesses-&-Self-Employed/How-EINs-are-Assigned-and-Valid-EIN-Prefixes` + * for more information. + */ +// Locale functions + +/* + * bg-BG validation function + * (Edinen graždanski nomer (EGN/ЕГН), persons only) + * Checks if birth date (first six digits) is valid and calculates check (last) digit + */ +function bgBgCheck(tin) { + // Extract full year, normalize month and check birth date validity + var century_year = tin.slice(0, 2); + var month = parseInt(tin.slice(2, 4), 10); + + if (month > 40) { + month -= 40; + century_year = "20".concat(century_year); + } else if (month > 20) { + month -= 20; + century_year = "18".concat(century_year); + } else { + century_year = "19".concat(century_year); + } + + if (month < 10) { + month = "0".concat(month); + } + + var date = "".concat(century_year, "/").concat(month, "/").concat(tin.slice(4, 6)); + + if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) { + return false; + } // split digits into an array for further processing + + + var digits = tin.split('').map(function (a) { + return parseInt(a, 10); + }); // Calculate checksum by multiplying digits with fixed values + + var multip_lookup = [2, 4, 8, 5, 10, 9, 7, 3, 6]; + var checksum = 0; + + for (var i = 0; i < multip_lookup.length; i++) { + checksum += digits[i] * multip_lookup[i]; + } + + checksum = checksum % 11 === 10 ? 0 : checksum % 11; + return checksum === digits[9]; +} +/* + * cs-CZ validation function + * (Rodné číslo (RČ), persons only) + * Checks if birth date (first six digits) is valid and divisibility by 11 + * Material not in DG TAXUD document sourced from: + * -`https://lorenc.info/3MA381/overeni-spravnosti-rodneho-cisla.htm` + * -`https://www.mvcr.cz/clanek/rady-a-sluzby-dokumenty-rodne-cislo.aspx` + */ + + +function csCzCheck(tin) { + tin = tin.replace(/\W/, ''); // Extract full year from TIN length + + var full_year = parseInt(tin.slice(0, 2), 10); + + if (tin.length === 10) { + if (full_year < 54) { + full_year = "20".concat(full_year); + } else { + full_year = "19".concat(full_year); + } + } else { + if (tin.slice(6) === '000') { + return false; + } // Three-zero serial not assigned before 1954 + + + if (full_year < 54) { + full_year = "19".concat(full_year); + } else { + return false; // No 18XX years seen in any of the resources + } + } // Add missing zero if needed + + + if (full_year.length === 3) { + full_year = [full_year.slice(0, 2), '0', full_year.slice(2)].join(''); + } // Extract month from TIN and normalize + + + var month = parseInt(tin.slice(2, 4), 10); + + if (month > 50) { + month -= 50; + } + + if (month > 20) { + // Month-plus-twenty was only introduced in 2004 + if (parseInt(full_year, 10) < 2004) { + return false; + } + + month -= 20; + } + + if (month < 10) { + month = "0".concat(month); + } // Check date validity + + + var date = "".concat(full_year, "/").concat(month, "/").concat(tin.slice(4, 6)); + + if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) { + return false; + } // Verify divisibility by 11 + + + if (tin.length === 10) { + if (parseInt(tin, 10) % 11 !== 0) { + // Some numbers up to and including 1985 are still valid if + // check (last) digit equals 0 and modulo of first 9 digits equals 10 + var checkdigit = parseInt(tin.slice(0, 9), 10) % 11; + + if (parseInt(full_year, 10) < 1986 && checkdigit === 10) { + if (parseInt(tin.slice(9), 10) !== 0) { + return false; + } + } else { + return false; + } + } + } + + return true; +} +/* + * de-AT validation function + * (Abgabenkontonummer, persons/entities) + * Verify TIN validity by calling luhnCheck() + */ + + +function deAtCheck(tin) { + return algorithms.luhnCheck(tin); +} +/* + * de-DE validation function + * (Steueridentifikationsnummer (Steuer-IdNr.), persons only) + * Tests for single duplicate/triplicate value, then calculates ISO 7064 check (last) digit + * Partial implementation of spec (same result with both algorithms always) + */ + + +function deDeCheck(tin) { + // Split digits into an array for further processing + var digits = tin.split('').map(function (a) { + return parseInt(a, 10); + }); // Fill array with strings of number positions + + var occurences = []; + + for (var i = 0; i < digits.length - 1; i++) { + occurences.push(''); + + for (var j = 0; j < digits.length - 1; j++) { + if (digits[i] === digits[j]) { + occurences[i] += j; + } + } + } // Remove digits with one occurence and test for only one duplicate/triplicate + + + occurences = occurences.filter(function (a) { + return a.length > 1; + }); + + if (occurences.length !== 2 && occurences.length !== 3) { + return false; + } // In case of triplicate value only two digits are allowed next to each other + + + if (occurences[0].length === 3) { + var trip_locations = occurences[0].split('').map(function (a) { + return parseInt(a, 10); + }); + var recurrent = 0; // Amount of neighbour occurences + + for (var _i = 0; _i < trip_locations.length - 1; _i++) { + if (trip_locations[_i] + 1 === trip_locations[_i + 1]) { + recurrent += 1; + } + } + + if (recurrent === 2) { + return false; + } + } + + return algorithms.iso7064Check(tin); +} +/* + * dk-DK validation function + * (CPR-nummer (personnummer), persons only) + * Checks if birth date (first six digits) is valid and assigned to century (seventh) digit, + * and calculates check (last) digit + */ + + +function dkDkCheck(tin) { + tin = tin.replace(/\W/, ''); // Extract year, check if valid for given century digit and add century + + var year = parseInt(tin.slice(4, 6), 10); + var century_digit = tin.slice(6, 7); + + switch (century_digit) { + case '0': + case '1': + case '2': + case '3': + year = "19".concat(year); + break; + + case '4': + case '9': + if (year < 37) { + year = "20".concat(year); + } else { + year = "19".concat(year); + } + + break; + + default: + if (year < 37) { + year = "20".concat(year); + } else if (year > 58) { + year = "18".concat(year); + } else { + return false; + } + + break; + } // Add missing zero if needed + + + if (year.length === 3) { + year = [year.slice(0, 2), '0', year.slice(2)].join(''); + } // Check date validity + + + var date = "".concat(year, "/").concat(tin.slice(2, 4), "/").concat(tin.slice(0, 2)); + + if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) { + return false; + } // Split digits into an array for further processing + + + var digits = tin.split('').map(function (a) { + return parseInt(a, 10); + }); + var checksum = 0; + var weight = 4; // Multiply by weight and add to checksum + + for (var i = 0; i < 9; i++) { + checksum += digits[i] * weight; + weight -= 1; + + if (weight === 1) { + weight = 7; + } + } + + checksum %= 11; + + if (checksum === 1) { + return false; + } + + return checksum === 0 ? digits[9] === 0 : digits[9] === 11 - checksum; +} +/* + * el-CY validation function + * (Arithmos Forologikou Mitroou (AFM/ΑΦΜ), persons only) + * Verify TIN validity by calculating ASCII value of check (last) character + */ + + +function elCyCheck(tin) { + // split digits into an array for further processing + var digits = tin.slice(0, 8).split('').map(function (a) { + return parseInt(a, 10); + }); + var checksum = 0; // add digits in even places + + for (var i = 1; i < digits.length; i += 2) { + checksum += digits[i]; + } // add digits in odd places + + + for (var _i2 = 0; _i2 < digits.length; _i2 += 2) { + if (digits[_i2] < 2) { + checksum += 1 - digits[_i2]; + } else { + checksum += 2 * (digits[_i2] - 2) + 5; + + if (digits[_i2] > 4) { + checksum += 2; + } + } + } + + return String.fromCharCode(checksum % 26 + 65) === tin.charAt(8); +} +/* + * el-GR validation function + * (Arithmos Forologikou Mitroou (AFM/ΑΦΜ), persons/entities) + * Verify TIN validity by calculating check (last) digit + * Algorithm not in DG TAXUD document- sourced from: + * - `http://epixeirisi.gr/%CE%9A%CE%A1%CE%99%CE%A3%CE%99%CE%9C%CE%91-%CE%98%CE%95%CE%9C%CE%91%CE%A4%CE%91-%CE%A6%CE%9F%CE%A1%CE%9F%CE%9B%CE%9F%CE%93%CE%99%CE%91%CE%A3-%CE%9A%CE%91%CE%99-%CE%9B%CE%9F%CE%93%CE%99%CE%A3%CE%A4%CE%99%CE%9A%CE%97%CE%A3/23791/%CE%91%CF%81%CE%B9%CE%B8%CE%BC%CF%8C%CF%82-%CE%A6%CE%BF%CF%81%CE%BF%CE%BB%CE%BF%CE%B3%CE%B9%CE%BA%CE%BF%CF%8D-%CE%9C%CE%B7%CF%84%CF%81%CF%8E%CE%BF%CF%85` + */ + + +function elGrCheck(tin) { + // split digits into an array for further processing + var digits = tin.split('').map(function (a) { + return parseInt(a, 10); + }); + var checksum = 0; + + for (var i = 0; i < 8; i++) { + checksum += digits[i] * Math.pow(2, 8 - i); + } + + return checksum % 11 % 10 === digits[8]; +} +/* + * en-GB validation function (should go here if needed) + * (National Insurance Number (NINO) or Unique Taxpayer Reference (UTR), + * persons/entities respectively) + */ + +/* + * en-IE validation function + * (Personal Public Service Number (PPS No), persons only) + * Verify TIN validity by calculating check (second to last) character + */ + + +function enIeCheck(tin) { + var checksum = algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 7).map(function (a) { + return parseInt(a, 10); + }), 8); + + if (tin.length === 9 && tin[8] !== 'W') { + checksum += (tin[8].charCodeAt(0) - 64) * 9; + } + + checksum %= 23; + + if (checksum === 0) { + return tin[7].toUpperCase() === 'W'; + } + + return tin[7].toUpperCase() === String.fromCharCode(64 + checksum); +} // Valid US IRS campus prefixes + + +var enUsCampusPrefix = { + andover: ['10', '12'], + atlanta: ['60', '67'], + austin: ['50', '53'], + brookhaven: ['01', '02', '03', '04', '05', '06', '11', '13', '14', '16', '21', '22', '23', '25', '34', '51', '52', '54', '55', '56', '57', '58', '59', '65'], + cincinnati: ['30', '32', '35', '36', '37', '38', '61'], + fresno: ['15', '24'], + internet: ['20', '26', '27', '45', '46', '47'], + kansas: ['40', '44'], + memphis: ['94', '95'], + ogden: ['80', '90'], + philadelphia: ['33', '39', '41', '42', '43', '46', '48', '62', '63', '64', '66', '68', '71', '72', '73', '74', '75', '76', '77', '81', '82', '83', '84', '85', '86', '87', '88', '91', '92', '93', '98', '99'], + sba: ['31'] +}; // Return an array of all US IRS campus prefixes + +function enUsGetPrefixes() { + var prefixes = []; + + for (var location in enUsCampusPrefix) { + // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes + // istanbul ignore else + if (enUsCampusPrefix.hasOwnProperty(location)) { + prefixes.push.apply(prefixes, _toConsumableArray(enUsCampusPrefix[location])); + } + } + + return prefixes; +} +/* + * en-US validation function + * Verify that the TIN starts with a valid IRS campus prefix + */ + + +function enUsCheck(tin) { + return enUsGetPrefixes().indexOf(tin.substr(0, 2)) !== -1; +} +/* + * es-ES validation function + * (Documento Nacional de Identidad (DNI) + * or Número de Identificación de Extranjero (NIE), persons only) + * Verify TIN validity by calculating check (last) character + */ + + +function esEsCheck(tin) { + // Split characters into an array for further processing + var chars = tin.toUpperCase().split(''); // Replace initial letter if needed + + if (isNaN(parseInt(chars[0], 10)) && chars.length > 1) { + var lead_replace = 0; + + switch (chars[0]) { + case 'Y': + lead_replace = 1; + break; + + case 'Z': + lead_replace = 2; + break; + + default: + } + + chars.splice(0, 1, lead_replace); // Fill with zeros if smaller than proper + } else { + while (chars.length < 9) { + chars.unshift(0); + } + } // Calculate checksum and check according to lookup + + + var lookup = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E']; + chars = chars.join(''); + var checksum = parseInt(chars.slice(0, 8), 10) % 23; + return chars[8] === lookup[checksum]; +} +/* + * et-EE validation function + * (Isikukood (IK), persons only) + * Checks if birth date (century digit and six following) is valid and calculates check (last) digit + * Material not in DG TAXUD document sourced from: + * - `https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Estonia-TIN.pdf` + */ + + +function etEeCheck(tin) { + // Extract year and add century + var full_year = tin.slice(1, 3); + var century_digit = tin.slice(0, 1); + + switch (century_digit) { + case '1': + case '2': + full_year = "18".concat(full_year); + break; + + case '3': + case '4': + full_year = "19".concat(full_year); + break; + + default: + full_year = "20".concat(full_year); + break; + } // Check date validity + + + var date = "".concat(full_year, "/").concat(tin.slice(3, 5), "/").concat(tin.slice(5, 7)); + + if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) { + return false; + } // Split digits into an array for further processing + + + var digits = tin.split('').map(function (a) { + return parseInt(a, 10); + }); + var checksum = 0; + var weight = 1; // Multiply by weight and add to checksum + + for (var i = 0; i < 10; i++) { + checksum += digits[i] * weight; + weight += 1; + + if (weight === 10) { + weight = 1; + } + } // Do again if modulo 11 of checksum is 10 + + + if (checksum % 11 === 10) { + checksum = 0; + weight = 3; + + for (var _i3 = 0; _i3 < 10; _i3++) { + checksum += digits[_i3] * weight; + weight += 1; + + if (weight === 10) { + weight = 1; + } + } + + if (checksum % 11 === 10) { + return digits[10] === 0; + } + } + + return checksum % 11 === digits[10]; +} +/* + * fi-FI validation function + * (Henkilötunnus (HETU), persons only) + * Checks if birth date (first six digits plus century symbol) is valid + * and calculates check (last) digit + */ + + +function fiFiCheck(tin) { + // Extract year and add century + var full_year = tin.slice(4, 6); + var century_symbol = tin.slice(6, 7); + + switch (century_symbol) { + case '+': + full_year = "18".concat(full_year); + break; + + case '-': + full_year = "19".concat(full_year); + break; + + default: + full_year = "20".concat(full_year); + break; + } // Check date validity + + + var date = "".concat(full_year, "/").concat(tin.slice(2, 4), "/").concat(tin.slice(0, 2)); + + if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) { + return false; + } // Calculate check character + + + var checksum = parseInt(tin.slice(0, 6) + tin.slice(7, 10), 10) % 31; + + if (checksum < 10) { + return checksum === parseInt(tin.slice(10), 10); + } + + checksum -= 10; + var letters_lookup = ['A', 'B', 'C', 'D', 'E', 'F', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y']; + return letters_lookup[checksum] === tin.slice(10); +} +/* + * fr/nl-BE validation function + * (Numéro national (N.N.), persons only) + * Checks if birth date (first six digits) is valid and calculates check (last two) digits + */ + + +function frBeCheck(tin) { + // Zero month/day value is acceptable + if (tin.slice(2, 4) !== '00' || tin.slice(4, 6) !== '00') { + // Extract date from first six digits of TIN + var date = "".concat(tin.slice(0, 2), "/").concat(tin.slice(2, 4), "/").concat(tin.slice(4, 6)); + + if (!(0, _isDate.default)(date, 'YY/MM/DD')) { + return false; + } + } + + var checksum = 97 - parseInt(tin.slice(0, 9), 10) % 97; + var checkdigits = parseInt(tin.slice(9, 11), 10); + + if (checksum !== checkdigits) { + checksum = 97 - parseInt("2".concat(tin.slice(0, 9)), 10) % 97; + + if (checksum !== checkdigits) { + return false; + } + } + + return true; +} +/* + * fr-FR validation function + * (Numéro fiscal de référence (numéro SPI), persons only) + * Verify TIN validity by calculating check (last three) digits + */ + + +function frFrCheck(tin) { + tin = tin.replace(/\s/g, ''); + var checksum = parseInt(tin.slice(0, 10), 10) % 511; + var checkdigits = parseInt(tin.slice(10, 13), 10); + return checksum === checkdigits; +} +/* + * fr/lb-LU validation function + * (numéro d’identification personnelle, persons only) + * Verify birth date validity and run Luhn and Verhoeff checks + */ + + +function frLuCheck(tin) { + // Extract date and check validity + var date = "".concat(tin.slice(0, 4), "/").concat(tin.slice(4, 6), "/").concat(tin.slice(6, 8)); + + if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) { + return false; + } // Run Luhn check + + + if (!algorithms.luhnCheck(tin.slice(0, 12))) { + return false; + } // Remove Luhn check digit and run Verhoeff check + + + return algorithms.verhoeffCheck("".concat(tin.slice(0, 11)).concat(tin[12])); +} +/* + * hr-HR validation function + * (Osobni identifikacijski broj (OIB), persons/entities) + * Verify TIN validity by calling iso7064Check(digits) + */ + + +function hrHrCheck(tin) { + return algorithms.iso7064Check(tin); +} +/* + * hu-HU validation function + * (Adóazonosító jel, persons only) + * Verify TIN validity by calculating check (last) digit + */ + + +function huHuCheck(tin) { + // split digits into an array for further processing + var digits = tin.split('').map(function (a) { + return parseInt(a, 10); + }); + var checksum = 8; + + for (var i = 1; i < 9; i++) { + checksum += digits[i] * (i + 1); + } + + return checksum % 11 === digits[9]; +} +/* + * lt-LT validation function (should go here if needed) + * (Asmens kodas, persons/entities respectively) + * Current validation check is alias of etEeCheck- same format applies + */ + +/* + * it-IT first/last name validity check + * Accepts it-IT TIN-encoded names as a three-element character array and checks their validity + * Due to lack of clarity between resources ("Are only Italian consonants used? + * What happens if a person has X in their name?" etc.) only two test conditions + * have been implemented: + * Vowels may only be followed by other vowels or an X character + * and X characters after vowels may only be followed by other X characters. + */ + + +function itItNameCheck(name) { + // true at the first occurence of a vowel + var vowelflag = false; // true at the first occurence of an X AFTER vowel + // (to properly handle last names with X as consonant) + + var xflag = false; + + for (var i = 0; i < 3; i++) { + if (!vowelflag && /[AEIOU]/.test(name[i])) { + vowelflag = true; + } else if (!xflag && vowelflag && name[i] === 'X') { + xflag = true; + } else if (i > 0) { + if (vowelflag && !xflag) { + if (!/[AEIOU]/.test(name[i])) { + return false; + } + } + + if (xflag) { + if (!/X/.test(name[i])) { + return false; + } + } + } + } + + return true; +} +/* + * it-IT validation function + * (Codice fiscale (TIN-IT), persons only) + * Verify name, birth date and codice catastale validity + * and calculate check character. + * Material not in DG-TAXUD document sourced from: + * `https://en.wikipedia.org/wiki/Italian_fiscal_code` + */ + + +function itItCheck(tin) { + // Capitalize and split characters into an array for further processing + var chars = tin.toUpperCase().split(''); // Check first and last name validity calling itItNameCheck() + + if (!itItNameCheck(chars.slice(0, 3))) { + return false; + } + + if (!itItNameCheck(chars.slice(3, 6))) { + return false; + } // Convert letters in number spaces back to numbers if any + + + var number_locations = [6, 7, 9, 10, 12, 13, 14]; + var number_replace = { + L: '0', + M: '1', + N: '2', + P: '3', + Q: '4', + R: '5', + S: '6', + T: '7', + U: '8', + V: '9' + }; + + for (var _i4 = 0, _number_locations = number_locations; _i4 < _number_locations.length; _i4++) { + var i = _number_locations[_i4]; + + if (chars[i] in number_replace) { + chars.splice(i, 1, number_replace[chars[i]]); + } + } // Extract month and day, and check date validity + + + var month_replace = { + A: '01', + B: '02', + C: '03', + D: '04', + E: '05', + H: '06', + L: '07', + M: '08', + P: '09', + R: '10', + S: '11', + T: '12' + }; + var month = month_replace[chars[8]]; + var day = parseInt(chars[9] + chars[10], 10); + + if (day > 40) { + day -= 40; + } + + if (day < 10) { + day = "0".concat(day); + } + + var date = "".concat(chars[6]).concat(chars[7], "/").concat(month, "/").concat(day); + + if (!(0, _isDate.default)(date, 'YY/MM/DD')) { + return false; + } // Calculate check character by adding up even and odd characters as numbers + + + var checksum = 0; + + for (var _i5 = 1; _i5 < chars.length - 1; _i5 += 2) { + var char_to_int = parseInt(chars[_i5], 10); + + if (isNaN(char_to_int)) { + char_to_int = chars[_i5].charCodeAt(0) - 65; + } + + checksum += char_to_int; + } + + var odd_convert = { + // Maps of characters at odd places + A: 1, + B: 0, + C: 5, + D: 7, + E: 9, + F: 13, + G: 15, + H: 17, + I: 19, + J: 21, + K: 2, + L: 4, + M: 18, + N: 20, + O: 11, + P: 3, + Q: 6, + R: 8, + S: 12, + T: 14, + U: 16, + V: 10, + W: 22, + X: 25, + Y: 24, + Z: 23, + 0: 1, + 1: 0 + }; + + for (var _i6 = 0; _i6 < chars.length - 1; _i6 += 2) { + var _char_to_int = 0; + + if (chars[_i6] in odd_convert) { + _char_to_int = odd_convert[chars[_i6]]; + } else { + var multiplier = parseInt(chars[_i6], 10); + _char_to_int = 2 * multiplier + 1; + + if (multiplier > 4) { + _char_to_int += 2; + } + } + + checksum += _char_to_int; + } + + if (String.fromCharCode(65 + checksum % 26) !== chars[15]) { + return false; + } + + return true; +} +/* + * lv-LV validation function + * (Personas kods (PK), persons only) + * Check validity of birth date and calculate check (last) digit + * Support only for old format numbers (not starting with '32', issued before 2017/07/01) + * Material not in DG TAXUD document sourced from: + * `https://boot.ritakafija.lv/forums/index.php?/topic/88314-personas-koda-algoritms-%C4%8Deksumma/` + */ + + +function lvLvCheck(tin) { + tin = tin.replace(/\W/, ''); // Extract date from TIN + + var day = tin.slice(0, 2); + + if (day !== '32') { + // No date/checksum check if new format + var month = tin.slice(2, 4); + + if (month !== '00') { + // No date check if unknown month + var full_year = tin.slice(4, 6); + + switch (tin[6]) { + case '0': + full_year = "18".concat(full_year); + break; + + case '1': + full_year = "19".concat(full_year); + break; + + default: + full_year = "20".concat(full_year); + break; + } // Check date validity + + + var date = "".concat(full_year, "/").concat(tin.slice(2, 4), "/").concat(day); + + if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) { + return false; + } + } // Calculate check digit + + + var checksum = 1101; + var multip_lookup = [1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; + + for (var i = 0; i < tin.length - 1; i++) { + checksum -= parseInt(tin[i], 10) * multip_lookup[i]; + } + + return parseInt(tin[10], 10) === checksum % 11; + } + + return true; +} +/* + * mt-MT validation function + * (Identity Card Number or Unique Taxpayer Reference, persons/entities) + * Verify Identity Card Number structure (no other tests found) + */ + + +function mtMtCheck(tin) { + if (tin.length !== 9) { + // No tests for UTR + var chars = tin.toUpperCase().split(''); // Fill with zeros if smaller than proper + + while (chars.length < 8) { + chars.unshift(0); + } // Validate format according to last character + + + switch (tin[7]) { + case 'A': + case 'P': + if (parseInt(chars[6], 10) === 0) { + return false; + } + + break; + + default: + { + var first_part = parseInt(chars.join('').slice(0, 5), 10); + + if (first_part > 32000) { + return false; + } + + var second_part = parseInt(chars.join('').slice(5, 7), 10); + + if (first_part === second_part) { + return false; + } + } + } + } + + return true; +} +/* + * nl-NL validation function + * (Burgerservicenummer (BSN) or Rechtspersonen Samenwerkingsverbanden Informatie Nummer (RSIN), + * persons/entities respectively) + * Verify TIN validity by calculating check (last) digit (variant of MOD 11) + */ + + +function nlNlCheck(tin) { + return algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 8).map(function (a) { + return parseInt(a, 10); + }), 9) % 11 === parseInt(tin[8], 10); +} +/* + * pl-PL validation function + * (Powszechny Elektroniczny System Ewidencji Ludności (PESEL) + * or Numer identyfikacji podatkowej (NIP), persons/entities) + * Verify TIN validity by validating birth date (PESEL) and calculating check (last) digit + */ + + +function plPlCheck(tin) { + // NIP + if (tin.length === 10) { + // Calculate last digit by multiplying with lookup + var lookup = [6, 5, 7, 2, 3, 4, 5, 6, 7]; + var _checksum = 0; + + for (var i = 0; i < lookup.length; i++) { + _checksum += parseInt(tin[i], 10) * lookup[i]; + } + + _checksum %= 11; + + if (_checksum === 10) { + return false; + } + + return _checksum === parseInt(tin[9], 10); + } // PESEL + // Extract full year using month + + + var full_year = tin.slice(0, 2); + var month = parseInt(tin.slice(2, 4), 10); + + if (month > 80) { + full_year = "18".concat(full_year); + month -= 80; + } else if (month > 60) { + full_year = "22".concat(full_year); + month -= 60; + } else if (month > 40) { + full_year = "21".concat(full_year); + month -= 40; + } else if (month > 20) { + full_year = "20".concat(full_year); + month -= 20; + } else { + full_year = "19".concat(full_year); + } // Add leading zero to month if needed + + + if (month < 10) { + month = "0".concat(month); + } // Check date validity + + + var date = "".concat(full_year, "/").concat(month, "/").concat(tin.slice(4, 6)); + + if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) { + return false; + } // Calculate last digit by mulitplying with odd one-digit numbers except 5 + + + var checksum = 0; + var multiplier = 1; + + for (var _i7 = 0; _i7 < tin.length - 1; _i7++) { + checksum += parseInt(tin[_i7], 10) * multiplier % 10; + multiplier += 2; + + if (multiplier > 10) { + multiplier = 1; + } else if (multiplier === 5) { + multiplier += 2; + } + } + + checksum = 10 - checksum % 10; + return checksum === parseInt(tin[10], 10); +} +/* +* pt-BR validation function +* (Cadastro de Pessoas Físicas (CPF, persons) +* Cadastro Nacional de Pessoas Jurídicas (CNPJ, entities) +* Both inputs will be validated +*/ + + +function ptBrCheck(tin) { + if (tin.length === 11) { + var _sum; + + var remainder; + _sum = 0; + if ( // Reject known invalid CPFs + tin === '11111111111' || tin === '22222222222' || tin === '33333333333' || tin === '44444444444' || tin === '55555555555' || tin === '66666666666' || tin === '77777777777' || tin === '88888888888' || tin === '99999999999' || tin === '00000000000') return false; + + for (var i = 1; i <= 9; i++) { + _sum += parseInt(tin.substring(i - 1, i), 10) * (11 - i); + } + + remainder = _sum * 10 % 11; + if (remainder === 10) remainder = 0; + if (remainder !== parseInt(tin.substring(9, 10), 10)) return false; + _sum = 0; + + for (var _i8 = 1; _i8 <= 10; _i8++) { + _sum += parseInt(tin.substring(_i8 - 1, _i8), 10) * (12 - _i8); + } + + remainder = _sum * 10 % 11; + if (remainder === 10) remainder = 0; + if (remainder !== parseInt(tin.substring(10, 11), 10)) return false; + return true; + } + + if ( // Reject know invalid CNPJs + tin === '00000000000000' || tin === '11111111111111' || tin === '22222222222222' || tin === '33333333333333' || tin === '44444444444444' || tin === '55555555555555' || tin === '66666666666666' || tin === '77777777777777' || tin === '88888888888888' || tin === '99999999999999') { + return false; + } + + var length = tin.length - 2; + var identifiers = tin.substring(0, length); + var verificators = tin.substring(length); + var sum = 0; + var pos = length - 7; + + for (var _i9 = length; _i9 >= 1; _i9--) { + sum += identifiers.charAt(length - _i9) * pos; + pos -= 1; + + if (pos < 2) { + pos = 9; + } + } + + var result = sum % 11 < 2 ? 0 : 11 - sum % 11; + + if (result !== parseInt(verificators.charAt(0), 10)) { + return false; + } + + length += 1; + identifiers = tin.substring(0, length); + sum = 0; + pos = length - 7; + + for (var _i10 = length; _i10 >= 1; _i10--) { + sum += identifiers.charAt(length - _i10) * pos; + pos -= 1; + + if (pos < 2) { + pos = 9; + } + } + + result = sum % 11 < 2 ? 0 : 11 - sum % 11; + + if (result !== parseInt(verificators.charAt(1), 10)) { + return false; + } + + return true; +} +/* + * pt-PT validation function + * (Número de identificação fiscal (NIF), persons/entities) + * Verify TIN validity by calculating check (last) digit (variant of MOD 11) + */ + + +function ptPtCheck(tin) { + var checksum = 11 - algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 8).map(function (a) { + return parseInt(a, 10); + }), 9) % 11; + + if (checksum > 9) { + return parseInt(tin[8], 10) === 0; + } + + return checksum === parseInt(tin[8], 10); +} +/* + * ro-RO validation function + * (Cod Numeric Personal (CNP) or Cod de înregistrare fiscală (CIF), + * persons only) + * Verify CNP validity by calculating check (last) digit (test not found for CIF) + * Material not in DG TAXUD document sourced from: + * `https://en.wikipedia.org/wiki/National_identification_number#Romania` + */ + + +function roRoCheck(tin) { + if (tin.slice(0, 4) !== '9000') { + // No test found for this format + // Extract full year using century digit if possible + var full_year = tin.slice(1, 3); + + switch (tin[0]) { + case '1': + case '2': + full_year = "19".concat(full_year); + break; + + case '3': + case '4': + full_year = "18".concat(full_year); + break; + + case '5': + case '6': + full_year = "20".concat(full_year); + break; + + default: + } // Check date validity + + + var date = "".concat(full_year, "/").concat(tin.slice(3, 5), "/").concat(tin.slice(5, 7)); + + if (date.length === 8) { + if (!(0, _isDate.default)(date, 'YY/MM/DD')) { + return false; + } + } else if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) { + return false; + } // Calculate check digit + + + var digits = tin.split('').map(function (a) { + return parseInt(a, 10); + }); + var multipliers = [2, 7, 9, 1, 4, 6, 3, 5, 8, 2, 7, 9]; + var checksum = 0; + + for (var i = 0; i < multipliers.length; i++) { + checksum += digits[i] * multipliers[i]; + } + + if (checksum % 11 === 10) { + return digits[12] === 1; + } + + return digits[12] === checksum % 11; + } + + return true; +} +/* + * sk-SK validation function + * (Rodné číslo (RČ) or bezvýznamové identifikačné číslo (BIČ), persons only) + * Checks validity of pre-1954 birth numbers (rodné číslo) only + * Due to the introduction of the pseudo-random BIČ it is not possible to test + * post-1954 birth numbers without knowing whether they are BIČ or RČ beforehand + */ + + +function skSkCheck(tin) { + if (tin.length === 9) { + tin = tin.replace(/\W/, ''); + + if (tin.slice(6) === '000') { + return false; + } // Three-zero serial not assigned before 1954 + // Extract full year from TIN length + + + var full_year = parseInt(tin.slice(0, 2), 10); + + if (full_year > 53) { + return false; + } + + if (full_year < 10) { + full_year = "190".concat(full_year); + } else { + full_year = "19".concat(full_year); + } // Extract month from TIN and normalize + + + var month = parseInt(tin.slice(2, 4), 10); + + if (month > 50) { + month -= 50; + } + + if (month < 10) { + month = "0".concat(month); + } // Check date validity + + + var date = "".concat(full_year, "/").concat(month, "/").concat(tin.slice(4, 6)); + + if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) { + return false; + } + } + + return true; +} +/* + * sl-SI validation function + * (Davčna številka, persons/entities) + * Verify TIN validity by calculating check (last) digit (variant of MOD 11) + */ + + +function slSiCheck(tin) { + var checksum = 11 - algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 7).map(function (a) { + return parseInt(a, 10); + }), 8) % 11; + + if (checksum === 10) { + return parseInt(tin[7], 10) === 0; + } + + return checksum === parseInt(tin[7], 10); +} +/* + * sv-SE validation function + * (Personnummer or samordningsnummer, persons only) + * Checks validity of birth date and calls luhnCheck() to validate check (last) digit + */ + + +function svSeCheck(tin) { + // Make copy of TIN and normalize to two-digit year form + var tin_copy = tin.slice(0); + + if (tin.length > 11) { + tin_copy = tin_copy.slice(2); + } // Extract date of birth + + + var full_year = ''; + var month = tin_copy.slice(2, 4); + var day = parseInt(tin_copy.slice(4, 6), 10); + + if (tin.length > 11) { + full_year = tin.slice(0, 4); + } else { + full_year = tin.slice(0, 2); + + if (tin.length === 11 && day < 60) { + // Extract full year from centenarian symbol + // Should work just fine until year 10000 or so + var current_year = new Date().getFullYear().toString(); + var current_century = parseInt(current_year.slice(0, 2), 10); + current_year = parseInt(current_year, 10); + + if (tin[6] === '-') { + if (parseInt("".concat(current_century).concat(full_year), 10) > current_year) { + full_year = "".concat(current_century - 1).concat(full_year); + } else { + full_year = "".concat(current_century).concat(full_year); + } + } else { + full_year = "".concat(current_century - 1).concat(full_year); + + if (current_year - parseInt(full_year, 10) < 100) { + return false; + } + } + } + } // Normalize day and check date validity + + + if (day > 60) { + day -= 60; + } + + if (day < 10) { + day = "0".concat(day); + } + + var date = "".concat(full_year, "/").concat(month, "/").concat(day); + + if (date.length === 8) { + if (!(0, _isDate.default)(date, 'YY/MM/DD')) { + return false; + } + } else if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) { + return false; + } + + return algorithms.luhnCheck(tin.replace(/\W/, '')); +} // Locale lookup objects + +/* + * Tax id regex formats for various locales + * + * Where not explicitly specified in DG-TAXUD document both + * uppercase and lowercase letters are acceptable. + */ + + +var taxIdFormat = { + 'bg-BG': /^\d{10}$/, + 'cs-CZ': /^\d{6}\/{0,1}\d{3,4}$/, + 'de-AT': /^\d{9}$/, + 'de-DE': /^[1-9]\d{10}$/, + 'dk-DK': /^\d{6}-{0,1}\d{4}$/, + 'el-CY': /^[09]\d{7}[A-Z]$/, + 'el-GR': /^([0-4]|[7-9])\d{8}$/, + 'en-GB': /^\d{10}$|^(?!GB|NK|TN|ZZ)(?![DFIQUV])[A-Z](?![DFIQUVO])[A-Z]\d{6}[ABCD ]$/i, + 'en-IE': /^\d{7}[A-W][A-IW]{0,1}$/i, + 'en-US': /^\d{2}[- ]{0,1}\d{7}$/, + 'es-ES': /^(\d{0,8}|[XYZKLM]\d{7})[A-HJ-NP-TV-Z]$/i, + 'et-EE': /^[1-6]\d{6}(00[1-9]|0[1-9][0-9]|[1-6][0-9]{2}|70[0-9]|710)\d$/, + 'fi-FI': /^\d{6}[-+A]\d{3}[0-9A-FHJ-NPR-Y]$/i, + 'fr-BE': /^\d{11}$/, + 'fr-FR': /^[0-3]\d{12}$|^[0-3]\d\s\d{2}(\s\d{3}){3}$/, + // Conforms both to official spec and provided example + 'fr-LU': /^\d{13}$/, + 'hr-HR': /^\d{11}$/, + 'hu-HU': /^8\d{9}$/, + 'it-IT': /^[A-Z]{6}[L-NP-V0-9]{2}[A-EHLMPRST][L-NP-V0-9]{2}[A-ILMZ][L-NP-V0-9]{3}[A-Z]$/i, + 'lv-LV': /^\d{6}-{0,1}\d{5}$/, + // Conforms both to DG TAXUD spec and original research + 'mt-MT': /^\d{3,7}[APMGLHBZ]$|^([1-8])\1\d{7}$/i, + 'nl-NL': /^\d{9}$/, + 'pl-PL': /^\d{10,11}$/, + 'pt-BR': /(?:^\d{11}$)|(?:^\d{14}$)/, + 'pt-PT': /^\d{9}$/, + 'ro-RO': /^\d{13}$/, + 'sk-SK': /^\d{6}\/{0,1}\d{3,4}$/, + 'sl-SI': /^[1-9]\d{7}$/, + 'sv-SE': /^(\d{6}[-+]{0,1}\d{4}|(18|19|20)\d{6}[-+]{0,1}\d{4})$/ +}; // taxIdFormat locale aliases + +taxIdFormat['lb-LU'] = taxIdFormat['fr-LU']; +taxIdFormat['lt-LT'] = taxIdFormat['et-EE']; +taxIdFormat['nl-BE'] = taxIdFormat['fr-BE']; // Algorithmic tax id check functions for various locales + +var taxIdCheck = { + 'bg-BG': bgBgCheck, + 'cs-CZ': csCzCheck, + 'de-AT': deAtCheck, + 'de-DE': deDeCheck, + 'dk-DK': dkDkCheck, + 'el-CY': elCyCheck, + 'el-GR': elGrCheck, + 'en-IE': enIeCheck, + 'en-US': enUsCheck, + 'es-ES': esEsCheck, + 'et-EE': etEeCheck, + 'fi-FI': fiFiCheck, + 'fr-BE': frBeCheck, + 'fr-FR': frFrCheck, + 'fr-LU': frLuCheck, + 'hr-HR': hrHrCheck, + 'hu-HU': huHuCheck, + 'it-IT': itItCheck, + 'lv-LV': lvLvCheck, + 'mt-MT': mtMtCheck, + 'nl-NL': nlNlCheck, + 'pl-PL': plPlCheck, + 'pt-BR': ptBrCheck, + 'pt-PT': ptPtCheck, + 'ro-RO': roRoCheck, + 'sk-SK': skSkCheck, + 'sl-SI': slSiCheck, + 'sv-SE': svSeCheck +}; // taxIdCheck locale aliases + +taxIdCheck['lb-LU'] = taxIdCheck['fr-LU']; +taxIdCheck['lt-LT'] = taxIdCheck['et-EE']; +taxIdCheck['nl-BE'] = taxIdCheck['fr-BE']; // Regexes for locales where characters should be omitted before checking format + +var allsymbols = /[-\\\/!@#$%\^&\*\(\)\+\=\[\]]+/g; +var sanitizeRegexes = { + 'de-AT': allsymbols, + 'de-DE': /[\/\\]/g, + 'fr-BE': allsymbols +}; // sanitizeRegexes locale aliases + +sanitizeRegexes['nl-BE'] = sanitizeRegexes['fr-BE']; +/* + * Validator function + * Return true if the passed string is a valid tax identification number + * for the specified locale. + * Throw an error exception if the locale is not supported. + */ + +function isTaxID(str) { + var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US'; + (0, _assertString.default)(str); // Copy TIN to avoid replacement if sanitized + + var strcopy = str.slice(0); + + if (locale in taxIdFormat) { + if (locale in sanitizeRegexes) { + strcopy = strcopy.replace(sanitizeRegexes[locale], ''); + } + + if (!taxIdFormat[locale].test(strcopy)) { + return false; + } + + if (locale in taxIdCheck) { + return taxIdCheck[locale](strcopy); + } // Fallthrough; not all locales have algorithmic checks + + + return true; + } + + throw new Error("Invalid locale '".concat(locale, "'")); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isURL.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isURL.js new file mode 100644 index 00000000..b8d5e87d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isURL.js @@ -0,0 +1,208 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isURL; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +var _isFQDN = _interopRequireDefault(require("./isFQDN")); + +var _isIP = _interopRequireDefault(require("./isIP")); + +var _merge = _interopRequireDefault(require("./util/merge")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +/* +options for isURL method + +require_protocol - if set as true isURL will return false if protocol is not present in the URL +require_valid_protocol - isURL will check if the URL's protocol is present in the protocols option +protocols - valid protocols can be modified with this option +require_host - if set as false isURL will not check if host is present in the URL +require_port - if set as true isURL will check if port is present in the URL +allow_protocol_relative_urls - if set as true protocol relative URLs will be allowed +validate_length - if set as false isURL will skip string length validation (IE maximum is 2083) + +*/ +var default_url_options = { + protocols: ['http', 'https', 'ftp'], + require_tld: true, + require_protocol: false, + require_host: true, + require_port: false, + require_valid_protocol: true, + allow_underscores: false, + allow_trailing_dot: false, + allow_protocol_relative_urls: false, + allow_fragments: true, + allow_query_components: true, + validate_length: true +}; +var wrapped_ipv6 = /^\[([^\]]+)\](?::([0-9]+))?$/; + +function isRegExp(obj) { + return Object.prototype.toString.call(obj) === '[object RegExp]'; +} + +function checkHost(host, matches) { + for (var i = 0; i < matches.length; i++) { + var match = matches[i]; + + if (host === match || isRegExp(match) && match.test(host)) { + return true; + } + } + + return false; +} + +function isURL(url, options) { + (0, _assertString.default)(url); + + if (!url || /[\s<>]/.test(url)) { + return false; + } + + if (url.indexOf('mailto:') === 0) { + return false; + } + + options = (0, _merge.default)(options, default_url_options); + + if (options.validate_length && url.length >= 2083) { + return false; + } + + if (!options.allow_fragments && url.includes('#')) { + return false; + } + + if (!options.allow_query_components && (url.includes('?') || url.includes('&'))) { + return false; + } + + var protocol, auth, host, hostname, port, port_str, split, ipv6; + split = url.split('#'); + url = split.shift(); + split = url.split('?'); + url = split.shift(); + split = url.split('://'); + + if (split.length > 1) { + protocol = split.shift().toLowerCase(); + + if (options.require_valid_protocol && options.protocols.indexOf(protocol) === -1) { + return false; + } + } else if (options.require_protocol) { + return false; + } else if (url.substr(0, 2) === '//') { + if (!options.allow_protocol_relative_urls) { + return false; + } + + split[0] = url.substr(2); + } + + url = split.join('://'); + + if (url === '') { + return false; + } + + split = url.split('/'); + url = split.shift(); + + if (url === '' && !options.require_host) { + return true; + } + + split = url.split('@'); + + if (split.length > 1) { + if (options.disallow_auth) { + return false; + } + + if (split[0] === '') { + return false; + } + + auth = split.shift(); + + if (auth.indexOf(':') >= 0 && auth.split(':').length > 2) { + return false; + } + + var _auth$split = auth.split(':'), + _auth$split2 = _slicedToArray(_auth$split, 2), + user = _auth$split2[0], + password = _auth$split2[1]; + + if (user === '' && password === '') { + return false; + } + } + + hostname = split.join('@'); + port_str = null; + ipv6 = null; + var ipv6_match = hostname.match(wrapped_ipv6); + + if (ipv6_match) { + host = ''; + ipv6 = ipv6_match[1]; + port_str = ipv6_match[2] || null; + } else { + split = hostname.split(':'); + host = split.shift(); + + if (split.length) { + port_str = split.join(':'); + } + } + + if (port_str !== null && port_str.length > 0) { + port = parseInt(port_str, 10); + + if (!/^[0-9]+$/.test(port_str) || port <= 0 || port > 65535) { + return false; + } + } else if (options.require_port) { + return false; + } + + if (options.host_whitelist) { + return checkHost(host, options.host_whitelist); + } + + if (!(0, _isIP.default)(host) && !(0, _isFQDN.default)(host, options) && (!ipv6 || !(0, _isIP.default)(ipv6, 6))) { + return false; + } + + host = host || ipv6; + + if (options.host_blacklist && checkHost(host, options.host_blacklist)) { + return false; + } + + return true; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isUUID.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isUUID.js new file mode 100644 index 00000000..f2fdc79c --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isUUID.js @@ -0,0 +1,28 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isUUID; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var uuid = { + 1: /^[0-9A-F]{8}-[0-9A-F]{4}-1[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i, + 2: /^[0-9A-F]{8}-[0-9A-F]{4}-2[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i, + 3: /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i, + 4: /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i, + 5: /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i, + all: /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i +}; + +function isUUID(str, version) { + (0, _assertString.default)(str); + var pattern = uuid[![undefined, null].includes(version) ? version : 'all']; + return !!pattern && pattern.test(str); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isUppercase.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isUppercase.js new file mode 100644 index 00000000..c1c02f9f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isUppercase.js @@ -0,0 +1,18 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isUppercase; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function isUppercase(str) { + (0, _assertString.default)(str); + return str === str.toUpperCase(); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isVAT.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isVAT.js new file mode 100644 index 00000000..bfd7beb2 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isVAT.js @@ -0,0 +1,29 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isVAT; +exports.vatMatchers = void 0; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var vatMatchers = { + GB: /^GB((\d{3} \d{4} ([0-8][0-9]|9[0-6]))|(\d{9} \d{3})|(((GD[0-4])|(HA[5-9]))[0-9]{2}))$/, + IT: /^(IT)?[0-9]{11}$/, + NL: /^(NL)?[0-9]{9}B[0-9]{2}$/ +}; +exports.vatMatchers = vatMatchers; + +function isVAT(str, countryCode) { + (0, _assertString.default)(str); + (0, _assertString.default)(countryCode); + + if (countryCode in vatMatchers) { + return vatMatchers[countryCode].test(str); + } + + throw new Error("Invalid country code: '".concat(countryCode, "'")); +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isVariableWidth.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isVariableWidth.js new file mode 100644 index 00000000..6bf226e6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isVariableWidth.js @@ -0,0 +1,22 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isVariableWidth; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +var _isFullWidth = require("./isFullWidth"); + +var _isHalfWidth = require("./isHalfWidth"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function isVariableWidth(str) { + (0, _assertString.default)(str); + return _isFullWidth.fullWidth.test(str) && _isHalfWidth.halfWidth.test(str); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isWhitelisted.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isWhitelisted.js new file mode 100644 index 00000000..5a80a1b7 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/isWhitelisted.js @@ -0,0 +1,25 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isWhitelisted; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function isWhitelisted(str, chars) { + (0, _assertString.default)(str); + + for (var i = str.length - 1; i >= 0; i--) { + if (chars.indexOf(str[i]) === -1) { + return false; + } + } + + return true; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/ltrim.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/ltrim.js new file mode 100644 index 00000000..fc39160f --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/ltrim.js @@ -0,0 +1,20 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = ltrim; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function ltrim(str, chars) { + (0, _assertString.default)(str); // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping + + var pattern = chars ? new RegExp("^[".concat(chars.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), "]+"), 'g') : /^\s+/g; + return str.replace(pattern, ''); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/matches.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/matches.js new file mode 100644 index 00000000..ea01ac16 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/matches.js @@ -0,0 +1,23 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = matches; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function matches(str, pattern, modifiers) { + (0, _assertString.default)(str); + + if (Object.prototype.toString.call(pattern) !== '[object RegExp]') { + pattern = new RegExp(pattern, modifiers); + } + + return pattern.test(str); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/normalizeEmail.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/normalizeEmail.js new file mode 100644 index 00000000..990f4318 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/normalizeEmail.js @@ -0,0 +1,151 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = normalizeEmail; + +var _merge = _interopRequireDefault(require("./util/merge")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var default_normalize_email_options = { + // The following options apply to all email addresses + // Lowercases the local part of the email address. + // Please note this may violate RFC 5321 as per http://stackoverflow.com/a/9808332/192024). + // The domain is always lowercased, as per RFC 1035 + all_lowercase: true, + // The following conversions are specific to GMail + // Lowercases the local part of the GMail address (known to be case-insensitive) + gmail_lowercase: true, + // Removes dots from the local part of the email address, as that's ignored by GMail + gmail_remove_dots: true, + // Removes the subaddress (e.g. "+foo") from the email address + gmail_remove_subaddress: true, + // Conversts the googlemail.com domain to gmail.com + gmail_convert_googlemaildotcom: true, + // The following conversions are specific to Outlook.com / Windows Live / Hotmail + // Lowercases the local part of the Outlook.com address (known to be case-insensitive) + outlookdotcom_lowercase: true, + // Removes the subaddress (e.g. "+foo") from the email address + outlookdotcom_remove_subaddress: true, + // The following conversions are specific to Yahoo + // Lowercases the local part of the Yahoo address (known to be case-insensitive) + yahoo_lowercase: true, + // Removes the subaddress (e.g. "-foo") from the email address + yahoo_remove_subaddress: true, + // The following conversions are specific to Yandex + // Lowercases the local part of the Yandex address (known to be case-insensitive) + yandex_lowercase: true, + // The following conversions are specific to iCloud + // Lowercases the local part of the iCloud address (known to be case-insensitive) + icloud_lowercase: true, + // Removes the subaddress (e.g. "+foo") from the email address + icloud_remove_subaddress: true +}; // List of domains used by iCloud + +var icloud_domains = ['icloud.com', 'me.com']; // List of domains used by Outlook.com and its predecessors +// This list is likely incomplete. +// Partial reference: +// https://blogs.office.com/2013/04/17/outlook-com-gets-two-step-verification-sign-in-by-alias-and-new-international-domains/ + +var outlookdotcom_domains = ['hotmail.at', 'hotmail.be', 'hotmail.ca', 'hotmail.cl', 'hotmail.co.il', 'hotmail.co.nz', 'hotmail.co.th', 'hotmail.co.uk', 'hotmail.com', 'hotmail.com.ar', 'hotmail.com.au', 'hotmail.com.br', 'hotmail.com.gr', 'hotmail.com.mx', 'hotmail.com.pe', 'hotmail.com.tr', 'hotmail.com.vn', 'hotmail.cz', 'hotmail.de', 'hotmail.dk', 'hotmail.es', 'hotmail.fr', 'hotmail.hu', 'hotmail.id', 'hotmail.ie', 'hotmail.in', 'hotmail.it', 'hotmail.jp', 'hotmail.kr', 'hotmail.lv', 'hotmail.my', 'hotmail.ph', 'hotmail.pt', 'hotmail.sa', 'hotmail.sg', 'hotmail.sk', 'live.be', 'live.co.uk', 'live.com', 'live.com.ar', 'live.com.mx', 'live.de', 'live.es', 'live.eu', 'live.fr', 'live.it', 'live.nl', 'msn.com', 'outlook.at', 'outlook.be', 'outlook.cl', 'outlook.co.il', 'outlook.co.nz', 'outlook.co.th', 'outlook.com', 'outlook.com.ar', 'outlook.com.au', 'outlook.com.br', 'outlook.com.gr', 'outlook.com.pe', 'outlook.com.tr', 'outlook.com.vn', 'outlook.cz', 'outlook.de', 'outlook.dk', 'outlook.es', 'outlook.fr', 'outlook.hu', 'outlook.id', 'outlook.ie', 'outlook.in', 'outlook.it', 'outlook.jp', 'outlook.kr', 'outlook.lv', 'outlook.my', 'outlook.ph', 'outlook.pt', 'outlook.sa', 'outlook.sg', 'outlook.sk', 'passport.com']; // List of domains used by Yahoo Mail +// This list is likely incomplete + +var yahoo_domains = ['rocketmail.com', 'yahoo.ca', 'yahoo.co.uk', 'yahoo.com', 'yahoo.de', 'yahoo.fr', 'yahoo.in', 'yahoo.it', 'ymail.com']; // List of domains used by yandex.ru + +var yandex_domains = ['yandex.ru', 'yandex.ua', 'yandex.kz', 'yandex.com', 'yandex.by', 'ya.ru']; // replace single dots, but not multiple consecutive dots + +function dotsReplacer(match) { + if (match.length > 1) { + return match; + } + + return ''; +} + +function normalizeEmail(email, options) { + options = (0, _merge.default)(options, default_normalize_email_options); + var raw_parts = email.split('@'); + var domain = raw_parts.pop(); + var user = raw_parts.join('@'); + var parts = [user, domain]; // The domain is always lowercased, as it's case-insensitive per RFC 1035 + + parts[1] = parts[1].toLowerCase(); + + if (parts[1] === 'gmail.com' || parts[1] === 'googlemail.com') { + // Address is GMail + if (options.gmail_remove_subaddress) { + parts[0] = parts[0].split('+')[0]; + } + + if (options.gmail_remove_dots) { + // this does not replace consecutive dots like example..email@gmail.com + parts[0] = parts[0].replace(/\.+/g, dotsReplacer); + } + + if (!parts[0].length) { + return false; + } + + if (options.all_lowercase || options.gmail_lowercase) { + parts[0] = parts[0].toLowerCase(); + } + + parts[1] = options.gmail_convert_googlemaildotcom ? 'gmail.com' : parts[1]; + } else if (icloud_domains.indexOf(parts[1]) >= 0) { + // Address is iCloud + if (options.icloud_remove_subaddress) { + parts[0] = parts[0].split('+')[0]; + } + + if (!parts[0].length) { + return false; + } + + if (options.all_lowercase || options.icloud_lowercase) { + parts[0] = parts[0].toLowerCase(); + } + } else if (outlookdotcom_domains.indexOf(parts[1]) >= 0) { + // Address is Outlook.com + if (options.outlookdotcom_remove_subaddress) { + parts[0] = parts[0].split('+')[0]; + } + + if (!parts[0].length) { + return false; + } + + if (options.all_lowercase || options.outlookdotcom_lowercase) { + parts[0] = parts[0].toLowerCase(); + } + } else if (yahoo_domains.indexOf(parts[1]) >= 0) { + // Address is Yahoo + if (options.yahoo_remove_subaddress) { + var components = parts[0].split('-'); + parts[0] = components.length > 1 ? components.slice(0, -1).join('-') : components[0]; + } + + if (!parts[0].length) { + return false; + } + + if (options.all_lowercase || options.yahoo_lowercase) { + parts[0] = parts[0].toLowerCase(); + } + } else if (yandex_domains.indexOf(parts[1]) >= 0) { + if (options.all_lowercase || options.yandex_lowercase) { + parts[0] = parts[0].toLowerCase(); + } + + parts[1] = 'yandex.ru'; // all yandex domains are equal, 1st preferred + } else if (options.all_lowercase) { + // Any other address + parts[0] = parts[0].toLowerCase(); + } + + return parts.join('@'); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/rtrim.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/rtrim.js new file mode 100644 index 00000000..e056a47d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/rtrim.js @@ -0,0 +1,32 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = rtrim; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function rtrim(str, chars) { + (0, _assertString.default)(str); + + if (chars) { + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping + var pattern = new RegExp("[".concat(chars.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), "]+$"), 'g'); + return str.replace(pattern, ''); + } // Use a faster and more safe than regex trim method https://blog.stevenlevithan.com/archives/faster-trim-javascript + + + var strIndex = str.length - 1; + + while (/\s/.test(str.charAt(strIndex))) { + strIndex -= 1; + } + + return str.slice(0, strIndex + 1); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/stripLow.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/stripLow.js new file mode 100644 index 00000000..aec2e0b5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/stripLow.js @@ -0,0 +1,21 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = stripLow; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +var _blacklist = _interopRequireDefault(require("./blacklist")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function stripLow(str, keep_new_lines) { + (0, _assertString.default)(str); + var chars = keep_new_lines ? '\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F\\x7F' : '\\x00-\\x1F\\x7F'; + return (0, _blacklist.default)(str, chars); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/toBoolean.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/toBoolean.js new file mode 100644 index 00000000..a1b1fe46 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/toBoolean.js @@ -0,0 +1,23 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = toBoolean; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function toBoolean(str, strict) { + (0, _assertString.default)(str); + + if (strict) { + return str === '1' || /^true$/i.test(str); + } + + return str !== '0' && !/^false$/i.test(str) && str !== ''; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/toDate.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/toDate.js new file mode 100644 index 00000000..cb0756ca --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/toDate.js @@ -0,0 +1,19 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = toDate; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function toDate(date) { + (0, _assertString.default)(date); + date = Date.parse(date); + return !isNaN(date) ? new Date(date) : null; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/toFloat.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/toFloat.js new file mode 100644 index 00000000..96adafd5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/toFloat.js @@ -0,0 +1,18 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = toFloat; + +var _isFloat = _interopRequireDefault(require("./isFloat")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function toFloat(str) { + if (!(0, _isFloat.default)(str)) return NaN; + return parseFloat(str); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/toInt.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/toInt.js new file mode 100644 index 00000000..4c0e7add --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/toInt.js @@ -0,0 +1,18 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = toInt; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function toInt(str, radix) { + (0, _assertString.default)(str); + return parseInt(str, radix || 10); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/trim.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/trim.js new file mode 100644 index 00000000..497e3c3d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/trim.js @@ -0,0 +1,19 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = trim; + +var _rtrim = _interopRequireDefault(require("./rtrim")); + +var _ltrim = _interopRequireDefault(require("./ltrim")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function trim(str, chars) { + return (0, _rtrim.default)((0, _ltrim.default)(str, chars), chars); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/unescape.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/unescape.js new file mode 100644 index 00000000..303d20c8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/unescape.js @@ -0,0 +1,20 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = unescape; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function unescape(str) { + (0, _assertString.default)(str); + return str.replace(/"/g, '"').replace(/'/g, "'").replace(/</g, '<').replace(/>/g, '>').replace(///g, '/').replace(/\/g, '\\').replace(/`/g, '`').replace(/&/g, '&'); // & replacement has to be the last one to prevent + // bugs with intermediate strings containing escape sequences + // See: https://github.com/validatorjs/validator.js/issues/1827 +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/algorithms.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/algorithms.js new file mode 100644 index 00000000..cf8e512e --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/algorithms.js @@ -0,0 +1,101 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.iso7064Check = iso7064Check; +exports.luhnCheck = luhnCheck; +exports.reverseMultiplyAndSum = reverseMultiplyAndSum; +exports.verhoeffCheck = verhoeffCheck; + +/** + * Algorithmic validation functions + * May be used as is or implemented in the workflow of other validators. + */ + +/* + * ISO 7064 validation function + * Called with a string of numbers (incl. check digit) + * to validate according to ISO 7064 (MOD 11, 10). + */ +function iso7064Check(str) { + var checkvalue = 10; + + for (var i = 0; i < str.length - 1; i++) { + checkvalue = (parseInt(str[i], 10) + checkvalue) % 10 === 0 ? 10 * 2 % 11 : (parseInt(str[i], 10) + checkvalue) % 10 * 2 % 11; + } + + checkvalue = checkvalue === 1 ? 0 : 11 - checkvalue; + return checkvalue === parseInt(str[10], 10); +} +/* + * Luhn (mod 10) validation function + * Called with a string of numbers (incl. check digit) + * to validate according to the Luhn algorithm. + */ + + +function luhnCheck(str) { + var checksum = 0; + var second = false; + + for (var i = str.length - 1; i >= 0; i--) { + if (second) { + var product = parseInt(str[i], 10) * 2; + + if (product > 9) { + // sum digits of product and add to checksum + checksum += product.toString().split('').map(function (a) { + return parseInt(a, 10); + }).reduce(function (a, b) { + return a + b; + }, 0); + } else { + checksum += product; + } + } else { + checksum += parseInt(str[i], 10); + } + + second = !second; + } + + return checksum % 10 === 0; +} +/* + * Reverse TIN multiplication and summation helper function + * Called with an array of single-digit integers and a base multiplier + * to calculate the sum of the digits multiplied in reverse. + * Normally used in variations of MOD 11 algorithmic checks. + */ + + +function reverseMultiplyAndSum(digits, base) { + var total = 0; + + for (var i = 0; i < digits.length; i++) { + total += digits[i] * (base - i); + } + + return total; +} +/* + * Verhoeff validation helper function + * Called with a string of numbers + * to validate according to the Verhoeff algorithm. + */ + + +function verhoeffCheck(str) { + var d_table = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 0, 6, 7, 8, 9, 5], [2, 3, 4, 0, 1, 7, 8, 9, 5, 6], [3, 4, 0, 1, 2, 8, 9, 5, 6, 7], [4, 0, 1, 2, 3, 9, 5, 6, 7, 8], [5, 9, 8, 7, 6, 0, 4, 3, 2, 1], [6, 5, 9, 8, 7, 1, 0, 4, 3, 2], [7, 6, 5, 9, 8, 2, 1, 0, 4, 3], [8, 7, 6, 5, 9, 3, 2, 1, 0, 4], [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]]; + var p_table = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 5, 7, 6, 2, 8, 3, 0, 9, 4], [5, 8, 0, 3, 7, 9, 6, 1, 4, 2], [8, 9, 1, 6, 0, 4, 3, 5, 2, 7], [9, 4, 5, 3, 1, 2, 6, 8, 7, 0], [4, 2, 8, 6, 5, 7, 3, 9, 0, 1], [2, 7, 9, 3, 8, 0, 6, 4, 1, 5], [7, 0, 4, 6, 9, 1, 3, 2, 5, 8]]; // Copy (to prevent replacement) and reverse + + var str_copy = str.split('').reverse().join(''); + var checksum = 0; + + for (var i = 0; i < str_copy.length; i++) { + checksum = d_table[checksum][p_table[i % 8][parseInt(str_copy[i], 10)]]; + } + + return checksum === 0; +} \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/assertString.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/assertString.js new file mode 100644 index 00000000..2c508af5 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/assertString.js @@ -0,0 +1,22 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = assertString; + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function assertString(input) { + var isString = typeof input === 'string' || input instanceof String; + + if (!isString) { + var invalidType = _typeof(input); + + if (input === null) invalidType = 'null';else if (invalidType === 'object') invalidType = input.constructor.name; + throw new TypeError("Expected a string but received a ".concat(invalidType)); + } +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/includes.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/includes.js new file mode 100644 index 00000000..e0618288 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/includes.js @@ -0,0 +1,17 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var includes = function includes(arr, val) { + return arr.some(function (arrVal) { + return val === arrVal; + }); +}; + +var _default = includes; +exports.default = _default; +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/merge.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/merge.js new file mode 100644 index 00000000..a96c7393 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/merge.js @@ -0,0 +1,22 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = merge; + +function merge() { + var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var defaults = arguments.length > 1 ? arguments[1] : undefined; + + for (var key in defaults) { + if (typeof obj[key] === 'undefined') { + obj[key] = defaults[key]; + } + } + + return obj; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/multilineRegex.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/multilineRegex.js new file mode 100644 index 00000000..6980d14d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/multilineRegex.js @@ -0,0 +1,22 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = multilineRegexp; + +/** + * Build RegExp object from an array + * of multiple/multi-line regexp parts + * + * @param {string[]} parts + * @param {string} flags + * @return {object} - RegExp object + */ +function multilineRegexp(parts, flags) { + var regexpAsStringLiteral = parts.join(''); + return new RegExp(regexpAsStringLiteral, flags); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/toString.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/toString.js new file mode 100644 index 00000000..62951929 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/toString.js @@ -0,0 +1,25 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = toString; + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function toString(input) { + if (_typeof(input) === 'object' && input !== null) { + if (typeof input.toString === 'function') { + input = input.toString(); + } else { + input = '[object Object]'; + } + } else if (input === null || typeof input === 'undefined' || isNaN(input) && !input.length) { + input = ''; + } + + return String(input); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/typeOf.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/typeOf.js new file mode 100644 index 00000000..5bfacdb8 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/util/typeOf.js @@ -0,0 +1,20 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = typeOf; + +/** + * Better way to handle type checking + * null, {}, array and date are objects, which confuses + */ +function typeOf(input) { + var rawObject = Object.prototype.toString.call(input).toLowerCase(); + var typeOfRegex = /\[object (.*)]/g; + var type = typeOfRegex.exec(rawObject)[1]; + return type; +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/lib/whitelist.js b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/whitelist.js new file mode 100644 index 00000000..7ae624e9 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/lib/whitelist.js @@ -0,0 +1,18 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = whitelist; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function whitelist(str, chars) { + (0, _assertString.default)(str); + return str.replace(new RegExp("[^".concat(chars, "]+"), 'g'), ''); +} + +module.exports = exports.default; +module.exports.default = exports.default; \ No newline at end of file diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/package.json b/srcs/requirements/nestjs/api_back/node_modules/validator/package.json new file mode 100644 index 00000000..7d505205 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/package.json @@ -0,0 +1,75 @@ +{ + "name": "validator", + "description": "String validation and sanitization", + "version": "13.7.0", + "sideEffects": false, + "homepage": "https://github.com/validatorjs/validator.js", + "files": [ + "index.js", + "es", + "lib", + "README.md", + "LICENCE", + "validator.js", + "validator.min.js" + ], + "keywords": [ + "validator", + "validation", + "validate", + "sanitization", + "sanitize", + "sanitisation", + "sanitise", + "assert" + ], + "author": "Chris O'Hara ", + "contributors": [ + "Anthony Nandaa (https://github.com/profnandaa)" + ], + "main": "index.js", + "bugs": { + "url": "https://github.com/validatorjs/validator.js/issues" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/validatorjs/validator.js.git" + }, + "devDependencies": { + "@babel/cli": "^7.0.0", + "@babel/core": "^7.0.0", + "@babel/preset-env": "^7.0.0", + "@babel/register": "^7.0.0", + "babel-eslint": "^10.0.1", + "babel-plugin-add-module-exports": "^1.0.0", + "eslint": "^4.19.1", + "eslint-config-airbnb-base": "^12.1.0", + "eslint-plugin-import": "^2.11.0", + "mocha": "^6.2.3", + "npm-run-all": "^4.1.5", + "nyc": "^14.1.0", + "rimraf": "^3.0.0", + "rollup": "^0.47.0", + "rollup-plugin-babel": "^4.0.1", + "uglify-js": "^3.0.19" + }, + "scripts": { + "lint": "eslint src test", + "lint:fix": "eslint --fix src test", + "clean:node": "rimraf index.js lib", + "clean:es": "rimraf es", + "clean:browser": "rimraf validator*.js", + "clean": "run-p clean:*", + "minify": "uglifyjs validator.js -o validator.min.js --compress --mangle --comments /Copyright/", + "build:browser": "node --require @babel/register build-browser && npm run minify", + "build:es": "babel src -d es --env-name=es", + "build:node": "babel src -d .", + "build": "run-p build:*", + "pretest": "npm run build && npm run lint", + "test": "nyc --reporter=cobertura --reporter=text-summary mocha --require @babel/register --reporter dot" + }, + "engines": { + "node": ">= 0.10" + }, + "license": "MIT" +} diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/validator.js b/srcs/requirements/nestjs/api_back/node_modules/validator/validator.js new file mode 100644 index 00000000..32a88140 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/validator.js @@ -0,0 +1,5094 @@ +/*! + * Copyright (c) 2018 Chris O'Hara + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.validator = factory()); +}(this, (function () { 'use strict'; + +function _typeof(obj) { + "@babel/helpers - typeof"; + + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function (obj) { + return typeof obj; + }; + } else { + _typeof = function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } + + return _typeof(obj); +} + +function _slicedToArray(arr, i) { + return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); +} + +function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); +} + +function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); +} + +function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; +} + +function _iterableToArray(iter) { + if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); +} + +function _iterableToArrayLimit(arr, i) { + if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; + + try { + for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"] != null) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; +} + +function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); +} + +function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + + return arr2; +} + +function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} + +function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} + +function _createForOfIteratorHelper(o, allowArrayLike) { + var it; + + if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { + if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { + if (it) o = it; + var i = 0; + + var F = function () {}; + + return { + s: F, + n: function () { + if (i >= o.length) return { + done: true + }; + return { + done: false, + value: o[i++] + }; + }, + e: function (e) { + throw e; + }, + f: F + }; + } + + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + var normalCompletion = true, + didErr = false, + err; + return { + s: function () { + it = o[Symbol.iterator](); + }, + n: function () { + var step = it.next(); + normalCompletion = step.done; + return step; + }, + e: function (e) { + didErr = true; + err = e; + }, + f: function () { + try { + if (!normalCompletion && it.return != null) it.return(); + } finally { + if (didErr) throw err; + } + } + }; +} + +function assertString(input) { + var isString = typeof input === 'string' || input instanceof String; + + if (!isString) { + var invalidType = _typeof(input); + + if (input === null) invalidType = 'null';else if (invalidType === 'object') invalidType = input.constructor.name; + throw new TypeError("Expected a string but received a ".concat(invalidType)); + } +} + +function toDate(date) { + assertString(date); + date = Date.parse(date); + return !isNaN(date) ? new Date(date) : null; +} + +var alpha = { + 'en-US': /^[A-Z]+$/i, + 'az-AZ': /^[A-VXYZÇƏĞİıÖŞÜ]+$/i, + 'bg-BG': /^[А-Я]+$/i, + 'cs-CZ': /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i, + 'da-DK': /^[A-ZÆØÅ]+$/i, + 'de-DE': /^[A-ZÄÖÜß]+$/i, + 'el-GR': /^[Α-ώ]+$/i, + 'es-ES': /^[A-ZÁÉÍÑÓÚÜ]+$/i, + 'fa-IR': /^[ابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهی]+$/i, + 'fi-FI': /^[A-ZÅÄÖ]+$/i, + 'fr-FR': /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i, + 'it-IT': /^[A-ZÀÉÈÌÎÓÒÙ]+$/i, + 'nb-NO': /^[A-ZÆØÅ]+$/i, + 'nl-NL': /^[A-ZÁÉËÏÓÖÜÚ]+$/i, + 'nn-NO': /^[A-ZÆØÅ]+$/i, + 'hu-HU': /^[A-ZÁÉÍÓÖŐÚÜŰ]+$/i, + 'pl-PL': /^[A-ZĄĆĘŚŁŃÓŻŹ]+$/i, + 'pt-PT': /^[A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i, + 'ru-RU': /^[А-ЯЁ]+$/i, + 'sl-SI': /^[A-ZČĆĐŠŽ]+$/i, + 'sk-SK': /^[A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i, + 'sr-RS@latin': /^[A-ZČĆŽŠĐ]+$/i, + 'sr-RS': /^[А-ЯЂЈЉЊЋЏ]+$/i, + 'sv-SE': /^[A-ZÅÄÖ]+$/i, + 'th-TH': /^[ก-๐\s]+$/i, + 'tr-TR': /^[A-ZÇĞİıÖŞÜ]+$/i, + 'uk-UA': /^[А-ЩЬЮЯЄIЇҐі]+$/i, + 'vi-VN': /^[A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i, + 'ku-IQ': /^[ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i, + ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/, + he: /^[א-ת]+$/, + fa: /^['آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی']+$/i, + 'hi-IN': /^[\u0900-\u0961]+[\u0972-\u097F]*$/i +}; +var alphanumeric = { + 'en-US': /^[0-9A-Z]+$/i, + 'az-AZ': /^[0-9A-VXYZÇƏĞİıÖŞÜ]+$/i, + 'bg-BG': /^[0-9А-Я]+$/i, + 'cs-CZ': /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i, + 'da-DK': /^[0-9A-ZÆØÅ]+$/i, + 'de-DE': /^[0-9A-ZÄÖÜß]+$/i, + 'el-GR': /^[0-9Α-ω]+$/i, + 'es-ES': /^[0-9A-ZÁÉÍÑÓÚÜ]+$/i, + 'fi-FI': /^[0-9A-ZÅÄÖ]+$/i, + 'fr-FR': /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i, + 'it-IT': /^[0-9A-ZÀÉÈÌÎÓÒÙ]+$/i, + 'hu-HU': /^[0-9A-ZÁÉÍÓÖŐÚÜŰ]+$/i, + 'nb-NO': /^[0-9A-ZÆØÅ]+$/i, + 'nl-NL': /^[0-9A-ZÁÉËÏÓÖÜÚ]+$/i, + 'nn-NO': /^[0-9A-ZÆØÅ]+$/i, + 'pl-PL': /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]+$/i, + 'pt-PT': /^[0-9A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i, + 'ru-RU': /^[0-9А-ЯЁ]+$/i, + 'sl-SI': /^[0-9A-ZČĆĐŠŽ]+$/i, + 'sk-SK': /^[0-9A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i, + 'sr-RS@latin': /^[0-9A-ZČĆŽŠĐ]+$/i, + 'sr-RS': /^[0-9А-ЯЂЈЉЊЋЏ]+$/i, + 'sv-SE': /^[0-9A-ZÅÄÖ]+$/i, + 'th-TH': /^[ก-๙\s]+$/i, + 'tr-TR': /^[0-9A-ZÇĞİıÖŞÜ]+$/i, + 'uk-UA': /^[0-9А-ЩЬЮЯЄIЇҐі]+$/i, + 'ku-IQ': /^[٠١٢٣٤٥٦٧٨٩0-9ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i, + 'vi-VN': /^[0-9A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i, + ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/, + he: /^[0-9א-ת]+$/, + fa: /^['0-9آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی۱۲۳۴۵۶۷۸۹۰']+$/i, + 'hi-IN': /^[\u0900-\u0963]+[\u0966-\u097F]*$/i +}; +var decimal = { + 'en-US': '.', + ar: '٫' +}; +var englishLocales = ['AU', 'GB', 'HK', 'IN', 'NZ', 'ZA', 'ZM']; + +for (var locale, i = 0; i < englishLocales.length; i++) { + locale = "en-".concat(englishLocales[i]); + alpha[locale] = alpha['en-US']; + alphanumeric[locale] = alphanumeric['en-US']; + decimal[locale] = decimal['en-US']; +} // Source: http://www.localeplanet.com/java/ + + +var arabicLocales = ['AE', 'BH', 'DZ', 'EG', 'IQ', 'JO', 'KW', 'LB', 'LY', 'MA', 'QM', 'QA', 'SA', 'SD', 'SY', 'TN', 'YE']; + +for (var _locale, _i = 0; _i < arabicLocales.length; _i++) { + _locale = "ar-".concat(arabicLocales[_i]); + alpha[_locale] = alpha.ar; + alphanumeric[_locale] = alphanumeric.ar; + decimal[_locale] = decimal.ar; +} + +var farsiLocales = ['IR', 'AF']; + +for (var _locale2, _i2 = 0; _i2 < farsiLocales.length; _i2++) { + _locale2 = "fa-".concat(farsiLocales[_i2]); + alphanumeric[_locale2] = alphanumeric.fa; + decimal[_locale2] = decimal.ar; +} // Source: https://en.wikipedia.org/wiki/Decimal_mark + + +var dotDecimal = ['ar-EG', 'ar-LB', 'ar-LY']; +var commaDecimal = ['bg-BG', 'cs-CZ', 'da-DK', 'de-DE', 'el-GR', 'en-ZM', 'es-ES', 'fr-CA', 'fr-FR', 'id-ID', 'it-IT', 'ku-IQ', 'hi-IN', 'hu-HU', 'nb-NO', 'nn-NO', 'nl-NL', 'pl-PL', 'pt-PT', 'ru-RU', 'sl-SI', 'sr-RS@latin', 'sr-RS', 'sv-SE', 'tr-TR', 'uk-UA', 'vi-VN']; + +for (var _i3 = 0; _i3 < dotDecimal.length; _i3++) { + decimal[dotDecimal[_i3]] = decimal['en-US']; +} + +for (var _i4 = 0; _i4 < commaDecimal.length; _i4++) { + decimal[commaDecimal[_i4]] = ','; +} + +alpha['fr-CA'] = alpha['fr-FR']; +alphanumeric['fr-CA'] = alphanumeric['fr-FR']; +alpha['pt-BR'] = alpha['pt-PT']; +alphanumeric['pt-BR'] = alphanumeric['pt-PT']; +decimal['pt-BR'] = decimal['pt-PT']; // see #862 + +alpha['pl-Pl'] = alpha['pl-PL']; +alphanumeric['pl-Pl'] = alphanumeric['pl-PL']; +decimal['pl-Pl'] = decimal['pl-PL']; // see #1455 + +alpha['fa-AF'] = alpha.fa; + +function isFloat(str, options) { + assertString(str); + options = options || {}; + + var _float = new RegExp("^(?:[-+])?(?:[0-9]+)?(?:\\".concat(options.locale ? decimal[options.locale] : '.', "[0-9]*)?(?:[eE][\\+\\-]?(?:[0-9]+))?$")); + + if (str === '' || str === '.' || str === '-' || str === '+') { + return false; + } + + var value = parseFloat(str.replace(',', '.')); + return _float.test(str) && (!options.hasOwnProperty('min') || value >= options.min) && (!options.hasOwnProperty('max') || value <= options.max) && (!options.hasOwnProperty('lt') || value < options.lt) && (!options.hasOwnProperty('gt') || value > options.gt); +} +var locales = Object.keys(decimal); + +function toFloat(str) { + if (!isFloat(str)) return NaN; + return parseFloat(str); +} + +function toInt(str, radix) { + assertString(str); + return parseInt(str, radix || 10); +} + +function toBoolean(str, strict) { + assertString(str); + + if (strict) { + return str === '1' || /^true$/i.test(str); + } + + return str !== '0' && !/^false$/i.test(str) && str !== ''; +} + +function equals(str, comparison) { + assertString(str); + return str === comparison; +} + +function toString$1(input) { + if (_typeof(input) === 'object' && input !== null) { + if (typeof input.toString === 'function') { + input = input.toString(); + } else { + input = '[object Object]'; + } + } else if (input === null || typeof input === 'undefined' || isNaN(input) && !input.length) { + input = ''; + } + + return String(input); +} + +function merge() { + var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var defaults = arguments.length > 1 ? arguments[1] : undefined; + + for (var key in defaults) { + if (typeof obj[key] === 'undefined') { + obj[key] = defaults[key]; + } + } + + return obj; +} + +var defaulContainsOptions = { + ignoreCase: false, + minOccurrences: 1 +}; +function contains(str, elem, options) { + assertString(str); + options = merge(options, defaulContainsOptions); + + if (options.ignoreCase) { + return str.toLowerCase().split(toString$1(elem).toLowerCase()).length > options.minOccurrences; + } + + return str.split(toString$1(elem)).length > options.minOccurrences; +} + +function matches(str, pattern, modifiers) { + assertString(str); + + if (Object.prototype.toString.call(pattern) !== '[object RegExp]') { + pattern = new RegExp(pattern, modifiers); + } + + return pattern.test(str); +} + +/* eslint-disable prefer-rest-params */ + +function isByteLength(str, options) { + assertString(str); + var min; + var max; + + if (_typeof(options) === 'object') { + min = options.min || 0; + max = options.max; + } else { + // backwards compatibility: isByteLength(str, min [, max]) + min = arguments[1]; + max = arguments[2]; + } + + var len = encodeURI(str).split(/%..|./).length - 1; + return len >= min && (typeof max === 'undefined' || len <= max); +} + +var default_fqdn_options = { + require_tld: true, + allow_underscores: false, + allow_trailing_dot: false, + allow_numeric_tld: false, + allow_wildcard: false +}; +function isFQDN(str, options) { + assertString(str); + options = merge(options, default_fqdn_options); + /* Remove the optional trailing dot before checking validity */ + + if (options.allow_trailing_dot && str[str.length - 1] === '.') { + str = str.substring(0, str.length - 1); + } + /* Remove the optional wildcard before checking validity */ + + + if (options.allow_wildcard === true && str.indexOf('*.') === 0) { + str = str.substring(2); + } + + var parts = str.split('.'); + var tld = parts[parts.length - 1]; + + if (options.require_tld) { + // disallow fqdns without tld + if (parts.length < 2) { + return false; + } + + if (!/^([a-z\u00A1-\u00A8\u00AA-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}|xn[a-z0-9-]{2,})$/i.test(tld)) { + return false; + } // disallow spaces + + + if (/\s/.test(tld)) { + return false; + } + } // reject numeric TLDs + + + if (!options.allow_numeric_tld && /^\d+$/.test(tld)) { + return false; + } + + return parts.every(function (part) { + if (part.length > 63) { + return false; + } + + if (!/^[a-z_\u00a1-\uffff0-9-]+$/i.test(part)) { + return false; + } // disallow full-width chars + + + if (/[\uff01-\uff5e]/.test(part)) { + return false; + } // disallow parts starting or ending with hyphen + + + if (/^-|-$/.test(part)) { + return false; + } + + if (!options.allow_underscores && /_/.test(part)) { + return false; + } + + return true; + }); +} + +/** +11.3. Examples + + The following addresses + + fe80::1234 (on the 1st link of the node) + ff02::5678 (on the 5th link of the node) + ff08::9abc (on the 10th organization of the node) + + would be represented as follows: + + fe80::1234%1 + ff02::5678%5 + ff08::9abc%10 + + (Here we assume a natural translation from a zone index to the + part, where the Nth zone of any scope is translated into + "N".) + + If we use interface names as , those addresses could also be + represented as follows: + + fe80::1234%ne0 + ff02::5678%pvc1.3 + ff08::9abc%interface10 + + where the interface "ne0" belongs to the 1st link, "pvc1.3" belongs + to the 5th link, and "interface10" belongs to the 10th organization. + * * */ + +var IPv4SegmentFormat = '(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'; +var IPv4AddressFormat = "(".concat(IPv4SegmentFormat, "[.]){3}").concat(IPv4SegmentFormat); +var IPv4AddressRegExp = new RegExp("^".concat(IPv4AddressFormat, "$")); +var IPv6SegmentFormat = '(?:[0-9a-fA-F]{1,4})'; +var IPv6AddressRegExp = new RegExp('^(' + "(?:".concat(IPv6SegmentFormat, ":){7}(?:").concat(IPv6SegmentFormat, "|:)|") + "(?:".concat(IPv6SegmentFormat, ":){6}(?:").concat(IPv4AddressFormat, "|:").concat(IPv6SegmentFormat, "|:)|") + "(?:".concat(IPv6SegmentFormat, ":){5}(?::").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,2}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){4}(?:(:").concat(IPv6SegmentFormat, "){0,1}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,3}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){3}(?:(:").concat(IPv6SegmentFormat, "){0,2}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,4}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){2}(?:(:").concat(IPv6SegmentFormat, "){0,3}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,5}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){1}(?:(:").concat(IPv6SegmentFormat, "){0,4}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,6}|:)|") + "(?::((?::".concat(IPv6SegmentFormat, "){0,5}:").concat(IPv4AddressFormat, "|(?::").concat(IPv6SegmentFormat, "){1,7}|:))") + ')(%[0-9a-zA-Z-.:]{1,})?$'); +function isIP(str) { + var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + assertString(str); + version = String(version); + + if (!version) { + return isIP(str, 4) || isIP(str, 6); + } + + if (version === '4') { + if (!IPv4AddressRegExp.test(str)) { + return false; + } + + var parts = str.split('.').sort(function (a, b) { + return a - b; + }); + return parts[3] <= 255; + } + + if (version === '6') { + return !!IPv6AddressRegExp.test(str); + } + + return false; +} + +var default_email_options = { + allow_display_name: false, + require_display_name: false, + allow_utf8_local_part: true, + require_tld: true, + blacklisted_chars: '', + ignore_max_length: false, + host_blacklist: [] +}; +/* eslint-disable max-len */ + +/* eslint-disable no-control-regex */ + +var splitNameAddress = /^([^\x00-\x1F\x7F-\x9F\cX]+)]/.test(display_name_without_quotes); + + if (contains_illegal) { + // if contains illegal characters, + // must to be enclosed in double-quotes, otherwise it's not a valid display name + if (display_name_without_quotes === display_name) { + return false; + } // the quotes in display name must start with character symbol \ + + + var all_start_with_back_slash = display_name_without_quotes.split('"').length === display_name_without_quotes.split('\\"').length; + + if (!all_start_with_back_slash) { + return false; + } + } + + return true; +} + +function isEmail(str, options) { + assertString(str); + options = merge(options, default_email_options); + + if (options.require_display_name || options.allow_display_name) { + var display_email = str.match(splitNameAddress); + + if (display_email) { + var display_name = display_email[1]; // Remove display name and angle brackets to get email address + // Can be done in the regex but will introduce a ReDOS (See #1597 for more info) + + str = str.replace(display_name, '').replace(/(^<|>$)/g, ''); // sometimes need to trim the last space to get the display name + // because there may be a space between display name and email address + // eg. myname + // the display name is `myname` instead of `myname `, so need to trim the last space + + if (display_name.endsWith(' ')) { + display_name = display_name.substr(0, display_name.length - 1); + } + + if (!validateDisplayName(display_name)) { + return false; + } + } else if (options.require_display_name) { + return false; + } + } + + if (!options.ignore_max_length && str.length > defaultMaxEmailLength) { + return false; + } + + var parts = str.split('@'); + var domain = parts.pop(); + var lower_domain = domain.toLowerCase(); + + if (options.host_blacklist.includes(lower_domain)) { + return false; + } + + var user = parts.join('@'); + + if (options.domain_specific_validation && (lower_domain === 'gmail.com' || lower_domain === 'googlemail.com')) { + /* + Previously we removed dots for gmail addresses before validating. + This was removed because it allows `multiple..dots@gmail.com` + to be reported as valid, but it is not. + Gmail only normalizes single dots, removing them from here is pointless, + should be done in normalizeEmail + */ + user = user.toLowerCase(); // Removing sub-address from username before gmail validation + + var username = user.split('+')[0]; // Dots are not included in gmail length restriction + + if (!isByteLength(username.replace(/\./g, ''), { + min: 6, + max: 30 + })) { + return false; + } + + var _user_parts = username.split('.'); + + for (var i = 0; i < _user_parts.length; i++) { + if (!gmailUserPart.test(_user_parts[i])) { + return false; + } + } + } + + if (options.ignore_max_length === false && (!isByteLength(user, { + max: 64 + }) || !isByteLength(domain, { + max: 254 + }))) { + return false; + } + + if (!isFQDN(domain, { + require_tld: options.require_tld + })) { + if (!options.allow_ip_domain) { + return false; + } + + if (!isIP(domain)) { + if (!domain.startsWith('[') || !domain.endsWith(']')) { + return false; + } + + var noBracketdomain = domain.substr(1, domain.length - 2); + + if (noBracketdomain.length === 0 || !isIP(noBracketdomain)) { + return false; + } + } + } + + if (user[0] === '"') { + user = user.slice(1, user.length - 1); + return options.allow_utf8_local_part ? quotedEmailUserUtf8.test(user) : quotedEmailUser.test(user); + } + + var pattern = options.allow_utf8_local_part ? emailUserUtf8Part : emailUserPart; + var user_parts = user.split('.'); + + for (var _i = 0; _i < user_parts.length; _i++) { + if (!pattern.test(user_parts[_i])) { + return false; + } + } + + if (options.blacklisted_chars) { + if (user.search(new RegExp("[".concat(options.blacklisted_chars, "]+"), 'g')) !== -1) return false; + } + + return true; +} + +/* +options for isURL method + +require_protocol - if set as true isURL will return false if protocol is not present in the URL +require_valid_protocol - isURL will check if the URL's protocol is present in the protocols option +protocols - valid protocols can be modified with this option +require_host - if set as false isURL will not check if host is present in the URL +require_port - if set as true isURL will check if port is present in the URL +allow_protocol_relative_urls - if set as true protocol relative URLs will be allowed +validate_length - if set as false isURL will skip string length validation (IE maximum is 2083) + +*/ + +var default_url_options = { + protocols: ['http', 'https', 'ftp'], + require_tld: true, + require_protocol: false, + require_host: true, + require_port: false, + require_valid_protocol: true, + allow_underscores: false, + allow_trailing_dot: false, + allow_protocol_relative_urls: false, + allow_fragments: true, + allow_query_components: true, + validate_length: true +}; +var wrapped_ipv6 = /^\[([^\]]+)\](?::([0-9]+))?$/; + +function isRegExp(obj) { + return Object.prototype.toString.call(obj) === '[object RegExp]'; +} + +function checkHost(host, matches) { + for (var i = 0; i < matches.length; i++) { + var match = matches[i]; + + if (host === match || isRegExp(match) && match.test(host)) { + return true; + } + } + + return false; +} + +function isURL(url, options) { + assertString(url); + + if (!url || /[\s<>]/.test(url)) { + return false; + } + + if (url.indexOf('mailto:') === 0) { + return false; + } + + options = merge(options, default_url_options); + + if (options.validate_length && url.length >= 2083) { + return false; + } + + if (!options.allow_fragments && url.includes('#')) { + return false; + } + + if (!options.allow_query_components && (url.includes('?') || url.includes('&'))) { + return false; + } + + var protocol, auth, host, hostname, port, port_str, split, ipv6; + split = url.split('#'); + url = split.shift(); + split = url.split('?'); + url = split.shift(); + split = url.split('://'); + + if (split.length > 1) { + protocol = split.shift().toLowerCase(); + + if (options.require_valid_protocol && options.protocols.indexOf(protocol) === -1) { + return false; + } + } else if (options.require_protocol) { + return false; + } else if (url.substr(0, 2) === '//') { + if (!options.allow_protocol_relative_urls) { + return false; + } + + split[0] = url.substr(2); + } + + url = split.join('://'); + + if (url === '') { + return false; + } + + split = url.split('/'); + url = split.shift(); + + if (url === '' && !options.require_host) { + return true; + } + + split = url.split('@'); + + if (split.length > 1) { + if (options.disallow_auth) { + return false; + } + + if (split[0] === '') { + return false; + } + + auth = split.shift(); + + if (auth.indexOf(':') >= 0 && auth.split(':').length > 2) { + return false; + } + + var _auth$split = auth.split(':'), + _auth$split2 = _slicedToArray(_auth$split, 2), + user = _auth$split2[0], + password = _auth$split2[1]; + + if (user === '' && password === '') { + return false; + } + } + + hostname = split.join('@'); + port_str = null; + ipv6 = null; + var ipv6_match = hostname.match(wrapped_ipv6); + + if (ipv6_match) { + host = ''; + ipv6 = ipv6_match[1]; + port_str = ipv6_match[2] || null; + } else { + split = hostname.split(':'); + host = split.shift(); + + if (split.length) { + port_str = split.join(':'); + } + } + + if (port_str !== null && port_str.length > 0) { + port = parseInt(port_str, 10); + + if (!/^[0-9]+$/.test(port_str) || port <= 0 || port > 65535) { + return false; + } + } else if (options.require_port) { + return false; + } + + if (options.host_whitelist) { + return checkHost(host, options.host_whitelist); + } + + if (!isIP(host) && !isFQDN(host, options) && (!ipv6 || !isIP(ipv6, 6))) { + return false; + } + + host = host || ipv6; + + if (options.host_blacklist && checkHost(host, options.host_blacklist)) { + return false; + } + + return true; +} + +var macAddress = /^(?:[0-9a-fA-F]{2}([-:\s]))([0-9a-fA-F]{2}\1){4}([0-9a-fA-F]{2})$/; +var macAddressNoSeparators = /^([0-9a-fA-F]){12}$/; +var macAddressWithDots = /^([0-9a-fA-F]{4}\.){2}([0-9a-fA-F]{4})$/; +function isMACAddress(str, options) { + assertString(str); + /** + * @deprecated `no_colons` TODO: remove it in the next major + */ + + if (options && (options.no_colons || options.no_separators)) { + return macAddressNoSeparators.test(str); + } + + return macAddress.test(str) || macAddressWithDots.test(str); +} + +var subnetMaybe = /^\d{1,3}$/; +var v4Subnet = 32; +var v6Subnet = 128; +function isIPRange(str) { + var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + assertString(str); + var parts = str.split('/'); // parts[0] -> ip, parts[1] -> subnet + + if (parts.length !== 2) { + return false; + } + + if (!subnetMaybe.test(parts[1])) { + return false; + } // Disallow preceding 0 i.e. 01, 02, ... + + + if (parts[1].length > 1 && parts[1].startsWith('0')) { + return false; + } + + var isValidIP = isIP(parts[0], version); + + if (!isValidIP) { + return false; + } // Define valid subnet according to IP's version + + + var expectedSubnet = null; + + switch (String(version)) { + case '4': + expectedSubnet = v4Subnet; + break; + + case '6': + expectedSubnet = v6Subnet; + break; + + default: + expectedSubnet = isIP(parts[0], '6') ? v6Subnet : v4Subnet; + } + + return parts[1] <= expectedSubnet && parts[1] >= 0; +} + +var default_date_options = { + format: 'YYYY/MM/DD', + delimiters: ['/', '-'], + strictMode: false +}; + +function isValidFormat(format) { + return /(^(y{4}|y{2})[.\/-](m{1,2})[.\/-](d{1,2})$)|(^(m{1,2})[.\/-](d{1,2})[.\/-]((y{4}|y{2})$))|(^(d{1,2})[.\/-](m{1,2})[.\/-]((y{4}|y{2})$))/gi.test(format); +} + +function zip(date, format) { + var zippedArr = [], + len = Math.min(date.length, format.length); + + for (var i = 0; i < len; i++) { + zippedArr.push([date[i], format[i]]); + } + + return zippedArr; +} + +function isDate(input, options) { + if (typeof options === 'string') { + // Allow backward compatbility for old format isDate(input [, format]) + options = merge({ + format: options + }, default_date_options); + } else { + options = merge(options, default_date_options); + } + + if (typeof input === 'string' && isValidFormat(options.format)) { + var formatDelimiter = options.delimiters.find(function (delimiter) { + return options.format.indexOf(delimiter) !== -1; + }); + var dateDelimiter = options.strictMode ? formatDelimiter : options.delimiters.find(function (delimiter) { + return input.indexOf(delimiter) !== -1; + }); + var dateAndFormat = zip(input.split(dateDelimiter), options.format.toLowerCase().split(formatDelimiter)); + var dateObj = {}; + + var _iterator = _createForOfIteratorHelper(dateAndFormat), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var _step$value = _slicedToArray(_step.value, 2), + dateWord = _step$value[0], + formatWord = _step$value[1]; + + if (dateWord.length !== formatWord.length) { + return false; + } + + dateObj[formatWord.charAt(0)] = dateWord; + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return new Date("".concat(dateObj.m, "/").concat(dateObj.d, "/").concat(dateObj.y)).getDate() === +dateObj.d; + } + + if (!options.strictMode) { + return Object.prototype.toString.call(input) === '[object Date]' && isFinite(input); + } + + return false; +} + +var defaultOptions = { + loose: false +}; +var strictBooleans = ['true', 'false', '1', '0']; +var looseBooleans = [].concat(strictBooleans, ['yes', 'no']); +function isBoolean(str) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultOptions; + assertString(str); + + if (options.loose) { + return looseBooleans.includes(str.toLowerCase()); + } + + return strictBooleans.includes(str); +} + +var localeReg = /^[A-Za-z]{2,4}([_-]([A-Za-z]{4}|[\d]{3}))?([_-]([A-Za-z]{2}|[\d]{3}))?$/; +function isLocale(str) { + assertString(str); + + if (str === 'en_US_POSIX' || str === 'ca_ES_VALENCIA') { + return true; + } + + return localeReg.test(str); +} + +function isAlpha(_str) { + var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US'; + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + assertString(_str); + var str = _str; + var ignore = options.ignore; + + if (ignore) { + if (ignore instanceof RegExp) { + str = str.replace(ignore, ''); + } else if (typeof ignore === 'string') { + str = str.replace(new RegExp("[".concat(ignore.replace(/[-[\]{}()*+?.,\\^$|#\\s]/g, '\\$&'), "]"), 'g'), ''); // escape regex for ignore + } else { + throw new Error('ignore should be instance of a String or RegExp'); + } + } + + if (locale in alpha) { + return alpha[locale].test(str); + } + + throw new Error("Invalid locale '".concat(locale, "'")); +} +var locales$1 = Object.keys(alpha); + +function isAlphanumeric(_str) { + var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US'; + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + assertString(_str); + var str = _str; + var ignore = options.ignore; + + if (ignore) { + if (ignore instanceof RegExp) { + str = str.replace(ignore, ''); + } else if (typeof ignore === 'string') { + str = str.replace(new RegExp("[".concat(ignore.replace(/[-[\]{}()*+?.,\\^$|#\\s]/g, '\\$&'), "]"), 'g'), ''); // escape regex for ignore + } else { + throw new Error('ignore should be instance of a String or RegExp'); + } + } + + if (locale in alphanumeric) { + return alphanumeric[locale].test(str); + } + + throw new Error("Invalid locale '".concat(locale, "'")); +} +var locales$2 = Object.keys(alphanumeric); + +var numericNoSymbols = /^[0-9]+$/; +function isNumeric(str, options) { + assertString(str); + + if (options && options.no_symbols) { + return numericNoSymbols.test(str); + } + + return new RegExp("^[+-]?([0-9]*[".concat((options || {}).locale ? decimal[options.locale] : '.', "])?[0-9]+$")).test(str); +} + +/** + * Reference: + * https://en.wikipedia.org/ -- Wikipedia + * https://docs.microsoft.com/en-us/microsoft-365/compliance/eu-passport-number -- EU Passport Number + * https://countrycode.org/ -- Country Codes + */ + +var passportRegexByCountryCode = { + AM: /^[A-Z]{2}\d{7}$/, + // ARMENIA + AR: /^[A-Z]{3}\d{6}$/, + // ARGENTINA + AT: /^[A-Z]\d{7}$/, + // AUSTRIA + AU: /^[A-Z]\d{7}$/, + // AUSTRALIA + BE: /^[A-Z]{2}\d{6}$/, + // BELGIUM + BG: /^\d{9}$/, + // BULGARIA + BR: /^[A-Z]{2}\d{6}$/, + // BRAZIL + BY: /^[A-Z]{2}\d{7}$/, + // BELARUS + CA: /^[A-Z]{2}\d{6}$/, + // CANADA + CH: /^[A-Z]\d{7}$/, + // SWITZERLAND + CN: /^G\d{8}$|^E(?![IO])[A-Z0-9]\d{7}$/, + // CHINA [G=Ordinary, E=Electronic] followed by 8-digits, or E followed by any UPPERCASE letter (except I and O) followed by 7 digits + CY: /^[A-Z](\d{6}|\d{8})$/, + // CYPRUS + CZ: /^\d{8}$/, + // CZECH REPUBLIC + DE: /^[CFGHJKLMNPRTVWXYZ0-9]{9}$/, + // GERMANY + DK: /^\d{9}$/, + // DENMARK + DZ: /^\d{9}$/, + // ALGERIA + EE: /^([A-Z]\d{7}|[A-Z]{2}\d{7})$/, + // ESTONIA (K followed by 7-digits), e-passports have 2 UPPERCASE followed by 7 digits + ES: /^[A-Z0-9]{2}([A-Z0-9]?)\d{6}$/, + // SPAIN + FI: /^[A-Z]{2}\d{7}$/, + // FINLAND + FR: /^\d{2}[A-Z]{2}\d{5}$/, + // FRANCE + GB: /^\d{9}$/, + // UNITED KINGDOM + GR: /^[A-Z]{2}\d{7}$/, + // GREECE + HR: /^\d{9}$/, + // CROATIA + HU: /^[A-Z]{2}(\d{6}|\d{7})$/, + // HUNGARY + IE: /^[A-Z0-9]{2}\d{7}$/, + // IRELAND + IN: /^[A-Z]{1}-?\d{7}$/, + // INDIA + ID: /^[A-C]\d{7}$/, + // INDONESIA + IR: /^[A-Z]\d{8}$/, + // IRAN + IS: /^(A)\d{7}$/, + // ICELAND + IT: /^[A-Z0-9]{2}\d{7}$/, + // ITALY + JP: /^[A-Z]{2}\d{7}$/, + // JAPAN + KR: /^[MS]\d{8}$/, + // SOUTH KOREA, REPUBLIC OF KOREA, [S=PS Passports, M=PM Passports] + LT: /^[A-Z0-9]{8}$/, + // LITHUANIA + LU: /^[A-Z0-9]{8}$/, + // LUXEMBURG + LV: /^[A-Z0-9]{2}\d{7}$/, + // LATVIA + LY: /^[A-Z0-9]{8}$/, + // LIBYA + MT: /^\d{7}$/, + // MALTA + MZ: /^([A-Z]{2}\d{7})|(\d{2}[A-Z]{2}\d{5})$/, + // MOZAMBIQUE + MY: /^[AHK]\d{8}$/, + // MALAYSIA + NL: /^[A-Z]{2}[A-Z0-9]{6}\d$/, + // NETHERLANDS + PL: /^[A-Z]{2}\d{7}$/, + // POLAND + PT: /^[A-Z]\d{6}$/, + // PORTUGAL + RO: /^\d{8,9}$/, + // ROMANIA + RU: /^\d{9}$/, + // RUSSIAN FEDERATION + SE: /^\d{8}$/, + // SWEDEN + SL: /^(P)[A-Z]\d{7}$/, + // SLOVANIA + SK: /^[0-9A-Z]\d{7}$/, + // SLOVAKIA + TR: /^[A-Z]\d{8}$/, + // TURKEY + UA: /^[A-Z]{2}\d{6}$/, + // UKRAINE + US: /^\d{9}$/ // UNITED STATES + +}; +/** + * Check if str is a valid passport number + * relative to provided ISO Country Code. + * + * @param {string} str + * @param {string} countryCode + * @return {boolean} + */ + +function isPassportNumber(str, countryCode) { + assertString(str); + /** Remove All Whitespaces, Convert to UPPERCASE */ + + var normalizedStr = str.replace(/\s/g, '').toUpperCase(); + return countryCode.toUpperCase() in passportRegexByCountryCode && passportRegexByCountryCode[countryCode].test(normalizedStr); +} + +var _int = /^(?:[-+]?(?:0|[1-9][0-9]*))$/; +var intLeadingZeroes = /^[-+]?[0-9]+$/; +function isInt(str, options) { + assertString(str); + options = options || {}; // Get the regex to use for testing, based on whether + // leading zeroes are allowed or not. + + var regex = options.hasOwnProperty('allow_leading_zeroes') && !options.allow_leading_zeroes ? _int : intLeadingZeroes; // Check min/max/lt/gt + + var minCheckPassed = !options.hasOwnProperty('min') || str >= options.min; + var maxCheckPassed = !options.hasOwnProperty('max') || str <= options.max; + var ltCheckPassed = !options.hasOwnProperty('lt') || str < options.lt; + var gtCheckPassed = !options.hasOwnProperty('gt') || str > options.gt; + return regex.test(str) && minCheckPassed && maxCheckPassed && ltCheckPassed && gtCheckPassed; +} + +function isPort(str) { + return isInt(str, { + min: 0, + max: 65535 + }); +} + +function isLowercase(str) { + assertString(str); + return str === str.toLowerCase(); +} + +function isUppercase(str) { + assertString(str); + return str === str.toUpperCase(); +} + +var imeiRegexWithoutHypens = /^[0-9]{15}$/; +var imeiRegexWithHypens = /^\d{2}-\d{6}-\d{6}-\d{1}$/; +function isIMEI(str, options) { + assertString(str); + options = options || {}; // default regex for checking imei is the one without hyphens + + var imeiRegex = imeiRegexWithoutHypens; + + if (options.allow_hyphens) { + imeiRegex = imeiRegexWithHypens; + } + + if (!imeiRegex.test(str)) { + return false; + } + + str = str.replace(/-/g, ''); + var sum = 0, + mul = 2, + l = 14; + + for (var i = 0; i < l; i++) { + var digit = str.substring(l - i - 1, l - i); + var tp = parseInt(digit, 10) * mul; + + if (tp >= 10) { + sum += tp % 10 + 1; + } else { + sum += tp; + } + + if (mul === 1) { + mul += 1; + } else { + mul -= 1; + } + } + + var chk = (10 - sum % 10) % 10; + + if (chk !== parseInt(str.substring(14, 15), 10)) { + return false; + } + + return true; +} + +/* eslint-disable no-control-regex */ + +var ascii = /^[\x00-\x7F]+$/; +/* eslint-enable no-control-regex */ + +function isAscii(str) { + assertString(str); + return ascii.test(str); +} + +var fullWidth = /[^\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/; +function isFullWidth(str) { + assertString(str); + return fullWidth.test(str); +} + +var halfWidth = /[\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/; +function isHalfWidth(str) { + assertString(str); + return halfWidth.test(str); +} + +function isVariableWidth(str) { + assertString(str); + return fullWidth.test(str) && halfWidth.test(str); +} + +/* eslint-disable no-control-regex */ + +var multibyte = /[^\x00-\x7F]/; +/* eslint-enable no-control-regex */ + +function isMultibyte(str) { + assertString(str); + return multibyte.test(str); +} + +/** + * Build RegExp object from an array + * of multiple/multi-line regexp parts + * + * @param {string[]} parts + * @param {string} flags + * @return {object} - RegExp object + */ +function multilineRegexp(parts, flags) { + var regexpAsStringLiteral = parts.join(''); + return new RegExp(regexpAsStringLiteral, flags); +} + +/** + * Regular Expression to match + * semantic versioning (SemVer) + * built from multi-line, multi-parts regexp + * Reference: https://semver.org/ + */ + +var semanticVersioningRegex = multilineRegexp(['^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)', '(?:-((?:0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*))*))', '?(?:\\+([0-9a-z-]+(?:\\.[0-9a-z-]+)*))?$'], 'i'); +function isSemVer(str) { + assertString(str); + return semanticVersioningRegex.test(str); +} + +var surrogatePair = /[\uD800-\uDBFF][\uDC00-\uDFFF]/; +function isSurrogatePair(str) { + assertString(str); + return surrogatePair.test(str); +} + +var includes = function includes(arr, val) { + return arr.some(function (arrVal) { + return val === arrVal; + }); +}; + +function decimalRegExp(options) { + var regExp = new RegExp("^[-+]?([0-9]+)?(\\".concat(decimal[options.locale], "[0-9]{").concat(options.decimal_digits, "})").concat(options.force_decimal ? '' : '?', "$")); + return regExp; +} + +var default_decimal_options = { + force_decimal: false, + decimal_digits: '1,', + locale: 'en-US' +}; +var blacklist = ['', '-', '+']; +function isDecimal(str, options) { + assertString(str); + options = merge(options, default_decimal_options); + + if (options.locale in decimal) { + return !includes(blacklist, str.replace(/ /g, '')) && decimalRegExp(options).test(str); + } + + throw new Error("Invalid locale '".concat(options.locale, "'")); +} + +var hexadecimal = /^(0x|0h)?[0-9A-F]+$/i; +function isHexadecimal(str) { + assertString(str); + return hexadecimal.test(str); +} + +var octal = /^(0o)?[0-7]+$/i; +function isOctal(str) { + assertString(str); + return octal.test(str); +} + +function isDivisibleBy(str, num) { + assertString(str); + return toFloat(str) % parseInt(num, 10) === 0; +} + +var hexcolor = /^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$/i; +function isHexColor(str) { + assertString(str); + return hexcolor.test(str); +} + +var rgbColor = /^rgb\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){2}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\)$/; +var rgbaColor = /^rgba\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){3}(0?\.\d|1(\.0)?|0(\.0)?)\)$/; +var rgbColorPercent = /^rgb\((([0-9]%|[1-9][0-9]%|100%),){2}([0-9]%|[1-9][0-9]%|100%)\)/; +var rgbaColorPercent = /^rgba\((([0-9]%|[1-9][0-9]%|100%),){3}(0?\.\d|1(\.0)?|0(\.0)?)\)/; +function isRgbColor(str) { + var includePercentValues = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + assertString(str); + + if (!includePercentValues) { + return rgbColor.test(str) || rgbaColor.test(str); + } + + return rgbColor.test(str) || rgbaColor.test(str) || rgbColorPercent.test(str) || rgbaColorPercent.test(str); +} + +var hslComma = /^hsla?\(((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn)?(,(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}(,((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?))?\)$/i; +var hslSpace = /^hsla?\(((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn)?(\s(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}\s?(\/\s((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?)\s?)?\)$/i; +function isHSL(str) { + assertString(str); // Strip duplicate spaces before calling the validation regex (See #1598 for more info) + + var strippedStr = str.replace(/\s+/g, ' ').replace(/\s?(hsla?\(|\)|,)\s?/ig, '$1'); + + if (strippedStr.indexOf(',') !== -1) { + return hslComma.test(strippedStr); + } + + return hslSpace.test(strippedStr); +} + +var isrc = /^[A-Z]{2}[0-9A-Z]{3}\d{2}\d{5}$/; +function isISRC(str) { + assertString(str); + return isrc.test(str); +} + +/** + * List of country codes with + * corresponding IBAN regular expression + * Reference: https://en.wikipedia.org/wiki/International_Bank_Account_Number + */ + +var ibanRegexThroughCountryCode = { + AD: /^(AD[0-9]{2})\d{8}[A-Z0-9]{12}$/, + AE: /^(AE[0-9]{2})\d{3}\d{16}$/, + AL: /^(AL[0-9]{2})\d{8}[A-Z0-9]{16}$/, + AT: /^(AT[0-9]{2})\d{16}$/, + AZ: /^(AZ[0-9]{2})[A-Z0-9]{4}\d{20}$/, + BA: /^(BA[0-9]{2})\d{16}$/, + BE: /^(BE[0-9]{2})\d{12}$/, + BG: /^(BG[0-9]{2})[A-Z]{4}\d{6}[A-Z0-9]{8}$/, + BH: /^(BH[0-9]{2})[A-Z]{4}[A-Z0-9]{14}$/, + BR: /^(BR[0-9]{2})\d{23}[A-Z]{1}[A-Z0-9]{1}$/, + BY: /^(BY[0-9]{2})[A-Z0-9]{4}\d{20}$/, + CH: /^(CH[0-9]{2})\d{5}[A-Z0-9]{12}$/, + CR: /^(CR[0-9]{2})\d{18}$/, + CY: /^(CY[0-9]{2})\d{8}[A-Z0-9]{16}$/, + CZ: /^(CZ[0-9]{2})\d{20}$/, + DE: /^(DE[0-9]{2})\d{18}$/, + DK: /^(DK[0-9]{2})\d{14}$/, + DO: /^(DO[0-9]{2})[A-Z]{4}\d{20}$/, + EE: /^(EE[0-9]{2})\d{16}$/, + EG: /^(EG[0-9]{2})\d{25}$/, + ES: /^(ES[0-9]{2})\d{20}$/, + FI: /^(FI[0-9]{2})\d{14}$/, + FO: /^(FO[0-9]{2})\d{14}$/, + FR: /^(FR[0-9]{2})\d{10}[A-Z0-9]{11}\d{2}$/, + GB: /^(GB[0-9]{2})[A-Z]{4}\d{14}$/, + GE: /^(GE[0-9]{2})[A-Z0-9]{2}\d{16}$/, + GI: /^(GI[0-9]{2})[A-Z]{4}[A-Z0-9]{15}$/, + GL: /^(GL[0-9]{2})\d{14}$/, + GR: /^(GR[0-9]{2})\d{7}[A-Z0-9]{16}$/, + GT: /^(GT[0-9]{2})[A-Z0-9]{4}[A-Z0-9]{20}$/, + HR: /^(HR[0-9]{2})\d{17}$/, + HU: /^(HU[0-9]{2})\d{24}$/, + IE: /^(IE[0-9]{2})[A-Z0-9]{4}\d{14}$/, + IL: /^(IL[0-9]{2})\d{19}$/, + IQ: /^(IQ[0-9]{2})[A-Z]{4}\d{15}$/, + IR: /^(IR[0-9]{2})0\d{2}0\d{18}$/, + IS: /^(IS[0-9]{2})\d{22}$/, + IT: /^(IT[0-9]{2})[A-Z]{1}\d{10}[A-Z0-9]{12}$/, + JO: /^(JO[0-9]{2})[A-Z]{4}\d{22}$/, + KW: /^(KW[0-9]{2})[A-Z]{4}[A-Z0-9]{22}$/, + KZ: /^(KZ[0-9]{2})\d{3}[A-Z0-9]{13}$/, + LB: /^(LB[0-9]{2})\d{4}[A-Z0-9]{20}$/, + LC: /^(LC[0-9]{2})[A-Z]{4}[A-Z0-9]{24}$/, + LI: /^(LI[0-9]{2})\d{5}[A-Z0-9]{12}$/, + LT: /^(LT[0-9]{2})\d{16}$/, + LU: /^(LU[0-9]{2})\d{3}[A-Z0-9]{13}$/, + LV: /^(LV[0-9]{2})[A-Z]{4}[A-Z0-9]{13}$/, + MC: /^(MC[0-9]{2})\d{10}[A-Z0-9]{11}\d{2}$/, + MD: /^(MD[0-9]{2})[A-Z0-9]{20}$/, + ME: /^(ME[0-9]{2})\d{18}$/, + MK: /^(MK[0-9]{2})\d{3}[A-Z0-9]{10}\d{2}$/, + MR: /^(MR[0-9]{2})\d{23}$/, + MT: /^(MT[0-9]{2})[A-Z]{4}\d{5}[A-Z0-9]{18}$/, + MU: /^(MU[0-9]{2})[A-Z]{4}\d{19}[A-Z]{3}$/, + MZ: /^(MZ[0-9]{2})\d{21}$/, + NL: /^(NL[0-9]{2})[A-Z]{4}\d{10}$/, + NO: /^(NO[0-9]{2})\d{11}$/, + PK: /^(PK[0-9]{2})[A-Z0-9]{4}\d{16}$/, + PL: /^(PL[0-9]{2})\d{24}$/, + PS: /^(PS[0-9]{2})[A-Z0-9]{4}\d{21}$/, + PT: /^(PT[0-9]{2})\d{21}$/, + QA: /^(QA[0-9]{2})[A-Z]{4}[A-Z0-9]{21}$/, + RO: /^(RO[0-9]{2})[A-Z]{4}[A-Z0-9]{16}$/, + RS: /^(RS[0-9]{2})\d{18}$/, + SA: /^(SA[0-9]{2})\d{2}[A-Z0-9]{18}$/, + SC: /^(SC[0-9]{2})[A-Z]{4}\d{20}[A-Z]{3}$/, + SE: /^(SE[0-9]{2})\d{20}$/, + SI: /^(SI[0-9]{2})\d{15}$/, + SK: /^(SK[0-9]{2})\d{20}$/, + SM: /^(SM[0-9]{2})[A-Z]{1}\d{10}[A-Z0-9]{12}$/, + SV: /^(SV[0-9]{2})[A-Z0-9]{4}\d{20}$/, + TL: /^(TL[0-9]{2})\d{19}$/, + TN: /^(TN[0-9]{2})\d{20}$/, + TR: /^(TR[0-9]{2})\d{5}[A-Z0-9]{17}$/, + UA: /^(UA[0-9]{2})\d{6}[A-Z0-9]{19}$/, + VA: /^(VA[0-9]{2})\d{18}$/, + VG: /^(VG[0-9]{2})[A-Z0-9]{4}\d{16}$/, + XK: /^(XK[0-9]{2})\d{16}$/ +}; +/** + * Check whether string has correct universal IBAN format + * The IBAN consists of up to 34 alphanumeric characters, as follows: + * Country Code using ISO 3166-1 alpha-2, two letters + * check digits, two digits and + * Basic Bank Account Number (BBAN), up to 30 alphanumeric characters. + * NOTE: Permitted IBAN characters are: digits [0-9] and the 26 latin alphabetic [A-Z] + * + * @param {string} str - string under validation + * @return {boolean} + */ + +function hasValidIbanFormat(str) { + // Strip white spaces and hyphens + var strippedStr = str.replace(/[\s\-]+/gi, '').toUpperCase(); + var isoCountryCode = strippedStr.slice(0, 2).toUpperCase(); + return isoCountryCode in ibanRegexThroughCountryCode && ibanRegexThroughCountryCode[isoCountryCode].test(strippedStr); +} +/** + * Check whether string has valid IBAN Checksum + * by performing basic mod-97 operation and + * the remainder should equal 1 + * -- Start by rearranging the IBAN by moving the four initial characters to the end of the string + * -- Replace each letter in the string with two digits, A -> 10, B = 11, Z = 35 + * -- Interpret the string as a decimal integer and + * -- compute the remainder on division by 97 (mod 97) + * Reference: https://en.wikipedia.org/wiki/International_Bank_Account_Number + * + * @param {string} str + * @return {boolean} + */ + + +function hasValidIbanChecksum(str) { + var strippedStr = str.replace(/[^A-Z0-9]+/gi, '').toUpperCase(); // Keep only digits and A-Z latin alphabetic + + var rearranged = strippedStr.slice(4) + strippedStr.slice(0, 4); + var alphaCapsReplacedWithDigits = rearranged.replace(/[A-Z]/g, function (_char) { + return _char.charCodeAt(0) - 55; + }); + var remainder = alphaCapsReplacedWithDigits.match(/\d{1,7}/g).reduce(function (acc, value) { + return Number(acc + value) % 97; + }, ''); + return remainder === 1; +} + +function isIBAN(str) { + assertString(str); + return hasValidIbanFormat(str) && hasValidIbanChecksum(str); +} +var locales$3 = Object.keys(ibanRegexThroughCountryCode); + +var validISO31661Alpha2CountriesCodes = new Set(['AD', 'AE', 'AF', 'AG', 'AI', 'AL', 'AM', 'AO', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AW', 'AX', 'AZ', 'BA', 'BB', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BL', 'BM', 'BN', 'BO', 'BQ', 'BR', 'BS', 'BT', 'BV', 'BW', 'BY', 'BZ', 'CA', 'CC', 'CD', 'CF', 'CG', 'CH', 'CI', 'CK', 'CL', 'CM', 'CN', 'CO', 'CR', 'CU', 'CV', 'CW', 'CX', 'CY', 'CZ', 'DE', 'DJ', 'DK', 'DM', 'DO', 'DZ', 'EC', 'EE', 'EG', 'EH', 'ER', 'ES', 'ET', 'FI', 'FJ', 'FK', 'FM', 'FO', 'FR', 'GA', 'GB', 'GD', 'GE', 'GF', 'GG', 'GH', 'GI', 'GL', 'GM', 'GN', 'GP', 'GQ', 'GR', 'GS', 'GT', 'GU', 'GW', 'GY', 'HK', 'HM', 'HN', 'HR', 'HT', 'HU', 'ID', 'IE', 'IL', 'IM', 'IN', 'IO', 'IQ', 'IR', 'IS', 'IT', 'JE', 'JM', 'JO', 'JP', 'KE', 'KG', 'KH', 'KI', 'KM', 'KN', 'KP', 'KR', 'KW', 'KY', 'KZ', 'LA', 'LB', 'LC', 'LI', 'LK', 'LR', 'LS', 'LT', 'LU', 'LV', 'LY', 'MA', 'MC', 'MD', 'ME', 'MF', 'MG', 'MH', 'MK', 'ML', 'MM', 'MN', 'MO', 'MP', 'MQ', 'MR', 'MS', 'MT', 'MU', 'MV', 'MW', 'MX', 'MY', 'MZ', 'NA', 'NC', 'NE', 'NF', 'NG', 'NI', 'NL', 'NO', 'NP', 'NR', 'NU', 'NZ', 'OM', 'PA', 'PE', 'PF', 'PG', 'PH', 'PK', 'PL', 'PM', 'PN', 'PR', 'PS', 'PT', 'PW', 'PY', 'QA', 'RE', 'RO', 'RS', 'RU', 'RW', 'SA', 'SB', 'SC', 'SD', 'SE', 'SG', 'SH', 'SI', 'SJ', 'SK', 'SL', 'SM', 'SN', 'SO', 'SR', 'SS', 'ST', 'SV', 'SX', 'SY', 'SZ', 'TC', 'TD', 'TF', 'TG', 'TH', 'TJ', 'TK', 'TL', 'TM', 'TN', 'TO', 'TR', 'TT', 'TV', 'TW', 'TZ', 'UA', 'UG', 'UM', 'US', 'UY', 'UZ', 'VA', 'VC', 'VE', 'VG', 'VI', 'VN', 'VU', 'WF', 'WS', 'YE', 'YT', 'ZA', 'ZM', 'ZW']); +function isISO31661Alpha2(str) { + assertString(str); + return validISO31661Alpha2CountriesCodes.has(str.toUpperCase()); +} +var CountryCodes = validISO31661Alpha2CountriesCodes; + +var isBICReg = /^[A-Za-z]{6}[A-Za-z0-9]{2}([A-Za-z0-9]{3})?$/; +function isBIC(str) { + assertString(str); // toUpperCase() should be removed when a new major version goes out that changes + // the regex to [A-Z] (per the spec). + + if (!CountryCodes.has(str.slice(4, 6).toUpperCase())) { + return false; + } + + return isBICReg.test(str); +} + +var md5 = /^[a-f0-9]{32}$/; +function isMD5(str) { + assertString(str); + return md5.test(str); +} + +var lengths = { + md5: 32, + md4: 32, + sha1: 40, + sha256: 64, + sha384: 96, + sha512: 128, + ripemd128: 32, + ripemd160: 40, + tiger128: 32, + tiger160: 40, + tiger192: 48, + crc32: 8, + crc32b: 8 +}; +function isHash(str, algorithm) { + assertString(str); + var hash = new RegExp("^[a-fA-F0-9]{".concat(lengths[algorithm], "}$")); + return hash.test(str); +} + +var notBase64 = /[^A-Z0-9+\/=]/i; +var urlSafeBase64 = /^[A-Z0-9_\-]*$/i; +var defaultBase64Options = { + urlSafe: false +}; +function isBase64(str, options) { + assertString(str); + options = merge(options, defaultBase64Options); + var len = str.length; + + if (options.urlSafe) { + return urlSafeBase64.test(str); + } + + if (len % 4 !== 0 || notBase64.test(str)) { + return false; + } + + var firstPaddingChar = str.indexOf('='); + return firstPaddingChar === -1 || firstPaddingChar === len - 1 || firstPaddingChar === len - 2 && str[len - 1] === '='; +} + +function isJWT(str) { + assertString(str); + var dotSplit = str.split('.'); + var len = dotSplit.length; + + if (len > 3 || len < 2) { + return false; + } + + return dotSplit.reduce(function (acc, currElem) { + return acc && isBase64(currElem, { + urlSafe: true + }); + }, true); +} + +var default_json_options = { + allow_primitives: false +}; +function isJSON(str, options) { + assertString(str); + + try { + options = merge(options, default_json_options); + var primitives = []; + + if (options.allow_primitives) { + primitives = [null, false, true]; + } + + var obj = JSON.parse(str); + return primitives.includes(obj) || !!obj && _typeof(obj) === 'object'; + } catch (e) { + /* ignore */ + } + + return false; +} + +var default_is_empty_options = { + ignore_whitespace: false +}; +function isEmpty(str, options) { + assertString(str); + options = merge(options, default_is_empty_options); + return (options.ignore_whitespace ? str.trim().length : str.length) === 0; +} + +/* eslint-disable prefer-rest-params */ + +function isLength(str, options) { + assertString(str); + var min; + var max; + + if (_typeof(options) === 'object') { + min = options.min || 0; + max = options.max; + } else { + // backwards compatibility: isLength(str, min [, max]) + min = arguments[1] || 0; + max = arguments[2]; + } + + var surrogatePairs = str.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g) || []; + var len = str.length - surrogatePairs.length; + return len >= min && (typeof max === 'undefined' || len <= max); +} + +var uuid = { + 1: /^[0-9A-F]{8}-[0-9A-F]{4}-1[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i, + 2: /^[0-9A-F]{8}-[0-9A-F]{4}-2[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i, + 3: /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i, + 4: /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i, + 5: /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i, + all: /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i +}; +function isUUID(str, version) { + assertString(str); + var pattern = uuid[![undefined, null].includes(version) ? version : 'all']; + return !!pattern && pattern.test(str); +} + +function isMongoId(str) { + assertString(str); + return isHexadecimal(str) && str.length === 24; +} + +function isAfter(str) { + var date = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : String(new Date()); + assertString(str); + var comparison = toDate(date); + var original = toDate(str); + return !!(original && comparison && original > comparison); +} + +function isBefore(str) { + var date = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : String(new Date()); + assertString(str); + var comparison = toDate(date); + var original = toDate(str); + return !!(original && comparison && original < comparison); +} + +function isIn(str, options) { + assertString(str); + var i; + + if (Object.prototype.toString.call(options) === '[object Array]') { + var array = []; + + for (i in options) { + // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes + // istanbul ignore else + if ({}.hasOwnProperty.call(options, i)) { + array[i] = toString$1(options[i]); + } + } + + return array.indexOf(str) >= 0; + } else if (_typeof(options) === 'object') { + return options.hasOwnProperty(str); + } else if (options && typeof options.indexOf === 'function') { + return options.indexOf(str) >= 0; + } + + return false; +} + +/* eslint-disable max-len */ + +var creditCard = /^(?:4[0-9]{12}(?:[0-9]{3,6})?|5[1-5][0-9]{14}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12,15}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11}|6[27][0-9]{14}|^(81[0-9]{14,17}))$/; +/* eslint-enable max-len */ + +function isCreditCard(str) { + assertString(str); + var sanitized = str.replace(/[- ]+/g, ''); + + if (!creditCard.test(sanitized)) { + return false; + } + + var sum = 0; + var digit; + var tmpNum; + var shouldDouble; + + for (var i = sanitized.length - 1; i >= 0; i--) { + digit = sanitized.substring(i, i + 1); + tmpNum = parseInt(digit, 10); + + if (shouldDouble) { + tmpNum *= 2; + + if (tmpNum >= 10) { + sum += tmpNum % 10 + 1; + } else { + sum += tmpNum; + } + } else { + sum += tmpNum; + } + + shouldDouble = !shouldDouble; + } + + return !!(sum % 10 === 0 ? sanitized : false); +} + +var validators = { + PL: function PL(str) { + assertString(str); + var weightOfDigits = { + 1: 1, + 2: 3, + 3: 7, + 4: 9, + 5: 1, + 6: 3, + 7: 7, + 8: 9, + 9: 1, + 10: 3, + 11: 0 + }; + + if (str != null && str.length === 11 && isInt(str, { + allow_leading_zeroes: true + })) { + var digits = str.split('').slice(0, -1); + var sum = digits.reduce(function (acc, digit, index) { + return acc + Number(digit) * weightOfDigits[index + 1]; + }, 0); + var modulo = sum % 10; + var lastDigit = Number(str.charAt(str.length - 1)); + + if (modulo === 0 && lastDigit === 0 || lastDigit === 10 - modulo) { + return true; + } + } + + return false; + }, + ES: function ES(str) { + assertString(str); + var DNI = /^[0-9X-Z][0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKE]$/; + var charsValue = { + X: 0, + Y: 1, + Z: 2 + }; + var controlDigits = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E']; // sanitize user input + + var sanitized = str.trim().toUpperCase(); // validate the data structure + + if (!DNI.test(sanitized)) { + return false; + } // validate the control digit + + + var number = sanitized.slice(0, -1).replace(/[X,Y,Z]/g, function (_char) { + return charsValue[_char]; + }); + return sanitized.endsWith(controlDigits[number % 23]); + }, + FI: function FI(str) { + // https://dvv.fi/en/personal-identity-code#:~:text=control%20character%20for%20a-,personal,-identity%20code%20calculated + assertString(str); + + if (str.length !== 11) { + return false; + } + + if (!str.match(/^\d{6}[\-A\+]\d{3}[0-9ABCDEFHJKLMNPRSTUVWXY]{1}$/)) { + return false; + } + + var checkDigits = '0123456789ABCDEFHJKLMNPRSTUVWXY'; + var idAsNumber = parseInt(str.slice(0, 6), 10) * 1000 + parseInt(str.slice(7, 10), 10); + var remainder = idAsNumber % 31; + var checkDigit = checkDigits[remainder]; + return checkDigit === str.slice(10, 11); + }, + IN: function IN(str) { + var DNI = /^[1-9]\d{3}\s?\d{4}\s?\d{4}$/; // multiplication table + + var d = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 0, 6, 7, 8, 9, 5], [2, 3, 4, 0, 1, 7, 8, 9, 5, 6], [3, 4, 0, 1, 2, 8, 9, 5, 6, 7], [4, 0, 1, 2, 3, 9, 5, 6, 7, 8], [5, 9, 8, 7, 6, 0, 4, 3, 2, 1], [6, 5, 9, 8, 7, 1, 0, 4, 3, 2], [7, 6, 5, 9, 8, 2, 1, 0, 4, 3], [8, 7, 6, 5, 9, 3, 2, 1, 0, 4], [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]]; // permutation table + + var p = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 5, 7, 6, 2, 8, 3, 0, 9, 4], [5, 8, 0, 3, 7, 9, 6, 1, 4, 2], [8, 9, 1, 6, 0, 4, 3, 5, 2, 7], [9, 4, 5, 3, 1, 2, 6, 8, 7, 0], [4, 2, 8, 6, 5, 7, 3, 9, 0, 1], [2, 7, 9, 3, 8, 0, 6, 4, 1, 5], [7, 0, 4, 6, 9, 1, 3, 2, 5, 8]]; // sanitize user input + + var sanitized = str.trim(); // validate the data structure + + if (!DNI.test(sanitized)) { + return false; + } + + var c = 0; + var invertedArray = sanitized.replace(/\s/g, '').split('').map(Number).reverse(); + invertedArray.forEach(function (val, i) { + c = d[c][p[i % 8][val]]; + }); + return c === 0; + }, + IR: function IR(str) { + if (!str.match(/^\d{10}$/)) return false; + str = "0000".concat(str).substr(str.length - 6); + if (parseInt(str.substr(3, 6), 10) === 0) return false; + var lastNumber = parseInt(str.substr(9, 1), 10); + var sum = 0; + + for (var i = 0; i < 9; i++) { + sum += parseInt(str.substr(i, 1), 10) * (10 - i); + } + + sum %= 11; + return sum < 2 && lastNumber === sum || sum >= 2 && lastNumber === 11 - sum; + }, + IT: function IT(str) { + if (str.length !== 9) return false; + if (str === 'CA00000AA') return false; // https://it.wikipedia.org/wiki/Carta_d%27identit%C3%A0_elettronica_italiana + + return str.search(/C[A-Z][0-9]{5}[A-Z]{2}/i) > -1; + }, + NO: function NO(str) { + var sanitized = str.trim(); + if (isNaN(Number(sanitized))) return false; + if (sanitized.length !== 11) return false; + if (sanitized === '00000000000') return false; // https://no.wikipedia.org/wiki/F%C3%B8dselsnummer + + var f = sanitized.split('').map(Number); + var k1 = (11 - (3 * f[0] + 7 * f[1] + 6 * f[2] + 1 * f[3] + 8 * f[4] + 9 * f[5] + 4 * f[6] + 5 * f[7] + 2 * f[8]) % 11) % 11; + var k2 = (11 - (5 * f[0] + 4 * f[1] + 3 * f[2] + 2 * f[3] + 7 * f[4] + 6 * f[5] + 5 * f[6] + 4 * f[7] + 3 * f[8] + 2 * k1) % 11) % 11; + if (k1 !== f[9] || k2 !== f[10]) return false; + return true; + }, + TH: function TH(str) { + if (!str.match(/^[1-8]\d{12}$/)) return false; // validate check digit + + var sum = 0; + + for (var i = 0; i < 12; i++) { + sum += parseInt(str[i], 10) * (13 - i); + } + + return str[12] === ((11 - sum % 11) % 10).toString(); + }, + LK: function LK(str) { + var old_nic = /^[1-9]\d{8}[vx]$/i; + var new_nic = /^[1-9]\d{11}$/i; + if (str.length === 10 && old_nic.test(str)) return true;else if (str.length === 12 && new_nic.test(str)) return true; + return false; + }, + 'he-IL': function heIL(str) { + var DNI = /^\d{9}$/; // sanitize user input + + var sanitized = str.trim(); // validate the data structure + + if (!DNI.test(sanitized)) { + return false; + } + + var id = sanitized; + var sum = 0, + incNum; + + for (var i = 0; i < id.length; i++) { + incNum = Number(id[i]) * (i % 2 + 1); // Multiply number by 1 or 2 + + sum += incNum > 9 ? incNum - 9 : incNum; // Sum the digits up and add to total + } + + return sum % 10 === 0; + }, + 'ar-LY': function arLY(str) { + // Libya National Identity Number NIN is 12 digits, the first digit is either 1 or 2 + var NIN = /^(1|2)\d{11}$/; // sanitize user input + + var sanitized = str.trim(); // validate the data structure + + if (!NIN.test(sanitized)) { + return false; + } + + return true; + }, + 'ar-TN': function arTN(str) { + var DNI = /^\d{8}$/; // sanitize user input + + var sanitized = str.trim(); // validate the data structure + + if (!DNI.test(sanitized)) { + return false; + } + + return true; + }, + 'zh-CN': function zhCN(str) { + var provincesAndCities = ['11', // 北京 + '12', // 天津 + '13', // 河北 + '14', // 山西 + '15', // 内蒙古 + '21', // 辽宁 + '22', // 吉林 + '23', // 黑龙江 + '31', // 上海 + '32', // 江苏 + '33', // 浙江 + '34', // 安徽 + '35', // 福建 + '36', // 江西 + '37', // 山东 + '41', // 河南 + '42', // 湖北 + '43', // 湖南 + '44', // 广东 + '45', // 广西 + '46', // 海南 + '50', // 重庆 + '51', // 四川 + '52', // 贵州 + '53', // 云南 + '54', // 西藏 + '61', // 陕西 + '62', // 甘肃 + '63', // 青海 + '64', // 宁夏 + '65', // 新疆 + '71', // 台湾 + '81', // 香港 + '82', // 澳门 + '91' // 国外 + ]; + var powers = ['7', '9', '10', '5', '8', '4', '2', '1', '6', '3', '7', '9', '10', '5', '8', '4', '2']; + var parityBit = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']; + + var checkAddressCode = function checkAddressCode(addressCode) { + return provincesAndCities.includes(addressCode); + }; + + var checkBirthDayCode = function checkBirthDayCode(birDayCode) { + var yyyy = parseInt(birDayCode.substring(0, 4), 10); + var mm = parseInt(birDayCode.substring(4, 6), 10); + var dd = parseInt(birDayCode.substring(6), 10); + var xdata = new Date(yyyy, mm - 1, dd); + + if (xdata > new Date()) { + return false; // eslint-disable-next-line max-len + } else if (xdata.getFullYear() === yyyy && xdata.getMonth() === mm - 1 && xdata.getDate() === dd) { + return true; + } + + return false; + }; + + var getParityBit = function getParityBit(idCardNo) { + var id17 = idCardNo.substring(0, 17); + var power = 0; + + for (var i = 0; i < 17; i++) { + power += parseInt(id17.charAt(i), 10) * parseInt(powers[i], 10); + } + + var mod = power % 11; + return parityBit[mod]; + }; + + var checkParityBit = function checkParityBit(idCardNo) { + return getParityBit(idCardNo) === idCardNo.charAt(17).toUpperCase(); + }; + + var check15IdCardNo = function check15IdCardNo(idCardNo) { + var check = /^[1-9]\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}$/.test(idCardNo); + if (!check) return false; + var addressCode = idCardNo.substring(0, 2); + check = checkAddressCode(addressCode); + if (!check) return false; + var birDayCode = "19".concat(idCardNo.substring(6, 12)); + check = checkBirthDayCode(birDayCode); + if (!check) return false; + return true; + }; + + var check18IdCardNo = function check18IdCardNo(idCardNo) { + var check = /^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}(\d|x|X)$/.test(idCardNo); + if (!check) return false; + var addressCode = idCardNo.substring(0, 2); + check = checkAddressCode(addressCode); + if (!check) return false; + var birDayCode = idCardNo.substring(6, 14); + check = checkBirthDayCode(birDayCode); + if (!check) return false; + return checkParityBit(idCardNo); + }; + + var checkIdCardNo = function checkIdCardNo(idCardNo) { + var check = /^\d{15}|(\d{17}(\d|x|X))$/.test(idCardNo); + if (!check) return false; + + if (idCardNo.length === 15) { + return check15IdCardNo(idCardNo); + } + + return check18IdCardNo(idCardNo); + }; + + return checkIdCardNo(str); + }, + 'zh-TW': function zhTW(str) { + var ALPHABET_CODES = { + A: 10, + B: 11, + C: 12, + D: 13, + E: 14, + F: 15, + G: 16, + H: 17, + I: 34, + J: 18, + K: 19, + L: 20, + M: 21, + N: 22, + O: 35, + P: 23, + Q: 24, + R: 25, + S: 26, + T: 27, + U: 28, + V: 29, + W: 32, + X: 30, + Y: 31, + Z: 33 + }; + var sanitized = str.trim().toUpperCase(); + if (!/^[A-Z][0-9]{9}$/.test(sanitized)) return false; + return Array.from(sanitized).reduce(function (sum, number, index) { + if (index === 0) { + var code = ALPHABET_CODES[number]; + return code % 10 * 9 + Math.floor(code / 10); + } + + if (index === 9) { + return (10 - sum % 10 - Number(number)) % 10 === 0; + } + + return sum + Number(number) * (9 - index); + }, 0); + } +}; +function isIdentityCard(str, locale) { + assertString(str); + + if (locale in validators) { + return validators[locale](str); + } else if (locale === 'any') { + for (var key in validators) { + // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes + // istanbul ignore else + if (validators.hasOwnProperty(key)) { + var validator = validators[key]; + + if (validator(str)) { + return true; + } + } + } + + return false; + } + + throw new Error("Invalid locale '".concat(locale, "'")); +} + +/** + * The most commonly used EAN standard is + * the thirteen-digit EAN-13, while the + * less commonly used 8-digit EAN-8 barcode was + * introduced for use on small packages. + * Also EAN/UCC-14 is used for Grouping of individual + * trade items above unit level(Intermediate, Carton or Pallet). + * For more info about EAN-14 checkout: https://www.gtin.info/itf-14-barcodes/ + * EAN consists of: + * GS1 prefix, manufacturer code, product code and check digit + * Reference: https://en.wikipedia.org/wiki/International_Article_Number + * Reference: https://www.gtin.info/ + */ +/** + * Define EAN Lenghts; 8 for EAN-8; 13 for EAN-13; 14 for EAN-14 + * and Regular Expression for valid EANs (EAN-8, EAN-13, EAN-14), + * with exact numberic matching of 8 or 13 or 14 digits [0-9] + */ + +var LENGTH_EAN_8 = 8; +var LENGTH_EAN_14 = 14; +var validEanRegex = /^(\d{8}|\d{13}|\d{14})$/; +/** + * Get position weight given: + * EAN length and digit index/position + * + * @param {number} length + * @param {number} index + * @return {number} + */ + +function getPositionWeightThroughLengthAndIndex(length, index) { + if (length === LENGTH_EAN_8 || length === LENGTH_EAN_14) { + return index % 2 === 0 ? 3 : 1; + } + + return index % 2 === 0 ? 1 : 3; +} +/** + * Calculate EAN Check Digit + * Reference: https://en.wikipedia.org/wiki/International_Article_Number#Calculation_of_checksum_digit + * + * @param {string} ean + * @return {number} + */ + + +function calculateCheckDigit(ean) { + var checksum = ean.slice(0, -1).split('').map(function (_char, index) { + return Number(_char) * getPositionWeightThroughLengthAndIndex(ean.length, index); + }).reduce(function (acc, partialSum) { + return acc + partialSum; + }, 0); + var remainder = 10 - checksum % 10; + return remainder < 10 ? remainder : 0; +} +/** + * Check if string is valid EAN: + * Matches EAN-8/EAN-13/EAN-14 regex + * Has valid check digit. + * + * @param {string} str + * @return {boolean} + */ + + +function isEAN(str) { + assertString(str); + var actualCheckDigit = Number(str.slice(-1)); + return validEanRegex.test(str) && actualCheckDigit === calculateCheckDigit(str); +} + +var isin = /^[A-Z]{2}[0-9A-Z]{9}[0-9]$/; // this link details how the check digit is calculated: +// https://www.isin.org/isin-format/. it is a little bit +// odd in that it works with digits, not numbers. in order +// to make only one pass through the ISIN characters, the +// each alpha character is handled as 2 characters within +// the loop. + +function isISIN(str) { + assertString(str); + + if (!isin.test(str)) { + return false; + } + + var _double = true; + var sum = 0; // convert values + + for (var i = str.length - 2; i >= 0; i--) { + if (str[i] >= 'A' && str[i] <= 'Z') { + var value = str[i].charCodeAt(0) - 55; + var lo = value % 10; + var hi = Math.trunc(value / 10); // letters have two digits, so handle the low order + // and high order digits separately. + + for (var _i = 0, _arr = [lo, hi]; _i < _arr.length; _i++) { + var digit = _arr[_i]; + + if (_double) { + if (digit >= 5) { + sum += 1 + (digit - 5) * 2; + } else { + sum += digit * 2; + } + } else { + sum += digit; + } + + _double = !_double; + } + } else { + var _digit = str[i].charCodeAt(0) - '0'.charCodeAt(0); + + if (_double) { + if (_digit >= 5) { + sum += 1 + (_digit - 5) * 2; + } else { + sum += _digit * 2; + } + } else { + sum += _digit; + } + + _double = !_double; + } + } + + var check = Math.trunc((sum + 9) / 10) * 10 - sum; + return +str[str.length - 1] === check; +} + +var isbn10Maybe = /^(?:[0-9]{9}X|[0-9]{10})$/; +var isbn13Maybe = /^(?:[0-9]{13})$/; +var factor = [1, 3]; +function isISBN(str) { + var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + assertString(str); + version = String(version); + + if (!version) { + return isISBN(str, 10) || isISBN(str, 13); + } + + var sanitized = str.replace(/[\s-]+/g, ''); + var checksum = 0; + var i; + + if (version === '10') { + if (!isbn10Maybe.test(sanitized)) { + return false; + } + + for (i = 0; i < 9; i++) { + checksum += (i + 1) * sanitized.charAt(i); + } + + if (sanitized.charAt(9) === 'X') { + checksum += 10 * 10; + } else { + checksum += 10 * sanitized.charAt(9); + } + + if (checksum % 11 === 0) { + return !!sanitized; + } + } else if (version === '13') { + if (!isbn13Maybe.test(sanitized)) { + return false; + } + + for (i = 0; i < 12; i++) { + checksum += factor[i % 2] * sanitized.charAt(i); + } + + if (sanitized.charAt(12) - (10 - checksum % 10) % 10 === 0) { + return !!sanitized; + } + } + + return false; +} + +var issn = '^\\d{4}-?\\d{3}[\\dX]$'; +function isISSN(str) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + assertString(str); + var testIssn = issn; + testIssn = options.require_hyphen ? testIssn.replace('?', '') : testIssn; + testIssn = options.case_sensitive ? new RegExp(testIssn) : new RegExp(testIssn, 'i'); + + if (!testIssn.test(str)) { + return false; + } + + var digits = str.replace('-', '').toUpperCase(); + var checksum = 0; + + for (var i = 0; i < digits.length; i++) { + var digit = digits[i]; + checksum += (digit === 'X' ? 10 : +digit) * (8 - i); + } + + return checksum % 11 === 0; +} + +/** + * Algorithmic validation functions + * May be used as is or implemented in the workflow of other validators. + */ + +/* + * ISO 7064 validation function + * Called with a string of numbers (incl. check digit) + * to validate according to ISO 7064 (MOD 11, 10). + */ +function iso7064Check(str) { + var checkvalue = 10; + + for (var i = 0; i < str.length - 1; i++) { + checkvalue = (parseInt(str[i], 10) + checkvalue) % 10 === 0 ? 10 * 2 % 11 : (parseInt(str[i], 10) + checkvalue) % 10 * 2 % 11; + } + + checkvalue = checkvalue === 1 ? 0 : 11 - checkvalue; + return checkvalue === parseInt(str[10], 10); +} +/* + * Luhn (mod 10) validation function + * Called with a string of numbers (incl. check digit) + * to validate according to the Luhn algorithm. + */ + +function luhnCheck(str) { + var checksum = 0; + var second = false; + + for (var i = str.length - 1; i >= 0; i--) { + if (second) { + var product = parseInt(str[i], 10) * 2; + + if (product > 9) { + // sum digits of product and add to checksum + checksum += product.toString().split('').map(function (a) { + return parseInt(a, 10); + }).reduce(function (a, b) { + return a + b; + }, 0); + } else { + checksum += product; + } + } else { + checksum += parseInt(str[i], 10); + } + + second = !second; + } + + return checksum % 10 === 0; +} +/* + * Reverse TIN multiplication and summation helper function + * Called with an array of single-digit integers and a base multiplier + * to calculate the sum of the digits multiplied in reverse. + * Normally used in variations of MOD 11 algorithmic checks. + */ + +function reverseMultiplyAndSum(digits, base) { + var total = 0; + + for (var i = 0; i < digits.length; i++) { + total += digits[i] * (base - i); + } + + return total; +} +/* + * Verhoeff validation helper function + * Called with a string of numbers + * to validate according to the Verhoeff algorithm. + */ + +function verhoeffCheck(str) { + var d_table = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 0, 6, 7, 8, 9, 5], [2, 3, 4, 0, 1, 7, 8, 9, 5, 6], [3, 4, 0, 1, 2, 8, 9, 5, 6, 7], [4, 0, 1, 2, 3, 9, 5, 6, 7, 8], [5, 9, 8, 7, 6, 0, 4, 3, 2, 1], [6, 5, 9, 8, 7, 1, 0, 4, 3, 2], [7, 6, 5, 9, 8, 2, 1, 0, 4, 3], [8, 7, 6, 5, 9, 3, 2, 1, 0, 4], [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]]; + var p_table = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 5, 7, 6, 2, 8, 3, 0, 9, 4], [5, 8, 0, 3, 7, 9, 6, 1, 4, 2], [8, 9, 1, 6, 0, 4, 3, 5, 2, 7], [9, 4, 5, 3, 1, 2, 6, 8, 7, 0], [4, 2, 8, 6, 5, 7, 3, 9, 0, 1], [2, 7, 9, 3, 8, 0, 6, 4, 1, 5], [7, 0, 4, 6, 9, 1, 3, 2, 5, 8]]; // Copy (to prevent replacement) and reverse + + var str_copy = str.split('').reverse().join(''); + var checksum = 0; + + for (var i = 0; i < str_copy.length; i++) { + checksum = d_table[checksum][p_table[i % 8][parseInt(str_copy[i], 10)]]; + } + + return checksum === 0; +} + +/** + * TIN Validation + * Validates Tax Identification Numbers (TINs) from the US, EU member states and the United Kingdom. + * + * EU-UK: + * National TIN validity is calculated using public algorithms as made available by DG TAXUD. + * + * See `https://ec.europa.eu/taxation_customs/tin/specs/FS-TIN%20Algorithms-Public.docx` for more information. + * + * US: + * An Employer Identification Number (EIN), also known as a Federal Tax Identification Number, + * is used to identify a business entity. + * + * NOTES: + * - Prefix 47 is being reserved for future use + * - Prefixes 26, 27, 45, 46 and 47 were previously assigned by the Philadelphia campus. + * + * See `http://www.irs.gov/Businesses/Small-Businesses-&-Self-Employed/How-EINs-are-Assigned-and-Valid-EIN-Prefixes` + * for more information. + */ +// Locale functions + +/* + * bg-BG validation function + * (Edinen graždanski nomer (EGN/ЕГН), persons only) + * Checks if birth date (first six digits) is valid and calculates check (last) digit + */ + +function bgBgCheck(tin) { + // Extract full year, normalize month and check birth date validity + var century_year = tin.slice(0, 2); + var month = parseInt(tin.slice(2, 4), 10); + + if (month > 40) { + month -= 40; + century_year = "20".concat(century_year); + } else if (month > 20) { + month -= 20; + century_year = "18".concat(century_year); + } else { + century_year = "19".concat(century_year); + } + + if (month < 10) { + month = "0".concat(month); + } + + var date = "".concat(century_year, "/").concat(month, "/").concat(tin.slice(4, 6)); + + if (!isDate(date, 'YYYY/MM/DD')) { + return false; + } // split digits into an array for further processing + + + var digits = tin.split('').map(function (a) { + return parseInt(a, 10); + }); // Calculate checksum by multiplying digits with fixed values + + var multip_lookup = [2, 4, 8, 5, 10, 9, 7, 3, 6]; + var checksum = 0; + + for (var i = 0; i < multip_lookup.length; i++) { + checksum += digits[i] * multip_lookup[i]; + } + + checksum = checksum % 11 === 10 ? 0 : checksum % 11; + return checksum === digits[9]; +} +/* + * cs-CZ validation function + * (Rodné číslo (RČ), persons only) + * Checks if birth date (first six digits) is valid and divisibility by 11 + * Material not in DG TAXUD document sourced from: + * -`https://lorenc.info/3MA381/overeni-spravnosti-rodneho-cisla.htm` + * -`https://www.mvcr.cz/clanek/rady-a-sluzby-dokumenty-rodne-cislo.aspx` + */ + + +function csCzCheck(tin) { + tin = tin.replace(/\W/, ''); // Extract full year from TIN length + + var full_year = parseInt(tin.slice(0, 2), 10); + + if (tin.length === 10) { + if (full_year < 54) { + full_year = "20".concat(full_year); + } else { + full_year = "19".concat(full_year); + } + } else { + if (tin.slice(6) === '000') { + return false; + } // Three-zero serial not assigned before 1954 + + + if (full_year < 54) { + full_year = "19".concat(full_year); + } else { + return false; // No 18XX years seen in any of the resources + } + } // Add missing zero if needed + + + if (full_year.length === 3) { + full_year = [full_year.slice(0, 2), '0', full_year.slice(2)].join(''); + } // Extract month from TIN and normalize + + + var month = parseInt(tin.slice(2, 4), 10); + + if (month > 50) { + month -= 50; + } + + if (month > 20) { + // Month-plus-twenty was only introduced in 2004 + if (parseInt(full_year, 10) < 2004) { + return false; + } + + month -= 20; + } + + if (month < 10) { + month = "0".concat(month); + } // Check date validity + + + var date = "".concat(full_year, "/").concat(month, "/").concat(tin.slice(4, 6)); + + if (!isDate(date, 'YYYY/MM/DD')) { + return false; + } // Verify divisibility by 11 + + + if (tin.length === 10) { + if (parseInt(tin, 10) % 11 !== 0) { + // Some numbers up to and including 1985 are still valid if + // check (last) digit equals 0 and modulo of first 9 digits equals 10 + var checkdigit = parseInt(tin.slice(0, 9), 10) % 11; + + if (parseInt(full_year, 10) < 1986 && checkdigit === 10) { + if (parseInt(tin.slice(9), 10) !== 0) { + return false; + } + } else { + return false; + } + } + } + + return true; +} +/* + * de-AT validation function + * (Abgabenkontonummer, persons/entities) + * Verify TIN validity by calling luhnCheck() + */ + + +function deAtCheck(tin) { + return luhnCheck(tin); +} +/* + * de-DE validation function + * (Steueridentifikationsnummer (Steuer-IdNr.), persons only) + * Tests for single duplicate/triplicate value, then calculates ISO 7064 check (last) digit + * Partial implementation of spec (same result with both algorithms always) + */ + + +function deDeCheck(tin) { + // Split digits into an array for further processing + var digits = tin.split('').map(function (a) { + return parseInt(a, 10); + }); // Fill array with strings of number positions + + var occurences = []; + + for (var i = 0; i < digits.length - 1; i++) { + occurences.push(''); + + for (var j = 0; j < digits.length - 1; j++) { + if (digits[i] === digits[j]) { + occurences[i] += j; + } + } + } // Remove digits with one occurence and test for only one duplicate/triplicate + + + occurences = occurences.filter(function (a) { + return a.length > 1; + }); + + if (occurences.length !== 2 && occurences.length !== 3) { + return false; + } // In case of triplicate value only two digits are allowed next to each other + + + if (occurences[0].length === 3) { + var trip_locations = occurences[0].split('').map(function (a) { + return parseInt(a, 10); + }); + var recurrent = 0; // Amount of neighbour occurences + + for (var _i = 0; _i < trip_locations.length - 1; _i++) { + if (trip_locations[_i] + 1 === trip_locations[_i + 1]) { + recurrent += 1; + } + } + + if (recurrent === 2) { + return false; + } + } + + return iso7064Check(tin); +} +/* + * dk-DK validation function + * (CPR-nummer (personnummer), persons only) + * Checks if birth date (first six digits) is valid and assigned to century (seventh) digit, + * and calculates check (last) digit + */ + + +function dkDkCheck(tin) { + tin = tin.replace(/\W/, ''); // Extract year, check if valid for given century digit and add century + + var year = parseInt(tin.slice(4, 6), 10); + var century_digit = tin.slice(6, 7); + + switch (century_digit) { + case '0': + case '1': + case '2': + case '3': + year = "19".concat(year); + break; + + case '4': + case '9': + if (year < 37) { + year = "20".concat(year); + } else { + year = "19".concat(year); + } + + break; + + default: + if (year < 37) { + year = "20".concat(year); + } else if (year > 58) { + year = "18".concat(year); + } else { + return false; + } + + break; + } // Add missing zero if needed + + + if (year.length === 3) { + year = [year.slice(0, 2), '0', year.slice(2)].join(''); + } // Check date validity + + + var date = "".concat(year, "/").concat(tin.slice(2, 4), "/").concat(tin.slice(0, 2)); + + if (!isDate(date, 'YYYY/MM/DD')) { + return false; + } // Split digits into an array for further processing + + + var digits = tin.split('').map(function (a) { + return parseInt(a, 10); + }); + var checksum = 0; + var weight = 4; // Multiply by weight and add to checksum + + for (var i = 0; i < 9; i++) { + checksum += digits[i] * weight; + weight -= 1; + + if (weight === 1) { + weight = 7; + } + } + + checksum %= 11; + + if (checksum === 1) { + return false; + } + + return checksum === 0 ? digits[9] === 0 : digits[9] === 11 - checksum; +} +/* + * el-CY validation function + * (Arithmos Forologikou Mitroou (AFM/ΑΦΜ), persons only) + * Verify TIN validity by calculating ASCII value of check (last) character + */ + + +function elCyCheck(tin) { + // split digits into an array for further processing + var digits = tin.slice(0, 8).split('').map(function (a) { + return parseInt(a, 10); + }); + var checksum = 0; // add digits in even places + + for (var i = 1; i < digits.length; i += 2) { + checksum += digits[i]; + } // add digits in odd places + + + for (var _i2 = 0; _i2 < digits.length; _i2 += 2) { + if (digits[_i2] < 2) { + checksum += 1 - digits[_i2]; + } else { + checksum += 2 * (digits[_i2] - 2) + 5; + + if (digits[_i2] > 4) { + checksum += 2; + } + } + } + + return String.fromCharCode(checksum % 26 + 65) === tin.charAt(8); +} +/* + * el-GR validation function + * (Arithmos Forologikou Mitroou (AFM/ΑΦΜ), persons/entities) + * Verify TIN validity by calculating check (last) digit + * Algorithm not in DG TAXUD document- sourced from: + * - `http://epixeirisi.gr/%CE%9A%CE%A1%CE%99%CE%A3%CE%99%CE%9C%CE%91-%CE%98%CE%95%CE%9C%CE%91%CE%A4%CE%91-%CE%A6%CE%9F%CE%A1%CE%9F%CE%9B%CE%9F%CE%93%CE%99%CE%91%CE%A3-%CE%9A%CE%91%CE%99-%CE%9B%CE%9F%CE%93%CE%99%CE%A3%CE%A4%CE%99%CE%9A%CE%97%CE%A3/23791/%CE%91%CF%81%CE%B9%CE%B8%CE%BC%CF%8C%CF%82-%CE%A6%CE%BF%CF%81%CE%BF%CE%BB%CE%BF%CE%B3%CE%B9%CE%BA%CE%BF%CF%8D-%CE%9C%CE%B7%CF%84%CF%81%CF%8E%CE%BF%CF%85` + */ + + +function elGrCheck(tin) { + // split digits into an array for further processing + var digits = tin.split('').map(function (a) { + return parseInt(a, 10); + }); + var checksum = 0; + + for (var i = 0; i < 8; i++) { + checksum += digits[i] * Math.pow(2, 8 - i); + } + + return checksum % 11 % 10 === digits[8]; +} +/* + * en-GB validation function (should go here if needed) + * (National Insurance Number (NINO) or Unique Taxpayer Reference (UTR), + * persons/entities respectively) + */ + +/* + * en-IE validation function + * (Personal Public Service Number (PPS No), persons only) + * Verify TIN validity by calculating check (second to last) character + */ + + +function enIeCheck(tin) { + var checksum = reverseMultiplyAndSum(tin.split('').slice(0, 7).map(function (a) { + return parseInt(a, 10); + }), 8); + + if (tin.length === 9 && tin[8] !== 'W') { + checksum += (tin[8].charCodeAt(0) - 64) * 9; + } + + checksum %= 23; + + if (checksum === 0) { + return tin[7].toUpperCase() === 'W'; + } + + return tin[7].toUpperCase() === String.fromCharCode(64 + checksum); +} // Valid US IRS campus prefixes + + +var enUsCampusPrefix = { + andover: ['10', '12'], + atlanta: ['60', '67'], + austin: ['50', '53'], + brookhaven: ['01', '02', '03', '04', '05', '06', '11', '13', '14', '16', '21', '22', '23', '25', '34', '51', '52', '54', '55', '56', '57', '58', '59', '65'], + cincinnati: ['30', '32', '35', '36', '37', '38', '61'], + fresno: ['15', '24'], + internet: ['20', '26', '27', '45', '46', '47'], + kansas: ['40', '44'], + memphis: ['94', '95'], + ogden: ['80', '90'], + philadelphia: ['33', '39', '41', '42', '43', '46', '48', '62', '63', '64', '66', '68', '71', '72', '73', '74', '75', '76', '77', '81', '82', '83', '84', '85', '86', '87', '88', '91', '92', '93', '98', '99'], + sba: ['31'] +}; // Return an array of all US IRS campus prefixes + +function enUsGetPrefixes() { + var prefixes = []; + + for (var location in enUsCampusPrefix) { + // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes + // istanbul ignore else + if (enUsCampusPrefix.hasOwnProperty(location)) { + prefixes.push.apply(prefixes, _toConsumableArray(enUsCampusPrefix[location])); + } + } + + return prefixes; +} +/* + * en-US validation function + * Verify that the TIN starts with a valid IRS campus prefix + */ + + +function enUsCheck(tin) { + return enUsGetPrefixes().indexOf(tin.substr(0, 2)) !== -1; +} +/* + * es-ES validation function + * (Documento Nacional de Identidad (DNI) + * or Número de Identificación de Extranjero (NIE), persons only) + * Verify TIN validity by calculating check (last) character + */ + + +function esEsCheck(tin) { + // Split characters into an array for further processing + var chars = tin.toUpperCase().split(''); // Replace initial letter if needed + + if (isNaN(parseInt(chars[0], 10)) && chars.length > 1) { + var lead_replace = 0; + + switch (chars[0]) { + case 'Y': + lead_replace = 1; + break; + + case 'Z': + lead_replace = 2; + break; + + default: + } + + chars.splice(0, 1, lead_replace); // Fill with zeros if smaller than proper + } else { + while (chars.length < 9) { + chars.unshift(0); + } + } // Calculate checksum and check according to lookup + + + var lookup = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E']; + chars = chars.join(''); + var checksum = parseInt(chars.slice(0, 8), 10) % 23; + return chars[8] === lookup[checksum]; +} +/* + * et-EE validation function + * (Isikukood (IK), persons only) + * Checks if birth date (century digit and six following) is valid and calculates check (last) digit + * Material not in DG TAXUD document sourced from: + * - `https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Estonia-TIN.pdf` + */ + + +function etEeCheck(tin) { + // Extract year and add century + var full_year = tin.slice(1, 3); + var century_digit = tin.slice(0, 1); + + switch (century_digit) { + case '1': + case '2': + full_year = "18".concat(full_year); + break; + + case '3': + case '4': + full_year = "19".concat(full_year); + break; + + default: + full_year = "20".concat(full_year); + break; + } // Check date validity + + + var date = "".concat(full_year, "/").concat(tin.slice(3, 5), "/").concat(tin.slice(5, 7)); + + if (!isDate(date, 'YYYY/MM/DD')) { + return false; + } // Split digits into an array for further processing + + + var digits = tin.split('').map(function (a) { + return parseInt(a, 10); + }); + var checksum = 0; + var weight = 1; // Multiply by weight and add to checksum + + for (var i = 0; i < 10; i++) { + checksum += digits[i] * weight; + weight += 1; + + if (weight === 10) { + weight = 1; + } + } // Do again if modulo 11 of checksum is 10 + + + if (checksum % 11 === 10) { + checksum = 0; + weight = 3; + + for (var _i3 = 0; _i3 < 10; _i3++) { + checksum += digits[_i3] * weight; + weight += 1; + + if (weight === 10) { + weight = 1; + } + } + + if (checksum % 11 === 10) { + return digits[10] === 0; + } + } + + return checksum % 11 === digits[10]; +} +/* + * fi-FI validation function + * (Henkilötunnus (HETU), persons only) + * Checks if birth date (first six digits plus century symbol) is valid + * and calculates check (last) digit + */ + + +function fiFiCheck(tin) { + // Extract year and add century + var full_year = tin.slice(4, 6); + var century_symbol = tin.slice(6, 7); + + switch (century_symbol) { + case '+': + full_year = "18".concat(full_year); + break; + + case '-': + full_year = "19".concat(full_year); + break; + + default: + full_year = "20".concat(full_year); + break; + } // Check date validity + + + var date = "".concat(full_year, "/").concat(tin.slice(2, 4), "/").concat(tin.slice(0, 2)); + + if (!isDate(date, 'YYYY/MM/DD')) { + return false; + } // Calculate check character + + + var checksum = parseInt(tin.slice(0, 6) + tin.slice(7, 10), 10) % 31; + + if (checksum < 10) { + return checksum === parseInt(tin.slice(10), 10); + } + + checksum -= 10; + var letters_lookup = ['A', 'B', 'C', 'D', 'E', 'F', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y']; + return letters_lookup[checksum] === tin.slice(10); +} +/* + * fr/nl-BE validation function + * (Numéro national (N.N.), persons only) + * Checks if birth date (first six digits) is valid and calculates check (last two) digits + */ + + +function frBeCheck(tin) { + // Zero month/day value is acceptable + if (tin.slice(2, 4) !== '00' || tin.slice(4, 6) !== '00') { + // Extract date from first six digits of TIN + var date = "".concat(tin.slice(0, 2), "/").concat(tin.slice(2, 4), "/").concat(tin.slice(4, 6)); + + if (!isDate(date, 'YY/MM/DD')) { + return false; + } + } + + var checksum = 97 - parseInt(tin.slice(0, 9), 10) % 97; + var checkdigits = parseInt(tin.slice(9, 11), 10); + + if (checksum !== checkdigits) { + checksum = 97 - parseInt("2".concat(tin.slice(0, 9)), 10) % 97; + + if (checksum !== checkdigits) { + return false; + } + } + + return true; +} +/* + * fr-FR validation function + * (Numéro fiscal de référence (numéro SPI), persons only) + * Verify TIN validity by calculating check (last three) digits + */ + + +function frFrCheck(tin) { + tin = tin.replace(/\s/g, ''); + var checksum = parseInt(tin.slice(0, 10), 10) % 511; + var checkdigits = parseInt(tin.slice(10, 13), 10); + return checksum === checkdigits; +} +/* + * fr/lb-LU validation function + * (numéro d’identification personnelle, persons only) + * Verify birth date validity and run Luhn and Verhoeff checks + */ + + +function frLuCheck(tin) { + // Extract date and check validity + var date = "".concat(tin.slice(0, 4), "/").concat(tin.slice(4, 6), "/").concat(tin.slice(6, 8)); + + if (!isDate(date, 'YYYY/MM/DD')) { + return false; + } // Run Luhn check + + + if (!luhnCheck(tin.slice(0, 12))) { + return false; + } // Remove Luhn check digit and run Verhoeff check + + + return verhoeffCheck("".concat(tin.slice(0, 11)).concat(tin[12])); +} +/* + * hr-HR validation function + * (Osobni identifikacijski broj (OIB), persons/entities) + * Verify TIN validity by calling iso7064Check(digits) + */ + + +function hrHrCheck(tin) { + return iso7064Check(tin); +} +/* + * hu-HU validation function + * (Adóazonosító jel, persons only) + * Verify TIN validity by calculating check (last) digit + */ + + +function huHuCheck(tin) { + // split digits into an array for further processing + var digits = tin.split('').map(function (a) { + return parseInt(a, 10); + }); + var checksum = 8; + + for (var i = 1; i < 9; i++) { + checksum += digits[i] * (i + 1); + } + + return checksum % 11 === digits[9]; +} +/* + * lt-LT validation function (should go here if needed) + * (Asmens kodas, persons/entities respectively) + * Current validation check is alias of etEeCheck- same format applies + */ + +/* + * it-IT first/last name validity check + * Accepts it-IT TIN-encoded names as a three-element character array and checks their validity + * Due to lack of clarity between resources ("Are only Italian consonants used? + * What happens if a person has X in their name?" etc.) only two test conditions + * have been implemented: + * Vowels may only be followed by other vowels or an X character + * and X characters after vowels may only be followed by other X characters. + */ + + +function itItNameCheck(name) { + // true at the first occurence of a vowel + var vowelflag = false; // true at the first occurence of an X AFTER vowel + // (to properly handle last names with X as consonant) + + var xflag = false; + + for (var i = 0; i < 3; i++) { + if (!vowelflag && /[AEIOU]/.test(name[i])) { + vowelflag = true; + } else if (!xflag && vowelflag && name[i] === 'X') { + xflag = true; + } else if (i > 0) { + if (vowelflag && !xflag) { + if (!/[AEIOU]/.test(name[i])) { + return false; + } + } + + if (xflag) { + if (!/X/.test(name[i])) { + return false; + } + } + } + } + + return true; +} +/* + * it-IT validation function + * (Codice fiscale (TIN-IT), persons only) + * Verify name, birth date and codice catastale validity + * and calculate check character. + * Material not in DG-TAXUD document sourced from: + * `https://en.wikipedia.org/wiki/Italian_fiscal_code` + */ + + +function itItCheck(tin) { + // Capitalize and split characters into an array for further processing + var chars = tin.toUpperCase().split(''); // Check first and last name validity calling itItNameCheck() + + if (!itItNameCheck(chars.slice(0, 3))) { + return false; + } + + if (!itItNameCheck(chars.slice(3, 6))) { + return false; + } // Convert letters in number spaces back to numbers if any + + + var number_locations = [6, 7, 9, 10, 12, 13, 14]; + var number_replace = { + L: '0', + M: '1', + N: '2', + P: '3', + Q: '4', + R: '5', + S: '6', + T: '7', + U: '8', + V: '9' + }; + + for (var _i4 = 0, _number_locations = number_locations; _i4 < _number_locations.length; _i4++) { + var i = _number_locations[_i4]; + + if (chars[i] in number_replace) { + chars.splice(i, 1, number_replace[chars[i]]); + } + } // Extract month and day, and check date validity + + + var month_replace = { + A: '01', + B: '02', + C: '03', + D: '04', + E: '05', + H: '06', + L: '07', + M: '08', + P: '09', + R: '10', + S: '11', + T: '12' + }; + var month = month_replace[chars[8]]; + var day = parseInt(chars[9] + chars[10], 10); + + if (day > 40) { + day -= 40; + } + + if (day < 10) { + day = "0".concat(day); + } + + var date = "".concat(chars[6]).concat(chars[7], "/").concat(month, "/").concat(day); + + if (!isDate(date, 'YY/MM/DD')) { + return false; + } // Calculate check character by adding up even and odd characters as numbers + + + var checksum = 0; + + for (var _i5 = 1; _i5 < chars.length - 1; _i5 += 2) { + var char_to_int = parseInt(chars[_i5], 10); + + if (isNaN(char_to_int)) { + char_to_int = chars[_i5].charCodeAt(0) - 65; + } + + checksum += char_to_int; + } + + var odd_convert = { + // Maps of characters at odd places + A: 1, + B: 0, + C: 5, + D: 7, + E: 9, + F: 13, + G: 15, + H: 17, + I: 19, + J: 21, + K: 2, + L: 4, + M: 18, + N: 20, + O: 11, + P: 3, + Q: 6, + R: 8, + S: 12, + T: 14, + U: 16, + V: 10, + W: 22, + X: 25, + Y: 24, + Z: 23, + 0: 1, + 1: 0 + }; + + for (var _i6 = 0; _i6 < chars.length - 1; _i6 += 2) { + var _char_to_int = 0; + + if (chars[_i6] in odd_convert) { + _char_to_int = odd_convert[chars[_i6]]; + } else { + var multiplier = parseInt(chars[_i6], 10); + _char_to_int = 2 * multiplier + 1; + + if (multiplier > 4) { + _char_to_int += 2; + } + } + + checksum += _char_to_int; + } + + if (String.fromCharCode(65 + checksum % 26) !== chars[15]) { + return false; + } + + return true; +} +/* + * lv-LV validation function + * (Personas kods (PK), persons only) + * Check validity of birth date and calculate check (last) digit + * Support only for old format numbers (not starting with '32', issued before 2017/07/01) + * Material not in DG TAXUD document sourced from: + * `https://boot.ritakafija.lv/forums/index.php?/topic/88314-personas-koda-algoritms-%C4%8Deksumma/` + */ + + +function lvLvCheck(tin) { + tin = tin.replace(/\W/, ''); // Extract date from TIN + + var day = tin.slice(0, 2); + + if (day !== '32') { + // No date/checksum check if new format + var month = tin.slice(2, 4); + + if (month !== '00') { + // No date check if unknown month + var full_year = tin.slice(4, 6); + + switch (tin[6]) { + case '0': + full_year = "18".concat(full_year); + break; + + case '1': + full_year = "19".concat(full_year); + break; + + default: + full_year = "20".concat(full_year); + break; + } // Check date validity + + + var date = "".concat(full_year, "/").concat(tin.slice(2, 4), "/").concat(day); + + if (!isDate(date, 'YYYY/MM/DD')) { + return false; + } + } // Calculate check digit + + + var checksum = 1101; + var multip_lookup = [1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; + + for (var i = 0; i < tin.length - 1; i++) { + checksum -= parseInt(tin[i], 10) * multip_lookup[i]; + } + + return parseInt(tin[10], 10) === checksum % 11; + } + + return true; +} +/* + * mt-MT validation function + * (Identity Card Number or Unique Taxpayer Reference, persons/entities) + * Verify Identity Card Number structure (no other tests found) + */ + + +function mtMtCheck(tin) { + if (tin.length !== 9) { + // No tests for UTR + var chars = tin.toUpperCase().split(''); // Fill with zeros if smaller than proper + + while (chars.length < 8) { + chars.unshift(0); + } // Validate format according to last character + + + switch (tin[7]) { + case 'A': + case 'P': + if (parseInt(chars[6], 10) === 0) { + return false; + } + + break; + + default: + { + var first_part = parseInt(chars.join('').slice(0, 5), 10); + + if (first_part > 32000) { + return false; + } + + var second_part = parseInt(chars.join('').slice(5, 7), 10); + + if (first_part === second_part) { + return false; + } + } + } + } + + return true; +} +/* + * nl-NL validation function + * (Burgerservicenummer (BSN) or Rechtspersonen Samenwerkingsverbanden Informatie Nummer (RSIN), + * persons/entities respectively) + * Verify TIN validity by calculating check (last) digit (variant of MOD 11) + */ + + +function nlNlCheck(tin) { + return reverseMultiplyAndSum(tin.split('').slice(0, 8).map(function (a) { + return parseInt(a, 10); + }), 9) % 11 === parseInt(tin[8], 10); +} +/* + * pl-PL validation function + * (Powszechny Elektroniczny System Ewidencji Ludności (PESEL) + * or Numer identyfikacji podatkowej (NIP), persons/entities) + * Verify TIN validity by validating birth date (PESEL) and calculating check (last) digit + */ + + +function plPlCheck(tin) { + // NIP + if (tin.length === 10) { + // Calculate last digit by multiplying with lookup + var lookup = [6, 5, 7, 2, 3, 4, 5, 6, 7]; + var _checksum = 0; + + for (var i = 0; i < lookup.length; i++) { + _checksum += parseInt(tin[i], 10) * lookup[i]; + } + + _checksum %= 11; + + if (_checksum === 10) { + return false; + } + + return _checksum === parseInt(tin[9], 10); + } // PESEL + // Extract full year using month + + + var full_year = tin.slice(0, 2); + var month = parseInt(tin.slice(2, 4), 10); + + if (month > 80) { + full_year = "18".concat(full_year); + month -= 80; + } else if (month > 60) { + full_year = "22".concat(full_year); + month -= 60; + } else if (month > 40) { + full_year = "21".concat(full_year); + month -= 40; + } else if (month > 20) { + full_year = "20".concat(full_year); + month -= 20; + } else { + full_year = "19".concat(full_year); + } // Add leading zero to month if needed + + + if (month < 10) { + month = "0".concat(month); + } // Check date validity + + + var date = "".concat(full_year, "/").concat(month, "/").concat(tin.slice(4, 6)); + + if (!isDate(date, 'YYYY/MM/DD')) { + return false; + } // Calculate last digit by mulitplying with odd one-digit numbers except 5 + + + var checksum = 0; + var multiplier = 1; + + for (var _i7 = 0; _i7 < tin.length - 1; _i7++) { + checksum += parseInt(tin[_i7], 10) * multiplier % 10; + multiplier += 2; + + if (multiplier > 10) { + multiplier = 1; + } else if (multiplier === 5) { + multiplier += 2; + } + } + + checksum = 10 - checksum % 10; + return checksum === parseInt(tin[10], 10); +} +/* +* pt-BR validation function +* (Cadastro de Pessoas Físicas (CPF, persons) +* Cadastro Nacional de Pessoas Jurídicas (CNPJ, entities) +* Both inputs will be validated +*/ + + +function ptBrCheck(tin) { + if (tin.length === 11) { + var _sum; + + var remainder; + _sum = 0; + if ( // Reject known invalid CPFs + tin === '11111111111' || tin === '22222222222' || tin === '33333333333' || tin === '44444444444' || tin === '55555555555' || tin === '66666666666' || tin === '77777777777' || tin === '88888888888' || tin === '99999999999' || tin === '00000000000') return false; + + for (var i = 1; i <= 9; i++) { + _sum += parseInt(tin.substring(i - 1, i), 10) * (11 - i); + } + + remainder = _sum * 10 % 11; + if (remainder === 10) remainder = 0; + if (remainder !== parseInt(tin.substring(9, 10), 10)) return false; + _sum = 0; + + for (var _i8 = 1; _i8 <= 10; _i8++) { + _sum += parseInt(tin.substring(_i8 - 1, _i8), 10) * (12 - _i8); + } + + remainder = _sum * 10 % 11; + if (remainder === 10) remainder = 0; + if (remainder !== parseInt(tin.substring(10, 11), 10)) return false; + return true; + } + + if ( // Reject know invalid CNPJs + tin === '00000000000000' || tin === '11111111111111' || tin === '22222222222222' || tin === '33333333333333' || tin === '44444444444444' || tin === '55555555555555' || tin === '66666666666666' || tin === '77777777777777' || tin === '88888888888888' || tin === '99999999999999') { + return false; + } + + var length = tin.length - 2; + var identifiers = tin.substring(0, length); + var verificators = tin.substring(length); + var sum = 0; + var pos = length - 7; + + for (var _i9 = length; _i9 >= 1; _i9--) { + sum += identifiers.charAt(length - _i9) * pos; + pos -= 1; + + if (pos < 2) { + pos = 9; + } + } + + var result = sum % 11 < 2 ? 0 : 11 - sum % 11; + + if (result !== parseInt(verificators.charAt(0), 10)) { + return false; + } + + length += 1; + identifiers = tin.substring(0, length); + sum = 0; + pos = length - 7; + + for (var _i10 = length; _i10 >= 1; _i10--) { + sum += identifiers.charAt(length - _i10) * pos; + pos -= 1; + + if (pos < 2) { + pos = 9; + } + } + + result = sum % 11 < 2 ? 0 : 11 - sum % 11; + + if (result !== parseInt(verificators.charAt(1), 10)) { + return false; + } + + return true; +} +/* + * pt-PT validation function + * (Número de identificação fiscal (NIF), persons/entities) + * Verify TIN validity by calculating check (last) digit (variant of MOD 11) + */ + + +function ptPtCheck(tin) { + var checksum = 11 - reverseMultiplyAndSum(tin.split('').slice(0, 8).map(function (a) { + return parseInt(a, 10); + }), 9) % 11; + + if (checksum > 9) { + return parseInt(tin[8], 10) === 0; + } + + return checksum === parseInt(tin[8], 10); +} +/* + * ro-RO validation function + * (Cod Numeric Personal (CNP) or Cod de înregistrare fiscală (CIF), + * persons only) + * Verify CNP validity by calculating check (last) digit (test not found for CIF) + * Material not in DG TAXUD document sourced from: + * `https://en.wikipedia.org/wiki/National_identification_number#Romania` + */ + + +function roRoCheck(tin) { + if (tin.slice(0, 4) !== '9000') { + // No test found for this format + // Extract full year using century digit if possible + var full_year = tin.slice(1, 3); + + switch (tin[0]) { + case '1': + case '2': + full_year = "19".concat(full_year); + break; + + case '3': + case '4': + full_year = "18".concat(full_year); + break; + + case '5': + case '6': + full_year = "20".concat(full_year); + break; + + default: + } // Check date validity + + + var date = "".concat(full_year, "/").concat(tin.slice(3, 5), "/").concat(tin.slice(5, 7)); + + if (date.length === 8) { + if (!isDate(date, 'YY/MM/DD')) { + return false; + } + } else if (!isDate(date, 'YYYY/MM/DD')) { + return false; + } // Calculate check digit + + + var digits = tin.split('').map(function (a) { + return parseInt(a, 10); + }); + var multipliers = [2, 7, 9, 1, 4, 6, 3, 5, 8, 2, 7, 9]; + var checksum = 0; + + for (var i = 0; i < multipliers.length; i++) { + checksum += digits[i] * multipliers[i]; + } + + if (checksum % 11 === 10) { + return digits[12] === 1; + } + + return digits[12] === checksum % 11; + } + + return true; +} +/* + * sk-SK validation function + * (Rodné číslo (RČ) or bezvýznamové identifikačné číslo (BIČ), persons only) + * Checks validity of pre-1954 birth numbers (rodné číslo) only + * Due to the introduction of the pseudo-random BIČ it is not possible to test + * post-1954 birth numbers without knowing whether they are BIČ or RČ beforehand + */ + + +function skSkCheck(tin) { + if (tin.length === 9) { + tin = tin.replace(/\W/, ''); + + if (tin.slice(6) === '000') { + return false; + } // Three-zero serial not assigned before 1954 + // Extract full year from TIN length + + + var full_year = parseInt(tin.slice(0, 2), 10); + + if (full_year > 53) { + return false; + } + + if (full_year < 10) { + full_year = "190".concat(full_year); + } else { + full_year = "19".concat(full_year); + } // Extract month from TIN and normalize + + + var month = parseInt(tin.slice(2, 4), 10); + + if (month > 50) { + month -= 50; + } + + if (month < 10) { + month = "0".concat(month); + } // Check date validity + + + var date = "".concat(full_year, "/").concat(month, "/").concat(tin.slice(4, 6)); + + if (!isDate(date, 'YYYY/MM/DD')) { + return false; + } + } + + return true; +} +/* + * sl-SI validation function + * (Davčna številka, persons/entities) + * Verify TIN validity by calculating check (last) digit (variant of MOD 11) + */ + + +function slSiCheck(tin) { + var checksum = 11 - reverseMultiplyAndSum(tin.split('').slice(0, 7).map(function (a) { + return parseInt(a, 10); + }), 8) % 11; + + if (checksum === 10) { + return parseInt(tin[7], 10) === 0; + } + + return checksum === parseInt(tin[7], 10); +} +/* + * sv-SE validation function + * (Personnummer or samordningsnummer, persons only) + * Checks validity of birth date and calls luhnCheck() to validate check (last) digit + */ + + +function svSeCheck(tin) { + // Make copy of TIN and normalize to two-digit year form + var tin_copy = tin.slice(0); + + if (tin.length > 11) { + tin_copy = tin_copy.slice(2); + } // Extract date of birth + + + var full_year = ''; + var month = tin_copy.slice(2, 4); + var day = parseInt(tin_copy.slice(4, 6), 10); + + if (tin.length > 11) { + full_year = tin.slice(0, 4); + } else { + full_year = tin.slice(0, 2); + + if (tin.length === 11 && day < 60) { + // Extract full year from centenarian symbol + // Should work just fine until year 10000 or so + var current_year = new Date().getFullYear().toString(); + var current_century = parseInt(current_year.slice(0, 2), 10); + current_year = parseInt(current_year, 10); + + if (tin[6] === '-') { + if (parseInt("".concat(current_century).concat(full_year), 10) > current_year) { + full_year = "".concat(current_century - 1).concat(full_year); + } else { + full_year = "".concat(current_century).concat(full_year); + } + } else { + full_year = "".concat(current_century - 1).concat(full_year); + + if (current_year - parseInt(full_year, 10) < 100) { + return false; + } + } + } + } // Normalize day and check date validity + + + if (day > 60) { + day -= 60; + } + + if (day < 10) { + day = "0".concat(day); + } + + var date = "".concat(full_year, "/").concat(month, "/").concat(day); + + if (date.length === 8) { + if (!isDate(date, 'YY/MM/DD')) { + return false; + } + } else if (!isDate(date, 'YYYY/MM/DD')) { + return false; + } + + return luhnCheck(tin.replace(/\W/, '')); +} // Locale lookup objects + +/* + * Tax id regex formats for various locales + * + * Where not explicitly specified in DG-TAXUD document both + * uppercase and lowercase letters are acceptable. + */ + + +var taxIdFormat = { + 'bg-BG': /^\d{10}$/, + 'cs-CZ': /^\d{6}\/{0,1}\d{3,4}$/, + 'de-AT': /^\d{9}$/, + 'de-DE': /^[1-9]\d{10}$/, + 'dk-DK': /^\d{6}-{0,1}\d{4}$/, + 'el-CY': /^[09]\d{7}[A-Z]$/, + 'el-GR': /^([0-4]|[7-9])\d{8}$/, + 'en-GB': /^\d{10}$|^(?!GB|NK|TN|ZZ)(?![DFIQUV])[A-Z](?![DFIQUVO])[A-Z]\d{6}[ABCD ]$/i, + 'en-IE': /^\d{7}[A-W][A-IW]{0,1}$/i, + 'en-US': /^\d{2}[- ]{0,1}\d{7}$/, + 'es-ES': /^(\d{0,8}|[XYZKLM]\d{7})[A-HJ-NP-TV-Z]$/i, + 'et-EE': /^[1-6]\d{6}(00[1-9]|0[1-9][0-9]|[1-6][0-9]{2}|70[0-9]|710)\d$/, + 'fi-FI': /^\d{6}[-+A]\d{3}[0-9A-FHJ-NPR-Y]$/i, + 'fr-BE': /^\d{11}$/, + 'fr-FR': /^[0-3]\d{12}$|^[0-3]\d\s\d{2}(\s\d{3}){3}$/, + // Conforms both to official spec and provided example + 'fr-LU': /^\d{13}$/, + 'hr-HR': /^\d{11}$/, + 'hu-HU': /^8\d{9}$/, + 'it-IT': /^[A-Z]{6}[L-NP-V0-9]{2}[A-EHLMPRST][L-NP-V0-9]{2}[A-ILMZ][L-NP-V0-9]{3}[A-Z]$/i, + 'lv-LV': /^\d{6}-{0,1}\d{5}$/, + // Conforms both to DG TAXUD spec and original research + 'mt-MT': /^\d{3,7}[APMGLHBZ]$|^([1-8])\1\d{7}$/i, + 'nl-NL': /^\d{9}$/, + 'pl-PL': /^\d{10,11}$/, + 'pt-BR': /(?:^\d{11}$)|(?:^\d{14}$)/, + 'pt-PT': /^\d{9}$/, + 'ro-RO': /^\d{13}$/, + 'sk-SK': /^\d{6}\/{0,1}\d{3,4}$/, + 'sl-SI': /^[1-9]\d{7}$/, + 'sv-SE': /^(\d{6}[-+]{0,1}\d{4}|(18|19|20)\d{6}[-+]{0,1}\d{4})$/ +}; // taxIdFormat locale aliases + +taxIdFormat['lb-LU'] = taxIdFormat['fr-LU']; +taxIdFormat['lt-LT'] = taxIdFormat['et-EE']; +taxIdFormat['nl-BE'] = taxIdFormat['fr-BE']; // Algorithmic tax id check functions for various locales + +var taxIdCheck = { + 'bg-BG': bgBgCheck, + 'cs-CZ': csCzCheck, + 'de-AT': deAtCheck, + 'de-DE': deDeCheck, + 'dk-DK': dkDkCheck, + 'el-CY': elCyCheck, + 'el-GR': elGrCheck, + 'en-IE': enIeCheck, + 'en-US': enUsCheck, + 'es-ES': esEsCheck, + 'et-EE': etEeCheck, + 'fi-FI': fiFiCheck, + 'fr-BE': frBeCheck, + 'fr-FR': frFrCheck, + 'fr-LU': frLuCheck, + 'hr-HR': hrHrCheck, + 'hu-HU': huHuCheck, + 'it-IT': itItCheck, + 'lv-LV': lvLvCheck, + 'mt-MT': mtMtCheck, + 'nl-NL': nlNlCheck, + 'pl-PL': plPlCheck, + 'pt-BR': ptBrCheck, + 'pt-PT': ptPtCheck, + 'ro-RO': roRoCheck, + 'sk-SK': skSkCheck, + 'sl-SI': slSiCheck, + 'sv-SE': svSeCheck +}; // taxIdCheck locale aliases + +taxIdCheck['lb-LU'] = taxIdCheck['fr-LU']; +taxIdCheck['lt-LT'] = taxIdCheck['et-EE']; +taxIdCheck['nl-BE'] = taxIdCheck['fr-BE']; // Regexes for locales where characters should be omitted before checking format + +var allsymbols = /[-\\\/!@#$%\^&\*\(\)\+\=\[\]]+/g; +var sanitizeRegexes = { + 'de-AT': allsymbols, + 'de-DE': /[\/\\]/g, + 'fr-BE': allsymbols +}; // sanitizeRegexes locale aliases + +sanitizeRegexes['nl-BE'] = sanitizeRegexes['fr-BE']; +/* + * Validator function + * Return true if the passed string is a valid tax identification number + * for the specified locale. + * Throw an error exception if the locale is not supported. + */ + +function isTaxID(str) { + var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US'; + assertString(str); // Copy TIN to avoid replacement if sanitized + + var strcopy = str.slice(0); + + if (locale in taxIdFormat) { + if (locale in sanitizeRegexes) { + strcopy = strcopy.replace(sanitizeRegexes[locale], ''); + } + + if (!taxIdFormat[locale].test(strcopy)) { + return false; + } + + if (locale in taxIdCheck) { + return taxIdCheck[locale](strcopy); + } // Fallthrough; not all locales have algorithmic checks + + + return true; + } + + throw new Error("Invalid locale '".concat(locale, "'")); +} + +/* eslint-disable max-len */ + +var phones = { + 'am-AM': /^(\+?374|0)((10|[9|7][0-9])\d{6}$|[2-4]\d{7}$)/, + 'ar-AE': /^((\+?971)|0)?5[024568]\d{7}$/, + 'ar-BH': /^(\+?973)?(3|6)\d{7}$/, + 'ar-DZ': /^(\+?213|0)(5|6|7)\d{8}$/, + 'ar-LB': /^(\+?961)?((3|81)\d{6}|7\d{7})$/, + 'ar-EG': /^((\+?20)|0)?1[0125]\d{8}$/, + 'ar-IQ': /^(\+?964|0)?7[0-9]\d{8}$/, + 'ar-JO': /^(\+?962|0)?7[789]\d{7}$/, + 'ar-KW': /^(\+?965)[569]\d{7}$/, + 'ar-LY': /^((\+?218)|0)?(9[1-6]\d{7}|[1-8]\d{7,9})$/, + 'ar-MA': /^(?:(?:\+|00)212|0)[5-7]\d{8}$/, + 'ar-OM': /^((\+|00)968)?(9[1-9])\d{6}$/, + 'ar-PS': /^(\+?970|0)5[6|9](\d{7})$/, + 'ar-SA': /^(!?(\+?966)|0)?5\d{8}$/, + 'ar-SY': /^(!?(\+?963)|0)?9\d{8}$/, + 'ar-TN': /^(\+?216)?[2459]\d{7}$/, + 'az-AZ': /^(\+994|0)(5[015]|7[07]|99)\d{7}$/, + 'bs-BA': /^((((\+|00)3876)|06))((([0-3]|[5-6])\d{6})|(4\d{7}))$/, + 'be-BY': /^(\+?375)?(24|25|29|33|44)\d{7}$/, + 'bg-BG': /^(\+?359|0)?8[789]\d{7}$/, + 'bn-BD': /^(\+?880|0)1[13456789][0-9]{8}$/, + 'ca-AD': /^(\+376)?[346]\d{5}$/, + 'cs-CZ': /^(\+?420)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/, + 'da-DK': /^(\+?45)?\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{2}$/, + 'de-DE': /^((\+49|0)[1|3])([0|5][0-45-9]\d|6([23]|0\d?)|7([0-57-9]|6\d))\d{7,9}$/, + 'de-AT': /^(\+43|0)\d{1,4}\d{3,12}$/, + 'de-CH': /^(\+41|0)([1-9])\d{1,9}$/, + 'de-LU': /^(\+352)?((6\d1)\d{6})$/, + 'dv-MV': /^(\+?960)?(7[2-9]|91|9[3-9])\d{7}$/, + 'el-GR': /^(\+?30|0)?(69\d{8})$/, + 'en-AU': /^(\+?61|0)4\d{8}$/, + 'en-BM': /^(\+?1)?441(((3|7)\d{6}$)|(5[0-3][0-9]\d{4}$)|(59\d{5}))/, + 'en-GB': /^(\+?44|0)7\d{9}$/, + 'en-GG': /^(\+?44|0)1481\d{6}$/, + 'en-GH': /^(\+233|0)(20|50|24|54|27|57|26|56|23|28|55|59)\d{7}$/, + 'en-GY': /^(\+592|0)6\d{6}$/, + 'en-HK': /^(\+?852[-\s]?)?[456789]\d{3}[-\s]?\d{4}$/, + 'en-MO': /^(\+?853[-\s]?)?[6]\d{3}[-\s]?\d{4}$/, + 'en-IE': /^(\+?353|0)8[356789]\d{7}$/, + 'en-IN': /^(\+?91|0)?[6789]\d{9}$/, + 'en-KE': /^(\+?254|0)(7|1)\d{8}$/, + 'en-KI': /^((\+686|686)?)?( )?((6|7)(2|3|8)[0-9]{6})$/, + 'en-MT': /^(\+?356|0)?(99|79|77|21|27|22|25)[0-9]{6}$/, + 'en-MU': /^(\+?230|0)?\d{8}$/, + 'en-NA': /^(\+?264|0)(6|8)\d{7}$/, + 'en-NG': /^(\+?234|0)?[789]\d{9}$/, + 'en-NZ': /^(\+?64|0)[28]\d{7,9}$/, + 'en-PK': /^((00|\+)?92|0)3[0-6]\d{8}$/, + 'en-PH': /^(09|\+639)\d{9}$/, + 'en-RW': /^(\+?250|0)?[7]\d{8}$/, + 'en-SG': /^(\+65)?[3689]\d{7}$/, + 'en-SL': /^(\+?232|0)\d{8}$/, + 'en-TZ': /^(\+?255|0)?[67]\d{8}$/, + 'en-UG': /^(\+?256|0)?[7]\d{8}$/, + 'en-US': /^((\+1|1)?( |-)?)?(\([2-9][0-9]{2}\)|[2-9][0-9]{2})( |-)?([2-9][0-9]{2}( |-)?[0-9]{4})$/, + 'en-ZA': /^(\+?27|0)\d{9}$/, + 'en-ZM': /^(\+?26)?09[567]\d{7}$/, + 'en-ZW': /^(\+263)[0-9]{9}$/, + 'en-BW': /^(\+?267)?(7[1-8]{1})\d{6}$/, + 'es-AR': /^\+?549(11|[2368]\d)\d{8}$/, + 'es-BO': /^(\+?591)?(6|7)\d{7}$/, + 'es-CO': /^(\+?57)?3(0(0|1|2|4|5)|1\d|2[0-4]|5(0|1))\d{7}$/, + 'es-CL': /^(\+?56|0)[2-9]\d{1}\d{7}$/, + 'es-CR': /^(\+506)?[2-8]\d{7}$/, + 'es-CU': /^(\+53|0053)?5\d{7}/, + 'es-DO': /^(\+?1)?8[024]9\d{7}$/, + 'es-HN': /^(\+?504)?[9|8]\d{7}$/, + 'es-EC': /^(\+?593|0)([2-7]|9[2-9])\d{7}$/, + 'es-ES': /^(\+?34)?[6|7]\d{8}$/, + 'es-PE': /^(\+?51)?9\d{8}$/, + 'es-MX': /^(\+?52)?(1|01)?\d{10,11}$/, + 'es-PA': /^(\+?507)\d{7,8}$/, + 'es-PY': /^(\+?595|0)9[9876]\d{7}$/, + 'es-SV': /^(\+?503)?[67]\d{7}$/, + 'es-UY': /^(\+598|0)9[1-9][\d]{6}$/, + 'es-VE': /^(\+?58)?(2|4)\d{9}$/, + 'et-EE': /^(\+?372)?\s?(5|8[1-4])\s?([0-9]\s?){6,7}$/, + 'fa-IR': /^(\+?98[\-\s]?|0)9[0-39]\d[\-\s]?\d{3}[\-\s]?\d{4}$/, + 'fi-FI': /^(\+?358|0)\s?(4(0|1|2|4|5|6)?|50)\s?(\d\s?){4,8}\d$/, + 'fj-FJ': /^(\+?679)?\s?\d{3}\s?\d{4}$/, + 'fo-FO': /^(\+?298)?\s?\d{2}\s?\d{2}\s?\d{2}$/, + 'fr-BF': /^(\+226|0)[67]\d{7}$/, + 'fr-CM': /^(\+?237)6[0-9]{8}$/, + 'fr-FR': /^(\+?33|0)[67]\d{8}$/, + 'fr-GF': /^(\+?594|0|00594)[67]\d{8}$/, + 'fr-GP': /^(\+?590|0|00590)[67]\d{8}$/, + 'fr-MQ': /^(\+?596|0|00596)[67]\d{8}$/, + 'fr-PF': /^(\+?689)?8[789]\d{6}$/, + 'fr-RE': /^(\+?262|0|00262)[67]\d{8}$/, + 'he-IL': /^(\+972|0)([23489]|5[012345689]|77)[1-9]\d{6}$/, + 'hu-HU': /^(\+?36|06)(20|30|31|50|70)\d{7}$/, + 'id-ID': /^(\+?62|0)8(1[123456789]|2[1238]|3[1238]|5[12356789]|7[78]|9[56789]|8[123456789])([\s?|\d]{5,11})$/, + 'it-IT': /^(\+?39)?\s?3\d{2} ?\d{6,7}$/, + 'it-SM': /^((\+378)|(0549)|(\+390549)|(\+3780549))?6\d{5,9}$/, + 'ja-JP': /^(\+81[ \-]?(\(0\))?|0)[6789]0[ \-]?\d{4}[ \-]?\d{4}$/, + 'ka-GE': /^(\+?995)?(5|79)\d{7}$/, + 'kk-KZ': /^(\+?7|8)?7\d{9}$/, + 'kl-GL': /^(\+?299)?\s?\d{2}\s?\d{2}\s?\d{2}$/, + 'ko-KR': /^((\+?82)[ \-]?)?0?1([0|1|6|7|8|9]{1})[ \-]?\d{3,4}[ \-]?\d{4}$/, + 'lt-LT': /^(\+370|8)\d{8}$/, + 'lv-LV': /^(\+?371)2\d{7}$/, + 'ms-MY': /^(\+?6?01){1}(([0145]{1}(\-|\s)?\d{7,8})|([236789]{1}(\s|\-)?\d{7}))$/, + 'mz-MZ': /^(\+?258)?8[234567]\d{7}$/, + 'nb-NO': /^(\+?47)?[49]\d{7}$/, + 'ne-NP': /^(\+?977)?9[78]\d{8}$/, + 'nl-BE': /^(\+?32|0)4\d{8}$/, + 'nl-NL': /^(((\+|00)?31\(0\))|((\+|00)?31)|0)6{1}\d{8}$/, + 'nn-NO': /^(\+?47)?[49]\d{7}$/, + 'pl-PL': /^(\+?48)? ?[5-8]\d ?\d{3} ?\d{2} ?\d{2}$/, + 'pt-BR': /^((\+?55\ ?[1-9]{2}\ ?)|(\+?55\ ?\([1-9]{2}\)\ ?)|(0[1-9]{2}\ ?)|(\([1-9]{2}\)\ ?)|([1-9]{2}\ ?))((\d{4}\-?\d{4})|(9[2-9]{1}\d{3}\-?\d{4}))$/, + 'pt-PT': /^(\+?351)?9[1236]\d{7}$/, + 'pt-AO': /^(\+244)\d{9}$/, + 'ro-RO': /^(\+?4?0)\s?7\d{2}(\/|\s|\.|\-)?\d{3}(\s|\.|\-)?\d{3}$/, + 'ru-RU': /^(\+?7|8)?9\d{9}$/, + 'si-LK': /^(?:0|94|\+94)?(7(0|1|2|4|5|6|7|8)( |-)?)\d{7}$/, + 'sl-SI': /^(\+386\s?|0)(\d{1}\s?\d{3}\s?\d{2}\s?\d{2}|\d{2}\s?\d{3}\s?\d{3})$/, + 'sk-SK': /^(\+?421)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/, + 'sq-AL': /^(\+355|0)6[789]\d{6}$/, + 'sr-RS': /^(\+3816|06)[- \d]{5,9}$/, + 'sv-SE': /^(\+?46|0)[\s\-]?7[\s\-]?[02369]([\s\-]?\d){7}$/, + 'tg-TJ': /^(\+?992)?[5][5]\d{7}$/, + 'th-TH': /^(\+66|66|0)\d{9}$/, + 'tr-TR': /^(\+?90|0)?5\d{9}$/, + 'tk-TM': /^(\+993|993|8)\d{8}$/, + 'uk-UA': /^(\+?38|8)?0\d{9}$/, + 'uz-UZ': /^(\+?998)?(6[125-79]|7[1-69]|88|9\d)\d{7}$/, + 'vi-VN': /^((\+?84)|0)((3([2-9]))|(5([25689]))|(7([0|6-9]))|(8([1-9]))|(9([0-9])))([0-9]{7})$/, + 'zh-CN': /^((\+|00)86)?(1[3-9]|9[28])\d{9}$/, + 'zh-TW': /^(\+?886\-?|0)?9\d{8}$/, + 'dz-BT': /^(\+?975|0)?(17|16|77|02)\d{6}$/ +}; +/* eslint-enable max-len */ +// aliases + +phones['en-CA'] = phones['en-US']; +phones['fr-CA'] = phones['en-CA']; +phones['fr-BE'] = phones['nl-BE']; +phones['zh-HK'] = phones['en-HK']; +phones['zh-MO'] = phones['en-MO']; +phones['ga-IE'] = phones['en-IE']; +phones['fr-CH'] = phones['de-CH']; +phones['it-CH'] = phones['fr-CH']; +function isMobilePhone(str, locale, options) { + assertString(str); + + if (options && options.strictMode && !str.startsWith('+')) { + return false; + } + + if (Array.isArray(locale)) { + return locale.some(function (key) { + // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes + // istanbul ignore else + if (phones.hasOwnProperty(key)) { + var phone = phones[key]; + + if (phone.test(str)) { + return true; + } + } + + return false; + }); + } else if (locale in phones) { + return phones[locale].test(str); // alias falsey locale as 'any' + } else if (!locale || locale === 'any') { + for (var key in phones) { + // istanbul ignore else + if (phones.hasOwnProperty(key)) { + var phone = phones[key]; + + if (phone.test(str)) { + return true; + } + } + } + + return false; + } + + throw new Error("Invalid locale '".concat(locale, "'")); +} +var locales$4 = Object.keys(phones); + +var eth = /^(0x)[0-9a-f]{40}$/i; +function isEthereumAddress(str) { + assertString(str); + return eth.test(str); +} + +function currencyRegex(options) { + var decimal_digits = "\\d{".concat(options.digits_after_decimal[0], "}"); + options.digits_after_decimal.forEach(function (digit, index) { + if (index !== 0) decimal_digits = "".concat(decimal_digits, "|\\d{").concat(digit, "}"); + }); + var symbol = "(".concat(options.symbol.replace(/\W/, function (m) { + return "\\".concat(m); + }), ")").concat(options.require_symbol ? '' : '?'), + negative = '-?', + whole_dollar_amount_without_sep = '[1-9]\\d*', + whole_dollar_amount_with_sep = "[1-9]\\d{0,2}(\\".concat(options.thousands_separator, "\\d{3})*"), + valid_whole_dollar_amounts = ['0', whole_dollar_amount_without_sep, whole_dollar_amount_with_sep], + whole_dollar_amount = "(".concat(valid_whole_dollar_amounts.join('|'), ")?"), + decimal_amount = "(\\".concat(options.decimal_separator, "(").concat(decimal_digits, "))").concat(options.require_decimal ? '' : '?'); + var pattern = whole_dollar_amount + (options.allow_decimal || options.require_decimal ? decimal_amount : ''); // default is negative sign before symbol, but there are two other options (besides parens) + + if (options.allow_negatives && !options.parens_for_negatives) { + if (options.negative_sign_after_digits) { + pattern += negative; + } else if (options.negative_sign_before_digits) { + pattern = negative + pattern; + } + } // South African Rand, for example, uses R 123 (space) and R-123 (no space) + + + if (options.allow_negative_sign_placeholder) { + pattern = "( (?!\\-))?".concat(pattern); + } else if (options.allow_space_after_symbol) { + pattern = " ?".concat(pattern); + } else if (options.allow_space_after_digits) { + pattern += '( (?!$))?'; + } + + if (options.symbol_after_digits) { + pattern += symbol; + } else { + pattern = symbol + pattern; + } + + if (options.allow_negatives) { + if (options.parens_for_negatives) { + pattern = "(\\(".concat(pattern, "\\)|").concat(pattern, ")"); + } else if (!(options.negative_sign_before_digits || options.negative_sign_after_digits)) { + pattern = negative + pattern; + } + } // ensure there's a dollar and/or decimal amount, and that + // it doesn't start with a space or a negative sign followed by a space + + + return new RegExp("^(?!-? )(?=.*\\d)".concat(pattern, "$")); +} + +var default_currency_options = { + symbol: '$', + require_symbol: false, + allow_space_after_symbol: false, + symbol_after_digits: false, + allow_negatives: true, + parens_for_negatives: false, + negative_sign_before_digits: false, + negative_sign_after_digits: false, + allow_negative_sign_placeholder: false, + thousands_separator: ',', + decimal_separator: '.', + allow_decimal: true, + require_decimal: false, + digits_after_decimal: [2], + allow_space_after_digits: false +}; +function isCurrency(str, options) { + assertString(str); + options = merge(options, default_currency_options); + return currencyRegex(options).test(str); +} + +var bech32 = /^(bc1)[a-z0-9]{25,39}$/; +var base58 = /^(1|3)[A-HJ-NP-Za-km-z1-9]{25,39}$/; +function isBtcAddress(str) { + assertString(str); // check for bech32 + + if (str.startsWith('bc1')) { + return bech32.test(str); + } + + return base58.test(str); +} + +/* eslint-disable max-len */ +// from http://goo.gl/0ejHHW + +var iso8601 = /^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/; // same as above, except with a strict 'T' separator between date and time + +var iso8601StrictSeparator = /^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T]((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/; +/* eslint-enable max-len */ + +var isValidDate = function isValidDate(str) { + // str must have passed the ISO8601 check + // this check is meant to catch invalid dates + // like 2009-02-31 + // first check for ordinal dates + var ordinalMatch = str.match(/^(\d{4})-?(\d{3})([ T]{1}\.*|$)/); + + if (ordinalMatch) { + var oYear = Number(ordinalMatch[1]); + var oDay = Number(ordinalMatch[2]); // if is leap year + + if (oYear % 4 === 0 && oYear % 100 !== 0 || oYear % 400 === 0) return oDay <= 366; + return oDay <= 365; + } + + var match = str.match(/(\d{4})-?(\d{0,2})-?(\d*)/).map(Number); + var year = match[1]; + var month = match[2]; + var day = match[3]; + var monthString = month ? "0".concat(month).slice(-2) : month; + var dayString = day ? "0".concat(day).slice(-2) : day; // create a date object and compare + + var d = new Date("".concat(year, "-").concat(monthString || '01', "-").concat(dayString || '01')); + + if (month && day) { + return d.getUTCFullYear() === year && d.getUTCMonth() + 1 === month && d.getUTCDate() === day; + } + + return true; +}; + +function isISO8601(str) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + assertString(str); + var check = options.strictSeparator ? iso8601StrictSeparator.test(str) : iso8601.test(str); + if (check && options.strict) return isValidDate(str); + return check; +} + +/* Based on https://tools.ietf.org/html/rfc3339#section-5.6 */ + +var dateFullYear = /[0-9]{4}/; +var dateMonth = /(0[1-9]|1[0-2])/; +var dateMDay = /([12]\d|0[1-9]|3[01])/; +var timeHour = /([01][0-9]|2[0-3])/; +var timeMinute = /[0-5][0-9]/; +var timeSecond = /([0-5][0-9]|60)/; +var timeSecFrac = /(\.[0-9]+)?/; +var timeNumOffset = new RegExp("[-+]".concat(timeHour.source, ":").concat(timeMinute.source)); +var timeOffset = new RegExp("([zZ]|".concat(timeNumOffset.source, ")")); +var partialTime = new RegExp("".concat(timeHour.source, ":").concat(timeMinute.source, ":").concat(timeSecond.source).concat(timeSecFrac.source)); +var fullDate = new RegExp("".concat(dateFullYear.source, "-").concat(dateMonth.source, "-").concat(dateMDay.source)); +var fullTime = new RegExp("".concat(partialTime.source).concat(timeOffset.source)); +var rfc3339 = new RegExp("^".concat(fullDate.source, "[ tT]").concat(fullTime.source, "$")); +function isRFC3339(str) { + assertString(str); + return rfc3339.test(str); +} + +var validISO31661Alpha3CountriesCodes = new Set(['AFG', 'ALA', 'ALB', 'DZA', 'ASM', 'AND', 'AGO', 'AIA', 'ATA', 'ATG', 'ARG', 'ARM', 'ABW', 'AUS', 'AUT', 'AZE', 'BHS', 'BHR', 'BGD', 'BRB', 'BLR', 'BEL', 'BLZ', 'BEN', 'BMU', 'BTN', 'BOL', 'BES', 'BIH', 'BWA', 'BVT', 'BRA', 'IOT', 'BRN', 'BGR', 'BFA', 'BDI', 'KHM', 'CMR', 'CAN', 'CPV', 'CYM', 'CAF', 'TCD', 'CHL', 'CHN', 'CXR', 'CCK', 'COL', 'COM', 'COG', 'COD', 'COK', 'CRI', 'CIV', 'HRV', 'CUB', 'CUW', 'CYP', 'CZE', 'DNK', 'DJI', 'DMA', 'DOM', 'ECU', 'EGY', 'SLV', 'GNQ', 'ERI', 'EST', 'ETH', 'FLK', 'FRO', 'FJI', 'FIN', 'FRA', 'GUF', 'PYF', 'ATF', 'GAB', 'GMB', 'GEO', 'DEU', 'GHA', 'GIB', 'GRC', 'GRL', 'GRD', 'GLP', 'GUM', 'GTM', 'GGY', 'GIN', 'GNB', 'GUY', 'HTI', 'HMD', 'VAT', 'HND', 'HKG', 'HUN', 'ISL', 'IND', 'IDN', 'IRN', 'IRQ', 'IRL', 'IMN', 'ISR', 'ITA', 'JAM', 'JPN', 'JEY', 'JOR', 'KAZ', 'KEN', 'KIR', 'PRK', 'KOR', 'KWT', 'KGZ', 'LAO', 'LVA', 'LBN', 'LSO', 'LBR', 'LBY', 'LIE', 'LTU', 'LUX', 'MAC', 'MKD', 'MDG', 'MWI', 'MYS', 'MDV', 'MLI', 'MLT', 'MHL', 'MTQ', 'MRT', 'MUS', 'MYT', 'MEX', 'FSM', 'MDA', 'MCO', 'MNG', 'MNE', 'MSR', 'MAR', 'MOZ', 'MMR', 'NAM', 'NRU', 'NPL', 'NLD', 'NCL', 'NZL', 'NIC', 'NER', 'NGA', 'NIU', 'NFK', 'MNP', 'NOR', 'OMN', 'PAK', 'PLW', 'PSE', 'PAN', 'PNG', 'PRY', 'PER', 'PHL', 'PCN', 'POL', 'PRT', 'PRI', 'QAT', 'REU', 'ROU', 'RUS', 'RWA', 'BLM', 'SHN', 'KNA', 'LCA', 'MAF', 'SPM', 'VCT', 'WSM', 'SMR', 'STP', 'SAU', 'SEN', 'SRB', 'SYC', 'SLE', 'SGP', 'SXM', 'SVK', 'SVN', 'SLB', 'SOM', 'ZAF', 'SGS', 'SSD', 'ESP', 'LKA', 'SDN', 'SUR', 'SJM', 'SWZ', 'SWE', 'CHE', 'SYR', 'TWN', 'TJK', 'TZA', 'THA', 'TLS', 'TGO', 'TKL', 'TON', 'TTO', 'TUN', 'TUR', 'TKM', 'TCA', 'TUV', 'UGA', 'UKR', 'ARE', 'GBR', 'USA', 'UMI', 'URY', 'UZB', 'VUT', 'VEN', 'VNM', 'VGB', 'VIR', 'WLF', 'ESH', 'YEM', 'ZMB', 'ZWE']); +function isISO31661Alpha3(str) { + assertString(str); + return validISO31661Alpha3CountriesCodes.has(str.toUpperCase()); +} + +var validISO4217CurrencyCodes = new Set(['AED', 'AFN', 'ALL', 'AMD', 'ANG', 'AOA', 'ARS', 'AUD', 'AWG', 'AZN', 'BAM', 'BBD', 'BDT', 'BGN', 'BHD', 'BIF', 'BMD', 'BND', 'BOB', 'BOV', 'BRL', 'BSD', 'BTN', 'BWP', 'BYN', 'BZD', 'CAD', 'CDF', 'CHE', 'CHF', 'CHW', 'CLF', 'CLP', 'CNY', 'COP', 'COU', 'CRC', 'CUC', 'CUP', 'CVE', 'CZK', 'DJF', 'DKK', 'DOP', 'DZD', 'EGP', 'ERN', 'ETB', 'EUR', 'FJD', 'FKP', 'GBP', 'GEL', 'GHS', 'GIP', 'GMD', 'GNF', 'GTQ', 'GYD', 'HKD', 'HNL', 'HRK', 'HTG', 'HUF', 'IDR', 'ILS', 'INR', 'IQD', 'IRR', 'ISK', 'JMD', 'JOD', 'JPY', 'KES', 'KGS', 'KHR', 'KMF', 'KPW', 'KRW', 'KWD', 'KYD', 'KZT', 'LAK', 'LBP', 'LKR', 'LRD', 'LSL', 'LYD', 'MAD', 'MDL', 'MGA', 'MKD', 'MMK', 'MNT', 'MOP', 'MRU', 'MUR', 'MVR', 'MWK', 'MXN', 'MXV', 'MYR', 'MZN', 'NAD', 'NGN', 'NIO', 'NOK', 'NPR', 'NZD', 'OMR', 'PAB', 'PEN', 'PGK', 'PHP', 'PKR', 'PLN', 'PYG', 'QAR', 'RON', 'RSD', 'RUB', 'RWF', 'SAR', 'SBD', 'SCR', 'SDG', 'SEK', 'SGD', 'SHP', 'SLL', 'SOS', 'SRD', 'SSP', 'STN', 'SVC', 'SYP', 'SZL', 'THB', 'TJS', 'TMT', 'TND', 'TOP', 'TRY', 'TTD', 'TWD', 'TZS', 'UAH', 'UGX', 'USD', 'USN', 'UYI', 'UYU', 'UYW', 'UZS', 'VES', 'VND', 'VUV', 'WST', 'XAF', 'XAG', 'XAU', 'XBA', 'XBB', 'XBC', 'XBD', 'XCD', 'XDR', 'XOF', 'XPD', 'XPF', 'XPT', 'XSU', 'XTS', 'XUA', 'XXX', 'YER', 'ZAR', 'ZMW', 'ZWL']); +function isISO4217(str) { + assertString(str); + return validISO4217CurrencyCodes.has(str.toUpperCase()); +} + +var base32 = /^[A-Z2-7]+=*$/; +function isBase32(str) { + assertString(str); + var len = str.length; + + if (len % 8 === 0 && base32.test(str)) { + return true; + } + + return false; +} + +var base58Reg = /^[A-HJ-NP-Za-km-z1-9]*$/; +function isBase58(str) { + assertString(str); + + if (base58Reg.test(str)) { + return true; + } + + return false; +} + +var validMediaType = /^[a-z]+\/[a-z0-9\-\+]+$/i; +var validAttribute = /^[a-z\-]+=[a-z0-9\-]+$/i; +var validData = /^[a-z0-9!\$&'\(\)\*\+,;=\-\._~:@\/\?%\s]*$/i; +function isDataURI(str) { + assertString(str); + var data = str.split(','); + + if (data.length < 2) { + return false; + } + + var attributes = data.shift().trim().split(';'); + var schemeAndMediaType = attributes.shift(); + + if (schemeAndMediaType.substr(0, 5) !== 'data:') { + return false; + } + + var mediaType = schemeAndMediaType.substr(5); + + if (mediaType !== '' && !validMediaType.test(mediaType)) { + return false; + } + + for (var i = 0; i < attributes.length; i++) { + if (!(i === attributes.length - 1 && attributes[i].toLowerCase() === 'base64') && !validAttribute.test(attributes[i])) { + return false; + } + } + + for (var _i = 0; _i < data.length; _i++) { + if (!validData.test(data[_i])) { + return false; + } + } + + return true; +} + +var magnetURI = /^magnet:\?xt(?:\.1)?=urn:(?:aich|bitprint|btih|ed2k|ed2khash|kzhash|md5|sha1|tree:tiger):[a-z0-9]{32}(?:[a-z0-9]{8})?($|&)/i; +function isMagnetURI(url) { + assertString(url); + return magnetURI.test(url.trim()); +} + +/* + Checks if the provided string matches to a correct Media type format (MIME type) + + This function only checks is the string format follows the + etablished rules by the according RFC specifications. + This function supports 'charset' in textual media types + (https://tools.ietf.org/html/rfc6657). + + This function does not check against all the media types listed + by the IANA (https://www.iana.org/assignments/media-types/media-types.xhtml) + because of lightness purposes : it would require to include + all these MIME types in this librairy, which would weigh it + significantly. This kind of effort maybe is not worth for the use that + this function has in this entire librairy. + + More informations in the RFC specifications : + - https://tools.ietf.org/html/rfc2045 + - https://tools.ietf.org/html/rfc2046 + - https://tools.ietf.org/html/rfc7231#section-3.1.1.1 + - https://tools.ietf.org/html/rfc7231#section-3.1.1.5 +*/ +// Match simple MIME types +// NB : +// Subtype length must not exceed 100 characters. +// This rule does not comply to the RFC specs (what is the max length ?). + +var mimeTypeSimple = /^(application|audio|font|image|message|model|multipart|text|video)\/[a-zA-Z0-9\.\-\+]{1,100}$/i; // eslint-disable-line max-len +// Handle "charset" in "text/*" + +var mimeTypeText = /^text\/[a-zA-Z0-9\.\-\+]{1,100};\s?charset=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?$/i; // eslint-disable-line max-len +// Handle "boundary" in "multipart/*" + +var mimeTypeMultipart = /^multipart\/[a-zA-Z0-9\.\-\+]{1,100}(;\s?(boundary|charset)=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?){0,2}$/i; // eslint-disable-line max-len + +function isMimeType(str) { + assertString(str); + return mimeTypeSimple.test(str) || mimeTypeText.test(str) || mimeTypeMultipart.test(str); +} + +var lat = /^\(?[+-]?(90(\.0+)?|[1-8]?\d(\.\d+)?)$/; +var _long = /^\s?[+-]?(180(\.0+)?|1[0-7]\d(\.\d+)?|\d{1,2}(\.\d+)?)\)?$/; +var latDMS = /^(([1-8]?\d)\D+([1-5]?\d|60)\D+([1-5]?\d|60)(\.\d+)?|90\D+0\D+0)\D+[NSns]?$/i; +var longDMS = /^\s*([1-7]?\d{1,2}\D+([1-5]?\d|60)\D+([1-5]?\d|60)(\.\d+)?|180\D+0\D+0)\D+[EWew]?$/i; +var defaultLatLongOptions = { + checkDMS: false +}; +function isLatLong(str, options) { + assertString(str); + options = merge(options, defaultLatLongOptions); + if (!str.includes(',')) return false; + var pair = str.split(','); + if (pair[0].startsWith('(') && !pair[1].endsWith(')') || pair[1].endsWith(')') && !pair[0].startsWith('(')) return false; + + if (options.checkDMS) { + return latDMS.test(pair[0]) && longDMS.test(pair[1]); + } + + return lat.test(pair[0]) && _long.test(pair[1]); +} + +var threeDigit = /^\d{3}$/; +var fourDigit = /^\d{4}$/; +var fiveDigit = /^\d{5}$/; +var sixDigit = /^\d{6}$/; +var patterns = { + AD: /^AD\d{3}$/, + AT: fourDigit, + AU: fourDigit, + AZ: /^AZ\d{4}$/, + BE: fourDigit, + BG: fourDigit, + BR: /^\d{5}-\d{3}$/, + BY: /2[1-4]{1}\d{4}$/, + CA: /^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJ-NPRSTV-Z][\s\-]?\d[ABCEGHJ-NPRSTV-Z]\d$/i, + CH: fourDigit, + CN: /^(0[1-7]|1[012356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[1-5]|8[1345]|9[09])\d{4}$/, + CZ: /^\d{3}\s?\d{2}$/, + DE: fiveDigit, + DK: fourDigit, + DO: fiveDigit, + DZ: fiveDigit, + EE: fiveDigit, + ES: /^(5[0-2]{1}|[0-4]{1}\d{1})\d{3}$/, + FI: fiveDigit, + FR: /^\d{2}\s?\d{3}$/, + GB: /^(gir\s?0aa|[a-z]{1,2}\d[\da-z]?\s?(\d[a-z]{2})?)$/i, + GR: /^\d{3}\s?\d{2}$/, + HR: /^([1-5]\d{4}$)/, + HT: /^HT\d{4}$/, + HU: fourDigit, + ID: fiveDigit, + IE: /^(?!.*(?:o))[A-Za-z]\d[\dw]\s\w{4}$/i, + IL: /^(\d{5}|\d{7})$/, + IN: /^((?!10|29|35|54|55|65|66|86|87|88|89)[1-9][0-9]{5})$/, + IR: /\b(?!(\d)\1{3})[13-9]{4}[1346-9][013-9]{5}\b/, + IS: threeDigit, + IT: fiveDigit, + JP: /^\d{3}\-\d{4}$/, + KE: fiveDigit, + KR: /^(\d{5}|\d{6})$/, + LI: /^(948[5-9]|949[0-7])$/, + LT: /^LT\-\d{5}$/, + LU: fourDigit, + LV: /^LV\-\d{4}$/, + LK: fiveDigit, + MX: fiveDigit, + MT: /^[A-Za-z]{3}\s{0,1}\d{4}$/, + MY: fiveDigit, + NL: /^\d{4}\s?[a-z]{2}$/i, + NO: fourDigit, + NP: /^(10|21|22|32|33|34|44|45|56|57)\d{3}$|^(977)$/i, + NZ: fourDigit, + PL: /^\d{2}\-\d{3}$/, + PR: /^00[679]\d{2}([ -]\d{4})?$/, + PT: /^\d{4}\-\d{3}?$/, + RO: sixDigit, + RU: sixDigit, + SA: fiveDigit, + SE: /^[1-9]\d{2}\s?\d{2}$/, + SG: sixDigit, + SI: fourDigit, + SK: /^\d{3}\s?\d{2}$/, + TH: fiveDigit, + TN: fourDigit, + TW: /^\d{3}(\d{2})?$/, + UA: fiveDigit, + US: /^\d{5}(-\d{4})?$/, + ZA: fourDigit, + ZM: fiveDigit +}; +var locales$5 = Object.keys(patterns); +function isPostalCode(str, locale) { + assertString(str); + + if (locale in patterns) { + return patterns[locale].test(str); + } else if (locale === 'any') { + for (var key in patterns) { + // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes + // istanbul ignore else + if (patterns.hasOwnProperty(key)) { + var pattern = patterns[key]; + + if (pattern.test(str)) { + return true; + } + } + } + + return false; + } + + throw new Error("Invalid locale '".concat(locale, "'")); +} + +function ltrim(str, chars) { + assertString(str); // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping + + var pattern = chars ? new RegExp("^[".concat(chars.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), "]+"), 'g') : /^\s+/g; + return str.replace(pattern, ''); +} + +function rtrim(str, chars) { + assertString(str); + + if (chars) { + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping + var pattern = new RegExp("[".concat(chars.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), "]+$"), 'g'); + return str.replace(pattern, ''); + } // Use a faster and more safe than regex trim method https://blog.stevenlevithan.com/archives/faster-trim-javascript + + + var strIndex = str.length - 1; + + while (/\s/.test(str.charAt(strIndex))) { + strIndex -= 1; + } + + return str.slice(0, strIndex + 1); +} + +function trim(str, chars) { + return rtrim(ltrim(str, chars), chars); +} + +function escape(str) { + assertString(str); + return str.replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''').replace(//g, '>').replace(/\//g, '/').replace(/\\/g, '\').replace(/`/g, '`'); +} + +function unescape(str) { + assertString(str); + return str.replace(/"/g, '"').replace(/'/g, "'").replace(/</g, '<').replace(/>/g, '>').replace(///g, '/').replace(/\/g, '\\').replace(/`/g, '`').replace(/&/g, '&'); // & replacement has to be the last one to prevent + // bugs with intermediate strings containing escape sequences + // See: https://github.com/validatorjs/validator.js/issues/1827 +} + +function blacklist$1(str, chars) { + assertString(str); + return str.replace(new RegExp("[".concat(chars, "]+"), 'g'), ''); +} + +function stripLow(str, keep_new_lines) { + assertString(str); + var chars = keep_new_lines ? '\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F\\x7F' : '\\x00-\\x1F\\x7F'; + return blacklist$1(str, chars); +} + +function whitelist(str, chars) { + assertString(str); + return str.replace(new RegExp("[^".concat(chars, "]+"), 'g'), ''); +} + +function isWhitelisted(str, chars) { + assertString(str); + + for (var i = str.length - 1; i >= 0; i--) { + if (chars.indexOf(str[i]) === -1) { + return false; + } + } + + return true; +} + +var default_normalize_email_options = { + // The following options apply to all email addresses + // Lowercases the local part of the email address. + // Please note this may violate RFC 5321 as per http://stackoverflow.com/a/9808332/192024). + // The domain is always lowercased, as per RFC 1035 + all_lowercase: true, + // The following conversions are specific to GMail + // Lowercases the local part of the GMail address (known to be case-insensitive) + gmail_lowercase: true, + // Removes dots from the local part of the email address, as that's ignored by GMail + gmail_remove_dots: true, + // Removes the subaddress (e.g. "+foo") from the email address + gmail_remove_subaddress: true, + // Conversts the googlemail.com domain to gmail.com + gmail_convert_googlemaildotcom: true, + // The following conversions are specific to Outlook.com / Windows Live / Hotmail + // Lowercases the local part of the Outlook.com address (known to be case-insensitive) + outlookdotcom_lowercase: true, + // Removes the subaddress (e.g. "+foo") from the email address + outlookdotcom_remove_subaddress: true, + // The following conversions are specific to Yahoo + // Lowercases the local part of the Yahoo address (known to be case-insensitive) + yahoo_lowercase: true, + // Removes the subaddress (e.g. "-foo") from the email address + yahoo_remove_subaddress: true, + // The following conversions are specific to Yandex + // Lowercases the local part of the Yandex address (known to be case-insensitive) + yandex_lowercase: true, + // The following conversions are specific to iCloud + // Lowercases the local part of the iCloud address (known to be case-insensitive) + icloud_lowercase: true, + // Removes the subaddress (e.g. "+foo") from the email address + icloud_remove_subaddress: true +}; // List of domains used by iCloud + +var icloud_domains = ['icloud.com', 'me.com']; // List of domains used by Outlook.com and its predecessors +// This list is likely incomplete. +// Partial reference: +// https://blogs.office.com/2013/04/17/outlook-com-gets-two-step-verification-sign-in-by-alias-and-new-international-domains/ + +var outlookdotcom_domains = ['hotmail.at', 'hotmail.be', 'hotmail.ca', 'hotmail.cl', 'hotmail.co.il', 'hotmail.co.nz', 'hotmail.co.th', 'hotmail.co.uk', 'hotmail.com', 'hotmail.com.ar', 'hotmail.com.au', 'hotmail.com.br', 'hotmail.com.gr', 'hotmail.com.mx', 'hotmail.com.pe', 'hotmail.com.tr', 'hotmail.com.vn', 'hotmail.cz', 'hotmail.de', 'hotmail.dk', 'hotmail.es', 'hotmail.fr', 'hotmail.hu', 'hotmail.id', 'hotmail.ie', 'hotmail.in', 'hotmail.it', 'hotmail.jp', 'hotmail.kr', 'hotmail.lv', 'hotmail.my', 'hotmail.ph', 'hotmail.pt', 'hotmail.sa', 'hotmail.sg', 'hotmail.sk', 'live.be', 'live.co.uk', 'live.com', 'live.com.ar', 'live.com.mx', 'live.de', 'live.es', 'live.eu', 'live.fr', 'live.it', 'live.nl', 'msn.com', 'outlook.at', 'outlook.be', 'outlook.cl', 'outlook.co.il', 'outlook.co.nz', 'outlook.co.th', 'outlook.com', 'outlook.com.ar', 'outlook.com.au', 'outlook.com.br', 'outlook.com.gr', 'outlook.com.pe', 'outlook.com.tr', 'outlook.com.vn', 'outlook.cz', 'outlook.de', 'outlook.dk', 'outlook.es', 'outlook.fr', 'outlook.hu', 'outlook.id', 'outlook.ie', 'outlook.in', 'outlook.it', 'outlook.jp', 'outlook.kr', 'outlook.lv', 'outlook.my', 'outlook.ph', 'outlook.pt', 'outlook.sa', 'outlook.sg', 'outlook.sk', 'passport.com']; // List of domains used by Yahoo Mail +// This list is likely incomplete + +var yahoo_domains = ['rocketmail.com', 'yahoo.ca', 'yahoo.co.uk', 'yahoo.com', 'yahoo.de', 'yahoo.fr', 'yahoo.in', 'yahoo.it', 'ymail.com']; // List of domains used by yandex.ru + +var yandex_domains = ['yandex.ru', 'yandex.ua', 'yandex.kz', 'yandex.com', 'yandex.by', 'ya.ru']; // replace single dots, but not multiple consecutive dots + +function dotsReplacer(match) { + if (match.length > 1) { + return match; + } + + return ''; +} + +function normalizeEmail(email, options) { + options = merge(options, default_normalize_email_options); + var raw_parts = email.split('@'); + var domain = raw_parts.pop(); + var user = raw_parts.join('@'); + var parts = [user, domain]; // The domain is always lowercased, as it's case-insensitive per RFC 1035 + + parts[1] = parts[1].toLowerCase(); + + if (parts[1] === 'gmail.com' || parts[1] === 'googlemail.com') { + // Address is GMail + if (options.gmail_remove_subaddress) { + parts[0] = parts[0].split('+')[0]; + } + + if (options.gmail_remove_dots) { + // this does not replace consecutive dots like example..email@gmail.com + parts[0] = parts[0].replace(/\.+/g, dotsReplacer); + } + + if (!parts[0].length) { + return false; + } + + if (options.all_lowercase || options.gmail_lowercase) { + parts[0] = parts[0].toLowerCase(); + } + + parts[1] = options.gmail_convert_googlemaildotcom ? 'gmail.com' : parts[1]; + } else if (icloud_domains.indexOf(parts[1]) >= 0) { + // Address is iCloud + if (options.icloud_remove_subaddress) { + parts[0] = parts[0].split('+')[0]; + } + + if (!parts[0].length) { + return false; + } + + if (options.all_lowercase || options.icloud_lowercase) { + parts[0] = parts[0].toLowerCase(); + } + } else if (outlookdotcom_domains.indexOf(parts[1]) >= 0) { + // Address is Outlook.com + if (options.outlookdotcom_remove_subaddress) { + parts[0] = parts[0].split('+')[0]; + } + + if (!parts[0].length) { + return false; + } + + if (options.all_lowercase || options.outlookdotcom_lowercase) { + parts[0] = parts[0].toLowerCase(); + } + } else if (yahoo_domains.indexOf(parts[1]) >= 0) { + // Address is Yahoo + if (options.yahoo_remove_subaddress) { + var components = parts[0].split('-'); + parts[0] = components.length > 1 ? components.slice(0, -1).join('-') : components[0]; + } + + if (!parts[0].length) { + return false; + } + + if (options.all_lowercase || options.yahoo_lowercase) { + parts[0] = parts[0].toLowerCase(); + } + } else if (yandex_domains.indexOf(parts[1]) >= 0) { + if (options.all_lowercase || options.yandex_lowercase) { + parts[0] = parts[0].toLowerCase(); + } + + parts[1] = 'yandex.ru'; // all yandex domains are equal, 1st preferred + } else if (options.all_lowercase) { + // Any other address + parts[0] = parts[0].toLowerCase(); + } + + return parts.join('@'); +} + +var charsetRegex = /^[^\s-_](?!.*?[-_]{2,})[a-z0-9-\\][^\s]*[^-_\s]$/; +function isSlug(str) { + assertString(str); + return charsetRegex.test(str); +} + +var validators$1 = { + 'cs-CZ': function csCZ(str) { + return /^(([ABCDEFHKIJKLMNPRSTUVXYZ]|[0-9])-?){5,8}$/.test(str); + }, + 'de-DE': function deDE(str) { + return /^((AW|UL|AK|GA|AÖ|LF|AZ|AM|AS|ZE|AN|AB|A|KG|KH|BA|EW|BZ|HY|KM|BT|HP|B|BC|BI|BO|FN|TT|ÜB|BN|AH|BS|FR|HB|ZZ|BB|BK|BÖ|OC|OK|CW|CE|C|CO|LH|CB|KW|LC|LN|DA|DI|DE|DH|SY|NÖ|DO|DD|DU|DN|D|EI|EA|EE|FI|EM|EL|EN|PF|ED|EF|ER|AU|ZP|E|ES|NT|EU|FL|FO|FT|FF|F|FS|FD|FÜ|GE|G|GI|GF|GS|ZR|GG|GP|GR|NY|ZI|GÖ|GZ|GT|HA|HH|HM|HU|WL|HZ|WR|RN|HK|HD|HN|HS|GK|HE|HF|RZ|HI|HG|HO|HX|IK|IL|IN|J|JL|KL|KA|KS|KF|KE|KI|KT|KO|KN|KR|KC|KU|K|LD|LL|LA|L|OP|LM|LI|LB|LU|LÖ|HL|LG|MD|GN|MZ|MA|ML|MR|MY|AT|DM|MC|NZ|RM|RG|MM|ME|MB|MI|FG|DL|HC|MW|RL|MK|MG|MÜ|WS|MH|M|MS|NU|NB|ND|NM|NK|NW|NR|NI|NF|DZ|EB|OZ|TG|TO|N|OA|GM|OB|CA|EH|FW|OF|OL|OE|OG|BH|LR|OS|AA|GD|OH|KY|NP|WK|PB|PA|PE|PI|PS|P|PM|PR|RA|RV|RE|R|H|SB|WN|RS|RD|RT|BM|NE|GV|RP|SU|GL|RO|GÜ|RH|EG|RW|PN|SK|MQ|RU|SZ|RI|SL|SM|SC|HR|FZ|VS|SW|SN|CR|SE|SI|SO|LP|SG|NH|SP|IZ|ST|BF|TE|HV|OD|SR|S|AC|DW|ZW|TF|TS|TR|TÜ|UM|PZ|TP|UE|UN|UH|MN|KK|VB|V|AE|PL|RC|VG|GW|PW|VR|VK|KB|WA|WT|BE|WM|WE|AP|MO|WW|FB|WZ|WI|WB|JE|WF|WO|W|WÜ|BL|Z|GC)[- ]?[A-Z]{1,2}[- ]?\d{1,4}|(AIC|FDB|ABG|SLN|SAW|KLZ|BUL|ESB|NAB|SUL|WST|ABI|AZE|BTF|KÖT|DKB|FEU|ROT|ALZ|SMÜ|WER|AUR|NOR|DÜW|BRK|HAB|TÖL|WOR|BAD|BAR|BER|BIW|EBS|KEM|MÜB|PEG|BGL|BGD|REI|WIL|BKS|BIR|WAT|BOR|BOH|BOT|BRB|BLK|HHM|NEB|NMB|WSF|LEO|HDL|WMS|WZL|BÜS|CHA|KÖZ|ROD|WÜM|CLP|NEC|COC|ZEL|COE|CUX|DAH|LDS|DEG|DEL|RSL|DLG|DGF|LAN|HEI|MED|DON|KIB|ROK|JÜL|MON|SLE|EBE|EIC|HIG|WBS|BIT|PRÜ|LIB|EMD|WIT|ERH|HÖS|ERZ|ANA|ASZ|MAB|MEK|STL|SZB|FDS|HCH|HOR|WOL|FRG|GRA|WOS|FRI|FFB|GAP|GER|BRL|CLZ|GTH|NOH|HGW|GRZ|LÖB|NOL|WSW|DUD|HMÜ|OHA|KRU|HAL|HAM|HBS|QLB|HVL|NAU|HAS|EBN|GEO|HOH|HDH|ERK|HER|WAN|HEF|ROF|HBN|ALF|HSK|USI|NAI|REH|SAN|KÜN|ÖHR|HOL|WAR|ARN|BRG|GNT|HOG|WOH|KEH|MAI|PAR|RID|ROL|KLE|GEL|KUS|KYF|ART|SDH|LDK|DIL|MAL|VIB|LER|BNA|GHA|GRM|MTL|WUR|LEV|LIF|STE|WEL|LIP|VAI|LUP|HGN|LBZ|LWL|PCH|STB|DAN|MKK|SLÜ|MSP|TBB|MGH|MTK|BIN|MSH|EIL|HET|SGH|BID|MYK|MSE|MST|MÜR|WRN|MEI|GRH|RIE|MZG|MIL|OBB|BED|FLÖ|MOL|FRW|SEE|SRB|AIB|MOS|BCH|ILL|SOB|NMS|NEA|SEF|UFF|NEW|VOH|NDH|TDO|NWM|GDB|GVM|WIS|NOM|EIN|GAN|LAU|HEB|OHV|OSL|SFB|ERB|LOS|BSK|KEL|BSB|MEL|WTL|OAL|FÜS|MOD|OHZ|OPR|BÜR|PAF|PLÖ|CAS|GLA|REG|VIT|ECK|SIM|GOA|EMS|DIZ|GOH|RÜD|SWA|NES|KÖN|MET|LRO|BÜZ|DBR|ROS|TET|HRO|ROW|BRV|HIP|PAN|GRI|SHK|EIS|SRO|SOK|LBS|SCZ|MER|QFT|SLF|SLS|HOM|SLK|ASL|BBG|SBK|SFT|SHG|MGN|MEG|ZIG|SAD|NEN|OVI|SHA|BLB|SIG|SON|SPN|FOR|GUB|SPB|IGB|WND|STD|STA|SDL|OBG|HST|BOG|SHL|PIR|FTL|SEB|SÖM|SÜW|TIR|SAB|TUT|ANG|SDT|LÜN|LSZ|MHL|VEC|VER|VIE|OVL|ANK|OVP|SBG|UEM|UER|WLG|GMN|NVP|RDG|RÜG|DAU|FKB|WAF|WAK|SLZ|WEN|SOG|APD|WUG|GUN|ESW|WIZ|WES|DIN|BRA|BÜD|WHV|HWI|GHC|WTM|WOB|WUN|MAK|SEL|OCH|HOT|WDA)[- ]?(([A-Z][- ]?\d{1,4})|([A-Z]{2}[- ]?\d{1,3})))[- ]?(E|H)?$/.test(str); + }, + 'de-LI': function deLI(str) { + return /^FL[- ]?\d{1,5}[UZ]?$/.test(str); + }, + 'fi-FI': function fiFI(str) { + return /^(?=.{4,7})(([A-Z]{1,3}|[0-9]{1,3})[\s-]?([A-Z]{1,3}|[0-9]{1,5}))$/.test(str); + }, + 'pt-PT': function ptPT(str) { + return /^([A-Z]{2}|[0-9]{2})[ -·]?([A-Z]{2}|[0-9]{2})[ -·]?([A-Z]{2}|[0-9]{2})$/.test(str); + }, + 'sq-AL': function sqAL(str) { + return /^[A-Z]{2}[- ]?((\d{3}[- ]?(([A-Z]{2})|T))|(R[- ]?\d{3}))$/.test(str); + }, + 'pt-BR': function ptBR(str) { + return /^[A-Z]{3}[ -]?[0-9][A-Z][0-9]{2}|[A-Z]{3}[ -]?[0-9]{4}$/.test(str); + } +}; +function isLicensePlate(str, locale) { + assertString(str); + + if (locale in validators$1) { + return validators$1[locale](str); + } else if (locale === 'any') { + for (var key in validators$1) { + /* eslint guard-for-in: 0 */ + var validator = validators$1[key]; + + if (validator(str)) { + return true; + } + } + + return false; + } + + throw new Error("Invalid locale '".concat(locale, "'")); +} + +var upperCaseRegex = /^[A-Z]$/; +var lowerCaseRegex = /^[a-z]$/; +var numberRegex = /^[0-9]$/; +var symbolRegex = /^[-#!$@%^&*()_+|~=`{}\[\]:";'<>?,.\/ ]$/; +var defaultOptions$1 = { + minLength: 8, + minLowercase: 1, + minUppercase: 1, + minNumbers: 1, + minSymbols: 1, + returnScore: false, + pointsPerUnique: 1, + pointsPerRepeat: 0.5, + pointsForContainingLower: 10, + pointsForContainingUpper: 10, + pointsForContainingNumber: 10, + pointsForContainingSymbol: 10 +}; +/* Counts number of occurrences of each char in a string + * could be moved to util/ ? +*/ + +function countChars(str) { + var result = {}; + Array.from(str).forEach(function (_char) { + var curVal = result[_char]; + + if (curVal) { + result[_char] += 1; + } else { + result[_char] = 1; + } + }); + return result; +} +/* Return information about a password */ + + +function analyzePassword(password) { + var charMap = countChars(password); + var analysis = { + length: password.length, + uniqueChars: Object.keys(charMap).length, + uppercaseCount: 0, + lowercaseCount: 0, + numberCount: 0, + symbolCount: 0 + }; + Object.keys(charMap).forEach(function (_char2) { + /* istanbul ignore else */ + if (upperCaseRegex.test(_char2)) { + analysis.uppercaseCount += charMap[_char2]; + } else if (lowerCaseRegex.test(_char2)) { + analysis.lowercaseCount += charMap[_char2]; + } else if (numberRegex.test(_char2)) { + analysis.numberCount += charMap[_char2]; + } else if (symbolRegex.test(_char2)) { + analysis.symbolCount += charMap[_char2]; + } + }); + return analysis; +} + +function scorePassword(analysis, scoringOptions) { + var points = 0; + points += analysis.uniqueChars * scoringOptions.pointsPerUnique; + points += (analysis.length - analysis.uniqueChars) * scoringOptions.pointsPerRepeat; + + if (analysis.lowercaseCount > 0) { + points += scoringOptions.pointsForContainingLower; + } + + if (analysis.uppercaseCount > 0) { + points += scoringOptions.pointsForContainingUpper; + } + + if (analysis.numberCount > 0) { + points += scoringOptions.pointsForContainingNumber; + } + + if (analysis.symbolCount > 0) { + points += scoringOptions.pointsForContainingSymbol; + } + + return points; +} + +function isStrongPassword(str) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + assertString(str); + var analysis = analyzePassword(str); + options = merge(options || {}, defaultOptions$1); + + if (options.returnScore) { + return scorePassword(analysis, options); + } + + return analysis.length >= options.minLength && analysis.lowercaseCount >= options.minLowercase && analysis.uppercaseCount >= options.minUppercase && analysis.numberCount >= options.minNumbers && analysis.symbolCount >= options.minSymbols; +} + +var vatMatchers = { + GB: /^GB((\d{3} \d{4} ([0-8][0-9]|9[0-6]))|(\d{9} \d{3})|(((GD[0-4])|(HA[5-9]))[0-9]{2}))$/, + IT: /^(IT)?[0-9]{11}$/, + NL: /^(NL)?[0-9]{9}B[0-9]{2}$/ +}; +function isVAT(str, countryCode) { + assertString(str); + assertString(countryCode); + + if (countryCode in vatMatchers) { + return vatMatchers[countryCode].test(str); + } + + throw new Error("Invalid country code: '".concat(countryCode, "'")); +} + +var version = '13.7.0'; +var validator = { + version: version, + toDate: toDate, + toFloat: toFloat, + toInt: toInt, + toBoolean: toBoolean, + equals: equals, + contains: contains, + matches: matches, + isEmail: isEmail, + isURL: isURL, + isMACAddress: isMACAddress, + isIP: isIP, + isIPRange: isIPRange, + isFQDN: isFQDN, + isBoolean: isBoolean, + isIBAN: isIBAN, + isBIC: isBIC, + isAlpha: isAlpha, + isAlphaLocales: locales$1, + isAlphanumeric: isAlphanumeric, + isAlphanumericLocales: locales$2, + isNumeric: isNumeric, + isPassportNumber: isPassportNumber, + isPort: isPort, + isLowercase: isLowercase, + isUppercase: isUppercase, + isAscii: isAscii, + isFullWidth: isFullWidth, + isHalfWidth: isHalfWidth, + isVariableWidth: isVariableWidth, + isMultibyte: isMultibyte, + isSemVer: isSemVer, + isSurrogatePair: isSurrogatePair, + isInt: isInt, + isIMEI: isIMEI, + isFloat: isFloat, + isFloatLocales: locales, + isDecimal: isDecimal, + isHexadecimal: isHexadecimal, + isOctal: isOctal, + isDivisibleBy: isDivisibleBy, + isHexColor: isHexColor, + isRgbColor: isRgbColor, + isHSL: isHSL, + isISRC: isISRC, + isMD5: isMD5, + isHash: isHash, + isJWT: isJWT, + isJSON: isJSON, + isEmpty: isEmpty, + isLength: isLength, + isLocale: isLocale, + isByteLength: isByteLength, + isUUID: isUUID, + isMongoId: isMongoId, + isAfter: isAfter, + isBefore: isBefore, + isIn: isIn, + isCreditCard: isCreditCard, + isIdentityCard: isIdentityCard, + isEAN: isEAN, + isISIN: isISIN, + isISBN: isISBN, + isISSN: isISSN, + isMobilePhone: isMobilePhone, + isMobilePhoneLocales: locales$4, + isPostalCode: isPostalCode, + isPostalCodeLocales: locales$5, + isEthereumAddress: isEthereumAddress, + isCurrency: isCurrency, + isBtcAddress: isBtcAddress, + isISO8601: isISO8601, + isRFC3339: isRFC3339, + isISO31661Alpha2: isISO31661Alpha2, + isISO31661Alpha3: isISO31661Alpha3, + isISO4217: isISO4217, + isBase32: isBase32, + isBase58: isBase58, + isBase64: isBase64, + isDataURI: isDataURI, + isMagnetURI: isMagnetURI, + isMimeType: isMimeType, + isLatLong: isLatLong, + ltrim: ltrim, + rtrim: rtrim, + trim: trim, + escape: escape, + unescape: unescape, + stripLow: stripLow, + whitelist: whitelist, + blacklist: blacklist$1, + isWhitelisted: isWhitelisted, + normalizeEmail: normalizeEmail, + toString: toString, + isSlug: isSlug, + isStrongPassword: isStrongPassword, + isTaxID: isTaxID, + isDate: isDate, + isLicensePlate: isLicensePlate, + isVAT: isVAT, + ibanLocales: locales$3 +}; + +return validator; + +}))); diff --git a/srcs/requirements/nestjs/api_back/node_modules/validator/validator.min.js b/srcs/requirements/nestjs/api_back/node_modules/validator/validator.min.js new file mode 100644 index 00000000..f847fd2b --- /dev/null +++ b/srcs/requirements/nestjs/api_back/node_modules/validator/validator.min.js @@ -0,0 +1,23 @@ +/*! + * Copyright (c) 2018 Chris O'Hara + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.validator=e()}(this,function(){"use strict";function i(t){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function u(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t)){var r=[],n=!0,i=!1,a=void 0;try{for(var o,s=t[Symbol.iterator]();!(n=(o=s.next()).done)&&(r.push(o.value),!e||r.length!==e);n=!0);}catch(t){i=!0,a=t}finally{try{n||null==s.return||s.return()}finally{if(i)throw a}}return r}}(t,e)||d(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(t){return function(t){if(Array.isArray(t))return n(t)}(t)||function(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||d(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(t,e){if(t){if("string"==typeof t)return n(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Map"===(r="Object"===r&&t.constructor?t.constructor.name:r)||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(t,e):void 0}}function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=e.min)&&(!e.hasOwnProperty("max")||n<=e.max)&&(!e.hasOwnProperty("lt")||ne.gt)}o["fr-CA"]=o["fr-FR"],s["fr-CA"]=s["fr-FR"],o["pt-BR"]=o["pt-PT"],s["pt-BR"]=s["pt-PT"],c["pt-BR"]=c["pt-PT"],o["pl-Pl"]=o["pl-PL"],s["pl-Pl"]=s["pl-PL"],c["pl-Pl"]=c["pl-PL"],o["fa-AF"]=o.fa;var m=Object.keys(c);function Z(t){return L(t)?parseFloat(t):NaN}function M(t){return"object"===i(t)&&null!==t?t="function"==typeof t.toString?t.toString():"[object Object]":(null==t||isNaN(t)&&!t.length)&&(t=""),String(t)}function B(t,e){var r,n=0=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,o=!1;return{s:function(){r=t[Symbol.iterator]()},n:function(){var t=r.next();return a=t.done,t},e:function(t){o=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(o)throw i}}}}(function(t,e){for(var r=[],n=Math.min(t.length,e.length),i=0;i=e.min,i=!e.hasOwnProperty("max")||t<=e.max,a=!e.hasOwnProperty("lt")||te.gt;return r.test(t)&&n&&i&&a&&e}var dt=/^[0-9]{15}$/,ft=/^\d{2}-\d{6}-\d{6}-\d{1}$/;var At=/^[\x00-\x7F]+$/;var $t=/[^\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/;var pt=/[\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/;var St=/[^\x00-\x7F]/;var ht,gt,Et=(gt="i",ht=(ht=["^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)","(?:-((?:0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*))*))","?(?:\\+([0-9a-z-]+(?:\\.[0-9a-z-]+)*))?$"]).join(""),new RegExp(ht,gt));var It=/[\uD800-\uDBFF][\uDC00-\uDFFF]/;var Rt={force_decimal:!1,decimal_digits:"1,",locale:"en-US"},vt=["","-","+"];var Lt=/^(0x|0h)?[0-9A-F]+$/i;function mt(t){return l(t),Lt.test(t)}var Zt=/^(0o)?[0-7]+$/i;var Mt=/^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$/i;var Bt=/^rgb\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){2}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\)$/,Nt=/^rgba\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){3}(0?\.\d|1(\.0)?|0(\.0)?)\)$/,Ft=/^rgb\((([0-9]%|[1-9][0-9]%|100%),){2}([0-9]%|[1-9][0-9]%|100%)\)/,Dt=/^rgba\((([0-9]%|[1-9][0-9]%|100%),){3}(0?\.\d|1(\.0)?|0(\.0)?)\)/;var Ct=/^hsla?\(((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn)?(,(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}(,((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?))?\)$/i,Tt=/^hsla?\(((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn)?(\s(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}\s?(\/\s((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?)\s?)?\)$/i;var Gt=/^[A-Z]{2}[0-9A-Z]{3}\d{2}\d{5}$/;var Ot={AD:/^(AD[0-9]{2})\d{8}[A-Z0-9]{12}$/,AE:/^(AE[0-9]{2})\d{3}\d{16}$/,AL:/^(AL[0-9]{2})\d{8}[A-Z0-9]{16}$/,AT:/^(AT[0-9]{2})\d{16}$/,AZ:/^(AZ[0-9]{2})[A-Z0-9]{4}\d{20}$/,BA:/^(BA[0-9]{2})\d{16}$/,BE:/^(BE[0-9]{2})\d{12}$/,BG:/^(BG[0-9]{2})[A-Z]{4}\d{6}[A-Z0-9]{8}$/,BH:/^(BH[0-9]{2})[A-Z]{4}[A-Z0-9]{14}$/,BR:/^(BR[0-9]{2})\d{23}[A-Z]{1}[A-Z0-9]{1}$/,BY:/^(BY[0-9]{2})[A-Z0-9]{4}\d{20}$/,CH:/^(CH[0-9]{2})\d{5}[A-Z0-9]{12}$/,CR:/^(CR[0-9]{2})\d{18}$/,CY:/^(CY[0-9]{2})\d{8}[A-Z0-9]{16}$/,CZ:/^(CZ[0-9]{2})\d{20}$/,DE:/^(DE[0-9]{2})\d{18}$/,DK:/^(DK[0-9]{2})\d{14}$/,DO:/^(DO[0-9]{2})[A-Z]{4}\d{20}$/,EE:/^(EE[0-9]{2})\d{16}$/,EG:/^(EG[0-9]{2})\d{25}$/,ES:/^(ES[0-9]{2})\d{20}$/,FI:/^(FI[0-9]{2})\d{14}$/,FO:/^(FO[0-9]{2})\d{14}$/,FR:/^(FR[0-9]{2})\d{10}[A-Z0-9]{11}\d{2}$/,GB:/^(GB[0-9]{2})[A-Z]{4}\d{14}$/,GE:/^(GE[0-9]{2})[A-Z0-9]{2}\d{16}$/,GI:/^(GI[0-9]{2})[A-Z]{4}[A-Z0-9]{15}$/,GL:/^(GL[0-9]{2})\d{14}$/,GR:/^(GR[0-9]{2})\d{7}[A-Z0-9]{16}$/,GT:/^(GT[0-9]{2})[A-Z0-9]{4}[A-Z0-9]{20}$/,HR:/^(HR[0-9]{2})\d{17}$/,HU:/^(HU[0-9]{2})\d{24}$/,IE:/^(IE[0-9]{2})[A-Z0-9]{4}\d{14}$/,IL:/^(IL[0-9]{2})\d{19}$/,IQ:/^(IQ[0-9]{2})[A-Z]{4}\d{15}$/,IR:/^(IR[0-9]{2})0\d{2}0\d{18}$/,IS:/^(IS[0-9]{2})\d{22}$/,IT:/^(IT[0-9]{2})[A-Z]{1}\d{10}[A-Z0-9]{12}$/,JO:/^(JO[0-9]{2})[A-Z]{4}\d{22}$/,KW:/^(KW[0-9]{2})[A-Z]{4}[A-Z0-9]{22}$/,KZ:/^(KZ[0-9]{2})\d{3}[A-Z0-9]{13}$/,LB:/^(LB[0-9]{2})\d{4}[A-Z0-9]{20}$/,LC:/^(LC[0-9]{2})[A-Z]{4}[A-Z0-9]{24}$/,LI:/^(LI[0-9]{2})\d{5}[A-Z0-9]{12}$/,LT:/^(LT[0-9]{2})\d{16}$/,LU:/^(LU[0-9]{2})\d{3}[A-Z0-9]{13}$/,LV:/^(LV[0-9]{2})[A-Z]{4}[A-Z0-9]{13}$/,MC:/^(MC[0-9]{2})\d{10}[A-Z0-9]{11}\d{2}$/,MD:/^(MD[0-9]{2})[A-Z0-9]{20}$/,ME:/^(ME[0-9]{2})\d{18}$/,MK:/^(MK[0-9]{2})\d{3}[A-Z0-9]{10}\d{2}$/,MR:/^(MR[0-9]{2})\d{23}$/,MT:/^(MT[0-9]{2})[A-Z]{4}\d{5}[A-Z0-9]{18}$/,MU:/^(MU[0-9]{2})[A-Z]{4}\d{19}[A-Z]{3}$/,MZ:/^(MZ[0-9]{2})\d{21}$/,NL:/^(NL[0-9]{2})[A-Z]{4}\d{10}$/,NO:/^(NO[0-9]{2})\d{11}$/,PK:/^(PK[0-9]{2})[A-Z0-9]{4}\d{16}$/,PL:/^(PL[0-9]{2})\d{24}$/,PS:/^(PS[0-9]{2})[A-Z0-9]{4}\d{21}$/,PT:/^(PT[0-9]{2})\d{21}$/,QA:/^(QA[0-9]{2})[A-Z]{4}[A-Z0-9]{21}$/,RO:/^(RO[0-9]{2})[A-Z]{4}[A-Z0-9]{16}$/,RS:/^(RS[0-9]{2})\d{18}$/,SA:/^(SA[0-9]{2})\d{2}[A-Z0-9]{18}$/,SC:/^(SC[0-9]{2})[A-Z]{4}\d{20}[A-Z]{3}$/,SE:/^(SE[0-9]{2})\d{20}$/,SI:/^(SI[0-9]{2})\d{15}$/,SK:/^(SK[0-9]{2})\d{20}$/,SM:/^(SM[0-9]{2})[A-Z]{1}\d{10}[A-Z0-9]{12}$/,SV:/^(SV[0-9]{2})[A-Z0-9]{4}\d{20}$/,TL:/^(TL[0-9]{2})\d{19}$/,TN:/^(TN[0-9]{2})\d{20}$/,TR:/^(TR[0-9]{2})\d{5}[A-Z0-9]{17}$/,UA:/^(UA[0-9]{2})\d{6}[A-Z0-9]{19}$/,VA:/^(VA[0-9]{2})\d{18}$/,VG:/^(VG[0-9]{2})[A-Z0-9]{4}\d{16}$/,XK:/^(XK[0-9]{2})\d{16}$/};var _t=Object.keys(Ot),Ht=new Set(["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW"]);var Pt=Ht,bt=/^[A-Za-z]{6}[A-Za-z0-9]{2}([A-Za-z0-9]{3})?$/;var Ut=/^[a-f0-9]{32}$/;var Kt={md5:32,md4:32,sha1:40,sha256:64,sha384:96,sha512:128,ripemd128:32,ripemd160:40,tiger128:32,tiger160:40,tiger192:48,crc32:8,crc32b:8};var wt=/[^A-Z0-9+\/=]/i,yt=/^[A-Z0-9_\-]*$/i,Wt={urlSafe:!1};function Yt(t,e){l(t),e=B(e,Wt);var r=t.length;if(e.urlSafe)return yt.test(t);if(r%4!=0||wt.test(t))return!1;e=t.indexOf("=");return-1===e||e===r-1||e===r-2&&"="===t[r-1]}var xt={allow_primitives:!1};var Vt={ignore_whitespace:!1};var kt={1:/^[0-9A-F]{8}-[0-9A-F]{4}-1[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,2:/^[0-9A-F]{8}-[0-9A-F]{4}-2[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,3:/^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,4:/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,5:/^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,all:/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i};var zt=/^(?:4[0-9]{12}(?:[0-9]{3,6})?|5[1-5][0-9]{14}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12,15}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11}|6[27][0-9]{14}|^(81[0-9]{14,17}))$/;var Xt={PL:function(t){l(t);var n={1:1,2:3,3:7,4:9,5:1,6:3,7:7,8:9,9:1,10:3,11:0};if(null!=t&&11===t.length&&ut(t,{allow_leading_zeroes:!0})){var e=t.split("").slice(0,-1).reduce(function(t,e,r){return t+Number(e)*n[r+1]},0)%10,t=Number(t.charAt(t.length-1));if(0==e&&0===t||t===10-e)return!0}return!1},ES:function(t){l(t);var e={X:0,Y:1,Z:2},r=t.trim().toUpperCase();if(!/^[0-9X-Z][0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKE]$/.test(r))return!1;t=r.slice(0,-1).replace(/[X,Y,Z]/g,function(t){return e[t]});return r.endsWith(["T","R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q","V","H","L","C","K","E"][t%23])},FI:function(t){if(l(t),11!==t.length)return!1;if(!t.match(/^\d{6}[\-A\+]\d{3}[0-9ABCDEFHJKLMNPRSTUVWXY]{1}$/))return!1;return"0123456789ABCDEFHJKLMNPRSTUVWXY"[(1e3*parseInt(t.slice(0,6),10)+parseInt(t.slice(7,10),10))%31]===t.slice(10,11)},IN:function(t){var r=[[0,1,2,3,4,5,6,7,8,9],[1,2,3,4,0,6,7,8,9,5],[2,3,4,0,1,7,8,9,5,6],[3,4,0,1,2,8,9,5,6,7],[4,0,1,2,3,9,5,6,7,8],[5,9,8,7,6,0,4,3,2,1],[6,5,9,8,7,1,0,4,3,2],[7,6,5,9,8,2,1,0,4,3],[8,7,6,5,9,3,2,1,0,4],[9,8,7,6,5,4,3,2,1,0]],n=[[0,1,2,3,4,5,6,7,8,9],[1,5,7,6,2,8,3,0,9,4],[5,8,0,3,7,9,6,1,4,2],[8,9,1,6,0,4,3,5,2,7],[9,4,5,3,1,2,6,8,7,0],[4,2,8,6,5,7,3,9,0,1],[2,7,9,3,8,0,6,4,1,5],[7,0,4,6,9,1,3,2,5,8]],t=t.trim();if(!/^[1-9]\d{3}\s?\d{4}\s?\d{4}$/.test(t))return!1;var i=0;return t.replace(/\s/g,"").split("").map(Number).reverse().forEach(function(t,e){i=r[i][n[e%8][t]]}),0===i},IR:function(t){if(!t.match(/^\d{10}$/))return!1;if(t="0000".concat(t).substr(t.length-6),0===parseInt(t.substr(3,6),10))return!1;for(var e=parseInt(t.substr(9,1),10),r=0,n=0;n<9;n++)r+=parseInt(t.substr(n,1),10)*(10-n);return(r%=11)<2&&e===r||2<=r&&e===11-r},IT:function(t){return 9===t.length&&("CA00000AA"!==t&&-1new Date)&&(t.getFullYear()===e&&t.getMonth()===r-1&&t.getDate()===n)}function a(t){return function(t){for(var e=t.substring(0,17),r=0,n=0;n<17;n++)r+=parseInt(e.charAt(n),10)*parseInt(o[n],10);return s[r%11]}(t)===t.charAt(17).toUpperCase()}var e,r=["11","12","13","14","15","21","22","23","31","32","33","34","35","36","37","41","42","43","44","45","46","50","51","52","53","54","61","62","63","64","65","71","81","82","91"],o=["7","9","10","5","8","4","2","1","6","3","7","9","10","5","8","4","2"],s=["1","0","X","9","8","7","6","5","4","3","2"];return!!/^\d{15}|(\d{17}(\d|x|X))$/.test(e=t)&&(15===e.length?function(t){var e=/^[1-9]\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}$/.test(t);if(!e)return!1;var r=t.substring(0,2);if(!(e=n(r)))return!1;t="19".concat(t.substring(6,12));return!!(e=i(t))}:function(t){var e=/^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}(\d|x|X)$/.test(t);if(!e)return!1;var r=t.substring(0,2);if(!(e=n(r)))return!1;r=t.substring(6,14);return!!(e=i(r))&&a(t)})(e)},"zh-TW":function(t){var n={A:10,B:11,C:12,D:13,E:14,F:15,G:16,H:17,I:34,J:18,K:19,L:20,M:21,N:22,O:35,P:23,Q:24,R:25,S:26,T:27,U:28,V:29,W:32,X:30,Y:31,Z:33},t=t.trim().toUpperCase();return!!/^[A-Z][0-9]{9}$/.test(t)&&Array.from(t).reduce(function(t,e,r){if(0!==r)return 9===r?(10-t%10-Number(e))%10==0:t+Number(e)*(9-r);e=n[e];return e%10*9+Math.floor(e/10)},0)}};var Jt=8,jt=14,Qt=/^(\d{8}|\d{13}|\d{14})$/;function qt(r){var t=10-r.slice(0,-1).split("").map(function(t,e){return Number(t)*(t=r.length,e=e,t===Jt||t===jt?e%2==0?3:1:e%2==0?1:3)}).reduce(function(t,e){return t+e},0)%10;return t<10?t:0}var te=/^[A-Z]{2}[0-9A-Z]{9}[0-9]$/;var ee=/^(?:[0-9]{9}X|[0-9]{10})$/,re=/^(?:[0-9]{13})$/,ne=[1,3];function ie(t){for(var e=10,r=0;ra?"".concat(e-1):"".concat(e)).concat(r);else if(r="".concat(e-1).concat(r),a-parseInt(r,10)<100)return!1}if(60?,.\/ ]$/,qe={minLength:8,minLowercase:1,minUppercase:1,minNumbers:1,minSymbols:1,returnScore:!1,pointsPerUnique:1,pointsPerRepeat:.5,pointsForContainingLower:10,pointsForContainingUpper:10,pointsForContainingNumber:10,pointsForContainingSymbol:10};function tr(t){var e,r,n=(e=t,r={},Array.from(e).forEach(function(t){r[t]?r[t]+=1:r[t]=1}),r),i={length:t.length,uniqueChars:Object.keys(n).length,uppercaseCount:0,lowercaseCount:0,numberCount:0,symbolCount:0};return Object.keys(n).forEach(function(t){Xe.test(t)?i.uppercaseCount+=n[t]:Je.test(t)?i.lowercaseCount+=n[t]:je.test(t)?i.numberCount+=n[t]:Qe.test(t)&&(i.symbolCount+=n[t])}),i}var er={GB:/^GB((\d{3} \d{4} ([0-8][0-9]|9[0-6]))|(\d{9} \d{3})|(((GD[0-4])|(HA[5-9]))[0-9]{2}))$/,IT:/^(IT)?[0-9]{11}$/,NL:/^(NL)?[0-9]{9}B[0-9]{2}$/};return{version:"13.7.0",toDate:a,toFloat:Z,toInt:function(t,e){return l(t),parseInt(t,e||10)},toBoolean:function(t,e){return l(t),e?"1"===t||/^true$/i.test(t):"0"!==t&&!/^false$/i.test(t)&&""!==t},equals:function(t,e){return l(t),t===e},contains:function(t,e,r){return l(t),(r=B(r,N)).ignoreCase?t.toLowerCase().split(M(e).toLowerCase()).length>r.minOccurrences:t.split(M(e)).length>r.minOccurrences},matches:function(t,e,r){return l(t),(e="[object RegExp]"!==Object.prototype.toString.call(e)?new RegExp(e,r):e).test(t)},isEmail:function(t,e){if(l(t),(e=B(e,b)).require_display_name||e.allow_display_name){var r=t.match(U);if(r){var n=r[1];if(t=t.replace(n,"").replace(/(^<|>$)/g,""),!function(t){var e=t.replace(/^"(.+)"$/,"$1");if(e.trim()){if(/[\.";<>]/.test(e)){if(e===t)return;if(!(e.split('"').length===e.split('\\"').length))return}return 1}}(n=n.endsWith(" ")?n.substr(0,n.length-1):n))return!1}else if(e.require_display_name)return!1}if(!e.ignore_max_length&&254]/.test(t))return!1;if(0===t.indexOf("mailto:"))return!1;if((e=B(e,x)).validate_length&&2083<=t.length)return!1;if(!e.allow_fragments&&t.includes("#"))return!1;if(!e.allow_query_components&&(t.includes("?")||t.includes("&")))return!1;var r,n,i=t.split("#");if(1<(i=(t=(i=(t=i.shift()).split("?")).shift()).split("://")).length){if(r=i.shift().toLowerCase(),e.require_valid_protocol&&-1===e.protocols.indexOf(r))return!1}else{if(e.require_protocol)return!1;if("//"===t.substr(0,2)){if(!e.allow_protocol_relative_urls)return!1;i[0]=t.substr(2)}}if(""===(t=i.join("://")))return!1;if(""===(t=(i=t.split("/")).shift())&&!e.require_host)return!0;if(1<(i=t.split("@")).length){if(e.disallow_auth)return!1;if(""===i[0])return!1;if(0<=(c=i.shift()).indexOf(":")&&2/g,">").replace(/\//g,"/").replace(/\\/g,"\").replace(/`/g,"`")},unescape:function(t){return l(t),t.replace(/"/g,'"').replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">").replace(///g,"/").replace(/\/g,"\\").replace(/`/g,"`").replace(/&/g,"&")},stripLow:function(t,e){return l(t),Ke(t,e?"\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F\\x7F":"\\x00-\\x1F\\x7F")},whitelist:function(t,e){return l(t),t.replace(new RegExp("[^".concat(e,"]+"),"g"),"")},blacklist:Ke,isWhitelisted:function(t,e){l(t);for(var r=t.length-1;0<=r;r--)if(-1===e.indexOf(t[r]))return!1;return!0},normalizeEmail:function(t,e){e=B(e,we);var r=t.split("@"),t=r.pop();if((r=[r.join("@"),t])[1]=r[1].toLowerCase(),"gmail.com"===r[1]||"googlemail.com"===r[1]){if(e.gmail_remove_subaddress&&(r[0]=r[0].split("+")[0]),e.gmail_remove_dots&&(r[0]=r[0].replace(/\.+/g,Ve)),!r[0].length)return!1;(e.all_lowercase||e.gmail_lowercase)&&(r[0]=r[0].toLowerCase()),r[1]=e.gmail_convert_googlemaildotcom?"gmail.com":r[1]}else if(0<=ye.indexOf(r[1])){if(e.icloud_remove_subaddress&&(r[0]=r[0].split("+")[0]),!r[0].length)return!1;(e.all_lowercase||e.icloud_lowercase)&&(r[0]=r[0].toLowerCase())}else if(0<=We.indexOf(r[1])){if(e.outlookdotcom_remove_subaddress&&(r[0]=r[0].split("+")[0]),!r[0].length)return!1;(e.all_lowercase||e.outlookdotcom_lowercase)&&(r[0]=r[0].toLowerCase())}else if(0<=Ye.indexOf(r[1])){if(e.yahoo_remove_subaddress&&(t=r[0].split("-"),r[0]=1=e.minLength&&i.lowercaseCount>=e.minLowercase&&i.uppercaseCount>=e.minUppercase&&i.numberCount>=e.minNumbers&&i.symbolCount>=e.minSymbols},isTaxID:function(t){var e=1= 0.8.0" } }, + "node_modules/libphonenumber-js": { + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.14.tgz", + "integrity": "sha512-McGS7GV/WjJ2KjfOGhJU1oJn29RYeo7Q+RpANRbUNMQ9gj5XArpbjurSuyYPTejFwbaUojstQ4XyWCrAzGOUXw==" + }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -8088,6 +8135,14 @@ "node": ">=10.12.0" } }, + "node_modules/validator": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -9542,6 +9597,12 @@ "uuid": "9.0.0" } }, + "@nestjs/mapped-types": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-1.2.0.tgz", + "integrity": "sha512-NTFwPZkQWsArQH8QSyFWGZvJ08gR+R4TofglqZoihn/vU+ktHEJjMqsIsADwb7XD97DhiD+TVv5ac+jG33BHrg==", + "requires": {} + }, "@nestjs/passport": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/@nestjs/passport/-/passport-9.0.0.tgz", @@ -10013,6 +10074,11 @@ "@types/superagent": "*" } }, + "@types/validator": { + "version": "13.7.9", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.9.tgz", + "integrity": "sha512-y5KJ1PjGXPpU4CZ7lThDu31s+FqvzhqwMOR6Go/x6xaQMFjgzwfzfOvCwABsylr/5n8sB1qFQm1Vi7TaCB8P+A==" + }, "@types/yargs": { "version": "17.0.13", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz", @@ -10742,6 +10808,20 @@ "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", "dev": true }, + "class-transformer": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", + "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==" + }, + "class-validator": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.13.2.tgz", + "integrity": "sha512-yBUcQy07FPlGzUjoLuUfIOXzgynnQPPruyK1Ge2B74k9ROwnle1E+NxLWnUv5OLU8hA/qL5leAE9XnXq3byaBw==", + "requires": { + "libphonenumber-js": "^1.9.43", + "validator": "^13.7.0" + } + }, "cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -12818,6 +12898,11 @@ "type-check": "~0.4.0" } }, + "libphonenumber-js": { + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.14.tgz", + "integrity": "sha512-McGS7GV/WjJ2KjfOGhJU1oJn29RYeo7Q+RpANRbUNMQ9gj5XArpbjurSuyYPTejFwbaUojstQ4XyWCrAzGOUXw==" + }, "lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -14424,6 +14509,11 @@ "convert-source-map": "^1.6.0" } }, + "validator": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==" + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", diff --git a/srcs/requirements/nestjs/api_back/package.json b/srcs/requirements/nestjs/api_back/package.json index 5a639fee..2cb4c26c 100644 --- a/srcs/requirements/nestjs/api_back/package.json +++ b/srcs/requirements/nestjs/api_back/package.json @@ -23,8 +23,12 @@ "dependencies": { "@nestjs/common": "^9.0.0", "@nestjs/core": "^9.0.0", + "@nestjs/mapped-types": "^1.2.0", "@nestjs/passport": "^9.0.0", "@nestjs/platform-express": "^9.0.0", + "@types/validator": "^13.7.9", + "class-transformer": "^0.5.1", + "class-validator": "^0.13.2", "passport": "^0.6.0", "passport-local": "^1.0.0", "reflect-metadata": "^0.1.13", diff --git a/srcs/requirements/nestjs/api_back/src/main.ts b/srcs/requirements/nestjs/api_back/src/main.ts index 284a0af8..5d2e9bc8 100644 --- a/srcs/requirements/nestjs/api_back/src/main.ts +++ b/srcs/requirements/nestjs/api_back/src/main.ts @@ -1,9 +1,22 @@ import { NestFactory } from '@nestjs/core'; +import { ValidationPipe } from '@nestjs/common'; import { AppModule } from './app.module'; async function bootstrap() { const app = await NestFactory.create(AppModule); + // module afin de créer un pipe de validation qui va nous aider + // à valider les données qui sont envoyées par les utilisateurs + app.useGlobalPipes( + new ValidationPipe({ + //permet une liste blanche + whitelist: true, + //interdit les propriétés non autorisées + forbidNonWhitelisted: true, + //permet de transformer les données en fonction de leur type + transform: true, + }), + ); await app.listen(3000); } bootstrap(); diff --git a/srcs/requirements/nestjs/api_back/src/users/dto/create-users.dto.ts b/srcs/requirements/nestjs/api_back/src/users/dto/create-users.dto.ts new file mode 100644 index 00000000..a3187f2d --- /dev/null +++ b/srcs/requirements/nestjs/api_back/src/users/dto/create-users.dto.ts @@ -0,0 +1,10 @@ +import { IsString } from 'class-validator'; + +export class CreateUsersDto { + @IsString() + readonly name: string; + @IsString() + readonly username: string; + @IsString() + readonly password: string; +} diff --git a/srcs/requirements/nestjs/api_back/src/users/dto/update-users.dto.ts b/srcs/requirements/nestjs/api_back/src/users/dto/update-users.dto.ts new file mode 100644 index 00000000..763670d6 --- /dev/null +++ b/srcs/requirements/nestjs/api_back/src/users/dto/update-users.dto.ts @@ -0,0 +1,8 @@ +// Les types partiels permettent d'importer toutes les variables d'une classe +// et de les mettre comme optionnelles. De plus on peut hériter +// des décorateurs de la classe parente (par exemple @IsString()). + +import { PartialType } from "@nestjs/mapped-types"; +import { CreateUsersDto } from "./create-users.dto"; + +export class UpdateUsersDto extends PartialType(CreateUsersDto){} diff --git a/srcs/requirements/nestjs/api_back/src/users/entities/user.entity.ts b/srcs/requirements/nestjs/api_back/src/users/entities/user.entity.ts index 9368e8af..d5549fef 100644 --- a/srcs/requirements/nestjs/api_back/src/users/entities/user.entity.ts +++ b/srcs/requirements/nestjs/api_back/src/users/entities/user.entity.ts @@ -1,5 +1,6 @@ export class User { userId: string; + name: string; username: string; password: string; } diff --git a/srcs/requirements/nestjs/api_back/src/users/users.controller.ts b/srcs/requirements/nestjs/api_back/src/users/users.controller.ts index 3ceb2259..b15a3324 100644 --- a/srcs/requirements/nestjs/api_back/src/users/users.controller.ts +++ b/srcs/requirements/nestjs/api_back/src/users/users.controller.ts @@ -2,6 +2,8 @@ import { Body, Controller, Delete, Get, HttpCode, HttpStatus, Param, Patch, Post, Query } from '@nestjs/common'; +import { CreateUsersDto } from './dto/create-users.dto'; +import { UpdateUsersDto } from './dto/update-users.dto'; import { UsersService } from './users.service'; @@ -22,13 +24,13 @@ export class UsersController { @Post() @HttpCode(HttpStatus.GONE) - create(@Body() body) { - return this.usersService.create(body); + create(@Body() createUsersDto : CreateUsersDto ) { + return this.usersService.create(createUsersDto); } @Patch(':id') - update(@Param('id') id: string, @Body() body) { - return this.usersService.update(id, body); + update(@Param('id') id: string, @Body() usersUpdateDto: UpdateUsersDto) { + return this.usersService.update(id, usersUpdateDto); } @Delete(':id') diff --git a/srcs/requirements/nestjs/api_back/src/users/users.service.ts b/srcs/requirements/nestjs/api_back/src/users/users.service.ts index 5fc8a292..44b5858f 100644 --- a/srcs/requirements/nestjs/api_back/src/users/users.service.ts +++ b/srcs/requirements/nestjs/api_back/src/users/users.service.ts @@ -7,12 +7,14 @@ export class UsersService { private users:User[] = [ { userId: '1', - username: 'john', + name: 'John', + username: 'TheBoss', password: 'changeme', }, { userId: '2', - username: 'maria', + name: 'Jane', + username: 'Jane2000', password: 'guess', }, ]; @@ -34,7 +36,7 @@ export class UsersService { const user = this.users.push(createUserDto); if (!user) throw new HttpException(`The user could not be created.`,HttpStatus.NOT_FOUND); - return 'User has been created'; + return createUserDto.username + ' has been created'; } update(id: string, updateUserDto: any) {